PD9waHAKLy8gSW)jbHVkZSBDb2)(aWcgQ29uc3RhbnRzC(luY2x1ZGUgKCJjb2)(aWcucGhwIik7CgovLyBJb(Ns$WRlIFN1cGVy$XNlciBDb2)z$GFu$HMKaW)jbHVkZSAoI(1lbWJlcnMvaW)jbHVkZS9zYWxlcy)waHAiKTsKCi8vIFJlcXVpc(UgR(lsZXMKLy9pb(Ns$WRlICgiZnVuY3Rpb2)zLnBocCIpOwovL2luY2x1ZGUgKCJtZW1iZXJzL2luY2x1ZGUvZnVuY3Rpb2)zLnBocCIpOwoKCiRkZWZh$Wx0X3Byb2R1Y3Q9InNob3V0X21hc3Rlcl9wc(8iOwoKJHJlY29tbWVuZGVkPSRfU0VSVkVSWy$SRVFVRVNUX1VSSS$$Owokc(Vjb21tZW)kZWQgPSBleHBsb2RlKCcvJywgJHJlY29tbWVuZGVkKTsgCgokbnVtX3Bhc(FtID0gY291bnQoJHJlY29tbWVuZGVkKTsgC(ZvcigkaSA9IDA7ICRpIDwgJG)1bV9wYXJhbTsgJGkrKykgeyAKJGtleSA9ICRyZWNvbW1lb(RlZFskaV07CglpZiAoJGtleT09c(Vjb21tZW)kZWQpewoJJGkrKzsKCSRwc(9k$WN0ID0gJHJlY29tbWVuZGVkWyRpXTsKCX0KfQoKJHNob3J0X2)hbWUgPSBleHBsb2RlKCcuJywgJHByb2R1Y3QpOyAKJHNob3J0X2)hbWUgPSAkc2hvcnRfb(FtZVswXTsKCgppZiAoKCRzaG9y$F9uYW1lIT0iIik(Jigkc2hvcnRfb(FtZSE9I(luZGV4Iik(Jigkc2hvcnRfb(FtZSE9JGRlZ(F1bHRfcHJvZHVj$CkpewokYWRtaW)faW)(bz1teXNxbF9(ZXRjaF9hcnJheShteXNxbF9leGVj$XRlKCJzZWxlY3QgKiB(c(9tIHNiX2FkbWluIikpOwokZGVhbGVyX2tleT0kYWRtaW)faW)(b1swXTsKJGRlZ(F1bHRfY(94ZXNfYWxsb3$lZD0kYWRtaW)faW)(b1sxXTsKJGxpb(tfY29sb3I9JGFkbWluX2luZ(9bMl07CiRsaW$o$F9jb2xvcj0kYWRtaW)faW)(b1szXTsKJGRhc(tfY29sb3I9JGFkbWluX2luZ(9bNF07CiR0aGVtZT0kYWRtaW)faW)(b1s0XTsKJHByb2$yYW1fb(FtZT0kYWRtaW)faW)(b1s1XTsKJHByb2$yYW1fY(94X2)hbWU9JGFkbWluX2luZ(9bNl07CiRhZ(ZpbGlh$GVfbGluaz0kYWRtaW)faW)(b1s3XTsKJHJlc2VsbGVyX2xpb(s9JGFkbWluX2luZ(9bOF07CglpZiAoJGF(Z(lsaWF0ZV9saW)rPT0iT(8iKXsKCSRwc(9k$WN0ID0gIiI7Cgkkb(9fcHJvZHVj$HM9IlJlc291c(NlcyBhc(UgZGVhY3Rp$(F0ZWQuPHA+SWYgeW91IGFyZSB0aGUg$2VibWFz$GVyIG9(ICIuJHByb2$yYW1fb(FtZS4iIHlv$SBjYW4gYWN0aXZh$GUgeW91ciByZXNv$XJjZXMgaW4geW91ciA8YSBoc(V(PVwiIi4kc2l0ZV9hZGRyZXNzLiIvbWVtY(Vycy9pb(RleC)waHA/Y29tbWFuZD1zZXR0aW)ncyNhZ(ZpbGlh$GVcIiB0YXJnZXQ9XCJfY(xhb(tcIiB0aXRsZT1cIkFkbWluIFNl$HRpb($zXCI+YWRtaW4gc2V0$GluZ3M8L2E+LiI7CgoJfQp9CgppZiAoKCRzaG9y$F9uYW1lPT0iIil8fCgkc2hvcnRfb(FtZT09I(luZGV4Iil8fCgkc2hvcnRfb(FtZT09JGRlZ(F1bHRfcHJvZHVj$CkpewovL2l(ICgkc2hvcnRfb(FtZT09JGRlZ(F1bHRfcHJvZHVj$Cl7CiRhZG1pbl9pb(ZvPW1)c3FsX2Zl$GNoX2Fyc(F)KG1)c3FsX2V4ZWN1$GUoInNlbGVj$CAqIGZyb20gc2JfYWRtaW4iKSk7CiRkZWFsZXJfa2V)PSRhZG1pbl9pb(ZvWzB$OwokcHJvZ3JhbV9uYW1lPSRhZG1pbl9pb(ZvWzV$Owokc(VzZWxsZXJfbGluaz0kYWRtaW)faW)(b1s4XTsKCWl(ICgkc(VzZWxsZXJfbGluaz09Ik)vIil7CgkkcHJvZHVj$CA9ICIiOwoJJG)vX3Byb2R1Y3RzPSRz$XBlcnVzZXJfc2NyaXB0X2)hbWUuICIgaXMgb(90IGF2YWlsYWJsZSBh$CB0aGlzIHRpbWUuPHA+SWYgeW91IGFyZSB0aGUg$2VibWFz$GVyIG9(ICIuJHByb2$yYW1fb(FtZS4iIHlv$SBjYW4gbWFrZSAiLiRz$XBlcnVzZXJfc2NyaXB0X2)hbWUuIiBh$(FpbGFibGUg$G8geW91ciB2aXNp$G9ycyBieSBhY3Rp$(F0aW)nIHlv$XIgc(VzZWxsZXIgbGluayBpbiB)b3VyIDxhIGhyZWY9XCIiLiRzaXRlX2FkZHJlc3MuIi9tZW1iZXJzL2luZGV4LnBocD9jb21tYW)kPXNl$HRpb($zI3Jlc2VsbGVyXCIg$GFyZ2V0PVwiX2JsYW)rXCIg$Gl0bGU9XCJBZG1pbiBTZXR0aW)nc1wiP(FkbWluIHNl$HRpb($zPC9hPi4iOwoJfQoJZWxzZXsKCSRkb19oZWFkZXI9InllcyI7CgkkZG9fZ(9v$GVyPSJ)ZXMiOwoJJHByb2R1Y3QgPSAkZGV(YXVs$F9wc(9k$WN0LiIuaHRtbCI7Cgl9CgoKfQoKaWYgKCRwc(9k$WN0PT0iIil7CiRjb2)0c(9sX3Bhb(VsPSJSZXNv$XJjZXMiOwppb(Ns$WRlICgibWVtY(Vycy9pb(Ns$WRlL2hlYWRlci)waHAiKTsKCgkJaWYgKCRzaG93aXQ9PVllcyl7CgkJJG)vX3Byb2R1Y3RzPSRub19wc(9k$WN0czsKCQl9CgkJZWxzZXsKCQkkb(9fcHJvZHVj$HM9IlRoaXMgcGFnZSBjb21pb(cgIi4kZHVlOwoJCX0KCgo/Pgo8$GFibGUgY2VsbHNwYWNpb(c9IjAiIGNlbGxwYWRkaW)nPSIxNSIg$2lk$Gg9IjEwMCUiPgo8$HI+PHRkIGFsaW$uPSJsZWZ0IiB2YWxpZ249InRvcCI+Cjw/C(VjaG8gJG)vX3Byb2R1Y3RzOwo/Pgo8L3RkPjwv$HI+PC90YWJsZT4KPD8KaW)jbHVkZSAoI(1lbWJlcnMvaW)jbHVkZS9(b290ZXIucGhwIik7C(V4aXQ7Cn0KC(l(ICgkZG9faGVhZGVyPT0ieWVzIil7Ci8vaWYgKCgkZG9faGVhZGVyPT0ieWVzIik(Jigk$XNlcl9vc(Rlc(luZz09Ik)vIikpewokY29u$HJvbF9wYW)lbD0kc3VwZXJ1c2VyX3Njc(lw$F9uYW1lOwppb(Ns$WRlICgibWVtY(Vycy9pb(Ns$WRlL2hlYWRlci)waHAiKTsKfQoJJGl0ZW1fb(FtZSA9ICRwc(9k$WN0OwoJJGl0ZW1fbnVtY(VyID0gIiI7Cgkk$XNlcl9vc(Rlc(luZz0iT(8iOwoJJHBheW1lbnRfc3Rh$HVzID0gIiI7CgkkcGF)bWVu$F9hbW91bnQgPSAiIjsKCSRwYXltZW)0X2N1cnJlb(N)ID0gIiI7Cgkk$HhuX2lkID0gIiI7Cgkkc(VjZWl2ZXJfZW1haWwgPSAiIjsKCSRwYXllcl9lbWFpbCA9ICIiOwoJJGN1c3RvbSA9ICIiOwppZiAoKCRfUE9TVFsnY3Vz$G9tJ10pfHwoJF9QT1NUWy$1c2VyMS$$KSl7CiRp$GVtX2)1bWJlciA9ICRfUE9TVFsnaXRlbV9u$W1iZXInXTsKJHVzZXJfb3JkZXJpb(c9IlllcyI7CiRwYXltZW)0X3N0YXR1cyA9ICRfUE9TVFsncGF)bWVu$F9z$GF0$XMnXTsKJHBheW1lbnRfYW1v$W)0ID0gJF9QT1NUWy$tY19nc(9zcy$$OwokcGF)bWVu$F9j$XJyZW)jeSA9ICRfUE9TVFsnbWNfY3Vyc(VuY3knXTsKJHR4bl9pZCA9ICRfUE9TVFsn$HhuX2lkJ107CiRyZWNlaXZlcl9lbWFpbCA9ICRfUE9TVFsnc(VjZWl2ZXJfZW1haWwnXTsKJHBheWVyX2VtYWlsID0gJF9QT1NUWy$wYXllcl9lbWFpbC$$OwokY3Vz$G9tID0gJF9QT1NUWy$j$XN0b20nXTsKfQoKJGRh$GFbInVzZXJfb3JkZXJpb(ciXSA9ICR1c2VyX29yZGVyaW)nOwokZGF0YVsiZGVhbGVyX2tleSJ$ID0gJGRlYWxlcl9rZXk7CiRkYXRhWyJwc(9nc(FtX2)hbWUiXSA9ICRwc(9nc(FtX2)hbWU7CiRkYXRhWyJ1c2VyX3Np$GVfYWRkc(VzcyJ$ID0gJHNp$GVfYWRkc(VzczsKJGRh$GFbI(FkbWluX3Np$GVfYWRkc(VzcyJ$ID0gJGFkbWluX3Np$GVfYWRkc(VzczsKJGRh$GFbI(l0ZW1fb(FtZSJ$ID0gJGl0ZW1fb(FtZTsKJGRh$GFbI(l0ZW1fbnVtY(VyIl0gPSAkaXRlbV9u$W1iZXI7CiRkYXRhWyJwYXltZW)0X3N0YXR1cyJ$ID0gJHBheW1lbnRfc3Rh$HVzOwokZGF0YVsicGF)bWVu$F9hbW91bnQiXSA9ICRwYXltZW)0X2Ftb3Vu$DsKJGRh$GFbInBheW1lbnRfY3Vyc(VuY3kiXSA9ICRwYXltZW)0X2N1cnJlb(N)OwokZGF0YVsi$HhuX2lkIl0gPSAk$HhuX2lkOwokZGF0YVsic(VjZWl2ZXJfZW1haWwiXSA9ICRyZWNlaXZlcl9lbWFpbDsKJGRh$GFbInBheWVyX2VtYWlsIl0gPSAkcGF)ZXJfZW1haWw7CiRkYXRhWyJj$XN0b20iXSA9ICRj$XN0b207CiRkYXRhWyJz$XBlcnVzZXIiXSA9ICRz$XBlcnVzZXI7CiRkYXRhWyJwc(9k$WN0X3VybCJ$ID0gJHByb2R1Y3Q7Cgokc(Vz$Wx0ID0gcG9z$F9p$CgkZGF0YSwgJGZl$GNoX3Byb2R1Y3RfcGFnZXMpOwoKC(l(IChpc3Nl$Cgkc(Vz$Wx0WyJlcnJubyJ$KSkgewogICAgJGVyc()vID0gJHJlc3Vs$FsiZXJyb(8iXTsKICAgICRlcnJz$HIgPSAkc(Vz$Wx0WyJlcnJz$HIiXTsKICAgIGVjaG8gIjxCPkVyc(9yICRlcnJubzwvQj4gJGVycnN0ciI7CiAgICBleGl0Owp9C(Vsc2UgewoJJHJl$HVybl9yZXN1bHQ9MDsKCWZvcigkaT0wOyRpPCBjb3Vu$Cgkc(Vz$Wx0KTsgJGkrKyl7CgkJaWYgKHN0cnBvcygkc(Vz$Wx0WyRpXSwiPEhUTUw+IikhPT1GQUxTRSl7JHJl$HVybl9yZXN1bHQgPSAxO30KCQlpZiAoJHJl$HVybl9yZXN1bHQgPT0gMSl7JHJlc3Vs$HM9JHJlc3Vs$HMuJHJlc3Vs$FskaV07fQoJfQoJJHJlc3Vs$HM9ZXhwbG9kZSgiPEhUTUw+Iix0c(ltKCRyZXN1bHRzKSk7Cgkkc(Vz$Wx0cz0kc(Vz$Wx0c1sxXTsKCSRyZXN1bHRzPXN0cl9yZXBsYWNlKCI8L0hUTUw+IiwiIiwkc(Vz$Wx0cyk7CgllY2hvICRyZXN1bHRzOwp9CgppZiAoJGRvX2Zvb3Rlcj09InllcyIpewovL2l(ICgoJGRvX2Zvb3Rlcj09InllcyIpJiYoJHVzZXJfb3JkZXJpb(c9PSJObyIpKXsKaW)jbHVkZSAoI(1lbWJlcnMvaW)jbHVkZS9(b290ZXIucGhwIik7Cn0KCgoKCgp($W)j$GlvbiBteXNxbF9leGVj$XRlKCRzcWwpewokc(Vz$Wx0PW1)c3FsX3F1ZXJ)KCRzcWwpOwppZighJHJlc3Vs$Cl7C(VjaG8gbXlzcWxfZXJyb3IoKTsKZWNobyAkc3FsOwpyZXR1c(4gZ(Fsc2U7Cn0KZWxzZXsKc(V0$XJuICRyZXN1bHQ7Cn0KfQoKZnVuY3Rpb24gcG9z$F9p$CgkZGF0YXN0c(VhbSwgJHVybCkgewok$XJsID0gcHJlZ19yZXBsYWNlKCJAX(h0$HA6Ly9AaSIsICIiLCAk$XJsKTsKJGhvc3QgPSBz$WJz$HIoJHVybCwgMCwgc3RycG9zKCR1c(wsICIvIikpOwok$XJpID0gc3Ryc3RyKCR1c(wsICIvIik7CgogICAgICRyZXFib2R)ID0gIiI7CiAgICAgZ(9yZWFjaCgkZGF0YXN0c(VhbSBhcyAka2V)PT4k$(FsKSB7aWYgKCRyZXFib2R)ICE9ICIiKSAkc(VxY(9keS49ICI(Ijskc(VxY(9keS49ICRrZXkuIj0iLnVybGVuY29kZSgk$(FsKTt9CiAgICAgJGNvbnRlbnRsZW)n$GggPSBz$HJsZW4oJHJlcWJvZHkpOwogICAgICRyZXFoZWFkZXIgPSAgIlBPU1QgJHVyaSBIVFRQLzEuMFxyXG4iLgogICAgICAgICAgICAgICAgICAgIkhvc3Q6ICRob3N0XG4iLiAiVXNlci1BZ2Vu$DogUG9z$El0XHJcbiIuCiAgICAgIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13$3ctZ(9ybS11c(xlb(NvZGVkXHJcbiIuCiAgICAgIkNvbnRlbnQtTGVuZ3RoOiAkY29u$GVu$Gxlb($0aFxyXG)cclxuIi4KICAgICAiJHJlcWJvZHlcclxuIjsKCiRzb2NrZXQgPSB(c29ja29wZW4oJGhvc3QsIDgwLCAkZXJyb(8sICRlcnJz$HIpOwppZiAoISRzb2NrZXQpIHskc(Vz$Wx0WyJlcnJubyJ$ID0gJGVyc()vOyRyZXN1bHRbI(VycnN0ciJ$ID0gJGVycnN0cjtyZXR1c(4gJHJlc3Vs$Dt9C(Zw$XRzKCRzb2NrZXQsICRyZXFoZWFkZXIpOwp3aGlsZSAoIWZlb2YoJHNvY2tl$CkpIHskc(Vz$Wx0W10gPSB(Z2V0cygkc29ja2V0LCA0MDk2KTt9C(ZjbG9zZSgkc29ja2V0KTsKc(V0$XJuICRyZXN1bHQ7Cn0KCgo/Pgo=