install.packages(c("ggplot2","ggpubr","tidyverse","broom", "AICcmodavg","xlsx","rJava", "tinytex", "rmarkdown"))
Error in install.packages : Updating loaded packages
library(ggplot2)
library(ggpubr)
library(tidyverse)
library(broom)
library(AICcmodavg)
library(rJava)
library(xlsx)
library(readxl)
library(tinytex)
library(rmarkdown)
dep1 <- read_excel("medical1-2.xlsx")
sapply(dep1,class)
Florida New York North Carolina
"numeric" "numeric" "numeric"
colnames(dep1)[colnames(dep1) == 'New York'] <- 'NY'
colnames(dep1)[colnames(dep1) == 'North Carolina'] <- 'NC'
colnames(dep1)[colnames(dep1) == 'Florida'] <- 'FL'
print(dep1)
summary(dep1)
FL NY NC
Min. :2.00 Min. : 4.00 Min. : 3.00
1st Qu.:3.75 1st Qu.: 7.00 1st Qu.: 4.75
Median :6.00 Median : 8.00 Median : 7.50
Mean :5.55 Mean : 8.00 Mean : 7.05
3rd Qu.:7.00 3rd Qu.: 8.25 3rd Qu.: 8.25
Max. :9.00 Max. :13.00 Max. :12.00
#One-Way Anova ## Pivot table so that Depression Score is the value
based on the factor location.
dep1 <- data.frame(
FL = c(3,7,7,3,8,8,8,5,5,2,6,2,6,6,9,7,5,4,7,3),
NY = c(8,11,9,7,8,7,8,4,13,10,6,8,12,8,6,8,5,7,7,8),
NC = c(10,7,3,5,11,8,4,3,7,8,8,7,3,9,8,12,6,3,8,11))
dep_long <- pivot_longer(dep1, cols = everything(), names_to = "Location", values_to = "Depression_score")
print(dep_long)
NA
summary(dep_long)
Location Depression_score
Length:60 Min. : 2.000
Class :character 1st Qu.: 5.000
Mode :character Median : 7.000
Mean : 6.867
3rd Qu.: 8.000
Max. :13.000
anova_med1 <- aov(Depression_score ~ as.factor(Location), data = dep_long)
summary(anova_med1)
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(Location) 2 61.0 30.517 5.241 0.00814 **
Residuals 57 331.9 5.823
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ggplot(dep_long, aes(x = Location, y = Depression_score, fill = Location)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Boxplot of Locations", x = "Location", y = "Depression_score")

tukey_test_med1 <- TukeyHSD(anova_med1)
plot(tukey_test_med1)

One-Way Anova Pivot table so that Depression Score of those with
health conditions is the value based on the factor location.
dep2 <- read_excel("medical2.xlsx")
sapply(dep2,class)
Florida New York North Carolina
"numeric" "numeric" "numeric"
print(dep2)
summary(dep2)
Florida New York North Carolina
Min. : 9.0 Min. : 9.00 Min. : 8.00
1st Qu.:12.0 1st Qu.:12.75 1st Qu.:12.00
Median :14.5 Median :14.50 Median :14.00
Mean :14.5 Mean :15.25 Mean :13.95
3rd Qu.:17.0 3rd Qu.:17.25 3rd Qu.:16.25
Max. :21.0 Max. :24.00 Max. :19.00
colnames(dep2)[colnames(dep2) == 'New York'] <- 'NY'
colnames(dep2)[colnames(dep2) == 'North Carolina'] <- 'NC'
colnames(dep2)[colnames(dep2) == 'Florida'] <- 'FL'
print(dep2)
dep2 <- data.frame(
FL = c(13,12,17,17,20,21,15,14,13,17,12,9,12,15,16,15,13,10,11,17),
NY = c(14,9,15,12,16,24,18,14,15,17,20,11,23,19,17,14,9,14,13,11),
NC = c(10,12,15,18,12,14,17,8,14,16,18,17,19,15,13,14,11,12,13,11))
dep_long2 <- pivot_longer(dep2, cols = everything(), names_to = "Location2", values_to = "Depression_score_hc")
print(dep_long2)
NA
summary(dep_long2)
Location2 Depression_score_hc
Length:60 Min. : 8.00
Class :character 1st Qu.:12.00
Mode :character Median :14.00
Mean :14.55
3rd Qu.:17.00
Max. :24.00
anova_med2 <- aov(Depression_score_hc ~ as.factor(Location2), data = dep_long2)
summary(anova_med2)
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(Location2) 2 17.2 8.60 0.723 0.49
Residuals 57 677.6 11.89
ggplot(dep_long2, aes(x = Location2, y = Depression_score_hc, fill = Location2)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Boxplot of Locations", x = "Location2", y = "Depression_score_hc")

tukey_test_med2 <- TukeyHSD(anova_med2)
plot(tukey_test_med2)

- Use descriptive statistics to summarize the data from the two
studies. What are your preliminary observations about the depression
scores? As long as you don’t round the p value, the mean depression
scored between the 3 locations are not equal. This implies that at least
one location has a significantly different mean depression score. The
post-hoc Tukey test indicates that the mean depression score between New
York and Florida. However, with comparing the depression score with
those that have chronic health conditions, the location is not
statistically significant because p = 0.49 > 0.01. The post-hoc Tukey
test further proves that because all the confidence intervals contain
zero. What is not clear from this study is if the subjects are full or
part-time residents of each location.
Two-way ANOVA Now we are going to combine the two tables with the
depression scores in the same order as the previous table.
Depression_score_hc <- c(13,12,17,17,20,21,15,14,13,17,12,9,12,15,16,15,13,10,11,17,14,9,15,12,16,24,18,14,15,17,20,11,23,19,17,14,9,14,13,11,10,12,15,18,12,14,17,8,14,16,18,17,19,15,13,14,11,12,13,11)
dep_long$Depression_score_hc <- Depression_score_hc
print(dep_long)
NA
two_way <- aov(Depression_score_hc + Depression_score ~ as.factor(Location), data = dep_long)
summary(two_way)
Df Sum Sq Mean Sq F value Pr(>F)
as.factor(Location) 2 130.4 65.22 3.513 0.0364 *
Residuals 57 1058.1 18.56
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ggplot(dep_long, aes(x = Location, y = Depression_score_hc+Depression_score, fill = Location)) +
geom_boxplot() +
theme_minimal() +
labs(title = "Boxplot of Locations", x = "Location", y = "Depression_score_combined")

tukey_test_combined <- TukeyHSD(two_way)
plot(tukey_test_combined)

Use analysis of variance on both data sets. State the hypotheses
being tested in each case. What are your conclusions? There is not a
significant difference in the means based solely on location for
individuals with chronic health conditions. However, with the two
depression scores combined, there is still a significant difference
between the locations because p = 0.036 < 0.05. This is further
proved because the confidence interval from the post-hoc Tukey test
shows that there is a significant difference of the combined depressions
scores between New York and Florida. H0: The mean depression scores
between the three selected locations is not significantly different. H1:
The mean depression scores (good health & good and poor health
combined) is significantly different between the 3 selected locations.
Post-hoc Tukey tests indicate that the significant difference is between
the New York and Florida locations.
Use inferences about individual treatment means where
appropriate. What are your conclusions? I am not too sure my two way
anova is correct. Somehow I feel like my comparison is off, but when I
tried putting location first, I got an error.I feel I’m overlooking
something. However, based on the anova analysis, there is significant
enough difference between depression scores in Florida and New York to
warrant further investigation.
LS0tDQp0aXRsZTogJ0Fzc2lnbm1lbnQgIzIgQU5PVkEgU3RhdCBNb2RlbGluZycNCm91dHB1dDoNCiAgaHRtbF9ub3RlYm9vazogZGVmYXVsdA0KICB3b3JkX2RvY3VtZW50OiBkZWZhdWx0DQogIHBkZl9kb2N1bWVudDogZGVmYXVsdA0KICBodG1sX2RvY3VtZW50OiBkZWZhdWx0DQotLS0NCg0KDQpgYGB7ciBlY2hvPVR9DQppbnN0YWxsLnBhY2thZ2VzKGMoImdncGxvdDIiLCJnZ3B1YnIiLCJ0aWR5dmVyc2UiLCJicm9vbSIsICJBSUNjbW9kYXZnIiwieGxzeCIsInJKYXZhIiwgInRpbnl0ZXgiLCAicm1hcmtkb3duIikpDQpgYGANCmBgYHtyIGVjaG89VCwgcmVzdWx0cz0naGlkZSd9DQpsaWJyYXJ5KGdncGxvdDIpDQpsaWJyYXJ5KGdncHVicikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KbGlicmFyeShicm9vbSkNCmxpYnJhcnkoQUlDY21vZGF2ZykNCmxpYnJhcnkockphdmEpDQpsaWJyYXJ5KHhsc3gpDQpsaWJyYXJ5KHJlYWR4bCkNCmxpYnJhcnkodGlueXRleCkNCmxpYnJhcnkocm1hcmtkb3duKQ0KYGBgDQoNCmBgYHtyfQ0KZGVwMSA8LSByZWFkX2V4Y2VsKCJtZWRpY2FsMS0yLnhsc3giKQ0Kc2FwcGx5KGRlcDEsY2xhc3MpDQpgYGANCmBgYHtyfQ0KY29sbmFtZXMoZGVwMSlbY29sbmFtZXMoZGVwMSkgPT0gJ05ldyBZb3JrJ10gPC0gJ05ZJw0KY29sbmFtZXMoZGVwMSlbY29sbmFtZXMoZGVwMSkgPT0gJ05vcnRoIENhcm9saW5hJ10gPC0gJ05DJw0KY29sbmFtZXMoZGVwMSlbY29sbmFtZXMoZGVwMSkgPT0gJ0Zsb3JpZGEnXSA8LSAnRkwnDQpgYGANCg0KYGBge3J9DQpwcmludChkZXAxKQ0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwMSkNCmBgYA0KI09uZS1XYXkgQW5vdmENCiMjIFBpdm90IHRhYmxlIHNvIHRoYXQgRGVwcmVzc2lvbiBTY29yZSBpcyB0aGUgdmFsdWUgYmFzZWQgb24gdGhlIGZhY3RvciBsb2NhdGlvbi4NCg0KYGBge3J9DQpkZXAxIDwtIGRhdGEuZnJhbWUoDQogIEZMID0gYygzLDcsNywzLDgsOCw4LDUsNSwyLDYsMiw2LDYsOSw3LDUsNCw3LDMpLA0KICBOWSA9IGMoOCwxMSw5LDcsOCw3LDgsNCwxMywxMCw2LDgsMTIsOCw2LDgsNSw3LDcsOCksDQogIE5DID0gYygxMCw3LDMsNSwxMSw4LDQsMyw3LDgsOCw3LDMsOSw4LDEyLDYsMyw4LDExKSkNCg0KYGBgDQoNCmBgYHtyfQ0KZGVwX2xvbmcgPC0gcGl2b3RfbG9uZ2VyKGRlcDEsIGNvbHMgPSBldmVyeXRoaW5nKCksIG5hbWVzX3RvID0gIkxvY2F0aW9uIiwgdmFsdWVzX3RvID0gIkRlcHJlc3Npb25fc2NvcmUiKQ0KDQpwcmludChkZXBfbG9uZykNCg0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwX2xvbmcpDQpgYGANCg0KDQpgYGB7cn0NCmFub3ZhX21lZDEgPC0gYW92KERlcHJlc3Npb25fc2NvcmUgfiBhcy5mYWN0b3IoTG9jYXRpb24pLCBkYXRhID0gZGVwX2xvbmcpDQoNCnN1bW1hcnkoYW5vdmFfbWVkMSkNCg0KYGBgDQoNCmBgYHtyfQ0KZ2dwbG90KGRlcF9sb25nLCBhZXMoeCA9IExvY2F0aW9uLCB5ID0gRGVwcmVzc2lvbl9zY29yZSwgZmlsbCA9IExvY2F0aW9uKSkgKw0KICBnZW9tX2JveHBsb3QoKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIGxhYnModGl0bGUgPSAiQm94cGxvdCBvZiBMb2NhdGlvbnMiLCB4ID0gIkxvY2F0aW9uIiwgeSA9ICJEZXByZXNzaW9uX3Njb3JlIikNCmBgYA0KDQoNCg0KYGBge3J9DQp0dWtleV90ZXN0X21lZDEgPC0gVHVrZXlIU0QoYW5vdmFfbWVkMSkNCnBsb3QodHVrZXlfdGVzdF9tZWQxKQ0KYGBgDQoNCk9uZS1XYXkgQW5vdmENClBpdm90IHRhYmxlIHNvIHRoYXQgRGVwcmVzc2lvbiBTY29yZSBvZiB0aG9zZSB3aXRoIGhlYWx0aCBjb25kaXRpb25zIGlzIHRoZSB2YWx1ZSBiYXNlZCBvbiB0aGUgZmFjdG9yIGxvY2F0aW9uLiANCg0KYGBge3J9DQpkZXAyIDwtIHJlYWRfZXhjZWwoIm1lZGljYWwyLnhsc3giKQ0Kc2FwcGx5KGRlcDIsY2xhc3MpDQpgYGANCg0KYGBge3J9DQpwcmludChkZXAyKQ0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwMikNCmBgYA0KDQpgYGB7cn0NCmNvbG5hbWVzKGRlcDIpW2NvbG5hbWVzKGRlcDIpID09ICdOZXcgWW9yayddIDwtICdOWScNCmNvbG5hbWVzKGRlcDIpW2NvbG5hbWVzKGRlcDIpID09ICdOb3J0aCBDYXJvbGluYSddIDwtICdOQycNCmNvbG5hbWVzKGRlcDIpW2NvbG5hbWVzKGRlcDIpID09ICdGbG9yaWRhJ10gPC0gJ0ZMJw0KYGBgDQoNCg0KYGBge3J9DQpwcmludChkZXAyKQ0KYGBgDQoNCmBgYHtyfQ0KZGVwMiA8LSBkYXRhLmZyYW1lKA0KICBGTCA9IGMoMTMsMTIsMTcsMTcsMjAsMjEsMTUsMTQsMTMsMTcsMTIsOSwxMiwxNSwxNiwxNSwxMywxMCwxMSwxNyksDQogIE5ZID0gYygxNCw5LDE1LDEyLDE2LDI0LDE4LDE0LDE1LDE3LDIwLDExLDIzLDE5LDE3LDE0LDksMTQsMTMsMTEpLA0KICBOQyA9IGMoMTAsMTIsMTUsMTgsMTIsMTQsMTcsOCwxNCwxNiwxOCwxNywxOSwxNSwxMywxNCwxMSwxMiwxMywxMSkpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KZGVwX2xvbmcyIDwtIHBpdm90X2xvbmdlcihkZXAyLCBjb2xzID0gZXZlcnl0aGluZygpLCBuYW1lc190byA9ICJMb2NhdGlvbjIiLCB2YWx1ZXNfdG8gPSAiRGVwcmVzc2lvbl9zY29yZV9oYyIpDQoNCnByaW50KGRlcF9sb25nMikNCg0KYGBgDQpgYGB7cn0NCnN1bW1hcnkoZGVwX2xvbmcyKQ0KYGBgDQoNCg0KDQpgYGB7cn0NCmFub3ZhX21lZDIgPC0gYW92KERlcHJlc3Npb25fc2NvcmVfaGMgfiBhcy5mYWN0b3IoTG9jYXRpb24yKSwgZGF0YSA9IGRlcF9sb25nMikNCg0Kc3VtbWFyeShhbm92YV9tZWQyKQ0KDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3QoZGVwX2xvbmcyLCBhZXMoeCA9IExvY2F0aW9uMiwgeSA9IERlcHJlc3Npb25fc2NvcmVfaGMsIGZpbGwgPSBMb2NhdGlvbjIpKSArDQogIGdlb21fYm94cGxvdCgpICsNCiAgdGhlbWVfbWluaW1hbCgpICsNCiAgbGFicyh0aXRsZSA9ICJCb3hwbG90IG9mIExvY2F0aW9ucyIsIHggPSAiTG9jYXRpb24yIiwgeSA9ICJEZXByZXNzaW9uX3Njb3JlX2hjIikNCmBgYA0KYGBge3J9DQp0dWtleV90ZXN0X21lZDIgPC0gVHVrZXlIU0QoYW5vdmFfbWVkMikNCnBsb3QodHVrZXlfdGVzdF9tZWQyKQ0KYGBgDQoxLiBVc2UgZGVzY3JpcHRpdmUgc3RhdGlzdGljcyB0byBzdW1tYXJpemUgdGhlIGRhdGEgZnJvbSB0aGUgdHdvIHN0dWRpZXMuIFdoYXQgYXJlIHlvdXIgcHJlbGltaW5hcnkgb2JzZXJ2YXRpb25zIGFib3V0IHRoZSBkZXByZXNzaW9uIHNjb3Jlcz8NCkFzIGxvbmcgYXMgeW91IGRvbid0IHJvdW5kIHRoZSBwIHZhbHVlLCB0aGUgbWVhbiBkZXByZXNzaW9uIHNjb3JlZCBiZXR3ZWVuIHRoZSAzIGxvY2F0aW9ucyBhcmUgbm90IGVxdWFsLiBUaGlzIGltcGxpZXMgdGhhdCBhdCBsZWFzdCBvbmUgbG9jYXRpb24gaGFzIGEgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgbWVhbiBkZXByZXNzaW9uIHNjb3JlLiBUaGUgcG9zdC1ob2MgVHVrZXkgdGVzdCBpbmRpY2F0ZXMgdGhhdCB0aGUgbWVhbiBkZXByZXNzaW9uIHNjb3JlIGJldHdlZW4gTmV3IFlvcmsgYW5kIEZsb3JpZGEuIEhvd2V2ZXIsIHdpdGggY29tcGFyaW5nIHRoZSBkZXByZXNzaW9uIHNjb3JlIHdpdGggdGhvc2UgdGhhdCBoYXZlIGNocm9uaWMgaGVhbHRoIGNvbmRpdGlvbnMsIHRoZSBsb2NhdGlvbiBpcyBub3Qgc3RhdGlzdGljYWxseSBzaWduaWZpY2FudCBiZWNhdXNlIHAgPSAwLjQ5ID4gMC4wMS4gVGhlIHBvc3QtaG9jIFR1a2V5IHRlc3QgZnVydGhlciBwcm92ZXMgdGhhdCBiZWNhdXNlIGFsbCB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbHMgY29udGFpbiB6ZXJvLiBXaGF0IGlzIG5vdCBjbGVhciBmcm9tIHRoaXMgc3R1ZHkgaXMgaWYgdGhlIHN1YmplY3RzIGFyZSBmdWxsIG9yIHBhcnQtdGltZSByZXNpZGVudHMgb2YgZWFjaCBsb2NhdGlvbi4NCg0KDQpUd28td2F5IEFOT1ZBDQpOb3cgd2UgYXJlIGdvaW5nIHRvIGNvbWJpbmUgdGhlIHR3byB0YWJsZXMgd2l0aCB0aGUgZGVwcmVzc2lvbiBzY29yZXMgaW4gdGhlIHNhbWUgb3JkZXIgYXMgdGhlIHByZXZpb3VzIHRhYmxlLg0KDQpgYGB7cn0NCkRlcHJlc3Npb25fc2NvcmVfaGMgPC0gYygxMywxMiwxNywxNywyMCwyMSwxNSwxNCwxMywxNywxMiw5LDEyLDE1LDE2LDE1LDEzLDEwLDExLDE3LDE0LDksMTUsMTIsMTYsMjQsMTgsMTQsMTUsMTcsMjAsMTEsMjMsMTksMTcsMTQsOSwxNCwxMywxMSwxMCwxMiwxNSwxOCwxMiwxNCwxNyw4LDE0LDE2LDE4LDE3LDE5LDE1LDEzLDE0LDExLDEyLDEzLDExKQ0KDQpkZXBfbG9uZyREZXByZXNzaW9uX3Njb3JlX2hjIDwtIERlcHJlc3Npb25fc2NvcmVfaGMNCg0KcHJpbnQoZGVwX2xvbmcpDQoNCmBgYA0KDQoNCmBgYHtyfQ0KdHdvX3dheSA8LSBhb3YoRGVwcmVzc2lvbl9zY29yZV9oYyArIERlcHJlc3Npb25fc2NvcmUgfiBhcy5mYWN0b3IoTG9jYXRpb24pLCBkYXRhID0gZGVwX2xvbmcpDQpzdW1tYXJ5KHR3b193YXkpDQpgYGANCg0KDQpgYGB7cn0NCmdncGxvdChkZXBfbG9uZywgYWVzKHggPSBMb2NhdGlvbiwgeSA9IERlcHJlc3Npb25fc2NvcmVfaGMrRGVwcmVzc2lvbl9zY29yZSwgZmlsbCA9IExvY2F0aW9uKSkgKw0KICBnZW9tX2JveHBsb3QoKSArDQogIHRoZW1lX21pbmltYWwoKSArDQogIGxhYnModGl0bGUgPSAiQm94cGxvdCBvZiBMb2NhdGlvbnMiLCB4ID0gIkxvY2F0aW9uIiwgeSA9ICJEZXByZXNzaW9uX3Njb3JlX2NvbWJpbmVkIikNCmBgYA0KYGBge3J9DQp0dWtleV90ZXN0X2NvbWJpbmVkIDwtIFR1a2V5SFNEKHR3b193YXkpDQpwbG90KHR1a2V5X3Rlc3RfY29tYmluZWQpDQpgYGANCjIuIFVzZSBhbmFseXNpcyBvZiB2YXJpYW5jZSBvbiBib3RoIGRhdGEgc2V0cy4gU3RhdGUgdGhlIGh5cG90aGVzZXMgYmVpbmcgdGVzdGVkIGluIGVhY2ggY2FzZS4gV2hhdCBhcmUgeW91ciBjb25jbHVzaW9ucz8gVGhlcmUgaXMgbm90IGEgc2lnbmlmaWNhbnQgZGlmZmVyZW5jZSBpbiB0aGUgbWVhbnMgYmFzZWQgc29sZWx5IG9uIGxvY2F0aW9uIGZvciBpbmRpdmlkdWFscyB3aXRoIGNocm9uaWMgaGVhbHRoIGNvbmRpdGlvbnMuIEhvd2V2ZXIsIHdpdGggdGhlIHR3byBkZXByZXNzaW9uIHNjb3JlcyBjb21iaW5lZCwgdGhlcmUgaXMgc3RpbGwgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIGxvY2F0aW9ucyBiZWNhdXNlIHAgPSAwLjAzNiA8IDAuMDUuIFRoaXMgaXMgZnVydGhlciBwcm92ZWQgYmVjYXVzZSB0aGUgY29uZmlkZW5jZSBpbnRlcnZhbCBmcm9tIHRoZSBwb3N0LWhvYyBUdWtleSB0ZXN0IHNob3dzIHRoYXQgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBkaWZmZXJlbmNlIG9mIHRoZSBjb21iaW5lZCBkZXByZXNzaW9ucyBzY29yZXMgYmV0d2VlbiBOZXcgWW9yayBhbmQgRmxvcmlkYS4gSDA6IFRoZSBtZWFuIGRlcHJlc3Npb24gc2NvcmVzIGJldHdlZW4gdGhlIHRocmVlIHNlbGVjdGVkIGxvY2F0aW9ucyBpcyBub3Qgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQuIEgxOiBUaGUgbWVhbiBkZXByZXNzaW9uIHNjb3JlcyAoZ29vZCBoZWFsdGggJiBnb29kIGFuZCBwb29yIGhlYWx0aCBjb21iaW5lZCkgaXMgc2lnbmlmaWNhbnRseSBkaWZmZXJlbnQgYmV0d2VlbiB0aGUgMyBzZWxlY3RlZCBsb2NhdGlvbnMuIFBvc3QtaG9jIFR1a2V5IHRlc3RzIGluZGljYXRlIHRoYXQgdGhlIHNpZ25pZmljYW50IGRpZmZlcmVuY2UgaXMgYmV0d2VlbiB0aGUgTmV3IFlvcmsgYW5kIEZsb3JpZGEgbG9jYXRpb25zLiAgDQoNCjMuIFVzZSBpbmZlcmVuY2VzIGFib3V0IGluZGl2aWR1YWwgdHJlYXRtZW50IG1lYW5zIHdoZXJlIGFwcHJvcHJpYXRlLiBXaGF0IGFyZSB5b3VyIGNvbmNsdXNpb25zPyBJIGFtIG5vdCB0b28gc3VyZSBteSB0d28gd2F5IGFub3ZhIGlzIGNvcnJlY3QuIFNvbWVob3cgSSBmZWVsIGxpa2UgbXkgY29tcGFyaXNvbiBpcyBvZmYsIGJ1dCB3aGVuIEkgdHJpZWQgcHV0dGluZyBsb2NhdGlvbiBmaXJzdCwgSSBnb3QgYW4gZXJyb3IuSSBmZWVsIEknbSBvdmVybG9va2luZyBzb21ldGhpbmcuIEhvd2V2ZXIsIGJhc2VkIG9uIHRoZSBhbm92YSBhbmFseXNpcywgdGhlcmUgaXMgc2lnbmlmaWNhbnQgZW5vdWdoIGRpZmZlcmVuY2UgYmV0d2VlbiBkZXByZXNzaW9uIHNjb3JlcyBpbiBGbG9yaWRhIGFuZCBOZXcgWW9yayB0byB3YXJyYW50IGZ1cnRoZXIgaW52ZXN0aWdhdGlvbi4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg0K