Advertisement
xiaomianao666

邀您一起看:锅炉设计及运行-超超临界锅炉设计及运行

Jul 5th, 2023
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥锅炉设计及运行-超超临界锅炉设计及运行@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcInRleHRfMVwiLFwibmFtZVwiOlwi5pCc57SiXCIsXCJwYXRoXCI6XCLmkJzntKJcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxudHJ5IHtcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcbiAgICAgICAgdmFyIGVuZ2luZXMgPSBbXFxcIllsaWJyYXJ5XFxcIiwgXFxcIlpoZWxwZXJfdjVcXFwiLCBcXFwiWmhlbHBlcl92NFxcXCIsIFxcXCLpuKDmkalcXFwiLCBcXFwiTGliZ2VuXFxcIiwgXFxcIuaXoOWQjeWbvuS5plxcXCIsIFxcXCLnvZHnm5hcXFwiXVxcbiAgICAgICAgZW5naW5lcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRJdGVtKFxcXCJlbmdpbmVcXFwiLCBcXFwiWWxpYnJhcnlcXFwiKSA9PSBpdGVtID8gYOKAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIiNmMTNiNjZhXFxcIj7il4kgPC9mcm9udD48L3N0cm9uZz4ke2l0ZW19YCA6IGl0ZW0sXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKFxcXCJlbmdpbmVcXFwiLCBuKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWIh+aNouW8leaTju+8mlxcXCIgKyBuXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcInNjcm9sbF9idXR0b25cXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH1cXG4gICAgdmFyIGhpc3RvcnkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXCJoaXN0b3J5XFxcIiwgW10pXFxuICAgIGlmICghaGlzdG9yeS5pbmNsdWRlcyhnZXRQYXJhbShcXFwia3dcXFwiKSkpIHtcXG4gICAgICAgIGhpc3RvcnkudW5zaGlmdChnZXRQYXJhbShcXFwia3dcXFwiKSlcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImhpc3RvcnlcXFwiLCBoaXN0b3J5KVxcbiAgICB9XFxuICAgICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpW2dldEl0ZW0oXFxcImVuZ2luZVxcXCIsIFxcXCJZbGlicmFyeVxcXCIpXShnZXRQYXJhbShcXFwia3dcXFwiKSwgTVlfUEFHRSlcXG59IGNhdGNoIChlKSB7XFxuICAgIHRvYXN0KFxcXCLmkJzntKLlpLHotKXkuobvvIzor7fliIfmjaLlvJXmk47ph43or5VcXFwiKVxcbiAgICBsb2coZS5tZXNzYWdlKVxcbn1cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJ0ZXh0XzFcIixcIm5hbWVcIjpcImFwaVwiLFwicGF0aFwiOlwiYXBpXCIsXCJydWxlXCI6XCIkLmV4cG9ydHMgPSB7XFxuICAgIHNlcnZlcnM6IFtcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXCIsIFxcXCJodHRwczovL2R3ZWIubGluay9pcGZzL1xcXCIsIFxcXCJodHRwczovL2lwZnMuanB1LmpwL2lwZnMvXFxcIiwgXFxcImh0dHBzOi8vY2YtaXBmcy5jb20vaXBmcy9cXFwiLCBcXFwiaHR0cHM6Ly9nYXRld2F5LnBpbmF0YS5jbG91ZC9pcGZzL1xcXCIsIFxcXCJodHRwczovL2lwZnMtZ2F0ZXdheS5jbG91ZC9pcGZzL1xcXCJdLFxcbiAgICBnZXRGaWxlU2l6ZTogZnVuY3Rpb24oc2l6ZSkge1xcbiAgICAgICAgaWYgKHNpemUgPD0gMCkge1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIGxldCB1bml0Rm9ybSA9IFtcXFwiQnl0ZVxcXCIsIFxcXCJLQlxcXCIsIFxcXCJNQlxcXCIsIFxcXCJHQlxcXCIsIFxcXCJUQlxcXCJdO1xcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHVuaXRGb3JtLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKHNpemUgPiAxMDI0KSB7XFxuICAgICAgICAgICAgICAgIHNpemUgLz0gMTAyNDtcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIHNpemUudG9GaXhlZCgyKS5yZXBsYWNlKC8oXFxcXC4wMCkkLywgXFxcIlxcXCIpICsgdW5pdEZvcm1baV07XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgcmV0dXJuIFxcXCJFUlJPUjrmlbDlgLzov4flpKdcXFwiO1xcbiAgICB9LFxcbiAgICBZbGlicmFyeTogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLnlsaWJyYXJ5Lm9yZy9hcGkvc2VhcmNoL1xcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjoga3csXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlXFxcIjogcGFnZSxcXG4gICAgICAgICAgICAgICAgXFxcInNlbnNpdGl2ZVxcXCI6IGZhbHNlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKS5kYXRhXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogYOKAnOKAnOKAneKAnTxzbWFsbD7kvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcIuaaguaXoFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXCLmmoLml6BcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXCLmmoLml6BcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL2FwaS55bGlicmFyeS5vcmcvYXBpL2RldGFpbC9cXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpZFxcXCI6IGlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNvdXJjZVxcXCI6IFxcXCJ6bGlicmFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VydmVycyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNlcnZlcnNcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcImlwZnPkuIvovb1cXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmluX2xpYmdlbikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcIkxpYmdlbijmjqjojZApXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoc2VydmVycywgMSwgXFxcIumAieaLqee6v+i3r1xcXCIpLnNlbGVjdCgocmVzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiTGliZ2VuKOaOqOiNkClcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIHBkZmgocmVxdWVzdChcXFwiaHR0cDovL2xpYnJhcnkubG9sL21haW4vXFxcIiArIHJlcy5tZDUpLCBcXFwiI2Rvd25sb2FkJiZhJiZocmVmXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiYXBpXFxcIikuYmFpZHUocmVzKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXCJpcGZz5LiL6L29XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGB4NTovL2h0dHBzOi8vaXBmcy1jaGVja2VyLjFrYnRvb2wuY29tLyR7cmVzLmlwZnNfY2lkfWBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwiaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWQgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGlucHV0ICsgcmVzLmlwZnNfY2lkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMpXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6Kej5p6Q5aSx6LSlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBaaGVscGVyX3Y1OiBmdW5jdGlvbihrdywgcGFnZSkge1xcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkudjUuemhlbHBlci5uZXQvYXBpL3NlYXJjaC9cXFwiLCB7XFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcbiAgICAgICAgICAgICAgICBcXFwia2V5d29yZFxcXCI6IGt3LFxcbiAgICAgICAgICAgICAgICBcXFwicGFnZVxcXCI6IHBhZ2UsXFxuICAgICAgICAgICAgICAgIFxcXCJzZW5zaXRpdmVcXFwiOiBmYWxzZVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KSkuZGF0YVxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGl0ZW0udGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6IGDigJzigJzigJ3igJ08c21hbGw+5L2c6ICFOiR7aXRlbS5hdXRob3J9IOWHuueJiOekvjoke2l0ZW0ucHVibGlzaGVyP2l0ZW0ucHVibGlzaGVyOlxcXCLmmoLml6BcXFwifSBJU0JOOiR7aXRlbS5pc2JuP2l0ZW0uaXNibjpcXFwi5pqC5pegXFxcIn0g5Ye654mI5pe26Ze0OiR7aXRlbS55ZWFyP2l0ZW0ueWVhcjpcXFwi5pqC5pegXFxcIn0g5paH5Lu25qC85byPOiR7aXRlbS5leHRlbnNpb259IOaWh+S7tuWkp+WwjzokeyQucmVxdWlyZShcXFwiYXBpXFxcIikuZ2V0RmlsZVNpemUoaXRlbS5maWxlc2l6ZSl9PC9zbWFsbD5gLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkudjUuemhlbHBlci5uZXQvYXBpL2RldGFpbC9cXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpZFxcXCI6IGlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNvdXJjZVxcXCI6IFxcXCJ6bGlicmFyeVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VydmVycyA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXCIpLnNlcnZlcnNcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcImlwZnPkuIvovb1cXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmluX2xpYmdlbikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcIkxpYmdlbijmjqjojZApXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoc2VydmVycywgMSwgXFxcIumAieaLqee6v+i3r1xcXCIpLnNlbGVjdCgocmVzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCA9PSBcXFwiTGliZ2VuKOaOqOiNkClcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIHBkZmgocmVxdWVzdChcXFwiaHR0cDovL2xpYnJhcnkubG9sL21haW4vXFxcIiArIHJlcy5tZDUpLCBcXFwiI2Rvd25sb2FkJiZhJiZocmVmXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFwiYXBpXFxcIikuYmFpZHUocmVzKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXCJpcGZz5LiL6L29XFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGB4NTovL2h0dHBzOi8vaXBmcy1jaGVja2VyLjFrYnRvb2wuY29tLyR7cmVzLmlwZnNfY2lkfWBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcyhcXFwiaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWQgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIGlucHV0ICsgcmVzLmlwZnNfY2lkXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMpXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6Kej5p6Q5aSx6LSlXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcbiAgICAgICAgICAgIH0pXFxuICAgICAgICB9KVxcbiAgICB9LFxcbiAgICBaaGVscGVyX3Y0OiBmdW5jdGlvbihrdywgcGFnZSkge1xcbiAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkubWlib29rcy50ay9hcGkvc2VhcmNoL1xcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxuICAgICAgICAgICAgICAgIFxcXCJrZXl3b3JkXFxcIjoga3csXFxuICAgICAgICAgICAgICAgIFxcXCJwYWdlXFxcIjogcGFnZSxcXG4gICAgICAgICAgICAgICAgXFxcInNlbnNpdGl2ZVxcXCI6IGZhbHNlXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pKS5kYXRhXFxuICAgICAgICByZXMuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXG4gICAgICAgICAgICAgICAgZGVzYzogYOKAnOKAnOKAneKAnTxzbWFsbD7kvZzogIU6JHtpdGVtLmF1dGhvcn0g5Ye654mI56S+OiR7aXRlbS5wdWJsaXNoZXI/aXRlbS5wdWJsaXNoZXI6XFxcIuaaguaXoFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXCLmmoLml6BcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXCLmmoLml6BcXFwifSDmlofku7bmoLzlvI86JHtpdGVtLmV4dGVuc2lvbn0g5paH5Lu25aSn5bCPOiR7JC5yZXF1aXJlKFxcXCJhcGlcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgc2VydmVycyA9IFsnaHR0cHM6Ly90ZXN0MS56bGliLmRvd25sb2FkJywgJ2h0dHBzOi8vdGVzdDIuemxpYi5kb3dubG9hZCcsICdodHRwczovL3psaWIuamcxMjEyMy5vbmUnXVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHNlcnZlcnMsIDEsIFxcXCLor7fpgInmi6nkuIvovb3nur/ot69cXFwiKS5zZWxlY3QoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgaW5wdXQgKyBcXFwiL2Rvd25sb2FkL1xcXCIgKyBpZCArIFxcXCIvXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKVxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ino+aekOWksei0pVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZClcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAg6big5pGpOiBmdW5jdGlvbihrdykge1xcbiAgICAgICAgdmFyIGlkID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3d3dzUuaml1bW9kaWFyeS5jb20vaW5pdF9odWJzLnBocFxcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIHE6IGt3LFxcbiAgICAgICAgICAgICAgICByZW1vdGVfaXA6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICB0aW1lX2ludDogRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKSArIFxcXCJcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpLmlkXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXCJodHRwczovL3d3dzUuaml1bW9kaWFyeS5jb20vYWpheF9mZXRjaF9odWJzLnBocFxcXCIsIHtcXG4gICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcXG4gICAgICAgICAgICAgICAgc2V0OiAwXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSkpLnNvdXJjZXNcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGl0ZW0uZGV0YWlscy5kYXRhLmZvckVhY2goaXRlbTIgPT4ge1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFxcXCLigJzigJzigJ3igJ1cXFwiICsgaXRlbTIudGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwi4oCc4oCc4oCd4oCdXFxcIiArIGl0ZW0yLmRlcyArIFxcXCJcXFxcblxcXCIgKyBpdGVtMi52X2RlcyxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogXFxcImh0dHA6XFxcIiArIGl0ZW0yLmltZ19saW5rLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IGl0ZW0yLmltZ19saW5rID8gXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcIiA6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBpdGVtMi5saW5rXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIGNoZWNrTGliZ2VuOiBmdW5jdGlvbigpIHtcXG4gICAgICAgIHZhciBkb21haW5zID0gW1xcXCJodHRwOi8vbGliZ2VuLnJzXFxcIiwgXFxcImh0dHA6Ly9saWJnZW4uaXNcXFwiLCBcXFwiaHR0cDovL2xpYmdlbi5zdFxcXCJdXFxuICAgICAgICB0cnkge1xcbiAgICAgICAgICAgIGZvciAoaXRlbSBvZiBkb21haW5zKSB7XFxuICAgICAgICAgICAgICAgIHZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGl0ZW0sIHtcXG4gICAgICAgICAgICAgICAgICAgIHdpdGhTdGF0dXNDb2RlOiB0cnVlXFxuICAgICAgICAgICAgICAgIH0pKS5zdGF0dXNDb2RlXFxuICAgICAgICAgICAgICAgIGlmIChjb2RlID09IDIwMCkge1xcbiAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFwibGliZ2VuXFxcIiwgaXRlbSlcXG4gICAgICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLmo4DmtYvliLDlj6/nlKjplZzlg49cXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcbiAgICAgICAgICAgICAgICAgICAgYnJlYWtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB0b2FzdChcXFwi5omA5pyJ6ZWc5YOP6YO95peg5rOV5L2/55So77yM6K+35omT5byAVFrkvb/nlKhcXFwiKVxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIExpYmdlbjogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXG4gICAgICAgIGlmIChnZXRJdGVtKFxcXCJsaWJnZW5cXFwiLCBcXFwiXFxcIikgPT0gXFxcIlxcXCIpIHtcXG4gICAgICAgICAgICB0b2FzdChcXFwi5peg5Y+v55So6ZWc5YOP77yM5q2j5Zyo5qOA5rWL5LitLi4uXFxcIilcXG4gICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFwaVxcXCIpLmNoZWNrTGliZ2VuKClcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgdmFyIHVybCA9IGdldEl0ZW0oXFxcImxpYmdlblxcXCIpICsgXFxcIi9zZWFyY2gucGhwP3JlcT1cXFwiICsga3cgKyBcXFwiJnBhZ2U9XFxcIiArIHBhZ2VcXG4gICAgICAgICAgICB2YXIgciA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXG4gICAgICAgICAgICAgICAgd2l0aEhlYWRlcnM6IHRydWVcXG4gICAgICAgICAgICB9KSlcXG4gICAgICAgICAgICBpZiAoci5zdGF0dXNDb2RlID09IDIwMCkge1xcbiAgICAgICAgICAgICAgICB2YXIgcmVzID0gci5ib2R5XFxuICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gcGRmYShyZXMsIFxcXCJib2R5JiZ0clxcXCIpLmZpbHRlcihpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpdGVtLmluY2x1ZGVzKFxcXCJub3dyYXBcXFwiKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtXFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsaSA9IGl0ZW0ubWF0Y2gobmV3IFJlZ0V4cChcXFwiPHRkKC4qPyk8L3RkPlxcXCIsIFxcXCJnXFxcIikpXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVzYyA9IFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcIiArIHBkZmgobGlbMV0sIFxcXCJhJiZUZXh0XFxcIilcXG4gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAzOyBpIDwgbGkubGVuZ3RoIC0gMzsgaSsrKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYyArPSBcXFwi77ybXFxcIiArIHBkZmgobGlbaV0sIFxcXCJUZXh0XFxcIilcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gXFxcIjwvc21hbGw+XFxcIlxcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChsaVsyXSwgXFxcIlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBkZXNjLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChsaSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImRvd25sb2FkOi8vXFxcIiArIHBkZmgocmVxdWVzdChwZGZoKGxpWzldLCBcXFwiYSYmaHJlZlxcXCIpKSwgXFxcIiNkb3dubG9hZCYmYSYmaHJlZlxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgbGkpXFxuICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXCLplZzlg4/lpLHmlYjvvIzph43mlrDmo4DmtYvkuK0uLi5cXFwiKVxcbiAgICAgICAgICAgICAgICAkLnJlcXVpcmUoXFxcImFwaVxcXCIpLmNoZWNrTGliZ2VuKClcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH0sXFxuICAgIOe9keebmDogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vYXBpLmJvb2twYW4ubmV0L2FwaS9zZWFyY2gvXFxcIiwge1xcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgXFxcImtleXdvcmRcXFwiOiBrdyxcXG4gICAgICAgICAgICAgICAgXFxcInBhZ2VcXFwiOiBwYWdlLFxcbiAgICAgICAgICAgICAgICBcXFwic2Vuc2l0aXZlXFxcIjogZmFsc2VcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSkpLmRhdGFcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLmluZm8sXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcIiArIGl0ZW0uc291cmNlICsgXFxcIjwvc21hbGw+XFxcIixcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkLCBzb3VyY2UpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFwiaHR0cHM6Ly9hcGkuYm9va3Bhbi5uZXQvYXBpL2RldGFpbC9cXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpZFxcXCI6IGlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInNvdXJjZVxcXCI6IHNvdXJjZVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZG93bmxvYWRfbGluaykge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGljdCA9IHt9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5kb3dubG9hZF9saW5rLnVuc2hpZnQoe1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXFxcIuWOn+e9kemhtVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6IHJlcy51cmxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQocmVzLmRvd25sb2FkX2xpbmsubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtLm5hbWVcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDEsIFxcXCLor7fpgInmi6nkuIvovb3nur/ot69cXFwiKS5zZWxlY3QoKGxpbmtzKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbGlua3NbbGlua3MubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KS5pbmRleE9mKGlucHV0KV0udXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIHJlcy5kb3dubG9hZF9saW5rKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXMudXJsXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+ino+aekOWksei0pVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZCwgaXRlbS5zb3VyY2UpXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0pXFxuICAgIH0sXFxuICAgIOaXoOWQjeWbvuS5pjogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXG4gICAgICAgIHZhciB1cmwgPSBcXFwiaHR0cHM6Ly93d3cuYm9vazEyMy5pbmZvL2xpc3Q/a2V5PVxcXCIgKyBrdyArIFxcXCImcGFnZT1cXFwiICsgcGFnZVxcbiAgICAgICAgdmFyIHJlcyA9IHJlcXVlc3QodXJsKVxcbiAgICAgICAgdmFyIGxpc3QgPSBwZGZhKHJlcywgXFxcIi5saXN0X3BhZ2VDb250ZW50X196X3l6diYmbGlcXFwiKVxcbiAgICAgICAgbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sIFxcXCIubGlzdF90aXRsZV9fMDZudDImJlRleHRcXFwiKSxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcIuKAnOKAnOKAneKAnTxzbWFsbD5cXFwiICsgcGRmaChpdGVtLCBcXFwiLmxpc3RfYXV0aG9yX19sUHdwbCYmVGV4dFxcXCIpICsgXFxcIlxcXFxuXFxcIiArIHBkZmgoaXRlbSwgXFxcIi5saXN0X3JhdGVfX0o3T3gxJiZUZXh0XFxcIikgKyBcXFwiXFxcXG5cXFwiICsgcGRmaChpdGVtLCBcXFwiLmxpc3RfZGVzY19fa0pqMVkmJlRleHRcXFwiKSArIFxcXCI8L3NtYWxsPlxcXCIsXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKCh1cmwpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiZG93bmxvYWQ6Ly9cXFwiICsgcGRmaChyZXF1ZXN0KHVybCksIFxcXCIuZGV0YWlsX2Rvd25sb2FkX2J0bl9fdjdiN2smJmhyZWZcXFwiKVxcbiAgICAgICAgICAgICAgICB9LCBcXFwiaHR0cHM6Ly93d3cuYm9vazEyMy5pbmZvXFxcIiArIHBkZmgoaXRlbSwgXFxcImEmJmhyZWZcXFwiKSlcXG4gICAgICAgICAgICB9KVxcbiAgICAgICAgfSlcXG4gICAgfSxcXG4gICAgYmFpZHU6IGZ1bmN0aW9uKHJlcykge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBpZiAoIWZpbGVFeGlzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcIikpIHtcXG4gICAgICAgICAgICAgICAgdG9hc3QoXFxcIui/mOacqueZu+mZhlxcXCIpXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW3tcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6IFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFwiMTAwJSYmZmxvYXRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBsb2NhdGlvbi5ocmVmXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXJsLmluY2x1ZGVzKFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vd2FwXFxcIikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEud3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFwiLCBmYmEuZ2V0Q29va2llKFxcXCJcXFwiKSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGVydChcXFwi5bey6I635Y+W5YiwY29va2ll77yM6L+U5Zue5Y2z5Y+vXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEuYmFjaygpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YTogTU9CSUxFX1VBLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5CYWNrOiB0cnVlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfV0pXFxuICAgICAgICAgICAgICAgIH0pXFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIGJkc3Rva2VuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXCJodHRwczovL3Bhbi5iYWlkdS5jb20vYXBpL2dldHRlbXBsYXRldmFyaWFibGU/ZmllbGRzPVslMjJiZHN0b2tlbiUyMl1cXFwiLCB7XFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llOiByZXF1ZXN0KFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9KSkucmVzdWx0LmJkc3Rva2VuXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXCIv55S15a2Q5LmmL1xcXCIgKyByZXMudGl0bGUgKyBcXFwiLlxcXCIgKyByZXMuZXh0ZW5zaW9uLCBcXFwi6K+36L6T5YWl5L+d5a2Y6Lev5b6EXFxcIikuaW5wdXQoKGJkc3Rva2VuLCByZXMpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9yZXN0LzIuMC94cGFuL2ZpbGU/bWV0aG9kPWNyZWF0ZSZiZHN0b2tlbj1cXFwiICsgYmRzdG9rZW4sIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvb2tpZTogcmVxdWVzdChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogcmVzLmZpbGVzaXplICsgXFxcIlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGlucHV0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja19saXN0OiBbcmVzLm1kNV0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ0eXBlOiAwXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmVycm5vID09IDApIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L2s5a2Y5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJybm8gPT0gLTgpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSl77yM5bey57uP5L+d5a2Y6L+H6L+Z5Liq5paH5Lu25LqGXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMuZXJybm8gPT0gMikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKXvvIzplJnor6/nmoTot6/lvoRcXFwiXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhyZXMuZXJybm8pXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pVxcXCJcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwgYmRzdG9rZW4sIHJlcylcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSlXFxcIlxcbiAgICAgICAgfVxcbiAgICB9XFxufVwifV0sXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIlpsaWIgUHJvXCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eVwiLFwiY29sX3R5cGVcIjpcIng1X3dlYnZpZXdfc2luZ2xlXCIsXCJmaW5kX3J1bGVcIjpcImpzOnNldFJlc3VsdChbe1xcbiAgICB1cmw6XFxcImh0dHBzOi8vaXBmcy1jaGVja2VyLjFrYnRvb2wuY29tL3VuZGVmaW5lZFxcXCIsXFxuZGVzYzpcXFwiMTAwJSYmZmxvYXRcXFwiLFxcbmV4dHJhOntjYW5CYWNrOiB0cnVlfVxcbn1dKTtcIixcImdyb3VwXCI6XCLpmIXor7tcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcInRleHRfMVxcXCIsXFxcIm5hbWVcXFwiOlxcXCLmkJzntKJcXFwiLFxcXCJwYXRoXFxcIjpcXFwi5pCc57SiXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbnRyeSB7XFxcXG4gICAgaWYgKE1ZX1BBR0UgPT0gMSkge1xcXFxuICAgICAgICB2YXIgZW5naW5lcyA9IFtcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIsIFxcXFxcXFwiWmhlbHBlcl92NVxcXFxcXFwiLCBcXFxcXFxcIlpoZWxwZXJfdjRcXFxcXFxcIiwgXFxcXFxcXCLpuKDmkalcXFxcXFxcIiwgXFxcXFxcXCJMaWJnZW5cXFxcXFxcIiwgXFxcXFxcXCLml6DlkI3lm77kuaZcXFxcXFxcIiwgXFxcXFxcXCLnvZHnm5hcXFxcXFxcIl1cXFxcbiAgICAgICAgZW5naW5lcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogZ2V0SXRlbShcXFxcXFxcImVuZ2luZVxcXFxcXFwiLCBcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIpID09IGl0ZW0gPyBg4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFxcXFxcIiNmMTNiNjZhXFxcXFxcXCI+4peJIDwvZnJvbnQ+PC9zdHJvbmc+JHtpdGVtfWAgOiBpdGVtLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcXFxcXCJlbmdpbmVcXFxcXFxcIiwgbilcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+W3suWIh+aNouW8leaTju+8mlxcXFxcXFwiICsgblxcXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0pLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9XFxcXG4gICAgdmFyIGhpc3RvcnkgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXFxcXFwiaGlzdG9yeVxcXFxcXFwiLCBbXSlcXFxcbiAgICBpZiAoIWhpc3RvcnkuaW5jbHVkZXMoZ2V0UGFyYW0oXFxcXFxcXCJrd1xcXFxcXFwiKSkpIHtcXFxcbiAgICAgICAgaGlzdG9yeS51bnNoaWZ0KGdldFBhcmFtKFxcXFxcXFwia3dcXFxcXFxcIikpXFxcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcXFxcXCJoaXN0b3J5XFxcXFxcXCIsIGhpc3RvcnkpXFxcXG4gICAgfVxcXFxuICAgICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9hcGlcXFxcXFxcIilbZ2V0SXRlbShcXFxcXFxcImVuZ2luZVxcXFxcXFwiLCBcXFxcXFxcIllsaWJyYXJ5XFxcXFxcXCIpXShnZXRQYXJhbShcXFxcXFxcImt3XFxcXFxcXCIpLCBNWV9QQUdFKVxcXFxufSBjYXRjaCAoZSkge1xcXFxuICAgIHRvYXN0KFxcXFxcXFwi5pCc57Si5aSx6LSl5LqG77yM6K+35YiH5o2i5byV5pOO6YeN6K+VXFxcXFxcXCIpXFxcXG4gICAgbG9nKGUubWVzc2FnZSlcXFxcbn1cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwidGV4dF8xXFxcIixcXFwibmFtZVxcXCI6XFxcImFwaVxcXCIsXFxcInBhdGhcXFwiOlxcXCJhcGlcXFwiLFxcXCJydWxlXFxcIjpcXFwiJC5leHBvcnRzID0ge1xcXFxuICAgIHNlcnZlcnM6IFtcXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFxcXFxcIiwgXFxcXFxcXCJodHRwczovL2R3ZWIubGluay9pcGZzL1xcXFxcXFwiLCBcXFxcXFxcImh0dHBzOi8vaXBmcy5qcHUuanAvaXBmcy9cXFxcXFxcIiwgXFxcXFxcXCJodHRwczovL2NmLWlwZnMuY29tL2lwZnMvXFxcXFxcXCIsIFxcXFxcXFwiaHR0cHM6Ly9nYXRld2F5LnBpbmF0YS5jbG91ZC9pcGZzL1xcXFxcXFwiLCBcXFxcXFxcImh0dHBzOi8vaXBmcy1nYXRld2F5LmNsb3VkL2lwZnMvXFxcXFxcXCJdLFxcXFxuICAgIGdldEZpbGVTaXplOiBmdW5jdGlvbihzaXplKSB7XFxcXG4gICAgICAgIGlmIChzaXplIDw9IDApIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGxldCB1bml0Rm9ybSA9IFtcXFxcXFxcIkJ5dGVcXFxcXFxcIiwgXFxcXFxcXCJLQlxcXFxcXFwiLCBcXFxcXFxcIk1CXFxcXFxcXCIsIFxcXFxcXFwiR0JcXFxcXFxcIiwgXFxcXFxcXCJUQlxcXFxcXFwiXTtcXFxcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHVuaXRGb3JtLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XFxcXG4gICAgICAgICAgICBpZiAoc2l6ZSA+IDEwMjQpIHtcXFxcbiAgICAgICAgICAgICAgICBzaXplIC89IDEwMjQ7XFxcXG4gICAgICAgICAgICAgICAgY29udGludWU7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBzaXplLnRvRml4ZWQoMikucmVwbGFjZSgvKFxcXFxcXFxcLjAwKSQvLCBcXFxcXFxcIlxcXFxcXFwiKSArIHVuaXRGb3JtW2ldO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIHJldHVybiBcXFxcXFxcIkVSUk9SOuaVsOWAvOi/h+Wkp1xcXFxcXFwiO1xcXFxuICAgIH0sXFxcXG4gICAgWWxpYnJhcnk6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS55bGlicmFyeS5vcmcvYXBpL3NlYXJjaC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwia2V5d29yZFxcXFxcXFwiOiBrdyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNlbnNpdGl2ZVxcXFxcXFwiOiBmYWxzZVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRhdGFcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGDigJzigJzigJ3igJ08c21hbGw+5L2c6ICFOiR7aXRlbS5hdXRob3J9IOWHuueJiOekvjoke2l0ZW0ucHVibGlzaGVyP2l0ZW0ucHVibGlzaGVyOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IOWHuueJiOaXtumXtDoke2l0ZW0ueWVhcj9pdGVtLnllYXI6XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0g5paH5Lu25qC85byPOiR7aXRlbS5leHRlbnNpb259IOaWh+S7tuWkp+WwjzokeyQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkueWxpYnJhcnkub3JnL2FwaS9kZXRhaWwvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwic291cmNlXFxcXFxcXCI6IFxcXFxcXFwiemxpYnJhcnlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZXJ2ZXJzID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaVxcXFxcXFwiKS5zZXJ2ZXJzXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCJpcGZz5LiL6L29XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCLnmb7luqbkupHnm5jovazlrZhcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuaW5fbGliZ2VuKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVycy51bnNoaWZ0KFxcXFxcXFwiTGliZ2VuKOaOqOiNkClcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHNlcnZlcnMsIDEsIFxcXFxcXFwi6YCJ5oup57q/6LevXFxcXFxcXCIpLnNlbGVjdCgocmVzKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09IFxcXFxcXFwiTGliZ2VuKOaOqOiNkClcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgcGRmaChyZXF1ZXN0KFxcXFxcXFwiaHR0cDovL2xpYnJhcnkubG9sL21haW4vXFxcXFxcXCIgKyByZXMubWQ1KSwgXFxcXFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXFxcXFwi55m+5bqm5LqR55uY6L2s5a2YXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5iYWlkdShyZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PSBcXFxcXFxcImlwZnPkuIvovb1cXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYHg1Oi8vaHR0cHM6Ly9pcGZzLWNoZWNrZXIuMWtidG9vbC5jb20vJHtyZXMuaXBmc19jaWR9YFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQuaW5jbHVkZXMoXFxcXFxcXCJpcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb21cXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIGlucHV0ICsgcmVzLmlwZnNfY2lkICsgXFxcXFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiZG93bmxvYWQ6Ly9cXFxcXFxcIiArIGlucHV0ICsgcmVzLmlwZnNfY2lkXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSwgcmVzKVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZClcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICBaaGVscGVyX3Y1OiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkudjUuemhlbHBlci5uZXQvYXBpL3NlYXJjaC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwia2V5d29yZFxcXFxcXFwiOiBrdyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNlbnNpdGl2ZVxcXFxcXFwiOiBmYWxzZVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRhdGFcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IGDigJzigJzigJ3igJ08c21hbGw+5L2c6ICFOiR7aXRlbS5hdXRob3J9IOWHuueJiOekvjoke2l0ZW0ucHVibGlzaGVyP2l0ZW0ucHVibGlzaGVyOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IElTQk46JHtpdGVtLmlzYm4/aXRlbS5pc2JuOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IOWHuueJiOaXtumXtDoke2l0ZW0ueWVhcj9pdGVtLnllYXI6XFxcXFxcXCLmmoLml6BcXFxcXFxcIn0g5paH5Lu25qC85byPOiR7aXRlbS5leHRlbnNpb259IOaWh+S7tuWkp+WwjzokeyQucmVxdWlyZShcXFxcXFxcImFwaVxcXFxcXFwiKS5nZXRGaWxlU2l6ZShpdGVtLmZpbGVzaXplKX08L3NtYWxsPmAsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkudjUuemhlbHBlci5uZXQvYXBpL2RldGFpbC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJzb3VyY2VcXFxcXFxcIjogXFxcXFxcXCJ6bGlicmFyeVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcnZlcnMgPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpLnNlcnZlcnNcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFxcXFxcImlwZnPkuIvovb1cXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcnMudW5zaGlmdChcXFxcXFxcIueZvuW6puS6keebmOi9rOWtmFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcy5pbl9saWJnZW4pIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJzLnVuc2hpZnQoXFxcXFxcXCJMaWJnZW4o5o6o6I2QKVxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoc2VydmVycywgMSwgXFxcXFxcXCLpgInmi6nnur/ot69cXFxcXFxcIikuc2VsZWN0KChyZXMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPT0gXFxcXFxcXCJMaWJnZW4o5o6o6I2QKVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIgKyBwZGZoKHJlcXVlc3QoXFxcXFxcXCJodHRwOi8vbGlicmFyeS5sb2wvbWFpbi9cXFxcXFxcIiArIHJlcy5tZDUpLCBcXFxcXFxcIiNkb3dubG9hZCYmYSYmaHJlZlxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT0gXFxcXFxcXCLnmb7luqbkupHnm5jovazlrZhcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJC5yZXF1aXJlKFxcXFxcXFwiYXBpXFxcXFxcXCIpLmJhaWR1KHJlcylcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09IFxcXFxcXFwiaXBmc+S4i+i9vVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgeDU6Ly9odHRwczovL2lwZnMtY2hlY2tlci4xa2J0b29sLmNvbS8ke3Jlcy5pcGZzX2NpZH1gXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dC5pbmNsdWRlcyhcXFxcXFxcImlwZnNndzAwLnN0YXJpdmVycGFuLmNvbVxcXFxcXFwiKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWQgKyBcXFxcXFxcIjt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgaW5wdXQgKyByZXMuaXBmc19jaWRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+ino+aekOWksei0pVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LCBpdGVtLmlkKVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIFpoZWxwZXJfdjQ6IGZ1bmN0aW9uKGt3LCBwYWdlKSB7XFxcXG4gICAgICAgIHZhciByZXMgPSBKU09OLnBhcnNlKHBvc3QoXFxcXFxcXCJodHRwczovL2FwaS5taWJvb2tzLnRrL2FwaS9zZWFyY2gvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcImtleXdvcmRcXFxcXFxcIjoga3csXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJwYWdlXFxcXFxcXCI6IHBhZ2UsXFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJzZW5zaXRpdmVcXFxcXFxcIjogZmFsc2VcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pKS5kYXRhXFxcXG4gICAgICAgIHJlcy5mb3JFYWNoKGl0ZW0gPT4ge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogaXRlbS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBg4oCc4oCc4oCd4oCdPHNtYWxsPuS9nOiAhToke2l0ZW0uYXV0aG9yfSDlh7rniYjnpL46JHtpdGVtLnB1Ymxpc2hlcj9pdGVtLnB1Ymxpc2hlcjpcXFxcXFxcIuaaguaXoFxcXFxcXFwifSBJU0JOOiR7aXRlbS5pc2JuP2l0ZW0uaXNibjpcXFxcXFxcIuaaguaXoFxcXFxcXFwifSDlh7rniYjml7bpl7Q6JHtpdGVtLnllYXI/aXRlbS55ZWFyOlxcXFxcXFwi5pqC5pegXFxcXFxcXCJ9IOaWh+S7tuagvOW8jzoke2l0ZW0uZXh0ZW5zaW9ufSDmlofku7blpKflsI86JHskLnJlcXVpcmUoXFxcXFxcXCJhcGlcXFxcXFxcIikuZ2V0RmlsZVNpemUoaXRlbS5maWxlc2l6ZSl9PC9zbWFsbD5gLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChpZCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHNlcnZlcnMgPSBbJ2h0dHBzOi8vdGVzdDEuemxpYi5kb3dubG9hZCcsICdodHRwczovL3Rlc3QyLnpsaWIuZG93bmxvYWQnLCAnaHR0cHM6Ly96bGliLmpnMTIxMjMub25lJ11cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKHNlcnZlcnMsIDEsIFxcXFxcXFwi6K+36YCJ5oup5LiL6L2957q/6LevXFxcXFxcXCIpLnNlbGVjdCgoaWQpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJkb3dubG9hZDovL1xcXFxcXFwiICsgaW5wdXQgKyBcXFxcXFxcIi9kb3dubG9hZC9cXFxcXFxcIiArIGlkICsgXFxcXFxcXCIvXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGlkKVxcXFxuICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coZS5tZXNzYWdlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/op6PmnpDlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgaXRlbS5pZClcXFxcbiAgICAgICAgICAgIH0pXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSxcXFxcbiAgICDpuKDmkak6IGZ1bmN0aW9uKGt3KSB7XFxcXG4gICAgICAgIHZhciBpZCA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vd3d3NS5qaXVtb2RpYXJ5LmNvbS9pbml0X2h1YnMucGhwXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgIGJvZHk6IHtcXFxcbiAgICAgICAgICAgICAgICBxOiBrdyxcXFxcbiAgICAgICAgICAgICAgICByZW1vdGVfaXA6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgdGltZV9pbnQ6IERhdGUucGFyc2UobmV3IERhdGUoKSkgKyBcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH0pKS5pZFxcXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly93d3c1LmppdW1vZGlhcnkuY29tL2FqYXhfZmV0Y2hfaHVicy5waHBcXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgIGlkOiBpZCxcXFxcbiAgICAgICAgICAgICAgICBzZXQ6IDBcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSkpLnNvdXJjZXNcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBpdGVtLmRldGFpbHMuZGF0YS5mb3JFYWNoKGl0ZW0yID0+IHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzigJ3igJ1cXFxcXFxcIiArIGl0ZW0yLnRpdGxlLFxcXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIuKAnOKAnOKAneKAnVxcXFxcXFwiICsgaXRlbTIuZGVzICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIGl0ZW0yLnZfZGVzLFxcXFxuICAgICAgICAgICAgICAgICAgICBpbWc6IFxcXFxcXFwiaHR0cDpcXFxcXFxcIiArIGl0ZW0yLmltZ19saW5rLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogaXRlbTIuaW1nX2xpbmsgPyBcXFxcXFxcIm1vdmllXzFfdmVydGljYWxfcGljXFxcXFxcXCIgOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IGl0ZW0yLmxpbmtcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIGNoZWNrTGliZ2VuOiBmdW5jdGlvbigpIHtcXFxcbiAgICAgICAgdmFyIGRvbWFpbnMgPSBbXFxcXFxcXCJodHRwOi8vbGliZ2VuLnJzXFxcXFxcXCIsIFxcXFxcXFwiaHR0cDovL2xpYmdlbi5pc1xcXFxcXFwiLCBcXFxcXFxcImh0dHA6Ly9saWJnZW4uc3RcXFxcXFxcIl1cXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGZvciAoaXRlbSBvZiBkb21haW5zKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaXRlbSwge1xcXFxuICAgICAgICAgICAgICAgICAgICB3aXRoU3RhdHVzQ29kZTogdHJ1ZVxcXFxuICAgICAgICAgICAgICAgIH0pKS5zdGF0dXNDb2RlXFxcXG4gICAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gMjAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcXFxcXCJsaWJnZW5cXFxcXFxcIiwgaXRlbSlcXFxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcXFxcXCLmo4DmtYvliLDlj6/nlKjplZzlg49cXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKVxcXFxuICAgICAgICAgICAgICAgICAgICBicmVha1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi5omA5pyJ6ZWc5YOP6YO95peg5rOV5L2/55So77yM6K+35omT5byAVFrkvb/nlKhcXFxcXFxcIilcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH0sXFxcXG4gICAgTGliZ2VuOiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICBpZiAoZ2V0SXRlbShcXFxcXFxcImxpYmdlblxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKSA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICB0b2FzdChcXFxcXFxcIuaXoOWPr+eUqOmVnOWDj++8jOato+WcqOajgOa1i+S4rS4uLlxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiYXBpXFxcXFxcXCIpLmNoZWNrTGliZ2VuKClcXFxcbiAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgIHZhciB1cmwgPSBnZXRJdGVtKFxcXFxcXFwibGliZ2VuXFxcXFxcXCIpICsgXFxcXFxcXCIvc2VhcmNoLnBocD9yZXE9XFxcXFxcXCIgKyBrdyArIFxcXFxcXFwiJnBhZ2U9XFxcXFxcXCIgKyBwYWdlXFxcXG4gICAgICAgICAgICB2YXIgciA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHtcXFxcbiAgICAgICAgICAgICAgICB3aXRoSGVhZGVyczogdHJ1ZVxcXFxuICAgICAgICAgICAgfSkpXFxcXG4gICAgICAgICAgICBpZiAoci5zdGF0dXNDb2RlID09IDIwMCkge1xcXFxuICAgICAgICAgICAgICAgIHZhciByZXMgPSByLmJvZHlcXFxcbiAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHBkZmEocmVzLCBcXFxcXFxcImJvZHkmJnRyXFxcXFxcXCIpLmZpbHRlcihpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGl0ZW0uaW5jbHVkZXMoXFxcXFxcXCJub3dyYXBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBpdGVtXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIGxpc3QuZm9yRWFjaChpdGVtID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpID0gaXRlbS5tYXRjaChuZXcgUmVnRXhwKFxcXFxcXFwiPHRkKC4qPyk8L3RkPlxcXFxcXFwiLCBcXFxcXFxcImdcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkZXNjID0gXFxcXFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcXFxcXCIgKyBwZGZoKGxpWzFdLCBcXFxcXFxcImEmJlRleHRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDM7IGkgPCBsaS5sZW5ndGggLSAzOyBpKyspIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gXFxcXFxcXCLvvJtcXFxcXFxcIiArIHBkZmgobGlbaV0sIFxcXFxcXFwiVGV4dFxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2MgKz0gXFxcXFxcXCI8L3NtYWxsPlxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGRmaChsaVsyXSwgXFxcXFxcXCJUZXh0XFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGVzYyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChsaSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIgKyBwZGZoKHJlcXVlc3QocGRmaChsaVs5XSwgXFxcXFxcXCJhJiZocmVmXFxcXFxcXCIpKSwgXFxcXFxcXCIjZG93bmxvYWQmJmEmJmhyZWZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIGxpKVxcXFxuICAgICAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXFxcXFwi6ZWc5YOP5aSx5pWI77yM6YeN5paw5qOA5rWL5LitLi4uXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgJC5yZXF1aXJlKFxcXFxcXFwiYXBpXFxcXFxcXCIpLmNoZWNrTGliZ2VuKClcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH0sXFxcXG4gICAg572R55uYOiBmdW5jdGlvbihrdywgcGFnZSkge1xcXFxuICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9hcGkuYm9va3Bhbi5uZXQvYXBpL3NlYXJjaC9cXFxcXFxcIiwge1xcXFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwia2V5d29yZFxcXFxcXFwiOiBrdyxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcInNlbnNpdGl2ZVxcXFxcXFwiOiBmYWxzZVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSkpLmRhdGFcXFxcbiAgICAgICAgcmVzLmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLmluZm8sXFxcXG4gICAgICAgICAgICAgICAgZGVzYzogXFxcXFxcXCLigJzigJzigJ3igJ08c21hbGw+XFxcXFxcXCIgKyBpdGVtLnNvdXJjZSArIFxcXFxcXFwiPC9zbWFsbD5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgoaWQsIHNvdXJjZSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHJlcyA9IEpTT04ucGFyc2UocG9zdChcXFxcXFxcImh0dHBzOi8vYXBpLmJvb2twYW4ubmV0L2FwaS9kZXRhaWwvXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogaWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwic291cmNlXFxcXFxcXCI6IHNvdXJjZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZG93bmxvYWRfbGluaykge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkaWN0ID0ge31cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMuZG93bmxvYWRfbGluay51bnNoaWZ0KHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogXFxcXFxcXCLljp/nvZHpobVcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiByZXMudXJsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJChyZXMuZG93bmxvYWRfbGluay5tYXAoZnVuY3Rpb24oaXRlbSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSksIDEsIFxcXFxcXFwi6K+36YCJ5oup5LiL6L2957q/6LevXFxcXFxcXCIpLnNlbGVjdCgobGlua3MpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmtzW2xpbmtzLm1hcChmdW5jdGlvbihpdGVtKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLmluZGV4T2YoaW5wdXQpXS51cmxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LCByZXMuZG93bmxvYWRfbGluaylcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcy51cmxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6Kej5p6Q5aSx6LSlXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0sIGl0ZW0uaWQsIGl0ZW0uc291cmNlKVxcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9LFxcXFxuICAgIOaXoOWQjeWbvuS5pjogZnVuY3Rpb24oa3csIHBhZ2UpIHtcXFxcbiAgICAgICAgdmFyIHVybCA9IFxcXFxcXFwiaHR0cHM6Ly93d3cuYm9vazEyMy5pbmZvL2xpc3Q/a2V5PVxcXFxcXFwiICsga3cgKyBcXFxcXFxcIiZwYWdlPVxcXFxcXFwiICsgcGFnZVxcXFxuICAgICAgICB2YXIgcmVzID0gcmVxdWVzdCh1cmwpXFxcXG4gICAgICAgIHZhciBsaXN0ID0gcGRmYShyZXMsIFxcXFxcXFwiLmxpc3RfcGFnZUNvbnRlbnRfX3pfeXp2JiZsaVxcXFxcXFwiKVxcXFxuICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwZGZoKGl0ZW0sIFxcXFxcXFwiLmxpc3RfdGl0bGVfXzA2bnQyJiZUZXh0XFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFwi4oCc4oCc4oCd4oCdPHNtYWxsPlxcXFxcXFwiICsgcGRmaChpdGVtLCBcXFxcXFxcIi5saXN0X2F1dGhvcl9fbFB3cGwmJlRleHRcXFxcXFxcIikgKyBcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiICsgcGRmaChpdGVtLCBcXFxcXFxcIi5saXN0X3JhdGVfX0o3T3gxJiZUZXh0XFxcXFxcXCIpICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcIiArIHBkZmgoaXRlbSwgXFxcXFxcXCIubGlzdF9kZXNjX19rSmoxWSYmVGV4dFxcXFxcXFwiKSArIFxcXFxcXFwiPC9zbWFsbD5cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgodXJsKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIgKyBwZGZoKHJlcXVlc3QodXJsKSwgXFxcXFxcXCIuZGV0YWlsX2Rvd25sb2FkX2J0bl9fdjdiN2smJmhyZWZcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICB9LCBcXFxcXFxcImh0dHBzOi8vd3d3LmJvb2sxMjMuaW5mb1xcXFxcXFwiICsgcGRmaChpdGVtLCBcXFxcXFxcImEmJmhyZWZcXFxcXFxcIikpXFxcXG4gICAgICAgICAgICB9KVxcXFxuICAgICAgICB9KVxcXFxuICAgIH0sXFxcXG4gICAgYmFpZHU6IGZ1bmN0aW9uKHJlcykge1xcXFxuICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcIui/mOacqueZu+mZhlxcXFxcXFwiKVxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCkucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiBcXFxcXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS9cXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjOiBcXFxcXFxcIjEwMCUmJmZsb2F0XFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGxvY2F0aW9uLmhyZWZcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHVybC5pbmNsdWRlcyhcXFxcXFxcImh0dHBzOi8vcGFuLmJhaWR1LmNvbS93YXBcXFxcXFxcIikpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZiYS53cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFxcXFxcIiwgZmJhLmdldENvb2tpZShcXFxcXFxcIlxcXFxcXFwiKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsZXJ0KFxcXFxcXFwi5bey6I635Y+W5YiwY29va2ll77yM6L+U5Zue5Y2z5Y+vXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYmEuYmFjaygpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1YTogTU9CSUxFX1VBLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfV0pXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIGJkc3Rva2VuID0gSlNPTi5wYXJzZShyZXF1ZXN0KFxcXFxcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL2FwaS9nZXR0ZW1wbGF0ZXZhcmlhYmxlP2ZpZWxkcz1bJTIyYmRzdG9rZW4lMjJdXFxcXFxcXCIsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgQ29va2llOiByZXF1ZXN0KFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9Kb2UvYmFpZHUudHh0XFxcXFxcXCIpXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9KSkucmVzdWx0LmJkc3Rva2VuXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoXFxcXFxcXCIv55S15a2Q5LmmL1xcXFxcXFwiICsgcmVzLnRpdGxlICsgXFxcXFxcXCIuXFxcXFxcXCIgKyByZXMuZXh0ZW5zaW9uLCBcXFxcXFxcIuivt+i+k+WFpeS/neWtmOi3r+W+hFxcXFxcXFwiKS5pbnB1dCgoYmRzdG9rZW4sIHJlcykgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVzID0gSlNPTi5wYXJzZShwb3N0KFxcXFxcXFwiaHR0cHM6Ly9wYW4uYmFpZHUuY29tL3Jlc3QvMi4wL3hwYW4vZmlsZT9tZXRob2Q9Y3JlYXRlJmJkc3Rva2VuPVxcXFxcXFwiICsgYmRzdG9rZW4sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb29raWU6IHJlcXVlc3QoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0pvZS9iYWlkdS50eHRcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZTogcmVzLmZpbGVzaXplICsgXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbnB1dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja19saXN0OiBbcmVzLm1kNV0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcnR5cGU6IDBcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZXJybm8gPT0gMCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJubyA9PSAtOCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKXvvIzlt7Lnu4/kv53lrZjov4fov5nkuKrmlofku7bkuoZcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcy5lcnJubyA9PSAyKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+i9rOWtmOWksei0pe+8jOmUmeivr+eahOi3r+W+hFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2cocmVzLmVycm5vKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/ovazlrZjlpLHotKVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwgYmRzdG9rZW4sIHJlcylcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgbG9nKGUubWVzc2FnZSlcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v6L2s5a2Y5aSx6LSlXFxcXFxcXCJcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn1cXFwifV1cIn0iLCJ0aXRsZSI6IumUheeCieiuvuiuoeWPiui/kOihjC3otoXotoXkuLTnlYzplIXngonorr7orqHlj4rov5DooYwifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement