xiaomianao666

小程序:MuteFun动漫网站·R

Apr 22nd, 2024
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@MuteFun动漫网站·R@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoiTXV0ZUZ1buWKqOa8q+e9keermcK3UiIsImF1dGhvciI6IiIsInVybCI6Imhpa2VyOi8vZW1wdHkjI2h0dHBzOi8vd3d3LjJrZG0uY29tL3ZvZHNob3cvMjAtLS0tLS0tLWZ5cGFnZS0tLS5odG1sIiwidmVyc2lvbiI6MCwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxudmFyIGQgPSBbXVxuYWRkTGlzdGVuZXIoXCJvbkNsb3NlXCIsICQudG9TdHJpbmcoKCkgPT4ge1xuICAgIGxldCBrZXlzID0gbGlzdE15VmFyS2V5cygpO1xuICAgIGZvciAobGV0IGl0IG9mIGtleXMpIHtcbiAgICAgICAgY2xlYXJNeVZhcihpdCk7XG4gICAgfVxufSkpO1xuXG4vL+WKqOaAgeWIhuexu1xuXG5jb25zdCDlpKfnsbvlrprkvY0gPSAnYm9keSYmLm5hdmJhci1pdGVtcyc7XG5jb25zdCDmi7zmjqXliIbnsbsgPSAnYm9keSYmLm1vZHVsZS1jbGFzcy1pdGVtJztcbmNvbnN0IOWwj+exu+WumuS9jSA9ICdib2R5JiZhOm5vdCg6bWF0Y2hlcyjpppbpobV86aKE5ZGKfOeVmeiogHxBUFB85Y+j56KRfOS4k+mimHzmvJTlkZgpKSc7XG5cblxuLy/nv7vpobVcbmNvbnN0IHBhZ2UgPSBNWV9QQUdFO1xuY29uc3Qg5LiL5LiA6aG1ID0gXCJwZChodG1sLCAnYTptYXRjaGVzKOS4i+S4gOmhtSkmJmhyZWYnKVwiO1xuY29uc3Qg54q25oCB5qCH6K6wID0gTVlfUlVMRS51cmw7XG5NWV9VUkwgPSBNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eSMjJywgJycpO1xubGV0IHRydWVfdXJsID0gZ2V0TXlWYXIoTVlfUlVMRS51cmwsIE1ZX1VSTClcbnRydWVfdXJsPXRydWVfdXJsLnJlcGxhY2UoJ2Z5cGFnZScscGFnZSkucmVwbGFjZSgvdHlwZWh0bWxcXC8oXFxkKykuKi8sJ3Nob3cvLS0tLS0tLS0tLS0vaWQvJDEuaHRtbCcpO1xudmFyIGh0bWwgPSByZXF1ZXN0KHRydWVfdXJsKVxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9tZXRob2QnLCB7fSkpLnJ1bGUpXG5jcmVhdGVOZXh0UGFnZSgpO1xuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9kdGZsJykpLnJ1bGUpO1xuXG4vL+mhtemdouWGheWuueWhq+WFhVxudmFyIOS4gOe6p+WIl+ihqCA9ICdib2R5JiYubW9kdWxlLWl0ZW0nXG52YXIg5LiA57qn5qCH6aKYID0gJy5tb2R1bGUtcG9zdGVyLWl0ZW0tdGl0bGUmJlRleHQnXG52YXIg5LiA57qn5o+P6L+wMSA9ICcubW9kdWxlLWl0ZW0tbm90ZSYmVGV4dCdcbnZhciDkuIDnuqfmj4/ov7AyID0gJydcbnZhciDkuIDnuqflm77niYcgPSAnaW1nJiZkYXRhLW9yaWdpbmFsJ1xudmFyIOS4gOe6p+mTvuaOpSA9ICdhJiZocmVmJ1xuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvUHJpbWFyeVRlbXBsYXRlJywge30pKS5ydWxlKTtcbnNldEhvbWVSZXN1bHQoZCkiLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly93d3cuMmtkbS5jb20vdm9kc2VhcmNoLyoqLS0tLS0tLS0tLWZ5cGFnZS0tLS5odG1sIiwiZ3JvdXAiOiLlvbHop4YiLCJzZWFyY2hGaW5kIjoianM6XG52YXIg5qGG5p625YiX6KGoID0gJ2JvZHkmJi5tb2R1bGUtY2FyZC1pdGVtJ1xudmFyIOahhuaetuagh+mimCA9ICcubW9kdWxlLWNhcmQtaXRlbS10aXRsZSYmVGV4dCdcbnZhciDmoYbmnrbmj4/ov7AxID0gJy5tb2R1bGUtaW5mby1pdGVtLWNvbnRlbnQmJlRleHQnXG52YXIg5qGG5p625o+P6L+wMiA9ICcucGxheS1idG4tbyYmVGV4dCdcbnZhciDmoYbmnrbnroDku4sxID0gJ2RpdjplcSgwKSYmVGV4dCdcbnZhciDmoYbmnrbnroDku4syID0gJy52aWRlby1pbmZvLWl0ZW1zOmVxKDEpJiZUZXh0J1xudmFyIOahhuaetuWbvueJhyA9ICdpbWcmJmRhdGEtb3JpZ2luYWwnXG52YXIg5qGG5p626ZO+5o6lID0gJ2EmJmhyZWYnXG5cbmV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL1NlYXJjaEZyYW1lJywge30pKS5ydWxlKTsiLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8zIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxudmFyIGQgPSBbXVxudmFyIGh0bWwgPSBnZXRSZXNDb2RlKClcbnZhciDmkJzntKLmoIfnrb4gPSAnaDEmJlRleHQnO1xuXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2VyJykpLnJ1bGUpO1xuZXZhbChKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL3BhZ2UvbGF6eWwnLCB7fSkpLnJ1bGUpO1xudmFyIHBsYXlsaXN0ID0gW3tcbiAgICDnsbvlnos6ICflnKjnur/mkq3mlL4nLFxuICAgIOe6v+i3rzogJyN5LXBsYXlMaXN0JiYudGFiLWl0ZW0nLFxuXG4gICAg6YCJ6ZuGOiAnYm9keSYmLm1vZHVsZS1wbGF5LWxpc3QtY29udGVudDpub3QoOm1hdGNoZXMo572R55uY6ZO+5o6lKSknLFxuICAgIOe6v+i3r+WQjeensDogJ3NwYW4mJlRleHRAQC5yZXBsYWNlKFwiXCIsXCJcIiknLFxuICAgIOmAiembhuWIl+ihqDogJ2JvZHkmJmEnLFxuICAgIOaOkumZpDogJycsXG4gICAgLy/pgInpm4blkI3np7A6ICdUZXh0JyxcbiAgICAvL+mAiembhumTvuaOpTogJycsXG4gICAgLy/lgJLluo86dHJ1ZSxcbiAgICDop6PmnpA6IGxhenlcbn0sIHtcbiAgICDnsbvlnos6ICflvbHniYfkuIvovb0nLFxuICAgIOmAiembhjogJ2JvZHkmJi52aWRlby1pbmZvLWRvd25idG4nLFxuICAgIOmAiembhuWQjeensDogJ1RleHQnLFxuICAgIOmAiembhumTvuaOpTogJy52aWRlby1pbmZvLWRvd25idG4mJmEmJmhyZWYnLFxufV1cblxudmFyIG9iaiA9IHtcbiAgICBtYWluOiBwZGZhKGh0bWwsICdib2R5JiYubW9kdWxlLWluZm8taXRlbTpub3QoOm1hdGNoZXMo5Ymn5oOFKSknKSxcbiAgICBzb3J0OiBbJ+WcsOWMuicsICflubTku70nLCAn57yW5YmnJywgJ+mbhuaVsCcsICflr7zmvJQnLCAn5Li75ryUJywgJ+WIq+WQjSddLFxuICAgIGltZzogTVlfUEFSQU1TLmltZyxcbi8vcGQoaHRtbCwgJyNjb3Zlcl9zaG93Ym94JiZkYXRhLW9yaWdpbmFsJyksLy/lsIHpnaLlm77niYdcbn1cblxuRXJqaS5zZXRDb250ZW50KG9iaik7XG5FcmppLnNldERlc2MocGRmaChodG1sLCAnLm1vZHVsZS1pbmZvLWludHJvZHVjdGlvbi1jb250ZW50JiZUZXh0JykucmVwbGFjZSgn5pS26LW3JywnJykpOy8v5Ymn5oOF566A5LuLXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vcGFnZS90b29sJywge30pKS5ydWxlKTsvL+WklumDqOW/q+aNt+aQnOe0olxuRXJqaS5nZXRQbGF5ZXJzKHBsYXlsaXN0KTtcbkVyamku5aOw5piOKCk7XG5cbnNldFJlc3VsdChkKSIsInNkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwic2RldGFpbF9maW5kX3J1bGUiOiIqIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoiIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS4gOe6p+WKqOaAgeWIhuexu1wiLFwicGF0aFwiOlwiZHRmbFwiLFwicnVsZVwiOlwiXFxuLypcXG5WZXIgMjAyMy01LTMwIOaUuSDmqKHmnb9NXFxu5aSH5rOo77ya5LiN6KaB55So5rW36ZiU5Luj56CB5qC85byP5YyWIOWGheWuueS8muWHuumUmVxcbuW/hemhu+WPguaVsO+8mlxcbuWIhuexu+minOiJsiDlpKfnsbvlrprkvY0gXFxu5bCP57G75a6a5L2NIOWIhuexu+agh+mimCDliIbnsbvpk77mjqVcXG5odG1sID0+5rqQ56CBIHBhZ2UgPT7pobXnoIFcXG7lj6/pgInlj4LmlbDvvJpcXG7mi7zmjqXliIbnsbsg5oqY5Y+g5qCH6K6wIOWxleW8gOagh+iusCDmjpLpmaRcXG7lpKfnsbvpk77mjqUg5aSn57G75qCH6aKYIOa4hemZpOmUriDlvIDlkK/mipjlj6BcXG7pmYTliqDlrprkvY1cXG7or7TmmI7vvJpcXG7lpJbpnaLnlKhnZXRNeVZhcihNWV9SVUxFLnVybCkg5oiW6ICFIOeKtuaAgSDlj5bpk77mjqVcXG7prZTmlLk6zrFcXG4qL1xcblxcblxcbnZhciBnZXRSYW5nZUNvbG9ycyA9IGZ1bmN0aW9uKCkge8KgwqDCoMKgwqDCoMKgXFxuICAgIHJldHVybiAnIycgKyAoJzAwMDAwJyArIChNYXRoLnJhbmRvbSgpICogMHgxMDAwMDAwIDw8IDApLnRvU3RyaW5nKDE2KSkuc3Vic3RyKC02KTvCoMKgwqDCoMKgXFxufVxcbmNvbnN0IOWIhuexu+minOiJsiA9IGdldFJhbmdlQ29sb3JzKClcXG52YXIg5pCc57Si5oyJ6ZKuID0gJ1NlYXJjaCdcXG52YXIg5Yqo5oCB5pS257ypID0gJ+KLgSdcXG52YXIg5Yqo5oCB5bGV5byAID0gJ+KLgCdcXG5jb25zdCDliIbnsbvmoIfpopggPSAnYSYmVGV4dCc7XFxuY29uc3Qg5YiG57G76ZO+5o6lID0gJ2EmJmhyZWYnO1xcbmNvbnN0IOW8gOWQr+aQnOe0oiA9IHRydWU7XFxuXFxuXFxuXFxubGV0IGVtcHR5wqAgPSBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxyXFxubGV0IGNhdGVnb3JpZXMgPSBbXTtcXHJcXG5pZiAodHlwZW9mKOaLvOaOpeWIhuexuykgIT0gJ3VuZGVmaW5lZCcgJiYg5ou85o6l5YiG57G7wqAhPSAnJyl7wqDCoMKgwqBcXHJcXG4gICAgY2F0ZWdvcmllcyA9IFtwZGZhKGh0bWwsIMKg5aSn57G75a6a5L2NKS5qb2luKCdcXFxcbicpXS5jb25jYXQocGRmYShodG1sLCDCoOaLvOaOpeWIhuexuykpO1xcbiAgICBpZih0eXBlb2Yo6ZmE5Yqg5a6a5L2NKSE9J3VuZGVmaW5lZCcgJiYg6ZmE5Yqg5a6a5L2NLmxlbmd0aD4wKXtcXG4gICAgICAgICAgICDpmYTliqDlrprkvY0uZm9yRWFjaCh4PT57XFxuICAgICAgdmFyIOS4gOe6pz1wZGZhKGh0bWwseC7kuIDnuqflrprkvY0pLm1hcChzPT57XFxuICAgICAgICAgIHZhciDlrprkvY09cGRmYShzLHgu5bCP57G7KS5tYXAocT0+e1xcbiAgICAgICAgICAgICAgdmFyIHRpdGxlPXBkZmgocSx4Luagh+mimCk7XFxuICAgICAgICAgICAgICB2YXIgdXJsPSdhJ1xcbiAgICAgICAgICAgICAgaWYoeC7pk77mjqUuaW5jbHVkZXMoJ0BAJykpe1xcbiAgICAgICAgICAgICAgICAgIHN0YXRlPXgu6ZO+5o6lLnNwbGl0KCdAQCcpWzBdXFxuICAgICAgICAgICAgICAgICAgdmFsdWU9cGRmaChxLHgu6ZO+5o6lLnNwbGl0KCdAQCcpWzFdKTtcXG4gICAgICAgICAgICAgICAgICByZXR1cm4gYDxhIHR5cGU9XFxcIkBleHRyYVxcXCIgc3RhdGU9XFxcIiR7c3RhdGV9XFxcIiB2YWx1ZT1cXFwiJHt2YWx1ZX1cXFwiPiR7dGl0bGV9PC9hPmA7XFxuICAgICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgICBocmVmPXBkKHEseC7pk77mjqUpO1xcbiAgICAgICAgICAgICAgICAgIHJldHVybiBgPGEgaHJlZj1cXFwiJHtocmVmfVxcXCI+JHt0aXRsZX08L2E+YDtcXG4gICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgIFxcbiAgICAgICAgICB9KTtcXG4gICAgICAgICAgcmV0dXJuIOWumuS9jTtcXG4gICAgICAgIH0pO1xcbiAgICAgICBjYXRlZ29yaWVzLnB1c2go5LiA57qnLmpvaW4oJ1xcXFxuJykpO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICB9XFxyXFxufcKgZWxzZcKge8KgwqDCoMKgwqBcXHJcXG4gICAgY2F0ZWdvcmllcyA9IHBkZmEoaHRtbCwgwqDlpKfnsbvlrprkvY0pO1xcclxcbn1cXHJcXG5sZXTCoGluaXRfY2F0ZcKgPcKgbmV3IEFycmF5KDIwKS5maWxsKFxcXCIwXFxcIik7XFxyXFxuY29uc3TCoGZvbGTCoD3CoGdldE15VmFyKE1ZX1JVTEUuZ3JvdXAswqBcXFwiMFxcXCIpO1xcclxcbmNvbnN0wqBjYXRlX3RlbXDCoD3CoEpTT04ucGFyc2UoZ2V0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIswqBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKSk7XFxudmFyIOaKmOWPoOeKtuaAgT0odHlwZW9mKOW8gOWQr+aKmOWPoCkgIT0gJ3VuZGVmaW5lZCcpP+W8gOWQr+aKmOWPoDp0cnVlO1xcclxcbnZhciDmipjlj6A9KHR5cGVvZijmipjlj6DmoIforrApICE9ICd1bmRlZmluZWQnICYmIOaKmOWPoOagh+iusMKgIT0gJycpP+aKmOWPoOagh+iusDpcXFwi4oCc4oCc4oCd4oCdPG1pZGRsZT48Yj48Zm9udCBjb2xvcj0nZ3JlZW4nPlxcXCIgKyDliqjmgIHmlLbnvKkgKyBcXFwiPC9mb250PjwvYj48L21pZGRsZT5cXFwiO1xcbnZhciDlsZXlvIA9KHR5cGVvZijlsZXlvIDmoIforrApICE9ICd1bmRlZmluZWQnICYmIOWxleW8gOagh+iusMKgIT0gJycpP+WxleW8gOagh+iusDpcXFwi4oCc4oCc4oCd4oCdPG1pZGRsZT48Yj48Zm9udCBjb2xvcj0ncmVkJz5cXFwiICsg5Yqo5oCB5bGV5byAICsgXFxcIjwvZm9udD48L2I+PC9taWRkbGU+XFxcIjtcXG52YXIg5riF6ZmkPSh0eXBlb2Yo5riF6Zmk6ZSuKSAhPSAndW5kZWZpbmVkJyAmJiDmuIXpmaTplK7CoCE9ICcnKT/muIXpmaTplK46W107XFxudmFyIOeKtuaAgT0odHlwZW9mKOeKtuaAgeagh+iusCkgIT0gJ3VuZGVmaW5lZCcgJiYg54q25oCB5qCH6K6wwqAhPSAnJyk/54q25oCB5qCH6K6wOk1ZX1JVTEUudXJsO1xcbnZhciDlpKfnsbvlpITnkIY9dHlwZW9mKOS4gOe6p+WIhuexu+WkhOeQhik9PSdmdW5jdGlvbic/dHJ1ZTpmYWxzZTtcXG52YXIg5pCc57SiPXR5cGVvZijlvIDlkK/mkJzntKIpIT0ndW5kZWZpbmVkJz/lvIDlkK/mkJzntKI6ZmFsc2U7XFxuXFxyXFxuaWbCoChwYXJzZUludChwYWdlKcKgPT09wqAxKcKge1xcbiAgICBpZijmkJzntKIpe1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiDmkJzntKLmjInpkq4sXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9zZWFyY2g/cnVsZT1cXFwiICsgTVlfUlVMRS50aXRsZSArIFxcXCImcz0nK2lucHV0XFxcIixcXG4gICAgICAgIGRlc2M6IFxcXCLmkJzntKLlhbPplK7or41cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJpbnB1dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ2tleXdvcmQnLCAnJyksXFxuICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcigna2V5d29yZCcsIGlucHV0KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICAgIH0pXFxuICAgIH1cXG4gICAgaWYo5oqY5Y+g54q25oCBKXtcXHJcXG7CoMKgwqDCoCBkLnB1c2goe1xcclxcbsKgwqDCoMKgwqDCoMKgwqB0aXRsZTrCoGZvbGTCoD09PcKgJzEnwqA/wqDCoOaKmOWPoMKgOsKg5bGV5byALFxcclxcbsKgwqDCoMKgwqDCoMKgwqB1cmw6wqAkKCkubGF6eVJ1bGUoKGZvbGQpwqA9PsKge1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHB1dE15VmFyKE1ZX1JVTEUuZ3JvdXAswqBmb2xkwqA9PT3CoCcxJ8KgP8KgJzAnwqA6wqAnMScpO1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZnJlc2hQYWdlKGZhbHNlKTtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm7CoFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgfSzCoGZvbGQpLFxcclxcbsKgwqDCoMKgwqDCoMKgwqBjb2xfdHlwZTrCoCdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgIGV4dHJhOntcXG4gICAgICAgICAgICBsb25nQ2xpY2s6W3tcXG4gICAgICAgICAgICAgICAgdGl0bGU6J+a4hemZpOeKtuaAgScsXFxuICAgICAgICAgICAgICAgIGpzOiQudG9TdHJpbmcoKHgpPT57XFxuICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcih4KTtcXG4gICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICB9LOeKtuaAgSlcXG4gICAgICAgICAgICB9XVxcbiAgICAgICAgfVxcclxcbsKgwqDCoCDCoH0pXFxuICAgIH1cXHJcXG4gICAgbGV0IHNldFRpdGxlPShrLGksdCk9PnsgICAgICAgICAgICAgXFxuICAgICAgcmV0dXJuIGs9PWk/XFxcIuKAnOKAnOKAneKAnVxcXCLCoCt0LmZvbnRjb2xvcijliIbnsbvpopzoibIpOnRcXHJcXG4gICAgfVxcclxcbsKgwqDCoMKgY2F0ZWdvcmllcy5mb3JFYWNoKChjYXRlZ29yeSzCoGluZGV4KcKgPT7CoHtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgbGV0wqBzdWJfY2F0ZWdvcmllc8KgPcKgcGRmYShjYXRlZ29yeSzCoOWwj+exu+WumuS9jSk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoGlmwqAoaW5kZXjCoD09PcKgMCnCoHtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzdWJfY2F0ZWdvcmllcy5mb3JFYWNoKChpdGVtLMKga2V5KcKgPT7CoHtcXG4gICAgICAgICAgICAgICAgbGV0IF/lpKfnsbvpk77mjqU9KHR5cGVvZijlpKfnsbvpk77mjqUpICE9ICd1bmRlZmluZWQnICYmIOWkp+exu+mTvuaOpcKgIT0gJycpP+Wkp+exu+mTvuaOpTrliIbnsbvpk77mjqU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgIFxcclxcbiAgICAgICAgICAgICAgICBsZXQgX+Wkp+exu+agh+mimD0odHlwZW9mKOWkp+exu+agh+mimCkgIT0gJ3VuZGVmaW5lZCcgJiYg5aSn57G75qCH6aKYwqAhPSAnJyk/5aSn57G75qCH6aKYOuWIhuexu+agh+mimDsgICAgICAgICAgICAgIFxcbiAgICBcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxldMKgdGl0bGXCoD3CoHBkZmgoaXRlbSzCoF/lpKfnsbvmoIfpopgpO1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWbCoCh0eXBlb2Yo5o6S6ZmkKcKgIT3CoCd1bmRlZmluZWQnwqAmJsKg5o6S6ZmkwqAhPcKgJycpwqB7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRpdGxlwqA9wqB0aXRsZS5yZXBsYWNlKG5ld8KgUmVnRXhwKOaOkumZpCzCoFxcXCJnXFxcIikswqBcXFwiXFxcIik7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9XFxuICAgICAgICAgICAgICAgIGxldCBwYXJhbXM9e1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNhdGVfdGVtcDrCoGNhdGVfdGVtcCxrZXk6wqBrZXkscGFnZTrCoHBhZ2UsY2xlYXJzOua4hemZpCxzdGF0ZTrnirbmgIFcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0gICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBsZXQgdXJsPXBkKGl0ZW0swqBf5aSn57G76ZO+5o6lKTtcXG4gICAgICAgICAgICAgICAgaWYo5aSn57G75aSE55CGKXtcXG4gICAgICAgICAgICAgICAgICAgIHVybD3kuIDnuqfliIbnsbvlpITnkIYodXJsKVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIC8vbG9nKHVybClcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGQucHVzaCh7ICBcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGl0bGU6wqBzZXRUaXRsZShrZXkudG9TdHJpbmcoKSxjYXRlX3RlbXBbaW5kZXhdLHRpdGxlKSxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOsKgJ3Njcm9sbF9idXR0b24nLFxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1cmw6wqAkKHVybMKgK8KgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcynCoD0+wqB7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBuZXdfY2F0ZcKgPcKgW107XFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zLmNsZWFycy5mb3JFYWNoKChpdGVtKT0+eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYXJNeVZhcihpdGVtKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyYW1zLmNhdGVfdGVtcC5mb3JFYWNoKChjYXRlLMKgaW5kZXgpwqA9PsKge1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV3X2NhdGUucHVzaChpbmRleMKgPT09wqAwwqA/wqBwYXJhbXMua2V5LnRvU3RyaW5nKCnCoDrCoFxcXCIwXFxcIilcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9KVxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHB1dE15VmFyKFxcXCJoZWFkLmNhdGVcXFwiLMKgSlNPTi5zdHJpbmdpZnkobmV3X2NhdGUpKTtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwdXRNeVZhcihwYXJhbXMuc3RhdGUswqBpbnB1dCk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVmcmVzaFBhZ2UodHJ1ZSk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuwqBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0scGFyYW1zKVxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZC5wdXNoKHtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbF90eXBlOsKgXFxcImJsYW5rX2Jsb2NrXFxcIixcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9KVxcclxcbsKgwqDCoMKgwqDCoMKgwqB9wqBlbHNlwqBpZsKgKGZvbGTCoD09PcKgJzEnfHzmipjlj6DnirbmgIE9PWZhbHNlKcKge1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0swqBrZXkpwqA9PsKge1xcbiAgICAgICAgICAgICAgICB2YXIgZXh0cmFwb3M9ZmFsc2U7XFxuICAgICAgICAgICAgICAgIGlmKGl0ZW0uaW5jbHVkZXMoJ3R5cGU9XFxcIkBleHRyYVxcXCInKSl7XFxuICAgICAgICAgICAgICAgICAgICBleHRyYXBvcz10cnVlO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coJ+mZhOWKoOWumuS9jScpXFxuICAgICAgICAgICAgICAgIH0gICBcXG4gICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgIGlmKGV4dHJhcG9zKXtcXG4gICAgICAgICAgICAgICAgICAgdmFywqB0aXRsZcKgPcKgcGRmaChpdGVtLMKgJ2EmJlRleHQnKTtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmwqAodHlwZW9mKOaOkumZpCnCoCE9wqAndW5kZWZpbmVkJ8KgJibCoOaOkumZpMKgIT3CoCcnKcKge1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aXRsZcKgPcKgdGl0bGUucmVwbGFjZShuZXfCoFJlZ0V4cCjmjpLpmaQswqBcXFwiZ1xcXCIpLMKgXFxcIlxcXCIpO1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAgwqB9XFxuICAgICAgICAgICAgICAgIHZhciBqc29uPXtcXG4gICAgICAgICAgICAgICAgICAgIHR5cGU6cGRmaChpdGVtLCdhJiZzdGF0ZScpLFxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6cGRmaChpdGVtLCdhJiZ2YWx1ZScpLFxcbiAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfWVsc2V7XFxuICAgIFxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAgICDCoHZhcsKgdGl0bGXCoD3CoHBkZmgoaXRlbSzCoOWIhuexu+agh+mimCk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZsKgKHR5cGVvZijmjpLpmaQpwqAhPcKgJ3VuZGVmaW5lZCfCoCYmwqDmjpLpmaTCoCE9wqAnJynCoHtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGl0bGXCoD3CoHRpdGxlLnJlcGxhY2UobmV3wqBSZWdFeHAo5o6S6ZmkLMKgXFxcImdcXFwiKSzCoFxcXCJcXFwiKTtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH1cXG4gICAgICAgICAgICAgICAgdmFyIGpzb2495YiG57G76ZO+5o6lLmluY2x1ZGVzKCdAQEAnKT97XFxuICAgICAgICAgICAgICAgICAgICB0eXBlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzBdKSxcXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOnBkZmgoaXRlbSzliIbnsbvpk77mjqUuc3BsaXQoJ0BAQCcpWzFdKSxcXG4gICAgICAgICAgICAgICAgfTpwZChpdGVtLOWIhuexu+mTvuaOpSk7XFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBsZXQgcGFyYW1zPcKge1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBjYXRlX3RlbXA6wqBjYXRlX3RlbXAsaW5kZXg6wqBpbmRleCxrZXk6wqBrZXkswqBwYWdlOsKgcGFnZSxqc29uOmpzb24sc3RhdGU654q25oCBXFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkLnB1c2goe1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0aXRsZTrCoHNldFRpdGxlKGtleS50b1N0cmluZygpLGNhdGVfdGVtcFtpbmRleF0sdGl0bGUpLFxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB1cmw6wqAkKCdoaWtlcjovL2VtcHR5J8KgK8KgJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHBhcmFtcynCoD0+wqB7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFyYW1zLmNhdGVfdGVtcFtwYXJhbXMuaW5kZXhdwqA9wqBwYXJhbXMua2V5LnRvU3RyaW5nKCk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcHV0TXlWYXIoXFxcImhlYWQuY2F0ZVxcXCIswqBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYocGFyYW1zLmpzb24uY29uc3RydWN0b3IgPT09IE9iamVjdCl7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKHBhcmFtcy5qc29uLnR5cGUscGFyYW1zLmpzb24udmFsdWUpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihwYXJhbXMuc3RhdGUswqBwYXJhbXMuanNvbik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfcKgwqDCoFxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZnJlc2hQYWdlKHRydWUpO1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybsKgXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9LHBhcmFtcyksXFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbF90eXBlOsKgJ3Njcm9sbF9idXR0b24nLFxcclxcbsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfSk7XFxyXFxuwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZC5wdXNoKHtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbF90eXBlOsKgXFxcImJsYW5rX2Jsb2NrXFxcIixcXHJcXG7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9KTtcXHJcXG7CoMKgwqDCoMKgwqDCoMKgfVxcclxcbsKgwqDCoMKgfSlcXHJcXG59XFxuXFxuXFxuZnVuY3Rpb24gZ2V0QmFja0ltYWdlKGltZ3VybCl7XFxuICAgIHJldHVybiAvdXJsKD86XFxcXHMrKT9cXFxcKCguKj8pXFxcXCkvZy5leGVjKGltZ3VybClbMV0ucmVwbGFjZSgvKCd8XFxcInwmcXVvdDspL2dtLCcnKTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqfliJfooajmoYbmnrZcIixcInBhdGhcIjpcIlByaW1hcnlUZW1wbGF0ZVwiLFwicnVsZVwiOlwiXFxubGV0IGxpc3QgPSBwZGZhKGh0bWwsIOS4gOe6p+WIl+ihqCk7XFxuZm9yIChsZXQgaiBpbiBsaXN0KSB7XFxuICAgICB2YXIg5qCH6aKYID0gcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sIOS4gOe6p+agh+mimCk7XFxuICAgICB2YXIg5o+P6L+wMSA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCDkuIDnuqfmj4/ov7AxKS5zbGljZSgtNSkucmVwbGFjZSgnOicsJycpO1xcbiAgICAgdmFyIOaPj+i/sDIgPSBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwg5LiA57qn5o+P6L+wMikucmVwbGFjZSgn5pawJywnJykucmVwbGFjZSgn56ysJywnJykucmVwbGFjZSgvXFxcXC8uKi8sJycpO1xcbiAgICAgdmFyIOWbvueJhyA9IHBhcnNlRG9tKGxpc3Rbal0sIOS4gOe6p+WbvueJhykgKyAnQFJlZmVyZXI9JztcXG4gICAgIHZhciDpk77mjqUgPSBwYXJzZURvbShsaXN0W2pdLCDkuIDnuqfpk77mjqUpICsgJyNpbW1lcnNpdmVUaGVtZSMnOyAgICAgICBcXG4gICAgICAgICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTog5qCH6aKYLFxcbiAgICAgICAgZGVzYzog5o+P6L+wMSArICcgJyArIOaPj+i/sDIsXFxuICAgICAgICBpbWc6IOWbvueJhyxcXG4gICAgICAgIHVybDog6ZO+5o6lLCBcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMycsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGltZzog5Zu+54mHLFxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuIDnuqfmkJzntKLmoYbmnrZcIixcInBhdGhcIjpcIlNlYXJjaEZyYW1lXCIsXCJydWxlXCI6XCJcXHJcXG52YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpXFxubGV0IGxpc3QgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsIOahhuaetuWIl+ihqCk7XFxuZm9yIChsZXQgaiBpbiBsaXN0KSB7XFxuICAgICB2YXIg5qCH6aKYID0gcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sIOahhuaetuagh+mimCk7XFxuICAgICB2YXIg566A5LuLMSA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCDmoYbmnrbnroDku4sxKTtcXG4gICAgIHZhciDnroDku4syID0gcGFyc2VEb21Gb3JIdG1sKGxpc3Rbal0sIOahhuaetueugOS7izIpO1xcbiAgICAgdmFyIOaPj+i/sDEgPSBwYXJzZURvbUZvckh0bWwobGlzdFtqXSwg5qGG5p625o+P6L+wMSk7XFxuICAgICB2YXIg5o+P6L+wMiA9IHBhcnNlRG9tRm9ySHRtbChsaXN0W2pdLCDmoYbmnrbmj4/ov7AyKTtcXG4gICAgIHZhciDlm77niYcgPSBwYXJzZURvbShsaXN0W2pdLCDmoYbmnrblm77niYcpICsgJ0BSZWZlcmVyPSc7XFxuICAgICB2YXIg6ZO+5o6lID0gcGFyc2VEb20obGlzdFtqXSwg5qGG5p626ZO+5o6lKSArICcjaW1tZXJzaXZlVGhlbWUjJzsgXFxuICAgICAgXFxuICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgIHRpdGxlOiDmoIfpopgsICAgICAgICAgICBcXG4gICAgICAgICAgICAgICBjb250ZW50OiDnroDku4sxICsgJ1xcXFxuJyArIOeugOS7izIsXFxuICAgICAgICAgICAgICAgZGVzYzog5o+P6L+wMSArICcgJyArIOaPj+i/sDIsXFxuICAgICAgICAgICAgICAgaW1nOiDlm77niYcsXFxuICAgICAgICAgICAgICAgdXJsOiDpk77mjqUsXFxuICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpbWc6IOWbvueJhyxcXG4gICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5LiA57qn57+76aG15pa55rOVXCIsXCJwYXRoXCI6XCJtZXRob2RcIixcInJ1bGVcIjpcImpzOlxcbi8qXFxuVmVyIDIwMjMtNS0yNSAxLjNcXG4qL1xcblxcbi8vdXJs6Kej5p6QXFxuZnVuY3Rpb24gdXJsUGFyc2UodSkge1xcbiAgICB2YXIgZGljdCA9IHt9XFxuICAgIGRpY3QuU291cmNlID0gdTtcXG4gICAgbGV0IHBhcmFtcyA9ICh1cmwpID0+IHtcXG4gICAgICAgIGxldCBxdWVyeVBhcmFtcyA9IHt9O1xcbiAgICAgICAgbGV0IHJlZyA9IC8oW14/PSZdKyk9KFtePz0mXSspL2c7XFxuICAgICAgICB1cmwucmVwbGFjZShyZWcsIGZ1bmN0aW9uKCkge1xcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zW2FyZ3VtZW50c1sxXV0gPSBhcmd1bWVudHNbMl07XFxuICAgICAgICB9KVxcbiAgICAgICAgcmV0dXJuIHF1ZXJ5UGFyYW1zXFxuICAgIH1cXG4gICAgdmFyIGphdmFVcmwgPSBKYXZhSW1wb3J0ZXIoamF2YS5uZXQuVVJMKTtcXG4gICAgd2l0aChqYXZhVXJsKSB7XFxuICAgICAgICB2YXIgdXJsID0gbmV3IFVSTCh1KTtcXG4gICAgICAgIGRpY3QuUHJvdG9jb2wgPSB1cmwuZ2V0UHJvdG9jb2woKTtcXG4gICAgICAgIGRpY3QuSG9zdCA9IHVybC5nZXRIb3N0KCk7XFxuICAgICAgICBkaWN0LlBvcnQgPSB1cmwuZ2V0UG9ydCgpO1xcbiAgICAgICAgZGljdC5GaWxlID0gdXJsLmdldEZpbGUoKTtcXG4gICAgICAgIGRpY3QuUGF0aCA9IHVybC5nZXRQYXRoKCk7XFxuICAgICAgICBkaWN0LlJlZiA9IHVybC5nZXRSZWYoKTtcXG4gICAgICAgIGRpY3QuSG9zdHMgPSBgJHtkaWN0LlByb3RvY29sfTovLyR7dXJsLmdldEhvc3QoKX1gXFxuICAgIH1cXG4gICAgZGljdC5QYXJhbXMgPSBwYXJhbXModSk7XFxuICAgIHJldHVybiBkaWN0O1xcbn1cXG5cXG4vL+Wvueixoei9rOafpeivouWtl+espuS4slxcbk9iamVjdC5Ub1BhcmFtcyA9IGZ1bmN0aW9uKCkge1xcbiAgICB2YXIganNvbiA9IGFyZ3VtZW50c1swXTtcXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGpzb24pLm1hcChrZXkgPT4ga2V5ICsgJz0nICsganNvbltrZXldKS5qb2luKCcmJyk7XFxufVxcblxcbi8v5Yik5pat5Lik5Liq5a+56LGh5piv5ZCm55u45ZCMXFxuZnVuY3Rpb24gaXNFcXVhbCh4LCB5KSB7XFxuICAgIGNvbnN0IG9rID0gT2JqZWN0LmtleXMsXFxuICAgICAgICB0eCA9IHR5cGVvZiB4LFxcbiAgICAgICAgdHkgPSB0eXBlb2YgeTtcXG4gICAgcmV0dXJuIHggJiYgeSAmJiB0eCA9PT0gJ29iamVjdCcgJiYgdHggPT09IHR5ID8gKFxcbiAgICAgICAgb2soeCkubGVuZ3RoID09PSBvayh5KS5sZW5ndGggJiZcXG4gICAgICAgIG9rKHgpLmV2ZXJ5KGtleSA9PiBpc0VxdWFsKHhba2V5XSwgeVtrZXldKSlcXG4gICAgKSA6ICh4ID09PSB5KTtcXG59XFxuXFxuXFxuXFxuLy/mn6Xor6LkuKTkuKrlrZfnrKbkuLLkuI3lkIzlpIRcXG5mdW5jdGlvbiBmaW5kRGlmZmVyZW50SW5kZXgoc3RyMSwgc3RyMikge1xcbiAgICBjb25zdCBkaWZmQ2hhcnMgPSBbXTtcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzdHIyLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBpZiAoc3RyMVtpXSAhPT0gc3RyMltpXSkge1xcbiAgICAgICAgICAgIGRpZmZDaGFycy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgaW5kZXg6IGksXFxuICAgICAgICAgICAgICAgIHMxOiBzdHIxW2ldLFxcbiAgICAgICAgICAgICAgICBzMjogc3RyMltpXVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIHJldHVybiBkaWZmQ2hhcnM7XFxufVxcblxcbi8v5pu/5o2i5a2X56ym5Liy5oyH5a6a5L2N572u55qE5a2X56ym5LiyXFxuZnVuY3Rpb24gcmVwbGFjZUNoYXJBdChzdHIsIGluZGV4LCByZXBsYWNlbWVudCkge1xcbiAgaWYgKGluZGV4IDwgMCB8fCBpbmRleCA+PSBzdHIubGVuZ3RoKSB7XFxuICAgIHJldHVybiBzdHI7XFxuICB9XFxuICAvL2xvZyhpbmRleClcXG4gIGNvbnN0IGFyciA9IHN0ci5zcGxpdChcXFwiXFxcIik7XFxuICBhcnJbaW5kZXhdID0gcmVwbGFjZW1lbnQ7XFxuICByZXR1cm4gYXJyLmpvaW4oXFxcIlxcXCIpO1xcbn1cXG5cXG4vL+aehOW7uuS4i+S4gOmhtVxcbi8v5Y+C5pWwMSDmupBcXG4vL+WPguaVsDIg55uu5qCHXFxuLy/lj4LmlbAzIOmineWkluWPguaVsFxcbmZ1bmN0aW9uIGdldE5leHRVcmwoc291cmNlLCB0YXJnZXQsIHBhcmFtcykge1xcbiAgICB2YXIgdTEgPSB1cmxQYXJzZShzb3VyY2UpO1xcbiAgICB2YXIgdTIgPSB1cmxQYXJzZSh0YXJnZXQpO1xcbiAgICB2YXIgcGE9dW5kZWZpbmVkO1xcbiAgICBpZih0eXBlb2YocGFyYW1zKT09J29iamVjdCcpe1xcbiAgICAgICAgcGEgPSBwYXJhbXMuaGFzT3duUHJvcGVydHkoJ+eJueW+gScpP3BhcmFtcy7nibnlvoE6dW5kZWZpbmVkO1xcbiAgICB9XFxuICAgIHZhciBuZXh0dXJsID0gc291cmNlO1xcbiAgICB2YXIgY2EgPSBPYmplY3Qua2V5cyh1Mi5QYXJhbXMpLmxlbmd0aCA9PSAwID8gJycgOiAnPyc7XFxuICAgIGlmIChwYSAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgIHZhciBycyA9IFN0cmluZyh1Mi5QYXRoKS5yZXBsYWNlKG5ldyBSZWdFeHAocGEpLCAnJDFmeXBhZ2UnKTtcXG4gICAgICAgIG5leHR1cmwgPSB1Mi5Ib3N0cyArIHJzICsgY2EgKyBPYmplY3QuVG9QYXJhbXModTIuUGFyYW1zKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChpc0VxdWFsKHUxLlBhcmFtcywgdTIuUGFyYW1zKSkge1xcbiAgICAgICAgICAgIC8vbG9nKHUxLlBhdGgpXFxuICAgICAgICAgICAgLy9sb2codTIuUGF0aClcXG4gICAgICAgICAgICB2YXIgZGYgPSBmaW5kRGlmZmVyZW50SW5kZXgoU3RyaW5nKHUxLlBhdGgpLCBTdHJpbmcodTIuUGF0aCkpO1xcbiAgICAgICAgICAgIC8vbG9nKGRmKVxcbiAgICAgICAgICAgIGlmKGRmLmxlbmd0aD09MSl7XFxuICAgICAgICAgICAgICB2YXIgcmU9ZGZbMF0uaW5kZXhcXG4gICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICB2YXIgZj1kZi5maWx0ZXIoeD0+L1xcXFxkKy8udGVzdCh4LnMyKSk7XFxuICAgICAgICAgICAgICAgdmFyIHJlPWZbMF0uaW5kZXg7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBlcSA9IHJlcGxhY2VDaGFyQXQoU3RyaW5nKHUyLlBhdGgpLCByZSwgJ2Z5cGFnZScpO1xcbiAgICAgICAgICAgIG5leHR1cmwgPSB1Mi5Ib3N0cyArIGVxICsgY2EgKyBPYmplY3QuVG9QYXJhbXModTIuUGFyYW1zKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIGVxID0gU3RyaW5nKHUxLlBhdGgpLnJlcGxhY2UoL1xcXFxkKy8sICdmeXBhZ2UnKTtcXG4gICAgICAgICAgICBuZXh0dXJsID0gdTEuSG9zdHMgKyBlcSArIGNhKyBPYmplY3QuVG9QYXJhbXModTEuUGFyYW1zKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvL2xvZygnbmV4dDonK25leHR1cmwpXFxuICAgIHJldHVybiBuZXh0dXJsO1xcbn1cXG5cXG4vL+aehOW7ulxcbmZ1bmN0aW9uIGNyZWF0ZU5leHRQYWdlKCkge1xcbiAgICBsZXQgc3RhcnRudW0gPSAxO1xcbiAgICB2YXIgb2JqID0gYXJndW1lbnRzWzBdO1xcbiAgICBpZiAodHJ1ZV91cmwgIT0gZ2V0TXlWYXIoJ3BhZ2V1cmwnLCAnJykpIHtcXG4gICAgICAgIGNsZWFyTXlWYXIoJ3BhZ2V1cmwnKTtcXG4gICAgfVxcbiAgICBpZiAocGFnZSA9PSBzdGFydG51bSAmJiBnZXRNeVZhcigncGFnZXVybCcpID09ICcnKSB7XFxuICAgICAgICAvL2xvZygnc3RhcnQnKVxcbiAgICAgICAgdmFyIG5leHQgPSBldmFsKOS4i+S4gOmhtSk7XFxuICAgICAgICAvL2xvZygnbmV4dDonICsgbmV4dClcXG4gICAgICAgIGlmIChuZXh0ICE9ICcnKSB7XFxuICAgICAgICAgICAgdmFyIG54dXJsID0gZ2V0TmV4dFVybCh0cnVlX3VybCwgbmV4dCwgb2JqKTtcXG4gICAgICAgICAgICBwdXRNeVZhcijnirbmgIHmoIforrAsIG54dXJsKTtcXG4gICAgICAgICAgICBwdXRNeVZhcigncGFnZXVybCcsIG54dXJsKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumAmueUqOino+aekOKRoFwiLFwicGF0aFwiOlwibGF6eTFcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJCgnJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICB0cnkge1xcbiAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgICAgICAgICAgdmFyIHVybCA9IGh0bWwudXJsXFxuICAgICAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoL20zdTh8bXA0Ly50ZXN0KHVybCkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgaW5wdXRcXG4gICAgICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIHJldHVybiAndmlkZW86Ly8nICsgaW5wdXRcXG4gICAgfVxcbn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpgJrnlKjop6PmnpDikaFcIixcInBhdGhcIjpcImxhenkyXCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG5cXG4gICAgLy94NXJ1bGXlvLrlipvll4XmjqJcXG5mdW5jdGlvbiB4NXJ1bGUoamlleHVybCwgc3JjdXJsKSB7XFxuICAgIHNob3dMb2FkaW5nKFxcXCLnvZHpobXorr/pl67mo4DntKLkuK3vvIzor7fnqI3lgJkuLi5cXFwiKTtcXG4gICAgdmFyIHZpZGVvID0gJ3dlYlJ1bGU6Ly8nICsgamlleHVybCArICdAJyArICQudG9TdHJpbmcoKHNyY3VybCkgPT4ge1xcbiAgICAgICAgLy9mYmEubG9nKGZiYS5nZXRVcmxzKCkpO1xcbiAgICAgICAgdmFyIHVybHMgPSBfZ2V0VXJscygpO1xcbiAgICAgICAgaWYgKHdpbmRvdy5jb3VudCA9PSBudWxsIHx8IHdpbmRvdy5jb3VudCA9PSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICB3aW5kb3cuY291bnQgPSAwXFxuICAgICAgICB9XFxuICAgICAgICBpZiAod2luZG93LmNvdW50ID49IDIzKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHNyY3VybFxcbiAgICAgICAgfVxcbiAgICAgICAgd2luZG93LmNvdW50ID0gd2luZG93LmNvdW50ICsgMTtcXG4gICAgICAgIGlmICh3aW5kb3cuY291bnQgPiAxICYmIHdpbmRvdy5jb3VudCA8PSAzICYmIHdpbmRvdy5jb3VudCAhPSBudWxsICYmIHdpbmRvdy5jb3VudCAhPSB1bmRlZmluZWQpIHtcXG4gICAgICAgICAgICBpZiAoZG9jdW1lbnQucXVlcnlTZWxlY3RvcignYm9keScpLmlubmVyVGV4dC5zZWFyY2goL+inpuWPkeS6humYsuebl+mTvnzmnKrmjojmnYN85o6l5Y+j6Ziy55uXfOivt+WIsOS4u+ermeingueciy8pICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgIGlmICghc3JjdXJsKSB7XFxuICAgICAgICAgICAgICAgIFxcdGZiYS5sb2coJ+Wwneivlei3s+mYsuebl+mqjOivgeS4gCcpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWY7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIFxcdGZiYS5sb2coJ+Wwneivlei3s+mYsuebl+mqjOivgeS6jCcpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IHNyY3VybFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgIH0gZWxzZSBpZih3aW5kb3cuY291bnQgPiAzICYmIHdpbmRvdy5jb3VudCAhPSBudWxsICYmIHdpbmRvdy5jb3VudCAhPSB1bmRlZmluZWQpe1xcbiAgICAgICAgICAgIGlmICh1cmxzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgZmJhLmhpZGVMb2FkaW5nKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mo4DntKLlpLHotKXvvIzlj6/og73pk77mjqXml6Dms5Xorr/pl67jgIInO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJscy5sZW5ndGggPT0gMSkge1xcbiAgICAgICAgICAgICAgICBmYmEubG9nKCflsJ3or5Xnm7Tpk77kuI5KU09O6Kej5p6QJyk7XFxuICAgICAgICAgICAgICAgIGlmICh1cmxzWzBdLm1hdGNoKC9keWNkblxcXFwtdG9zXFxcXC5wc3RhdHB8XFxcXC5tM3U4fFxcXFwubXA0fFxcXFwuZmx2fG5ldGVhc2VcXFxcLmNvbXx2aWRlb19tcDR8dHlwZVxcXFw9bTN1OHxwdFxcXFw9bTN1OC8pICYmICF1cmxzWzBdLm1hdGNoKC9cXFxcLmh0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgLy9meV9icmlkZ2VfYXBwLmxvZyh1cmxzWzBdKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybHNbMF0uaW5kZXhPZignYmlsaXZpZGVvJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1swXSArICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfSc7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybHNbMF0uaW5kZXhPZigndGl0YW4ubWd0di5jb20nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzWzBdICsgJyNpc1ZpZGVvPXRydWUjJyArICc7e1JlZmVyZXJAd3d3Lm1ndHYuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfSc7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzWzBdXFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goL2R5Y2RuXFxcXC10b3NcXFxcLnBzdGF0cHxcXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHZ8bmV0ZWFzZVxcXFwuY29tfHZpZGVvX21wNHx0eXBlXFxcXD1tM3U4fHB0XFxcXD1tM3U4LykgJiYgIWxvY2F0aW9uLmhyZWYubWF0Y2goL2h0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWY7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZiYS5mZXRjaChsb2NhdGlvbi5ocmVmLCB7fSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIS9cXFxcPG1ldGEvLnRlc3QoaHRtbCkmJiEvXFxcXDxodG1sLy50ZXN0KGh0bWwpKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShodG1sKS51cmw7XFxuICAgICAgICAgICAgICAgICAgICB9ZWxzZXtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2NhdGlvbi5ocmVmfVxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGZiYS5sb2coJ+aXpeW/l+ajgOe0ouesrCcgKyB3aW5kb3cuY291bnQgKyAn5qyhJyk7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdXJscykge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybHNbaV0ubWF0Y2goL2R5Y2RuXFxcXC10b3NcXFxcLnBzdGF0cHxcXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHZ8bmV0ZWFzZVxcXFwuY29tfHZpZGVvX21wNHx0eXBlXFxcXD1tM3U4fHB0XFxcXD1tM3U4LykgJiYgIXVybHNbaV0ubWF0Y2goL2h0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZnlfYnJpZGdlX2FwcC5sb2codXJsc1tpXSlcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsc1tpXS5pbmRleE9mKCdiaWxpdmlkZW8nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1tpXSArICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxzW2ldLmluZGV4T2YoJ3RpdGFuLm1ndHYuY29tJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyAnI2lzVmlkZW89dHJ1ZSMnICsgJzt7UmVmZXJlckB3d3cubWd0di5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybHNbaV0uaW5kZXhPZignanVoYW9rYW4nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1tpXSArICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuanVoYW9rYW4uY2MvfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxzW2ldLmluZGV4T2YoJ29qYmsnKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1tpXSArICc7e1JlZmVyZXJAaHR0cHM6Ly92Lm9qYmtqeC5jb20vfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxzW2ldLmluZGV4T2YoJ3drZmlsZScpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJzt7UmVmZXJlckBodHRwczovL2ZhbnR1YW4ud2tmaWxlLmNvbS99JztcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1tpXSArICcjaXNWaWRlbz10cnVlIydcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gLy9lbmQgZm9yIGlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0sIHNyY3VybCk7XFxuICAgIHJldHVybiB2aWRlb1xcbn1cXG4vL+e7k+adn3g1cnVsZeW8uuWKm+WXheaOolxcbiAgICByZXR1cm4geDVydWxlKGlucHV0LCBpbnB1dCk7XFxufSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+WklumDqOaQnOe0olwiLFwicGF0aFwiOlwidG9vbFwiLFwicnVsZVwiOlwidmFyIHRpdGxlID0gcGFyc2VEb21Gb3JIdG1sKGh0bWwsIOaQnOe0ouagh+etvik7XFxubG9nKHRpdGxlKVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiI0ZGMDAwMFxcXCI+IOiBmuW9seKImjwvZm9udD48L21pZGRsZT4nLFxcbiAgICBwaWNfdXJsOiAnaHR0cDovL2ltYWdlLmNvb2xhcGsuY29tLy9hcGtfbG9nby8yMDIyLzA1MDcvMTQvMF8zODI4XzcyNTRfNjM5QDI2MHgyNjAucG5nLnQucG5nJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgdGl0bGUgKyAnJnJ1bGU96IGa5b2x4oiaJyxcXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiIzFFOTBGRlxcXCI+IOS6keebmOWQmyjmjqjpgIEpPC9mb250PjwvbWlkZGxlPicsXFxuICAgIHBpY191cmw6ICdodHRwOi8vaW1hZ2UuY29vbGFway5jb20vYXBrX2xvZ28vMjAyMS8wNzIxLzEwL2JiNWM2ZDU5YTllMzYxNTk4MzRiM2YxOWZjNzQ5ZGY1LTI4NTEwNy1vXzFmYjNmdGwzZ2NzdDFzZHQxbjNiMW0ydW5qZDE4LXVpZC02NjI0MzVAMzYweDM2MC5wbmcnLFxcbiAgICB1cmw6ICdoaWtlcjovL3NlYXJjaD9zPScgKyB0aXRsZSArICcmcnVsZT3kupHnm5jlkJso5o6o6YCBKScsXFxuICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAmOKAmOKAmeKAmTxiPjxtaWRkbGU+PGZvbnQgY29sb3I9XFxcIiNGRjhDMDBcXFwiPiDpppnmg4XlvbHop4Y8L2ZvbnQ+PC9taWRkbGU+JyxcXG4gICAgcGljX3VybDogJ2h0dHA6Ly9zdGF0aWMueWluZ3lvbmdodWkuY29tL2ljb24vMTI4LzY4NjM0NDcucG5nJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgdGl0bGUgKyAnJnJ1bGU96aaZ5oOF5b2x6KeGJyxcXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGI+PG1pZGRsZT48Zm9udCBjb2xvcj1cXFwiIzAwRkYwMFxcXCI+IOmdkuixhjwvZm9udD48L21pZGRsZT4nLFxcbiAgICBwaWNfdXJsOiAnaHR0cDovL3N0YXRpYy55aW5neW9uZ2h1aS5jb20vaWNvbi8xMjgvNzAwMDQ3OC5wbmcnLFxcbiAgICB1cmw6ICdoaWtlcjovL3NlYXJjaD9zPScgKyB0aXRsZSArICcmcnVsZT3pnZLosYYnLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxufSk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpgJrnlKjnjKvlh73mlbBcIixcInBhdGhcIjpcImxhenlcIixcInJ1bGVcIjpcInZhciBsYXp5ID0gJChcXFwiXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcblxcbiAgICAvL+eMq+WHveaVsFxcbiAgICBmdW5jdGlvbiBtYW9zcyhqeHVybCwgcmVmLCBrZXkpIHtcXG4gICAgICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSk7XFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIHZhciBnZXRWaWRlb0luZm8gPSBmdW5jdGlvbih0ZXh0KSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiBDcnlwdG9KUy5BRVMuZGVjcnlwdCh0ZXh0LCBrZXksIHtcXG4gICAgICAgICAgICAgICAgICAgIGl2OiBpdixcXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOCk7XFxuICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICB2YXIgdG9rZW5fa2V5ID0ga2V5ID09IHVuZGVmaW5lZCA/ICdkdnlZUlFsblBSQ01kUVNlJyA6IGtleTtcXG4gICAgICAgICAgICBpZiAocmVmKSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCwge1xcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICdSZWZlcmVyJzogcmVmXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBodG1sID0gcmVxdWVzdChqeHVybCk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGlmIChodG1sLmluZGV4T2YoJyZidHdhZj0nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBodG1sID0gcmVxdWVzdChqeHVybCArICcmYnR3YWYnICsgaHRtbC5tYXRjaCgvJmJ0d2FmKC4qPylcXFwiLylbMV0sIHtcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAnUmVmZXJlcic6IHJlZlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgdG9rZW5faXYgPSBodG1sLnNwbGl0KCdfdG9rZW4gPSBcXFwiJylbMV0uc3BsaXQoJ1xcXCInKVswXTtcXG4gICAgICAgICAgICB2YXIga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UodG9rZW5fa2V5KTtcXG4gICAgICAgICAgICB2YXIgaXYgPSBDcnlwdG9KUy5lbmMuVXRmOC5wYXJzZSh0b2tlbl9pdik7XFxuICAgICAgICAgICAgLy8gbG9nKFxcXCJpdjpcXFwiK2l2KTtcXG4gICAgICAgICAgICAvLyAgbG9nKGh0bWwpO1xcbiAgICAgICAgICAgIGV2YWwoaHRtbC5tYXRjaCgvdmFyIGNvbmZpZyA9IHtbXFxcXHNcXFxcU10qP30vKVswXSArICcnKTtcXG4gICAgICAgICAgICBpZiAoY29uZmlnLnVybC5zbGljZSgwLCA0KSAhPSAnaHR0cCcpIHtcXG4gICAgICAgICAgICAgICAgLy9jb25maWcudXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KEFFUyhjb25maWcudXJsLCBrZXksIGl2KSk7XFxuICAgICAgICAgICAgICAgIGNvbmZpZy51cmwgPSBDcnlwdG9KUy5BRVMuZGVjcnlwdChjb25maWcudXJsLCBrZXksIHtcXG4gICAgICAgICAgICAgICAgICAgIGl2OiBpdixcXG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IENyeXB0b0pTLnBhZC5Qa2NzN1xcbiAgICAgICAgICAgICAgICB9KS50b1N0cmluZyhDcnlwdG9KUy5lbmMuVXRmOClcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy51cmw7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgcmV0dXJuICcnO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxuZnVuY3Rpb24gYmwodmlwVXJsKSB7XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgaHRtbCA9IHJlcXVlc3QoXFxcImh0dHBzOi8vYmxiZnEuZjMzMjIubmV0L3BsYXllci9hbmFseXNpcy5waHA/dj1cXFwiICsgdmlwVXJsLCB7dGltZW91dDogNTAwMH0pO1xcbiAgICAgICAgdXJsID0gaHRtbC5tYXRjaCgvdmFyIHVybHMgPSBcXFwiKC4qPylcXFwiLylbMV0ucmVwbGFjZSgvXFxcXFxcXFwvZywgXFxcIlxcXCIpO1xcbiAgICAgICAgcmV0dXJuIHVybDtcXG4gICAgfVxcbiAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgcmV0dXJuIFxcXCJcXFwiO1xcbiAgICB9XFxufVxcblxcblxcbiAgICB2YXIgcGxheWVyID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KS5tYXRjaCgvciBwbGF5ZXJfLio/PSguKj8pPC8pWzFdKTtcXG4gICAgdmFyIGZyb20gPSBwbGF5ZXIuZnJvbTtcXG4gICAgdmFyIGpzdXJsID0gcGxheWVyLnVybDtcXG4gICAgaWYgKHBsYXllci5lbmNyeXB0ID09ICcxJykge1xcbiAgICAgICAgdmFyIGpzdXJsID0gdW5lc2NhcGUoanN1cmwpO1xcbiAgICB9IGVsc2UgaWYgKHBsYXllci5lbmNyeXB0ID09ICcyJykge1xcbiAgICAgICAgdmFyIGpzdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKGpzdXJsKSk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBqc3VybFxcbiAgICB9XFxuICAgIFxcbiAgICBpZiAoanN1cmwuc2VhcmNoKC9cXFxcLm0zdTh8XFxcXC5tcDQvKSA+IC0xKSB7XFxuICAgICAgICAgICAgIHJldHVybiBqc3VybFxcbiAgICB9IGVsc2UgaWYgKGpzdXJsLm1hdGNoKC9PME8wTy8pKSAge1xcbiAgICAgICBsZXQgcGxheXVybCA9IG1hb3NzKFxcXCJodHRwczovL2JmcS54ZHlzLnZpcC8/dXJsPVxcXCIgKyBqc3VybCwgZmFsc2UsIFxcXCJBNDJFQUMwQzJCNDA4NDcyXFxcIik7XFxuICAgICAgICAgIC8vICByZXR1cm4gYmwoanN1cmwpKyAnI2lzVmlkZW89dHJ1ZSMnXFxuICAgICAgICByZXR1cm4gcGxheXVybCsgJyNpc1ZpZGVvPXRydWUjJ1xcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmVxdWlyZUNhY2hlKCdodHRwczovL2FnaXQuYWkvbHprMjM1NTkvUHVibGljUnVsZS9yYXcvYnJhbmNoL21hc3Rlci94NXJ1bGUuanMnLCAyNCk7XFxuICAgICAgICByZXR1cm4geDVydWxlKGlucHV0LCBpbnB1dCk7XFxuICAgIH1cXG59KTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumqjOivgeeggVwiLFwicGF0aFwiOlwieXptXCIsXCJydWxlXCI6XCJ3aGlsZcKgKC/ovpPlhaXpqozor4HnoIF857O757uf5a6J5YWo6aqM6K+BLy50ZXN0KGh0bWwpKcKge1xcbsKgwqDCoMKgbGV0wqBoZWFkZXJzwqA9wqB7XFxuwqDCoMKgwqDCoMKgwqDCoFxcXCJVc2VyLUFnZW50XFxcIjrCoE1PQklMRV9VQSxcXG7CoMKgwqDCoMKgwqDCoMKgXFxcIlJlZmVyZXJcXFwiOsKgTVlfVVJMXFxuwqDCoMKgwqB9XFxuwqDCoMKgwqBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2p4aHM/cnVsZT3mqKHmnb/Ct1EnKSkucnVsZSk7XFxuwqDCoMKgwqBldmFsUHJpdmF0ZUpTKHNzeXopO1xcblxcbsKgwqDCoMKgbGV0wqB2Y29kZcKgPcKgZ2V0VkNvZGUyKE1ZX0hPTUXCoCvCoCcvaW5kZXgucGhwL3ZlcmlmeS9pbmRleC5odG1sPycswqBKU09OLnN0cmluZ2lmeShoZWFkZXJzKSzCoCdudW0nKTtcXG7CoMKgwqDCoGZldGNoKE1ZX0hPTUXCoCvCoGh0bWwubWF0Y2goL1xcXFwvaW5kZXgucGhwLio/dmVyaWZ5PS8pWzBdwqArwqBKU09OLnBhcnNlKHZjb2RlKS5yZXQswqB7XFxuwqDCoMKgwqDCoMKgwqDCoGhlYWRlcnM6wqBoZWFkZXJzLFxcbsKgwqDCoMKgwqDCoMKgwqBtZXRob2Q6wqAnUE9TVCdcXG7CoMKgwqDCoH0pXFxuwqDCoMKgwqB2YXLCoHl6wqA9wqBNWV9UWVBFwqA9PcKgJ2hvbWUnwqA/wqB0cnVlX3VybMKgOsKgTVlfVVJMXFxuwqDCoMKgwqBsb2coTVlfVFlQRSlcXG7CoMKgwqDCoGh0bWzCoD3CoHJlcXVlc3QoeXoswqB7XFxuwqDCoMKgwqDCoMKgwqDCoC8vwqDCoMKgaGVhZGVyczrCoGhlYWRlcnNcXG7CoMKgwqDCoH0pXFxufVxcbmlmwqAoL+mikee5geaTjeS9nC8udGVzdChodG1sKSnCoHtcXG7CoMKgwqDCoGQucHVzaCh7XFxuwqDCoMKgwqB0aXRsZTrCoCfnvZHnq5nmkJzntKLml7bpl7Tpl7TpmpQnLFxcbsKgwqDCoMKgZGVzYzrCoFxcXCLkuIvmi4nph43or5VcXFwiXFxufSlcXG5cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpgZPplb/pgJrnlKjop6PmnpAwXCIsXCJwYXRoXCI6XCJsYXp5MFwiLFwicnVsZVwiOlwidmFyIGxhenkgPSAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgIGlmIChpbnB1dC5pbmRleE9mKCdtYWduZXQ6P3h0JykgPT0gLTEpIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgICAgICAgICAgdmFyIHVybCA9IGh0bWwudXJsXFxuICAgICAgICAgICAgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGh0bWwuZW5jcnlwdCA9PSAnMicpIHtcXG4gICAgICAgICAgICAgICAgdXJsID0gdW5lc2NhcGUoYmFzZTY0RGVjb2RlKHVybCkpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoL20zdTh8bXA0Ly50ZXN0KHVybCkpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHVybFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHJlcXVpcmVDYWNoZSgnaGlrZXI6Ly9wYWdlL2dsb2JhbFBhcnNlP3J1bGU96YGT6ZW/5LuT5bqTUHJvJywgMjQpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gbGF6eVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgbG9nKCfmiqXplJnmlLl3ZWLll4XmjqInKTtcXG4gICAgICAgICAgICAvL3JlcXVpcmVDYWNoZSgnaGlrZXI6Ly9wYWdlL2dsb2JhbFBhcnNlP3J1bGU96YGT6ZW/5LuT5bqTUHJvJywgMjQpO1xcbiAgICAgICAgICAgIC8vcmV0dXJuIGxhenlQYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ2aWRlbzovL1xcXCIgKyBpbnB1dFxcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcmV0dXJuIGlucHV0XFxuICAgIH1cXG59KTtcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS6jOe6p+mhtemdouahhuaetlwiLFwicGF0aFwiOlwiZXJcIixcInJ1bGVcIjpcImpzOlxcbi8qdmVyIDIwMjMwNjA1IDEuM1xcbiAqL1xcbmxldCBFcmppID0ge1xcbiAgICBjbG9zZTogZnVuY3Rpb24obGlzdCwgc29ydHMpIHtcXG4gICAgICAgIGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygobGlzdCwgc29ydHMpID0+IHtcXG4gICAgICAgICAgICBsaXN0Lm1hcCh4ID0+IHtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcih4ICsgJ2ZvbGQnKTtcXG4gICAgICAgICAgICAgICAgY2xlYXJNeVZhcih4KTtcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc29ydHM7IGkrKykge1xcbiAgICAgICAgICAgICAgICBjbGVhck15VmFyKCdwbGF5bGlzdF8nICsgaSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSwgbGlzdCwgc29ydHMpKVxcbiAgICB9LFxcbiAgICBzbWFsbDogZnVuY3Rpb24oc3RyLCBjb2xvcikge1xcbiAgICAgICAgcmV0dXJuICfigJjigJjigJnigJk8c21hbGw+PGZvbnQgY29sb3I9XFxcIicgKyAoY29sb3IgfHwgJycpICsgJ1xcXCI+JyArIHN0ciArICc8L2ZvbnQ+PC9zbWFsbD4nO1xcbiAgICB9LFxcbiAgICBcXG5cXG4vL+WjsOaYjlxcbiAgICDlo7DmmI46IGZ1bmN0aW9uKCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdGhpcy5zbWFsbCgn5Lul5LiK5pWw5o2u5p2l5rqQ5LqO572R57uc77yM5aaC5oKo5Zac5qyi77yM6K+35pSv5oyB5a6Y5pa577yBJywgJyNGMDUwNkUnKSxcXG4gICAgICAgICAgICBkZXNjOiB0aGlzLnNtYWxsKCfmraTop4TliJnku4XpmZDlrabkuaDkuqTmtYHkvb/nlKjvvIzor7fkuo7lr7zlhaXlkI4yNOWwj+aXtuWGheWIoOmZpO+8jOS7u+S9lee7hOe7h+aIluS4quS6uuS4jeW+l+S7peS7u+S9leaWueW8j+aWueazleS8oOaSreatpOinhOWImeeahOaVtOS9k+aIlumDqOWIhu+8gScsICdyZWQnKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfSxcXG5cXG4vL+eugOS7i1xcbiAgICBzZXREZXNjOiBmdW5jdGlvbihkZXNjLCBudW0pIHtcXG4gICAgICAgIGRlc2MgPSBkZXNjLmNvbnN0cnVjdG9yID09IEFycmF5ID8gZGVzYy5qb2luKCc8YnI+JykgOiBkZXNjO1xcbiAgICAgICAgaWYgKGRlc2MucmVwbGFjZSgvKDxicj58XFxcXHMrKS9nLCAnJykubGVuZ3RoID09IDApIHtcXG4gICAgICAgICAgICByZXR1cm5cXG4gICAgICAgIH1cXG4gICAgICAgIGNvbnN0IG1hcmsgPSAnZGVzYyc7XFxuICAgICAgICBudW0gPSB0eXBlb2YobnVtKSA9PSAndW5kZWZpbmVkJyA/IDg4IDogbnVtXFxuICAgICAgICBkZXNjID0gZGVzYy5zdGFydHNXaXRoKCfjgIDjgIAnKSA/IGRlc2MgOiAn44CA44CAJyArIGRlc2M7XFxuICAgICAgICBkZXNjID0gZGVzYy5yZXBsYWNlKC8nL2csIFxcXCImIzM5O1xcXCIpXFxuXFxuICAgICAgICBmdW5jdGlvbiBzdWJzdHIoc3RyLCBtYXhMZW5ndGgpIHtcXG4gICAgICAgICAgICBsZXQgbGVuID0gMDtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgICAgICBpZiAoc3RyLmNoYXJDb2RlQXQoaSkgPiAyNTUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxlbiArPSAyO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgbGVuKys7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGxlbiA+IG1heExlbmd0aCkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ci5zbGljZSgwLCBpKSArICcuLi4nO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBzdHI7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgc2Rlc2MgPSBzdWJzdHIoZGVzYywgbnVtKTtcXG4gICAgICAgIHZhciBsYXp5ID0gJChgI25vTG9hZGluZyNgKS5sYXp5UnVsZSgoZGMsIHNkYywgbSkgPT4ge1xcbiAgICAgICAgICAgIHZhciBzaG93ID0gc3RvcmFnZTAuZ2V0SXRlbShtLCAnMCcpO1xcbiAgICAgICAgICAgIHZhciB0aXRsZSA9IGZpbmRJdGVtKCdkZXNjJykudGl0bGU7XFxuICAgICAgICAgICAgdmFyIHJlID0gLyg8XFxcXC9zbWFsbD48YnI+Lio/PikuKy9nO1xcbiAgICAgICAgICAgIHZhciBleHAgPSAn5bGV5byAOic7XFxuICAgICAgICAgICAgdmFyIHJldCA9ICfmlLbotbc6JztcXG4gICAgICAgICAgICBpZiAoc2hvdyA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJldCwgZXhwKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgc2RjICsgJzwvc21hbGw+JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgvKDxcXFxcL3NtYWxsPjxicj48Zm9udCBjb2xvcj1cXFwiKS4qPyhcXFwiPikvLCAnJDEjOEEyQkUyJDIgJykvL+e0q+iJsuaUtui1t+minOiJslxcblxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKG0sICcwJyk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSgnZGVzYycsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKGV4cCwgcmV0KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKHJlLCAnJDEnICsgZGMgKyAnPC9zbWFsbD4nKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIC5yZXBsYWNlKC8oPFxcXFwvc21hbGw+PGJyPjxmb250IGNvbG9yPVxcXCIpLio/KFxcXCI+KS8sICckMSMwMDgwMDAkMicpLy/nu7/oibLlsZXlvIDpopzoibJcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShtLCAnMScpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gYGhpa2VyOi8vZW1wdHlgXFxuICAgICAgICB9LCBkZXNjLCBzZGVzYywgbWFyaylcXG4gICAgICAgIHZhciBzYyA9IHN0b3JhZ2UwLmdldEl0ZW0obWFyaywgJzAnKSA9PSAnMCcgPyAn5bGV5byAOicgOiAn5pS26LW3Oic7XFxuICAgICAgICB2YXIgZGMgPSBzdG9yYWdlMC5nZXRJdGVtKG1hcmssICcwJykgPT0gJzAnID8gc2Rlc2MgOiBkZXNjO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICB0aXRsZTogJycgKyAnPGI+PGZvbnQgY29sb3I9XFxcImN5YW5cXFwiPuKItyDliafmg4XnroDku4tcXHQ8L2ZvbnQ+PC9iPicgKyBcXFwiPHNtYWxsPjxhIHN0eWxlPSd0ZXh0LWRlY29yYXRpb246IG5vbmU7JyBocmVmPSdcXFwiICsgbGF6eSArIFxcXCInPlxcXCIgKyBzYyArICc8L2E+PC9zbWFsbD48YnI+PGZvbnQgY29sb3I9XFxcIiM4QTJCRTJcXFwiPicgKyBgJHtkY31gICsgJzwvc21hbGw+JywvL+e0q+iJsum7mOiupOminOiJslxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICBpZDogJ2Rlc2MnLFxcbiAgICAgICAgICAgICAgICBsaW5lU3BhY2luZzogNixcXG4gICAgICAgICAgICAgICAgdGV4dFNpemU6IDE1LFxcbiAgICAgICAgICAgICAgICBsaW5lVmlzaWJsZTogdHJ1ZSxcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KVxcbiAgICB9LFxcblxcbi8v5rW35oqlXFxuICAgIHNldENvbnRlbnQ6IGZ1bmN0aW9uKG9iaikge1xcbiAgICAgICAgdmFyIGNvbnRlbnRzID0gb2JqLm1haW47XFxuICAgICAgICB2YXIgc29ydE9yZGVyID0gb2JqLnNvcnQ7XFxuICAgICAgICB2YXIgaW1nID0gb2JqLmltZztcXG4gICAgICAgIHZhciB0ZXh0cyA9IGNvbnRlbnRzLm1hcCh4ID0+IHBkZmgoeCwgJ1RleHQnKSk7XFxuICAgICAgICB2YXIgYXJyYXkgPSB0ZXh0cy5zb3J0KChhLCBiKSA9PiB7XFxuICAgICAgICAgICAgY29uc3QgaW5kZXhBID0gc29ydE9yZGVyLmluZGV4T2YoYS5zdWJzdHIoMCwgMikpO1xcbiAgICAgICAgICAgIGNvbnN0IGluZGV4QiA9IHNvcnRPcmRlci5pbmRleE9mKGIuc3Vic3RyKDAsIDIpKTtcXG4gICAgICAgICAgICByZXR1cm4gaW5kZXhBIC0gaW5kZXhCO1xcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciByZWdleCA9IG5ldyBSZWdFeHAoJygnICsgc29ydE9yZGVyLmpvaW4oJ3wnKSArICcpJyk7XFxuICAgICAgICBhcnJheSA9IGFycmF5LmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XFxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QoaXRlbSk7XFxuICAgICAgICB9KTtcXG4gICAgICAgIGFycmF5ID0gYXJyYXkubWFwKHggPT4ge1xcbiAgICAgICAgICAgIHN0ciA9IHg7XFxuICAgICAgICAgICAgaWYgKC8o5a+85ryUfOS4u+a8lHznsbvlnosp77yaLy50ZXN0KHN0cikpIHtcXG4gICAgICAgICAgICAgICAgc3RyID0gc3RyLnNwbGl0KCcvJykubWFwKCh2YWwsIGluZGV4KSA9PiAoaW5kZXggPT09IDAgPyAnJyA6ICcnKSArIHZhbCkuc2xpY2UoMCwgNSkuam9pbignICcpLnJlcGxhY2UoLyAkLywgJycpLnJlcGxhY2UoL1xcXFwoLio/XFxcXCkvZywgJycpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICByZXR1cm4gc3RyXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAvL3RpdGxlOiB0aGlzLnNtYWxsKGFycmF5WzBdICsgJ1xcXFxuJyArIGFycmF5LnNsaWNlKDEsIDIpLmpvaW4oJ1xcXFxuJyksJyNGRjdGMDAnKSwvL+apmOiJslxcbiAgICAgICAgICAgICB0aXRsZTogdGhpcy5zbWFsbChwZGZoKGh0bWwsJy52aWRlby1pbmZvLWF1eCYmVGV4dCcpICwnI0ZGOEMwMCcpLC8v5qmY6ImyXFxuICAgICAgICAgICAgLy9kZXNjOiB0aGlzLnNtYWxsKGFycmF5LnNsaWNlKDMpLmpvaW4oJ1xcXFxuJyksJyNGRkQ3MDAnKSwvL+m7hOiJslxcbiAgICAgICAgICAgICAgZGVzYzogdGhpcy5zbWFsbChhcnJheVswXSArICdcXFxcbicgKyBhcnJheS5zbGljZSgxLCAzKS5qb2luKCdcXFxcbicpLCd5ZWxsb3cnKSwvL+iTneiJslxcbiAgICAgICAgICAgIHBpY191cmw6IGltZyArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgICAgIHVybDogTVlfVVJMLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsXFxuICAgICAgICB9KVxcbiAgICAgICAgaWYgKG9iai5kZXNjICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIHRoaXMuc2V0RGVzYyhvYmouZGVzYyk7XFxuICAgICAgICB9XFxuICAgIH0sXFxuXFxuXFxuLy/nur/ot69cXG4gICAgc2V0VGFiczogZnVuY3Rpb24odGFicywgdmFyaSwgc2hzb3J0KSB7XFxuICAgICAgICBzaHNvcnQgPSBzaHNvcnQgPyBzaHNvcnQgOiAnc2hzb3J0JztcXG4gICAgICAgIHZhciB0aXRsZSA9IChnZXRNeVZhcihzaHNvcnQsICcwJykgPT0gJzEnKSA/ICc8Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICNGRjAwMDBcXFwiPumAhuW6jzwvc3Bhbj48L2I+JyA6ICc8Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMxYWFkMTlcXFwiPuato+W6jzwvc3Bhbj48L2I+J1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdmFyaSArICc6JyArIHRpdGxlLFxcbiAgICAgICAgICAgIGRlc2M6ICflhbEnICsgdGFicy5sZW5ndGggKyAn5p2h57q/6LevJyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHNoc29ydCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgY29uZiA9IGdldE15VmFyKHNoc29ydCwgJzAnKTtcXG4gICAgICAgICAgICAgICAgaWYgKGNvbmYgPT0gJzEnKSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihzaHNvcnQsICcwJyk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcihzaHNvcnQsICcxJyk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5YiH5o2i5o6S5bqP5oiQ5YqfJ1xcbiAgICAgICAgICAgIH0sIHNoc29ydCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLFxcbiAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2NkbjQuaWNvbmZpbmRlci5jb20vZGF0YS9pY29ucy9lbW9qaS0xOC82MS8yLTEyOC5wbmcnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIHZhciDmipjlj6AgPSAn4oCc4oCc4oCd4oCdPGI+J8KgICsgwqAn4pi3Jy5mb250Y29sb3IoXFxcIiNEM0QzRDNcXFwiKTtcXG4gICAgICAgIHZhciDlsZXlvIAgPSAn4oCc4oCc4oCd4oCdPGI+J8KgICsgwqAn4piwJy5mb250Y29sb3IoXFxcIiNGRkE1MDBcXFwiKTtcXG4gICAgICAgIHZhciBmb2xkbmFtZSA9IHZhcmkgKyAnZm9sZCc7XFxuICAgICAgICB2YXIgZm9sZCA9IGdldE15VmFyKGZvbGRuYW1lLCAnMScpO1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogwqBmb2xkID09PSDCoCcwJ8KgID8gwqDCoOaKmOWPoMKgIDogwqDlsZXlvIAsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGZvbGRuYW1lLCBmb2xkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dE15VmFyKGZvbGRuYW1lLCDCoGZvbGTCoCA9PT0gwqAnMSfCoCA/IMKgJzAnwqAgOiDCoCcxJyk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgKGZvbGTCoCA9PT0gwqAnMSfCoCA/IMKgJ+aUtui1tyfCoCA6IMKgJ+WxleW8gCcpO1xcbiAgICAgICAgICAgIH0sIGZvbGRuYW1lLCBmb2xkKVxcbiAgICAgICAgfSlcXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGFicy5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHZhciB1cmwgPSBcXFwiI25vTG9hZGluZyNAbGF6eVJ1bGU9LmpzOnB1dE15VmFyKCdcXFwiICsgdmFyaSArIFxcXCInLCAnXFxcIiArIGkgKyBcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIh+aNouaIkOWKn++8gSc7JyNub0hpc3RvcnkjaGlrZXI6Ly9lbXB0eSdcXFwiO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcih2YXJpLCAnMCcpID09IGkgPyAn4oCc4oCcJyArIHRhYnNbaV0gKyAn4oCd4oCdJyA6IHRhYnNbaV0sXFxuICAgICAgICAgICAgICAgIHVybDogdXJsLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgc2V0TGlzdHM6IGZ1bmN0aW9uKGxpc3RzLCBpbmRleCwgc2hzb3J0KSB7XFxuICAgICAgICBzaHNvcnQgPSBzaHNvcnQgPyBzaHNvcnQgOiAnc2hzb3J0JztcXG4gICAgICAgIHZhciBsaXN0ID0gbGlzdHNbaW5kZXhdO1xcbiAgICAgICAgaWYgKGdldE15VmFyKHNoc29ydCkgPT0gJzEnICYmIGxpc3RzLmxlbmd0aCA+IDApIHtcXG4gICAgICAgICAgICB2YXIgbGlzdCA9IGxpc3RzW2luZGV4XS5yZXZlcnNlKCk7XFxuICAgICAgICB9XFxuICAgICAgICBmb3IgKHZhciBqIGluIGxpc3QpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdFtqXS50aXRsZSxcXG4gICAgICAgICAgICAgICAgdXJsOiBsaXN0W2pdLnVybCxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IGxpc3QubGVuZ3RoID4gMyA/ICd0ZXh0XzQnIDogJ3RleHRfMicsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogbGlzdFtqXS51cmwucmVwbGFjZSgvQGxhenlSdWxlW1xcXFxzXFxcXFNdKy9nLCAnJyksXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSxcXG4gICAgZ2V0VGFiczogZnVuY3Rpb24ocGFyc2UpIHtcXG4gICAgICAgIHZhciB0YWJzID0gW107XFxuICAgICAgICB2YXIgYXJ0cyA9IHBkZmEoaHRtbCwgcGFyc2Uu57q/6LevKTtcXG4gICAgICAgIHZhciDnur/ot6/lkI0gPSBwYXJzZS7nur/ot6/lkI3np7A7XFxuICAgICAgICB2YXIg5pu/5o2i5Ye95pWwID0gJyc7XFxuICAgICAgICBpZiAocGFyc2Uu57q/6Lev5ZCN56ewLmluY2x1ZGVzKCdAQCcpKSB7XFxuICAgICAgICAgICAg57q/6Lev5ZCNID0gcGFyc2Uu57q/6Lev5ZCN56ewLnNwbGl0KCdAQCcpWzBdO1xcbiAgICAgICAgICAgIOabv+aNouWHveaVsCA9IHBhcnNlLue6v+i3r+WQjeensC5zcGxpdCgnQEAnKVsxXTtcXG4gICAgICAgIH1cXG4gICAgICAgIGZvciAodmFyIGkgaW4gYXJ0cykge1xcbiAgICAgICAgICAgIHZhciBsaW5lbmFtZSA9IHBkZmgoYXJ0c1tpXSwg57q/6Lev5ZCNKTtcXG4gICAgICAgICAgICBpZiAo5pu/5o2i5Ye95pWwICE9ICcnKSB7XFxuICAgICAgICAgICAgICAgIGxpbmVuYW1lID0gZXZhbCgnbGluZW5hbWUnICsg5pu/5o2i5Ye95pWwKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdGFicy5wdXNoKGxpbmVuYW1lKTtcXG4gICAgICAgIH1cXG5cXG4gICAgICAgIHJldHVybiB0YWJzO1xcbiAgICB9LFxcbiAgICBnZXRMaXN0czogZnVuY3Rpb24ocGFyc2UpIHtcXG4gICAgICAgIHZhciBsaXN0cyA9IFtdO1xcbiAgICAgICAgdmFyIGNvbnRzID0gcGRmYShodG1sLCBwYXJzZS7pgInpm4YpO1xcbiAgICAgICAgdmFyIOmAiembhuWQjeensCA9IHBhcnNlLumAiembhuWQjeensCA/IHBhcnNlLumAiembhuWQjeensCA6ICdhJiZUZXh0JztcXG4gICAgICAgIHZhciDpgInpm4bpk77mjqUgPSBwYXJzZS7pgInpm4bpk77mjqUgPyBwYXJzZS7pgInpm4bpk77mjqUgOiAnYSYmaHJlZic7XFxuICAgICAgICB2YXIg6Kej5p6QID0gcGFyc2Uu6Kej5p6QID8gcGFyc2Uu6Kej5p6QIDogJyc7XFxuICAgICAgICB2YXIgdGVtcCA9IFtdO1xcbiAgICAgICAgZm9yICh2YXIgaSBpbiBjb250cykge1xcbiAgICAgICAgICAgIGlmIChwYXJzZS7pgInpm4bliJfooaggIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIGxpc3RzLnB1c2gocGRmYShjb250c1tpXSwgcGFyc2Uu6YCJ6ZuG5YiX6KGoKS5tYXAoeCA9PiB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKHgsIOmAiembhuWQjeensCksXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBwZCh4LCDpgInpm4bpk77mjqUpICsg6Kej5p6QLFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgdXJsID0gcGQoY29udHNbaV0sIOmAiembhumTvuaOpSkgKyAnQGxhenlSdWxlPS5idG4tZG93biYmaHJlZic7XFxuICAgICAgICAgICAgICAgIGlmICgh6YCJ6ZuG6ZO+5o6lLmluY2x1ZGVzKCdocmVmJykpIHtcXG4gICAgICAgICAgICAgICAgICAgIHVybCA9IHBkZmgoY29udHNbaV0sIOmAiembhumTvuaOpSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgdGVtcC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGNvbnRzW2ldLCDpgInpm4blkI3np7ApLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiB1cmwgKyDop6PmnpAsXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IOWAkuW6jyA9IHBhcnNlLuWAkuW6jyA/IHBhcnNlLuWAkuW6jyA6IGZhbHNlO1xcbiAgICAgICAgdmFyIHJlc3VsdHMgPSBsaXN0cy5sZW5ndGggPyBsaXN0cyA6IFt0ZW1wXTtcXG4gICAgICAgIGlmICjlgJLluo8pIHtcXG4gICAgICAgICAgICByZXN1bHRzID0gcmVzdWx0cy5tYXAoeCA9PiB4LnJldmVyc2UoKSk7XFxuICAgICAgICB9XFxuICAgICAgICByZXR1cm4gcmVzdWx0cztcXG4gICAgfSxcXG4gICAgZ2V0UGxheWVyczogZnVuY3Rpb24ocGFyc2UpIHtcXG4gICAgICAgIHRoaXMuY2xvc2UocGFyc2UubWFwKHggPT4geC7nsbvlnospLCBwYXJzZS5sZW5ndGgpO1xcbiAgICAgICAgcGFyc2UuZm9yRWFjaCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIHZhciB0YWJzID0gWyfkuLvnur8nXTtcXG4gICAgICAgICAgICBpZiAoaXRlbS7nur/ot68gIT0gdW5kZWZpbmVkKSB7XFxuICAgICAgICAgICAgICAgIHRhYnMgPSB0aGlzLmdldFRhYnMoaXRlbSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHZhciBsaXN0cyA9IHRoaXMuZ2V0TGlzdHMoaXRlbSk7XFxuICAgICAgICAgICAgaWYgKGxpc3RzLnNvbWUoeCA9PiB4Lmxlbmd0aCA+IDApKSB7XFxuICAgICAgICAgICAgICAgIHRoaXMuc2V0VGFicyh0YWJzLCBpdGVtLuexu+WeiywgJ3BsYXlsaXN0XycgKyBpKTtcXG4gICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgaWYgKGdldE15VmFyKGl0ZW0u57G75Z6LICsgJ2ZvbGQnLCAnMScpID09ICcxJykge1xcbiAgICAgICAgICAgICAgICB0aGlzLnNldExpc3RzKGxpc3RzLCBnZXRNeVZhcihpdGVtLuexu+WeiywgJzAnKSwgJ3BsYXlsaXN0XycgKyBpKTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLph4/lrZDkuJPnlKjop6PmnpBcIixcInBhdGhcIjpcImxhenlsXCIsXCJydWxlXCI6XCJ2YXIgbGF6eSA9ICQoJycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQpLm1hdGNoKC9yIHBsYXllcl8uKj89KC4qPyk8LylbMV0pXFxuICAgIHZhciB1cmwgPSBodG1sLnVybFxcbiAgICBpZiAoaHRtbC5lbmNyeXB0ID09ICcxJykge1xcbiAgICAgICAgdXJsID0gdW5lc2NhcGUodXJsKTtcXG4gICAgfSBlbHNlIGlmIChodG1sLmVuY3J5cHQgPT0gJzInKSB7XFxuICAgICAgICB1cmwgPSB1bmVzY2FwZShiYXNlNjREZWNvZGUodXJsKSk7XFxuICAgIH1cXG4gICAgaWYgKC9tM3U4fG1wNHxmbHYvLnRlc3QodXJsKSkge1xcbiAgICAgICBpZiAoL3ZpcHxoZC8udGVzdCh1cmwpKSB7XFxyXFxuICAgICAgICAgICBldmFsUHJpdmF0ZUpTKCdUdVNKZHBuWmFxWEdSdnZPRlJSKzNTN2VaVWplQzFDZmZGYkhob28wZTUrYVo3S2F2OUtaVlpzZmt3S2tVRmY0d3prVHJpbzRqQVJINlp3VFhwUmxIM2tJNDNyV0NUVTRQZFlhbTE1cFBZaXE1Y1cwSDZnVVhoSlc3dG1KdHlMS2RqZTFLYXBCSUd2V2FYSTBXbW9Ib01FRkJWL01BaWNtUGdweUFKWmpzYzVFbXZkaDFuNzJXUFBpeWhZTkNvTW5aOUpwUDZhRXNXUUVtUU1jQWpQeGdzNlVNdnNPL1BPdzVDY3I3OXNKemljc3QvTGwzSU9qNU0rUHZxS3JUZDYxNDdWR1BFenRqc1VlRXVkQVN6VGNuKzk1QzlWZzF1d1V2ZDl6MHc1cXNQYm9RaDVvWmhUeXM0UlFFekJHSXF1bFFNQUFRWTRJRmthbldYOTVFSU5aRFg1MG1BaU9TR3lJZDA2SHNwckFlbC9maDd3eU1YZG1ldStTMTVYbmNPN1V1dWpNT21HZ1NBRU4vU3NjMmV6a3hsR3ZwZHloYmw0cDREYVF1Zy9ucmdzd2haajc1L001M3NLWVgyelJnT1NUN0NNalYvK3BQSmQxS1A5MzR1dS9Wc0JRVUc2OW1XTitLYUZXaEtud0JQaFY5cWRxR3ovTFNKbkZ4SXZROGtCeCcpXFxuICAgICAgICAgICByZXR1cm4gdSArIFxcXCI/dXJsPVxcXCIgKyBiYXNlNjRFbmNvZGUodXJsKSArIFxcXCIjLm0zdThcXFwiO1xcclxcbiAgICAgICAgfVxcclxcbiAgICAgICAgcmV0dXJuIHVybFxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgc2hvd0xvYWRpbmcoXFxcIuW3suW8gOWQr+W8uuWKm+WXheaOou+8jOivt+eojeWAmVxcXCIpXFxubGV0IHBsYXlVcmwgPSBpbnB1dFxcbmxldCByZXN1bHQ9JChwbGF5VXJsKS54NUxhenkoKCkgPT4ge1xcbiAgICB2YXIgdXJscyA9IF9nZXRVcmxzKClcXG4gICAgZm9yICh2YXIgaSBpbiB1cmxzKSB7XFxuICAgICAgICAgIGlmICghdXJsc1tpXS5tYXRjaCgvdXJsPS8pJiZ1cmxzW2ldLm1hdGNoKC9tcDR8bTN1OHxvYmovKSkge1xcblxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKHVybHNbaV0pXFxuICAgICAgICAgICAgcmV0dXJuIGZ5X2JyaWRnZV9hcHAuY2xlYXJNM3U4QWQodXJsc1tpXSkrJyNpc1ZpZGVvPXRydWUjJ1xcbiAgICAgICAgfVxcbiAgICAgIH1cXG4gICAgIH0pO1xcbiAgIHJldHVybiByZXN1bHRcXG4gIH1cXG59KVwifV0iLCJpY29uIjoiaHR0cHM6Ly94bXZvZDUyMC5jb20vdXBsb2FkL214cHJvY21zLzIwMjMwNTE1LTEvYjQ2N2E5NmEyMjJlNjg5N2EzODJiNzQ0MjgxMDdjNzYucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment