Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥主页设置-导入-主题预览@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbXSxcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwi5oiR55qE5Li76aG1XCIsXCJ2ZXJzaW9uXCI6MCxcInVybFwiOlwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjO2dldDtVVEYtODt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoTGludXjvvJvvvJsgQW5kcm9pZCAxMe+8m++8myBNaSAxMCBQcm8pIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS84OC4wLjQzMjQuMTUyIE1vYmlsZSBTYWZhcmkvNTM3LjM2fVwiLFwiY29sX3R5cGVcIjpcImljb25fc21hbGxfNFwiLFwiZmluZF9ydWxlXCI6XCJqczpldmFsKGZldGNoKCdoaWtlcjovL2Fzc2V0cy9ob21lLmpzJykpOyhcXG5qc29uID0+IHtcXG4gICAgdmFyIExvY2FsZmlsZSA9IEhpa2VySG9tZS5nZXRMb2NhbGZpbGUoKTtcXG4gICAgTG9jYWxmaWxlLnByZXZpZXcoanNvbik7XFxuICAgIHNldFJlc3VsdChIaWtlckhvbWUubG9hZChcXFwibWFpblxcXCIpLm1hcChpdCA9PiB7XFxuICAgICAgICBpZiAoaXQgIT09IHVuZGVmaW5lZCAmJiBpdC5jb2xfdHlwZSAhPSBcXFwieDVfd2Vidmlld19zaW5nbGVcXFwiKSB7XFxuICAgICAgICAgICAgaXQudXJsID0gXFxcInRvYXN0Oi8vXFxcXHU5ODg0XFxcXHU4OWM4XFxcXHU2YTIxXFxcXHU1ZjBmXFxcIjtcXG4gICAgICAgIH1cXG4gICAgICAgIHJldHVybiBpdDtcXG4gICAgfVxcbiAgICApKTtcXG59XFxuKSh7XFxcIkJvb2ttYXJrc0xpc3RcXFwiOlxcXCJbe1xcXFxcXFwicGF0dGVyblxcXFxcXFwiOjIsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLpooTlpITnkIZcXFxcXFxcIixcXFxcXFxcImNvZGVcXFxcXFxcIjpcXFxcXFxcInZhciBjb2xsZWN0aW9uPUpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vY29sbGVjdGlvbicpKTtcXFxcXFxcXG52YXIgY29sUGljVXJsPVxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2ltYWdlcy9jYXJkX2JnXFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG5mb3IobGV0IGk9MDtpPGNvbGxlY3Rpb24ubGVuZ3RoO2krKyl7XFxcXFxcXFxuICAgICAgICAgICAgICBpZihjb2xsZWN0aW9uW2ldLnBpY1VybCE9bnVsbCl7ICAgICAgICAgICAgICAgICAgICAgICAgY29sUGljVXJsPWNvbGxlY3Rpb25baV0ucGljVXJsO1xcXFxcXFxcbiAgICAgICAgICAgICAgYnJlYWs7XFxcXFxcXFxuICAgIH1cXFxcXFxcXG59XFxcXFxcXFxuXFxcXFxcXFxuLyoqdHJ5e1xcXFxcXFxcbnZhciBsb2dvUGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cDovL2FwaS5idHN0dS5jbi9zamJ6L2FwaS5waHA/bHg9ZmVuZ2ppbmcmZm9ybWF0PWltYWdlcyZfdHQ9JytuZXcgRGF0ZSgpLmdldFRpbWUoKSx7cmVkaXJlY3Q6ZmFsc2UsIHdpdGhIZWFkZXJzOnRydWUsIHRpbWVvdXQ6IDEwMDB9KSkuaGVhZGVycy5sb2NhdGlvblswXTtcXFxcXFxcXG59Y2F0Y2goZSl7fSovXFxcXFxcXFxudmFyIGxvZ29QaWMgPSBcXFxcXFxcXFxcXFxcXFwiaGlrZXI6Ly9pbWFnZXMvaG9tZV9iZ1xcXFxcXFxcXFxcXFxcXCI7XFxcXFxcXFxuW11cXFxcXFxcXG5cXFxcXFxcXG5cXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWV9LHtcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5a+85YWl5Zu+5qCHXFxcXFxcXCIsXFxcXFxcXCJjb2RlXFxcXFxcXCI6XFxcXFxcXCIvL+iHquWKqOWvvOWFpe+8jOaXoOmcgOaJi+WKqOaTjeS9nOOAglxcXFxcXFxcbnZhciBodG1sID0gJ2h0dHBzOi8vaGlrZXJmYW5zLmNvbS90dWJpYW8vbW9yZS8nO1xcXFxcXFxcbnZhciBpZCA9IFsnMjU4LnBuZycsICcyMjEucG5nJywgJzUucG5nJywgJzE2LnBuZycsICczNS5wbmcnLCAnMTcucG5nJywgJzE5NS5wbmcnLCAnMTAxLnBuZycsICcxMjkucG5nJywgJzEzNy5wbmcnLCAnOTMucG5nJywgJzI1MS5wbmcnLCAnMTQucG5nJywgJzE2Ny5wbmcnLCAnNjcucG5nJywgJzE2MS5wbmcnLCAnNjUucG5nJywgJzMzNi5wbmcnLCAnMzAwLnBuZycsICc3My5wbmcnLCAnODEucG5nJywgJzM1LnBuZycsICcxNTQucG5nJywgJzE0MS5wbmcnLCAnMzgucG5nJywgJzEwLnBuZycsJzE1OS5wbmcnXTtcXFxcXFxcXG5mb3IgKHZhciBpID0gMDsgaSA8IGlkLmxlbmd0aDsgaSsrKSB7XFxcXFxcXFxuICAgIHZhciB1cmwgPSAoaHRtbCArIGlkW2ldKTtcXFxcXFxcXG4gICAgaWYgKGZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLycgKyBpZFtpXSkgPT0gZmFsc2UpIHtcXFxcXFxcXG4gICAgICAgIHNhdmVJbWFnZSh1cmwsICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvJyArIGlkW2ldKTtcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn1cXFxcXFxcXG5pZiAoZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL0ptL2xtL211c2ljLzg1LnN2ZycpID09IGZhbHNlKSB7XFxcXFxcXFxuICAgIHNhdmVJbWFnZSgnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tdXNpYy84NS5zdmcnLCAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tdXNpYy84NS5zdmcnKTtcXFxcXFxcXG59XFxcXFxcXFxuaWYgKGZpbGVFeGlzdCgnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3ZpZS85LnN2ZycpID09IGZhbHNlKSB7XFxcXFxcXFxuICAgIHNhdmVJbWFnZSgnaHR0cHM6Ly9oaWtlcmZhbnMuY29tL3R1Ymlhby9tb3ZpZS85LnN2ZycsICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vdmllLzkuc3ZnJyk7XFxcXFxcXFxufVxcXFxcXFxcbmlmIChmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbW92aWUvMjIuc3ZnJykgPT0gZmFsc2UpIHtcXFxcXFxcXG4gICAgc2F2ZUltYWdlKCdodHRwczovL2hpa2VyZmFucy5jb20vdHViaWFvL21vdmllLzIyLnN2ZycsICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vdmllLzIyLnN2ZycpO1xcXFxcXFxcbn1cXFxcXFxcXG5pZiAoZmlsZUV4aXN0KCdoaWtlcjovL2ZpbGVzL0ptL2dpZi8xLmdpZicpID09IGZhbHNlKSB7XFxcXFxcXFxuICAgIHNhdmVJbWFnZSgnaHR0cHM6Ly9pbWcudmludWEuY24vaW1hZ2VzL2FMaHUyLmdpZicsICdoaWtlcjovL2ZpbGVzL0ptL2dpZi8xLmdpZicpO1xcXFxcXFxcbn1cXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWV9LHtcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIumhuuaQnFxcXFxcXFwiLFxcXFxcXFwibWFya1xcXFxcXFwiOlxcXFxcXFwi5rW35oqlXFxcXFxcXCIsXFxcXFxcXCJsaXN0XFxcXFxcXCI6W3tcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MixcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIumhuuaQnOWFg+e0oFxcXFxcXFwiLFxcXFxcXFwiY29kZVxcXFxcXFwiOlxcXFxcXFwicHV0VmFyKCflsI/nqIvluo/lkI0nLCBNWV9SVUxFLnRpdGxlKTtcXFxcXFxcXG5wdXRWYXIoJ+mhuuaQnOmrmOW6picsICcxOTAnKTtcXFxcXFxcXG52YXIg5pys5ZywID0gZ2V0UGF0aCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9kekhvdXNlL2h0bWwv6aG65pCcMS5odG1sJyk7XFxcXFxcXFxuaWYgKGZpbGVFeGlzdCjmnKzlnLApID09IGZhbHNlKSB7XFxcXFxcXFxuICAgIHZhciDov5znqIt4NSA9IHJlcXVlc3QoJ2h0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY2ODEmYXV0aD02NWRlY2RiMy1iMjgxLTVlODQtODE3MC1hYWVjM2YyN2I5YTEnKTtcXFxcXFxcXG4gICAgaWYgKOi/nOeoi3g1LmluZGV4T2YoJ+mhuuaQnCcpID4gMCkge1xcXFxcXFxcbiAgICAgICAgd3JpdGVGaWxlKOacrOWcsCwg6L+c56iLeDUpO1xcXFxcXFxcbiAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgY29uZmlybSh7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfinYzplJnor6/mj5DnpLonLFxcXFxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICfpobrmkJzlr7zlhaXlh7rplJlcXFxcXFxcXFxcXFxcXFxcbuivt+WIsOmBk+mVv+S7k+W6k+aJi+WKqOWvvOWFpemhuuaQnC5odG1sJ1xcXFxcXFxcbiAgICAgICAgfSlcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn1cXFxcXFxcXG5pZiAoIWdldFZhcignWDXliqDovb0nKSkge1xcXFxcXFxcbiAgICB4NV9oZWlnaHQgPSAwXFxcXFxcXFxufSBlbHNlIHtcXFxcXFxcXG4gICAgeDVfaGVpZ2h0ID0gZ2V0VmFyKCfpobrmkJzpq5jluqYnLCAndmlkZW8nKVxcXFxcXFxcbn1cXFxcXFxcXG5be1xcXFxcXFxcbiAgICBkZXNjOiAnbGlzdCYmJyArIHg1X2hlaWdodCxcXFxcXFxcXG4gICAgdXJsOiDmnKzlnLAsXFxcXFxcXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxcXFxcXFxcbiAgICBleHRyYToge1xcXFxcXFxcbiAgICAgICAgdWE6IE1PQklMRV9VQVxcXFxcXFxcbiAgICB9XFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICBjb2xfdHlwZTonYmlnX2JsYW5rX2Jsb2NrJyxcXFxcXFxcXG59XVxcXFxcXFwifV0sXFxcXFxcXCJmb2xkX3N0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MyxcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9zbWFsbF80XFxcXFxcXCIsXFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlfSx7XFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLmj5Lku7ZcXFxcXFxcIixcXFxcXFxcIm1hcmtcXFxcXFxcIjpcXFxcXFxcIua1t+aKpVxcXFxcXFwiLFxcXFxcXFwibGlzdFxcXFxcXFwiOlt7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjIsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLlpJrlip/og71INeaPkuS7tlxcXFxcXFwiLFxcXFxcXFwiY29kZVxcXFxcXFwiOlxcXFxcXFwidmFyIOacrOWcsCA9IGdldFBhdGgoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvZHpIb3VzZS9odG1sL+WkmuWKn+iDvWg15o+S5Lu2Lmh0bWwnKTtcXFxcXFxcXG5pZiAoZmlsZUV4aXN0KOacrOWcsCkgPT0gZmFsc2UpIHtcXFxcXFxcXG4gICAgdmFyIOi/nOeoiyA9IHJlcXVlc3QoJ2h0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY2MzgmYXV0aD1jYjlhODQ4YS00ODg1LTU4NjgtOThlOC02ZjBhYTE1NGUzZTQnKTtcXFxcXFxcXG4gICAgaWYgKOi/nOeoiy5pbmRleE9mKCfmj5Lku7YnKSA+IDApIHtcXFxcXFxcXG4gICAgICAgIHdyaXRlRmlsZSjmnKzlnLAsIOi/nOeoiyk7XFxcXFxcXFxuICAgIH0gZWxzZSB7XFxcXFxcXFxuICAgICAgICBjb25maXJtKHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KdjOmUmeivr+aPkOekuicsXFxcXFxcXFxuICAgICAgICAgICAgY29udGVudDogJ+WvvOWFpeWHuumUmVxcXFxcXFxcXFxcXFxcXFxu6K+35Yiw6YGT6ZW/5LuT5bqT5omL5Yqo5a+85YWl5aSa5Yqf6IO9SDXmj5Lku7YuaHRtbCdcXFxcXFxcXG4gICAgICAgIH0pXFxcXFxcXFxuICAgIH1cXFxcXFxcXG59XFxcXFxcXFxuW3tcXFxcXFxcXG4gICAgZGVzYzogJ2xpc3QmJjE4OCcsXFxcXFxcXFxuICAgIHVybDog5pys5ZywLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJyxcXFxcXFxcXG4gICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgIHVhOiBNT0JJTEVfVUFcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn1dXFxcXFxcXCJ9XSxcXFxcXFxcImZvbGRfc3RhdHVzXFxcXFxcXCI6ZmFsc2UsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MyxcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9zbWFsbF80XFxcXFxcXCIsXFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlfSx7XFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLosYbnk6NcXFxcXFxcIixcXFxcXFxcIm1hcmtcXFxcXFxcIjpcXFxcXFxcIua1t+aKpVxcXFxcXFwiLFxcXFxcXFwibGlzdFxcXFxcXFwiOlt7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjIsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLosYbnk6PmtbfmiqVcXFxcXFxcIixcXFxcXFxcImNvZGVcXFxcXFxcIjpcXFxcXFxcInZhciDmnKzlnLAgPSBnZXRQYXRoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2R6SG91c2UvaHRtbC9pbmRleC5odG1sJyk7XFxcXFxcXFxuaWYgKGZpbGVFeGlzdCjmnKzlnLApID09IGZhbHNlKSB7XFxcXFxcXFxuICAgIHZhciDov5znqIsgPSByZXF1ZXN0KCdodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD01NzcxJmF1dGg9YmMyOWE2ZDAtOWY0OS01ZmMyLWFmOGMtMmQ1MjU3MWM4ZjdhJyk7XFxcXFxcXFxuICAgIGlmICjov5znqIsuaW5kZXhPZign6LGG55OjJykgPiAwKSB7XFxcXFxcXFxuICAgICAgICB3cml0ZUZpbGUo5pys5ZywLCDov5znqIspO1xcXFxcXFxcbiAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgY29uZmlybSh7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfinYzplJnor6/mj5DnpLonLFxcXFxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICflr7zlhaXlh7rplJlcXFxcXFxcXFxcXFxcXFxcbuivt+WIsOmBk+mVv+S7k+W6k+aJi+WKqOWvvOWFpeixhueToy5odG1sJ1xcXFxcXFxcbiAgICAgICAgfSlcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn1cXFxcXFxcXG5be1xcXFxcXFxcbiAgICBkZXNjOiAnbGlzdCYmMTY4JyxcXFxcXFxcXG4gICAgdXJsOiDmnKzlnLAsXFxcXFxcXFxuICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxcXFxcXFxcbiAgICBleHRyYToge1xcXFxcXFxcbiAgICAgICAgdWE6IE1PQklMRV9VQVxcXFxcXFxcbiAgICB9XFxcXFxcXFxufV1cXFxcXFxcIn1dLFxcXFxcXFwiZm9sZF9zdGF0dXNcXFxcXFxcIjpmYWxzZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjozLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWV9LHtcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuWkqeawlFxcXFxcXFwiLFxcXFxcXFwibWFya1xcXFxcXFwiOlxcXFxcXFwi5rW35oqlXFxcXFxcXCIsXFxcXFxcXCJsaXN0XFxcXFxcXCI6W3tcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MixcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuWkqeawlOaSreaKpVxcXFxcXFwiLFxcXFxcXFwiY29kZVxcXFxcXFwiOlxcXFxcXFwidmFyIHRxID0gW11cXFxcXFxcXG5cXFxcXFxcXG5mdW5jdGlvbiBnZXRDaXR5KCkge1xcXFxcXFxcbiAgICBsZXQgdXJsID0gXFxcXFxcXFxcXFxcXFxcImh0dHA6Ly93d3cueXVuanNvbi5jb20vaXAvXFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG4gICAgbGV0IGlwID0gcGRmaChmZXRjaCh1cmwpLCBcXFxcXFxcXFxcXFxcXFwiLmFsZXJ0LXN1Y2Nlc3MmJmNvZGUmJlRleHRcXFxcXFxcXFxcXFxcXFwiKTtcXFxcXFxcXG4gICAgbGV0IGNpdHkgPSBwZGZoKGZldGNoKHVybCArIGlwKSwgXFxcXFxcXFxcXFxcXFxcIi50YWJsZSYmdHIsLTMmJnRkLC0xJiZUZXh0XFxcXFxcXFxcXFxcXFxcIik7XFxcXFxcXFxuICAgIHJldHVybiBjaXR5O1xcXFxcXFxcbn1cXFxcXFxcXG5cXFxcXFxcXG5mdW5jdGlvbiB6ZXJvKHMpIHtcXFxcXFxcXG4gICAgcmV0dXJuIHMgPCAxMCA/ICcwJyArIHMgOiBzO1xcXFxcXFxcbn07XFxcXFxcXFxudmFyIG15ZGF0ZSA9IG5ldyBEYXRlKCk7XFxcXFxcXFxueWVhciA9IG15ZGF0ZS5nZXRGdWxsWWVhcigpO1xcXFxcXFxcbm1vbnRoID0gbXlkYXRlLmdldE1vbnRoKCkgKyAxO1xcXFxcXFxcbmRhdGEgPSBteWRhdGUuZ2V0RGF0ZSgpO1xcXFxcXFxcbmhvdXIgPSBteWRhdGUuZ2V0SG91cnMoKTtcXFxcXFxcXG5taW51dGUgPSBteWRhdGUuZ2V0TWludXRlcygpO1xcXFxcXFxcbnNlY29uZCA9IG15ZGF0ZS5nZXRTZWNvbmRzKCk7XFxcXFxcXFxuZGF5ID0gbmV3IEFycmF5KFxcXFxcXFxcXFxcXFxcXCIg5pif5pyf5pelIFxcXFxcXFxcXFxcXFxcXCIsIFxcXFxcXFxcXFxcXFxcXCLmmJ/mnJ/kuIAgXFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcIuaYn+acn+S6jCBcXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwi5pif5pyf5LiJIFxcXFxcXFxcXFxcXFxcXCIsIFxcXFxcXFxcXFxcXFxcXCLmmJ/mnJ/lm5sgXFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcIuaYn+acn+S6lCBcXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwi5pif5pyf5YWtIFxcXFxcXFxcXFxcXFxcXCIpW215ZGF0ZS5nZXREYXkoKV07XFxcXFxcXFxudmFyIOacrOWcsCA9ICgnaGlrZXI6Ly9maWxlcy9KbS9maWxlL3RpbWUuanNvbicpO1xcXFxcXFxcbmlmIChmaWxlRXhpc3Qo5pys5ZywKSA9PSBmYWxzZSkge1xcXFxcXFxcbiAgICB2YXIg6L+c56iLID0gcmVxdWVzdCgnaHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NjYzNyZhdXRoPThkMGFkYTczLTQ5ZWQtNTJlYi05ZmZkLWE5ZTIzMWRhYzI5NScpO1xcXFxcXFxcbiAgICBpZiAo6L+c56iLLmluZGV4T2YoKSA+IDApIHtcXFxcXFxcXG4gICAgICAgIHdyaXRlRmlsZSjmnKzlnLAsIOi/nOeoiyk7XFxcXFxcXFxuICAgIH0gZWxzZSB7XFxcXFxcXFxuICAgICAgICBjb25maXJtKHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KdjOmUmeivr+aPkOekuicsXFxcXFxcXFxuICAgICAgICAgICAgY29udGVudDogJ+WvvOWFpeWHuumUmVxcXFxcXFxcXFxcXFxcXFxu6K+35Yiw6YGT6ZW/5LuT5bqT5omL5Yqo5a+85YWldGltZS5qc29uJ1xcXFxcXFxcbiAgICAgICAgfSlcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn1cXFxcXFxcXG5sZXQgY2QgPSAkLnJlcXVpcmUo5pys5ZywKS5kYXRlO1xcXFxcXFxcblxcXFxcXFxcbnZhciDkvY3nva4gPSBcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcIiB8fCBnZXRJdGVtKCflnLDljLonLCAnJyk7XFxcXFxcXFxuaWYgKCHkvY3nva4pIHtcXFxcXFxcXG4gICAg5L2N572uID0gZ2V0Q2l0eSgpLnJlcGxhY2UoXFxcXFxcXFxcXFxcXFxcIuW4glxcXFxcXFxcXFxcXFxcXCIsIFxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFwiKTtcXFxcXFxcXG4gICAgc2V0SXRlbShcXFxcXFxcXFxcXFxcXFwi5Zyw5Yy6XFxcXFxcXFxcXFxcXFxcIiwg5L2N572uKTtcXFxcXFxcXG59XFxcXFxcXFxubG9nKOS9jee9rilcXFxcXFxcXG52YXIgSUQgPSBnZXRJdGVtKCfmkq3miqXlkZgnLCAnMicpO1xcXFxcXFxcblxcXFxcXFxcbnZhciDmloflrZflpKnmsJQgPSBnZXRJdGVtKCflvIDlhbMnLCAn5byA5ZCvJyk7XFxcXFxcXFxuXFxcXFxcXFxudmFyIHBpYyA9ICgnaHR0cHM6Ly90dWFwaS5lZWVzLmNjL2FwaS5waHA/Y2F0ZWdvcnk9bWVpbnYmcHg9cGMmdHlwZT0zMDInKTtcXFxcXFxcXG5cXFxcXFxcXG52YXIgaW1nID0gZ2V0SXRlbSgnaW1nJywgcGljKTtcXFxcXFxcXG5cXFxcXFxcXG5sZXQgd2VhdGhlcl9odG1sID0gZmV0Y2goJ2h0dHBzOi8vdGlhbnFpYXBpLmNvbS9hcGkucGhwP3N0eWxlPXRzJnNraW49ZHVyaWFuJmNvbG9yPTU5N2U4MiZjb2x1bW49MyZjaXR5PScgKyDkvY3nva4pO1xcXFxcXFxcbmlmICh3ZWF0aGVyX2h0bWwpIHtcXFxcXFxcXG4gICAgbGV0IGNpdHkgPSBwZGZoKHdlYXRoZXJfaHRtbCwgJ3NwYW4uY2l0eSYmVGV4dCcpO1xcXFxcXFxcbiAgICBsZXQgYWlycXVhbGl0eSA9IHBkZmgod2VhdGhlcl9odG1sLCAnc3Bhbi5haXJxdWFsaXR5JiZUZXh0Jyk7XFxcXFxcXFxuICAgIHZhciB3ZWF0aGVyID0ge1xcXFxcXFxcbiAgICAgICAgY2l0eTogY2l0eSxcXFxcXFxcXG4gICAgICAgIGFpcnF1YWxpdHk6IGFpcnF1YWxpdHksXFxcXFxcXFxuICAgICAgICBkYXRlOiBwZGZoKHdlYXRoZXJfaHRtbCwgJ3VsLm9uZV9kYXkmJmxpLDAmJlRleHQnKSxcXFxcXFxcXG4gICAgICAgIGltZzogcGRmaCh3ZWF0aGVyX2h0bWwsICd1bC5vbmVfZGF5JiZsaSwxJiZpbWcmJnNyYycpLFxcXFxcXFxcbiAgICAgICAgY29uZDogcGRmaCh3ZWF0aGVyX2h0bWwsICd1bC5vbmVfZGF5JiZsaSwzJiZUZXh0JyksXFxcXFxcXFxuICAgICAgICB0bXA6IHBkZmgod2VhdGhlcl9odG1sLCAndWwub25lX2RheSYmbGksNCYmVGV4dCcpLFxcXFxcXFxcbiAgICAgICAgd2luZDogcGRmaCh3ZWF0aGVyX2h0bWwsICd1bC5vbmVfZGF5JiZsaSw1JiZzcGFuLDAmJlRleHQnKSArIHBkZmgod2VhdGhlcl9odG1sLCAndWwub25lX2RheSYmbGksNSYmc3BhbiwxJiZUZXh0JyksXFxcXFxcXFxuICAgIH07XFxcXFxcXFxufVxcXFxcXFxcblxcXFxcXFxcbnZhciDpopzoibIgPSBnZXRJdGVtKCfmloflrZcnLCAnJyk7XFxcXFxcXFxudmFyIHRpdGxlID0gJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPScgKyDpopzoibIgKyAnPicgKyB3ZWF0aGVyLmNpdHkgKyAnXFxcXFxcXFxcXFxcXFxcXG48c21hbGw+5aSp5rCUOiAoJyArIHdlYXRoZXIuY29uZCArICcpXFxcXFxcXFxcXFxcXFxcXG7muKnluqY6ICgnICsgd2VhdGhlci50bXAgKyAnKVxcXFxcXFxcXFxcXFxcXFxu56m65rCU6LSo6YePOiAoJyArIHdlYXRoZXIuYWlycXVhbGl0eSArICcpXFxcXFxcXFxcXFxcXFxcXG7po47lkJE6ICcgKyB3ZWF0aGVyLndpbmQgKyAnXFxcXFxcXFxcXFxcXFxcXG5cXFxcXFxcXFxcXFxcXFxcbuaXpeacnzogJyArIHllYXIgKyAn5bm0JyArIHplcm8obW9udGgpICsgJ+aciCcgKyB6ZXJvKGRhdGEpICsgJ+aXpVxcXFxcXFxcXFxcXFxcXFxu5Yac5Y6GOiAnICsgY2QgKyAnXFxcXFxcXFxcXFxcXFxcXHQnICsgZGF5ICsgJzwvc21hbGw+PC9mb250PidcXFxcXFxcXG5cXFxcXFxcXG50cS5wdXNoKHtcXFxcXFxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZScsXFxcXFxcXFxuICAgIGRlc2M6ICcwJ1xcXFxcXFxcbn0sIHtcXFxcXFxcXG4gICAgY29sX3R5cGU6ICdjYXJkX3BpY18xJyxcXFxcXFxcXG4gICAgdGl0bGU6IOaWh+Wtl+WkqeawlCA9PSAn5byA5ZCvJyA/IHRpdGxlIDogJycsXFxcXFxcXFxuICAgIGRlc2M6ICcwJyxcXFxcXFxcXG4gICAgaW1nOiBpbWcgKyAnIycgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSxcXFxcXFxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCjkvY3nva4pID0+IHtcXFxcXFxcXG4gICAgICAgIHZhciB0ZXh0ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS92NS9zbWFydGFpP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPWpzb24mbXNnPScgKyDkvY3nva4gKyAn5aSp5rCUJykpLmRhdGEuZnJvbXRleHQ7XFxcXFxcXFxuICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly94aWFvYXBpLmNuL0FQSS96c190dHMucGhwP3R5cGU9eHVuZmVpJmlkPScgKyBnZXRJdGVtKCfmkq3miqXlkZgnKSArICcmbXNnPScgKyB0ZXh0KSkudHRzO1xcXFxcXFxcbiAgICAgICAgcmVmcmVzaFg1V2ViVmlldyh1cmwpO1xcXFxcXFxcbiAgICAgICAgcmVmcmVzaFg1RGVzYygnMCcpO1xcXFxcXFxcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+ato+WcqOaSreaKpeWkqeawlCdcXFxcXFxcXG4gICAgfSwg5L2N572uKSxcXFxcXFxcXG4gICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgIGxvbmdDbGljazogW3tcXFxcXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5qp5pu05pS55aSp5rCU5L2N572uJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfmg7PopoHmm7TmjaLnmoTlnLDljLrkvY3nva4nKS5pbnB1dCgoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgn5Zyw5Yy6JywgaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5Zyw5Z2A5Li6JyArIGlucHV0O1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgICAgICB9LFxcXFxcXFxcbiAgICAgICAgICAgIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SE5pu05o2i5pKt5oql5ZGYJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbe1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+S4g+WTpSDnlLflo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WtkOaZtCDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+S4gOiPsiDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICczJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+Wwj+mcsiDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+Wwj+m5jyDnlLflo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+Wwj+aWsCDnlLflo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc2J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+Wwj+mbqiDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc3J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+i2heWTpSDnlLflo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc4J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+Wwj+WqmyDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc5J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WPtuWtkCDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxMCdcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfljYPpm6og5aWz5aOwJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTEnXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5bCP5b+gIOeUt+WjsCcsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzEyJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+S4h+WPlCDnlLflo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxMydcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfomavomasg5aWz5aOwJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTQnXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5qWg5qWgIOeUt+erpScsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzE1J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+aZk+eShyDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxNidcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfoirPoirMg5aWz56ulJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTcnXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5ZiJ5ZiJIOWls+WjsCcsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzE4J1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+Wwj+WAqSDlpbPlo7AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcxOSdcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICfoi7Hmlocg5aWz5aOwJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjAnXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9XTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbGlzdC5tYXAobGlzdCA9PiBsaXN0Lm5hbWUpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQobmFtZSwgMywgJ+ivt+mAieaLqeS9oOeahOWkqeawlOaSreaKpeWRmCcpLnNlbGVjdCgobGlzdCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciBvID0gbGlzdC5maW5kSW5kZXgobGlzdCA9PiBsaXN0Lm5hbWUgPT0gaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBsaXN0W29dLmlkO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+aSreaKpeWRmCcsIHVybCk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lmm7TmjaLmkq3miqXlkZgnXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9LCBsaXN0KVxcXFxcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgICAgIH0sXFxcXFxcXFxuICAgICAgICAgICAge1xcXFxcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KktO+4j+aNouS4quWbvueJh+aOpeWPoycsXFxcXFxcXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn5oOz6KaB5pu05o2i55qE5Zu+54mH5o6l5Y+j5Zyw5Z2AXFxcXFxcXFxcXFxcXFxcXG7mlK/mjIHnvZHnu5xhcGnlkozmnKzlnLAnKS5pbnB1dCgoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgnaW1nJywgaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5pu05o2i5Zu+54mH5o6l5Y+j5Zyw5Z2AJztcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgfSxcXFxcXFxcXG4gICAgICAgICAgICB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4o+z5o2i5Liq5paH5a2X6aKc6ImyJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfmg7PopoHmm7TmjaLnmoTpopzoibLku6PnoIFcXFxcXFxcXFxcXFxcXFxcbuS+i+Wmgu+8miNmZDI2OGEnKS5pbnB1dCgoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgn5paH5a2XJywgaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5pu05o2i5paH5a2X6aKc6ImyJztcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgfSxcXFxcXFxcXG4gICAgICAgICAgICB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UluWkqeawlOaWh+WtlzpcXFxcXFxcXFxcXFxcXFxcdCcgKyAoZ2V0SXRlbSgn5byA5YWzJywgJ+W8gOWQrycpID09ICflvIDlkK8nID8gJ+W8gCcgOiAn5YWzJyksXFxcXFxcXFxuICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+W8gOWFsycsIGdldEl0ZW0oJ+W8gOWFsycsICflvIDlkK8nKSA9PSAn5byA5ZCvJyA/ICflhbPpl60nIDogJ+W8gOWQrycpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdG9hc3QoJ+WkqeawlOaWh+Wtl+W3sicgKyAoZ2V0SXRlbSgn5byA5YWzJywgJ+W8gOWQrycpID09ICflvIDlkK8nID8gJ+aJk+W8gCcgOiAn5YWz6ZetJykpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9KSxcXFxcXFxcXG4gICAgICAgICAgICB9LFxcXFxcXFxcbiAgICAgICAgICAgIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5a85p+l55yL5L+d5a2Y5Zu+JyxcXFxcXFxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGltZyA9IGdldEl0ZW0oJ2ltZycpID09IGlucHV0O1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGltZyArICcjLmpwZyc7XFxcXFxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgfSxcXFxcXFxcXG4gICAgICAgICAgICB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4oaq77iP5oGi5aSN6buY6K6k5Zu+JyxcXFxcXFxcXG4gICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdpbWcnKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LmgaLlpI3pu5jorqTlm77niYcnXFxcXFxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgfSxcXFxcXFxcXG4gICAgICAgIF0sXFxcXFxcXFxuICAgIH1cXFxcXFxcXG59KVxcXFxcXFxcbnRxXFxcXFxcXCJ9XSxcXFxcXFxcImZvbGRfc3RhdHVzXFxcXFxcXCI6ZmFsc2UsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MyxcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9zbWFsbF80XFxcXFxcXCIsXFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlfSx7XFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLpobbpg6hcXFxcXFxcIixcXFxcXFxcIm1hcmtcXFxcXFxcIjpcXFxcXFxcIumhtumDqFxcXFxcXFwiLFxcXFxcXFwibGlzdFxcXFxcXFwiOlt7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLljbPlsIbkuIrmmKDnmoTnlLXlvbFcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCIgQGpzOiAn4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9I2ZmMDAwMD7kuIrmmKA8L2ZvbnQ+J1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfljbPlsIbkuIrmmKDnmoTnlLXlvbEnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9xcWx5a20uY24vYXBpL2ppamlhbmdzaGFuZ3lpbmcvZ2V0P2tleT03OVI4VzAyNGZ3RWhQYXFia2NjcHhMYUxpbScpKTsgICAgICAgICBqc29uLmRhdGEubWFwKGRhdGEgPT4gZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgKyAnXFxcXFxcXFxcXFxcXFxcXG5cXFxcXFxcXFxcXFxcXFxcbicgKyBkYXRhLnJlbGVhc2VEYXRlU3RyICsgJ+S4iuaYoCcsICAgICAgICAgICAgIGRlc2M6ICflr7zmvJTvvJonICsgZGF0YS5kaXJlY3RvciArICdcXFxcXFxcXFxcXFxcXFxcbua8lOWRmO+8micgKyBkYXRhLmFjdG9ycyArICdcXFxcXFxcXFxcXFxcXFxcbuexu+Wei++8micgKyBkYXRhLnR5cGUsICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLCAgICAgICAgICAgICBwaWNfdXJsOiBkYXRhLnBpY1VybCwgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9zZWFyY2g/cz0nICsgZGF0YS50aXRsZSArICcmcnVsZT3pnZLosYYmc2ltcGxlPWZhbHNlJywgICAgICAgICB9KSk7ICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgfSkgfSlcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi55S15Y+w5bm/5pKtXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiQGpzOifigJjigJjigJnigJk8Zm9udCBjb2xvcj0jNTdmNDVkPueUteWPsDwvZm9udD4nO1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgIHNldFBhZ2VUaXRsZSgn55S15Y+w5bm/5pKtJyk7ICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vbS54aW1hbGF5YS5jb20vbS1yZXZpc2lvbi9jb21tb24vYWxidW0vcXVlcnlBbGJ1bVRyYWNrUmVjb3Jkc0J5UGFnZT9hbGJ1bUlkPTY4NTg5MzU3JnBhZ2U9MSZwYWdlU2l6ZT0xJmFzYz10cnVlJykpLmRhdGEudHJhY2tEZXRhaWxJbmZvcy5tYXAoZGF0YSA9PiBkYXRhLnRyYWNrSW5mby5wbGF5UGF0aCk7ICAgICAgICB0aXRsZXMgPSBbJ+aWsOmXu+aXqemkkEBAJyArIGpzb24sICfmuIXmmajpn7PkuZBAQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS8xMDExLzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+aWsOmXu+WQrOWkqeS4i0BAaHR0cHM6Ly9saHR0cC5xdGZtLmNuL2xpdmUvMjA1MDAxNjkvNjRrLm1wMycsICfnjq/nkIPotYTorq9AQGh0dHA6Ly9zay5jcmkuY24vOTA1Lm0zdTgnLCAn5YyX5Lqs5paw6Ze75bm/5pKtQEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvMTc4OS8yNC5tM3U4P3RyYW5zY29kZT10cycsICfnrKzkuIDotKLnu49AQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS81Ni8yNC5tM3U4P3RyYW5zY29kZT10cycsICfnpo/lu7rkuqTpgJrlub/mkq1AQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS83OTAvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAn5Y6m6Zeo6Z+z5LmQ5bm/5pKtQEBodHRwczovL2xpdmUxYi5reG0ueG10di5jbi9hYWNfeG15eWJmXzFiL3BsYXlsaXN0Lm0zdTgnLCAn5LiK5rW35Yqo5oSfMTAxQEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvNTMvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAn5LiK5rW3TG92ZSBSYWRpb0BAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzU1LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ+WFqOaXtue6v+S4iumfs+S5kEBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvNDkxMy82NGsubXAzJywgJ+WkqeexgeWPpOWFuEBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMjAyMTA3NTYvNjRrLm1wMycsICfmmJ/msrPpn7PkuZBAQGh0dHBzOi8vbGh0dHAucXRmbS5jbi9saXZlLzIwMjEwNzU1LzY0ay5tcDMnLCAn57Kk6K+t55S15Y+wQEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8xNTMxODU2OS82NGsubXAzJywgJ+aAgOmbhumfs+S5kEBAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzk2Ni8yNC5tM3U4P3RyYW5zY29kZT10cycsICfkvZvlsbHnlLXlj7AgRk05MDZAQGh0dHBzOi8vbGh0dHAucXRmbS5jbi9saXZlLzEyNjQvNjRrLm1wMycsICdBc2lhRk0g5Lqa5rSy57Kk6K+t5Y+wQEBodHRwczovL2xpdmUueGltYWxheWEuY29tL3JhZGlvLWZpcnN0LXBhZ2UtYXBwL2xpdmUvOTk5LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ0FzaWFGTSDlpb3lkKzpn7PkuZDlj7BAQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS8xNDI3LzI0Lm0zdTg/dHJhbnNjb2RlPXRzJywgJ0FzaWFGTSDmtYHooYzpn7PkuZDlj7BAQGh0dHBzOi8vbGl2ZS54aW1hbGF5YS5jb20vcmFkaW8tZmlyc3QtcGFnZS1hcHAvbGl2ZS83NjQvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAnQXNpYUZNIOasp+e+jumfs+S5kOWPsEBAaHR0cHM6Ly9saHR0cC5xdGZtLmNuL2xpdmUvMjAwNzEvNjRrLm1wMycsICflkKzmoqbmg7NGTUBAaHR0cHM6Ly9saXZlLnhpbWFsYXlhLmNvbS9yYWRpby1maXJzdC1wYWdlLWFwcC9saXZlLzEwMTUvMjQubTN1OD90cmFuc2NvZGU9dHMnLCAn6L275p2+6LCD6aKRQEBodHRwOi8vc2suY3JpLmNuLzkxNS5tM3U4JywgJ+mxvOS9rOmfs+S5kOWdikBAaHR0cDovL2xodHRwLnFpbmd0aW5nLmZtL2xpdmUvMjA1MDAxNTgvNjRrLm1wMycsICflv4PliqjnlLXlj7BAQGh0dHA6Ly9saHR0cC5xaW5ndGluZy5mbS9saXZlLzIwNTAwMTYxLzY0ay5tcDMnLCAnOTDlkI7mva7mtYHpn7Pmgqblj7BAQGh0dHA6Ly9saHR0cC5xaW5ndGluZy5mbS9saXZlLzIwMjA3NzYwLzY0ay5tcDMnLCAn5Y235Y2354yr5pWF5LqL55S15Y+wQEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8yMDUwMDAzOC82NGsubXAzJywgJ+S4reWbveatjOabsuaOkuihjOamnEBAaHR0cHM6Ly9saXZlMi5reG0ueG10di5jbi9hYWNfeG15eS9wbGF5bGlzdC5tM3U4P191cHQ9MTRiYWZlYTQxNjY2MTAzNjg5JywgJ+WoseS5kOW5v+aSrUBAaHR0cDovL25nY2RuMDE0LmNuci5jbi9saXZlL3lsZ2IvaW5kZXgubTN1OCcsICfkuqTpgJrlub/mkq1AQGh0dHA6Ly9uZ2NkbjAxNi5jbnIuY24vbGl2ZS9nc2dsanRnYi9pbmRleC5tM3U4JywgJ+aWh+iJuuS5i+WjsEBAaHR0cDovL25nY2RuMDEwLmNuci5jbi9saXZlL3d5enMvaW5kZXgubTN1OCcsICfnu4/mtY7kuYvlo7BAQGh0dHA6Ly9zay5jcmkuY24vYW0xMDA4Lm0zdTgnLCAn5Lit5Zu95LmL5aOwQEBodHRwOi8vbmdjZG4wMDEuY25yLmNuL2xpdmUvemd6cy9pbmRleC5tM3U4JywgJ+S4reWNjuS5i+WjsEBAaHR0cDovL25nY2RuMDA1LmNuci5jbi9saXZlL3poenMvaW5kZXgubTN1OCcsICfljY7lpI/kuYvlo7BAQGh0dHA6Ly9uZ2NkbjAwNy5jbnIuY24vbGl2ZS9oeHpzL2luZGV4Lm0zdTgnLCAn5Y2X5rW35LmL5aOwQEBodHRwOi8vc2suY3JpLmNuL25oenMubTN1OCcsICfkuaHmnZHkuYvlo7BAQGh0dHA6Ly9uZ2NkbjAxNy5jbnIuY24vbGl2ZS94Y3pzL2luZGV4Lm0zdTgnLCAn5Lit5bm/5paw6Ze7572RQEBodHRwOi8vc3RyZWFtLnJjcy5yZXZtYS5jb20vNzhmbTl3eXkydHp1dicsICfkuK3lub/mtYHooYznvZFAQGh0dHA6Ly9zdHJlYW0ucmNzLnJldm1hLmNvbS9hdzl1cXl4eTJ0enV2JywgJ+S4reW5v+mfs+S5kOe9kUBAaHR0cDovL3N0cmVhbS5yY3MucmV2bWEuY29tL2tzNHZzbWczcXR6dXYnLCAn5Y+w5rm+5rW35bOhQEBodHRwOi8vc2suY3JpLmNuL2h4ZmgubTN1OCcsICfmtY7ljZfmlYXkuovlub/mkq1AQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzE2NzIubTN1OCcsICfpmZXopb/mlYXkuovlub/mkq1AQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzE2MDgubTN1OCcsICfmsZ/oi4/mlYXkuovlub/mkq1AQGh0dHA6Ly9semxpdmUudm9qcy5jbi9yV2p5dXM5LzkyL2xpdmUubTN1OCcsICfplb/mmKXmlYXkuovlub/mkq1AQGh0dHA6Ly9scy5xaW5ndGluZy5mbS9saXZlLzUwMTQubTN1OCcsICflronlvr3miI/mm7Llub/mkq1AQGh0dHA6Ly9zYXRlbGxpdGVwdWxsLkNOUi5jbi9saXZlL3d4YWh4cWdiL3BsYXlsaXN0Lm0zdTgnLCAn5rKz5Y2X5oiP5puyQEBodHRwOi8vbGh0dHAucWluZ3RpbmcuZm0vbGl2ZS8xNTMxODM5My82NGsubXAzJ107ICAgICAgICB2YXIgdCA9IHRpdGxlczsgICAgICAgIHZhciBkID0gW107ICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8yNTgucG5nJzsgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgeyAgICAgICAgICAgIHZhciBrID0gdFtpXS5zcGxpdCgvXFxcXFxcXFxcXFxcXFxcXHMqQEBcXFxcXFxcXFxcXFxcXFxccyovKTsgICAgICAgICAgICBpZiAoay5sZW5ndGggPCAyKSBjb250aW51ZTsgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICB0aXRsZToga1swXSwgICAgICAgICAgICAgICAgdXJsOiBrWzFdICsgJyNpc011c2ljPXRydWUjJywgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnLCAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWcsICAgICAgICAgICAgfSk7ICAgICAgICB9ICAgICAgICBzZXRIb21lUmVzdWx0KGQpOyAgICB9KX0pXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwidGV4dF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuebtOaSreiKguebrlxcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIkBqczon4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9IzBjZDFjMj7nm7Tmkq08L2ZvbnQ+JztcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn6JmO54mZ5pS+5pig5Y6F4oCi57K+6YCJ6IqC55uuJyk7ICAgICAgICAgdmFyIHRpdGxlcyA9IFsn6JmO54mZ5YWr54K55qGjQEBodHRwczovL20uaHV5YS5jb20vODgwMjYxJywgJ+mfs+S5kOWwj+efs+amtEBAaHR0cHM6Ly9tLmh1eWEuY29tLzE3MDkxNjgxJywgJ+WRqOaYn+mpsEBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDEyJywgJ+WRqOaYn+mpsC3nsqTor61AQGh0dHBzOi8vbS5odXlhLmNvbS8xMTMzNjU4NycsICfmnpfmraPoi7FAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM0MjQyMScsICfmiJDpvplAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM0MjM4NicsICfmsojohb5AQGh0dHBzOi8vbS5odXlhLmNvbS8xMTYwMTk2OCcsICfnjovmmbZAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTYwMjA1OCcsICfmnY7ov57mnbBAQGh0dHBzOi8vbS5odXlhLmNvbS8xMTM0MjM5MCcsICflj6TlpKnkuZBAQGh0dHBzOi8vbS5odXlhLmNvbS81OTM4NjUnLCAn55SE5a2Q5Li5QEBodHRwczovL20uaHV5YS5jb20vMTEzNTI5MzUnLCAn5YiY5b635Y2OQEBodHRwczovL20uaHV5YS5jb20vMTEzNDI0MjQnLCAn6YeR5bq457O75YiXQEBodHRwczovL20uaHV5YS5jb20vMTEzNDI0MjcnLCAn5aWz56We57O75YiXQEBodHRwczovL20uaHV5YS5jb20vMTEzMzY1NzEnLCAn6K645rCP5LiJ5p2wQEBodHRwczovL20uaHV5YS5jb20vMTE2MDIwMzMnLCAn57uP5YW45riv5YmnQEBodHRwczovL20uaHV5YS5jb20vMTEzNTI5NjUnLCAn6K2m5Yyq55S15b2xQEBodHRwczovL20uaHV5YS5jb20vMjYwNTgwOTcnLCAn5Yqo5L2c55S15b2xQEBodHRwczovL20uaHV5YS5jb20vMjYxODIwOTEnLCAn5Zac5Ymn55S15b2xQEBodHRwczovL20uaHV5YS5jb20vMjY5ODkyNDgnLCAn5pCe56yR55S15b2xQEBodHRwczovL20uaHV5YS5jb20vMjM4Mjk1NDMnLCAn6buR5biu5aSn54mHQEBodHRwczovL20uaHV5YS5jb20vMTEzMzY3MTknLCAn6buR5biu5paX5LqJQEBodHRwczovL20uaHV5YS5jb20vMTEzNDI0MTknLCAn5Zu95aSW6LCN5oiY54mHQEBodHRwczovL20uaHV5YS5jb20vMjEwNTk1ODcnLCAn546E5bm75Ymn5Zy6QEBodHRwczovL20uaHV5YS5jb20vMTEzNDI0MTQnLCAn5riv57O76LS65bKB54mHQEBodHRwczovL20uaHV5YS5jb20vMTE2MDE5NzEnLCAn5Y+k5aKT57O75YiXQEBodHRwczovL20uaHV5YS5jb20vMTEzNTI5MTMnLCAn5pCe56yR5oGQ5oCW57G7QEBodHRwczovL20uaHV5YS5jb20vMTE2MDE5NjAnLCAn6YeR5bq45q2m5L6g54mHQEBodHRwczovL20uaHV5YS5jb20vMTEzNDI0MzUnLCAn5oqX5pel5oiY5LqJQEBodHRwczovL20uaHV5YS5jb20vMTEzNTI5MTAnLCAn5oqX5pel5oiY5LqJMUBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTM2JywgJ+e7j+WFuOmsvOeJh0BAaHR0cHM6Ly9tLmh1eWEuY29tLzE5MzgzMjk1JywgJ+e7j+WFuOWWnOWJp0BAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyODgzJywgJ+e7j+WFuOatpuS+oEBAaHR0cHM6Ly9tLmh1eWEuY29tLzIzNzM0MTc2JywgJ+WWnOWJp+eJh+WcukBAaHR0cHM6Ly9tLmh1eWEuY29tLzI1MDk4OTU0JywgJ+Wkqem+meWFq+mDqEBAaHR0cHM6Ly9tLmh1eWEuY29tLzIzOTAzMTIzJywgJ+elnuaOoueLhOS7geadsEBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyNDI1JywgJ+elnumbleS+oOS+o0BAaHR0cHM6Ly9tLmh1eWEuY29tLzIzODY1MTcxJywgJ+WwhOmbleiLsembhOS8oEBAaHR0cHM6Ly9tLmh1eWEuY29tLzIzNzI4Njc0JywgJ+mTgem9v+mTnOeJmee6quaZk+WymkBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzQyMzk2JywgJ+m5v+m8juiusEBAaHR0cHM6Ly9tLmh1eWEuY29tLzIzODY1MDgwJywgJ+eMq+WSjOiAgem8oEBAaHR0cHM6Ly9tLmh1eWEuY29tLzI3ODgyNTM1JywgJ+mZiOe/lOWFreeCueWNikBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMjc0MTU0JywgJ+eskeWCsuW4rkBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTA4JywgJ+eskeWCsuaxn+a5lkBAaHR0cHM6Ly9tLmh1eWEuY29tLzExMzUyOTM3JywgXTsgICAgICAgICB2YXIgdCA9IHRpdGxlczsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIHZhciBpbWcgPSAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzIyMS5wbmcnOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdC5sZW5ndGg7IGkrKykgeyAgICAgICAgICAgICB2YXIgayA9IHRbaV0uc3BsaXQoL1xcXFxcXFxcXFxcXFxcXFxzKkBAXFxcXFxcXFxcXFxcXFxcXHMqLyk7ICAgICAgICAgICAgIGlmIChrLmxlbmd0aCA8IDIpIGNvbnRpbnVlOyAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6IGtbMF0sICAgICAgICAgICAgICAgICB1cmw6ICd2aWRlbzovLycgKyBrWzFdLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnLCAgICAgICAgICAgICAgICAgcGljX3VybDogaW1nLCAgICAgICAgICAgICB9KTsgICAgICAgICB9ICAgICAgICAgc2V0SG9tZVJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInRleHRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLljoblj7LkuIrnmoTku4rlpKlcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPSMyZWI3ZmU+5LuK5aSVPC9mb250Pic7XFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJ+WOhuWPsuS4iueahOS7iuWkqScpOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgdmFyIGltZyA9ICgnaHR0cHM6Ly9hcGkudnZoYW4uY29tL2FwaS9iaW5nJyk7ICAgICAgICAgdmFyIGh0bWwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3FxbHlrbS5jbi9hcGkvaGlzdG9yeS9nZXQ/a2V5PTc5UjhXMDI0ZndFaFBhcWJrY2NweExhTGltJykpOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBodG1sLmRhdGUsICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsICAgICAgICAgICAgIGRlc2M6ICcwJywgICAgICAgICAgICAgcGljX3VybDogaW1nLCAgICAgICAgICAgICB1cmw6IGltZyArICcjLmpwZycsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaycsICAgICAgICAgfSk7ICAgICAgICAgaHRtbC5kYXRhLm1hcCh1ID0+IGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiB1LnllYXIgKyAn5bm0OiAnICsgdS50aXRsZSwgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICBkZXNjOiAn54K55Ye75p+l55yL5Lq654mp6K+m5oOFJywgICAgICAgICAgICAgdXJsOiAneDU6Ly8nICsgdS51cmwsICAgICAgICAgfSkpOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInRleHRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLmlrDpl7vml6nppJBcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPSNmZDI2OGE+5paw6Ze7PC9mb250Pic7XFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSMjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJycpOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgdmFyIGltZyA9ICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvMjU4LnBuZyc7ICAgICAgICAgdmFyIHBpYyA9ICdoaWtlcjovL2ZpbGVzL0ptL2dpZi8xLmdpZic7ICAgICAgICAgdmFyIGlkID0gZ2V0SXRlbSgn5YiX6KGoJywgJzY4NTg5MzU3Jyk7ICAgICAgICAgdmFyIHBhZ2UgPSBnZXRJdGVtKCfnv7vpobUnLCAnMScpOyAgICAgICAgIHZhciBhc2MgPSBnZXRJdGVtKCfpobrluo8nLCAndHJ1ZScpOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfZnVsbCcsICAgICAgICAgICAgIHBpY191cmw6IHBpYywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW3sgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5paw6Ze75pep6aSQJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNjg1ODkzNTcnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+mdnuW4uOa6nOS9s+acnycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzI0OTAyMCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6YeH6YeH5q615a2QJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjAzMzU1JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflppnlrofov57mnLEnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICcyNzA1MzUnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+S7iuaZmuiEseWPo+engCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzQ3MzU0MjInICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+S4gOS4quS6uueahOatjCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzM1OTU4NDEnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+aDs+WNleabsuW+queOrycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzQ1NTI1MTkyJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfpn7PkuZDorrDkuovmnKwnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0NzIxMDAzMCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5aWz55Sf57+75ZSxJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMzE3NTE1MjInICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+a9rua1gemfs+S5kCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzIyNTU2OCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn55S15b2x5ZCN5puyJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMzkxNjM3MjUnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+edoeWJjeaVheS6iycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzI2MDc0NCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5rCR6Ze06K+h5pWF5LqLJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjk1MzU3NTAnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+WPpOetnee7j+WFuCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzE2NzkyODU0JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfpnZnlv4Plj6TnkLQnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0NjMxMDMwNCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5pyA576O6ZKi55C0JywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNDA1MDYzOScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5Y6f5aOw6ZKi55C0JywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTg4OTIwNzYnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+ayu+eWl+mfs+S5kCcsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzI4MjQ2NTcyJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfovabovb3pn7PkuZAnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc1ODk5NTA3JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfmsJHosKPnsr7pgIknLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICczMTM4MDk2MicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn57uP5YW455WZ5aOw5py6JywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjkwOTk2JyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfnu4/lhbjoi7HmlofmrYwnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc0ODY2MzYxJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflkKzkuI3ohbvnmoTmrYwnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICczMjUxOTgyNCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5bCP5LiD56eB5oi/5q2MJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjM3NzcxJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfosavliaflkI3mrrUnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICc1MzQwMzg3NicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6buE5qKF5oiP5ZCN5q61JywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNTM4MzE2NDQnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+WbveeyueS6rOWJpycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzI4MjI0NzknICAgICAgICAgICAgICAgICB9XTsgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbGlzdC5tYXAoaSA9PiBpLnRpdGxlKTsgICAgICAgICAgICAgICAgIHJldHVybiAkKG5hbWUsIDMsICfor7fpgInmi6nkuIDkuKrliIbnsbsnKS5zZWxlY3QoKGxpc3QpID0+IHsgICAgICAgICAgICAgICAgICAgICB2YXIgbCA9IGxpc3QuZmluZEluZGV4KGkgPT4gaS50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBsaXN0W2xdLmlkOyAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+WIl+ihqCcsIHUpOyAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaNoicgICAgICAgICAgICAgICAgIH0sIGxpc3QpICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgbG9uZ0NsaWNrOiBbeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+UhOWIh+aNouaOkuW6jycsICAgICAgICAgICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0SXRlbShcXFxcXFxcXFxcXFxcXFwi6aG65bqPXFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcInRydWVcXFxcXFxcXFxcXFxcXFwiKSA9PSBcXFxcXFxcXFxcXFxcXFwiZmFsc2VcXFxcXFxcXFxcXFxcXFwiKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oXFxcXFxcXFxcXFxcXFxcIumhuuW6j1xcXFxcXFxcXFxcXFxcXCIpOyAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFxcXFxcXFxcXFxcXFwi6aG65bqPXFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcImZhbHNlXFxcXFxcXFxcXFxcXFxcIik7ICAgICAgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouaOkuW6jycgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgIH0gICAgICAgICB9KTsgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vbS54aW1hbGF5YS5jb20vbS1yZXZpc2lvbi9jb21tb24vYWxidW0vcXVlcnlBbGJ1bVRyYWNrUmVjb3Jkc0J5UGFnZT9hbGJ1bUlkPScgKyBpZCArICcmcGFnZVNpemU9MTAwJmFzYz0nICsgYXNjICsgJyZwYWdlPScgKyBwYWdlKSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICflsI/mj5DnpLrvvJrkuLvmkq3lhbEnICsganNvbi5kYXRhLnRvdGFsQ291bnQgKyAn5Liq6LWE5rqQJywgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLCAgICAgICAgICAgICBwaWNfdXJsOiBpbWcsICAgICAgICAgICAgIGRlc2M6ICfnrKwnICsgcGFnZSArICfpobUnLCAgICAgICAgICAgICB1cmw6ICQoJycsICfpnIDopoHnv7vpobXnmoTmlbDlrZfvvIzmr4/pobUxMDDjgIInKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgICAgICBzZXRJdGVtKCfnv7vpobUnLCBpbnB1dCk7ICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSgpOyAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3sui3s+i9rOiHs+esrCcgKyBpbnB1dCArICfpobUnICAgICAgICAgICAgIH0pLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICB9KTsgICAgICAgICBqc29uLmRhdGEudHJhY2tEZXRhaWxJbmZvcy5tYXAoZGF0YSA9PiB7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS50cmFja0luZm8udGl0bGUsICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWcsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgICAgICB1cmw6IGRhdGEudHJhY2tJbmZvLnBsYXlQYXRoLCAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgICAgICB9KTsgICAgICAgICB9KTsgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi55m+5bqm54Ot5pCc5qacXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiQGpzOifigJjigJjigJnigJk8Zm9udCBjb2xvcj0jZmI2YTA5PueDreaQnDwvZm9udD4nO1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmeXBhZ2UjI25vSGlzdG9yeSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICBzZXRQYWdlVGl0bGUoJ+eZvuW6pueDreaQnOamnCcpOyAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudGppdC5uZXQvYXBpL3RvcC8/a2V5PXVGZW9sSUgxTE9VcjhNcldGNGFRUnRkVXZYJykpOyAgICAgICAganNvbi5kYXRhLmNvbnRlbnQubWFwKGRhdGEgPT4geyAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgIHRpdGxlOiBkYXRhLndvcmQsICAgICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCcsICAgICAgICAgICAgICAgIHBpY191cmw6IGRhdGEuaW1nLCAgICAgICAgICAgICAgICBkZXNjOiBkYXRhLmRlc2MsICAgICAgICAgICAgICAgIHVybDogJ3g1Oi8vJyArIGRhdGEudXJsLCAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgZmxvYXRWaWRlbzogdHJ1ZSwgICAgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgfSk7ICAgICAgICB9KTsgICAgICAgIHNldFJlc3VsdChkKTsgICAgfSl9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwiUVHpn7PkuZDmrYzljZVcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6J+KAmOKAmOKAmeKAmTxmb250IGNvbG9yPSNiNjAwYTY+5q2M5Y2VPC9mb250Pic7XFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSMjZnVsbFRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJycpOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgdmFyIGlkID0gc3RvcmFnZTAuZ2V0SXRlbSgnUemfs+atjOWNlScsICc3NTMyNjcwNTM4Jyk7ICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS50aml0Lm5ldC9hcGkvcXFtdXNpYy8/a2V5PTExOTM3NTVhZTk5NzAyYjAmdHlwZT1zb25nbGlzdCZjYWNoZT0xJmxpc3RtYXg9MTAwMCZpZD0nICsgaWQpKTsgICAgICAgICB2YXIgaW1nID0gKCdodHRwczovL3d3dy5obGFwaS5jbi9hcGkvZ3hkdCcgKyAnIycgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGpzb24ubmlja25hbWUgKyAnIOKZpScgKyBqc29uLmxpc3RuYW1lLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcicsICAgICAgICAgICAgIGRlc2M6IGpzb24uc29uZ251bSArICfpppYnLCAgICAgICAgICAgICBwaWM6IGltZywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW3sgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5Lqs5qKm5q2M5Y2VJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzIwODQ5ODczMScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5byA5bqX5b+F5aSHJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzk3NTA0ODQxNycgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn54Ot5pCc5q2M5puyJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzUzMjY3MDUzOCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn54Ot6ZeoQkdNJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzU5NTkyMzYyOScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5Yqo5ZCs57Kk6K+tJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMjY3MTQ1NjYwOCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5pe25LiL5rWB6KGMJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzUyMDMzNDc0MycgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5oqW6Z+z5paw54OtJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzYzMDMwMzQ3NCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5ZSv576O5Y+k6aOOJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzgwMTA4MTMzNScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6L+R5bm054Gr54iGJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTU1MTA3MTQwNCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6IqC5aWP5o6nJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMzI3MDk5ODI2OScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5YWl6ICz5rKJ6YaJJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNDI0Njk1ODU2OScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn5Y+j5ZOo5YmN5aWPJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTc1NTExMjkzMCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn55S16Z+z5rKm6Zm3JywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnMTE1MjE4Mjg1MicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn6aOZ6L2mQkdNJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzkxNzAwNzk0NicgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn576O5aaZ6Z+z5LmQJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnODg0NjIzMzAxOCcgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn57K+6YCJ5Y2V5puyJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnNzM4MjYyOTQ3NiAnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+mdkuaYpeiusOW/hicsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzE3OTA1MDQxNTknICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+e7j+WFuOWbveivrScsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJzM1NjY4MzA0MjcnICAgICAgICAgICAgICAgICB9XTsgICAgICAgICAgICAgICAgIHZhciBuYW1lID0gbGlzdC5tYXAobGlzdCA9PiBsaXN0LnRpdGxlKTsgICAgICAgICAgICAgICAgIHJldHVybiAkKG5hbWUsIDMsICfor7fpgInmi6nkuIDkuKrmrYzljZUnKS5zZWxlY3QoKGxpc3QpID0+IHsgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGxpc3QuZmluZEluZGV4KGxpc3QgPT4gbGlzdC50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGxpc3RbaV0uaWQ7ICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnUemfs+atjOWNlScsIHVybCk7ICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5q2M5Y2VJyAgICAgICAgICAgICAgICAgfSwgbGlzdCkgICAgICAgICAgICAgfSksICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBsb25nQ2xpY2s6IFt7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SNXFxcXFxcXFxcXFxcXFxcXHRcXFxcXFxcXFxcXFxcXFxcdHxcXFxcXFxcXFxcXFxcXFxcdFxcXFxcXFxcXFxcXFxcXFx06K+36L6T5YWlUemfs+atjOWNlUlEJywgICAgICAgICAgICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6ZyA6KaB5pu05o2i55qEUVHpn7PkuZDmrYzljZVJRFxcXFxcXFxcXFxcXFxcXFxu5L6L5aaC77yaNzUyMDMzNDc0MycpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ1Hpn7PmrYzljZUnLCBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5q2M5Y2V5YiH5o2i5oiQ5YqfJzsgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICB9KSAgICAgICAgICAgICAgICAgfV0sICAgICAgICAgICAgIH0gICAgICAgICB9KTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgIH0pOyAgICAgICAgIGpzb24uQm9keS5tYXAoaHRtbCA9PiB7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogaHRtbC50aXRsZSArICfigKInICsgaHRtbC5hdXRob3IsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsICAgICAgICAgICAgICAgICBwaWNfdXJsOiBodG1sLnBpYyArICdAUmVmZXJlcj0nLCAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChodG1sKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgdHJ5IHsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL3l5X3NxLnBocD90eXBlPWpzb24mbj0xJm1zZz0nICsgaHRtbC50aXRsZSArIGh0bWwuYXV0aG9yKSkudXJsOyAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5zaHNlcnZlLmNuL2FwaS9tdXNpYz9uPTEmbXNnPScgKyBodG1sLnRpdGxlICsgaHRtbC5hdXRob3IpKS51cmw7ICAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBqc29uICsgJyNpc011c2ljPXRydWUjJzsgICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IGZldGNoKGh0bWwubHJjKTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAgICAgICAgICAgICAgICAgICAgICAgICB1cmxzOiBbdXJsXSwgICAgICAgICAgICAgICAgICAgICAgICAgbHlyaWM6IGxyYyAgICAgICAgICAgICAgICAgICAgIH0pICAgICAgICAgICAgICAgICB9LCBodG1sKSwgICAgICAgICAgICAgfSk7ICAgICAgICAgfSk7ICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgfSkgfSk7XFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJoaWtlcjovL2ZpbGVzL0ptL2xtLzQxLnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5byA55y86KeG6aKRXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiQGpzOifigJjigJjigJnigJk8Zm9udCBjb2xvcj0jNTk0YmZkPuW8gOecvDwvZm9udD4nO1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjI2Z5cGFnZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCflvIDnnLzop4bpopEnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIHZhciBuZXh0cCA9IFxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFwiOyAgICAgICAgICBmdW5jdGlvbiBqaWEodXJsKSB7ICAgICAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCh1cmwpKTsgICAgICAgICAgICAgdmFyIGl0ZW1zID0ganNvbi5pdGVtTGlzdDsgICAgICAgICAgICAgaXRlbXMuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHsgICAgICAgICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXFxcXFxcXFxcXFxcXFxcInZpZGVvXFxcXFxcXFxcXFxcXFxcIikgeyAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBpdGVtLmRhdGEudGl0bGUsICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsICAgICAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGl0ZW0uZGF0YS5jb3Zlci5mZWVkLCAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICd2aWRlbzovLycgKyBpdGVtLmRhdGEucGxheVVybCwgICAgICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgICAgIH07ICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICBwdXRWYXIoJ24nLCBqc29uLm5leHRQYWdlVXJsKTsgICAgICAgICB9OyAgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgIGppYSgnaHR0cDovL2Jhb2JhYi5rYWl5YW5hcHAuY29tL2FwaS92NC90YWJzL3NlbGVjdGVkJyk7ICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgbmV4dHAgPSBnZXRWYXIoJ24nKTsgICAgICAgICAgICAgamlhKG5leHRwKTsgICAgICAgICB9ICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgfSkgfSlcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn1dLFxcXFxcXFwiZm9sZF9zdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjMsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZX0se1xcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5Yac5Y6GXFxcXFxcXCIsXFxcXFxcXCJtYXJrXFxcXFxcXCI6XFxcXFxcXCLlhpzljoZcXFxcXFxcIixcXFxcXFxcImxpc3RcXFxcXFxcIjpbe1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5pel5pyf5Yac5Y6GX+aQnOe0olxcXFxcXFwiLFxcXFxcXFwiY29kZVxcXFxcXFwiOlxcXFxcXFwidmFyIHJsID0gW107XFxcXFxcXFxuXFxcXFxcXFxuZnVuY3Rpb24gemVybyhzKSB7XFxcXFxcXFxuICAgIHJldHVybiBzIDwgMTAgPyAnMCcgKyBzIDogcztcXFxcXFxcXG59O1xcXFxcXFxcbnZhciBteWRhdGUgPSBuZXcgRGF0ZSgpO1xcXFxcXFxcbnllYXIgPSBteWRhdGUuZ2V0RnVsbFllYXIoKTtcXFxcXFxcXG5tb250aCA9IG15ZGF0ZS5nZXRNb250aCgpICsgMTtcXFxcXFxcXG5kYXRhID0gbXlkYXRlLmdldERhdGUoKTtcXFxcXFxcXG5ob3VyID0gbXlkYXRlLmdldEhvdXJzKCk7XFxcXFxcXFxubWludXRlID0gbXlkYXRlLmdldE1pbnV0ZXMoKTtcXFxcXFxcXG5zZWNvbmQgPSBteWRhdGUuZ2V0U2Vjb25kcygpO1xcXFxcXFxcbmRheSA9IG5ldyBBcnJheShcXFxcXFxcXFxcXFxcXFwiIOaYn+acn+aXpSBcXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwi5pif5pyf5LiAIFxcXFxcXFxcXFxcXFxcXCIsIFxcXFxcXFxcXFxcXFxcXCLmmJ/mnJ/kuowgXFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcIuaYn+acn+S4iSBcXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwi5pif5pyf5ZubIFxcXFxcXFxcXFxcXFxcXCIsIFxcXFxcXFxcXFxcXFxcXCLmmJ/mnJ/kupQgXFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcIuaYn+acn+WFrSBcXFxcXFxcXFxcXFxcXFwiKVtteWRhdGUuZ2V0RGF5KCldO1xcXFxcXFxcbnZhciDmnKzlnLAgPSAoJ2hpa2VyOi8vZmlsZXMvSm0vZmlsZS90aW1lLmpzb24nKTtcXFxcXFxcXG5pZiAoZmlsZUV4aXN0KOacrOWcsCkgPT0gZmFsc2UpIHtcXFxcXFxcXG4gICAgdmFyIOi/nOeoiyA9IHJlcXVlc3QoJ2h0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTY2MzcmYXV0aD04ZDBhZGE3My00OWVkLTUyZWItOWZmZC1hOWUyMzFkYWMyOTUnKTtcXFxcXFxcXG4gICAgaWYgKOi/nOeoiy5pbmRleE9mKCkgPiAwKSB7XFxcXFxcXFxuICAgICAgICB3cml0ZUZpbGUo5pys5ZywLCDov5znqIspO1xcXFxcXFxcbiAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgY29uZmlybSh7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfinYzplJnor6/mj5DnpLonLFxcXFxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6ICflr7zlhaXlh7rplJlcXFxcXFxcXFxcXFxcXFxcbuivt+WIsOmBk+mVv+S7k+W6k+aJi+WKqOWvvOWFpXRpbWUuanNvbidcXFxcXFxcXG4gICAgICAgIH0pXFxcXFxcXFxuICAgIH1cXFxcXFxcXG59XFxcXFxcXFxubGV0IGNkID0gJC5yZXF1aXJlKOacrOWcsCkuZGF0ZTtcXFxcXFxcXG5cXFxcXFxcXG52YXIg5pCc57SiID0gZ2V0SXRlbSgn56iL5bqPJywgJ+iBmuW9seKImicpO1xcXFxcXFxcbnZhciDmmL7npLogPSBnZXRJdGVtKCd0aXRsZScsICfml6XljoYnKTtcXFxcXFxcXG52YXLCoCBnZXRSYW5kb21Db2xvciA9IGZ1bmN0aW9uKCkge8KgwqDCoFxcXFxcXFxcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnNsaWNlKC02KTvCoMKgXFxcXFxcXFxufcKgwqBcXFxcXFxcXG52YXIg5pel5Y6GID0gKCfigJzigJzigJ3igJ08Zm9udCBjb2xvcj0nICsgZ2V0UmFuZG9tQ29sb3IoKSArICc+8J+OgFxcXFxcXFxcXFxcXFxcXFx0JyArIHllYXIgKyAnIOW5tCAnICsgemVybyhtb250aCkgKyAnIOaciCAnICsgemVybyhkYXRhKSArICcg5pelXFxcXFxcXFxcXFxcXFxcXHRcXFxcXFxcXFxcXFxcXFxcdCcgKyBjZCArICdcXFxcXFxcXFxcXFxcXFxcdFxcXFxcXFxcXFxcXFxcXFx0JyArIGRheSArICc8L2ZvbnQ+Jyk7XFxcXFxcXFxuXFxcXFxcXFxuLy/ov5nph4zmm7TmjaLnvZHpobXmkJzntKLlvJXmk47ihpNcXFxcXFxcXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LnNvZ291LmNvbS93ZWI/cXVlcnk9JztcXFxcXFxcXG52YXIg5byV5pOOID0gZ2V0SXRlbSgn5byV5pOOJywgdXJsKTtcXFxcXFxcXG5cXFxcXFxcXG5ybC5wdXNoKHtcXFxcXFxcXG4gICAgdGl0bGU6IFxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMV9zZWFyY2gnLFxcXFxcXFxcbiAgICBkZXNjOiAnJyxcXFxcXFxcXG4gICAgdXJsOiBcXFxcXFxcXFxcXFxcXFwiaGlrZXI6Ly9zZWFyY2hcXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbiAgICBwaWNfdXJsOiBcXFxcXFxcXFxcXFxcXFwiaGlrZXI6Ly9pbWFnZXMvc2VhcmNoXFxcXFxcXFxcXFxcXFxcIlxcXFxcXFxcbn0pO1xcXFxcXFxcbnJsLnB1c2goe1xcXFxcXFxcbiAgICB0aXRsZTog5pel5Y6GLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMScsXFxcXFxcXFxuICAgIHBpYzogJ2h0dHBzOi8vd3d3LmhsYXBpLmNuL2FwaS9neGR0JyArICcjJyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpLFxcXFxcXFxcbiAgICB1cmw6ICQoJycsICfkvaDmg7PmkJzntKLnmoRcXFxcXFxcXFxcXFxcXFxcbvCfkYnwn4+7XFxcXFxcXFxcXFxcXFxcXHRcXFxcXFxcXFxcXFxcXFxcdOeUteinhuWJp+OAgeeUteW9seOAgeWKqOa8q+OAgee7vOiJuuetiS4uLicpLmlucHV0KCjmkJzntKIpID0+IHtcXFxcXFxcXG4gICAgICAgIHZhciB1cmwgPSAoJ2hpa2VyOi8vc2VhcmNoP3NpbXBsZT1mYWxzZSZydWxlPScgKyDmkJzntKIgKyAnJnM9JyArIGlucHV0KTtcXFxcXFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgIHJldHVybiB1cmxcXFxcXFxcXG4gICAgfSwg5pCc57SiKSxcXFxcXFxcXG4gICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgIGxpbmVWaXNpYmxlOiBmYWxzZSxcXFxcXFxcXG4gICAgICAgIGxvbmdDbGljazogW3tcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ/CflI3mm7TmlLnmkJzntKLlvJXmk44nLFxcXFxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgdmFyIGxpc3QgPSBbe1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn55m+5bqmJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly9tLmJhaWR1LmNvbS9zP3dvcmQ9J1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICflv4XlupQnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ3VybCc6ICdodHRwczovL3d3dy5iaW5nLmNvbS9zZWFyY2g/cT0nXFxcXFxcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+iwt+atjCcsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAndXJsJzogJ2h0dHBzOi8vd3d3Lmdvb2dsZS5jb20vc2VhcmNoP3E9J1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICczNjAnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ3VybCc6ICdodHRwczovL3d3dy5zby5jb20vcz9xPSdcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5pCc54uXJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly93d3cuc29nb3UuY29tL3dlYj9xdWVyeT0nXFxcXFxcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+elnumprCcsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAndXJsJzogJ2h0dHBzOi8vbS5zbS5jbi9zP3E9J1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICdG5pCcJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICd1cmwnOiAnaHR0cHM6Ly9mc291ZnNvdS5jb20vc2VhcmNoP3E9J1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICflpLjlhYsnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ3VybCc6ICdodHRwczovL3F1YXJrLnNtLmNuL3M/cT0nXFxcXFxcXFxuICAgICAgICAgICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICduYW1lJzogJ1lhbmRleCcsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAndXJsJzogJ2h0dHBzOi8veWFuZGV4LmNvbS9zZWFyY2gvP3RleHQ9J1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9XTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBsaXN0Lm1hcChsaXN0ID0+IGxpc3QubmFtZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKG5hbWUsIDMsICfor7fpgInmi6nmkJzntKLlvJXmk44nKS5zZWxlY3QoKGxpc3QpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBzbyA9IGxpc3QuZmluZEluZGV4KGxpc3QgPT4gbGlzdC5uYW1lID09IGlucHV0KTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB1cmwgPSBsaXN0W3NvXS51cmw7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCflvJXmk44nLCB1cmwpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaNouaQnOe0ouW8leaTjidcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSwgbGlzdClcXFxcXFxcXG4gICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn4oaq77iP5pu05pS55pCc57SiIOW9k+WJjTogJyArIOaQnOe0oixcXFxcXFxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXFxcXFxuXFxcXFxcXFxuICAgICAgICAgICAgICAgIHZhciBydWxlcyA9IGdldExhc3RSdWxlcygxOCk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIGNvbnN0IHRpdGxlID0gcnVsZXMubWFwKHIgPT4gci50aXRsZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKHRpdGxlLCAzLCAn6K+36YCJ5oup5L2g55qE5pCc57Si5bCP56iL5bqPJykuc2VsZWN0KCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+eoi+W6jycsIGlucHV0KTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lmm7TmjaInICsgaW5wdXQgKyAn5pCc57SiJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICB9XSxcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn0pO1xcXFxcXFxcbnJsXFxcXFxcXCJ9XSxcXFxcXFxcImZvbGRfc3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjozLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWV9LHtcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuWbvuagh+mDqOWIhlxcXFxcXFwiLFxcXFxcXFwibWFya1xcXFxcXFwiOlxcXFxcXFwi5Zu+5qCHXFxcXFxcXCIsXFxcXFxcXCJsaXN0XFxcXFxcXCI6W3tcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuaIkeeahOaUtuiXj1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJoaWtlcjovL2NvbGxlY3Rpb24/Z3JvdXA94pGg5o6o6I2QXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJodHRwczovL2ltZy52aW51YS5jbi9pbWFnZXMvdktrUWIuanBlZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiQGpzOifmlLbol48oJytjb2xsZWN0aW9uLmxlbmd0aCsnKSdcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcIm1vdmllXzJcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5Li76aG16K6+572uXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogdmFyIGFycl9hID0gW3sgICAgIFxcXFxcXFxcXFxcXFxcXCLmoIfpophcXFxcXFxcXFxcXFxcXFwiOiBcXFxcXFxcXFxcXFxcXFwi5Li76aG16K6+572uXFxcXFxcXFxcXFxcXFxcIiwgICAgIFxcXFxcXFxcXFxcXFxcXCLpk77mjqVcXFxcXFxcXFxcXFxcXFwiOiBcXFxcXFxcXFxcXFxcXFwiJHtzZXR0aW5nfVxcXFxcXFxcXFxcXFxcXCIgfSwgeyAgICAgXFxcXFxcXFxcXFxcXFxcIuagh+mimFxcXFxcXFxcXFxcXFxcXCI6IFxcXFxcXFxcXFxcXFxcXCLpgZPplb/ku5PlupNcXFxcXFxcXFxcXFxcXFwiLCAgICAgXFxcXFxcXFxcXFxcXFxcIumTvuaOpVxcXFxcXFxcXFxcXFxcXCI6IFxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2hvbWVA6YGT6ZW/5LuT5bqTUHJvXFxcXFxcXFxcXFxcXFxcIiB9LCB7ICAgICBcXFxcXFxcXFxcXFxcXFwi5qCH6aKYXFxcXFxcXFxcXFxcXFxcIjogXFxcXFxcXFxcXFxcXFxcIuabtOWkmuiuvue9rlxcXFxcXFxcXFxcXFxcXCIsICAgICBcXFxcXFxcXFxcXFxcXFwi6ZO+5o6lXFxcXFxcXFxcXFxcXFxcIjogXFxcXFxcXFxcXFxcXFxcImhpa2VyOi8vc2V0dGluZ01vcmVcXFxcXFxcXFxcXFxcXFwiIH0sIHsgICAgIFxcXFxcXFxcXFxcXFxcXCLmoIfpophcXFxcXFxcXFxcXFxcXFwiOiBcXFxcXFxcXFxcXFxcXFwi6LWE5rqQ566h55CGXFxcXFxcXFxcXFxcXFxcIiwgICAgIFxcXFxcXFxcXFxcXFxcXCLpk77mjqVcXFxcXFxcXFxcXFxcXFwiOiBcXFxcXFxcXFxcXFxcXFwiaGlrZXI6Ly9ob21lQOacrOWcsOi1hOa6kOeuoeeQhlxcXFxcXFxcXFxcXFxcXCIgfSwgeyAgICAgXFxcXFxcXFxcXFxcXFxcIuagh+mimFxcXFxcXFxcXFxcXFxcXCI6IFxcXFxcXFxcXFxcXFxcXCLok53ojpPlm77moIdcXFxcXFxcXFxcXFxcXFwiLCAgICAgXFxcXFxcXFxcXFxcXFxcIumTvuaOpVxcXFxcXFxcXFxcXFxcXCI6IFxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2hvbWVA6JOd6I6T5Zu+5qCHXFxcXFxcXFxcXFxcXFxcIiB9LCB7ICAgICBcXFxcXFxcXFxcXFxcXFwi5qCH6aKYXFxcXFxcXFxcXFxcXFxcIjogXFxcXFxcXFxcXFxcXFxcIuS6keebmOWkh+S7vVxcXFxcXFxcXFxcXFxcXCIsICAgICBcXFxcXFxcXFxcXFxcXFwi6ZO+5o6lXFxcXFxcXFxcXFxcXFxcIjogXFxcXFxcXFxcXFxcXFxcImhpa2VyOi8vd2ViZGF2XFxcXFxcXFxcXFxcXFxcIiB9LCB7ICAgICBcXFxcXFxcXFxcXFxcXFwi5qCH6aKYXFxcXFxcXFxcXFxcXFxcIjogXFxcXFxcXFxcXFxcXFxcIue9keWdgOi/h+a7pFxcXFxcXFxcXFxcXFxcXCIsICAgICBcXFxcXFxcXFxcXFxcXFwi6ZO+5o6lXFxcXFxcXFxcXFxcXFxcIjogXFxcXFxcXFxcXFxcXFxcImhpa2VyOi8vYWRVcmxcXFxcXFxcXFxcXFxcXFwiIH0sIHsgICAgIFxcXFxcXFxcXFxcXFxcXCLmoIfpophcXFxcXFxcXFxcXFxcXFwiOiBcXFxcXFxcXFxcXFxcXFwi5o+S5Lu2566h55CGXFxcXFxcXFxcXFxcXFxcIiwgICAgIFxcXFxcXFxcXFxcXFxcXCLpk77mjqVcXFxcXFxcXFxcXFxcXFwiOiBcXFxcXFxcXFxcXFxcXFwiaGlrZXI6Ly9qc1xcXFxcXFxcXFxcXFxcXCIgfSwgeyAgICAgXFxcXFxcXFxcXFxcXFxcIuagh+mimFxcXFxcXFxcXFxcXFxcXCI6IFxcXFxcXFxcXFxcXFxcXCLlhYPntKDmi6bmiKpcXFxcXFxcXFxcXFxcXFwiLCAgICAgXFxcXFxcXFxcXFxcXFxcIumTvuaOpVxcXFxcXFxcXFxcXFxcXCI6IFxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2FkUnVsZVxcXFxcXFxcXFxcXFxcXCIgfV07IGNvbnN0IGFycl9iID0gYXJyX2EubWFwKHIgPT4gci7moIfpopgpOyAkKGFycl9iLCAzLCBcXFxcXFxcXFxcXFxcXFwi5pu05aSa5Yqf6IO9XFxcXFxcXFxcXFxcXFxcIikuc2VsZWN0KChhcnJfYSkgPT4geyAgICAgbGV0IGluZGV4ID0gYXJyX2EuZmluZEluZGV4KHIgPT4gci7moIfpopggPT0gaW5wdXQpOyAgICAgcmV0dXJuIGFycl9hW2luZGV4XS7pk77mjqU7IH0sIGFycl9hKTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImh0dHBzOi8vaW1nLnZpbnVhLmNuL2ltYWdlcy92S1k5OC5qcGVnXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCIgQGpzOifnqIvluo8oJytnZXRSdWxlQ291bnQoKSsnKSdcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcIm1vdmllXzJcXFxcXFxcIn0se1xcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJiaWdfYmxhbmtfYmxvY2tcXFxcXFxcIixcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuepulxcXFxcXFwiLFxcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowfSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjIsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLpmL/ph4zkupHnrb5cXFxcXFxcIixcXFxcXFxcImNvZGVcXFxcXFxcIjpcXFxcXFxcInZhciBhbGl5dW4gPSBbXTtcXFxcXFxcXG52YXLCoCBnZXRSYW5kb21Db2xvciA9IGZ1bmN0aW9uKCkge8KgwqDCoFxcXFxcXFxcbiAgICByZXR1cm4gJyMnICsgKCcwMDAwMCcgKyAoTWF0aC5yYW5kb20oKSAqIDB4MTAwMDAwMCA8PCAwKS50b1N0cmluZygxNikpLnNsaWNlKC02KTvCoMKgXFxcXFxcXFxufcKgwqBcXFxcXFxcXG5hbGl5dW4ucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiAoJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPScgKyBnZXRSYW5kb21Db2xvcigpICsgJz7pmL/ph4zkupHnrb48L2ZvbnQ+JyksXFxcXFxcXFxuICAgIHVybDogJCgpLmxhenlSdWxlKCgpID0+IHtcXFxcXFxcXG4gICAgICAgIGxldCByZWZyZXNoVG9la25BcnJ5ID0gSlNPTi5wYXJzZShnZXRJdGVtKFxcXFxcXFxcXFxcXFxcXCJyZWZyZXNoVG9la25BcnJ5XFxcXFxcXFxcXFxcXFxcIiwgXFxcXFxcXFxcXFxcXFxcIltdXFxcXFxcXFxcXFxcXFxcIikpO1xcXFxcXFxcbiAgICAgICAgLy9sb2cocmVmcmVzaFRvZWtuQXJyeSlcXFxcXFxcXG4gICAgICAgIGlmIChyZWZyZXNoVG9la25BcnJ5Lmxlbmd0aCA9PSAwKSB7XFxcXFxcXFxuICAgICAgICAgICAgdHJ5IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFRvZWtuQXJyeSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXFxcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvaWN5L2ljeS1hbGktdG9rZW4uanNvblxcXFxcXFxcXFxcXFxcXCIpKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgLy9sb2cocmVmcmVzaFRvZWtuQXJyeSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgLy9zZXRJdGVtKFxcXFxcXFxcXFxcXFxcXCJyZWZyZXNoVG9la25BcnJ5XFxcXFxcXFxcXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkocmVmcmVzaFRvZWtuQXJyeSkpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICB0cnkge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgYXV0b1NpZ25pbihyZWZyZXNoVG9la25BcnJ5KVxcXFxcXFxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAvL2NsZWFySXRlbShcXFxcXFxcXFxcXFxcXFwicmVmcmVzaFRvZWtuQXJyeVxcXFxcXFxcXFxcXFxcXCIpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcXFxcXFxcXFwi5pWw5o2u5byC5bi477yM5Lyw6K6hcmVmcmVzaFRvZWtu6L+H5pyf5LqG77yM6K+35LuO5paw55m75b2V77yBXFxcXFxcXFxcXFxcXFxcIilcXFxcXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXFxcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAvL2xvZyhlLnRvU3RyaW5nKCkpXFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKFxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwi6K+36L6T5YWlcmVmcmVzaF90b2tlbu+8jOWkmuS4quWAvOivt+eUqOiLseaWh+mAl+WPtygsKemalOW8gFxcXFxcXFxcXFxcXFxcXCIpLmlucHV0KChhdXRvU2lnbmluKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcmVnaGV4ID0gL15bQS1GYS1mMC05XSskLztcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZWdoZXgudGVzdChpbnB1dCkpIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoLywvLnRlc3QoaW5wdXQpKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQuc3BsaXQoXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXFxcXFxcXFwiKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpbnB1dC5sZW5ndGg7IGkrKykge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvZWtuQXJyeS5wdXNoKHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcXFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFxcXFxcXFxcXCI6IGlucHV0W2ldXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFRvZWtuQXJyeSA9IFt7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcXFxcXFxcXFwicmVmcmVzaF90b2tlblxcXFxcXFxcXFxcXFxcXCI6IGlucHV0XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1dXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oXFxcXFxcXFxcXFxcXFxcInJlZnJlc2hUb2VrbkFycnlcXFxcXFxcXFxcXFxcXFwiLCBKU09OLnN0cmluZ2lmeShyZWZyZXNoVG9la25BcnJ5KSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvU2lnbmluKHJlZnJlc2hUb2VrbkFycnkpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oXFxcXFxcXFxcXFxcXFxcInJlZnJlc2hUb2VrbkFycnlcXFxcXFxcXFxcXFxcXFwiKVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcXFxcXFxcXFwi5pWw5o2u5byC5bi477yM5Lyw6K6hcmVmcmVzaFRvZWtu6L+H5pyf5LqG77yM6K+35LuO5paw55m75b2V5oiW6ICF6L6T5YWl77yBXFxcXFxcXFxcXFxcXFxcIilcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXFxcXFxcXFxcIlxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXFxcXFxcXFxcInRvYXN0Oi8v6K+36L6T5YWl5q2j56Gu55qEcmVmcmVzaF90b2tlbuWAvO+8gVxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcXFxcXG4gICAgICAgICAgICAgICAgfSwgYXV0b1NpZ25pbilcXFxcXFxcXG4gICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgICAgIHRyeSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIGF1dG9TaWduaW4ocmVmcmVzaFRvZWtuQXJyeSlcXFxcXFxcXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIGNsZWFySXRlbShcXFxcXFxcXFxcXFxcXFwicmVmcmVzaFRvZWtuQXJyeVxcXFxcXFxcXFxcXFxcXCIpXFxcXFxcXFxuICAgICAgICAgICAgICAgIHRvYXN0KFxcXFxcXFxcXFxcXFxcXCLmlbDmja7lvILluLjvvIzkvLDorqFyZWZyZXNoVG9la27ov4fmnJ/kuobvvIzor7fku47mlrDnmbvlvZXmiJbogIXovpPlhaXvvIFcXFxcXFxcXFxcXFxcXFwiKVxcXFxcXFxcbiAgICAgICAgICAgIH1cXFxcXFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXFxcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxuICAgICAgICB9XFxcXFxcXFxuXFxcXFxcXFxuICAgICAgICBmdW5jdGlvbiBhdXRvU2lnbmluKHJlZnJlc2hUb2VrbkFycnkpIHtcXFxcXFxcXG4gICAgICAgICAgICBjb25zdCB1cGRhdGVBY2Nlc3NzVG9rZW5VUkwgPSBcXFxcXFxcXFxcXFxcXFwiaHR0cHM6Ly9hdXRoLmFsaXl1bmRyaXZlLmNvbS92Mi9hY2NvdW50L3Rva2VuXFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG4gICAgICAgICAgICBjb25zdCBzaWduaW5sVVJMID0gXFxcXFxcXFxcXFxcXFxcImh0dHBzOi8vbWVtYmVyLmFsaXl1bmRyaXZlLmNvbS92MS9hY3Rpdml0eS9zaWduX2luX2xpc3RcXFxcXFxcXFxcXFxcXFwiO1xcXFxcXFxcbiAgICAgICAgICAgIGNvbnN0IHNpZ25pbnJVUkwgPSBcXFxcXFxcXFxcXFxcXFwiaHR0cHM6Ly9tZW1iZXIuYWxpeXVuZHJpdmUuY29tL3YxL2FjdGl2aXR5L3NpZ25faW5fcmV3YXJkXFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG5cXFxcXFxcXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlZnJlc2hUb2VrbkFycnkubGVuZ3RoOyBpKyspIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgY29uc3QgcXVlcnlCb2R5ID0ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgJ2dyYW50X3R5cGUnOiAncmVmcmVzaF90b2tlbicsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAncmVmcmVzaF90b2tlbic6IHJlZnJlc2hUb2VrbkFycnlbaV0ucmVmcmVzaF90b2tlblxcXFxcXFxcbiAgICAgICAgICAgICAgICB9O1xcXFxcXFxcblxcXFxcXFxcbiAgICAgICAgICAgICAgICBsZXQgaGVhZGVycyA9IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcXFxcXFxcXG4gICAgICAgICAgICAgICAgfTtcXFxcXFxcXG5cXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IGNvZGUgPSBmZXRjaCh1cGRhdGVBY2Nlc3NzVG9rZW5VUkwsIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFxcXFxcXFxcXFxcXFxcXCJQT1NUXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHF1ZXJ5Qm9keSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IGNvZGVKc29uID0gSlNPTi5wYXJzZShjb2RlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IGFjY2Vzc190b2tlbiA9IGNvZGVKc29uLmFjY2Vzc190b2tlbjtcXFxcXFxcXG5cXFxcXFxcXG4gICAgICAgICAgICAgICAgLy/nrb7liLBcXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IHNpbERhdGEgPSBKU09OLnBhcnNlKGZldGNoKHNpZ25pbmxVUkwsIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcXFxcXFxcXFxcXFxcIlBPU1RcXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkocXVlcnlCb2R5KSxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnQXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjY2Vzc190b2tlbixcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgICAgIH0pKVxcXFxcXFxcbiAgICAgICAgICAgICAgICBcXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IGRheSA9IHNpbERhdGEucmVzdWx0LnNpZ25JbkNvdW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IGlzUmV3YXJkID0gc2lsRGF0YS5yZXN1bHQuc2lnbkluTG9nc1tkYXkgLTFdLmlzUmV3YXJkO1xcXFxcXFxcbiAgICAgICAgICAgICAgICBpZihpc1Jld2FyZCl7ICAgICAgICAgICAgICBcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCByZXdhcmQgPSBzaWxEYXRhLnJlc3VsdC5zaWduSW5Mb2dzW2RheSAtIDFdLnJld2FyZDtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIC8qXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAocmV3YXJkKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld25hbWUgPSByZXdhcmQubmFtZTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmV3ZGVzY3JpcHRpb24gPSByZXdhcmQuZGVzY3JpcHRpb247XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld25vdGljZSA9IHJld2FyZC5ub3RpY2U7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IFxcXFxcXFxcXFxcXFxcXCLnrb7liLDmiJDlip8hIOiOt+W+l+WlluWKsTpcXFxcXFxcXFxcXFxcXFwiICsgcmV3bmFtZSArIFxcXFxcXFxcXFxcXFxcXCIoXFxcXFxcXFxcXFxcXFxcIiArIHJld2Rlc2NyaXB0aW9uICsgXFxcXFxcXFxcXFxcXFxcIikg5pys5pyI5bey6L+e57ut562+5YiwOlxcXFxcXFxcXFxcXFxcXCIgKyBkYXkgKyBcXFxcXFxcXFxcXFxcXFwi5aSpXFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChtc2cpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5rKh5pyJ5aWW5Yqx77yM5Y+q5pyJ5bm46L+Q562+5ZCN54mHXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcXFxcXFxcXFxcXFxcIuetvuWIsOaIkOWKn++8geS7iuaXpeW5uOi/kOetvjpcXFxcXFxcXFxcXFxcXFwiICsgc2lsRGF0YS5yZXN1bHQuYmxlc3NpbmcpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9Ki9cXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXdhcmQpIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmV3bm90aWNlID0gcmV3YXJkLm5vdGljZTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcXFxcXFxcXFwi5LuK5aSp5bey57uP562+5Yiw77yM6K+35LiN6KaB6YeN5aSN562+5Yiw77yBXFxcXFxcXFxcXFxcXFxcXG5cXFxcXFxcXFxcXFxcXFwiK3Jld25vdGljZSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy/msqHmnInlpZblirHvvIzlj6rmnInlubjov5Dnrb7lkI3niYdcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChcXFxcXFxcXFxcXFxcXFwi5LuK5aSp5bey57uP562+5Yiw77yM6K+35LiN6KaB6YeN5aSN562+5Yiw77yBXFxcXFxcXFxcXFxcXFxcXG7ku4rml6Xlpb3ov5Dnrb46XFxcXFxcXFxcXFxcXFxcIiArIHNpbERhdGEucmVzdWx0LmJsZXNzaW5nKVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHNpckRhdGEgPSBKU09OLnBhcnNlKGZldGNoKHNpZ25pbnJVUkwsIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogXFxcXFxcXFxcXFxcXFxcIlBPU1RcXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgYm9keToge1xcXFxcXFxcXFxcXFxcXCJzaWduSW5EYXlcXFxcXFxcXFxcXFxcXFwiOmRheX0sXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY2Nlc3NfdG9rZW4sXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgcmV3YXJkID0gc2lyRGF0YS5yZXN1bHQ7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAocmV3YXJkKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld25hbWUgPSByZXdhcmQubmFtZTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmV3ZGVzY3JpcHRpb24gPSByZXdhcmQuZGVzY3JpcHRpb247XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHJld25vdGljZSA9IHJld2FyZC5ub3RpY2U7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IFxcXFxcXFxcXFxcXFxcXCLnrb7liLDmiJDlip8hIOiOt+W+l+WlluWKsTpcXFxcXFxcXFxcXFxcXFwiICsgcmV3bmFtZSArIFxcXFxcXFxcXFxcXFxcXCIoXFxcXFxcXFxcXFxcXFxcIiArIHJld2Rlc2NyaXB0aW9uICsgXFxcXFxcXFxcXFxcXFxcIikg5pys5pyI5bey6L+e57ut562+5YiwOlxcXFxcXFxcXFxcXFxcXCIgKyBkYXkgKyBcXFxcXFxcXFxcXFxcXFwi5aSpXFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2FzdChtc2cpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8v5rKh5pyJ5aWW5Yqx77yM5Y+q5pyJ5bm46L+Q562+5ZCN54mHXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdG9hc3QoXFxcXFxcXFxcXFxcXFxcIuetvuWIsOaIkOWKn++8geS7iuaXpeW5uOi/kOetvjpcXFxcXFxcXFxcXFxcXFwiICsgc2lsRGF0YS5yZXN1bHQuYmxlc3NpbmcpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFxcbiAgICAgICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcXFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXG4gICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICB9XFxcXFxcXFxuICAgIH0pLFxcXFxcXFxcbiAgICAvL2ltZzogJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS82NS5wbmcnLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXFxcXFxufSlcXFxcXFxcXG5cXFxcXFxcXG4vL+acgOi/keS9v+eUqOeahOeoi+W6j1xcXFxcXFxcbnZhciBydWxlcyA9IGdldExhc3RSdWxlcygxMSk7XFxcXFxcXFxucnVsZXMubWFwKHIgPT4gYWxpeXVuLnB1c2goe1xcXFxcXFxcbiAgICB0aXRsZTogKCfigJzigJzigJ3igJ08Zm9udCBjb2xvcj0nICsgZ2V0UmFuZG9tQ29sb3IoKSArICc+JyArIHIudGl0bGUgKyAnPC9mb250PicpLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcXFxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2hvbWVAJyArIHIudGl0bGUsXFxcXFxcXFxufSkpO1xcXFxcXFxcbmFsaXl1blxcXFxcXFwifSx7XFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImxpbmVcXFxcXFxcIixcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuWbvuagh+mYtOW9sVxcXFxcXFwiLFxcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowfSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLljoblj7LorrDlvZVcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLljoblj7JcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9oaXN0b3J5XFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvNS5wbmdcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9yb3VuZF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuaIkeeahOS5puetvlxcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIuS5puetvlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6dmFyIGJvb2sgPSBbXTtldmFsKCdib29rPScrcmVxdWVzdCgnaGlrZXI6Ly9ib29rbWFyaycse30pKTt2YXIgbmFtZXVybCA9IFtdO2Zvcih2YXIgaSA9IDA7aTxib29rLmxlbmd0aDtpKyspe25hbWV1cmxbaV09eyd0aXRsZSc6JycsJ3VybCc6Jyd9O25hbWV1cmxbaV0udGl0bGUgPSBib29rW2ldLnRpdGxlO25hbWV1cmxbaV0udXJsID0gYm9va1tpXS51cmw7fTtjb25zdCBuYW1lcyA9IG5hbWV1cmwubWFwKG5hbWUgPT4gbmFtZS50aXRsZSk7JChuYW1lcywzLCfkuabnrb7pgJ/op4gnKS5zZWxlY3QoKG5hbWV1cmwpID0+IHtsZXQgdXJsX2ogPSBuYW1ldXJsLmZpbmRJbmRleChuYW1lID0+IG5hbWUudGl0bGU9PWlucHV0KTtyZXR1cm4gbmFtZXVybFt1cmxfal0udXJsfSxuYW1ldXJsKVxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzE2LnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3JvdW5kXzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5oiR55qE5LiL6L29XFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwi5LiL6L29XFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZG93bmxvYWRcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8zNS5wbmdcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9yb3VuZF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuaIkeeahOeoi+W6j1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIueoi+W6j1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJoaWtlcjovL2hvbWVcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xNy5wbmdcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9yb3VuZF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuenkuaHguaWsOmXu1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIuenkuaHglxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn56eS5oeC5paw6Ze7Jyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHA6Ly9leGNlcnB0LnJ1YmFvby5jb20vdG9vbG1hbi9nZXRNaW5pTmV3cycpKS5kYXRhOyAgICAgICAgIHZhciB5eSA9ICgnaHR0cHM6Ly95dWFueGlhcGkuY24vYXBpL3ZvaWNlLz9wZXI9MCZwaXQ9LTUmc3BkPTUuNSZ0ZXh0PScrJ+eOsOWcqOS4uuaCqOaSreaKpeaWsOmXu+OAgScgKyBqc29uLm5ld3MgKycjbm9SZWNvcmRIaXN0b3J5IycpO2QucHVzaCh7ICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICBkZXNjOiAnMCYmZmxvYXQnLCAgICAgICAgIH0pOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCcsICAgICAgICAgICAgIGltZzoganNvbi5oZWFkX2ltYWdlLCAgICAgICAgICAgICB0aXRsZTogJ+aXpeacn++8micgKyBqc29uLmRhdGUsICAgICAgICAgICAgIHVybDogeXkgKyAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hYNVdlYlZpZXcoaW5wdXQpOyAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICB9KSAgICAgICAgIH0pOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiBqc29uLndlaXl1LCAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly8nICsganNvbi53ZWl5dSwgICAgICAgICB9KTsgICAgICAgICB2YXIgbGlzdCA9IGpzb24ubmV3czsgICAgICAgICBsaXN0LmZvckVhY2goaXRlbSA9PiB7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsICAgICAgICAgICAgICAgICB0aXRsZTogaXRlbSwgICAgICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICAgICAgdGV4dFNpemU6ICcxNycgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgfSk7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnICAgICAgICAgICAgIH0pOyAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzEwLnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3JvdW5kXzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5bi455So566h55CGQ1lfSm1cXFxcXFxcIixcXFxcXFxcImNvZGVcXFxcXFxcIjpcXFxcXFxcIlt7XFxcXFxcXFxuICAgIHRpdGxlOiAn5bi455SoJyxcXFxcXFxcXG4gICAgcGljOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzE1OS5wbmcnLFxcXFxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJykpIHtcXFxcXFxcXG4gICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nLCAnW10nKTtcXFxcXFxcXG4gICAgICAgIH1cXFxcXFxcXG4gICAgICAgIHByb2dyYW0gPSBKU09OLnBhcnNlKHJlcXVlc3QoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJykpO1xcXFxcXFxcbiAgICAgICAgc2VsZWN0X3Nob3cgPSBbJ+KelSddLmNvbmNhdChwcm9ncmFtKTtcXFxcXFxcXG4gICAgICAgIHJldHVybiAkKHNlbGVjdF9zaG93LCAzLCAn5bi455So5bCP56iL5bqPJykuc2VsZWN0KCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICBpZiAoaW5wdXQgPT0gJ+KelScpIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCfluLjnlKjlsI/nqIvluo/nrqHnkIYnKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkID0gW107XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicpKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGluZGV4ID0gMDtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHByb2dyYW0uZm9yRWFjaChpdGVtID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogaW5kZXggKyAnLicgKyBpdGVtLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoWyfnvJbovpEnLCAn56e75L2NJywgJ+WIoOmZpCddLCAzLCAn6K+36YCJ5oup5pON5L2cJykuc2VsZWN0KChpbmRleCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0ID09ICfnvJbovpEnKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfor7fovpPlhaXmg7Pmm7TmjaLnmoTlsI/nqIvluo/lkI0nKS5pbnB1dCgoaW5kZXgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW1baW5kZXhdID0gaW5wdXQ7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5pu05pS55oiQ5Yqffic7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgaW5kZXgpXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09ICfnp7vkvY0nKSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQoJycsICfor7fovpPlhaXopoHnp7vliqjliLDlk6rkuKrluo/lj7fliY3pnaInKS5pbnB1dCgoaW5kZXgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXAgPSBwcm9ncmFtW2luZGV4XTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS5zcGxpY2UoaW5wdXQsIDAsIHRlbXApO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQgPCBpbmRleCkge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbS5zcGxpY2UoaW5kZXggKyAxLCAxKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0uc3BsaWNlKGluZGV4LCAxKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nLCBKU09OLnN0cmluZ2lmeShwcm9ncmFtKSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+enu+S9jeaIkOWKn34nO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicpKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtLnNwbGljZShpbmRleCwgMSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSkpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5Yig6Zmk5oiQ5Yqffic7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIGluZGV4KSxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGV4dEFsaWduOiAnbGVmdCdcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4Kys7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfinpUnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRQYWdlVGl0bGUoJ+a3u+WKoOW4uOeUqOWwj+eoi+W6jycpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGQgPSBbXTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfngrnlh7vkuIvmlrknLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2M6ICfovpPlhaXlsI/nqIvluo/lkI0s5L6L5aaC77ya6IGa5b2x4oiaJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYToge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IC0xLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXFxcXFxcXFxcInB1dE15VmFyKCduYW1lX3Byb2dyYW0nLGlucHV0KVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFxcXFxcXFxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFxcXFxcXFxcXCI+4pyNIOi+k+WFpeWQjua3u+WKoDwvc3Bhbj48L2JpZz4nLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnZXRNeVZhcignbmFtZV9wcm9ncmFtJykgPT0gJycpIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/or7flnKjovpPlhaXmoYbovpPlhaXlsI/nqIvluo/lkI3lkI7lho3ngrnlh7snXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lX3Byb2dyYW0gPSBnZXRNeVZhcignbmFtZV9wcm9ncmFtJykuc3BsaXQoLyx877yMLyk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gSlNPTi5wYXJzZShyZXF1ZXN0KCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicpKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2dyYW0gPSBwcm9ncmFtLmNvbmNhdChuYW1lX3Byb2dyYW0pO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvY3kvVGhlbWUvcHJvZ3JhbS5qc29uJywgSlNPTi5zdHJpbmdpZnkocHJvZ3JhbSkpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFjayh0cnVlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcXFxcXFxcXFwidG9hc3Q6Ly/luLjnlKjlsI/nqIvluo/mt7vliqDmiJDlip9+XFxcXFxcXFxcXFxcXFxcIjtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn4oCY4oCY4oCZ4oCZPGJpZz48c3BhbiBzdHlsZT1cXFxcXFxcXFxcXFxcXFwiY29sb3I6IzZFQjg5N1xcXFxcXFxcXFxcXFxcXCI+4pqZIOacgOi/kemHjOa3u+WKoDwvc3Bhbj48L2JpZz4nLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJyxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxcXFxcblxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcnVsZXMgPSBnZXRMYXN0UnVsZXMoMTgpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0aXRsZSA9IHJ1bGVzLm1hcCh0ID0+IHQudGl0bGUpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aXRsZSwgMywgJ+ivt+mAieaLqeimgea3u+WKoOeahOWwj+eoi+W6jycpLnNlbGVjdCgoKSA9PiB7XFxcXFxcXFxuXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRNeVZhcignbmFtZV9wcm9ncmFtJywgaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9wcm9ncmFtID0gZ2V0TXlWYXIoJ25hbWVfcHJvZ3JhbScpLnNwbGl0KC8sfO+8jC8pO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZ3JhbSA9IEpTT04ucGFyc2UocmVxdWVzdCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9jeS9UaGVtZS9wcm9ncmFtLmpzb24nKSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9ncmFtID0gcHJvZ3JhbS5jb25jYXQobmFtZV9wcm9ncmFtKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2N5L1RoZW1lL3Byb2dyYW0uanNvbicsIEpTT04uc3RyaW5naWZ5KHByb2dyYW0pKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2sodHJ1ZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXFxcXFxcXFxcInRvYXN0Oi8v5bi455So5bCP56iL5bqP5re75Yqg5oiQ5YqfflxcXFxcXFxcXFxcXFxcXCI7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChkKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vaG9tZUAnICsgaW5wdXQ7XFxcXFxcXFxuICAgICAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgfSlcXFxcXFxcXG4gICAgfSksXFxcXFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxcXFxcbn1dXFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIlFR6Z+z5LmQ5pCc57SiXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwi6Z+z5LmQXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSMjZnlwYWdlIyNmdWxsVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgbmFtZSA9IHN0b3JhZ2UwLmdldEl0ZW0oJ+aQnOe0oicsICfmtYHooYwnKTsgICAgICAgICBpZiAoTVlfUEFHRSA9PSAxKSB7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogJ1FR6Z+z5LmQJywgICAgICAgICAgICAgICAgIGRlc2M6ICfmkJzntKLpn7PkuZAnLCAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInLCAgICAgICAgICAgICAgICAgcGljX3VybDogJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbXVzaWMvODUuc3ZnJywgICAgICAgICAgICAgICAgIHVybDogJCgnJywgJ+S9oOaDs+aQnOe0oueahCcpLmlucHV0KCgpID0+IHsgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCfmkJzntKInLCBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mraPlnKjmkJzntKInICsgaW5wdXQ7ICAgICAgICAgICAgICAgICB9KSwgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkueWFvaHVkLmNuL2FwaS9xcW11c2ljL3YyP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXNvJnBhZ2U9JyArIE1ZX1BBR0UgKyAnJnBlcl9wYWdlPTYwJndvcmQ9JyArIG5hbWUpKS5kYXRhOyAgICAgICAgIGpzb24ubGlzdC5tYXAoZGF0YSA9PiB7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogZGF0YS50aXRsZSArICfigKInICsgZGF0YS5hdXRob3IsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzNfbWFycXVlZScsICAgICAgICAgICAgICAgICBwaWNfdXJsOiBkYXRhLnBpYywgICAgICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoZGF0YSkgPT4geyAgICAgICAgICAgICAgICAgICAgIHRyeSB7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2aXB1cmwgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL3l5X3NxLnBocD90eXBlPWpzb24mbj0xJm1zZz0nICsgZGF0YS50aXRsZSArIGRhdGEuYXV0aG9yKSkudXJsOyAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZpcHVybCA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnNoc2VydmUuY24vYXBpL211c2ljP249MSZtc2c9JyArIGRhdGEudGl0bGUgKyBkYXRhLmF1dGhvcikpLnVybDsgICAgICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgdmFyIGxyYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnlhb2h1ZC5jbi9hcGkvbXVzaWMvbHJjP2tleT1hVWx5a0EzNUtnbXdQVXBlaEpLTmJGam82diZ0eXBlPXFxJm1pZD0nICsgZGF0YS5taWQpKS5kYXRhOyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgICAgIHVybHM6IFt2aXB1cmxdLCAgICAgICAgICAgICAgICAgICAgICAgICBseXJpYzogbHJjICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgIH0sIGRhdGEpLCAgICAgICAgICAgICB9KTsgICAgICAgICB9KTsgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xOTUucG5nXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fcm91bmRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLku4rlpKnlkIPku4DkuYhcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLlkIPllaVcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjaW1tZXJzaXZlVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgIHZhciB1cmwgPSAoJ2h0dHBzOi8vdG9vbHdhLmNvbS9lYXQvJyk7ICAgICAgICAgZC5wdXNoKHsgICAgdXJsOiB1cmwsICAgIGNvbF90eXBlOiBcXFxcXFxcXFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcXFxcXFxcXFwiLCAgICBkZXNjOiBcXFxcXFxcXFxcXFxcXFwiZmxvYXQmJjEwMCVcXFxcXFxcXFxcXFxcXFwiLCAgICBleHRyYTogeyAgICAgICAgZmxvYXRWaWRlbzogdHJ1ZSwgICAgICAgIGNhbkJhY2s6IHRydWUsICAgICAgICBibG9ja1J1bGVzOiBbXFxcXFxcXFxcXFxcXFxcIi5naWZcXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwiL2FkL1xcXFxcXFxcXFxcXFxcXCIsIFxcXFxcXFxcXFxcXFxcXCJnb29nbGVcXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcXFxcXFxcXCIuR0lGXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXFxcXFxcXFwiYWRcXFxcXFxcXFxcXFxcXFwiLF0gICAgfX0pOyAgICAgICAgc2V0UmVzdWx0KGQpOyAgICB9KX0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzEwMS5wbmdcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9yb3VuZF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIlRHWOmfs+S5kOaUtuiXj1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIumfs+iBmlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJoaWtlcjovL3BhZ2UvY29sbGVjdGlvbiNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSM/cnVsZT10Z3jpn7PkuZBcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xMjkucG5nXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fcm91bmRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLomY7niZnnm7Tmkq1cXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLomY7niZlcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgZ2lkID0gZ2V0SXRlbSgn5YiG57G7JywgJzIxMzUnKTsgICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS85My5wbmcnOyAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiAn6JmO54mZ55u05pKtJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgIGRlc2M6ICfliIfmjaLliIbnsbsnLCAgICAgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0ID0gW3sgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ/Cfk7rmlL7mmKDlvbHljoUnLCAgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogJzIxMzUnICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn8J+Sg+e+juWls+aYn+engCcsICAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiAnMTY2MycgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfwn6ea4oCN4pmA77iP576O5aWz6aKc5YC8JywgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6ICcyMTY4JyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ/CfjrXpn7PkuZDnm7Tmkq0nLCAgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogJzM3OTMnICAgICAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICAgICAndGl0bGUnOiAn4pu58J+Pu+eOi+iAheiNo+iAgCcsICAgICAgICAgICAgICAgICAgICAgICAgICdnaWQnOiAnMjMzNicgICAgICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICfwn4+G5ZKM5bmz57K+6IuxJywgICAgICAgICAgICAgICAgICAgICAgICAgJ2dpZCc6ICczMjAzJyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ/Cfj4foi7Hpm4TogZTnm58nLCAgICAgICAgICAgICAgICAgICAgICAgICAnZ2lkJzogJzEnICAgICAgICAgICAgICAgICAgICAgfV07ICAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gbGlzdC5tYXAobGlzdCA9PiBsaXN0LnRpdGxlKTsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJCh0aXRsZSwgMywgJ+ivt+mAieaLqeWIhuexuycpLnNlbGVjdCgobGlzdCkgPT4geyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaSA9IGxpc3QuZmluZEluZGV4KGxpc3QgPT4gbGlzdC50aXRsZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBmbCA9IGxpc3RbaV0uZ2lkOyAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCfliIbnsbsnLCBmbCk7ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouWIhuexuycgICAgICAgICAgICAgICAgICAgICB9LCBsaXN0KSAgICAgICAgICAgICAgICAgfSksICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgIGxvbmdDbGljazogW3sgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SNXFxcXFxcXFxcXFxcXFxcXHR8XFxcXFxcXFxcXFxcXFxcXHTor7fovpPlhaXomY7niZnnm7Tmkq3nmoTliIbnsbtJRCcsICAgICAgICAgICAgICAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAkKCcnLCAn6JmO54mZ55u05pKt55qE5YiG57G7SUQnKS5pbnB1dCgoKSA9PiB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShcXFxcXFxcXFxcXFxcXFwi5YiG57G7XFxcXFxcXFxcXFxcXFxcIiwgaW5wdXQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5YiH5o2i5YiG57G7JyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgICAgICAgICB9XSwgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHZhciBqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly93d3cuaHV5YS5jb20vY2FjaGUucGhwP209TGl2ZUxpc3QmZG89Z2V0TGl2ZUxpc3RCeVBhZ2UmdGFnQWxsPTAmcGFnZT0nICsgTVlfUEFHRSArICcmZ2FtZUlkPScgKyBnaWQpKS5kYXRhLmRhdGFzOyAgICAgICAgIGpzb24ubWFwKGRhdGEgPT4gZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGRhdGEubmljaywgICAgICAgICAgICAgZGVzYzogZGF0YS5pbnRyb2R1Y3Rpb24sICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMicsICAgICAgICAgICAgIHBpY191cmw6IGRhdGEuc2NyZWVuc2hvdCwgICAgICAgICAgICAgdXJsOiAndmlkZW86Ly9odHRwczovL20uaHV5YS5jb20vJyArIGRhdGEucHJvZmlsZVJvb20sICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBibG9ja1J1bGVzOiBbJy5wbmcnLCAnLmpwZycsICcuZ2lmJywgJy5HSUYnXSwgICAgICAgICAgICAgfSAgICAgICAgIH0pKTsgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xMzcucG5nXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fcm91bmRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLohJHnrYvmgKXovazlvK9cXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLmg4rovaxcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgIHNldFBhZ2VUaXRsZSgn6ISR562L5oCl6L2s5byvJyk7ICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgdmFyIGpzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkucXFzdXUuY24vYXBpL2RtLW5hb3dhbj9udW09MTAmYXBpS2V5PWNkMjBiNTQzYWMxMDQ4ZDY4ODc4NzU4ZmFlMDcxOWM0JykpLmRhdGE7ICAgICAgICBkLnB1c2goeyAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgIGRlc2M6ICcwJywgICAgICAgIH0pOyAgICAgICAganMubGlzdC5tYXAoZGF0YSA9PiBkLnB1c2goeyAgICAgICAgICAgIHRpdGxlOiBkYXRhLnF1ZXN0LCAgICAgICAgICAgIGRlc2M6ICcnLCAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcXFxcXFxcXFwidGV4dF8xXFxcXFxcXFxcXFxcXFxcIiwgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGRhdGEpID0+IHsgICAgICAgICAgICAgICAgdmFyIHRleHQgPSBkYXRhLnJlc3VsdDsgICAgICAgICAgICAgICAgdmFyIHVybCA9ICgnaHR0cHM6Ly95dWFueGlhcGkuY24vYXBpL3ZvaWNlLz9wZXI9MCZwaXQ9LTUmc3BkPTUuNSZ0ZXh0PScgKyB0ZXh0KTsgICAgICAgICAgICAgICAgcmVmcmVzaFg1V2ViVmlldyh1cmwpOyAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIHRleHQgICAgICAgICAgICB9LCBkYXRhKSAgICAgICAgfSkpOyAgICAgICAgc2V0UmVzdWx0KGQpOyAgICB9KX0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzI1MS5wbmdcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9yb3VuZF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIue7hOS7tuWxleekulxcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIue7hOS7tlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn57uE5Lu25bGV56S65LyY5YyW54mIJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vaW1hZ2VzL2hvbWVfYmcnOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIHRpdGxlOiAn54K55Ye75aSN5Yi2JywgICAgICAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsICAgICAgICAgICAgIGRlc2M6ICfor7TmmI7vvJrngrnlh7vljbPlpI3liLbmoLflvI8hJywgICAgICAgICAgICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHsgICAgICAgICAgICAgICAgIHJldHVybiAnY29weTovL2lucHV0JyAgICAgICAgICAgICB9KSwgICAgICAgICB9KTsgICAgICAgICAgdmFyIHd0ID0gWyd0ZXh0XzEnLCAndGV4dF9jZW50ZXJfMScsICd0ZXh0XzInLCAndGV4dF8zJywgJ3RleHRfNCcsICd0ZXh0XzUnLCAnZmxleF9idXR0b24nLCAnc2Nyb2xsX2J1dHRvbicsIF07ICAgICAgICAgIHd0LmZvckVhY2goZnVuY3Rpb24odykgeyAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6IHcsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogdywgICAgICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly8nICsgdywgICAgICAgICAgICAgfSk7ICAgICAgICAgfSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICdwaWNfMV9mdWxsJywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vcGljXzFfZnVsbCcsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnLCAgICAgICAgICAgICBpbWc6IGltZywgICAgICAgICAgICAgdXJsOiAnY29weTovL3BpY18xX2Z1bGwnLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICdwaWNfMycsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgdXJsOiAnY29weTovL3BpY18zJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzMnLCAgICAgICAgICAgICBpbWc6IGltZywgICAgICAgICAgICAgdXJsOiAnY29weTovL3BpY18zJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAncGljXzNfc3F1YXJlJywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vcGljXzNfc3F1YXJlJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzNfc3F1YXJlJywgICAgICAgICAgICAgaW1nOiBpbWcsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9waWNfM19zcXVhcmUnLCAgICAgICAgIH0pOyAgICAgICAgICB2YXIgeXQgPSBbJ3RleHRfaWNvbicsICdhdmF0YXInLCAnaWNvbl8xX3NlYXJjaCcsICdtb3ZpZV8xJywgJ21vdmllXzFfbGVmdF9waWMnLCAnbW92aWVfMV92ZXJ0aWNhbF9waWMnLCAnbW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1cicsICdtb3ZpZV8yJywgJ21vdmllXzMnLCAnbW92aWVfM19tYXJxdWVlJywgJ3BpY18xJywgJ3BpY18xX2NhcmQnLCAncGljXzInLCAncGljXzJfY2FyZCcsICdpY29uXzInLCAnaWNvbl8yX3JvdW5kJywgJ2ljb25fc21hbGxfMycsICdpY29uXzNfcm91bmRfZmlsbCcsICdpY29uXzQnLCAnaWNvbl80X2NhcmQnLCAnaWNvbl9zbWFsbF80JywgJ2ljb25fcm91bmRfNCcsICdpY29uX3JvdW5kX3NtYWxsXzQnLCAnaWNvbl81JywgJ2NhcmRfcGljXzEnLCAnY2FyZF9waWNfMicsICdjYXJkX3BpY18yXzInLCAnY2FyZF9waWNfMl8yX2xlZnQnLCAnY2FyZF9waWNfMycsICdjYXJkX3BpY18zX2NlbnRlcicsIF07ICAgICAgICAgIHl0LmZvckVhY2goZnVuY3Rpb24oeSkgeyAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgdGl0bGU6IHksICAgICAgICAgICAgICAgICBjb2xfdHlwZTogeSwgICAgICAgICAgICAgICAgIGltZzogaW1nLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly8nICsgeSwgICAgICAgICAgICAgfSk7ICAgICAgICAgfSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICd4NV93ZWJ2aWV3X3NpbmdsZScsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgdXJsOiAnY29weTovL3g1X3dlYnZpZXdfc2luZ2xlJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAnbG9uZ190ZXh0JywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLCAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vbG9uZ190ZXh0JywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAncmljaF90ZXh0JywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLCAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vcmljaF90ZXh0JywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAnbGluZScsICAgICAgICAgICAgIGNvbF90eXBlOiAnZmxleF9idXR0b24nLCAgICAgICAgICAgICB1cmw6ICdjb3B5Oi8vbGluZScsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICdsaW5lX2JsYW5rJywgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9saW5lX2JsYW5rJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaycsICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9ibGFua19ibG9jaycsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAnYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9iaWdfYmxhbmtfYmxvY2snLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICdiaWdfYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbicsICAgICAgICAgICAgIHVybDogJ2NvcHk6Ly9iaWdfYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JpZ19ibGFua19ibG9jaycsICAgICAgICAgfSk7ICAgICAgICAgc2V0UmVzdWx0KGQpOyAgICAgfSk7IH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzE0LnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3JvdW5kXzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5a6J5Y2T5aOB57q4VFxcXFxcXFwiLFxcXFxcXFwiY29kZVxcXFxcXFwiOlxcXFxcXFwidHJyID0gW3tcXFxcXFxcXG4gICAgJ3RpdGxlJzogJ+acgOaWsCcsXFxcXFxcXFxuICAgICdpZCc6ICcnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn576O5aWzJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDAnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5Yqo5ryrJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDMnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn6aOO5pmvJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDInXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5ri45oiPJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDcnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5paH5a2XJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS81MTA5ZTA0ZTQ4ZDViOTM2NGFlOWFjNDUnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn6KeG6KeJJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0NzlmNzViYTFjNjU1NjEwMDAwMjcnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5oOF5oSfJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZWYwYTM1YzA1Njk3OTU3NTYwMDAwMDAnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn6K6+6K6hJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0N2ExOTViYTFjNjBjYTUwMDAyMjInXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5piO5pifJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS81MTA5ZTA1MjQ4ZDViOTM2OGJiNTU5ZGMnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn54mp6K+tJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0N2E0NjViYTFjNjU1NjEwMDAwMjgnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn55S35Lq6JyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDYnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5py65qKwJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDUnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5Z+O5biCJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZmI0N2EzMDViYTFjNjBjYTUwMDAyMjMnXFxcXFxcXFxufSwge1xcXFxcXFxcbiAgICAndGl0bGUnOiAn5Yqo54mpJyxcXFxcXFxcXG4gICAgJ2lkJzogJy9jYXRlZ29yeS80ZTRkNjEwY2RmNzE0ZDI5NjYwMDAwMDEnXFxcXFxcXFxufV07XFxcXFxcXFxudmFyIHRpaSA9IGdldEl0ZW0oJ3RpZCcsICcnKTtcXFxcXFxcXG52YXIgdGlkID0gdHJyLm1hcChpID0+IGkuaWQpO1xcXFxcXFxcbm5vID0gJyNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IyNub0xvYWRpbmcjJztcXFxcXFxcXG51cmwgPSAnaHR0cDovL3NlcnZpY2UucGljYXNzby5hZGVzay5jb20vdjEvdmVydGljYWwnICsgdGlpICsgJy92ZXJ0aWNhbD9saW1pdD0zMCZza2lwPWZ5cGFnZUAtMUAqMzBAI2F1dG9QYWdlIycgKyBubztcXFxcXFxcXG5be1xcXFxcXFxcbiAgICB0aXRsZTogJ+Wjgee6uCcsXFxcXFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80JyxcXFxcXFxcXG4gICAgaW1nOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzE2Ny5wbmcnLFxcXFxcXFxcbiAgICB1cmw6ICQodXJsKS5ydWxlKCgpID0+IHtcXFxcXFxcXG4gICAgICAgIGQgPSBKU09OLnBhcnNlKGdldFJlc0NvZGUoKSkucmVzLnZlcnRpY2FsLm1hcChodG1sID0+ICh7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxcXFxcbiAgICAgICAgICAgIHVybDogaHRtbC5wcmV2aWV3ICsgJyMuanBnJyxcXFxcXFxcXG4gICAgICAgICAgICBpbWc6IGh0bWwucHJldmlldyxcXFxcXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2Z1bGwnXFxcXFxcXFxuICAgICAgICB9KSk7XFxcXFxcXFxuICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXFxcXFxuICAgIH0pLFxcXFxcXFxcbiAgICBleHRyYToge1xcXFxcXFxcbiAgICAgICAgbG9uZ0NsaWNrOiBbe1xcXFxcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn8J+UhOabtOaNouaJk+W8gOeahOWIhuexuycsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKHRyciwgdGlkKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHZhciBuYW1lID0gdHJyLm1hcCh0ID0+IHQudGl0bGUpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lLCAzLCAn6K+36YCJ5oup5LiA5Liq5YiG57G7Jykuc2VsZWN0KCh0cnIsIHRpZCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRpdGxlID0gdHJyLmZpbmRJbmRleCh0ID0+IHQudGl0bGUgPT0gaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHRyclt0aXRsZV0uaWQ7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCd0aWQnLCB1cmwpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNoidcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSwgdHJyLCB0aWQpXFxcXFxcXFxuICAgICAgICAgICAgfSwgdHJyLCB0aWQpXFxcXFxcXFxuICAgICAgICB9XVxcXFxcXFxcbiAgICB9XFxcXFxcXFxufV07XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuaYn+W6p+i/kOWKv1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIuaYn+W6p1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn5pif5bqn6L+Q5Yq/Jyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgbmFtZSA9IHN0b3JhZ2UwLmdldEl0ZW0oJ+aYn+W6pycsICdnZW1pbmknKTsgICAgICAgICB2YXIgaW1nID0gKCdodHRwczovL2FwaS52dmhhbi5jb20vYXBpL2JpbmcnKTsgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZ2aGFuLmNvbS9hcGkvaG9yb3Njb3BlP3RpbWU9dG9kYXkmdHlwZT0nICsgbmFtZSkpLmRhdGE7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGpzb24udGl0bGUsICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsICAgICAgICAgICAgIGRlc2M6ICcwJywgICAgICAgICAgICAgcGljOiBpbWcsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IFt7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn55m9576K5bqnJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnYXJpZXMnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn6YeR54mb5bqnJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAndGF1cnVzJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WPjOWtkOW6pycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ2dlbWluaScgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAnbmFtZSc6ICflt6jon7nluqcnLCAgICAgICAgICAgICAgICAgICAgICdpZCc6ICdjYW5jZXInICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn54uu5a2Q5bqnJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnbGVvJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WkhOWls+W6pycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3ZpcmdvJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WkqeenpOW6pycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ2xpYnJhJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WkqeidjuW6pycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3Njb3JwaW8nICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn5bCE5omL5bqnJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnc2FnaXR0YXJpdXMnICAgICAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICAgICAgJ25hbWUnOiAn6a2U6J2O5bqnJywgICAgICAgICAgICAgICAgICAgICAnaWQnOiAnY2Fwcmljb3JuJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+awtOeTtuW6pycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ2FxdWFyaXVzJyAgICAgICAgICAgICAgICAgfSwgeyAgICAgICAgICAgICAgICAgICAgICduYW1lJzogJ+WPjOmxvOW6pycsICAgICAgICAgICAgICAgICAgICAgJ2lkJzogJ3Bpc2NlcycgICAgICAgICAgICAgICAgIH1dOyAgICAgICAgICAgICAgICAgdmFyIG5hbWUgPSBsaXN0Lm1hcChsaXN0ID0+IGxpc3QubmFtZSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJChuYW1lLCAzLCAn6K+36YCJ5oup5L2g55qE5pif5bqnJykuc2VsZWN0KChsaXN0KSA9PiB7ICAgICAgICAgICAgICAgICAgICAgdmFyIGkgPSBsaXN0LmZpbmRJbmRleChsaXN0ID0+IGxpc3QubmFtZSA9PSBpbnB1dCk7ICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IGxpc3RbaV0uaWQ7ICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgn5pif5bqnJywgdXJsKTsgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suWIh+aNouaYn+W6pycgICAgICAgICAgICAgICAgIH0sIGxpc3QpICAgICAgICAgICAgIH0pLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn5pe26Ze077yaJyArIGpzb24udGltZSArICdcXFxcXFxcXFxcXFxcXFxcbuWunO+8micgKyBqc29uLnRvZG8ueWkgKyAnXFxcXFxcXFxcXFxcXFxcXG7lv4zvvJonICsganNvbi50b2RvLmppICsgJ1xcXFxcXFxcXFxcXFxcXFxu5bm46L+Q5pWw5a2X77yaJyArIGpzb24ubHVja3ludW1iZXIgKyAnXFxcXFxcXFxcXFxcXFxcXG7lubjov5DpopzoibLvvJonICsganNvbi5sdWNreWNvbG9yICsgJ1xcXFxcXFxcXFxcXFxcXFxu6YCf6YWN5pif5bqn77yaJyArIGpzb24ubHVja3ljb25zdGVsbGF0aW9uICsgJ1xcXFxcXFxcXFxcXFxcXFxu55+t6K+E77yaJyArIGpzb24uc2hvcnRjb21tZW50LCAgICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn57u85ZCI6L+Q5Yq/77yaJyArIGpzb24uZm9ydHVuZS5hbGwgKyAnIOKZpScgKyAnXFxcXFxcXFxcXFxcXFxcXG7niLHmg4Xov5Dlir/vvJonICsganNvbi5mb3J0dW5lLmxvdmUgKyAnIOKZpScgKyAnXFxcXFxcXFxcXFxcXFxcXG7lrabkuJrlt6XkvZzvvJonICsganNvbi5mb3J0dW5lLndvcmsgKyAnIOKZpScgKyAnXFxcXFxcXFxcXFxcXFxcXG7otKLlr4zov5Dlir/vvJonICsganNvbi5mb3J0dW5lLm1vbmV5ICsgJyDimaUnICsgJ1xcXFxcXFxcXFxcXFxcXFxu5YGl5bq36L+Q5Yq/77yaJyArIGpzb24uZm9ydHVuZS5oZWFsdGggKyAnIOKZpScsICAgICAgICAgICAgIGNvbF90eXBlOiAnbG9uZ190ZXh0JywgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9lbXB0eScsICAgICAgICAgfSwgeyAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICfnu7zlkIjmjIfmlbDvvJonICsganNvbi5pbmRleC5hbGwgKyAnXFxcXFxcXFxcXFxcXFxcXG7niLHmg4XmjIfmlbDvvJonICsganNvbi5pbmRleC5sb3ZlICsgJ1xcXFxcXFxcXFxcXFxcXFxu5a2m5Lia5bel5L2c77yaJyArIGpzb24uaW5kZXgud29yayArICdcXFxcXFxcXFxcXFxcXFxcbui0ouWvjOaMh+aVsO+8micgKyBqc29uLmluZGV4Lm1vbmV5ICsgJ1xcXFxcXFxcXFxcXFxcXFxu5YGl5bq35oyH5pWw77yaJyArIGpzb24uaW5kZXguaGVhbHRoLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICdsaW5lJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn57u85ZCI6L+Q5Yq/77yaJyArIGpzb24uZm9ydHVuZXRleHQuYWxsICsgJ1xcXFxcXFxcXFxcXFxcXFxuXFxcXFxcXFxcXFxcXFxcXG7niLHmg4Xov5Dlir/vvJonICsganNvbi5mb3J0dW5ldGV4dC5sb3ZlICsgJ1xcXFxcXFxcXFxcXFxcXFxuXFxcXFxcXFxcXFxcXFxcXG7lrabkuJrlt6XkvZzvvJonICsganNvbi5mb3J0dW5ldGV4dC53b3JrICsgJ1xcXFxcXFxcXFxcXFxcXFxuXFxcXFxcXFxcXFxcXFxcXG7otKLlr4zov5Dlir/vvJonICsganNvbi5mb3J0dW5ldGV4dC5tb25leSArICdcXFxcXFxcXFxcXFxcXFxcblxcXFxcXFxcXFxcXFxcXFxu5YGl5bq36L+Q5Yq/77yaJyArIGpzb24uZm9ydHVuZXRleHQuaGVhbHRoLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2xvbmdfdGV4dCcsICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHknLCAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzY3LnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3JvdW5kXzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi55+t6KeG6aKR6Kej5p6QXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwi6Kej5p6QXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNmdWxsVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgZHogPSBnZXRNeVZhcign6Kej5p6QJywgJ2h0dHBzOi8vdi5kb3V5aW4uY29tL1NvN05wVE4vJyk7ICAgICAgICAgdmFyIGRhdGEgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3hpYW9hcGkuY24vQVBJL3pzX2RzcGp4LnBocD91cmw9JyArIGR6KSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICfop6PmnpAnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JywgICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeefreinhumikeWIhuS6q+mTvuaOpTonLCAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgcHV0TXlWYXIoJ+ino+aekCcsIGlucHV0KTsgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7ICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknOyAgICAgICAgICAgICB9KSwgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlLCAgICAgICAgICAgICBkZXNjOiBkYXRhLmF1dGhvciwgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnLCAgICAgICAgICAgICB1cmw6ICdkb3dubG9hZDovLycgKyBkYXRhLnZpZGVvLCAgICAgICAgIH0sIHsgICAgICAgICAgICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZScsICAgICAgICAgICAgIGRlc2M6ICc2NDAmJmxpc3QnLCAgICAgICAgICAgICB1cmw6IGRhdGEudmlkZW8sICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBjYW5CYWNrOiB0cnVlLCAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUsICAgICAgICAgICAgIH0gICAgICAgICB9KTsgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xNjEucG5nXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fcm91bmRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjIsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLmo4Dmn6Xmm7TmlrBcXFxcXFxcIixcXFxcXFxcImNvZGVcXFxcXFxcIjpcXFxcXFxcInZhciDln5/lkI0gPSAnaHR0cHM6Ly9oYWlrdW8ubGFuem91aS5jb20vJztcXFxcXFxcXG5cXFxcXFxcXG52YXIgZ2V0TmV3ZXN0ID0gZnVuY3Rpb24odXJsKSB7XFxcXFxcXFxuICAgIGxldCBodG1sID0gcmVxdWVzdCh1cmwpO1xcXFxcXFxcbiAgICBldmFsKGh0bWwubWF0Y2goL3ZhciBwZ3M7KFtcXFxcXFxcXFxcXFxcXFxcc1xcXFxcXFxcXFxcXFxcXFxTXSo/KWRvY3VtZW50LylbMV0pO1xcXFxcXFxcbiAgICBldmFsKCd2YXIgYm9keSA9JyArIGh0bWwubWF0Y2goL2RhdGEgOihbXFxcXFxcXFxcXFxcXFxcXHNcXFxcXFxcXFxcXFxcXFxcU10qP1xcXFxcXFxcXFxcXFxcXFx9KS8pWzFdKTtcXFxcXFxcXG4gICAgbGV0IGFyciA9IEpTT04ucGFyc2UocG9zdCh1cmwubWF0Y2goL2h0dHBzKjpcXFxcXFxcXFxcXFxcXFxcL1xcXFxcXFxcXFxcXFxcXFwvW15cXFxcXFxcXFxcXFxcXFxcL10rXFxcXFxcXFxcXFxcXFxcXC8vKVswXSArICdmaWxlbW9yZWFqYXgucGhwJywge1xcXFxcXFxcbiAgICAgICAgYm9keTogYm9keVxcXFxcXFxcbiAgICB9KSkudGV4dDtcXFxcXFxcXG4gICAgdmFyIG5ld0FyciA9IGFyci5maWx0ZXIoZnVuY3Rpb24ocCkge8KgXFxcXFxcXFxuICAgICAgICByZXR1cm4gcC5uYW1lX2FsbC5zdGFydHNXaXRoKFxcXFxcXFxcXFxcXFxcXCLmtbfpmJTop4bnlYxfXFxcXFxcXFxcXFxcXFxcIikgJiYgcC5uYW1lX2FsbC5zcGxpdCgnXycpWzNdLm1hdGNoKC9bMC05XSsvKVswXSA+IGdldEFwcFZlcnNpb24oKTtcXFxcXFxcXG4gICAgfSk7XFxcXFxcXFxuICAgIGlmIChuZXdBcnIubGVuZ3RoID4gMCkge1xcXFxcXFxcbiAgICAgICAgbGV0IGRpY3QgPSB7fTtcXFxcXFxcXG4gICAgICAgIGxldCBvcHRpb25zID0gW107XFxcXFxcXFxuICAgICAgICBmb3IgKGxldCBpIGluIG5ld0Fycikge1xcXFxcXFxcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaChuZXdBcnJbaV0ubmFtZV9hbGwucmVwbGFjZSgv5rW36ZiU6KeG55WMXy8sICcnKSk7XFxcXFxcXFxuICAgICAgICAgICAgZGljdFtuZXdBcnJbaV0ubmFtZV9hbGxdID0gbmV3QXJyW2ldLmlkO1xcXFxcXFxcbiAgICAgICAgfVxcXFxcXFxcbiAgICAgICAgcmV0dXJuICQob3B0aW9ucywgMSkuc2VsZWN0KChkLCB1cmwpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgbGV0IGRpY3QgPSBKU09OLnBhcnNlKGQpO1xcXFxcXFxcblxcXFxcXFxcbiAgICAgICAgICAgICAgICBmdW5jdGlvbiBsYXp5KGZpbGVVcmwpIHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAkKGZpbGVVcmwpLmxhenlSdWxlKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9kZXZlbG9wZXIubGFuem91Zy5jb20vZmlsZS8nICsgcmVxdWVzdChpbnB1dCkubWF0Y2goLycoXFxcXFxcXFxcXFxcXFxcXD8uKj8pJy8pWzFdLCB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogJ01vemlsbGEvNS4wJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWRpcmVjdDogZmFsc2UsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhIZWFkZXJzOiB0cnVlXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSkpLmhlYWRlcnMubG9jYXRpb25bMF1cXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICAgICAgICAgIH1cXFxcXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGxhenkodXJsLm1hdGNoKC9odHRwcyo6XFxcXFxcXFxcXFxcXFxcXC9cXFxcXFxcXFxcXFxcXFxcL1teXFxcXFxcXFxcXFxcXFxcXC9dK1xcXFxcXFxcXFxcXFxcXFwvLylbMF0gKyAndHAvJyArIGRpY3RbJ+a1t+mYlOinhueVjF8nICsgaW5wdXRdKTtcXFxcXFxcXG4gICAgICAgICAgICB9LFxcXFxcXFxcbiAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KGRpY3QpLCB1cmwpO1xcXFxcXFxcbiAgICB9IGVsc2VcXFxcXFxcXG4gICAgICAgIHJldHVybiAndG9hc3Q6Ly/msqHmnInmm7TmlrDnmoTniYjmnKwnXFxcXFxcXFxufVxcXFxcXFxcblxcXFxcXFxcbmggPSBbXTtcXFxcXFxcXG4vKlxcXFxcXFxcbmgucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiAn5pu05pawJyxcXFxcXFxcXG4gICAgdXJsOiBnZXROZXdlc3Qo5Z+f5ZCNICsgXFxcXFxcXFxcXFxcXFxcInUvR29sZFJpdmVyXFxcXFxcXFxcXFxcXFxcIiksICAgIFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCcsXFxcXFxcXFxufSlcXFxcXFxcXG4qL1xcXFxcXFxcbmgucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiAn5pu05pawJyxcXFxcXFxcXG4gICAgdXJsOiAkKOWfn+WQjSArIFxcXFxcXFxcXFxcXFxcXCJ1L0dvbGRSaXZlclxcXFxcXFxcXFxcXFxcXCIpLmxhenlSdWxlKChnZXROZXdlc3QpID0+IHtcXFxcXFxcXG4gICAgICAgIHJldHVybiBnZXROZXdlc3QoaW5wdXQpXFxcXFxcXFxuICAgIH0sIGdldE5ld2VzdCksXFxcXFxcXFxuICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80JyxcXFxcXFxcXG4gICAgaW1nOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzY1LnBuZycsXFxcXFxcXFxufSlcXFxcXFxcXG5oXFxcXFxcXFxuXFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIkLnq5noiJ7ouYjop4bpopFcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLlk5Tlk6lcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5IyNmeXBhZ2UjI2Z1bGxUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCdC56uZ6Iie6LmIJyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgcmlkID0gc3RvcmFnZTAuZ2V0SXRlbSgncmlkJywgJzE5OScpOyAgICAgICAgIGlmIChNWV9QQUdFID09IDEpIHsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiAn5ZOU5ZOp6Iie6LmIJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnYXZhdGFyJywgICAgICAgICAgICAgICAgIGRlc2M6ICfliIfmjaLliIbnsbsnLCAgICAgICAgICAgICAgICAgcGljOiAnaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzMzNi5wbmcnLCAgICAgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IFt7ICAgICAgICAgICAgICAgICAgICAgICAgICd0aXRsZSc6ICflroXoiJ4nLCAgICAgICAgICAgICAgICAgICAgICAgICAncmlkJzogJzIwJyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+ihl+iInicsICAgICAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMTk4JyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+aYjuaYn+iInicsICAgICAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMTk5JyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+WbvemjjuiInicsICAgICAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMjAwJyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+aJi+WKv+iInicsICAgICAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMjU1JyAgICAgICAgICAgICAgICAgICAgIH0sIHsgICAgICAgICAgICAgICAgICAgICAgICAgJ3RpdGxlJzogJ+e7vOWQiOiInicsICAgICAgICAgICAgICAgICAgICAgICAgICdyaWQnOiAnMTU0JyAgICAgICAgICAgICAgICAgICAgIH1dOyAgICAgICAgICAgICAgICAgICAgIHZhciB0aXRsZSA9IGxpc3QubWFwKGkgPT4gaS50aXRsZSk7ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICQodGl0bGUsIDIsICfor7fpgInmi6nkuIDkuKrliIbnsbsnKS5zZWxlY3QoKGxpc3QpID0+IHsgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHUgPSBsaXN0LmZpbmRJbmRleChpID0+IGkudGl0bGUgPT0gaW5wdXQpOyAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaWQgPSBsaXN0W3VdLnJpZDsgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbSgncmlkJywgaWQpOyAgICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInICAgICAgICAgICAgICAgICAgICAgfSwgbGlzdCkgICAgICAgICAgICAgICAgIH0pLCAgICAgICAgICAgICB9LCB7ICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2xpbmUnLCAgICAgICAgICAgICB9KTsgICAgICAgICB9ICAgICAgICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsSS5jb20veC93ZWItaW50ZXJmYWNlL25ld2xpc3Q/dHlwZT0wJnBuPScgKyBNWV9QQUdFICsgJyZwcz0xMDAmanNvbnA9anNvbnAmcmlkPScgKyByaWQpKS5kYXRhOyAgICAgICAgIGpzb24uYXJjaGl2ZXMubWFwKGh0bWwgPT4gZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6IGh0bWwudGl0bGUsICAgICAgICAgICAgIGRlc2M6IGh0bWwudG5hbWUsICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfM19tYXJxdWVlJywgICAgICAgICAgICAgcGljX3VybDogaHRtbC5waWMgKyAnQFJlZmVyZXI9JywgICAgICAgICAgICAgdXJsOiBodG1sLmJ2aWQgKyAkKCcnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICB2YXIgdXJsID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkucGVhcmt0cnVlLmNuL2FwaS9iaWxpYmlsaS9wYXJzZS5waHA/YnZpZD0nICsgaW5wdXQpKS5kYXRhLnZpZGVvcy5tYXAoZGF0YSA9PiBkYXRhLnZpZGVvdXJsKTsgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh7ICAgICAgICAgICAgICAgICAgICAgdXJsczogdXJsLCAgICAgICAgICAgICAgICAgfSkgICAgICAgICAgICAgfSksICAgICAgICAgfSkpOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzMzNi5wbmdcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9yb3VuZF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuS8kemXsua4uOaIj1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIua4uOaIj1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfkvJHpl7LmuLjmiI8nKTsgICAgICAgICB2YXIgdGl0bGVzID0gWydGQ+a4uOaIj+acukBAaHR0cHM6Ly94aWFvYmFwaS50b3AvZnVuY3Rpb24vZmMvJywgJ+aetuWtkOm8k0BAaHR0cDovL2d1b3poaXZpcC5jb20vanpnJywgJ+WWteWWteaJi+m8k0BAaHR0cHM6Ly9saW56aW11LmNvbS9NdXNpY0NhdCcsICfkuK3lm73osaHmo4tAQGh0dHBzOi8vdS5hbGkyMTMubmV0L2dhbWVzL2NoaW5hY2hlc3MvaW5kZXguaHRtbD9nYW1lX2NvZGU9MzEzJywgJ+WGkumZqei3s+i3g0BAaHR0cHM6Ly91LmFsaTIxMy5uZXQvZ2FtZXMvc2lsbHlqdW1wL2luZGV4Lmh0bWw/Z2FtZV9jb2RlPTkzNycsICflnZHniLnmuLjmiI9AQGh0dHBzOi8vdS5hbGkyMTMubmV0L2dhbWVzL2tlbmdkaWU4L2luZGV4Lmh0bWw/Z2FtZV9jb2RlPTk2NScsICflsLHmmK/ot5FAQGh0dHBzOi8vdS5hbGkyMTMubmV0L2dhbWVzL3hpYW9odW96aS9pbmRleC5odG1sP2dhbWVfY29kZT05OTcnLCAn5LqM5oiY6aOO5LqRQEBodHRwczovL3UuYWxpMjEzLm5ldC9nYW1lcy9lcnpoYW4vaW5kZXguaHRtbD9nYW1lX2NvZGU9ODc3JywgJ+e7iOe7k+iAhUBAaHR0cHM6Ly91LmFsaTIxMy5uZXQvZ2FtZXMvdGhldGVybWluYXRvci9pbmRleC5odG1sP2dhbWVfY29kZT02NzMnLCAn5o2V6bG85ri45oiPQEBodHRwczovL3hpYW9iYXBpLnRvcC9mdW5jdGlvbi9nYW1lL3l4bWIvMy9pbmRleC5odG1sJywgJ+e7tOS6rOaImOS6iUBAaHR0cHM6Ly94aWFvYmFwaS50b3AvZnVuY3Rpb24vZ2FtZS95eG1iLzEvaW5kZXguaHRtbCcsICfpnZLom5nlkIPoi43onYdAQGh0dHBzOi8veGlhb2JhcGkudG9wL2Z1bmN0aW9uL2dhbWUveXhtYi82L2luZGV4Lmh0bWwnLCAn55av54uC6bKo6bG8QEBodHRwczovL3hpYW9iYXBpLnRvcC9mdW5jdGlvbi9nYW1lL3l4bWIvMTEvaW5kZXguaHRtbCcsICflpKnlpKnmtojmtojkuZBAQGh0dHBzOi8veGlhb2JhcGkudG9wL2Z1bmN0aW9uL2dhbWUveXhtYi8xNy9pbmRleC5odG1sJywgJ+S4gOeslOi/nuePoEBAaHR0cHM6Ly94aWFvYmFwaS50b3AvZnVuY3Rpb24vZ2FtZS95eG1iLzc0L2luZGV4Lmh0bWwnLCAn5pif55CD5L+d5Y2r5oiYQEBodHRwczovL3hpYW9iYXBpLnRvcC9mdW5jdGlvbi9nYW1lL3l4bWIvMjEvaW5kZXguaHRtbCcsICflj4zkurrkupTlrZDmo4tAQGh0dHBzOi8veGlhb2JhcGkudG9wL2Z1bmN0aW9uL2dhbWUveXhtYi8yOS9pbmRleC5odG1sJywgJ+mjnuacuuWkp+aImEBAaHR0cHM6Ly94aWFvYmFwaS50b3AvZnVuY3Rpb24vZ2FtZS95eG1iLzMxL2luZGV4Lmh0bWwnLCAn5pyA5by655y85YqbQEBodHRwczovL3hpYW9iYXBpLnRvcC9mdW5jdGlvbi9nYW1lL3l4bWIvMzYvaW5kZXguaHRtbCcsICfngYznr67mipXnkINAQGh0dHBzOi8veGlhb2JhcGkudG9wL2Z1bmN0aW9uL2dhbWUveXhtYi80OS9pbmRleC5odG1sJywgJ+WInemfs+ino+WOi0BAaHR0cHM6Ly90b29sd2EuY29tL21pa3V0YXAvJywgJ+icmOibm+e6uOeJjEBAaHR0cHM6Ly9nYW1lLnVyMS5mdW4vcG9rZXIvJywgJ+mjnuacuuWkp+aImEBAaHR0cHM6Ly9nYW1lLnVyMS5mdW4vcGxhbmUtd2Fycy8nLCAn56ev5pyo5YiH5YiH5LmQQEBodHRwczovL2dhbWUudXIxLmZ1bi9tZW5qYS8nLCAn5o2P5rOh5rOhQEBodHRwczovL3Rvb2x3YS5jb20vYnViYmxlLyddOyAgICAgICAgIHZhciB0ID0gdGl0bGVzOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgdmFyIGltZyA9ICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvMzAwLnBuZyc7ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgIHZhciBrID0gdFtpXS5zcGxpdCgvXFxcXFxcXFxcXFxcXFxcXHMqQEBcXFxcXFxcXFxcXFxcXFxccyovKTsgICAgICAgICAgICAgaWYgKGsubGVuZ3RoIDwgMikgY29udGludWU7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZToga1swXSwgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJywgICAgICAgICAgICAgICAgIHBpY191cmw6IGltZywgICAgICAgICAgICAgICAgIHVybDogJ3g1Oi8vJyArIGtbMV0sICAgICAgICAgICAgICAgICBleHRyYTogeyAgICAgICAgICAgICAgICAgICAgIHVhOiBNT0JJTEVfVUEgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHNldEhvbWVSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8zMDAucG5nXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fcm91bmRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLnjovogIXor63pn7PljIVcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLnjovor61cXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5YSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfnjovogIXor63pn7MnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIHZhciB5eCA9IGdldEl0ZW0oJ+eOi+iAheivremfsycsICfpsoHnj60nKTsgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vZnJlZS53cXdsa2ouY24vd3F3bGFwaS93emhlcm95eS5waHA/aGVybz0nICsgeXgpKTsgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICB0aXRsZToganNvbi5oZXJvLCAgICAgICAgICAgICBkZXNjOiAnMCcsICAgICAgICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsICAgICAgICAgICAgIHBpYzoganNvbi5pbWcsICAgICAgICAgICAgIHVybDoganNvbi5pbWcsICAgICAgICAgfSk7ICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgdGl0bGU6ICfnoa7lrponLCAgICAgICAgICAgICBjb2xfdHlwZTogJ2lucHV0JywgICAgICAgICAgICAgZGVzYzogJ+ivt+i+k+WFpeeOi+iAheiLsembhOWQjTonLCAgICAgICAgICAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4geyAgICAgICAgICAgICAgICAgc2V0SXRlbSgn546L6ICF6K+t6Z+zJywgaW5wdXQpOyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTsgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mraPlnKjojrflj5bor63pn7PljIUnOyAgICAgICAgICAgICB9KSwgICAgICAgICB9KTsgICAgICAgICBqc29uLmRhdGEubWFwKHl5ID0+IHsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiB5eS5pZCArICcuICcgKyB5eS5saW5lcywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJywgICAgICAgICAgICAgICAgIHVybDogeXkudm9pY2UsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzczLnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3JvdW5kXzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi6L2m6L29REpcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLovabovb1cXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfovabovb1ESicpOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMTQ7IGkrKykgeyAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnd5YTYuY24vYXBpL3JhbmRfZGo/YXBpS2V5PTViNzZhNGQwYzFlN2QwMTY2MmQ1NWFhYzI3Y2IwZmQ3JykpLmRhdGE7ICAgICAgICAgICAgICAgICBkLnB1c2goeyAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn8J+OtSAnICsganNvbi50aXRsZSwgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMScsICAgICAgICAgICAgICAgICAgICAgdXJsOiBqc29uLnVybCArICcjaXNNdXNpYz10cnVlIycsICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgfSAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzgxLnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3JvdW5kXzRcXFxcXFxcIn1dLFxcXFxcXFwiZm9sZF9zdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjMsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZX0se1xcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5rW35oql5Lmm562+57uEXFxcXFxcXCIsXFxcXFxcXCJtYXJrXFxcXFxcXCI6XFxcXFxcXCLlvIDlhbNcXFxcXFxcIixcXFxcXFxcImxpc3RcXFxcXFxcIjpbe1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwiVGFi6Zi05b2xXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImxpbmVcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5rW35oqlXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwi5rW35oqlXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczpmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfmtbfmiqXkuabnrb7nu4QnLCflvIDlhbMnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvMzgucG5nXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImF2YXRhclxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCJUYWJf6aG65pCc5YWD57SgXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiQGpzOmZhc3RHcmFtbWFyRm9yVGV4dChcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9IzFBQjE2Qj7pobrmkJw65byAPC9mb250PicsJ+mhuuaQnDrlhbMnXVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsn6aG65pCcJ11cXFxcXFxcXFxcXFxcXFwiLG9yZGVyKVxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXIoXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsn6aG65pCcJywn5rW35oqlJ11cXFxcXFxcXFxcXFxcXFwiLG9yZGVyKVxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInRleHRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCJUYWJf5aSa5Yqf6IO9SDXmj5Lku7ZcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJyDigJjigJjigJnigJk8Zm9udCBjb2xvcj0jMUFCMTZCPuaPkuS7tjrlvIA8L2ZvbnQ+Jywn5o+S5Lu2OuWFsyddXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfmj5Lku7YnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczpmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfmj5Lku7YnLCfmtbfmiqUnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwidGV4dF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIlRhYl/osYbnk6PmtbfmiqVcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJyDigJjigJjigJnigJk8Zm9udCBjb2xvcj0jMUFCMTZCPuixhueTozrlvIA8L2ZvbnQ+Jywn6LGG55OjOuWFsyddXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfosYbnk6MnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczpmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfosYbnk6MnLCfmtbfmiqUnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwidGV4dF80XFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIlRhYl/lpKnmsJTmtbfmiqVcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJyDigJjigJjigJnigJk8Zm9udCBjb2xvcj0jMUFCMTZCPuWkqeawlDrlvIA8L2ZvbnQ+Jywn5aSp5rCUOuWFsyddXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyflpKnmsJQnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczpmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyflpKnmsJQnLCfmtbfmiqUnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwidGV4dF80XFxcXFxcXCJ9XSxcXFxcXFxcImZvbGRfc3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjozLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJpY29uX3NtYWxsXzRcXFxcXFxcIixcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWV9LHtcXFxcXFxcIm1hcmtcXFxcXFxcIjpcXFxcXFxcIuS/nemZqeeusVxcXFxcXFwiLFxcXFxcXFwibGlzdFxcXFxcXFwiOlt7XFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImxpbmVcXFxcXFxcIixcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuS6keefpemYtOW9sVxcXFxcXFwiLFxcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowfSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLkupHnn6VcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLkupHnn6VcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiB2YXIgbWltYT1nZXRWYXIoJ21pbWFfMScsJycpO3ZhciBleHA9bmV3IERhdGUoKTsgICAgICAgIFxcXFxcXFxcdFxcXFxcXFxcdGxldCBoPWV4cC5nZXRIb3VycygpO2xldCBtPWV4cC5nZXRNaW51dGVzKCk7bGV0IHM9ZXhwLmdldFNlY29uZHMoKTtsZXQgbWk9aCttO2lmKG1pbWE9PW1pKXtmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfkv53pmannrrEnLCc2J11AWyfkv53pmannrrHlt7LooqvmiZPlvIAnLCg2MC1uZXcgRGF0ZSgpLmdldFNlY29uZHMoKSkrJ+enkuWQjuiHquWKqOS4iumUgSddXFxcXFxcXFxcXFxcXFxcIixvcmRlcil9ZWxzZXskKCcnLCBcXFxcXFxcXFxcXFxcXFwi5LqR55+l5a+G56CBXFxcXFxcXFxcXFxcXFxcIikuY2xpY2tJbnB1dChtaSA9PiB7ICBwdXRWYXIoJ21pbWFfMScsaW5wdXQpOyAgaWYgKGlucHV0IT1taSkgeyAgICAgICAgcmV0dXJuIFxcXFxcXFxcXFxcXFxcXCJ0b2FzdDovL+KblCDlr4bnoIHplJnor69cXFxcXFxcXFxcXFxcXFwiOyAgICB9IGVsc2UgeyAgICAgcmV0dXJuICgocnVsZSwgdG9hc3QpID0+IHsgICAgICAgICAgICBjb25zdCBMb2NhbGZpbGUgPSBIaWtlckhvbWUuZ2V0TG9jYWxmaWxlKCk7ICAgICAgICAgICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcXFxcXFxcXFxcXFxcXFwiQm9va21hcmtzTGlzdFxcXFxcXFxcXFxcXFxcXCIpKTsgICAgICAgICAgICBldmFsKFxcXFxcXFxcXFxcXFxcXCJ2YXIgW2gsdGFiXT1cXFxcXFxcXFxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFxcXFxcXFxcXCI7dmFyIFt0XzEsdF8yXT1cXFxcXFxcXFxcXFxcXFwiICsgKHRvYXN0IHx8IFxcXFxcXFxcXFxcXFxcXCJbJycsJyddXFxcXFxcXFxcXFxcXFxcIikpOyAgICAgICAgICAgIGxldCBpbmRleCA9IGJvb2tNYXJrLmdldEluZGV4KGgpOyAgICAgICAgICAgIGxldCBqc29uID0gYm9va01hcmsuZ2V0KGluZGV4KTsgICAgICAgICAgICBpZiAoanNvbiA9PT0gdW5kZWZpbmVkIHx8IGpzb24ucGF0dGVybiAhPT0gMykgeyAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXFxcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXFxcXFxcXFxcXHU2NzJhXFxcXFxcXFxcXFxcXFxcXHU1YjlhXFxcXFxcXFxcXFxcXFxcXHU0ZTQ5XFxcXFxcXFxcXFxcXFxcXHU4YmU1XFxcXFxcXFxcXFxcXFxcXHU0ZTY2XFxcXFxcXFxcXFxcXFxcXHU3YjdlXFxcXFxcXFxcXFxcXFxcXHU3ZWM0XFxcXFxcXFxcXFxcXFxcIjsgICAgICAgICAgICB9ICAgICAgICAgICAgaWYgKGpzb24uZm9sZF9zdGF0dXMpIHsgICAgICAgICAgICAgICAgdmFyIHRvYXN0ID0gdF8yIHx8IFxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFxcdTVkZjJcXFxcXFxcXFxcXFxcXFxcdTYyOThcXFxcXFxcXFxcXFxcXFxcdTUzZTBcXFxcXFxcXFxcXFxcXFwiOyAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIHZhciB0b2FzdCA9IHRfMSB8fCBcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcXHU1ZGYyXFxcXFxcXFxcXFxcXFxcXHU1YzU1XFxcXFxcXFxcXFxcXFxcXHU1ZjAwXFxcXFxcXFxcXFxcXFxcIjsgICAgICAgICAgICB9ICAgICAgICAgICAganNvbi5mb2xkX3N0YXR1cyA9ICFqc29uLmZvbGRfc3RhdHVzOyAgICAgICAgICAgIGJvb2tNYXJrLm1vZGlmeShpbmRleCwganNvbik7ICAgICAgICAgICAgbGV0IGxpc3QgPSBib29rTWFyay5nZXRMaXN0KCk7ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgICAgIGxldCBpdGVtID0gbGlzdFtpXTsgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGF0dGVybiA9PT0gMyAmJiBpdGVtLm5hbWUgIT09IGggJiYgaXRlbS5tYXJrICE9PSBcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcIiAmJiBpdGVtLm1hcmsgPT09IHRhYikgeyAgICAgICAgICAgICAgICAgICAgaXRlbS5mb2xkX3N0YXR1cyA9IGpzb24uZm9sZF9zdGF0dXMgPyBmYWxzZSA6IGZhbHNlOyAgICAgICAgICAgICAgICAgICAgYm9va01hcmsubW9kaWZ5KGksIGl0ZW0pOyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgfSAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICBpZiAodG9hc3QgPT09IFxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXFxcXFxcXFxcIikgeyAgICAgICAgICAgICAgICByZXR1cm4gdG9hc3Q7ICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFxcXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcXFxcXFxcXCIgKyB0b2FzdDsgICAgICAgICAgICB9ICAgICAgICB9KShcXFxcXFxcXFxcXFxcXFwiWyfkv53pmannrrEnLCc2J11cXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwiWyflt7LmiZPlvIDkv53pmannrrEnLCflhbPpl63kv53pmannrrEnXVxcXFxcXFxcXFxcXFxcXCIpOyAgfX0sbWkpfVxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiaGlrZXI6Ly9maWxlcy9KbS9sbS9tb3JlLzY1LnBuZ1xcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJhdmF0YXJcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5qOu5p6XXFxcXFxcXCIsXFxcXFxcXCJjb2RlXFxcXFxcXCI6XFxcXFxcXCJ2YXIgc2wgPSBbXTtcXFxcXFxcXG5zbC5wdXNoKHtcXFxcXFxcXG4gICAgdGl0bGU6ICfmo67mnpcnLFxcXFxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfNCcsXFxcXFxcXFxuICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7XFxcXFxcXFxuICAgICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICB2YXIgZCA9IFtdO1xcXFxcXFxcbiAgICAgICAgICAgIHZhciB1cmwgPSBnZXRJdGVtKCfmo67mnpcnLCAnaHR0cHM6Ly9ydWFuamlhbmt1LmxhbnpvdWguY29tLy9zLy80NTcxMDQnKTtcXFxcXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IHVybCxcXFxcXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFxcXFxcXFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6IFxcXFxcXFxcXFxcXFxcXCJmbG9hdCYmMTAwJVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxuICAgICAgICAgICAgICAgIGV4dHJhOiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBmbG9hdFZpZGVvOiB0cnVlLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgY2FuQmFjazogdHJ1ZSwgICAgICAgICAgICAgICAgICAgXFxcXFxcXFxuICAgICAgICAgICAgICAgIH1cXFxcXFxcXG4gICAgICAgICAgICB9KTtcXFxcXFxcXG4gICAgICAgICAgICBzZXRSZXN1bHQoZCk7XFxcXFxcXFxuICAgICAgICB9KVxcXFxcXFxcbiAgICB9KSxcXFxcXFxcXG4gICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgIGxvbmdDbGljazogW3tcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+Wwj+W4iOWmuScsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCfmo67mnpcnLCAnaHR0cHM6Ly96dXRoaWEueHNtNC5tYWtldXAvY24vaG9tZS93ZWIvaW5kZXgucGhwJyk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxcXFxcbiAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfova/ku7bln7rlnLAnLFxcXFxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgn5qOu5p6XJywgJ2h0dHBzOi8vcnVhbmppYW5rdS5sYW56b3VoLmNvbS8vcy8vNDU3MTA0Jyk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxcXFxcbiAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfliJrliJrlvbHop4YnLFxcXFxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgn5qOu5p6XJywgJ2h0dHA6Ly9oaGhoaGhoaGhoaC5jbjo5OS8nKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXFxcXFxuICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+aXoOaegeejgemTvicsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCfmo67mnpcnLCAnaHR0cHM6Ly8wY2lsaS5jb20vJyk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxcXFxcbiAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICB9XSxcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn0pO1xcXFxcXFxcbnNsXFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIue+juWls+eglOeptuekvlxcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIue+juekvlxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlIyNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4geyAgICAgICAgIHNldFBhZ2VUaXRsZSgn576O5aWz56CU56m256S+Jyk7ICAgICAgICAgdmFyIGQgPSBbXTsgICAgICAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXFxcXFxcXFxcImh0dHA6Ly9qaXVsaS54aWFvYXBpLmNuL2kvaW1nL21ueWpzLnBocFxcXFxcXFxcXFxcXFxcXCIpKTsgICAgICAgIGh0bWwuaW1nLm1hcChtcyA9PiB7ZC5wdXNoKHsgICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9mdWxsJywgICAgICAgICAgICAgcGljOiBtcywgICAgICAgICAgICAgdXJsOiBtcywgICAgICAgICB9KTt9KTsgICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi576O5aWz55+t6KeG6aKR5YWo5bGPXFxcXFxcXCIsXFxcXFxcXCJjb2RlXFxcXFxcXCI6XFxcXFxcXCJ2YXIgZCA9IFtdO1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiAn5p6B5a6iJyxcXFxcXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcXFxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZ2FtZVRoZW1lIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICB2YXIgZCA9IFtdO1xcXFxcXFxcbiAgICAgICAgICAgIHNldFBhZ2VUaXRsZSgnJyk7XFxcXFxcXFxuICAgICAgICAgICAgdmFyIOmTvuaOpSA9IGdldEl0ZW0oJ2h0bWwnLCAnaHR0cHM6Ly90Lnh4Z2Vlay5jb20vdG9vbHMvbW12b2QvbS5waHAnKTtcXFxcXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJycsXFxcXFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICdmbG9hdCYmMTAwJScsXFxcXFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICB1cmw6IOmTvuaOpSxcXFxcXFxcXG4gICAgICAgICAgICAgICAgZXh0cmE6IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGNhbkJhY2s6IHRydWUsXFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBhdXRvUGxheTogdHJ1ZSxcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIGJsb2NrUnVsZXM6IFsnYmFpZHUuKi5wbmcnLCAnLmpwZyddLFxcXFxcXFxcbiAgICAgICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgfSk7XFxcXFxcXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcXFxcXFxcbiAgICAgICAgfSlcXFxcXFxcXG4gICAgfSksXFxcXFxcXFxuICAgIGV4dHJhOiB7XFxcXFxcXFxuICAgICAgICBsb25nQ2xpY2s6IFt7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfmnoHlrqLnvo7lpbMnLFxcXFxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnaHRtbCcsICdodHRwczovL3QueHhnZWVrLmNvbS90b29scy9tbXZvZC9tLnBocCcpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInXFxcXFxcXFxuICAgICAgICAgICAgfSlcXFxcXFxcXG5cXFxcXFxcXG4gICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+maj+acuue+juWlsycsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdodG1sJywgJ2h0dHBzOi8vYXBpLmNubWNvbS5jb20vZHNwLycpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInXFxcXFxcXFxuICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+i+k+WFpeabtOaNoicsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+aDs+imgeabtOaNoueahOefreinhumikeWcsOWdgCcpLmlucHV0KCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ2h0bWwnLCBpbnB1dCk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5bey5pu05o2iJ1xcXFxcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICB9LCB7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfmgaLlpI3pu5jorqQnLFxcXFxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgY2xlYXJJdGVtKCdodG1sJyk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcXFxcXFxcbiAgICAgICAgICAgIH0pXFxcXFxcXFxuICAgICAgICB9XSxcXFxcXFxcXG4gICAgfVxcXFxcXFxcbn0pO1xcXFxcXFxcbmRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjoyLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi576O5aWz5pe26KOF56eAXFxcXFxcXCIsXFxcXFxcXCJjb2RlXFxcXFxcXCI6XFxcXFxcXCJ2YXIgZCA9IFtdO1xcXFxcXFxcbmQucHVzaCh7XFxcXFxcXFxuICAgIHRpdGxlOiAn5pe26KOFJyxcXFxcXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzQnLFxcXFxcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlIyNnYW1lVGhlbWUjI25vSGlzdG9yeSMjbm9SZWNvcmRIaXN0b3J5IycpLnJ1bGUoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgIHZhciBkID0gW107XFxcXFxcXFxuICAgICAgICAgICAgc2V0UGFnZVRpdGxlKCcnKTtcXFxcXFxcXG4gICAgICAgICAgICB2YXIgaW1nID0gJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbW9yZS8xNTQucG5nJztcXFxcXFxcXG4gICAgICAgICAgICB2YXIg6ZO+5o6lID0gZ2V0SXRlbSgnZ2lybCcsICdodHRwczovL3R1Y2RuLndwb24uY24vYXBpLWdpcmwvaW5kZXgucGhwJyk7XFxcXFxcXFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gOTg7IGkrKykge1xcXFxcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfnvo7lpbPml7boo4Xnp4AnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAndmlkZW86Ly8nICsg6ZO+5o6lLFxcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcGljX3VybDogaW1nLFxcXFxcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcXFxcXG4gICAgICAgICAgICB9XFxcXFxcXFxuICAgICAgICAgICAgc2V0UmVzdWx0KGQpO1xcXFxcXFxcbiAgICAgICAgfSlcXFxcXFxcXG4gICAgfSksXFxcXFxcXFxuICAgIGV4dHJhOiB7XFxcXFxcXFxuICAgICAgICBsb25nQ2xpY2s6IFt7XFxcXFxcXFxuICAgICAgICAgICAgdGl0bGU6ICfpm4XokIznvo7lpbMnLFxcXFxcXFxcbiAgICAgICAgICAgIGpzOiAkLnRvU3RyaW5nKCgpID0+IHtcXFxcXFxcXG4gICAgICAgICAgICAgICAgc2V0SXRlbSgnZ2lybCcsICdodHRwczovL2FwaS5vb29tbi5jb20vYXBpL3hqaicpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInXFxcXFxcXFxuICAgICAgICAgICAgfSlcXFxcXFxcXG5cXFxcXFxcXG4gICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+S8mOi0qOe+juWls+a6kCcsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICBzZXRJdGVtKCdnaXJsJywgJ2h0dHBzOi8vd3d3LmN1bnNoYW8uY29tLzY2NjY2Ni9hcGkvd2ViLnBocCcpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7LliIfmjaInXFxcXFxcXFxuICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgIH0sIHtcXFxcXFxcXG4gICAgICAgICAgICB0aXRsZTogJ+i+k+WFpeabtOaNoicsXFxcXFxcXFxuICAgICAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgnJywgJ+aDs+imgeabtOaNoueahEFQSeinhumikeaOpeWPoy5QSFAnKS5pbnB1dCgoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKCdnaXJsJywgaW5wdXQpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suabtOaNoidcXFxcXFxcXG4gICAgICAgICAgICAgICAgfSlcXFxcXFxcXG4gICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgfSwge1xcXFxcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn5oGi5aSN6buY6K6kJyxcXFxcXFxcXG4gICAgICAgICAgICBqczogJC50b1N0cmluZygoKSA9PiB7XFxcXFxcXFxuICAgICAgICAgICAgICAgIGNsZWFySXRlbSgnZ2lybCcpO1xcXFxcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXFxuICAgICAgICAgICAgICAgIHJldHVybiAnaGlrZXI6Ly9lbXB0eSdcXFxcXFxcXG4gICAgICAgICAgICB9KVxcXFxcXFxcbiAgICAgICAgfV0sXFxcXFxcXFxuICAgIH1cXFxcXFxcXG59KTtcXFxcXFxcXG5kXFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuS8mOi0qOaAp+aEn+e+juWls1xcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIuaAp+aEn1xcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgcmV0dXJuICQoJ2hpa2VyOi8vZW1wdHkjZnlwYWdlIyNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJ+aAp+aEn+Wwj+WnkOWnkCcpOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPD0gMjk7IGkrKykgeyAgICAgICAgICAgICB2YXIgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXFxcXFxcXFxcImh0dHBzOi8vYXBpLnFxc3V1LmNuL2FwaS9kbS14amo/dHlwZT1qc29uJmFwaUtleT01NzY2NDE5ZjQ1ODU1ZGNiZWY2NDdhZTZkNDJmODBlOVxcXFxcXFxcXFxcXFxcXCIpKS52aWRlbzsgICAgICAgICAgICAgZC5wdXNoKHsgICAgICAgICAgICAgICAgIHRpdGxlOiAn5oCn5oSf5bCP5aeQ5aeQJywgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJywgICAgICAgICAgICAgICAgIHBpYzogJ2hpa2VyOi8vZmlsZXMvSm0vbG0vbW92aWUvOS5zdmcnLCAgICAgICAgICAgICAgICB1cmw6IGh0bWwsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0gICAgICAgICBzZXRSZXN1bHQoZCk7ICAgICB9KSB9KTtcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi6ZuF6JCM57O75YiXXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwi6ZuF6JCMXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNpbW1lcnNpdmVUaGVtZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfpm4XokIzns7vliJcnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIHZhciBkeSA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXFxcXFxcXFxcImh0dHBzOi8vdi5hcGkuYWExLmNuL2FwaS9hcGktZ2lybC0xMS0wMi9pbmRleC5waHA/dHlwZT1qc29uXFxcXFxcXFxcXFxcXFxcIikpLm1wNDsgICAgICAgICB2YXIgZHkxID0gKCdodHRwczonICsgZHkpOyAgICAgICAgIHZhciB4ZyA9IEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXFxcXFxcXFxcImh0dHBzOi8vYXBpLnFxc3V1LmNuL2FwaS9kbS14amo/dHlwZT1qc29uJmFwaUtleT01NzY2NDE5ZjQ1ODU1ZGNiZWY2NDdhZTZkNDJmODBlOVxcXFxcXFxcXFxcXFxcXCIpKS52aWRlbzsgICAgICAgICB2YXIgaHRtbCA9IGdldEl0ZW0oJ+mTvuaOpScsICdkeScpOyAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgIGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnLCAgICAgICAgICAgICBkZXNjOiAnNjQwJiZmbG9hdCcsICAgICAgICAgICAgIHVybDogaHRtbCA9PSAnZHknID8gZHkxIDogeGcsICAgICAgICAgICAgIGV4dHJhOiB7ICAgICAgICAgICAgICAgICBjYW5CYWNrOiB0cnVlLCAgICAgICAgICAgICAgICAgYXV0b1BsYXk6IHRydWUsICAgICAgICAgICAgIH0gICAgICAgICB9LCB7ICAgICAgICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJywgICAgICAgICB9LCB7ICAgICAgICAgICAgIHRpdGxlOiAn5o2i5LiA5LiqJywgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInLCAgICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKCkgPT4geyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICB9KSAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICfpmo/mnLrnvo7lpbMnLCAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICBzZXRJdGVtKCfpk77mjqUnLCAnJyk7ICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7ICAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknICAgICAgICAgICAgIH0pICAgICAgICAgfSwgeyAgICAgICAgICAgICB0aXRsZTogJ+aKlumfs+e+juWlsycsICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJywgICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgICAgICAgICAgICAgIHNldEl0ZW0oJ+mTvuaOpScsICdkeScpOyAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpOyAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICB9KSAgICAgICAgIH0sIHsgICAgICAgICAgICAgdGl0bGU6ICflj6/niLHlprnlprknLCAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMicsICAgICAgICAgICAgIHVybDogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICAgICAgICAgICAgICB2YXIgaSA9ICdodHRwczovL2FwaS5vb29tbi5jb20vYXBpL3hqaic7ICAgICAgICAgICAgICAgICByZWZyZXNoWDVXZWJWaWV3KGkpOyAgICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5JyAgICAgICAgICAgICB9KSAgICAgICAgIH0pOyAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInRleHRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLkvJjotKjlsI/lp5Dlp5BcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLkvJjotKhcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5IyNmeXBhZ2Ujbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfkvJjotKjlsI/lp5Dlp5AnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDk5OyBpKyspIHsgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChcXFxcXFxcXFxcXFxcXFwiaHR0cDovLzExOS45MS4xOTYuMjQ3Ojc3NzgveGpqL2dldDEucGhwXFxcXFxcXFxcXFxcXFxcIik7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogJ+S8mOi0qOWwj+WnkOWnkCcsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgICAgICBwaWM6ICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vdmllLzIyLnN2ZycsICAgICAgICAgICAgICAgIHVybDogaHRtbCwgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInRleHRfNFxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLkvJjotKjpmo/mnLrnvo7lpbNcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLnvo7lpbNcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCfkvJjotKjlsI/lp5Dlp5AnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDk5OyBpKyspIHsgICAgICAgICAgICAgdmFyIGh0bWwgPSBmZXRjaChcXFxcXFxcXFxcXFxcXFwiaHR0cHM6Ly9hcGkuY25tY29tLmNvbS9kc3AvZ2V0L2dldDEucGhwXFxcXFxcXFxcXFxcXFxcIik7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZTogJ+S8mOi0qOWwj+WnkOWnkCcsICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgICAgICBwaWM6ICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vdmllLzIyLnN2ZycsICAgICAgICAgICAgICAgIHVybDogaHRtbCwgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInRleHRfNFxcXFxcXFwifV0sXFxcXFxcXCJmb2xkX3N0YXR1c1xcXFxcXFwiOmZhbHNlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjMsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLkv53pmannrrFcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiaWNvbl9zbWFsbF80XFxcXFxcXCIsXFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlfSx7XFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLkuLvpopjlvIDlhbNcXFxcXFxcIixcXFxcXFxcIm1hcmtcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwibGlzdFxcXFxcXFwiOlt7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLlvIDlhbPpmLTlvbFcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwibGluZVxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLnqbrnmb1cXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwiYmlnX2JsYW5rX2Jsb2NrXFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIua1t+aKpV/lvIDlhbNcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJyDigJjigJjigJnigJk8Zm9udCBjb2xvcj0jMUFCMTZCPua1t+aKpTwvZm9udD4nLCfmtbfmiqUnXVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsn5rW35oql5Lmm562+57uEJ11cXFxcXFxcXFxcXFxcXFwiLG9yZGVyKVxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXIoXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsn5rW35oql5Lmm562+57uEJywn5byA5YWzJ11cXFxcXFxcXFxcXFxcXFwiLG9yZGVyKVxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi6aG26YOoX1RhYlxcXFxcXFwiLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIkBqczpmYXN0R3JhbW1hckZvclRleHQoXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsnIOKAmOKAmOKAmeKAmTxmb250IGNvbG9yPSMxQUIxNkI+6aG26YOoPC9mb250PicsJ+mhtumDqCddXFxcXFxcXFxcXFxcXFxcIixcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfpobbpg6gnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczpmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfpobbpg6gnLCfpobbpg6gnXVxcXFxcXFxcXFxcXFxcXCIsb3JkZXIpXFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLlhpzljoZf5byA5YWzXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiQGpzOmZhc3RHcmFtbWFyRm9yVGV4dChcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWycg4oCY4oCY4oCZ4oCZPGZvbnQgY29sb3I9IzFBQjE2Qj7lhpzljoY8L2ZvbnQ+Jywn5Yac5Y6GJ11cXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJ+WGnOWOhiddXFxcXFxcXFxcXFxcXFxcIixvcmRlcilcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOmZhc3RHcmFtbWFyKFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJ+WGnOWOhicsJ+W8gOWFsyddXFxcXFxcXFxcXFxcXFxcIixvcmRlcilcXFxcXFxcIixcXFxcXFxcImljb25cXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiZGVzY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ0eXBlXFxcXFxcXCI6XFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJ9LHtcXFxcXFxcInN0YXR1c1xcXFxcXFwiOnRydWUsXFxcXFxcXCJwYXR0ZXJuXFxcXFxcXCI6MCxcXFxcXFxcIm5hbWVcXFxcXFxcIjpcXFxcXFxcIuWbvuagh1/lvIDlhbNcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXJGb3JUZXh0KFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJyDigJjigJjigJnigJk8Zm9udCBjb2xvcj0jMUFCMTZCPuWbvuaghzwvZm9udD4nLCflm77moIcnXVxcXFxcXFxcXFxcXFxcXCIsXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsn5Zu+5qCH6YOo5YiGJ11cXFxcXFxcXFxcXFxcXFwiLG9yZGVyKVxcXFxcXFwiLFxcXFxcXFwidXJsXFxcXFxcXCI6XFxcXFxcXCJAanM6ZmFzdEdyYW1tYXIoXFxcXFxcXFxcXFxcXFxcIjxUYWI+QFsn5Zu+5qCH6YOo5YiGJywn5Zu+5qCHJ11cXFxcXFxcXFxcXFxcXFwiLG9yZGVyKVxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi5L+d6Zmp566x5byA5YWzXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiQGpzOmZhc3RHcmFtbWFyRm9yVGV4dChcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWycg5LqR55+lJywn5LqR55+lJ11cXFxcXFxcXFxcXFxcXFwiLFxcXFxcXFxcXFxcXFxcXCI8VGFiPkBbJ+S/nemZqeeusSddXFxcXFxcXFxcXFxcXFxcIixvcmRlcilcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiB2YXIgbWltYT1nZXRWYXIoJ21pbWFfMScsJycpO3ZhciBleHA9bmV3IERhdGUoKTsgICAgICAgIFxcXFxcXFxcdFxcXFxcXFxcdGxldCBoPWV4cC5nZXRIb3VycygpO2xldCBtPWV4cC5nZXRNaW51dGVzKCk7bGV0IHM9ZXhwLmdldFNlY29uZHMoKTtsZXQgbWk9aCttO2lmKG1pbWE9PW1pKXtmYXN0R3JhbW1hcihcXFxcXFxcXFxcXFxcXFwiPFRhYj5AWyfkv53pmannrrEnLCc2J11AWyfkv53pmannrrHlt7LooqvmiZPlvIAnLCg2MC1uZXcgRGF0ZSgpLmdldFNlY29uZHMoKSkrJ+enkuWQjuiHquWKqOS4iumUgSddXFxcXFxcXFxcXFxcXFxcIixvcmRlcil9ZWxzZXskKCcnLCBcXFxcXFxcXFxcXFxcXFwi5LqR55+l5a+G56CBXFxcXFxcXFxcXFxcXFxcIikuY2xpY2tJbnB1dChtaSA9PiB7ICBwdXRWYXIoJ21pbWFfMScsaW5wdXQpOyAgaWYgKGlucHV0IT1taSkgeyAgICAgICAgcmV0dXJuIFxcXFxcXFxcXFxcXFxcXCJ0b2FzdDovL+KblCDlr4bnoIHplJnor69cXFxcXFxcXFxcXFxcXFwiOyAgICB9IGVsc2UgeyAgICAgcmV0dXJuICgocnVsZSwgdG9hc3QpID0+IHsgICAgICAgICAgICBjb25zdCBMb2NhbGZpbGUgPSBIaWtlckhvbWUuZ2V0TG9jYWxmaWxlKCk7ICAgICAgICAgICAgY29uc3QgYm9va01hcmsgPSBIaWtlckhvbWUuZ2V0Qm9va21hcmtzTGlzdChMb2NhbGZpbGUuZ2V0SXRlbShcXFxcXFxcXFxcXFxcXFwiQm9va21hcmtzTGlzdFxcXFxcXFxcXFxcXFxcXCIpKTsgICAgICAgICAgICBldmFsKFxcXFxcXFxcXFxcXFxcXCJ2YXIgW2gsdGFiXT1cXFxcXFxcXFxcXFxcXFwiICsgcnVsZSArIFxcXFxcXFxcXFxcXFxcXCI7dmFyIFt0XzEsdF8yXT1cXFxcXFxcXFxcXFxcXFwiICsgKHRvYXN0IHx8IFxcXFxcXFxcXFxcXFxcXCJbJycsJyddXFxcXFxcXFxcXFxcXFxcIikpOyAgICAgICAgICAgIGxldCBpbmRleCA9IGJvb2tNYXJrLmdldEluZGV4KGgpOyAgICAgICAgICAgIGxldCBqc29uID0gYm9va01hcmsuZ2V0KGluZGV4KTsgICAgICAgICAgICBpZiAoanNvbiA9PT0gdW5kZWZpbmVkIHx8IGpzb24ucGF0dGVybiAhPT0gMykgeyAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXFxcXFxcXFxcInRvYXN0Oi8vXFxcXFxcXFxcXFxcXFxcXHU2NzJhXFxcXFxcXFxcXFxcXFxcXHU1YjlhXFxcXFxcXFxcXFxcXFxcXHU0ZTQ5XFxcXFxcXFxcXFxcXFxcXHU4YmU1XFxcXFxcXFxcXFxcXFxcXHU0ZTY2XFxcXFxcXFxcXFxcXFxcXHU3YjdlXFxcXFxcXFxcXFxcXFxcXHU3ZWM0XFxcXFxcXFxcXFxcXFxcIjsgICAgICAgICAgICB9ICAgICAgICAgICAgaWYgKGpzb24uZm9sZF9zdGF0dXMpIHsgICAgICAgICAgICAgICAgdmFyIHRvYXN0ID0gdF8yIHx8IFxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFxcdTVkZjJcXFxcXFxcXFxcXFxcXFxcdTYyOThcXFxcXFxcXFxcXFxcXFxcdTUzZTBcXFxcXFxcXFxcXFxcXFwiOyAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIHZhciB0b2FzdCA9IHRfMSB8fCBcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcXHU1ZGYyXFxcXFxcXFxcXFxcXFxcXHU1YzU1XFxcXFxcXFxcXFxcXFxcXHU1ZjAwXFxcXFxcXFxcXFxcXFxcIjsgICAgICAgICAgICB9ICAgICAgICAgICAganNvbi5mb2xkX3N0YXR1cyA9ICFqc29uLmZvbGRfc3RhdHVzOyAgICAgICAgICAgIGJvb2tNYXJrLm1vZGlmeShpbmRleCwganNvbik7ICAgICAgICAgICAgbGV0IGxpc3QgPSBib29rTWFyay5nZXRMaXN0KCk7ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgICAgIGxldCBpdGVtID0gbGlzdFtpXTsgICAgICAgICAgICAgICAgaWYgKGl0ZW0ucGF0dGVybiA9PT0gMyAmJiBpdGVtLm5hbWUgIT09IGggJiYgaXRlbS5tYXJrICE9PSBcXFxcXFxcXFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcIiAmJiBpdGVtLm1hcmsgPT09IHRhYikgeyAgICAgICAgICAgICAgICAgICAgaXRlbS5mb2xkX3N0YXR1cyA9IGpzb24uZm9sZF9zdGF0dXMgPyBmYWxzZSA6IGZhbHNlOyAgICAgICAgICAgICAgICAgICAgYm9va01hcmsubW9kaWZ5KGksIGl0ZW0pOyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgfSAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTsgICAgICAgICAgICBpZiAodG9hc3QgPT09IFxcXFxcXFxcXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXFxcXFxcXFxcIikgeyAgICAgICAgICAgICAgICByZXR1cm4gdG9hc3Q7ICAgICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFxcXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcXFxcXFxcXCIgKyB0b2FzdDsgICAgICAgICAgICB9ICAgICAgICB9KShcXFxcXFxcXFxcXFxcXFwiWyfkv53pmannrrEnLCc2J11cXFxcXFxcXFxcXFxcXFwiLCBcXFxcXFxcXFxcXFxcXFwiWyflt7LmiZPlvIDkv53pmannrrEnLCflhbPpl63kv53pmannrrEnXVxcXFxcXFxcXFxcXFxcXCIpOyAgfX0sbWkpfVxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn0se1xcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZSxcXFxcXFxcInBhdHRlcm5cXFxcXFxcIjowLFxcXFxcXFwibmFtZVxcXFxcXFwiOlxcXFxcXFwi572R56uZXFxcXFxcXCIsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwi572R56uZXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIkBqczogJCgnI25vTG9hZGluZyMnKS5sYXp5UnVsZSgoKSA9PiB7ICAgICByZXR1cm4gJCgnaGlrZXI6Ly9lbXB0eSNub0hpc3RvcnkjI25vUmVjb3JkSGlzdG9yeSMnKS5ydWxlKCgpID0+IHsgICAgICAgICBzZXRQYWdlVGl0bGUoJ+S4gOS6m+e9keermScpOyAgICAgICAgIHZhciB0aXRsZXMgPSBbJ+eZveiPnOWklumTvue9keebmEBAaHR0cDovL3dwLmFueHdsLmNuJywgJ+aUtuW9lei9r+S7tuermUBAaHR0cDovL2FwcC4xMDI2OTkuY29tJywgJ+acn+WIiuadguW/l0BAaHR0cDovL3Fpa2FuLmxpZnZlcy5jb20nLCAn5LiA5Liq5Zu+5paHQEBodHRwOi8vbS53dWZhemh1Y2UuY29tL29uZScsICdNeUZyZWVNcDNAQGh0dHBzOi8vdG9vbHMubGl1bWluZ3llLmNuL211c2ljLyMvJywgJ+i9r+S7tuWIhuS6q0BAaHR0cHM6Ly90ZXlvbmRzLmxhbnpvdXcuY29tL2IwMmpiczVyaT93MT8yJywgJ+maj+acuue+juWls+WbvkBAaHR0cDovL21uOS5pY3UvaW1nMS5waHAnLCAn576O5aWz6KeG6aKR6ZuGQEBodHRwOi8vbW45LmljdS8nLCAn5pel5Y6G572RQEBodHRwczovL20ucmlsaS5jb20uY24vJywgJ+eUu+adv0BAaHR0cDovL3Rvb2wubWtibG9nLmNuL3doaXRlYm9hcmQvJywgJ+mfs+mikee8lui+kUBAaHR0cDovL3Rvb2wubWtibG9nLmNuL2F1ZGlvbWFzcy8nLCAn5pSv5LuY5a6d5Yiw6LSm55Sf5oiQQEBodHRwczovL3Rvb2x3YS5jb20vcmVjZWlwdC8jJywgJ+W3peWFt+ibmUBAaHR0cHM6Ly90b29sd2EuY29tLycsICfmlL7mnb7nmb3lmarpn7NAQGh0dHBzOi8vdG9vbHdhLmNvbS9yZWxheC8nLCBdOyAgICAgICAgIHZhciB0ID0gdGl0bGVzOyAgICAgICAgIHZhciBkID0gW107ICAgICAgICAgdmFyIGltZyA9ICdoaWtlcjovL2ZpbGVzL0ptL2xtL21vcmUvMTQxLnBuZyc7ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0Lmxlbmd0aDsgaSsrKSB7ICAgICAgICAgICAgIHZhciBrID0gdFtpXS5zcGxpdCgvXFxcXFxcXFxcXFxcXFxcXHMqQEBcXFxcXFxcXFxcXFxcXFxccyovKTsgICAgICAgICAgICAgaWYgKGsubGVuZ3RoIDwgMikgY29udGludWU7ICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICB0aXRsZToga1swXSwgICAgICAgICAgICAgICAgIHVybDogJ3g1Oi8vJyArIGtbMV0sICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCcsICAgICAgICAgICAgICAgICBwaWNfdXJsOiBpbWcsICAgICAgICAgICAgIH0pOyAgICAgICAgIH0gICAgICAgICBzZXRIb21lUmVzdWx0KGQpOyAgICAgfSkgfSk7XFxcXFxcXCIsXFxcXFxcXCJpY29uXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcImRlc2NcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwidHlwZVxcXFxcXFwiOlxcXFxcXFwic2Nyb2xsX2J1dHRvblxcXFxcXFwifSx7XFxcXFxcXCJzdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjAsXFxcXFxcXCJuYW1lXFxcXFxcXCI6XFxcXFxcXCLlv6vmiYvnn63op4bpopFcXFxcXFxcIixcXFxcXFxcInRpdGxlXFxcXFxcXCI6XFxcXFxcXCLlv6vmiYtcXFxcXFxcIixcXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiQGpzOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCgpID0+IHsgICAgIHJldHVybiAkKCdoaWtlcjovL2VtcHR5I2Z5cGFnZSMjbm9IaXN0b3J5IyNub1JlY29yZEhpc3RvcnkjJykucnVsZSgoKSA9PiB7ICAgICAgICAgc2V0UGFnZVRpdGxlKCflv6vmiYvnn63op4bpopEnKTsgICAgICAgICB2YXIgZCA9IFtdOyAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDw9IDE7IGkrKykgeyAgICAgICAgICAgICB2YXIganNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnd5YTYuY24vYXBpL2t1YWlzaG91P2FwaUtleT04MGY3ZDE0OWM5MzU1Yzg2ZDY5MjIzNGI5NzYwM2RlNycpKTsgICAgICAgICAgICAganNvbi5kYXRhLm1hcChkYXRhID0+IHsgICAgICAgICAgICAgICAgIGQucHVzaCh7ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGRhdGEuY2FwdGlvbiwgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnLCAgICAgICAgICAgICAgICAgICAgIHBpY191cmw6IGRhdGEuY292ZXIsICAgICAgICAgICAgICAgICAgICAgZGVzYzogZGF0YS5uYW1lLCAgICAgICAgICAgICAgICAgICAgIHVybDogZGF0YS51cmwsICAgICAgICAgICAgICAgICB9KTsgICAgICAgICAgICAgfSk7ICAgICAgICAgfSAgICAgICAgIHNldFJlc3VsdChkKTsgICAgIH0pIH0pO1xcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn1dLFxcXFxcXFwiZm9sZF9zdGF0dXNcXFxcXFxcIjp0cnVlLFxcXFxcXFwicGF0dGVyblxcXFxcXFwiOjMsXFxcXFxcXCJ0aXRsZVxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJ1cmxcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxcXFwiaWNvblxcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJkZXNjXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIixcXFxcXFxcInR5cGVcXFxcXFxcIjpcXFxcXFxcImljb25fc21hbGxfNFxcXFxcXFwiLFxcXFxcXFwic3RhdHVzXFxcXFxcXCI6dHJ1ZX1dXFxcIixcXFwiU2V0dGluZ0NvbmZpZ1xcXCI6XFxcIntcXFxcXFxcIm15WWlZYW5cXFxcXFxcIjpcXFxcXFxcIuS6uueUn+W+l+aEj+mhu+Wwveasou+8jOiOq+S9v+mHkeaoveepuuWvueaciOOAgnx86I6r5oSB5YmN6Lev5peg55+l5bex77yM5aSp5LiL6LCB5Lq65LiN6K+G5ZCb44CCXFxcXFxcXCIsXFxcXFxcXCJ0b3BQaWNcXFxcXFxcIjpcXFxcXFxcImhpa2VyOi8vaW1hZ2VzL2xvZ29cXFxcXFxcIixcXFxcXFxcImF2YXRhclBpY1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCIsXFxcXFxcXCJoaXRva290b1N3aXRjaFxcXFxcXFwiOnRydWUsXFxcXFxcXCJsb2dvVHlwZVxcXFxcXFwiOlxcXFxcXFwicGljXzFfY2FyZFxcXFxcXFwiLFxcXFxcXFwibWF4SG9tZUNvdW50XFxcXFxcXCI6MTIsXFxcXFxcXCJteVZhcmlhYmxlc1xcXFxcXFwiOlxcXFxcXFwiXFxcXFxcXCJ9XFxcIn0pXCIsXCJncm91cFwiOlwi4pGg5o6o6I2QXCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIn0iLCJ0aXRsZSI6IuS4u+mhteiuvue9ri3lr7zlhaUt5Li76aKY6aKE6KeIIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement