xiaomianao666

插件名:global_全网VIP视频免费破解【专注一个脚本只做一件事件】

Nov 9th, 2024
306
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:网页插件¥js_url¥global_全网VIP视频免费破解【专注一个脚本只做一件事件】@base64://Ly8gPT1Vc2VyU2NyaXB0PT0KLy8gQG5hbWUgICAgICAgICAgICAgIOWFqOe9kVZJUOinhumikeWFjei0ueegtOino+OAkOS4k+azqOS4gOS4quiEmuacrOWPquWBmuS4gOS7tuS6i+S7tuOAkQovLyBAbmFtZXNwYWNlICAgICAgICAgaHR0cDovL3RhbXBlcm1vbmtleS5uZXQvCi8vIEB2ZXJzaW9uICAgICAgICAgICAxLjcuMAovLyBAZGVzY3JpcHRpb24gICAgICAg5YWo572RVklQ6KeG6aKR5YWN6LS556C06Kej44CQ5LiT5rOo5LiA5Liq6ISa5pys5Y+q5YGa5LiA5Lu25LqL5Lu244CR44CC5pSv5oyB77ya6IW+6K6v44CB54ix5aWH6Im644CB5LyY6YW344CB6IqS5p6c44CBcHB0duOAgeS5kOinhuetieWFtuWug+e9keerme+8mwovLyBAaWNvbiAgICAgICAgICAgICAgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwvOWovNEFBUVNrWkpSZ0FCQVFFQWtBQ1FBQUQvL2dBVVUyOW1kSGRoY21VNklGTnVhWEJoYzNSbC85c0FRd0FEQWdJREFnSURBd01EQkFNREJBVUlCUVVFQkFVS0J3Y0dDQXdLREF3TENnc0xEUTRTRUEwT0VRNExDeEFXRUJFVEZCVVZGUXdQRnhnV0ZCZ1NGQlVVLzlzQVF3RURCQVFGQkFVSkJRVUpGQTBMRFJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVVGQlFVRkJRVUZCUVUvOEFBRVFnQUdnQWVBd0VpQUFJUkFRTVJBZi9FQUI4QUFBRUZBUUVCQVFFQkFBQUFBQUFBQUFBQkFnTUVCUVlIQ0FrS0MvL0VBTFVRQUFJQkF3TUNCQU1GQlFRRUFBQUJmUUVDQXdBRUVRVVNJVEZCQmhOUllRY2ljUlF5Z1pHaENDTkNzY0VWVXRId0pETmljb0lKQ2hZWEdCa2FKU1luS0NrcU5EVTJOemc1T2tORVJVWkhTRWxLVTFSVlZsZFlXVnBqWkdWbVoyaHBhbk4wZFhaM2VIbDZnNFNGaG9lSWlZcVNrNVNWbHBlWW1acWlvNlNscHFlb3FhcXlzN1MxdHJlNHVickN3OFRGeHNmSXljclMwOVRWMXRmWTJkcmg0dVBrNWVibjZPbnE4Zkx6OVBYMjkvajUrdi9FQUI4QkFBTUJBUUVCQVFFQkFRRUFBQUFBQUFBQkFnTUVCUVlIQ0FrS0MvL0VBTFVSQUFJQkFnUUVBd1FIQlFRRUFBRUNkd0FCQWdNUkJBVWhNUVlTUVZFSFlYRVRJaktCQ0JSQ2thR3h3UWtqTTFMd0ZXSnkwUW9XSkRUaEpmRVhHQmthSmljb0tTbzFOamM0T1RwRFJFVkdSMGhKU2xOVVZWWlhXRmxhWTJSbFptZG9hV3B6ZEhWMmQzaDVlb0tEaElXR2g0aUppcEtUbEpXV2w1aVptcUtqcEtXbXA2aXBxckt6dExXMnQ3aTV1c0xEeE1YR3g4akp5dExUMU5YVzE5aloydUxqNU9YbTUranA2dkx6OVBYMjkvajUrdi9hQUF3REFRQUNFUU1SQUQ4QTgvc3RUaXZaTGhGVjBlQnRyaHdCK1BYcFhjL0JqNGJYWHh5MU9iVGRFMVhUckRVRTNHTzMxUHprTXlxTXN5dEhFNjRHZjRpRDZBMTVUclV4MGZVcmlWUWNYY0JVWS92aml2cGI5aEd6K3cvR0xUb2NZSzZkY2J2cVFDYS9RNmVjNDZkV3RoMjF6VUZOemR0M3pmdXZTOGJ0bmc1cndua3VDeTNEWnJTaTNER3lvcWl1WjZKUWYxbS9mbHEyaEcreU1QVGYyZTlYMW5WUEVGbFphOW9seC9ZVG1POW5EWEt4bzRMQjFHNkFNeFVvY2tEQjdFMWkrSnZnL3JuaHp3L3BldVJTV3V0NlJxUCtwdTlNTWpnSEJJREs2S3dPQWUzYkJ3YStnL2hRRVBpUDQxQ1ZtU002bmRibVJkeEEzelpJR1JuOHhYa25pUDQyV2RyNEMwRHdwNFhodlBJMC93RGVUWDJvSXNieXZoc2hVUjJBR1dKNVk5aDcxK2NVdUt1SzhaeFZpc3J5NktxVXFGU2twSnhTaXFjNkRuS1VwN3FYUHlxS1Y3cHYzV3RWOE5XeXpMS0dBaFhyTnhsTlR0WjNmTkdka2t1M0xlLzVualUxdERjYmZOaVNYYWNydlVIQjlxMy9BQS80MzhSK0VvNW85RDEvVk5HU1locFYwKzhrZ0RrZEN3UmhuOGF4YUsvb2QwYWJiYml0ZDlON2JYUGgvck5mbGhEbmRvM3NydXl2dmJ0ZnJiYzZLZjRqK0xMcTR1SjV2RkdzelQzQ0NPYVNUVUptYVZCbkNzUzJTQms4SDFOYzdSUlVVOE5Sb3lsT2xCUmNyWGFTVGR0RmZ2WmJHVTZ0U3BibmszYnV6Ly9aCi8vIEBhdXRob3IgICAgICAgICAgICB3X195aQovLyBAbWF0Y2ggICAgICAgICAgICAgKjovLyoueW91a3UuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly8qLmlxaXlpLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi5pcS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovLyoubGUuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly92LnFxLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vbS52LnFxLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi50dWRvdS5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovLyoubWd0di5jb20vKgovLyBAbWF0Y2ggICAgICAgICAgICAgKjovL3R2LnNvaHUuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly9maWxtLnNvaHUuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly8qLjE5MDUuY29tLyoKLy8gQG1hdGNoICAgICAgICAgICAgICo6Ly8qLmJpbGliaWxpLmNvbS8qCi8vIEBtYXRjaCAgICAgICAgICAgICAqOi8vKi5wcHR2LmNvbS8qCgovLyBAcmVxdWlyZSAgICAgICAgICAgaHR0cHM6Ly9jZG4uYm9vdGNkbi5uZXQvYWpheC9saWJzL2pxdWVyeS8zLjIuMS9qcXVlcnkubWluLmpzCi8vIEBncmFudCAgICAgICAgICAgICB1bnNhZmVXaW5kb3cKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2FkZFN0eWxlCi8vIEBncmFudCAgICAgICAgICAgICBHTV9vcGVuSW5UYWIKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2dldFZhbHVlCi8vIEBncmFudCAgICAgICAgICAgICBHTV9zZXRWYWx1ZQovLyBAZ3JhbnQgICAgICAgICAgICAgR01feG1saHR0cFJlcXVlc3QKLy8gQGdyYW50ICAgICAgICAgICAgIEdNX2xvZwovLyBAY2hhcnNldAkJICAgICAgVVRGLTgKLy8gQGxpY2Vuc2UgICAgICAgICAgIEdQTCBMaWNlbnNlCi8vIEBkb3dubG9hZFVSTCBodHRwczovL3VwZGF0ZS5ncmVhc3lmb3JrLm9yZy9zY3JpcHRzLzQzODY1Ny8lRTUlODUlQTglRTclQkQlOTFWSVAlRTglQTclODYlRTklQTIlOTElRTUlODUlOEQlRTglQjQlQjklRTclQTAlQjQlRTglQTclQTMlRTMlODAlOTAlRTQlQjglOTMlRTYlQjMlQTglRTQlQjglODAlRTQlQjglQUElRTglODQlOUElRTYlOUMlQUMlRTUlOEYlQUElRTUlODElOUElRTQlQjglODAlRTQlQkIlQjYlRTQlQkElOEIlRTQlQkIlQjYlRTMlODAlOTEudXNlci5qcwovLyBAdXBkYXRlVVJMIGh0dHBzOi8vdXBkYXRlLmdyZWFzeWZvcmsub3JnL3NjcmlwdHMvNDM4NjU3LyVFNSU4NSVBOCVFNyVCRCU5MVZJUCVFOCVBNyU4NiVFOSVBMiU5MSVFNSU4NSU4RCVFOCVCNCVCOSVFNyVBMCVCNCVFOCVBNyVBMyVFMyU4MCU5MCVFNCVCOCU5MyVFNiVCMyVBOCVFNCVCOCU4MCVFNCVCOCVBQSVFOCU4NCU5QSVFNiU5QyVBQyVFNSU4RiVBQSVFNSU4MSU5QSVFNCVCOCU4MCVFNCVCQiVCNiVFNCVCQSU4QiVFNCVCQiVCNiVFMyU4MCU5MS5tZXRhLmpzCi8vID09L1VzZXJTY3JpcHQ9PQoKY29uc3QgdXRpbCA9IChmdW5jdGlvbiAoKSB7CgogICAgZnVuY3Rpb24gZmluZFRhcmdldEVsZW1lbnQodGFyZ2V0Q29udGFpbmVyKSB7CiAgICAgICAgY29uc3QgYm9keSA9IHdpbmRvdy5kb2N1bWVudDsKICAgICAgICBsZXQgdGFiQ29udGFpbmVyOwogICAgICAgIGxldCB0cnlUaW1lID0gMDsKICAgICAgICBjb25zdCBtYXhUcnlUaW1lID0gMTIwOwogICAgICAgIGxldCBzdGFydFRpbWVzdGFtcDsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICBmdW5jdGlvbiB0cnlGaW5kRWxlbWVudCh0aW1lc3RhbXApIHsKICAgICAgICAgICAgICAgIGlmICghc3RhcnRUaW1lc3RhbXApIHsKICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNvbnN0IGVsYXBzZWRUaW1lID0gdGltZXN0YW1wIC0gc3RhcnRUaW1lc3RhbXA7CgogICAgICAgICAgICAgICAgaWYgKGVsYXBzZWRUaW1lID49IDUwMCkgewogICAgICAgICAgICAgICAgICAgIEdNX2xvZygi5p+l5om+5YWD57Sg77yaIiArIHRhcmdldENvbnRhaW5lciArICLvvIznrKwiICsgdHJ5VGltZSArICLmrKEiKTsKICAgICAgICAgICAgICAgICAgICB0YWJDb250YWluZXIgPSBib2R5LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0Q29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICBpZiAodGFiQ29udGFpbmVyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUodGFiQ29udGFpbmVyKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCsrdHJ5VGltZSA9PT0gbWF4VHJ5VGltZSkgewogICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoKTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWVzdGFtcCA9IHRpbWVzdGFtcDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoIXRhYkNvbnRhaW5lciAmJiB0cnlUaW1lIDwgbWF4VHJ5VGltZSkgewogICAgICAgICAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0cnlGaW5kRWxlbWVudCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSh0cnlGaW5kRWxlbWVudCk7CiAgICAgICAgfSk7CiAgICB9CgogICAgZnVuY3Rpb24gdXJsQ2hhbmdlUmVsb2FkKCkgewogICAgICAgIGNvbnN0IG9sZEhyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgICAgICAgIGxldCBuZXdIcmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgICAgIGlmIChvbGRIcmVmICE9PSBuZXdIcmVmKSB7CiAgICAgICAgICAgICAgICBjbGVhckludGVydmFsKGludGVydmFsKTsKICAgICAgICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0sIDUwMCk7CiAgICB9CgogICAgZnVuY3Rpb24gcmVvbXZlVmlkZW8oKSB7CiAgICAgICAgc2V0SW50ZXJ2YWwoKCkgPT4gewogICAgICAgICAgICBmb3IgKGxldCB2aWRlbyBvZiBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidmlkZW8iKSkgewogICAgICAgICAgICAgICAgaWYgKHZpZGVvLnNyYykgewogICAgICAgICAgICAgICAgICAgIHZpZGVvLnJlbW92ZUF0dHJpYnV0ZSgic3JjIik7CiAgICAgICAgICAgICAgICAgICAgdmlkZW8ubXV0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgIHZpZGVvLmxvYWQoKTsKICAgICAgICAgICAgICAgICAgICB2aWRlby5wYXVzZSgpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfSwgNTAwKTsKICAgIH0KCiAgICBmdW5jdGlvbiBzeW5jUmVxdWVzdChvcHRpb24pIHsKICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgICAgICAgICBvcHRpb24ub25sb2FkID0gKHJlcykgPT4gewogICAgICAgICAgICAgICAgcmVzb2x2ZShyZXMpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBvcHRpb24ub25lcnJvciA9IChlcnIpID0+IHsKICAgICAgICAgICAgICAgIHJlamVjdChlcnIpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBHTV94bWxodHRwUmVxdWVzdChvcHRpb24pOwogICAgICAgIH0pOwogICAgfQoKICAgIHJldHVybiB7CiAgICAgICAgcmVxOiAob3B0aW9uKSA9PiBzeW5jUmVxdWVzdChvcHRpb24pLAogICAgICAgIGZpbmRUYXJnZXRFbGU6ICh0YXJnZXRFbGUpID0+IGZpbmRUYXJnZXRFbGVtZW50KHRhcmdldEVsZSksCiAgICAgICAgdXJsQ2hhbmdlUmVsb2FkOiAoKSA9PiB1cmxDaGFuZ2VSZWxvYWQoKSwKICAgICAgICByZW9tdmVWaWRlbzogKCkgPT4gcmVvbXZlVmlkZW8oKQogICAgfQp9KSgpOwoKCmNvbnN0IHN1cGVyVmlwID0gKGZ1bmN0aW9uICgpIHsKCiAgICBjb25zdCBfQ09ORklHXyA9IHsKICAgICAgICBpc01vYmlsZTogbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvKEFuZHJvaWR8d2ViT1N8aVBob25lfGlQYWR8aVBvZHxCbGFja0JlcnJ5fElFTW9iaWxlfE9wZXJhIE1pbmkpL2kpLAogICAgICAgIGN1cnJlbnRQbGF5ZXJOb2RlOiBudWxsLAogICAgICAgIHZpcEJveElkOiAndmlwX2p4X2JveCcgKyBNYXRoLmNlaWwoTWF0aC5yYW5kb20oKSAqIDEwMDAwMDAwMCksCiAgICAgICAgZmxhZzogImZsYWdfdmlwIiwKICAgICAgICBhdXRvUGxheWVyS2V5OiAiYXV0b19wbGF5ZXJfa2V5IiArIHdpbmRvdy5sb2NhdGlvbi5ob3N0LAogICAgICAgIGF1dG9QbGF5ZXJWYWw6ICJhdXRvX3BsYXllcl92YWx1ZV8iICsgd2luZG93LmxvY2F0aW9uLmhvc3QsCiAgICAgICAgdmlkZW9QYXJzZUxpc3Q6IFsKICAgICAgICAgICAgeyJuYW1lIjogIue7vOWQiCIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5qc29ucGxheWVyLmNvbS9wbGF5ZXIvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIkNLIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL3d3dy5ja3BsYXllci52aXAvamlleGkvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIllUIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL2p4Lnlhbmd0dS50b3AvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIlBsYXllci1KWSIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5wbGF5ZXJqeS5jb20vP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogInlwYXJzZSIsICJ0eXBlIjogIjEsMiIsICJ1cmwiOiAiaHR0cHM6Ly9qeC55cGFyc2UuY29tL2luZGV4LnBocD91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICI4MDkwIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL3d3dy44MDkwZy5jbi8/dXJsPSJ9LAogICAgICAgICAgICB7Im5hbWUiOiAi5YmW5YWDIiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL3d3dy5wb3V5dW4uY29tLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLomb7nsbMiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vangueG1mbHYuY29tLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLlhajmsJEiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vNDMuMjQwLjc0LjEwMjo0NDMzP3VybD0ifSwKCiAgICAgICAgICAgIHsibmFtZSI6ICLniLHosYYiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vanguYWlkb3Vlci5uZXQvP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIuWknOW5lSIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly93d3cueWVtdS54eXovP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogIm0xOTA3IiwgInR5cGUiOiAiMSwyIiwgInVybCI6ICJodHRwczovL2ltMTkwNy50b3AvP2p4PSJ9LAoKICAgICAgICAgICAgeyJuYW1lIjogIk0zVThUViIsICJ0eXBlIjogIjEsMyIsICJ1cmwiOiAiaHR0cHM6Ly9qeC5tM3U4LnR2L2ppZXhpLz91cmw9In0sCiAgICAgICAgICAgIHsibmFtZSI6ICLlhrDosYYiLCAidHlwZSI6ICIxLDMiLCAidXJsIjogImh0dHBzOi8vYmQuanguY24vP3VybD0ifSwKICAgICAgICAgICAgeyJuYW1lIjogInBsYXltM3U4IiwgInR5cGUiOiAiMSwzIiwgInVybCI6ICJodHRwczovL3d3dy5wbGF5bTN1OC5jbi9qaWV4aS5waHA/dXJsPSJ9LAogICAgICAgIF0sCiAgICAgICAgcGxheWVyQ29udGFpbmVyczogWwogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBob3N0OiAidi5xcS5jb20iLAogICAgICAgICAgICAgICAgY29udGFpbmVyOiAiI21vZF9wbGF5ZXIsI3BsYXllci1jb250YWluZXIsLmNvbnRhaW5lci1wbGF5ZXIiLAogICAgICAgICAgICAgICAgbmFtZTogIkRlZmF1bHQiLAogICAgICAgICAgICAgICAgZGlzcGxheU5vZGVzOiBbIiNtYXNrX2xheWVyIiwgIi5tb2RfdmlwX3BvcHVwIiwgIiNtYXNrX2xheWVyIiwgIi5wYW5lbC10aXAtcGF5Il0KICAgICAgICAgICAgfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaG9zdDogIm0udi5xcS5jb20iLAogICAgICAgICAgICAgICAgY29udGFpbmVyOiAiLm1vZF9wbGF5ZXIsI3BsYXllciIsCiAgICAgICAgICAgICAgICBuYW1lOiAiRGVmYXVsdCIsCiAgICAgICAgICAgICAgICBkaXNwbGF5Tm9kZXM6IFsiLm1vZF92aXBfcG9wdXAiLCAiW2NsYXNzXj1hcHBfXSxbY2xhc3NePWFwcC1dLFtjbGFzcyo9X2FwcF9dLFtjbGFzcyo9LWFwcC1dLFtjbGFzcyQ9X2FwcF0sW2NsYXNzJD0tYXBwXSIsICJkaXZbZHQtZWlkPW9wZW5fYXBwX2JvdHRvbV0iLCAiZGl2LnZpZGVvX2Z1bmN0aW9uLnZpZGVvX2Z1bmN0aW9uX25ldyIsICJhW29wZW4tYXBwXSIsICJzZWN0aW9uLm1vZF9zb3VyY2UiLCAic2VjdGlvbi5tb2RfYm94Lm1vZF9zaWRlc2xpcF9oLm1vZF9tdWx0aV9maWd1cmVzX2gsc2VjdGlvbi5tb2Rfc2lkZXNsaXBfcHJpdmlsZWdlcyxzZWN0aW9uLm1vZF9nYW1lX3JlYyIsICIuYXQtYXBwLWJhbm5lciJdCiAgICAgICAgICAgIH0sCgogICAgICAgICAgICB7aG9zdDogIncubWd0di5jb20iLCBjb250YWluZXI6ICIjbWd0di1wbGF5ZXItd3JhcCIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgICAgIHtob3N0OiAid3d3Lm1ndHYuY29tIiwgY29udGFpbmVyOiAiI21ndHYtcGxheWVyLXdyYXAiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBob3N0OiAibS5tZ3R2LmNvbSIsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICIudmlkZW8tYXJlYSIsCiAgICAgICAgICAgICAgICBuYW1lOiAiRGVmYXVsdCIsCiAgICAgICAgICAgICAgICBkaXNwbGF5Tm9kZXM6IFsiZGl2W2NsYXNzXj1tZy1hcHBdIiwgIi52aWRlby1hcmVhLWJhciIsICIub3Blbi1hcHAtcG9wdXAiXQogICAgICAgICAgICB9LAogICAgICAgICAgICB7aG9zdDogInd3dy5iaWxpYmlsaS5jb20iLCBjb250YWluZXI6ICIjcGxheWVyX21vZHVsZSwjYmlsaWJpbGlQbGF5ZXIsI2JpbGliaWxpLXBsYXllciIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgICAgIHtob3N0OiAibS5iaWxpYmlsaS5jb20iLCBjb250YWluZXI6ICIucGxheWVyLXdyYXBwZXIsLnBsYXllci1jb250YWluZXIsLm1wbGF5ZXIiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInd3dy5pcWl5aS5jb20iLCBjb250YWluZXI6ICIjZmxhc2hib3giLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogWyIjcGxheWVyUG9wdXAiLCAiZGl2W2NsYXNzXj1xeS1oZWFkZXItbG9naW4tcG9wXSIsICJzZWN0aW9uW2NsYXNzXj1tb2RhbC1jb3Zlcl9dIiAsIi50b2FzdCJdfSwKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgaG9zdDogIm0uaXFpeWkuY29tIiwKICAgICAgICAgICAgICAgIGNvbnRhaW5lcjogIi5tLXZpZGVvLXBsYXllci13cmFwIiwKICAgICAgICAgICAgICAgIG5hbWU6ICJEZWZhdWx0IiwKICAgICAgICAgICAgICAgIGRpc3BsYXlOb2RlczogWyJkaXYubS1pcXlHdWlkZS1sYXllciIsICJhW2Rvd24tYXBwLWFuZHJvaWQtdXJsXSIsICJbbmFtZT1tLWV4dGVuZEJhcl0iLCAiW2NsYXNzKj1DaGFubmVsSG9tZUJhbm5lcl0iLCAic2VjdGlvbi5tLWhvdFdvcmRzLWJvdHRvbSJdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHtob3N0OiAid3d3LmlxLmNvbSIsIGNvbnRhaW5lcjogIi5pbnRsLXZpZGVvLXdyYXAiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInYueW91a3UuY29tIiwgY29udGFpbmVyOiAiI3BsYXllciIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbIiNpZnJhbWFXcmFwcGVyIiwgIiNjaGVja291dF9jb3VudGVyX21hc2siLCAiI2NoZWNrb3V0X2NvdW50ZXJfcG9wdXAiXX0sCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGhvc3Q6ICJtLnlvdWt1LmNvbSIsCiAgICAgICAgICAgICAgICBjb250YWluZXI6ICIjcGxheWVyLC5oNS1kZXRhaWwtcGxheWVyIiwKICAgICAgICAgICAgICAgIG5hbWU6ICJEZWZhdWx0IiwKICAgICAgICAgICAgICAgIGRpc3BsYXlOb2RlczogWyIuY2FsbEVuZF9ib3giLCAiLmg1LWRldGFpbC1ndWlkZSIsICIuaDUtZGV0YWlsLXZpcC1ndWlkZSJdCiAgICAgICAgICAgIH0sCiAgICAgICAgICAgIHtob3N0OiAidHYuc29odS5jb20iLCBjb250YWluZXI6ICIjcGxheWVyIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJmaWxtLnNvaHUuY29tIiwgY29udGFpbmVyOiAiI3BsYXllcldyYXAiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInd3dy5sZS5jb20iLCBjb250YWluZXI6ICIjbGVfcGxheWJveCIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgICAgIHtob3N0OiAidmlkZW8udHVkb3UuY29tIiwgY29udGFpbmVyOiAiLnRkLXBsYXlib3giLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInYucHB0di5jb20iLCBjb250YWluZXI6ICIjcHB0dl9wbGF5cGFnZV9ib3giLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInZpcC5wcHR2LmNvbSIsIGNvbnRhaW5lcjogIi53LXZpZGVvIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICAgICAge2hvc3Q6ICJ3d3cud2FzdS5jbiIsIGNvbnRhaW5lcjogIiNmbGFzaENvbnRlbnQiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInd3dy5hY2Z1bi5jbiIsIGNvbnRhaW5lcjogIiNwbGF5ZXIiLCBuYW1lOiAiRGVmYXVsdCIsIGRpc3BsYXlOb2RlczogW119LAogICAgICAgICAgICB7aG9zdDogInZpcC4xOTA1LmNvbSIsIGNvbnRhaW5lcjogIiNwbGF5ZXIsI3ZvZFBsYXllciIsIG5hbWU6ICJEZWZhdWx0IiwgZGlzcGxheU5vZGVzOiBbXX0sCiAgICAgICAgICAgIHtob3N0OiAid3d3LjE5MDUuY29tIiwgY29udGFpbmVyOiAiI3BsYXllciwjdm9kUGxheWVyIiwgbmFtZTogIkRlZmF1bHQiLCBkaXNwbGF5Tm9kZXM6IFtdfSwKICAgICAgICBdCiAgICB9OwoKICAgIGNsYXNzIEJhc2VDb25zdW1lciB7CiAgICAgICAgY29uc3RydWN0b3IoKSB7CiAgICAgICAgICAgIHRoaXMucGFyc2UgPSAoKSA9PiB7CiAgICAgICAgICAgICAgICB1dGlsLmZpbmRUYXJnZXRFbGUoJ2JvZHknKQogICAgICAgICAgICAgICAgICAgIC50aGVuKChjb250YWluZXIpID0+IHRoaXMucHJlSGFuZGxlKGNvbnRhaW5lcikpCiAgICAgICAgICAgICAgICAgICAgLnRoZW4oKGNvbnRhaW5lcikgPT4gdGhpcy5nZW5lcmF0ZUVsZW1lbnQoY29udGFpbmVyKSkKICAgICAgICAgICAgICAgICAgICAudGhlbigoY29udGFpbmVyKSA9PiB0aGlzLmJpbmRFdmVudChjb250YWluZXIpKQogICAgICAgICAgICAgICAgICAgIC50aGVuKChjb250YWluZXIpID0+IHRoaXMuYXV0b1BsYXkoY29udGFpbmVyKSkKICAgICAgICAgICAgICAgICAgICAudGhlbigoY29udGFpbmVyKSA9PiB0aGlzLnBvc3RIYW5kbGUoY29udGFpbmVyKSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHByZUhhbmRsZShjb250YWluZXIpIHsKICAgICAgICAgICAgX0NPTkZJR18uY3VycmVudFBsYXllck5vZGUuZGlzcGxheU5vZGVzLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7CiAgICAgICAgICAgICAgICB1dGlsLmZpbmRUYXJnZXRFbGUoaXRlbSkKICAgICAgICAgICAgICAgICAgICAudGhlbigob2JqKSA9PiBvYmouc3R5bGUuZGlzcGxheSA9ICdub25lJykKICAgICAgICAgICAgICAgICAgICAuY2F0Y2goZSA9PiBjb25zb2xlLndhcm4oIuS4jeWtmOWcqOWFg+e0oCIsIGUpKTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZXNvbHZlKGNvbnRhaW5lcikpOwogICAgICAgIH0KCiAgICAgICAgZ2VuZXJhdGVFbGVtZW50KGNvbnRhaW5lcikgewogICAgICAgICAgICBHTV9hZGRTdHlsZShgCiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSB7Y3Vyc29yOnBvaW50ZXI7IHBvc2l0aW9uOmZpeGVkOyB0b3A6MTIwcHg7IGxlZnQ6MHB4OyB6LWluZGV4Ojk5OTk5OTk7IHRleHQtYWxpZ246bGVmdDt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSAuaW1nX2JveHt3aWR0aDozMnB4OyBoZWlnaHQ6MzJweDtsaW5lLWhlaWdodDozMnB4O3RleHQtYWxpZ246Y2VudGVyO2JhY2tncm91bmQtY29sb3I6IzFjODRjNjttYXJnaW46MTBweCAwcHg7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0IHtkaXNwbGF5Om5vbmU7IHBvc2l0aW9uOmFic29sdXRlOyBib3JkZXItcmFkaXVzOjVweDsgbGVmdDozMnB4OyB0b3A6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IGJhY2tncm91bmQtY29sb3I6ICMzZjQxNDk7IGJvcmRlcjoxcHggc29saWQgd2hpdGU7cGFkZGluZzoxMHB4IDBweDsgd2lkdGg6MzgwcHg7IG1heC1oZWlnaHQ6NDAwcHg7IG92ZXJmbG93LXk6YXV0bzt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSAudmlwX2xpc3QgbGl7Ym9yZGVyLXJhZGl1czoycHg7IGZvbnQtc2l6ZToxMnB4OyBjb2xvcjojRENEQ0RDOyB0ZXh0LWFsaWduOmNlbnRlcjsgd2lkdGg6Y2FsYygyNSUgLSAxNHB4KTsgbGluZS1oZWlnaHQ6MjFweDsgZmxvYXQ6bGVmdDsgYm9yZGVyOjFweCBzb2xpZCBncmF5OyBwYWRkaW5nOjAgNHB4OyBtYXJnaW46NHB4IDJweDtvdmVyZmxvdzpoaWRkZW47d2hpdGUtc3BhY2U6IG5vd3JhcDt0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczstby10ZXh0LW92ZXJmbG93OmVsbGlwc2lzO30KICAgICAgICAgICAgICAgICAgICAgICAgIyR7X0NPTkZJR18udmlwQm94SWR9IC52aXBfbGlzdCBsaTpob3Zlcntjb2xvcjojMWM4NGM2OyBib3JkZXI6MXB4IHNvbGlkICMxYzg0YzY7fQogICAgICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0IHVse3BhZGRpbmctbGVmdDogMTBweDt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSAudmlwX2xpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFye3dpZHRoOjVweDsgaGVpZ2h0OjFweDt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSAudmlwX2xpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1ie2JveC1zaGFkb3c6aW5zZXQgMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuMik7IGJhY2tncm91bmQ6I0E4QThBODt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSAudmlwX2xpc3Q6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNre2JveC1zaGFkb3c6aW5zZXQgMCAwIDVweCByZ2JhKDAsIDAsIDAsIDAuMik7IGJhY2tncm91bmQ6I0YxRjFGMTt9CiAgICAgICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSBsaS5zZWxlY3RlZHtjb2xvcjojMWM4NGM2OyBib3JkZXI6MXB4IHNvbGlkICMxYzg0YzY7fQoJCQkJCQlgKTsKCiAgICAgICAgICAgIGlmIChfQ09ORklHXy5pc01vYmlsZSkgewogICAgICAgICAgICAgICAgR01fYWRkU3R5bGUoYAogICAgICAgICAgICAgICAgICAgICMke19DT05GSUdfLnZpcEJveElkfSB7dG9wOjMwMHB4O30KICAgICAgICAgICAgICAgICAgICAjJHtfQ09ORklHXy52aXBCb3hJZH0gLnZpcF9saXN0IHt3aWR0aDozMDBweDt9CiAgICAgICAgICAgICAgICAgICAgYCk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxldCB0eXBlXzFfc3RyID0gIiI7CiAgICAgICAgICAgIGxldCB0eXBlXzJfc3RyID0gIiI7CiAgICAgICAgICAgIGxldCB0eXBlXzNfc3RyID0gIiI7CiAgICAgICAgICAgIF9DT05GSUdfLnZpZGVvUGFyc2VMaXN0LmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7CiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLmluY2x1ZGVzKCIxIikpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlXzFfc3RyICs9IGA8bGkgY2xhc3M9Im5xLWxpIiB0aXRsZT0iJHtpdGVtLm5hbWV9MSIgZGF0YS1pbmRleD0iJHtpbmRleH0iPiR7aXRlbS5uYW1lfTwvbGk+YDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUuaW5jbHVkZXMoIjIiKSkgewogICAgICAgICAgICAgICAgICAgIHR5cGVfMl9zdHIgKz0gYDxsaSBjbGFzcz0idGMtbGkiIHRpdGxlPSIke2l0ZW0ubmFtZX0iIGRhdGEtaW5kZXg9IiR7aW5kZXh9Ij4ke2l0ZW0ubmFtZX08L2xpPmA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoaXRlbS50eXBlLmluY2x1ZGVzKCIzIikpIHsKICAgICAgICAgICAgICAgICAgICB0eXBlXzNfc3RyICs9IGA8bGkgY2xhc3M9InRjLWxpIiB0aXRsZT0iJHtpdGVtLm5hbWV9IiBkYXRhLWluZGV4PSIke2luZGV4fSI+JHtpdGVtLm5hbWV9PC9saT5gOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGxldCBhdXRvUGxheSA9ICEhR01fZ2V0VmFsdWUoX0NPTkZJR18uYXV0b1BsYXllcktleSwgbnVsbCkgPyAi5byAIiA6ICLlhbMiOwoKICAgICAgICAgICAgJChjb250YWluZXIpLmFwcGVuZChgCiAgICAgICAgICAgICAgICA8ZGl2IGlkPSIke19DT05GSUdfLnZpcEJveElkfSI+CiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0idmlwX2ljb24iPgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbWdfYm94IiB0aXRsZT0i6YCJ5oup6Kej5p6Q5rqQIiBzdHlsZT0iY29sb3I6d2hpdGU7Zm9udC1zaXplOjE2cHg7Zm9udC13ZWlnaHQ6Ym9sZDtib3JkZXItcmFkaXVzOjVweDsiPjxzcGFuIHN0eWxlPSJjb2xvcjogcmVkOyI+Vjwvc3Bhbj5JPHNwYW4gc3R5bGU9ImNvbG9yOiB5ZWxsb3c7Ij5QPC9zcGFuPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ2aXBfbGlzdCI+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBzdHlsZT0iY29sb3I6IzFjODRjNjsgZm9udC13ZWlnaHQ6IGJvbGQ7IGZvbnQtc2l6ZTogMTZweDsgcGFkZGluZzo1cHggMHB4OyI+W+WGheW1jOaSreaUvl08L2gzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt0eXBlXzFfc3RyfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJjbGVhcjpib3RoOyI+PC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC91bD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aDMgc3R5bGU9ImNvbG9yOiMxYzg0YzY7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDE2cHg7IHBhZGRpbmc6NXB4IDBweDsiPlvlvLnnqpfmkq3mlL7luKbpgInpm4ZdPC9oMz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7dHlwZV8yX3N0cn0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0iY2xlYXI6Ym90aDsiPjwvZGl2PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGgzIHN0eWxlPSJjb2xvcjojMWM4NGM2OyBmb250LXdlaWdodDogYm9sZDsgZm9udC1zaXplOiAxNnB4OyBwYWRkaW5nOjVweCAwcHg7Ij5b5by556qX5pKt5pS+5LiN5bim6YCJ6ZuGXTwvaDM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3R5cGVfM19zdHJ9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9ImNsZWFyOmJvdGg7Ij48L2Rpdj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3VsPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPSJ0ZXh0LWFsaWduOmxlZnQ7Y29sb3I6I0ZGRjtmb250LXNpemU6MTBweDtwYWRkaW5nOjBweCAxMHB4O21hcmdpbi10b3A6MTBweDsiPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPuiHquWKqOino+aekOWKn+iDveivtOaYju+8mjwvYj4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+Jm5ic3A7Jm5ic3A7MeOAgeiHquWKqOino+aekOWKn+iDvem7mOiupOWFs+mXre+8iOiHquWKqOino+aekOWPquaUr+aMgeWGheW1jOaSreaUvua6kO+8iQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxicj4mbmJzcDsmbmJzcDsy44CB5byA5ZCv6Ieq5Yqo6Kej5p6Q77yM572R6aG15omT5byA5ZCO6ISa5pys5bCG5qC55o2u5b2T5YmN6YCJ5Lit55qE6Kej5p6Q5rqQ6Ieq5Yqo6Kej5p6Q6KeG6aKR44CC5aaC6Kej5p6Q5aSx6LSl77yM6K+35omL5Yqo6YCJ5oup5LiN5ZCM55qE6Kej5p6Q5rqQ5bCd6K+VCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyPiZuYnNwOyZuYnNwOzPjgIHmsqHmnInpgInkuK3op6PmnpDmupDlsIbpmo/mnLrpgInlj5bkuIDkuKoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnI+Jm5ic3A7Jm5ic3A7NOOAgeWmguafkOS6m+e9keermeacieS8muWRmOWPr+S7peWFs+mXreiHquWKqOino+aekOWKn+iDvQogICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDwvZGl2PgogICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImltZ19ib3giIGlkPSJ2aXBfYXV0byIgc3R5bGU9ImNvbG9yOndoaXRlO2ZvbnQtc2l6ZToxNnB4O2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyLXJhZGl1czo1cHg7IiB0aXRsZT0i5piv5ZCm5omT5byA6Ieq5Yqo6Kej5p6Q44CC6Iul6Ieq5Yqo6Kej5p6Q5aSx6LSl77yM6K+35omL5Yqo6YCJ5oup5YW25a6D5o6l5Y+j5bCd6K+V77yB77yBIj4ke2F1dG9QbGF5fTwvZGl2PgogICAgICAgICAgICAgICAgPC9kaXY+YCk7CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZXNvbHZlKGNvbnRhaW5lcikpOwogICAgICAgIH0KCiAgICAgICAgYmluZEV2ZW50KGNvbnRhaW5lcikgewogICAgICAgICAgICBjb25zdCB2aXBCb3ggPSAkKGAjJHtfQ09ORklHXy52aXBCb3hJZH1gKTsKICAgICAgICAgICAgaWYgKF9DT05GSUdfLmlzTW9iaWxlKSB7CiAgICAgICAgICAgICAgICB2aXBCb3guZmluZCgiLnZpcF9pY29uIikub24oImNsaWNrIiwgKCkgPT4gdmlwQm94LmZpbmQoIi52aXBfbGlzdCIpLnRvZ2dsZSgpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZpcEJveC5maW5kKCIudmlwX2ljb24iKS5vbigibW91c2VvdmVyIiwgKCkgPT4gdmlwQm94LmZpbmQoIi52aXBfbGlzdCIpLnNob3coKSk7CiAgICAgICAgICAgICAgICB2aXBCb3guZmluZCgiLnZpcF9pY29uIikub24oIm1vdXNlb3V0IiwgKCkgPT4gdmlwQm94LmZpbmQoIi52aXBfbGlzdCIpLmhpZGUoKSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIGxldCBfdGhpcyA9IHRoaXM7CiAgICAgICAgICAgIHZpcEJveC5maW5kKCIudmlwX2xpc3QgLm5xLWxpIikuZWFjaCgobGlJbmRleCwgaXRlbSkgPT4gewogICAgICAgICAgICAgICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhcnNlSW50KCQoaXRlbSkuYXR0cigiZGF0YS1pbmRleCIpKTsKICAgICAgICAgICAgICAgICAgICBHTV9zZXRWYWx1ZShfQ09ORklHXy5hdXRvUGxheWVyVmFsLCBpbmRleCk7CiAgICAgICAgICAgICAgICAgICAgR01fc2V0VmFsdWUoX0NPTkZJR18uZmxhZywgInRydWUiKTsKICAgICAgICAgICAgICAgICAgICBfdGhpcy5zaG93UGxheWVyV2luZG93KF9DT05GSUdfLnZpZGVvUGFyc2VMaXN0W2luZGV4XSk7CiAgICAgICAgICAgICAgICAgICAgdmlwQm94LmZpbmQoIi52aXBfbGlzdCBsaSIpLnJlbW92ZUNsYXNzKCJzZWxlY3RlZCIpOwogICAgICAgICAgICAgICAgICAgICQoaXRlbSkuYWRkQ2xhc3MoInNlbGVjdGVkIik7CiAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfSk7CiAgICAgICAgICAgIHZpcEJveC5maW5kKCIudmlwX2xpc3QgLnRjLWxpIikuZWFjaCgobGlJbmRleCwgaXRlbSkgPT4gewogICAgICAgICAgICAgICAgaXRlbS5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsICgpID0+IHsKICAgICAgICAgICAgICAgICAgICBjb25zdCBpbmRleCA9IHBhcnNlSW50KCQoaXRlbSkuYXR0cigiZGF0YS1pbmRleCIpKTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB2aWRlb09iaiA9IF9DT05GSUdfLnZpZGVvUGFyc2VMaXN0W2luZGV4XTsKICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gdmlkZW9PYmoudXJsICsgd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgICAgICAgICAgICAgR01fb3BlbkluVGFiKHVybCwge2FjdGl2ZTogdHJ1ZSwgaW5zZXJ0OiB0cnVlLCBzZXRQYXJlbnQ6IHRydWV9KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIC8v5Y+z6ZSu56e75Yqo5L2N572uCiAgICAgICAgICAgIHZpcEJveC5tb3VzZWRvd24oZnVuY3Rpb24gKGUpIHsKICAgICAgICAgICAgICAgIGlmIChlLndoaWNoICE9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpCiAgICAgICAgICAgICAgICB2aXBCb3guY3NzKCJjdXJzb3IiLCAibW92ZSIpOwogICAgICAgICAgICAgICAgY29uc3QgcG9zaXRpb25EaXYgPSAkKHRoaXMpLm9mZnNldCgpOwogICAgICAgICAgICAgICAgbGV0IGRpc3RlbmNlWCA9IGUucGFnZVggLSBwb3NpdGlvbkRpdi5sZWZ0OwogICAgICAgICAgICAgICAgbGV0IGRpc3RlbmNlWSA9IGUucGFnZVkgLSBwb3NpdGlvbkRpdi50b3A7CgogICAgICAgICAgICAgICAgJChkb2N1bWVudCkubW91c2Vtb3ZlKGZ1bmN0aW9uIChlKSB7CiAgICAgICAgICAgICAgICAgICAgbGV0IHggPSBlLnBhZ2VYIC0gZGlzdGVuY2VYOwogICAgICAgICAgICAgICAgICAgIGxldCB5ID0gZS5wYWdlWSAtIGRpc3RlbmNlWTsKICAgICAgICAgICAgICAgICAgICBjb25zdCB3aW5kb3dXaWR0aCA9ICQod2luZG93KS53aWR0aCgpOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHdpbmRvd0hlaWdodCA9ICQod2luZG93KS5oZWlnaHQoKTsKCiAgICAgICAgICAgICAgICAgICAgaWYgKHggPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHggPSAwOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoeCA+IHdpbmRvd1dpZHRoIC0gdmlwQm94Lm91dGVyV2lkdGgodHJ1ZSkgLSAxMDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgeCA9IHdpbmRvd1dpZHRoIC0gdmlwQm94Lm91dGVyV2lkdGgodHJ1ZSkgLSAxMDA7CiAgICAgICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgICAgICBpZiAoeSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgeSA9IDA7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh5ID4gd2luZG93SGVpZ2h0IC0gdmlwQm94Lm91dGVySGVpZ2h0KHRydWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHkgPSB3aW5kb3dIZWlnaHQgLSB2aXBCb3gub3V0ZXJIZWlnaHQodHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHZpcEJveC5jc3MoImxlZnQiLCB4KTsKICAgICAgICAgICAgICAgICAgICB2aXBCb3guY3NzKCJ0b3AiLCB5KTsKICAgICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgICAgJChkb2N1bWVudCkubW91c2V1cChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICAgICAgJChkb2N1bWVudCkub2ZmKCdtb3VzZW1vdmUnKTsKICAgICAgICAgICAgICAgICAgICB2aXBCb3guY3NzKCJjdXJzb3IiLCAicG9pbnRlciIpOwogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAkKGRvY3VtZW50KS5jb250ZXh0bWVudShmdW5jdGlvbiAoZSkgewogICAgICAgICAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTsKICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgIH0pOwogICAgICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gcmVzb2x2ZShjb250YWluZXIpKTsKICAgICAgICB9CgogICAgICAgIGF1dG9QbGF5KGNvbnRhaW5lcikgewogICAgICAgICAgICBjb25zdCB2aXBCb3ggPSAkKGAjJHtfQ09ORklHXy52aXBCb3hJZH1gKTsKICAgICAgICAgICAgdmlwQm94LmZpbmQoIiN2aXBfYXV0byIpLm9uKCJjbGljayIsIGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgIGlmICghIUdNX2dldFZhbHVlKF9DT05GSUdfLmF1dG9QbGF5ZXJLZXksIG51bGwpKSB7CiAgICAgICAgICAgICAgICAgICAgR01fc2V0VmFsdWUoX0NPTkZJR18uYXV0b1BsYXllcktleSwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgJCh0aGlzKS5odG1sKCLlhbMiKTsKICAgICAgICAgICAgICAgICAgICAkKHRoaXMpLmF0dHIoInRpdGxlIiwgIuaYr+WQpuaJk+W8gOiHquWKqOino+aekOOAguiLpeiHquWKqOino+aekOWksei0pe+8jOivt+aJi+WKqOmAieaLqeWFtuWug+aOpeWPo+Wwneivle+8ge+8gSIpOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBHTV9zZXRWYWx1ZShfQ09ORklHXy5hdXRvUGxheWVyS2V5LCAidHJ1ZSIpOwogICAgICAgICAgICAgICAgICAgICQodGhpcykuaHRtbCgi5byAIik7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7CiAgICAgICAgICAgICAgICB9LCAyMDApOwogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIGlmICghIUdNX2dldFZhbHVlKF9DT05GSUdfLmF1dG9QbGF5ZXJLZXksIG51bGwpKSB7CiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdFBsYXllcihjb250YWluZXIpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiByZXNvbHZlKGNvbnRhaW5lcikpOwogICAgICAgIH0KCiAgICAgICAgc2VsZWN0UGxheWVyKGNvbnRhaW5lcikgewogICAgICAgICAgICBsZXQgaW5kZXggPSBHTV9nZXRWYWx1ZShfQ09ORklHXy5hdXRvUGxheWVyVmFsLCAyKTsKICAgICAgICAgICAgbGV0IGF1dG9PYmogPSBfQ09ORklHXy52aWRlb1BhcnNlTGlzdFtpbmRleF07CiAgICAgICAgICAgIGxldCBfdGggPSB0aGlzOwogICAgICAgICAgICBpZiAoYXV0b09iai50eXBlLmluY2x1ZGVzKCIxIikpIHsKICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgICAgIF90aC5zaG93UGxheWVyV2luZG93KGF1dG9PYmopOwogICAgICAgICAgICAgICAgICAgIGNvbnN0IHZpcEJveCA9ICQoYCMke19DT05GSUdfLnZpcEJveElkfWApOwogICAgICAgICAgICAgICAgICAgIHZpcEJveC5maW5kKGAudmlwX2xpc3QgW3RpdGxlPSIke2F1dG9PYmoubmFtZX0xIl1gKS5hZGRDbGFzcygic2VsZWN0ZWQiKTsKICAgICAgICAgICAgICAgICAgICAkKGNvbnRhaW5lcikuZmluZCgiI3ZpcF9hdXRvIikuYXR0cigidGl0bGUiLCBg6Ieq5Yqo6Kej5p6Q5rqQ77yaJHthdXRvT2JqLm5hbWV9YCk7CiAgICAgICAgICAgICAgICB9LCAyNTAwKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgc2hvd1BsYXllcldpbmRvdyh2aWRlb09iaikgewogICAgICAgICAgICB1dGlsLmZpbmRUYXJnZXRFbGUoX0NPTkZJR18uY3VycmVudFBsYXllck5vZGUuY29udGFpbmVyKQogICAgICAgICAgICAgICAgLnRoZW4oKGNvbnRhaW5lcikgPT4gewogICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSB2aWRlb09iai50eXBlOwogICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSB2aWRlb09iai51cmwgKyB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgICAgICAgICBpZiAodHlwZS5pbmNsdWRlcygiMSIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwucmVvbXZlVmlkZW8oKTsKICAgICAgICAgICAgICAgICAgICAgICAgJChjb250YWluZXIpLmVtcHR5KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICQoY29udGFpbmVyKS5lbXB0eSgpOwogICAgICAgICAgICAgICAgICAgICAgICBsZXQgaWZyYW1lRGl2Q3NzID0gIndpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7ei1pbmRleDo5OTk5OTk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKF9DT05GSUdfLmlzTW9iaWxlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVEaXZDc3MgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MjIwcHg7ei1pbmRleDo5OTk5OTk7IjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoX0NPTkZJR18uaXNNb2JpbGUgJiYgd2luZG93LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaXFpeWkuY29tIikgIT09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJhbWVEaXZDc3MgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MjIwcHg7ei1pbmRleDo5OTk5OTk7bWFyZ2luLXRvcDotNTYuMjUlOyI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgJChjb250YWluZXIpLmFwcGVuZChgPGRpdiBzdHlsZT0iJHtpZnJhbWVEaXZDc3N9Ij48aWZyYW1lIGlkPSJpZnJhbWUtcGxheWVyLTRhNWI2YyIgc3JjPSIke3VybH0iIHN0eWxlPSJib3JkZXI6bm9uZTsiIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSI+PC9pZnJhbWU+PC9kaXY+YCk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSk7CiAgICAgICAgfQoKICAgICAgICBwb3N0SGFuZGxlKGNvbnRhaW5lcikgewogICAgICAgICAgICBpZiAoISFHTV9nZXRWYWx1ZShfQ09ORklHXy5hdXRvUGxheWVyS2V5LCBudWxsKSkgewogICAgICAgICAgICAgICAgdXRpbC51cmxDaGFuZ2VSZWxvYWQoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxldCBvbGRIcmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7CiAgICAgICAgICAgICAgICBsZXQgaW50ZXJ2YWwgPSBzZXRJbnRlcnZhbCgoKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgbGV0IG5ld0hyZWYgPSB3aW5kb3cubG9jYXRpb24uaHJlZjsKICAgICAgICAgICAgICAgICAgICBpZiAob2xkSHJlZiAhPT0gbmV3SHJlZikgewogICAgICAgICAgICAgICAgICAgICAgICBvbGRIcmVmID0gbmV3SHJlZjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEhR01fZ2V0VmFsdWUoX0NPTkZJR18uZmxhZywgbnVsbCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSwgMTAwMCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfQoKICAgIGNsYXNzIERlZmF1bHRDb25zdW1lciBleHRlbmRzIEJhc2VDb25zdW1lciB7CiAgICB9CgogICAgcmV0dXJuIHsKICAgICAgICBzdGFydDogKCkgPT4gewogICAgICAgICAgICBHTV9zZXRWYWx1ZShfQ09ORklHXy5mbGFnLCBudWxsKTsKICAgICAgICAgICAgbGV0IG1hbGxDYXNlID0gJ0RlZmF1bHQnOwogICAgICAgICAgICBsZXQgcGxheWVyTm9kZSA9IF9DT05GSUdfLnBsYXllckNvbnRhaW5lcnMuZmlsdGVyKHZhbHVlID0+IHZhbHVlLmhvc3QgPT09IHdpbmRvdy5sb2NhdGlvbi5ob3N0KTsKICAgICAgICAgICAgaWYgKHBsYXllck5vZGUgPT09IG51bGwgfHwgcGxheWVyTm9kZS5sZW5ndGggPD0gMCkgewogICAgICAgICAgICAgICAgY29uc29sZS53YXJuKHdpbmRvdy5sb2NhdGlvbi5ob3N0ICsgIuivpee9keermeaaguS4jeaUr+aMge+8jOivt+iBlOezu+S9nOiAhe+8jOS9nOiAheWwhuS8muesrOS4gOaXtumXtOWkhOeQhu+8iOazqOaEj++8muivt+iusOW+l+aPkOS+m+aciemXrumimOeahOe9keWdgO+8iSIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIF9DT05GSUdfLmN1cnJlbnRQbGF5ZXJOb2RlID0gcGxheWVyTm9kZVswXTsKICAgICAgICAgICAgbWFsbENhc2UgPSBfQ09ORklHXy5jdXJyZW50UGxheWVyTm9kZS5uYW1lOwogICAgICAgICAgICBjb25zdCB0YXJnZXRDb25zdW1lciA9IGV2YWwoYG5ldyAke21hbGxDYXNlfUNvbnN1bWVyYCk7CiAgICAgICAgICAgIHRhcmdldENvbnN1bWVyLnBhcnNlKCk7CiAgICAgICAgfQogICAgfQoKfSkoKTsKCihmdW5jdGlvbiAoKSB7CiAgICBzdXBlclZpcC5zdGFydCgpOwp9KSgpOw==
Add Comment
Please, Sign In to add comment