1. Marginal association
all$Year=as.factor(all$Year)
par(mfrow=c(1,2))
for(i in c(1,3,5:7,12:13)){
y1=car::logit(all$carbon/100)
y2=all$carbon
x=all[,i]
# adding r square and p-value
a = boxplot(y1~x,outline=F,xlab=colnames(all)[i],col=i,ylab = "logit(carbon/100)",ylim=c(min(y1),max(y1)+1))
text(c(1:nlevels(x)) , a$stats[nrow(a$stats) , ]+1, paste0("p < ", round(summary(lm(y1~x))$coef[,4], 3)))
b = boxplot(y2~x,outline=F,xlab=colnames(all)[i],ylim=c(min(y2),max(y2)+2),col=i+1,ylab = "carbon")
text(c(1:nlevels(x)) , b$stats[nrow(b$stats) , ]+1, paste0("p < ", round(summary(lm(y2~x))$coef[,4], 3)))
}







library(ggplot2)
library(ggpubr)
p1<-ggscatter(all, x = "pH", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "pH", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,
ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "Elevation", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "Elevation", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "ARI_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "ARI_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "DPOL_S1", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "DPOL_S1", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "IRECI_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "IRECI_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "NDVI_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "NDVI_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "NDVIdiff_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "NDVIdiff_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "NDWI1_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "NDWI1_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "NDWIdiff_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "NDWIdiff_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "REIP_S2", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "REIP_S2", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "SWI_LiDAR", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "SWI_LiDAR", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "TPI250_LIDAR", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "TPI250_LIDAR", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "TPI500_LiDAR", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "TPI500_LiDAR", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "TPI750_LiDAR", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "TPI750_LiDAR", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "TRI_LIDAR", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "TRI_LIDAR", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "VBF_LIDAR", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "VBF_LIDAR", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "VH_S1", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "VH_S1", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "VHdiff_S1", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "VHdiff_S1", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "VV_S1", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "VV_S1", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

p1<-ggscatter(all, x = "VVdiff_S1", y = "carbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
p2<-ggscatter(all, x = "VVdiff_S1", y = "logitcarbon",
palette = "jco",size = 3, alpha = 0.6,color = 'lightblue',
add = "reg.line",
add.params = list(color = "blue", fill = "lightgray"),
conf.int = TRUE # Add confidence interval
)+ stat_cor(method = "pearson",label.x.npc = "center")
figure <- ggarrange(p1,p2,ncol = 2, nrow = 1)
figure

LS0tDQp0aXRsZTogIlNUQVQgNTkwIHByb2plY3QgcHJlc2VudGF0aW9uIg0Kb3V0cHV0OiBodG1sX25vdGVib29rDQogIA0KLS0tDQoNCiMxLiBNYXJnaW5hbCBhc3NvY2lhdGlvbg0KYGBge3J9DQphbGwkWWVhcj1hcy5mYWN0b3IoYWxsJFllYXIpDQpwYXIobWZyb3c9YygxLDIpKQ0KZm9yKGkgaW4gYygxLDMsNTo3LDEyOjEzKSl7DQogIHkxPWNhcjo6bG9naXQoYWxsJGNhcmJvbi8xMDApDQogIHkyPWFsbCRjYXJib24NCiAgeD1hbGxbLGldDQogICMgYWRkaW5nIHIgc3F1YXJlIGFuZCBwLXZhbHVlDQogIGEgPSBib3hwbG90KHkxfngsb3V0bGluZT1GLHhsYWI9Y29sbmFtZXMoYWxsKVtpXSxjb2w9aSx5bGFiID0gImxvZ2l0KGNhcmJvbi8xMDApIix5bGltPWMobWluKHkxKSxtYXgoeTEpKzEpKQ0KICB0ZXh0KGMoMTpubGV2ZWxzKHgpKSAsIGEkc3RhdHNbbnJvdyhhJHN0YXRzKSAsIF0rMSwgcGFzdGUwKCJwIDwgIiwgcm91bmQoc3VtbWFyeShsbSh5MX54KSkkY29lZlssNF0sIDMpKSkNCiAgYiA9IGJveHBsb3QoeTJ+eCxvdXRsaW5lPUYseGxhYj1jb2xuYW1lcyhhbGwpW2ldLHlsaW09YyhtaW4oeTIpLG1heCh5MikrMiksY29sPWkrMSx5bGFiID0gImNhcmJvbiIpDQogIHRleHQoYygxOm5sZXZlbHMoeCkpICwgYiRzdGF0c1tucm93KGIkc3RhdHMpICwgXSsxLCBwYXN0ZTAoInAgPCAiLCByb3VuZChzdW1tYXJ5KGxtKHkyfngpKSRjb2VmWyw0XSwgMykpKQ0KfQ0KDQoNCmxpYnJhcnkoZ2dwbG90MikNCmxpYnJhcnkoZ2dwdWJyKSANCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAicEgiLCB5ID0gImNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KcDI8LWdnc2NhdHRlcihhbGwsIHggPSAicEgiLCB5ID0gImxvZ2l0Y2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpmaWd1cmUgPC0gZ2dhcnJhbmdlKHAxLHAyLA0KICAgICAgICAgICAgICAgICAgICBuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIkVsZXZhdGlvbiIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJFbGV2YXRpb24iLCB5ID0gImxvZ2l0Y2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpmaWd1cmUgPC0gZ2dhcnJhbmdlKHAxLHAyLG5jb2wgPSAyLCBucm93ID0gMSkNCmZpZ3VyZQ0KDQpwMTwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJBUklfUzIiLCB5ID0gImNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KcDI8LWdnc2NhdHRlcihhbGwsIHggPSAiQVJJX1MyIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIkRQT0xfUzEiLCB5ID0gImNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KcDI8LWdnc2NhdHRlcihhbGwsIHggPSAiRFBPTF9TMSIsIHkgPSAibG9naXRjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCmZpZ3VyZSA8LSBnZ2FycmFuZ2UocDEscDIsbmNvbCA9IDIsIG5yb3cgPSAxKQ0KZmlndXJlDQoNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIklSRUNJX1MyIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIklSRUNJX1MyIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAiTkRWSV9TMiIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJORFZJX1MyIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAiTkRWSWRpZmZfUzIiLCB5ID0gImNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KcDI8LWdnc2NhdHRlcihhbGwsIHggPSAiTkRWSWRpZmZfUzIiLCB5ID0gImxvZ2l0Y2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpmaWd1cmUgPC0gZ2dhcnJhbmdlKHAxLHAyLG5jb2wgPSAyLCBucm93ID0gMSkNCmZpZ3VyZQ0KDQpwMTwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJORFdJMV9TMiIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJORFdJMV9TMiIsIHkgPSAibG9naXRjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCmZpZ3VyZSA8LSBnZ2FycmFuZ2UocDEscDIsbmNvbCA9IDIsIG5yb3cgPSAxKQ0KZmlndXJlDQoNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIk5EV0lkaWZmX1MyIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIk5EV0lkaWZmX1MyIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAiUkVJUF9TMiIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJSRUlQX1MyIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAiU1dJX0xpREFSIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlNXSV9MaURBUiIsIHkgPSAibG9naXRjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCmZpZ3VyZSA8LSBnZ2FycmFuZ2UocDEscDIsbmNvbCA9IDIsIG5yb3cgPSAxKQ0KZmlndXJlDQoNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlRQSTI1MF9MSURBUiIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJUUEkyNTBfTElEQVIiLCB5ID0gImxvZ2l0Y2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpmaWd1cmUgPC0gZ2dhcnJhbmdlKHAxLHAyLG5jb2wgPSAyLCBucm93ID0gMSkNCmZpZ3VyZQ0KDQpwMTwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJUUEk1MDBfTGlEQVIiLCB5ID0gImNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KcDI8LWdnc2NhdHRlcihhbGwsIHggPSAiVFBJNTAwX0xpREFSIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlRQSTc1MF9MaURBUiIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJUUEk3NTBfTGlEQVIiLCB5ID0gImxvZ2l0Y2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpmaWd1cmUgPC0gZ2dhcnJhbmdlKHAxLHAyLG5jb2wgPSAyLCBucm93ID0gMSkNCmZpZ3VyZQ0KDQpwMTwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJUUklfTElEQVIiLCB5ID0gImNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KcDI8LWdnc2NhdHRlcihhbGwsIHggPSAiVFJJX0xJREFSIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAiVkJGX0xJREFSIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZCRl9MSURBUiIsIHkgPSAibG9naXRjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCmZpZ3VyZSA8LSBnZ2FycmFuZ2UocDEscDIsbmNvbCA9IDIsIG5yb3cgPSAxKQ0KZmlndXJlDQoNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZIX1MxIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZIX1MxIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCg0KcDE8LWdnc2NhdHRlcihhbGwsIHggPSAiVkhkaWZmX1MxIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZIZGlmZl9TMSIsIHkgPSAibG9naXRjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCmZpZ3VyZSA8LSBnZ2FycmFuZ2UocDEscDIsbmNvbCA9IDIsIG5yb3cgPSAxKQ0KZmlndXJlDQoNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZWX1MxIiwgeSA9ICJjYXJib24iLA0KICAgICAgICAgICAgICBwYWxldHRlID0gImpjbyIsc2l6ZSA9IDMsIGFscGhhID0gMC42LGNvbG9yID0gJ2xpZ2h0Ymx1ZScsDQogICAgICAgICAgICAgIGFkZCA9ICJyZWcubGluZSIsIA0KICAgICAgICAgICAgICBhZGQucGFyYW1zID0gbGlzdChjb2xvciA9ICJibHVlIiwgZmlsbCA9ICJsaWdodGdyYXkiKSwgDQogICAgICAgICAgICAgIGNvbmYuaW50ID0gVFJVRSAjIEFkZCBjb25maWRlbmNlIGludGVydmFsDQopKyBzdGF0X2NvcihtZXRob2QgPSAicGVhcnNvbiIsbGFiZWwueC5ucGMgPSAiY2VudGVyIikNCnAyPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZWX1MxIiwgeSA9ICJsb2dpdGNhcmJvbiIsDQogICAgICAgICAgICAgIHBhbGV0dGUgPSAiamNvIixzaXplID0gMywgYWxwaGEgPSAwLjYsY29sb3IgPSAnbGlnaHRibHVlJywNCiAgICAgICAgICAgICAgYWRkID0gInJlZy5saW5lIiwgDQogICAgICAgICAgICAgIGFkZC5wYXJhbXMgPSBsaXN0KGNvbG9yID0gImJsdWUiLCBmaWxsID0gImxpZ2h0Z3JheSIpLCANCiAgICAgICAgICAgICAgY29uZi5pbnQgPSBUUlVFICMgQWRkIGNvbmZpZGVuY2UgaW50ZXJ2YWwNCikrIHN0YXRfY29yKG1ldGhvZCA9ICJwZWFyc29uIixsYWJlbC54Lm5wYyA9ICJjZW50ZXIiKQ0KZmlndXJlIDwtIGdnYXJyYW5nZShwMSxwMixuY29sID0gMiwgbnJvdyA9IDEpDQpmaWd1cmUNCnAxPC1nZ3NjYXR0ZXIoYWxsLCB4ID0gIlZWZGlmZl9TMSIsIHkgPSAiY2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpwMjwtZ2dzY2F0dGVyKGFsbCwgeCA9ICJWVmRpZmZfUzEiLCB5ID0gImxvZ2l0Y2FyYm9uIiwNCiAgICAgICAgICAgICAgcGFsZXR0ZSA9ICJqY28iLHNpemUgPSAzLCBhbHBoYSA9IDAuNixjb2xvciA9ICdsaWdodGJsdWUnLA0KICAgICAgICAgICAgICBhZGQgPSAicmVnLmxpbmUiLCANCiAgICAgICAgICAgICAgYWRkLnBhcmFtcyA9IGxpc3QoY29sb3IgPSAiYmx1ZSIsIGZpbGwgPSAibGlnaHRncmF5IiksIA0KICAgICAgICAgICAgICBjb25mLmludCA9IFRSVUUgIyBBZGQgY29uZmlkZW5jZSBpbnRlcnZhbA0KKSsgc3RhdF9jb3IobWV0aG9kID0gInBlYXJzb24iLGxhYmVsLngubnBjID0gImNlbnRlciIpDQpmaWd1cmUgPC0gZ2dhcnJhbmdlKHAxLHAyLG5jb2wgPSAyLCBucm93ID0gMSkNCmZpZ3VyZQ0KDQpgYGANCiMgTW9kZWxpbmcNCiMjIDEuIGxpbmVhciByZWdyZXNzaW9uIG1vZGVsOiBsb2dpdChjYXJib24pfi4NCmBgYHtyfQ0KbG0xID0gbG0obG9naXQoY2FyYm9uLzEwMCl+IFllYXIrbnV0cmllbnQrc3BlY2llcytzdGFnZStwb3NpdGlvbitkaXJlY3Rpb24rTGFuZGNvdmVyKw0KICAgICAgICAgICBwSCtFbGV2YXRpb24rQVJJX1MyK0RQT0xfUzErSVJFQ0lfUzIrDQogICAgICAgICAgIE5EVklfUzIrTkRWSWRpZmZfUzIrTkRXSTFfUzIrTkRXSWRpZmZfUzIrUkVJUF9TMisNCiAgICAgIFNXSV9MaURBUitgVFBJMjUwX0xJREFSYCArYFRQSTUwMF9MaURBUmArYFRQSTc1MF9MaURBUmArYFRSSV9MSURBUmAgICAgICAgK2BWQkZfTElEQVJgICArYFZIX1MxYCtgVkhkaWZmX1MxYCArYFZWX1MxYCArYFZWZGlmZl9TMWANCiAgICAgICxkYXRhID0gYWxsMSkNCg0Kc3VtbWFyeShsbTEpJGFkai5yLnNxdWFyZWQNCmBgYA0KDQojIyAyLiBHZW5lcmFsaXplZCBBZGRpdGl2ZSBNb2RlbDogbG9naXQoY2FyYm9uKX4uDQpgYGB7cn0NCmdhbSA9IGdhbShsb2dpdChjYXJib24pLzEwMH4gcyhwSCkrcyhFbGV2YXRpb24pK3MoQVJJX1MyKStzKERQT0xfUzEpK3MoSVJFQ0lfUzIpK3MoTkRWSV9TMikrcyhORFZJZGlmZl9TMikrcyhORFdJMV9TMikrcyhORFdJZGlmZl9TMikrcyhSRUlQX1MyKSsNCiAgICAgICAgICAgIHMoU1dJX0xpREFSKStzKFRQSTI1MF9MSURBUikgK3MoVFBJNTAwX0xpREFSKStzKFRQSTc1MF9MaURBUikrcyhUUklfTElEQVIpK3MoVkJGX0xJREFSKSAgK3MoVkhfUzEpK3MoVkhkaWZmX1MxKSArcyhWVl9TMSkgK3MoVlZkaWZmX1MxKSArcyhWVmRpZmZfUzEpK1llYXIrbnV0cmllbnQrc3BlY2llcytzdGFnZStwb3NpdGlvbitkaXJlY3Rpb24rTGFuZGNvdmVyLGRhdGE9YWxsMSkNCg0Kc3VtbWFyeShnYW0pJHIuc3ENCmBgYA0KDQojIyAzLiBQcmluY2lwYWwgQ29tcG9uZW50IEFuYWx5c2lzDQpgYGB7cn0NCnBjYS5vdXQgPSBwcmNvbXAoYWxsMVssYygxMSwxNDozMildLGNlbnRlciA9IFQsIHNjYWxlPVQgKQ0KcHZlID0xMDAqIHBjYS5vdXQkc2RldiBeMi8gc3VtKHBjYS5vdXQkc2RldiBeMikNCnBhcihtZnJvdyA9YygxLDIpKQ0KcGxvdChwdmUgLCB0eXBlID0ibyIsIHlsYWI9IlBWRSAiLCB4bGFiPSIgUHJpbmNpcGFsIENvbXBvbmVudCAiLGNvbCA9ImJsdWUiKQ0KcGxvdChjdW1zdW0ocHZlKSwgdHlwZT0ibyIsIHlsYWIgPSIgQ3VtdWxhdGl2ZSBQVkUiLCB4bGFiPSINClByaW5jaXBhbCBDb21wb25lbnQgIiwgY29sID0iYnJvd24zICIpDQpgYGANCmBgYHtyfQ0KI3BjYSBzY29yZQ0KZ2FtMSA9IGdhbShsb2dpdChjYXJib24pLzEwMCB+IHMoUEMxKStzKFBDMikrcyhQQzMpK3MoUEM0KStzKFBDNSkrcyhQQzYpK3MoUEM3KStzKFBDOCkrcyhQQzkpK3MoUEMxMCkrcyhQQzExKStzKFBDMTIpK3MoUEMxMykrcyhQQzE0KStzKFBDMTUpK1llYXIrbnV0cmllbnQrc3BlY2llcytzdGFnZStwb3NpdGlvbitkaXJlY3Rpb24rTGFuZGNvdmVyLGRhdGE9Y2JpbmQocGNhLm91dCR4LGFsbDEpKQ0Kc3VtbWFyeShnYW0xKSRyLnNxDQpgYGANCg0KYGBge3J9DQojcGNyOiBudW1lcmljYWwgdmFyaWFibGUgb25seQ0Kc2V0LnNlZWQoMikNCnBjci5maXQ9cGNyKGxvZ2l0Y2FyYm9ufi4sZGF0YT1hbGwxWyxjKDExLDE0OjMzKV0gLHNjYWxlPVRSVUUsY2VudGVyPVQpDQp2YWxpZGF0aW9ucGxvdChwY3IuZml0ICx2YWwudHlwZT0iUjIiKQ0Kc3VtbWFyeShwY3IuZml0KQ0KYGBgDQoNCmBgYHtyfQ0KI3BsczogbnVtZXJpY2FsIHZhcmlhYmxlIG9ubHkNCnBscy5maXQ9cGxzcihsb2dpdGNhcmJvbn4uLCBkYXRhPWFsbDFbLGMoMTEsMTQ6MzMpXSAsc2NhbGU9VCAsY2VudGVyPVQpDQpzdW1tYXJ5KHBscy5maXQpDQp2YWxpZGF0aW9ucGxvdChwbHMuZml0ICx2YWwudHlwZT0iUjIiKQ0KYGBgDQoNCg0KIyMgNC4gUmFuZG9tIEZvcmVzdCANCmBgYHtyfQ0KbGlicmFyeShyYW5kb21Gb3Jlc3QpDQpiYWcuY2FyYm9uID1yYW5kb21Gb3Jlc3QobG9naXRjYXJib25+LixkYXRhPWRhdGExLG10cnk9NixpbXBvcnRhbmNlPVQsIHByb3hpbWl0eT1UUlVFKQ0KdmFySW1wUGxvdChiYWcuY2FyYm9uKQ0KcGxvdChiYWcuY2FyYm9uKQ0KcHJpbnQoYmFnLmNhcmJvbikNCmBgYA0KIyA1LiBTVk0NCmBgYHtyfQ0KbGlicmFyeShlMTA3MSkgDQpzdm1tb2RlbDwtc3ZtKGxvZ2l0Y2FyYm9ufi4sIGRhdGExLGNvc3Q9MTAwLGdhbW1hPTAuNSkNCnByZWRzdm08LSBwcmVkaWN0KHN2bW1vZGVsLCBkYXRhMSkNClIyIDwtIDEgLSAoc3VtKChhbGwxJGxvZ2l0Y2FyYm9uLXByZWRzdm0pXjIpL3N1bSgoYWxsMSRsb2dpdGNhcmJvbi1tZWFuKGFsbDEkbG9naXRjYXJib24pKV4yKSkNCnN2bW1vZGVsDQpSMg0KYGBgDQoNCg==