2goKGEsYyk9PnthLmNsYXNzTGlzdC5yZW1vdmUoImFpLWxpc3QtZGF0YSIpfSk7dmFyIEw9aWEod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7aWYobnVsbCE9TC5yZWZlcnJlcil2YXIgQT1MLnJlZmVycmVyO2Vsc2UgQT1kb2N1bWVudC5yZWZlcnJlciwiIiE9QSYmKEE9aGEoQSkpO3ZhciBSPXdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LFM9Ui50b0xvd2VyQ2FzZSgpLGFhPW5hdmlnYXRvci5sYW5ndWFnZSxNPWFhLnRvTG93ZXJDYXNlKCk7aWYoInVuZGVmaW5lZCIhPT10eXBlb2YgTW9iaWxlRGV0ZWN0KXZhciBiYT1uZXcgTW9iaWxlRGV0ZWN0KFIpO2IuZm9yRWFjaCgoYSxjKT0+e3ZhciBrPWRvY3VtZW50LmNvb2tpZS5zcGxpdCgiOyIpO2suZm9yRWFjaChmdW5jdGlvbihmLGgpe2tbaF09Zi50cmltKCl9KTtjPWEuY2xvc2VzdCgiZGl2LiIrYWlfYmxvY2tfY2xhc3NfZGVmKTt2YXIgbD0hMDtpZihhLmhhc0F0dHJpYnV0ZSgicmVmZXJlci1saXN0Iikpe3ZhciBwPWEuZ2V0QXR0cmlidXRlKCJyZWZlcmVyLWxpc3QiKTtwPWI2NGQocCkuc3BsaXQoIiwiKTt2YXIgdj1hLmdldEF0dHJpYnV0ZSgicmVmZXJlci1saXN0LXR5cGUiKSxFPSExO3AuZXZlcnkoKGYsaCk9PntmPWYudHJpbSgpO2lmKCIiPT1mKXJldHVybiEwO2lmKCIqIj09Zi5jaGFyQXQoMCkpaWYoIioiPT1mLmNoYXJBdChmLmxlbmd0aC0xKSl7aWYoZj1mLnN1YnN0cigxLGYubGVuZ3RoLTIpLC0xIT1BLmluZGV4T2YoZikpcmV0dXJuIEU9ITAsITF9ZWxzZXtpZihmPWYuc3Vic3RyKDEpLEEuc3Vic3RyKC1mLmxlbmd0aCk9PWYpcmV0dXJuIEU9ITAsITF9ZWxzZSBpZigiKiI9PWYuY2hhckF0KGYubGVuZ3RoLTEpKXtpZihmPWYuc3Vic3RyKDAsZi5sZW5ndGgtMSksMD09QS5pbmRleE9mKGYpKXJldHVybiBFPSEwLCExfWVsc2UgaWYoIiMiPT1mKXtpZigiIj09QSlyZXR1cm4gRT0hMCwhMX1lbHNlIGlmKGY9PUEpcmV0dXJuIEU9ITAsITE7cmV0dXJuITB9KTt2YXIgcj1FO3N3aXRjaCh2KXtjYXNlIkIiOnImJihsPSExKTticmVhaztjYXNlIlciOnJ8fChsPSExKX19aWYobCYmYS5oYXNBdHRyaWJ1dGUoImNsaWVudC1saXN0IikmJiJ1bmRlZmluZWQiIT09dHlwZW9mIGJhKXN3aXRjaChwPWEuZ2V0QXR0cmlidXRlKCJjbGllbnQtbGlzdCIpLHA9YjY0ZChwKS5zcGxpdCgiLCIpLHY9YS5nZXRBdHRyaWJ1dGUoImNsaWVudC1saXN0LXR5cGUiKSxyPSExLHAuZXZlcnkoKGYsaCk9PntpZigiIj09Zi50cmltKCkpcmV0dXJuITA7Zi5zcGxpdCgiJiYiKS5ldmVyeSgoZCx0KT0+e3Q9ITA7dmFyIHc9ITE7Zm9yKGQ9ZC50cmltKCk7IiEhIj09ZC5zdWJzdHJpbmcoMCwyKTspdD0hdCxkPWQuc3Vic3RyaW5nKDIpOyJsYW5ndWFnZToiPT1kLnN1YnN0cmluZygwLDkpJiYodz0hMCxkPWQuc3Vic3RyaW5nKDkpLnRvTG93ZXJDYXNlKCkpO3ZhciBxPSExO3c/IioiPT1kLmNoYXJBdCgwKT8iKiI9PWQuY2hhckF0KGQubGVuZ3RoLQoxKT8oZD1kLnN1YnN0cigxLGQubGVuZ3RoLTIpLnRvTG93ZXJDYXNlKCksLTEhPU0uaW5kZXhPZihkKSYmKHE9ITApKTooZD1kLnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpLE0uc3Vic3RyKC1kLmxlbmd0aCk9PWQmJihxPSEwKSk6IioiPT1kLmNoYXJBdChkLmxlbmd0aC0xKT8oZD1kLnN1YnN0cigwLGQubGVuZ3RoLTEpLnRvTG93ZXJDYXNlKCksMD09TS5pbmRleE9mKGQpJiYocT0hMCkpOmQ9PU0mJihxPSEwKToiKiI9PWQuY2hhckF0KDApPyIqIj09ZC5jaGFyQXQoZC5sZW5ndGgtMSk/KGQ9ZC5zdWJzdHIoMSxkLmxlbmd0aC0yKS50b0xvd2VyQ2FzZSgpLC0xIT1TLmluZGV4T2YoZCkmJihxPSEwKSk6KGQ9ZC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKSxTLnN1YnN0cigtZC5sZW5ndGgpPT1kJiYocT0hMCkpOiIqIj09ZC5jaGFyQXQoZC5sZW5ndGgtMSk/KGQ9ZC5zdWJzdHIoMCxkLmxlbmd0aC0xKS50b0xvd2VyQ2FzZSgpLDA9PVMuaW5kZXhPZihkKSYmKHE9ITApKTpiYS5pcyhkKSYmKHE9ITApO3JldHVybihyPXE/dDohdCk/ITA6ITF9KTtyZXR1cm4gcj8hMTohMH0pLHYpe2Nhc2UiQiI6ciYmKGw9ITEpO2JyZWFrO2Nhc2UiVyI6cnx8KGw9ITEpfXZhciBOPXA9ITE7Zm9yKHY9MTsyPj12O3YrKylpZihsKXtzd2l0Y2godil7Y2FzZSAxOnZhciBnPWEuZ2V0QXR0cmlidXRlKCJjb29raWUtbGlzdCIpO2JyZWFrO2Nhc2UgMjpnPWEuZ2V0QXR0cmlidXRlKCJwYXJhbWV0ZXItbGlzdCIpfWlmKG51bGwhPWcpe2c9YjY0ZChnKTtzd2l0Y2godil7Y2FzZSAxOnZhciB5PWEuZ2V0QXR0cmlidXRlKCJjb29raWUtbGlzdC10eXBlIik7YnJlYWs7Y2FzZSAyOnk9YS5nZXRBdHRyaWJ1dGUoInBhcmFtZXRlci1saXN0LXR5cGUiKX1nPWcucmVwbGFjZSgidGNmLWdkcHIiLCJ0Y2YtdjJbZ2RwckFwcGxpZXNdPXRydWUiKTtnPWcucmVwbGFjZSgidGNmLW5vLWdkcHIiLCJ0Y2YtdjJbZ2RwckFwcGxpZXNdPWZhbHNlIik7Zz1nLnJlcGxhY2UoInRjZi1nb29nbGUiLCJ0Y2YtdjJbdmVuZG9yXVtjb25zZW50c11bNzU1XT10cnVlICYmIHRjZi12MltwdXJwb3NlXVtjb25zZW50c11bMV09dHJ1ZSIpO2c9Zy5yZXBsYWNlKCJ0Y2Ytbm8tZ29vZ2xlIiwiISF0Y2YtdjJbdmVuZG9yXVtjb25zZW50c11bNzU1XSIpO2c9Zy5yZXBsYWNlKCJ0Y2YtbWVkaWEubmV0IiwidGNmLXYyW3ZlbmRvcl1bY29uc2VudHNdWzE0Ml09dHJ1ZSAmJiB0Y2YtdjJbcHVycG9zZV1bY29uc2VudHNdWzFdPXRydWUiKTtnPWcucmVwbGFjZSgidGNmLW5vLW1lZGlhLm5ldCIsIiEhdGNmLXYyW3ZlbmRvcl1bY29uc2VudHNdWzE0Ml0iKTtnPWcucmVwbGFjZSgidGNmLWFtYXpvbiIsInRjZi12Mlt2ZW5kb3JdW2NvbnNlbnRzXVs3OTNdPXRydWUgJiYgdGNmLXYyW3B1cnBvc2VdW2NvbnNlbnRzXVsxXT10cnVlIik7Zz1nLnJlcGxhY2UoInRjZi1uby1hbWF6b24iLCIhIXRjZi12Mlt2ZW5kb3JdW2NvbnNlbnRzXVs3OTNdIik7Zz1nLnJlcGxhY2UoInRjZi1lem9pYyIsInRjZi12Mlt2ZW5kb3JdW2NvbnNlbnRzXVszNDddPXRydWUgJiYgdGNmLXYyW3B1cnBvc2VdW2NvbnNlbnRzXVsxXT10cnVlIik7Zz1nLnJlcGxhY2UoInRjZi1uby1lem9pYyIsIiEhdGNmLXYyW3ZlbmRvcl1bY29uc2VudHNdWzM0N10iKTt2YXIgRj1nLnNwbGl0KCIsIiksY2E9W107ay5mb3JFYWNoKGZ1bmN0aW9uKGYpe2Y9Zi5zcGxpdCgiPSIpO3RyeXt2YXIgaD1KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChmWzFdKSl9Y2F0Y2goZCl7aD1kZWNvZGVVUklDb21wb25lbnQoZlsxXSl9Y2FbZlswXV09aH0pO3I9ITE7dmFyIEk9YTtGLmV2ZXJ5KChmLGgpPT57Zi5zcGxpdCgiJiYiKS5ldmVyeSgoZCx0KT0+e3Q9ITA7Zm9yKGQ9ZC50cmltKCk7IiEhIj09ZC5zdWJzdHJpbmcoMCwyKTspdD0hdCxkPWQuc3Vic3RyaW5nKDIpO3ZhciB3PWQscT0iIUAhIixUPSJ0Y2YtdjIiPT13JiYiIUAhIj09cSxCPS0xIT1kLmluZGV4T2YoIlsiKSxKPTA9PWQuaW5kZXhPZigidGNmLXYyIil8fDA9PWQuaW5kZXhPZigiZXVjb25zZW50LXYyIik7Sj1KJiYoQnx8VCk7LTEhPWQuaW5kZXhPZigiPSIpJiYocT1kLnNwbGl0KCI9Iiksdz1xWzBdLHE9cVsxXSxCPS0xIT13LmluZGV4T2YoIlsiKSxKPShKPTA9PXcuaW5kZXhPZigidGNmLXYyIil8fDA9PXcuaW5kZXhPZigiZXVjb25zZW50LXYyIikpJiYoQnx8VCkpO2lmKEopZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiI2FpLWlhYi10Y2Ytc3RhdHVzIiksQj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWktaWFiLXRjZi1iYXIiKSxudWxsIT1CJiYoQi5zdHlsZS5kaXNwbGF5PSJibG9jayIpLFQmJiJib29sZWFuIj09dHlwZW9mIGFpX3RjZmFwaV9mb3VuZD9yPWFpX3RjZmFwaV9mb3VuZD90OiF0OiJvYmplY3QiPT10eXBlb2YgYWlfdGNEYXRhPyhudWxsIT1CJiYoQi5jbGFzc0xpc3QucmVtb3ZlKCJzdGF0dXMtZXJyb3IiKSxCLmNsYXNzTGlzdC5hZGQoInN0YXR1cy1vayIpKSx3PXcucmVwbGFjZSgvXXwgL2dpLCIiKS5zcGxpdCgiWyIpLHcuc2hpZnQoKSxyPSh3PWUodyxhaV90Y0RhdGEscSkpP3Q6IXQpOiJ1bmRlZmluZWQiPT10eXBlb2YgYWlfdGNmYXBpX2ZvdW5kJiYoSS5jbGFzc0xpc3QuYWRkKCJhaS1saXN0LWRhdGEiKSxOPSEwLCJmdW5jdGlvbiI9PXR5cGVvZiBfX3RjZmFwaT9DKCExKToidW5kZWZpbmVkIj09dHlwZW9mIGFpX3RjRGF0YV9yZXRyeWluZyYmKGFpX3RjRGF0YV9yZXRyeWluZz0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ImZ1bmN0aW9uIj09dHlwZW9mIF9fdGNmYXBpP0MoITEpOnNldFRpbWVvdXQoZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgX190Y2ZhcGk/QyghMSk6c2V0VGltZW91dChmdW5jdGlvbigpe0MoITApfSwzRTMpfSwxRTMpfSw2MDApKSk7ZWxzZSBpZihCKXI9KHc9bihjYSx3LHEpKT90OiF0O2Vsc2V7dmFyIFU9ITE7IiFAISI9PXE/ay5ldmVyeShmdW5jdGlvbihqYSl7cmV0dXJuIGphLnNwbGl0KCI9IilbMF09PWQ/KFU9ITAsITEpOiEwfSk6VT0tMSE9ay5pbmRleE9mKGQpO3I9VT90OiF0fXJldHVybiByPyEwOiExfSk7cmV0dXJuIHI/ITE6ITB9KTtyJiYoTj0hMSxJLmNsYXNzTGlzdC5yZW1vdmUoImFpLWxpc3QtZGF0YSIpKTtzd2l0Y2goeSl7Y2FzZSJCIjpyJiYobD0hMSk7YnJlYWs7Y2FzZSJXIjpyfHwobD0hMSl9fX1hLmNsYXNzTGlzdC5jb250YWlucygiYWktbGlzdC1tYW51YWwiKSYmKGw/KEkuY2xhc3NMaXN0LnJlbW92ZSgiYWktbGlzdC1kYXRhIiksSS5jbGFzc0xpc3QucmVtb3ZlKCJhaS1saXN0LW1hbnVhbCIpKToocD0hMCxJLmNsYXNzTGlzdC5hZGQoImFpLWxpc3QtZGF0YSIpKSk7KGx8fCFwJiYhTikmJmEuaGFzQXR0cmlidXRlKCJkYXRhLWRlYnVnLWluZm8iKSYmKGc9ZG9jdW1lbnQucXVlcnlTZWxlY3RvcigiLiIrYS5kYXRhc2V0LmRlYnVnSW5mbyksbnVsbCE9ZyYmKGc9Zy5wYXJlbnRFbGVtZW50LG51bGwhPWcmJmcuY2xhc3NMaXN0LmNvbnRhaW5zKCJhaS1kZWJ1Zy1pbmZvIikmJmcucmVtb3ZlKCkpKTt5PVgoYSwiLmFpLWRlYnVnLWJhci5haS1kZWJ1Zy1saXN0cyIpO3ZhciBrYT0iIj09QT8iIyI6QTswIT15Lmxlbmd0aCYmeS5mb3JFYWNoKChmLGgpPT57aD1mLnF1ZXJ5U2VsZWN0b3IoIi5haS1kZWJ1Zy1uYW1lLmFpLWxpc3QtaW5mbyIpO251bGwhPWgmJihoLnRleHRDb250ZW50PWthLGgudGl0bGU9UisiXG4iK2FhKTtoPWYucXVlcnlTZWxlY3RvcigiLmFpLWRlYnVnLW5hbWUuYWktbGlzdC1zdGF0dXMiKTtudWxsIT1oJiYoaC50ZXh0Q29udGVudD1sP2FpX2Zyb250LnZpc2libGU6YWlfZnJvbnQuaGlkZGVuKX0pO2c9ITE7aWYobCYmYS5oYXNBdHRyaWJ1dGUoInNjaGVkdWxpbmctc3RhcnQiKSYmYS5oYXNBdHRyaWJ1dGUoInNjaGVkdWxpbmctZW5kIikmJmEuaGFzQXR0cmlidXRlKCJzY2hlZHVsaW5nLWRheXMiKSl7dmFyIHU9YS5nZXRBdHRyaWJ1dGUoInNjaGVkdWxpbmctc3RhcnQiKTt2PWEuZ2V0QXR0cmlidXRlKCJzY2hlZHVsaW5nLWVuZCIpO3k9YS5nZXRBdHRyaWJ1dGUoInNjaGVkdWxpbmctZGF5cyIpO2c9ITA7dT1iNjRkKHUpO0Y9YjY0ZCh2KTt2YXIgVj1wYXJzZUludChhLmdldEF0dHJpYnV0ZSgic2NoZWR1bGluZy1mYWxsYmFjayIpKSxPPXBhcnNlSW50KGEuZ2V0QXR0cmlidXRlKCJnbXQiKSk7aWYodS5pbmNsdWRlcygiLSIpfHxGLmluY2x1ZGVzKCItIikpUD1ZKHUpK08sSz1ZKEYpK087ZWxzZSB2YXIgUD1RKHUpLEs9UShGKTtQPz89MDtLPz89MDt2YXIgVz1iNjRkKHkpLnNwbGl0KCIsIik7eT1hLmdldEF0dHJpYnV0ZSgic2NoZWR1bGluZy10eXBlIik7dmFyIEQ9KG5ldyBEYXRlKS5nZXRUaW1lKCkrTzt2PW5ldyBEYXRlKEQpO3ZhciBHPXYuZ2V0RGF5KCk7MD09Rz9HPTY6Ry0tO3UuaW5jbHVkZXMoIi0iKXx8Ri5pbmNsdWRlcygiLSIpfHwodT0obmV3IERhdGUodi5nZXRGdWxsWWVhcigpLHYuZ2V0TW9udGgoKSx2LmdldERhdGUoKSkpLmdldFRpbWUoKStPLEQtPXUsMD5EJiYoRCs9ODY0RTUpKTtzY2hlZHVsaW5nX3N0YXJ0X2RhdGVfb2s9RD49UDtzY2hlZHVsaW5nX2VuZF9kYXRlX29rPTA9PUt8fEQ8Szt1PXNjaGVkdWxpbmdfc3RhcnRfZGF0ZV9vayYmc2NoZWR1bGluZ19lbmRfZGF0ZV9vayYmVy5pbmNsdWRlcyhHLnRvU3RyaW5nKCkpO3N3aXRjaCh5KXtjYXNlIkIiOnU9IXV9dXx8KGw9ITEpO3ZhciBsYT12LnRvSVNPU3RyaW5nKCkuc3BsaXQoIi4iKVswXS5yZXBsYWNlKCJUIiwiICIpO3k9WChhLCIuYWktZGVidWctYmFyLmFpLWRlYnVnLXNjaGVkdWxpbmciKTswIT15Lmxlbmd0aCYmeS5mb3JFYWNoKChmLGgpPT57aD1mLnF1ZXJ5U2VsZWN0b3IoIi5haS1kZWJ1Zy1uYW1lLmFpLXNjaGVkdWxpbmctaW5mbyIpO251bGwhPWgmJihoLnRleHRDb250ZW50PWxhKyIgIitHKyIgY3VycmVudF90aW1lOiAiK01hdGguZmxvb3IoRC50b1N0cmluZygpLzFFMykrIiAgc3RhcnRfZGF0ZToiK01hdGguZmxvb3IoUC8xRTMpLnRvU3RyaW5nKCkrIj0+IitzY2hlZHVsaW5nX3N0YXJ0X2RhdGVfb2sudG9TdHJpbmcoKSsiIGVuZF9kYXRlOiIrTWF0aC5mbG9vcihLLzFFMykudG9TdHJpbmcoKSsiPT4iK3NjaGVkdWxpbmdfZW5kX2RhdGVfb2sudG9TdHJpbmcoKSsiIGRheXM6IitXLnRvU3RyaW5nKCkrIj0+IitXLmluY2x1ZGVzKEcudG9TdHJpbmcoKSkudG9TdHJpbmcoKSk7aD1mLnF1ZXJ5U2VsZWN0b3IoIi5haS1kZWJ1Zy1uYW1lLmFpLXNjaGVkdWxpbmctc3RhdHVzIik7bnVsbCE9aCYmKGgudGV4dENvbnRlbnQ9bD9haV9mcm9udC52aXNpYmxlOmFpX2Zyb250LmhpZGRlbik7bHx8MD09Vnx8KGYuY2xhc3NMaXN0LnJlbW92ZSgiYWktZGVidWctc2NoZWR1bGluZyIpLGYuY2xhc3NMaXN0LmFkZCgiYWktZGVidWctZmFsbGJhY2siKSxoPWYucXVlcnlTZWxlY3RvcigiLmFpLWRlYnVnLW5hbWUuYWktc2NoZWR1bGluZy1zdGF0dXMiKSxudWxsIT1oJiYoaC50ZXh0Q29udGVudD1haV9mcm9udC5mYWxsYmFjaysiID0gIitWKSl9KX1pZihwfHwhbCYmTilyZXR1cm4hMDthLnN0eWxlLnZpc2liaWxpdHk9IiI7YS5zdHlsZS5wb3NpdGlvbj0iIjthLnN0eWxlLndpZHRoPSIiO2Euc3R5bGUuaGVpZ2h0PSIiO2Euc3R5bGUuekluZGV4PSIiO2lmKGwpe2lmKG51bGwhPWMmJihjLnN0eWxlLnZpc2liaWxpdHk9IiIsYy5jbGFzc0xpc3QuY29udGFpbnMoImFpLXJlbW92ZS1wb3NpdGlvbiIpJiYoYy5zdHlsZS5wb3NpdGlvbj0iIikpLGEuaGFzQXR0cmlidXRlKCJkYXRhLWNvZGUiKSl7cD1iNjRkKGEuZGF0YXNldC5jb2RlKTt1PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Zz0hMDt0cnl7SD11LmNyZWF0ZUNvbnRleHR1YWxGcmFnbWVudChwKX1jYXRjaChmKXtnPSExfWcmJihudWxsIT1hLmNsb3Nlc3QoImhlYWQiKT8oYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShILGEubmV4dFNpYmxpbmcpLGEucmVtb3ZlKCkpOmEuYXBwZW5kKEgpKTtkYShhKX19ZWxzZSBpZihnJiYhdSYmMCE9Vil7bnVsbCE9YyYmKGMuc3R5bGUudmlzaWJpbGl0eT0iIixjLmNsYXNzTGlzdC5jb250YWlucygiYWktcmVtb3ZlLXBvc2l0aW9uIikmJmMuY3NzKHtwb3NpdGlvbjoiIn0pKTtwPWZhKGEsIi5haS1mYWxsYmFjayIpOzAhPXAubGVuZ3RoJiZwLmZvckVhY2goKGYsaCk9PntmLmNsYXNzTGlzdC5yZW1vdmUoImFpLWZhbGxiYWNrIil9KTtpZihhLmhhc0F0dHJpYnV0ZSgiZGF0YS1mYWxsYmFjay1jb2RlIikpe3A9YjY0ZChhLmRhdGFzZXQuZmFsbGJhY2tDb2RlKTt1PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7Zz0hMDt0cnl7dmFyIEg9dS5jcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQocCl9Y2F0Y2goZil7Zz0hMX1nJiZhLmFwcGVuZChIKTtkYShhKX1lbHNlIGEuc3R5bGUuZGlzcGxheT0ibm9uZSIsbnVsbCE9YyYmbnVsbD09Yy5xdWVyeVNlbGVjdG9yKCIuYWktZGVidWctYmxvY2siKSYmYy5oYXNBdHRyaWJ1dGUoInN0eWxlIikmJi0xPT1jLmdldEF0dHJpYnV0ZSgic3R5bGUiKS5pbmRleE9mKCJoZWlnaHQ6IikmJihjLnN0eWxlLmRpc3BsYXk9Im5vbmUiKTtudWxsIT1jJiZjLmhhc0F0dHJpYnV0ZSgiZGF0YS1haSIpJiYoYy5nZXRBdHRyaWJ1dGUoImRhdGEtYWkiKSxhLmhhc0F0dHJpYnV0ZSgiZmFsbGJhY2stdHJhY2tpbmciKSYmKEg9YS5nZXRBdHRyaWJ1dGUoImZhbGxiYWNrLXRyYWNraW5nIiksYy5zZXRBdHRyaWJ1dGUoImRhdGEtYWktIithLmdldEF0dHJpYnV0ZSgiZmFsbGJhY2tfbGV2ZWwiKSxIKSkpfWVsc2UgYS5zdHlsZS5kaXNwbGF5PSJub25lIixudWxsIT1jJiYoYy5yZW1vdmVBdHRyaWJ1dGUoImRhdGEtYWkiKSxjLmNsYXNzTGlzdC5yZW1vdmUoImFpLXRyYWNrIiksbnVsbCE9Yy5xdWVyeVNlbGVjdG9yKCIuYWktZGVidWctYmxvY2siKT8oYy5zdHlsZS52aXNpYmlsaXR5PSIiLGMuY2xhc3NMaXN0LnJlbW92ZSgiYWktY2xvc2UiKSxjLmNsYXNzTGlzdC5jb250YWlucygiYWktcmVtb3ZlLXBvc2l0aW9uIikmJihjLnN0eWxlLnBvc2l0aW9uPSIiKSk6Yy5oYXNBdHRyaWJ1dGUoInN0eWxlIikmJi0xPT1jLmdldEF0dHJpYnV0ZSgic3R5bGUiKS5pbmRleE9mKCJoZWlnaHQ6IikmJihjLnN0eWxlLmRpc3BsYXk9Im5vbmUiKSk7YS5zZXRBdHRyaWJ1dGUoImRhdGEtY29kZSIsIiIpO2Euc2V0QXR0cmlidXRlKCJkYXRhLWZhbGxiYWNrLWNvZGUiLCIiKTtudWxsIT1jJiZjLmNsYXNzTGlzdC5yZW1vdmUoImFpLWxpc3QtYmxvY2siKX0pfX07ZnVuY3Rpb24gZWEoYil7Yj1gOyAke2RvY3VtZW50LmNvb2tpZX1gLnNwbGl0KGA7ICR7Yn09YCk7aWYoMj09PWIubGVuZ3RoKXJldHVybiBiLnBvcCgpLnNwbGl0KCI7Iikuc2hpZnQoKX0KZnVuY3Rpb24gbWEoYixlLG4pe2VhKGIpJiYoZG9jdW1lbnQuY29va2llPWIrIj0iKyhlPyI7cGF0aD0iK2U6IiIpKyhuPyI7ZG9tYWluPSIrbjoiIikrIjtleHBpcmVzPVRodSwgMDEgSmFuIDE5NzAgMDA6MDA6MDEgR01UIil9ZnVuY3Rpb24gbShiKXtlYShiKSYmKG1hKGIsIi8iLHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZSksZG9jdW1lbnQuY29va2llPWIrIj07IFBhdGg9LzsgRXhwaXJlcz1UaHUsIDAxIEphbiAxOTcwIDAwOjAwOjAxIEdNVDsiKX0oZnVuY3Rpb24oYil7ImNvbXBsZXRlIj09PWRvY3VtZW50LnJlYWR5U3RhdGV8fCJsb2FkaW5nIiE9PWRvY3VtZW50LnJlYWR5U3RhdGUmJiFkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGw/YigpOmRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTUNvbnRlbnRMb2FkZWQiLGIpfSkoZnVuY3Rpb24oKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YWlfcHJvY2Vzc19saXN0cygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtaKCk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGFpX2xvYWRfYmxvY2tzKXtkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJjbXBsekVuYWJsZVNjcmlwdHMiLGUpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNtcGx6X2V2ZW50X21hcmtldGluZyIsZSk7ZnVuY3Rpb24gZShuKXsiY21wbHpFbmFibGVTY3JpcHRzIiE9bi50eXBlJiYiYWxsIiE9PW4uY29uc2VudExldmVsfHxhaV9sb2FkX2Jsb2NrcygpfWRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNtcGx6X2VuYWJsZV9jYXRlZ29yeSIsZnVuY3Rpb24obil7Im1hcmtldGluZyI9PT1uLmRldGFpbC5jYXRlZ29yeSYmYWlfbG9hZF9ibG9ja3MoKX0pfX0sNTApO3ZhciBiPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5haS1kZWJ1Zy1wYWdlLXR5cGUiKTtudWxsIT1iJiZiLmFkZEV2ZW50TGlzdGVuZXIoImRibGNsaWNrIixlPT57ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWktaWFiLXRjZi1zdGF0dXMiKTtudWxsIT1lJiYoZS50ZXh0Q29udGVudD0iQ09OU0VOVCBDT09LSUVTIik7ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWktaWFiLXRjZi1iYXIiKTtudWxsIT1lJiYoZS5zdHlsZS5kaXNwbGF5PSJibG9jayIpfSk7Yj1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWktaWFiLXRjZi1iYXIiKTtudWxsIT1iJiZiLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIixlPT57bSgiZXVjb25zZW50LXYyIik7bSgiX19seEdfX2NvbnNlbnRfX3YyIik7bSgiX19seEdfX2NvbnNlbnRfX3YyX2RhaXN5Yml0Iik7bSgiX19seEdfX2NvbnNlbnRfX3YyX2dkYWlzeWJpdCIpO20oIkNvb2tpZUxhd0luZm9Db25zZW50Iik7bSgiY29va2llbGF3aW5mby1jaGVja2JveC1hZHZlcnRpc2VtZW50Iik7bSgiY29va2llbGF3aW5mby1jaGVja2JveC1hbmFseXRpY3MiKTttKCJjb29raWVsYXdpbmZvLWNoZWNrYm94LW5lY2Vzc2FyeSIpO20oImNvbXBsaWFuel9wb2xpY3lfaWQiKTttKCJjb21wbGlhbnpfY29uc2VudF9zdGF0dXMiKTttKCJjbXBsel9tYXJrZXRpbmciKTttKCJjbXBsel9jb25zZW50X3N0YXR1cyIpO20oImNtcGx6X3ByZWZlcmVuY2VzIik7bSgiY21wbHpfc3RhdGlzdGljcy1hbm9ueW1vdXMiKTttKCJjbXBsel9jaG9pY2UiKTttKCJjbXBsel9iYW5uZXItc3RhdHVzIik7bSgiY21wbHpfZnVuY3Rpb25hbCIpO20oImNtcGx6X3BvbGljeV9pZCIpO20oImNtcGx6X3N0YXRpc3RpY3MiKTttKCJtb292ZV9nZHByX3BvcHVwIik7bSgicmVhbF9jb29raWVfYmFubmVyLWJsb2c6MS10Y2YiKTttKCJyZWFsX2Nvb2tpZV9iYW5uZXItYmxvZzoxIik7ZT1kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjYWktaWFiLXRjZi1zdGF0dXMiKTtudWxsIT1lJiYoZS50ZXh0Q29udGVudD0iQ09OU0VOVCBDT09LSUVTIERFTEVURUQiKX0pfSw1KX0pO2Z1bmN0aW9uIGRhKGIpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19yb3RhdGlvbnNfaW5fZWxlbWVudCYmYWlfcHJvY2Vzc19yb3RhdGlvbnNfaW5fZWxlbWVudChiKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19saXN0cyYmYWlfcHJvY2Vzc19saXN0cygpOyJmdW5jdGlvbiI9PXR5cGVvZiBhaV9wcm9jZXNzX2lwX2FkZHJlc3NlcyYmYWlfcHJvY2Vzc19pcF9hZGRyZXNzZXMoKTsiZnVuY3Rpb24iPT10eXBlb2YgYWlfcHJvY2Vzc19maWx0ZXJfaG9va3MmJmFpX3Byb2Nlc3NfZmlsdGVyX2hvb2tzKCk7ImZ1bmN0aW9uIj09dHlwZW9mIGFpX2FkYl9wcm9jZXNzX2Jsb2NrcyYmYWlfYWRiX3Byb2Nlc3NfYmxvY2tzKGIpOyJmdW5jdGlvbiI9PXR5cGVvZiBhaV9wcm9jZXNzX2ltcHJlc3Npb25zJiYxPT1haV90cmFja2luZ19maW5pc2hlZCYmYWlfcHJvY2Vzc19pbXByZXNzaW9ucygpOyJmdW5jdGlvbiI9PXR5cGVvZiBhaV9pbnN0YWxsX2NsaWNrX3RyYWNrZXJzJiYxPT1haV90cmFja2luZ19maW5pc2hlZCYmYWlfaW5zdGFsbF9jbGlja190cmFja2VycygpOyJmdW5jdGlvbiI9PXR5cGVvZiBhaV9pbnN0YWxsX2Nsb3NlX2J1dHRvbnMmJmFpX2luc3RhbGxfY2xvc2VfYnV0dG9ucyhkb2N1bWVudCl9LDUpfWZ1bmN0aW9uIGlhKGIpe3ZhciBlPWI/Yi5zcGxpdCgiPyIpWzFdOndpbmRvdy5sb2NhdGlvbi5zZWFyY2guc2xpY2UoMSk7Yj17fTtpZihlKXtlPWUuc3BsaXQoIiMiKVswXTtlPWUuc3BsaXQoIiYiKTtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIHo9ZVtuXS5zcGxpdCgiPSIpLEM9dm9pZCAwLHg9elswXS5yZXBsYWNlKC9cW1xkKlxdLyxmdW5jdGlvbihMKXtDPUwuc2xpY2UoMSwtMSk7cmV0dXJuIiJ9KTt6PSJ1bmRlZmluZWQiPT09dHlwZW9mIHpbMV0/IiI6elsxXTt4PXgudG9Mb3dlckNhc2UoKTt6PXoudG9Mb3dlckNhc2UoKTtiW3hdPygic3RyaW5nIj09PXR5cGVvZiBiW3hdJiYoYlt4XT1bYlt4XV0pLCJ1bmRlZmluZWQiPT09dHlwZW9mIEM/Ylt4XS5wdXNoKHopOmJbeF1bQ109eik6Ylt4XT16fX1yZXR1cm4gYn19O2FpX2pzX2NvZGU9dHJ1ZTs=">