Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥这个男人来自地球@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJqczooXFxuZnVuY3Rpb24gKGFwcHR5cGUpIHtcXG4gICAgbGV0IGNocCA9IFtdO1xcbiAgICB0cnkge1xcbiAgICAgICAgbGV0IGh0bWwgPSB7fSwgY29udHMgPSBbXTtcXG4gICAgICAgIGlmICgvVFYvLnRlc3QoYXBwdHlwZSkpIHtcXG4gICAgICAgICAgICBodG1sID0gSlNPTi5wYXJzZShmZXRjaChNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV0pKTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaHRtbCA9IEpTT04ucGFyc2UoZmV0Y2goTVlfVVJMLnNwbGl0KFxcXCIjI1xcXCIpWzFdLCB7aGVhZGVyczoge1xcXCJVc2VyLUFnZW50XFxcIjogXFxcIkRhcnQvMi4xMyAoZGFydDppbylcXFwifX0pKTtcXG4gICAgICAgIH1cXG4gICAgICAgIGlmIChodG1sLnZpZGVvbGlzdCkge1xcbiAgICAgICAgICAgIGNvbnRzID0gT2JqZWN0LmtleXMoaHRtbC52aWRlb2xpc3QpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXG4gICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcjtcXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF9wbGF5X3VybC5zcGxpdChcXFwiJCQkXFxcIik7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF9pbmZvICYmIGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfbGlzdDtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KFxcXCIkJCRcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGxldCBsaXN0ID0gW107XFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvbnRzLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgaWYgKGh0bWwudmlkZW9saXN0KSB7XFxuICAgICAgICAgICAgICAgIGxpc3QgPSBodG1sLnZpZGVvbGlzdFtjb250c1tpXV07XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGNvbnRzW2ldLnVybHMpIHtcXG4gICAgICAgICAgICAgICAgICAgIGxpc3QgPSBjb250c1tpXS51cmxzO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRzW2ldLnVybCkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3QgPSBjb250c1tpXS51cmwuc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnNwbGl0KFxcXCIjXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgY2hwLnB1c2gobGlzdC5sZW5ndGgpO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGNhdGNoIChlKSB7XFxuICAgIH1cXG4gICAgc2V0UmVzdWx0KFxcXCJcXFxcdTY2ZjRcXFxcdTY1YjBcXFxcdTgxZjM6XFxcIiArIChNYXRoLm1heC5hcHBseShNYXRoLCBjaHApKSk7XFxufVxcbikoXFxcIuS8mOi0qDYwXFxcIilcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wibmFtZVwiOlwiQVBQ5YiG57G75YiX6KGoXCIsXCJwYXRoXCI6XCJhcHBsaXN0ZGF0YVwiLFwicnVsZVwiOlwiKFxcbmZ1bmN0aW9uICgpIHtcXG4gICAgbGV0IGxpc3QgPSBbXTtcXG4gICAgaWYgKGh0bWwubGlzdCkge1xcbiAgICAgICAgbGlzdCA9IGh0bWwubGlzdDtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGlmIChodG1sLmRhdGEgJiYgaHRtbC5kYXRhLmxpc3QpIHtcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhLmxpc3Q7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGxpc3QgPSBodG1sLmRhdGE7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICBsZXQge3ZvZF9uYW1lLCB2b2RfcGljLCB2b2RfaWQsIHZvZF9yZW1hcmtzfSA9IGxpc3RbaV07XFxuICAgICAgICBsZXQgbGluayA9IFxcXCJcXFwiO1xcbiAgICAgICAgaWYgKGh0bWwubGlzdCkge1xcbiAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcInZpZGVvX2RldGFpbD9pZD1cXFwiICsgdm9kX2lkICsgXFxcIiZ0b2tlbj07Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcIjtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgaWYgKGh0bWwuZGF0YSAmJiBodG1sLmRhdGEubGlzdCkge1xcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCIvZGV0YWlsP3ZvZF9pZD1cXFwiICsgdm9kX2lkICsgXFxcIiZyZWxfbGltaXQ9MTA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcIjtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcIiArIHZvZF9pZCArIFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKC9pb3Blbnl1bi8udGVzdCh0dXJsKSkge1xcbiAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcIi9kZXRhaWxJRD92b2RfaWQ9XFxcIiArIHZvZF9pZCArIFxcXCImcmVsX2xpbWl0PTEwO2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICB9XFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdm9kX25hbWUsIHBpY191cmw6IHZvZF9waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgZGVzYzogdm9kX3JlbWFya3MsIGNvbF90eXBlOiBcXFwibW92aWVfM19tYXJxdWVlXFxcIiwgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgbGluaykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvYXBwbW92bGlzdFxcXCIsIHt9KSkucnVsZSk7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhlLm1lc3NhZ2UpO1xcbiAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW10pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgICl9KTtcXG4gICAgfVxcbn1cXG4pKClcIn0se1wibmFtZVwiOlwiQVBQ6aaW6aG15YiX6KGoXCIsXCJwYXRoXCI6XCJhcHBpbmRleGRhdGFcIixcInJ1bGVcIjpcIihcXG5mdW5jdGlvbiAoKSB7XFxuICAgIGxldCBsaXN0ID0gW107XFxuICAgIGlmIChodG1sLmxpc3QpIHtcXG4gICAgICAgIGxpc3QgPSBodG1sLmxpc3Q7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoaHRtbC5kYXRhICYmIGh0bWwuZGF0YS5saXN0KSB7XFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsaXN0ID0gaHRtbC5kYXRhO1xcbiAgICAgICAgfVxcbiAgICB9XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgbGV0IGxpc3RzID0gW10sIHR5cGVuYW1lID0gXFxcIlxcXCI7XFxuICAgICAgICBpZiAobGlzdFtpXS52b2RfbGlzdCkge1xcbiAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52b2RfbGlzdDtcXG4gICAgICAgICAgICB0eXBlbmFtZSA9IGxpc3RbaV0udm9kX3R5cGVfbmFtZTtcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgbGlzdHMgPSBsaXN0W2ldLnZsaXN0O1xcbiAgICAgICAgICAgIHR5cGVuYW1lID0gbGlzdFtpXS50eXBlX25hbWU7XFxuICAgICAgICB9XFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdHlwZW5hbWUsIGNvbF90eXBlOiBcXFwidGV4dF8xXFxcIiwgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJ9KTtcXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdHMubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgICAgICBsZXQge3ZvZF9uYW1lLCB2b2RfcGljLCB2b2RfaWQsIHZvZF9yZW1hcmtzfSA9IGxpc3RzW2pdO1xcbiAgICAgICAgICAgIGxldCBsaW5rID0gXFxcIlxcXCI7XFxuICAgICAgICAgICAgaWYgKGh0bWwubGlzdCkge1xcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcIiArIHZvZF9pZCArIFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgaWYgKGh0bWwuZGF0YSAmJiBodG1sLmRhdGEubGlzdCkge1xcbiAgICAgICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFwiL2RldGFpbD92b2RfaWQ9XFxcIiArIHZvZF9pZCArIFxcXCImcmVsX2xpbWl0PTEwO2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcIiArIHZvZF9pZCArIFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXCI7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKC9pb3Blbnl1bi8udGVzdCh0dXJsKSkge1xcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXCIvZGV0YWlsSUQ/dm9kX2lkPVxcXCIgKyB2b2RfaWQgKyBcXFwiJnJlbF9saW1pdD0xMDtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFwiO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdm9kX25hbWUsIHBpY191cmw6IHZvZF9waWMgKyBcXFwiQFJlZmVyZXI9XFxcIiwgZGVzYzogdm9kX3JlbWFya3MsIGNvbF90eXBlOiBcXFwibW92aWVfM19tYXJxdWVlXFxcIiwgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5IyNcXFwiICsgbGluaykucnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcHBtb3ZsaXN0XFxcIiwge30pKS5ydWxlKTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSk7XFxuICAgICAgICAgICAgICAgICAgICBzZXRSZXN1bHQoW10pO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICl9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG4pKClcIn0se1wibmFtZVwiOlwiQVBQ6YCJ6ZuGXCIsXCJwYXRoXCI6XCJhcHBtb3ZsaXN0XCIsXCJydWxlXCI6XCIoXFxuZnVuY3Rpb24gKCkge1xcbiAgICBhZGRMaXN0ZW5lcihcXFwib25DbG9zZVxcXCIsICQudG9TdHJpbmcoKHVybCkgPT4ge1xcbiAgICAgICAgY2xlYXJWYXIoXFxcImFwcG5vd1xcXCIpO1xcbiAgICAgICAgY2xlYXJWYXIodXJsKTtcXG4gICAgfVxcbiAgICAsIE1ZX1VSTCkpO1xcbiAgICBsZXQgaXRlbXMgPSBbXSwgaHRtbCA9IGdldFZhcihNWV9VUkwsIFxcXCJcXFwiKSwgZG9taW4gPSBNWV9VUkwuc3BsaXQoXFxcIiMjXFxcIilbMV0ubWF0Y2goLyhbXFxcXFNdKj86XFxcXC9cXFxcL1tcXFxcU10qPylcXFxcLy8pWzFdO1xcbiAgICBpZiAoaHRtbCA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgaHRtbCA9IGZldGNoKE1ZX1VSTC5zcGxpdChcXFwiIyNcXFwiKVsxXSwge2hlYWRlcnM6IHtcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJEYXJ0LzIuMTMgKGRhcnQ6aW8pXFxcIn19KTtcXG4gICAgICAgIHB1dFZhcihNWV9VUkwsIGh0bWwpO1xcbiAgICB9XFxuICAgIGh0bWwgPSBKU09OLnBhcnNlKGh0bWwpO1xcbiAgICBpdGVtcy5wdXNoKHt0aXRsZTogXFxcIlxcXCIsIGRlc2M6IFxcXCIyNTUmJmZsb2F0XFxcIiwgdXJsOiBcXFwiXFxcIiwgY29sX3R5cGU6IFxcXCJ4NV93ZWJ2aWV3X3NpbmdsZVxcXCJ9KTtcXG4gICAgcmVmcmVzaFg1V2ViVmlldyhcXFwiXFxcIik7XFxuICAgIGxldCB0aHVtYiA9IGh0bWwuZGF0YS52b2RfaW5mbyA/IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGljIDogaHRtbC5kYXRhLnZvZF9waWMsIGRlcyA9IGh0bWwuZGF0YS52b2RfaW5mbyA/IGh0bWwuZGF0YS52b2RfaW5mby52b2RfY29udGVudCA6IGh0bWwuZGF0YS52b2RfY29udGVudDtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTUyNjdcXFxcdTYwYzVcXFxcdTdiODBcXFxcdTRlY2I6XFxcIiwgZGVzYzogZGVzLCBwaWNfdXJsOiB0aHVtYiwgdXJsOiAkKFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNcXFwiKS5ydWxlKChkZXMpID0+IHtcXG4gICAgICAgIHNldFJlc3VsdChbe3RpdGxlOiBkZXMsIGNvbF90eXBlOiBcXFwibG9uZ190ZXh0XFxcIn1dKTtcXG4gICAgfVxcbiAgICAsIGRlcyksIGNvbF90eXBlOiBcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFwifSk7XFxuICAgIGxldCBkbmVuID0gZ2V0TXlWYXIoXFxcImRuZW5cXFwiLCBcXFwiMFxcXCIpO1xcbiAgICBpdGVtcy5wdXNoKHt0aXRsZTogXFxcIlxcXFx1NjVhZFxcXFx1NjNkMjpcXFwiICsgKGRuZW4gPT0gXFxcIjFcXFwiID8gXFxcIlxcXFx1MjAxY1xcXFx1MjAxY1xcXFx1MjcwNVxcXFx1MjAxZFxcXFx1MjAxZFxcXCIgOiBcXFwiXFxcXHUyNzRlXFxcIiksIHVybDogJChcXFwiXFxcIikubGF6eVJ1bGUoKGRuZW4pID0+IHtcXG4gICAgICAgIGlmIChkbmVuID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXCJkbmVuXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL1xcXFx1NWRmMlxcXFx1Nzk4MVxcXFx1NzUyOFxcXFx1NjVhZFxcXFx1NjNkMlxcXFx1OGMwM1xcXFx1NzUyOCFcXFwiO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFwiZG5lblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly9cXFxcdTVkZjJcXFxcdTVmMDBcXFxcdTU0MmZcXFxcdTY1YWRcXFxcdTYzZDJcXFxcdThjMDNcXFxcdTc1MjghXFxcIjtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAsIGRuZW4pLCBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJ9KTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTdlYmZcXFxcdThkZWZcXFxcdTkxNGRcXFxcdTdmNmVcXFwiLCB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvUm91dGU/cnVsZT1NeUZpZWxkXFxcXHUxZDMwXFxcXHUyMDdmJnR5cGU9XFxcXHU4YmJlXFxcXHU3ZjZlI25vUmVjb3JkSGlzdG9yeSNcXFwiLCBjb2xfdHlwZTogXFxcInRleHRfMlxcXCJ9KTtcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXCJcXFxcdTIwMWNcXFxcdTIwMWNcXFxcdTIxOTNcXFxcdTIxOTFcXFxcdTIwMWRcXFxcdTIwMWRcXFwiLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG1hcHBzb3J0JywgZ2V0VmFyKCdhcHBtYXBwc29ydCcsJzEnKT09JzEnPycwJzonMScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly9cXFxcdTUyMDdcXFxcdTYzNjJcXFxcdTYyMTBcXFxcdTUyOWYhJ1xcXCIsIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJ9KTtcXG4gICAgbGV0IGNvbnRzID0gW10sIHRhYnMgPSBbXTtcXG4gICAgaWYgKGh0bWwuZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyO1xcbiAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXG4gICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgIHRhYnMgPSBodG1sLmRhdGEudm9kX3BsYXlfZnJvbS5zcGxpdChcXFwiJCQkXFxcIik7XFxuICAgICAgICB9XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF9pbmZvICYmIGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcjtcXG4gICAgICAgICAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgICAgICB0YWJzID0gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF9wbGF5X2Zyb20uc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfbGlzdDtcXG4gICAgICAgICAgICBpZiAoY29udHMubGVuZ3RoIDwgMSkge1xcbiAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfcGxheV91cmwuc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgICAgICB0YWJzID0gaHRtbC5kYXRhLnZvZF9wbGF5X2Zyb20uc3BsaXQoXFxcIiQkJFxcXCIpO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBsZXQgbGlzdCA9IFtdLCBwdGFiID0gXFxcIlxcXCI7XFxuICAgIGlmIChnZXRWYXIoXFxcImFwcG5vd1xcXCIsIFxcXCJcXFwiKSA9PSBcXFwiXFxcIikge1xcbiAgICAgICAgcHV0VmFyKFxcXCJhcHBub3dcXFwiLCBcXFwiMFxcXCIpO1xcbiAgICB9XFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29udHMubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIGlmIChodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcikge1xcbiAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uY29kZSA/IGNvbnRzW2ldLmNvZGUgOiB0YWJzW2ldO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF9pbmZvICYmIGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uY29kZSA/IGNvbnRzW2ldLmNvZGUgOiB0YWJzW2ldO1xcbiAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uZnJvbSA/IGNvbnRzW2ldLmZyb20gOiB0YWJzW2ldO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBnZXRWYXIoXFxcImFwcG5vd1xcXCIpID09IGkgPyBcXFwiXFxcXHUyMDFjXFxcXHUyMDFjXFxcXHUyMDFkXFxcXHUyMDFkXFxcIiArIHNwdGFiLmJvbGQoKS5mb250Y29sb3IoXFxcIiNGQTcyOThcXFwiKSA6IHNwdGFiLCB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG5vdycsJ1xcXCIgKyBpICsgXFxcIicpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly9cXFxcdTUyMDdcXFxcdTYzNjJcXFxcdTYyMTBcXFxcdTUyOWYhJ1xcXCIsIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJ9KTtcXG4gICAgICAgIGlmIChnZXRWYXIoXFxcImFwcG5vd1xcXCIpID09IGkpIHtcXG4gICAgICAgICAgICBwdGFiID0gc3B0YWI7XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgbGV0IGkgPSBnZXRWYXIoXFxcImFwcG5vd1xcXCIpO1xcbiAgICBpZiAoY29udHNbaV0udXJscykge1xcbiAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybHM7XFxuICAgIH0gZWxzZSB7XFxuICAgICAgICBpZiAoY29udHNbaV0udXJsKSB7XFxuICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybC5zcGxpdChcXFwiI1xcXCIpO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICBsaXN0ID0gY29udHNbaV0uc3BsaXQoXFxcIiNcXFwiKTtcXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICBpZiAoZ2V0VmFyKFxcXCJhcHBtYXBwc29ydFxcXCIsIFxcXCIxXFxcIikgPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICBsaXN0LnJldmVyc2UoKTtcXG4gICAgfVxcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGxpc3QubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIGxldCB2bGluayA9IFxcXCJcXFwiLCB0aXRsZSA9IFxcXCJcXFwiLCBqaWVrID0gXFxcIlxcXCI7XFxuICAgICAgICBpZiAoY29udHNbaV0udXJscykge1xcbiAgICAgICAgICAgIHZsaW5rID0gbGlzdFtqXS51cmwucmVwbGFjZSgvIzQ1NiMvZywgXFxcImh0dHBcXFwiKS5yZXBsYWNlKC8jMTIzIy9nLCBcXFwiLlxcXCIpLnJlcGxhY2UoLyM3ODkjL2csIFxcXCI6XFxcIik7XFxuICAgICAgICAgICAgdGl0bGUgPSBsaXN0W2pdLm5hbWU7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZsaW5rID0gbGlzdFtqXS5zcGxpdChcXFwiJFxcXCIpWzFdO1xcbiAgICAgICAgICAgIHRpdGxlID0gbGlzdFtqXS5zcGxpdChcXFwiJFxcXCIpWzBdO1xcbiAgICAgICAgfVxcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXG4gICAgICAgICAgICAgICAgamllayA9IGNvbnRzW2ldLnBhcnNlX2FwaTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF9pbmZvICYmIGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxuICAgICAgICAgICAgICAgICAgICBqaWVrID0gY29udHNbaV0ucGFyc2VfYXBpO1xcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlMiAmJiAoY29udHNbaV0ucGxheWVyX2luZm8ucGFyc2UyKS5pbmRleE9mKFxcXCI9XFxcIikgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBqaWVrID0gKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlMikubWF0Y2goLy4qP3VybD18Lio/dj18Lio/dmlkPS8pWzBdLnJlcGxhY2UoXFxcIi4uXFxcIiwgXFxcIi5cXFwiKS5yZXBsYWNlKFxcXCJqc29uYnNcXFwiLCBcXFwiXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZSAmJiAoY29udHNbaV0ucGxheWVyX2luZm8ucGFyc2UpLmluZGV4T2YoXFxcIj1cXFwiKSAhPSAtMSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaWVrID0gKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlKS5tYXRjaCgvLio/dXJsPXwuKj92PXwuKj92aWQ9LylbMF0ucmVwbGFjZShcXFwiLi5cXFwiLCBcXFwiLlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZWsgPSBcXFwiXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgfVxcbiAgICAgICAgaWYgKGppZWsgIT0gXFxcIlxcXCIgJiYgamllayAhPSBudWxsKSB7XFxuICAgICAgICAgICAgaWYgKGppZWsuc3Vic3RyaW5nKDAsIDQpID09IFxcXCJodHRwXFxcIikge1xcbiAgICAgICAgICAgICAgICBqaWVrID0gamllaztcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICBpZiAoamllay5zdWJzdHJpbmcoMCwgMikgPT0gXFxcIi8vXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgamllayA9IFxcXCJodHRwczpcXFwiICsgamllaztcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgaWYgKGogPT0gXFxcIjBcXFwiKSB7XFxuICAgICAgICAgICAgICAgIGxvZyhcXFwiXFxcXG5cXFxcdTdlYmZcXFxcdThkZWY6XFxcIiArIHB0YWIgKyBcXFwiXFxcXG5cXFxcdTg5ZTNcXFxcdTY3OTBcXFxcdTYzYTVcXFxcdTUzZTM6XFxcIiArIGppZWspO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgICAgIGNhdGNoIChlKSB7XFxuICAgICAgICB9XFxuICAgICAgICBsZXQgbGluayA9IGppZWsgKyB2bGluaztcXG4gICAgICAgIGlmICgvXFxcXC5tM3U4fFxcXFwubXA0fG9ialxcXFwvdG9zLy50ZXN0KHZsaW5rKSAmJiAvaHR0cC8udGVzdCh2bGluaykpIHtcXG4gICAgICAgICAgICBsaW5rID0gdmxpbms7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIGlmICgvc2lnbj0vLnRlc3QodmxpbmspKSB7XFxuICAgICAgICAgICAgICAgIGxpbmsgPSB2bGluaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdGl0bGUsIGNvbF90eXBlOiBcXFwidGV4dF80XFxcIiwgdXJsOiAkKFxcXCJcXFwiKS5sYXp5UnVsZSgocHRhYiwgc3JjdXJsLCBkb21pbikgPT4ge1xcbiAgICAgICAgICAgIGxvZyhcXFwiXFxcXHU1MzlmXFxcXHU5NGZlXFxcXHU2M2E1OlxcXCIgKyBzcmN1cmwpO1xcbiAgICAgICAgICAgIGZ1bmN0aW9uIG9wZW51cmwocmVzdXJsKSB7XFxuICAgICAgICAgICAgICAgIGlmIChyZXN1cmwubWF0Y2goL3lvdWt1fG1ndHZ8aXhpZ3VhfHFxLmNvbXxxaXlpfG1pZ3V8YmlsaWJpbGl8c29odXxwcHR2fGxlfDE5MDUuY29tLykgJiYgcmVzdXJsLnNlYXJjaCgvaHRtbHxiaWxpYmlsaS8pICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICBsZXQgZW5EbiA9IGdldE15VmFyKFxcXCJkbmVuXFxcIiwgXFxcIjBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbkRuID09IFxcXCIxXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhcXFwiXFxcXHU4YzAzXFxcXHU3NTI4XFxcXHU2NWFkXFxcXHU2M2QyXFxcXHU4OWUzXFxcXHU2NzkwXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChcXFwibGV0IGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL015UGFyc2VTZXQuanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKGZldGNoKGNvbmZpZy5jaikpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UocmVzdXJsKTtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VybDtcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1cmw7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICAgICAgaWYgKC9cXFxcLm0zdTh8XFxcXC5tcDR8b2JqXFxcXC90b3N8bmV0ZWFzZVxcXFwuY29tLy50ZXN0KHNyY3VybCkgJiYgL2h0dHAvLnRlc3Qoc3JjdXJsKSAmJiAhL1xcXFwuaHRtbC8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoL3drZmlsZS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNyY3VybCArIFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly9mYW50dWFuLndrZmlsZS5jb20vfVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvZHVvZHVvenkvLnRlc3QocHRhYikpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBmZXRjaChcXFwiaHR0cHM6Ly9wbGF5ZXIuZHVvZHVvenkuY29tL2RkcGxheS9hcGkucGhwP3VybD1cXFwiICsgc3JjdXJsLCB7fSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGpzb24pLnVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL3NpZ249Ly50ZXN0KHNyY3VybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmN1cmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC9cXFxcPS8udGVzdChzcmN1cmwpID8gc3JjdXJsLnNwbGl0KFxcXCI9XFxcIilbMV0gOiBzcmN1cmwgKyBcXFwiI2lzVmlkZW89dHJ1ZSNcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKHNyY3VybC5pbmRleE9mKFxcXCIvc2hhcmUvXFxcIikgIT0gLTEpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbGluayA9IHNyY3VybC5zcGxpdChcXFwiL3NoYXJlXFxcIilbMF0sIGZjID0gZmV0Y2goc3JjdXJsLCB7fSkucmVwbGFjZShcXFwidmFyIHB1cmxcXFwiLCBcXFwidmFyIG1haW5cXFwiKSwgcGxheSA9IFxcXCJcXFwiO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmMuaW5kZXhPZihcXFwibWFpblxcXCIpICE9IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0ID0gZmMubWF0Y2goL3ZhciBtYWluLio/Oy8pWzBdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZhbChtYXQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGxheSA9IChtYWluLmluZGV4T2YoXFxcImh0dHBcXFwiKSAhPSAtMSA/IG1haW4gOiBsaW5rICsgbWFpbik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWFpbiA9IGZjLm1hdGNoKC91cmw6Lio/W1xcXFwnXFxcXFxcXCJdKC4qPylbXFxcXCdcXFxcXFxcIl0vKVsxXTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXkgPSAobWFpbi5pbmRleE9mKFxcXCJodHRwXFxcIikgIT0gLTEgPyBtYWluIDogbGluayArIG1haW4pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwbGF5O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcIng1V2ViVmlldzovL1xcXCIgKyBzcmN1cmw7XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHRhYiA9PSBcXFwiYWxpenlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwdXJsID0gZmV0Y2goXFxcImh0dHBzOi8vZm91YmluLmNvbS9qaWV4aS5waHA/dXJsPVxcXCIgKyBzcmN1cmwuc3BsaXQoXFxcInVybD1cXFwiKVsxXSwge30pLm1hdGNoKC9cXFxcXFxcInVybFxcXFxcXFwiOlxcXFxcXFwiKC4qPylcXFxcXFxcIi8pWzFdO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVybDtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLzk4M3ZpcC8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShmZXRjaChzcmN1cmwsIHtoZWFkZXJzOiB7XFxcIlVzZXItQWdlbnRcXFwiOiBNT0JJTEVfVUF9LCByZWRpcmVjdDogZmFsc2UsIHdpdGhIZWFkZXJzOiB0cnVlfSkpLmhlYWRlcnMubG9jYXRpb25bMF07XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoL3hcXFxcLW5cXFxcLmNjfG5oZHo2NjYvLnRlc3Qoc3JjdXJsKSAmJiAvXFxcXC5odG1sfGJpbGliaWxpLy50ZXN0KHNyY3VybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwuc3Vic3RyaW5nKHNyY3VybC5pbmRleE9mKFxcXCI9aHR0cFxcXCIpICsgMSkpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIGxldCBzY29kZSA9IEpTT04ucGFyc2UoZmV0Y2goc3JjdXJsLCB7aGVhZGVyczoge1xcXCJVc2VyLUFnZW50XFxcIjogXFxcIkRhcnQvMi4xMyAoZGFydDppbylcXFwifSwgcmVkaXJlY3Q6IGZhbHNlLCB3aXRoU3RhdHVzQ29kZTogdHJ1ZX0pKTtcXG4gICAgICAgICAgICAgICAgaWYgKHNjb2RlLnN0YXR1c0NvZGUgPT0gXFxcIjMwMlxcXCIgfHwgc2NvZGUuc3RhdHVzQ29kZSA9PSBcXFwiMzAxXFxcIikge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZHVybCA9IHNjb2RlLmhlYWRlcnMubG9jYXRpb25bMF0ucmVwbGFjZSgvXFxcXFxcXFwvZywgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcPWh0dHAvLnRlc3QocmVkdXJsKSAmJiAvaHRtbHxiaWxpYmlsaS8udGVzdChyZWR1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmV0Y2gocmVkdXJsLCB7fSkpLnVybDtcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcPWh0dHAvLnRlc3QocmVkdXJsKSAmJiAvXFxcXC5tM3U4fFxcXFwubXA0fFxcXFwuZmx2Ly50ZXN0KHJlZHVybCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVybC5zdWJzdHJpbmcocmVkdXJsLmluZGV4T2YoXFxcIj1odHRwXFxcIikgKyAxKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVkdXJsO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gc2NvZGUuYm9keTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICgvNDA0IE5vdCBGb3VuZHzlpIfmoYjlkI7lj6/nu6fnu63orr/pl64vLnRlc3QoaHRtbCkpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwuc3Vic3RyaW5nKHNyY3VybC5pbmRleE9mKFxcXCI9aHR0cFxcXCIpICsgMSkpO1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFw8Ym9keS8udGVzdChodG1sKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFx1NWMxZFxcXFx1OGJkNVxcXFx1OTc1ZUpTT05cXFxcdTYzYTVcXFxcdTUzZTNcXFxcdTdmNTFcXFxcdTk4NzVcXFxcdTg5ZTNcXFxcdTY3OTBcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWlyZUNhY2hlKFxcXCJodHRwczovL2NvZGUuYWxpeXVuLmNvbS9semsyMzU1OS9QdWJsaWNSdWxlL3Jhdy9tYXN0ZXIveDVydWxlLmpzXFxcIiwgMjQpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geDVydWxlKHNyY3VybCwgc3JjdXJsKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgcHVybCA9IGh0bWwubWF0Y2goL1tcXFxcJ1xcXFxcXFwiXXVybFtcXFxcJ1xcXFxcXFwiXTouKj9bXFxcXCdcXFxcXFxcIl0oLio/KVtcXFxcJ1xcXFxcXFwiXS8pWzFdLnJlcGxhY2UoL1xcXFxcXFxcL2csIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9odHRwLy50ZXN0KHB1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHRhYiA9PSBcXFwiYmlsaWJpbGlcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmwgKyBcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS8mJlVzZXItQWdlbnRATW96aWxsYS81LjB9XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHB0YWIgPT0gXFxcIm1ndHZcXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIiArIFxcXCI7e1JlZmVyZXJAd3d3Lm1ndHYuY29tJiZVc2VyLUFnZW50QE1vemlsbGEvNS4wfVxcXCI7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9vamJrLy50ZXN0KHB1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVybCArIFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly9iYWsub2pia2p4LmNvbS99XFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsICsgXFxcIiNpc1ZpZGVvPXRydWUjXFxcIjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXD1odHRwLy50ZXN0KHNyY3VybCkgJiYgL1xcXFwuaHRtbHxiaWxpYmlsaS8udGVzdChzcmN1cmwpKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFwiPWh0dHBcXFwiKSArIDEpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFwiPWh0dHBcXFwiKSArIDEpKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xcbiAgICAgICAgICAgICAgICBsb2coXFxcIlxcXFx1NjI2N1xcXFx1ODg0Y1xcXFx1NjJhNVxcXFx1OTUxOVxcXFx1NTkwNFxcXFx1NzQwNlxcXCIpO1xcbiAgICAgICAgICAgICAgICBpZiAoc3JjdXJsLnN1YnN0cmluZygwLCAyKSA9PSBcXFwiLy9cXFwiKSB7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChcXFwiaHR0cHM6XFxcIiArIHNyY3VybCk7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFw9aHR0cC8udGVzdChzcmN1cmwpICYmIC9cXFxcLmh0bWx8YmlsaWJpbGkvLnRlc3Qoc3JjdXJsKSkge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLmluZGV4T2YoXFxcIj1odHRwXFxcIikgKyAxKSk7XFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybCk7XFxuICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgICAgICAsIHB0YWIsIGxpbmssIGRvbWluKX0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChpdGVtcyk7XFxufVxcbikoKVwifV0sXCJzYXZlZFwiOmZhbHNlLFwidGl0bGVcIjpcIui9u+WQiOmbhi5hcHBcIixcInZlcnNpb25cIjowLFwidXJsXCI6XCJoaWtlcjovL2VtcHR5IyNodHRwczovL3Z1ZS5hcHAueXVuYm95cy5jbi9hcGkucGhwL3YxLnZvZC9kZXRhaWw/dm9kX2lkPTE4ODI1NCZ0b2tlbj1cIixcImZpbmRfcnVsZVwiOlwianM6KFxcbih0eXBldCkgPT4ge1xcbiAgICBpZiAoL1RWLy50ZXN0KHR5cGV0KSkge1xcbiAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdHZtb3ZsaXN0XFxcIiwge30pKS5ydWxlKTtcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2FwcG1vdmxpc3RcXFwiLCB7fSkpLnJ1bGUpO1xcbiAgICB9XFxufVxcbikoXFxcIuS8mOi0qDYwXFxcIilcIixcImdyb3VwXCI6XCLovbvlkIjpm4YuYXBwXCIsXCJwYWdlc1wiOlwiW3tcXFwibmFtZVxcXCI6XFxcIkFQUOWIhuexu+WIl+ihqFxcXCIsXFxcInBhdGhcXFwiOlxcXCJhcHBsaXN0ZGF0YVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIoXFxcXG5mdW5jdGlvbiAoKSB7XFxcXG4gICAgbGV0IGxpc3QgPSBbXTtcXFxcbiAgICBpZiAoaHRtbC5saXN0KSB7XFxcXG4gICAgICAgIGxpc3QgPSBodG1sLmxpc3Q7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgaWYgKGh0bWwuZGF0YSAmJiBodG1sLmRhdGEubGlzdCkge1xcXFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgbGV0IHt2b2RfbmFtZSwgdm9kX3BpYywgdm9kX2lkLCB2b2RfcmVtYXJrc30gPSBsaXN0W2ldO1xcXFxuICAgICAgICBsZXQgbGluayA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgIGlmIChodG1sLmxpc3QpIHtcXFxcbiAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcXFxcXCJ2aWRlb19kZXRhaWw/aWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZ0b2tlbj07Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcXFxcXCI7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBpZiAoaHRtbC5kYXRhICYmIGh0bWwuZGF0YS5saXN0KSB7XFxcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFxcXFxcIi9kZXRhaWw/dm9kX2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImcmVsX2xpbWl0PTEwO2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXFxcXFwidmlkZW9fZGV0YWlsP2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImdG9rZW49O2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGlmICgvaW9wZW55dW4vLnRlc3QodHVybCkpIHtcXFxcbiAgICAgICAgICAgIGxpbmsgPSB0dXJsICsgXFxcXFxcXCIvZGV0YWlsSUQ/dm9kX2lkPVxcXFxcXFwiICsgdm9kX2lkICsgXFxcXFxcXCImcmVsX2xpbWl0PTEwO2dldDt1dGYtODt7VXNlci1BZ2VudEBEYXJ0LzIuMTMgKGRhcnQ6aW8pfVxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGl0ZW1zLnB1c2goe3RpdGxlOiB2b2RfbmFtZSwgcGljX3VybDogdm9kX3BpYyArIFxcXFxcXFwiQFJlZmVyZXI9XFxcXFxcXCIsIGRlc2M6IHZvZF9yZW1hcmtzLCBjb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8zX21hcnF1ZWVcXFxcXFxcIiwgdXJsOiAkKFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSMjXFxcXFxcXCIgKyBsaW5rKS5ydWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwcG1vdmxpc3RcXFxcXFxcIiwge30pKS5ydWxlKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSk7XFxcXG4gICAgICAgICAgICAgICAgc2V0UmVzdWx0KFtdKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICApfSk7XFxcXG4gICAgfVxcXFxufVxcXFxuKSgpXFxcIn0se1xcXCJuYW1lXFxcIjpcXFwiQVBQ6aaW6aG15YiX6KGoXFxcIixcXFwicGF0aFxcXCI6XFxcImFwcGluZGV4ZGF0YVxcXCIsXFxcInJ1bGVcXFwiOlxcXCIoXFxcXG5mdW5jdGlvbiAoKSB7XFxcXG4gICAgbGV0IGxpc3QgPSBbXTtcXFxcbiAgICBpZiAoaHRtbC5saXN0KSB7XFxcXG4gICAgICAgIGxpc3QgPSBodG1sLmxpc3Q7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgaWYgKGh0bWwuZGF0YSAmJiBodG1sLmRhdGEubGlzdCkge1xcXFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YS5saXN0O1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgbGlzdCA9IGh0bWwuZGF0YTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgbGV0IGxpc3RzID0gW10sIHR5cGVuYW1lID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICAgICAgaWYgKGxpc3RbaV0udm9kX2xpc3QpIHtcXFxcbiAgICAgICAgICAgIGxpc3RzID0gbGlzdFtpXS52b2RfbGlzdDtcXFxcbiAgICAgICAgICAgIHR5cGVuYW1lID0gbGlzdFtpXS52b2RfdHlwZV9uYW1lO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgbGlzdHMgPSBsaXN0W2ldLnZsaXN0O1xcXFxuICAgICAgICAgICAgdHlwZW5hbWUgPSBsaXN0W2ldLnR5cGVfbmFtZTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdHlwZW5hbWUsIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwifSk7XFxcXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdHMubGVuZ3RoOyBqKyspIHtcXFxcbiAgICAgICAgICAgIGxldCB7dm9kX25hbWUsIHZvZF9waWMsIHZvZF9pZCwgdm9kX3JlbWFya3N9ID0gbGlzdHNbal07XFxcXG4gICAgICAgICAgICBsZXQgbGluayA9IFxcXFxcXFwiXFxcXFxcXCI7XFxcXG4gICAgICAgICAgICBpZiAoaHRtbC5saXN0KSB7XFxcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFxcXFxcInZpZGVvX2RldGFpbD9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnRva2VuPTtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgaWYgKGh0bWwuZGF0YSAmJiBodG1sLmRhdGEubGlzdCkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsaW5rID0gdHVybCArIFxcXFxcXFwiL2RldGFpbD92b2RfaWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZyZWxfbGltaXQ9MTA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFxcXFxcInZpZGVvX2RldGFpbD9pZD1cXFxcXFxcIiArIHZvZF9pZCArIFxcXFxcXFwiJnRva2VuPTtnZXQ7dXRmLTg7e1VzZXItQWdlbnRARGFydC8yLjEzIChkYXJ0OmlvKX1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpZiAoL2lvcGVueXVuLy50ZXN0KHR1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgbGluayA9IHR1cmwgKyBcXFxcXFxcIi9kZXRhaWxJRD92b2RfaWQ9XFxcXFxcXCIgKyB2b2RfaWQgKyBcXFxcXFxcIiZyZWxfbGltaXQ9MTA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QERhcnQvMi4xMyAoZGFydDppbyl9XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogdm9kX25hbWUsIHBpY191cmw6IHZvZF9waWMgKyBcXFxcXFxcIkBSZWZlcmVyPVxcXFxcXFwiLCBkZXNjOiB2b2RfcmVtYXJrcywgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfM19tYXJxdWVlXFxcXFxcXCIsIHVybDogJChcXFxcXFxcImhpa2VyOi8vZW1wdHkjI1xcXFxcXFwiICsgbGluaykucnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwcG1vdmxpc3RcXFxcXFxcIiwge30pKS5ydWxlKTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbG9nKGUubWVzc2FnZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHNldFJlc3VsdChbXSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgKX0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufVxcXFxuKSgpXFxcIn0se1xcXCJuYW1lXFxcIjpcXFwiQVBQ6YCJ6ZuGXFxcIixcXFwicGF0aFxcXCI6XFxcImFwcG1vdmxpc3RcXFwiLFxcXCJydWxlXFxcIjpcXFwiKFxcXFxuZnVuY3Rpb24gKCkge1xcXFxuICAgIGFkZExpc3RlbmVyKFxcXFxcXFwib25DbG9zZVxcXFxcXFwiLCAkLnRvU3RyaW5nKCh1cmwpID0+IHtcXFxcbiAgICAgICAgY2xlYXJWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIik7XFxcXG4gICAgICAgIGNsZWFyVmFyKHVybCk7XFxcXG4gICAgfVxcXFxuICAgICwgTVlfVVJMKSk7XFxcXG4gICAgbGV0IGl0ZW1zID0gW10sIGh0bWwgPSBnZXRWYXIoTVlfVVJMLCBcXFxcXFxcIlxcXFxcXFwiKSwgZG9taW4gPSBNWV9VUkwuc3BsaXQoXFxcXFxcXCIjI1xcXFxcXFwiKVsxXS5tYXRjaCgvKFtcXFxcXFxcXFNdKj86XFxcXFxcXFwvXFxcXFxcXFwvW1xcXFxcXFxcU10qPylcXFxcXFxcXC8vKVsxXTtcXFxcbiAgICBpZiAoaHRtbCA9PSBcXFxcXFxcIlxcXFxcXFwiKSB7XFxcXG4gICAgICAgIGh0bWwgPSBmZXRjaChNWV9VUkwuc3BsaXQoXFxcXFxcXCIjI1xcXFxcXFwiKVsxXSwge2hlYWRlcnM6IHtcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogXFxcXFxcXCJEYXJ0LzIuMTMgKGRhcnQ6aW8pXFxcXFxcXCJ9fSk7XFxcXG4gICAgICAgIHB1dFZhcihNWV9VUkwsIGh0bWwpO1xcXFxuICAgIH1cXFxcbiAgICBodG1sID0gSlNPTi5wYXJzZShodG1sKTtcXFxcbiAgICBpdGVtcy5wdXNoKHt0aXRsZTogXFxcXFxcXCJcXFxcXFxcIiwgZGVzYzogXFxcXFxcXCIyNTUmJmZsb2F0XFxcXFxcXCIsIHVybDogXFxcXFxcXCJcXFxcXFxcIiwgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIn0pO1xcXFxuICAgIHJlZnJlc2hYNVdlYlZpZXcoXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgbGV0IHRodW1iID0gaHRtbC5kYXRhLnZvZF9pbmZvID8gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF9waWMgOiBodG1sLmRhdGEudm9kX3BpYywgZGVzID0gaHRtbC5kYXRhLnZvZF9pbmZvID8gaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF9jb250ZW50IDogaHRtbC5kYXRhLnZvZF9jb250ZW50O1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFxcdTUyNjdcXFxcXFxcXHU2MGM1XFxcXFxcXFx1N2I4MFxcXFxcXFxcdTRlY2I6XFxcXFxcXCIsIGRlc2M6IGRlcywgcGljX3VybDogdGh1bWIsIHVybDogJChcXFxcXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I1xcXFxcXFwiKS5ydWxlKChkZXMpID0+IHtcXFxcbiAgICAgICAgc2V0UmVzdWx0KFt7dGl0bGU6IGRlcywgY29sX3R5cGU6IFxcXFxcXFwibG9uZ190ZXh0XFxcXFxcXCJ9XSk7XFxcXG4gICAgfVxcXFxuICAgICwgZGVzKSwgY29sX3R5cGU6IFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNcXFxcXFxcIn0pO1xcXFxuICAgIGxldCBkbmVuID0gZ2V0TXlWYXIoXFxcXFxcXCJkbmVuXFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKTtcXFxcbiAgICBpdGVtcy5wdXNoKHt0aXRsZTogXFxcXFxcXCJcXFxcXFxcXHU2NWFkXFxcXFxcXFx1NjNkMjpcXFxcXFxcIiArIChkbmVuID09IFxcXFxcXFwiMVxcXFxcXFwiID8gXFxcXFxcXCJcXFxcXFxcXHUyMDFjXFxcXFxcXFx1MjAxY1xcXFxcXFxcdTI3MDVcXFxcXFxcXHUyMDFkXFxcXFxcXFx1MjAxZFxcXFxcXFwiIDogXFxcXFxcXCJcXFxcXFxcXHUyNzRlXFxcXFxcXCIpLCB1cmw6ICQoXFxcXFxcXCJcXFxcXFxcIikubGF6eVJ1bGUoKGRuZW4pID0+IHtcXFxcbiAgICAgICAgaWYgKGRuZW4gPT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgIHB1dE15VmFyKFxcXFxcXFwiZG5lblxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL1xcXFxcXFxcdTVkZjJcXFxcXFxcXHU3OTgxXFxcXFxcXFx1NzUyOFxcXFxcXFxcdTY1YWRcXFxcXFxcXHU2M2QyXFxcXFxcXFx1OGMwM1xcXFxcXFxcdTc1MjghXFxcXFxcXCI7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBwdXRNeVZhcihcXFxcXFxcImRuZW5cXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly9cXFxcXFxcXHU1ZGYyXFxcXFxcXFx1NWYwMFxcXFxcXFxcdTU0MmZcXFxcXFxcXHU2NWFkXFxcXFxcXFx1NjNkMlxcXFxcXFxcdThjMDNcXFxcXFxcXHU3NTI4IVxcXFxcXFwiO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgICwgZG5lbiksIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwifSk7XFxcXG4gICAgaXRlbXMucHVzaCh7dGl0bGU6IFxcXFxcXFwiXFxcXFxcXFx1N2ViZlxcXFxcXFxcdThkZWZcXFxcXFxcXHU5MTRkXFxcXFxcXFx1N2Y2ZVxcXFxcXFwiLCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL1JvdXRlP3J1bGU9TXlGaWVsZFxcXFxcXFxcdTFkMzBcXFxcXFxcXHUyMDdmJnR5cGU9XFxcXFxcXFx1OGJiZVxcXFxcXFxcdTdmNmUjbm9SZWNvcmRIaXN0b3J5I1xcXFxcXFwiLCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIn0pO1xcXFxuICAgIGl0ZW1zLnB1c2goe3RpdGxlOiBcXFxcXFxcIlxcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFjXFxcXFxcXFx1MjE5M1xcXFxcXFxcdTIxOTFcXFxcXFxcXHUyMDFkXFxcXFxcXFx1MjAxZFxcXFxcXFwiLCB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdhcHBtYXBwc29ydCcsIGdldFZhcignYXBwbWFwcHNvcnQnLCcxJyk9PScxJz8nMCc6JzEnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vXFxcXFxcXFx1NTIwN1xcXFxcXFxcdTYzNjJcXFxcXFxcXHU2MjEwXFxcXFxcXFx1NTI5ZiEnXFxcXFxcXCIsIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIn0pO1xcXFxuICAgIGxldCBjb250cyA9IFtdLCB0YWJzID0gW107XFxcXG4gICAgaWYgKGh0bWwuZGF0YS52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxcXG4gICAgICAgIGNvbnRzID0gaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXI7XFxcXG4gICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxcXG4gICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfcGxheV91cmwuc3BsaXQoXFxcXFxcXCIkJCRcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICB0YWJzID0gaHRtbC5kYXRhLnZvZF9wbGF5X2Zyb20uc3BsaXQoXFxcXFxcXCIkJCRcXFxcXFxcIik7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF9pbmZvICYmIGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyKSB7XFxcXG4gICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfdXJsX3dpdGhfcGxheWVyO1xcXFxuICAgICAgICAgICAgaWYgKGNvbnRzLmxlbmd0aCA8IDEpIHtcXFxcbiAgICAgICAgICAgICAgICBjb250cyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV91cmwuc3BsaXQoXFxcXFxcXCIkJCRcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgdGFicyA9IGh0bWwuZGF0YS52b2RfaW5mby52b2RfcGxheV9mcm9tLnNwbGl0KFxcXFxcXFwiJCQkXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfbGlzdDtcXFxcbiAgICAgICAgICAgIGlmIChjb250cy5sZW5ndGggPCAxKSB7XFxcXG4gICAgICAgICAgICAgICAgY29udHMgPSBodG1sLmRhdGEudm9kX3BsYXlfdXJsLnNwbGl0KFxcXFxcXFwiJCQkXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgIHRhYnMgPSBodG1sLmRhdGEudm9kX3BsYXlfZnJvbS5zcGxpdChcXFxcXFxcIiQkJFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICBsZXQgbGlzdCA9IFtdLCBwdGFiID0gXFxcXFxcXCJcXFxcXFxcIjtcXFxcbiAgICBpZiAoZ2V0VmFyKFxcXFxcXFwiYXBwbm93XFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpID09IFxcXFxcXFwiXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgcHV0VmFyKFxcXFxcXFwiYXBwbm93XFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKTtcXFxcbiAgICB9XFxcXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb250cy5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICBpZiAoaHRtbC5kYXRhLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXFxcbiAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uY29kZSA/IGNvbnRzW2ldLmNvZGUgOiB0YWJzW2ldO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaWYgKGh0bWwuZGF0YS52b2RfaW5mbyAmJiBodG1sLmRhdGEudm9kX2luZm8udm9kX3VybF93aXRoX3BsYXllcikge1xcXFxuICAgICAgICAgICAgICAgIHNwdGFiID0gY29udHNbaV0uY29kZSA/IGNvbnRzW2ldLmNvZGUgOiB0YWJzW2ldO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBzcHRhYiA9IGNvbnRzW2ldLmZyb20gPyBjb250c1tpXS5mcm9tIDogdGFic1tpXTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBpdGVtcy5wdXNoKHt0aXRsZTogZ2V0VmFyKFxcXFxcXFwiYXBwbm93XFxcXFxcXCIpID09IGkgPyBcXFxcXFxcIlxcXFxcXFxcdTIwMWNcXFxcXFxcXHUyMDFjXFxcXFxcXFx1MjAxZFxcXFxcXFxcdTIwMWRcXFxcXFxcIiArIHNwdGFiLmJvbGQoKS5mb250Y29sb3IoXFxcXFxcXCIjRkE3Mjk4XFxcXFxcXCIpIDogc3B0YWIsIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2FwcG5vdycsJ1xcXFxcXFwiICsgaSArIFxcXFxcXFwiJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL1xcXFxcXFxcdTUyMDdcXFxcXFxcXHU2MzYyXFxcXFxcXFx1NjIxMFxcXFxcXFxcdTUyOWYhJ1xcXFxcXFwiLCBjb2xfdHlwZTogXFxcXFxcXCJzY3JvbGxfYnV0dG9uXFxcXFxcXCJ9KTtcXFxcbiAgICAgICAgaWYgKGdldFZhcihcXFxcXFxcImFwcG5vd1xcXFxcXFwiKSA9PSBpKSB7XFxcXG4gICAgICAgICAgICBwdGFiID0gc3B0YWI7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG4gICAgbGV0IGkgPSBnZXRWYXIoXFxcXFxcXCJhcHBub3dcXFxcXFxcIik7XFxcXG4gICAgaWYgKGNvbnRzW2ldLnVybHMpIHtcXFxcbiAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybHM7XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgaWYgKGNvbnRzW2ldLnVybCkge1xcXFxuICAgICAgICAgICAgbGlzdCA9IGNvbnRzW2ldLnVybC5zcGxpdChcXFxcXFxcIiNcXFxcXFxcIik7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICBsaXN0ID0gY29udHNbaV0uc3BsaXQoXFxcXFxcXCIjXFxcXFxcXCIpO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuICAgIGlmIChnZXRWYXIoXFxcXFxcXCJhcHBtYXBwc29ydFxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIikgPT0gXFxcXFxcXCIwXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgbGlzdC5yZXZlcnNlKCk7XFxcXG4gICAgfVxcXFxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgbGlzdC5sZW5ndGg7IGorKykge1xcXFxuICAgICAgICBsZXQgdmxpbmsgPSBcXFxcXFxcIlxcXFxcXFwiLCB0aXRsZSA9IFxcXFxcXFwiXFxcXFxcXCIsIGppZWsgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICBpZiAoY29udHNbaV0udXJscykge1xcXFxuICAgICAgICAgICAgdmxpbmsgPSBsaXN0W2pdLnVybC5yZXBsYWNlKC8jNDU2Iy9nLCBcXFxcXFxcImh0dHBcXFxcXFxcIikucmVwbGFjZSgvIzEyMyMvZywgXFxcXFxcXCIuXFxcXFxcXCIpLnJlcGxhY2UoLyM3ODkjL2csIFxcXFxcXFwiOlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHRpdGxlID0gbGlzdFtqXS5uYW1lO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgdmxpbmsgPSBsaXN0W2pdLnNwbGl0KFxcXFxcXFwiJFxcXFxcXFwiKVsxXTtcXFxcbiAgICAgICAgICAgIHRpdGxlID0gbGlzdFtqXS5zcGxpdChcXFxcXFxcIiRcXFxcXFxcIilbMF07XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGlmIChodG1sLmRhdGEudm9kX3VybF93aXRoX3BsYXllcikge1xcXFxuICAgICAgICAgICAgICAgIGppZWsgPSBjb250c1tpXS5wYXJzZV9hcGk7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIGlmIChodG1sLmRhdGEudm9kX2luZm8gJiYgaHRtbC5kYXRhLnZvZF9pbmZvLnZvZF91cmxfd2l0aF9wbGF5ZXIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgamllayA9IGNvbnRzW2ldLnBhcnNlX2FwaTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoY29udHNbaV0ucGxheWVyX2luZm8ucGFyc2UyICYmIChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZTIpLmluZGV4T2YoXFxcXFxcXCI9XFxcXFxcXCIpICE9IC0xKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBqaWVrID0gKGNvbnRzW2ldLnBsYXllcl9pbmZvLnBhcnNlMikubWF0Y2goLy4qP3VybD18Lio/dj18Lio/dmlkPS8pWzBdLnJlcGxhY2UoXFxcXFxcXCIuLlxcXFxcXFwiLCBcXFxcXFxcIi5cXFxcXFxcIikucmVwbGFjZShcXFxcXFxcImpzb25ic1xcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZSAmJiAoY29udHNbaV0ucGxheWVyX2luZm8ucGFyc2UpLmluZGV4T2YoXFxcXFxcXCI9XFxcXFxcXCIpICE9IC0xKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgamllayA9IChjb250c1tpXS5wbGF5ZXJfaW5mby5wYXJzZSkubWF0Y2goLy4qP3VybD18Lio/dj18Lio/dmlkPS8pWzBdLnJlcGxhY2UoXFxcXFxcXCIuLlxcXFxcXFwiLCBcXFxcXFxcIi5cXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppZWsgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgIGNhdGNoIChlKSB7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaWYgKGppZWsgIT0gXFxcXFxcXCJcXFxcXFxcIiAmJiBqaWVrICE9IG51bGwpIHtcXFxcbiAgICAgICAgICAgIGlmIChqaWVrLnN1YnN0cmluZygwLCA0KSA9PSBcXFxcXFxcImh0dHBcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgIGppZWsgPSBqaWVrO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoamllay5zdWJzdHJpbmcoMCwgMikgPT0gXFxcXFxcXCIvL1xcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGppZWsgPSBcXFxcXFxcImh0dHBzOlxcXFxcXFwiICsgamllaztcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdHJ5IHtcXFxcbiAgICAgICAgICAgIGlmIChqID09IFxcXFxcXFwiMFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwiXFxcXFxcXFxuXFxcXFxcXFx1N2ViZlxcXFxcXFxcdThkZWY6XFxcXFxcXCIgKyBwdGFiICsgXFxcXFxcXCJcXFxcXFxcXG5cXFxcXFxcXHU4OWUzXFxcXFxcXFx1Njc5MFxcXFxcXFxcdTYzYTVcXFxcXFxcXHU1M2UzOlxcXFxcXFwiICsgamllayk7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsZXQgbGluayA9IGppZWsgKyB2bGluaztcXFxcbiAgICAgICAgaWYgKC9cXFxcXFxcXC5tM3U4fFxcXFxcXFxcLm1wNHxvYmpcXFxcXFxcXC90b3MvLnRlc3QodmxpbmspICYmIC9odHRwLy50ZXN0KHZsaW5rKSkge1xcXFxuICAgICAgICAgICAgbGluayA9IHZsaW5rO1xcXFxuICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgaWYgKC9zaWduPS8udGVzdCh2bGluaykpIHtcXFxcbiAgICAgICAgICAgICAgICBsaW5rID0gdmxpbms7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgaXRlbXMucHVzaCh7dGl0bGU6IHRpdGxlLCBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzRcXFxcXFxcIiwgdXJsOiAkKFxcXFxcXFwiXFxcXFxcXCIpLmxhenlSdWxlKChwdGFiLCBzcmN1cmwsIGRvbWluKSA9PiB7XFxcXG4gICAgICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXHU1MzlmXFxcXFxcXFx1OTRmZVxcXFxcXFxcdTYzYTU6XFxcXFxcXCIgKyBzcmN1cmwpO1xcXFxuICAgICAgICAgICAgZnVuY3Rpb24gb3BlbnVybChyZXN1cmwpIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAocmVzdXJsLm1hdGNoKC95b3VrdXxtZ3R2fGl4aWd1YXxxcS5jb218cWl5aXxtaWd1fGJpbGliaWxpfHNvaHV8cHB0dnxsZXwxOTA1LmNvbS8pICYmIHJlc3VybC5zZWFyY2goL2h0bWx8YmlsaWJpbGkvKSAhPSAtMSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgZW5EbiA9IGdldE15VmFyKFxcXFxcXFwiZG5lblxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChlbkRuID09IFxcXFxcXFwiMVxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2coXFxcXFxcXCJcXFxcXFxcXHU4YzAzXFxcXFxcXFx1NzUyOFxcXFxcXFxcdTY1YWRcXFxcXFxcXHU2M2QyXFxcXFxcXFx1ODllM1xcXFxcXFxcdTY3OTBcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBldmFsKFxcXFxcXFwibGV0IGNvbmZpZyA9XFxcXFxcXCIgKyBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvTXlQYXJzZVNldC5qc29uXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2YWwoZmV0Y2goY29uZmlnLmNqKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKHJlc3VybCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VybDtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICB0cnkge1xcXFxuICAgICAgICAgICAgICAgIGlmICgvXFxcXFxcXFwubTN1OHxcXFxcXFxcXC5tcDR8b2JqXFxcXFxcXFwvdG9zfG5ldGVhc2VcXFxcXFxcXC5jb20vLnRlc3Qoc3JjdXJsKSAmJiAvaHR0cC8udGVzdChzcmN1cmwpICYmICEvXFxcXFxcXFwuaHRtbC8udGVzdChzcmN1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmICgvd2tmaWxlLy50ZXN0KHNyY3VybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzcmN1cmwgKyBcXFxcXFxcIjt7UmVmZXJlckBodHRwczovL2ZhbnR1YW4ud2tmaWxlLmNvbS99XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoL2R1b2R1b3p5Ly50ZXN0KHB0YWIpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGpzb24gPSBmZXRjaChcXFxcXFxcImh0dHBzOi8vcGxheWVyLmR1b2R1b3p5LmNvbS9kZHBsYXkvYXBpLnBocD91cmw9XFxcXFxcXCIgKyBzcmN1cmwsIHt9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShqc29uKS51cmw7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvc2lnbj0vLnRlc3Qoc3JjdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3JjdXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAvXFxcXFxcXFw9Ly50ZXN0KHNyY3VybCkgPyBzcmN1cmwuc3BsaXQoXFxcXFxcXCI9XFxcXFxcXCIpWzFdIDogc3JjdXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChzcmN1cmwuaW5kZXhPZihcXFxcXFxcIi9zaGFyZS9cXFxcXFxcIikgIT0gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxpbmsgPSBzcmN1cmwuc3BsaXQoXFxcXFxcXCIvc2hhcmVcXFxcXFxcIilbMF0sIGZjID0gZmV0Y2goc3JjdXJsLCB7fSkucmVwbGFjZShcXFxcXFxcInZhciBwdXJsXFxcXFxcXCIsIFxcXFxcXFwidmFyIG1haW5cXFxcXFxcIiksIHBsYXkgPSBcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmYy5pbmRleE9mKFxcXFxcXFwibWFpblxcXFxcXFwiKSAhPSAtMSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgbWF0ID0gZmMubWF0Y2goL3ZhciBtYWluLio/Oy8pWzBdO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmFsKG1hdCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXkgPSAobWFpbi5pbmRleE9mKFxcXFxcXFwiaHR0cFxcXFxcXFwiKSAhPSAtMSA/IG1haW4gOiBsaW5rICsgbWFpbik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1haW4gPSBmYy5tYXRjaCgvdXJsOi4qP1tcXFxcXFxcXCdcXFxcXFxcXFxcXFxcXFwiXSguKj8pW1xcXFxcXFxcJ1xcXFxcXFxcXFxcXFxcXCJdLylbMV07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXkgPSAobWFpbi5pbmRleE9mKFxcXFxcXFwiaHR0cFxcXFxcXFwiKSAhPSAtMSA/IG1haW4gOiBsaW5rICsgbWFpbik7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwbGF5O1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ4NVdlYlZpZXc6Ly9cXFxcXFxcIiArIHNyY3VybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdGFiID09IFxcXFxcXFwiYWxpenlcXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwdXJsID0gZmV0Y2goXFxcXFxcXCJodHRwczovL2ZvdWJpbi5jb20vamlleGkucGhwP3VybD1cXFxcXFxcIiArIHNyY3VybC5zcGxpdChcXFxcXFxcInVybD1cXFxcXFxcIilbMV0sIHt9KS5tYXRjaCgvXFxcXFxcXFxcXFxcXFxcInVybFxcXFxcXFxcXFxcXFxcXCI6XFxcXFxcXFxcXFxcXFxcIiguKj8pXFxcXFxcXFxcXFxcXFxcIi8pWzFdO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoLzk4M3ZpcC8udGVzdChzcmN1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGZldGNoKHNyY3VybCwge2hlYWRlcnM6IHtcXFxcXFxcIlVzZXItQWdlbnRcXFxcXFxcIjogTU9CSUxFX1VBfSwgcmVkaXJlY3Q6IGZhbHNlLCB3aXRoSGVhZGVyczogdHJ1ZX0pKS5oZWFkZXJzLmxvY2F0aW9uWzBdO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgveFxcXFxcXFxcLW5cXFxcXFxcXC5jY3xuaGR6NjY2Ly50ZXN0KHNyY3VybCkgJiYgL1xcXFxcXFxcLmh0bWx8YmlsaWJpbGkvLnRlc3Qoc3JjdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFxcXFxcIj1odHRwXFxcXFxcXCIpICsgMSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGxldCBzY29kZSA9IEpTT04ucGFyc2UoZmV0Y2goc3JjdXJsLCB7aGVhZGVyczoge1xcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIkRhcnQvMi4xMyAoZGFydDppbylcXFxcXFxcIn0sIHJlZGlyZWN0OiBmYWxzZSwgd2l0aFN0YXR1c0NvZGU6IHRydWV9KSk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKHNjb2RlLnN0YXR1c0NvZGUgPT0gXFxcXFxcXCIzMDJcXFxcXFxcIiB8fCBzY29kZS5zdGF0dXNDb2RlID09IFxcXFxcXFwiMzAxXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlZHVybCA9IHNjb2RlLmhlYWRlcnMubG9jYXRpb25bMF0ucmVwbGFjZSgvXFxcXFxcXFxcXFxcXFxcXC9nLCBcXFxcXFxcIlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXD1odHRwLy50ZXN0KHJlZHVybCkgJiYgL2h0bWx8YmlsaWJpbGkvLnRlc3QocmVkdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZmV0Y2gocmVkdXJsLCB7fSkpLnVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXFxcXFw9aHR0cC8udGVzdChyZWR1cmwpICYmIC9cXFxcXFxcXC5tM3U4fFxcXFxcXFxcLm1wNHxcXFxcXFxcXC5mbHYvLnRlc3QocmVkdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWR1cmwuc3Vic3RyaW5nKHJlZHVybC5pbmRleE9mKFxcXFxcXFwiPWh0dHBcXFxcXFxcIikgKyAxKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlZHVybDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBodG1sID0gc2NvZGUuYm9keTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKC80MDQgTm90IEZvdW5kfOWkh+ahiOWQjuWPr+e7p+e7reiuv+mXri8udGVzdChodG1sKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wZW51cmwoc3JjdXJsLnN1YnN0cmluZyhzcmN1cmwuaW5kZXhPZihcXFxcXFxcIj1odHRwXFxcXFxcXCIpICsgMSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKC9cXFxcXFxcXDxib2R5Ly50ZXN0KGh0bWwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwiXFxcXFxcXFx1NWMxZFxcXFxcXFxcdThiZDVcXFxcXFxcXHU5NzVlSlNPTlxcXFxcXFxcdTYzYTVcXFxcXFxcXHU1M2UzXFxcXFxcXFx1N2Y1MVxcXFxcXFxcdTk4NzVcXFxcXFxcXHU4OWUzXFxcXFxcXFx1Njc5MFxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlQ2FjaGUoXFxcXFxcXCJodHRwczovL2NvZGUuYWxpeXVuLmNvbS9semsyMzU1OS9QdWJsaWNSdWxlL3Jhdy9tYXN0ZXIveDVydWxlLmpzXFxcXFxcXCIsIDI0KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4geDVydWxlKHNyY3VybCwgc3JjdXJsKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHB1cmwgPSBodG1sLm1hdGNoKC9bXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl11cmxbXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl06Lio/W1xcXFxcXFxcJ1xcXFxcXFxcXFxcXFxcXCJdKC4qPylbXFxcXFxcXFwnXFxcXFxcXFxcXFxcXFxcIl0vKVsxXS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcL2csIFxcXFxcXFwiXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvaHR0cC8udGVzdChwdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocHRhYiA9PSBcXFxcXFxcImJpbGliaWxpXFxcXFxcXCIpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsICsgXFxcXFxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tLyYmVXNlci1BZ2VudEBNb3ppbGxhLzUuMH1cXFxcXFxcIjtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwdGFiID09IFxcXFxcXFwibWd0dlxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHB1cmwgKyBcXFxcXFxcIiNpc1ZpZGVvPXRydWUjXFxcXFxcXCIgKyBcXFxcXFxcIjt7UmVmZXJlckB3d3cubWd0di5jb20mJlVzZXItQWdlbnRATW96aWxsYS81LjB9XFxcXFxcXCI7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvb2piay8udGVzdChwdXJsKSkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHVybCArIFxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vYmFrLm9qYmtqeC5jb20vfVxcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBwdXJsICsgXFxcXFxcXCIjaXNWaWRlbz10cnVlI1xcXFxcXFwiO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgvXFxcXFxcXFw9aHR0cC8udGVzdChzcmN1cmwpICYmIC9cXFxcXFxcXC5odG1sfGJpbGliaWxpLy50ZXN0KHNyY3VybCkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLmluZGV4T2YoXFxcXFxcXCI9aHR0cFxcXFxcXFwiKSArIDEpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBvcGVudXJsKHNyY3VybC5zdWJzdHJpbmcoc3JjdXJsLmluZGV4T2YoXFxcXFxcXCI9aHR0cFxcXFxcXFwiKSArIDEpKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XFxcXG4gICAgICAgICAgICAgICAgbG9nKFxcXFxcXFwiXFxcXFxcXFx1NjI2N1xcXFxcXFxcdTg4NGNcXFxcXFxcXHU2MmE1XFxcXFxcXFx1OTUxOVxcXFxcXFxcdTU5MDRcXFxcXFxcXHU3NDA2XFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgIGlmIChzcmN1cmwuc3Vic3RyaW5nKDAsIDIpID09IFxcXFxcXFwiLy9cXFxcXFxcIikge1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChcXFxcXFxcImh0dHBzOlxcXFxcXFwiICsgc3JjdXJsKTtcXFxcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoL1xcXFxcXFxcPWh0dHAvLnRlc3Qoc3JjdXJsKSAmJiAvXFxcXFxcXFwuaHRtbHxiaWxpYmlsaS8udGVzdChzcmN1cmwpKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwuc3Vic3RyaW5nKHNyY3VybC5pbmRleE9mKFxcXFxcXFwiPWh0dHBcXFxcXFxcIikgKyAxKSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3BlbnVybChzcmN1cmwpO1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgICAgICwgcHRhYiwgbGluaywgZG9taW4pfSk7XFxcXG4gICAgfVxcXFxuICAgIHNldFJlc3VsdChpdGVtcyk7XFxcXG59XFxcXG4pKClcXFwifV1cIn0iLCJwaWNVcmwiOiJodHRwczovL2ltYWdlLnl1bmJveXMuY24vdXBsb2FkL3ZvZC8yMDE5MTAxMy0xLzA5ODIzYzNmNTc2MTJiOGYxNTYxMmZmNmZlZmUxODAxLmpwZ0BSZWZlcmVyPSIsInRpdGxlIjoi6L+Z5Liq55S35Lq65p2l6Ieq5Zyw55CDIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement