Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@光影剧场@eyJmaXJzdEhlYWRlciI6ImNsYXNzIiwibGFzdF9jaGFwdGVyX3J1bGUiOiIiLCJ0aXRsZSI6IuWFieW9seWJp+WcuiIsImF1dGhvciI6IumBk+mYu+S4lOWPsyIsInVybCI6Imhpa2VyOi8vZW1wdHkiLCJ2ZXJzaW9uIjoyMDIyMDIxMiwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJ2aWRlbyIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jb3JlRnVuY3Rpb25zJykpLnJ1bGUpO1xudmFyIGQgPSBbXTtcbmQucHVzaCh7XG4gICAgZGVzYzogJzE4MCYmbGlzdCcsXG4gICAgdXJsOiBsb2FkRmlsZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy9ob21lcGFnZS5odG1sJywgJ2h0dHA6Ly80OS4yMzIuMTkuMjI4L2hpa2VyL2hvbWVwYWdlLmh0bWwnKSxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xufSk7XG5kLnB1c2goe1xuICAgIHVybDogXCInaGlrZXI6Ly9zZWFyY2g/cz0nK2lucHV0KycmcnVsZT3lhYnlvbHliaflnLonXCIsXG4gICAgY29sX3R5cGU6ICdpbnB1dCcsXG4gICAgdGl0bGU6ICfmkJzntKInLFxuICAgIGV4dHJhOiB7XG4gICAgICAgIG9uQ2hhbmdlOiBcInB1dFZhcignbXktc2VhcmNoJyxpbnB1dClcIlxuICAgIH1cbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+W9seinhuWkp+WFqCcsXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2FsbE1vdmllcz9wYWdlPWZ5cGFnZSNub0hpc3RvcnkjJyxcbiAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvYWxsTW92aWUucG5nJywgJ2h0dHBzOi8vczQuYXgxeC5jb20vMjAyMi8wMi8xMS9IVXFrdlQucG5nJyksXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnXG59KTtcbmQucHVzaCh7XG4gICAgdGl0bGU6ICfpmaLnur/ng63mmKAnLFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9ub3dwbGF5aW5nI25vSGlzdG9yeSMnLFxuICAgIHBpY191cmw6IGxvYWRJbWFnZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy9ub3dQbGF5aW5nLnBuZycsICdodHRwczovL3M0LmF4MXguY29tLzIwMjIvMDIvMTEvSFVxVnJGLnBuZycpLFxuICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80J1xufSk7XG5kLnB1c2goe1xuICAgIHRpdGxlOiAn5Yib5oSP55+t54mHJyxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc29ydE1vdmllcyNub0hpc3RvcnkjJyxcbiAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvc29ydE1vdmllcy5wbmcnLCAnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzExL0hVYkxnZi5wbmcnKSxcbiAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCdcbn0pO1xuZC5wdXNoKHtcbiAgICB0aXRsZTogJ+WliOmjnui1hOa6kCcsXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ldGZsaXgjbm9IaXN0b3J5IycsXG4gICAgcGljX3VybDogbG9hZEltYWdlcygnaGlrZXI6Ly9maWxlcy9jYWNoZS9neWpjL3R2TGl2ZS5wbmcnLCAnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzExL0hVcUVLVS5wbmcnKSxcbiAgICBleHRyYToge1xuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5L2luZGV4LnBocC92b2Qvc2hvdy9pZC8jY2xhc3MjL3BhZ2UvZnlwYWdlLmh0bWwjbm9IaXN0b3J5IydcbiAgICB9LFxuICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80J1xufSk7XG5hZGRMaW5lKGQpO1xudmFyIGNvbGxlY3Rpb24gPSBKU09OLnBhcnNlKGZldGNoKCdoaWtlcjovL2NvbGxlY3Rpb24nKSk7XG52YXIgbmV3Q29sbGVjdGlvbiA9IFtdO1xuY29sbGVjdGlvbi5tYXAoKGl0ZW0pID0+IHtcbiAgICB0cnkge1xuICAgICAgICBpZiAoaXRlbS5tSVRpdGxlICE9ICfnvZHpobXmtY/op4gnICYmIEpTT04ucGFyc2UoaXRlbS5wYXJhbXMpLnRpdGxlID09IE1ZX1JVTEUudGl0bGUmJml0ZW0uY1VybCA9PSAnaGlrZXI6Ly9wYWdlL3NvdXJjZXMjaW1tZXJzaXZlVGhlbWUjJykge1xuICAgICAgICAgICAgICAgIG5ld0NvbGxlY3Rpb24ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHt9XG59KTtcbm5ld0NvbGxlY3Rpb24ubWFwKChpdGVtKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLm1UaXRsZSxcbiAgICAgICAgICAgIHBpY191cmw6IGl0ZW0ucGljVXJsLFxuICAgICAgICAgICAgdXJsOiBpdGVtLmNVcmwsXG4gICAgICAgICAgICBleHRyYTogaXRlbS5wYXJhbXMgIT0gbnVsbCA/IEpTT04ucGFyc2UoaXRlbS5wYXJhbXMpLnBhcmFtcyA6IHt9LFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xuICAgICAgICB9KTtcbiAgICB9IGNhdGNoIChlKSB7fVxufSk7XG5pZiAobmV3Q29sbGVjdGlvbi5sZW5ndGggPCA2KSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAoNiAtIG5ld0NvbGxlY3Rpb24ubGVuZ3RoKTsgaSsrKSB7XG4gICAgICAgIGQucHVzaCh7XG4gICAgICAgICAgICB0aXRsZTogJ+iZmuS9jeS7peW+hScsXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcbiAgICAgICAgICAgIHBpY191cmw6IGxvYWRJbWFnZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy9jb3Zlci5qcGcnLCAnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzEwL0hOQ1c4Si5qcGcnKSxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcbiAgICAgICAgfSk7XG4gICAgfVxufVxuYWRkTGluZShkKTtcbmFkZEJpZ19ibGFua19ibG9jayhkKTtcbnNldFJlc3VsdChkKTsiLCJzZWFyY2hfdXJsIjoiaGlrZXI6Ly9lbXB0eS9hcGkvdjIvc2VhcmNoL3N1YmplY3RzP3E9KiomdHlwZT1tb3ZpZSZzdGFydD1meXBhZ2VALTFAKjIwQCZjb3VudD0yMCIsImdyb3VwIjoi4pGh5b2x6KeGIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jb3JlRnVuY3Rpb25zJykpLnJ1bGUpO1xuc2V0UmVzdWx0KGdldERvdWJhblJlcyhNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eScsICdodHRwczovL2Zyb2RvLmRvdWJhbi5jb20nKSkuaXRlbXMubWFwKChpdGVtKSA9PiB7XG4gICAgaWYgKGl0ZW0udGFyZ2V0X3R5cGUgPT0gJ3R2JyB8fCBpdGVtLnRhcmdldF90eXBlID09ICdtb3ZpZScpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRhcmdldC50aXRsZSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGl0ZW0udGFyZ2V0LnJhdGluZyA9PSBudWxsID8gKGl0ZW0udGFyZ2V0Lm51bGxfcmF0aW5nX3JlYXNvbiArICdcXG4nICsgaXRlbS50YXJnZXQuY2FyZF9zdWJ0aXRsZSkgOiAoc3RhcihpdGVtLnRhcmdldC5yYXRpbmcudmFsdWUpICsgJ1xcbicgKyBpdGVtLnRhcmdldC5jYXJkX3N1YnRpdGxlKSxcbiAgICAgICAgICAgIGRlc2M6ICfkuIrmmKDlubTku73vvJonICsgaXRlbS50YXJnZXQueWVhcixcbiAgICAgICAgICAgIHBpY191cmw6IGl0ZW0udGFyZ2V0LmNvdmVyX3VybCArICdAUmVmZXJlcj1odHRwczovL20uZG91YmFuLmNvbS8nLFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL21vdmllRGV0YWlsI25vSGlzdG9yeSMjaW1tZXJzaXZlVGhlbWUjJyxcbiAgICAgICAgICAgIGV4dHJhOiB7XG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW0udGFyZ2V0LmlkLFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRhcmdldC50aXRsZSxcbiAgICAgICAgICAgICAgICB0YXJnZXRfdHlwZTogaXRlbS50YXJnZXRfdHlwZVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufSkpOyIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmoLjlv4Plh73mlbBcIixcInBhdGhcIjpcImNvcmVGdW5jdGlvbnNcIixcInJ1bGVcIjpcImZ1bmN0aW9uIHBhZ2VGdW5jdGlvbih1cmwpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKHJlcXVlc3QodXJsKSkucnVsZSk7XFxufTtcXG5cXG5mdW5jdGlvbiBsb2FkRmlsZXMobG9jYWxQb3NpdGlvbiwgd2ViUG9zaXRpb24pIHtcXG4gICAgaWYgKCFmaWxlRXhpc3QobG9jYWxQb3NpdGlvbikpIHtcXG4gICAgICAgIHdyaXRlRmlsZShsb2NhbFBvc2l0aW9uLCByZXF1ZXN0KHdlYlBvc2l0aW9uKSk7XFxuICAgIH07XFxuICAgIHJldHVybiBnZXRQYXRoKGxvY2FsUG9zaXRpb24pO1xcbn07XFxuXFxuZnVuY3Rpb24gbG9hZEltYWdlcyhsb2NhbFBvc2l0aW9uLCB3ZWJQb3NpdGlvbikge1xcbiAgICBpZiAoIWZpbGVFeGlzdChsb2NhbFBvc2l0aW9uKSkge1xcbiAgICAgICAgc2F2ZUltYWdlKHdlYlBvc2l0aW9uLCBsb2NhbFBvc2l0aW9uKTtcXG4gICAgfTtcXG4gICAgcmV0dXJuIGdldFBhdGgobG9jYWxQb3NpdGlvbik7XFxufTtcXG5cXG5mdW5jdGlvbiBhZGRMaW5lKGFycmF5KSB7XFxuICAgIHJldHVybiBhcnJheS5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZSdcXG4gICAgfSk7XFxufTtcXG5cXG5mdW5jdGlvbiBhZGRMaW5lX2JsYW5rKGFycmF5KSB7XFxuICAgIHJldHVybiBhcnJheS5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxufTtcXG5cXG5mdW5jdGlvbiBhZGRMb25nX3RleHQoYXJyYXkpIHtcXG4gICAgcmV0dXJuIGFycmF5LnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdsb25nX3RleHQnXFxuICAgIH0pO1xcbn07XFxuXFxuZnVuY3Rpb24gYWRkQmlnX2JsYW5rX2Jsb2NrKGFycmF5KSB7XFxuICAgIHJldHVybiBhcnJheS5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG59O1xcblxcbmZ1bmN0aW9uIGJpZ0h0bWwodGV4dCkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxiaWc+JyArIHRleHQgKyAnPC9iaWc+JztcXG59O1xcblxcbmZ1bmN0aW9uIHNtYWxsSHRtbCh0ZXh0KSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHNtYWxsPicgKyB0ZXh0ICsgJzwvc21hbGw+JztcXG59O1xcblxcbmZ1bmN0aW9uIHN0cm9uZ0h0bWwodGV4dCkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+JyArIHRleHQgKyAnPC9zdHJvbmc+JztcXG59O1xcblxcbmZ1bmN0aW9uIGNvbG9ySHRtbChjb2xvciwgdGV4dCkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPVxcXCInICsgY29sb3IgKyAnXFxcIj4nICsgdGV4dCArICc8L2ZvbnQ+JztcXG59O1xcblxcbmZ1bmN0aW9uIGdldERvdWJhblJlcyh1cmwpIHtcXG4gICAgaWYgKHVybC5pbmRleE9mKCdhcGlrZXknKSA9PSAtMSkge1xcbiAgICAgICAgdXJsICs9ICh1cmwuaW5kZXhPZignPycpID09IC0xID8gJz8nIDogJyYnKSArIFxcXCJhcGlrZXk9MGRhZDU1MWVjMGY4NGVkMDI5MDdmZjVjNDJlOGVjNzBcXFwiXFxuICAgIH1cXG4gICAgbGV0IHMgPSBmZXRjaCh1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJhcGktY2xpZW50LzEgY29tLmRvdWJhbi5mcm9kby83LjIwLjAuYmV0YTIoMjMxKSBBbmRyb2lkLzMwIHBsYXRmb3JtL21vYmlsZVxcXCJcXG4gICAgICAgIH0sXFxuICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICB9KTtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2Uocyk7XFxufVxcblxcbmZ1bmN0aW9uIGdldFhpbnBpYW5jaGFuZ1Jlcyh1cmwpIHtcXG4gICAgcmV0dXJuIEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJOZXdTdHVkaW9zLzEuOS4xIChjb20ueGlucGlhbmNoYW5nLm5ld3N0dWRpb3M7IGJ1aWxkOjc4NjsgQW5kcm9pZCAxMSlcXFwiLFxcbiAgICAgICAgICAgIFxcXCJEZXZpY2UtSWRcXFwiOiBcXFwiNTllNGMwMDBjZTBiMzcyYTg1OGRhNTM5M2E5YmIxNmVcXFwiXFxuICAgICAgICB9XFxuICAgIH0pKTtcXG59XFxuXFxuZnVuY3Rpb24gc3RhcihudW1iZXIpIHtcXG4gICAgdmFyIHRleHQgPSAnJztcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBNYXRoLmNlaWwobnVtYmVyIC8gMik7IGkrKykge1xcbiAgICAgICAgdmFyIHRleHQgPSB0ZXh0ICsgJ+KYhSdcXG4gICAgfVxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDUgLSBNYXRoLmNlaWwobnVtYmVyIC8gMik7IGkrKykge1xcbiAgICAgICAgdmFyIHRleHQgPSB0ZXh0ICsgJ+KYhidcXG4gICAgfVxcbiAgICByZXR1cm4gdGV4dDtcXG59O1xcbi8veDVydWxl5by65Yqb5ZeF5o6iXFxuZnVuY3Rpb24geDVydWxlKGxpbmtzLCBzcmN1cmwpIHtcXG4gICAgc2hvd0xvYWRpbmcoXFxcIuW8uuWKm+WXheaOouS4re+8jOivt+eojeetie+8gVxcXCIpO1xcbiAgICB2YXIgdmlkZW8gPSAnd2ViUnVsZTovLycgKyBsaW5rcyArICdAJyArICQudG9TdHJpbmcoKHNyY3VybCkgPT4ge1xcbiAgICAgICAgLy9mYmEubG9nKGZiYS5nZXRVcmxzKCkpO1xcbiAgICAgICAgdmFyIHVybHMgPSBfZ2V0VXJscygpO1xcbiAgICAgICAgaWYgKHdpbmRvdy5jb3VudCA9PSBudWxsIHx8IHdpbmRvdy5jb3VudCA9PSAndW5kZWZpbmVkJykge1xcbiAgICAgICAgICAgIGZiYS5sb2coJ+e9kemhteiuv+mXruW8gOWniycpO1xcbiAgICAgICAgICAgIHdpbmRvdy5jb3VudCA9IDBcXG4gICAgICAgIH1cXG4gICAgICAgIGlmICh3aW5kb3cuY291bnQgPj0gMjMpIHtcXG4gICAgICAgICAgICByZXR1cm4gc3JjdXJsXFxuICAgICAgICB9XFxuICAgICAgICB3aW5kb3cuY291bnQgPSB3aW5kb3cuY291bnQgKyAxO1xcbiAgICAgICAgaWYgKHdpbmRvdy5jb3VudCA+IDEgJiYgd2luZG93LmNvdW50IDw9IDMgJiYgd2luZG93LmNvdW50ICE9IG51bGwgJiYgd2luZG93LmNvdW50ICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIGlmIChkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdib2R5JykuaW5uZXJUZXh0LnNlYXJjaCgv6Kem5Y+R5LqG6Ziy55uX6ZO+fOacquaOiOadg3zmjqXlj6PpmLLnm5cvKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICBpZiAod2luZG93LmNvdW50ID09IDIpIHtcXG4gICAgICAgICAgICAgICAgICAgIGZiYS5sb2coJ+Wwneivlei3s+mYsuebl+mqjOivgeS4gCcpO1xcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24uaHJlZiA9IGxvY2F0aW9uLmhyZWY7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBmYmEubG9nKCflsJ3or5Xot7PpmLLnm5fpqozor4HkuownKTtcXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmhyZWYgPSBzcmN1cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH07XFxuICAgICAgICB9IGVsc2UgaWYgKHdpbmRvdy5jb3VudCA+IDMgJiYgd2luZG93LmNvdW50ICE9IG51bGwgJiYgd2luZG93LmNvdW50ICE9IHVuZGVmaW5lZCkge1xcbiAgICAgICAgICAgIGlmICh1cmxzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgZmJhLmhpZGVMb2FkaW5nKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/orr/pl67lpLHotKXvvIzlj6/og73pk77mjqXlt7LlpLHmlYjjgIInO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodXJscy5sZW5ndGggPT0gMSkge1xcbiAgICAgICAgICAgICAgICBmYmEubG9nKCflsJ3or5XmiZPlvIDnm7Tpk77kuI5KU09O6Kej5p6QJyk7XFxuICAgICAgICAgICAgICAgIGlmICh1cmxzWzBdLm1hdGNoKC9keWNkblxcXFwtdG9zXFxcXC5wc3RhdHB8XFxcXC5tM3U4fFxcXFwubXA0fFxcXFwuZmx2fG5ldGVhc2VcXFxcLmNvbXx2aWRlb19tcDR8dHlwZVxcXFw9bTN1OC8pICYmICF1cmxzWzBdLm1hdGNoKC9cXFxcLmh0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgLy9meV9icmlkZ2VfYXBwLmxvZyh1cmxzWzBdKVxcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybHNbMF0uaW5kZXhPZignYmlsaXZpZGVvJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1swXSArICc7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfSc7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVybHNbMF0uaW5kZXhPZigndGl0YW4ubWd0di5jb20nKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzWzBdICsgJyNpc1ZpZGVvPXRydWUjJyArICc7e1JlZmVyZXJAd3d3Lm1ndHYuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfSc7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzWzBdXFxuICAgICAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLmhyZWYubWF0Y2goL2R5Y2RuXFxcXC10b3NcXFxcLnBzdGF0cHxcXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHZ8bmV0ZWFzZVxcXFwuY29tfHZpZGVvX21wNHx0eXBlXFxcXD1tM3U4LykgJiYgIWxvY2F0aW9uLmhyZWYubWF0Y2goL2h0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvY2F0aW9uLmhyZWY7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgaHRtbCA9IGZiYS5mZXRjaChsb2NhdGlvbi5ocmVmLCB7fSk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoIS9cXFxcPC8udGVzdChodG1sKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGh0bWwpLnVybDtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmxvZyhsb2NhdGlvbi5ocmVmKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9O1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIGZiYS5sb2coJ+e9kemhteWKoOi9veaXpeW/l+ajgOe0oicgKyB3aW5kb3cuY291bnQgKyAnJyk7XFxuICAgICAgICAgICAgICAgIGZvciAodmFyIGkgaW4gdXJscykge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHVybHNbaV0ubWF0Y2goL21pdWVkXFxcXC5jb21cXFxcL20zfGR5Y2RuXFxcXC10b3NcXFxcLnBzdGF0cHxcXFxcLm0zdTh8XFxcXC5tcDR8XFxcXC5mbHZ8bmV0ZWFzZVxcXFwuY29tfHZpZGVvX21wNHx0eXBlXFxcXD1tM3U4LykgJiYgIXVybHNbaV0ubWF0Y2goL2h0bWx8bTN1OFxcXFwudHZ8XFxcXCZuZXh0fGFjXFxcXD1kbXxcXFxcPWh0dHB8aHR0cHNcXFxcOlxcXFwvXFxcXC9bXFxcXGRdXFxcXC5tM3U4fFxcXFw/dXJsXFxcXD1cXFxcL20zdTgvKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAubG9nKHVybHNbaV0pXFxuICAgICAgICAgICAgICAgICAgICAgICAgZmJhLmhpZGVMb2FkaW5nKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybHNbaV0uaW5kZXhPZignYmlsaXZpZGVvJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyAnO3tSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbSYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH0nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsc1tpXS5pbmRleE9mKCd0aXRhbi5tZ3R2LmNvbScpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1cmxzW2ldICsgJyNpc1ZpZGVvPXRydWUjJyArICc7e1JlZmVyZXJAd3d3Lm1ndHYuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh1cmxzW2ldLmluZGV4T2YoJ2p1aGFva2FuJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyAnO3tSZWZlcmVyQGh0dHBzOi8vd3d3Lmp1aGFva2FuLmNjL30nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsc1tpXS5pbmRleE9mKCdvamJrJykgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV0gKyAnO3tSZWZlcmVyQGh0dHBzOi8vdi5vamJranguY29tL30nO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXJsc1tpXS5pbmRleE9mKCd3a2ZpbGUnKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdXJsc1tpXSArICc7e1JlZmVyZXJAaHR0cHM6Ly9mYW50dWFuLndrZmlsZS5jb20vfSc7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHVybHNbaV1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0gLy9lbmQgZm9yIGlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0sIHNyY3VybCk7XFxuICAgIHJldHVybiB2aWRlb1xcbn1cXG4vL+e7k+adn3g1cnVsZeW8uuWKm+WXheaOolxcbi8v57uT5p2f6YCa55So6Kej5p6QXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlvbHniYfor6bmg4VcIixcInBhdGhcIjpcIm1vdmllRGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5pZiAoZ2V0SXRlbSgnbW92aWVEZXRhaWwnLCAnZmFsc2UnKSA9PSAnZmFsc2UnKSB7XFxuICAgIGNvbmZpcm0oe1xcbiAgICAgICAgdGl0bGU6ICfmuKnppqjmj5DnpLonLFxcbiAgICAgICAgY29udGVudDogJ+eCueWHu+WwgemdouWNs+WPr+i/m+WFpei/veWJp+mhtemdou+8gScsXFxuICAgICAgICBjb25maXJtOiAnc2V0SXRlbShcXFwibW92aWVEZXRhaWxcXFwiLCBcXFwidHJ1ZVxcXCIpJyxcXG4gICAgICAgIGNhbmNlbDogJ3NldEl0ZW0oXFxcIm1vdmllRGV0YWlsXFxcIiwgXFxcImZhbHNlXFxcIiknXFxuICAgIH0pXFxufVxcbnZhciBkID0gW107XFxuc2V0UGFnZVRpdGxlKE1ZX1BBUkFNUy50aXRsZSk7XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jb3JlRnVuY3Rpb25zJykpLnJ1bGUpO1xcbnZhciBqc29uID0gZ2V0RG91YmFuUmVzKCdodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyLycgKyBNWV9QQVJBTVMudGFyZ2V0X3R5cGUgKyAnLycgKyBNWV9QQVJBTVMuaWQgKyAnP2V2ZW50X3NvdXJjZT1zZWFyY2gnKTtcXG5zZXRMYXN0Q2hhcHRlclJ1bGUoJ2pzOicgKyAkLnRvU3RyaW5nKHBhcmFtID0+IHtcXG4gICAgc2V0UmVzdWx0KHBhcmFtKVxcbn0sIGpzb24uZXBpc29kZXNfaW5mbykpXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGpzb24udGl0bGUgKyAnXFxcXG4nICsgc21hbGxIdG1sKCfkuIrmmKDml7bpl7TvvJonICsganNvbi5wdWJkYXRlKSxcXG4gICAgZGVzYzoganNvbi5jYXJkX3N1YnRpdGxlLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc291cmNlcyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBwaWNfdXJsOiBqc29uLnBpYy5sYXJnZSArICdAUmVmZXJlcj1odHRwczovL20uZG91YmFuLmNvbS8nLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IE1ZX1BBUkFNUy5pZCxcXG4gICAgICAgIHRpdGxlOiBNWV9QQVJBTVMudGl0bGUsXFxuICAgICAgICBlcGlzb2Rlc19pbmZvOiBqc29uLmVwaXNvZGVzX2luZm8sXFxuICAgICAgICBjb3ZlcjoganNvbi5waWMubGFyZ2UgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgIGR1cmF0aW9uczoganNvbi5kdXJhdGlvbnMsXFxuICAgICAgICB0eXBlOiBNWV9QQVJBTVMudGFyZ2V0X3R5cGVcXG4gICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5ryU6IGM5ZGYJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3dvcmtlcnMjbm9IaXN0b3J5IycsXFxuICAgIHBpY191cmw6IGxvYWRJbWFnZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy93b3JrZXJzLnBuZycsJ2h0dHBzOi8vczQuYXgxeC5jb20vMjAyMi8wMi8xMS9IVXE5NW4ucG5nJyksXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogTVlfUEFSQU1TLmlkLFxcbiAgICAgICAgdHlwZTogTVlfUEFSQU1TLnRhcmdldF90eXBlXFxuICAgIH0sXFxuICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80J1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn5Ymn54WnJyxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3Bob3RvcyNub0hpc3RvcnkjJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkvYXBpL3YyLycgKyBNWV9QQVJBTVMudGFyZ2V0X3R5cGUgKyAnLycgKyBNWV9QQVJBTVMuaWQgKyAnL3Bob3Rvcz9zdGFydD1meXBhZ2UmY291bnQ9NTAnLFxcbiAgICAgICAgY291bnQ6IDUwLFxcbiAgICAgICAgdGl0bGU6ICflhajpg6jliafnhacnXFxuICAgIH0sXFxuICAgIHBpY191cmw6IGxvYWRJbWFnZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy9waG90b3MucG5nJywnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzExL0hVcXBVcy5wbmcnKSxcXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICflvbHor4QnLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2UvcmV2aWV3cyNub0hpc3RvcnkjJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkvYXBpL3YyLycgKyBNWV9QQVJBTVMudGFyZ2V0X3R5cGUgKyAnLycgKyBNWV9QQVJBTVMuaWQgKyAnL3Jldmlld3M/cnR5cGU9cmV2aWV3JnN0YXJ0PWZ5cGFnZSZjb3VudD0yMCZ2ZXJzaW9uPTAmb3JkZXJfYnk9J1xcbiAgICB9LFxcbiAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvcmV2aWV3cy5wbmcnLCdodHRwczovL3M0LmF4MXguY29tLzIwMjIvMDIvMTEvSFViT3Y4LnBuZycpLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+efreivhCcsXFxuICAgIHVybDogJ2hpa2VyOi8vcGFnZS9pbnRlcmVzdHMjbm9IaXN0b3J5IycsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICB1cmw6ICdodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyLycgKyBNWV9QQVJBTVMudGFyZ2V0X3R5cGUgKyAnLycgKyBNWV9QQVJBTVMuaWQgKyAnL2ludGVyZXN0cz9zdGFydD1meXBhZ2UmY291bnQ9MzAmc3RhdHVzPWRvbmUmb3JkZXJfYnk9J1xcbiAgICB9LFxcbiAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvaW50ZXJlc3RzLnBuZycsJ2h0dHBzOi8vczQuYXgxeC5jb20vMjAyMi8wMi8xMS9IVXFQQ3EucG5nJyksXFxuICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80J1xcbn0pO1xcbmFkZExpbmVfYmxhbmsoZCk7XFxuaWYgKGpzb24ucmF0aW5nICE9IG51bGwpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBiaWdIdG1sKHN0cm9uZ0h0bWwoJ+ixhueTo+ivhOWIhsKuXFxcXG4nKSArIGNvbG9ySHRtbCgnI2ZmYWMyZCcsIHN0YXIoanNvbi5yYXRpbmcudmFsdWUpKSkgKyBzdHJvbmdIdG1sKCdcXFxcdCcgKyBqc29uLnJhdGluZy52YWx1ZSArICfliIYnKSxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHN0cm9uZ0h0bWwoJ+aaguaXoOivhOWIhicpLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5hZGRMaW5lX2JsYW5rKGQpO1xcbmlmIChqc29uLnRyYWlsZXIgIT0gbnVsbCkge1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHN0cm9uZ0h0bWwoJ+mihOWRiuiKsee1ricpLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGpzb24udHJhaWxlci50aXRsZSxcXG4gICAgICAgIHBpY191cmw6IGpzb24udHJhaWxlci5jb3Zlcl91cmwsXFxuICAgICAgICB1cmw6IGpzb24udHJhaWxlci52aWRlb191cmwsXFxuICAgICAgICBkZXNjOiAn6aKE5ZGK54mHJyxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+abtOWkmumihOWRiuiKsee1ricsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvdHJhaWxlciNub0hpc3RvcnkjJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9tb3ZpZS5kb3ViYW4uY29tL3N1YmplY3QvJyArIE1ZX1BBUkFNUy5pZCArICcvdHJhaWxlciNub0hpc3RvcnkjJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvTGluZ3lhbjAwMC9waG90b3MvaW1nLzIwMjAxMTA0MTYzODEzLmdpZicsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgIH0pO1xcbn0gZWxzZSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogc3Ryb25nSHRtbCgn5pqC5peg6aKE5ZGK54mHJyksXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbmFkZExpbmVfYmxhbmsoZCk7XFxuaWYgKGpzb24uaW50cm8gIT0gJycpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBzdHJvbmdIdG1sKCflvbHniYfnroDku4snICsgc21hbGxIdG1sKHNtYWxsSHRtbCgnXFxcXHTlsZXlvIA+PicpKSksXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKG1vdmllSWQsIGludHJvQ29udGVudCkgPT4ge1xcbiAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvY29yZUZ1bmN0aW9ucycpKS5ydWxlKTtcXG4gICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ29wZW5JbnRybycgKyBtb3ZpZUlkLCAnZmFsc2UnKSA9PSAndHJ1ZScpIHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ29wZW5JbnRybycgKyBtb3ZpZUlkLCAnZmFsc2UnKTtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3Ryb25nSHRtbCgn5b2x54mH566A5LuLJyArIHNtYWxsSHRtbChzbWFsbEh0bWwoJ1xcXFx05bGV5byAPj4nKSkpLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2ludHJvVGl0bGUnICsgbW92aWVJZFxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW50cm9Db250ZW50LnN1YnN0cmluZygwLCAxMDApICsgJ+KApuKApicsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaW50cm9Db250ZW50JyArIG1vdmllSWRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ29wZW5JbnRybycgKyBtb3ZpZUlkLCAndHJ1ZScpO1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdHJvbmdIdG1sKCflvbHniYfnroDku4snICsgc21hbGxIdG1sKHNtYWxsSHRtbCgnXFxcXHTmlLbotbc+PicpKSksXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaW50cm9UaXRsZScgKyBtb3ZpZUlkXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpbnRyb0NvbnRlbnQsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiAnaW50cm9Db250ZW50JyArIG1vdmllSWRcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9LCBNWV9QQVJBTVMuaWQsIGpzb24uaW50cm8ucmVwbGFjZSgvXFxcXHMvZywgJycpKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMScsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAnaW50cm9UaXRsZScgKyBNWV9QQVJBTVMuaWRcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZToganNvbi5pbnRyby5yZXBsYWNlKC9cXFxccy9nLCAnJykubGVuZ3RoIDwgMTAwID8ganNvbi5pbnRyby5yZXBsYWNlKC9cXFxccy9nLCAnJykgOiAoanNvbi5pbnRyby5yZXBsYWNlKC9cXFxccy9nLCAnJykuc3Vic3RyaW5nKDAsIDEwMCkgKyAn4oCm4oCmJyksXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiAnaW50cm9Db250ZW50JyArIE1ZX1BBUkFNUy5pZFxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHN0cm9uZ0h0bWwoJ+aaguaXoOeugOS7iycpLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbn1cXG5hZGRMaW5lX2JsYW5rKGQpO1xcbnZhciBhd2FyZHMgPSBnZXREb3ViYW5SZXMoJ2h0dHBzOi8vZnJvZG8uZG91YmFuLmNvbS9hcGkvdjIvJyArIE1ZX1BBUkFNUy50YXJnZXRfdHlwZSArICcvJyArIE1ZX1BBUkFNUy5pZCArICcvYXdhcmRzP2NvdW50PTIwJyk7XFxuaWYgKGF3YXJkcy5hd2FyZHMgIT0gJycpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBzdHJvbmdIdG1sKCfojrflpZbmg4XlhrUnKSxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgYXdhcmRzLmF3YXJkcy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0uY2VyZW1vbnkudGl0bGUgKyAnXFxcXHQnICsgaXRlbS5jYXRlZ29yaWVzLm1hcCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5pc193b24gPyBpdGVtLmNhdGVnb3J5LnRpdGxlIDogKGl0ZW0uY2F0ZWdvcnkudGl0bGUgKyAn77yI5o+Q5ZCN77yJJylcXG4gICAgICAgICAgICB9KS5qb2luKCcvJyksXFxuICAgICAgICAgICAgcGljX3VybDogaXRlbS5jZXJlbW9ueS5waWMubGFyZ2UgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgIH0pO1xcbiAgICB9KVxcbn0gZWxzZSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogc3Ryb25nSHRtbCgn5pqC5peg6I635aWW5oOF5Ya1JyksXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbmFkZExpbmVfYmxhbmsoZCk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJjigJg8c21hbGw+5Lul5LiK5pWw5o2u5p2l5rqQ5LqO6LGG55Oj77yM5aaC5oKo5Zac5qyi77yM6K+35LiL6L295a6Y5pa5YXBwPC9zbWFsbD7igJnigJknLFxcbiAgICBkZXNjOiAn4oCc4oCcPHNtYWxsPuatpOinhOWImeS7hemZkOWtpuS5oOS6pOa1geS9v+eUqO+8jOivt+S6juWvvOWFpeWQjjI05bCP5pe25YaF5Yig6Zmk77yM5Lu75L2V57uE57uH5oiW5Liq5Lq65LiN5b6X5Lul5Lu75L2V5pa55byP5pa55rOV5Lyg5pKt5q2k6KeE5YiZ55qE5pW05L2T5oiW6YOo5YiG77yBPC9zbWFsbD7igJ3igJ0nLFxcbiAgICB1cmw6ICdodHRwczovL20uZG91YmFuLmNvbS9tb3ZpZS8nLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxuYWRkQmlnX2JsYW5rX2Jsb2NrKGQpO1xcbmFkZEJpZ19ibGFua19ibG9jayhkKTtcXG5hZGRCaWdfYmxhbmtfYmxvY2soZCk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5ryU6IGM5YiX6KGoXCIsXCJwYXRoXCI6XCJ3b3JrZXJzXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuc2V0UmVzdWx0KGdldERvdWJhblJlcygnaHR0cHM6Ly9mcm9kby5kb3ViYW4uY29tL2FwaS92Mi8nICsgTVlfUEFSQU1TLnR5cGUgKyAnLycgKyBNWV9QQVJBTVMuaWQgKyAnL2NyZWRpdHNfc3RhdHM/c3RhcnQ9MCZjb3VudD0xMDAnKS5pdGVtcy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgcmV0dXJuIHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLm5hbWUgKyAnXFxcXG4nICsgaXRlbS5jaGFyYWN0ZXIsXFxuICAgICAgICBkZXNjOiBpdGVtLmFic3RyYWN0LnJlcGxhY2UoL1xcXFxzL2csICcnKSxcXG4gICAgICAgIHBpY191cmw6IGl0ZW0uY292ZXJfdXJsICsgJ0BSZWZlcmVyPWh0dHBzOi8vbS5kb3ViYW4uY29tLycsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvd29ya2VyRGV0YWlsI25vSGlzdG9yeSMjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgd2lkOiBpdGVtLmlkLFxcbiAgICAgICAgICAgIGlkOiBpdGVtLnVyaS5zcGxpdCgnc3ViamVjdF9pZD0nKVsxXSxcXG4gICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWVcXG4gICAgICAgIH0sXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICB9XFxufSkpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5ryU5ZGY6K+m5oOFXCIsXCJwYXRoXCI6XCJ3b3JrZXJEZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbnNldFBhZ2VUaXRsZShNWV9QQVJBTVMubmFtZSk7XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jb3JlRnVuY3Rpb25zJykpLnJ1bGUpO1xcbnZhciBqc29uID0gZ2V0RG91YmFuUmVzKCdodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyL2VsZXNzYXIvc3ViamVjdC8nICsgTVlfUEFSQU1TLmlkICsgJz9jaGFubmVsPURvdWJhbicpO1xcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGpzb24udGl0bGUsXFxuICAgIGRlc2M6IGpzb24uZXh0cmEuc2hvcnRfaW5mbyxcXG4gICAgcGljX3VybDoganNvbi5jb3Zlcl9pbWcudXJsICsgJ0BSZWZlcmVyPWh0dHBzOi8vbS5kb3ViYW4uY29tLycsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSlcXG5hZGRMaW5lX2JsYW5rKGQpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBnZXRNeVZhcignd29ya2VyRGV0YWlsJyArIE1ZX1BBUkFNUy5pZCwgJ2ZhbHNlJykgPT0gJ3RydWUnID8gKHN0cm9uZ0h0bWwoJ+eugOS7iycgKyBzbWFsbEh0bWwoc21hbGxIdG1sKCdcXFxcdOaUtui1tz4+JykpKSkgOiAoc3Ryb25nSHRtbCgn566A5LuLJyArIHNtYWxsSHRtbChzbWFsbEh0bWwoJ1xcXFx05bGV5byAPj4nKSkpKSxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChtb3ZpZUlkKSA9PiB7XFxuICAgICAgICBnZXRNeVZhcignd29ya2VyRGV0YWlsJyArIG1vdmllSWQsICdmYWxzZScpID09ICd0cnVlJyA/IHB1dE15VmFyKCd3b3JrZXJEZXRhaWwnICsgbW92aWVJZCwgJ2ZhbHNlJykgOiBwdXRNeVZhcignd29ya2VyRGV0YWlsJyArIG1vdmllSWQsICd0cnVlJyk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICB9LCBNWV9QQVJBTVMuaWQpLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldE15VmFyKCd3b3JrZXJEZXRhaWwnICsgTVlfUEFSQU1TLmlkLCAnZmFsc2UnKSA9PSAndHJ1ZScgfHwgcGRmaChqc29uLmRlc2MsICcuY29udGVudCYmVGV4dCcpLmxlbmd0aCA8IDEwMCA/ICgnXFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgcGRmaChqc29uLmRlc2MsICcuY29udGVudCYmVGV4dCcpLnJlcGxhY2UoL1tcXFxcc1xcXFxuXFxcXHRdL2csICcnKSkgOiAoJ1xcXFx0XFxcXHRcXFxcdFxcXFx0JyArIHBkZmgoanNvbi5kZXNjLCAnLmNvbnRlbnQmJlRleHQnKS5yZXBsYWNlKC9bXFxcXHNcXFxcblxcXFx0XS9nLCAnJykuc3Vic3RyaW5nKDAsIDEwMCkgKyAn4oCm4oCmJyksXFxuICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbn0pO1xcbmpzb24ubW9kdWxlcy5tYXAoKGl0ZW0sIGkpID0+IHtcXG4gICAgaWYgKGl0ZW0ucGF5bG9hZC50aXRsZSA9PSAn5L2c5ZOB6ZuGJykge1xcbiAgICAgICAgYWRkTGluZV9ibGFuayhkKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHN0cm9uZ0h0bWwoaXRlbS5wYXlsb2FkLnRpdGxlKSxcXG4gICAgICAgICAgICBkZXNjOiBzdHJvbmdIdG1sKCflhbEnICsgaXRlbS5wYXlsb2FkLmNvbGxlY3Rpb25zWzBdLnRvdGFsICsgJ+mDqCcpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaXRlbS5wYXlsb2FkLmNvbGxlY3Rpb25zWzBdLndvcmtzLm1hcCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpIDwgNikge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uc3ViamVjdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uc3ViamVjdC5leHRyYS5yYXRpbmdfZ3JvdXAucmF0aW5nICE9IG51bGwgPyAoaXRlbS5zdWJqZWN0LmV4dHJhLnJhdGluZ19ncm91cC5yYXRpbmcudmFsdWUgKyAn5YiGJykgOiBpdGVtLnN1YmplY3QuZXh0cmEucmF0aW5nX2dyb3VwLm51bGxfcmF0aW5nX3JlYXNvbixcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGl0ZW0uc3ViamVjdC5jb3Zlci5sYXJnZS51cmwgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9tb3ZpZURldGFpbCNub0hpc3RvcnkjI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiBpdGVtLnN1YmplY3QuaWQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uc3ViamVjdC50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRfdHlwZTogaXRlbS5zdWJqZWN0LnN1YnR5cGVcXG4gICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzMnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgYWRkTGluZShkKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHN0cm9uZ0h0bWwoJ+afpeeci+WFqOmDqOS9nOWTgScpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9hbGxXb3JrcyNub0hpc3RvcnkjJyxcXG4gICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5L2FwaS92Mi9lbGVzc2FyL3dvcmtfY29sbGVjdGlvbnMvJyArIGl0ZW0ucGF5bG9hZC5pZCArICcvd29ya3M/c3RhcnQ9ZnlwYWdlJmNvdW50PTMwJmNvbGxlY3Rpb25fdGl0bGU9JUU1JUJEJUIxJUU4JUE3JTg2J1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH0gZWxzZSBpZiAoaXRlbS5wYXlsb2FkLnRpdGxlID09ICfnm7jlhownKSB7XFxuICAgICAgICBhZGRMaW5lX2JsYW5rKGQpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc3Ryb25nSHRtbChpdGVtLnBheWxvYWQudGl0bGUpLFxcbiAgICAgICAgICAgIGRlc2M6IHN0cm9uZ0h0bWwoJ+WFsScgKyBpdGVtLnBheWxvYWQudG90YWwgKyAn5bygJyksXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBpdGVtLnBheWxvYWQucGhvdG9zLm1hcCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgICAgIGlmIChpIDwgNCkge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJzAnLFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaXRlbS5pbWFnZS5sYXJnZS51cmwgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogaXRlbS5pbWFnZS5sYXJnZS51cmwgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMidcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KTtcXG4gICAgICAgIGFkZExpbmUoZCk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzdHJvbmdIdG1sKCfmn6XnnIvlhajpg6jnhafniYcnKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvcGhvdG9zI25vSGlzdG9yeSMnLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkvYXBpL3YyL2NlbGVicml0eS8nICsgTVlfUEFSQU1TLndpZCArICcvcGhvdG9zP3N0YXJ0PWZ5cGFnZSZjb3VudD0zMCcsXFxuICAgICAgICAgICAgICAgIGNvdW50OiAzMCxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflhajpg6jnhafniYcnXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfSBlbHNlIGlmIChpdGVtLnBheWxvYWQudGl0bGUgPT0gJ+iOt+Wllue7j+WOhicpIHtcXG4gICAgICAgIGFkZExpbmVfYmxhbmsoZCk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBzdHJvbmdIdG1sKGl0ZW0ucGF5bG9hZC50aXRsZSksXFxuICAgICAgICAgICAgZGVzYzogc3Ryb25nSHRtbCgn5YWxJyArIGl0ZW0ucGF5bG9hZC50b3RhbCArICfmrKEnKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGl0ZW0ucGF5bG9hZC5hd2FyZHMubWFwKChpdGVtLCBpKSA9PiB7XFxuICAgICAgICAgICAgaWYgKGkgPCA0KSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5jZXJlbW9ueS50aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uaXNfd29uID8gKCfojrflvpflpZbpobk6JyArIGl0ZW0uY2VyZW1vbnkudGl0bGUpIDogKCfojrflvpflpZbpobk6JyArIGl0ZW0uY2VyZW1vbnkudGl0bGUgKyAn77yI5o+Q5ZCN77yJJyksXFxuICAgICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpdGVtLmNlcmVtb255LnBpYy5sYXJnZSArICdAUmVmZXJlcj1odHRwczovL20uZG91YmFuLmNvbS8nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgYWRkTGluZShkKTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHN0cm9uZ0h0bWwoJ+afpeeci+WFqOmDqOiOt+Wllue7j+WOhicpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9hbGxBd2FyZHMjbm9IaXN0b3J5IycsXFxuICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eS9hcGkvdjIvZWxlc3Nhci9hd2FyZF9yZXN1bHRfY29sbGVjdGlvbi8nICsgaXRlbS5wYXlsb2FkLmlkICsgJy9hd2FyZHM/c3RhcnQ9ZnlwYWdlJmNvdW50PTMwJ1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59KVxcbmFkZExpbmVfYmxhbmsoZCk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfigJjigJg8c21hbGw+5Lul5LiK5pWw5o2u5p2l5rqQ5LqO6LGG55Oj77yM5aaC5oKo5Zac5qyi77yM6K+35LiL6L295a6Y5pa5YXBwPC9zbWFsbD7igJnigJknLFxcbiAgICBkZXNjOiAn4oCc4oCcPHNtYWxsPuatpOinhOWImeS7hemZkOWtpuS5oOS6pOa1geS9v+eUqO+8jOivt+S6juWvvOWFpeWQjjI05bCP5pe25YaF5Yig6Zmk77yM5Lu75L2V57uE57uH5oiW5Liq5Lq65LiN5b6X5Lul5Lu75L2V5pa55byP5pa55rOV5Lyg5pKt5q2k6KeE5YiZ55qE5pW05L2T5oiW6YOo5YiG77yBPC9zbWFsbD7igJ3igJ0nLFxcbiAgICB1cmw6ICdodHRwczovL20uZG91YmFuLmNvbS9tb3ZpZS8nLFxcbiAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxufSk7XFxuYWRkQmlnX2JsYW5rX2Jsb2NrKGQpO1xcbmFkZEJpZ19ibGFua19ibG9jayhkKTtcXG5hZGRCaWdfYmxhbmtfYmxvY2soZCk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5YWo6YOo5L2c5ZOBXCIsXCJwYXRoXCI6XCJhbGxXb3Jrc1wiLFwicnVsZVwiOlwianM6XFxuc2V0UGFnZVRpdGxlKCflhajpg6jkvZzlk4EnKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuc2V0UmVzdWx0KGdldERvdWJhblJlcyhNWV9QQVJBTVMudXJsLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHknLCAnaHR0cHM6Ly9mcm9kby5kb3ViYW4uY29tJykucmVwbGFjZSgnZnlwYWdlJywgKHBhcnNlSW50KGdldFBhcmFtKCdzdGFydCcpKSAtIDEpICogMzApKS53b3Jrcy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgcmV0dXJuIHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLnN1YmplY3QudGl0bGUsXFxuICAgICAgICBkZXNjOiBpdGVtLnN1YmplY3QuZXh0cmEucmF0aW5nX2dyb3VwLnJhdGluZyAhPSBudWxsID8gKGl0ZW0uc3ViamVjdC5leHRyYS5yYXRpbmdfZ3JvdXAucmF0aW5nLnZhbHVlICsgJ+WIhicpIDogaXRlbS5zdWJqZWN0LmV4dHJhLnJhdGluZ19ncm91cC5udWxsX3JhdGluZ19yZWFzb24sXFxuICAgICAgICBwaWNfdXJsOiBpdGVtLnN1YmplY3QuY292ZXIubGFyZ2UudXJsICsgJ0BSZWZlcmVyPWh0dHBzOi8vbS5kb3ViYW4uY29tLycsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbW92aWVEZXRhaWwjbm9IaXN0b3J5IyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogaXRlbS5zdWJqZWN0LmlkLFxcbiAgICAgICAgICAgIHRpdGxlOiBpdGVtLnN1YmplY3QudGl0bGUsXFxuICAgICAgICAgICAgdGFyZ2V0X3R5cGU6IGl0ZW0uc3ViamVjdC5zdWJ0eXBlXFxuICAgICAgICB9LFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICB9XFxufSkpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlhajpg6jojrflpZZcIixcInBhdGhcIjpcImFsbEF3YXJkc1wiLFwicnVsZVwiOlwianM6XFxuc2V0UGFnZVRpdGxlKCflhajpg6jojrflpZYnKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxudmFyIGQgPSBbXTtcXG52YXIganNvbiA9IGdldERvdWJhblJlcyhNWV9QQVJBTVMudXJsLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHknLCAnaHR0cHM6Ly9mcm9kby5kb3ViYW4uY29tJykucmVwbGFjZSgnZnlwYWdlJywgKHBhcnNlSW50KGdldFBhcmFtKCdzdGFydCcpKSAtIDEpICogMzApKTtcXG5qc29uLmF3YXJkcy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBzdHJvbmdIdG1sKGl0ZW0ueWVhciksXFxuICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICB9KTtcXG4gICAgaXRlbS5tb2R1bGVzLm1hcCgoaXRlbSwgaSkgPT4ge1xcbiAgICAgICAgaWYgKGkgPT0gMCkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIGRlc2M6IGl0ZW0uZXh0cmEuc2hvcnRfaW5mbyxcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0uZXh0cmEucmF0aW5nX2dyb3VwLnJhdGluZyAhPSBudWxsID8gKGl0ZW0udGl0bGUgKyAnXFxcXG4nICsgaXRlbS5leHRyYS5yYXRpbmdfZ3JvdXAucmF0aW5nLnZhbHVlICsgJ+WIhicpIDogKGl0ZW0udGl0bGUgKyAnXFxcXG4nICsgaXRlbS5leHRyYS5yYXRpbmdfZ3JvdXAubnVsbF9yYXRpbmdfcmVhc29uKSxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogaXRlbS5jb3Zlcl9pbWcudXJsICsgJ0BSZWZlcmVyPWh0dHBzOi8vbS5kb3ViYW4uY29tLycsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9tb3ZpZURldGFpbCNub0hpc3RvcnkjI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogaXRlbS5pZCxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3R5cGU6IGl0ZW0uc3VidHlwZVxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS5pc193b24gPyAoaXRlbS5jZXJlbW9ueS50aXRsZSArICdcXFxcdCcgKyBpdGVtLmNhdGVnb3J5LnRpdGxlKSA6IChpdGVtLmNlcmVtb255LnRpdGxlICsgJ1xcXFx0JyArIGl0ZW0uY2F0ZWdvcnkudGl0bGUgKyAn77yI5o+Q5ZCN77yJJyksXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGl0ZW0uY2VyZW1vbnkucGljLmxhcmdlICsgJ0BSZWZlcmVyPWh0dHBzOi8vbS5kb3ViYW4uY29tLycsXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KVxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWJp+eFp+mhtemdolwiLFwicGF0aFwiOlwicGhvdG9zXCIsXCJydWxlXCI6XCJqczpcXG5zZXRQYWdlVGl0bGUoTVlfUEFSQU1TLnRpdGxlKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuc2V0UmVzdWx0KGdldERvdWJhblJlcyhNWV9QQVJBTVMudXJsLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHknLCAnaHR0cHM6Ly9mcm9kby5kb3ViYW4uY29tJykucmVwbGFjZSgnZnlwYWdlJywgKHBhcnNlSW50KGdldFBhcmFtKCdzdGFydCcpKSAtIDEpICogTVlfUEFSQU1TLmNvdW50KSkucGhvdG9zLm1hcCgoaXRlbSkgPT4ge1xcbiAgICByZXR1cm4ge1xcbiAgICAgICAgZGVzYzogJzAnLFxcbiAgICAgICAgcGljX3VybDogaXRlbS5pbWFnZS5sYXJnZS51cmwgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgIHVybDogaXRlbS5pbWFnZS5sYXJnZS51cmwgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMidcXG4gICAgfVxcbn0pKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55+t6K+E6aG16Z2iXCIsXCJwYXRoXCI6XCJpbnRlcmVzdHNcIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvY29yZUZ1bmN0aW9ucycpKS5ydWxlKTtcXG52YXIgZCA9IFtdO1xcbmlmIChnZXRQYXJhbSgnc3RhcnQnKSA9PSAnMScpIHtcXG4gICAgYWRkQmlnX2JsYW5rX2Jsb2NrKGQpO1xcbiAgICB2YXIgdGFicyA9IFt7XFxuICAgICAgICBuYW1lOiAn5pyA54Ot55+t6K+EJyxcXG4gICAgICAgIHR5cGU6ICdob3QnXFxuICAgIH0sIHtcXG4gICAgICAgIG5hbWU6ICfmnIDmlrDnn63or4QnLFxcbiAgICAgICAgdHlwZTogJ2xhdGVzdCdcXG4gICAgfV07XFxuICAgIHRhYnMubWFwKChpdGVtKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcignaW50ZXJlc3RzVHlwZScsICdob3QnKSA9PSBpdGVtLnR5cGUgPyBjb2xvckh0bWwoJyNGRjVENTAnLCBpdGVtLm5hbWUpIDogaXRlbS5uYW1lLFxcbiAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodHlwZSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRNeVZhcignaW50ZXJlc3RzVHlwZScsIHR5cGUpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknO1xcbiAgICAgICAgICAgIH0sIGl0ZW0udHlwZSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pXFxuICAgIGFkZExpbmVfYmxhbmsoZCk7XFxufVxcbnZhciBqc29uID0gZ2V0RG91YmFuUmVzKE1ZX1BBUkFNUy51cmwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eScsICdodHRwczovL2Zyb2RvLmRvdWJhbi5jb20nKS5yZXBsYWNlKCdmeXBhZ2UnLCAocGFyc2VJbnQoZ2V0UGFyYW0oJ3N0YXJ0JykpIC0gMSkgKiBwYXJzZUludChnZXRQYXJhbSgnY291bnQnKSkpICsgZ2V0TXlWYXIoJ2ludGVyZXN0c1R5cGUnLCAnaG90JykpO1xcbmpzb24uaW50ZXJlc3RzLm1hcCgoaXRlbSkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0udXNlci5uYW1lLFxcbiAgICAgICAgcGljX3VybDogaXRlbS51c2VyLmF2YXRhciArICdAUmVmZXJlcj1odHRwczovL20uZG91YmFuLmNvbS8nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXG4gICAgfSk7XFxuICAgIGFkZExpbmUoZCk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5jb21tZW50LFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICB0ZXh0U2l6ZTogMTVcXG4gICAgICAgIH0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGFkZExpbmVfYmxhbmsoZCk7XFxufSlcXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlvbHor4TliJfooahcIixcInBhdGhcIjpcInJldmlld3NcIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvY29yZUZ1bmN0aW9ucycpKS5ydWxlKTtcXG52YXIgZCA9IFtdO1xcbmlmIChnZXRQYXJhbSgnc3RhcnQnKSA9PSAnMScpIHtcXG4gICAgYWRkQmlnX2JsYW5rX2Jsb2NrKGQpO1xcbiAgICB2YXIgdGFicyA9IFt7XFxuICAgICAgICBuYW1lOiAn5pyA54Ot5b2x6K+EJyxcXG4gICAgICAgIHR5cGU6ICdob3QnXFxuICAgIH0sIHtcXG4gICAgICAgIG5hbWU6ICfmnIDmlrDlvbHor4QnLFxcbiAgICAgICAgdHlwZTogJ2xhdGVzdCdcXG4gICAgfV07XFxuICAgIHRhYnMubWFwKChpdGVtKSA9PiB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBnZXRNeVZhcigncmV2aWV3c1R5cGUnLCAnaG90JykgPT0gaXRlbS50eXBlID8gY29sb3JIdG1sKCcjRkY1RDUwJywgaXRlbS5uYW1lKSA6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHR5cGUpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ3Jldmlld3NUeXBlJywgdHlwZSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSwgaXRlbS50eXBlKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSlcXG4gICAgYWRkTGluZV9ibGFuayhkKTtcXG59XFxudmFyIGpzb24gPSBnZXREb3ViYW5SZXMoTVlfUEFSQU1TLnVybC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5JywgJ2h0dHBzOi8vZnJvZG8uZG91YmFuLmNvbScpLnJlcGxhY2UoJ2Z5cGFnZScsIChwYXJzZUludChnZXRQYXJhbSgnc3RhcnQnKSkgLSAxKSAqIHBhcnNlSW50KGdldFBhcmFtKCdjb3VudCcpKSkgKyBnZXRNeVZhcigncmV2aWV3c1R5cGUnLCAnaG90JykpO1xcbmpzb24ucmV2aWV3cy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLnVzZXIubmFtZSxcXG4gICAgICAgIHBpY191cmw6IGl0ZW0udXNlci5hdmF0YXIgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pO1xcbiAgICBhZGRMaW5lKGQpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGl0ZW0uYWJzdHJhY3QucmVwbGFjZSgvXFxcXHMvZywgJycpLnN1YnN0cmluZygwLCAxNDApICsgJ+KApuKApjxhIGhyZWY9XFxcImhpa2VyOi8vcGFnZS9yZXZpZXdzRGV0YWlsI25vSGlzdG9yeSMjbm9Mb2FkaW5nI1xcXCI+44CK5p+l55yL6K+m5oOF44CLPC9hPicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIHRleHRTaXplOiAxNSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5L2FwaS92Mi9yZXZpZXcvJyArIGl0ZW0uaWRcXG4gICAgICAgIH0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGFkZExpbmVfYmxhbmsoZCk7XFxufSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlvbHor4Tor6bmg4VcIixcInBhdGhcIjpcInJldmlld3NEZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbnNldFBhZ2VUaXRsZSgn5b2x6K+E6K+m5oOFJyk7XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jb3JlRnVuY3Rpb25zJykpLnJ1bGUpO1xcbnZhciBkID0gW107XFxudmFyIGNvbnRlbnQgPSBnZXREb3ViYW5SZXMoTVlfUEFSQU1TLnVybC5yZXBsYWNlKCdoaWtlcjovL2VtcHR5JywgJ2h0dHBzOi8vZnJvZG8uZG91YmFuLmNvbScpKS5jb250ZW50O1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBjb250ZW50LFxcbiAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG59KTtcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpooTlkYroirHnta5cIixcInBhdGhcIjpcInRyYWlsZXJcIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvY29yZUZ1bmN0aW9ucycpKS5ydWxlKTtcXG52YXIgZCA9IFtdO1xcbnBkZmEoZ2V0UmVzQ29kZSgpLCAnYm9keSYmLm1vZCcpLm1hcCgoaXRlbSkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGJpZ0h0bWwoc3Ryb25nSHRtbChwZGZoKGl0ZW0sICdoMiYmVGV4dCcpLnJlcGxhY2UoL1tcXFxcc8K3XS9nLCAnJykpKSxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8xJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknXFxuICAgIH0pO1xcbiAgICBwZGZhKGl0ZW0sICd1bCYmbGknKS5tYXAoKGl0ZW0pID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgJ2E6bm90KFtjbGFzc10pJiZUZXh0JyksXFxuICAgICAgICAgICAgZGVzYzogcGRmaChpdGVtLCAnZW0mJlRleHQnKSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBwZGZoKGl0ZW0sICdpbWcmJnNyYycpLFxcbiAgICAgICAgICAgIHVybDogJChwZGZoKGl0ZW0sICdhJiZocmVmJykpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVlc3QoaW5wdXQse30pLm1hdGNoKC9odHRwLio/bXA0LylbMF07XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgfSk7XFxuICAgIH0pXFxuICAgIGFkZExpbmVfYmxhbmsoZCk7XFxufSlcXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlvbHop4blpKflhahcIixcInBhdGhcIjpcImFsbE1vdmllc1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG52YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgncGFnZT0nKVsxXTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuXFxuZnVuY3Rpb24gY2xhc3NMaXN0KHBhZ2UsIGNvdW50KSB7XFxuICAgIGxldCBpdGVtcyA9IHtcXG4gICAgICAgIHN1YnR5cGU6IFtcXFwi5YWo6YOoXFxcIiwgXFxcIueUteW9sVxcXCIsIFxcXCLnlLXop4bliadcXFwiLCBcXFwi57u86Im6XFxcIiwgXFxcIuWKqOa8q1xcXCIsIFxcXCLnuqrlvZXniYdcXFwiLCBcXFwi55+t54mHXFxcIl0sXFxuICAgICAgICBsb2NhbDogW1xcXCLlhajpg6hcXFwiLCBcXFwi5Lit5Zu95aSn6ZmGXFxcIiwgXFxcIue+juWbvVxcXCIsIFxcXCLkuK3lm73pppnmuK9cXFwiLCBcXFwi5Lit5Zu95Y+w5rm+XFxcIiwgXFxcIuaXpeacrFxcXCIsIFxcXCLpn6nlm71cXFwiLCBcXFwi6Iux5Zu9XFxcIiwgXFxcIuazleWbvVxcXCIsIFxcXCLlvrflm71cXFwiLCBcXFwi5oSP5aSn5YipXFxcIiwgXFxcIuilv+ePreeJmVxcXCIsIFxcXCLljbDluqZcXFwiLCBcXFwi5rOw5Zu9XFxcIiwgXFxcIuS/hOe9l+aWr1xcXCIsIFxcXCLkvIrmnJdcXFwiLCBcXFwi5Yqg5ou/5aSnXFxcIiwgXFxcIua+s+Wkp+WIqeS6mlxcXCIsIFxcXCLniLHlsJTlhbBcXFwiLCBcXFwi55Ge5YW4XFxcIiwgXFxcIuW3tOilv1xcXCIsIFxcXCLkuLnpuqZcXFwiXSxcXG4gICAgICAgIHR5cGU6IFtcXFwi5YWo6YOoXFxcIiwgXFxcIuWJp+aDhVxcXCIsIFxcXCLllpzliadcXFwiLCBcXFwi5Yqo5L2cXFxcIiwgXFxcIueIseaDhVxcXCIsIFxcXCLnp5HlubtcXFwiLCBcXFwi5Yqo55S7XFxcIiwgXFxcIuaCrOeWkVxcXCIsIFxcXCLmg4rmgppcXFwiLCBcXFwi5oGQ5oCWXFxcIiwgXFxcIueKr+e9qlxcXCIsIFxcXCLlkIzmgKdcXFwiLCBcXFwi6Z+z5LmQXFxcIiwgXFxcIuatjOiInlxcXCIsIFxcXCLkvKDorrBcXFwiLCBcXFwi5Y6G5Y+yXFxcIiwgXFxcIuaImOS6iVxcXCIsIFxcXCLopb/pg6hcXFwiLCBcXFwi5aWH5bm7XFxcIiwgXFxcIuWGkumZqVxcXCIsIFxcXCLngb7pmr5cXFwiLCBcXFwi5q2m5L6gXFxcIiwgdW5lc2NhcGUoXFxcIlxcXFx1NjBjNVxcXFx1ODI3MlxcXCIpXSxcXG4gICAgICAgIHllYXI6IFtcXFwi5YWo6YOoXFxcIixcXFwiMjAyMlxcXCIsIFxcXCIyMDIxXFxcIiwgXFxcIjIwMjBcXFwiLCBcXFwiMjAxOVxcXCIsIFxcXCIyMDEw5bm05LujXFxcIiwgXFxcIjIwMDDlubTku6NcXFwiLCBcXFwiOTDlubTku6NcXFwiLCBcXFwiODDlubTku6NcXFwiLCBcXFwiNzDlubTku6NcXFwiLCBcXFwiNjDlubTku6NcXFwiLCBcXFwi5pu05pepXFxcIl1cXG4gICAgfVxcbiAgICBsZXQgcmFuayA9IHtcXG4gICAgICAgIOm7mOiupDogXFxcIlVcXFwiLFxcbiAgICAgICAg54Ot5bqmOiBcXFwiVFxcXCIsXFxuICAgICAgICDor4TliIY6IFxcXCJTXFxcIixcXG4gICAgICAgIOaXtumXtDogXFxcIlJcXFwiXFxuICAgIH1cXG4gICAgbGV0IHRlbXAgPSBKU09OLnBhcnNlKGdldE15VmFyKCdjbGFzc2xpc3QnLCAne1xcXCJzdWJ0eXBlXFxcIjpcXFwiXFxcIixcXFwibG9jYWxcXFwiOlxcXCJcXFwiLFxcXCJ5ZWFyXFxcIjpcXFwiXFxcIixcXFwiY2xhc3NcXFwiOlxcXCJcXFwiLFxcXCJyYW5rXFxcIjpcXFwiVVxcXCIsXFxcInR5cGVcXFwiOlxcXCJcXFwifScpKTtcXG4gICAgaWYgKHBhZ2UgPT0gJzEnKSB7XFxuICAgICAgICBhZGRCaWdfYmxhbmtfYmxvY2soZCk7XFxuICAgICAgICBmb3IgKGl0ZW0gaW4gaXRlbXMpIHtcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zW2l0ZW1dLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogIXRlbXBbaXRlbV0gPyAoaSA9PSAwID8gY29sb3JIdG1sKCcjRkY1RDUwJywgaXRlbXNbaXRlbV1bMF0pIDogaXRlbXNbaXRlbV1baV0pIDogKHRlbXBbaXRlbV0gPT0gaXRlbXNbaXRlbV1baV0gPyBjb2xvckh0bWwoJyNGRjVENTAnLCBpdGVtc1tpdGVtXVtpXSkgOiBpdGVtc1tpdGVtXVtpXSksXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjovL2VtcHR5JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAubGF6eVJ1bGUoKGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHRlbXAgPSBKU09OLnBhcnNlKGdldE15VmFyKCdjbGFzc2xpc3QnLCAne1xcXCJzdWJ0eXBlXFxcIjpcXFwiXFxcIixcXFwibG9jYWxcXFwiOlxcXCJcXFwiLFxcXCJ5ZWFyXFxcIjpcXFwiXFxcIixcXFwiY2xhc3NcXFwiOlxcXCJcXFwiLFxcXCJyYW5rXFxcIjpcXFwiVVxcXCIsXFxcInR5cGVcXFwiOlxcXCJcXFwifScpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcFtlWzFdXSA9IGVbMF0uaW5kZXhPZihcXFwi5YWo6YOoXFxcIikgIT0gLTEgPyBcXFwiXFxcIiA6IGVbMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dE15VmFyKFxcXCJjbGFzc2xpc3RcXFwiLCBKU09OLnN0cmluZ2lmeSh0ZW1wKSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCBbaXRlbXNbaXRlbV1baV0sIGl0ZW1dKVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9XFxuICAgICAgICBmb3IgKHIgaW4gcmFuaykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0ZW1wLnJhbmsgPT0gcmFua1tyXSA/IGNvbG9ySHRtbCgnI0ZGNUQ1MCcsIHIpIDogcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCdoaWtlcjogLy9lbXB0eScpXFxuICAgICAgICAgICAgICAgICAgICAubGF6eVJ1bGUoKGUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGVtcCA9IEpTT04ucGFyc2UoZ2V0TXlWYXIoJ2NsYXNzbGlzdCcsICd7XFxcInN1YnR5cGVcXFwiOlxcXCJcXFwiLFxcXCJsb2NhbFxcXCI6XFxcIlxcXCIsXFxcInllYXJcXFwiOlxcXCJcXFwiLFxcXCJjbGFzc1xcXCI6XFxcIlxcXCIsXFxcInJhbmtcXFwiOlxcXCJVXFxcIixcXFwidHlwZVxcXCI6XFxcIlxcXCJ9JykpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAucmFuayA9IGU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcHV0TXlWYXIoXFxcImNsYXNzbGlzdFxcXCIsIEpTT04uc3RyaW5naWZ5KHRlbXApKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgICAgICAgICAgICAgICAgIH0sIHJhbmtbcl0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgICAgIGFkZExpbmVfYmxhbmsoZCk7XFxuICAgIH1cXG4gICAgbGV0IHVybCA9IFxcXCJodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyL21vdmllL3RhZz9cXFwiICsgKHBhZ2UgPyBcXFwic3RhcnQ9XFxcIiArIChwYWdlIC0gMSkgKiBjb3VudCArIFxcXCImY291bnQ9XFxcIiArIGNvdW50IDogXFxcInN0YXJ0PTAmY291bnQ9MzBcXFwiKSArIFxcXCImcT1cXFwiICsgdGVtcC5zdWJ0eXBlICsgXFxcIixcXFwiICsgdGVtcC5sb2NhbCArIFxcXCIsXFxcIiArIHRlbXAudHlwZSArIFxcXCIsXFxcIiArIHRlbXAueWVhciArIFxcXCIsJnNvcnQ9XFxcIiArIHRlbXAucmFuayArIFxcXCImc2NvcmVfcmFuZ2U9MCwxMFxcXCI7XFxuICAgIHJldHVybiB1cmw7XFxufVxcbmdldERvdWJhblJlcyhjbGFzc0xpc3QocGFnZSwgMzApKS5kYXRhLm1hcCgoaXRlbSkgPT4ge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgZGVzYzogaXRlbS5jYXJkX3N1YnRpdGxlLFxcbiAgICAgICAgdGl0bGU6IGl0ZW0ucmF0aW5nID09IG51bGwgPyAoaXRlbS50aXRsZSArICcoJyArIGl0ZW0ubnVsbF9yYXRpbmdfcmVhc29uICsgJylcXFxcblxcXFxuJyArIHNtYWxsSHRtbCgn5LiK5pig5pe26Ze0OicgKyBpdGVtLnB1YmRhdGUpKSA6IChpdGVtLnRpdGxlICsgJygnICsgaXRlbS5yYXRpbmcudmFsdWUgKyAn5YiGKScgKyBzbWFsbEh0bWwoJ1xcXFxuXFxcXG7kuIrmmKDml7bpl7Q6JyArIGl0ZW0ucHViZGF0ZSkpLFxcbiAgICAgICAgcGljX3VybDogaXRlbS5waWMubGFyZ2UgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9tb3ZpZURldGFpbCNub0hpc3RvcnkjI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgdGFyZ2V0X3R5cGU6IGl0ZW0uc3VidHlwZVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG59KVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumZoue6v+eDreaYoFwiLFwicGF0aFwiOlwibm93cGxheWluZ1wiLFwicnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vcGFnZS9jb3JlRnVuY3Rpb25zJykpLnJ1bGUpO1xcbnZhciBkPVtdO1xcbmFkZEJpZ19ibGFua19ibG9jayhkKTtcXG52YXIgdGFicyA9IFt7XFxuICAgIG5hbWU6ICfng63luqYnLFxcbiAgICB0eXBlOiAncmVjb21tZW5kJ1xcbn0sIHtcXG4gICAgbmFtZTogJ+aXtumXtCcsXFxuICAgIHR5cGU6ICd0aW1lJ1xcbn0sIHtcXG4gICAgbmFtZTogJ+ivhOWIhicsXFxuICAgIHR5cGU6ICdyYW5rJ1xcbn1dO1xcbnRhYnMubWFwKChpdGVtKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0TXlWYXIoJ25vd3BsYXlpbmdUeXBlJywgJ3JlY29tbWVuZCcpID09IGl0ZW0udHlwZSA/IGNvbG9ySHRtbCgnI0ZGNUQ1MCcsIGl0ZW0ubmFtZSkgOiBpdGVtLm5hbWUsXFxuICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHR5cGUpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcignbm93cGxheWluZ1R5cGUnLCB0eXBlKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICB9LCBpdGVtLnR5cGUpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59KVxcbmFkZExpbmVfYmxhbmsoZCk7XFxuZ2V0RG91YmFuUmVzKCdodHRwczovL2Zyb2RvLmRvdWJhbi5jb20vYXBpL3YyL21vdmllL21vdmllX3Nob3dpbmc/YXJlYT3lhajpg6gmc29ydD0nK2dldE15VmFyKCdub3dwbGF5aW5nVHlwZScsICdyZWNvbW1lbmQnKSsnJnBsYXlhYmxlPTAmbG9jX2lkPTEwODI4OCZzdGFydD0wJmNvdW50PTUwJykuaXRlbXMubWFwKChpdGVtKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogaXRlbS5yYXRpbmcgIT0gbnVsbCA/IChpdGVtLnRpdGxlICsgJygnICsgaXRlbS5yYXRpbmcudmFsdWUgKyAn5YiGKVxcXFxuJyArIHNtYWxsSHRtbChpdGVtLmNhcmRfc3VidGl0bGUpKSA6IChpdGVtLnRpdGxlICsgJyjmmoLml6Dor4TliIYpXFxcXG4nICsgc21hbGxIdG1sKGl0ZW0uY2FyZF9zdWJ0aXRsZSkpLFxcbiAgICAgICAgZGVzYzogaXRlbS5jb21tZW50LFxcbiAgICAgICAgcGljX3VybDogaXRlbS5waWMubGFyZ2UgKyAnQFJlZmVyZXI9aHR0cHM6Ly9tLmRvdWJhbi5jb20vJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9tb3ZpZURldGFpbCNub0hpc3RvcnkjI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgaWQ6IGl0ZW0uaWQsXFxuICAgICAgICAgICAgdGFyZ2V0X3R5cGU6IGl0ZW0udHlwZVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yib5oSP55+t54mHXCIsXCJwYXRoXCI6XCJzb3J0TW92aWVzXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuc2V0UmVzdWx0KGdldFhpbnBpYW5jaGFuZ1JlcygnaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9wYWdlL2Rpc2NvdmVyeScpLmRhdGEuY2F0ZWdvcmllcy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgcmV0dXJuIHtcXG4gICAgICAgIHRpdGxlOiBpdGVtLmNhdGVnb3J5X25hbWUsXFxuICAgICAgICBkZXNjOiAnMCcsXFxuICAgICAgICBwaWNfdXJsOiBpdGVtLmNvdmVyLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NvcnRNb3ZpZURldGFpbCNub0hpc3RvcnkjJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgdXJsOiBpdGVtLnVybC5yZXBsYWNlKCduZXdzdHVkaW9zOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20nLCAnaGlrZXI6Ly9lbXB0eScpICsgJyZwYWdlPWZ5cGFnZSNub0hpc3RvcnkjJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMidcXG4gICAgfVxcbn0pKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuefreeJh+WIl+ihqFwiLFwicGF0aFwiOlwic29ydE1vdmllRGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxudHJ5IHtcXG4gICAgc2V0UmVzdWx0KGdldFhpbnBpYW5jaGFuZ1JlcyhNWV9VUkwucmVwbGFjZSgnaGlrZXI6Ly9lbXB0eScsICdodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tJykpLmRhdGEubGlzdC5tYXAoKGl0ZW0pID0+IHtcXG4gICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgZGVzYzogaXRlbS5hdXRob3Iucm9sZSArICfvvJonICsgaXRlbS5hdXRob3IudXNlcmluZm8udXNlcm5hbWUsXFxuICAgICAgICAgICAgcGljX3VybDogaXRlbS5jb3ZlcixcXG4gICAgICAgICAgICB1cmw6ICQoJ2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vYXJ0aWNsZS8nICsgaXRlbS5pZCArICc/ZXhwYW5kPXVzZXJfc3RhdHVzJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICB2YXIgdmlkZW9MaXN0ID0ge1xcbiAgICAgICAgICAgICAgICAgICAgdXJsczogW10sXFxuICAgICAgICAgICAgICAgICAgICBuYW1lczogW11cXG4gICAgICAgICAgICAgICAgfTtcXG4gICAgICAgICAgICAgICAgSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSkuZGF0YS52aWRlby5jb250ZW50LnByb2dyZXNzaXZlLm1hcCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmlkZW9MaXN0LnVybHMucHVzaChpdGVtLnVybCk7XFxuICAgICAgICAgICAgICAgICAgICB2aWRlb0xpc3QubmFtZXMucHVzaChpdGVtLnByb2ZpbGUpO1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZpZGVvTGlzdCk7XFxuICAgICAgICAgICAgfSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfVxcbiAgICB9KSk7XFxufSBjYXRjaCAoZSkge1xcbiAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgIHRpdGxlOiBzbWFsbEh0bWwoJ+W3sue7j+WIsOW6leS6huWTpn4nKSxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9XSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi54mH5rqQ6aG16Z2iXCIsXCJwYXRoXCI6XCJzb3VyY2VzXCIsXCJydWxlXCI6XCJqczpcXG5zZXRQYWdlVGl0bGUoTVlfUEFSQU1TLnRpdGxlKTtcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxudmFyIGh0bWwgPSByZXF1ZXN0KCdodHRwczovL21vdmllLmRvdWJhbi5jb20vc3ViamVjdC8nICsgTVlfUEFSQU1TLmlkICsgJy8nLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUFcXG4gICAgfVxcbn0pO1xcbnZhciBzb3VyY2VzID0gW107XFxudmFyIHNvdXJjZXNfbGlzdCA9IGh0bWwubWF0Y2goL3NvdXJjZXNcXFxcW1soMSkoMykoNykoOCkoOSkoMTcpXXsxfVxcXFxdW1xcXFxzXFxcXFNdKj9cXFxcXS9nKTtcXG5pZiAoc291cmNlc19saXN0ID09IG51bGwpIHtcXG4gICAgdmFyIHNjcmlwdF9saXN0ID0gcGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmc2NyaXB0W3NyY10nKTtcXG4gICAgZm9yICh2YXIgaSBpbiBzY3JpcHRfbGlzdCkge1xcbiAgICAgICAgdmFyIHNvdXJjZXNfdXJsID0gcGFyc2VEb21Gb3JIdG1sKHNjcmlwdF9saXN0W2ldLCAnc2NyaXB0JiZzcmMnKS5pbmRleE9mKCdtaXhlZF9zdGF0aWMnKSAhPSAtMSA/IChwYXJzZURvbUZvckh0bWwoc2NyaXB0X2xpc3RbaV0sICdzY3JpcHQmJnNyYycpKSA6IHNvdXJjZXNfdXJsXFxuICAgIH1cXG4gICAgdmFyIHNvdXJjZXNfbGlzdCA9IHJlcXVlc3Qoc291cmNlc191cmwpLm1hdGNoKC9zb3VyY2VzXFxcXFtbKDEpKDMpKDcpKDgpKDkpKDE3KV17MX1cXFxcXVtcXFxcc1xcXFxTXSo/XFxcXF0vZyk7XFxufVxcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IE1ZX1BBUkFNUy50aXRsZSArICdcXFxcbicgKyBNWV9QQVJBTVMuZXBpc29kZXNfaW5mbyxcXG4gICAgZGVzYzogTVlfUEFSQU1TLnR5cGUgPT0gJ21vdmllJyA/ICgn5b2x54mH5pe26ZW/77yaJyArIE1ZX1BBUkFNUy5kdXJhdGlvbnMpIDogKCfljZXpm4bml7bplb/vvJonICsgTVlfUEFSQU1TLmR1cmF0aW9ucyksXFxuICAgIHBpY191cmw6IE1ZX1BBUkFNUy5jb3ZlcixcXG4gICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cidcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+ebuOWFs+aQnOe0oicsXFxuICAgIHVybDogJ2hpa2VyOi8vc2VhcmNoP3M9JyArIE1ZX1BBUkFNUy50aXRsZS5yZXBsYWNlKC9cXFxcc+esrFvkuIDkuozkuInlm5vkupTlha3kuIPlhavkuZ3ljYFdezEsM33lraMvZywgJycpLFxcbiAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvYWJvdXRTZWFyY2gucG5nJywgJ2h0dHBzOi8vczQuYXgxeC5jb20vMjAyMi8wMi8xMS9IVXFTRWoucG5nJyksXFxuICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80J1xcbn0pO1xcbnJlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+ino+aekOiuvue9ricsXFxuICAgIHVybDogc2V0dXBQYWdlcyhcXFwi6K6+572uXFxcIiksXFxuICAgIHBpY191cmw6IGxvYWRJbWFnZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy9wYXJzZVNldC5wbmcnLCAnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzExL0hVYnhiUS5wbmcnKSxcXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfmqKHlvI865pKt5pS+JyxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChtb3ZpZUlkKSA9PiB7XFxuICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuICAgICAgICBpZiAoZ2V0TXlWYXIoJ21vZGUnICsgbW92aWVJZCwgJzAnKSA9PSAnMCcpIHtcXG4gICAgICAgICAgICBwdXRNeVZhcignbW9kZScgKyBtb3ZpZUlkLCAnMScpO1xcbiAgICAgICAgICAgIHVwZGF0ZUl0ZW0oe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aooeW8jzrkuIvovb0nLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvZG93bmxvYWQucG5nJywgJ2h0dHBzOi8vczQuYXgxeC5jb20vMjAyMi8wMi8xMS9IVXFGMlYucG5nJyksXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBpZDogJ21vZGUnICsgbW92aWVJZFxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCdtb2RlJyArIG1vdmllSWQsICcwJyk7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbSh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5qih5byPOuaSreaUvicsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IGxvYWRJbWFnZXMoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvZ3lqYy9wbGF5aW5nLnBuZycsICdodHRwczovL3M0LmF4MXguY29tLzIwMjIvMDIvMTEvSFViaktTLnBuZycpLFxcbiAgICAgICAgICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgICAgICAgICAgaWQ6ICdtb2RlJyArIG1vdmllSWRcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICB9LCBNWV9QQVJBTVMuaWQpLFxcbiAgICBwaWNfdXJsOiBsb2FkSW1hZ2VzKCdoaWtlcjovL2ZpbGVzL2NhY2hlL2d5amMvcGxheWluZy5wbmcnLCAnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzExL0hVYmpLUy5wbmcnKSxcXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICdtb2RlJyArIE1ZX1BBUkFNUy5pZFxcbiAgICB9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IGdldEl0ZW0oJ29yZGVyJyArIE1ZX1BBUkFNUy5pZCwgJzEnKSA9PSAnMScgPyAn6YCJ6ZuGOuato+W6jycgOiAn6YCJ6ZuGOumAhuW6jycsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgobW92aWVJZCkgPT4ge1xcbiAgICAgICAgZ2V0SXRlbSgnb3JkZXInICsgbW92aWVJZCwgJzEnKSA9PSAnMScgPyBzZXRJdGVtKCdvcmRlcicgKyBtb3ZpZUlkLCAnLTEnKSA6IHNldEl0ZW0oJ29yZGVyJyArIG1vdmllSWQsICcxJyk7XFxuICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICB9LCBNWV9QQVJBTVMuaWQpLFxcbiAgICBwaWNfdXJsOiBnZXRJdGVtKCdvcmRlcicgKyBNWV9QQVJBTVMuaWQsICcxJykgPT0gJzEnID8gbG9hZEltYWdlcygnaGlrZXI6Ly9maWxlcy9jYWNoZS9neWpjL29yZGVyLnBuZycsICdodHRwczovL3M0LmF4MXguY29tLzIwMjIvMDIvMTEvSFVxaTgwLnBuZycpIDogbG9hZEltYWdlcygnaGlrZXI6Ly9maWxlcy9jYWNoZS9neWpjL3JldmVyc2VPcmRlci5wbmcnLCAnaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzExL0hVYnE4UC5wbmcnKSxcXG4gICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICdwbGF5ZXInICsgTVlfUEFSQU1TLmlkXFxuICAgIH1cXG59KTtcXG5pZiAoc291cmNlc19saXN0ICE9IG51bGwpIHtcXG4gICAgc291cmNlc19saXN0Lm1hcCgoaXRlbSkgPT4ge1xcbiAgICAgICAgZXZhbCh1bmVzY2FwZShpdGVtKSk7XFxuICAgIH0pXFxuICAgIHZhciBzb3VyY2VzX3RpdGxlID0gWycnLCAn6IW+6K6v6KeG6aKRJywgJycsICfkvJjphbfop4bpopEnLCAnJywgJycsICcnLCAn6IqS5p6cVFYnLCAn5ZOU5ZOp5ZOU5ZOpJywgJ+eIseWlh+iJuuinhumikScsICcnLCAnJywgJycsICcnLCAnJywgJycsICcnLCAn6KW/55Oc6KeG6aKRJ107XFxuICAgIGFkZExpbmVfYmxhbmsoZCk7XFxuICAgIGFkZEJpZ19ibGFua19ibG9jayhkKTtcXG4gICAgYWRkQmlnX2JsYW5rX2Jsb2NrKGQpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICflhajpg6jniYfmupAnLFxcbiAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChtb3ZpZUlkKSA9PiB7XFxuICAgICAgICAgICAgc2V0SXRlbSgnc291cmNlcycgKyBtb3ZpZUlkLCAnLTEnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSwgU3RyaW5nKE1ZX1BBUkFNUy5pZCkpLFxcbiAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG4gICAgc291cmNlcy5tYXAoKGl0ZW0sIGkpID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEl0ZW0oJ3NvdXJjZXMnICsgTVlfUEFSQU1TLmlkLCAnLTEnKSA9PSBpID8gc3Ryb25nSHRtbChjb2xvckh0bWwoJyNmZmFjMmQnLCAoc291cmNlc190aXRsZVtpXSkpKSA6IHNvdXJjZXNfdGl0bGVbaV0sXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChtb3ZpZUlkLCBzb3VyY2VzKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNldEl0ZW0oJ3NvdXJjZXMnICsgbW92aWVJZCwgc291cmNlcyk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIE1ZX1BBUkFNUy5pZCwgU3RyaW5nKGkpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSk7XFxuICAgIGFkZExpbmUoZCk7XFxuICAgIHNvdXJjZXMubWFwKChpdGVtLCBpKSA9PiB7XFxuICAgICAgICBpZiAoZ2V0SXRlbSgnc291cmNlcycgKyBNWV9QQVJBTVMuaWQsICctMScpID09ICctMScgfHwgZ2V0SXRlbSgnc291cmNlcycgKyBNWV9QQVJBTVMuaWQsICctMScpID09IGkpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc3Ryb25nSHRtbChzb3VyY2VzX3RpdGxlW2ldKSxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBhZGRMaW5lKGQpO1xcbiAgICAgICAgICAgIHNldExhc3RDaGFwdGVyUnVsZSgnanM6JyArICQudG9TdHJpbmcocGFyYW0gPT4ge1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoJ+abtOaWsOiHs++9nOesrCcgKyBwYXJhbSArICfpm4YnKVxcbiAgICAgICAgICAgIH0sIGl0ZW0ubGVuZ3RoKSk7XFxuICAgICAgICAgICAgaWYgKGdldEl0ZW0oJ29yZGVyJyArIE1ZX1BBUkFNUy5pZCwgJzEnKSA9PSAnLTEnKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwbGF5TGlzdCA9IGl0ZW0ucmV2ZXJzZSgpO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHZhciBwbGF5TGlzdCA9IGl0ZW07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHBsYXlMaXN0Lm1hcCgoaXRlbSkgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnrKwnICsgaXRlbS5lcCArICfpm4YnLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAkKGl0ZW0ucGxheV9saW5rLnJlcGxhY2UoJ2h0dHBzOi8vd3d3LmRvdWJhbi5jb20vbGluazIvP3VybD0nLCAnJykuc3BsaXQoJz8nKVswXSkubGF6eVJ1bGUoKG1vdmllSWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdtb2RlJyArIG1vdmllSWQsICcwJykgPT0gJzEnKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZG93bmxvYWQ6Ly8nICsgYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGdldE15VmFyKCdwbGF5ZXInICsgbW92aWVJZCwgJzAnKSA9PSAnMScpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd4NVBsYXk6Ly8nICsgYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9LCBNWV9QQVJBTVMuaWQpLFxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogJ2d5amMnICsgaXRlbS5wbGF5X2xpbmsucmVwbGFjZSgnaHR0cHM6Ly93d3cuZG91YmFuLmNvbS9saW5rMi8/dXJsPScsICcnKS5zcGxpdCgnPycpWzBdXFxuICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGFkZExpbmVfYmxhbmsoZCk7XFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGFkZExvbmdfdGV4dChkKTtcXG59IGVsc2Uge1xcbiAgICBzZXRMYXN0Q2hhcHRlclJ1bGUoJ2pzOicgKyAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgIHNldFJlc3VsdCgn5pqC5peg54mH5rqQ77yM5pWs6K+35pyf5b6F77yBJylcXG4gICAgfSkpO1xcbiAgICBhZGRMaW5lX2JsYW5rKGQpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICflpKnllablmZzvvIzkvaDmnaXliLDkuobmsqHmnInniYfmupDnmoTojZLljp9+JyxcXG4gICAgICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0J1xcbiAgICB9KTtcXG59XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5aWI6aOe6LWE5rqQXCIsXCJwYXRoXCI6XCJuZXRmbGl4XCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfUEFHRSA9PSAnMScpIHtcXG4gICAgYWRkQmlnX2JsYW5rX2Jsb2NrKGQpO1xcbiAgICB2YXIgdGFicyA9IFt7XFxuICAgICAgICBuYW1lOiAn55S15b2xJyxcXG4gICAgICAgIHR5cGU6ICcxJ1xcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiAn5Ymn6ZuGJyxcXG4gICAgICAgIHR5cGU6ICcyJ1xcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiAn57u86Im6JyxcXG4gICAgICAgIHR5cGU6ICczJ1xcbiAgICB9LCB7XFxuICAgICAgICBuYW1lOiAn5Yqo55S7JyxcXG4gICAgICAgIHR5cGU6ICc0J1xcbiAgICB9XTtcXG4gICAgdGFicy5tYXAoKGl0ZW0pID0+IHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldE15VmFyKCduZXRmbGl4VHlwZScsICcxJykgPT0gaXRlbS50eXBlID8gY29sb3JIdG1sKCcjRkY1RDUwJywgaXRlbS5uYW1lKSA6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKHR5cGUpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIoJ25ldGZsaXhUeXBlJywgdHlwZSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSc7XFxuICAgICAgICAgICAgfSwgaXRlbS50eXBlKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfSlcXG4gICAgYWRkTGluZShkKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvbmV0ZmxpeFNlYXJjaD93ZD0nK2lucHV0Kycjbm9IaXN0b3J5IydcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIG9uQ2hhbmdlOiBcXFwicHV0VmFyKCdteS1zZWFyY2gnLGlucHV0KVxcXCJcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGFkZExpbmVfYmxhbmsoZCk7XFxufVxcblxcbnZhciBodG1sID0gcmVxdWVzdChNWV9QQVJBTVMudXJsLnJlcGxhY2UoJ2hpa2VyOi8vZW1wdHknLCAnaHR0cHM6Ly9uZXRmbGl4Lm1vbScpLnJlcGxhY2UoJ2Z5cGFnZScsIE1ZX1BBR0UpLnJlcGxhY2UoJyNjbGFzcyMnLCBnZXRNeVZhcignbmV0ZmxpeFR5cGUnLCAnMScpKSk7XFxuXFxucGFyc2VEb21Gb3JBcnJheShodG1sLCAnYm9keSYmLm1vZHVsZS1pdGVtJykubWFwKChpdGVtKSA9PiB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcGRmaChpdGVtLCAnYSYmdGl0bGUnKSArICdcXFxcbicgKyBwZGZoKGl0ZW0sICcubW9kdWxlLWl0ZW0tdGV4dCYmVGV4dCcpLFxcbiAgICAgICAgZGVzYzogcGRmaChpdGVtLCAnLnZpZGVvLXRleHQmJlRleHQnKSxcXG4gICAgICAgIHBpY191cmw6IHBkZmgoaXRlbSwgJ2ltZyYmZGF0YS1zcmMnKS5yZXBsYWNlKCcvaW1nLnBocD91cmw9JywgJycpICsgJ0BSZWZlcmVyPScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV0ZmxpeERldGFpbCNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL25ldGZsaXgubW9tJyArIHBkZmgoaXRlbSwgJ2EmJmhyZWYnKSArICcjaW1tZXJzaXZlVGhlbWUjJ1xcbiAgICAgICAgfSxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgIH0pXFxufSlcXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlpYjpo57or6bmg4VcIixcInBhdGhcIjpcIm5ldGZsaXhEZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbmV2YWwoSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL3BhZ2UvY29yZUZ1bmN0aW9ucycpKS5ydWxlKTtcXG52YXIgZCA9IFtdO1xcbnZhciBodG1sID0gZ2V0UmVzQ29kZSgpO1xcbnNldFBhZ2VUaXRsZShwZGZoKGh0bWwsICdib2R5JiYudmlkZW8tY292ZXImJmltZyYmYWx0JykpO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBwZGZoKGh0bWwsICdib2R5JiYudmlkZW8tY292ZXImJmltZyYmYWx0JyksXFxuICAgIHBpY191cmw6IHBkKGh0bWwsICdib2R5JiYudmlkZW8tY292ZXImJmltZyYmZGF0YS1zcmMnKSxcXG4gICAgZGVzYzogcGRmaChodG1sLCAnYm9keSYmLnZvZF9jb250ZW50JiZzcGFuJiZUZXh0JyksXFxuICAgIHVybDogTVlfVVJMLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxudmFyIGxpbmVMaXN0ID0gcGRmYShodG1sLCAnYm9keSYmLm1vZHVsZS10YWItaXRlbScpLm1hcCgoaXRlbSkgPT4ge1xcbiAgICByZXR1cm4gcGRmaChpdGVtLCAnc3BhbiYmVGV4dCcpXFxufSk7XFxudmFyIHBsYXlMaXN0ID0gcGRmYShodG1sLCAnYm9keSYmLm1vZHVsZS1wbGF5ZXItbGlzdCcpLm1hcCgoaXRlbXMpID0+IHtcXG4gICAgcmV0dXJuIHBkZmEoaXRlbXMsICcubW9kdWxlLWJsb2NrbGlzdCYmYScpLm1hcCgoaXRlbSkgPT4ge1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICB0aXRsZTogcGRmaChpdGVtLCAnYSYmVGV4dCcpLFxcbiAgICAgICAgICAgIHVybDogcGQoaXRlbSwgJ2EmJmhyZWYnKVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0pO1xcbmZvciAodmFyIGkgaW4gbGluZUxpc3QpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBsaW5lTGlzdFtpXSxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG4gICAgZm9yICh2YXIgaiBpbiBwbGF5TGlzdFtpXSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGxheUxpc3RbaV1bal0udGl0bGUsXFxuICAgICAgICAgICAgdXJsOiAkKHBsYXlMaXN0W2ldW2pdLnVybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9wYWdlL2NvcmVGdW5jdGlvbnMnKSkucnVsZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZU0zdTgoeDVydWxlKGlucHV0LCBpbnB1dCkpO1xcbiAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgIGJsb2NrUnVsZXM6IFsnKi5wbmcnLCAnKi5qcGcnLCAnKi5qcGVnJywgJyouZ2lmJywgJyouc3ZnJywgJyouaWNvJywgJyouY3NzJ10sXFxuICAgICAgICAgICAgICAgIGlkOiAnbmV0ZmxpeCcgKyBwbGF5TGlzdFtpXVtqXS51cmxcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgYWRkTGluZV9ibGFuayhkKTtcXG59XFxuc2V0TGFzdENoYXB0ZXJSdWxlKCdqczonICsgJC50b1N0cmluZyhwYXJhbSA9PiB7XFxuICAgIHNldFJlc3VsdCgn5bey5pu05paw6Iez772cJyArIHBhcmFtKVxcbn0sIHBsYXlMaXN0WzBdW3BsYXlMaXN0WzBdLmxlbmd0aCAtIDFdLnRpdGxlKSlcXG5hZGRMb25nX3RleHQoZCk7XFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5aWI6aOe5pCc57SiXCIsXCJwYXRoXCI6XCJuZXRmbGl4U2VhcmNoXCIsXCJydWxlXCI6XCJqczpcXG52YXIgdXJsPSdodHRwczovL25ldGZsaXgubW9tL2luZGV4LnBocC92b2Qvc2VhcmNoL3BhZ2UvMS93ZC8nK2dldFBhcmFtKCd3ZCcpKycuaHRtbCc7XFxuc2V0UmVzdWx0KHBhcnNlRG9tRm9yQXJyYXkocmVxdWVzdCh1cmwpLCAnYm9keSYmLm1vZHVsZS1zZWFyY2gtaXRlbScpLm1hcCgoaXRlbSkgPT4ge1xcbiAgICByZXR1cm4ge1xcbiAgICAgICAgdGl0bGU6IHBkZmgoaXRlbSwgJ2ltZyYmYWx0JyksXFxuICAgICAgICBkZXNjOiBwZGZoKGl0ZW0sICcudmlkZW8tc2VyaWFsJiZUZXh0JyksXFxuICAgICAgICBwaWNfdXJsOiBwZGZoKGl0ZW0sICdpbWcmJmRhdGEtc3JjJykucmVwbGFjZSgnL2ltZy5waHA/dXJsPScsICcnKSArICdAUmVmZXJlcj0nLFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ldGZsaXhEZXRhaWwjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9uZXRmbGl4Lm1vbS9pbmRleC5waHAvdm9kL2RldGFpbC9pZC8nICsgcGRmaChpdGVtLCAnYSYmaHJlZicpLm1hdGNoKC9cXFxcZCsvKVswXSArICcuaHRtbCNpbW1lcnNpdmVUaGVtZSMnXFxuICAgICAgICB9LFxcbiAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICB9XFxufSkpO1wifV0iLCJpY29uIjoiaHR0cHM6Ly9zNC5heDF4LmNvbS8yMDIyLzAyLzE0L0g2VHNybi5wbmcifQ==
Add Comment
Please, Sign In to add comment