Аудит

Данные на 22 февраля 2024

Добавить сайт в список

86

Показатели сайта

0
0
0
Узнайте больше об этом сайте
ИКС сайта 10
SSL-сертификат Есть SSL-сертификат

Содержимое

Заголовок (тег title) HLB | HLB: The global advisory and accounting network
Заголовок (тег h1) Отсутствует
Описание сайта (description) HLB is a global network of independent advisory and accounting firms providing consulting, tax, and audit services.

Главная страница сайта

URL сайта https://www.hlb.global/
Локализация сайта 4
https://www.hlb.global/wp-json/wp/v2/pages/158
https://www.hlb.global/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.hlb.global%2F
https://www.hlb.global/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.hlb.global%2F&format=xml
https://www.hlb.global/feed/podcast
Кодировка страниц UTF-8
Тексты 582
HTML теги 4,213
a535 article11 b1 body1 br10 button7 circle1 defs8 div435 fecolormatrix8 fecomponenttransfer8 fecomposite8 fefunca8 fefuncb8 fefuncg8 fefuncr8 figure6 filter8 footer1 form10 g2 h223 h37 h41 h61 head1 header5 html1 i95 img756 input58 label23 li577 line3 link46 meta29 nav3 noscript686 ol2 option17 p30 path4 polygon3 rs-bgvideo1 rs-layer19 rs-module1 rs-module-wrap1 rs-slide4 rs-slides1 script78 select2 small2 span440 strong4 style13 svg15 table1 tbody1 td18 th3 thead1 time4 title1 tr7 ul132 unknown1
Скрипты на сайте 75
Все скрипты:
//www.googletagmanager.com/gtag/js?id=UA-126772229-1
data:text/javascript;base64,CgkJCQkJc2V0UkVWU3RhcnRTaXplKHtjOiAncmV2X3NsaWRlcl80XzEnLHJsOlsxMjQwLDEwMjQsNzc4LDQ4MF0sZWw6Wzc2MCw3NjgsNjUwLDY1MF0sZ3c6WzEyNDAsMTAyNCw3NzgsNDgwXSxnaDpbNzYwLDc2OCw2NTAsNjUwXSx0eXBlOidzdGFuZGFyZCcsanVzdGlmeTonJyxsYXlvdXQ6J2Z1bGx3aWR0aCcsbWg6IjAifSk7aWYgKHdpbmRvdy5SU19NT0RVTEVTIT09dW5kZWZpbmVkICYmIHdpbmRvdy5SU19NT0RVTEVTLm1vZHVsZXMhPT11bmRlZmluZWQgJiYgd2luZG93LlJTX01PRFVMRVMubW9kdWxlc1sicmV2c2xpZGVyNDEiXSE9PXVuZGVmaW5lZCkge3dpbmRvdy5SU19NT0RVTEVTLm1vZHVsZXNbInJldnNsaWRlcjQxIl0ub25jZSA9IGZhbHNlO3dpbmRvdy5yZXZhcGk0ID0gdW5kZWZpbmVkO2lmICh3aW5kb3cuUlNfTU9EVUxFUy5jaGVja01pbmltYWwhPT11bmRlZmluZWQpIHdpbmRvdy5SU19NT0RVTEVTLmNoZWNrTWluaW1hbCgpfQoJCQkJ
data:text/javascript;base64,CgkJaWYodHlwZW9mIHJldnNsaWRlcl9zaG93RG91YmxlSnF1ZXJ5RXJyb3IgPT09ICJ1bmRlZmluZWQiKSB7ZnVuY3Rpb24gcmV2c2xpZGVyX3Nob3dEb3VibGVKcXVlcnlFcnJvcihzbGlkZXJJRCkge2NvbnNvbGUubG9nKCJZb3UgaGF2ZSBzb21lIGpxdWVyeS5qcyBsaWJyYXJ5IGluY2x1ZGUgdGhhdCBjb21lcyBhZnRlciB0aGUgU2xpZGVyIFJldm9sdXRpb24gZmlsZXMganMgaW5jbHVzaW9uLiIpO2NvbnNvbGUubG9nKCJUbyBmaXggdGhpcywgeW91IGNhbjoiKTtjb25zb2xlLmxvZygiMS4gU2V0ICdNb2R1bGUgR2VuZXJhbCBPcHRpb25zJyAtPiAnQWR2YW5jZWQnIC0+ICdqUXVlcnkgJiBPdXRQdXQgRmlsdGVycycgLT4gJ1B1dCBKUyB0byBCb2R5JyB0byBvbiIpO2NvbnNvbGUubG9nKCIyLiBGaW5kIHRoZSBkb3VibGUgalF1ZXJ5LmpzIGluY2x1c2lvbiBhbmQgcmVtb3ZlIGl0Iik7cmV0dXJuICJEb3VibGUgSW5jbHVkZWQgalF1ZXJ5IExpYnJhcnkiO319Cg==
data:text/javascript;base64,CgkJdmFyCXRwaiA9IGpRdWVyeTsKCgkJdmFyCXJldmFwaTQ7CgoJCWlmKHdpbmRvdy5SU19NT0RVTEVTID09PSB1bmRlZmluZWQpIHdpbmRvdy5SU19NT0RVTEVTID0ge307CgkJaWYoUlNfTU9EVUxFUy5tb2R1bGVzID09PSB1bmRlZmluZWQpIFJTX01PRFVMRVMubW9kdWxlcyA9IHt9OwoJCVJTX01PRFVMRVMubW9kdWxlc1sicmV2c2xpZGVyNDEiXSA9IHtvbmNlOiBSU19NT0RVTEVTLm1vZHVsZXNbInJldnNsaWRlcjQxIl0hPT11bmRlZmluZWQgPyBSU19NT0RVTEVTLm1vZHVsZXNbInJldnNsaWRlcjQxIl0ub25jZSA6IHVuZGVmaW5lZCwgaW5pdDpmdW5jdGlvbigpIHsKCQkJd2luZG93LnJldmFwaTQgPSB3aW5kb3cucmV2YXBpND09PXVuZGVmaW5lZCB8fCB3aW5kb3cucmV2YXBpND09PW51bGwgfHwgd2luZG93LnJldmFwaTQubGVuZ3RoPT09MCAgPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmV2X3NsaWRlcl80XzEiKSA6IHdpbmRvdy5yZXZhcGk0OwoJCQlpZih3aW5kb3cucmV2YXBpNCA9PT0gbnVsbCB8fCB3aW5kb3cucmV2YXBpNCA9PT0gdW5kZWZpbmVkIHx8IHdpbmRvdy5yZXZhcGk0Lmxlbmd0aD09MCkgeyB3aW5kb3cucmV2YXBpNGluaXRUcnkgPSB3aW5kb3cucmV2YXBpNGluaXRUcnkgPT09dW5kZWZpbmVkID8gMCA6IHdpbmRvdy5yZXZhcGk0aW5pdFRyeSsxOyBpZiAod2luZG93LnJldmFwaTRpbml0VHJ5PDIwKSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnVuY3Rpb24oKSB7UlNfTU9EVUxFUy5tb2R1bGVzWyJyZXZzbGlkZXI0MSJdLmluaXQoKX0pOyByZXR1cm47fQoJCQl3aW5kb3cucmV2YXBpNCA9IGpRdWVyeSh3aW5kb3cucmV2YXBpNCk7CgkJCWlmKHdpbmRvdy5yZXZhcGk0LnJldm9sdXRpb249PXVuZGVmaW5lZCl7IHJldnNsaWRlcl9zaG93RG91YmxlSnF1ZXJ5RXJyb3IoInJldl9zbGlkZXJfNF8xIik7IHJldHVybjt9CgkJCXJldmFwaTQucmV2b2x1dGlvbkluaXQoewoJCQkJCXJldmFwaToicmV2YXBpNCIsCgkJCQkJRFBSOiJkcHIiLAoJCQkJCXZpc2liaWxpdHlMZXZlbHM6IjEyNDAsMTAyNCw3NzgsNDgwIiwKCQkJCQlncmlkd2lkdGg6IjEyNDAsMTAyNCw3NzgsNDgwIiwKCQkJCQlncmlkaGVpZ2h0OiI3NjAsNzY4LDY1MCw2NTAiLAoJCQkJCWxhenlUeXBlOiJhbGwiLAoJCQkJCXNwaW5uZXI6InNwaW5uZXI3IiwKCQkJCQlwZXJzcGVjdGl2ZTo2MDAsCgkJCQkJcGVyc3BlY3RpdmVUeXBlOiJnbG9iYWwiLAoJCQkJCWxhenlPbkJnOnRydWUsCgkJCQkJZWRpdG9yaGVpZ2h0OiI3NjAsNzY4LDY1MCw2NTAiLAoJCQkJCXJlc3BvbnNpdmVMZXZlbHM6IjEyNDAsMTAyNCw3NzgsNDgwIiwKCQkJCQlwcm9ncmVzc0JhcjogewoJCQkJCQliYXNlZG9uOiJtb2R1bGUiLAoJCQkJCQlhbGlnbmJ5OiJncmlkIiwKCQkJCQkJYmdjb2xvcjoicmdiYSgyNTUsMjU1LDI1NSwwLjI2KSIsCgkJCQkJCWNvbG9yOiIjZmZmZmZmIiwKCQkJCQkJZ2Fwc2l6ZToxMDAsCgkJCQkJCWdhcGNvbG9yOiJyZ2JhKDI1NSwyNTUsMjU1LDApIiwKCQkJCQkJZ2FwOnRydWUsCgkJCQkJCXZlcnRpY2FsOiJ0b3AiLAoJCQkJCQlzaXplOjUsCgkJCQkJCXk6IjE3MHB4IgoJCQkJCQl9LAoJCQkJCW5hdmlnYXRpb246IHsKCQkJCQkJb25Ib3ZlclN0b3A6ZmFsc2UKCQkJCQl9LAoJCQkJCXZpZXdQb3J0OiB7CgkJCQkJCWdsb2JhbDp0cnVlLAoJCQkJCQlnbG9iYWxEaXN0OiItMjAwcHgiLAoJCQkJCQllbmFibGU6ZmFsc2UKCQkJCQl9LAoJCQkJCWZhbGxiYWNrczogewoJCQkJCQlhbGxvd0hUTUw1QXV0b1BsYXlPbkFuZHJvaWQ6dHJ1ZQoJCQkJCX0sCgkJCX0pOwoJCQkKCQl9fSAvLyBFbmQgb2YgUmV2SW5pdFNjcmlwdAoKCQlpZiAod2luZG93LlJTX01PRFVMRVMuY2hlY2tNaW5pbWFsIT09dW5kZWZpbmVkKSB7IHdpbmRvdy5SU19NT0RVTEVTLmNoZWNrTWluaW1hbCgpO307Cgk=
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgQ2xpX0RhdGEgPSB7Im5uX2Nvb2tpZV9pZHMiOltdLCJjb29raWVsaXN0IjpbXSwibm9uX25lY2Vzc2FyeV9jb29raWVzIjpbXSwiY2NwYUVuYWJsZWQiOiIxIiwiY2NwYVJlZ2lvbkJhc2VkIjoiIiwiY2NwYUJhckVuYWJsZWQiOiIiLCJzdHJpY3RseUVuYWJsZWQiOlsibmVjZXNzYXJ5Iiwib2JsaWdhdG9pcmUiXSwiY2NwYVR5cGUiOiJjY3BhX2dkcHIiLCJqc19ibG9ja2luZyI6IjEiLCJjdXN0b21faW50ZWdyYXRpb24iOiIiLCJ0cmlnZ2VyRG9tUmVmcmVzaCI6IiIsInNlY3VyZV9jb29raWVzIjoiIn07CnZhciBjbGlfY29va2llYmFyX3NldHRpbmdzID0geyJhbmltYXRlX3NwZWVkX2hpZGUiOiI1MDAiLCJhbmltYXRlX3NwZWVkX3Nob3ciOiI1MDAiLCJiYWNrZ3JvdW5kIjoiI0ZGRiIsImJvcmRlciI6IiNiMWE2YTZjMiIsImJvcmRlcl9vbiI6IiIsImJ1dHRvbl8xX2J1dHRvbl9jb2xvdXIiOiIjNjFhMjI5IiwiYnV0dG9uXzFfYnV0dG9uX2hvdmVyIjoiIzRlODIyMSIsImJ1dHRvbl8xX2xpbmtfY29sb3VyIjoiI2ZmZiIsImJ1dHRvbl8xX2FzX2J1dHRvbiI6IjEiLCJidXR0b25fMV9uZXdfd2luIjoiIiwiYnV0dG9uXzJfYnV0dG9uX2NvbG91ciI6IiMzMzMiLCJidXR0b25fMl9idXR0b25faG92ZXIiOiIjMjkyOTI5IiwiYnV0dG9uXzJfbGlua19jb2xvdXIiOiIjNDQ0IiwiYnV0dG9uXzJfYXNfYnV0dG9uIjoiIiwiYnV0dG9uXzJfaGlkZWJhciI6IiIsImJ1dHRvbl8zX2J1dHRvbl9jb2xvdXIiOiIjZGVkZmUwIiwiYnV0dG9uXzNfYnV0dG9uX2hvdmVyIjoiI2IyYjJiMyIsImJ1dHRvbl8zX2xpbmtfY29sb3VyIjoiIzMzMzMzMyIsImJ1dHRvbl8zX2FzX2J1dHRvbiI6IjEiLCJidXR0b25fM19uZXdfd2luIjoiIiwiYnV0dG9uXzRfYnV0dG9uX2NvbG91ciI6IiNkZWRmZTAiLCJidXR0b25fNF9idXR0b25faG92ZXIiOiIjYjJiMmIzIiwiYnV0dG9uXzRfbGlua19jb2xvdXIiOiIjMzMzMzMzIiwiYnV0dG9uXzRfYXNfYnV0dG9uIjoiMSIsImJ1dHRvbl83X2J1dHRvbl9jb2xvdXIiOiIjNjFhMjI5IiwiYnV0dG9uXzdfYnV0dG9uX2hvdmVyIjoiIzRlODIyMSIsImJ1dHRvbl83X2xpbmtfY29sb3VyIjoiI2ZmZiIsImJ1dHRvbl83X2FzX2J1dHRvbiI6IjEiLCJidXR0b25fN19uZXdfd2luIjoiIiwiZm9udF9mYW1pbHkiOiJpbmhlcml0IiwiaGVhZGVyX2ZpeCI6IiIsIm5vdGlmeV9hbmltYXRlX2hpZGUiOiIxIiwibm90aWZ5X2FuaW1hdGVfc2hvdyI6IiIsIm5vdGlmeV9kaXZfaWQiOiIjY29va2llLWxhdy1pbmZvLWJhciIsIm5vdGlmeV9wb3NpdGlvbl9ob3Jpem9udGFsIjoibGVmdCIsIm5vdGlmeV9wb3NpdGlvbl92ZXJ0aWNhbCI6ImJvdHRvbSIsInNjcm9sbF9jbG9zZSI6IiIsInNjcm9sbF9jbG9zZV9yZWxvYWQiOiIiLCJhY2NlcHRfY2xvc2VfcmVsb2FkIjoiMSIsInJlamVjdF9jbG9zZV9yZWxvYWQiOiIxIiwic2hvd2FnYWluX3RhYiI6IjEiLCJzaG93YWdhaW5fYmFja2dyb3VuZCI6IiNmZmYiLCJzaG93YWdhaW5fYm9yZGVyIjoiIzAwMCIsInNob3dhZ2Fpbl9kaXZfaWQiOiIjY29va2llLWxhdy1pbmZvLWFnYWluIiwic2hvd2FnYWluX3hfcG9zaXRpb24iOiIyMHB4IiwidGV4dCI6IiMzMzMzMzMiLCJzaG93X29uY2VfeW4iOiIiLCJzaG93X29uY2UiOiIxMDAwMCIsImxvZ2dpbmdfb24iOiIiLCJhc19wb3B1cCI6IiIsInBvcHVwX292ZXJsYXkiOiIxIiwiYmFyX2hlYWRpbmdfdGV4dCI6IiIsImNvb2tpZV9iYXJfYXMiOiJiYW5uZXIiLCJwb3B1cF9zaG93YWdhaW5fcG9zaXRpb24iOiJib3R0b20tcmlnaHQiLCJ3aWRnZXRfcG9zaXRpb24iOiJsZWZ0In07CnZhciBsb2dfb2JqZWN0ID0geyJhamF4X3VybCI6Imh0dHBzOlwvXC93d3cuaGxiLmdsb2JhbFwvd3AtYWRtaW5cL2FkbWluLWFqYXgucGhwIn07Ci8qIF1dPiAqLwo=
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgX3p4Y3ZiblNldHRpbmdzID0geyJzcmMiOiJodHRwczpcL1wvd3d3LmhsYi5nbG9iYWxcL3dwLWluY2x1ZGVzXC9qc1wvenhjdmJuLm1pbi5qcyJ9OwovKiBdXT4gKi8K
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgY2NwYV9kYXRhID0geyJvcHRfb3V0X3Byb21wdCI6IkRvIHlvdSByZWFsbHkgd2lzaCB0byBvcHQgb3V0PyIsIm9wdF9vdXRfY29uZmlybSI6IkNvbmZpcm0iLCJvcHRfb3V0X2NhbmNlbCI6IkNhbmNlbCJ9OwovKiBdXT4gKi8K
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgY3NKc0RhdGEgPSB7ImxpbmtTZWxlY3RvciI6ImFbaHJlZio9XCIjXCJdIn07Ci8qIF1dPiAqLwo=
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgY3VzdG9tX21lbnVfb2JqZWN0ID0geyJpc19tb2JpbGUiOiIifTsKLyogXV0+ICovCg==
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgZnJvbnRlbmRfYWpheF9vYmplY3QgPSB7ImFqYXh1cmwiOiJodHRwczpcL1wvd3d3LmhsYi5nbG9iYWxcL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCIsImRyb3Bkb3duX2xhYmVsIjoiQWxsIn07Ci8qIF1dPiAqLwo=
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgam9ic2VhcmNoX2xvZ2luX3JlZ2lzdGVyX2NvbW1vbl92YXJzID0geyJwbHVnaW5fdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1jb250ZW50XC9wbHVnaW5zXC93cC1qb2JzZWFyY2hcLyIsImFqYXhfdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAifTsKLyogXV0+ICovCg==
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgam9ic2VhcmNoX3BsdWdpbl92YXJzID0geyJwbHVnaW5fdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1jb250ZW50XC9wbHVnaW5zXC93cC1qb2JzZWFyY2hcLyIsImFqYXhfdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJhamF4X3VybF9zaW1wIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJsb2NtYXBfdHlwZSI6Im1hcGJveCIsImdvb2dsZV9hcGlfa2V5IjoiIiwibWFwYm94X3Rva2VuIjoiIiwibWFwYm94X3N0eWxlIjoibWFwYm94OlwvXC9zdHlsZXNcL21hcGJveFwvc3RyZWV0cy12MTEiLCJpc19tYXBfYWxsb3ciOiJ5ZXMiLCJsb2NhdGlvbnNfdHlwZSI6ImFwaSIsInJlcXVpcmVkX2FwaV9sb2NzIjoibm8iLCJjYXJlZXJmeV90aGVtZV9jb2xvciI6IiMxM2I1ZWEiLCJzZWxfY291bnRyaWVzX2pzb24iOiIiLCJjb21faW1nX3NpemUiOiJJbWFnZSBzaXplIHNob3VsZCBub3QgZ3JlYXRlciB0aGFuIDEgTUIuIiwiY29tX2ZpbGVfc2l6ZSI6IkZpbGUgc2l6ZSBzaG91bGQgbm90IGdyZWF0ZXIgdGhhbiAxIE1CLiIsImN2X2ZpbGVfdHlwZXMiOiJTdWl0YWJsZSBmaWxlcyBhcmUgLmRvYywuZG9jeCwucGRmIiwiY292ZXJmaWxlX3NpemVfYWxsb3ciOiIxMDI0IiwiY292ZXJmaWxlX3NpemVfZXJyIjoiRmlsZSBzaXplIHNob3VsZCBub3QgZ3JlYXRlciB0aGFuIDFNYi4iLCJjb3Zlcl9maWxlX3R5cGVzIjoiU3VpdGFibGUgZmlsZXMgYXJlIC5kb2MsIC5kb2N4LCAucGRmLiIsImNvdmVyZG9jX2ZpbGVfdHlwZXMiOiJbXCJhcHBsaWNhdGlvblwvbXN3b3JkXCIsXCJhcHBsaWNhdGlvblwvdm5kLm9wZW54bWxmb3JtYXRzLW9mZmljZWRvY3VtZW50LndvcmRwcm9jZXNzaW5nbWwuZG9jdW1lbnRcIixcImFwcGxpY2F0aW9uXC9wZGZcIl0iLCJhcmVfeW91X3N1cmUiOiJBcmUgeW91IHN1cmUhIiwiY29tX3dvcmRfdGl0bGUiOiJUaXRsZSIsInNlZV9sZXNzX3R4dCI6Ii0gc2VlIGxlc3MiLCJzZWVfbW9yZV90eHQiOiIrIHNlZSBtb3JlIiwiY29tX3dvcmRfZGVzY3JpcHRpb24iOiJEZXNjcmlwdGlvbiIsImNvbV93b3JkX3NhdmUiOiJTYXZlIiwiZXJyb3JfbXNnIjoiVGhlcmUgaXMgc29tZSBwcm9ibGVtLiIsInNob3J0bGlzdGVkX3N0ciI6IlNhdmVkIiwic2VsZWN0X3NlY3RvciI6IlNlbGVjdCBTZWN0b3IiLCJsb2FkaW5nIjoiTG9hZGluZy4uLiIsImFjY3B0X3Rlcm1zX2NvbmQiOiJQbGVhc2UgYWNjZXB0IG91ciB0ZXJtcyBhbmQgY29uZGl0aW9ucy4iLCJ2YXJfYWRkcmVzc19zdHIiOiJBZGRyZXNzIiwidmFyX290aGVyX2xvY3Nfc3RyIjoiT3RoZXIgTG9jYXRpb25zIiwiYXV0b2NvbXBsZXRlX2FkcmVzX3R5cGUiOiJjaXR5X2NvbnRyeSIsInBhc3NfbGVuZ3RoX3Nob3J0IjoiVmVyeSB3ZWFrIiwicGFzc19sZW5ndGhfbWVkIjoiV2VhayIsInBhc3NfbGVuZ3RoX2dvb2QiOiJNZWRpdW0iLCJwYXNzX2xlbmd0aF9zdHJuZyI6IlN0cm9uZyIsInRvdGxfYXBwbGljYW50cyI6IlRvdGFsIEFwcGxpY2FudHM6Iiwic2hvcnRsaXN0ZWRfYXBwbGljYW50cyI6IlNob3J0bGlzdGVkIEFwcGxpY2FudHM6IiwicmVqZWN0ZWRfYXBwbGljYW50cyI6IlJlamVjdGVkIEFwcGxpY2FudHM6IiwiaXNfcnRsIjoiIiwiYWNwdGFibGVfcGFzc19zdHJudGgiOiJbXCJtZWRpdW1cIixcInN0cm9uZ1wiXSJ9OwovKiBdXT4gKi8K
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgc2liRXJyTXNnID0geyJpbnZhbGlkTWFpbCI6IlBsZWFzZSBmaWxsIG91dCB2YWxpZCBlbWFpbCBhZGRyZXNzIiwicmVxdWlyZWRGaWVsZCI6IlBsZWFzZSBmaWxsIG91dCByZXF1aXJlZCBmaWVsZHMiLCJpbnZhbGlkRGF0ZUZvcm1hdCI6IlBsZWFzZSBmaWxsIG91dCB2YWxpZCBkYXRlIGZvcm1hdCIsImludmFsaWRTTVNGb3JtYXQiOiJQbGVhc2UgZmlsbCBvdXQgdmFsaWQgcGhvbmUgbnVtYmVyIn07CnZhciBhamF4X3NpYl9mcm9udF9vYmplY3QgPSB7ImFqYXhfdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJhamF4X25vbmNlIjoiMmFkZTg4ODZkNiIsImZsYWdfdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1jb250ZW50XC9wbHVnaW5zXC9tYWlsaW5cL2ltZ1wvZmxhZ3NcLyJ9OwovKiBdXT4gKi8K
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgcHdzTDEwbiA9IHsidW5rbm93biI6IlBhc3N3b3JkIHN0cmVuZ3RoIHVua25vd24iLCJzaG9ydCI6IlZlcnkgd2VhayIsImJhZCI6IldlYWsiLCJnb29kIjoiTWVkaXVtIiwic3Ryb25nIjoiU3Ryb25nIiwibWlzbWF0Y2giOiJNaXNtYXRjaCJ9OwovKiBdXT4gKi8K
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgd3BjZjcgPSB7ImFwaSI6eyJyb290IjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1qc29uXC8iLCJuYW1lc3BhY2UiOiJjb250YWN0LWZvcm0tN1wvdjEifX07Ci8qIF1dPiAqLwo=
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgd3BjZjdjZl9nbG9iYWxfc2V0dGluZ3MgPSB7ImFqYXh1cmwiOiJodHRwczpcL1wvd3d3LmhsYi5nbG9iYWxcL3dwLWFkbWluXC9hZG1pbi1hamF4LnBocCJ9OwovKiBdXT4gKi8K
data:text/javascript;base64,Ci8qIDwhW0NEQVRBWyAqLwp2YXIgdWJlcm1lbnVfZGF0YSA9IHsicmVtb3ZlX2NvbmZsaWN0cyI6Im9mZiIsInJlcG9zaXRpb25fb25fbG9hZCI6Im9mZiIsImludGVudF9kZWxheSI6IjMwMCIsImludGVudF9pbnRlcnZhbCI6IjEwMCIsImludGVudF90aHJlc2hvbGQiOiI3Iiwic2Nyb2xsdG9fb2Zmc2V0IjoiNTAiLCJzY3JvbGx0b19kdXJhdGlvbiI6IjEwMDAiLCJyZXNwb25zaXZlX2JyZWFrcG9pbnQiOiI5NTkiLCJhY2Nlc3NpYmxlIjoib24iLCJyZXRyYWN0b3JfZGlzcGxheV9zdHJhdGVneSI6InJlc3BvbnNpdmUiLCJ0b3VjaF9vZmZfY2xvc2UiOiJvbiIsInN1Ym1lbnVfaW5kaWNhdG9yX2Nsb3NlX21vYmlsZSI6Im9uIiwiY29sbGFwc2VfYWZ0ZXJfc2Nyb2xsIjoib24iLCJ2IjoiMy43LjciLCJjb25maWd1cmF0aW9ucyI6WyJtYWluIl0sImFqYXhfdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1hZG1pblwvYWRtaW4tYWpheC5waHAiLCJwbHVnaW5fdXJsIjoiaHR0cHM6XC9cL3d3dy5obGIuZ2xvYmFsXC93cC1jb250ZW50XC9wbHVnaW5zXC91YmVybWVudVwvIiwiZGlzYWJsZV9tb2JpbGUiOiJvbiIsInByZWZpeF9ib29zdCI6IiIsInVzZV9jb3JlX3N2Z3MiOiJvZmYiLCJhcmlhX3JvbGVfbmF2aWdhdGlvbiI6Im9mZiIsImFyaWFfbmF2X2xhYmVsIjoib2ZmIiwiYXJpYV9leHBhbmRlZCI6Im9mZiIsImFyaWFfaGlkZGVuIjoib2ZmIiwiYXJpYV9jb250cm9scyI6IiIsImFyaWFfcmVzcG9uc2l2ZV90b2dnbGUiOiJvZmYiLCJpY29uX3RhZyI6ImkiLCJlc2NfY2xvc2VfbW9iaWxlIjoib24iLCJ0aGVtZV9sb2NhdGlvbnMiOnsibW9iaWxlLW1lbnUiOiJNb2JpbGUgTWVudSIsInByaW1hcnkiOiJQcmltYXJ5IE1lbnUiLCJmb290ZXIiOiJGb290ZXIgTWVudSJ9fTsKLyogXV0+ICovCg==
data:text/javascript;base64,CiggZnVuY3Rpb24oIGRvbWFpbiwgdHJhbnNsYXRpb25zICkgewoJdmFyIGxvY2FsZURhdGEgPSB0cmFuc2xhdGlvbnMubG9jYWxlX2RhdGFbIGRvbWFpbiBdIHx8IHRyYW5zbGF0aW9ucy5sb2NhbGVfZGF0YS5tZXNzYWdlczsKCWxvY2FsZURhdGFbIiJdLmRvbWFpbiA9IGRvbWFpbjsKCXdwLmkxOG4uc2V0TG9jYWxlRGF0YSggbG9jYWxlRGF0YSwgZG9tYWluICk7Cn0gKSggImRlZmF1bHQiLCB7InRyYW5zbGF0aW9uLXJldmlzaW9uLWRhdGUiOiIyMDIzLTAzLTE0IDEwOjMzOjAxKzAwMDAiLCJnZW5lcmF0b3IiOiJHbG90UHJlc3NcLzQuMC4wLWFscGhhLjQiLCJkb21haW4iOiJtZXNzYWdlcyIsImxvY2FsZV9kYXRhIjp7Im1lc3NhZ2VzIjp7IiI6eyJkb21haW4iOiJtZXNzYWdlcyIsInBsdXJhbC1mb3JtcyI6Im5wbHVyYWxzPTI7IHBsdXJhbD1uICE9IDE7IiwibGFuZyI6ImVuX0dCIn0sIiUxJHMgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uICUyJHMhIFVzZSAlMyRzIGluc3RlYWQuIFBsZWFzZSBjb25zaWRlciB3cml0aW5nIG1vcmUgaW5jbHVzaXZlIGNvZGUuIjpbIiUxJHMgaXMgZGVwcmVjYXRlZCBzaW5jZSB2ZXJzaW9uICUyJHMhIFVzZSAlMyRzIGluc3RlYWQuIFBsZWFzZSBjb25zaWRlciB3cml0aW5nIG1vcmUgaW5jbHVzaXZlIGNvZGUuIl19fSwiY29tbWVudCI6eyJyZWZlcmVuY2UiOiJ3cC1hZG1pblwvanNcL3Bhc3N3b3JkLXN0cmVuZ3RoLW1ldGVyLmpzIn19ICk7Cg==
data:text/javascript;base64,Cm1vbWVudC51cGRhdGVMb2NhbGUoICdlbl9HQicsIHsibW9udGhzIjpbIkphbnVhcnkiLCJGZWJydWFyeSIsIk1hcmNoIiwiQXByaWwiLCJNYXkiLCJKdW5lIiwiSnVseSIsIkF1Z3VzdCIsIlNlcHRlbWJlciIsIk9jdG9iZXIiLCJOb3ZlbWJlciIsIkRlY2VtYmVyIl0sIm1vbnRoc1Nob3J0IjpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLCJ3ZWVrZGF5cyI6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLCJ3ZWVrZGF5c1Nob3J0IjpbIlN1biIsIk1vbiIsIlR1ZSIsIldlZCIsIlRodSIsIkZyaSIsIlNhdCJdLCJ3ZWVrIjp7ImRvdyI6MX0sImxvbmdEYXRlRm9ybWF0Ijp7IkxUIjoiZzppIGEiLCJMVFMiOm51bGwsIkwiOm51bGwsIkxMIjoiaiBGIFkiLCJMTEwiOiJqIEYgWSBIOmkiLCJMTExMIjpudWxsfX0gKTsK
data:text/javascript;base64,CmpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCkgewoJICAJLy8gZ2V0IGluIHRvdWNoIGZseWluZyB3aWRnZXQKICAgICAgdmFyIGdldEluVG91Y2hXaWRnZXQgPSAkKCcuZ2V0LWluLXRvdWNoLXdpZGdldCcpLAoJCQkJICAgIGdldEluVG91Y2hQYW5lbCA9ICQoJy5zZWN0aW9uLWdldC1pbi10b3VjaCcpLAoJCQkJICAgIGdldEluVG91Y2hQYW5lbFRvcCA9IDAsCgkJCQkgICAgZ2V0SW5Ub3VjaFdpZGdldE9mZnNldFRvcCA9IDAsCgkJCQkgICAgZ2V0SW5Ub3VjaFdpZGdldFRpbWVyID0gZmFsc2U7CgkJCQkvLyBjb25zb2xlLmxvZyhnZXRJblRvdWNoUGFuZWwpOwoJCQkJaWYgKGdldEluVG91Y2hQYW5lbC5sZW5ndGggJiYgZ2V0SW5Ub3VjaFdpZGdldC5sZW5ndGgpIHsKCQkJCQl2YXIgc2V0R2V0SW5Ub3VjaFBhbmVsVG9wID0gZnVuY3Rpb24gc2V0R2V0SW5Ub3VjaFBhbmVsVG9wKCkgewoJCQkJCQlnZXRJblRvdWNoUGFuZWxUb3AgPSBnZXRJblRvdWNoUGFuZWwucG9zaXRpb24oKS50b3A7CgkJCQkJCWdldEluVG91Y2hXaWRnZXRPZmZzZXRUb3AgPSBwYXJzZUludCgkKCcuZ2V0LWluLXRvdWNoLXdpZGdldC0tbGluaycpLmNzcygndG9wJykpICsgNzA7CgkJCQkJCSQod2luZG93KS50cmlnZ2VyKCdzY3JvbGwnKTsKCQkJCQl9OwoKCQkJCQkkKHdpbmRvdykuYmluZCgnc2Nyb2xsJywgZnVuY3Rpb24gKCkgewoJCQkJCQlpZiAoJCh3aW5kb3cpLnNjcm9sbFRvcCgpICsgZ2V0SW5Ub3VjaFdpZGdldE9mZnNldFRvcCA+IGdldEluVG91Y2hQYW5lbFRvcCkgewoJCQkJCQkJJChnZXRJblRvdWNoV2lkZ2V0KS5yZW1vdmVDbGFzcygnZml4ZWQnKS5jc3MoJ3RvcCcsIGdldEluVG91Y2hQYW5lbFRvcCAtIGdldEluVG91Y2hXaWRnZXRPZmZzZXRUb3ApOwoJCQkJCQl9IGVsc2UgewoJCQkJCQkJJChnZXRJblRvdWNoV2lkZ2V0KS5jc3MoJ3RvcCcsIDApLmFkZENsYXNzKCdmaXhlZCcpOwoJCQkJCQl9CgkJCQkJfSk7CgoJCQkJCXNldEdldEluVG91Y2hQYW5lbFRvcCgpOwoKCQkJCQkkKHdpbmRvdykuYmluZCgnbG9hZCByZXNpemUnLCBmdW5jdGlvbiAoKSB7CgkJCQkJCWlmIChnZXRJblRvdWNoV2lkZ2V0VGltZXIpIGNsZWFyVGltZW91dChnZXRJblRvdWNoV2lkZ2V0VGltZXIpOwoJCQkJCQlnZXRJblRvdWNoV2lkZ2V0VGltZXIgPSBzZXRUaW1lb3V0KHNldEdldEluVG91Y2hQYW5lbFRvcCwgNTAwKTsKCQkJCQl9KTsKCQkJCX0KICAJCS8vc2lnbnVwIGZvcm0gY29kZQoJCXZhciBTdWJtaXRfYnRuX3ZhbCA9IGpRdWVyeSgiLmhsYi1zaWdudXAtZm9ybSBbdHlwZT0nc3VibWl0J10iKS50ZXh0KCk7CiAgICAgIAlqUXVlcnkoIi5obGItc2lnbnVwLWZvcm0gW3R5cGU9J3N1Ym1pdCddIikucmVwbGFjZVdpdGgoICI8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J1dHRvbiBidXR0b24tLWRlZmF1bHQnPjxzcGFuPiIrU3VibWl0X2J0bl92YWwrIjwvc3Bhbj48L2J1dHRvbj4iICk7CiAgICAgCSQoJy5obGItc2lnbnVwLWZvcm0gZm9ybScpLnZhbGlkYXRlKHsKICAgICAJaGlnaGxpZ2h0OiBmdW5jdGlvbiBoaWdobGlnaHQoZWxlbWVudCkgewogICAgIAkkKGVsZW1lbnQpLnBhcmVudCgpLmFkZENsYXNzKCJpbnZhbGlkIikucmVtb3ZlQ2xhc3MoInZhbGlkIik7CiAgICAgCX0sCiAgICAgCXVuaGlnaGxpZ2h0OiBmdW5jdGlvbiB1bmhpZ2hsaWdodChlbGVtZW50KSB7CiAgICAgCSQoZWxlbWVudCkucGFyZW50KCkucmVtb3ZlQ2xhc3MoImludmFsaWQiKS5hZGRDbGFzcygidmFsaWQiKTsKICAgICAJfSwKICAgICAJZXJyb3JDbGFzczogJ2Zvcm0tbGFiZWwgZm9ybS1sYWJlbC0tZXJyb3InLAogICAgICAgIHJ1bGVzOiB7CiAgICAgICAgICAgIEVNQUlMOiB7CiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgICAgICAgIGVtYWlsOiB0cnVlCiAgICAgICAgICAgIH0KICAgICAgICB9LAogICAgICAgIG1lc3NhZ2VzOiB7CiAgICAgICAgICAgIEVNQUlMOiB7CiAgICAgICAgICAgICAgICByZXF1aXJlZDogIkVudGVyIHlvdXIgZW1haWwgYWRkcmVzcyIsCiAgICAgICAgICAgICAgICBlbWFpbDogIkVudGVyIGEgdmFsaWQgZW1haWwgYWRkcmVzcyIKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAJfSk7CiAgCQkJLy8gZml4IGEgZ2xpdGNoIG9uIGVtYWlsIHZhbGlkYXRpb24KICAgICAgICAkKCcuaGxiLXNpZ251cC1mb3JtIGlucHV0JykuYmluZCgnZm9jdXMgYmx1cicsIGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgIHZhciBmaWVsZCA9ICQodGhpcyk7CiAgICAgICAgICAgIHZhciBmaWVsZEdyb3VwID0gZmllbGQucGFyZW50KCk7CgogICAgICAgICAgaWYgKGZpZWxkLnZhbCgpICE9ICcnKSB7CiAgICAgICAgICAgICAgaWYgKGUudHlwZSA9PSAnYmx1cicpIHsKICAgICAgICAgICAgICAgICAgZmllbGRHcm91cC5hZGRDbGFzcygnZmx5b3V0Jyk7CiAgICAgICAgICAgICAgfQogICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICBmaWVsZEdyb3VwLnJlbW92ZUNsYXNzKCdmbHlvdXQnKTsKICAgICAgICAgIH0KICAgICAgICAgIGlmIChlLnR5cGUgPT0gJ2ZvY3VzJykgewogICAgICAgICAgICBmaWVsZEdyb3VwLmFkZENsYXNzKCdmbHlvdXQnKTsKICAgICAgICAgIH0KICAgICAgICB9KTsKICAJCQkkKCcuaGxiLWNvbnRhY3QtZm9ybSBpbnB1dCwuaGxiLWNvbnRhY3QtZm9ybSB0ZXh0YXJlYScpLmJpbmQoJ2ZvY3VzIGJsdXInLCBmdW5jdGlvbiAoZSkgewogICAgICAgICAgICB2YXIgZmllbGQgPSAkKHRoaXMpOwogICAgICAgICAgICB2YXIgZmllbGRHcm91cCA9IGZpZWxkLnBhcmVudCgpLnBhcmVudCgpOwoKICAgICAgICAgIGlmIChmaWVsZC52YWwoKSAhPSAnJykgewogICAgICAgICAgICAgIGlmIChlLnR5cGUgPT0gJ2JsdXInKSB7CiAgICAgICAgICAgICAgICAgIGZpZWxkR3JvdXAuYWRkQ2xhc3MoJ2ZseW91dCcpOwogICAgICAgICAgICAgIH0KICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZmllbGRHcm91cC5yZW1vdmVDbGFzcygnZmx5b3V0Jyk7CiAgICAgICAgICB9CiAgICAgICAgICBpZiAoZS50eXBlID09ICdmb2N1cycpIHsKICAgICAgICAgICAgZmllbGRHcm91cC5hZGRDbGFzcygnZmx5b3V0Jyk7CiAgICAgICAgICB9CiAgICAgICAgIAogICAgICAgIH0pOwogICAgICAgaWYoJCgnLmhsYi1jb250YWN0LWZvcm0gaW5wdXQnKS5oYXNDbGFzcygnd3BjZjctdmFsaWRhdGVzLWFzLXJlcXVpcmVkJykpewogICAgICAgICAgICAkKCJpbnB1dCIpLnByb3AoJ3JlcXVpcmVkJyx0cnVlKTsKICAgICAgICAgfQkgICAJCiAgCQkgCSQoJy5obGItY29udGFjdC1mb3JtIGZvcm0nKS52YWxpZGF0ZSh7CiAgICAgICAgICAgCiAgICAgICAgICAgIGhpZ2hsaWdodDogZnVuY3Rpb24gaGlnaGxpZ2h0KGVsZW1lbnQpIHsKICAgICAgICAgICAgICAgICQoZWxlbWVudCkucGFyZW50KCkucGFyZW50KCkuYWRkQ2xhc3MoImlkbS1pbnZhbGlkIikucmVtb3ZlQ2xhc3MoImlkbS12YWxpZCIpOwogICAgICAgICAgICB9LAogICAgICAgICAgICB1bmhpZ2hsaWdodDogZnVuY3Rpb24gdW5oaWdobGlnaHQoZWxlbWVudCkgewogICAgICAgICAgICAgICAgJChlbGVtZW50KS5wYXJlbnQoKS5wYXJlbnQoKS5yZW1vdmVDbGFzcygiaWRtLWludmFsaWQiKS5hZGRDbGFzcygiaWRtLXZhbGlkIik7CiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIGVycm9yQ2xhc3M6ICdmb3JtLWxhYmVsIGZvcm0tbGFiZWwtLWVycm9yJywKICAgICAgICAgICAgcnVsZXM6IHsKICAgICAgICAgICAgICAgIGZpZWxkRW1haWw6IHsKICAgICAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSwKICAgICAgICAgICAgICAgICAgICBlbWFpbDogdHJ1ZQogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAJZmllbGRDb21wYW55TmFtZTp7CiAgICAgICAgICAgICAgCQkJcmVxdWlyZWQ6IHRydWUsCiAgICAgICAgICAgIAkJfQogICAgICAgICAgICB9LAogICAgICAgICAgICBtZXNzYWdlczogewogICAgICAgICAgICAgICAgZmllbGROYW1lOiAiRW50ZXIgeW91ciBuYW1lIiwKICAgICAgICAgICAgICAgIGZpZWxkQ29tcGFueU5hbWU6ICJFbnRlciB5b3VyIGNvbXBhbnkgbmFtZSIsCiAgICAgICAgICAgICAgICBmaWVsZEVtYWlsOiB7CiAgICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ6ICJFbnRlciB5b3VyIGVtYWlsIGFkZHJlc3MiLAogICAgICAgICAgICAgICAgICAgIGVtYWlsOiAiRW50ZXIgYSB2YWxpZCBlbWFpbCBhZGRyZXNzIgogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgIGZpZWxkQ2l0eTogIkVudGVyIGEgQ2l0eS90b3duIG5hbWUiLAogICAgICAgICAgICAgICAgZmllbGRDb3VudHJ5OiAiRW50ZXIgeW91ciBjb3VudHJ5IiwKICAgICAgICAgICAgICAgIGZpZWxkU3ViamVjdDogIlNlbGVjdCBhIHN1YmplY3QiLAogICAgICAgICAgICAgICAgZmllbGRNZXNzYWdlOiAiRW50ZXIgeW91ciBtZXNzYWdlIiwKICAgICAgICAgICAgICAgIGZpZWxkQ2FwdGNoYTogIkVudGVyIHNlY3VyaXR5IGNvZGUiCiAgICAgICAgICAgIH0KCiAgICAgICAgfSk7CiAgICAgICAKfSk7
data:text/javascript;base64,CndwLmkxOG4uc2V0TG9jYWxlRGF0YSggeyAndGV4dCBkaXJlY3Rpb25cdTAwMDRsdHInOiBbICdsdHInIF0gfSApOwo=
data:text/javascript;base64,DQoJCQkJKGZ1bmN0aW9uKGMsbCxhLHIsaSx0LHkpew0KCQkJCQljW2FdPWNbYV18fGZ1bmN0aW9uKCl7KGNbYV0ucT1jW2FdLnF8fFtdKS5wdXNoKGFyZ3VtZW50cyl9O3Q9bC5jcmVhdGVFbGVtZW50KHIpO3QuYXN5bmM9MTsNCgkJCQkJdC5zcmM9Imh0dHBzOi8vd3d3LmNsYXJpdHkubXMvdGFnLyIraSsiP3JlZj13b3JkcHJlc3MiO3k9bC5nZXRFbGVtZW50c0J5VGFnTmFtZShyKVswXTt5LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHQseSk7DQoJCQkJfSkod2luZG93LCBkb2N1bWVudCwgImNsYXJpdHkiLCAic2NyaXB0IiwgImQ1a2J6cnFvZ2IiKTsNCgkJ
data:text/javascript;base64,DQoJCQl3aW5kb3cuUlNfTU9EVUxFUyA9IHdpbmRvdy5SU19NT0RVTEVTIHx8IHt9Ow0KCQkJd2luZG93LlJTX01PRFVMRVMubW9kdWxlcyA9IHdpbmRvdy5SU19NT0RVTEVTLm1vZHVsZXMgfHwge307DQoJCQl3aW5kb3cuUlNfTU9EVUxFUy53YWl0aW5nID0gd2luZG93LlJTX01PRFVMRVMud2FpdGluZyB8fCBbXTsNCgkJCXdpbmRvdy5SU19NT0RVTEVTLmRlZmVyZWQgPSB0cnVlOw0KCQkJd2luZG93LlJTX01PRFVMRVMubW9kdWxlV2FpdGluZyA9IHdpbmRvdy5SU19NT0RVTEVTLm1vZHVsZVdhaXRpbmcgfHwge307DQoJCQl3aW5kb3cuUlNfTU9EVUxFUy50eXBlID0gJ2NvbXBpbGVkJzsNCgkJ
data:text/javascript;base64,DQoJCQlkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xhc3NOYW1lID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsYXNzTmFtZS5yZXBsYWNlKCAnbm8tanMnLCAnanMnICk7DQoJCQ==
data:text/javascript;base64,DQoNCiAgICAgICAgICAgICAgICB2YXIgam9ic2VhcmNoX3Nsb2NfdHlwZSA9ICcxJywNCiAgICAgICAgICAgICAgICAgICAgam9ic2VhcmNoX2lzX2FkbWluID0gJycsDQogICAgICAgICAgICAgICAgICAgIHRvdGxfY291bnRyaWVzX2RldGFpbCwgdG90bF9wcmVzZWxlY3RlZF9zdGF0ZXNfc2F2ZWQsDQogICAgICAgICAgICAgICAgICAgIGpvYnNlYXJjaF9pc19wb3N0X3BhZ2UgPSAnaW5kZXgucGhwJzsNCg0KICAgICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgIHZhciBpbmNfY291bnRyaWVzID0gIiIsIGluY19jb3VudHJpZXNfY29kZSA9ICIiLA0KICAgICAgICAgICAgICAgICAgICBleGVjX2NvdW50cmllcyA9ICIiLCBjb250cnlfcHJlc2VsX2NvbnRyeSwgYWpheF9mbGFnID0gZmFsc2UsDQogICAgICAgICAgICAgICAgICAgIGNvbnRyeV9wcmVzZWxjdCA9ICdub25lJywNCiAgICAgICAgICAgICAgICAgICAgY29udHJ5X3ByZXNlbF9jb250cnlfY29kZSA9ICdBRic7DQoNCiAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICogU2NyYXBwZXIgRXZlbnRzDQogICAgICAgICAgICAgICAgKiAqLw0KICAgICAgICAgICAgICAgIHZhciBhcGlfc2NyYXBwZXI4Njk3MzQ1ID0gew0KICAgICAgICAgICAgICAgICAgICBnZXRDb3VudHJ5Q29kZTogZnVuY3Rpb24gKGpvYnNlYXJjaF9zbG9jX2NvdW50cnkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudHJ5X2NvZGVfZnJvbV9jb3VudHJ5X25hbWUgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKHRvdGxfY291bnRyaWVzX2RldGFpbCwgZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuY291bnRyeV9uYW1lID09IGpvYnNlYXJjaF9zbG9jX2NvdW50cnkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeV9jb2RlX2Zyb21fY291bnRyeV9uYW1lID0gZWxlbWVudC5jb3VudHJ5X2NvZGU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY291bnRyeV9jb2RlX2Zyb21fY291bnRyeV9uYW1lOw0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICByZWFkQ2l0eU9ubHlGaWxlczogZnVuY3Rpb24gKGNvdW50cnlfZGV0YWlsLCBzdGF0ZV9uYW1lLCBzZWxlY3Rvcikgew0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX2lzX2FkbWluID09ICcnIHx8IGFqYXhfZmxhZyA9PSB0cnVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjam9ic2VhcmNoLWdkYXBpbG9jcy1jaXR5Y29uODY5NzM0NScpLmVtcHR5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjam9ic2VhcmNoLWdkYXBpbG9jcy1jaXR5Y29uODY5NzM0NScpLmFwcGVuZCgnPHNlbGVjdCBwbGFjZWhvbGRlcj0iU2VsZWN0IENpdHkiIG5hbWU9ImxvY2F0aW9uX2xvY2F0aW9uMyIgY2xhc3M9ImNpdGllcyIgaWQ9ImNpdHlJZDg2OTczNDUiPjxvcHRpb24gdmFsdWU9IjAiPlNlbGVjdCBDaXR5PC9vcHRpb24+PC9zZWxlY3Q+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBqUXVlcnkoZG9jdW1lbnQpLmZpbmQoIiNjaXR5SWQ4Njk3MzQ1Iik7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0galF1ZXJ5LmFqYXgoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogam9ic2VhcmNoX3BsdWdpbl92YXJzLmFqYXhfdXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY291bnRyeV9kZXRhaWw6IGNvdW50cnlfZGV0YWlsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZTogc3RhdGVfbmFtZSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnam9ic2VhcmNoX2xvY2F0aW9uX2xvYWRfY2l0aWVzX2RhdGEnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICdqc29uJywNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdF9jaXRpZXMgPSByZXNwb25zZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX2lzX2FkbWluID09ICcnIHx8IGFqYXhfZmxhZyA9PSB0cnVlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzZWxlY3Rvci5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5zZWxlY3RpemUoKVswXS5zZWxlY3RpemUuZGVzdHJveSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmh0bWwoJycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChqb2JzZWFyY2hfaXNfYWRtaW4gPT0gMSAmJiBhamF4X2ZsYWcgPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKCc8b3B0aW9uIHZhbHVlPSIiPlNlbGVjdCBDaXR5PC9vcHRpb24+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX29wdGlvbl9zZWxlY3QgPSAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9yZXN1bHRfY2l0aWVzLnJlc3VsdC5sZW5ndGggIT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2goX3Jlc3VsdF9jaXRpZXMucmVzdWx0LCBmdW5jdGlvbiAoaW5kZXgsIGVsZW1lbnQpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqUXVlcnkudHJpbShlbGVtZW50LmNpdHlfbmFtZSkgIT0gIkVudGVyIEFueSBDaXR5Iikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX3Nsb2NfY2l0eSAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX29wdGlvbl9zZWxlY3QgPSBqb2JzZWFyY2hfc2xvY19jaXR5ID09IGVsZW1lbnQuY2l0eV9uYW1lID8gJ3NlbGVjdGVkJyA6ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfb3B0aW9uX3NlbGVjdCAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKGpRdWVyeSgiPG9wdGlvbj48L29wdGlvbj4iKS5hdHRyKCJ2YWx1ZSIsIGVsZW1lbnQuY2l0eV9uYW1lKS5hdHRyKCJzZWxlY3RlZCIsICJzZWxlY3RlZCIpLnRleHQoZWxlbWVudC5jaXR5X25hbWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikuYXR0cigidmFsdWUiLCBlbGVtZW50LmNpdHlfbmFtZSkudGV4dChlbGVtZW50LmNpdHlfbmFtZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5odG1sKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikuYXR0cigidmFsdWUiLCAiIikudGV4dCgnTm8gY2l0aWVzIGV4aXRzLicpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIDUwKTsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfaXNfYWRtaW4gPT0gJycgfHwgYWpheF9mbGFnID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9yZXN1bHRfY2l0aWVzLnJlc3VsdC5sZW5ndGggIT0gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3Iuc2VsZWN0aXplKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4T3B0aW9uczogMzAwMDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRGaWVsZDogW3sNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkOiAndGV4dCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb246ICdhc2MnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgMTAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNjaXR5SWQ4Njk3MzQ1JykudHJpZ2dlcignY2hhbmdlJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHJlYWRTdGF0ZUZpbGU6IGZ1bmN0aW9uIChjb3VudHJ5X2NvZGUsIHNlbGVjdG9yKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0LCBfcmVzdWx0X3N0YXRlczsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfaXNfYWRtaW4gPT0gJycgfHwgYWpheF9mbGFnID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNqb2JzZWFyY2gtZ2RhcGlsb2NzLXN0YXRlY29uODY5NzM0NScpLmVtcHR5KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjam9ic2VhcmNoLWdkYXBpbG9jcy1zdGF0ZWNvbjg2OTczNDUnKS5hcHBlbmQoJzxzZWxlY3QgcGxhY2Vob2xkZXI9IlNlbGVjdCBTdGF0ZSIgIGNsYXNzPSJzdGF0ZXMgbG9jYXRpb24yLXN0YXRlcyIgaWQ9InN0YXRlSWQ4Njk3MzQ1IiBuYW1lPSJsb2NhdGlvbl9sb2NhdGlvbjIiPjxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IFN0YXRlPC9vcHRpb24+PC9zZWxlY3Q+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IgPSBqUXVlcnkoZG9jdW1lbnQpLmZpbmQoIiNzdGF0ZUlkODY5NzM0NSwgLmxvY2F0aW9uMi1zdGF0ZXMiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmh0bWwoJycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCA9IGpRdWVyeS5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGpvYnNlYXJjaF9wbHVnaW5fdmFycy5hamF4X3VybCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50cnlfY29kZTogY291bnRyeV9jb2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdqb2JzZWFyY2hfbG9jYXRpb25fbG9hZF9zdGF0ZXNfZGF0YScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZG9uZShmdW5jdGlvbiAocmVzcG9uc2UpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfaXNfYWRtaW4gPT0gJycgfHwgYWpheF9mbGFnID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9zZWxlY3Rvci5zZWxlY3RpemUoKVswXS5zZWxlY3RpemUuZGVzdHJveSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVzdWx0X3N0YXRlcyA9IHJlc3BvbnNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5odG1sKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoam9ic2VhcmNoX2lzX2FkbWluID09IDEgJiYgYWpheF9mbGFnID09IGZhbHNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmFwcGVuZCgnPG9wdGlvbiB2YWx1ZT0iIj5TZWxlY3QgU3RhdGU8L29wdGlvbj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy99DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfb3B0aW9uX3NlbGVjdCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChfcmVzdWx0X3N0YXRlcy5yZXN1bHQsIGZ1bmN0aW9uIChpbmRleCwgZWxlbWVudCkgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoalF1ZXJ5LnRyaW0oZWxlbWVudC5zdGF0ZV9uYW1lKSAhPSAiRW50ZXIgQW55IFN0YXRlIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfc2xvY19zdGF0ZSAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfb3B0aW9uX3NlbGVjdCA9IGpvYnNlYXJjaF9zbG9jX3N0YXRlID09IGVsZW1lbnQuc3RhdGVfbmFtZSA/ICdzZWxlY3RlZCcgOiAnJzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoX29wdGlvbl9zZWxlY3QgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKGpRdWVyeSgiPG9wdGlvbj48L29wdGlvbj4iKS5hdHRyKCJ2YWx1ZSIsIGVsZW1lbnQuc3RhdGVfbmFtZSkuYXR0cigic2VsZWN0ZWQiLCAic2VsZWN0ZWQiKS50ZXh0KGVsZW1lbnQuc3RhdGVfbmFtZSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZWxlY3Rvci5hcHBlbmQoalF1ZXJ5KCc8b3B0aW9uPicsIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHZhbHVlOiBlbGVtZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdGV4dDogZWxlbWVudCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gICAgIHNlbGVjdGVkOiBfb3B0aW9uX3NlbGVjdCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gfSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikuYXR0cigidmFsdWUiLCBlbGVtZW50LnN0YXRlX25hbWUpLnRleHQoZWxlbWVudC5zdGF0ZV9uYW1lKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNlbGVjdG9yLmFwcGVuZChqUXVlcnkoJzxvcHRpb24+Jywgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICAgdmFsdWU6IGVsZW1lbnQsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICAgICB0ZXh0OiBlbGVtZW50LA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB9KSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA1MCk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSWYgY2l0eSBpcyBzYXZlZCB0aGVuIHRoaXMgY29kZSB3aWxsIGV4ZWN1dGUuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfc2xvY19jaXR5ICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5pbmZvKCJ0cmlnZ2VyZWQgc2Vjb25kIik7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNzdGF0ZUlkODY5NzM0NScpLnRyaWdnZXIoJ2NoYW5nZScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDAwKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW5pdGlhbGl6ZSBTZWxlY3RpemUNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9pc19hZG1pbiA9PSAnJyB8fCBhamF4X2ZsYWcgPT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLnNlbGVjdGl6ZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICBzdHJpcHNsYXNoZXM6IGZ1bmN0aW9uIChzdHIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gdW5kZWZpbmVkKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5yZXBsYWNlKC9cXC9nLCAnJyk7DQogICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgIHJlYWRDb3VudHJ5RmlsZTogZnVuY3Rpb24gKHNlbGVjdG9yLCBjb3VudHJ5KSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3Jlc3VsdF9jb3VudHJpZXMsIHJlcXVlc3Q7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSBqUXVlcnkuYWpheCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqb2JzZWFyY2hfcGx1Z2luX3ZhcnMuYWpheF91cmwsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdqb2JzZWFyY2hfbG9jYXRpb25fbG9hZF9jb3VudHJpZXNfZGF0YScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iDQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuZG9uZShmdW5jdGlvbiAocmVzcG9uc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfcmVzdWx0X2NvdW50cmllcyA9IHJlc3BvbnNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmh0bWwoJycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfaXNfYWRtaW4gPT0gMSAmJiBhamF4X2ZsYWcgPT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5hcHBlbmQoJzxvcHRpb24gdmFsdWU9IiI+U2VsZWN0IENvdW50cnk8L29wdGlvbj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgJG9wdCA9IGpRdWVyeSgnPG9wdGlvbj4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJG9wdC52YWwoJycpLnRleHQoJ1NlbGVjdCBDb3VudHJ5Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRvcHQuYXBwZW5kVG8oc2VsZWN0b3IpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQWxwaGFiZXRpYyBjb3VudHJpZXMNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9yZXN1bHRfY291bnRyaWVzLnNvcnQoZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFwaV9zY3JhcHBlcjg2OTczNDUuY29tcGFyZVN0cmluZ3MoYS5uYW1lLCBiLm5hbWUpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ29kZSB3aWxsIGV4ZWN1dGUgaWYgSW5jbHVkZSBvbmx5IGNvdW50cmllcyBvcHRpb24gd2lsbCBiZSBzZWxlY3RlZC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICovDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBDb2RlIHdpbGwgZXhlY3V0ZSBpZiBFeGNsdWRlIG9ubHkgY291bnRyaWVzIG9wdGlvbiB3aWxsIGJlIHNlbGVjdGVkLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKi8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIENvZGUgd2lsbCBleGVjdXRlIGlmIFJhbmRvbSBjb3VudHJpZXMgb3B0aW9uIHdpbGwgYmUgc2VsZWN0ZWQuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogSW5jbHVkZSBvbmx5IGNvdW50cmllcw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKi8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5jX2NvdW50cmllcyAhPSAiIiAmJiBqb2JzZWFyY2hfaXNfbG9jX2VkaXRvciAhPSAnam9ic2VhcmNoLWxvY2F0aW9uLXNldHQtZWRpdG9yJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2luY19mbGFnID0gZmFsc2U7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKF9yZXN1bHRfY291bnRyaWVzLCBmdW5jdGlvbiAoaSwgZWxlbWVudCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPCBpbmNfY291bnRyaWVzLmxlbmd0aCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfc2xvY19jb3VudHJ5ID09IGluY19jb3VudHJpZXNbaV0pIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5hcHBlbmQoalF1ZXJ5KCI8b3B0aW9uPjwvb3B0aW9uPiIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiZGF0YS1pbmRleCIsIGkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiY29kZSIsIGluY19jb3VudHJpZXNfY29kZVtpXSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJzZWxlY3RlZCIsICJzZWxlY3RlZCIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigidmFsdWUiLCBpbmNfY291bnRyaWVzW2ldKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoaW5jX2NvdW50cmllc1tpXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfaW5jX2ZsYWcgPSB0cnVlOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb250cnlfcHJlc2VsY3QgPT0gJ2J5X2NvbnRyeScgJiYgY29udHJ5X3ByZXNlbF9jb250cnlfY29kZSA9PSBpbmNfY291bnRyaWVzX2NvZGVbaV0gJiYgYWpheF9mbGFnID09IGZhbHNlICYmIF9pbmNfZmxhZyA9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5hcHBlbmQoalF1ZXJ5KCI8b3B0aW9uPjwvb3B0aW9uPiIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiZGF0YS1pbmRleCIsIGkpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiY29kZSIsIGluY19jb3VudHJpZXNfY29kZVtpXSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJzZWxlY3RlZCIsICJzZWxlY3RlZCIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigidmFsdWUiLCBpbmNfY291bnRyaWVzW2ldKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoaW5jX2NvdW50cmllc1tpXSkpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKGpRdWVyeSgiPG9wdGlvbj48L29wdGlvbj4iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoImRhdGEtaW5kZXgiLCBpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoImNvZGUiLCBpbmNfY291bnRyaWVzX2NvZGVbaV0pDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigidmFsdWUiLCBpbmNfY291bnRyaWVzW2ldKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoaW5jX2NvdW50cmllc1tpXSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV4ZWNfY291bnRyaWVzICE9ICcnICYmIGpvYnNlYXJjaF9pc19sb2NfZWRpdG9yICE9ICdqb2JzZWFyY2gtbG9jYXRpb24tc2V0dC1lZGl0b3InKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogY29kZSB3aWxsIGV4ZWN1dGUgaWYgIkV4Y2x1ZGUgY291bnRyaWVzIHNlbGVjdGVkIiBmaWx0ZXIgb3B0aW9uIHdpbGwgYmUgc2VsZWN0ZWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX2V4ZWNfZmxhZyA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChfcmVzdWx0X2NvdW50cmllcywgZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleGVjX2NvdW50cmllcy5pbmRleE9mKGVsZW1lbnQubmFtZSkgPT0gLTEpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjb2RlIHdpbGwgZXhlY3V0ZSBpZiBDb3VudHJ5IE5hbWUgaXMgZnJvbSBzYXZlIGluIG1ldGF2YWx1ZQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICovDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9zbG9jX2NvdW50cnkgPT0gZWxlbWVudC5uYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5hcHBlbmQoalF1ZXJ5KCI8b3B0aW9uPjwvb3B0aW9uPiIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoImRhdGEtaW5kZXgiLCBpbmRleCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiY29kZSIsIGVsZW1lbnQuY29kZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigic2VsZWN0ZWQiLCAic2VsZWN0ZWQiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJ2YWx1ZSIsIGVsZW1lbnQubmFtZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dChlbGVtZW50Lm5hbWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9leGVjX2ZsYWcgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbnRyeV9wcmVzZWxjdCA9PSAnYnlfY29udHJ5JyAmJiBjb250cnlfcHJlc2VsX2NvbnRyeV9jb2RlID09IGVsZW1lbnQuY29kZSAmJiBhamF4X2ZsYWcgPT0gZmFsc2UgJiYgX2V4ZWNfZmxhZyA9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKGpRdWVyeSgiPG9wdGlvbj48L29wdGlvbj4iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJkYXRhLWluZGV4IiwgaW5kZXgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoImNvZGUiLCBlbGVtZW50LmNvZGUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoInNlbGVjdGVkIiwgInNlbGVjdGVkIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigidmFsdWUiLCBlbGVtZW50Lm5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoZWxlbWVudC5uYW1lKSk7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiZGF0YS1pbmRleCIsIGluZGV4KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJjb2RlIiwgZWxlbWVudC5jb2RlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJ2YWx1ZSIsIGVsZW1lbnQubmFtZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dChlbGVtZW50Lm5hbWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcHJlc19zZWxlY3RlZF9zYXZlZF9jb250cnkgPSBhcGlfc2NyYXBwZXI4Njk3MzQ1LmdldENvdW50cnlDb2RlKGpvYnNlYXJjaF9zbG9jX2NvdW50cnkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChfcmVzdWx0X2NvdW50cmllcywgZnVuY3Rpb24gKGluZGV4LCBlbGVtZW50KSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudCAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBjb2RlIHdpbGwgZXhlY3V0ZSBpZiBQcmVzZWxlY3QgQ291bnRyeSBvcHRpb24gd2lsbCBiZSBzZWxlY3RlZA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKi8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX3Nsb2NfdHlwZSAhPSAyICYmIGpvYnNlYXJjaF9zbG9jX3R5cGUgIT0gMykgew0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfb3B0aW9uX3NlbGVjdCA9ICcnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX3Nsb2NfY291bnRyeSAhPSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwaV9zY3JhcHBlcjg2OTczNDUuc3RyaXBzbGFzaGVzKGpvYnNlYXJjaF9zbG9jX2NvdW50cnkpID09IGFwaV9zY3JhcHBlcjg2OTczNDUuc3RyaXBzbGFzaGVzKGVsZW1lbnQubmFtZSkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5hcHBlbmQoalF1ZXJ5KCI8b3B0aW9uPjwvb3B0aW9uPiIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJkYXRhLWluZGV4IiwgaW5kZXgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJjb2RlIiwgZWxlbWVudC5jb2RlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigic2VsZWN0ZWQiLCAic2VsZWN0ZWQiKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigidmFsdWUiLCBlbGVtZW50Lm5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KGFwaV9zY3JhcHBlcjg2OTczNDUuc3RyaXBzbGFzaGVzKGVsZW1lbnQubmFtZSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3IuYXBwZW5kKGpRdWVyeSgiPG9wdGlvbj48L29wdGlvbj4iKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiZGF0YS1pbmRleCIsIGluZGV4KQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiY29kZSIsIGVsZW1lbnQuY29kZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoInZhbHVlIiwgZWxlbWVudC5uYW1lKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dChhcGlfc2NyYXBwZXI4Njk3MzQ1LnN0cmlwc2xhc2hlcyhlbGVtZW50Lm5hbWUpKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Rvci5hcHBlbmQoalF1ZXJ5KCI8b3B0aW9uPjwvb3B0aW9uPiIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmF0dHIoImRhdGEtaW5kZXgiLCBpbmRleCkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiY29kZSIsIGVsZW1lbnQuY29kZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigidmFsdWUiLCBlbGVtZW50Lm5hbWUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnRleHQoYXBpX3NjcmFwcGVyODY5NzM0NS5zdHJpcHNsYXNoZXMoZWxlbWVudC5uYW1lKSkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGpvYnNlYXJjaF9pc19sb2NfZWRpdG9yID09ICdqb2JzZWFyY2gtbG9jYXRpb24tc2V0dC1lZGl0b3InKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdG9yLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJkYXRhLWluZGV4IiwgaW5kZXgpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuYXR0cigiY29kZSIsIGVsZW1lbnQuY29kZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJ2YWx1ZSIsIGVsZW1lbnQubmFtZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KGFwaV9zY3JhcHBlcjg2OTczNDUuc3RyaXBzbGFzaGVzKGVsZW1lbnQubmFtZSkpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQoNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEluaXRpYWxpemUgU2VsZWN0aXplDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAqLw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9pc19hZG1pbiA9PSAnJyB8fCBhamF4X2ZsYWcgPT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX3Nsb2NfdHlwZSA9PSAwIHx8IGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0b3Iuc2VsZWN0aXplKHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjogJ1NlbGVjdCBDb3VudHJ5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICBwcmVkaWN0QnlJUDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBqUXVlcnkuYWpheCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0cHM6Ly9pcGluZm8uaW8vanNvbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIg0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmRvbmUoZnVuY3Rpb24gKHJlc3VsdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3NjcmFwcGVyODY5NzM0NS5yZWFkQ291bnRyeUZpbGUoalF1ZXJ5KCcjY291bnRyeUlkODY5NzM0NScpLCByZXN1bHQuY291bnRyeSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBTZWNvbmQgUmVxdWVzdCB3aWxsIGJlIHNlbnQgaWYgZmlyc3QgcmVxdWVzdCB3aWxsIGZhaWwuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKi8NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3NjcmFwcGVyODY5NzM0NS5hcGlTZWNvbmRSZXF1ZXN0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3NjcmFwcGVyODY5NzM0NS5hcGlTZWNvbmRSZXF1ZXN0KCk7DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgc2h1ZmZsZUFycmF5OiBmdW5jdGlvbiAoYSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGosIHgsIGk7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSBhLmxlbmd0aCAtIDE7IGkgPiAwOyBpLS0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKGkgKyAxKSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgeCA9IGFbaV07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtpXSA9IGFbal07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtqXSA9IHg7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYTsNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgYXBpU2Vjb25kUmVxdWVzdDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBqUXVlcnkuYWpheCh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAiaHR0cDovL2lwLWFwaS5jb20vanNvbiIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIg0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmRvbmUoZnVuY3Rpb24gKHJlc3VsdCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zY3JhcHBlcjg2OTczNDUucmVhZENvdW50cnlGaWxlKGpRdWVyeSgnI2NvdW50cnlJZDg2OTczNDUnKSwgcmVzdWx0LmNvdW50cnlDb2RlKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc2NyYXBwZXI4Njk3MzQ1LnJlYWRTdGF0ZUZpbGUocmVzdWx0LmNvdW50cnlDb2RlLCBqUXVlcnkoJyNzdGF0ZUlkODY5NzM0NScpKQ0KICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmZhaWwoZnVuY3Rpb24gKGpxWEhSLCB0ZXh0U3RhdHVzKSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICBjb21wYXJlU3RyaW5nczogZnVuY3Rpb24gKGEsIGIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhLnRvTG93ZXJDYXNlKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBiID0gYi50b0xvd2VyQ2FzZSgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChhIDwgYikgPyAtMSA6IChhID4gYikgPyAxIDogMDsNCiAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgZ2V0QnVsa0NpdGllc0J5U3RhdGVzOiBmdW5jdGlvbiAocHJlc2VsZWN0ZWRfc3RhdGVzLCBqb2JzZWFyY2hfc2xvY19jaXR5KSB7DQoNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLmNpdGllcycpLmh0bWwoJycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmFqYXgoew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogam9ic2VhcmNoX3BsdWdpbl92YXJzLmFqYXhfdXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogIlBPU1QiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VsZWN0ZWRfc3RhdGVzOiBKU09OLnBhcnNlKHByZXNlbGVjdGVkX3N0YXRlcyksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbjogJ2pvYnNlYXJjaF9nZXRfc2VsZWN0ZWRfc3RhdGVzX2NpdGllcycsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogJ2pzb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChyZXNwb25zZS5hbGxfY2l0aWVzLCBmdW5jdGlvbiAoaW5kZXgsIGNpdHlfbmFtZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9zbG9jX2NpdHkgPT0gY2l0eV9uYW1lKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuY2l0aWVzJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJ2YWx1ZSIsIGNpdHlfbmFtZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJzZWxlY3RlZCIsICJzZWxlY3RlZCIpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAudGV4dChjaXR5X25hbWUpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuY2l0aWVzJykNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmFwcGVuZChqUXVlcnkoIjxvcHRpb24+PC9vcHRpb24+IikNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5hdHRyKCJ2YWx1ZSIsIGNpdHlfbmFtZSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC50ZXh0KGNpdHlfbmFtZSkpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfaXNfYWRtaW4gPT0gJycgfHwgYWpheF9mbGFnID09IHRydWUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLmNpdGllcycpLnNlbGVjdGl6ZSh7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRGaWVsZDogJ3RleHQnDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCAxMDApDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH07DQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAqIFNjcmFwcGVyIEV2ZW50cyBlbmQNCiAgICAgICAgICAgICAgICAqICovDQoNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KHdpbmRvdykub24oJ2xvYWQnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIC8vDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGxfY291bnRyaWVzX2RldGFpbCA9IEpTT04ucGFyc2UoJ1t7ImNvdW50cnlfY29kZSI6IkFGIiwiY291bnRyeV9uYW1lIjoiQWZnaGFuaXN0YW4ifSx7ImNvdW50cnlfY29kZSI6IkFMIiwiY291bnRyeV9uYW1lIjoiQWxiYW5pYSJ9LHsiY291bnRyeV9jb2RlIjoiRFoiLCJjb3VudHJ5X25hbWUiOiJBbGdlcmlhIn0seyJjb3VudHJ5X2NvZGUiOiJBRCIsImNvdW50cnlfbmFtZSI6IkFuZG9ycmEifSx7ImNvdW50cnlfY29kZSI6IkFPIiwiY291bnRyeV9uYW1lIjoiQW5nb2xhIn0seyJjb3VudHJ5X2NvZGUiOiJBSSIsImNvdW50cnlfbmFtZSI6IkFuZ3VpbGxhIn0seyJjb3VudHJ5X2NvZGUiOiJBRyIsImNvdW50cnlfbmFtZSI6IkFudGlndWEgYW5kIEJhcmJ1ZGEifSx7ImNvdW50cnlfY29kZSI6IkFSIiwiY291bnRyeV9uYW1lIjoiQXJnZW50aW5hIn0seyJjb3VudHJ5X2NvZGUiOiJBTSIsImNvdW50cnlfbmFtZSI6IkFybWVuaWEifSx7ImNvdW50cnlfY29kZSI6IkFVIiwiY291bnRyeV9uYW1lIjoiQXVzdHJhbGlhIn0seyJjb3VudHJ5X2NvZGUiOiJBVCIsImNvdW50cnlfbmFtZSI6IkF1c3RyaWEifSx7ImNvdW50cnlfY29kZSI6IkFaIiwiY291bnRyeV9uYW1lIjoiQXplcmJhaWphbiJ9LHsiY291bnRyeV9jb2RlIjoiQlMiLCJjb3VudHJ5X25hbWUiOiJCYWhhbWFzIn0seyJjb3VudHJ5X2NvZGUiOiJCSCIsImNvdW50cnlfbmFtZSI6IkJhaHJhaW4ifSx7ImNvdW50cnlfY29kZSI6IkJEIiwiY291bnRyeV9uYW1lIjoiQmFuZ2xhZGVzaCJ9LHsiY291bnRyeV9jb2RlIjoiQkIiLCJjb3VudHJ5X25hbWUiOiJCYXJiYWRvcyJ9LHsiY291bnRyeV9jb2RlIjoiQlkiLCJjb3VudHJ5X25hbWUiOiJCZWxhcnVzIn0seyJjb3VudHJ5X2NvZGUiOiJCRSIsImNvdW50cnlfbmFtZSI6IkJlbGdpdW0ifSx7ImNvdW50cnlfY29kZSI6IkJaIiwiY291bnRyeV9uYW1lIjoiQmVsaXplIn0seyJjb3VudHJ5X2NvZGUiOiJCSiIsImNvdW50cnlfbmFtZSI6IkJlbmluIn0seyJjb3VudHJ5X2NvZGUiOiJCTSIsImNvdW50cnlfbmFtZSI6IkJlcm11ZGEifSx7ImNvdW50cnlfY29kZSI6IkJUIiwiY291bnRyeV9uYW1lIjoiQmh1dGFuIn0seyJjb3VudHJ5X2NvZGUiOiJCTyIsImNvdW50cnlfbmFtZSI6IkJvbGl2aWEifSx7ImNvdW50cnlfY29kZSI6IkJBIiwiY291bnRyeV9uYW1lIjoiQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYSJ9LHsiY291bnRyeV9jb2RlIjoiQlciLCJjb3VudHJ5X25hbWUiOiJCb3Rzd2FuYSJ9LHsiY291bnRyeV9jb2RlIjoiQlIiLCJjb3VudHJ5X25hbWUiOiJCcmF6aWwifSx7ImNvdW50cnlfY29kZSI6IkJOIiwiY291bnRyeV9uYW1lIjoiQnJ1bmVpIERhcnVzc2FsYW0ifSx7ImNvdW50cnlfY29kZSI6IkJHIiwiY291bnRyeV9uYW1lIjoiQnVsZ2FyaWEifSx7ImNvdW50cnlfY29kZSI6IkJGIiwiY291bnRyeV9uYW1lIjoiQnVya2luYSBGYXNvIn0seyJjb3VudHJ5X2NvZGUiOiJCSSIsImNvdW50cnlfbmFtZSI6IkJ1cnVuZGkifSx7ImNvdW50cnlfY29kZSI6IktIIiwiY291bnRyeV9uYW1lIjoiQ2FtYm9kaWEifSx7ImNvdW50cnlfY29kZSI6IkNNIiwiY291bnRyeV9uYW1lIjoiQ2FtZXJvb24ifSx7ImNvdW50cnlfY29kZSI6IkNBIiwiY291bnRyeV9uYW1lIjoiQ2FuYWRhIn0seyJjb3VudHJ5X2NvZGUiOiJDViIsImNvdW50cnlfbmFtZSI6IkNhcGUgVmVyZGUifSx7ImNvdW50cnlfY29kZSI6IktZIiwiY291bnRyeV9uYW1lIjoiQ2F5bWFuIElzbGFuZHMifSx7ImNvdW50cnlfY29kZSI6IkNGIiwiY291bnRyeV9uYW1lIjoiQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljIn0seyJjb3VudHJ5X2NvZGUiOiJURCIsImNvdW50cnlfbmFtZSI6IkNoYWQifSx7ImNvdW50cnlfY29kZSI6IkNMIiwiY291bnRyeV9uYW1lIjoiQ2hpbGUifSx7ImNvdW50cnlfY29kZSI6IkNOIiwiY291bnRyeV9uYW1lIjoiQ2hpbmEifSx7ImNvdW50cnlfY29kZSI6IkNPIiwiY291bnRyeV9uYW1lIjoiQ29sb21iaWEifSx7ImNvdW50cnlfY29kZSI6IktNIiwiY291bnRyeV9uYW1lIjoiQ29tb3JvcyJ9LHsiY291bnRyeV9jb2RlIjoiQ0ciLCJjb3VudHJ5X25hbWUiOiJDb25nbyJ9LHsiY291bnRyeV9jb2RlIjoiQ1IiLCJjb3VudHJ5X25hbWUiOiJDb3N0YSBSaWNhIn0seyJjb3VudHJ5X2NvZGUiOiJIUiIsImNvdW50cnlfbmFtZSI6IkNyb2F0aWEgKEhydmF0c2thKSJ9LHsiY291bnRyeV9jb2RlIjoiQ1UiLCJjb3VudHJ5X25hbWUiOiJDdWJhIn0seyJjb3VudHJ5X2NvZGUiOiJDWSIsImNvdW50cnlfbmFtZSI6IkN5cHJ1cyJ9LHsiY291bnRyeV9jb2RlIjoiQ1oiLCJjb3VudHJ5X25hbWUiOiJDemVjaCBSZXB1YmxpYyJ9LHsiY291bnRyeV9jb2RlIjoiREsiLCJjb3VudHJ5X25hbWUiOiJEZW5tYXJrIn0seyJjb3VudHJ5X2NvZGUiOiJESiIsImNvdW50cnlfbmFtZSI6IkRqaWJvdXRpIn0seyJjb3VudHJ5X2NvZGUiOiJETSIsImNvdW50cnlfbmFtZSI6IkRvbWluaWNhIn0seyJjb3VudHJ5X2NvZGUiOiJETyIsImNvdW50cnlfbmFtZSI6IkRvbWluaWNhbiBSZXB1YmxpYyJ9LHsiY291bnRyeV9jb2RlIjoiRUMiLCJjb3VudHJ5X25hbWUiOiJFY3VhZG9yIn0seyJjb3VudHJ5X2NvZGUiOiJFRyIsImNvdW50cnlfbmFtZSI6IkVneXB0In0seyJjb3VudHJ5X2NvZGUiOiJTViIsImNvdW50cnlfbmFtZSI6IkVsIFNhbHZhZG9yIn0seyJjb3VudHJ5X2NvZGUiOiJHUSIsImNvdW50cnlfbmFtZSI6IkVxdWF0b3JpYWwgR3VpbmVhIn0seyJjb3VudHJ5X2NvZGUiOiJFUiIsImNvdW50cnlfbmFtZSI6IkVyaXRyZWEifSx7ImNvdW50cnlfY29kZSI6IkVFIiwiY291bnRyeV9uYW1lIjoiRXN0b25pYSJ9LHsiY291bnRyeV9jb2RlIjoiRVQiLCJjb3VudHJ5X25hbWUiOiJFdGhpb3BpYSJ9LHsiY291bnRyeV9jb2RlIjoiRk8iLCJjb3VudHJ5X25hbWUiOiJGYXJvZSBJc2xhbmRzIn0seyJjb3VudHJ5X2NvZGUiOiJGSiIsImNvdW50cnlfbmFtZSI6IkZpamkifSx7ImNvdW50cnlfY29kZSI6IkZJIiwiY291bnRyeV9uYW1lIjoiRmlubGFuZCJ9LHsiY291bnRyeV9jb2RlIjoiRlIiLCJjb3VudHJ5X25hbWUiOiJGcmFuY2UifSx7ImNvdW50cnlfY29kZSI6IkdGIiwiY291bnRyeV9uYW1lIjoiRnJlbmNoIEd1aWFuYSJ9LHsiY291bnRyeV9jb2RlIjoiUEYiLCJjb3VudHJ5X25hbWUiOiJGcmVuY2ggUG9seW5lc2lhIn0seyJjb3VudHJ5X2NvZGUiOiJURiIsImNvdW50cnlfbmFtZSI6IkZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllcyJ9LHsiY291bnRyeV9jb2RlIjoiR0EiLCJjb3VudHJ5X25hbWUiOiJHYWJvbiJ9LHsiY291bnRyeV9jb2RlIjoiR00iLCJjb3VudHJ5X25hbWUiOiJHYW1iaWEifSx7ImNvdW50cnlfY29kZSI6IkdFIiwiY291bnRyeV9uYW1lIjoiR2VvcmdpYSJ9LHsiY291bnRyeV9jb2RlIjoiREUiLCJjb3VudHJ5X25hbWUiOiJHZXJtYW55In0seyJjb3VudHJ5X2NvZGUiOiJHSCIsImNvdW50cnlfbmFtZSI6IkdoYW5hIn0seyJjb3VudHJ5X2NvZGUiOiJHUiIsImNvdW50cnlfbmFtZSI6IkdyZWVjZSJ9LHsiY291bnRyeV9jb2RlIjoiR0wiLCJjb3VudHJ5X25hbWUiOiJHcmVlbmxhbmQifSx7ImNvdW50cnlfY29kZSI6IkdEIiwiY291bnRyeV9uYW1lIjoiR3JlbmFkYSJ9LHsiY291bnRyeV9jb2RlIjoiR1AiLCJjb3VudHJ5X25hbWUiOiJHdWFkZWxvdXBlIn0seyJjb3VudHJ5X2NvZGUiOiJHVSIsImNvdW50cnlfbmFtZSI6Ikd1YW0ifSx7ImNvdW50cnlfY29kZSI6IkdUIiwiY291bnRyeV9uYW1lIjoiR3VhdGVtYWxhIn0seyJjb3VudHJ5X2NvZGUiOiJHTiIsImNvdW50cnlfbmFtZSI6Ikd1aW5lYSJ9LHsiY291bnRyeV9jb2RlIjoiR1ciLCJjb3VudHJ5X25hbWUiOiJHdWluZWEtQmlzc2F1In0seyJjb3VudHJ5X2NvZGUiOiJHWSIsImNvdW50cnlfbmFtZSI6Ikd1eWFuYSJ9LHsiY291bnRyeV9jb2RlIjoiSFQiLCJjb3VudHJ5X25hbWUiOiJIYWl0aSJ9LHsiY291bnRyeV9jb2RlIjoiSE4iLCJjb3VudHJ5X25hbWUiOiJIb25kdXJhcyJ9LHsiY291bnRyeV9jb2RlIjoiSEsiLCJjb3VudHJ5X25hbWUiOiJIb25nIEtvbmcifSx7ImNvdW50cnlfY29kZSI6IkhVIiwiY291bnRyeV9uYW1lIjoiSHVuZ2FyeSJ9LHsiY291bnRyeV9jb2RlIjoiSVMiLCJjb3VudHJ5X25hbWUiOiJJY2VsYW5kIn0seyJjb3VudHJ5X2NvZGUiOiJJTiIsImNvdW50cnlfbmFtZSI6IkluZGlhIn0seyJjb3VudHJ5X2NvZGUiOiJJTSIsImNvdW50cnlfbmFtZSI6IklzbGUgb2YgTWFuIn0seyJjb3VudHJ5X2NvZGUiOiJJRCIsImNvdW50cnlfbmFtZSI6IkluZG9uZXNpYSJ9LHsiY291bnRyeV9jb2RlIjoiSVIiLCJjb3VudHJ5X25hbWUiOiJJcmFuIn0seyJjb3VudHJ5X2NvZGUiOiJJUSIsImNvdW50cnlfbmFtZSI6IklyYXEifSx7ImNvdW50cnlfY29kZSI6IklFIiwiY291bnRyeV9uYW1lIjoiSXJlbGFuZCJ9LHsiY291bnRyeV9jb2RlIjoiSUwiLCJjb3VudHJ5X25hbWUiOiJJc3JhZWwifSx7ImNvdW50cnlfY29kZSI6IklUIiwiY291bnRyeV9uYW1lIjoiSXRhbHkifSx7ImNvdW50cnlfY29kZSI6IkNJIiwiY291bnRyeV9uYW1lIjoiSXZvcnkgQ29hc3QifSx7ImNvdW50cnlfY29kZSI6IkpFIiwiY291bnRyeV9uYW1lIjoiSmVyc2V5In0seyJjb3VudHJ5X2NvZGUiOiJKTSIsImNvdW50cnlfbmFtZSI6IkphbWFpY2EifSx7ImNvdW50cnlfY29kZSI6IkpQIiwiY291bnRyeV9uYW1lIjoiSmFwYW4ifSx7ImNvdW50cnlfY29kZSI6IkpPIiwiY291bnRyeV9uYW1lIjoiSm9yZGFuIn0seyJjb3VudHJ5X2NvZGUiOiJLWiIsImNvdW50cnlfbmFtZSI6IkthemFraHN0YW4ifSx7ImNvdW50cnlfY29kZSI6IktFIiwiY291bnRyeV9uYW1lIjoiS2VueWEifSx7ImNvdW50cnlfY29kZSI6IktJIiwiY291bnRyeV9uYW1lIjoiS2lyaWJhdGkifSx7ImNvdW50cnlfY29kZSI6IktQIiwiY291bnRyeV9uYW1lIjoiTm9ydGggS29yZWEifSx7ImNvdW50cnlfY29kZSI6IktSIiwiY291bnRyeV9uYW1lIjoiU291dGggS29yZWEifSx7ImNvdW50cnlfY29kZSI6IlhLIiwiY291bnRyeV9uYW1lIjoiS29zb3ZvIn0seyJjb3VudHJ5X2NvZGUiOiJLVyIsImNvdW50cnlfbmFtZSI6Ikt1d2FpdCJ9LHsiY291bnRyeV9jb2RlIjoiS0ciLCJjb3VudHJ5X25hbWUiOiJLeXJneXpzdGFuIn0seyJjb3VudHJ5X2NvZGUiOiJMQSIsImNvdW50cnlfbmFtZSI6IkxhbyJ9LHsiY291bnRyeV9jb2RlIjoiTFYiLCJjb3VudHJ5X25hbWUiOiJMYXR2aWEifSx7ImNvdW50cnlfY29kZSI6IkxCIiwiY291bnRyeV9uYW1lIjoiTGViYW5vbiJ9LHsiY291bnRyeV9jb2RlIjoiTFMiLCJjb3VudHJ5X25hbWUiOiJMZXNvdGhvIn0seyJjb3VudHJ5X2NvZGUiOiJMUiIsImNvdW50cnlfbmFtZSI6IkxpYmVyaWEifSx7ImNvdW50cnlfY29kZSI6IkxZIiwiY291bnRyeV9uYW1lIjoiTGlieWFuIEFyYWIgSmFtYWhpcml5YSJ9LHsiY291bnRyeV9jb2RlIjoiTEkiLCJjb3VudHJ5X25hbWUiOiJMaWVjaHRlbnN0ZWluIn0seyJjb3VudHJ5X2NvZGUiOiJMVCIsImNvdW50cnlfbmFtZSI6IkxpdGh1YW5pYSJ9LHsiY291bnRyeV9jb2RlIjoiTFUiLCJjb3VudHJ5X25hbWUiOiJMdXhlbWJvdXJnIn0seyJjb3VudHJ5X2NvZGUiOiJNSyIsImNvdW50cnlfbmFtZSI6Ik1hY2Vkb25pYSJ9LHsiY291bnRyeV9jb2RlIjoiTUciLCJjb3VudHJ5X25hbWUiOiJNYWRhZ2FzY2FyIn0seyJjb3VudHJ5X2NvZGUiOiJNVyIsImNvdW50cnlfbmFtZSI6Ik1hbGF3aSJ9LHsiY291bnRyeV9jb2RlIjoiTVkiLCJjb3VudHJ5X25hbWUiOiJNYWxheXNpYSJ9LHsiY291bnRyeV9jb2RlIjoiTVYiLCJjb3VudHJ5X25hbWUiOiJNYWxkaXZlcyJ9LHsiY291bnRyeV9jb2RlIjoiTUwiLCJjb3VudHJ5X25hbWUiOiJNYWxpIn0seyJjb3VudHJ5X2NvZGUiOiJNVCIsImNvdW50cnlfbmFtZSI6Ik1hbHRhIn0seyJjb3VudHJ5X2NvZGUiOiJNSCIsImNvdW50cnlfbmFtZSI6Ik1hcnNoYWxsIElzbGFuZHMifSx7ImNvdW50cnlfY29kZSI6Ik1RIiwiY291bnRyeV9uYW1lIjoiTWFydGluaXF1ZSJ9LHsiY291bnRyeV9jb2RlIjoiTVIiLCJjb3VudHJ5X25hbWUiOiJNYXVyaXRhbmlhIn0seyJjb3VudHJ5X2NvZGUiOiJNVSIsImNvdW50cnlfbmFtZSI6Ik1hdXJpdGl1cyJ9LHsiY291bnRyeV9jb2RlIjoiTVgiLCJjb3VudHJ5X25hbWUiOiJNZXhpY28ifSx7ImNvdW50cnlfY29kZSI6IkZNIiwiY291bnRyeV9uYW1lIjoiTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBvZiJ9LHsiY291bnRyeV9jb2RlIjoiTUQiLCJjb3VudHJ5X25hbWUiOiJNb2xkb3ZhIn0seyJjb3VudHJ5X2NvZGUiOiJNQyIsImNvdW50cnlfbmFtZSI6Ik1vbmFjbyJ9LHsiY291bnRyeV9jb2RlIjoiTU4iLCJjb3VudHJ5X25hbWUiOiJNb25nb2xpYSJ9LHsiY291bnRyeV9jb2RlIjoiTUUiLCJjb3VudHJ5X25hbWUiOiJNb250ZW5lZ3JvIn0seyJjb3VudHJ5X2NvZGUiOiJNUyIsImNvdW50cnlfbmFtZSI6Ik1vbnRzZXJyYXQifSx7ImNvdW50cnlfY29kZSI6Ik1BIiwiY291bnRyeV9uYW1lIjoiTW9yb2NjbyJ9LHsiY291bnRyeV9jb2RlIjoiTVoiLCJjb3VudHJ5X25hbWUiOiJNb3phbWJpcXVlIn0seyJjb3VudHJ5X2NvZGUiOiJNTSIsImNvdW50cnlfbmFtZSI6Ik15YW5tYXIifSx7ImNvdW50cnlfY29kZSI6Ik5BIiwiY291bnRyeV9uYW1lIjoiTmFtaWJpYSJ9LHsiY291bnRyeV9jb2RlIjoiTlIiLCJjb3VudHJ5X25hbWUiOiJOYXVydSJ9LHsiY291bnRyeV9jb2RlIjoiTlAiLCJjb3VudHJ5X25hbWUiOiJOZXBhbCJ9LHsiY291bnRyeV9jb2RlIjoiTkwiLCJjb3VudHJ5X25hbWUiOiJOZXRoZXJsYW5kcyJ9LHsiY291bnRyeV9jb2RlIjoiQU4iLCJjb3VudHJ5X25hbWUiOiJOZXRoZXJsYW5kcyBBbnRpbGxlcyJ9LHsiY291bnRyeV9jb2RlIjoiTkMiLCJjb3VudHJ5X25hbWUiOiJOZXcgQ2FsZWRvbmlhIn0seyJjb3VudHJ5X2NvZGUiOiJOWiIsImNvdW50cnlfbmFtZSI6Ik5ldyBaZWFsYW5kIn0seyJjb3VudHJ5X2NvZGUiOiJOSSIsImNvdW50cnlfbmFtZSI6Ik5pY2FyYWd1YSJ9LHsiY291bnRyeV9jb2RlIjoiTkUiLCJjb3VudHJ5X25hbWUiOiJOaWdlciJ9LHsiY291bnRyeV9jb2RlIjoiTkciLCJjb3VudHJ5X25hbWUiOiJOaWdlcmlhIn0seyJjb3VudHJ5X2NvZGUiOiJNUCIsImNvdW50cnlfbmFtZSI6Ik5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcyJ9LHsiY291bnRyeV9jb2RlIjoiTk8iLCJjb3VudHJ5X25hbWUiOiJOb3J3YXkifSx7ImNvdW50cnlfY29kZSI6Ik9NIiwiY291bnRyeV9uYW1lIjoiT21hbiJ9LHsiY291bnRyeV9jb2RlIjoiUEsiLCJjb3VudHJ5X25hbWUiOiJQYWtpc3RhbiJ9LHsiY291bnRyeV9jb2RlIjoiUFciLCJjb3VudHJ5X25hbWUiOiJQYWxhdSJ9LHsiY291bnRyeV9jb2RlIjoiUFMiLCJjb3VudHJ5X25hbWUiOiJQYWxlc3RpbmUifSx7ImNvdW50cnlfY29kZSI6IlBBIiwiY291bnRyeV9uYW1lIjoiUGFuYW1hIn0seyJjb3VudHJ5X2NvZGUiOiJQRyIsImNvdW50cnlfbmFtZSI6IlBhcHVhIE5ldyBHdWluZWEifSx7ImNvdW50cnlfY29kZSI6IlBZIiwiY291bnRyeV9uYW1lIjoiUGFyYWd1YXkifSx7ImNvdW50cnlfY29kZSI6IlBFIiwiY291bnRyeV9uYW1lIjoiUGVydSJ9LHsiY291bnRyeV9jb2RlIjoiUEgiLCJjb3VudHJ5X25hbWUiOiJQaGlsaXBwaW5lcyJ9LHsiY291bnRyeV9jb2RlIjoiUEwiLCJjb3VudHJ5X25hbWUiOiJQb2xhbmQifSx7ImNvdW50cnlfY29kZSI6IlBUIiwiY291bnRyeV9uYW1lIjoiUG9ydHVnYWwifSx7ImNvdW50cnlfY29kZSI6IlBSIiwiY291bnRyeV9uYW1lIjoiUHVlcnRvIFJpY28ifSx7ImNvdW50cnlfY29kZSI6IlFBIiwiY291bnRyeV9uYW1lIjoiUWF0YXIifSx7ImNvdW50cnlfY29kZSI6IlJFIiwiY291bnRyeV9uYW1lIjoiUmV1bmlvbiJ9LHsiY291bnRyeV9jb2RlIjoiUk8iLCJjb3VudHJ5X25hbWUiOiJSb21hbmlhIn0seyJjb3VudHJ5X2NvZGUiOiJSVSIsImNvdW50cnlfbmFtZSI6IlJ1c3NpYW4gRmVkZXJhdGlvbiJ9LHsiY291bnRyeV9jb2RlIjoiUlciLCJjb3VudHJ5X25hbWUiOiJSd2FuZGEifSx7ImNvdW50cnlfY29kZSI6IktOIiwiY291bnRyeV9uYW1lIjoiU2FpbnQgS2l0dHMgYW5kIE5ldmlzIn0seyJjb3VudHJ5X2NvZGUiOiJMQyIsImNvdW50cnlfbmFtZSI6IlNhaW50IEx1Y2lhIn0seyJjb3VudHJ5X2NvZGUiOiJWQyIsImNvdW50cnlfbmFtZSI6IlNhaW50IFZpbmNlbnQgYW5kIHRoZSBHcmVuYWRpbmVzIn0seyJjb3VudHJ5X2NvZGUiOiJXUyIsImNvdW50cnlfbmFtZSI6IlNhbW9hIn0seyJjb3VudHJ5X2NvZGUiOiJTTSIsImNvdW50cnlfbmFtZSI6IlNhbiBNYXJpbm8ifSx7ImNvdW50cnlfY29kZSI6IlNUIiwiY291bnRyeV9uYW1lIjoiU2FvIFRvbWUgYW5kIFByaW5jaXBlIn0seyJjb3VudHJ5X2NvZGUiOiJTQSIsImNvdW50cnlfbmFtZSI6IlNhdWRpIEFyYWJpYSJ9LHsiY291bnRyeV9jb2RlIjoiU04iLCJjb3VudHJ5X25hbWUiOiJTZW5lZ2FsIn0seyJjb3VudHJ5X2NvZGUiOiJSUyIsImNvdW50cnlfbmFtZSI6IlNlcmJpYSJ9LHsiY291bnRyeV9jb2RlIjoiU0MiLCJjb3VudHJ5X25hbWUiOiJTZXljaGVsbGVzIn0seyJjb3VudHJ5X2NvZGUiOiJTTCIsImNvdW50cnlfbmFtZSI6IlNpZXJyYSBMZW9uZSJ9LHsiY291bnRyeV9jb2RlIjoiU0ciLCJjb3VudHJ5X25hbWUiOiJTaW5nYXBvcmUifSx7ImNvdW50cnlfY29kZSI6IlNLIiwiY291bnRyeV9uYW1lIjoiU2xvdmFraWEifSx7ImNvdW50cnlfY29kZSI6IlNJIiwiY291bnRyeV9uYW1lIjoiU2xvdmVuaWEifSx7ImNvdW50cnlfY29kZSI6IlNCIiwiY291bnRyeV9uYW1lIjoiU29sb21vbiBJc2xhbmRzIn0seyJjb3VudHJ5X2NvZGUiOiJTTyIsImNvdW50cnlfbmFtZSI6IlNvbWFsaWEifSx7ImNvdW50cnlfY29kZSI6IlpBIiwiY291bnRyeV9uYW1lIjoiU291dGggQWZyaWNhIn0seyJjb3VudHJ5X2NvZGUiOiJFUyIsImNvdW50cnlfbmFtZSI6IlNwYWluIn0seyJjb3VudHJ5X2NvZGUiOiJMSyIsImNvdW50cnlfbmFtZSI6IlNyaSBMYW5rYSJ9LHsiY291bnRyeV9jb2RlIjoiU0giLCJjb3VudHJ5X25hbWUiOiJTdC4gSGVsZW5hIn0seyJjb3VudHJ5X2NvZGUiOiJQTSIsImNvdW50cnlfbmFtZSI6IlN0LiBQaWVycmUgYW5kIE1pcXVlbG9uIn0seyJjb3VudHJ5X2NvZGUiOiJTRCIsImNvdW50cnlfbmFtZSI6IlN1ZGFuIn0seyJjb3VudHJ5X2NvZGUiOiJTUiIsImNvdW50cnlfbmFtZSI6IlN1cmluYW1lIn0seyJjb3VudHJ5X2NvZGUiOiJTSiIsImNvdW50cnlfbmFtZSI6IlN2YWxiYXJkIGFuZCBKYW4gTWF5ZW4gSXNsYW5kcyJ9LHsiY291bnRyeV9jb2RlIjoiU1oiLCJjb3VudHJ5X25hbWUiOiJTd2F6aWxhbmQifSx7ImNvdW50cnlfY29kZSI6IlNFIiwiY291bnRyeV9uYW1lIjoiU3dlZGVuIn0seyJjb3VudHJ5X2NvZGUiOiJDSCIsImNvdW50cnlfbmFtZSI6IlN3aXR6ZXJsYW5kIn0seyJjb3VudHJ5X2NvZGUiOiJTWSIsImNvdW50cnlfbmFtZSI6IlN5cmlhbiBBcmFiIFJlcHVibGljIn0seyJjb3VudHJ5X2NvZGUiOiJUVyIsImNvdW50cnlfbmFtZSI6IlRhaXdhbiJ9LHsiY291bnRyeV9jb2RlIjoiVEoiLCJjb3VudHJ5X25hbWUiOiJUYWppa2lzdGFuIn0seyJjb3VudHJ5X2NvZGUiOiJUWiIsImNvdW50cnlfbmFtZSI6IlRhbnphbmlhIn0seyJjb3VudHJ5X2NvZGUiOiJUSCIsImNvdW50cnlfbmFtZSI6IlRoYWlsYW5kIn0seyJjb3VudHJ5X2NvZGUiOiJURyIsImNvdW50cnlfbmFtZSI6IlRvZ28ifSx7ImNvdW50cnlfY29kZSI6IlRLIiwiY291bnRyeV9uYW1lIjoiVG9rZWxhdSJ9LHsiY291bnRyeV9jb2RlIjoiVE8iLCJjb3VudHJ5X25hbWUiOiJUb25nYSJ9LHsiY291bnRyeV9jb2RlIjoiVFQiLCJjb3VudHJ5X25hbWUiOiJUcmluaWRhZCBhbmQgVG9iYWdvIn0seyJjb3VudHJ5X2NvZGUiOiJUTiIsImNvdW50cnlfbmFtZSI6IlR1bmlzaWEifSx7ImNvdW50cnlfY29kZSI6IlRSIiwiY291bnRyeV9uYW1lIjoiVHVya2V5In0seyJjb3VudHJ5X2NvZGUiOiJUTSIsImNvdW50cnlfbmFtZSI6IlR1cmttZW5pc3RhbiJ9LHsiY291bnRyeV9jb2RlIjoiVFYiLCJjb3VudHJ5X25hbWUiOiJUdXZhbHUifSx7ImNvdW50cnlfY29kZSI6IlVHIiwiY291bnRyeV9uYW1lIjoiVWdhbmRhIn0seyJjb3VudHJ5X2NvZGUiOiJVQSIsImNvdW50cnlfbmFtZSI6IlVrcmFpbmUifSx7ImNvdW50cnlfY29kZSI6IkFFIiwiY291bnRyeV9uYW1lIjoiVW5pdGVkIEFyYWIgRW1pcmF0ZXMifSx7ImNvdW50cnlfY29kZSI6IkdCIiwiY291bnRyeV9uYW1lIjoiVW5pdGVkIEtpbmdkb20ifSx7ImNvdW50cnlfY29kZSI6IlVTIiwiY291bnRyeV9uYW1lIjoiVW5pdGVkIFN0YXRlcyJ9LHsiY291bnRyeV9jb2RlIjoiVU0iLCJjb3VudHJ5X25hbWUiOiJVbml0ZWQgU3RhdGVzIG1pbm9yIG91dGx5aW5nIGlzbGFuZHMifSx7ImNvdW50cnlfY29kZSI6IlVZIiwiY291bnRyeV9uYW1lIjoiVXJ1Z3VheSJ9LHsiY291bnRyeV9jb2RlIjoiVVoiLCJjb3VudHJ5X25hbWUiOiJVemJla2lzdGFuIn0seyJjb3VudHJ5X2NvZGUiOiJWVSIsImNvdW50cnlfbmFtZSI6IlZhbnVhdHUifSx7ImNvdW50cnlfY29kZSI6IlZFIiwiY291bnRyeV9uYW1lIjoiVmVuZXp1ZWxhIn0seyJjb3VudHJ5X2NvZGUiOiJWTiIsImNvdW50cnlfbmFtZSI6IlZpZXRuYW0ifSx7ImNvdW50cnlfY29kZSI6IlZJIiwiY291bnRyeV9uYW1lIjoiVmlyZ2luIElzbGFuZHMgKFUuUy4pIn0seyJjb3VudHJ5X2NvZGUiOiJXRiIsImNvdW50cnlfbmFtZSI6IldhbGxpcyBhbmQgRnV0dW5hIElzbGFuZHMifSx7ImNvdW50cnlfY29kZSI6IllFIiwiY291bnRyeV9uYW1lIjoiWWVtZW4ifSx7ImNvdW50cnlfY29kZSI6IlpNIiwiY291bnRyeV9uYW1lIjoiWmFtYmlhIn0seyJjb3VudHJ5X2NvZGUiOiJaVyIsImNvdW50cnlfbmFtZSI6IlppbWJhYndlIn1dJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGxfcHJlc2VsZWN0ZWRfc3RhdGVzX3NhdmVkID0gJyIiJzsNCg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgdmFyIF9zaW5nbGVfY291bnRyeV9jb2RlID0gJyc7DQoNCiAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gJzInIHx8IGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gJzMnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBfc2luZ2xlX2NvdW50cnlfY29kZSA9IGpRdWVyeSgiI2NvdW50cnlJZDg2OTczNDUiKS52YWwoKTsNCiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqb2JzZWFyY2hfc2xvY19jb3VudHJ5ICE9IDAgJiYgY29udHJ5X3ByZXNlbGN0ICE9ICdieV9jb250cnknKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NpbmdsZV9jb3VudHJ5X2NvZGUgPSBhcGlfc2NyYXBwZXI4Njk3MzQ1LmdldENvdW50cnlDb2RlKGpvYnNlYXJjaF9zbG9jX2NvdW50cnkpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQoNCiAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgICAgKiBJZiBsb2NhdGlvbiB0eXBlIGlzIHNpbmdsZSBjb3VudHJ5IChjaXRpZXMpDQogICAgICAgICAgICAgICAgICAgICogKi8NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX3Nsb2NfdHlwZSA9PSA0KSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhcGlfc2NyYXBwZXI4Njk3MzQ1LmdldEJ1bGtDaXRpZXNCeVN0YXRlcyh0b3RsX3ByZXNlbGVjdGVkX3N0YXRlc19zYXZlZCwgam9ic2VhcmNoX3Nsb2NfY2l0eSk7DQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc2NyYXBwZXI4Njk3MzQ1LnJlYWRDb3VudHJ5RmlsZShqUXVlcnkoJyNjb3VudHJ5SWQ4Njk3MzQ1JyksICcnKTsNCg0KICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9zbG9jX3N0YXRlICE9ICIiKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBhcGlfc2NyYXBwZXI4Njk3MzQ1LnJlYWRTdGF0ZUZpbGUoX3NpbmdsZV9jb3VudHJ5X2NvZGUsIGpRdWVyeSgiI3N0YXRlSWQ4Njk3MzQ1IikpDQogICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICBpZiAoKGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gMiB8fCBqb2JzZWFyY2hfc2xvY190eXBlID09IDMpICYmIGpvYnNlYXJjaF9pc19sb2NfZWRpdG9yICE9ICdqb2JzZWFyY2gtbG9jYXRpb24tc2V0dC1lZGl0b3InKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoX3NpbmdsZV9jb3VudHJ5X2NvZGUgIT0gIiIpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGlfc2NyYXBwZXI4Njk3MzQ1LnJlYWRTdGF0ZUZpbGUoX3NpbmdsZV9jb3VudHJ5X2NvZGUsIGpRdWVyeSgiI3N0YXRlSWQ4Njk3MzQ1IikpDQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoam9ic2VhcmNoX3Nsb2NfY2l0eSAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmluZm8oImRvbmUgZmlyc3QiKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjc3RhdGVJZDg2OTczNDUnKS50cmlnZ2VyKCdjaGFuZ2UnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCA0MDAwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAgICAgKiBQcmUgc2VsZWN0IENvdW50cnkNCiAgICAgICAgICAgICAgICAgICAgKiAqLw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAvKg0KICAgICAgICAgICAgICAgICAqY291bnRyaWVzIGNoYW5nZSBldmVudA0KICAgICAgICAgICAgICAgICAqKi8NCg0KICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkub24oJ2NoYW5nZScsICcjY291bnRyeUlkODY5NzM0NScsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzID0galF1ZXJ5KHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICBpZiAoX3RoaXMudmFsKCkgIT0gMCAmJiBfdGhpcy52YWwoKSAhPSB1bmRlZmluZWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfY291bnRyeV9jb2RlID0gJyc7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5jX2NvdW50cmllcyAhPSAiIikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jb3VudHJ5X2NvZGUgPSBhcGlfc2NyYXBwZXI4Njk3MzQ1LmdldENvdW50cnlDb2RlKF90aGlzLnZhbCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NvdW50cnlfY29kZSA9IGpvYnNlYXJjaF9pc19hZG1pbiA9PSAxICYmIF90aGlzLmZpbmQoJ29wdGlvbjpzZWxlY3RlZCcpLmF0dHIoImNvZGUiKSAhPSB1bmRlZmluZWQgPyBfdGhpcy5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS5hdHRyKCJjb2RlIikgOiBhcGlfc2NyYXBwZXI4Njk3MzQ1LmdldENvdW50cnlDb2RlKF90aGlzLnZhbCgpKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgIGFwaV9zY3JhcHBlcjg2OTczNDUucmVhZFN0YXRlRmlsZShfY291bnRyeV9jb2RlLCBqUXVlcnkoIiNzdGF0ZUlkODY5NzM0NSIpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgLyoNCiAgICAgICAgICAgICAgICAqIHN0YXRlIGNoYW5nZSBldmVudA0KICAgICAgICAgICAgICAgICogKi8NCg0KICAgICAgICAgICAgICAgIGpRdWVyeShkb2N1bWVudCkub24oJ2NoYW5nZScsICcjc3RhdGVJZDg2OTczNDUnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBfdGhpcyA9IGpRdWVyeSh0aGlzKSwgX3NpbmdsZV9jb3VudHJ5X2RldGFpbDsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gMSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgX3NpbmdsZV9jb3VudHJ5X2RldGFpbCA9IGpRdWVyeSgiI2NvdW50cnlJZDg2OTczNDUiKS5maW5kKCdvcHRpb246c2VsZWN0ZWQnKS52YWwoKTsNCg0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gJzInIHx8IGpvYnNlYXJjaF9zbG9jX3R5cGUgPT0gJzMnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBfc2luZ2xlX2NvdW50cnlfZGV0YWlsID0galF1ZXJ5KCIjY291bnRyeUlkODY5NzM0NSIpLnZhbCgpOw0KICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGpvYnNlYXJjaF9zbG9jX2NvdW50cnkgIT0gMCAmJiBjb250cnlfcHJlc2VsY3QgIT0gJ2J5X2NvbnRyeScpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2luZ2xlX2NvdW50cnlfZGV0YWlsID0gYXBpX3NjcmFwcGVyODY5NzM0NS5nZXRDb3VudHJ5Q29kZShqb2JzZWFyY2hfc2xvY19jb3VudHJ5KTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgIGlmIChfdGhpcy52YWwoKSAhPSAwICYmIF90aGlzLnZhbCgpICE9IHVuZGVmaW5lZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgYXBpX3NjcmFwcGVyODY5NzM0NS5yZWFkQ2l0eU9ubHlGaWxlcyhfc2luZ2xlX2NvdW50cnlfZGV0YWlsLCBfdGhpcy52YWwoKSwgalF1ZXJ5KCcjY2l0eUlkODY5NzM0NScpKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAg
data:text/javascript;base64,DQoNCiAgICAgIGpRdWVyeShkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oJCl7DQogICAgICAgICAgLy8gU2hvdyBoaWRlIHBvcG92ZXINCiAgICAgICAgICAkKCIucG9kY2FzdC10b29sdGlwLWRyb3Bkb3duIikuY2xpY2soZnVuY3Rpb24oZXZ0KXsNCiAgICAgICAgICAgIGV2dC5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTsNCg0KICAgICAgICAgICAgaWYgKCQodGhpcykuZmluZCgiLnBvZGNhc3QtdG9vbHRpcC1tZW51IikuY3NzKCdkaXNwbGF5JykgIT0gJ25vbmUnKSB7DQogICAgICAgICAgICAgICQodGhpcykuZmluZCgiLnBvZGNhc3QtdG9vbHRpcC1tZW51Iikuc2xpZGVVcCgiZmFzdCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoIi5wb2RjYXN0LXRvb2x0aXAtbWVudSIpLnNsaWRlRG93bigiZmFzdCIpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgIH0pOw0KDQogICAgICAgICAgJCgiLnZpZXdfZGVzYyIpLmNsaWNrKGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLngtYXVkaW8nKS5maW5kKCIucG9kY2FzdF9kZXNjIikuc2xpZGVEb3duKCJmYXN0Iik7DQogICAgICAgICAgfSk7DQoNCiAgICAgICAgICAkKCIuaGlkZV9kZXNjIikuY2xpY2soZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcueC1hdWRpbycpLmZpbmQoIi5wb2RjYXN0X2Rlc2MiKS5zbGlkZVVwKCJmYXN0Iik7DQogICAgICAgICAgfSk7DQogICAgICAgICAgJCgiLnBvZGNhc3Rfc2hhcmVfaWNvbiIpLmNsaWNrKA0KICAgICAgICAgICAgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgIC8vdmFyIGF1ZGlvaWQgPSAkKHRoaXMpLnBhcmVudHMoJy54LWF1ZGlvJykuYXR0cignaWQnKTsNCg0KICAgICAgICAgICAgICAkKCIucG9kY2FzdF9zaGFyZV9wb3B1cCIpLmZhZGVJbignc2xvdycsZnVuY3Rpb24oKXsNCiAgICAgICAgICAgICAgICAvLyQodGhpcykuZmluZCgnI3NoYXJlcl91cmwnKS52YWwoYXVkaW9pZCk7DQogICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICk7DQoNCiAgICAgICAgICAkKCIucG9kY2FzdF90cmFuc2NyaXB0X2J1dHRvbiIpLmNsaWNrKA0KICAgICAgICAgICAgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgIHZhciBjdXJyZW50ZWxlbWVudCA9ICQodGhpcyk7DQogICAgICAgICAgICAgICQoIi5wb2RjYXN0X3RyYW5zY3JpcHRfcG9wdXAiKS5mYWRlSW4oJ3Nsb3cnLGZ1bmN0aW9uKCl7DQogICAgICAgICAgICAgICAgdmFyIHBvcF9jb250ZW50ID0gY3VycmVudGVsZW1lbnQucGFyZW50cygnLngtYXVkaW8nKS5maW5kKCcuY29udGVudF9wJykuaHRtbCgpOw0KICAgICAgICAgICAgICAgIHZhciBpZG1feF9wb2RjYXN0X3RpdGxlID0gY3VycmVudGVsZW1lbnQucGFyZW50cygnLngtYXVkaW8nKS5maW5kKCcuaWRtX3hfcG9kY2FzdF90aXRsZScpLmh0bWwoKTsNCiAgICAgICAgICAgICAgICB2YXIgaWRtX3hfcG9kY2FzdF9kYXRlID0gY3VycmVudGVsZW1lbnQucGFyZW50cygnLngtYXVkaW8nKS5maW5kKCcuYWhfZGF0ZScpLmh0bWwoKTsNCiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5wb2RjYXN0X3RpdGxlJykuaHRtbChpZG1feF9wb2RjYXN0X3RpdGxlKTsNCiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5wb2RjYXN0X2RhdGUnKS5odG1sKGlkbV94X3BvZGNhc3RfZGF0ZSk7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcucG9kY2FzdF90cmFuc2NyaXB0X2NvbnRlbnQnKS5odG1sKHBvcF9jb250ZW50KTsNCiAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB9DQogICAgICAgICAgKTsNCg0KICAgICAgICAgICQoIi5wb2RjYXN0X3N1YnNjcmliZV9idXR0b24iKS5jbGljaygNCiAgICAgICAgICAgIGZ1bmN0aW9uKCkgew0KICAgICAgICAgICAgICB2YXIgY3VycmVudGVsZW1lbnQgPSAkKHRoaXMpOw0KICAgICAgICAgICAgICAkKCIucG9kY2FzdF9zdWJzY3JpYmVfcG9wdXAiKS5mYWRlSW4oJ3Nsb3cnLCBmdW5jdGlvbigpew0KICAgICAgICAgICAgICAgIHZhciBzcG90aWZ5X3VybCA9IGN1cnJlbnRlbGVtZW50LmRhdGEoJ3Nwb3RpZnknKTsNCiAgICAgICAgICAgICAgICB2YXIgYXBwbGVfdXJsID0gY3VycmVudGVsZW1lbnQuZGF0YSgnYXBwbGUnKTsNCiAgICAgICAgICAgICAgICB2YXIgYXBwbGVfdXJsID0gY3VycmVudGVsZW1lbnQuZGF0YSgnYXBwbGUnKTsNCiAgICAgICAgICAgICAgICB2YXIgX3N1Yl9wb3B1cF9oZWFkaW5nID0gY3VycmVudGVsZW1lbnQucGFyZW50cygnLngtYXVkaW8nKS5maW5kKCcuc3Vic2NyaWJlX3BvcHVwX3RpdGxlJykuaHRtbCgpOw0KICAgICAgICAgICAgICAgIHZhciBfc3ViX3BvcHVwX3N1YnRpdGxlID0gY3VycmVudGVsZW1lbnQucGFyZW50cygnLngtYXVkaW8nKS5maW5kKCcuc3Vic2NyaWJlX3BvcHVwX3N1YnRpdGxlJykuaHRtbCgpOw0KICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnN1YnNjcmliZV9wb3B1cF90aXRsZScpLmh0bWwoX3N1Yl9wb3B1cF9oZWFkaW5nKTsNCiAgICAgICAgICAgICAgICAkKHRoaXMpLmZpbmQoJy5zdWJzY3JpYmVfcG9wdXBfc3VidGl0bGUnKS5odG1sKF9zdWJfcG9wdXBfc3VidGl0bGUpOw0KICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnLnNwb3RpZnknKS5hdHRyKCdocmVmJyxzcG90aWZ5X3VybCk7DQogICAgICAgICAgICAgICAgJCh0aGlzKS5maW5kKCcuYXBwbGUnKS5hdHRyKCdocmVmJyxhcHBsZV91cmwpOw0KDQoNCg0KICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICApOw0KDQogICAgICAgICAgICAkKCIucG9kY2FzdF9zdWJzY3JpYmVfcG9wdXAgaSwgLnBvZGNhc3Rfc2hhcmVfcG9wdXAgaSwgLnBvZGNhc3RfdHJhbnNjcmlwdF9wb3B1cCBpIikuY2xpY2soDQogICAgICAgICAgICAgICAgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICQoIi5wb2RjYXN0X3N1YnNjcmliZV9wb3B1cCIpLmZhZGVPdXQoJ2Zhc3QnKTsNCiAgICAgICAgICAgICAgICAgICAgJCgiLnBvZGNhc3Rfc2hhcmVfcG9wdXAiKS5mYWRlT3V0KCdmYXN0Jyk7DQogICAgICAgICAgICAgICAgICAgICQoIi5wb2RjYXN0X3RyYW5zY3JpcHRfcG9wdXAiKS5mYWRlT3V0KCdmYXN0Jyk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgKTsNCg0KICAgICAgICAgICAgJCgnYm9keScpLm9uKCdjbGljaycsICcubWVqcy1wbGF5JywgZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICQodGhpcykuc2libGluZ3MoKS5zaG93KCk7DQogICAgICAgICAgICAgICQodGhpcykucGFyZW50cygnLngtYXVkaW8nKS5jc3MoeyJiYWNrZ3JvdW5kLWNvbG9yIjogIiNFRUY0RjYifSk7DQogICAgICAgICAgICB9KTsNCg0KDQogICAgICB9KTsNCg0K
data:text/javascript;base64,DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNjdkZpbGVzRHJvcHpvbmU4Njk3MzQ1JykuZmluZCgnaW5wdXRbbmFtZT1jYW5kaWRhdGVfY3ZfZmlsZV0nKS5jc3Moew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOiAnMTAwJScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OiAnMTAwJScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wOiAnMCcsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdDogJzAnLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYWNpdHk6ICcwJywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnei1pbmRleCc6ICc5JywNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLm9uKCdjaGFuZ2UnLCAnaW5wdXQjY2FuZF9jdl9maWxlZmllbGQ4Njk3MzQ1JywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmZpbGVzICYmIHRoaXMuZmlsZXNbMF0pIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVwY3ZfZmlsZSA9IHRoaXMuZmlsZXNbMF07DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cGN2X2ZpbGVfdHlwZSA9IHVwY3ZfZmlsZS50eXBlOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjdnVwX2FsbG93ZWRfdHlwZXMgPSAnWyJhcHBsaWNhdGlvbi9tc3dvcmQiLCJhcHBsaWNhdGlvbi92bmQub3BlbnhtbGZvcm1hdHMtb2ZmaWNlZG9jdW1lbnQud29yZHByb2Nlc3NpbmdtbC5kb2N1bWVudCIsImFwcGxpY2F0aW9uL3BkZiJdJzsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3Z1cF9hbGxvd2VkX3R5cGVzLmluZGV4T2YodXBjdl9maWxlX3R5cGUpID49IDApIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aGVfc2hvd19tc2cgPSAnTm8gZmlsZSBoYXMgYmVlbiBzZWxlY3RlZCc7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNsZWN0ZWRfZmlsZV9uYW1lID0gdGhpcy5maWxlc1swXS5uYW1lOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZV9zaG93X21zZyA9ICdUaGUgZmlsZSAiJyArIHNsZWN0ZWRfZmlsZV9uYW1lICsgJyIgaGFzIGJlZW4gc2VsZWN0ZWQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2N2RmlsZXNEcm9wem9uZTg2OTczNDUnKS5jbGFzc0xpc3QucmVtb3ZlKCdmaWxlQ29udGFpbmVyRHJhZ092ZXInKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJvcHBlZEZpbGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NhbmRfY3ZfZmlsZWZpZWxkODY5NzM0NScpLmZpbGVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlTmFtZUNvbnRhaW5lcjg2OTczNDUnKS50ZXh0Q29udGVudCA9IHRoZV9zaG93X21zZzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhTmFtZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjYW5kX2N2X2ZpbGVmaWVsZDg2OTczNDUnKS52YWx1ZTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYU5hbWUgIT09ICcnKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdmaWxlTmFtZUNvbnRhaW5lcjg2OTczNDUnKS50ZXh0Q29udGVudCA9IHRoZV9zaG93X21zZzsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlcnJvcikgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KCdUaGlzIGZpbGUgdHlwZSBpcyBub3QgYWxsb3dlZC4nKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBqb2JzZWFyY2hfb25kcm9wX2V2bnQ4Njk3MzQ1KGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGhlX3Nob3dfbXNnID0gJ05vIGZpbGUgaGFzIGJlZW4gc2VsZWN0ZWQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldC5maWxlcy5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzbGVjdGVkX2ZpbGVfbmFtZSA9IGUudGFyZ2V0LmZpbGVzWzBdLm5hbWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZV9zaG93X21zZyA9ICdUaGUgZmlsZSAiJyArIHNsZWN0ZWRfZmlsZV9uYW1lICsgJyIgaGFzIGJlZW4gc2VsZWN0ZWQnOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3ZGaWxlc0Ryb3B6b25lODY5NzM0NScpLmNsYXNzTGlzdC5yZW1vdmUoJ2ZpbGVDb250YWluZXJEcmFnT3ZlcicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BwZWRGaWxlcyA9IGUuZGF0YVRyYW5zZmVyLmZpbGVzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZmlsZU5hbWVDb250YWluZXI4Njk3MzQ1JykudGV4dENvbnRlbnQgPSB0aGVfc2hvd19tc2c7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0NCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3Rpb24gam9ic2VhcmNoX2RyYWdvdmVyX2V2bnQ4Njk3MzQ1KGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3ZGaWxlc0Ryb3B6b25lODY5NzM0NScpLmNsYXNzTGlzdC5hZGQoJ2ZpbGVDb250YWluZXJEcmFnT3ZlcicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbiBqb2JzZWFyY2hfbGVhdmVkcm9wX2V2bnQ4Njk3MzQ1KGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY3ZGaWxlc0Ryb3B6b25lODY5NzM0NScpLmNsYXNzTGlzdC5yZW1vdmUoJ2ZpbGVDb250YWluZXJEcmFnT3ZlcicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=
data:text/javascript;base64,DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3B0X3VzZXJfY2F0ZWdvcnlfODY5NzM0NScpLmZpbmQoJ29wdGlvbicpLmZpcnN0KCkudmFsKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjcHRfdXNlcl9jYXRlZ29yeV84Njk3MzQ1JykuYXR0cigncGxhY2Vob2xkZXInLCAnUGxlYXNlIFNlbGVjdCBTZWN0b3InKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA=
data:text/javascript;base64,DQogICAgICAgICAgICAgICAgaWYgKGpRdWVyeSgnLnF1ZXN0cy1pdGVtLXRpdGxlJykubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLm9uKCdjbGljaycsICcucXVlc3RzLWl0ZW0tdGl0bGUnLCBmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3RoaXMgPSBqUXVlcnkodGhpcyk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbWFpbl9wYXJlbnRfY29uID0gX3RoaXMucGFyZW50cygnLmFwcGx5am9iLXF1ZXN0c2FsbC1pdGVtcycpOw0KICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wYXJlbnRfY29uLmZpbmQoJy5hcHBseWpvYi1xdWVzdHMtaXRlbScpLnJlbW92ZUNsYXNzKCdxdWVzdC1pdGVtLWlzb3BlbicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgbWFpbl9wYXJlbnRfY29uLmZpbmQoJy5hcHBseWpvYi1xdWVzdHMtaXRlbScpLmZpbmQoJy5xdWVzdHMtaXRlbS1hbnN3ZXInKS5zbGlkZVVwKCk7DQogICAgICAgICAgICAgICAgICAgICAgICBtYWluX3BhcmVudF9jb24uZmluZCgnLmFwcGx5am9iLXF1ZXN0cy1pdGVtJykuZmluZCgnLnRpdGxlLWljb24tY29uIGknKS5hdHRyKCdjbGFzcycsICdmYSBmYS1iYXJzJyk7DQogICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0aGlzX3BhcmVudF9jb24gPSBfdGhpcy5wYXJlbnQoJy5hcHBseWpvYi1xdWVzdHMtaXRlbScpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFuc3dlcl9jb24gPSB0aGlzX3BhcmVudF9jb24uZmluZCgnLnF1ZXN0cy1pdGVtLWFuc3dlcicpOw0KDQogICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpc19wYXJlbnRfY29uLmhhc0NsYXNzKCdxdWVzdC1pdGVtLWlzb3BlbicpKSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19wYXJlbnRfY29uLnJlbW92ZUNsYXNzKCdxdWVzdC1pdGVtLWlzb3BlbicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcl9jb24uc2xpZGVVcCgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNfcGFyZW50X2Nvbi5maW5kKCcudGl0bGUtaWNvbi1jb24gaScpLmF0dHIoJ2NsYXNzJywgJ2ZhIGZhLWJhcnMnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19wYXJlbnRfY29uLmFkZENsYXNzKCdxdWVzdC1pdGVtLWlzb3BlbicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuc3dlcl9jb24uc2xpZGVEb3duKCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpc19wYXJlbnRfY29uLmZpbmQoJy50aXRsZS1pY29uLWNvbiBpJykuYXR0cignY2xhc3MnLCAnam9ic2VhcmNoLWljb24gam9ic2VhcmNoLWRvd24tYXJyb3cnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAg
data:text/javascript;base64,DQogICAgICAgICAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBhamF4X3JlcV80MjI2NDk2ID0galF1ZXJ5LmFqYXgoew0KICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly93d3cuaGxiLmdsb2JhbC93cC1hZG1pbi9hZG1pbi1hamF4LnBocCcsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5kX2lkOiAnNDIyNjQ5NicsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdXJlX2Zvcm06ICdyZWdpc3Rlci1zZWN1cml0eScsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnam9ic2VhcmNoX3VzZXJyZWdfZm9ybV9hZnRlcl9ub25jZScNCiAgICAgICAgICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImh0bWwiDQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICBhamF4X3JlcV80MjI2NDk2LmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNqb2JzZWFyY2gtYXRlcnJlZy00MjI2NDk2JykuaHRtbChyZXNwb25zZSk7DQogICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAg
data:text/javascript;base64,DQogICAgICAgICAgICAgICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICA=
data:text/javascript;base64,DQogICAgICAgICAgICAgICAgdmFyIGpvYnNlYXJjaF9zbG9jX2NvdW50cnkgPSAnJywgam9ic2VhcmNoX3Nsb2Nfc3RhdGUgPSAnJywgam9ic2VhcmNoX3Nsb2NfY2l0eSA9ICcnLA0KICAgICAgICAgICAgICAgICAgICBqb2JzZWFyY2hfc2xvY190eXBlID0gJycsIGpvYnNlYXJjaF9pc19hZG1pbiA9ICcnLCBqb2JzZWFyY2hfaXNfcG9zdF9wYWdlID0gJycsDQogICAgICAgICAgICAgICAgICAgIGpvYnNlYXJjaF9pc19sb2NfZWRpdG9yID0gJyc7DQogICAgICAgICAgICA=
data:text/javascript;base64,DQogICAgICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGpRdWVyeS5kYXRldGltZXBpY2tlciAhPT0gJ3VuZGVmaW5lZCcpIHsNCiAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmRhdGV0aW1lcGlja2VyLnNldExvY2FsZSgnZW4nKTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAg
data:text/javascript;base64,DQogICAgICAgIGZ1bmN0aW9uIGpvYnNlYWNoUGhvbmVWYWxpZEluaXQ4Njk3MzQ1KCkgew0KICAgICAgICAgICAgdmFyIGlucHV0Xzg2OTczNDUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjcHRfdXNlcl9waG9uZV84Njk3MzQ1Iik7DQogICAgICAgICAgICB2YXIgaXRpXzg2OTczNDUgPSBpbnRsVGVsSW5wdXQoaW5wdXRfODY5NzM0NSwgew0KICAgICAgICAgICAgICAgIG5hdGlvbmFsTW9kZTogZmFsc2UsDQogICAgICAgICAgICAgICAgYXV0b0hpZGVEaWFsQ29kZTogZmFsc2UsDQogICAgICAgICAgICAgICAgY3VzdG9tUGxhY2Vob2xkZXI6IGZ1bmN0aW9uKHNlbGVjdGVkQ291bnRyeVBsYWNlaG9sZGVyLCBzZWxlY3RlZENvdW50cnlEYXRhKSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxlY3RlZENvdW50cnlQbGFjZWhvbGRlcjsNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB2YXIgcmVzZXRfcGhvbmVfZmllbGRfODY5NzM0NSA9IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICBpbnB1dF84Njk3MzQ1LmNsYXNzTGlzdC5yZW1vdmUoInBob25lLWlucHV0LWVycm9yIik7DQogICAgICAgICAgICB9Ow0KICAgICAgICAgICAgLy8gb24gYmx1cjogdmFsaWRhdGUNCiAgICAgICAgICAgIGlucHV0Xzg2OTczNDUuYWRkRXZlbnRMaXN0ZW5lcignYmx1cicsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICByZXNldF9waG9uZV9maWVsZF84Njk3MzQ1KCk7DQogICAgICAgICAgICAgICAgaWYgKGlucHV0Xzg2OTczNDUudmFsdWUudHJpbSgpKSB7DQogICAgICAgICAgICAgICAgICAgIGlmIChpdGlfODY5NzM0NS5pc1ZhbGlkTnVtYmVyKCkpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeShpbnB1dF84Njk3MzQ1KS5jc3Moeydib3JkZXInOiAnMXB4IHNvbGlkICNlZmVmZWYnfSk7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpbnB1dF84Njk3MzQ1LmNsYXNzTGlzdC5hZGQoInBob25lLWlucHV0LWVycm9yIik7DQogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoaW5wdXRfODY5NzM0NSkuY3NzKHsnYm9yZGVyJzogJzFweCBzb2xpZCAjZmYwMDAwJ30pOw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQogICAgICAgICAgICB2YXIgaXRpX2luaXRfODY5NzM0NSA9IHdpbmRvdy5pbnRsVGVsSW5wdXQoaW5wdXRfODY5NzM0NSwgew0KICAgICAgICAgICAgICAgIGluaXRpYWxDb3VudHJ5OiAiYXV0byIsDQogICAgICAgICAgICAgICAgZ2VvSXBMb29rdXA6IGZ1bmN0aW9uIChjYWxsYmFja184Njk3MzQ1KSB7DQogICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkoJyNwaG9uLWZpZWxkY29uLTg2OTczNDUnKS5maW5kKCc+IC5pbnRsLXRlbC1pbnB1dCcpLmZpbmQoJy5pbnRsLXRlbC1pbnB1dCcpLmZpbmQoJy5mbGFnLWNvbnRhaW5lcicpLnJlbW92ZSgpOw0KICAgICAgICAgICAgICAgICAgICB9LCAxMDApOw0KICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZ2V0KCdodHRwczovL2lwaW5mby5pbycsIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgfSwgImpzb25wIikuYWx3YXlzKGZ1bmN0aW9uIChyZXNwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRyeUNvZGUgPSAocmVzcCAmJiByZXNwLmNvdW50cnkpID8gcmVzcC5jb3VudHJ5IDogIiI7DQogICAgICAgICAgICAgICAgICAgICAgICBpdGlfODY5NzM0NS5zZXRDb3VudHJ5KGNvdW50cnlDb2RlKTsNCiAgICAgICAgICAgICAgICAgICAgfSk7DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBwcmVmZXJyZWRDb3VudHJpZXM6IFtdLA0KICAgICAgICAgICAgICAgIHV0aWxzU2NyaXB0OiAiaHR0cHM6Ly93d3cuaGxiLmdsb2JhbC93cC1jb250ZW50L3BsdWdpbnMvd3Atam9ic2VhcmNoL2pzL3V0aWxzLmpzPzE3MDg2MTU4NDIiIC8vIGp1c3QgZm9yIGZvcm1hdHRpbmcvcGxhY2Vob2xkZXJzIGV0Yw0KICAgICAgICAgICAgfSk7DQogICAgICAgIH0NCg0KICAgICAgICBqUXVlcnkoZG9jdW1lbnQpLm9uKCdjbGljaycsICcjcHRfdXNlcl9waG9uZV84Njk3MzQ1JywgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgaWYgKGpRdWVyeSgnI3Bob24tZmllbGRjb24tODY5NzM0NScpLmhhc0NsYXNzKCdwaG9uZWZpbGQtd291dC12YWxpZCcpKSB7DQogICAgICAgICAgICAgICAgalF1ZXJ5KCcjcHRfdXNlcl9waG9uZV84Njk3MzQ1JykucmVtb3ZlQXR0cigncGxhY2Vob2xkZXInKTsNCiAgICAgICAgICAgICAgICBqb2JzZWFjaFBob25lVmFsaWRJbml0ODY5NzM0NSgpOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgalF1ZXJ5KCcjcGhvbi1maWVsZGNvbi04Njk3MzQ1JykucmVtb3ZlQ2xhc3MoJ3Bob25lZmlsZC13b3V0LXZhbGlkJyk7DQogICAgICAgIH0pOw0KICAgICAgICBqUXVlcnkoJ2JvZHknKS5vbignZm9jdXMnLCAnI3B0X3VzZXJfcGhvbmVfODY5NzM0NScsIGZ1bmN0aW9uKGUpIHsNCiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgIGlmIChqUXVlcnkoJyNwaG9uLWZpZWxkY29uLTg2OTczNDUnKS5oYXNDbGFzcygncGhvbmVmaWxkLXdvdXQtdmFsaWQnKSkgew0KICAgICAgICAgICAgICAgIGpRdWVyeSgnI3B0X3VzZXJfcGhvbmVfODY5NzM0NScpLnJlbW92ZUF0dHIoJ3BsYWNlaG9sZGVyJyk7DQogICAgICAgICAgICAgICAgam9ic2VhY2hQaG9uZVZhbGlkSW5pdDg2OTczNDUoKTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGpRdWVyeSgnI3Bob24tZmllbGRjb24tODY5NzM0NScpLnJlbW92ZUNsYXNzKCdwaG9uZWZpbGQtd291dC12YWxpZCcpOw0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICB9KTsNCiAgICA=
data:text/javascript;base64,DQogICAgalF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbiAoKSB7DQoNCiAgICAgICAgaWYgKGpRdWVyeSgnLmZhbmN5Ym94LWdhbGltZycpLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIC8vKioqIEZ1bmN0aW9uIEZhbmN5Qm94DQogICAgICAgICAgICBqUXVlcnkoIi5mYW5jeWJveC1nYWxpbWciKS5mYW5jeWJveCh7DQogICAgICAgICAgICAgICAgb3BlbkVmZmVjdDogJ2VsYXN0aWMnLA0KICAgICAgICAgICAgICAgIGNsb3NlRWZmZWN0OiAnZWxhc3RpYycsDQogICAgICAgICAgICAgICAgYmVmb3JlTG9hZDogZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgY2FwdGlvbiA9IHRoaXMuZWxlbWVudC5hdHRyKCdkYXRhLWNhcHRpb24nKTsNCiAgICAgICAgICAgICAgICAgICAgdGhpcy50cGwud3JhcCA9ICc8ZGl2IGNsYXNzPSJmYW5jeWJveC13cmFwIiB0YWJJbmRleD0iLTEiPjxkaXYgY2xhc3M9ImZhbmN5Ym94LXNraW4iPjxkaXYgY2xhc3M9ImZhbmN5Ym94LW91dGVyIj48ZGl2IGNsYXNzPSJmYW5jeWJveC1pbm5lciI+PC9kaXY+PGRpdiBjbGFzcz0iZmFuY3lib3gtdGl0bGUgZmFuY3lib3gtdGl0bGUtZmxvYXQtd3JhcCI+PHNwYW4gY2xhc3M9ImdhbC1pbWctZGVzYyBjaGlsZCI+JyArIGNhcHRpb24gKyAnPC9zcGFuPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PicNCg0KICAgICAgICAgICAgICAgIH0sDQogICAgICAgICAgICAgICAgaGVscGVyczogew0KICAgICAgICAgICAgICAgICAgICB0aXRsZTogew0KICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogJ291dHNpZGUnLA0KICAgICAgICAgICAgICAgICAgICAgICAgcG9zaXRpb246ICd0b3AnDQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChqUXVlcnkoJy5jYW5kLXByb2ZpbGUtc3RhdHVzLXRvb2x0aXAnKS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBqUXVlcnkoJy5jYW5kLXByb2ZpbGUtc3RhdHVzLXRvb2x0aXAnKS50b29sdGlwKCk7DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIGlmIChqUXVlcnkoJy5mYW5jeWJveC12aWRlbycpLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIC8vKioqIEZ1bmN0aW9uIEZhbmN5Qm94DQogICAgICAgICAgICBqUXVlcnkoJy5mYW5jeWJveC12aWRlbycpLmZhbmN5Ym94KHsNCiAgICAgICAgICAgICAgICBtYXhXaWR0aDogODAwLA0KICAgICAgICAgICAgICAgIG1heEhlaWdodDogNjAwLA0KICAgICAgICAgICAgICAgIGZpdFRvVmlldzogZmFsc2UsDQogICAgICAgICAgICAgICAgd2lkdGg6ICc3MCUnLA0KICAgICAgICAgICAgICAgIGhlaWdodDogJzcwJScsDQogICAgICAgICAgICAgICAgYXV0b1NpemU6IGZhbHNlLA0KICAgICAgICAgICAgICAgIGNsb3NlQ2xpY2s6IGZhbHNlLA0KICAgICAgICAgICAgICAgIG9wZW5FZmZlY3Q6ICdub25lJywNCiAgICAgICAgICAgICAgICBjbG9zZUVmZmVjdDogJ25vbmUnLA0KICAgICAgICAgICAgICAgIGJlZm9yZUxvYWQ6IGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGNhcHRpb24gPSB0aGlzLmVsZW1lbnQuYXR0cignZGF0YS1jYXB0aW9uJyk7DQogICAgICAgICAgICAgICAgICAgIHRoaXMudHBsLndyYXAgPSAnPGRpdiBjbGFzcz0iZmFuY3lib3gtd3JhcCIgdGFiSW5kZXg9Ii0xIj48ZGl2IGNsYXNzPSJmYW5jeWJveC1za2luIj48ZGl2IGNsYXNzPSJmYW5jeWJveC1vdXRlciI+PGRpdiBjbGFzcz0iZmFuY3lib3gtaW5uZXIiPjwvZGl2PjxkaXYgY2xhc3M9ImZhbmN5Ym94LXRpdGxlIGZhbmN5Ym94LXRpdGxlLWZsb2F0LXdyYXAiPjxzcGFuIGNsYXNzPSJnYWwtaW1nLWRlc2MgY2hpbGQiPicgKyBjYXB0aW9uICsgJzwvc3Bhbj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj4nDQoNCiAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgIGhlbHBlcnM6IHsNCiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6ICdvdXRzaWRlJywNCiAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uOiAndG9wJw0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgfQ0KDQogICAgICAgIGlmIChqUXVlcnkoJy5qb2JzZWFyY2hfcHJvZ3Jlc3NiYXIxJykubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgalF1ZXJ5KCcuam9ic2VhcmNoX3Byb2dyZXNzYmFyMScpLnByb2dyZXNzQmFyKHsNCiAgICAgICAgICAgICAgICBwZXJjZW50YWdlOiBmYWxzZSwNCiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICIjZGJkYmRiIiwNCiAgICAgICAgICAgICAgICBiYXJDb2xvcjogam9ic2VhcmNoX3BsdWdpbl92YXJzLmNhcmVlcmZ5X3RoZW1lX2NvbG9yLA0KICAgICAgICAgICAgICAgIGFuaW1hdGlvbjogdHJ1ZSwNCiAgICAgICAgICAgICAgICBoZWlnaHQ6ICI2IiwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGpRdWVyeSgnLmNhcmVlcmZ5X3Byb2dyZXNzYmFyX2NhbmRpZGF0ZV9zdHlsZTUnKS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBqUXVlcnkoJy5jYXJlZXJmeV9wcm9ncmVzc2Jhcl9jYW5kaWRhdGVfc3R5bGU1JykucHJvZ3Jlc3NCYXIoew0KICAgICAgICAgICAgICAgIHBlcmNlbnRhZ2U6IHRydWUsDQogICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAiI2RiZGJkYiIsDQogICAgICAgICAgICAgICAgYmFyQ29sb3I6IGpvYnNlYXJjaF9wbHVnaW5fdmFycy5jYXJlZXJmeV90aGVtZV9jb2xvciwNCiAgICAgICAgICAgICAgICBhbmltYXRpb246IHRydWUsDQogICAgICAgICAgICAgICAgaGVpZ2h0OiAiNiIsDQogICAgICAgICAgICB9KTsNCiAgICAgICAgfQ0KDQogICAgICAgIC8vIHNlbGVjdGl6ZQ0KICAgICAgICBpZiAoalF1ZXJ5KCcuc2VsZWN0aXplLXNlbGVjdCcpLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIGpRdWVyeSgnLnNlbGVjdGl6ZS1zZWxlY3QnKS5zZWxlY3RpemUoew0KICAgICAgICAgICAgICAgIC8vYWxsb3dFbXB0eU9wdGlvbjogdHJ1ZSwNCiAgICAgICAgICAgICAgICBwbHVnaW5zOiBbJ3JlbW92ZV9idXR0b24nXSwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgICAgIA0KICAgICAgICAvLyBmb3IgZGVwZW5kZW50IGZpZWxkcw0KICAgICAgICBpZiAoalF1ZXJ5KCcuZGVwbmRmaWVsZC1zZWxlY3RpemUnKS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICBqUXVlcnkoJy5kZXBuZGZpZWxkLXNlbGVjdGl6ZScpLnNlbGVjdGl6ZSh7DQogICAgICAgICAgICAgICAgcmVuZGVyOiB7DQogICAgICAgICAgICAgICAgICAgIG9wdGlvbjogZnVuY3Rpb24gKGRhdGEsIGVzY2FwZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICI8ZGl2IGRhdGEtZGVwZW5kPSciICsgZGF0YS5kZXBlbmQgKyAiJyBkYXRhLW9wdGlkPSciICsgZGF0YS5vcHRpZCArICInPiIgKyBkYXRhLnRleHQgKyAiPC9kaXY+Ig0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICBwbHVnaW5zOiBbJ3JlbW92ZV9idXR0b24nXSwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQoNCiAgICAgICAgaWYgKGpRdWVyeSgnLnNvcnQtcmVjb3Jkcy1wZXItcGFnZScpLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgIGpRdWVyeSgnLnNvcnQtcmVjb3Jkcy1wZXItcGFnZScpLnNlbGVjdGl6ZSh7DQogICAgICAgICAgICAgICAgYWxsb3dFbXB0eU9wdGlvbjogdHJ1ZSwNCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8NCiAgICAgICAgdmFyIGxvY19jb25fbWFpbiA9IGpRdWVyeSgnI2pvYnNlYXJjaC1maW5kYnktc2VjdG9ycycpLmZpbmQoJy5qb2JzZWFyY2gtc2VjdHMtYWxsY29uJyk7DQoNCiAgICAgICAgaWYgKGxvY19jb25fbWFpbi5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICB2YXIgbG9jX2NvbnRhaW5fbGkgPSBsb2NfY29uX21haW4uZmluZCgnPmxpLD5kaXYnKTsNCg0KICAgICAgICAgICAgaWYgKGxvY19jb250YWluX2xpLmxlbmd0aCA+IDApIHsNCiAgICAgICAgICAgICAgICB2YXIgc2VjdF92aWV3X3N0ciA9IGpRdWVyeSgnI2pvYnNlYXJjaC1maW5kYnktc2VjdG9ycycpLmRhdGEoJ3ZpZXcnKTsNCiAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25faWRzX3NlY3QgPSBbXTsNCiAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChsb2NfY29udGFpbl9saSwgZnVuY3Rpb24gKCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgX3RoaXNfbGkgPSBqUXVlcnkodGhpcyk7DQogICAgICAgICAgICAgICAgICAgIHZhciBfY291bnRlcl9jb24gPSBfdGhpc19saS5maW5kKCcuam9ic2VhcmNoaC1zZWN0LWNoaWxkY291bnQnKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKF9jb3VudGVyX2Nvbi5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgICAgICBfY291bnRlcl9jb24uaHRtbCgnPGVtIGNsYXNzPSJmYSBmYS1yZWZyZXNoIGZhLXNwaW4iPjwvZW0+Jyk7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRfaWQgPSBfY291bnRlcl9jb24uYXR0cignZGF0YS1pZCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb25faWRzX3NlY3QucHVzaChsb2NhdF9pZCk7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbl9pZHNfc2VjdC5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAgICAgICAgIHZhciBsb2NhdGVfaWRzX3N0ciA9IGxvY2F0aW9uX2lkc19zZWN0LmpvaW4oKTsNCiAgICAgICAgICAgICAgICAgICAgdmFyIGxvY19jb3VudHNfcmVxdWVzdCA9IGpRdWVyeS5hamF4KHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogam9ic2VhcmNoX3BsdWdpbl92YXJzLmFqYXhfdXJsLA0KICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAiUE9TVCIsDQogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VjdF92aWV3OiBzZWN0X3ZpZXdfc3RyLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0X2lkczogbG9jYXRlX2lkc19zdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnam9ic2VhcmNoX3NlY3RzY291bnRfYWRkX3RvX3NwYW5jb25zX2FjdGlvbicsDQogICAgICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICAgICAgZGF0YVR5cGU6ICJqc29uIg0KICAgICAgICAgICAgICAgICAgICB9KTsNCg0KDQogICAgICAgICAgICAgICAgICAgIGxvY19jb3VudHNfcmVxdWVzdC5kb25lKGZ1bmN0aW9uIChyZXNwb25zZSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlc3BfaWRzX2FycjsNCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgcmVzcG9uc2UuY291bnRzICE9PSAndW5kZWZpbmVkJyAmJiByZXNwb25zZS5jb3VudHMgIT0gJycpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcF9pZHNfc3RyID0gcmVzcG9uc2UuY291bnRzOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BfaWRzX2FyciA9IHJlc3BfaWRzX3N0ci5zcGxpdCgnLCcpOw0KICAgICAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgIA0KICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2gobG9jYXRpb25faWRzX3NlY3QsIGZ1bmN0aW9uIChpbmRleCwgaWQpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgY291bnRfdmFsID0gcmVzcF9pZHNfYXJyW2luZGV4XTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgX3RoaXNfY291bnRyX2NvbiA9IGpRdWVyeSgnI2pvYnNlYXJjaGgtc2VjdC1jYXQtaXRlbS0nICsgaWQpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90aGlzX2NvdW50cl9jb24uaHRtbChjb3VudF92YWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnI3Jlc3BvbnNpdmUtc2VjdC1jYXQtaXRlbS0nICsgaWQpLmh0bWwoY291bnRfdmFsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgICAgICBsb2NfY291bnRzX3JlcXVlc3QuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKGxvY2F0aW9uX2lkcywgZnVuY3Rpb24gKGluZGV4LCBpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfdGhpc19jb3VudHJfY29uID0galF1ZXJ5KCcjam9ic2VhcmNoaC1zZWN0LWNhdC1pdGVtLScgKyBpZCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgX3RoaXNfY291bnRyX2Nvbi5odG1sKCcwJyk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcjcmVzcG9uc2l2ZS1zZWN0LWNhdC1pdGVtLScgKyBpZCkuaHRtbCgwKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCiAgICAgICAgDQogICAgICAgIC8vDQogICAgICAgIHZhciBsb2NfY29uX21haW4gPSBqUXVlcnkoJyNqb2JzZWFyY2gtZmluZGJ5LWpvYnR5cGVzJykuZmluZCgnLmpvYnNlYXJjaC1zZWN0cy1hbGxjb24nKTsNCiAgICAgICAgaWYgKGxvY19jb25fbWFpbi5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICB2YXIgbG9jX2NvbnRhaW5fbGkgPSBsb2NfY29uX21haW4uZmluZCgnPmxpJyk7DQogICAgICAgICAgICBpZiAobG9jX2NvbnRhaW5fbGkubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgIHZhciBzZWN0X3ZpZXdfc3RyID0galF1ZXJ5KCcjam9ic2VhcmNoLWZpbmRieS1qb2J0eXBlcycpLmRhdGEoJ3ZpZXcnKTsNCiAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb25faWRzID0gW107DQogICAgICAgICAgICAgICAgalF1ZXJ5LmVhY2gobG9jX2NvbnRhaW5fbGksIGZ1bmN0aW9uICgpIHsNCiAgICAgICAgICAgICAgICAgICAgdmFyIF90aGlzX2xpID0galF1ZXJ5KHRoaXMpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgX2NvdW50ZXJfY29uID0gX3RoaXNfbGkuZmluZCgnLmpvYnNlYXJjaGgtdHlwZS1jaGlsZGNvdW50Jyk7DQogICAgICAgICAgICAgICAgICAgIGlmIChfY291bnRlcl9jb24ubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgX2NvdW50ZXJfY29uLmh0bWwoJzxlbSBjbGFzcz0iZmEgZmEtcmVmcmVzaCBmYS1zcGluIj48L2VtPicpOw0KICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxvY2F0X2lkID0gX2NvdW50ZXJfY29uLmF0dHIoJ2RhdGEtaWQnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uX2lkcy5wdXNoKGxvY2F0X2lkKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgIGlmIChsb2NhdGlvbl9pZHMubGVuZ3RoID4gMCkgew0KICAgICAgICAgICAgICAgICAgICB2YXIgbG9jYXRlX2lkc19zdHIgPSBsb2NhdGlvbl9pZHMuam9pbigpOw0KICAgICAgICAgICAgICAgICAgICB2YXIgbG9jX2NvdW50c19yZXF1ZXN0ID0galF1ZXJ5LmFqYXgoew0KICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBqb2JzZWFyY2hfcGx1Z2luX3ZhcnMuYWpheF91cmwsDQogICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWN0X3ZpZXc6IHNlY3Rfdmlld19zdHIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRfaWRzOiBsb2NhdGVfaWRzX3N0ciwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb246ICdqb2JzZWFyY2hfam9idHlwZWNvdW50X2FkZF90b19zcGFuY29uc19hY3Rpb24nLA0KICAgICAgICAgICAgICAgICAgICAgICAgfSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFUeXBlOiAianNvbiINCiAgICAgICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICAgICAgbG9jX2NvdW50c19yZXF1ZXN0LmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzcF9pZHNfYXJyOw0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiByZXNwb25zZS5jb3VudHMgIT09ICd1bmRlZmluZWQnICYmIHJlc3BvbnNlLmNvdW50cyAhPSAnJykgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXNwX2lkc19zdHIgPSByZXNwb25zZS5jb3VudHM7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcF9pZHNfYXJyID0gcmVzcF9pZHNfc3RyLnNwbGl0KCcsJyk7DQogICAgICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgICAgICAgICBqUXVlcnkuZWFjaChsb2NhdGlvbl9pZHMsIGZ1bmN0aW9uIChpbmRleCwgaWQpIHsNCg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBjb3VudF92YWwgPSByZXNwX2lkc19hcnJbaW5kZXhdOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfdGhpc19jb3VudHJfY29uID0galF1ZXJ5KCcjam9ic2VhcmNoaC1zZWN0LXR5cGVzLWl0ZW0tJyArIGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpc19jb3VudHJfY29uLmh0bWwoY291bnRfdmFsKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCg0KICAgICAgICAgICAgICAgICAgICBsb2NfY291bnRzX3JlcXVlc3QuZmFpbChmdW5jdGlvbiAoanFYSFIsIHRleHRTdGF0dXMpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeS5lYWNoKGxvY2F0aW9uX2lkcywgZnVuY3Rpb24gKGluZGV4LCBpZCkgew0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBfdGhpc19jb3VudHJfY29uID0galF1ZXJ5KCcjam9ic2VhcmNoaC1zZWN0LXR5cGVzLWl0ZW0tJyArIGlkKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBfdGhpc19jb3VudHJfY29uLmh0bWwoJzAnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgIH0NCg0KICAgICAgICBpZiAod2luZG93LmxvY2F0aW9uLmhhc2ggIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhdGlvbi5oYXNoID09ICcjXz1fJykgew0KICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmhhc2ggPSAnJzsgLy8gZm9yIG9sZGVyIGJyb3dzZXJzLCBsZWF2ZXMgYSAjIGJlaGluZA0KICAgICAgICAgICAgaGlzdG9yeS5wdXNoU3RhdGUoJycsIGRvY3VtZW50LnRpdGxlLCB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUpOyAvLyBuaWNlIGFuZCBjbGVhbg0KICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOyAvLyBubyBwYWdlIHJlbG9hZA0KICAgICAgICB9DQoNCiAgICAgICAgalF1ZXJ5KCcudXNlcl9maWVsZCcpLm9uKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7DQogICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7DQogICAgICAgICAgICB2YXIgdGhpc19pZCA9IGpRdWVyeSh0aGlzKS5kYXRhKCdyYW5kaWQnKSwNCiAgICAgICAgICAgICAgICAgICAgbG9hZGVkID0galF1ZXJ5KHRoaXMpLmRhdGEoJ2xvYWRlZCcpLA0KICAgICAgICAgICAgICAgICAgICByb2xlID0galF1ZXJ5KHRoaXMpLmRhdGEoJ3JvbGUnKSwNCiAgICAgICAgICAgICAgICAgICAgdXNlcl9maWVsZCA9IGpRdWVyeSgnI3VzZXJfZmllbGRfJyArIHRoaXNfaWQpLA0KICAgICAgICAgICAgICAgICAgICBhamF4X3VybCA9IGpvYnNlYXJjaF9wbHVnaW5fdmFycy5hamF4X3VybCwNCiAgICAgICAgICAgICAgICAgICAgZm9yY2Vfc3RkID0galF1ZXJ5KHRoaXMpLmRhdGEoJ2ZvcmNlc3RkJyk7DQogICAgICAgICAgICBpZiAobG9hZGVkICE9IHRydWUpIHsNCiAgICAgICAgICAgICAgICBqUXVlcnkoJy51c2VyX2xvYWRlcl8nICsgdGhpc19pZCkuaHRtbCgnPGkgY2xhc3M9ImZhIGZhLXJlZnJlc2ggZmEtc3BpbiI+PC9pPicpOw0KICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0galF1ZXJ5LmFqYXgoew0KICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhfdXJsLA0KICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vfc3RkOiBmb3JjZV9zdGQsDQogICAgICAgICAgICAgICAgICAgICAgICByb2xlOiByb2xlLA0KICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnam9ic2VhcmNoX2xvYWRfYWxsX3VzZXJzX2RhdGEnLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iDQogICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICByZXF1ZXN0LmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIHJlc3BvbnNlLmh0bWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfZmllbGQuaHRtbChyZXNwb25zZS5odG1sKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGpRdWVyeSgnLnVzZXJfbG9hZGVyXycgKyB0aGlzX2lkKS5odG1sKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfZmllbGQuZGF0YSgnbG9hZGVkJywgdHJ1ZSk7DQoNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgcmVxdWVzdC5mYWlsKGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cykgew0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIH0pOw0KDQogICAgICAgIGpRdWVyeSgnLmN1c3RvbV9wb3N0X2ZpZWxkJykub24oJ2NsaWNrJywgZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsNCiAgICAgICAgICAgIHZhciB0aGlzX2lkID0galF1ZXJ5KHRoaXMpLmRhdGEoJ3JhbmRpZCcpLA0KICAgICAgICAgICAgICAgICAgICBsb2FkZWQgPSBqUXVlcnkodGhpcykuZGF0YSgnbG9hZGVkJyksDQogICAgICAgICAgICAgICAgICAgIHBvc3R0eXBlID0galF1ZXJ5KHRoaXMpLmRhdGEoJ3Bvc3R0eXBlJyksDQogICAgICAgICAgICAgICAgICAgIHBsYWNlbGFiZWwgPSBqUXVlcnkodGhpcykuZGF0YSgncGxhY2VsYWJlbCcpLA0KICAgICAgICAgICAgICAgICAgICBjdXN0b21fZmllbGQgPSBqUXVlcnkoJyNjdXN0b21fcG9zdF9maWVsZF8nICsgdGhpc19pZCksDQogICAgICAgICAgICAgICAgICAgIGFqYXhfdXJsID0gam9ic2VhcmNoX3BsdWdpbl92YXJzLmFqYXhfdXJsLA0KICAgICAgICAgICAgICAgICAgICBmb3JjZV9zdGQgPSBqUXVlcnkodGhpcykuZGF0YSgnZm9yY2VzdGQnKTsNCiAgICAgICAgICAgIGlmIChsb2FkZWQgIT0gdHJ1ZSkgew0KICAgICAgICAgICAgICAgIGpRdWVyeSgnLmN1c3RvbV9wb3N0X2xvYWRlcl8nICsgdGhpc19pZCkuaHRtbCgnPGkgY2xhc3M9ImZhIGZhLXJlZnJlc2ggZmEtc3BpbiI+PC9pPicpOw0KICAgICAgICAgICAgICAgIHZhciByZXF1ZXN0ID0galF1ZXJ5LmFqYXgoew0KICAgICAgICAgICAgICAgICAgICB1cmw6IGFqYXhfdXJsLA0KICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICJQT1NUIiwNCiAgICAgICAgICAgICAgICAgICAgZGF0YTogew0KICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2Vfc3RkOiBmb3JjZV9zdGQsDQogICAgICAgICAgICAgICAgICAgICAgICBwb3N0dHlwZTogcG9zdHR5cGUsDQogICAgICAgICAgICAgICAgICAgICAgICBwbGFjZWxhYmVsOiBwbGFjZWxhYmVsLA0KICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiAnam9ic2VhcmNoX2xvYWRfYWxsX2N1c3RvbV9wb3N0X2RhdGEnLA0KICAgICAgICAgICAgICAgICAgICB9LA0KICAgICAgICAgICAgICAgICAgICBkYXRhVHlwZTogImpzb24iDQogICAgICAgICAgICAgICAgfSk7DQoNCiAgICAgICAgICAgICAgICByZXF1ZXN0LmRvbmUoZnVuY3Rpb24gKHJlc3BvbnNlKSB7DQogICAgICAgICAgICAgICAgICAgIGlmICgndW5kZWZpbmVkJyAhPT0gdHlwZW9mIHJlc3BvbnNlLmh0bWwpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9maWVsZC5odG1sKHJlc3BvbnNlLmh0bWwpOw0KICAgICAgICAgICAgICAgICAgICAgICAgalF1ZXJ5KCcuY3VzdG9tX3Bvc3RfbG9hZGVyXycgKyB0aGlzX2lkKS5odG1sKCcnKTsNCiAgICAgICAgICAgICAgICAgICAgICAgIGN1c3RvbV9maWVsZC5kYXRhKCdsb2FkZWQnLCB0cnVlKTsNCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgIH0pOw0KDQogICAgICAgICAgICAgICAgcmVxdWVzdC5mYWlsKGZ1bmN0aW9uIChqcVhIUiwgdGV4dFN0YXR1cykgew0KICAgICAgICAgICAgICAgIH0pOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KDQogICAgICAgIH0pOw0KDQogICAgICAgIGlmIChqUXVlcnkoJy5ncmlkJykubGVuZ3RoID4gMCAmJiBqUXVlcnkoJy5ncmlkLWl0ZW0nKS5sZW5ndGggPiAwKSB7DQogICAgICAgICAgICAvLyoqKiBGdW5jdGlvbiBNYXNvbmVyeQ0KICAgICAgICAgICAgalF1ZXJ5KCcuZ3JpZCcpLmlzb3RvcGUoew0KICAgICAgICAgICAgICAgIGl0ZW1TZWxlY3RvcjogJy5ncmlkLWl0ZW0nLA0KICAgICAgICAgICAgICAgIHBlcmNlbnRQb3NpdGlvbjogdHJ1ZSwNCiAgICAgICAgICAgICAgICBtYXNvbnJ5OiB7DQogICAgICAgICAgICAgICAgICAgIGZpdFdpZHRoOiBmYWxzZQ0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgIH0pOw0KICAgICAgICB9DQogICAgfSk7DQogICAg
data:text/javascript;base64,ZnVuY3Rpb24gc2V0UkVWU3RhcnRTaXplKGUpew0KCQkJLy93aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uKCkgew0KCQkJCXdpbmRvdy5SU0lXID0gd2luZG93LlJTSVc9PT11bmRlZmluZWQgPyB3aW5kb3cuaW5uZXJXaWR0aCA6IHdpbmRvdy5SU0lXOw0KCQkJCXdpbmRvdy5SU0lIID0gd2luZG93LlJTSUg9PT11bmRlZmluZWQgPyB3aW5kb3cuaW5uZXJIZWlnaHQgOiB3aW5kb3cuUlNJSDsNCgkJCQl0cnkgew0KCQkJCQl2YXIgcHcgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLmMpLnBhcmVudE5vZGUub2Zmc2V0V2lkdGgsDQoJCQkJCQluZXdoOw0KCQkJCQlwdyA9IHB3PT09MCB8fCBpc05hTihwdykgfHwgKGUubD09ImZ1bGx3aWR0aCIgfHwgZS5sYXlvdXQ9PSJmdWxsd2lkdGgiKSA/IHdpbmRvdy5SU0lXIDogcHc7DQoJCQkJCWUudGFidyA9IGUudGFidz09PXVuZGVmaW5lZCA/IDAgOiBwYXJzZUludChlLnRhYncpOw0KCQkJCQllLnRodW1idyA9IGUudGh1bWJ3PT09dW5kZWZpbmVkID8gMCA6IHBhcnNlSW50KGUudGh1bWJ3KTsNCgkJCQkJZS50YWJoID0gZS50YWJoPT09dW5kZWZpbmVkID8gMCA6IHBhcnNlSW50KGUudGFiaCk7DQoJCQkJCWUudGh1bWJoID0gZS50aHVtYmg9PT11bmRlZmluZWQgPyAwIDogcGFyc2VJbnQoZS50aHVtYmgpOw0KCQkJCQllLnRhYmhpZGUgPSBlLnRhYmhpZGU9PT11bmRlZmluZWQgPyAwIDogcGFyc2VJbnQoZS50YWJoaWRlKTsNCgkJCQkJZS50aHVtYmhpZGUgPSBlLnRodW1iaGlkZT09PXVuZGVmaW5lZCA/IDAgOiBwYXJzZUludChlLnRodW1iaGlkZSk7DQoJCQkJCWUubWggPSBlLm1oPT09dW5kZWZpbmVkIHx8IGUubWg9PSIiIHx8IGUubWg9PT0iYXV0byIgPyAwIDogcGFyc2VJbnQoZS5taCwwKTsNCgkJCQkJaWYoZS5sYXlvdXQ9PT0iZnVsbHNjcmVlbiIgfHwgZS5sPT09ImZ1bGxzY3JlZW4iKQ0KCQkJCQkJbmV3aCA9IE1hdGgubWF4KGUubWgsd2luZG93LlJTSUgpOw0KCQkJCQllbHNlew0KCQkJCQkJZS5ndyA9IEFycmF5LmlzQXJyYXkoZS5ndykgPyBlLmd3IDogW2UuZ3ddOw0KCQkJCQkJZm9yICh2YXIgaSBpbiBlLnJsKSBpZiAoZS5nd1tpXT09PXVuZGVmaW5lZCB8fCBlLmd3W2ldPT09MCkgZS5nd1tpXSA9IGUuZ3dbaS0xXTsNCgkJCQkJCWUuZ2ggPSBlLmVsPT09dW5kZWZpbmVkIHx8IGUuZWw9PT0iIiB8fCAoQXJyYXkuaXNBcnJheShlLmVsKSAmJiBlLmVsLmxlbmd0aD09MCk/IGUuZ2ggOiBlLmVsOw0KCQkJCQkJZS5naCA9IEFycmF5LmlzQXJyYXkoZS5naCkgPyBlLmdoIDogW2UuZ2hdOw0KCQkJCQkJZm9yICh2YXIgaSBpbiBlLnJsKSBpZiAoZS5naFtpXT09PXVuZGVmaW5lZCB8fCBlLmdoW2ldPT09MCkgZS5naFtpXSA9IGUuZ2hbaS0xXTsNCgkJCQkJCQkJCQkJDQoJCQkJCQl2YXIgbmwgPSBuZXcgQXJyYXkoZS5ybC5sZW5ndGgpLA0KCQkJCQkJCWl4ID0gMCwNCgkJCQkJCQlzbDsNCgkJCQkJCWUudGFidyA9IGUudGFiaGlkZT49cHcgPyAwIDogZS50YWJ3Ow0KCQkJCQkJZS50aHVtYncgPSBlLnRodW1iaGlkZT49cHcgPyAwIDogZS50aHVtYnc7DQoJCQkJCQllLnRhYmggPSBlLnRhYmhpZGU+PXB3ID8gMCA6IGUudGFiaDsNCgkJCQkJCWUudGh1bWJoID0gZS50aHVtYmhpZGU+PXB3ID8gMCA6IGUudGh1bWJoOw0KCQkJCQkJZm9yICh2YXIgaSBpbiBlLnJsKSBubFtpXSA9IGUucmxbaV08d2luZG93LlJTSVcgPyAwIDogZS5ybFtpXTsNCgkJCQkJCXNsID0gbmxbMF07DQoJCQkJCQlmb3IgKHZhciBpIGluIG5sKSBpZiAoc2w+bmxbaV0gJiYgbmxbaV0+MCkgeyBzbCA9IG5sW2ldOyBpeD1pO30NCgkJCQkJCXZhciBtID0gcHc+KGUuZ3dbaXhdK2UudGFidytlLnRodW1idykgPyAxIDogKHB3LShlLnRhYncrZS50aHVtYncpKSAvIChlLmd3W2l4XSk7DQoJCQkJCQluZXdoID0gIChlLmdoW2l4XSAqIG0pICsgKGUudGFiaCArIGUudGh1bWJoKTsNCgkJCQkJfQ0KCQkJCQl2YXIgZWwgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChlLmMpOw0KCQkJCQlpZiAoZWwhPT1udWxsICYmIGVsKSBlbC5zdHlsZS5oZWlnaHQgPSBuZXdoKyJweCI7DQoJCQkJCWVsID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZS5jKyJfd3JhcHBlciIpOw0KCQkJCQlpZiAoZWwhPT1udWxsICYmIGVsKSB7DQoJCQkJCQllbC5zdHlsZS5oZWlnaHQgPSBuZXdoKyJweCI7DQoJCQkJCQllbC5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsNCgkJCQkJfQ0KCQkJCX0gY2F0Y2goZSl7DQoJCQkJCWNvbnNvbGUubG9nKCJGYWlsdXJlIGF0IFByZXNpemUgb2YgU2xpZGVyOiIgKyBlKQ0KCQkJCX0NCgkJCS8vfSk7DQoJCSAgfTs=
data:text/javascript;base64,alF1ZXJ5KGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigkKSB7CiAgJCgnI21lZ2EtbWVudS13cmFwLXByaW1hcnkgbGkgYScpLnJlbW92ZUNsYXNzKCk7CiAgJCgnI21lZ2EtbWVudS13cmFwLXByaW1hcnkgbGkgdWwnKS5yZW1vdmVDbGFzcygneC1kcm9wZG93bicpOwoJJCgiPGRpdiBjbGFzcz0nbW9iaWxlLW1lbnUtdG9nZ2xlJz48YnV0dG9uIHR5cGU9J2J1dHRvbicgY2xhc3M9J21vYmlsZS1tZW51LXRvZ2dsZV9fYnV0dG9uJz48c3BhbiBjbGFzcz0naWNvbi1iYXIgaWNvbi1iYXIxJz48L3NwYW4+PHNwYW4gY2xhc3M9J2ljb24tYmFyIGljb24tYmFyMic+PC9zcGFuPjxzcGFuIGNsYXNzPSdpY29uLWJhciBpY29uLWJhcjMnPjwvc3Bhbj48L2J1dHRvbj48L2Rpdj4iKS5pbnNlcnRCZWZvcmUoIi5obGJfbWVudV9fYWRkaXRpb25hbCIpOwogICQoJy5nZXQtaW4tdG91Y2gtd2lkZ2V0JykuaW5zZXJ0QWZ0ZXIoICQoJ2Zvb3Rlci54LWNvbG9waG9uJykgKTsKICAkKCcuc2VhcmNoLXBvcHVwJykuaW5zZXJ0QWZ0ZXIoICQoJy5nZXQtaW4tdG91Y2gtd2lkZ2V0JykgKTsKICAKICAkKCIud2l0aC1zZWFyY2gtaWNvbiIpLmNsaWNrKAogICAgZnVuY3Rpb24oKSB7CiAgICAgICAgJCgiLnNlYXJjaC1wb3B1cCIpLmZhZGVJbignc2xvdycpOwogICAgfQoJKTsKICAgJCgiLnNlYXJjaC1wb3B1cCBpIikuY2xpY2soCiAgICAgIGZ1bmN0aW9uKCkgewogICAgICAgICAgJCgiLnNlYXJjaC1wb3B1cCIpLmZhZGVPdXQoJ2Zhc3QnKTsKICAgICAgICAgIC8vICQoIi5zaGFyZS1wb3B1cCIpLmZhZGVPdXQoJ2Zhc3QnKTsKICAgICAgfQogICk7CgkkKCcubW9iaWxlLW1lbnUtdG9nZ2xlX19idXR0b24nKS5iaW5kKCdjbGljaycsIGZ1bmN0aW9uICgpIHsKICAgICAgdmFyIGJ1dHRvbiA9ICQodGhpcyk7CiAgICAgIGlmIChidXR0b24uaXMoJy5vcGVuJykpIHsKICAgICAgICAgIGJ1dHRvbi5yZW1vdmVDbGFzcygnb3BlbicpOwogICAgICAgICAgJCgnYm9keScpLnJlbW92ZUNsYXNzKCdtZW51LWV4cGFuZGVkJyk7CiAgICAgIH0gZWxzZSB7CiAgICAgICAgICBidXR0b24uYWRkQ2xhc3MoJ29wZW4nKTsKICAgICAgICAgICQoJ2JvZHknKS5hZGRDbGFzcygnbWVudS1leHBhbmRlZCcpOwogICAgICB9CiAgfSk7Cn0pOwpmdW5jdGlvbiBjb3B5VG9jbGlwYm9hcmQoKSB7CiAgLyogR2V0IHRoZSB0ZXh0IGZpZWxkICovCiAgdmFyIGNvcHlUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNoYXJlcl91cmwiKTsKCiAgLyogU2VsZWN0IHRoZSB0ZXh0IGZpZWxkICovCiAgY29weVRleHQuc2VsZWN0KCk7CgogIC8qIENvcHkgdGhlIHRleHQgaW5zaWRlIHRoZSB0ZXh0IGZpZWxkICovCiAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoImNvcHkiKTsKCiAgalF1ZXJ5KCcuc2hhcmUtcG9wdXAnKS5maW5kKCcuY2xpcF9tZXNzYWdlJykuc2hvdygpOwogIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CiAgICBqUXVlcnkoJy5zaGFyZS1wb3B1cCcpLmZpbmQoJy5jbGlwX21lc3NhZ2UnKS5oaWRlKCk7CiAgfSwgNTAwMCk7CiAgalF1ZXJ5KCcuaGxiX3BvcHVwJykuZmluZCgnLmNsaXBfbWVzc2FnZScpLnNob3coKTsKICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewogICAgalF1ZXJ5KCcuaGxiX3BvcHVwJykuZmluZCgnLmNsaXBfbWVzc2FnZScpLmhpZGUoKTsKICB9LCA1MDAwKTsKfQovLyB3aW5kb3cub25zY3JvbGwgPSBmdW5jdGlvbigpIHsKLy8gICBncm93U2hyaW5rTG9nbygpCi8vIH07Ci8vIHZhciBMb2dvV2lkdGggPSAzMDA7Ci8vIGZ1bmN0aW9uIGdyb3dTaHJpbmtMb2dvKCkgewovLyAgIHZhciBMb2dvID0galF1ZXJ5KGRvY3VtZW50KS5maW5kKCIubG9nby1tZW51IC5sb2dvIik7CgogIAovLyAgIC8vIGNvbnNvbGUubG9nKExvZ29XaWR0aCk7Ci8vICAgLy8gY29uc29sZS5sb2coJ3Njcm9sbCcrZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCkKLy8gICBpZiAoZG9jdW1lbnQuYm9keS5zY3JvbGxUb3AgPiAyMCB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wID4gMjApIHsKLy8gICAgIHZhciBzY3JvbGxUb3BWYWwgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wOwovLyAgICAgaWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA+IDE2MCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIDwgMzgwICl7Ci8vICAgICAgICAgdmFyIHNjcm9sbFRvcFZhbCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgLSAxNjA7Ci8vICAgICAgICAgLy9jb25zb2xlLmxvZyhzY3JvbGxUb3BWYWwpOwovLyAgICAgICAgIExvZ28uY3NzKHsgJ3dpZHRoJzogTG9nb1dpZHRoLXNjcm9sbFRvcFZhbCwgb3ZlcmZsb3c6ICdoaWRkZW4nLCAnbWluLXdpZHRoJzogTG9nb1dpZHRoLXNjcm9sbFRvcFZhbCB9KTsKLy8gICAgIH0KLy8gICAgIGlmKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgPiAzODAgKXsKLy8gICAgICAgTG9nby5jc3MoeyAnd2lkdGgnOiA4Mywgb3ZlcmZsb3c6ICdoaWRkZW4nLCAnbWluLXdpZHRoJzogODMgfSk7Ci8vICAgICB9Ci8vICAgfSBlbHNlIHsKLy8gICAgIExvZ28uY3NzKHsgJ3dpZHRoJzogJ2luaGVyaXQnLCBvdmVyZmxvdzogJ2luaGVyaXQnLCAnbWluLXdpZHRoJzogJ2luaGVyaXQnIH0pOwovLyAgIH0KLy8gfQ==
https://static.cloudflareinsights.com/beacon.min.js/v84a3a4012de94ce1a686ba8c167c359c1696973893317
https://www.hlb.global/wp-admin/js/password-strength-meter.min.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_0bbf5bf15ea74360f610974ee24c36b4.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_12095fd2f5c56f698eed65679fbedc1c.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_27686717620e1fc1c058791d734570d1.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_3bac18b47bd12ef59acde6bb50457fdc.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_407dc10a3f512ca7b2ce5b7fe7a08cd9.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_53426c9d27cec8f94cdd1908c8b45b4e.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_5bb6cd42cb00e68b0d3638c6600825fb.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_5bc2b1fa970f9cecb3c30c0c92c98271.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_7be65ac27024c7b5686f9d7c49690799.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_80c24863fa66d29e38b3a1f39d0898a0.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_93cbafcce1c97987586f656ebed11f9b.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_9887373cf6a291d9028b83d35c9231a5.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_a0a8e1d1202bc6c336f451b6ececcd8e.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_dc663d260757e2ccd92d93e63b5d8a7f.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_dffa195b546cf1dfd52f2206955eb892.js
https://www.hlb.global/wp-content/cache/autoptimize/js/autoptimize_single_e0e5b130995dffab378d011fcd4f06d6.js
https://www.hlb.global/wp-content/plugins/google-analytics-for-wordpress/assets/js/frontend-gtag.min.js
https://www.hlb.global/wp-content/plugins/hlb-extension/assets/js/owl.carousel.min.js
https://www.hlb.global/wp-content/plugins/revslider/public/assets/js/rbtools.min.js
https://www.hlb.global/wp-content/plugins/revslider/public/assets/js/rs6.min.js
https://www.hlb.global/wp-content/plugins/ubermenu/assets/js/ubermenu.min.js
https://www.hlb.global/wp-content/plugins/wp-jobsearch/js/isotope.min.js
https://www.hlb.global/wp-content/plugins/wp-jobsearch/js/jquery.datetimepicker.full.min.js
https://www.hlb.global/wp-content/plugins/wp-jobsearch/js/selectize.min.js
https://www.hlb.global/wp-content/plugins/wp-smush-pro/app/assets/js/smush-lazy-load.min.js
https://www.hlb.global/wp-content/themes/pro-child/assets/js/custom.min.js
https://www.hlb.global/wp-content/themes/pro-child/assets/js/jquery.validate.min.js
https://www.hlb.global/wp-includes/js/comment-reply.min.js
https://www.hlb.global/wp-includes/js/dist/hooks.min.js
https://www.hlb.global/wp-includes/js/dist/i18n.min.js
https://www.hlb.global/wp-includes/js/dist/vendor/moment.min.js
https://www.hlb.global/wp-includes/js/dist/vendor/regenerator-runtime.min.js
https://www.hlb.global/wp-includes/js/dist/vendor/wp-polyfill.min.js
https://www.hlb.global/wp-includes/js/jquery/jquery-migrate.min.js
https://www.hlb.global/wp-includes/js/jquery/jquery.min.js
https://www.hlb.global/wp-includes/js/zxcvbn-async.min.js
Внешние ссылки 116
Внутренние ссылки 396

meta-теги

viewportwidth=device-width, initial-scale=1.0
robotsmax-image-preview:large
generatorPowered by Slider Revolution 6.6.15 - responsive, Mobile-Friendly Slider Plugin for WordPress with comfortable drag and drop interface.
twitter:cardsummary_large_image
twitter:titleHLB | HLB: The global advisory and accounting network
twitter:descriptionHLB is a global network of independent advisory and accounting firms providing consulting, tax, and audit services.
twitter:label1Written by
twitter:data1notadmin
twitter:label2Est. reading time
twitter:data23 minutes
frameworkRedux 4.2.11
msapplication-TileImagehttps://www.hlb.global/wp-content/uploads/2022/01/cropped-HLB-Logo_Icon_Blue-1-32x32-1.png
og:localeen_GB
og:site_nameHLB
og:typearticle
og:titleHome
og:descriptionHLB: The global advisory and accounting network
og:urlhttps://www.hlb.global/
og:imagehttps://www.hlb.global/wp-content/uploads/2022/05/HLB-Logo_Descriptor_Global_Blue.png

Скриншот сайта

Скриншота нет

Сервер сайта

IP адрес сайта 188.114.98.224
188.114.99.224
Веб-сервер cloudflare
Версия HTTP HTTP 3
DNS записи 4
A записи
1: ip: 188.114.98.224
2: ip: 188.114.99.224
AAAA записи
3: ipv6: 2a06:98c1:3122:e000::5
4: ipv6: 2a06:98c1:3123:e000::5

Ответ сервера

Группы заголовков: заголовки безопасности, заголовки кэширования.
status HTTP/2 200
date Thu, 22 Feb 2024 17:01:29 GMT
content-type text/html; charset=UTF-8
vary Accept-Encoding
expires Thu, 19 Nov 1981 08:52:00 GMT
cache-control no-store, no-cache, must-revalidate
pragma no-cache
link ; rel=shortlink
x-srcache-fetch-status HIT
x-srcache-store-status BYPASS
x-powered-by EasyEngine v4.6.5
cf-cache-status DYNAMIC
report-to {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v3?s=CtfSPG%2FitQHYtl%2By78bZncWs71a%2FJiu%2FFgFeZgf2r8B4dWmv1UtkRwF2XkSOlsYVGzbCoXEAyzhMTIoqIbI26uDAqRqCzNvBIKwh%2FEygYC2sjxx838HqL4ymfYH%2B6I9w"}],"group":"cf-nel","max_age":604800}
nel {"success_fraction":0,"report_to":"cf-nel","max_age":604800}
server cloudflare
cf-ray 8598ca93eca109b7-ARN
content-encoding gzip

Оцените сайт

Не ставьте оценку если отвечаете на другой отзыв или пишите комментарий:

Можно добавить текст отзыва, ответ на другой отзыв, или просто комментарий к сайту:
captcha