xiaomianao666

小程序:聚译

Aug 31st, 2023
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@聚译@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi6IGa6K+RIiwiYXV0aG9yIjoiSm9rZXIiLCJ1cmwiOiJoaWtlcjovL2VtcHR5IiwidmVyc2lvbiI6MSwiY29sX3R5cGUiOiJtb3ZpZV8zIiwiY2xhc3NfbmFtZSI6IiIsInR5cGUiOiJvdGhlciIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2hvbWVcIikpLnJ1bGUpIiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoiIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6ImV2YWwoSlNPTi5wYXJzZShmZXRjaCgnaGlrZXI6Ly9wYWdlL2luaXQnKSkucnVsZSk7XG4iLCJwYWdlcyI6Ilt7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aaW6aG1XCIsXCJwYXRoXCI6XCJob21lXCIsXCJydWxlXCI6XCJ2YXIgZCA9IFtdO1xcbmxldCBtb2RlID0gZ2V0SXRlbSgn5qih5byPJyk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfliIfmjaLmqKHlvI8nLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgbGV0IHQgPSB7XFxuICAgICAgICAgICAgJ+afpeivjSc6ICfnv7vor5EnLFxcbiAgICAgICAgICAgICfnv7vor5EnOiAn5p+l6K+NJ1xcbiAgICAgICAgfVtnZXRJdGVtKCfmqKHlvI8nKV1cXG4gICAgICAgIHNldEl0ZW0oJ+aooeW8jycsIHQpO1xcbiAgICAgICAgdXBkYXRlSXRlbSgnaW5wdXQnLCB7XFxuICAgICAgICAgICAgdGl0bGU6IHRcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICB9KSxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiAn5p+l6K+NJ1xcbiAgICB9LFxcbiAgICBjb2xfdHlwZTogXFxcImljb25fMlxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbWVzc3kvMTM1LnN2Z1xcXCJcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+iuvue9ricsXFxuICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9jb25maWdcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcImljb25fMlxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbWVzc3kvMzAuc3ZnXFxcIlxcbn0pO1xcbmxldCBvcmkgPSBnZXRJdGVtKFxcXCLmupDor63oqIBcXFwiKTtcXG5sZXQgdGFyID0gZ2V0SXRlbShcXFwi55uu5qCH6K+t6KiAXFxcIik7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLmupDor63oqIA6XFxcIiArIG9yaSxcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzNcXFwiLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgbGV0IG9yaSA9IGdldEl0ZW0oXFxcIua6kOivreiogFxcXCIsICk7XFxuICAgICAgICBsZXQgdGFyID0gZ2V0SXRlbShcXFwi55uu5qCH6K+t6KiAXFxcIik7XFxuICAgICAgICBsZXQgdGFibGUgPSBPYmplY3Qua2V5cygkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlKVxcbiAgICAgICAgcmV0dXJuICQodGFibGUuZmlsdGVyKGMgPT4gYyAhPSB0YXIpLCAxLCBcXFwi6YCJ5oup6K+t6KiAXFxcIikuc2VsZWN0KCgpID0+IHtcXG4gICAgICAgICAgICBzZXRJdGVtKFxcXCLmupDor63oqIBcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgdXBkYXRlSXRlbSgn5rqQ6K+t6KiAJywge1xcbiAgICAgICAgICAgICAgICB0aXRsZTogXFxcIua6kOivreiogDpcXFwiICsgaW5wdXRcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KSxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGlkOiBcXFwi5rqQ6K+t6KiAXFxcIlxcbiAgICB9XFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuKHhFxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8zXFxcIixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgIGxldCBvcmkgPSBnZXRJdGVtKFxcXCLmupDor63oqIBcXFwiKTtcXG4gICAgICAgIGxldCB0YXIgPSBnZXRJdGVtKFxcXCLnm67moIfor63oqIBcXFwiKTtcXG4gICAgICAgIGlmIChvcmkgPT0gXFxcIuiHquWKqFxcXCIpIHJldHVybiBcXFwidG9hc3Q6Ly/oh6rliqjmo4DmtYvmupDor63ml7bkuI3lj6/liIfmjaJcXFwiO1xcbiAgICAgICAgc2V0SXRlbShcXFwi5rqQ6K+t6KiAXFxcIiwgdGFyKTtcXG4gICAgICAgIHNldEl0ZW0oXFxcIuebruagh+ivreiogFxcXCIsIG9yaSk7XFxuICAgICAgICB1cGRhdGVJdGVtKCfmupDor63oqIAnLCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLmupDor63oqIA6XFxcIiArIHRhclxcbiAgICAgICAgfSk7XFxuICAgICAgICB1cGRhdGVJdGVtKCfnm67moIfor63oqIAnLCB7XFxuICAgICAgICAgICAgdGl0bGU6IFxcXCLnm67moIfor63oqIA6XFxcIiArIG9yaVxcbiAgICAgICAgfSk7XFxuICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgIH0pXFxufSlcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuebruagh+ivreiogDpcXFwiICsgdGFyLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfM1xcXCIsXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICBsZXQgb3JpID0gZ2V0SXRlbShcXFwi5rqQ6K+t6KiAXFxcIik7XFxuICAgICAgICBsZXQgdGFyID0gZ2V0SXRlbShcXFwi55uu5qCH6K+t6KiAXFxcIik7XFxuICAgICAgICBsZXQgdGFibGUgPSBPYmplY3Qua2V5cygkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlKVxcbiAgICAgICAgcmV0dXJuICQodGFibGUuZmlsdGVyKGMgPT4gYyAhPSBcXFwi6Ieq5YqoXFxcIiAmJiBjICE9IG9yaSksIDEsIFxcXCLpgInmi6nor63oqIBcXFwiKS5zZWxlY3QoKCkgPT4ge1xcbiAgICAgICAgICAgIHNldEl0ZW0oXFxcIuebruagh+ivreiogFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKCfnm67moIfor63oqIAnLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBcXFwi55uu5qCH6K+t6KiAOlxcXCIgKyBpbnB1dFxcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6IFxcXCLnm67moIfor63oqIBcXFwiXFxuICAgIH1cXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBtb2RlLFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge1xcblxcdCAgICAgaWYoaW5wdXQgPT0gJycpIHJldHVybiBcXFwidG9hc3Q6Ly/or7fovpPlhaXkupvkuJzopb8hXFxcIlxcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdHJhbnNcXFwiKSkucnVsZSlcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSksXFxuICAgIGNvbF90eXBlOiBcXFwiaW5wdXRcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAgaWQ6ICdpbnB1dCcsXFxuICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcbiAgICAgICAgaGVpZ2h0OiAtMVxcbiAgICB9XFxufSk7XFxuZC5wdXNoKHtcXG4gICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCIsXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBpZDogXFxcIm1hcmtcXFwiXFxuICAgIH1cXG59KVxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcImF2YXRhclwiLFwibmFtZVwiOlwi6K6+572uXCIsXCJwYXRoXCI6XCJjb25maWdcIixcInJ1bGVcIjpcImpzOlxcbmxldCBlbCA9IFtdO1xcbmxldCBlZGl0TW9kZSA9IGdldE15VmFyKFxcXCJlZGl0TW9kZVxcXCIsIFxcXCLlkK/nlKgv56aB55SoXFxcIik7XFxubGV0IGVkaXRsaXN0ID0gZ2V0TXlWYXIoJ+e8lui+keaOpeWPoycsICfmn6Xor40nKTtcXG5sZXQge1xcbiAgICBnZXRDb25maWcsXFxuICAgIHNldENvbmZpZ1xcbn0gPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpO1xcbmxldCBsaXN0ID0gZ2V0Q29uZmlnKGVkaXRsaXN0LCAnb3JkZXInKTtcXG5sZXQgaWNvbmxpc3QgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS90YWJsZScpLmljb247XFxubGV0IHJlc2xpc3QgPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS90YWJsZScpLnJlczsgLy/mmK/lkKbpnIDopoHlr4bpkqVcXG5lbC5wdXNoKHtcXG4gICAgdGl0bGU6ICfnjrDlnKjmraPlnKjnvJbovpHvvJonICsgZWRpdGxpc3QgKyAn5o6l5Y+jJyxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChlZGl0bGlzdCkgPT4ge1xcbiAgICAgICAgcHV0TXlWYXIoJ+e8lui+keaOpeWPoycsIHtcXG4gICAgICAgICAgICAn5p+l6K+NJzogJ+e/u+ivkScsXFxuICAgICAgICAgICAgJ+e/u+ivkSc6ICfmn6Xor40nXFxuICAgICAgICB9W2VkaXRsaXN0XSk7XFxuICAgICAgICByZWZyZXNoKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXG4gICAgfSwgZWRpdGxpc3QpLFxcbiAgICBjb2xfdHlwZTogXFxcImF2YXRhclxcXCIsXFxuICAgIHBpY191cmw6IFxcXCJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vbWVzc3kvMTM1LnN2Z1xcXCJcXG59KTtcXG5cXG5bJ+WQr+eUqC/npoHnlKgnLCAn6YeN5paw5o6S5bqPJywgJ+e8lui+keWvhumSpSddLmZvckVhY2goKHYpID0+IHtcXG4gICAgZWwucHVzaCh7XFxuICAgICAgICB0aXRsZTogdiA9PSBlZGl0TW9kZSA/ICfigJzigJzigJ3igJ0nICsgdi5ib2xkKCkuZm9udGNvbG9yKCcjMTJiNjY4JykgOiB2LFxcbiAgICAgICAgdXJsOiB2ID09IGVkaXRNb2RlID8gJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgfSkgOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCh2KSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ2VkaXRNb2RlJywgdilcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICB9LCB2KSxcXG4gICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgfSlcXG59KTtcXG5cXG5saXN0LmZvckVhY2goKHYsIGkpID0+IHtcXG4gICAgbGV0IGQgPSB7XFxuICAgICAgICB0aXRsZTogdixcXG4gICAgICAgIHBpY191cmw6IGljb25saXN0W3ZdLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZDogaSArIFxcXCJfY29uZmlnXFxcIlxcbiAgICAgICAgfVxcbiAgICB9O1xcbiAgICBsZXQgZiA9IGdldENvbmZpZyh2KTtcXG4gICAgc3dpdGNoIChlZGl0TW9kZSkge1xcbiAgICAgICAgY2FzZSAn5ZCv55SoL+emgeeUqCc6XFxuICAgICAgICAgICAgZC50aXRsZSA9IChmICYmIGYuZW5hYmxlID8gJ/Cfn6IgICcgOiAn8J+UtCAgJykgKyB2O1xcbiAgICAgICAgICAgIGQudXJsID0gJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgodiwgaSwgZWRpdGxpc3QpID0+IHtcXG4gICAgICAgICAgICAgICAgbGV0IHtcXG4gICAgICAgICAgICAgICAgICAgIGdldENvbmZpZyxcXG4gICAgICAgICAgICAgICAgICAgIHNldENvbmZpZ1xcbiAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbHNcXFwiKTtcXG4gICAgICAgICAgICAgICAgbGV0IGYgPSBnZXRDb25maWcodik7XFxuICAgICAgICAgICAgICAgIGlmICgkLnR5cGUoZikgIT0gJ29iamVjdCcpIGYgPSB7fTtcXG4gICAgICAgICAgICAgICAgLyppZiAoWyfpmL/ph4znv7vor5EnLCAn5b2p5LqR5bCP6K+RJywgJ+iFvuiur+e/u+ivkeWQmyddLmluY2x1ZGVzKHYpICYmIGYuZGlzYWJsZSkge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNlY3JldCA9ICQucmVxdWlyZSgnaGlrZXI6Ly9wYWdlL3RhYmxlJykuc2VjcmV0O1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHMgPSBzdG9yYWdlMC5nZXRJdGVtKHYsIHt9KTtcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGl0IGluIHNlY3JldFt2XSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzW2l0XSA9PSAnJyB8fCAhc1tpdF0pIHJldHVybiAndG9hc3Q6Ly/or7flhYjphY3nva7lr4bpkqUhJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9Ki9cXG4gICAgICAgICAgICAgICAgZi5lbmFibGUgPSAhZi5lbmFibGU7XFxuICAgICAgICAgICAgICAgIHNldENvbmZpZyh2LCBmKVxcbiAgICAgICAgICAgICAgICB1cGRhdGVJdGVtKGkgKyBcXFwiX2NvbmZpZ1xcXCIsIHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiAoZi5lbmFibGUgPyAn8J+foiAgJyA6ICfwn5S0ICAnKSArIHZcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHYsIGksIGVkaXRsaXN0KTtcXG4gICAgICAgICAgICBicmVha1xcbiAgICAgICAgY2FzZSAn6YeN5paw5o6S5bqPJzpcXG4gICAgICAgICAgICBsZXQgc29ydEZsYWcgPSBwYXJzZUludChnZXRNeVZhcignc29ydEZsYWcnLCAnLTEnKSlcXG4gICAgICAgICAgICBkLnRpdGxlID0gKHNvcnRGbGFnID09IGkgPyAn8J+UgyAgJyA6ICcnKSArIHZcXG4gICAgICAgICAgICBpZiAoc29ydEZsYWcgPT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgZC51cmwgPSAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpLCB2KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydEZsYWcnLCBpLnRvU3RyaW5nKCkpXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/pgInmi6nopoHnp7vliqjliLDnmoTkvY3nva4nXFxuICAgICAgICAgICAgICAgIH0sIGksIHYpXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgZC51cmwgPSAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpLCBzb3J0RmxhZywgZWRpdGxpc3QpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29uZmlnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldENvbmZpZ1xcbiAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGdldENvbmZpZyhlZGl0bGlzdCwgXFxcIm9yZGVyXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICBsaXN0LnNwbGljZShpLCAwLCBsaXN0LnNwbGljZShzb3J0RmxhZywgMSlbMF0pXFxuICAgICAgICAgICAgICAgICAgICBzZXRDb25maWcoZWRpdGxpc3QsICdvcmRlcicsIGxpc3QpXFxuICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignc29ydEZsYWcnLCAnLTEnKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgICAgIH0sIGksIHNvcnRGbGFnLCBlZGl0bGlzdClcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgIGNhc2UgJ+e8lui+keWvhumSpSc6XFxuICAgICAgICAgICAgZC51cmwgPSByZXNsaXN0W3ZdID8gXFxcImhpa2VyOi8vcGFnZS9rZXlcXFwiIDogXFxcInRvYXN0Oi8v5q2k5o6l5Y+j5LiN6ZyA6KaB5a+G6ZKlXFxcIjtcXG4gICAgICAgICAgICBkLmV4dHJhID0ge1xcbiAgICAgICAgICAgICAgICBuYW1lOiB2XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGJyZWFrXFxuICAgIH1cXG4gICAgZWwucHVzaChkKVxcbn0pXFxuc2V0UmVzdWx0KGVsKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue/u+ivkVwiLFwicGF0aFwiOlwidHJhbnNcIixcInJ1bGVcIjpcImRlbGV0ZUl0ZW1CeUNscyhcXFwicmVzdWx0XFxcIik7XFxubGV0IG1vZGUgPSBnZXRJdGVtKCfmqKHlvI8nKTtcXG5sZXQge2dldENvbmZpZyxzZXRDb25maWd9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbHNcXFwiKTtcXG5sZXQgbGlzdCA9IGdldENvbmZpZyhtb2RlLFxcXCJvcmRlclxcXCIpLy9zdG9yYWdlMC5nZXRJdGVtKG1vZGUgKyAn5o6l5Y+jJyk7XFxubGV0IG9yaSA9IGdldEl0ZW0oXFxcIua6kOivreiogFxcXCIpO1xcbmxldCB0YXIgPSBnZXRJdGVtKFxcXCLnm67moIfor63oqIBcXFwiKTtcXG5sZXQgdGFza2xpc3QgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YXNrXFxcIilbbW9kZV07XFxubGV0IGljb25saXN0ID0gJC5yZXF1aXJlKCdoaWtlcjovL3BhZ2UvdGFibGUnKS5pY29uO1xcbmxldCB0YXNrcyA9IFtdO1xcbmZvciAoa2V5IG9mIGxpc3QpIHtcXG4gICAgbGV0IGRhdGEgPSBnZXRDb25maWcoa2V5KS8vc3RvcmFnZTAuZ2V0SXRlbShrZXkpO1xcbiAgICBpZiAoIWRhdGEgfHwgIWRhdGEuZW5hYmxlKSBjb250aW51ZTtcXG4gICAgYWRkSXRlbUJlZm9yZShcXFwibWFya1xcXCIsIHtcXG4gICAgICAgIHRpdGxlOiBrZXkgKyBcXFwiLi4uXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIixcXG4gICAgICAgIHBpY191cmw6IGljb25saXN0W2tleV0sXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGlkOiBrZXkgKyBcXFwiX2hvbWVcXFwiLFxcbiAgICAgICAgICAgIGNsczogXFxcInJlc3VsdFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSlcXG4gICAgbGV0IHRhc2sgPSB0YXNrbGlzdFtrZXldO1xcbiAgICB0YXNrcy5wdXNoKHtcXG4gICAgICAgIGZ1bmM6IHRhc2ssXFxuICAgICAgICBwYXJhbToge1xcbiAgICAgICAgICAgIHF1ZXJ5OiBpbnB1dCxcXG4gICAgICAgICAgICBvcmk6IG9yaSxcXG4gICAgICAgICAgICB0YXI6IHRhclxcbiAgICAgICAgfSxcXG4gICAgICAgIGlkOiBrZXkgKyBcXFwiX3Rhc2tcXFwiXFxuICAgIH0pO1xcbn1cXG5pZiAodGFza3MubGVuZ3RoID4gMCkge1xcbiAgICBiZSh0YXNrcywge1xcbiAgICAgICAgZnVuYzogZnVuY3Rpb24ob2JqLCBpZCwgZXJyb3IsIHRhc2tSZXN1bHQpIHtcXG4gICAgICAgICAgICB1cGRhdGVJdGVtKGlkLnJlcGxhY2UoJ3Rhc2snLCAnaG9tZScpLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpZC5yZXBsYWNlKCdfdGFzaycsICcnKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgYWRkSXRlbUFmdGVyKGlkLnJlcGxhY2UoJ3Rhc2snLCAnaG9tZScpLCB7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBlcnJvci50b1N0cmluZygpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICBjbHM6IFxcXCJyZXN1bHRcXFwiXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfVxcbiAgICB9KVxcbn0gZWxzZSB7XFxuICAgIGNvbmZpcm0oe1xcbiAgICAgICAgdGl0bGU6IFxcXCLmj5DnpLpcXFwiLFxcbiAgICAgICAgY29udGVudDogXFxcIuiHs+WwkeWQr+eUqOS4gOS4quaOpeWPo+WVilxcXCJcXG4gICAgfSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLliJ3lp4vljJZcIixcInBhdGhcIjpcImluaXRcIixcInJ1bGVcIjpcImpzOlxcbmxldCBjb25maWcgPSByZWFkRmlsZSgnY29uZmlnJywgMCk7XFxuaWYgKGNvbmZpZyA9PSAnJykge1xcbiAgICBsZXQgZGVmYXVsdENvbmZpZyA9IHtcXG4gICAgICAgIOafpeivjToge1xcbiAgICAgICAgICAgIG9yZGVyOiBbXVxcbiAgICAgICAgfSxcXG4gICAgICAgIOe/u+ivkToge1xcbiAgICAgICAgICAgIG9yZGVyOiBbXVxcbiAgICAgICAgfSxcXG4gICAgICAgIFxcXCLmnInpgZPor43lhbhcXFwiOiB7XFxuICAgICAgICAgICAgXFxcImVuYWJsZVxcXCI6IHRydWVcXG4gICAgICAgIH0sXFxuICAgICAgICBcXFwi5b+F5bqU57+76K+RXFxcIjoge1xcbiAgICAgICAgICAgIFxcXCJlbmFibGVcXFwiOiB0cnVlXFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgc2F2ZUZpbGUoJ2NvbmZpZycsIEpTT04uc3RyaW5naWZ5KGRlZmF1bHRDb25maWcsIG51bGwsIDIpLCAwKTtcXG59XFxubGV0IHtcXG4gICAgZ2V0Q29uZmlnLFxcbiAgICBzZXRDb25maWdcXG59ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbHNcXFwiKTtcXG5sZXQgaXRlbXMgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YXNrXFxcIik7XFxuZm9yIChtb2RlIGluIGl0ZW1zKSB7XFxuICAgIGxldCBvcmRlciA9IGdldENvbmZpZyhtb2RlLCBcXFwib3JkZXJcXFwiKTtcXG4gICAgbGV0IGtleXMgPSBPYmplY3Qua2V5cyhpdGVtc1ttb2RlXSk7XFxuICAgIGxldCBjID0ga2V5cy5maWx0ZXIoaXRlbSA9PiAhb3JkZXIuaW5jbHVkZXMoaXRlbSkpO1xcbiAgICBsZXQgZCA9IG9yZGVyLmZpbHRlcihpdGVtID0+IGtleXMuaW5jbHVkZXMoaXRlbSkpO1xcbiAgICBBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLCBjKTtcXG4gICAgc2V0Q29uZmlnKG1vZGUsIFxcXCJvcmRlclxcXCIsIGQpO1xcbn1cXG5cXG5pZiAoZ2V0SXRlbSgn5qih5byPJykgPT09ICd1bmRlZmluZWQnKSB7XFxuICAgIHNldEl0ZW0oJ+aooeW8jycsICfmn6Xor40nKTsgLy/mn6Xor40g57+76K+RXFxufVxcbmlmIChnZXRJdGVtKCfmupDor63oqIAnKSA9PT0gJ3VuZGVmaW5lZCcpIHtcXG4gICAgc2V0SXRlbSgn5rqQ6K+t6KiAJywgJ+iHquWKqCcpO1xcbn1cXG5pZiAoZ2V0SXRlbSgn55uu5qCH6K+t6KiAJykgPT09ICd1bmRlZmluZWQnKSB7XFxuICAgIHNldEl0ZW0oJ+ebruagh+ivreiogCcsICfkuK3mlocnKTtcXG59XFxuLy/lr4bpkqXkuLpzdG9yYWdlMC5jbGVhckl0ZW0oXFxcIueZvuW6pue/u+ivkVxcXCIpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLlr7nlupTooahcIixcInBhdGhcIjpcInRhYmxlXCIsXCJydWxlXCI6XCJsZXQgdGFibGUgPSB7XFxuICAgIFxcXCLoh6rliqhcXFwiOiB7XFxuICAgICAgICBcXFwi5pyJ6YGT57+76K+RXFxcIjogXFxcImF1dG9cXFwiLFxcbiAgICAgICAgXFxcIuW9qeS6keWwj+ivkVxcXCI6IFxcXCJhdXRvXFxcIixcXG4gICAgICAgIFxcXCLmkJzni5fnv7vor5FcXFwiOiAnYXV0bycsXFxuICAgICAgICBcXFwiZGVlcGznv7vor5FcXFwiOiBcXFwiYXV0b1xcXCIsXFxuICAgICAgICBcXFwi55m+5bqm57+76K+RXFxcIjogJ2F1dG8nLFxcbiAgICAgICAgXFxcIumYv+mHjOe/u+ivkVxcXCI6ICdhdXRvJyxcXG4gICAgICAgIFxcXCLlv4XlupTnv7vor5FcXFwiOiAnYXV0by1kZXRlY3QnLFxcbiAgICAgICAgXFxcIueBq+Wxsee/u+ivkVxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgJ+iFvuiur+S6pOS6kue/u+ivkSc6IFxcXCJhdXRvXFxcIixcXG4gICAgICAgICfosLfmrYznv7vor5EnOiAnYXV0bycsXFxuICAgICAgICAn6IW+6K6v57+76K+R5ZCbJzogJ2F1dG8nXFxuICAgIH0sXFxuICAgIFxcXCLkuK3mlodcXFwiOiB7XFxuICAgICAgICBcXFwi5pyJ6YGT57+76K+RXFxcIjogXFxcInpoLUNIU1xcXCIsXFxuICAgICAgICBcXFwi5b2p5LqR5bCP6K+RXFxcIjogXFxcInpoXFxcIixcXG4gICAgICAgIFxcXCLmkJzni5fnv7vor5FcXFwiOiAnemgtQ0hTJyxcXG4gICAgICAgIFxcXCJkZWVwbOe/u+ivkVxcXCI6IFxcXCJaSFxcXCIsXFxuICAgICAgICAn55m+5bqm57+76K+RJzogJ3poJyxcXG4gICAgICAgIFxcXCLpmL/ph4znv7vor5FcXFwiOiAnemgnLFxcbiAgICAgICAgXFxcIuW/heW6lOe/u+ivkVxcXCI6ICd6aC1IYW5zJyxcXG4gICAgICAgIFxcXCLngavlsbHnv7vor5FcXFwiOiBcXFwiemhcXFwiLFxcbiAgICAgICAgJ+iFvuiur+S6pOS6kue/u+ivkSc6IFxcXCJ6aFxcXCIsXFxuICAgICAgICAn6LC35q2M57+76K+RJzogJ3poLUNOJyxcXG4gICAgICAgICfohb7orq/nv7vor5HlkJsnOiAnemgnXFxuICAgIH0sXFxuICAgIFxcXCLoi7HmlodcXFwiOiB7XFxuICAgICAgICBcXFwi5pyJ6YGT57+76K+RXFxcIjogXFxcImVuXFxcIixcXG4gICAgICAgIFxcXCLlvankupHlsI/or5FcXFwiOiBcXFwiZW5cXFwiLFxcbiAgICAgICAgJ+aQnOeLl+e/u+ivkSc6ICdlbicsXFxuICAgICAgICBcXFwiZGVlcGznv7vor5FcXFwiOiBcXFwiRU5cXFwiLFxcbiAgICAgICAgJ+eZvuW6pue/u+ivkSc6ICd6aCcsXFxuICAgICAgICBcXFwi6Zi/6YeM57+76K+RXFxcIjogJ2VuJyxcXG4gICAgICAgIFxcXCLlv4XlupTnv7vor5FcXFwiOiAnZW4nLFxcbiAgICAgICAgXFxcIueBq+Wxsee/u+ivkVxcXCI6IFxcXCJlblxcXCIsXFxuICAgICAgICAn6IW+6K6v5Lqk5LqS57+76K+RJzogXFxcImVuXFxcIixcXG4gICAgICAgICfosLfmrYznv7vor5EnOiAnZW4nLFxcbiAgICAgICAgJ+iFvuiur+e/u+ivkeWQmyc6ICdlbidcXG4gICAgfVxcbn1cXG5sZXQgaWNvbiA9IHtcXG4gICAgJ+aciemBk+ivjeWFuCc6ICdodHRwczovL3NoYXJlZC1odHRwcy55ZHN0YXRpYy5jb20vaW1hZ2VzL2Zhdmljb24uaWNvJyxcXG4gICAgJ+W/heW6lOivjeWFuCc6IFxcXCJodHRwczovL2ZpbGVzLmNvZGVsaWZlLmNjL2ljb25zL2JpbmcuaW9saXUuY24uc3ZnXFxcIixcXG4gICAgJ+mHkeWxseivjemcuCc6IFxcXCJodHRwczovL2Nkbi5pY2liYS5jb20vd3d3L2ltZy93d3cvZmF2aWNvbi5pY29cXFwiLFxcbiAgICAn5rW36K+N6K+N5YW4JzogJ2h0dHBzOi8vaTEuaGFpZGlpLmNvbS9mYXZpY29uLmljbycsXFxuICAgICfmrKfot6/or43lhbgnOiAnaHR0cHM6Ly9kaWN0LmV1ZGljLm5ldC9JbWFnZXMvZW4vZmF2aWNvbi5pY28nLFxcbiAgICAn5pyJ6YGT57+76K+RJzogJ2h0dHBzOi8vZmlsZXMuY29kZWxpZmUuY2MvaWNvbnMveW91ZGFvLnN2ZycsXFxuICAgICflvankupHlsI/or5EnOiBcXFwiaHR0cHM6Ly9maWxlcy5jb2RlbGlmZS5jYy9pY29ucy82MGI5ZWJiNmFlNWE5YmE0MDI0YjNjNDAucG5nP3gtb3NzLXByb2Nlc3M9aW1hZ2UvcmVzaXplLGxpbWl0XzAsbV9maWxsLHdfMTAwLGhfMTAwL3F1YWxpdHkscV8xMDBcXFwiLFxcbiAgICBcXFwi5aWH6JmO57+76K+RXFxcIjogXFxcImh0dHBzOi8vc3MxLjM2MHRyZXMuY29tL3N0YXRpYy8xMjFhMTczNzc1MGFhNTNkLmljb1xcXCIsXFxuICAgIFxcXCJkZWVwbOe/u+ivkVxcXCI6IFxcXCJodHRwczovL2ZpbGVzLmdldHF1aWNrZXIubmV0L19pY29ucy9GQTZGQkVGMTk0QUQxQjM4MkFFNzRGNzQ5N0NFNjI3OTQyOTdEQjQwLnBuZ1xcXCIsXFxuICAgICfosLfmrYznv7vor5EnOiAnaHR0cHM6Ly9maWxlcy5jb2RlbGlmZS5jYy9pY29ucy90cmFuc2xhdGUtZ29vZ2xlLnN2ZycsXFxuICAgICfmkJzni5fnv7vor5EnOiAnaHR0cHM6Ly9kbHdlYi5zb2dvdWNkbi5jb20vdHJhbnNsYXRlL2Zhdmljb24uaWNvP3Y9MjAxODA0MjQnLFxcbiAgICAn55m+5bqm57+76K+RJzogXFxcImh0dHBzOi8vZmlsZXMuY29kZWxpZmUuY2MvaWNvbnMvZmFueWktYmFpZHUuc3ZnXFxcIixcXG4gICAgJ+eBq+Wxsee/u+ivkSc6IFxcXCJodHRwczovL2ZpbGVzLmdldHF1aWNrZXIubmV0L19pY29ucy85RTc4NzAzOUE4MTZCM0RGRDIzODRENkM5MzY0QThDN0ZDOTlDRkUxLmljb1xcXCIsXFxuICAgICfohb7orq/nv7vor5HlkJsnOiBcXFwiaHR0cHM6Ly9maWxlcy5jb2RlbGlmZS5jYy9pY29ucy9mYW55aS5xcS5jb20uc3ZnXFxcIixcXG4gICAgJ+mYv+mHjOe/u+ivkSc6IFxcXCJodHRwczovL2ltZy5hbGljZG4uY29tL3Rmcy9UQjFnamhTa0FPV0J1TmpTc3BwWFhYUGdwWGEtNDgtNDguaWNvXFxcIixcXG4gICAgJ+iFvuiur+S6pOS6kue/u+ivkSc6IFxcXCJodHRwczovL2ZpbGVzLmdldHF1aWNrZXIubmV0L19pY29ucy8xLnBuZy5wbmdcXFwiLFxcbiAgICAnQ05LSee/u+ivkSc6IFxcXCJodHRwczovL2ZpbGVzLmNvZGVsaWZlLmNjL2ljb25zL2Nua2kuc3ZnXFxcIixcXG4gICAgJ+W/heW6lOe/u+ivkSc6IFxcXCJodHRwczovL2ZpbGVzLmNvZGVsaWZlLmNjL2ljb25zL2JpbmcuaW9saXUuY24uc3ZnXFxcIixcXG59XFxubGV0IHNlY3JldCA9IHtcXG4gICAgJ+aciemBk+e/u+ivkSc6IHtcXG4gICAgICAgICdhcHBLZXknOiAn5bqU55SoSUQnLFxcbiAgICAgICAgJ2tleSc6ICflr4bpkqUnXFxuICAgIH0sXFxuICAgICflvankupHlsI/or5EnOiB7XFxuICAgICAgICBcXFwidG9rZW5cXFwiOiBcXFwi5Luk54mMXFxcIlxcbiAgICB9LFxcbiAgICAn55m+5bqm57+76K+RJzoge1xcbiAgICAgICAgJ2FwcGlkJzogJ0FQUElEJyxcXG4gICAgICAgICdzZWNyZXQnOiAn5a+G6ZKlJ1xcbiAgICB9XFxufVxcbmxldCByZXMgPSB7XFxuICAgICfmnInpgZPor43lhbgnOiBmYWxzZSxcXG4gICAgJ+W/heW6lOivjeWFuCc6IGZhbHNlLFxcbiAgICAn6YeR5bGx6K+N6Zy4JzogZmFsc2UsXFxuICAgICfmtbfor43or43lhbgnOiBmYWxzZSxcXG4gICAgLy8n5qyn6Lev6K+N5YW4JzogZmFsc2UsXFxuICAgICfohb7orq/kuqTkupLnv7vor5EnOiBmYWxzZSxcXG4gICAgXFxcIuWlh+iZjue/u+ivkVxcXCI6IGZhbHNlLFxcbiAgICAn5pCc54uX57+76K+RJzogZmFsc2UsXFxuICAgICdDTktJ57+76K+RJzogZmFsc2UsXFxuICAgICfmnInpgZPnv7vor5EnOiB0cnVlLFxcbiAgICAn55m+5bqm57+76K+RJzogdHJ1ZSxcXG4gICAgJ+eBq+Wxsee/u+ivkSc6IGZhbHNlLCAvL1xcbiAgICBcXFwiZGVlcGznv7vor5FcXFwiOiBmYWxzZSwgLy9cXG4gICAgJ+W9qeS6keWwj+ivkSc6IHRydWUsXFxuICAgICfohb7orq/nv7vor5HlkJsnOiBmYWxzZSwvL1xcbiAgICAn6Zi/6YeM57+76K+RJzogZmFsc2UsIC8vXFxuICAgIFxcXCLlv4XlupTnv7vor5FcXFwiOiBmYWxzZSxcXG4gICAgJ+iwt+atjOe/u+ivkSc6IGZhbHNlXFxufVxcbiQuZXhwb3J0cyA9IHtcXG4gICAgdGFibGUsXFxuICAgIGljb24sXFxuICAgIHNlY3JldCxcXG4gICAgcmVzXFxufVwifSx7XCJjb2xfdHlwZVwiOlwidGV4dF8yXCIsXCJuYW1lXCI6XCLlr4bpkqVcIixcInBhdGhcIjpcImtleVwiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQgbmFtZSA9IE1ZX1BBUkFNUy5uYW1lO1xcbmxldCB7XFxuICAgIHNlY3JldFxcbn0gPSAkLnJlcXVpcmUoJ2hpa2VyOi8vcGFnZS90YWJsZScpO1xcbmZvciAobGV0IGkgaW4gc2VjcmV0W25hbWVdKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG4gICAgICAgIGRlc2M6IHNlY3JldFtuYW1lXVtpXSxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgdGl0bGVWaXNpYmxlOiBmYWxzZSxcXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHN0b3JhZ2UwLmdldEl0ZW0obmFtZSlbaV0gfHwgJycsXFxuICAgICAgICAgICAgb25DaGFuZ2U6ICQudG9TdHJpbmcoKG5hbWUsIGkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0TXlWYXIobmFtZSArIGksIGlucHV0KVxcbiAgICAgICAgICAgIH0sIG5hbWUsIGkpXFxuICAgICAgICB9XFxuICAgIH0pO1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+WIoOmZpCcsXFxuICAgIHVybDogJCgn5q2k5pON5L2c5Lya5Yig6Zmk5L+d5a2Y55qE5YaF5a65IVxcXFxu56Gu5a6a6KaB5Yig6ZmkPycpLmNvbmZpcm0oKG5hbWUpID0+IHtcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0obmFtZSx7fSk7XFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSlcXG4gICAgICAgIHJldHVybiAndG9hc3Q6Ly/muIXnqbrmiJDlip8nXFxuICAgIH0sIG5hbWUpXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKG5hbWUsIG9iaikgPT4ge1xcbiAgICAgICAgbGV0IGxpc3QgPSBzdG9yYWdlMC5nZXRJdGVtKG5hbWUse30pO1xcbiAgICAgICAgZm9yIChsZXQgaSBpbiBvYmopIHtcXG4gICAgICAgICAgICBsZXQgbyA9IGdldE15VmFyKG5hbWUgKyBpKTtcXG4gICAgICAgICAgICBpZiAoIW8pIHJldHVybiAndG9hc3Q6Ly/nvLrlsJEnICsgb2JqW2ldO1xcbiAgICAgICAgICAgIGxpc3RbaV0gPSBvO1xcbiAgICAgICAgfVxcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShuYW1lLCBsaXN0KTtcXG4gICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv53lrZjmiJDlip8nXFxuICAgIH0sIG5hbWUsIHNlY3JldFtuYW1lXSlcXG59KTtcXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnv7vor5F0YXNrXCIsXCJwYXRoXCI6XCJ0YXNrXCIsXCJydWxlXCI6XCJmdW5jdGlvbiDmnInpgZPnv7vor5Eob2JqKSB7XFxuICAgIGxldCB7XFxuICAgICAgICBhcHBLZXksXFxuICAgICAgICBrZXlcXG4gICAgfSA9IHN0b3JhZ2UwLmdldEl0ZW0oJ+aciemBk+e/u+ivkScpO1xcbiAgICBsZXQgdGFibGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlO1xcbiAgICB2YXIgdG8gPSB0YWJsZVtvYmoudGFyXVtcXFwi5pyJ6YGT57+76K+RXFxcIl07XFxuICAgIHZhciBmcm9tID0gdGFibGVbb2JqLm9yaV1bXFxcIuaciemBk+e/u+ivkVxcXCJdO1xcbiAgICBpZiAoYXBwS2V5ICYmIGtleSkge1xcbiAgICAgICAgZnVuY3Rpb24gdHJ1bmNhdGUocSkge1xcbiAgICAgICAgICAgIHZhciBsZW4gPSBxLmxlbmd0aDtcXG4gICAgICAgICAgICBpZiAobGVuIDw9IDIwKSByZXR1cm4gcTtcXG4gICAgICAgICAgICByZXR1cm4gcS5zdWJzdHJpbmcoMCwgMTApICsgbGVuICsgcS5zdWJzdHJpbmcobGVuIC0gMTAsIGxlbik7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgc2FsdCA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpLnRvU3RyaW5nKCk7XFxuICAgICAgICB2YXIgY3VydGltZSA9IE1hdGgucm91bmQobmV3IERhdGUoKS5nZXRUaW1lKCkgLyAxMDAwKS50b1N0cmluZygpO1xcblxcbiAgICAgICAgdmFyIHF1ZXJ5ID0gb2JqLnF1ZXJ5O1xcbiAgICAgICAgZXZhbChnZXRDcnlwdG9KUygpKVxcbiAgICAgICAgdmFyIHN0cjEgPSBhcHBLZXkgKyB0cnVuY2F0ZShxdWVyeSkgKyBzYWx0ICsgY3VydGltZSArIGtleTtcXG4gICAgICAgIHZhciBzaWduID0gQ3J5cHRvSlMuU0hBMjU2KHN0cjEpLnRvU3RyaW5nKENyeXB0b0pTLmVuYy5IZXgpO1xcblxcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZldGNoUEMoYnVpbGRVcmwoXFxcImh0dHBzOi8vb3BlbmFwaS55b3VkYW8uY29tL2FwaVxcXCIsIHtcXG4gICAgICAgICAgICBxOiBxdWVyeSxcXG4gICAgICAgICAgICBmcm9tOiBmcm9tLFxcbiAgICAgICAgICAgIHRvOiB0byxcXG4gICAgICAgICAgICBhcHBLZXk6IGFwcEtleSxcXG4gICAgICAgICAgICBzYWx0OiBzYWx0LFxcbiAgICAgICAgICAgIHNpZ246IHNpZ24sXFxuICAgICAgICAgICAgc2lnblR5cGU6IFxcXCJ2M1xcXCIsXFxuICAgICAgICAgICAgY3VydGltZTogY3VydGltZVxcbiAgICAgICAgfSkpO1xcbiAgICAgICAgdmFyIHN0ciA9IEpTT04ucGFyc2UocmVzdWx0KS50cmFuc2xhdGlvblswXTtcXG4gICAgfSBlbHNlIHsgLy96b3Rlcm9cXG4gICAgICAgIGxldCBwYXJhbSA9IGAke2Zyb20udG9VcHBlckNhc2UoKS5yZXBsYWNlKFxcXCItXFxcIiwgXFxcIl9cXFwiKX0yJHt0by50b1VwcGVyQ2FzZSgpLnJlcGxhY2UoXFxcIi1cXFwiLCBcXFwiX1xcXCIpfWA7XFxuXFxuICAgICAgICBjb25zdCB4aHIgPSBmZXRjaChgaHR0cDovL2ZhbnlpLnlvdWRhby5jb20vdHJhbnNsYXRlPyZkb2N0eXBlPWpzb24mdHlwZT0ke3BhcmFtfSZpPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iai5xdWVyeSl9YCwge1xcbiAgICAgICAgICAgIG1ldGhvZDogXFxcIkdFVFxcXCJcXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIHN0ciA9IEpTT04ucGFyc2UoeGhyKS50cmFuc2xhdGVSZXN1bHRbMF1bMF0udGd0O1xcbiAgICAgICAgLypsZXQgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldygnaHR0cHM6Ly9mYW55aS55b3VkYW8uY29tL2luZGV4Lmh0bWwjLycsIHtcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogUENfVUFcXG4gICAgICAgICAgICB9LFxcbiAgICAgICAgICAgIGNoZWNrSnM6ICQudG9TdHJpbmcoKHRleHQpID0+IHtcXG4gICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNqc19mYW55aV9pbnB1dCcpLmlubmVyVGV4dCAhPSB0ZXh0KSB7XFxuICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjanNfZmFueWlfaW5wdXQnKS5pbm5lclRleHQgPSB0ZXh0O1xcbiAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2pzX2ZhbnlpX2lucHV0JykuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQoJ2lucHV0JykpO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIHJldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcudGd0JykuaW5uZXJUZXh0IHx8IG51bGxcXG4gICAgICAgICAgICB9LCBvYmoucXVlcnkpXFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciBzdHIgPSBwZGZoKGh0bWwsICcudGd0JiZUZXh0Jyk7Ki9cXG4gICAgfVxcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUoYXJndW1lbnRzLmNhbGxlZS5uYW1lLCBzdHIpO1xcbn1cXG5cXG5mdW5jdGlvbiDmnInpgZPor43lhbgob2JqKSB7XFxuICAgIGxldCBodG1sID0gZmV0Y2hQQygnaHR0cHM6Ly9kaWN0LnlvdWRhby5jb20vdy8nICsgb2JqLnF1ZXJ5KTsgLy8rZW5jb2RlVVJJQ29tcG9uZW50KG9iai5xdWVyeS5yZXBsYWNlKC9cXFxccysvZywnICcpKSk7XFxuICAgIGxldCByZXN1bHQgPSBwYXJzZURvbUZvckFycmF5KGh0bWwsICcjcGhyc0xpc3RUYWImJi50cmFucy1jb250YWluZXInKS5qb2luKCcnKS5yZXBsYWNlKC9ocmVmPVxcXCIoLipcXFwiKS9nLCAnaHJlZj1cXFwiaHR0cHM6Ly9kaWN0LnlvdWRhby5jb20kMScpO1xcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUoYXJndW1lbnRzLmNhbGxlZS5uYW1lLCByZXN1bHQpO1xcbn1cXG5cXG5mdW5jdGlvbiDlv4XlupTor43lhbgob2JqKSB7XFxuICAgIGxldCBodG1sID0gZmV0Y2hQQygnaHR0cHM6Ly9jbi5iaW5nLmNvbS9kaWN0L2NsaWVudHNlYXJjaC8/cT0nICsgb2JqLnF1ZXJ5KTtcXG4gICAgbGV0IGFyciA9IHBhcnNlRG9tRm9yQXJyYXkoaHRtbCwgJy5jbGllbnRfZGVmX2NvbnRhaW5lciYmLmNsaWVudF9kZWZfYmFyJyk7XFxuICAgIGxldCByZXN1bHQgPSAnPHVsPic7XFxuICAgIGxldCBrayA9ICcmbmJzcDsnO1xcbiAgICBmb3IgKGxldCBpdCBvZiBhcnIpIHtcXG4gICAgICAgIHJlc3VsdCArPSAnPGxpPicgKyBwYXJzZURvbUZvckh0bWwoaXQsICcuY2xpZW50X2RlZl90aXRsZV9iYXImJlRleHQnKS5ib2xkKCkgKyBrayArIHBhcnNlRG9tRm9ySHRtbChpdCwgJy5jbGllbnRfZGVmX2xpc3Rfd29yZF9jb250ZW50JiZUZXh0JykgKyAnPC9saT4nO1xcbiAgICB9XFxuICAgIHJlc3VsdCArPSAnPC91bD4nO1xcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUoYXJndW1lbnRzLmNhbGxlZS5uYW1lLCByZXN1bHQpO1xcbn1cXG5cXG5mdW5jdGlvbiDlvankupHlsI/or5Eob2JqKSB7XFxuICAgIGxldCB7XFxuICAgICAgICB0b2tlblxcbiAgICB9ID0gc3RvcmFnZTAuZ2V0SXRlbSgn5b2p5LqR5bCP6K+RJyk7XFxuXFxuICAgIGxldCB0YWJsZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3RhYmxlXFxcIikudGFibGU7XFxuICAgIHZhciB0byA9IHRhYmxlW29iai50YXJdW1xcXCLlvankupHlsI/or5FcXFwiXTtcXG4gICAgdmFyIGZyb20gPSB0YWJsZVtvYmoub3JpXVtcXFwi5b2p5LqR5bCP6K+RXFxcIl07XFxuXFxuICAgIGlmICh0b2tlbikge1xcbiAgICAgICAgbGV0IHJlc3VsdCA9IGZldGNoUEMoXFxcImh0dHA6Ly9hcGkuaW50ZXJwcmV0ZXIuY2FpeXVuYWkuY29tL3YxL3RyYW5zbGF0b3JcXFwiLCB7XFxuICAgICAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwieC1hdXRob3JpemF0aW9uXFxcIjogXFxcInRva2VuIFxcXCIgKyB0b2tlblxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICBzb3VyY2U6IG9iai5xdWVyeSxcXG4gICAgICAgICAgICAgICAgdHJhbnNfdHlwZTogZnJvbSArIFxcXCIyXFxcIiArIHRvLFxcbiAgICAgICAgICAgICAgICByZXF1ZXN0X2lkOiBcXFwiZGVtb1xcXCIsXFxuICAgICAgICAgICAgICAgIGRldGVjdDogdHJ1ZVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pO1xcbiAgICAgICAgdmFyIHRleHQgPSBKU09OLnBhcnNlKHJlc3VsdCkudGFyZ2V0O1xcbiAgICB9IGVsc2UgeyAvL2JvYlxcbiAgICAgICAgZnVuY3Rpb24gaW5pdF9kYXRhKHNvdXJjZV9sYW5nLCB0YXJnZXRfbGFuZykge1xcbiAgICAgICAgICAgIHJldHVybiB7XFxuICAgICAgICAgICAgICAgIFxcXCJzb3VyY2VcXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcImRldGVjdFxcXCI6IHRydWUsXFxuICAgICAgICAgICAgICAgIFxcXCJvc190eXBlXFxcIjogXFxcImlvc1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJkZXZpY2VfaWRcXFwiOiBcXFwiRjFGOTAyRjctMTc4MC00Qzg4LTg0OEQtNzFGMzVEODhBNjAyXFxcIixcXG4gICAgICAgICAgICAgICAgXFxcInRyYW5zX3R5cGVcXFwiOiBzb3VyY2VfbGFuZyArICcyJyArIHRhcmdldF9sYW5nLFxcbiAgICAgICAgICAgICAgICBcXFwibWVkaWFcXFwiOiBcXFwidGV4dFxcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJyZXF1ZXN0X2lkXFxcIjogNDI0MjM4MzM1LFxcbiAgICAgICAgICAgICAgICBcXFwidXNlcl9pZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwiZGljdFxcXCI6IHRydWVcXG4gICAgICAgICAgICB9O1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgZnVuY3Rpb24gZ2V0UmFuZG9tTnVtYmVyKCkge1xcbiAgICAgICAgICAgIGNvbnN0IHJhbmQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiA5OTk5OSkgKyAxMDAwMDA7XFxuICAgICAgICAgICAgcmV0dXJuIHJhbmQgKiAxMDAwO1xcbiAgICAgICAgfVxcbiAgICAgICAgY29uc3QgcG9zdF9kYXRhID0gaW5pdF9kYXRhKGZyb20sIHRvKTtcXG4gICAgICAgIHBvc3RfZGF0YS5zb3VyY2UgPSBvYmoucXVlcnk7XFxuICAgICAgICBwb3N0X2RhdGEucmVxdWVzdF9pZCA9IGdldFJhbmRvbU51bWJlcigpO1xcbiAgICAgICAgbGV0IHJlcyA9IGZldGNoKCdodHRwczovL2ludGVycHJldGVyLmN5YXBpLmNuL3YxL3RyYW5zbGF0b3InLCB7XFxuICAgICAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICAgICAgaGVhZGVyOiB7XFxuICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXFxuICAgICAgICAgICAgICAgICd4LWF1dGhvcml6YXRpb24nOiAndG9rZW4gc3NkajI3M2tzZGl3aTkyM2JzZDknLFxcbiAgICAgICAgICAgICAgICAndXNlci1hZ2VudCc6ICdjYWl5dW5JbnRlcnByZXRlci81IENGTmV0d29yay8xNDA0LjAuNSBEYXJ3aW4vMjIuMy4wJ1xcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYm9keTogcG9zdF9kYXRhXFxuICAgICAgICB9KTtcXG4gICAgICAgIHZhciB0ZXh0ID0gSlNPTi5wYXJzZShyZXMpLnRhcmdldDtcXG4gICAgfVxcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUoYXJndW1lbnRzLmNhbGxlZS5uYW1lLCB0ZXh0KTtcXG59XFxuXFxuZnVuY3Rpb24g5pCc54uX57+76K+RKG9iaikge1xcbiAgICBsZXQgdGFibGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlO1xcbiAgICB2YXIgdG8gPSB0YWJsZVtvYmoudGFyXVtcXFwi5pCc54uX57+76K+RXFxcIl07XFxuICAgIHZhciBmcm9tID0gdGFibGVbb2JqLm9yaV1bXFxcIuaQnOeLl+e/u+ivkVxcXCJdO1xcblxcbiAgICBsZXQgaHRtbCA9IGZldGNoUEMoJ2h0dHBzOi8vZmFueWkuc29nb3UuY29tL3RleHQ/a2V5d29yZD0nICsgb2JqLnF1ZXJ5ICsgJyZ0cmFuc2Zyb209JyArIGZyb20gKyAnJnRyYW5zdG8nICsgdG8pXFxuICAgIGxldCB0ZXh0ID0gcGRmaChodG1sLCAnI3RyYW5zLXJlc3VsdCYmVGV4dCcpO1xcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUoYXJndW1lbnRzLmNhbGxlZS5uYW1lLCB0ZXh0KTtcXG59XFxuXFxuZnVuY3Rpb24g5aWH6JmO57+76K+RKG9iaikgeyAvL+S7heS4reiLseS6kuivkVxcbiAgICBsZXQgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldygnaHR0cHM6Ly9mYW55aS5zby5jb20vIycgKyBvYmoucXVlcnksIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAnVXNlci1BZ2VudCc6IFBDX1VBXFxuICAgICAgICB9LFxcbiAgICAgICAgY2hlY2tKczogJC50b1N0cmluZygoKSA9PiB7XFxuICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5jb250ZW50JykuaW5uZXJUZXh0IHx8IG51bGxcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBsZXQgdGV4dCA9IHBkZmgoaHRtbCwgJy5jb250ZW50JiZUZXh0Jyk7XFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShhcmd1bWVudHMuY2FsbGVlLm5hbWUsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiBkZWVwbOe/u+ivkShvYmopIHsgLy9ib2JcXG4gICAgbGV0IG5hbWUgPSBhcmd1bWVudHMuY2FsbGVlLm5hbWU7XFxuICAgIGxldCB0YWJsZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3RhYmxlXFxcIikudGFibGU7XFxuICAgIHZhciB0byA9IHRhYmxlW29iai50YXJdW25hbWVdO1xcbiAgICB2YXIgZnJvbSA9IHRhYmxlW29iai5vcmldW25hbWVdO1xcblxcbiAgICBsZXQgdHJhbnNsYXRlX3RleHQgPSBvYmoucXVlcnk7XFxuXFxuICAgIGZ1bmN0aW9uIGluaXREYXRhKHNvdXJjZV9sYW5nLCB0YXJnZXRfbGFuZykge1xcbiAgICAgICAgcmV0dXJuIHtcXG4gICAgICAgICAgICBqc29ucnBjOiAnMi4wJyxcXG4gICAgICAgICAgICBtZXRob2Q6ICdMTVRfaGFuZGxlX3RleHRzJyxcXG4gICAgICAgICAgICBwYXJhbXM6IHtcXG4gICAgICAgICAgICAgICAgc3BsaXR0aW5nOiAnbmV3bGluZXMnLFxcbiAgICAgICAgICAgICAgICBsYW5nOiB7XFxuICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbGFuZ191c2VyX3NlbGVjdGVkOiBzb3VyY2VfbGFuZyxcXG4gICAgICAgICAgICAgICAgICAgIHRhcmdldF9sYW5nOiB0YXJnZXRfbGFuZ1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfTtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRJQ291bnQodHJhbnNsYXRlX3RleHQpIHtcXG4gICAgICAgIHJldHVybiB0cmFuc2xhdGVfdGV4dC5zcGxpdCgnaScpLmxlbmd0aCAtIDE7XFxuICAgIH1cXG5cXG4gICAgZnVuY3Rpb24gZ2V0UmFuZG9tTnVtYmVyKCkge1xcbiAgICAgICAgY29uc3QgcmFuZCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDk5OTk5KSArIDEwMDAwMDtcXG4gICAgICAgIHJldHVybiByYW5kICogMTAwMDtcXG4gICAgfVxcblxcbiAgICBmdW5jdGlvbiBnZXRUaW1lU3RhbXAoaUNvdW50KSB7XFxuICAgICAgICBjb25zdCB0cyA9IChuZXcgRGF0ZSkuZ2V0VGltZSgpO1xcbiAgICAgICAgaWYgKGlDb3VudCAhPT0gMCkge1xcbiAgICAgICAgICAgIGlDb3VudCA9IGlDb3VudCArIDE7XFxuICAgICAgICAgICAgcmV0dXJuIHRzIC0gKHRzICUgaUNvdW50KSArIGlDb3VudDtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgcmV0dXJuIHRzO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIGxldCBpZCA9IGdldFJhbmRvbU51bWJlcigpO1xcbiAgICBjb25zdCBwb3N0X2RhdGEgPSBpbml0RGF0YShmcm9tLCB0byk7XFxuICAgIGNvbnN0IHRleHQgPSB7XFxuICAgICAgICB0ZXh0OiB0cmFuc2xhdGVfdGV4dCxcXG4gICAgICAgIHJlcXVlc3RBbHRlcm5hdGl2ZXM6IDNcXG4gICAgfTtcXG4gICAgcG9zdF9kYXRhLmlkID0gaWQ7XFxuICAgIHBvc3RfZGF0YS5wYXJhbXMudGV4dHMgPSBbdGV4dF07XFxuICAgIHBvc3RfZGF0YS5wYXJhbXMudGltZXN0YW1wID0gZ2V0VGltZVN0YW1wKGdldElDb3VudCh0cmFuc2xhdGVfdGV4dCkpO1xcbiAgICBsZXQgcG9zdF9zdHIgPSBKU09OLnN0cmluZ2lmeShwb3N0X2RhdGEpO1xcbiAgICBpZiAoKGlkICsgNSkgJSAyOSA9PT0gMCB8fCAoaWQgKyAzKSAlIDEzID09PSAwKSB7XFxuICAgICAgICBwb3N0X3N0ciA9IHBvc3Rfc3RyLnJlcGxhY2UoJ1xcXCJtZXRob2RcXFwiOlxcXCInLCAnXFxcIm1ldGhvZFxcXCIgOiBcXFwiJyk7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBwb3N0X3N0ciA9IHBvc3Rfc3RyLnJlcGxhY2UoJ1xcXCJtZXRob2RcXFwiOlxcXCInLCAnXFxcIm1ldGhvZFxcXCI6IFxcXCInKTtcXG4gICAgfVxcblxcbiAgICBsZXQgcmVzID0gZmV0Y2goJ2h0dHBzOi8vd3d3Mi5kZWVwbC5jb20vanNvbnJwYycsIHtcXG4gICAgICAgIGRuczogJ2h0dHBzOi8vZG5zLmFsaWRucy5jb20vZG5zLXF1ZXJ5JyxcXG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxcbiAgICAgICAgYm9keTogcG9zdF9zdHIsXFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xcbiAgICAgICAgfVxcbiAgICB9KTtcXG4gICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzKS5yZXN1bHQudGV4dHNbMF0udGV4dDtcXG5cXG4gICAgLypsZXQgaHRtbCA9IGZldGNoQ29kZUJ5V2ViVmlldygnaHR0cHM6Ly93d3cuZGVlcGwuY29tL3RyYW5zbGF0b3IjJyArIGZyb20gKyAnLycgKyB0byArICcvJyArIG9iai5xdWVyeSwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICdVc2VyLUFnZW50JzogUENfVUFcXG4gICAgICAgIH0sXFxuICAgICAgICBjaGVja0pzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICByZXR1cm4gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZGl2W2FyaWEtbGFiZWxsZWRieT1cXFwidHJhbnNsYXRpb24tcmVzdWx0cy1oZWFkaW5nXFxcIl0nKS5pbm5lclRleHQgfHwgbnVsbFxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGxldCByZXN1bHQgPSBwZGZoKGh0bWwsICdkaXZbYXJpYS1sYWJlbGxlZGJ5PVxcXCJ0cmFuc2xhdGlvbi1yZXN1bHRzLWhlYWRpbmdcXFwiXSYmcCYmVGV4dCcpOyovXFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShuYW1lLCByZXN1bHQpO1xcbn1cXG5cXG5mdW5jdGlvbiDph5HlsbHor43pnLgob2JqKSB7XFxuICAgIGNvbnN0IHVybCA9IFxcXCJodHRwOi8vZGljdC1tb2JpbGUuaWNpYmEuY29tL2ludGVyZmFjZS9pbmRleC5waHBcXFwiXFxuICAgIGxldCByZXMgPSByZXF1ZXN0KGJ1aWxkVXJsKHVybCwge1xcbiAgICAgICAgJ2MnOiBcXFwid29yZFxcXCIsXFxuICAgICAgICAnbSc6IFxcXCJnZXRzdWdnZXN0XFxcIixcXG4gICAgICAgICdudW1zJzogJzEnLFxcbiAgICAgICAgJ2NsaWVudCc6ICc2JyxcXG4gICAgICAgICdpc19uZWVkX21lYW4nOiAnMScsXFxuICAgICAgICAnd29yZCc6IG9iai5xdWVyeVxcbiAgICB9KSlcXG5cXG4gICAgbGV0IHJlc3VsdCA9IEpTT04ucGFyc2UocmVzKTtcXG4gICAgbGV0IHRleHQgPSBcXFwiPHVsPlxcXCI7XFxuICAgIGxldCBrayA9ICcmbmJzcDsnO1xcbiAgICBpZiAocmVzdWx0WydtZXNzYWdlJ10gJiYgcmVzdWx0WydtZXNzYWdlJ11bMF0gJiYgcmVzdWx0WydtZXNzYWdlJ11bMF1bJ21lYW5zJ10pIHtcXG4gICAgICAgIGZvciAobGV0IGkgb2YgcmVzdWx0WydtZXNzYWdlJ11bMF1bXFxcIm1lYW5zXFxcIl0pIHtcXG4gICAgICAgICAgICB0ZXh0ICs9ICc8bGk+JyArIGlbJ3BhcnQnXS5ib2xkKCkgKyBraztcXG4gICAgICAgICAgICBmb3IgKGxldCBqIG9mIGlbJ21lYW5zJ10pIHtcXG4gICAgICAgICAgICAgICAgdGV4dCArPSBqICsgXFxcIu+8m1xcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHRleHQgKz0gXFxcIjwvbGk+XFxcIjtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICB0ZXh0ICs9ICc8L3VsPic7XFxuXFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShhcmd1bWVudHMuY2FsbGVlLm5hbWUsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiDmtbfor43or43lhbgob2JqKSB7XFxuICAgIGNvbnN0IGh0bWwgPSBmZXRjaFBDKFxcXCJodHRwczovL2RpY3QuY24vXFxcIiArIG9iai5xdWVyeSk7XFxuICAgIGxldCBsaXN0ID0gcGRmYShodG1sLCAnLmJhc2ljJiZsaScpO1xcbiAgICBsaXN0LnBvcCgpO1xcbiAgICBsZXQgdGV4dCA9ICc8dWw+JyArIGxpc3Quam9pbignJykgKyAnPC91bD4nXFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShhcmd1bWVudHMuY2FsbGVlLm5hbWUsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiBDTktJ57+76K+RKG9iaikgeyAvL3pvdGVyb+S7heS4reiLseS6kuivkVxcbiAgICBsZXQgeGhyID0gZmV0Y2hQQyhcXG4gICAgICAgIFxcXCJodHRwczovL2RpY3QuY25raS5uZXQvZnl6cy1mcm9udC1hcGkvZ2V0VG9rZW5cXFwiLCB7XFxuICAgICAgICAgICAgcmVzcG9uc2VUeXBlOiBcXFwianNvblxcXCIsXFxuICAgICAgICB9XFxuICAgICk7XFxuICAgIGxldCB0b2tlbiA9IEpTT04ucGFyc2UoeGhyKS5kYXRhO1xcbiAgICBldmFsKGdldENyeXB0b0pTKCkpO1xcbiAgICBsZXQga2V5ID0gQ3J5cHRvSlMuZW5jLlV0ZjgucGFyc2UoJzRlODcxODNjZmQzYTQ1ZmUnKTtcXG4gICAgbGV0IHEgPSBDcnlwdG9KUy5BRVMuZW5jcnlwdChvYmoucXVlcnksIGtleSwge1xcbiAgICAgICAgbW9kZTogQ3J5cHRvSlMubW9kZS5FQ0IsXFxuICAgICAgICBwYWRkaW5nOiBDcnlwdG9KUy5wYWQuUGtjczdcXG4gICAgfSkudG9TdHJpbmcoKTtcXG4gICAgbGV0IHJlcyA9IHJlcXVlc3QoXFxcImh0dHBzOi8vZGljdC5jbmtpLm5ldC9meXpzLWZyb250LWFwaS90cmFuc2xhdGUvbGl0ZXJhbHRyYW5zbGF0aW9uXFxcIiwge1xcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIkNvbnRlbnQtVHlwZVxcXCI6IFxcXCJhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9VVRGLThcXFwiLFxcbiAgICAgICAgICAgIFRva2VuOiB0b2tlbixcXG4gICAgICAgIH0sXFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgd29yZHM6IHEsXFxuICAgICAgICAgICAgdHJhbnNsYXRlVHlwZTogbnVsbCxcXG4gICAgICAgIH0pLFxcbiAgICAgICAgcmVzcG9uc2VUeXBlOiBcXFwianNvblxcXCIsXFxuICAgIH0pXFxuICAgIGxldCB0ZXh0ID0gSlNPTi5wYXJzZShyZXMpLmRhdGEubVJlc3VsdDtcXG4gICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbHNcXFwiKS51cGRhdGVob21lKGFyZ3VtZW50cy5jYWxsZWUubmFtZSwgdGV4dCk7XFxufVxcblxcbmZ1bmN0aW9uIOeZvuW6pue/u+ivkShvYmopIHsgLy9pdHJhbnNcXG4gICAgbGV0IG5hbWUgPSBhcmd1bWVudHMuY2FsbGVlLm5hbWU7XFxuICAgIGxldCB7XFxuICAgICAgICBhcHBpZCxcXG4gICAgICAgIHNlY3JldFxcbiAgICB9ID0gc3RvcmFnZTAuZ2V0SXRlbShuYW1lKTtcXG5cXG4gICAgbGV0IHRhYmxlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdGFibGVcXFwiKS50YWJsZTtcXG4gICAgdmFyIHRvID0gdGFibGVbb2JqLnRhcl1bbmFtZV07XFxuICAgIHZhciBmcm9tID0gdGFibGVbb2JqLm9yaV1bbmFtZV07XFxuXFxuICAgIGlmIChhcHBpZCAmJiBzZWNyZXQpIHtcXG4gICAgICAgIGNvbnN0IHNhbHQgPSAobmV3IERhdGUpLmdldFRpbWUoKS50b1N0cmluZygpO1xcbiAgICAgICAgY29uc3Qgc3RyID0gYXBwaWQgKyBvYmoucXVlcnkgKyBzYWx0ICsgc2VjcmV0O1xcbiAgICAgICAgY29uc3Qgc2lnbiA9IG1kNShzdHIpO1xcblxcbiAgICAgICAgbGV0IHJlcyA9IGZldGNoUEMoYnVpbGRVcmwoXFxcImh0dHBzOi8vZmFueWktYXBpLmJhaWR1LmNvbS9hcGkvdHJhbnMvdmlwL3RyYW5zbGF0ZVxcXCIsIHtcXG4gICAgICAgICAgICBxOiBvYmoucXVlcnksXFxuICAgICAgICAgICAgZnJvbTogZnJvbSxcXG4gICAgICAgICAgICB0bzogdG8sXFxuICAgICAgICAgICAgYXBwaWQ6IGFwcGlkLFxcbiAgICAgICAgICAgIHNhbHQ6IHNhbHQsXFxuICAgICAgICAgICAgc2lnbjogc2lnblxcbiAgICAgICAgfSkpO1xcblxcbiAgICAgICAgdmFyIHRleHQgPSBKU09OLnBhcnNlKHJlcykudHJhbnNfcmVzdWx0WzBdLmRzdDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHZhciByZXMgPSBmZXRjaFBDKCdodHRwczovL2ZhbnlpLmJhaWR1LmNvbScpO1xcbiAgICAgICAgbGV0IGd0ayA9IC93aW5kb3dcXFxcLmd0ayA9IFsnXFxcIl0oLio/KVsnXFxcIl0vLmV4ZWMocmVzKVsxXTtcXG4gICAgICAgIGxldCBidG9rZW4gPSAvdG9rZW46IFsnXFxcIl0oLio/KVsnXFxcIl0vLmV4ZWMocmVzKVsxXTtcXG5cXG4gICAgICAgIGZ1bmN0aW9uIEZvKGEsIGIpIHtcXG4gICAgICAgICAgICBmb3IgKHZhciBjID0gMDsgYyA8IGIubGVuZ3RoIC0gMjsgYyArPSAzKSB7XFxuICAgICAgICAgICAgICAgIHZhciBkID0gYi5jaGFyQXQoYyArIDIpO1xcbiAgICAgICAgICAgICAgICBkID0gXFxcImFcXFwiIDw9IGQgPyBkLmNoYXJDb2RlQXQoMCkgLSA4NyA6IE51bWJlcihkKTtcXG4gICAgICAgICAgICAgICAgZCA9IFxcXCIrXFxcIiA9PSBiLmNoYXJBdChjICsgMSkgPyBhID4+PiBkIDogYSA8PCBkO1xcbiAgICAgICAgICAgICAgICBhID0gXFxcIitcXFwiID09IGIuY2hhckF0KGMpID8gYSArIGQgJiA0Mjk0OTY3Mjk1IDogYSBeIGQ7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIHJldHVybiBhO1xcbiAgICAgICAgfVxcblxcbiAgICAgICAgZnVuY3Rpb24gdGsoYSwgYikge1xcbiAgICAgICAgICAgIGlmIChiID09PSB1bmRlZmluZWQpIHJldHVybjtcXG4gICAgICAgICAgICB2YXIgZCA9IGIuc3BsaXQoXFxcIi5cXFwiKTtcXG4gICAgICAgICAgICBiID0gTnVtYmVyKGRbMF0pIHx8IDA7XFxuICAgICAgICAgICAgZm9yICh2YXIgZSA9IFtdLCBmID0gMCwgZyA9IDA7IGcgPCBhLmxlbmd0aDsgZysrKSB7XFxuICAgICAgICAgICAgICAgIHZhciBrID0gYS5jaGFyQ29kZUF0KGcpO1xcbiAgICAgICAgICAgICAgICAxMjggPiBrID8gZVtmKytdID0gayA6ICgyMDQ4ID4gayA/IGVbZisrXSA9IGsgPj4gNiB8IDE5MiA6ICg1NTI5NiA9PSAoayAmIDY0NTEyKSAmJiBnICsgMSA8IGEubGVuZ3RoICYmIDU2MzIwID09IChhLmNoYXJDb2RlQXQoZyArIDEpICYgNjQ1MTIpID8gKGsgPSA2NTUzNiArICgoayAmIDEwMjMpIDw8IDEwKSArIChhLmNoYXJDb2RlQXQoKytnKSAmIDEwMjMpLCBlW2YrK10gPSBrID4+IDE4IHwgMjQwLCBlW2YrK10gPSBrID4+IDEyICYgNjMgfCAxMjgpIDogZVtmKytdID0gayA+PiAxMiB8IDIyNCwgZVtmKytdID0gayA+PiA2ICYgNjMgfCAxMjgpLCBlW2YrK10gPSBrICYgNjMgfCAxMjgpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBhID0gYjtcXG4gICAgICAgICAgICBmb3IgKGYgPSAwOyBmIDwgZS5sZW5ndGg7IGYrKykgYSA9IEZvKGEgKyBlW2ZdLCBcXFwiKy1hXis2XFxcIik7XFxuICAgICAgICAgICAgYSA9IEZvKGEsIFxcXCIrLTNeK2IrLWZcXFwiKTtcXG4gICAgICAgICAgICBhIF49IE51bWJlcihkWzFdKSB8fCAwO1xcbiAgICAgICAgICAgIDAgPiBhICYmIChhID0gKGEgJiAyMTQ3NDgzNjQ3KSArIDIxNDc0ODM2NDgpO1xcbiAgICAgICAgICAgIGEgJT0gMUU2O1xcbiAgICAgICAgICAgIHJldHVybiBhLnRvU3RyaW5nKCkgKyBcXFwiLlxcXCIgKyAoYSBeIGIpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGUgPSBvYmoucXVlcnk7XFxuICAgICAgICB2YXIgZV9yID0gZS5sZW5ndGggPiAzMCA/IChlLnN1YnN0cigwLCAxMCkgKyBlLnN1YnN0cih+fihlLmxlbmd0aCAvIDIpIC0gNSwgMTApICsgZS5zdWJzdHIoLTEwKSkgOiBlO1xcbiAgICAgICAgZGF0YSA9IGBmcm9tPSR7ZnJvbX0mdG89JHt0b30mcXVlcnk9JHtlbmNvZGVVUklDb21wb25lbnQoZSl9JnNpbXBsZV9tZWFuc19mbGFnPTMmc2lnbj0ke3RrKGVfciwgZ3RrKX0mdG9rZW49JHtidG9rZW59JmRvbWFpbj1jb21tb25gO1xcbiAgICAgICAgcmVzID0gZmV0Y2hQQygnaHR0cHM6Ly9mYW55aS5iYWlkdS5jb20vdjJ0cmFuc2FwaT8nICsgZGF0YSwge1xcbiAgICAgICAgICAgIG1ldGhvZDogXFxcIlBPU1RcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb250ZW50LVR5cGVcXFwiOiBcXFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXFxcIlxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgdGV4dCA9IEpTT04ucGFyc2UocmVzKS50cmFuc19yZXN1bHQuZGF0YVswXS5kc3Q7XFxuICAgIH1cXG4gICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbHNcXFwiKS51cGRhdGVob21lKG5hbWUsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiDpmL/ph4znv7vor5Eob2JqKSB7IC8vaXRyYW5zXFxuICAgIGxldCBuYW1lID0gYXJndW1lbnRzLmNhbGxlZS5uYW1lO1xcblxcbiAgICBsZXQgdGFibGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlO1xcbiAgICB2YXIgdG8gPSB0YWJsZVtvYmoudGFyXVtuYW1lXTtcXG4gICAgdmFyIGZyb20gPSB0YWJsZVtvYmoub3JpXVtuYW1lXTtcXG5cXG4gICAgbGV0IGNzcmYgPSBKU09OLnBhcnNlKGZldGNoUEMoXFxcImh0dHBzOi8vdHJhbnNsYXRlLmFsaWJhYmEuY29tL2FwaS90cmFuc2xhdGUvY3NyZnRva2VuXFxcIikpLnRva2VuO1xcbiAgICBsZXQgZGF0YSA9IGBzcmNMYW5nPSR7ZnJvbX0mdGd0TGFuZz0ke3RvfSZkb21haW49Z2VuZXJhbCZfY3NyZj0ke2NzcmZ9JnF1ZXJ5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9iai5xdWVyeSl9YDtcXG4gICAgbGV0IHJlcyA9IGZldGNoUEMoJ2h0dHBzOi8vdHJhbnNsYXRlLmFsaWJhYmEuY29tL2FwaS90cmFuc2xhdGUvdGV4dD8nICsgZGF0YSwge1xcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICBcXFwiQ29udGVudC1UeXBlXFxcIjogXFxcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZFxcXCJcXG4gICAgfSk7XFxuICAgIGxldCB0ZXh0ID0gSlNPTi5wYXJzZShyZXMpLmRhdGEudHJhbnNsYXRlVGV4dDtcXG4gICAgJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdG9vbHNcXFwiKS51cGRhdGVob21lKG5hbWUsIHRleHQpO1xcbn1cXG5cXG5mdW5jdGlvbiDlv4XlupTnv7vor5Eob2JqKSB7IC8vaXRyYW5zXFxuICAgIGxldCBuYW1lID0gYXJndW1lbnRzLmNhbGxlZS5uYW1lO1xcblxcbiAgICBsZXQgdGFibGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlO1xcbiAgICB2YXIgdG8gPSB0YWJsZVtvYmoudGFyXVtuYW1lXTtcXG4gICAgdmFyIGZyb20gPSB0YWJsZVtvYmoub3JpXVtuYW1lXTtcXG5cXG4gICAgbGV0IGh0bWwgPSBmZXRjaFBDKCdodHRwczovL2NuLmJpbmcuY29tL3RyYW5zbGF0b3InKTtcXG4gICAgbGV0IGlnID0gaHRtbC5tYXRjaCgvSUc6XFxcIihbQS1aYS16MC05XSspXFxcIi8pWzFdO1xcbiAgICBsZXQgWywga2V5LCB0b2tlbl0gPSBodG1sLm1hdGNoKC92YXIgcGFyYW1zX0FidXNlUHJldmVudGlvbkhlbHBlclxcXFxzKj1cXFxccypcXFxcWyhbMC05XSspLFxcXFxzKlxcXCIoW15cXFwiXSspXFxcIixbXlxcXFxdXSpcXFxcXTsvKTtcXG4gICAgbGV0IGlpZCA9IHBhcnNlRG9tKGh0bWwsICcjcmljaF90dGEmJmRhdGEtaWlkJyk7XFxuXFxuICAgIGxldCByZXMgPSBmZXRjaFBDKGBodHRwczovL2NuLmJpbmcuY29tL3R0cmFuc2xhdGV2Mz9pc1ZlcnRpY2FsPTEmJklHPSR7aWd9JklJRD0ke2lpZH0mZnJvbUxhbmc9JHtmcm9tfSZ0bz0ke3RvfSZ0b2tlbj0ke3Rva2VufSZrZXk9JHtrZXl9JnRleHQ9JHtlbmNvZGVVUklDb21wb25lbnQob2JqLnF1ZXJ5KX1gLCB7XFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIixcXG4gICAgICAgIFxcXCJDb250ZW50LVR5cGVcXFwiOiBcXFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXFxcIlxcbiAgICB9KTtcXG4gICAgbGV0IHRleHQgPSBKU09OLnBhcnNlKHJlcylbMF0udHJhbnNsYXRpb25zWzBdLnRleHQ7XFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShuYW1lLCB0ZXh0KTtcXG59XFxuXFxuZnVuY3Rpb24g54Gr5bGx57+76K+RKG9iaikgeyAvL2JvYlxcbiAgICBsZXQgbmFtZSA9IGFyZ3VtZW50cy5jYWxsZWUubmFtZTtcXG5cXG4gICAgbGV0IHRhYmxlID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvdGFibGVcXFwiKS50YWJsZTtcXG4gICAgdmFyIHRvID0gdGFibGVbb2JqLnRhcl1bbmFtZV07XFxuICAgIHZhciBmcm9tID0gdGFibGVbb2JqLm9yaV1bbmFtZV07XFxuXFxuICAgIGxldCByZXMgPSBmZXRjaFBDKCdodHRwczovL3RyYW5zbGF0ZS52b2xjZW5naW5lLmNvbS9jcngvdHJhbnNsYXRlL3YxJywge1xcbiAgICAgICAgbWV0aG9kOiBcXFwiUE9TVFxcXCIsXFxuICAgICAgICBoZWFkZXI6IHtcXG4gICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxuICAgICAgICB9LFxcbiAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgIFxcXCJzb3VyY2VfbGFuZ3VhZ2VcXFwiOiBmcm9tLFxcbiAgICAgICAgICAgIFxcXCJ0YXJnZXRfbGFuZ3VhZ2VcXFwiOiB0byxcXG4gICAgICAgICAgICBcXFwidGV4dFxcXCI6IG9iai5xdWVyeSxcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGxldCB0ZXh0ID0gSlNPTi5wYXJzZShyZXMpLnRyYW5zbGF0aW9uO1xcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUobmFtZSwgdGV4dCk7XFxufVxcblxcbmZ1bmN0aW9uIOiFvuiur+S6pOS6kue/u+ivkShvYmopIHsgLy/msonmtbhcXG4gICAgbGV0IG5hbWUgPSBhcmd1bWVudHMuY2FsbGVlLm5hbWU7XFxuXFxuICAgIGxldCB0YWJsZSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3RhYmxlXFxcIikudGFibGU7XFxuICAgIHZhciB0byA9IHRhYmxlW29iai50YXJdW25hbWVdO1xcbiAgICB2YXIgZnJvbSA9IHRhYmxlW29iai5vcmldW25hbWVdO1xcblxcbiAgICBpZiAoZnJvbSA9PSBcXFwiYXV0b1xcXCIpIHtcXG4gICAgICAgIGxldCByZXMgPSBmZXRjaFBDKCdodHRwczovL3RyYW5zbWFydC5xcS5jb20vYXBpL2ltdCcsIHtcXG4gICAgICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIixcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJoZWFkZXJcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICBcXFwiZm5cXFwiOiBcXFwidGV4dF9hbmFseXNpc1xcXCIsXFxuICAgICAgICAgICAgICAgICAgICBcXFwiY2xpZW50X2tleVxcXCI6IFxcXCJkSEpoYm5OdFlYSjBYMk55ZUY5TmIzcHBiR3hoTHpVdU1DQW9WMmx1Wkc5M2N5Qk9WQ0F4TUM0d095QlhUMWMyTkNrZ1FYQndiR1ZYWldKTGFYUXZOVE0zTGpNMklDaExTRlJOXFxcIlxcbiAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICB0ZXh0OiBvYmoucXVlcnlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSk7XFxuICAgICAgICBmcm9tID0gSlNPTi5wYXJzZShyZXMpLmxhbmd1YWdlO1xcbiAgICB9O1xcblxcbiAgICBsZXQgcmVzID0gZmV0Y2hQQygnaHR0cHM6Ly90cmFuc21hcnQucXEuY29tL2FwaS9pbXQnLCB7XFxuICAgICAgICBtZXRob2Q6IFxcXCJQT1NUXFxcIixcXG4gICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICBcXFwiaGVhZGVyXFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwiZm5cXFwiOiBcXFwiYXV0b190cmFuc2xhdGlvbl9ibG9ja1xcXCIsXFxuICAgICAgICAgICAgICAgIFxcXCJjbGllbnRfa2V5XFxcIjogXFxcImRISmhibk50WVhKMFgyTnllRjlOYjNwcGJHeGhMelV1TUNBb1YybHVaRzkzY3lCT1ZDQXhNQzR3T3lCWFQxYzJOQ2tnUVhCd2JHVlhaV0pMYVhRdk5UTTNMak0ySUNoTFNGUk5cXFwiXFxuICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICBcXFwic291cmNlXFxcIjoge1xcbiAgICAgICAgICAgICAgICBcXFwibGFuZ1xcXCI6IGZyb20sXFxuICAgICAgICAgICAgICAgIFxcXCJvcmlnX3VybFxcXCI6IFxcXCJodHRwczovL2dvb2dsZS5jb21cXFwiLFxcbiAgICAgICAgICAgICAgICBcXFwidGV4dF9ibG9ja1xcXCI6IG9iai5xdWVyeVxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgXFxcInRhcmdldFxcXCI6IHtcXG4gICAgICAgICAgICAgICAgXFxcImxhbmdcXFwiOiB0b1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBsZXQgdGV4dCA9IEpTT04ucGFyc2UocmVzKS5hdXRvX3RyYW5zbGF0aW9uO1xcbiAgICAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90b29sc1xcXCIpLnVwZGF0ZWhvbWUobmFtZSwgdGV4dCk7XFxufVxcblxcbmZ1bmN0aW9uIOiwt+atjOe/u+ivkShvYmopIHsgLy9jZW50XFxuICAgIGxldCBuYW1lID0gYXJndW1lbnRzLmNhbGxlZS5uYW1lO1xcblxcbiAgICBsZXQgdGFibGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlO1xcbiAgICB2YXIgdG8gPSB0YWJsZVtvYmoudGFyXVtuYW1lXTtcXG4gICAgdmFyIGZyb20gPSB0YWJsZVtvYmoub3JpXVtuYW1lXTtcXG5cXG4gICAgbGV0IHJlcyA9IGZldGNoUEMoYGh0dHBzOi8vdHJhbnNsYXRlLmdvb2dsZWFwaXMuY29tL3RyYW5zbGF0ZV9hL3NpbmdsZT9jbGllbnQ9Z3R4JnNsPSR7ZnJvbX0mdGw9JHt0b30mZGo9MSZkdD10JmR0PWJkJmR0PXFjJmR0PXJtJmR0PWV4JmR0PWF0JmR0PXNzJmR0PXJ3JmR0PWxkJnE9JHtvYmoucXVlcnl9JnRrPTY5Mzg2Ni42OTM4NjZgKVxcblxcbiAgICBsZXQgdGV4dCA9IEpTT04ucGFyc2UocmVzKS5zZW50ZW5jZXNbMF0udHJhbnM7XFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShuYW1lLCB0ZXh0KTtcXG59XFxuXFxuZnVuY3Rpb24g6IW+6K6v57+76K+R5ZCbKG9iaikgey8v57+76K+R5py6XFxuICAgIGxldCBuYW1lID0gYXJndW1lbnRzLmNhbGxlZS5uYW1lO1xcblxcbiAgICBsZXQgdGFibGUgPSAkLnJlcXVpcmUoXFxcImhpa2VyOi8vcGFnZS90YWJsZVxcXCIpLnRhYmxlO1xcbiAgICB2YXIgdG8gPSB0YWJsZVtvYmoudGFyXVtuYW1lXTtcXG4gICAgdmFyIGZyb20gPSB0YWJsZVtvYmoub3JpXVtuYW1lXTtcXG5cXG4gICAgZnVuY3Rpb24gdHJhbnNsYXRlX3RlbmNlbnRfc3RhcnR1cCgpIHtcXG4gICAgICAgIGNvbnN0IGJhc2VfcmVzID0gZmV0Y2goJ2h0dHA6Ly9mYW55aS5xcS5jb20nLCB7XFxuICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcInRlc3RcXFwiLFxcbiAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgYW5vbnltb3VzOiB0cnVlLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGNvbnN0IHVyaSA9IC9yZWF1dGh1cmkgPSBcXFwiKC4qPylcXFwiLy5leGVjKGJhc2VfcmVzKVsxXVxcbiAgICAgICAgY29uc3QgcmVzID0gZmV0Y2goJ2h0dHBzOi8vZmFueWkucXEuY29tL2FwaS8nICsgdXJpLCB7XFxuICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgIH0pXFxuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShyZXMpO1xcbiAgICAgICAgcmV0dXJuIGRhdGFcXG4gICAgfVxcblxcbiAgICBjb25zdCB7XFxuICAgICAgICBxdGssXFxuICAgICAgICBxdHZcXG4gICAgfSA9IHRyYW5zbGF0ZV90ZW5jZW50X3N0YXJ0dXAoKTtcXG5cXG4gICAgbGV0IHJlcyA9IGZldGNoKFxcXCJodHRwczovL2ZhbnlpLnFxLmNvbS9hcGkvdHJhbnNsYXRlXFxcIiwge1xcbiAgICAgICAgbWV0aG9kOiAnUE9TVCcsXFxuICAgICAgICBib2R5OiBgc291cmNlPSR7ZnJvbX0mdGFyZ2V0PSR7dG99JnNvdXJjZVRleHQ9JHtvYmoucXVlcnl9JnF0dj0ke2VuY29kZVVSSUNvbXBvbmVudChxdHYpfSZxdGs9JHtlbmNvZGVVUklDb21wb25lbnQocXRrKX0mc2Vzc2lvblV1aWQ9dHJhbnNsYXRlX3V1aWQke0RhdGUubm93KCl9YCxcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiSG9zdFxcXCI6IFxcXCJmYW55aS5xcS5jb21cXFwiLFxcbiAgICAgICAgICAgIFxcXCJPcmlnaW5cXFwiOiBcXFwiaHR0cHM6Ly9mYW55aS5xcS5jb21cXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb250ZW50LVR5cGVcXFwiOiBcXFwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkXFxcIixcXG4gICAgICAgICAgICBcXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL2ZhbnlpLnFxLmNvbS9cXFwiLFxcbiAgICAgICAgICAgIFxcXCJYLVJlcXVlc3RlZC1XaXRoXFxcIjogXFxcIlhNTEh0dHBSZXF1ZXN0XFxcIixcXG4gICAgICAgIH1cXG4gICAgfSk7XFxuICAgIGxldCB0ZXh0ID0gSlNPTi5wYXJzZShyZXMpLnRyYW5zbGF0ZS5yZWNvcmRzLm1hcChlID0+IGUudGFyZ2V0VGV4dCkuam9pbignJyk7XFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL3Rvb2xzXFxcIikudXBkYXRlaG9tZShuYW1lLHRleHQpO1xcbn1cXG4kLmV4cG9ydHMgPSB7XFxuICAgIOafpeivjToge1xcbiAgICAgICAg5pyJ6YGT6K+N5YW4LFxcbiAgICAgICAg5b+F5bqU6K+N5YW4LFxcbiAgICAgICAg6YeR5bGx6K+N6Zy4LFxcbiAgICAgICAg5rW36K+N6K+N5YW4XFxuICAgIH0sXFxuICAgIOe/u+ivkToge1xcbiAgICAgICAg5pyJ6YGT57+76K+RLFxcbiAgICAgICAg55m+5bqm57+76K+RLFxcbiAgICAgICAg5b2p5LqR5bCP6K+RLFxcbiAgICAgICAg6Zi/6YeM57+76K+RLFxcbiAgICAgICAg54Gr5bGx57+76K+RLFxcbiAgICAgICAg6IW+6K6v57+76K+R5ZCbLFxcbiAgICAgICAg6IW+6K6v5Lqk5LqS57+76K+RLFxcbiAgICAgICAg5b+F5bqU57+76K+RLFxcbiAgICAgICAgQ05LSee/u+ivkSxcXG4gICAgICAgIOaQnOeLl+e/u+ivkSxcXG4gICAgICAgIOWlh+iZjue/u+ivkSxcXG4gICAgICAgIGRlZXBs57+76K+RLFxcbiAgICAgICAg6LC35q2M57+76K+RXFxuICAgIH1cXG59XCJ9LHtcIm5hbWVcIjpcIuW3peWFt+WHveaVsFwiLFwicGF0aFwiOlwidG9vbHNcIixcInJ1bGVcIjpcImZ1bmN0aW9uIGdldENvbmZpZygpe1xcbiAgbGV0IGNvbmZpZyA9IEpTT04ucGFyc2UocmVhZEZpbGUoXFxcImNvbmZpZ1xcXCIsMCkpO1xcbiAgbGV0IHJlc3VsdCA9IGNvbmZpZztcXG4gIGZvcihsZXQgaXQgb2YgYXJndW1lbnRzKXtcXG5cXHRyZXN1bHQgPSByZXN1bHRbaXRdO1xcbiAgfVxcbiAgcmV0dXJuIHJlc3VsdDtcXG59XFxuZnVuY3Rpb24gc2V0Q29uZmlnKCkge1xcbiAgICBsZXQgY29uZmlnID0gSlNPTi5wYXJzZShyZWFkRmlsZShcXFwiY29uZmlnXFxcIiwgMCkpO1xcbiAgICBhcmd1bWVudHMgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xcbiAgICBjb25zdCB2YWx1ZSA9IGFyZ3VtZW50cy5wb3AoKTtcXG4gICAgY29uc3QgbGFzdEtleSA9IGFyZ3VtZW50cy5wb3AoKTtcXG4gICAgbGV0IG9iaiA9IGNvbmZpZztcXG4gICAgZm9yIChsZXQga2V5IG9mIGFyZ3VtZW50cykge1xcbiAgICAgICAgb2JqID0gb2JqW2tleV07XFxuICAgIH1cXG4gICAgb2JqW2xhc3RLZXldID0gdmFsdWU7XFxuICAgIHNhdmVGaWxlKCdjb25maWcnLEpTT04uc3RyaW5naWZ5KGNvbmZpZyxudWxsLDIpLDApO1xcbn1cXG5mdW5jdGlvbiB1cGRhdGVob21lKG5hbWUsdGV4dCl7XFxuICB1cGRhdGVJdGVtKG5hbWUrXFxcIl9ob21lXFxcIiwge1xcbiAgICAgICAgdGl0bGU6IG5hbWVcXG4gICAgfSlcXG4gICAgYWRkSXRlbUFmdGVyKG5hbWUrXFxcIl9ob21lXFxcIiwge1xcbiAgICAgICAgdGl0bGU6IHRleHQsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCIsXFxuICAgICAgICBleHRyYToge1xcbiAgICAgICAgICAgIGNsczogXFxcInJlc3VsdFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuJC5leHBvcnRzPXtnZXRDb25maWcsc2V0Q29uZmlnLHVwZGF0ZWhvbWV9XCJ9XSIsImljb24iOiJodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8xNTAucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment