PageSourceSearch

https://hitchedhiker.com/WebDir/huishenghuiying/js/main.js?t=1641757699

js hitchedhiker.com collected 2026-10-07 01:04:04 UTC 298,813 bytes, 1 lines download raw bytes

1data:text/javascript&#59;base64,JChmdW5jdGlvbigpIHsKCiAgICB2YXIgd2QgPSAkKHdpbmRvdykud2lkdGgoKTsKCiAgICB2YXIgY2hhbnBpbk1lbnVPZmYgPSAkKCcuY2hhbnBpbk1lbnVCb3gnKS5vZmZzZXQoKTsKCiAgICB2YXIgdnNwMjAyMEJ1eU9mZiA9ICQoJy50aXRsZTIwMjAnKS5vZmZzZXQoKTsKCiAgICB2YXIgZHVpYmlPZmYgPSAkKCcuZHVpYmlUYWJsZScpLm9mZnNldCgpOwogICAgCgoKICAgICQod2luZG93KS5zY3JvbGwoZnVuY3Rpb24oKSB7CgogICAgICAgIHNjcm9sbEhlaWdodCA9ICQodGhpcykuc2Nyb2xsVG9wKCk7CgogICAgICAgIGlmICh3ZCA8IDc2OCkgewoKICAgICAgICAgICAgLy/pppbpobXmta7liqjotK3kubBiYW5uZXJ4CgogICAgICAgICAgICB2YXIgYmFubmVySCA9ICQoJy5maXhlZEJhbm5lcicpLmhlaWdodCgpOwoKICAgICAgICAgICAgaWYoc2Nyb2xsSGVpZ2h0ID4gYmFubmVySCl7CgogICAgICAgICAgICAgICAgJCgnLmZpeGVkYnV5JykucmVtb3ZlQ2xhc3MoJ2xheXVpLWhpZGUnKTsKCiAgICAgICAgICAgIH1lbHNlewoKICAgICAgICAgICAgICAgICQoJy5maXhlZGJ1eScpLmFkZENsYXNzKCdsYXl1aS1oaWRlJyk7CgogICAgICAgICAgICB9CgogICAgICAgIH0KCgoKICAgICAgICAvKioq5Lqn5ZOB5a+86Iiq5oKs5rWuKiovCgogICAgICAgIGlmKHR5cGVvZihjaGFucGluTWVudU9mZikgIT0gJ3VuZGVmaW5lZCcpewoKICAgICAgICAgICAgaWYoc2Nyb2xsSGVpZ2h0ID4gY2hhbnBpbk1lbnVPZmYudG9wKXsKCiAgICAgICAgICAgICAgICAvLyAkKCIuY2hhbnBpbk1lbnVCb3giKS5hZGRDbGFzcygiY2hhbnBpbk1lbnVmaXhlZCIpLmZpbmQoJ3VsJykuYWRkQ2xhc3MoJ2NoYW5waW5NZW51Rml4Q29udGVudCcpLmNoaWxkcmVuKCkubGFzdCgpLnJlbW92ZUNsYXNzKCdsYXl1aS1oaWRlJyk7CiAgICAgICAgICAgICAgICAkKCIuY2hhbnBpbk1lbnVCb3giKS5hZGRDbGFzcygiY2hhbnBpbk1lbnVmaXhlZCIpLmZpbmQoJ3VsJykuYWRkQ2xhc3MoJ2NoYW5waW5NZW51Rml4Q29udGVudCcpOwogICAgICAgICAgICAgICAgaWYoJCgiLnN0YXRpYy1vcGF5LWNvbW1vbiIpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICAgICAgICQoIi5jaGFucGluTWVudWZpeGVkIikuY3NzKCJ0b3AiLCI2MHB4Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1lbHNlewoKICAgICAgICAgICAgICAgIC8vICQoIi5jaGFucGluTWVudUJveCIpLnJlbW92ZUNsYXNzKCJjaGFucGluTWVudWZpeGVkIikuZmluZCgndWwnKS5yZW1vdmVDbGFzcygnY2hhbnBpbk1lbnVGaXhDb250ZW50JykuY2hpbGRyZW4oKS5sYXN0KCkuYWRkQ2xhc3MoJ2xheXVpLWhpZGUnKTsKICAgICAgICAgICAgICAgICQoIi5jaGFucGluTWVudUJveCIpLnJlbW92ZUNsYXNzKCJjaGFucGluTWVudWZpeGVkIikuZmluZCgndWwnKS5yZW1vdmVDbGFzcygnY2hhbnBpbk1lbnVGaXhDb250ZW50Jyk7CgogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICAgICAgaWYodHlwZW9mKHZzcDIwMjBCdXlPZmYpICE9ICd1bmRlZmluZWQnKXsKCiAgICAgICAgICAgIGlmKHNjcm9sbEhlaWdodCA+IDYwMCl7CgogICAgICAgICAgICAgICAgLy8gJCgiLmNoYW5waW5NZW51Qm94IikuYWRkQ2xhc3MoImNoYW5waW5NZW51Zml4ZWQiKS5maW5kKCd1bCcpLmFkZENsYXNzKCdjaGFucGluTWVudUZpeENvbnRlbnQnKS5jaGlsZHJlbigpLmxhc3QoKS5yZW1vdmVDbGFzcygnbGF5dWktaGlkZScpOwogICAgICAgICAgICAgICAgJCgiLnRpdGxlMjAyMCIpLnBhcmVudCgpLmFkZENsYXNzKCJjaGFucGluTWVudWZpeGVkIikuZmluZCgndWwnKS5hZGRDbGFzcygnY2hhbnBpbk1lbnVGaXhDb250ZW50Jyk7CiAgICAgICAgICAgICAgICAkKCcudnNwMjAyMEJ1eScpLnJlbW92ZUNsYXNzKCJkbiIpOwogICAgICAgICAgICAgICAgaWYoJCgiLnN0YXRpYy1vcGF5LWNvbW1vbiIpLmxlbmd0aCA+IDApewogICAgICAgICAgICAgICAgICAgICQoIi5jaGFucGluTWVudWZpeGVkIikuY3NzKCJ0b3AiLCI2MHB4Iik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH1lbHNlewoKICAgICAgICAgICAgICAgIC8vICQoIi5jaGFucGluTWVudUJveCIpLnJlbW92ZUNsYXNzKCJjaGFucGluTWVudWZpeGVkIikuZmluZCgndWwnKS5yZW1vdmVDbGFzcygnY2hhbnBpbk1lbnVGaXhDb250ZW50JykuY2hpbGRyZW4oKS5sYXN0KCkuYWRkQ2xhc3MoJ2xheXVpLWhpZGUnKTsKICAgICAgICAgICAgICAgICQoIi50aXRsZTIwMjAiKS5wYXJlbnQoKS5yZW1vdm&#8
16;DbGFzcygiY2hhbnBpbk1lbnVmaXhlZCIpLmZpbmQoJ3VsJykucmVtb3ZlQ2xhc3MoJ2NoYW5waW5NZW51Rml4Q29udGVudCcpOwogICAgICAgICAgICAgICAgJCgnLnZzcDIwMjBCdXknKS5hZGRDbGFzcygiZG4iKTsKICAgICAgICAgICAgfQoKICAgICAgICB9CgoKCiAgICAgICAgaWYodHlwZW9mKGR1aWJpT2ZmKSAhPSAndW5kZWZpbmVkJyl7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBpZiAoc2Nyb2xsSGVpZ2h0ID4gZHVpYmlPZmYudG9wIC0gMSkgewogICAgICAgICAgICAgICAgLy8gY29uc29sZS5sb2coZHVpYmlPZmYudG9wICk7CiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgaWYgKHNjcm9sbEhlaWdodCA+IDEzMDApIHsKCiAgICAgICAgICAgICAgICAkKCcuZHVpYmlUYWJsZScpLmZpbmQoJ3RoZWFkJykuZmluZCgndHInKS5hZGRDbGFzcygnZHVpYmlGaWRleCcpOwoKICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAkKCcuZHVpYmlGaWRleCcpLnJlbW92ZUNsYXNzKCdkdWliaUZpZGV4Jyk7CgogICAgICAgICAgICB9CgogICAgICAgIH0KCiAgICB9KTsKCiAgICAvKiBpbmRleCAqLwogICAgJCgiI3ZpZF9wbGF5ZXIiKS5jbGljayhmdW5jdGlvbigpewogICAgICAgIGlmICgkKCcjaWR4X3ZpZGVvJykuZ2V0KDApLnBhdXNlZCl7CiAgICAgICAgICAgICQoJyNpZHhfdmlkZW8nKS5nZXQoMCkucGxheSgpOwogICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJwbGF5ZXIiKS5hZGRDbGFzcygicGF1c2UiKTsKICAgICAgICAgICAgJCh0aGlzKS5hbmltYXRlKHtvcGFjaXR5OiAwfSwxMDApOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgJCgnI2lkeF92aWRlbycpLmdldCgwKS5wYXVzZSgpOwogICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJwYXVzZSIpLmFkZENsYXNzKCJwbGF5ZXIiKTsKICAgICAgICAgICAgJCh0aGlzKS5hbmltYXRlKHtvcGFjaXR5OiAxfSwxMDApOwogICAgICAgIH0gICAgICAgICAgICAKICAgIH0pCgogICAgdmFyIG15U3dpcGVyID0gbmV3IFN3aXBlcignLnVzZXJDb21tZW50JywgewogICAgICAgIGxvb3A6IHRydWUsCiAgICAgICAgbmF2aWdhdGlvbjogewogICAgICAgICAgICBuZXh0RWw6ICcudXNlckNvbW1lbnRSaWdodCcsCiAgICAgICAgICAgIHByZXZFbDogJy51c2VyQ29tbWVudExlZnQnLAogICAgICAgIH0sCiAgICB9KTsKCgoKICAgIC8qKioqKioqKioqKnN1cHBvcnQgIG1lbnUgc3RhcnQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgLy8g5YiH5o2idGFiCgogICAgJCgnW3RhYlNob3dTdXBwb3J0XSA+IConKS5ub3QoJCgnW25vVGFiXScpKS5jbGljayhmdW5jdGlvbigpIHsKCiAgICAgICAgJCgnW3RhYlNob3dTdXBwb3J0XSA+IC5hY3RpdmUnKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CgogICAgICAgICQodGhpcykuYWRkQ2xhc3MoJ2FjdGl2ZScpOwoKCgogICAgICAgICQoJ1t0YWJTaG93QmluZEZpbHRlcl0nKS5jaGlsZHJlbigpLmFkZENsYXNzKCdsYXl1aS1oaWRlJyk7CgoKCiAgICAgICAgdmFyIGVsZW1lbnQgPSAkKHRoaXMpLnBhcmVudCgpLmF0dHIoJ3RhYlNob3dCaW5kJyk7CgogICAgICAgIHZhciBhbmltYXRlZCA9ICQodGhpcykucGFyZW50KCkuYXR0cignYW5pbWF0ZWQnKTsKCiAgICAgICAgaWYgKGVsZW1lbnQpIHsKCiAgICAgICAgICAgICQoJ1t0YWJTaG93QmluZEZpbHRlcj0iJyArIGVsZW1lbnQgKyAnIl0nKS5jaGlsZHJlbigpLmVxKCQodGhpcykuaW5kZXgoKSkucmVtb3ZlQ2xhc3MoJ2xheXVpLWhpZGUnKS5hZGRDbGFzcyhhbmltYXRlZCkuc2libGluZ3MoKS5hZGRDbGFzcygnbGF5dWktaGlkZScpOwoKICAgICAgICB9CgoKCiAgICB9KTsKCiAgICAvKioqKioqKioqKipzdXBwb3J0ICBtZW51IGVuZCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAgIGlmKCAkKCcuc3dpcGVyLWJhbm5lcicpICl7CiAgICAgICAgdmFyIG15U3dpcGVyID0gbmV3IFN3aXBlcignLnN3aXBlci1iYW5uZXInLHsKICAgICAgICAgICAgYXV0b3BsYXk6dHJ1ZSwKICAgICAgICAgICAgbG9vcDogdHJ1ZSwKICAgICAgICAgICAgcGFnaW5hdGlvbjogewogICAgICAgICAgICAgICAgZWw6ICcuc3dpcGVyLXBhZ2luYXRpb24nLAogICAgICAgICAgICB9LAogICAgICAgIH0pCiAgICB9CiAgICAKCgogICAgLyoqKioqKioqKioqaW5kZXguaHRtbCBzdGFydCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiAgICBzZXRUaW1lb3V0KGFsc0xpc3QsIDUwMCk7CgogICAgLy&#111
1;qKioqKioqKioqaW5kZXguaHRtbCBlbmQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCiAgICAvKioqKioqKioqKipjaGFucGluLmh0bWwgc3RhcnQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgogICAgJCgiLmR1aWJpVGl0bGUiKS5jbGljayhmdW5jdGlvbigpewogICAgICAgICQodGhpcykucGFyZW50KCkudG9nZ2xlQ2xhc3MoImR1aWJpVGl0bGVCRyIpOwogICAgfSkKCiAgICAkKCcuY2hhbnBpbk1lbnVCb3ggbGknKS5jbGljayhmdW5jdGlvbigpewoKICAgICAgICBpZigkKHRoaXMpLmhhc0NsYXNzKCdkdWliaScpKXsKCiAgICAgICAgICAgZHVpYmlPZmYgPSAkKCcuZHVpYmlUYWJsZScpLm9mZnNldCgpOwoKICAgICAgICB9CgogICAgfSk7CgoKCiAgICB2YXIgbWVudUluZGV4ID0gd2luZG93LmxvY2F0aW9uLmhhc2g7CgogICAgaWYgKHdpbmRvdy5sb2NhdGlvbi5maXhfaHJlZi5pbmRleE9mKCd2aWRlb3N0dWRpbzIwMTguaHRtbCcpID4gLTEgJiYgbWVudUluZGV4LmluZGV4T2YoIiMiKSA+IC0xKSB7CgogICAgICAgIHZhciBtZW51SW5kZXhOb3cgPSBtZW51SW5kZXguc3BsaXQoJyMnKTsKCiAgICAgICAgaWYgKG1lbnVJbmRleE5vd1sxXSA+PSAwKSB7CgogICAgICAgICAgICAkKCcuY2hhbnBpbk1lbnVCb3ggbGknKS5lcShtZW51SW5kZXhOb3dbMV0pLnRyaWdnZXIoJ2NsaWNrJyk7CgogICAgICAgIH0KCiAgICB9CgogICAgLyoqKioqKioqKioqY2hhbnBpbi5odG1sIGVuZCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCgoKICAgIC8qKioqKioqKioqKmJ1eS5odG1sIHN0YXJ0KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogICAgLy8gJCgiLmJ1eUxpc3RfaXRlbTMgZGl2LmRvdWZ1IikuaG92ZXIoZnVuY3Rpb24oKXsKICAgIC8vICAgICAkKHRoaXMpLnBhcmVudCgpLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOwogICAgLy8gICAgICQodGhpcykuYWRkQ2xhc3MoImFjdGl2ZSIpOwogICAgLy8KICAgIC8vIH0pOwoKICAgIGlmKCQoIi5idXlMaXN0X2l0ZW0zIGRpdi5kb3VmdSIpLmhhc0NsYXNzKCdhY3RpdmUnKSl7CiAgICAgICAgJCgiLmJ1eUxpc3RfaXRlbTMgZGl2LmRvdWZ1IikucGFyZW50KCkuY2hpbGRyZW4oKS5maW5kKCIubGltX2J1eV9iIikuYWRkQ2xhc3MoImRuIik7CiAgICAgICAgJCgiLmJ1eUxpc3RfaXRlbTMgZGl2LmRvdWZ1IikucGFyZW50KCkuY2hpbGRyZW4oKS5maW5kKCIubGltX2J1eV9jIikucmVtb3ZlQ2xhc3MoImRuIik7CiAgICB9CgogICAgJCgiLmJ1eUxpc3RfaXRlbTMgZGl2LmRvdWZ1IikuaG92ZXIoZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLnBhcmVudCgpLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOwogICAgICAgICQodGhpcykucGFyZW50KCkuY2hpbGRyZW4oKS5maW5kKCIubGltX2J1eV9iIikucmVtb3ZlQ2xhc3MoImRuIik7CiAgICAgICAgJCh0aGlzKS5wYXJlbnQoKS5jaGlsZHJlbigpLmZpbmQoIi5saW1fYnV5X2MiKS5hZGRDbGFzcygiZG4iKTsKICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCJhY3RpdmUiKTsKICAgICAgICAkKHRoaXMpLmZpbmQoJy5saW1fYnV5X2InKS5hZGRDbGFzcygnZG4nKTsKICAgICAgICAkKHRoaXMpLmZpbmQoJy5saW1fYnV5X2MnKS5yZW1vdmVDbGFzcygnZG4nKTsKICAgIH0pCgogICAgaWYoaXNQaG9uZSgpKXsKICAgICAgICAkKCIubWlhb3NoYV90aW1lIikuZmluZCgiLmxpbV9idXlfYiIpLmFkZENsYXNzKCJkbiIpOwogICAgICAgICQoIi5taWFvc2hhX3RpbWUiKS5maW5kKCIubGltX2J1eV9jIikucmVtb3ZlQ2xhc3MoImRuIik7CiAgICB9CgogICAgJCgnLmRvdWZ1IC5kb2Z1X2RwX2xhYmVsJykuY2xpY2soZnVuY3Rpb24oKSB7CiAgICAgICAgdmFyIGZvcm0gPSAkKHRoaXMpLnBhcmVudHMoJy5kb3VmdV9mb3JtJyk7CiAgICAgICAgdmFyIGFsbHByaWNlID0gJCh0aGlzKS5wYXJlbnRzKCcuZG91ZnUnKS5maW5kKCcuZG91ZnVfYWxscHJpY2UnKTsKICAgICAgICB2YXIgYmFzZXByaWNlID0gcGFyc2VJbnQoYWxscHJpY2UuYXR0cignZGF0YS1iYXNlUHJpY2UnKSk7CiAgICAgICAgdmFyIGJhc2VsaWIgPSBwYXJzZUludChhbGxwcmljZS5hdHRyKCdkYXRhLWJhc2VsaWInKSk7CiAgICAgICAgCiAgICAgICAgaWYoJCh0aGlzKS5oYXNDbGFzcygiYWN0aXZlIikpewogICAgICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygiYWN0aXZlIi&#10
17;7CiAgICAgICAgfQoKICAgICAgICB2YXIgYXJyID0gQXJyYXkuZnJvbShmb3JtLmZpbmQoIi5kb2Z1X2RwX2xhYmVsLmFjdGl2ZSIpKTsKICAgICAgICB2YXIgenVoZSA9ICdkYXRhJzsKICAgICAgICBmb3IobGV0IGkgPSAwICwgbGVuID0gYXJyLmxlbmd0aCA7IGkgPCBsZW4gOyBpICsrKXsKICAgICAgICAgICAgYmFzZXByaWNlICs9IHBhcnNlSW50KGFyci5lcShpKS5nZXRBdHRyaWJ1dGUoImRhdGEtcHJpY2UiKSk7CiAgICAgICAgICAgIHp1aGUgKz0gJy0nICsgYXJyLmVxKGkpLmdldEF0dHJpYnV0ZSgiZGF0YS1jYXRlZ29yeSIpOwogICAgICAgIH0KICAgICAgICAvLyBhcnIuZm9yRWFjaChpdGVtID0+IHsKICAgICAgICAvLyAgICAgYmFzZXByaWNlICs9IHBhcnNlSW50KGl0ZW0uZ2V0QXR0cmlidXRlKCJkYXRhLXByaWNlIikpOwogICAgICAgIC8vICAgICB6dWhlICs9ICctJyArIGl0ZW0uZ2V0QXR0cmlidXRlKCJkYXRhLWNhdGVnb3J5Iik7CiAgICAgICAgLy8gfSk7CiAgICAgICAgaWYoYWxscHJpY2UuYXR0cih6dWhlKycteW91aHVpJykpewogICAgICAgICAgICBiYXNlcHJpY2UgLT0gcGFyc2VJbnQoIGFsbHByaWNlLmF0dHIoenVoZSsnLXlvdWh1aScpICk7CiAgICAgICAgfQogICAgICAgICQodGhpcykucGFyZW50cygnLmRvdWZ1JykuZmluZCgnLmRvdWZ1X2FsbHByaWNlJykudGV4dCgn7
17+lJyArIGJhc2VwcmljZSk7CiAgICAgICAgaWYoenVoZSA9PSAnZGF0YScpewogICAgICAgICAgICAkKHRoaXMpLnBhcmVudHMoJy5kb3VmdScpLmZpbmQoJy5idXlMaXN0X2J0bjEnKS5hdHRyKCdsaWQnLCBiYXNlbGliKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJCh0aGlzKS5wYXJlbnRzKCcuZG91ZnUnKS5maW5kKCcuYnV5TGlzdF9idG4xJykuYXR0cignbGlkJywgYWxscHJpY2UuYXR0cih6dWhlKSk7CiAgICAgICAgfQogICAgICAgIAoKICAgICAgICAvLyB2YXIgZm9ybSA9ICQodGhpcykucGFyZW50cygnLmRvdWZ1X2Zvcm0nKTsKCiAgICAgICAgLy8gdmFyIGFsbHByaWNlID0gMDsKCiAgICAgICAgLy8gdmFyIGxpZCA9IDA7CgoKCiAgICAgICAgLy8gaWYoJCh0aGlzKS5oYXNDbGFzcygnYWN0aXZlJykpewoKICAgICAgICAvLyAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7CgogICAgICAgIC8vIH1lbHNlewoKICAgICAgICAvLyAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7CgogICAgICAgIC8vIH0KCgoKICAgICAgICAvLyBzd2l0Y2goZm9ybS5maW5kKCcuZG9mdV9kcF9sYWJlbC5hY3RpdmUnKS5sZW5ndGgpewoKICAgICAgICAvLyAgICAgY2FzZSAwOgoKICAgICAgICAvLyAgICAgICAgIGFsbHByaWNlID0gZm9ybS5hdHRyKCdkb3VmdS1zdy1wcmljZScpOwoKICAgICAgICAvLyAgICAgICAgIGxpZCA9IGZvcm0uYXR0cignZG91ZnUtc3ctbGlkJyk7CgogICAgICAgIC8vICAgICBicmVhazsKCiAgICAgICAgLy8gICAgIGNhc2UgMToKCiAgICAgICAgLy8gICAgICAgICBhbGxwcmljZSA9IGZvcm0uZmluZCgnLmRvZnVfZHBfbGFiZWwuYWN0aXZlJykuYXR0cignZG91ZnUtZHAtcHJpY2UnKTsKCiAgICAgICAgLy8gICAgICAgICBsaWQgPSBmb3JtLmZpbmQoJy5kb2Z1X2RwX2xhYmVsLmFjdGl2ZScpLmF0dHIoJ2RvdWZ1LWRwLWxpZCcpOwoKICAgICAgICAvLyAgICAgYnJlYWs7CgogICAgICAgIC8vICAgICBjYXNlIDI6CgogICAgICAgIC8vICAgICAgICAgYWxscHJpY2UgPSBmb3JtLmF0dHIoJ2RvdWZ1LWFsbGRwLXByaWNlJyk7CgogICAgICAgIC8vICAgICAgICAgbGlkID0gZm9ybS5hdHRyKCdkb3VmdS1hbGxkcC1saWQnKTsKCiAgICAgICAgLy8gICAgIGJyZWFrOwoKICAgICAgICAvLyB9CgogICAgICAgIC8vICQodGhpcykucGFyZW50cygnLmRvdWZ1JykuZmluZCgnW2xpZF0nKS5hdHRyKCdsaWQnLCBsaWQpOwoKICAgICAgICAvLyAkKHRoaXMpLnBhcmVudHMoJy5kb3VmdScpLmZpbmQoJy5kb3VmdV9hbGxwcmljZScpLnRleHQoJ8KlJythbGxwcmljZSk7CgogICAgfSk7CgoKCiAgICAvKioqKioqKioqKipidXkuaHRtbCBlbmQqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgoKCiAgICAvKioqKioqKioqKipqaWFvY2hlbmcuaHRtbCAgbWVudSBzdGFydCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCiAgICAkKCdbdGFiU2hvd01lbnVdID4gKicpLm5vdCgkKCdbbm9UYWJdJykpLmNsaWNrKGZ1bmN0aW9uKCkgewoKICAgICAgICAkKCdbdGFiU2hvd01lbnVdID4gLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKCiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7CgoKCiAgICAgICAgJCgnLnN1cHBvcnRNZW51IC5zdXBwb3J0TWVudUJveCcpLmFkZENsYXNzKCdoaWRlLXhzJyk7CgogICAgICAgICQoJy5zdXBwb3J0TWVudSAuc3VwcG9ydE1lbnVCb3gnKS5lcSgkKHRoaXMpLmluZGV4KCkpLnJlbW92ZUNsYXNzKCdoaWRlLXhzJyk7CgoKCiAgICAgICAgJCgnW2RhdGEtbGlzdD1saXN0JysgKCQodGhpcykuaW5kZXgoKSsxKSArJ18xXScpLnRyaWdnZXIoJ2NsaWNrJyk7CgoKCiAgICB9KTsKCgoKICAgICQoJ1t0YWJTaG93U3VwcG9ydF0gPiAqJykubm90KCQoJ1tub1RhYl0nKSkuY2xpY2soZnVuY3Rpb24oKSB7CgogICAgICAgICQoJ1t0YWJTaG93U3VwcG9ydF0gLmFjdGl2ZScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTsKCiAgICAgICAgJCh0aGlzKS5hZGRDbGFzcygnYWN0aXZlJyk7CgoKCiAgICAgICAgdmFyIGVsZW1lbnQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtbGlzdCcpOwoKICAgICAgICB2YXIgYW5pbWF0ZWQgPSAkKHRoaXMpLnBhcmVudCgpLmF0dHIoJ2FuaW1hdGVkJyk7CgogICAgICAgIGlmIChlbGVtZW50KSB7CgogICAgICAgICAgICAkKCcuJyArIGVsZW1lbnQpLnJlbW92ZUNsYXNzKCdsYXl1aS1oaWRlJykuYWRkQ2xhc3MoYW5pbWF0ZWQpLnNpYmxpbmdzKCkuYWRkQ2xhc3MoJ2xheXVpLWhpZGUnKTsKCiAgICA&#
1103;ICAgfQoKICAgIH0pOwoKCgogICAgLyoqKioqKioqKioqamlhb2NoZW5nLmh0bWwgIG1lbnUgZW5kKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKCgoKCiAgICAvKioqKioqKioqKioqKuaJi+acuiBiZWdpbioqKioqKioqKiovCgogICAgaWYgKHdkIDwgNzY4KSB7CgogICAgICAgICQoJy5tX21lbnUnKS5jbGljayhmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKCcudG9wJykuaGFzQ2xhc3MoJ21fbzk1JykpIHsKCiAgICAgICAgICAgICAgICAkKCcudG9wJykucmVtb3ZlQ2xhc3MoJ21fbzk1JykuYW5pbWF0ZSh7IGhlaWdodDogJCh3aW5kb3cpLmhlaWdodCgpIH0sIDMwMCk7CgogICAgICAgICAgICAgICAgJCh0aGlzKS5hdHRyKCdzcmMnLCAnLy9waWMubWFpcnVhbi5jb20vV2ViU291cmNlL2NvbW1vbi93ZWIvaW1hZ2VzL2NoYWNoYV9tZW51LnBuZycpOwoKICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICAkKCcudG9wJykuYWRkQ2xhc3MoJ21fbzk1JykuYW5pbWF0ZSh7IGhlaWdodDogJzEuMjY3cmVtJyB9LCAxMDApOwoKICAgICAgICAgICAgICAgICQodGhpcykuYXR0cignc3JjJywgJy8vcGljLm1haXJ1YW4uY29tL1dlYlNvdXJjZS9jb21tb24vd2ViL2ltYWdlcy9tX21lbnUucG5nJyk7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwoKCgogICAgICAgICQoJy5mb290ZXIgLmZvb3RlclRpdGxlJykuY2xpY2soZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBpZiAoJCh0aGlzKS5uZXh0QWxsKCd1bCcpLmNzcygnZGlzcGxheScpID09ICdub25lJykgewoKICAgICAgICAgICAgICAgICQodGhpcykubmV4dEFsbCgndWwnKS5yZW1vdmVDbGFzcygnaGlkZS14cycpOwoKICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnaW1nJykuYXR0cignc3JjJywgJy8vcGljLm1haXJ1YW4uY29tL1dlYlNvdXJjZS9jb21tb24vd2ViL2ltYWdlcy9jaGFjaGEucG5nJyk7CgogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgICQodGhpcykubmV4dEFsbCgndWwnKS5hZGRDbGFzcygnaGlkZS14cycpOwoKICAgICAgICAgICAgICAgICQodGhpcykuZmluZCgnaW1nJykuYXR0cignc3JjJywgJy8vcGljLm1haXJ1YW4uY29tL1dlYlNvdXJjZS9jb21tb24vd2ViL2ltYWdlcy9qaWEucG5nJyk7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwoKCgogICAgICAgICQoJy5tX3hpYXphaUJ0bicpLmNsaWNrKGZ1bmN0aW9uKCl7CgogICAgICAgICAgICB2YXIgYmFuYmVuID0gJCh0aGlzKS5hdHRyKCdiYW5iZW4nKTsKCiAgICAgICAgICAgIGlmKGJhbmJlbiA9PSAnbWFjJyl7CgogICAgICAgICAgICAgICAgJCgnLnhpYXphaW1vYmlsZScpLmZpbmQoJy53aW4nKS5hZGRDbGFzcygnbGF5dWktaGlkZScpOwoKICAgICAgICAgICAgICAgICQoJy54aWF6YWltb2JpbGUnKS5maW5kKCcubWFjJykucmVtb3ZlQ2xhc3MoJ2xheXVpLWhpZGUnKTsKCiAgICAgICAgICAgIH1lbHNlewoKICAgICAgICAgICAgICAgICQoJy54aWF6YWltb2JpbGUnKS5maW5kKCcud2luJykucmVtb3ZlQ2xhc3MoJ2xheXVpLWhpZGUnKTsKCiAgICAgICAgICAgICAgICAkKCcueGlhemFpbW9iaWxlJykuZmluZCgnLm1hYycpLmFkZENsYXNzKCdsYXl1aS1oaWRlJyk7CgogICAgICAgICAgICB9CgoKCiAgICAgICAgICAgIGxheWVyLm9wZW4oewoKICAgICAgICAgICAgICB0eXBlOiAxLAoKICAgICAgICAgICAgICB0aXRsZTogZmFsc2UsCgogICAgICAgICAgICAgIGNsb3NlQnRuOiAxLAoKICAgICAgICAgICAgICBhcmVhOiBbJzhyZW0nLCAnNC41cmVtJ10sCgogICAgICAgICAgICAgIGNvbnRlbnQ6ICQoJy54aWF6YWltb2JpbGUnKS5odG1sKCkKCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwoKICAgICAgICB9KTsKCgoKICAgICAgICBsYXl1aS51c2UoWydjeWNsZSddLCBmdW5jdGlvbihjeWNsZSkgewoKICAgICAgICAgICAgJCgnLnN1cHBvcnRNZW51TGlzdDEnKS5jeWNsZSh7CgogICAgICAgICAgICAgICAgJ2xvZyc6IGZhbHNlLAoKICAgICAgICAgICAgICAgICdzbGlkZXMnOiAnPiBsaScsCgogICAgICAgICAgICAgICAgJ2Z4JzogJ2Nhcm91c2VsJywKCiAgICAgICAgICAgICAgICAndGltZW91dCc6IDAsCgogICAgICAgICAgICAgICAgJ2Nhcm91c2VsRmx1aWQnOiAxLAoKICAgICAgICAgICAgICAgICdjYXJvdXNlbFZpc2libGUnOiAnMycsCgogICAgICAgICAgICAgICAgJ3ByZXYnOiAnLnN1cHBvcnRNZW51TGlzdFByZXYxJywKCiAgICAgICAgICAgICAgICAnbmV4dCc&#
154;ICcuc3VwcG9ydE1lbnVMaXN0TmV4dDEnLAoKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAkKCcuc3VwcG9ydE1lbnVMaXN0MicpLmN5Y2xlKHsKCiAgICAgICAgICAgICAgICAnbG9nJzogZmFsc2UsCgogICAgICAgICAgICAgICAgJ3NsaWRlcyc6ICc+IGxpJywKCiAgICAgICAgICAgICAgICAnZngnOiAnY2Fyb3VzZWwnLAoKICAgICAgICAgICAgICAgICd0aW1lb3V0JzogMCwKCiAgICAgICAgICAgICAgICAnY2Fyb3VzZWxGbHVpZCc6IDEsCgogICAgICAgICAgICAgICAgJ2Nhcm91c2VsVmlzaWJsZSc6ICczJywKCiAgICAgICAgICAgICAgICAncHJldic6ICcuc3VwcG9ydE1lbnVMaXN0UHJldjInLAoKICAgICAgICAgICAgICAgICduZXh0JzogJy5zdXBwb3J0TWVudUxpc3ROZXh0MicsCgogICAgICAgICAgICB9KTsKCiAgICAgICAgfSk7CgogICAgfQoKICAgIC8qKioqKioqKioqKioq5omL5py6IGVuZCoqKioqKioqKiovCgoKCiAgICAvKioqKioqKioqKioqKioqKipnYW9qaWFubGkuaHRtbCDpgInotK3kubDmqKHmnb8qKioqKioqKioqKioqKioqKioqKiovCgogICAgaWYobG9jYXRpb24ucGF0aG5hbWUgPT0gJy9nYW9qaWFubGkuaHRtbCcpewoKICAgICAgICBjYWxjX2dqYWxfY2hvc2VQcmljZSgpOyAKCiAgICB9CgoKCiAgICBmdW5jdGlvbiBjYWxjX2dqYWxfY2hvc2VQcmljZSgpIHsKCiAgICAgICAgdmFyIHNlbEFsbCA9IHRydWU7CgogICAgICAgIHZhciBzZWxQcmljZSA9IDA7CgoKCiAgICAgICAgJCgiW2xheS1maWx0ZXI9J2dqYWxNQiddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewoKICAgICAgICAgICAgICAgIHNlbFByaWNlICs9IHBhcnNlSW50KCQodGhpcykuYXR0cigncHJpY2UnKSk7CgogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIHNlbEFsbCA9IGZhbHNlOwoKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKCgoKICAgICAgICBpZiAoc2VsQWxsKSB7CgogICAgICAgICAgICBpZiAoJCgiW2xheS1maWx0ZXI9J2dqYWxNQmNob3NlJ10iKS5lcSgxKS5wcm9wKCdjaGVja2VkJykgPT0gZmFsc2UgfHwgJCgiW2xheS1maWx0ZXI9J2dqYWxNQmNob3NlJ10iKS5lcSgxKS5wcm9wKCdjaGVja2VkJyk9PXVuZGVmaW5lZCkgewoKICAgICAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdnamFsTUJjaG9zZSddIikuZXEoMCkucHJvcCgnY2hlY2tlZCcsIHRydWUpOwoKICAgICAgICAgICAgfQoKICAgICAgICB9ZWxzZXsKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdnamFsTUJjaG9zZSddIikucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKCiAgICAgICAgfQoKCgogICAgICAgICQoIltsYXktZmlsdGVyPSdnamFsTUJjaG9zZSddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewoKICAgICAgICAgICAgICAgIHNlbFByaWNlID0gcGFyc2VJbnQoJCh0aGlzKS5hdHRyKCdwcmljZScpKTsKCiAgICAgICAgICAgICAgICAkKCJbbmFtZT0nb2lkJ10iKS52YWwoJCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwoKCgogICAgICAgICQoJyNjaG9zZU1vbmV5JykuaHRtbChzZWxQcmljZSk7CgoKCiAgICAgICAgbGF5dWkuZm9ybS5yZW5kZXIoKTsKCiAgICB9CgoKCiAgICBsYXl1aS5mb3JtLm9uKCdjaGVja2JveChnamFsTUIpJywgZnVuY3Rpb24oZGF0YSkgewoKICAgICAgICBjYWxjX2dqYWxfY2hvc2VQcmljZSgpOwoKICAgIH0pOwoKCgogICAgbGF5dWkuZm9ybS5vbignY2hlY2tib3goZ2phbE1CY2hvc2UpJywgZnVuY3Rpb24oZGF0YSkge2NvbnNvbGUubG9nKDEpOwoKICAgICAgICBpZiAoZGF0YS5lbGVtLmNoZWNrZWQpIHsKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdnamFsTUJjaG9zZSddIikucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKCiAgICAgICAgICAgICQoZGF0YS5lbGVtKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7CgoKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdnamFsTUInXSIpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdnamFsTUInXSIpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CgogICAgICAgIH0KCgoKICAgICAgICBjYWxjX2dqYWxfY2hvc2VQcmljZSgpOwoKICAgIH0pOwoKCgogICAgbGF5dWkuZm9ybS5vbignc3VibWl0KGdqYWxnb3VtYWlNQiknLCBmdW5jdGlvbihkYXRhKSB7CgogICAgICAgIHZhci
1BmbGFnID0gZmFsc2U7CgogICAgICAgIHZhciBzY19pZF9hcnIgPSBbXTsKCiAgICAgICAgJCgiW2xheS1maWx0ZXI9J2dqYWxNQiddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewoKICAgICAgICAgICAgICAgIHNjX2lkX2Fyci5wdXNoKCQodGhpcykudmFsKCkpOwoKICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlOwoKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKCiAgICAgICAgaWYgKCFmbGFnKSB7CgogICAgICAgICAgICBsYXl1aS5sYXllci5tc2coJ+iHs+WwkemAieaLqeS4gOS4quaooeadv++8ge+8ge+8gScsIHsgaWNvbjogNSB9KTsKCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKCiAgICAgICAgfQoKCgogICAgICAgIHZhciBjb19wYXJhbXM7CgogICAgICAgIGlmKCQoIltsYXktZmlsdGVyPSdnamFsTUJjaG9zZSddIikuZXEoMCkucHJvcCgnY2hlY2tlZCcpKXsKCiAgICAgICAgICAgIC8vIOWFqOmAiS3lm7rlrprmkK3phY0t57qv57Sg5p2QCgogICAgICAgICAgICBjb19wYXJhbXMgPSB7CgogICAgICAgICAgICAgICAgd2ViZnJvbTozLAoKICAgICAgICAgICAgICAgIGlkOjIyODksCgogICAgICAgICAgICAgICAgZHBpZDowLAoKICAgICAgICAgICAgICAgIHJlbHNpZDowLAoKICAgICAgICAgICAgICAgIHNjZHBpZDowLAoKICAgICAgICAgICAgICAgIG51bToxCgogICAgICAgICAgICB9OwoKICAgICAgICB9ZWxzZSBpZigkKCJbbGF5LWZpbHRlcj0nZ2phbE1CY2hvc2UnXSIpLmVxKDEpLnByb3AoJ2NoZWNrZWQnKSl7CgogICAgICAgICAgICAvLyDlhajpgIkt5Zu65a6a5pCt6YWNLei9ryvntKAKCiAgICAgICAgICAgIGNvX3BhcmFtcyA9IHsKCiAgICAgICAgICAgICAgICB3ZWJmcm9tOjEsCgogICAgICAgICAgICAgICAgaWQ6MCwKCiAgICAgICAgICAgICAgICBkcGlkOjAsCgogICAgICAgICAgICAgICAgcmVsc2lkOjIyLAoKICAgICAgICAgICAgICAgIHNjZHBpZDowLAoKICAgICAgICAgICAgICAgIG51bToxCgogICAgICAgICAgICB9OwoKICAgICAgICB9ZWxzZXsKCiAgICAgICAgICAgIC8v6Ieq55Sx5pCt6YWNCgogICAgICAgICAgICBjb19wYXJhbXMgPSB7CgogICAgICAgICAgICAgICAgd2ViZnJvbTozLAoKICAgICAgICAgICAgICAgIGlkOnNjX2lkX2Fyci5qb2luKCcsJyksCgogICAgICAgICAgICAgICAgZHBpZDowLAoKICAgICAgICAgICAgICAgIHJlbHNpZDowLAoKICAgICAgICAgICAgICAgIHNjZHBpZDowLAoKICAgICAgICAgICAgICAgIG51bToxCgogICAgICAgICAgICB9OwoKICAgICAgICB9CgoKCiAgICAgICAgZ2V0T3JkZXJDaGVja2tleShjb19wYXJhbXMpOwoKCgogICAgfSk7CgoKCgoKICAgIC8qKioqKioqKioqKioqKioqKmJpeWVqaS5odG1sIOmAiei0reS5sOaooeadvyoqKioqKioqKioqKioqKioqKioqKi8KCiAgICBpZihsb2NhdGlvbi5wYXRobmFtZSA9PSAnL2JpeWVqaS5odG1sJyl7CgogICAgICAgIGNhbGNfY2hvc2VQcmljZSgpOwoKICAgIH0KCgoKICAgIGZ1bmN0aW9uIGNhbGNfY2hvc2VQcmljZSgpIHsKCiAgICAgICAgdmFyIHNlbEFsbCA9IHRydWU7CgogICAgICAgIHZhciBzZWxQcmljZSA9IDA7CgoKCiAgICAgICAgJCgiW25hbWU9J29pZCddIikudmFsKDE1Mjg3OTExMjEpOwoKCgogICAgICAgICQoIltsYXktZmlsdGVyPSdieWpNQiddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewoKICAgICAgICAgICAgICAgIHNlbFByaWNlICs9IHBhcnNlSW50KCQodGhpcykuYXR0cigncHJpY2UnKSk7CgogICAgICAgICAgICB9IGVsc2UgewoKICAgICAgICAgICAgICAgIHNlbEFsbCA9IGZhbHNlOwoKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKCgoKICAgICAgICBpZiAoc2VsQWxsKSB7CgogICAgICAgICAgICBpZiAoJCgiW2xheS1maWx0ZXI9J2J5ak1CY2hvc2UnXSIpLmVxKDEpLnByb3AoJ2NoZWNrZWQnKSA9PSBmYWxzZSkgewoKICAgICAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdieWpNQmNob3NlJ10iKS5lcSgwKS5wcm9wKCdjaGVja2VkJywgdHJ1ZSk7CgogICAgICAgICAgICB9CgogICAgICAgIH1lbHNlewoKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2J5ak1CY2hvc2UnXSIpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CgogICAgICAgIH0KCgoKICAgICAgICAkKCJbbGF5LWZpbHRlcj0nYnlqTUJjaG9zZSddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKS&#
1107;gewoKICAgICAgICAgICAgICAgIHNlbFByaWNlID0gcGFyc2VJbnQoJCh0aGlzKS5hdHRyKCdwcmljZScpKTsKCiAgICAgICAgICAgICAgICAkKCJbbmFtZT0nb2lkJ10iKS52YWwoJCh0aGlzKS52YWwoKSk7CgogICAgICAgICAgICB9CgogICAgICAgIH0pOwoKCgogICAgICAgICQoJyNjaG9zZU1vbmV5JykuaHRtbChzZWxQcmljZSk7CgoKCiAgICAgICAgbGF5dWkuZm9ybS5yZW5kZXIoKTsKCiAgICB9CgoKCiAgICBsYXl1aS5mb3JtLm9uKCdjaGVja2JveChieWpNQiknLCBmdW5jdGlvbihkYXRhKSB7CgogICAgICAgIGNhbGNfY2hvc2VQcmljZSgpOwoKICAgIH0pOwoKCgogICAgbGF5dWkuZm9ybS5vbignY2hlY2tib3goYnlqTUJjaG9zZSknLCBmdW5jdGlvbihkYXRhKSB7CgogICAgICAgIGlmIChkYXRhLmVsZW0uY2hlY2tlZCkgewoKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2J5ak1CY2hvc2UnXSIpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CgogICAgICAgICAgICAkKGRhdGEuZWxlbSkucHJvcCgnY2hlY2tlZCcsIHRydWUpOwoKCgogICAgICAgICAgICAkKCJbbGF5LWZpbHRlcj0nYnlqTUInXSIpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSdieWpNQiddIikucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKCiAgICAgICAgfQoKCgogICAgICAgIGNhbGNfY2hvc2VQcmljZSgpOwoKICAgIH0pOwoKCgogICAgbGF5dWkuZm9ybS5vbignc3VibWl0KGdvdW1haU1CKScsIGZ1bmN0aW9uKGRhdGEpIHsKCiAgICAgICAgdmFyIGZsYWcgPSBmYWxzZTsKCiAgICAgICAgdmFyIHNjX2lkX2FyciA9IFtdOwoKICAgICAgICAkKCJbbGF5LWZpbHRlcj0nYnlqTUInXSIpLmVhY2goZnVuY3Rpb24oKSB7CgogICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKCdjaGVja2VkJykpIHsKCiAgICAgICAgICAgICAgICBzY19pZF9hcnIucHVzaCgkKHRoaXMpLnZhbCgpKTsKCiAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfSk7CgogICAgICAgIGlmICghZmxhZykgewoKICAgICAgICAgICAgbGF5dWkubGF5ZXIubXNnKCfoh7PlsJHpgInmi6nkuIDkuKrmqKHmnb/vvIHvvIHvvIEnLCB7IGljb246IDUgfSk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIH0KCgoKICAgICAgICB2YXIgY29fcGFyYW1zOwoKICAgICAgICBpZigkKCJbbGF5LWZpbHRlcj0nYnlqTUJjaG9zZSddIikuZXEoMCkucHJvcCgnY2hlY2tlZCcpKXsKCiAgICAgICAgICAgIC8vIOWFqOmAiS3lm7rlrprmkK3phY0t57qv57Sg5p2QCgogICAgICAgICAgICBjb19wYXJhbXMgPSB7CgogICAgICAgICAgICAgICAgd2ViZnJvbTozLAoKICAgICAgICAgICAgICAgIGlkOjIyNjEsCgogICAgICAgICAgICAgICAgZHBpZDowLAoKICAgICAgICAgICAgICAgIHJlbHNpZDowLAoKICAgICAgICAgICAgICAgIHNjZHBpZDowLAoKICAgICAgICAgICAgICAgIG51bToxCgogICAgICAgICAgICB9OwoKICAgICAgICB9ZWxzZSBpZigkKCJbbGF5LWZpbHRlcj0nYnlqTUJjaG9zZSddIikuZXEoMSkucHJvcCgnY2hlY2tlZCcpKXsKCiAgICAgICAgICAgIC8vIOWFqOmAiS3lm7rlrprmkK3phY0t6L2vK+e0oAoKICAgICAgICAgICAgY29fcGFyYW1zID0gewoKICAgICAgICAgICAgICAgIHdlYmZyb206MSwKCiAgICAgICAgICAgICAgICBpZDowLAoKICAgICAgICAgICAgICAgIGRwaWQ6MCwKCiAgICAgICAgICAgICAgICByZWxzaWQ6MjIsCgogICAgICAgICAgICAgICAgc2NkcGlkOjAsCgogICAgICAgICAgICAgICAgbnVtOjEKCiAgICAgICAgICAgIH07CgogICAgICAgIH1lbHNlewoKICAgICAgICAgICAgLy/oh6rnlLHmkK3phY0KCiAgICAgICAgICAgIGNvX3BhcmFtcyA9IHsKCiAgICAgICAgICAgICAgICB3ZWJmcm9tOjMsCgogICAgICAgICAgICAgICAgaWQ6c2NfaWRfYXJyLmpvaW4oJywnKSwKCiAgICAgICAgICAgICAgICBkcGlkOjAsCgogICAgICAgICAgICAgICAgcmVsc2lkOjAsCgogICAgICAgICAgICAgICAgc2NkcGlkOjAsCgogICAgICAgICAgICAgICAgbnVtOjEKCiAgICAgICAgICAgIH07CgogICAgICAgIH0KCgoKICAgICAgICBnZXRPcmRlckNoZWNra2V5KGNvX3BhcmFtcyk7CgoKCiAgICB9KTsKCgoKICAgIC8qKioqKioqKioqKioqKnpodWFueGlhbmcuaHRtbCDpgInotK3kubDmqKHmnb8gc3RhcnQqKioqKioqKioqKioqKioqKioqKi8KCgoKICAgIGlmKGxvY2F0aW9uLnBhdGhuYW1lID09ICcvemh1YW54aWFuZy5odG1sJyl&#55
1;CgogICAgICAgIGNhbGNfY2hvc2VQcmljZV96aHVhbnhpYW5nKCk7CgogICAgfQoKCgogICAgZnVuY3Rpb24gY2FsY19jaG9zZVByaWNlX3podWFueGlhbmcoKSB7CgogICAgICAgIHZhciBzZWxBbGwgPSB0cnVlOwoKICAgICAgICB2YXIgc2VsUHJpY2UgPSAwOwoKICAgICAgICB2YXIgb2xkX3ByaWNlID0gMDsKCgoKICAgICAgICAkKCJbbmFtZT0nb2lkJ10iKS52YWwoMTUzMTMwMDUyNik7CgoKCiAgICAgICAgJCgiW2xheS1maWx0ZXI9J3podWFueGlhbmdNQiddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewoKICAgICAgICAgICAgICAgIHNlbFByaWNlICs9IHBhcnNlSW50KCQodGhpcykuYXR0cigncHJpY2UnKSk7CgogICAgICAgICAgICAgICAgb2xkX3ByaWNlICs9IHBhcnNlSW50KCQodGhpcykuYXR0cignb2xkX3ByaWNlJykpOwoKICAgICAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICAgICBzZWxBbGwgPSBmYWxzZTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfSk7CgoKCiAgICAgICAgaWYgKHNlbEFsbCkgewoKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2FsbFpodWFueGlhbmdNQiddIikucHJvcCgnY2hlY2tlZCcsIHRydWUpOwoKICAgICAgICAgICAgJCgiW25hbWU9J29pZCddIikudmFsKDE1MzEzMDA1MjYpOwoKICAgICAgICAgICAgc2VsUHJpY2UgPSAxOTk7CgogICAgICAgIH1lbHNlewoKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2FsbFpodWFueGlhbmdNQiddIikucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTsKCiAgICAgICAgICAgICQoIltuYW1lPSdvaWQnXSIpLnZhbCgxNTMxMjk4MjMwKTsKCiAgICAgICAgfQoKCgogICAgICAgICQoJyNjaG9zZU1vbmV5JykuaHRtbChzZWxQcmljZSk7CgogICAgICAgICQoJyNvbGRNb25leScpLmh0bWwob2xkX3ByaWNlKTsKCgoKICAgICAgICBsYXl1aS5mb3JtLnJlbmRlcigpOwoKICAgIH0KCgoKICAgIGxheXVpLmZvcm0ub24oJ2NoZWNrYm94KHpodWFueGlhbmdNQiknLCBmdW5jdGlvbihkYXRhKSB7CgogICAgICAgIGNhbGNfY2hvc2VQcmljZV96aHVhbnhpYW5nKCk7CgogICAgfSk7CgoKCiAgICBsYXl1aS5mb3JtLm9uKCdjaGVja2JveChhbGxaaHVhbnhpYW5nTUIpJywgZnVuY3Rpb24oZGF0YSkgewoKICAgICAgICBpZiAoZGF0YS5lbGVtLmNoZWNrZWQpIHsKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSd6aHVhbnhpYW5nTUInXSIpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKCiAgICAgICAgfSBlbHNlIHsKCiAgICAgICAgICAgICQoIltsYXktZmlsdGVyPSd6aHVhbnhpYW5nTUInXSIpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CgogICAgICAgIH0KCgoKICAgICAgICBjYWxjX2Nob3NlUHJpY2Vfemh1YW54aWFuZygpOwoKICAgIH0pOwoKCgogICAgbGF5dWkuZm9ybS5vbignc3VibWl0KGdvdW1haVpodWFueGlhbmdNQiknLCBmdW5jdGlvbihkYXRhKSB7CgogICAgICAgIHZhciBmbGFnID0gZmFsc2U7CgogICAgICAgIHZhciBzY19pZF9hcnIgPSBbXTsKCiAgICAgICAgJCgiW2xheS1maWx0ZXI9J3podWFueGlhbmdNQiddIikuZWFjaChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewoKICAgICAgICAgICAgICAgIHNjX2lkX2Fyci5wdXNoKCQodGhpcykudmFsKCkpOyAgICAKCiAgICAgICAgICAgICAgICBmbGFnID0gdHJ1ZTsKCiAgICAgICAgICAgIH0KCiAgICAgICAgfSk7CgogICAgICAgIGlmICghZmxhZykgewoKICAgICAgICAgICAgbGF5dWkubGF5ZXIubXNnKCfoh7PlsJHpgInmi6nkuIDkuKrmqKHmnb/vvIHvvIHvvIEnLCB7IGljb246IDUgfSk7CgogICAgICAgICAgICByZXR1cm4gZmFsc2U7CgogICAgICAgIH0KCiAgICAgICAgCgogICAgICAgIHZhciBjb19wYXJhbXM7CgogICAgICAgIGlmKCQoIltsYXktZmlsdGVyPSdhbGxaaHVhbnhpYW5nTUInXSIpLnByb3AoJ2NoZWNrZWQnKSl7CgogICAgICAgICAgICAvLyDlhajpgIkt5Zu65a6a5pCt6YWNCgogICAgICAgICAgICBjb19wYXJhbXMgPSB7CgogICAgICAgICAgICAgICAgd2ViZnJvbTozLAoKICAgICAgICAgICAgICAgIGlkOjIzMTksCgogICAgICAgICAgICAgICAgZHBpZDowLAoKICAgICAgICAgICAgICAgIHJlbHNpZDowLAoKICAgICAgICAgICAgICAgIHNjZHBpZDowLAoKICAgICAgICAgICAgICAgIG51bToxCgogICAgICAgICAgICB9OwoKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgdmFyIHdfYXJyID0gW107CiAgICAgICAgICAgIHZhci&#
166;uX2FyciA9IFtdOwogICAgICAgICAgICAvL+iHqueUseaQremFjQogICAgICAgICAgICBmb3IodmFyIGk9MDtpPHNjX2lkX2Fyci5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgICAgIHdfYXJyLnB1c2goMyk7CiAgICAgICAgICAgICAgICBuX2Fyci5wdXNoKDEpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBjb19wYXJhbXMgPSB7CgogICAgICAgICAgICAgICAgd2ViZnJvbTp3X2Fyci5qb2luKCd8JyksCgogICAgICAgICAgICAgICAgaWQ6c2NfaWRfYXJyLmpvaW4oJ3wnKSwKCiAgICAgICAgICAgICAgICBkcGlkOjAsCgogICAgICAgICAgICAgICAgcmVsc2lkOjAsCgogICAgICAgICAgICAgICAgc2NkcGlkOjAsCgogICAgICAgICAgICAgICAgbnVtOm5fYXJyLmpvaW4oJ3wnKQoKICAgICAgICAgICAgfTsKCiAgICAgICAgfQoKCgogICAgICAgIGdldE9yZGVyQ2hlY2trZXkoY29fcGFyYW1zKTsKCiAgICB9KTsKCiAgICAvKioqKioqKioqKioqKip6aHVhbnhpYW5nLmh0bWwg6YCJ6LSt5Lmw5qih5p2/IGVuZCoqKioqKioqKioqKioqKioqKioqLwoKICAgIC8qKioqKioqKioqKioqKm11YmFuLmh0bWwg6YCJ6LSt5Lmw5qih5p2/IHN0YXJ0KioqKioqKioqKioqKioqKioqKiovCgogICAgaWYobG9jYXRpb24ucGF0aG5hbWUgPT0gJy9tdWJhbnN1Y2FpLmh0bWwnKXsKICAgICAgICBjYWxjX2Nob3NlUHJpY2VfbXViYW4oKTsKICAgIH0gICAgCiAgICAKICAgIGZ1bmN0aW9uIGNhbGNfY2hvc2VQcmljZV9tdWJhbigpIHsKICAgICAgICB2YXIgc2VsQWxsID0gdHJ1ZTsKICAgICAgICB2YXIgc2VsUHJpY2UgPSAwOwogICAgICAgIC8vICQoIltuYW1lPSdvaWQnXSIpLnZhbCgxNTMxMzAwNTI2KTsKICAgICAgICAkKCJbbGF5LWZpbHRlcj0nZ2FvamlNQiddIikuZWFjaChmdW5jdGlvbigpIHsKICAgICAgICAgICAgaWYgKCQodGhpcykucHJvcCgnY2hlY2tlZCcpKSB7CiAgICAgICAgICAgICAgICBzZWxQcmljZSArPSBwYXJzZUludCgkKHRoaXMpLmF0dHIoJ3ByaWNlJykpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgc2VsQWxsID0gZmFsc2U7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKCiAgICAgICAgaWYgKHNlbEFsbCkgewogICAgICAgICAgICAkKCJbbGF5LWZpbHRlcj0nYWxsR2FvSmlNQiddIikucHJvcCgnY2hlY2tlZCcsIHRydWUpOwogICAgICAgICAgICAvLyAkKCJbbmFtZT0nb2lkJ10iKS52YWwoMTUzMTMwMDUyNik7CiAgICAgICAgICAgIC8vIOaJk+WMheS7twogICAgICAgICAgICAvLyBzZWxQcmljZSA9IDE1OTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2FsbEdhb0ppTUInXSIpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CiAgICAgICAgICAgIC8vICQoIltuYW1lPSdvaWQnXSIpLnZhbCgxNTMxMjk4MjMwKTsKICAgICAgICB9CiAgICAgICAgCiAgICAgICAgaWYoICQoIltsYXktZmlsdGVyPSdwYWNrYWdlTUInXSIpLnByb3AoImNoZWNrZWQiKSApewogICAgICAgICAgICBsZXQgbnVtID0gcGFyc2VJbnQoICQoIltwcmljZU51bTFdIikudGV4dCgpKTsKICAgICAgICAgICAgc2VsUHJpY2UgKz0gcGFyc2VJbnQobnVtKTsKICAgICAgICB9CgogICAgICAgIGlmKCAkKCJbbGF5LWZpbHRlcj0nMjAxOVFKJ10iKS5wcm9wKCJjaGVja2VkIikgKXsKICAgICAgICAgICAgbGV0IG51bSA9IHBhcnNlSW50KCAkKCJbbGF5LWZpbHRlcj0nMjAxOVFKJ10iKS5hdHRyKCdwcmljZU51bTUnKSApOwogICAgICAgICAgICBzZWxQcmljZSArPSBwYXJzZUludChudW0pOwogICAgICAgIH0KCiAgICAgICAgaWYoICQoIltsYXktZmlsdGVyPScyMDE5WlknXSIpLnByb3AoImNoZWNrZWQiKSApewogICAgICAgICAgICBsZXQgbnVtID0gcGFyc2VJbnQoICQoIltsYXktZmlsdGVyPScyMDE5WlknXSIpLmF0dHIoJ3ByaWNlTnVtNCcpICk7CiAgICAgICAgICAgIHNlbFByaWNlICs9IHBhcnNlSW50KG51bSk7CiAgICAgICAgfQoKICAgICAgICAkKCcjY2hvc2VNb25leScpLmh0bWwoc2VsUHJpY2UpOwogICAgICAgIGxheXVpLmZvcm0ucmVuZGVyKCk7CiAgICB9CiAgICAvLyDotK3kubDntKDmnZDnpLzljIUKICAgICQoIltsYXktZmlsdGVyPSdwYWNrYWdlTUJCdG4nXSIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgY29fcGFyYW1zID0gewogICAgICAgICAgICB3ZWJmcm9tOiczfDN8MycsCiAgICAgICAgICAgIGlkOicyMzM1fDIzMzZ8MjMzNycsCiAgICAgICAgICAgIGRwaWQ6MCwKICAgICAgICAgICAgcmVsc2lkOjAsCiAgICAgICAgICAgIHNjZHBpZDowLAogICAgICAgICAg&
1#73;CBudW06JzF8MXwxJwogICAgICAgIH07CiAgICAgICAgZ2V0T3JkZXJDaGVja2tleShjb19wYXJhbXMpOwogICAgfSkKICAgIC8vIOWNleS4quaooeadv+eCueWHuwogICAgJCgiW2xheS1maWx0ZXI9J2dhb2ppTUInXSIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgY2FsY19jaG9zZVByaWNlX211YmFuKCk7CiAgICB9KQogICAgLy8g5omT5YyF6auY57qn57Sg5p2QIOWFqOmAiQogICAgJCgiW2xheS1maWx0ZXI9J2FsbEdhb0ppTUInXSIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgbGV0IGZsYWcgPSAkKHRoaXMpLnByb3AoImNoZWNrZWQiKTsKICAgICAgICBpZihmbGFnKXsKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2dhb2ppTUInXSIpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTsKICAgICAgICB9ZWxzZXsKICAgICAgICAgICAgJCgiW2xheS1maWx0ZXI9J2dhb2ppTUInXSIpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7CiAgICAgICAgfQogICAgICAgIGNhbGNfY2hvc2VQcmljZV9tdWJhbigpOwogICAgfSkKICAgIC8vIOWLvumAieekvOWMhee0oOadkAogICAgJCgiW2xheS1maWx0ZXI9J3BhY2thZ2VNQiddIikuY2hhbmdlKGZ1bmN0aW9uKCl7CiAgICAgICAgbGV0IGZsYWcgPSAkKHRoaXMpLnByb3AoImNoZWNrZWQiKTsKICAgICAgICBsZXQgcHJpY2UgPSBwYXJzZUludCggJCgnI2Nob3NlTW9uZXknKS50ZXh0KCkgKTsKICAgICAgICBsZXQgbnVtID0gcGFyc2VJbnQoICQoIltwcmljZU51bTFdIikudGV4dCgpKTsKICAgICAgICBpZihmbGFnKXsKICAgICAgICAgICAgcHJpY2UgKz0gbnVtOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBwcmljZSAtPSBudW07CiAgICAgICAgfQogICAgICAgIGlmKHByaWNlIDwgMCl7CiAgICAgICAgICAgIHByaWNlID0gMDsKICAgICAgICB9CiAgICAgICAgJCgnI2Nob3NlTW9uZXknKS5odG1sKHByaWNlKTsKICAgICAgICAvLyBjYWxjX2Nob3NlUHJpY2VfbXViYW4oKTsKICAgIH0pCiAgICAvLyDli7
17pgIkyMDE55peX6Iiw54mICiAgICAkKCJbbGF5LWZpbHRlcj0nMjAxOVFKJ10iKS5jaGFuZ2UoZnVuY3Rpb24oKXsKICAgICAgICBsZXQgZmxhZyA9ICQodGhpcykucHJvcCgiY2hlY2tlZCIpOwogICAgICAgIGxldCBwcmljZSA9IHBhcnNlSW50KCAkKCcjY2hvc2VNb25leScpLnRleHQoKSApOwogICAgICAgIGxldCBudW0gPSBwYXJzZUludCggJCh0aGlzKS5hdHRyKCdwcmljZU51bTUnKSApOwogICAgICAgIGlmKGZsYWcpewogICAgICAgICAgICBwcmljZSArPSBwYXJzZUludChudW0pOwogICAgICAgIH1lbHNlewogICAgICAgICAgICBwcmljZSAtPSBwYXJzZUludChudW0pOwogICAgICAgIH0KICAgICAgICBpZihwcmljZSA8IDApewogICAgICAgICAgICBwcmljZSA9IDA7CiAgICAgICAgfQogICAgICAgICQoJyNjaG9zZU1vbmV5JykuaHRtbChwcmljZSApOwogICAgICAgIC8vIGNhbGNfY2hvc2VQcmljZV9tdWJhbigpOwogICAgfSkKICAgIC8vIOWLvumAiTIwMTnkuJPkuJrniYgKICAgICQoIltsYXktZmlsdGVyPScyMDE5WlknXSIpLmNoYW5nZShmdW5jdGlvbigpewogICAgICAgIGxldCBmbGFnID0gJCh0aGlzKS5wcm9wKCJjaGVja2VkIik7CiAgICAgICAgbGV0IHByaWNlID0gcGFyc2VJbnQoICQoJyNjaG9zZU1vbmV5JykudGV4dCgpICk7CiAgICAgICAgbGV0IG51bSA9IHBhcnNlSW50KCAkKHRoaXMpLmF0dHIoJ3ByaWNlTnVtNCcpICk7CiAgICAgICAgaWYoZmxhZyl7CiAgICAgICAgICAgIHByaWNlICs9IHBhcnNlSW50KG51bSk7CiAgICAgICAgfWVsc2V7CiAgICAgICAgICAgIHByaWNlIC09IHBhcnNlSW50KG51bSk7CiAgICAgICAgfQogICAgICAgIGlmKHByaWNlIDwgMCl7CiAgICAgICAgICAgIHByaWNlID0gMDsKICAgICAgICB9CiAgICAgICAgJCgnI2Nob3NlTW9uZXknKS5odG1sKHByaWNlICk7CiAgICAgICAgLy8gY2FsY19jaG9zZVByaWNlX211YmFuKCk7CiAgICB9KQogICAgLy8g6LSt5LmwCiAgICAkKCJbbGF5LWZpbHRlcj0nZ291bWFpTUJTQyddIikuY2xpY2soZnVuY3Rpb24oKXsKICAgICAgICB2YXIgZmxhZyA9IGZhbHNlOwogICAgICAgIHZhciBzY19pZF9hcnIgPSBbXTsKCiAgICAgICAgJCgiW2xheS1maWx0ZXI9J2dhb2ppTUInXSIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewogICAgICAgICAgICAgICAgc2NfaWRfYXJyLnB1c2goJCh0aGlzKS52YWwoKSk7ICAgIAogICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICBpZiggJCgiW2xheS1maWx0ZXI9J3BhY2thZ2VNQiddIikucHJvcCgiY2hlY2tlZCIpIHx8ICQoIltsYXktZmlsdGVyPScyMDE5WlknXSIpLnByb3AoImNoZWNrZWQiKSB8fCAkKCJbbGF5LWZpbHRlcj0nMjAxOVFKJ10iKS5wcm9wKCJjaGVja2VkIikgKXsKICAgICAgICAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgfQogICAgICAgIGlmICghZmxhZykgewogICAgICAgICAgICBsYXl1aS5sYXllci5tc2coJ+iHs+WwkemAieaLqeS4gOS4quWVhuWTge+8ge+8ge+8gScsIHsgaWNvbjogNSB9KTsKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIH0KICAgICAgICB2YXIgY29fcGFyYW1zOwoKICAgICAgICB2YXIgd19hcnIgPSBbXTsKICAgICAgICB2YXIgbl9hcnIgPSBbXTsKICAgICAgICBmb3IodmFyIGk9MDtpPHNjX2lkX2Fyci5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgd19hcnIucHVzaCgzKTsKICAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICB9CiAgICAgICAgLy8g5qOA5rWLIOekvOWMhee0oOadkCAyMDE5IOaYr+WQpuWLvumAiQogICAgICAgIGlmKCAkKCJbbGF5LWZpbHRlcj0ncGFja2FnZU1CJ10iKS5wcm9wKCJjaGVja2VkIikgKXsKICAgICAgICAgICAgd19hcnIucHVzaCgzKTsKICAgICAgICAgICAgd19hcnIucHVzaCgzKTsKICAgICAgICAgICAgd19hcnIucHVzaCgzKTsKICAgICAgICAgICAgc2NfaWRfYXJyLnB1c2goMjMzNSk7CiAgICAgICAgICAgIHNjX2lkX2Fyci5wdXNoKDIzMzYpOwogICAgICAgICAgICBzY19pZF9hcnIucHVzaCgyMzM3KTsKICAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICB9CiAgICAgICAgaWYoICQoIltsYXktZmlsdGVyPScyMDE5WlknXSIpLnByb3AoImNoZWNrZWQiKSApewogICAgICAgICAgICB3X2Fyci5wdXNoKDEpOwogICAgICAgICAgICBzY19pZF9hcnIucHVzaCgyMTg0KTsK&#
173;CAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICB9CiAgICAgICAgaWYoICQoIltsYXktZmlsdGVyPScyMDE5UUonXSIpLnByb3AoImNoZWNrZWQiKSApewogICAgICAgICAgICB3X2Fyci5wdXNoKDEpOwogICAgICAgICAgICBzY19pZF9hcnIucHVzaCgyMjE3KTsKICAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICB9CiAgICAgICAgY29fcGFyYW1zID0gewogICAgICAgICAgICB3ZWJmcm9tOndfYXJyLmpvaW4oJ3wnKSwKICAgICAgICAgICAgaWQ6c2NfaWRfYXJyLmpvaW4oJ3wnKSwKICAgICAgICAgICAgZHBpZDowLAogICAgICAgICAgICByZWxzaWQ6MCwKICAgICAgICAgICAgc2NkcGlkOjAsCiAgICAgICAgICAgIG51bTpuX2Fyci5qb2luKCd8JykKICAgICAgICB9OwoKICAgICAgICBnZXRPcmRlckNoZWNra2V5KGNvX3BhcmFtcyk7CiAgICB9KQoKICAgIC8qKioqKioqKioqKioqKm11YmFuLmh0bWwg6YCJ6LSt5Lmw5qih5p2/IGVuZCoqKioqKioqKioqKioqKioqKioqLwoKCiAgICAvKioqKioqKioqKiDlkajkuInkvJrlkZjml6UgIOe0oOadkC3mlZnnqIsg6LSt5LmwIGJlZ2luICoqKioqKioqKiovCiAgICBsYXl1aS5mb3JtLm9uKCdzdWJtaXQoZ291bWFpc3VjYWkpJywgZnVuY3Rpb24oZGF0YSkgewogICAgICAgIHZhciBmbGFnID0gZmFsc2U7CiAgICAgICAgdmFyIHNjX2lkX2FyciA9IFtdOwogICAgICAgICQoIltsYXktZmlsdGVyPSd2aXBfc3VjYWknXSIpLmVhY2goZnVuY3Rpb24oKSB7CiAgICAgICAgICAgIGlmICgkKHRoaXMpLnByb3AoJ2NoZWNrZWQnKSkgewogICAgICAgICAgICAgICAgc2NfaWRfYXJyLnB1c2goJCh0aGlzKS52YWwoKSk7ICAgIAogICAgICAgICAgICAgICAgZmxhZyA9IHRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9KTsKICAgICAgICB2YXIgY29fcGFyYW1zOwoKICAgICAgICB2YXIgd19hcnIgPSBbXTsKICAgICAgICB2YXIgbl9hcnIgPSBbXTsKICAgICAgICBmb3IodmFyIGk9MDtpPHNjX2lkX2Fyci5sZW5ndGg7aSsrKXsKICAgICAgICAgICAgd19hcnIucHVzaCgzKTsKICAgICAgICAgICAgbl9hcnIucHVzaCgxKTsKICAgICAgICB9CiAgICAgICAgY29fcGFyYW1zID0gewogICAgICAgICAgICB3ZWJmcm9tOndfYXJyLmpvaW4oJ3wnKSwKICAgICAgICAgICAgaWQ6c2NfaWRfYXJyLmpvaW4oJ3wnKSwKICAgICAgICAgICAgZHBpZDowLAogICAgICAgICAgICByZWxzaWQ6MCwKICAgICAgICAgICAgc2NkcGlkOjAsCiAgICAgICAgICAgIG51bTpuX2Fyci5qb2luKCd8JykKICAgICAgICB9OwogICAgICAgIGdldE9yZGVyQ2hlY2trZXkoY29fcGFyYW1zKTsKICAgIH0pOwoKICAgIGxheXVpLmZvcm0ub24oJ3N1Ym1pdChnb3VtYWlqaWFvY2hlbmcpJywgZnVuY3Rpb24oZGF0YSkgewogICAgICAgIHZhciBmbGFnID0gZmFsc2U7CiAgICAgICAgdmFyIHNjX2lkX2FyciA9IFtdOwogICAgICAgICQoIltsYXktZmlsdGVyPSd2aXBfamlhb2NoZW5nJ10iKS5lYWNoKGZ1bmN0aW9uKCkgewogICAgICAgICAgICBpZiAoJCh0aGlzKS5wcm9wKCdjaGVja2VkJykpIHsKICAgICAgICAgICAgICAgIHNjX2lkX2Fyci5wdXNoKCQodGhpcykudmFsKCkpOyAgICAKICAgICAgICAgICAgICAgIGZsYWcgPSB0cnVlOwogICAgICAgICAgICB9CiAgICAgICAgfSk7CiAgICAgICAgdmFyIGNvX3BhcmFtczsKCiAgICAgICAgdmFyIHdfYXJyID0gW107CiAgICAgICAgdmFyIG5fYXJyID0gW107CiAgICAgICAgZm9yKHZhciBpPTA7aTxzY19pZF9hcnIubGVuZ3RoO2krKyl7CiAgICAgICAgICAgIHdfYXJyLnB1c2goMyk7CiAgICAgICAgICAgIG5fYXJyLnB1c2goMSk7CiAgICAgICAgfQogICAgICAgIGNvX3BhcmFtcyA9IHsKICAgICAgICAgICAgd2ViZnJvbTp3X2Fyci5qb2luKCd8JyksCiAgICAgICAgICAgIGlkOnNjX2lkX2Fyci5qb2luKCd8JyksCiAgICAgICAgICAgIGRwaWQ6MCwKICAgICAgICAgICAgcmVsc2lkOjAsCiAgICAgICAgICAgIHNjZHBpZDowLAogICAgICAgICAgICBudW06bl9hcnIuam9pbignfCcpCiAgICAgICAgfTsKICAgICAgICBnZXRPcmRlckNoZWNra2V5KGNvX3BhcmFtcyk7CiAgICB9KTsKICAgIC8qKioqKioqKioqIOWRqOS4ieS8muWRmOaXpSAg57Sg5p2QLeaVmeeoiyDotK3kubAgZW5kICoqKioqKioqKiovCgoKICAgICQoJy5pbmRleFNUQm94JykuaG92ZXIoZnVuY3Rpb24oKXsKCiAgICAgICAgJCh0aGlzKS5maW5kKCcuaW5kZXhTVCcpLmF0dHIoJ3NyYycsICdodHRwOi8vcGljLm1haXJ1YW4uY29tL2h1aXNoZW5naHVpeWluZy9wZWl4dW4vaW5kZXh
1TVF9oLnBuZycpOwoKICAgIH0sZnVuY3Rpb24oKXsKCiAgICAgICAgJCh0aGlzKS5maW5kKCcuaW5kZXhTVCcpLmF0dHIoJ3NyYycsICdodHRwOi8vcGljLm1haXJ1YW4uY29tL2h1aXNoZW5naHVpeWluZy9wZWl4dW4vaW5kZXhTVC5wbmcnKTsKCiAgICB9KTsKCgoKICAgICQoJy5pbmRleFNUQm94JykuY2xpY2soZnVuY3Rpb24oKXsKCiAgICAgICAgbW9kYWxfdmlkZW8oJCh0aGlzKS5hdHRyKCd2aWRlbycpKTsKCiAgICB9KTsKCiAgICAKICAgIC8vIOaVmeWtpumhtSDlt6bkvqfoj5zljZXmu5HliqjlrprkvY0KICAgICQoIi5qaWFveHVlTWFpbiAubGVmdCBsaSIpLmNsaWNrKGZ1bmN0aW9uKCl7CiAgICAgICAgJCh0aGlzKS5zaWJsaW5ncygpLnJlbW92ZUNsYXNzKCJhY3RpdmUiKTsKICAgICAgICAkKHRoaXMpLmFkZENsYXNzKCJhY3RpdmUiKTsKCiAgICAgICAgbGV0IGluZGV4ID0gJCh0aGlzKS5pbmRleCgpOwogICAgICAgIGxldCBlbGUgPSAkKCIuamlhb3h1ZU1haW4gLnJpZ2h0IC50aXRsZSIpLmVxKCBpbmRleCApOwogICAgICAgIGxldCB0b3AgPSBlbGUub2Zmc2V0KCkudG9wOwogICAgICAgICQoImh0bWwsYm9keSIpLmFuaW1hdGUoewogICAgICAgICAgICBzY3JvbGxUb3A6IHRvcCAtIDYwCiAgICAgICAgfSwgMTAwMCk7CiAgICB9KTsKfSk7CgoKJChmdW5jdGlvbigpIHsKICAgIC8vIOeCueWHu+WNs+WIu+aKoui0rQogICAgJCgnLmhoc3NqMTkwNzE2ICNzc2pUb05ld2J1eUJ0bicpLmNsaWNrKGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgaWYoJCgnLmhoc3NqMTkwNzE2IC5jb3ZlcicpLmxlbmd0aD4wKXsKICAgICAgICAgICAgJCgnLmhoc3NqMTkwNzE2IC5jb3ZlcicpLmZhZGVJbignZmFzdCcpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB2YXIgdHJ1ZW5hbWUgPSAkKCcuaGhzc2oxOTA3MTYgW25hbWU9InRydWVuYW1lIl0nKS52YWwoKTsKICAgICAgICB2YXIgZW1haWwgPSAkKCcuaGhzc2oxOTA3MTYgW25hbWU9ImVtYWlsIl0nKS52YWwoKTsKICAgICAgICB2YXIgcGhvbmUgPSAkKCcuaGhzc2oxOTA3MTYgW25hbWU9InBob25lIl0nKS52YWwoKTsKICAgICAgICB2YXIgbGlkID0gJCgnLmhoc3NqMTkwNzE2IFtuYW1lPSJsaWQiXScpLnZhbCgpOwoKICAgICAgICBpZighdHJ1ZW5hbWUpewogICAgICAgICAgICBsYXllci5tc2coJ+ivt+WujOWWhOWnk+WQjScpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfWVsc2UgaWYoIS9eLitAW2EtejAtOV0rXC5bYS16XXsyLDR9JC8udGVzdChlbWFpbCkpewogICAgICAgICAgICBsYXllci5tc2coJ+ivt+i+k+WFpeato+ehrueahOmCrueusScpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfWVsc2UgaWYoIS9eMVsxLTldWzAtOV17OX0kLy50ZXN0KHBob25lKSl7CiAgICAgICAgICAgIGxheWVyLm1zZygn6K+36L6T5YWl5q2j56Gu55qE5omL5py65Y+356CBJyk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9ZWxzZSBpZighbGlkKXsKICAgICAgICAgICAgbGF5ZXIubXNnKCfllK7ljZZpZOmUmeivrycpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQoKICAgICAgICB3aW5kb3cub3BlbignL25ld2J1eS5odG1sP29ubGluZWlkPScrbGlkKycmdHJ1ZU5hbWU9Jyt0cnVlbmFtZSsnJmVtYWlsPScrZW1haWwrJyZwaG9uZT0nK3Bob25lKTsKICAgIH0pOwoKICAgIC8vIOmakOiXj+W3suaKouWFieW8ueeqlwogICAgJCgnLmhoc3NqMTkwNzE2IC5oaWRlU2hvdXFpbmdCdG4nKS5jbGljayhmdW5jdGlvbihldmVudCkgewogICAgICAgICQodGhpcykuY2xvc2VzdCgnLmNvdmVyJykuZmFkZU91dCgnZmFzdCcpOwogICAgfSk7CgogICAgLy8gYmFubmVyIOa3u+WKoOWUrue9hOWbvuaghwogICAgaWYoJCgnLmhoc3NqMTkwNzE2IC5jb3ZlcicpLmxlbmd0aD4wKXsKICAgICAgICAkKCcuaGhzc2oxOTA3MTYgLmJhbm5lcicpLmFwcGVuZCgnPGltZyBjbGFzcz0icGEgYjEwMCIgc3R5bGU9ImxlZnQ6NTAlO21hcmdpbi1sZWZ0OjI4MHB4OyIgc3JjPSJodHRwOi8vcGljLm1haXJ1YW4uY29tL1dlYlNvdXJjZS9odWlzaGVuZ2h1aXlpbmcvd2ViL2ltYWdlcy9zaGlzaGVuZ2ppL3BfNV9oaHNzaC5wbmciPicpCiAgICB9Cn0pOwoKCi8q6aG16Z2ianMqLwoKCgpmdW5jdGlvbiBtb2RhbF92aWRlbyh2aWRlbyl7CgogICAgY29uc29sZS5sb2codmlkZW8pOwoKICAgIGxheWVyLm9wZW4oewoKICAgICAgdHlwZTogMiwKCiAgICAgIHRpdGxlOiBmYWxzZSwKCiAgICAgIGFyZWE6IFsnODMwcHgnLCAnNTYwcHgnXSwKCiAgICA&
1#103;IHNoYWRlOiAwLjgsCgogICAgICBjbG9zZUJ0bjogMSwKCiAgICAgIHNoYWRlQ2xvc2U6IGZhbHNlLAoKICAgICAgY29udGVudDogdmlkZW8KCiAgICAgIC8vIGNvbnRlbnQ6ICdodHRwOi8vb3Blbi5pcWl5aS5jb20vZGV2ZWxvcGVyL3BsYXllcl9qcy9jb29wUGxheWVySW5kZXguaHRtbD92aWQ9OWI0ZjEyZDZhOWM0MzBmNGE0NDA1OThkNGFhYzMzNjYmdHZJZD04NjI1MjI0OTA5JmFjY2Vzc1Rva2VuPTIuZjIyODYwYTI0NzlhZDYwZDhkYTc2OTcyNzRkZTkzNDYmYXBwS2V5PTM5NTVjMzQyNTgyMDQzNWU4NmQwZjRjZGZlNTZmNWU3JmFwcElkPTEzNjgmaGVpZ2h0PTEwMCUmd2lkdGg9MTAwJScKCgoKICAgIH0pOwoKfQoKCgovKuaSreaUvuinhumikeW8ueeqlyovCgovLyBmdW5jdGlvbiBtb2RhbFZpZGVvKHZpZGVvVXJsLCB3aWR0aCwgaGVpZ2h0KSB7CgovLyAgICAgaWYgKCF3aWR0aCkgeyB3aWR0aCA9ICc4MDBweCc7IH0KCi8vICAgICBpZiAoIWhlaWdodCkgeyBoZWlnaHQgPSAnNjAwcHgnOyB9CgovLyAgICAgdmFyIHcgPSAkKHdpbmRvdykud2lkdGgoKTsKCi8vICAgICBpZih3IDw9NzY3KXsKCi8vICAgICAgICAgd2lkdGggPSAnOTAlJzsKCi8vICAgICAgICAgaGVpZ2h0ID0gKCQod2luZG93KS5oZWlnaHQoKSAtIDIwKSArICdweCc7CgovLyAgICAgfQoKLy8gICAgIGxheXVpLmxheWVyLm9wZW4oewoKLy8gICAgICAgICB0eXBlOiAyLAoKLy8gICAgICAgICB0aXRsZTogZmFsc2UsCgovLyAgICAgICAgIGFyZWE6IFt3aWR0aCwgaGVpZ2h0XSwKCi8vICAgICAgICAgc2hhZGU6IDAuOCwKCi8vICAgICAgICAgY2xvc2VCdG46IDEsCgovLyAgICAgICAgIHNoYWRlQ2xvc2U6IGZhbHNlLAoKLy8gICAgICAgICBjb250ZW50OiB2aWRlb1VybCwKCi8vICAgICB9KTsKCi8vIH0KCgoKLyroh6rlrprlvLnnqpcqLwoKZnVuY3Rpb24gbW9kYWxBamF4KHRvcGhwLCBnb29kc2lkLCB3aWR0aCwgaGVpZ2h0KSB7CgogICAgaWYgKCF3aWR0aCkgeyB3aWR0aCA9ICc4MDBweCc7IH0KCiAgICBpZiAoIWhlaWdodCkgeyBoZWlnaHQgPSAnNTMwcHgnOyB9CgogICAgdmFyIHcgPSAkKHdpbmRvdykud2lkdGgoKTsKCiAgICBpZiAodyA8PSA3NjcpIHsKCiAgICAgICAgd2lkdGggPSAnOTAlJzsKCiAgICAgICAgaGVpZ2h0ID0gKCQod2luZG93KS5oZWlnaHQoKSAtIDIwKSArICdweCc7CgogICAgfQoKICAgIGxheXVpLmxheWVyLm9wZW4oewoKICAgICAgICB0eXBlOiAyLAoKICAgICAgICBjb250ZW50OiB0b3BocCArICc/Z29vZHNpZD0nICsgZ29vZHNpZCwKCiAgICAgICAgYXJlYTogW3dpZHRoLCBoZWlnaHRdLAoKICAgICAgICB0aXRsZTogZmFsc2UsCgogICAgfSk7Cgp9CgoKCi8q6aG16Z2ianMqLwoKZnVuY3Rpb24gYWxzTGlzdCgpIHsKCiAgICBsYXl1aS51c2UoWydhbHMnXSwgZnVuY3Rpb24oYWxzKSB7CgogICAgICAgICQoIiNteS1hbHMtbGlzdCIpLmFscyh7CgogICAgICAgICAgICB2aXNpYmxlX2l0ZW1zOiA1LCAvL+WPr+ingeS4quaVsAoKICAgICAgICAgICAgc2Nyb2xsaW5nX2l0ZW1zOiAxLCAvL+avj+asoea7muWKqOS4quaVsAoKICAgICAgICAgICAgb3JpZW50YXRpb246ICJob3Jpem9udGFsIiwgLy/mu5rliqjmlrnlkJEKCiAgICAgICAgICAgIGNpcmN1bGFyOiAieWVzIiwgLy/mmK/lkKblvqrnjq/mu5rliqgKCiAgICAgICAgICAgIGF1dG9zY3JvbGw6ICJubyIsIC8v6Ieq5Yqo5pKt5pS+CgogICAgICAgICAgICBpbnRlcnZhbDogNTAwMCwgLy/mu5rliqjpl7TpmpTml7bpl7QKCiAgICAgICAgICAgIHNwZWVkOiA1MDAsIC8v5rua5Yqo5Yqo55S76YCf5bqmCgogICAgICAgICAgICBlYXNpbmc6ICJsaW5lYXIiLCAvL+WKqOeUu+aViOaenAoKICAgICAgICAgICAgZGlyZWN0aW9uOiAibGVmdCIsIC8v5rua5Yqo5pa55ZCRCgogICAgICAgICAgICBzdGFydF9mcm9tOiAwIC8v5Yid5aeL5YyW57Si5byV7
17yM5LuOMOW8gOWniwoKICAgICAgICB9KTsKCiAgICB9KTsKCn0KCi8vIGJ1eS5odG1sIOWVhuWTgeaKgOacr+WPguaVsApsYXl1aS51c2UoJ2VsZW1lbnQnLCBmdW5jdGlvbigpewogICAgdmFyIGVsZW1lbnQgPSBsYXl1aS5lbGVtZW50OwogICAgZWxlbWVudC5yZW5kZXIoKTsKICAgIC8v4oCmCiAgICAkKCIuZG91ZnUgLmxheXVpLWNvbGxhLXRpdGxlIikuY2xpY2soZnVuY3Rpb24oKXsKICAgICAgICAkKHRoaXMpLmZpbmQoImkiKS50b2dnbGVDbGFzcygicm90YXRlIik7CiAgICB9KTsKfSk7CgoKCgovKnN1cHBvcnRDYXRlZ29yeUxpc3QyKi8KCmZ1bmN0aW9uIHNob3dNdWJhbkppYW9jaGVuZyhwYWdlLCBzdHIpIHsKCiAgICBjb25zb2xlLmxvZyhwYWdlKTsKCiAgICBhZGRDb29raWUoJ3Nob3dXaGF0Jywgc3RyKTsKCiAgICBpZiAocGFnZS5pbmRleE9mKCdzb3VzdW8nKSA+IC0xKSB7CgogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5maXhfaHJlZiA9IHBhZ2UgKyAnLmh0bWwnOwoKICAgIH0gZWxzZSB7CgogICAgICAgIHdpbmRvdy5sb2NhdGlvbi5maXhfaHJlZiA9IHBhZ2UgKyAnLyc7CgogICAgfQoKfQoKCgoKCi8vIOeUn+aIkGNoZWNra2V5CgpmdW5jdGlvbiBnZXRPcmRlckNoZWNra2V5KHBhcmFtcykgewoKICAgIHZhciBsb2FkaW5nID0gbGF5ZXIubG9hZCgpOwoKICAgICQuYWpheCh7CgogICAgICAgIHVybDogYXBpaG9zdCsnL09yZGVyL2NoZWVja2tleScsCgogICAgICAgIC8vIHVybDogJ2h0dHA6Ly9hcGkydC5tYWlydWFuLmNvbS9hcGkucGhwJysnL09yZGVyL2NoZWVja2tleScsCgogICAgICAgIHR5cGU6ICdwb3N0JywKCiAgICAgICAgeGhyRmllbGRzOiB7d2l0aENyZWRlbnRpYWxzOiB0cnVlfSwKCiAgICAgICAgZGF0YTogcGFyYW1zCgogICAgfSkKCiAgICAuZG9uZShmdW5jdGlvbihkYXRhKSB7Y29uc29sZS5sb2coZGF0YSk7CgogICAgICAgIGlmKGRhdGEuY29kZSA9PSAyMDApewoKICAgICAgICAgICAgbG9jYXRpb24uZml4X2hyZWYgPSB1Y2hvc3QrJy9vcmRlcmNoZWNrLycrZGF0YS5kYXRhLmNoZWNra2V5OwoKICAgICAgICAgICAgLy8gbG9jYXRpb24uZml4X2hyZWYgPSAnaHR0cDovL3VzZXJ0Lm1haXJ1YW4uY29tJysnL29yZGVyY2hlY2svJytkYXRhLmRhdGEuY2hlY2trZXk7CgogICAgICAgIH1lbHNlewoKICAgICAgICAgICAgbGF5ZXIubXNnKGRhdGEubWVzc2FnZSk7CgogICAgICAgIH0KCiAgICB9KQoKICAgIC5mYWlsKGZ1bmN0aW9uKGVycikgewoKICAgICAgICBjb25zb2xlLmxvZyhlcnIpOwoKICAgIH0pCgogICAgLmFsd2F5cyhmdW5jdGlvbigpIHsKCiAgICAgICAgbGF5ZXIuY2xvc2UobG9hZGluZyk7CgogICAgfSk7CgogICAgCgp9CgoKCmZ1bmN0aW9uIG9wZW5WaWRlb0JveChpbWcsIHVybCwgdGl0bGUsIG51bWJlciwgdHlwZSwgZm9ybWF0LCBzaXplLCBkb3dubG9hZFVybCwgcHJpY2UpIHsKCgoKICAgIHZhciBzY3JlZW5XaWR0aCA9ICQod2luZG93KS53aWR0aCgpLTIwOwoKICAgIHZhciBzaXplOwoKICAgIHZhciBjbG9zZUJ0bjsKCiAgICB2YXIgc2hhZGVDbG9zZTsKCiAgICB2YXIgaW1naDsKCiAgICB2YXIgcHJpY2UgPSBwcmljZSB8fCAn5YWN6LS5JzsKCiAgICBpZihzY3JlZW5XaWR0aDw3MzEpewoKICAgICAgICBzaXplID0gW3NjcmVlbldpZHRoKydweCcsc2NyZWVuV2lkdGgrJ3B4J107CgogICAgICAgIHNoYWRlQ2xvc2UgPSB0cnVlOwoKICAgICAgICBjbG9zZUJ0biA9IDA7CgogICAgICAgIGltZ2ggPSA0NTAvODAwKnNjcmVlbldpZHRoOwoKICAgIH1lbHNlewoKICAgICAgICBzaXplID0gWyc4MDBweCcsICc2MDBweCddOwoKICAgICAgICBzaGFkZUNsb3NlID0gZmFsc2U7CgogICAgICAgIGNsb3NlQnRuID0gMTsKCiAgICAgICAgaW1naCA9ICc0NTAnOwoKICAgIH0KCgoKICAgIHZhciBjb250ZW50ID0gICAnPGRpdiBjbGFzcz0icHIgaGFuZCBwbGF5VmlkZW9Cb3giIHN0eWxlPSJoZWlnaHQ6NDUwcHg7Ij4nKwoKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgc3JjPSInKyBpbWcgKyciIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IicraW1naCsnIj4nKwoKICAgICAgICAgICAgICAgICAgICAgICAgJzxpbWcgY2xhc3M9InBhbHlCdG4gcGEiIHNyYz0iaHR0cDovL3BpYy5tYWlydWFuLmNvbS9wcm9XZWJQdWJsaWMvcHBwcC5wbmciIHN0eWxlPSJsZWZ0OjUwJTt0b3A6NTAlO21hcmdpbi1sZWZ0Oi01MHB4O21hcmdpbi10b3A6LTUwcHg7Ij4nKwoKICAgICAgICAgICAgICAgICAgICAgICAgJzxmaXhfaWZyYW1lIGNsYXNzPSJsYXl1aS1oaWRlIHcxMDBwIGgxMDBwIiBzcmM9I&#105
1;crIHVybCArJyI+PC9pZnJhbWU+JysKCiAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicrCgogICAgICAgICAgICAgICAgICAgICc8ZGl2IGNsYXNzPSJsYXl1aS1yb3cgcHQxOCBwbDMwIHByMzAgZnMxOCBtX2ZzMThyIj4nKwoKICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImxheXVpLWNvbC1zbTggbGF5dWktY29sLXhzMTIiPicrCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxoNCBjbGFzcz0iZnMzMCBwYjUgbV9mczMwciI+JysgdGl0bGUgKyc8L2g0PicrCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgJzxzcGFuIGNsYXNzPSJkaWIgdzUwcCI+57yW5Y+377yaJysgbnVtYmVyICsnPC9zcGFuPjxzcGFuIGNsYXNzPSJkaWIgdzUwcCI+5YiG57G777yaJysgdHlwZSArJzwvc3Bhbj48c3BhbiBjbGFzcz0iZGliIHc1MHAiPuagvOW8j++8micrIGZvcm1hdCArJzwvc3Bhbj48c3BhbiBjbGFzcz0iZGliIHc1MHAiPuWkp+Wwj++8micrIHNpemUgKyc8L3NwYW4+JysKCiAgICAgICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nKwoKICAgICAgICAgICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9ImxheXVpLWNvbC1zbTQgbGF5dWktY29sLXhzMTIgZnIiPicrCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YiBjbGFzcz0iZGIgcHQxMCBtX3B0MTByIj7llK7ku7fvvJogPHNwYW4gY2xhc3M9ImMtMiI+JysgcHJpY2UgKyc8L3NwYW4+PC9iPicrCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICc8YSBocmVmPSInKyBkb3dubG9hZFVybCArJyIgdGFyZ2V0PSJfYmxhbmsiIGNsYXNzPSJhLTEgdzIwMCB3X3cxMzByIGg1MCBtX2g3MHIgbGg1MCBtX2xoNzByIGZzMj
1QgbV9mczMwciBtdDE1IG1fbXQxNXIiPueri+WNs+S4i+i9vTwvYT4nKwoKICAgICAgICAgICAgICAgICAgICAgICAgJzwvZGl2PicrCgogICAgICAgICAgICAgICAgICAgICc8L2Rpdj4nKwoKICAgICAgICAgICAgICAgICAgICAnPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPicrCgogICAgICAgICAgICAgICAgICAgICAgICAnJChmdW5jdGlvbigpIHsnKwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKCIucGxheVZpZGVvQm94IikuY2xpY2soZnVuY3Rpb24oKXsnKwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJCh0aGlzKS5maW5kKCJpbWciKS5hZGRDbGFzcygibGF5dWktaGlkZSIpOycrCgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICckKHRoaXMpLmZpbmQoImlmcmFtZSIpLnJlbW92ZUNsYXNzKCJsYXl1aS1oaWRlIik7JysKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnfSk7JysKCiAgICAgICAgICAgICAgICAgICAgICAgICd9KTsnKwoKICAgICAgICAgICAgICAgICAgICAnPC9zY3JpcHQ+JzsKCgoKICAgIGxheWVyLm9wZW4oewoKICAgICAgICB0eXBlOiAxLAoKICAgICAgICB0aXRsZTogZmFsc2UsCgogICAgICAgIGFyZWE6IHNpemUsCgogICAgICAgIHNoYWRlOiAwLjgsCgogICAgICAgIGNsb3NlQnRuOiBjbG9zZUJ0biwKCiAgICAgICAgc2hhZGVDbG9zZTogc2hhZGVDbG9zZSwKCiAgICAgICAgY29udGVudDogY29udGVudCwKCiAgICB9KTsKCn0KCgoKLyp4aWF6YWkuaHRtbCovCgpmdW5jdGlvbiBtb2RlbFhpYXphaUJveChkb3dubG9hZFVybCkgewoKICAgIHZhciBzY2VuZV9pZCA9IGdldENvb2tpZSgnc2NlbmVfaWQnKTsKCiAgICB2YXIgY2tfc2NlbmVfaWQgPSBnZXRDb29raWUoJ2NrX3NjZW5lX2lkJyk7CgoKCiAgICBpZiAoY2tfc2NlbmVfaWQpIHsKCiAgICAgICAgd2luZG93LmxvY2F0aW9uLmZpeF9ocmVmID0gZG93bmxvYWRVcmw7CgogICAgfSBlbHNlIHsKCiAgICAgICAgdmFyIHRpbWVyOwoKICAgICAgICBsYXllci5vcGVuKHsKCiAgICAgICAgICAgIHR5cGU6IDEsCgogICAgICAgICAgICBza2luOiAncG9wVXBDbGFzcycsCgogICAgICAgICAgICB0aXRsZTogZmFsc2UsCgogICAgICAgICAgICBhcmVhOiBbJzM2MHB4JywgJzU2MHB4J10sCgogICAgICAgICAgICBjb250ZW50OiAnPGRpdiBjbGFzcz0ibGF5dWktcm93IHB0NjAgcGwzMCI+JyArCgogICAgICAgICAgICAgICAgJzxkaXYgY2xhc3M9IiI+JyArCgogICAgICAgICAgICAgICAgJzxpbWcgd2lkdGg9IjMxMiIgaGVpZ2h0PSI0OTgiIHNyYz0iaHR0cDovL2NqY21zc291cmNlLndlYnRlc3QuY29tL1dlYlNvdXJjZS9odWlzaGVuZ2h1aXlpbmcvd2ViL2ltYWdlcy9oaF9kb3dubG9hZF9oaXQucG5nIj4nICsKCiAgICAgICAgICAgICAgICAnPC9kaXY+JyArCgogICAgICAgICAgICAgICAgJzwvZGl2PicsCgogICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihsYXllcm8sIGluZGV4KSB7CgogICAgICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKCiAgICAgICAgICAgICAgICAgICAgJC5hamF4KHsKCiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2h0dHA6Ly9yZXNvdXJjZS5tYWlydWFuLmNvbS9pbmRleC5waHAvU2FvbWEvY2hlY2tTYW9tYScsCgogICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7ICJzY2VuZV9pZCI6IHNjZW5lX2lkLCB9LAoKICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAncG9zdCcsCgogICAgICAgICAgICAgICAgICAgICAgICB4aHJGaWVsZHM6IHsgd2l0aENyZWRlbnRpYWxzOiB0cnVlIH0sCgogICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpOwoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuc3RhdHVzID09IDEpIHsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyLmNsb3NlQWxsKCk7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZENvb2tpZSgnY2tfc2NlbmVfaWQnLCAxKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmZpeF9ocmVmID0gZG93bmxvYWRVcmw7CgogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICB9KTsKCiA&#1
103;ICAgICAgICAgICAgICB9LCAzMDAwKTsKCiAgICAgICAgICAgIH0sCgoKCiAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oaW5kZXgsIGxheWVybykgewoKICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIpOwoKICAgICAgICAgICAgfQoKICAgICAgICB9KTsKCiAgICAgICAgLy8gJC5hamF4KHsKCiAgICAgICAgLy8gICAgIHVybDogJ2h0dHA6Ly9yZXNvdXJjZS5tYWlydWFuLmNvbS9pbmRleC5waHAvU2FvbWEvZ2V0SW1nJywKCiAgICAgICAgLy8gICAgIGRhdGE6IHsgInNjZW5lX2lkIjogc2NlbmVfaWQsIH0sCgogICAgICAgIC8vICAgICBtZXRob2Q6ICdwb3N0JywKCiAgICAgICAgLy8gICAgIHhockZpZWxkczogeyB3aXRoQ3JlZGVudGlhbHM6IHRydWUgfSwKCiAgICAgICAgLy8gICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uKHJlcykgewoKICAgICAgICAvLyAgICAgICAgIGxheWVyLm9wZW4oewoKICAgICAgICAvLyAgICAgICAgICAgICB0eXBlOiAxLAoKICAgICAgICAvLyAgICAgICAgICAgICBza2luOiAncG9wVXBDbGFzcycsCgogICAgICAgIC8vICAgICAgICAgICAgIHRpdGxlOiBmYWxzZSwKCiAgICAgICAgLy8gICAgICAgICAgICAgYXJlYTogWyczNjBweCcsICc1NjBweCddLAoKICAgICAgICAvLyAgICAgICAgICAgICBjb250ZW50OiAnPGRpdiBjbGFzcz0ibGF5dWktcm93IHB0NjAgcGwzMCI+JyArCgogICAgICAgIC8vICAgICAgICAgICAgICAgICAnPGRpdiBjbGFzcz0iIj4nICsKCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICc8aW1nIHdpZHRoPSIzMTIiIGhlaWdodD0iNDk4IiBzcmM9Imh0dHA6Ly9jamNtc3NvdXJjZS53ZWJ0ZXN0LmNvbS9XZWJTb3VyY2UvaHVpc2hlbmdodWl5aW5nL3dlYi9pbWFnZXMvaGhfZG93bmxvYWRfaGl0LnBuZyI+JyArCgogICAgICAgIC8vICAgICAgICAgICAgICAgICAnPC9kaXY+JyArCgogICAgICAgIC8vICAgICAgICAgICAgICAgICAnPC9kaXY+JywKCiAgICAgICAgLy8gICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24obGF5ZXJvLCBpbmRleCkgewoKICAgICAgICAvLyAgICAgICAgICAgICAgICAgdGltZXIgPSBzZXRJbnRlcnZhbChmdW5jdGlvbigpIHsKCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAkLmFqYXgoewoKICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdodHRwOi8vcmVzb3VyY2UubWFpcnVhbi5jb20vaW5kZXgucGhwL1Nhb21hL2NoZWNrU2FvbWEnLAoKICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhOiB7ICJzY2VuZV9pZCI6IHNjZW5lX2lkLCB9LAoKICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdwb3N0JywKCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgeGhyRmllbGRzOiB7IHdpdGhDcmVkZW50aWFsczogdHJ1ZSB9LAoKICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbihyZXMpIHsKCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7CgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLnN0YXR1cyA9PSAxKSB7CgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXIuY2xvc2VBbGwoKTsKCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRDb29raWUoJ2NrX3NjZW5lX2lkJywgMSk7CgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLmZpeF9ocmVmID0gZG93bmxvYWRVcmw7CgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgIC8vICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgICB9KTsKCiAgICAgICAgLy8gICAgICAgICAgICAgICAgIH0sIDMwMDApOwoKICAgICAgICAvLyAgICAgICAgICAgICB9LAoKCgogICAgICAgIC8vICAgICAgICAgICAgIGVuZDogZnVuY3Rpb24oaW5kZXgsIGxheWVybykgewoKICAgICAgICAvLyAgICAgICAgICAgICAgICAgY2xlYXJJbnRlcnZhbCh0aW1lcik7CgogICAgICAgIC8vICAgICAgICAgICAgIH0KCiAgICAgICAgLy8gICAgICAgICB9KTsKCiAgICAgICAgLy8gICAgIH0KCiAgICAgICAgLy8gfSk7CgogICAgfQoKfQoKCgovLyDkvJrlo7DkvJrlvbHotK3kubDpobXlr&
1#112;rkvY0yMDE5CmxldCBidXlUYWIgPSBnZXRRdWVyeVZhcmlhYmxlKCJwcm9kdWN0Iik7CmlmKCBidXlUYWIgPT0gMjAxOSl7CiAgICAkKCIuaHNoeUJ1eVRhYiIpLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoImFjdGl2ZSIpOwogICAgJCgiLmhzaHlCdXlUYWIiKS5jaGlsZHJlbigpLmVxKDEpLmFkZENsYXNzKCJhY3RpdmUiKTsKICAgICQoIlt0YWJzaG93YmluZGZpbHRlcj0ndnNwQnV5J10iKS5jaGlsZHJlbigpLmFkZENsYXNzKCJsYXl1aS1oaWRlIik7CiAgICAkKCJbdGFic2hvd2JpbmRmaWx0ZXI9J3ZzcEJ1eSddIikuY2hpbGRyZW4oKS5lcSgxKS5yZW1vdmVDbGFzcygibGF5dWktaGlkZSIpOwp9Ci8vIOiOt+WPliB1cmwg5Y+C5pWwCmZ1bmN0aW9uIGdldFF1ZXJ5VmFyaWFibGUodmFyaWFibGUpewogICAgdmFyIHF1ZXJ5ID0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5zdWJzdHJpbmcoMSk7CiAgICB2YXIgdmFycyA9IHF1ZXJ5LnNwbGl0KCImIik7CiAgICBmb3IgKHZhciBpPTA7aTx2YXJzLmxlbmd0aDtpKyspIHsKICAgICAgICAgICAgdmFyIHBhaXIgPSB2YXJzW2ldLnNwbGl0KCI9Iik7CiAgICAgICAgICAgIGlmKHBhaXJbMF0gPT0gdmFyaWFibGUpe3JldHVybiBwYWlyWzFdO30KICAgIH0KICAgIHJldHVybihmYWxzZSk7Cn0=

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.