getwd()
[1] "C:/Users/Lisbeth/Documents"
file.choose(`sulfatos (mg/L)`)
[1] "C:\\Users\\Lisbeth\\Downloads\\DISEÑO EXPERIMENTAL (TRABAJOS)\\SULFATOS.xlsx"
ruta_propulsora <- "C:\\Users\\Lisbeth\\Downloads\\DISEÑO EXPERIMENTAL (TRABAJOS)\\SULFATOS.xlsx"
excel_sheets(ruta_propulsora)
[1] "Hoja1"
Propul<-read_excel(ruta_propulsora)
print(head(Propul))
View(Propul)
attach(Propul)
names(Propul)
 [1] "Año"             "Tipo de agua"    "COD. Muestra"    "Distrito"       
 [5] "Provincia"       "Aspecto"         "Color"           "Olor"           
 [9] "Sabor"           "sulfatos (mg/L)"
summary(Propul)
      Año       Tipo de agua       COD. Muestra         Distrito        
 Min.   :2012   Length:1718        Length:1718        Length:1718       
 1st Qu.:2014   Class :character   Class :character   Class :character  
 Median :2017   Mode  :character   Mode  :character   Mode  :character  
 Mean   :2017                                                           
 3rd Qu.:2021                                                           
 Max.   :2027                                                           
  Provincia           Aspecto             Color               Olor          
 Length:1718        Length:1718        Length:1718        Length:1718       
 Class :character   Class :character   Class :character   Class :character  
 Mode  :character   Mode  :character   Mode  :character   Mode  :character  
                                                                            
                                                                            
                                                                            
    Sabor           sulfatos (mg/L)   
 Length:1718        Length:1718       
 Class :character   Class :character  
 Mode  :character   Mode  :character  
                                      
                                      
                                      
str(Propul)
tibble [1,718 × 10] (S3: tbl_df/tbl/data.frame)
 $ Año            : num [1:1718] 2012 2012 2012 2012 2012 ...
 $ Tipo de agua   : chr [1:1718] "Agua potable" "Agua potable" "Agua potable" "Agua potable" ...
 $ COD. Muestra   : chr [1:1718] "2903" "2936" "3104" "2977" ...
 $ Distrito       : chr [1:1718] "Chupa" "0" "Ilave" "Orurillo" ...
 $ Provincia      : chr [1:1718] "Azangaro" "Carabaya" "Ilave" "Melgar" ...
 $ Aspecto        : chr [1:1718] "Liquido" "Liquido" "Solido" "Liquido" ...
 $ Color          : chr [1:1718] "Incoloro" "Incoloro" "Café" "Incoloro" ...
 $ Olor           : chr [1:1718] "Inodoro" "Inodoro" "Inodoro" "Inodoro" ...
 $ Sabor          : chr [1:1718] "Insipido" "Insipido" "Insipido" "Insipido" ...
 $ sulfatos (mg/L): chr [1:1718] "4" "4" "4" "760" ...
plot(`sulfatos (mg/L)`)
Warning: NAs introduced by coercion

AÑ <- factor(Propul$`Año`)
TIP <- factor(Propul$`Tipo de agua`)
COD<- factor(Propul$`COD. Muestra`)
DIS <-as.vector(Propul$Distrito)
PROV <-as.vector(Propul$Provincia)
ASP <-as.vector(Propul$Aspecto)
COL <-as.vector(Propul$Color)
OLO <-as.vector(Propul$Olor)
SAB <-as.vector(Propul$Sabor)
SULFATES <-as.vector(Propul$`sulfatos (mg/L)`)
SULFATES1 >-as.numeric(SULFATES)
Warning: NAs introduced by coercion
   [1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [17] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [33] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [49] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [65] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [81] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
  [97] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [113] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [129] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [145] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [161] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [177] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [193] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [209] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [225] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [241] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [257] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [273] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [289] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [305] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [321] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [337] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [353] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [369] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [385] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [401] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [417] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [433] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [449] TRUE TRUE TRUE TRUE TRUE TRUE TRUE   NA   NA TRUE TRUE   NA TRUE TRUE TRUE TRUE
 [465] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [481] TRUE TRUE TRUE TRUE TRUE   NA TRUE TRUE   NA   NA TRUE   NA TRUE TRUE TRUE   NA
 [497] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [513]   NA TRUE TRUE TRUE TRUE   NA   NA   NA   NA TRUE   NA TRUE TRUE TRUE TRUE TRUE
 [529]   NA TRUE TRUE   NA TRUE TRUE TRUE   NA TRUE   NA TRUE TRUE TRUE TRUE TRUE   NA
 [545] TRUE   NA TRUE TRUE   NA TRUE   NA   NA   NA TRUE TRUE   NA TRUE   NA TRUE   NA
 [561] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE   NA TRUE TRUE   NA TRUE   NA
 [577]   NA   NA TRUE   NA TRUE TRUE TRUE   NA TRUE TRUE TRUE TRUE TRUE TRUE   NA TRUE
 [593] TRUE TRUE TRUE TRUE TRUE   NA TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [609] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [625] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [641] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [657] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [673] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [689] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [705] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [721] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [737] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [753] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [769] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [785] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [801] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [817] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [833] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [849] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [865] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [881] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [897] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [913] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE
 [929] TRUE TRUE   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
 [945]   NA   NA TRUE TRUE TRUE   NA   NA   NA   NA   NA   NA   NA   NA TRUE   NA TRUE
 [961] TRUE   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
 [977]   NA TRUE TRUE TRUE TRUE   NA   NA   NA   NA   NA   NA TRUE TRUE   NA   NA   NA
 [993]   NA   NA   NA   NA   NA   NA   NA   NA
 [ reached getOption("max.print") -- omitted 718 entries ]
par(mfrow=c(1,1))
boxplot(split(SULFATES1,AÑ),xlab="Año", ylab="Sulfatos") 

boxplot(split(SULFATES1,YEAR),xlab="Tipo de agua", ylab="Sulfatos")

boxplot(split(SULFATES1,COD),xlab="COD.Muestra", ylab="Sulfatos") 

boxplot(split(SULFATES1,DIS),xlab="Distrito", ylab="Sulfatos") 

boxplot(split(SULFATES1,PROV),xlab="Provincia", ylab="Sulfatos")

boxplot(split(SULFATES1,ASP),xlab="Aspecto", ylab="Sulfatos")

boxplot(split(SULFATES1,COL),xlab="Color", ylab="Sulfatos")

boxplot(split(SULFATES1,OLO),xlab="Olor", ylab="Sulfatos")

boxplot(split(SULFATES1,SAB),xlab="Sabor", ylab="Sulfatos")

Ra.aov<-aov(SULFATES1 ~ AÑ+TIP+COD+DIS+PROV+ASP+COL+OLO+SAB)
anova(Ra.aov)
Analysis of Variance Table

Response: SULFATES1
           Df   Sum Sq Mean Sq F value    Pr(>F)    
AÑ          9  5584148  620461 27.8160 < 2.2e-16 ***
TIP        86 17795307  206922  9.2766 < 2.2e-16 ***
COD       935 45584760   48754  2.1857 < 2.2e-16 ***
DIS        74  3988277   53896  2.4162 7.306e-09 ***
PROV       12   598659   49888  2.2365  0.009275 ** 
ASP         3    65074   21691  0.9725  0.405335    
COL         9   432157   48017  2.1527  0.023832 *  
OLO         7   419673   59953  2.6878  0.009585 ** 
SAB         3    29946    9982  0.4475  0.719164    
Residuals 558 12446708   22306                      
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
ggplot(Ra.aov, aes(AÑ, TIP, COD, LUG, DIS, PROV, ASP, COL, OLO, SAB, fill=AÑ, TIP, COD, LUG, DIS, PROV, ASP, COL, OLO, SAB, color=PROV, TIP)) + geom_boxplot() + geom_jitter() + theme(legend.position = "none") + geom_point(color = 'red', fill = 'red', size= 5, shape = 18, alpha = 0.5) + geom_jitter(size = 2, color = 'gray', alpha = 0.8) + geom_boxplot() + theme_bw()
Warning: Duplicated aesthetics after name standardisation:

AÑ <- ggplot(Propul, aes(x = AÑ, y = SULFATES1, fill=AÑ)) + geom_boxplot() + theme(legend.position = "none")
TIP <- ggplot(Propul, aes(x = TIP, y = SULFATES1, fill=TIP)) + geom_boxplot() + theme(legend.position = "none")
COD <- ggplot(Propul, aes(x = COD, y = SULFATES1, fill=COD)) + geom_boxplot() + theme(legend.position = "none")
Dist <- ggplot(Propul, aes(x = DIS, y = SULFATES1, fill=DIS)) + geom_boxplot() + theme(legend.position = "none")
Provi <- ggplot(Propul, aes(x = PROV, y = SULFATES1, fill=PROV)) + geom_boxplot() + theme(legend.position = "none")
Aspe <- ggplot(Propul, aes(x = ASP, y = SULFATES1, fill=ASP)) + geom_boxplot() + theme(legend.position = "none")
Colo <- ggplot(Propul, aes(x = COL, y = SULFATES1, fill=COL)) + geom_boxplot() + theme(legend.position = "none")
Olor. <- ggplot(Propul, aes(x = OLO, y = SULFATES1, fill=OLO)) + geom_boxplot() + theme(legend.position = "none")
Sabo <- ggplot(Propul, aes(x = SAB, y = SULFATES1, fill=SAB)) + geom_boxplot() + theme(legend.position = "none")
cv.model(Ra.aov)
[1] 54.87376
LS0tDQp0aXRsZTogIkdSVVBPIFNVTEZBVE9TOiBMSVNCRVRIIEJFTElaQVJJTywgSlVMSVRaQSBDVVRJUEEsIFJVU1NFTEwgUVVJU1BFIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQotLS0NCg0KYGBge3J9DQpnZXR3ZCgpDQpgYGANCg0KYGBge3J9DQpmaWxlLmNob29zZShgc3VsZmF0b3MgKG1nL0wpYCkNCmBgYA0KDQpgYGB7cn0NCnJ1dGFfcHJvcHVsc29yYSA8LSAiQzpcXFVzZXJzXFxMaXNiZXRoXFxEb3dubG9hZHNcXERJU0XDkU8gRVhQRVJJTUVOVEFMIChUUkFCQUpPUylcXFNVTEZBVE9TLnhsc3giDQpgYGANCg0KYGBge3J9DQpleGNlbF9zaGVldHMocnV0YV9wcm9wdWxzb3JhKQ0KYGBgDQoNCmBgYHtyfQ0KUHJvcHVsPC1yZWFkX2V4Y2VsKHJ1dGFfcHJvcHVsc29yYSkNCmBgYA0KDQpgYGB7cn0NCnByaW50KGhlYWQoUHJvcHVsKSkNCmBgYA0KDQpgYGB7cn0NClZpZXcoUHJvcHVsKQ0KYGBgDQoNCmBgYHtyfQ0KYXR0YWNoKFByb3B1bCkNCmBgYA0KDQpgYGB7cn0NCm5hbWVzKFByb3B1bCkNCmBgYA0KDQpgYGB7cn0NCnN1bW1hcnkoUHJvcHVsKQ0KYGBgDQoNCmBgYHtyfQ0Kc3RyKFByb3B1bCkNCmBgYA0KDQpgYGB7cn0NCnBsb3QoYHN1bGZhdG9zIChtZy9MKWApDQpgYGANCg0KYGBge3J9DQpBw5EgPC0gZmFjdG9yKFByb3B1bCRgQcOxb2ApDQpgYGANCg0KYGBge3J9DQpUSVAgPC0gZmFjdG9yKFByb3B1bCRgVGlwbyBkZSBhZ3VhYCkNCmBgYA0KDQpgYGB7cn0NCkNPRDwtIGZhY3RvcihQcm9wdWwkYENPRC4gTXVlc3RyYWApDQpgYGANCg0KYGBge3J9DQpESVMgPC1hcy52ZWN0b3IoUHJvcHVsJERpc3RyaXRvKQ0KYGBgDQoNCmBgYHtyfQ0KUFJPViA8LWFzLnZlY3RvcihQcm9wdWwkUHJvdmluY2lhKQ0KYGBgDQoNCmBgYHtyfQ0KQVNQIDwtYXMudmVjdG9yKFByb3B1bCRBc3BlY3RvKQ0KYGBgDQoNCmBgYHtyfQ0KQ09MIDwtYXMudmVjdG9yKFByb3B1bCRDb2xvcikNCmBgYA0KDQpgYGB7cn0NCk9MTyA8LWFzLnZlY3RvcihQcm9wdWwkT2xvcikNCmBgYA0KDQpgYGB7cn0NClNBQiA8LWFzLnZlY3RvcihQcm9wdWwkU2Fib3IpDQpgYGANCg0KYGBge3J9DQpTVUxGQVRFUyA8LWFzLnZlY3RvcihQcm9wdWwkYHN1bGZhdG9zIChtZy9MKWApDQpgYGANCg0KYGBge3J9DQpTVUxGQVRFUzEgPi1hcy5udW1lcmljKFNVTEZBVEVTKQ0KYGBgDQoNCmBgYHtyfQ0KcGFyKG1mcm93PWMoMSwxKSkNCmBgYA0KDQpgYGB7cn0NCmJveHBsb3Qoc3BsaXQoU1VMRkFURVMxLEHDkSkseGxhYj0iQcOxbyIsIHlsYWI9IlN1bGZhdG9zIikgDQpgYGANCg0KYGBge3J9DQpib3hwbG90KHNwbGl0KFNVTEZBVEVTMSxZRUFSKSx4bGFiPSJUaXBvIGRlIGFndWEiLCB5bGFiPSJTdWxmYXRvcyIpDQpgYGANCg0KYGBge3J9DQpib3hwbG90KHNwbGl0KFNVTEZBVEVTMSxDT0QpLHhsYWI9IkNPRC5NdWVzdHJhIiwgeWxhYj0iU3VsZmF0b3MiKSANCmBgYA0KDQpgYGB7cn0NCmJveHBsb3Qoc3BsaXQoU1VMRkFURVMxLERJUykseGxhYj0iRGlzdHJpdG8iLCB5bGFiPSJTdWxmYXRvcyIpIA0KYGBgDQoNCmBgYHtyfQ0KYm94cGxvdChzcGxpdChTVUxGQVRFUzEsUFJPVikseGxhYj0iUHJvdmluY2lhIiwgeWxhYj0iU3VsZmF0b3MiKQ0KYGBgDQoNCmBgYHtyfQ0KYm94cGxvdChzcGxpdChTVUxGQVRFUzEsQVNQKSx4bGFiPSJBc3BlY3RvIiwgeWxhYj0iU3VsZmF0b3MiKQ0KYGBgDQoNCmBgYHtyfQ0KYm94cGxvdChzcGxpdChTVUxGQVRFUzEsQ09MKSx4bGFiPSJDb2xvciIsIHlsYWI9IlN1bGZhdG9zIikNCmBgYA0KDQpgYGB7cn0NCmJveHBsb3Qoc3BsaXQoU1VMRkFURVMxLE9MTykseGxhYj0iT2xvciIsIHlsYWI9IlN1bGZhdG9zIikNCmBgYA0KDQpgYGB7cn0NCmJveHBsb3Qoc3BsaXQoU1VMRkFURVMxLFNBQikseGxhYj0iU2Fib3IiLCB5bGFiPSJTdWxmYXRvcyIpDQpgYGANCg0KYGBge3J9DQpSYS5hb3Y8LWFvdihTVUxGQVRFUzEgfiBBw5ErVElQK0NPRCtESVMrUFJPVitBU1ArQ09MK09MTytTQUIpDQpgYGANCg0KYGBge3J9DQphbm92YShSYS5hb3YpDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3QoUmEuYW92LCBhZXMoQcORLCBUSVAsIENPRCwgTFVHLCBESVMsIFBST1YsIEFTUCwgQ09MLCBPTE8sIFNBQiwgZmlsbD1Bw5EsIFRJUCwgQ09ELCBMVUcsIERJUywgUFJPViwgQVNQLCBDT0wsIE9MTywgU0FCLCBjb2xvcj1QUk9WLCBUSVApKSArIGdlb21fYm94cGxvdCgpICsgZ2VvbV9qaXR0ZXIoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikgKyBnZW9tX3BvaW50KGNvbG9yID0gJ3JlZCcsIGZpbGwgPSAncmVkJywgc2l6ZT0gNSwgc2hhcGUgPSAxOCwgYWxwaGEgPSAwLjUpICsgZ2VvbV9qaXR0ZXIoc2l6ZSA9IDIsIGNvbG9yID0gJ2dyYXknLCBhbHBoYSA9IDAuOCkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lX2J3KCkNCmBgYA0KDQpgYGB7cn0NCkHDsW8gPC0gZ2dwbG90KFByb3B1bCwgYWVzKHggPSBBw5EsIHkgPSBTVUxGQVRFUzEsIGZpbGw9QcORKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NClRpcG8gPC0gZ2dwbG90KFByb3B1bCwgYWVzKHggPSBUSVAsIHkgPSBTVUxGQVRFUzEsIGZpbGw9VElQKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NCkNPRC4gPC0gZ2dwbG90KFByb3B1bCwgYWVzKHggPSBDT0QsIHkgPSBTVUxGQVRFUzEsIGZpbGw9Q09EKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NCkRpc3QgPC0gZ2dwbG90KFByb3B1bCwgYWVzKHggPSBESVMsIHkgPSBTVUxGQVRFUzEsIGZpbGw9RElTKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NClByb3ZpIDwtIGdncGxvdChQcm9wdWwsIGFlcyh4ID0gUFJPViwgeSA9IFNVTEZBVEVTMSwgZmlsbD1QUk9WKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NCkFzcGUgPC0gZ2dwbG90KFByb3B1bCwgYWVzKHggPSBBU1AsIHkgPSBTVUxGQVRFUzEsIGZpbGw9QVNQKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NCkNvbG8gPC0gZ2dwbG90KFByb3B1bCwgYWVzKHggPSBDT0wsIHkgPSBTVUxGQVRFUzEsIGZpbGw9Q09MKSkgKyBnZW9tX2JveHBsb3QoKSArIHRoZW1lKGxlZ2VuZC5wb3NpdGlvbiA9ICJub25lIikNCmBgYA0KDQpgYGB7cn0NCk9sb3IuIDwtIGdncGxvdChQcm9wdWwsIGFlcyh4ID0gT0xPLCB5ID0gU1VMRkFURVMxLCBmaWxsPU9MTykpICsgZ2VvbV9ib3hwbG90KCkgKyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpgYGANCg0KYGBge3J9DQpTYWJvIDwtIGdncGxvdChQcm9wdWwsIGFlcyh4ID0gU0FCLCB5ID0gU1VMRkFURVMxLCBmaWxsPVNBQikpICsgZ2VvbV9ib3hwbG90KCkgKyB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAibm9uZSIpDQpgYGANCg0KDQpgYGB7cn0NCmN2Lm1vZGVsKFJhLmFvdikNCmBgYA0KDQoNCg0K