Read in the ice cream, birthweight, and cholesterol data sets.
IC.df <- read.csv("IceCream.csv", header=TRUE, as.is=TRUE)
IC.df$Sex <- as.factor(IC.df$Sex)
IC.df$Flavor <- as.factor(IC.df$Flavor)
#
BW.df <- read.csv("BirthWeight.csv", header=TRUE, as.is=TRUE)
BW.df$Smoker <- as.factor(BW.df$Smoker)
BW.df$BirthWt <- as.factor(BW.df$BirthWt)
#
C.df <- read.csv("Cholesterol.csv", header=TRUE, as.is=TRUE)
C.df$Cereal <- as.factor(C.df$Cereal)
Problem 1
Part 1a
mean_ice <- mean(IC.df$Video)
sd_ice <- sd(IC.df$Video)
me_ice <- (2.575*(sd_ice/sqrt(200)))
(mean_ice + me_ice)
## [1] 53.65275
## [1] 50.04725
I am 99% confident that the true value for the population mean video score is between 50 and 53.
Part 1b
IC.dfmale <- IC.df %>%
filter(Sex == 0)
IC.dffemale <- IC.df %>%
filter(Sex == 1)
mean_male <- mean(IC.dfmale$Video)
mean_female <- mean(IC.dffemale$Video)
mean_diff <- mean_male - mean_female
sd_male <- sd(IC.dfmale$Video)
sd_female <- sd(IC.dffemale$Video)
me_male <- (2.575*(sd_male/sqrt(91)))
me_female <- (2.575*(sd_female/sqrt(109)))
ci_diff <- data_frame((mean_diff + (me_male + me_female)), (mean_diff - (me_male+me_female)))
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## Please use `tibble()` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was generated.
## # A tibble: 1 × 2
## `(mean_diff + (me_male + me_female))` `(mean_diff - (me_male + me_female))`
## <dbl> <dbl>
## 1 7.66 -2.59
I am 99% confident that the true value for the difference in mean video scores for males and females lie in between -2.6 and 7.7.
Problem 2
Part 2a
IC.dfchoc <- IC.df %>%
filter(Flavor == 2)
IC.dfstraw <- IC.df %>%
filter(Flavor == 3)
sd_choc <- sd(IC.dfchoc$Puzzle)
sd_straw <- sd(IC.dfstraw$Puzzle)
print(sd_choc)
## [1] 10.83695
## [1] 9.962118
Part 2b
Null: There is no difference in the mean puzzle score for students who prefer strawberry ice cream compared to chocolate ice cream. Alternate: There is a statistically significant difference in the mean puzzle score for students who prefer strawberry ice cream compared to chocolate ice cream.
df_diff <- min(58-1, 47-1)
qt(0.01,46,)
## [1] -2.410188
mean_choc <- mean(IC.dfchoc$Puzzle)
mean_straw <- mean(IC.dfstraw$Puzzle)
tsum.test(mean_straw, sd_straw, 58, mean_choc, sd_choc, 47, mu = 0, alternative = "less")
##
## Welch Modified Two-Sample t-Test
##
## data: Summarized x and y
## t = 4.7855, df = 94.724, p-value = 1
## alternative hypothesis: true difference in means is less than 0
## 95 percent confidence interval:
## NA 13.227
## sample estimates:
## mean of x mean of y
## 57.13793 47.31915
The p value is not less than the significance level, so we cannot reject the null hypothesis. There is not statistically significant evidence that there is no difference in mean puzzle scores for students that prefer strawberry ice cream versus chocolate ice cream.
Part 2c
The observed t value was larger than the critical t, meaning you cannot reject the null. There is not sufficient enough evidence to conclude that there is a statistically significant difference between the means of the strawberry and chocolate ice cream puzzle scores.
Problem 3
pHat <- (20/42)
me_bw <- 1.645 * sqrt((.476*(1-.476))/42)
ci_bw <- data.frame(pHat+me_bw, pHat-me_bw)
print(ci_bw)
## pHat...me_bw pHat...me_bw.1
## 1 0.6029587 0.3494223
I am 90% confident that the true proportion for the population of nonsmokers is between .35 and .60.
Problem 4
Null: The proportion of low birth weight babies from mothers who smoke is less than or equal to the proportion of low birth weight babies from mothers who don’t smoke. Alternate: The proportion of low birthweight babies from mothers who smoke is greater than the proportion of low birth weight babies from mothers who don’t smoke.
Part 4a
low_bwsmoke <- BW.df %>%
filter(Smoker == 1) %>%
filter(LowBWt == 1)
reg_bwsmoke <- BW.df %>%
filter(Smoker == 1) %>%
filter(LowBWt == 0)
low_bwnosmoke <- BW.df %>%
filter(Smoker == 0) %>%
filter(LowBWt == 1)
reg_bwnosmoke <- BW.df %>%
filter(Smoker == 0) %>%
filter(LowBWt == 0)
p <- (5 + 1) / (18 + 20)
z.num <- (5/22) - (1/20)
z.den <- sqrt(p * (1-p) * ((1/22)+(1/20)))
z <- z.num/z.den
p_final <- 2 * (1-pnorm(z))
print(p_final)
## [1] 0.1155948
The p value is higher than the significance level, so we cannot reject the null hypothesis. There is not sufficienct enough evidence to claim that mothers who smoke give birth to more babies that are underweight than mothers who don’t smoke.
Part 4b
prop.test(x = c(5,1), n=c(5+17, 1+19), correct=FALSE,conf.level = 0.99, alternative = 'g')
## Warning in prop.test(x = c(5, 1), n = c(5 + 17, 1 + 19), correct = FALSE, : Chi-
## squared approximation may be incorrect
##
## 2-sample test for equality of proportions without continuity
## correction
##
## data: c(5, 1) out of c(5 + 17, 1 + 19)
## X-squared = 2.6886, df = 1, p-value = 0.05053
## alternative hypothesis: greater
## 99 percent confidence interval:
## -0.0594864 1.0000000
## sample estimates:
## prop 1 prop 2
## 0.2272727 0.0500000
The z score is the square root of the chi square test, which means my work is correct.
Part 4c
The large sample conditions are not met in A and B, and therefore the results are invalid. There isn’t enough data, and the samples aren’t large enough, to render the hypothesis valid.
Problem 5
Part 5a
Null: There is no difference in serum cholesterol levels in a diet that uses Oat Bran cereal compared to a diet that uses Cornflake cereal. Alternative: There is a statistically significant difference in cholesterol levels in a diet that uses Oat bran compared to a diet that uses cornflake cereal.
corn <- C.df %>% filter(Cereal == "Cornflk")
oat <- C.df %>% filter(Cereal == "OatBran")
t.test(oat$Cholesterol, corn$Cholesterol, paired=T, conf.level = 0.99,alternative = 'less')
##
## Paired t-test
##
## data: oat$Cholesterol and corn$Cholesterol
## t = -2.6149, df = 11, p-value = 0.01202
## alternative hypothesis: true difference in means is less than 0
## 99 percent confidence interval:
## -Inf 0.01360951
## sample estimates:
## mean of the differences
## -0.345
The p value is greater than the significance level, so we cannot reject the null hypothesis. There is not sufficient evidence to suggest that cholesterol levels are different for a diet of oat bran versus cornflake.
Part 5b
t.test(oat$Cholesterol, corn$Cholesterol, paired=T, conf.level = 0.95, alternative = 'less')$conf.int
## [1] -Inf -0.1080601
## attr(,"conf.level")
## [1] 0.95
I found the confidence interval using a paired t test, and I get a one tailed confidence interval. This means that I’m assessing the difference in cholesterol using an oat bran cereal diet. I am 95% confident that the difference in population mean for cholesterol on oat bran cereal compared to corn flakes is less than -0.108, indicating that there isn’t significant enough evidence that there’s a difference between the diets.
Problem 6
Part 6a
Null Hypothesis: There is no difference between the placebo depression mean and the treatment depression mean. Alternative: There is a statistically significant difference in the placebo depression mean and the treatment depression mean.
tsum.test(20.98, 3.75, 17, 22.37, 3.67, 22)
##
## Welch Modified Two-Sample t-Test
##
## data: Summarized x and y
## t = -1.1586, df = 34.182, p-value = 0.2547
## alternative hypothesis: true difference in means is not equal to 0
## 95 percent confidence interval:
## -3.827731 1.047731
## sample estimates:
## mean of x mean of y
## 20.98 22.37
With a p value of 0.2547 and a significance level of 0.05, we cannot reject the null hypothesis. This indicates that there is not statistically significant evidence that there is a difference in the means of the placebo depression and the treatment depression.
Part 6b
No, I disagree, because both populations will not have the same amount of variation since they were not near the same size and have similar means.
…
LS0tCnRpdGxlOiAiU3RhdDMxMSBIb21ld29yayA2IgphdXRob3I6ICJLaHVzaGkgQ2hhdWhhbiIKZGF0ZTogIjE5IG1heSAyMDIyIgpvdXRwdXQ6IG9wZW5pbnRybzo6bGFiX3JlcG9ydAotLS0KCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQpsaWJyYXJ5KGtuaXRyKQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShCU0RBKQoKYGBgCiMjIyBSZWFkIGluIHRoZSBpY2UgY3JlYW0sIGJpcnRod2VpZ2h0LCBhbmQgY2hvbGVzdGVyb2wgZGF0YSBzZXRzLgpgYGB7ciwgZXZhbD1UUlVFfQpJQy5kZiA8LSByZWFkLmNzdigiSWNlQ3JlYW0uY3N2IiwgaGVhZGVyPVRSVUUsIGFzLmlzPVRSVUUpCklDLmRmJFNleCA8LSBhcy5mYWN0b3IoSUMuZGYkU2V4KQpJQy5kZiRGbGF2b3IgPC0gYXMuZmFjdG9yKElDLmRmJEZsYXZvcikKIwpCVy5kZiA8LSByZWFkLmNzdigiQmlydGhXZWlnaHQuY3N2IiwgaGVhZGVyPVRSVUUsIGFzLmlzPVRSVUUpCkJXLmRmJFNtb2tlciA8LSBhcy5mYWN0b3IoQlcuZGYkU21va2VyKQpCVy5kZiRCaXJ0aFd0IDwtIGFzLmZhY3RvcihCVy5kZiRCaXJ0aFd0KQojCkMuZGYgPC0gcmVhZC5jc3YoIkNob2xlc3Rlcm9sLmNzdiIsIGhlYWRlcj1UUlVFLCBhcy5pcz1UUlVFKQpDLmRmJENlcmVhbCA8LSBhcy5mYWN0b3IoQy5kZiRDZXJlYWwpCmBgYAoKIyMjIFByb2JsZW0gMQojIyMjIFBhcnQgMWEKYGBge3IgQ0kgcHV6emxlfQptZWFuX2ljZSA8LSBtZWFuKElDLmRmJFZpZGVvKQpzZF9pY2UgPC0gc2QoSUMuZGYkVmlkZW8pCm1lX2ljZSA8LSAoMi41NzUqKHNkX2ljZS9zcXJ0KDIwMCkpKQoobWVhbl9pY2UgKyBtZV9pY2UpCihtZWFuX2ljZSAtIG1lX2ljZSkKCmBgYApJIGFtIDk5JSBjb25maWRlbnQgdGhhdCB0aGUgdHJ1ZSB2YWx1ZSBmb3IgdGhlIHBvcHVsYXRpb24gbWVhbiB2aWRlbyBzY29yZSBpcyBiZXR3ZWVuIDUwIGFuZCA1My4KCiMjIyMgUGFydCAxYgpgYGB7ciBDSSBkaWZmIGluIHB1enpsZX0KSUMuZGZtYWxlIDwtIElDLmRmICU+JQogIGZpbHRlcihTZXggPT0gMCkKSUMuZGZmZW1hbGUgPC0gSUMuZGYgJT4lCiAgZmlsdGVyKFNleCA9PSAxKQptZWFuX21hbGUgPC0gbWVhbihJQy5kZm1hbGUkVmlkZW8pCm1lYW5fZmVtYWxlIDwtIG1lYW4oSUMuZGZmZW1hbGUkVmlkZW8pCm1lYW5fZGlmZiA8LSBtZWFuX21hbGUgLSBtZWFuX2ZlbWFsZQpzZF9tYWxlIDwtIHNkKElDLmRmbWFsZSRWaWRlbykgCnNkX2ZlbWFsZSA8LSBzZChJQy5kZmZlbWFsZSRWaWRlbykKbWVfbWFsZSA8LSAoMi41NzUqKHNkX21hbGUvc3FydCg5MSkpKQptZV9mZW1hbGUgPC0gKDIuNTc1KihzZF9mZW1hbGUvc3FydCgxMDkpKSkKY2lfZGlmZiA8LSBkYXRhX2ZyYW1lKChtZWFuX2RpZmYgKyAobWVfbWFsZSArIG1lX2ZlbWFsZSkpLCAobWVhbl9kaWZmIC0gKG1lX21hbGUrbWVfZmVtYWxlKSkpCnByaW50KGNpX2RpZmYpCgpgYGAKSSBhbSA5OSUgY29uZmlkZW50IHRoYXQgdGhlIHRydWUgdmFsdWUgZm9yIHRoZSBkaWZmZXJlbmNlIGluIG1lYW4gdmlkZW8gc2NvcmVzIGZvciBtYWxlcyBhbmQgZmVtYWxlcyBsaWUgaW4gYmV0d2VlbiAtMi42IGFuZCA3LjcuIAoKCiMjIyBQcm9ibGVtIDIKIyMjIyBQYXJ0IDJhCmBgYHtyIGdldCBTRHN9CklDLmRmY2hvYyA8LSBJQy5kZiAlPiUKICBmaWx0ZXIoRmxhdm9yID09IDIpCklDLmRmc3RyYXcgPC0gSUMuZGYgJT4lCiAgZmlsdGVyKEZsYXZvciA9PSAzKQpzZF9jaG9jIDwtIHNkKElDLmRmY2hvYyRQdXp6bGUpCnNkX3N0cmF3IDwtIHNkKElDLmRmc3RyYXckUHV6emxlKQoKcHJpbnQoc2RfY2hvYykKcHJpbnQoc2Rfc3RyYXcpCmBgYAoKIyMjIyBQYXJ0IDJiCk51bGw6IFRoZXJlIGlzIG5vIGRpZmZlcmVuY2UgaW4gdGhlIG1lYW4gcHV6emxlIHNjb3JlIGZvciBzdHVkZW50cyB3aG8gcHJlZmVyIHN0cmF3YmVycnkgaWNlIGNyZWFtIGNvbXBhcmVkIHRvIGNob2NvbGF0ZSBpY2UgY3JlYW0uIApBbHRlcm5hdGU6IFRoZXJlIGlzIGEgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGluIHRoZSBtZWFuIHB1enpsZSBzY29yZSBmb3Igc3R1ZGVudHMgd2hvIHByZWZlciBzdHJhd2JlcnJ5IGljZSBjcmVhbSBjb21wYXJlZCB0byBjaG9jb2xhdGUgaWNlIGNyZWFtLiAKCmBgYHtyIFZpZGVvIEhUfQpkZl9kaWZmIDwtIG1pbig1OC0xLCA0Ny0xKQpxdCgwLjAxLDQ2LCkKbWVhbl9jaG9jIDwtIG1lYW4oSUMuZGZjaG9jJFB1enpsZSkKbWVhbl9zdHJhdyA8LSBtZWFuKElDLmRmc3RyYXckUHV6emxlKQp0c3VtLnRlc3QobWVhbl9zdHJhdywgc2Rfc3RyYXcsIDU4LCBtZWFuX2Nob2MsIHNkX2Nob2MsIDQ3LCBtdSA9ICAwLCBhbHRlcm5hdGl2ZSA9ICJsZXNzIikKCmBgYApUaGUgcCB2YWx1ZSBpcyBub3QgbGVzcyB0aGFuIHRoZSBzaWduaWZpY2FuY2UgbGV2ZWwsIHNvIHdlIGNhbm5vdCByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcy4gVGhlcmUgaXMgbm90IHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZXZpZGVuY2UgdGhhdCB0aGVyZSBpcyBubyBkaWZmZXJlbmNlIGluIG1lYW4gcHV6emxlIHNjb3JlcyBmb3Igc3R1ZGVudHMgdGhhdCBwcmVmZXIgc3RyYXdiZXJyeSBpY2UgY3JlYW0gdmVyc3VzIGNob2NvbGF0ZSBpY2UgY3JlYW0uCgojIyMjIFBhcnQgMmMKVGhlIG9ic2VydmVkIHQgdmFsdWUgd2FzIGxhcmdlciB0aGFuIHRoZSBjcml0aWNhbCB0LCBtZWFuaW5nIHlvdSBjYW5ub3QgcmVqZWN0IHRoZSBudWxsLiBUaGVyZSBpcyBub3Qgc3VmZmljaWVudCBlbm91Z2ggZXZpZGVuY2UgdG8gY29uY2x1ZGUgdGhhdCB0aGVyZSBpcyBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBtZWFucyBvZiB0aGUgc3RyYXdiZXJyeSBhbmQgY2hvY29sYXRlIGljZSBjcmVhbSBwdXp6bGUgc2NvcmVzLiAKCgojIyMgUHJvYmxlbSAzCmBgYHtyIENJIGZvciBQcm9wIFNtb2tlcnN9CnBIYXQgPC0gKDIwLzQyKQptZV9idyA8LSAxLjY0NSAqIHNxcnQoKC40NzYqKDEtLjQ3NikpLzQyKQpjaV9idyA8LSBkYXRhLmZyYW1lKHBIYXQrbWVfYncsIHBIYXQtbWVfYncpCnByaW50KGNpX2J3KQoKCmBgYApJIGFtIDkwJSBjb25maWRlbnQgdGhhdCB0aGUgdHJ1ZSBwcm9wb3J0aW9uIGZvciB0aGUgcG9wdWxhdGlvbiBvZiBub25zbW9rZXJzIGlzIGJldHdlZW4gLjM1IGFuZCAuNjAuIAoKIyMjIFByb2JsZW0gNApOdWxsOiBUaGUgcHJvcG9ydGlvbiBvZiBsb3cgYmlydGggd2VpZ2h0IGJhYmllcyBmcm9tIG1vdGhlcnMgd2hvIHNtb2tlIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgcHJvcG9ydGlvbiBvZiBsb3cgYmlydGggd2VpZ2h0IGJhYmllcyBmcm9tIG1vdGhlcnMgd2hvIGRvbid0IHNtb2tlLgpBbHRlcm5hdGU6IFRoZSBwcm9wb3J0aW9uIG9mIGxvdyBiaXJ0aHdlaWdodCBiYWJpZXMgZnJvbSBtb3RoZXJzIHdobyBzbW9rZSBpcyBncmVhdGVyIHRoYW4gdGhlIHByb3BvcnRpb24gb2YgbG93IGJpcnRoIHdlaWdodCBiYWJpZXMgZnJvbSBtb3RoZXJzIHdobyBkb24ndCBzbW9rZS4gCgojIyMjIFBhcnQgNGEKYGBge3IgdHdvcHJvcC5IVH0KbG93X2J3c21va2UgPC0gQlcuZGYgJT4lCiAgZmlsdGVyKFNtb2tlciA9PSAxKSAlPiUKICBmaWx0ZXIoTG93Qld0ID09IDEpCnJlZ19id3Ntb2tlIDwtIEJXLmRmICU+JQogIGZpbHRlcihTbW9rZXIgPT0gMSkgJT4lCiAgZmlsdGVyKExvd0JXdCA9PSAwKQpsb3dfYndub3Ntb2tlIDwtIEJXLmRmICU+JQogIGZpbHRlcihTbW9rZXIgPT0gMCkgJT4lCiAgZmlsdGVyKExvd0JXdCA9PSAxKQpyZWdfYndub3Ntb2tlIDwtIEJXLmRmICU+JQogIGZpbHRlcihTbW9rZXIgPT0gMCkgJT4lCiAgZmlsdGVyKExvd0JXdCA9PSAwKQoKcCA8LSAoNSArIDEpIC8gKDE4ICsgMjApCnoubnVtIDwtICg1LzIyKSAtICgxLzIwKQp6LmRlbiA8LSBzcXJ0KHAgKiAoMS1wKSAqICgoMS8yMikrKDEvMjApKSkKeiA8LSB6Lm51bS96LmRlbgpwX2ZpbmFsIDwtIDIgKiAoMS1wbm9ybSh6KSkKCnByaW50KHBfZmluYWwpCgpgYGAKVGhlIHAgdmFsdWUgaXMgaGlnaGVyIHRoYW4gdGhlIHNpZ25pZmljYW5jZSBsZXZlbCwgc28gd2UgY2Fubm90IHJlamVjdCB0aGUgbnVsbCBoeXBvdGhlc2lzLiBUaGVyZSBpcyBub3Qgc3VmZmljaWVuY3QgZW5vdWdoIGV2aWRlbmNlIHRvIGNsYWltIHRoYXQgbW90aGVycyB3aG8gc21va2UgZ2l2ZSBiaXJ0aCB0byBtb3JlIGJhYmllcyB0aGF0IGFyZSB1bmRlcndlaWdodCB0aGFuIG1vdGhlcnMgd2hvIGRvbid0IHNtb2tlLiAKCiMjIyMgUGFydCA0YgpgYGB7ciB0d28gcHJvcCB0ZXN0IH0KcHJvcC50ZXN0KHggPSBjKDUsMSksIG49Yyg1KzE3LCAxKzE5KSwgY29ycmVjdD1GQUxTRSxjb25mLmxldmVsID0gMC45OSwgYWx0ZXJuYXRpdmUgPSAnZycpCgoKYGBgClRoZSB6IHNjb3JlIGlzIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgY2hpIHNxdWFyZSB0ZXN0LCB3aGljaCBtZWFucyBteSB3b3JrIGlzIGNvcnJlY3QuIAoKIyMjIyBQYXJ0IDRjClRoZSBsYXJnZSBzYW1wbGUgY29uZGl0aW9ucyBhcmUgbm90IG1ldCBpbiBBIGFuZCBCLCBhbmQgdGhlcmVmb3JlIHRoZSByZXN1bHRzIGFyZSBpbnZhbGlkLiBUaGVyZSBpc24ndCBlbm91Z2ggZGF0YSwgYW5kIHRoZSBzYW1wbGVzIGFyZW4ndCBsYXJnZSBlbm91Z2gsIHRvIHJlbmRlciB0aGUgaHlwb3RoZXNpcyB2YWxpZC4gCgojIyMgUHJvYmxlbSA1CiMjIyMgUGFydCA1YQpOdWxsOiBUaGVyZSBpcyBubyBkaWZmZXJlbmNlIGluIHNlcnVtIGNob2xlc3Rlcm9sIGxldmVscyBpbiBhIGRpZXQgdGhhdCB1c2VzIE9hdCBCcmFuIGNlcmVhbCBjb21wYXJlZCB0byBhIGRpZXQgdGhhdCB1c2VzIENvcm5mbGFrZSBjZXJlYWwuCkFsdGVybmF0aXZlOiBUaGVyZSBpcyBhIHN0YXRpc3RpY2FsbHkgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiBjaG9sZXN0ZXJvbCBsZXZlbHMgaW4gYSBkaWV0IHRoYXQgdXNlcyBPYXQgYnJhbiBjb21wYXJlZCB0byBhIGRpZXQgdGhhdCB1c2VzIGNvcm5mbGFrZSBjZXJlYWwuCgpgYGB7ciBjaG9sZXN0ZXJhbCBIVH0KY29ybiA8LSBDLmRmICU+JSBmaWx0ZXIoQ2VyZWFsID09ICJDb3JuZmxrIikKb2F0IDwtIEMuZGYgJT4lIGZpbHRlcihDZXJlYWwgPT0gIk9hdEJyYW4iKQp0LnRlc3Qob2F0JENob2xlc3Rlcm9sLCBjb3JuJENob2xlc3Rlcm9sLCBwYWlyZWQ9VCwgY29uZi5sZXZlbCA9IDAuOTksYWx0ZXJuYXRpdmUgPSAnbGVzcycpCgpgYGAKVGhlIHAgdmFsdWUgaXMgZ3JlYXRlciB0aGFuIHRoZSBzaWduaWZpY2FuY2UgbGV2ZWwsIHNvIHdlIGNhbm5vdCByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcy4gVGhlcmUgaXMgbm90IHN1ZmZpY2llbnQgZXZpZGVuY2UgdG8gc3VnZ2VzdCB0aGF0IGNob2xlc3Rlcm9sIGxldmVscyBhcmUgZGlmZmVyZW50IGZvciBhIGRpZXQgb2Ygb2F0IGJyYW4gdmVyc3VzIGNvcm5mbGFrZS4KCiMjIyMgUGFydCA1YgpgYGB7ciBjaG9sZXN0ZXJvbCBDSX0KdC50ZXN0KG9hdCRDaG9sZXN0ZXJvbCwgY29ybiRDaG9sZXN0ZXJvbCwgcGFpcmVkPVQsIGNvbmYubGV2ZWwgPSAwLjk1LCBhbHRlcm5hdGl2ZSA9ICdsZXNzJykkY29uZi5pbnQKCmBgYApJIGZvdW5kIHRoZSBjb25maWRlbmNlIGludGVydmFsIHVzaW5nIGEgcGFpcmVkIHQgdGVzdCwgYW5kIEkgZ2V0IGEgb25lIHRhaWxlZCBjb25maWRlbmNlIGludGVydmFsLiBUaGlzIG1lYW5zIHRoYXQgSSdtIGFzc2Vzc2luZyB0aGUgZGlmZmVyZW5jZSBpbiBjaG9sZXN0ZXJvbCB1c2luZyBhbiBvYXQgYnJhbiBjZXJlYWwgZGlldC4gSSBhbSA5NSUgY29uZmlkZW50IHRoYXQgdGhlIGRpZmZlcmVuY2UgaW4gcG9wdWxhdGlvbiBtZWFuIGZvciBjaG9sZXN0ZXJvbCBvbiBvYXQgYnJhbiBjZXJlYWwgY29tcGFyZWQgdG8gY29ybiBmbGFrZXMgaXMgbGVzcyB0aGFuIC0wLjEwOCwgaW5kaWNhdGluZyB0aGF0IHRoZXJlIGlzbid0IHNpZ25pZmljYW50IGVub3VnaCBldmlkZW5jZSB0aGF0IHRoZXJlJ3MgYSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGRpZXRzLiAKCiMjIyBQcm9ibGVtIDYKIyMjIyBQYXJ0IDZhCk51bGwgSHlwb3RoZXNpczogVGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBwbGFjZWJvIGRlcHJlc3Npb24gbWVhbiBhbmQgdGhlIHRyZWF0bWVudCBkZXByZXNzaW9uIG1lYW4uIApBbHRlcm5hdGl2ZTogVGhlcmUgaXMgYSBzdGF0aXN0aWNhbGx5IHNpZ25pZmljYW50IGRpZmZlcmVuY2UgaW4gdGhlIHBsYWNlYm8gZGVwcmVzc2lvbiBtZWFuIGFuZCB0aGUgdHJlYXRtZW50IGRlcHJlc3Npb24gbWVhbi4gCgpgYGB7ciB0c3VtLnRlc3R9CnRzdW0udGVzdCgyMC45OCwgMy43NSwgMTcsIDIyLjM3LCAzLjY3LCAyMikKCmBgYApXaXRoIGEgcCB2YWx1ZSBvZiAwLjI1NDcgYW5kIGEgc2lnbmlmaWNhbmNlIGxldmVsIG9mIDAuMDUsIHdlIGNhbm5vdCByZWplY3QgdGhlIG51bGwgaHlwb3RoZXNpcy4gVGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBpcyBub3Qgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBldmlkZW5jZSB0aGF0IHRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiB0aGUgbWVhbnMgb2YgdGhlIHBsYWNlYm8gZGVwcmVzc2lvbiBhbmQgdGhlIHRyZWF0bWVudCBkZXByZXNzaW9uLgoKIyMjIyBQYXJ0IDZiCk5vLCBJIGRpc2FncmVlLCBiZWNhdXNlIGJvdGggcG9wdWxhdGlvbnMgd2lsbCBub3QgaGF2ZSB0aGUgc2FtZSBhbW91bnQgb2YgdmFyaWF0aW9uIHNpbmNlIHRoZXkgd2VyZSBub3QgbmVhciB0aGUgc2FtZSBzaXplIGFuZCBoYXZlIHNpbWlsYXIgbWVhbnMuIAoKLi4u