Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥漫威合集1.93T@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImdtdE1vZGlmaWVkXCI6MCxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJcIixcImxpc3RUb0NsZWFyQXNzb2NpYXRlZEZLXCI6W10sXCJsaXN0VG9DbGVhclNlbGZGS1wiOltdLFwicGFnZUxpc3RcIjpbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaWh+S7tuWkuVwiLFwicGF0aFwiOlwi5paH5Lu25aS5XCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcblxcblxcbmZ1bmN0aW9uIGZvcm1hdFNpemUobGltaXQpe1xcbiAgICBpZiAoIWxpbWl0IHx8IE51bWJlcihsaW1pdCkgPT0gMCkgcmV0dXJuICcnXFxuICAgIGxpbWl0ID0gTnVtYmVyKGxpbWl0KVxcbiAgICAvLyDlsIZzaXplIELovazmjaLmiJAgTVxcbiAgICB2YXIgc2l6ZSA9ICcnXFxuICAgIGlmIChsaW1pdCA8IDEgKiAxMDI0KSB7XFxuICAgICAgICAvL+Wwj+S6jjFLQu+8jOWImei9rOWMluaIkEJcXG4gICAgICAgIHNpemUgPSBsaW1pdC50b0ZpeGVkKDIpICsgJ0InXFxuICAgIH0gZWxzZSBpZiAobGltaXQgPCAxICogMTAyNCAqIDEwMjQpIHtcXG4gICAgICAgIC8v5bCP5LqOMU1C77yM5YiZ6L2s5YyW5oiQS0JcXG4gICAgICAgIHNpemUgPSAobGltaXQgLyAxMDI0KS50b0ZpeGVkKDIpICsgJ0tCJ1xcbiAgICB9IGVsc2UgaWYgKGxpbWl0IDwgMSAqIDEwMjQgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy/lsI/kuo4xR0LvvIzliJnovazljJbmiJBNQlxcbiAgICAgICAgc2l6ZSA9IChsaW1pdCAvICgxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyAnTUInXFxuICAgIH0gZWxzZSB7XFxuICAgICAgICAvL+WFtuS7lui9rOWMluaIkEdCXFxuICAgICAgICBzaXplID0gKGxpbWl0IC8gKDEwMjQgKiAxMDI0ICogMTAyNCkpLnRvRml4ZWQoMikgKyAnR0InXFxuICAgIH1cXG5cXG4gICAgdmFyIHNpemVTdHIgPSBzaXplICsgJycgLy/ovazmiJDlrZfnrKbkuLJcXG4gICAgdmFyIGluZGV4ID0gc2l6ZVN0ci5pbmRleE9mKCcuJykgLy/ojrflj5blsI/mlbDngrnlpITnmoTntKLlvJVcXG4gICAgdmFyIGRvdSA9IHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMSwgMikgLy/ojrflj5blsI/mlbDngrnlkI7kuKTkvY3nmoTlgLxcXG4gICAgaWYgKGRvdSA9PSAnMDAnKSB7XFxuICAgICAgICAvL+WIpOaWreWQjuS4pOS9jeaYr+WQpuS4ujAw77yM5aaC5p6c5piv5YiZ5Yig6ZmkMDBcXG4gICAgICAgIHJldHVybiBzaXplU3RyLnN1YnN0cmluZygwLCBpbmRleCkgKyBzaXplU3RyLnN1YnN0cihpbmRleCArIDMsIDIpXFxuICAgIH1cXG4gICAgcmV0dXJuIHNpemVcXG59XFxuXFxuXFxuXFxuXFxuZnVuY3Rpb24g6Kej5a+G5YiG5Lqr6ZO+5o6lKGkpIHtcXG5cXG5vID0gXFxcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cXFwiXFxucyA9IC9bXFxcXHRcXFxcblxcXFxmXFxcXHIgXS9nXFxuXFxuXFxuXFxuICAgICAgICAgICAgaSA9IFN0cmluZyhpKS5yZXBsYWNlKHMsIFxcXCJcXFwiKTtcXG4gICAgICAgICAgICBsb2coXFxcIuWHuumUmTFcXFwiKVxcbiAgICAgICAgICAgIHZhciBJID0gaS5sZW5ndGg7XFxuICAgICAgICAgICAgSSAlIDQgPT0gMCAmJiAoaSA9IGkucmVwbGFjZSgvPT0/JC8sIFxcXCJcXFwiKSxcXG4gICAgICAgICAgICBJID0gaS5sZW5ndGgpLFxcbiAgICAgICAgICAgIGxvZyhcXFwi5Ye66ZSZMlxcXCIpXFxuICAgICAgICAgICAgKEkgJSA0ID09IDEgfHwgL1teK2EtekEtWjAtOS9dLy50ZXN0KGkpKSAmJiBsKFxcXCJJbnZhbGlkIGNoYXJhY3RlcjogdGhlIHN0cmluZyB0byBiZSBkZWNvZGVkIGlzIG5vdCBjb3JyZWN0bHkgZW5jb2RlZC5cXFwiKTtcXG4gICAgICAgICAgICBmb3IgKHZhciBmID0gMCwgQiwgaywgaiA9IFxcXCJcXFwiLCBHID0gLTE7ICsrRyA8IEk7IClcXG4gICAgICAgICAgICAgICAgayA9IG8uaW5kZXhPZihpLmNoYXJBdChHKSksXFxuICAgICAgICAgICAgICAgIEIgPSBmICUgNCA/IEIgKiA2NCArIGsgOiBrLFxcbiAgICAgICAgICAgICAgICBmKysgJSA0ICYmIChqICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoMjU1ICYgQiA+PiAoLTIgKiBmICYgNikpKTtcXG4gICAgICAgICAgICByZXR1cm4galxcbiAgICAgICAgfVxcblxcblxcblxcblxcblxcblxcblxcblxcbmlkPU1ZX1BBUkFNUy5pZFxcbuWIhuS6q+eUqOaIt2lkPU1ZX1BBUkFNUy51c2VyaWRcXG7pnIDopoHnlKjmiLdpZD1NWV9QQVJBTVMu6ZyA6KaB55So5oi3aWRcXG5cXG5pZighaWQpe1xcbmlkPTBcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIueuoeeQhui0puWPt1xcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL+euoeeQhui0puWPt1xcXCJcXG59KVxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi5a+75om+6LWE5rqQXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uv5a+75om+6LWE5rqQP3BhZ2U9ZnlwYWdlXFxcIlxcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLop6PmnpDliIbkuqvpk77mjqVcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgIHVybDogJCgpLmlucHV0KCjop6Plr4bliIbkuqvpk77mjqUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlucHV0PWlucHV0Lm1hdGNoKC9zaGFyZUlkXFxcXD0oLiopJi8pWzFdXFxuICAgICAgICAgICAgICAgICAgICBpbnB1dD3op6Plr4bliIbkuqvpk77mjqUoaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ+WIhuS6q+mTvuaOpWlkJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS/op6PmnpDliIbkuqvpk77mjqU/aWQ9XFxcIitpbnB1dFxcbiAgICAgICAgICAgICAgICB9LOino+WvhuWIhuS6q+mTvuaOpSlcXG59KVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi6Kej5p6Q5paH5Lu2SURcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgIHVybDogJCgpLmlucHV0KCjop6Plr4bliIbkuqvpk77mjqUpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlucHV0PWlucHV0Lm1hdGNoKC9zaGFyZUlkXFxcXD0oLiopJi8pWzFdXFxuICAgICAgICAgICAgICAgICAgICBpbnB1dD3op6Plr4bliIbkuqvpk77mjqUoaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ+WIhuS6q+mTvuaOpWlkJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS/op6PmnpDliIbkuqvpk77mjqU/aWQ9XFxcIitpbnB1dFxcbiAgICAgICAgICAgICAgICB9LOino+WvhuWIhuS6q+mTvuaOpSlcXG59KVxcblxcbmQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxuICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXG4gICAgfSk7XFxuXFxuZnVuY3Rpb24gZ2V0QWNjb3VudHMoZmlsZSkge1xcbiAgICByZXR1cm4gSlNPTi5wYXJzZShyZWFkRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCAwKSB8fCByZXF1ZXN0KGZpbGUpIHx8ICdbXScpO1xcbn1cXG5cXG5cXG5mdW5jdGlvbiBnZXRDdXJJdGVtKCkge1xcbiAgICBsZXQgaXRlbSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcImN1ckl0ZW1cXFwiKVxcbiAgICAgbG9nKFxcXCLlh7rplJkzXFxcIilcXG4gICAgaWYgKCFpdGVtKSB7XFxuICAgICAgICBsZXQgbGlzdCA9IGdldEFjY291bnRzKCk7XFxuICAgICAgICBsb2cobGlzdClcXG4gICAgICAgIGl0ZW0gPSBsaXN0Lmxlbmd0aCA/IGxpc3RbMF0gOiB7fTtcXG4gICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImN1ckl0ZW1cXFwiLCBpdGVtKVxcbiAgICB9XFxuXFxuICAgIHJldHVybiBpdGVtXFxuXFxufVxcblxcbnZhciBjdXJJdGVtID0gZ2V0Q3VySXRlbSgpXFxuXFxubGV0IHN1Yl9hY2NvdW50cyA9IGdldEFjY291bnRzKCk7XFxuICAgIHN1Yl9hY2NvdW50cy5mb3JFYWNoKChpdGVtKSA9PiB7XFxuICAgICAgICB2YXIgaXNDbGlja2VkID0gY3VySXRlbS5uYW1lID09PSBpdGVtLm5hbWU7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpc0NsaWNrZWQgPyBcXFwi4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj0nIzFFOTBGRic+XFxcIiArIGl0ZW0ubmFtZSArIFxcXCI8L2Zyb250Pjwvc3Ryb25nPlxcXCIgOiBpdGVtLm5hbWUsXFxuICAgICAgICAgICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChpdGVtKSA9PiB7XFxuICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oXFxcImN1ckl0ZW1cXFwiLCBpdGVtKTtcXG5cXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcIlxcbiAgICAgICAgICAgIH0sIGl0ZW0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFwic2Nyb2xsX2J1dHRvblxcXCJcXG4gICAgICAgIH0pO1xcbiAgICB9KTtcXG4gICAgXFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogXFxcImJsYW5rX2Jsb2NrXFxcIlxcbiAgICB9KTtcXG4gIFxcblxcbn1cXG5JUEZT5a+G6ZKlPXN0b3JhZ2UwLmdldEl0ZW0oJ2N1ckl0ZW0nKS51c2VyXFxuXFxubG9nKHN0b3JhZ2UwLmdldEl0ZW0oJ2N1ckl0ZW0nKSlcXG5cXG5cXG7or7fmsYLlj5jph49iPVxcXCJcXFwiXFxuXFxuaWYo6ZyA6KaB55So5oi3aWQmJuWIhuS6q+eUqOaIt2lkKXtcXG5cXG7or7fmsYLlj5jph49hPVxcXCJ2Mi4wL2Nsb3VkL2ZpbGVMaXN0XFxcIlxcblxcbuivt+axguWPmOmHj2I9XFxcInYyLjAvY2xvdWQvZm9sZGVyTGlzdFxcXCJcXG5cXG5cXG59XFxuXFxubG9nKOWIhuS6q+eUqOaIt2lkKVxcbmlmKCHliIbkuqvnlKjmiLdpZCl7XFxuXFxubG9nKFxcXCLmsqHmnInojrflj5bmiJDlip/nlKjmiLdpZFxcXCIpXFxu6K+35rGC5Y+Y6YePYT1cXFwidjEuMi9jbG91ZC9maWxlU3VwZXJMaXN0XFxcIlxcbui6q+S9kz1ge1xcblxcXCJmaWxlVHlwZVxcXCI6W10sXFxuXFxcImtleXdvcmRzXFxcIjpcXFwiXFxcIixcXG5cXFwicGFnZU51bVxcXCI6MSxcXG5cXFwicGFnZVNpemVcXFwiOjEwMCxcXG5cXFwicGFyZW50SWRcXFwiOlxcXCJgK2lkK2BcXFwiLFxcblxcXCJzb3J0TWV0aG9kXFxcIjpcXFwiZGVzY1xcXCIsXFxuXFxcInNvcnRUeXBlXFxcIjpcXFwidGltZVxcXCJcXG59YFxcblxcbn1lbHNle1xcblxcblxcbui6q+S9kz1ge1xcXCJwYXJlbnRJZFxcXCI6XFxcImAraWQrYFxcXCIsXFxcInVzZXJJZFxcXCI6XFxcImAr5YiG5Lqr55So5oi3aWQrYFxcXCJ9YFxcblxcbn1cXG5cXG5cXG5cXG5cXG5cXG5cXG7lpLTpg6g9e1xcblxcXCJSZWZlcmVyXFxcIjpcXFwiaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIixcXG5cXFwiQXV0aG9yaXphdGlvblxcXCI6XFxcIkJlYXJlciBcXFwiK0lQRlPlr4bpkqVcXG59XFxuXFxuXFxu5bCP6b6Z5LqR6K+35rGCPVxcXCJodHRwczovL3Byb2R1Y3RhcGkuc3Rhcml2ZXJwYW4uY29tL2Ntc3Byb3ZpZGVyL1xcXCIr6K+35rGC5Y+Y6YePYVxcblxcblxcblxcblxcbuesrOS4gOasoeWTjeW6lD1wb3N0KOWwj+m+meS6keivt+axgix7aGVhZGVyczog5aS06YOoLGJvZHk66Lqr5L2TfSlcXG5cXG4vL2xvZyjnrKzkuIDmrKHlk43lupQpXFxuXFxudHJ5IHtcXG5cXG7liJfooag9SlNPTi5wYXJzZSjnrKzkuIDmrKHlk43lupQpLmRhdGFcXG5cXG5cXG5sb2co56ys5LiA5qyh5ZON5bqUKVxcbmxvZyhcXFwi5Ye66ZSZNFxcXCIpXFxuXFxuaWYo5YiX6KGoLmxlbmd0aDwxJibor7fmsYLlj5jph49iIT1cXFwiXFxcIil7XFxuICAgIFxcbiAgICDlsI/pvpnkupHor7fmsYI9XFxcImh0dHBzOi8vcHJvZHVjdGFwaS5zdGFyaXZlcnBhbi5jb20vY21zcHJvdmlkZXIvXFxcIivor7fmsYLlj5jph49iXFxuICAgIFxcbiAgICBsb2coXFxcIuWQr+WKqGLor7fmsYJcXFwiKVxcbiAgICDnrKzkuIDmrKHlk43lupQ9cG9zdCjlsI/pvpnkupHor7fmsYIse2hlYWRlcnM6IOWktOmDqCxib2R5Oui6q+S9k30pXFxuXFxuLy9sb2co56ys5LiA5qyh5ZON5bqUKVxcblxcblxcblxcbuWIl+ihqD1KU09OLnBhcnNlKOesrOS4gOasoeWTjeW6lCkuZGF0YVxcbiAgICBcXG59XFxuXFxuXFxuXFxubG9nKOWIl+ihqClcXG5cXG5cXG5cXG5cXG5mb3IgKHZhciBpIGluIOWIl+ihqCkge1xcbiAgICAgICAg5qCH6aKYPeWIl+ihqFtpXS5maWxlTmFtZVxcbiAgICAgICAgaWQ95YiX6KGoW2ldLmlkXFxuICAgICAgICDmlofku7blpKflsI895YiX6KGoW2ldLmZpbGVTaXplXFxuXFxuXFxuXFxuXFxuXFxuXFxuaWYo5paH5Lu25aSn5bCPPT0wKXtcXG5kLnB1c2goe1xcbnRpdGxlOuagh+mimCxcXG5waWNfdXJsOlxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWduN2ZuaGFoYzV1ejR2NmZ1ZzNya2ZicXp4MnI2b3YzNHV0cGtnZWtjeWljeGp6djJndHkjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCIsXFxudXJsOlxcXCJoaWtlcjovL3BhZ2Uv5paH5Lu25aS5XFxcIixcXG5kZXNjOmlkLFxcbmV4dHJhOumcgOimgeeUqOaIt2lkJibliIbkuqvnlKjmiLdpZCA/e2lkOmlkLHVzZXJpZDrliIbkuqvnlKjmiLdpZCzpnIDopoHnlKjmiLdpZDpcXFwi6ZyA6KaBXFxcIn06e2lkOmlkfSxcXG5jb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KTtcXG59ZWxzZXtcXG5cXG7mlofku7bmoLzlvI895YiX6KGoW2ldLnN1ZmZpeFxcbuaWh+S7tkNJRD3liJfooahbaV0uZmlsZUNpZFxcbuaWh+S7tuWkp+Wwjz1mb3JtYXRTaXplKOaWh+S7tuWkp+WwjylcXG5cXG5cXG5cXG5pZigvKGpwZ3xnaWZ8cG5nfGpwZWcpJC9pLnRlc3Qo5qCH6aKYKSl7XFxuXFxu5qC85byPPVxcXCIjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG7lm77niYc9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFwiK+aWh+S7tkNJRCtcXFwiQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIlxcblxcbn1lbHNlIGlmKC9cXFxcLihhdml8dHN8bXA0fG1vdnxtNHZ8M2dwfHJtfHJtdmJ8d212fGFzZnxhc3hhdml8ZGF0fG1rdnxmbHZ8dm9iKSQvaS50ZXN0KOagh+mimCkpe1xcbuWbvueJhz1cXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWljNG9kNG96d3BobWJjdnV0d3Z4bjN2Z2F1bDR3NW52N3p3cGhlM21heXNrYmQ3ejdsdmllQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIlxcbuagvOW8jz1cXFwiI2lzVmlkZW89dHJ1ZSM7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCJcXG59ZWxzZSBpZigvKG1wM3x3bWEpJC9pLnRlc3Qo5qCH6aKYKSl7XFxuXFxu5qC85byPPVxcXCIjLm1wMzt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcIlxcbuWbvueJhz1cXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWllNjNucWdpYXRwa3V4dmZmZWJ2Z2hkczdhb29wZGN4N2xpaXd0ajJxeXJqY2NoNjI1MmR1Iy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxuXFxufWVsc2V7XFxu5qC85byPPVxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCJcXG7lm77niYc9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpZm9oZnp5YWpvNWkzNjdncHk1NXRsM2syNGluZmZ4ZHNxd2xmZTRsY2JmNmQ0ZXJxYXVvZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG59XFxuXFxu6ZO+5o6lPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIivmlofku7ZDSUQr5qC85byPXFxuXFxuZC5wdXNoKHtcXG50aXRsZTrmlofku7blpKflsI8rXFxcIi1cXFwiK+agh+mimCxcXG5waWNfdXJsOuWbvueJhyxcXG51cmw65qC85byPPT1cXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiP1xcXCJkb3dubG9hZDovL1xcXCIr6ZO+5o6lOumTvuaOpSxcXG5kZXNjOmlkLFxcbmV4dHJhOntpZDppZH0sXFxuY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxufSk7XFxuXFxuXFxuXFxuXFxufVxcblxcblxcbiBcXG5cXG59XFxuXFxufSBjYXRjaCAoZSkge1xcbiAgICBsb2coZS5tZXNzYWdlKVxcbn1cXG5cXG5cXG5cXG5cXG5cXG5zZXRSZXN1bHQoZCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLnrqHnkIbotKblj7dcIixcInBhdGhcIjpcIueuoeeQhui0puWPt1wiLFwicnVsZVwiOlwianM6XFxudmFyIGQgPSBbXTtcXG5sZXQg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlID0gSlNPTi5wYXJzZShyZWFkRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCAwKSB8fCAnW10nKTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+WQjeensCcsXFxuICAgIGRlc2M6ICflpIfms6guLi4nLFxcbiAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHt9KSxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ25hbWUnLCAnJyksXFxuICAgICAgICBvbkNoYW5nZTogJ3B1dE15VmFyKFxcXCJuYW1lXFxcIixpbnB1dCknXFxuICAgIH1cXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+i0puWPtyjlr4bpkqUpJyxcXG4gICAgY29sX3R5cGU6ICdpbnB1dCcsXFxuICAgIHVybDogJC50b1N0cmluZygoKSA9PiB7fSksXFxuICAgIGV4dHJhOiB7XFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCd1c2Vya2V5JywgJycpLFxcbiAgICAgICAgb25DaGFuZ2U6ICdwdXRNeVZhcihcXFwidXNlcmtleVxcXCIsaW5wdXQpJ1xcbiAgICB9XFxufSk7XFxuXFxuXFxuZnVuY3Rpb24gc2F2ZVN1YigpIHtcXG4gICAgbGV0IGFfbmFtZSA9IGdldE15VmFyKCduYW1lJywgJycpLnRyaW0oKTtcXG4gICAgbGV0IGFfdXNlciA9IGdldE15VmFyKCd1c2Vya2V5JywgJycpLnRyaW0oKTtcXG4gICAgXFxuXFxuXFxuICAgIGlmICghYV9uYW1lIHx8ICFhX3VzZXIgKSB7XFxuICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+h5oGv5LiN5a6M5pW0ISdcXG4gICAgfVxcblxcblxcbiAgICBsZXQg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlID0gSlNPTi5wYXJzZShyZWFkRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCAwKSB8fCAnW10nKTtcXG4gICAgbGV0IGlkZXggPSDlsI/kupHpvpnkupHnm5jlr4bpkqUuZmluZEluZGV4KGl0ID0+IGl0Lm5hbWUgPT09IGFfbmFtZSk7XFxuICAgIGlmIChpZGV4ID4gLTEpIHtcXG4gICAgICAgIGlmICjlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0udXNlciAhPT0gYV91c2VyICkge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS51c2VyID0gYV91c2VyO1xcbiAgICAgICAgICAgIHJldHVybiAkKCfmo4DmtYvliLDmnKzlnLDmnInph43lpI3nmoQnICsgYV9uYW1lICsgJyzmmK/lkKbopobnm5Y/JykuY29uZmlybSgo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKSA9PiB7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lkv53lrZgnXFxuICAgICAgICAgICAgfSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKVxcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5pON5L2cJ1xcbiAgICAgICAgfVxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLnVuc2hpZnQoe1xcbiAgICAgICAgICAgIG5hbWU6IGFfbmFtZSxcXG4gICAgICAgICAgICB1c2VyOiBhX3VzZXIsXFxuICAgICAgICAgICAgXFxuXFxuICAgICAgICB9KTtcXG4gICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+W3suS/neWtmCdcXG4gICAgfVxcblxcbn1cXG5cXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+aWsOWinui0puWPtycsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzYXZlU3ViKSA9PiB7XFxuICAgICAgICBsZXQgdGlwcyA9IHNhdmVTdWIoKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcIm5hbWVcXFwiKTtcXG4gICAgICAgIGNsZWFyTXlWYXIoXFxcInVzZXJrZXlcXFwiKTtcXG4gICAgICAgIFxcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuIHRpcHNcXG4gICAgfSwgc2F2ZVN1YilcXG59KTtcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+WvvOWHuui0puWPtycsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKCjlsI/kupHpvpnkupHnm5jlr4bpkqUpID0+IHtcXG5cXHQgIGxldCBwYXRoPVxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL3Bpa3Bha191c2VyLmpzb25cXFwiXFxuICAgICAgICB3cml0ZUZpbGUocGF0aCxKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpKVxcbiAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+W3suWvvOWHuui0puWPt+WIl+ihqOaWh+S7tuWIsFxcXCIrcGF0aFxcbiAgICB9LCDlsI/kupHpvpnkupHnm5jlr4bpkqUpXFxufSk7XFxuXFxuXFxuLypkLnB1c2goe1xcbiAgICB0aXRsZTogJ+mCgOivt+eggScsXFxuICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge30pLFxcbiAgICBleHRyYToge1xcbnR5cGU6XFxcIm51bWJlclxcXCIsXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCdpbnZpdGVDb2RlJywgJycpLFxcbiAgICAgICAgb25DaGFuZ2U6ICdwdXRNeVZhcihcXFwiaW52aXRlQ29kZVxcXCIsaW5wdXQpJ1xcbiAgICB9XFxufSk7Ki9cXG5cXG7lsI/kupHpvpnkupHnm5jlr4bpkqUuZm9yRWFjaCgoaXQsIGlkZXgpID0+IHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpdC5uYW1lLFxcbiAgICAgICAgZGVzYzogaXQudXNlciArIChpdC5pc0xvY2FsID8gJ1xcXFxu5pys5Zyw5YiX6KGo5qih5byP77yM5YWx5pyJ5pys5Zyw5pWw5o2u5p2h5pWw77yaJyArIEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvY2FjaGUvJyArIGl0Lm5hbWUgKyAnLmpzb24nKSB8fCAnW10nKS5sZW5ndGggOiAnJyksXFxuICAgICAgICB1cmw6ICQoWyfnva7pobYnLCAn5Yig6ZmkJywgJ+S/ruaUuei0puWPtycsICfkv67mlLnlr4bnoIEnLCAn6L2s5Li65pys5Zyw5YiX6KGoJywgJ+aBouWkjeS4uuWunuaXtuWIl+ihqCcsICfpgoDor7fms6jlhownLCAn5pWw5o2u6L2s5a2YJ10sIDIsICfor7fpgInmi6kx5Liq5pON5L2cJykuc2VsZWN0KChpdCwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KSA9PiB7XFxuICAgICAgICAgICAgaWYgKGlucHV0ID09PSAn572u6aG2Jykge1xcbiAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqUuc3BsaWNlKGlkZXgsIDEpO1xcbiAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqUudW5zaGlmdChpdCk7XFxuICAgICAgICAgICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcblxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv67mlLnmiJDlip8nXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ+WIoOmZpCcpIHtcXG4gICAgICAgICAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLnNwbGljZShpZGV4LCAxKTtcXG4gICAgICAgICAgICAgICAgaWYgKHN0b3JhZ2UwLmdldEl0ZW0oXFxcImN1ckl0ZW1cXFwiLCB7fSkubmFtZSA9PT0gaXQubmFtZSkge1xcbiAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiY3VySXRlbVxcXCIsIOWwj+S6kem+meS6keebmOWvhumSpVswXSk7XFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oaXQubmFtZSlcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS8nICsgaXQubmFtZSArICcuanNvbicsICcnKVxcbiAgICAgICAgICAgICAgICAgICAgXFxuXFxuXFxuICAgICAgICAgICAgICAgIH1cXG5cXHRcXHRcXHRcXHRzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/liKDpmaTmiJDlip8nXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ+S/ruaUuei0puWPtycpIHtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoaXQudXNlciwgJ+e7meatpOi0puWPt+aUueS4quWQjeWtl+WQpycpLmlucHV0KCjlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQudHJpbSgpO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0KSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlW2lkZXhdLnVzZXIgPSBpbnB1dDtcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S/ruaUueaIkOWKnydcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S/ruaUueWksei0pSdcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn5L+u5pS55a+G56CBJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJChpdC5wYXNzLCAn57uZ5q2k6LSm5Y+35pS55Liq5a+G56CB5ZCnJykuaW5wdXQoKOWwj+S6kem+meS6keebmOWvhumSpSwgaWRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC50cmltKCk7XFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0ucGFzcyA9IGlucHV0O1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55oiQ5YqfJ1xcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55aSx6LSlJ1xcbiAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB9LCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfovazkuLrmnKzlnLDliJfooagnKSB7XFxuICAgICAgICAgICAgICAgIHJldHVybiAkKCkubGF6eVJ1bGUoKGl0ZW0sIOWwj+S6kem+meS6keebmOWvhumSpSwgaWRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEFsbEZpbGVzXFxuICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY29kZT9ydWxlPVBpa1Bha1xcXCIpXFxuXFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGdldEFsbEZpbGVzKGl0ZW0pXFxuXFxuICAgICAgICAgICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvJyArIGl0ZW0ubmFtZSArICcuanNvbicsIEpTT04uc3RyaW5naWZ5KGxpc3QpKTtcXG5cXG4gICAgICAgICAgICAgICAgICAgIOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS5pc0xvY2FsID0gdHJ1ZTtcXG4gICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IGNpID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiY3VySXRlbVxcXCIsIHt9KTtcXG4gICAgICAgICAgICAgICAgICAgIGlmICjlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0ubmFtZSA9PSBjaS5uYW1lKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY2kuaXNMb2NhbCA9IHRydWU7XFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnY3VySXRlbScsIGNpKVxcbiAgICAgICAgICAgICAgICAgICAgfVxcblxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S/ruaUueaIkOWKnydcXG4gICAgICAgICAgICAgICAgfSwgaXQsIOWwj+S6kem+meS6keebmOWvhumSpSwgaWRleClcXG5cXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn5oGi5aSN5Li65a6e5pe25YiX6KGoJykge1xcbiAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0uaXNMb2NhbCA9IGZhbHNlO1xcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXG4gICAgICAgICAgICAgICAgbGV0IGNpID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiY3VySXRlbVxcXCIsIHt9KTtcXG4gICAgICAgICAgICAgICAgaWYgKOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS5uYW1lID09IGNpLm5hbWUpIHtcXG4gICAgICAgICAgICAgICAgICAgIGNpLmlzTG9jYWwgPSBmYWxzZTtcXG4gICAgICAgICAgICAgICAgICAgIHN0b3JhZ2UwLnNldEl0ZW0oJ2N1ckl0ZW0nLCBjaSlcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv67mlLnmiJDlip8nXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ+mCgOivt+azqOWGjCcpIHtcXG4gICAgICAgICAgICAgICAgXFxubGV0IHBpZD0kLmRhdGVGb3JtYXQobmV3IERhdGUoKS5nZXRUaW1lKCksJ2RkLUhIbW0nKVxcbiAgICAgICAgICAgICAgICByZXR1cm4gJChwaWQsICflpIfms6jlkI3np7AnKS5pbnB1dCgo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBpbnB1dCA9IGlucHV0LnRyaW0oKTtcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmICjlsI/kupHpvpnkupHnm5jlr4bpkqUuZmluZEluZGV4KGl0ID0+IGl0Lm5hbWUgPT09IGlucHV0KSA+IC0xKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/pobnnm67lkI3np7Dph43lpI3vvIzor7fph43mlrDovpPlhaXvvIFcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB0aGlzSXRlbSA9IOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldE5ld1VzZXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldERvbWFpbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0WXptXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPTFTZWNNYWlsXFxcIik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcGssXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEluaXRQYXJhbXNcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2Uvc2lnbj9ydWxlPVBpa1Bha1xcXCIpXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy/ojrflj5bpgoDor7fnoIFcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgaUNvZGUgPSAnJztcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ2V0TXlWYXIoJ2ludml0ZUNvZGUnLCAnJykgPT0gJycpIHtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SW52aXRlQ29kZSxcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFwiaGlrZXI6Ly9wYWdlL2NvZGU/cnVsZT1QaWtQYWtcXFwiKVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpQ29kZSA9IGdldEludml0ZUNvZGUo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlW2lkZXhdKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlW2lkZXhdLmludml0ZUNvZGUgPSBpQ29kZTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbG9nKGlDb2RlKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlDb2RlID0gZ2V0TXlWYXIoJ2ludml0ZUNvZGUnKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kb3duIGFwa1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMb2FkaW5nKCforr/pl67pgoDor7fpobUnKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QoJ2h0dHBzOi8vdG9hcHAubXlwaWtwYWsuY29tL2FjdGl2aXR5L2ludml0ZWQ/Y29kZT0nICsgaUNvZGUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdChKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS9wYWNrYWdlL3YxL2Fway91cmwvJyArIGlDb2RlKSkuYXBrX3VybCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0OiA1MDBcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZygn5rOo5YaM5bCP5Y+3JylcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dldCB1c2VyXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXIgPSBnZXROZXdVc2VyKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHBhc3MgPSBnZXROZXdVc2VyKCdhQUAnLCA3KTtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG9tYWluID0gZ2V0RG9tYWluKCk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHVzZXJrZXkgPSB1c2VyICsgJ0AnICsgZG9tYWluO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0IHZlcmlmeSBjb2RlIHNlbmQgbWFpbFxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB4aGVhZGVycyA9IGdldEluaXRQYXJhbXMoXFxcIlBPU1Q6L3YxL2F1dGgvdmVyaWZpY2F0aW9uXFxcIiwgJycsICcnLCB1c2Vya2V5KTtcXG5cXG5mZXRjaCgnaHR0cHM6Ly9jb25maWcubXlwaWtwYWsuY29tL2NvbmZpZy92MS9nbG9iYWxDb25maWcnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImRhdGFcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiZGV2aWNlX2lkXFxcIjogeGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidXNlcl9pZFxcXCI6IFxcXCJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwibGFuZ3VhZ2Vfc3lzdGVtXFxcIjogXFxcInpoLUNOXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImxhbmd1YWdlX2FwcFxcXCI6IFxcXCJ6aC1DTlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpbnN0YWxsX2Zyb21cXFwiOiBcXFwiXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInByb2R1Y3RfZmxhdm9yX25hbWVcXFwiOlxcXCJjaGFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiY2hhbm5lbF9pZFxcXCI6IFxcXCJzcHJlYWRcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvbmNvZGVcXFwiOiBhcGsudmVyc2lvbkNvZGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uXFxcIjogYXBrLmNsaWVudFZlcnNpb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb3VudHJ5XFxcIjogXFxcIkNOXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24tY29kZSc6IGFway52ZXJzaW9uQ29kZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbi1uYW1lJzogYXBrLmNsaWVudFZlcnNpb24sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbS12ZXJzaW9uJzonMjInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdidWlsZC1tYW51ZmFjdHVyZXInOidIVUFXRUknLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwaG9uZS1tb2RlbCc6J1RBUy1BTjAwJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhbm5lbC1pZCc6ICdzcHJlYWQnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkZXZpY2UtaWQnOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdva2h0dHAvMy4xMi4xMydcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImVtYWlsXFxcIjogdXNlcmtleSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInRhcmdldFxcXCI6IFxcXCJBTllcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidXNhZ2VcXFwiOiBcXFwiUkVHSVNURVJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiY2xpZW50X2lkXFxcIjogYXBrLmNsaWVudElkXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2aWQgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3VzZXIubXlwaWtwYWsuY29tL3YxL2F1dGgvdmVyaWZpY2F0aW9uP2NsaWVudF9pZD1ZTnhUOXc3R01kV3ZFT0thJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB4aGVhZGVyc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS52ZXJpZmljYXRpb25faWQ7XFxuXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgbWFpbCB5em1cXG4gICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZygn6aqM6K+B6YKu566xJylcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgeXptID0gZ2V0WXptKHVzZXIsIGRvbWFpbik7XFxuICAgICAgICAgICAgICAgICAgICAgICAgLy92ZXJpZnlcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5ID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidmVyaWZpY2F0aW9uX2lkXFxcIjogdmlkLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidmVyaWZpY2F0aW9uX2NvZGVcXFwiOiB5em0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjbGllbnRfaWRcXFwiOiBhcGsuY2xpZW50SWRcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZlcmlmeSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvYXV0aC92ZXJpZmljYXRpb24vdmVyaWZ5P2NsaWVudF9pZD1ZTnhUOXc3R01kV3ZFT0thJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBib2R5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB4aGVhZGVyc1xcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS52ZXJpZmljYXRpb25fdG9rZW47XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9sb2coJ3Y6JyArIHZlcmlmeSlcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NpZ251cFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJlbWFpbFxcXCI6IHVzZXJrZXksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJpZmljYXRpb25fY29kZVxcXCI6IHl6bSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInZlcmlmaWNhdGlvbl90b2tlblxcXCI6IHZlcmlmeSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInBhc3N3b3JkXFxcIjogcGFzcyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNsaWVudF9pZFxcXCI6IGFway5jbGllbnRJZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNsaWVudF9zZWNyZXRcXFwiOiBhcGsuY2xpZW50U2VjcmV0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gZmV0Y2goJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvYXV0aC9zaWdudXA/Y2xpZW50X2lkPVlOeFQ5dzdHTWRXdkVPS2EnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHhoZWFkZXJzXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzID0gSlNPTi5wYXJzZShyZXMpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBhY3Rva2VuID0gcmVzLmFjY2Vzc190b2tlbjtcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdWlkID0gcmVzLnN1YjtcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2lmIHJlZ2lzdGVyIHN1c3Mgc2F2ZVxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rva2VuKSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdJdGVtID0ge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogaW5wdXQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyOiB1c2Vya2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzczogcGFzcyxcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfTtcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXRlbShuZXdJdGVtLm5hbWUsIGFjdG9rZW4pO1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXCJjdXJJdGVtXFxcIiwgbmV3SXRlbSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vZ2V0IHZpcFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZygn5rOo5YaM5oiQ5Yqf77yM6aKG5Y+Wdmlw5bm25aGr5YaZ6YKA6K+356CBJylcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nKGZldGNoKCdodHRwczovL2FwaS1kcml2ZS5teXBpa3Bhay5jb20vdmlwL3YxL2FjdGl2aXR5L2NoZWNrSW52aXRlP3VzZXJpZD0nICsgdWlkLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlJzogJ3poLWNuJ1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLypsb2coZmV0Y2goJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS92aXAvdjEvYWN0aXZpdHkvaW52aXRlJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJmcm9tXFxcIjogXFxcIndlYlxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY3Rva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWNhcHRjaGEtdG9rZW4nOiB4aGVhZGVyc1sneC1jYXB0Y2hhLXRva2VuJ10sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtZGV2aWNlLWlkJzogeGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSovXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qeGhlYWRlcnMgPSBnZXRJbml0UGFyYW1zKFxcXCJHRVQ6L2RyaXZlL3YxL3ByaXZpbGVnZS92aXBcXFwiLHVpZCx4aGVhZGVyc1sneC1jYXB0Y2hhLXRva2VuJ10sJycpO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KCdodHRwczovL2FwaS1kcml2ZS5teXBpa3Bhay5jb20vZHJpdmUvdjEvcHJpdmlsZWdlL3ZpcCcse1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczp7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOidCZWFyZXIgJythY3Rva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAneC1jYXB0Y2hhLXRva2VuJzp4aGVhZGVyc1sneC1jYXB0Y2hhLXRva2VuJ10sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtZGV2aWNlLWlkJzp4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSwgICAgICBcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KSovXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vb25pbnN0YWxsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhmZXRjaCgnaHR0cHM6Ly9jb25maWcubXlwaWtwYWsuY29tL2NvbmZpZy92MS91cmxzT25JbnN0YWxsJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJkYXRhXFxcIjoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2RrX2ludFxcXCI6IFxcXCIyMlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1dWlkXFxcIjogeGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ1c2VyVHlwZVxcXCI6IFxcXCIxXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVzZXJpZFxcXCI6IHVpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImxhbmd1YWdlX3N5c3RlbVxcXCI6IFxcXCJ6aC1DTlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYW5ndWFnZV9hcHBcXFwiOiBcXFwiemgtQ05cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiYnVpbGRfdmVyc2lvbl9yZWxlYXNlXFxcIjogXFxcIjUuMS4xXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInBob25lTW9kZWxcXFwiOiBcXFwiVEFTLUFOMDBcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiYnVpbGRfbWFudWZhY3R1cmVyXFxcIjogXFxcIkhVQVdFSVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJidWlsZF9zZGtfaW50XFxcIjogXFxcIjIyXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNoYW5uZWxcXFwiOiBcXFwic3ByZWFkXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInZlcnNpb25Db2RlXFxcIjogYXBrLnZlcnNpb25Db2RlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidmVyc2lvbk5hbWVcXFwiOiBhcGsuY2xpZW50VmVyc2lvbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNvdW50cnlcXFwiOiBcXFwiQ05cXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXV0aG9yaXphdGlvbic6ICdCZWFyZXIgJyArIGFjdG9rZW4sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtY2FwdGNoYS10b2tlbic6IHhoZWFkZXJzWyd4LWNhcHRjaGEtdG9rZW4nXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneC1kZXZpY2UtaWQnOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdBTkRST0lELWNvbS5waWtjbG91ZC5waWtwYWsvMS4yMi41J1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcXG5cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbnZpdGVcXG54aGVhZGVycyA9IGdldEluaXRQYXJhbXMoXFxcIlBPU1Q6L3ZpcC92MS9hY3Rpdml0eS9pbnZpdGVcXFwiLCB1aWQsICcnLCAnJyk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiZGF0YVxcXCI6IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwic2RrX2ludFxcXCI6IFxcXCIyMlxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInV1aWRcXFwiOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwidXNlclR5cGVcXFwiOiBcXFwiMVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInVzZXJpZFxcXCI6IHVpZCxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicHJvZHVjdF9mbGF2b3JfbmFtZVxcXCI6IFxcXCJjaGFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYW5ndWFnZV9zeXN0ZW1cXFwiOiBcXFwiemgtQ05cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJsYW5ndWFnZV9hcHBcXFwiOiBcXFwiemgtQ05cXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJidWlsZF92ZXJzaW9uX3JlbGVhc2VcXFwiOiBcXFwiNS4xLjFcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJwaG9uZU1vZGVsXFxcIjogXFxcIlRBUy1BTjAwXFxcIixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwiYnVpbGRfbWFudWZhY3R1cmVyXFxcIjogXFxcIkhVQVdFSVxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImJ1aWxkX3Nka19pbnRcXFwiOiBcXFwiMjJcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjaGFubmVsXFxcIjogXFxcInNwcmVhZFxcXCIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcInZlcnNpb25Db2RlXFxcIjogYXBrLnZlcnNpb25Db2RlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJ2ZXJzaW9uTmFtZVxcXCI6IGFway5jbGllbnRWZXJzaW9uLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJpbnN0YWxsRnJvbVxcXCI6ICcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJjb3VudHJ5XFxcIjogXFxcIkNOXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJhcGtfZXh0cmFcXFwiOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ludml0ZV9jb2RlJzogaUNvZGUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcImNoYW5uZWxcXFwiOiBcXFwic3ByZWFkXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhmZXRjaCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9hY3Rpdml0eS9pbnZpdGUnLCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiBNT0JJTEVfVUEgKyAnUGlrUGFrIDEuMjIuNScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY3Rva2VuLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWRldmljZS1pZCc6IHhoZWFkZXJzWyd4LWRldmljZS1pZCddLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LXBlZXItaWQnOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneC1jbGllbnQtdmVyc2lvbi1jb2RlJzogYXBrLnZlcnNpb25Db2RlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWFsdC1jYXBhYmlsaXR5JzonMycsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtdXNlci1yZWdpb24nOicyJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY291bnRyeSc6J0NOJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjdF9mbGF2b3JfbmFtZSc6J2NoYScsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtY2FwdGNoYS10b2tlbic6IHhoZWFkZXJzWyd4LWNhcHRjaGEtdG9rZW4nXSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBib2R5XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcblxcbmxvZyhmZXRjaCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9hY3Rpdml0eS9jaGVja0ludml0ZT91c2VyaWQ9JyArIHVpZCwge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSc6ICd6aC1jbidcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxuXFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vamF2YS5sYW5nLlRocmVhZC5zbGVlcCgyICogMTAwMCk7XFxuXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qbGV0IHJlcyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS92aXAvdjEvb3JkZXIvYWN0aXZhdGlvbi1jb2RlJywge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBICsgJ1Bpa1BhayAxLjI0LjInLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgYWN0b2tlbixcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVmZXJlcic6ICdodHRwczovL2luYXBwLm15cGlrcGFrLmNvbS9hY3Rpdml0eS9pbnZpdGF0aW9uP3Q9ODY5Nzg5OTcnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWRldmljZS1pZCc6IHhoZWFkZXJzWyd4LWRldmljZS1pZCddLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LXJlcXVlc3RlZC13aXRoJzogJ2NvbS5waWtjbG91ZC5waWtwYWsnXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXCJhY3RpdmF0aW9uX2NvZGVcXFwiOiBpQ29kZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFwicGFnZVxcXCI6IFxcXCJpbnZpdGVcXFwiXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKTsqL1xcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhyZXMpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIOWwj+S6kem+meS6keebmOWvhumSpS51bnNoaWZ0KG5ld0l0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUxvYWRpbmcoKVxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+mCgOivt+azqOWGjOaIkOWKnydcXG4gICAgICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgfSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn5pWw5o2u6L2s5a2YJykge1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgpLmxhenlSdWxlKChpdGVtLCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRBbGxGaWxlcyxcXG5cXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5TWFnbmV0VG9Vc2VyXFxuICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY29kZT9ydWxlPVBpa1Bha1xcXCIpXFxuXFxuICAgICAgICAgICAgICAgICAgICBsZXQgbGlzdCA9IGdldEFsbEZpbGVzKGl0ZW0pO1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IG1zZyA9IGNvcHlNYWduZXRUb1VzZXIobGlzdCk7XFxuXFxuXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXNnO1xcbiAgICAgICAgICAgICAgICB9LCBpdCwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KVxcblxcbiAgICAgICAgICAgIH1cXG5cXG4gICAgICAgIH0sIGl0LCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiLFxcbiAgICAgICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBpZGV4OiBpZGV4ICsgJydcXG4gICAgICAgIH1cXG4gICAgfSlcXG59KTtcXG5cXG5cXG5cXG5zZXRSZXN1bHQoZClcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWvu+aJvui1hOa6kFwiLFwicGF0aFwiOlwi5a+75om+6LWE5rqQXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcblxcblxcbi8vIDEw5L2N5pe26Ze05oiz56eS6L2s5o2i5Li65qCH5YeG5pe26Ze0IDEw5L2N5pe26Ze05oiz5LmY5LulMTAwMFxcbmZ1bmN0aW9uIHRpbWVzdGFtcFRvVGltZSh0aW1lc3RhbXApIHtcXG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wICogMTAwMClcXG4gIHZhciBZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nXFxuICB2YXIgTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJ1xcbiAgY29uc3QgRCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXREYXRlKCkgOiBkYXRlLmdldERhdGUoKSkgKyAnICdcXG4gIGNvbnN0IGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonXFxuICBjb25zdCBtID0gKGRhdGUuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldE1pbnV0ZXMoKSA6IGRhdGUuZ2V0TWludXRlcygpKSArICc6J1xcbiAgY29uc3QgcyA9IChkYXRlLmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRTZWNvbmRzKCkgOiBkYXRlLmdldFNlY29uZHMoKSlcXG4gIHJldHVybiBZICsgTSArIEQgKyBoICsgbSArIHNcXG59XFxuLy8gMTPkvY3ml7bpl7TmiLPmr6vnp5LkuI3nlKjkuZjku6UxMDAwXFxuZnVuY3Rpb24gdGltZXN0YW1wVG9UaW1lTG9uZyh0aW1lc3RhbXApIHtcXG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wKVxcbiAgdmFyIFkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSdcXG4gIHZhciBNID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nXFxuICBjb25zdCBEID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKSArICcgJ1xcbiAgY29uc3QgaCA9IChkYXRlLmdldEhvdXJzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0SG91cnMoKSA6IGRhdGUuZ2V0SG91cnMoKSkgKyAnOidcXG4gIGNvbnN0IG0gPSAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgJzonXFxuICBjb25zdCBzID0gKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKVxcbiAgcmV0dXJuIFkgKyBNICsgRCArIGggKyBtICsgc1xcbn1cXG5cXG5cXG5cXG5cXG5cXG5cXG5cXG5sZXQgcGFnZSA9IE51bWJlcihnZXRNeVZhcihcXFwicGFnZVxcXCIsIFxcXCIwXFxcIikpICsgTVlfUEFHRTtcXG5cXG5JUEZT5a+G6ZKlPXN0b3JhZ2UwLmdldEl0ZW0oJ2N1ckl0ZW0nKS51c2VyXFxuXFxu5YiG57G7aWQ9MVxcblxcbmlmKHBhZ2U9PTEpe1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi54K55Ye75pCc57SiXFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICB1cmw6ICQoKS5pbnB1dCgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ+aQnOe0ouWFs+mUruivjScsIGlucHV0KTtcXG4gICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mkJzntKI6JytpbnB1dFxcbiAgICAgICAgICAgICAgICB9KVxcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLliIfmjaI6XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uv5a+75om+6LWE5rqQP3BhZ2U9ZnlwYWdlXFxcIlxcbn0pXFxufVxcblxcblxcblxcblxcbuWwj+m+meS6keivt+axgj1cXFwiaHR0cHM6Ly9wcm9kdWN0YXBpLnN0YXJpdmVycGFuLmNvbS9jbG91ZC1yZXNvdXJjZS92MS9hcnRpY2xlc1xcXCJcXG5cXG5cXG7lhbPplK7or409Z2V0VmFyKFxcXCLmkJzntKLlhbPplK7or41cXFwiKVxcblxcbmlmKOWFs+mUruivjSl7XFxuXFxu5YWz6ZSu6K+NPScsXFxcInRpdGxlXFxcIjpcXFwiJyvlhbPplK7or40rJ1xcXCIsXFxcInVzZXJOYW1lXFxcIjpcXFwiXFxcIidcXG5cXG5cXG59ZWxzZSDlhbPplK7or409JydcXG5cXG5cXG5sb2co5YWz6ZSu6K+NKVxcblxcblxcblxcblxcbui6q+S9kz1ge1xcXCJwdWJsaXNoTW9kZVxcXCI6MCxcXFwicGFnZVNpemVcXFwiOjEwLFxcXCJjb2xsZWN0U29ydFR5cGVcXFwiOjBgK+WFs+mUruivjStgLFxcXCJ1c2VySWRcXFwiOlxcXCI1Mzc1MTI5ODk4MTM2NDEyMTZcXFwiLFxcXCJwYWdlTnVtXFxcIjpgK3BhZ2UrYCxcXFwicHVibGlzaFNvcnRUeXBlXFxcIjpgK+WIhuexu2lkK2AsXFxcImNvbW1lbnRTb3J0VHlwZVxcXCI6MCxcXFwiY2xpY2tTb3J0VHlwZVxcXCI6MCxcXFwibGlrZVNvcnRUeXBlXFxcIjowLFxcXCJkb3dubG9hZFNvcnRUeXBlXFxcIjowLFxcXCJjYXRlZ29yeUlkXFxcIjoxfWBcXG5cXG5cXG5cXG5cXG5cXG5cXG7lpLTpg6g9e1xcblxcXCJBdXRob3JpemF0aW9uXFxcIjpcXFwiQmVhcmVyIFxcXCIrSVBGU+WvhumSpVxcbn1cXG5cXG5cXG5cXG7nrKzkuIDmrKHlk43lupQ9cG9zdCjlsI/pvpnkupHor7fmsYIse2hlYWRlcnM6IOWktOmDqCxib2R5Oui6q+S9k30pXFxuXFxuXFxuXFxu5YiX6KGoPUpTT04ucGFyc2Uo56ys5LiA5qyh5ZON5bqUKS5kYXRhLmRhdGFcXG5cXG5pZijliJfooagubGVuZ3RoPjApXFxuZm9yICh2YXIgaSBpbiDliJfooagpIHtcXG4gICAgICAgIOagh+mimD3liJfooahbaV0udGl0bGVcXG4gICAgICAgIOWGheWuuT3liJfooahbaV0uY29udGVudFxcbiAgICAgICAgaWQ95YiX6KGoW2ldLmlkXFxuICAgICAgICDlj5HluJbkuro95YiX6KGoW2ldLmF1dGhvci5uaWNrbmFtZVxcbiAgICAgICAg5Y+R5biW5Lq6aWQ95YiX6KGoW2ldLmF1dGhvci5pZFxcbiAgICAgICAg5Y+R5biW5Lq65aS05YOPaWQ95YiX6KGoW2ldLmF1dGhvci5pbWdcXG4gICAgICAgIOWPkeW4luaXtumXtD10aW1lc3RhbXBUb1RpbWUo5YiX6KGoW2ldLnB0aW1lKVxcblxcbiAgICBcXG4gICAgICAgIFxcblxcbmQucHVzaCh7XFxudGl0bGU65qCH6aKYLFxcbnBpY191cmw6XFxcImh0dHBzOi8vc3RhdGljLm15cGlrcGFrLmNvbS84YzNjMTE0ODYwNDliMTc0MzQ1MjYyMzZhN2VkNjU3ODc3Yjg2YWEzQFJlZmVyZXI9XFxcIixcXG51cmw6XFxcImhpa2VyOi8vcGFnZS/luJblrZDkuoznuqdcXFwiLFxcbmRlc2M65YaF5a65LFxcbmV4dHJhOntpZDppZH0sXFxuY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxufSk7XFxuXFxuXFxuXFxuZC5wdXNoKHtcXG50aXRsZTrlj5HluJbkurorXFxcIiAg5Y+R5biW5pe26Ze0OlxcXCIr5Y+R5biW5pe26Ze0LFxcbnBpY191cmw6XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFwiK+WPkeW4luS6uuWktOWDj2lkK1xcXCJAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiLFxcbnVybDpcXFwiaGlrZXI6Ly9wYWdlL+WPkeW4luiusOW9lT9wYWdlPWZ5cGFnZVxcXCIrICcjaW1tZXJzaXZlVGhlbWUjJyxcXG5kZXNjOmlkLFxcbmV4dHJhOntpZDrlj5HluJbkurppZH0sXFxuY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxufSk7XFxuXFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuXFxuXFxuIFxcblxcbn1cXG5lbHNlIHtjbGVhclZhcign5pCc57Si5YWz6ZSu6K+NJyk7XFxuZC5wdXNoKHtcXG50aXRsZTpcXFwi4oCc4oCc5Lul5LiK5Li65YWo6YOo5pCc57Si57uT5p6c77yM5LiK5ouJ5bCG5pi+56S65o6o6I2Q6LWE5rqQ4oCd4oCdXFxcIixcXG51cmw6XFxcInRvYXN0Oi8v54K55oiR5oiR5rKh5pyJXFxcIixcXG5jb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiXFxufSk7XFxufVxcblxcblxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuW4luWtkOS6jOe6p1wiLFwicGF0aFwiOlwi5biW5a2Q5LqM57qnXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcbmlkPU1ZX1BBUkFNUy5pZFxcblxcbklQRlPlr4bpkqU9c3RvcmFnZTAuZ2V0SXRlbSgnY3VySXRlbScpLnVzZXJcXG5cXG5cXG5cXG5cXG7lsI/pvpnkupHor7fmsYI9XFxcImh0dHBzOi8vcHJvZHVjdGFwaS5zdGFyaXZlcnBhbi5jb20vY21zcHJvdmlkZXIvdjIuNC9jbG91ZC1yZXNvdXJjZXMvZ2V0U2luZ2xlQnlJZFxcXCJcXG5cXG5cXG7ouqvkvZM9YHtcXFwiaWRcXFwiOmAraWQrYH1gXFxuXFxuXFxuXFxuXFxu5aS06YOoPXtcXG5cXFwiQXV0aG9yaXphdGlvblxcXCI6XFxcIkJlYXJlciBcXFwiK0lQRlPlr4bpkqVcXG59XFxuXFxuXFxuXFxu56ys5LiA5qyh5ZON5bqUPXBvc3Qo5bCP6b6Z5LqR6K+35rGCLHtoZWFkZXJzOiDlpLTpg6gsYm9keTrouqvkvZN9KVxcblxcbmRhdGE9SlNPTi5wYXJzZSjnrKzkuIDmrKHlk43lupQpLmRhdGFcXG7mlofku7bliJfooag9ZGF0YS5hdHRhY2htZW50c1xcblxcblxcbnVzZXJpZD1kYXRhLnVzZXJJZFxcblxcblxcblxcbmZvciAodmFyIGkgaW4g5paH5Lu25YiX6KGoKSB7XFxuICAgICAgICDmoIfpopg95paH5Lu25YiX6KGoW2ldLmZpbGVOYW1lXFxuICAgICAgICBpZD3mlofku7bliJfooahbaV0uaWRcXG4gICAgICAgIOaWh+S7tuWkp+Wwjz3mlofku7bliJfooahbaV0uZmlsZVNpemVcXG4gICAgICAgIFxcblxcbmxvZyjmlofku7blpKflsI8pXFxuaWYo5paH5Lu25aSn5bCPPT0wKXtcXG5kLnB1c2goe1xcbnRpdGxlOuagh+mimCxcXG5waWNfdXJsOlxcXCJodHRwczovL3N0YXRpYy5teXBpa3Bhay5jb20vOGMzYzExNDg2MDQ5YjE3NDM0NTI2MjM2YTdlZDY1Nzg3N2I4NmFhM0BSZWZlcmVyPVxcXCIsXFxudXJsOlxcXCJoaWtlcjovL3BhZ2Uv5paH5Lu25aS5XFxcIixcXG5kZXNjOmlkLFxcbmV4dHJhOntpZDppZCx1c2VyaWQ6dXNlcmlkLOmcgOimgeeUqOaIt2lkOlxcXCLpnIDopoFcXFwifSxcXG5jb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KTtcXG59ZWxzZXtcXG5cXG7mlofku7bmoLzlvI895paH5Lu25YiX6KGoW2ldLnN1ZmZpeFxcbuaWh+S7tkNJRD3mlofku7bliJfooahbaV0uZmlsZUNpZFxcblxcbmxvZyjmoIfpopgpXFxuXFxuaWYoLyhqcGd8Z2lmfHBuZ3xqcGVnKSQvaS50ZXN0KOagh+mimCkpe1xcblxcbuagvOW8jz1cXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxu5Zu+54mHPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIivmlofku7ZDSUQrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG5cXG59ZWxzZSBpZigvXFxcXC4oYXZpfHRzfG1wNHxtb3Z8bTR2fDNncHxybXxybXZifHdtdnxhc2Z8YXN4YXZpfGRhdHxta3Z8Zmx2fHZvYikkL2kudGVzdCjmoIfpopgpKXtcXG7lm77niYc9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpYzRvZDRvendwaG1iY3Z1dHd2eG4zdmdhdWw0dzVudjd6d3BoZTNtYXlza2JkN3o3bHZpZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG7moLzlvI89XFxcIiNpc1ZpZGVvPXRydWUjO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiXFxufWVsc2UgaWYoLyhtcDMpJC9pLnRlc3Qo5qCH6aKYKSl7XFxuXFxu5qC85byPPVxcXCIjLm1wMzt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcIlxcbuWbvueJhz1cXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWllNjNucWdpYXRwa3V4dmZmZWJ2Z2hkczdhb29wZGN4N2xpaXd0ajJxeXJqY2NoNjI1MmR1Iy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxuXFxufWVsc2V7XFxu5qC85byPPVxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCJcXG7lm77niYc9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpZm9oZnp5YWpvNWkzNjdncHk1NXRsM2syNGluZmZ4ZHNxd2xmZTRsY2JmNmQ0ZXJxYXVvZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG59XFxuXFxu6ZO+5o6lPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIivmlofku7ZDSUQr5qC85byPXFxuXFxuZC5wdXNoKHtcXG50aXRsZTrmoIfpopgsXFxucGljX3VybDrlm77niYcsXFxudXJsOuagvOW8jz09XFxcIjt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcIj9cXFwiZG93bmxvYWQ6Ly9cXFwiK+mTvuaOpTrpk77mjqUsXFxuZGVzYzppZCxcXG5leHRyYTp7aWQ6aWR9LFxcbmNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbn0pO1xcblxcblxcblxcblxcblxcbn1cXG5cXG5cXG4gXFxuXFxufVxcblxcblxcbuagh+mimD1kYXRhLnRpdGxlXFxu5q2j5paHPWRhdGEuY29udGVudFxcbuWbvueJh+WIl+ihqD1kYXRhLmltYWdlc1xcblxcbmQucHVzaCh7XFxudGl0bGU65qCH6aKYLFxcbi8vcGljX3VybDosXFxuLy91cmw6LFxcbi8vZGVzYzosXFxuY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxufSk7XFxuZC5wdXNoKHtcXG50aXRsZTrmraPmlocsXFxuLy9waWNfdXJsOixcXG4vL3VybDosXFxuLy9kZXNjOixcXG5jb2xfdHlwZTogXFxcInJpY2hfdGV4dFxcXCJcXG59KTtcXG5cXG5mb3IgKHZhciBpIGluIOWbvueJh+WIl+ihqCkge1xcblxcbmQucHVzaCh7XFxuLy90aXRsZTosXFxucGljX3VybDpcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXCIr5Zu+54mH5YiX6KGoW2ldLmZpbGVDaWQrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCIsXFxudXJsOlxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIivlm77niYfliJfooahbaV0uZmlsZUNpZCtcXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiLFxcbi8vZGVzYzosXFxuY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIlxcbn0pO1xcblxcblxcbiAgICAgICAgICAgXFxuXFxufVxcblxcblxcblxcblxcblxcblxcblxcblxcbnNldFJlc3VsdChkKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuWPkeW4luiusOW9lVwiLFwicGF0aFwiOlwi5Y+R5biW6K6w5b2VXCIsXCJydWxlXCI6XCJqczpcXG52YXIgZCA9IFtdO1xcblxcbi8vIDEw5L2N5pe26Ze05oiz56eS6L2s5o2i5Li65qCH5YeG5pe26Ze0IDEw5L2N5pe26Ze05oiz5LmY5LulMTAwMFxcbmZ1bmN0aW9uIHRpbWVzdGFtcFRvVGltZSh0aW1lc3RhbXApIHtcXG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wICogMTAwMClcXG4gIHZhciBZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nXFxuICB2YXIgTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJ1xcbiAgY29uc3QgRCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXREYXRlKCkgOiBkYXRlLmdldERhdGUoKSkgKyAnICdcXG4gIGNvbnN0IGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonXFxuICBjb25zdCBtID0gKGRhdGUuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldE1pbnV0ZXMoKSA6IGRhdGUuZ2V0TWludXRlcygpKSArICc6J1xcbiAgY29uc3QgcyA9IChkYXRlLmdldFNlY29uZHMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRTZWNvbmRzKCkgOiBkYXRlLmdldFNlY29uZHMoKSlcXG4gIHJldHVybiBZICsgTSArIEQgKyBoICsgbSArIHNcXG59XFxuXFxuXFxuXFxuaWQ9TVlfUEFSQU1TLmlkXFxubGV0IHBhZ2UgPSBOdW1iZXIoZ2V0TXlWYXIoXFxcInBhZ2VcXFwiLCBcXFwiMFxcXCIpKSArIE1ZX1BBR0U7XFxuXFxuSVBGU+WvhumSpT1zdG9yYWdlMC5nZXRJdGVtKCdjdXJJdGVtJykudXNlclxcblxcblxcblxcbumTvuaOpT1cXFwiaHR0cHM6Ly9wcm9kdWN0YXBpLnN0YXJpdmVycGFuLmNvbS9jbXNwcm92aWRlci92Mi40L2Nsb3VkLXJlc291cmNlcy9hcnRpY2xlLWxpc3Q/cGFnZVNpemU9MjAmcXVlcnlVc2VySWQ9XFxcIitpZCtcXFwiJnBhZ2VOdW09XFxcIitwYWdlK1xcXCImaXNWaWV3TWU9ZmFsc2VcXFwiXFxuXFxuXFxu5aS06YOoPXtcXG5cXFwiQXV0aG9yaXphdGlvblxcXCI6XFxcIkJlYXJlciBcXFwiK0lQRlPlr4bpkqVcXG5cXG59XFxuXFxu5rqQ56CBPXJlcXVlc3Qo6ZO+5o6lLHtoZWFkZXJzOiDlpLTpg6h9KVxcblxcblxcblxcbuWIl+ihqD1KU09OLnBhcnNlKOa6kOeggSkuZGF0YS5kYXRhXFxuXFxuaWYo5YiX6KGoLmxlbmd0aD4wKXtcXG4gICAgICAgIOWPkeW4luS6uj3liJfooahbMF0uYXV0aG9yLm5pY2tuYW1lXFxuICAgICAgICDlj5HluJbkurppZD3liJfooahbMF0uYXV0aG9yLmlkXFxuICAgICAgICDlj5HluJbkurrlpLTlg49pZD3liJfooahbMF0uYXV0aG9yLmltZ1xcblxcbmlmKHBhZ2U9PTEpXFxuZC5wdXNoKHtcXG50aXRsZTrlj5HluJbkurosXFxucGljX3VybDpcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXCIr5Y+R5biW5Lq65aS05YOPaWQrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCIsXFxudXJsOlxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIivlj5HluJbkurrlpLTlg49pZCtcXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiLFxcbmV4dHJhOntpZDrlj5HluJbkurppZH0sXFxuY29sX3R5cGU6IFxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyXFxcIixleHRyYToge2dyYWRpZW50OiB0cnVlfVxcbn0pO1xcblxcblxcblxcblxcbmZvciAodmFyIGkgaW4g5YiX6KGoKSB7XFxuICAgICAgICDmoIfpopg95YiX6KGoW2ldLnRpdGxlXFxuICAgICAgICDlhoXlrrk95YiX6KGoW2ldLmNvbnRlbnRcXG4gICAgICAgIGlkPeWIl+ihqFtpXS5pZFxcbiAgICAgICAg5Y+R5biW5Lq6PeWIl+ihqFtpXS5hdXRob3Iubmlja25hbWVcXG4gICAgICAgIOWPkeW4luS6umlkPeWIl+ihqFtpXS5hdXRob3IuaWRcXG4gICAgICAgIOWPkeW4luS6uuWktOWDj2lkPeWIl+ihqFtpXS5hdXRob3IuaW1nXFxuICAgICAgIOWPkeW4luaXtumXtD10aW1lc3RhbXBUb1RpbWUo5YiX6KGoW2ldLnB0aW1lKVxcblxcbmQucHVzaCh7XFxudGl0bGU65qCH6aKYK1xcXCIgIOWPkeW4luaXtumXtDpcXFwiK+WPkeW4luaXtumXtCxcXG5waWNfdXJsOlxcXCJodHRwczovL3N0YXRpYy5teXBpa3Bhay5jb20vOGMzYzExNDg2MDQ5YjE3NDM0NTI2MjM2YTdlZDY1Nzg3N2I4NmFhMyMuanBnQFJlZmVyZXI9XFxcIixcXG51cmw6XFxcImhpa2VyOi8vcGFnZS/luJblrZDkuoznuqdcXFwiLFxcbmRlc2M65YaF5a65LFxcbmV4dHJhOntpZDppZH0sXFxuY29sX3R5cGU6IFxcXCJ0ZXh0XzFcXFwiXFxufSk7XFxuXFxuXFxuXFxuXFxuXFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuXFxuXFxuIFxcbn1cXG5cXG59XFxuXFxuXFxuXFxuXFxuc2V0UmVzdWx0KGQpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6Kej5p6Q5YiG5Lqr6ZO+5o6lXCIsXCJwYXRoXCI6XCLop6PmnpDliIbkuqvpk77mjqVcIixcInJ1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShsaW1pdCl7XFxuICAgIGlmICghbGltaXQgfHwgTnVtYmVyKGxpbWl0KSA9PSAwKSByZXR1cm4gJydcXG4gICAgbGltaXQgPSBOdW1iZXIobGltaXQpXFxuICAgIC8vIOWwhnNpemUgQui9rOaNouaIkCBNXFxuICAgIHZhciBzaXplID0gJydcXG4gICAgaWYgKGxpbWl0IDwgMSAqIDEwMjQpIHtcXG4gICAgICAgIC8v5bCP5LqOMUtC77yM5YiZ6L2s5YyW5oiQQlxcbiAgICAgICAgc2l6ZSA9IGxpbWl0LnRvRml4ZWQoMikgKyAnQidcXG4gICAgfSBlbHNlIGlmIChsaW1pdCA8IDEgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy/lsI/kuo4xTULvvIzliJnovazljJbmiJBLQlxcbiAgICAgICAgc2l6ZSA9IChsaW1pdCAvIDEwMjQpLnRvRml4ZWQoMikgKyAnS0InXFxuICAgIH0gZWxzZSBpZiAobGltaXQgPCAxICogMTAyNCAqIDEwMjQgKiAxMDI0KSB7XFxuICAgICAgICAvL+Wwj+S6jjFHQu+8jOWImei9rOWMluaIkE1CXFxuICAgICAgICBzaXplID0gKGxpbWl0IC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICdNQidcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIC8v5YW25LuW6L2s5YyW5oiQR0JcXG4gICAgICAgIHNpemUgPSAobGltaXQgLyAoMTAyNCAqIDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICdHQidcXG4gICAgfVxcblxcbiAgICB2YXIgc2l6ZVN0ciA9IHNpemUgKyAnJyAvL+i9rOaIkOWtl+espuS4slxcbiAgICB2YXIgaW5kZXggPSBzaXplU3RyLmluZGV4T2YoJy4nKSAvL+iOt+WPluWwj+aVsOeCueWkhOeahOe0ouW8lVxcbiAgICB2YXIgZG91ID0gc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAxLCAyKSAvL+iOt+WPluWwj+aVsOeCueWQjuS4pOS9jeeahOWAvFxcbiAgICBpZiAoZG91ID09ICcwMCcpIHtcXG4gICAgICAgIC8v5Yik5pat5ZCO5Lik5L2N5piv5ZCm5Li6MDDvvIzlpoLmnpzmmK/liJnliKDpmaQwMFxcbiAgICAgICAgcmV0dXJuIHNpemVTdHIuc3Vic3RyaW5nKDAsIGluZGV4KSArIHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMywgMilcXG4gICAgfVxcbiAgICByZXR1cm4gc2l6ZVxcbn1cXG5cXG5cXG5cXG5cXG5pZD1nZXRQYXJhbSgnaWQnKVxcblxcblxcbklQRlPlr4bpkqU9c3RvcmFnZTAuZ2V0SXRlbSgnY3VySXRlbScpLnVzZXJcXG5cXG5pZihpZCl7XFxuXFxu6K+35rGC6ZO+5o6lPVxcXCJodHRwczovL3Byb2R1Y3RhcGkuc3Rhcml2ZXJwYW4uY29tL2Ntc3Byb3ZpZGVyL3YyLjAvY2xvdWQvdmVyaWZ5Q29kZVxcXCJcXG5cXG7ouqvkvZM9YHtcXFwiaWRcXFwiOlxcXCJgK2lkK2BcXFwifWBcXG5cXG5cXG7lpLTpg6g9e1xcblxcXCJBdXRob3JpemF0aW9uXFxcIjpcXFwiQmVhcmVyIFxcXCIrSVBGU+WvhumSpSxcXG5cXFwiUmVmZXJlclxcXCI6IFxcXCJodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxufVxcblxcblxcblxcbuesrOS4gOasoeWTjeW6lD1wb3N0KOivt+axgumTvuaOpSx7aGVhZGVyczog5aS06YOoLGJvZHk66Lqr5L2TfSlcXG5cXG5cXG5kYXRhPUpTT04ucGFyc2Uo56ys5LiA5qyh5ZON5bqUKS5kYXRhXFxubG9nKGRhdGEpXFxu5YiX6KGoPWRhdGEuc2hhcmVGaWxlSW5mb1xcblxcbmxvZyjliJfooagpXFxuXFxuXFxuZm9yICh2YXIgaSBpbiDliJfooagpIHtcXG4gICAgICAgIOagh+mimD3liJfooahbaV0uZmlsZU5hbWVcXG4gICAgICAgIGlkPeWIl+ihqFtpXS5pZFxcbiAgICAgICAgdXNlcmlkPeWIl+ihqFtpXS51c2VySWRcXG4gICAgICAgIOaWh+S7tuWkp+Wwjz3liJfooahbaV0uZmlsZVNpemVcXG5cXG5sb2co5paH5Lu25aSn5bCPKVxcbmlmKOaWh+S7tuWkp+Wwjz09MCl7XFxuZC5wdXNoKHtcXG50aXRsZTrmoIfpopgsXFxucGljX3VybDpcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWlnbjdmbmhhaGM1dXo0djZmdWczcmtmYnF6eDJyNm92MzR1dHBrZ2VrY3lpY3hqenYyZ3R5Iy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiLFxcbnVybDpcXFwiaGlrZXI6Ly9wYWdlL+aWh+S7tuWkuVxcXCIsXFxuZGVzYzppZCxcXG5leHRyYTp7aWQ6aWQsdXNlcmlkOnVzZXJpZCzpnIDopoHnlKjmiLdpZDpcXFwi6ZyA6KaBXFxcIn0sXFxuY29sX3R5cGU6IFxcXCJhdmF0YXJcXFwiXFxufSk7XFxufWVsc2V7XFxuXFxu5paH5Lu25qC85byPPeWIl+ihqFtpXS5zdWZmaXhcXG7mlofku7ZDSUQ95YiX6KGoW2ldLmZpbGVDaWRcXG7mlofku7blpKflsI89Zm9ybWF0U2l6ZSjmlofku7blpKflsI8pXFxuXFxuXFxuXFxuaWYoLyhqcGd8Z2lmfHBuZ3xqcGVnKSQvaS50ZXN0KOagh+mimCkpe1xcblxcbuagvOW8jz1cXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxu5Zu+54mHPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcIivmlofku7ZDSUQrXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG5cXG59ZWxzZSBpZigvXFxcXC4oYXZpfHRzfG1wNHxtb3Z8bTR2fDNncHxybXxybXZifHdtdnxhc2Z8YXN4YXZpfGRhdHxta3Z8Zmx2fHZvYikkL2kudGVzdCjmoIfpopgpKXtcXG7lm77niYc9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpYzRvZDRvendwaG1iY3Z1dHd2eG4zdmdhdWw0dzVudjd6d3BoZTNtYXlza2JkN3o3bHZpZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG7moLzlvI89XFxcIiNpc1ZpZGVvPXRydWUjO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiXFxufWVsc2UgaWYoLyhtcDN8d21hKSQvaS50ZXN0KOagh+mimCkpe1xcblxcbuagvOW8jz1cXFwiIy5tcDM7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCJcXG7lm77niYc9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpZTYzbnFnaWF0cGt1eHZmZmVidmdoZHM3YW9vcGRjeDdsaWl3dGoycXlyamNjaDYyNTJkdSMuanBnQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIlxcblxcbn1lbHNle1xcbuagvOW8jz1cXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiXFxu5Zu+54mHPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWZvaGZ6eWFqbzVpMzY3Z3B5NTV0bDNrMjRpbmZmeGRzcXdsZmU0bGNiZjZkNGVycWF1b2VAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxufVxcblxcbumTvuaOpT1cXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXCIr5paH5Lu2Q0lEK+agvOW8j1xcblxcbmQucHVzaCh7XFxudGl0bGU65paH5Lu25aSn5bCPK1xcXCItXFxcIivmoIfpopgsXFxucGljX3VybDrlm77niYcsXFxudXJsOuagvOW8jz09XFxcIjt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcIj9cXFwiZG93bmxvYWQ6Ly9cXFwiK+mTvuaOpTrpk77mjqUsXFxuZGVzYzppZCxcXG5leHRyYTp7aWQ6aWR9LFxcbmNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbn0pO1xcblxcblxcblxcblxcbn1cXG5cXG5cXG5cXG59XFxuXFxuXFxufVxcblxcblxcblxcblxcblxcblxcblxcbnNldFJlc3VsdChkKTtcIn1dLFwicGFyYW1zXCI6XCJ7XFxcImlkXFxcIjpcXFwiNjIwODI2NTk0NzQ2ODMwODQ4XFxcIn1cIixcInNhdmVkXCI6ZmFsc2UsXCJ0aXRsZVwiOlwiSVBGU+i1hOa6kFwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImhpa2VyOi8vcGFnZS/mlofku7blpLlcIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcbnZhciBkID0gW107XFxuXFxuXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShsaW1pdCl7XFxuICAgIGlmICghbGltaXQgfHwgTnVtYmVyKGxpbWl0KSA9PSAwKSByZXR1cm4gJydcXG4gICAgbGltaXQgPSBOdW1iZXIobGltaXQpXFxuICAgIC8vIOWwhnNpemUgQui9rOaNouaIkCBNXFxuICAgIHZhciBzaXplID0gJydcXG4gICAgaWYgKGxpbWl0IDwgMSAqIDEwMjQpIHtcXG4gICAgICAgIC8v5bCP5LqOMUtC77yM5YiZ6L2s5YyW5oiQQlxcbiAgICAgICAgc2l6ZSA9IGxpbWl0LnRvRml4ZWQoMikgKyAnQidcXG4gICAgfSBlbHNlIGlmIChsaW1pdCA8IDEgKiAxMDI0ICogMTAyNCkge1xcbiAgICAgICAgLy/lsI/kuo4xTULvvIzliJnovazljJbmiJBLQlxcbiAgICAgICAgc2l6ZSA9IChsaW1pdCAvIDEwMjQpLnRvRml4ZWQoMikgKyAnS0InXFxuICAgIH0gZWxzZSBpZiAobGltaXQgPCAxICogMTAyNCAqIDEwMjQgKiAxMDI0KSB7XFxuICAgICAgICAvL+Wwj+S6jjFHQu+8jOWImei9rOWMluaIkE1CXFxuICAgICAgICBzaXplID0gKGxpbWl0IC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICdNQidcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIC8v5YW25LuW6L2s5YyW5oiQR0JcXG4gICAgICAgIHNpemUgPSAobGltaXQgLyAoMTAyNCAqIDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICdHQidcXG4gICAgfVxcblxcbiAgICB2YXIgc2l6ZVN0ciA9IHNpemUgKyAnJyAvL+i9rOaIkOWtl+espuS4slxcbiAgICB2YXIgaW5kZXggPSBzaXplU3RyLmluZGV4T2YoJy4nKSAvL+iOt+WPluWwj+aVsOeCueWkhOeahOe0ouW8lVxcbiAgICB2YXIgZG91ID0gc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAxLCAyKSAvL+iOt+WPluWwj+aVsOeCueWQjuS4pOS9jeeahOWAvFxcbiAgICBpZiAoZG91ID09ICcwMCcpIHtcXG4gICAgICAgIC8v5Yik5pat5ZCO5Lik5L2N5piv5ZCm5Li6MDDvvIzlpoLmnpzmmK/liJnliKDpmaQwMFxcbiAgICAgICAgcmV0dXJuIHNpemVTdHIuc3Vic3RyaW5nKDAsIGluZGV4KSArIHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMywgMilcXG4gICAgfVxcbiAgICByZXR1cm4gc2l6ZVxcbn1cXG5cXG5cXG5cXG5cXG5mdW5jdGlvbiDop6Plr4bliIbkuqvpk77mjqUoaSkge1xcblxcbm8gPSBcXFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1xcXCJcXG5zID0gL1tcXFxcdFxcXFxuXFxcXGZcXFxcciBdL2dcXG5cXG5cXG5cXG4gICAgICAgICAgICBpID0gU3RyaW5nKGkpLnJlcGxhY2UocywgXFxcIlxcXCIpO1xcbiAgICAgICAgICAgIGxvZyhcXFwi5Ye66ZSZMVxcXCIpXFxuICAgICAgICAgICAgdmFyIEkgPSBpLmxlbmd0aDtcXG4gICAgICAgICAgICBJICUgNCA9PSAwICYmIChpID0gaS5yZXBsYWNlKC89PT8kLywgXFxcIlxcXCIpLFxcbiAgICAgICAgICAgIEkgPSBpLmxlbmd0aCksXFxuICAgICAgICAgICAgbG9nKFxcXCLlh7rplJkyXFxcIilcXG4gICAgICAgICAgICAoSSAlIDQgPT0gMSB8fCAvW14rYS16QS1aMC05L10vLnRlc3QoaSkpICYmIGwoXFxcIkludmFsaWQgY2hhcmFjdGVyOiB0aGUgc3RyaW5nIHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLlxcXCIpO1xcbiAgICAgICAgICAgIGZvciAodmFyIGYgPSAwLCBCLCBrLCBqID0gXFxcIlxcXCIsIEcgPSAtMTsgKytHIDwgSTsgKVxcbiAgICAgICAgICAgICAgICBrID0gby5pbmRleE9mKGkuY2hhckF0KEcpKSxcXG4gICAgICAgICAgICAgICAgQiA9IGYgJSA0ID8gQiAqIDY0ICsgayA6IGssXFxuICAgICAgICAgICAgICAgIGYrKyAlIDQgJiYgKGogKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUgJiBCID4+ICgtMiAqIGYgJiA2KSkpO1xcbiAgICAgICAgICAgIHJldHVybiBqXFxuICAgICAgICB9XFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuXFxuaWQ9TVlfUEFSQU1TLmlkXFxu5YiG5Lqr55So5oi3aWQ9TVlfUEFSQU1TLnVzZXJpZFxcbumcgOimgeeUqOaIt2lkPU1ZX1BBUkFNUy7pnIDopoHnlKjmiLdpZFxcblxcbmlmKCFpZCl7XFxuaWQ9MFxcblxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiBcXFwi566h55CG6LSm5Y+3XFxcIixcXG4gICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2Uv566h55CG6LSm5Y+3XFxcIlxcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLlr7vmib7otYTmupBcXFwiLFxcbiAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS/lr7vmib7otYTmupA/cGFnZT1meXBhZ2VcXFwiXFxufSlcXG5cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogXFxcIuino+aekOWIhuS6q+mTvuaOpVxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiAkKCkuaW5wdXQoKOino+WvhuWIhuS6q+mTvuaOpSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ9aW5wdXQubWF0Y2goL3NoYXJlSWRcXFxcPSguKikmLylbMV1cXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Peino+WvhuWIhuS6q+mTvuaOpShpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcign5YiG5Lqr6ZO+5o6laWQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL+ino+aekOWIhuS6q+mTvuaOpT9pZD1cXFwiK2lucHV0XFxuICAgICAgICAgICAgICAgIH0s6Kej5a+G5YiG5Lqr6ZO+5o6lKVxcbn0pXFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLop6PmnpDmlofku7ZJRFxcXCIsXFxuICAgIGNvbF90eXBlOiBcXFwidGV4dF8yXFxcIixcXG4gICAgdXJsOiAkKCkuaW5wdXQoKOino+WvhuWIhuS6q+mTvuaOpSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ9aW5wdXQubWF0Y2goL3NoYXJlSWRcXFxcPSguKikmLylbMV1cXG4gICAgICAgICAgICAgICAgICAgIGlucHV0Peino+WvhuWIhuS6q+mTvuaOpShpbnB1dClcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcign5YiG5Lqr6ZO+5o6laWQnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgICAgICBcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL+ino+aekOWIhuS6q+mTvuaOpT9pZD1cXFwiK2lucHV0XFxuICAgICAgICAgICAgICAgIH0s6Kej5a+G5YiG5Lqr6ZO+5o6lKVxcbn0pXFxuXFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnYmlnX2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG5cXG5mdW5jdGlvbiBnZXRBY2NvdW50cyhmaWxlKSB7XFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIDApIHx8IHJlcXVlc3QoZmlsZSkgfHwgJ1tdJyk7XFxufVxcblxcblxcbmZ1bmN0aW9uIGdldEN1ckl0ZW0oKSB7XFxuICAgIGxldCBpdGVtID0gc3RvcmFnZTAuZ2V0SXRlbShcXFwiY3VySXRlbVxcXCIpXFxuICAgICBsb2coXFxcIuWHuumUmTNcXFwiKVxcbiAgICBpZiAoIWl0ZW0pIHtcXG4gICAgICAgIGxldCBsaXN0ID0gZ2V0QWNjb3VudHMoKTtcXG4gICAgICAgIGxvZyhsaXN0KVxcbiAgICAgICAgaXRlbSA9IGxpc3QubGVuZ3RoID8gbGlzdFswXSA6IHt9O1xcbiAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiY3VySXRlbVxcXCIsIGl0ZW0pXFxuICAgIH1cXG5cXG4gICAgcmV0dXJuIGl0ZW1cXG5cXG59XFxuXFxudmFyIGN1ckl0ZW0gPSBnZXRDdXJJdGVtKClcXG5cXG5sZXQgc3ViX2FjY291bnRzID0gZ2V0QWNjb3VudHMoKTtcXG4gICAgc3ViX2FjY291bnRzLmZvckVhY2goKGl0ZW0pID0+IHtcXG4gICAgICAgIHZhciBpc0NsaWNrZWQgPSBjdXJJdGVtLm5hbWUgPT09IGl0ZW0ubmFtZTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlzQ2xpY2tlZCA/IFxcXCLigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPScjMUU5MEZGJz5cXFwiICsgaXRlbS5uYW1lICsgXFxcIjwvZnJvbnQ+PC9zdHJvbmc+XFxcIiA6IGl0ZW0ubmFtZSxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXG4gICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbShcXFwiY3VySXRlbVxcXCIsIGl0ZW0pO1xcblxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiXFxuICAgICAgICAgICAgfSwgaXRlbSksXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJzY3JvbGxfYnV0dG9uXFxcIlxcbiAgICAgICAgfSk7XFxuICAgIH0pO1xcbiAgICBcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiBcXFwiYmxhbmtfYmxvY2tcXFwiXFxuICAgIH0pO1xcbiAgXFxuXFxufVxcbklQRlPlr4bpkqU9c3RvcmFnZTAuZ2V0SXRlbSgnY3VySXRlbScpLnVzZXJcXG5cXG5sb2coc3RvcmFnZTAuZ2V0SXRlbSgnY3VySXRlbScpKVxcblxcblxcbuivt+axguWPmOmHj2I9XFxcIlxcXCJcXG5cXG5pZijpnIDopoHnlKjmiLdpZCYm5YiG5Lqr55So5oi3aWQpe1xcblxcbuivt+axguWPmOmHj2E9XFxcInYyLjAvY2xvdWQvZmlsZUxpc3RcXFwiXFxuXFxu6K+35rGC5Y+Y6YePYj1cXFwidjIuMC9jbG91ZC9mb2xkZXJMaXN0XFxcIlxcblxcblxcbn1cXG5cXG5sb2co5YiG5Lqr55So5oi3aWQpXFxuaWYoIeWIhuS6q+eUqOaIt2lkKXtcXG5cXG5sb2coXFxcIuayoeacieiOt+WPluaIkOWKn+eUqOaIt2lkXFxcIilcXG7or7fmsYLlj5jph49hPVxcXCJ2MS4yL2Nsb3VkL2ZpbGVTdXBlckxpc3RcXFwiXFxu6Lqr5L2TPWB7XFxuXFxcImZpbGVUeXBlXFxcIjpbXSxcXG5cXFwia2V5d29yZHNcXFwiOlxcXCJcXFwiLFxcblxcXCJwYWdlTnVtXFxcIjoxLFxcblxcXCJwYWdlU2l6ZVxcXCI6MTAwLFxcblxcXCJwYXJlbnRJZFxcXCI6XFxcImAraWQrYFxcXCIsXFxuXFxcInNvcnRNZXRob2RcXFwiOlxcXCJkZXNjXFxcIixcXG5cXFwic29ydFR5cGVcXFwiOlxcXCJ0aW1lXFxcIlxcbn1gXFxuXFxufWVsc2V7XFxuXFxuXFxu6Lqr5L2TPWB7XFxcInBhcmVudElkXFxcIjpcXFwiYCtpZCtgXFxcIixcXFwidXNlcklkXFxcIjpcXFwiYCvliIbkuqvnlKjmiLdpZCtgXFxcIn1gXFxuXFxufVxcblxcblxcblxcblxcblxcblxcbuWktOmDqD17XFxuXFxcIlJlZmVyZXJcXFwiOlxcXCJodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiLFxcblxcXCJBdXRob3JpemF0aW9uXFxcIjpcXFwiQmVhcmVyIFxcXCIrSVBGU+WvhumSpVxcbn1cXG5cXG5cXG7lsI/pvpnkupHor7fmsYI9XFxcImh0dHBzOi8vcHJvZHVjdGFwaS5zdGFyaXZlcnBhbi5jb20vY21zcHJvdmlkZXIvXFxcIivor7fmsYLlj5jph49hXFxuXFxuXFxuXFxuXFxu56ys5LiA5qyh5ZON5bqUPXBvc3Qo5bCP6b6Z5LqR6K+35rGCLHtoZWFkZXJzOiDlpLTpg6gsYm9keTrouqvkvZN9KVxcblxcbi8vbG9nKOesrOS4gOasoeWTjeW6lClcXG5cXG50cnkge1xcblxcbuWIl+ihqD1KU09OLnBhcnNlKOesrOS4gOasoeWTjeW6lCkuZGF0YVxcblxcblxcbmxvZyjnrKzkuIDmrKHlk43lupQpXFxubG9nKFxcXCLlh7rplJk0XFxcIilcXG5cXG5pZijliJfooagubGVuZ3RoPDEmJuivt+axguWPmOmHj2IhPVxcXCJcXFwiKXtcXG4gICAgXFxuICAgIOWwj+m+meS6keivt+axgj1cXFwiaHR0cHM6Ly9wcm9kdWN0YXBpLnN0YXJpdmVycGFuLmNvbS9jbXNwcm92aWRlci9cXFwiK+ivt+axguWPmOmHj2JcXG4gICAgXFxuICAgIGxvZyhcXFwi5ZCv5YqoYuivt+axglxcXCIpXFxuICAgIOesrOS4gOasoeWTjeW6lD1wb3N0KOWwj+m+meS6keivt+axgix7aGVhZGVyczog5aS06YOoLGJvZHk66Lqr5L2TfSlcXG5cXG4vL2xvZyjnrKzkuIDmrKHlk43lupQpXFxuXFxuXFxuXFxu5YiX6KGoPUpTT04ucGFyc2Uo56ys5LiA5qyh5ZON5bqUKS5kYXRhXFxuICAgIFxcbn1cXG5cXG5cXG5cXG5sb2co5YiX6KGoKVxcblxcblxcblxcblxcbmZvciAodmFyIGkgaW4g5YiX6KGoKSB7XFxuICAgICAgICDmoIfpopg95YiX6KGoW2ldLmZpbGVOYW1lXFxuICAgICAgICBpZD3liJfooahbaV0uaWRcXG4gICAgICAgIOaWh+S7tuWkp+Wwjz3liJfooahbaV0uZmlsZVNpemVcXG5cXG5cXG5cXG5cXG5cXG5cXG5pZijmlofku7blpKflsI89PTApe1xcbmQucHVzaCh7XFxudGl0bGU65qCH6aKYLFxcbnBpY191cmw6XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpZ243Zm5oYWhjNXV6NHY2ZnVnM3JrZmJxengycjZvdjM0dXRwa2dla2N5aWN4anp2Mmd0eSMuanBnQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIixcXG51cmw6XFxcImhpa2VyOi8vcGFnZS/mlofku7blpLlcXFwiLFxcbmRlc2M6aWQsXFxuZXh0cmE66ZyA6KaB55So5oi3aWQmJuWIhuS6q+eUqOaIt2lkID97aWQ6aWQsdXNlcmlkOuWIhuS6q+eUqOaIt2lkLOmcgOimgeeUqOaIt2lkOlxcXCLpnIDopoFcXFwifTp7aWQ6aWR9LFxcbmNvbF90eXBlOiBcXFwiYXZhdGFyXFxcIlxcbn0pO1xcbn1lbHNle1xcblxcbuaWh+S7tuagvOW8jz3liJfooahbaV0uc3VmZml4XFxu5paH5Lu2Q0lEPeWIl+ihqFtpXS5maWxlQ2lkXFxu5paH5Lu25aSn5bCPPWZvcm1hdFNpemUo5paH5Lu25aSn5bCPKVxcblxcblxcblxcbmlmKC8oanBnfGdpZnxwbmd8anBlZykkL2kudGVzdCjmoIfpopgpKXtcXG5cXG7moLzlvI89XFxcIiMuanBnQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIlxcbuWbvueJhz1cXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXCIr5paH5Lu2Q0lEK1xcXCJAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxuXFxufWVsc2UgaWYoL1xcXFwuKGF2aXx0c3xtcDR8bW92fG00dnwzZ3B8cm18cm12Ynx3bXZ8YXNmfGFzeGF2aXxkYXR8bWt2fGZsdnx2b2IpJC9pLnRlc3Qo5qCH6aKYKSl7XFxu5Zu+54mHPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWM0b2Q0b3p3cGhtYmN2dXR3dnhuM3ZnYXVsNHc1bnY3endwaGUzbWF5c2tiZDd6N2x2aWVAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFwiXFxu5qC85byPPVxcXCIjaXNWaWRlbz10cnVlIzt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcIlxcbn1lbHNlIGlmKC8obXAzfHdtYSkkL2kudGVzdCjmoIfpopgpKXtcXG5cXG7moLzlvI89XFxcIiMubXAzO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFwiXFxu5Zu+54mHPVxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWU2M25xZ2lhdHBrdXh2ZmZlYnZnaGRzN2Fvb3BkY3g3bGlpd3RqMnF5cmpjY2g2MjUyZHUjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXCJcXG5cXG59ZWxzZXtcXG7moLzlvI89XFxcIjt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcIlxcbuWbvueJhz1cXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWlmb2hmenlham81aTM2N2dweTU1dGwzazI0aW5mZnhkc3F3bGZlNGxjYmY2ZDRlcnFhdW9lQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcIlxcbn1cXG5cXG7pk77mjqU9XFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFwiK+aWh+S7tkNJRCvmoLzlvI9cXG5cXG5kLnB1c2goe1xcbnRpdGxlOuaWh+S7tuWkp+WwjytcXFwiLVxcXCIr5qCH6aKYLFxcbnBpY191cmw65Zu+54mHLFxcbnVybDrmoLzlvI89PVxcXCI7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXCI/XFxcImRvd25sb2FkOi8vXFxcIivpk77mjqU66ZO+5o6lLFxcbmRlc2M6aWQsXFxuZXh0cmE6e2lkOmlkfSxcXG5jb2xfdHlwZTogXFxcImF2YXRhclxcXCJcXG59KTtcXG5cXG5cXG5cXG5cXG59XFxuXFxuXFxuIFxcblxcbn1cXG5cXG59IGNhdGNoIChlKSB7XFxuICAgIGxvZyhlLm1lc3NhZ2UpXFxufVxcblxcblxcblxcblxcblxcbnNldFJlc3VsdChkKTtcIixcImdyb3VwXCI6XCJU5ryC56e7XCIsXCJ1YVwiOlwibW9iaWxlXCIsXCJwcmVSdWxlXCI6XCJcIixcInBhZ2VzXCI6XCJbe1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5paH5Lu25aS5XFxcIixcXFwicGF0aFxcXCI6XFxcIuaWh+S7tuWkuVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5cXFxcblxcXFxuZnVuY3Rpb24gZm9ybWF0U2l6ZShsaW1pdCl7XFxcXG4gICAgaWYgKCFsaW1pdCB8fCBOdW1iZXIobGltaXQpID09IDApIHJldHVybiAnJ1xcXFxuICAgIGxpbWl0ID0gTnVtYmVyKGxpbWl0KVxcXFxuICAgIC8vIOWwhnNpemUgQui9rOaNouaIkCBNXFxcXG4gICAgdmFyIHNpemUgPSAnJ1xcXFxuICAgIGlmIChsaW1pdCA8IDEgKiAxMDI0KSB7XFxcXG4gICAgICAgIC8v5bCP5LqOMUtC77yM5YiZ6L2s5YyW5oiQQlxcXFxuICAgICAgICBzaXplID0gbGltaXQudG9GaXhlZCgyKSArICdCJ1xcXFxuICAgIH0gZWxzZSBpZiAobGltaXQgPCAxICogMTAyNCAqIDEwMjQpIHtcXFxcbiAgICAgICAgLy/lsI/kuo4xTULvvIzliJnovazljJbmiJBLQlxcXFxuICAgICAgICBzaXplID0gKGxpbWl0IC8gMTAyNCkudG9GaXhlZCgyKSArICdLQidcXFxcbiAgICB9IGVsc2UgaWYgKGxpbWl0IDwgMSAqIDEwMjQgKiAxMDI0ICogMTAyNCkge1xcXFxuICAgICAgICAvL+Wwj+S6jjFHQu+8jOWImei9rOWMluaIkE1CXFxcXG4gICAgICAgIHNpemUgPSAobGltaXQgLyAoMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDIpICsgJ01CJ1xcXFxuICAgIH0gZWxzZSB7XFxcXG4gICAgICAgIC8v5YW25LuW6L2s5YyW5oiQR0JcXFxcbiAgICAgICAgc2l6ZSA9IChsaW1pdCAvICgxMDI0ICogMTAyNCAqIDEwMjQpKS50b0ZpeGVkKDIpICsgJ0dCJ1xcXFxuICAgIH1cXFxcblxcXFxuICAgIHZhciBzaXplU3RyID0gc2l6ZSArICcnIC8v6L2s5oiQ5a2X56ym5LiyXFxcXG4gICAgdmFyIGluZGV4ID0gc2l6ZVN0ci5pbmRleE9mKCcuJykgLy/ojrflj5blsI/mlbDngrnlpITnmoTntKLlvJVcXFxcbiAgICB2YXIgZG91ID0gc2l6ZVN0ci5zdWJzdHIoaW5kZXggKyAxLCAyKSAvL+iOt+WPluWwj+aVsOeCueWQjuS4pOS9jeeahOWAvFxcXFxuICAgIGlmIChkb3UgPT0gJzAwJykge1xcXFxuICAgICAgICAvL+WIpOaWreWQjuS4pOS9jeaYr+WQpuS4ujAw77yM5aaC5p6c5piv5YiZ5Yig6ZmkMDBcXFxcbiAgICAgICAgcmV0dXJuIHNpemVTdHIuc3Vic3RyaW5nKDAsIGluZGV4KSArIHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMywgMilcXFxcbiAgICB9XFxcXG4gICAgcmV0dXJuIHNpemVcXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuZnVuY3Rpb24g6Kej5a+G5YiG5Lqr6ZO+5o6lKGkpIHtcXFxcblxcXFxubyA9IFxcXFxcXFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrL1xcXFxcXFwiXFxcXG5zID0gL1tcXFxcXFxcXHRcXFxcXFxcXG5cXFxcXFxcXGZcXFxcXFxcXHIgXS9nXFxcXG5cXFxcblxcXFxuXFxcXG4gICAgICAgICAgICBpID0gU3RyaW5nKGkpLnJlcGxhY2UocywgXFxcXFxcXCJcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICBsb2coXFxcXFxcXCLlh7rplJkxXFxcXFxcXCIpXFxcXG4gICAgICAgICAgICB2YXIgSSA9IGkubGVuZ3RoO1xcXFxuICAgICAgICAgICAgSSAlIDQgPT0gMCAmJiAoaSA9IGkucmVwbGFjZSgvPT0/JC8sIFxcXFxcXFwiXFxcXFxcXCIpLFxcXFxuICAgICAgICAgICAgSSA9IGkubGVuZ3RoKSxcXFxcbiAgICAgICAgICAgIGxvZyhcXFxcXFxcIuWHuumUmTJcXFxcXFxcIilcXFxcbiAgICAgICAgICAgIChJICUgNCA9PSAxIHx8IC9bXithLXpBLVowLTkvXS8udGVzdChpKSkgJiYgbChcXFxcXFxcIkludmFsaWQgY2hhcmFjdGVyOiB0aGUgc3RyaW5nIHRvIGJlIGRlY29kZWQgaXMgbm90IGNvcnJlY3RseSBlbmNvZGVkLlxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIGZvciAodmFyIGYgPSAwLCBCLCBrLCBqID0gXFxcXFxcXCJcXFxcXFxcIiwgRyA9IC0xOyArK0cgPCBJOyApXFxcXG4gICAgICAgICAgICAgICAgayA9IG8uaW5kZXhPZihpLmNoYXJBdChHKSksXFxcXG4gICAgICAgICAgICAgICAgQiA9IGYgJSA0ID8gQiAqIDY0ICsgayA6IGssXFxcXG4gICAgICAgICAgICAgICAgZisrICUgNCAmJiAoaiArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDI1NSAmIEIgPj4gKC0yICogZiAmIDYpKSk7XFxcXG4gICAgICAgICAgICByZXR1cm4galxcXFxuICAgICAgICB9XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuaWQ9TVlfUEFSQU1TLmlkXFxcXG7liIbkuqvnlKjmiLdpZD1NWV9QQVJBTVMudXNlcmlkXFxcXG7pnIDopoHnlKjmiLdpZD1NWV9QQVJBTVMu6ZyA6KaB55So5oi3aWRcXFxcblxcXFxuaWYoIWlkKXtcXFxcbmlkPTBcXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLnrqHnkIbotKblj7dcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL+euoeeQhui0puWPt1xcXFxcXFwiXFxcXG59KVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuWvu+aJvui1hOa6kFxcXFxcXFwiLFxcXFxuICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMlxcXFxcXFwiLFxcXFxuICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2Uv5a+75om+6LWE5rqQP3BhZ2U9ZnlwYWdlXFxcXFxcXCJcXFxcbn0pXFxcXG5cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi6Kej5p6Q5YiG5Lqr6ZO+5o6lXFxcXFxcXCIsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCIsXFxcXG4gICAgdXJsOiAkKCkuaW5wdXQoKOino+WvhuWIhuS6q+mTvuaOpSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBpbnB1dD1pbnB1dC5tYXRjaCgvc2hhcmVJZFxcXFxcXFxcPSguKikmLylbMV1cXFxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQ96Kej5a+G5YiG5Lqr6ZO+5o6lKGlucHV0KVxcXFxuICAgICAgICAgICAgICAgICAgICBwdXRWYXIoJ+WIhuS6q+mTvuaOpWlkJywgaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL+ino+aekOWIhuS6q+mTvuaOpT9pZD1cXFxcXFxcIitpbnB1dFxcXFxuICAgICAgICAgICAgICAgIH0s6Kej5a+G5YiG5Lqr6ZO+5o6lKVxcXFxufSlcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IFxcXFxcXFwi6Kej5p6Q5paH5Lu2SURcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoKS5pbnB1dCgo6Kej5a+G5YiG5Lqr6ZO+5o6lKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlucHV0PWlucHV0Lm1hdGNoKC9zaGFyZUlkXFxcXFxcXFw9KC4qKSYvKVsxXVxcXFxuICAgICAgICAgICAgICAgICAgICBpbnB1dD3op6Plr4bliIbkuqvpk77mjqUoaW5wdXQpXFxcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcign5YiG5Lqr6ZO+5o6laWQnLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2Uv6Kej5p6Q5YiG5Lqr6ZO+5o6lP2lkPVxcXFxcXFwiK2lucHV0XFxcXG4gICAgICAgICAgICAgICAgfSzop6Plr4bliIbkuqvpk77mjqUpXFxcXG59KVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSk7XFxcXG5kLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXFxcbiAgICB9KTtcXFxcblxcXFxuZnVuY3Rpb24gZ2V0QWNjb3VudHMoZmlsZSkge1xcXFxuICAgIHJldHVybiBKU09OLnBhcnNlKHJlYWRGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIDApIHx8IHJlcXVlc3QoZmlsZSkgfHwgJ1tdJyk7XFxcXG59XFxcXG5cXFxcblxcXFxuZnVuY3Rpb24gZ2V0Q3VySXRlbSgpIHtcXFxcbiAgICBsZXQgaXRlbSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJjdXJJdGVtXFxcXFxcXCIpXFxcXG4gICAgIGxvZyhcXFxcXFxcIuWHuumUmTNcXFxcXFxcIilcXFxcbiAgICBpZiAoIWl0ZW0pIHtcXFxcbiAgICAgICAgbGV0IGxpc3QgPSBnZXRBY2NvdW50cygpO1xcXFxuICAgICAgICBsb2cobGlzdClcXFxcbiAgICAgICAgaXRlbSA9IGxpc3QubGVuZ3RoID8gbGlzdFswXSA6IHt9O1xcXFxuICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXFxcXFwiY3VySXRlbVxcXFxcXFwiLCBpdGVtKVxcXFxuICAgIH1cXFxcblxcXFxuICAgIHJldHVybiBpdGVtXFxcXG5cXFxcbn1cXFxcblxcXFxudmFyIGN1ckl0ZW0gPSBnZXRDdXJJdGVtKClcXFxcblxcXFxubGV0IHN1Yl9hY2NvdW50cyA9IGdldEFjY291bnRzKCk7XFxcXG4gICAgc3ViX2FjY291bnRzLmZvckVhY2goKGl0ZW0pID0+IHtcXFxcbiAgICAgICAgdmFyIGlzQ2xpY2tlZCA9IGN1ckl0ZW0ubmFtZSA9PT0gaXRlbS5uYW1lO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGlzQ2xpY2tlZCA/IFxcXFxcXFwi4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj0nIzFFOTBGRic+XFxcXFxcXCIgKyBpdGVtLm5hbWUgKyBcXFxcXFxcIjwvZnJvbnQ+PC9zdHJvbmc+XFxcXFxcXCIgOiBpdGVtLm5hbWUsXFxcXG4gICAgICAgICAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKGl0ZW0pID0+IHtcXFxcbiAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXFxcXFwiY3VySXRlbVxcXFxcXFwiLCBpdGVtKTtcXFxcblxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiXFxcXG4gICAgICAgICAgICB9LCBpdGVtKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInNjcm9sbF9idXR0b25cXFxcXFxcIlxcXFxuICAgICAgICB9KTtcXFxcbiAgICB9KTtcXFxcbiAgICBcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJibGFua19ibG9ja1xcXFxcXFwiXFxcXG4gICAgfSk7XFxcXG4gIFxcXFxuXFxcXG59XFxcXG5JUEZT5a+G6ZKlPXN0b3JhZ2UwLmdldEl0ZW0oJ2N1ckl0ZW0nKS51c2VyXFxcXG5cXFxcbmxvZyhzdG9yYWdlMC5nZXRJdGVtKCdjdXJJdGVtJykpXFxcXG5cXFxcblxcXFxu6K+35rGC5Y+Y6YePYj1cXFxcXFxcIlxcXFxcXFwiXFxcXG5cXFxcbmlmKOmcgOimgeeUqOaIt2lkJibliIbkuqvnlKjmiLdpZCl7XFxcXG5cXFxcbuivt+axguWPmOmHj2E9XFxcXFxcXCJ2Mi4wL2Nsb3VkL2ZpbGVMaXN0XFxcXFxcXCJcXFxcblxcXFxu6K+35rGC5Y+Y6YePYj1cXFxcXFxcInYyLjAvY2xvdWQvZm9sZGVyTGlzdFxcXFxcXFwiXFxcXG5cXFxcblxcXFxufVxcXFxuXFxcXG5sb2co5YiG5Lqr55So5oi3aWQpXFxcXG5pZigh5YiG5Lqr55So5oi3aWQpe1xcXFxuXFxcXG5sb2coXFxcXFxcXCLmsqHmnInojrflj5bmiJDlip/nlKjmiLdpZFxcXFxcXFwiKVxcXFxu6K+35rGC5Y+Y6YePYT1cXFxcXFxcInYxLjIvY2xvdWQvZmlsZVN1cGVyTGlzdFxcXFxcXFwiXFxcXG7ouqvkvZM9YHtcXFxcblxcXFxcXFwiZmlsZVR5cGVcXFxcXFxcIjpbXSxcXFxcblxcXFxcXFwia2V5d29yZHNcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLFxcXFxuXFxcXFxcXCJwYWdlTnVtXFxcXFxcXCI6MSxcXFxcblxcXFxcXFwicGFnZVNpemVcXFxcXFxcIjoxMDAsXFxcXG5cXFxcXFxcInBhcmVudElkXFxcXFxcXCI6XFxcXFxcXCJgK2lkK2BcXFxcXFxcIixcXFxcblxcXFxcXFwic29ydE1ldGhvZFxcXFxcXFwiOlxcXFxcXFwiZGVzY1xcXFxcXFwiLFxcXFxuXFxcXFxcXCJzb3J0VHlwZVxcXFxcXFwiOlxcXFxcXFwidGltZVxcXFxcXFwiXFxcXG59YFxcXFxuXFxcXG59ZWxzZXtcXFxcblxcXFxuXFxcXG7ouqvkvZM9YHtcXFxcXFxcInBhcmVudElkXFxcXFxcXCI6XFxcXFxcXCJgK2lkK2BcXFxcXFxcIixcXFxcXFxcInVzZXJJZFxcXFxcXFwiOlxcXFxcXFwiYCvliIbkuqvnlKjmiLdpZCtgXFxcXFxcXCJ9YFxcXFxuXFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG7lpLTpg6g9e1xcXFxuXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6XFxcXFxcXCJodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFxcXFxcIixcXFxcblxcXFxcXFwiQXV0aG9yaXphdGlvblxcXFxcXFwiOlxcXFxcXFwiQmVhcmVyIFxcXFxcXFwiK0lQRlPlr4bpkqVcXFxcbn1cXFxcblxcXFxuXFxcXG7lsI/pvpnkupHor7fmsYI9XFxcXFxcXCJodHRwczovL3Byb2R1Y3RhcGkuc3Rhcml2ZXJwYW4uY29tL2Ntc3Byb3ZpZGVyL1xcXFxcXFwiK+ivt+axguWPmOmHj2FcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxu56ys5LiA5qyh5ZON5bqUPXBvc3Qo5bCP6b6Z5LqR6K+35rGCLHtoZWFkZXJzOiDlpLTpg6gsYm9keTrouqvkvZN9KVxcXFxuXFxcXG4vL2xvZyjnrKzkuIDmrKHlk43lupQpXFxcXG5cXFxcbnRyeSB7XFxcXG5cXFxcbuWIl+ihqD1KU09OLnBhcnNlKOesrOS4gOasoeWTjeW6lCkuZGF0YVxcXFxuXFxcXG5cXFxcbmxvZyjnrKzkuIDmrKHlk43lupQpXFxcXG5sb2coXFxcXFxcXCLlh7rplJk0XFxcXFxcXCIpXFxcXG5cXFxcbmlmKOWIl+ihqC5sZW5ndGg8MSYm6K+35rGC5Y+Y6YePYiE9XFxcXFxcXCJcXFxcXFxcIil7XFxcXG4gICAgXFxcXG4gICAg5bCP6b6Z5LqR6K+35rGCPVxcXFxcXFwiaHR0cHM6Ly9wcm9kdWN0YXBpLnN0YXJpdmVycGFuLmNvbS9jbXNwcm92aWRlci9cXFxcXFxcIivor7fmsYLlj5jph49iXFxcXG4gICAgXFxcXG4gICAgbG9nKFxcXFxcXFwi5ZCv5YqoYuivt+axglxcXFxcXFwiKVxcXFxuICAgIOesrOS4gOasoeWTjeW6lD1wb3N0KOWwj+m+meS6keivt+axgix7aGVhZGVyczog5aS06YOoLGJvZHk66Lqr5L2TfSlcXFxcblxcXFxuLy9sb2co56ys5LiA5qyh5ZON5bqUKVxcXFxuXFxcXG5cXFxcblxcXFxu5YiX6KGoPUpTT04ucGFyc2Uo56ys5LiA5qyh5ZON5bqUKS5kYXRhXFxcXG4gICAgXFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5sb2co5YiX6KGoKVxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5mb3IgKHZhciBpIGluIOWIl+ihqCkge1xcXFxuICAgICAgICDmoIfpopg95YiX6KGoW2ldLmZpbGVOYW1lXFxcXG4gICAgICAgIGlkPeWIl+ihqFtpXS5pZFxcXFxuICAgICAgICDmlofku7blpKflsI895YiX6KGoW2ldLmZpbGVTaXplXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5pZijmlofku7blpKflsI89PTApe1xcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuagh+mimCxcXFxcbnBpY191cmw6XFxcXFxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWduN2ZuaGFoYzV1ejR2NmZ1ZzNya2ZicXp4MnI2b3YzNHV0cGtnZWtjeWljeGp6djJndHkjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiLFxcXFxudXJsOlxcXFxcXFwiaGlrZXI6Ly9wYWdlL+aWh+S7tuWkuVxcXFxcXFwiLFxcXFxuZGVzYzppZCxcXFxcbmV4dHJhOumcgOimgeeUqOaIt2lkJibliIbkuqvnlKjmiLdpZCA/e2lkOmlkLHVzZXJpZDrliIbkuqvnlKjmiLdpZCzpnIDopoHnlKjmiLdpZDpcXFxcXFxcIumcgOimgVxcXFxcXFwifTp7aWQ6aWR9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxufWVsc2V7XFxcXG5cXFxcbuaWh+S7tuagvOW8jz3liJfooahbaV0uc3VmZml4XFxcXG7mlofku7ZDSUQ95YiX6KGoW2ldLmZpbGVDaWRcXFxcbuaWh+S7tuWkp+Wwjz1mb3JtYXRTaXplKOaWh+S7tuWkp+WwjylcXFxcblxcXFxuXFxcXG5cXFxcbmlmKC8oanBnfGdpZnxwbmd8anBlZykkL2kudGVzdCjmoIfpopgpKXtcXFxcblxcXFxu5qC85byPPVxcXFxcXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFxcXFxcIlxcXFxu5Zu+54mHPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXFxcXFwiK+aWh+S7tkNJRCtcXFxcXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG5cXFxcbn1lbHNlIGlmKC9cXFxcXFxcXC4oYXZpfHRzfG1wNHxtb3Z8bTR2fDNncHxybXxybXZifHdtdnxhc2Z8YXN4YXZpfGRhdHxta3Z8Zmx2fHZvYikkL2kudGVzdCjmoIfpopgpKXtcXFxcbuWbvueJhz1cXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpYzRvZDRvendwaG1iY3Z1dHd2eG4zdmdhdWw0dzVudjd6d3BoZTNtYXlza2JkN3o3bHZpZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG7moLzlvI89XFxcXFxcXCIjaXNWaWRlbz10cnVlIzt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcXFxcXCJcXFxcbn1lbHNlIGlmKC8obXAzfHdtYSkkL2kudGVzdCjmoIfpopgpKXtcXFxcblxcXFxu5qC85byPPVxcXFxcXFwiIy5tcDM7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXFxcXFwiXFxcXG7lm77niYc9XFxcXFxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWU2M25xZ2lhdHBrdXh2ZmZlYnZnaGRzN2Fvb3BkY3g3bGlpd3RqMnF5cmpjY2g2MjUyZHUjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG5cXFxcbn1lbHNle1xcXFxu5qC85byPPVxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIlxcXFxu5Zu+54mHPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWlmb2hmenlham81aTM2N2dweTU1dGwzazI0aW5mZnhkc3F3bGZlNGxjYmY2ZDRlcnFhdW9lQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCJcXFxcbn1cXFxcblxcXFxu6ZO+5o6lPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXFxcXFwiK+aWh+S7tkNJRCvmoLzlvI9cXFxcblxcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuaWh+S7tuWkp+WwjytcXFxcXFxcIi1cXFxcXFxcIivmoIfpopgsXFxcXG5waWNfdXJsOuWbvueJhyxcXFxcbnVybDrmoLzlvI89PVxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIj9cXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIr6ZO+5o6lOumTvuaOpSxcXFxcbmRlc2M6aWQsXFxcXG5leHRyYTp7aWQ6aWR9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG59XFxcXG5cXFxcblxcXFxuIFxcXFxuXFxcXG59XFxcXG5cXFxcbn0gY2F0Y2ggKGUpIHtcXFxcbiAgICBsb2coZS5tZXNzYWdlKVxcXFxufVxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbnNldFJlc3VsdChkKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnrqHnkIbotKblj7dcXFwiLFxcXCJwYXRoXFxcIjpcXFwi566h55CG6LSm5Y+3XFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcbmxldCDlsI/kupHpvpnkupHnm5jlr4bpkqUgPSBKU09OLnBhcnNlKHJlYWRGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIDApIHx8ICdbXScpO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+WQjeensCcsXFxcXG4gICAgZGVzYzogJ+Wkh+azqC4uLicsXFxcXG4gICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHt9KSxcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCduYW1lJywgJycpLFxcXFxuICAgICAgICBvbkNoYW5nZTogJ3B1dE15VmFyKFxcXFxcXFwibmFtZVxcXFxcXFwiLGlucHV0KSdcXFxcbiAgICB9XFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfotKblj7co5a+G6ZKlKScsXFxcXG4gICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgdXJsOiAkLnRvU3RyaW5nKCgpID0+IHt9KSxcXFxcbiAgICBleHRyYToge1xcXFxuICAgICAgICBkZWZhdWx0VmFsdWU6IGdldE15VmFyKCd1c2Vya2V5JywgJycpLFxcXFxuICAgICAgICBvbkNoYW5nZTogJ3B1dE15VmFyKFxcXFxcXFwidXNlcmtleVxcXFxcXFwiLGlucHV0KSdcXFxcbiAgICB9XFxcXG59KTtcXFxcblxcXFxuXFxcXG5mdW5jdGlvbiBzYXZlU3ViKCkge1xcXFxuICAgIGxldCBhX25hbWUgPSBnZXRNeVZhcignbmFtZScsICcnKS50cmltKCk7XFxcXG4gICAgbGV0IGFfdXNlciA9IGdldE15VmFyKCd1c2Vya2V5JywgJycpLnRyaW0oKTtcXFxcbiAgICBcXFxcblxcXFxuXFxcXG4gICAgaWYgKCFhX25hbWUgfHwgIWFfdXNlciApIHtcXFxcbiAgICAgICAgcmV0dXJuICd0b2FzdDovL+S/oeaBr+S4jeWujOaVtCEnXFxcXG4gICAgfVxcXFxuXFxcXG5cXFxcbiAgICBsZXQg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlID0gSlNPTi5wYXJzZShyZWFkRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCAwKSB8fCAnW10nKTtcXFxcbiAgICBsZXQgaWRleCA9IOWwj+S6kem+meS6keebmOWvhumSpS5maW5kSW5kZXgoaXQgPT4gaXQubmFtZSA9PT0gYV9uYW1lKTtcXFxcbiAgICBpZiAoaWRleCA+IC0xKSB7XFxcXG4gICAgICAgIGlmICjlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0udXNlciAhPT0gYV91c2VyICkge1xcXFxuICAgICAgICAgICAgXFxcXG4gICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0udXNlciA9IGFfdXNlcjtcXFxcbiAgICAgICAgICAgIHJldHVybiAkKCfmo4DmtYvliLDmnKzlnLDmnInph43lpI3nmoQnICsgYV9uYW1lICsgJyzmmK/lkKbopobnm5Y/JykuY29uZmlybSgo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ+Wwj+S6kem+meS6keebmOWvhumSpS5qc29uJywgSlNPTi5zdHJpbmdpZnko5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKSwgMCk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lkv53lrZgnXFxcXG4gICAgICAgICAgICB9LCDlsI/kupHpvpnkupHnm5jlr4bpkqUpXFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5rKh5pyJ5pON5L2cJ1xcXFxuICAgICAgICB9XFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLnVuc2hpZnQoe1xcXFxuICAgICAgICAgICAgbmFtZTogYV9uYW1lLFxcXFxuICAgICAgICAgICAgdXNlcjogYV91c2VyLFxcXFxuICAgICAgICAgICAgXFxcXG5cXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcXFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgIHJldHVybiAndG9hc3Q6Ly/lt7Lkv53lrZgnXFxcXG4gICAgfVxcXFxuXFxcXG59XFxcXG5cXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogJ+aWsOWinui0puWPtycsXFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCIsXFxcXG4gICAgdXJsOiAkKCcjbm9Mb2FkaW5nIycpLmxhenlSdWxlKChzYXZlU3ViKSA9PiB7XFxcXG4gICAgICAgIGxldCB0aXBzID0gc2F2ZVN1YigpO1xcXFxuICAgICAgICBjbGVhck15VmFyKFxcXFxcXFwibmFtZVxcXFxcXFwiKTtcXFxcbiAgICAgICAgY2xlYXJNeVZhcihcXFxcXFxcInVzZXJrZXlcXFxcXFxcIik7XFxcXG4gICAgICAgIFxcXFxuICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgIHJldHVybiB0aXBzXFxcXG4gICAgfSwgc2F2ZVN1YilcXFxcbn0pO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn5a+85Ye66LSm5Y+3JyxcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoJyNub0xvYWRpbmcjJykubGF6eVJ1bGUoKOWwj+S6kem+meS6keebmOWvhumSpSkgPT4ge1xcXFxuXFxcXHQgIGxldCBwYXRoPVxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9waWtwYWtfdXNlci5qc29uXFxcXFxcXCJcXFxcbiAgICAgICAgd3JpdGVGaWxlKHBhdGgsSlNPTi5zdHJpbmdpZnko5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKSlcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/lt7Llr7zlh7rotKblj7fliJfooajmlofku7bliLBcXFxcXFxcIitwYXRoXFxcXG4gICAgfSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKVxcXFxufSk7XFxcXG5cXFxcblxcXFxuLypkLnB1c2goe1xcXFxuICAgIHRpdGxlOiAn6YKA6K+356CBJyxcXFxcbiAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICB1cmw6ICQudG9TdHJpbmcoKCkgPT4ge30pLFxcXFxuICAgIGV4dHJhOiB7XFxcXG50eXBlOlxcXFxcXFwibnVtYmVyXFxcXFxcXCIsXFxcXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0TXlWYXIoJ2ludml0ZUNvZGUnLCAnJyksXFxcXG4gICAgICAgIG9uQ2hhbmdlOiAncHV0TXlWYXIoXFxcXFxcXCJpbnZpdGVDb2RlXFxcXFxcXCIsaW5wdXQpJ1xcXFxuICAgIH1cXFxcbn0pOyovXFxcXG5cXFxcbuWwj+S6kem+meS6keebmOWvhumSpS5mb3JFYWNoKChpdCwgaWRleCkgPT4ge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBpdC5uYW1lLFxcXFxuICAgICAgICBkZXNjOiBpdC51c2VyICsgKGl0LmlzTG9jYWwgPyAnXFxcXFxcXFxu5pys5Zyw5YiX6KGo5qih5byP77yM5YWx5pyJ5pys5Zyw5pWw5o2u5p2h5pWw77yaJyArIEpTT04ucGFyc2UoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvY2FjaGUvJyArIGl0Lm5hbWUgKyAnLmpzb24nKSB8fCAnW10nKS5sZW5ndGggOiAnJyksXFxcXG4gICAgICAgIHVybDogJChbJ+e9rumhticsICfliKDpmaQnLCAn5L+u5pS56LSm5Y+3JywgJ+S/ruaUueWvhueggScsICfovazkuLrmnKzlnLDliJfooagnLCAn5oGi5aSN5Li65a6e5pe25YiX6KGoJywgJ+mCgOivt+azqOWGjCcsICfmlbDmja7ovazlrZgnXSwgMiwgJ+ivt+mAieaLqTHkuKrmk43kvZwnKS5zZWxlY3QoKGl0LCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpID0+IHtcXFxcbiAgICAgICAgICAgIGlmIChpbnB1dCA9PT0gJ+e9rumhticpIHtcXFxcbiAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqUuc3BsaWNlKGlkZXgsIDEpO1xcXFxuICAgICAgICAgICAgICAgIOWwj+S6kem+meS6keebmOWvhumSpS51bnNoaWZ0KGl0KTtcXFxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXFxcblxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55oiQ5YqfJ1xcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ+WIoOmZpCcpIHtcXFxcbiAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqUuc3BsaWNlKGlkZXgsIDEpO1xcXFxuICAgICAgICAgICAgICAgIGlmIChzdG9yYWdlMC5nZXRJdGVtKFxcXFxcXFwiY3VySXRlbVxcXFxcXFwiLCB7fSkubmFtZSA9PT0gaXQubmFtZSkge1xcXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXFxcXFwiY3VySXRlbVxcXFxcXFwiLCDlsI/kupHpvpnkupHnm5jlr4bpkqVbMF0pO1xcXFxuICAgICAgICAgICAgICAgICAgICBjbGVhckl0ZW0oaXQubmFtZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2NhY2hlLycgKyBpdC5uYW1lICsgJy5qc29uJywgJycpXFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxuXFxcXG5cXFxcbiAgICAgICAgICAgICAgICB9XFxcXG5cXFxcdFxcXFx0XFxcXHRcXFxcdHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/liKDpmaTmiJDlip8nXFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGlucHV0ID09PSAn5L+u5pS56LSm5Y+3Jykge1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiAkKGl0LnVzZXIsICfnu5nmraTotKblj7fmlLnkuKrlkI3lrZflkKcnKS5pbnB1dCgo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQudHJpbSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS51c2VyID0gaW5wdXQ7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv67mlLnmiJDlip8nXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55aSx6LSlJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfkv67mlLnlr4bnoIEnKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoaXQucGFzcywgJ+e7meatpOi0puWPt+aUueS4quWvhueggeWQpycpLmlucHV0KCjlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgaW5wdXQgPSBpbnB1dC50cmltKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dCkge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlW2lkZXhdLnBhc3MgPSBpbnB1dDtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVGaWxlKCflsI/kupHpvpnkupHnm5jlr4bpkqUuanNvbicsIEpTT04uc3RyaW5naWZ5KOWwj+S6kem+meS6keebmOWvhumSpSksIDApO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+S/ruaUueaIkOWKnydcXFxcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/kv67mlLnlpLHotKUnXFxcXG4gICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICB9LCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpO1xcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ+i9rOS4uuacrOWcsOWIl+ihqCcpIHtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJCgpLmxhenlSdWxlKChpdGVtLCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0QWxsRmlsZXNcXFxcbiAgICAgICAgICAgICAgICAgICAgfSA9ICQucmVxdWlyZShcXFxcXFxcImhpa2VyOi8vcGFnZS9jb2RlP3J1bGU9UGlrUGFrXFxcXFxcXCIpXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IGxpc3QgPSBnZXRBbGxGaWxlcyhpdGVtKVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS8nICsgaXRlbS5uYW1lICsgJy5qc29uJywgSlNPTi5zdHJpbmdpZnkobGlzdCkpO1xcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgIOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS5pc0xvY2FsID0gdHJ1ZTtcXFxcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ+Wwj+S6kem+meS6keebmOWvhumSpS5qc29uJywgSlNPTi5zdHJpbmdpZnko5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKSwgMCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBjaSA9IHN0b3JhZ2UwLmdldEl0ZW0oXFxcXFxcXCJjdXJJdGVtXFxcXFxcXCIsIHt9KTtcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS5uYW1lID09IGNpLm5hbWUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNpLmlzTG9jYWwgPSB0cnVlO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZTAuc2V0SXRlbSgnY3VySXRlbScsIGNpKVxcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55oiQ5YqfJ1xcXFxuICAgICAgICAgICAgICAgIH0sIGl0LCDlsI/kupHpvpnkupHnm5jlr4bpkqUsIGlkZXgpXFxcXG5cXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfmgaLlpI3kuLrlrp7ml7bliJfooagnKSB7XFxcXG4gICAgICAgICAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlW2lkZXhdLmlzTG9jYWwgPSBmYWxzZTtcXFxcbiAgICAgICAgICAgICAgICBzYXZlRmlsZSgn5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLmpzb24nLCBKU09OLnN0cmluZ2lmeSjlsI/kupHpvpnkupHnm5jlr4bpkqUpLCAwKTtcXFxcbiAgICAgICAgICAgICAgICBsZXQgY2kgPSBzdG9yYWdlMC5nZXRJdGVtKFxcXFxcXFwiY3VySXRlbVxcXFxcXFwiLCB7fSk7XFxcXG4gICAgICAgICAgICAgICAgaWYgKOWwj+S6kem+meS6keebmOWvhumSpVtpZGV4XS5uYW1lID09IGNpLm5hbWUpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY2kuaXNMb2NhbCA9IGZhbHNlO1xcXFxuICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKCdjdXJJdGVtJywgY2kpXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5L+u5pS55oiQ5YqfJ1xcXFxuICAgICAgICAgICAgfSBlbHNlIGlmIChpbnB1dCA9PT0gJ+mCgOivt+azqOWGjCcpIHtcXFxcbiAgICAgICAgICAgICAgICBcXFxcbmxldCBwaWQ9JC5kYXRlRm9ybWF0KG5ldyBEYXRlKCkuZ2V0VGltZSgpLCdkZC1ISG1tJylcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJChwaWQsICflpIfms6jlkI3np7AnKS5pbnB1dCgo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGlucHV0ID0gaW5wdXQudHJpbSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQpIHtcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKOWwj+S6kem+meS6keebmOWvhumSpS5maW5kSW5kZXgoaXQgPT4gaXQubmFtZSA9PT0gaW5wdXQpID4gLTEpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJ0b2FzdDovL+mhueebruWQjeensOmHjeWkje+8jOivt+mHjeaWsOi+k+WFpe+8gVxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdGhpc0l0ZW0gPSDlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF07XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TmV3VXNlcixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXREb21haW4sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0WXptXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2FwaT9ydWxlPTFTZWNNYWlsXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwayxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRJbml0UGFyYW1zXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NpZ24/cnVsZT1QaWtQYWtcXFxcXFxcIilcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy/ojrflj5bpgoDor7fnoIFcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpQ29kZSA9ICcnO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdldE15VmFyKCdpbnZpdGVDb2RlJywgJycpID09ICcnKSB7XFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldEludml0ZUNvZGUsXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9ID0gJC5yZXF1aXJlKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2NvZGU/cnVsZT1QaWtQYWtcXFxcXFxcIilcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpQ29kZSA9IGdldEludml0ZUNvZGUo5bCP5LqR6b6Z5LqR55uY5a+G6ZKlW2lkZXhdKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICDlsI/kupHpvpnkupHnm5jlr4bpkqVbaWRleF0uaW52aXRlQ29kZSA9IGlDb2RlO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxvZyhpQ29kZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaUNvZGUgPSBnZXRNeVZhcignaW52aXRlQ29kZScpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9kb3duIGFwa1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvYWRpbmcoJ+iuv+mXrumCgOivt+mhtScpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0KCdodHRwczovL3RvYXBwLm15cGlrcGFrLmNvbS9hY3Rpdml0eS9pbnZpdGVkP2NvZGU9JyArIGlDb2RlKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdChKU09OLnBhcnNlKHJlcXVlc3QoJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS9wYWNrYWdlL3YxL2Fway91cmwvJyArIGlDb2RlKSkuYXBrX3VybCwge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ6IDUwMFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG5cXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0xvYWRpbmcoJ+azqOWGjOWwj+WPtycpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dldCB1c2VyXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlciA9IGdldE5ld1VzZXIoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCBwYXNzID0gZ2V0TmV3VXNlcignYUFAJywgNyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgZG9tYWluID0gZ2V0RG9tYWluKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdXNlcmtleSA9IHVzZXIgKyAnQCcgKyBkb21haW47XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2dldCB2ZXJpZnkgY29kZSBzZW5kIG1haWxcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHhoZWFkZXJzID0gZ2V0SW5pdFBhcmFtcyhcXFxcXFxcIlBPU1Q6L3YxL2F1dGgvdmVyaWZpY2F0aW9uXFxcXFxcXCIsICcnLCAnJywgdXNlcmtleSk7XFxcXG5cXFxcbmZldGNoKCdodHRwczovL2NvbmZpZy5teXBpa3Bhay5jb20vY29uZmlnL3YxL2dsb2JhbENvbmZpZycsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJkYXRhXFxcXFxcXCI6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImRldmljZV9pZFxcXFxcXFwiOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInVzZXJfaWRcXFxcXFxcIjogXFxcXFxcXCJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImxhbmd1YWdlX3N5c3RlbVxcXFxcXFwiOiBcXFxcXFxcInpoLUNOXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJsYW5ndWFnZV9hcHBcXFxcXFxcIjogXFxcXFxcXCJ6aC1DTlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiaW5zdGFsbF9mcm9tXFxcXFxcXCI6IFxcXFxcXFwiXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJwcm9kdWN0X2ZsYXZvcl9uYW1lXFxcXFxcXCI6XFxcXFxcXCJjaGFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImNoYW5uZWxfaWRcXFxcXFxcIjogXFxcXFxcXCJzcHJlYWRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInZlcnNpb25jb2RlXFxcXFxcXCI6IGFway52ZXJzaW9uQ29kZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInZlcnNpb25cXFxcXFxcIjogYXBrLmNsaWVudFZlcnNpb24sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJjb3VudHJ5XFxcXFxcXCI6IFxcXFxcXFwiQ05cXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbi1jb2RlJzogYXBrLnZlcnNpb25Db2RlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24tbmFtZSc6IGFway5jbGllbnRWZXJzaW9uLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5c3RlbS12ZXJzaW9uJzonMjInLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkLW1hbnVmYWN0dXJlcic6J0hVQVdFSScsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGhvbmUtbW9kZWwnOidUQVMtQU4wMCcsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhbm5lbC1pZCc6ICdzcHJlYWQnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RldmljZS1pZCc6IHhoZWFkZXJzWyd4LWRldmljZS1pZCddLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnb2todHRwLzMuMTIuMTMnXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImVtYWlsXFxcXFxcXCI6IHVzZXJrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ0YXJnZXRcXFxcXFxcIjogXFxcXFxcXCJBTllcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInVzYWdlXFxcXFxcXCI6IFxcXFxcXFwiUkVHSVNURVJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImNsaWVudF9pZFxcXFxcXFwiOiBhcGsuY2xpZW50SWRcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxldCB2aWQgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL3VzZXIubXlwaWtwYWsuY29tL3YxL2F1dGgvdmVyaWZpY2F0aW9uP2NsaWVudF9pZD1ZTnhUOXc3R01kV3ZFT0thJywge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeGhlYWRlcnNcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS52ZXJpZmljYXRpb25faWQ7XFxcXG5cXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy9nZXQgbWFpbCB5em1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHNob3dMb2FkaW5nKCfpqozor4Hpgq7nrrEnKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHl6bSA9IGdldFl6bSh1c2VyLCBkb21haW4pO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy92ZXJpZnlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ2ZXJpZmljYXRpb25faWRcXFxcXFxcIjogdmlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwidmVyaWZpY2F0aW9uX2NvZGVcXFxcXFxcIjogeXptLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiY2xpZW50X2lkXFxcXFxcXCI6IGFway5jbGllbnRJZFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbGV0IHZlcmlmeSA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvYXV0aC92ZXJpZmljYXRpb24vdmVyaWZ5P2NsaWVudF9pZD1ZTnhUOXc3R01kV3ZFT0thJywge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczogeGhlYWRlcnNcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pKS52ZXJpZmljYXRpb25fdG9rZW47XFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vbG9nKCd2OicgKyB2ZXJpZnkpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3NpZ251cFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImVtYWlsXFxcXFxcXCI6IHVzZXJrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ2ZXJpZmljYXRpb25fY29kZVxcXFxcXFwiOiB5em0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ2ZXJpZmljYXRpb25fdG9rZW5cXFxcXFxcIjogdmVyaWZ5LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwicGFzc3dvcmRcXFxcXFxcIjogcGFzcyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImNsaWVudF9pZFxcXFxcXFwiOiBhcGsuY2xpZW50SWQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJjbGllbnRfc2VjcmV0XFxcXFxcXCI6IGFway5jbGllbnRTZWNyZXQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgcmVzID0gZmV0Y2goJ2h0dHBzOi8vdXNlci5teXBpa3Bhay5jb20vdjEvYXV0aC9zaWdudXA/Y2xpZW50X2lkPVlOeFQ5dzdHTWRXdkVPS2EnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYm9keSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB4aGVhZGVyc1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXMgPSBKU09OLnBhcnNlKHJlcyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgYWN0b2tlbiA9IHJlcy5hY2Nlc3NfdG9rZW47XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBsZXQgdWlkID0gcmVzLnN1YjtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgcmVnaXN0ZXIgc3VzcyBzYXZlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYWN0b2tlbikge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBuZXdJdGVtID0ge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBpbnB1dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcjogdXNlcmtleSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFzczogcGFzcyxcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJdGVtKG5ld0l0ZW0ubmFtZSwgYWN0b2tlbik7XFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9yYWdlMC5zZXRJdGVtKFxcXFxcXFwiY3VySXRlbVxcXFxcXFwiLCBuZXdJdGVtKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2dldCB2aXBcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93TG9hZGluZygn5rOo5YaM5oiQ5Yqf77yM6aKG5Y+Wdmlw5bm25aGr5YaZ6YKA6K+356CBJylcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZmV0Y2goJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS92aXAvdjEvYWN0aXZpdHkvY2hlY2tJbnZpdGU/dXNlcmlkPScgKyB1aWQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlJzogJ3poLWNuJ1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKmxvZyhmZXRjaCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9hY3Rpdml0eS9pbnZpdGUnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiZnJvbVxcXFxcXFwiOiBcXFxcXFxcIndlYlxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhdXRob3JpemF0aW9uJzogJ0JlYXJlciAnICsgYWN0b2tlbixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWNhcHRjaGEtdG9rZW4nOiB4aGVhZGVyc1sneC1jYXB0Y2hhLXRva2VuJ10sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneC1kZXZpY2UtaWQnOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKSovXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKnhoZWFkZXJzID0gZ2V0SW5pdFBhcmFtcyhcXFxcXFxcIkdFVDovZHJpdmUvdjEvcHJpdmlsZWdlL3ZpcFxcXFxcXFwiLHVpZCx4aGVhZGVyc1sneC1jYXB0Y2hhLXRva2VuJ10sJycpO1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QoJ2h0dHBzOi8vYXBpLWRyaXZlLm15cGlrcGFrLmNvbS9kcml2ZS92MS9wcml2aWxlZ2UvdmlwJyx7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6e1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOidCZWFyZXIgJythY3Rva2VuLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWNhcHRjaGEtdG9rZW4nOnhoZWFkZXJzWyd4LWNhcHRjaGEtdG9rZW4nXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWRldmljZS1pZCc6eGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sICAgICAgXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19KSovXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9vbmluc3RhbGxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2coZmV0Y2goJ2h0dHBzOi8vY29uZmlnLm15cGlrcGFrLmNvbS9jb25maWcvdjEvdXJsc09uSW5zdGFsbCcsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJkYXRhXFxcXFxcXCI6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInNka19pbnRcXFxcXFxcIjogXFxcXFxcXCIyMlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwidXVpZFxcXFxcXFwiOiB4aGVhZGVyc1sneC1kZXZpY2UtaWQnXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInVzZXJUeXBlXFxcXFxcXCI6IFxcXFxcXFwiMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwidXNlcmlkXFxcXFxcXCI6IHVpZCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImxhbmd1YWdlX3N5c3RlbVxcXFxcXFwiOiBcXFxcXFxcInpoLUNOXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJsYW5ndWFnZV9hcHBcXFxcXFxcIjogXFxcXFxcXCJ6aC1DTlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiYnVpbGRfdmVyc2lvbl9yZWxlYXNlXFxcXFxcXCI6IFxcXFxcXFwiNS4xLjFcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInBob25lTW9kZWxcXFxcXFxcIjogXFxcXFxcXCJUQVMtQU4wMFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiYnVpbGRfbWFudWZhY3R1cmVyXFxcXFxcXCI6IFxcXFxcXFwiSFVBV0VJXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJidWlsZF9zZGtfaW50XFxcXFxcXCI6IFxcXFxcXFwiMjJcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImNoYW5uZWxcXFxcXFxcIjogXFxcXFxcXCJzcHJlYWRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInZlcnNpb25Db2RlXFxcXFxcXCI6IGFway52ZXJzaW9uQ29kZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInZlcnNpb25OYW1lXFxcXFxcXCI6IGFway5jbGllbnRWZXJzaW9uLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiY291bnRyeVxcXFxcXFwiOiBcXFxcXFxcIkNOXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY3Rva2VuLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtY2FwdGNoYS10b2tlbic6IHhoZWFkZXJzWyd4LWNhcHRjaGEtdG9rZW4nXSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWRldmljZS1pZCc6IHhoZWFkZXJzWyd4LWRldmljZS1pZCddLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1VzZXItQWdlbnQnOiAnQU5EUk9JRC1jb20ucGlrY2xvdWQucGlrcGFrLzEuMjIuNSdcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2ludml0ZVxcXFxueGhlYWRlcnMgPSBnZXRJbml0UGFyYW1zKFxcXFxcXFwiUE9TVDovdmlwL3YxL2FjdGl2aXR5L2ludml0ZVxcXFxcXFwiLCB1aWQsICcnLCAnJyk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJkYXRhXFxcXFxcXCI6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwic2RrX2ludFxcXFxcXFwiOiBcXFxcXFxcIjIyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInV1aWRcXFxcXFxcIjogeGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInVzZXJUeXBlXFxcXFxcXCI6IFxcXFxcXFwiMVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ1c2VyaWRcXFxcXFxcIjogdWlkLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJwcm9kdWN0X2ZsYXZvcl9uYW1lXFxcXFxcXCI6IFxcXFxcXFwiY2hhXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImxhbmd1YWdlX3N5c3RlbVxcXFxcXFwiOiBcXFxcXFxcInpoLUNOXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImxhbmd1YWdlX2FwcFxcXFxcXFwiOiBcXFxcXFxcInpoLUNOXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImJ1aWxkX3ZlcnNpb25fcmVsZWFzZVxcXFxcXFwiOiBcXFxcXFxcIjUuMS4xXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInBob25lTW9kZWxcXFxcXFxcIjogXFxcXFxcXCJUQVMtQU4wMFxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJidWlsZF9tYW51ZmFjdHVyZXJcXFxcXFxcIjogXFxcXFxcXCJIVUFXRUlcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiYnVpbGRfc2RrX2ludFxcXFxcXFwiOiBcXFxcXFxcIjIyXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImNoYW5uZWxcXFxcXFxcIjogXFxcXFxcXCJzcHJlYWRcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwidmVyc2lvbkNvZGVcXFxcXFxcIjogYXBrLnZlcnNpb25Db2RlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJ2ZXJzaW9uTmFtZVxcXFxcXFwiOiBhcGsuY2xpZW50VmVyc2lvbixcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiaW5zdGFsbEZyb21cXFxcXFxcIjogJycsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcImNvdW50cnlcXFxcXFxcIjogXFxcXFxcXCJDTlxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiYXBrX2V4dHJhXFxcXFxcXCI6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZpdGVfY29kZSc6IGlDb2RlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJjaGFubmVsXFxcXFxcXCI6IFxcXFxcXFwic3ByZWFkXFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZyhmZXRjaCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9hY3Rpdml0eS9pbnZpdGUnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBICsgJ1Bpa1BhayAxLjIyLjUnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY3Rva2VuLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtZGV2aWNlLWlkJzogeGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneC1wZWVyLWlkJzogeGhlYWRlcnNbJ3gtZGV2aWNlLWlkJ10sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAneC1jbGllbnQtdmVyc2lvbi1jb2RlJzogYXBrLnZlcnNpb25Db2RlLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtYWx0LWNhcGFiaWxpdHknOiczJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LXVzZXItcmVnaW9uJzonMicsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY291bnRyeSc6J0NOJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWN0X2ZsYXZvcl9uYW1lJzonY2hhJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWNhcHRjaGEtdG9rZW4nOiB4aGVhZGVyc1sneC1jYXB0Y2hhLXRva2VuJ10sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGJvZHlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSlcXFxcblxcXFxubG9nKGZldGNoKCdodHRwczovL2FwaS1kcml2ZS5teXBpa3Bhay5jb20vdmlwL3YxL2FjdGl2aXR5L2NoZWNrSW52aXRlP3VzZXJpZD0nICsgdWlkLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdsYW5ndWFnZSc6ICd6aC1jbidcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pKVxcXFxuXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2phdmEubGFuZy5UaHJlYWQuc2xlZXAoMiAqIDEwMDApO1xcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLypsZXQgcmVzID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGktZHJpdmUubXlwaWtwYWsuY29tL3ZpcC92MS9vcmRlci9hY3RpdmF0aW9uLWNvZGUnLCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVc2VyLUFnZW50JzogTU9CSUxFX1VBICsgJ1Bpa1BhayAxLjI0LjInLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F1dGhvcml6YXRpb24nOiAnQmVhcmVyICcgKyBhY3Rva2VuLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlZmVyZXInOiAnaHR0cHM6Ly9pbmFwcC5teXBpa3Bhay5jb20vYWN0aXZpdHkvaW52aXRhdGlvbj90PTg2OTc4OTk3JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd4LWRldmljZS1pZCc6IHhoZWFkZXJzWyd4LWRldmljZS1pZCddLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3gtcmVxdWVzdGVkLXdpdGgnOiAnY29tLnBpa2Nsb3VkLnBpa3BhaydcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9keToge1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJhY3RpdmF0aW9uX2NvZGVcXFxcXFxcIjogaUNvZGUsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxcInBhZ2VcXFxcXFxcIjogXFxcXFxcXCJpbnZpdGVcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSkpOyovXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2xvZyhyZXMpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLnVuc2hpZnQobmV3SXRlbSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2F2ZUZpbGUoJ+Wwj+S6kem+meS6keebmOWvhumSpS5qc29uJywgSlNPTi5zdHJpbmdpZnko5bCP5LqR6b6Z5LqR55uY5a+G6ZKlKSwgMCk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlkZUxvYWRpbmcoKVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v6YKA6K+35rOo5YaM5oiQ5YqfJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAgICAgfSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KTtcXFxcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5wdXQgPT09ICfmlbDmja7ovazlrZgnKSB7XFxcXG4gICAgICAgICAgICAgICAgcmV0dXJuICQoKS5sYXp5UnVsZSgoaXRlbSwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGdldEFsbEZpbGVzLFxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb3B5TWFnbmV0VG9Vc2VyXFxcXG4gICAgICAgICAgICAgICAgICAgIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY29kZT9ydWxlPVBpa1Bha1xcXFxcXFwiKVxcXFxuXFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBsaXN0ID0gZ2V0QWxsRmlsZXMoaXRlbSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIGxldCBtc2cgPSBjb3B5TWFnbmV0VG9Vc2VyKGxpc3QpO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1zZztcXFxcbiAgICAgICAgICAgICAgICB9LCBpdCwg5bCP5LqR6b6Z5LqR55uY5a+G6ZKlLCBpZGV4KVxcXFxuXFxcXG4gICAgICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgfSwgaXQsIOWwj+S6kem+meS6keebmOWvhumSpSwgaWRleCksXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgaWRleDogaWRleCArICcnXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxufSk7XFxcXG5cXFxcblxcXFxuXFxcXG5zZXRSZXN1bHQoZClcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLlr7vmib7otYTmupBcXFwiLFxcXCJwYXRoXFxcIjpcXFwi5a+75om+6LWE5rqQXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGQgPSBbXTtcXFxcblxcXFxuXFxcXG4vLyAxMOS9jeaXtumXtOaIs+enkui9rOaNouS4uuagh+WHhuaXtumXtCAxMOS9jeaXtumXtOaIs+S5mOS7pTEwMDBcXFxcbmZ1bmN0aW9uIHRpbWVzdGFtcFRvVGltZSh0aW1lc3RhbXApIHtcXFxcbiAgdmFyIGRhdGUgPSBuZXcgRGF0ZSh0aW1lc3RhbXAgKiAxMDAwKVxcXFxuICB2YXIgWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJ1xcXFxuICB2YXIgTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJ1xcXFxuICBjb25zdCBEID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKSArICcgJ1xcXFxuICBjb25zdCBoID0gKGRhdGUuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRIb3VycygpIDogZGF0ZS5nZXRIb3VycygpKSArICc6J1xcXFxuICBjb25zdCBtID0gKGRhdGUuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldE1pbnV0ZXMoKSA6IGRhdGUuZ2V0TWludXRlcygpKSArICc6J1xcXFxuICBjb25zdCBzID0gKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKVxcXFxuICByZXR1cm4gWSArIE0gKyBEICsgaCArIG0gKyBzXFxcXG59XFxcXG4vLyAxM+S9jeaXtumXtOaIs+avq+enkuS4jeeUqOS5mOS7pTEwMDBcXFxcbmZ1bmN0aW9uIHRpbWVzdGFtcFRvVGltZUxvbmcodGltZXN0YW1wKSB7XFxcXG4gIHZhciBkYXRlID0gbmV3IERhdGUodGltZXN0YW1wKVxcXFxuICB2YXIgWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJ1xcXFxuICB2YXIgTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJ1xcXFxuICBjb25zdCBEID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyBkYXRlLmdldERhdGUoKSA6IGRhdGUuZ2V0RGF0ZSgpKSArICcgJ1xcXFxuICBjb25zdCBoID0gKGRhdGUuZ2V0SG91cnMoKSA8IDEwID8gJzAnICsgZGF0ZS5nZXRIb3VycygpIDogZGF0ZS5nZXRIb3VycygpKSArICc6J1xcXFxuICBjb25zdCBtID0gKGRhdGUuZ2V0TWludXRlcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldE1pbnV0ZXMoKSA6IGRhdGUuZ2V0TWludXRlcygpKSArICc6J1xcXFxuICBjb25zdCBzID0gKGRhdGUuZ2V0U2Vjb25kcygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldFNlY29uZHMoKSA6IGRhdGUuZ2V0U2Vjb25kcygpKVxcXFxuICByZXR1cm4gWSArIE0gKyBEICsgaCArIG0gKyBzXFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbmxldCBwYWdlID0gTnVtYmVyKGdldE15VmFyKFxcXFxcXFwicGFnZVxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIikpICsgTVlfUEFHRTtcXFxcblxcXFxuSVBGU+WvhumSpT1zdG9yYWdlMC5nZXRJdGVtKCdjdXJJdGVtJykudXNlclxcXFxuXFxcXG7liIbnsbtpZD0xXFxcXG5cXFxcbmlmKHBhZ2U9PTEpe1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLngrnlh7vmkJzntKJcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICB1cmw6ICQoKS5pbnB1dCgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHB1dFZhcign5pCc57Si5YWz6ZSu6K+NJywgaW5wdXQpO1xcXFxuICAgICAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mkJzntKI6JytpbnB1dFxcXFxuICAgICAgICAgICAgICAgIH0pXFxcXG59KVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOiBcXFxcXFxcIuWIh+aNojpcXFxcXFxcIixcXFxcbiAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL+Wvu+aJvui1hOa6kD9wYWdlPWZ5cGFnZVxcXFxcXFwiXFxcXG59KVxcXFxufVxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG7lsI/pvpnkupHor7fmsYI9XFxcXFxcXCJodHRwczovL3Byb2R1Y3RhcGkuc3Rhcml2ZXJwYW4uY29tL2Nsb3VkLXJlc291cmNlL3YxL2FydGljbGVzXFxcXFxcXCJcXFxcblxcXFxuXFxcXG7lhbPplK7or409Z2V0VmFyKFxcXFxcXFwi5pCc57Si5YWz6ZSu6K+NXFxcXFxcXCIpXFxcXG5cXFxcbmlmKOWFs+mUruivjSl7XFxcXG5cXFxcbuWFs+mUruivjT0nLFxcXFxcXFwidGl0bGVcXFxcXFxcIjpcXFxcXFxcIicr5YWz6ZSu6K+NKydcXFxcXFxcIixcXFxcXFxcInVzZXJOYW1lXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIidcXFxcblxcXFxuXFxcXG59ZWxzZSDlhbPplK7or409JydcXFxcblxcXFxuXFxcXG5sb2co5YWz6ZSu6K+NKVxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG7ouqvkvZM9YHtcXFxcXFxcInB1Ymxpc2hNb2RlXFxcXFxcXCI6MCxcXFxcXFxcInBhZ2VTaXplXFxcXFxcXCI6MTAsXFxcXFxcXCJjb2xsZWN0U29ydFR5cGVcXFxcXFxcIjowYCvlhbPplK7or40rYCxcXFxcXFxcInVzZXJJZFxcXFxcXFwiOlxcXFxcXFwiNTM3NTEyOTg5ODEzNjQxMjE2XFxcXFxcXCIsXFxcXFxcXCJwYWdlTnVtXFxcXFxcXCI6YCtwYWdlK2AsXFxcXFxcXCJwdWJsaXNoU29ydFR5cGVcXFxcXFxcIjpgK+WIhuexu2lkK2AsXFxcXFxcXCJjb21tZW50U29ydFR5cGVcXFxcXFxcIjowLFxcXFxcXFwiY2xpY2tTb3J0VHlwZVxcXFxcXFwiOjAsXFxcXFxcXCJsaWtlU29ydFR5cGVcXFxcXFxcIjowLFxcXFxcXFwiZG93bmxvYWRTb3J0VHlwZVxcXFxcXFwiOjAsXFxcXFxcXCJjYXRlZ29yeUlkXFxcXFxcXCI6MX1gXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG7lpLTpg6g9e1xcXFxuXFxcXFxcXCJBdXRob3JpemF0aW9uXFxcXFxcXCI6XFxcXFxcXCJCZWFyZXIgXFxcXFxcXCIrSVBGU+WvhumSpVxcXFxufVxcXFxuXFxcXG5cXFxcblxcXFxu56ys5LiA5qyh5ZON5bqUPXBvc3Qo5bCP6b6Z5LqR6K+35rGCLHtoZWFkZXJzOiDlpLTpg6gsYm9keTrouqvkvZN9KVxcXFxuXFxcXG5cXFxcblxcXFxu5YiX6KGoPUpTT04ucGFyc2Uo56ys5LiA5qyh5ZON5bqUKS5kYXRhLmRhdGFcXFxcblxcXFxuaWYo5YiX6KGoLmxlbmd0aD4wKVxcXFxuZm9yICh2YXIgaSBpbiDliJfooagpIHtcXFxcbiAgICAgICAg5qCH6aKYPeWIl+ihqFtpXS50aXRsZVxcXFxuICAgICAgICDlhoXlrrk95YiX6KGoW2ldLmNvbnRlbnRcXFxcbiAgICAgICAgaWQ95YiX6KGoW2ldLmlkXFxcXG4gICAgICAgIOWPkeW4luS6uj3liJfooahbaV0uYXV0aG9yLm5pY2tuYW1lXFxcXG4gICAgICAgIOWPkeW4luS6umlkPeWIl+ihqFtpXS5hdXRob3IuaWRcXFxcbiAgICAgICAg5Y+R5biW5Lq65aS05YOPaWQ95YiX6KGoW2ldLmF1dGhvci5pbWdcXFxcbiAgICAgICAg5Y+R5biW5pe26Ze0PXRpbWVzdGFtcFRvVGltZSjliJfooahbaV0ucHRpbWUpXFxcXG5cXFxcbiAgICBcXFxcbiAgICAgICAgXFxcXG5cXFxcbmQucHVzaCh7XFxcXG50aXRsZTrmoIfpopgsXFxcXG5waWNfdXJsOlxcXFxcXFwiaHR0cHM6Ly9zdGF0aWMubXlwaWtwYWsuY29tLzhjM2MxMTQ4NjA0OWIxNzQzNDUyNjIzNmE3ZWQ2NTc4NzdiODZhYTNAUmVmZXJlcj1cXFxcXFxcIixcXFxcbnVybDpcXFxcXFxcImhpa2VyOi8vcGFnZS/luJblrZDkuoznuqdcXFxcXFxcIixcXFxcbmRlc2M65YaF5a65LFxcXFxuZXh0cmE6e2lkOmlkfSxcXFxcbmNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiXFxcXG59KTtcXFxcblxcXFxuXFxcXG5cXFxcbmQucHVzaCh7XFxcXG50aXRsZTrlj5HluJbkurorXFxcXFxcXCIgIOWPkeW4luaXtumXtDpcXFxcXFxcIivlj5HluJbml7bpl7QsXFxcXG5waWNfdXJsOlxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXFxcXFwiK+WPkeW4luS6uuWktOWDj2lkK1xcXFxcXFwiQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCIsXFxcXG51cmw6XFxcXFxcXCJoaWtlcjovL3BhZ2Uv5Y+R5biW6K6w5b2VP3BhZ2U9ZnlwYWdlXFxcXFxcXCIrICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbmRlc2M6aWQsXFxcXG5leHRyYTp7aWQ65Y+R5biW5Lq6aWR9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2xpbmVfYmxhbmsnXFxcXG4gICAgfSk7XFxcXG5cXFxcblxcXFxuIFxcXFxuXFxcXG59XFxcXG5lbHNlIHtjbGVhclZhcign5pCc57Si5YWz6ZSu6K+NJyk7XFxcXG5kLnB1c2goe1xcXFxudGl0bGU6XFxcXFxcXCLigJzigJzku6XkuIrkuLrlhajpg6jmkJzntKLnu5PmnpzvvIzkuIrmi4nlsIbmmL7npLrmjqjojZDotYTmupDigJ3igJ1cXFxcXFxcIixcXFxcbnVybDpcXFxcXFxcInRvYXN0Oi8v54K55oiR5oiR5rKh5pyJXFxcXFxcXCIsXFxcXG5jb2xfdHlwZTogXFxcXFxcXCJ0ZXh0X2NlbnRlcl8xXFxcXFxcXCJcXFxcbn0pO1xcXFxufVxcXFxuXFxcXG5cXFxcblxcXFxuc2V0UmVzdWx0KGQpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuW4luWtkOS6jOe6p1xcXCIsXFxcInBhdGhcXFwiOlxcXCLluJblrZDkuoznuqdcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgZCA9IFtdO1xcXFxuaWQ9TVlfUEFSQU1TLmlkXFxcXG5cXFxcbklQRlPlr4bpkqU9c3RvcmFnZTAuZ2V0SXRlbSgnY3VySXRlbScpLnVzZXJcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxu5bCP6b6Z5LqR6K+35rGCPVxcXFxcXFwiaHR0cHM6Ly9wcm9kdWN0YXBpLnN0YXJpdmVycGFuLmNvbS9jbXNwcm92aWRlci92Mi40L2Nsb3VkLXJlc291cmNlcy9nZXRTaW5nbGVCeUlkXFxcXFxcXCJcXFxcblxcXFxuXFxcXG7ouqvkvZM9YHtcXFxcXFxcImlkXFxcXFxcXCI6YCtpZCtgfWBcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxu5aS06YOoPXtcXFxcblxcXFxcXFwiQXV0aG9yaXphdGlvblxcXFxcXFwiOlxcXFxcXFwiQmVhcmVyIFxcXFxcXFwiK0lQRlPlr4bpkqVcXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcbuesrOS4gOasoeWTjeW6lD1wb3N0KOWwj+m+meS6keivt+axgix7aGVhZGVyczog5aS06YOoLGJvZHk66Lqr5L2TfSlcXFxcblxcXFxuZGF0YT1KU09OLnBhcnNlKOesrOS4gOasoeWTjeW6lCkuZGF0YVxcXFxu5paH5Lu25YiX6KGoPWRhdGEuYXR0YWNobWVudHNcXFxcblxcXFxuXFxcXG51c2VyaWQ9ZGF0YS51c2VySWRcXFxcblxcXFxuXFxcXG5cXFxcbmZvciAodmFyIGkgaW4g5paH5Lu25YiX6KGoKSB7XFxcXG4gICAgICAgIOagh+mimD3mlofku7bliJfooahbaV0uZmlsZU5hbWVcXFxcbiAgICAgICAgaWQ95paH5Lu25YiX6KGoW2ldLmlkXFxcXG4gICAgICAgIOaWh+S7tuWkp+Wwjz3mlofku7bliJfooahbaV0uZmlsZVNpemVcXFxcbiAgICAgICAgXFxcXG5cXFxcbmxvZyjmlofku7blpKflsI8pXFxcXG5pZijmlofku7blpKflsI89PTApe1xcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuagh+mimCxcXFxcbnBpY191cmw6XFxcXFxcXCJodHRwczovL3N0YXRpYy5teXBpa3Bhay5jb20vOGMzYzExNDg2MDQ5YjE3NDM0NTI2MjM2YTdlZDY1Nzg3N2I4NmFhM0BSZWZlcmVyPVxcXFxcXFwiLFxcXFxudXJsOlxcXFxcXFwiaGlrZXI6Ly9wYWdlL+aWh+S7tuWkuVxcXFxcXFwiLFxcXFxuZGVzYzppZCxcXFxcbmV4dHJhOntpZDppZCx1c2VyaWQ6dXNlcmlkLOmcgOimgeeUqOaIt2lkOlxcXFxcXFwi6ZyA6KaBXFxcXFxcXCJ9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxufWVsc2V7XFxcXG5cXFxcbuaWh+S7tuagvOW8jz3mlofku7bliJfooahbaV0uc3VmZml4XFxcXG7mlofku7ZDSUQ95paH5Lu25YiX6KGoW2ldLmZpbGVDaWRcXFxcblxcXFxubG9nKOagh+mimClcXFxcblxcXFxuaWYoLyhqcGd8Z2lmfHBuZ3xqcGVnKSQvaS50ZXN0KOagh+mimCkpe1xcXFxuXFxcXG7moLzlvI89XFxcXFxcXCIjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG7lm77niYc9XFxcXFxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcXFxcXCIr5paH5Lu2Q0lEK1xcXFxcXFwiQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCJcXFxcblxcXFxufWVsc2UgaWYoL1xcXFxcXFxcLihhdml8dHN8bXA0fG1vdnxtNHZ8M2dwfHJtfHJtdmJ8d212fGFzZnxhc3hhdml8ZGF0fG1rdnxmbHZ8dm9iKSQvaS50ZXN0KOagh+mimCkpe1xcXFxu5Zu+54mHPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWljNG9kNG96d3BobWJjdnV0d3Z4bjN2Z2F1bDR3NW52N3p3cGhlM21heXNrYmQ3ejdsdmllQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCJcXFxcbuagvOW8jz1cXFxcXFxcIiNpc1ZpZGVvPXRydWUjO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIlxcXFxufWVsc2UgaWYoLyhtcDMpJC9pLnRlc3Qo5qCH6aKYKSl7XFxcXG5cXFxcbuagvOW8jz1cXFxcXFxcIiMubXAzO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIlxcXFxu5Zu+54mHPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWllNjNucWdpYXRwa3V4dmZmZWJ2Z2hkczdhb29wZGN4N2xpaXd0ajJxeXJqY2NoNjI1MmR1Iy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFxcXFxcIlxcXFxuXFxcXG59ZWxzZXtcXFxcbuagvOW8jz1cXFxcXFxcIjt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcXFxcXCJcXFxcbuWbvueJhz1cXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpZm9oZnp5YWpvNWkzNjdncHk1NXRsM2syNGluZmZ4ZHNxd2xmZTRsY2JmNmQ0ZXJxYXVvZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG59XFxcXG5cXFxcbumTvuaOpT1cXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFxcXFxcIivmlofku7ZDSUQr5qC85byPXFxcXG5cXFxcbmQucHVzaCh7XFxcXG50aXRsZTrmoIfpopgsXFxcXG5waWNfdXJsOuWbvueJhyxcXFxcbnVybDrmoLzlvI89PVxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIj9cXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIr6ZO+5o6lOumTvuaOpSxcXFxcbmRlc2M6aWQsXFxcXG5leHRyYTp7aWQ6aWR9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbn1cXFxcblxcXFxuXFxcXG4gXFxcXG5cXFxcbn1cXFxcblxcXFxuXFxcXG7moIfpopg9ZGF0YS50aXRsZVxcXFxu5q2j5paHPWRhdGEuY29udGVudFxcXFxu5Zu+54mH5YiX6KGoPWRhdGEuaW1hZ2VzXFxcXG5cXFxcbmQucHVzaCh7XFxcXG50aXRsZTrmoIfpopgsXFxcXG4vL3BpY191cmw6LFxcXFxuLy91cmw6LFxcXFxuLy9kZXNjOixcXFxcbmNvbF90eXBlOiBcXFxcXFxcInRleHRfMVxcXFxcXFwiXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG50aXRsZTrmraPmlocsXFxcXG4vL3BpY191cmw6LFxcXFxuLy91cmw6LFxcXFxuLy9kZXNjOixcXFxcbmNvbF90eXBlOiBcXFxcXFxcInJpY2hfdGV4dFxcXFxcXFwiXFxcXG59KTtcXFxcblxcXFxuZm9yICh2YXIgaSBpbiDlm77niYfliJfooagpIHtcXFxcblxcXFxuZC5wdXNoKHtcXFxcbi8vdGl0bGU6LFxcXFxucGljX3VybDpcXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFxcXFxcIivlm77niYfliJfooahbaV0uZmlsZUNpZCtcXFxcXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiLFxcXFxudXJsOlxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXFxcXFwiK+WbvueJh+WIl+ihqFtpXS5maWxlQ2lkK1xcXFxcXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFxcXFxcIixcXFxcbi8vZGVzYzosXFxcXG5jb2xfdHlwZTogXFxcXFxcXCJtb3ZpZV8yXFxcXFxcXCJcXFxcbn0pO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgICAgXFxcXG5cXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Y+R5biW6K6w5b2VXFxcIixcXFwicGF0aFxcXCI6XFxcIuWPkeW4luiusOW9lVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5cXFxcbi8vIDEw5L2N5pe26Ze05oiz56eS6L2s5o2i5Li65qCH5YeG5pe26Ze0IDEw5L2N5pe26Ze05oiz5LmY5LulMTAwMFxcXFxuZnVuY3Rpb24gdGltZXN0YW1wVG9UaW1lKHRpbWVzdGFtcCkge1xcXFxuICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHRpbWVzdGFtcCAqIDEwMDApXFxcXG4gIHZhciBZID0gZGF0ZS5nZXRGdWxsWWVhcigpICsgJy0nXFxcXG4gIHZhciBNID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nXFxcXG4gIGNvbnN0IEQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0RGF0ZSgpIDogZGF0ZS5nZXREYXRlKCkpICsgJyAnXFxcXG4gIGNvbnN0IGggPSAoZGF0ZS5nZXRIb3VycygpIDwgMTAgPyAnMCcgKyBkYXRlLmdldEhvdXJzKCkgOiBkYXRlLmdldEhvdXJzKCkpICsgJzonXFxcXG4gIGNvbnN0IG0gPSAoZGF0ZS5nZXRNaW51dGVzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0TWludXRlcygpIDogZGF0ZS5nZXRNaW51dGVzKCkpICsgJzonXFxcXG4gIGNvbnN0IHMgPSAoZGF0ZS5nZXRTZWNvbmRzKCkgPCAxMCA/ICcwJyArIGRhdGUuZ2V0U2Vjb25kcygpIDogZGF0ZS5nZXRTZWNvbmRzKCkpXFxcXG4gIHJldHVybiBZICsgTSArIEQgKyBoICsgbSArIHNcXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcbmlkPU1ZX1BBUkFNUy5pZFxcXFxubGV0IHBhZ2UgPSBOdW1iZXIoZ2V0TXlWYXIoXFxcXFxcXCJwYWdlXFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiKSkgKyBNWV9QQUdFO1xcXFxuXFxcXG5JUEZT5a+G6ZKlPXN0b3JhZ2UwLmdldEl0ZW0oJ2N1ckl0ZW0nKS51c2VyXFxcXG5cXFxcblxcXFxuXFxcXG7pk77mjqU9XFxcXFxcXCJodHRwczovL3Byb2R1Y3RhcGkuc3Rhcml2ZXJwYW4uY29tL2Ntc3Byb3ZpZGVyL3YyLjQvY2xvdWQtcmVzb3VyY2VzL2FydGljbGUtbGlzdD9wYWdlU2l6ZT0yMCZxdWVyeVVzZXJJZD1cXFxcXFxcIitpZCtcXFxcXFxcIiZwYWdlTnVtPVxcXFxcXFwiK3BhZ2UrXFxcXFxcXCImaXNWaWV3TWU9ZmFsc2VcXFxcXFxcIlxcXFxuXFxcXG5cXFxcbuWktOmDqD17XFxcXG5cXFxcXFxcIkF1dGhvcml6YXRpb25cXFxcXFxcIjpcXFxcXFxcIkJlYXJlciBcXFxcXFxcIitJUEZT5a+G6ZKlXFxcXG5cXFxcbn1cXFxcblxcXFxu5rqQ56CBPXJlcXVlc3Qo6ZO+5o6lLHtoZWFkZXJzOiDlpLTpg6h9KVxcXFxuXFxcXG5cXFxcblxcXFxu5YiX6KGoPUpTT04ucGFyc2Uo5rqQ56CBKS5kYXRhLmRhdGFcXFxcblxcXFxuaWYo5YiX6KGoLmxlbmd0aD4wKXtcXFxcbiAgICAgICAg5Y+R5biW5Lq6PeWIl+ihqFswXS5hdXRob3Iubmlja25hbWVcXFxcbiAgICAgICAg5Y+R5biW5Lq6aWQ95YiX6KGoWzBdLmF1dGhvci5pZFxcXFxuICAgICAgICDlj5HluJbkurrlpLTlg49pZD3liJfooahbMF0uYXV0aG9yLmltZ1xcXFxuXFxcXG5pZihwYWdlPT0xKVxcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuWPkeW4luS6uixcXFxcbnBpY191cmw6XFxcXFxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvXFxcXFxcXCIr5Y+R5biW5Lq65aS05YOPaWQrXFxcXFxcXCJAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFxcXFxcIixcXFxcbnVybDpcXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9cXFxcXFxcIivlj5HluJbkurrlpLTlg49pZCtcXFxcXFxcIiMuanBnQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCIsXFxcXG5leHRyYTp7aWQ65Y+R5biW5Lq6aWR9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwibW92aWVfMV92ZXJ0aWNhbF9waWNfYmx1clxcXFxcXFwiLGV4dHJhOiB7Z3JhZGllbnQ6IHRydWV9XFxcXG59KTtcXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuZm9yICh2YXIgaSBpbiDliJfooagpIHtcXFxcbiAgICAgICAg5qCH6aKYPeWIl+ihqFtpXS50aXRsZVxcXFxuICAgICAgICDlhoXlrrk95YiX6KGoW2ldLmNvbnRlbnRcXFxcbiAgICAgICAgaWQ95YiX6KGoW2ldLmlkXFxcXG4gICAgICAgIOWPkeW4luS6uj3liJfooahbaV0uYXV0aG9yLm5pY2tuYW1lXFxcXG4gICAgICAgIOWPkeW4luS6umlkPeWIl+ihqFtpXS5hdXRob3IuaWRcXFxcbiAgICAgICAg5Y+R5biW5Lq65aS05YOPaWQ95YiX6KGoW2ldLmF1dGhvci5pbWdcXFxcbiAgICAgICDlj5HluJbml7bpl7Q9dGltZXN0YW1wVG9UaW1lKOWIl+ihqFtpXS5wdGltZSlcXFxcblxcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuagh+mimCtcXFxcXFxcIiAg5Y+R5biW5pe26Ze0OlxcXFxcXFwiK+WPkeW4luaXtumXtCxcXFxcbnBpY191cmw6XFxcXFxcXCJodHRwczovL3N0YXRpYy5teXBpa3Bhay5jb20vOGMzYzExNDg2MDQ5YjE3NDM0NTI2MjM2YTdlZDY1Nzg3N2I4NmFhMyMuanBnQFJlZmVyZXI9XFxcXFxcXCIsXFxcXG51cmw6XFxcXFxcXCJoaWtlcjovL3BhZ2Uv5biW5a2Q5LqM57qnXFxcXFxcXCIsXFxcXG5kZXNjOuWGheWuuSxcXFxcbmV4dHJhOntpZDppZH0sXFxcXG5jb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzFcXFxcXFxcIlxcXFxufSk7XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgIH0pO1xcXFxuXFxcXG5cXFxcbiBcXFxcbn1cXFxcblxcXFxufVxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6Kej5p6Q5YiG5Lqr6ZO+5o6lXFxcIixcXFwicGF0aFxcXCI6XFxcIuino+aekOWIhuS6q+mTvuaOpVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciBkID0gW107XFxcXG5cXFxcbmZ1bmN0aW9uIGZvcm1hdFNpemUobGltaXQpe1xcXFxuICAgIGlmICghbGltaXQgfHwgTnVtYmVyKGxpbWl0KSA9PSAwKSByZXR1cm4gJydcXFxcbiAgICBsaW1pdCA9IE51bWJlcihsaW1pdClcXFxcbiAgICAvLyDlsIZzaXplIELovazmjaLmiJAgTVxcXFxuICAgIHZhciBzaXplID0gJydcXFxcbiAgICBpZiAobGltaXQgPCAxICogMTAyNCkge1xcXFxuICAgICAgICAvL+Wwj+S6jjFLQu+8jOWImei9rOWMluaIkEJcXFxcbiAgICAgICAgc2l6ZSA9IGxpbWl0LnRvRml4ZWQoMikgKyAnQidcXFxcbiAgICB9IGVsc2UgaWYgKGxpbWl0IDwgMSAqIDEwMjQgKiAxMDI0KSB7XFxcXG4gICAgICAgIC8v5bCP5LqOMU1C77yM5YiZ6L2s5YyW5oiQS0JcXFxcbiAgICAgICAgc2l6ZSA9IChsaW1pdCAvIDEwMjQpLnRvRml4ZWQoMikgKyAnS0InXFxcXG4gICAgfSBlbHNlIGlmIChsaW1pdCA8IDEgKiAxMDI0ICogMTAyNCAqIDEwMjQpIHtcXFxcbiAgICAgICAgLy/lsI/kuo4xR0LvvIzliJnovazljJbmiJBNQlxcXFxuICAgICAgICBzaXplID0gKGxpbWl0IC8gKDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICdNQidcXFxcbiAgICB9IGVsc2Uge1xcXFxuICAgICAgICAvL+WFtuS7lui9rOWMluaIkEdCXFxcXG4gICAgICAgIHNpemUgPSAobGltaXQgLyAoMTAyNCAqIDEwMjQgKiAxMDI0KSkudG9GaXhlZCgyKSArICdHQidcXFxcbiAgICB9XFxcXG5cXFxcbiAgICB2YXIgc2l6ZVN0ciA9IHNpemUgKyAnJyAvL+i9rOaIkOWtl+espuS4slxcXFxuICAgIHZhciBpbmRleCA9IHNpemVTdHIuaW5kZXhPZignLicpIC8v6I635Y+W5bCP5pWw54K55aSE55qE57Si5byVXFxcXG4gICAgdmFyIGRvdSA9IHNpemVTdHIuc3Vic3RyKGluZGV4ICsgMSwgMikgLy/ojrflj5blsI/mlbDngrnlkI7kuKTkvY3nmoTlgLxcXFxcbiAgICBpZiAoZG91ID09ICcwMCcpIHtcXFxcbiAgICAgICAgLy/liKTmlq3lkI7kuKTkvY3mmK/lkKbkuLowMO+8jOWmguaenOaYr+WImeWIoOmZpDAwXFxcXG4gICAgICAgIHJldHVybiBzaXplU3RyLnN1YnN0cmluZygwLCBpbmRleCkgKyBzaXplU3RyLnN1YnN0cihpbmRleCArIDMsIDIpXFxcXG4gICAgfVxcXFxuICAgIHJldHVybiBzaXplXFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcbmlkPWdldFBhcmFtKCdpZCcpXFxcXG5cXFxcblxcXFxuSVBGU+WvhumSpT1zdG9yYWdlMC5nZXRJdGVtKCdjdXJJdGVtJykudXNlclxcXFxuXFxcXG5pZihpZCl7XFxcXG5cXFxcbuivt+axgumTvuaOpT1cXFxcXFxcImh0dHBzOi8vcHJvZHVjdGFwaS5zdGFyaXZlcnBhbi5jb20vY21zcHJvdmlkZXIvdjIuMC9jbG91ZC92ZXJpZnlDb2RlXFxcXFxcXCJcXFxcblxcXFxu6Lqr5L2TPWB7XFxcXFxcXCJpZFxcXFxcXFwiOlxcXFxcXFwiYCtpZCtgXFxcXFxcXCJ9YFxcXFxuXFxcXG5cXFxcbuWktOmDqD17XFxcXG5cXFxcXFxcIkF1dGhvcml6YXRpb25cXFxcXFxcIjpcXFxcXFxcIkJlYXJlciBcXFxcXFxcIitJUEZT5a+G6ZKlLFxcXFxuXFxcXFxcXCJSZWZlcmVyXFxcXFxcXCI6IFxcXFxcXFwiaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCJcXFxcbn1cXFxcblxcXFxuXFxcXG5cXFxcbuesrOS4gOasoeWTjeW6lD1wb3N0KOivt+axgumTvuaOpSx7aGVhZGVyczog5aS06YOoLGJvZHk66Lqr5L2TfSlcXFxcblxcXFxuXFxcXG5kYXRhPUpTT04ucGFyc2Uo56ys5LiA5qyh5ZON5bqUKS5kYXRhXFxcXG5sb2coZGF0YSlcXFxcbuWIl+ihqD1kYXRhLnNoYXJlRmlsZUluZm9cXFxcblxcXFxubG9nKOWIl+ihqClcXFxcblxcXFxuXFxcXG5mb3IgKHZhciBpIGluIOWIl+ihqCkge1xcXFxuICAgICAgICDmoIfpopg95YiX6KGoW2ldLmZpbGVOYW1lXFxcXG4gICAgICAgIGlkPeWIl+ihqFtpXS5pZFxcXFxuICAgICAgICB1c2VyaWQ95YiX6KGoW2ldLnVzZXJJZFxcXFxuICAgICAgICDmlofku7blpKflsI895YiX6KGoW2ldLmZpbGVTaXplXFxcXG5cXFxcbmxvZyjmlofku7blpKflsI8pXFxcXG5pZijmlofku7blpKflsI89PTApe1xcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuagh+mimCxcXFxcbnBpY191cmw6XFxcXFxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWduN2ZuaGFoYzV1ejR2NmZ1ZzNya2ZicXp4MnI2b3YzNHV0cGtnZWtjeWljeGp6djJndHkjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiLFxcXFxudXJsOlxcXFxcXFwiaGlrZXI6Ly9wYWdlL+aWh+S7tuWkuVxcXFxcXFwiLFxcXFxuZGVzYzppZCxcXFxcbmV4dHJhOntpZDppZCx1c2VyaWQ6dXNlcmlkLOmcgOimgeeUqOaIt2lkOlxcXFxcXFwi6ZyA6KaBXFxcXFxcXCJ9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxufWVsc2V7XFxcXG5cXFxcbuaWh+S7tuagvOW8jz3liJfooahbaV0uc3VmZml4XFxcXG7mlofku7ZDSUQ95YiX6KGoW2ldLmZpbGVDaWRcXFxcbuaWh+S7tuWkp+Wwjz1mb3JtYXRTaXplKOaWh+S7tuWkp+WwjylcXFxcblxcXFxuXFxcXG5cXFxcbmlmKC8oanBnfGdpZnxwbmd8anBlZykkL2kudGVzdCjmoIfpopgpKXtcXFxcblxcXFxu5qC85byPPVxcXFxcXFwiIy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS9cXFxcXFxcIlxcXFxu5Zu+54mHPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXFxcXFwiK+aWh+S7tkNJRCtcXFxcXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG5cXFxcbn1lbHNlIGlmKC9cXFxcXFxcXC4oYXZpfHRzfG1wNHxtb3Z8bTR2fDNncHxybXxybXZifHdtdnxhc2Z8YXN4YXZpfGRhdHxta3Z8Zmx2fHZvYikkL2kudGVzdCjmoIfpopgpKXtcXFxcbuWbvueJhz1cXFxcXFxcImh0dHBzOi8vaXBmc2d3MDAuc3Rhcml2ZXJwYW4uY29tOjkwOTUvaXBmcy9iYWZrcmVpYzRvZDRvendwaG1iY3Z1dHd2eG4zdmdhdWw0dzVudjd6d3BoZTNtYXlza2JkN3o3bHZpZUBSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG7moLzlvI89XFxcXFxcXCIjaXNWaWRlbz10cnVlIzt7UmVmZXJlckBodHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS99XFxcXFxcXCJcXFxcbn1lbHNlIGlmKC8obXAzfHdtYSkkL2kudGVzdCjmoIfpopgpKXtcXFxcblxcXFxu5qC85byPPVxcXFxcXFwiIy5tcDM7e1JlZmVyZXJAaHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vfVxcXFxcXFwiXFxcXG7lm77niYc9XFxcXFxcXCJodHRwczovL2lwZnNndzAwLnN0YXJpdmVycGFuLmNvbTo5MDk1L2lwZnMvYmFma3JlaWU2M25xZ2lhdHBrdXh2ZmZlYnZnaGRzN2Fvb3BkY3g3bGlpd3RqMnF5cmpjY2g2MjUyZHUjLmpwZ0BSZWZlcmVyPWh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL1xcXFxcXFwiXFxcXG5cXFxcbn1lbHNle1xcXFxu5qC85byPPVxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIlxcXFxu5Zu+54mHPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWlmb2hmenlham81aTM2N2dweTU1dGwzazI0aW5mZnhkc3F3bGZlNGxjYmY2ZDRlcnFhdW9lQFJlZmVyZXI9aHR0cHM6Ly93eC5zdGFyaXZlcnBhbi5jb20vXFxcXFxcXCJcXFxcbn1cXFxcblxcXFxu6ZO+5o6lPVxcXFxcXFwiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL1xcXFxcXFwiK+aWh+S7tkNJRCvmoLzlvI9cXFxcblxcXFxuZC5wdXNoKHtcXFxcbnRpdGxlOuaWh+S7tuWkp+WwjytcXFxcXFxcIi1cXFxcXFxcIivmoIfpopgsXFxcXG5waWNfdXJsOuWbvueJhyxcXFxcbnVybDrmoLzlvI89PVxcXFxcXFwiO3tSZWZlcmVyQGh0dHBzOi8vd3guc3Rhcml2ZXJwYW4uY29tL31cXFxcXFxcIj9cXFxcXFxcImRvd25sb2FkOi8vXFxcXFxcXCIr6ZO+5o6lOumTvuaOpSxcXFxcbmRlc2M6aWQsXFxcXG5leHRyYTp7aWQ6aWR9LFxcXFxuY29sX3R5cGU6IFxcXFxcXFwiYXZhdGFyXFxcXFxcXCJcXFxcbn0pO1xcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG59XFxcXG5cXFxcblxcXFxufVxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5cXFxcblxcXFxuXFxcXG5zZXRSZXN1bHQoZCk7XFxcIn1dXCIsXCJwcm94eVwiOlwiXCJ9IiwicGljVXJsIjoiaHR0cHM6Ly9pcGZzZ3cwMC5zdGFyaXZlcnBhbi5jb206OTA5NS9pcGZzL2JhZmtyZWlnbjdmbmhhaGM1dXo0djZmdWczcmtmYnF6eDJyNm92MzR1dHBrZ2VrY3lpY3hqenYyZ3R5Iy5qcGdAUmVmZXJlcj1odHRwczovL3d4LnN0YXJpdmVycGFuLmNvbS8iLCJ0aXRsZSI6Iua8q+WogeWQiOmbhjEuOTNUIn0=
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement