Ryland Campos
Statistics and Data Analysis Period 4
The Data
The Behavioral Risk Factor Surveillance System (BRFSS) is an annual telephone survey of 350,000 people in the United States. As its name implies, the BRFSS is designed to identify risk factors in the adult population and report emerging health trends. For example, respondents are asked about their diet and weekly physical activity, their HIV/AIDS status, possible tobacco use, and even their level of health care coverage. The BRFSS Web site (http://www.cdc.gov/brfss) contains a complete description of the survey, including the research questions that motivate the study and many interesting results derived from the data.
We will focus on a random sample of 20,000 people from the BRFSS survey conducted in 2000. While there are over 200 variables in this data set, we will work with a small subset.
source("http://www.openintro.org/stat/data/cdc.R")
names(cdc)
[1] "genhlth" "exerany" "hlthplan" "smoke100" "height" "weight"
[7] "wtdesire" "age" "gender"
This returns the names genhlth, exerany, hlthplan, smoke100, height, weight, wtdesire, age, and gender. Each one of these variables corresponds to a question that was asked in the survey. For example, for genhlth, respondents were asked to evaluate their general health, responding either excellent, very good, good, fair or poor. The exerany variable indicates whether the respondent exercised in the past month (1) or did not (0). Likewise, hlthplan indicates whether the respondent had some form of health coverage (1) or did not (0). The smoke100 variable indicates whether the respondent had smoked at least 100 cigarettes in her lifetime. The other variables record the respondent’s height in inches, weight in pounds as well as their desired weight, wtdesire, age in years, and gender.
Exercise 1
How many cases are there in this data set 20000 How many variables? 9 For each variable, identify its data type (e.g. categorical, quantitative).
categorical: gender, healthplan, smoke100, genhealth, exerany
Quantitative : age (yrs), weight (lbs), desired weight (lbs), height (inches)
Summaries and tables
Calculating the summary statistics for a quantitative variable (weight). Creating tables for a categorical variable(smoke 100)
summary(cdc$weight)
Min. 1st Qu. Median Mean 3rd Qu. Max.
68.0 140.0 165.0 169.7 190.0 500.0
mean(cdc$weight)
[1] 169.683
var(cdc$weight)
[1] 1606.484
median(cdc$weight)
[1] 165
table(cdc$smoke100)
0 1
10559 9441
table(cdc$smoke100)/20000
0 1
0.52795 0.47205
ANALYSIS What I see from the output is that weight might be skewed right slighly because the mean is higher than the median
The first table shows the counts of non-smokers (0) and smokers(1). This same information is more useful as a relative freqency table in which I see 52.8% of the sample were non-smokers and 47.2% of the samples were smokers.
Exercise 2
Create a numerical summary for height arrange and compute the interquartile range for each.
summary(cdc$height)
Min. 1st Qu. Median Mean 3rd Qu. Max.
48.00 64.00 67.00 67.18 70.00 93.00
summary(cdc$age)
Min. 1st Qu. Median Mean 3rd Qu. Max.
18.00 31.00 43.00 45.07 57.00 99.00
IQR for height is 70-64=6 inches IQR for age is 57-31= 26 years
compute the relative frequency distribution for gender and exerany
table(cdc$gender)/20000
m f
0.47845 0.52155
table(cdc$exerany)/20000
0 1
0.2543 0.7457
table(cdc$genhlth)/20000
excellent very good good fair poor
0.23285 0.34860 0.28375 0.10095 0.03385
How many males are in the sample? 47.8% of the samle was male
What proportion of the sample reports being in excellent health? While 74.6% of the sample reported that they exercise, 23.2% of the sample reports being in excellent health
Exercise 3
What does the mosaic plot reveal about smoking habits and gender?
mosaicplot(table(cdc$gender, cdc$smoke100) , main= "Association between Gender and smoking Habits")

ANALYSIS: smoking habits and gender seem to be associated as females are less likely to report being smokers than males.
Exercise 4
Create a new object called under23 and smoke that contains all observations of respondents under the age of 23 that have smoked 100 cigarettes in their lifetime. Write the command you used to create the new object as the answer to this exercise.
under23andsmoke <- subset(cdc, cdc$age < 23 & cdc$smoke100 == "1")
620 subjects under 23 and have smoked
QUANTITATIVE DATA
boxplot(bmi ~ cdc$genhlth , horizontal = TRUE , xlab = "BMI")

ANALYSIS As general health goes down from excellent to poor, the average BMI increases and become more variable. All distributions are skewed right many outliers.
boxplot(bmi ~ cdc$gender, horizontal = TRUE, xlab = "BMI")

ANALYSIS It suprises me to see that the everage BMI for females in the study is lower than that of the males. Both distributions are skewed high with many outliers, considering that the IQR for females tends to be about 7 (50% of womenhave a BMI measure between 22 and 28),while the males middle is in a range of about 5 from a BMI measure of about 24 and 29.
On your own
- Make a scatterplot of weight versus desired weight. Describe the relationship between those two variables.
plot(cdc$weight , cdc$wtdesire, main = "Weight vs Desired Weight", xlab = "Weight in lbs", ylab = "Desired Weight in lbs ")

ANALYSIS The association between a person’s weight and desired weight reveals that at the weights between 100 and 200, the weightand desired weight are relatively close to each other. However, at the higher weights between 200 and 300 poundsm the desired weight trends t be lower than the actual weight.
- Let’s consider a new variable: the difference between desired weight (wtdesire) and current weight (weight). Create this new variable by subtracting the two columns in the data frame and assigning them to a new object called wdiff.
wdiff <- cdc$wtdesire - cdc$weight
3.Analyze: What type of data is wdiff?quantitative data If an observation wdiff is 0, what does this mean about the person’s weight and desired weight? If the value is 0, then the person weighs what they desire to weigh. What if wdiff is positive or negative? If the value is postive then person wants tp gain weight. If negative, then the person wants to lose weight.
4.Subset wdiff into male and female groups. Using numerical summaries and a side-by-side box plot, determine if men tend to view their weight differently than women. EXPLAIN
hist(wdiff , main = "Weight Difference", xlab = "Weight desire-weight" , ylab = "frequency")

ANALYSISThe distribution of weight difference shows that almost all of the subjects have a negative value for the weight difference variable, meaning that they desire to lose weight.
5.Subset wdiff into male and female groups. Using numerical summaries and a side-by-side box plot, determine if men tend to view their weight differently than women. EXPLAIN
boxplot(wdiff ~ cdc$gender, horizontal = TRUE, xlab = "Weight difference")

ANALYSIS It looks as if 25% of both groups are ok with their weight or would like to even gain weight. The 2 outliers for the men are questionable. Is it true that two men surveryed would like to gain 300 and over 400 pounds? In general, 75% of men and women would like to lose weight,Women tend to want to lose more weight than women. Im suprised we dont see more of a differnce between genders.
LS0tDQp0aXRsZTogIlNEQTIwIFJsYWIyIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KIyMjIyBSeWxhbmQgQ2FtcG9zDQpTdGF0aXN0aWNzIGFuZCBEYXRhIEFuYWx5c2lzIFBlcmlvZCA0DQoNCiMjIyBUaGUgRGF0YQ0KDQpUaGUgQmVoYXZpb3JhbCBSaXNrIEZhY3RvciBTdXJ2ZWlsbGFuY2UgU3lzdGVtIChCUkZTUykgaXMgYW4gYW5udWFsIHRlbGVwaG9uZSBzdXJ2ZXkgb2YgMzUwLDAwMCBwZW9wbGUgaW4gdGhlIFVuaXRlZCBTdGF0ZXMuIEFzIGl0cyBuYW1lIGltcGxpZXMsIHRoZSBCUkZTUyBpcyBkZXNpZ25lZCB0byBpZGVudGlmeSByaXNrIGZhY3RvcnMgaW4gdGhlIGFkdWx0IHBvcHVsYXRpb24gYW5kIHJlcG9ydCBlbWVyZ2luZyBoZWFsdGggdHJlbmRzLiBGb3IgZXhhbXBsZSwgcmVzcG9uZGVudHMgYXJlIGFza2VkIGFib3V0IHRoZWlyIGRpZXQgYW5kIHdlZWtseSBwaHlzaWNhbCBhY3Rpdml0eSwgdGhlaXIgSElWL0FJRFMgc3RhdHVzLCBwb3NzaWJsZSB0b2JhY2NvIHVzZSwgYW5kIGV2ZW4gdGhlaXIgbGV2ZWwgb2YgaGVhbHRoIGNhcmUgY292ZXJhZ2UuIFRoZSBCUkZTUyBXZWIgc2l0ZSAoaHR0cDovL3d3dy5jZGMuZ292L2JyZnNzKSBjb250YWlucyBhIGNvbXBsZXRlIGRlc2NyaXB0aW9uIG9mIHRoZSBzdXJ2ZXksIGluY2x1ZGluZyB0aGUgcmVzZWFyY2ggcXVlc3Rpb25zIHRoYXQgbW90aXZhdGUgdGhlIHN0dWR5IGFuZCBtYW55IGludGVyZXN0aW5nIHJlc3VsdHMgZGVyaXZlZCBmcm9tIHRoZSBkYXRhLg0KDQpXZSB3aWxsIGZvY3VzIG9uIGEgcmFuZG9tIHNhbXBsZSBvZiAyMCwwMDAgcGVvcGxlIGZyb20gdGhlIEJSRlNTIHN1cnZleSBjb25kdWN0ZWQgaW4gMjAwMC4gV2hpbGUgdGhlcmUgYXJlIG92ZXIgMjAwIHZhcmlhYmxlcyBpbiB0aGlzIGRhdGEgc2V0LCB3ZSB3aWxsIHdvcmsgd2l0aCBhIHNtYWxsIHN1YnNldC4NCmBgYHtyfQ0Kc291cmNlKCJodHRwOi8vd3d3Lm9wZW5pbnRyby5vcmcvc3RhdC9kYXRhL2NkYy5SIikNCg0KYGBgDQoNCmBgYHtyfQ0KbmFtZXMoY2RjKQ0KYGBgDQoNClRoaXMgcmV0dXJucyB0aGUgbmFtZXMgZ2VuaGx0aCwgZXhlcmFueSwgaGx0aHBsYW4sIHNtb2tlMTAwLCBoZWlnaHQsIHdlaWdodCwgd3RkZXNpcmUsIGFnZSwgYW5kIGdlbmRlci4gRWFjaCBvbmUgb2YgdGhlc2UgdmFyaWFibGVzIGNvcnJlc3BvbmRzIHRvIGEgcXVlc3Rpb24gdGhhdCB3YXMgYXNrZWQgaW4gdGhlIHN1cnZleS4gRm9yIGV4YW1wbGUsIGZvciBnZW5obHRoLCByZXNwb25kZW50cyB3ZXJlIGFza2VkIHRvIGV2YWx1YXRlIHRoZWlyIGdlbmVyYWwgaGVhbHRoLCByZXNwb25kaW5nIGVpdGhlciBleGNlbGxlbnQsIHZlcnkgZ29vZCwgZ29vZCwgZmFpciBvciBwb29yLiBUaGUgZXhlcmFueSB2YXJpYWJsZSBpbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVzcG9uZGVudCBleGVyY2lzZWQgaW4gdGhlIHBhc3QgbW9udGggKDEpIG9yIGRpZCBub3QgKDApLiBMaWtld2lzZSwgaGx0aHBsYW4gaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3BvbmRlbnQgaGFkIHNvbWUgZm9ybSBvZiBoZWFsdGggY292ZXJhZ2UgKDEpIG9yIGRpZCBub3QgKDApLiBUaGUgc21va2UxMDAgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlc3BvbmRlbnQgaGFkIHNtb2tlZCBhdCBsZWFzdCAxMDAgY2lnYXJldHRlcyBpbiBoZXIgbGlmZXRpbWUuIFRoZSBvdGhlciB2YXJpYWJsZXMgcmVjb3JkIHRoZSByZXNwb25kZW504oCZcyBoZWlnaHQgaW4gaW5jaGVzLCB3ZWlnaHQgaW4gcG91bmRzIGFzIHdlbGwgYXMgdGhlaXIgZGVzaXJlZCB3ZWlnaHQsIHd0ZGVzaXJlLCBhZ2UgaW4geWVhcnMsIGFuZCBnZW5kZXIuDQoNCiMjIyBFeGVyY2lzZSAxDQpIb3cgbWFueSBjYXNlcyBhcmUgdGhlcmUgaW4gdGhpcyBkYXRhIHNldCAqKjIwMDAwKioNCkhvdyBtYW55IHZhcmlhYmxlcz8gKio5KioNCiBGb3IgZWFjaCB2YXJpYWJsZSwgIGlkZW50aWZ5IGl0cyBkYXRhIHR5cGUgKGUuZy4gY2F0ZWdvcmljYWwsIHF1YW50aXRhdGl2ZSkuDQoNCg0KKipjYXRlZ29yaWNhbDogZ2VuZGVyLCBoZWFsdGhwbGFuLCBzbW9rZTEwMCwgZ2VuaGVhbHRoLCBleGVyYW55KioNCg0KKipRdWFudGl0YXRpdmUgOiAgYWdlICh5cnMpLCB3ZWlnaHQgKGxicyksIGRlc2lyZWQgd2VpZ2h0IChsYnMpLCBoZWlnaHQgKGluY2hlcykqKg0KDQojIyMgU3VtbWFyaWVzIGFuZCB0YWJsZXMNCg0KQ2FsY3VsYXRpbmcgdGhlIHN1bW1hcnkgc3RhdGlzdGljcyBmb3IgYSAqKnF1YW50aXRhdGl2ZSB2YXJpYWJsZSoqICh3ZWlnaHQpLiBDcmVhdGluZyB0YWJsZXMgZm9yIGEgKipjYXRlZ29yaWNhbCB2YXJpYWJsZSoqKHNtb2tlIDEwMCkNCg0KYGBge3J9DQpzdW1tYXJ5KGNkYyR3ZWlnaHQpDQptZWFuKGNkYyR3ZWlnaHQpDQp2YXIoY2RjJHdlaWdodCkNCm1lZGlhbihjZGMkd2VpZ2h0KQ0KdGFibGUoY2RjJHNtb2tlMTAwKQ0KdGFibGUoY2RjJHNtb2tlMTAwKS8yMDAwMA0KYGBgDQoqKkFOQUxZU0lTKiogV2hhdCBJIHNlZSBmcm9tIHRoZSBvdXRwdXQgaXMgdGhhdCB3ZWlnaHQgbWlnaHQgYmUgc2tld2VkIHJpZ2h0IHNsaWdobHkgYmVjYXVzZSB0aGUgbWVhbiBpcyBoaWdoZXIgdGhhbiB0aGUgbWVkaWFuDQoNClRoZSBmaXJzdCB0YWJsZSBzaG93cyB0aGUgY291bnRzIG9mIG5vbi1zbW9rZXJzICgwKSBhbmQgc21va2VycygxKS4gVGhpcyBzYW1lIGluZm9ybWF0aW9uIGlzIG1vcmUgdXNlZnVsIGFzIGEgcmVsYXRpdmUgZnJlcWVuY3kgdGFibGUgaW4gd2hpY2ggSSBzZWUgNTIuOCUgb2YgdGhlIHNhbXBsZSB3ZXJlIG5vbi1zbW9rZXJzIGFuZCA0Ny4yJSBvZiB0aGUgc2FtcGxlcyB3ZXJlIHNtb2tlcnMuDQoNCiMjIyBFeGVyY2lzZSAyDQpDcmVhdGUgYSBudW1lcmljYWwgc3VtbWFyeSBmb3IgaGVpZ2h0IGFycmFuZ2UgYW5kIGNvbXB1dGUgdGhlIGludGVycXVhcnRpbGUgcmFuZ2UgZm9yIGVhY2guDQpgYGB7cn0NCnN1bW1hcnkoY2RjJGhlaWdodCkNCmBgYA0KYGBge3J9DQpzdW1tYXJ5KGNkYyRhZ2UpDQpgYGANCklRUiBmb3IgaGVpZ2h0IGlzIDcwLTY0PTYgaW5jaGVzIElRUiBmb3IgYWdlIGlzIDU3LTMxPSAyNiB5ZWFycw0KDQpjb21wdXRlIHRoZSByZWxhdGl2ZSBmcmVxdWVuY3kgZGlzdHJpYnV0aW9uIGZvciBnZW5kZXIgYW5kIGV4ZXJhbnkNCmBgYHtyfQ0KdGFibGUoY2RjJGdlbmRlcikvMjAwMDANCmBgYA0KYGBge3J9DQp0YWJsZShjZGMkZXhlcmFueSkvMjAwMDANCmBgYA0KDQpgYGB7cn0NCnRhYmxlKGNkYyRnZW5obHRoKS8yMDAwMA0KYGBgDQoNCkhvdyBtYW55IG1hbGVzIGFyZSBpbiB0aGUgc2FtcGxlPyAqKjQ3LjglIG9mIHRoZSBzYW1sZSB3YXMgbWFsZSoqDQoNCldoYXQgcHJvcG9ydGlvbiBvZiB0aGUgc2FtcGxlIHJlcG9ydHMgYmVpbmcgaW4gZXhjZWxsZW50IGhlYWx0aD8gKipXaGlsZSA3NC42JSBvZiB0aGUgc2FtcGxlIHJlcG9ydGVkIHRoYXQgdGhleSBleGVyY2lzZSwgMjMuMiUgb2YgdGhlIHNhbXBsZSByZXBvcnRzIGJlaW5nIGluIGV4Y2VsbGVudCBoZWFsdGgqKg0KDQojIyMgRXhlcmNpc2UgMw0KV2hhdCBkb2VzIHRoZSBtb3NhaWMgcGxvdCByZXZlYWwgYWJvdXQgc21va2luZyBoYWJpdHMgYW5kIGdlbmRlcj8NCg0KYGBge3J9DQptb3NhaWNwbG90KHRhYmxlKGNkYyRnZW5kZXIsIGNkYyRzbW9rZTEwMCkgLCBtYWluPSAiQXNzb2NpYXRpb24gYmV0d2VlbiBHZW5kZXIgYW5kIHNtb2tpbmcgSGFiaXRzIikNCmBgYA0KDQoqKkFOQUxZU0lTOiBzbW9raW5nIGhhYml0cyBhbmQgZ2VuZGVyIHNlZW0gdG8gYmUgYXNzb2NpYXRlZCBhcyBmZW1hbGVzIGFyZSBsZXNzIGxpa2VseSB0byByZXBvcnQgYmVpbmcgc21va2VycyB0aGFuIG1hbGVzLioqDQoNCiMjIyBFeGVyY2lzZSA0DQoNCkNyZWF0ZSBhIG5ldyBvYmplY3QgY2FsbGVkIHVuZGVyMjMgYW5kIHNtb2tlIHRoYXQgY29udGFpbnMgYWxsIG9ic2VydmF0aW9ucyBvZiByZXNwb25kZW50cyB1bmRlciB0aGUgYWdlIG9mIDIzIHRoYXQgaGF2ZSBzbW9rZWQgMTAwIGNpZ2FyZXR0ZXMgaW4gdGhlaXIgbGlmZXRpbWUuIFdyaXRlIHRoZSBjb21tYW5kIHlvdSB1c2VkIHRvIGNyZWF0ZSB0aGUgbmV3IG9iamVjdCBhcyB0aGUgYW5zd2VyIHRvIHRoaXMgZXhlcmNpc2UuDQpgYGB7cn0NCnVuZGVyMjNhbmRzbW9rZSA8LSBzdWJzZXQoY2RjLCBjZGMkYWdlIDwgMjMgJiBjZGMkc21va2UxMDAgPT0gIjEiKQ0KYGBgDQoqKjYyMCBzdWJqZWN0cyB1bmRlciAyMyBhbmQgaGF2ZSBzbW9rZWQqKg0KDQojIyBRVUFOVElUQVRJVkUgREFUQQ0KDQpgYGB7cn0NCmJveHBsb3QoYm1pIH4gY2RjJGdlbmhsdGggLCBob3Jpem9udGFsID0gVFJVRSAsIHhsYWIgPSAiQk1JIikNCmBgYA0KDQoqKkFOQUxZU0lTKiogQXMgZ2VuZXJhbCBoZWFsdGggZ29lcyBkb3duIGZyb20gZXhjZWxsZW50IHRvIHBvb3IsIHRoZSBhdmVyYWdlIEJNSSBpbmNyZWFzZXMgYW5kIGJlY29tZSBtb3JlIHZhcmlhYmxlLiBBbGwgZGlzdHJpYnV0aW9ucyBhcmUgc2tld2VkIHJpZ2h0IG1hbnkgb3V0bGllcnMuDQoNCmBgYHtyfQ0KYm94cGxvdChibWkgfiBjZGMkZ2VuZGVyLCBob3Jpem9udGFsID0gVFJVRSwgeGxhYiA9ICJCTUkiKQ0KYGBgDQoNCioqQU5BTFlTSVMqKiBJdCBzdXByaXNlcyBtZSB0byBzZWUgdGhhdCB0aGUgZXZlcmFnZSBCTUkgZm9yIGZlbWFsZXMgaW4gdGhlIHN0dWR5IGlzIGxvd2VyIHRoYW4gdGhhdCBvZiB0aGUgbWFsZXMuIEJvdGggZGlzdHJpYnV0aW9ucyBhcmUgc2tld2VkIGhpZ2ggd2l0aCBtYW55IG91dGxpZXJzLCBjb25zaWRlcmluZyB0aGF0IHRoZSBJUVIgZm9yIGZlbWFsZXMgdGVuZHMgdG8gYmUgYWJvdXQgNyAoNTAlIG9mIHdvbWVuaGF2ZSBhIEJNSSBtZWFzdXJlIGJldHdlZW4gMjIgYW5kIDI4KSx3aGlsZSB0aGUgbWFsZXMgbWlkZGxlIGlzIGluIGEgcmFuZ2Ugb2YgYWJvdXQgNSBmcm9tIGEgQk1JIG1lYXN1cmUgb2YgYWJvdXQgMjQgYW5kIDI5Lg0KDQojIyBPbiB5b3VyIG93bg0KICAgMS4gTWFrZSBhIHNjYXR0ZXJwbG90IG9mIHdlaWdodCB2ZXJzdXMgZGVzaXJlZCB3ZWlnaHQuIERlc2NyaWJlIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiB0aG9zZSB0d28gdmFyaWFibGVzLg0KDQpgYGB7cn0NCnBsb3QoY2RjJHdlaWdodCAsIGNkYyR3dGRlc2lyZSwgbWFpbiA9ICJXZWlnaHQgdnMgRGVzaXJlZCBXZWlnaHQiLCB4bGFiID0gIldlaWdodCBpbiBsYnMiLCB5bGFiID0gIkRlc2lyZWQgV2VpZ2h0IGluIGxicyAiKQ0KYGBgDQoNCioqQU5BTFlTSVMqKiBUaGUgYXNzb2NpYXRpb24gYmV0d2VlbiBhIHBlcnNvbidzIHdlaWdodCBhbmQgZGVzaXJlZCB3ZWlnaHQgcmV2ZWFscyB0aGF0IGF0IHRoZSB3ZWlnaHRzIGJldHdlZW4gMTAwIGFuZCAyMDAsIHRoZSB3ZWlnaHRhbmQgZGVzaXJlZCB3ZWlnaHQgYXJlIHJlbGF0aXZlbHkgY2xvc2UgdG8gZWFjaCBvdGhlci4gSG93ZXZlciwgYXQgdGhlIGhpZ2hlciB3ZWlnaHRzIGJldHdlZW4gMjAwIGFuZCAzMDAgcG91bmRzbSB0aGUgZGVzaXJlZCB3ZWlnaHQgdHJlbmRzIHQgYmUgbG93ZXIgdGhhbiB0aGUgYWN0dWFsIHdlaWdodC4NCg0KMi4gTGV04oCZcyBjb25zaWRlciBhIG5ldyB2YXJpYWJsZTogdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBkZXNpcmVkIHdlaWdodCAod3RkZXNpcmUpIGFuZCBjdXJyZW50IHdlaWdodCAod2VpZ2h0KS4gQ3JlYXRlIHRoaXMgbmV3IHZhcmlhYmxlIGJ5IHN1YnRyYWN0aW5nIHRoZSB0d28gY29sdW1ucyBpbiB0aGUgZGF0YSBmcmFtZSBhbmQgYXNzaWduaW5nIHRoZW0gdG8gYSBuZXcgb2JqZWN0IGNhbGxlZCB3ZGlmZi4NCg0KDQpgYGB7cn0NCndkaWZmIDwtIGNkYyR3dGRlc2lyZSAtIGNkYyR3ZWlnaHQNCmBgYA0KDQozLkFuYWx5emU6IFdoYXQgdHlwZSBvZiBkYXRhIGlzIHdkaWZmPyoqcXVhbnRpdGF0aXZlIGRhdGEqKiBJZiBhbiBvYnNlcnZhdGlvbiB3ZGlmZiBpcyAwLCB3aGF0IGRvZXMgdGhpcyBtZWFuIGFib3V0IHRoZSBwZXJzb27igJlzIHdlaWdodCBhbmQgZGVzaXJlZCB3ZWlnaHQ/ICoqSWYgdGhlIHZhbHVlIGlzIDAsIHRoZW4gdGhlIHBlcnNvbiB3ZWlnaHMgd2hhdCB0aGV5IGRlc2lyZSB0byB3ZWlnaC4qKiBXaGF0IGlmIHdkaWZmIGlzIHBvc2l0aXZlIG9yIG5lZ2F0aXZlPyAqKklmIHRoZSB2YWx1ZSBpcyBwb3N0aXZlIHRoZW4gcGVyc29uIHdhbnRzIHRwIGdhaW4gd2VpZ2h0LiBJZiBuZWdhdGl2ZSwgdGhlbiB0aGUgcGVyc29uIHdhbnRzIHRvIGxvc2Ugd2VpZ2h0LioqDQoNCjQuU3Vic2V0ICB3ZGlmZiAgIGludG8gbWFsZSBhbmQgZmVtYWxlIGdyb3Vwcy4gVXNpbmcgbnVtZXJpY2FsIHN1bW1hcmllcyBhbmQgYSBzaWRlLWJ5LXNpZGUgYm94IHBsb3QsIGRldGVybWluZSBpZiBtZW4gdGVuZCB0byB2aWV3IHRoZWlyIHdlaWdodCBkaWZmZXJlbnRseSB0aGFuIHdvbWVuLiBFWFBMQUlODQoNCmBgYHtyfQ0KaGlzdCh3ZGlmZiAsIG1haW4gPSAiV2VpZ2h0IERpZmZlcmVuY2UiLCB4bGFiID0gIldlaWdodCBkZXNpcmUtd2VpZ2h0IiAsIHlsYWIgPSAiZnJlcXVlbmN5IikNCmBgYA0KDQoqKkFOQUxZU0lTKipUaGUgZGlzdHJpYnV0aW9uIG9mIHdlaWdodCBkaWZmZXJlbmNlIHNob3dzIHRoYXQgYWxtb3N0IGFsbCBvZiB0aGUgc3ViamVjdHMgaGF2ZSBhIG5lZ2F0aXZlIHZhbHVlIGZvciB0aGUgd2VpZ2h0IGRpZmZlcmVuY2UgdmFyaWFibGUsIG1lYW5pbmcgdGhhdCB0aGV5IGRlc2lyZSB0byBsb3NlIHdlaWdodC4NCg0KNS5TdWJzZXQgIHdkaWZmICAgaW50byBtYWxlIGFuZCBmZW1hbGUgZ3JvdXBzLiBVc2luZyBudW1lcmljYWwgc3VtbWFyaWVzIGFuZCBhIHNpZGUtYnktc2lkZSBib3ggcGxvdCwgZGV0ZXJtaW5lIGlmIG1lbiB0ZW5kIHRvIHZpZXcgdGhlaXIgd2VpZ2h0IGRpZmZlcmVudGx5IHRoYW4gd29tZW4uIEVYUExBSU4NCg0KYGBge3J9DQpib3hwbG90KHdkaWZmIH4gY2RjJGdlbmRlciwgaG9yaXpvbnRhbCA9IFRSVUUsIHhsYWIgPSAiV2VpZ2h0IGRpZmZlcmVuY2UiKQ0KYGBgDQoNCg0KKipBTkFMWVNJUyoqIEl0IGxvb2tzIGFzIGlmIDI1JSBvZiBib3RoIGdyb3VwcyBhcmUgb2sgd2l0aCB0aGVpciB3ZWlnaHQgb3Igd291bGQgbGlrZSB0byBldmVuIGdhaW4gd2VpZ2h0LiBUaGUgMiBvdXRsaWVycyBmb3IgdGhlIG1lbiBhcmUgcXVlc3Rpb25hYmxlLiBJcyBpdCB0cnVlIHRoYXQgdHdvIG1lbiBzdXJ2ZXJ5ZWQgd291bGQgbGlrZSB0byBnYWluIDMwMCBhbmQgb3ZlciA0MDAgcG91bmRzPyBJbiBnZW5lcmFsLCA3NSUgb2YgbWVuIGFuZCB3b21lbiB3b3VsZCBsaWtlIHRvIGxvc2Ugd2VpZ2h0LFdvbWVuIHRlbmQgdG8gd2FudCB0byBsb3NlIG1vcmUgd2VpZ2h0IHRoYW4gd29tZW4uIEltIHN1cHJpc2VkIHdlIGRvbnQgc2VlIG1vcmUgb2YgYSBkaWZmZXJuY2UgYmV0d2VlbiBnZW5kZXJzLg==