Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@长风音乐🎶@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiIiLCJ0aXRsZSI6IumVv+mjjumfs+S5kPCfjrYiLCJhdXRob3IiOiLnvJjliIYiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IyNodHRwczovL2NmeXkuY2NmeUFsbD9zcz0jI2Z5cGFnZSIsInZlcnNpb24iOjIwMjQwMjAzLCJjb2xfdHlwZSI6ImNhcmRfcGljXzMiLCJjbGFzc19uYW1lIjoi6Z+z5LmQJueUteinhibmrYzljZUm5q2M5omLJk1WJueUteWPsCIsInR5cGUiOiJtdXNpYyIsImNsYXNzX3VybCI6Ii95aW55dWUvJi9kcy8mL21wMy9rZ2dkLnBocCYvbXAzL2dzLnBocCYvbXAzLyMmL2ZtLyIsImFyZWFfbmFtZSI6IuaKlumfsyblv6vmiYsmWVkm5YWt6Ze05oi/JuengOiJsibkuZDll6gm5Y2D5biGJuS5iOS5iCbmlpfpsbwm576a6JCMJuWTjuexsybmmKDlrqImOTXnp4Am5aWH56eAJiIsImFyZWFfdXJsIjoiL0NmL2R5emJqc29uLnBocCYvQ2Yva3MucGhwJi9DZi9ZWS5waHAmL0NmLzZmLnBocCYvQ2YveHMucGhwJi9DZi9saC5waHAmL0NmL3FmLnBocCYvQ2YvbW0ucGhwJi9DZi9keXUucGhwJi9DZi9sbS5waHAmL0NmL2FtLnBocCYvQ2YvaWsucGhwJi9DZi85NXgucGhwJi9DZi9xeC5waHAmIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoi5Zeo56eAJuaIkeengCblk5Tlk6km5Lq65Lq6Jui/hembtybnjKvmkq0m5rWq5pKtJuiKseakkibooZfllLEm5pif5YWJJkNDJktLJk5PVybmo4noirHns5YiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiL0NmL2h4LnBocCYvQ2Yvd3gucGhwJi9DZi9iemIucGhwJi9DZi9yci5waHAmL0NmL3hsLnBocCYvQ2YvbXoucGhwJi9DZi9sYi5waHAmL0NmL2hqLnBocCYvQ2YvamMucGhwJi9DZi94Z3piLnBocCYvQ2YvY2MucGhwJi9DZi9ray5waHAmL0NmL25vdy5waHAmL0NmL21odC5waHAiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBkID0gW107XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS9sYXp5Jywge30pKS5ydWxlKTtcbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge8KgwqDCoMKgwqDCoMKgXG4gICAgcmV0dXJuICcjJyArICgnMDAwMDAnICsgKE1hdGgucmFuZG9tKCkgKiAweDEwMDAwMDAgPDwgMCkudG9TdHJpbmcoMTYpKS5zdWJzdHIoLTYpO8KgwqDCoMKgwqBcbn1cbiQucmVxdWlyZShcIkxvYWRpbmdcIikuTG9hZGluZygpXG5NWV9VUkwgPSBNWV9VUkwuc3BsaXQoXCIjI1wiKVsxXVxudmFyIGZ5YWxsID0gTVlfUlVMRS5jbGFzc191cmw7XG5pZiAoL0NmLy50ZXN0KE1ZX1VSTCkpIHtcbiAgICAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvemI/cnVsZT3plb/po47pn7PkuZDwn462XCIpXG59IGVsc2VcbiAgICBzd2l0Y2ggKGZ5YWxsKSB7XG4gICAgICAgIGNhc2UgJy9tcDMva2dnZC5waHAnOlxuICAgICAgICAgICAgJC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL2dkP3J1bGU96ZW/6aOO6Z+z5LmQ8J+OtlwiKVxuICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgY2FzZSAnL2ZtLyc6XG4gICAgICAgICAgICAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvZHQ/cnVsZT3plb/po47pn7PkuZDwn462XCIpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICcvZHMvJzpcbiAgICAgICAgICAgICQucmVxdWlyZShcImhpa2VyOi8vcGFnZS9kcz9ydWxlPemVv+mjjumfs+S5kPCfjrZcIilcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJy9tcDMvZ3MucGhwJzpcbiAgICAgICAgICAgICQucmVxdWlyZShcImhpa2VyOi8vcGFnZS9ncz9ydWxlPemVv+mjjumfs+S5kPCfjrZcIilcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgIGNhc2UgJy9tcDMvIyc6XG4gICAgICAgICAgICAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvTVY/cnVsZT3plb/po47pn7PkuZDwn462XCIpXG4gICAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlICcveWlueXVlLyc6XG4gICAgICAgICAgICAkLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2UvbXAzP3J1bGU96ZW/6aOO6Z+z5LmQ8J+OtlwiKVxuICAgICAgICAgICAgYnJlYWtcbiAgICB9XG4kLnJlcXVpcmUoXCJoaWtlcjovL3BhZ2Uv5pu05pawP3J1bGU96ZW/6aOO6Z+z5LmQ8J+OtlwiKVxuTVlfUEFHRSA9PSAxID8gc2V0UHJlUmVzdWx0KGQpIDogc2V0UmVzdWx0KGQpO1xuZGVsZXRlSXRlbUJ5Q2xzKCdsb2FkaW5nX2dpZicpOyIsInNlYXJjaF91cmwiOiJoaWtlcjovL2VtcHR5P2tleT0qKiZwPWZ5cGFnZSIsImdyb3VwIjoiI+e8mOWIhiIsInNlYXJjaEZpbmQiOiJqczpcbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2xhenknLCB7fSkpLnJ1bGUpO1xubGV0IGNvbmZpZyA9IFt7XG4gICAgXCJuYW1lXCI6IFwi6YW35oiR6Z+z5LmQXCIsXG4gICAgXCJ1cmxcIjogXCJodHRwczovL2NmeXkuY2MvbXAzL2t3LnBocD9zcz0qKlwiXG59LCB7XG4gICAgXCJuYW1lXCI6IFwi6YW354uX6Z+z5LmQXCIsXG4gICAgXCJ1cmxcIjogXCJodHRwczovL2NmeXkuY2MvbXAzL2tnLnBocD9zcz0qKlwiXG59LCB7XG4gICAgXCJuYW1lXCI6IFwi572R5piT6Z+z5LmQXCIsXG4gICAgXCJ1cmxcIjogXCJodHRwczovL2NmeXkuY2MvbXAzLzE2My5waHA/c3M9KipcIlxufSwge1xuICAgIFwibmFtZVwiOiBcIk1WXCIsXG4gICAgXCJ1cmxcIjogXCJodHRwczovL2NmeXkuY2MvbXA0L2tnL2NmLnBocD9zcz0qKlwiXG5cbn1dXG5sZXQgcnVsZXMgPSBjb25maWcubWFwKChzb3VyY2UpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0aXRsZTogc291cmNlLm5hbWUsXG4gICAgICAgIHNlYXJjaF91cmw6ICdoaWtlcjovL2VtcHR5P2tleT0qKiZwPWZ5cGFnZScsXG4gICAgICAgIHNlYXJjaEZpbmQ6ICdqczonICsgJC50b1N0cmluZygobmFtZSwgdXJsLCBsYXp5KSA9PiB7XG4gICAgICAgICAgICBsZXQgZCA9IFtdO1xuICAgICAgICAgICAga2V5ID0gZ2V0UGFyYW0oJ2tleScpO1xuICAgICAgICAgICAgdmFyIHVybCA9IHVybC5yZXBsYWNlKC9cXCpcXCovLCBrZXkpO1xuICAgICAgICAgICAgaWYgKG5hbWUgPT09ICdNVicpIHtcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHBkZmEocmVxdWVzdCh1cmwsIHt9KSwgJ2JvZHkmJi5qYycpXG4gICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHBkZmgoZGF0YSwgJ2EmJnRpdGxlJyksXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXNjOiBkYXRhLmF1dGhvcixcbiAgICAgICAgICAgICAgICAgICAgICAgIGltZzogcGRmaChkYXRhLCAnaW1nJiZzcmMnKSArICdAUmVmZXJlcj0nLFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9jZnl5LmNjL21wNC9rZy8nICsgcGRmaChkYXRhLCAnYSYmaHJlZicpICsgbGF6eSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnJyxcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSkuRGF0YVxuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBkYXRhLnBpY1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEvaHR0cC8udGVzdChwaWMpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczonICsgcGljXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRhdGEuYXV0aG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltZzogcGljICsgJ0BSZWZlcmVyPScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBkYXRhLnVybCArICQoXCJcIikubGF6eVJ1bGUoKGxyYykgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsczogW2lucHV0XSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCBkYXRhLmxyYyksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xuICAgICAgICB9LCBzb3VyY2UubmFtZSwgc291cmNlLnVybCwgbGF6eSlcbiAgICB9O1xufSlcbnNldFJlc3VsdChbe1xuICAgIHRpdGxlOiBcIueCueaIkeW8gOWni+iBmuaQnFwiLFxuICAgIHVybDogXCJoaWtlcjovL3NlYXJjaD9zPVwiICsgZ2V0UGFyYW0oXCJrZXlcIiksXG4gICAgZXh0cmE6IHtcbiAgICAgICAgcnVsZXM6ICQudG9TdHJpbmcoKHJ1bGVzKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4gcnVsZXNcbiAgICAgICAgfSwgcnVsZXMpXG4gICAgfVxufV0pIiwiZGV0YWlsX2NvbF90eXBlIjoiY2FyZF9waWNfMyIsImRldGFpbF9maW5kX3J1bGUiOiJqczpcbnZhciBkID0gW107XG5odG1sID0gZ2V0UmVzQ29kZSgpO1xuaWYgKE1ZX1BBR0UgPT0gMSkge1xuICAgIHZhciBhcnIgPSBbXCLphbfmiJHpn7PkuZBcIiwgXCLnvZHmmJPpn7PkuZBcIiwgXCLphbfni5fpn7PkuZBcIl1cbiAgICBhcnIuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgeHkgPSAn4oCY4oCY4oCZ4oCZPGI+PHNwYW4gc3R5bGU9XCJjb2xvcjogIzFhYWQxOVwiPicgKyBpdGVtICsgJzwvc3Bhbj48L2I+JztcbiAgICAgICAgdmFyIHRpdGxlID0gaXRlbSA9PT0gZ2V0TXlWYXIoJ2ZsJywgJ+mFt+aIkemfs+S5kCcpID8geHkgOiBpdGVtO1xuICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh0YSkgPT4ge1xuICAgICAgICAgICAgICAgIHB1dE15VmFyKCdmbCcsIHRhKVxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcbiAgICAgICAgICAgICAgICByZXR1cm4gXCJoaWtlcjovL2VtcHR5XCJcbiAgICAgICAgICAgIH0sIGl0ZW0pLFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnLFxuICAgICAgICB9KVxuICAgIH0pO1xuICAgICQucmVxdWlyZShcIkxvYWRpbmdcIikuTG9hZGluZygpO1xufVxubGV0IG1vZGUgPSBnZXRNeVZhcignZmwnLCAn6YW35oiR6Z+z5LmQJylcbnN3aXRjaCAobW9kZSkge1xuICAgIGNhc2UgJ+mFt+aIkemfs+S5kCc6XG4gICAgICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShodG1sKS5EYXRhXG4gICAgICAgIGJyZWFrXG4gICAgY2FzZSAn572R5piT6Z+z5LmQJzpcbiAgICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoTVlfVVJMLnJlcGxhY2UoJ2t3JywgJzE2MycpLCB7fSkpLkRhdGFcbiAgICAgICAgYnJlYWtcbiAgICBjYXNlICfphbfni5fpn7PkuZAnOlxuICAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwucmVwbGFjZSgna3cnLCAna2cnKSwge30pKS5EYXRhXG4gICAgICAgIGJyZWFrXG59XG50cnkge1xuICAgIGxpc3QuZm9yRWFjaChkYXRhID0+IHtcbiAgICAgICAgdmFyIHBpYyA9IGRhdGEucGljXG4gICAgICAgIGlmICghL2h0dHAvLnRlc3QocGljKSkge1xuICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczonICsgcGljXG4gICAgICAgIH1cbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLFxuICAgICAgICAgICAgZGVzYzogZGF0YS5hdXRob3IsXG4gICAgICAgICAgICBpbWc6IHBpYyArICdAUmVmZXJlcj0nLFxuICAgICAgICAgICAgdXJsOiBkYXRhLnVybCArICQoXCJcIikubGF6eVJ1bGUoKGxyYykgPT4ge1xuICAgICAgICAgICAgICAgIGlmICgvXFwvMTYzXFwvLy50ZXN0KGlucHV0KSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgbHJjID0gcmVxdWVzdChscmMsIHt9KS5yZXBsYWNlKC9cXFsvZywgJ1xcblsnKS5yZXBsYWNlKC9bXFxzXFxTXSo/XFxbLywgJ1snKS5yZXBsYWNlKC9bXFxzXFxTXSpcXD4vLCAnJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgICAgICAgIHVybHM6IFtpbnB1dF0sXG4gICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmNcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfSwgZGF0YS5scmMpLFxuICAgICAgICAgICAgY29sX3R5cGU6ICcnLFxuICAgICAgICB9KVxuICAgIH0pXG59IGNhdGNoIChlKSB7fVxuTVlfUEFHRSA9PSAxID8gc2V0UHJlUmVzdWx0KGQpIDogc2V0UmVzdWx0KGQpO1xuZGVsZXRlSXRlbUJ5Q2xzKCdsb2FkaW5nX2dpZicpOyIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIiLCJ1YSI6Im1vYmlsZSIsInByZVJ1bGUiOiIiLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55u05pKtXCIsXCJwYXRoXCI6XCJ6YlwiLFwicnVsZVwiOlwiIHZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgdHJ5IHtcXG4gICAgICAgICB2YXIgdXJsID0gZmV0Y2goaW5wdXQpLm1hdGNoKC91cmw6ICcoLio/KScvKVsxXTtcXG4gICAgICAgICB1cmwgPSB1cmwuc3RhcnRzV2l0aCgnaHR0cCcpID8gdXJsIDogJ2h0dHBzOicgKyB1cmw7XFxuICAgICAgICAgcmV0dXJuIHVybC5yZXBsYWNlKC9cXFxcXFxcXHUwMDI2L2csICcmJylcXG4gICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICByZXR1cm4gaW5wdXRcXG4gICAgIH1cXG4gfSk7XFxuXFxuIGZ1bmN0aW9uIGNvbG9yKGEsIGIsIHR4dCkge1xcbiAgICAgcmV0dXJuIGEgPT0gYiA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0nICsgZ2V0UmFuZ2VDb2xvcnMoKSArICc+JyArIHR4dCArICc8L2ZvbnQ+PC9iPicgOiB0eHRcXG4gfVxcbiBpZiAoTVlfVVJMLmluY2x1ZGVzKCdkeXpianNvbi5waHAnKSkge1xcbiAgICAgTVlfVVJMID0gTVlfVVJMLnJlcGxhY2UoJ3NzPScsICdwPScpICsgTVlfUEFHRSArICcmaWQ9JztcXG4gICAgIGlmIChNWV9QQUdFID09IDEpIHtcXG4gICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgIH0pO1xcbiAgICAgICAgIFt7XFxuICAgICAgICAgICAgIOmfs+S5kDogJzI3MDcnXFxuICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICDmg4XmhJ86ICcyODM2J1xcbiAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAg6Iie6LmIOiAnMjcyNidcXG4gICAgICAgICB9LCB7XFxuICAgICAgICAgICAgIOaIt+WkljogJzI3NDInXFxuICAgICAgICAgfV0uZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgdGl0bGUgPSBPYmplY3Qua2V5cyhpdGVtKVswXTtcXG4gICAgICAgICAgICAgaWQgPSBPYmplY3QudmFsdWVzKGl0ZW0pWzBdO1xcbiAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgdGl0bGU6IGNvbG9yKGlkLCBnZXRNeVZhcign5oqW6Z+zJywgJzI3MDcnKSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCfmipbpn7MnLCBpZClcXG4gICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICB9LCBpZCksXFxuICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgIH0pXFxuICAgICAgICAgfSlcXG4gICAgIH1cXG4gICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShmZXRjaChNWV9VUkwgKyBnZXRNeVZhcign5oqW6Z+zJywgJzI3MDcnKSkpLkRhdGE7XFxubG9nKGxpc3RbMF0pXFxuICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgdGl0bGU6IGl0ZW0uanMsXFxuICAgICAgICAgICAgIGRlc2M6ICfop4LkvJfwn5KDOicraXRlbS5neixcXG4gICAgICAgICAgICAgaW1nOiBpdGVtLnRwLFxcbiAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaW5wdXQpID0+IHtcXG4gICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgICAgICAgbmFtZXM6IFsnZmx2JywgJ2hscyddLFxcbiAgICAgICAgICAgICAgICAgICAgIHVybHM6IFtpbnB1dC5mbHYsIGlucHV0Lmhsc11cXG4gICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgfSlcXG4gICAgIH0pXFxuIH0gZWxzZVxcbiBpZiAoTVlfVVJMLmluY2x1ZGVzKCdZWScpKSB7XFxuICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICB9KTtcXG4gICAgICAgICBsZXQgYmplY3QgPSBbe1xcbiAgICAgICAgICAgICDpn7PkuZA6ICdodHRwczovL3d3dy55eS5jb20vbW9yZS9wYWdlLmFjdGlvbj9tb2R1bGVJZD0zMDgmcGFnZT0xJmJpej1zaW5nJnN1YkJpej1pZHgmcGFnZVNpemU9MzAnXFxuICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICDohLHlj6Pnp4A6ICdodHRwczovL3d3dy55eS5jb20vbW9yZS9wYWdlLmFjdGlvbj9iaXo9dGFsayZzdWJCaXo9aWR4JnBhZ2U9MSZtb2R1bGVJZD0zMjgmcGFnZVNpemU9MzAnXFxuICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICDoiJ7ouYg6ICdodHRwczovL3d3dy55eS5jb20vbW9yZS9wYWdlLmFjdGlvbj9iaXo9ZGFuY2Umc3ViQml6PWlkeCZwYWdlPTEmbW9kdWxlSWQ9MzEzJnBhZ2VTaXplPTMwJ1xcbiAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAg5oi35aSWOiAnaHR0cHM6Ly93d3cueXkuY29tL21vcmUvcGFnZS5hY3Rpb24/Yml6PXJlZCZzdWJCaXo9aWR4JnBhZ2U9MSZtb2R1bGVJZD0xODcyJnBhZ2VTaXplPTMwJ1xcbiAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAg6aKc5YC8OiAnaHR0cHM6Ly93d3cueXkuY29tL21vcmUvcGFnZS5hY3Rpb24/Yml6PXByZXR0eSZzdWJCaXo9aWR4JnBhZ2U9MSZtb2R1bGVJZD00NDkyMzcmcGFnZVNpemU9MzAnXFxuICAgICAgICAgfSAse1xcbiAgICAgICAgICAgICDllorpuqY6ICdodHRwczovL3d3dy55eS5jb20vbW9yZS9wYWdlLmFjdGlvbj9iaXo9bWMmc3ViQml6PWlkeCZwYWdlPTEmbW9kdWxlSWQ9MzIyJnBhZ2VTaXplPTIwJ1xcbiAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAg5L2T6IKyOiAnaHR0cHM6Ly93d3cueXkuY29tL21vcmUvcGFnZS5hY3Rpb24/Yml6PXNwb3J0JnN1YkJpej1pZHgmcGFnZT0xJm1vZHVsZUlkPTQ0OTM1OSZwYWdlU2l6ZT0zMCdcXG4gICAgICAgICB9LCB7XFxuICAgICAgICAgICAgIOS6jOasoeWFgzogJ2h0dHBzOi8vd3d3Lnl5LmNvbS9tb3JlL3BhZ2UuYWN0aW9uP2Jpej1jYXImc3ViQml6PWlkeCZwYWdlPTEmbW9kdWxlSWQ9MTg3NyZwYWdlU2l6ZT0zMCdcXG4gICAgICAgICB9XTtcXG5sZXQgYmplY3RzID0gW3tcXG4gICAgICAgICAgICAg546L6ICF6I2j6ICAOiAnaHR0cHM6Ly93d3cueXkuY29tL21vcmUvcGFnZS5hY3Rpb24/Yml6PWdhbWUmc3ViQml6PWlkeCZwYWdlPTEmbW9kdWxlSWQ9MTE4MCZwYWdlU2l6ZT0zMCdcXG4gICAgICAgICB9LCB7XFxuICAgICAgICAgICAgIOWSjOW5s+eyvuiLsTogJ2h0dHBzOi8vd3d3Lnl5LmNvbS9tb3JlL3BhZ2UuYWN0aW9uP2Jpej1jaGlja2VuJnN1YkJpej1janpjJnBhZ2U9MSZtb2R1bGVJZD0xNzc2JnBhZ2VTaXplPTYwJ1xcbiAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAg57u85ZCI5ri45oiPOiAnaHR0cHM6Ly93d3cueXkuY29tL21vcmUvcGFnZS5hY3Rpb24/Yml6PWNoaWNrZW4mc3ViQml6PWRqcnkmcGFnZT0xJm1vZHVsZUlkPTM2ODcmcGFnZVNpemU9NjAnXFxuICAgICAgICAgfV07XFxuaWYgKE1ZX1BBR0UgPT0gMSkge1xcbmJqZWN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgIHRpdGxlID0gT2JqZWN0LmtleXMoaXRlbSlbMF07XFxuICAgICAgICAgICAgIGlkID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcXG4gICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgIHRpdGxlOiBjb2xvcihpZCwgZ2V0TXlWYXIoJ3l5JywgYmplY3RbMF0u6Z+z5LmQKSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd5eScsIGlkKVxcbiAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgIH0sIGlkKSxcXG4gICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgfSlcXG4gICAgICAgICB9KVxcbmQucHVzaCh7XFxuICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgfSk7XFxuYmplY3RzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgIHRpdGxlID0gT2JqZWN0LmtleXMoaXRlbSlbMF07XFxuICAgICAgICAgICAgIGlkID0gT2JqZWN0LnZhbHVlcyhpdGVtKVswXTtcXG4gICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgIHRpdGxlOiBjb2xvcihpZCwgZ2V0TXlWYXIoJ3l5JywgYmplY3RbMF0u6Z+z5LmQKSwgdGl0bGUpLFxcbiAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKCd5eScsIGlkKVxcbiAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKVxcbiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgIH0sIGlkKSxcXG4gICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgICAgICAgfSlcXG4gICAgICAgICB9KVxcbiAgICAgfVxcblxcbiAgICAgeXkgPSBnZXRNeVZhcigneXknLCBiamVjdFswXS7pn7PkuZApLnJlcGxhY2UoJ3BhZ2U9MScsJ3BhZ2U9JytNWV9QQUdFKTtcXG4gICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShmZXRjaCh5eSkpLmRhdGEuZGF0YTtcXG5cXG4gICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICB0aXRsZTogaXRlbS5kZXNjLFxcbiAgICAgICAgICAgICBkZXNjOiAn8J+UpScraXRlbS51c2VycyxcXG4gICAgICAgICAgICAgaW1nOiBpdGVtLnRodW1iLFxcbiAgICAgICAgICAgICB1cmw6ICdodHRwczovL2NmeXkuY2MvYXBpL3l5LycgKyBpdGVtLnNpZCArICcubTN1OCcgKyBsYXp5LFxcbiAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgfSlcXG4gICAgIH0pXFxuIH0gZWxzZVxcbiBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICB0cnkge1xcbiAgICAgICAgIGxldCBsaXN0ID0gSlNPTi5wYXJzZShmZXRjaChNWV9VUkwpKTtcXG4gICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS51c2VybmFtZSxcXG4gICAgICAgICAgICAgICAgIGltZzogaXRlbS5waWMsXFxuICAgICAgICAgICAgICAgICB1cmw6IE1ZX0hPTUUgKyAnL2NmLzYvJyArIGl0ZW0ucmlkICsgJy5mbHYnICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgICAgICAgfSlcXG4gICAgICAgICB9KVxcbiAgICAgfSBjYXRjaCAoZSkge31cXG5cXG4gICAgIGZ1bmN0aW9uIOmAmueUqChNWV9VUkwpIHtcXG4gICAgICAgICBpZiAoTVlfVVJMLmluY2x1ZGVzKCdrcy5waHAnKSkge1xcbiAgICAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgIFt7XFxuICAgICAgICAgICAgICAgICAgICAg6aKc5YC8OiAnMTAwMDAwNidcXG4gICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICDmiY3oibo6ICcxMDAwMDA0J1xcbiAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgIOmfs+S5kDogJzEwMDAwMDMnXFxuICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAg5oOF5oSfOiAnMTAwMDAwNydcXG4gICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICDoiJ7ouYg6ICcxMDAwMDAyJ1xcbiAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgIOiEseWPo+engDogJzEwMDAwMDUnXFxuICAgICAgICAgICAgICAgICB9XS5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgIHRpdGxlID0gT2JqZWN0LmtleXMoaXRlbSlbMF07XFxuICAgICAgICAgICAgICAgICAgICAgaWQgPSBPYmplY3QudmFsdWVzKGl0ZW0pWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBjb2xvcihpZCwgZ2V0TXlWYXIoJ+W/q+aJiycsICcxMDAwMDA2JyksIHRpdGxlKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+W/q+aJiycsIGlkKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgIHZhciBodG1sID0gZmV0Y2goTVlfVVJMICsgZ2V0TXlWYXIoJ+W/q+aJiycsICcxMDAwMDA2JykpO1xcbiAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgIGh0bWwgPSBmZXRjaChNWV9VUkwpO1xcbiAgICAgICAgIH1cXG4gICAgICAgICBsZXQgbGlzdCA9IHBkZmEoaHRtbCwgJ2JvZHkmJnAnKTtcXG4gICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgIGltZyA9IHBkZmgoaXRlbSwgJ2ltZyYmc3JjJyk7XFxuICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChpdGVtLCAnVGV4dCcpLnNwbGl0KCctJylbMF0sXFxuICAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sICdUZXh0Jykuc3BsaXQoJy0nKVsxXSxcXG4gICAgICAgICAgICAgICAgIGltZzogaW1nLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGltZyA6ICdodHRwczonICsgaW1nLFxcbiAgICAgICAgICAgICAgICAgdXJsOiBNWV9IT01FICsgcGRmaChpdGVtLCAnYSYmaHJlZicpICsgbGF6eSxcXG4gICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgICAgICAgICAgfSlcXG4gICAgICAgICB9KVxcbiAgICAgfVxcbiAgICAgaWYgKE1ZX1VSTC5pbmNsdWRlcygna3MucGhwJykpIHtcXG4gICAgICAgICDpgJrnlKgoTVlfVVJMLnJlcGxhY2UoJ3NzPScsICdpZD0nKSlcXG4gICAgIH0gZWxzZVxcbiAgICAgaWYgKE1ZX1VSTC5pbmNsdWRlcygnbm93LnBocCcpKSB7XFxuICAgICAgICAg6YCa55SoKE1ZX1VSTC5yZXBsYWNlKCdzcz0nLCAnaWQ9MCcpKVxcbiAgICAgfSBlbHNlIHtcXG4gICAgICAgICDpgJrnlKgoTVlfVVJMKVxcbiAgICAgfVxcbiB9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnlLXlj7BcIixcInBhdGhcIjpcImR0XCIsXCJydWxlXCI6XCJpZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIGZ1bmN0aW9uIGNvbG9yKGEsIGIsIHR4dCkge1xcbiAgICAgICAgcmV0dXJuIGEgPT0gYiA/ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0nICsgZ2V0UmFuZ2VDb2xvcnMoKSArICc+JyArIHR4dCArICc8L2ZvbnQ+PC9iPicgOiB0eHRcXG4gICAgfVxcbiAgICB2YXIgdXJsID0gTVlfVVJMLnJlcGxhY2UoTVlfVVJMLCBNWV9IT01FICsgJy9mbS8nKTtcXG4gICAgdmFyIGh0bWwgPSBmZXRjaCh1cmwpO1xcbiAgICB2YXIgbGlzdCA9IHBkZmEoaHRtbCwgJy5idCYmYScpLnNsaWNlKDEpO1xcbiAgICB2YXIgbGlzdDIgPSBwZGZhKGh0bWwsICcuYnQmJm9wdGlvbicpLnNsaWNlKDEpO1xcbiAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICB2YXIgdGl0bGUgPSBwZGZoKGl0ZW0sICdhJiZUZXh0Jyk7XFxuICAgICAgICB2YXIgZHVybCA9IHBkZmgoaXRlbSwgJ2EmJmhyZWYnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGNvbG9yKGR1cmwsIGdldE15VmFyKCfnlLXlj7AnLCAnP2ZtPTQwNycpLCB0aXRsZSksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+eUteWPsCcsIHVybClcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBkdXJsKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KVxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgfSlcXG4gICAgbGlzdDIuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgoaXRlbSwgJ1RleHQnKTtcXG4gICAgICAgIHZhciBkdXJsID0gcGRmaChpdGVtLCAnb3B0aW9uJiZ2YWx1ZScpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogY29sb3IoZHVybCwgZ2V0TXlWYXIoJ+eUteWPsCcpLCB0aXRsZSksXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+eUteWPsCcsIHVybClcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICB9LCBkdXJsKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KVxcbiAgICB9KVxcblxcbiAgICB1cmwgPSBNWV9IT01FICsgJy9mbS9xdC5waHAnICsgZ2V0TXlWYXIoJ+eUteWPsCcsICc/Zm09NDA3Jyk7XFxuICAgIGxpc3QgPSBKU09OLnBhcnNlKGZldGNoKHVybCkpLkRhdGE7XFxuICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgLy9kZXNjOiBpdGVtLmF1dGhvcixcXG4gICAgICAgICAgICBpbWc6IGl0ZW0ucGljLnN0YXJ0c1dpdGgoJ2h0dHAnKSA/IGl0ZW0ucGljIDogJ2h0dHBzOicgKyBpdGVtLnBpYyxcXG4gICAgICAgICAgICB1cmw6IGl0ZW0udXJsICsgJChcXFwiXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gaW5wdXQ7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnXFxuICAgICAgICB9KVxcbiAgICB9KVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuabtOaWsFwiLFwicGF0aFwiOlwi5pu05pawXCIsXCJydWxlXCI6XCJpZiAoZ2V0TXlWYXIoJ3F4JywgJzEnKSAhPSAwKSB7XFxuICAgIHZhciB1cGxpbmsgPSAnaHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NjU4NCdcXG4gICAgbGV0IG5ld1ZlcnNpb247XFxuICAgIGxldCBteVZlcnNpb24gPSBNWV9SVUxFLnZlcnNpb24gPT0gMCA/IDIwMjQwMjAzIDogTVlfUlVMRS52ZXJzaW9uO1xcbiAgICB0cnkge1xcbiAgICAgICAgbmV3VmVyc2lvbiA9IEpTT04ucGFyc2UoZmV0Y2hDYWNoZSh1cGxpbmssIDI0LCB7XFxuICAgICAgICAgICAgdGltZW91dDogMTAwMFxcbiAgICAgICAgfSkpLnZlcnNpb247XFxuICAgICAgICBsb2cobmV3VmVyc2lvbilcXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgbmV3VmVyc2lvbiA9IG15VmVyc2lvbjtcXG4gICAgfVxcbiAgICBsZXQgaXNVcGRhdGUgPSBOdW1iZXIobmV3VmVyc2lvbikgPiBOdW1iZXIobXlWZXJzaW9uKTtcXG4gICAgaWYgKGlzVXBkYXRlKSB7XFxuICAgICAgICBsb2coJ+acieaWsOeJiOacrDonICsgbmV3VmVyc2lvbiArICcs5b2T5YmNOicgKyBteVZlcnNpb24pO1xcbiAgICAgICAgY29uZmlybSh7XFxuICAgICAgICAgICAgdGl0bGU6ICfmm7TmlrDmj5DnpLonLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfmo4DmtYvliLDkvaDnmoTop4TliJnniYjmnKzlsI/kuo7mnI3liqHlmajniYjmnKzvvIzmmK/lkKbnq4vljbPmm7TmlrDvvJ8nLFxcbiAgICAgICAgICAgIGNvbmZpcm06ICQudG9TdHJpbmcoKHVwbGluaykgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYOa1t+mYlOinhueVjOmmlumhtemikemBk+inhOWIme+/pWhvbWVfcnVsZV91cmzvv6Uke3VwbGlua31gXFxuICAgICAgICAgICAgfSwgdXBsaW5rKSxcXG4gICAgICAgICAgICBjYW5jZWw6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gcHV0TXlWYXIoJ3F4JywgJzAnKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55S16KeGXCIsXCJwYXRoXCI6XCJkc1wiLFwicnVsZVwiOlwiYWRkTGlzdGVuZXIoXFxcIm9uUmVmcmVzaFxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKFxcXCJpXFxcIik7XFxuICAgIFxcbn0pKTtcXG52YXIgaHRtbCA9IHJlcXVlc3QoJ2h0dHBzOi8vY2Zzcy5jYy9kcycsIHt9KTtcXG5pZiAoaHRtbCA9PSAnJykge1xcbiAgICB2YXIgaHRtbCA9IHJlcXVlc3QoTVlfVVJMLCB7fSk7XFxufVxcblxcbmZ1bmN0aW9uIGNvbG9yKGEsIGIsIHR4dCkge1xcbiAgICByZXR1cm4gYSA9PSBiID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScgKyBnZXRSYW5nZUNvbG9ycygpICsgJz4nICsgdHh0ICsgJzwvZm9udD48L2I+JyA6IHR4dFxcbn1cXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIHZhciBsaXN0cyA9IHBkZmEoaHRtbCwgJ2JvZHkmJmgxJyk7XFxuICAgIGxpc3RzLmZvckVhY2goKGRhdGEsIGkpID0+IHtcXG4gICAgICAgIHZhciB0aXRsZSA9IHBkZmgoZGF0YSwgJ2gxJiZUZXh0JykucmVwbGFjZSgn6ZW/6aOOJywgJycpLnJlcGxhY2UoJ+WMl+aWuScsICcnKS5yZXBsYWNlKCfnlLXop4YnLCAnJyk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBjb2xvcihpLCBnZXRNeVZhcignaScsICcwJyksIHRpdGxlKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoaSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignaScsIGkpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIGkpXFxuICAgICAgICB9KVxcbiAgICB9KVxcbiAgICAvLyQucmVxdWlyZShcXFwiTG9hZGluZ1xcXCIpLkxvYWRpbmcoKVxcbiAgICB2YXIgbGlzdHMgPSBwZGZhKGh0bWwsICdib2R5JiYudXUnKTtcXG4gICAgdmFyIGxpc3QgPSBwZGZhKGxpc3RzW2dldE15VmFyKCdpJywgJzAnKV0sICdib2R5JiZhJyk7XFxuICAgIGxpc3QuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgIHZhciBpbWcgPSBNWV9IT01FICsgJy9kcy8nICsgcGRmaChkYXRhLCAnaW1nJiZzcmMnKSArICdAUmVmZXJlcj0nO1xcbiAgICAgICAgdmFyIHRpdGxlID0gcGRmaChkYXRhLCAnYSYmVGV4dCcpO1xcbiAgICAgICAgdmFyIHRpdGxlMSA9IHBkZmgoZGF0YSwgJ2ltZyYmc3JjJykucmVwbGFjZSgvLipcXFxcLyguKj8pXFxcXC5qcGcvLCAnJDEnKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHRpdGxlIHx8IHRpdGxlMSxcXG4gICAgICAgICAgICBpbWc6IGltZyxcXG4gICAgICAgICAgICB1cmw6IHBkKGRhdGEsICdhJiZocmVmJykgKyBsYXp5LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiB0aXRsZSA9PSAnJyA/ICdpY29uXzRfY2FyZCcgOiAndGV4dF8zJyxcXG4gICAgICAgIH0pXFxuICAgIH0pXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwibGF6eVwiLFwicGF0aFwiOlwibGF6eVwiLFwicnVsZVwiOlwidmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoTVlfSE9NRSkgPT4ge1xcbiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoJ2NmeXknLCAnY2ZzcycpO1xcbiAgICBpZiAoL1xcXFwvbWtcXFxcLy8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgIHZhciB1cmwgPSByZXF1ZXN0KGlucHV0LCB7fSkubWF0Y2goL3VybDogJyguKj8pJy8pWzFdXFxuICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgIHJldHVybiB1cmwgKyAnO3tSZWZlcmVyQCcgKyBpbnB1dCArICd9JztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuICdodHRwczovL2Nmc3MuY2MnICsgdXJsICsgJzt7UmVmZXJlckAnICsgaW5wdXQgKyAnfSc7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgdHJ5IHtcXG4gICAgICAgIGlmIChpbnB1dC5pbmNsdWRlcygnYmZnZCcpKSB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHJlcXVlc3QoaW5wdXQsIHt9KS5tYXRjaCgvdXJsOiAnKC4qPyknLylbMV1cXG4gICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vY2Zzcy5jYycgKyB1cmwgKyAnO3tSZWZlcmVyQCcgKyBpbnB1dCArICd9JztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IHJlcXVlc3QoaW5wdXQsIHt9KS5tYXRjaCgvdXJsOiAnKC4qPyknLylbMV1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh1cmwuc3RhcnRzV2l0aChcXFwiaHR0cFxcXCIpKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHVybCArICc7e1JlZmVyZXJAJyArIGlucHV0ICsgJ30nO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gJ2h0dHBzOi8vY2Zzcy5jYycgKyB1cmwgKyAnO3tSZWZlcmVyQCcgKyBpbnB1dCArICd9JztcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge31cXG4gICAgcmV0dXJuICd2aWRlbzovLycgKyBpbnB1dFxcbn0sIE1ZX0hPTUUpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJNVlwiLFwicGF0aFwiOlwiTVZcIixcInJ1bGVcIjpcInZhciBodG1sID0gTVlfVVJMLnNwbGl0KFxcXCIjXFxcIilbMF0ucmVwbGFjZSgnbXAzJywgJ21wNCcpXFxudmFyIHNqID0gcGRmaChyZXF1ZXN0KGh0bWwsIHt9KSwgJ2lmcmFtZSYmc3JjJylcXG52YXIgdXJsID0gaHRtbCArIHNqXFxudmFyIGxhenkgPSAkKFxcXCJcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgdmFyIHVybCA9IHJlcXVlc3QoaW5wdXQsIHt9KS5tYXRjaCgvdmlkZW86JyguKj8pJy8pWzFdXFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gcmVxdWVzdChpbnB1dCwge30pLm1hdGNoKC91cmw6ICcoLio/KScvKVsxXVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gdXJsXFxuICAgICAgICAgICAgfSBlbHNlIFxcbiAgICAgICAgICAgIGlmICh1cmwuc3RhcnRzV2l0aChcXFwiLy9cXFwiKSkge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2h0dHBzOicgKyB1cmxcXG4gICAgICAgICAgICB9IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdodHRwczovL2Nmc3MuY2MnICsgdXJsXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSlcXG5pZiAoTVlfUEFHRSA9PSAxKSB7XFxuICAgIHZhciBhcnIgPSBbXFxcIumFt+eLl1xcXCIsIFxcXCLphbfmiJFcXFwiLCBcXFwiUVFcXFwiLCBcXFwi572R5piTXFxcIiwgXFxcIuWTlOWTqVxcXCJdXFxuICAgIGFyci5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgeHkgPSAn4oCY4oCY4oCZ4oCZPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMWFhZDE5XFxcIj4nICsgaXRlbSArICc8L3NwYW4+PC9iPic7XFxuICAgICAgICB2YXIgdGl0bGUgPSBpdGVtID09PSBnZXRNeVZhcignZmxzJywgJ+mFt+eLlycpID8geHkgOiBpdGVtO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdGl0bGUsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh0YSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignZmxzJywgdGEpXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKClcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59XFxubGV0IG1vZGUgPSBnZXRNeVZhcignZmxzJywgJ+mFt+aIkScpXFxuc3dpdGNoIChtb2RlKSB7XFxuICAgIGNhc2UgJ+mFt+eLlyc6XFxuICAgICAgICB2YXIgbGlzdCA9IHBkZmEocmVxdWVzdCh1cmwsIHt9KSwgJ2JvZHkmJi5qYycpXFxuICAgICAgICBicmVha1xcbiAgICBjYXNlICfphbfmiJEnOlxcbiAgICAgICAgdmFyIGxpc3QgPSBwZGZhKHJlcXVlc3QodXJsLnJlcGxhY2UoJ2tnL2NmJywgJ2t3JyksIHt9KSwgJ2JvZHkmJi5qYycpXFxuICAgICAgICBicmVha1xcbiAgICBjYXNlICdRUSc6XFxubG9nKCdodHRwczovL2NmeXkuY2MvbXA0L3FxL2pzb24ucGhwP3NzPScgKyBzai5zcGxpdChcXFwiPVxcXCIpWzFdKVxcbiAgICAgICAgdmFyIGxpc3QgPSByZXF1ZXN0KCdodHRwczovL2NmeXkuY2MvbXA0L3FxL2pzb24ucGhwP3NzPScgKyBzai5zcGxpdChcXFwiPVxcXCIpWzFdKVxcbiAgICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKGxpc3QpLkRhdGE7XFxuaWYobGlzdCA9PSAnJykge1xcbiAgICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vY2Z5eS5jYy9tcDQvcXEvanNvbi5waHAnKSkuRGF0YTtcXG59XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBkYXRhLnRwXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEvaHR0cC8udGVzdChwaWMpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6JyArIHBpY1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS50eCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5zYyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBwaWMgKyAnQFJlZmVyZXI9JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBNWV9IT01FKycvQ2YvdnEvJytkYXRhLmlkKycubXA0JysgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgXFxuICAgICAgICBicmVha1xcbiAgICBjYXNlICfnvZHmmJMnOlxcbiAgICAgICAgdmFyIGxpc3QgPSByZXF1ZXN0KCdodHRwczovL2NmeXkuY2Mvam0vP3VybD1odHRwOi8vbXVzaWMuMTYzLmNvbS9hcGkvY2xvdWRzZWFyY2gvcGM/cz0nICsgc2ouc3BsaXQoXFxcIj1cXFwiKVsxXSArICcmdHlwZT0xMDE0Jm9mZnNldD0wJnRvdGFsPXRydWUmbGltaXQ9MjAmSlNPTmNhbGxiYWNrPT8nLCB7fSlcXG4gICAgICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKGxpc3QubWF0Y2goL1xcXFwoKC4qKVxcXFwpLylbMV0pLnJlc3VsdC52aWRlb3NcXG5saXN0LmZvckVhY2goZGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRhdGEuY3JlYXRvci51c2VyTmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBkYXRhLmNvdmVyVXJsICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogTVlfSE9NRSsnL0NmLzE2My8nK2RhdGEudmlkKycubXA0JysgbGF6eSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB9KSAgICAgICBcXG4gICAgICAgIGJyZWFrXFxuICAgIGNhc2UgJ+WTlOWTqSc6XFxuICAgICAgICB2YXIgbGlzdCA9IHJlcXVlc3QoJ2h0dHBzOi8vY2Z5eS5jYy9tcDQvYnpqc29uLnBocD9wPTEmc3M9JyArIHNqLnNwbGl0KFxcXCI9XFxcIilbMV0sIHt9KVxcbiAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UobGlzdCkuZGF0YS5yZXN1bHRcXG5saXN0LmZvckVhY2goZGF0YSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUucmVwbGFjZSgnZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPicsJyAnKS5yZXBsYWNlKCc8L2VtPicsJyAnKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5kdXJhdGlvbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiAnaHR0cHM6JyArIGRhdGEucGljICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogTVlfSE9NRSsnL0NmL2J6LycrZGF0YS5pZCsnLm1wNCcrIGxhenksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgXFxuICAgICAgICBicmVhayAgICBcXG59XFxuaWYobW9kZSA9PSAn6YW35oiRJyB8fCBtb2RlID09ICfphbfni5cnKSB7XFxubGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBkZmgoZGF0YSwgJ2EmJnRpdGxlJyksXFxuICAgICAgICAvLyBkZXNjOiBkYXRhLmF1dGhvcixcXG4gICAgICAgIGltZzogcGRmaChkYXRhLCAnaW1nJiZzcmMnKSArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgdXJsOiBNWV9IT01FICsgJy9tcDQva2cvJyArIHBkZmgoZGF0YSwgJ2EmJmhyZWYnKSArIGxhenksXFxuICAgICAgICBjb2xfdHlwZTogJycsXFxuICAgIH0pXFxufSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJhdmF0YXJcIixcIm5hbWVcIjpcIuatjOWNlVwiLFwicGF0aFwiOlwiZ2RcIixcInJ1bGVcIjpcInZhciBodG1sID0gcmVxdWVzdChNWV9VUkwsIHt9KVxcbnZhciBsaXN0ID0gcGRmYShodG1sLCAnYm9keSYmLmpjJylcXG50cnkge1xcbiAgICBsaXN0LmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRhdGEsICdhJiZUZXh0JyksXFxuICAgICAgICAgICAgdXJsOiBNWV9IT01FICsgJy9tcDMva2cucGhwP3NzPScgKyBwZGZoKGRhdGEsICdhJiZUZXh0JykgKyAkKCcnKS5ydWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXCJMb2FkaW5nXFxcIikuTG9hZGluZygpXFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9VUkwsIHt9KSkuRGF0YTtcXG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBldmFsKHJlcXVlc3QoTVlfVVJMLCB7fSkubWF0Y2goL1xcXCJEYXRhXFxcIjogKFxcXFxbW1xcXFxzXFxcXFNdKlxcXFxdKS8pWzFdKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdC5mb3JFYWNoKGRhdGEgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBkYXRhLnBpY1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghL2h0dHAvLnRlc3QocGljKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOicgKyBwaWNcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6IGRhdGEuYXV0aG9yLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHBpYyArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IGRhdGEudXJsICsgJChcXFwiXFxcIikubGF6eVJ1bGUoKGxyYykgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcLzE2M1xcXFwvLy50ZXN0KGlucHV0KSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSByZXF1ZXN0KGxyYywge30pLnJlcGxhY2UoL1xcXFxbL2csICdcXFxcblsnKS5yZXBsYWNlKC9bXFxcXHNcXFxcU10qP1xcXFxbLywgJ1snKS5yZXBsYWNlKC9bXFxcXHNcXFxcU10qXFxcXD4vLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IFtpbnB1dF0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyY1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgZGF0YS5scmMpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuTVlfUEFHRSA9PSAxID8gc2V0UHJlUmVzdWx0KGQpIDogc2V0UmVzdWx0KGQpO1xcbmRlbGV0ZUl0ZW1CeUNscygnbG9hZGluZ19naWYnKTtcXG5cXG4gICAgICAgICAgICB9KSxcXG5cXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXFxuICAgICAgICB9KVxcbiAgICB9KVxcbn0gY2F0Y2ggKGUpIHt9XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmrYzmiYtcIixcInBhdGhcIjpcImdzXCIsXCJydWxlXCI6XCJ2YXIgaHRtbCA9IHJlcXVlc3QoTVlfVVJMLCB7fSk7XFxudmFyIGxpc3QgPSBwZGZhKGh0bWwsICdib2R5JiYuamMnKVxcbnRyeSB7XFxuICAgIGxpc3QuZm9yRWFjaChkYXRhID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBkZmgoZGF0YSwgJ2EmJlRleHQnKSxcXG4gICAgICAgICAgICAvL2ltZzogcGQoZGF0YSwgJ2EmJmRhdGEtb3JpZ2luYWwnKSArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgIHVybDogTVlfSE9NRSArICcvbXAzL2t3LnBocD9zcz0nICsgcGRmaChkYXRhLCAnYSYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXG4gICAgICAgIH0pXFxuICAgIH0pXFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumfs+S5kFwiLFwicGF0aFwiOlwibXAzXCIsXCJydWxlXCI6XCJsZXQgbmFtZSA9IHJlcXVlc3QoTVlfSE9NRSArICcvbXAzJywge30pLm1hdGNoKC9DZlxcXFwoXFxcIiguKj8pXFxcIi8pWzFdLnNwbGl0KFxcXCI9XFxcIilbMV07XFxuXFxuZnVuY3Rpb24gY29sb3IoYSwgYiwgdHh0KSB7XFxuICAgIHJldHVybiBhID09IGIgPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9JyArIGdldFJhbmdlQ29sb3JzKCkgKyAnPicgKyB0eHQgKyAnPC9mb250PjwvYj4nIDogdHh0XFxufVxcbmxldCBtcDMgPSBbe1xcbiAgICDphbfmiJHpn7PkuZA6ICcvbXAzL2t3LnBocD9zcz0nXFxufSwge1xcbiAgICDphbfni5fpn7PkuZA6ICcvbXAzL2tnLnBocD9zcz0nXFxufSwge1xcbiAgICDnvZHmmJPpn7PkuZA6ICcvbXAzLzE2My5waHA/c3M9J1xcbn1dO1xcbm1wMy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICB0aXRsZSA9IE9iamVjdC5rZXlzKGl0ZW0pWzBdO1xcbiAgICBpZCA9IE9iamVjdC52YWx1ZXMoaXRlbSlbMF07XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogY29sb3IoaWQsIGdldE15VmFyKCdtcDMnLCBtcDNbMF0u6YW35oiR6Z+z5LmQKSwgdGl0bGUpLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdtcDMnLCBpZClcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LCBpZCksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgIH0pXFxufSlcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdChNWV9IT01FICsgZ2V0TXlWYXIoJ21wMycsIG1wM1swXS7phbfmiJHpn7PkuZApICsgbmFtZSkpLkRhdGFcXG50cnkge1xcbiAgICBsaXN0LmZvckVhY2goZGF0YSA9PiB7XFxuICAgICAgICB2YXIgcGljID0gZGF0YS5waWNcXG4gICAgICAgIGlmICghcGljLnN0YXJ0c1dpdGgoXFxcImh0dHBcXFwiKSkge1xcbiAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6JyArIHBpY1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLmF1dGhvcixcXG4gICAgICAgICAgICBpbWc6IHBpYyArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgIHVybDogZGF0YS51cmwgKyAkKFxcXCJcXFwiKS5sYXp5UnVsZSgobHJjKSA9PiB7XFxuICAgICAgICAgICAgICAgIGlmICgvXFxcXC8xNjNcXFxcLy8udGVzdChpbnB1dCkpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBscmMgPSByZXF1ZXN0KGxyYywge30pLnJlcGxhY2UoL1xcXFxbL2csICdcXFxcblsnKS5yZXBsYWNlKC9bXFxcXHNcXFxcU10qP1xcXFxbLywgJ1snKS5yZXBsYWNlKC9bXFxcXHNcXFxcU10qXFxcXD4vLCAnJylcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICAgICAgdXJsczogW2lucHV0XSxcXG4gICAgICAgICAgICAgICAgICAgIGx5cmljOiBscmNcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9LCBkYXRhLmxyYyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICcnLFxcbiAgICAgICAgfSlcXG4gICAgfSlcXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiTG9hZGluZ1wiLFwicGF0aFwiOlwiTG9hZGluZ1wiLFwicnVsZVwiOlwiZnVuY3Rpb24gTG9hZGluZygpIHtcXG4gICAgdmFyIGQgPSBbXVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgaW1nOiBcXFwiaHR0cHM6Ly9ra2ltZ3MueWlzb3UuY29tL2ltcz9rdD11cmwmYXQ9b3JpJmtleT1hSFIwY0RvdkwzTnpMbU56Wkc0dWJtVjBMM0FfYUhSMGNITTZMeTl0YldKcGVpNXhjR2xqTG1OdUwyMXRZbWw2WDJkcFppODBZbWxqWlZjMlluVjBlSEZqTWpFd1IyczVUWFYzZWpOTFZEaGxWbTVqU0hWSmJFcGtXR2xqY2twcFlXdERhSFJOVjJGRU5YQnlkRmw2WkVGdWVGVnRjSEpyYTNwMmRrbzJRamRrUkcxdlJFTndZVEZ3WVRaMlVTODJOREFfZDNoZlptMTBQV2RwWmc9PSZzaWduPXl4OlEzSm1JNk1QaVVqS085emxHUVl1ZE9mUEhpaz0mdHY9MF8wXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwicGljXzFfY2VudGVyXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgY2xzOiBcXFwibG9hZGluZ19naWZcXFwiXFxuICAgICAgICB9XFxuICAgIH0pO1xcbiAgICBzZXRQcmVSZXN1bHQoZCk7XFxufVxcbiQuZXhwb3J0cyA9IHtcXG4gICAgTG9hZGluZzogTG9hZGluZ1xcbn1cIn1dIiwiaWNvbiI6Imh0dHBzOi8vY2Z5eS5jYy9CdC9jZi5pY28iLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment