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

Bubble graph with 40 papers:

require(rCharts)
h1 <- hPlot(x = "birth.year_high", y = "total",
            data = data1,
            type = c("bubble"), #"spline"
            group = c("Author"),
            size = "n_total"
       )
h1$title(text = "Prevalence of <i>H.pylori</i> in Japanese", align = "center")
h1$chart(zoomType = "xy")
h1$yAxis(min=0, max = 100, 
         title = list(text = "Persentage (%)"), tickInterval= 10, 
         scalable = TRUE)
h1$xAxis(title = list(text = "Birth year (1906 - 2003)")) #, 
         #formatter = "function () {
         #return Highcharts.numberFormat(this.value, 0, '', '');} // Remove the thousands sep?")
h1$legend(title = list(text = "Author, publish year, study year"))
#h1$series(name = "LOWESS LINE", regression = TRUE, type = "loess")
h1$set(height = 700)
h1$exporting(enabled = T)
h1$show('inline', include_assets = TRUE, standalone = TRUE)

5 papers directly reported prevalences by birth cohorts:

data$birth_year_data <- as.logical(data$birth_year_data)
data_birth <- subset(data, birth_year_data == TRUE)
data_birth$Author <- droplevels(data_birth$Author)
library(plotly)
g <- ggplot(data=data_birth) +   
  geom_point(mapping=aes(x = birth.year_high,
                         y = total, colour = Author, 
                         size = n_total)) +  
  geom_line(mapping = aes(x = birth.year_high, 
                          y = total, colour = Author), linetype = "dashed") + 
  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("#104E8B", "#CD9B1D", "#8B008B", "#FF69B4", "#48D1CC", "#8B8B00"), 
                      limits=c("Ueda, 2014 ,  2005",
                               "Watanabe, 2015 ,  2010",
                               "Shimatani, 2005 ,  2000",
                               "Reploge, 1996 ,  1980",
                               "Shimoyama 2012 ,  2005",
                               "loess"), 
                      labels = c("Ueda,2014,2005",
                               "Watanabe,2015,2010",
                               "Shimatani,2005,2000",
                               "Reploge,1996,1980",
                               "Shimoyama,2012,2005",
                               "TOTAL")) + 
  ylab("Prevalence of <i>H.pylori</i> in Japanese (%)") + 
  xlab("Birth Year") + 
  geom_smooth(mapping = aes(x = birth.year_high, 
                            y = total,colour = "loess"), method = "loess") + 
  theme_bw() +
  theme(               legend.position="none",
                       axis.text.x = element_text(size = rel(1.3)), 
                       axis.text.y = element_text(size = rel(1.3)), 
                       axis.title.x = element_text(size = rel(1.5)), 
                       axis.title.y = element_text(size = rel(1.3)))
#ggplotly(g)
layout(ggplotly(g), legend=list(orientation = "h")) 
LS0tCnRpdGxlOiAiR3JhcGggMSAqSC5weWxvcmkqIHByZXZhbGVuY2UgaW4gSmFwYW5lc2UiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KCiMjIEluIG1lbiBhbmQgd29tZW4gY29tYmluZWQ6IAoKCmBgYHtyLCBmaWcuaGVpZ2h0PTEyLCBmaWcud2lkdGg9MTQsIHdhcm5pbmc9RkFMU0V9CmRhdGEgPC0gcmVhZC5jc3YoImRhdGFmb3JweWxvcmlncmFwaC5jc3YiLCBoZWFkZXIgPSBUUlVFKQpsaWJyYXJ5KGdncGxvdDIpCmxpYnJhcnkoZ3JpZCkKZGF0YSRiaXJ0aC55ZWFyX2hpZ2ggPC0gYXMubnVtZXJpYyhkYXRhJGJpcnRoLnllYXJfaGlnaCkKI3N1bW1hcnkoZGF0YSRiaXJ0aC55ZWFyX2hpZ2gpCmRhdGEkdG90YWwgPC0gYXMubnVtZXJpYyhkYXRhJHRvdGFsKQojc3VtbWFyeShkYXRhJHRvdGFsKQpkYXRhJEF1dGhvciA8LSBwYXN0ZShkYXRhJEF1dGhvci4ueWVhci5vZi5wdWJsaWNhdGlvbiwgIiwgIiwgCiAgICAgICAgICAgICAgICAgICAgIGRhdGEkUmVzZWFyY2guWWVhcikKZGF0YSRTdHVkeS5ObyA8LSBmYWN0b3IoZGF0YSRTdHVkeS5Obywgb3JkZXJlZCA9IFRSVUUpCmRhdGEkQXV0aG9yIDwtIGZhY3RvcihkYXRhJEF1dGhvciwKICAgICAgICAgICAgICAgICAgICAgIGxldmVscz1jKCJBc2FrYSwgMTk5MiAsICAxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAxOTk4ICwgIDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLCAxOTk5ICwgIDE5NzQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLCAxOTk5ICwgIDE5ODQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLCAxOTk5ICwgIDE5OTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9naWhhcmEsIDIwMDAgLCAgMTk5MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYWdhdGEsIDIwMDAgLCAgMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3Vyb3Nhd2EsIDIwMDAgLCAgMTk5NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYXNoaXRhLCAyMDAxICwgIDE5OTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a3VkYSwgMjAwMSAsICAxOTg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWt1ZGEsIDIwMDEgLCAgMTk5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2luam8sIDIwMDIgLCAgMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F0bywgMjAwMyAsICAyMDAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXRvLCAyMDA0ICwgIDIwMDQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDIwMDUgLCAgMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F3YWRlLCAyMDA1ICwgIDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhc2F6dWtpLCAyMDA2ICwgIDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FqaW1hLCAyMDEwICwgIDE5OTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FqaW1hLCAyMDEwICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDExICwgIDIwMDciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDExICwgIDIwMDgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDExICwgIDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LCAyMDE1ICwgIDIwMTMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRveW9kYSwgMjAxMiAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUYW11cmEsIDIwMTIgLCAgMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2lrdWNoaSwgMjAxMyAsICAxOTk3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAyMDEzICwgIDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVyaXRhLCAyMDEzICwgIDIwMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVlZGEsIDIwMTQgLCAgMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlyYXlhbWEsIDIwMTQgLCAgMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2t1ZGEsIDIwMTQgLCAgMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV2F0YW5hYmUsIDIwMTUgLCAgMjAxMCIgLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthbWFkYSwgMjAxNSAsICAyMDExIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGlvdGFuaSwgMjAwOCAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hamksIDIwMDEgLCAgMTk5NyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaWJhdGEsIDIwMDIgLCAgMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91biwgMTk5OCAsICAxOTkzIiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFpdG8sIDIwMDggLCAgMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFpdG8sIDIwMDggLCAgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpbWF0YW5pLCAyMDA1ICwgIDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vYnV0YSwgMjAwNCAsICAxOTk2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLdW1hZ2FpLCAxOTk4ICwgIDE5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkt1bWFnYWksIDE5OTggLCAgMTk5NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbG9nZSwgMTk5NiAsICAxOTgwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWthbywgMTk5MyAsICAxOTg1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltb3lhbWEgMjAxMiAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltb3lhbWEgMjAxNCAsICAyMDEyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWthbyAyMDExICwgIDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthd2FpIDIwMTAgLCAgMjAwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaW1vdG8gMjAwNyAsICAyMDAyIikpCgoKZGF0YTEgPC0gc3Vic2V0KGRhdGEsICFpcy5uYSh0b3RhbCkpCgp5dGl0bGUgPC0gZXhwcmVzc2lvbihwYXN0ZSgiUHJldmFsZW5jZSBvZiAiLCBpdGFsaWMoIkgucHlsb3JpIiksICIgaW4gSmFwYW5lc2UgKCUpIikpCmdyYXBoMSA8LSBnZ3Bsb3QoZGF0YTEsIGFlcyh4ID0gYmlydGgueWVhcl9oaWdoLCAKICAgICAgICAgICAgICAgICAgeSA9IHRvdGFsLAogICAgICAgICAgICAgICAgICBjb2xvciA9IEF1dGhvciwgc2l6ZSA9IG5fdG90YWwpKSArIAogIGdlb21fbGluZShzaXplID0gMC44KSArIAogIGdlb21fcG9pbnQoKSArIAogIHNjYWxlX3hfY29udGludW91cyhicmVha3MgPSBzZXEoMTkwMCwgMjAwNSwgNSkpICsgCiAgc2NhbGVfeV9jb250aW51b3VzKGJyZWFrcyA9IHNlcSgwLDEwMCw1KSkgKwogIHNjYWxlX2NvbG91cl9tYW51YWwobmFtZSA9ICJBdXRob3IsXG5QdWJsaXNoIHllYXIsXG5TdHVkeSB5ZWFyIiwKICAgICAgICAgICAgICAgICAgICAgIHZhbHVlcyA9IGMoIiNDREMwQjAiLCAiIzhCODM3OCIsICIjN0ZGRkQ0IiwgIiM2NkNEQUEiLCAiIzQ1OEI3NCIsICIjQzFDRENEIiwgIiM4MzhCOEIiLCAiI0ZGRTRDNCIsICIjQ0RCNzlFIiwgIiM4QjdENkIiLCAiIzAwMDAwMCIsICIjMDAwMEZGIiwgIiMwMDAwOEIiLCAiIzhBMkJFMiIsICIjQTUyQTJBIiwgIiNGRjQwNDAiLCAiI0RFQjg4NyIsICIjNUY5RUEwIiwgIiM4RUU1RUUiLCAiIzUzODY4QiIsICIjN0ZGRjAwIiwgIiM0NThCMDAiLCAiI0QyNjkxRSIsICIjOEI0NTEzIiwgIiNFRTZBNTAiLCAiIzhCM0UyRiIsICIjNjQ5NUVEIiwgIiM4Qjg4NzgiLCAiIzlBMzJDRCIsICIjOUJDRDlCIiwgIiNEQUE1MjAiLCAiIzAwNjg4QiIsICIjMjI4QjIyIiwgIiNGRjY5QjQiLCAiIzhCM0E2MiIsICIjOERCNkNEIiwgIiNDRDgxNjIiLCAiIzhCNUY2NSIsICIjQ0QwMENEIiwgIiM0OEQxQ0MiLCAiIzAwMDA4MCIsICIjNkI4RTIzIiwgIiM4QjI1MDAiLCAiIzI3NDA4QiIsICIjQ0Q3MDU0IiwgIiM4Qjg2ODIiLCAiI0VFNzk0MiIsICIjOEI4QjAwIiwgIiNGRkZGMDAiLCAiI0VFODJFRSIsICIjQzZFMkZGIiwgIiMzMDMwMzAiLCAiIzZFN0I4QiIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIjRDI2OTFFIiksIAogICAgICAgICAgICAgICAgICAgICAgbGltaXRzPWMoIkFzYWthLCAxOTkyICwgIDE5OTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDE5OTggLCAgMTk5NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsIDE5OTkgLCAgMTk3NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsIDE5OTkgLCAgMTk4NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsIDE5OTkgLCAgMTk5NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT2dpaGFyYSwgMjAwMCAsICAxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hZ2F0YSwgMjAwMCAsICAxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLdXJvc2F3YSwgMjAwMCAsICAxOTk1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hc2hpdGEsIDIwMDEgLCAgMTk5NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVrdWRhLCAyMDAxICwgIDE5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a3VkYSwgMjAwMSAsICAxOTk4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaW5qbywgMjAwMiAsICAyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXRvLCAyMDAzICwgIDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthdG8sIDIwMDQgLCAgMjAwNCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2lrdWNoaSwgMjAwNSAsICAxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLYXdhZGUsIDIwMDUgLCAgMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FzYXp1a2ksIDIwMDYgLCAgMTk5MCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFrYWppbWEsIDIwMTAgLCAgMTk5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFrYWppbWEsIDIwMTAgLCAgMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTEgLCAgMjAwNyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTEgLCAgMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTEgLCAgMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsIDIwMTUgLCAgMjAxMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG95b2RhLCAyMDEyICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRhbXVyYSwgMjAxMiAsICAyMDA5IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLCAyMDEzICwgIDE5OTciLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksIDIwMTMgLCAgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXJpdGEsIDIwMTMgLCAgMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWVkYSwgMjAxNCAsICAyMDA1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIaXJheWFtYSwgMjAxNCAsICAyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPa3VkYSwgMjAxNCAsICAyMDEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXRhbmFiZSwgMjAxNSAsICAyMDEwIiAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2FtYWRhLCAyMDE1ICwgIDIwMTEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLCAyMDA4ICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllhbWFqaSwgMjAwMSAsICAxOTk3IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpYmF0YSwgMjAwMiAsICAxOTkzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3VuLCAxOTk4ICwgIDE5OTMiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWl0bywgMjAwOCAsICAyMDAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWl0bywgMjAwOCAsICAyMDAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltYXRhbmksIDIwMDUgLCAgMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm9idXRhLCAyMDA0ICwgIDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkt1bWFnYWksIDE5OTggLCAgMTk4NiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3VtYWdhaSwgMTk5OCAsICAxOTk0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBsb2dlLCAxOTk2ICwgIDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a2FvLCAxOTkzICwgIDE5ODUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSAyMDEyICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSAyMDE0ICwgIDIwMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FvIDIwMTEgLCAgMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F3YWkgMjAxMCAsICAyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWppbW90byAyMDA3ICwgIDIwMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZXNzIiksIAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiQXNha2EsMTk5MiwxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksMTk5OCwxOTk2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amlzYXdhLDE5OTksMTk3NCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWppc2F3YSwxOTk5LDE5ODQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVqaXNhd2EsMTk5OSwxOTk0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9naWhhcmEsMjAwMCwxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIllhbWFnYXRhLDIwMDAsMTk4OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLdXJvc2F3YSwyMDAwLDE5OTUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWWFtYXNoaXRhLDIwMDEsMTk5NSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGdWt1ZGEsMjAwMSwxOTg2IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1a3VkYSwyMDAxLDE5OTgiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2luam8sMjAwMiwyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthdG8sMjAwMywyMDAzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthdG8sMjAwNCwyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIktpa3VjaGksMjAwNSwxOTg4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthd2FkZSwyMDA1LDIwMDAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2FzYXp1a2ksMjAwNiwxOTkwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5ha2FqaW1hLDIwMTAsMTk5OCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWthamltYSwyMDEwLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsMjAxMSwyMDA3IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LDIwMTEsMjAwOCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBa2FtYXRzdSwyMDExLDIwMDkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsMjAxMSwyMDEwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFrYW1hdHN1LDIwMTEsMjAxMSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBa2FtYXRzdSwyMDExLDIwMTIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWthbWF0c3UsMjAxMSwyMDEzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRveW9kYSwyMDEyLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGFtdXJhLDIwMTIsMjAwOSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLDIwMTMsMTk5NyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLaWt1Y2hpLDIwMTMsMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVcml0YSwyMDEzLDIwMDIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVWVkYSwyMDE0LDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSGlyYXlhbWEsMjAxNCwyMDA4IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9rdWRhLDIwMTQsMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXRhbmFiZSwyMDE1LDIwMTAiICwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkthbWFkYSwyMDE1LDIwMTEiLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW90YW5pLDIwMDgsMjAwNSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZYW1hamksMjAwMSwxOTk3IiwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGliYXRhLDIwMDIsMTk5MyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJZb3VuLDE5OTgsMTk5MyIsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmFpdG8sMjAwOCwyMDAyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5haXRvLDIwMDgsMjAwMyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTaGltYXRhbmksMjAwNSwyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5vYnV0YSwyMDA0LDE5OTYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3VtYWdhaSwxOTk4LDE5ODYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS3VtYWdhaSwxOTk4LDE5OTQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbG9nZSwxOTk2LDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVrYW8sMTk5MywxOTg1IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSwyMDEyLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpbW95YW1hLDIwMTQsMjAxMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOYWthbywyMDExLDIwMDMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiS2F3YWksMjAxMCwyMDA0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1amltb3RvLDIwMDcsMjAwMiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUT1RBTCIpKSArIAogIGxhYnMoeCA9ICJCaXJ0aCBZZWFyIiwgCiAgICAgICB5ID0geXRpdGxlKSArIAogIGdlb21fc21vb3RoKGFlcyhjb2xvdXIgPSAibG9lc3MiKSwgbWV0aG9kID0gImxvZXNzIikgKyAKICB0aGVtZV9idygpICsgICAKICB0aGVtZShsZWdlbmQucG9zaXRpb24gPSAiYm90dG9tIiwgCiAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjUpKSwgCiAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuNSkpLCAKICAgICAgICBsZWdlbmQudGV4dCA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMSkpLCAKICAgICAgICBsZWdlbmQudGl0bGUgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjEpKSkgKyAKICBhbm5vdGF0ZSgic2VnbWVudCIsIHggPSAxOTI5LCB4ZW5kID0gMTkzOC40LAogICAgICAgICAgIHkgPSAyMC4zNiwgeWVuZCA9IDQ0LjM2LAogICAgICAgICAgIGNvbG91ciA9ICJyZWQiLCBzaXplID0gMS4yLAogICAgICAgICAgIGFycm93PWFycm93KGxlbmd0aCA9IHVuaXQoMC4xNSwiaW5jaGVzIikpKSArIAogIGFubm90YXRlKCJzZWdtZW50IiwgeCA9IDE5MTksIHhlbmQgPSAxOTI4LjQsIAogICAgICAgICAgIHkgPSA0MC4zLCB5ZW5kID0gNTEuMywgCiAgICAgICAgICAgY29sb3VyID0gInJlZCIsIHNpemUgPSAxLjIsIAogICAgICAgICAgIGFycm93ID0gYXJyb3cobGVuZ3RoID0gdW5pdCgwLjE1LCAiaW5jaGVzIikpKSArIAogIGFubm90YXRlKCJ0ZXh0IiwgeD0xOTI5LCB5PTE5LCBsYWJlbCA9ICJVZWRhLCAyMDE0LCAyMDA1IiwKICAgICAgICAgICBmb250ZmFjZSA9ICJpdGFsaWMiLCBzaXplID0gNSkgKyAKICBhbm5vdGF0ZSgidGV4dCIsIHg9MTkxOSwgeT0zOSwgbGFiZWwgPSAiV2F0YW5hYmUsIDIwMTUsIDIwMTAiLAogICAgICAgICAgIGZvbnRmYWNlID0gIml0YWxpYyIsIHNpemUgPSA1KSArIHRoZW1lKGF4aXMubGluZSA9IGVsZW1lbnRfbGluZShjb2xvdXIgPSAiYmlzcXVlNCIsIAogICAgc2l6ZSA9IDIsIGxpbmV0eXBlID0gInNvbGlkIiksIHBhbmVsLmdyaWQubWFqb3IgPSBlbGVtZW50X2xpbmUoY29sb3VyID0gImxpZ2h0c3RlZWxibHVlIiwgCiAgICBsaW5ldHlwZSA9ICJkYXNoZWQiKSwgYXhpcy50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMiwgCiAgICBmYWNlID0gImJvbGQiLCBjb2xvdXIgPSAiZ3JheTAiKSkgK2xhYnMoeCA9ICJCaXJ0aCBZZWFyIChmcm9tIDE5MDYgdG8gMjAwMykiKSArIHRoZW1lKGxlZ2VuZC50ZXh0ID0gZWxlbWVudF90ZXh0KHNpemUgPSAxMSwgCiAgICBjb2xvdXIgPSAiZGFya2JsdWUiKSwgbGVnZW5kLnRpdGxlID0gZWxlbWVudF90ZXh0KGZhY2UgPSAiYm9sZCIpLCAKICAgIGxlZ2VuZC5rZXkgPSBlbGVtZW50X3JlY3QoZmlsbCA9IE5BLCAKICAgICAgICBjb2xvdXIgPSBOQSksIGxlZ2VuZC5iYWNrZ3JvdW5kID0gZWxlbWVudF9yZWN0KGZpbGwgPSAid2hpdGVzbW9rZSIsIAogICAgICAgIHNpemUgPSAxKSwgbGVnZW5kLmRpcmVjdGlvbiA9ICJob3Jpem9udGFsIikgKyAKICBndWlkZXMoc2l6ZSA9IGd1aWRlX2xlZ2VuZCgiU2FtcGxlIHNpemUiKSkKZ3JhcGgxCgoKYGBgCgojIyBCdWJibGUgZ3JhcGggd2l0aCA0MCBwYXBlcnM6CgoKYGBge3IsIGZpZy5oZWlnaHQ9MTIsIGZpZy53aWR0aD0xNCwgcmVzdWx0cyA9ICdhc2lzJywgY29tbWVudCA9IE5BLCBjYWNoZSA9IEYsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0V9CnJlcXVpcmUockNoYXJ0cykKaDEgPC0gaFBsb3QoeCA9ICJiaXJ0aC55ZWFyX2hpZ2giLCB5ID0gInRvdGFsIiwKICAgICAgICAgICAgZGF0YSA9IGRhdGExLAogICAgICAgICAgICB0eXBlID0gYygiYnViYmxlIiksICMic3BsaW5lIgogICAgICAgICAgICBncm91cCA9IGMoIkF1dGhvciIpLAogICAgICAgICAgICBzaXplID0gIm5fdG90YWwiCiAgICAgICApCmgxJHRpdGxlKHRleHQgPSAiUHJldmFsZW5jZSBvZiA8aT5ILnB5bG9yaTwvaT4gaW4gSmFwYW5lc2UiLCBhbGlnbiA9ICJjZW50ZXIiKQpoMSRjaGFydCh6b29tVHlwZSA9ICJ4eSIpCmgxJHlBeGlzKG1pbj0wLCBtYXggPSAxMDAsIAogICAgICAgICB0aXRsZSA9IGxpc3QodGV4dCA9ICJQZXJzZW50YWdlICglKSIpLCB0aWNrSW50ZXJ2YWw9IDEwLCAKICAgICAgICAgc2NhbGFibGUgPSBUUlVFKQpoMSR4QXhpcyh0aXRsZSA9IGxpc3QodGV4dCA9ICJCaXJ0aCB5ZWFyICgxOTA2IC0gMjAwMykiKSkgIywgCiAgICAgICAgICNmb3JtYXR0ZXIgPSAiZnVuY3Rpb24gKCkgewogICAgICAgICAjcmV0dXJuIEhpZ2hjaGFydHMubnVtYmVyRm9ybWF0KHRoaXMudmFsdWUsIDAsICcnLCAnJyk7fSAvLyBSZW1vdmUgdGhlIHRob3VzYW5kcyBzZXA/IikKaDEkbGVnZW5kKHRpdGxlID0gbGlzdCh0ZXh0ID0gIkF1dGhvciwgcHVibGlzaCB5ZWFyLCBzdHVkeSB5ZWFyIikpCiNoMSRzZXJpZXMobmFtZSA9ICJMT1dFU1MgTElORSIsIHJlZ3Jlc3Npb24gPSBUUlVFLCB0eXBlID0gImxvZXNzIikKaDEkc2V0KGhlaWdodCA9IDcwMCkKCmgxJGV4cG9ydGluZyhlbmFibGVkID0gVCkKCmgxJHNob3coJ2lubGluZScsIGluY2x1ZGVfYXNzZXRzID0gVFJVRSwgc3RhbmRhbG9uZSA9IFRSVUUpCmBgYAoKCiMjIDUgcGFwZXJzIGRpcmVjdGx5IHJlcG9ydGVkIHByZXZhbGVuY2VzIGJ5IGJpcnRoIGNvaG9ydHM6IAoKYGBge3IsIGZpZy5oZWlnaHQ9MTAsIGZpZy53aWR0aD0xNCwgd2FybmluZz1GQUxTRX0KZGF0YSRiaXJ0aF95ZWFyX2RhdGEgPC0gYXMubG9naWNhbChkYXRhJGJpcnRoX3llYXJfZGF0YSkKZGF0YV9iaXJ0aCA8LSBzdWJzZXQoZGF0YSwgYmlydGhfeWVhcl9kYXRhID09IFRSVUUpCmRhdGFfYmlydGgkQXV0aG9yIDwtIGRyb3BsZXZlbHMoZGF0YV9iaXJ0aCRBdXRob3IpCmxpYnJhcnkocGxvdGx5KQpnIDwtIGdncGxvdChkYXRhPWRhdGFfYmlydGgpICsgICAKICBnZW9tX3BvaW50KG1hcHBpbmc9YWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsCiAgICAgICAgICAgICAgICAgICAgICAgICB5ID0gdG90YWwsIGNvbG91ciA9IEF1dGhvciwgCiAgICAgICAgICAgICAgICAgICAgICAgICBzaXplID0gbl90b3RhbCkpICsgIAogIGdlb21fbGluZShtYXBwaW5nID0gYWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsIAogICAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB0b3RhbCwgY29sb3VyID0gQXV0aG9yKSwgbGluZXR5cGUgPSAiZGFzaGVkIikgKyAKICBzY2FsZV94X2NvbnRpbnVvdXMoYnJlYWtzID0gc2VxKDE5MDAsIDIwMDUsIDUpKSArIAogIHNjYWxlX3lfY29udGludW91cyhicmVha3MgPSBzZXEoMCwxMDAsNSkpICsKICBzY2FsZV9jb2xvdXJfbWFudWFsKG5hbWUgPSAiQXV0aG9yLFxuUHVibGlzaCB5ZWFyLFxuU3R1ZHkgeWVhciIsCiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZXMgPSBjKCIjMTA0RThCIiwgIiNDRDlCMUQiLCAiIzhCMDA4QiIsICIjRkY2OUI0IiwgIiM0OEQxQ0MiLCAiIzhCOEIwMCIpLCAKICAgICAgICAgICAgICAgICAgICAgIGxpbWl0cz1jKCJVZWRhLCAyMDE0ICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldhdGFuYWJlLCAyMDE1ICwgIDIwMTAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1hdGFuaSwgMjAwNSAsICAyMDAwIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXBsb2dlLCAxOTk2ICwgIDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSAyMDEyICwgIDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvZXNzIiksIAogICAgICAgICAgICAgICAgICAgICAgbGFiZWxzID0gYygiVWVkYSwyMDE0LDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldhdGFuYWJlLDIwMTUsMjAxMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2hpbWF0YW5pLDIwMDUsMjAwMCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVwbG9nZSwxOTk2LDE5ODAiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNoaW1veWFtYSwyMDEyLDIwMDUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRPVEFMIikpICsgCiAgeWxhYigiUHJldmFsZW5jZSBvZiA8aT5ILnB5bG9yaTwvaT4gaW4gSmFwYW5lc2UgKCUpIikgKyAKICB4bGFiKCJCaXJ0aCBZZWFyIikgKyAKICBnZW9tX3Ntb290aChtYXBwaW5nID0gYWVzKHggPSBiaXJ0aC55ZWFyX2hpZ2gsIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgeSA9IHRvdGFsLGNvbG91ciA9ICJsb2VzcyIpLCBtZXRob2QgPSAibG9lc3MiKSArIAogIHRoZW1lX2J3KCkgKwogIHRoZW1lKCAgICAgICAgICAgICAgIGxlZ2VuZC5wb3NpdGlvbj0ibm9uZSIsCiAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0LnggPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50ZXh0LnkgPSBlbGVtZW50X3RleHQoc2l6ZSA9IHJlbCgxLjMpKSwgCiAgICAgICAgICAgICAgICAgICAgICAgYXhpcy50aXRsZS54ID0gZWxlbWVudF90ZXh0KHNpemUgPSByZWwoMS41KSksIAogICAgICAgICAgICAgICAgICAgICAgIGF4aXMudGl0bGUueSA9IGVsZW1lbnRfdGV4dChzaXplID0gcmVsKDEuMykpKQojZ2dwbG90bHkoZykKCmxheW91dChnZ3Bsb3RseShnKSwgbGVnZW5kPWxpc3Qob3JpZW50YXRpb24gPSAiaCIpKSAKCmBgYAoK