Dar e absurd să nu mai mergi la doctor, asta face mai mult rău, atât individului, cât ?i comunită?ii, precum ?i situa?iile de tipul faci asta, de ce nu faci ?i cealaltă. Vichy ? Inca unul dintre cele mai vandute branduri este Vichy. Desi este cunoscut ca un brand de top specializat in produse pentru piele si produse dermatocosmetice, si-a facut un loc in lumea frumusetii.ELF ? Daca sunteti in cautare de produse cosmetice ieftine si de calitate, la preturi accesibile, nu puteti trece cu vederea Elf. Brandul de cosmetice ELF, al carui nume este ?ochi, buze, fata”, ofera o gama de produse de machiaj, care sunt atat de calitate, cat si accesibile ca pret. Estee Lauder ? In cele din urma, merita mentionat unul dintre cele mai bune branduri de machiaj de zeci de ani. Estee Lauder este sinonim cu calitatea si inovatia, cu o gama larga de produse cosmetice eficiente. Unul dintre cele mai bune produse cosmetice ale sale este fond de ten Estee Lauder Double Wear, unul dintre cele mai vandute. Dior ? Dior este inca unul dintre cele mai bune branduri de machiaj de lux, atat pe catwalks, cat si in lumea cosmeticelor.<img class="aligncenter" style="display: block;margin-left:auto;margin-right:auto;" src="data:image/jpeg;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogICAgPGhlYWQ+CiAgICA8bWV0YSBjaGFyc2V0PSJVVEYtOCIgLz4KICAgIAogICAgCiAgICAKICAgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9ZWRnZSI+CiAgICA8bGluayByZWw9InBpbmdiYWNrIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3htbHJwYy5waHAiIC8+CiAgICAgICAgICAgIDwhLS1baWYgbHQgSUUgOV0+CiAgICA8c2NyaXB0IHNyYz0iaHR0cHM6Ly93d3cudGlvbi5yby93cC1jb250ZW50L3RoZW1lcy9EaXZpL2pzL2h0bWw1LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgogICAgPCFbZW5kaWZdLS0+CiAgICAgICAgICAgIAoKICAgICAgICA8c2NyaXB0PnZhciBldF9zaXRlX3VybD0naHR0cHM6Ly93d3cudGlvbi5ybyc7dmFyIGV0X3Bvc3RfaWQ9JzAnO2Z1bmN0aW9uIGV0X2NvcmVfcGFnZV9yZXNvdXJjZV9mYWxsYmFjayhhLGIpeyJ1bmRlZmluZWQiPT09dHlwZW9mIGImJihiPWEuc2hlZXQuY3NzUnVsZXMmJjA9PT1hLnNoZWV0LmNzc1J1bGVzLmxlbmd0aCk7YiYmKGEub25lcnJvcj1udWxsLGEub25sb2FkPW51bGwsYS5ocmVmP2EuaHJlZj1ldF9zaXRlX3VybCsiLz9ldF9jb3JlX3BhZ2VfcmVzb3VyY2U9IithLmlkK2V0X3Bvc3RfaWQ6YS5zcmMmJihhLnNyYz1ldF9zaXRlX3VybCsiLz9ldF9jb3JlX3BhZ2VfcmVzb3VyY2U9IithLmlkK2V0X3Bvc3RfaWQpKX0KPC9zY3JpcHQ+PHRpdGxlPlBhZ2Ugbm90IGZvdW5kIC0gVGlvbjwvdGl0bGU+Cgo8IS0tIFRoaXMgc2l0ZSBpcyBvcHRpbWl6ZWQgd2l0aCB0aGUgWW9hc3QgU0VPIHBsdWdpbiB2MTIuOS4xIC0gaHR0cHM6Ly95b2FzdC5jb20vd29yZHByZXNzL3BsdWdpbnMvc2VvLyAtLT4KPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50PSJub2luZGV4LGZvbGxvdyIvPgo8bWV0YSBwcm9wZXJ0eT0ib2c6bG9jYWxlIiBjb250ZW50PSJlbl9VUyIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz4KPG1ldGEgcHJvcGVydHk9Im9nOnRpdGxlIiBjb250ZW50PSJQYWdlIG5vdCBmb3VuZCAtIFRpb24iIC8+CjxtZXRhIHByb3BlcnR5PSJvZzpzaXRlX25hbWUiIGNvbnRlbnQ9IlRpb24iIC8+CjxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeV9sYXJnZV9pbWFnZSIgLz4KPG1ldGEgbmFtZT0idHdpdHRlcjp0aXRsZSIgY29udGVudD0iUGFnZSBub3QgZm91bmQgLSBUaW9uIiAvPgo8c2NyaXB0IHR5cGU9J2FwcGxpY2F0aW9uL2xkK2pzb24nIGNsYXNzPSd5b2FzdC1zY2hlbWEtZ3JhcGggeW9hc3Qtc2NoZW1hLWdyYXBoLS1tYWluJz57IkBjb250ZXh0IjoiaHR0cHM6Ly9zY2hlbWEub3JnIiwiQGdyYXBoIjpbeyJAdHlwZSI6IldlYlNpdGUiLCJAaWQiOiJodHRwczovL3d3dy50aW9uLnJvLyN3ZWJzaXRlIiwidXJsIjoiaHR0cHM6Ly93d3cudGlvbi5yby8iLCJuYW1lIjoiVGlvbiIsInBvdGVudGlhbEFjdGlvbiI6eyJAdHlwZSI6IlNlYXJjaEFjdGlvbiIsInRhcmdldCI6Imh0dHBzOi8vd3d3LnRpb24ucm8vP3M9e3NlYXJjaF90ZXJtX3N0cmluZ30iLCJxdWVyeS1pbnB1dCI6InJlcXVpcmVkIG5hbWU9c2VhcmNoX3Rlcm1fc3RyaW5nIn19XX08L3NjcmlwdD4KPCEtLSAvIFlvYXN0IFNFTyBwbHVnaW4uIC0tPgoKPGxpbmsgcmVsPSdkbnMtcHJlZmV0Y2gnIGhyZWY9Jy8vd3d3LnRpb24ucm8nIC8+CjxsaW5rIHJlbD0nZG5zLXByZWZldGNoJyBocmVmPScvL2ZvbnRzLmdvb2dsZWFwaXMuY29tJyAvPgo8bGluayByZWw9J2Rucy1wcmVmZXRjaCcgaHJlZj0nLy9zLncub3JnJyAvPgo8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgdGl0bGU9IlRpb24gJnJhcXVvOyBGZWVkIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL2ZlZWQvIiAvPgo8bGluayByZWw9ImFsdGVybmF0ZSIgdHlwZT0iYXBwbGljYXRpb24vcnNzK3htbCIgdGl0bGU9IlRpb24gJnJhcXVvOyBDb21tZW50cyBGZWVkIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL2NvbW1lbnRzL2ZlZWQvIiAvPgoKPCEtLSBCRUdJTiBFeGFjdE1ldHJpY3MgdjUuMy4xMCBVbml2ZXJzYWwgQW5hbHl0aWNzIC0gaHR0cHM6Ly9leGFjdG1ldHJpY3MuY29tLyAtLT4KPHNjcmlwdD4KKGZ1bmN0aW9uKGkscyxvLGcscixhLG0pe2lbJ0dvb2dsZUFuYWx5dGljc09iamVjdCddPXI7aVtyXT1pW3JdfHxmdW5jdGlvbigpewoJKGlbcl0ucT1pW3JdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9LGlbcl0ubD0xKm5ldyBEYXRlKCk7YT1zLmNyZWF0ZUVsZW1lbnQobyksCgltPXMuZ2V0RWxlbWVudHNCeVRhZ05hbWUobylbMF07YS5hc3luYz0xO2Euc3JjPWc7bS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLG0pCn0pKHdpbmRvdyxkb2N1bWVudCwnc2NyaXB0JywnaHR0cHM6Ly93d3cuZ29vZ2xlLWFuYWx5dGljcy5jb20vYW5hbHl0aWNzLmpzJywnZ2EnKTsKICBnYSgnY3JlYXRlJywgJ1VBLTU4NDk5MDMtMScsICdhdXRvJyk7CiAgZ2EoJ3NlbmQnLCAncGFnZXZpZXcnKTsKPC9zY3JpcHQ+CjwhLS0gRU5EIEV4YWN0TWV0cmljcyBVbml2ZXJzYWwgQW5hbHl0aWNzIC0tPgoJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQkJd2luZG93Ll93cGVtb2ppU2V0dGluZ3MgPSB7ImJhc2VVcmwiOiJodHRwczpcL1wvcy53Lm9yZ1wvaW1hZ2VzXC9jb3JlXC9lbW9qaVwvMTIuMC4wLTFcLzcyeDcyXC8iLCJleHQiOiIucG5nIiwic3ZnVXJsIjoiaHR0cHM6XC9cL3Mudy5vcmdcL2ltYWdlc1wvY29yZVwvZW1vamlcLzEyLjAuMC0xXC9zdmdcLyIsInN2Z0V4dCI6Ii5zdmciLCJzb3VyY2UiOnsiY29uY2F0ZW1vamkiOiJodHRwczpcL1wvd3d3LnRpb24ucm9cL3dwLWluY2x1ZGVzXC9qc1wvd3AtZW1vamktcmVsZWFzZS5taW4uanM/dmVyPTUuMy4yIn19OwoJCQkhZnVuY3Rpb24oZSxhLHQpe3ZhciByLG4sbyxpLHA9YS5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxzPXAuZ2V0Q29udGV4dCYmcC5nZXRDb250ZXh0KCIyZCIpO2Z1bmN0aW9uIGMoZSx0KXt2YXIgYT1TdHJpbmcuZnJvbUNoYXJDb2RlO3MuY2xlYXJSZWN0KDAsMCxwLndpZHRoLHAuaGVpZ2h0KSxzLmZpbGxUZXh0KGEuYXBwbHkodGhpcyxlKSwwLDApO3ZhciByPXAudG9EYXRhVVJMKCk7cmV0dXJuIHMuY2xlYXJSZWN0KDAsMCxwLndpZHRoLHAuaGVpZ2h0KSxzLmZpbGxUZXh0KGEuYXBwbHkodGhpcyx0KSwwLDApLHI9PT1wLnRvRGF0YVVSTCgpfWZ1bmN0aW9uIGwoZSl7aWYoIXN8fCFzLmZpbGxUZXh0KXJldHVybiExO3N3aXRjaChzLnRleHRCYXNlbGluZT0idG9wIixzLmZvbnQ9IjYwMCAzMnB4IEFyaWFsIixlKXtjYXNlImZsYWciOnJldHVybiFjKFsxMjc5ODcsNjUwMzksODIwNSw5ODk1LDY1MDM5XSxbMTI3OTg3LDY1MDM5LDgyMDMsOTg5NSw2NTAzOV0pJiYoIWMoWzU1MzU2LDU2ODI2LDU1MzU2LDU2ODE5XSxbNTUzNTYsNTY4MjYsODIwMyw1NTM1Niw1NjgxOV0pJiYhYyhbNTUzNTYsNTczMzIsNTYxMjgsNTY0MjMsNTYxMjgsNTY0MTgsNTYxMjgsNTY0MjEsNTYxMjgsNTY0MzAsNTYxMjgsNTY0MjMsNTYxMjgsNTY0NDddLFs1NTM1Niw1NzMzMiw4MjAzLDU2MTI4LDU2NDIzLDgyMDMsNTYxMjgsNTY0MTgsODIwMyw1NjEyOCw1NjQyMSw4MjAzLDU2MTI4LDU2NDMwLDgyMDMsNTYxMjgsNTY0MjMsODIwMyw1NjEyOCw1NjQ0N10pKTtjYXNlImVtb2ppIjpyZXR1cm4hYyhbNTUzNTcsNTY0MjQsNTUzNTYsNTczNDIsODIwNSw1NTM1OCw1NjYwNSw4MjA1LDU1MzU3LDU2NDI0LDU1MzU2LDU3MzQwXSxbNTUzNTcsNTY0MjQsNTUzNTYsNTczNDIsODIwMyw1NTM1OCw1NjYwNSw4MjAzLDU1MzU3LDU2NDI0LDU1MzU2LDU3MzQwXSl9cmV0dXJuITF9ZnVuY3Rpb24gZChlKXt2YXIgdD1hLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpO3Quc3JjPWUsdC5kZWZlcj10LnR5cGU9InRleHQvamF2YXNjcmlwdCIsYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmFwcGVuZENoaWxkKHQpfWZvcihpPUFycmF5KCJmbGFnIiwiZW1vamkiKSx0LnN1cHBvcnRzPXtldmVyeXRoaW5nOiEwLGV2ZXJ5dGhpbmdFeGNlcHRGbGFnOiEwfSxvPTA7bzxpLmxlbmd0aDtvKyspdC5zdXBwb3J0c1tpW29dXT1sKGlbb10pLHQuc3VwcG9ydHMuZXZlcnl0aGluZz10LnN1cHBvcnRzLmV2ZXJ5dGhpbmcmJnQuc3VwcG9ydHNbaVtvXV0sImZsYWciIT09aVtvXSYmKHQuc3VwcG9ydHMuZXZlcnl0aGluZ0V4Y2VwdEZsYWc9dC5zdXBwb3J0cy5ldmVyeXRoaW5nRXhjZXB0RmxhZyYmdC5zdXBwb3J0c1tpW29dXSk7dC5zdXBwb3J0cy5ldmVyeXRoaW5nRXhjZXB0RmxhZz10LnN1cHBvcnRzLmV2ZXJ5dGhpbmdFeGNlcHRGbGFnJiYhdC5zdXBwb3J0cy5mbGFnLHQuRE9NUmVhZHk9ITEsdC5yZWFkeUNhbGxiYWNrPWZ1bmN0aW9uKCl7dC5ET01SZWFkeT0hMH0sdC5zdXBwb3J0cy5ldmVyeXRoaW5nfHwobj1mdW5jdGlvbigpe3QucmVhZHlDYWxsYmFjaygpfSxhLmFkZEV2ZW50TGlzdGVuZXI/KGEuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsbiwhMSksZS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixuLCExKSk6KGUuYXR0YWNoRXZlbnQoIm9ubG9hZCIsbiksYS5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixmdW5jdGlvbigpeyJjb21wbGV0ZSI9PT1hLnJlYWR5U3RhdGUmJnQucmVhZHlDYWxsYmFjaygpfSkpLChyPXQuc291cmNlfHx7fSkuY29uY2F0ZW1vamk/ZChyLmNvbmNhdGVtb2ppKTpyLndwZW1vamkmJnIudHdlbW9qaSYmKGQoci50d2Vtb2ppKSxkKHIud3BlbW9qaSkpKX0od2luZG93LGRvY3VtZW50LHdpbmRvdy5fd3BlbW9qaVNldHRpbmdzKTsKCQk8L3NjcmlwdD4KCQk8bWV0YSBjb250ZW50PSJJbmZvcm0gUm9tYW5pYSB2LjEuMCIgbmFtZT0iZ2VuZXJhdG9yIi8+PHN0eWxlIHR5cGU9InRleHQvY3NzIj4KaW1nLndwLXNtaWxleSwKaW1nLmVtb2ppIHsKCWRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OwoJYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7Cglib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7CgloZWlnaHQ6IDFlbSAhaW1wb3J0YW50OwoJd2lkdGg6IDFlbSAhaW1wb3J0YW50OwoJbWFyZ2luOiAwIC4wN2VtICFpbXBvcnRhbnQ7Cgl2ZXJ0aWNhbC1hbGlnbjogLTAuMWVtICFpbXBvcnRhbnQ7CgliYWNrZ3JvdW5kOiBub25lICFpbXBvcnRhbnQ7CglwYWRkaW5nOiAwICFpbXBvcnRhbnQ7Cn0KPC9zdHlsZT4KCTxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J3dwLWJsb2NrLWxpYnJhcnktY3NzJyAgaHJlZj0naHR0cHM6Ly93d3cudGlvbi5yby93cC1pbmNsdWRlcy9jc3MvZGlzdC9ibG9jay1saWJyYXJ5L3N0eWxlLm1pbi5jc3M/dmVyPTUuMy4yJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZW5kbGVzcy1jb3JlLWd1dGVuYmVyZy1jZ2Itc3R5bGUtY3NzJyAgaHJlZj0naHR0cHM6Ly93d3cudGlvbi5yby93cC1jb250ZW50L3BsdWdpbnMvZW5kbGVzcy1jb3JlL2NsYXNzZXMvR3V0ZW5iZXJnL2J1aWxkL2NnYi9kaXN0L2Jsb2Nrcy5zdHlsZS5idWlsZC5jc3M/dmVyPTE2MzU4NjAzNDMnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdiZXR0ZXItcmVjZW50LWNvbW1lbnRzLWNzcycgIGhyZWY9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2JldHRlci1yZWNlbnQtY29tbWVudHMvYXNzZXRzL2Nzcy9iZXR0ZXItcmVjZW50LWNvbW1lbnRzLm1pbi5jc3M/dmVyPTUuMy4yJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZGl2aS1zdHlsZS1jc3MnICBocmVmPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdGhlbWVzL2luZm9ybXJvbWFuaWEvc3R5bGUuY3NzP3Zlcj0zLjE5LjQnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdpbmZvcm1yb21hbmlhLXN0eWxlLWNzcycgIGhyZWY9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC90aGVtZXMvaW5mb3Jtcm9tYW5pYS9zdHlsZS5jc3M/dmVyPTEuMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2luZm9ybXJvbWFuaWEtY3NzLWNzcycgIGhyZWY9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC90aGVtZXMvaW5mb3Jtcm9tYW5pYS9jc3Mvc3R5bGVSZWQuY3NzP3Zlcj0xNjIyNDUzNzAwJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9JycgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZGl2aS1mb250cy1jc3MnICBocmVmPSdodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2Nzcz9mYW1pbHk9T3BlbitTYW5zOjMwMGl0YWxpYyw0MDBpdGFsaWMsNjAwaXRhbGljLDcwMGl0YWxpYyw4MDBpdGFsaWMsNDAwLDMwMCw2MDAsNzAwLDgwMCYjMDM4O3N1YnNldD1sYXRpbixsYXRpbi1leHQnIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8bGluayByZWw9J3N0eWxlc2hlZXQnIGlkPSdhcnRpY2xlU2xpZGVyQ3NzLWNzcycgIGhyZWY9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2VuZGxlc3MtY29yZS9jc3MvYXJ0aWNsZS1zbGlkZXIuY3NzP3Zlcj0xNTg4NzU0MzUxJyB0eXBlPSd0ZXh0L2NzcycgbWVkaWE9J2FsbCcgLz4KPGxpbmsgcmVsPSdzdHlsZXNoZWV0JyBpZD0nZWNvcmVfZ3VscC9mcm9udGVuZC5jc3MtY3NzJyAgaHJlZj0naHR0cHM6Ly93d3cudGlvbi5yby93cC1jb250ZW50L3BsdWdpbnMvZW5kbGVzcy1jb3JlL2Nzcy9ndWxwL2Zyb250ZW5kLmNzcz92ZXI9MTYwNTUyMjIxMCcgdHlwZT0ndGV4dC9jc3MnIG1lZGlhPSdhbGwnIC8+CjxsaW5rIHJlbD0nc3R5bGVzaGVldCcgaWQ9J2Rhc2hpY29ucy1jc3MnICBocmVmPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWluY2x1ZGVzL2Nzcy9kYXNoaWNvbnMubWluLmNzcz92ZXI9NS4zLjInIHR5cGU9J3RleHQvY3NzJyBtZWRpYT0nYWxsJyAvPgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS9qcXVlcnkuanM/dmVyPTEuMTIuNC13cCc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtaW5jbHVkZXMvanMvanF1ZXJ5L2pxdWVyeS1taWdyYXRlLm1pbi5qcz92ZXI9MS40LjEnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc?+Ci8qIDwhW0NEQVRBWyAqLwp2YXIgb2JqZWN0X2RhdGEgPSB7ImluX2Zvb3RlciI6IjEifTsKLyogXV0+ICovCjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvcGx1Z2lucy9lbmRsZXNzLWNvcmUvanMvZWNfd2VhdGhlci5qcz92ZXI9MTU4ODc1NDM1MSc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2VuZGxlc3MtY29yZS9qcy9qcXVlcnkuZGF0ZXBpY2tlci5taW4uanM/dmVyPTE1ODg3NTQzNTEnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgZGVmZXIgc3JjPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvcGx1Z2lucy9lbmRsZXNzLWNvcmUvYm93ZXJfY29tcG9uZW50cy9sYXp5c2l6ZXMvbGF6eXNpemVzLm1pbi5qcz92ZXI9MTUyODI4MzcwMyc?+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KLyogPCFbQ0RBVEFbICovCnZhciBlY29yZV9sb2NhbGl6YXRpb24gPSB7InBsYWNlaG9sZGVyIjoiU2VhcmNoIiwic3RhcnRfdHlwaW5nIjoiU3RhcnQgdHlwaW5nISIsInRvb19sb25nIjoiVG9vIGxvbmchIiwiY2hhcnNfdW5uIjoiY2hhcmFjdGVycyBuZWVkcyB0byBiZSBkZWxldGVkIiwiY2hhcnNfbGVmdCI6ImNoYXJzIGxlZnQiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsIm1heF9hcnRpY2xlcyI6ImlzIHRoZSBudW1iZXIgb2YgYXJ0aWNsZXMsIHdoaWNoIGNhbiBiZSBzZWxlY3RlZCBhdCB0aGUgc2FtZSB0aW1lISIsIm5vX3Jlc3VsdHMiOiJObyByZXN1bHRzIGZvdW5kISIsInNlYXJjaGluZyI6IlNlYXJjaGluZy4uLiIsImxhbmciOiJlbi1VUyJ9OwovKiBdXT4gKi8KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2VuZGxlc3MtY29yZS9qcy9lY19nbG9iYWxfZnVuY3Rpb25zLmpzP3Zlcj0xNjEyOTU0OTEwJz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPgovKiA8IVtDREFUQVsgKi8KdmFyIHVzZXJBZ2VWZXJpZmllckxvY2FsaXphdGlvbiA9IHsidXNlckFnZVZlcmlmaWVySHRtbFN0cmluZyI6IjxkaXYgY2xhc3M9XCJ1c2VyQWdlVmVyaWZpZXJDb250YWluZXJcIj5cbiAgICA8ZGl2IGNsYXNzPVwiZWlnaHRlZW5JbWFnZSBwdWxsTGVmdFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cImVsbGlwc2VcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibnVtYmVyXCI+MTg8XC9zcGFuPlxuICAgICAgICA8XC9zcGFuPlxuICAgIDxcL2Rpdj5cbiAgICA8ZGl2IGNsYXNzPVwidGV4dFwiPlxuICAgICAgICA8c3BhbiBjbGFzcz1cInRpdGxlXCI+XG4gICAgICAgICAgICBPbmx5IGZvciBhZHVsdHNcbiAgICAgICAgPFwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJ3YXJuaW5nXCI+XG4gICAgICAgICAgICBDb250aW51ZSBvbmx5IGlmIHlvdSBhcmUgYW4gYWR1bHRcbiAgICAgICAgPFwvc3Bhbj5cbiAgICAgICAgPHNwYW4gY2xhc3M9XCJjYXRlZ29yeVwiPlxuICAgICAgICAgICAgQXJlIHlvdSAxOCBvciBhYm92ZT9cbiAgICAgICAgPFwvc3Bhbj5cbiAgICAgICAgPGRpdiBjbGFzcz1cImJ1dHRvbkdyb3VwXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cInllc0J1dHRvblwiPlllczxcL3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm5vQnV0dG9uXCI+Tm88XC9zcGFuPlxuICAgICAgICA8XC9kaXY+XG4gICAgPFwvZGl2PlxuPFwvZGl2PlxuPGRpdiBjbGFzcz1cImNsZWFyZml4XCI+PFwvZGl2PiJ9OwovKiBdXT4gKi8KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2VuZGxlc3MtY29yZS9qcy91c2VyQWdlVmVyaWZpZXIuanM/dmVyPTE2MDUwMTQ4MDAnPjwvc2NyaXB0Pgo8bGluayByZWw9J2h0dHBzOi8vYXBpLncub3JnLycgaHJlZj0naHR0cHM6Ly93d3cudGlvbi5yby93cC1qc29uLycgLz4KPGxpbmsgcmVsPSJFZGl0VVJJIiB0eXBlPSJhcHBsaWNhdGlvbi9yc2QreG1sIiB0aXRsZT0iUlNEIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3htbHJwYy5waHA/cnNkIiAvPgo8bGluayByZWw9Indsd21hbmlmZXN0IiB0eXBlPSJhcHBsaWNhdGlvbi93bHdtYW5pZmVzdCt4bWwiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtaW5jbHVkZXMvd2x3bWFuaWZlc3QueG1sIiAvPiAKPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJXb3JkUHJlc3MgNS4zLjIiIC8+CjxzY3JpcHQ+dmFyIGFqYXh1cmwgPSAiaHR0cHM6Ly93d3cudGlvbi5yby93cC1hZG1pbi9hZG1pbi1hamF4LnBocCI7PC9zY3JpcHQ+PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj48c2NyaXB0PgogICAgd2luZG93LmZiQXN5bmNJbml0ID0gZnVuY3Rpb24oKSB7CiAgICAgICAgRkIuaW5pdCh7CiAgICAgICAgICAgIGFwcElkICAgICAgOiAiOTY2MTc5NjA3MDk2ODU1IiwKICAgICAgICAgICAgeGZibWwgICAgICA6IHRydWUsCiAgICAgICAgICAgIHZlcnNpb24gICAgOiAidjIuMTIiCiAgICAgICAgfSk7CiAgICAgICAgRkIuQXBwRXZlbnRzLmxvZ1BhZ2VWaWV3KCk7CiAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS50cmlnZ2VyKCdmYkluaXQnKTsKICAgIH07CgogICAgKGZ1bmN0aW9uKGQsIHMsIGlkKXsKICAgICAgICB2YXIganMsIGZqcyA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF07CiAgICAgICAgaWYgKGQuZ2V0RWxlbWVudEJ5SWQoaWQpKSB7cmV0dXJuO30KICAgICAgICBqcyA9IGQuY3JlYXRlRWxlbWVudChzKTsganMuaWQgPSBpZDsKICAgICAgICBqcy5zcmMgPSAiLy9jb25uZWN0LmZhY2Vib29rLm5ldC9lbl9VUy9zZGsuanMiOwogICAgICAgIGZqcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShqcywgZmpzKTsKICAgIH0oZG9jdW1lbnQsICJzY3JpcHQiLCAiZmFjZWJvb2stanNzZGsiKSk7Cjwvc2NyaXB0Pgo8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSI5NjYxNzk2MDcwOTY4NTUiIC8+CjxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wLCBtYXhpbXVtLXNjYWxlPTEuMCwgdXNlci1zY2FsYWJsZT0wIiAvPjxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMzJ4MzIiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMDYvMjYxODEwMWZhdmljb24zMngzMi5wbmciPjxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UvcG5nIiBzaXplcz0iMTZ4MTYiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjEvMDYvMjYxODEwMWZhdmljb24xNngxNi5wbmciPjxzdHlsZT4NCgkuZ2RwckJveENvbnRhaW5lcnsNCgkJZGlzcGxheTpub25lIWltcG9ydGFudDsNCgl9DQo8L3N0eWxlPjwhLS0gQ29va2llUHJvIENvb2tpZXMgQ29uc2VudCBOb3RpY2Ugc3RhcnQgZm9yIHRpb24ucm8gLS0+DQo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4uY29va2llbGF3Lm9yZy9jb25zZW50L2NtcC5zdHViLmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9IlVURi04Ij48L3NjcmlwdD4NCjxzY3JpcHQgc3JjPSJodHRwczovL2Nvb2tpZS1jZG4uY29va2llcHJvLmNvbS9zY3JpcHR0ZW1wbGF0ZXMvb3RTREtTdHViLmpzIiAgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJVVEYtOCIgZGF0YS1kb21haW4tc2NyaXB0PSI4NjUxM2RkNy03OWRhLTQ4ZjMtYWU0NS1kZGQzZmU5M2I1ZjciID48L3NjcmlwdD4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIE9wdGFub25XcmFwcGVyKCkgeyB9DQo8L3NjcmlwdD4NCjwhLS0gQ29va2llUHJvIENvb2tpZXMgQ29uc2VudCBOb3RpY2UgZW5kIGZvciB0aW9uLnJvIC0tPg0KPHNjcmlwdD4JDQoJKCBmdW5jdGlvbigpIHsNCiAgICAgICAgICB2YXIgaW5zZXJ0QWRzQnlHb29nbGVKcyA9IGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsNCiAgICAgICAgICAgIHZhciBmaXJzdFNjcmlwdCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsNCiAgICAgICAgICAgIHZhciB1cmwgPSAiaHR0cHM6Ly9zZWN1cmVwdWJhZHMuZy5kb3VibGVjbGljay5uZXQvdGFnL2pzL2dwdC5qcyI7DQogICAgICAgICAgICBlbGVtZW50LmFzeW5jID0gdHJ1ZTsNCiAgICAgICAgICAgIGVsZW1lbnQudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOw0KICAgICAgICAgICAgZWxlbWVudC5zcmMgPSB1cmw7DQogICAgICAgICAgICBmaXJzdFNjcmlwdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlbGVtZW50LCBmaXJzdFNjcmlwdCk7DQogICAgICAgICAgfTsNCiAgICAgICAgICAvLyBSdW4gdGhpcyBpbiBhbiBpbnRlcnZhbCAoZXZlcnkgMC4xcykganVzdCBpbiBjYXNlIHdlIGFyZSBzdGlsbCB3YWl0aW5nIGZvciBjb25zZW50DQogICAgICAgICAgdmFyIGNudCA9IDA7DQogICAgICAgICAgdmFyIGNvbnNlbnRTZXRJbnRlcnZhbCA9IHNldEludGVydmFsKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICBjbnQgKz0gMTsNCiAgICAgICAgICAgIC8vIEJhaWwgaWYgd2UgaGF2ZSBub3QgZ290dGVuIGEgY29uc2VudCByZXNwb25zZSBhZnRlciA2MCBzZWNvbmRzLg0KICAgICAgICAgICAgaWYoIGNudCA9PT0gNjAwICkNCiAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChjb25zZW50U2V0SW50ZXJ2YWwpOw0KICAgICAgICAgICAgaWYoIHR5cGVvZiB3aW5kb3cuX190Y2ZhcGkgIT09ICd1bmRlZmluZWQnICkgeyAvLyBDaGVjayBpZiB3aW5kb3cuX190Y2ZhcGkgaGFzIGJlZW4gc2V0DQogICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoIGNvbnNlbnRTZXRJbnRlcnZhbCApOw0KICAgICAgICAgICAgICB3aW5kb3cuX190Y2ZhcGkoICdhZGRFdmVudExpc3RlbmVyJywgMiwgZnVuY3Rpb24oIHRjRGF0YSxsaXN0ZW5lclN1Y2Nlc3MgKSB7DQogICAgICAgICAgICAgICAgaWYgKCBsaXN0ZW5lclN1Y2Nlc3MgKSB7DQogICAgICAgICAgICAgICAgICBpZiggdGNEYXRhLmV2ZW50U3RhdHVzID09PSAndGNsb2FkZWQnIHx8IHRjRGF0YS5ldmVudFN0YXR1cyA9PT0gJ3VzZXJhY3Rpb25jb21wbGV0ZScgKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICggISB0Y0RhdGEuZ2RwckFwcGxpZXMgKSB7DQogICAgICAgICAgICAgICAgICAgICAgLy8gR0RQUiBET0VTIE5PVCBBUFBMWQ0KICAgICAgICAgICAgICAgICAgICAgIC8vIEluc2VydCBhZHNieWdvb2dsZS5qcyBvbnRvIHRoZSBwYWdlLg0KICAgICAgICAgICAgICAgICAgICAgIGluc2VydEFkc0J5R29vZ2xlSnMoKTsNCiAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiTm8gR0RQUiIpOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgIGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgIC8vIEdEUFIgRE9FUyBBUFBMWQ0KICAgICAgICAgICAgICAgICAgICAgIC8vIFB1cnBvc2UgMSByZWZlcnMgdG8gdGhlIHN0b3JhZ2UgYW5kL29yIGFjY2VzcyBvZiBpbmZvcm1hdGlvbiBvbiBhIGRldmljZS4NCiAgICAgICAgICAgICAgICAgICAgICB2YXIgaGFzRGV2aWNlU3RvcmFnZUFuZEFjY2Vzc0NvbnNlbnQgPSB0Y0RhdGEucHVycG9zZS5jb25zZW50c1sxXSB8fCBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgICAvLyBHb29nbGUgUmVxdWlyZXMgQ29uc2VudCBmb3IgUHVycG9zZSAxDQogICAgICAgICAgICAgICAgICAgICAgaWYgKGhhc0RldmljZVN0b3JhZ2VBbmRBY2Nlc3NDb25zZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAvLyBHTE9CQUwgVkVORE9SIExJU1QgLSBodHRwczovL2lhYmV1cm9wZS5ldS92ZW5kb3ItbGlzdC10Y2YtdjItMC8NCiAgICAgICAgICAgICAgICAgICAgICAgIC8vIENIRUNLIEZPUiBHT09HTEUgQURWRVJUSVNJTkcgUFJPRFVDVFMgQ09OU0VOVC4gKElBQiBWZW5kb3IgSUQgNzU1KQ0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGhhc0dvb2dsZUFkdmVydGlzaW5nUHJvZHVjdHNDb25zZW50ID0gdGNEYXRhLnZlbmRvci5jb25zZW50c1s3NTVdIHx8IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHVzZXIgZ2F2ZSBHb29nbGUgQWR2ZXJ0aXNpbmcgUHJvZHVjdHMgY29uc2VudCAoaWFiIHZlbmRvciA3NTUpDQogICAgICAgICAgICAgICAgICAgICAgICBpZihoYXNHb29nbGVBZHZlcnRpc2luZ1Byb2R1Y3RzQ29uc2VudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbnNlcnQgYWRzYnlnb29nbGUuanMgb250byB0aGUgcGFnZS4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0QWRzQnlHb29nbGVKcygpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygiR0RQUiAmIENvbnNlbnQiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgfSApOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgY250Kys7DQogICAgICAgICAgfSwgMTAwKTsNCiAgICAgICAgfSkoKTsNCiAgICAgIDwvc2NyaXB0Pg0KDQo8c2NyaXB0IGFzeW5jPSJhc3luYyIgc3JjPSJodHRwczovL3NlY3VyZXB1YmFkcy5nLmRvdWJsZWNsaWNrLm5ldC90YWcvanMvZ3B0LmpzIj48L3NjcmlwdD4NCjxzY3JpcHQ+DQogIHdpbmRvdy5nb29nbGV0YWcgPSB3aW5kb3cuZ29vZ2xldGFnIHx8IHtjbWQ6IFtdfTsNCjwvc2NyaXB0Pg0KDQo8c2NyaXB0Pg0KCWdvb2dsZXRhZy5jbWQucHVzaChmdW5jdGlvbigpIHsNCgkJZ29vZ2xldGFnLnB1YmFkcygpLnNldCgiYWRzZW5zZV9iYWNrZ3JvdW5kX2NvbG9yIiwgIkZGRkZGRiIpOw0KCX0pOw0KPC9zY3JpcHQ+DQoNCjxzY3JpcHQ+DQoJZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgew0KCQlnb29nbGV0YWcuZGVmaW5lU2xvdCgiLzEyMzQvdHJhdmVsL2FzaWEiLCBbNzI4LCA5MF0sICJkaXYtZ3B0LWFkLTEyMzQ1Njc4OS0wIikNCgkJCS5hZGRTZXJ2aWNlKGdvb2dsZXRhZy5wdWJhZHMoKSkNCgkJCS5zZXRUYXJnZXRpbmcoImludGVyZXN0cyIsIFsic3BvcnRzIiwgIm11c2ljIiwgIm1vdmllcyJdKTsNCgkJZ29vZ2xldGFnLmRlZmluZVNsb3QoIi8xMjM0L3RyYXZlbC9hc2lhIiwgW1s0NjgsIDYwXSwgWzcyOCwgOTBdLCBbMzAwLCAyNTBdXSwgImRpdi1ncHQtYWQtMTIzNDU2Nzg5LTEiKQ0KCQkJLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKQ0KCQkJLnNldFRhcmdldGluZygiZ2VuZGVyIiwgIm1hbGUiKQ0KCQkJLnNldFRhcmdldGluZygiYWdlIiwgIjIwLTMwIik7DQoJCWdvb2dsZXRhZy5wdWJhZHMoKS5zZXRUYXJnZXRpbmcoInRvcGljIiwiYmFza2V0YmFsbCIpOw0KCQlnb29nbGV0YWcucHViYWRzKCkuZW5hYmxlU2luZ2xlUmVxdWVzdCgpOw0KCQlnb29nbGV0YWcuZW5hYmxlU2VydmljZXMoKTsNCgl9KTsNCjwvc2NyaXB0Pg0KDQo8c3R5bGU+DQoJLnN1YnN1YnN1YiB7DQogICAgbGlzdC1zdHlsZTogbm9uZTsNCiAgICBtYXJnaW46IDhweCAwIDA7DQogICAgcGFkZGluZzogMDsNCiAgICBmb250LXNpemU6IDEzcHg7DQogICAgZmxvYXQ6IGxlZnQ7DQogICAgY29sb3I6ICM2NjY7DQogICAgZGlzcGxheTogbm9uZTsNCgl9DQoJDQoJLmVuZGxlc3Mtc2hhcmVkLWFyZWEuc2t5QWR2ZXJ0IHsNCiAgICBwb3NpdGlvbjogYWJzb2x1dGUhaW1wb3J0YW50Ow0KICAgIGZsb2F0OiBsZWZ0Ow0KCXotaW5kZXg6IDA7DQp9DQo8L3N0eWxlPg0KDQoNCg0KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPg0KdmFyIF9zZl9hc3luY19jb25maWc9e307DQovKiogQ09ORklHVVJBVElPTiBTVEFSVCAqKi8NCl9zZl9hc3luY19jb25maWcudWlkID0gMjc0MjA7DQpfc2ZfYXN5bmNfY29uZmlnLmRvbWFpbiA9ICd0aW9uLnJvJzsNCi8qbmV3c2JlYXRfc2luZ2xlX3BhZ2UqLw0KLyoqIENPTkZJR1VSQVRJT04gRU5EICoqLw0KdmFyIF9jYnEgPSB3aW5kb3cuX2NicSB8fCBbXTsgX2NicS5wdXNoKFsnX2FjY3QnLCAnYW5vbiddKTsNCihmdW5jdGlvbigpew0KZnVuY3Rpb24gbG9hZENoYXJ0YmVhdCgpIHsNCndpbmRvdy5fc2ZfZW5kcHQ9KG5ldyBEYXRlKCkpLmdldFRpbWUoKTsNCnZhciBlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7DQplLnNldEF0dHJpYnV0ZSgnbGFuZ3VhZ2UnLCAnamF2YXNjcmlwdCcpOw0KDQoNCmUuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQvamF2YXNjcmlwdCcpOw0KZS5zZXRBdHRyaWJ1dGUoJ3NyYycsDQooKCdodHRwczonID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/ICdodHRwczovL2EyNDguZS5ha2FtYWkubmV0L2NoYXJ0YmVhdC5kb3dubG9hZC5ha2FtYWkuY29tLzEwMjUwOC8nIDogJ2h0dHA6Ly9zdGF0aWMuY2hhcnRiZWF0LmNvbS8nKSArDQonanMvY2hhcnRiZWF0X3B1Yi5qcycpOw0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChlKTsNCn0NCnZhciBvbGRvbmxvYWQgPSB3aW5kb3cub25sb2FkOw0Kd2luZG93Lm9ubG9hZCA9ICh0eXBlb2Ygd2luZG93Lm9ubG9hZCAhPSAnZnVuY3Rpb24nKSA/DQpsb2FkQ2hhcnRiZWF0IDogZnVuY3Rpb24oKSB7IG9sZG9ubG9hZCgpOyBsb2FkQ2hhcnRiZWF0KCk7IH07DQp9KSgpOw0KCQ0KPC9zY3JpcHQ+DQoNCjwhLS0vU3RhcnQgYXN5bmMgdHJhZmljLnJvLy0tPg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGlkPSJ0cmZjX3RyYWZpY19zY3JpcHQiPg0KLy88IVtDREFUQVsNCnRfcmlkID0gJ3Rpb24tcm8nOw0KKGZ1bmN0aW9uKCl7IHRfanNfZHdfdGltZT1uZXcgRGF0ZSgpLmdldFRpbWUoKTsNCnRfanNfbG9hZF9zcmM9KChkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA9PSAnaHR0cDonKT8naHR0cDovL3N0b3JhZ2UuJzonaHR0cHM6Ly9zZWN1cmUuJykrJ3RyYWZpYy5yby9qcy90cmFmaWMuanM/dGs9JysoTWF0aC5wb3coMTAsMTYpKk1hdGgucmFuZG9tKCkpKycmdF9yaWQ9Jyt0X3JpZDsNCmlmIChkb2N1bWVudC5jcmVhdGVFbGVtZW50ICYmIGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lICYmIGRvY3VtZW50Lmluc2VydEJlZm9yZSkgew0KdF9hc19qc19lbj10cnVlO3ZhciBzbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO3NuLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0Jztzbi5hc3luYyA9IHRydWU7IHNuLnNyYyA9IHRfanNfbG9hZF9zcmM7DQp2YXIgcHNuID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdO3Bzbi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzbiwgcHNuKTsgfSBlbHNlIHsNCmRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCclM0NzY3JpJyArICdwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiICcrJ3NyYz0iJyt0X2pzX2xvYWRfc3JjKyc7IiUzRSUzQy9zYycgKyAncmlwdCUzRScpKTsgfX0pKCk7DQovL11dPg0KPC9zY3JpcHQ+DQo8bm9zY3JpcHQ+PHA+PGEgaHJlZj0iaHR0cDovL3d3dy50cmFmaWMucm8vc3RhdGlzdGljaS90aW9uLnJvIj48aW1nIGFsdD0idGlvbi5ybyIgc3JjPSJodHRwOi8vbG9nLnRyYWZpYy5yby9jZ2ktYmluL3BsLmRsbD9yaWQ9dGlvbi1ybyI+PC9hPiA8YSBocmVmPSJodHRwOi8vd3d3LnRyYWZpYy5yby8iPldlYiBhbmFseXRpY3M8L2E+PC9wPjwvbm9zY3JpcHQ+DQo8IS0tL0VuZCBhc3luYyB0cmFmaWMucm8vLS0+DQo8IS0tT25lc2lnbmFsLS0+DQo8c2NyaXB0IHNyYz0iaHR0cHM6Ly9jZG4ub25lc2lnbmFsLmNvbS9zZGtzL09uZVNpZ25hbFNESy5qcyIgYXN5bmM9IiI+PC9zY3JpcHQ+DQo8c2NyaXB0Pg0KICB3aW5kb3cuT25lU2lnbmFsID0gd2luZG93Lk9uZVNpZ25hbCB8fCBbXTsNCiAgT25lU2lnbmFsLnB1c2goZnVuY3Rpb24oKSB7DQogICAgT25lU2lnbmFsLmluaXQoew0KICAgICAgYXBwSWQ6ICIzYzM2OTM3Yy0yYWE0LTRiYTMtYjI0My1lMzFkMmZjZmNjMzQiLA0KICAgIH0pOw0KICB9KTsNCjwvc2NyaXB0Pg0KPCEtLUVuZCBPbmVzaWduYWwtLT4NCjxzdHlsZT4NCi5mb290ZXIgew0KICAgcG9zaXRpb246IGZpeGVkOw0KICAgbGVmdDogMDsNCiAgIGJvdHRvbTogMDsNCiAgIHdpZHRoOiAxMDAlOw0KICAgY29sb3I6IHdoaXRlOw0KICAgdGV4dC1hbGlnbjogbGVmdDsNCgl6LWluZGV4OjEwMDA7DQp9DQouYnV0dG9uY29uc2VudHsNCiBiYWNrZ3JvdW5kOiBkYXJrcmVkOw0KICAgIGNvbG9yOiB3aGl0ZTsNCiAgICBmb250LXNpemU6IDE1cHg7DQogICAgYm9yZGVyOiAwOw0KICAgIGJvcmRlci1yYWRpdXM6IDEwcHggMTBweCAwIDA7DQogICAgcGFkZGluZzogNXB4IDIwcHggNXB4IDIwcHg7DQogICAgbWFyZ2luLWJvdHRvbTogLTEwcHg7DQp9DQo8L3N0eWxlPjxkaXYgY2xhc3M9ImZvb3RlciI+DQo8IS0tIENvb2tpZVBybyBDb29raWVzIFNldHRpbmdzIGJ1dHRvbiBzdGFydCAtLT4NCjxidXR0b24gY2xhc3M9ImJ1dHRvbmNvbnNlbnQiIGlkPSJvdC1zZGstYnRuIiBvbmNsaWNrPSJPcHRhbm9uLlRvZ2dsZUluZm9EaXNwbGF5KCk7Ij5Nb2RpZmljxIMgU2V0xINyaWxlPC9idXR0b24+DQo8IS0tIENvb2tpZVBybyBDb29raWVzIFNldHRpbmdzIGJ1dHRvbiBlbmQgLS0+DQo8L2Rpdj4NCjxzdHlsZT4NCgkuZ2FsbGVyaWVzT3JWaWRlb3NQYWdlQ29udGFpbmVyIC5nYWxsZXJ5V3JhcHBlciAuaW1hZ2VzIC5maXJzdExheWVyew0KCQlkaXNwbGF5Om5vbmU7DQoJfQ0KPC9zdHlsZT4gICAgICAgICAgICA8bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xNngxNi9sb2dvVGltaXMucG5nIiBzaXplcz0iMTZ4MTYiIC8+CiAgICAgICAgICAgIDxsaW5rIHJlbD0iaWNvbiIgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wNi8rb3RmLzMyeDMyL2xvZ29UaW1pcy5wbmciIHNpemVzPSIzMngzMiIgLz4KICAgICAgICAgICAgPGxpbmsgcmVsPSJpY29uIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzA2LytvdGYvOTZ4OTYvbG9nb1RpbWlzLnBuZyIgc2l6ZXM9Ijk2eDk2IiAvPgogICAgICAgICAgICA8bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xMjh4MTI4L2xvZ29UaW1pcy5wbmciIHNpemVzPSIxMjh4MTI4IiAvPgogICAgICAgICAgICA8bGluayByZWw9Imljb24iIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xOTZ4MTk2L2xvZ29UaW1pcy5wbmciIHNpemVzPSIxOTZ4MTk2IiAvPgogICAgICAgICAgICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzA2LytvdGYvNTd4NTcvbG9nb1RpbWlzLnBuZyIgc2l6ZXM9IjU3eDU3IiAvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi82MHg2MC9sb2dvVGltaXMucG5nIiBzaXplcz0iNjB4NjAiIC8+CiAgICAgICAgICAgIDxsaW5rIHJlbD0iYXBwbGUtdG91Y2gtaWNvbi1wcmVjb21wb3NlZCIgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wNi8rb3RmLzcyeDcyL2xvZ29UaW1pcy5wbmciIHNpemVzPSI3Mng3MiIgLz4KICAgICAgICAgICAgPGxpbmsgcmVsPSJhcHBsZS10b3VjaC1pY29uLXByZWNvbXBvc2VkIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzA2LytvdGYvNzZ4NzYvbG9nb1RpbWlzLnBuZyIgc2l6ZXM9Ijc2eDc2IiAvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xMTR4MTE0L2xvZ29UaW1pcy5wbmciIHNpemVzPSIxMTR4MTE0IiAvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xMjB4MTIwL2xvZ29UaW1pcy5wbmciIHNpemVzPSIxMjB4MTIwIiAvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xNDR4MTQ0L2xvZ29UaW1pcy5wbmciIHNpemVzPSIxNDR4MTQ0IiAvPgogICAgICAgICAgICA8bGluayByZWw9ImFwcGxlLXRvdWNoLWljb24tcHJlY29tcG9zZWQiIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi8xNTJ4MTUyL2xvZ29UaW1pcy5wbmciIHNpemVzPSIxNTJ4MTUyIiAvPgogICAgCjxtZXRhIG5hbWU9ImFwcGxpY2F0aW9uLW5hbWUiIGNvbnRlbnQ9IlRpb24iLz4KPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1UaWxlQ29sb3IiIGNvbnRlbnQ9IiNGRkZGRkYiIC8+CiAgICA8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLVRpbGVJbWFnZSIgY29udGVudD0iaHR0cHM6Ly93d3cudGlvbi5yby93cC1jb250ZW50L3VwbG9hZHMvMjAyMC8wNi8rb3RmLzE0NHgxNDQvbG9nb1RpbWlzLnBuZyIvPgogICAgPG1ldGEgbmFtZT0ibXNhcHBsaWNhdGlvbi1zcXVhcmU3MHg3MGxvZ28iIGNvbnRlbnQ9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC91cGxvYWRzLzIwMjAvMDYvK290Zi83MHg3MC9sb2dvVGltaXMucG5nIi8+CiAgICA8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLXNxdWFyZTE1MHgxNTBsb2dvIiBjb250ZW50PSJodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzA2LytvdGYvMTUweDE1MC9sb2dvVGltaXMucG5nIi8+CiAgICA8bWV0YSBuYW1lPSJtc2FwcGxpY2F0aW9uLXNxdWFyZTMxMHgzMTBsb2dvIiBjb250ZW50PSJodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDIwLzA2LytvdGYvMzEweDMxMC9sb2dvVGltaXMucG5nIi8+Cgo8bGluayByZWw9InN0eWxlc2hlZXQiIGlkPSJldC1kaXZpLWN1c3RvbWl6ZXItZ2xvYmFsLWNhY2hlZC1pbmxpbmUtc3R5bGVzIiBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvY2FjaGUvZXQvZ2xvYmFsL2V0LWRpdmktY3VzdG9taXplci1nbG9iYWwtMTY0MjA3MjQ3NTU0ODcubWluLmNzcyIgb25lcnJvcj0iZXRfY29yZV9wYWdlX3Jlc291cmNlX2ZhbGxiYWNrKHRoaXMsIHRydWUpIiBvbmxvYWQ9ImV0X2NvcmVfcGFnZV9yZXNvdXJjZV9mYWxsYmFjayh0aGlzKSIgLz48c3R5bGU+Ci5haS12aWV3cG9ydHMgICAgICAgICAgICAgICAgIHstLWFpOiAxO30KLmFpLXZpZXdwb3J0LTMgICAgICAgICAgICAgICAgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7fQouYWktdmlld3BvcnQtMiAgICAgICAgICAgICAgICB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDt9Ci5haS12aWV3cG9ydC0xICAgICAgICAgICAgICAgIHsgZGlzcGxheTogaW5oZXJpdCAhaW1wb3J0YW50O30KLmFpLXZpZXdwb3J0LTAgICAgICAgICAgICAgICAgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7fQpAbWVkaWEgKG1pbi13aWR0aDogNzY4cHgpIGFuZCAobWF4LXdpZHRoOiA5NzlweCkgewouYWktdmlld3BvcnQtMSAgICAgICAgICAgICAgICB7IGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDt9Ci5haS12aWV3cG9ydC0yICAgICAgICAgICAgICAgIHsgZGlzcGxheTogaW5oZXJpdCAhaW1wb3J0YW50O30KfQpAbWVkaWEgKG1heC13aWR0aDogNzY3cHgpIHsKLmFpLXZpZXdwb3J0LTEgICAgICAgICAgICAgICAgeyBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7fQouYWktdmlld3BvcnQtMyAgICAgICAgICAgICAgICB7IGRpc3BsYXk6IGluaGVyaXQgIWltcG9ydGFudDt9Cn0KPC9zdHlsZT4KCiAgICAgICAgPC9oZWFkPgogICAgPGJvZHkgY2xhc3M9ImVycm9yNDA0IHVua25vd25Vc2VyQWdlIGV0X3BiX2J1dHRvbl9oZWxwZXJfY2xhc3MgZXRfbm9uX2ZpeGVkX25hdiBldF9zaG93X25hdiBldF9jb3Zlcl9iYWNrZ3JvdW5kIGV0X3BiX2d1dHRlciB3aW5kb3dzIGV0X3BiX2d1dHRlcnMzIGV0X3ByaW1hcnlfbmF2X2Ryb3Bkb3duX2FuaW1hdGlvbl9mYWRlIGV0X3NlY29uZGFyeV9uYXZfZHJvcGRvd25fYW5pbWF0aW9uX2ZhZGUgZXRfcGJfZm9vdGVyX2NvbHVtbnM0IGV0X2hlYWRlcl9zdHlsZV9sZWZ0IGV0X3JpZ2h0X3NpZGViYXIgZXRfZGl2aV90aGVtZSBldC1kYiBldF9taW5pZmllZF9qcyBldF9taW5pZmllZF9jc3MiPgogICAgICAgIDxkaXYgaWQ9InBhZ2UtY29udGFpbmVyIgogICAgICAgICAgICA+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGhlYWRlciBpZD0ibWFpbi1oZWFkZXIiIGNsYXNzPSJzdHVjayIgZGF0YS1oZWlnaHQtb25sb2FkPSI3MyI+CiAgICAgICAgPGRpdiBjbGFzcz0iY29udGFpbmVyIGNsZWFyZml4IGV0X21lbnVfY29udGFpbmVyIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImxvZ29fY29udGFpbmVyIj4KICAgIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vIj4KICAgICAgICA8aW1nCiAgICAgICAgICAgIHNyYz0iL3dwLWNvbnRlbnQvdGhlbWVzL2luZm9ybXJvbWFuaWEvaWNvbnMvbG9nb1RpbWlzLnBuZyIKICAgICAgICAgICAgYWx0PSJUaW9uIgogICAgICAgICAgICBpZD0ibG9nbyIKICAgICAgICAgICAgZGF0YS1oZWlnaHQtcGVyY2VudGFnZT0iNTQiCiAgICAgICAgLz4KICAgICAgICA8cCBjbGFzcz0ibW9iaWxlX2xhYmVsIj5UaW9uPC9wPgogICAgPC9hPgo8L2Rpdj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdgogICAgaWQ9ImV0LXRvcC1uYXZpZ2F0aW9uIgogICAgZGF0YS1oZWlnaHQ9IiA2NiIKICAgIGRhdGEtZml4ZWQtaGVpZ2h0PSI0MCIKPgogICAgICAgICAgICA8bmF2IGlkPSJ0b3AtbWVudS1uYXYiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGlkPSJ0b3AtbWVudSIgY2xhc3M9Im5hdiI+PGxpIGlkPSJtZW51LWl0ZW0tODM3MjY0IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tODM3MjY0Ij48YSBocmVmPSIvIj5BY2FzxIM8L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tODM3Mjg4IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0taGFzLWNoaWxkcmVuIG1lbnUtaXRlbS04MzcyODgiPjxhIGhyZWY9Ii8iPsWedGlyaTwvYT4KPHVsIGNsYXNzPSJzdWItbWVudSI+Cgk8bGkgaWQ9Im1lbnUtaXRlbS04MzcyOTEiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS04MzcyOTEiPjxhIGhyZWY9Ii9zdGlyaWxlLWp1ZGV0dWx1aS10aW1pcyI+xZ50aXJpIFRpbWnImTwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tMTEzNDU3OCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTExMzQ1NzgiPjxhIGhyZWY9Ii9yb21hbmlhIj7ImHRpcmkgbmHIm2lvbmFsZTwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tODM3MzAzIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tODM3MzAzIj48YSBocmVmPSIvbWFwYW1vbmQvIj5TdGlyaSBpbnRlcm5hxaNpb25hbGU8L2E+PC9saT4KCTxsaSBpZD0ibWVudS1pdGVtLTgzNzMwOSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTgzNzMwOSI+PGEgaHJlZj0iL2V2ZW5pbWVudC8iPkV2ZW5pbWVudDwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tOTk3MjkxIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tOTk3MjkxIj48YSBocmVmPSIvaHR0cHM6Ly93d3cudGlvbi5yby9zYW5hdGF0ZSI+U8SDbsSDdGF0ZTwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tODM3MzE1IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tODM3MzE1Ij48YSBocmVmPSIvZWNvbm9taWMvIj5FY29ub21pYzwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tODM3MzM2IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tODM3MzM2Ij48YSBocmVmPSIvc3Rpcmktc3BvcnRpdmUvIj5TcG9ydDwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tODM3MzIxIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tODM3MzIxIj48YSBocmVmPSIvdGlvbi1jZWxlLW1haS10YXJpLXBhcnR5LXVyaS8iPlBhcnR5PC9hPjwvbGk?+Cgk8bGkgaWQ9Im1lbnUtaXRlbS04ODE2MjYiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS04ODE2MjYiPjxhIGhyZWY9Ii9udXRyaXRpZS8iPk51dHJpyJtpZTwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tOTE0NDM3IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tOTE0NDM3Ij48YSBocmVmPSIvdGFyZ3VsLWltb2JpbGlhciI+VMOicmcgaW1vYmlsaWFyPC9hPjwvbGk?+CjwvdWw?+CjwvbGk?+CjxsaSBpZD0ibWVudS1pdGVtLTg4MDI0NiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTg4MDI0NiI+PGEgaHJlZj0iL2NhcGl0YWxhLWN1bHR1cmFsYS8iPlRNMjAyMzwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS04MzczMjciIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS04MzczMjciPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnlvdXR1YmUuY29tL3VzZXIvVGlvblRpbWlzT25saW5lL3ZpZGVvcyI+VmlkZW88L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tODM3Mzc1IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLWN1c3RvbSBtZW51LWl0ZW0tb2JqZWN0LWN1c3RvbSBtZW51LWl0ZW0tODM3Mzc1Ij48YSBocmVmPSIvYW5nYWphcmktdGlvbi8iPkFOR0FKxIJSSTwvYT48L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS04ODk5MDciIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS1oYXMtY2hpbGRyZW4gbWVudS1pdGVtLTg4OTkwNyI+PGEgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9vcGVuZXIgbm9yZWZlcnJlciIgaHJlZj0iL21pY2EtcHVibGljaXRhdGUvIj5NSUNBIFBVQkxJQ0lUQVRFPC9hPgo8dWwgY2xhc3M9InN1Yi1tZW51Ij4KCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc4MzQiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtdGF4b25vbXkgbWVudS1pdGVtLW9iamVjdC1lbmV3c19hcnRpY2xlX2NvbHVtbnMgbWVudS1pdGVtLWhhcy1jaGlsZHJlbiBtZW51LWl0ZW0tMTA3NzgzNCI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvIj5JTU9CSUxJQVJFPC9hPgoJPHVsIGNsYXNzPSJzdWItbWVudSI+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg1NiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg1NiI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS12YW56YXJpLWdhcnNvbmllcmUvIj5JbW9iaWxpYXJlIFZhbnphcmkgJiM4MjExOyBHYXJzb25pZXJlPC9hPjwvbGk?+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg1OCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg1OCI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS12YW56YXJpLW8tY2FtZXJhLyI+SW1vYmlsaWFyZSBWYW56YXJpICYjODIxMTsgbyBjYW1lcmE8L2E+PC9saT4KCQk8bGkgaWQ9Im1lbnUtaXRlbS0xMDc3ODQ4IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXRheG9ub215IG1lbnUtaXRlbS1vYmplY3QtZW5ld3NfYXJ0aWNsZV9jb2x1bW5zIG1lbnUtaXRlbS0xMDc3ODQ4Ij48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL21pY2EtcHVibGljaXRhdGUvaW1vYmlsaWFyZS9pbW9iaWxpYXJlLXZhbnphcmktMi1jYW1lcmUvIj5JbW9iaWxpYXJlIFZhbnphcmkgJiM4MjExOyAyIGNhbWVyZTwvYT48L2xpPgoJCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc4NTAiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtdGF4b25vbXkgbWVudS1pdGVtLW9iamVjdC1lbmV3c19hcnRpY2xlX2NvbHVtbnMgbWVudS1pdGVtLTEwNzc4NTAiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vbWljYS1wdWJsaWNpdGF0ZS9pbW9iaWxpYXJlL2ltb2JpbGlhcmUtdmFuemFyaS0zLWNhbWVyZS8iPkltb2JpbGlhcmUgVmFuemFyaSAmIzgyMTE7IDMgY2FtZXJlPC9hPjwvbGk?+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg1MiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg1MiI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS12YW56YXJpLTQtY2FtZXJlLyI+SW1vYmlsaWFyZSBWYW56YXJpICYjODIxMTsgNCBjYW1lcmU8L2E+PC9saT4KCQk8bGkgaWQ9Im1lbnUtaXRlbS0xMDc3ODU0IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXRheG9ub215IG1lbnUtaXRlbS1vYmplY3QtZW5ld3NfYXJ0aWNsZV9jb2x1bW5zIG1lbnUtaXRlbS0xMDc3ODU0Ij48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL21pY2EtcHVibGljaXRhdGUvaW1vYmlsaWFyZS9pbW9iaWxpYXJlLXZhbnphcmktY2FzZS8iPkltb2JpbGlhcmUgVmFuemFyaSAmIzgyMTE7IENhc2U8L2E+PC9saT4KCQk8bGkgaWQ9Im1lbnUtaXRlbS0xMDc3ODYyIiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXRheG9ub215IG1lbnUtaXRlbS1vYmplY3QtZW5ld3NfYXJ0aWNsZV9jb2x1bW5zIG1lbnUtaXRlbS0xMDc3ODYyIj48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL21pY2EtcHVibGljaXRhdGUvaW1vYmlsaWFyZS9pbW9iaWxpYXJlLXZhbnphcmktdGVyZW51cmkvIj5JbW9iaWxpYXJlIFZhbnphcmkgJiM4MjExOyBUZXJlbnVyaTwvYT48L2xpPgoJCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc4NjAiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtdGF4b25vbXkgbWVudS1pdGVtLW9iamVjdC1lbmV3c19hcnRpY2xlX2NvbHVtbnMgbWVudS1pdGVtLTEwNzc4NjAiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vbWljYS1wdWJsaWNpdGF0ZS9pbW9iaWxpYXJlL2ltb2JpbGlhcmUtdmFuemFyaS1zcGF0aWktY29tZXJjaWFsZS8iPkltb2JpbGlhcmUgVmFuemFyaSAmIzgyMTE7IFNwYXRpaSBjb21lcmNpYWxlPC9hPjwvbGk?+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg0MiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg0MiI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS1pbmNoaXJpZXJpLWdhcnNvbmllcmUvIj5JbW9iaWxpYXJlIEluY2hpcmllcmkgJiM4MjExOyBHYXJzb25pZXJlPC9hPjwvbGk?+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg0NCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg0NCI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS1pbmNoaXJpZXJpLW8tY2FtZXJhLyI+SW1vYmlsaWFyZSBJbmNoaXJpZXJpICYjODIxMTsgbyBjYW1lcmE8L2E+PC9saT4KCQk8bGkgaWQ9Im1lbnUtaXRlbS0xMDc3ODM2IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXRheG9ub215IG1lbnUtaXRlbS1vYmplY3QtZW5ld3NfYXJ0aWNsZV9jb2x1bW5zIG1lbnUtaXRlbS0xMDc3ODM2Ij48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL21pY2EtcHVibGljaXRhdGUvaW1vYmlsaWFyZS9pbW9iaWxpYXJlLWluY2hpcmllcmktMi1jYW1lcmUvIj5JbW9iaWxpYXJlIEluY2hpcmllcmkgJiM4MjExOyAyIGNhbWVyZTwvYT48L2xpPgoJCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc4MzgiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtdGF4b25vbXkgbWVudS1pdGVtLW9iamVjdC1lbmV3c19hcnRpY2xlX2NvbHVtbnMgbWVudS1pdGVtLTEwNzc4MzgiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vbWljYS1wdWJsaWNpdGF0ZS9pbW9iaWxpYXJlL2ltb2JpbGlhcmUtaW5jaGlyaWVyaS0zLWNhbWVyZS8iPkltb2JpbGlhcmUgSW5jaGlyaWVyaSAmIzgyMTE7IDMgY2FtZXJlPC9hPjwvbGk?+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg0MCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg0MCI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS1pbmNoaXJpZXJpLWNhc2UvIj5JbW9iaWxpYXJlIEluY2hpcmllcmkgJiM4MjExOyBDYXNlPC9hPjwvbGk?+CgkJPGxpIGlkPSJtZW51LWl0ZW0tMTA3Nzg0NiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS10YXhvbm9teSBtZW51LWl0ZW0tb2JqZWN0LWVuZXdzX2FydGljbGVfY29sdW1ucyBtZW51LWl0ZW0tMTA3Nzg0NiI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby9taWNhLXB1YmxpY2l0YXRlL2ltb2JpbGlhcmUvaW1vYmlsaWFyZS1pbmNoaXJpZXJpLXNwYXRpaS1jb21lcmNpYWxlLyI+SW1vYmlsaWFyZSBJbmNoaXJpZXJpIOKAkyBTcGF0aWkgY29tZXJjaWFsZTwvYT48L2xpPgoJPC91bD4KPC9saT4KCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc0NTIiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS0xMDc3NDUyIj48YSBocmVmPSIvcHJlc3Rhcmktc2VydmljaWkvIj5QUkVTVMSCUkkgU0VSVklDSUk8L2E+PC9saT4KCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc0NDgiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS0xMDc3NDQ4Ij48YSBocmVmPSIvY29uc3RydWN0aWkvIj5DT05TVFJVQ8iaSUk8L2E+PC9saT4KCTxsaSBpZD0ibWVudS1pdGVtLTEwNzc0NDIiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS0xMDc3NDQyIj48YSBocmVmPSIvYXV0by1taWNhLXB1YmxpY2l0YXRlLyI+QVVUTzwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tMTA3NzQ1MCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLTEwNzc0NTAiPjxhIGhyZWY9Ii9kaXZlcnNlLyI+RElWRVJTRTwvYT48L2xpPgo8L3VsPgo8L2xpPgo8bGkgaWQ9Im1lbnUtaXRlbS04ODAyNDMiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtY3VzdG9tIG1lbnUtaXRlbS1vYmplY3QtY3VzdG9tIG1lbnUtaXRlbS04ODAyNDMiPjxhIGhyZWY9Ii90aW9uLWl0Y29tLyI+SVRDT008L2E+PC9saT4KPGxpIGlkPSJtZW51LWl0ZW0tMTMzODk1NCIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS0xMzM4OTU0Ij48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL2FwbGljYXRpaS1tb2JpbGUvIj5NT0JJTDwvYT48L2xpPgo8L3VsPgogICAgICAgICAgICAgICAgICAgIDwvbmF2PgogICAgICAgIAogICAgCiAgICA8ZGl2IGlkPSJldF9tb2JpbGVfbmF2X21lbnUiPgoJCQkJPGRpdiBjbGFzcz0ibW9iaWxlX25hdiBjbG9zZWQiPgoJCQkJCTxzcGFuIGNsYXNzPSJzZWxlY3RfcGFnZSI+U2VsZWN0IFBhZ2U8L3NwYW4+CgkJCQkJPHNwYW4gY2xhc3M9Im1vYmlsZV9tZW51X2JhciBtb2JpbGVfbWVudV9iYXJfdG9nZ2xlIj48L3NwYW4+CgkJCQk8L2Rpdj4KCQkJPC9kaXY+PC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmb3JtIG1ldGhvZD0iZ2V0IiBhY3Rpb249Ii8iIGNsYXNzPSJzZWFyY2hib3giPgogICAgPGZpZWxkc2V0PgogICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJzIiBjbGFzcz0ic3JjaCBzcmNoLWdvb2dsZSBzcmNoLWZvY3VzIj4KICAgICAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2VhcmNoIiBjbGFzcz0iYnRuIGJ0bi1zcmNoIGJ0bi1zcmNoLXJpZ2h0Ij4KICAgIDwvZmllbGRzZXQ+CjwvZm9ybT4gICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZXRfc2VhcmNoX291dGVyIj4KICAgIDxkaXYgY2xhc3M9ImNvbnRhaW5lciBldF9zZWFyY2hfZm9ybV9jb250YWluZXIiPgogICAgICAgIDxmb3JtIHJvbGU9InNlYXJjaCIgbWV0aG9kPSJnZXQiIGNsYXNzPSJldC1zZWFyY2gtZm9ybSIgYWN0aW9uPSJodHRwczovL3d3dy50aW9uLnJvLyI+CiAgICAgICAgICAgIDxpbnB1dAogICAgICAgICAgICAgICAgdHlwZT0ic2VhcmNoIgogICAgICAgICAgICAgICAgY2xhc3M9ImV0LXNlYXJjaC1maWVsZCIKICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPSJLZXJlc2VuZMWRIGtpZmVqZXrDqXMgLi4uIgogICAgICAgICAgICAgICAgdmFsdWU9IiIKICAgICAgICAgICAgICAgIG5hbWU9InMiCiAgICAgICAgICAgICAgICB0aXRsZT0iw41yamEgYmUgYSBrZXJlc2VuZMWRIGtpZmVqZXrDqXN0Li4uIgogICAgICAgICAgICAvPgogICAgICAgIDwvZm9ybT4KICAgICAgICA8c3BhbiBjbGFzcz0iZXRfY2xvc2Vfc2VhcmNoX2ZpZWxkIj48L3NwYW4+CiAgICA8L2Rpdj4KPC9kaXY+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2hlYWRlcj4KICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBpZD0iZXQtbWFpbi1hcmVhIj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZW5kbGVzcy1zaGFyZWQtYXJlYSBza3lBZHZlcnQiPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJldF9wYl9zZWN0aW9uIGV0X3BiX3NlY3Rpb25fMCBldF9zZWN0aW9uX3JlZ3VsYXIiPgoJCQkJCgkJCQkKCQkJCQoJCQkJCgkJCQkJPGRpdiBjbGFzcz0iZXRfcGJfcm93IGV0X3BiX3Jvd18wIj4KCQkJCTxkaXYgY2xhc3M9ImV0X3BiX2NvbHVtbiBldF9wYl9jb2x1bW5fNF80IGV0X3BiX2NvbHVtbl8wICAgIGV0X3BiX2Nzc19taXhfYmxlbmRfbW9kZV9wYXNzdGhyb3VnaCBldC1sYXN0LWNoaWxkIj4KCQkJCQoJCQkJCgkJCQk8ZGl2IGNsYXNzPSJldF9wYl9tb2R1bGUgZXRfcGJfY29kZSBldF9wYl9jb2RlXzAiPgoJCQkJCgkJCQkKCQkJCTxkaXYgY2xhc3M9ImV0X3BiX2NvZGVfaW5uZXIiPgoJCQkJCTxtZXRhIG5hbWU9ImNYZW5zZVBhcnNlOnBhZ2VjbGFzcyIgY29udGVudD0iZnJvbnRwYWdlIi8+CjxtZXRhIG5hbWU9ImNYZW5zZVBhcnNlOnVybCIgY29udGVudD0iaHR0cDovL3d3dy50aW9uLnJvLyAiLz4KPCEtLSBDeGVuc2UgU0FUSSBzY3JpcHQgMi4wIGJlZ2luIC0tPgo8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CndpbmRvdy5jWCA9IHdpbmRvdy5jWCB8fCB7fTsgY1guY2FsbFF1ZXVlID0gY1guY2FsbFF1ZXVlIHx8IFtdOwpjWC5jYWxsUXVldWUucHVzaChbJ3NldFNpdGVJZCcsICcxMTI3MzE5MDk5ODU0NzY2MzE4J10pOwpjWC5jYWxsUXVldWUucHVzaChbJ3NlbmRQYWdlVmlld0V2ZW50J10pOwo8L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGFzeW5jCnNyYz0iLy9jb2RlMy5hZHRsZ2MuY29tL2pzL3NhdGlfaW5pdC5qcyI+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKGZ1bmN0aW9uKGQscyxlLHQpe2U9ZC5jcmVhdGVFbGVtZW50KHMpO2UudHlwZT0ndGV4dC9qYXZhJytzO2UuYXN5bmM9J2FzeW5jJzsKZS5zcmM9J2h0dHAnKygnaHR0cHM6Jz09PWxvY2F0aW9uLnByb3RvY29sPydzOi8vcyc6JzovLycpKydjZG4uY3hlbnNlLmNvbS9jeC5qcyc7CnQ9ZC5nZXRFbGVtZW50c0J5VGFnTmFtZShzKVswXTt0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGUsdCk7fSkoZG9jdW1lbnQsJ3NjcmlwdCcpOwo8L3NjcmlwdD4KPCEtLSBDeGVuc2UgU0FUSSBzY3JpcHQgMi4wIGVuZCAtLT4KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJaWYgKHdpbmRvdy5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nYWxlcmlhLyIpICE9PSAtMSB8fCB3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2FsZXJpYWsvIikgIT09IC0xICkgCnsKZnVuY3Rpb24gU0FUSV9UcmFja1ZpZXcobG9jYXRpb25VUkwsIHJlZmVycmVyVVJMKSB7CiBpZihsb2NhdGlvblVSTCA9PT0gcmVmZXJyZXJVUkwpIHtyZXR1cm47fQogd2luZG93LmNYID0gd2luZG93LmNYIHx8IHt9OwogY1guY2FsbFF1ZXVlID0gY1guY2FsbFF1ZXVlIHx8IFtdOwogY1guY2FsbFF1ZXVlLnB1c2goWydpbml0aWFsaXplUGFnZSddKTsKIGNYLmNhbGxRdWV1ZS5wdXNoKFsnc2V0U2l0ZUlkJywgJzExMjczMTkwOTk4NTQ3NjYzMTgnXSk7CiBjWC5jYWxsUXVldWUucHVzaChbJ3NlbmRQYWdlVmlld0V2ZW50JywgeyAnbG9jYXRpb24nOiBsb2NhdGlvblVSTCwncmVmZXJyZXInOnJlZmVycmVyVVJMfV0pOwp9OwoJY29uc29sZS5sb2coJy9nYWxlcmlhLyB8IC9nYWxlcmlhay8nKTsKfTsKPC9zY3JpcHQ+CgkJCQk8L2Rpdj4gPCEtLSAuZXRfcGJfY29kZV9pbm5lciAtLT4KCQkJPC9kaXY+IDwhLS0gLmV0X3BiX2NvZGUgLS0+PGRpdiBjbGFzcz0iZXRfcGJfbW9kdWxlIGV0X3BiX2NvZGUgZXRfcGJfY29kZV8xIj4KCQkJCQoJCQkJCgkJCQk8ZGl2IGNsYXNzPSJldF9wYl9jb2RlX2lubmVyIj4KCQkJCQk8c3R5bGU+Ci5za3l7CnBvc2l0aW9uOmFic29sdXRlOwpwYWRkaW5nLWxlZnQ6MjcxcHg7Cn0KLnNreXN0aWNreXsKcG9zaXRpb246c3RpY2t5Owp0b3A6MDsKfQoubWFpbi1jb250YWluZXJ7IG1hcmdpbi10b3A6NDBweDt9Ci5tYWluLWNvbnRhaW5lciAqICsgKnttYXJnaW4tdG9wOjI1MHB4O30KCi5tYWluLWNvbnRlbnR7CiAgbWluLWhlaWdodDo4MDAwcHg7Cn0KCi5tYWluLWZvb3Rlcntwb3NpdGlvbjotd2Via2l0LXN0aWNreTsgcG9zaXRpb246c3RpY2t5OyBib3R0b206NTBweDt9Cjwvc3R5bGU+CjxtYWluIGNsYXNzPSJtYWluLWNvbnRhaW5lciI+CiAgPGhlYWRlciBjbGFzcz0ibWFpbi1oZWFkZXIiPjwvaGVhZGVyPgogIDxkaXYgY2xhc3M9Im1haW4tY29udGVudCI+PC9kaXY+CiAgPGZvb3RlciBjbGFzcz0ibWFpbi1mb290ZXIiPgo8c2NyaXB0PgogIHdpbmRvdy5nb29nbGV0YWcgPSB3aW5kb3cuZ29vZ2xldGFnIHx8IHtjbWQ6IFtdfTsKICBnb29nbGV0YWcuY21kLnB1c2goZnVuY3Rpb24oKSB7CiAgICBnb29nbGV0YWcuZGVmaW5lU2xvdCgnLzIxNjI3ODY4MzM0L1Rpb25faHBfc2t5MicsIFszMDAsIDYwMF0sICdkaXYtZ3B0LWFkLTE2MDgwNjQxMDkwNTUtMCcpLmFkZFNlcnZpY2UoZ29vZ2xldGFnLnB1YmFkcygpKTsKICAgIGdvb2dsZXRhZy5wdWJhZHMoKS5jb2xsYXBzZUVtcHR5RGl2cygpOwogICAgZ29vZ2xldGFnLmVuYWJsZVNlcnZpY2VzKCk7CiAgfSk7Cjwvc2NyaXB0Pgo8IS0tIC8yMTYyNzg2ODMzNC9UaW9uX2hwX3NreTIgLS0+CjxkaXYgaWQ9J2Rpdi1ncHQtYWQtMTYwODA2NDEwOTA1NS0wJz4KICA8c2NyaXB0PgogICAgZ29vZ2xldGFnLmNtZC5wdXNoKGZ1bmN0aW9uKCkgeyBnb29nbGV0YWcuZGlzcGxheSgnZGl2LWdwdC1hZC0xNjA4MDY0MTA5MDU1LTAnKTsgfSk7CiAgPC9zY3JpcHQ+CjwvZGl2Pgo8L2Zvb3Rlcj4KPC9tYWluPgoJCQkJPC9kaXY+IDwhLS0gLmV0X3BiX2NvZGVfaW5uZXIgLS0+CgkJCTwvZGl2PiA8IS0tIC5ldF9wYl9jb2RlIC0tPgoJCQk8L2Rpdj4gPCEtLSAuZXRfcGJfY29sdW1uIC0tPgoJCQkJCgkJCQkKCQkJPC9kaXY+IDwhLS0gLmV0X3BiX3JvdyAtLT4KCQkJCQoJCQkJCgkJCTwvZGl2PiA8IS0tIC5ldF9wYl9zZWN0aW9uIC0tPgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImVuZGxlc3Mtc2hhcmVkLWFyZWEgY29udGFpbmVyIj4KICAgICAgICAKICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJoZWlnaHQ6IDcwdmg7Ij4KICAgICAgICA8aDE+TmljaXVuIFJlenVsdGF0PC9oMT4KICAgICAgICA8cD5QYWdpbmEgY8SDdXRhdMSDIG51IGEgZm9zdCBnxINzaXTEgy4gw45uY2VyY2HIm2kgbyBjxIN1dGFyZSBtYWkgcHJvZnVuZMSDIHNhdSBmb2xvc2nIm2kgbmF2aWdhcmVhIGRlIGRlYXN1cHJhIHBlbnRydSBsb2NhbGl6YXJlYSBwb3N0xINyaWkuPC9wPgogICAgPC9kaXY+CiAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZvb3RlciBpZD0ibWFpbkZvb3RlciI+CiAgICA8ZGl2IGlkPSJmb290ZXJOYXYiPgogICAgICAgICAgICAgICAgICAgIDxkaXYgaWQ9ImZvb3RlckxvZ28iPgogICAgPGRpdiBjbGFzcz0iIj4KICAgICAgICA8YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvLyI+CiAgICAgICAgICAgIDxpbWcgc3JjPSIiIGlkPSJmb290ZXItbG9nbyI+CiAgICAgICAgPC9hPgogICAgPC9kaXY+CjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9vdGVyTWVudVVsIj4KICAgIDxkaXYgY2xhc3M9IiI+CiAgICAgICAgPHVsIGlkPSJmb290ZXItbWVudS1sb2dvLWxpbmUiIGNsYXNzPSIiPjxsaSBpZD0ibWVudS1pdGVtLTgzNzI1NSIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1jdXN0b20gbWVudS1pdGVtLW9iamVjdC1jdXN0b20gbWVudS1pdGVtLWhhcy1jaGlsZHJlbiBtZW51LWl0ZW0tODM3MjU1Ij48YSBocmVmPSIvIj5TZXJ2aWNpaTwvYT4KPHVsIGNsYXNzPSJzdWItbWVudSI+Cgk8bGkgaWQ9Im1lbnUtaXRlbS04NTYwNjUiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tODU2MDY1Ij48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3JlZGFjdGlhLyI+UmVkYWN0aWE8L2E+PC9saT4KCTxsaSBpZD0ibWVudS1pdGVtLTg1NjA1NiIgY2xhc3M9Im1lbnUtaXRlbSBtZW51LWl0ZW0tdHlwZS1wb3N0X3R5cGUgbWVudS1pdGVtLW9iamVjdC1wYWdlIG1lbnUtaXRlbS04NTYwNTYiPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vZm9sb3NpbnRhLWNvb2tpZS11cmlsb3IvIj5Gb2xvc2ludGEgQ29va2llLXVyaWxvcjwvYT48L2xpPgoJPGxpIGlkPSJtZW51LWl0ZW0tODU2MDU5IiBjbGFzcz0ibWVudS1pdGVtIG1lbnUtaXRlbS10eXBlLXBvc3RfdHlwZSBtZW51LWl0ZW0tb2JqZWN0LXBhZ2UgbWVudS1pdGVtLTg1NjA1OSI+PGEgaHJlZj0iaHR0cHM6Ly93d3cudGlvbi5yby90ZXJtZW5pLXNpLWNvbmRpdGlpLWRlLXV0aWxpemFyZS8iPlRlcm1lbmkgc2kgY29uZGl0aWkgZGUgdXRpbGl6YXJlPC9hPjwvbGk?+Cgk8bGkgaWQ9Im1lbnUtaXRlbS04NTYwNjIiIGNsYXNzPSJtZW51LWl0ZW0gbWVudS1pdGVtLXR5cGUtcG9zdF90eXBlIG1lbnUtaXRlbS1vYmplY3QtcGFnZSBtZW51LWl0ZW0tODU2MDYyIj48YSBocmVmPSJodHRwczovL3d3dy50aW9uLnJvL3BvbGl0aWNhLWRlLWNvbmZpZGVudGlhbGl0YXRlLyI+UG9saXRpY2EgZGUgY29uZmlkZW50aWFsaXRhdGU8L2E+PC9saT4KPC91bD4KPC9saT4KPC91bD4KICAgIDwvZGl2Pgo8L2Rpdj4KICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgIAogICAgPC9mb290ZXI+Cgk8c2NyaXB0PgoJCQkJCQkoZnVuY3Rpb24oJCkgewoJCQkJCQkJJCh3aW5kb3cpLmxvYWQoZnVuY3Rpb24oKSB7CgkJCQkJCQkJJCgiLmVuZXdzLWFydGljbGUtY29udGVudD50YWJsZSIpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkJCQkJCSQodGhpcykuY3NzKHsKCQkJCQkJCQkJCQkJCSJkaXNwbGF5IjogImJsb2NrIiwKCQkJCQkJCQkJCQkJCSJtaW4taGVpZ2h0IjogdGhpcy5vZmZzZXRIZWlnaHQgKyAyMCwKCQkJCQkJCQkJCQkJCSItd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZyIgOiAidG91Y2giLAoJCQkJCQkJCQkJCQkJIm92ZXJmbG93LXgiIDogImF1dG8iLAoJCQkJCQkJCQkJCQl9KTsKCQkJCQkJCQl9KTsKCQkJCQkJCQkKCQkJCQkJCX0pOwoKCQkJCQkJCXZhciBtcWwgPSB3aW5kb3cubWF0Y2hNZWRpYSgiKG9yaWVudGF0aW9uOiBwb3J0cmFpdCkiKTsKCQkJCQkJCWlmIChtcWwubWF0Y2hlcykgeyAgCgkJCQkJCQkJbXFsLmFkZExpc3RlbmVyKGZ1bmN0aW9uKG0pIHsKCQkJCQkJCQkJaWYgKG0ubWF0Y2hlcykgewoJCQkJCQkJCQkJJCgiLmVuZXdzLWFydGljbGUtY29udGVudD50YWJsZSIpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkJCQkJCQkJLy8gYWxlcnQoInNjcmVlbjogIiArc2NyZWVuLmhlaWdodCArICJ4IiArIHNjcmVlbi53aWR0aCArICIsIHRhYmxlOiAiKyB0aGlzLm9mZnNldEhlaWdodCArICJ4IiArIHRoaXMub2Zmc2V0V2lkdGgpOwoJCQkJCQkJCQkJCXZhciBvZmZzZXRIZWlnaHQgPSAoc2NyZWVuLmhlaWdodCAqIHRoaXMub2Zmc2V0V2lkdGgpL3NjcmVlbi53aWR0aDsKCQkJCQkJCQkJCSQodGhpcykuY3NzKHsKCQkJCQkJCQkJCQkJCQkiZGlzcGxheSI6ICJibG9jayIsCgkJCQkJCQkJCQkJCQkJIndpZHRoIjoiMTAwJSIsCgkJCQkJCQkJCQkJCQkJIm1pbi1oZWlnaHQiOiBvZmZzZXRIZWlnaHQsCgkJCQkJCQkJCQkJCQkJIm92ZXJmbG93LXgiIDogImF1dG8iLAoJCQkJCQkJCQkJCQkJfSk7CgkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJfSBlbHNlIHsKCQkJCQkJCQkJCSQoIi5lbmV3cy1hcnRpY2xlLWNvbnRlbnQ+dGFibGUiKS5lYWNoKGZ1bmN0aW9uKCkgewoJCQkJCQkJCQkJCS8vIGFsZXJ0KCJzY3JlZW46ICIgK3NjcmVlbi5oZWlnaHQgKyAieCIgKyBzY3JlZW4ud2lkdGggKyAiLCB0YWJsZTogIisgdGhpcy5vZmZzZXRIZWlnaHQgKyAieCIgKyB0aGlzLm9mZnNldFdpZHRoKTsKCQkJCQkJCQkJCQl2YXIgb2Zmc2V0SGVpZ2h0ID0gKHNjcmVlbi5oZWlnaHQgKiB0aGlzLm9mZnNldFdpZHRoKS9zY3JlZW4ud2lkdGg7CgkJCQkJCQkJCQkkKHRoaXMpLmNzcyh7CgkJCQkJCQkJCQkJCQkJImRpc3BsYXkiOiAiYmxvY2siLAoJCQkJCQkJCQkJCQkJCSJ3aWR0aCI6IjEwMCUiLAoJCQkJCQkJCQkJCQkJCSJtaW4taGVpZ2h0Ijogb2Zmc2V0SGVpZ2h0LAoJCQkJCQkJCQkJCQkJCSJvdmVyZmxvdy14IiA6ICJhdXRvIiwKCQkJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQkJfSk7CgkJCQkJCQkJCX0KCQkJCQkJCQl9KTsKCQkJCQkJCX0gZWxzZSB7ICAKCQkJCQkJCQltcWwuYWRkTGlzdGVuZXIoZnVuY3Rpb24obSkgewoJCQkJCQkJCQlpZiAobS5tYXRjaGVzKSB7CgkJCQkJCQkJCQkkKCIuZW5ld3MtYXJ0aWNsZS1jb250ZW50PnRhYmxlIikuZWFjaChmdW5jdGlvbigpIHsKCQkJCQkJCQkJCQl2YXIgb2Zmc2V0SGVpZ2h0ID0gKHNjcmVlbi5oZWlnaHQgKiB0aGlzLm9mZnNldFdpZHRoKS9zY3JlZW4ud2lkdGg7CgkJCQkJCQkJCQkJJCh0aGlzKS5jc3MoewoJCQkJCQkJCQkJCQkJCQkiZGlzcGxheSI6ICJibG9jayIsCgkJCQkJCQkJCQkJCQkJCSJ3aWR0aCI6IjEwMCUiLAoJCQkJCQkJCQkJCQkJCQkibWluLWhlaWdodCI6IG9mZnNldEhlaWdodCwKCQkJCQkJCQkJCQkJCQkJIm92ZXJmbG93LXgiIDogImF1dG8iLAoJCQkJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQkJCX0pOwoJCQkJCQkJCQl9IGVsc2UgewoJCQkJCQkJCQkJJCgiLmVuZXdzLWFydGljbGUtY29udGVudD50YWJsZSIpLmVhY2goZnVuY3Rpb24oKSB7CgkJCQkJCQkJCQkJdmFyIG9mZnNldEhlaWdodCA9IChzY3JlZW4uaGVpZ2h0ICogdGhpcy5vZmZzZXRXaWR0aCkvc2NyZWVuLndpZHRoOwoJCQkJCQkJCQkJCSQodGhpcykuY3NzKHsKCQkJCQkJCQkJCQkJCQkJImRpc3BsYXkiOiAiYmxvY2siLAoJCQkJCQkJCQkJCQkJCQkid2lkdGgiOiIxMDAlIiwKCQkJCQkJCQkJCQkJCQkJIm1pbi1oZWlnaHQiOiBvZmZzZXRIZWlnaHQsCgkJCQkJCQkJCQkJCQkJCSJvdmVyZmxvdy14IiA6ICJhdXRvIiwKCQkJCQkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJCQl9KTsKCQkJCQkJCQkJfQoJCQkJCQkJCX0pOwoJCQkJCQkJfQoJCQkJCQl9KSAoalF1ZXJ5KTsKCQkJCQk8L3NjcmlwdD4KPGRpdiBjbGFzcz0iZ2RwckJveENvbnRhaW5lciI+CiAgICA8ZGl2IGNsYXNzPSJnZHByQm94Qm9keSI+CiAgICAgICAgPGRpdiBjbGFzcz0iZ2RwckJveFRleHQgZC1zbS1pbmxpbmUtYmxvY2sgZC1tZC1ibG9jayI+CiAgICAgICAgICAgIDxwPjxpbWcgc3JjPSIvd3AtY29udGVudC90aGVtZXMvaW5mb3Jtcm9tYW5pYS9pY29ucy9sb2dvVGltaXMucG5nIiBhbHQ9IlRpb24ucm8gbG9nbyIgd2lkdGg9IjEzNSIgaGVpZ2h0PSI4MCIgLz48c3BhbiBjbGFzcz0idGl0bGUiPlBlbnRydSBub2ksIGNvbmZpZGVuyJtpYWxpdGF0ZWEgRHZzLiBlc3RlIGltcG9ydGFudMSDPC9zcGFuPjwvcD4KPHA+Tm9pIMiZaSBwYXJ0ZW5lcmlpIG5vyJl0cmkgdXRpbGl6xINtIHRlaG5vbG9naWksIGN1bSBhciBmaSBtb2R1bGVsZSBjb29raWUsIMiZaSB2xIMgcHJvY2VzxINtIGRhdGVsZSBjdSBjYXJhY3RlciBwZXJzb25hbCwgcHJlY3VtIGFkcmVzZWxlIElQIMiZaSBpZGVudGlmaWNhdG9yaWkgY29va2llLCBwZW50cnUgYSBwZXJzb25hbGl6YSBhbnVuyJt1cmlsZSBwdWJsaWNpdGFyZSDImWkgY29uyJtpbnV0dWwgw65uIGZ1bmPIm2llIGRlIGludGVyZXNlbGUgZHZzLiwgcGVudHJ1IGEgbcSDc3VyYSBlZmljaWVuyJthIGFudW7Im3VyaWxvciDImWkgYSBjb27Im2ludXR1bHVpIMiZaSBwZW50cnUgYSBvYsibaW5lIGluZm9ybWHIm2lpIGRlc3ByZSBwdWJsaWN1bCBjYXJlIGEgdsSDenV0IGFudW7Im3VyaWxlIMiZaSBjb27Im2ludXR1bC4gRmFjZcibaSBjbGljIG1haSBqb3MgcGVudHJ1IGEgdsSDIGRhIGNvbnNpbcibxINtw6JudHVsIHByaXZpbmQgdXRpbGl6YXJlYSBhY2VzdGVpIHRlaG5vbG9naWkgyJlpIHByb2Nlc2FyZWEgZGF0ZWxvciBkdnMuIGN1IGNhcmFjdGVyIHBlcnNvbmFsIMOubiBhY2VzdGUgc2NvcHVyaS4gVsSDIHB1dGXIm2kgcsSDemfDom5kaSDImWkgcHV0ZcibaSBzY2hpbWJhIG9wyJtpdW5pbGUgw65uIG9yaWNlIG1vbWVudCwgcmV2ZW5pbmQgbGEgYWNlc3Qgc2l0ZS48L3A+CjxwPjxhIGhyZWY9Imh0dHBzOi8vd3d3LnRpb24ucm8vZm9sb3NpbnRhLWNvb2tpZS11cmlsb3IvIiB0YXJnZXQ9Il9ibGFuayIgcmVsPSJub29wZW5lciI+UGVudHJ1IGRldGFsaWkgYXBhc2F0aSBhaWNpPC9hPjwvcD4KCiAgICAgICAgPC9kaXY+CiAgICAgICAgPGRpdiBjbGFzcz0iZ2RwckJveEJ1dHRvbiBteC1hdXRvIGQtc20taW5saW5lLWJsb2NrIGQtbWQtYmxvY2sgZmxvYXQtc20tcmlnaHQgZmxvYXQtbWQtbm9uZSI+CiAgICAgICAgICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iYnRuIGJ0bi1vdXRsaW5lLXN1Y2Nlc3MgdGV4dC13aGl0ZSBjYW5jZWxCdXR0b24iPk51IHN1bnQgZGUgYWNvcmQ8L2J1dHRvbj4KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJidXR0b24iIGNsYXNzPSJidG4gYnRuLW91dGxpbmUtc3VjY2VzcyB0ZXh0LXdoaXRlIGFjY2VwdEJ1dHRvbiI+U3VudCBkZSBhY29yZDwvYnV0dG9uPgogICAgICAgIDwvZGl2PgogICAgPC9kaXY+CjwvZGl2PgoKICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IgogICAgICAgICAgICBzcmM9Imh0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2VuZGxlc3MtY29yZS9qcy9nZHByQWNjZXB0LmpzP3Y9MSIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIAogICAgPjwvc2NyaXB0PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQkJPC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvdGhlbWVzL2luZm9ybXJvbWFuaWEvanMvc2NyaXB0cy5qcz92ZXI9MTU3NTI4OTAwMic?+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0Jz4KLyogPCFbQ0RBVEFbICovCnZhciBESVZJID0geyJpdGVtX2NvdW50IjoiJWQgSXRlbSIsIml0ZW1zX2NvdW50IjoiJWQgSXRlbXMifTsKdmFyIGV0X3Nob3J0Y29kZXNfc3RyaW5ncyA9IHsicHJldmlvdXMiOiJQcmV2aW91cyIsIm5leHQiOiJOZXh0In07CnZhciBldF9wYl9jdXN0b20gPSB7ImFqYXh1cmwiOiJodHRwczpcL1wvd3d3LnRpb24ucm9cL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsImltYWdlc191cmkiOiJodHRwczpcL1wvd3d3LnRpb24ucm9cL3dwLWNvbnRlbnRcL3RoZW1lc1wvRGl2aVwvaW1hZ2VzIiwiYnVpbGRlcl9pbWFnZXNfdXJpIjoiaHR0cHM6XC9cL3d3dy50aW9uLnJvXC93cC1jb250ZW50XC90aGVtZXNcL0RpdmlcL2luY2x1ZGVzXC9idWlsZGVyXC9pbWFnZXMiLCJldF9mcm9udGVuZF9ub25jZSI6ImFkZDdhMTM4NDEiLCJzdWJzY3JpcHRpb25fZmFpbGVkIjoiUGxlYXNlLCBjaGVjayB0aGUgZmllbGRzIGJlbG93IHRvIG1ha2Ugc3VyZSB5b3UgZW50ZXJlZCB0aGUgY29ycmVjdCBpbmZvcm1hdGlvbi4iLCJldF9hYl9sb2dfbm9uY2UiOiI2N2RiNmU2Y2Q4IiwiZmlsbF9tZXNzYWdlIjoiUGxlYXNlLCBmaWxsIGluIHRoZSBmb2xsb3dpbmcgZmllbGRzOiIsImNvbnRhY3RfZXJyb3JfbWVzc2FnZSI6IlBsZWFzZSwgZml4IHRoZSBmb2xsb3dpbmcgZXJyb3JzOiIsImludmFsaWQiOiJJbnZhbGlkIGVtYWlsIiwiY2FwdGNoYSI6IkNhcHRjaGEiLCJwcmV2IjoiUHJldiIsInByZXZpb3VzIjoiUHJldmlvdXMiLCJuZXh0IjoiTmV4dCIsIndyb25nX2NhcHRjaGEiOiJZb3UgZW50ZXJlZCB0aGUgd3JvbmcgbnVtYmVyIGluIGNhcHRjaGEuIiwiaWdub3JlX3dheXBvaW50cyI6Im5vIiwiaXNfZGl2aV90aGVtZV91c2VkIjoiMSIsIndpZGdldF9zZWFyY2hfc2VsZWN0b3IiOiIud2lkZ2V0X3NlYXJjaCIsImlzX2FiX3Rlc3RpbmdfYWN0aXZlIjoiIiwicGFnZV9pZCI6IiIsInVuaXF1ZV90ZXN0X2lkIjoiIiwiYWJfYm91bmNlX3JhdGUiOiIiLCJpc19jYWNoZV9wbHVnaW5fYWN0aXZlIjoibm8iLCJpc19zaG9ydGNvZGVfdHJhY2tpbmciOiIiLCJ0aW55bWNlX3VyaSI6IiJ9Owp2YXIgZXRfcGJfYm94X3NoYWRvd19lbGVtZW50cyA9IFtdOwovKiBdXT4gKi8KPC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC90aGVtZXMvRGl2aS9qcy9jdXN0b20ubWluLmpzP3Zlcj0zLjE5LjQnPjwvc2NyaXB0Pgo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCcgc3JjPSdodHRwczovL3d3dy50aW9uLnJvL3dwLWNvbnRlbnQvcGx1Z2lucy9lbmRsZXNzLWNvcmUvanMvYnJlYWtpbmctbmV3cy5qcz92ZXI9MTU4ODc1NDM1MSc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC9wbHVnaW5zL2VuZGxlc3MtY29yZS9qcy9hcnRpY2xlLXNsaWRlci5qcz92ZXI9MTYwMzEwNDQwMSc+PC9zY3JpcHQ+CjxzY3JpcHQgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyBzcmM9J2h0dHBzOi8vd3d3LnRpb24ucm8vd3AtY29udGVudC90aGVtZXMvRGl2aS9jb3JlL2FkbWluL2pzL2NvbW1vbi5qcz92ZXI9My4xOS40Jz48L3NjcmlwdD4KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnIHNyYz0naHR0cHM6Ly93d3cudGlvbi5yby93cC1pbmNsdWRlcy9qcy93cC1lbWJlZC5taW4uanM/dmVyPTUuMy4yJz48L3NjcmlwdD4KPHN0eWxlIGlkPSJldC1idWlsZGVyLW1vZHVsZS1kZXNpZ24tY2FjaGVkLWlubGluZS1zdHlsZXMiPkBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1pbi13aWR0aDo3NjhweCkgYW5kIChtYXgtd2lkdGg6OTgwcHgpey5ldF9wYl9zZWN0aW9uXzB7ZGlzcGxheTpub25lIWltcG9ydGFudH0uZXRfcGJfY29kZV8xe2Rpc3BsYXk6bm9uZSFpbXBvcnRhbnR9fUBtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC13aWR0aDo3NjdweCl7LmV0X3BiX3NlY3Rpb25fMHtkaXNwbGF5Om5vbmUhaW1wb3J0YW50fS5ldF9wYl9jb2RlXzF7ZGlzcGxheTpub25lIWltcG9ydGFudH19PC9zdHlsZT48c2NyaXB0PgpmdW5jdGlvbiBiMmEoYSl7dmFyIGIsYz0wLGw9MCxmPSIiLGc9W107aWYoIWEpcmV0dXJuIGE7ZG97dmFyIGU9YS5jaGFyQ29kZUF0KGMrKyk7dmFyIGg9YS5jaGFyQ29kZUF0KGMrKyk7dmFyIGs9YS5jaGFyQ29kZUF0KGMrKyk7dmFyIGQ9ZTw8MTZ8aDw8OHxrO2U9NjMmZD4+MTg7aD02MyZkPj4xMjtrPTYzJmQ+PjY7ZCY9NjM7Z1tsKytdPSJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuY2hhckF0KGUpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuY2hhckF0KGgpKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuY2hhckF0KGspKyJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSIuY2hhckF0KGQpfXdoaWxlKGM8DQphLmxlbmd0aCk7cmV0dXJuIGY9Zy5qb2luKCIiKSxiPWEubGVuZ3RoJTMsKGI/Zi5zbGljZSgwLGItMyk6ZikrIj09PSIuc2xpY2UoYnx8Myl9ZnVuY3Rpb24gYTJiKGEpe3ZhciBiLGMsbCxmPXt9LGc9MCxlPTAsaD0iIixrPVN0cmluZy5mcm9tQ2hhckNvZGUsZD1hLmxlbmd0aDtmb3IoYj0wOzY0PmI7YisrKWZbIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky8iLmNoYXJBdChiKV09Yjtmb3IoYz0wO2Q+YztjKyspZm9yKGI9ZlthLmNoYXJBdChjKV0sZz0oZzw8NikrYixlKz02Ozg8PWU7KSgobD0yNTUmZz4+PihlLT04KSl8fGQtMj5jKSYmKGgrPWsobCkpO3JldHVybiBofWI2NGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGJ0b2EoZW5jb2RlVVJJQ29tcG9uZW50KGEpLnJlcGxhY2UoLyUoWzAtOUEtRl17Mn0pL2csZnVuY3Rpb24oYixhKXtyZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZSgiMHgiK2EpfSkpfTsNCmI2NGQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChhdG9iKGEpLnNwbGl0KCIiKS5tYXAoZnVuY3Rpb24oYSl7cmV0dXJuIiUiKygiMDAiK2EuY2hhckNvZGVBdCgwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKX0pLmpvaW4oIiIpKX07DQovKiA8IVtDREFUQVsgKi8KYWlfZnJvbnQgPSB7Imluc2VydGlvbl9iZWZvcmUiOiJCRUZPUkUiLCJpbnNlcnRpb25fYWZ0ZXIiOiJBRlRFUiIsImluc2VydGlvbl9wcmVwZW5kIjoiUFJFUEVORCBDT05URU5UIiwiaW5zZXJ0aW9uX2FwcGVuZCI6IkFQUEVORCBDT05URU5UIiwiaW5zZXJ0aW9uX3JlcGxhY2VfY29udGVudCI6IlJFUExBQ0UgQ09OVEVOVCIsImluc2VydGlvbl9yZXBsYWNlX2VsZW1lbnQiOiJSRVBMQUNFIEVMRU1FTlQiLCJ2aXNpYmxlIjoiVklTSUJMRSIsImhpZGRlbiI6IkhJRERFTiIsImZhbGxiYWNrIjoiRkFMTEJBQ0siLCJhdXRvbWF0aWNhbGx5X3BsYWNlZCI6IkF1dG9tYXRpY2FsbHkgcGxhY2VkIGJ5IEFkU2Vuc2UgQXV0byBhZHMgY29kZSIsImNhbmNlbCI6IkNhbmNlbCIsInVzZSI6IlVzZSIsImFkZCI6IkFkZCIsInBhcmVudCI6IlBhcmVudCIsImNhbmNlbF9lbGVtZW50X3NlbGVjdGlvbiI6IkNhbmNlbCBlbGVtZW50IHNlbGVjdGlvbiIsInNlbGVjdF9wYXJlbnRfZWxlbWVudCI6IlNlbGVjdCBwYXJlbnQgZWxlbWVudCIsImNzc19zZWxlY3RvciI6IkNTUyBzZWxlY3RvciIsInVzZV9jdXJyZW50X3NlbGVjdG9yIjoiVXNlIGN1cnJlbnQgc2VsZWN0b3IiLCJlbGVtZW50IjoiRUxFTUVOVCIsInBhdGgiOiJQQVRIIiwic2VsZWN0b3IiOiJTRUxFQ1RPUiJ9OwovKiBdXT4gKi8KZnVuY3Rpb24gYWlfcnVuX3NjcmlwdHMoKXsoZnVuY3Rpb24oYSl7aWYoImZ1bmN0aW9uIj09PXR5cGVvZiBkZWZpbmUmJmRlZmluZS5hbWQpe2RlZmluZShhKTt2YXIgYz0hMH0ib2JqZWN0Ij09PXR5cGVvZiBleHBvcnRzJiYobW9kdWxlLmV4cG9ydHM9YSgpLGM9ITApO2lmKCFjKXt2YXIgZT13aW5kb3cuQ29va2llcyxiPXdpbmRvdy5Db29raWVzPWEoKTtiLm5vQ29uZmxpY3Q9ZnVuY3Rpb24oKXt3aW5kb3cuQ29va2llcz1lO3JldHVybiBifX19KShmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtmb3IodmFyIGU9MCxiPXt9O2U8YXJndW1lbnRzLmxlbmd0aDtlKyspe3ZhciBmPWFyZ3VtZW50c1tlXSxkO2ZvcihkIGluIGYpYltkXT1mW2RdfXJldHVybiBifWZ1bmN0aW9uIGMoZSl7ZnVuY3Rpb24gYigpe31mdW5jdGlvbiBmKGgsayxnKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudCl7Zz1hKHtwYXRoOiIvIixzYW1lU2l0ZToiTGF4In0sYi5kZWZhdWx0cyxnKTsibnVtYmVyIj09PXR5cGVvZiBnLmV4cGlyZXMmJihnLmV4cGlyZXM9DQpuZXcgRGF0ZSgxKm5ldyBEYXRlKzg2NEU1KmcuZXhwaXJlcykpO2cuZXhwaXJlcz1nLmV4cGlyZXM/Zy5leHBpcmVzLnRvVVRDU3RyaW5nKCk6IiI7dHJ5e3ZhciBsPUpTT04uc3RyaW5naWZ5KGspOy9eW1x7XFtdLy50ZXN0KGwpJiYoaz1sKX1jYXRjaChwKXt9az1lLndyaXRlP2Uud3JpdGUoayxoKTplbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGspKS5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDNBfDNDfDNFfDNEfDJGfDNGfDQwfDVCfDVEfDVFfDYwfDdCfDdEfDdDKS9nLGRlY29kZVVSSUNvbXBvbmVudCk7aD1lbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKGgpKS5yZXBsYWNlKC8lKDIzfDI0fDI2fDJCfDVFfDYwfDdDKS9nLGRlY29kZVVSSUNvbXBvbmVudCkucmVwbGFjZSgvW1woXCldL2csZXNjYXBlKTtsPSIiO2Zvcih2YXIgbiBpbiBnKWdbbl0mJihsKz0iOyAiK24sITAhPT1nW25dJiYobCs9Ij0iK2dbbl0uc3BsaXQoIjsiKVswXSkpO3JldHVybiBkb2N1bWVudC5jb29raWU9DQpoKyI9IitrK2x9fWZ1bmN0aW9uIGQoaCxrKXtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBkb2N1bWVudCl7Zm9yKHZhciBnPXt9LGw9ZG9jdW1lbnQuY29va2llP2RvY3VtZW50LmNvb2tpZS5zcGxpdCgiOyAiKTpbXSxuPTA7bjxsLmxlbmd0aDtuKyspe3ZhciBwPWxbbl0uc3BsaXQoIj0iKSxtPXAuc2xpY2UoMSkuam9pbigiPSIpO2t8fCciJyE9PW0uY2hhckF0KDApfHwobT1tLnNsaWNlKDEsLTEpKTt0cnl7dmFyIHE9cFswXS5yZXBsYWNlKC8oJVswLTlBLVpdezJ9KSsvZyxkZWNvZGVVUklDb21wb25lbnQpO209KGUucmVhZHx8ZSkobSxxKXx8bS5yZXBsYWNlKC8oJVswLTlBLVpdezJ9KSsvZyxkZWNvZGVVUklDb21wb25lbnQpO2lmKGspdHJ5e209SlNPTi5wYXJzZShtKX1jYXRjaChyKXt9Z1txXT1tO2lmKGg9PT1xKWJyZWFrfWNhdGNoKHIpe319cmV0dXJuIGg/Z1toXTpnfX1iLnNldD1mO2IuZ2V0PWZ1bmN0aW9uKGgpe3JldHVybiBkKGgsITEpfTtiLmdldEpTT049ZnVuY3Rpb24oaCl7cmV0dXJuIGQoaCwNCiEwKX07Yi5yZW1vdmU9ZnVuY3Rpb24oaCxrKXtmKGgsIiIsYShrLHtleHBpcmVzOi0xfSkpfTtiLmRlZmF1bHRzPXt9O2Iud2l0aENvbnZlcnRlcj1jO3JldHVybiBifXJldHVybiBjKGZ1bmN0aW9uKCl7fSl9KTtBaUNvb2tpZXM9Q29va2llcy5ub0NvbmZsaWN0KCk7DQphaV9jaGVja19ibG9jaz1mdW5jdGlvbihhKXtpZihudWxsPT1hKXJldHVybiEwO3ZhciBjPUFpQ29va2llcy5nZXRKU09OKCJhaUJMT0NLUyIpO2FpX2RlYnVnX2Nvb2tpZV9zdGF0dXM9IiI7bnVsbD09YyYmKGM9e30pOyJ1bmRlZmluZWQiIT09dHlwZW9mIGFpX2RlbGF5X3Nob3dpbmdfcGFnZXZpZXdzJiYoYy5oYXNPd25Qcm9wZXJ0eShhKXx8KGNbYV09e30pLGNbYV0uaGFzT3duUHJvcGVydHkoImQiKXx8KGNbYV0uZD1haV9kZWxheV9zaG93aW5nX3BhZ2V2aWV3cykpO2lmKGMuaGFzT3duUHJvcGVydHkoYSkpe2Zvcih2YXIgZSBpbiBjW2FdKXtpZigieCI9PWUpe3ZhciBiPSIiLGY9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbltkYXRhLWFpLWJsb2NrPSInK2ErJyJdJylbMF07ImFpSGFzaCJpbiBmLmRhdGFzZXQmJihiPWYuZGF0YXNldC5haUhhc2gpO2Y9IiI7Y1thXS5oYXNPd25Qcm9wZXJ0eSgiaCIpJiYoZj1jW2FdLmgpO3ZhciBkPW5ldyBEYXRlO2Q9Y1thXVtlXS0NCk1hdGgucm91bmQoZC5nZXRUaW1lKCkvMUUzKTtpZigwPGQmJmY9PWIpcmV0dXJuIGFpX2RlYnVnX2Nvb2tpZV9zdGF0dXM9YT0iY2xvc2VkIGZvciAiK2QrIiBzID0gIitNYXRoLnJvdW5kKDFFNCpkLzM2MDAvMjQpLzFFNCsiIGRheXMiLCExO2FpX3NldF9jb29raWUoYSwieCIsIiIpO2NbYV0uaGFzT3duUHJvcGVydHkoImkiKXx8Y1thXS5oYXNPd25Qcm9wZXJ0eSgiYyIpfHxhaV9zZXRfY29va2llKGEsImgiLCIiKX1lbHNlIGlmKCJkIj09ZSl7aWYoMCE9Y1thXVtlXSlyZXR1cm4gYWlfZGVidWdfY29va2llX3N0YXR1cz1hPSJkZWxheWVkIGZvciAiK2NbYV1bZV0rIiBwYWdldmlld3MiLCExfWVsc2UgaWYoImkiPT1lKXtiPSIiO2Y9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbltkYXRhLWFpLWJsb2NrPSInK2ErJyJdJylbMF07ImFpSGFzaCJpbiBmLmRhdGFzZXQmJihiPWYuZGF0YXNldC5haUhhc2gpO2Y9IiI7Y1thXS5oYXNPd25Qcm9wZXJ0eSgiaCIpJiYoZj1jW2FdLmgpOw0KaWYoMD09Y1thXVtlXSYmZj09YilyZXR1cm4gYWlfZGVidWdfY29va2llX3N0YXR1cz1hPSJtYXggaW1wcmVzc2lvbnMgcmVhY2hlZCIsITE7aWYoMD5jW2FdW2VdJiZmPT1iKXtkPW5ldyBEYXRlO2Q9LWNbYV1bZV0tTWF0aC5yb3VuZChkLmdldFRpbWUoKS8xRTMpO2lmKDA8ZClyZXR1cm4gYWlfZGVidWdfY29va2llX3N0YXR1cz1hPSJtYXggaW1wLiByZWFjaGVkICgiK01hdGgucm91bmQoMUU0KmQvMjQvMzYwMCkvMUU0KyIgZGF5cyA9ICIrZCsiIHMpIiwhMTthaV9zZXRfY29va2llKGEsImkiLCIiKTtjW2FdLmhhc093blByb3BlcnR5KCJjIil8fGNbYV0uaGFzT3duUHJvcGVydHkoIngiKXx8YWlfc2V0X2Nvb2tpZShhLCJoIiwiIil9fWlmKCJpcHQiPT1lJiYwPT1jW2FdW2VdJiYoZD1uZXcgRGF0ZSxiPU1hdGgucm91bmQoZC5nZXRUaW1lKCkvMUUzKSxkPWNbYV0uaXQtYiwwPGQpKXJldHVybiBhaV9kZWJ1Z19jb29raWVfc3RhdHVzPWE9Im1heCBpbXAuIHBlciB0aW1lIHJlYWNoZWQgKCIrDQpNYXRoLnJvdW5kKDFFNCpkLzI0LzM2MDApLzFFNCsiIGRheXMgPSAiK2QrIiBzKSIsITE7aWYoImMiPT1lKXtiPSIiO2Y9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnc3BhbltkYXRhLWFpLWJsb2NrPSInK2ErJyJdJylbMF07ImFpSGFzaCJpbiBmLmRhdGFzZXQmJihiPWYuZGF0YXNldC5haUhhc2gpO2Y9IiI7Y1thXS5oYXNPd25Qcm9wZXJ0eSgiaCIpJiYoZj1jW2FdLmgpO2lmKDA9PWNbYV1bZV0mJmY9PWIpcmV0dXJuIGFpX2RlYnVnX2Nvb2tpZV9zdGF0dXM9YT0ibWF4IGNsaWNrcyByZWFjaGVkIiwhMTtpZigwPmNbYV1bZV0mJmY9PWIpe2Q9bmV3IERhdGU7ZD0tY1thXVtlXS1NYXRoLnJvdW5kKGQuZ2V0VGltZSgpLzFFMyk7aWYoMDxkKXJldHVybiBhaV9kZWJ1Z19jb29raWVfc3RhdHVzPWE9Im1heCBjbGlja3MgcmVhY2hlZCAoIitNYXRoLnJvdW5kKDFFNCpkLzI0LzM2MDApLzFFNCsiIGRheXMgPSAiK2QrIiBzKSIsITE7YWlfc2V0X2Nvb2tpZShhLCJjIiwiIik7Y1thXS5oYXNPd25Qcm9wZXJ0eSgiaSIpfHwNCmNbYV0uaGFzT3duUHJvcGVydHkoIngiKXx8YWlfc2V0X2Nvb2tpZShhLCJoIiwiIil9fWlmKCJjcHQiPT1lJiYwPT1jW2FdW2VdJiYoZD1uZXcgRGF0ZSxiPU1hdGgucm91bmQoZC5nZXRUaW1lKCkvMUUzKSxkPWNbYV0uY3QtYiwwPGQpKXJldHVybiBhaV9kZWJ1Z19jb29raWVfc3RhdHVzPWE9Im1heCBjbGlja3MgcGVyIHRpbWUgcmVhY2hlZCAoIitNYXRoLnJvdW5kKDFFNCpkLzI0LzM2MDApLzFFNCsiIGRheXMgPSAiK2QrIiBzKSIsITF9aWYoYy5oYXNPd25Qcm9wZXJ0eSgiRyIpJiZjLkcuaGFzT3duUHJvcGVydHkoImNwdCIpJiYwPT1jLkcuY3B0JiYoZD1uZXcgRGF0ZSxiPU1hdGgucm91bmQoZC5nZXRUaW1lKCkvMUUzKSxkPWMuRy5jdC1iLDA8ZCkpcmV0dXJuIGFpX2RlYnVnX2Nvb2tpZV9zdGF0dXM9YT0ibWF4IGdsb2JhbCBjbGlja3MgcGVyIHRpbWUgcmVhY2hlZCAoIitNYXRoLnJvdW5kKDFFNCpkLzI0LzM2MDApLzFFNCsiIGRheXMgPSAiK2QrIiBzKSIsITF9YWlfZGVidWdfY29va2llX3N0YXR1cz0NCiJPSyI7cmV0dXJuITB9Ow0KYWlfY2hlY2tfYW5kX2luc2VydF9ibG9jaz1mdW5jdGlvbihhLGMpe2lmKG51bGw9PWEpcmV0dXJuITA7dmFyIGU9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjKTtpZihlLmxlbmd0aCl7ZT1lWzBdO3ZhciBiPWUuY2xvc2VzdCgiLmNvZGUtYmxvY2siKTtpZihhaV9jaGVja19ibG9jayhhKSl7aWYoYWlfaW5zZXJ0X2NvZGUoZSksYil7dmFyIGY9Yi5xdWVyeVNlbGVjdG9yQWxsKCIuYWktZGVidWctYmxvY2siKTtiJiZmLmxlbmd0aCYmKGIuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1ibG9jayIpLGIuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1ibG9jay1pcCIpLGIuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1ibG9jay1maWx0ZXIiKSxiLnN0eWxlLnZpc2liaWxpdHk9IiIsYi5jbGFzc0xpc3QuY29udGFpbnMoImFpLXJlbW92ZS1wb3NpdGlvbiIpJiYoYi5zdHlsZS5wb3NpdGlvbj0iIikpfX1lbHNle2Y9ZS5jbG9zZXN0KCJkaXZbZGF0YS1haV0iKTsNCmlmKG51bGwhPWYmJiJ1bmRlZmluZWQiIT10eXBlb2YgZi5nZXRBdHRyaWJ1dGUoImRhdGEtYWkiKSl7dmFyIGQ9SlNPTi5wYXJzZShiNjRkKGYuZ2V0QXR0cmlidXRlKCJkYXRhLWFpIikpKTsidW5kZWZpbmVkIiE9PXR5cGVvZiBkJiZkLmNvbnN0cnVjdG9yPT09QXJyYXkmJihkWzFdPSIiLGYuc2V0QXR0cmlidXRlKCJkYXRhLWFpIixiNjRlKEpTT04uc3RyaW5naWZ5KGQpKSkpfWY9Yi5xdWVyeVNlbGVjdG9yQWxsKCIuYWktZGVidWctYmxvY2siKTtiJiZmLmxlbmd0aCYmKGIuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1ibG9jayIpLGIuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1ibG9jay1pcCIpLGIuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1ibG9jay1maWx0ZXIiKSxiLnN0eWxlLnZpc2liaWxpdHk9IiIsYi5jbGFzc0xpc3QuY29udGFpbnMoImFpLXJlbW92ZS1wb3NpdGlvbiIpJiYoYi5zdHlsZS5wb3NpdGlvbj0iIikpfWUuY2xhc3NMaXN0LnJlbW92ZShjKX1lPQ0KZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiLiIrYysiLWRiZyIpO2I9MDtmb3IoZj1lLmxlbmd0aDtiPGY7YisrKWQ9ZVtiXSxkLnF1ZXJ5U2VsZWN0b3IoIi5haS1zdGF0dXMiKS50ZXh0Q29udGVudD1haV9kZWJ1Z19jb29raWVfc3RhdHVzLGQucXVlcnlTZWxlY3RvcigiLmFpLWNvb2tpZS1kYXRhIikudGV4dENvbnRlbnQ9YWlfZ2V0X2Nvb2tpZV90ZXh0KGEpLGQuY2xhc3NMaXN0LnJlbW92ZShjKyItZGJnIil9O2Z1bmN0aW9uIGFpX2xvYWRfY29va2llKCl7dmFyIGE9QWlDb29raWVzLmdldEpTT04oImFpQkxPQ0tTIik7bnVsbD09YSYmKGE9e30pO3JldHVybiBhfWZ1bmN0aW9uIGFpX2dldF9jb29raWUoYSxjKXt2YXIgZT0iIixiPWFpX2xvYWRfY29va2llKCk7Yi5oYXNPd25Qcm9wZXJ0eShhKSYmYlthXS5oYXNPd25Qcm9wZXJ0eShjKSYmKGU9YlthXVtjXSk7cmV0dXJuIGV9DQpmdW5jdGlvbiBhaV9zZXRfY29va2llKGEsYyxlKXt2YXIgYj1haV9sb2FkX2Nvb2tpZSgpO2lmKCIiPT09ZSl7aWYoYi5oYXNPd25Qcm9wZXJ0eShhKSl7ZGVsZXRlIGJbYV1bY107YTp7Yz1iW2FdO2ZvcihmIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShmKSl7dmFyIGY9ITE7YnJlYWsgYX1mPSEwfWYmJmRlbGV0ZSBiW2FdfX1lbHNlIGIuaGFzT3duUHJvcGVydHkoYSl8fChiW2FdPXt9KSxiW2FdW2NdPWU7MD09PU9iamVjdC5rZXlzKGIpLmxlbmd0aCYmYi5jb25zdHJ1Y3Rvcj09PU9iamVjdD9BaUNvb2tpZXMucmVtb3ZlKCJhaUJMT0NLUyIpOkFpQ29va2llcy5zZXQoImFpQkxPQ0tTIixiLHtleHBpcmVzOjM2NSxwYXRoOiIvIn0pO3JldHVybiBifQ0KYWlfZ2V0X2Nvb2tpZV90ZXh0PWZ1bmN0aW9uKGEpe3ZhciBjPUFpQ29va2llcy5nZXRKU09OKCJhaUJMT0NLUyIpO251bGw9PWMmJihjPXt9KTt2YXIgZT0iIjtjLmhhc093blByb3BlcnR5KCJHIikmJihlPSJHWyIrSlNPTi5zdHJpbmdpZnkoYy5HKS5yZXBsYWNlKC8iL2csIiIpLnJlcGxhY2UoInsiLCIiKS5yZXBsYWNlKCJ9IiwiIikrIl0gIik7dmFyIGI9IiI7Yy5oYXNPd25Qcm9wZXJ0eShhKSYmKGI9SlNPTi5zdHJpbmdpZnkoY1thXSkucmVwbGFjZSgvIi9nLCIiKS5yZXBsYWNlKCJ7IiwiIikucmVwbGFjZSgifSIsIiIpKTtyZXR1cm4gZStifTsNCmFpX2luc2VydD1mdW5jdGlvbihjLGgsdCl7Zm9yKHZhciBuPS0xIT1oLmluZGV4T2YoIjplcSIpP2pRdWVyeShoKTpkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGgpLHU9MCx5PW4ubGVuZ3RoO3U8eTt1Kyspe3ZhciBiPW5bdV07c2VsZWN0b3Jfc3RyaW5nPWIuaGFzQXR0cmlidXRlKCJpZCIpPyIjIitiLmdldEF0dHJpYnV0ZSgiaWQiKTpiLmhhc0F0dHJpYnV0ZSgiY2xhc3MiKT8iLiIrYi5nZXRBdHRyaWJ1dGUoImNsYXNzIikucmVwbGFjZShSZWdFeHAoIiAiLCJnIiksIi4iKToiIjt2YXIgdj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt2LmlubmVySFRNTD10O3ZhciBtPXYuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiYWktc2VsZWN0b3ItY291bnRlciIpWzBdO251bGwhPW0mJihtLmlubmVyVGV4dD11KzEpO209di5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJhaS1kZWJ1Zy1uYW1lIGFpLW1haW4iKVswXTtpZihudWxsIT1tKXt2YXIgbD0iIjsiYmVmb3JlIj09Yz9sPQphaV9mcm9udC5pbnNlcnRpb25fYmVmb3JlOiJhZnRlciI9PWM/bD1haV9mcm9udC5pbnNlcnRpb25fYWZ0ZXI6InByZXBlbmQiPT1jP2w9YWlfZnJvbnQuaW5zZXJ0aW9uX3ByZXBlbmQ6ImFwcGVuZCI9PWM/bD1haV9mcm9udC5pbnNlcnRpb25fYXBwZW5kOiJyZXBsYWNlLWNvbnRlbnQiPT1jP2w9YWlfZnJvbnQuaW5zZXJ0aW9uX3JlcGxhY2VfY29udGVudDoicmVwbGFjZS1lbGVtZW50Ij09YyYmKGw9YWlfZnJvbnQuaW5zZXJ0aW9uX3JlcGxhY2VfZWxlbWVudCk7LTE9PXNlbGVjdG9yX3N0cmluZy5pbmRleE9mKCIuYWktdmlld3BvcnRzIikmJihtLmlubmVyVGV4dD1sKyIgIitoKyIgKCIrYi50YWdOYW1lLnRvTG93ZXJDYXNlKCkrc2VsZWN0b3Jfc3RyaW5nKyIpIil9bT1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2w9ITA7dHJ5e3ZhciB3PW0uY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KHYuaW5uZXJIVE1MKX1jYXRjaChyKXtsPSExfSJiZWZvcmUiPT1jP2w/Yi5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh3LApiKTpqUXVlcnkodi5pbm5lckhUTUwpLmluc2VydEJlZm9yZShqUXVlcnkoYikpOiJhZnRlciI9PWM/bD9iLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcsYi5uZXh0U2libGluZyk6alF1ZXJ5KHYuaW5uZXJIVE1MKS5pbnNlcnRCZWZvcmUoalF1ZXJ5KGIubmV4dFNpYmxpbmcpKToicHJlcGVuZCI9PWM/bD9iLmluc2VydEJlZm9yZSh3LGIuZmlyc3RDaGlsZCk6alF1ZXJ5KHYuaW5uZXJIVE1MKS5pbnNlcnRCZWZvcmUoalF1ZXJ5KGIuZmlyc3RDaGlsZCkpOiJhcHBlbmQiPT1jP2w/Yi5pbnNlcnRCZWZvcmUodyxudWxsKTpqUXVlcnkodi5pbm5lckhUTUwpLmFwcGVuZFRvKGpRdWVyeShiKSk6InJlcGxhY2UtY29udGVudCI9PWM/KGIuaW5uZXJIVE1MPSIiLGw/Yi5pbnNlcnRCZWZvcmUodyxudWxsKTpqUXVlcnkodi5pbm5lckhUTUwpLmFwcGVuZFRvKGpRdWVyeShiKSkpOiJyZXBsYWNlLWVsZW1lbnQiPT1jJiYobD9iLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHcsYik6alF1ZXJ5KHYuaW5uZXJIVE1MKS5pbnNlcnRCZWZvcmUoalF1ZXJ5KGIpKSwKYi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGIpKX19OwphaV9pbnNlcnRfY29kZT1mdW5jdGlvbihjKXtmdW5jdGlvbiBoKG0sbCl7cmV0dXJuIG51bGw9PW0/ITE6bS5jbGFzc0xpc3Q/bS5jbGFzc0xpc3QuY29udGFpbnMobCk6LTE8KCIgIittLmNsYXNzTmFtZSsiICIpLmluZGV4T2YoIiAiK2wrIiAiKX1mdW5jdGlvbiB0KG0sbCl7bnVsbCE9bSYmKG0uY2xhc3NMaXN0P20uY2xhc3NMaXN0LmFkZChsKTptLmNsYXNzTmFtZSs9IiAiK2wpfWZ1bmN0aW9uIG4obSxsKXtudWxsIT1tJiYobS5jbGFzc0xpc3Q/bS5jbGFzc0xpc3QucmVtb3ZlKGwpOm0uY2xhc3NOYW1lPW0uY2xhc3NOYW1lLnJlcGxhY2UobmV3IFJlZ0V4cCgiKF58XFxiKSIrbC5zcGxpdCgiICIpLmpvaW4oInwiKSsiKFxcYnwkKSIsImdpIiksIiAiKSl9aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBjKXt2YXIgdT0hMTtpZihoKGMsIm5vLXZpc2liaWxpdHktY2hlY2siKXx8Yy5vZmZzZXRXaWR0aHx8Yy5vZmZzZXRIZWlnaHR8fGMuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGgpe3U9CmMuZ2V0QXR0cmlidXRlKCJkYXRhLWNvZGUiKTt2YXIgeT1jLmdldEF0dHJpYnV0ZSgiZGF0YS1pbnNlcnRpb24iKSxiPWMuZ2V0QXR0cmlidXRlKCJkYXRhLXNlbGVjdG9yIik7aWYobnVsbCE9dSlpZihudWxsIT15JiZudWxsIT1iKXtpZigtMSE9Yi5pbmRleE9mKCI6ZXEiKT9qUXVlcnkoYikubGVuZ3RoOmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYikubGVuZ3RoKWFpX2luc2VydCh5LGIsYjY0ZCh1KSksbihjLCJhaS12aWV3cG9ydHMiKX1lbHNle3k9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtiPSEwO3RyeXt2YXIgdj15LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChiNjRkKHUpKX1jYXRjaChtKXtiPSExfWI/Yy5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh2LGMubmV4dFNpYmxpbmcpOmpRdWVyeShiNjRkKHUpKS5pbnNlcnRCZWZvcmUoalF1ZXJ5KGMubmV4dFNpYmxpbmcpKTtuKGMsImFpLXZpZXdwb3J0cyIpfXU9ITB9ZWxzZSB2PWMucHJldmlvdXNFbGVtZW50U2libGluZywKaCh2LCJhaS1kZWJ1Zy1iYXIiKSYmaCh2LCJhaS1kZWJ1Zy1zY3JpcHQiKSYmKG4odiwiYWktZGVidWctc2NyaXB0IiksdCh2LCJhaS1kZWJ1Zy12aWV3cG9ydC1pbnZpc2libGUiKSksbihjLCJhaS12aWV3cG9ydHMiKTtyZXR1cm4gdX19OwphaV9pbnNlcnRfbGlzdF9jb2RlPWZ1bmN0aW9uKGMpe3ZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYylbMF07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoKXt2YXIgdD1haV9pbnNlcnRfY29kZShoKSxuPWguY2xvc2VzdCgiZGl2LmNvZGUtYmxvY2siKTtpZihuKXt0fHxuLnJlbW92ZUF0dHJpYnV0ZSgiZGF0YS1haSIpO3ZhciB1PW4ucXVlcnlTZWxlY3RvckFsbCgiLmFpLWRlYnVnLWJsb2NrIik7biYmdS5sZW5ndGgmJihuLmNsYXNzTGlzdC5yZW1vdmUoImFpLWxpc3QtYmxvY2siKSxuLmNsYXNzTGlzdC5yZW1vdmUoImFpLWxpc3QtYmxvY2staXAiKSxuLmNsYXNzTGlzdC5yZW1vdmUoImFpLWxpc3QtYmxvY2stZmlsdGVyIiksbi5zdHlsZS52aXNpYmlsaXR5PSIiLG4uY2xhc3NMaXN0LmNvbnRhaW5zKCJhaS1yZW1vdmUtcG9zaXRpb24iKSYmKG4uc3R5bGUucG9zaXRpb249IiIpKX1oLmNsYXNzTGlzdC5yZW1vdmUoYyk7dCYmCmFpX3Byb2Nlc3NfZWxlbWVudHMoKX19O2FpX2luc2VydF92aWV3cG9ydF9jb2RlPWZ1bmN0aW9uKGMpe3ZhciBoPWRvY3VtZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYylbMF07aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoKXt2YXIgdD1haV9pbnNlcnRfY29kZShoKTtoLmNsYXNzTGlzdC5yZW1vdmUoYyk7dCYmKGM9aC5jbG9zZXN0KCJkaXYuY29kZS1ibG9jayIpLG51bGwhPWMmJih0PWguZ2V0QXR0cmlidXRlKCJzdHlsZSIpLG51bGwhPXQmJmMuc2V0QXR0cmlidXRlKCJzdHlsZSIsYy5nZXRBdHRyaWJ1dGUoInN0eWxlIikrIiAiK3QpKSk7c2V0VGltZW91dChmdW5jdGlvbigpe2gucmVtb3ZlQXR0cmlidXRlKCJzdHlsZSIpfSwyKTthaV9wcm9jZXNzX2VsZW1lbnRzKCl9fTsKYWlfaW5zZXJ0X2NvZGVfYnlfY2xhc3M9ZnVuY3Rpb24oYyl7dmFyIGg9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShjKVswXTsidW5kZWZpbmVkIiE9dHlwZW9mIGgmJihhaV9pbnNlcnRfY29kZShoKSxoLmNsYXNzTGlzdC5yZW1vdmUoYykpfTthaV9pbnNlcnRfY2xpZW50X2NvZGU9ZnVuY3Rpb24oYyxoKXt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGMpWzBdO2lmKCJ1bmRlZmluZWQiIT10eXBlb2YgdCl7dmFyIG49dC5nZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIpO251bGwhPW4mJmFpX2NoZWNrX2Jsb2NrKCkmJmFpX2NoZWNrX2FuZF9pbnNlcnRfYmxvY2soKSYmKHQuc2V0QXR0cmlidXRlKCJkYXRhLWNvZGUiLG4uc3Vic3RyaW5nKE1hdGguZmxvb3IoaC8xOSkpKSxhaV9pbnNlcnRfY29kZV9ieV9jbGFzcyhjKSx0LnJlbW92ZSgpKX19O2FpX3Byb2Nlc3NfZWxlbWVudHNfYWN0aXZlPSExOwpmdW5jdGlvbiBhaV9wcm9jZXNzX2VsZW1lbnRzKCl7YWlfcHJvY2Vzc19lbGVtZW50c19hY3RpdmV8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXthaV9wcm9jZXNzX2VsZW1lbnRzX2FjdGl2ZT0hMTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19yb3RhdGlvbnMmJmFpX3Byb2Nlc3Nfcm90YXRpb25zKCk7ImZ1bmN0aW9uIj09dHlwZW9mIGFpX3Byb2Nlc3NfbGlzdHMmJmFpX3Byb2Nlc3NfbGlzdHMoalF1ZXJ5KCIuYWktbGlzdC1kYXRhIikpOyJmdW5jdGlvbiI9PXR5cGVvZiBhaV9wcm9jZXNzX2lwX2FkZHJlc3NlcyYmYWlfcHJvY2Vzc19pcF9hZGRyZXNzZXMoalF1ZXJ5KCIuYWktaXAtZGF0YSIpKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19maWx0ZXJfaG9va3MmJmFpX3Byb2Nlc3NfZmlsdGVyX2hvb2tzKGpRdWVyeSgiLmFpLWZpbHRlci1jaGVjayIpKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfYWRiX3Byb2Nlc3NfYmxvY2tzJiZhaV9hZGJfcHJvY2Vzc19ibG9ja3MoKX0sCjUpO2FpX3Byb2Nlc3NfZWxlbWVudHNfYWN0aXZlPSEwfQp2YXIgQXJyaXZlPWZ1bmN0aW9uKGMsaCx0KXtmdW5jdGlvbiBuKHIsZCxlKXtiLmFkZE1ldGhvZChkLGUsci51bmJpbmRFdmVudCk7Yi5hZGRNZXRob2QoZCxlLHIudW5iaW5kRXZlbnRXaXRoU2VsZWN0b3JPckNhbGxiYWNrKTtiLmFkZE1ldGhvZChkLGUsci51bmJpbmRFdmVudFdpdGhTZWxlY3RvckFuZENhbGxiYWNrKX1mdW5jdGlvbiB1KHIpe3IuYXJyaXZlPWwuYmluZEV2ZW50O24obCxyLCJ1bmJpbmRBcnJpdmUiKTtyLmxlYXZlPXcuYmluZEV2ZW50O24odyxyLCJ1bmJpbmRMZWF2ZSIpfWlmKGMuTXV0YXRpb25PYnNlcnZlciYmInVuZGVmaW5lZCIhPT10eXBlb2YgSFRNTEVsZW1lbnQpe3ZhciB5PTAsYj1mdW5jdGlvbigpe3ZhciByPUhUTUxFbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzfHxIVE1MRWxlbWVudC5wcm90b3R5cGUud2Via2l0TWF0Y2hlc1NlbGVjdG9yfHxIVE1MRWxlbWVudC5wcm90b3R5cGUubW96TWF0Y2hlc1NlbGVjdG9yfHxIVE1MRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3I7CnJldHVybnttYXRjaGVzU2VsZWN0b3I6ZnVuY3Rpb24oZCxlKXtyZXR1cm4gZCBpbnN0YW5jZW9mIEhUTUxFbGVtZW50JiZyLmNhbGwoZCxlKX0sYWRkTWV0aG9kOmZ1bmN0aW9uKGQsZSxmKXt2YXIgYT1kW2VdO2RbZV09ZnVuY3Rpb24oKXtpZihmLmxlbmd0aD09YXJndW1lbnRzLmxlbmd0aClyZXR1cm4gZi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGEpcmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpfX0sY2FsbENhbGxiYWNrczpmdW5jdGlvbihkLGUpe2UmJmUub3B0aW9ucy5vbmNlT25seSYmMT09ZS5maXJlZEVsZW1zLmxlbmd0aCYmKGQ9W2RbMF1dKTtmb3IodmFyIGY9MCxhO2E9ZFtmXTtmKyspYSYmYS5jYWxsYmFjayYmYS5jYWxsYmFjay5jYWxsKGEuZWxlbSxhLmVsZW0pO2UmJmUub3B0aW9ucy5vbmNlT25seSYmMT09ZS5maXJlZEVsZW1zLmxlbmd0aCYmZS5tZS51bmJpbmRFdmVudFdpdGhTZWxlY3RvckFuZENhbGxiYWNrLmNhbGwoZS50YXJnZXQsCmUuc2VsZWN0b3IsZS5jYWxsYmFjayl9LGNoZWNrQ2hpbGROb2Rlc1JlY3Vyc2l2ZWx5OmZ1bmN0aW9uKGQsZSxmLGEpe2Zvcih2YXIgZz0wLGs7az1kW2ddO2crKylmKGssZSxhKSYmYS5wdXNoKHtjYWxsYmFjazplLmNhbGxiYWNrLGVsZW06a30pLDA8ay5jaGlsZE5vZGVzLmxlbmd0aCYmYi5jaGVja0NoaWxkTm9kZXNSZWN1cnNpdmVseShrLmNoaWxkTm9kZXMsZSxmLGEpfSxtZXJnZUFycmF5czpmdW5jdGlvbihkLGUpe3ZhciBmPXt9LGE7Zm9yKGEgaW4gZClkLmhhc093blByb3BlcnR5KGEpJiYoZlthXT1kW2FdKTtmb3IoYSBpbiBlKWUuaGFzT3duUHJvcGVydHkoYSkmJihmW2FdPWVbYV0pO3JldHVybiBmfSx0b0VsZW1lbnRzQXJyYXk6ZnVuY3Rpb24oZCl7InVuZGVmaW5lZCI9PT10eXBlb2YgZHx8Im51bWJlciI9PT10eXBlb2YgZC5sZW5ndGgmJmQhPT1jfHwoZD1bZF0pO3JldHVybiBkfX19KCksdj1mdW5jdGlvbigpe3ZhciByPWZ1bmN0aW9uKCl7dGhpcy5fZXZlbnRzQnVja2V0PQpbXTt0aGlzLl9iZWZvcmVSZW1vdmluZz10aGlzLl9iZWZvcmVBZGRpbmc9bnVsbH07ci5wcm90b3R5cGUuYWRkRXZlbnQ9ZnVuY3Rpb24oZCxlLGYsYSl7ZD17dGFyZ2V0OmQsc2VsZWN0b3I6ZSxvcHRpb25zOmYsY2FsbGJhY2s6YSxmaXJlZEVsZW1zOltdfTt0aGlzLl9iZWZvcmVBZGRpbmcmJnRoaXMuX2JlZm9yZUFkZGluZyhkKTt0aGlzLl9ldmVudHNCdWNrZXQucHVzaChkKTtyZXR1cm4gZH07ci5wcm90b3R5cGUucmVtb3ZlRXZlbnQ9ZnVuY3Rpb24oZCl7Zm9yKHZhciBlPXRoaXMuX2V2ZW50c0J1Y2tldC5sZW5ndGgtMSxmO2Y9dGhpcy5fZXZlbnRzQnVja2V0W2VdO2UtLSlkKGYpJiYodGhpcy5fYmVmb3JlUmVtb3ZpbmcmJnRoaXMuX2JlZm9yZVJlbW92aW5nKGYpLChmPXRoaXMuX2V2ZW50c0J1Y2tldC5zcGxpY2UoZSwxKSkmJmYubGVuZ3RoJiYoZlswXS5jYWxsYmFjaz1udWxsKSl9O3IucHJvdG90eXBlLmJlZm9yZUFkZGluZz1mdW5jdGlvbihkKXt0aGlzLl9iZWZvcmVBZGRpbmc9CmR9O3IucHJvdG90eXBlLmJlZm9yZVJlbW92aW5nPWZ1bmN0aW9uKGQpe3RoaXMuX2JlZm9yZVJlbW92aW5nPWR9O3JldHVybiByfSgpLG09ZnVuY3Rpb24ocixkKXt2YXIgZT1uZXcgdixmPXRoaXMsYT17ZmlyZU9uQXR0cmlidXRlc01vZGlmaWNhdGlvbjohMX07ZS5iZWZvcmVBZGRpbmcoZnVuY3Rpb24oZyl7dmFyIGs9Zy50YXJnZXQ7aWYoaz09PWMuZG9jdW1lbnR8fGs9PT1jKWs9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImh0bWwiKVswXTt2YXIgcD1uZXcgTXV0YXRpb25PYnNlcnZlcihmdW5jdGlvbih4KXtkLmNhbGwodGhpcyx4LGcpfSk7dmFyIHE9cihnLm9wdGlvbnMpO3Aub2JzZXJ2ZShrLHEpO2cub2JzZXJ2ZXI9cDtnLm1lPWZ9KTtlLmJlZm9yZVJlbW92aW5nKGZ1bmN0aW9uKGcpe2cub2JzZXJ2ZXIuZGlzY29ubmVjdCgpfSk7dGhpcy5iaW5kRXZlbnQ9ZnVuY3Rpb24oZyxrLHApe2s9Yi5tZXJnZUFycmF5cyhhLGspO2Zvcih2YXIgcT1iLnRvRWxlbWVudHNBcnJheSh0aGlzKSwKeD0wO3g8cS5sZW5ndGg7eCsrKWUuYWRkRXZlbnQocVt4XSxnLGsscCl9O3RoaXMudW5iaW5kRXZlbnQ9ZnVuY3Rpb24oKXt2YXIgZz1iLnRvRWxlbWVudHNBcnJheSh0aGlzKTtlLnJlbW92ZUV2ZW50KGZ1bmN0aW9uKGspe2Zvcih2YXIgcD0wO3A8Zy5sZW5ndGg7cCsrKWlmKHRoaXM9PT10fHxrLnRhcmdldD09PWdbcF0pcmV0dXJuITA7cmV0dXJuITF9KX07dGhpcy51bmJpbmRFdmVudFdpdGhTZWxlY3Rvck9yQ2FsbGJhY2s9ZnVuY3Rpb24oZyl7dmFyIGs9Yi50b0VsZW1lbnRzQXJyYXkodGhpcyk7ZS5yZW1vdmVFdmVudCgiZnVuY3Rpb24iPT09dHlwZW9mIGc/ZnVuY3Rpb24ocCl7Zm9yKHZhciBxPTA7cTxrLmxlbmd0aDtxKyspaWYoKHRoaXM9PT10fHxwLnRhcmdldD09PWtbcV0pJiZwLmNhbGxiYWNrPT09ZylyZXR1cm4hMDtyZXR1cm4hMX06ZnVuY3Rpb24ocCl7Zm9yKHZhciBxPTA7cTxrLmxlbmd0aDtxKyspaWYoKHRoaXM9PT10fHxwLnRhcmdldD09PWtbcV0pJiZwLnNlbGVjdG9yPT09CmcpcmV0dXJuITA7cmV0dXJuITF9KX07dGhpcy51bmJpbmRFdmVudFdpdGhTZWxlY3RvckFuZENhbGxiYWNrPWZ1bmN0aW9uKGcsayl7dmFyIHA9Yi50b0VsZW1lbnRzQXJyYXkodGhpcyk7ZS5yZW1vdmVFdmVudChmdW5jdGlvbihxKXtmb3IodmFyIHg9MDt4PHAubGVuZ3RoO3grKylpZigodGhpcz09PXR8fHEudGFyZ2V0PT09cFt4XSkmJnEuc2VsZWN0b3I9PT1nJiZxLmNhbGxiYWNrPT09aylyZXR1cm4hMDtyZXR1cm4hMX0pfTtyZXR1cm4gdGhpc30sbD1uZXcgZnVuY3Rpb24oKXtmdW5jdGlvbiByKGYsYSxnKXtyZXR1cm4gYi5tYXRjaGVzU2VsZWN0b3IoZixhLnNlbGVjdG9yKSYmKGYuX2lkPT09dCYmKGYuX2lkPXkrKyksLTE9PWEuZmlyZWRFbGVtcy5pbmRleE9mKGYuX2lkKSk/KGEuZmlyZWRFbGVtcy5wdXNoKGYuX2lkKSwhMCk6ITF9dmFyIGQ9e2ZpcmVPbkF0dHJpYnV0ZXNNb2RpZmljYXRpb246ITEsb25jZU9ubHk6ITEsZXhpc3Rpbmc6ITF9O2w9bmV3IG0oZnVuY3Rpb24oZil7dmFyIGE9CnthdHRyaWJ1dGVzOiExLGNoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfTtmLmZpcmVPbkF0dHJpYnV0ZXNNb2RpZmljYXRpb24mJihhLmF0dHJpYnV0ZXM9ITApO3JldHVybiBhfSxmdW5jdGlvbihmLGEpe2YuZm9yRWFjaChmdW5jdGlvbihnKXt2YXIgaz1nLmFkZGVkTm9kZXMscD1nLnRhcmdldCxxPVtdO251bGwhPT1rJiYwPGsubGVuZ3RoP2IuY2hlY2tDaGlsZE5vZGVzUmVjdXJzaXZlbHkoayxhLHIscSk6ImF0dHJpYnV0ZXMiPT09Zy50eXBlJiZyKHAsYSxxKSYmcS5wdXNoKHtjYWxsYmFjazphLmNhbGxiYWNrLGVsZW06cH0pO2IuY2FsbENhbGxiYWNrcyhxLGEpfSl9KTt2YXIgZT1sLmJpbmRFdmVudDtsLmJpbmRFdmVudD1mdW5jdGlvbihmLGEsZyl7InVuZGVmaW5lZCI9PT10eXBlb2YgZz8oZz1hLGE9ZCk6YT1iLm1lcmdlQXJyYXlzKGQsYSk7dmFyIGs9Yi50b0VsZW1lbnRzQXJyYXkodGhpcyk7aWYoYS5leGlzdGluZyl7Zm9yKHZhciBwPVtdLHE9MDtxPGsubGVuZ3RoO3ErKylmb3IodmFyIHg9CmtbcV0ucXVlcnlTZWxlY3RvckFsbChmKSx6PTA7ejx4Lmxlbmd0aDt6KyspcC5wdXNoKHtjYWxsYmFjazpnLGVsZW06eFt6XX0pO2lmKGEub25jZU9ubHkmJnAubGVuZ3RoKXJldHVybiBnLmNhbGwocFswXS5lbGVtLHBbMF0uZWxlbSk7c2V0VGltZW91dChiLmNhbGxDYWxsYmFja3MsMSxwKX1lLmNhbGwodGhpcyxmLGEsZyl9O3JldHVybiBsfSx3PW5ldyBmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZixhKXtyZXR1cm4gYi5tYXRjaGVzU2VsZWN0b3IoZixhLnNlbGVjdG9yKX12YXIgZD17fTt3PW5ldyBtKGZ1bmN0aW9uKCl7cmV0dXJue2NoaWxkTGlzdDohMCxzdWJ0cmVlOiEwfX0sZnVuY3Rpb24oZixhKXtmLmZvckVhY2goZnVuY3Rpb24oZyl7Zz1nLnJlbW92ZWROb2Rlczt2YXIgaz1bXTtudWxsIT09ZyYmMDxnLmxlbmd0aCYmYi5jaGVja0NoaWxkTm9kZXNSZWN1cnNpdmVseShnLGEscixrKTtiLmNhbGxDYWxsYmFja3MoayxhKX0pfSk7dmFyIGU9dy5iaW5kRXZlbnQ7dy5iaW5kRXZlbnQ9CmZ1bmN0aW9uKGYsYSxnKXsidW5kZWZpbmVkIj09PXR5cGVvZiBnPyhnPWEsYT1kKTphPWIubWVyZ2VBcnJheXMoZCxhKTtlLmNhbGwodGhpcyxmLGEsZyl9O3JldHVybiB3fTtoJiZ1KGguZm4pO3UoSFRNTEVsZW1lbnQucHJvdG90eXBlKTt1KE5vZGVMaXN0LnByb3RvdHlwZSk7dShIVE1MQ29sbGVjdGlvbi5wcm90b3R5cGUpO3UoSFRNTERvY3VtZW50LnByb3RvdHlwZSk7dShXaW5kb3cucHJvdG90eXBlKTtoPXt9O24obCxoLCJ1bmJpbmRBbGxBcnJpdmUiKTtuKHcsaCwidW5iaW5kQWxsTGVhdmUiKTtyZXR1cm4gaH19KHdpbmRvdywidW5kZWZpbmVkIj09PXR5cGVvZiBqUXVlcnk/bnVsbDpqUXVlcnksdm9pZCAwKTsKdmFyICRqc2NvbXA9JGpzY29tcHx8e307JGpzY29tcC5zY29wZT17fTskanNjb21wLmNyZWF0ZVRlbXBsYXRlVGFnRmlyc3RBcmc9ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmF3PWF9OyRqc2NvbXAuY3JlYXRlVGVtcGxhdGVUYWdGaXJzdEFyZ1dpdGhSYXc9ZnVuY3Rpb24oYSxuKXthLnJhdz1uO3JldHVybiBhfTskanNjb21wLmFycmF5SXRlcmF0b3JJbXBsPWZ1bmN0aW9uKGEpe3ZhciBuPTA7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG48YS5sZW5ndGg/e2RvbmU6ITEsdmFsdWU6YVtuKytdfTp7ZG9uZTohMH19fTskanNjb21wLmFycmF5SXRlcmF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJue25leHQ6JGpzY29tcC5hcnJheUl0ZXJhdG9ySW1wbChhKX19OyRqc2NvbXAubWFrZUl0ZXJhdG9yPWZ1bmN0aW9uKGEpe3ZhciBuPSJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3ImJmFbU3ltYm9sLml0ZXJhdG9yXTtyZXR1cm4gbj9uLmNhbGwoYSk6JGpzY29tcC5hcnJheUl0ZXJhdG9yKGEpfTsKalF1ZXJ5KGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG4oZCl7ZD1kLm1hdGNoKGJhKTtyZXR1cm4gbnVsbCE9ZCYmMTxkLmxlbmd0aCYmInN0cmluZyI9PT10eXBlb2YgZFsxXSYmMDxkWzFdLmxlbmd0aD9kWzFdLnRvTG93ZXJDYXNlKCk6bnVsbH1mdW5jdGlvbiBCKGQpe3JldHVybiBkLmluY2x1ZGVzKCI6Iik/KGQ9ZC5zcGxpdCgiOiIpLDFFMyooMzYwMCpwYXJzZUludChkWzBdKSs2MCpwYXJzZUludChkWzFdKStwYXJzZUludChkWzJdKSkpOm51bGx9ZnVuY3Rpb24gdChkKXt0cnl7dmFyIGw9RGF0ZS5wYXJzZShkKTtpc05hTihsKSYmKGw9bnVsbCl9Y2F0Y2goRil7bD1udWxsfWlmKG51bGw9PWwmJmQuaW5jbHVkZXMoIiAiKSl7ZD1kLnNwbGl0KCIgIik7dHJ5e2w9RGF0ZS5wYXJzZShkWzBdKSxsKz1CKGRbMV0pLGlzTmFOKGwpJiYobD1udWxsKX1jYXRjaChGKXtsPW51bGx9fXJldHVybiBsfWZ1bmN0aW9uIEcoKXsoalF1ZXJ5KCIjYWktaWFiLXRjZi1iYXIiKS5sZW5ndGh8fGpRdWVyeSgiLmFpLWxpc3QtbWFudWFsIikubGVuZ3RoKSYmCiJmdW5jdGlvbiI9PXR5cGVvZiBfX3RjZmFwaSYmImZ1bmN0aW9uIj09dHlwZW9mIGFpX2xvYWRfYmxvY2tzJiYidW5kZWZpbmVkIj09dHlwZW9mIGFpX2lhYl90Y2ZfY2FsbGJhY2tfaW5zdGFsbGVkJiYoX190Y2ZhcGkoImFkZEV2ZW50TGlzdGVuZXIiLDIsZnVuY3Rpb24oZCxsKXtsJiYidXNlcmFjdGlvbmNvbXBsZXRlIj09PWQuZXZlbnRTdGF0dXMmJihhaV90Y0RhdGE9ZCxhaV9sb2FkX2Jsb2NrcygpLGpRdWVyeSgiI2FpLWlhYi10Y2Ytc3RhdHVzIikudGV4dCgiSUFCIFRDRiAyLjAgREFUQSBMT0FERUQiKSxqUXVlcnkoIiNhaS1pYWItdGNmLWJhciIpLmFkZENsYXNzKCJzdGF0dXMtb2siKS5yZW1vdmVDbGFzcygic3RhdHVzLWVycm9yIikpfSksYWlfaWFiX3RjZl9jYWxsYmFja19pbnN0YWxsZWQ9ITApfWZ1bmN0aW9uIHUoZCl7ZD0oIjsgIitkb2N1bWVudC5jb29raWUpLnNwbGl0KCI7ICIrZCsiPSIpO2lmKDI9PT1kLmxlbmd0aClyZXR1cm4gZC5wb3AoKS5zcGxpdCgiOyIpLnNoaWZ0KCl9CmZ1bmN0aW9uIG0oZCl7aWYodShkKSl7dmFyIGw9d2luZG93LmxvY2F0aW9uLmhvc3RuYW1lO3UoZCkmJihkb2N1bWVudC5jb29raWU9ZCsiPTtwYXRoPS8iKyhsPyI7ZG9tYWluPSIrbDoiIikrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UIik7ZG9jdW1lbnQuY29va2llPWQrIj07IFBhdGg9LzsgRXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsifX1BcnJheS5wcm90b3R5cGUuaW5jbHVkZXN8fChBcnJheS5wcm90b3R5cGUuaW5jbHVkZXM9ZnVuY3Rpb24oZCl7cmV0dXJuISF+dGhpcy5pbmRleE9mKGQpfSk7dmFyIGJhPS86XC9cLyguW14vOl0rKS9pO2FpX3Byb2Nlc3NfbGlzdHM9ZnVuY3Rpb24oZCl7ZnVuY3Rpb24gbChlLGMsayl7aWYoMD09ZS5sZW5ndGgpe2lmKCIhQCEiPT1rKXJldHVybiEwO2MhPWsmJigidHJ1ZSI9PWsudG9Mb3dlckNhc2UoKT9rPSEwOiJmYWxzZSI9PWsudG9Mb3dlckNhc2UoKSYmKGs9ITEpKTtyZXR1cm4gYz09Cmt9aWYoIm9iamVjdCIhPXR5cGVvZiBjJiYiYXJyYXkiIT10eXBlb2YgYylyZXR1cm4hMTt2YXIgZj1lWzBdO2U9ZS5zbGljZSgxKTtpZigiKiI9PWYpZm9yKGM9JGpzY29tcC5tYWtlSXRlcmF0b3IoT2JqZWN0LmVudHJpZXMoYykpLGY9Yy5uZXh0KCk7IWYuZG9uZTtmPWMubmV4dCgpKXtpZihmPSRqc2NvbXAubWFrZUl0ZXJhdG9yKGYudmFsdWUpLGYubmV4dCgpLGY9Zi5uZXh0KCkudmFsdWUsbChlLGYsaykpcmV0dXJuITB9ZWxzZSBpZihmIGluIGMpcmV0dXJuIGwoZSxjW2ZdLGspO3JldHVybiExfWZ1bmN0aW9uIEYoZSxjLGspe2lmKCJvYmplY3QiIT10eXBlb2YgZXx8LTE9PWMuaW5kZXhPZigiWyIpKXJldHVybiExO2M9Yy5yZXBsYWNlKC9dfCAvZ2ksIiIpLnNwbGl0KCJbIik7cmV0dXJuIGwoYyxlLGspfWZ1bmN0aW9uIGNhKCl7ImZ1bmN0aW9uIj09dHlwZW9mIF9fdGNmYXBpJiYoYSgiI2FpLWlhYi10Y2Ytc3RhdHVzIikudGV4dCgiSUFCIFRDRiAyLjAgREVURUNURUQiKSwKX190Y2ZhcGkoImdldFRDRGF0YSIsMixmdW5jdGlvbihlLGMpe2M/KGEoIiNhaS1pYWItdGNmLWJhciIpLmFkZENsYXNzKCJzdGF0dXMtb2siKSwidGNsb2FkZWQiPT1lLmV2ZW50U3RhdHVzfHwidXNlcmFjdGlvbmNvbXBsZXRlIj09ZS5ldmVudFN0YXR1cz8oYWlfdGNEYXRhPWUsZS5nZHByQXBwbGllcz9hKCIjYWktaWFiLXRjZi1zdGF0dXMiKS50ZXh0KCJJQUIgVENGIDIuMCBEQVRBIExPQURFRCIpOmpRdWVyeSgiI2FpLWlhYi10Y2Ytc3RhdHVzIikudGV4dCgiSUFCIFRDRiAyLjAgR0RQUiBET0VTIE5PVCBBUFBMWSIpLGEoIiNhaS1pYWItdGNmLWJhciIpLmFkZENsYXNzKCJzdGF0dXMtb2siKS5yZW1vdmVDbGFzcygic3RhdHVzLWVycm9yIiksc2V0VGltZW91dChmdW5jdGlvbigpe2FpX3Byb2Nlc3NfbGlzdHMoKX0sMTApKToiY21wdWlzaG93biI9PWUuZXZlbnRTdGF0dXMmJihhaV9jbXB1aXNob3duPSEwLGEoIiNhaS1pYWItdGNmLXN0YXR1cyIpLnRleHQoIklBQiBUQ0YgMi4wIENNUCBVSSBTSE9XTiIpLAphKCIjYWktaWFiLXRjZi1iYXIiKS5hZGRDbGFzcygic3RhdHVzLW9rIikucmVtb3ZlQ2xhc3MoInN0YXR1cy1lcnJvciIpKSk6KGEoIiNhaS1pYWItdGNmLXN0YXR1cyIpLnRleHQoIklBQiBUQ0YgMi4wIF9fdGNmYXBpIGdldFRDRGF0YSBmYWlsZWQiKSxhKCIjYWktaWFiLXRjZi1iYXIiKS5yZW1vdmVDbGFzcygic3RhdHVzLW9rIikuYWRkQ2xhc3MoInN0YXR1cy1lcnJvciIpKX0pKX1mdW5jdGlvbiBLKGUpeyJmdW5jdGlvbiI9PXR5cGVvZiBfX3RjZmFwaT8oInVuZGVmaW5lZCI9PXR5cGVvZiBhaV9pYWJfdGNmX2NhbGxiYWNrX2luc3RhbGxlZCYmRygpLCJ1bmRlZmluZWQiPT10eXBlb2YgYWlfdGNEYXRhX3JlcXVlc3RlZCYmKGFpX3RjRGF0YV9yZXF1ZXN0ZWQ9ITAsY2EoKSx1cmxfcGFyYW1ldGVyc19uZWVkX3RjRGF0YT0hMCkpOmUmJihhKCIjYWktaWFiLXRjZi1iYXIiKS5hZGRDbGFzcygic3RhdHVzLWVycm9yIikucmVtb3ZlQ2xhc3MoInN0YXR1cy1vayIpLGEoIiNhaS1pYWItdGNmLXN0YXR1cyIpLnRleHQoIklBQiBUQ0YgMi4wIE1JU1NJTkc6IF9fdGNmYXBpIGZ1bmN0aW9uIG5vdCBmb3VuZCIpKX0KZD1udWxsPT1kP2EoImRpdi5haS1saXN0LWRhdGEsIG1ldGEuYWktbGlzdC1kYXRhIik6ZC5maWx0ZXIoIi5haS1saXN0LWRhdGEiKTtpZihkLmxlbmd0aCl7ZC5yZW1vdmVDbGFzcygiYWktbGlzdC1kYXRhIik7dmFyIEo9ZG9jdW1lbnQuY29va2llLnNwbGl0KCI7Iik7Si5mb3JFYWNoKGZ1bmN0aW9uKGUsYyl7SltjXT1lLnRyaW0oKX0pO3ZhciBWPWdldEFsbFVybFBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtpZihudWxsIT1WLnJlZmVycmVyKXZhciB3PVYucmVmZXJyZXI7ZWxzZSB3PWRvY3VtZW50LnJlZmVycmVyLCIiIT13JiYodz1uKHcpKTt2YXIgUj13aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudCxTPVIudG9Mb3dlckNhc2UoKSxXPW5hdmlnYXRvci5sYW5ndWFnZSxMPVcudG9Mb3dlckNhc2UoKTtpZigidW5kZWZpbmVkIiE9PXR5cGVvZiBNb2JpbGVEZXRlY3QpdmFyIFg9bmV3IE1vYmlsZURldGVjdChSKTtkLmVhY2goZnVuY3Rpb24oKXt2YXIgZT1hKHRoaXMpLmNsb3Nlc3QoImRpdi5jb2RlLWJsb2NrIiksCmM9ITAsaz1hKHRoaXMpLmF0dHIoInJlZmVyZXItbGlzdCIpO2lmKCJ1bmRlZmluZWQiIT10eXBlb2Ygayl7az1iNjRkKGspLnNwbGl0KCIsIik7dmFyIGY9YSh0aGlzKS5hdHRyKCJyZWZlcmVyLWxpc3QtdHlwZSIpLEM9ITE7YS5lYWNoKGssZnVuY3Rpb24oQSxnKXtpZigiIj09ZylyZXR1cm4hMDtpZigiKiI9PWcuY2hhckF0KDApKWlmKCIqIj09Zy5jaGFyQXQoZy5sZW5ndGgtMSkpe2lmKGc9Zy5zdWJzdHIoMSxnLmxlbmd0aC0yKSwtMSE9dy5pbmRleE9mKGcpKXJldHVybiBDPSEwLCExfWVsc2V7aWYoZz1nLnN1YnN0cigxKSx3LnN1YnN0cigtZy5sZW5ndGgpPT1nKXJldHVybiBDPSEwLCExfWVsc2UgaWYoIioiPT1nLmNoYXJBdChnLmxlbmd0aC0xKSl7aWYoZz1nLnN1YnN0cigwLGcubGVuZ3RoLTEpLDA9PXcuaW5kZXhPZihnKSlyZXR1cm4gQz0hMCwhMX1lbHNlIGlmKCIjIj09Zyl7aWYoIiI9PXcpcmV0dXJuIEM9ITAsITF9ZWxzZSBpZihnPT13KXJldHVybiBDPSEwLCExfSk7CnN3aXRjaChmKXtjYXNlICJCIjpDJiYoYz0hMSk7YnJlYWs7Y2FzZSAiVyI6Q3x8KGM9ITEpfX1pZihjJiYoaz1hKHRoaXMpLmF0dHIoImNsaWVudC1saXN0IiksInVuZGVmaW5lZCIhPXR5cGVvZiBrJiYidW5kZWZpbmVkIiE9PXR5cGVvZiBYKSlzd2l0Y2goaz1iNjRkKGspLnNwbGl0KCIsIiksZj1hKHRoaXMpLmF0dHIoImNsaWVudC1saXN0LXR5cGUiKSxyPSExLGEuZWFjaChrLGZ1bmN0aW9uKEEsZyl7aWYoIiI9PWcudHJpbSgpKXJldHVybiEwO3ZhciBNPWcuc3BsaXQoIiYmIik7YS5lYWNoKE0sZnVuY3Rpb24oZGEsYil7dmFyIHg9ITAscT0hMTtiPWIudHJpbSgpOyIhISI9PWIuc3Vic3RyaW5nKDAsMikmJih4PSExLGI9Yi5zdWJzdHJpbmcoMikpOyJsYW5ndWFnZToiPT1iLnN1YnN0cmluZygwLDkpJiYocT0hMCxiPWIuc3Vic3RyaW5nKDkpLnRvTG93ZXJDYXNlKCkpO3ZhciBwPSExO3E/IioiPT1iLmNoYXJBdCgwKT8iKiI9PWIuY2hhckF0KGIubGVuZ3RoLTEpPyhiPWIuc3Vic3RyKDEsCmIubGVuZ3RoLTIpLnRvTG93ZXJDYXNlKCksLTEhPUwuaW5kZXhPZihiKSYmKHA9ITApKTooYj1iLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpLEwuc3Vic3RyKC1iLmxlbmd0aCk9PWImJihwPSEwKSk6IioiPT1iLmNoYXJBdChiLmxlbmd0aC0xKT8oYj1iLnN1YnN0cigwLGIubGVuZ3RoLTEpLnRvTG93ZXJDYXNlKCksMD09TC5pbmRleE9mKGIpJiYocD0hMCkpOmI9PUwmJihwPSEwKToiKiI9PWIuY2hhckF0KDApPyIqIj09Yi5jaGFyQXQoYi5sZW5ndGgtMSk/KGI9Yi5zdWJzdHIoMSxiLmxlbmd0aC0yKS50b0xvd2VyQ2FzZSgpLC0xIT1TLmluZGV4T2YoYikmJihwPSEwKSk6KGI9Yi5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKSxTLnN1YnN0cigtYi5sZW5ndGgpPT1iJiYocD0hMCkpOiIqIj09Yi5jaGFyQXQoYi5sZW5ndGgtMSk/KGI9Yi5zdWJzdHIoMCxiLmxlbmd0aC0xKS50b0xvd2VyQ2FzZSgpLDA9PVMuaW5kZXhPZihiKSYmKHA9ITApKTpYLmlzKGIpJiYocD0hMCk7cj1wP3g6IXg7CmlmKCFyKXJldHVybiExfSk7aWYocilyZXR1cm4hMX0pLGYpe2Nhc2UgIkIiOnImJihjPSExKTticmVhaztjYXNlICJXIjpyfHwoYz0hMSl9dmFyIE49az0hMTtpZihjKXt2YXIgaD1hKHRoaXMpLmF0dHIoInBhcmFtZXRlci1saXN0Iik7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBoKXtoPWI2NGQoaCk7Zj1hKHRoaXMpLmF0dHIoInBhcmFtZXRlci1saXN0LXR5cGUiKTtoPWgucmVwbGFjZSgidGNmLWdkcHIiLCJ0Y2YtdjJbZ2RwckFwcGxpZXNdPXRydWUiKTtoPWgucmVwbGFjZSgidGNmLW5vLWdkcHIiLCJ0Y2YtdjJbZ2RwckFwcGxpZXNdPWZhbHNlIik7aD1oLnJlcGxhY2UoInRjZi1nb29nbGUiLCJ0Y2YtdjJbdmVuZG9yXVtjb25zZW50c11bNzU1XT10cnVlICYmIHRjZi12MltwdXJwb3NlXVtjb25zZW50c11bMV09dHJ1ZSIpO2g9aC5yZXBsYWNlKCJ0Y2YtbWVkaWEubmV0IiwidGNmLXYyW3ZlbmRvcl1bY29uc2VudHNdWzE0Ml09dHJ1ZSAmJiB0Y2YtdjJbcHVycG9zZV1bY29uc2VudHNdWzFdPXRydWUiKTsKaD1oLnJlcGxhY2UoInRjZi1hbWF6b24iLCJ0Y2YtdjJbdmVuZG9yXVtjb25zZW50c11bNzkzXT10cnVlICYmIHRjZi12MltwdXJwb3NlXVtjb25zZW50c11bMV09dHJ1ZSIpO2g9aC5yZXBsYWNlKCJ0Y2YtZXpvaWMiLCJ0Y2YtdjJbdmVuZG9yXVtjb25zZW50c11bMzQ3XT10cnVlICYmIHRjZi12MltwdXJwb3NlXVtjb25zZW50c11bMV09dHJ1ZSIpO2g9aC5zcGxpdCgiLCIpO3ZhciBZPVtdO0ouZm9yRWFjaChmdW5jdGlvbihBKXtBPUEuc3BsaXQoIj0iKTt0cnl7dmFyIGc9SlNPTi5wYXJzZShkZWNvZGVVUklDb21wb25lbnQoQVsxXSkpfWNhdGNoKE0pe2c9ZGVjb2RlVVJJQ29tcG9uZW50KEFbMV0pfVlbQVswXV09Z30pO3ZhciByPSExLE89YSh0aGlzKTthLmVhY2goaCxmdW5jdGlvbihBLGcpe3ZhciBNPWcuc3BsaXQoIiYmIik7YS5lYWNoKE0sZnVuY3Rpb24oZGEsYil7dmFyIHg9ITA7Yj1iLnRyaW0oKTsiISEiPT1iLnN1YnN0cmluZygwLDIpJiYoeD0hMSxiPWIuc3Vic3RyaW5nKDIpKTsKdmFyIHE9YixwPSIhQCEiLFo9LTEhPWIuaW5kZXhPZigiWyIpLGFhPSgwPT1iLmluZGV4T2YoInRjZi12MiIpfHwwPT1iLmluZGV4T2YoImV1Y29uc2VudC12MiIpKSYmLTEhPWIuaW5kZXhPZigiWyIpOy0xIT1iLmluZGV4T2YoIj0iKSYmKHA9Yi5zcGxpdCgiPSIpLHE9cFswXSxwPXBbMV0sWj0tMSE9cS5pbmRleE9mKCJbIiksYWE9KDA9PXEuaW5kZXhPZigidGNmLXYyIil8fDA9PXEuaW5kZXhPZigiZXVjb25zZW50LXYyIikpJiYtMSE9cS5pbmRleE9mKCJbIikpO2lmKGFhKWEoIiNhaS1pYWItdGNmLWJhciIpLnNob3coKSwib2JqZWN0Ij09dHlwZW9mIGFpX3RjRGF0YT8oYSgiI2FpLWlhYi10Y2YtYmFyIikuYWRkQ2xhc3MoInN0YXR1cy1vayIpLHE9cS5yZXBsYWNlKC9dfCAvZ2ksIiIpLnNwbGl0KCJbIikscS5zaGlmdCgpLHI9KHE9bChxLGFpX3RjRGF0YSxwKSk/eDoheCk6KE8uYWRkQ2xhc3MoImFpLWxpc3QtZGF0YSIpLE49ITAsImZ1bmN0aW9uIj09dHlwZW9mIF9fdGNmYXBpPwpLKCExKToidW5kZWZpbmVkIj09dHlwZW9mIGFpX3RjRGF0YV9yZXRyeWluZyYmKGFpX3RjRGF0YV9yZXRyeWluZz0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIF9fdGNmYXBpP0soITEpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgX190Y2ZhcGk?/SyghMSk6c2V0VGltZW91dChmdW5jdGlvbigpe0soITApfSwzRTMpfSwxRTMpfSw2MDApKSk7ZWxzZSBpZihaKXI9KHE9RihZLHEscCkpP3g6IXg7ZWxzZXt2YXIgVD0hMTsiIUAhIj09cD9KLmV2ZXJ5KGZ1bmN0aW9uKGVhKXtyZXR1cm4gZWEuc3BsaXQoIj0iKVswXT09Yj8oVD0hMCwhMSk6ITB9KTpUPS0xIT1KLmluZGV4T2YoYik7cj1UP3g6IXh9aWYoIXIpcmV0dXJuITF9KTtpZihyKXJldHVybiExfSk7ciYmKE49ITEpO3N3aXRjaChmKXtjYXNlICJCIjpyJiYoYz0hMSk7YnJlYWs7Y2FzZSAiVyI6cnx8KGM9ITEpfWEodGhpcykuaGFzQ2xhc3MoImFpLWxpc3QtbWFudWFsIikmJgooYz8oTy5yZW1vdmVDbGFzcygiYWktbGlzdC1kYXRhIiksTy5yZW1vdmVDbGFzcygiYWktbGlzdC1tYW51YWwiKSk6KGs9ITAsTy5hZGRDbGFzcygiYWktbGlzdC1kYXRhIikpKTtpZighayYmIU4mJihmPWEodGhpcykuZGF0YSgiZGVidWctaW5mbyIpLCJ1bmRlZmluZWQiIT10eXBlb2YgZiYmKGY9YSgiLiIrZiksMCE9Zi5sZW5ndGgpKSl7dmFyIHY9Zi5wYXJlbnQoKTt2Lmhhc0NsYXNzKCJhaS1kZWJ1Zy1pbmZvIikmJnYucmVtb3ZlKCl9fX12PWEodGhpcykucHJldkFsbCgiLmFpLWRlYnVnLWJhci5haS1kZWJ1Zy1saXN0cyIpO2Y9IiI9PXc/IiMiOnc7di5maW5kKCIuYWktZGVidWctbmFtZS5haS1saXN0LWluZm8iKS50ZXh0KGYpLmF0dHIoInRpdGxlIixSKyJcbiIrVyk7di5maW5kKCIuYWktZGVidWctbmFtZS5haS1saXN0LXN0YXR1cyIpLnRleHQoYz9haV9mcm9udC52aXNpYmxlOmFpX2Zyb250LmhpZGRlbik7Zj0hMTtpZihjKXt2YXIgRD1hKHRoaXMpLmF0dHIoInNjaGVkdWxpbmctc3RhcnQiKTsKaD1hKHRoaXMpLmF0dHIoInNjaGVkdWxpbmctZW5kIik7dmFyIEg9YSh0aGlzKS5hdHRyKCJzY2hlZHVsaW5nLWRheXMiKTtpZigidW5kZWZpbmVkIiE9dHlwZW9mIEQmJiJ1bmRlZmluZWQiIT10eXBlb2YgaCYmInVuZGVmaW5lZCIhPXR5cGVvZiBIKXtmPSEwO3ZhciB5PWI2NGQoRCksUD1iNjRkKGgpLFU9cGFyc2VJbnQoYSh0aGlzKS5hdHRyKCJzY2hlZHVsaW5nLWZhbGxiYWNrIikpLFE9cGFyc2VJbnQoYSh0aGlzKS5hdHRyKCJnbXQiKSk7eS5pbmNsdWRlcygiLSIpfHxQLmluY2x1ZGVzKCItIik?/KGg9dCh5KStRLEQ9dChQKStRKTooaD1CKHkpLEQ9QihQKSk7SD1iNjRkKEgpLnNwbGl0KCIsIik7dj1hKHRoaXMpLmF0dHIoInNjaGVkdWxpbmctdHlwZSIpO3ZhciB6PShuZXcgRGF0ZSkuZ2V0VGltZSgpK1EsRT1uZXcgRGF0ZSh6KSxJPUUuZ2V0RGF5KCk7eS5pbmNsdWRlcygiLSIpfHxQLmluY2x1ZGVzKCItIil8fCh5PShuZXcgRGF0ZShFLmdldEZ1bGxZZWFyKCksRS5nZXRNb250aCgpLApFLmdldERhdGUoKSkpLmdldFRpbWUoKStRLHotPXksMD56JiYoeis9ODY0RTUpKTswPT1JP0k9NjpJLS07eT16Pj1oJiZ6PEQmJkguaW5jbHVkZXMoSS50b1N0cmluZygpKTtzd2l0Y2godil7Y2FzZSAiQiI6eT0heX15fHwoYz0hMSk7RT1FLnRvSVNPU3RyaW5nKCkuc3BsaXQoIi4iKVswXS5yZXBsYWNlKCJUIiwiICIpO3Y9YSh0aGlzKS5wcmV2QWxsKCIuYWktZGVidWctYmFyLmFpLWRlYnVnLXNjaGVkdWxpbmciKTt2LmZpbmQoIi5haS1kZWJ1Zy1uYW1lLmFpLXNjaGVkdWxpbmctaW5mbyIpLnRleHQoRSsiICIrSSsiIGN1cnJlbnRfdGltZToiK01hdGguZmxvb3Ioei50b1N0cmluZygpLzFFMykrIiAgc3RhcnRfZGF0ZToiK01hdGguZmxvb3IoaC8xRTMpLnRvU3RyaW5nKCkrIiA9Iisoej49aCkudG9TdHJpbmcoKSsiIGVuZF9kYXRlOiIrTWF0aC5mbG9vcihELzFFMykudG9TdHJpbmcoKSsiID06IisoejxEKS50b1N0cmluZygpKyIgZGF5czoiK0gudG9TdHJpbmcoKSsiID06IisKSC5pbmNsdWRlcyhJLnRvU3RyaW5nKCkpLnRvU3RyaW5nKCkpO3YuZmluZCgiLmFpLWRlYnVnLW5hbWUuYWktc2NoZWR1bGluZy1zdGF0dXMiKS50ZXh0KGM/YWlfZnJvbnQudmlzaWJsZTphaV9mcm9udC5oaWRkZW4pO2N8fDA9PVV8fCh2LnJlbW92ZUNsYXNzKCJhaS1kZWJ1Zy1zY2hlZHVsaW5nIikuYWRkQ2xhc3MoImFpLWRlYnVnLWZhbGxiYWNrIiksdi5maW5kKCIuYWktZGVidWctbmFtZS5haS1zY2hlZHVsaW5nLXN0YXR1cyIpLnRleHQoYWlfZnJvbnQuZmFsbGJhY2srIj0iK1UpKX19aWYoa3x8TilyZXR1cm4hMDthKHRoaXMpLmNzcyh7dmlzaWJpbGl0eToiIixwb3NpdGlvbjoiIix3aWR0aDoiIixoZWlnaHQ6IiIsInotaW5kZXgiOiIifSk7Yz8oZS5jc3Moe3Zpc2liaWxpdHk6IiJ9KSxlLmhhc0NsYXNzKCJhaS1yZW1vdmUtcG9zaXRpb24iKSYmZS5jc3Moe3Bvc2l0aW9uOiIifSksInVuZGVmaW5lZCIhPXR5cGVvZiBhKHRoaXMpLmRhdGEoImNvZGUiKSYmKGM9YjY0ZChhKHRoaXMpLmRhdGEoImNvZGUiKSksCjAhPWEodGhpcykuY2xvc2VzdCgiaGVhZCIpLmxlbmd0aD8oYSh0aGlzKS5hZnRlcihjKSxhKHRoaXMpLnJlbW92ZSgpKTphKHRoaXMpLmFwcGVuZChjKSxhaV9wcm9jZXNzX2VsZW1lbnQodGhpcykpKTpmJiYheSYmMCE9VT8oZS5jc3Moe3Zpc2liaWxpdHk6IiJ9KSxlLmhhc0NsYXNzKCJhaS1yZW1vdmUtcG9zaXRpb24iKSYmZS5jc3Moe3Bvc2l0aW9uOiIifSksYSh0aGlzKS5uZXh0KCIuYWktZmFsbGJhY2siKS5yZW1vdmVDbGFzcygiYWktZmFsbGJhY2siKSwidW5kZWZpbmVkIiE9dHlwZW9mIGEodGhpcykuZGF0YSgiZmFsbGJhY2stY29kZSIpPyhjPWI2NGQoYSh0aGlzKS5kYXRhKCJmYWxsYmFjay1jb2RlIikpLGEodGhpcykuYXBwZW5kKGMpLGFpX3Byb2Nlc3NfZWxlbWVudCh0aGlzKSk6KGEodGhpcykuaGlkZSgpLGUuZmluZCgiLmFpLWRlYnVnLWJsb2NrIikubGVuZ3RofHxlLmhpZGUoKSksYz1lLmF0dHIoImRhdGEtYWkiKSwidW5kZWZpbmVkIiE9PXR5cGVvZiBjJiYhMSE9PQpjJiYoYz1hKHRoaXMpLmF0dHIoImZhbGxiYWNrLXRyYWNraW5nIiksInVuZGVmaW5lZCIhPT10eXBlb2YgYyYmITEhPT1jJiZlLmF0dHIoImRhdGEtYWkiLGMpKSk6KGEodGhpcykuaGlkZSgpLGUuZmluZCgiLmFpLWRlYnVnLWJsb2NrIikubGVuZ3RofHxlLmhpZGUoKSxlLnJlbW92ZUF0dHIoImRhdGEtYWkiKS5yZW1vdmVDbGFzcygiYWktdHJhY2siKSxlLmZpbmQoIi5haS1kZWJ1Zy1ibG9jayIpLmxlbmd0aD8oZS5jc3Moe3Zpc2liaWxpdHk6IiJ9KS5yZW1vdmVDbGFzcygiYWktY2xvc2UiKSxlLmhhc0NsYXNzKCJhaS1yZW1vdmUtcG9zaXRpb24iKSYmZS5jc3Moe3Bvc2l0aW9uOiIifSkpOmUuaGlkZSgpKTthKHRoaXMpLmF0dHIoImRhdGEtY29kZSIsIiIpO2EodGhpcykuYXR0cigiZGF0YS1mYWxsYmFjay1jb2RlIiwiIik7ZS5yZW1vdmVDbGFzcygiYWktbGlzdC1ibG9jayIpfSl9fTthKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbihkKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YWlfcHJvY2Vzc19saXN0cygpOwpzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7RygpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBhaV9sb2FkX2Jsb2Nrcyl7dmFyIGw9ZnVuY3Rpb24oRil7ImNtcGx6RW5hYmxlU2NyaXB0cyIhPUYudHlwZSYmImFsbCIhPT1GLmNvbnNlbnRMZXZlbHx8YWlfbG9hZF9ibG9ja3MoKX07alF1ZXJ5KGRvY3VtZW50KS5vbigiY21wbHpFbmFibGVTY3JpcHRzIixsKTtqUXVlcnkoZG9jdW1lbnQpLm9uKCJjbXBsel9ldmVudF9tYXJrZXRpbmciLGwpfX0sNTApO2pRdWVyeSgiLmFpLWRlYnVnLXBhZ2UtdHlwZSIpLmRibGNsaWNrKGZ1bmN0aW9uKCl7alF1ZXJ5KCIjYWktaWFiLXRjZi1zdGF0dXMiKS50ZXh0KCJDT05TRU5UIENPT0tJRVMiKTtqUXVlcnkoIiNhaS1pYWItdGNmLWJhciIpLnNob3coKX0pO2pRdWVyeSgiI2FpLWlhYi10Y2YtYmFyIikuY2xpY2soZnVuY3Rpb24oKXttKCJldWNvbnNlbnQtdjIiKTttKCJfX2x4R19fY29uc2VudF9fdjIiKTttKCJfX2x4R19fY29uc2VudF9fdjJfZGFpc3liaXQiKTsKbSgiX19seEdfX2NvbnNlbnRfX3YyX2dkYWlzeWJpdCIpO20oIkNvb2tpZUxhd0luZm9Db25zZW50Iik7bSgiY29va2llbGF3aW5mby1jaGVja2JveC1hZHZlcnRpc2VtZW50Iik7bSgiY29va2llbGF3aW5mby1jaGVja2JveC1hbmFseXRpY3MiKTttKCJjb29raWVsYXdpbmZvLWNoZWNrYm94LW5lY2Vzc2FyeSIpO20oImNvbXBsaWFuel9wb2xpY3lfaWQiKTttKCJjb21wbGlhbnpfY29uc2VudF9zdGF0dXMiKTttKCJjbXBsel9tYXJrZXRpbmciKTttKCJjbXBsel9jb25zZW50X3N0YXR1cyIpO20oImNtcGx6X3ByZWZlcmVuY2VzIik7bSgiY21wbHpfc3RhdGlzdGljcy1hbm9ueW1vdXMiKTttKCJjbXBsel9jaG9pY2UiKTttKCJtb292ZV9nZHByX3BvcHVwIik7bSgicmVhbF9jb29raWVfYmFubmVyLWJsb2c6MS10Y2YiKTttKCJyZWFsX2Nvb2tpZV9iYW5uZXItYmxvZzoxIik7alF1ZXJ5KCIjYWktaWFiLXRjZi1zdGF0dXMiKS50ZXh0KCJDT05TRU5UIENPT0tJRVMgREVMRVRFRCIpfSl9LAo1KX0pfSk7ZnVuY3Rpb24gYWlfcHJvY2Vzc19lbGVtZW50KGEpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19yb3RhdGlvbnNfaW5fZWxlbWVudCYmYWlfcHJvY2Vzc19yb3RhdGlvbnNfaW5fZWxlbWVudChhKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19saXN0cyYmYWlfcHJvY2Vzc19saXN0cyhqUXVlcnkoIi5haS1saXN0LWRhdGEiLGEpKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19pcF9hZGRyZXNzZXMmJmFpX3Byb2Nlc3NfaXBfYWRkcmVzc2VzKGpRdWVyeSgiLmFpLWlwLWRhdGEiLGEpKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19maWx0ZXJfaG9va3MmJmFpX3Byb2Nlc3NfZmlsdGVyX2hvb2tzKGpRdWVyeSgiLmFpLWZpbHRlci1jaGVjayIsYSkpOyJmdW5jdGlvbiI9PXR5cGVvZiBhaV9hZGJfcHJvY2Vzc19ibG9ja3MmJmFpX2FkYl9wcm9jZXNzX2Jsb2NrcyhhKX0sNSl9CmZ1bmN0aW9uIGdldEFsbFVybFBhcmFtcyhhKXt2YXIgbj1hP2Euc3BsaXQoIj8iKVsxXTp3aW5kb3cubG9jYXRpb24uc2VhcmNoLnNsaWNlKDEpO2E9e307aWYobil7bj1uLnNwbGl0KCIjIilbMF07bj1uLnNwbGl0KCImIik7Zm9yKHZhciBCPTA7QjxuLmxlbmd0aDtCKyspe3ZhciB0PW5bQl0uc3BsaXQoIj0iKSxHPXZvaWQgMCx1PXRbMF0ucmVwbGFjZSgvXFtcZCpcXS8sZnVuY3Rpb24obSl7Rz1tLnNsaWNlKDEsLTEpO3JldHVybiIifSk7dD0idW5kZWZpbmVkIj09PXR5cGVvZiB0WzFdPyIiOnRbMV07dT11LnRvTG93ZXJDYXNlKCk7dD10LnRvTG93ZXJDYXNlKCk7YVt1XT8oInN0cmluZyI9PT10eXBlb2YgYVt1XSYmKGFbdV09W2FbdV1dKSwidW5kZWZpbmVkIj09PXR5cGVvZiBHP2FbdV0ucHVzaCh0KTphW3VdW0ddPXQpOmFbdV09dH19cmV0dXJuIGF9OwoKYWlfanNfY29kZSA9IHRydWU7Cn0NCmZ1bmN0aW9uIGFpX3dhaXRfZm9yX2pxdWVyeSgpe2Z1bmN0aW9uIGIoZixjKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKTthLnNyYz1mO3ZhciBkPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sZT0hMTthLm9ubG9hZD1hLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2V8fHRoaXMucmVhZHlTdGF0ZSYmImxvYWRlZCIhPXRoaXMucmVhZHlTdGF0ZSYmImNvbXBsZXRlIiE9dGhpcy5yZWFkeVN0YXRlfHwoZT0hMCxjJiZjKCksYS5vbmxvYWQ9YS5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCxkLnJlbW92ZUNoaWxkKGEpKX07ZC5hcHBlbmRDaGlsZChhKX13aW5kb3cualF1ZXJ5JiZ3aW5kb3cualF1ZXJ5LmZuP2FpX3J1bl9zY3JpcHRzKCk6KGFpX2pxdWVyeV93YWl0aW5nX2NvdW50ZXIrKyw0PT1haV9qcXVlcnlfd2FpdGluZ19jb3VudGVyJiZiKCJodHRwczovL3d3dy50aW9uLnJvL3dwLWluY2x1ZGVzL2pzL2pxdWVyeS9qcXVlcnkubWluLmpzP3Zlcj0xLjEyLjQtd3AiLGZ1bmN0aW9uKCl7YigiaHR0cHM6Ly93d3cudGlvbi5yby93cC1pbmNsdWRlcy9qcy9qcXVlcnkvanF1ZXJ5LW1pZ3JhdGUubWluLmpzP3Zlcj01LjMuMiIsDQpudWxsKX0pLDMwPmFpX2pxdWVyeV93YWl0aW5nX2NvdW50ZXImJnNldFRpbWVvdXQoZnVuY3Rpb24oKXthaV93YWl0X2Zvcl9qcXVlcnkoKX0sNTApKX1haV9qcXVlcnlfd2FpdGluZ19jb3VudGVyPTA7YWlfd2FpdF9mb3JfanF1ZXJ5KCk7DQoKPC9zY3JpcHQ+CiAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICA8L2JvZHk+CjwvaHRtbD4K" width="307px%" alt="ce sunt machiajele">Punctul de plecare pentru acest machiaj este o baza impecabila, incepand cu un fond de ten fluid cu textura usoara. Blush-ul trebuie sa reliefeze tonuri calde de piersica, iar pentru buze evita nuantele stridente si orienteaza-te catre nude-uri trandafirii. Folosind mai multe straturi pentru a ajuta la ascunderea petelor creeaza un finisaj catifelat.<ul> <li>Devino membru ? nu rata promo?iile, ofertele, reducerile ?i voucherele bonus.</li> <li>Din categoria libertati, ar trebui sa faca parte si machiajul.</li> <li>Unele dintre produsele preferate si cele mai vandute sunt paletele de farduri pentru ochi, pudra sau blush-ul.</li> <li>Centrul care se numeşte Atasagon ? în traducere din turcă, Vindecător, propune celor obosiţi...</li></ul>Con?inutul acestui site este protejat de drepturile de autor ?i este proprietatea H & M Hennes & Mauritz AB. Conceptul comercial al H&M este să ofere modă ?i calitate la cel mai bun pre? într-un mod sustenabil. De la fondarea sa în 1947, H&M a devenit una dintre cele mai mari companii de modă din lume. 2019 este anul în care mizăm pe naturaleţe, buzele nude fiind o alegere perfectă.Mascara Devilash, ideală pentru machiajul natural sau intens, stimulează densitatea, volumul ?i curbarea genelor fără să le încarce. Baza de machiaj Mattyfing cu efect matifiant, care creează o peliculă delicată pe suprafa?a pielii ?i reduce aspectul lucios al pielii. Pudra este folosita de orice femeie cu scopul de a oferi rezistenta machiajului pe parcursul intregii zile.... Vremea rece, stresul si produsele pentru fata puternic parfumate pot afecta sanatatea pielii noastre. Dacă vampirii sunt mult prea înspăimântători pentru tine sau nu se potrivesc cu tipul tău de http://www.trungtamytechomoi.com.vn/Default.aspx?tabid=120&ch=56117 , atunci po?i apela la un look mai ginga? ?i cuminte. Zânele sunt deseori prezente în basmele pentru copii ?i nu numai.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-02-20 (日) 20:19:39 (804d)