xiaomianao666

小程序:哔哩Ⓡ

Aug 4th, 2022
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 海阔视界规则分享,当前分享的是:小程序¥home_rule_v2¥base64://@哔哩Ⓡ@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6ImpzOlxubGV0IGh0bWwgPSBnZXRSZXNDb2RlKClcbi8vIGxvZyhodG1sKVxubGV0IHJlZ2V4ID0gL3dpbmRvd1xcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcKGZ1bmN0aW9uXFwoXFwpXFx7L1xuLy8gbG9nKE1ZX1VSTClcbmlmKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsJykpIHtcbiAgICBsZXQgY29kZSA9IEpTT04ucGFyc2UoaHRtbClcbiAgICB0cnkge1xuICAgICAgICBpZiAoY29kZS5kYXRhLlZpZXdbJ3JlZGlyZWN0X3VybCddKSB7XG4gICAgICAgICAgICBNWV9VUkwgPSBjb2RlLmRhdGEuVmlld1sncmVkaXJlY3RfdXJsJ107XG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxuICAgIH1cbn1cbi8vIGxvZyhodG1sKVxuaWYgKE1ZX1VSTC5zdGFydHNXaXRoKCdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5LycpICYmIHJlZ2V4LnRlc3QoaHRtbCkpIHtcbiAgICAvLyDnlarliadcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoUmVnRXhwLiQxKVxuICAgIGxldCByZXN1bHQgPSByZXMubmV3ZXN0RXBcbiAgICBpZighcmVzdWx0KSB7XG4gICAgICAgIHJlc3VsdCA9IHJlcy5tZWRpYUluZm8ubmV3X2VwXG4gICAgfVxuICAgIHNldFJlc3VsdChcIuabtOaWsOiHs++8muesrFwiICsgcmVzdWx0LnRpdGxlICsgXCLor51cIilcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xuICAgIC8vIFVQIOS4u1xuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKGh0bWwpXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcbiAgICBzZXRSZXN1bHQoXCLmm7TmlrDoh7PvvJpcIiArIHJlc3VsdClcbn0gZWxzZSB7XG4gICAgc2V0UmVzdWx0KFwiXCIpXG59IiwidGl0bGUiOiLlk5Tlk6nik4ciLCJhdXRob3IiOiIxNjA2MTQyJlJ4JlJlYm9ybiIsInVybCI6Imhpa2VyOi8vZW1wdHkjZnlwYWdlIiwidmVyc2lvbiI6MjIwNzE3MDEsImNvbF90eXBlIjoibW92aWVfMSIsImNsYXNzX25hbWUiOiIiLCJ0eXBlIjoidmlkZW8iLCJjbGFzc191cmwiOiIiLCJhcmVhX25hbWUiOiIiLCJhcmVhX3VybCI6IiIsInNvcnRfbmFtZSI6IiIsInllYXJfbmFtZSI6IiIsInNvcnRfdXJsIjoiIiwieWVhcl91cmwiOiIiLCJmaW5kX3J1bGUiOiJqczpcbnZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcbmlmIChfdHlwZSA9PSBcIuaWsOeJiFwiKSB7XG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFwiaGlrZXI6Ly9wYWdlL2NvbW1vblwiKSkucnVsZSk7XG59IGVsc2UgaWYgKF90eXBlID09IFwi5pen54mIXCIpe1xuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcImhpa2VyOi8vcGFnZS9jb21tb24yXCIpKS5ydWxlKTtcbn0iLCJzZWFyY2hfdXJsIjoiaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvYWxsL3YyP2tleXdvcmQ9KiomcGFnZT1meXBhZ2UmcGFnZXNpemU9MjA7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9IiwiZ3JvdXAiOiLikaXliqjmvKsiLCJzZWFyY2hGaW5kIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2Uvc1wiKSkucnVsZSk7IiwiZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMiIsImRldGFpbF9maW5kX3J1bGUiOiIiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoianM6XG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXCJoaWtlcjovL3BhZ2UveWNsXCIpKS5ydWxlKTtcbi8v6YCa6L+H5pCc57Si5p+l55yL6Ieq5bex55qEdWlk77yM54S25ZCO5pu/5o2i5Y2z5Y+vXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKXtcbnB1dFZhcignc3RhcmlkJywnOTI4MTIzJyk7XG59ZWxzZXtcbnB1dFZhcignc3RhcmlkJyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSk7XG59XG5wdXRWYXIoXCJhY2Nlc3Nfa2V5XCIsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKTtcbi8v6Ieq5bex5Y67YuermeWuouaIt+err+mmlumhteaKk+WMhe+8jOaJvuWIsGFwcC5iaWxpYmlsaS5jb23lvIDlpLTnmoTpk77mjqXvvIznhLblkI7miophY2Nlc3Nfa2V555qE5YC85aGr5YWl5LiK5pa5Jz0n5ZCO6Z2i5Y2z5Y+vXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KSl7XG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsXCLmlrDniYhcIik7XG4gICAgfSIsInBhZ2VzIjoiW3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGg5LiA57qn5paw6aG16Z2iXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiAkKFxcXCLmm7TlpJpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgLy9waWNfdXJsOiAnaHR0cHM6Ly9pbWcwLmJhaWR1LmNvbS9pdC91PTE2MTIxMDE0MjMsMTE0NTk4MjE2MyZmbT0yNTMmYXBwPTEzOCZmPUpQRUc/dz01MDAmaD00MjQnLFxcbiAgICAgICAgaW1nOlxcXCJodHRwczovL3d3dy5oZWxsb2ltZy5jb20vaW1hZ2VzLzIwMjIvMDMvMDEvR1lQeWFBLmpwZ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcbiAgICAgICAgZGVzYzpcXFwiMFxcXCJcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aOkuihjOamnCcsXFxuICAgICAgICB1cmw6ICQoXFxcIuaOkuihjOamnFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTAucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55u05pKtJyxcXG4gICAgICAgIHVybDogJChcXFwi55u05pKtXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfml7blhYnmnLonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLml7blhYnmnLpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzU2LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ1VQJyxcXG4gICAgICAgIHVybDogJChcXFwiVVDkuLtcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzk4LnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+e0ouW8lScsXFxuICAgICAgICB1cmw6ICQoXFxcIue0ouW8lVxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNDcucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJChcXFwi5paw55WqXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMy5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmvKvmuLhcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzgzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+eZu+W9lScsXFxuICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvbmV3bG9naW4nLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJwaWNfMV9jYXJkXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGh5o6S6KGM5qacXCIsXCJwYXRoXCI6XCJwaGJcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxuXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHdvcmQxKSB7XFxuICAgICAgICB2YXIgYSA9IHdvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSBjbGFzczFbaV07XFxuICAgICAgICB2YXIgYyA9IGEgKyAnJicgKyBiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogIGEgPT0gbGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImxhYjFcXFwiLCBjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcImtleTFcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICB9LCBjKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG4vL+WIhuexu1xcbi8vbG9nKE1ZX1BBR0UpXFxuXFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXG5cXG5NWV9VUkwgPSB1cmwucmVwbGFjZSgnYWxsJywgZ2V0VmFyKCdrZXkxJykpO1xcblxcbnZhciB5bSA9IHJlcXVlc3QoTVlfVVJMLCB7fSkucmVwbGFjZSgvXFxcXFxcXFx1MDAyRi9nLCAnLycpO1xcbmlmICh5bS5pbmNsdWRlcygncmFuay10aXBzJykpIHtcXG5cXG4gICAgLyrmj5DnpLrkv6Hmga9cXG4gICAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6J+KAnOKAnCcrcGFyc2VEb21Gb3JIdG1sKHltLCcucmFuay10aXBzJiZUZXh0JykrJ+KAneKAnScsXFxuICAgICAgICBjb2xfdHlwZTondGV4dF8xJ1xcbiAgICAgIH0pO1xcbiAgICDmj5DnpLrkv6Hmga8qL1xcblxcbiAgICB2YXIgcGkgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwicmFua0xpc3RcXFwiOicpWzFdLnNwbGl0KCcsXFxcInJhbmtOb3RlXFxcIicpWzBdKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IHBpICE9IG51bGwgJiYgaSA8IHBpLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gaSArIDE7XFxuICAgICAgICB2YXIgcSA9IEpTT04uc3RyaW5naWZ5KHBpW2ldKTtcXG4gICAgICAgIGlmICghcGlbaV0udXJsKSB7XFxuICAgICAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBwaVtpXS5idmlkO1xcbiAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXG4gICAgICAgIH1cXG4gICAgICAgIFxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGlbaV0udGl0bGUsXFxuICAgICAgICAgICAgcGljX3VybDogcGlbaV0ucGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAoIXEuaW5jbHVkZXMoJ25hbWUnKSA/IHBpW2ldLm5ld19lcC5pbmRleF9zaG93IDogKCd1cDogJyArIHBpW2ldLm93bmVyLm5hbWUpKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgcnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xX2NhcmQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxuXFxcXG7igJjigJg8c21hbGw+JytwaVtpXS50aXRsZSsnXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6cGlbaV0ucGljK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGRlc2M6JzAnLFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOidwaWNfMV9jYXJkJ1xcbiAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAqL1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn4oCc4oCc6IqC5Yi25LiA54K577yM5LyR5oGv5ZWm77yB4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoXVw8J+Qt1wiLFwicGF0aFwiOlwidXBcIixcInJ1bGVcIjpcImNvbnN0IGhlYWRDb2xvciA9IFxcXCIjMzU4Y2NkXFxcIjtcXG5cXG4vL+aXtumXtOaIs+i9rOaNouaWueazlVxcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7XFxuICAgIHZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxuICAgIHZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSArICctJztcXG4gICAgdmFyIEREID0gKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpO1xcbiAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXG4gICAgcmV0dXJuIHRpbWVcXG59XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7cHV0VmFyKCdzZXQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcImA7XFxuLy/ml7bpl7TmiLPovazmjaJcXG5cXG52YXIgdWlkID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLCB7fSk7XFxudmFyIFVQX1VSTCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNoP21pZD11aWQmcHM9MzAmdGlkPTAma2V5d29yZD0manNvbnA9anNvbnAmcG49JyArIHBhZ2VudW0gKyAnJm9yZGVyPXB1YmRhdGUnO1xcbnZhciB1cF91cmwgPSBVUF9VUkwucmVwbGFjZShcXFwidWlkXFxcIiwgdWlkKTtcXG52YXIgeHggPSBnZXRWYXIoJ2xiMicpLnNwbGl0KCdcXFxcbicpO1xcbi8v5Y676Zmk56m655m95YWD57SgXFxuXFxudmFyIHh4ID0geHguZmlsdGVyKGZ1bmN0aW9uIChzKSB7XFxuICAgIHJldHVybiBzICYmIHMudHJpbSgpOyBcXG59KTtcXG4vL+abtOaWsOWktOWDj1xcbmZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgaWYgKCF4eFtrXS5zcGxpdCgnIyMnKVsxXSkge1xcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmanNvbnA9anNvbnAnLCB7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9JyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgJyZuZWVkX3RvcD0xJywge30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgIH1cXG4gICAgICAgIHZhciBmYWNlID0geHhba10gKyAnIyMnICsgcGljO1xcbiAgICAgICAgdmFyIGZhY2UgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIHt9KS5yZXBsYWNlKHh4W2tdLCBmYWNlKTtcXG4gICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXCIsIGZhY2UpO1xcbiAgICB9XFxufVxcblxcblxcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgdmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcbiAgICBpZiAoZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikgJiYgZ2V0VmFyKCdzdGFyaWQnKSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aOqOiNkCcgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mjqjojZAnLFxcbiAgICAgICAgICAgIHVybDogJ+aOqOiNkCcgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aUtuiXjycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mlLbol48nLFxcbiAgICAgICAgICAgIHVybDogJ+aUtuiXjycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veeVqicgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73nlaonLFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/ov73liacnLFxcbiAgICAgICAgICAgIHVybDogJ+i/veWJpycgKyBzcixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxuICAgIHZhciBzdGFyanNvbiA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKSArICcmanNvbnA9anNvbnAnLCB7fSkpO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIHN0YXJqc29uLmRhdGEubmFtZSxcXG4gICAgICAgIHBpY191cmw6IHN0YXJqc29uLmRhdGEuZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1VQJywgZ2V0VmFyKCdVUCcpPT0n5YWz5rOoJz8n5oqY5Y+gJzon5YWz5rOoJyk7cHV0VmFyKCdzZXQnLCcnKTtjbGVhclZhcignaHRtJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignVVAnLCfkuJPms6gnKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG4gICAgfSk7XFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJjigJhVUOKAmeKAmScgKyAnPC9zdHJvbmc+JyArIChnZXRWYXIoJ3VwJywgJ+aKmOWPoCcpID09ICflsZXlvIAnID8gJ/CfmYknIDogJ/CfmYgnKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigndXAnLCBnZXRWYXIoJ3VwJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtwdXRWYXIoJ3NldCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3VwJywn5bGV5byAJyk7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ3NldCcpICE9ICcnID8gKGdldFZhcignc2V0JykgPT0gJ+e9rumhticgPyAnPHN0cm9uZz4nICsgJ+KAnOKAnOe9rumhticgKyAnPC9zdHJvbmc+JyA6ICc8c3Ryb25nPicgKyAn4oCc4oCc5Y+W5YWz4oCd4oCdJyArICc8L3N0cm9uZz4nKSA6ICforr7nva4nLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdzZXQnLCBnZXRWYXIoJ3NldCcsJ+WxleW8gCcpPT0n5Y+W5YWzJz8n572u6aG2Jzon5Y+W5YWzJyk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdzZXQnLCflsZXlvIAnKSsnaW5nfidcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgIH0pO1xcblxcbiAgICBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnKSB7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJyB8fCBnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpIHtcXG4gICAgICAgICAgICB2YXIgdXJscyA9IFtdO1xcbiAgICAgICAgICAgIHZhciBzdXJsID0gJ2h0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvdz90eXBlPWZvbGxvdyZtaWQ9JyArIGdldFZhcignc3RhcmlkJyk7XFxuICAgICAgICAgICAgdmFyIGlkID0gc3VybC5zcGxpdCgnbWlkPScpWzFdO1xcbiAgICAgICAgICAgIHZhciBjb2RlID0gZmV0Y2goc3VybCwge30pO1xcbiAgICAgICAgICAgIHZhciBzdGFybGlzdCA9IEpTT04ucGFyc2UoJ3tcXFwibXknICsgY29kZS5zcGxpdCgne1xcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSArICd9fScpO1xcblxcbiAgICAgICAgICAgIHZhciBzdGFybHMgPSBzdGFybGlzdFsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScgKyBpZF1bJ3Jlc3VsdCddO1xcbiAgICAgICAgICAgIGZvciAoeCBpbiBzdGFybHMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHN0YXJsc1t4XS5taWQgKyAnJnBzPTMwJnRpZD0wJmtleXdvcmQ9Jmpzb25wPWpzb25wJnBuPWZ5cGFnZSZvcmRlcj1wdWJkYXRlJztcXG4gICAgICAgICAgICAgICAgdXJscy5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHVybDogeXVybC5yZXBsYWNlKC9meXBhZ2UvZywgJzEnKVxcbiAgICAgICAgICAgICAgICB9KTtcXG5cXG4gICAgICAgICAgICAgICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJylcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IHN0YXJsc1t4XS51bmFtZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBpbWc6IHN0YXJsc1t4XS5mYWNlICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZ3oyP3VybD0nICsgeXVybCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgfVxcbiAgICAvL+WFs+azqOWIl+ihqFxcblxcbiAgICBpZiAoZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnICYmIGdldFZhcignVVAnKSAhPSAn5YWz5rOoJykge1xcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFwiLGlucHV0KTtwdXRWYXIoJ3VwJywn5oqY5Y+gJyk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCI7YCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgLy/lj5blhbPnm7jlhbNcXG5cXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+WPluWFsycpIHtcXG5cXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4p2MJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/lj5blhbPmiJDlip/vvIHpk4HlrZDlho3op4Hwn6aGJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v572u6aG255u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ/CflJ0nICsgc3QgKyB4eFtrXS5zcGxpdCgnJiYnKVswXSxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxuJzt2YXIgeHI9Z2V0VmFyKCdsYjInKSsnXFxcXFxcXFxuJzt2YXIgeHo9eHIucmVwbGFjZShzYywnJyk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIixzYyt4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+e9rumhtuaIkOWKn/CflJ0nYCxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG5cXG59XFxuLy9kLnB1c2goe3RpdGxlOnh4fSk7XFxuaWYgKHNfdGFiID09ICfmjqjojZAnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2ZlZWRcXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn5pS26JePJykge1xcbiAgICBpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS92aWRlb1xcXCIpKS5ydWxlKTtcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXCIpKS5ydWxlKVxcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSAhPSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcgJiYgZ2V0VmFyKCdzZXQnKSA9PSAnJykge1xcbiAgICB2YXIganNvbiA9IHt9O1xcbiAgICBldmFsKCdqc29uPScgKyBmZXRjaCh1cF91cmwsIHt9KSk7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciByID0ge307XFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcbiAgICAgICAgdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSAqIDEwMDA7XFxuXFxuXFxuICAgICAgICB2YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG4gICAgICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICB2YXIgcGxheSA9IChqLnBsYXkgLyAxMDAwMCkudG9GaXhlZCgxKSArICfkuIcnO1xcbiAgICAgICAgZWxzZVxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcblxcbiAgICAgICAgdmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGoucGljIDogJ2h0dHBzOicgKyBqLnBpYztcXG5cXG4gICAgICAgIHIucGljX3VybCA9IHBpY3MgKyBSZWZlcmVyO1xcbiAgICAgICAgci51cmwgPSAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXG4gICAgICAgIHIuY29sX3R5cGUgPSAnbW92aWVfMV92ZXJ0aWNhbF9waWMnO1xcbiAgICAgICAgci5kZXNjID0gJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIHRpbWU7XFxuICAgICAgICBpZiAoai5sZW5ndGggIT0gXFxcIjAwOjAwXFxcIikge1xcbiAgICAgICAgICAgIGQucHVzaChyKVxcbiAgICAgICAgfTtcXG4gICAgfVxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJykge1xcblxcbiAgICBpZiAoZ2V0VmFyKCdodG0nKSA9PSAnJykge1xcbiAgICAgICAgaHRtID0gW107XFxuICAgICAgICB2YXIgeW0gPSBiYXRjaEZldGNoKHVybHMpLm1hcChmdW5jdGlvbihhKSB7XFxuICAgICAgICAgICAgdmFyIGggPSBKU09OLnBhcnNlKGEpLmRhdGEubGlzdC52bGlzdDtcXG4gICAgICAgICAgICBodG0gPSBodG0uY29uY2F0KGgpO1xcbiAgICAgICAgfSk7XFxuICAgICAgICBodG0gPSBodG0uc29ydChmdW5jdGlvbihhLCBiKSB7XFxuICAgICAgICAgICAgcmV0dXJuIGIuY3JlYXRlZCAtIGEuY3JlYXRlZDtcXG4gICAgICAgIH0pLm1hcChmdW5jdGlvbihhKSB7XFxuICAgICAgICAgICAgYS5jcmVhdGVkID0gZ2V0TG9jYWxUaW1lKE51bWJlcihhLmNyZWF0ZWQpICogMTAwMCk7XFxuICAgICAgICAgICAgcmV0dXJuIGFcXG4gICAgICAgIH0pO1xcbiAgICAgICAgcHV0VmFyKCdodG0nLCBKU09OLnN0cmluZ2lmeShodG0pKTtcXG4gICAgfSBlbHNlIGh0bSA9IEpTT04ucGFyc2UoZ2V0VmFyKCdodG0nKSk7XFxuICAgIHZhciBpID0gMDtcXG4gICAgdmFyIGsgPSAwO1xcbiAgICB2YXIgciA9IG5ldyBEYXRlKCk7XFxuICAgIHZhciBNID0gci5nZXRNb250aCgpICsgMTtcXG4gICAgdmFyIHREID0gci5nZXRGdWxsWWVhcigpICsgJy0nICsgKE0gPCAxMCA/ICgnMCcgKyBNKSA6IE0pICsgJy0nICsgKHIuZ2V0RGF0ZSgpIDwgMTAgPyAoJzAnICsgci5nZXREYXRlKCkpIDogci5nZXREYXRlKCkpO1xcblxcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGh0bS5sZW5ndGg7IGorKykge1xcbiAgICAgICAgdHJ5IHtcXG5cXG4gICAgICAgICAgICBpZiAoaiAhPSAwICYmIGh0bVtqIC0gMV0uY3JlYXRlZCAhPSBodG1bal0uY3JlYXRlZCkgaSsrO1xcblxcbiAgICAgICAgICAgIGlmIChpICsgMSA9PSBNWV9VUkwuc3BsaXQoJyMnKVsxXSkge1xcbiAgICAgICAgICAgICAgICBpZiAoayA9PSAwKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGF0ZSA9IGh0bVtqXS5jcmVhdGVkO1xcbiAgICAgICAgICAgICAgICAgICAgaysrO1xcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gdEQpIGRhdGUgPSAnPHN0cm9uZz7ku4rlpKk8L3N0cm9uZz4nO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+KAnOKAnOKAneKAnTxmb250IGNvbG9yPVxcXCIjMzU4Y2NkXFxcIj4nICsgZGF0ZSArICc8XFxcXGZvbnQ+JyxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdXJsOmBAbGF6eVJ1bGU9LmpzOmNsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Yi35paw5oiQ5YqfJztgXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICBpZiAoaHRtW2pdLnBsYXkgPiAxMDAwMClcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gKGh0bVtqXS5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgICAgICAgICAgZWxzZVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBsYXkgPSBodG1bal0ucGxheTtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1bal0udGl0bGUsXFxuICAgICAgICAgICAgICAgICAgICBpbWc6ICgoaHRtW2pdLnBpYy5pbmRleE9mKCc6JykgIT0gLTEpID8gaHRtW2pdLnBpYyA6ICgnaHR0cHM6JyArIGh0bVtqXS5waWMpKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICBkZXNjOiAnVVA6JyArIGh0bVtqXS5hdXRob3IgKyAnICDml7bplb/vvJonICsgaHRtW2pdLmxlbmd0aCArICdcXFxcbuaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5Y+R5biD5pel5pyf77yaJyArIGh0bVtqXS5jcmVhdGVkLFxcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBodG1bal0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaSArIDEgPiBNWV9VUkwuc3BsaXQoJyMnKVsxXSkge1xcbiAgICAgICAgICAgICAgICBicmVhaztcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9IGNhdGNoIChlKSB7fVxcbiAgICB9XFxuXFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoeaXtuWFifCfkJRcIixcInBhdGhcIjpcInNnalwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG52YXIgYzIgPSAnMjImMjEyJjcxJjE4MiYxMzgmMjgmMzMmMTg1JztcXG5cXG52YXIgdzIgPSAn6ay855WcJue+jumjnybnu7zoibom5b2x6KeGJueUn+a0uybpn7PkuZAm55Wq5YmnJueUteinhuWJpyc7XFxuXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MyID0gYzIuc3BsaXQoJyYnKTtcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcbmZvciAodmFyIGkgaW4gd29yZDIpe1xcbiAgICB2YXIgYSA9IHdvcmQyW2ldO1xcbiAgICB2YXIgYiA9IGNsYXNzMltpXTtcXG4gICAgdmFyIGMgPSBhICsgJyYnICsgYjtcXG4gICAgZC5wdXNoKHtcXG4gICAgdGl0bGU6IGE9PWxhYjI/IGdldEhlYWQoYSk6YSxcXG4gICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKT0+e1xcbiAgICAgICAgcHV0VmFyKFxcXCJsYWIyXFxcIixjLnNwbGl0KCcmJylbMF0pO1xcbiAgICAgICAgcHV0VmFyKFxcXCJrZXkyXFxcIixjLnNwbGl0KCcmJylbMV0pO1xcbiAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICB9LCBjKSxcXG4gICAgY29sX3R5cGU6J3Njcm9sbF9idXR0b24nXFxuICAgIH0pO1xcbn1cXG59XFxuLy/liIbnsbtcXG5cXG52YXIgbSA9IE51bWJlcihmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHRcXFwiLHt9KSk7XFxudmFyIHQgPSBtPDA/MDptO1xcbnZhciBudW0xID0gTnVtYmVyKHQpLTEyO1xcbnZhciBudW0yID0gTnVtYmVyKHQpKzEyO1xcbnZhciBudW0zID0gTnVtYmVyKHQpLTE7XFxudmFyIG51bTQgPSBOdW1iZXIodCkrMTtcXG4vL3ZhciB0aW1lc3RhbXAgPSBEYXRlLnBhcnNlKG5ldyBEYXRlKCkpO1xcbnZhciB0aW1lc3RhbXAgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgc3RhbXAxID0gdGltZXN0YW1wIC0gdCozMCoyNCo2MCo2MCoxMDAwO1xcbnZhciBzdGFtcDIgPSB0aW1lc3RhbXAgLSAodCsxKSozMCoyNCo2MCo2MCoxMDAwO1xcbi8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgbW0gPSBzc3Muc3BsaXQoJ+W5tCcpWzFdLnNwbGl0KCfmnIgnKVswXTtcXG4gICAgIHZhciBkZCA9IHNzcy5zcGxpdCgn5pyIJylbMV0uc3BsaXQoJ+aXpScpWzBdO1xcbiAgICAgdmFyIFlZID0gc3NzLnNwbGl0KCflubQnKVswXTtcXG4gICAgIHZhciBNTSA9IChtbTwgMTAgPyAnMCcgKyBtbTptbSk7XFxuICAgICB2YXIgREQgPSAoZGQ8IDEwID8gJzAnICsgZGQ6ZGQpO1xcbiAgICAgcmV0dXJuIChZWStNTStERClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxudmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxudmFyIFlZID0gU3RyaW5nKGRhdGUuZ2V0RnVsbFllYXIoKSk7IFxcbnZhciBNTSA9IFN0cmluZygoZGF0ZS5nZXRNb250aCgpICsgMSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0TW9udGgoKSArIDEpIDogZGF0ZS5nZXRNb250aCgpICsgMSkpOyBcXG52YXIgREQgPSBTdHJpbmcoKGRhdGUuZ2V0RGF0ZSgpIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXREYXRlKCkpIDogZGF0ZS5nZXREYXRlKCkpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZTEgPSBnZXRMb2NhbFRpbWUoc3RhbXAxKTtcXG52YXIgdGltZTIgPSBnZXRMb2NhbFRpbWUoc3RhbXAyKTtcXG52YXIgU0dKX1VSTCA9ICdodHRwczovL3Muc2VhcmNoLmJpbGliaWxpLmNvbS9jYXRlL3NlYXJjaD9tYWluX3Zlcj12MyZzZWFyY2hfdHlwZT12aWRlbyZ2aWV3X3R5cGU9aG90X3Jhbmsmb3JkZXI9Y2xpY2smY29weV9yaWdodD0tMSZjYXRlX2lkPTIyJnBhZ2U9JytwYWdlbnVtKycmcGFnZXNpemU9MTAmdGltZV9mcm9tPXRpbWUyJnRpbWVfdG89dGltZTEnO1xcbnZhciBVUkwgPSBTR0pfVVJMLnJlcGxhY2UoJ3RpbWUxJyx0aW1lMSkucmVwbGFjZSgndGltZTInLHRpbWUyKS5yZXBsYWNlKCcyMicsZ2V0VmFyKCdrZXkyJykhPScnP2dldFZhcigna2V5MicpOicyMicpO1xcbnZhciBqc29uID0gSlNPTi5wYXJzZShyZXF1ZXN0KFVSTCx7fSkpO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXT09JzEnKXtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonKzHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMStgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOictMeW5tCcsXFxuICAgICAgICAgIHVybDpcXG5udW0yK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTMrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHmnIgnLFxcbiAgICAgICAgICB1cmw6XFxubnVtNCtgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmdldEhlYWQoKCflvZPliY3ml7bpl7Tnur86ICcrdGltZTIrJ34nK3RpbWUxKSksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHRpbWVzdGFtcCkuIHNwbGl0KCfml6UnKVswXSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbn1cXG4vKlxcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOiBnZXRMb2NhbFRpbWUoc3NzKSxcXG4gICAgICAgICAgXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICB9KTtcXG4qL1xcbmZvciAodmFyIGkgaW4ganNvbi5yZXN1bHQpXFxue1xcbiB2YXIgciA9IHt9O1xcbiB2YXIgaiA9IGpzb24ucmVzdWx0W2ldO1xcbiBpZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuIGVsc2VcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxuIGQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOmoudGl0bGUsXFxuICAgICAgICAgIGltZzonaHR0cHM6JytqLnBpYytSZWZlcmVyLFxcbiAgICAgICAgICBkZXNjOid1cPCfkLc6JytqLmF1dGhvcisnXFxcXG7mkq3mlL7ph486ICcrcGxheSsnICAgICAgICDlj5HluIPml6XmnJ86ICcrai5wdWJkYXRlLyorJ1xcXFxu5o+P6L+wOicrai5kZXNjcmlwdGlvbiovLFxcbiAgICAgICAgICB1cmw6XFxuJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgY29sX3R5cGU6J21vdmllXzInXFxuICAgICAgIH0pO1xcbn1cXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuoznuqdcIixcInBhdGhcIjpcImRldGFpbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuLy9sb2coTVlfUlVMRS50aXRsZSlcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuLy/mlbDnu4Tljrvph41cXG5mdW5jdGlvbiB1bmlxdWUoYXJyKSB744CA44CAXFxuICAgIGxldCBoYXNoID0gW10744CA44CAXFxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB744CA44CA44CA44CAXFxuICAgICAgICBpZiAoaGFzaC5pbmRleE9mKGFycltpXSkgPT09IC0xKSB744CA44CA44CA44CA44CA44CAXFxuICAgICAgICAgICAgaGFzaC5wdXNoKGFycltpXSk744CA44CA44CA44CAXFxuICAgICAgICB944CAXFxuICAgIH1cXG4gICAgcmV0dXJuIGhhc2g7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgIC8vbG9nKGIpXFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYlswXS5idmlkO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFwiJylbMF0uc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiO1xcbiAgICB9XFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcbn1cXG52YXIganNvbiA9IEpTT04ucGFyc2UoYmFuZ3VtaSk7XFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXG52YXIgcCA9IHYucGFnZXM7XFxudmFyIGNhcmQgPSBqc29uLmRhdGEuQ2FyZC5jYXJkO1xcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxudmFyIHRhZ3MgPSBqc29uLmRhdGEuVGFncztcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG52YXIgbGlrZV91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9saWtlJztcXG52YXIgY29pbl91cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvdjIvdmlldy9jb2luL2FkZCc7XFxudmFyIGFkZF91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L2FkZCc7XFxudmFyIGRlbF91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L2RlbCc7XFxudmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbnZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcbnZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG52YXIgeGx4eiA9IFxcXCJoaWtlcjovL2VtcHR5I25vUmVjb3JkSGlzdG9yeSNAcnVsZT1qczp0aGlzLmQ9W107cmVxdWlyZSgnaHR0cHM6Ly9naXRlYS5jb20vQUk5NTcvSGlrZXIvcmF3L20vdi9Sb3V0ZS5qcycpO1JvdXRlLnNldFBhcnNlKCk7c2V0UmVzdWx0KGQpO1xcXCI7XFxudmFyIGp4Z2wgPSBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvanhJdGVtLmpzJyk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXCI7XFxuaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgIHZhciByZWRpcmVjdCA9IHZbJ3JlZGlyZWN0X3VybCddO1xcbiAgICB2YXIgeW0gPSBmZXRjaChyZWRpcmVjdCwge30pO1xcblxcbn1cXG5cXG5ldmFsUHJpdmF0ZUpTKFxcXCJYVWlGVDF2WFlXclV3K1ZocG5xbGcwTjB2QVdncGdsaDhNaForOXZQRDk5Tko1VmdlRmRIbXdhS2F3SXk2QzBoNkZGUWhFUTVSaEptVjBFUUhuTDl4eWJQSEFjaEFMN2haRVpkK2hiR0hWNWplRytuSzVRM2llNzhwdUdEYjFUSjRmQUk3ZzZlekxJalFNQnhOLzJYTTkyWU5OUEtESGRoTElNUUdWNjlNcThjVE9XaktwWlFwMC92Z051eGFQUUtFelNkSFFKdWU3dFR4ZFNFdkR0M3MvdHhkRWgvb0d6RkNDTldlWkNVVTUzemhFaEMwNnE2WkZqWkNNK2Q4RnNaNWNYbE5KZW10ZWdNZ0pVTGRUcWFWZFJ3VmhWWCsxdUJROU55MERwc05HeDJMd0hnT2psczlodzE0TGhFcXRoRWU3M3lQQkd2U2dLRUJkU1lnRzdjSzdoWVZURU5lR1RpUkF6S1BRN2pHRXFFSjhhYWRIT0hBZVNhMjVhQmJ6YzgxaGh4Z1h0aWFsWDhVcWVwbjdrNGcyR2tzcW9HM0pWSStxVGZXWnhQV3FOTS8walVYYnJVVENSWm5yekdWb3c2TndQUVhLcTNDREtsOWkrYVp2ZVd6NUlmNUVORVpHaVdsVzV6NGFKU0VjZXhDRHNpWmxvMS9RSklqMnJXb25FMHU1NGFoMi9aWi8vWkdvTUJKK2QxOUdtZXBrTEJEM24ycW9nS25qWmoycmpXcWdQYWRFZWUxWkloWjNTR2JtVGxKZjFBNEJZSXV1UHd2NGRHWmRSb0RXNjRCaEM1anVDbjZ3RG03WW15N0JYZjFzUWFGaW1FbnJTSWlIR2hNK1dLZzNJeVdlY3VoL0drKytNbU42QXh4Y3ZOQXlwOGJDNGh6Qk12WkovbDV0UnlhcG9tZENWNUJwaVhmamtXUm5ib3BJakkrV0tCM2ZDYVl5UmRlTkxFUktuRWxzY0RpejdVZW5McHJoWWMvYTRMc0dlTU1GVlo4WW84L3dHWUgzOEpcXFwiKVxcblxcbnZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby8nICsgdi5idmlkO1xcbnZhciBtb2RlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0XFxcIiwge30pO1xcbnZhciBtb2RlX3VybCA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnywg54K55Liq6KeG6aKR6K+V6K+V5ZCnKF5fXikgJ2A7XFxudmFyIHpsID0gXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncGFnZScsIGdldFZhcigncGFnZScpPT0n55u06ZO+Jz8n5YWz6ZetJzon55u06ZO+Jyk7cmVmcmVzaFBhZ2UoKTtpZihnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvicpeyd0b2FzdDovL+eCueWHu+S4i+aWueWIh+aNoua4heaZsOW6pvCfpJ8nfWVsc2V7J3RvYXN0Oi8v5bey5YWz6ZetJ31cXFwiO1xcbmlmIChtb2RlID09ICd5aGMnKSB7XFxuICAgIHZhciBsYXp5ID0geWhjXFxufVxcbmQucHVzaCh7XFxuICAgIHRpdGxlOiB2LnRpdGxlLFxcbiAgICBkZXNjOiAn5o+P6L+wOiAnICsgdi5kZXNjICsgJ+OAgOexu+WeizogJyArIHYudG5hbWUsXFxuICAgIHVybDogJChcXFwiaGlrZXI6Ly9lbXB0eVxcXCIpLnJ1bGUoKGRlc2MpID0+IHtcXG4gICAgICAgIHZhciBkID0gW11cXG4gICAgICAgIHZhciByZXMgPSB7fVxcbiAgICAgICAgdHJ5IHtcXG4gICAgICAgICAgICB2YXIgZGVzY19saXN0ID0gZGVzYy5tYXRjaCgvQlZcXFxcdysvZylcXG4gICAgICAgICAgICBsb2coZGVzY19saXN0KVxcbiAgICAgICAgICAgIGZvciAobGV0IHggb2YgZGVzY19saXN0KSB7XFxuICAgICAgICAgICAgICAgIHZhciBkZXNjID0gZGVzYy5yZXBsYWNlKHgsIFxcXCI8YSBocmVmPSdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL20uYmlsaWJpbGkuY29tL3ZpZGVvL1xcXCIgKyB4ICsgXFxcIiNpbW1lcnNpdmVUaGVtZSMnPlxcXCIgKyB4ICsgXFxcIjwvYT5cXFwiKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH0gY2F0Y2ggKGUpIHt9XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn566A5LuL77yaJyArIGRlc2MucmVwbGFjZSgvXFxcXG4vZyxcXFwiPGJyPlxcXCIpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICAgICAgfSlcXG4gICAgICAgIHNldFJlc3VsdChkKVxcbiAgICB9LCB2LmRlc2MpLFxcbiAgICBpbWc6IHYucGljICsgUmVmZXJlcixcXG4gICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpY19ibHVyJyxcXG4gICAgZXh0cmE6IHtcXG4gICAgICAgICAgICBncmFkaWVudDogdHJ1ZVxcbiAgICAgICAgfVxcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAnICAnICsgY2FyZC5uYW1lLFxcbiAgICBwaWNfdXJsOiBjYXJkLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXG4gICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyBjYXJkLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUnLFxcbiAgICBjb2xfdHlwZTogJ2ljb25fMl9yb3VuZCdcXG59KTtcXG5kLnB1c2goe1xcbiAgICB0aXRsZTogJ+KAnOKAnOKtkO+4j1N0YXLigJ3igJ0nLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnIyMnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbn0pO1xcblxcbmZ1bmN0aW9uIHJlcXVlc3RfYmlsaV9hcGkoYmFzZVVybCwgU2VjcmV0SWQsIFNlY3JldEtleSkge1xcbiAgICBpZiAoIVNlY3JldElkIHx8ICFTZWNyZXRLZXkpIHJldHVybiByZXF1ZXN0KGJhc2VVcmwpXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXG4gICAgbGV0IG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xcbiAgICBsZXQgZGF0ZVRpbWUgPSBub3dEYXRlLnRvVVRDU3RyaW5nKCk7XFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcbiAgICBsZXQgYXV0aCA9IFxcXCJobWFjIGlkPVxcXFxcXFwiXFxcIiArIFNlY3JldElkICsgXFxcIlxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXCJobWFjLXNoYTFcXFxcXFxcIiwgaGVhZGVycz1cXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcIiwgc2lnbmF0dXJlPVxcXFxcXFwiXFxcIjtcXG4gICAgbGV0IHNpZ25TdHIgPSBcXFwieC1kYXRlOiBcXFwiICsgZGF0ZVRpbWUgKyBcXFwiXFxcXG5cXFwiICsgXFxcInNvdXJjZTogXFxcIiArIHNvdXJjZTtcXG4gICAgbGV0IHNpZ24gPSBDcnlwdG9KUy5IbWFjU0hBMShzaWduU3RyLCBTZWNyZXRLZXkpXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcbiAgICBzaWduID0gYXV0aCArIHNpZ24gKyBcXFwiXFxcXFxcXCJcXFwiXFxuICAgIHJldHVybiByZXF1ZXN0KGJhc2VVcmwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiU291cmNlXFxcIjogc291cmNlLFxcbiAgICAgICAgICAgIFxcXCJYLURhdGVcXFwiOiBkYXRlVGltZSxcXG4gICAgICAgICAgICBcXFwiQXV0aG9yaXphdGlvblxcXCI6IHNpZ25cXG4gICAgICAgIH1cXG4gICAgfSlcXG59XFxuXFxuLy/osIPnlKhhcGlcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKSkucnVsZSlcXG5cXG4vL+iHquWumuS5iWFwaemhuVxcbnZhciBtQXBpID0ge1xcbiAgICBhdXRob3I6ICcnLFxcbiAgICB0eXBlOiAnJyxcXG4gICAgaWQ6ICcnLFxcbiAgICBiYXNlVXJsOiAnJyxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcbiAgICBzZWNyZXRLZXk6ICcnXFxufVxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcbn1cXG5cXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxuXFxuXFxudHJ5IHtcXG4gICAgaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgdmFyIHNlYXNvbl9pZCA9IHltLnNwbGl0KCdcXFwic2Vhc29uX2lkXFxcIjonKVsxXS5zcGxpdCgnLCcpWzBdO1xcbiAgICAgICAgLy9sb2coc2Vhc29uX2lkKVxcbiAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JyxcXG4gICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfmlq3mj5InLFxcbiAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+aWreaPkicgPyB4bHh6IDogJ+aWreaPkicgKyBtb2RlX3VybCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJyAmJiBnZXRWYXIoJ2FjY2Vzc19rZXknKSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGFkZF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGFkZF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coYWRkX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBhZGRfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5Y+W5raIJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGRlbF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRlbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coZGVsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBkZWxfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBlcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxuICAgICAgICAgICAgdmFyIGJhZGdlID0gZXBbaV1bJ2JhZGdlJ10gPyAnWycgKyBlcFtpXVsnYmFkZ2UnXSArICddJyA6ICcnO1xcbiAgICAgICAgICAgIGlmIChtb2RlID09ICdYNScpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAneDVSdWxlOi8vJyArIGp4ICsgJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9iYW5ndW1pL3BsYXkvZXAnICsgZXBbaV1bJ2lkJ10gKyAnQCc7XFxuICAgICAgICAgICAgfSBlbHNlIHtcXG4gICAgICAgICAgICAgICAgdmFyIHB1cmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXG4gICAgICAgICAgICB2YXIgdGl0bGVzID0gKGVwW2ldWyd0aXRsZUZvcm1hdCddKSA/IGVwW2ldWyd0aXRsZUZvcm1hdCddIDogZXBbaV1bJ3RpdGxlJ107XFxuICAgICAgICAgICAgdmFyIGRlc2MgPSAoZXBbaV1bJ2xvbmdUaXRsZSddKSA/IGVwW2ldWydsb25nVGl0bGUnXSA6IChlcFtpXVsnbG9uZ190aXRsZSddID8gZXBbaV1bJ2xvbmdfdGl0bGUnXSA6ICcnKTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVPUmtUS2RDSHZHOFRUWTRrY3pyUGZOVFBRYm1ROW1HYi9LblZtNXJJYnhyNkl5TmNzVmFCcW9jWE1qZzhPZHE1SWJnRHY3eVNteXk4RmlUYkxlWXZ1WXF6VWQ1dmdqSWRGTDMzZ2NNQXM0djdNSHJpM1MvckI1N0FMc2oydHFPb1NQSFRuUHgxYzlxN3BqUmwwVXRYeXVKTGNxOVBQWDgxejQrcFBOOUdpSkg1MlJGd1NLYUZ1WUtIbHMzS2xhdENydEt4eGw2a2lBNjFUY25DMFdlOGp1cmxjRGd0aVB3SURMd2wrSlA5SlJld1oxVlpkTlZ6Q1orejBYT09CazZYY3dYYmpOM0lIY2MyeWU2cXZHamNjV3lwUjNPNElNdUN3eVNQWDRtcEhqOXcvMFptRVF2dm1XVVg5NXc3K2N5dGdMNFJaMDM1dXA3cTY5UDhMeHVnc3hZaTU4VmgvZ2hiSVNzN2FGQ3RwZlZUVGVRb0dKUWVDZUpIRTFxVXBFZFBaOU5PV1YzVUpiUFlkVnE3Wk9SVzhZUmttc0d6a0h4a01HU05wOURpeEdsdGErSWI5SEtmTUFUOU9nL05mVE5ETjVIN20rZ1prSkNDSGFpeVRiSUczNjN1eDhKWlFsKytTRDlPQ0pVaHlWLzdoZkdKakpLNVNrMXZZc3Yxc0xPdk02VU12c08vUE93NUNjcjc5c0p6aWRYak5VcUdsa25seFNGaU1wK2tla1hEb2lnMVhscmVuMm16UjAxY2RnbC9VeWdXOGhYQ1drbFJuYy9UVjBTUndKVHJVbEl3REJTOHpLQS9TOUpwb2tSamV1YVF6N3lscmtoQno2R0ZEN1ZXM3dQVmhWUm4xbWZZckwzVStoMmpTZ3JtUWNyQ2M0QTJWa2JocDVHUzNOOCtoTDVMOENzR2N3NThKZUlVN2pFbDJWUVJrNjhsYXJBenYyT2NFNUVWVlhUUjlDajB0Y0RXVzZ4VS80T1NxNU91VzZJdzVYc0ZSZ1dicWFEZnp3WXlCUnVCc0VhSkl4VUdyR285a1N3YTJ4U2VQK01DaWFxL3gvVEhaY3FhSDBsMEVmdkszbzNDZWNqZUl1cUNBbXQwY3NyeTBqV1ZuUDdDSi83MWtnQjFQWmRDRWJaUmloV2Rtak10Umkva2JIUk5FSCtyVERvMjBmeVBEdWJsS0V4Rk9CQWdqay9haHJKaE9nZFlEaHRCRERMSzh0STFsWnord2lmKzlaSUFkVDJJRk5wUThYZDRSdmlqakdMcnhRUjJ4OW1hTHpZK3JaNWNIZFlNaGg4bFhzNWVIUllnVVFMVk1FenJkVTM1Q0NreGExWE8zbytDQzFySThGaDlLd3FtRGpsZHlpMCtpWTRjMWZKdHdkdUVXNytPWWdiZmJVMC9KUnhwMHJyUE5FRXNjenlkZ0lva1RWbXJlTm5oVG9zR1VnUHBvbTVFNlhzcVlFaC9RRllLVnQ5VXhVNlNwanZjT3hlWGdhWm1SR1YxdVdkOWt0YktuR0V0cDVQZDVuZnBjUk13K2tHOEFhdDZ6a0dpK0dEV0xKSTd6VVpBZTN0dEd1eFNPQjhyc21lV1NtVWZtTFZpS0FQRTZQazJMbTNna0xGUkZJTEZINk1WNWR5OUdaSHpDUExLOHRJMWxaeit3aWYrOVpJQWRUMkMxeGdMckNZR0tYbnhSbDRjWm8wLytta3ZQNXpCdURhZk9zdWU5MXVUdGJPbERMN0R2enpzT1FuSysvYkNjNG5ud0JnaXdNRHpHQy9FeHJRSVFiK2NVREVKVkh5MWc3aUw5RVU2RC9uSndxV0ZKVFRPMTRmUW53VzRNNURXWW9leXl2TFNOWldjL3NJbi92V1NBSFU5blgzSXFqSzAwV1hBSGVuRUh4MCtEYnRLTExQblpjVGNYT3U1WEUyQW02SXBCeGFZY1ZJMFVnYjZRaW0yUzFkYy91M09KYjk1UFZXMVA1VW44ZTdGaGpET1JPdUtqaU1CRWZwbkJOZWxHVWZzT1paL2xuZktlbVh4dTV4NmpYM0xXYzBTN2tzeFhQTmtISFk1MUxRZ0VCMnlyazFIUHI0ZXg2UmlaVDM4eHVCbk1XK2c5QjZtOVlJcjFrSWlseVVTTXNyeTBqV1ZuUDdDSi83MWtnQjFQYWhLOURwTWNDZGtNb2duSkF5VDZkaFYwQ2NBRDZCNmtHQ0ozc04zVm12c0lvY1NCMG5sVnBOR1JmM2lCSlVaRmprcTZYRGRFcnczLzVGUzhuTTZQdmJDYk53Q0hhZHBwOTBrcGdBMTMyV05NbXFpUmNYOVp3YU9KdnNVZVNPS3pUWW1uYTlWWFNJVnZzYnRkMTlDVnI3L0VzTFNzQzdScXZqejQvalg3SU5hWnB3a3ZZK0ltT1htZk1JcHNuUFhCcnZobWRtUEM4a0FNNXRqTWJhQUpVNjFkSE1NSmxWMmhOVlFsYldSQVl2ZHJTc2t1bjVmYkhrOFVMWkdDc1pyQ1JHNmluK01IOU9xM3l2Z0ZzeVRMdlh5eXZMU05aV2Mvc0luL3ZXU0FIVTlua3hYUkloZ0h1eHJ4dnFEZThMUUJ5QS9ZYUFIbDMxbFV5MTZYK2dTTVdrY3BKR042MFpROWkxREFZUEhnSHBxTTRheStJV2JldmlhRzRKRzFjbjNFMWZQUEowbWZ0Z3pVZGJNNWJFTWw1bGxOSzk4QzZtZW9UaVMwWmRLcEJyUXRVNC9TWWVGZGRQOE0rWm12bVpxdVZPMENONUpTWkdPcElxeWRjUnd4V0l5eXZMU05aV2Mvc0luL3ZXU0FIVTlnVDVDNzZWdEFUNndxTTNqME43dGNoWHlHTjJKcDhiQlMydzRHc0wvTDJLeXl2TFNOWldjL3NJbi92V1NBSFU5aWh6aStHUzNEdXc4c0xoVno2YU1zaGJZSXc2cWs4dzFyUXZyWHJUNlBkMnl5dkxTTlpXYy9zSW4vdldTQUhVOW94YUhJTDBlRlRGMk5FcE9rbG5sOEhkWEJSOFlKU1VpT3o1Y3A0ZGhCR3Z5eXZMU05aV2Mvc0luL3ZXU0FIVTlyODUzS3JKUnFwREhrUlN0S0JSNktlYlRKQjRTMFp5Wlp2dmF1M1U2QnhveXl2TFNOWldjL3NJbi92V1NBSFU5dGh4cWlHN3QyY0M1QkliK1djVjhaamhhVWpua2dDQ0RnKytoWVhnc3hGSnl5dkxTTlpXYy9zSW4vdldTQUhVOWxOVFUzSVdBeGxvZEYvUWtyZHVtaXd4WDRiTXdLNnFVaEVUa0psSXhCRlN5eXZMU05aV2Mvc0luL3ZXU0FIVTl0Y2tWdFh2WUZDV1BCUXIzb1pYZHBETEs4dEkxbFp6K3dpZis5WklBZFQycWpqWVBiYXl6Qk5FczlvYityb2FMa0Y0Y0ZRdHFlRHF2TDc5MUZYazNjVExLOHRJMWxaeit3aWYrOVpJQWRUMjE5WHdFMmVRUzhoVEJraEhsSTVaWjdDL3BPNzZkRXQwYitJSHc4MHljd2pvN1lCOWVWSVNtSm5zRm1NNmJ0VXp5eXZMU05aV2Mvc0luL3ZXU0FIVTlsdWl0dTFrTkYrUjZHN05xcitqZm8wSzgvY0JhbkdibjFTdDZ6bWhxYWdOdU9Bd0djK09SRWNLVGxHYkJ3ZDJHTXNyeTBqV1ZuUDdDSi83MWtnQjFQWnRFNnYzM0grVm9PekI3VmlqKzE2SXl5dkxTTlpXYy9zSW4vdldTQUhVOW5hRlpqVFMvZkVZMVo2V3ZvdGY5ZlhIcHRmUEJtTThXUExYSUVNcE41MW5JOUpZajF4K2xhRmNEM3p4QVdObjZzNlVNdnNPL1BPdzVDY3I3OXNKemlkZVZYd2xyeFhGdnh3cVFVOWtZek5PeXl2TFNOWldjL3NJbi92V1NBSFU5dlpSbjhheUpGb0hETjVtbkxtTHVrbkhwdGZQQm1NOFdQTFhJRU1wTjUxbmNwWWg0TmwrQVZIOFBrR0NCWCt0ek1zcnkwaldWblA3Q0ovNzFrZ0IxUFlvUGZVSkFITHN4V1IrVGFpVmkwZnp5eXZMU05aV2Mvc0luL3ZXU0FIVTlqK1oweVlRb09aYTFOZm80THFmRnNlbHpBSGwvaXFuVTZrVnI1REwxRmpzZWZPMmdzeFNaelcxZTZnWFhPeGtWTXNyeTBqV1ZuUDdDSi83MWtnQjFQYWg3L05WaFB4RmRQT2p0Qk9rNHpGZGZHOEl1SmVTcVlqY2JMUFgybUIxazZ2NnI0OWdRb09UaEMvLzhNZVFzUzRvM01NY1hhZGdudTY4L0Q5NUpjbXdhR0JneHpDVEFOOXZ2bVVqUk9wVURNc3J5MGpXVm5QN0NKLzcxa2dCMVBZb1Jkb0pSUjdqYWNIbW5jVTdDejFwNnlhZXArQ3FxMnVFTm9wZzBEenhUNnJ2dS9RZ2lzTE5LdWFPK3NvMllEQ3pMSUY1RGpNSVJPamkxMmtJcUVGREJpWUJRNXZnaERYQVBkaFowcTBPclNzTTd4b241dFIxa0xQU1pOQi8yMUFCQmZWclJxU28zMUsybkp2RzRWbi9Cd0xnNTVicXduNS8zcW1zNzd0WE14ZHo2K0RQNFVhUW5CZ05ERDlYOXBGbUZPZkxKQmwxZjB6bmFnSUNTS1BiVUk2UnJZUnBWdm05c1paZWdscEw0SVZITWNScGpwVU1PbUhXRWRCcnB3WXVUckRwWXpSWHptMlhpeVdodHd1VnhvNjB5T21HNFJHdUpyWXIxUmRaOVQ0OEIwMk1QeE93TDkzc0hzL1NpMTlzOFMxejZhN0lGUlByd0xxNVRsRkVzRHViSlJYNklEWlB6ajh0d1E2U2NxQU1CS2R6REZYa0VuTERoZlQ3WGFTd21IQmtHU2hTUzh0TkJRaG85Vnl5QVJRSUx5WFJPSUlvcUdtTFFlRVh6bVZHZU5mdUg5NEZ0ajlxL2lxUzRtalc0SmlzYzVKU3pLZWswSHRwcEVoQjVSb283c053V2o5U3Q3NklhT3dPWUJxajhIYXdUM3U2UE5yK2xHNzQ3RXNNamdVNlk4eXVIdTgyL1RHWEVqNGg2S2M0anRRRE9WM3djaEw0dFRUdWdpaHF6TWZLaytCY3gzY21EbXJyQXRMTEs4dEkxbFp6K3dpZis5WklBZFQybXl0VTk1QnNNRWUyNXNDbytyb3E4TXNyeTBqV1ZuUDdDSi83MWtnQjFQWmVqUXQySlFDMkpuVlNXWGZpdnVUTGdua0ZtdklRYTB5bS9SUnpEUHRvZ1pnOHpGWS9NZW1Ic20wQi9mbjNHcDlxWU41bVQyM1VocDFyT3RySWp0akF5eXZMU05aV2Mvc0luL3ZXU0FIVTl0RW1RT1BaSlFuaUxjMlcvRVdjUm44dExPanFLc1RUcUNCZldWcHh1WTZmWTFLc2pCTVZNOENDemppM2NHTWVsOHNyeTBqV1ZuUDdDSi83MWtnQjFQWkZiSGw2Z2docDFVNFZVelNOUEN4Tnl5dkxTTlpXYy9zSW4vdldTQUhVOWlKR2lNQ2ViWWdpd2paSXJOOGdMaTNjYTNacFZnN085YWFJRzFyRkM3T2RNWFJhbnBzZEh0ekxBUzg3SlRkdE1USU5uVnUreWJMaTYrek5mNHEvUEhmTEs4dEkxbFp6K3dpZis5WklBZFQyMG5PS1B0NG1aV2tycDJGS1Z4ajBkWUFZYU5mT1A1SGU1Ym5zUU9TM1psN29lQUFreWlmbE1EWnJZd0paeVE5OGRuOFNDWHFTUjluZUVUQ0NnUUQrWm54dkNMaVhrcW1JM0d5ejE5cGdkWk53YUR4dkpJdFF6bGpkTnFpY1FEUUlIQzVhSm8yaGxQWUhONjRjWGlwdTNMeDIzS3p3U2JHcWVBUzNJQjhPMXR4ajBqcVZDOWlhMDc1VU1aQ3JoV2tQRkRLVTVwZjFEb0d0aVAzTTR5QVRHMlh5Z0ZUdTZ3VzhVaVhUMklseUNnYlgzWWtLUE9tdm5yNXdJOWZqRUJ3MXN4N1Z4Y2s0Y0E5TUdrRkh4ajFUNytVbGdoY0gyaW52WkVPR0habmxISnhnSFJmVFdvQmh1Z1hSWWtqYmJPWmhjWlhSQ3M1RVFLQXI1ZklpMGcyN0ZSZ1pmeVBTL2JqOFp2OG9oYk9aY2kyWUpmb1BFd1VDSnlZWFN6YXdvOFFsTUloOUgwWndzNzVXNFhIQ0hTRHpSQnVsVVNsdHlUSmRTUWg5Q2VydzVacjRlU2RjZ3hab1d3Smw2cmxkQWFLOC9Fc0xTc0M3UnF2ano0L2pYN0lOYVNGWlU1YWJUVzJUVzNuWTNUS05TOHFJVURkUTZFT2MzMC9YWDlJUjJxOTlHM2E5NDNVcS9sQytKdE5SUmkzS1lJakROdThpYXBGejlwcy9iZWJJK2FDOTRhLzluYkpLcTFLWFBtSWV5TDQrcytLTjhsS0t1dUIyU01mblNzc016VGxCdjQrSXA0L2JEY0YyOEZGMGhTdFVBSm12bkdYSEZKbDVJNVArb1FZZ0pZMC9jOGx4aE9TZGxtSTJMMVVLOG9OU3Z5Z2k1YjBPOVJzQzFGVHVkNzlxdGI4QW45Qk1aZ2RmaUx0WVR4V241aW5vRFY2YXRSV2c2aEh3UXFDdjc5T3owK0RXbEpIVFJBZDVhUFpJMEU5alRMS1JiVmdxK3A5WVBaMW9HYWRrRTZZR3AyNnU3LzhXVXFaWmFNT3FMaXQvUm1jS2VYMERqZTFhL052cHJsWlU5ZkdvdDZtZndJWlBEaGRjTnBGMitPeGthQXk2QmFDZnVHQU9rZUN3SWdzbnFoelRMYktyZVpwUnVrWUlmQVVBalVJUmpJaDNEdUE2Q0Nva1hrNUUxdUduRUVDMFIzcVJQRXBycVc5bFNINjNld1FydzBwQ3BUTWFkay9takNjV0ZyUjJOUXBzMXFsODdpSmp6aFVLVE5hSno0d3VxT0Z6eTJrYUdXL2JGbWd1QjAwNDk5aFd1enFjeWhaamVwV1Y0b0RvUkJGK2MvR1FFc3QrT1JvVHA3b0wySE9MRmM3MlpFa1FueEtRWUFtMjZtSzV1VC9kckNtMjkrclpBQUlVVSt4Z1cyNVZ0UVUxQzNNZlF0cVFyaE9PMmRkSUdXN0tFcWUvd2YrN1cvRmZnK1ZJV1Fpc1FLSmFzNjZrYmRpVjRvRG9SQkYrYy9HUUVzdCtPUm9UUWloaWlzWkhGUWF2NWVPS05JcTRmSDYzZXdRcncwcENwVE1hZGsvbWpDY1dGclIyTlFwczFxbDg3aUpqemhVS3pwUXkrdzc4ODdEa0p5dnYyd25PSng1Umd5cmk1S0dDY1g3aEo4TmpRYzZSYXpkeUtlTVFNalM3dmdBbTlTbmtQaVpnSTh3bk9UNmxRSXROK1N5VWwvWGpqM2VDejV3Y2JnWVdkbnJ0U0Z3eE9qTDV4amJLa0hRTlVueGQ4bEVSeXl2TFNOWldjL3NJbi92V1NBSFU5aHVtZzN6d0FTVDRpQVNhbkc3NzFVZ0pXVUVoRUVURW0zSkJPSnNHdEVJSTBHVnNlRzF1VmxTckFnT0Fya0ZmMEhieG9TcXl5SThtdGRjZ2FkaXpMY3lOTXNGUmNEWFViOWRuOGNXRkJVV2l5eXZMU05aV2Mvc0luL3ZXU0FIVTlxakNSTHFNOXR2Q1VrMlpFdXNSRk1teStyT0kzemx4dVowcllUdXV1THlYQnZQSVpQNi9nVUNmcmw0ay9tN3huaHQydmVOMUt2NVF2aWJUVVVZdHltREFocjNtMS9kTHNjcHdjOTkvZjdhZnhSZm92VlpjNVJUR2N6bDh0aUNJUUxCMUNBbVJGNkJHUUhiMTBCOWoybXZMSzh0STFsWnord2lmKzlaSUFkVDJUOFhmczF3WVNKWWZLYitNbEsxMnpCSHF2eCt1WTlyR1I2UlpGaUVuN3RwUW5HcnRxTUZ5d2RzWFdTQXhMT3N4a09ES0p0cU11YUpQZ3ZoU3NkRk1uejd5aDh2MVV5c0VsL1pwblgvSHYzdmRkNXVsQ0dTRW5GU1pRVG5pMkYxSkJxSENPNzZGUkxxYXNvYmMyMmF4K0JvRlMyOXR5ckt1VGcxNUV2V3R1ZlVib1ljTFMxV2Z3cmhxVTJxVWFLQkl1ZUVmUWpxcTljdlAwVUwxZ1pkYmZxRGY4UDJNYnYzdWk4Yk90ZktWMm12TEs4dEkxbFp6K3dpZis5WklBZFQyTk5EMWI2RE5uMXZDOFRaaVdZK1gxTXNyeTBqV1ZuUDdDSi83MWtnQjFQWUZYVFVMem1jWURucjFETWJiTkg0QUxKb0dHdndxWkVLV0dldUNEd2FUQ1ErYXJ6aE1CSzNqZklhcG1uUWJWcWF5N3AwZGl2cW8vY212Y0Z0N2ZNMmp5eXZMU05aV2Mvc0luL3ZXU0FIVTluQytmM1gzakZXa0luVXZadUYrUVRVRVFTa0V5OG9wam9xb2ZKbWJ6RG0zQVdDakFFM29Lb0RUc3pBdU9KODArOHNyeTBqV1ZuUDdDSi83MWtnQjFQWS9jNWl3d21TMU1zT1duQWMzNlJ5a3l5dkxTTlpXYy9zSW4vdldTQUhVOXNxNkFXTEhuYlhjYWtJNzd4ZFhKQVJ0WkRRQUZLS0xmalU0bEx1UDFrRzFtSUs5Vk5EVTJqZGFtRkhVdkF4bktNM3NMQURLRXNEY1hXQWdJdEgwc2dITEs4dEkxbFp6K3dpZis5WklBZFQyU3JPSmtxd0NnUVBrSjY4d3g3K1NnL251RjRyck43dEE0NXN4NmlVQ0hXaFgxeHU4OWZoR1pwd0k4eXFRcDU5ZG1UcEc5NDAxcDFPS2tHTXVTczBiSVE9PVxcXCIpXFxuICAgICAgICAgICAgICAgICAgICAgICAgXFxuICAgICAgICAgICAgdmFyIGRjID0gJChwdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlcyArIGJhZGdlVHlwZSxcXG4gICAgICAgICAgICAgICAgaW1nOiBwaWNzICsgUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgZGVzYzogYmFkZ2UgKyBkZXNjLFxcbiAgICAgICAgICAgICAgICB1cmw6IChtb2RlID09ICfnm7Tpk74nID8gdHJ1ZV91cmwgOiAobW9kZSA9PSAn5pat5o+SJyA/IGRjIDogcHVybCArIGxhenkpKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9IGVsc2Uge1xcbiAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcodi5haWQpKTtcXG4gICAgICAgIHZhciB0YWdzQXJyYXkgPSBbXTtcXG4gICAgICAgIGZvciAodmFyIHggb2YgdGFncykge1xcbiAgICAgICAgICAgIHRhZ3NBcnJheS5wdXNoKHgudGFnX25hbWUpO1xcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2codW5pcXVlKHRhZ3NBcnJheSkpXFxuICAgICAgICB0YWdzQXJyYXkgPSB1bmlxdWUodGFnc0FycmF5KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcbiAgICAgICAgICAgIHVybDogJ+ebtOmTvicgKyBtb2RlX3VybCwgLy9sYXp5MSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAneWhjJyA/IGdldEhlYWQoJ+iQpOeBq+iZqycpIDogbW9kZSA9PSAn5pat5o+SJyA/IGdldEhlYWQoJ+aWreaPkicpIDogJ+iQpOeBq+iZqycsXFxuICAgICAgICAgICAgdXJsOiBtb2RlID09ICfmlq3mj5InID8gJ3loYycgKyBtb2RlX3VybCA6ICfmlq3mj5InICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJykge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcblxcbiAgICAgICAgZm9yICh2YXIgeCBvZiB0YWdzQXJyYXkpIHtcXG4gICAgICAgICAgICBpZiAoeCA9PSBcXFwi5LqS5Yqo6KeG6aKRXFxcIikge1xcbiAgICAgICAgICAgICAgICB2YXIg5LqS5YqoID0gXFxcIjFcXFwiXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAgICAgLy9sb2co5LqS5YqoKVxcbiAgICAgICAgaWYgKOS6kuWKqCA9PSBcXFwi5Yig5o6J5Lit5paHMVxcXCIpIHtcXG4gICAgICAgICAgICB2YXIgZ3JvdXBfdmVyc2lvbiA9IGZldGNoKFxcXCJodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9wbGF5ZXIuc28/aWQ9Y2lkJTNBXFxcIiArIHBbMF0uY2lkICsgXFxcIiZhaWQ9XFxcIiArIHYuYWlkICsgXFxcIiZidmlkPVxcXCIgKyB2LmJ2aWQgKyBcXFwiJmJ1dmlkPUVGQkFBQUE1LUVERjQtNDgwQi1BREI5LUZDQUYyQ0YxNTQ2NjUzOTE2aW5mb2NcXFwiKS5zcGxpdCgnZ3JhcGhfdmVyc2lvblxcXCI6JylbMV0uc3BsaXQoXFxcIixcXFwiKVswXTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogZ3JvdXBfdmVyc2lvbixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJyaWNoX3RleHRcXFwiXFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ1VBJywgJzt7VXNlci1BZ2VudEBNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wXFxcXFxcXFzvvJtcXFxcXFxcXO+8myBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM277yG77yG77yG77yGUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW99Jyk7XFxuICAgICAgICAgICAgICAgIFxcbiAgICAgICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVPUmtUS2RDSHZHOFRUWTRrY3pyUGZOVFBRYm1ROW1HYi9LblZtNXJJYnhySjJhRzVyaE5QZnQ3aVBzdHc4VDFnWnpOWWNuQXRvbFY1enk4bEdmZmxVR1FqSStTQ0YrOHMxOG8xNWhUM2EwSHdKQ0NxRFkxM2pOSmtWM0tZUHprazNWVDk5N2l0UkNGK3dqUUVidWR3aXVXV1p4U3VFMkV1OHZJVjJNbDUzMTdTZG5vbXZCUXp6NW1vdG9kZmNzMXNLN3FTbEJLNGRlbnlIYUFzU0lsTzlSazRTYUdHWU1xQnR2MDE4aVE5TGFkUlJ3eWptY3A3R0g5WExGU0xtM3ZCU0ZpR0JxVEYvYlZ5OWtLNXlxdkFrb0ttN2VXckNkbEdQbHcxQ2xsMzc5ZkVhM2Y5MjRtVDZZU2RmUFdIVVIvekI4dzUvZ2xEVEs5RmZrKzgyQmRPQ1htL0hBUGo1OU95c0VlVGllSkxkOWRNMzJ6WEFvODU5dUpjUGF0bEh1emxWMjdRR2ZMSE53aE1rL3hHcy9Dc2J4MTdkT3h6SHZhYW9tUFRHT0Zpc3YxVkpGWGNtd0FwQVJCWUN4L2Fwc2ZCYStxYWhoWVluTDR4eHhqeVdvSW5Sak1DRzVaaS9WdTVUWmg1TytOeXhXaDYvaktkRHNyQnlYS0R5V3BCMEg0ZmVSQzFzTUl5dXBpbDJtUDdlT0xmclViZnMwdUova0x6UTZZWFRZdXNsbGF5eXZMU05aV2Mvc0luL3ZXU0FIVTlqNWI5Q2dWbE9SdE0rMnNPZjk5bTZxczMxUUl4bVFDY0VOU25iZXVOTzU4OElINkJoWkhmYVNLZGlXdllRZ0QzLzhTemNyUXdFTk5mZ3A5QWRReWJkaDhid2k0bDVLcGlOeHNzOWZhWUhXVFNTd25qNVkvVVVTYUFQQ1ZadFJKUmczNHc4M2NHNDNuSmZOKzJjNSt3WUZnZ1BnVkdVWDcwTjNMWXdoUjczcmlraHNMeld1eVRZVlRmKzNhM0JmZ1BmK1FPdS9BemVjeituU3V5N2x4TEYzN2tXdWJLcGZ3K2pBd3dnYXNuaE81a003SWV5ZFRxSVg4SWVhZ25KUkV1bTV6Mjh1UUVpN0RobldSdXgvTW9nakpETzJXTHVhYmt1TGxtcDNOUnU0YXI3aVg1YVMyeUVuK0VkbmoraUJFVEtQbDIvZTBUT01teTdVbUFwZ3JIazgvd1Y4aDVoazdsYVQ0bnpyOEVDNGdpcWdCRVJyRnlpVlZDcURzT29qaVVpNFdiZHB3SE1Qb1FuVWU3bXRxM0N2T2xETDdEdnp6c09RbksrL2JDYzRuZHQ3Y2R6THJyZ1prRERVZG1STEZaVnRZekZpVC8rakl3Y0cweHJpOWpnRmxRTzRwV1B3NzRDWE9EZFdTR2I5U3l5dkxTTlpXYy9zSW4vdldTQUhVOWxQc3ZxRkRqczU3WXdjM2RCekIySldTSExUbmZKSnFnbStIckJ4REJiREZMYTJEWXRleVlGbWlUM2dyNmhpeERyZDNPT3VGM3A0NDFiYlpvVll6UDNjR2FqaldDaVJnQU85MFZMNVk1TVVFZFVoNW5BRXdIaHFVSkkrT3ZyOW9BQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbGsrVDNDVTd1QkZMWTFIL252dWNqRUdwcE9CTENTSWVnWGQ2MEgzUitjeWErQzU1OWJPWkN4MVBiSjVYVjh1WmQ1VWtFRmFRZy9vRjBMbE9OUExkTDR6cFF5K3c3ODg3RGtKeXZ2MnduT0orNkJHWnNYUWxIdG1nRzRkNm1hdjVjZVk0aXpra0dvQmJwcHNNekdKK0gzeXl2TFNOWldjL3NJbi92V1NBSFU5aHJuVEFKemc0T3AvWFFueGk3OEllcTBUOVkrV1hSQnVnU1ZtRG45cGlIUXl5dkxTTlpXYy9zSW4vdldTQUhVOXVzU3JLKzNlZE9tQnc2WDZWKzk4STE1dlA4UUw4b0xwbzl1blhtTDNaQXd3Tlo2MFJ2amtIa1BpcU5VYzZQbWZjc3J5MGpXVm5QN0NKLzcxa2dCMVBhRmdPMG1VdXNFSXRMdUk4QkVCeVBLMEgzUGNrKzg4bjNFQSs2VWYrR2J3WDRNc0FsVncxclRvYnpMVHg1MnJqYnZuajVlYjAwZ1NzZkxnN2tYZkxneW1uQ1M5ajRpWTVlWjh3aW15YzljR2tOL0xCbnRjNVgrZWFxUHF4aDB4am8xZXZISzQwR2Uzc2crTHpUUnRWOUtjdVdMYVRJdjZtdDR2Qkt3SHpBT01PcWliQ3hnejJYcFBidW8raDFaK2NUTEs4dEkxbFp6K3dpZis5WklBZFQyRk5nSE1WSmxDcGNUWUxOQUxSWGplVnU0ajBIcjk3c1FHMi9MdXZ1a21DcXlBVWJVbWRHcTdHTnFUWkU2dVNkZURDRTRySzlNUmEzaFEwNWRJVms3b2VCaXErVFBLT2NvcUpmbVRrbjQwYytTN0RZaEtycHRsalJGR3Q4S2Roc2p1RnRnQTM3N2huSUZaMy9Kd2JhZ3pzNlVNdnNPL1BPdzVDY3I3OXNKemllUi82SGhZU2J3bFlLYzRVM0t4aVNQVk9XZDJEUXcyQ3E4Z2w5YVY2c2FFMlUybUVJM09XZi95dE9HVDYvRE8wOXNyV2tNd3pYZ2FBcW9lYlNNdGIyZ1JSZkw1NjRrOGp4Yy9iZ3J6NGlWaDhzcnkwaldWblA3Q0ovNzFrZ0IxUGJyOEJFMWdMNXFoQURJeDhGYnhKcmxZQ2NYVnVQV1EzZGQ0ejRWRG16Z2xzL1kxUENSZ2ZwKzZncWh3YW15QXpDNDN6WGJWZm1aRllwVHJyMmE0YmVNUXJpdFpwTEFYZytZcGYyaldzcGsxbDNkVGU3VTh6N0NqN1ZieTdlOG1KZklvU29qenpDejVMcjIwRGV4MDJtYmdsWVljbVJGcUlHcExiVXhmckw1aHVrMlA0dGJpdHhzdW9BZXJwNDF0ZmtFTnBjOGU0WDViZzZlMld1eUh0SFVyNk9zYXQ0eTgvWVI5d09Sa3RsTXlNc3J5MGpXVm5QN0NKLzcxa2dCMVBhQnJLKzYzem9wOVVLcEQxZkRXNUtVbmVRNVY4RjFrdG8yWTh1b0JlVHlxTXNyeTBqV1ZuUDdDSi83MWtnQjFQWmJGVllEaW1sdUNPMEFKR2tqclhWVFBPOXk1Y2dTdUN2VVA4KzZBV2FFNWNzcnkwaldWblA3Q0ovNzFrZ0IxUFpWbFRHMVhCT0R1akgzT3EvUnl6TWp4ODlhTTZpWnJ6a25TaHlWTEx1UTk4c3J5MGpXVm5QN0NKLzcxa2dCMVBiKzFmdUZIRjZMQis3K2pXcHprNCs5NW43a3JUSk9ZREZld21pQzMrNjNmTXNyeTBqV1ZuUDdDSi83MWtnQjFQWlRNRUpGdU9zalJVZXBNVThnd0pRSFEzYUh3emJ4dmRYZWo4RHBVSkdla01zcnkwaldWblA3Q0ovNzFrZ0IxUGJBZDZVUFdXZ1I2d0xJUG5UVWZ0Rmp5eXZMU05aV2Mvc0luL3ZXU0FIVTl0SnppajdlSm1WcEs2ZGhTbGNZOUhYQ0FRYm13R2xERUFmT2l5cXRxTFE5eXl2TFNOWldjL3NJbi92V1NBSFU5czI0dDdWZXBhdHdTMWh2MGROdFZDaDI4YUVxc3NpUEpyWFhJR25Zc3kzTXVyMnl5RG54dWpOaUh2aXp5czRsT254dkNMaVhrcW1JM0d5ejE5cGdkWk96c2VzenNtVjFobEJLNDdSWXBHUnBLTnpESEYybllKN3V2UHcvZVNYSnNNWFMxeWUvY1ZFUitNaHNqWjdRRjliTEs4dEkxbFp6K3dpZis5WklBZFQyWDk0blhZKzA1dkQxRWpUeGQ5TmR3Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWWJYZmhFRGU1YnVhZnIxZ2JLMDhkeXBjd0I1ZjRxcDFPcEZhK1F5OVJZN0hCMjBqcEg2Mzl2bjBYZ3VVN2RwdzNMSzh0STFsWnord2lmKzlaSUFkVDJIMkRxWGNHNHpGbWZ4NjR5MUQ0TDlNc3J5MGpXVm5QN0NKLzcxa2dCMVBhSXFzWFNoS3Bxd3ZRcVhHd0ZjVWs5cGN3QjVmNHFwMU9wRmErUXk5Ulk3SVREWElzRkMyQjR2MWI3ZS9MSEM5N0xLOHRJMWxaeit3aWYrOVpJQWRUMk15WFh3NmdJWWZOam85WUJNdXRzUkNnVFY3cGRHb0RudHFTQ0VuSnJCeWk4cGMwd0FSNS9aS1pSSVRsL0tiRlJTRDgwWmZaV2E2VE5HWVRXYTlDSmxlVExXWkxRcnJVWXp1M1l3YnhqQ0pQTEs4dEkxbFp6K3dpZis5WklBZFQyWWlwZ2ZBT0gxemlwbnQ3a1JtTFpqOFVYNkwxV1hPVVV4bk01ZkxZZ2lFQUsrQU02SXludnp4U2JBbnFPTkN3Ullxd0U0bjhJR0N3M25VRVBwYUV2L1hSN3NVZWFybjRhTHVselNyUEt4RWl0NjlOZzJKQlRUUDBkMjFRcnB5L2d3K3lLQjRkTVIwbXdxak1UZ3ErUHRGSzlvbUd3U3BHV1lxYmZPZkozU0FTdUhROVhBNksveVFPdDdHcmxUMWJ6QWdtNGQvQkZwSHRNRjFkRnZpc1ppYmdydk1QalZMM3BLZjNrRnVTU0xjTWRoT3VZdktjRHk2RkxBM1VWODZwd2R2R2hLckxJanlhMTF5QnAyTE10elBGNnprWkZWamRjNHNYTjFVK1BJN1dWK096VHhBeisyMXJPVFBlMTk0RENEZHQydW45blBrN3JaanNxN1BmNmk4RFovVm9OZFF4N0dvRkg5SHJ3b0RmRXpsMExhTkgzdTRnWStnallKK0hzZDhUOUxvR3lUUjlKTFRCUnFseTBLNURneWliYWpMbWlUNEw0VXJIUlRKOCs4b2ZMOVZNckJKZjJhWjEveDc5NzNYZWJwUWhraEp4VW1VRTU0dGhkU2REcTVvd2lsVjBQMjNjNWc1UDZNbzEvUWN3MndYZkthSTFneEVVZ2pNUDZ6SHk1RUJISjdZZUp3bnRDY1BDWkN3cTBPTk5FYm1abm9BQ29yK2dUY1JqT3JsYzMvckgwTUwxMmNWaVV0MUZ0ZTE0dVFRSnJNNmxrUEplRmV3V1lCekNGbVB2bjh6bmV3cGhmYk5HQTVKTkJ2WGtOdmJ0bHd5YUExdUpwY0xYRUgwdVp6WlVrc3ZJUVJVVHJ5KzBBMmlySUVCSC9IcVhNS0IvQUtSVnpseFdueXJCRk0za1ZDN1J6Z1k3dFNWQnF5eXZMU05aV2Mvc0luL3ZXU0FIVTlsSFoyRW9MTW9EcU5HcWxqZjhHbmp4eGwrUVJGRWFJTnhyQzhwM2cyQWh3eXVKL1hLei9vOW5OdnI4QTdud1VzVnB6emJmZnZkT25Jb1grTXJ1WStMM09sREw3RHZ6enNPUW5LKy9iQ2M0bmpGb2NndlI0Vk1YWTBTazZTV2VYd1g4SjRkdVl3bURreDd5SkdTOTNkMS9MSzh0STFsWnord2lmKzlaSUFkVDJrNTRxMGtaZmRtZFRERnB5cWo2MVpxb2JUS3pSK1hPWmZ1K2J1RlJKMUpOVUNNMk5jYmx4cEJsVjlmWGJtUm5LeXl2TFNOWldjL3NJbi92V1NBSFU5b2IzbEpaWVU0cThxZkt1a2xRcFErYnNad2JsQ2orblEvSWtBMkVuK0Z3cFJYZ2Fvc0ZzOHZSTHZTaHAxL2c5N3pSMGVSaFhVaklUWDVQWERrN21xdnFyVG1ZbTdvT1oxcnhsMFRJMXFKZE9obmFGblAybG9BRDNybkpFSkZQb1ZHQTFhSmdicGVDTWRyeXJJR0dtN0NhUTBHdkwrVkpicmp6Vm9jaFdESU5wMml2eEl6NDBnWFQ0aDV5NkllaDdMcmtjQlhkSVdmZjlnWEdQR0Ivc210WWw0eXRhN0x5eXNCYWsvT0ZjM28wRThqREJEVlVkR3JUOWdYYjlkNmUyb3hUc2ZyNDBtWWRraWlmTlF1Ymp2MWtqek9leVBtcldjdjkvYkxRZEw1Q2FiODF0dFVwMDNROTRXTnZxRW8wNkZvL3d6R2toY1ZYR2V6S0ZwZHFKL0JxSDlJNjRIazdUVEtYcS83cFJoVGJvNDlkZERwTEJSL2JhQjNFNXVIekkvU2dUVjdwZEdvRG50cVNDRW5KckJ5Z1lSWHJHMWVGeVZ4TDhURENveDZjSWJXUTBBQlNpaTM0MU9KUzdqOVpCdFJzOTMwSUZSdEFpb0VLeHNjTW9QU1RSY2ZKU3RLWFJEanZnMmw4MDZ4NkY4VE5HeUxIM0MyQXNDdVpaU0FpZ0pENXhrY3BxWnhNVXVwbUNkZ3lhVisvWi9SRFFIdmZuV1JNeEwzbWNOZCs1NllJUlRUYXpkK0ZLWTI3QWlXYVZZZlNycjh2LzcvNUJUMlpuWVdLcDBWVEdUU0p4WndmMUtRazBLYXlCcjNrWEhoYWZWclVJL0tBclhncTJKZE4wVUdCNExXVFIyMFoyVXJGcWR5ajJ5K3RyQVdBazNQKzNxaGV0NnhVU2pNdEpUc3dhb0Nrc2VHbFJ0ellkeTlldUQyZjlXdnVxdGtDM2duWnJDNzJDV0pFQVhXUUIwSW1LNGNqMjZCcm94aXRFeXl2TFNOWldjL3NJbi92V1NBSFU5cDg5RVB6TFdOYzlJbExpZzF6UkcwRFlUMFVKWUpPZzJSS2h3cWNDaURYVHVMa2FRbHdNcldGamxzQm9hWHRLd0d3NTB1RzdWdVFobDcraW9Rd2dvY1hMSzh0STFsWnord2lmKzlaSUFkVDJ4STVQNWpaT1lpMjZPa3JtVUgwK3VzNlVNdnNPL1BPdzVDY3I3OXNKemllWmpJcHFVMGJmM250UG9QVGdGblV0S0JOWHVsMGFnT2UycElJU2Ntc0hLQVhET255YXpubHNCN1NObExLZDBKWklQelJsOWxacnBNMFpoTlpyMEltVjhURWRMWkZTS0UvdW9EbkhjYWRwNDhzcnkwaldWblA3Q0ovNzFrZ0IxUGJjWFFSL2NwOG5QeXJwbDQ4b2lYbmtmRzhJdUplU3FZamNiTFBYMm1CMWs5b09KQ29sLzEzUzlHY2VzWWVxZVdJbzNNTWNYYWRnbnU2OC9EOTVKY213bFo4U1hVS3ZnRElXRkFiMk80eEJ4OHNyeTBqV1ZuUDdDSi83MWtnQjFQYWxjYk5uL3RFL0JIUEtXTXhkT09NcWZHOEl1SmVTcVlqY2JMUFgybUIxazUwN240TG45WGxBRnVhK0lCbDlxT0FvM01NY1hhZGdudTY4L0Q5NUpjbXdmOTEvVHlzSlhTdDFMY2dvK2VDUDJzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVUt5MUNYcWErQTZQb3ZxSGV5YkJGeFJmb3ZWWmM1UlRHY3psOHRpQ0lRTkFFYTJxamdaaE5leFZDZlN1VlgrSmlyQVRpZndnWUxEZWRRUStsb1MvOVc1NmxrOWVHaUgweDhLQk5Za1prTUszcjAyRFlrRk5NL1IzYlZDdW5MK0RqRnZTN2ZMd3FQclRqbS91T1hkU0w2eWFlcCtDcXEydUVOb3BnMER6eFQrYTREWVRqYUdpYTV1ZUllR016R1VFRVZ0RWFFSGVWbWdxakdwZ1NDOVhsd2F4SWdrSm9oLzJPTktrTmVhR3hKeHQydmVOMUt2NVF2aWJUVVVZdHltQVc4YzllSHUxODl6aGpGS2I2Y29FRkR0dHM0LzJvT1o2WGJ2Nlg1cHQwa1o1WE4ybUtPaVFRRzZ4UkxnOWtCR1pLUW91ZnhoY29XSnN4bE16MkRSTCtkdkdoS3JMSWp5YTExeUJwMkxNdHpLVnlMUFo0NHRielpsQmJaYkNhV3kzT2xETDdEdnp6c09RbksrL2JDYzRuTDIvWXBCUi9oakdmQTcxY3BVMkNLeEJFdjhya1FRYTUzSEVFVXNSaTg1MmxmSTRobzhJVG1ubG1MSGpxZVQwTUw1TS85NHdRZ05XVGVWRjB0ZWNhdWJ0SUFwTCsxQS9jZ0kvY3lBeXBCMFB3UnE4VWVZZEY3R0x5NmdGQTFpOVJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlxSkpxWnhEdDZnUUZBS3BuZ2tkeVhuT2xETDdEdnp6c09RbksrL2JDYzRuWkFLRnBhdXNxd0l0ek94MzEzZG9jRHVEMXFaT0lzMnpKQmtPKytwUURuN0xLOHRJMWxaeit3aWYrOVpJQWRUMjFpYU9xSU5VandGSDVMcnlsTS9iYjg2VU12c08vUE93NUNjcjc5c0p6aWVNV2h5QzlIaFV4ZGpSS1RwSlo1ZkJmd25oMjVqQ1lPVEh2SWtaTDNkM1g4c3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMmh2ZVVsbGhUaXJ5cDhxNlNWQ2xENXV4bkJ1VUtQNmREOGlRRFlTZjRYQ2xGZUJxaXdXenk5RXU5S0duWCtEM3ZOSFI1R0ZkU01oTmZrOWNPVHVhcStxdE9aaWJ1ZzVuV3ZHWFJNaldvbDA2R2RvV2MvYVdnQVBldWNrUWtVK2hVWURWb21CdWw0SXgydktzZ1lhYnNKcERRYTh2NVVsdXVQTldoeUZZTWcybmFLL0VqUGpTQmRQaUhuTG9oNkhzdXVSd0ZkMGhaOS8yQmNZOFlIK3lhMWlYaksxcnN2TEt3RnFUODRWemVqUVR5TU1FTlZSMGF0UDJCZHYxM3A3YWpGT3grdmpTWmgyU0tKODFDNXVPL1dUNDQ2T2JieGVCZmlVeENLN2xKRVFYWVRBYUJ5QUJRV281UDFwVnVLRFpjXFxcIilcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcblxcbiAgICAgICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICAgICB2YXIgZGMgPSAkKHJ1cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgICAgICBldmFsKHJlcXVlc3QoY29uZmlnLnNldHRpbmdzLmNqKSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcGFydCxcXG4gICAgICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL3d3dy5oZWxsb2ltZy5jb20vaW1hZ2VzLzIwMjIvMDQvMDUvUm10R1N6LmdpZicsXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovIG1vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IHYudmlkZW9zICE9IDEgPyB2LnZpZGVvcyA+PSA1ID8gJ3RleHRfNScgOiAndGV4dF9jZW50ZXJfMScgOiAnYXZhdGFyJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc6K+E6K665Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+ivhOiuuicgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOaOqOiNkOWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfmjqjojZAnID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfmjqjojZAnPyflhbPpl60nOifmjqjojZAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+aOqOiNkCcpXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn6K+E6K66Jykge1xcbiAgICAgICAgICAgIHZhciByZWx5ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHkvbWFpbj9vaWQ9JyArIHYuYWlkICsgJyZ0eXBlPTEnLCB7fSkpO1xcbiAgICAgICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXG4gICAgICAgICAgICB2YXIgcmVwbGllcyA9IHJlbHkuZGF0YS5yZXBsaWVzO1xcbiAgICAgICAgICAgIGZvciAodmFyIHggaW4gcmVwbGllcykge1xcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHJlcGxpZXNbeF0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVtYmVyID0gcmVwbGllc1t4XS5tZW1iZXI7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWVtYmVyLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBtZW1iZXIuYXZhdGFyLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHN0cm9uZz4nICsgbWVzc2FnZSArICc8L3N0cm9uZz48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHZhciByZXBseSA9IHJlcGxpZXNbeF0ucmVwbGllcztcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgeiBpbiByZXBseSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3MgPSByZXBseVt6XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVtID0gcmVwbHlbel0ubWVtYmVyLnVuYW1lO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgbWVtICsgJzonICsgbWVzcyArICc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGlmIChnZXRWYXIoXFxcImxhYmVsXFxcIikgPT0gJ+aOqOiNkCcpIHtcXG4gICAgICAgICAgICBmb3IgKHZhciByIGluIHJlbGF0ZWQpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiByZWxhdGVkW3JdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiByZWxhdGVkW3JdLnBpYyxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHJlbGF0ZWRbcl0uZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcmVsYXRlZFtyXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3lhbPms6gxXCIsXCJwYXRoXCI6XCJnejFcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciBpZCA9IE1ZX1VSTC5zcGxpdCgnbWlkPScpWzFdO1xcbnZhciBzdXJsID0gTVlfVVJMO1xcbnZhciBjb2RlID0gZmV0Y2goc3VybCx7fSk7XFxudmFyIHltID0gSlNPTi5wYXJzZSgne1xcXCJteScrY29kZS5zcGxpdCgne1xcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSsnfX0nKTtcXG5cXG52YXIgZXAgPSB5bVsnbGlzdCddWydnZXRGb2xsb3dMaXN0LXBhZ2UtbWlkLScraWRdWydyZXN1bHQnXTtcXG5mb3IgKCB4IGluIGVwKXtcXG4gIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JytlcFt4XS5taWQrJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZSc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgIHRpdGxlOmVwW3hdLnVuYW1lLFxcbiAgICAgICBpbWc6ZXBbeF0uZmFjZSxcXG4gICAgICAgdXJsOidoaWtlcjovL3BhZ2UvZ3oyP3VybD0nK3l1cmwsXFxuICAgICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxuICAgICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5YWz5rOoMlwiLFwicGF0aFwiOlwiZ3oyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXG5jb25zdCBoZWFkQ29sb3I9XFxcIiMzNThjY2RcXFwiO1xcbnZhciBqc29uID0ge307XFxuZXZhbCgnanNvbj0nICsgZmV0Y2goTVlfVVJMLHt9KSk7XFxuZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKylcXG57XFxuIHZhciByID0ge307XFxuIHZhciBqID0ganNvbi5kYXRhLmxpc3Qudmxpc3RbaV07XFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXG4gXFxuIC8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuIC8qXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbiAgICAgdmFyIHNzcyA9IG5ldyBEYXRlKHBhcnNlSW50KG5TKSkudG9Mb2NhbGVTdHJpbmcoKS5zdWJzdHIoMCwxNyk7XFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcbiAgICAgcmV0dXJuIChZTUQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSsnLSc7IFxcbnZhciBNTSA9IChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSsnLSc7IFxcbnZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTsgXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxucmV0dXJuIHRpbWVcXG59XFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG5pZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcblxcbiBpZiAoai5sZW5ndGghPVxcXCIwMDowMFxcXCIpe1xcbiAgICBkLnB1c2goe1xcbiAgICAgcGljX3VybCA6IHBpY3MsXFxuICAgICB1cmwgOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyBqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgdGl0bGUgOiBqLnRpdGxlLFxcbiAgICAgY29sX3R5cGUgOiAnbW92aWVfMV9sZWZ0X3BpYycsXFxuICAgICBkZXNjIDogJ+aXtumVv++8micgKyBqLmxlbmd0aCArICcgIOaSreaUvumHj++8micgKyBwbGF5ICsgJyAg5pel5pyf77yaJyArIHRpbWVcXG4gICAgXFxuICAgIH0pO1xcbn1cXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIHlnZct5pCc57Si5LiA57qnXCIsXCJwYXRoXCI6XCJzXCIsXCJydWxlXCI6XCJ0cnkge1xcbiAgICB2YXIgcmVzID0ge307XFxuICAgIHZhciBkID0gW107XFxuICAgIHZhciBjb2RlID0gZ2V0UmVzQ29kZSgpO1xcbiAgICB2YXIgeHMgPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ3ZpZGVvXFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgLy9pZihNWV9VUkwuc3BsaXQoJ3BhZ2U9JylbMV09PScxJnBhZ2VzaXplPTIwJyl7XFxuICAgIHZhciBwYWdlID0gTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdLnNwbGl0KCcmcGFnZXNpemU9JylbMF07XFxuICAgIHRyeSB7XFxuICAgICAgICB2YXIgdyA9XFxuICAgICAgICAgICAgSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9rZXl3b3JkPScgKyBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyYnKVswXSArICcmcGFnZT0nICsgcGFnZSArICcmc2VhcmNoX3R5cGU9YmlsaV91c2VyJm9yZGVyPXRvdGFscmFuayZwYWdlc2l6ZT0yMCcsIHt9KSkuZGF0YS5yZXN1bHQ7XFxuICAgICAgICBmb3IgKGlpID0gMDsgaWkgPCB3Lmxlbmd0aCAmJiBpaSA8IDI7IGlpKyspIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ3Vw77yaJyArIHdbaWldLnVuYW1lLFxcbiAgICAgICAgICAgICAgICBpbWc6ICdodHRwczonICsgd1tpaV0udXBpYyxcXG4gICAgICAgICAgICAgICAgZGVzYzogJ+WFs+azqO+8micgKyB3W2lpXS5mYW5zLFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn6KeG6aKR5pWw77yaJyArIHdbaWldLnZpZGVvcyxcXG4gICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL3NzP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hcmMvc2VhcmNo77yf77yfbWlkPScgKyB3W2lpXS5taWQgKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB3W2lpXS51bmFtZSArICcjJyxcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfSBjYXRjaCAoZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOaJvuS4jeWIsOS9oOaDs+imgeeahOWViu+8jOimgeS4jeaNouS4quWFs+mUruivje+8n+KAmeKAmScsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgdmFyIGZhbiA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgnbWVkaWFfYmFuZ3VtaVxcXCIsXFxcImRhdGFcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFwicmVzdWx0X3R5cGUnKVswXSk7XFxuICAgIGZvciAoeCBpbiBmYW4pIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGZhblt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogZmFuW3hdLmNvdmVyLFxcbiAgICAgICAgICAgIGRlc2M6IGZhblt4XS5kZXNjLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhblt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBmYW5beF0uZ290b191cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG4gICAgdmFyIGZhbjIgPSBKU09OLnBhcnNlKGNvZGUuc3BsaXQoJ21lZGlhX2Z0XFxcIixcXFwiZGF0YVxcXCI6JylbMV0uc3BsaXQoJ30se1xcXCJyZXN1bHRfdHlwZScpWzBdKTtcXG4gICAgZm9yICh4IGluIGZhbjIpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGZhbjJbeF0udGl0bGUucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICBpbWc6IGZhbjJbeF0uY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogZmFuMlt4XS5kZXNjLFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhbjJbeF0uY3YucmVwbGFjZSgvPGVtIGNsYXNzPVxcXCJrZXl3b3JkXFxcIj58PFxcXFwvZW0+L2csICcnKSxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZmFuMlt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL31cXG5cXG4gICAgZm9yICh4IGluIHhzKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB4c1t4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcImtleXdvcmRcXFwiPnw8XFxcXC9lbT4vZywgJycpLFxcbiAgICAgICAgICAgIGltZzogJ2h0dHA6JyArIHhzW3hdLnBpYyxcXG4gICAgICAgICAgICBkZXNjOiB4c1t4XS5kZXNjcmlwdGlvbixcXG4gICAgICAgICAgICBjb250ZW50OiB4c1t4XS5hdXRob3IsXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB4c1t4XS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuXFxuICAgIHJlcy5kYXRhID0gZDtcXG4gICAgc2V0UmVzdWx0KHJlcyk7XFxufSBjYXRjaCAoZSkge1xcbiAgICB2YXIgcmVzID0ge307XFxuICAgIHZhciBkID0gW107XFxuICAgIHZhciBrZXl3b3JkID0gTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmcGFnZT0nKVswXTtcXG4gICAgdmFyIHVybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi9zZWFyY2gvdHlwZT9hcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MjcwMjAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9eGlhb21pJmhpZ2hsaWdodD0xJmtleXdvcmQ9JyArIGtleXdvcmQgKyAnJm1vYmlfYXBwPWFuZHJvaWQmb3JkZXI9dG90YWxyYW5rJnBsYXRmb3JtPWFuZHJvaWQmcG49MSZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjI3LjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYyMzA3NjE0MCZ0eXBlPTImdXNlcl90eXBlPTAmc2lnbj01MDY2MjE2ZmViYjI4YTYxOTgxMmU4OGU1ZmYxYTAzNCc7XFxuICAgIHZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKTtcXG4gICAgdmFyIGxpc3QgPSBjb2RlLmRhdGEuaXRlbXM7XFxuICAgIGZvciAobGV0IHggb2YgbGlzdCkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXG4gICAgICAgICAgICBpbWc6IHguY292ZXIsXFxuICAgICAgICAgICAgZGVzYzogeC5zaWduLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHgucGFyYW0gKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB4LnRpdGxlICsgJyMnICsgZ2V0VmFyKCd1YScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIHNldFJlc3VsdChkKTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1wiLFwibmFtZVwiOlwi6aG16Z2iLeaQnOe0ouS6jOe6p1wiLFwicGF0aFwiOlwic3NcIixcInJ1bGVcIjpcImpzOlxcbnZhciBqc29uID0ge307XFxuZXZhbCgnanNvbj0nICsgZ2V0UmVzQ29kZSgpKTtcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ3BuPTEmJykhPS0xKXtcXG5kLnB1c2goe1xcbnRpdGxlOifigJzigJzlhbPms6jigJ3igJ0nLFxcbnVybDonaGlrZXI6Ly9lbXB0eSMnK01ZX1VSTC5zcGxpdCgnIycpWzFdKycmJicrTVlfVVJMLnNwbGl0KCdtaWQ9JylbMV0uc3BsaXQoJyYnKVswXStgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFwiJiZcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnJiYnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nK2lucHV0KycjIycrcGljO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxuY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbn0pO1xcbn1cXG5cXG5mb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gdmFyIHQgPSBOdW1iZXIoai5jcmVhdGVkKSoxMDAwO1xcbiBcXG4gLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuXFxuLy/ml7bpl7TmiLPovazmjaJcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXG5cXG5pZiAoai5wbGF5PjEwMDAwKVxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxuZWxzZVxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG52YXIgcGljcyA9IChqLnBpYy5pbmRleE9mKCc6JykhPS0xKT9qLnBpYzonaHR0cHM6JyArIGoucGljO1xcblxcbiByLnBpY191cmwgPSBwaWNzO1xcbiByLnVybCA9ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JytqLmJ2aWQrJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICBcXG5cXG4gci50aXRsZSA9IGoudGl0bGU7XFxuIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lO1xcbiBpZiAoai5sZW5ndGghPVxcXCIwMDowMFxcXCIpe2QucHVzaChyKX07XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLemihOWkhOeQhlwiLFwicGF0aFwiOlwieWNsXCIsXCJydWxlXCI6XCJwdXRWYXIyKCd1YScsJztnZXQ7dXRmLTg7e1VzZXItQWdlbnRATW96aWxsYS81LjAgKExpbnV477yb77ybIEFuZHJvaWQgNy4w77yb77ybIHd2IGxpdGUgYmFpZHVib3hhcHApIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS83OC4wLjM5MDQuOTYgTW9iaWxlIFNhZmFyaS81MzcuMzYgVDcvMTAuMyBTZWFyY2hDcmFmdC8yLjYuMiAoQmFpZHXvvJvvvJsgUDEgNy4wKX0nKTtcXG5cXG5wdXRWYXIoJ2tleScsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpO1xcblxcbnB1dFZhcignWDUnLFxcXCJAbGF6eVJ1bGU9LmpzOnZhciBqeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHQnLHt9KTtyZWZyZXNoWDVXZWJWaWV3KGp4K2lucHV0KTsndG9hc3Q6Ly/mkq3mlL7kuK0nXFxcIik7XFxuXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnKSkge1xcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO1xcbiAgIH1cXG5cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcpKSB7XFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJ+inhumikScpO1xcbiAgIH1cXG5cXG5pZiAoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLCB7fSk9PScnKXtcXG4gICAgaWYgKGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcIiwge30pIT0nJyl7XFxuICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkpO1xcbiAgICB9XFxuICAgIGVsc2V7XFxuICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0xMDMyNTY4ODAmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsIFxcXCLljJfln44mJjEwMzI1Njg4MCMjXFxcIitwaWMpO1xcbiAgICAgIH1cXG59XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KSkge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIiwgXFxcIjEwMzI1Njg4MFxcXCIpO1xcbn1cXG5cXG5wdXRWYXIyKCdsYjInLGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix7fSkpO1xcblxcbi8qXFxucHV0VmFyKFxcXCLop6PmnpDlj6NcXFwiLGBoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNAcnVsZT1qczp2YXIgZCA9IFtdO2QucHVzaCh7ZGVzYzogJzIwMCcsdXJsOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvYmlsaS91cGp4Lmh0bWwnLGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnfSk7dmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSkuc3BsaXQoL1xcXFxcXFxcbi8pO2Zvcih2YXIgaSA9IDA7IGkgPCB0aXRsZXMubGVuZ3RoOyBpKyspe3ZhciB0ID0gdGl0bGVzW2ldLnNwbGl0KFxcXCImJlxcXCIpO2QucHVzaCh7dGl0bGU6ZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXCIse30pID09IHRbMV0gPyB0WzBdICsgXFxcIuKAmOKAmO+8iOW9k+WJje+8ieKAmeKAmVxcXCIgOiB0WzBdLGRlc2M6dFsxXSx1cmw6dFsxXSArICdAbGF6eVJ1bGU9LmpzOnB1dFZhcjIoXFxcInVpZFxcXCIsaW5wdXQpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIixpbnB1dCk7YmFjaygpO1xcXCJ0b2FzdDovL+S/ruaUueaIkOWKn1xcXCInLGNvbF90eXBlOiAndGV4dF8xJ30pO31zZXRSZXN1bHQoZCk7YCk7XFxuXFxuaWYgKCFmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcIiwge30pKSB7XFxuICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4LnR4dFxcXCIsIFxcXCLlhajnvZFWSVAmJmh0dHBzOi8vanh4LnNteXM4LmNuL2luZGV4LnBocD91cmw9XFxcXG7liqDpgJ8mJmh0dHBzOi8vd3d3LmN1YW4ubGEvbTN1OC5waHA/dXJsPVxcXCIpO1xcbn1cXG5cXG5cXG5sZXQgbG9jYWxIdG1sMiA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwge30pO1xcbmxldCBnaXRIdG1sMiA9IGZldGNoKFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvWnJ1aXJ5L2hpa2Vydmlldy9odG1sL2ppZXhpLmh0bWxcXFwiLCB7fSkucmVwbGFjZSgvamlleGlcXFxcL2ppZXhpL2csXFxcImJpbGkvdXBqeFxcXCIpO1xcbmlmICghbG9jYWxIdG1sMikge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwgZ2l0SHRtbDIpO1xcbiAgdmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSk7XFxuICB2YXIgdCA9IHRpdGxlcy5zcGxpdChcXFwiJiZcXFwiKVsxXTtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix0KTtcXG59XFxuKi9cXG4vL+mAmui/h+aQnOe0ouafpeeci+iHquW3seeahHVpZO+8jOeEtuWQjuabv+aNouWNs+WPr1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jyx7fSkpe1xcbnB1dFZhcignc3RhcmlkJywnOTI4MTIzJyk7XFxufWVsc2V7XFxucHV0VmFyKCdzdGFyaWQnLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcse30pKTtcXG59XFxucHV0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIixmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpO1xcbi8v6Ieq5bex5Y67YuermeWuouaIt+err+mmlumhteaKk+WMhe+8jOaJvuWIsGFwcC5iaWxpYmlsaS5jb23lvIDlpLTnmoTpk77mjqXvvIznhLblkI7miophY2Nlc3Nfa2V555qE5YC85aGr5YWl5LiK5pa5Jz0n5ZCO6Z2i5Y2z5Y+vXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSkpe1xcbiAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0JyxcXFwi5paw54mIXFxcIik7XFxuICAgIH1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmjqjojZBcIixcInBhdGhcIjpcImZlZWRcIixcInJ1bGVcIjpcInZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvaW50bC9mZWVkL2luZGV4P2FjY2Vzc19rZXk9JyArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICsgJyZhdXRvcGxheV9jYXJkPTImYnVpbGQ9NjIyNTMwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZjb2x1bW49MiZkZXZpY2VfbmFtZT0mZGV2aWNlX3R5cGU9MCZmbHVzaD04JmZudmFsPTQ2NCZmbnZlcj0wJmZvcmNlX2hvc3Q9MCZmb3Vyaz0xJmd1aWRhbmNlPTAmaHR0cHNfdXJsX3JlcT0wJm1vYmlfYXBwPWFuZHJvaWQmbmV0d29yaz13aWZpJnBsYXRmb3JtPWFuZHJvaWQmcGxheWVyX25ldD0xJnB1bGw9ZmFsc2UmcW49ODAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yMi41JTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSkuZGF0YS5pdGVtcztcXG5mb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgdmFyIHVybCA9IHguZ290byA9PSBcXFwiYmFuZ3VtaVxcXCIgPyBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJpLnNwbGl0KFxcXCI/XFxcIilbMF0gKyAnI2ltbWVyc2l2ZVRoZW1lIycgOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD1cXFwiICsgeC5wYXJhbSArIFxcXCLvvIbvvIZidmlkPVxcXCIgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5nb3RvID09IFxcXCJiYW5ndW1pXFxcIiA/IFxcXCLwn5KwXFxcIiArIHgudGl0bGUgOiB4LnRpdGxlLFxcbiAgICAgICAgZGVzYzogeC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXCIgXFxcIiArIHguY292ZXJfbGVmdF8yX2NvbnRlbnRfZGVzY3JpcHRpb24gKyBcXFwiICBcXFwiICsgeC5jb3Zlcl9yaWdodF90ZXh0LFxcbiAgICAgICAgcGljOiB4LmNvdmVyICsgXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmlrDnlapcIixcInBhdGhcIjpcIm5ld2JnbVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT9hY2Nlc3Nfa2V5PSZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYzNTk1Mjg0MCZzaWduPTZlNGRmNDU0MmQzOGVlZTJmYWJmMjEyODg1YjkwYzY0JztcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5YmN5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5pio5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuS7iuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIzXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLlkI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI0XFxcIlxcbiAgICAgICAgfV07XFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxuICAgICAgICAgICAgbG9nKHR5cGUpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcbicgKyB4LnB1Yl9pbmRleCArICdcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRoee0ouW8lVwiLFwicGF0aFwiOlwic3lcIixcInJ1bGVcIjpcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFwiKVxcblxcbi8qKlxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXG4gKi9cXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKVxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJykpIHtcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcbn0gZWxzZSB7XFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcbiAgICAvLyBsb2coY2F0U3JjKVxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcKGZ1bmN0aW9uXFxcXChcXFxcKVxcXFx7L1xcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXG4gICAgfVxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxufVxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhrZXlzKVxcbi8qKlxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcbiAqL1xcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcbn1cXG4vLyBsZXQgcGFnZSA9IDFcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXG5pZihwYWdlPT0xKXtcXG4gICAgXFxufVxcbnRydWVfdXJsID0gdHJ1ZV91cmwgK1xcbiAgICAnJnN0PTEmc29ydD0wJnNlYXNvbl90eXBlPTEmcGFnZXNpemU9MjAmdHlwZT0xJyArXFxuICAgICcmcGFnZT0nICsgcGFnZVxcbi8vIGxvZyh0cnVlX3VybClcXG5cXG5jb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbkNhdGVnb3JpZXNIZWFkZXJcXG4gICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KCduYW1lJywgJ3ZhbHVlJylcXG4gICAgLmdldChkLCBtQ2F0ZWdvcmllcywgcGFnZSlcXG4vKipcXG4gKiDojrflj5blvZPliY3liIbnsbvpobXpnaLmupDnoIFcXG4gKi9cXG50cnkge1xcbiAgICB2YXIgc3lsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHRydWVfdXJsLCB7fSkpLmRhdGEubGlzdDtcXG5cXG4gICAgLyoqXFxuICAgICAqIOWIl+ihqOaVsOaNrua6kFxcbiAgICAgKi9cXG4gICAgZm9yIChsZXQgZGF0YSBvZiBzeWxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgLyorICcvJyArIGRhdGEuaW5kZXhfc2hvdyovICxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLm9yZGVyLFxcbiAgICAgICAgICAgIGltZzogZGF0YS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBkYXRhLmxpbmsgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeKRouWKqOaAgeWIhuexu+aooeWdl1wiLFwicGF0aFwiOlwiY2F0ZWdvcmllcy1oZWFkZXJcIixcInJ1bGVcIjpcImpzOlxcbi8qKlxcbiAqIOS9v+eUqOivtOaYju+8mlxcbiAqIDEu5o+Q5YmN5bu656uL5aW9IOWIhuexu+aJgOWxnuexu+Wei+WSjOWIhuexu+WIl+ihqCDnmoTlr7nlupTlhbPns7vvvIzljbMgZ2V0IOWHveaVsOS4reeahCBjYXRlZ29yaWVzXFxuICogMi7orr7nva7lrZDliIbnsbvmlbDmja7nmoQga2V577yM6LCD55SoIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxuICogMy7nhLblkI7osIPnlKggQ2F0ZWdvcmllc0hlYWRlci5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcbiAqXFxuICog5pSv5oyB6ZO+5byP6LCD55So77yM5LiA5Y+l6K+d5Y2z5Y+v6LCD55So55Sf5oiQ5YiG57G777yM5Y2z77yaXFxuICogQ2F0ZWdvcmllc0hlYWRlclxcbiAqICAgIC5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcbiAqICAgIC5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcbiAqXFxuICogQHR5cGUge3tzZXRTdWJDYXRlZ29yaWVzSXRlbUtleTogQ2F0ZWdvcmllc0hlYWRlci5zZXRTdWJDYXRlZ29yaWVzSXRlbUtleSwgZ2V0OiBDYXRlZ29yaWVzSGVhZGVyLmdldCwgY2F0ZWdvcmllc0tleToge3RpdGxlOiBzdHJpbmcsIHVybDogc3RyaW5nfX19XFxuICovXFxubGV0IENhdGVnb3JpZXNIZWFkZXIgPSB7XFxuICAgIGNhdGVnb3JpZXNLZXk6IHtcXG4gICAgICAgIHN1Yl9jYXRlZ29yaWVzOiAnJyxcXG4gICAgICAgIHRpdGxlOiAnJyxcXG4gICAgICAgIHVybDogJycsXFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiAxLuiuvue9ruS7juWIhuexu+WIl+ihqOS4reaLv+eahOWtkOWIhuexu+eahOaVsOaNriBrZXnvvIxcXG4gICAgICogICDmoLnmja4ga2V5IOaLv+WIsOaVsOaNruWQju+8jFxcbiAgICAgKiAgIOS8muiHquWKqOi1i+WAvOe7mSBzY3JvbGxfYnV0dG9uIOeahCB7IHRpdGxlOiBpdGVtW3RpdGxlS2V5XSwgdXJsOiBpdGVtW3VybEtleV0gfVxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gdGl0bGVfa2V5IHRpdGxlIOeahCBrZXlcXG4gICAgICogQHBhcmFtIHVybF9rZXkgdXJsIOeahCBrZXlcXG4gICAgICovXFxuICAgIHNldFN1YkNhdGVnb3JpZXNJdGVtS2V5IDogKHRpdGxlX2tleSwgdXJsX2tleSkgPT4ge1xcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlID0gdGl0bGVfa2V5XFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudXJsID0gdXJsX2tleVxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxuICAgIH0sXFxuICAgIHNldFN1YkNhdGVnb3JpZXNLZXk6IChzdWJfY2F0ZWdvcmllc19rZXkpID0+IHtcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleVxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxuICAgIH0sXFxuICAgIC8qKlxcbiAgICAgKiAyLuiOt+WPluWIhuexu+WktOmDqFxcbiAgICAgKlxcbiAgICAgKiBAcGFyYW0gbGF5b3V0IOW9k+WJjeeVjOmdou+8jOWNs+W4uOeUqOeahCBkLnB1c2gg55qEIGRcXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGo55qE5a+55bqU5YWz57O76KGo77yMXFxuICAgICAqICAgICAgICDlpoLvvJpcXG4gICAgICogICAgICAgIHtcXG4gICAgICogICAgICAgICAgIFxcXCLlubTku71cXFwiOiBbeyBcXFwibmFtZVxcXCI6IFxcXCIyMDIxXFxcIiwgXFxcInZhbHVlXFxcIjogXFxcIjIwMjFcXFwiIH0sIHsgXFxcIm5hbWVcXFwiOiBcXFwiMjAyMFxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCIyMDIwXFxcIiB9Li4uXSxcXG4gICAgICogICAgICAgICAgIFxcXCLmjpLluo9cXFwiOiBbeyBcXFwibmFtZVxcXCI6IFxcXCLng63luqZcXFwiLCBcXFwidmFsdWVcXFwiOiBcXFwiaG90XFxcIiB9LCB7IFxcXCJuYW1lXFxcIjogXFxcIuaXtumXtFxcXCIsIFxcXCJ2YWx1ZVxcXCI6IFxcXCJ0aW1lXFxcIiB9Li4uXSxcXG4gICAgICogICAgICAgIH1cXG4gICAgICogQHBhcmFtIHBhZ2Ug6aG156CBXFxuICAgICAqIEBwYXJhbSB1cmxMaXN0ZW5lciDpop3lpJblpITnkIYgYnV0dG9uIOeahCB1cmzvvIzpnIDopoEgcmV0dXJuXFxuICAgICAqL1xcbiAgICBnZXQ6IChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UsIHVybExpc3RlbmVyKSA9PiB7XFxuICAgICAgICAvLyBsb2coY2F0ZWdvcmllcylcXG4gICAgICAgIC8vIOWIhuexu+aJgOWxnuexu+Wei+eahOWIl+ihqO+8jOWmgu+8mlsgXFxcIuW5tOS7vVxcXCIsIFxcXCLmjpLluo9cXFwiIF1cXG4gICAgICAgIGxldCBjYXRlZ29yeV9uYW1lcyA9IE9iamVjdC5rZXlzKGNhdGVnb3JpZXMpXFxuICAgICAgICBsZXQgdHlwZXMgPSBbXVxcbiAgICAgICAgLy8g5qC55o2u5a+55bqU5YWz57O76KGo5ou/5YiG57G75YiX6KGoXFxuICAgICAgICBjYXRlZ29yeV9uYW1lcy5tYXAoY2F0ZWdvcnlfbmFtZSA9PiB7XFxuICAgICAgICAgICAgLy8g6L+Z6YeM5Lya5ou/5YiwIOW5tOS7vSDmjpLluo8uLi4g5YW25Lit5LiA5LiqXFxuICAgICAgICAgICAgdHlwZXMucHVzaChjYXRlZ29yaWVzW2NhdGVnb3J5X25hbWVdKTtcXG4gICAgICAgICAgICAvLyDov5nph4zkuIvpnaLlr7kgdHlwZXMg55qE5YC86L+b6KGM5aSE55CGXFxuICAgICAgICB9KVxcbiAgICAgICAgY2F0ZWdvcmllcyA9IHR5cGVzO1xcbiAgICAgICAgbGV0IGluaXRfY2F0ZSA9IFtdXFxuXFxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IDIwOyBpKyspIHtcXG4gICAgICAgICAgICBpbml0X2NhdGUucHVzaChcXFwiMFxcXCIpXFxuICAgICAgICB9XFxuXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcbiAgICAgICAgY29uc3QgY2F0ZV90ZW1wID0gSlNPTi5wYXJzZShjYXRlX3RlbXBfanNvbilcXG5cXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcbiAgICAgICAgICAgIC8qKlxcbiAgICAgICAgICAgICAqIOmBjeWOhuesrCBpbmRleCDlsYLliIbnsbtcXG4gICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBjYXRlZ29yaWVzLmZvckVhY2goKGNhdGVnb3J5LCBpbmRleCkgPT4ge1xcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3J5X25hbWUgPSBjYXRlZ29yeV9uYW1lc1tpbmRleF1cXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzX2tleSA9IENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllc1xcbiAgICAgICAgICAgICAgICBsZXQgc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXkgPyBjYXRlZ29yeVtzdWJfY2F0ZWdvcmllc19rZXldIDogY2F0ZWdvcnk7XFxuICAgICAgICAgICAgICAgIC8vIGxvZyhjYXRlZ29yeSlcXG4gICAgICAgICAgICAgICAgLyoqXFxuICAgICAgICAgICAgICAgICAqIOWcqOesrCBpbmRleCDlsYLliIbnsbvkuK3pgY3ljobor6XlsYLmiYDmnInlrZDliIbnsbtcXG4gICAgICAgICAgICAgICAgICovXFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgbGV0IHRpdGxlID0gaXRlbVtDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkudGl0bGVdXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdXJsID0gZXNjYXBlKGl0ZW1bQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnVybF0pXFxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsTGlzdGVuZXIpIHVybCA9IHVybExpc3RlbmVyLm9uRGVhbChpdGVtLCBzdWJfY2F0ZWdvcnlfbmFtZSwgdXJsKVxcbiAgICAgICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBrZXkudG9TdHJpbmcoKSA9PT0gY2F0ZV90ZW1wW2luZGV4XSA/ICfigJzigJzigJ3igJ08Yj48c3BhbiBzdHlsZT1cXFwiY29sb3I6ICMwOThBQzFcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICQodXJsKS5sYXp5UnVsZSgocGFyYW1zKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcy5jYXRlX3RlbXBbcGFyYW1zLmluZGV4XSA9IHBhcmFtcy5rZXkudG9TdHJpbmcoKVxcblxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS50aXRsZSwgSlNPTi5zdHJpbmdpZnkocGFyYW1zLmNhdGVfdGVtcCkpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIHBhcmFtcy5zdWJfY2F0ZWdvcnlfbmFtZSwgaW5wdXQpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhdGVfdGVtcDogY2F0ZV90ZW1wLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleToga2V5LFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWdlOiBwYWdlLFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcnlfbmFtZTogc3ViX2NhdGVnb3J5X25hbWVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nLFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgfSlcXG4gICAgICAgICAgICAgICAgbGF5b3V0LnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJibGFua19ibG9ja1xcXCJcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgfSlcXG4gICAgICAgIH1cXG4gICAgfVxcbn1cXG4kLmV4cG9ydHMuQ2F0ZWdvcmllc0hlYWRlcj1DYXRlZ29yaWVzSGVhZGVyXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLmiJHnmoTmlLbol48t6KeG6aKRXCIsXCJwYXRoXCI6XCJ2aWRlb1wiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL3NwYWNlP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cF9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJnNpZ249MGE1MWI3NzJmODFkYzc4MTJjZDY2MjI2YTgzMjUzODMnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLmRhdGE7XFxuZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5uYW1lLFxcbiAgICAgICAgaW1nOiAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHkjXFxcIit4LmlkK1xcXCJAbGF6eVJ1bGU9LmpzOnB1dFZhcignY2hhbmdlJyxnZXRWYXIoJ2NoYW5nZScpPT1pbnB1dC5zcGxpdCgnIycpWzFdPycwJzppbnB1dC5zcGxpdCgnIycpWzFdKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suWIt+aWsCdcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgIH0pO1xcbiAgICBpZiAoZ2V0VmFyKCdjaGFuZ2UnKSA9PSB4LmlkKSB7XFxuICAgICAgICB2YXIgbGlzdDIgPSB4Lm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxuICAgICAgICBsb2cobGlzdDIpXFxuICAgICAgICBmb3IgKHZhciBhIGluIGxpc3QyKSB7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IGxpc3QyW2FdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICBpbWc6IGxpc3QyW2FdLmNvdmVyK1JlZmVyZXIsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2NvbGxlY3Rpb24/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pZHPvvJ/vvJ9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJ++8hu+8hmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM277yG77yGYnVpbGQ9NjEzMDQwMO+8hu+8hmNfbG9jYWxlPXpoX0NO77yG77yGY2hhbm5lbD1tYXN0ZXLvvIbvvIZtZWRpYV9pZD0nK2xpc3QyW2FdLmlkKyfvvIbvvIZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKyfvvIbvvIZtb2JpX2FwcD1hbmRyb2lk77yG77yGcGxhdGZvcm09YW5kcm9pZO+8hu+8hnNfbG9jYWxlPXpoX0NO77yG77yGc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdE77yG77yGdHM9Jyt0cysn77yG77yGc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNycsXFxuICAgICAgICAgICAgICAgLy8gZGVzYzogYVsnbWVkaWFfY291bnQnXSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcblxcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5oiR55qE5pS26JePLei/veeVqlwiLFwicGF0aFwiOlwiZmFuanVcIixcInJ1bGVcIjpcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2Jhbmd1bWk/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcbnRyeSB7XFxuICAgIHZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHZpZGVvX3VybCkpLnJlc3VsdC5mb2xsb3dfbGlzdDtcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXCLlroznu5NcXFwiIDogXFxcIui/nui9vVxcXCI7XFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcIiB8IFxcXCIgKyB4LmJhZGdlO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3ov73liadcIixcInBhdGhcIjpcImRzalwiLFwicnVsZVwiOlwidmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvY2luZW1hP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXG50cnkge1xcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcbiAgICAgICAgdmFyIOexu+WeiyA9IHguaXNfZmluaXNoID09IDEgPyBcXFwi5a6M57uTXFxcIiA6IFxcXCLov57ovb1cXFwiO1xcbiAgICAgICAgdmFyIOagh+ivhiA9IHhbJ3NlYXNvbl90eXBlX25hbWUnXSArIFxcXCIgfCBcXFwiICsgeC5hcmVhc1swXS5uYW1lO1xcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcIlxcXFxu4oCc4oCcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFwi4oCd4oCdXFxcXG5cXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSArIFxcXCJcXFxcdFxcXCIgKyBnZXRIZWFkKOexu+WeiyksXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogZGVzYyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1cXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYydcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBjYXRjaCAoZSkge31cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuaIkeeahOaUtuiXjy3mlLbol49cIixcInBhdGhcIjpcImNvbGxlY3Rpb25cIixcInJ1bGVcIjpcImpzOnZhciByZXMgPSB7fTt2YXIgZCA9IFtdO1xcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbnZhciBjb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KE1ZX1VSTCkpLmRhdGE7XFxudmFyIHJlc291cmNlcyA9ICcnO1xcbmZvciAodmFyIHggb2YgY29kZSl7XFxuICAgIHZhciByZXNvdXJjZXMgPSByZXNvdXJjZXMgKyB4LmlkICsgJzonICsgeC50eXBlICsgJywnO1xcbn1cXG52YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzLnNsaWNlKDAscmVzb3VyY2VzLmxlbmd0aC0xKTtcXG52YXIgdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pbmZvcz9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGUmbWlkPScrZ2V0VmFyKCdzdGFyaWQnKSsnJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZyZXNvdXJjZXM9JytyZXNvdXJjZXMrJyZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9Jyt0cysnJnNpZ249N2UwZjFiOTJmM2VmMzgyOGIxOWJlNjY4Mzg5MTUwMDcnO1xcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCx7fSkpLmRhdGE7XFxuZm9yICh2YXIgeSBvZiBsaXN0ICl7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6eS50aXRsZSxcXG4gICAgaW1nOnkuY292ZXIsXFxuICAgIGRlc2M6J+aSreaUvumHjzogJyt5LmNudF9pbmZvLnBsYXkrJyAg5by55bmVOiAnK3kuY250X2luZm8uZGFubWFrdSxcXG4gICAgdXJsOidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHkuYnZpZCArJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICBjb2xfdHlwZTonbW92aWVfMydcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaLnmbvlvZXvvIjlup/lvIPvvIlcIixcInBhdGhcIjpcImxvZ2luXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKCdMbGUwbmF5ZHN6UTI1MEloT3lkUkExa0pyMFhuTmEvckZsc2ppRUtaVzdyZXRaRmV1SE5KbFBLV01FNGE5QmNmQjlCMGhUYXdZTTh2K2hFd3pGM1JWTjJzUi9pSDhOdnlIWTZ1ektOZ2pNYko4NUdMRWcwSnlqUEl0ZkdHUmd3SkZVVk5MMUlMZVJOYmFlMzlYVnJvRDdXS1VLQlBmdjdId3FqMkhZRkg1dVFMcE9WWnZHNFVjWU96QXM3ajhOaWFQRVVKTVM0MjRCa2JuczFOZjZGSURYbGZrTklJc1dCSFdSZE82bXA3M1Z5MnZ1NWhnMWFHMEFWZWs1K3BRY3Fha3hFTTljV0dnQ0pDNW1LcFVpWlNFdFA5MnNLQTlTSysvTkhzcWYxM0NPdFFSaWl4NmdGaHlGaExlejcrR3B1U2JMSDEzazFGRFVaa2lsWTdPQlA4eUNaUCtZbTQxWWhpL3lJVHgzRWxMbWdqaUJleGowcVRManJLSVhueDRERFhpaXBTdy9ZcFVOZHF0Z1VYSE5pOThhN2NHdExFKzk1QXFrMkRjVi9IM09HNWhwc3dTSEMyK2lsclJMUDgrVHlMVG9nckZVYUpZTXhPbXJXd0FqVU0xRmZMcy9NU3g2MDFXL3VlRkRBbWhPL1pab1Vad2YzTVliaHRrditCeGd5Ry83NldmREFRYkdBUko5NE5halo5cHp6dmN1WElFcmdyMUQvUHVnRm1oT1dIay9NU2RGRGxCcU1EcEU4eDk1WWo2dEw0d0ZzdzJPYUdPb2U4TWhzbmlGWUVGOEJxTVBSZWQwejdjQkM0Ukd4RDVOZ1YxRktXSEFQZ1pQWUZLamdPOWdsTkp2NzFJU2dJbzlTS1JCRWpLbUU0Y0V2Yi9rSkVPQ0VETGpCUXJWc09UMTFPdVpjWnVkQ1pFT1R6bXJpR0hkUGZmbEtCckZzRWg3eWxVdFBaWUVjRXBDeTFXaDFlMVl4TktaaGJPdWswMnd0QTdGZkhOUDBEcUlaODNGOFJGRzM4UlkzNmZGSS8vekxwQ01FTThVWGh6bGp3NXFvU1B2emZoZVIxL0dGM01qakZmc3pYWjNVQ3ZjQmcyd0MxT2tBVktwMHVTY0dMbWVxNlFhRWJRTjJ1bnowMnBwRlY3ZUs5SDczeUQxRUVsTktDUUNra21CNmR4cHF0a1Y2SmhSc3hpZ01jZVhuNGRVR3QrQXRma0EyS3Z5bWU1cmt1cHBCY2VGdk1maElGc3hZR1IyVUU5K294NmtmbFlCdFBwNTVRNnVsSUt5ZGhyazVUQVR6TTJpdjlmOXhxWXBKSUlCbnRJVklvZjNPYW5ISldyRXR4UTJjMWdjdk90L1diRS9sa05kclEzM0lPWXJPRmIyY2JaNE0vbGg1blZ0emlqdnBZZTBNNk81ditJb1pNcE9pVnFzZTd5TmlYaEFIeEUwNXppaVZjajlwaXpwV3pJZWJ6TzRnK0trYXFKckJTNnl6NVFYbWlGY1dWRVNJSUlvdllIZUNLUkRMZ0JvanFKZFRlSVhhUi9LZTQ5c3QwM1gySFJ3MnIwQjBNbmlmOHRFUGRhMWdsY0JMc1RFWkVXMmhia2R0b0VpY0lSRnZraTU1eDlIUXRRVDR6cDJUV3AzYXU3VEl6d0RpdENVYmJET1YxekZnU0hoMDg3M0xseUJLNEs5US96N29CWm9UbGg1UHpFblJRNVFhakE2UlBNZmVXSStyUytNQmJNTmptaGpxSHZESWJKNGlCcCt4WGhqYysycnZpRGFBT3lGQzl1bHZreHphK1RXNE1hdDBoeHRZRHJJbCtEcG91ZWp5SU1UVzhEc3ZYeFBYQ0FRYm13R2xERUFmT2l5cXRxTFE5SGY4Z0RYRTM1UTdheTB5QUJFZWoxcUtXZ3JqL1luQmJZL2RZQU9QU0hwbWxkZEZMSm5LcEFwZE1YdllCc3dyV0YwQ1JSU2IxczdDWlJnTWZPUXpLNkl6Ni90ZWhhc21PczdNbDl3L0hwbjVuS2gxMCtuMGlHWE12eDVJSStTR3BvTHVlQ3RSbUo3VVZWQ3RERzZ4ZXZ4WU1tMDRzQUdHR0phQ0RBaEdIOGljYmhJRTJiK29xREZFcG1VMGVZN1J0Rzc5aFBoTCtnWFlPeVlOVXZKcWVqbGJaMS9PZHZMNW5ZeTZtMzBHd2wzejd3NWVzbFpDVUEwa2FSczVrbVVPTHZMMFFRUEQ3NGZhZ0FkcUdzTEhVR0RXYjRCekNMRjJNWUxIeStEc2NrSzNGWUpNdzBVNXFON0w3MDBzVlNhbGY2dEs5NmRXcXpuNWVJcmV3ZjFpR284M0ljd3o5bzgxSm11S0ExTHBJU1M5MDk4bndBeDFxUDFGelBjd0loVFNWdVI4K0FvbzFwM0RpMFdMd05LUU5PSTh4NzVEbWFFNkJMUGlEa2FETEtKeWMrYnpYMGhJQzNzUGIyK2Rmdmxrc0NuSzIyY0doSzI1RnM5T0ZSM3JGL1ZGVlNSYkRHNys3QXFPa0UyNGJva0VVamQ4blM1SGpxcDNEL3VrKzBYekJ5OTIyMlg2YkptSmh3RmxLejQ2VEJWWGV6em0zZHpRVzdPbCswT3FmL0V4MkFZK3J3UCtNNnhGUkhVWC9qMkdjR2E1bWhiSlV6UlJCZE81SXByVTJOczZIdFNYQzlJcWN4VzFWbDViQ09iTUc5K0h2dnp1MHNHN0FXTmd1WkpDc3hrSlhoaGd3ZjJHQjZGUHU2K29GUno2RDRBMDVzc0RzTExWeW1aNWNnVGJEY2JlcTE5VW1pWWFtM1BuN3FXSWNqdWg5T3NONHRpRlRyclVFUFpJUlg5WGswVUdEWWZhYlExcFhmeE0vK3lTaDhxN2R3blZKL2c3bHVpaEdPZWVOd0hYQUZBeTRuM2FjUEgyWEJjL21zeDVYS2dJcmVPUk1WWS9jRmI5S2NtM29XWnp6SzYrSFNQODV0a0ZLS201NWhnOE14d2k1SXg5UlFFL3BHQXgxY3NvdlNwM2pSUDBoNjJvNk5oRmt0Q0RLV3pqRVVsOWJtYTI4Zlp5aVk0ZFhCRXNIQk9wS3ZCekFBMGxSa2V6VG5FdnZYczlaNTVVckFhOFpoQUZ1eDZaRU53NGNNVEl1U2tWZncrVi9VL21vbWx0Sjl2R1BnaXFiNW5abDlLdTdkMFJPVjE1SjNRQXNiaE94VDZTZ2tJVnVndVZhVFZSY2owSFcrbU1OWUtiUXluck5SQXFLRGVKcXVWeGM5SGxQTTZMOHFQblpJV2JiSEFmVWZHYncwbFJsd1N1T3BGNytBMldKTFo0WHpTZ0hiY01Ya3VselBQRFA5L2NhUklCOGUyVmt6RVpTUG5VaVpBcFdQNndXdXNIdUIzOVdBTTc4K05CaTRCcDJteFdqTEtITFdRTURlSVhYaGR4ZWNLNXFVVWZZTGdJVGloOURlRnBnTE5XY0JMR1FGYmRTTmtKM05XcGNHNTZEYWpESXVMVWE4azAwaTk0Y0p3QXpNa0pCeE5KYjVlaEJSa1Z2V1hvc210SkJNZFJmNk5FYnNWOXU4dnBaak5Fb2dVa25tbHRKOXZHUGdpcWI1blpsOUt1N2QxWnFUUHpvcHdaaGgraXREcFViMExyMjdjNXdOQUFFanJwaE9xZmUwTmozOUNOVzBMSDRXeGpmMmx3bHhNdE9LUjFIUUwvQ1B3NTF5eVlKL0xWclF6K2lmM2lJQk5VNG5DZ09idVc1SlVMVHZzUXNzMlJuZUxDdzZycGh4Z01zZGF3TUVnWjlxQ3JDTTd5VE0wRXlsRnhmamlJWktxYksxMEJhZTJOb0hEK0d1b1VLQVFwNVN1NEFxWFNmS0x6bXg0aFdibVNpTlY3bUNCL3JkdzF5YnNQdmdBRmNHODVONTNrTmp6Y1B2YktMT094SFhIWVZXQ2xCbUpwcndKdEhBNkIxV1pwR1dSeDVNL2dEbXNHelZSbVZ1QkR2bVNBWk13SWVWcjViekRFODZtME5xY21nVE5lcHh3cUIreUJCcDVLemQ0MkVBUWh0MkVLNVQyek14dmdUemVTL3ozSy9xNWxSSGwxekswSi9zUXdMeDl6OGxNVmc5UkJiQWUvZWIyMFZvd3pjcVBkZS9xaTBqSE13R2NNYUM5ZHV5VzU2d2xHT3Nua2JleUJRL1BmUlNTcmtVRy92Y2FDYlRhNElUODRaenRwTlFSdmJlVW5JQW9Qa1cvZVo2d09VaWE0SnN5YXc5OVdhOCtFNExqRG1aMHpSaG5TSGdVeUMveWI5clpUMmxFMVM3SkJJazdZWlBYeUEwMGEyTGdLRkc4OFl6VjgwaGkrQVZUd1JaUGs5d2xPN2dSUzJOUi81NzduSXhHMEgyMmxsRnNjbU4xTGhJOTFGRDJWYlZYYnFpS1VWakpjVm42L3NRY1R3d3o3dHZCNno5eU1tckRseUNNdnlVZHdHSTZ1cjlFYWM0cVc2RVV6MXhIMnk1VEk4QWZoeHh4T3JBUVpuRVJiVE1JQ2RmS0dRR0RKZS9UZEtSS1F0Z2JwYjVNYzJ2azF1REdyZEljYldBNnpEUHUyOEhyUDNJeWFzT1hJSXkvSlJOZHZzWDZEbEtkWXdMbkZVUWoydDZIUUhodGprT2xpK3RjT25SbGpBYTMyb3JmeDc5Vk91dmlOcSttT3FSMU4rQ0dSRjJibUtVMWtwREFyeDRWekRkV0pkZEVyYStPa0ZuT05FR3o0WWVjd0VSWlVkNzcrbm5QTDJNb0NNbUVEWWN2WElzMkV1Wkhka1RmbjFpd2VvZ0QwMVFmd3FaSE5GOEh2bEJXTVUvZjZFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FSNWViTnl4cUZYaExjMitvZWRLOEpFb0xvTUVRNUQzZkphcllnZDlqeTZmT2lCa0c4QzlJSVRCOG15dHl5c3djS3R3aHkxLzFXYkhPN0N6L1JkcVZjeUozNEEycTJaM3l1aTFRNWExb1BtTzBOV0xmbnlhNCtzUk5RcmtzaVE0SHVPMjZHYVpVUjhrV3pGMU94ZGR1YVBWeElOTWI2NThjc1hWdURHWjVNWXBXZGJja0ZXNmVZUEZpdSt4U0RDL2VEenNYQUg2RkwzUFY4T3BEVVBCbXBUZWsyWFhmZUtkcVUycFM5bTdTQ2lDQjV1MnFiaUtDMmM5dkJWMjRNNnM4UmE0aG1kK1BhajRGVHl0djM2U0gxYkxLOHRJMWxaeit3aWYrOVpJQWRUMjJjcjU3anEreXBNUGVOMXk1OURxdjdwc2hEK0pUSThVZ2RTNFFWbEN3RjE3WXJ2SkhQRDQyS0ZFYmdRWSsrMGowZGFseUhZY2dmNThReUFsOStubkJKWlZVVmxJaWxRNnFFUHNIemI2ck1iVjY3WVNxWkhjTHZmQ1RvYlJpNHBhQkNFVXhjeU5MUXZKU0tjS3BaQXVmMis4Szgxekt5ejNNZEVjdXJ0c2huc3hRQStvY0RDMk95NThpeUNLNmRTaklyVFBpRkZRODBCbXBhMkQzbHNjTFZtWTVJUjRvazl0Z2RCZVhJNlhaOHUyazlLTEpXZCtGcXNmOFlPUUd4TzZFSDJjQ0tPMnUwKzNGL0dPejYrL09ydXRMYWhxUjJta1ZHSWRKS3VYZVlHc1puREJnZUpnQkpaOHJJSEMwQzBOV0xMeGlqTExGSmZ6aTBwekdJUkhXNExBSkFoTy9mTHBTTDUwUmxyaE1ZdmJRczRvWnUxcGUrNzlYVDVSUjg4ZGxYczFyNkQ0c0pIWWg2Kzd4M2tQUXVNbHM5cmMxbnl3ekJkbDM1Q0laeEV3NmNBQ2pQOFk0ZG42endOWVBudDlRbUcySVY0WjRyTVZ3STVwWlFpbVY0Y0IxSnlwL3lLM3ZPY0ZlcFdiYTBpTkw3eEFoRUdEdHM4STdoSy81TkhTQ3p3czY3VFNrSjhVSHl3R2t0U1RKQ1QwMTV5cFFDYVNuS21PT3FVaW14Q2FoZlM0ZTRmOVh0ZkJsU2xHV2NaK3l5dkxTTlpXYy9zSW4vdldTQUhVOWp4c0NQMnBLOElwSDhqUnlhRHhhaUdGTHhNbVF4YzVrRGdnNnZHZFA2S3kyNEEyQTBlQmllWGJnUGZYeUhzODJSNDU2OTIySnowcFZBR3NqUDQ0M214aUUrbzZXdjNMbmRubTArRi9RMUhrdjc0UGR2SW1IRE40dXJHRjh0RUIrRGxDRlErbEZTcWgrYkNQSXZoemhlNk54enE4RGgraW96dW5aSW9mSXpyaW8xZ2NyQmZCMFFZZGpYRzBGVFI3cGRONTRtMk1wdkVIMHlmdEVvMTlucnZMSzh0STFsWnord2lmKzlaSUFkVDJ0SFYvQ1BTc0t0N3p3Y3l0YUdyTGFhbzQyRDIyc3N3VFJMUGFHL3E2R2k3RGpFaGh3S2xCeGpqdzdJTXl0SUkzTmtNOGNiK0p0RXlmOHdGa1RFRmlGTFVZaW1RL2hQWEk5M3pyWGsrK3Zxb2dMcnUwdGFYZ3RsTTE3cXRBZnpHUXU4eVVkSTRxcVl6ZUp4WHhmME5OWjJvQmplRHIyRGl3STlPWFBVdUJIYnNMNGMzL253MTBFbTJVNk1GQlVjclpqL0RNYVNGeFZjWjdNb1dsMm9uOEdtMFZvd3pjcVBkZS9xaTBqSE13R2NNZjl6NDllZ1pSUXpMN2hLU1VNNVRQdDM3QW1rMzc5Y2N3cEx0UFRUMjNCaDdVaG5rZEcwR1VvSHZIc3k5OUd4bVFhUjRuYXlPL3JRRmJvcXVzdFNGTHJPODAvUHRuSDhFSmN3UWFRWVpKek4xYjliRDZSckpsNnpRSW9td01mWXV1K204RnNPN3pkNC9jZnI2aGlPZWJIU0tabURQRmQzWFJKZS85Q05uTEdMWVhKTHJZdkV2dEZ6d0Q4QTNuM2RoWFdQaW1rQWlzRjBSKzdQaFE5VkpMV2NHaDh0cUtnb1ZvWjdrekJHdUQ3U2g5YysyU3IrU0FHSDZhSEJUNEZ0MWVzd1VuYitmbkpHaGFIU0MvU3ZvektDTG1XTnJQUTk0YVp1WXlPT3YwZmxQVTlQdjlLT1FVeSs1VXVkbE12dHFsN0JJSmZvNFBpaC9sSzhlMU5HOUpOMEQ5TUx1MmY3K1VCQmNnbmNCOUVodWNLUUNKc1JoUExnWnBYL3Irc0xnbmJTMUhjQks1NnY3cU5tUFFZemxNTHdnVUZRRjdBZGV3VG9lL1lpdUFicWNLY00xTXdMZkk0YmUvZ25HNGM4UjRVOUJQMUdsODFaNVRMWmZXZmUxeDZWOEd6Skk5ODdWdUsyWTcxMG5sRXNJVUFDcDBEQStwM2I2cXcvYkVVRzBib0xQem9OcklUR3RPSXdFYnVYaUFqeGt2aHMvSkF2d0lHNjV2Nm9OU2s3WXhKWnpGTm8rajFmSWF6MCtGQmpXNWNXZitzaU9wM3ZZaGtYV281U2w2YUM3blFyOUR6aE43MFRPaTluQnpIUVJGbFIzdnY2ZWM4dll5Z0l5WVFOaHk5Y2l6WVM1a2QyUk4rZldMQjZpQWRRL0RGN3d5SDk5eklwcklOVTROeGV2YjZIeVZKUGs1MVhGQjFTSWdTSXJycHozRWozSitWaWdwZ0ViaFZaNnFzRmw4QW4yVVlwQWwzeEx5MXVjQkYyeEJ1cVpLWWJwSlV0RDlGd0dlUmtWeUUxdEdxakh0UVloL0lNZ3F2ZmF5TFpCeGlPK1YzVEMyVlBGejJyb0N4eE44SUx6eUtDY2N4SVk2RVlzZzJ3TGIxYjlCK3JXSDRHOE4vcmdDOUQwclhyblFLRWJZcCtsWFhsdHdFU1FnUHpyYjVFb1JQdHk5ZGlibFNCYnhyNFB3RWwvR254UmxGWnBZazhEeWZGSmR1TjgxMjFYNW1SV0tVNjY5bXVHM2pJNExzWHJobDZCVlZNY1hOOWthcTlxek9yMnZUZjZJczVPelYreGdRTkJEc01pZHNKNS84K1UrWkxYb29rdFM3ekI5RGp5RW5UUXhXWE9uaEl3NGs3V3pqNnBtK1pJNVcxTjMwUWJWQitRZk9JZkZ6a0E4UjNrc29EdUl4ZmtnK3NZNmtQR3M3TWNyU1dFMncwV1paVGNpRG9tVE56L2EvQUFSR2FLTEUvZTRrZzFyMHBTRWQ1THFmdjJHUEQwQ1ZHK0lJUnNxOTVITUZyWERJZmYvdzliTEs4dEkxbFp6K3dpZis5WklBZFQyeDlKY2R4OC8rRU1MNnNGK1JCaFpPSWl6ZG5VQ2N2akx2RTNkdmpUMlhCaWNkUUZ6NzFHU09lZ2pnK0hmeXNUYTk0cDQ2VXMvZytpdVdIQTJzZEh1RUdZU0VuUWwvMVhrckdJMXdPcUxjNHhXL1R4ZmNKT1NCWTFmT0kyV05BeXBLU0ozWExxMWI0YkhscTZCVnhSbDdaR3BYSUErNFRqaGpjTldEM2hXMGhRcm8wNjgxdEh0ZzcrYmp3Q3NQa3ZNVXowRzVrUFpobS95cDFadWF5RzhhK2huTEFzdnUvTWxLblBZd3JsVEZQRUxQQ3pydE5LUW54UWZMQWFTMUpNa1J5Q0d2eGFUa2tRL2lmRjdLZHpWbnh5UTJjODh4UXdHY0p3YjVpRndUSXJMSzh0STFsWnord2lmKzlaSUFkVDJlbVd1NFdENUpMOXBZUXlzNnV1VGpwVW55M0dDQnF0bWxTRjdXQXFiL1NETk5HenlOUTdmYThjejZvMkJ1ZUg3bnNld3RMcldJODEzOWtEWTdidXdJSmxaUE5yUU8xNG5LQzRGUmRZVGQ2dEdMUnpkenBSUTNZU04xZWJvcUx5RGFpRHR0MkVlbzJTdU9OU1hES2tEUFV0RE4veUVYaENRY2dVTjdvTEowcDlUVGdzQTRJbTkzUkwvSFhuRVp2cXVlZWhFTjBSZ3V5aUVrNnhmcWp0Ry8vcXJvZGZYWWRaMlhldlVBMGUzUTFPRHF1c29nWjY5TlBUd2NNSUlFQjlPamxDZENYdERsR0Zpd1loOW5zS2FXWVoyaFp6OXBhQUE5NjV5UkNSVDZGU09MeGFuUmhvMkVzbEkvZXhkWTNtNmhuYUZuUDJsb0FEM3JuSkVKRlBvVktTZVY0SGMySytQSHBkbUFVN2xDaTBuQzh3UzZMVnBNU1MxMkI0em0ySml5Ly9yM3JGckNqODl3Q1ZNNHJXTWVIakdORXFJT2tjQUtJcGhUbjhOKzN0V3JMdWV2SkNXOHVDUG1ScU5CSXgzbzV1OUFnZzJDb3hCY2JlS2hTa2d4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnM4UVgwdzMzMFJidCtuK3FmR09LZ2x0VGk5VFVJRStuYWtPd0JVd2xHekdDb3ZjakYvZXNlWWZpc1Qxa0FUWmE1Q0JwUkVoK2ZuYzNMZXRMaDZsSnpiUnpDT1U3aHZZbWZxQ2ZRSUVFMkxLL3dudW83eEtGTTV4dTd3ZGNiWWw3TEs4dEkxbFp6K3dpZis5WklBZFQyK2lGd0QwODdlblM5UW1uYys2VHRHd3lxY3N6dXo2ajAwQkZJUy9TYk1WaG5KQUMrWlFXU29PWVNzemtlblBZbWtTOXlGY1BsRmZqQlptaERpZHlLbnNzcnkwaldWblA3Q0ovNzFrZ0IxUGJHYTJJTDJ2MEpMKzA1eXFwRWsxUlhSc1BkZHF1OUcvZ1pCd1l0YjAyLzY0TEpVYzdtWnR3NUt2LzRVODRvZi9ad2w0YnBxRjlhejVOSnJLS2tGL3hpeXl2TFNOWldjL3NJbi92V1NBSFU5aCt0bDlReGk4N0syaCs1L0I5V0hnekg3WDFpeTI5T1pDb01lbFhEK0NsVnl5dkxTTlpXYy9zSW4vdldTQUhVOWlFU01Pb3ZNa0I3YXZXYWdxZFZBWlh6Yy9nYnBPbHgwZ3NGamhQd24wdWhMZTEyZWZhMG1vVTVaK3hhc2RaTC9HQ2o0M3RDVkJUbUZVTHJ2VGl5Z3BhR2RvV2MvYVdnQVBldWNrUWtVK2hVR2hHN0xqQU1YaGt0RVhidXJHUVpubWN0QkxhVC8zazh0TmJIQXBWZ0tYakxLOHRJMWxaeit3aWYrOVpJQWRUMjNsd0tyNmNoQmEwVjBCenRQekd1SXpGWGJsUHg5Q1BqaWFXWEhoL3NpTURMSzh0STFsWnord2lmKzlaSUFkVDJQNGwwMkJ1S0JERTMwa3Y5QmJGM1NuL3hJOHpzNDlyOFhJRTJUbkdUUVhqTEs4dEkxbFp6K3dpZis5WklBZFQyVDllNmxQcXVBVGUvd3hWM1hUU1RpVURORzVPem15MW56T01TcjBJYmpzNzArYmZGeDhoN1lCZzAwQU1zNmNpS3o0bW5XN2JydU9IbUM0NG5Ya2Zzd3JsNUVMaDRFdFpXU3FyaGZrYXBDb0tpZjNpSUJOVTRuQ2dPYnVXNUpVTFR3MUFJQ1p5QUNFeG45dzZXMmlCVklxMlVVY1dGNk41ZGtFT0RHQUl3SVdwNFlRQjZ3clMwYlR3WkwvWG9HVjlYc0p3M3J6L0UyNFZ6c0FNWUoxanBLQXhJMTJkNzBsL3pBQ1lDa2xVL2R0UkFnVW5LZkNDeHdjTFFxNEtRcUFMZHVteFF3dStkTkJCVW9YNG1QcER6aFRucFVjTldldWRsVGZ2ZEE2VmFmV0Z4eTBHbUxyaGJlTXFDT3E2VEhwN1ZPWlNWVURwNTZubks4T2owYnJybTlBZDNIemU0YWl0VHNnMlUvZmNIKzd6MXJjRUZRcndBU3VNRWdGVC9EYmcrMG4wK29jR0RYb2d6d3N4QVpEeWFTdWJSc210VjA1QlFGVEovQk52di91ZjVrU1k5aS85N0tVN0lGbVl4bDhzcHd6a1RyaW80akFSSDZad1RYcFJsSDk2VFpkZDk0cDJwVGFsTDJidElLSUs1V2s3NEs1d0gzMlNZVHNoVk9mL2l5eXZMU05aV2Mvc0luL3ZXU0FIVTlzUXNWSnptL3BZQWZOZlZoWEdSTUo2U29EMm9ma0g5SitaU25MZkRKRTgwajhuR1dTamZHcW5QOG0zUTdzY2w4Z2RjRXNWU0RWeHFRU3h3YWlSVXdEQmg1T1RDbDdEdm9acUR3b2l4cDBPNVZxS3Z5eDhXQ1V5T09mZnlPckFmNTVvZVVLbmE1cDJJQXdjdHloNElSblVuMTlRUnhJZGErVHgrbktmRDRHUmdFTVA1Szc4ZmIvbWVvUGtiQWRIUFViQ2Y2eUI4eU80Kzk2V21RTXFyRWlhektleVp0amJ2bGlrYk9lTVA1ZkM4bTdPMU8vQ0JuaGZuT3JHWXpIWndIa0NxY3d4QXFyQjlXa2JMTHlITVp2cDVnR2dySW9LR2hGSEQ1Ym5mOWZBenpwUXkrdzc4ODdEa0p5dnYyd25PSitLcWxtWkFveUhWaUg0M0Z6MFhhQTBSbW1CYnBISmZBQmNKbDJwQWtLb0hWVWNiZDZ4NUN6UlI4L09BdG5xT3ZOdEN6aWhtN1dsNzd2MWRQbEZIengzTEs4dEkxbFp6K3dpZis5WklBZFQybGhCRjNIMFBvOUZFV0NBeCt2MG5mZ1VzWVdkMml3aDg5eUFNcjZhcVJkd2JNWmZjYUlQcmZNR2loOFE2UlVTZEdOdDlyMmFXK1E4NXFIRkp0aTlBZldNK24rbHNnbHcyeWNXSm04SEJCa0ZMbVEwV3BzTmdFQWpkU2ovK3c4QmwxVVV3aHhuTGtjL3pzaXRLTFJ0ckhDck5XUmNQOVZMM1RkOEhhVU82ZlNscWgzNlJ1Y2Z3OFRRMUIxTVdvdXBqaFBSOE9UeitDVWtkeUtQYkU3VWoxVURwaDlrWWFxWFBNbDEvNm1wcTAyYkxLOHRJMWxaeit3aWYrOVpJQWRUMk9QZlpxZkVyUHd0OGZKbG9vM0ZIb1pzSGozdU5SMHlPaklTWlFGWGZoZFdZZ3RVbWIzWE5JREhvSEd4V25xNU02ZFIvaEJCbzVWNGkrVExadk1VcWVGSmNSNG55MVREUmQ4dE8zZEJkOTA2UnduL0JDcUhLT08wR0tNdnhGQTl2OGZUbTFNUGZ5cmdObHN3WEF1Wmp5SDlzcSs1MHdsWmhxb0pNVmxLMVVxK3QxQjhJS1llWTJkMy93NTN0ZWU5Z1M3dFFJRVNLVkxSUlNNZXljdUxnb29NSEpIZ2hMWmRieUpwMFkrK2tFcXExckFMdkVLY2Z1ZE91UzAyYTFPNkUzMUE5WXltUVB5VitvZ0E1UmE3WU1pTGdRNjBUMGVvU2srY2lpNGhQS0p4ZS80YmUvWDMyTjhwSUlCTEhuR3FUdGpFbG5NVTJqNlBWOGhyUFQ0VUdOYmx4Wi82eUk2bmU5aUdSZGFqbEtYcG9MdWRDdjBQT0UzdlJNNkwyY0hNZEJFV1ZIZSsvcDV6eTlqS0FqSmhBMkhMMXlMTmhMbVIzWkUzNTlZc0hxSUFlUHlDTnJESjM1ZHpVcThzcjc1azVwOXNmc045ZjZkenZ4QW9FZ056Z3dWektQRmx4V3F3elV3YXpXeWRHQ1NXcERsSEtnT0lMWUhpTHpaZGZINXB0Y2w2UGlDRGJVZ3R4TnJRUEtOZ1hVQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlCb2d5YkNvQVNwR1N2L2RQL05hOTlhYWZCKzN2QTZ4QzdzZzkxZ0dSbXh0bFhOdllpQ01tRER6Q1poTWZuZi9xaHgxZjh2SU9EcmpMNWlkNmp4SHJtaEFSY1VPeEQ0ajkvNThXdEpZdmFtdEN6d3M2N1RTa0o4VUh5d0drdFNUSk1wZ1p0aXpvQVhONTloUStVNUNoSVEwVVRqSXBDQ2hjQXZXcDkvQ0h5bzRSZzkvaXFpTkxTQk9XNDFwWXZnR1U3dEgxaVB1aGV4MTliWE01bzhFNldDak95bnA3TmdBQ1YzK1JBejRyYWwxaG5hRm5QMmxvQUQzcm5KRUpGUG9WQzFRT0NHRE8vbzF4WGI2OGdHaUhpQkNzc0g3V2tUc3hUZlBUcWl1WEcyTmlXc3VvTmNQLzg0NDdUT0R3QndRaHhhMWYzUkZMMHFWeWxxR3JiUGVxZmd3UVgwVE51QnE5RC9OVEhJeWhlVHV3QW9WWUc4djRsTWo3b3J2bnVuVXd3Z2s2VVgrM1VVYkxhQVo0S210ZFIzaFRzeEtpaUs0UnJpRXAwNzVFSDUybGRqUkpiNHViSS9RWCtxZHJUTHhGd0lkWWVQL3dpaWtOVk9YUE1DbTd1SHZyY0lwdmhxY1Z0VkVYK0c5YUw4dlBuemMraEhueEE3MDhiRDZMZkpOZ2EzRnlIS2lCUjNVZjluMERnSEdONVgxaHhHbFFibThVVEw5TElCdmlEOTYwVjdKUXZtcUFoL2s0cGRnRzlxdzRVZ2hPaGpFeTVEbUNwK2R2NFJXT1VPYW01cWQrS2Vna2tFU09HOGtRUWVwenBReSt3Nzg4N0RrSnl2djJ3bk9KOENKUmwxRU9ETTBRWXprek10djhYSExLOHRJMWxaeit3aWYrOVpJQWRUMkNvdHJvUlByOUxBTDFLdCtkN0QzTWR0eE5hc0xUdUpkREkrcU5iYjhQVHRQdXQvdERxT1BYaTExeXU0elYzM25SWTZGai9aUjVvSzhvdzdrV21iczArRThHT2hoR2pGNWE3c2IvUVh3MlFPRHF1c29nWjY5TlBUd2NNSUlFQjlPRENXT0tCKzF2ckZLVEZoOGZXb09CZ0xSSnJFNzUxazBTYUREbFZOM2lzTkpBT3NmWGp6R3ZvWXpXMmJhcGpHbHF5amo2ZnlCVSs1SXdOOEZxNGxCdmdOOFlJOFZNZDhiYndJanZKNXZLV0FTZkFBRUJ5K0xEVmM2c1h0Y3NQdld0MytzdXM5STIyeksyVGo3aFM2cDZNc3J5MGpXVm5QN0NKLzcxa2dCMVBieC9hTHpTTFFtdHdPNFdSb04yMktZVkpBMy9YelNFZ2JnbmVneHFxTk9CaTN0ZG5uMnRKcUZPV2ZzV3JIV1MvenY3cTJVMEhBbVNIY2IrbnR0bHNWTGpNalJ3amFPZ0F0UmVqM2RFdlNQVkZ3L2kwYUNLMHhNUWJMS2hXYnh0UUNCa2xmRmFZVkZMUFpaRTBuM1MveGoxQlBUbUZkYVVHeVpSWjI2UURHaE9Nc3J5MGpXVm5QN0NKLzcxa2dCMVBZekxOSVQ2N3N3aEoxVEVuSUFMY1VzKzVKbHdKdTdteFRSVTRXWEFuQlAxM2dlNWdWamoxTmFKNjh3dWFQaVZoN0FkNlVQV1dnUjZ3TElQblRVZnRGajBwNlZYU0pQdVRlYXdSUlE0YzNjclhlUW10Q0hDcFVnWEtWb3RjRGR6V0FUVG5PS0pWeVAybUxPbGJNaDV2TTcrdTRmTDdNMTZ6ODdTSkVIVFRUbW0rSzlOSE5wbVNtd0piaGFzWndkZ3gvQWQ2VVBXV2dSNndMSVBuVFVmdEZqT0lpaEYvQzMxZ3NLNEV2dHV1c21Vazg5Y2NrQVA1aXZtcHlHUkw2NnhLVDNiQkEvNTRsVk9pclZ4clpRQi93N1RTN2wvRWUvMm8xS0VVTDhwN0R0by9jNXNuUUpsQ1NVZkRERE91ZXhtWGpBT2JRZ3MzN2JMRHlFNzRZS0tiTFJkd3hKZUVrQ2pEZHdMdk11Skdyc0NPejJPdGpBUElRVGtqQ2hOSnlXQ3pTRWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRWjNYUGdsM3FUSWxhTUhvYkJRUm5QMDExdm9oNXk2REJNS0MxNmxZTkQ4VWZteWdjbFRZc1pDZWRlcDdVbG9EcXdjakhhNktIOFcxV0ZaOURYeFAzV3ZZRjBSRHJZVGI0am9RbUlWVi9jSm5lZDNjUDJVcnZwbHI2TG5kVHJrTnFCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SU9yejVzbVp1THZJWG1XT3BFWFdpR29JbGl5a3BuSGNtbFpaSGxKcFZ1dm9VejBHNWtQWmhtL3lwMVp1YXlHOGE5cVJvclZYSXQvaGE5NEtjMndmVGN2TEs4dEkxbFp6K3dpZis5WklBZFQyenVaaEZxSFZGUkpVY2owTy9lVEdMbDNCWUxWUERVUWFMOWZIdDM1U3Y2bUZJaTJFQlY3bGZrcGpsU0xSWFFPOUN6d3M2N1RTa0o4VUh5d0drdFNUSklISWF3M2dYa3FBbzBlandKWHIyMktyYllmSjlHNVg4OVBtQ0hpeXB6R0pBbzAzY0kyMHdMMkV3VzNqVGVZN2IvWVdZQ3Bsck5xTUNFbjhHb2s0bjZXZmIvbXZjM3VpU3oyU2RtNzlVaVhqSmpmTDMwNWhVMWIrQkhqeDJLclNDS2dFVm8vQkdSWVJ0L3V0eWt0cmk2WkJlSEJVTGFuZzZyeSsvZFJWNU4zRXNEdWJKUlg2SURaUHpqOHR3UTZTY3Zrdm40Y0tDMVFaK1RwTVVSck0vUlRoQk1FRVRwVGZxeU80Wk1helZzYkllUjA0ZUxHMnFaYmxHWHJUdjRVRWF4VDNKeWh0TkdaZVNoYmcrUGQ3OS8yNDN6WGJWZm1aRllwVHJyMmE0YmVNWnR5eWczeWFUTjl6dVJpcjRMVnpvbHRWZHVxSXBSV01seFdmcit4QnhQQlJSaFpBQUxlTVVBZ2I1eFVEejFTeHN0Y1l1Nm1yZkVoUGk4K2pqK0dka0tiaVFtMlZ5YzdkSlpWUDhVT1E3RHZheDk4VG8zanhRQUR1OWJ5WURpUXVkSCtMbEdidHJQUGsxQkc1c3RKMVMycC9ubVJYWjRJT0FOTG9FRG4yelNCRjNETUM2ZHM3NmpndjM1YjR5RlR4eXl2TFNOWldjL3NJbi92V1NBSFU5aFF2M3Jzd3NCSDVZbk5CTyswMS9Cbk9sREw3RHZ6enNPUW5LKy9iQ2M0bjRXRXhyaVM3RExDWmR1aUVPSmtYTXZmeW5wRXIxZE04cGtPNnc5elkrVHN0ZmdENGNRa3BUSXk1WStHeXBTbkhvRExpblIwaWZyU2p3QlJ4OC9jWW5NNlVNdnNPL1BPdzVDY3I3OXNKemlkeVM2bGJ2Y2RZeVU4YjhHNkhhejJTYXN2ZzVGZU5WdW1tY2Vpam9pOHpEVjF1SHpscEo5YnVVQWJtTFAxTndlTmV1cUs2WVZ2cDZ2Q2VFNEdoZkh5SFlLaTl5TVg5Nng1aCtLeFBXUUJObHZUdjM0YkpHd3NoN2NVWVh5MzF3WlRPbERMN0R2enpzT1FuSysvYkNjNG5pY2ZuSXJueW1NK1JoY1ZOZlp1dXUxNVJWeUdhNjRLUG00NVFLQVdldTBuaFRCRFFZd0ZGc0gvOVRaTVJOMmxiSHQ0WWgvY1ZFaDNIb0NZRmoyQWdNVW9iOEtuMUtWaURPc3ZlOGptaDY4dXBVaG1INkk3SGVYaTFZZFRIVWo2SmhuYUZuUDJsb0FEM3JuSkVKRlBvVktKZlB3aDJHa1hEN0ZxRjUwR1I5R2Jqd1g4ZmJmall3b3Jka1hzMzVEb3BBODgrWXU0K1Niemd6SktFd2lKZnExb0pTOENtZWh1Y09zTEZyUlRXbW5xQXpCOEQwOFRZdDRMb2xCS21PRkRwMVhWWFNWcW1heHBIa3h6c29HOTdocy85cHdXNVRsS0RGdWF3RiszU1BndGg4YkJsUXg2aklhWGVSb1NZdjRqN2tqbmhjenEvQkYyK3B5ZkR3U0FqU0JqWE4rQTRrNEY5NUlIWCtlUEV3Rnp1SnRtVENMZjl2VEF4V0U4b2NTNWVCUGVPK3NENFF3L0IyLzFvN0ZCaEJ5WXN0b0QzalRiK3N4OGdZL2M5SXZ2cjNLT2paZ09TRHpUdWZ5OE03VlhoUHUyWjdQU05yTDkva21BNnlzNXYxdEttK2pRYXd2My9RSFg0Mko5eThoQTJ1TGtGYU55TzRYeENWMHVyVHBpRVdjR01NcitsT0VKeWQ3K25ObUt3ajhaREVWK3pQbUxITGxDSElCdE11NHZMSzh0STFsWnord2lmKzlaSUFkVDJjdkk3Y09OT1V4dm5uL2hlMUlFUGs2WWFjajJyZTNoS3NybWNJOCttTzRqTEs4dEkxbFp6K3dpZis5WklBZFQyVm9UNVBYN1RuVm9MMzNLZXFyUjdicWN6Ri9GN2hjRS8wNEhsME4xdklzMlY4RlpRL3VoY3VTYnNOamN4QlFiL0huSDk2K3ZQL2wvYkgwMlF2M3RWaEhRdjljRnVxSlVFYXNyVHl6Q1hhMElyMWprTEY4L3JodmpjcTJqeTZpMTVyNkkxN2VpZkNpeStkWVc2cjZ2UVhXTzlwWWJPMnNuaVhYMnlUeFZzb2tFeVRMQmc4MVVEL2NDY1NtZms2cXV3Y0dRdHF6ejlTYnE2MjRvcnlRNnUyWkZZbm81LytGcWJoSFJxdk5wTGV3SUVRc0drbGprclNEQ0E1TlpUb2FjOTVFNU56ZWh3aDhTQ2t5b2hLT2hRYTFmQ1p1SGR2VzlEZUJxVThYaXMxTHZhRVhUQncwMEdnZG9LT09DU3FxVldkdkdoS3JMSWp5YTExeUJwMkxNdHpPcnM4bzMvOWtubHhTVmFFUnlwV1pkc3BBek1zRXlqeXpnZ0lUUGpaVFQrdmtCTXlkd20wdTY1TkxlU2plS0lmZXgyNFROMGh1bjBIbFdpSFFJVSszWXg2WXByaTF0RGh3ejM4M1FwaEV5S0ZodzBoWmcxcjdsR3YwbnBVb3B6UXZ1U1pjQ2J1NXNVMFZPRmx3SndUOWQ3cGdvUm5RaHVmRkRCeUVkL2prMEtNK0Y1K0U2azlKVnV0NUFxcXFJakRxTlRpbGtUY1pjaDN6MStZbk4zWXNIYlArQWpXSGpWY1lxSE1QZU02MXVpcWVRZHFQQlJVREFLcUh5WHpFb1J5TEpDR25uMzUwdWFJczhkeFB4WGNnbzhSLzRRNmlNcFlUYVZISU9wSEpuV2hKbUlyeDVIMmJjTGJmVDUvUW1NSU1XNUxnb3VzMTV5L0FKclIwblZtZVZjTUppeFVyOHhCOHdPYWVzcVlhZEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlrT1lvZ2d1bDQ0eklaNjFMcm9GZ1hLR2RvV2MvYVdnQVBldWNrUWtVK2hVUGJWYzA4MGFra2hMWE9yN2NnOFZFVXZaYnowSFg4aFBGc2FiVUQ2cithMk1MbDBGTnlaMkVIWWtWN3pBQi9XTkFFWkxxM2F1ditwN09idlg3cy9wTGxSNFlnS1ZDUk9CVnhsTjhnM1hXS24zNjlOMWpsb3NxUkJkRE1mSkJCYkRUemNrODgzRFlKMk5OZFZRWWpPcWdzYktubHE4WStQajI3ZDV3QythWktTNUMvN0NlU3U4ZnJJZ2JnaW5oZjdRK3cyMThoOUF0S1RYQ1FpbGdldVJMSTZvZkpUZFd0eUhCQ2NhTnI3WDloZ3ByUitaa1JFZXdRbTBqaW1ON25DN3l5dkxTTlpXYy9zSW4vdldTQUhVOWs4dVpFVVByQjJWMUxtOGxPeTNjODNISWNSVzRFMTZCN2xjcExIcVphZXBEaGt3b0MvTWF1UUxObzVpRVcyZXVjZWptZmdhWk5MRzFsRVFTOW9HWkJNRHhoblFncS9qbzduSll4V0docERGRTZTc2hTTnBrYyszdWtYbmdhZGZpSDlOODBBUFhJWHZ1OHFqKzc0Y0hMZk9sREw3RHZ6enNPUW5LKy9iQ2M0bmhBMDFrc05XUGlMamtBYjhVdEtKcTRpTk9MK0VERXo2cmZZbmE2RURZRDdudHMvU09MTjNTNXhVUXdGUVIvK0xUVHA3UmJ1Z1oyKzZiTXFBeVpxWWU4c3J5MGpXVm5QN0NKLzcxa2dCMVBiNXJPYVJ3bTFIZmdybGNnMVpFZzNSVW5uT2hGMFlZQnlVWVhkQk9EazdwUE1sNlMxYWw5U3JIZmd5bVRPZElNYlhKRmJWNzJCUWxqd1VLOTZHVjNhUW9oTWprMC9JK1JLZGkwODlEZ29NYndBMytWYy8vZUhxaDc3NllOZUZod2tOcTlBZERKNG4vTFJEM1d0WUpYQVN0M2l2QzR1OVFCVGZiL3ZDbU5KaS9memFlczRvSkFLdVNjMENvK2F1NlJaeXB4NUQ1akxObVhNM0Y4WVpwZzh5VmdRWHdHb3c5RjUzVFB0d0VMaEViQ2RVSk9nKzNXdkxYUmtXY3BaYWxnNEsxNTlhRU0vdndZd0NxMzRseGtTRmhsS3lUVWc1UnNYZlJMcGFNaG0wZVpTSGR1b0RITmY0WjFvZ2daR3ppa29Hb3A4Yy96cm9XQm9OL2FWS21uOHM0VHlFK1VCUWV6djFmTEJlVXlCR2JIOEpYQS81dTIxOEVaQkJRdHczb3FFdjh5SjJEY1ZkS054bXp0QjhMbW5IJylcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nmbvlvZXvvIjlup/lvIPvvIlcIixcInBhdGhcIjpcInB3ZC1sb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGlzbG9naW4gPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0Jywge30pO1xcbmlmIChpc2xvZ2luID09PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE6LSm5Y+35pivJyArIGlucHV0O1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn6LSm5Y+3JyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KVxcXCIsXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXG4gICAgICAgICAgICBoZWlnaHQ6IDEsXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X2FjY291bnQnKVxcbiAgICAgICAgfVxcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOWvhueggeaYrycgKyBpbnB1dFxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIHRpdGxlOiAn5a+G56CBJyxcXG4gICAgICAgIGV4dHJhOiB7XFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXCJwdXRWYXIoJ215X3Bhc3N3b3JkJyxpbnB1dClcXFwiLFxcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0YXJlYScsXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9wYXNzd29yZCcpXFxuICAgICAgICB9XFxuICAgIH0pXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmO+8nyjlhYjngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXN2aXBcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6huWkp+S8muWRmOOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOeZu+W9lSjlho3ngrnmiJEp4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwibG9naW5pbmdcXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoXFxcImxvZ2luaW5nXFxcIikgPT09IFxcXCIxXFxcIikge1xcbiAgICAgICAgaWYgKGdldFZhcignbXlfYWNjb3VudCcpICE9ICcnICYmIGdldFZhcignbXlfcGFzc3dvcmQnKSAhPSAnJykge1xcbiAgICAgICAgICAgIC8vIFRPRE8g5ZCQ5L2s6K+06L+Z6YeM5Y+v5Lul5pS55oiQICQucmVxdWlyZSDnlKjms5UgICAgICAgICAgXFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFwiZHRkMVAzZFRFSVRvbnNnck5GZm9CaWdpNWxqYXowUGVHbWJtTWpqcjlINW5mdnNuQnc3SkZwMzdjbjNlZ3F1MHkvMHdUVzJvVTdxdE13UUlBaUxoRVNWS0JsS2tSdlcwcG5QRGRIbDdQR3d3RFQ1R00xdkJzb2diN1lEcHdtd1Y4cnR0YWQwTzVZSkJ2cGpYMjloVUJwU3NpYW83bDNVZWJ6eE5BV1lpajdZd0hXaHQwalZiaDVTTDdQWFZvMTQ5ZlBTVHV4bDhBK3ZMVVdpKzJXeEdyT1orUXZ0cllJbjI4QnFTOFBTN3pmMFIweXI5aFh6amJNT09YMkNPZFZZS1BkYkdzeHprbFY1WDJMTG1LYlBnRWZRRWxDZ01acFl1bmUwSThPeUk1NUhMSzh0STFsWnord2lmKzlaSUFkVDJkVFF2Q0JiK2lIanBSNkswTXIwZGZjL2pyVGQvK25tc21XcmtqaXR1cTh4Mmg3VTNiWm1heGtxWXJ4U29wckxpWnZuQmtTdkVvSWlxVVVPS2ltQ3kwMWYzdFJmU1FCZVI1bGdUNUEveHFnZDI4YUVxc3NpUEpyWFhJR25Zc3kzTUxaUmhTTHc1a2RTVTNZK2R5Q2E2WmNJRHhsT0dlU0ZMbUkwT0NGYnBaZTliWTduS1VPYWkzK1RIc2FGaUVFcXBkLzZuVVFGNFRaUkJnVnFqWUVGd1dKeUtBSzZEQXFvUnZCMlQwaWYyd1V2T2xETDdEdnp6c09RbksrL2JDYzRueVp4ZERmUVhONlJxQitpNk5nVGJDak5kNFRGWDVmV0J2SGE1cEhyVFNaQWhUVzl3RkE1d3NBREI5NXkrSngyWDlRazRHTENHc3RnR2NtSG05NmFwMXVXcStLOHZHRVpFYkVqa1U1MnRNUzV6ejZnbTdZaFhmOGVCWUJtRWFpTHVNZVU3NUdlMnFTNnVPb2oyMklURVVjc3J5MGpXVm5QN0NKLzcxa2dCMVBZWk55blhMbDF0Zm9EWTNIWmdQYWtmNkQrQUR6UVlxeHFSS1pDdGxOSXlhOWs4QzRIN2ZiaExEWGRXQTNvVjV5VU9nYVNYSzFPTTQwRnhOeU5YcEEvWktTNmdZM0IxL1YyK3pweitRN0NtdWU1K3FhTzBYckRQMTVoalM0YnhuV3JPbERMN0R2enpzT1FuSysvYkNjNG5YeGVrdW9UVlVSWTdlaCtkSUY0UU9hWG1iTmpZTmtpcW5BZDg1RnJYS1hvZWdKWkM4NUI0SlZxT1djdWVpcE5hSHkvZHdBaEtwbksvNUpPN1o2eWEybHMyL0p2UE9DUDkxZTZnNEhPK1lxRXBMcUJqY0hYOVhiN09uUDVEc0thNW5wcmJrSVAya25EWFhxdE1ZR1JkY2lnZUlSeitPSG1uS0xtLytXQ1BhMDYxOEVxdk1zR2c5ZnB2dFVvMi90bTBSellZaThrdUZHb3BUeW9pa0R3aTNjc3J5MGpXVm5QN0NKLzcxa2dCMVBhMUFEa3ZpdmtuY0VoUFdQNHdYQ2FUd3dwWjBHNitZVHZ5cDY4dGhGZEFMNXh4OStuVWE1aldtSlV5eVErcjFVc0Q1c01xaW5ZNWIvZURVbnhSS0tCVHpwUXkrdzc4ODdEa0p5dnYyd25PSnlkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTcvcXQyTjBuOGxIRDgrNzJLVFVESXF1WDU2NUNJUW5jRFc1S2ZYVVpMT25aYnM2UlRxUjAwTHVQSEF4UElIaGlhYmprTnZTVlFPenYzYXdlcmFtZVNPOHNyeTBqV1ZuUDdDSi83MWtnQjFQYlpmQUErN2crWWRUTnBldTlMUlJvb2lGd1YvOWN1NUhwRWdaMlg2d2FXZG9vWTFnNXBDWEtwTXUvZDdjM2hkUWZMSzh0STFsWnord2lmKzlaSUFkVDJZOTZza0J0Tmx2TkF4NklHcHpLTjhlTjBPSkNtMklxc0pKbkhYSmQxZnJ5Q01tRUNGRWVhVmJwdUtHM1YwOXdBQzdTWWk3ai9iQ0IrREMxMUJTYVp2OEIzcFE5WmFCSHJBc2crZE5SKzBXTXRaaks0UWxmenNNdGdHcWRubC9EK1xcXCIpXFxuICAgICAgICB9XFxuICAgIH1cXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXCIyXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzlt7LnmbvlvZXvvIHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0X2NlbnRlcl8xXFxcIixcXG4gICAgICAgIHVybDogJChcXFwi56Gu6K6k6YeN5paw55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICBwdXRWYXIoXFxcImlzbG9naW5cXFwiLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcIjNcXFwiKSB7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOS9oOmcgOimgeWOu+WuouaIt+err+aUueS4i+WvhueggeaJjeiDveeZu+W9le+8ge+8ge+8geKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfY2VudGVyXzFcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHB1dFZhcihcXFwiaXNsb2dpblxcXCIsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFwiMVxcXCIpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+S9oOmAieaLqeS6hueZu+W9leOAguelneWlvei/kCjinKrilr3inKopXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxufSBlbHNlIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCc54K55Ye76L+b5YWl55m75b2V6aG16Z2i4oCd4oCdXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiBcXFwidGV4dF9jZW50ZXJfMVxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuehruiupOeZu+W9le+8nyjor7fkuI3opoHlsJ3or5XlpJrmrKHnmbvlvZXvvIzlkKbliJnotKblj7flvILluLgpXFxcIikuY29uZmlybSgoKSA9PiB7XFxuICAgICAgICAgICAgcHV0VmFyKFxcXCJpc2xvZ2luXFxcIiwgXFxcIjFcXFwiKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9pc2xvZ2luLnR4dCcsIFxcXCIxXFxcIik7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFwiXFxuICAgICAgICB9KVxcbiAgICB9KTtcXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi55m75b2V6aG16Z2iXCIsXCJwYXRoXCI6XCJuZXdsb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJzmlrnms5XkuIDigJ3igJ1cXFwiLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcImxfaWRcXFwiLFxcXCIxXFxcIik7cmVmcmVzaFBhZ2UoKTtcXFwidG9hc3Q6Ly/liLfmlrDmiJDlip9cXFwiJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6IFxcXCLigJzigJzmlrnms5XkuozigJ3igJ1cXFwiLFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcImxfaWRcXFwiLFxcXCIyXFxcIik7cmVmcmVzaFBhZ2UoKTtcXFwidG9hc3Q6Ly/liLfmlrDmiJDlip9cXFwiJyxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuaWYgKGdldFZhcihcXFwibF9pZFxcXCIpID09IFxcXCIxXFxcIikge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmk43kvZzmjIflvJUg4pGg5YWI54K55Ye75LiL5pa556ys5LiA5q2l6L+b5Y675ZOU5ZOp5omL5py654mI572R6aG155m75b2V6LSm5Y+3IOKRoei/lOWbnuebtOaOpeeCueesrOS6jOatpeeZu+W9leeEtuWQjuaMieaPkOekuueZu+W9lSDigJzigJzms6g65pa55rOV5LiA5LiN5Y+v55So5YaN6YeH55So5pa55rOV5LqM4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi4oCc4oCcMS4g54K55oiR5Y67572R6aG155m75b2V5ZCO6Ieq5Yqo6I635Y+WY29va2ll4oCd4oCdXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS9ja1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwyLiDlho3ngrnmiJHnmbvlvZXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3dlYmxvZ2luXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbmlmIChnZXRWYXIoXFxcImxfaWRcXFwiKSA9PSBcXFwiMlxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBcXFwi5pON5L2c5oyH5byVIOKRoOWFiOeCueWHu+S4i+aWueesrOS4gOatpei/m+WOu+WTlOWTqeaJi+acuueJiOe9kemhteeZu+W9lei0puWPtyDikaHngrnlh7vlj7PkuIvop5Lorr7nva7ihpLmn6XnnIvmupDnoIHihpLljp/nlJ/nlYzpnaIg4pGi5aSN5Yi25pyA5LiK5pa56L6T5YWl5qGG6YeM55qE6ZO+5o6lIOKRo+i/lOWbnummlumhteaKiumTvuaOpei+k+WFpeahhuWGhSDikaTngrnlh7vnrKzkuozmraXvvIzmjInmj5DnpLrnmbvlvZXljbPlj69cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfkv53lrZgnLFxcbiAgICAgICAgdXJsOiBcXFwidmFyIGNrID0gJ1NFU1NEQVRBJytpbnB1dC5zcGxpdCgnU0VTU0RBVEEnKVsxXS5zcGxpdCgnc2lkJylbMF0ucmVwbGFjZSgn77yb77ybJywnOyAnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0Jyxjay5yZXBsYWNlKCfvvJvvvJsnLCc7ICcpKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+aCqOeahGNvb2tpZeaYrzonK2NrXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpemTvuaOpSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnDEuIOeCueaIkeWOu+e9kemhteeZu+W9leWQjuaJi+WKqOiOt+WPlmNvb2tpZeKAneKAnVxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJwyLiDngrnmiJHnmbvlvZXigJ3igJ1cXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9wYWdlL3dlYmxvZ2luXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcImNvb2tpZeiOt+WPlu+8iOeZu+W9leaWueW8j+S4gO+8iVwiLFwicGF0aFwiOlwiY2tcIixcInJ1bGVcIjpcImpzOlxcbnNldFJlc3VsdChbe1xcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgdXJsOiBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGZiYS5sb2coZG9jdW1lbnQuY29va2llKVxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcsIGZ5X2JyaWRnZV9hcHAuZ2V0Q29va2llKCdodHRwczovL20uYmlsaWJpbGkuY29tLycpKTtcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi13ZWLnmbvlvZXvvIjmlrnlvI/kuozvvIlcIixcInBhdGhcIjpcIndlYmxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgY2sgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHRcXFwiKS5yZXBsYWNlKC/vvJvvvJsgL2csJzsgJyk7XFxubG9nKGNrKVxcbnZhciBsb2dpbl91cmwgPSBcXFwiaHR0cHM6Ly9wYXNzcG9ydC5iaWxpYmlsaS5jb20vbG9naW4vYXBwL3RoaXJkP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmFwaT1odHRwJTNBJTJGJTJGbGluay5hY2cudHYlMkZmb3J1bS5waHAmc2lnbj02N2VjNzk4MDA0MzczMjUzZDYwMTE0Y2FhYWQ4OWE4Y1xcXCI7XFxudmFyIGxvY2F0aW9uID0gSlNPTi5wYXJzZShmZXRjaChsb2dpbl91cmwsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgXFxcImNvb2tpZVxcXCI6IGNrXFxuICAgIH0sXFxuICAgIG1ldGhvZDogJ0dFVCdcXG59KSkuZGF0YVsnY29uZmlybV91cmknXTtcXG4vL2xvZyhsb2NhdGlvbik7XFxuXFxudmFyIGluZm8gPSBKU09OLnBhcnNlKGZldGNoKGxvY2F0aW9uLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgTTIwMDdKM1NDIEJ1aWxkL1FLUTEuMjAwNDE5LjAwMjsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84My4wLjQxMDMuMTAxIE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgIFxcXCJjb29raWVcXFwiOiBja1xcbiAgICB9LFxcbiAgICBtZXRob2Q6ICdHRVQnLFxcbiAgICBvbmx5SGVhZGVyczogdHJ1ZSxcXG4gICAgcmVkaXJlY3Q6IGZhbHNlXFxufSkpLmhlYWRlcnMubG9jYXRpb25bMF0uc3BsaXQoXFxcIj9cXFwiKVsxXS5zcGxpdChcXFwiJlxcXCIpO1xcbnB1dFZhcihcXFwibXlrZXlcXFwiLGluZm9bMF0uc3BsaXQoXFxcIj1cXFwiKVsxXSk7XFxucHV0VmFyKFxcXCJteW1pZFxcXCIsaW5mb1sxXS5zcGxpdChcXFwiPVxcXCIpWzFdKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmZvWzBdLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZm9bMV0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmOeCueaIkeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXCIsZ2V0VmFyKFxcXCJteW1pZFxcXCIpKTtcXG4gICAgICAgICAgICAvL3JlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+Wkp+S8muWRmOeZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzml6DkvJrlkZjngrnmiJHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLngrnlh7vnmbvlvZVcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcIixnZXRWYXIoXFxcIm15bWlkXFxcIikpO1xcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v55m75b2V5oiQ5YqfXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIFxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHnm7Tmkq1cIixcInBhdGhcIjpcInpiXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIHpiYzEgPSAnYWxsJjImMyY2JjEmNSY5JjEwJjExJztcXG52YXIgemJ3MSA9ICflhajpg6gm572R5ri4JuaJi+a4uCbljZXmnLom5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m55Sf5rS7JuWtpuS5oCc7XFxudmFyIHpiYzIgPSAnMCYzMyc7XFxudmFyIHpidzIgPSAn6buY6K6k5bCP5YiG57G7JuW9semfs+mmhu+8iOeUn+a0u++8iSc7XFxudmFyIHpid29yZDEgPSB6YncxLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjEgPSBnZXRWYXIoJ3pibGFiMScsICflhajpg6gnKTtcXG52YXIgemJrZXkxID0gZ2V0VmFyKCd6YmtleTEnLCAnYWxsJyk7XFxuXFxudmFyIHpid29yZDIgPSB6YncyLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MyID0gemJjMi5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXG52YXIgemJrZXkyID0gZ2V0VmFyKCd6YmtleTInLCAnMCcpO1xcblxcbiAgICAvKmZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcbiAgICAgICAgdmFyIGEgPSB6YndvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSB6YmNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBhID09IHpibGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcInpibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiemJrZXkxXFxcIiwgYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgYyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9Ki9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignemJrJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPlnKjmkJzntKInO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfkvaDmg7PnnIvku4DkuYjnm7Tmkq3vvJ8nXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHpid29yZDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDFbaV0gPT0gemJsYWIxID8gZ2V0SGVhZCh6YndvcmQxW2ldKSA6IHpid29yZDFbaV0sXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKG5hbWUsIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pibGFiMScsIG5hbWUpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MScsIGtleSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyVmFyKCd6YmsnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgemJ3b3JkMVtpXSwgemJjbGFzczFbaV0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG4gICAgZm9yICh2YXIgaSBpbiB6YndvcmQyKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB6YndvcmQyW2ldID09IHpibGFiMiA/IGdldEhlYWQoemJ3b3JkMltpXSkgOiB6YndvcmQyW2ldLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjInLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmtleTInLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBjbGVhclZhcignemJrJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHpid29yZDJbaV0sIHpiY2xhc3MyW2ldKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5pZiAoZ2V0VmFyKCd6YmsnKSAhPSAnJykge1xcbiAgICB2YXIgemJ1cmwgPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tL2xpdmU/a2V5d29yZD1cXFwiICsgZ2V0VmFyKCd6YmsnKTtcXG4gICAgbG9nKHpidXJsKVxcbiAgICB2YXIgcXogPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tXFxcIjtcXG4gICAgdmFyIGxpdmUgPSBxeiArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLWxpdmUmJmEmJmhyZWYnKTtcXG4gICAgbG9nKFxcXCIxMjM6OjpcXFwiICsgbGl2ZSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5Li75pKtJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXCIrbGl2ZS5yZXBsYWNlKFxcXCI/XFxcIixcXFwi77yf77yfXFxcIikucmVwbGFjZShcXFwiJlxcXCIsXFxcIu+8hu+8hlxcXCIpICsgJ++8hu+8hnBhZ2U9ZnlwYWdlJyxcXG4gICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSwgJ2JvZHkmJi5mbG93LWxvYWRlciYmLmhlYWRsaW5lLWxpdmUmJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn5Li75pKtJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHRyeSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn55u05pKt5LitJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKS5yZXBsYWNlKFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFwiLCBcXFwiXFxcIikgKyAncGFnZT1meXBhZ2UnLFxcbiAgICAgICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLXJvb20mJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn55u05pKt6Ze0JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge31cXG59IGVsc2Uge1xcbiAgICB2YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjMvYXJlYS9nZXRSb29tTGlzdD9wbGF0Zm9ybT13ZWImcGFyZW50X2FyZWFfaWQ9XFxcIiArIHpia2V5MSArIFxcXCImY2F0ZV9pZD0wJmFyZWFfaWQ9XFxcIiArIHpia2V5MiArIFxcXCImcGFnZT1cXFwiICsgcGFnZSArIFxcXCImcGFnZV9zaXplPTMwJnRhZ192ZXJzaW9uPTFcXFwiO1xcbiAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3RbaV07XFxuICAgICAgICByLnBpY191cmwgPSBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXI7XFxuICAgICAgICByLnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBqLnJvb21pZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmRlc2MgPSAnVVDwn5C377yaJyArIGoudW5hbWU7XFxuICAgICAgICByLmNvbF90eXBlID0gXFxcIm1vdmllXzJcXFwiO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogai50aXRsZSxcXG4gICAgICAgICAgICBkZXNjOiAnVVDwn5C377yaJyArIGoudW5hbWUsXFxuICAgICAgICAgICAgY29sX3R5cGU6IFxcXCJtb3ZpZV8yXFxcIixcXG4gICAgICAgICAgICBwaWNfdXJsOiBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXIsXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKGlkKSA9PiB7XFxuICAgICAgICAgICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgICAgICAgICAvL+iTneWFiVxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGJhc2V1cmwgPSBcXFwiaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvYXBwLXJvb20vdjIvaW5kZXgvZ2V0Um9vbVBsYXlJbmZvP2FjY2Vzc19rZXk9XFxcIitnZXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiKStcXFwiJnFuPTEwMDAwJnJvb21faWQ9XFxcIiArIGlkICsgXFxcIiZwbGF0Zm9ybT1hbmRyb2lkJmJ1aWxkPTY0MDAzMDAmZGV2aWNlX25hbWU9TTIwMDdKM1NDJmZvcm1hdD0wLDImY29kZWM9MCwxJmh0dHA9MSZjX2xvY2FsZT16aF9DTiZwcm90b2NvbD0wLDFcXFwiXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29kZWMgPSBKU09OLnBhcnNlKHJlcXVlc3QoYmFzZXVybCkpLmRhdGFbXFxcInBsYXl1cmxfaW5mb1xcXCJdW1xcXCJwbGF5dXJsXFxcIl1bXFxcInN0cmVhbVxcXCJdWzBdW1xcXCJmb3JtYXRcXFwiXVswXVtcXFwiY29kZWNcXFwiXVswXVxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvZGVjLnVybF9pbmZvWzBdLmhvc3QgKyBjb2RlYy5iYXNlX3VybCArIGNvZGVjLnVybF9pbmZvWzBdLmV4dHJhXFxuICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBidXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCdcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKHJlcXVlc3QoYnVybCkpLmRhdGEuZHVybFswXS51cmxcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0sIGoucm9vbWlkKVxcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt55u05pKt77yI5pCc57Si5ouT5bGV77yJXCIsXCJwYXRoXCI6XCJ6YjJcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBSZWZlcmVyID0gXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbVxcXCI7XFxuaWYgKE1ZX1VSTC5pbmRleE9mKFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFwiKSAhPSAtMSkge1xcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxuICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgXFxcIlVzZXItQWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXCIsXFxuICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgIH1cXG4gICAgfSksICdib2R5JiYubGl2ZS11c2VyLXdyYXAmJmxpJyk7XFxuICAgIGZvciAodmFyIGkgaW4gbGl2ZSkge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmUCYmVGV4dCcpLFxcbiAgICAgICAgICAgIC8vdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICB1cmw6JCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgLy/ok53lhYlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBiYXNldXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL2FwcC1yb29tL3YyL2luZGV4L2dldFJvb21QbGF5SW5mbz9hY2Nlc3Nfa2V5PVxcXCIrZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikrXFxcIiZxbj0xMDAwMCZyb29tX2lkPVxcXCIgKyBpZCArIFxcXCImcGxhdGZvcm09YW5kcm9pZCZidWlsZD02NDAwMzAwJmRldmljZV9uYW1lPU0yMDA3SjNTQyZmb3JtYXQ9MCwyJmNvZGVjPTAsMSZodHRwPTEmY19sb2NhbGU9emhfQ04mcHJvdG9jb2w9MCwxXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVjID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJhc2V1cmwpKS5kYXRhW1xcXCJwbGF5dXJsX2luZm9cXFwiXVtcXFwicGxheXVybFxcXCJdW1xcXCJzdHJlYW1cXFwiXVswXVtcXFwiZm9ybWF0XFxcIl1bMF1bXFxcImNvZGVjXFxcIl1bMF1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYy51cmxfaW5mb1swXS5ob3N0ICsgY29kZWMuYmFzZV91cmwgKyBjb2RlYy51cmxfaW5mb1swXS5leHRyYVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBpZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1cmwpKS5kYXRhLmR1cmxbMF0udXJsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSksXFxuICAgICAgICAgICAgLy9pbWc6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5pdGVtLXJpZ2h0JiYuc3RhdHVzJiZUZXh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIGxpdmUgPSBwYXJzZURvbUZvckFycmF5KGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmxpdmUtcm9vbS13cmFwJiZsaScpO1xcbiAgICBmb3IgKHZhciBpIGluIGxpdmUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAncCYmVGV4dCcpLFxcbiAgICAgICAgICAgIC8vdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcIilbMV0uc3BsaXQoXFxcIj9mcm9tXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXG4gICAgICAgICAgICB1cmw6JCgpLmxhenlSdWxlKChpZCkgPT4ge1xcbiAgICAgICAgICAgICAgICB0cnkge1xcbiAgICAgICAgICAgICAgICAgICAgLy/ok53lhYlcXG4gICAgICAgICAgICAgICAgICAgIHZhciBiYXNldXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL2FwcC1yb29tL3YyL2luZGV4L2dldFJvb21QbGF5SW5mbz9hY2Nlc3Nfa2V5PVxcXCIrZ2V0VmFyKFxcXCJhY2Nlc3Nfa2V5XFxcIikrXFxcIiZxbj0xMDAwMCZyb29tX2lkPVxcXCIgKyBpZCArIFxcXCImcGxhdGZvcm09YW5kcm9pZCZidWlsZD02NDAwMzAwJmRldmljZV9uYW1lPU0yMDA3SjNTQyZmb3JtYXQ9MCwyJmNvZGVjPTAsMSZodHRwPTEmY19sb2NhbGU9emhfQ04mcHJvdG9jb2w9MCwxXFxcIlxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvZGVjID0gSlNPTi5wYXJzZShyZXF1ZXN0KGJhc2V1cmwpKS5kYXRhW1xcXCJwbGF5dXJsX2luZm9cXFwiXVtcXFwicGxheXVybFxcXCJdW1xcXCJzdHJlYW1cXFwiXVswXVtcXFwiZm9ybWF0XFxcIl1bMF1bXFxcImNvZGVjXFxcIl1bMF1cXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBjb2RlYy51cmxfaW5mb1swXS5ob3N0ICsgY29kZWMuYmFzZV91cmwgKyBjb2RlYy51cmxfaW5mb1swXS5leHRyYVxcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBpZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnXFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShyZXF1ZXN0KGJ1cmwpKS5kYXRhLmR1cmxbMF0udXJsXFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB9LCBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSksXFxuICAgICAgICAgICAgLy9pbWc6IHBhcnNlRG9tKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6ICdVUPCfkLfvvJonICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcudW5hbWUmJnNwYW4mJlRleHQnKSArICfCt+S6uuawlCcgKyBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5saXZlLW51bSYmc3BhbiYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCJBUElcIixcInBhdGhcIjpcImFwaVwiLFwicnVsZVwiOlwiZXZhbFByaXZhdGVKUyhcXFwiTDdBdko0MUMrK2tsbEJNUEc5SlJUVXpRdkVqSlh3UnJmUmlKbUVCdWZVUUEySEhXdFFMUmhBd3FTTXpNVWRJQXJXdVdGVE40NzFRN3Z1a2hYYlBiZVJ3aGRmaVFNK2ZkdEtHM05LaFF6S2RkN3JTQndpcFk5dDBtSjBxTzlEeDNNdGYxZFgzazF5LzhXdW9YUE1RbkNYWERNUTk3aHdlem90NTJJT3lLc0c2NE9xNWFHRk41ZGlxVDF0bTI5U3AvR3J0VkpYOGZ5am9OcTRUcnBmeGlIZzhZSFNCbEFQRGtFbFpqL3Rtai9hQzdLUnpJY253dE9vTGplQitBa2lvbS9TWnVzLysxUnJuWXB5bWJ0a0pOclk3MlB6T3RkWU5MMWpPb1E1LzRZa1QyWllacGxMbUkwY1ZnVzZLQlNRanFKMU5JYXdRZzBoNHFSTlcwYVlNV0RVMy9GR2p1YzVEQlNzaDBXNm1LOEdFMzRTWWxSNERna21NUm15R3ZxeWhjUnlvRmVEYUhkN2pJaWhkamN5Vmc0ay8rZGZxdnc3ZnJXWld1STF2YzlZTT1cXFwiKVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeS4gOe6p+aWsOmhtemdou+8iOaLk+Wxle+8iVwiLFwicGF0aFwiOlwibmV3ZGV0aWFsXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcbn1cXG52YXIgc190eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpO1xcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChyeCA9PSAn5o6S6KGM5qacJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9waGJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICdVUOS4uycpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdXBcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfml7blhYnmnLonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3NnalxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aWsOeVqicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbmV3YmdtXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn57Si5byVJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zeVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+ebtOaSrScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvemJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmm7TlpJonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL21vcmVcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09IFxcXCLmvKvmuLhcXFwiKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL215XFxcIikpLnJ1bGUpXFxufVxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaPmm7TlpJrvvIjmlrDpobXpnaLvvIlcIixcInBhdGhcIjpcIm1vcmVcIixcInJ1bGVcIjpcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgdmFyIF90eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywge30pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXG4gICAgICAgIHVybDogJ+a8q+a4uCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXCLmlrDniYhcXFwiP2dldEhlYWQoXFxcIuaWsOeJiFxcXCIpOlxcXCLmlrDniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXCLml6fniYhcXFwiP2dldEhlYWQoXFxcIuaXp+eJiFxcXCIpOlxcXCLml6fniYhcXFwiLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGlmIChyeCAhPSAn5pe25YWJ5py6JyAmJiByeCAhPSAn57Si5byVJykge1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi254K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIitmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiK2ZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfor4TorrrljLo6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InICsgZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaDkuIDnuqfml6fpobXpnaJcIixcInBhdGhcIjpcImNvbW1vbjJcIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxuXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxuXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcblxcbnZhciBjMiA9ICcyMiYyMTImNzEmMTgyJjEzOCYyOCYzMyYxODUnO1xcblxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXG5cXG52YXIgd29yZDEgPSB3MS5zcGxpdCgnJicpO1xcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcbnZhciBsYWIxID0gZ2V0VmFyKCdsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciBrZXkxID0gZ2V0VmFyKCdrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5cXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcbnZhciB6YncxID0gJ+WFqOmDqCbnvZHmuLgm5omL5ri4JuWNleacuiblqLHkuZAm55S15Y+wJuiZmuaLn+S4u+aSrSbnlJ/mtLsm5a2m5LmgJztcXG52YXIgemJjMiA9ICcwJjMzJztcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXG52YXIgemJ3b3JkMSA9IHpidzEuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczEgPSB6YmMxLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcbnZhciB6YmtleTEgPSBnZXRWYXIoJ3pia2V5MScsICdhbGwnKTtcXG5cXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXG52YXIgemJjbGFzczIgPSB6YmMyLnNwbGl0KCcmJyk7XFxudmFyIHpibGFiMiA9IGdldFZhcignemJsYWIyJywgJ+m7mOiupOWwj+WIhuexuycpO1xcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxuXFxuXFxuXFxuLy/kuInlkIjkuIBcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcPy9nLCAn77yf77yfJykucmVwbGFjZSgvXFxcXCYvZywgJ++8hu+8hicpXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxuICAgICAgICB1cmw6IFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXnvZHlnYDmiJbogIVi56uZ5aSN5Yi255qE6ZO+5o6lJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAnVVDkuLsnID8gZ2V0SGVhZCgn6aaW6aG1JykgOiAn6aaW6aG1JyxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmjpLooYzmppwnID8gZ2V0SGVhZChyeCkgOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJ+aOkuihjOamnCcgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxuICAgICAgICB1cmw6ICfmlrDnlaonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+ebtOaSrScgPyBnZXRIZWFkKHJ4KSA6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAn55u05pKtJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmm7TlpJonID8gZ2V0SGVhZChyeCkgOiAn5pu05aSaJyxcXG4gICAgICAgIHVybDogJ+abtOWkmicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgLypcXG4gICAgICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxuICAgICAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gZ2V0SGVhZChzX3RhYikgOiAn6L+95YmnJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICBpZiAoc190YWIgPT0gJ+i/veeVqicpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZmFuanVcXFwiKSkucnVsZSlcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgaWYgKHNfdGFiID09ICfov73liacnKSB7XFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2RzalxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG4gICAgKi9cXG59XFxuXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS91cFxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+aXtuWFieacuicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc2dqXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5paw55WqJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn55u05pKtJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS96YlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvbW9yZTJcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09IFxcXCLmvKvmuLhcXFwiKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL215XFxcIikpLnJ1bGUpXFxufVxcbi8v5LiJ5ZCI5LiAXFxuXFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt4pGj5pu05aSa77yI5pen6aG16Z2i77yJXCIsXCJwYXRoXCI6XCJtb3JlMlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxuICAgIFxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfml7blhYnmnLonID8gZ2V0SGVhZChyeCkgOiAn5pe25YWJ8J+QpScsXFxuICAgICAgICB1cmw6ICfml7blhYnmnLonICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIC8qXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL2NvbGxlY3Rpb24/Z3JvdXA94pGg6L+955WqJyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgIH0pO1xcbiAgICAqL1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJ+e0ouW8lScgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgd3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgKi9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+a8q+a4uCcgPyBnZXRIZWFkKHJ4KSA6ICfmvKvmuLgnLFxcbiAgICAgICAgdXJsOiAn5ryr5ri4JyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGdldFZhcignWVMnKSA9PSAn6ZqP5py6JyA/IGdldEhlYWQoJ+maj+acuicpIDogZ2V0SGVhZCgn6aqa57KJJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ1lTJywgZ2V0VmFyKCdZUycpPT0n6ZqP5py6Jz8n6aqa57KJJzon6ZqP5py6Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/popzoibItLScrZ2V0VmFyKCdZUycsJ+maj+acuicpXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZT09XFxcIuaWsOeJiFxcXCI/Z2V0SGVhZChcXFwi5paw54mIXFxcIik6XFxcIuaWsOeJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5paw54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBfdHlwZT09XFxcIuaXp+eJiFxcXCI/Z2V0SGVhZChcXFwi5pen54mIXFxcIik6XFxcIuaXp+eJiFxcXCIsXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/moLflvI8udHh0Jywn5pen54mIJyk7cmVmcmVzaFBhZ2UoKTtiYWNrKHRydWUpOyd0b2FzdDovL+WIh+aNouaIkOWKnyc7XFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICB9KTtcXG4gICAgXFxuICAgIGlmIChyeCAhPSAn5pe25YWJ5py6JyAmJiByeCAhPSAn57Si5byVJykge1xcblxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+iHquWumlVJRCcsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXG7kuI3nn6XpgZPmgI7kuYjmn6XvvJ9i56uZ54K55byA6Ieq5bex55qE5L+h5oGv77yM6ZW/5oyJdWlk5Y2z5Y+v77yM6K+35aGr5YWl57qv5pWw5a2XXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcIiwgXFxcImhpbnRcXFwiOiBcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6jueCuei1nuaKleW4gSlcXFxcbuS4jeefpemBk+aAjuS5iOaKk++8n+mCo+Wwseeul+S6hlxcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6Kej5p6Qa2V5JyxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFwidmFsdWVcXFwiOlxcXCJcXFwiLCBcXFwianNcXFwiOiBcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7op6PmnpApXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn5aSN5Yi254K56LWea2V5JyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJjb3B5Oi8vXFxcIitmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICflpI3liLbop6PmnpBrZXknLFxcbiAgICAgICAgICAgIHVybDogXFxcImNvcHk6Ly9cXFwiK2ZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfor4TorrrljLo6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InICsgZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ikaHmvKvmuLhcIixcInBhdGhcIjpcIm15XCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKFxcXCJObTA3d0laOFVkUXk0MVMzZ0N6SFpEMVo1ckxnRzEyVE40WEoxZWljdnc0Y2liSHY5NXpOR21CSHN1R1RJdmJVY2h5V1h3V01qd3FPakdhZk9aaHV1R0hiMWo5L0twVms4aXZ0eHFSdVVUMTVlZExSU2pabkFBRmZ6bDM1VmIzYWthdzAzaUYrMm43dzByb2xiOFk4YldwM05xUXE2M0ZISnhlM2JkNGx6ZFN2ZytYbTNqRVZaSXZrT1VQZzRBbzdUVGlSLzhVYTQzMVQxUjJlcmFUYmdOSEMvKzlyeFI4OGNlbjNPdlpWQ0NKM05GZStiNnNFbmZRSnFvK1lGbjBoMVl5UU5oV2xoZElnd0Nvb3Yxd05LdnpOYzVVNmw2TEpJRS80ZVpXMDc2eEF2dUdXN1ZpUnRkOTlObEszaGJyYzd3UGtWMStuM0FxTVB5TjAwOXpDTEVTZ0thWWpsbjhJOE1lNkFxUmtGU3V6VU1ETzNrY3JXbWlXNnd5R2ozODRnWjNEMWE1QjRlVnpUdGpyQ0tsa3RHeGVCdUhnWkhPSlFwUEtleFozV3hpYWJoNWJLc2JvVTZBRFcrNHZ2NlpUUG5tOHAva1ZKTFRqSGFMZDFoZlQrQWkxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL1NNRW5iRG54K2s0anc0WVNnbWc2NlJ6RnROZ1orTzZ6aUtYNk1QQmFVSEpPb2tUNGh0Vm9vMkZOYjEwa2FGeHJMYnl4VGNDQkkvUUt2K2t2R0tRMmJ2N3ZSc0ZhRU5rSEZrTFpOTE5EeDhuUDQ2MDNmL3A1ckpscTVJNHJicXZNdnJSMWZseGRlRXM4M2t0RHJlanFocFgySFlveDVYamVOZXBTV0FsU2VlZmdTUjF0azl3QjlyVUN2RDUxRkNRY0FPZGowZkl1bFp3aVgrTXpaRlg1ZmVUbmZrQUd1b3hKOHh5bTJmQzBpOUR4d1FFMmtkNmVwZktGSnNPSXZVdWJWYUwvYkQrSkdpWEhrTm9qNnVqNzVjbjgyVC94VSs1eTdNVlpybDNoWWM5bVhzZ09kcElOaC9KZ3VuZWFMbHovY3RmemtWRmFQU3ZhbUlrYUUzS3FFNVE0c3Z2Ui9FeUtsdkpJVTBVS3o5L3g4SVcrZThuVGdLLzIxWFExbUMxVjE5N1U1ZC9CRmVGcUJ4bTR3aUZIa0JFaVQ0a3dXQlN4QTBMZ3J1bCtzV21qazRka2JjTXBrV0M4QXJLOCtwYWVCQ2pPc01pVjQ0RHJUU0J6aWlkajNTWVFBL0ZMbmFtbjNNUUdYekx6Wi9YQWZ6azEycFpsL3FVMHIzL1NicDN5b25qNjNIOWNlU3FEUzEzY3pJVEpQMlk1N3FMTTgrdHBmTzBTRERvdW9CWk81RkJvcnBsZTBocnpTeXpBeG1sajFyWjM3eDlENFNHa1F0aGc1U2w5ZU1NU2FzWXhjUzVMMENlY0RUT3JMRmhVSHNVMlhLaG9OYmFMUWhjU3hEZFRhQm90ZkI0OFhFenVXaFU2WDFjYlBaWjVrOWFRbDNpNDFwdUFWQVM3dG9CcTJHNE9KZW45cVM4anBBekNieEN1QU5tam4velptbHovMlhqVjdiemRXenc2dUthalF0MlZ2aFZJSGpwTjNDMEVha0tHS0w3a2l1cFZOUzgvTExFNUU5SFlJWUl3YVJDMGVxRUFtZHp0a1E0NWVVcTBUeXlqLzQrV1RZM01tZmJEQnNXQTVXMXFLMVpsVWVYbHdsMWZPT1NmMEIwOCsybGxTSDdxSC9DQThSYXpVMWlwbUhTUElweHl3Kzl0enBvMHZKT1RPNHBRMThsaUNNb3hFb0xsWTVMNytkOWZ4UmlscDBSbzkvelcvUDczekNPQUJDRXMzRmN6d2p5MlVseUNTQjd6NGdQTTFKemxTbVJHWDNpTS8zeUZNN293d1F5RnI3N3pKSkt0cDBpdWcvbU43eGRiUkJuclFiMmIyL3BZUERXYkgveUlwT3VsMmlWaVhhZW1hMlZRczZxS20weE51Wk1xT3I4dFZxNzdVekdwK0ZZZmFUblhUR2tXS3hlZ0c1c2k0VzR3bjhhcTU1K2JQNkVCSlh4andUQURBeDhZUCtYa2lLMm5nRXRiZ1d1enBaaGlBWURFWEJzY3ZqWlppTG90Y0VCZ0lxSDd5ekV0cFpwMlk0K1lIb0ZRQnZUUWx6LyttOWRPMkxOYStRbzVLeXRZczVsbUsyMWNDVUdvZlAzUldSNTNMdnNzQTQzblhxSmtzMDdwWGdubzRhZTZPTG93TGowNVlBT1g1dFFkak54U29BdFpwTGhNdlNmMTQ0OTNncytjSEc0R0ZuWjY3VWhjQ3RvNWdITUNTR3ZOOWREZVg1SmRoQnJJNTZZVXFjb3d4aXFEaDYzMkVxN2xHaWp1dzNCYVAxSzN2b2hvN0E1Z3NzanN0TXVVb2FTU1VvS29XQUdCMmdhaHdqdStoVVM2bXJLRzNOdG1zZmhObFlvSjZ3aVJSRkd4Y0VNVVNCaDAzdjUyMGt5eWlmb3BnZ0JFRVA0dU1JbVUzS0JqVzlPREdlM2VoNE4yTTcxYlZYYnFpS1VWakpjVm42L3NRY1R3Z0pVaGR4OURzOG0rOXlZaTVZbXI0NzNIQ0o3UXVjMzBYS1E1enRXQ2lyMEcyTVB1TTZzRjFiMVlYWHNXMWsrenRQNGgxRXZBN3JHNHZobTZCLzVyR3orbE9URzNXY2pxOU1qdWdMUWVPM0dHNk10YWN2R0ZPSHdkUWJMMFhKVDA3UHMyZEFrdmRaTmp2ZlZiMVpOaW9wVjdOYStnK0xDUjJJZXZ1OGQ1RDBMQzRZdDhqdUFIdGkzUGx1T1hta1dtQ0ZiMDZFRFNFR3lPL1JVT0p0MVFtMlFDK0Rsb2lFcGVsQjFwT3VSSlFVVUZCc2xpVyt5YWovWGdFaTNuTkEzdVR3Sm5MS2dsYWNyUTFyWmNmcjhCc2hSemhxUWx0eGRiaFd4Zms4UUt2SWpKNExGMWFlbVVHQi9qZTNadG94aDN0TXR4T0pDZkIwcWVVakhVbHltc2NxeXlHb1NaS09qeER5dkM5K0d3YWNkRzRmVWtOeU9rdFBQTXlicy9acm1YUEllVnF5QnhvbnZPWE0vYkRicHowcnA4RzFaZUkwclNvUmx2MTF2V05zUGdyNnN5bnpkSFlCYTh6UFdJbGdWMFowaDlITk1tdkxsVlBNdnczZSsvZ1hGMGZMS2hzOWg0alRIa3ozRXI5anU0RW1FbkZxT2Z1Y0cvU0NDczkwTnRrb0tTLzV0U3IvMC9lMkhxbnhSTFREKzE3UTBsWm52Ym41ZnkrNEdqUkRPNUxKV2Z4Zld1S1VrK2JRNUwxY3ltWjkxeC84MjJlRTVhb0dyVWU3angvUWRGREJYbDdKS3RKWFlCeG1FVmFSSVA0Q3hBTUZxemRPeWVWU3Z0dWt3RnY3R3QwVjFWamk3WG9DLzN3U0pGUjYzYW0zTTRaWUV6QWNXb2xTRXZic1cvc2EzUlhWV09MdGVnTC9mQklrVkhvU05SaGJSUEVFNmk2QnNVRDdxS0NpMS9lZ0pUakYwSjRLTjdQUmhHeTdiVElPVHUrWWEvZjlMYWRYMUE4YkxzWXN4bFRiTnFWbzZKelBaYXBpY05jQ2RIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZN3J0bXRQQWFYNHVKc05nYUIwQlRseHNsQzFPb0prRWxON0dicDFyQmN0R3VVdzdwTCtSSU9UUWtDWWwrYTBVbjJlbW9Id051YnFGK0pkNWNPMnB3VW96MDNqWms4VTNtV0dtaklyY2NqTXhBZS9ydHd5c1A2M2I2aUc3TTd2THBPbnhWM3h2Q3lkS1R3bVRkaTBsNkMwejNvNXRxeTJwa2w3dWoxOERWZVZDWEM0Vkc1NkYrdlA4RTlWRU1BbC96Q2NqSTJxbXFsdWE3K2gzYnJsSGc3OThBUm00YmRNUE9tZnlkbVRHQjBmN2hxelp2MTRCMy9jV1lyYWR3TzRlcjE5WmJmVlkrdjlQSllyNldPVTYyaUhSajZYK1NLdHRQV1IrbFlJMDNpdE1yOER2RjZ4R0MreHAraFcrdi96LzlmcmM4MUljR01JU2U4TUhUV2lYakEzUGhPUStld0g2bmZSZUVOVFBWYUJxckN0a2huTmRpYzhVMmhjMWN3bEZMejdmb0xlWXl5TzhpZWRYZUZXT08rcVg3ano5dW5oSXhhbEJpTUl2c0c3SlA5NGRkanozbjhmTVRiNU1QQm9YNUZjYWY0WkJTd1hkOTg0NG9CMEIxcW9wRUtTYkJxWnhWOVlRK3dwamludkx2djhvQ1N2MjZhWVRzdkViWHNUZStNNEFDWDB0a1VsckE2aTA0WjV5NnBhbG9aWU5tOHBEVHNKcmswam05NTQvWTg2cEMrZ3ExdVNkVERrWjZZWnIrS25ISDM2ZFJybU5hWWxUTEpENnZWUzcyS1Zrb3kvOVliNFVaUi9oVGlUTlVvSGlFYy9qaDVweWk1di9sZ2oydE8xUklndFhFdWNwOFhiZmlEQkh6a0xaVjdOYStnK0xDUjJJZXZ1OGQ1RDBKTXl4YTROODdIT1IxZkh6RVdONW5McGNhRnhuWUkrdTRmbXdHa051QWE4eTYrV29XWnFVUlJ1SmZ4Y0FvTC9JblI4dFIyNHBES1FMd09oVDhEdHJxeWk3ZmNXbHY0b0dZTXpxbEFhU25aOEV2cjFZT3VidFVESGhGVUxqWFk1K08rd3VxeitjellZTS9GTkpHVVJLSFpjaThEZkx5UEhFTzhWZTA4bmhIbHNZeFlPYXBhakEvZ0JPY3B4RDFHMG1CZUFhNzZxMEljekNTc1I2NWJ4TXQwWVZjbmo4bXB0N28rcTJSNEFtTkprVkU0ZTVMbFlJUmlDdUdMR1l0ZDFPdmo3NTB6Ty9uaVJ4MnNxcmlNYWdVb04zQnZFYXZrbGNIWkpxOTY3SEtIUkpTZUxaV1QyOTJZRy9jbDNZM2V5eDExNkVONGQyL2hmKzc0ZVVFNmxxemsvZWcrWlNoMXk2Ukl0N0pGbHVLY1hldXhaV0l3ZHFxWTlOODAvc2tKZ1l1cHpMMjRsbElvQ2hncDhjd2dDc2RtZlVDOS82bllES0k2eWJ1K3ZBblRZV2M2S21JQXhTS3VzcnRrVUYxWUFRMDl3YXBmSmZmWlZxOGxQNjlnekhtMklrdjlrR3V1SE9VOVlZSHFDSGpWNytLcUlKdzFyZVZ1LzZucDJ1NnYwa0ErcDFzNnMwWFVoS2hZZ29NMlBDUk1zTkFyZnFhL1FHL2pmbHQ5TEhaTVd3aTE1QmNtR1ZEcUZIUkF4T3c3REJpMjNqSGxxYXM0bDZvM29TSVV4NEUveUFmWUh1c2NsWVAwWkwyT2tKOGI5TURJZFdZMnFxR09qcTNocllaLzVNZkx4V0tzSTJtL1hzL2EyTHhVVVEybVBLZXJreGo3L0xnV29IMEpDREI4TXU5bHZ5ME1JU05YR2V1eU9NK3ZHRm5lY3V6RG03TVFPQ0V1bXRiV1JYRm0vY2ZiTVRlWlI1V3RpUzNKTHhXU25xa1E0NlAvTUhidzB5WS9IdEdVZ1lDVC9MY1JvQjFiSThPam1JQjdSZGNHZUxhS1JDbEYwN3NqRzJUMytPYUZJVWw4V3NmQ1RwQXlRTUNRSGdNb1NDbWc2V0VtRno0dFVkbTVBdUpSMVBaTDVLU0pMUEZ1K1cxT2RHWWw4WGNIa2VqNkZTNzZMQVhwczk4Njg3aEEvbXVsYm1YWUtZVzNZWGRuNmxEQ2s3azNFeVRjRW5XWUhsaExkMWIzZW84ZFBqdE5MZ3lSRzFNNG5GaUp0MHVhZTZJcXVkMUxzN0FKdU4xS3lVWkl5Qmx3dS9qNXF2THF4blJsa3ZhYm5WRk5hM05JcndsL2V6V3E2VnZnbWJjQ2lwaStYM0c5ZTFOMmpyQ2czSlpWeTk3WFVQYVZsTzUxbFFlQi9GQkV4dWFXMVlHbzlKd1ZoeGtRWWZjUDRjbUNFTnppd2NmSGRVeExSYmMwcXFvdERhb1h3L0JzSlNnaUVKRm42cjlDTDRBbWN1citiUVZVOHorSVNQMlRRQldXdDJpN2RxbHB4R0FZdzNQY0hLU25FdXp6UFpVNHg1MkRXZXBFTmlsbkRaUFd2aXhiNjFqYkpHa0QveFdYUnc3NEVCakVib2I5MmRQSW1WWExPdWVCSkh2N1dHS0Q4VzFDeEZPQzkxaGptT0FLU1RIZXRnTTlGREQ5N0hHdGdqOXF6NTJsOTJ1dlJrQU1kWFBjQStsT0JLRkVDTFhrRnlZWlVPb1VkRURFN0RzTUdMcERYS09EZk9UejFmRXQ0bzVVd0NBZXRUbWVnRzlrSzVSbjdWR25kVzFXNVpLRkxVbW96Z1RLd25XM2RkNkhLcnBvM1BiSXRQZHVTZmx4NUpoS1FlK0ZxTGdvVktEbXY0a2Y3aDMxS3JWVHI0TVgzYU9lSmlSZ1BuMEIydVRNckVEd3ZBT1EwdlIveGFEYUNHWjBPTDVVMndtNkF4d09DZ2NOczVIbk05YWVpS1hTcWpKME96NmlXbnFnN0ttMHBpMWRVSzk2VnFvZ2hSNXVndDYrZHRjVlZFM2VOdytodnVHcVlhUkMrT3ZhRXhwcWR4cEhJRTd2N3dFQUxEQmpGWnhWME9ONHU5dHhmM1ppUVc0eU9rNzZvUnQ4WGVSMnk5dzdCOSt3WlpUOStKOE9GUC83aWVNMzdtbVJUSWNHbjVFVTYvNEd1MXJDdEZYOVRTc1g4YlhhclBEQzd1MFcvOUQ4RDhjTlhDZW9jTld3eFNJQUhBSmlIUTlxR2s0bXZBVlB0Zno1WS9KQ2hJM0J3dG1Gb252ZVlCTjV3YWhLdkNzUTQ3NmtDclYxTytKTi9OSVl1V05IczFRT0pNeTFNaXZ5SFZjSHZIUTFnNzFwWDN6MGxHVWV0VG1lZ0c5a0s1Um43VkduZFcxV1pQd1FtOEJZZEs4a3NCQ3A3Ny90RVN3ekpYdmYzQW56anZPR0pXdTZFdTBMejJNejhKYTFQM0haL3dkbG1RK0g0cVlRRlp3QVJJaUhJaEtFU3RoRXltL1N4ZlhDajY0eU44YjRZWjdrZW5rVnNndWxqcUhZQzVoajl6ay9NaWZxc2dMemhWS3ErYWpNYkRWaTNhQnRHdDcwd2lZbkJ3RWNVMU10S2J3UXorVDZUZ1RvbTZMMy9CdlpZT1NKSkF2TVlaZHZHTGRwWnFxZEhsbElwRngySnU0clp0enhuTDNkaDdtc29aanRTYkdTWEpOdzhqRUlROGZlMHhlcUJaRk8yekRlb0pXS1ZBcUdOeEpMRXFLSVdBZE1QRnFJdUhoWlJZbW9BemJZR0NIbHNyaVg5cVJOdUhya2I1TUgrM3VaeStKM0gwTkRxL0lQSzRKaktwWnU3b210S0xGVzF2ZDdkaStiN29Wa1hXMnhMMU1jL2xDSjgvYUVPN1QwWDdjT20wUTF6cUo3RnJQU1podHJDb1lybDdoMXEvbFZyT3FqMlZ6dGVSSXEzTE5wWENVejJZV040eHdTQk80Vk9GK3UwTllaMGZXaCs4VjVTaWZJL01BbVZuaUNUaGQxZWNrVXhCSUY3dHoxU1NYMGxGNjJPVERiNU9CL0VEYi95Qm5pRHJRTkNvQno3NjkyOGV4d0ZQRzVGc3BTcVgydExwV1psOVZ1RytkckRyOHZjZEdyalV6ckZ6ZnZvRkxHWEFDYk5XRjNPS1huWVlZT1VTTUEzaHR3cVZ3ZG5QeTVHL21NOCtOY2NXY25mZ25haWdRcWJqc2pLdDJzcy9kbHlnMHRCRkI1a3VRTW1YL1RGOElFbWxkYlVrWXZ5MTFSYXRQeTBHYkVjSGtnZmFjSnQzeld1Ump3QlNiQUhRQVhNTk9uUmhYTkNWc2UrQmtSWkdaNGw4QUZWWkJ4UXUwRmtwV3I2KytiWHJ5TUxFaEtkMGducTRYdS9LQVA1Ym5WSUFxZHFnVmZuOUkzN2hQTG5uMUFPZVN1NFNRMkNlUytXMkRYOGoyZFBXbHFaTURRTzhqc3pQcmEvc0ZZRFpDQXFZUmc4UGtNQ3ZLR1dlUmcwemR2dkNUSEdGdDd1QUxJb0hMTXlkbTYva0lnRXd3cUJXUTJwazNnZFNFY1NyZ0ZUNWZMMXAxQUtSd2JXY01NVExEdVpsQ3dwRklINXNMVkdPWmJmVStPQ01PazUwUFlUMFVKWUpPZzJSS2h3cWNDaURYVDJIL2l5QjRMakhmMDlCeGZ4WDJFQ0h5N0hPT1M1ZnI4NUxLM21zUjNPK0lxbENsL1VoemNMVXlwL0UxMGVZRWNDTUhIV2p4d2JINVhJYk5YRVorN1ZiR1VxTnVkSWpQRE9EN2VlSkEvWWgyWmZUZHhCWlVEWW9HSlVmbFUzc0RvUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1VHlucTVNWSsveTRGcUI5Q1Fnd2ZETExLOHRJMWxaeit3aWYrOVpJQWRUMklIUDVLWWdUWFM1US9TV0NPYm9rbllaK1RCRngxbWVzSEdxYXFnaklYREh4VHJUdS9iQXFHZUVsbnpkOGxobXUvYXR6TjhGSUNNM2lReEIyNEJwZEdFKzYzKzBPbzQ5ZUxYWEs3ak5YZmVmRno0OGJodGpYY0IvbGthNkNpMnFHcVIveXhSVm9EZUpJMWdERnJrcWd3aVNiaUhmMmhsUUNxdjRQcXpGWUpDa0Z3cE51b3J4V1lFL0ZJb1hJTWd6U0NTaFlycjVKbTZiODNEbjh3REVUb1YzQXI2YVorZXVJdzlnNzIrbEtBM0hMSzh0STFsWnord2lmKzlaSUFkVDJha0hYZ0paTXl4d2IrQUZGNGI0bWJac3pqMnJOZUtQM0FuNmtSQjBNYXkzT2xETDdEdnp6c09RbksrL2JDYzRudy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdkYzMTJCSmk4ZVg0U2N0TkRCd3dFNDZLNjRPQVlJMHdnV0dSb2o1WmJwUUlOVkFOR2JHTUQxWVFscGNvL3IzQTNieG9TcXl5SThtdGRjZ2FkaXpMY3pkd3ZzTXJhU2lhQ1Naa0pMbjhZTUZ2S0Q0Y3RncEZ0WjR1OWZzQ2wvQk91Sko1UldDcHRHRmFSUnkwSWZ1WVFFb0UxZTZYUnFBNTdha2doSnlhd2NvS2xTTTVKMWhNeVJNaXI0QTBsVEpDV25JUTF4NXdDK1Q2T2tPMzl5bThrbzFWOGU1MEp6Y2tEeEl3ayt2WGJrWGJFcHgyeks4ZGd0R294S1RnR1dqN3VGZ3U2NVk4SnJhOFdVeDFjVXhMUVl6dkQ0UkhJR1hGOHBMRnJ1WUJZc0V1c3dmWlRPVitjWWlSUDUwc1VlM0NIYnhvU3F5eUk4bXRkY2dhZGl6TGN4eE1kWWovRkpncFQ3RmFNM2hsb05OMCtnMmxEVWN5Z1BOZTd0SFEyU3U4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnlXd25SWk5Mb0hvOXhaVzVndkFNVmc0S2xReGMwNDQ1TkMyRXVGbUhIcEh4dkNMaVhrcW1JM0d5ejE5cGdkWk9HUm1QSGdtN0VSbDR5cVdTMjhoTU5JSEloMWpyYTNBcFl6OTdNZy9ESFhJS1pBRGw4NlVWdy8zMjA1WVJSUE9VWVJYckcxZUZ5VnhMOFREQ294NmNJZ1Uvb2dUTVF3SUN0RDMvVEh6S3BEbi8yN2I0NlFNQW9OUDJLbHJUK2RvT2ZOTE9VVWxqbFd0S2tqRm8reFlnRXkxRzlqa1RQVGRBdEcrN3c1Qko0dDUrQVR5VDBDVkl2b0lpVEZsWjNoSmtiM3dPS2RzaEE4QkhpdTZSd3FHeS9GdTYyVkdvZE05WEpiQmsxbS9QU1J3YldyOGJJOUgzM3I4TmhXVTFvcVFJcXcvM0tOa3NCc0lpMlJ3dVE5Rk5SUU9KYlo1c0d6K1hxVzBkWHNVV1lWbjF2NmhZZ3BVUU9nVlZSS1ZjNEtpU1M4c0dvRXBiQVN0UFQxdVJvRzc0OFh2cXRVNUQxTndKVzdhb3JKSk1JQ3F1UVVmdUpVYnMzeE9SUXlrVzk0VXloMmRXVTJwanYxVjI3TjRabGYxR0lDeTZkckZ0YURnNnhia2oyTGQrRE1DTzdqaDhNZ3FZV3dlbUFub2NKSFhSMFNjZUNqSEc5WFdERW93c01nc2RNWm92QXN4YzVBREpBL1Zad3EreGlvdkY2VytYdWx0anVpQjFHWHNHQUYvUExLOHRJMWxaeit3aWYrOVpJQWRUMjFCT1dlYTMxYnZRY1FPRGMrajUwVy9ya3ZHbXFsa3BYMlVFTjNrb2ZYMzRyU2tYd1ozc250NklSY1psOUhHdlVqcVV3S3Rsck5OQVdyQU9wdHdoVDhCbzJralZJR0U2bGREQjA1OW4yekZCTXJHb3J6THEwQ2pubmRXNU5EMFNReWR0cW1ieGV1K0N6d2l0MEJMekpCemVnYTRxN3NGUkdJZEtlRzRnTTZGRGZiakI0TUU0MEpIR3JwL2FhVW5adnNqemRodFo0ak52LzdBTC94NlE5dGgxR2tGWTdiWUljMldFdFhYYVhKV2g5TStxY1Jra2NKa0FoZGVqSHlaakZiTjJudGRpTXN5SEpMWjlVV2F0YVdTOXgwYXVOVE9zWE4rK2dVc1pjQUp0Mk44RFVuYmIxTTdKSWlzQlhvd3BVWXVXbCthL09FSDdyTTJJaGQrYTJac3NyeTBqV1ZuUDdDSi83MWtnQjFQWXdpSDBmUm5DenZsYmhjY0lkSVBORUc2VlJLVzNKTWwxSkNIMEo2dkRsbXZoNUoxeURGbWhiQW1YcXVWMEJvcno4U3d0S3dMdEdxK1BQaitOZnNnMXBaQ21COFJidUlHOHhId0ZGTjZtY2xjS0dmMjg3RTdpeWNIZmJFOXkrVUlDaUhhZGtnK295aVcwU3N2bk5DTmVmRzNhOTQzVXEvbEMrSnROUlJpM0tZSWpETnU4aWFwRno5cHMvYmViSSthRExLOHRJMWxaeit3aWYrOVpJQWRUMnovbHJBME5KZGVmUEdHSE9jdGI4bGlzZmNIelZEUUFobmVjWldGamRBYVI3a3gvT2ZOWkd6b0JEcHl3eVk2SUV0V1hJbUFITUkrbXk5SVVlVHFSQ0puNUt5TW1DRlVWbk1xTXFVeDBqT0I0dFJJUEVYa2h3WlBvNFlNVVJjRGhJNnlhZXArQ3FxMnVFTm9wZzBEenhUNXJMeDhXcHZUcE5QQ09ZU1dKbTZjMmhoQVlHT1o3Nk9VQXBONXNEeVRCQldNa3hZTlFTb3hxOXdVUktPR3IzSXNzcnkwaldWblA3Q0ovNzFrZ0IxUGJWZFBtNmg0KzhWME4xVm5mcDRubkRmRzhJdUplU3FZamNiTFBYMm1CMWs1RG8wazVxUU1nT0ZYb0RqQ2JkZW5CZFh2RmZyM3VLUnc3eE9EMVp6TFAzUklEaUtVVGpWRE9hMGIzMHJOdnU5c3NyeTBqV1ZuUDdDSi83MWtnQjFQYjVSNU8zOTZKMjJGeGtiUWJrWFhDcDUxMFRKTUUyK0l4aG1ZUTFEUExxTGNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3BUZklGMFpYMjB3S3lxdWUzZVczWlVKMEErWFVCV3dFTThCcGZrTVU2S2lMMldwck4xblU2SlRxb0lBQ1IxQ0NVeU0rcUNJcExpMkNtWmdUeGQ1dmRDQVFxOWJZSlJaV0Q5dzBKSzVSeUVnMEMzZVZZZ2J0OTRWRER3QTByeUprTkwrdnBmQnNPN2RSanVSMzZmaW8rc0hRalVveW8wTjZaZGxCamVvaTVRSGlweU4vbTB3TnhoYVZGWEtzMTZUdG50U3dtR3V1dWxzL0xHbURwT0IxWVhWQkRlOVZ3ZHkrSlpEVGNoOXNUWnVLNXNxZ0dCWmtIcHU4K2c5UnVZaVQzQngvZ1V4WkpreDBtNEF2WUtvOTdBWkhrZGJQN2hXMFplOFplTzBiakluUnRJUy8rMS85b3ArL1h3SkhFNW5DWWliTjdlamtiSUdUZGxieWo1NEJWckxtU1Rhc2svZXNYUVJLZzUxSDlySElVeW1VUXJGTGtPb2F1YStVbTZaUzRuN3Z6M1VsOVlGa1RheVBlOEN2SVBLV281RkhaS3hlV1pRdnZja3RIT0xpQWpyNVZLVEVaSUZKdmo4RWVKLzNCRkdUVGtSTGlsVEF4TFExTTc2K0VLZWVXSjJGT1RaMGo1S0FtTFFjM2o0YjBVeGhzUXhna2FxU3kzWjk1a0l0QUlESno5TklUTnBEc0dObnlWem51OXAwclNUZmJjS2pPWFlXbmZYYnMzYXZzM3RZalgwSXZkMmpJNkkvMTcxZkFXUjlUWnR5U1JKVkdzR2I5eHYvbXhKUGc0TnFtMmNPZ0xCS1RFVDc4UitGVHpJT2R1a0RhUUlhamd4aVBtN3A4TktES1BENlJhcUFxWnBSVDZsc2hCZFVSeDZxUjZxSFpaVStReEVFRGRQb2Z6RTJTQVFhQnRhSG5NWUJtMWVic0o1SysxeVMzb3VRY1ZmdlRIMXJZT1BaYW1zM1dkVG9sT3FnZ0FKSFVJSlM0T1ZQZGdscVdGOTZZYStOSUY1Zy9jSGNLYTdpWm9IN01hNTQyMDVGbGhmcU9EeUZ0c3R2UE52bE9lcDZQMlhUMldwck4xblU2SlRxb0lBQ1IxQ0NVTjc3c1A5YmJxN3BGN0hUSUh5dnBRS0pzS0QvNXhkdzdQQmp2aUxwVFZOVzJudmFKa3lLQXZmVnlhTDY0Z3JZQnI4Nm9pTk9jU0picEpBMFJiclI4ZU9JYllyclVwWFhuSGhLZGVKZEhQc3YvUm9WVXBPa05IcDJ5MXM1VHFkWWtQKzUvNlZVZEc0VUJvMG41UExWNFZIck9sVHZUK1NoK0Z6SUtsam5GZEhBRW9XRTBkMC9pL29RL3BwUGZoVWJtVGFmZGJBTkZ5REI2UGZkcitCR040MXFnWThmQ2JsRTFSKzNQNytGQ2xNUEw1bjdPSFNWWksyczZRNjB4S1BNNjA1VDVOVXp3OTBvbUZLOVNGbTdoREZSTHJSTk9iR2dpRk9oN0VvQkNaMTVoVWRlWWNHWjN2dVlxcnlRcHZNRXZJUWNTWlRUcjl4eGdnTlp3Vnd4d3RaSzNPaFFRMVhYRjl3YWRsajVBaHExOVREZGE3Q1lDVHNrWHlMMjV3Zm96YmZ2NE5tZlJNaTJPNDBZNTJSaWwvZFM0dGJ0M3dkVXYrajBscERBb3NuZ1QwSnIxanB6S0VNSDdWS2FHWGpqU0lnOGpkUm9vVnRDbmxZRDJtb3FROVB3eWtnaVVGUlRLZ1BhSG9Md2hjdnYyV3ByTjFuVTZKVHFvSUFDUjFDQ1VsY2FSY2FCdTdYNXptSmxDSjVIandxOHllYzJPV0hWNURLRFpZWk1UaUZKYzRHTjN0dUovNWpnQk9kQVhQeWRGOWxxYXpkWjFPaVU2cUNBQWtkUWdsRThROUVLRnRkWEFRRi90ZHlRR0ZZVmRldWllUHp1NXNiUVRSdURjRXl5SDRQb0dlNCtCeXpwdGNJTWVHRW9YOEpud0JwYVhtTkRVTGJOQWtWUkQ1LzlnejNNRWRwQmlzaGVoeFRoSGM1VmU3aC9iT2gyeHVpbUNBWkVVNjhtQzJIeEpiaTdtZWRadFduUUtOZkV4Z0tOUmhYRVVtb0Y1VDFpc1NxQUpEWjJaamhYREYwbDVheWZsS1J0c2tHQlQ4NklBK0tmcGVoOGgxcHhWVlRyNS96RDIyRTFpdHhPMzVQM3IyQXlEKzdXUTRNS1l0c3YxSHdEWlJabDBwV3VLQTN0dG1UTllnUzh6Sk91Yzc2dWZBNUJCMUE0K0UwWWNDbXVlL2xqOHBHVmV1TTMzVFpQSUtqTXBSdTlwVkhQMlRxR1pMd1NjLzB6ejlScmZSRzlKZndxNXNncktxZnFiTE5SM1I4Q2F0OEJQeVlBUHFlcXlrZ3VDY0FwZVEvWHRIdUZQVWt6ZVQzVkVnWCswMUh3Um9Yb1MrYitmbmxVRWhjOEU4VkxFQlJVd1M4UktUTDNHcDFmckZPNkMxb3g2OE1PcWpmcDk4c2NFOHNSVm12YzZqWDUwRXlRN3J5eWl1Z2NhTGxic25uRE05bHFhemRaMU9pVTZxQ0FBa2RRZ2xJR3BMaEtsRzFrOHhpeHhja2RQZ1J3TTlza2d3VDNGMmJ0ak0xNjFLMGw4eXl2TFNOWldjL3NJbi92V1NBSFU5cHJRaGpVditxNmw1d25pU21qUlRTc0Mrd2dIY24yc2lvWGd0K29hTXp0Mnl5dkxTTlpXYy9zSW4vdldTQUhVOWhQYkpmQldtd3RNZG9QSFBvVjdlalNwVys3aE9wYTNWSCtCbldpemhjRjZ5eXZMU05aV2Mvc0luL3ZXU0FIVTl1QTlDU1cvcEZpNUxKakY1Q29qRkVCc240dDdCVGZiYlpwU3huWHlxOHNFenBReSt3Nzg4N0RrSnl2djJ3bk9KOHNyeTBqV1ZuUDdDSi83MWtnQjFQWTAwUFZ2b00yZlc4THhObUpaajVmVXl5dkxTTlpXYy9zSW4vdldTQUhVOXNzcnkwaldWblA3Q0ovNzFrZ0IxUGFUbmlyU1JsOTJaMU1NV25LcVByVm1xaHRNck5INWM1bCs3NXU0VkVuVWsxUUl6WTF4dVhHa0dWWDE5ZHVaR2NyTEs4dEkxbFp6K3dpZis5WklBZFQyeXl2TFNOWldjL3NJbi92V1NBSFU5bkMrZjNYM2pGV2tJblV2WnVGK1FUVUVRU2tFeThvcGpvcW9mSm1iekRtM0FXQ2pBRTNvS29EVHN6QXVPSjgwKzhzcnkwaldWblA3Q0ovNzFrZ0IxUGFyVG1ZbTdvT1oxcnhsMFRJMXFKZE9obmFGblAybG9BRDNybkpFSkZQb1ZNc3J5MGpXVm5QN0NKLzcxa2dCMVBiS3VnRml4NTIxM0dwQ08rOFhWeVFFYldRMEFCU2lpMzQxT0pTN2o5WkJ0WmlDdlZUUTFObzNXcGhSMUx3TVp5ak43Q3dBeWhMQTNGMWdJQ0xSOUxJQnl5dkxTTlpXYy9zSW4vdldTQUhVOXZJd3dRMVZIUnEwL1lGMi9YZW50cVBMSzh0STFsWnord2lmKzlaSUFkVDJudUVNWXA5bW9ySmZhakJFRktlNXNGZjNWL0pIRmsxa0FkNERsMS9RMTVYVnlIT3VYZkhacmFQczAxL3RSQVU1akZnNXFscU1EK0FFNXluRVBVYlNZTXNyeTBqV1ZuUDdDSi83MWtnQjFQYUZSRUFzeDl4a3RJMXJ4V2hMTlpRQXpwUXkrdzc4ODdEa0p5dnYyd25PSjduaEgwSTZxdlhMejlGQzlZR1hXMzV2dE1EQ3JIRmJ6bGxlSUIyY2VFV3d5eXZMU05aV2Mvc0luL3ZXU0FIVTlsLzZ2aklOUkFJWDY0ZTNNd3lCK2EvaTNwTHZyWmgyWWpYT0xFekRvTXN6eXl2TFNOWldjL3NJbi92V1NBSFU5dGhHRVJ2ZlBGTHdOUkRWWmF6UTNZN0NBUWJtd0dsREVBZk9peXF0cUxROVFYaHdWQzJwNE9xOHZ2M1VWZVRkeE1JQkJ1YkFhVU1RQjg2TEtxMm90RDNpeVBmV0t3UVFkYWFLRkE4Rzdta01BYVB1cUd4N25TQ215d293OU1QZzMzbXh1YkFhVFA5MThGU0h6WGFRMVBqc01YbXd4NzFRN3dnNEFkby9mYnJoek9XZDZPOFRSenRVZTE4MEwycTk2RWxVV3U2bURPY0ZobHp6SmtOd3ZzSlNBNU4yb0RvVmZXYWFpbUZMbDJKZEhvM0RXRlBFMFR0eWxuWFBGblBpUityNnlFSTJrY0ZPWmJoMHh1RzlTWS9BTVJiQUgwNUpZa2lrdTR6VjZMd1NXSXVmRllmNElXeUVyTzJoUXJhWDFkY2dIR2tBcmhMajJxUUE2bDJBVW1BcHNPNGljc1RzQUxvWE1oNjhFQkpRYnQyaTA2ZzF2T2tMaEIxWHoxMytXQ1ErNFM3T05aWlRyWWRpWHlQZTRRMk9UL2ZJclAwdE56OWhXVGRDUmFvTUVVRjlHNXIyM0t4Ky83T041SUNiR2dVNENXbEwzNDVwa2sxczJyQW5iWHpFT1VsVkVRTVl1a3BnT2NrVVl1QnhLRWFkeURSMlhOdllIUFRVU0o2Y1ZRPT1cXFwiKVwifV0iLCJpY29uIjoiaHR0cHM6Ly93d3cuaGVsbG9pbWcuY29tL2ltYWdlcy8yMDIyLzA0LzA1L1JtdEdTei5naWYiLCJwcm94eSI6IiJ9
Add Comment
Please, Sign In to add comment