Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@新片场@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5paw54mH5Zy6IiwiYXV0aG9yIjoi6aG6IiwidXJsIjoiaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS9jaGFubmVsL2luZGV4L2lkLWZ5QWxsL3BhZ2UtZnlwYWdlIiwidmVyc2lvbiI6MjAyMjA0MTgsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCdwYWdlLScpWzFdO1xudmFyIGQgPSBbXTtcbmV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobVKU09OXCIpKS5ydWxlKVxuaWYgKFBBR0UgPT0gMSkge1xuXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uv6aaW6aG15Zu65a6aSlNPTlwiKSkucnVsZSlcblx0ZC5wdXNoKHtcblx0XHRjb2xfdHlwZTogJ2ljb25fMV9zZWFyY2gnLFxuXHRcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL+i/m+WFpeaQnOe0oumhtVwiKSkucnVsZSksXG5cdFx0dGl0bGU6ICfor7fovpPlhaXkvZzlk4HlkI3jgIHliJvkvZzkuronLFxuXHRcdGV4dHJhOiB7XG5cdFx0XHRuZXdXaW5kb3c6IHRydWUsXG5cdFx0XHR3aW5kb3dJZDogXCLmlrDniYflnLrmkJzntKJcIlxuXHRcdH1cblx0fSlcblx0ZC5wdXNoKHtcblx0XHQvL3RpdGxlOmJhbm5lcnMudGl0bGUsXG5cdFx0aW1nOiBiYW5uZXJzLmNvdmVyLFxuXHRcdGNvbF90eXBlOiAnY2FyZF9waWNfMScsXG5cdFx0ZGVzYzogJzAnLFxuXHRcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2FwcOaSreaUvumTvuaOpVwiKSkucnVsZSksXG5cdH0pXG5cdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobXlm5vlpKfmjInpkq5cIikpLnJ1bGUpXG5cdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS/pppbpobXliJfooahcIikpLnJ1bGUpXG59XG5zZXRSZXN1bHQoZCk7Iiwic2VhcmNoX3VybCI6IiIsImdyb3VwIjoi4pGg5o6o6I2QIiwic2VhcmNoRmluZCI6IiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoiIiwic2RldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJzZGV0YWlsX2ZpbmRfcnVsZSI6IiIsInVhIjoibW9iaWxlIiwicHJlUnVsZSI6IiIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLwn5Si6aaW6aG15YiX6KGoXCIsXCJwYXRoXCI6XCLpppbpobXliJfooahcIixcInJ1bGVcIjpcImlmICh0aXBzX3RpdGxlID09ICfliIbnsbsnIHx8IHRpcHNfdGl0bGUgPT0gJ+S9nOWTgScpIHtcXG4gICAgZm9yIChsZXQgaSBpbiBYUEMpIHtcXG4gICAgICAgIHZhciB2bSA9IFhQQ1tpXTtcXG4vL+WNleS4quinhumikXdlYumTvuaOpVxcblxcdCAgdmFyIHdlYl9saW5rcyA9IHZtLndlYl91cmw7XFxuICAgICAgICB2YXIgYXBwX2xpbmtzID0gdm0udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG4gICAgICAgIHZhciBJRCA9IGFwcF9saW5rcy5zcGxpdCgnaWQ9JylbMV1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHZtLmNhdGVnb3J5X25hbWUsXFxuICAgICAgICAgICAgcGljX3VybDogdm0uY292ZXIsICAgICAgIHVybDpldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS93ZWJf5Y+R546w5LqM57qn5YiG57G7XFxcIikpLnJ1bGUpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMicsXFxuICAgICAgICAgICAgZGVzYzogJzAnLFxcbiAgICAgICAgfSlcXG4gICAgfVxcbn1cXG5cXG5pZiAodGlwc190aXRsZSAhPSAn5L2c5ZOBJyAmJiB0aXBzX3RpdGxlICE9ICfliIbnsbsnKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnLFxcbiAgICB9KVxcbiBmb3IgKGxldCBpIGluIHZtanNvbikge1xcbiAgICAgICAgdmFyIHZtID0gdm1qc29uW2ldLmRhdGEucmVzb3VyY2U7XFxuICAgICAgICB2YXIgUExBWV9MSU5LUyA9IHZtLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxudmFyIFVTRVJfSE9NRT0gJ2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vdXNlci8nK3ZtLnVzZXJfaWQ7XFxuaWYgKHRpcHNfdGl0bGUgIT0gJ+WcuuW6k+aOqOiNkCcgKXtcXG52YXIgdXJsID1ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/liJvkvZzkurrpppbpobVcXFwiKSkucnVsZSlcXG59ZWxzZXt2YXIgdXJsID1cXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS5hdXRob3IudXNlcmluZm8udXNlcm5hbWUsXFxuICAgICAgICAgICAgcGljX3VybDogdm0uYXV0aG9yLnVzZXJpbmZvLmF2YXRhcixcXG4gICAgICAgICAgICB1cmw6dXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJyxcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS50aXRsZSxcXG4gICAgICAgICAgICB1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0udGl0bGUsXFxuICAgICAgICAgICAgcGljX3VybDogdm0uY292ZXIsXFxuICAgICAgICAgICAgdXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcHDmkq3mlL7pk77mjqVcXFwiKSkucnVsZSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJyxcXG4gICAgICAgIH0pXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB2bS5jb3VudC5jb3VudF9jb2xsZWN0LFxcbiAgICAgICAgICAgIHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPmlLbol48uc3ZnJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfMycsXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0uY291bnQuY291bnRfY29tbWVudCxcXG4gICAgICAgICAgICBwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz5Zue5aSNLnN2ZycsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKFBMQVlfTElOS1MpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign6K+m57uG57G75YirJywgJ+ivhOiuuicpO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSk7XFxuXFx0XFx0XFx0XFx0XFx0fSxQTEFZX0xJTktTKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfMycsXFxuICAgICAgICB9KVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogdm0uY291bnQuY291bnRfbGlrZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz54K56LWeLnN2ZycsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzMnLFxcbiAgICAgICAgfSlcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJyxcXG4gICAgICAgIH0pXFxuICAgIFxcdH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJhcHDliIbnsbvkuI7mkJzntKLliJfooahcIixcInBhdGhcIjpcImFwcOWIhuexu+S4juaQnOe0ouWIl+ihqFwiLFwicnVsZVwiOlwidmFyIEFQUF9VUkwgPSBcXFwiaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS92Mi9zZWFyY2g/dHlwZT1cXFwiICsgdGlwc19zZWxlY3QgKyBcXFwiJmt3PVxcXCIgKyB0aXBzX3RpdGxlICsnJnBhZ2U9JyArIFBBR0U7XFxudmFyIGFwcF9saXN0cyA9IEpTT04ucGFyc2UocmVxdWVzdChBUFBfVVJMKSkuZGF0YS5saXN0O1xcbmlmIChhcHBfbGlzdHMubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0Zm9yIChsZXQgaSBpbiBhcHBfbGlzdHMpIHtcXG5cXHRcXHR2YXIgUExBWV9MSU5LUyA9IGFwcF9saXN0c1tpXS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcblxcdFxcdHZhciBsaWtlID0gYXBwX2xpc3RzW2ldLmNvdW50LmNvdW50X2xpa2U7XFxuXFx0XFx0dmFyIHZpZXcgPSBhcHBfbGlzdHNbaV0uY291bnQuY291bnRfdmlldztcXG5cXHRcXHRpZiAobGlrZSA+IDEwMDApIGxpa2UgPSAobGlrZSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0XFx0aWYgKHZpZXcgPiAxMDAwMCkgdmlldyA9ICh2aWV3IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAndyc7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRwaWNfdXJsOiBhcHBfbGlzdHNbaV0uY292ZXIsXFxuXFx0XFx0XFx0dGl0bGU6IGFwcF9saXN0c1tpXS50aXRsZSxcXG5cXHRcXHRcXHRkZXNjOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICfmkq3mlL7ph48gJyArIHZpZXcgKyAnIMK3ICcgKyAn5Zac5qyiICcgKyBsaWtlICsgJ1xcXFxuJyArIGFwcF9saXN0c1tpXVxcblxcdFxcdFxcdFxcdC5hdXRob3IudXNlcmluZm8udXNlcm5hbWUgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0dXJsOiBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/op4bpopHor6bmg4XpobVcXFwiKSkucnVsZSksXFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXHRcXHR9KVxcblxcdH1cXG59IGVsc2Uge1xcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaQnOe0oumhteS4iumDqFwiLFwicGF0aFwiOlwi5pCc57Si6aG15LiK6YOoXCIsXCJydWxlXCI6XCJpZiAoUEFHRSA9PSAxKSB7XFxuXFx0ZC5wdXNoKHtcXG5cXHRcXHR1cmw6IFxcXCJwdXRNeVZhcign5pCc5YWz6ZSu5a2XJyxpbnB1dCk7dmFyIHRpcHNfdGl0bGUgPSBnZXRNeVZhcign5pCc5YWz6ZSu5a2XJyk7dmFyIGxvY2FsRGF0YSA9IHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvY2FjaGUv5paw54mH5Zy65Y6G5Y+y5pCc57SiLmpzb24nKTtpZiAoIWxvY2FsRGF0YSkgbG9jYWxEYXRhID0nW10nO3ZhciBsaXNoaT1KU09OLnBhcnNlKGxvY2FsRGF0YSk7bGV0IGNjYyA9IGxpc2hpLmluZGV4T2YoaW5wdXQpO2lmKGNjYyA+LTEpe2xpc2hpLnNwbGljZShjY2MsMSl9O2xpc2hpLnB1c2godGlwc190aXRsZSk7bGlzaGk9bGlzaGkuc2xpY2UoLTI4KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUv5paw54mH5Zy65Y6G5Y+y5pCc57SiLmpzb24nLCBKU09OLnN0cmluZ2lmeShsaXNoaSkpO3JlZnJlc2hQYWdlKGZhbHNlKVxcXCIsXFxuXFx0XFx0ZGVzYzogJ+ivt+i+k+WFpeS9nOWTgeWQjeOAgeWIm+S9nOS6uicsXFxuXFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRkZWZhdWx0VmFsdWU6IHRpcHNfdGl0bGUsXFxuXFx0XFx0fSxcXG5cXHRcXHRjb2xfdHlwZTogXFxcImlucHV0XFxcIixcXG5cXHR9KTtcXG5cXHRkLnB1c2goe1xcblxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0fSlcXG5cXG5cXHRpZiAoIXRpcHNfdGl0bGUpIHtcXG5cXHRcXHRpZiAocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9jYWNoZS/mlrDniYflnLrljoblj7LmkJzntKIuanNvbicpKSB7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6ICfigJzigJzigJ3igJ08Yj48Zm9udCBjb2xvcj0jMDAwPicgKyAn8J+Xke+4jyDljoblj7LmkJzntKInICsgJzwvZm9udD48L2I+JyxcXG5cXHRcXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlL+aWsOeJh+WcuuWOhuWPsuaQnOe0oi5qc29uJywgJycpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKGZhbHNlKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdH0pLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG5cXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHR2YXIgbG9jYWxEYXRhID0gcmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9jYWNoZS/mlrDniYflnLrljoblj7LmkJzntKIuanNvbicpO1xcblxcdFxcdFxcdGlmICghbG9jYWxEYXRhKSBsb2NhbERhdGEgPSBcXFwiW11cXFwiO1xcblxcdFxcdFxcdHZhciBsaXNoaSA9IEpTT04ucGFyc2UobG9jYWxEYXRhKS5zbGljZSgtMjgpO1xcblxcdFxcdFxcdHZhciBIaXN0b3J5ID0gXFxcIlxcXCI7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IGxpc2hpLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XFxuXFx0XFx0XFx0XFx0dmFyIGNjbGlzaGkgPSBsaXNoaVtpXTtcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdHRpdGxlOiBjY2xpc2hpLFxcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcblxcdFxcdFxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKChjY2xpc2hpKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+aQnOWFs+mUruWtlycsIGNjbGlzaGkpO1xcblxcdFxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHRcXHR9LCBjY2xpc2hpKSxcXG5cXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHR9XFxuXFx0XFx0fVxcblxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHR9KVxcblxcdFxcdH1cXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzAwMD4nICsgJ/CflKUg54Ot6Zeo5pCc57SiJyArICc8L2ZvbnQ+PC9iPicsXFxuXFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcblxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0fVxcblxcdFxcdH0pO1xcblxcdFxcdHZhciB1cmwgPSAnaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9zZWFyY2hfcmVjb21tZW5kX2t3cyc7XFxuXFx0XFx0dmFyIEhvdGpzb24gPSBKU09OLnBhcnNlKGZldGNoKHVybCkpLmRhdGEubGlzdDtcXG5cXHRcXHRmb3IgKGxldCBpIGluIEhvdGpzb24pIHtcXG5cXHRcXHRcXHR2YXIgdGlwcyA9IEhvdGpzb25baV0ubmFtZTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiB0aXBzLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiZmxleF9idXR0b25cXFwiLFxcblxcdFxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKCh0aXBzKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+aQnOWFs+mUruWtlycsIHRpcHMpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHRcXHR9LCB0aXBzKSxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHR9XFxuXFx0fVxcblxcblxcdGNvbnN0IHNlYXJjaF9zaHVsaWFuZyA9ICdodHRwczovL3d3dy54aW5waWFuY2hhbmcuY29tL3NlYXJjaD9rdz0nICsgdGlwc190aXRsZTtcXG5cXHR2YXIgc2VhcmNoX05VTUJFUiA9IHBkZmEocmVxdWVzdChzZWFyY2hfc2h1bGlhbmcse2hlYWRlcnM6IHsgJ1VzZXItQWdlbnQnOiAnTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMCknfX0pLCBcXFwiLmJvcmRlci1iJiYuaXRlbXMtY2VudGVyJiZhXFxcIilcXG52YXIgc2VhcmNoX3RpcHNfMCA9IHBkZmgoc2VhcmNoX05VTUJFUlswXSwgJy50cmFuc2l0aW9uJiZUZXh0Jyk7XFxudmFyIHNlYXJjaF90aXBzXzEgPSBwZGZoKHNlYXJjaF9OVU1CRVJbMV0sICcudHJhbnNpdGlvbiYmVGV4dCcpO1xcblxcdHZhciBzZWFyY2hfdGlwc18yID0gcGRmaChzZWFyY2hfTlVNQkVSWzVdLCAnLnRyYW5zaXRpb24mJlRleHQnKTtcXG4vKlxcblxcdHZhciBzZWFyY2hfdGlwc18wID0gcGRmaChzZWFyY2hfTlVNQkVSWzBdLCAnLnRyYW5zaXRpb24mJlRleHQnKS5tYXRjaCgvKFxcXFx3Kyl8KFxcXFwrKS9nKS5qb2luKFxcXCJcXFwiKVxcblxcdHZhciBzZWFyY2hfdGlwc18xID0gcGRmaChzZWFyY2hfTlVNQkVSWzFdLCAnLnRyYW5zaXRpb24mJlRleHQnKS5tYXRjaCgvKFxcXFx3Kyl8KFxcXFwrKS9nKS5qb2luKFxcXCJcXFwiKVxcblxcdHZhciBzZWFyY2hfdGlwc18yID0gcGRmaChzZWFyY2hfTlVNQkVSWzJdLCAnLnRyYW5zaXRpb24mJlRleHQnKS5tYXRjaCgvKFxcXFx3Kyl8KFxcXFwrKS9nKS5qb2luKFxcXCJcXFwiKVxcbiovXFxuXFx0cHV0TXlWYXIoJ+aVsOmHj+KAlOS9nOWTgScsIHNlYXJjaF90aXBzXzApXFxuXFx0cHV0TXlWYXIoJ+aVsOmHj+KAlOWIm+S9nOS6uicsIHNlYXJjaF90aXBzXzEpXFxuXFx0cHV0TXlWYXIoJ+aVsOmHj+KAlOaWh+eroCcsIHNlYXJjaF90aXBzXzIpXFxuXFxuXFx0dmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcblxcdGZ1bmN0aW9uIGdldEhlYWQodGl0bGVzKSB7XFxuXFx0XFx0cmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGVzICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG5cXHR9XFxuXFx0aWYgKHRpcHNfdGl0bGUpIHtcXG5cXHRcXHR2YXIgdGlwc18wID0gZ2V0TXlWYXIoXFxcIuaVsOmHj+KAlOS9nOWTgVxcXCIpXFxuXFx0XFx0dmFyIHRpcHNfMSA9IGdldE15VmFyKFxcXCLmlbDph4/igJTliJvkvZzkurpcXFwiKVxcblxcdFxcdHZhciB0aXBzXzIgPSBnZXRNeVZhcihcXFwi5pWw6YeP4oCU5paH56ugXFxcIilcXG5cXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDU7IGkrKykge1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHR9KVxcblxcdFxcdH1cXG5cXHRcXHR2YXIg5L2c5ZOBPSB0aXBzXzA7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHQvLyB0aXRsZTogJycrJ+KAmOKAmCcrIHRpcHNfMCsgJ+KAmeKAmScsXFxuXFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICdhcnRpY2xlJyA/IGdldEhlYWQodGl0bGVzID3kvZzlk4EpIDog5L2c5ZOBLFxcblxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8zJyxcXG5cXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdHB1dE15VmFyKCfkvZwv5YibL+aWhycsICdhcnRpY2xlJyk7XFxuXFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdH0pLFxcblxcdFxcdH0pXFxuXFx0XFx0dmFyIOWIm+S9nOS6uj0gdGlwc18xO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Ly8gdGl0bGU6IFxcXCLliJvkvZzkurogXFxcIisn4oCY4oCYJysgdGlwc18xKyAn4oCZ4oCZJyxcXG5cXHRcXHRcXHR0aXRsZTogdGlwc19zZWxlY3QgPT0gJ2NyZWF0b3InID8gZ2V0SGVhZCh0aXRsZXMgPeWIm+S9nOS6uikgOiDliJvkvZzkurosXFxuXFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzMnLFxcblxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S9nC/liJsv5paHJywgJ2NyZWF0b3InKTtcXG5cXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0fSksXFxuXFx0XFx0fSlcXG5cXHRcXHR2YXIg5paH56ugPSAgdGlwc18yIDtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdC8vIHRpdGxlOiBcXFwi5paH56ugIFxcXCIrJ+KAmOKAmCcrIHRpcHNfMisgJ+KAmeKAmScsXFxuXFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICfmlofnq6AnID8gZ2V0SGVhZCh0aXRsZXMgPeaWh+eroCkgOiDmlofnq6AsXFxuXFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzMnLFxcblxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S9nC/liJsv5paHJywgJ+aWh+eroCcpO1xcblxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG5cXHRcXHRcXHR9KSxcXG5cXHRcXHR9KVxcblxcdH1cXG5cXHRjbGVhck15VmFyKCfmlbDph4/igJTkvZzlk4EnKTtcXG5cXHRjbGVhck15VmFyKCfmlbDph4/igJTliJvkvZzkuronKTtcXG5cXHRjbGVhck15VmFyKCfmlbDph4/igJTmlofnq6AnKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpppbpobXlm5vlpKfmjInpkq5cIixcInBhdGhcIjpcIummlumhteWbm+Wkp+aMiemSrlwiLFwicnVsZVwiOlwiZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5Y+R546wXFxcIixcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL29zcy14cGMwLnhwY2Nkbi5jb20vVXBsb2FkL2VkdS8yMDE5LzAxLzE0NWMzYzM4MmYxYTgyZC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcbiAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI2h0dHBzOi8vYXBwLnhpbnBpYW5jaGFuZy5jb20vcGFnZS9kaXNjb3ZlcnlcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+mTvuaOpScsIGlucHV0KTtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li75qCH6aKYJywgJ+WIhuexuycpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIjtcXG4gICAgICAgIH0pLFxcbiAgICB9KVxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLnsr7pgIlcXFwiLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vb3NzLXhwYzAueHBjY2RuLmNvbS9VcGxvYWQvZWR1LzIwMTkvMDEvMTQ1YzNjMzg3MWJkNzA4LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fc21hbGxfNCcsXFxuICAgICAgICB1cmw6ICQoXFxcIiNub0xvYWRpbmcjaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9ob21lL3NlbGVjdGlvblxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li76ZO+5o6lJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvmoIfpopgnLCAn5LuK5pel57K+6YCJJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgfSksXFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+WcuuW6kycsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9vc3MteHBjMC54cGNjZG4uY29tL1VwbG9hZC9lZHUvMjAxOS8wMi8wMTVjNTNjMDNjYjY2MDUucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL2hvbWUvdm1vdmllclxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRNeVZhcign5Li76ZO+5o6lJywgaW5wdXQpO1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvmoIfpopgnLCAn5Zy65bqT5o6o6I2QJyk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcbiAgICAgICAgfSksXFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eDremXqCcsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9vc3MteHBjMC54cGNjZG4uY29tL1VwbG9hZC9lZHUvMjAxOS8wOC8wNTVkNDdlMjUxMWQxZDgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG4gICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL2hvbWUvaG90P3BhZ2U9XFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dE15VmFyKCfkuLvpk77mjqUnLCBpbnB1dCk7XFxuICAgICAgICAgICAgcHV0TXlWYXIoJ+S4u+agh+mimCcsICfng63pl6gnKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuICAgICAgICB9KSxcXG4gICAgfSlcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzAwMD4nICsgdGlwc190aXRsZSArICc8L2ZvbnQ+PC9iPicsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIixcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgbGluZVZpc2libGU6IGZhbHNlXFxuICAgICAgICB9XFxuICAgIH0pO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi8J+Ujui/m+WFpeaQnOe0oumhtVwiLFwicGF0aFwiOlwi6L+b5YWl5pCc57Si6aG1XCIsXCJydWxlXCI6XCIkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSNmdWxsVGhlbWUjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7XFxuXFx0c2V0UGFnZVRpdGxlKCfmlrDniYflnLrCt+aQnOe0oicpXFxuXFx0dmFyIGQgPSBbXTtcXG5cXHR2YXIgUEFHRSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcblxcdGZvciAobGV0IGkgPSAwOyBpIDwgMzA7IGkrKykge1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHR9KVxcblxcdH1cXG5cXHRhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcblxcdFxcdGNsZWFyTXlWYXIoJ+aQnOWFs+mUruWtlycpO1xcblxcdFxcdGNsZWFyTXlWYXIoJ+S9nC/liJsv5paHJyk7XFxuXFx0fSkpXFxuXFx0dmFyIHRpcHNfdGl0bGUgPSBnZXRNeVZhcihcXFwi5pCc5YWz6ZSu5a2XXFxcIilcXG5cXHR2YXIgdGlwc19zZWxlY3QgPSBnZXRNeVZhcihcXFwi5L2cL+WImy/mlodcXFwiLCAnYXJ0aWNsZScpO1xcblxcdC8vbG9nKHRpcHNfc2VsZWN0KVxcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+aQnOe0oumhteS4iumDqFxcXCIpKS5ydWxlKVxcblxcdGlmICh0aXBzX3RpdGxlKSB7XFxuXFx0XFx0aWYgKHRpcHNfc2VsZWN0ID09ICdhcnRpY2xlJykge1xcblxcdFxcdCAgLy/mkJzkvZzlk4FcXG5cXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcHDliIbnsbvkuI7mkJzntKLliJfooahcXFwiKSkucnVsZSlcXG5cXHRcXHR9IGVsc2UgaWYgKHRpcHNfc2VsZWN0ID09ICdjcmVhdG9yJykge1xcblxcdFxcdFxcdC8v5pCc5Lq6XFxuXFx0XFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBw5Yib5L2c5Lq65pCc57Si5YiX6KGoXFxcIikpLnJ1bGUpXFxuXFx0XFx0fSBlbHNlIGlmICh0aXBzX3NlbGVjdCA9PSAn5paH56ugJykge1xcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3dlYl/mlofnq6DliJfooahcXFwiKSkucnVsZSlcXG5cXHRcXHR9XFxuXFx0fVxcblxcdHNldFJlc3VsdChkKVxcbn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLimajvuI/pppbpobVKU09OXCIsXCJwYXRoXCI6XCLpppbpobVKU09OXCIsXCJydWxlXCI6XCJ2YXIgdGlwc190aXRsZSA9IGdldE15VmFyKFxcXCLkuLvmoIfpophcXFwiLCAn5L2c5ZOBJylcXG52YXIgdGlwc191cmwgPSBnZXRNeVZhcihcXFwi5Li76ZO+5o6lXFxcIik7XFxuaWYgKHRpcHNfdGl0bGUgIT0gJ+S9nOWTgScgJiYgdGlwc190aXRsZSAhPSAn5YiG57G7Jykge1xcblxcdHZhciBhcHB1cmwgPSB0aXBzX3VybDtcXG5cXHRpZiAodGlwc190aXRsZSA9PSAn5Zy65bqT5o6o6I2QJykge1xcblxcdFxcdHZhciB0ID0gMFxcblxcdH0gZWxzZSBpZih0aXBzX3RpdGxlID09ICfng63pl6gnKSB7XFxuXFx0XFx0dmFyIHQgPSAyXFxuXFx0fSBlbHNlIHtcXG5cXHRcXHR2YXIgdCA9IDFcXG5cXHR9XFxuXFx0dmFyIHZtanNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChhcHB1cmwsIHtoZWFkZXJzOiB7J1VzZXItQWdlbnQnOlxcXCJVc2VyLUFnZW50TmV3U3R1ZGlvcy8xLjkuMSAoY29tLnhpbnBpYW5jaGFuZy5uZXdzdHVkaW9zOyBidWlsZDo3ODY7IEFuZHJvaWQgMTFcXFwifSxtZXRob2Q6ICdHRVQnfSkpLmRhdGEubGlzdC5zbGljZSh0KTtcXG4vL2xvZyh2bWpzb24pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIndlYl/lj5HnjrDkuoznuqfliIbnsbtcIixcInBhdGhcIjpcIndlYl/lj5HnjrDkuoznuqfliIbnsbtcIixcInJ1bGVcIjpcIiQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI25vSGlzdG9yeSMnKS5ydWxlKCh3ZWJfbGlua3MpID0+IHtcXG5cXHR2YXIgZCA9IFtdO1xcblxcdHZhciBQQUdFID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxuXFx0Ly8g5b2T5YmNIHVybFxcblxcdGNvbnN0IFVSTF9QUkVGSVggPSB3ZWJfbGlua3M7XFxuXFx0Y29uc3QgQ1VSUkVOVF9VUkwgPSBnZXRWYXIoJ2N1cnJlbnRfdXJsJywgVVJMX1BSRUZJWClcXG5cXHQvLyDov5vlhaXkuoznuqfmuIXnqbrph43nva7kuIDmrKFcXG5cXHRhZGRMaXN0ZW5lcignb25DbG9zZScsICQudG9TdHJpbmcoKCkgPT4ge1xcblxcdFxcdGNsZWFyVmFyKCdjYXRlXzInKTtcXG5cXHRcXHRjbGVhclZhcignY3VycmVudF91cmwnKVxcblxcdH0pKVxcblxcdGNvbnN0IENBVEVfTEVWRUxfMiA9IGdldFZhcihcXFwiY2F0ZV8yXFxcIiwgXFxcIjBcXFwiKVxcblxcdC8vIOiOt+WPlumhtemdouWGheWuuVxcblxcdGxldCBodG1sID0gcmVxdWVzdChVUkxfUFJFRklYLCB7aGVhZGVyczogeyAnVXNlci1BZ2VudCc6ICdNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wKSd9fSlcXG5cXHQvLyDnrKzkuIDpobXni6zljaBcXG5cXHRpZiAoUEFHRSA9PSAxKSB7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdH0pXFxuXFx0XFx0Ly8g5Y+W5LqM57qn5qCH562+XFxuXFx0XFx0bGV0IGNhdGVnb3JpZV9sZXZlbF8yID0gcGRmYShodG1sLCAnLnNlY29uZC10eXBlJiZsaScpXFxuXFx0XFx0Ly8g5b6q546v5LqM57qn5qCH562+XFxuXFx0XFx0Y2F0ZWdvcmllX2xldmVsXzIuZm9yRWFjaCgoY2F0ZV8yLCBpbmRleF8yKSA9PiB7XFxuXFx0XFx0XFx0bGV0IHRpdGxlID0gcGRmaChjYXRlXzIsICdhJiZUZXh0JylcXG5cXHRcXHRcXHRsZXQgbGluayA9IHBkZmgoY2F0ZV8yLCAnYSYmaHJlZicpXFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogcGFyc2VJbnQoQ0FURV9MRVZFTF8yKSA9PT0gaW5kZXhfMiA/IFxcXCLigJzigJxcXFwiICsgdGl0bGUgKyBcXFwi4oCd4oCdXFxcIiA6IHRpdGxlLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbicsXFxuXFx0XFx0XFx0XFx0dXJsOiAkKCkubGF6eVJ1bGUocGFyYW1zID0+IHtcXG5cXHRcXHRcXHRcXHRcXHQvLyDlrZjlnKjpk77mjqXnmoTmg4XlhrXkuIvmm7TmlrDnvJPlrZhcXG5cXHRcXHRcXHRcXHRcXHRpZiAocGFyYW1zLmxpbmspIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXRWYXIoJ2NhdGVfMicsIHBhcmFtcy5pbmRleC50b1N0cmluZygpKVxcblxcdFxcdFxcdFxcdFxcdFxcdHB1dFZhcignY3VycmVudF91cmwnLCAnaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbScgKyBwYXJhbXNcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHQubGluaylcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpXFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG5cXHRcXHRcXHRcXHR9LCB7XFxuXFx0XFx0XFx0XFx0XFx0aW5kZXg6IGluZGV4XzIsXFxuXFx0XFx0XFx0XFx0XFx0bGluazogbGlua1xcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fSlcXG5cXHRcXHR9KVxcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHR9KVxcblxcdFxcdC8qIGQucHVzaCh7XFxuXFx0XFx0ICAgICB0aXRsZTogJ+W9k+WJjVVSTO+8micgKyBDVVJSRU5UX1VSTCxcXG5cXHRcXHQgICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0JyxcXG5cXHRcXHQgfSkqL1xcblxcdH1cXG5cXHRsZXQgZmVubGVpX3VybCA9ICcnO1xcblxcdGlmIChDVVJSRU5UX1VSTC5pbmRleE9mKCdhcnRpY2xlTGlzdFBhZ2UnKSA+IC0xKSB7XFxuXFx0XFx0ZmVubGVpX3VybCA9IENVUlJFTlRfVVJMLnJlcGxhY2UoL1xcXFw/ZnJvbT1hcnRpY2xlTGlzdFBhZ2UvLCAnL3BhZ2UtJyArIFBBR0UpXFxuXFx0fSBlbHNlIHtcXG5cXHRcXHRmZW5sZWlfdXJsID0gQ1VSUkVOVF9VUkwgKyAnL3BhZ2UtJyArIFBBR0VcXG5cXHR9XFxuXFx0dmFyIGxpc3RzID0gcmVxdWVzdChmZW5sZWlfdXJsLCB7XFxuXFx0XFx0aGVhZGVyczoge1xcblxcdFxcdFxcdFxcXCJVc2VyLUFnZW50XFxcIjogUENfVUFcXG5cXHRcXHR9XFxuXFx0fSlcXG5cXHQvLyBsb2coZmVubGVpX3VybClcXG5cXHR2YXIgd2ViX2xpc3RzID0gcGRmYShsaXN0cywgXFxcImJvZHkmJi5lbnRlci1maWxtcGxheVxcXCIpXFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvd2ViX+WIhuexu+WIl+ihqFxcXCIpKS5ydWxlKTtcXG5cXHRzZXRSZXN1bHQoZClcXG59LCB3ZWJfbGlua3MpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJ3ZWJf5YiG57G75YiX6KGoXCIsXCJwYXRoXCI6XCJ3ZWJf5YiG57G75YiX6KGoXCIsXCJydWxlXCI6XCJpZiAod2ViX2xpc3RzLmxlbmd0aCAhPSBcXFwiXFxcIikge1xcblxcdGZvciAodmFyIGkgaW4gd2ViX2xpc3RzKSB7XFxuXFx0XFx0dmFyIFBMQVlfTElOS1MgPSAnaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9hcnRpY2xlLycgKyBwZGZoKHdlYl9saXN0c1tpXSwgJ2xpJiZkYXRhLWFydGljbGVpZCcpO1xcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXHRcXHRcXHR0aXRsZTogcGRmaCh3ZWJfbGlzdHNbaV0sICcuZnNfMTQmJlRleHQnKSxcXG5cXHRcXHRcXHRkZXNjOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICfmkq3mlL4gJyArIHBkZmgod2ViX2xpc3RzW2ldLCAnLmljb24tcGxheS12b2x1bWUmJlRleHQnKSArXFxuXFx0XFx0XFx0XFx0JyDCtyAnICsgJ+WWnOasoiAnICsgcGRmaCh3ZWJfbGlzdHNbaV0sICcuaWNvbi1saWtlJiZUZXh0JykgKyAnXFxcXG4nICsgcGRmaCh3ZWJfbGlzdHNbaV0sXFxuXFx0XFx0XFx0XFx0XFx0J3AmJi5mc18xMiYmVGV4dCcpICsgJ1xcXFx0XFxcXHQnICsgcGRmaCh3ZWJfbGlzdHNbaV0sICcubmFtZSYmVGV4dCcpICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdHBpY191cmw6IHBkKHdlYl9saXN0c1tpXSwgJ2ltZyYmX3NyYycpICsgJ0BSZWZlcmVyPScgKyBwZCh3ZWJfbGlzdHNbaV0sICdpbWcmJl9zcmMnKSxcXG5cXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHR9KTtcXG5cXHR9XFxufSBlbHNlIHtcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJhcHDmkq3mlL7pk77mjqVcIixcInBhdGhcIjpcImFwcOaSreaUvumTvuaOpVwiLFwicnVsZVwiOlwiJChQTEFZX0xJTktTKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0dHJ5e1xcbnZhciBwbGF5X3VybF9qc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0KSkuZGF0YTtcXG5cXHR2YXIgcGxheV91cmxzID0gcGxheV91cmxfanNvbi52aWRlby5jb250ZW50LnByb2dyZXNzaXZlO1xcblxcdC8vIOW8gOWni+iOt+WPluW8ueW5lVxcblxcdHZhciBkYW5tYWt1ID0gcGxheV91cmxfanNvbi52aWQ7XFxuXFx0dmFyIGRhbm11ID0gJ2h0dHBzOi8vb3NzLWRhbm1ha3UxMi54cGNjZG4uY29tLycgKyBkYW5tYWt1ICsgJy50eHQnO1xcblxcdHZhciBjb2RlID0gcmVxdWVzdChkYW5tdSlcXG5cXHR2YXIgYXJyID0gY29kZS5zcGxpdChcXFwiXFxcXG5cXFwiKVxcblxcdHZhciByID0gW11cXG5cXHRmb3IgKGxldCBpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xcblxcdFxcdHRyeSB7XFxuXFx0XFx0XFx0dmFyIGxpbmUgPSBKU09OLnBhcnNlKGFycltpXSlcXG5cXHRcXHRcXHRpZiAobGluZS5jb250ZW50KSB7XFxuXFx0XFx0XFx0XFx0ci5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHR0ZXh0OiBsaW5lLmNvbnRlbnQsXFxuXFx0XFx0XFx0XFx0XFx0dGltZTogbGluZS5vZmZzZXRcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHR9IGNhdGNoIChlKSB7fVxcblxcdH1cXG5cXHR3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvZGFubXUuanNvblxcXCIsIEpTT04uc3RyaW5naWZ5KHIpKVxcblxcdC8vIOe7k+adn+W8ueW5leiOt+WPllxcblxcdGxldCB1cmxzID0gW107XFxuXFx0bGV0IG5hbWVzID0gW107XFxuXFx0Zm9yIChsZXQgaiBpbiBwbGF5X3VybHMpIHtcXG5cXHRcXHR1cmxzLnB1c2gocGxheV91cmxzW2pdLnVybClcXG5cXHRcXHRuYW1lcy5wdXNoKHBsYXlfdXJsc1tqXS5wcm9maWxlKVxcblxcdH1cXG5cXHR2YXIgYWxsX3VybCA9IEpTT04uc3RyaW5naWZ5KHtcXG5cXHRcXHR1cmxzOiB1cmxzLFxcblxcdFxcdG5hbWVzOiBuYW1lcyxcXG5cXHRcXHRkYW5tdTogXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvZGFubXUuanNvblxcXCJcXG5cXHR9KVxcbi8vXFx0bG9nKGFsbF91cmwpXFxuXFx0cmV0dXJuIGFsbF91cmxcXG59Y2F0Y2goZSl7XFxudmFyIHVybD1pbnB1dC5zcGxpdCgndXJsPScpWzFdXFxudXJsPXVuZXNjYXBlKHVybClcXG5yZXR1cm4gJ3dlYjovLycrdXJsXFxufVxcbn0pXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJhcHDliJvkvZzkurrmkJzntKLliJfooahcIixcInBhdGhcIjpcImFwcOWIm+S9nOS6uuaQnOe0ouWIl+ihqFwiLFwicnVsZVwiOlwidmFyIEFQUF9VUkwgPSBcXFwiaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS92Mi9zZWFyY2g/dHlwZT1cXFwiICsgdGlwc19zZWxlY3QgKyBcXFwiJmt3PVxcXCIgKyB0aXBzX3RpdGxlICsnJnBhZ2U9JyArIFBBR0U7XFxudmFyIGFwcF9saXN0cyA9IEpTT04ucGFyc2UocmVxdWVzdChBUFBfVVJMKSkuZGF0YS5saXN0O1xcbmlmKGFwcF9saXN0cy5sZW5ndGggIT1cXFwiXFxcIikge1xcbmZvciAobGV0IGkgaW4gYXBwX2xpc3RzKSB7XFxuICAgc2V0UGFnZVRpdGxlKGFwcF9saXN0c1tpXS51c2VybmFtZSlcXG4gdmFyIFVTRVJfSE9NRT1hcHBfbGlzdHNbaV0udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCdodHRwcycpXFxuZm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgICAgICB9KVxcbiAgICB9XFxudmFyIHVybD1ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/liJvkvZzkurrpppbpobVcXFwiKSkucnVsZSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGltZzogYXBwX2xpc3RzW2ldLmF2YXRhciArICdAUmVmZXJlcj0nICsgYXBwX2xpc3RzW2ldLmF2YXRhcixcXG4gICAgICAgIHRpdGxlOiBhcHBfbGlzdHNbaV0udXNlcm5hbWUsXFxuICAgICAgICBkZXNjOiAnJyxcXG4gICAgICAgIHVybDp1cmwsXFxuICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsXFxuICAgIH0pXFxuXFxuICAgIHZhciBvY2N1cGF0aW9uID0gYXBwX2xpc3RzW2ldLm9jY3VwYXRpb247XFxuICAgIHZhciBmb2xsb3dlciA9ICfnsonkuJ0gJyArIGFwcF9saXN0c1tpXS5jb3VudC5jb3VudF9mb2xsb3dlcjtcXG4gICAgaWYgKCFvY2N1cGF0aW9uKSB7XFxuICAgICAgICBvY2N1cGF0aW9uID0gJydcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIG9jY3VwYXRpb24gPSBvY2N1cGF0aW9uICsgJyDCtyAnXFxuICAgIH1cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICdcXHRcXHRcXHRcXHRcXHQnICsgb2NjdXBhdGlvbiArIGZvbGxvd2VyICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcbiAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxuICAgIH0pXFxufVxcdH1lbHNle1xcbiAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Yib5L2c5Lq66aaW6aG1XCIsXCJwYXRoXCI6XCLliJvkvZzkurrpppbpobVcIixcInJ1bGVcIjpcIiQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lIyNub0hpc3RvcnkjJykucnVsZSgoVVNFUl9IT01FKSA9PiB7XFxuXFx0dHJ5IHtcXG5cXHRcXHR2YXIgUEFHRSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcblxcdFxcdHZhciBkID0gW107XFxuXFx0XFx0Ly8g5aS06YOoXFxuXFx0XFx0dmFyIHVybCA9IFVTRVJfSE9NRTtcXG5cXHRcXHR2YXIgVVNFUl9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCkpLmRhdGE7XFxuXFx0XFx0dmFyIElEID0gVVNFUl9KU09OLmlkO1xcblxcdFxcdHZhciBhcHBfYmFja2dyb3VuZCA9IFVTRVJfSlNPTi5hcHBfYmFja2dyb3VuZDtcXG5cXHRcXHRpZiAoIWFwcF9iYWNrZ3JvdW5kKSBhcHBfYmFja2dyb3VuZCA9ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaW1nL3hpbnBpYW5jaGFuZy5qcGcnO1xcblxcdFxcdHZhciB1c2VyX2F2YXRhciA9IFVTRVJfSlNPTi5hdmF0YXI7XFxuXFx0XFx0dmFyIHVzZXJfbmFtZSA9IFVTRVJfSlNPTi51c2VybmFtZTtcXG5cXHRcXHRzZXRQYWdlVGl0bGUodXNlcl9uYW1lKVxcblxcdFxcdHZhciB1c2VyX2Rlc2MgPSBVU0VSX0pTT04udmVyaWZ5X2Rlc2NyaXB0aW9uO1xcblxcdFxcdHZhciB1c2VyX2Fib3V0ID0gVVNFUl9KU09OLmFib3V0O1xcblxcdFxcdC8v5Lq65rCUXFxuXFx0XFx0dmFyIGNvdW50X3BvcHVsYXJpdHkgPSBVU0VSX0pTT04uY291bnQuY291bnRfcG9wdWxhcml0eTtcXG5cXHRcXHRpZiAoY291bnRfcG9wdWxhcml0eSA+IDEwMDAwKSBjb3VudF9wb3B1bGFyaXR5ID0gKGNvdW50X3BvcHVsYXJpdHkgLyAxMDAwMCkudG9GaXhlZCgxKSArICd3JztcXG5cXHRcXHQvL+eyieS4nVxcblxcdFxcdHZhciBjb3VudF9mb2xsb3dlciA9IFVTRVJfSlNPTi5jb3VudC5jb3VudF9mb2xsb3dlcjtcXG5cXHRcXHRpZiAoY291bnRfZm9sbG93ZXIgPiAxMDAwKSBjb3VudF9mb2xsb3dlciA9IChjb3VudF9mb2xsb3dlciAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0XFx0YWRkTGlzdGVuZXIoJ29uQ2xvc2UnLCAkLnRvU3RyaW5nKCgpID0+IHtcXG5cXHRcXHRcXHRjbGVhck15VmFyKCfkuLvpobXnsbvliKsnKTtcXG5cXHRcXHR9KSlcXG5cXHRcXHR2YXIgdGlwc19zZWxlY3QgPSBnZXRNeVZhcihcXFwi5Li76aG157G75YirXFxcIiwgJ25ldycpO1xcblxcdFxcdGlmIChQQUdFID09IDEpIHtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAncGljXzFfZnVsbCcsXFxuXFx0XFx0XFx0XFx0dGl0bGU6ICcwJyxcXG5cXHRcXHRcXHRcXHRpbWc6IGFwcF9iYWNrZ3JvdW5kLFxcblxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdhdmF0YXInLFxcblxcdFxcdFxcdFxcdHRpdGxlOiB1c2VyX25hbWUgKyAnXFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgXFxcIjxmb250IGNvbG9yPWdyZXk+XFxcIiArICfkurrmsJQgJyArIGNvdW50X3BvcHVsYXJpdHkgKyAnIMK3ICcgKyfnsonkuJ0gJyArY291bnRfZm9sbG93ZXIgKyBcXFwiPC9mb250PlxcXCIsXFxuXFx0XFx0XFx0XFx0aW1nOiB1c2VyX2F2YXRhcixcXG5cXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0XFx0XFx0fSk7XFxuXFxuXFx0XFx0XFx0dmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcblxcdFxcdFxcdGZ1bmN0aW9uIGdldEhlYWQodGl0bGVzKSB7XFxuXFx0XFx0XFx0XFx0cmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGVzICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFx0XFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICduZXcnID8gZ2V0SGVhZCh0aXRsZXMgPSBcXFwi5pyA5pawXFxcIikgOiAn5pyA5pawJyxcXG5cXHRcXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfkuLvpobXnsbvliKsnLCAnbmV3Jyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdH0pLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAndmlldycgPyBnZXRIZWFkKHRpdGxlcyA9IFxcXCLng63pl6hcXFwiKSA6ICfng63pl6gnLFxcblxcdFxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S4u+mhteexu+WIqycsICd2aWV3Jyk7XFxuXFx0XFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdFxcdH0pLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzQnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiB0aXBzX3NlbGVjdCA9PSAnY29sbGVjdGlvbnMnID8gZ2V0SGVhZCh0aXRsZXMgPSBcXFwi5LiT6L6RXFxcIikgOiAn5LiT6L6RJyxcXG5cXHRcXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdFxcdHB1dE15VmFyKCfkuLvpobXnsbvliKsnLCAnY29sbGVjdGlvbnMnKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0fSksXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfNCcsXFxuXFx0XFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICfmgLvmlofnq6AnID8gZ2V0SGVhZCh0aXRsZXMgPSBcXFwi5paH56ugXFxcIikgOiAn5paH56ugJyxcXG5cXHRcXHRcXHRcXHR1cmw6JCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+S4u+mhteexu+WIqycsICfmgLvmlofnq6AnKTtcXG5cXHRcXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0XFx0fSksXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0fVxcblxcdFxcdC8vIOWIl+ihqOmDqOWIhlxcblxcdFxcdGlmICh0aXBzX3NlbGVjdCA9PSAnbmV3JyB8fCB0aXBzX3NlbGVjdCA9PSAndmlldycpIHtcXG5cXHRcXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/liJvkvZzkurrkvZzlk4HliJfooahcXFwiKSkucnVsZSlcXG5cXHRcXHR9XFxuXFx0XFx0aWYgKHRpcHNfc2VsZWN0ID09ICdjb2xsZWN0aW9ucycpIHtcXG5cXHRcXHRcXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/liJvkvZzkurrkuJPovpHliJfooahcXFwiKSkucnVsZSlcXG5cXHRcXHR9XFxuXFx0XFx0aWYgKHRpcHNfc2VsZWN0ID09ICfmgLvmlofnq6AnKSB7XFxuXFx0XFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvd2ViX+aWh+eroOWIl+ihqFxcXCIpKS5ydWxlKVxcblxcdFxcdH1cXG5cXHRcXHRzZXRSZXN1bHQoZCk7XFxuXFx0fSBjYXRjaCAoZSkge1xcblxcdFxcdGJhY2soZmFsc2UpXFxuXFx0fVxcbn0sIFVTRVJfSE9NRSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIummlumhteWbuuWumkpTT05cIixcInBhdGhcIjpcIummlumhteWbuuWumkpTT05cIixcInJ1bGVcIjpcInZhciBpbmRleF91cmwgPSAnaHR0cHM6Ly9hcHAueGlucGlhbmNoYW5nLmNvbS9wYWdlL2Rpc2NvdmVyeSc7XFxudmFyIGluZGV4X0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5kZXhfdXJsLCB7aGVhZGVyczogeydVc2VyLUFnZW50JzpcXFwiVXNlci1BZ2VudE5ld1N0dWRpb3MvMS45LjEgKGNvbS54aW5waWFuY2hhbmcubmV3c3R1ZGlvczsgYnVpbGQ6Nzg2OyBBbmRyb2lkIDExXFxcIn0sbWV0aG9kOiAnR0VUJ30pKS5kYXRhO1xcbmxldCBYUEMgPSBpbmRleF9KU09OLmNhdGVnb3JpZXM7XFxubGV0IGJhbm5lcnMgPSBpbmRleF9KU09OLmJhbm5lcnM7XFxudmFyIHQgPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBiYW5uZXJzLmxlbmd0aCk7XFxuYmFubmVycyA9IGluZGV4X0pTT04uYmFubmVyc1t0XTtcXG52YXIgUExBWV9MSU5LUyA9IGJhbm5lcnMudXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIm+S9nOS6uuS9nOWTgeWIl+ihqFwiLFwicGF0aFwiOlwi5Yib5L2c5Lq65L2c5ZOB5YiX6KGoXCIsXCJydWxlXCI6XCIvLyDml7bpl7TmiLPovazmjaJcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS/ml7bpl7TmiLPovazmjaJcXFwiKSkucnVsZSk7XFxudmFyIGxpc3RfdXJsID0gdXJsICsgJy9hcnRpY2xlcz9pc19oaWRlX2luX3NwYWNlPTAmb3JkZXI9JyArIHRpcHNfc2VsZWN0ICsnJnJldHVybl9zdHJ1Y3RfdHlwZT11c2VyX2hvbWUmdHlwZT1wdWJsaWMmcGFnZT0nICsgUEFHRTtcXG52YXIgQVBQX0pTT04gPSBKU09OLnBhcnNlKHJlcXVlc3QobGlzdF91cmwpKS5kYXRhO1xcbi8qdmFyIHRvdGFsID0gQVBQX0pTT04udG90YWw7XFxucHV0TXlWYXIoJ+S9nOWTgeaVsOmHjycsdG90YWwpOyovXFxuQVBQX0pTT049QVBQX0pTT04ubGlzdDtcXG5pZiAoQVBQX0pTT04ubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0Zm9yIChsZXQgaSBpbiBBUFBfSlNPTikge1xcblxcdFxcdHZhciBhcHBfY2FjaGUgPSBBUFBfSlNPTltpXS5yZXNvdXJjZTtcXG5cXHRcXHR2YXIgUExBWV9MSU5LUyA9IGFwcF9jYWNoZS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcblxcdFxcdHZhciBsaWtlID0gYXBwX2NhY2hlLmNvdW50LmNvdW50X2xpa2U7XFxuXFx0XFx0dmFyIHZpZXcgPSBhcHBfY2FjaGUuY291bnQuY291bnRfdmlldztcXG5cXHRcXHRpZiAobGlrZSA+IDEwMDApIGxpa2UgPSAobGlrZSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0XFx0aWYgKHZpZXcgPiAxMDAwMCkgdmlldyA9ICh2aWV3IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAndyc7XFxuXFx0XFx0dmFyIGltZyA9IGFwcF9jYWNoZS5jb3ZlcjtcXG5cXHRcXHR2YXIgdGl0bGUgPSBhcHBfY2FjaGUudGl0bGU7XFxuXFx0XFx0dmFyIHB1Ymxpc2hfdGltZSA9IGFwcF9jYWNoZS5wdWJsaXNoX3RpbWU7XFxuXFx0XFx0Ly8g5pe26Ze05oiz6L2s5bm05pyI5pelXFxuXFx0XFx0cHVibGlzaF90aW1lID0gdGltZXN0YW1wVG9UaW1lKHRtID0gcHVibGlzaF90aW1lLCB0cz0wKVxcblxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0Y29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXHRcXHRcXHR0aXRsZTogdGl0bGUsXFxuXFx0XFx0XFx0ZGVzYzogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyBwdWJsaXNoX3RpbWUgKyAnXFxcXG4nICsgbGlrZSArICcg5Zac5qyiJyArJyDCtyAnICsgdmlldyArJyDop4LnnIsnICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdGltZzogaW1nLFxcblxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdH0pO1xcblxcdH1cXG59IGVsc2Uge1xcblxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWIm+S9nOS6uuS4k+i+keWIl+ihqFwiLFwicGF0aFwiOlwi5Yib5L2c5Lq65LiT6L6R5YiX6KGoXCIsXCJydWxlXCI6XCJ2YXIgbGlzdF91cmwgPSB1cmwgKyAnL2NvbGxlY3Rpb25zP3BhZ2U9JyArIFBBR0U7XFxudmFyIEFQUF9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KGxpc3RfdXJsKSkuZGF0YS5saXN0O1xcbmlmIChBUFBfSlNPTi5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRmb3IgKGxldCBpIGluIEFQUF9KU09OKSB7XFxuXFx0XFx0dmFyIGFwcF9jYWNoZSA9IEFQUF9KU09OW2ldO1xcblxcdFxcdHZhciBBbGJ1bV91cmwgPSBhcHBfY2FjaGUudXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKSArICcvYXJ0aWNsZXM/aXNfZGV0YWlsPXRydWUmcGFnZT0nO1xcblxcdFxcdHZhciBiZ19pbWcgPSBhcHBfY2FjaGUuY292ZXJfdXJsO1xcblxcdFxcdHZhciBkZXNjID0gYXBwX2NhY2hlLmRlc2NyaXB0aW9uO1xcblxcdFxcdHZhciBhcnRpY2xlID0gYXBwX2NhY2hlLmNvdW50LmNvdW50X2FydGljbGU7XFxuXFx0XFx0dmFyIGxpa2UgPSBhcHBfY2FjaGUuY291bnQuY291bnRfbGlrZWQ7XFxuXFx0XFx0dmFyIHZpZXcgPSBhcHBfY2FjaGUuY291bnQuY291bnRfdmlld2VkO1xcblxcdFxcdGlmIChsaWtlID4gMTAwMCkgbGlrZSA9IChsaWtlIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHRcXHRpZiAodmlldyA+IDEwMDAwKSB2aWV3ID0gKHZpZXcgLyAxMDAwMCkudG9GaXhlZCgxKSArICd3JztcXG5cXHRcXHR2YXIgaW1nID0gYXBwX2NhY2hlLmNvdmVyX3VybDtcXG5cXHRcXHR2YXIgdGl0bGUgPSBhcHBfY2FjaGUudGl0bGU7XFxuXFx0XFx0dmFyIHB1dF90aXRsZSA9IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ+S9nOWTgSAnICsgYXJ0aWNsZSArICcgwrcgJyArICfmtY/op4ggJyArIHZpZXcgKyAnIMK3ICcgKyAn6LWeICcgK2xpa2UgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCI7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3BpY18xX2NhcmQnLFxcblxcdFxcdFxcdHRpdGxlOiB0aXRsZSxcXG5cXHRcXHRcXHRpbWc6IGJnX2ltZyArICdAUmVmZXJlcj0nICtiZ19pbWcsXFxuXFx0XFx0XFx0ZGVzYzogJ+S9nOWTgSAnICsgYXJ0aWNsZSArICcgIMK3ICAnICsgJ+a1j+iniCAnICsgdmlldyArICcgIMK3ICAnICsgJ+i1niAnICsgbGlrZSxcXG5cXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHR1cmw6ICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlI2ltbWVyc2l2ZVRoZW1lI25vSGlzdG9yeSMnKS5ydWxlKChiZ19pbWcsIHB1dF90aXRsZSwgZGVzYyxBbGJ1bV91cmwpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgUEFHRSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcblxcdFxcdFxcdFxcdFxcdHZhciBkID0gW107XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHVybCA9IEFsYnVtX3VybCArIFBBR0U7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIEFQUF9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCkpLmRhdGEubGlzdDtcXG5cXHRcXHRcXHRcXHRcXHRpZiAoUEFHRSA9PSAxKSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGltZzogYmdfaW1nLFxcblxcdFxcdFxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzEnLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHRpdGxlOiBwdXRfdGl0bGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dGl0bGU6IFxcXCI8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyBkZXNjICtcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dXJsOiAnaGlrZXI6Ly9lbXB0eScsXFxuXFx0XFx0XFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdGlmIChBUFBfSlNPTi5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRmb3IgKGxldCBpIGluIEFQUF9KU09OKSB7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIFBMQVlfTElOS1MgPSBBUFBfSlNPTltpXS51cmwucmVwbGFjZSgvbmV3c3R1ZGlvcy8sICdodHRwcycpO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciB0aXRsZSA9IEFQUF9KU09OW2ldLnRpdGxlO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdHZhciBpbWcgPSBBUFBfSlNPTltpXS5jb3ZlcjtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2F0ID0gQVBQX0pTT05baV0uY2F0ZWdvcmllcztcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2F0X2FsbCA9IFtdXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0Zm9yICh2YXIgaSBpbiBjYXQpIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2F0XzEgPSBjYXRbaV0uY2F0ZWdvcnlfbmFtZTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR2YXIgY2F0XzIgPSBjYXRbaV0uc3ViLmNhdGVnb3J5X25hbWU7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y2F0X2FsbC5wdXNoKFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGNhdF8xICsgJy0nICsgY2F0XzIgKyAnIFxcdCdcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGNhdF9hbGwgPSBjYXRfYWxsLmpvaW4oXFxcIlxcXCIpXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0dmFyIGNhdF90aXRsZSA9ICfigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9Z3JleT4nICsgY2F0X2FsbCArICc8L2ZvbnQ+PC9zbWFsbD4nO1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR0aXRsZTogdGl0bGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0ZGVzYzogY2F0X3RpdGxlLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdGltZzogaW1nLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6KeG6aKR6K+m5oOF6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHR9IGVsc2Uge1xcblxcdFxcdFxcdFxcdFxcdFxcdGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL0VORFxcXCIpKS5ydWxlKVxcblxcdFxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRcXHRzZXRSZXN1bHQoZCk7XFxuXFx0XFx0XFx0XFx0fSwgYmdfaW1nLCBwdXRfdGl0bGUsIGRlc2MsIEFsYnVtX3VybCksXFxuXFx0XFx0fSk7XFxuXFx0fVxcbn0gZWxzZSB7XFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxufVwifSx7XCJjb2xfdHlwZVwiOlwidGV4dF8xXCIsXCJuYW1lXCI6XCLop4bpopHor6bmg4XpobVcIixcInBhdGhcIjpcIuinhumikeivpuaDhemhtVwiLFwicnVsZVwiOlwiJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMnKS5ydWxlKChQTEFZX0xJTktTKSA9PiB7XFxuXFx0dmFyIFBBR0UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5cXHR2YXIgZCA9IFtdO1xcblxcdC8vIOWktOmDqFxcblxcdC8vIHZhciB1cmwgPSBVU0VSX0hPTUU7XFxuXFx0Ly8gUExBWV9MSU5LU1xcblxcdGFkZExpc3RlbmVyKCdvbkNsb3NlJywgJC50b1N0cmluZygoKSA9PiB7XFxuXFx0XFx0Y2xlYXJNeVZhcign5L2c6ICFJyk7XFxuXFx0XFx0Y2xlYXJNeVZhcign6K+m57uG57G75YirJyk7XFxuXFx0XFx0Y2xlYXJNeVZhcihcXFwi55u45Ly86KeG6aKRXFxcIik7XFxuXFx0fSkpXFxuXFx0Ly8g5pe26Ze05oiz6L2s5o2iXFxuXFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5pe26Ze05oiz6L2s5o2iXFxcIikpLnJ1bGUpO1xcblxcdHZhciB0aXBzX3NlbGVjdCA9IGdldE15VmFyKFxcXCLor6bnu4bnsbvliKtcXFwiLCAn566A5LuLJyk7XFxuXFx0aWYgKHRpcHNfc2VsZWN0ID09ICfor4TorronKSBjbGVhck15VmFyKFxcXCLnm7jkvLzop4bpopFcXFwiKTtcXG5cXHR2YXIgdGlwc19hbGlrZSA9IGdldE15VmFyKFxcXCLnm7jkvLzop4bpopFcXFwiKTtcXG5cXHR2YXIgdXJsID0gUExBWV9MSU5LUztcXG5cXG5cXHR2YXIgREFUQV9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCkpLmRhdGE7XFxuXFx0dmFyIElEID0gREFUQV9KU09OLmlkO1xcblxcdGxldCBjb21tZW50X3VybCA9IFxcXCJodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL2NvbW1lbnRzP3Jlc291cmNlX2lkPVxcXCIgKyBJRCArIFxcXCImdHlwZT1hcnRpY2xlJnBhZ2U9XFxcIiArIFBBR0U7XFxuXFx0dmFyIENPTU1FTlRfSlNPTiA9IEpTT04ucGFyc2UocmVxdWVzdChjb21tZW50X3VybCkpLmRhdGE7XFxuXFx0Ly8g6K+E6K665oC75pWwXFxuXFx0dmFyIHRvdGFsID0gQ09NTUVOVF9KU09OLnRvdGFsO1xcblxcdHZhciBQTEFZX0xJTktTID0gREFUQV9KU09OLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuXFx0dmFyIGJnX2ltZyA9IERBVEFfSlNPTi5jb3ZlcjtcXG5cXHR2YXIgdGl0bGUgPSBEQVRBX0pTT04udGl0bGU7XFxuXFx0c2V0UGFnZVRpdGxlKERBVEFfSlNPTi50aXRsZSlcXG5cXHQvLyDliIbnsbtbaV0uY2F0ZWdvcnlfbmFtZS5zdWIuY2F0ZWdvcnlfbmFtZVxcblxcdHZhciBjYXQgPSBEQVRBX0pTT04uY2F0ZWdvcmllcztcXG5cXHQvLyDlj5HluIPml7bpl7RcXG5cXHR2YXIgcHVibGlzaF90aW1lID0gREFUQV9KU09OLnB1Ymxpc2hfdGltZTtcXG5cXHRwdWJsaXNoX3RpbWUgPSB0aW1lc3RhbXBUb1RpbWUodG0gPSBwdWJsaXNoX3RpbWUsIHRzID0gMClcXG5cXHQvLyDmkq3mlL7ph49cXG5cXHR2YXIgdmlldyA9IERBVEFfSlNPTi5jb3VudC5jb3VudF92aWV3O1xcblxcdGlmICh2aWV3ID4gMTAwMDApIHZpZXcgPSAodmlldyAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ3cnO1xcblxcdC8vIOeugOS7i1xcblxcdHZhciBjb250ZW50ID0gREFUQV9KU09OLmNvbnRlbnQ7XFxuXFx0Ly8g5Zac5qyi54K56LWeXFxuXFx0dmFyIGxpa2UgPSBEQVRBX0pTT04uY291bnQuY291bnRfbGlrZTtcXG5cXHRpZiAobGlrZSA+IDEwMDApIGxpa2UgPSAobGlrZSAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0Ly8g5pS26JePXFxuXFx0dmFyIGNvbGxlY3QgPSBEQVRBX0pTT04uY291bnQuY291bnRfY29sbGVjdDtcXG5cXHRpZiAoY29sbGVjdCA+IDEwMDApIGNvbGxlY3QgPSAoY29sbGVjdCAvIDEwMDApLnRvRml4ZWQoMSkgKyAnayc7XFxuXFx0Ly8g5YiG5LqrXFxuXFx0dmFyIHNoYXJlID0gREFUQV9KU09OLmNvdW50LmNvdW50X3NoYXJlO1xcblxcdGlmIChzaGFyZSA+IDEwMDApIHNoYXJlID0gKHNoYXJlIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHQvLyDmoIfnrb5baV0ubmFtZVxcblxcdHZhciB0YWdzID0gREFUQV9KU09OLnRhZ3M7XFxuXFx0Ly8g5Yib5L2c5Lq6LnVybCjkuLvpobUpLnVzZXJuYW1lKOWQjeWtlykuYXZhdGFyKOWQjeWtlylcXG5cXHR2YXIgdXNlciA9IERBVEFfSlNPTi5hdXRob3IudXNlcmluZm87XFxuXFx0cHV0TXlWYXIoJ+S9nOiAhScsIHVzZXIudXNlcm5hbWUpO1xcblxcblxcdGlmIChQQUdFID09IDEpIHtcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAncGljXzFfZnVsbCcsXFxuXFx0XFx0XFx0dGl0bGU6ICcwJyxcXG5cXHRcXHRcXHRpbWc6IGJnX2ltZyxcXG5cXHRcXHRcXHR1cmw6ICQoKS5sYXp5UnVsZSgoREFUQV9KU09OKSA9PiB7XFxuXFx0XFx0XFx0XFx0dmFyIHBsYXlfdXJscyA9IERBVEFfSlNPTi52aWRlby5jb250ZW50LnByb2dyZXNzaXZlO1xcblxcdFxcdFxcdFxcdC8vIOW8gOWni+iOt+WPluW8ueW5lVxcblxcdFxcdFxcdFxcdHZhciBkYW5tYWt1ID0gREFUQV9KU09OLnZpZDtcXG5cXHRcXHRcXHRcXHR2YXIgZGFubXUgPSAnaHR0cHM6Ly9vc3MtZGFubWFrdTEyLnhwY2Nkbi5jb20vJyArIGRhbm1ha3UgKyAnLnR4dCc7XFxuXFx0XFx0XFx0XFx0dmFyIGNvZGUgPSByZXF1ZXN0KGRhbm11KVxcblxcdFxcdFxcdFxcdHZhciBhcnIgPSBjb2RlLnNwbGl0KFxcXCJcXFxcblxcXCIpXFxuXFx0XFx0XFx0XFx0dmFyIHIgPSBbXVxcblxcdFxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0XFx0dHJ5IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHR2YXIgbGluZSA9IEpTT04ucGFyc2UoYXJyW2ldKVxcblxcdFxcdFxcdFxcdFxcdFxcdGlmIChsaW5lLmNvbnRlbnQpIHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRyLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdHRleHQ6IGxpbmUuY29udGVudCxcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHR0aW1lOiBsaW5lLm9mZnNldFxcblxcdFxcdFxcdFxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdFxcdH0gY2F0Y2ggKGUpIHt9XFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9kYW5tdS5qc29uXFxcIiwgSlNPTi5zdHJpbmdpZnkocikpXFxuXFx0XFx0XFx0XFx0Ly8g6I635Y+W5by55bmVXFxuXFx0XFx0XFx0XFx0bGV0IHVybHMgPSBbXTtcXG5cXHRcXHRcXHRcXHRsZXQgbmFtZXMgPSBbXTtcXG5cXHRcXHRcXHRcXHRmb3IgKGxldCBqIGluIHBsYXlfdXJscykge1xcblxcdFxcdFxcdFxcdFxcdHVybHMucHVzaChwbGF5X3VybHNbal0udXJsKVxcblxcdFxcdFxcdFxcdFxcdG5hbWVzLnB1c2gocGxheV91cmxzW2pdLnByb2ZpbGUpXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdFxcdHZhciBhbGxfdXJsID0gSlNPTi5zdHJpbmdpZnkoe1xcblxcdFxcdFxcdFxcdFxcdHVybHM6IHVybHMsXFxuXFx0XFx0XFx0XFx0XFx0bmFtZXM6IG5hbWVzLFxcblxcdFxcdFxcdFxcdFxcdGRhbm11OiBcXFwiaGlrZXI6Ly9maWxlcy9jYWNoZS9kYW5tdS5qc29uXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0XFx0Ly9cXHRsb2coYWxsX3VybClcXG5cXHRcXHRcXHRcXHRyZXR1cm4gYWxsX3VybFxcblxcdFxcdFxcdH0sIERBVEFfSlNPTiksXFxuXFx0XFx0fSk7XFxuXFx0XFx0dmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcblxcblxcdFxcdGZ1bmN0aW9uIGdldEhlYWQodGl0bGVzKSB7XFxuXFx0XFx0XFx0cmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGVzICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG5cXHRcXHR9XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMicsXFxuXFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICfnroDku4snID8gZ2V0SGVhZCh0aXRsZXMgPSBcXFwi566A5LuLXFxcIikgOiAn566A5LuLJyxcXG5cXHRcXHRcXHR1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcblxcdFxcdFxcdFxcdHB1dE15VmFyKCfor6bnu4bnsbvliKsnLCAn566A5LuLJyk7XFxuXFx0XFx0XFx0XFx0cmVmcmVzaFBhZ2UoKTtcXG5cXHRcXHRcXHRcXHRyZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiO1xcblxcdFxcdFxcdH0pLFxcblxcdFxcdH0pO1xcblxcdFxcdHZhciDor4TorrogPSAn6K+E6K66ICcgKyAn4oCY4oCYJyArIHRvdGFsICsgJ+KAmeKAmSc7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ3RleHRfMicsXFxuXFx0XFx0XFx0dGl0bGU6IHRpcHNfc2VsZWN0ID09ICfor4TorronID8gZ2V0SGVhZCh0aXRsZXMgPSDor4TorropIDog6K+E6K66LFxcblxcdFxcdFxcdHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxuXFx0XFx0XFx0XFx0cHV0TXlWYXIoJ+ivpue7huexu+WIqycsICfor4TorronKTtcXG5cXHRcXHRcXHRcXHRyZWZyZXNoUGFnZSgpO1xcblxcdFxcdFxcdFxcdHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCI7XFxuXFx0XFx0XFx0fSksXFxuXFx0XFx0fSk7XFxuXFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdFxcdH0pO1xcblxcdFxcdC8vIOS7heeugOS7i+mhtVxcblxcdFxcdGlmICh0aXBzX3NlbGVjdCA9PSAn566A5LuLJykge1xcblxcdFxcdFxcdHZhciBVU0VSX0hPTUUgPSB1c2VyLnVybC5yZXBsYWNlKC9uZXdzdHVkaW9zLywgJ2h0dHBzJyk7XFxuXFx0XFx0XFx0dmFyIGRvd25sb2FkX3VybCA9IERBVEFfSlNPTi52aWRlby5jb250ZW50LnByb2dyZXNzaXZlWzBdLnVybDtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8xJyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMwMDA+JyArIHRpdGxlICsgJzwvZm9udD48L2I+JyxcXG5cXHRcXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHR2YXIgY2F0X2FsbCA9IFtdXFxuXFx0XFx0XFx0Zm9yICh2YXIgaSBpbiBjYXQpIHtcXG5cXHRcXHRcXHRcXHR2YXIgY2F0XzEgPSBjYXRbaV0uY2F0ZWdvcnlfbmFtZTtcXG5cXHRcXHRcXHRcXHR2YXIgY2F0XzIgPSBjYXRbaV0uc3ViLmNhdGVnb3J5X25hbWU7XFxuXFx0XFx0XFx0XFx0Y2F0X2FsbC5wdXNoKFxcblxcdFxcdFxcdFxcdFxcdGNhdF8xICsgJy0nICsgY2F0XzIgKyAnIFxcdCdcXG5cXHRcXHRcXHRcXHQpXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGNhdF9hbGwgPSBjYXRfYWxsLmpvaW4oXFxcIlxcXCIpXFxuXFx0XFx0XFx0dmFyIGNhdF90aXRsZSA9ICfigJzigJzigJ3igJ08c21hbGw+PGZvbnQgY29sb3I9Z3JleT4nICsgY2F0X2FsbCArICcgXFx0JyArIHB1Ymxpc2hfdGltZSArICcgXFx0XFx0JyArIHZpZXcgK1xcblxcdFxcdFxcdFxcdCfmrKHmkq3mlL4nICsgJzwvZm9udD48L3NtYWxsPic7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogY2F0X3RpdGxlLFxcblxcdFxcdFxcdFxcdHVybDogJ2hpa2VyOi8vZW1wdHknLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8xJyxcXG5cXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAncmljaF90ZXh0JyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogXFxcIjxzbWFsbD48Zm9udCBjb2xvcj0wMDA+XFxcIiArIGNvbnRlbnQgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogbGlrZSxcXG5cXHRcXHRcXHRcXHRwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz54K56LWeLnN2ZycsXFxuXFx0XFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcblxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogY29sbGVjdCxcXG5cXHRcXHRcXHRcXHRwaWNfdXJsOiAnaHR0cDovLzgyLjE1Ni4yMjIuNzcvd2Vpc3lyL2ljb24vYmJz5pS26JePLnN2ZycsXFxuXFx0XFx0XFx0XFx0dXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCIsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcblxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHR0aXRsZTogc2hhcmUsXFxuXFx0XFx0XFx0XFx0cGljX3VybDogJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L3dlaXN5ci9pY29uL2Jic+WIhuS6qy5zdmcnLFxcblxcdFxcdFxcdFxcdHVybDogXFxcImhpa2VyOi8vZW1wdHlcXFwiLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnaWNvbl9zbWFsbF80JyxcXG5cXHRcXHRcXHR9KVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0dGl0bGU6ICfkuIvovb0nLFxcblxcdFxcdFxcdFxcdHBpY191cmw6ICdodHRwOi8vODIuMTU2LjIyMi43Ny93ZWlzeXIvaWNvbi9iYnPkuIvovb0uc3ZnJyxcXG5cXHRcXHRcXHRcXHR1cmw6ICdkb3dubG9hZDovLycgKyBkb3dubG9hZF91cmwsXFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICdpY29uX3NtYWxsXzQnLFxcblxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnYmxhbmtfYmxvY2snLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGZvciAobGV0IGkgaW4gdGFncykge1xcblxcdFxcdFxcdFxcdHZhciB0YWcgPSB0YWdzW2ldLm5hbWU7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxzbWFsbD48Zm9udCBjb2xvcj1ncmV5PicgKyB0YWcgKyAnPC9mb250Pjwvc21hbGw+JyxcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcblxcdFxcdFxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKCh0YWcpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign5pCc5YWz6ZSu5a2XJywgdGFnKTtcXG5cXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv6L+b5YWl5pCc57Si6aG1XFxcIikpLnJ1bGUpO1xcblxcdFxcdFxcdFxcdFxcdH0sIHRhZyksXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHR9XFxuXFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2xpbmUnLFxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAndGV4dF8xJyxcXG5cXHRcXHRcXHRcXHR0aXRsZTogJ+KAnOKAnOKAneKAnTxiPjxmb250IGNvbG9yPSMwMDA+JyArICfliJvkvZzkuronICsgJzwvZm9udD48L2I+JyxcXG5cXHRcXHRcXHRcXHR1cmw6IFxcXCJoaWtlcjovL2VtcHR5XFxcIixcXG5cXHRcXHRcXHRcXHRleHRyYToge1xcblxcdFxcdFxcdFxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiB1c2VyLnVzZXJuYW1lLFxcblxcdFxcdFxcdFxcdGltZzogdXNlci5hdmF0YXIgKyAnQFJlZmVyZXI9JyArIHVzZXIuYXZhdGFyLFxcblxcdFxcdFxcdFxcdHVybDogZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uv5Yib5L2c5Lq66aaW6aG1XFxcIikpLnJ1bGUpLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJyxcXG5cXHRcXHRcXHR9KVxcblxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMTA7IGkrKykge1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcblxcdFxcdFxcdFxcdH0pXFxuXFx0XFx0XFx0fVxcblxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0Y29sX3R5cGU6ICd0ZXh0XzEnLFxcblxcdFxcdFxcdFxcdHRpdGxlOiAn4oCc4oCc4oCd4oCdPGI+PGZvbnQgY29sb3I9IzAwMD4nICsgJ+ebuOS8vOinhumikScgKyAnPC9mb250PjwvYj4nLFxcblxcdFxcdFxcdFxcdHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXG5cXHRcXHRcXHRcXHRcXHRwdXRNeVZhcign55u45Ly86KeG6aKRJywgJ+ebuOS8vOinhumikScpO1xcblxcdFxcdFxcdFxcdFxcdHJlZnJlc2hQYWdlKCk7XFxuXFx0XFx0XFx0XFx0XFx0cmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcdFxcdFxcdFxcdH0pLFxcblxcdFxcdFxcdFxcdGV4dHJhOiB7XFxuXFx0XFx0XFx0XFx0XFx0bGluZVZpc2libGU6IGZhbHNlXFxuXFx0XFx0XFx0XFx0fVxcblxcdFxcdFxcdH0pO1xcblxcdFxcdFxcdC8vIOebuOS8vOinhumikVxcblxcdFxcdFxcdGlmICh0aXBzX2FsaWtlID09ICfnm7jkvLzop4bpopEnKSB7XFxuXFx0XFx0XFx0XFx0dmFyIG5leHRfdXJsID0gdXJsICsgJy9uZXh0JztcXG5cXHRcXHRcXHRcXHR2YXIgTkVYVF9KU09OID0gSlNPTi5wYXJzZShyZXF1ZXN0KG5leHRfdXJsKSkuZGF0YS5saXN0O1xcblxcdFxcdFxcdFxcdGZvciAobGV0IGkgaW4gTkVYVF9KU09OKSB7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIFBMQVlfTElOS1MgPSBORVhUX0pTT05baV0udXJsLnJlcGxhY2UoL25ld3N0dWRpb3MvLCAnaHR0cHMnKTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV4dF90aXRsZSA9IE5FWFRfSlNPTltpXS50aXRsZTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV4dF9jb3ZlciA9IE5FWFRfSlNPTltpXS5jb3ZlcjtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV4dF90aXRsZSA9IE5FWFRfSlNPTltpXS50aXRsZTtcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV4dF92aWV3ID0gTkVYVF9KU09OW2ldLmNvdW50LmNvdW50X3ZpZXc7XFxuXFx0XFx0XFx0XFx0XFx0aWYgKG5leHRfdmlldyA+IDEwMDAwKSBuZXh0X3ZpZXcgPSAobmV4dF92aWV3IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAndyc7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIG5leHRfbGlrZSA9IE5FWFRfSlNPTltpXS5jb3VudC5jb3VudF9saWtlO1xcblxcdFxcdFxcdFxcdFxcdGlmIChuZXh0X2xpa2UgPiAxMDAwKSBuZXh0X2xpa2UgPSAobmV4dF9saWtlIC8gMTAwMCkudG9GaXhlZCgxKSArICdrJztcXG5cXHRcXHRcXHRcXHRcXHR2YXIgbmV4dF91c2VyID0gTkVYVF9KU09OW2ldLmF1dGhvci51c2VyaW5mby51c2VybmFtZTtcXG5cXHRcXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFx0XFx0XFx0XFx0XFx0XFx0dGl0bGU6IG5leHRfdGl0bGUsXFxuXFx0XFx0XFx0XFx0XFx0XFx0ZGVzYzogXFxcIuKAnOKAnOKAneKAnSA8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAn5pKt5pS+6YePICcgKyBuZXh0X3ZpZXcgKyAnIMK3IOWWnOasoiAnICtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXHRuZXh0X2xpa2UgKyAnXFxcXG4nICsgbmV4dF91c2VyICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdFxcdFxcdFxcdGltZzogbmV4dF9jb3ZlcixcXG5cXHRcXHRcXHRcXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+inhumikeivpuaDhemhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHRcXHRcXHRcXHR9KTtcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fVxcblxcblxcdFxcdH1cXG5cXHRcXHQvLyDnu5PmnZ/nroDku4vpobVcXG5cXHR9XFxuXFx0Ly8g57uT5p2f5LuF56ys5LiA6aG1XFxuXFx0aWYgKHRpcHNfc2VsZWN0ID09ICfor4TorronKSB7XFxuXFx0XFx0dmFyIGNhY2hlX2pzb24gPSBDT01NRU5UX0pTT04ubGlzdDtcXG5cXHRcXHQvL+aXoOivhOiuulxcblxcdFxcdGlmICh0b3RhbCA9PSAwICYmIFBBR0UgPT0gMSkge1xcblxcdFxcdFxcdGZvciAobGV0IGkgPSAwOyBpIDwgMzA7IGkrKykge1xcblxcdFxcdFxcdFxcdGQucHVzaCh7XFxuXFx0XFx0XFx0XFx0XFx0Y29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG5cXHRcXHRcXHRcXHR9KVxcblxcdFxcdFxcdH1cXG5cXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdHRpdGxlOiBcXFwi4oCc4oCc4oCd4oCdIDxzbWFsbD48Zm9udCBjb2xvcj0nZ3JleSc+XFxcIiArICfigJTigJQgICDmmoLml6Dor4TorrogICDigJTigJQnICsgXFxcIjwvZm9udD4gPC9zbWFsbD5cXFwiLFxcblxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuXFx0XFx0XFx0XFx0ZXh0cmE6IHtcXG5cXHRcXHRcXHRcXHRcXHRsaW5lVmlzaWJsZTogZmFsc2VcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0fSlcXG5cXHRcXHR9XFxuXFx0XFx0aWYgKGNhY2hlX2pzb24ubGVuZ3RoICE9IFxcXCJcXFwiKSB7XFxuXFx0XFx0XFx0Zm9yIChsZXQgaSBpbiBjYWNoZV9qc29uKSB7XFxuXFx0XFx0XFx0XFx0dmFyIFVTRVJfSE9NRSA9ICdodHRwczovL2FwcC54aW5waWFuY2hhbmcuY29tL3VzZXIvJyArIGNhY2hlX2pzb25baV0udXNlcmlkO1xcblxcdFxcdFxcdFxcdHZhciB1c2VyX2F2YXRhciA9IGNhY2hlX2pzb25baV0udXNlckluZm8uYXZhdGFyO1xcblxcdFxcdFxcdFxcdHZhciB1c2VyX3VzZXJuYW1lID0gY2FjaGVfanNvbltpXS51c2VySW5mby51c2VybmFtZTtcXG5cXHRcXHRcXHRcXHRpZiAoZ2V0TXlWYXIoJ+S9nOiAhScpID09IHVzZXJfdXNlcm5hbWUpIHVzZXJfdXNlcm5hbWUgPSAnPGZvbnQgY29sb3I9I2VkOWE0MT4nICsgdXNlcl91c2VybmFtZSArXFxuXFx0XFx0XFx0XFx0XFx0JzwvZm9udD4nO1xcblxcdFxcdFxcdFxcdC8vIOivhOiuuuWGheWuuVxcblxcdFxcdFxcdFxcdHZhciBjb250ZW50ID0gY2FjaGVfanNvbltpXS5jb250ZW50O1xcblxcdFxcdFxcdFxcdC8vIOivhOiuuuaXtumXtFxcblxcdFxcdFxcdFxcdHZhciBhZGR0aW1lID0gY2FjaGVfanNvbltpXS5hZGR0aW1lO1xcblxcdFxcdFxcdFxcdGFkZHRpbWUgPSB0aW1lc3RhbXBUb1RpbWUodG0gPSBhZGR0aW1lLCB0cyA9IDEpXFxuXFx0XFx0XFx0XFx0Ly8g5Zue5aSNXFxuXFx0XFx0XFx0XFx0aWYgKGNhY2hlX2pzb25baV0ucmVmZXJlcikge1xcblxcdFxcdFxcdFxcdFxcdHZhciByZV9uYW1lID0gY2FjaGVfanNvbltpXS5yZWZlcmVyLnVzZXJJbmZvLnVzZXJuYW1lO1xcblxcdFxcdFxcdFxcdFxcdHZhciByZV9jb250ZW50ID0gY2FjaGVfanNvbltpXS5yZWZlcmVyLmNvbnRlbnQ7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJlZmVyZXIgPSBcXFwiPGJsb2NrcXVvdGU+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAnPGNvZGU+JyArIHJlX25hbWUgKyAnPC9jb2RlPicgKyAnPGJyPicgK1xcblxcdFxcdFxcdFxcdFxcdFxcdHJlX2NvbnRlbnQgKyBcXFwiPC9mb250PjwvYmxvY2txdW90ZT5cXFwiO1xcblxcdFxcdFxcdFxcdH0gZWxzZSB7XFxuXFx0XFx0XFx0XFx0XFx0dmFyIHJlZmVyZXIgPSBcXFwiXFxcIlxcblxcdFxcdFxcdFxcdH1cXG5cXHRcXHRcXHRcXHRmb3IgKGxldCBpID0gMDsgaSA8IDEwOyBpKyspIHtcXG5cXHRcXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuXFx0XFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRcXHR9XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHR0aXRsZTogdXNlcl91c2VybmFtZSArIFxcXCI8c21hbGw+PGZvbnQgY29sb3I9J2dyZXknPlxcXCIgKyAnXFxcXHRcXFxcdCcgKyBhZGR0aW1lICtcXG5cXHRcXHRcXHRcXHRcXHRcXHRcXFwiPC9mb250Pjwvc21hbGw+XFxcIixcXG5cXHRcXHRcXHRcXHRcXHRpbWc6IHVzZXJfYXZhdGFyICsgJ0BSZWZlcmVyPScgKyB1c2VyX2F2YXRhcixcXG5cXHRcXHRcXHRcXHRcXHR1cmw6IGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL+WIm+S9nOS6uummlumhtVxcXCIpKS5ydWxlKSxcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ2F2YXRhcicsXFxuXFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0XFx0ZC5wdXNoKHtcXG5cXHRcXHRcXHRcXHRcXHR0aXRsZTogcmVmZXJlciArIFxcXCI8Zm9udCBjb2xvcj0nMDAwJz5cXFwiICsgJ1xcXFx0XFxcXHRcXFxcdFxcXFx0XFxcXHQnICsgY29udGVudCArIFxcXCI8L2ZvbnQ+XFxcIixcXG5cXHRcXHRcXHRcXHRcXHR1cmw6ICdoaWtlcjovL2VtcHR5JyxcXG5cXHRcXHRcXHRcXHRcXHRjb2xfdHlwZTogJ3JpY2hfdGV4dCcsXFxuXFx0XFx0XFx0XFx0fSlcXG5cXHRcXHRcXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdFxcdFxcdGNvbF90eXBlOiAnbGluZScsXFxuXFx0XFx0XFx0XFx0fSk7XFxuXFx0XFx0XFx0fVxcblxcdFxcdH0gZWxzZSBpZiAodG90YWwgIT0gMCl7XFxuXFx0XFx0XFx0ZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvRU5EXFxcIikpLnJ1bGUpXFxuXFx0XFx0fVxcblxcdH1cXG5cXHRzZXRSZXN1bHQoZCk7XFxufSwgUExBWV9MSU5LUylcXG5cIn0se1wibmFtZVwiOlwiRU5EXCIsXCJwYXRoXCI6XCJFTkRcIixcInJ1bGVcIjpcImQucHVzaCh7XFxuXFx0dGl0bGU6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgJ+KAlOKAlCAgIEVORCAgIOKAlOKAlCcgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0Y29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG5cXHRleHRyYToge1xcblxcdFxcdGxpbmVWaXNpYmxlOiBmYWxzZVxcblxcdH1cXG59KVwifSx7XCJuYW1lXCI6XCJ3ZWJf5paH56ug5YiX6KGoXCIsXCJwYXRoXCI6XCJ3ZWJf5paH56ug5YiX6KGoXCIsXCJydWxlXCI6XCJNWV9VUkwgPSAnaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbSc7XFxuaWYgKHRpcHNfc2VsZWN0ID09ICfmlofnq6AnKSB7XFxuXFx0dmFyIFdFQl9VUkwgPSBcXFwiaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS9pbmRleC5waHA/YXBwPXNlYXJjaCZ0cz1leHAma3c9XFxcIiArIHRpcHNfdGl0bGUgKycmcGFnZT0nICsgUEFHRTtcXG5cXHR2YXIgZXhwPScubmFtZSc7XFxufVxcbmlmICh0aXBzX3NlbGVjdCA9PSAn5oC75paH56ugJykge1xcblxcdHZhciBleHA9Jy5leHAtZGVzYyc7XFxuXFx0dmFyIFdFQl9VUkwgPSBcXFwiaHR0cHM6Ly93d3cueGlucGlhbmNoYW5nLmNvbS91c2VyL2V4cC9pZC1cXFwiK0lEK1xcXCIvY2F0ZWlkLTAvcGFnZS1cXFwiKyBQQUdFO1xcbn1cXG52YXIgd2ViX2xpc3RzID0gcmVxdWVzdChXRUJfVVJMLHtoZWFkZXJzOiB7ICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjApJ319KTtcXG53ZWJfbGlzdHMgPSBwZGZhKHdlYl9saXN0cywgXFxcIi5leHAtY29uJiZsaVxcXCIpXFxuaWYgKHdlYl9saXN0cy5sZW5ndGggIT0gXFxcIlxcXCIpIHtcXG5cXHRmb3IgKHZhciBpIGluIHdlYl9saXN0cykge1xcblxcdFxcdHNldFBhZ2VUaXRsZShwZGZoKHdlYl9saXN0c1tpXSwgJy5leHAtdGl0bGUmJlRleHQnKSlcXG5cXHRcXHRkLnB1c2goe1xcblxcdFxcdFxcdGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuXFx0XFx0XFx0dGl0bGU6IHBkZmgod2ViX2xpc3RzW2ldLCAnLmV4cC10aXRsZSYmVGV4dCcpLFxcblxcdFxcdFxcdGRlc2M6IFxcXCLigJzigJzigJ3igJ0gPHNtYWxsPjxmb250IGNvbG9yPSdncmV5Jz5cXFwiICsgcGRmaCh3ZWJfbGlzdHNbaV0sIGV4cCsnJiZUZXh0JykgKyBcXFwiPC9mb250PiA8L3NtYWxsPlxcXCIsXFxuXFx0XFx0XFx0cGljX3VybDogcGQod2ViX2xpc3RzW2ldLCAnaW1nJiZfc3JjJykgKyAnQFJlZmVyZXI9JyArIHBkKHdlYl9saXN0c1tpXSwgJ2ltZyYmX3NyYycpLFxcblxcdFxcdFxcdHVybDogcGQod2ViX2xpc3RzW2ldLCAnbGkmJmEmJmhyZWYnKSArXFxuXFx0XFx0XFx0XFx0YEBydWxlPWpzOiBsZXQgZCA9IFtdO2QucHVzaCh7dGl0bGU6cGRmaChnZXRSZXNDb2RlKCksJy5jb250ZW50JiZIdG1sJyksY29sX3R5cGU6XFxcInJpY2hfdGV4dFxcXCJ9KTtzZXRSZXN1bHQoZCk7YCxcXG5cXHRcXHR9KTtcXG5cXHR9XFxufSBlbHNlIHtcXG5cXHRldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9FTkRcXFwiKSkucnVsZSlcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLml7bpl7TmiLPovazmjaJcIixcInBhdGhcIjpcIuaXtumXtOaIs+i9rOaNolwiLFwicnVsZVwiOlwiZnVuY3Rpb24gdGltZXN0YW1wVG9UaW1lKHRtLCB0cykge1xcblxcdFxcdHVuZGVmaW5lZFxcblxcdFxcdHZhciBkYXRlID0gbmV3IERhdGUodG0gKiAxMDAwKTsgLy/ml7bpl7TmiLPkuLoxMOS9jemcgCoxMDAw77yM5pe26Ze05oiz5Li6MTPkvY3nmoTor53kuI3pnIDkuZgxMDAwXFxuXFx0XFx0dmFyIFkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuXFx0XFx0dmFyIE0gPSAoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkgKyAnLSc7XFxuXFx0XFx0dmFyIEQgPSBkYXRlLmdldERhdGUoKTtcXG5cXHRcXHR2YXIgaCA9ICcgfCAnICsgZGF0ZS5nZXRIb3VycygpICsgJzonO1xcblxcdFxcdHZhciBtID0gZGF0ZS5nZXRNaW51dGVzKCk7XFxuXFx0XFx0aWYobTwxMCkgbSA9ICcwJyttO1xcblxcdFxcdG0gPSBtICsgJzonXFxuXFx0XFx0dmFyIHMgPSBkYXRlLmdldFNlY29uZHMoKTtcXG5cXHRcXHRpZihzPDEwKSBzID0gJzAnK3M7XFxuXFx0XFx0aWYgKHRzID09IDApIHJldHVybiBZICsgTSArIEQ7XFxuXFx0XFx0aWYgKHRzID09IDEpIHJldHVybiBZICsgTSArIEQgKyBoICsgbSArIHM7XFxuXFx0fVwifV0iLCJpY29uIjoiaHR0cHM6Ly9hcHBpbWcuZGJhbmtjZG4uY29tL2FwcGxpY2F0aW9uL2ljb24xNDQvODVlYmJhYzgwYjUzNDg3Njk1YjgzNTg3YjlhNWUxMDMucG5nIiwicHJveHkiOiIifQ==
Add Comment
Please, Sign In to add comment