xiaomianao666

小程序:模板·Q

Feb 15th, 2024
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@模板·Q@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5qih5p2/wrdRIiwiYXV0aG9yIjoi5Y+R57Kq5raC5aKZIiwidXJsIjoiaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIiwidmVyc2lvbiI6MjMxMTE5MDAsImNvbF90eXBlIjoidGV4dF9jZW50ZXJfMSIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidG9vbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuaWYgKGdldEl0ZW0oXCJzdGFydFwiLCBcIlwiKSA9PSBcIlwiKSB7XG4gICAgc2V0SXRlbShcInN0YXJ0XCIsIFwiMVwiKVxuICAgIGNvbmZpcm0oe1xuICAgICAgICB0aXRsZTogJ+a4qemmqOaPkOekuicsXG4gICAgICAgIGNvbnRlbnQ6ICfor7fli7/liKDpmaTmiJbmlLnlkI3mraTmqKHmnb/vvIzku6XlhY3kvp3otZbmraTmqKHmnb/nmoTlsI/nqIvluo/ml6Dms5Xkvb/nlKjvvIHvvIFcXG7lubbnibnliKvmhJ/osKIgUmVib3JuIExveURnSWvlpKfkvaznmoTmioDmnK/mlK/mjIEhISEnLFxuICAgICAgICBjb25maXJtOiAnJyxcbiAgICAgICAgY2FuY2VsOiAncmVmcmVzaFBhZ2UoKSdcbiAgICB9KVxufVxuYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgIGNsZWFyVmFyKFwidGVtcGxhdGUtdXJsXCIpXG4gICAgY2xlYXJWYXIoXCJ0ZW1wbGF0ZS1zZWFyY2gtdXJsXCIpXG4gICAgY2xlYXJWYXIoXCJ0ZW1wbGF0ZS1wYWdlcy11bmZvbGRcIilcbn0pKVxuXG5sZXQgZDIgPSBbe1xuICAgIGRlc2M6IFwi6L6T5YWl5YiG57G75oiW6K+m5oOF6aG16ZO+5o6l5rWL6K+V5Yy56YWNXCIsXG4gICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICB1cmw6IFwiaW5wdXRcIixcbiAgICB0aXRsZTogXCLmtYvor5VcIixcbiAgICBleHRyYToge1xuICAgICAgICBvbkNoYW5nZTogXCJwdXRWYXIoJ3RlbXBsYXRlLXVybCcsaW5wdXQpXCJcbiAgICB9XG59LHtcbiAgICBkZXNjOiBcIui+k+WFpeaQnOe0oumTvuaOpe+8jCoq5Li65YWz6ZSu5a2X5Y2g5L2N56ymXCIsXG4gICAgY29sX3R5cGU6IFwiaW5wdXRcIixcbiAgICB1cmw6IFwiaW5wdXRcIixcbiAgICB0aXRsZTogXCLmtYvor5XmkJzntKJcIixcbiAgICBleHRyYToge1xuICAgICAgICB0aXRsZVZpc2libGU6IGZhbHNlLFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldFZhcihcInRlbXBsYXRlLXNlYXJjaC11cmxcIiksXG4gICAgICAgIG9uQ2hhbmdlOiBcInB1dFZhcigndGVtcGxhdGUtc2VhcmNoLXVybCcsaW5wdXQpXCJcbiAgICB9XG59LCB7XG4gICAgZGVzYzogXCLovpPlhaXmkJzntKLlhbPplK7or43mtYvor5XljLnphY1cIixcbiAgICBjb2xfdHlwZTogXCJpbnB1dFwiLFxuICAgIHVybDogJC50b1N0cmluZygocnVsZVRpdGxlKT0+e1xuICAgICAgICAgICAgcmV0dXJuIFwiaGlrZXI6Ly9zZWFyY2g/cz1cIiArIGlucHV0ICsgIFwiJnJ1bGU9XCIrIHJ1bGVUaXRsZTtcbiAgICB9LCBNWV9SVUxFLnRpdGxlKSxcbiAgICB0aXRsZTogXCLmtYvor5XmkJzntKJcIixcbn0sIHtcbiAgICB0aXRsZTogXCLnlJ/miJDop4TliJlcIixcbiAgICBjb2xfdHlwZTogXCJ0ZXh0X2NlbnRlcl8xXCIsXG4gICAgdXJsOiBcImlucHV0Oi8vLy8vL+ivt+i+k+WFpeinhOWImeWQjS5qczpcIiArICQudG9TdHJpbmcoKCkgPT4ge1xuICAgICAgICB2YXIgdXJsID0gZ2V0VmFyKCd0ZW1wbGF0ZS11cmwnLCBcIlwiKTtcbiAgICAgICAgaWYgKHVybC5sZW5ndGggPD0gMCB8fCBpbnB1dC5sZW5ndGggPD0gMCkge1xuICAgICAgICAgICAgcmV0dXJuIFwidG9hc3Q6Ly/or7flhYjovpPlhaXpk77mjqXlkozop4TliJnlkI1cIlxuICAgICAgICB9XG4gICAgICAgIHZhciBydWxlID0ge1xuICAgICAgICAgICAgXCJsYXN0X2NoYXB0ZXJfcnVsZVwiOiBcIlwiLFxuICAgICAgICAgICAgXCJ0aXRsZVwiOiBpbnB1dCxcbiAgICAgICAgICAgIFwiYXV0aG9yXCI6IFwiXCIsXG4gICAgICAgICAgICBcInVybFwiOiB1cmwsXG4gICAgICAgICAgICBcInZlcnNpb25cIjogMCxcbiAgICAgICAgICAgIFwiY29sX3R5cGVcIjogXCJtb3ZpZV8zXCIsXG4gICAgICAgICAgICBcImNsYXNzX25hbWVcIjogXCJcIixcbiAgICAgICAgICAgIFwiY2xhc3NfdXJsXCI6IFwiXCIsXG4gICAgICAgICAgICBcImFyZWFfbmFtZVwiOiBcIlwiLFxuICAgICAgICAgICAgXCJhcmVhX3VybFwiOiBcIlwiLFxuICAgICAgICAgICAgXCJzb3J0X25hbWVcIjogXCJcIixcbiAgICAgICAgICAgIFwieWVhcl9uYW1lXCI6IFwiXCIsXG4gICAgICAgICAgICBcInNvcnRfdXJsXCI6IFwiXCIsXG4gICAgICAgICAgICBcInllYXJfdXJsXCI6IFwiXCIsXG4gICAgICAgICAgICBcImZpbmRfcnVsZVwiOiBcImpzOlxcbmNvbnN0IHtcXG4gICAgYXV0b1BhZ2VcXG59ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvYXV0bz9ydWxlPeaooeadv8K3UVxcXCIpO1xcbmF1dG9QYWdlKGdldFJlc0NvZGUoKSlcIixcbiAgICAgICAgICAgIFwic2VhcmNoX3VybFwiOiBnZXRWYXIoXCJ0ZW1wbGF0ZS1zZWFyY2gtdXJsXCIpLFxuICAgICAgICAgICAgXCJ0aXRsZUNvbG9yXCI6IFwiXCIsXG4gICAgICAgICAgICBcImdyb3VwXCI6IFwi5rWL6K+VXCIsXG4gICAgICAgICAgICBcInNlYXJjaEZpbmRcIjogXCJqczpcXG5jb25zdCB7XFxuICAgIGF1dG9QYWdlXFxufSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2F1dG8/cnVsZT3mqKHmnb/Ct1FcXFwiKTtcXG5hdXRvUGFnZShnZXRSZXNDb2RlKCkpXCIsXG4gICAgICAgICAgICBcImRldGFpbF9jb2xfdHlwZVwiOiBcIm1vdmllXzFcIixcbiAgICAgICAgICAgIFwiZGV0YWlsX2ZpbmRfcnVsZVwiOiBcImpzOlxcbnZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgICAgICAgICAgdmFyIHVybCA9IGh0bWwudXJsXFxuICAgICAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoL20zdTh8bXA0Ly50ZXN0KHVybCkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgaW5wdXRcXG4gICAgICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgaW5wdXRcXG4gICAgfVxcbn0pXFxuXFxuY29uc3Qge1xcbiAgICBhdXRvUGFnZVxcbn0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS9hdXRvP3J1bGU95qih5p2/wrdRXFxcIik7XFxuYXV0b1BhZ2UoZ2V0UmVzQ29kZSgpKVwiLFxuICAgICAgICAgICAgXCJzZGV0YWlsX2NvbF90eXBlXCI6IFwibW92aWVfMVwiLFxuICAgICAgICAgICAgXCJzZGV0YWlsX2ZpbmRfcnVsZVwiOiBcIipcIixcbiAgICAgICAgICAgIFwidWFcIjogXCJtb2JpbGVcIixcbiAgICAgICAgICAgIFwicHJlUnVsZVwiOiBcImlmIChyZXF1ZXN0KCdoaWtlcjovL2hvbWVA5qih5p2/wrdRJykgPT0gJ251bGwnKSB7XFxuICAgIGNvbmZpcm0oe1xcbiAgICAgICAgdGl0bGU6ICfkvp3otZbmo4DmtYsnLFxcbiAgICAgICAgY29udGVudDogJ+ajgOa1i+WIsOe8uuWwkeaooeadv+S+nei1lizor7flr7zlhaUhJyxcXG4gICAgICAgIGNvbmZpcm06ICgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gXFxcIua1t+mYlOinhueVjOmmlumhtemikemBk+inhOWImeOAkOaooeadv8K3UeOAke+/pWhvbWVfcnVsZV91cmzvv6VodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD0zMDU1XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cIixcbiAgICAgICAgICAgIFwicGFnZXNcIjogXCJbXVwiXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiBcIua1t+mYlOinhueVjOinhOWImeWIhuS6q++8jOW9k+WJjeWIhuS6q+eahOaYr++8muWwj+eoi+W6j++/pWhvbWVfcnVsZe+/pVwiICsgSlNPTi5zdHJpbmdpZnkocnVsZSlcbiAgICB9KVxufSx7XG50aXRsZTogJ+aWh+Wtl+aVmeeoiycsXG5jb2xfdHlwZTogJ3RleHRfMicsXG51cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3J1bGU96KeG55WM6K665Z2bUicsXG5leHRyYToge1xuICAgIHVybDogJ2h0dHBzOi8vaGFpa3Vvc2hpamllLmNuL3RvcGljLzg0NDAjZnlwYWdlI25vSGlzdG9yeSMnLFxufVxufSx7XG50aXRsZTogJ+inhumikeaVmeeoiycsXG5jb2xfdHlwZTogJ3RleHRfMicsXG51cmw6IFwidmlkZW86Ly9odHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vQlYxZE00eTFnN3JlP3NoYXJlX3NvdXJjZT1jb3B5X3dlYlwiXG59LHtcbnRpdGxlOiBnZXRWYXIoJ3RlbXBsYXRlLXBhZ2VzLXVuZm9sZCcsICdmYWxzZScpID09PSAndHJ1ZSc/ICfngrnmiJHmlLbnvKnmqKHmnb/liJfooagnOiAn54K55oiR5bGV5byA5qih5p2/5YiX6KGoJyxcbmNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXG51cmw6ICQoXCIjbm9Mb2FkaW5nI1wiKS5sYXp5UnVsZSgocGFnZVVuZm9sZCkgPT4ge1xuICAgICBwdXRWYXIoJ3RlbXBsYXRlLXBhZ2VzLXVuZm9sZCcsIHBhZ2VVbmZvbGQgPT09ICd0cnVlJyA/ICdmYWxzZScgOiAndHJ1ZScpXG5yZWZyZXNoUGFnZShmYWxzZSlcbnJldHVybiAndG9hc3Q6Ly8nICsgKGdldFZhcigndGVtcGxhdGUtcGFnZXMtdW5mb2xkJywgJ2ZhbHNlJykgPT09ICd0cnVlJz8gJ+WxleW8gOaIkOWKnyc6ICfmlLbnvKnmiJDlip8nKVxufSwgZ2V0VmFyKCd0ZW1wbGF0ZS1wYWdlcy11bmZvbGQnLCAnZmFsc2UnKSlcbn0se1xudGl0bGU6ICfmtYvor5XpppbpobXpk77mjqXpnIDopoHmiorpobXnoIHmlLnmiJBmeXBhZ2Us5aaC5p6c5LiK6Z2i55qE5rWL6K+V6YCa6L+H6IO95pi+56S65Zu+54mH77yM6YKj5LmI5bCx6K+05piO5piv5Y+v5Lul55Sf5oiQ6KeE5YiZ55qE77yM5L6d5qyh5aGr5YWl5YiG57G76ZO+5o6l5LiO5pCc57Si6ZO+5o6l77yM56ys5LiJ5Liq5qGG55WZ56m654K55Ye755Sf5oiQ6KeE5YiZ77yM5aGr5aW95ZCN5a2X5Y2z5Y+v77yM6K+m57uG5re75Yqg5YiG57G76K+N5LmL57G755qE6K+354K55Ye75LiK6Z2i55qE5Lik5Liq5pWZ56iL6ZO+5o6l5Y+C6ICD77yB77yBJyxcbmNvbF90eXBlOiAncmljaF90ZXh0J1xufV1cbmlmKGdldFZhcigndGVtcGxhdGUtcGFnZXMtdW5mb2xkJywgJ2ZhbHNlJykgPT09ICd0cnVlJykge1xubGV0IGQgPSBbXVxuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+eCueWHu+aooeadv+WPr+afpeeci+S7o+egge+8micsXG4gICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXG59KVxubGV0IHBhZ2VMaXN0ID0gTVlfUlVMRS5wYWdlTGlzdC5maWx0ZXIocGFnZSA9PiBwYWdlLm5hbWUgIT0gJ+Wtl+espuS4suWkhOeQhuW3peWFtydcbiYmIHBhZ2UubmFtZSAhPSAnI01hcHBpbmcnXG4mJiBwYWdlLm5hbWUgIT0gJyNhdXRvJylcbmZvciAobGV0IHBhZ2Ugb2YgcGFnZUxpc3QpIHtcbiAgICBkLnB1c2goe1xuICAgICAgICB0aXRsZTogcGFnZS5uYW1lLFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsXG4gICAgICAgIHVybDogJCgpLnJ1bGUoKHBhZ2UpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBodG1sRXNjYXBlXG4gICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL3N0cmluZ3Rvb2xcIik7XG4gICAgICAgICAgICBsZXQgZCA9IFtdXG4gICAgICAgICAgICBkLnB1c2goe1xuICAgICAgICAgICAgICAgIHRpdGxlOiBodG1sRXNjYXBlKHBhZ2UucnVsZSksXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpXG4gICAgICAgIH0sIHBhZ2UpXG4gICAgfSlcbn1cbmQyLnB1c2guYXBwbHkoZDIsIGQpXG59XG5zZXRSZXN1bHQoZDIpIiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkjKiojZnlwYWdlLmpzOiBsZXQgc3VybCA9ICBnZXRWYXIoXCJ0ZW1wbGF0ZS1zZWFyY2gtdXJsXCIp77yb77ybbGV0IGluc3BsaXRzPWlucHV0LnNwbGl0KFwiI1wiKe+8m++8m2xldCB1cmwgPSBzdXJsLnJlcGxhY2UoYmFzZTY0RGVjb2RlKFwiS2lvPVwiKSwgaW5zcGxpdHNbMV0pLnJlcGxhY2UoYmFzZTY0RGVjb2RlKFwiWm5sd1lXZGxcIiksIGluc3BsaXRzWzJdKe+8m++8m3VybO+8m++8myIsImdyb3VwIjoiI++4j+KDo+W3peWFtyIsInNlYXJjaEZpbmQiOiJqczpcbnZhciBkID0gW11cbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL3l6bT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxuY29uc3Qge1xuICAgIGF1dG9QYWdlXG59ID0gJC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL2F1dG8/cnVsZT3mqKHmnb/Ct1FcIik7XG5hdXRvUGFnZShodG1sKSIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzMiLCJkZXRhaWxfZmluZF9ydWxlIjoianM6XG52YXIgbGF6eSA9ICcnO1xuY29uc3Qge1xuICAgIGF1dG9QYWdlXG59ID0gJC5yZXF1aXJlKFwiaGlrZXI6Ly9wYWdlL2F1dG8/cnVsZT3mqKHmnb/Ct1FcIik7XG5hdXRvUGFnZShnZXRSZXNDb2RlKCkpIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IioiLCJ1YSI6ImF1dG8iLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p3N0dWktdm9kbGlzdFwiLFwicGF0aFwiOlwic3R1aS12b2RsaXN0XCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbk1ZX1JVTEUudXJsLm1hdGNoKC9meXBhZ2UvKVswXVxcbnZhciBsaXN0ID0gcGRmYShnZXRSZXNDb2RlKCksICcuc3R1aS12b2RsaXN0JiZsaScpO1xcbmZvciAodmFyIGogaW4gbGlzdCkge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJ2EmJnRpdGxlJyksXFxuICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sICcucGljLXRleHQmJlRleHQnKSxcXG4gICAgICAgIGltZzogcGQobGlzdFtqXSwgJy5sYXp5bG9hZHx8YSYmZGF0YS1vcmlnaW5hbCcpKydAUmVmZXJlcj0nLFxcbiAgICAgICAgdXJsOiBwZChsaXN0W2pdLCAnYSYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnXFxuICAgIH0pO1xcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqcuYlwiLFwicGF0aFwiOlwiLmJcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuaWYgKGh0bWwuaW5kZXhPZign5qOA5rWL5LitJykgIT0gLTEpIHtcXG4gICAgaHRtbCA9IHJlcXVlc3QoTVlfVVJMICsgJz9idHdhZicgKyBodG1sLm1hdGNoKC9idHdhZiguKj8pXFxcXFxcXCIvKVsxXSwge30pO1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAnLnN0dWktY29udGVudF9fZGV0YWlsLS1oMSYmVGV4dCcpXFxuICAgICAgICAucmVwbGFjZSgn5Zyw5Yy6JywgJ1xcXFxu5Zyw5Yy6JylcXG4gICAgICAgIC5yZXBsYWNlKCfkuLvmvJQnLCAnXFxcXG7kuLvmvJQnKSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnLmRlc2N8fC5kZXRhaWwtY29udGVudCYmVGV4dCcpLFxcbiAgICBwaWNfdXJsOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgIHVybDogTVlfVVJMLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxudmFyIOe6v+i3ryA9ICdib2R5JiYuYidcXG52YXIg6YCJ6ZuGID0g57q/6LevXFxudmFyIOe6v+i3r+WQjSA9ICdoMyYmVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ3VsJiZsaSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmkJzntKJzdHVpLXZvZGxpc3RfX21lZGlhXCIsXCJwYXRoXCI6XCJzdHVpLXZvZGxpc3RfX21lZGlhXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBsaXN0ID0gcGRmYShnZXRSZXNDb2RlKCksICcuc3R1aS12b2RsaXN0X19tZWRpYSYmbGknKTtcXG5sb2coJ+aQnOe0oue7k+aenCcpXFxubG9nKGxpc3QpXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHRocm93IFxcXCLmkJzntKLkuLrnqbrvvIzlj6/og73ljLnphY3plJnor69cXFwiXFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5waWMtdGV4dCYmVGV4dCcpLFxcbiAgICAgICAgaW1nOiBwZChsaXN0W2pdLCAnYSYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICAgICAgY29udGVudDogcGRmaChsaXN0W2pdLCAnLmRldGFpbC0taDMmJlRleHQnKSxcXG4gICAgICAgIHVybDogcGQobGlzdFtqXSwgJ2EmJmhyZWYnKSsnI2ltbWVyc2l2ZVRoZW1lIydcXG4gICAgfSk7XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p215dWktdm9kbGlzdFwiLFwicGF0aFwiOlwibXl1aS12b2RsaXN0XCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdXFxuTVlfUlVMRS51cmwubWF0Y2goL2Z5cGFnZS8pWzBdXFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJy5teXVpLXZvZGxpc3QmJmxpJylcXG5mb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBwZGZoKGxpc3Rbal0sICdoNCYmVGV4dCcpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLnBpYy10YWd8fC5waWMtdGV4dCYmVGV4dCcpLFxcbiAgICAgICAgaW1nOiBwZChsaXN0W2pdLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJyksXFxuICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykucmVwbGFjZSgndm9kcGxheScsJ3ZvZGRldGFpbCcpICsgJyNpbW1lcnNpdmVUaGVtZSMnXFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnbmF2LXRhYnNcIixcInBhdGhcIjpcIm5hdi10YWJzXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcuZGF0YSYmVGV4dCcpXFxuICAgICAgICAucmVwbGFjZSgn5Zyw5Yy677yaJywgJyAgJylcXG4gICAgICAgIC5yZXBsYWNlKCflubTku73vvJonLCAnICAnKSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLmRhdGEsMSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLmRhdGEsMiYmVGV4dCcpLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICcuZGF0YSwzJiZUZXh0JyksXFxuICAgIGltZzogcGQoaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbnZhciDnur/ot68gPSAnLm5hdi10YWJzJiZhJ1xcbnZhciDpgInpm4YgPSAnLnRhYi1jb250ZW50JiYubXl1aS1jb250ZW50X19saXN0fHwuc3R1aS1jb250ZW50X19wbGF5bGlzdCdcXG52YXIg57q/6Lev5ZCNID0gJ1RleHQnXFxudmFyIOmAiembhuWIl+ihqCA9ICd1bCYmbGknXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9lcmppP3J1bGU95qih5p2/wrdRJykpLnJ1bGUpXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57SibXl1aS12b2RsaXN0X19tZWRpYVwiLFwicGF0aFwiOlwibXl1aS12b2RsaXN0X19tZWRpYVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnI3NlYXJjaExpc3QmJmxpJyk7XFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHRocm93IFxcXCLmkJzntKLkuLrnqbrvvIzlj6/og73ljLnphY3plJnor69cXFwiXFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5waWMtdGV4dCYmVGV4dCcpLFxcbiAgICAgICAgcGljX3VybDogcGQobGlzdFtqXSwgJ2EmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgICAgIGNvbnRlbnQ6IHBkZmgobGlzdFtqXSwgJy5kZXRhaWwtLWg0JiZUZXh0JyksXFxuICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykrJyNpbW1lcnNpdmVUaGVtZSMnXFxuICAgIH0pXFxufVxcbnNldFJlc3VsdChkKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qndm9kbGlzdFwiLFwicGF0aFwiOlwidm9kbGlzdFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnLnZvZGxpc3QmJmxpJyk7XFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnYSYmVGV4dCcpLFxcbiAgICAgICBwaWNfdXJsOiBwZChsaXN0W2pdLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsJykrJ0BSZWZlcmVyPScsXFxuICAgICAgIHVybDogcGQobGlzdFtqXSwnYSYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnXFxuICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnbW8tcGxheS1sb2FkXCIsXCJwYXRoXCI6XCJtby1wbGF5LWxvYWRcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHBkZmgoaHRtbCwgJy52aWRlby1pbmZvLWl0ZW1zLDImJlRleHQnKVxcbiAgLnJlcGxhY2UoJ+WIhuexu3wnLCAnJylcXG4gIC5yZXBsYWNlKCflnLDljLrvvJonLCAnJylcXG4gIC5yZXBsYWNlKCflubTku73vvJonLCAnICcpLnN1YnN0cmluZygwLCAxOCkgKyAnXFxcXG4nICsgJ1xcXFxuJyArIFxcbiAgcGRmaChodG1sLCAnLnZpZGVvLWluZm8taXRlbXMsMSYmVGV4dCcpLnN1YnN0cmluZygwLCAxOCksXFxuICAgIHBpY191cmw6IHBkKGh0bWwsICcubGF6eWxvYWQmJmRhdGEtc3JjJyksXFxuICAgIHVybDogTVlfVVJMLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuXFxudmFyIOe6v+i3ryA9ICdib2R5JiYubW9kdWxlLXRhYi1jb250ZW50JiYubW9kdWxlLXRhYi1pdGVtJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLnNvcnQtaXRlbSdcXG52YXIg57q/6Lev5ZCNID0gJ3NwYW4mJlRleHQnXFxudmFyIOmAiembhuWIl+ihqCA9ICdib2R5JiZhJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p25hdi10YWJzMVwiLFwicGF0aFwiOlwibmF2LXRhYnMxXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICdwLDEmJlRleHQnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+exu+Wei++8micsICcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+WcsOWMuu+8micsICcgJylcXG4gICAgICAgIC5yZXBsYWNlKCflubTku73vvJonLCAnJylcXG4gICAgICAgIC5yZXBsYWNlKCfor63oqIDvvJonLCAnJykgK1xcbiAgICAgICAgJ1xcXFxuXFxcXG4nICsgcGRmaChodG1sLCAncCw0JiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMzApLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICdwLDImJlRleHQnKSxcXG4gICAgcGljX3VybDogcGQoaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcblxcbnZhciDnur/ot68gPSAnLm5hdi10YWJzJiZhJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLnN0dWktY29udGVudF9fcGxheWxpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdhJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcImZsZXhfYnV0dG9uXCIsXCJuYW1lXCI6XCLlrprkvY3kuoznuqdcIixcInBhdGhcIjpcImVyamlcIixcInJ1bGVcIjpcInZhciB0YWJzID0gcGRmYShodG1sLCDnur/ot68pLm1hcChkYXRhID0+IHtcXG4gICAgZGF0YSA9IHBkZmgoZGF0YSwg57q/6Lev5ZCNKVxcbiAgICBpZiAodHlwZW9mKOaOkumZpCkgIT0gJ3VuZGVmaW5lZCcgJiYg5o6S6ZmkICE9ICcnKSB7XFxuICAgICAgICBkYXRhID0gZGF0YS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIik7XFxuICAgIH1cXG4gICAgcmV0dXJuIGRhdGE7XFxufSk7XFxuXFxudmFyIGxpc3RzID0gcGRmYShodG1sLCDpgInpm4YpLm1hcChkYXRhID0+IHBkZmEoZGF0YSwg6YCJ6ZuG5YiX6KGoKSlcXG5cXG5hZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICBjbGVhck15VmFyKFxcXCJsaXN0c1xcXCIpO1xcbn0pKTtcXG5zdG9yYWdlMC5wdXRNeVZhcihcXFwibGlzdHNcXFwiLCBsaXN0cyk7XFxudmFyIGxpc3QgPSBsaXN0c1tnZXRNeVZhcihNWV9VUkwsICcwJyldO1xcbnZhciDmjpLluo8gPSBnZXRNeVZhcihNWV9VUkwgKyBcXFwi56ug6IqC5o6S5bqPXFxcIiwgJyMxYWFkMTlcXFwiPuato+W6jycpO1xcbnZhciDmj5DnpLogPSDmjpLluo8gPT0gJyNGRjAwMDBcXFwiPuWAkuW6jycgPyAnIzFhYWQxOVxcXCI+5q2j5bqPJyA6ICcjRkYwMDAwXFxcIj7lgJLluo8nO1xcbnZhciDmjpLluo/lkI0gPSAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOuaOkuW6jzwvc3Bhbj48L2I+JztcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxzcGFuIHN0eWxlPVxcXCJjb2xvcjogJyArIOaOkuW6jyArICc8L3NwYW4+PC9iPicsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgodGFicywg5o6S5bqP5ZCNLCBsYXp5LCBkLFRW5o6o6YCBKSA9PiB7XFxuICAgICAgICB2YXIgbGlzdHMgPSBzdG9yYWdlMC5nZXRNeVZhcihcXFwibGlzdHNcXFwiKTtcXG4gICAgICAgIHZhciDnq6DoioIgPSBsaXN0c1tnZXRNeVZhcihNWV9VUkwsICcwJyldO1xcbiAgICAgICAgdmFyIOaOkuW6jyA9IGdldE15VmFyKE1ZX1VSTCArIFxcXCLnq6DoioLmjpLluo9cXFwiLCAnIzFhYWQxOVxcXCI+5q2j5bqPJyk7XFxuICAgICAgICB2YXIg5o+Q56S6ID0g5o6S5bqPID09ICcjRkYwMDAwXFxcIj7lgJLluo8nID8gJyMxYWFkMTlcXFwiPuato+W6jycgOiAnI0ZGMDAwMFxcXCI+5YCS5bqPJztcXG4gICAgICAgIHVwZGF0ZUl0ZW0oe1xcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGlkOiBNWV9VUkwgKyBcXFwiX+aOkuW6j1xcXCIsXFxuICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3tcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwiVFZib3jmjqjpgIFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAganM6IFRW5o6o6YCBKHRhYnMsIGxpc3RzLCBkKVxcbiAgICAgICAgICAgICAgICB9XVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgdGl0bGU6IOaOkuW6j+WQjS5yZXBsYWNlKCfmjpLluo8nLCDmj5DnpLopXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmICjmjpLluo8gPT0gJyMxYWFkMTlcXFwiPuato+W6jycpIHtcXG4gICAgICAgICAgICDnq6DoioIucmV2ZXJzZSgpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGNwID0g56ug6IqCLm1hcCgoZGF0YSwgc3NpZCkgPT4gKHtcXG4gICAgICAgICAgICB0aXRsZTogcGRmaChkYXRhLCAnYSYmVGV4dCcpLFxcbiAgICAgICAgICAgIHVybDogcGQoZGF0YSwgJ2EmJmhyZWYnKSArIGxhenksXFxuICAgICAgICAgICAgY29sX3R5cGU6IOeroOiKgi5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBjbHM6IE1ZX1VSTCArIFxcXCJf6YCJ6ZuGXFxcIixcXG4gICAgICAgICAgICAgICAgaWQ6IHBkKGRhdGEsICdhJiZocmVmJylcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSk7XFxuICAgICAgICBkZWxldGVJdGVtQnlDbHMoTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiKTtcXG4gICAgICAgIGFkZEl0ZW1CZWZvcmUoTVlfVVJMICsgXFxcImZvb3RlclxcXCIsIGNwKTtcXG4gICAgICAgIHB1dE15VmFyKE1ZX1VSTCArIFxcXCLnq6DoioLmjpLluo9cXFwiLCDmj5DnpLopO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgfSwgdGFicywg5o6S5bqP5ZCNLCBsYXp5LCBkWzBdLFRW5o6o6YCBKSxcXG4gICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogTVlfVVJMICsgXFxcIl/mjpLluo9cXFwiLFxcbiAgICAgICAgbG9uZ0NsaWNrOiBbe1xcbiAgICAgICAgICAgIHRpdGxlOiBcXFwiVFZib3jmjqjpgIFcXFwiLFxcbiAgICAgICAgICAgIGpzOiBUVuaOqOmAgSh0YWJzLCBsaXN0cywgZFswXSlcXG4gICAgICAgIH1dXFxuICAgIH1cXG59KTtcXG5cXG5mdW5jdGlvbiBUVuaOqOmAgSh0YWJzLCBsaXN0cywgZCkge1xcbiAgICByZXR1cm4gJC50b1N0cmluZygodGFicywgbGlzdHMsIGQpID0+IHtcXG4gICAgICAgIHZhciDmjqjpgIEgPSB7XFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBnZXRQYWdlVGl0bGUoKSxcXG4gICAgICAgICAgICBcXFwiY29udGVudFxcXCI6IGQuZGVzYyxcXG4gICAgICAgICAgICBcXFwicGljXFxcIjogZC5pbWcgfHwgZC5waWNfdXJsLFxcbiAgICAgICAgICAgIFxcXCJmcm9tXFxcIjogdGFicy5qb2luKCckJCQnKSxcXG4gICAgICAgICAgICBcXFwidXJsXFxcIjogc3RvcmFnZTAuZ2V0TXlWYXIoXFxcImxpc3RzXFxcIikubWFwKGxpID0+IGxpLm1hcChsaTEgPT4gcGRmaChsaTEsICdUZXh0JykgKyAnJCcgKyBwZChsaTEsICdhJiZocmVmJykpLmpvaW4oJyMnKSkuam9pbignJCQkJylcXG4gICAgICAgIH07XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9wdXNoP3J1bGU9WFlR5o6o6YCBJnB1c2h1cmw9XFxcIiArIGVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeSjmjqjpgIEpKTtcXG4gICAgfSwgdGFicywgbGlzdHMsIGQpO1xcbn1cXG5cXG50YWJzLmZvckVhY2goKGRhdGEsIGlkKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoTVlfVVJMLCAnMCcpID09IGlkID8gYOKAnOKAnCR7ZGF0YX3igJ3igJ1gIDogZGF0YSxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgo57q/6LevLCBsYXp5LCBpZCkgPT4ge1xcbiAgICAgICAgICAgIHZhciBsaXN0cyA9IHN0b3JhZ2UwLmdldE15VmFyKFxcXCJsaXN0c1xcXCIpO1xcbiAgICAgICAgICAgIHZhciDmjpLluo8gPSBnZXRNeVZhcihNWV9VUkwgKyBcXFwi56ug6IqC5o6S5bqPXFxcIiwgJyMxYWFkMTlcXFwiPuato+W6jycpO1xcbiAgICAgICAgICAgIHZhciDmj5DnpLogPSDmjpLluo8gPT0gJyNGRjAwMDBcXFwiPuWAkuW6jycgPyAnIzFhYWQxOVxcXCI+5q2j5bqPJyA6ICcjRkYwMDAwXFxcIj7lgJLluo8nO1xcbiAgICAgICAgICAgIOe6v+i3ry5mb3JFYWNoKChkYXRhLCB4bGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHVwZGF0ZUl0ZW0oe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGlkID09IHhsaWQgPyBg4oCc4oCcJHtkYXRhfeKAneKAnWAgOiBkYXRhLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogTVlfVVJMICsgXFxcIl/nur/ot69cXFwiICsgeGxpZFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHB1dE15VmFyKE1ZX1VSTCwgaWQpXFxuICAgICAgICAgICAgdmFyIOeroOiKgiA9IGxpc3RzW2dldE15VmFyKE1ZX1VSTCwgJzAnKV07XFxuICAgICAgICAgICAgaWYgKOaOkuW6jyA9PSAnI0ZGMDAwMFxcXCI+5YCS5bqPJykge1xcbiAgICAgICAgICAgICAgICDnq6DoioIucmV2ZXJzZSgpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGxldCBjcCA9IOeroOiKgi5tYXAoKGRhdGEsIHNzaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGRhdGEsICdhJiZUZXh0JyksXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHBkKGRhdGEsICdhJiZocmVmJykgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IOeroOiKgi5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJyxcXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xzOiBNWV9VUkwgKyBcXFwiX+mAiembhlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHBkKGRhdGEsICdhJiZocmVmJylcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkZWxldGVJdGVtQnlDbHMoTVlfVVJMICsgXFxcIl/pgInpm4ZcXFwiKTtcXG4gICAgICAgICAgICBhZGRJdGVtQmVmb3JlKE1ZX1VSTCArIFxcXCJmb290ZXJcXFwiLCBjcCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgdGFicywgbGF6eSwgaWQpLFxcbiAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBNWV9VUkwgKyBcXFwiX+e6v+i3r1xcXCIgKyBpZFxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59KVxcblxcbmlmICjmjpLluo8gPT0gJyNGRjAwMDBcXFwiPuWAkuW6jycpIHtcXG4gICAgbGlzdC5yZXZlcnNlKClcXG59XFxubGlzdC5mb3JFYWNoKChkYXRhLCBpZCkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHBkZmgoZGF0YSwgJ2EmJlRleHQnKSxcXG4gICAgICAgIHVybDogcGQoZGF0YSwgJ2EmJmhyZWYnKSArIGxhenksXFxuICAgICAgICBjb2xfdHlwZTogbGlzdC5sZW5ndGggPiAzID8gJ3RleHRfNCcgOiAndGV4dF8yJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgY2xzOiBNWV9VUkwgKyBcXFwiX+mAiembhlxcXCIsXFxuICAgICAgICAgICAgaWQ6IHBkKGRhdGEsICdhJiZocmVmJylcXG4gICAgICAgIH1cXG4gICAgfSk7XFxufSlcXG5cXG4gICAgc2V0TGFzdENoYXB0ZXJSdWxlKCdqczonICsgJC50b1N0cmluZygo6YCJ6ZuGLCDpgInpm4bliJfooagpID0+IHtcXG4gICAgICAgIHNldFJlc3VsdCgn5pu05paw6IezOiDnrKwnICsgcGRmYShnZXRSZXNDb2RlKCksIOmAiembhikubWFwKGRhdGEgPT4gcGRmYShkYXRhLCDpgInpm4bliJfooagpLmxlbmd0aCkuc29ydCgoYSwgYikgPT4gYiAtIGEpWzBdICsgXFxcIumbhlxcXCIpO1xcbiAgICB9LCDpgInpm4YsIOmAiembhuWIl+ihqCkpO1xcbmQucHVzaCh7XFxuICAgIGNvbF90eXBlOiBcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcIixcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBNWV9VUkwgKyBcXFwiZm9vdGVyXFxcIlxcbiAgICB9XFxufSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuoznuqdwbGF5X3NvdXJjZV90YWJcIixcInBhdGhcIjpcInBsYXlfc291cmNlX3RhYlwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAnLnJlbWFya3MmJlRleHQnKSArXFxuICAgICAgICAnXFxcXG4nICsgcGRmaChodG1sLCAnLnMtdG9wLWluZm8tZGV0YWlsJiZhJiZUZXh0JykgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLnMtdG9wLWluZm8tZGV0YWlsJiZhLDEmJlRleHQnKSArXFxuICAgICAgICBwZGZoKGh0bWwsICcucy10b3AtaW5mby1kZXRhaWwmJmEsMiYmVGV4dCcpICtcXG4gICAgICAgICdcXFxcbuKAnOKAnOeugOS7i++8muS4jeiDveeUqOWwseWIoOaOieWQp+KAneKAnScsXFxuICAgIGRlc2M6IHBkZmgoaHRtbCwgJy5kZXNjX3R4dCYmVGV4dCcpLnN1YnN0cmluZygwLCAyMCksXFxuICAgIGltZzogcGQoaHRtbCwgJy5pbWctY292ZXJ8fC52b2QtZGV0YWlsLWJqJiZzcmMnKSxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG52YXIg57q/6LevID0gJy5wbGF5X3NvdXJjZV90YWImJmEnXFxudmFyIOmAiembhiA9ICdib2R5JiYucGxheWVyX2xpc3R8fCNwbGF5bGlzdGJveHx8I3BsYXlzeCdcXG52YXIg57q/6Lev5ZCNID0gJ2EmJlRleHQnXFxudmFyIOmAiembhuWIl+ihqCA9ICd1bCYmbGknXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9lcmppP3J1bGU95qih5p2/wrdRJykpLnJ1bGUpXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnZmVkLXBsYXktaXRlbVwiLFwicGF0aFwiOlwiZmVkLXBsYXktaXRlbVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogcGRmaChodG1sLCAnZGQmJmxpLDMmJlRleHQnKSArXFxuICAgICAgICAnXFxcXG4nICsgcGRmaChodG1sLCAnZGQmJmxpLDQmJlRleHQnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAxNSkgKyAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJ2RkJiZsaSw1JiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTUpLFxcbiAgICBkZXNjOiBwZGZoKGh0bWwsICdkZCYmbGksNiYmVGV4dCcpLnN1YnN0cmluZygwLCAyNSksXFxuICAgIHBpY191cmw6IHBkKGh0bWwsICcuZmVkLWxhenkmJmRhdGEtb3JpZ2luYWwnKSxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxufSk7XFxudmFyIOe6v+i3ryA9ICdib2R5JiYuZmVkLWRyb3AtYnRucydcXG52YXIg6YCJ6ZuGID0gJ2JvZHkmJi5mZWQtcGxheS1pdGVtJ1xcbnZhciDnur/ot6/lkI0gPSAnYSYmVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ2JvZHkmJi5mZWQtYnRucy1pbmZvJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0omRsXCIsXCJwYXRoXCI6XCJkbFwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnYm9keSYmZGwnKTtcXG5sb2coJ+aQnOe0oue7k+aenCcpXFxubG9nKGxpc3QpXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHRocm93IFxcXCLmkJzntKLkuLrnqbrvvIzlj6/og73ljLnphY3plJnor69cXFwiXFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnaDEmJlRleHQnKSxcXG4gICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLmZlZC1saXN0LXJlbWFya3MmJlRleHQnKSxcXG5cXHQgICAgY29udGVudDogcGRmaChsaXN0W2pdLCAnLmZlZC1wYXJ0LWVzYW4tLXNwYW4mJlRleHQnKSxcXG4gICAgICAgaW1nOiBwZChsaXN0W2pdLCAnYSYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJylcXG4gIH0pO1xcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIiNNYXBwaW5nXCIsXCJwYXRoXCI6XCJNYXBwaW5nXCIsXCJydWxlXCI6XCJqczpcXG4kLmV4cG9ydHMgPSB7XFxuICAgIFxcXCJob21lXFxcIjogW3tcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIiBiIFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcIi5iXFxcIixcXG4gICAgICAgICAgICAvLyAgICAgYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIm5hdi10YWJzXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibmF2LXRhYnNcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIm15dWktY29udGVudF9fbGlzdFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcIm15dWktY29udGVudF9fbGlzdFxcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibmF2LXRhYnNcXFwiLCBcXFwic3R1aS1jb250ZW50X19wbGF5bGlzdFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcIm5hdi10YWJzMVxcXCIsXFxuICAgICAgICAgICAgYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcImgzXFxcIiwgXFxcInN0dWktY29udGVudF9fcGxheWxpc3RcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoM1xcXCIsXFxuICAgICAgICAgICAgYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIm15dWktdm9kbGlzdCBcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJteXVpLXZvZGxpc3RcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcIm1vLW1vdnMtaXRlbVxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcIm1vLW1vdnMtaXRlbVxcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibW9kdWxlLXRhYi1pdGVtXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW9kdWxlLXRhYi1pdGVtXFxcIixcXG4gICAgICAgICAgICAvLyAgICAgYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAga2V5czogW1xcXCJ5LXBsYXlMaXN0XFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwieS1wbGF5TGlzdFxcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwic3R1aS12b2RsaXN0IFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcInN0dWktdm9kbGlzdFxcXCIsXFxuICAgICAgICAgICAgLy8gICAgIGFsbEtleTogdHJ1ZSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJwbGF5X3NvdXJjZV90YWJcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJwbGF5X3NvdXJjZV90YWJcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcImZlZC1wbGF5LWl0ZW1cXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJmZWQtcGxheS1pdGVtXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJtb2R1bGUtaXRlbVxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcIm1vZHVsZS1pdGVtc1xcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwidm9kbGlzdCBcXFwiLCBcXFwibGF6eWxvYWRcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJ2b2RsaXN0XFxcIixcXG4gICAgICAgICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibW8tcGxheS1sb2FkXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW8tcGxheS1sb2FkXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJmZWQtbGlzdC10aXRsZVxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcImZlZC1saXN0LXRpdGxlXFxcIixcXG4gICAgICAgICAgICAvL2FsbEtleTogdHJ1ZSxcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJwYWNrLXlrcGFja1xcXFxcXFwiXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwicGFjay15a3BhY2tcXFwiLFxcbiAgICAgICAgfSxcXG4gICAgICAgIC8qXFxuICAgICAgICAgICAgICAgIHtcXG4gICAgICAgICAgICAgICAgICAgIGtleXM6IFtcXFwiaXRlbVxcXCJdLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFwiaXRlbVxcXCIsXFxuICAgICAgICAgICAgICAgIH0sKi9cXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcImRhdGFfbGlzdFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcImRhdGFfbGlzdFxcXCIsXFxuICAgICAgICB9LFxcbiAgICBdLFxcbiAgICBcXFwic2VhcmNoXFxcIjogW3tcXG4gICAgICAgICAgICBrZXlzOiBbXFxcInN0dWktdm9kbGlzdF9fbWVkaWFcXFwiXSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJzdHVpLXZvZGxpc3RfX21lZGlhXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJteXVpLXZvZGxpc3RfX21lZGlhXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibXl1aS12b2RsaXN0X19tZWRpYVxcXCIsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibW9kdWxlLXNlYXJjaC1pdGVtXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW9kdWxlLXNlYXJjaC1pdGVtXFxcIixcXG4gICAgICAgIH0sXFxuICAgICAgICB7XFxuICAgICAgICAgICAga2V5czogW1xcXCJzdHVpLXZvZGxpc3QgXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwic3R1aS12b2RsaXN0XFxcIixcXG4gICAgICAgICAgICAvLyAgICAgYWxsS2V5OiB0cnVlLFxcbiAgICAgICAgfSxcXG4gICAgICAgIHtcXG4gICAgICAgICAgICBrZXlzOiBbXFxcImRsIFxcXCJdLFxcbiAgICAgICAgICAgIHVybDogXFxcImRsXFxcIixcXG4gICAgICAgICAgICBhbGxLZXk6IHRydWUsXFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIGtleXM6IFtcXFwibW9kdWxlLWl0ZW1zXFxcIl0sXFxuICAgICAgICAgICAgdXJsOiBcXFwibW9kdWxlLWl0ZW1zXFxcIixcXG4gICAgICAgIH0sXFxuICAgIF1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCIjYXV0b1wiLFwicGF0aFwiOlwiYXV0b1wiLFwicnVsZVwiOlwianM6XFxuZnVuY3Rpb24gZ2V0UGFnZVNvdXJjZShrZXkpIHtcXG4gICAgbGV0IHNyYyA9IHJlcXVlc3QoXFxcImhpa2VyOi8vcGFnZS9cXFwiICsga2V5ICsgXFxcIj9ydWxlPeaooeadv8K3UVxcXCIpO1xcbiAgICBzcmMgPSBKU09OLnBhcnNlKHNyYykucnVsZTtcXG4gICAgcmV0dXJuIHNyYztcXG59XFxuY29uc3Qgc291cmNlTWFwID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvTWFwcGluZz9ydWxlPeaooeadv8K3UVxcXCIpO1xcblxcbmZ1bmN0aW9uIGF1dG9QYWdlKGh0bWxzcmMsIHR5cGUpIHtcXG4gICAgbGV0IHBhZ2VSdWxlcyA9IFtdLFxcbiAgICAgICAgaHRtbFNvdXJjZSA9IGh0bWxzcmMsXFxuICAgICAgICBwYWdlVHlwZSxcXG4gICAgICAgIG1NYXBwaW5nO1xcbiAgICBpZiAodHlwZSAhPT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICBwYWdlVHlwZSA9IHR5cGU7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwYWdlVHlwZSA9IE1ZX1RZUEU7XFxuICAgIH1cXG4gICAgbU1hcHBpbmcgPSBzb3VyY2VNYXBbcGFnZVR5cGVdO1xcbiAgICBpZiAobU1hcHBpbmcgPT09IHVuZGVmaW5lZCB8fCAhQXJyYXkuaXNBcnJheShtTWFwcGluZykpIHtcXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi5LiN5a2Y5ZyoXFxcIiArIHBhZ2VUeXBlICsgXFxcIuexu+Wei+eahOaooeadv1xcXCIpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGl0ZW0gb2YgbU1hcHBpbmcpIHtcXG4gICAgICAgIGlmIChpdGVtLmFsbEtleSkge1xcbiAgICAgICAgICAgIGlmIChpdGVtLmtleXMuZXZlcnkoa2V5ID0+IGh0bWxTb3VyY2UuaW5jbHVkZXMoa2V5KSkpIHtcXG4gICAgICAgICAgICAgICAgcGFnZVJ1bGVzLnB1c2goaXRlbSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoaXRlbS5rZXlzLnNvbWUoa2V5ID0+IGh0bWxTb3VyY2UuaW5jbHVkZXMoa2V5KSkpIHtcXG4gICAgICAgICAgICAgICAgcGFnZVJ1bGVzLnB1c2goaXRlbSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGlmKHBhZ2VSdWxlcy5sZW5ndGggPT0gMCkge1xcbiAgICAgICAgbG9nKFxcXCLmmoLml6DlkIjpgILnmoTmqKHmnb9cXFwiKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBwYWdlUnVsZSBvZiBwYWdlUnVsZXMpIHtcXG4gICAgICAgIGxvZyhcXFwi5q2j5Zyo5Yy56YWN77yaXFxcIiArIHBhZ2VSdWxlLnVybCk7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGV2YWwuY2FsbChudWxsLCBcXFwiOyhmdW5jdGlvbigpe1xcXCIgKyBnZXRQYWdlU291cmNlKHBhZ2VSdWxlLnVybCkgKyBcXFwifSkoKVxcXCIpO1xcbiAgICAgICAgICAgIGxvZyhcXFwi5Yy56YWN5qih5p2/5oiQ5Yqf77yM5q2j5Zyo57uT5p2f5Yy56YWN6L+b56iLXFxcIik7XFxuICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgbG9nKFxcXCLljLnphY3mqKHmnb/plJnor69cXFwiKTtcXG4gICAgICAgICAgICBsb2coZS50b1N0cmluZygpKVxcbiAgICAgICAgICAgIGxvZyhcXFwi5q2j5Zyo5Yy56YWN5LiL5LiA5Liq5qih5p2/Li4uLi4uXFxcIilcXG4gICAgICAgICAgICBpZiAocGFnZVJ1bGUudXJsID09IHBhZ2VSdWxlc1twYWdlUnVsZXMubGVuZ3RoIC0gMV0udXJsKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhcXFwi5bey5Yy56YWN5Yiw5pyA5ZCO5LiA5Liq5qih5p2/77yM5pqC5peg5ZCI6YCC55qE5qih5p2/XFxcIik7XFxuICAgICAgICAgICAgICAgIHNldFJlc3VsdChbXSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICB9XFxuXFxufVxcbiQuZXhwb3J0cy5hdXRvUGFnZSA9IGF1dG9QYWdlO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qncGFjay15a3BhY2tcIixcInBhdGhcIjpcInBhY2steWtwYWNrXCIsXCJydWxlXCI6XCJ2YXIgZCA9W107XFxuTVlfUlVMRS51cmwubWF0Y2goL2Z5cGFnZS8pWzBdXFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJ2JvZHkmJi5wYWNrLXlrcGFjaycpO1xcbmZvciAodmFyIGogaW4gbGlzdCkge1xcbiAgZC5wdXNoKHtcXG4gICAgICAgdGl0bGU6IHBkZmgobGlzdFtqXSwgJ2EmJnRpdGxlJyksXFxuICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJ3NwYW4sLTEmJlRleHQnKSxcXG4gICAgICAgaW1nOiBwZChsaXN0W2pdLCAnLmVjbGF6eSYmZGF0YS1vcmlnaW5hbCcpKydAUmVmZXJlcj0nLFxcbiAgICAgICB1cmw6IHBkKGxpc3Rbal0sJ2EmJmhyZWYnKSsgJyNpbW1lcnNpdmVUaGVtZSMnXFxuICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qnbW9kdWxlLWl0ZW1zXCIsXCJwYXRoXCI6XCJtb2R1bGUtaXRlbXNcIixcInJ1bGVcIjpcIk1ZX1JVTEUudXJsLm1hdGNoKC9meXBhZ2UvKVswXVxcbnZhciBkID0gW11cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnYm9keSYmLm1vZHVsZS1pdGVtJyk7XFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnc3Ryb25nfHxhJiZUZXh0fHx0aXRsZScpLFxcbiAgICAgICAgZGVzYzogcGRmaChsaXN0W2pdLCAnLm1vZHVsZS1pdGVtLXRleHR8fC5tb2R1bGUtaXRlbS1ub3RlJiZUZXh0JyksXFxuICAgICAgICBwaWNfdXJsOiBwZChsaXN0W2pdLCAnaW1nfHwubGF6eSYmZGF0YS1zcmN8fGRhdGEtb3JpZ2luYWx8fHNyYycpICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJykgKyBcXFwiI2ltbWVyc2l2ZVRoZW1lI1xcXCJcXG4gICAgfSk7XFxufVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p21vZHVsZS10YWItaXRlbVwiLFwicGF0aFwiOlwibW9kdWxlLXRhYi1pdGVtXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbnRyeSB7XFxuICAgIHZhciB0aXRsZSA9IHBkZmEoaHRtbCwgJ2JvZHktLWEmJi50YWctbGluaycpO1xcbn0gY2F0Y2ggKGUpIHtcXG4gICAgdmFyIHRpdGxlID0gJyc7XFxufVxcbnZhciBUID0gW107XFxuZm9yICh2YXIgaSBpbiB0aXRsZSkge1xcbiAgICBULnB1c2gocGRmaCh0aXRsZVtpXSwgJ2EmJlRleHQnKSlcXG59XFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFQuam9pbignICAnKSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLnZpZGVvLWluZm8taXRlbXMsMSYmVGV4dCcpXFxuICAgICAgICAuc3BsaXQoJy8nKS5qb2luKCcgICcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDIwKSArICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLnZpZGVvLWluZm8taXRlbXMmJlRleHQnKVxcbiAgICAgICAgLnNwbGl0KCcvJykuam9pbignICAnKVxcbiAgICAgICAgLnN1YnN0cmluZygwLCAyMCksXFxuICAgIGRlc2M6IHBkZmgoaHRtbCwgJy52aWRlby1pbmZvLWl0ZW1zLDImJlRleHQnKSxcXG4gICAgaW1nOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxkYXRhLXNyY3x8c3JjJyksXFxuICAgIHVybDogTVlfVVJMLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxudmFyIOe6v+i3ryA9ICdib2R5JiYubW9kdWxlLXRhYi1pdGVtJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLnNjcm9sbC1ib3gteXx8Lm1vZHVsZS1saXN0J1xcbnZhciDnur/ot6/lkI0gPSAnc3BhbiYmVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ2JvZHkmJmEnXFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9lcmppP3J1bGU95qih5p2/wrdRJykpLnJ1bGUpXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5pCc57SibW9kdWxlLXNlYXJjaC1pdGVtXCIsXCJwYXRoXCI6XCJtb2R1bGUtc2VhcmNoLWl0ZW1cIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJ2JvZHkmJi5tb2R1bGUtc2VhcmNoLWl0ZW0nKTtcXG5sb2coJ+aQnOe0oue7k+aenCcpXFxubG9nKGxpc3QpXFxuaWYgKGxpc3QubGVuZ3RoID09IDApIHRocm93IFxcXCLmkJzntKLkuLrnqbrvvIzlj6/og73ljLnphY3plJnor69cXFwiXFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnaDMmJlRleHQnKSxcXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy52aWRlby1zZXJpYWwmJlRleHQnKSxcXG4gICAgICAgIGNvbnRlbnQ6IHBkZmgobGlzdFtqXSwgJy52aWRlby1pbmZvLWF1eCYmVGV4dCcpLFxcbiAgICAgICAgaW1nOiBwZChsaXN0W2pdLCAnaW1nJiZkYXRhLW9yaWdpbmFsfHxkYXRhLXNyYycpLFxcbiAgICAgICAgdXJsOiBwZChsaXN0W2pdLCAnLnZpZGVvLXNlcmlhbCYmaHJlZicpICsgJyNpbW1lcnNpdmVUaGVtZSMnXFxuICAgIH0pO1xcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p2l0ZW1cIixcInBhdGhcIjpcIml0ZW1cIixcInJ1bGVcIjpcInZhciBkID0gW107XFxuTVlfUlVMRS51cmwubWF0Y2goL2Z5cGFnZS8pWzBdXFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJ2JvZHkmJi5pdGVtJyk7XFxuZm9yIChsZXQgaSBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2ldLCAnaW1nJiZhbHQnKSxcXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtpXSwgJ3AmJlRleHQnKSxcXG4gICAgICAgIHBpY191cmw6IHBkKGxpc3RbaV0sICdpbWcmJnNyYycpLFxcbiAgICAgICAgdXJsOiBwZChsaXN0W2ldLCAnYSYmaHJlZicpLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICB9KVxcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wibmFtZVwiOlwi5LiA57qnZGF0YV9saXN0XCIsXCJwYXRoXCI6XCJkYXRhX2xpc3RcIixcInJ1bGVcIjpcInZhciBkID0gW107XFxuTVlfUlVMRS51cmwubWF0Y2goL2Z5cGFnZS8pWzBdXFxudmFyIGxpc3QgPSBwZGZhKGdldFJlc0NvZGUoKSwgJyNkYXRhX2xpc3QmJmxpJyk7XFxuZm9yIChsZXQgaSBpbiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChsaXN0W2ldLCAnYSYmdGl0bGUnKSxcXG4gICAgICAgIGRlc2M6IHBkZmgobGlzdFtpXSwgJ2VtJiZUZXh0JyksXFxuICAgICAgICBwaWNfdXJsOiBwZChsaXN0W2ldLCAnaW1nJiZkYXRhLXNyYycpLFxcbiAgICAgICAgdXJsOiBwZChsaXN0W2ldLCAnYSYmaHJlZicpLFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICB9KVxcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p2gzXCIsXCJwYXRoXCI6XCJoM1wiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKTtcXG5pZiAoaHRtbC5pbmRleE9mKCfmo4DmtYvkuK0nKSAhPSAtMSkge1xcbiAgICBodG1sID0gcmVxdWVzdChNWV9VUkwgKyAnP2J0d2FmJyArIGh0bWwubWF0Y2goL2J0d2FmKC4qPylcXFxcXFxcIi8pWzFdKTtcXG59XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IHBkZmgoaHRtbCwgJy5kYXRhLDImJlRleHQnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+exu+Wei++8micsICcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+WcsOWMuu+8micsICcnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+W5tOS7ve+8micsICcgJylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTgpICsgJ1xcXFxuJyArXFxuICAgICAgICBwZGZoKGh0bWwsICcuZGF0YSwxJiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTUpICsgJ1xcXFxuJyArXFxuICAgICAgICBwZGZoKGh0bWwsICcuZGF0YSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnLmRldGFpbC1za2V0Y2h8fC5kYXRhLDN8fCNkZXNjJiZUZXh0JyksXFxuICAgIGltZzogcGQoaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcblxcbnZhciDnur/ot68gPSAnYm9keSYmLnN0dWktcGFubmVsOmhhcyguc3R1aS1jb250ZW50X19wbGF5bGlzdCknXFxudmFyIOmAiembhiA9ICdib2R5JiYuc3R1aS1jb250ZW50X19wbGF5bGlzdCdcXG52YXIg57q/6Lev5ZCNID0gJ2gzJiZUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p2ZlZC1saXN0LXRpdGxlXCIsXCJwYXRoXCI6XCJmZWQtbGlzdC10aXRsZVwiLFwicnVsZVwiOlwidmFyIGQgPSBbXTtcXG5NWV9SVUxFLnVybC5tYXRjaCgvZnlwYWdlLylbMF1cXG52YXIgbGlzdCA9IHBkZmEoZ2V0UmVzQ29kZSgpLCAnLmZlZC1saXN0LWluZm8mJmxpJyk7XFxuZm9yICh2YXIgaiBpbiBsaXN0KSB7XFxuICBkLnB1c2goe1xcbiAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCAnLmZlZC1saXN0LXRpdGxlJiZUZXh0JyksXFxuICAgICAgIGRlc2M6IHBkZmgobGlzdFtqXSwgJy5mZWQtdGV4dC1jZW50ZXImJlRleHQnKSxcXG4gICAgICAgaW1nOiBwZChsaXN0W2pdLCAnYSYmZGF0YS1vcmlnaW5hbCcpKydAUmVmZXJlcj0nLFxcbiAgICAgICB1cmw6IHBkKGxpc3Rbal0sICdhJiZocmVmJylcXG4gIH0pO1xcbn1cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p215dWktY29udGVudF9fbGlzdFwiLFwicGF0aFwiOlwibXl1aS1jb250ZW50X19saXN0XCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcuZGF0YSwwJiZUZXh0JylcXG4gICAgICAgIC5yZXBsYWNlKCflnLDljLrvvJonLCAnICAnKVxcbiAgICAgICAgLnJlcGxhY2UoJ+W5tOS7ve+8micsICcgICcpICsgJ1xcXFxuJyArXFxuICAgICAgICBwZGZoKGh0bWwsICcuZGF0YSwxJiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTUpICsgJ1xcXFxuJyArXFxuICAgICAgICBwZGZoKGh0bWwsICcuZGF0YSwyJiZUZXh0JyksXFxuICAgIGRlc2M6IHBkZmgoaHRtbCwgJy5kYXRhLDMmJlRleHQnKSxcXG4gICAgcGljX3VybDogcGQoaHRtbCwgJy5sYXp5bG9hZCYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcbnZhciDnur/ot68gPSAnYm9keSYmLm15dWktcGFuZWwtYm94OmhhcygubXl1aS1jb250ZW50X19saXN0KSdcXG52YXIg6YCJ6ZuGID0gJ2JvZHkmJi5teXVpLWNvbnRlbnRfX2xpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdoMyYmVGV4dCdcXG52YXIg6YCJ6ZuG5YiX6KGoID0gJ3VsJiZsaSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlrZfnrKbkuLLlpITnkIblt6XlhbdcIixcInBhdGhcIjpcInN0cmluZ3Rvb2xcIixcInJ1bGVcIjpcImpzOlxcbmNvbnN0IG1hdGNoTGlzdCAgPSB7XFxuICAvLyBcXFwiPFxcXCI6XFxcIiZsdDtcXFwiLFxcbiAgLy8gXFxcIj5cXFwiOiBcXFwiJmd0O1xcXCIsXFxuICAvLyBcXFwiJlxcXCI6IFxcXCImYW1wO1xcXCIsXFxuICAvLyAnXFxcIic6IFxcXCImcXVvdDtcXFwiLFxcbiAgLy8gXFxcIidcXFwiOiBcXFwiYWN1dGU7XFxcIixcXG4gIFxcXCIgXFxcIjogXFxcIiZuYnNwO1xcXCIsXFxuICBcXFwiXFxcXG5cXFwiOlxcXCI8YnI+XFxcIlxcbn1cXG4vLyDlrZfnrKbov4fmu6TlmahcXG5mdW5jdGlvbiBodG1sRXNjYXBlKHRleHQpe1xcbiAgbGV0IHJlZ1N0ciA9ICcoJyArIE9iamVjdC5rZXlzKG1hdGNoTGlzdCkudG9TdHJpbmcoKSArICcpJ1xcbiAgcmVnU3RyID0gcmVnU3RyLnJlcGxhY2UoLywvZywgJyl8KCcpICBcXG4gIGNvbnN0IHJlZ0V4cCA9IG5ldyBSZWdFeHAocmVnU3RyLCAnZycpXFxuICByZXR1cm4gdGV4dC5yZXBsYWNlKHJlZ0V4cCwgbWF0Y2ggPT4gbWF0Y2hMaXN0W21hdGNoXSlcXG59XFxuJC5leHBvcnRzLmh0bWxFc2NhcGUgPSBodG1sRXNjYXBlXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliqjmgIHliIbnsbsxXCIsXCJwYXRoXCI6XCJkdGZsXCIsXCJydWxlXCI6XCJjb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbmlmICh0eXBlb2Yo5ou85o6l5YiG57G7KSAhPSAndW5kZWZpbmVkJyAmJiDmi7zmjqXliIbnsbsgIT0gJycpIHtcXG4gICAgdmFyIGNhdGVnb3JpZXMgPSBwZGZhKGh0bWwsIOWkp+exu+WumuS9jSkuY29uY2F0KHBkZmEoaHRtbCwg5ou85o6l5YiG57G7KSlcXG59IGVsc2Uge1xcbiAgICB2YXIgY2F0ZWdvcmllcyA9IHBkZmEoaHRtbCwg5aSn57G75a6a5L2NKVxcbn1cXG5sZXQgcyA9IFtdXFxubGV0IGluaXRfY2F0ZSA9IFtdXFxuXFxuZm9yIChsZXQgaSA9IDA7IGkgPCAyMDsgaSsrKSB7XFxuICAgIGluaXRfY2F0ZS5wdXNoKFxcXCIwXFxcIilcXG59XFxuXFxuY29uc3QgZm9sZCA9IGdldFZhcihNWV9SVUxFLmdyb3VwLCBcXFwiMFxcXCIpXFxuY29uc3QgY2F0ZV90ZW1wX2pzb24gPSBnZXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG5jb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcblxcbmlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICBzLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGZvbGQgPT09ICcxJyA/ICfigJzigJzigJ3igJ08Yj4nICsgJ+KIqCcuZm9udGNvbG9yKFxcXCIjRkYwMDAwXFxcIikgKyAnPC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+JyArICfiiKcnLmZvbnRjb2xvcihcXFwiIzFhYWQxOVxcXCIpICsgJzwvYj4nLFxcbiAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGZvbGQpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS5ncm91cCwgZm9sZCA9PT0gJzEnID8gJzAnIDogJzEnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgfSwgZm9sZCksXFxuICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICB9KVxcbiAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzID0gcGRmYShjYXRlZ29yeSwg5bCP57G75a6a5L2NKTtcXG4gICAgICAgIGlmIChpbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZijmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0aXRsZS5mb250Y29sb3Io5YiG57G76aKc6ImyKSA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkKGl0ZW0sIOWIhuexu+mTvuaOpSkgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG5ld19jYXRlID0gW11cXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wLmZvckVhY2goKGNhdGUsIGluZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19jYXRlLnB1c2goaW5kZXggPT09IDAgPyBwYXJhbXMua2V5LnRvU3RyaW5nKCkgOiBcXFwiMFxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkobmV3X2NhdGUpKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXG4gICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIHMucHVzaCh7XFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2UgaWYgKGZvbGQgPT09ICcxJykge1xcbiAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBwZGZoKGl0ZW0sIOWIhuexu+agh+mimClcXG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZijmjpLpmaQpICE9ICd1bmRlZmluZWQnICYmIOaOkumZpCAhPSAnJykge1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGUgPSB0aXRsZS5yZXBsYWNlKG5ldyBSZWdFeHAo5o6S6ZmkLCBcXFwiZ1xcXCIpLCBcXFwiXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gXFxcIuKAnOKAnOKAneKAnVxcXCIgKyB0aXRsZS5mb250Y29sb3Io5YiG57G76aKc6ImyKSA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKHBkKGl0ZW0sIOWIhuexu+mTvuaOpSkgKyAnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0VmFyKE1ZX1JVTEUudGl0bGUsIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0ZV90ZW1wOiBjYXRlX3RlbXAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHBhZ2UsXFxuICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICBzLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5zZXRQcmVSZXN1bHQocylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p+WFrOWFseaooeadv1wiLFwicGF0aFwiOlwieWlqaVwiLFwicnVsZVwiOlwiZnVuY3Rpb24g5LiA57qnKCkge307XFxuT2JqZWN0LmFzc2lnbijkuIDnuqcucHJvdG90eXBlLCB7XFxuICAgIGNvbnN0cnVjdG9yOiDkuIDnuqcsXFxuICAgIHRlc3QoKSB7fSxcXG4gICAg6I635Y+W5rqQ56CBKHVybCwgaGVhZGVyKSB7XFxuICAgICAgICByZXR1cm4gZmV0Y2godHJ1ZV91cmwsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiBoZWFkZXIgfHwge1xcbiAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSdcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSAvLyDpu5jorqTnu5/kuIDkvb/nlKhQQyBVQVxcbiAgICB9LFxcbiAgICDojrflj5bmraPnoa7pk77mjqUocGFnZSwgcmVnZXgpIHtcXG4gICAgICAgIGxldCB0cnVlX3VybCA9IGdldE15VmFyKCdoZWFkZXIudXJsJywgTVlfVVJMKTtcXG4gICAgICAgIGxldCDpk77mjqXlpITnkIblt6XlhbcgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS91cmwtcHJvY2Vzc29yP3J1bGU95qih5p2/wrdRJylcXG4gICAgICAgIHRydWVfdXJsID0g6ZO+5o6l5aSE55CG5bel5YW3XFxuICAgICAgICAgICAgLumTvuaOpSh0cnVlX3VybClcXG4gICAgICAgICAgICAu6aG156CBKHBhZ2UpXFxuICAgICAgICAgICAgLuaPkuWFpeaWsOWkhOeQhuinhOWImShyZWdleCB8fCBbXSlcXG4gICAgICAgICAgICAu6I635Y+W5aSE55CG57uT5p6cKCk7XFxuICAgICAgICByZXR1cm4gdHJ1ZV91cmw7XFxuICAgIH0sXFxuICAgIOaJk+mAoOWIhuexuyhydWxlTGlzdCkge1xcbiAgICAgICAgLy8gJzAnIOS4uum7mOiupOS4jeaKmOWPoO+8jCcxJyDkuLrpu5jorqTmipjlj6BcXG4gICAgICAgIGNvbnN0IOW9k+WJjeaKmOWPoOeKtuaAgSA9IGdldE15VmFyKCdoZWFkZXIuZm9sZCcsICcxJylcXG5cXG4gICAgICAgIC8vIOW8leWFpeWKqOaAgeWIhuexu+S+nei1llxcbiAgICAgICAgbGV0IGh0bWxDYXRlZ29yaWVzID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXI/cnVsZT3mqKHmnb/Ct1EnKVxcbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCl7XFxuwqDCoMKgwqDCoMKgwqAgcmV0dXJuICcjJysoJzAwMDAwJysoTWF0aC5yYW5kb20oKSoweDEwMDAwMDA8PDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTtcXG7CoMKgwqDCoMKgIH1cXG4gICAgICAgIGh0bWxDYXRlZ29yaWVzLueVjOmdoihkKVxcbiAgICAgICAgICAgIC8vIC7liIbnsbvpk77mjqUodHJ1ZV91cmwpXFxuICAgICAgICAgICAgLua6kOeggShodG1sKVxcbiAgICAgICAgICAgIC7pobXnoIEocGFnZSlcXG4gICAgICAgICAgICAu5re75Yqg5YiG57G75a6a5L2NKHJ1bGVMaXN0KVxcbiAgICAgICAgICAgIC7lvIDlkK/lhoXnva7mipjlj6Dlip/og70oKSAvLyDlv4XpobtcXG4gICAgICAgICAgICAu5oqY5Y+gKOW9k+WJjeaKmOWPoOeKtuaAgSkgLy8g5b+F6aG7XFxuICAgICAgICAgICAgLumAieS4reeahOWIhuexu+minOiJsihnZXRSYW5nZUNvbG9ycygpKVxcbiAgICAgICAgIC8vICAgLumAieS4reeahOWIhuexu+minOiJsignIzA5OEFDMScpXFxuICAgICAgICAgICAgLuW8gOWni+aJk+mAoOWIhuexuygpO1xcbiAgICB9LFxcbiAgICDnlJ/miJDniYfljZUoZCwgaHRtbCkge1xcbiAgICAgICAgbGV0IGxpc3QgPSBwZGZhKGh0bWwsIOWIl+ihqCk7XFxuICAgICAgICBmb3IgKGxldCBqIGluIGxpc3QpIHtcXG4gICAgICAgICAgICBsZXQgaW1nID0gcGQobGlzdFtqXSwg5Zu+54mHKTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChsaXN0W2pdLCDmoIfpopgpLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBwZGZoKGxpc3Rbal0sIOaPj+i/sCksXFxuICAgICAgICAgICAgICAgIGltZzogaW1nICsgJ0BSZWZlcmVyPScgKyBpbWcsXFxuICAgICAgICAgICAgICAgIHVybDogcGQobGlzdFtqXSwg6ZO+5o6lKS5yZXBsYWNlKCd2b2RwbGF5Jywndm9kZGV0YWlsJykgKyBcXFwiI2ltbWVyc2l2ZVRoZW1lI1xcXCJcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn0pXFxuXFxuJC5leHBvcnRzID0gbmV3IOS4gOe6pygpO1xcbiQuZXhwb3J0c1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yqo5oCB5YiG57G7MlwiLFwicGF0aFwiOlwiY2F0ZWdvcmllcy1oZWFkZXJcIixcInJ1bGVcIjpcImNvbnN0IHN5bWJvbE1hcCA9IHtcXG4gICAgLy8gY2hlY2tQYXJhbXM6IFN5bWJvbCgnY2hlY2tQYXJhbXMnKSxcXG4gICAgbUxheW91dDogU3ltYm9sKCdtTGF5b3V0JyksXFxuICAgIHRydWVfdXJsOiBTeW1ib2woJ3RydWVfdXJsJyksXFxuICAgIG1QYWdlOiBTeW1ib2woJ21QYWdlJyksXFxuICAgIHNyYzogU3ltYm9sKCdzcmMnKSxcXG4gICAgcnVsZU9iakxpc3Q6IFN5bWJvbCgncnVsZU9iakxpc3QnKSxcXG4gICAgbUZvbGQ6IFN5bWJvbCgnbUZvbGQnKSxcXG4gICAgbUZvbGRJbm5lckVuYWJsZTogU3ltYm9sKCdtRm9sZElubmVyRW5hYmxlJyksXFxuICAgIG1Gb2xkSW5kZXg6IFN5bWJvbCgnbUZvbGRJbmRleCcpLFxcbiAgICBtRm9sZExheW91dDogU3ltYm9sKCdtRm9sZExheW91dCcpLFxcbiAgICBtQ29sb3I6IFN5bWJvbCgnbUNvbG9yJyksXFxuICAgIG1UYWc6IFN5bWJvbCgnbVRhZycpLFxcbn1cXG5cXG5mdW5jdGlvbiBDYXRlZ29yaWVzSGVhZGVyKGNvbG9yKSB7XFxuICAgIC8vICd1c2Ugc3RyaWN0JztcXG4gICAgLy8gLi4uXFxuICAgIC8vIHRoaXNbc3ltYm9sTWFwLmxpc3RSdWxlXSA9IFtdXFxuICAgIC8vIHRoaXNbc3ltYm9sTWFwLnN1Ykxpc3RSdWxlXSA9IFtdXFxuICAgIHRoaXNbc3ltYm9sTWFwLm1Db2xvcl0gPSBjb2xvciB8fCBcXFwiI0ZBNzI5OFxcXCI7XFxuICAgIHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XSA9IFtdXFxuICAgIHRoaXMuVkFSTUFQID0ge1xcbiAgICAgICAgQ0FURUdPUlk6IFxcXCJoZWFkZXIuY2F0ZWdvcnlcXFwiLFxcbiAgICAgICAgVVJMOiBcXFwiaGVhZGVyLnVybFxcXCIsXFxuICAgICAgICBGT0xEOiBcXFwiaGVhZGVyLmZvbGRcXFwiLFxcbiAgICB9XFxuICAgIHRoaXNbc3ltYm9sTWFwLm1Gb2xkTGF5b3V0XSA9IHtcXG4gICAgICAgIGluamVjdEluZGV4OiAxXFxuICAgIH1cXG4gICAgdGhpc1tzeW1ib2xNYXAubUZvbGRJbmRleF0gPSAxXFxufVxcblxcbk9iamVjdC5hc3NpZ24oQ2F0ZWdvcmllc0hlYWRlci5wcm90b3R5cGUsIHtcXG4gICAgLy8gT3ZlcnJpZGUg5p6E6YCg5pa55rOV77yM55u45b2T5LqOIGZ1bmN0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9ICguLi4pID0+IHsuLi5977yMbmV3IGZ1bmN0aW9uKCkg55qE5pe25YCZ5Lya6Ieq5Yqo5omn6KGMXFxuICAgIGNvbnN0cnVjdG9yOiBDYXRlZ29yaWVzSGVhZGVyLFxcbiAgICAvLyDlrprkuYnnp4HmnInmlrnms5VcXG4gICAgVkVSU0lPTjogMjAyMTEyMDExOTAwLFxcbiAgICBjaGVja1BhcmFtcygpIHtcXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAubUxheW91dF0pIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuivt+iwg+eUqCBsYXlvdXQoZCkg5Lyg5YWl5b2T5YmN55WM6Z2iXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghKHRoaXNbc3ltYm9sTWFwLnNyY10gfHwgdGhpc1tzeW1ib2xNYXAudHJ1ZV91cmxdKSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+36LCD55SoIHRydWVVcmwodXJsKSDkvKDlhaXlvZPliY3liIbnsbvnmoTpk77mjqXmiJbosIPnlKggaHRtbChtSHRtbCkg5Lyg5YWl5b2T5YmN5YiG57G76aG16Z2i55qE5rqQ56CBXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAubVBhZ2VdKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7fosIPnlKggcGFnZShtUGFnZSkg5Lyg5YWl5b2T5YmN6aG15pWwXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF0ubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+36LCD55So55u45YWz5pa55rOV5Lyg5YWl5a6a5L2N6KeE5YiZXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAubUZvbGRdKSB7XFxuICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRdID0gJzAnXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIGxheW91dChtTGF5b3V0KSB7XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5tTGF5b3V0XSA9IG1MYXlvdXRcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHRydWVVcmwodXJsKSB7XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC50cnVlX3VybF0gPSB1cmxcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHBhZ2UobVBhZ2UpIHtcXG4gICAgICAgIGlmICh0eXBlb2YgKG1QYWdlKSA9PT0gJ3N0cmluZycpIHtcXG4gICAgICAgICAgICBtUGFnZSA9IHBhcnNlSW50KG1QYWdlKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAubVBhZ2VdID0gbVBhZ2VcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIGh0bWwobVNyYykge1xcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAuc3JjXSA9IG1TcmNcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIGxpc3QocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAwKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJsaXN0KHJ1bGUpIGFkZChydWxlT2JqKSDlj6rog73kuozpgInkuIDvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdID0gW3t9XVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdLmxpc3RSdWxlID0gcnVsZVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdWyfkuIDnuqfliIbnsbsnXSA9IHJ1bGVcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHN1Ykxpc3QocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJzdWJMaXN0KHJ1bGUpIGFkZChydWxlT2JqKSDlj6rog73kuozpgInkuIDvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKCF0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0gfHwgKCF0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0ubGlzdFJ1bGUgJiYgIXRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXVsn5LiA57qn5YiG57G7J10pKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7flhYjosIPnlKggbGlzdChydWxlKSDmiJYg5LiA57qn5YiG57G7KHJ1bGUpIOWumuS9jeS4gOe6p+WIhuexu1xcXCIpXFxuICAgICAgICB9XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0uc3ViTGlzdFJ1bGUgPSBydWxlXFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF1bJ+WtkOWIhuexuyddID0gcnVsZVxcbiAgICAgICAgcmV0dXJuIHRoaXNcXG4gICAgfSxcXG4gICAgdGl0bGUocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJ0aXRsZShydWxlKSBhZGQocnVsZU9iaikg5Y+q6IO95LqM6YCJ5LiA77yBXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdIHx8ICghdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdLmxpc3RSdWxlICYmICF0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF1bJ+S4gOe6p+WIhuexuyddKSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35YWI6LCD55SoIGxpc3QocnVsZSkg5oiWIOS4gOe6p+WIhuexuyhydWxlKSDlrprkvY3kuIDnuqfliIbnsbtcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdLnRpdGxlUnVsZSA9IHJ1bGVcXG4gICAgICAgIHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXVsn5YiG57G75qCH6aKYJ10gPSB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF1bMF0udGl0bGVSdWxlXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICB1cmwocnVsZSkge1xcbiAgICAgICAgaWYgKHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XS5sZW5ndGggPiAxKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCJ1cmwocnVsZSkgYWRkKHJ1bGVPYmopIOWPquiDveS6jOmAieS4gO+8gVxcXCIpXFxuICAgICAgICB9XFxuICAgICAgICBpZiAoIXRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXSB8fCAoIXRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXS5saXN0UnVsZSAmJiAhdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdWyfkuIDnuqfliIbnsbsnXSkpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuivt+WFiOiwg+eUqCBsaXN0KHJ1bGUpIOaIliDkuIDnuqfliIbnsbsocnVsZSkg5a6a5L2N5LiA57qn5YiG57G7XFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXS51cmxSdWxlID0gcnVsZVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdWzBdWyfliIbnsbvpk77mjqUnXSA9IHRoaXNbc3ltYm9sTWFwLnJ1bGVPYmpMaXN0XVswXS51cmxSdWxlXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICog5piv5ZCm5byA5ZCv5oqY5Y+g5Yqf6IO9XFxuICAgICAqXFxuICAgICAqIEBwYXJhbSBlbmFibGVkIHRydWUg6KGo56S65byA5ZCv77yMZmFsc2Ug6KGo56S656aB55SoXFxuICAgICAqIEByZXR1cm5zIHtDYXRlZ29yaWVzSGVhZGVyfVxcbiAgICAgKi9cXG4gICAgZm9sZElubmVyKGVuYWJsZWQpIHtcXG4gICAgICAgIGlmICghKHR5cGVvZiAoZW5hYmxlZCkgPT09ICdib29sZWFuJykpIHtcXG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuivt+S8oOWFpSB0cnVlIOaIliBmYWxzZSDooajnpLrlvIDlkK/miJblhbPpl63mipjlj6Dlip/og73vvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRJbm5lckVuYWJsZV0gPSBlbmFibGVkXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICAvKipcXG4gICAgICog5LuO56ysIGluZGV4IOihjOW8gOWni+aKmOWPoFxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gaW5kZXgg5byA5aeL5oqY5Y+g55qE6KGM5pWwXFxuICAgICAqIEByZXR1cm5zIHtDYXRlZ29yaWVzSGVhZGVyfVxcbiAgICAgKi9cXG4gICAgZm9sZEluZGV4KGluZGV4KSB7XFxuICAgICAgICBpZiAoISh0eXBlb2YgKGluZGV4KSA9PT0gJ251bWJlcicpKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLlvIDlp4vmipjlj6DooYzor7fkvKDlhaXmlbDlrZfvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGluZGV4IDwgMSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi5byA5aeL5oqY5Y+g6KGM6K+35Lyg5YWl5aSn5LqOIDAg55qE5pW05pWw77yBXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIHRoaXNbc3ltYm9sTWFwLm1Gb2xkSW5kZXhdID0gaW5kZXggfHwgMTtcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiDmipjlj6DmjInpkq7nmoTnlYzpnaJcXG4gICAgICpcXG4gICAgICogQHBhcmFtIGxheW91dCDkuI4gZC5wdXNoIOe7k+aehOS4gOiHtO+8jFxcbiAgICAgKiAgICAgICAg5L6L77yaeyB0aXRsZTpcXFwi5qCH6aKYMVxcXCIsIHVybDpcXFwieHh4XFxcIiwgY29sX3R5cGU6XFxcInNjcm9sbF9idXR0b25cXFwiIH07XFxuICAgICAqICAgICAgICDlj4LmlbDph4fnlKjlj6/pgInopobnm5bmqKHlvI/vvIzkuI3lhpnnmoTlj4LmlbDliJnkvb/nlKjpu5jorqQ7XFxuICAgICAqICAgICAgICDmr5TlpoLkvKDlhaUgeyBjb2xfdHlwZTpcXFwidGV4dF8xXFxcIiB977yM6YKj5pyA57uI57uT5p6c5bCx5pivIHsgdGl0bGU6XFxcIuagh+mimDFcXFwiLCB1cmw6XFxcInh4eFxcXCIsIGNvbF90eXBlOlxcXCJ0ZXh0XzFcXFwiIH1cXG4gICAgICogQHJldHVybnMge0NhdGVnb3JpZXNIZWFkZXJ9XFxuICAgICAqL1xcbiAgICBmb2xkTGF5b3V0KGxheW91dCkge1xcbiAgICAgICAgaWYgKHR5cGVvZiBsYXlvdXQgPT09ICdvYmplY3QnKSB7XFxuICAgICAgICAgICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhsYXlvdXQpXFxuICAgICAgICAgICAgbGV0IGluamVjdEluZGV4ID0gbGF5b3V0LmluamVjdEluZGV4IHx8IGxheW91dFsn5oqY5Y+g5oyJ6ZKu5o+S5YWl6KGMJ11cXG4gICAgICAgICAgICBpZiAobGF5b3V0LnRpdGxlIHx8IGxheW91dC51cmwgfHwgbGF5b3V0LmNvbF90eXBlIHx8IGluamVjdEluZGV4KSB7XFxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXVxcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRMYXlvdXRdW2tleV0gPSBsYXlvdXRba2V5XTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35Lyg5YWl5q2j56Gu55qE5oqY5Y+g55WM6Z2i5YWD57Sg77yBXFxcIilcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy8gaW5qZWN0SW5kZXgg5oqY5Y+g5oyJ6ZKu5o+S5YWl56ysIGluamVjdEluZGV4IOihjFxcbiAgICAgICAgICAgIGlmIChpbmplY3RJbmRleCkge1xcbiAgICAgICAgICAgICAgICBpZiAoISh0eXBlb2YgKGluamVjdEluZGV4KSA9PT0gJ251bWJlcicpKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuaKmOWPoOaMiemSruaPkuWFpeihjOivt+S8oOWFpeaVsOWtl++8gVxcXCIpXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGluamVjdEluZGV4IDwgMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLmipjlj6DmjInpkq7mj5LlhaXooYzor7fkvKDlhaXlpKfkuo4gMCDnmoTmlbTmlbDvvIFcXFwiKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGlmIChpbmplY3RJbmRleCA+IHRoaXNbc3ltYm9sTWFwLm1Gb2xkSW5kZXhdKSB7XFxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXFxcIuaKmOWPoOaMiemSruaPkuWFpeihjOS4jeW+l+Wkp+S6juaYvuekuuaKmOWPoOihjOaVsO+8geivt+iwg+eUqCAuZm9sZEluZGV4KGluZGV4KSDmiJYgLuesrOWHoOihjOW8gOWni+aKmOWPoChpbmRleCkg5Lyg5YWl5q2j56Gu55qE5pi+56S65oqY5Y+g6KGM5pWwXFxcIilcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5tRm9sZExheW91dF0uaW5qZWN0SW5kZXggPSBpbmplY3RJbmRleCB8fCAxO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7fkvKDlhaXmraPnoa7nmoTmipjlj6DnlYzpnaLlhYPntKDvvIFcXFwiKVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoaXM7XFxuICAgIH0sXFxuICAgIC8vIOW9k+WJjeaYr+WQpuaKmOWPoFxcbiAgICBmb2xkKGlzRm9sZCkge1xcbiAgICAgICAgaWYgKHR5cGVvZiAoaXNGb2xkKSA9PT0gJ3N0cmluZycpIHtcXG4gICAgICAgICAgICBpc0ZvbGQgPSBpc0ZvbGQgPT09ICcxJ1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGlzRm9sZCkge1xcbiAgICAgICAgICAgIHRoaXNbc3ltYm9sTWFwLm1Gb2xkXSA9ICcxJztcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUZvbGRdID0gJzAnO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoaXNcXG4gICAgfSxcXG4gICAgY29sb3IobUNvbG9yKSB7XFxuICAgICAgICB0aGlzW3N5bWJvbE1hcC5tQ29sb3JdID0gbUNvbG9yXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICB0YWcobVRhZykge1xcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAubVRhZ10gPSBtVGFnXFxuICAgICAgICByZXR1cm4gdGhpc1xcbiAgICB9LFxcbiAgICBhZGQocnVsZU9iaikge1xcbiAgICAgICAgLy8gbG9nKCQuc3RyaW5naWZ5KHJ1bGVPYmopKVxcbiAgICAgICAgaWYgKHJ1bGVPYmouY29uc3RydWN0b3IgPT09IEFycmF5KSB7XFxuICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdID0gdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdLmNvbmNhdChydWxlT2JqKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5ydWxlT2JqTGlzdF0ucHVzaChydWxlT2JqKVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIHRoaXM7XFxuICAgIH0sXFxuICAgIGV2YWxKU1J1bGUoaXRlbSwganNSdWxlKSB7XFxuICAgICAgICBsZXQgcnVsZSA9IGpzUnVsZS5yZXBsYWNlKFxcXCJAanM6XFxcIiwgXFxcIlxcXCIpXFxuICAgICAgICBydWxlID0gcnVsZS50cmltKClcXG4gICAgICAgIC8vIGxvZygkLnN0cmluZ2lmeShydWxlKSlcXG4gICAgICAgIGxldCBpbnB1dCA9IGl0ZW1cXG4gICAgICAgIGlmIChydWxlLnN0YXJ0c1dpdGgoXFxcIihcXFwiKSkge1xcbiAgICAgICAgICAgIGV2YWwoJ3Jlc3VsdCA9ICcgKyBydWxlKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAvKipcXG4gICAgICAgICAgICAgKiDov5jljp/miJAgJC50b1N0cmluZyguLi4pIOeahOacgOe7iOe7k+aenO+8jOi+vuWIsOacgOe7iOWkhOeQhuaWueW8j+i3n+S4iumdoueahCBpZiDkuIDoh7TnmoTnm67nmoRcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBldmFsKCdyZXN1bHQgPSAnICsgJygoKSA9PiB7JyArIHJ1bGUgKyAnfSkoKScpXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gKHJlc3VsdCB8fCAnJylcXG4gICAgfSxcXG4gICAgZ2V0VGl0bGUoc3JjLCBjYXRlZ29yeSkge1xcbiAgICAgICAgbGV0IHRpdGxlID0gJydcXG4gICAgICAgIGxldCB0aXRsZVJ1bGUgPSBjYXRlZ29yeS50aXRsZVJ1bGUgfHwgJ2EmJlRleHQnXFxuICAgICAgICBpZiAodGl0bGVSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgIHRpdGxlID0gdGhpcy5ldmFsSlNSdWxlKHNyYywgdGl0bGVSdWxlKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB0aXRsZSA9IHBhcnNlRG9tRm9ySHRtbChzcmMsIHRpdGxlUnVsZSlcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiB0aXRsZSB8fCBcXFwiXFxcIjtcXG4gICAgfSxcXG4gICAgZ2V0VXJsKHNyYywgY2F0ZWdvcnkpIHtcXG4gICAgICAgIGxldCB1cmwgPSAnJ1xcbiAgICAgICAgbGV0IHVybFJ1bGUgPSBjYXRlZ29yeS51cmxSdWxlIHx8ICdhJiZocmVmJ1xcbiAgICAgICAgaWYgKHR5cGVvZiB1cmxSdWxlID09PSAnb2JqZWN0Jykge1xcbiAgICAgICAgICAgIGxldCBtVXJsUnVsZSA9IHVybFJ1bGUucnVsZSB8fCB1cmxSdWxlWyfop6PmnpDop4TliJknXSB8fCAnYSYmaHJlZic7XFxuICAgICAgICAgICAgaWYgKG1VcmxSdWxlLnN0YXJ0c1dpdGgoXFxcIkBqczpcXFwiKSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSB0aGlzLmV2YWxKU1J1bGUoc3JjLCBtVXJsUnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlID0gcGFyc2VEb207XFxuICAgICAgICAgICAgICAgIGlmICh1cmxSdWxlLnBhcnNlT3B0aW9uKSB7XFxuICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHVybFJ1bGUucGFyc2VPcHRpb24pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJwYXJzZURvbVxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwicGRcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSA9IHBhcnNlRG9tO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJwYXJzZURvbUZvckh0bWxcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcInBkZmhcXFwiOlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSA9IHBhcnNlRG9tRm9ySHRtbDtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDpcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2UgPSBwYXJzZURvbTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxSdWxlW1xcXCLop6PmnpDmlrnms5VcXFwiXSkge1xcbiAgICAgICAgICAgICAgICAgICAgc3dpdGNoICh1cmxSdWxlW1xcXCLop6PmnpDmlrnms5VcXFwiXSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcInBhcnNlRG9tXFxcIjpcXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFxcXCJwZFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlID0gcGFyc2VEb207XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgXFxcInBhcnNlRG9tRm9ySHRtbFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBcXFwicGRmaFxcXCI6XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlID0gcGFyc2VEb21Gb3JIdG1sO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZSA9IHBhcnNlRG9tO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHVybCA9IHBhcnNlKHNyYywgbVVybFJ1bGUpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodXJsUnVsZS5kZWFsVXJsKSB7XFxuICAgICAgICAgICAgICAgIHVybCA9IHVybFJ1bGUuZGVhbFVybCh1cmwpXFxuICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxSdWxlWyfkuozmrKHlpITnkIYnXSkge1xcbiAgICAgICAgICAgICAgICB1cmwgPSB1cmxSdWxlWyfkuozmrKHlpITnkIYnXSh1cmwpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAodXJsUnVsZS5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdGhpcy5ldmFsSlNSdWxlKHNyYywgdXJsUnVsZSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gcGFyc2VEb20oc3JjLCB1cmxSdWxlKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdXJsIHx8IFxcXCJcXFwiO1xcbiAgICB9LFxcbiAgICBidWlsZCgpIHtcXG4gICAgICAgIC8vIOajgOa1i+aYr+WQpuS8oOWFpemcgOimgeeahOWPguaVsFxcbiAgICAgICAgdGhpcy5jaGVja1BhcmFtcygpXFxuICAgICAgICAvLyDmr4/kuIDkuKrliIbnsbvnmoTllK/kuIDmoIfor4ZcXG4gICAgICAgIGxldCBtVGFnID0gdGhpc1tzeW1ib2xNYXAubVRhZ10gfHwgXFxcIlxcXCJcXG4gICAgICAgIC8v57+76aG1IOmcgOimgeagueaNruWunumZheabv+aNolxcbiAgICAgICAgY29uc3QgaHRtbCA9IHRoaXNbc3ltYm9sTWFwLnNyY10gfHwgcmVxdWVzdCh0aGlzW3N5bWJvbE1hcC50cnVlX3VybF0pXFxuICAgICAgICBjb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgLy/ojrflj5bliJfooahcXG4gICAgICAgIGNvbnN0IGNhdGVnb3JpZXMgPSBbXVxcbiAgICAgICAgdGhpc1tzeW1ib2xNYXAucnVsZU9iakxpc3RdLm1hcChydWxlT2JqID0+IHtcXG4gICAgICAgICAgICBsZXQgbGlzdCA9IFtdXFxuICAgICAgICAgICAgbGV0IGxpc3RSdWxlID0gcnVsZU9iai5saXN0UnVsZSB8fCBydWxlT2JqW1xcXCLkuIDnuqfliIbnsbtcXFwiXVxcbiAgICAgICAgICAgIGlmIChsaXN0UnVsZS5zdGFydHNXaXRoKFxcXCJAanM6XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgLy8gbG9nKCQuc3RyaW5naWZ5KGxpc3RSdWxlKSlcXG4gICAgICAgICAgICAgICAgbGlzdCA9IHRoaXMuZXZhbEpTUnVsZShodG1sLCBsaXN0UnVsZSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCBsaXN0UnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgLy8gbG9nKGxpc3QpXFxuICAgICAgICAgICAgbGlzdC5tYXAoY2F0ZWdvcnkgPT4ge1xcbiAgICAgICAgICAgICAgICBjYXRlZ29yaWVzLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgbGlzdDogY2F0ZWdvcnksXFxuICAgICAgICAgICAgICAgICAgICBzdWJMaXN0UnVsZTogcnVsZU9iai5zdWJMaXN0UnVsZSB8fCBydWxlT2JqW1xcXCLlrZDliIbnsbtcXFwiXSxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlUnVsZTogcnVsZU9iai50aXRsZVJ1bGUgfHwgcnVsZU9ialtcXFwi5YiG57G75qCH6aKYXFxcIl0sXFxuICAgICAgICAgICAgICAgICAgICB1cmxSdWxlOiBydWxlT2JqLnVybFJ1bGUgfHwgcnVsZU9ialtcXFwi5YiG57G76ZO+5o6lXFxcIl0sXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcblxcbiAgICAgICAgLy8gbG9nKCQuc3RyaW5naWZ5KGNhdGVnb3JpZXMpKVxcblxcbiAgICAgICAgbGV0IGluaXRfY2F0ZSA9IFtdXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgICAgICAgICBpbml0X2NhdGUucHVzaChcXFwiMFxcXCIpXFxuICAgICAgICB9XFxuXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldE15VmFyKG1UYWcgKyB0aGlzLlZBUk1BUC5DQVRFR09SWSwgSlNPTi5zdHJpbmdpZnkoaW5pdF9jYXRlKSlcXG4gICAgICAgIGNvbnN0IGNhdGVfdGVtcCA9IEpTT04ucGFyc2UoY2F0ZV90ZW1wX2pzb24pXFxuXFxuICAgICAgICBpZiAodGhpc1tzeW1ib2xNYXAubVBhZ2VdID09PSAxKSB7XFxuXFxuICAgICAgICAgICAgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSwgaW5kZXgpID0+IHtcXG5cXG4gICAgICAgICAgICAgICAgLy8g5oqY5Y+gIFVJXFxuICAgICAgICAgICAgICAgIGlmICh0aGlzW3N5bWJvbE1hcC5tRm9sZElubmVyRW5hYmxlXSAmJiB0aGlzW3N5bWJvbE1hcC5tRm9sZExheW91dF0uaW5qZWN0SW5kZXggPT09IChpbmRleCsxKSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGZvbGRMYXlvdXQgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHRoaXNbc3ltYm9sTWFwLm1Gb2xkTGF5b3V0XS50aXRsZSB8fCAodGhpc1tzeW1ib2xNYXAubUZvbGRdID09PSAnMScgPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjRkYwMDAwXFxcIj7iiKg8L3NwYW4+PC9iPicgOiAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcImNvbG9yOiAjMWFhZDE5XFxcIj7iiKc8L3NwYW4+PC9iPicpLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogdGhpc1tzeW1ib2xNYXAubUZvbGRMYXlvdXRdLnVybCB8fCAkKFxcXCJoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNcXFwiKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy5tVGFnICsgcGFyYW1zLlZBUk1BUC5GT0xELCBnZXRNeVZhcihwYXJhbXMubVRhZyArIHBhcmFtcy5WQVJNQVAuRk9MRCwgcGFyYW1zLmlzRm9sZCkgPT09ICcxJyA/ICcwJyA6ICcxJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVGFnOiBtVGFnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGQ6IHRoaXNbc3ltYm9sTWFwLm1Gb2xkXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSTUFQOiB0aGlzLlZBUk1BUFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiB0aGlzW3N5bWJvbE1hcC5tRm9sZExheW91dF0uY29sX3R5cGUgfHwgXFxcInNjcm9sbF9idXR0b25cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgdGhpc1tzeW1ib2xNYXAubUxheW91dF0ucHVzaChmb2xkTGF5b3V0KVxcbiAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgIC8v5YW35L2T5YiX6KGo5LiL55qE5YiG57G7XFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IFtdO1xcbiAgICAgICAgICAgICAgICBpZiAoY2F0ZWdvcnkuc3ViTGlzdFJ1bGUuc3RhcnRzV2l0aChcXFwiQGpzOlxcXCIpKSB7XFxuICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcyA9IHRoaXMuZXZhbEpTUnVsZShjYXRlZ29yeS5saXN0LCBjYXRlZ29yeS5zdWJMaXN0UnVsZSlcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzID0gcGFyc2VEb21Gb3JBcnJheShjYXRlZ29yeS5saXN0LCBjYXRlZ29yeS5zdWJMaXN0UnVsZSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgKHRoaXNbc3ltYm9sTWFwLm1Gb2xkSW5kZXhdIHx8IDEpKSB7XFxuICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSB0aGlzLmdldFRpdGxlKGl0ZW0sIGNhdGVnb3J5KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB1cmwgPSB0aGlzLmdldFVybChpdGVtLCBjYXRlZ29yeSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5tTGF5b3V0XS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGtleS50b1N0cmluZygpID09PSBjYXRlX3RlbXBbaW5kZXhdID8gJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPScgKyB0aGlzW3N5bWJvbE1hcC5tQ29sb3JdICsgJz4nICsgdGl0bGUgKyAnIDwvZm9udD48L2I+JyA6IHRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3X2NhdGUgPSBbXVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcy5pbmRleCA9PT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXAuZm9yRWFjaCgoY2F0ZSwgaW5kZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3X2NhdGUucHVzaChpbmRleCA9PT0gMCA/IHBhcmFtcy5rZXkudG9TdHJpbmcoKSA6IFxcXCIwXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdID0gcGFyYW1zLmtleS50b1N0cmluZygpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMudGFnICsgcGFyYW1zLlZBUk1BUC5DQVRFR09SWSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmluZGV4ID09PSAwID8gbmV3X2NhdGUgOiBwYXJhbXMuY2F0ZV90ZW1wKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy50YWcgKyBwYXJhbXMuVkFSTUFQLlVSTCwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4OiBpbmRleCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUk1BUDogdGhpcy5WQVJNQVAsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWc6IG1UYWcsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXk6IGtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2U6IHRoaXNbc3ltYm9sTWFwLm1QYWdlXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICB0aGlzW3N5bWJvbE1hcC5tTGF5b3V0XS5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpc1tzeW1ib2xNYXAubUZvbGRdID09PSAnMCcpIHtcXG4gICAgICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aXRsZSA9IHRoaXMuZ2V0VGl0bGUoaXRlbSwgY2F0ZWdvcnkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IHRoaXMuZ2V0VXJsKGl0ZW0sIGNhdGVnb3J5KVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbc3ltYm9sTWFwLm1MYXlvdXRdLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9JyArIHRoaXNbc3ltYm9sTWFwLm1Db2xvcl0gKyAnPicgKyB0aXRsZSArICcgPC9mb250PjwvYj4nIDogdGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnRhZyArIHBhcmFtcy5WQVJNQVAuQ0FURUdPUlksIEpTT04uc3RyaW5naWZ5KHBhcmFtcy5jYXRlX3RlbXApKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIocGFyYW1zLnRhZyArIHBhcmFtcy5WQVJNQVAuVVJMLCBpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXg6IGluZGV4LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVkFSTUFQOiB0aGlzLlZBUk1BUCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhZzogbVRhZyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogdGhpc1tzeW1ib2xNYXAubVBhZ2VdLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgIHRoaXNbc3ltYm9sTWFwLm1MYXlvdXRdLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9LFxcblxcbiAgICDnlYzpnaIobGF5b3V0KSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5sYXlvdXQobGF5b3V0KVxcbiAgICB9LFxcbiAgICDliIbnsbvpk77mjqUodHJ1ZVVybCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMudHJ1ZVVybCh0cnVlVXJsKTtcXG4gICAgfSxcXG4gICAg6aG156CBKHBhZ2UpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLnBhZ2UocGFnZSk7XFxuICAgIH0sXFxuICAgIOa6kOeggShodG1sKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5odG1sKGh0bWwpO1xcbiAgICB9LFxcbiAgICDlrprkvY3kuIDnuqfliIbnsbsobGlzdCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMubGlzdChsaXN0KTtcXG4gICAgfSxcXG4gICAg5a6a5L2N5a2Q5YiG57G7KHN1Ykxpc3QpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLnN1Ykxpc3Qoc3ViTGlzdCk7XFxuICAgIH0sXFxuICAgIOWumuS9jeWIhuexu+agh+mimCh0aXRsZSkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMudGl0bGUodGl0bGUpO1xcbiAgICB9LFxcbiAgICDlrprkvY3liIbnsbvpk77mjqUodXJsKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy51cmwodXJsKTtcXG4gICAgfSxcXG4gICAg5byA5ZCv5YaF572u5oqY5Y+g5Yqf6IO9KCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9sZElubmVyKHRydWUpO1xcbiAgICB9LFxcbiAgICDlhbPpl63lhoXnva7mipjlj6Dlip/og70oKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5mb2xkSW5uZXIoZmFsc2UpO1xcbiAgICB9LFxcbiAgICDnrKzlh6DooYzlvIDlp4vmipjlj6AoaW5kZXgpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmZvbGRJbmRleChpbmRleCk7XFxuICAgIH0sXFxuICAgIOaKmOWPoOaMiemSruagt+W8jyhsYXlvdXQpIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmZvbGRMYXlvdXQobGF5b3V0KVxcbiAgICB9LFxcbiAgICDmipjlj6AoZm9sZCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9sZChmb2xkKTtcXG4gICAgfSxcXG4gICAg6YCJ5Lit55qE5YiG57G76aKc6ImyKGNvbG9yKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5jb2xvcihjb2xvcik7XFxuICAgIH0sXFxuICAgIOWUr+S4gOagh+ivhihtVGFnKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy50YWcobVRhZylcXG4gICAgfSxcXG4gICAg5re75Yqg5YiG57G75a6a5L2NKHJ1bGVPYmopIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmFkZChydWxlT2JqKTtcXG4gICAgfSxcXG4gICAg5byA5aeL5omT6YCg5YiG57G7KCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuYnVpbGQoKTtcXG4gICAgfSxcXG5cXG59KVxcbiQuZXhwb3J0cyA9IG5ldyBDYXRlZ29yaWVzSGVhZGVyKCk7XFxuJC5leHBvcnRzXFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpk77mjqXlpITnkIblt6XlhbdcIixcInBhdGhcIjpcInVybC1wcm9jZXNzb3JcIixcInJ1bGVcIjpcIi8qKlxcbiAqIOacrOWcsOe9kemhteaPkuS7tumTvuaOpSBoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL1VybFByb2Nlc3Nvci5qc1xcbiAqIOWtkOmhtemdoumTvuaOpSBoaWtlcjovL3BhZ2UvdXJsLXByb2Nlc3NvclxcbiAqIOmBk+mVv+S7k+W6k+mTvuaOpSBodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD0yODQ5XFxuICog56CB5LqRIEdpdGVlIOmTvuaOpSBodHRwczovL2dpdGVlLmNvbS9yZWJvcm4wL0hpa2VyUnVsZXMvcmF3L21hc3Rlci9wbHVnaW5zL1VybFByb2Nlc3Nvci5qc1xcbiAqL1xcbmZ1bmN0aW9uIFVybFByb2Nlc3NvcigpIHtcXG4gICAgdGhpcy5wYXJhbXMgPSB7fVxcbiAgICB0aGlzLnJlZ2V4TWFwID0gW1xcbiAgICAgICAge1xcbiAgICAgICAgICAgIHJlZzogJyh2b2R0eXBlfHZpZGVvdClcXFxcXFxcXC9cXFxcXFxcXHcrJyxcXG4gICAgICAgICAgICBleGVjOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy51cmxcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8tXFxcXGQrLmh0bWwvLCAnLScgKyB0aGlzLnBhcmFtcy5wYWdlICsgJy5odG1sJylcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oKHZvZHR5cGV8dmlkZW90KVxcXFwvXFxcXHcrKS5odG1sLywgJyQxLScgKyB0aGlzLnBhcmFtcy5wYWdlICsgJy5odG1sJylcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIHJlZzogJ1xcXFxcXFxcLz9bXFxcXFxcXFx3XFxcXFxcXFxkXSstLio/LS4qPy0uKj8tLio/LS4qPy0uKj8tLio/LVxcXFxcXFxcZCotLS1cXFxcXFxcXGQqLmh0bWwnLFxcbiAgICAgICAgICAgIGV4ZWM6ICgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnVybFxcbiAgICAgICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcXFxkKigtLS0uaHRtbCkvLCB0aGlzLnBhcmFtcy5wYWdlICsgJyQxJylcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oLS0tXFxcXGQrLmh0bWwpLywgdGhpcy5wYXJhbXMucGFnZSArICckMScpOyAvLyDmi7zmjqXpobXnoIFcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9LFxcbiAgICAgICAge1xcbiAgICAgICAgICAgIHJlZzogJygoXFxcXFxcXFwvdm9kXFxcXFxcXFwvc2hvdyk/KFxcXFxcXFxcL2FyZWFcXFxcXFxcXC9bXFxcXFxcXFx3XFxcXFxcXFxkJV0rKT8oXFxcXFxcXFwvYnlcXFxcXFxcXC9bXFxcXFxcXFx3XFxcXFxcXFxkJV0rKT8oXFxcXFxcXFwvaWRcXFxcXFxcXC9cXFxcXFxcXGQrKT8oXFxcXFxcXFwvbGV0dGVyXFxcXFxcXFwvW1xcXFxcXFxcd1xcXFxcXFxcZCVdKyk/KShcXFxcXFxcXC9wYWdlXFxcXFxcXFwvXFxcXFxcXFxkKyk/KFxcXFxcXFxcL3llYXJcXFxcXFxcXC9cXFxcXFxcXGQrKT9cXFxcXFxcXC5odG1sJyxcXG4gICAgICAgICAgICBleGVjOiAoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGxldCByZWdFeHAgPSAvKChcXFxcL3ZvZFxcXFwvc2hvdyk/KFxcXFwvYXJlYVxcXFwvW1xcXFx3XFxcXGQlXSspPyhcXFxcL2J5XFxcXC9bXFxcXHdcXFxcZCVdKyk/KFxcXFwvaWRcXFxcL1xcXFxkKyk/KFxcXFwvbGV0dGVyXFxcXC9bXFxcXHdcXFxcZCVdKyk/KShcXFxcL3BhZ2VcXFxcL1xcXFxkKyk/KFxcXFwveWVhclxcXFwvXFxcXGQrKT9cXFxcLmh0bWwvXFxuICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnBhcmFtcy51cmxcXG4gICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlZ0V4cCwgJyQxJyArIChcXFwiL3BhZ2UvXFxcIiArIHRoaXMucGFyYW1zLnBhZ2UpICsgJyQ4JyArIFxcXCIuaHRtbFxcXCIpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICBdXFxufVxcblxcbk9iamVjdC5hc3NpZ24oVXJsUHJvY2Vzc29yLnByb3RvdHlwZSwge1xcbiAgICBjb25zdHJ1Y3RvcjogVXJsUHJvY2Vzc29yLFxcbiAgICBjaGVja1BhcmFtcygpIHtcXG4gICAgICAgIGlmICghdGhpcy5wYXJhbXMudXJsKSB7XFxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxcXCLor7flhYjosIPnlKggLmJhc2VVcmwodXJsKSDkvKDlhaXpk77mjqXov5vooYzliJ3lp4vljJYhXFxcIilcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICghdGhpcy5wYXJhbXMucGFnZSkge1xcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcXFwi6K+35YWI6LCD55SoIC5wYWdlKHBhZ2UpIOS8oOWFpemhteeggei/m+ihjOWIneWni+WMliFcXFwiKVxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICBiYXNlVXJsKHVybCl7XFxuICAgICAgICB0aGlzLnBhcmFtcy51cmwgPSB1cmxcXG4gICAgICAgIHJldHVybiB0aGlzXFxuICAgIH0sXFxuICAgIHBhZ2UocGFnZSl7XFxuICAgICAgICB0aGlzLnBhcmFtcy5wYWdlID0gcGFnZVxcbiAgICAgICAgcmV0dXJuIHRoaXNcXG4gICAgfSxcXG4gICAgYWRkRXh0cmEocmVnRXhwKSB7XFxuICAgICAgICBpZiAocmVnRXhwLmNvbnN0cnVjdG9yID09PSBBcnJheSkge1xcbiAgICAgICAgICAgIHRoaXMucmVnZXhNYXAgPSB0aGlzLnJlZ2V4TWFwLmNvbmNhdChyZWdFeHApXFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHRoaXMucmVnZXhNYXAucHVzaChyZWdFeHApXFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gdGhpcztcXG4gICAgfSxcXG4gICAgZGVidWcoKSB7XFxuICAgICAgICB0aGlzLnBhcmFtcy5kZWJ1ZyA9IHRydWVcXG4gICAgICAgIHJldHVybiB0aGlzO1xcbiAgICB9LFxcbiAgICBleGVjKCkge1xcbiAgICAgICAgdGhpcy5jaGVja1BhcmFtcygpXFxuICAgICAgICBsZXQgdHJ1ZV91cmwgPSAnJ1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnJlZ2V4TWFwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgbGV0IHJlZ09iaiA9IHRoaXMucmVnZXhNYXBbaV07XFxuICAgICAgICAgICAgbGV0IHVybEV4cCA9IHJlZ09iai5yZWc7XFxuICAgICAgICAgICAgaWYgKHR5cGVvZiB1cmxFeHAgPT09ICdzdHJpbmcnKSB7XFxuICAgICAgICAgICAgICAgIHVybEV4cCA9IG5ldyBSZWdFeHAodXJsRXhwKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAodXJsRXhwLnRlc3QodGhpcy5wYXJhbXMudXJsKSkge1xcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJhbXMuZGVidWcpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxvZyh1cmxFeHAudG9TdHJpbmcoKSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB0cnVlX3VybCA9IHJlZ09iai5leGVjKCk7XFxuICAgICAgICAgICAgICAgIGJyZWFrO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh0cnVlX3VybCkge1xcbiAgICAgICAgICAgIHJldHVybiB0cnVlX3VybDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRoaXMucGFyYW1zLnVybFxcbiAgICAgICAgfVxcbiAgICB9LFxcbiAgICDojrflj5blpITnkIbnu5PmnpwoKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5leGVjKClcXG4gICAgfSxcXG4gICAg6ZO+5o6lKHVybCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuYmFzZVVybCh1cmwpXFxuICAgIH0sXFxuICAgIOmhteeggShwYWdlKSB7XFxuICAgICAgICByZXR1cm4gdGhpcy5wYWdlKHBhZ2UpXFxuICAgIH0sXFxuICAgIOaPkuWFpeaWsOWkhOeQhuinhOWImShyZWdFeHApIHtcXG4gICAgICAgIHJldHVybiB0aGlzLmFkZEV4dHJhKHJlZ0V4cClcXG4gICAgfSxcXG4gICAg6LCD6K+V5qih5byPKCkge1xcbiAgICAgICAgcmV0dXJuIHRoaXMuZGVidWcoKTtcXG4gICAgfVxcbn0pXFxuJC5leHBvcnRzPW5ldyBVcmxQcm9jZXNzb3IoKVxcbiQuZXhwb3J0c1xcblwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Ye95pWwXCIsXCJwYXRoXCI6XCJqeGhzXCIsXCJydWxlXCI6XCJ2YXIgZmZ0dCA9ICdNdzhnaXlIMUNxblR6M0I3VkhqN01UenZjdVhJRXJncjFEL1B1Z0ZtaE9XdkY2V1RuS1Y1NE0xdVVja01seG5MSVVNYlo3RmlxZ0x1UldjYndHWGhiKzY3ZlNNQmR6NVZzZjZ6UDFkdjlmNGhReHRuc1dLcUF1NUZaeHZBWmVGdjhraStBWlB2TnNkLzBKVlJCalVIQzVRbXRDa1ZobE0va3BuL0JGV3RScjBIL1pIUVFxNGw0SkROelhuTVhBMG15eXZMU05aV2Mvc0luL3ZXU0FIVTlrQWJqVTRxU1pzU0F1OWJ5MGJNd2RDUERzVTRwcHNrVTM5ckJTUEZOREJ6WXl2WHNKaHJ6dGFhYm5leFd6NjVjcGN4L0gzNGxFQ2p1cFAwb0xDa21PRE80V1pYaTFDMkduQUEraDFJN1lEZHl5dkxTTlpXYy9zSW4vdldTQUhVOWtCVXY3Z2QxUWo1b1JhQ1VVN3IySTBtbUZhb0QzUTlScERobVNlbnhVRUlQNyt6VVUxUVcwLzB5dlNLT0xEL3dyWkVWVWNhN2xEMG1mbm1IdUNPUExnMTdRQ0M2eUo5cUljeG8zUmgvWUZNUEtpQjF4b2VETmNDRDk3Q3M4UUJ3aGRidXg2eHovSHRPU2xNR3R1OS9BV25yNXRJM2FYNSt4OFZjQ1Z3Si95K1NYdTkrbDk3VzdLY0FUeUUvQTRmeTk2M1hnSlkyelM0OERMUy9raUJVM1E4NzNMbHlCSzRLOVEvejdvQlpvVGxlcFl6ZDZibmh6S2dEQmo1L2ZYMXNES0hBQkl5TXM0UHFEQnkxRXBtenUzY1hSdlBHRmoxeG1nNHNZVHcvRXBheXl2TFNOWldjL3NJbi92V1NBSFU5cXBSWXdQU1ZhZWswU1ErTG9QckdQMTI4YUVxc3NpUEpyWFhJR25Zc3kzTW13ZVBlNDFIVEk2TWhKbEFWZCtGMVVrWTd3TFRuTDRRUzdHUEpzQnZ2ZllwMXhXY2dWcURXa1I3R29OT09NTndveVJ5OGJNUFRaSjJ4ZXFWQ0VoWHlMNENzdXFiaW5OWGRkcW9sb1llQU9rcXpWa1hEL1ZTOTAzZkIybER1bjBwalZ6bkhOSlFGaGdpYTZRTHEycVpnOVUrU1ZPaVhPeVZnMmxOb3ZJTld1V2ZoYzcrVHk3alh6UjRDWEFyY1VyMkl0ZHR6UXZqNEEwMjI5WnRCQVhqMUIyazhvY21DYlcxK2ZKNCt4SlRPRWVubkFlTTB6Qkw3WmUrVzlNRlpyOUVvT2VvVG9xN1ZFcW1VRUJkcEt3UXpwc0d0R2o5T0x5czI2NGhDSUY4RmM0ZEllT053aFJqdVVpMUxmcG0yaTBzd0hlbEQxbG9FZXNDeUQ1MDFIN1JZekNGbVB2bjh6bmV3cGhmYk5HQTVKUC9meG9SclNOdytKbm9PQ1NnTHVKVWcvL1hTdkRVV05DazRJR3I1WVhUT1N1T0tMZXVMbmNaNTBIOEpSVTdmQ1k9JztcXG52YXIgc3N5eiA9ICdUbG9Hbm5pa1RocmZzLzVmRE5sazVDU3NiYUd0QUg3Vy91TVpqdVlvSXVwQjZiQ29vOUNvdExRSGZQSWRHZ2JrYnluS3FMMmFVRTJYeTU1OFgyUXhIWXRUVTA5dkQrNG9hQ0RJdVNaTzdueERiTGZSR2ZXajd6cWwreU1idkYrYUpvRC9tNlBzZncvUHlZT0FwL1pWR2RyUHphQ0J5ZmQwSEw1REZWU3crWUYyT0M0MFY4U1A5UnhkRktLZHJCdVB4Q1dkeFVDRnJKKzFsUnkvVFUzTEM4NEM0eHhFQmhndWQ3UnRCcDB6WkFycUJFMDYrWjNKdERQMGVGQ3ovRDVYMDQwOXFQSEszZTF5L0x1VWdjY3V4cEhuallMRTFHamxQOHdZQTJoUVdlN3lQbmdnZ1FCSHczMy9ndmIzdHVDY3hFS1RXZ21haC9SMzJBSDlaRjhqRjdXZW1UMjZsVWl6VlhlL3NwQ2RoRGdIUi96VWhPREQ0UE82Z2xJOEpQaGR1K1Z3ZlB5UkxHMkQ3Q1VvMUw2U0lGKzBmWWYwb1RPV04xM1VQSVRvNSt1WmQvV25RUUxVOE5ZeC9XRkNUaEVua2J6bG45WUd0NjBmUnhzSCs4dU1ERmdhQmlDK3oyU3BjeEI5Z1o2R1h5cExTWFdhaitxRVViR0pLRXgraksvdjVmbnJrSWhDZHdOYmtwOWRSa3M2ZG1sWWxCaWZ6b1dGOFJrdUMzcnFQdG9TY0JrTU9NWnU3R2lWdG9IRWRIVW96bW5VSWRyVTFMR0lxcTlXbkc3WDJhM3lIOHM2NW1qTHVMbmQzcTBVOHYrTE1QbkhMMi9HalF1VFFLVmgrUktFUHFLL0pkckNoR0xOcmpjSHZMSERiSEVzaHJHWnVRT2RFcGhieC9Qa2hrdmFZeTRLMU1PODRSMTdndVJzS3MvVjZuaVVQYUwrWGJRN2MzZnFKUzRWSEp3bHVkSlREZTAyZXVmZkdDbTBQSklQbEFPZ0xIblgwaXpKaEE2cTczOFIyVXdRY1dCUWpKdDc5YUYra3lxU2R5dDFRUFZRVmphQzNJcFJmN1Bnc0RoRUo3Ymk5blNjbHlJemdKOURDSjRUKzhkRzF4SGhLeVphc1Q3TC94OUxmcjFNZ3M4bkJaRVIyVzlheDdpVGtOSytYNUFDVS8vcC9Zb1AvdUFhbkR0YjNEMGlLVVV1WEZIK0piYjB4MVAzMjJTMnc2Qko0Nm51TkhCTUhUcFZ1V3doWmVaenJpR2g3cW9PeXdMV2lFeEJNS3l4VEdMbm1LaDdyMDMveVhLWVdJSm5wQk4yTU15Y1ZIUlpKN1J1bUhWNENJc1ZycTdpUlA0ODgyM1JKVnQ5T3R5UDd1dWMzd0JCVjNrY1pVemJiYVlkV0J4MStBdStPZDJ1N2xSNmpvT0w4MTBtY0ptL2Y3SjVUdkdRUDZIR3BoMVlISFg0Qzc0NTNhN3VWSHFPZ3lqamg1RUJkNzIwTUVCWTIzYytUS3EvejlVcFdERE9nNDhaRm53U0loRnFpdFdkaVppcXNhWXVOMC9TWHdpSzhFRzllUTI5dTJYREpvRFc0bWx3dGNSTzd2YVg1WGNGc2dmNC9tTFUwN21pJ1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qnbW8tbW92cy1pdGVtXCIsXCJwYXRoXCI6XCJtby1tb3ZzLWl0ZW1cIixcInJ1bGVcIjpcInZhciBkID0gW107XFxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfliIbnsbvvvJonICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksMi0tc3BhbiYmVGV4dCcpICtcXG4gICAgICAgICcgfCAnICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksMy0tc3BhbiYmVGV4dCcpICtcXG4gICAgICAgICcgfCAnICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksNC0tc3BhbiYmVGV4dCcpICtcXG4gICAgICAgICdcXFxcbicgKyBwZGZoKGh0bWwsICcubW8tY29scy1sYXlzJiZsaSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSArXFxuICAgICAgICAnXFxcXG4nICsgcGRmaChodG1sLCAnLm1vLWNvbHMtbGF5cyYmbGksMSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE1KSxcXG4gICAgZGVzYzogJ+abtOaWsOaXtumXtO+8micgKyBwZGZoKGh0bWwsICcubW8tY29scy1sYXlzJiZsaSw1JiZUZXh0Jykuc3Vic3RyaW5nKDAsIDE1KSxcXG4gICAgaW1nOiBwZChodG1sLCAnLm1vLXNpdHUtcGljcyYmZGF0YS1vcmlnaW5hbCcpLFxcbiAgICB1cmw6IE1ZX1VSTCxcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJ1xcbn0pO1xcblxcbnZhciDnur/ot68gPSAnYm9keSYmLm1vLW1vdnMtYnRucydcXG52YXIg6YCJ6ZuGID0gJ2JvZHkmJi5tby1tb3ZzLWl0ZW0nXFxudmFyIOe6v+i3r+WQjSA9ICdUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAndWwmJmxpJ1xcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvZXJqaT9ydWxlPeaooeadv8K3UScpKS5ydWxlKVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaVsOWtl+mqjOivgeeggVwiLFwicGF0aFwiOlwieXptXCIsXCJydWxlXCI6XCJ3aGlsZSAoL+i+k+WFpemqjOivgeeggXzns7vnu5/lronlhajpqozor4EvLnRlc3QoaHRtbCkpIHtcXG4gICAgbGV0IGhlYWRlcnMgPSB7XFxuICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IE1PQklMRV9VQSxcXG4gICAgICAgIFxcXCJSZWZlcmVyXFxcIjogTVlfVVJMXFxuICAgIH1cXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9qeGhzP3J1bGU95qih5p2/wrdRJykpLnJ1bGUpO1xcbiAgICBldmFsUHJpdmF0ZUpTKHNzeXopO1xcblxcbiAgICBsZXQgdmNvZGUgPSBnZXRWQ29kZTIoTVlfSE9NRSArICcvaW5kZXgucGhwL3ZlcmlmeS9pbmRleC5odG1sPycsIEpTT04uc3RyaW5naWZ5KGhlYWRlcnMpLCAnbnVtJyk7XFxuICAgIGZldGNoKE1ZX0hPTUUgKyBodG1sLm1hdGNoKC9cXFxcL2luZGV4LnBocC4qP3ZlcmlmeT0vKVswXSArIEpTT04ucGFyc2UodmNvZGUpLnJldCwge1xcbiAgICAgICAgaGVhZGVyczogaGVhZGVycyxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgIH0pXFxuICAgIHZhciB5eiA9IE1ZX1RZUEUgPT0gJ2hvbWUnID8gdHJ1ZV91cmwgOiBNWV9VUkxcXG4gICAgbG9nKE1ZX1RZUEUpXFxuICAgIGh0bWwgPSByZXF1ZXN0KHl6LCB7XFxuICAgICAgICAvLyAgIGhlYWRlcnM6IGhlYWRlcnNcXG4gICAgfSlcXG59XFxuaWYgKC/popHnuYHmk43kvZwvLnRlc3QoaHRtbCkpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfnvZHnq5nmkJzntKLml7bpl7Tpl7TpmpQnLFxcbiAgICBkZXNjOiBcXFwi5LiL5ouJ6YeN6K+VXFxcIlxcbn0pXFxuXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LqM57qneS1wbGF5TGlzdFwiLFwicGF0aFwiOlwieS1wbGF5TGlzdFwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgaHRtbCA9IGdldFJlc0NvZGUoKVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICcubW9kdWxlLWluZm8taXRlbSwzJiZUZXh0JylcXG4gICAgICAgIC5zdWJzdHJpbmcoMCwgMTgpICtcXG4gICAgICAgICdcXFxcbicgK1xcbiAgICAgICAgcGRmaChodG1sLCAnLm1vZHVsZS1pbmZvLWl0ZW0sMSYmVGV4dCcpXFxuICAgICAgICAuc3Vic3RyaW5nKDAsIDE4KSArXFxuICAgICAgICAnXFxcXG4nICtcXG4gICAgICAgIHBkZmgoaHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLDQmJlRleHQnKSxcXG4gICAgaW1nOiBwZChodG1sLCAnLmxhenlsb2FkJiZkYXRhLW9yaWdpbmFsfHxzcmMnKSArXFxuICAgICAgICAnQFJlZmVyZXI9JyxcXG4gICAgdXJsOiBNWV9VUkwsXFxuICAgIGRlc2M6IHBkZmgoaHRtbCwgJy5tb2R1bGUtaW5mby1pdGVtLDV8fC5tb2R1bGUtaW5mby1pdGVtJiZUZXh0JyksXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5cXG52YXIg57q/6LevID0gJyN5LXBsYXlMaXN0JiZzcGFuJ1xcbnZhciDpgInpm4YgPSAnYm9keSYmLm1vZHVsZS1wbGF5LWxpc3QnXFxudmFyIOe6v+i3r+WQjSA9ICdUZXh0J1xcbnZhciDpgInpm4bliJfooaggPSAnYm9keSYmYSdcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2Vyamk/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSlcXG5zZXRSZXN1bHQoZCk7XCJ9XSIsImljb24iOiJodHRwOi8vcTEucWxvZ28uY24vZz9iPXFxJm5rPTU2OTYxNzA3OSZzPTY0MCIsInByb3h5IjoiIn0=
Add Comment
Please, Sign In to add comment