Question 1: Read in the gambling dataset check the first couple of rows and describe the data types. Identify incorrect data types, if any. ( 5 Points )

The datatype for sex seems to be incorrect because it should be nominal listing as “male, female, and other” rather than just a list of “1’s”. The status income is listed as either interval or ratio depending on if there is a true zero. By looking at the numbers it looks like status might mean age, which would make it a ratio datatype. Verbal is an ordinal datatype because they are ranked but there isn’t consistent, meaningful difference between numbers. The datatype for gamble is ratio because there are meaningful, consistent differences between the numbers and there is a true zero. Income is also a ratio datatype because you can earn zero income and there is a meaningful consistent relationship between dollar amounts.

mydata = read.csv(file="data/gambling.csv")
mydata

Question 2: Describe the data using full sentences and using descriptive statistics. ( 5 Points )

The average score for how verbal a participant is, is 6.65. The average score for gambling is 19.30. The miniumum score for “gamble” is 0, meaning some players are not gambling. The minimum score for “verbal” is 1, which means at least one player is very quiet.The range of status is 18 to 75 meaning there is a 57 number differnce between highest and lowest status.

meanverbal 
[1] 6.659574
verbal = mydata$verbal
verbal
 [1]  8  8  6  4  8  6  7  5  6  7  6  6  4  6  6  8
[17]  8  5  8  9  8  9  5  4  7  7  4  6  7  8  2  7
[33]  7 10  1  8  7  6  6  6  9  9  8  9  6  7  9
gamble = mydata$gamble
meangamble = mean(gamble)
meangamble
[1] 19.30106
mingamble = min(gamble)
mingamble
[1] 0
minverbal = min(verbal)
minverbal
[1] 1
status = mydata$status
status
 [1] 51 28 37 28 65 61 28 27 43 18 18 43 30 28 38 38
[17] 28 18 43 51 62 47 43 27 71 38 51 38 51 62 18 30
[33] 38 71 28 61 71 28 51 65 48 61 75 66 62 71 71
rangestatus = range(status)
rangestatus
[1] 18 75

Question 3: Estimate the upper and lower threshold for the verbal score ( 5 Points )

The upper threshold would be 12.22925 The lower threshold would be 1.0899

HINT: A common way to estimate the upper and lower threshold is to take the mean (+ or -) 3 * standard deviation.

verbal = mydata$verbal
verbal
 [1]  8  8  6  4  8  6  7  5  6  7  6  6  4  6  6  8
[17]  8  5  8  9  8  9  5  4  7  7  4  6  7  8  2  7
[33]  7 10  1  8  7  6  6  6  9  9  8  9  6  7  9
meanverbal = mean(verbal)
meanverbal
[1] 6.659574
sdverbal = sd(verbal)
sdverbal
[1] 1.856558
upperthreshold = mean(verbal) + 3 * sd(verbal)
upperthreshold
[1] 12.22925
lowerthreshold = mean(verbal) - 3* sd(verbal)
lowerthreshold
[1] 1.0899

Question 4: Calculate the z-score for income where x=13. Based on the income value x=13 pounds per week, how would you rate the income: low income, average income, high income. Why? ( 5 Points )

I would rate this as a high income becuase the z score came out to be 2.3534 which means that an income of 13 pounds per week is 2.3534 standard deviations above the mean, making it higher than the average income.

Hint: zscore = (x - mean)/sd

income = mydata$income
income
 [1]  2.00  2.50  2.00  7.00  2.00  3.47  5.50  6.42
 [9]  2.00  6.00  3.00  4.75  2.20  2.00  3.00  1.50
[17]  9.50 10.00  4.00  3.50  3.00  2.50  3.50 10.00
[25]  6.50  1.50  5.44  1.00  0.60  5.50 12.00  7.00
[33] 15.00  2.00  1.50  4.50  2.50  8.00 10.00  1.60
[41]  2.00 15.00  3.00  3.25  4.94  1.50  2.50
zscoreincomeX = (13 - mean(income)) / sd(income)
zscoreincomeX
[1] 2.353481

Question 5: Create a histogram for the zscore of income. What do you notice about the shape? ( 5 Points )

The histogram for the z scores of income has its highest frequency at a z score that deviates from the mean by about 1 standard deviation. This means that it is skewed to the left. The rest of the z scores havae a much lower frequency as the z scores increase meaning less z scores were positive positioned away from the mean. Hint: To plot a histogram, use the function hist(variable).

zscoreincom = (income - mean(income)) / sd(income)
zscoreincom
 [1] -0.74391403 -0.60312335 -0.74391403  0.66399285
 [5] -0.74391403 -0.32998941  0.24162079  0.50067565
 [9] -0.74391403  0.38241147 -0.46233266  0.03043475
[13] -0.68759776 -0.74391403 -0.46233266 -0.88470472
[17]  1.36794630  1.50873698 -0.18075128 -0.32154197
[21] -0.46233266 -0.60312335 -0.32154197  1.50873698
[25]  0.52320216 -0.88470472  0.22472590 -1.02549541
[29] -1.13812796  0.24162079  2.07189974  0.66399285
[33]  2.91664387 -0.74391403 -0.88470472 -0.03996059
[37] -0.60312335  0.94557423  1.50873698 -0.85654659
[41] -0.74391403  2.91664387 -0.46233266 -0.39193731
[45]  0.08393521 -0.88470472 -0.60312335
hist(zscoreincom)

Question 6: Analyze the correlation plot below. Give relavant information about the negative correlated, no correlared and positive correlated variables. ( 5 Points )

This correlation plot shows positive correlations, and lack of correlations becasue there are many differntly shaded blue dots, but no negative correlations becuase there are no red dots. Correlations range from -1 to 1. -1 is a strong negative correlation, 0 is no correlation, and 1 is a strong positive correlation. One of the stronger positive correlations is between fb_likes and user_votes which has a positive correlation of around .8. There is almost no correlation between score and cast_likes or cast_likes and director. There is also a fairly strong correlation of about positive .6 between gross and fb_likes.Score and cast likes has very little correlation, almost coming in at 0. This information is useful because you can see which two variable are related and use this to try to boost things like fb_likes or score.

Extra Credit: Analyze the correlation table below. Give relavant information about the negative correlated, no correlared and positive correlated variables. ( 5 Points )

# Create a correlation table "cor(movies)"
mydata = read.csv(file="data/movies.csv")
mydata
cor(mydata)
               length budget  director actor1 actor2
length              1     NA        NA     NA     NA
budget             NA      1        NA     NA     NA
director           NA     NA 1.0000000     NA     NA
actor1             NA     NA        NA      1     NA
actor2             NA     NA        NA     NA      1
actor3             NA     NA        NA     NA     NA
cast_likes         NA     NA 0.1858875     NA     NA
fb_likes           NA     NA 0.2894939     NA     NA
critic_reviews     NA     NA        NA     NA     NA
users_reviews      NA     NA        NA     NA     NA
users_votes        NA     NA 0.3492878     NA     NA
score              NA     NA 0.1765288     NA     NA
gross              NA     NA 0.1717334     NA     NA
               actor3 cast_likes  fb_likes
length             NA         NA        NA
budget             NA         NA        NA
director           NA  0.1858875 0.2894939
actor1             NA         NA        NA
actor2             NA         NA        NA
actor3              1         NA        NA
cast_likes         NA  1.0000000 0.3387454
fb_likes           NA  0.3387454 1.0000000
critic_reviews     NA         NA        NA
users_reviews      NA         NA        NA
users_votes        NA  0.4140989 0.8001157
score              NA  0.1484501 0.4604384
gross              NA  0.3829801 0.5644529
               critic_reviews users_reviews
length                     NA            NA
budget                     NA            NA
director                   NA            NA
actor1                     NA            NA
actor2                     NA            NA
actor3                     NA            NA
cast_likes                 NA            NA
fb_likes                   NA            NA
critic_reviews              1            NA
users_reviews              NA             1
users_votes                NA            NA
score                      NA            NA
gross                      NA            NA
               users_votes     score     gross
length                  NA        NA        NA
budget                  NA        NA        NA
director         0.3492878 0.1765288 0.1717334
actor1                  NA        NA        NA
actor2                  NA        NA        NA
actor3                  NA        NA        NA
cast_likes       0.4140989 0.1484501 0.3829801
fb_likes         0.8001157 0.4604384 0.5644529
critic_reviews          NA        NA        NA
users_reviews           NA        NA        NA
users_votes      1.0000000 0.4742893 0.6892893
score            0.4742893 1.0000000 0.2669350
gross            0.6892893 0.2669350 1.0000000

User votes and cast likes has a positive correlation of .8001157 meaning there is a strong positive correlation. There is also a positive correlation between uservotes and gross of .6892893. The numbers show that as one of these variables rises, the other variable also rises. There are no negative correlations which means that a rise in one variable will not correlate with a fall in another variable.

LS0tDQp0aXRsZTogIkJ1c2luZXNzIEFuYWx5dGljcyAtIE1JRFRFUk0iDQphdXRob3I6ICJKb3JkYW4gUmllYmUiDQpkYXRlOiAiNy8yNCINCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50OiBkZWZhdWx0DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0Kc3VidGl0bGU6IENNRSBHcm91cCBGb3VuZGF0aW9uIEJ1c2luZXNzIEFuYWx5dGljcyBMYWINCi0tLQ0KDQoNCg0KIyMjIFF1ZXN0aW9uIDE6IFJlYWQgaW4gdGhlIGdhbWJsaW5nIGRhdGFzZXQgY2hlY2sgdGhlIGZpcnN0IGNvdXBsZSBvZiByb3dzIGFuZCBkZXNjcmliZSB0aGUgZGF0YSB0eXBlcy4gSWRlbnRpZnkgaW5jb3JyZWN0IGRhdGEgdHlwZXMsIGlmIGFueS4gKCA1IFBvaW50cyApDQpUaGUgZGF0YXR5cGUgZm9yIHNleCBzZWVtcyB0byBiZSBpbmNvcnJlY3QgYmVjYXVzZSBpdCBzaG91bGQgYmUgIG5vbWluYWwgbGlzdGluZyBhcyAibWFsZSwgZmVtYWxlLCBhbmQgb3RoZXIiIHJhdGhlciB0aGFuIGp1c3QgYSBsaXN0IG9mICIxJ3MiLiBUaGUgc3RhdHVzIGluY29tZSBpcyBsaXN0ZWQgYXMgZWl0aGVyIGludGVydmFsIG9yIHJhdGlvIGRlcGVuZGluZyBvbiBpZiB0aGVyZSBpcyBhIHRydWUgemVyby4gQnkgbG9va2luZyBhdCB0aGUgbnVtYmVycyBpdCBsb29rcyBsaWtlIHN0YXR1cyBtaWdodCBtZWFuIGFnZSwgd2hpY2ggd291bGQgbWFrZSBpdCBhIHJhdGlvIGRhdGF0eXBlLiBWZXJiYWwgaXMgYW4gb3JkaW5hbCBkYXRhdHlwZSBiZWNhdXNlIHRoZXkgYXJlIHJhbmtlZCBidXQgdGhlcmUgaXNuJ3QgY29uc2lzdGVudCwgbWVhbmluZ2Z1bCBkaWZmZXJlbmNlIGJldHdlZW4gbnVtYmVycy4gVGhlIGRhdGF0eXBlIGZvciBnYW1ibGUgaXMgcmF0aW8gYmVjYXVzZSB0aGVyZSBhcmUgbWVhbmluZ2Z1bCwgY29uc2lzdGVudCBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBudW1iZXJzIGFuZCB0aGVyZSBpcyBhIHRydWUgemVyby4gSW5jb21lIGlzIGFsc28gYSByYXRpbyBkYXRhdHlwZSBiZWNhdXNlIHlvdSBjYW4gZWFybiB6ZXJvIGluY29tZSBhbmQgdGhlcmUgaXMgYSBtZWFuaW5nZnVsIGNvbnNpc3RlbnQgcmVsYXRpb25zaGlwIGJldHdlZW4gZG9sbGFyIGFtb3VudHMuDQoNCmBgYHtyfQ0KbXlkYXRhID0gcmVhZC5jc3YoZmlsZT0iZGF0YS9nYW1ibGluZy5jc3YiKQ0KbXlkYXRhDQpgYGANCg0KDQoNCg0KDQoNCg0KIyMjIFF1ZXN0aW9uIDI6IERlc2NyaWJlIHRoZSBkYXRhIHVzaW5nIGZ1bGwgc2VudGVuY2VzIGFuZCB1c2luZyBkZXNjcmlwdGl2ZSBzdGF0aXN0aWNzLiAoIDUgUG9pbnRzICkNClRoZSBhdmVyYWdlIHNjb3JlIGZvciBob3cgdmVyYmFsIGEgcGFydGljaXBhbnQgaXMsIGlzIDYuNjUuIFRoZSBhdmVyYWdlIHNjb3JlIGZvciBnYW1ibGluZyBpcyAxOS4zMC4gVGhlIG1pbml1bXVtIHNjb3JlIGZvciAiZ2FtYmxlIiBpcyAwLCBtZWFuaW5nIHNvbWUgcGxheWVycyBhcmUgbm90IGdhbWJsaW5nLiBUaGUgbWluaW11bSBzY29yZSBmb3IgInZlcmJhbCIgaXMgMSwgd2hpY2ggbWVhbnMgYXQgbGVhc3Qgb25lIHBsYXllciBpcyB2ZXJ5IHF1aWV0LlRoZSByYW5nZSBvZiBzdGF0dXMgaXMgMTggdG8gNzUgbWVhbmluZyB0aGVyZSBpcyBhIDU3IG51bWJlciBkaWZmZXJuY2UgYmV0d2VlbiBoaWdoZXN0IGFuZCBsb3dlc3Qgc3RhdHVzLiANCg0KYGBge3J9DQptZWFudmVyYmFsIA0KdmVyYmFsID0gbXlkYXRhJHZlcmJhbA0KdmVyYmFsDQpnYW1ibGUgPSBteWRhdGEkZ2FtYmxlDQptZWFuZ2FtYmxlID0gbWVhbihnYW1ibGUpDQptZWFuZ2FtYmxlDQptaW5nYW1ibGUgPSBtaW4oZ2FtYmxlKQ0KbWluZ2FtYmxlDQptaW52ZXJiYWwgPSBtaW4odmVyYmFsKQ0KbWludmVyYmFsDQpzdGF0dXMgPSBteWRhdGEkc3RhdHVzDQpzdGF0dXMNCnJhbmdlc3RhdHVzID0gcmFuZ2Uoc3RhdHVzKQ0KcmFuZ2VzdGF0dXMNCmBgYA0KDQoNCg0KDQoNCg0KDQojIyMgUXVlc3Rpb24gMzogRXN0aW1hdGUgdGhlIHVwcGVyIGFuZCBsb3dlciB0aHJlc2hvbGQgZm9yIHRoZSB2ZXJiYWwgc2NvcmUgKCA1IFBvaW50cyApDQpUaGUgdXBwZXIgdGhyZXNob2xkIHdvdWxkIGJlIDEyLjIyOTI1DQpUaGUgbG93ZXIgdGhyZXNob2xkIHdvdWxkIGJlIDEuMDg5OQ0KDQpISU5UOiAgQSBjb21tb24gd2F5IHRvIGVzdGltYXRlIHRoZSB1cHBlciBhbmQgbG93ZXIgdGhyZXNob2xkIGlzIHRvIHRha2UgdGhlIG1lYW4gKCsgb3IgLSkgMyAqIHN0YW5kYXJkIGRldmlhdGlvbi4NCg0KYGBge3J9DQp2ZXJiYWwgPSBteWRhdGEkdmVyYmFsDQp2ZXJiYWwNCg0KYGBgDQpgYGB7cn0NCm1lYW52ZXJiYWwgPSBtZWFuKHZlcmJhbCkNCm1lYW52ZXJiYWwNCg0Kc2R2ZXJiYWwgPSBzZCh2ZXJiYWwpDQpzZHZlcmJhbA0KDQp1cHBlcnRocmVzaG9sZCA9IG1lYW4odmVyYmFsKSArIDMgKiBzZCh2ZXJiYWwpDQp1cHBlcnRocmVzaG9sZA0KDQpsb3dlcnRocmVzaG9sZCA9IG1lYW4odmVyYmFsKSAtIDMqIHNkKHZlcmJhbCkNCmxvd2VydGhyZXNob2xkDQoNCmBgYA0KDQoNCg0KDQoNCg0KIyMjIFF1ZXN0aW9uIDQ6IENhbGN1bGF0ZSB0aGUgei1zY29yZSBmb3IgaW5jb21lIHdoZXJlIHg9MTMuIEJhc2VkIG9uIHRoZSBpbmNvbWUgdmFsdWUgeD0xMyBwb3VuZHMgcGVyIHdlZWssIGhvdyB3b3VsZCB5b3UgcmF0ZSB0aGUgaW5jb21lOiBsb3cgaW5jb21lLCBhdmVyYWdlIGluY29tZSwgaGlnaCBpbmNvbWUuIFdoeT8gKCA1IFBvaW50cyApDQpJIHdvdWxkIHJhdGUgdGhpcyBhcyBhIGhpZ2ggaW5jb21lIGJlY3Vhc2UgdGhlIHogc2NvcmUgY2FtZSBvdXQgdG8gYmUgMi4zNTM0IHdoaWNoIG1lYW5zIHRoYXQgYW4gaW5jb21lIG9mIDEzIHBvdW5kcyBwZXIgd2VlayBpcyAyLjM1MzQgc3RhbmRhcmQgZGV2aWF0aW9ucyBhYm92ZSB0aGUgbWVhbiwgbWFraW5nIGl0IGhpZ2hlciB0aGFuIHRoZSBhdmVyYWdlIGluY29tZS4NCg0KSGludDogenNjb3JlID0gKHggLSBtZWFuKS9zZA0KYGBge3J9DQppbmNvbWUgPSBteWRhdGEkaW5jb21lDQppbmNvbWUNCmBgYA0KYGBge3J9DQp6c2NvcmVpbmNvbWVYID0gKDEzIC0gbWVhbihpbmNvbWUpKSAvIHNkKGluY29tZSkNCnpzY29yZWluY29tZVgNCmBgYA0KDQoNCg0KDQoNCg0KDQojIyMgUXVlc3Rpb24gNTogQ3JlYXRlIGEgaGlzdG9ncmFtIGZvciB0aGUgenNjb3JlIG9mIGluY29tZS4gV2hhdCBkbyB5b3Ugbm90aWNlIGFib3V0IHRoZSBzaGFwZT8gKCA1IFBvaW50cyApDQpUaGUgaGlzdG9ncmFtIGZvciB0aGUgeiBzY29yZXMgb2YgaW5jb21lIGhhcyBpdHMgaGlnaGVzdCBmcmVxdWVuY3kgYXQgYSB6IHNjb3JlIHRoYXQgZGV2aWF0ZXMgZnJvbSB0aGUgbWVhbiBieSBhYm91dCAxIHN0YW5kYXJkIGRldmlhdGlvbi4gVGhpcyBtZWFucyB0aGF0IGl0IGlzIHNrZXdlZCB0byB0aGUgbGVmdC4gVGhlIHJlc3Qgb2YgdGhlIHogc2NvcmVzIGhhdmFlIGEgbXVjaCBsb3dlciBmcmVxdWVuY3kgYXMgdGhlIHogc2NvcmVzIGluY3JlYXNlIG1lYW5pbmcgbGVzcyB6IHNjb3JlcyB3ZXJlIHBvc2l0aXZlIHBvc2l0aW9uZWQgYXdheSBmcm9tIHRoZSBtZWFuLg0KSGludDogVG8gcGxvdCBhIGhpc3RvZ3JhbSwgdXNlIHRoZSBmdW5jdGlvbiBoaXN0KHZhcmlhYmxlKS4gDQpgYGB7cn0NCnpzY29yZWluY29tID0gKGluY29tZSAtIG1lYW4oaW5jb21lKSkgLyBzZChpbmNvbWUpDQp6c2NvcmVpbmNvbQ0KaGlzdCh6c2NvcmVpbmNvbSkNCmBgYA0KDQoNCg0KDQoNCg0KDQojIyMgUXVlc3Rpb24gNjogQW5hbHl6ZSB0aGUgY29ycmVsYXRpb24gcGxvdCBiZWxvdy4gR2l2ZSByZWxhdmFudCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmVnYXRpdmUgY29ycmVsYXRlZCwgbm8gY29ycmVsYXJlZCBhbmQgcG9zaXRpdmUgY29ycmVsYXRlZCB2YXJpYWJsZXMuICggNSBQb2ludHMgKQ0KDQohW10oZGF0YS9jb3JyX3Bsb3QucG5nKQ0KDQoNCg0KDQpUaGlzIGNvcnJlbGF0aW9uIHBsb3Qgc2hvd3MgcG9zaXRpdmUgY29ycmVsYXRpb25zLCBhbmQgbGFjayBvZiBjb3JyZWxhdGlvbnMgYmVjYXN1ZSB0aGVyZSBhcmUgbWFueSBkaWZmZXJudGx5IHNoYWRlZCBibHVlIGRvdHMsIGJ1dCBubyBuZWdhdGl2ZSBjb3JyZWxhdGlvbnMgYmVjdWFzZSB0aGVyZSBhcmUgbm8gcmVkIGRvdHMuIENvcnJlbGF0aW9ucyByYW5nZSBmcm9tIC0xIHRvIDEuIC0xIGlzIGEgc3Ryb25nIG5lZ2F0aXZlIGNvcnJlbGF0aW9uLCAwIGlzIG5vIGNvcnJlbGF0aW9uLCBhbmQgMSBpcyBhIHN0cm9uZyBwb3NpdGl2ZSBjb3JyZWxhdGlvbi4gT25lIG9mIHRoZSBzdHJvbmdlciBwb3NpdGl2ZSBjb3JyZWxhdGlvbnMgaXMgYmV0d2VlbiBmYl9saWtlcyBhbmQgdXNlcl92b3RlcyB3aGljaCBoYXMgYSBwb3NpdGl2ZSBjb3JyZWxhdGlvbiBvZiBhcm91bmQgLjguIFRoZXJlIGlzIGFsbW9zdCBubyBjb3JyZWxhdGlvbiBiZXR3ZWVuIHNjb3JlIGFuZCBjYXN0X2xpa2VzIG9yIGNhc3RfbGlrZXMgYW5kIGRpcmVjdG9yLiBUaGVyZSBpcyBhbHNvIGEgZmFpcmx5IHN0cm9uZyBjb3JyZWxhdGlvbiBvZiBhYm91dCBwb3NpdGl2ZSAuNiBiZXR3ZWVuIGdyb3NzIGFuZCBmYl9saWtlcy5TY29yZSBhbmQgY2FzdCBsaWtlcyBoYXMgdmVyeSBsaXR0bGUgY29ycmVsYXRpb24sIGFsbW9zdCBjb21pbmcgaW4gYXQgMC4gVGhpcyBpbmZvcm1hdGlvbiBpcyB1c2VmdWwgYmVjYXVzZSB5b3UgY2FuIHNlZSB3aGljaCB0d28gdmFyaWFibGUgYXJlIHJlbGF0ZWQgYW5kIHVzZSB0aGlzIHRvIHRyeSB0byBib29zdCB0aGluZ3MgbGlrZSBmYl9saWtlcyBvciBzY29yZS4NCg0KDQoNCg0KIyMjIEV4dHJhIENyZWRpdDogQW5hbHl6ZSB0aGUgY29ycmVsYXRpb24gdGFibGUgYmVsb3cuIEdpdmUgcmVsYXZhbnQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIG5lZ2F0aXZlIGNvcnJlbGF0ZWQsIG5vIGNvcnJlbGFyZWQgYW5kIHBvc2l0aXZlIGNvcnJlbGF0ZWQgdmFyaWFibGVzLiAoIDUgUG9pbnRzICkNCg0KYGBge3J9DQojIENyZWF0ZSBhIGNvcnJlbGF0aW9uIHRhYmxlICJjb3IobW92aWVzKSINCm15ZGF0YSA9IHJlYWQuY3N2KGZpbGU9ImRhdGEvbW92aWVzLmNzdiIpDQpteWRhdGENCg0KY29yKG15ZGF0YSkNCmBgYA0KDQoNClVzZXIgdm90ZXMgYW5kIGNhc3QgbGlrZXMgaGFzIGEgcG9zaXRpdmUgY29ycmVsYXRpb24gb2YgLjgwMDExNTcgbWVhbmluZyB0aGVyZSBpcyBhIHN0cm9uZyBwb3NpdGl2ZSBjb3JyZWxhdGlvbi4gVGhlcmUgaXMgYWxzbyBhIHBvc2l0aXZlIGNvcnJlbGF0aW9uIGJldHdlZW4gdXNlcnZvdGVzIGFuZCBncm9zcyBvZiAuNjg5Mjg5My4gVGhlIG51bWJlcnMgc2hvdyB0aGF0IGFzIG9uZSBvZiB0aGVzZSB2YXJpYWJsZXMgcmlzZXMsIHRoZSBvdGhlciB2YXJpYWJsZSBhbHNvIHJpc2VzLiBUaGVyZSBhcmUgbm8gbmVnYXRpdmUgY29ycmVsYXRpb25zIHdoaWNoIG1lYW5zIHRoYXQgYSByaXNlIGluIG9uZSB2YXJpYWJsZSB3aWxsIG5vdCBjb3JyZWxhdGUgd2l0aCBhIGZhbGwgaW4gYW5vdGhlciB2YXJpYWJsZS4NCg0KDQoNCg0K