In men and women combined:
data <- read.csv("dataforpylorigraph.csv", header = TRUE)
library(ggplot2)
library(grid)
data$birth.year_high <- as.numeric(data$birth.year_high)
#summary(data$birth.year_high)
data$total <- as.numeric(data$total)
#summary(data$total)
data$Author <- paste(data$Author..year.of.publication, ", ",
data$Research.Year)
data$Study.No <- factor(data$Study.No, ordered = TRUE)
data$Author <- factor(data$Author,
levels=c("Asaka, 1992 , 1990",
"Kikuchi, 1998 , 1996",
"Fujisawa, 1999 , 1974",
"Fujisawa, 1999 , 1984",
"Fujisawa, 1999 , 1994",
"Ogihara, 2000 , 1990",
"Yamagata, 2000 , 1988",
"Kurosawa, 2000 , 1995",
"Yamashita, 2001 , 1995",
"Fukuda, 2001 , 1986",
"Fukuda, 2001 , 1998",
"Kinjo, 2002 , 2000",
"Kato, 2003 , 2003",
"Kato, 2004 , 2004",
"Kikuchi, 2005 , 1988",
"Kawade, 2005 , 2000",
"Sasazuki, 2006 , 1990",
"Nakajima, 2010 , 1998",
"Nakajima, 2010 , 2005",
"Akamatsu, 2011 , 2007",
"Akamatsu, 2011 , 2008",
"Akamatsu, 2011 , 2009",
"Akamatsu, 2015 , 2010",
"Akamatsu, 2015 , 2011",
"Akamatsu, 2015 , 2012",
"Akamatsu, 2015 , 2013",
"Toyoda, 2012 , 2005",
"Tamura, 2012 , 2009",
"Kikuchi, 2013 , 1997",
"Kikuchi, 2013 , 2003",
"Urita, 2013 , 2002",
"Ueda, 2014 , 2005",
"Hirayama, 2014 , 2008",
"Okuda, 2014 , 2010",
"Watanabe, 2015 , 2010" ,
"Kamada, 2015 , 2011",
"Shiotani, 2008 , 2005",
"Yamaji, 2001 , 1997",
"Shibata, 2002 , 1993",
"Youn, 1998 , 1993",
"Naito, 2008 , 2002",
"Naito, 2008 , 2003",
"Shimatani, 2005 , 2000",
"Nobuta, 2004 , 1996",
"Kumagai, 1998 , 1986",
"Kumagai, 1998 , 1994",
"Reploge, 1996 , 1980",
"Fukao, 1993 , 1985",
"Shimoyama 2012 , 2005",
"Shimoyama 2014 , 2012",
"Nakao 2011 , 2003",
"Kawai 2010 , 2004",
"Fujimoto 2007 , 2002"))
data1 <- subset(data, !is.na(total))
ytitle <- expression(paste("Prevalence of ", italic("H.pylori"), " in Japanese (%)"))
graph1 <- ggplot(data1, aes(x = birth.year_high,
y = total,
color = Author, size = n_total)) +
geom_line(size = 0.8) +
geom_point() +
scale_x_continuous(breaks = seq(1900, 2005, 5)) +
scale_y_continuous(breaks = seq(0,100,5)) +
scale_colour_manual(name = "Author,\nPublish year,\nStudy year",
values = c("#CDC0B0", "#8B8378", "#7FFFD4", "#66CDAA", "#458B74", "#C1CDCD", "#838B8B", "#FFE4C4", "#CDB79E", "#8B7D6B", "#000000", "#0000FF", "#00008B", "#8A2BE2", "#A52A2A", "#FF4040", "#DEB887", "#5F9EA0", "#8EE5EE", "#53868B", "#7FFF00", "#458B00", "#D2691E", "#8B4513", "#EE6A50", "#8B3E2F", "#6495ED", "#8B8878", "#9A32CD", "#9BCD9B", "#DAA520", "#00688B", "#228B22", "#FF69B4", "#8B3A62", "#8DB6CD", "#CD8162", "#8B5F65", "#CD00CD", "#48D1CC", "#000080", "#6B8E23", "#8B2500", "#27408B", "#CD7054", "#8B8682", "#EE7942", "#8B8B00", "#FFFF00", "#EE82EE", "#C6E2FF", "#303030", "#6E7B8B",
"#D2691E"),
limits=c("Asaka, 1992 , 1990",
"Kikuchi, 1998 , 1996",
"Fujisawa, 1999 , 1974",
"Fujisawa, 1999 , 1984",
"Fujisawa, 1999 , 1994",
"Ogihara, 2000 , 1990",
"Yamagata, 2000 , 1988",
"Kurosawa, 2000 , 1995",
"Yamashita, 2001 , 1995",
"Fukuda, 2001 , 1986",
"Fukuda, 2001 , 1998",
"Kinjo, 2002 , 2000",
"Kato, 2003 , 2003",
"Kato, 2004 , 2004",
"Kikuchi, 2005 , 1988",
"Kawade, 2005 , 2000",
"Sasazuki, 2006 , 1990",
"Nakajima, 2010 , 1998",
"Nakajima, 2010 , 2005",
"Akamatsu, 2011 , 2007",
"Akamatsu, 2011 , 2008",
"Akamatsu, 2011 , 2009",
"Akamatsu, 2015 , 2010",
"Akamatsu, 2015 , 2011",
"Akamatsu, 2015 , 2012",
"Akamatsu, 2015 , 2013",
"Toyoda, 2012 , 2005",
"Tamura, 2012 , 2009",
"Kikuchi, 2013 , 1997",
"Kikuchi, 2013 , 2003",
"Urita, 2013 , 2002",
"Ueda, 2014 , 2005",
"Hirayama, 2014 , 2008",
"Okuda, 2014 , 2010",
"Watanabe, 2015 , 2010" ,
"Kamada, 2015 , 2011",
"Shiotani, 2008 , 2005",
"Yamaji, 2001 , 1997",
"Shibata, 2002 , 1993",
"Youn, 1998 , 1993",
"Naito, 2008 , 2002",
"Naito, 2008 , 2003",
"Shimatani, 2005 , 2000",
"Nobuta, 2004 , 1996",
"Kumagai, 1998 , 1986",
"Kumagai, 1998 , 1994",
"Reploge, 1996 , 1980",
"Fukao, 1993 , 1985",
"Shimoyama 2012 , 2005",
"Shimoyama 2014 , 2012",
"Nakao 2011 , 2003",
"Kawai 2010 , 2004",
"Fujimoto 2007 , 2002",
"loess"),
labels = c("Asaka,1992,1990",
"Kikuchi,1998,1996",
"Fujisawa,1999,1974",
"Fujisawa,1999,1984",
"Fujisawa,1999,1994",
"Ogihara,2000,1990",
"Yamagata,2000,1988",
"Kurosawa,2000,1995",
"Yamashita,2001,1995",
"Fukuda,2001,1986",
"Fukuda,2001,1998",
"Kinjo,2002,2000",
"Kato,2003,2003",
"Kato,2004,2004",
"Kikuchi,2005,1988",
"Kawade,2005,2000",
"Sasazuki,2006,1990",
"Nakajima,2010,1998",
"Nakajima,2010,2005",
"Akamatsu,2011,2007",
"Akamatsu,2011,2008",
"Akamatsu,2011,2009",
"Akamatsu,2011,2010",
"Akamatsu,2011,2011",
"Akamatsu,2011,2012",
"Akamatsu,2011,2013",
"Toyoda,2012,2005",
"Tamura,2012,2009",
"Kikuchi,2013,1997",
"Kikuchi,2013,2003",
"Urita,2013,2002",
"Ueda,2014,2005",
"Hirayama,2014,2008",
"Okuda,2014,2010",
"Watanabe,2015,2010" ,
"Kamada,2015,2011",
"Shiotani,2008,2005",
"Yamaji,2001,1997",
"Shibata,2002,1993",
"Youn,1998,1993",
"Naito,2008,2002",
"Naito,2008,2003",
"Shimatani,2005,2000",
"Nobuta,2004,1996",
"Kumagai,1998,1986",
"Kumagai,1998,1994",
"Reploge,1996,1980",
"Fukao,1993,1985",
"Shimoyama,2012,2005",
"Shimoyama,2014,2012",
"Nakao,2011,2003",
"Kawai,2010,2004",
"Fujimoto,2007,2002",
"TOTAL")) +
labs(x = "Birth Year",
y = ytitle) +
geom_smooth(aes(colour = "loess"), method = "loess") +
theme_bw() +
theme(legend.position = "bottom",
axis.text.x = element_text(size = rel(1.5)),
axis.text.y = element_text(size = rel(1.5)),
axis.title.x = element_text(size = rel(1.5)),
axis.title.y = element_text(size = rel(1.5)),
legend.text = element_text(size = rel(1.1)),
legend.title = element_text(size = rel(1.1))) +
annotate("segment", x = 1929, xend = 1938.4,
y = 20.36, yend = 44.36,
colour = "red", size = 1.2,
arrow=arrow(length = unit(0.15,"inches"))) +
annotate("segment", x = 1919, xend = 1928.4,
y = 40.3, yend = 51.3,
colour = "red", size = 1.2,
arrow = arrow(length = unit(0.15, "inches"))) +
annotate("text", x=1929, y=19, label = "Ueda, 2014, 2005",
fontface = "italic", size = 5) +
annotate("text", x=1919, y=39, label = "Watanabe, 2015, 2010",
fontface = "italic", size = 5) + theme(axis.line = element_line(colour = "bisque4",
size = 2, linetype = "solid"), panel.grid.major = element_line(colour = "lightsteelblue",
linetype = "dashed"), axis.text = element_text(size = 12,
face = "bold", colour = "gray0")) +labs(x = "Birth Year (from 1906 to 2003)") + theme(legend.text = element_text(size = 11,
colour = "darkblue"), legend.title = element_text(face = "bold"),
legend.key = element_rect(fill = NA,
colour = NA), legend.background = element_rect(fill = "whitesmoke",
size = 1), legend.direction = "horizontal") +
guides(size = guide_legend("Sample size"))
graph1

LS0tCnRpdGxlOiAiR3JhcGggMSAqSC5weWxvcmkqIHByZXZhbGVuY2UgaW4gSmFwYW5lc2UiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIEluIG1lbiBhbmQgd29tZW4gY29tYmluZWQ6IAoKCmBgYHtyLCBmaWcuaGVpZ2h0PTEyLCBmaWcud2lkdGg9MTQsIHdhcm5pbmc9RkFMU0V9CmRhdGEgPC0gcmVhZC5jc3YoImRhdGFmb3JweWxvcmlncmFwaC5jc3YiLCBoZWFkZXIgPSBUUlVFKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ3JpZCkKZGF0YSRiaXJ0aC55ZWFyX2hpZ2ggPC0gYXMubnVtZXJpYyhkYXRhJGJpcnRoLnllYXJfaGlnaCkKI3N1bW1hcnkoZGF0YSRiaXJ0aC55ZWFyX2hpZ2gpCmRhdGEkdG90YWwgPC0gYXMubnVtZXJpYyhkYXRhJHRvdGFsKQojc3VtbWFyeShkYXRhJHRvdGFsKQpkYXRhJEF1dGhvciA8LSBwYXN0ZShkYXRhJEF1dGhvci4ueWVhci5vZi5wdWJsaWNhdGlvbiwgIiwgIiwgCiAgICAgICAgICAgICAgICAgICAgIGRhdGEkUmVzZWFyY2guWWVhcikKZGF0YSRTdHVkeS5ObyA8LSBmYWN0b3IoZGF0YSRTdHVkeS5Obywgb3JkZXJlZCA9IFRSVUUpCmRhdGEkQXV0aG9yIDwtIGZhY3RvcihkYXRhJEF1dGhvciwKICAgICAgICAgICAgICAgICAgICAgIGxldmVscz1jKCJBc2FrYSwgMTk5MiAsICAxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAxOTk4ICwgIDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLCAxOTk5ICwgIDE5NzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLCAxOTk5ICwgIDE5ODQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLCAxOTk5ICwgIDE5OTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9naWhhcmEsIDIwMDAgLCAgMTk5MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYWdhdGEsIDIwMDAgLCAgMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3Vyb3Nhd2EsIDIwMDAgLCAgMTk5NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYXNoaXRhLCAyMDAxICwgIDE5OTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a3VkYSwgMjAwMSAsICAxOTg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWt1ZGEsIDIwMDEgLCAgMTk5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2luam8sIDIwMDIgLCAgMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F0bywgMjAwMyAsICAyMDAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXRvLCAyMDA0ICwgIDIwMDQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDIwMDUgLCAgMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F3YWRlLCAyMDA1ICwgIDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhc2F6dWtpLCAyMDA2ICwgIDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FqaW1hLCAyMDEwICwgIDE5OTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FqaW1hLCAyMDEwICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDExICwgIDIwMDciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDExICwgIDIwMDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDExICwgIDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRveW9kYSwgMjAxMiAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUYW11cmEsIDIwMTIgLCAgMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2lrdWNoaSwgMjAxMyAsICAxOTk3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAyMDEzICwgIDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVyaXRhLCAyMDEzICwgIDIwMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVlZGEsIDIwMTQgLCAgMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlyYXlhbWEsIDIwMTQgLCAgMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2t1ZGEsIDIwMTQgLCAgMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2F0YW5hYmUsIDIwMTUgLCAgMjAxMCIgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthbWFkYSwgMjAxNSAsICAyMDExIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGlvdGFuaSwgMjAwOCAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hamksIDIwMDEgLCAgMTk5NyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaWJhdGEsIDIwMDIgLCAgMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91biwgMTk5OCAsICAxOTkzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFpdG8sIDIwMDggLCAgMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFpdG8sIDIwMDggLCAgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpbWF0YW5pLCAyMDA1ICwgIDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vYnV0YSwgMjAwNCAsICAxOTk2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLdW1hZ2FpLCAxOTk4ICwgIDE5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkt1bWFnYWksIDE5OTggLCAgMTk5NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbG9nZSwgMTk5NiAsICAxOTgwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWthbywgMTk5MyAsICAxOTg1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltb3lhbWEgMjAxMiAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltb3lhbWEgMjAxNCAsICAyMDEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWthbyAyMDExICwgIDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthd2FpIDIwMTAgLCAgMjAwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaW1vdG8gMjAwNyAsICAyMDAyIikpCgoKZGF0YTEgPC0gc3Vic2V0KGRhdGEsICFpcy5uYSh0b3RhbCkpCgp5dGl0bGUgPC0gZXhwcmVzc2lvbihwYXN0ZSgiUHJldmFsZW5jZSBvZiAiLCBpdGFsaWMoIkgucHlsb3JpIiksICIgaW4gSmFwYW5lc2UgKCUpIikpCmdyYXBoMSA8LSBnZ3Bsb3QoZGF0YTEsIGFlcyh4ID0gYmlydGgueWVhcl9oaWdoLCAKICAgICAgICAgICAgICAgICAgeSA9IHRvdGFsLAogICAgICAgICAgICAgICAgICBjb2xvciA9IEF1dGhvciwgc2l6ZSA9IG5fdG90YWwpKSArIAogIGdlb21fbGluZShzaXplID0gMC44KSArIAogIGdlb21fcG9pbnQoKSArIAogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMTkwMCwgMjAwNSwgNSkpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEwMCw1KSkgKwogIHNjYWxlX2NvbG91cl9tYW51YWwobmFtZSA9ICJBdXRob3IsXG5QdWJsaXNoIHllYXIsXG5TdHVkeSB5ZWFyIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoIiNDREMwQjAiLCAiIzhCODM3OCIsICIjN0ZGRkQ0IiwgIiM2NkNEQUEiLCAiIzQ1OEI3NCIsICIjQzFDRENEIiwgIiM4MzhCOEIiLCAiI0ZGRTRDNCIsICIjQ0RCNzlFIiwgIiM4QjdENkIiLCAiIzAwMDAwMCIsICIjMDAwMEZGIiwgIiMwMDAwOEIiLCAiIzhBMkJFMiIsICIjQTUyQTJBIiwgIiNGRjQwNDAiLCAiI0RFQjg4NyIsICIjNUY5RUEwIiwgIiM4RUU1RUUiLCAiIzUzODY4QiIsICIjN0ZGRjAwIiwgIiM0NThCMDAiLCAiI0QyNjkxRSIsICIjOEI0NTEzIiwgIiNFRTZBNTAiLCAiIzhCM0UyRiIsICIjNjQ5NUVEIiwgIiM4Qjg4NzgiLCAiIzlBMzJDRCIsICIjOUJDRDlCIiwgIiNEQUE1MjAiLCAiIzAwNjg4QiIsICIjMjI4QjIyIiwgIiNGRjY5QjQiLCAiIzhCM0E2MiIsICIjOERCNkNEIiwgIiNDRDgxNjIiLCAiIzhCNUY2NSIsICIjQ0QwMENEIiwgIiM0OEQxQ0MiLCAiIzAwMDA4MCIsICIjNkI4RTIzIiwgIiM4QjI1MDAiLCAiIzI3NDA4QiIsICIjQ0Q3MDU0IiwgIiM4Qjg2ODIiLCAiI0VFNzk0MiIsICIjOEI4QjAwIiwgIiNGRkZGMDAiLCAiI0VFODJFRSIsICIjQzZFMkZGIiwgIiMzMDMwMzAiLCAiIzZFN0I4QiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjRDI2OTFFIiksIAogICAgICAgICAgICAgICAgICAgICAgbGltaXRzPWMoIkFzYWthLCAxOTkyICwgIDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDE5OTggLCAgMTk5NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsIDE5OTkgLCAgMTk3NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsIDE5OTkgLCAgMTk4NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsIDE5OTkgLCAgMTk5NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2dpaGFyYSwgMjAwMCAsICAxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hZ2F0YSwgMjAwMCAsICAxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLdXJvc2F3YSwgMjAwMCAsICAxOTk1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hc2hpdGEsIDIwMDEgLCAgMTk5NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVrdWRhLCAyMDAxICwgIDE5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a3VkYSwgMjAwMSAsICAxOTk4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaW5qbywgMjAwMiAsICAyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXRvLCAyMDAzICwgIDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthdG8sIDIwMDQgLCAgMjAwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2lrdWNoaSwgMjAwNSAsICAxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXdhZGUsIDIwMDUgLCAgMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FzYXp1a2ksIDIwMDYgLCAgMTk5MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFrYWppbWEsIDIwMTAgLCAgMTk5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFrYWppbWEsIDIwMTAgLCAgMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTEgLCAgMjAwNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTEgLCAgMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTEgLCAgMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG95b2RhLCAyMDEyICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhbXVyYSwgMjAxMiAsICAyMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAyMDEzICwgIDE5OTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDIwMTMgLCAgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXJpdGEsIDIwMTMgLCAgMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWVkYSwgMjAxNCAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaXJheWFtYSwgMjAxNCAsICAyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPa3VkYSwgMjAxNCAsICAyMDEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXRhbmFiZSwgMjAxNSAsICAyMDEwIiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2FtYWRhLCAyMDE1ICwgIDIwMTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLCAyMDA4ICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllhbWFqaSwgMjAwMSAsICAxOTk3IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpYmF0YSwgMjAwMiAsICAxOTkzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3VuLCAxOTk4ICwgIDE5OTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWl0bywgMjAwOCAsICAyMDAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWl0bywgMjAwOCAsICAyMDAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltYXRhbmksIDIwMDUgLCAgMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9idXRhLCAyMDA0ICwgIDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkt1bWFnYWksIDE5OTggLCAgMTk4NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3VtYWdhaSwgMTk5OCAsICAxOTk0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBsb2dlLCAxOTk2ICwgIDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a2FvLCAxOTkzICwgIDE5ODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSAyMDEyICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSAyMDE0ICwgIDIwMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FvIDIwMTEgLCAgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F3YWkgMjAxMCAsICAyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWppbW90byAyMDA3ICwgIDIwMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZXNzIiksIAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQXNha2EsMTk5MiwxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksMTk5OCwxOTk2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLDE5OTksMTk3NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWppc2F3YSwxOTk5LDE5ODQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsMTk5OSwxOTk0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9naWhhcmEsMjAwMCwxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllhbWFnYXRhLDIwMDAsMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLdXJvc2F3YSwyMDAwLDE5OTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYXNoaXRhLDIwMDEsMTk5NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWt1ZGEsMjAwMSwxOTg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a3VkYSwyMDAxLDE5OTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2luam8sMjAwMiwyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthdG8sMjAwMywyMDAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthdG8sMjAwNCwyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksMjAwNSwxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthd2FkZSwyMDA1LDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FzYXp1a2ksMjAwNiwxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FqaW1hLDIwMTAsMTk5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWthamltYSwyMDEwLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsMjAxMSwyMDA3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LDIwMTEsMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBa2FtYXRzdSwyMDExLDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsMjAxMSwyMDEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LDIwMTEsMjAxMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBa2FtYXRzdSwyMDExLDIwMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsMjAxMSwyMDEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRveW9kYSwyMDEyLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFtdXJhLDIwMTIsMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLDIwMTMsMTk5NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLDIwMTMsMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcml0YSwyMDEzLDIwMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWVkYSwyMDE0LDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlyYXlhbWEsMjAxNCwyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9rdWRhLDIwMTQsMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXRhbmFiZSwyMDE1LDIwMTAiICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthbWFkYSwyMDE1LDIwMTEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLDIwMDgsMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hamksMjAwMSwxOTk3IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGliYXRhLDIwMDIsMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3VuLDE5OTgsMTk5MyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFpdG8sMjAwOCwyMDAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5haXRvLDIwMDgsMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltYXRhbmksMjAwNSwyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vYnV0YSwyMDA0LDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3VtYWdhaSwxOTk4LDE5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3VtYWdhaSwxOTk4LDE5OTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbG9nZSwxOTk2LDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVrYW8sMTk5MywxOTg1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSwyMDEyLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpbW95YW1hLDIwMTQsMjAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWthbywyMDExLDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F3YWksMjAxMCwyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amltb3RvLDIwMDcsMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUT1RBTCIpKSArIAogIGxhYnMoeCA9ICJCaXJ0aCBZZWFyIiwgCiAgICAgICB5ID0geXRpdGxlKSArIAogIGdlb21fc21vb3RoKGFlcyhjb2xvdXIgPSAibG9lc3MiKSwgbWV0aG9kID0gImxvZXNzIikgKyAKICB0aGVtZV9idygpICsgICAKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuNSkpLCAKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMSkpLCAKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjEpKSkgKyAKICBhbm5vdGF0ZSgic2VnbWVudCIsIHggPSAxOTI5LCB4ZW5kID0gMTkzOC40LAogICAgICAgICAgIHkgPSAyMC4zNiwgeWVuZCA9IDQ0LjM2LAogICAgICAgICAgIGNvbG91ciA9ICJyZWQiLCBzaXplID0gMS4yLAogICAgICAgICAgIGFycm93PWFycm93KGxlbmd0aCA9IHVuaXQoMC4xNSwiaW5jaGVzIikpKSArIAogIGFubm90YXRlKCJzZWdtZW50IiwgeCA9IDE5MTksIHhlbmQgPSAxOTI4LjQsIAogICAgICAgICAgIHkgPSA0MC4zLCB5ZW5kID0gNTEuMywgCiAgICAgICAgICAgY29sb3VyID0gInJlZCIsIHNpemUgPSAxLjIsIAogICAgICAgICAgIGFycm93ID0gYXJyb3cobGVuZ3RoID0gdW5pdCgwLjE1LCAiaW5jaGVzIikpKSArIAogIGFubm90YXRlKCJ0ZXh0IiwgeD0xOTI5LCB5PTE5LCBsYWJlbCA9ICJVZWRhLCAyMDE0LCAyMDA1IiwKICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiLCBzaXplID0gNSkgKyAKICBhbm5vdGF0ZSgidGV4dCIsIHg9MTkxOSwgeT0zOSwgbGFiZWwgPSAiV2F0YW5hYmUsIDIwMTUsIDIwMTAiLAogICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIsIHNpemUgPSA1KSArIHRoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmlzcXVlNCIsIAogICAgc2l6ZSA9IDIsIGxpbmV0eXBlID0gInNvbGlkIiksIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImxpZ2h0c3RlZWxibHVlIiwgCiAgICBsaW5ldHlwZSA9ICJkYXNoZWQiKSwgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgCiAgICBmYWNlID0gImJvbGQiLCBjb2xvdXIgPSAiZ3JheTAiKSkgK2xhYnMoeCA9ICJCaXJ0aCBZZWFyIChmcm9tIDE5MDYgdG8gMjAwMykiKSArIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMSwgCiAgICBjb2xvdXIgPSAiZGFya2JsdWUiKSwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpLCAKICAgIGxlZ2VuZC5rZXkgPSBlbGVtZW50X3JlY3QoZmlsbCA9IE5BLCAKICAgICAgICBjb2xvdXIgPSBOQSksIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAid2hpdGVzbW9rZSIsIAogICAgICAgIHNpemUgPSAxKSwgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikgKyAKICBndWlkZXMoc2l6ZSA9IGd1aWRlX2xlZ2VuZCgiU2FtcGxlIHNpemUiKSkKZ3JhcGgxCgoKYGBgCgojIyBCdWJibGUgZ3JhcGggd2l0aCA0MCBwYXBlcnM6CgoKYGBge3IsIGZpZy5oZWlnaHQ9MTIsIGZpZy53aWR0aD0xNCwgcmVzdWx0cyA9ICdhc2lzJywgY29tbWVudCA9IE5BLCBjYWNoZSA9IEYsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnJlcXVpcmUockNoYXJ0cykKaDEgPC0gaFBsb3QoeCA9ICJiaXJ0aC55ZWFyX2hpZ2giLCB5ID0gInRvdGFsIiwKICAgICAgICAgICAgZGF0YSA9IGRhdGExLAogICAgICAgICAgICB0eXBlID0gYygiYnViYmxlIiksICMic3BsaW5lIgogICAgICAgICAgICBncm91cCA9IGMoIkF1dGhvciIpLAogICAgICAgICAgICBzaXplID0gIm5fdG90YWwiCiAgICAgICApCmgxJHRpdGxlKHRleHQgPSAiUHJldmFsZW5jZSBvZiA8aT5ILnB5bG9yaTwvaT4gaW4gSmFwYW5lc2UiLCBhbGlnbiA9ICJjZW50ZXIiKQpoMSRjaGFydCh6b29tVHlwZSA9ICJ4eSIpCmgxJHlBeGlzKG1pbj0wLCBtYXggPSAxMDAsIAogICAgICAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJQZXJzZW50YWdlICglKSIpLCB0aWNrSW50ZXJ2YWw9IDEwLCAKICAgICAgICAgc2NhbGFibGUgPSBUUlVFKQpoMSR4QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICJCaXJ0aCB5ZWFyICgxOTA2IC0gMjAwMykiKSkgIywgCiAgICAgICAgICNmb3JtYXR0ZXIgPSAiZnVuY3Rpb24gKCkgewogICAgICAgICAjcmV0dXJuIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KHRoaXMudmFsdWUsIDAsICcnLCAnJyk7fSAvLyBSZW1vdmUgdGhlIHRob3VzYW5kcyBzZXA/IikKaDEkbGVnZW5kKHRpdGxlID0gbGlzdCh0ZXh0ID0gIkF1dGhvciwgcHVibGlzaCB5ZWFyLCBzdHVkeSB5ZWFyIikpCiNoMSRzZXJpZXMobmFtZSA9ICJMT1dFU1MgTElORSIsIHJlZ3Jlc3Npb24gPSBUUlVFLCB0eXBlID0gImxvZXNzIikKaDEkc2V0KGhlaWdodCA9IDcwMCkKCmgxJGV4cG9ydGluZyhlbmFibGVkID0gVCkKCmgxJHNob3coJ2lubGluZScsIGluY2x1ZGVfYXNzZXRzID0gVFJVRSwgc3RhbmRhbG9uZSA9IFRSVUUpCmBgYAoKCiMjIDUgcGFwZXJzIGRpcmVjdGx5IHJlcG9ydGVkIHByZXZhbGVuY2VzIGJ5IGJpcnRoIGNvaG9ydHM6IAoKYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xNCwgd2FybmluZz1GQUxTRX0KZGF0YSRiaXJ0aF95ZWFyX2RhdGEgPC0gYXMubG9naWNhbChkYXRhJGJpcnRoX3llYXJfZGF0YSkKZGF0YV9iaXJ0aCA8LSBzdWJzZXQoZGF0YSwgYmlydGhfeWVhcl9kYXRhID09IFRSVUUpCmRhdGFfYmlydGgkQXV0aG9yIDwtIGRyb3BsZXZlbHMoZGF0YV9iaXJ0aCRBdXRob3IpCmxpYnJhcnkocGxvdGx5KQpnIDwtIGdncGxvdChkYXRhPWRhdGFfYmlydGgpICsgICAKICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gdG90YWwsIGNvbG91ciA9IEF1dGhvciwgCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gbl90b3RhbCkpICsgIAogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0b3RhbCwgY29sb3VyID0gQXV0aG9yKSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKyAKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDE5MDAsIDIwMDUsIDUpKSArIAogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxMDAsNSkpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiQXV0aG9yLFxuUHVibGlzaCB5ZWFyLFxuU3R1ZHkgeWVhciIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjMTA0RThCIiwgIiNDRDlCMUQiLCAiIzhCMDA4QiIsICIjRkY2OUI0IiwgIiM0OEQxQ0MiLCAiIzhCOEIwMCIpLCAKICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cz1jKCJVZWRhLCAyMDE0ICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldhdGFuYWJlLCAyMDE1ICwgIDIwMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1hdGFuaSwgMjAwNSAsICAyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBsb2dlLCAxOTk2ICwgIDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSAyMDEyICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZXNzIiksIAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiVWVkYSwyMDE0LDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldhdGFuYWJlLDIwMTUsMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpbWF0YW5pLDIwMDUsMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbG9nZSwxOTk2LDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSwyMDEyLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRPVEFMIikpICsgCiAgeWxhYigiUHJldmFsZW5jZSBvZiA8aT5ILnB5bG9yaTwvaT4gaW4gSmFwYW5lc2UgKCUpIikgKyAKICB4bGFiKCJCaXJ0aCBZZWFyIikgKyAKICBnZW9tX3Ntb290aChtYXBwaW5nID0gYWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHRvdGFsLGNvbG91ciA9ICJsb2VzcyIpLCBtZXRob2QgPSAibG9lc3MiKSArIAogIHRoZW1lX2J3KCkgKwogIHRoZW1lKCAgICAgICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMykpKQojZ2dwbG90bHkoZykKCmxheW91dChnZ3Bsb3RseShnKSwgbGVnZW5kPWxpc3Qob3JpZW50YXRpb24gPSAiaCIpKSAKCmBgYAoK