Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 海阔视界规则分享,当前分享的是:二级页面详情¥page_detail¥UP-兔子为什么不吃窝边草?调皮同学把老师气得扔鞋子!笑...@@eyJkYXRhIjoie1wiYXNzb2NpYXRlZE1vZGVsc01hcEZvckpvaW5UYWJsZVwiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhGS1wiOnt9LFwiYXNzb2NpYXRlZE1vZGVsc01hcFdpdGhvdXRGS1wiOnt9LFwiZmllbGRzVG9TZXRUb0RlZmF1bHRcIjpbXSxcImlkXCI6MCxcImxhc3RfY2hhcHRlcl9ydWxlXCI6XCJqczpcXG5sZXQgaHRtbCA9IGdldFJlc0NvZGUoKVxcbi8vIGxvZyhodG1sKVxcbmxldCByZWdleCA9IC93aW5kb3dcXFxcLl9fSU5JVElBTF9TVEFURV9fPSguKj8pO1xcXFwoZnVuY3Rpb25cXFxcKFxcXFwpXFxcXHsvXFxuLy8gbG9nKE1ZX1VSTClcXG5pZihNWV9VUkwuc3RhcnRzV2l0aCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbCcpKSB7XFxuICAgIGxldCBjb2RlID0gSlNPTi5wYXJzZShodG1sKVxcbiAgICB0cnkge1xcbiAgICAgICAgaWYgKGNvZGUuZGF0YS5WaWV3WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICAgICAgICAgIE1ZX1VSTCA9IGNvZGUuZGF0YS5WaWV3WydyZWRpcmVjdF91cmwnXTtcXG4gICAgICAgICAgICBodG1sID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGxvZyAoZS5tZXNzYWdlKVxcbiAgICB9XFxufVxcbi8vIGxvZyhodG1sKVxcbmlmIChNWV9VUkwuc3RhcnRzV2l0aCgnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS8nKSAmJiByZWdleC50ZXN0KGh0bWwpKSB7XFxuICAgIC8vIOeVquWJp1xcbiAgICAvLyBsb2coJ+WMuemFje+8micgKyBSZWdFeHAuJDEpXFxuICAgIGxldCByZXMgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5uZXdlc3RFcFxcbiAgICBpZighcmVzdWx0KSB7XFxuICAgICAgICByZXN1bHQgPSByZXMubWVkaWFJbmZvLm5ld19lcFxcbiAgICB9XFxuICAgIHNldFJlc3VsdChcXFwi5pu05paw6Iez77ya56ysXFxcIiArIHJlc3VsdC50aXRsZSArIFxcXCLor51cXFwiKVxcbn0gZWxzZSBpZiAoTVlfVVJMLnN0YXJ0c1dpdGgoJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2gnKSkge1xcbiAgICAvLyBVUCDkuLtcXG4gICAgbGV0IHJlcyA9IEpTT04ucGFyc2UoaHRtbClcXG4gICAgbGV0IHJlc3VsdCA9IHJlcy5kYXRhLmxpc3Qudmxpc3RbMF0udGl0bGVcXG4gICAgc2V0UmVzdWx0KFxcXCLmm7TmlrDoh7PvvJpcXFwiICsgcmVzdWx0KVxcbn0gZWxzZSB7XFxuICAgIHNldFJlc3VsdChcXFwiXFxcIilcXG59XCIsXCJsaXN0VG9DbGVhckFzc29jaWF0ZWRGS1wiOltdLFwibGlzdFRvQ2xlYXJTZWxmRktcIjpbXSxcInBhZ2VMaXN0XCI6W3tcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnXCIsXCJwYXRoXCI6XCJjb21tb25cIixcInJ1bGVcIjpcInZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdXJsOiAkKFxcXCLmm7TlpJpcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgLy9waWNfdXJsOiAnaHR0cHM6Ly9pbWcwLmJhaWR1LmNvbS9pdC91PTE2MTIxMDE0MjMsMTE0NTk4MjE2MyZmbT0yNTMmYXBwPTEzOCZmPUpQRUc/dz01MDAmaD00MjQnLFxcbiAgICAgICAgLy9pbWc6XFxcImh0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzBiZmNjYTM4ZDAxN2JhN2M2ZmFlY2ZlNzc1MDJkMjNlLmdpZlxcXCIsXFxuICAgICAgICBpbWc6XFxcImh0dHBzOi8vd3d3LmhlbGxvaW1nLmNvbS9pbWFnZXMvMjAyMi8wMy8wMS9HWVB5YUEuanBnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnY2FyZF9waWNfMScsXFxuICAgICAgICBkZXNjOlxcXCIwXFxcIlxcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5o6S6KGM5qacJyxcXG4gICAgICAgIHVybDogJChcXFwi5o6S6KGM5qacXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS81MC5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfnm7Tmkq0nLFxcbiAgICAgICAgdXJsOiAkKFxcXCLnm7Tmkq1cXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIyLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+aXtuWFieacuicsXFxuICAgICAgICB1cmw6ICQoXFxcIuaXtuWFieaculxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTYucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAnVVAnLFxcbiAgICAgICAgdXJsOiAkKFxcXCJVUOS4u1xcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvOTgucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn57Si5byVJyxcXG4gICAgICAgIHVybDogJChcXFwi57Si5byVXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFwiLCBpbnB1dCk7XFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFwiO1xcbiAgICAgICAgfSwgKSxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS80Ny5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfmlrDnlaonLFxcbiAgICAgICAgdXJsOiAkKFxcXCLmlrDnlapcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsIGlucHV0KTtcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXCI7XFxuICAgICAgICB9LCApLFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIzLnBuZycsXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogJ+a8q+a4uCcsXFxuICAgICAgICB1cmw6ICQoXFxcIua8q+a4uFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIiwgaW5wdXQpO1xcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcIjtcXG4gICAgICAgIH0sICksXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvODMucG5nJyxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcbiAgICB9KTtcXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXG4gICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9uZXdsb2dpbicsXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvMi5wbmcnLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxuICAgIH0pO1xcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcInBpY18xX2NhcmRcIixcIm5hbWVcIjpcIuS7o+eggS3mjpLooYzmppxcIixcInBhdGhcIjpcInBoYlwiLFwicnVsZVwiOlwiLy/liIbnsbtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxuICAgIGZvciAodmFyIGkgaW4gd29yZDEpIHtcXG4gICAgICAgIHZhciBhID0gd29yZDFbaV07XFxuICAgICAgICB2YXIgYiA9IGNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAgYSA9PSBsYWIxID8gZ2V0SGVhZChhKSA6IGEsXFxuICAgICAgICAgICAgdXJsOiAkKFxcXCIjbm9Mb2FkaW5nI1xcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwia2V5MVxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcbiAgICAgICAgICAgIH0sIGMpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVxcbi8v5YiG57G7XFxuLy9sb2coTVlfUEFHRSlcXG5cXG52YXIgdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92L3BvcHVsYXIvcmFuay9hbGwnO1xcblxcbk1ZX1VSTCA9IHVybC5yZXBsYWNlKCdhbGwnLCBnZXRWYXIoJ2tleTEnKSk7XFxuXFxudmFyIHltID0gcmVxdWVzdChNWV9VUkwsIHt9KS5yZXBsYWNlKC9cXFxcXFxcXHUwMDJGL2csICcvJyk7XFxuaWYgKHltLmluY2x1ZGVzKCdyYW5rLXRpcHMnKSkge1xcblxcbiAgICAvKuaPkOekuuS/oeaBr1xcbiAgICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXG4gICAgICAgIGNvbF90eXBlOid0ZXh0XzEnXFxuICAgICAgfSk7XFxuICAgIOaPkOekuuS/oeaBryovXFxuXFxuICAgIHZhciBwaSA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXCJyYW5rTGlzdFxcXCI6JylbMV0uc3BsaXQoJyxcXFwicmFua05vdGVcXFwiJylbMF0pO1xcbiAgICBmb3IgKHZhciBpID0gMDsgcGkgIT0gbnVsbCAmJiBpIDwgcGkubGVuZ3RoOyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBpICsgMTtcXG4gICAgICAgIHZhciBxID0gSlNPTi5zdHJpbmdpZnkocGlbaV0pO1xcbiAgICAgICAgaWYgKCFwaVtpXS51cmwpIHtcXG4gICAgICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxuICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgIHZhciBydXJsID0gcGlbaV0udXJsO1xcbiAgICAgICAgfVxcbiAgICAgICAgXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwaVtpXS50aXRsZSxcXG4gICAgICAgICAgICBwaWNfdXJsOiBwaVtpXS5waWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgIGRlc2M6ICghcS5pbmNsdWRlcygnbmFtZScpID8gcGlbaV0ubmV3X2VwLmluZGV4X3Nob3cgOiAoJ3VwOiAnICsgcGlbaV0ub3duZXIubmFtZSkpLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBydXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzFfY2FyZCdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgLypcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOidOby4nK251bSsnXFxcXG5cXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcbicrKCFxLmluY2x1ZGVzKCduYW1lJyk/cGlbaV0ubmV3X2VwLmluZGV4X3Nob3c6KCd1cDogJytwaVtpXS5vd25lci5uYW1lKSkrJzwvc21hbGw+JyxcXG4gICAgICAgICAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXG4gICAgICAgICAgICAgICAgZGVzYzonMCcsXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JytydXJsKycjaW1tZXJzaXZlVGhlbWUjJyxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxuICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICovXFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICfigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcbiAgICB9KTtcXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEtdXDwn5C3XCIsXCJwYXRoXCI6XCJ1cFwiLFwicnVsZVwiOlwiY29uc3QgaGVhZENvbG9yID0gXFxcIiMzNThjY2RcXFwiO1xcblxcbi8v5pe26Ze05oiz6L2s5o2i5pa55rOVXFxuLypcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXG4gICAgIHZhciBZTUQgPSBzc3Muc3BsaXQoJ+aXpScpWzBdLnJlcGxhY2UoJ+W5tCcsJy0nKS5yZXBsYWNlKCfmnIgnLCctJyk7XFxuICAgICByZXR1cm4gKFlNRClcXG59XFxuKi9cXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXG4gICAgdmFyIGRhdGUgPSBuZXcgRGF0ZShuUyk7XFxuICAgIHZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSArICctJztcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcbiAgICB2YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7XFxuICAgIHZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbiAgICByZXR1cm4gdGltZVxcbn1cXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG4vL+aXtumXtOaIs+i9rOaNolxcblxcbnZhciB1aWQgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXCIsIHt9KTtcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nICsgcGFnZW51bSArICcmb3JkZXI9cHViZGF0ZSc7XFxudmFyIHVwX3VybCA9IFVQX1VSTC5yZXBsYWNlKFxcXCJ1aWRcXFwiLCB1aWQpO1xcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxuJyk7XFxuLy/mm7TmlrDlpLTlg49cXG5mb3IgKHZhciBrIGluIHh4KSB7XFxuICAgIGlmICgheHhba10uc3BsaXQoJyMjJylbMV0pIHtcXG4gICAgICAgIHRyeSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nICsgeHhba10uc3BsaXQoJyYmJylbMV0gKyAnJmpzb25wPWpzb25wJywge30pKS5kYXRhLmZhY2U7XFxuICAgICAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICB9XFxuICAgICAgICB2YXIgZmFjZSA9IHh4W2tdICsgJyMjJyArIHBpYztcXG4gICAgICAgIHZhciBmYWNlID0gZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCB7fSkucmVwbGFjZSh4eFtrXSwgZmFjZSk7XFxuICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFwiLCBmYWNlKTtcXG4gICAgfVxcbn1cXG5cXG5cXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG4gICAgaWYgKGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmjqjojZAnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5o6o6I2QJyxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfmlLbol48nID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP5pS26JePJyxcXG4gICAgICAgICAgICB1cmw6ICfmlLbol48nICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXG4gICAgICAgICAgICB1cmw6ICfov73nlaonICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73liacnID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+95YmnJyxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbiAgICAvL+iHquW3seeahOWFs+azqFxcbiAgICB2YXIgc3Rhcmpzb24gPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJmpzb25wPWpzb25wJywge30pKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAoZ2V0VmFyKCdVUCcpID09ICflhbPms6gnID8gJ+KYuu+4jycgOiAnJykgKyBzdGFyanNvbi5kYXRhLm5hbWUsXFxuICAgICAgICBwaWNfdXJsOiBzdGFyanNvbi5kYXRhLmZhY2UgKyBSZWZlcmVyLFxcbiAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdVUCcsIGdldFZhcignVVAnKT09J+WFs+azqCc/J+aKmOWPoCc6J+WFs+azqCcpO3B1dFZhcignc2V0JywnJyk7Y2xlYXJWYXIoJ2h0bScpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ1VQJywn5LiT5rOoJylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxuICAgIH0pO1xcbiAgICAvL+iHquW3seeahOWFs+azqFxcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCY4oCYVVDigJnigJknICsgJzwvc3Ryb25nPicgKyAoZ2V0VmFyKCd1cCcsICfmipjlj6AnKSA9PSAn5bGV5byAJyA/ICfwn5mJJyA6ICfwn5mIJyksXFxuICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3VwJywgZ2V0VmFyKCd1cCcpPT0n5bGV5byAJz8n5oqY5Y+gJzon5bGV5byAJyk7cHV0VmFyKCdzZXQnLCcnKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCd1cCcsJ+WxleW8gCcpO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgfSk7XFxuXFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdzZXQnKSAhPSAnJyA/IChnZXRWYXIoJ3NldCcpID09ICfnva7pobYnID8gJzxzdHJvbmc+JyArICfigJzigJznva7pobYnICsgJzwvc3Ryb25nPicgOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOWPluWFs+KAneKAnScgKyAnPC9zdHJvbmc+JykgOiAn6K6+572uJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignc2V0JywgZ2V0VmFyKCdzZXQnLCflsZXlvIAnKT09J+WPluWFsyc/J+e9rumhtic6J+WPluWFsycpO3B1dFZhcigndXAnLCcnKTtwdXRWYXIoJ1VQJywnJyk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly8nK2dldFZhcignc2V0Jywn5bGV5byAJykrJ2luZ34nXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICB9KTtcXG5cXG4gICAgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJykge1xcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxuICAgICAgICAgICAgdmFyIHVybHMgPSBbXTtcXG4gICAgICAgICAgICB2YXIgc3VybCA9ICdodHRwczovL3NwYWNlLmJpbGliaWxpLmNvbS9oNS9mb2xsb3c/dHlwZT1mb2xsb3cmbWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpO1xcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXG4gICAgICAgICAgICB2YXIgY29kZSA9IGZldGNoKHN1cmwsIHt9KTtcXG4gICAgICAgICAgICB2YXIgc3Rhcmxpc3QgPSBKU09OLnBhcnNlKCd7XFxcIm15JyArIGNvZGUuc3BsaXQoJ3tcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0gKyAnfX0nKTtcXG5cXG4gICAgICAgICAgICB2YXIgc3RhcmxzID0gc3Rhcmxpc3RbJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nICsgaWRdWydyZXN1bHQnXTtcXG4gICAgICAgICAgICBmb3IgKHggaW4gc3RhcmxzKSB7XFxuICAgICAgICAgICAgICAgIHZhciB5dXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPScgKyBzdGFybHNbeF0ubWlkICsgJyZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj1meXBhZ2Umb3JkZXI9cHViZGF0ZSc7XFxuICAgICAgICAgICAgICAgIHVybHMucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwucmVwbGFjZSgvZnlwYWdlL2csICcxJylcXG4gICAgICAgICAgICAgICAgfSk7XFxuXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBzdGFybHNbeF0udW5hbWUsXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBzdGFybHNbeF0uZmFjZSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2d6Mj91cmw9JyArIHl1cmwsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdpY29uX3JvdW5kXzQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG4gICAgLy/lhbPms6jliJfooahcXG5cXG4gICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJyAmJiBnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcpIHtcXG4gICAgICAgIGZvciAodmFyIGsgaW4geHgpIHtcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0uc3BsaXQoJyMjJylbMF0gPyAn4pyTJyA6ICcnO1xcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXG4gICAgICAgICAgICAvKuWktOWDj+iOt+WPllxcbiAgICAgICAgICAgICAgICB0cnl7XFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1jYXRjaChlKXtcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcbiAgICAgICAgICAgICAgICB9XFxuICAgICAgICAgICAgKi9cXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07cHV0VmFyMigndWlkJyxpbnB1dCk7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJ+aKmOWPoCcpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiO2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuICAgIC8v5Y+W5YWz55u45YWzXFxuXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxuXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXG4gICAgICAgICAgICB2YXIgcGljID0geHhba10uc3BsaXQoJyMjJylbMV07XFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXG4gICAgICAgICAgICAgICAgdHJ5e1xcbiAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO1xcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgICovXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXG4gICAgICAgICAgICAgICAgdmFyIHBpYyA9ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+KdjCcgKyBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcbiAgICAgICAgICAgICAgICB1cmw6IHh4W2tdICsgYEBsYXp5UnVsZT0uanM6dmFyIHNjPWlucHV0KydcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXG4nO3ZhciB4ej14ci5yZXBsYWNlKHNjLCcnKTt3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFwiLHh6KTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5Y+W5YWz5oiQ5Yqf77yB6ZOB5a2Q5YaN6KeB8J+mhidgLFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgfVxcblxcbiAgICAvL+e9rumhtuebuOWFs1xcblxcbiAgICBpZiAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2Jykge1xcblxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcbiAgICAgICAgICAgIHZhciBzdCA9IHVpZCA9PSB4eFtrXS5zcGxpdCgnJiYnKVsxXSA/ICfinJMnIDogJyc7XFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxuICAgICAgICAgICAgICAgIHRyeXtcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcbiAgICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkudmMuYmlsaWJpbGkuY29tL2R5bmFtaWNfc3ZyL3YxL2R5bmFtaWNfc3ZyL3NwYWNlX2hpc3Rvcnk/aG9zdF91aWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJm5lZWRfdG9wPTEnLHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAqL1xcbiAgICAgICAgICAgIGlmICghcGljKSB7XFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxuICAgICAgICAgICAgICAgIHVybDogeHhba10gKyBgQGxhenlSdWxlPS5qczp2YXIgc2M9aW5wdXQrJ1xcXFxcXFxcbic7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXCIsc2MreHopO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/nva7pobbmiJDlip/wn5SdJ2AsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6IHBpYyArIFJlZmVyZXIsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICB9XFxuXFxuXFxufVxcbi8vZC5wdXNoKHt0aXRsZTp4eH0pO1xcbmlmIChzX3RhYiA9PSAn5o6o6I2QJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mZWVkXFxcIikpLnJ1bGUpO1xcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+aUtuiXjycpIHtcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvdmlkZW9cXFwiKSkucnVsZSk7XFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9kc2pcXFwiKSkucnVsZSlcXG59IGVsc2UgaWYgKHNfdGFiID09ICfov73nlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL2Zhbmp1XFxcIikpLnJ1bGUpXFxufSBlbHNlIGlmIChnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcgJiYgZ2V0VmFyKCd1cCcpICE9ICflsZXlvIAnICYmIGdldFZhcignc2V0JykgPT0gJycpIHtcXG4gICAgdmFyIGpzb24gPSB7fTtcXG4gICAgZXZhbCgnanNvbj0nICsgZmV0Y2godXBfdXJsLCB7fSkpO1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGpzb24uZGF0YS5saXN0LnZsaXN0Lmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICB2YXIgciA9IHt9O1xcbiAgICAgICAgdmFyIGogPSBqc29uLmRhdGEubGlzdC52bGlzdFtpXTtcXG4gICAgICAgIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkgKiAxMDAwO1xcblxcblxcbiAgICAgICAgdmFyIHRpbWUgPSBnZXRMb2NhbFRpbWUodCk7XFxuXFxuICAgICAgICBpZiAoai5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgdmFyIHBsYXkgPSAoai5wbGF5IC8gMTAwMDApLnRvRml4ZWQoMSkgKyAn5LiHJztcXG4gICAgICAgIGVsc2VcXG4gICAgICAgICAgICB2YXIgcGxheSA9IGoucGxheTtcXG5cXG4gICAgICAgIHZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLnBpYyA6ICdodHRwczonICsgai5waWM7XFxuXFxuICAgICAgICByLnBpY191cmwgPSBwaWNzICsgUmVmZXJlcjtcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmNvbF90eXBlID0gJ21vdmllXzFfdmVydGljYWxfcGljJztcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcbiAgICAgICAgaWYgKGoubGVuZ3RoICE9IFxcXCIwMDowMFxcXCIpIHtcXG4gICAgICAgICAgICBkLnB1c2gocilcXG4gICAgICAgIH07XFxuICAgIH1cXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcpIHtcXG5cXG4gICAgaWYgKGdldFZhcignaHRtJykgPT0gJycpIHtcXG4gICAgICAgIGh0bSA9IFtdO1xcbiAgICAgICAgdmFyIHltID0gYmF0Y2hGZXRjaCh1cmxzKS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIHZhciBoID0gSlNPTi5wYXJzZShhKS5kYXRhLmxpc3Qudmxpc3Q7XFxuICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXG4gICAgICAgIH0pO1xcbiAgICAgICAgaHRtID0gaHRtLnNvcnQoZnVuY3Rpb24oYSwgYikge1xcbiAgICAgICAgICAgIHJldHVybiBiLmNyZWF0ZWQgLSBhLmNyZWF0ZWQ7XFxuICAgICAgICB9KS5tYXAoZnVuY3Rpb24oYSkge1xcbiAgICAgICAgICAgIGEuY3JlYXRlZCA9IGdldExvY2FsVGltZShOdW1iZXIoYS5jcmVhdGVkKSAqIDEwMDApO1xcbiAgICAgICAgICAgIHJldHVybiBhXFxuICAgICAgICB9KTtcXG4gICAgICAgIHB1dFZhcignaHRtJywgSlNPTi5zdHJpbmdpZnkoaHRtKSk7XFxuICAgIH0gZWxzZSBodG0gPSBKU09OLnBhcnNlKGdldFZhcignaHRtJykpO1xcbiAgICB2YXIgaSA9IDA7XFxuICAgIHZhciBrID0gMDtcXG4gICAgdmFyIHIgPSBuZXcgRGF0ZSgpO1xcbiAgICB2YXIgTSA9IHIuZ2V0TW9udGgoKSArIDE7XFxuICAgIHZhciB0RCA9IHIuZ2V0RnVsbFllYXIoKSArICctJyArIChNIDwgMTAgPyAoJzAnICsgTSkgOiBNKSArICctJyArIChyLmdldERhdGUoKSA8IDEwID8gKCcwJyArIHIuZ2V0RGF0ZSgpKSA6IHIuZ2V0RGF0ZSgpKTtcXG5cXG4gICAgZm9yICh2YXIgaiA9IDA7IGogPCBodG0ubGVuZ3RoOyBqKyspIHtcXG4gICAgICAgIHRyeSB7XFxuXFxuICAgICAgICAgICAgaWYgKGogIT0gMCAmJiBodG1baiAtIDFdLmNyZWF0ZWQgIT0gaHRtW2pdLmNyZWF0ZWQpIGkrKztcXG5cXG4gICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgaWYgKGsgPT0gMCkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGUgPSBodG1bal0uY3JlYXRlZDtcXG4gICAgICAgICAgICAgICAgICAgIGsrKztcXG4gICAgICAgICAgICAgICAgICAgIGlmIChkYXRlID09IHREKSBkYXRlID0gJzxzdHJvbmc+5LuK5aSpPC9zdHJvbmc+JztcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFwiIzM1OGNjZFxcXCI+JyArIGRhdGUgKyAnPFxcXFxmb250PicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJyxcXG4gICAgICAgICAgICAgICAgICAgICAgICAvL3VybDpgQGxhenlSdWxlPS5qczpjbGVhclZhcignaHRtJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WIt+aWsOaIkOWKnyc7YFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIH1cXG4gICAgICAgICAgICAgICAgaWYgKGh0bVtqXS5wbGF5ID4gMTAwMDApXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IChodG1bal0ucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxuICAgICAgICAgICAgICAgIGVsc2VcXG4gICAgICAgICAgICAgICAgICAgIHZhciBwbGF5ID0gaHRtW2pdLnBsYXk7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogaHRtW2pdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiAoKGh0bVtqXS5waWMuaW5kZXhPZignOicpICE9IC0xKSA/IGh0bVtqXS5waWMgOiAoJ2h0dHBzOicgKyBodG1bal0ucGljKSkgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBodG1bal0uYXV0aG9yICsgJyAg5pe26ZW/77yaJyArIGh0bVtqXS5sZW5ndGggKyAnXFxcXG7mkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyBodG1bal0uY3JlYXRlZCxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXG4gICAgICAgICAgICAgICAgYnJlYWs7XFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXG4gICAgfVxcblxcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3ml7blhYnwn5CUXCIsXCJwYXRoXCI6XCJzZ2pcIixcInJ1bGVcIjpcIi8v5YiG57G7XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMiA9IHcyLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxudmFyIGtleTIgPSBnZXRWYXIoJ2tleTInLCAnMjInKTtcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXG4gICAgdmFyIGEgPSB3b3JkMltpXTtcXG4gICAgdmFyIGIgPSBjbGFzczJbaV07XFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgIGQucHVzaCh7XFxuICAgIHRpdGxlOiBhPT1sYWIyPyBnZXRIZWFkKGEpOmEsXFxuICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYyk9PntcXG4gICAgICAgIHB1dFZhcihcXFwibGFiMlxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXG4gICAgICAgIHB1dFZhcihcXFwia2V5MlxcXCIsYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXG4gICAgICAgIHJldHVybiBcXFwiaGlrZXI6Ly9lbXB0eVxcXCJcXG4gICAgfSwgYyksXFxuICAgIGNvbF90eXBlOidzY3JvbGxfYnV0dG9uJ1xcbiAgICB9KTtcXG59XFxufVxcbi8v5YiG57G7XFxuXFxudmFyIG0gPSBOdW1iZXIoZmV0Y2goXFxcImhpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0XFxcIix7fSkpO1xcbnZhciB0ID0gbTwwPzA6bTtcXG52YXIgbnVtMSA9IE51bWJlcih0KS0xMjtcXG52YXIgbnVtMiA9IE51bWJlcih0KSsxMjtcXG52YXIgbnVtMyA9IE51bWJlcih0KS0xO1xcbnZhciBudW00ID0gTnVtYmVyKHQpKzE7XFxuLy92YXIgdGltZXN0YW1wID0gRGF0ZS5wYXJzZShuZXcgRGF0ZSgpKTtcXG52YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIHN0YW1wMSA9IHRpbWVzdGFtcCAtIHQqMzAqMjQqNjAqNjAqMTAwMDtcXG52YXIgc3RhbXAyID0gdGltZXN0YW1wIC0gKHQrMSkqMzAqMjQqNjAqNjAqMTAwMDtcXG4vKlxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcbiAgICAgdmFyIG1tID0gc3NzLnNwbGl0KCflubQnKVsxXS5zcGxpdCgn5pyIJylbMF07XFxuICAgICB2YXIgZGQgPSBzc3Muc3BsaXQoJ+aciCcpWzFdLnNwbGl0KCfml6UnKVswXTtcXG4gICAgIHZhciBZWSA9IHNzcy5zcGxpdCgn5bm0JylbMF07XFxuICAgICB2YXIgTU0gPSAobW08IDEwID8gJzAnICsgbW06bW0pO1xcbiAgICAgdmFyIEREID0gKGRkPCAxMCA/ICcwJyArIGRkOmRkKTtcXG4gICAgIHJldHVybiAoWVkrTU0rREQpXFxufVxcbiovXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcbnZhciBZWSA9IFN0cmluZyhkYXRlLmdldEZ1bGxZZWFyKCkpOyBcXG52YXIgTU0gPSBTdHJpbmcoKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKTsgXFxudmFyIEREID0gU3RyaW5nKChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKSk7IFxcbnZhciB0aW1lID0gWVkgKyBNTSArIEREO1xcbnJldHVybiB0aW1lXFxufVxcbi8v5pe26Ze05oiz6L2s5o2iXFxudmFyIHRpbWUxID0gZ2V0TG9jYWxUaW1lKHN0YW1wMSk7XFxudmFyIHRpbWUyID0gZ2V0TG9jYWxUaW1lKHN0YW1wMik7XFxudmFyIFNHSl9VUkwgPSAnaHR0cHM6Ly9zLnNlYXJjaC5iaWxpYmlsaS5jb20vY2F0ZS9zZWFyY2g/bWFpbl92ZXI9djMmc2VhcmNoX3R5cGU9dmlkZW8mdmlld190eXBlPWhvdF9yYW5rJm9yZGVyPWNsaWNrJmNvcHlfcmlnaHQ9LTEmY2F0ZV9pZD0yMiZwYWdlPScrcGFnZW51bSsnJnBhZ2VzaXplPTEwJnRpbWVfZnJvbT10aW1lMiZ0aW1lX3RvPXRpbWUxJztcXG52YXIgVVJMID0gU0dKX1VSTC5yZXBsYWNlKCd0aW1lMScsdGltZTEpLnJlcGxhY2UoJ3RpbWUyJyx0aW1lMikucmVwbGFjZSgnMjInLGdldFZhcigna2V5MicpIT0nJz9nZXRWYXIoJ2tleTInKTonMjInKTtcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChVUkwse30pKTtcXG5cXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jysx5bm0JyxcXG4gICAgICAgICAgdXJsOlxcbm51bTErYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTonLTHlubQnLFxcbiAgICAgICAgICB1cmw6XFxubnVtMitgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxuICAgICAgIH0pO1xcbmQucHVzaCh7XFxuICAgICAgICAgIHRpdGxlOicrMeaciCcsXFxuICAgICAgICAgIHVybDpcXG5udW0zK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXG4gICAgICAgfSk7XFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6Jy0x5pyIJyxcXG4gICAgICAgICAgdXJsOlxcbm51bTQrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcbiAgICAgICB9KTtcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpnZXRIZWFkKCgn5b2T5YmN5pe26Ze057q/OiAnK3RpbWUyKyd+Jyt0aW1lMSkpLFxcbiAgICAgICAgICBcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxuICAgICAgIH0pO1xcbi8qXFxuZC5wdXNoKHtcXG4gICAgICAgICAgdGl0bGU6IGdldExvY2FsVGltZSh0aW1lc3RhbXApLiBzcGxpdCgn5pelJylbMF0sXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG59XFxuLypcXG5kLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHNzcyksXFxuICAgICAgICAgIFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXG4gICAgICAgfSk7XFxuKi9cXG5mb3IgKHZhciBpIGluIGpzb24ucmVzdWx0KVxcbntcXG4gdmFyIHIgPSB7fTtcXG4gdmFyIGogPSBqc29uLnJlc3VsdFtpXTtcXG4gaWYgKGoucGxheT4xMDAwMClcXG4gICAgdmFyIHBsYXkgPSAoai5wbGF5LzEwMDAwKS50b0ZpeGVkKDEpKyfkuIcnO1xcbiBlbHNlXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcbiBkLnB1c2goe1xcbiAgICAgICAgICB0aXRsZTpqLnRpdGxlLFxcbiAgICAgICAgICBpbWc6J2h0dHBzOicrai5waWMrUmVmZXJlcixcXG4gICAgICAgICAgZGVzYzondXDwn5C3Oicrai5hdXRob3IrJ1xcXFxu5pKt5pS+6YePOiAnK3BsYXkrJyAgICAgICAg5Y+R5biD5pel5pyfOiAnK2oucHViZGF0ZS8qKydcXFxcbuaPj+i/sDonK2ouZGVzY3JpcHRpb24qLyxcXG4gICAgICAgICAgdXJsOlxcbidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIGouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgIGNvbF90eXBlOidtb3ZpZV8yJ1xcbiAgICAgICB9KTtcXG59XFxuXCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLpobXpnaIt5LqM57qnXCIsXCJwYXRoXCI6XCJkZXRhaWxcIixcInJ1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbi8vbG9nKE1ZX1JVTEUudGl0bGUpXFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgIC8vbG9nKGIpXFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYlswXS5idmlkO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFwiJylbMF0uc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiO1xcbiAgICB9XFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcbn1cXG52YXIganNvbiA9IEpTT04ucGFyc2UoYmFuZ3VtaSk7XFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXG52YXIgcCA9IHYucGFnZXM7XFxudmFyIGNhcmQgPSBqc29uLmRhdGEuQ2FyZC5jYXJkO1xcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGxpa2VfdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvbGlrZSc7XFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcbnZhciBhZGRfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9hZGQnO1xcbnZhciBkZWxfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9kZWwnO1xcbnZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG52YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG52YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxudmFyIHhseHogPSBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtSb3V0ZS5zZXRQYXJzZSgpO3NldFJlc3VsdChkKTtcXFwiO1xcbnZhciBqeGdsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L2p4SXRlbS5qcycpO2p4SXRlbS5qeExpc3QoKTtzZXRSZXN1bHQoZClcXFwiO1xcbmlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICB2YXIgcmVkaXJlY3QgPSB2WydyZWRpcmVjdF91cmwnXTtcXG4gICAgdmFyIHltID0gZmV0Y2gocmVkaXJlY3QsIHt9KTtcXG5cXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiWFVpRlQxdlhZV3JVdytWaHBucWxnME4wdkFXZ3BnbGg4TWhaKzl2UEQ5OU5KNVZnZUZkSG13YUthd0l5NkMwaDZGRlFoRVE1UmhKbVYwRVFIbkw5eHliUEhBY2hBTDdoWkVaZCtoYkdIVjVqZUcrbks1UTNpZTc4cHVHRGIxVEo0ZkFJN2c2ZXpMSWpRTUJ4Ti8yWE05MllOTlBLREhkaExJTVFHVjY5TXE4Y1RPV2pLcFpRcDAvdmdOdXhhUFFLRXpTZEhRSnVlN3RUeGRTRXZEdDNzL3R4ZEVoL29HekZDQ05XZVpDVVU1M3poRWhDMDZxNlpGalpDTStkOEZzWjVjWGxOSmVtdGVnTWdKVUxkVHFhVmRSd1ZoVlgrMXVCUTlOeTBEcHNOR3gyTHdIZ09qbHM5aHcxNExoRXF0aEVlNzN5UEJHdlNnS0VCZFNZZ0c3Y0s3aFlWVEVOZUdUaVJBektQUTdqR0VxRUo4YWFkSE9IQWVTYTI1YUJiemM4MWhoeGdYdGlhbFg4VXFlcG43azRnMkdrc3FvRzNKVkkrcVRmV1p4UFdxTk0vMGpVWGJyVVRDUlpucnpHVm93Nk53UFFYS3EzQ0RLbDlpK2FadmVXejVJZjVFTkVaR2lXbFc1ejRhSlNFY2V4Q0RzaVpsbzEvUUpJajJyV29uRTB1NTRhaDIvWlovL1pHb01CSitkMTlHbWVwa0xCRDNuMnFvZ0tualpqMnJqV3FnUGFkRWVlMVpJaFozU0dibVRsSmYxQTRCWUl1dVB3djRkR1pkUm9EVzY0QmhDNWp1Q242d0RtN1lteTdCWGYxc1FhRmltRW5yU0lpSEdoTStXS2czSXlXZWN1aC9HaysrTW1ONkF4eGN2TkF5cDhiQzRoekJNdlpKL2w1dFJ5YXBvbWRDVjVCcGlYZmprV1JuYm9wSWpJK1dLQjNmQ2FZeVJkZU5MRVJLbkVsc2NEaXo3VWVuTHByaFljL2E0THNHZU1NRlZaOFlvOC93R1lIMzhKXFxcIilcXG5cXG52YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vJyArIHYuYnZpZDtcXG52YXIgbW9kZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dFxcXCIsIHt9KTtcXG52YXIgbW9kZV91cmwgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8sIOeCueS4quinhumikeivleivleWQpyheX14pICdgO1xcbnZhciB6bCA9IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3BhZ2UnLCBnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvic/J+WFs+mXrSc6J+ebtOmTvicpO3JlZnJlc2hQYWdlKCk7aWYoZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nKXsndG9hc3Q6Ly/ngrnlh7vkuIvmlrnliIfmjaLmuIXmmbDluqbwn6SfJ31lbHNleyd0b2FzdDovL+W3suWFs+mXrSd9XFxcIjtcXG5pZiAobW9kZSA9PSAneWhjJykge1xcbiAgICB2YXIgbGF6eSA9IHloY1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogdi50aXRsZSxcXG4gICAgZGVzYzogJ+aPj+i/sDogJyArIHYuZGVzYyArICfjgIDnsbvlnos6ICcgKyB2LnRuYW1lLFxcbiAgICB1cmw6IHB1cmwsXFxuICAgIGltZzogdi5waWMgKyBSZWZlcmVyLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxuICAgIHBpY191cmw6IGNhcmQuZmFjZSArIFJlZmVyZXIsXFxuICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIGNhcmQubWlkICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZScsXFxuICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4q2Q77iPU3RhcuKAneKAnScsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIGNhcmQubmFtZSArICcmJicgKyBjYXJkLm1pZCArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuXFxuZnVuY3Rpb24gcmVxdWVzdF9iaWxpX2FwaShiYXNlVXJsLCBTZWNyZXRJZCwgU2VjcmV0S2V5KSB7XFxuICAgIGlmICghU2VjcmV0SWQgfHwgIVNlY3JldEtleSkgcmV0dXJuIHJlcXVlc3QoYmFzZVVybClcXG4gICAgZXZhbChnZXRDcnlwdG9KUygpKVxcbiAgICBsZXQgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XFxuICAgIGxldCBkYXRlVGltZSA9IG5vd0RhdGUudG9VVENTdHJpbmcoKTtcXG4gICAgbGV0IHNvdXJjZSA9ICdiaWxpLWFwaSc7XFxuICAgIGxldCBhdXRoID0gXFxcImhtYWMgaWQ9XFxcXFxcXCJcXFwiICsgU2VjcmV0SWQgKyBcXFwiXFxcXFxcXCIsIGFsZ29yaXRobT1cXFxcXFxcImhtYWMtc2hhMVxcXFxcXFwiLCBoZWFkZXJzPVxcXFxcXFwieC1kYXRlIHNvdXJjZVxcXFxcXFwiLCBzaWduYXR1cmU9XFxcXFxcXCJcXFwiO1xcbiAgICBsZXQgc2lnblN0ciA9IFxcXCJ4LWRhdGU6IFxcXCIgKyBkYXRlVGltZSArIFxcXCJcXFxcblxcXCIgKyBcXFwic291cmNlOiBcXFwiICsgc291cmNlO1xcbiAgICBsZXQgc2lnbiA9IENyeXB0b0pTLkhtYWNTSEExKHNpZ25TdHIsIFNlY3JldEtleSlcXG4gICAgc2lnbiA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHNpZ24pXFxuICAgIHNpZ24gPSBhdXRoICsgc2lnbiArIFxcXCJcXFxcXFxcIlxcXCJcXG4gICAgcmV0dXJuIHJlcXVlc3QoYmFzZVVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJTb3VyY2VcXFwiOiBzb3VyY2UsXFxuICAgICAgICAgICAgXFxcIlgtRGF0ZVxcXCI6IGRhdGVUaW1lLFxcbiAgICAgICAgICAgIFxcXCJBdXRob3JpemF0aW9uXFxcIjogc2lnblxcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKSkucnVsZSlcXG5cXG4vL+iHquWumuS5iWFwaemhuVxcbnZhciBtQXBpID0ge1xcbiAgICBhdXRob3I6ICcnLFxcbiAgICB0eXBlOiAnJyxcXG4gICAgaWQ6ICcnLFxcbiAgICBiYXNlVXJsOiAnJyxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcbiAgICBzZWNyZXRLZXk6ICcnXFxufVxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcbn1cXG5cXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxuXFxuXFxudHJ5IHtcXG4gICAgaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgdmFyIHNlYXNvbl9pZCA9IHltLnNwbGl0KCdcXFwic2Vhc29uX2lkXFxcIjonKVsxXS5zcGxpdCgnLCcpWzBdO1xcbiAgICAgICAgLy9sb2coc2Vhc29uX2lkKVxcbiAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JyxcXG4gICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfmlq3mj5InLFxcbiAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+aWreaPkicgPyB4bHh6IDogJ+aWreaPkicgKyBtb2RlX3VybCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJyAmJiBnZXRWYXIoJ2FjY2Vzc19rZXknKSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGFkZF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGFkZF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coYWRkX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBhZGRfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5Y+W5raIJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGRlbF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRlbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coZGVsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBkZWxfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgXFxuXFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXG4gICAgICAgICAgICB2YXIgYmFkZ2UgPSBlcFtpXVsnYmFkZ2UnXSA/ICdbJyArIGVwW2ldWydiYWRnZSddICsgJ10nIDogJyc7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgaWYgKG1vZGUgPT0gJ1g1Jykge1xcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICd4NVJ1bGU6Ly8nICsganggKyAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXSArICdAJztcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcbiAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXG4gICAgICAgICAgICB2YXIgZGVzYyA9IChlcFtpXVsnbG9uZ1RpdGxlJ10pID8gZXBbaV1bJ2xvbmdUaXRsZSddIDogKGVwW2ldWydsb25nX3RpdGxlJ10gPyBlcFtpXVsnbG9uZ190aXRsZSddIDogJycpO1xcbiAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZET1JPdUtqaU1CRWZwbkJOZWxHVWY0MzlBdUpwZTB1Uk4xdGJFMWlVNTA1U2prVUFROE9adVZrRG5sQlM5ZzlFOS9WYW5BYW9rSVdaYXZRRXZxYktpTmlNa2UxTWNORE1kMGpEaEZmVkZacCtRRjRLQThQR2tDdURQSnB5YnBHekU4MEVOUDI1WURMMnltL1VUVXJvVzhQU04wOU9saUgzR2NXbjZKZk5NWkU0QnZRb0ZKZmcyV3Z2NFFXQ0VDRzFGSERLT1p5bnNZZjFjc1ZJdWJlOEY2NWR0UkU3Z3VSNTg3OC9QVUpYUWdEb2I1dDJZVU81UXp6TWNrckUxd3Mzd2FHMHBuRDY0cWtOSDJFc0lsQ2NDdkJ6N1lpZ0M5SXBIMXFtNnA4aStpWDN4QlBwQjY2TEQ5MWdQeXpwcnpNTy9zYTNSWFZXT0x0ZWdML2ZCSWtWSGFmbFNaY0t6YjdIVjI3MjBueml6TmhTeXNOZUVLOTdxczZnMUI2dzVUY2RTVDdtRVh4NTVMTlR1Zi8yNG8weXlDcnY0U0pMdVhXRXZPOVJ4MGphempseVdpYWhFMDh4end6UjhreWpyZEwxZzIyQ1pTUEtiVE9ySElkNUxiSlFkVnNFdjBXRGwveHRJTlJTM1ZZS1ovbkh1R1BGOFFMQWxBTlB6b3RER2trZDlHcEpETXNYam5tVU9XSVBnbXdBakZCay9XMkUzV1NiaVhsOEV0SlBnUXozRjRWZGtOZHZwb1c5OHJYTWVNNENSa1M3VG4vNUtJRkVqN3JGMy8vY3BrYXdrQ0R6cmduR2NJc0ZOK1MxVWVjSGtoeTQ3NFRUeFdIMUZNeThuUDZlZEtqYUN4ODdVZjdGK2tuL25uNk1wVkdmd3d6L3lQM1lHM29KVkdsRXYrV2t1RkFlUU1YWTRRblJ5d2NIRWVRK3MydTEzTkFXY3ZVSTZNbnlPcUl3cXlDNFA0bERFbUlabldEWGpVR1l1emkvTDVtMDNtRDZUaXdoRnpydGQraDM2bWdMdGVwU2YzVFZBb3UzT2RieHgwMzJtZFVFajVQRkRUeGtFYUcycmVvWkJFT1RtaUMzNDlPd3VYWFFlMWZ3R0h3ZUcrNjlyNmQrS05XakVOWVVGTnAvYzdGbWVkc3V6d2hlckoxVHg2THo0MWFvZk92TDU0UjlsdWdyQzMydGJWWGJxaUtVVmpKY1ZuNi9zUWNUd0FMU1pvcGl2TU00SFZORjNtWTJYTDhaK21wV2tucURCL0h3TklhQ21LTjdMSzh0STFsWnord2lmKzlaSUFkVDJTK3ZWTng0Z3NVTW1zWFZ4bzNHT3MycUEreHJQK2p4eE1TYVJUR0tOdVliTlNYekxhY294OVJPOGNwVlJEcXpvb1RPdG9mRlVBZjBvK1pEVzZsczBuY3NyeTBqV1ZuUDdDSi83MWtnQjFQWllTWFR1Q3Vlb2ZhNlUxL1dKQUhOaG5yQk9iL1hOcFNFQXFudzlWQUZTeWo2Nkl5VDc3RUd3dldGNytZUU9MT0ltajAzZVBUSVVENVpRMUIzNkJVN0JBVWNRTERGN3VWWGJEMXZGZ0UvK1JUT1NCeC9HY3dsaklsWFM5bEFBazJGU1Q3bUVYeDU1TE5UdWYvMjRvMHl5T3hkaXVXdUpmTWc4MkJYZEVqdVF2Umt0em9KUUE5aGpmMUl0cHVXbWlxQndkZi9MMEtPeDI2cjJNOHBqU2g5RXd6a1RyaW80akFSSDZad1RYcFJsSDBNZ1VOZzcwQWgwV0lmUVF1cCtjVng2ay8zQ2JXcXdJcytBYno5RkYydWg5ZU9QZDRMUG5CeHVCaFoyZXUxSVhCcmlNYURpb3M2TU1GU2dVTndxREFjRWdtWUZKM3kzR0ozTEY4U0FsdERqWmhadVJwQVUzUjl1Rk5zYWFDc2ZaUVpKVXoxMXowUzRpUVA0RERMVTBDVExLOHRJMWxaeit3aWYrOVpJQWRUMjI2Qno2Y29BL0V3b3FKaC9SbTZlMm00RDg5blFlS1VzRFlOcUtOTW9sUm44VUZSNzVFVzZSRUNUdm14NUVJZDh5dzhmMUhtM2FZK0xkSlFaWGVEMzlaNlNZMTA2V09pL05nVTY4WXFxdUhxNk0yempBandRUi85TVdXRHlDcUFKMVJ4ejdRUzhyQVFJS0hOMXcxZmxkYXRVK3hkZGloZzJPc1Z4enAyL2pJS0NoYXhDbTFMNGc4T0JSOWx1UWhaU2MzcG1Vb25Oc3h3RHhmcDFiS09pVVpCMXdhTXJoWHVTMVpiMVhYSFR2cDR1ak13V21lWkNOMFVKSzRQaUZVOFZ1QTlleWRCYmVvQSs0K0ZYL1VkUWQ3QTdteVVWK2lBMlQ4NC9MY0VPa25MTVRRcEdDUzFFWGUzQlprVFd6S2pTd2VBUXhaQzJka2ppS00veS83b3RLTXNsVzBJMzR1cTV4MTZaZ04xVmUxRGFsSCttdlFKeVdVeTFsWFUrMTdzc3pwUXkrdzc4ODdEa0p5dnYyd25PSjVIL29lRmhKdkNWZ3B6aFRjckdKSSt6ZGFyODhDd1pGcTFhTHNlc0g4MkVSZVhQcTBPaXBVMWFnRnU2UHo2OTl0N04zczQzbWo5SVAxeWR6aWRzU0MzTEs4dEkxbFp6K3dpZis5WklBZFQyZ0xwKzk1VENENkY5SU9ma2kvVHVCRmdqZkNBOG5sa2djU2RRbi96YlBkMjE1SGhqdU0wbXJQOXlvOXUrU01vbnl5dkxTTlpXYy9zSW4vdldTQUhVOXU4WjcvVnRMMklvd2F0dDNXc1VISFZjYUlrTjBteFBacWJ3SjNnb3MvR1h5eXZMU05aV2Mvc0luL3ZXU0FIVTlyUGN3ZGhaWjRyUEVtcnlRblpRbThsWHdZaktBNHg0THNkL2IzTGNNYjUzenBReSt3Nzg4N0RrSnl2djJ3bk9KL3lBeEJSUGl6NEpWNld2MW9qUXBMOWZ0SDJIOUtFemxqZGQxRHlFNk9mcnl5dkxTTlpXYy9zSW4vdldTQUhVOW5mUGhvRm5CT0tvWDZ0WFUxWjBwS3VNcWVHQk9pZ3V0M2xwOU5laWozZnJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpQy8rMkwvNW4zSElmM3NCTmJNZ2RZQ3ZQWXVFeEN0TEZTMmxheGNOSlB1eXl2TFNOWldjL3NJbi92V1NBSFU5Z01ORUhYYXJYcmh4NWhjRWY1OVo2YXlDMlFwbWcva1g0M0gwVjhsSGgyZTdUbzc4Q1I3TjN5UDBnNE80Z3M3UU1zcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWhxK1FiemhnRmFVdS9tdHJ1SmtmMUY4c3J5MGpXVm5QN0NKLzcxa2dCMVBZYjJudUJBejVCN0hxRnpUTytjVFp5aFNJN0tJUDF5RTFRaE5HckZuaDFkWWtpUk9mR05BSVJ4QzlhTy9zWjhRczh5YktLQ2E2QWJVa2lGb2gwTlNDT3pwUXkrdzc4ODdEa0p5dnYyd25PSjJaWVArazNHUUsxM21Ud2ZqNHhHOENSYXpkeUtlTVFNalM3dmdBbTlTbmt2b1dLL0xhU3lmSGVnaUNqK3Z3cXRpZ2VJUnorT0htbktMbS8rV0NQYTA3UVJIZDlzMjkzVEJPUzRaR1hNUVdDTGZjV0wvMjYzcjJ2Sk9FNUxDMVNMNWMya1oyZ28xb0FEN2owTitMajgyQUFqVUlSakloM0R1QTZDQ29rWGs1RW9URGp6dUpxVEZ6OGRNYmRxbHhTVW42M2V3UXJ3MHBDcFRNYWRrL21qQ2NXRnJSMk5RcHMxcWw4N2lKanpoVUtJUFl0T0FQeEpEZWNYVk5raWllRURSZnZYb3J1ZSswaS9OdGFyalhXa1ZzQWpVSVJqSWgzRHVBNkNDb2tYazVFWWZ2L0xJamVUbThLUXcxdyttY3FiU2dlSVJ6K09IbW5LTG0vK1dDUGEwNXNjUDRWYzg0dVFKeE1JMzMzVnVFMnl5dkxTTlpXYy9zSW4vdldTQUhVOWpzS0syT1hTQWNGSnJ6Y2prem1GLzhKV1VFaEVFVEVtM0pCT0pzR3RFSUluUTY2ZW9US1l6Q0xKRlNCK2xnYXJuYnhvU3F5eUk4bXRkY2dhZGl6TGN4Z0paMVpFM25LOHNhTis0Um1MZkgveXl2TFNOWldjL3NJbi92V1NBSFU5c0VDYThrRDJXSWY1c0pLb1NXengvdmgrZGNiYmQ4NkJmUTFMMWZyQ1JCYXhsNzhDSHkxbzZ3SllFYk9ZMmtDNHM2VU12c08vUE93NUNjcjc5c0p6aWQ2eXMvVTRHMllvM2RhU0JIQkpLUVl5eXZMU05aV2Mvc0luL3ZXU0FIVTloYS9UMnVPa1AyU3VHVlNNbDlyTzU0Y1F2L1ZYVHRDbW55VGFJM09iUW9EYjdPeFYxQk4wRUhyZS9RbjNxYXhNZVFiN0tKeXNZWnFFQmtsMnAvaU9WWmdvZnk3Q2d6Z05ER04vdkdOK2dGLzZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDZkcUxCRVczWUVlNlAyQ1ZuRm9UNHNhZnJrR3hSTFR6S2FZTElzZTZKSFpWcVFoZFlRUk9RRTl1aDAzMDVKR3FWdFZkdXFJcFJXTWx4V2ZyK3hCeFBEcnFxaWp5ZGlIRW9FUGdIdFdiY0dkVkloWm5odnNOQkIyL0FjdFd1bnhhUW9jOWVzbEZjQXRreDQwNURhMFNtZytReDVtdkQwRzRyMTN5TGRoc1pqMmNvRTFQMHJpaDVrelVJdWZoZ21jNnhiMnBKWklSVyt2NWJlVzhYdEI4WlhMSzh0STFsWnord2lmKzlaSUFkVDJwWHlPSWFQQ0U1cDVaaXg0Nm5rOURIdVBqRDZGMHdIME9zb3BiWnBLUllsQ3FoLzhtZmNwa3ZrOURRaWlMUytEeXl2TFNOWldjL3NJbi92V1NBSFU5aHJjZjZ0RC9wVmZCL0MxVmVhZFdUOEt1ejk4ZXpiSFVYSXZTMk5GNnYyNDF5UlcxZTlnVUpZOEZDdmVobGQya01zcnkwaldWblA3Q0ovNzFrZ0IxUFk3SG5XZ1hKeFdISVQ3M2NDNDc3U0hTNGhoY3RNQ0FCendtVG5vRkdlVGJkTnlKS2dsN2tLU0FzRi9Hb1UrTVJMQVl3Tk5YR0YzMHkzRDZaZU12OERPTXZzVkdkWEh0ajI0WlVmd0RXc0pNc3NyeTBqV1ZuUDdDSi83MWtnQjFQYWU2T3orNHE2QUEwaHdlL2kyVzZ1d04wcmVqQ1Y0Z3NsbWFpc1RDKzk2Vk1zcnkwaldWblA3Q0ovNzFrZ0IxUFpxcnZwSTFTelRqMUxvSmdJVkVPWjF5eXZMU05aV2Mvc0luL3ZXU0FIVTl1UFcyd3Z5Q1pCcEROVjJ5bVVTcFQ3Mkd2enoxUEJOcHhwMHgxRFdZKzVFOXRSK2ZwaEl1VVdudFNJN1VlU2pqQSswb0VNVHJpNTRMdWVUdjdDZ2VnbXkzNytBWWxRdUYxQ2Jhb0gvRitRSmlWU24yWDZPSzkwUmZFcWprQy9ySVNZei83dWNwNmFNM1QxOWNKcHhFckhMSzh0STFsWnord2lmKzlaSUFkVDJOSWlNaUZHU0NuRlA4b3kvcUlmeVdWWWNuVzJQejlGTUlYUUtYWi9wYkJOc1VsaHd4b1dXZVl5S3pZQXRVNDArenBReSt3Nzg4N0RrSnl2djJ3bk9KL0xuYTVXc0x4Wk5jaWdycDBiVUJPZ3krVE1VMjRubGdCenlvRnNKWUJaZkgvWW8xVmdPN01EYWc0V3pPMFhLdzdvOEFjUmxSYTRxNE1vcE5zZysrd1BMSzh0STFsWnord2lmKzlaSUFkVDI5QXVCNGpQY1gxZC8zQWwrSkV1ZUQzQm5qa0pjMGJINUx3NDFHN1J4QmpJVDF5elBoWGNlWFFtRWNtY3d2OFlzbWEzZFVhRDJkcnZ0RUxXN0N0cm9FYWMwT092WlozYVNZYThHbnNvZnFCekRMdGlZd2NBT1N5Nlkza2V1T1ZYZ0lOVkFOR2JHTUQxWVFscGNvL3IzQTg2VU12c08vUE93NUNjcjc5c0p6aWQ5ZU93UUFlTE5uMW5iUk4zNTdSU25WOWNidlBYNFJtYWNDUE1xa0tlZlhRcXNBTHNvYzdUc0FOY1lQV0I3M1V1d3RLU1BPUXRDU2ZKcEoxTFRSYVFlbnYxclZuSU9QV2kydHVvT0lTVk43SGJ4b1NxeXlJOG10ZGNnYWRpekxjd2N0emxkTTk0bU1zTEh0SHA1RlFNM1BjWGhWMlExMittaGIzeXRjeDR6Z0pHUkx0T2Yva29nVVNQdXNYZi85eW1SckNRSVBPdUNjWndpd1UzNUxWUjV3ZVNITGp2aE5QRllmVVV6THljL3A1UVA0czNWY0tUMGtMcjhsa0dFbGpxSVJyZ1dtdXpaazVjY2cwUnRDUTgwVmRrY1FhRG1aM2tuWmlFWUdmM2EyWmdlcWI2VXB0aUFSQ1p4VVdsZ25wQ2pwbXA2d2NrbzBLQzF6c0xlU2ZFK2ZHOEl1SmVTcVlqY2JMUFgybUIxazQzZzBHOVNSUmlENUk3b004WjNDOFNZa0xmYTN3Mis2enIxR1hnK1dtTXFyRlFVWnM0V1hjSDRRREl4dGM2MG5NVVg2TDFXWE9VVXhuTTVmTFlnaUVBOEFMc0lpcnRCbCtFTzFPTDk5bEc4Uks3dWxvYi8vTUFrKzdEUURVbm5wTlVsZ3U4aUw4d09vKzVhaW9JS3Nwb1JrbXNHemtIeGtNR1NOcDlEaXhHbHovbHJBME5KZGVmUEdHSE9jdGI4bHVJRk1jdHlvdThoUUQ0WFNxOGdpZjRZMDBTVUhFdzUydXNqMG43SGdnN2E0eHlRbFp3SFkyVDk3Sktnc0YvN3NZMXVzdlM1dXdHZjRNdWRyOWh6L081MjhhRXFzc2lQSnJYWElHbllzeTNNMlRhNzN2MDM4YUtudlJteGxxdXQvUUVDa1k4SDVhMzhMVytETnJiTng5ZHA4S3VOU2xLNU1ZdWhDd01wRUFwYmZhQTV5eUJ6L3VPNU5CR0x2QWhzSVJjbHFuZi94QlR6b1hPU1JabWZnUmRTdmFKaHNFcVJsbUttM3pueWQwZ0VhRjAvWG9Wb21BbjFsRkZFOTBDSVNhM3IwMkRZa0ZOTS9SM2JWQ3VuTCtEdDd3cGVETEFJZjdWd1lQZVhYNUZhTEdqNFQ4dnM1Sk44NERMUDRrdUc5ZGd4OXpNcGR6VUFqQW5PYWd2Uk9FUmZHK084R09aNlVJcHpUYzBOSEJSeGEyM29OZlpqWjBBSHgzeG9WK2FUQnZEMjVTZG5OYlVwS1g3U0MrQ1BmdzRVRnlZaXY3TSt6QjRPaENJRVJ5ZUJyUERMTVc3OEorRlRndGIyMUQ4bHdPUHEwa1hwMG1NaEpXSDl0S2dRVXVVVGV3M2JCdndXMHZUUlg5T0RvL3JyaTBOeDlNbUdJaTEwdWJaaTBCdFBTZ2F6eEtGME0zcTBCL3ptNmlKbHlZZDZyQlVEZ1V1S3VKS0VhTzNTU1hzdEkvemMwSnFYd3ZoZGxQZytrcWlJcCtQcTBrWHAwbU1oSldIOXRLZ1FVdVVUZXczYkJ2d1cwdlRSWDlPRG8vcnJZQXI4anlsMTViUWVXYTFJMUY5QmkvRDI1U2RuTmJVcEtYN1NDK0NQZnc1dFpKUE1hZHNCUWtOSkpoVkg2Y1dhYytWS1MzTC93cE9ZVjFrTUpaaTNGcFhpZ09oRUVYNXo4WkFTeTM0NUdoTXFOOUV3NFRPdm91ZUJoWVFqbjY5c2ZyZDdCQ3ZEU2tLbE14cDJUK2FNSjhjOWNrSVYzSTRFK1krZmF0ak5qVkF0OXhZdi9icmV2YThrNFRrc0xWSXZVdld6em5WRUdua1I2YkVPdjVjb1VRQ05RaEdNaUhjTzREb0lLaVJlVGtTZTdrK29TQkF4NmcvRGxjanZTOGlOS0I0aEhQNDRlYWNvdWIvNVlJOXJUaHhLT25WRTZHdUFJS2cvWWVXaERGekxLOHRJMWxaeit3aWYrOVpJQWRUMnVvbkR0ZWZzTWZtZWlPVFVFM25ScmRpMkJoczRLNDc3eVZocElkMjR5ZzFqa0g3ZlgrZFRSQW5vQ2lVRms2UGt5eXZMU05aV2Mvc0luL3ZXU0FIVTlwa1dWSFJnVlljaCt5dkd0eEdiSGt4OGJ3aTRsNUtwaU54c3M5ZmFZSFdUckNJL3JMam56d05xbW9nZStWTFhMY3NyeTBqV1ZuUDdDSi83MWtnQjFQYkI0OTFGaWdFRThpb1dVakZXbC9xQkJhUjlENHUraW5CbTZHSU5tMHoydGlnVFY3cGRHb0RudHFTQ0VuSnJCeWcvdWdzc0pEa2YzTlNCSC9MNzNvSnpUakR1M3lxL2VXWStCcnpNVnpuWFBGQ2NhdTJvd1hMQjJ4ZFpJREVzNnpHUTRNb20yb3k1b2srQytGS3gwVXlmdWVFZlFqcXE5Y3ZQMFVMMWdaZGJmcU5nQnQ1dSt1cDNNT3VwY1VNNFNydkxLOHRJMWxaeit3aWYrOVpJQWRUMkc5cDdnUU0rUWV4NmhjMHp2bkUyY3ByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsb1VVRzYrQ0Zhd08wcUQ5NkdMUnhnYmFZZGpwSXQ2bXZVL2xYNFBRd1c0U294ODdtSXhBTFozU0RvdW5ERDlYSjE5eVpNdUx5SU1WV3N1SFY0b1h3NUdYZEdDMVErTkYwWlhnTm93ei9BaVBkU3hNbjhSVkdTWVlsMWFKNzM0ODlrZGpHSzZvMFMwaHB1MUFvS2MrNUxMSzh0STFsWnord2lmKzlaSUFkVDJteXRVOTVCc01FZTI1c0NvK3JvcThNc3J5MGpXVm5QN0NKLzcxa2dCMVBaZWpRdDJKUUMySm5WU1dYZml2dVRMZ25rRm12SVFhMHltL1JSekRQdG9nWmc4ekZZL01lbUhzbTBCL2ZuM0dwOXFZTjVtVDIzVWhwMXJPdHJJanRqQXl5dkxTTlpXYy9zSW4vdldTQUhVOXRFbVFPUFpKUW5pTGMyVy9FV2NSbjh0TE9qcUtzVFRxQ0JmV1ZweHVZNmZZMUtzakJNVk04Q0N6amkzY0dNZWw4c3J5MGpXVm5QN0NKLzcxa2dCMVBaRmJIbDZnZ2hwMVU0VlV6U05QQ3hOeXl2TFNOWldjL3NJbi92V1NBSFU5aUpHaU1DZWJZZ2l3alpJck44Z0xpM2NhM1pwVmc3TzlhYUlHMXJGQzdPZE1YUmFucHNkSHR6TEFTODdKVGR0TVRJTm5WdSt5YkxpNit6TmY0cS9QSGZMSzh0STFsWnord2lmKzlaSUFkVDIwbk9LUHQ0bVpXa3JwMkZLVnhqMGRXNjRrcDlyekdjbzRaWGxmWGtFK3daeitQUEFpWkhKaXRQUUxMdjRhTWdKOG9PdEViQmd4MEhxOVJ0MlM0Z0Rvdz09XFxcIilcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICB2YXIgZGMgPSAkKHB1cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChcXFwidmFyIGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2VUeXBlLFxcbiAgICAgICAgICAgICAgICBpbWc6IHBpY3MgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBiYWRnZSArIGRlc2MsXFxuICAgICAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IChtb2RlID09ICfmlq3mj5InID8gZGMgOiBwdXJsICsgbGF6eSkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKHYuYWlkKSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JywgLy8n55u06ZO+5pKt5pS+JyxcXG4gICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsIC8vbGF6eTEsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ3loYycgPyBnZXRIZWFkKCfokKTngavomasnKSA6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfokKTngavomasnLFxcbiAgICAgICAgICAgIHVybDogbW9kZSA9PSAn5pat5o+SJyA/ICd5aGMnICsgbW9kZV91cmwgOiAn5pat5o+SJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXO+8m1xcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nKTtcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmNVI1TzM5NkoyMkZ4a2JRYmtYWENwZ2dmdWFkNW8rM3A5N0xIV2JJcHRvdzRvK01SUXRhUDAvOHdpeUpDclpDYVpZVzY0d1UxQjYweFJCUXRiZEpDRWdSdUhob1pzYkdBWkJBNDMvVFh4R3dJa0Nja2JWNm56SGhtOTNEazVEaUM1STVIbitDZmlCTUU0eVFvMzlPVUp5M3BHQVdsakQxc25wekdoQmoxYjNIclR2eWtqRmFTUGduUy9NVWRKTWYwUVpJU05HVTh6NW92YW5Qc0grRjVXc1FnSGdJcXhXOWV2VjMrdGd5ZkxVZEZSME40RGx0TFlydzd2Q1BnelBRWC92d0JNUHk2WWNWdFNWS2piNlF6RmF1VE4rSjJJUllycGF5MTVha0Frb2ZhK1l4L2ZOVGVmNCs2WmFWem1YZVphRWFqMGJRL0hQWmlieFR6M1MrRG1VVmRnWXUwSFhNeTBDRkNYU3QzK2VPVU45YytFbVZBTHJOTjhPcVdyUGVrcnZGMXFOMVVLdjZrQmNCRVAvU3drdWZzM3ZNMDdmV3YvUk5KWUI3aEVoc29JeHl2SFFPaVBZQ1REK2VVcytmaCtVOWJSUkFVelJTbFhDemhXWGpEZkNKalkvOUIybDRScGgvbndvcEVNcWlpNXBKQ0pVUFRjL0g0VWZ3OUZPTFpteE1IYkVpV2ZmcDByZ2JwSG9LblJuendZZmcvUks3bjl6TEFkR0FLLzh1R2Ewc2xaNUlUMVhVZXFyUHNDcXQzTUg1RzJteXhCRGxxRDBZUVViNk5XaEk3cGpqcGluNmJXMnRod3pINE5UL1RwNENXcEhsVnljQlZXc1NnaEd5U0JFUVJwQlFLTE9UdjFFdk94Z0Z4aDlHWWN1OVQ2V1B1ZmJFbkRnL0xLOXJncjJwd29JM1lJajBwMkJiQm1YN3ZNaFB4S0tMcHhaaTQzSndWZjlIeG4zMU5hWVFpLzBTMXpUQ2c5UzI2dFVnQXE0OHJpK0VpM01IVWtJNldzTWJBNzNMbmZnQmo3N0RBbFFsNVFPa1V2L3BIaHlZbGlpUTJYWWFZeFNIK2hHNCt0QStLNnVQMGhES2VRTGsvZjl0N2krNllPMFUrOEdpL1h3SEFzdDZDTDdJL0tpQmZGUG5OWUx4WkJ4OUUwc1FlckkrOFlLRjJKZlRvdHZIZmM5aVNmM0xlQWNVeld5L0dzWXIyMHF6RTErMmhxVW54UWJxaUVqbGFNcWVyLy9RbzU4T3crRm1wUXAxd3UrN2hnZnI2UmtLNFl3eGtld2VYaE9SZkNCTnFJQkp6dHdaMWZCMG1icFJOM2NrbnpEaWNyYW1tM2pXa0RpWXpmL0pNM2hZczNjcnlsZEd5WHFyMjhKNnU4eExhU0RYRi95VVF3YlNGV0pNc3Q0K2lqUzNIN0RVNXdZamdraEV6aEJWS3g3MjRMVW1rcFVUYVJUajAwSmdDTXNsSER5eXZMU05aV2Mvc0luL3ZXU0FIVTlxMkNZUjdDOUNJa0d1STBrT0tIMG53S0tpMXhXZjladzFpdmdMeGtVbE9FSUZOcFE4WGQ0UnZpampHTHJ4UVIyem1zcnFMalRoanBuUjlyeWwycXVUbStIbXVpZWpzR01XR0lYS2t5cGRMWVBudmNIZkgyY2xXZ1U3MVZKeFdyejZLazdMaklHejZtRm9qNDVaWjdGL2oxdGpYTWg4bHJZQmxLZFhqemxEY3MyaHM5Sjl1QWN4S1dqUlhteTh1S0M0WnU3TWZWSzBrY0RmdnRBZmNrbmVuUmd3aFpGS3BTSHk2SDhmSWwwV25IUGJVU041L1ExSWlrOGthYUMwTVNiUjhLVjQ2dmhFZXZRZFBvZXhYN0NqcFNqWmtGQUtTRi8ya3VEWHlHc3pMejJoTk9rRzBpMUJta3hoamM2My9BUWx5S2l6azMwTUpCZk5QVkU2eTlxREVzZFhtTE1zb3VIOHA3MEh5SC9Lb2VseUFraStVZmRsS1FOajE3SG9ZR1NpblFrYmIyaUZXRzlORE9Xd3JqOFpRdVhUaU5LVFhKT3JIOGxUMSsxNjRFR2pYZTUrZnpmVW1BTTBDTFJNVFIvTnE1ek5WZ2U5UEYvVlBOZlUwZE5WY29MbVlQNkRUVTVPemcwYnNveDFhOFNnbmR4RlI5YlNOUnpabnpQR0pvNkhLR2NmYlZhU1VGUUNUZDZVYnpUZGNwTERUUXF1WndQRmJkZFNvWWpkc0Z1a25QQ0UyVXA2cmsvZTFkaDlLcjhtYUU4Rlk4Q09uQnU3QjFXZFBkeXVXZXo3eFB0c2h6QUl3UmVrSU9tRzBvbVNsYnh1WHcwYjlXdFBBWFJNVGVQZ2FiRHU4QnJ6MC80czBlb0JDUjZjdlhpd0tBWDhERkk5dno0Zm51ck5MZDdoWklrQ3ZBblQzUncvdFN0c1MrOHJGVW1HMDNpYVFtSm4zeVhhaVp3MU1TSGtSVnFXdERaOHpTQWtycW9ZQTdRM3V5WGRKTTZNcUNYRWJDZmdYbGdQNENBOGdMcjh0dndoNG5YRm1ZU2FhR2xFTVlDaGhWc1AwVG9uc2d5R2M2WkhyRitrSDJsREdTcXhNTmVCK1FUTnNOSGdyRVJyaHg2NnhPeWxzSVpFd0xDZXZuZm1RcC9DTHo0TWNDdDBGV3pobkpRMk5BaDgxMW1Pd2I0MmkzWE9qbnRrdEhUMnRRTVFRS0JnZFRuWWpHWUt3MEI0MTQxdWVCTmF3R2FaM2xMYVhXVDdZdUdRYUZLcFhkemttaTVzT2RqVlJ5U2tqVnBBOVlkRWFuU1E1Njg0U2pMWjNCdXRXTmt4SXAzZVF5NDNrK3hva2hQdndqVFZZcEdrYmJCR29DTTh6SUJEeGVxMjJMOUFrY05ZWHV6SmF5L05nM1R1WFdXS0F2MCs4ektkQ1J0dmFJVlliMDBNNWJDdVB4bENESWdWQ2pWQ0hYaWJxc3VQN2pLeVJ6M3RyOW5DWklYKytZQ0FhK1pkWEswUDJlZzF0bEp6ZVdnMjB6VWdFak9rbnNJRmtrMnVCZkwyVUVqTnhkbGxET0lTNzRHcjRCSGJxVEZPdkZCYTFqWmxQYnJmeHVOWTFxL0p6U2RjVkc5MjFlNDdPejhyRkRQdVZFN05mdGEybURmUWw3TTBKVE43VGllQllqZGFBWFBTOURPWU9Qc09WV1VsTzFReGNldHY1Z3dnSTBnSVZocGFYVEk2QXlDMm5ZNHZMaGZoVVpXcmJrZTZzYUd2K04rUWNyQVMvWHF6TlZPMThudGJmTXVlbEZpU25URlNpcllCTnlOYkoyeXRPazVIcU1IeHZPN2NEek1RN0UyemVKSGo4Unl2U0JtdlRxMGpCZExCaUlBaDdlSit4MkpvRVcvM0NiclRiZk95WnorSEZQc083aHN5VHpLYXJEcER2d2Q2R2xPS2dYMlNWbDNTVEQ0YUx1WGQwdk53VlpxSDZFaVJybDhhaFN6THdBRGNZTUlVQkRSd2VHWTNsbnRtdkNYMjF3S1Z0ZGVCR1RvVEtSekRPQVJOZnBHTmJGQkswcndxUHdLM3VZNHRpWHpobW15SmxENksyb1dVNGc5WFlXODJBQmxrNTJNbE9lUVlkMWhXSHJhd3BHcGJIQ0VjNGlxczhOMlNkYWE1QjlxTjRUWUIzWE5OdGkrck5JdEdnOU9wYXN1NW9mZkNGRkliTlptalRjOUVsSzRNd25PVzk5Q0dtNDAyTWE0L2VrMGxVSFBrck04VVc2TkNBRElvdkMwa21yVlVveG5TMEhReHNmZ1dRSWxrTlBEOUZVZk80aUpmMmYzaVRnenQ5aEUyT2dUMkNqS3dLcDhIQ2p1aGNhNUZjczFTbERsaFNBS2VITUg5dzJVZi9uNXVRNm5CMFdVV0NOc1J2OUROME1XZkN4VjdGTnhVbGEyd2NQSWJVdFlSTmpvRTlnb3lzQ3FmQndvN29YR2dDWkZscW03OHZ0cUNiZUsyOGlYempGY3QrNDh0MGtjNmJFaXFQMjhLbllGOG5BVm5GUUkyT0llUXZLYklIQXMvVFhsczI2M1FsYWpkSFVwTUtaTmsvQUJLRy8rcWtXMmRXUUU5V21QQ2VQT3ZkVm1BYVBNeDJ5N0xuM2oyN1VWUlBsSXBuaU82cjZXUDJkVDRhbWZwYTREVDl3OERrdEgwajM5WmE1S2JCanFZVDMwOEVhWDI3eFJ1L3EvTlhjWGhrWFA5SURaeVJTQ2N1Wmt4ZjZUWjRRS3BIbjV2empvdUlhY1NQTVR0YVN0cHlGRHZOR0hUK3hWNkVZdUJxNXIvZ0NkNk9oU2JMREtxSHp2Y0JDREJMTTJPUDQvRVIyc2h2N0dyTDJJYnN3S1hRWTVTVUlFMXg5bmVIMnI1R3g0MVAwYmZPVnBtbEx0Qk5NUkVQbE00alQwT0pqTXVoRC9PdUcyaDQ5UXhlSnFVS3FDcXJXOHJBV2JLSXFGN0RIeEQxbHowek5tNGpFZnNTNi9ZTFNsVHA0cjNjK0ZlZER2YVJpR1NpTG5HRTg3cTViRWR3SzdZYm5WQllNWDZiZENJc0s4UTA3UUprT3ljVU1mbWRDa3FWZTk3UmFDbmxhY0hRYWcwMjRlRm5XSEdGTy9yeC90VXZVWmljMndCcTYveDZqOEFKOEQybG5nbjhYN2FhQXI5UVZzblRKV1lWa3MwaHQzNFNZT01lay9pbkNtTXREc2tTck83K1dURWZDdUNLa2lwN1ZHejUySk1xMnZ6em1teUt5bzJxYThSaFVjY3lYaHltOFdHeDZvdSsrU2lKcXU2Zk16c3dNRzRUdFgvakxSZlgyNFQ4YW9ZcFozbzkzaTlTeGtRbzB0M09RMjBOSCs0bG9Ccld5a3dBU0dGcVdPWC81NTVIbm9Lakd1aGMrNmJNVkZnL2pTM3BESnNYbitmTXU3ZWlkSmF2eVo2VVpqaDBBOEtMNXI3anpBWG5XZTZFaTUvNFA2VnBPVUhZWEtBNXNyRWN6RnBIVVA5UmRWM0l1aUs3NkdQcTZwajVNNUxqS2R3TjVLQk5YdWwwYWdPZTJwSUlTY21zSEtQTXJiMU00MnNEbG9SUWhuZXBOaW84QVJ2MFlEMlE5R0pQT2NCSFU2RVRIV1l6MklpeW45UGlqWlI3WVNwMnA3eWlRQk5HcWpXWUdXdTZMTWxRSWRZUkNKOXBUUnp4dVU4cm56eHhrOFBRQ0Q1cERNUkVDNFpkTW9TWGNtY1ZjSHlNQ21BVUdtaVRSK09yQUNyTHBneWR2dEwra01IVXRaSHZINE1hUjdJeHZpSEZBRVFjenZxSjZMVWtzaTFFZE9MTUkvUnNQY04rUDVFeE1yMnhrMTc2UHNkL3VkanVoNVNTWXNoZmRDcWZrbzlOeGF6aTd5WUk1b2xHRUU0S2lYVXFVa0ZkM3F3a3ZISVZVSWFQMDc1UVQyeVh3VnBzTFRIYUR4ejZGZTNvMGg0TGtsaU84Z0dXYS9pcWtEL0RubThzcnkwaldWblA3Q0ovNzFrZ0IxUFpYd3BnYTAxckRmWWFWVE1WeXhHU0l5eXZMU05aV2Mvc0luL3ZXU0FIVTlqU0lqSWhSa2dweFQvS012NmlIOGxsV0hKMXRqOC9SVENGMENsMmY2V3dUYkZKWWNNYUZsbm1NaXMyQUxWT05QczZVTXZzTy9QT3c1Q2NyNzlzSnppZVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQnpBVkJkRnd5VXFJZW5MSlZzUkg3VnYzTlY3M01xcnFuL3BrekFYdGtpVUFYd3BLbVZ6ZGJlTkxsZWJva0Rrb21zc3J5MGpXVm5QN0NKLzcxa2dCMVBZM21UUm1TdFNrSGJ4QS9GdGNmaGIzMzRCb3oxWXVYNCtabnBCbFJTd3lUVEUxdUdMWWZlcFphMEo5cFRjOFkvR2JFNnpYdWErZmQzT1lrazRDcFk1aElOVkFOR2JHTUQxWVFscGNvL3IzQTZ2OEg3c2RPNUs3U2paOElUNUpTTFZzcEJGVTN5eXFqUGNkVkc5ZHlEL0xwR3hiVzI3UUJvLzh1MlZocGttOUxjTXczaDhoaXA2Q3pCNlRscHdUMVQ2N1hIa0d6OFVhMUMrU0wvRUV6ZXE5Szk4VlRTVzRGUHllY0ZZN0lVYzQwQVhQbXBxS0lxdGE3U2NqQVl2RDhoWkgzZDNVMVU1My9Tb2NKSEtEajRadjFqYm5GVHNqb2RqVjBmSGVZT2R0NTBQRldjT3hYWWF6OGpnZ2RsMDRCRUZGVWswU3BmdjJ6cmROMjU1S0ZyMW00Z1V4eTNLaTd5RkFQaGRLcnlDSi9oalRSSlFjVERuYTZ5UFNmc2VDRHRvUmttR3YweU5kRTBiaTljNHBXUFFnclZpMFFqZHpIMjVYME5uSkFrbDVZVWlrUGxsRlpYaG4yZFF6TG1NaktQMlJLNkxLUkE1QXBIZ09YWlduR3QwQW1jZlV5dXR3MEdZUkc5ZXdvS0FZUTM4SnRLdlJzZFZJaTZGYzRNeWplMkJid3VMb3QrbDZZeHhQMkZla1Vra2k5OGdiUXEwQ2xwdmJoWjJuNXZjNXFJWjFmdmJTTnRlTkhpMk5zRFcraFVYRThPWWgzQXg5d0FLNkJoTTBEaW54bzZPVm96OGFseHE0NHR0cWtpQVI3RzhIWHptdU1OakxzK2E5K1FJOXFlNkRTYkFCUWo3VUZFaFBjVjFlL2dQVC93Ui9zNW95U1NMdjMzMHRqcnp3bzdwbExvdW5jL3NhN1VlQXhCZXJRVXF5MkFsNDFEYXdGTGVLK21hK2FPTWJPZVo4ZElCYkdaaldSSjZqWFpJZU01ZGtXb2FZNWNSUmNDcDA5cUZtbWhsL2NXc1FWMi9LZnEvRGEydTM4U2ZYckkxVksyZWc3QzJPdms1U1Njc2xzUk5RMFFnb3RDKzRNQ1VSRU04OVJlN0lCOS9pd1d2Kzc5cUkzUy9IbktmeHJ1RnZPV040L3dXSFI2OW9jYWhHeE8vMXQ5dVpRc0tMOE5oNG1GK0xBRllqaForUjRJcEJWdGVYeTZmR2xXOGFRUTFzem0vUzlpSWsrallja2tTbm9WaVladG0ydkdzWlZDSU9jbDB2ckxIbVpNVnlpL0dKOFQ5bC9pU1FxKzlOQURtV1N3UnNXOWpyS1IydXl3R3M5QmhGZXNiVjRYSlhFdnhNTUtqSHB3aHRaRFFBRktLTGZqVTRsTHVQMWtHMUd6M2ZRZ1ZHMENLZ1FyR3h3eWc5Sk5GeDhsSzBwZEVPTytEYVh6VHJIb1h4TTBiSXNmY0xZQ3dLNWxsSUNLQWs4Wk1UNk10YUhNdjB5N2V2TWpCWi8xWWx2UTlla0wwZjYrN2hXN2JHVGhFT3k3eDlJeXliYm85eFU4a0dRMEl3U3lzYkg3OTlleWZLbmxaWlhkVS9ueDRXbjFhMUNQeWdLMTRLdGlYVGRGRFEyTGdDT24ycW9QWmY3TnRJRnhkTDZ5YWVwK0NxcTJ1RU5vcGcwRHp4VHpIYnFYNkRtY1A3UHllakhOT1ZVZzN3REYyUndkM0lreVlDcWdabk42RXJXMVYyNm9pbEZZeVhGWit2N0VIRThCNk1oTG54dExHa1JaWjArRkZJNktuK1hvZTdMTCsyWmFEbzQveXlua1ZSN0JGdVNxaHRLTHZ6amRieVlvVG93aW04NWM2UnEvUkNYdHdnOVJnNHFTRVJHampaeUZjSlEvUTZhSmJ2MExwRXlSbjNxcHA3NXVUM3pjYlRTUlJUVmp6dmN1WElFcmdyMUQvUHVnRm1oT1dlLzJwQjE1alU0MGllKzNjODlveWlhZUlPLzVza2R3UVB6ZzYvWUhOVi8xc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGQWUxald2ZEJNdW5WUjhOMlJGU0FPOE1rSUo2bzhMdlVvektEa01RQnQ1cC9jV3NRVjIvS2ZxL0RhMnUzOFNmWEQ1MmdLRDZIOFhWS0ZmbURIYW9TaE1zcnkwaldWblA3Q0ovNzFrZ0IxUGFtYjBxYWJUODNENnFuL2EzR2xIeUd4YW1aZ1JIYUsxNnZtWkV6YW51VERPekcxYVVwdkVDdFJCOEVNZ2FwYVFYTEs4dEkxbFp6K3dpZis5WklBZFQyNnZGcGdhMFpSTFdSUDNqSDB0eXJOWUE3NWVDVGY5ZElxallHY0FBMXJzVTB6ZWVwZE1aOE1KWGQ1K3hiQWFYQS91SmZzR2pQSTdwc1FjOEpuK2ZtM01MaytOQ0VGOExzUTBPdGdsSVhMKzYzRlJ2eUc3bk1jZXZINGkvWFQwQjFCWE5QTDZyOGk2Ym5iZStRSktZTUE5M1BkYkJjRHNHVFZhTGlKbFlkRU9UZmpZYnBMVVJDZGx4OUsvcHVFWFcrXFxcIilcXG5cXG5cXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIGRjID0gJChydXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovIG1vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/IHYudmlkZW9zID49IDUgPyAndGV4dF81JyA6ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKSA9PT0gJ+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/dXJsPVxcXCIpO1xcbn1cXG5cXG5cXG5sZXQgbG9jYWxIdG1sMiA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwge30pO1xcbmxldCBnaXRIdG1sMiA9IGZldGNoKFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvWnJ1aXJ5L2hpa2Vydmlldy9odG1sL2ppZXhpLmh0bWxcXFwiLCB7fSkucmVwbGFjZSgvamlleGlcXFxcL2ppZXhpL2csXFxcImJpbGkvdXBqeFxcXCIpO1xcbmlmICghbG9jYWxIdG1sMikge1xcbiAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcIiwgZ2l0SHRtbDIpO1xcbiAgdmFyIHRpdGxlcyA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFwiLCB7fSk7XFxuICB2YXIgdCA9IHRpdGxlcy5zcGxpdChcXFwiJiZcXFwiKVsxXTtcXG4gIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcIix0KTtcXG59XFxuKi9cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mjqjojZBcIixcInBhdGhcIjpcImZlZWRcIixcInJ1bGVcIjpcInZhciB1cmwgPSAnaHR0cHM6Ly9hcHAuYmlsaWJpbGkuY29tL3gvaW50bC9mZWVkL2luZGV4P2FjY2Vzc19rZXk9JyArIGdldFZhcihcXFwiYWNjZXNzX2tleVxcXCIpICsgJyZhdXRvcGxheV9jYXJkPTImYnVpbGQ9NjIyNTMwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZjb2x1bW49MiZkZXZpY2VfbmFtZT0mZGV2aWNlX3R5cGU9MCZmbHVzaD04JmZudmFsPTQ2NCZmbnZlcj0wJmZvcmNlX2hvc3Q9MCZmb3Vyaz0xJmd1aWRhbmNlPTAmaHR0cHNfdXJsX3JlcT0wJm1vYmlfYXBwPWFuZHJvaWQmbmV0d29yaz13aWZpJnBsYXRmb3JtPWFuZHJvaWQmcGxheWVyX25ldD0xJnB1bGw9ZmFsc2UmcW49ODAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yMi41JTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJztcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSkuZGF0YS5pdGVtcztcXG5mb3IgKGxldCB4IG9mIGxpc3QpIHtcXG4gICAgdmFyIHVybCA9IHguZ290byA9PSBcXFwiYmFuZ3VtaVxcXCIgPyBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcIiArIHgudXJpLnNwbGl0KFxcXCI/XFxcIilbMF0gKyAnI2ltbWVyc2l2ZVRoZW1lIycgOiBcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD1cXFwiICsgeC5wYXJhbSArIFxcXCLvvIbvvIZidmlkPVxcXCIgKyAnI2ltbWVyc2l2ZVRoZW1lIyc7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogeC5nb3RvID09IFxcXCJiYW5ndW1pXFxcIiA/IFxcXCLwn5KwXFxcIiArIHgudGl0bGUgOiB4LnRpdGxlLFxcbiAgICAgICAgZGVzYzogeC5jb3Zlcl9sZWZ0XzFfY29udGVudF9kZXNjcmlwdGlvbiArIFxcXCIgXFxcIiArIHguY292ZXJfbGVmdF8yX2NvbnRlbnRfZGVzY3JpcHRpb24gKyBcXFwiICBcXFwiICsgeC5jb3Zlcl9yaWdodF90ZXh0LFxcbiAgICAgICAgcGljOiB4LmNvdmVyICsgXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICAgICAgdXJsOiB1cmwsXFxuICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgIH0pO1xcbn1cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mlrDnlapcIixcInBhdGhcIjpcIm5ld2JnbVwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpIHtcXG5cXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT9hY2Nlc3Nfa2V5PSZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYzNTk1Mjg0MCZzaWduPTZlNGRmNDU0MmQzOGVlZTJmYWJmMjEyODg1YjkwYzY0JztcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBzb3VyY2VfY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNF0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5YmN5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMFxcXCJcXG4gICAgICAgIH0se1xcbiAgICAgICAgICAgIFxcXCJjb2RlXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbNV0sXFxuICAgICAgICAgICAgXFxcIm5hbWVcXFwiOiBcXFwi5pio5pelXFxcIixcXG4gICAgICAgICAgICBcXFwiaWRcXFwiOiBcXFwiMVxcXCJcXG4gICAgICAgIH0sIHtcXG4gICAgICAgICAgICBcXFwiY29kZVxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzZdLFxcbiAgICAgICAgICAgIFxcXCJuYW1lXFxcIjogXFxcIuS7iuaXpVxcXCIsXFxuICAgICAgICAgICAgXFxcImlkXFxcIjogXFxcIjJcXFwiXFxuICAgICAgICB9LCB7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs3XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLmmI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCIzXFxcIlxcbiAgICAgICAgfSx7XFxuICAgICAgICAgICAgXFxcImNvZGVcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs4XSxcXG4gICAgICAgICAgICBcXFwibmFtZVxcXCI6IFxcXCLlkI7ml6VcXFwiLFxcbiAgICAgICAgICAgIFxcXCJpZFxcXCI6IFxcXCI0XFxcIlxcbiAgICAgICAgfV07XFxuICAgICAgICBpZiAoIWdldFZhcignaWQnKSkge1xcbiAgICAgICAgICAgIHB1dFZhcignaWQnLCAnMicpO1xcbiAgICAgICAgfVxcbiAgICAgICAgbGV0IGlkID0gZ2V0VmFyKCdpZCcpO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICAgICAgfSk7XFxuICAgICAgICBsZXQgbGlzdCA9IGRhdGVsaW5lW2lkXS5jb2RlLmVwaXNvZGVzO1xcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxuICAgICAgICAgICAgbGV0IHR5cGUgPSAoeC5wdWJsaXNoZWQgPT0gJzEnID8gJ+W3suWPkeW4gycgOiAn5pyq5Y+R5biDJyk7XFxuICAgICAgICAgICAgbG9nKHR5cGUpXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUsXFxuICAgICAgICAgICAgICAgIGRlc2M6ICfigJjigJgnICsgdHlwZSArICfigJnigJlcXFxcbicgKyB4LnB1Yl9pbmRleCArICdcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgICAgIGltZzogeC5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgIH0gY2F0Y2ggKGUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGdldEhlYWQoJ+mTvuaOpeeCuOS6hu+8jOetieS/ruWkjScpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgICAgIH0pO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeeVquWJp+e0ouW8lVwiLFwicGF0aFwiOlwic3lcIixcInJ1bGVcIjpcImNvbnN0IHsgQ2F0ZWdvcmllc0hlYWRlciB9ID0gJC5yZXF1aXJlKFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFwiKVxcblxcbi8qKlxcbiAqIOiOt+WPluWIhuexu+aVsOaNrua6kO+8jOWPr+WKqOaAgeWPr+mdmeaAge+8jOiHquW3seagueaNruWunumZheaDheWGteWkhOeQhlxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXG4gKi9cXG5sZXQgbUNhdGVnb3JpZXMgPSB7fVxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjY2F0ZWdvcmllc1xcXCIsICcnKVxcbmlmIChnZXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCAnJykpIHtcXG4gICAgbUNhdGVnb3JpZXMgPSBKU09OLnBhcnNlKGNhdEluVmFyKVxcbn0gZWxzZSB7XFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXG4gICAgbGV0IGNhdFNyYyA9IHJlcXVlc3QoY2F0VXJsKVxcbiAgICAvLyBsb2coY2F0U3JjKVxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXC5fX0lOSVRJQUxfU1RBVEVfXz0oLio/KTtcXFxcKGZ1bmN0aW9uXFxcXChcXFxcKVxcXFx7L1xcbiAgICBpZiAoY2F0UmVnZXgudGVzdChjYXRTcmMpKSB7XFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcbiAgICAgICAgbGV0IGNhdGVnb3J5ID0gSlNPTi5wYXJzZShSZWdFeHAuJDEpXFxuICAgICAgICBsZXQgbUZpbHRlcnMgPSBjYXRlZ29yeS5maWx0ZXJzO1xcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcbiAgICAgICAgbUZpbHRlcnMubWFwKGZpbHRlciA9PiBtQ2F0ZWdvcmllc1tmaWx0ZXIua2V5XSA9IGZpbHRlci5saXN0KVxcbiAgICAgICAgbGV0IG9yZGVycyA9IGNhdGVnb3J5Lm9yZGVyc1xcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcbiAgICAgICAgb3JkZXJzLm1hcChvcmRlciA9PiB7XFxuICAgICAgICAgICAgbGV0IG1PcmRlciA9IHt9XFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcbiAgICAgICAgICAgIG1PcmRlci52YWx1ZSA9IG9yZGVyLmtleVxcbiAgICAgICAgICAgIG1PcmRlcnMucHVzaChtT3JkZXIpXFxuICAgICAgICB9KVxcbiAgICAgICAgLy8gbG9nKG1PcmRlcnMpXFxuICAgICAgICBtQ2F0ZWdvcmllc1snb3JkZXInXSA9IG1PcmRlcnNcXG4gICAgfVxcbiAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFwiI2NhdGVnb3JpZXNcXFwiLCBKU09OLnN0cmluZ2lmeShtQ2F0ZWdvcmllcykpXFxufVxcbmxldCBrZXlzID0gT2JqZWN0LmtleXMobUNhdGVnb3JpZXMpXFxuLy8gbG9nKG1DYXRlZ29yaWVzKVxcbi8vIGxvZyhrZXlzKVxcbi8qKlxcbiAqIOe7hOWQiOW9k+WJjeWIhuexu+mTvuaOpVxcbiAqL1xcbmxldCB0cnVlX3VybCA9IGdldFZhcihNWV9SVUxFLnVybCwgTVlfVVJMKVxcbnRydWVfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2Mvc2Vhc29uL2luZGV4L3Jlc3VsdD8nXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcbiAgICBsZXQgY2F0X3VybCA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXCIjXFxcIiArIGl0LCBpdCA9PT0gJ29yZGVycycgPyAnMycgOiAnLTEnKVxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcbn1cXG4vLyBsZXQgcGFnZSA9IDFcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXG5pZihwYWdlPT0xKXtcXG4gICAgXFxufVxcbnRydWVfdXJsID0gdHJ1ZV91cmwgK1xcbiAgICAnJnN0PTEmc29ydD0wJnNlYXNvbl90eXBlPTEmcGFnZXNpemU9MjAmdHlwZT0xJyArXFxuICAgICcmcGFnZT0nICsgcGFnZVxcbi8vIGxvZyh0cnVlX3VybClcXG5cXG5jb25zdCBlbXB0eSA9IFxcXCJoaWtlcjovL2VtcHR5XFxcIlxcblxcbkNhdGVnb3JpZXNIZWFkZXJcXG4gICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KCduYW1lJywgJ3ZhbHVlJylcXG4gICAgLmdldChkLCBtQ2F0ZWdvcmllcywgcGFnZSlcXG4vKipcXG4gKiDojrflj5blvZPliY3liIbnsbvpobXpnaLmupDnoIFcXG4gKi9cXG50cnkge1xcbiAgICB2YXIgc3lsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHRydWVfdXJsLCB7fSkpLmRhdGEubGlzdDtcXG5cXG4gICAgLyoqXFxuICAgICAqIOWIl+ihqOaVsOaNrua6kFxcbiAgICAgKi9cXG4gICAgZm9yIChsZXQgZGF0YSBvZiBzeWxpc3QpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IGRhdGEudGl0bGUgLyorICcvJyArIGRhdGEuaW5kZXhfc2hvdyovICxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLm9yZGVyLFxcbiAgICAgICAgICAgIGltZzogZGF0YS5jb3ZlcitSZWZlcmVyLFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBkYXRhLmxpbmsgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi5Luj56CBLeWKqOaAgeWIhuexu+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+eggS3nmbvlvZVcIixcInBhdGhcIjpcImxvZ2luXCIsXCJydWxlXCI6XCJldmFsUHJpdmF0ZUpTKCdMbGUwbmF5ZHN6UTI1MEloT3lkUkExa0pyMFhuTmEvckZsc2ppRUtaVzdyZXRaRmV1SE5KbFBLV01FNGE5QmNmQjlCMGhUYXdZTTh2K2hFd3pGM1JWTjJzUi9pSDhOdnlIWTZ1ektOZ2pNYko4NUdMRWcwSnlqUEl0ZkdHUmd3SkZVVk5MMUlMZVJOYmFlMzlYVnJvRDdXS1VLQlBmdjdId3FqMkhZRkg1dVFMcE9WWnZHNFVjWU96QXM3ajhOaWFQRVVKTVM0MjRCa2JuczFOZjZGSURYbGZrTklJc1dCSFdSZE82bXA3M1Z5MnZ1NWhnMWFHMEFWZWs1K3BRY3Fha3hFTTljV0dnQ0pDNW1LcFVpWlNFdFA5MnNLQTlTSysvTkhzcWYxM0NPdFFSaWl4NmdGaHlGaExlejcrR3B1U2JMSDEzazFGRFVaa2lsWTdPQlA4eUNaUCtZbTQxWWhpL3lJVHgzRWxMbWdqaUJleGowcVRManJLSVhueDRERFhpaXBTdy9ZcFVOZHF0Z1VYSE5pOThhN2NHdExFKzk1QXFrMkRjVi9IM09HNWhwc3dTSEMyK2lsclJMUDgrVHlMVG9nckZVYUpZTXhPbXJXd0FqVU0xRmZMcy9NU3g2MDFXL3VlRkRBbWhPL1pab1Vad2YzTVliaHRrditCeGd5Ry83NldmREFRYkdBUko5NE5halo5cHp6dmN1WElFcmdyMUQvUHVnRm1oT1dIay9NU2RGRGxCcU1EcEU4eDk1WWo2dEw0d0ZzdzJPYUdPb2U4TWhzbmlGWUVGOEJxTVBSZWQwejdjQkM0Ukd4RDVOZ1YxRktXSEFQZ1pQWUZLamdPOWdsTkp2NzFJU2dJbzlTS1JCRWpLbUU0Y0V2Yi9rSkVPQ0VETGpCUXJWc09UMTFPdVpjWnVkQ1pFT1R6bXJpR0hkUGZmbEtCckZzRWg3eWxVdFBaWUVjRXBDeTFXaDFlMVl4TktaaGJPdWswMnd0QTdGZkhOUDBEcUlaODNGOFJGRzM4UlkzNmZGSS8vekxwQ01FTThVWGh6bGp3NXFvU1B2emZoZVIxL0dGM01qakZmc3pYWjNVQ3ZjQmcyd0MxT2tBVktwMHVTY0dMbWVxNlFhRWJRTjJ1bnowMnBwRlY3ZUs5SDczeUQxRUVsTktDUUNra21CNmR4cHF0a1Y2SmhSc3hpZ01jZVhuNGRVR3QrQXRma0EyS3Z5bWU1cmt1cHBCY2VGdk1maElGc3hZR1IyVUU5K294NmtmbFlCdFBwNTVRNnVsSUt5ZGhyazVUQVR6TTJpdjlmOXhxWXBKSUlCbnRJVklvZjNPYW5ISldyRXR4UTJjMWdjdk90L1diRS9sa05kclEzM0lPWXJPRmIyY2JaNE0vbGg1blZ0emlqdnBZZTBNNk81ditJb1pNcE9pVnFzZTd5TmlYaEFIeEUwNXppaVZjajlwaXpwV3pJZWJ6TzRnK0trYXFKckJTNnl6NVFYbWlGY1dWRVNJSUlvdllIZUNLUkRMZ0JvanFKZFRlSVhhUi9LZTQ5c3QwM1gySFJ3MnIwQjBNbmlmOHRFUGRhMWdsY0JMc1RFWkVXMmhia2R0b0VpY0lSRnZraTU1eDlIUXRRVDR6cDJUV3AzYXU3VEl6d0RpdENVYmJET1YxekZnU0hoMDg3M0xseUJLNEs5US96N29CWm9UbGg1UHpFblJRNVFhakE2UlBNZmVXSStyUytNQmJNTmptaGpxSHZESWJKNGlCcCt4WGhqYysycnZpRGFBT3lGQzl1bHZreHphK1RXNE1hdDBoeHRZRHJJbCtEcG91ZWp5SU1UVzhEc3ZYeFBYQ0FRYm13R2xERUFmT2l5cXRxTFE5SGY4Z0RYRTM1UTdheTB5QUJFZWoxcUtXZ3JqL1luQmJZL2RZQU9QU0hwbWxkZEZMSm5LcEFwZE1YdllCc3dyV0YwQ1JSU2IxczdDWlJnTWZPUXpLNkl6Ni90ZWhhc21PczdNbDl3L0hwbjVuS2gxMCtuMGlHWE12eDVJSStTR3BvTHVlQ3RSbUo3VVZWQ3RERzZ4ZXZ4WU1tMDRzQUdHR0phQ0RBaEdIOGljYmhJRTJiK29xREZFcG1VMGVZN1J0Rzc5aFBoTCtnWFlPeVlOVXZKcWVqbGJaMS9PZHZMNW5ZeTZtMzBHd2wzejd3NWVzbFpDVUEwa2FSczVrbVVPTHZMMFFRUEQ3NGZhZ0FkcUdzTEhVR0RXYjRCekNMRjJNWUxIeStEc2NrSzNGWUpNdzBVNXFON0w3MDBzVlNhbGY2dEs5NmRXcXpuNWVJcmV3ZjFpR284M0ljd3o5bzgxSm11S0ExTHBJU1M5MDk4bndBeDFxUDFGelBjd0loVFNWdVI4K0FvbzFwM0RpMFdMd05LUU5PSTh4NzVEbWFFNkJMUGlEa2FETEtKeWMrYnpYMGhJQzNzUGIyK2Rmdmxrc0NuSzIyY0doSzI1RnM5T0ZSM3JGL1ZGVlNSYkRHNys3QXFPa0UyNGJva0VVamQ4blM1SGpxcDNEL3VrKzBYekJ5OTIyMlg2YkptSmh3RmxLejQ2VEJWWGV6em0zZHpRVzdPbCswT3FmL0V4MkFZK3J3UCtNNnhGUkhVWC9qMkdjR2E1bWhiSlV6UlJCZE81SXByVTJOczZIdFNYQzlJcWN4VzFWbDViQ09iTUc5K0h2dnp1MHNHN0FXTmd1WkpDc3hrSlhoaGd3ZjJHQjZGUHU2K29GUno2RDRBMDVzc0RzTExWeW1aNWNnVGJEY2JlcTE5VW1pWWFtM1BuN3FXSWNqdWg5T3NONHRpRlRyclVFUFpJUlg5WGswVUdEWWZhYlExcFhmeE0vK3lTaDhxN2R3blZKL2c3bHVpaEdPZWVOd0hYQUZBeTRuM2FjUEgyWEJjL21zeDVYS2dJcmVPUk1WWS9jRmI5S2NtM29XWnp6SzYrSFNQODV0a0ZLS201NWhnOE14d2k1SXg5UlFFL3BHQXgxY3NvdlNwM2pSUDBoNjJvNk5oRmt0Q0RLV3pqRVVsOWJtYTI4Zlp5aVk0ZFhCRXNIQk9wS3ZCekFBMGxSa2V6VG5FdnZYczlaNTVVckFhOFpoQUZ1eDZaRU53NGNNVEl1U2tWZncrVi9VL21vbWx0Sjl2R1BnaXFiNW5abDlLdTdkMFJPVjE1SjNRQXNiaE94VDZTZ2tJVnVndVZhVFZSY2owSFcrbU1OWUtiUXluck5SQXFLRGVKcXVWeGM5SGxQTTZMOHFQblpJV2JiSEFmVWZHYncwbFJsd1N1T3BGNytBMldKTFo0WHpTZ0hiY01Ya3VselBQRFA5L2NhUklCOGUyVmt6RVpTUG5VaVpBcFdQNndXdXNIdUIzOVdBTTc4K05CaTRCcDJteFdqTEtITFdRTURlSVhYaGR4ZWNLNXFVVWZZTGdJVGloOURlRnBnTE5XY0JMR1FGYmRTTmtKM05XcGNHNTZEYWpESXVMVWE4azAwaTk0Y0p3QXpNa0pCeE5KYjVlaEJSa1Z2V1hvc210SkJNZFJmNk5FYnNWOXU4dnBaak5Fb2dVa25tbHRKOXZHUGdpcWI1blpsOUt1N2QxWnFUUHpvcHdaaGgraXREcFViMExyMjdjNXdOQUFFanJwaE9xZmUwTmozOUNOVzBMSDRXeGpmMmx3bHhNdE9LUjFIUUwvQ1B3NTF5eVlKL0xWclF6K2lmM2lJQk5VNG5DZ09idVc1SlVMVHZzUXNzMlJuZUxDdzZycGh4Z01zZGF3TUVnWjlxQ3JDTTd5VE0wRXlsRnhmamlJWktxYksxMEJhZTJOb0hEK0d1b1VLQVFwNVN1NEFxWFNmS0x6bXg0aFdibVNpTlY3bUNCL3JkdzF5YnNQdmdBRmNHODVONTNrTmp6Y1B2YktMT094SFhIWVZXQ2xCbUpwcndKdEhBNkIxV1pwR1dSeDVNL2dEbXNHelZSbVZ1QkR2bVNBWk13SWVWcjViekRFODZtME5xY21nVE5lcHh3cUIreUJCcDVLemQ0MkVBUWh0MkVLNVQyek14dmdUemVTL3ozSy9xNWxSSGwxekswSi9zUXdMeDl6OGxNVmc5UkJiQWUvZWIyMFZvd3pjcVBkZS9xaTBqSE13R2NNYUM5ZHV5VzU2d2xHT3Nua2JleUJRL1BmUlNTcmtVRy92Y2FDYlRhNElUODRaenRwTlFSdmJlVW5JQW9Qa1cvZVo2d09VaWE0SnN5YXc5OVdhOCtFNExqRG1aMHpSaG5TSGdVeUMveWI5clpUMmxFMVM3SkJJazdZWlBYeUEwMGEyTGdLRkc4OFl6VjgwaGkrQVZUd1JaUGs5d2xPN2dSUzJOUi81NzduSXhHMEgyMmxsRnNjbU4xTGhJOTFGRDJWYlZYYnFpS1VWakpjVm42L3NRY1R3d3o3dHZCNno5eU1tckRseUNNdnlVZHdHSTZ1cjlFYWM0cVc2RVV6MXhIMnk1VEk4QWZoeHh4T3JBUVpuRVJiVE1JQ2RmS0dRR0RKZS9UZEtSS1F0Z2JwYjVNYzJ2azF1REdyZEljYldBNnpEUHUyOEhyUDNJeWFzT1hJSXkvSlJOZHZzWDZEbEtkWXdMbkZVUWoydDZIUUhodGprT2xpK3RjT25SbGpBYTMyb3JmeDc5Vk91dmlOcSttT3FSMU4rQ0dSRjJibUtVMWtwREFyeDRWekRkV0pkZEVyYStPa0ZuT05FR3o0WWVjd0VSWlVkNzcrbm5QTDJNb0NNbUVEWWN2WElzMkV1Wkhka1RmbjFpd2VvZ0QwMVFmd3FaSE5GOEh2bEJXTVUvZjZFZHpYS0xxSWdSSzJpcEFNRmdLUnZsUmJhc0hQbFJ1c1NnMHBSTlZVQ1FSNWViTnl4cUZYaExjMitvZWRLOEpFb0xvTUVRNUQzZkphcllnZDlqeTZmT2lCa0c4QzlJSVRCOG15dHl5c3djS3R3aHkxLzFXYkhPN0N6L1JkcVZjeUozNEEycTJaM3l1aTFRNWExb1BtTzBOV0xmbnlhNCtzUk5RcmtzaVE0SHVPMjZHYVpVUjhrV3pGMU94ZGR1YVBWeElOTWI2NThjc1hWdURHWjVNWXBXZGJja0ZXNmVZUEZpdSt4U0RDL2VEenNYQUg2RkwzUFY4T3BEVVBCbXBUZWsyWFhmZUtkcVUycFM5bTdTQ2lDQjV1MnFiaUtDMmM5dkJWMjRNNnM4UmE0aG1kK1BhajRGVHl0djM2U0gxYkxLOHRJMWxaeit3aWYrOVpJQWRUMjJjcjU3anEreXBNUGVOMXk1OURxdjdwc2hEK0pUSThVZ2RTNFFWbEN3RjE3WXJ2SkhQRDQyS0ZFYmdRWSsrMGowZGFseUhZY2dmNThReUFsOStubkJKWlZVVmxJaWxRNnFFUHNIemI2ck1iVjY3WVNxWkhjTHZmQ1RvYlJpNHBhQkNFVXhjeU5MUXZKU0tjS3BaQXVmMis4Szgxekt5ejNNZEVjdXJ0c2huc3hRQStvY0RDMk95NThpeUNLNmRTaklyVFBpRkZRODBCbXBhMkQzbHNjTFZtWTVJUjRvazl0Z2RCZVhJNlhaOHUyazlLTEpXZCtGcXNmOFlPUUd4TzZFSDJjQ0tPMnUwKzNGL0dPejYrL09ydXRMYWhxUjJta1ZHSWRKS3VYZVlHc1puREJnZUpnQkpaOHJJSEMwQzBOV0xMeGlqTExGSmZ6aTBwekdJUkhXNExBSkFoTy9mTHBTTDUwUmxyaE1ZdmJRczRvWnUxcGUrNzlYVDVSUjg4ZGxYczFyNkQ0c0pIWWg2Kzd4M2tQUXVNbHM5cmMxbnl3ekJkbDM1Q0laeEV3NmNBQ2pQOFk0ZG42endOWVBudDlRbUcySVY0WjRyTVZ3STVwWlFpbVY0Y0IxSnlwL3lLM3ZPY0ZlcFdiYTBpTkw3eEFoRUdEdHM4STdoSy81TkhTQ3p3czY3VFNrSjhVSHl3R2t0U1RKQ1QwMTV5cFFDYVNuS21PT3FVaW14Q2FoZlM0ZTRmOVh0ZkJsU2xHV2NaK3l5dkxTTlpXYy9zSW4vdldTQUhVOWp4c0NQMnBLOElwSDhqUnlhRHhhaUdGTHhNbVF4YzVrRGdnNnZHZFA2S3kyNEEyQTBlQmllWGJnUGZYeUhzODJSNDU2OTIySnowcFZBR3NqUDQ0M214aUUrbzZXdjNMbmRubTArRi9RMUhrdjc0UGR2SW1IRE40dXJHRjh0RUIrRGxDRlErbEZTcWgrYkNQSXZoemhlNk54enE4RGgraW96dW5aSW9mSXpyaW8xZ2NyQmZCMFFZZGpYRzBGVFI3cGRONTRtMk1wdkVIMHlmdEVvMTlucnZMSzh0STFsWnord2lmKzlaSUFkVDJ0SFYvQ1BTc0t0N3p3Y3l0YUdyTGFhbzQyRDIyc3N3VFJMUGFHL3E2R2k3RGpFaGh3S2xCeGpqdzdJTXl0SUkzTmtNOGNiK0p0RXlmOHdGa1RFRmlGTFVZaW1RL2hQWEk5M3pyWGsrK3Zxb2dMcnUwdGFYZ3RsTTE3cXRBZnpHUXU4eVVkSTRxcVl6ZUp4WHhmME5OWjJvQmplRHIyRGl3STlPWFBVdUJIYnNMNGMzL253MTBFbTJVNk1GQlVjclpqL0RNYVNGeFZjWjdNb1dsMm9uOEdtMFZvd3pjcVBkZS9xaTBqSE13R2NNZjl6NDllZ1pSUXpMN2hLU1VNNVRQdDM3QW1rMzc5Y2N3cEx0UFRUMjNCaDdVaG5rZEcwR1VvSHZIc3k5OUd4bVFhUjRuYXlPL3JRRmJvcXVzdFNGTHJPODAvUHRuSDhFSmN3UWFRWVpKek4xYjliRDZSckpsNnpRSW9td01mWXV1K204RnNPN3pkNC9jZnI2aGlPZWJIU0tabURQRmQzWFJKZS85Q05uTEdMWVhKTHJZdkV2dEZ6d0Q4QTNuM2RoWFdQaW1rQWlzRjBSKzdQaFE5VkpMV2NHaDh0cUtnb1ZvWjdrekJHdUQ3U2g5YysyU3IrU0FHSDZhSEJUNEZ0MWVzd1VuYitmbkpHaGFIU0MvU3ZvektDTG1XTnJQUTk0YVp1WXlPT3YwZmxQVTlQdjlLT1FVeSs1VXVkbE12dHFsN0JJSmZvNFBpaC9sSzhlMU5HOUpOMEQ5TUx1MmY3K1VCQmNnbmNCOUVodWNLUUNKc1JoUExnWnBYL3Irc0xnbmJTMUhjQks1NnY3cU5tUFFZemxNTHdnVUZRRjdBZGV3VG9lL1lpdUFicWNLY00xTXdMZkk0YmUvZ25HNGM4UjRVOUJQMUdsODFaNVRMWmZXZmUxeDZWOEd6Skk5ODdWdUsyWTcxMG5sRXNJVUFDcDBEQStwM2I2cXcvYkVVRzBib0xQem9OcklUR3RPSXdFYnVYaUFqeGt2aHMvSkF2d0lHNjV2Nm9OU2s3WXhKWnpGTm8rajFmSWF6MCtGQmpXNWNXZitzaU9wM3ZZaGtYV281U2w2YUM3blFyOUR6aE43MFRPaTluQnpIUVJGbFIzdnY2ZWM4dll5Z0l5WVFOaHk5Y2l6WVM1a2QyUk4rZldMQjZpQWRRL0RGN3d5SDk5eklwcklOVTROeGV2YjZIeVZKUGs1MVhGQjFTSWdTSXJycHozRWozSitWaWdwZ0ViaFZaNnFzRmw4QW4yVVlwQWwzeEx5MXVjQkYyeEJ1cVpLWWJwSlV0RDlGd0dlUmtWeUUxdEdxakh0UVloL0lNZ3F2ZmF5TFpCeGlPK1YzVEMyVlBGejJyb0N4eE44SUx6eUtDY2N4SVk2RVlzZzJ3TGIxYjlCK3JXSDRHOE4vcmdDOUQwclhyblFLRWJZcCtsWFhsdHdFU1FnUHpyYjVFb1JQdHk5ZGlibFNCYnhyNFB3RWwvR254UmxGWnBZazhEeWZGSmR1TjgxMjFYNW1SV0tVNjY5bXVHM2pJNExzWHJobDZCVlZNY1hOOWthcTlxek9yMnZUZjZJczVPelYreGdRTkJEc01pZHNKNS84K1UrWkxYb29rdFM3ekI5RGp5RW5UUXhXWE9uaEl3NGs3V3pqNnBtK1pJNVcxTjMwUWJWQitRZk9JZkZ6a0E4UjNrc29EdUl4ZmtnK3NZNmtQR3M3TWNyU1dFMncwV1paVGNpRG9tVE56L2EvQUFSR2FLTEUvZTRrZzFyMHBTRWQ1THFmdjJHUEQwQ1ZHK0lJUnNxOTVITUZyWERJZmYvdzliTEs4dEkxbFp6K3dpZis5WklBZFQyeDlKY2R4OC8rRU1MNnNGK1JCaFpPSWl6ZG5VQ2N2akx2RTNkdmpUMlhCaWNkUUZ6NzFHU09lZ2pnK0hmeXNUYTk0cDQ2VXMvZytpdVdIQTJzZEh1RUdZU0VuUWwvMVhrckdJMXdPcUxjNHhXL1R4ZmNKT1NCWTFmT0kyV05BeXBLU0ozWExxMWI0YkhscTZCVnhSbDdaR3BYSUErNFRqaGpjTldEM2hXMGhRcm8wNjgxdEh0ZzcrYmp3Q3NQa3ZNVXowRzVrUFpobS95cDFadWF5RzhhK2huTEFzdnUvTWxLblBZd3JsVEZQRUxQQ3pydE5LUW54UWZMQWFTMUpNa1J5Q0d2eGFUa2tRL2lmRjdLZHpWbnh5UTJjODh4UXdHY0p3YjVpRndUSXJMSzh0STFsWnord2lmKzlaSUFkVDJlbVd1NFdENUpMOXBZUXlzNnV1VGpwVW55M0dDQnF0bWxTRjdXQXFiL1NETk5HenlOUTdmYThjejZvMkJ1ZUg3bnNld3RMcldJODEzOWtEWTdidXdJSmxaUE5yUU8xNG5LQzRGUmRZVGQ2dEdMUnpkenBSUTNZU04xZWJvcUx5RGFpRHR0MkVlbzJTdU9OU1hES2tEUFV0RE4veUVYaENRY2dVTjdvTEowcDlUVGdzQTRJbTkzUkwvSFhuRVp2cXVlZWhFTjBSZ3V5aUVrNnhmcWp0Ry8vcXJvZGZYWWRaMlhldlVBMGUzUTFPRHF1c29nWjY5TlBUd2NNSUlFQjlPamxDZENYdERsR0Zpd1loOW5zS2FXWVoyaFp6OXBhQUE5NjV5UkNSVDZGU09MeGFuUmhvMkVzbEkvZXhkWTNtNmhuYUZuUDJsb0FEM3JuSkVKRlBvVktTZVY0SGMySytQSHBkbUFVN2xDaTBuQzh3UzZMVnBNU1MxMkI0em0ySml5Ly9yM3JGckNqODl3Q1ZNNHJXTWVIakdORXFJT2tjQUtJcGhUbjhOKzN0V3JMdWV2SkNXOHVDUG1ScU5CSXgzbzV1OUFnZzJDb3hCY2JlS2hTa2d4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnM4UVgwdzMzMFJidCtuK3FmR09LZ2x0VGk5VFVJRStuYWtPd0JVd2xHekdDb3ZjakYvZXNlWWZpc1Qxa0FUWmE1Q0JwUkVoK2ZuYzNMZXRMaDZsSnpiUnpDT1U3aHZZbWZxQ2ZRSUVFMkxLL3dudW83eEtGTTV4dTd3ZGNiWWw3TEs4dEkxbFp6K3dpZis5WklBZFQyK2lGd0QwODdlblM5UW1uYys2VHRHd3lxY3N6dXo2ajAwQkZJUy9TYk1WaG5KQUMrWlFXU29PWVNzemtlblBZbWtTOXlGY1BsRmZqQlptaERpZHlLbnNzcnkwaldWblA3Q0ovNzFrZ0IxUGJHYTJJTDJ2MEpMKzA1eXFwRWsxUlhSc1BkZHF1OUcvZ1pCd1l0YjAyLzY0TEpVYzdtWnR3NUt2LzRVODRvZi9ad2w0YnBxRjlhejVOSnJLS2tGL3hpeXl2TFNOWldjL3NJbi92V1NBSFU5aCt0bDlReGk4N0syaCs1L0I5V0hnekg3WDFpeTI5T1pDb01lbFhEK0NsVnl5dkxTTlpXYy9zSW4vdldTQUhVOWlFU01Pb3ZNa0I3YXZXYWdxZFZBWlh6Yy9nYnBPbHgwZ3NGamhQd24wdWhMZTEyZWZhMG1vVTVaK3hhc2RaTC9HQ2o0M3RDVkJUbUZVTHJ2VGl5Z3BhR2RvV2MvYVdnQVBldWNrUWtVK2hVR2hHN0xqQU1YaGt0RVhidXJHUVpubWN0QkxhVC8zazh0TmJIQXBWZ0tYakxLOHRJMWxaeit3aWYrOVpJQWRUMjNsd0tyNmNoQmEwVjBCenRQekd1SXpGWGJsUHg5Q1BqaWFXWEhoL3NpTURMSzh0STFsWnord2lmKzlaSUFkVDJQNGwwMkJ1S0JERTMwa3Y5QmJGM1NuL3hJOHpzNDlyOFhJRTJUbkdUUVhqTEs4dEkxbFp6K3dpZis5WklBZFQyVDllNmxQcXVBVGUvd3hWM1hUU1RpVURORzVPem15MW56T01TcjBJYmpzNzArYmZGeDhoN1lCZzAwQU1zNmNpS3o0bW5XN2JydU9IbUM0NG5Ya2Zzd3JsNUVMaDRFdFpXU3FyaGZrYXBDb0tpZjNpSUJOVTRuQ2dPYnVXNUpVTFR3MUFJQ1p5QUNFeG45dzZXMmlCVklxMlVVY1dGNk41ZGtFT0RHQUl3SVdwNFlRQjZ3clMwYlR3WkwvWG9HVjlYc0p3M3J6L0UyNFZ6c0FNWUoxanBLQXhJMTJkNzBsL3pBQ1lDa2xVL2R0UkFnVW5LZkNDeHdjTFFxNEtRcUFMZHVteFF3dStkTkJCVW9YNG1QcER6aFRucFVjTldldWRsVGZ2ZEE2VmFmV0Z4eTBHbUxyaGJlTXFDT3E2VEhwN1ZPWlNWVURwNTZubks4T2owYnJybTlBZDNIemU0YWl0VHNnMlUvZmNIKzd6MXJjRUZRcndBU3VNRWdGVC9EYmcrMG4wK29jR0RYb2d6d3N4QVpEeWFTdWJSc210VjA1QlFGVEovQk52di91ZjVrU1k5aS85N0tVN0lGbVl4bDhzcHd6a1RyaW80akFSSDZad1RYcFJsSDk2VFpkZDk0cDJwVGFsTDJidElLSUs1V2s3NEs1d0gzMlNZVHNoVk9mL2l5eXZMU05aV2Mvc0luL3ZXU0FIVTlzUXNWSnptL3BZQWZOZlZoWEdSTUo2U29EMm9ma0g5SitaU25MZkRKRTgwajhuR1dTamZHcW5QOG0zUTdzY2w4Z2RjRXNWU0RWeHFRU3h3YWlSVXdEQmg1T1RDbDdEdm9acUR3b2l4cDBPNVZxS3Z5eDhXQ1V5T09mZnlPckFmNTVvZVVLbmE1cDJJQXdjdHloNElSblVuMTlRUnhJZGErVHgrbktmRDRHUmdFTVA1Szc4ZmIvbWVvUGtiQWRIUFViQ2Y2eUI4eU80Kzk2V21RTXFyRWlhektleVp0amJ2bGlrYk9lTVA1ZkM4bTdPMU8vQ0JuaGZuT3JHWXpIWndIa0NxY3d4QXFyQjlXa2JMTHlITVp2cDVnR2dySW9LR2hGSEQ1Ym5mOWZBenpwUXkrdzc4ODdEa0p5dnYyd25PSitLcWxtWkFveUhWaUg0M0Z6MFhhQTBSbW1CYnBISmZBQmNKbDJwQWtLb0hWVWNiZDZ4NUN6UlI4L09BdG5xT3ZOdEN6aWhtN1dsNzd2MWRQbEZIengzTEs4dEkxbFp6K3dpZis5WklBZFQybGhCRjNIMFBvOUZFV0NBeCt2MG5mZ1VzWVdkMml3aDg5eUFNcjZhcVJkd2JNWmZjYUlQcmZNR2loOFE2UlVTZEdOdDlyMmFXK1E4NXFIRkp0aTlBZldNK24rbHNnbHcyeWNXSm04SEJCa0ZMbVEwV3BzTmdFQWpkU2ovK3c4QmwxVVV3aHhuTGtjL3pzaXRLTFJ0ckhDck5XUmNQOVZMM1RkOEhhVU82ZlNscWgzNlJ1Y2Z3OFRRMUIxTVdvdXBqaFBSOE9UeitDVWtkeUtQYkU3VWoxVURwaDlrWWFxWFBNbDEvNm1wcTAyYkxLOHRJMWxaeit3aWYrOVpJQWRUMk9QZlpxZkVyUHd0OGZKbG9vM0ZIb1pzSGozdU5SMHlPaklTWlFGWGZoZFdZZ3RVbWIzWE5JREhvSEd4V25xNU02ZFIvaEJCbzVWNGkrVExadk1VcWVGSmNSNG55MVREUmQ4dE8zZEJkOTA2UnduL0JDcUhLT08wR0tNdnhGQTl2OGZUbTFNUGZ5cmdObHN3WEF1Wmp5SDlzcSs1MHdsWmhxb0pNVmxLMVVxK3QxQjhJS1llWTJkMy93NTN0ZWU5Z1M3dFFJRVNLVkxSUlNNZXljdUxnb29NSEpIZ2hMWmRieUpwMFkrK2tFcXExckFMdkVLY2Z1ZE91UzAyYTFPNkUzMUE5WXltUVB5VitvZ0E1UmE3WU1pTGdRNjBUMGVvU2srY2lpNGhQS0p4ZS80YmUvWDMyTjhwSUlCTEhuR3FUdGpFbG5NVTJqNlBWOGhyUFQ0VUdOYmx4Wi82eUk2bmU5aUdSZGFqbEtYcG9MdWRDdjBQT0UzdlJNNkwyY0hNZEJFV1ZIZSsvcDV6eTlqS0FqSmhBMkhMMXlMTmhMbVIzWkUzNTlZc0hxSUFlUHlDTnJESjM1ZHpVcThzcjc1azVwOXNmc045ZjZkenZ4QW9FZ056Z3dWektQRmx4V3F3elV3YXpXeWRHQ1NXcERsSEtnT0lMWUhpTHpaZGZINXB0Y2w2UGlDRGJVZ3R4TnJRUEtOZ1hVQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlCb2d5YkNvQVNwR1N2L2RQL05hOTlhYWZCKzN2QTZ4QzdzZzkxZ0dSbXh0bFhOdllpQ01tRER6Q1poTWZuZi9xaHgxZjh2SU9EcmpMNWlkNmp4SHJtaEFSY1VPeEQ0ajkvNThXdEpZdmFtdEN6d3M2N1RTa0o4VUh5d0drdFNUSk1wZ1p0aXpvQVhONTloUStVNUNoSVEwVVRqSXBDQ2hjQXZXcDkvQ0h5bzRSZzkvaXFpTkxTQk9XNDFwWXZnR1U3dEgxaVB1aGV4MTliWE01bzhFNldDak95bnA3TmdBQ1YzK1JBejRyYWwxaG5hRm5QMmxvQUQzcm5KRUpGUG9WQzFRT0NHRE8vbzF4WGI2OGdHaUhpQkNzc0g3V2tUc3hUZlBUcWl1WEcyTmlXc3VvTmNQLzg0NDdUT0R3QndRaHhhMWYzUkZMMHFWeWxxR3JiUGVxZmd3UVgwVE51QnE5RC9OVEhJeWhlVHV3QW9WWUc4djRsTWo3b3J2bnVuVXd3Z2s2VVgrM1VVYkxhQVo0S210ZFIzaFRzeEtpaUs0UnJpRXAwNzVFSDUybGRqUkpiNHViSS9RWCtxZHJUTHhGd0lkWWVQL3dpaWtOVk9YUE1DbTd1SHZyY0lwdmhxY1Z0VkVYK0c5YUw4dlBuemMraEhueEE3MDhiRDZMZkpOZ2EzRnlIS2lCUjNVZjluMERnSEdONVgxaHhHbFFibThVVEw5TElCdmlEOTYwVjdKUXZtcUFoL2s0cGRnRzlxdzRVZ2hPaGpFeTVEbUNwK2R2NFJXT1VPYW01cWQrS2Vna2tFU09HOGtRUWVwenBReSt3Nzg4N0RrSnl2djJ3bk9KOENKUmwxRU9ETTBRWXprek10djhYSExLOHRJMWxaeit3aWYrOVpJQWRUMkNvdHJvUlByOUxBTDFLdCtkN0QzTWR0eE5hc0xUdUpkREkrcU5iYjhQVHRQdXQvdERxT1BYaTExeXU0elYzM25SWTZGai9aUjVvSzhvdzdrV21iczArRThHT2hoR2pGNWE3c2IvUVh3MlFPRHF1c29nWjY5TlBUd2NNSUlFQjlPRENXT0tCKzF2ckZLVEZoOGZXb09CZ0xSSnJFNzUxazBTYUREbFZOM2lzTkpBT3NmWGp6R3ZvWXpXMmJhcGpHbHF5amo2ZnlCVSs1SXdOOEZxNGxCdmdOOFlJOFZNZDhiYndJanZKNXZLV0FTZkFBRUJ5K0xEVmM2c1h0Y3NQdld0MytzdXM5STIyeksyVGo3aFM2cDZNc3J5MGpXVm5QN0NKLzcxa2dCMVBieC9hTHpTTFFtdHdPNFdSb04yMktZVkpBMy9YelNFZ2JnbmVneHFxTk9CaTN0ZG5uMnRKcUZPV2ZzV3JIV1MvenY3cTJVMEhBbVNIY2IrbnR0bHNWTGpNalJ3amFPZ0F0UmVqM2RFdlNQVkZ3L2kwYUNLMHhNUWJMS2hXYnh0UUNCa2xmRmFZVkZMUFpaRTBuM1MveGoxQlBUbUZkYVVHeVpSWjI2UURHaE9Nc3J5MGpXVm5QN0NKLzcxa2dCMVBZekxOSVQ2N3N3aEoxVEVuSUFMY1VzKzVKbHdKdTdteFRSVTRXWEFuQlAxM2dlNWdWamoxTmFKNjh3dWFQaVZoN0FkNlVQV1dnUjZ3TElQblRVZnRGajBwNlZYU0pQdVRlYXdSUlE0YzNjclhlUW10Q0hDcFVnWEtWb3RjRGR6V0FUVG5PS0pWeVAybUxPbGJNaDV2TTcrdTRmTDdNMTZ6ODdTSkVIVFRUbW0rSzlOSE5wbVNtd0piaGFzWndkZ3gvQWQ2VVBXV2dSNndMSVBuVFVmdEZqT0lpaEYvQzMxZ3NLNEV2dHV1c21Vazg5Y2NrQVA1aXZtcHlHUkw2NnhLVDNiQkEvNTRsVk9pclZ4clpRQi93N1RTN2wvRWUvMm8xS0VVTDhwN0R0by9jNXNuUUpsQ1NVZkRERE91ZXhtWGpBT2JRZ3MzN2JMRHlFNzRZS0tiTFJkd3hKZUVrQ2pEZHdMdk11Skdyc0NPejJPdGpBUElRVGtqQ2hOSnlXQ3pTRWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRWjNYUGdsM3FUSWxhTUhvYkJRUm5QMDExdm9oNXk2REJNS0MxNmxZTkQ4VWZteWdjbFRZc1pDZWRlcDdVbG9EcXdjakhhNktIOFcxV0ZaOURYeFAzV3ZZRjBSRHJZVGI0am9RbUlWVi9jSm5lZDNjUDJVcnZwbHI2TG5kVHJrTnFCWUFwSzRGL0o5eFpsOUpQdzFNcllJMWs0VXA3R01VYWFjWHR6MmlsRFBGNlR4UEJiclNDeWlNVHZvRlp5cnk2UTVtNDl2Y1ZLZ2tST1AvUEIxMDZ6Z3F6VmtYRC9WUzkwM2ZCMmxEdW4wcDJ5T2RFaC9Dd2N1RlkyTkVVYUR1SU9yejVzbVp1THZJWG1XT3BFWFdpR29JbGl5a3BuSGNtbFpaSGxKcFZ1dm9VejBHNWtQWmhtL3lwMVp1YXlHOGE5cVJvclZYSXQvaGE5NEtjMndmVGN2TEs4dEkxbFp6K3dpZis5WklBZFQyenVaaEZxSFZGUkpVY2owTy9lVEdMbDNCWUxWUERVUWFMOWZIdDM1U3Y2bUZJaTJFQlY3bGZrcGpsU0xSWFFPOUN6d3M2N1RTa0o4VUh5d0drdFNUSklISWF3M2dYa3FBbzBlandKWHIyMktyYllmSjlHNVg4OVBtQ0hpeXB6R0pBbzAzY0kyMHdMMkV3VzNqVGVZN2IvWVdZQ3Bsck5xTUNFbjhHb2s0bjZXZmIvbXZjM3VpU3oyU2RtNzlVaVhqSmpmTDMwNWhVMWIrQkhqeDJLclNDS2dFVm8vQkdSWVJ0L3V0eWt0cmk2WkJlSEJVTGFuZzZyeSsvZFJWNU4zRXNEdWJKUlg2SURaUHpqOHR3UTZTY3Zrdm40Y0tDMVFaK1RwTVVSck0vUlRoQk1FRVRwVGZxeU80Wk1helZzYkllUjA0ZUxHMnFaYmxHWHJUdjRVRWF4VDNKeWh0TkdaZVNoYmcrUGQ3OS8yNDN6WGJWZm1aRllwVHJyMmE0YmVNWnR5eWczeWFUTjl6dVJpcjRMVnpvbHRWZHVxSXBSV01seFdmcit4QnhQQlJSaFpBQUxlTVVBZ2I1eFVEejFTeHN0Y1l1Nm1yZkVoUGk4K2pqK0dka0tiaVFtMlZ5YzdkSlpWUDhVT1E3RHZheDk4VG8zanhRQUR1OWJ5WURpUXVkSCtMbEdidHJQUGsxQkc1c3RKMVMycC9ubVJYWjRJT0FOTG9FRG4yelNCRjNETUM2ZHM3NmpndjM1YjR5RlR4eXl2TFNOWldjL3NJbi92V1NBSFU5aFF2M3Jzd3NCSDVZbk5CTyswMS9Cbk9sREw3RHZ6enNPUW5LKy9iQ2M0bjRXRXhyaVM3RExDWmR1aUVPSmtYTXZmeW5wRXIxZE04cGtPNnc5elkrVHN0ZmdENGNRa3BUSXk1WStHeXBTbkhvRExpblIwaWZyU2p3QlJ4OC9jWW5NNlVNdnNPL1BPdzVDY3I3OXNKemlkeVM2bGJ2Y2RZeVU4YjhHNkhhejJTYXN2ZzVGZU5WdW1tY2Vpam9pOHpEVjF1SHpscEo5YnVVQWJtTFAxTndlTmV1cUs2WVZ2cDZ2Q2VFNEdoZkh5SFlLaTl5TVg5Nng1aCtLeFBXUUJObHZUdjM0YkpHd3NoN2NVWVh5MzF3WlRPbERMN0R2enpzT1FuSysvYkNjNG5pY2ZuSXJueW1NK1JoY1ZOZlp1dXUxNVJWeUdhNjRLUG00NVFLQVdldTBuaFRCRFFZd0ZGc0gvOVRaTVJOMmxiSHQ0WWgvY1ZFaDNIb0NZRmoyQWdNVW9iOEtuMUtWaURPc3ZlOGptaDY4dXBVaG1INkk3SGVYaTFZZFRIVWo2SmhuYUZuUDJsb0FEM3JuSkVKRlBvVktKZlB3aDJHa1hEN0ZxRjUwR1I5R2Jqd1g4ZmJmall3b3Jka1hzMzVEb3BBODgrWXU0K1Niemd6SktFd2lKZnExb0pTOENtZWh1Y09zTEZyUlRXbW5xQXpCOEQwOFRZdDRMb2xCS21PRkRwMVhWWFNWcW1heHBIa3h6c29HOTdocy85cHdXNVRsS0RGdWF3RiszU1BndGg4YkJsUXg2aklhWGVSb1NZdjRqN2tqbmhjenEvQkYyK3B5ZkR3U0FqU0JqWE4rQTRrNEY5NUlIWCtlUEV3Rnp1SnRtVENMZjl2VEF4V0U4b2NTNWVCUGVPK3NENFF3L0IyLzFvN0ZCaEJ5WXN0b0QzalRiK3N4OGdZL2M5SXZ2cjNLT2paZ09TRHpUdWZ5OE03VlhoUHUyWjdQU05yTDkva21BNnlzNXYxdEttK2pRYXd2My9RSFg0Mko5eThoQTJ1TGtGYU55TzRYeENWMHVyVHBpRVdjR01NcitsT0VKeWQ3K25ObUt3ajhaREVWK3pQbUxITGxDSElCdE11NHZMSzh0STFsWnord2lmKzlaSUFkVDJjdkk3Y09OT1V4dm5uL2hlMUlFUGs2WWFjajJyZTNoS3NybWNJOCttTzRqTEs4dEkxbFp6K3dpZis5WklBZFQyVm9UNVBYN1RuVm9MMzNLZXFyUjdicWN6Ri9GN2hjRS8wNEhsME4xdklzMlY4RlpRL3VoY3VTYnNOamN4QlFiL0huSDk2K3ZQL2wvYkgwMlF2M3RWaEhRdjljRnVxSlVFYXNyVHl6Q1hhMElyMWprTEY4L3JodmpjcTJqeTZpMTVyNkkxN2VpZkNpeStkWVc2cjZ2UVhXTzlwWWJPMnNuaVhYMnlUeFZzb2tFeVRMQmc4MVVEL2NDY1NtZms2cXV3Y0dRdHF6ejlTYnE2MjRvcnlRNnUyWkZZbm81LytGcWJoSFJxdk5wTGV3SUVRc0drbGprclNEQ0E1TlpUb2FjOTVFNU56ZWh3aDhTQ2t5b2hLT2hRYTFmQ1p1SGR2VzlEZUJxVThYaXMxTHZhRVhUQncwMEdnZG9LT09DU3FxVldkdkdoS3JMSWp5YTExeUJwMkxNdHpPcnM4bzMvOWtubHhTVmFFUnlwV1pkc3BBek1zRXlqeXpnZ0lUUGpaVFQrdmtCTXlkd20wdTY1TkxlU2plS0lmZXgyNFROMGh1bjBIbFdpSFFJVSszWXg2WXByaTF0RGh3ejM4M1FwaEV5S0ZodzBoWmcxcjdsR3YwbnBVb3B6UXZ1U1pjQ2J1NXNVMFZPRmx3SndUOWQ3cGdvUm5RaHVmRkRCeUVkL2prMEtNK0Y1K0U2azlKVnV0NUFxcXFJakRxTlRpbGtUY1pjaDN6MStZbk4zWXNIYlArQWpXSGpWY1lxSE1QZU02MXVpcWVRZHFQQlJVREFLcUh5WHpFb1J5TEpDR25uMzUwdWFJczhkeFB4WGNnbzhSLzRRNmlNcFlUYVZISU9wSEpuV2hKbUlyeDVIMmJjTGJmVDUvUW1NSU1XNUxnb3VzMTV5L0FKclIwblZtZVZjTUppeFVyOHhCOHdPYWVzcVlhZEZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlrT1lvZ2d1bDQ0eklaNjFMcm9GZ1hLR2RvV2MvYVdnQVBldWNrUWtVK2hVUGJWYzA4MGFra2hMWE9yN2NnOFZFVXZaYnowSFg4aFBGc2FiVUQ2cithMk1MbDBGTnlaMkVIWWtWN3pBQi9XTkFFWkxxM2F1ditwN09idlg3cy9wTGxSNFlnS1ZDUk9CVnhsTjhnM1hXS24zNjlOMWpsb3NxUkJkRE1mSkJCYkRUemNrODgzRFlKMk5OZFZRWWpPcWdzYktubHE4WStQajI3ZDV3QythWktTNUMvN0NlU3U4ZnJJZ2JnaW5oZjdRK3cyMThoOUF0S1RYQ1FpbGdldVJMSTZvZkpUZFd0eUhCQ2NhTnI3WDloZ3ByUitaa1JFZXdRbTBqaW1ON25DN3l5dkxTTlpXYy9zSW4vdldTQUhVOWs4dVpFVVByQjJWMUxtOGxPeTNjODNISWNSVzRFMTZCN2xjcExIcVphZXBEaGt3b0MvTWF1UUxObzVpRVcyZXVjZWptZmdhWk5MRzFsRVFTOW9HWkJNRHhoblFncS9qbzduSll4V0docERGRTZTc2hTTnBrYyszdWtYbmdhZGZpSDlOODBBUFhJWHZ1OHFqKzc0Y0hMZk9sREw3RHZ6enNPUW5LKy9iQ2M0bmhBMDFrc05XUGlMamtBYjhVdEtKcTRpTk9MK0VERXo2cmZZbmE2RURZRDdudHMvU09MTjNTNXhVUXdGUVIvK0xUVHA3UmJ1Z1oyKzZiTXFBeVpxWWU4c3J5MGpXVm5QN0NKLzcxa2dCMVBiNXJPYVJ3bTFIZmdybGNnMVpFZzNSVW5uT2hGMFlZQnlVWVhkQk9EazdwUE1sNlMxYWw5U3JIZmd5bVRPZElNYlhKRmJWNzJCUWxqd1VLOTZHVjNhUW9oTWprMC9JK1JLZGkwODlEZ29NYndBMytWYy8vZUhxaDc3NllOZUZod2tOcTlBZERKNG4vTFJEM1d0WUpYQVN0M2l2QzR1OVFCVGZiL3ZDbU5KaS9memFlczRvSkFLdVNjMENvK2F1NlJaeXB4NUQ1akxObVhNM0Y4WVpwZzh5VmdRWHdHb3c5RjUzVFB0d0VMaEViQ2RVSk9nKzNXdkxYUmtXY3BaYWxnNEsxNTlhRU0vdndZd0NxMzRseGtTRmhsS3lUVWc1UnNYZlJMcGFNaG0wZVpTSGR1b0RITmY0WjFvZ2daR3ppa29Hb3A4Yy96cm9XQm9OL2FWS21uOHM0VHlFK1VCUWV6djFmTEJlVXlCR2JIOEpYQS81dTIxOEVaQkJRdHczb3FFdjh5SjJEY1ZkS054bXp0QjhMbW5IJylcXG5cIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3nmbvlvZVcIixcInBhdGhcIjpcInB3ZC1sb2dpblwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIGlzbG9naW4gPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0Jywge30pO1xcbmlmIChpc2xvZ2luID09PSBcXFwiMVxcXCIpIHtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignbXlfYWNjb3VudCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g55qE6LSm5Y+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+WPllwiLFwicGF0aFwiOlwiY2tcIixcInJ1bGVcIjpcImpzOlxcbnNldFJlc3VsdChbe1xcbiAgICBjb2xfdHlwZTogXFxcIng1X3dlYnZpZXdfc2luZ2xlXFxcIixcXG4gICAgdXJsOiBcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFwiLFxcbiAgICBkZXNjOiBcXFwiZmxvYXQmJjEwMCVcXFwiLFxcbiAgICBleHRyYToge1xcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcbiAgICAgICAgICAgIGZiYS5sb2coZG9jdW1lbnQuY29va2llKVxcbiAgICAgICAgICAgIGZ5X2JyaWRnZV9hcHAud3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYmlsaWNrLnR4dCcsIGZ5X2JyaWRnZV9hcHAuZ2V0Q29va2llKCdodHRwczovL20uYmlsaWJpbGkuY29tLycpKTtcXG4gICAgICAgIH0pXFxuICAgIH1cXG59XSlcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi13ZWLnmbvlvZVcIixcInBhdGhcIjpcIndlYmxvZ2luXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgY2sgPSBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHRcXFwiKS5yZXBsYWNlKC/vvJvvvJsgL2csJzsgJyk7XFxubG9nKGNrKVxcbnZhciBsb2dpbl91cmwgPSBcXFwiaHR0cHM6Ly9wYXNzcG9ydC5iaWxpYmlsaS5jb20vbG9naW4vYXBwL3RoaXJkP2FwcGtleT0yN2ViNTNmYzkwNThmOGMzJmFwaT1odHRwJTNBJTJGJTJGbGluay5hY2cudHYlMkZmb3J1bS5waHAmc2lnbj02N2VjNzk4MDA0MzczMjUzZDYwMTE0Y2FhYWQ4OWE4Y1xcXCI7XFxudmFyIGxvY2F0aW9uID0gSlNPTi5wYXJzZShmZXRjaChsb2dpbl91cmwsIHtcXG4gICAgaGVhZGVyczoge1xcbiAgICAgICAgXFxcInVzZXItYWdlbnRcXFwiOiBcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgXFxcImNvb2tpZVxcXCI6IGNrXFxuICAgIH0sXFxuICAgIG1ldGhvZDogJ0dFVCdcXG59KSkuZGF0YVsnY29uZmlybV91cmknXTtcXG4vL2xvZyhsb2NhdGlvbik7XFxuXFxudmFyIGluZm8gPSBKU09OLnBhcnNlKGZldGNoKGxvY2F0aW9uLCB7XFxuICAgIGhlYWRlcnM6IHtcXG4gICAgICAgIFxcXCJ1c2VyLWFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChMaW51eDsgQW5kcm9pZCAxMDsgTTIwMDdKM1NDIEJ1aWxkL1FLUTEuMjAwNDE5LjAwMjsgd3YpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIFZlcnNpb24vNC4wIENocm9tZS84My4wLjQxMDMuMTAxIE1vYmlsZSBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgIFxcXCJjb29raWVcXFwiOiBja1xcbiAgICB9LFxcbiAgICBtZXRob2Q6ICdHRVQnLFxcbiAgICBvbmx5SGVhZGVyczogdHJ1ZSxcXG4gICAgcmVkaXJlY3Q6IGZhbHNlXFxufSkpLmhlYWRlcnMubG9jYXRpb25bMF0uc3BsaXQoXFxcIj9cXFwiKVsxXS5zcGxpdChcXFwiJlxcXCIpO1xcbnB1dFZhcihcXFwibXlrZXlcXFwiLGluZm9bMF0uc3BsaXQoXFxcIj1cXFwiKVsxXSk7XFxucHV0VmFyKFxcXCJteW1pZFxcXCIsaW5mb1sxXS5zcGxpdChcXFwiPVxcXCIpWzFdKTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiBpbmZvWzBdLFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IGluZm9bMV0sXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogXFxcIuKAnOKAnOWkp+S8muWRmOeCueaIkeKAneKAnVxcXCIsXFxuICAgICAgICBjb2xfdHlwZTogXFxcInRleHRfMlxcXCIsXFxuICAgICAgICB1cmw6ICQoXFxcIuS4jeaYr+Wkp+S8muWRmOWIq+eCueehruiupO+8jOWQpuWImeWQjuaenOiHqui0n1xcXCIpLmNvbmZpcm0oKCkgPT4ge1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcIixnZXRWYXIoXFxcIm15a2V5XFxcIikpO1xcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHRcXFwiLGdldFZhcihcXFwibXlrZXlcXFwiKSk7XFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXCIsZ2V0VmFyKFxcXCJteW1pZFxcXCIpKTtcXG4gICAgICAgICAgICAvL3JlZnJlc2hQYWdlKCk7XFxuICAgICAgICAgICAgcmV0dXJuIFxcXCJ0b2FzdDovL+Wkp+S8muWRmOeZu+W9leaIkOWKn1xcXCJcXG4gICAgICAgIH0pXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IFxcXCLigJzigJzml6DkvJrlkZjngrnmiJHigJ3igJ1cXFwiLFxcbiAgICAgICAgY29sX3R5cGU6IFxcXCJ0ZXh0XzJcXFwiLFxcbiAgICAgICAgdXJsOiAkKFxcXCLngrnlh7vnmbvlvZVcXFwiKS5jb25maXJtKCgpID0+IHtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXCIsZ2V0VmFyKFxcXCJteWtleVxcXCIpKTtcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcIixnZXRWYXIoXFxcIm15bWlkXFxcIikpO1xcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXG4gICAgICAgICAgICByZXR1cm4gXFxcInRvYXN0Oi8v55m75b2V5oiQ5YqfXFxcIlxcbiAgICAgICAgfSlcXG4gICAgfSk7XFxuICAgIFxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3nm7Tmkq1cIixcInBhdGhcIjpcInpiXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxudmFyIHpiYzEgPSAnYWxsJjImMyY2JjEmNSY5JjEwJjExJztcXG52YXIgemJ3MSA9ICflhajpg6gm572R5ri4JuaJi+a4uCbljZXmnLom5aix5LmQJueUteWPsCbomZrmi5/kuLvmkq0m55Sf5rS7JuWtpuS5oCc7XFxudmFyIHpiYzIgPSAnMCYzMyc7XFxudmFyIHpidzIgPSAn6buY6K6k5bCP5YiG57G7JuW9semfs+mmhu+8iOeUn+a0u++8iSc7XFxudmFyIHpid29yZDEgPSB6YncxLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjEgPSBnZXRWYXIoJ3pibGFiMScsICflhajpg6gnKTtcXG52YXIgemJrZXkxID0gZ2V0VmFyKCd6YmtleTEnLCAnYWxsJyk7XFxuXFxudmFyIHpid29yZDIgPSB6YncyLnNwbGl0KCcmJyk7XFxudmFyIHpiY2xhc3MyID0gemJjMi5zcGxpdCgnJicpO1xcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXG52YXIgemJrZXkyID0gZ2V0VmFyKCd6YmtleTInLCAnMCcpO1xcblxcbiAgICAvKmZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcbiAgICAgICAgdmFyIGEgPSB6YndvcmQxW2ldO1xcbiAgICAgICAgdmFyIGIgPSB6YmNsYXNzMVtpXTtcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBhID09IHpibGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcbiAgICAgICAgICAgIHVybDogJChcXFwiI25vTG9hZGluZyNcXFwiKS5sYXp5UnVsZSgoYykgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcInpibGFiMVxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxuICAgICAgICAgICAgICAgIHB1dFZhcihcXFwiemJrZXkxXFxcIiwgYy5zcGxpdCgnJicpWzFdKTtcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcImhpa2VyOi8vZW1wdHlcXFwiXFxuICAgICAgICAgICAgfSwgYyksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdmbGV4X2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9Ki9cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5pCc57SiJyxcXG4gICAgICAgIHVybDogXFxcInB1dFZhcignemJrJyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/mraPlnKjmkJzntKInO1xcXCIsXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXG4gICAgICAgIGRlc2M6ICfkvaDmg7PnnIvku4DkuYjnm7Tmkq3vvJ8nXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgY29sX3R5cGU6ICdiaWdfYmxhbmtfYmxvY2snXFxuICAgIH0pO1xcblxcbiAgICBmb3IgKHZhciBpIGluIHpid29yZDEpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDFbaV0gPT0gemJsYWIxID8gZ2V0SGVhZCh6YndvcmQxW2ldKSA6IHpid29yZDFbaV0sXFxuICAgICAgICAgICAgdXJsOiAkKCkubGF6eVJ1bGUoKG5hbWUsIGtleSkgPT4ge1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pibGFiMScsIG5hbWUpO1xcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MScsIGtleSk7XFxuICAgICAgICAgICAgICAgIGNsZWFyVmFyKCd6YmsnLCBpbnB1dCk7XFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKHRydWUpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxuICAgICAgICAgICAgfSwgemJ3b3JkMVtpXSwgemJjbGFzczFbaV0pLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnc2Nyb2xsX2J1dHRvbidcXG4gICAgICAgIH0pO1xcbiAgICB9XFxuICAgIGQucHVzaCh7XFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICB9KTtcXG4gICAgZm9yICh2YXIgaSBpbiB6YndvcmQyKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiB6YndvcmQyW2ldID09IHpibGFiMiA/IGdldEhlYWQoemJ3b3JkMltpXSkgOiB6YndvcmQyW2ldLFxcbiAgICAgICAgICAgIHVybDogJCgpLmxhenlSdWxlKChuYW1lLCBrZXkpID0+IHtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjInLCBuYW1lKTtcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmtleTInLCBrZXkpO1xcbiAgICAgICAgICAgICAgICBjbGVhclZhcignemJrJywgaW5wdXQpO1xcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuICdoaWtlcjovL2VtcHR5J1xcbiAgICAgICAgICAgIH0sIHpid29yZDJbaV0sIHpiY2xhc3MyW2ldKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cXG5pZiAoZ2V0VmFyKCd6YmsnKSAhPSAnJykge1xcbiAgICB2YXIgemJ1cmwgPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tL2xpdmU/a2V5d29yZD1cXFwiICsgZ2V0VmFyKCd6YmsnKTtcXG4gICAgbG9nKHpidXJsKVxcbiAgICB2YXIgcXogPSBcXFwiaHR0cHM6Ly9zZWFyY2guYmlsaWJpbGkuY29tXFxcIjtcXG4gICAgdmFyIGxpdmUgPSBxeiArIHBhcnNlRG9tRm9ySHRtbChmZXRjaCh6YnVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLWxpdmUmJmEmJmhyZWYnKTtcXG4gICAgbG9nKFxcXCIxMjM6OjpcXFwiICsgbGl2ZSlcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn5Li75pKtJyxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXCIrbGl2ZS5yZXBsYWNlKFxcXCI/XFxcIixcXFwi77yf77yfXFxcIikucmVwbGFjZShcXFwiJlxcXCIsXFxcIu+8hu+8hlxcXCIpICsgJ++8hu+8hnBhZ2U9ZnlwYWdlJyxcXG4gICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9KSwgJ2JvZHkmJi5mbG93LWxvYWRlciYmLmhlYWRsaW5lLWxpdmUmJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn5Li75pKtJyxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXG4gICAgfSk7XFxuICAgIHRyeSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn55u05pKt5LitJyxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFwiK2xpdmUucmVwbGFjZShcXFwiP1xcXCIsXFxcIu+8n++8n1xcXCIpLnJlcGxhY2UoXFxcIiZcXFwiLFxcXCLvvIbvvIZcXFwiKS5yZXBsYWNlKFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFwiLCBcXFwiXFxcIikgKyAncGFnZT1meXBhZ2UnLFxcbiAgICAgICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxuICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgICAgICAgICAgXFxcIkNvb2tpZVxcXCI6IFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXCJcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH0pLCAnYm9keSYmLmhlYWRsaW5lLXJvb20mJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFwiXFxcXChcXFwiLCBcXFwiXFxcIikucmVwbGFjZShcXFwiXFxcXClcXFwiLCBcXFwiXFxcIikgKyAn55u05pKt6Ze0JyxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxuICAgICAgICB9KTtcXG4gICAgfSBjYXRjaCAoZSkge31cXG59IGVsc2Uge1xcbiAgICB2YXIgcGFnZSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcbiAgICB2YXIgdXJsID0gXFxcImh0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3Jvb20vdjMvYXJlYS9nZXRSb29tTGlzdD9wbGF0Zm9ybT13ZWImcGFyZW50X2FyZWFfaWQ9XFxcIiArIHpia2V5MSArIFxcXCImY2F0ZV9pZD0wJmFyZWFfaWQ9XFxcIiArIHpia2V5MiArIFxcXCImcGFnZT1cXFwiICsgcGFnZSArIFxcXCImcGFnZV9zaXplPTMwJnRhZ192ZXJzaW9uPTFcXFwiO1xcbiAgICB2YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwpKTtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgdmFyIHIgPSB7fTtcXG4gICAgICAgIHZhciBqID0ganNvbi5kYXRhLmxpc3RbaV07XFxuICAgICAgICByLnBpY191cmwgPSBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXI7XFxuICAgICAgICByLnVybCA9ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBqLnJvb21pZCArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgO1xcbiAgICAgICAgci50aXRsZSA9IGoudGl0bGU7XFxuICAgICAgICByLmRlc2MgPSAnVVDwn5C377yaJyArIGoudW5hbWU7XFxuICAgICAgICByLmNvbF90eXBlID0gXFxcIm1vdmllXzJcXFwiO1xcbiAgICAgICAgZC5wdXNoKHIpO1xcbiAgICB9XFxufVwifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwi6aG16Z2iLeebtOaSrVwiLFwicGF0aFwiOlwiemIyXCIsXCJydWxlXCI6XCJqczpcXG52YXIgcmVzID0ge307XFxudmFyIGQgPSBbXTtcXG52YXIgUmVmZXJlciA9IFxcXCJAUmVmZXJlcj1odHRwczovL3d3dy5iaWxpYmlsaS5jb21cXFwiO1xcbmlmIChNWV9VUkwuaW5kZXhPZihcXFwic2VhcmNoX3R5cGU9bGl2ZV91c2VyXFxcIikgIT0gLTEpIHtcXG4gICAgdmFyIGxpdmUgPSBwYXJzZURvbUZvckFycmF5KGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJVc2VyLUFnZW50XFxcIjogXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFwiLFxcbiAgICAgICAgICAgIFxcXCJDb29raWVcXFwiOiBcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFwiXFxuICAgICAgICB9XFxuICAgIH0pLCAnYm9keSYmLmxpdmUtdXNlci13cmFwJiZsaScpO1xcbiAgICBmb3IgKHZhciBpIGluIGxpdmUpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLml0ZW0tcmlnaHQmJlAmJlRleHQnKSxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5sYXp5LWltZyYmaW1nJiZzcmMnKSArIFJlZmVyZXIsXFxuICAgICAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmLnN0YXR1cyYmVGV4dCcpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAncGljXzEnXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBsaXZlID0gcGFyc2VEb21Gb3JBcnJheShmZXRjaChNWV9VUkwsIHtcXG4gICAgICAgIGhlYWRlcnM6IHtcXG4gICAgICAgICAgICBcXFwiVXNlci1BZ2VudFxcXCI6IFxcXCJNb3ppbGxhLzUuMCAoV2luZG93cyBOVCAxMC4wOyBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM2XFxcIixcXG4gICAgICAgICAgICBcXFwiQ29va2llXFxcIjogXFxcIl91dWlkPTgyNDY3MzczLUM2QTEtNTdCQS1BRTAyLUE5QTZEMTc3Qzg4Nzk3MjQ4aW5mb2M7IGJ1dmlkMz0xN0M5QTJDQi04NTBCLTRDNzMtQjlERS02NERCMEU2REJBQkIxNDMxMDVpbmZvYzsgc2lkPWN5OTYxZnE3OyBycGRpZD18KHV8SkopfGt+bHwwSid1WXxZfHVrdW0pOyBMSVZFX0JVVklEPUFVVE84ODE2MDYxMDIyMTkzNDIwOyBic291cmNlPXNlYXJjaF9iYWlkdTsgUFZJRD0yMzsgZmluZ2VyPTE5ODQ5ODk1MDE7IGFycmFuZ2U9bWF0cml4XFxcIlxcbiAgICAgICAgfVxcbiAgICB9KSwgJ2JvZHkmJi5saXZlLXJvb20td3JhcCYmbGknKTtcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJ3AmJlRleHQnKSxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXCJsaXZlLmJpbGliaWxpLmNvbS9cXFwiKVsxXS5zcGxpdChcXFwiP2Zyb21cXFwiKVswXSArICcmcGxhdGZvcm09aDUmb3R5cGU9anNvbiZxdWFsaXR5PTAnICsgYEBsYXp5UnVsZT1UZXh0LmpzOkpTT04ucGFyc2UoaW5wdXQpLmRhdGEuZHVybFswXS51cmxgLFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbShsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXG4gICAgICAgICAgICBkZXNjOiAnVVDwn5C377yaJyArIHBhcnNlRG9tRm9ySHRtbChsaXZlW2ldLCAnLnVuYW1lJiZzcGFuJiZUZXh0JykgKyAnwrfkurrmsJQnICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGl2ZS1udW0mJnNwYW4mJlRleHQnKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3BpY18xJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XFxucmVzLmRhdGEgPSBkO1xcbnNldFJlc3VsdChyZXMpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfM1wiLFwibmFtZVwiOlwiQVBJXCIsXCJwYXRoXCI6XCJhcGlcIixcInJ1bGVcIjpcImV2YWxQcml2YXRlSlMoXFxcIkw3QXZKNDFDKytrbGxCTVBHOUpSVFV6UXZFakpYd1JyZlJpSm1FQnVmVVFBMkhIV3RRTFJoQXdxU016TVVkSUFSQk1LQmJQdDI4akI2dHl1WXhYT2YzQzcrVnpQRDNOSkVlWXkyNE9mVG1TZ3NSNFNIaVBSM0owT2lmUU1tVEJMTXRmMWRYM2sxeS84V3VvWFBNUW5DWFhETVE5N2h3ZXpvdDUySU95S3NHNjRPcTVhR0ZONWRpcVQxdG0yOVNwL0dydFZKWDhmeWpvTnE0VHJwZnhpSHNVVzFTWXMyaGZjczNKak5rTk91UTJwV2JQMnNwbzljVUw2Wk9oWXZXeXhCTUVnMmtQREVUNnZRdWFGUW54UklwQXVsWEpETXVmQU92em1ONWMwUlVpT2pwajU0eThTcWU2ZzEvRmNtNjQ0V3lQRk14VzhiNERXZlRpWDlkRGRJQmRvMlNMbkQxOG9TdU9DNTV3ZWc4K1hRU29xbWV5M1h0MzN1N1MzYUtyaUNVWU8ySEN3ekt1MmRmdW5wZTBMT1k3dzlwYkNzTmpqY2JqZW8wbmFNelFMcHRYSGg0STN6UlZkakpFNmZBem00U01ZQVUwQXJONHB5OHNDZjNqQlVoTVU0TW9FOXhwTmMvWm1JRFNXQ3hXRDFnY2grVU4wSTJ4cmFEZ2JldXpNb1FXc3JwcUhjYzFkaEZOeUFFR3E0WHh5TDlFalE0cndHZGFqWnZWVnJtODEvdXNHN1RkWUp2N25lQXkyZ1BaUUVyTzYyTk1CdzBzYWVDZjhMcmRzSTMrM0wrSy9IelJZZmRUVXl6ZldHVEpFUU05cXV1OWlnbWJ5cDVPREFnbzltMkRkQXJxOGxlSVNtYStDbkpnaERHTVlSTEZReWFCTmpRT1ZEZFVZYTFUZm10TWQ5cFdJR2VER2dCZUNPV3c2eVdsUDNoQkQycmU2SjEyYVp5bHZhWHpUamxuM0ZadXJXQVlaSzF2STF2SkM4RDlJUUtaUEdxY2dFS3ZuWHBGaFpWdnByNVFLVlBYUlhieXY2NGdwK1piRmVhc3A5cVQ1Wmlhcm1zN21kSHM9XFxcIilcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIumhtemdoi3kuIDnuqfvvIjmi5PlsZXvvIlcIixcInBhdGhcIjpcIm5ld2RldGlhbFwiLFwicnVsZVwiOlwianM6XFxudmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXG59XFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxucHV0VmFyKCdsaWtlX3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVsxXSk7XFxuLy/popzoibJcXG52YXIgQ29sb3JzID0gW1xcXCI0XFxcIiwgXFxcIjVcXFwiLCBcXFwiMFxcXCIsIFxcXCIxXFxcIiwgXFxcIkFcXFwiLCBcXFwiM1xcXCIsIFxcXCI4XFxcIiwgXFxcIjlcXFwiLCBcXFwiQlxcXCIsIFxcXCJDXFxcIiwgXFxcIkRcXFwiLCBcXFwiRVxcXCIsIFxcXCI2XFxcIiwgXFxcIjdcXFwiLCBcXFwiRlxcXCJdO1xcbnZhciBDb2xvciA9ICcjJztcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcbiAgICB9XFxufSBlbHNlIHtcXG4gICAgdmFyIENvbG9yID0gXFxcIiNGQTcyOThcXFwiO1xcbn1cXG5cXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFwiJyArIENvbG9yICsgJ1xcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXG59XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgcnggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCB7fSk7XFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXCIsaW5wdXQpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFwiYDtcXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3piXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSBcXFwi5ryr5ri4XFxcIikge1xcbiAgICBldmFsUHJpdmF0ZUpTKFxcXCJObTA3d0laOFVkUXk0MVMzZ0N6SFpEMVo1ckxnRzEyVE40WEoxZWljdnc0Y2liSHY5NXpOR21CSHN1R1RJdmJVY2h5V1h3V01qd3FPakdhZk9aaHV1R0hiMWo5L0twVms4aXZ0eHFSdVVUMTVlZExSU2pabkFBRmZ6bDM1VmIzYWthdzAzaUYrMm43dzByb2xiOFk4YldwM05xUXE2M0ZISnhlM2JkNGx6ZFN2ZytYbTNqRVZaSXZrT1VQZzRBbzdUVGlSLzhVYTQzMVQxUjJlcmFUYmdOSEMvKzlyeFI4OGNlbjNPdlpWQ0NKM05GZStiNnNFbmZRSnFvK1lGbjBoMVl5UU5oV2xoZElnd0Nvb3Yxd05LdnpOYzVVNmw2TEpJRS80ZVpXMDc2eEF2dUdXN1ZpUnRkOTlObEszaGJyYzd3UGtWMStuM0FxTVB5TjAwOXpDTEVTZ0thWWpsbjhJOE1lNkFxUmtGU3V6VU1ETzNrY3JXbWlXNnd5R2ozODRnWjNEMWE1QjRlVnpUdGpyQ0tsa3RHeGVCdUhnWkhPSlFwUEtleFozV3hpYWJoNWJLc2JvVTZBRFcrNHZ2NlpUUG5tOHAva1ZKTFRqSGFMZDFoZlQrQWkxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL1NNRW5iRG54K2s0anc0WVNnbWc2NlJ6RnROZ1orTzZ6aUtYNk1QQmFVSEpPb2tUNGh0Vm9vMkZOYjEwa2FGeHJMYnl4VGNDQkkvUUt2K2t2R0tRMmJ2N3ZSc0ZhRU5rSEZrTFpOTE5EeDhuUDQ2MDNmL3A1ckpscTVJNHJicXZNdnJSMWZseGRlRXM4M2t0RHJlanFocFgySFlveDVYamVOZXBTV0FsU2VlZmdTUjF0azl3QjlyVUN2RDUxRkNRY0FPZGowZkl1bFp3aVgrTXpaRlg1ZmVUbmZrQUd1b3hKOHh5bTJmQzBpOUR4d1FFMmtkNmVwZktGSnNPSXZVdWJWYUwvYkQrSkdpWEhrTm9qNnVqNzVjbjgyVC94VSs1eTdNVlpybDNoWWM5bVhzZ09kcElOaC9KZ3VuZWFMbHovY3RmemtWRmFQU3ZhbUlrYUUzS3FFNVE0c3Z2Ui9FeUtsdkpJVTBVS3o5L3g4SVcrZThuVGdLLzIxWFExbUMxVjE5N1U1ZC9CRmVGcUJ4bTR3aUZIa0JFaVQ0a3dXQlN4QTBMZ3J1bCtzV21qazRka2JjTXBrV0M4QXJLOCtwYWVCQ2pPc01pVjQ0RHJUU0J6aWlkajNTWVFBL0ZMbmFtbjNNUUdYekx6Wi9YQWZ6azEycFpsL3FVMHIzL1NicDN5b25qNjNIOWNlU3FEUzEzY3pJVEpQMlk1N3FMTTgrdHBmTzBTRERvdW9CWk81RkJvcnBsZTBocnpTeXpBeG1sajFyWjM3eDlENFNHa1F0aGc1U2w5ZU1NU2FzWXhjUzVMMENlY0RUT3JMRmhVSHNVMlhLaG9OYmFMUWhjU3hEZFRhQm90ZkI0OFhFenVXaFU2WDFjYlBaWjVrOWFRbDNpNDFwdUFWQVM3dG9CcTJHNE9KZW45cVM4anBBekNieEN1QU5tam4velptbHovMlhqVjdiemRXenc2dUthalF0MlZ2aFZJSGpwTjNDMEVha0tHS0w3a2l1cFZOUzgvTExFNUU5SFlJWUl3YVJDMGVxRUFtZHp0a1E0NWVVcTBUeXlqLzQrV1RZM01tZmJEQnNXQTVXMXFLMVpsVWVYbHdsMWZPT1NmMEIwOCsybGxTSDdxSC9DQThSYXpVMWlwbUhTUElweHl3Kzl0enBvMHZKT1RPNHBRMThsaUNNb3hFb0xsWTVMNytkOWZ4UmlscDBSbzkvelcvUDczekNPQUJDRXMzRmN6d2p5MlVseUNTQjd6NGdQTTFKemxTbVJHWDNpTS8zeUZNN293d1F5RnI3N3pKSkt0cDBpdWcvbU43eGRiUkJuclFiMmIyL3BZUERXYkgveUlwT3VsMmlWaVhhZW1hMlZRczZxS20weE51Wk1xT3I4dFZxNzdVekdwK0ZZZmFUblhUR2tXS3hlZ0c1c2k0VzR3bjhhcTU1K2JQNkVCSlh4andUQURBeDhZUCtYa2lLMm5nRXRiZ1d1enBaaGlBWURFWEJzY3ZqWlppTG90Y0VCZ0lxSDd5ekV0cFpwMlk0K1lIb0ZRQnZUUWx6LyttOWRPMkxOYStRbzVLeXRZczVsbUsyMWNDVUdvZlAzUldSNTNMdnNzQTQzblhxSmtzMDdwWGdubzRhZTZPTG93TGowNVlBT1g1dFFkak54U29BdFpwTGhNdlNmMTQ0OTNncytjSEc0R0ZuWjY3VWhjQ3RvNWdITUNTR3ZOOWREZVg1SmRoQnJJNTZZVXFjb3d4aXFEaDYzMkVxN2xHaWp1dzNCYVAxSzN2b2hvN0E1Z3NzanN0TXVVb2FTU1VvS29XQUdCMmdhaHdqdStoVVM2bXJLRzNOdG1zZmhObFlvSjZ3aVJSRkd4Y0VNVVNCaDAzdjUyMGt5eWlmb3BnZ0JFRVA0dU1JbVUzS0JqVzlPREdlM2VoNE4yTTcxYlZYYnFpS1VWakpjVm42L3NRY1R3Z0pVaGR4OURzOG0rOXlZaTVZbXI0NzNIQ0o3UXVjMzBYS1E1enRXQ2lyMEcyTVB1TTZzRjFiMVlYWHNXMWsrenRQNGgxRXZBN3JHNHZobTZCLzVyR3orbE9URzNXY2pxOU1qdWdMUWVPM0dHNk10YWN2R0ZPSHdkUWJMMFhKVDA3UHMyZEFrdmRaTmp2ZlZiMVpOaW9wVjdOYStnK0xDUjJJZXZ1OGQ1RDBMQzRZdDhqdUFIdGkzUGx1T1hta1dtQ0ZiMDZFRFNFR3lPL1JVT0p0MVFtMlFDK0Rsb2lFcGVsQjFwT3VSSlFVVUZCc2xpVyt5YWovWGdFaTNuTkEzdVR3Sm5MS2dsYWNyUTFyWmNmcjhCc2hSemhxUWx0eGRiaFd4Zms4UUt2SWpKNExGMWFlbVVHQi9qZTNadG94aDN0TXR4T0pDZkIwcWVVakhVbHltc2NxeXlHb1NaS09qeER5dkM5K0d3YWNkRzRmVWtOeU9rdFBQTXlicy9acm1YUEllVnF5QnhvbnZPWE0vYkRicHowcnA4RzFaZUkwclNvUmx2MTF2V05zUGdyNnN5bnpkSFlCYTh6UFdJbGdWMFowaDlITk1tdkxsVlBNdnczZSsvZ1hGMGZMS2hzOWg0alRIa3ozRXI5anU0RW1FbkZxT2Z1Y0cvU0NDczkwTnRrb0tTLzV0U3IvMC9lMkhxbnhSTFREKzE3UTBsWm52Ym41ZnkrNEdqUkRPNUxKV2Z4Zld1S1VrK2JRNUwxY3ltWjkxeC84MjJlRTVhb0dyVWU3angvUWRGREJYbDdKS3RKWFlCeG1FVmFSSVA0Q3hBTUZxemRPeWVWU3Z0dWt3RnY3R3QwVjFWamk3WG9DLzN3U0pGUjYzYW0zTTRaWUV6QWNXb2xTRXZic1cvc2EzUlhWV09MdGVnTC9mQklrVkhvU05SaGJSUEVFNmk2QnNVRDdxS0NpMS9lZ0pUakYwSjRLTjdQUmhHeTdiVElPVHUrWWEvZjlMYWRYMUE4YkxzWXN4bFRiTnFWbzZKelBaYXBpY05jQ2RIUE0yYWg3OGVBdHRTYWhWQ0ViL2wzWnFpMmhGa2laSjhneFBDMFBZN3J0bXRQQWFYNHVKc05nYUIwQlRseHNsQzFPb0prRWxON0dicDFyQmN0R3VVdzdwTCtSSU9UUWtDWWwrYTBVbjJlbW9Id051YnFGK0pkNWNPMnB3VW96MDNqWms4VTNtV0dtaklyY2NqTXhBZS9ydHd5c1A2M2I2aUc3TTd2THBPbnhWM3h2Q3lkS1R3bVRkaTBsNkMwejNvNXRxeTJwa2w3dWoxOERWZVZDWEM0Vkc1NkYrdlA4RTlWRU1BbC96Q2NqSTJxbXFsdWE3K2gzYnJsSGc3OThBUm00YmRNUE9tZnlkbVRHQjBmN2hxelp2MTRCMy9jV1lyYWR3TzRlcjE5WmJmVlkrdjlQSllyNldPVTYyaUhSajZYK1NLdHRQV1IrbFlJMDNpdE1yOER2RjZ4R0MreHAraFcrdi96LzlmcmM4MUljR01JU2U4TUhUV2lYakEzUGhPUStld0g2bmZSZUVOVFBWYUJxckN0a2huTmRpYzhVMmhjMWN3bEZMejdmb0xlWXl5TzhpZWRYZUZXT08rcVg3ano5dW5oSXhhbEJpTUl2c0c3SlA5NGRkanozbjhmTVRiNU1QQm9YNUZjYWY0WkJTd1hkOTg0NG9CMEIxcW9wRUtTYkJxWnhWOVlRK3dwamludkx2djhvQ1N2MjZhWVRzdkViWHNUZStNNEFDWDB0a1VsckE2aTA0WjV5NnBhbG9aWU5tOHBEVHNKcmswam05NTQvWTg2cEMrZ3ExdVNkVERrWjZZWnIrS25ISDM2ZFJybU5hWWxUTEpENnZWUzcyS1Zrb3kvOVliNFVaUi9oVGlUTlVvSGlFYy9qaDVweWk1di9sZ2oydE8xUklndFhFdWNwOFhiZmlEQkh6a0xaVjdOYStnK0xDUjJJZXZ1OGQ1RDBKTXl4YTROODdIT1IxZkh6RVdONW5McGNhRnhuWUkrdTRmbXdHa051QWE4eTYrV29XWnFVUlJ1SmZ4Y0FvTC9JblI4dFIyNHBES1FMd09oVDhEdHJxeWk3ZmNXbHY0b0dZTXpxbEFhU25aOEV2cjFZT3VidFVESGhGVUxqWFk1K08rd3VxeitjellZTS9GTkpHVVJLSFpjaThEZkx5UEhFTzhWZTA4bmhIbHNZeFlPYXBhakEvZ0JPY3B4RDFHMG1CZUFhNzZxMEljekNTc1I2NWJ4TXQwWVZjbmo4bXB0N28rcTJSNEFtTkprVkU0ZTVMbFlJUmlDdUdMR1l0ZDFPdmo3NTB6Ty9uaVJ4MnNxcmlNYWdVb04zQnZFYXZrbGNIWkpxOTY3SEtIUkpTZUxaV1QyOTJZRy9jbDNZM2V5eDExNkVONGQyL2hmKzc0ZVVFNmxxemsvZWcrWlNoMXk2Ukl0N0pGbHVLY1hldXhaV0l3ZHFxWTlOODAvc2tKZ1l1cHpMMjRsbElvQ2hncDhjd2dDc2RtZlVDOS82bllES0k2eWJ1K3ZBblRZV2M2S21JQXhTS3VzcnRrVUYxWUFRMDl3YXBmSmZmWlZxOGxQNjlnekhtMklrdjlrR3V1SE9VOVlZSHFDSGpWNytLcUlKdzFyZVZ1LzZucDJ1NnYwa0ErcDFzNnMwWFVoS2hZZ29NMlBDUk1zTkFyZnFhL1FHL2pmbHQ5TEhaTVd3aTE1QmNtR1ZEcUZIUkF4T3c3REJpMjNqSGxxYXM0bDZvM29TSVV4NEUveUFmWUh1c2NsWVAwWkwyT2tKOGI5TURJZFdZMnFxR09qcTNocllaLzVNZkx4V0tzSTJtL1hzL2EyTHhVVVEybVBLZXJreGo3L0xnV29IMEpDREI4TXU5bHZ5ME1JU05YR2V1eU9NK3ZHRm5lY3V6RG03TVFPQ0V1bXRiV1JYRm0vY2ZiTVRlWlI1V3RpUzNKTHhXU25xa1E0NlAvTUhidzB5WS9IdEdVZ1lDVC9MY1JvQjFiSThPam1JQjdSZGNHZUxhS1JDbEYwN3NqRzJUMytPYUZJVWw4V3NmQ1RwQXlRTUNRSGdNb1NDbWc2V0VtRno0dFVkbTVBdUpSMVBaTDVLU0pMUEZ1K1cxT2RHWWw4WGNIa2VqNkZTNzZMQVhwczk4Njg3aEEvbXVsYm1YWUtZVzNZWGRuNmxEQ2s3azNFeVRjRW5XWUhsaExkMWIzZW84ZFBqdE5MZ3lSRzFNNG5GaUp0MHVhZTZJcXVkMUxzN0FKdU4xS3lVWkl5Qmx3dS9qNXF2THF4blJsa3ZhYm5WRk5hM05JcndsL2V6V3E2VnZnbWJjQ2lwaStYM0c5ZTFOMmpyQ2czSlpWeTk3WFVQYVZsTzUxbFFlQi9GQkV4dWFXMVlHbzlKd1ZoeGtRWWZjUDRjbUNFTnppd2NmSGRVeExSYmMwcXFvdERhb1h3L0JzSlNnaUVKRm42cjlDTDRBbWN1citiUVZVOHorSVNQMlRRQldXdDJpN2RxbHB4R0FZdzNQY0hLU25FdXp6UFpVNHg1MkRXZXBFTmlsbkRaUFd2aXhiNjFqYkpHa0QveFdYUnc3NEVCakVib2I5MmRQSW1WWExPdWVCSkh2N1dHS0Q4VzFDeEZPQzkxaGptT0FLU1RIZXRnTTlGREQ5N0hHdGdqOXF6NTJsOTJ1dlJrQU1kWFBjQStsT0JLRkVDTFhrRnlZWlVPb1VkRURFN0RzTUdMcERYS09EZk9UejFmRXQ0bzVVd0NBZXRUbWVnRzlrSzVSbjdWR25kVzFXNVpLRkxVbW96Z1RLd25XM2RkNkhLcnBvM1BiSXRQZHVTZmx4NUpoS1FlK0ZxTGdvVktEbXY0a2Y3aDMxS3JWVHI0TVgzYU9lSmlSZ1BuMEIydVRNckVEd3ZBT1EwdlIveGFEYUNHWjBPTDVVMndtNkF4d09DZ2NOczVIbk05YWVpS1hTcWpKME96NmlXbnFnN0ttMHBpMWRVSzk2VnFvZ2hSNXVndDYrZHRjVlZFM2VOdytodnVHcVlhUkMrT3ZhRXhwcWR4cEhJRTd2N3dFQUxEQmpGWnhWME9ONHU5dHhmM1ppUVc0eU9rNzZvUnQ4WGVSMnk5dzdCOSt3WlpUOStKOE9GUC83aWVNMzdtbVJUSWNHbjVFVTYvNEd1MXJDdEZYOVRTc1g4YlhhclBEQzd1MFcvOUQ4RDhjTlhDZW9jTld3eFNJQUhBSmlIUTlxR2s0bXZBVlB0Zno1WS9KQ2hJM0J3dG1Gb252ZVlCTjV3YWhLdkNzUTQ3NmtDclYxTytKTi9OSVl1V05IczFRT0pNeTFNaXZ5SFZjSHZIUTFnNzFwWDN6MGxHVWV0VG1lZ0c5a0s1Um43VkduZFcxV1pQd1FtOEJZZEs4a3NCQ3A3Ny90RVN3ekpYdmYzQW56anZPR0pXdTZFdTBMejJNejhKYTFQM0haL3dkbG1RK0g0cVlRRlp3QVJJaUhJaEtFU3RoRXltL1N4ZlhDajY0eU44YjRZWjdrZW5rVnNndWxqcUhZQzVoajl6ay9NaWZxc2dMemhWS3ErYWpNYkRWaTNhQnRHdDcwd2lZbkJ3RWNVMU10S2J3UXorVDZUZ1RvbTZMMy9CdlpZT1NKSkF2TVlaZHZHTGRwWnFxZEhsbElwRngySnU0clp0enhuTDNkaDdtc29aanRTYkdTWEpOdzhqRUlROGZlMHhlcUJaRk8yekRlb0pXS1ZBcUdOeEpMRXFLSVdBZE1QRnFJdUhoWlJZbW9BemJZR0NIbHNyaVg5cVJOdUhya2I1TUgrM3VaeStKM0gwTkRxL0lQSzRKaktwWnU3b210S0xGVzF2ZDdkaStiN29Wa1hXMnhMMU1jL2xDSjgvYUVPN1QwWDdjT20wUTF6cUo3RnJQU1podHJDb1lybDdoMXEvbFZyT3FqMlZ6dGVSSXEzTE5wWENVejJZV040eHdTQk80Vk9GK3UwTllaMGZXaCs4VjVTaWZJL01BbVZuaUNUaGQxZWNrVXhCSUY3dHoxU1NYMGxGNjJPVERiNU9CL0VEYi95Qm5pRHJRTkNvQno3NjkyOGV4d0ZQRzVGc3BTcVgydExwV1psOVZ1RytkckRyOHZjZEdyalV6ckZ6ZnZvRkxHWEFDYk5XRjNPS1huWVlZT1VTTUEzaHR3cVZ3ZG5QeTVHL21NOCtOY2NXY25mZ25haWdRcWJqc2pLdDJzcy9kbHlnMHRCRkI1a3VRTW1YL1RGOElFbWxkYlVrWXZ5MTFSYXRQeTBHYkVjSGtnZmFjSnQzeld1Ump3QlNiQUhRQVhNTk9uUmhYTkNWc2UrQmtSWkdaNGw4QUZWWkJ4UXUwRmtwV3I2KytiWHJ5TUxFaEtkMGducTRYdS9LQVA1Ym5WSUFxZHFnVmZuOUkzN2hQTG5uMUFPZVN1NFNRMkNlUytXMkRYOGoyZFBXbHFaTURRTzhqc3pQcmEvc0ZZRFpDQXFZUmc4UGtNQ3ZLR1dlUmcwemR2dkNUSEdGdDd1QUxJb0hMTXlkbTYva0lnRXd3cUJXUTJwazNnZFNFY1NyZ0ZUNWZMMXAxQUtSd2JXY01NVExEdVpsQ3dwRklINXNMVkdPWmJmVStPQ01PazUwUFlUMFVKWUpPZzJSS2h3cWNDaURYVDJIL2l5QjRMakhmMDlCeGZ4WDJFQ0h5N0hPT1M1ZnI4NUxLM21zUjNPK0lxbENsL1VoemNMVXlwL0UxMGVZRWNDTUhIV2p4d2JINVhJYk5YRVorN1ZiR1VxTnVkSWpQRE9EN2VlSkEvWWgyWmZUZHhCWlVEWW9HSlVmbFUzc0RvUE85eTVjZ1N1Q3ZVUDgrNkFXYUU1VHlucTVNWSsveTRGcUI5Q1Fnd2ZETExLOHRJMWxaeit3aWYrOVpJQWRUMklIUDVLWWdUWFM1US9TV0NPYm9rbllaK1RCRngxbWVzSEdxYXFnaklYREh4VHJUdS9iQXFHZUVsbnpkOGxobXUvYXR6TjhGSUNNM2lReEIyNEJwZEdFKzYzKzBPbzQ5ZUxYWEs3ak5YZmVmRno0OGJodGpYY0IvbGthNkNpMnFHcVIveXhSVm9EZUpJMWdERnJrcWd3aVNiaUhmMmhsUUNxdjRQcXpGWUpDa0Z3cE51b3J4V1lFL0ZJb1hJTWd6U0NTaFlycjVKbTZiODNEbjh3REVUb1YzQXI2YVorZXVJdzlnNzIrbEtBM0hMSzh0STFsWnord2lmKzlaSUFkVDJha0hYZ0paTXl4d2IrQUZGNGI0bWJac3pqMnJOZUtQM0FuNmtSQjBNYXkzT2xETDdEdnp6c09RbksrL2JDYzRudy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdkYzMTJCSmk4ZVg0U2N0TkRCd3dFNDZLNjRPQVlJMHdnV0dSb2o1WmJwUUlOVkFOR2JHTUQxWVFscGNvL3IzQTNieG9TcXl5SThtdGRjZ2FkaXpMY3pkd3ZzTXJhU2lhQ1Naa0pMbjhZTUZ2S0Q0Y3RncEZ0WjR1OWZzQ2wvQk91Sko1UldDcHRHRmFSUnkwSWZ1WVFFb0UxZTZYUnFBNTdha2doSnlhd2NvS2xTTTVKMWhNeVJNaXI0QTBsVEpDV25JUTF4NXdDK1Q2T2tPMzl5bThrbzFWOGU1MEp6Y2tEeEl3ayt2WGJrWGJFcHgyeks4ZGd0R294S1RnR1dqN3VGZ3U2NVk4SnJhOFdVeDFjVXhMUVl6dkQ0UkhJR1hGOHBMRnJ1WUJZc0V1c3dmWlRPVitjWWlSUDUwc1VlM0NIYnhvU3F5eUk4bXRkY2dhZGl6TGN4eE1kWWovRkpncFQ3RmFNM2hsb05OMCtnMmxEVWN5Z1BOZTd0SFEyU3U4Y3NyeTBqV1ZuUDdDSi83MWtnQjFQWnlXd25SWk5Mb0hvOXhaVzVndkFNVmc0S2xReGMwNDQ1TkMyRXVGbUhIcEh4dkNMaVhrcW1JM0d5ejE5cGdkWk9HUm1QSGdtN0VSbDR5cVdTMjhoTU5JSEloMWpyYTNBcFl6OTdNZy9ESFhJS1pBRGw4NlVWdy8zMjA1WVJSUE9VWVJYckcxZUZ5VnhMOFREQ294NmNJZ1Uvb2dUTVF3SUN0RDMvVEh6S3BEbi8yN2I0NlFNQW9OUDJLbHJUK2RvT2ZOTE9VVWxqbFd0S2tqRm8reFlnRXkxRzlqa1RQVGRBdEcrN3c1Qko0dDUrQVR5VDBDVkl2b0lpVEZsWjNoSmtiM3dPS2RzaEE4QkhpdTZSd3FHeS9GdTYyVkdvZE05WEpiQmsxbS9QU1J3YldyOGJJOUgzM3I4TmhXVTFvcVFJcXcvM0tOa3NCc0lpMlJ3dVE5Rk5SUU9KYlo1c0d6K1hxVzBkWHNVV1lWbjF2NmhZZ3BVUU9nVlZSS1ZjNEtpU1M4c0dvRXBiQVN0UFQxdVJvRzc0OFh2cXRVNUQxTndKVzdhb3JKSk1JQ3F1UVVmdUpVYnMzeE9SUXlrVzk0VXloMmRXVTJwanYxVjI3TjRabGYxR0lDeTZkckZ0YURnNnhia2oyTGQrRE1DTzdqaDhNZ3FZV3dlbUFub2NKSFhSMFNjZUNqSEc5WFdERW93c01nc2RNWm92QXN4YzVBREpBL1Zad3EreGlvdkY2VytYdWx0anVpQjFHWHNHQUYvUExLOHRJMWxaeit3aWYrOVpJQWRUMjFCT1dlYTMxYnZRY1FPRGMrajUwVy9ya3ZHbXFsa3BYMlVFTjNrb2ZYMzRyU2tYd1ozc250NklSY1psOUhHdlVqcVV3S3Rsck5OQVdyQU9wdHdoVDhCbzJralZJR0U2bGREQjA1OW4yekZCTXJHb3J6THEwQ2pubmRXNU5EMFNReWR0cW1ieGV1K0N6d2l0MEJMekpCemVnYTRxN3NGUkdJZEtlRzRnTTZGRGZiakI0TUU0MEpIR3JwL2FhVW5adnNqemRodFo0ak52LzdBTC94NlE5dGgxR2tGWTdiWUljMldFdFhYYVhKV2g5TStxY1Jra2NKa0FoZGVqSHlaakZiTjJudGRpTXN5SEpMWjlVV2F0YVdTOXgwYXVOVE9zWE4rK2dVc1pjQUp0Mk44RFVuYmIxTTdKSWlzQlhvd3BVWXVXbCthL09FSDdyTTJJaGQrYTJac3NyeTBqV1ZuUDdDSi83MWtnQjFQWXdpSDBmUm5DenZsYmhjY0lkSVBORUc2VlJLVzNKTWwxSkNIMEo2dkRsbXZoNUoxeURGbWhiQW1YcXVWMEJvcno4U3d0S3dMdEdxK1BQaitOZnNnMXBaQ21COFJidUlHOHhId0ZGTjZtY2xjS0dmMjg3RTdpeWNIZmJFOXkrVUlDaUhhZGtnK295aVcwU3N2bk5DTmVmRzNhOTQzVXEvbEMrSnROUlJpM0tZSWpETnU4aWFwRno5cHMvYmViSSthRExLOHRJMWxaeit3aWYrOVpJQWRUMnovbHJBME5KZGVmUEdHSE9jdGI4bGlzZmNIelZEUUFobmVjWldGamRBYVI3a3gvT2ZOWkd6b0JEcHl3eVk2SUV0V1hJbUFITUkrbXk5SVVlVHFSQ0puNUt5TW1DRlVWbk1xTXFVeDBqT0I0dFJJUEVYa2h3WlBvNFlNVVJjRGhJNnlhZXArQ3FxMnVFTm9wZzBEenhUNXJMeDhXcHZUcE5QQ09ZU1dKbTZjMmhoQVlHT1o3Nk9VQXBONXNEeVRCQldNa3hZTlFTb3hxOXdVUktPR3IzSXNzcnkwaldWblA3Q0ovNzFrZ0IxUGJWZFBtNmg0KzhWME4xVm5mcDRubkRmRzhJdUplU3FZamNiTFBYMm1CMWs1RG8wazVxUU1nT0ZYb0RqQ2JkZW5CZFh2RmZyM3VLUnc3eE9EMVp6TFAzUklEaUtVVGpWRE9hMGIzMHJOdnU5c3NyeTBqV1ZuUDdDSi83MWtnQjFQYjVSNU8zOTZKMjJGeGtiUWJrWFhDcDUxMFRKTUUyK0l4aG1ZUTFEUExxTGNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3BUZklGMFpYMjB3S3lxdWUzZVczWlVKMEErWFVCV3dFTThCcGZrTVU2S2lMMldwck4xblU2SlRxb0lBQ1IxQ0NVeU0rcUNJcExpMkNtWmdUeGQ1dmRDQVFxOWJZSlJaV0Q5dzBKSzVSeUVnMEMzZVZZZ2J0OTRWRER3QTByeUprTkwrdnBmQnNPN2RSanVSMzZmaW8rc0hRalVveW8wTjZaZGxCamVvaTVRSGlweU4vbTB3TnhoYVZGWEtzMTZUdG50U3dtR3V1dWxzL0xHbURwT0IxWVhWQkRlOVZ3ZHkrSlpEVGNoOXNUWnVLNXNxZ0dCWmtIcHU4K2c5UnVZaVQzQngvZ1V4WkpreDBtNEF2WUtvOTdBWkhrZGJQN2hXMFplOFplTzBiakluUnRJUy8rMS85b3ArL1h3SkhFNW5DWWliTjdlamtiSUdUZGxieWo1NEJWckxtU1Rhc2svZXNYUVJLZzUxSDlySElVeW1VUXJGTGtPb2F1YStVbTZaUzRuN3Z6M1VsOVlGa1RheVBlOEN2SVBLV281RkhaS3hlV1pRdnZja3RIT0xpQWpyNVZLVEVaSUZKdmo4RWVKLzNCRkdUVGtSTGlsVEF4TFExTTc2K0VLZWVXSjJGT1RaMGo1S0FtTFFjM2o0YjBVeGhzUXhna2FxU3kzWjk1a0l0QUlESno5TklUTnBEc0dObnlWem51OXAwclNUZmJjS2pPWFlXbmZYYnMzYXZzM3RZalgwSXZkMmpJNkkvMTcxZkFXUjlUWnR5U1JKVkdzR2I5eHYvbXhKUGc0TnFtMmNPZ0xCS1RFVDc4UitGVHpJT2R1a0RhUUlhamd4aVBtN3A4TktES1BENlJhcUFxWnBSVDZsc2hCZFVSeDZxUjZxSFpaVStReEVFRGRQb2Z6RTJTQVFhQnRhSG5NWUJtMWVic0o1SysxeVMzb3VRY1ZmdlRIMXJZT1BaYW1zM1dkVG9sT3FnZ0FKSFVJSlM0T1ZQZGdscVdGOTZZYStOSUY1Zy9jSGNLYTdpWm9IN01hNTQyMDVGbGhmcU9EeUZ0c3R2UE52bE9lcDZQMlhUMldwck4xblU2SlRxb0lBQ1IxQ0NVTjc3c1A5YmJxN3BGN0hUSUh5dnBRS0pzS0QvNXhkdzdQQmp2aUxwVFZOVzJudmFKa3lLQXZmVnlhTDY0Z3JZQnI4Nm9pTk9jU0picEpBMFJiclI4ZU9JYllyclVwWFhuSGhLZGVKZEhQc3YvUm9WVXBPa05IcDJ5MXM1VHFkWWtQKzUvNlZVZEc0VUJvMG41UExWNFZIck9sVHZUK1NoK0Z6SUtsam5GZEhBRW9XRTBkMC9pL29RL3BwUGZoVWJtVGFmZGJBTkZ5REI2UGZkcitCR040MXFnWThmQ2JsRTFSKzNQNytGQ2xNUEw1bjdPSFNWWksyczZRNjB4S1BNNjA1VDVOVXp3OTBvbUZLOVNGbTdoREZSTHJSTk9iR2dpRk9oN0VvQkNaMTVoVWRlWWNHWjN2dVlxcnlRcHZNRXZJUWNTWlRUcjl4eGdnTlp3Vnd4d3RaSzNPaFFRMVhYRjl3YWRsajVBaHExOVREZGE3Q1lDVHNrWHlMMjV3Zm96YmZ2NE5tZlJNaTJPNDBZNTJSaWwvZFM0dGJ0M3dkVXYrajBscERBb3NuZ1QwSnIxanB6S0VNSDdWS2FHWGpqU0lnOGpkUm9vVnRDbmxZRDJtb3FROVB3eWtnaVVGUlRLZ1BhSG9Md2hjdnYyV3ByTjFuVTZKVHFvSUFDUjFDQ1VsY2FSY2FCdTdYNXptSmxDSjVIandxOHllYzJPV0hWNURLRFpZWk1UaUZKYzRHTjN0dUovNWpnQk9kQVhQeWRGOWxxYXpkWjFPaVU2cUNBQWtkUWdsRThROUVLRnRkWEFRRi90ZHlRR0ZZVmRldWllUHp1NXNiUVRSdURjRXl5SDRQb0dlNCtCeXpwdGNJTWVHRW9YOEpud0JwYVhtTkRVTGJOQWtWUkQ1LzlnejNNRWRwQmlzaGVoeFRoSGM1VmU3aC9iT2gyeHVpbUNBWkVVNjhtQzJIeEpiaTdtZWRadFduUUtOZkV4Z0tOUmhYRVVtb0Y1VDFpc1NxQUpEWjJaamhYREYwbDVheWZsS1J0c2tHQlQ4NklBK0tmcGVoOGgxcHhWVlRyNS96RDIyRTFpdHhPMzVQM3IyQXlEKzdXUTRNS1l0c3YxSHdEWlJabDBwV3VLQTN0dG1UTllnUzh6Sk91Yzc2dWZBNUJCMUE0K0UwWWNDbXVlL2xqOHBHVmV1TTMzVFpQSUtqTXBSdTlwVkhQMlRxR1pMd1NjLzB6ejlScmZSRzlKZndxNXNncktxZnFiTE5SM1I4Q2F0OEJQeVlBUHFlcXlrZ3VDY0FwZVEvWHRIdUZQVWt6ZVQzVkVnWCswMUh3Um9Yb1MrYitmbmxVRWhjOEU4VkxFQlJVd1M4UktUTDNHcDFmckZPNkMxb3g2OE1PcWpmcDk4c2NFOHNSVm12YzZqWDUwRXlRN3J5eWl1Z2NhTGxic25uRE05bHFhemRaMU9pVTZxQ0FBa2RRZ2xJR3BMaEtsRzFrOHhpeHhja2RQZ1J3TTlza2d3VDNGMmJ0ak0xNjFLMGw4eXl2TFNOWldjL3NJbi92V1NBSFU5cHJRaGpVditxNmw1d25pU21qUlRTc0Mrd2dIY24yc2lvWGd0K29hTXp0Mnl5dkxTTlpXYy9zSW4vdldTQUhVOWhQYkpmQldtd3RNZG9QSFBvVjdlalNwVys3aE9wYTNWSCtCbldpemhjRjZ5eXZMU05aV2Mvc0luL3ZXU0FIVTl1QTlDU1cvcEZpNUxKakY1Q29qRkVCc240dDdCVGZiYlpwU3huWHlxOHNFenBReSt3Nzg4N0RrSnl2djJ3bk9KOHNyeTBqV1ZuUDdDSi83MWtnQjFQWTAwUFZ2b00yZlc4THhObUpaajVmVXl5dkxTTlpXYy9zSW4vdldTQUhVOXNzcnkwaldWblA3Q0ovNzFrZ0IxUGFUbmlyU1JsOTJaMU1NV25LcVByVm1xaHRNck5INWM1bCs3NXU0VkVuVWsxUUl6WTF4dVhHa0dWWDE5ZHVaR2NyTEs4dEkxbFp6K3dpZis5WklBZFQyeXl2TFNOWldjL3NJbi92V1NBSFU5bkMrZjNYM2pGV2tJblV2WnVGK1FUVUVRU2tFeThvcGpvcW9mSm1iekRtM0FXQ2pBRTNvS29EVHN6QXVPSjgwKzhzcnkwaldWblA3Q0ovNzFrZ0IxUGFyVG1ZbTdvT1oxcnhsMFRJMXFKZE9obmFGblAybG9BRDNybkpFSkZQb1ZNc3J5MGpXVm5QN0NKLzcxa2dCMVBiS3VnRml4NTIxM0dwQ08rOFhWeVFFYldRMEFCU2lpMzQxT0pTN2o5WkJ0WmlDdlZUUTFObzNXcGhSMUx3TVp5ak43Q3dBeWhMQTNGMWdJQ0xSOUxJQnl5dkxTTlpXYy9zSW4vdldTQUhVOXZJd3dRMVZIUnEwL1lGMi9YZW50cVBMSzh0STFsWnord2lmKzlaSUFkVDJudUVNWXA5bW9ySmZhakJFRktlNXNGZjNWL0pIRmsxa0FkNERsMS9RMTVYVnlIT3VYZkhacmFQczAxL3RSQVU1akZnNXFscU1EK0FFNXluRVBVYlNZTXNyeTBqV1ZuUDdDSi83MWtnQjFQYUZSRUFzeDl4a3RJMXJ4V2hMTlpRQXpwUXkrdzc4ODdEa0p5dnYyd25PSjduaEgwSTZxdlhMejlGQzlZR1hXMzV2dE1EQ3JIRmJ6bGxlSUIyY2VFV3d5eXZMU05aV2Mvc0luL3ZXU0FIVTlsLzZ2aklOUkFJWDY0ZTNNd3lCK2EvaTNwTHZyWmgyWWpYT0xFekRvTXN6eXl2TFNOWldjL3NJbi92V1NBSFU5dGhHRVJ2ZlBGTHdOUkRWWmF6UTNZN0NBUWJtd0dsREVBZk9peXF0cUxROVFYaHdWQzJwNE9xOHZ2M1VWZVRkeE1JQkJ1YkFhVU1RQjg2TEtxMm90RDNpeVBmV0t3UVFkYWFLRkE4Rzdta01BYVB1cUd4N25TQ215d293OU1QZzMzbXh1YkFhVFA5MThGU0h6WGFRMVBqc01YbXd4NzFRN3dnNEFkby9mYnJoek9XZDZPOFRSenRVZTE4MEwycTk2RWxVV3U2bURPY0ZobHp6SmtOd3ZzSlNBNU4yb0RvVmZXYWFpbUZMbDJKZEhvM0RXRlBFMFR0eWxuWFBGblBpUityNnlFSTJrY0ZPWmJoMHh1RzlTWS9BTVJiQUgwNUpZa2lrdTR6VjZMd1NXSXVmRllmNElXeUVyTzJoUXJhWDFkY2dIR2tBcmhMajJxUUE2bDJBVW1BcHNPNGljc1RzQUxvWE1oNjhFQkpRYnQyaTA2ZzF2T2tMaEIxWHoxMytXQ1ErNFM3T05aWlRyWWRpWHlQZTRRMk9UL2ZJclAwdE56OWhXVGRDUmFvTUVVRjlHNXIyM0t4Ky83T041SUNiR2dVNENXbEwzNDVwa2sxczJyQW5iWHpFT1VsVkVRTVl1a3BnT2NrVVl1QnhLRWFkeURSMlhOdllIUFRVU0o2Y1ZRPT1cXFwiKVxcbn1cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcyk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5pu05aSaXCIsXCJwYXRoXCI6XCJtb3JlXCIsXCJydWxlXCI6XCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxuICAgIHZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5ryr5ri4JyA/IGdldEhlYWQocngpIDogJ+a8q+a4uCcsXFxuICAgICAgICB1cmw6ICfmvKvmuLgnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdZUycpID09ICfpmo/mnLonID8gZ2V0SGVhZCgn6ZqP5py6JykgOiBnZXRIZWFkKCfpqprnsoknKSxcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignWVMnLCBnZXRWYXIoJ1lTJyk9PSfpmo/mnLonPyfpqprnsoknOifpmo/mnLonKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+minOiJsi0tJytnZXRWYXIoJ1lTJywn6ZqP5py6JylcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IF90eXBlPT1cXFwi5paw54mIXFxcIj9nZXRIZWFkKFxcXCLmlrDniYhcXFwiKTpcXFwi5paw54mIXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfmlrDniYgnKTtyZWZyZXNoUGFnZSgpO2JhY2sodHJ1ZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IF90eXBlPT1cXFwi5pen54mIXFxcIj9nZXRIZWFkKFxcXCLml6fniYhcXFwiKTpcXFwi5pen54mIXFxcIixcXG4gICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfml6fniYgnKTtyZWZyZXNoUGFnZSgpO2JhY2sodHJ1ZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJztcXFwiLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgIH0pO1xcbiAgICBpZiAocnggIT0gJ+aXtuWFieacuicgJiYgcnggIT0gJ+e0ouW8lScpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfoh6rlrppVSUQnLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpVVJRFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXCJ9YCxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ5rZXknLFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXCJ2YWx1ZVxcXCI6XFxcIlxcXCIsIFxcXCJqc1xcXCI6IFxcXCJ3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5L2g6L6T5YWl55qE5pivJytpbnB1dFxcXCIsIFxcXCJoaW50XFxcIjogXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFwifWAsXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxuICAgICAgICAgICAgdXJsOiBgaW5wdXQ6Ly97XFxcInZhbHVlXFxcIjpcXFwiXFxcIiwgXFxcImpzXFxcIjogXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFwiLCBcXFwiaGludFxcXCI6IFxcXCLor7flnKjkuIvmlrnovpPlhaVrZXko55So5LqO6Kej5p6QKVxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcIn1gLFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkva2V5LnR4dCcpKSxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXG4gICAgICAgIH0pO1xcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgIH1cXG59XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLku6PnoIEt5LiA57qnMlwiLFwicGF0aFwiOlwiY29tbW9uMlwiLFwicnVsZVwiOlwidmFyIHJlcyA9IHt9O1xcbnZhciBkID0gW107XFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JykpIHtcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcbn1cXG52YXIgc190eXBlID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpO1xcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXG4vL+minOiJslxcbnZhciBDb2xvcnMgPSBbXFxcIjRcXFwiLCBcXFwiNVxcXCIsIFxcXCIwXFxcIiwgXFxcIjFcXFwiLCBcXFwiQVxcXCIsIFxcXCIzXFxcIiwgXFxcIjhcXFwiLCBcXFwiOVxcXCIsIFxcXCJCXFxcIiwgXFxcIkNcXFwiLCBcXFwiRFxcXCIsIFxcXCJFXFxcIiwgXFxcIjZcXFwiLCBcXFwiN1xcXCIsIFxcXCJGXFxcIl07XFxudmFyIENvbG9yID0gJyMnO1xcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxuICAgIH1cXG59IGVsc2Uge1xcbiAgICB2YXIgQ29sb3IgPSBcXFwiI0ZBNzI5OFxcXCI7XFxufVxcblxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXCInICsgQ29sb3IgKyAnXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcbn1cXG5cXG52YXIgYzEgPSAnYWxsJmJhbmd1bWkmZ3VvY2hhbiZkb3VnYSZtdXNpYyZrbm93bGVkZ2UmdGVjaCZjYXImbGlmZSZmb29kJmtpY2hpa3UmZmFzaGlvbiZjaW5lcGhpbGUmb3JpZ2luJnJvb2tpZSZnYW1lJmVudCZkYW5jZSZtb3ZpZSZ0diZkb2N1bWVudGFyeSZhbmltYWwmZ3VvY2h1YW5nJztcXG5cXG52YXIgdzEgPSAn5YWo6YOoJueVquWJpyblm73liJsm5Yqo55S7Jumfs+S5kCbnn6Xor4Ym56eR5oqAJuaxvei9pibnlJ/mtLsm576O6aOfJumsvOeVnCbml7blsJom5b2x6KeGJuWOn+WImybmlrDkurom5ri45oiPJuWoseS5kCboiJ7ouYgm55S15b2xJueUteinhuWJpybnuqrlvZXniYcm5Yqo54mp5ZyIJuWbveWIm+ebuOWFsyc7XFxuXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxuXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcblxcbnZhciB3b3JkMSA9IHcxLnNwbGl0KCcmJyk7XFxudmFyIGNsYXNzMSA9IGMxLnNwbGl0KCcmJyk7XFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxudmFyIGtleTEgPSBnZXRWYXIoJ2tleTEnLCAnYWxsJyk7XFxuXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXG52YXIgY2xhc3MyID0gYzIuc3BsaXQoJyYnKTtcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcblxcbnZhciB6YmMxID0gJ2FsbCYyJjMmNiYxJjUmOSYxMCYxMSc7XFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcbnZhciB6YmMyID0gJzAmMzMnO1xcbnZhciB6YncyID0gJ+m7mOiupOWwj+WIhuexuyblvbHpn7PppobvvIjnlJ/mtLvvvIknO1xcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMSA9IHpiYzEuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIxID0gZ2V0VmFyKCd6YmxhYjEnLCAn5YWo6YOoJyk7XFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcblxcbnZhciB6YndvcmQyID0gemJ3Mi5zcGxpdCgnJicpO1xcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXG52YXIgemJsYWIyID0gZ2V0VmFyKCd6YmxhYjInLCAn6buY6K6k5bCP5YiG57G7Jyk7XFxudmFyIHpia2V5MiA9IGdldFZhcignemJrZXkyJywgJzAnKTtcXG5cXG5cXG5cXG4vL+S4ieWQiOS4gFxcbnZhciByeCA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsIHt9KTtcXG52YXIgd3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcbnZhciBzX3RhYiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dCcsIHt9KTtcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0XFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXCJgO1xcblxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXG4gICAgLy8ucmVwbGFjZSgnbS5iaWxpYmlsaS5jb20nLCAnd3d3LmJpbGliaWxpLmNvbScpLnJlcGxhY2UoL1xcXFw/L2csICfvvJ/vvJ8nKS5yZXBsYWNlKC9cXFxcJi9nLCAn77yG77yGJylcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiAn6Kej5p6QJyxcXG4gICAgICAgIHVybDogXFxcIidoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nKydodHRwczovLycraW5wdXQuc3BsaXQoJ2h0dHBzOi8vJylbMV0rJyNpbW1lcnNpdmVUaGVtZSMnXFxcIixcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxuICAgIH0pO1xcblxcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICdVUOS4uycgPyBnZXRIZWFkKCfpppbpobUnKSA6ICfpppbpobUnLFxcbiAgICAgICAgdXJsOiAnVVDkuLsnICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aOkuihjOamnCcgPyBnZXRIZWFkKHJ4KSA6ICfmjpLooYzmppwnLFxcbiAgICAgICAgdXJsOiAn5o6S6KGM5qacJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICBkLnB1c2goe1xcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmlrDnlaonID8gZ2V0SGVhZChyeCkgOiAn5paw55WqJyxcXG4gICAgICAgIHVybDogJ+aWsOeVqicgKyB3cixcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcbiAgICB9KTtcXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn55u05pKtJyA/IGdldEhlYWQocngpIDogJ+ebtOaSrScsXFxuICAgICAgICB1cmw6ICfnm7Tmkq0nICsgd3IsXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXG4gICAgfSk7XFxuICAgIGQucHVzaCh7XFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcbiAgICAgICAgdXJsOiAn5pu05aSaJyArIHdyLFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxuICAgIH0pO1xcbiAgICAvKlxcbiAgICAgICAgaWYgKHJ4ID09ICfmlLbol48nKSB7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gZ2V0SGVhZChzX3RhYikgOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMydcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+i/veWJpycgPyBnZXRIZWFkKHNfdGFiKSA6ICfov73liacnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIFxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcbiAgICAgICAgICAgICAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXCIpKS5ydWxlKVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXG4gICAgICAgICAgICAgICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcIikpLnJ1bGUpXFxuICAgICAgICAgICAgfVxcbiAgICAgICAgfVxcbiAgICAqL1xcbn1cXG5cXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAnVVDkuLsnKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3VwXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gJ+e0ouW8lScpIHtcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2Uvc3lcXFwiKSkucnVsZSlcXG59XFxuXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFwiaGlrZXI6Ly9wYWdlL3piXFxcIikpLnJ1bGUpXFxufVxcblxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9tb3JlMlxcXCIpKS5ydWxlKVxcbn1cXG5cXG5pZiAocnggPT0gXFxcIua8q+a4uFxcXCIpIHtcXG4gICAgZXZhbFByaXZhdGVKUyhcXFwiTm0wN3dJWjhVZFF5NDFTM2dDekhaRDFaNXJMZ0cxMlRONFhKMWVpY3Z3NGNpYkh2OTV6TkdtQkhzdUdUSXZiVWNoeVdYd1dNandxT2pHYWZPWmh1dUdIYjFqOS9LcFZrOGl2dHhxUnVVVDE1ZWRMUlNqWm5BQUZmemwzNVZiM2FrYXcwM2lGKzJuN3cwcm9sYjhZOGJXcDNOcVFxNjNGSEp4ZTNiZDRsemRTdmcrWG0zakVWWkl2a09VUGc0QW83VFRpUi84VWE0MzFUMVIyZXJhVGJnTkhDLys5cnhSODhjZW4zT3ZaVkNDSjNORmUrYjZzRW5mUUpxbytZRm4waDFZeVFOaFdsaGRJZ3dDb292MXdOS3Z6TmM1VTZsNkxKSUUvNGVaVzA3NnhBdnVHVzdWaVJ0ZDk5TmxLM2hicmM3d1BrVjErbjNBcU1QeU4wMDl6Q0xFU2dLYVlqbG44SThNZTZBcVJrRlN1elVNRE8za2NyV21pVzZ3eUdqMzg0Z1ozRDFhNUI0ZVZ6VHRqckNLbGt0R3hlQnVIZ1pIT0pRcFBLZXhaM1d4aWFiaDViS3Nib1U2QURXKzR2djZaVFBubThwL2tWSkxUakhhTGQxaGZUK0FpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS9TTUVuYkRueCtrNGp3NFlTZ21nNjZSekZ0TmdaK082emlLWDZNUEJhVUhKT29rVDRodFZvbzJGTmIxMGthRnhyTGJ5eFRjQ0JJL1FLditrdkdLUTJidjd2UnNGYUVOa0hGa0xaTkxORHg4blA0NjAzZi9wNXJKbHE1STRyYnF2TXZyUjFmbHhkZUVzODNrdERyZWpxaHBYMkhZb3g1WGplTmVwU1dBbFNlZWZnU1IxdGs5d0I5clVDdkQ1MUZDUWNBT2RqMGZJdWxad2lYK016WkZYNWZlVG5ma0FHdW94Sjh4eW0yZkMwaTlEeHdRRTJrZDZlcGZLRkpzT0l2VXViVmFML2JEK0pHaVhIa05vajZ1ajc1Y244MlQveFUrNXk3TVZacmwzaFljOW1Yc2dPZHBJTmgvSmd1bmVhTGx6L2N0ZnprVkZhUFN2YW1Ja2FFM0txRTVRNHN2dlIvRXlLbHZKSVUwVUt6OS94OElXK2U4blRnSy8yMVhRMW1DMVYxOTdVNWQvQkZlRnFCeG00d2lGSGtCRWlUNGt3V0JTeEEwTGdydWwrc1dtams0ZGtiY01wa1dDOEFySzgrcGFlQkNqT3NNaVY0NERyVFNCemlpZGozU1lRQS9GTG5hbW4zTVFHWHpMelovWEFmemsxMnBabC9xVTByMy9TYnAzeW9uajYzSDljZVNxRFMxM2N6SVRKUDJZNTdxTE04K3RwZk8wU0REb3VvQlpPNUZCb3JwbGUwaHJ6U3l6QXhtbGoxclozN3g5RDRTR2tRdGhnNVNsOWVNTVNhc1l4Y1M1TDBDZWNEVE9yTEZoVUhzVTJYS2hvTmJhTFFoY1N4RGRUYUJvdGZCNDhYRXp1V2hVNlgxY2JQWlo1azlhUWwzaTQxcHVBVkFTN3RvQnEyRzRPSmVuOXFTOGpwQXpDYnhDdUFObWpuL3pabWx6LzJYalY3YnpkV3p3NnVLYWpRdDJWdmhWSUhqcE4zQzBFYWtLR0tMN2tpdXBWTlM4L0xMRTVFOUhZSVlJd2FSQzBlcUVBbWR6dGtRNDVlVXEwVHl5ai80K1dUWTNNbWZiREJzV0E1VzFxSzFabFVlWGx3bDFmT09TZjBCMDgrMmxsU0g3cUgvQ0E4UmF6VTFpcG1IU1BJcHh5dys5dHpwbzB2Sk9UTzRwUTE4bGlDTW94RW9MbFk1TDcrZDlmeFJpbHAwUm85L3pXL1A3M3pDT0FCQ0VzM0ZjendqeTJVbHlDU0I3ejRnUE0xSnpsU21SR1gzaU0vM3lGTTdvd3dReUZyNzd6SkpLdHAwaXVnL21ON3hkYlJCbnJRYjJiMi9wWVBEV2JIL3lJcE91bDJpVmlYYWVtYTJWUXM2cUttMHhOdVpNcU9yOHRWcTc3VXpHcCtGWWZhVG5YVEdrV0t4ZWdHNXNpNFc0d244YXE1NStiUDZFQkpYeGp3VEFEQXg4WVArWGtpSzJuZ0V0YmdXdXpwWmhpQVlERVhCc2N2alpaaUxvdGNFQmdJcUg3eXpFdHBacDJZNCtZSG9GUUJ2VFFsei8rbTlkTzJMTmErUW81S3l0WXM1bG1LMjFjQ1VHb2ZQM1JXUjUzTHZzc0E0M25YcUprczA3cFhnbm80YWU2T0xvd0xqMDVZQU9YNXRRZGpOeFNvQXRacExoTXZTZjE0NDkzZ3MrY0hHNEdGblo2N1VoY0N0bzVnSE1DU0d2TjlkRGVYNUpkaEJySTU2WVVxY293eGlxRGg2MzJFcTdsR2lqdXczQmFQMUszdm9obzdBNWdzc2pzdE11VW9hU1NVb0tvV0FHQjJnYWh3anUraFVTNm1yS0czTnRtc2ZoTmxZb0o2d2lSUkZHeGNFTVVTQmgwM3Y1MjBreXlpZm9wZ2dCRUVQNHVNSW1VM0tCalc5T0RHZTNlaDROMk03MWJWWGJxaUtVVmpKY1ZuNi9zUWNUd2dKVWhkeDlEczhtKzl5WWk1WW1yNDczSENKN1F1YzMwWEtRNXp0V0NpcjBHMk1QdU02c0YxYjFZWFhzVzFrK3p0UDRoMUV2QTdyRzR2aG02Qi81ckd6K2xPVEczV2NqcTlNanVnTFFlTzNHRzZNdGFjdkdGT0h3ZFFiTDBYSlQwN1BzMmRBa3ZkWk5qdmZWYjFaTmlvcFY3TmErZytMQ1IySWV2dThkNUQwTEM0WXQ4anVBSHRpM1BsdU9YbWtXbUNGYjA2RURTRUd5Ty9SVU9KdDFRbTJRQytEbG9pRXBlbEIxcE91UkpRVVVGQnNsaVcreWFqL1hnRWkzbk5BM3VUd0puTEtnbGFjclExclpjZnI4QnNoUnpocVFsdHhkYmhXeGZrOFFLdklqSjRMRjFhZW1VR0IvamUzWnRveGgzdE10eE9KQ2ZCMHFlVWpIVWx5bXNjcXl5R29TWktPanhEeXZDOStHd2FjZEc0ZlVrTnlPa3RQUE15YnMvWnJtWFBJZVZxeUJ4b252T1hNL2JEYnB6MHJwOEcxWmVJMHJTb1JsdjExdldOc1BncjZzeW56ZEhZQmE4elBXSWxnVjBaMGg5SE5NbXZMbFZQTXZ3M2UrL2dYRjBmTEtoczloNGpUSGt6M0VyOWp1NEVtRW5GcU9mdWNHL1NDQ3M5ME50a29LUy81dFNyLzAvZTJIcW54UkxURCsxN1EwbFpudmJuNWZ5KzRHalJETzVMSldmeGZXdUtVaytiUTVMMWN5bVo5MXgvODIyZUU1YW9HclVlN2p4L1FkRkRCWGw3Skt0SlhZQnhtRVZhUklQNEN4QU1GcXpkT3llVlN2dHVrd0Z2N0d0MFYxVmppN1hvQy8zd1NKRlI2M2FtM000WllFekFjV29sU0V2YnNXL3NhM1JYVldPTHRlZ0wvZkJJa1ZIb1NOUmhiUlBFRTZpNkJzVUQ3cUtDaTEvZWdKVGpGMEo0S043UFJoR3k3YlRJT1R1K1lhL2Y5TGFkWDFBOGJMc1lzeGxUYk5xVm82SnpQWmFwaWNOY0NkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdydG10UEFhWDR1SnNOZ2FCMEJUbHhzbEMxT29Ka0VsTjdHYnAxckJjdEd1VXc3cEwrUklPVFFrQ1lsK2EwVW4yZW1vSHdOdWJxRitKZDVjTzJwd1VvejAzalprOFUzbVdHbWpJcmNjak14QWUvcnR3eXNQNjNiNmlHN003dkxwT254VjN4dkN5ZEtUd21UZGkwbDZDMHozbzV0cXkycGtsN3VqMThEVmVWQ1hDNFZHNTZGK3ZQOEU5VkVNQWwvekNjakkycW1xbHVhNytoM2JybEhnNzk4QVJtNGJkTVBPbWZ5ZG1UR0IwZjdocXpadjE0QjMvY1dZcmFkd080ZXIxOVpiZlZZK3Y5UEpZcjZXT1U2MmlIUmo2WCtTS3R0UFdSK2xZSTAzaXRNcjhEdkY2eEdDK3hwK2hXK3Yvei85ZnJjODFJY0dNSVNlOE1IVFdpWGpBM1BoT1ErZXdINm5mUmVFTlRQVmFCcXJDdGtobk5kaWM4VTJoYzFjd2xGTHo3Zm9MZVl5eU84aWVkWGVGV09PK3FYN2p6OXVuaEl4YWxCaU1JdnNHN0pQOTRkZGp6M244Zk1UYjVNUEJvWDVGY2FmNFpCU3dYZDk4NDRvQjBCMXFvcEVLU2JCcVp4VjlZUSt3cGppbnZMdnY4b0NTdjI2YVlUc3ZFYlhzVGUrTTRBQ1gwdGtVbHJBNmkwNFo1eTZwYWxvWllObThwRFRzSnJrMGptOTU0L1k4NnBDK2dxMXVTZFREa1o2WVpyK0tuSEgzNmRScm1OYVlsVExKRDZ2VlM3MktWa295LzlZYjRVWlIvaFRpVE5Vb0hpRWMvamg1cHlpNXYvbGdqMnRPMVJJZ3RYRXVjcDhYYmZpREJIemtMWlY3TmErZytMQ1IySWV2dThkNUQwSk15eGE0Tjg3SE9SMWZIekVXTjVuTHBjYUZ4bllJK3U0Zm13R2tOdUFhOHk2K1dvV1pxVVJSdUpmeGNBb0wvSW5SOHRSMjRwREtRTHdPaFQ4RHRycXlpN2ZjV2x2NG9HWU16cWxBYVNuWjhFdnIxWU91YnRVREhoRlVMalhZNStPK3d1cXorY3pZWU0vRk5KR1VSS0haY2k4RGZMeVBIRU84VmUwOG5oSGxzWXhZT2FwYWpBL2dCT2NweEQxRzBtQmVBYTc2cTBJY3pDU3NSNjVieE10MFlWY25qOG1wdDdvK3EyUjRBbU5Ka1ZFNGU1TGxZSVJpQ3VHTEdZdGQxT3ZqNzUwek8vbmlSeDJzcXJpTWFnVW9OM0J2RWF2a2xjSFpKcTk2N0hLSFJKU2VMWldUMjkyWUcvY2wzWTNleXgxMTZFTjRkMi9oZis3NGVVRTZscXprL2VnK1pTaDF5NlJJdDdKRmx1S2NYZXV4WldJd2RxcVk5TjgwL3NrSmdZdXB6TDI0bGxJb0NoZ3A4Y3dnQ3NkbWZVQzkvNm5ZREtJNnlidSt2QW5UWVdjNkttSUF4U0t1c3J0a1VGMVlBUTA5d2FwZkpmZlpWcThsUDY5Z3pIbTJJa3Y5a0d1dUhPVTlZWUhxQ0hqVjcrS3FJSncxcmVWdS82bnAydTZ2MGtBK3AxczZzMFhVaEtoWWdvTTJQQ1JNc05BcmZxYS9RRy9qZmx0OUxIWk1Xd2kxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL3lBZllIdXNjbFlQMFpMMk9rSjhiOU1ESWRXWTJxcUdPanEzaHJZWi81TWZMeFdLc0kybS9Ycy9hMkx4VVVRMm1QS2Vya3hqNy9MZ1dvSDBKQ0RCOE11OWx2eTBNSVNOWEdldXlPTSt2R0ZuZWN1ekRtN01RT0NFdW10YldSWEZtL2NmYk1UZVpSNVd0aVMzSkx4V1NucWtRNDZQL01IYncweVkvSHRHVWdZQ1QvTGNSb0IxYkk4T2ptSUI3UmRjR2VMYUtSQ2xGMDdzakcyVDMrT2FGSVVsOFdzZkNUcEF5UU1DUUhnTW9TQ21nNldFbUZ6NHRVZG01QXVKUjFQWkw1S1NKTFBGdStXMU9kR1lsOFhjSGtlajZGUzc2TEFYcHM5ODY4N2hBL211bGJtWFlLWVczWVhkbjZsRENrN2szRXlUY0VuV1lIbGhMZDFiM2VvOGRQanROTGd5UkcxTTRuRmlKdDB1YWU2SXF1ZDFMczdBSnVOMUt5VVpJeUJsd3UvajVxdkxxeG5SbGt2YWJuVkZOYTNOSXJ3bC9leldxNlZ2Z21iY0NpcGkrWDNHOWUxTjJqckNnM0paVnk5N1hVUGFWbE81MWxRZUIvRkJFeHVhVzFZR285SndWaHhrUVlmY1A0Y21DRU56aXdjZkhkVXhMUmJjMHFxb3REYW9Ydy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdXIrYlFWVTh6K0lTUDJUUUJXV3QyaTdkcWxweEdBWXczUGNIS1NuRXV6elBaVTR4NTJEV2VwRU5pbG5EWlBXdml4YjYxamJKR2tEL3hXWFJ3NzRFQmpFYm9iOTJkUEltVlhMT3VlQkpIdjdXR0tEOFcxQ3hGT0M5MWhqbU9BS1NUSGV0Z005RkREOTdIR3RnajlxejUybDkydXZSa0FNZFhQY0ErbE9CS0ZFQ0xYa0Z5WVpVT29VZEVERTdEc01HTHBEWEtPRGZPVHoxZkV0NG81VXdDQWV0VG1lZ0c5a0s1Um43VkduZFcxVzVaS0ZMVW1vemdUS3duVzNkZDZIS3JwbzNQYkl0UGR1U2ZseDVKaEtRZStGcUxnb1ZLRG12NGtmN2gzMUtyVlRyNE1YM2FPZUppUmdQbjBCMnVUTXJFRHd2QU9RMHZSL3hhRGFDR1owT0w1VTJ3bTZBeHdPQ2djTnM1SG5NOWFlaUtYU3FqSjBPejZpV25xZzdLbTBwaTFkVUs5NlZxb2doUjV1Z3Q2K2R0Y1ZWRTNlTncraHZ1R3FZYVJDK092YUV4cHFkeHBISUU3djd3RUFMREJqRlp4VjBPTjR1OXR4ZjNaaVFXNHlPazc2b1J0OFhlUjJ5OXc3Qjkrd1paVDkrSjhPRlAvN2llTTM3bW1SVEljR241RVU2LzRHdTFyQ3RGWDlUU3NYOGJYYXJQREM3dTBXLzlEOEQ4Y05YQ2VvY05Xd3hTSUFIQUppSFE5cUdrNG12QVZQdGZ6NVkvSkNoSTNCd3RtRm9udmVZQk41d2FoS3ZDc1E0NzZrQ3JWMU8rSk4vTklZdVdOSHMxUU9KTXkxTWl2eUhWY0h2SFExZzcxcFgzejBsR1VldFRtZWdHOWtLNVJuN1ZHbmRXMVdaUHdRbThCWWRLOGtzQkNwNzcvdEVTd3pKWHZmM0Fuemp2T0dKV3U2RXUwTHoyTXo4SmExUDNIWi93ZGxtUStINHFZUUZad0FSSWlISWhLRVN0aEV5bS9TeGZYQ2o2NHlOOGI0WVo3a2Vua1ZzZ3VsanFIWUM1aGo5emsvTWlmcXNnTHpoVktxK2FqTWJEVmkzYUJ0R3Q3MHdpWW5Cd0VjVTFNdEtid1F6K1Q2VGdUb202TDMvQnZaWU9TSkpBdk1ZWmR2R0xkcFpxcWRIbGxJcEZ4Mkp1NHJadHp4bkwzZGg3bXNvWmp0U2JHU1hKTnc4akVJUThmZTB4ZXFCWkZPMnpEZW9KV0tWQXFHTnhKTEVxS0lXQWRNUEZxSXVIaFpSWW1vQXpiWUdDSGxzcmlYOXFSTnVIcmtiNU1IKzN1WnkrSjNIME5EcS9JUEs0SmpLcFp1N29tdEtMRlcxdmQ3ZGkrYjdvVmtYVzJ4TDFNYy9sQ0o4L2FFTzdUMFg3Y09tMFExenFKN0ZyUFNaaHRyQ29Zcmw3aDFxL2xWck9xajJWenRlUklxM0xOcFhDVXoyWVdONHh3U0JPNFZPRit1ME5ZWjBmV2grOFY1U2lmSS9NQW1WbmlDVGhkMWVja1V4QklGN3R6MVNTWDBsRjYyT1REYjVPQi9FRGIveUJuaURyUU5Db0J6NzY5MjhleHdGUEc1RnNwU3FYMnRMcFdabDlWdUcrZHJEcjh2Y2RHcmpVenJGemZ2b0ZMR1hBQ2JOV0YzT0tYbllZWU9VU01BM2h0d3FWd2RuUHk1Ry9tTTgrTmNjV2NuZmduYWlnUXFianNqS3Qyc3MvZGx5ZzB0QkZCNWt1UU1tWC9URjhJRW1sZGJVa1l2eTExUmF0UHkwR2JFY0hrZ2ZhY0p0M3pXdVJqd0JTYkFIUUFYTU5PblJoWE5DVnNlK0JrUlpHWjRsOEFGVlpCeFF1MEZrcFdyNisrYlhyeU1MRWhLZDBnbnE0WHUvS0FQNWJuVklBcWRxZ1ZmbjlJMzdoUExubjFBT2VTdTRTUTJDZVMrVzJEWDhqMmRQV2xxWk1EUU84anN6UHJhL3NGWURaQ0FxWVJnOFBrTUN2S0dXZVJnMHpkdnZDVEhHRnQ3dUFMSW9ITE15ZG02L2tJZ0V3d3FCV1EycGszZ2RTRWNTcmdGVDVmTDFwMUFLUndiV2NNTVRMRHVabEN3cEZJSDVzTFZHT1piZlUrT0NNT2s1MFBZVDBVSllKT2cyUktod3FjQ2lEWFQySC9peUI0TGpIZjA5QnhmeFgyRUNIeTdIT09TNWZyODVMSzNtc1IzTytJcWxDbC9VaHpjTFV5cC9FMTBlWUVjQ01ISFdqeHdiSDVYSWJOWEVaKzdWYkdVcU51ZElqUERPRDdlZUpBL1loMlpmVGR4QlpVRFlvR0pVZmxVM3NEb1BPOXk1Y2dTdUN2VVA4KzZBV2FFNVR5bnE1TVkrL3k0RnFCOUNRZ3dmRExMSzh0STFsWnord2lmKzlaSUFkVDJJSFA1S1lnVFhTNVEvU1dDT2Jva25ZWitUQkZ4MW1lc0hHcWFxZ2pJWERIeFRyVHUvYkFxR2VFbG56ZDhsaG11L2F0ek44RklDTTNpUXhCMjRCcGRHRSs2MyswT280OWVMWFhLN2pOWGZlZkZ6NDhiaHRqWGNCL2xrYTZDaTJxR3FSL3l4UlZvRGVKSTFnREZya3Fnd2lTYmlIZjJobFFDcXY0UHF6RllKQ2tGd3BOdW9yeFdZRS9GSW9YSU1nelNDU2hZcnI1Sm02YjgzRG44d0RFVG9WM0FyNmFaK2V1SXc5ZzcyK2xLQTNITEs4dEkxbFp6K3dpZis5WklBZFQyYWtIWGdKWk15eHdiK0FGRjRiNG1iWnN6ajJyTmVLUDNBbjZrUkIwTWF5M09sREw3RHZ6enNPUW5LKy9iQ2M0bncvQnNKU2dpRUpGbjZyOUNMNEFtY3ZGMzEyQkppOGVYNFNjdE5EQnd3RTQ2SzY0T0FZSTB3Z1dHUm9qNVpicFFJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6ZHd2c01yYVNpYUNTWmtKTG44WU1GdktENGN0Z3BGdFo0dTlmc0NsL0JPdUpKNVJXQ3B0R0ZhUlJ5MElmdVlRRW9FMWU2WFJxQTU3YWtnaEp5YXdjb0tsU001SjFoTXlSTWlyNEEwbFRKQ1duSVExeDV3QytUNk9rTzM5eW04a28xVjhlNTBKemNrRHhJd2srdlhia1hiRXB4MnpLOGRndEdveEtUZ0dXajd1Rmd1NjVZOEpyYThXVXgxY1V4TFFZenZENFJISUdYRjhwTEZydVlCWXNFdXN3ZlpUT1YrY1lpUlA1MHNVZTNDSGJ4b1NxeXlJOG10ZGNnYWRpekxjeHhNZFlqL0ZKZ3BUN0ZhTTNobG9OTjArZzJsRFVjeWdQTmU3dEhRMlN1OGNzcnkwaldWblA3Q0ovNzFrZ0IxUFp5V3duUlpOTG9Ibzl4Wlc1Z3ZBTVZnNEtsUXhjMDQ0NU5DMkV1Rm1ISHBIeHZDTGlYa3FtSTNHeXoxOXBnZFpPR1JtUEhnbTdFUmw0eXFXUzI4aE1OSUhJaDFqcmEzQXBZejk3TWcvREhYSUtaQURsODZVVncvMzIwNVlSUlBPVVlSWHJHMWVGeVZ4TDhURENveDZjSWdVL29nVE1Rd0lDdEQzL1RIektwRG4vMjdiNDZRTUFvTlAyS2xyVCtkb09mTkxPVVVsamxXdEtrakZvK3hZZ0V5MUc5amtUUFRkQXRHKzd3NUJKNHQ1K0FUeVQwQ1ZJdm9JaVRGbFozaEprYjN3T0tkc2hBOEJIaXU2UndxR3kvRnU2MlZHb2RNOVhKYkJrMW0vUFNSd2JXcjhiSTlIMzNyOE5oV1Uxb3FRSXF3LzNLTmtzQnNJaTJSd3VROUZOUlFPSmJaNXNHeitYcVcwZFhzVVdZVm4xdjZoWWdwVVFPZ1ZWUktWYzRLaVNTOHNHb0VwYkFTdFBUMXVSb0c3NDhYdnF0VTVEMU53Slc3YW9ySkpNSUNxdVFVZnVKVWJzM3hPUlF5a1c5NFV5aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNQ083amg4TWdxWVd3ZW1Bbm9jSkhYUjBTY2VDakhHOVhXREVvd3NNZ3NkTVpvdkFzeGM1QURKQS9WWndxK3hpb3ZGNlcrWHVsdGp1aUIxR1hzR0FGL1BMSzh0STFsWnord2lmKzlaSUFkVDIxQk9XZWEzMWJ2UWNRT0RjK2o1MFcvcmt2R21xbGtwWDJVRU4za29mWDM0clNrWHdaM3NudDZJUmNabDlIR3ZVanFVd0t0bHJOTkFXckFPcHR3aFQ4Qm8ya2pWSUdFNmxkREIwNTluMnpGQk1yR29yekxxMENqbm5kVzVORDBTUXlkdHFtYnhldStDendpdDBCTHpKQnplZ2E0cTdzRlJHSWRLZUc0Z002RkRmYmpCNE1FNDBKSEdycC9hYVVuWnZzanpkaHRaNGpOdi83QUwveDZROXRoMUdrRlk3YllJYzJXRXRYWGFYSldoOU0rcWNSa2tjSmtBaGRlakh5WmpGYk4ybnRkaU1zeUhKTFo5VVdhdGFXUzl4MGF1TlRPc1hOKytnVXNaY0FKdDJOOERVbmJiMU03Sklpc0JYb3dwVVl1V2wrYS9PRUg3ck0ySWhkK2EyWnNzcnkwaldWblA3Q0ovNzFrZ0IxUFl3aUgwZlJuQ3p2bGJoY2NJZElQTkVHNlZSS1czSk1sMUpDSDBKNnZEbG12aDVKMXlERm1oYkFtWHF1VjBCb3J6OFN3dEt3THRHcStQUGorTmZzZzFwWkNtQjhSYnVJRzh4SHdGRk42bWNsY0tHZjI4N0U3aXljSGZiRTl5K1VJQ2lIYWRrZytveWlXMFNzdm5OQ05lZkczYTk0M1VxL2xDK0p0TlJSaTNLWUlqRE51OGlhcEZ6OXBzL2JlYkkrYURMSzh0STFsWnord2lmKzlaSUFkVDJ6L2xyQTBOSmRlZlBHR0hPY3RiOGxpc2ZjSHpWRFFBaG5lY1pXRmpkQWFSN2t4L09mTlpHem9CRHB5d3lZNklFdFdYSW1BSE1JK215OUlVZVRxUkNKbjVLeU1tQ0ZVVm5NcU1xVXgwak9CNHRSSVBFWGtod1pQbzRZTVVSY0RoSTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDVyTHg4V3B2VHBOUENPWVNXSm02YzJoaEFZR09aNzZPVUFwTjVzRHlUQkJXTWt4WU5RU294cTl3VVJLT0dyM0lzc3J5MGpXVm5QN0NKLzcxa2dCMVBiVmRQbTZoNCs4VjBOMVZuZnA0bm5EZkc4SXVKZVNxWWpjYkxQWDJtQjFrNURvMGs1cVFNZ09GWG9EakNiZGVuQmRYdkZmcjN1S1J3N3hPRDFaekxQM1JJRGlLVVRqVkRPYTBiMzByTnZ1OXNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3A1MTBUSk1FMitJeGhtWVExRFBMcUxjc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwVGZJRjBaWDIwd0t5cXVlM2VXM1pVSjBBK1hVQld3RU04QnBma01VNktpTDJXcHJOMW5VNkpUcW9JQUNSMUNDVXlNK3FDSXBMaTJDbVpnVHhkNXZkQ0FRcTliWUpSWldEOXcwSks1UnlFZzBDM2VWWWdidDk0VkREd0EwcnlKa05MK3ZwZkJzTzdkUmp1UjM2ZmlvK3NIUWpVb3lvME42WmRsQmplb2k1UUhpcHlOL20wd054aGFWRlhLczE2VHRudFN3bUd1dXVscy9MR21EcE9CMVlYVkJEZTlWd2R5K0paRFRjaDlzVFp1SzVzcWdHQlprSHB1OCtnOVJ1WWlUM0J4L2dVeFpKa3gwbTRBdllLbzk3QVpIa2RiUDdoVzBaZThaZU8wYmpJblJ0SVMvKzEvOW9wKy9Yd0pIRTVuQ1lpYk43ZWprYklHVGRsYnlqNTRCVnJMbVNUYXNrL2VzWFFSS2c1MUg5ckhJVXltVVFyRkxrT29hdWErVW02WlM0bjd2ejNVbDlZRmtUYXlQZThDdklQS1dvNUZIWkt4ZVdaUXZ2Y2t0SE9MaUFqcjVWS1RFWklGSnZqOEVlSi8zQkZHVFRrUkxpbFRBeExRMU03NitFS2VlV0oyRk9UWjBqNUtBbUxRYzNqNGIwVXhoc1F4Z2thcVN5M1o5NWtJdEFJREp6OU5JVE5wRHNHTm55VnpudTlwMHJTVGZiY0tqT1hZV25mWGJzM2F2czN0WWpYMEl2ZDJqSTZJLzE3MWZBV1I5VFp0eVNSSlZHc0diOXh2L214SlBnNE5xbTJjT2dMQktURVQ3OFIrRlR6SU9kdWtEYVFJYWpneGlQbTdwOE5LREtQRDZSYXFBcVpwUlQ2bHNoQmRVUng2cVI2cUhaWlUrUXhFRURkUG9mekUyU0FRYUJ0YUhuTVlCbTFlYnNKNUsrMXlTM291UWNWZnZUSDFyWU9QWmFtczNXZFRvbE9xZ2dBSkhVSUpTNE9WUGRnbHFXRjk2WWErTklGNWcvY0hjS2E3aVpvSDdNYTU0MjA1RmxoZnFPRHlGdHN0dlBOdmxPZXA2UDJYVDJXcHJOMW5VNkpUcW9JQUNSMUNDVU43N3NQOWJicTdwRjdIVElIeXZwUUtKc0tELzV4ZHc3UEJqdmlMcFRWTlcybnZhSmt5S0F2ZlZ5YUw2NGdyWUJyODZvaU5PY1NKYnBKQTBSYnJSOGVPSWJZcnJVcFhYbkhoS2RlSmRIUHN2L1JvVlVwT2tOSHAyeTFzNVRxZFlrUCs1LzZWVWRHNFVCbzBuNVBMVjRWSHJPbFR2VCtTaCtGeklLbGpuRmRIQUVvV0UwZDAvaS9vUS9wcFBmaFVibVRhZmRiQU5GeURCNlBmZHIrQkdONDFxZ1k4ZkNibEUxUiszUDcrRkNsTVBMNW43T0hTVlpLMnM2UTYweEtQTTYwNVQ1TlV6dzkwb21GSzlTRm03aERGUkxyUk5PYkdnaUZPaDdFb0JDWjE1aFVkZVljR1ozdnVZcXJ5UXB2TUV2SVFjU1pUVHI5eHhnZ05ad1Z3eHd0WkszT2hRUTFYWEY5d2FkbGo1QWhxMTlURGRhN0NZQ1Rza1h5TDI1d2ZvemJmdjRObWZSTWkyTzQwWTUyUmlsL2RTNHRidDN3ZFV2K2owbHBEQW9zbmdUMEpyMWpwektFTUg3VkthR1hqalNJZzhqZFJvb1Z0Q25sWUQybW9xUTlQd3lrZ2lVRlJUS2dQYUhvTHdoY3Z2Mldwck4xblU2SlRxb0lBQ1IxQ0NVbGNhUmNhQnU3WDV6bUpsQ0o1SGp3cTh5ZWMyT1dIVjVES0RaWVpNVGlGSmM0R04zdHVKLzVqZ0JPZEFYUHlkRjlscWF6ZFoxT2lVNnFDQUFrZFFnbEU4UTlFS0Z0ZFhBUUYvdGR5UUdGWVZkZXVpZVB6dTVzYlFUUnVEY0V5eUg0UG9HZTQrQnl6cHRjSU1lR0VvWDhKbndCcGFYbU5EVUxiTkFrVlJENS85Z3ozTUVkcEJpc2hlaHhUaEhjNVZlN2gvYk9oMnh1aW1DQVpFVTY4bUMySHhKYmk3bWVkWnRXblFLTmZFeGdLTlJoWEVVbW9GNVQxaXNTcUFKRFoyWmpoWERGMGw1YXlmbEtSdHNrR0JUODZJQStLZnBlaDhoMXB4VlZUcjUvekQyMkUxaXR4TzM1UDNyMkF5RCs3V1E0TUtZdHN2MUh3RFpSWmwwcFd1S0EzdHRtVE5ZZ1M4ekpPdWM3NnVmQTVCQjFBNCtFMFljQ211ZS9sajhwR1ZldU0zM1RaUElLak1wUnU5cFZIUDJUcUdaTHdTYy8weno5UnJmUkc5SmZ3cTVzZ3JLcWZxYkxOUjNSOENhdDhCUHlZQVBxZXF5a2d1Q2NBcGVRL1h0SHVGUFVremVUM1ZFZ1grMDFId1JvWG9TK2IrZm5sVUVoYzhFOFZMRUJSVXdTOFJLVEwzR3AxZnJGTzZDMW94NjhNT3FqZnA5OHNjRThzUlZtdmM2alg1MEV5UTdyeXlpdWdjYUxsYnNubkRNOWxxYXpkWjFPaVU2cUNBQWtkUWdsSUdwTGhLbEcxazh4aXh4Y2tkUGdSd005c2tnd1QzRjJidGpNMTYxSzBsOHl5dkxTTlpXYy9zSW4vdldTQUhVOXByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUGJKZkJXbXd0TWRvUEhQb1Y3ZWpTcFcrN2hPcGEzVkgrQm5XaXpoY0Y2eXl2TFNOWldjL3NJbi92V1NBSFU5dUE5Q1NXL3BGaTVMSmpGNUNvakZFQnNuNHQ3QlRmYmJacFN4blh5cThzRXpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMnl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFVFUVNrRXk4b3Bqb3FvZkptYnpEbTNBV0NqQUUzb0tvRFRzekF1T0o4MCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBhclRtWW03b09aMXJ4bDBUSTFxSmRPaG5hRm5QMmxvQUQzcm5KRUpGUG9WTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkt1Z0ZpeDUyMTNHcENPKzhYVnlRRWJXUTBBQlNpaTM0MU9KUzdqOVpCdFppQ3ZWVFExTm8zV3BoUjFMd01aeWpON0N3QXloTEEzRjFnSUNMUjlMSUJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2SXd3UTFWSFJxMC9ZRjIvWGVudHFQTEs4dEkxbFp6K3dpZis5WklBZFQybnVFTVlwOW1vckpmYWpCRUZLZTVzRmYzVi9KSEZrMWtBZDREbDEvUTE1WFZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFGUkVBc3g5eGt0STFyeFdoTE5aUUF6cFF5K3c3ODg3RGtKeXZ2MnduT0o3bmhIMEk2cXZYTHo5RkM5WUdYVzM1dnRNRENySEZiemxsZUlCMmNlRVd3eXl2TFNOWldjL3NJbi92V1NBSFU5bC82dmpJTlJBSVg2NGUzTXd5QithL2kzcEx2clpoMllqWE9MRXpEb01zenl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTdDQVFibXdHbERFQWZPaXlxdHFMUTlRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNQWFQdXFHeDduU0NteXdvdzlNUGczM214dWJBYVRQOTE4RlNIelhhUTFQanNNWG13eDcxUTd3ZzRBZG8vZmJyaHpPV2Q2TzhUUnp0VWUxODBMMnE5NkVsVVd1Nm1ET2NGaGx6ekprTnd2c0pTQTVOMm9Eb1ZmV2FhaW1GTGwySmRIbzNEV0ZQRTBUdHlsblhQRm5QaVIrcjZ5RUkya2NGT1piaDB4dUc5U1kvQU1SYkFIMDVKWWtpa3U0elY2THdTV0l1ZkZZZjRJV3lFck8yaFFyYVgxZGNnSEdrQXJoTGoycVFBNmwyQVVtQXBzTzRpY3NUc0FMb1hNaDY4RUJKUWJ0MmkwNmcxdk9rTGhCMVh6MTMrV0NRKzRTN09OWlpUcllkaVh5UGU0UTJPVC9mSXJQMHROejloV1RkQ1Jhb01FVUY5RzVyMjNLeCsvN09ONUlDYkdnVTRDV2xMMzQ1cGtrMXMyckFuYlh6RU9VbFZFUU1ZdWtwZ09ja1VZdUJ4S0VhZHlEUjJYTnZZSFBUVVNKNmNWUT09XFxcIilcXG59XFxuLy/kuInlkIjkuIBcXG5cXG5yZXMuZGF0YSA9IGQ7XFxuc2V0UmVzdWx0KHJlcylcIn0se1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIuS7o+eggS3mm7TlpJoyXCIsXCJwYXRoXCI6XCJtb3JlMlwiLFwicnVsZVwiOlwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+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+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8xJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfor4TorrrljLo6IOKAnOKAnOW3sicgKyBnZXRWYXIoJ3JlcGx5X3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3JlcGx5X3R5cGUnLCBnZXRWYXIoJ3JlcGx5X3R5cGUnKT09J+WFs+mXrSc/J+W8gOWQryc6J+WFs+mXrScpO3JlZnJlc2hQYWdlKCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLGdldFZhcigncmVwbHlfdHlwZScpKycsJytnZXRWYXIoJ2xpa2VfdHlwZScpKTsndG9hc3Q6Ly/lt7InK2dldFZhcigncmVwbHlfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4m5oqV5biBOiDigJzigJzlt7InICsgZ2V0VmFyKCdsaWtlX3R5cGUnKSxcXG4gICAgICAgICAgICB1cmw6IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2xpa2VfdHlwZScsIGdldFZhcignbGlrZV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ2xpa2VfdHlwZScpO1xcXCIsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgfVxcbn1cIn1dLFwic2F2ZWRcIjpmYWxzZSxcInRpdGxlXCI6XCLlk5Tlk6nihJsyMjAzMjYwMVwiLFwidmVyc2lvblwiOjAsXCJ1cmxcIjpcImh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPUJWMWFRNHkxUjdBYyNpbW1lcnNpdmVUaGVtZSNcIixcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJmaW5kX3J1bGVcIjpcImpzOlxcbnZhciByZXMgPSB7fTtcXG52YXIgZCA9IFtdO1xcbi8vbG9nKE1ZX1JVTEUudGl0bGUpXFxudmFyIFJlZmVyZXIgPSAnQFJlZmVyZXI9aHR0cDovL3d3dy5iaWxpYmlsaS5jb20nO1xcbi8v6aKc6ImyXFxudmFyIENvbG9ycyA9IFtcXFwiNFxcXCIsIFxcXCI1XFxcIiwgXFxcIjBcXFwiLCBcXFwiMVxcXCIsIFxcXCJBXFxcIiwgXFxcIjNcXFwiLCBcXFwiOFxcXCIsIFxcXCI5XFxcIiwgXFxcIkJcXFwiLCBcXFwiQ1xcXCIsIFxcXCJEXFxcIiwgXFxcIkVcXFwiLCBcXFwiNlxcXCIsIFxcXCI3XFxcIiwgXFxcIkZcXFwiXTtcXG52YXIgQ29sb3IgPSAnIyc7XFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXG4gICAgfVxcbn0gZWxzZSB7XFxuICAgIHZhciBDb2xvciA9IFxcXCIjRkE3Mjk4XFxcIjtcXG59XFxuXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcIicgKyBDb2xvciArICdcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxufVxcblxcbmQucHVzaCh7XFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXG4gICAgY29sX3R5cGU6ICd4NV93ZWJ2aWV3X3NpbmdsZSdcXG59KTtcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXG5pZiAoTVlfVVJMLmluZGV4T2YoJ2FwaS5iaWxpJykgPT0gLTEpIHtcXG4gICAgdHJ5IHtcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxuICAgICAgICB2YXIgYiA9IEpTT04ucGFyc2UoYS5zcGxpdCgnXFxcImVwTGlzdFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXG4gICAgICAgIC8vbG9nKGIpXFxuICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWlsP2FpZD0mYnZpZD0nICsgYlswXS5idmlkO1xcbiAgICB9IGNhdGNoIChlKSB7XFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge1xcbiAgICAgICAgICAgIHJlZGlyZWN0OiBmYWxzZVxcbiAgICAgICAgfSk7XFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFwiJylbMF0uc3BsaXQoXFxcIj9cXFwiKVswXTtcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiO1xcbiAgICB9XFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcbn1cXG52YXIganNvbiA9IEpTT04ucGFyc2UoYmFuZ3VtaSk7XFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXG52YXIgcCA9IHYucGFnZXM7XFxudmFyIGNhcmQgPSBqc29uLmRhdGEuQ2FyZC5jYXJkO1xcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxudmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxudmFyIGxpa2VfdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvbGlrZSc7XFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcbnZhciBhZGRfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9hZGQnO1xcbnZhciBkZWxfdXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS9wZ2MvYXBwL2ZvbGxvdy9kZWwnO1xcbnZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG52YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG52YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxudmFyIHhseHogPSBcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvUm91dGUuanMnKTtSb3V0ZS5zZXRQYXJzZSgpO3NldFJlc3VsdChkKTtcXFwiO1xcbnZhciBqeGdsID0gXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L2p4SXRlbS5qcycpO2p4SXRlbS5qeExpc3QoKTtzZXRSZXN1bHQoZClcXFwiO1xcbmlmICh2WydyZWRpcmVjdF91cmwnXSkge1xcbiAgICB2YXIgcmVkaXJlY3QgPSB2WydyZWRpcmVjdF91cmwnXTtcXG4gICAgdmFyIHltID0gZmV0Y2gocmVkaXJlY3QsIHt9KTtcXG5cXG59XFxuXFxuZXZhbFByaXZhdGVKUyhcXFwiWFVpRlQxdlhZV3JVdytWaHBucWxnME4wdkFXZ3BnbGg4TWhaKzl2UEQ5OU5KNVZnZUZkSG13YUthd0l5NkMwaDZGRlFoRVE1UmhKbVYwRVFIbkw5eHliUEhBY2hBTDdoWkVaZCtoYkdIVjVqZUcrbks1UTNpZTc4cHVHRGIxVEo0ZkFJN2c2ZXpMSWpRTUJ4Ti8yWE05MllOTlBLREhkaExJTVFHVjY5TXE4Y1RPV2pLcFpRcDAvdmdOdXhhUFFLRXpTZEhRSnVlN3RUeGRTRXZEdDNzL3R4ZEVoL29HekZDQ05XZVpDVVU1M3poRWhDMDZxNlpGalpDTStkOEZzWjVjWGxOSmVtdGVnTWdKVUxkVHFhVmRSd1ZoVlgrMXVCUTlOeTBEcHNOR3gyTHdIZ09qbHM5aHcxNExoRXF0aEVlNzN5UEJHdlNnS0VCZFNZZ0c3Y0s3aFlWVEVOZUdUaVJBektQUTdqR0VxRUo4YWFkSE9IQWVTYTI1YUJiemM4MWhoeGdYdGlhbFg4VXFlcG43azRnMkdrc3FvRzNKVkkrcVRmV1p4UFdxTk0vMGpVWGJyVVRDUlpucnpHVm93Nk53UFFYS3EzQ0RLbDlpK2FadmVXejVJZjVFTkVaR2lXbFc1ejRhSlNFY2V4Q0RzaVpsbzEvUUpJajJyV29uRTB1NTRhaDIvWlovL1pHb01CSitkMTlHbWVwa0xCRDNuMnFvZ0tualpqMnJqV3FnUGFkRWVlMVpJaFozU0dibVRsSmYxQTRCWUl1dVB3djRkR1pkUm9EVzY0QmhDNWp1Q242d0RtN1lteTdCWGYxc1FhRmltRW5yU0lpSEdoTStXS2czSXlXZWN1aC9HaysrTW1ONkF4eGN2TkF5cDhiQzRoekJNdlpKL2w1dFJ5YXBvbWRDVjVCcGlYZmprV1JuYm9wSWpJK1dLQjNmQ2FZeVJkZU5MRVJLbkVsc2NEaXo3VWVuTHByaFljL2E0THNHZU1NRlZaOFlvOC93R1lIMzhKXFxcIilcXG5cXG52YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW8vJyArIHYuYnZpZDtcXG52YXIgbW9kZSA9IGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL2NhY2hlL2JpbGliaWxpLnR4dFxcXCIsIHt9KTtcXG52YXIgbW9kZV91cmwgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8sIOeCueS4quinhumikeivleivleWQpyheX14pICdgO1xcbnZhciB6bCA9IFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3BhZ2UnLCBnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvic/J+WFs+mXrSc6J+ebtOmTvicpO3JlZnJlc2hQYWdlKCk7aWYoZ2V0VmFyKCdwYWdlJyk9PSfnm7Tpk74nKXsndG9hc3Q6Ly/ngrnlh7vkuIvmlrnliIfmjaLmuIXmmbDluqbwn6SfJ31lbHNleyd0b2FzdDovL+W3suWFs+mXrSd9XFxcIjtcXG5pZiAobW9kZSA9PSAneWhjJykge1xcbiAgICB2YXIgbGF6eSA9IHloY1xcbn1cXG5kLnB1c2goe1xcbiAgICB0aXRsZTogdi50aXRsZSxcXG4gICAgZGVzYzogJ+aPj+i/sDogJyArIHYuZGVzYyArICfjgIDnsbvlnos6ICcgKyB2LnRuYW1lLFxcbiAgICB1cmw6IHB1cmwsXFxuICAgIGltZzogdi5waWMgKyBSZWZlcmVyLFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxufSk7XFxuZC5wdXNoKHtcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxuICAgIHBpY191cmw6IGNhcmQuZmFjZSArIFJlZmVyZXIsXFxuICAgIC8vdXJsOiAnaGlrZXI6Ly9wYWdlL2d6MT91cmw9aHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG9377yf77yfdHlwZT1mb2xsb3fvvIbvvIZtaWQ9JyArIGNhcmQubWlkLFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIGNhcmQubWlkICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZScsXFxuICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcbn0pO1xcbmQucHVzaCh7XFxuICAgIHRpdGxlOiAn4oCc4oCc4q2Q77iPU3RhcuKAneKAnScsXFxuICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIGNhcmQubmFtZSArICcmJicgKyBjYXJkLm1pZCArIGBAbGF6eVJ1bGU9LmpzOmlucHV0PWlucHV0LnNwbGl0KCcjJylbMV07dmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FjYy9pbmZvP21pZD0nK2lucHV0LnNwbGl0KFxcXCImJlxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcIix4cik7J3RvYXN0Oi8v5YWz5rOo5oiQ5YqfJ31lbHNleyd0b2FzdDovL+W5tOi9u+S6uu+8jOiAl+WtkOWwvuaxgSd9YCxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxufSk7XFxuXFxuZnVuY3Rpb24gcmVxdWVzdF9iaWxpX2FwaShiYXNlVXJsLCBTZWNyZXRJZCwgU2VjcmV0S2V5KSB7XFxuICAgIGlmICghU2VjcmV0SWQgfHwgIVNlY3JldEtleSkgcmV0dXJuIHJlcXVlc3QoYmFzZVVybClcXG4gICAgZXZhbChnZXRDcnlwdG9KUygpKVxcbiAgICBsZXQgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XFxuICAgIGxldCBkYXRlVGltZSA9IG5vd0RhdGUudG9VVENTdHJpbmcoKTtcXG4gICAgbGV0IHNvdXJjZSA9ICdiaWxpLWFwaSc7XFxuICAgIGxldCBhdXRoID0gXFxcImhtYWMgaWQ9XFxcXFxcXCJcXFwiICsgU2VjcmV0SWQgKyBcXFwiXFxcXFxcXCIsIGFsZ29yaXRobT1cXFxcXFxcImhtYWMtc2hhMVxcXFxcXFwiLCBoZWFkZXJzPVxcXFxcXFwieC1kYXRlIHNvdXJjZVxcXFxcXFwiLCBzaWduYXR1cmU9XFxcXFxcXCJcXFwiO1xcbiAgICBsZXQgc2lnblN0ciA9IFxcXCJ4LWRhdGU6IFxcXCIgKyBkYXRlVGltZSArIFxcXCJcXFxcblxcXCIgKyBcXFwic291cmNlOiBcXFwiICsgc291cmNlO1xcbiAgICBsZXQgc2lnbiA9IENyeXB0b0pTLkhtYWNTSEExKHNpZ25TdHIsIFNlY3JldEtleSlcXG4gICAgc2lnbiA9IENyeXB0b0pTLmVuYy5CYXNlNjQuc3RyaW5naWZ5KHNpZ24pXFxuICAgIHNpZ24gPSBhdXRoICsgc2lnbiArIFxcXCJcXFxcXFxcIlxcXCJcXG4gICAgcmV0dXJuIHJlcXVlc3QoYmFzZVVybCwge1xcbiAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgIFxcXCJTb3VyY2VcXFwiOiBzb3VyY2UsXFxuICAgICAgICAgICAgXFxcIlgtRGF0ZVxcXCI6IGRhdGVUaW1lLFxcbiAgICAgICAgICAgIFxcXCJBdXRob3JpemF0aW9uXFxcIjogc2lnblxcbiAgICAgICAgfVxcbiAgICB9KVxcbn1cXG5cXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcImhpa2VyOi8vcGFnZS9hcGlcXFwiKSkucnVsZSlcXG5cXG4vL+iHquWumuS5iWFwaemhuVxcbnZhciBtQXBpID0ge1xcbiAgICBhdXRob3I6ICcnLFxcbiAgICB0eXBlOiAnJyxcXG4gICAgaWQ6ICcnLFxcbiAgICBiYXNlVXJsOiAnJyxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcbiAgICBzZWNyZXRLZXk6ICcnXFxufVxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcbiAgICBwdXRWYXIoJ2FwaScsIEpTT04uc3RyaW5naWZ5KG1BcGkpKVxcbn1cXG5cXG52YXIgYXBpSW5kZXhTdHIgPSBnZXRWYXIoJ2FwaUluZGV4JywgJycpXFxudmFyIGFwaUluZGV4ID0gcGFyc2VJbnQoYXBpSW5kZXhTdHIpXFxuXFxuXFxudHJ5IHtcXG4gICAgaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxuICAgICAgICB2YXIgZXAgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFwiZXBMaXN0XFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcbiAgICAgICAgdmFyIHNlYXNvbl9pZCA9IHltLnNwbGl0KCdcXFwic2Vhc29uX2lkXFxcIjonKVsxXS5zcGxpdCgnLCcpWzBdO1xcbiAgICAgICAgLy9sb2coc2Vhc29uX2lkKVxcbiAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcoZXBbMF0uYWlkKSk7XFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JyxcXG4gICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfmlq3mj5InLFxcbiAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+aWreaPkicgPyB4bHh6IDogJ+aWreaPkicgKyBtb2RlX3VybCksXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG4gICAgICAgIGlmIChnZXRWYXIoJ2xpa2VfdHlwZScpID09PSAn5byA5ZCvJyAmJiBnZXRWYXIoJ2FjY2Vzc19rZXknKSkge1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGxpa2VfdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbGlrZT0wJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZzaWduPTRhMDg2NDVjMjk5NGViNjkyYWMwY2ZiMGJkNzU2OWM2JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGxfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8vJyArIGxfY29kZS5kYXRhLnRvYXN0O1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxuICAgICAgICAgICAgICAgIHVybDogJChjb2luX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZhdnR5cGU9MSZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZyb209NyZmcm9tX3NwbWlkPXRtLnJlY29tbWVuZC4wLjAmbW9iaV9hcHA9YW5kcm9pZCZtdWx0aXBseT0xJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2VsZWN0X2xpa2U9MSZzcG1pZD1tYWluLnVnYy12aWRlby1kZXRhaWwuMC4wJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnVwaWQ9MCZzaWduPThhYmJkZGQ4N2E2YmQ4MmUxZTQyY2IzY2ZmZDMyYmI5JztcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGNfY29kZSk7XFxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3RvYXN0Oi8v5oqV5LqGMeS4quW4gSc7XFxuICAgICAgICAgICAgICAgIH0sICksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGFkZF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGFkZF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGFkZF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coYWRkX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBhZGRfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5Y+W5raIJyxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGRlbF91cmwpLmxhenlSdWxlKChzZWFzb25faWQpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGRlbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjA5MTAwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc2Vhc29uX2lkPScgKyBzZWFzb25faWQgKyAnJnN0YXRpc3RpY3M9e1xcXCJhcHBJZFxcXCI6MSxcXFwicGxhdGZvcm1cXFwiOjMsXFxcInZlcnNpb25cXFwiOlxcXCI2LjkuMVxcXCIsXFxcImFidGVzdFxcXCI6XFxcIlxcXCJ9JnRzPScgKyB0cyArICcmc2lnbj1jNjRiNGM1MDgzMmQyOWU0MGEzZGRlZGVkMzY2NzEzNSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiBjb250ZW50X3R5cGVcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGRlbF9ib2R5X3R4dCxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coZGVsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBkZWxfY29kZS5yZXN1bHQudG9hc3Q7XFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcbiAgICAgICAgICAgIH0pO1xcbiAgICAgICAgfVxcbiAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICB0aXRsZTogJycsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXG4gICAgICAgIH0pO1xcbiAgICAgICAgXFxuXFxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGVwLmxlbmd0aDsgaSsrKSB7XFxuICAgICAgICAgICAgdmFyIGJhZGdlVHlwZSA9IGVwW2ldWydiYWRnZVR5cGUnXSA9PT0gMCA/ICgoZXBbaV1bJ2JhZGdlJ10gIT0gJycpID8gJ/CfkrAnIDogJ/CfhpMnKSA6ICfwn5OiJztcXG4gICAgICAgICAgICB2YXIgYmFkZ2UgPSBlcFtpXVsnYmFkZ2UnXSA/ICdbJyArIGVwW2ldWydiYWRnZSddICsgJ10nIDogJyc7XFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgXFxuICAgICAgICAgICAgaWYgKG1vZGUgPT0gJ1g1Jykge1xcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICd4NVJ1bGU6Ly8nICsganggKyAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2Jhbmd1bWkvcGxheS9lcCcgKyBlcFtpXVsnaWQnXSArICdAJztcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddO1xcbiAgICAgICAgICAgIH1cXG4gICAgICAgICAgICB2YXIgcGljcyA9IChlcFtpXVsnY292ZXInXS5pbmRleE9mKCc6JykgIT0gLTEpID8gZXBbaV1bJ2NvdmVyJ10gOiAnaHR0cHM6JyArIGVwW2ldWydjb3ZlciddO1xcbiAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXG4gICAgICAgICAgICB2YXIgZGVzYyA9IChlcFtpXVsnbG9uZ1RpdGxlJ10pID8gZXBbaV1bJ2xvbmdUaXRsZSddIDogKGVwW2ldWydsb25nX3RpdGxlJ10gPyBlcFtpXVsnbG9uZ190aXRsZSddIDogJycpO1xcbiAgICAgICAgICAgIGV2YWxQcml2YXRlSlMoXFxcImlmbnpxYU5xTlJrTjZOcUcwZlp4NU1leTQ3N09zTUpPVGJUZDlTYWpNa2ZET1JPdUtqaU1CRWZwbkJOZWxHVWY0MzlBdUpwZTB1Uk4xdGJFMWlVNTA1U2prVUFROE9adVZrRG5sQlM5ZzlFOS9WYW5BYW9rSVdaYXZRRXZxYktpTmlNa2UxTWNORE1kMGpEaEZmVkZacCtRRjRLQThQR2tDdURQSnB5YnBHekU4MEVOUDI1WURMMnltL1VUVXJvVzhQU04wOU9saUgzR2NXbjZKZk5NWkU0QnZRb0ZKZmcyV3Z2NFFXQ0VDRzFGSERLT1p5bnNZZjFjc1ZJdWJlOEY2NWR0UkU3Z3VSNTg3OC9QVUpYUWdEb2I1dDJZVU81UXp6TWNrckUxd3Mzd2FHMHBuRDY0cWtOSDJFc0lsQ2NDdkJ6N1lpZ0M5SXBIMXFtNnA4aStpWDN4QlBwQjY2TEQ5MWdQeXpwcnpNTy9zYTNSWFZXT0x0ZWdML2ZCSWtWSGFmbFNaY0t6YjdIVjI3MjBueml6TmhTeXNOZUVLOTdxczZnMUI2dzVUY2RTVDdtRVh4NTVMTlR1Zi8yNG8weXlDcnY0U0pMdVhXRXZPOVJ4MGphempseVdpYWhFMDh4end6UjhreWpyZEwxZzIyQ1pTUEtiVE9ySElkNUxiSlFkVnNFdjBXRGwveHRJTlJTM1ZZS1ovbkh1R1BGOFFMQWxBTlB6b3RER2trZDlHcEpETXNYam5tVU9XSVBnbXdBakZCay9XMkUzV1NiaVhsOEV0SlBnUXozRjRWZGtOZHZwb1c5OHJYTWVNNENSa1M3VG4vNUtJRkVqN3JGMy8vY3BrYXdrQ0R6cmduR2NJc0ZOK1MxVWVjSGtoeTQ3NFRUeFdIMUZNeThuUDZlZEtqYUN4ODdVZjdGK2tuL25uNk1wVkdmd3d6L3lQM1lHM29KVkdsRXYrV2t1RkFlUU1YWTRRblJ5d2NIRWVRK3MydTEzTkFXY3ZVSTZNbnlPcUl3cXlDNFA0bERFbUlabldEWGpVR1l1emkvTDVtMDNtRDZUaXdoRnpydGQraDM2bWdMdGVwU2YzVFZBb3UzT2RieHgwMzJtZFVFajVQRkRUeGtFYUcycmVvWkJFT1RtaUMzNDlPd3VYWFFlMWZ3R0h3ZUcrNjlyNmQrS05XakVOWVVGTnAvYzdGbWVkc3V6d2hlckoxVHg2THo0MWFvZk92TDU0UjlsdWdyQzMydGJWWGJxaUtVVmpKY1ZuNi9zUWNUd0FMU1pvcGl2TU00SFZORjNtWTJYTDhaK21wV2tucURCL0h3TklhQ21LTjdMSzh0STFsWnord2lmKzlaSUFkVDJTK3ZWTng0Z3NVTW1zWFZ4bzNHT3MycUEreHJQK2p4eE1TYVJUR0tOdVliTlNYekxhY294OVJPOGNwVlJEcXpvb1RPdG9mRlVBZjBvK1pEVzZsczBuY3NyeTBqV1ZuUDdDSi83MWtnQjFQWllTWFR1Q3Vlb2ZhNlUxL1dKQUhOaG5yQk9iL1hOcFNFQXFudzlWQUZTeWo2Nkl5VDc3RUd3dldGNytZUU9MT0ltajAzZVBUSVVENVpRMUIzNkJVN0JBVWNRTERGN3VWWGJEMXZGZ0UvK1JUT1NCeC9HY3dsaklsWFM5bEFBazJGU1Q3bUVYeDU1TE5UdWYvMjRvMHl5T3hkaXVXdUpmTWc4MkJYZEVqdVF2Umt0em9KUUE5aGpmMUl0cHVXbWlxQndkZi9MMEtPeDI2cjJNOHBqU2g5RXd6a1RyaW80akFSSDZad1RYcFJsSDBNZ1VOZzcwQWgwV0lmUVF1cCtjVng2ay8zQ2JXcXdJcytBYno5RkYydWg5ZU9QZDRMUG5CeHVCaFoyZXUxSVhCcmlNYURpb3M2TU1GU2dVTndxREFjRWdtWUZKM3kzR0ozTEY4U0FsdERqWmhadVJwQVUzUjl1Rk5zYWFDc2ZaUVpKVXoxMXowUzRpUVA0RERMVTBDVExLOHRJMWxaeit3aWYrOVpJQWRUMjI2Qno2Y29BL0V3b3FKaC9SbTZlMm00RDg5blFlS1VzRFlOcUtOTW9sUm44VUZSNzVFVzZSRUNUdm14NUVJZDh5dzhmMUhtM2FZK0xkSlFaWGVEMzlaNlNZMTA2V09pL05nVTY4WXFxdUhxNk0yempBandRUi85TVdXRHlDcUFKMVJ4ejdRUzhyQVFJS0hOMXcxZmxkYXRVK3hkZGloZzJPc1Z4enAyL2pJS0NoYXhDbTFMNGc4T0JSOWx1UWhaU2MzcG1Vb25Oc3h3RHhmcDFiS09pVVpCMXdhTXJoWHVTMVpiMVhYSFR2cDR1ak13V21lWkNOMFVKSzRQaUZVOFZ1QTlleWRCYmVvQSs0K0ZYL1VkUWQ3QTdteVVWK2lBMlQ4NC9MY0VPa25MTVRRcEdDUzFFWGUzQlprVFd6S2pTd2VBUXhaQzJka2ppS00veS83b3RLTXNsVzBJMzR1cTV4MTZaZ04xVmUxRGFsSCttdlFKeVdVeTFsWFUrMTdzc3pwUXkrdzc4ODdEa0p5dnYyd25PSjVIL29lRmhKdkNWZ3B6aFRjckdKSSt6ZGFyODhDd1pGcTFhTHNlc0g4MkVSZVhQcTBPaXBVMWFnRnU2UHo2OTl0N04zczQzbWo5SVAxeWR6aWRzU0MzTEs4dEkxbFp6K3dpZis5WklBZFQyZ0xwKzk1VENENkY5SU9ma2kvVHVCRmdqZkNBOG5sa2djU2RRbi96YlBkMjE1SGhqdU0wbXJQOXlvOXUrU01vbnl5dkxTTlpXYy9zSW4vdldTQUhVOXU4WjcvVnRMMklvd2F0dDNXc1VISFZjYUlrTjBteFBacWJ3SjNnb3MvR1h5eXZMU05aV2Mvc0luL3ZXU0FIVTlyUGN3ZGhaWjRyUEVtcnlRblpRbThsWHdZaktBNHg0THNkL2IzTGNNYjUzenBReSt3Nzg4N0RrSnl2djJ3bk9KL3lBeEJSUGl6NEpWNld2MW9qUXBMOWZ0SDJIOUtFemxqZGQxRHlFNk9mcnl5dkxTTlpXYy9zSW4vdldTQUhVOW5mUGhvRm5CT0tvWDZ0WFUxWjBwS3VNcWVHQk9pZ3V0M2xwOU5laWozZnJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpQy8rMkwvNW4zSElmM3NCTmJNZ2RZQ3ZQWXVFeEN0TEZTMmxheGNOSlB1eXl2TFNOWldjL3NJbi92V1NBSFU5Z01ORUhYYXJYcmh4NWhjRWY1OVo2YXlDMlFwbWcva1g0M0gwVjhsSGgyZTdUbzc4Q1I3TjN5UDBnNE80Z3M3UU1zcnkwaldWblA3Q0ovNzFrZ0IxUFk0OTltcDhTcy9DM3g4bVdpamNVZWhxK1FiemhnRmFVdS9tdHJ1SmtmMUY4c3J5MGpXVm5QN0NKLzcxa2dCMVBZYjJudUJBejVCN0hxRnpUTytjVFp5aFNJN0tJUDF5RTFRaE5HckZuaDFkWWtpUk9mR05BSVJ4QzlhTy9zWjhRczh5YktLQ2E2QWJVa2lGb2gwTlNDT3pwUXkrdzc4ODdEa0p5dnYyd25PSjJaWVArazNHUUsxM21Ud2ZqNHhHOENSYXpkeUtlTVFNalM3dmdBbTlTbmt2b1dLL0xhU3lmSGVnaUNqK3Z3cXRpZ2VJUnorT0htbktMbS8rV0NQYTA3UVJIZDlzMjkzVEJPUzRaR1hNUVdDTGZjV0wvMjYzcjJ2Sk9FNUxDMVNMNWMya1oyZ28xb0FEN2owTitMajgyQUFqVUlSakloM0R1QTZDQ29rWGs1RW9URGp6dUpxVEZ6OGRNYmRxbHhTVW42M2V3UXJ3MHBDcFRNYWRrL21qQ2NXRnJSMk5RcHMxcWw4N2lKanpoVUtJUFl0T0FQeEpEZWNYVk5raWllRURSZnZYb3J1ZSswaS9OdGFyalhXa1ZzQWpVSVJqSWgzRHVBNkNDb2tYazVFWWZ2L0xJamVUbThLUXcxdyttY3FiU2dlSVJ6K09IbW5LTG0vK1dDUGEwNXNjUDRWYzg0dVFKeE1JMzMzVnVFMnl5dkxTTlpXYy9zSW4vdldTQUhVOWpzS0syT1hTQWNGSnJ6Y2prem1GLzhKV1VFaEVFVEVtM0pCT0pzR3RFSUluUTY2ZW9US1l6Q0xKRlNCK2xnYXJuYnhvU3F5eUk4bXRkY2dhZGl6TGN4Z0paMVpFM25LOHNhTis0Um1MZkgveXl2TFNOWldjL3NJbi92V1NBSFU5c0VDYThrRDJXSWY1c0pLb1NXengvdmgrZGNiYmQ4NkJmUTFMMWZyQ1JCYXhsNzhDSHkxbzZ3SllFYk9ZMmtDNHM2VU12c08vUE93NUNjcjc5c0p6aWQ2eXMvVTRHMllvM2RhU0JIQkpLUVl5eXZMU05aV2Mvc0luL3ZXU0FIVTloYS9UMnVPa1AyU3VHVlNNbDlyTzU0Y1F2L1ZYVHRDbW55VGFJM09iUW9EYjdPeFYxQk4wRUhyZS9RbjNxYXhNZVFiN0tKeXNZWnFFQmtsMnAvaU9WWmdvZnk3Q2d6Z05ER04vdkdOK2dGLzZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDZkcUxCRVczWUVlNlAyQ1ZuRm9UNHNhZnJrR3hSTFR6S2FZTElzZTZKSFpWcVFoZFlRUk9RRTl1aDAzMDVKR3FWdFZkdXFJcFJXTWx4V2ZyK3hCeFBEcnFxaWp5ZGlIRW9FUGdIdFdiY0dkVkloWm5odnNOQkIyL0FjdFd1bnhhUW9jOWVzbEZjQXRreDQwNURhMFNtZytReDVtdkQwRzRyMTN5TGRoc1pqMmNvRTFQMHJpaDVrelVJdWZoZ21jNnhiMnBKWklSVyt2NWJlVzhYdEI4WlhMSzh0STFsWnord2lmKzlaSUFkVDJwWHlPSWFQQ0U1cDVaaXg0Nm5rOURIdVBqRDZGMHdIME9zb3BiWnBLUllsQ3FoLzhtZmNwa3ZrOURRaWlMUytEeXl2TFNOWldjL3NJbi92V1NBSFU5aHJjZjZ0RC9wVmZCL0MxVmVhZFdUOEt1ejk4ZXpiSFVYSXZTMk5GNnYyNDF5UlcxZTlnVUpZOEZDdmVobGQya01zcnkwaldWblA3Q0ovNzFrZ0IxUFk3SG5XZ1hKeFdISVQ3M2NDNDc3U0hTNGhoY3RNQ0FCendtVG5vRkdlVGJkTnlKS2dsN2tLU0FzRi9Hb1UrTVJMQVl3Tk5YR0YzMHkzRDZaZU12OERPTXZzVkdkWEh0ajI0WlVmd0RXc0pNc3NyeTBqV1ZuUDdDSi83MWtnQjFQYWU2T3orNHE2QUEwaHdlL2kyVzZ1d04wcmVqQ1Y0Z3NsbWFpc1RDKzk2Vk1zcnkwaldWblA3Q0ovNzFrZ0IxUFpxcnZwSTFTelRqMUxvSmdJVkVPWjF5eXZMU05aV2Mvc0luL3ZXU0FIVTl1UFcyd3Z5Q1pCcEROVjJ5bVVTcFQ3Mkd2enoxUEJOcHhwMHgxRFdZKzVFOXRSK2ZwaEl1VVdudFNJN1VlU2pqQSswb0VNVHJpNTRMdWVUdjdDZ2VnbXkzNytBWWxRdUYxQ2Jhb0gvRitRSmlWU24yWDZPSzkwUmZFcWprQy9ySVNZei83dWNwNmFNM1QxOWNKcHhFckhMSzh0STFsWnord2lmKzlaSUFkVDJOSWlNaUZHU0NuRlA4b3kvcUlmeVdWWWNuVzJQejlGTUlYUUtYWi9wYkJOc1VsaHd4b1dXZVl5S3pZQXRVNDArenBReSt3Nzg4N0RrSnl2djJ3bk9KL0xuYTVXc0x4Wk5jaWdycDBiVUJPZ3krVE1VMjRubGdCenlvRnNKWUJaZkgvWW8xVmdPN01EYWc0V3pPMFhLdzdvOEFjUmxSYTRxNE1vcE5zZysrd1BMSzh0STFsWnord2lmKzlaSUFkVDI5QXVCNGpQY1gxZC8zQWwrSkV1ZUQzQm5qa0pjMGJINUx3NDFHN1J4QmpJVDF5elBoWGNlWFFtRWNtY3d2OFlzbWEzZFVhRDJkcnZ0RUxXN0N0cm9FYWMwT092WlozYVNZYThHbnNvZnFCekRMdGlZd2NBT1N5Nlkza2V1T1ZYZ0lOVkFOR2JHTUQxWVFscGNvL3IzQTg2VU12c08vUE93NUNjcjc5c0p6aWQ5ZU93UUFlTE5uMW5iUk4zNTdSU25WOWNidlBYNFJtYWNDUE1xa0tlZlhRcXNBTHNvYzdUc0FOY1lQV0I3M1V1d3RLU1BPUXRDU2ZKcEoxTFRSYVFlbnYxclZuSU9QV2kydHVvT0lTVk43SGJ4b1NxeXlJOG10ZGNnYWRpekxjd2N0emxkTTk0bU1zTEh0SHA1RlFNM1BjWGhWMlExMittaGIzeXRjeDR6Z0pHUkx0T2Yva29nVVNQdXNYZi85eW1SckNRSVBPdUNjWndpd1UzNUxWUjV3ZVNITGp2aE5QRllmVVV6THljL3A1UVA0czNWY0tUMGtMcjhsa0dFbGpxSVJyZ1dtdXpaazVjY2cwUnRDUTgwVmRrY1FhRG1aM2tuWmlFWUdmM2EyWmdlcWI2VXB0aUFSQ1p4VVdsZ25wQ2pwbXA2d2NrbzBLQzF6c0xlU2ZFK2ZHOEl1SmVTcVlqY2JMUFgybUIxazQzZzBHOVNSUmlENUk3b004WjNDOFNZa0xmYTN3Mis2enIxR1hnK1dtTXFyRlFVWnM0V1hjSDRRREl4dGM2MG5NVVg2TDFXWE9VVXhuTTVmTFlnaUVBOEFMc0lpcnRCbCtFTzFPTDk5bEc4Uks3dWxvYi8vTUFrKzdEUURVbm5wTlVsZ3U4aUw4d09vKzVhaW9JS3Nwb1JrbXNHemtIeGtNR1NOcDlEaXhHbHovbHJBME5KZGVmUEdHSE9jdGI4bHVJRk1jdHlvdThoUUQ0WFNxOGdpZjRZMDBTVUhFdzUydXNqMG43SGdnN2E0eHlRbFp3SFkyVDk3Sktnc0YvN3NZMXVzdlM1dXdHZjRNdWRyOWh6L081MjhhRXFzc2lQSnJYWElHbllzeTNNMlRhNzN2MDM4YUtudlJteGxxdXQvUUVDa1k4SDVhMzhMVytETnJiTng5ZHA4S3VOU2xLNU1ZdWhDd01wRUFwYmZhQTV5eUJ6L3VPNU5CR0x2QWhzSVJjbHFuZi94QlR6b1hPU1JabWZnUmRTdmFKaHNFcVJsbUttM3pueWQwZ0VhRjAvWG9Wb21BbjFsRkZFOTBDSVNhM3IwMkRZa0ZOTS9SM2JWQ3VuTCtEdDd3cGVETEFJZjdWd1lQZVhYNUZhTEdqNFQ4dnM1Sk44NERMUDRrdUc5ZGd4OXpNcGR6VUFqQW5PYWd2Uk9FUmZHK084R09aNlVJcHpUYzBOSEJSeGEyM29OZlpqWjBBSHgzeG9WK2FUQnZEMjVTZG5OYlVwS1g3U0MrQ1BmdzRVRnlZaXY3TSt6QjRPaENJRVJ5ZUJyUERMTVc3OEorRlRndGIyMUQ4bHdPUHEwa1hwMG1NaEpXSDl0S2dRVXVVVGV3M2JCdndXMHZUUlg5T0RvL3JyaTBOeDlNbUdJaTEwdWJaaTBCdFBTZ2F6eEtGME0zcTBCL3ptNmlKbHlZZDZyQlVEZ1V1S3VKS0VhTzNTU1hzdEkvemMwSnFYd3ZoZGxQZytrcWlJcCtQcTBrWHAwbU1oSldIOXRLZ1FVdVVUZXczYkJ2d1cwdlRSWDlPRG8vcnJZQXI4anlsMTViUWVXYTFJMUY5QmkvRDI1U2RuTmJVcEtYN1NDK0NQZnc1dFpKUE1hZHNCUWtOSkpoVkg2Y1dhYytWS1MzTC93cE9ZVjFrTUpaaTNGcFhpZ09oRUVYNXo4WkFTeTM0NUdoTXFOOUV3NFRPdm91ZUJoWVFqbjY5c2ZyZDdCQ3ZEU2tLbE14cDJUK2FNSjhjOWNrSVYzSTRFK1krZmF0ak5qVkF0OXhZdi9icmV2YThrNFRrc0xWSXZVdld6em5WRUdua1I2YkVPdjVjb1VRQ05RaEdNaUhjTzREb0lLaVJlVGtTZTdrK29TQkF4NmcvRGxjanZTOGlOS0I0aEhQNDRlYWNvdWIvNVlJOXJUaHhLT25WRTZHdUFJS2cvWWVXaERGekxLOHRJMWxaeit3aWYrOVpJQWRUMnVvbkR0ZWZzTWZtZWlPVFVFM25ScmRpMkJoczRLNDc3eVZocElkMjR5ZzFqa0g3ZlgrZFRSQW5vQ2lVRms2UGt5eXZMU05aV2Mvc0luL3ZXU0FIVTlwa1dWSFJnVlljaCt5dkd0eEdiSGt4OGJ3aTRsNUtwaU54c3M5ZmFZSFdUckNJL3JMam56d05xbW9nZStWTFhMY3NyeTBqV1ZuUDdDSi83MWtnQjFQYkI0OTFGaWdFRThpb1dVakZXbC9xQkJhUjlENHUraW5CbTZHSU5tMHoydGlnVFY3cGRHb0RudHFTQ0VuSnJCeWcvdWdzc0pEa2YzTlNCSC9MNzNvSnpUakR1M3lxL2VXWStCcnpNVnpuWFBGQ2NhdTJvd1hMQjJ4ZFpJREVzNnpHUTRNb20yb3k1b2srQytGS3gwVXlmdWVFZlFqcXE5Y3ZQMFVMMWdaZGJmcU5nQnQ1dSt1cDNNT3VwY1VNNFNydkxLOHRJMWxaeit3aWYrOVpJQWRUMkc5cDdnUU0rUWV4NmhjMHp2bkUyY3ByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTlsb1VVRzYrQ0Zhd08wcUQ5NkdMUnhnYmFZZGpwSXQ2bXZVL2xYNFBRd1c0U294ODdtSXhBTFozU0RvdW5ERDlYSjE5eVpNdUx5SU1WV3N1SFY0b1h3NUdYZEdDMVErTkYwWlhnTm93ei9BaVBkU3hNbjhSVkdTWVlsMWFKNzM0ODlrZGpHSzZvMFMwaHB1MUFvS2MrNUxMSzh0STFsWnord2lmKzlaSUFkVDJteXRVOTVCc01FZTI1c0NvK3JvcThNc3J5MGpXVm5QN0NKLzcxa2dCMVBaZWpRdDJKUUMySm5WU1dYZml2dVRMZ25rRm12SVFhMHltL1JSekRQdG9nWmc4ekZZL01lbUhzbTBCL2ZuM0dwOXFZTjVtVDIzVWhwMXJPdHJJanRqQXl5dkxTTlpXYy9zSW4vdldTQUhVOXRFbVFPUFpKUW5pTGMyVy9FV2NSbjh0TE9qcUtzVFRxQ0JmV1ZweHVZNmZZMUtzakJNVk04Q0N6amkzY0dNZWw4c3J5MGpXVm5QN0NKLzcxa2dCMVBaRmJIbDZnZ2hwMVU0VlV6U05QQ3hOeXl2TFNOWldjL3NJbi92V1NBSFU5aUpHaU1DZWJZZ2l3alpJck44Z0xpM2NhM1pwVmc3TzlhYUlHMXJGQzdPZE1YUmFucHNkSHR6TEFTODdKVGR0TVRJTm5WdSt5YkxpNit6TmY0cS9QSGZMSzh0STFsWnord2lmKzlaSUFkVDIwbk9LUHQ0bVpXa3JwMkZLVnhqMGRXNjRrcDlyekdjbzRaWGxmWGtFK3daeitQUEFpWkhKaXRQUUxMdjRhTWdKOG9PdEViQmd4MEhxOVJ0MlM0Z0Rvdz09XFxcIilcXG4gICAgICAgICAgICBcXG4gICAgICAgICAgICB2YXIgZGMgPSAkKHB1cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgZXZhbChcXFwidmFyIGNvbmZpZyA9XFxcIiArIGZldGNoKFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvblxcXCIpKTtcXG4gICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcbiAgICAgICAgICAgICAgICByZXR1cm4gYXl0bVBhcnNlKGlucHV0KTtcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogdGl0bGVzICsgYmFkZ2VUeXBlLFxcbiAgICAgICAgICAgICAgICBpbWc6IHBpY3MgKyBSZWZlcmVyLFxcbiAgICAgICAgICAgICAgICBkZXNjOiBiYWRnZSArIGRlc2MsXFxuICAgICAgICAgICAgICAgIHVybDogKG1vZGUgPT0gJ+ebtOmTvicgPyB0cnVlX3VybCA6IChtb2RlID09ICfmlq3mj5InID8gZGMgOiBwdXJsICsgbGF6eSkpLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICB9XFxuICAgICAgICBcXG4gICAgfSBlbHNlIHtcXG4gICAgICAgIHB1dFZhcignYWlkJywgU3RyaW5nKHYuYWlkKSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiBtb2RlID09ICfnm7Tpk74nID8gZ2V0SGVhZCgn55u06ZO+JykgOiAn55u06ZO+JywgLy8n55u06ZO+5pKt5pS+JyxcXG4gICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsIC8vbGF6eTEsXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICB9KTtcXG5cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ3loYycgPyBnZXRIZWFkKCfokKTngavomasnKSA6IG1vZGUgPT0gJ+aWreaPkicgPyBnZXRIZWFkKCfmlq3mj5InKSA6ICfokKTngavomasnLFxcbiAgICAgICAgICAgIHVybDogbW9kZSA9PSAn5pat5o+SJyA/ICd5aGMnICsgbW9kZV91cmwgOiAn5pat5o+SJyArIG1vZGVfdXJsLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+eCuei1nicsXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBsX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhsX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXG4gICAgICAgICAgICAgICAgfSwgKSxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmipXluIEnLFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxuICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXG4gICAgICAgICAgICAgICAgICAgICAgICBib2R5OiBjX2JvZHlfdHh0LFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhjX2NvZGUpO1xcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcbiAgICAgICAgICAgICAgICB9LCApLFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgICAgICB9KTtcXG4gICAgICAgIH1cXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICcnLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxuICAgICAgICB9KTtcXG5cXG5cXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcC5sZW5ndGg7IGkrKykge1xcbiAgICAgICAgICAgIHZhciBwYXJ0ID0gdi52aWRlb3MgIT0gMSA/IHBbaV0ucGFydCA6ICflvZPliY3op4bpopHml6DpgInpm4bvvIzngrnlh7vmraTlpITmkq3mlL4nO1xcbiAgICAgICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXO+8m1xcXFxcXFxc77ybIFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzbvvIbvvIbvvIbvvIZSZWZlcmVyQGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlb30nKTtcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXCJpZm56cWFOcU5Sa042TnFHMGZaeDVNZXk0NzdPc01KT1RiVGQ5U2FqTWtmNVI1TzM5NkoyMkZ4a2JRYmtYWENwZ2dmdWFkNW8rM3A5N0xIV2JJcHRvdzRvK01SUXRhUDAvOHdpeUpDclpDYVpZVzY0d1UxQjYweFJCUXRiZEpDRWdSdUhob1pzYkdBWkJBNDMvVFh4R3dJa0Nja2JWNm56SGhtOTNEazVEaUM1STVIbitDZmlCTUU0eVFvMzlPVUp5M3BHQVdsakQxc25wekdoQmoxYjNIclR2eWtqRmFTUGduUy9NVWRKTWYwUVpJU05HVTh6NW92YW5Qc0grRjVXc1FnSGdJcXhXOWV2VjMrdGd5ZkxVZEZSME40RGx0TFlydzd2Q1BnelBRWC92d0JNUHk2WWNWdFNWS2piNlF6RmF1VE4rSjJJUllycGF5MTVha0Frb2ZhK1l4L2ZOVGVmNCs2WmFWem1YZVphRWFqMGJRL0hQWmlieFR6M1MrRG1VVmRnWXUwSFhNeTBDRkNYU3QzK2VPVU45YytFbVZBTHJOTjhPcVdyUGVrcnZGMXFOMVVLdjZrQmNCRVAvU3drdWZzM3ZNMDdmV3YvUk5KWUI3aEVoc29JeHl2SFFPaVBZQ1REK2VVcytmaCtVOWJSUkFVelJTbFhDemhXWGpEZkNKalkvOUIybDRScGgvbndvcEVNcWlpNXBKQ0pVUFRjL0g0VWZ3OUZPTFpteE1IYkVpV2ZmcDByZ2JwSG9LblJuendZZmcvUks3bjl6TEFkR0FLLzh1R2Ewc2xaNUlUMVhVZXFyUHNDcXQzTUg1RzJteXhCRGxxRDBZUVViNk5XaEk3cGpqcGluNmJXMnRod3pINE5UL1RwNENXcEhsVnljQlZXc1NnaEd5U0JFUVJwQlFLTE9UdjFFdk94Z0Z4aDlHWWN1OVQ2V1B1ZmJFbkRnL0xLOXJncjJwd29JM1lJajBwMkJiQm1YN3ZNaFB4S0tMcHhaaTQzSndWZjlIeG4zMU5hWVFpLzBTMXpUQ2c5UzI2dFVnQXE0OHJpK0VpM01IVWtJNldzTWJBNzNMbmZnQmo3N0RBbFFsNVFPa1V2L3BIaHlZbGlpUTJYWWFZeFNIK2hHNCt0QStLNnVQMGhES2VRTGsvZjl0N2krNllPMFUrOEdpL1h3SEFzdDZDTDdJL0tpQmZGUG5OWUx4WkJ4OUUwc1FlckkrOFlLRjJKZlRvdHZIZmM5aVNmM0xlQWNVeld5L0dzWXIyMHF6RTErMmhxVW54UWJxaUVqbGFNcWVyLy9RbzU4T3crRm1wUXAxd3UrN2hnZnI2UmtLNFl3eGtld2VYaE9SZkNCTnFJQkp6dHdaMWZCMG1icFJOM2NrbnpEaWNyYW1tM2pXa0RpWXpmL0pNM2hZczNjcnlsZEd5WHFyMjhKNnU4eExhU0RYRi95VVF3YlNGV0pNc3Q0K2lqUzNIN0RVNXdZamdraEV6aEJWS3g3MjRMVW1rcFVUYVJUajAwSmdDTXNsSER5eXZMU05aV2Mvc0luL3ZXU0FIVTlxMkNZUjdDOUNJa0d1STBrT0tIMG53S0tpMXhXZjladzFpdmdMeGtVbE9FSUZOcFE4WGQ0UnZpampHTHJ4UVIyem1zcnFMalRoanBuUjlyeWwycXVUbStIbXVpZWpzR01XR0lYS2t5cGRMWVBudmNIZkgyY2xXZ1U3MVZKeFdyejZLazdMaklHejZtRm9qNDVaWjdGL2oxdGpYTWg4bHJZQmxLZFhqemxEY3MyaHM5Sjl1QWN4S1dqUlhteTh1S0M0WnU3TWZWSzBrY0RmdnRBZmNrbmVuUmd3aFpGS3BTSHk2SDhmSWwwV25IUGJVU041L1ExSWlrOGthYUMwTVNiUjhLVjQ2dmhFZXZRZFBvZXhYN0NqcFNqWmtGQUtTRi8ya3VEWHlHc3pMejJoTk9rRzBpMUJta3hoamM2My9BUWx5S2l6azMwTUpCZk5QVkU2eTlxREVzZFhtTE1zb3VIOHA3MEh5SC9Lb2VseUFraStVZmRsS1FOajE3SG9ZR1NpblFrYmIyaUZXRzlORE9Xd3JqOFpRdVhUaU5LVFhKT3JIOGxUMSsxNjRFR2pYZTUrZnpmVW1BTTBDTFJNVFIvTnE1ek5WZ2U5UEYvVlBOZlUwZE5WY29MbVlQNkRUVTVPemcwYnNveDFhOFNnbmR4RlI5YlNOUnpabnpQR0pvNkhLR2NmYlZhU1VGUUNUZDZVYnpUZGNwTERUUXF1WndQRmJkZFNvWWpkc0Z1a25QQ0UyVXA2cmsvZTFkaDlLcjhtYUU4Rlk4Q09uQnU3QjFXZFBkeXVXZXo3eFB0c2h6QUl3UmVrSU9tRzBvbVNsYnh1WHcwYjlXdFBBWFJNVGVQZ2FiRHU4QnJ6MC80czBlb0JDUjZjdlhpd0tBWDhERkk5dno0Zm51ck5MZDdoWklrQ3ZBblQzUncvdFN0c1MrOHJGVW1HMDNpYVFtSm4zeVhhaVp3MU1TSGtSVnFXdERaOHpTQWtycW9ZQTdRM3V5WGRKTTZNcUNYRWJDZmdYbGdQNENBOGdMcjh0dndoNG5YRm1ZU2FhR2xFTVlDaGhWc1AwVG9uc2d5R2M2WkhyRitrSDJsREdTcXhNTmVCK1FUTnNOSGdyRVJyaHg2NnhPeWxzSVpFd0xDZXZuZm1RcC9DTHo0TWNDdDBGV3pobkpRMk5BaDgxMW1Pd2I0MmkzWE9qbnRrdEhUMnRRTVFRS0JnZFRuWWpHWUt3MEI0MTQxdWVCTmF3R2FaM2xMYVhXVDdZdUdRYUZLcFhkemttaTVzT2RqVlJ5U2tqVnBBOVlkRWFuU1E1Njg0U2pMWjNCdXRXTmt4SXAzZVF5NDNrK3hva2hQdndqVFZZcEdrYmJCR29DTTh6SUJEeGVxMjJMOUFrY05ZWHV6SmF5L05nM1R1WFdXS0F2MCs4ektkQ1J0dmFJVlliMDBNNWJDdVB4bENESWdWQ2pWQ0hYaWJxc3VQN2pLeVJ6M3RyOW5DWklYKytZQ0FhK1pkWEswUDJlZzF0bEp6ZVdnMjB6VWdFak9rbnNJRmtrMnVCZkwyVUVqTnhkbGxET0lTNzRHcjRCSGJxVEZPdkZCYTFqWmxQYnJmeHVOWTFxL0p6U2RjVkc5MjFlNDdPejhyRkRQdVZFN05mdGEybURmUWw3TTBKVE43VGllQllqZGFBWFBTOURPWU9Qc09WV1VsTzFReGNldHY1Z3dnSTBnSVZocGFYVEk2QXlDMm5ZNHZMaGZoVVpXcmJrZTZzYUd2K04rUWNyQVMvWHF6TlZPMThudGJmTXVlbEZpU25URlNpcllCTnlOYkoyeXRPazVIcU1IeHZPN2NEek1RN0UyemVKSGo4Unl2U0JtdlRxMGpCZExCaUlBaDdlSit4MkpvRVcvM0NiclRiZk95WnorSEZQc083aHN5VHpLYXJEcER2d2Q2R2xPS2dYMlNWbDNTVEQ0YUx1WGQwdk53VlpxSDZFaVJybDhhaFN6THdBRGNZTUlVQkRSd2VHWTNsbnRtdkNYMjF3S1Z0ZGVCR1RvVEtSekRPQVJOZnBHTmJGQkswcndxUHdLM3VZNHRpWHpobW15SmxENksyb1dVNGc5WFlXODJBQmxrNTJNbE9lUVlkMWhXSHJhd3BHcGJIQ0VjNGlxczhOMlNkYWE1QjlxTjRUWUIzWE5OdGkrck5JdEdnOU9wYXN1NW9mZkNGRkliTlptalRjOUVsSzRNd25PVzk5Q0dtNDAyTWE0L2VrMGxVSFBrck04VVc2TkNBRElvdkMwa21yVlVveG5TMEhReHNmZ1dRSWxrTlBEOUZVZk80aUpmMmYzaVRnenQ5aEUyT2dUMkNqS3dLcDhIQ2p1aGNhNUZjczFTbERsaFNBS2VITUg5dzJVZi9uNXVRNm5CMFdVV0NOc1J2OUROME1XZkN4VjdGTnhVbGEyd2NQSWJVdFlSTmpvRTlnb3lzQ3FmQndvN29YR2dDWkZscW03OHZ0cUNiZUsyOGlYempGY3QrNDh0MGtjNmJFaXFQMjhLbllGOG5BVm5GUUkyT0llUXZLYklIQXMvVFhsczI2M1FsYWpkSFVwTUtaTmsvQUJLRy8rcWtXMmRXUUU5V21QQ2VQT3ZkVm1BYVBNeDJ5N0xuM2oyN1VWUlBsSXBuaU82cjZXUDJkVDRhbWZwYTREVDl3OERrdEgwajM5WmE1S2JCanFZVDMwOEVhWDI3eFJ1L3EvTlhjWGhrWFA5SURaeVJTQ2N1Wmt4ZjZUWjRRS3BIbjV2empvdUlhY1NQTVR0YVN0cHlGRHZOR0hUK3hWNkVZdUJxNXIvZ0NkNk9oU2JMREtxSHp2Y0JDREJMTTJPUDQvRVIyc2h2N0dyTDJJYnN3S1hRWTVTVUlFMXg5bmVIMnI1R3g0MVAwYmZPVnBtbEx0Qk5NUkVQbE00alQwT0pqTXVoRC9PdUcyaDQ5UXhlSnFVS3FDcXJXOHJBV2JLSXFGN0RIeEQxbHowek5tNGpFZnNTNi9ZTFNsVHA0cjNjK0ZlZER2YVJpR1NpTG5HRTg3cTViRWR3SzdZYm5WQllNWDZiZENJc0s4UTA3UUprT3ljVU1mbWRDa3FWZTk3UmFDbmxhY0hRYWcwMjRlRm5XSEdGTy9yeC90VXZVWmljMndCcTYveDZqOEFKOEQybG5nbjhYN2FhQXI5UVZzblRKV1lWa3MwaHQzNFNZT01lay9pbkNtTXREc2tTck83K1dURWZDdUNLa2lwN1ZHejUySk1xMnZ6em1teUt5bzJxYThSaFVjY3lYaHltOFdHeDZvdSsrU2lKcXU2Zk16c3dNRzRUdFgvakxSZlgyNFQ4YW9ZcFozbzkzaTlTeGtRbzB0M09RMjBOSCs0bG9Ccld5a3dBU0dGcVdPWC81NTVIbm9Lakd1aGMrNmJNVkZnL2pTM3BESnNYbitmTXU3ZWlkSmF2eVo2VVpqaDBBOEtMNXI3anpBWG5XZTZFaTUvNFA2VnBPVUhZWEtBNXNyRWN6RnBIVVA5UmRWM0l1aUs3NkdQcTZwajVNNUxqS2R3TjVLQk5YdWwwYWdPZTJwSUlTY21zSEtQTXJiMU00MnNEbG9SUWhuZXBOaW84QVJ2MFlEMlE5R0pQT2NCSFU2RVRIV1l6MklpeW45UGlqWlI3WVNwMnA3eWlRQk5HcWpXWUdXdTZMTWxRSWRZUkNKOXBUUnp4dVU4cm56eHhrOFBRQ0Q1cERNUkVDNFpkTW9TWGNtY1ZjSHlNQ21BVUdtaVRSK09yQUNyTHBneWR2dEwra01IVXRaSHZINE1hUjdJeHZpSEZBRVFjenZxSjZMVWtzaTFFZE9MTUkvUnNQY04rUDVFeE1yMnhrMTc2UHNkL3VkanVoNVNTWXNoZmRDcWZrbzlOeGF6aTd5WUk1b2xHRUU0S2lYVXFVa0ZkM3F3a3ZISVZVSWFQMDc1UVQyeVh3VnBzTFRIYUR4ejZGZTNvMGg0TGtsaU84Z0dXYS9pcWtEL0RubThzcnkwaldWblA3Q0ovNzFrZ0IxUFpYd3BnYTAxckRmWWFWVE1WeXhHU0l5eXZMU05aV2Mvc0luL3ZXU0FIVTlqU0lqSWhSa2dweFQvS012NmlIOGxsV0hKMXRqOC9SVENGMENsMmY2V3dUYkZKWWNNYUZsbm1NaXMyQUxWT05QczZVTXZzTy9QT3c1Q2NyNzlzSnppZVdMTVZhT1ZHNC9lMVZQVFNBelk5SDg3T0NKWGV4K2lBT29XK0tBbnJpQnpBVkJkRnd5VXFJZW5MSlZzUkg3VnYzTlY3M01xcnFuL3BrekFYdGtpVUFYd3BLbVZ6ZGJlTkxsZWJva0Rrb21zc3J5MGpXVm5QN0NKLzcxa2dCMVBZM21UUm1TdFNrSGJ4QS9GdGNmaGIzMzRCb3oxWXVYNCtabnBCbFJTd3lUVEUxdUdMWWZlcFphMEo5cFRjOFkvR2JFNnpYdWErZmQzT1lrazRDcFk1aElOVkFOR2JHTUQxWVFscGNvL3IzQTZ2OEg3c2RPNUs3U2paOElUNUpTTFZzcEJGVTN5eXFqUGNkVkc5ZHlEL0xwR3hiVzI3UUJvLzh1MlZocGttOUxjTXczaDhoaXA2Q3pCNlRscHdUMVQ2N1hIa0d6OFVhMUMrU0wvRUV6ZXE5Szk4VlRTVzRGUHllY0ZZN0lVYzQwQVhQbXBxS0lxdGE3U2NqQVl2RDhoWkgzZDNVMVU1My9Tb2NKSEtEajRadjFqYm5GVHNqb2RqVjBmSGVZT2R0NTBQRldjT3hYWWF6OGpnZ2RsMDRCRUZGVWswU3BmdjJ6cmROMjU1S0ZyMW00Z1V4eTNLaTd5RkFQaGRLcnlDSi9oalRSSlFjVERuYTZ5UFNmc2VDRHRvUmttR3YweU5kRTBiaTljNHBXUFFnclZpMFFqZHpIMjVYME5uSkFrbDVZVWlrUGxsRlpYaG4yZFF6TG1NaktQMlJLNkxLUkE1QXBIZ09YWlduR3QwQW1jZlV5dXR3MEdZUkc5ZXdvS0FZUTM4SnRLdlJzZFZJaTZGYzRNeWplMkJid3VMb3QrbDZZeHhQMkZla1Vra2k5OGdiUXEwQ2xwdmJoWjJuNXZjNXFJWjFmdmJTTnRlTkhpMk5zRFcraFVYRThPWWgzQXg5d0FLNkJoTTBEaW54bzZPVm96OGFseHE0NHR0cWtpQVI3RzhIWHptdU1OakxzK2E5K1FJOXFlNkRTYkFCUWo3VUZFaFBjVjFlL2dQVC93Ui9zNW95U1NMdjMzMHRqcnp3bzdwbExvdW5jL3NhN1VlQXhCZXJRVXF5MkFsNDFEYXdGTGVLK21hK2FPTWJPZVo4ZElCYkdaaldSSjZqWFpJZU01ZGtXb2FZNWNSUmNDcDA5cUZtbWhsL2NXc1FWMi9LZnEvRGEydTM4U2ZYckkxVksyZWc3QzJPdms1U1Njc2xzUk5RMFFnb3RDKzRNQ1VSRU04OVJlN0lCOS9pd1d2Kzc5cUkzUy9IbktmeHJ1RnZPV040L3dXSFI2OW9jYWhHeE8vMXQ5dVpRc0tMOE5oNG1GK0xBRllqaForUjRJcEJWdGVYeTZmR2xXOGFRUTFzem0vUzlpSWsrallja2tTbm9WaVladG0ydkdzWlZDSU9jbDB2ckxIbVpNVnlpL0dKOFQ5bC9pU1FxKzlOQURtV1N3UnNXOWpyS1IydXl3R3M5QmhGZXNiVjRYSlhFdnhNTUtqSHB3aHRaRFFBRktLTGZqVTRsTHVQMWtHMUd6M2ZRZ1ZHMENLZ1FyR3h3eWc5Sk5GeDhsSzBwZEVPTytEYVh6VHJIb1h4TTBiSXNmY0xZQ3dLNWxsSUNLQWs4Wk1UNk10YUhNdjB5N2V2TWpCWi8xWWx2UTlla0wwZjYrN2hXN2JHVGhFT3k3eDlJeXliYm85eFU4a0dRMEl3U3lzYkg3OTlleWZLbmxaWlhkVS9ueDRXbjFhMUNQeWdLMTRLdGlYVGRGRFEyTGdDT24ycW9QWmY3TnRJRnhkTDZ5YWVwK0NxcTJ1RU5vcGcwRHp4VHpIYnFYNkRtY1A3UHllakhOT1ZVZzN3REYyUndkM0lreVlDcWdabk42RXJXMVYyNm9pbEZZeVhGWit2N0VIRThCNk1oTG54dExHa1JaWjArRkZJNktuK1hvZTdMTCsyWmFEbzQveXlua1ZSN0JGdVNxaHRLTHZ6amRieVlvVG93aW04NWM2UnEvUkNYdHdnOVJnNHFTRVJHampaeUZjSlEvUTZhSmJ2MExwRXlSbjNxcHA3NXVUM3pjYlRTUlJUVmp6dmN1WElFcmdyMUQvUHVnRm1oT1dlLzJwQjE1alU0MGllKzNjODlveWlhZUlPLzVza2R3UVB6ZzYvWUhOVi8xc1ZWZ09LYVc0STdRQWthU090ZFZQbTZINnd2bHlYRUNBTnZoQ01HZWxGQWUxald2ZEJNdW5WUjhOMlJGU0FPOE1rSUo2bzhMdlVvektEa01RQnQ1cC9jV3NRVjIvS2ZxL0RhMnUzOFNmWEQ1MmdLRDZIOFhWS0ZmbURIYW9TaE1zcnkwaldWblA3Q0ovNzFrZ0IxUGFtYjBxYWJUODNENnFuL2EzR2xIeUd4YW1aZ1JIYUsxNnZtWkV6YW51VERPekcxYVVwdkVDdFJCOEVNZ2FwYVFYTEs4dEkxbFp6K3dpZis5WklBZFQyNnZGcGdhMFpSTFdSUDNqSDB0eXJOWUE3NWVDVGY5ZElxallHY0FBMXJzVTB6ZWVwZE1aOE1KWGQ1K3hiQWFYQS91SmZzR2pQSTdwc1FjOEpuK2ZtM01MaytOQ0VGOExzUTBPdGdsSVhMKzYzRlJ2eUc3bk1jZXZINGkvWFQwQjFCWE5QTDZyOGk2Ym5iZStRSktZTUE5M1BkYkJjRHNHVFZhTGlKbFlkRU9UZmpZYnBMVVJDZGx4OUsvcHVFWFcrXFxcIilcXG5cXG5cXG4gICAgICAgICAgICBpZiAodi52aWRlb3MgIT0gMSkge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmwgKyAnP3A9JyArIHBbaV0ucGFnZTtcXG4gICAgICAgICAgICB9IGVsc2Uge1xcbiAgICAgICAgICAgICAgICB2YXIgcnVybCA9IHB1cmxcXG4gICAgICAgICAgICB9XFxuICAgICAgICAgICAgdmFyIGRjID0gJChydXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxuICAgICAgICAgICAgICAgIGV2YWwoXFxcInZhciBjb25maWcgPVxcXCIgKyBmZXRjaChcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9EdWFuTmlhbi9NeVBhcnNlLmpzb25cXFwiKSk7XFxuICAgICAgICAgICAgICAgIGV2YWwocmVxdWVzdChjb25maWcuc2V0dGluZ3MuY2opKTtcXG4gICAgICAgICAgICAgICAgcmV0dXJuIGF5dG1QYXJzZShpbnB1dCk7XFxuICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgdGl0bGU6IHBhcnQsXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcbiAgICAgICAgICAgICAgICB1cmw6IC8qbW9kZSA9PSAnWDUnID8gJ3g1UnVsZTovLycgKyBqeCArIHJ1cmwgKyAnQCcgKyBsYXp5IDogKCovIG1vZGUgPT0gJ+ebtOmTvicgPyBsYXp5MSA6IG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHJ1cmwgKyBsYXp5LFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogdi52aWRlb3MgIT0gMSA/IHYudmlkZW9zID49IDUgPyAndGV4dF81JyA6ICd0ZXh0X2NlbnRlcl8xJyA6ICdhdmF0YXInXFxuICAgICAgICAgICAgfSk7XFxuXFxuXFxuICAgICAgICB9XFxuICAgIH1cXG5cXG4gICAgZC5wdXNoKHtcXG4gICAgICAgIGNvbF90eXBlOiAnbGluZV9ibGFuaydcXG4gICAgfSk7XFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXG4gICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgdGl0bGU6ICc8c3Ryb25nPicgKyAn4oCc4oCc6K+E6K665Yy64oCd4oCdJyArIChnZXRWYXIoJ2xhYmVsJykgPT0gJ+ivhOiuuicgPyAn4oCc4oCcIOKKmeKAneKAnScgOiAn4oCc4oCcIOKKleKAneKAnScpICsgJzwvc3Ryb25nPicsXFxuICAgICAgICAgICAgdXJsOiBcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsYWJlbCcsIGdldFZhcignbGFiZWwnKT09J+ivhOiuuic/J+WFs+mXrSc6J+ivhOiuuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vJytnZXRWYXIoJ2xhYmVsJywn6K+E6K66JylcXFwiLFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcbiAgICAgICAgfSk7XFxuXFxuICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOaOqOiNkOWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfmjqjojZAnID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcbiAgICAgICAgICAgIHVybDogXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfmjqjojZAnPyflhbPpl60nOifmjqjojZAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+aOqOiNkCcpXFxcIixcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXG4gICAgICAgIH0pO1xcblxcblxcbiAgICAgICAgaWYgKGdldFZhcihcXFwibGFiZWxcXFwiKSA9PSAn6K+E6K66Jykge1xcbiAgICAgICAgICAgIHZhciByZWx5ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHkvbWFpbj9vaWQ9JyArIHYuYWlkICsgJyZ0eXBlPTEnLCB7fSkpO1xcbiAgICAgICAgICAgIHZhciBjb3VudHMgPSByZWx5WydkYXRhJ11bJ2N1cnNvciddWydhbGxfY291bnQnXTtcXG4gICAgICAgICAgICB2YXIgcmVwbGllcyA9IHJlbHkuZGF0YS5yZXBsaWVzO1xcbiAgICAgICAgICAgIGZvciAodmFyIHggaW4gcmVwbGllcykge1xcbiAgICAgICAgICAgICAgICB2YXIgcmVwbGllc3ggPSByZXBsaWVzW3hdO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHJlcGxpZXNbeF0uY29udGVudC5tZXNzYWdlO1xcbiAgICAgICAgICAgICAgICB2YXIgbWVtYmVyID0gcmVwbGllc1t4XS5tZW1iZXI7XFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogbWVtYmVyLnVuYW1lLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBtZW1iZXIuYXZhdGFyLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxuICAgICAgICAgICAgICAgIH0pO1xcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICc8c21hbGw+PHN0cm9uZz4nICsgbWVzc2FnZSArICc8L3N0cm9uZz48L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXG4gICAgICAgICAgICAgICAgfSk7XFxuICAgICAgICAgICAgICAgIHZhciByZXBseSA9IHJlcGxpZXNbeF0ucmVwbGllcztcXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgeiBpbiByZXBseSkge1xcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3MgPSByZXBseVt6XS5jb250ZW50Lm1lc3NhZ2U7XFxuICAgICAgICAgICAgICAgICAgICB2YXIgbWVtID0gcmVwbHlbel0ubWVtYmVyLnVuYW1lO1xcbiAgICAgICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgbWVtICsgJzonICsgbWVzcyArICc8L3NtYWxsPicsXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICAgICAgfVxcbiAgICAgICAgICAgIH1cXG4gICAgICAgIH1cXG5cXG4gICAgICAgIGlmIChnZXRWYXIoXFxcImxhYmVsXFxcIikgPT0gJ+aOqOiNkCcpIHtcXG4gICAgICAgICAgICBmb3IgKHZhciByIGluIHJlbGF0ZWQpIHtcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiByZWxhdGVkW3JdLnRpdGxlLFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiByZWxhdGVkW3JdLnBpYyxcXG4gICAgICAgICAgICAgICAgICAgIGRlc2M6IHJlbGF0ZWRbcl0uZGVzYyxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgcmVsYXRlZFtyXS5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcbiAgICAgICAgICAgICAgICB9KTtcXG4gICAgICAgICAgICB9XFxuICAgICAgICB9XFxuICAgIH1cXG59IGNhdGNoIChlKSB7fVxcblxcbnJlcy5kYXRhID0gZDtcXG5zZXRSZXN1bHQocmVzKTtcIixcImdyb3VwXCI6XCJHb2xkZW5Ib3VzZVwiLFwidWFcIjpcIm1vYmlsZVwiLFwicHJlUnVsZVwiOlwianM6XFxuZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXCJoaWtlcjovL3BhZ2UveWNsXFxcIikpLnJ1bGUpO1xcbi8v6YCa6L+H5pCc57Si5p+l55yL6Ieq5bex55qEdWlk77yM54S25ZCO5pu/5o2i5Y2z5Y+vXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnLHt9KSl7XFxucHV0VmFyKCdzdGFyaWQnLCc5MjgxMjMnKTtcXG59ZWxzZXtcXG5wdXRWYXIoJ3N0YXJpZCcsZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0Jyx7fSkpO1xcbn1cXG5wdXRWYXIoXFxcImFjY2Vzc19rZXlcXFwiLGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSk7XFxuLy/oh6rlt7Hljrti56uZ5a6i5oi356uv6aaW6aG15oqT5YyF77yM5om+5YiwYXBwLmJpbGliaWxpLmNvbeW8gOWktOeahOmTvuaOpe+8jOeEtuWQjuaKimFjY2Vzc19rZXnnmoTlgLzloavlhaXkuIrmlrknPSflkI7pnaLljbPlj69cXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KSl7XFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLFxcXCLmlrDniYhcXFwiKTtcXG4gICAgfVwiLFwicGFnZXNcIjpcIlt7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5LiA57qnXFxcIixcXFwicGF0aFxcXCI6XFxcImNvbW1vblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcXFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFxcXFxcJi9nLCAn77yG77yGJylcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLmm7TlpJpcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFxcXFxcIjtcXFxcbiAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgLy9waWNfdXJsOiAnaHR0cHM6Ly9pbWcwLmJhaWR1LmNvbS9pdC91PTE2MTIxMDE0MjMsMTE0NTk4MjE2MyZmbT0yNTMmYXBwPTEzOCZmPUpQRUc/dz01MDAmaD00MjQnLFxcXFxuICAgICAgICAvL2ltZzpcXFxcXFxcImh0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzBiZmNjYTM4ZDAxN2JhN2M2ZmFlY2ZlNzc1MDJkMjNlLmdpZlxcXFxcXFwiLFxcXFxuICAgICAgICBpbWc6XFxcXFxcXCJodHRwczovL3d3dy5oZWxsb2ltZy5jb20vaW1hZ2VzLzIwMjIvMDMvMDEvR1lQeWFBLmpwZ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2NhcmRfcGljXzEnLFxcXFxuICAgICAgICBkZXNjOlxcXFxcXFwiMFxcXFxcXFwiXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfmjpLooYzmppwnLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLmjpLooYzmppxcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFxcXFxcIjtcXFxcbiAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzUwLnBuZycsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn55u05pKtJyxcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi55u05pKtXFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcXFxcXCI7XFxcXG4gICAgICAgIH0sICksXFxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS8yMi5wbmcnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+aXtuWFieacuicsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIuaXtuWFieaculxcXFxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXFxcXFwiO1xcXFxuICAgICAgICB9LCApLFxcXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNTYucG5nJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICdVUCcsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIlVQ5Li7XFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcXFxcXCI7XFxcXG4gICAgICAgIH0sICksXFxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS85OC5wbmcnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+e0ouW8lScsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIue0ouW8lVxcXFxcXFwiKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dFxcXFxcXFwiLCBpbnB1dCk7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZShmYWxzZSk7XFxcXG4gICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL3BhZ2UvbmV3ZGV0aWFsP3VybD1oaWtlcjovL2VtcHR5I2Z5cGFnZVxcXFxcXFwiO1xcXFxuICAgICAgICB9LCApLFxcXFxuICAgICAgICBwaWNfdXJsOiAnaHR0cHM6Ly9sYW5tZWlndW9qaWFuZy5jb20vdHViaWFvL3EvNDcucG5nJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfmlrDnlaonLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLmlrDnlapcXFxcXFxcIikubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIiwgaW5wdXQpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2RldGlhbD91cmw9aGlrZXI6Ly9lbXB0eSNmeXBhZ2VcXFxcXFxcIjtcXFxcbiAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIzLnBuZycsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn5ryr5ri4JyxcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi5ryr5ri4XFxcXFxcXCIpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0XFxcXFxcXCIsIGlucHV0KTtcXFxcbiAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdkZXRpYWw/dXJsPWhpa2VyOi8vZW1wdHkjZnlwYWdlXFxcXFxcXCI7XFxcXG4gICAgICAgIH0sICksXFxcXG4gICAgICAgIHBpY191cmw6ICdodHRwczovL2xhbm1laWd1b2ppYW5nLmNvbS90dWJpYW8vcS84My5wbmcnLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2ljb25fMidcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ld2xvZ2luJyxcXFxcbiAgICAgICAgcGljX3VybDogJ2h0dHBzOi8vbGFubWVpZ3VvamlhbmcuY29tL3R1Ymlhby9xLzIucG5nJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpY29uXzInXFxcXG4gICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJwaWNfMV9jYXJkXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mjpLooYzmppxcXFwiLFxcXCJwYXRoXFxcIjpcXFwicGhiXFxcIixcXFwicnVsZVxcXCI6XFxcIi8v5YiG57G7XFxcXG5cXFxcbmlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXFxcbnZhciBjMSA9ICdhbGwmYmFuZ3VtaSZndW9jaGFuJmRvdWdhJm11c2ljJmtub3dsZWRnZSZ0ZWNoJmNhciZsaWZlJmZvb2Qma2ljaGlrdSZmYXNoaW9uJmNpbmVwaGlsZSZvcmlnaW4mcm9va2llJmdhbWUmZW50JmRhbmNlJm1vdmllJnR2JmRvY3VtZW50YXJ5JmFuaW1hbCZndW9jaHVhbmcnO1xcXFxudmFyIHcxID0gJ+WFqOmDqCbnlarliacm5Zu95YibJuWKqOeUuybpn7PkuZAm55+l6K+GJuenkeaKgCbmsb3ovaYm55Sf5rS7Jue+jumjnybprLznlZwm5pe25bCaJuW9seinhibljp/liJsm5paw5Lq6Jua4uOaIjyblqLHkuZAm6Iie6LmIJueUteW9sSbnlLXop4bliacm57qq5b2V54mHJuWKqOeJqeWciCblm73liJvnm7jlhbMnO1xcXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXFxcblxcXFxuICAgIGZvciAodmFyIGkgaW4gd29yZDEpIHtcXFxcbiAgICAgICAgdmFyIGEgPSB3b3JkMVtpXTtcXFxcbiAgICAgICAgdmFyIGIgPSBjbGFzczFbaV07XFxcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogIGEgPT0gbGFiMSA/IGdldEhlYWQoYSkgOiBhLFxcXFxuICAgICAgICAgICAgdXJsOiAkKFxcXFxcXFwiI25vTG9hZGluZyNcXFxcXFxcIikubGF6eVJ1bGUoKGMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJsYWIxXFxcXFxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwia2V5MVxcXFxcXFwiLCBjLnNwbGl0KCcmJylbMV0pO1xcXFxuICAgICAgICAgICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgIH0sIGMpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcXG4vL+WIhuexu1xcXFxuLy9sb2coTVlfUEFHRSlcXFxcblxcXFxudmFyIHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdi9wb3B1bGFyL3JhbmsvYWxsJztcXFxcblxcXFxuTVlfVVJMID0gdXJsLnJlcGxhY2UoJ2FsbCcsIGdldFZhcigna2V5MScpKTtcXFxcblxcXFxudmFyIHltID0gcmVxdWVzdChNWV9VUkwsIHt9KS5yZXBsYWNlKC9cXFxcXFxcXFxcXFxcXFxcdTAwMkYvZywgJy8nKTtcXFxcbmlmICh5bS5pbmNsdWRlcygncmFuay10aXBzJykpIHtcXFxcblxcXFxuICAgIC8q5o+Q56S65L+h5oGvXFxcXG4gICAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTon4oCc4oCcJytwYXJzZURvbUZvckh0bWwoeW0sJy5yYW5rLXRpcHMmJlRleHQnKSsn4oCd4oCdJyxcXFxcbiAgICAgICAgY29sX3R5cGU6J3RleHRfMSdcXFxcbiAgICAgIH0pO1xcXFxuICAgIOaPkOekuuS/oeaBryovXFxcXG5cXFxcbiAgICB2YXIgcGkgPSBKU09OLnBhcnNlKHltLnNwbGl0KCdcXFxcXFxcInJhbmtMaXN0XFxcXFxcXCI6JylbMV0uc3BsaXQoJyxcXFxcXFxcInJhbmtOb3RlXFxcXFxcXCInKVswXSk7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IHBpICE9IG51bGwgJiYgaSA8IHBpLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgIHZhciBudW0gPSBpICsgMTtcXFxcbiAgICAgICAgdmFyIHEgPSBKU09OLnN0cmluZ2lmeShwaVtpXSk7XFxcXG4gICAgICAgIGlmICghcGlbaV0udXJsKSB7XFxcXG4gICAgICAgICAgICB2YXIgcnVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHBpW2ldLmJ2aWQ7XFxcXG4gICAgICAgIH0gZWxzZSB7XFxcXG4gICAgICAgICAgICB2YXIgcnVybCA9IHBpW2ldLnVybDtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBwaVtpXS50aXRsZSxcXFxcbiAgICAgICAgICAgIHBpY191cmw6IHBpW2ldLnBpYyArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiAoIXEuaW5jbHVkZXMoJ25hbWUnKSA/IHBpW2ldLm5ld19lcC5pbmRleF9zaG93IDogKCd1cDogJyArIHBpW2ldLm93bmVyLm5hbWUpKSxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyBydXJsICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMV9jYXJkJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgLypcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTonTm8uJytudW0rJ1xcXFxcXFxcblxcXFxcXFxcbuKAmOKAmDxzbWFsbD4nK3BpW2ldLnRpdGxlKydcXFxcXFxcXG4nKyghcS5pbmNsdWRlcygnbmFtZScpP3BpW2ldLm5ld19lcC5pbmRleF9zaG93OigndXA6ICcrcGlbaV0ub3duZXIubmFtZSkpKyc8L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDpwaVtpXS5waWMrUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICBkZXNjOicwJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6J2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScrcnVybCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6J3BpY18xX2NhcmQnXFxcXG4gICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAqL1xcXFxuICAgIH1cXFxcbn0gZWxzZSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6ICfigJzigJzoioLliLbkuIDngrnvvIzkvJHmga/llabvvIHigJ3igJ0nLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLXVw8J+Qt1xcXCIsXFxcInBhdGhcXFwiOlxcXCJ1cFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJjb25zdCBoZWFkQ29sb3IgPSBcXFxcXFxcIiMzNThjY2RcXFxcXFxcIjtcXFxcblxcXFxuLy/ml7bpl7TmiLPovazmjaLmlrnms5VcXFxcbi8qXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcXFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcXFxuICAgICByZXR1cm4gKFlNRClcXFxcbn1cXFxcbiovXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHtcXFxcbiAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXFxcbiAgICB2YXIgWVkgPSBkYXRlLmdldEZ1bGxZZWFyKCkgKyAnLSc7XFxcXG4gICAgdmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpICsgJy0nO1xcXFxuICAgIHZhciBERCA9IChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKTtcXFxcbiAgICB2YXIgdGltZSA9IFlZICsgTU0gKyBERDtcXFxcbiAgICByZXR1cm4gdGltZVxcXFxufVxcXFxudmFyIHNyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHRcXFxcXFxcIixpbnB1dCk7cHV0VmFyKCd1cCcsJycpO3B1dFZhcignVVAnLCcnKTtwdXRWYXIoJ3NldCcsJycpO3JlZnJlc2hQYWdlKGZhbHNlKTtcXFxcXFxcInRvYXN0Oi8v5YiH5o2i5oiQ5YqfXFxcXFxcXCJgO1xcXFxuLy/ml7bpl7TmiLPovazmjaJcXFxcblxcXFxudmFyIHVpZCA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2NhY2hlLnR4dFxcXFxcXFwiLCB7fSk7XFxcXG52YXIgVVBfVVJMID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2g/bWlkPXVpZCZwcz0zMCZ0aWQ9MCZrZXl3b3JkPSZqc29ucD1qc29ucCZwbj0nICsgcGFnZW51bSArICcmb3JkZXI9cHViZGF0ZSc7XFxcXG52YXIgdXBfdXJsID0gVVBfVVJMLnJlcGxhY2UoXFxcXFxcXCJ1aWRcXFxcXFxcIiwgdWlkKTtcXFxcbnZhciB4eCA9IGdldFZhcignbGIyJykuc3BsaXQoJ1xcXFxcXFxcbicpO1xcXFxuLy/mm7TmlrDlpLTlg49cXFxcbmZvciAodmFyIGsgaW4geHgpIHtcXFxcbiAgICBpZiAoIXh4W2tdLnNwbGl0KCcjIycpWzFdKSB7XFxcXG4gICAgICAgIHRyeSB7XFxcXG4gICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmanNvbnA9anNvbnAnLCB7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScgKyB4eFtrXS5zcGxpdCgnJiYnKVsxXSArICcmbmVlZF90b3A9MScsIHt9KSkuZGF0YS5jYXJkc1swXS5kZXNjLnVzZXJfcHJvZmlsZS5pbmZvLmZhY2U7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgdmFyIGZhY2UgPSB4eFtrXSArICcjIycgKyBwaWM7XFxcXG4gICAgICAgIHZhciBmYWNlID0gZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcXFxcXCIsIHt9KS5yZXBsYWNlKHh4W2tdLCBmYWNlKTtcXFxcbiAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwLnR4dFxcXFxcXFwiLCBmYWNlKTtcXFxcbiAgICB9XFxcXG59XFxcXG5cXFxcblxcXFxuXFxcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxcXG4gICAgdmFyIHNfdGFiID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0Jywge30pO1xcXFxuICAgIGlmIChnZXRWYXIoXFxcXFxcXCJhY2Nlc3Nfa2V5XFxcXFxcXCIpICYmIGdldFZhcignc3RhcmlkJykpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn5o6o6I2QJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+aOqOiNkCcsXFxcXG4gICAgICAgICAgICB1cmw6ICfmjqjojZAnICsgc3IsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogc190YWIgPT0gJ+aUtuiXjycgPyAn8J+UtCcgKyBnZXRIZWFkKHNfdGFiKSA6ICfimqrvuI/mlLbol48nLFxcXFxuICAgICAgICAgICAgdXJsOiAn5pS26JePJyArIHNyLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHNfdGFiID09ICfov73nlaonID8gJ/CflLQnICsgZ2V0SGVhZChzX3RhYikgOiAn4pqq77iP6L+955WqJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+i/veeVqicgKyBzcixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/ICfwn5S0JyArIGdldEhlYWQoc190YWIpIDogJ+Kaqu+4j+i/veWJpycsXFxcXG4gICAgICAgICAgICB1cmw6ICfov73liacnICsgc3IsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxcXG4gICAgdmFyIHN0YXJqc29uID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScgKyBnZXRWYXIoJ3N0YXJpZCcpICsgJyZqc29ucD1qc29ucCcsIHt9KSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcgPyAn4pi677iPJyA6ICcnKSArIHN0YXJqc29uLmRhdGEubmFtZSxcXFxcbiAgICAgICAgcGljX3VybDogc3Rhcmpzb24uZGF0YS5mYWNlICsgUmVmZXJlcixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignVVAnLCBnZXRWYXIoJ1VQJyk9PSflhbPms6gnPyfmipjlj6AnOiflhbPms6gnKTtwdXRWYXIoJ3NldCcsJycpO2NsZWFyVmFyKCdodG0nKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JywnJyk7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovLycrZ2V0VmFyKCdVUCcsJ+S4k+azqCcpXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaWNvbl8yX3JvdW5kJ1xcXFxuICAgIH0pO1xcXFxuICAgIC8v6Ieq5bex55qE5YWz5rOoXFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJzxzdHJvbmc+JyArICfigJjigJhVUOKAmeKAmScgKyAnPC9zdHJvbmc+JyArIChnZXRWYXIoJ3VwJywgJ+aKmOWPoCcpID09ICflsZXlvIAnID8gJ/CfmYknIDogJ/CfmYgnKSxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigndXAnLCBnZXRWYXIoJ3VwJyk9PSflsZXlvIAnPyfmipjlj6AnOiflsZXlvIAnKTtwdXRWYXIoJ3NldCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3VwJywn5bGV5byAJyk7XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGdldFZhcignc2V0JykgIT0gJycgPyAoZ2V0VmFyKCdzZXQnKSA9PSAn572u6aG2JyA/ICc8c3Ryb25nPicgKyAn4oCc4oCc572u6aG2JyArICc8L3N0cm9uZz4nIDogJzxzdHJvbmc+JyArICfigJzigJzlj5blhbPigJ3igJ0nICsgJzwvc3Ryb25nPicpIDogJ+iuvue9ricsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ3NldCcsIGdldFZhcignc2V0Jywn5bGV5byAJyk9PSflj5blhbMnPyfnva7pobYnOiflj5blhbMnKTtwdXRWYXIoJ3VwJywnJyk7cHV0VmFyKCdVUCcsJycpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCcnKTtyZWZyZXNoUGFnZShmYWxzZSk7J3RvYXN0Oi8vJytnZXRWYXIoJ3NldCcsJ+WxleW8gCcpKydpbmd+J1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNCdcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoJ1VQJykgPT0gJ+WFs+azqCcpIHtcXFxcbiAgICAgICAgaWYgKGdldFZhcignaHRtJykgPT0gJycgfHwgZ2V0VmFyKCd1cCcpID09ICflsZXlvIAnKSB7XFxcXG4gICAgICAgICAgICB2YXIgdXJscyA9IFtdO1xcXFxuICAgICAgICAgICAgdmFyIHN1cmwgPSAnaHR0cHM6Ly9zcGFjZS5iaWxpYmlsaS5jb20vaDUvZm9sbG93P3R5cGU9Zm9sbG93Jm1pZD0nICsgZ2V0VmFyKCdzdGFyaWQnKTtcXFxcbiAgICAgICAgICAgIHZhciBpZCA9IHN1cmwuc3BsaXQoJ21pZD0nKVsxXTtcXFxcbiAgICAgICAgICAgIHZhciBjb2RlID0gZmV0Y2goc3VybCwge30pO1xcXFxuICAgICAgICAgICAgdmFyIHN0YXJsaXN0ID0gSlNPTi5wYXJzZSgne1xcXFxcXFwibXknICsgY29kZS5zcGxpdCgne1xcXFxcXFwibXknKVsxXS5zcGxpdCgnfX07JylbMF0gKyAnfX0nKTtcXFxcblxcXFxuICAgICAgICAgICAgdmFyIHN0YXJscyA9IHN0YXJsaXN0WydsaXN0J11bJ2dldEZvbGxvd0xpc3QtcGFnZS1taWQtJyArIGlkXVsncmVzdWx0J107XFxcXG4gICAgICAgICAgICBmb3IgKHggaW4gc3RhcmxzKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHN0YXJsc1t4XS5taWQgKyAnJnBzPTMwJnRpZD0wJmtleXdvcmQ9Jmpzb25wPWpzb25wJnBuPWZ5cGFnZSZvcmRlcj1wdWJkYXRlJztcXFxcbiAgICAgICAgICAgICAgICB1cmxzLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6IHl1cmwucmVwbGFjZSgvZnlwYWdlL2csICcxJylcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcblxcXFxuICAgICAgICAgICAgICAgIGlmIChnZXRWYXIoJ3VwJykgPT0gJ+WxleW8gCcpXFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogc3RhcmxzW3hdLnVuYW1lLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgaW1nOiBzdGFybHNbeF0uZmFjZSArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZ3oyP3VybD0nICsgeXVybCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbiAgICAvL+WFs+azqOWIl+ihqFxcXFxuXFxcXG4gICAgaWYgKGdldFZhcigndXAnKSA9PSAn5bGV5byAJyAmJiBnZXRWYXIoJ1VQJykgIT0gJ+WFs+azqCcpIHtcXFxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcXFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdID8gJ+KckycgOiAnJztcXFxcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXFxcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxcXG4gICAgICAgICAgICAgICAgdHJ5e1xcXFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAqL1xcXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzdCArIHh4W2tdLnNwbGl0KCcmJicpWzBdLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vZW1wdHkjJyArIHh4W2tdLnNwbGl0KCcmJicpWzFdICsgYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTtwdXRWYXIyKCd1aWQnLGlucHV0KTt3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfY2FjaGUudHh0XFxcXFxcXCIsaW5wdXQpO3B1dFZhcigndXAnLCfmipjlj6AnKTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiO2AsXFxcXG4gICAgICAgICAgICAgICAgcGljX3VybDogcGljICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2ljb25fcm91bmRfNCdcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgLy/lj5blhbPnm7jlhbNcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoJ3NldCcpID09ICflj5blhbMnKSB7XFxcXG5cXFxcbiAgICAgICAgZm9yICh2YXIgayBpbiB4eCkge1xcXFxuICAgICAgICAgICAgdmFyIHN0ID0gdWlkID09IHh4W2tdLnNwbGl0KCcmJicpWzFdID8gJ+KckycgOiAnJztcXFxcbiAgICAgICAgICAgIHZhciBwaWMgPSB4eFtrXS5zcGxpdCgnIyMnKVsxXTtcXFxcbiAgICAgICAgICAgIC8q5aS05YOP6I635Y+WXFxcXG4gICAgICAgICAgICAgICAgdHJ5e1xcXFxuICAgICAgICAgICAgICAgICB2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZqc29ucD1qc29ucCcse30pKS5kYXRhLmZhY2U7XFxcXG4gICAgICAgICAgICAgICAgfWNhdGNoKGUpe1xcXFxuICAgICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS52Yy5iaWxpYmlsaS5jb20vZHluYW1pY19zdnIvdjEvZHluYW1pY19zdnIvc3BhY2VfaGlzdG9yeT9ob3N0X3VpZD0nK3h4W2tdLnNwbGl0KCcmJicpWzFdKycmbmVlZF90b3A9MScse30pKS5kYXRhLmNhcmRzWzBdLmRlc2MudXNlcl9wcm9maWxlLmluZm8uZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICAqL1xcXFxuICAgICAgICAgICAgaWYgKCFwaWMpIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcGljID0gJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZic7XFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn4p2MJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIix4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+WPluWFs+aIkOWKn++8gemTgeWtkOWGjeingfCfpoYnYCxcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG5cXFxcbiAgICAvL+e9rumhtuebuOWFs1xcXFxuXFxcXG4gICAgaWYgKGdldFZhcignc2V0JykgPT0gJ+e9rumhticpIHtcXFxcblxcXFxuICAgICAgICBmb3IgKHZhciBrIGluIHh4KSB7XFxcXG4gICAgICAgICAgICB2YXIgc3QgPSB1aWQgPT0geHhba10uc3BsaXQoJyYmJylbMV0gPyAn4pyTJyA6ICcnO1xcXFxuICAgICAgICAgICAgdmFyIHBpYyA9IHh4W2tdLnNwbGl0KCcjIycpWzFdO1xcXFxuICAgICAgICAgICAgLyrlpLTlg4/ojrflj5ZcXFxcbiAgICAgICAgICAgICAgICB0cnl7XFxcXG4gICAgICAgICAgICAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9Jyt4eFtrXS5zcGxpdCgnJiYnKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgICAgICAgICAgICB9Y2F0Y2goZSl7XFxcXG4gICAgICAgICAgICAgICAgICAgdmFyIHBpYyA9IEpTT04ucGFyc2UoZmV0Y2goJ2h0dHBzOi8vYXBpLnZjLmJpbGliaWxpLmNvbS9keW5hbWljX3N2ci92MS9keW5hbWljX3N2ci9zcGFjZV9oaXN0b3J5P2hvc3RfdWlkPScreHhba10uc3BsaXQoJyYmJylbMV0rJyZuZWVkX3RvcD0xJyx7fSkpLmRhdGEuY2FyZHNbMF0uZGVzYy51c2VyX3Byb2ZpbGUuaW5mby5mYWNlO1xcXFxuICAgICAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgICovXFxcXG4gICAgICAgICAgICBpZiAoIXBpYykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBwaWMgPSAnaHR0cHM6Ly9naXRlZS5jb20vQ2hlcmlzaFJ4L2ltYWdld2FyZWhvdXNlL3Jhdy9tYXN0ZXIvaW1hZ2UvMTMwOTY3MjVmZTU2Y2U5Y2Y2NDNhMGU0Y2QwYzE1OWMuZ2lmJztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfwn5SdJyArIHN0ICsgeHhba10uc3BsaXQoJyYmJylbMF0sXFxcXG4gICAgICAgICAgICAgICAgdXJsOiB4eFtrXSArIGBAbGF6eVJ1bGU9LmpzOnZhciBzYz1pbnB1dCsnXFxcXFxcXFxcXFxcXFxcXG4nO3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbic7dmFyIHh6PXhyLnJlcGxhY2Uoc2MsJycpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIixzYyt4eik7cmVmcmVzaFBhZ2UoZmFsc2UpOyd0b2FzdDovL+e9rumhtuaIkOWKn/CflJ0nYCxcXFxcbiAgICAgICAgICAgICAgICBwaWNfdXJsOiBwaWMgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnaWNvbl9yb3VuZF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9XFxcXG5cXFxcblxcXFxufVxcXFxuLy9kLnB1c2goe3RpdGxlOnh4fSk7XFxcXG5pZiAoc190YWIgPT0gJ+aOqOiNkCcpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvZmVlZFxcXFxcXFwiKSkucnVsZSk7XFxcXG59IGVsc2UgaWYgKHNfdGFiID09ICfmlLbol48nKSB7XFxcXG4gICAgaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3ZpZGVvXFxcXFxcXCIpKS5ydWxlKTtcXFxcbn0gZWxzZSBpZiAoc190YWIgPT0gJ+i/veWJpycpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvZHNqXFxcXFxcXCIpKS5ydWxlKVxcXFxufSBlbHNlIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXFxcXFwiKSkucnVsZSlcXFxcbn0gZWxzZSBpZiAoZ2V0VmFyKCdVUCcpICE9ICflhbPms6gnICYmIGdldFZhcigndXAnKSAhPSAn5bGV5byAJyAmJiBnZXRWYXIoJ3NldCcpID09ICcnKSB7XFxcXG4gICAgdmFyIGpzb24gPSB7fTtcXFxcbiAgICBldmFsKCdqc29uPScgKyBmZXRjaCh1cF91cmwsIHt9KSk7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC52bGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICB2YXIgciA9IHt9O1xcXFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcXFxuICAgICAgICB2YXIgdCA9IE51bWJlcihqLmNyZWF0ZWQpICogMTAwMDtcXFxcblxcXFxuXFxcXG4gICAgICAgIHZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcXFxuXFxcXG4gICAgICAgIGlmIChqLnBsYXkgPiAxMDAwMClcXFxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gKGoucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxcXG4gICAgICAgIGVsc2VcXFxcbiAgICAgICAgICAgIHZhciBwbGF5ID0gai5wbGF5O1xcXFxuXFxcXG4gICAgICAgIHZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBqLnBpYyA6ICdodHRwczonICsgai5waWM7XFxcXG5cXFxcbiAgICAgICAgci5waWNfdXJsID0gcGljcyArIFJlZmVyZXI7XFxcXG4gICAgICAgIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcXFxuICAgICAgICByLnRpdGxlID0gai50aXRsZTtcXFxcbiAgICAgICAgci5jb2xfdHlwZSA9ICdtb3ZpZV8xX3ZlcnRpY2FsX3BpYyc7XFxcXG4gICAgICAgIHIuZGVzYyA9ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOWPkeW4g+aXpeacn++8micgKyB0aW1lO1xcXFxuICAgICAgICBpZiAoai5sZW5ndGggIT0gXFxcXFxcXCIwMDowMFxcXFxcXFwiKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2gocilcXFxcbiAgICAgICAgfTtcXFxcbiAgICB9XFxcXG59IGVsc2UgaWYgKGdldFZhcignVVAnKSA9PSAn5YWz5rOoJyAmJiBnZXRWYXIoJ3VwJykgIT0gJ+WxleW8gCcpIHtcXFxcblxcXFxuICAgIGlmIChnZXRWYXIoJ2h0bScpID09ICcnKSB7XFxcXG4gICAgICAgIGh0bSA9IFtdO1xcXFxuICAgICAgICB2YXIgeW0gPSBiYXRjaEZldGNoKHVybHMpLm1hcChmdW5jdGlvbihhKSB7XFxcXG4gICAgICAgICAgICB2YXIgaCA9IEpTT04ucGFyc2UoYSkuZGF0YS5saXN0LnZsaXN0O1xcXFxuICAgICAgICAgICAgaHRtID0gaHRtLmNvbmNhdChoKTtcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGh0bSA9IGh0bS5zb3J0KGZ1bmN0aW9uKGEsIGIpIHtcXFxcbiAgICAgICAgICAgIHJldHVybiBiLmNyZWF0ZWQgLSBhLmNyZWF0ZWQ7XFxcXG4gICAgICAgIH0pLm1hcChmdW5jdGlvbihhKSB7XFxcXG4gICAgICAgICAgICBhLmNyZWF0ZWQgPSBnZXRMb2NhbFRpbWUoTnVtYmVyKGEuY3JlYXRlZCkgKiAxMDAwKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBhXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBwdXRWYXIoJ2h0bScsIEpTT04uc3RyaW5naWZ5KGh0bSkpO1xcXFxuICAgIH0gZWxzZSBodG0gPSBKU09OLnBhcnNlKGdldFZhcignaHRtJykpO1xcXFxuICAgIHZhciBpID0gMDtcXFxcbiAgICB2YXIgayA9IDA7XFxcXG4gICAgdmFyIHIgPSBuZXcgRGF0ZSgpO1xcXFxuICAgIHZhciBNID0gci5nZXRNb250aCgpICsgMTtcXFxcbiAgICB2YXIgdEQgPSByLmdldEZ1bGxZZWFyKCkgKyAnLScgKyAoTSA8IDEwID8gKCcwJyArIE0pIDogTSkgKyAnLScgKyAoci5nZXREYXRlKCkgPCAxMCA/ICgnMCcgKyByLmdldERhdGUoKSkgOiByLmdldERhdGUoKSk7XFxcXG5cXFxcbiAgICBmb3IgKHZhciBqID0gMDsgaiA8IGh0bS5sZW5ndGg7IGorKykge1xcXFxuICAgICAgICB0cnkge1xcXFxuXFxcXG4gICAgICAgICAgICBpZiAoaiAhPSAwICYmIGh0bVtqIC0gMV0uY3JlYXRlZCAhPSBodG1bal0uY3JlYXRlZCkgaSsrO1xcXFxuXFxcXG4gICAgICAgICAgICBpZiAoaSArIDEgPT0gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXFxcbiAgICAgICAgICAgICAgICBpZiAoayA9PSAwKSB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkYXRlID0gaHRtW2pdLmNyZWF0ZWQ7XFxcXG4gICAgICAgICAgICAgICAgICAgIGsrKztcXFxcbiAgICAgICAgICAgICAgICAgICAgaWYgKGRhdGUgPT0gdEQpIGRhdGUgPSAnPHN0cm9uZz7ku4rlpKk8L3N0cm9uZz4nO1xcXFxuICAgICAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfigJzigJzigJ3igJ08Zm9udCBjb2xvcj1cXFxcXFxcIiMzNThjY2RcXFxcXFxcIj4nICsgZGF0ZSArICc8XFxcXFxcXFxmb250PicsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgLy91cmw6YEBsYXp5UnVsZT0uanM6Y2xlYXJWYXIoJ2h0bScpO3JlZnJlc2hQYWdlKGZhbHNlKTsndG9hc3Q6Ly/liLfmlrDmiJDlip8nO2BcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgICAgIGlmIChodG1bal0ucGxheSA+IDEwMDAwKVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IChodG1bal0ucGxheSAvIDEwMDAwKS50b0ZpeGVkKDEpICsgJ+S4hyc7XFxcXG4gICAgICAgICAgICAgICAgZWxzZVxcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgcGxheSA9IGh0bVtqXS5wbGF5O1xcXFxuICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBodG1bal0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgICAgIGltZzogKChodG1bal0ucGljLmluZGV4T2YoJzonKSAhPSAtMSkgPyBodG1bal0ucGljIDogKCdodHRwczonICsgaHRtW2pdLnBpYykpICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogJ1VQOicgKyBodG1bal0uYXV0aG9yICsgJyAg5pe26ZW/77yaJyArIGh0bVtqXS5sZW5ndGggKyAnXFxcXFxcXFxu5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDlj5HluIPml6XmnJ/vvJonICsgaHRtW2pdLmNyZWF0ZWQsXFxcXG4gICAgICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgaHRtW2pdLmJ2aWQgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGkgKyAxID4gTVlfVVJMLnNwbGl0KCcjJylbMV0pIHtcXFxcbiAgICAgICAgICAgICAgICBicmVhaztcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgfSBjYXRjaCAoZSkge31cXFxcbiAgICB9XFxcXG5cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5pe25YWJ8J+QlFxcXCIsXFxcInBhdGhcXFwiOlxcXCJzZ2pcXFwiLFxcXCJydWxlXFxcIjpcXFwiLy/liIbnsbtcXFxcbnZhciBwYWdlbnVtID0gTVlfVVJMLnNwbGl0KCcjJylbMV07XFxcXG5pZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJyl7XFxcXG52YXIgYzIgPSAnMjImMjEyJjcxJjE4MiYxMzgmMjgmMzMmMTg1JztcXFxcblxcXFxudmFyIHcyID0gJ+msvOeVnCbnvo7po58m57u86Im6JuW9seinhibnlJ/mtLsm6Z+z5LmQJueVquWJpybnlLXop4bliacnO1xcXFxuXFxcXG52YXIgd29yZDIgPSB3Mi5zcGxpdCgnJicpO1xcXFxudmFyIGNsYXNzMiA9IGMyLnNwbGl0KCcmJyk7XFxcXG52YXIgbGFiMiA9IGdldFZhcignbGFiMicsICfprLznlZwnKTtcXFxcbnZhciBrZXkyID0gZ2V0VmFyKCdrZXkyJywgJzIyJyk7XFxcXG5mb3IgKHZhciBpIGluIHdvcmQyKXtcXFxcbiAgICB2YXIgYSA9IHdvcmQyW2ldO1xcXFxuICAgIHZhciBiID0gY2xhc3MyW2ldO1xcXFxuICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogYT09bGFiMj8gZ2V0SGVhZChhKTphLFxcXFxuICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChjKT0+e1xcXFxuICAgICAgICBwdXRWYXIoXFxcXFxcXCJsYWIyXFxcXFxcXCIsYy5zcGxpdCgnJicpWzBdKTtcXFxcbiAgICAgICAgcHV0VmFyKFxcXFxcXFwia2V5MlxcXFxcXFwiLGMuc3BsaXQoJyYnKVsxXSk7XFxcXG4gICAgICAgIHJlZnJlc2hQYWdlKGZhbHNlKTtcXFxcbiAgICAgICAgcmV0dXJuIFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG4gICAgfSwgYyksXFxcXG4gICAgY29sX3R5cGU6J3Njcm9sbF9idXR0b24nXFxcXG4gICAgfSk7XFxcXG59XFxcXG59XFxcXG4vL+WIhuexu1xcXFxuXFxcXG52YXIgbSA9IE51bWJlcihmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0XFxcXFxcXCIse30pKTtcXFxcbnZhciB0ID0gbTwwPzA6bTtcXFxcbnZhciBudW0xID0gTnVtYmVyKHQpLTEyO1xcXFxudmFyIG51bTIgPSBOdW1iZXIodCkrMTI7XFxcXG52YXIgbnVtMyA9IE51bWJlcih0KS0xO1xcXFxudmFyIG51bTQgPSBOdW1iZXIodCkrMTtcXFxcbi8vdmFyIHRpbWVzdGFtcCA9IERhdGUucGFyc2UobmV3IERhdGUoKSk7XFxcXG52YXIgdGltZXN0YW1wID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG52YXIgc3RhbXAxID0gdGltZXN0YW1wIC0gdCozMCoyNCo2MCo2MCoxMDAwO1xcXFxudmFyIHN0YW1wMiA9IHRpbWVzdGFtcCAtICh0KzEpKjMwKjI0KjYwKjYwKjEwMDA7XFxcXG4vKlxcXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXFxcbiAgICAgdmFyIG1tID0gc3NzLnNwbGl0KCflubQnKVsxXS5zcGxpdCgn5pyIJylbMF07XFxcXG4gICAgIHZhciBkZCA9IHNzcy5zcGxpdCgn5pyIJylbMV0uc3BsaXQoJ+aXpScpWzBdO1xcXFxuICAgICB2YXIgWVkgPSBzc3Muc3BsaXQoJ+W5tCcpWzBdO1xcXFxuICAgICB2YXIgTU0gPSAobW08IDEwID8gJzAnICsgbW06bW0pO1xcXFxuICAgICB2YXIgREQgPSAoZGQ8IDEwID8gJzAnICsgZGQ6ZGQpO1xcXFxuICAgICByZXR1cm4gKFlZK01NK0REKVxcXFxufVxcXFxuKi9cXFxcbmZ1bmN0aW9uIGdldExvY2FsVGltZShuUykgeyBcXFxcbnZhciBkYXRlID0gbmV3IERhdGUoblMpO1xcXFxudmFyIFlZID0gU3RyaW5nKGRhdGUuZ2V0RnVsbFllYXIoKSk7IFxcXFxudmFyIE1NID0gU3RyaW5nKChkYXRlLmdldE1vbnRoKCkgKyAxIDwgMTAgPyAnMCcgKyAoZGF0ZS5nZXRNb250aCgpICsgMSkgOiBkYXRlLmdldE1vbnRoKCkgKyAxKSk7IFxcXFxudmFyIEREID0gU3RyaW5nKChkYXRlLmdldERhdGUoKSA8IDEwID8gJzAnICsgKGRhdGUuZ2V0RGF0ZSgpKSA6IGRhdGUuZ2V0RGF0ZSgpKSk7IFxcXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxcXG5yZXR1cm4gdGltZVxcXFxufVxcXFxuLy/ml7bpl7TmiLPovazmjaJcXFxcbnZhciB0aW1lMSA9IGdldExvY2FsVGltZShzdGFtcDEpO1xcXFxudmFyIHRpbWUyID0gZ2V0TG9jYWxUaW1lKHN0YW1wMik7XFxcXG52YXIgU0dKX1VSTCA9ICdodHRwczovL3Muc2VhcmNoLmJpbGliaWxpLmNvbS9jYXRlL3NlYXJjaD9tYWluX3Zlcj12MyZzZWFyY2hfdHlwZT12aWRlbyZ2aWV3X3R5cGU9aG90X3Jhbmsmb3JkZXI9Y2xpY2smY29weV9yaWdodD0tMSZjYXRlX2lkPTIyJnBhZ2U9JytwYWdlbnVtKycmcGFnZXNpemU9MTAmdGltZV9mcm9tPXRpbWUyJnRpbWVfdG89dGltZTEnO1xcXFxudmFyIFVSTCA9IFNHSl9VUkwucmVwbGFjZSgndGltZTEnLHRpbWUxKS5yZXBsYWNlKCd0aW1lMicsdGltZTIpLnJlcGxhY2UoJzIyJyxnZXRWYXIoJ2tleTInKSE9Jyc/Z2V0VmFyKCdrZXkyJyk6JzIyJyk7XFxcXG52YXIganNvbiA9IEpTT04ucGFyc2UocmVxdWVzdChVUkwse30pKTtcXFxcblxcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdPT0nMScpe1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTonKzHlubQnLFxcXFxuICAgICAgICAgIHVybDpcXFxcbm51bTErYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxcXG4gICAgICAgfSk7XFxcXG5kLnB1c2goe1xcXFxuICAgICAgICAgIHRpdGxlOictMeW5tCcsXFxcXG4gICAgICAgICAgdXJsOlxcXFxubnVtMitgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS9tb3V0aHMudHh0JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8gJ2AsXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfNCdcXFxcbiAgICAgICB9KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6Jysx5pyIJyxcXFxcbiAgICAgICAgICB1cmw6XFxcXG5udW0zK2BAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL21vdXRocy50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnyAnYCxcXFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF80J1xcXFxuICAgICAgIH0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTonLTHmnIgnLFxcXFxuICAgICAgICAgIHVybDpcXFxcbm51bTQrYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkvbW91dGhzLnR4dCcsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfICdgLFxcXFxuICAgICAgICAgIGNvbF90eXBlOid0ZXh0XzQnXFxcXG4gICAgICAgfSk7XFxcXG5kLnB1c2goe1xcXFxuICAgICAgICAgIHRpdGxlOmdldEhlYWQoKCflvZPliY3ml7bpl7Tnur86ICcrdGltZTIrJ34nK3RpbWUxKSksXFxcXG4gICAgICAgICAgXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgfSk7XFxcXG4vKlxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHRpbWVzdGFtcCkuIHNwbGl0KCfml6UnKVswXSxcXFxcbiAgICAgICAgICBcXFxcbiAgICAgICAgICBjb2xfdHlwZTondGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICB9KTtcXFxcbiovXFxcXG59XFxcXG4vKlxcXFxuZC5wdXNoKHtcXFxcbiAgICAgICAgICB0aXRsZTogZ2V0TG9jYWxUaW1lKHNzcyksXFxcXG4gICAgICAgICAgXFxcXG4gICAgICAgICAgY29sX3R5cGU6J3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgfSk7XFxcXG4qL1xcXFxuZm9yICh2YXIgaSBpbiBqc29uLnJlc3VsdClcXFxcbntcXFxcbiB2YXIgciA9IHt9O1xcXFxuIHZhciBqID0ganNvbi5yZXN1bHRbaV07XFxcXG4gaWYgKGoucGxheT4xMDAwMClcXFxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxcXG4gZWxzZVxcXFxuICAgIHZhciBwbGF5ID0gai5wbGF5O1xcXFxuIGQucHVzaCh7XFxcXG4gICAgICAgICAgdGl0bGU6ai50aXRsZSxcXFxcbiAgICAgICAgICBpbWc6J2h0dHBzOicrai5waWMrUmVmZXJlcixcXFxcbiAgICAgICAgICBkZXNjOid1cPCfkLc6JytqLmF1dGhvcisnXFxcXFxcXFxu5pKt5pS+6YePOiAnK3BsYXkrJyAgICAgICAg5Y+R5biD5pel5pyfOiAnK2oucHViZGF0ZS8qKydcXFxcXFxcXG7mj4/ov7A6JytqLmRlc2NyaXB0aW9uKi8sXFxcXG4gICAgICAgICAgdXJsOlxcXFxuJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMidcXFxcbiAgICAgICB9KTtcXFxcbn1cXFxcblxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIumhtemdoi3kuoznuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZGV0YWlsXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O1xcXFxudmFyIGQgPSBbXTtcXFxcbi8vbG9nKE1ZX1JVTEUudGl0bGUpXFxcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxcXG4vL+minOiJslxcXFxudmFyIENvbG9ycyA9IFtcXFxcXFxcIjRcXFxcXFxcIiwgXFxcXFxcXCI1XFxcXFxcXCIsIFxcXFxcXFwiMFxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIiwgXFxcXFxcXCJBXFxcXFxcXCIsIFxcXFxcXFwiM1xcXFxcXFwiLCBcXFxcXFxcIjhcXFxcXFxcIiwgXFxcXFxcXCI5XFxcXFxcXCIsIFxcXFxcXFwiQlxcXFxcXFwiLCBcXFxcXFxcIkNcXFxcXFxcIiwgXFxcXFxcXCJEXFxcXFxcXCIsIFxcXFxcXFwiRVxcXFxcXFwiLCBcXFxcXFxcIjZcXFxcXFxcIiwgXFxcXFxcXCI3XFxcXFxcXCIsIFxcXFxcXFwiRlxcXFxcXFwiXTtcXFxcbnZhciBDb2xvciA9ICcjJztcXFxcbmlmIChnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicpIHtcXFxcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykge1xcXFxuICAgICAgICB2YXIgbnVtID0gTWF0aC5jZWlsKChNYXRoLnJhbmRvbSgpICogMTUpKSAtIDE7XFxcXG4gICAgICAgIHZhciBDb2xvciA9IENvbG9yICsgQ29sb3JzW251bV07XFxcXG4gICAgfVxcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgQ29sb3IgPSBcXFxcXFxcIiNGQTcyOThcXFxcXFxcIjtcXFxcbn1cXFxcblxcXFxuZnVuY3Rpb24gZ2V0SGVhZCh0aXRsZSkge1xcXFxuICAgIHJldHVybiAn4oCY4oCY4oCZ4oCZPHN0cm9uZz48Zm9udCBjb2xvcj1cXFxcXFxcIicgKyBDb2xvciArICdcXFxcXFxcIj4nICsgdGl0bGUgKyAnPC9mcm9udD48L3N0cm9uZz4nO1xcXFxufVxcXFxuXFxcXG5kLnB1c2goe1xcXFxuICAgIGRlc2M6ICcyNTgmJmZsb2F0JyxcXFxcbiAgICBjb2xfdHlwZTogJ3g1X3dlYnZpZXdfc2luZ2xlJ1xcXFxufSk7XFxcXG52YXIgYmFuZ3VtaSA9IGdldFJlc0NvZGUoKTtcXFxcbmlmIChNWV9VUkwuaW5kZXhPZignYXBpLmJpbGknKSA9PSAtMSkge1xcXFxuICAgIHRyeSB7XFxcXG4gICAgICAgIHZhciBhID0gZmV0Y2goTVlfVVJMLCB7fSk7XFxcXG4gICAgICAgIHZhciBiID0gSlNPTi5wYXJzZShhLnNwbGl0KCdcXFxcXFxcImVwTGlzdFxcXFxcXFwiOicpWzFdLnNwbGl0KCd9XScpWzBdICsgJ31dJyk7XFxcXG4gICAgICAgIC8vbG9nKGIpXFxcXG4gICAgICAgIHZhciBydXJsID0gJ2h0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWw/YWlkPSZidmlkPScgKyBiWzBdLmJ2aWQ7XFxcXG4gICAgfSBjYXRjaCAoZSkge1xcXFxuICAgICAgICB2YXIgYSA9IGZldGNoKE1ZX1VSTCwge1xcXFxuICAgICAgICAgICAgcmVkaXJlY3Q6IGZhbHNlXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICB2YXIgYiA9IGEuc3BsaXQoJ3ZpZGVvLycpWzFdLnNwbGl0KCdcXFxcXFxcIicpWzBdLnNwbGl0KFxcXFxcXFwiP1xcXFxcXFwiKVswXTtcXFxcbiAgICAgICAgdmFyIHJ1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbD9haWQ9JmJ2aWQ9JyArIGI7XFxcXG4gICAgfVxcXFxuICAgIHZhciBiYW5ndW1pID0gZmV0Y2gocnVybCwge30pO1xcXFxufVxcXFxudmFyIGpzb24gPSBKU09OLnBhcnNlKGJhbmd1bWkpO1xcXFxudmFyIHYgPSBqc29uLmRhdGEuVmlldztcXFxcbnZhciBwID0gdi5wYWdlcztcXFxcbnZhciBjYXJkID0ganNvbi5kYXRhLkNhcmQuY2FyZDtcXFxcbnZhciByZWxhdGVkID0ganNvbi5kYXRhLlJlbGF0ZWQ7XFxcXG52YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbnZhciBsaWtlX3VybCA9ICdodHRwczovL2FwcC5iaWxpYmlsaS5jb20veC92Mi92aWV3L2xpa2UnO1xcXFxudmFyIGNvaW5fdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3ZpZXcvY29pbi9hZGQnO1xcXFxudmFyIGFkZF91cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L2FkZCc7XFxcXG52YXIgZGVsX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvZGVsJztcXFxcbnZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbnZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcXFxudmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcXFxudmFyIHhseHogPSBcXFxcXFxcImhpa2VyOi8vZW1wdHkjbm9SZWNvcmRIaXN0b3J5I0BydWxlPWpzOnRoaXMuZD1bXTtyZXF1aXJlKCdodHRwczovL2dpdGVhLmNvbS9BSTk1Ny9IaWtlci9yYXcvbS92L1JvdXRlLmpzJyk7Um91dGUuc2V0UGFyc2UoKTtzZXRSZXN1bHQoZCk7XFxcXFxcXCI7XFxcXG52YXIganhnbCA9IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eSNub1JlY29yZEhpc3RvcnkjQHJ1bGU9anM6dGhpcy5kPVtdO3JlcXVpcmUoJ2h0dHBzOi8vZ2l0ZWEuY29tL0FJOTU3L0hpa2VyL3Jhdy9tL3YvanhJdGVtLmpzJyk7anhJdGVtLmp4TGlzdCgpO3NldFJlc3VsdChkKVxcXFxcXFwiO1xcXFxuaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxcXG4gICAgdmFyIHJlZGlyZWN0ID0gdlsncmVkaXJlY3RfdXJsJ107XFxcXG4gICAgdmFyIHltID0gZmV0Y2gocmVkaXJlY3QsIHt9KTtcXFxcblxcXFxufVxcXFxuXFxcXG5ldmFsUHJpdmF0ZUpTKFxcXFxcXFwiWFVpRlQxdlhZV3JVdytWaHBucWxnME4wdkFXZ3BnbGg4TWhaKzl2UEQ5OU5KNVZnZUZkSG13YUthd0l5NkMwaDZGRlFoRVE1UmhKbVYwRVFIbkw5eHliUEhBY2hBTDdoWkVaZCtoYkdIVjVqZUcrbks1UTNpZTc4cHVHRGIxVEo0ZkFJN2c2ZXpMSWpRTUJ4Ti8yWE05MllOTlBLREhkaExJTVFHVjY5TXE4Y1RPV2pLcFpRcDAvdmdOdXhhUFFLRXpTZEhRSnVlN3RUeGRTRXZEdDNzL3R4ZEVoL29HekZDQ05XZVpDVVU1M3poRWhDMDZxNlpGalpDTStkOEZzWjVjWGxOSmVtdGVnTWdKVUxkVHFhVmRSd1ZoVlgrMXVCUTlOeTBEcHNOR3gyTHdIZ09qbHM5aHcxNExoRXF0aEVlNzN5UEJHdlNnS0VCZFNZZ0c3Y0s3aFlWVEVOZUdUaVJBektQUTdqR0VxRUo4YWFkSE9IQWVTYTI1YUJiemM4MWhoeGdYdGlhbFg4VXFlcG43azRnMkdrc3FvRzNKVkkrcVRmV1p4UFdxTk0vMGpVWGJyVVRDUlpucnpHVm93Nk53UFFYS3EzQ0RLbDlpK2FadmVXejVJZjVFTkVaR2lXbFc1ejRhSlNFY2V4Q0RzaVpsbzEvUUpJajJyV29uRTB1NTRhaDIvWlovL1pHb01CSitkMTlHbWVwa0xCRDNuMnFvZ0tualpqMnJqV3FnUGFkRWVlMVpJaFozU0dibVRsSmYxQTRCWUl1dVB3djRkR1pkUm9EVzY0QmhDNWp1Q242d0RtN1lteTdCWGYxc1FhRmltRW5yU0lpSEdoTStXS2czSXlXZWN1aC9HaysrTW1ONkF4eGN2TkF5cDhiQzRoekJNdlpKL2w1dFJ5YXBvbWRDVjVCcGlYZmprV1JuYm9wSWpJK1dLQjNmQ2FZeVJkZU5MRVJLbkVsc2NEaXo3VWVuTHByaFljL2E0THNHZU1NRlZaOFlvOC93R1lIMzhKXFxcXFxcXCIpXFxcXG5cXFxcbnZhciBwdXJsID0gJ2h0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby8nICsgdi5idmlkO1xcXFxudmFyIG1vZGUgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvY2FjaGUvYmlsaWJpbGkudHh0XFxcXFxcXCIsIHt9KTtcXFxcbnZhciBtb2RlX3VybCA9IGBAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9jYWNoZS9iaWxpYmlsaS50eHQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+WIh+aNouaIkOWKnywg54K55Liq6KeG6aKR6K+V6K+V5ZCnKF5fXikgJ2A7XFxcXG52YXIgemwgPSBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcigncGFnZScsIGdldFZhcigncGFnZScpPT0n55u06ZO+Jz8n5YWz6ZetJzon55u06ZO+Jyk7cmVmcmVzaFBhZ2UoKTtpZihnZXRWYXIoJ3BhZ2UnKT09J+ebtOmTvicpeyd0b2FzdDovL+eCueWHu+S4i+aWueWIh+aNoua4heaZsOW6pvCfpJ8nfWVsc2V7J3RvYXN0Oi8v5bey5YWz6ZetJ31cXFxcXFxcIjtcXFxcbmlmIChtb2RlID09ICd5aGMnKSB7XFxcXG4gICAgdmFyIGxhenkgPSB5aGNcXFxcbn1cXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6IHYudGl0bGUsXFxcXG4gICAgZGVzYzogJ+aPj+i/sDogJyArIHYuZGVzYyArICfjgIDnsbvlnos6ICcgKyB2LnRuYW1lLFxcXFxuICAgIHVybDogcHVybCxcXFxcbiAgICBpbWc6IHYucGljICsgUmVmZXJlcixcXFxcbiAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljX2JsdXInXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICcgICcgKyBjYXJkLm5hbWUsXFxcXG4gICAgcGljX3VybDogY2FyZC5mYWNlICsgUmVmZXJlcixcXFxcbiAgICAvL3VybDogJ2hpa2VyOi8vcGFnZS9nejE/dXJsPWh0dHBzOi8vc3BhY2UuYmlsaWJpbGkuY29tL2g1L2ZvbGxvd++8n++8n3R5cGU9Zm9sbG9377yG77yGbWlkPScgKyBjYXJkLm1pZCxcXFxcbiAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIGNhcmQubWlkICsgJ++8hu+8hnBzPTMw77yG77yGdGlkPTDvvIbvvIZrZXl3b3JkPe+8hu+8hmpzb25wPWpzb25w77yG77yGcG49ZnlwYWdl77yG77yGb3JkZXI9cHViZGF0ZScsXFxcXG4gICAgY29sX3R5cGU6ICdpY29uXzJfcm91bmQnXFxcXG59KTtcXFxcbmQucHVzaCh7XFxcXG4gICAgdGl0bGU6ICfigJzigJzirZDvuI9TdGFy4oCd4oCdJyxcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5IycgKyBjYXJkLm5hbWUgKyAnJiYnICsgY2FyZC5taWQgKyBgQGxhenlSdWxlPS5qczppbnB1dD1pbnB1dC5zcGxpdCgnIycpWzFdO3ZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9JytpbnB1dC5zcGxpdChcXFxcXFxcIiYmXFxcXFxcXCIpWzFdKycmanNvbnA9anNvbnAnLHt9KSkuZGF0YS5mYWNlO2lmKCFnZXRWYXIoJ2xiMicpLmluY2x1ZGVzKGlucHV0LnNwbGl0KCcmJicpWzFdLnNwbGl0KCcjIycpWzBdKSl7dmFyIHhyPWdldFZhcignbGIyJykrJ1xcXFxcXFxcXFxcXFxcXFxuJytpbnB1dCsnIyMnK3BpYzt3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcXFxcXCIseHIpOyd0b2FzdDovL+WFs+azqOaIkOWKnyd9ZWxzZXsndG9hc3Q6Ly/lubTovbvkurrvvIzogJflrZDlsL7msYEnfWAsXFxcXG4gICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG59KTtcXFxcblxcXFxuZnVuY3Rpb24gcmVxdWVzdF9iaWxpX2FwaShiYXNlVXJsLCBTZWNyZXRJZCwgU2VjcmV0S2V5KSB7XFxcXG4gICAgaWYgKCFTZWNyZXRJZCB8fCAhU2VjcmV0S2V5KSByZXR1cm4gcmVxdWVzdChiYXNlVXJsKVxcXFxuICAgIGV2YWwoZ2V0Q3J5cHRvSlMoKSlcXFxcbiAgICBsZXQgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XFxcXG4gICAgbGV0IGRhdGVUaW1lID0gbm93RGF0ZS50b1VUQ1N0cmluZygpO1xcXFxuICAgIGxldCBzb3VyY2UgPSAnYmlsaS1hcGknO1xcXFxuICAgIGxldCBhdXRoID0gXFxcXFxcXCJobWFjIGlkPVxcXFxcXFxcXFxcXFxcXCJcXFxcXFxcIiArIFNlY3JldElkICsgXFxcXFxcXCJcXFxcXFxcXFxcXFxcXFwiLCBhbGdvcml0aG09XFxcXFxcXFxcXFxcXFxcImhtYWMtc2hhMVxcXFxcXFxcXFxcXFxcXCIsIGhlYWRlcnM9XFxcXFxcXFxcXFxcXFxcIngtZGF0ZSBzb3VyY2VcXFxcXFxcXFxcXFxcXFwiLCBzaWduYXR1cmU9XFxcXFxcXFxcXFxcXFxcIlxcXFxcXFwiO1xcXFxuICAgIGxldCBzaWduU3RyID0gXFxcXFxcXCJ4LWRhdGU6IFxcXFxcXFwiICsgZGF0ZVRpbWUgKyBcXFxcXFxcIlxcXFxcXFxcblxcXFxcXFwiICsgXFxcXFxcXCJzb3VyY2U6IFxcXFxcXFwiICsgc291cmNlO1xcXFxuICAgIGxldCBzaWduID0gQ3J5cHRvSlMuSG1hY1NIQTEoc2lnblN0ciwgU2VjcmV0S2V5KVxcXFxuICAgIHNpZ24gPSBDcnlwdG9KUy5lbmMuQmFzZTY0LnN0cmluZ2lmeShzaWduKVxcXFxuICAgIHNpZ24gPSBhdXRoICsgc2lnbiArIFxcXFxcXFwiXFxcXFxcXFxcXFxcXFxcIlxcXFxcXFwiXFxcXG4gICAgcmV0dXJuIHJlcXVlc3QoYmFzZVVybCwge1xcXFxuICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcIlNvdXJjZVxcXFxcXFwiOiBzb3VyY2UsXFxcXG4gICAgICAgICAgICBcXFxcXFxcIlgtRGF0ZVxcXFxcXFwiOiBkYXRlVGltZSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQXV0aG9yaXphdGlvblxcXFxcXFwiOiBzaWduXFxcXG4gICAgICAgIH1cXFxcbiAgICB9KVxcXFxufVxcXFxuXFxcXG5ldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvYXBpXFxcXFxcXCIpKS5ydWxlKVxcXFxuXFxcXG4vL+iHquWumuS5iWFwaemhuVxcXFxudmFyIG1BcGkgPSB7XFxcXG4gICAgYXV0aG9yOiAnJyxcXFxcbiAgICB0eXBlOiAnJyxcXFxcbiAgICBpZDogJycsXFxcXG4gICAgYmFzZVVybDogJycsXFxcXG4gICAgc2VjcmV0SWQ6ICcnLFxcXFxuICAgIHNlY3JldEtleTogJydcXFxcbn1cXFxcbmlmIChtQXBpLmJhc2VVcmwgJiYgbUFwaS5zZWNyZXRJZCAmJiBtQXBpLnNlY3JldEtleSkge1xcXFxuICAgIHB1dFZhcignYXBpJywgSlNPTi5zdHJpbmdpZnkobUFwaSkpXFxcXG59XFxcXG5cXFxcbnZhciBhcGlJbmRleFN0ciA9IGdldFZhcignYXBpSW5kZXgnLCAnJylcXFxcbnZhciBhcGlJbmRleCA9IHBhcnNlSW50KGFwaUluZGV4U3RyKVxcXFxuXFxcXG5cXFxcbnRyeSB7XFxcXG4gICAgaWYgKHZbJ3JlZGlyZWN0X3VybCddKSB7XFxcXG4gICAgICAgIHZhciBlcCA9IEpTT04ucGFyc2UoeW0uc3BsaXQoJ1xcXFxcXFwiZXBMaXN0XFxcXFxcXCI6JylbMV0uc3BsaXQoJ31dJylbMF0gKyAnfV0nKTtcXFxcbiAgICAgICAgdmFyIHNlYXNvbl9pZCA9IHltLnNwbGl0KCdcXFxcXFxcInNlYXNvbl9pZFxcXFxcXFwiOicpWzFdLnNwbGl0KCcsJylbMF07XFxcXG4gICAgICAgIC8vbG9nKHNlYXNvbl9pZClcXFxcbiAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcoZXBbMF0uYWlkKSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn55u06ZO+JyA/IGdldEhlYWQoJ+ebtOmTvicpIDogJ+ebtOmTvicsXFxcXG4gICAgICAgICAgICB1cmw6ICfnm7Tpk74nICsgbW9kZV91cmwsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAn5pat5o+SJyA/IGdldEhlYWQoJ+aWreaPkicpIDogJ+aWreaPkicsXFxcXG4gICAgICAgICAgICB1cmw6IChtb2RlID09ICfmlq3mj5InID8geGx4eiA6ICfmlq3mj5InICsgbW9kZV91cmwpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBpZiAoZ2V0VmFyKCdsaWtlX3R5cGUnKSA9PT0gJ+W8gOWQrycgJiYgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykpIHtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfngrnotZ4nLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJChsaWtlX3VybCkubGF6eVJ1bGUoKCkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNvbnRlbnRfdHlwZSA9ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7IGNoYXJzZXQ9dXRmLTgnO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9ib2R5X3R4dCA9ICdhY2Nlc3Nfa2V5PScgKyBnZXRWYXIoJ2FjY2Vzc19rZXknKSArICcmYWlkPScgKyBnZXRWYXIoJ2FpZCcpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmxpa2U9MCZtb2JpX2FwcD1hbmRyb2lkJnBsYXRmb3JtPWFuZHJvaWQmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmc2lnbj00YTA4NjQ1YzI5OTRlYjY5MmFjMGNmYjBiZDc1NjljNic7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogbF9ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2cobF9jb2RlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovLycgKyBsX2NvZGUuZGF0YS50b2FzdDtcXFxcbiAgICAgICAgICAgICAgICB9LCApLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn5oqV5biBJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQoY29pbl91cmwpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGNfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYXZ0eXBlPTEmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZmcm9tPTcmZnJvbV9zcG1pZD10bS5yZWNvbW1lbmQuMC4wJm1vYmlfYXBwPWFuZHJvaWQmbXVsdGlwbHk9MSZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlbGVjdF9saWtlPTEmc3BtaWQ9bWFpbi51Z2MtdmlkZW8tZGV0YWlsLjAuMCZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cGlkPTAmc2lnbj04YWJiZGRkODdhNmJkODJlMWU0MmNiM2NmZmQzMmJiOSc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogY19ib2R5X3R4dCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnXFxcXG4gICAgICAgICAgICAgICAgICAgIH0pKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgLy9sb2coY19jb2RlKTtcXFxcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0b2FzdDovL+aKleS6hjHkuKrluIEnO1xcXFxuICAgICAgICAgICAgICAgIH0sICksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICfov73nlaonLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJChhZGRfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBhZGRfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFxcXFxcImFwcElkXFxcXFxcXCI6MSxcXFxcXFxcInBsYXRmb3JtXFxcXFxcXCI6MyxcXFxcXFxcInZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjYuOS4xXFxcXFxcXCIsXFxcXFxcXCJhYnRlc3RcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgYWRkX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogYWRkX2JvZHlfdHh0LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhhZGRfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgYWRkX2NvZGUucmVzdWx0LnRvYXN0O1xcXFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgdGl0bGU6ICflj5bmtognLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJChkZWxfdXJsKS5sYXp5UnVsZSgoc2Vhc29uX2lkKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBkZWxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnNlYXNvbl9pZD0nICsgc2Vhc29uX2lkICsgJyZzdGF0aXN0aWNzPXtcXFxcXFxcImFwcElkXFxcXFxcXCI6MSxcXFxcXFxcInBsYXRmb3JtXFxcXFxcXCI6MyxcXFxcXFxcInZlcnNpb25cXFxcXFxcIjpcXFxcXFxcIjYuOS4xXFxcXFxcXCIsXFxcXFxcXCJhYnRlc3RcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwifSZ0cz0nICsgdHMgKyAnJnNpZ249YzY0YjRjNTA4MzJkMjllNDBhM2RkZWRlZDM2NjcxMzUnO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgZGVsX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoaW5wdXQsIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogY29udGVudF90eXBlXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9keTogZGVsX2JvZHlfdHh0LFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kOiAnUE9TVCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSkpO1xcXFxuICAgICAgICAgICAgICAgICAgICAvL2xvZyhkZWxfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgZGVsX2NvZGUucmVzdWx0LnRvYXN0O1xcXFxuICAgICAgICAgICAgICAgIH0sIHNlYXNvbl9pZCksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICcnLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIFxcXFxuXFxcXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXAubGVuZ3RoOyBpKyspIHtcXFxcbiAgICAgICAgICAgIHZhciBiYWRnZVR5cGUgPSBlcFtpXVsnYmFkZ2VUeXBlJ10gPT09IDAgPyAoKGVwW2ldWydiYWRnZSddICE9ICcnKSA/ICfwn5KwJyA6ICfwn4aTJykgOiAn8J+Toic7XFxcXG4gICAgICAgICAgICB2YXIgYmFkZ2UgPSBlcFtpXVsnYmFkZ2UnXSA/ICdbJyArIGVwW2ldWydiYWRnZSddICsgJ10nIDogJyc7XFxcXG4gICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgaWYgKG1vZGUgPT0gJ1g1Jykge1xcXFxuICAgICAgICAgICAgICAgIHZhciBwdXJsID0gJ3g1UnVsZTovLycgKyBqeCArICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddICsgJ0AnO1xcXFxuICAgICAgICAgICAgfSBlbHNlIHtcXFxcbiAgICAgICAgICAgICAgICB2YXIgcHVybCA9ICdodHRwczovL3d3dy5iaWxpYmlsaS5jb20vYmFuZ3VtaS9wbGF5L2VwJyArIGVwW2ldWydpZCddO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgdmFyIHBpY3MgPSAoZXBbaV1bJ2NvdmVyJ10uaW5kZXhPZignOicpICE9IC0xKSA/IGVwW2ldWydjb3ZlciddIDogJ2h0dHBzOicgKyBlcFtpXVsnY292ZXInXTtcXFxcbiAgICAgICAgICAgIHZhciB0aXRsZXMgPSAoZXBbaV1bJ3RpdGxlRm9ybWF0J10pID8gZXBbaV1bJ3RpdGxlRm9ybWF0J10gOiBlcFtpXVsndGl0bGUnXTtcXFxcbiAgICAgICAgICAgIHZhciBkZXNjID0gKGVwW2ldWydsb25nVGl0bGUnXSkgPyBlcFtpXVsnbG9uZ1RpdGxlJ10gOiAoZXBbaV1bJ2xvbmdfdGl0bGUnXSA/IGVwW2ldWydsb25nX3RpdGxlJ10gOiAnJyk7XFxcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXFxcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZkRPUk91S2ppTUJFZnBuQk5lbEdVZjQzOUF1SnBlMHVSTjF0YkUxaVU1MDVTamtVQVE4T1p1VmtEbmxCUzlnOUU5L1ZhbkFhb2tJV1phdlFFdnFiS2lOaU1rZTFNY05ETWQwakRoRmZWRlpwK1FGNEtBOFBHa0N1RFBKcHlicEd6RTgwRU5QMjVZREwyeW0vVVRVcm9XOFBTTjA5T2xpSDNHY1duNkpmTk1aRTRCdlFvRkpmZzJXdnY0UVdDRUNHMUZIREtPWnluc1lmMWNzVkl1YmU4RjY1ZHRSRTdndVI1ODc4L1BVSlhRZ0RvYjV0MllVTzVRenpNY2tyRTF3czN3YUcwcG5ENjRxa05IMkVzSWxDY0N2Qno3WWlnQzlJcEgxcW02cDhpK2lYM3hCUHBCNjZMRDkxZ1B5enByek1PL3NhM1JYVldPTHRlZ0wvZkJJa1ZIYWZsU1pjS3piN0hWMjcyMG56aXpOaFN5c05lRUs5N3FzNmcxQjZ3NVRjZFNUN21FWHg1NUxOVHVmLzI0bzB5eUNydjRTSkx1WFdFdk85UngwamF6amx5V2lhaEUwOHh6d3pSOGt5anJkTDFnMjJDWlNQS2JUT3JISWQ1TGJKUWRWc0V2MFdEbC94dElOUlMzVllLWi9uSHVHUEY4UUxBbEFOUHpvdERHa2tkOUdwSkRNc1hqbm1VT1dJUGdtd0FqRkJrL1cyRTNXU2JpWGw4RXRKUGdRejNGNFZka05kdnBvVzk4clhNZU00Q1JrUzdUbi81S0lGRWo3ckYzLy9jcGthd2tDRHpyZ25HY0lzRk4rUzFVZWNIa2h5NDc0VFR4V0gxRk15OG5QNmVkS2phQ3g4N1VmN0Yra24vbm42TXBWR2Z3d3oveVAzWUczb0pWR2xFditXa3VGQWVRTVhZNFFuUnl3Y0hFZVErczJ1MTNOQVdjdlVJNk1ueU9xSXdxeUM0UDRsREVtSVpuV0RYalVHWXV6aS9MNW0wM21ENlRpd2hGenJ0ZCtoMzZtZ0x0ZXBTZjNUVkFvdTNPZGJ4eDAzMm1kVUVqNVBGRFR4a0VhRzJyZW9aQkVPVG1pQzM0OU93dVhYUWUxZndHSHdlRys2OXI2ZCtLTldqRU5ZVUZOcC9jN0ZtZWRzdXp3aGVySjFUeDZMejQxYW9mT3ZMNTRSOWx1Z3JDMzJ0YlZYYnFpS1VWakpjVm42L3NRY1R3QUxTWm9waXZNTTRIVk5GM21ZMlhMOForbXBXa25xREIvSHdOSWFDbUtON0xLOHRJMWxaeit3aWYrOVpJQWRUMlMrdlZOeDRnc1VNbXNYVnhvM0dPczJxQSt4clAranh4TVNhUlRHS051WWJOU1h6TGFjb3g5Uk84Y3BWUkRxem9vVE90b2ZGVUFmMG8rWkRXNmxzMG5jc3J5MGpXVm5QN0NKLzcxa2dCMVBaWVNYVHVDdWVvZmE2VTEvV0pBSE5obnJCT2IvWE5wU0VBcW53OVZBRlN5ajY2SXlUNzdFR3d2V0Y3K1lRT0xPSW1qMDNlUFRJVUQ1WlExQjM2QlU3QkFVY1FMREY3dVZYYkQxdkZnRS8rUlRPU0J4L0djd2xqSWxYUzlsQUFrMkZTVDdtRVh4NTVMTlR1Zi8yNG8weXlPeGRpdVd1SmZNZzgyQlhkRWp1UXZSa3R6b0pRQTloamYxSXRwdVdtaXFCd2RmL0wwS094MjZyMk04cGpTaDlFd3prVHJpbzRqQVJINlp3VFhwUmxIME1nVU5nNzBBaDBXSWZRUXVwK2NWeDZrLzNDYldxd0lzK0FiejlGRjJ1aDllT1BkNExQbkJ4dUJoWjJldTFJWEJyaU1hRGlvczZNTUZTZ1VOd3FEQWNFZ21ZRkozeTNHSjNMRjhTQWx0RGpaaFp1UnBBVTNSOXVGTnNhYUNzZlpRWkpVejExejBTNGlRUDRERExVMENUTEs4dEkxbFp6K3dpZis5WklBZFQyMjZCejZjb0EvRXdvcUpoL1JtNmUybTREODluUWVLVXNEWU5xS05Nb2xSbjhVRlI3NUVXNlJFQ1R2bXg1RUlkOHl3OGYxSG0zYVkrTGRKUVpYZUQzOVo2U1kxMDZXT2kvTmdVNjhZcXF1SHE2TTJ6akFqd1FSLzlNV1dEeUNxQUoxUnh6N1FTOHJBUUlLSE4xdzFmbGRhdFUreGRkaWhnMk9zVnh6cDIvaklLQ2hheENtMUw0ZzhPQlI5bHVRaFpTYzNwbVVvbk5zeHdEeGZwMWJLT2lVWkIxd2FNcmhYdVMxWmIxWFhIVHZwNHVqTXdXbWVaQ04wVUpLNFBpRlU4VnVBOWV5ZEJiZW9BKzQrRlgvVWRRZDdBN215VVYraUEyVDg0L0xjRU9rbkxNVFFwR0NTMUVYZTNCWmtUV3pLalN3ZUFReFpDMmRramlLTS95LzdvdEtNc2xXMEkzNHVxNXgxNlpnTjFWZTFEYWxIK212UUp5V1V5MWxYVSsxN3NzenBReSt3Nzg4N0RrSnl2djJ3bk9KNUgvb2VGaEp2Q1ZncHpoVGNyR0pJK3pkYXI4OEN3WkZxMWFMc2VzSDgyRVJlWFBxME9pcFUxYWdGdTZQejY5OXQ3TjNzNDNtajlJUDF5ZHppZHNTQzNMSzh0STFsWnord2lmKzlaSUFkVDJnTHArOTVUQ0Q2RjlJT2ZraS9UdUJGZ2pmQ0E4bmxrZ2NTZFFuL3piUGQyMTVIaGp1TTBtclA5eW85dStTTW9ueXl2TFNOWldjL3NJbi92V1NBSFU5dThaNy9WdEwySW93YXR0M1dzVUhIVmNhSWtOMG14UFpxYndKM2dvcy9HWHl5dkxTTlpXYy9zSW4vdldTQUhVOXJQY3dkaFpaNHJQRW1yeVFuWlFtOGxYd1lqS0E0eDRMc2QvYjNMY01iNTN6cFF5K3c3ODg3RGtKeXZ2MnduT0oveUF4QlJQaXo0SlY2V3Yxb2pRcEw5ZnRIMkg5S0V6bGpkZDFEeUU2T2ZyeXl2TFNOWldjL3NJbi92V1NBSFU5bmZQaG9GbkJPS29YNnRYVTFaMHBLdU1xZUdCT2lndXQzbHA5TmVpajNmcnl5dkxTTlpXYy9zSW4vdldTQUhVOWlDLysyTC81bjNISWYzc0JOYk1nZFlDdlBZdUV4Q3RMRlMybGF4Y05KUHV5eXZMU05aV2Mvc0luL3ZXU0FIVTlnTU5FSFhhclhyaHg1aGNFZjU5WjZheUMyUXBtZy9rWDQzSDBWOGxIaDJlN1RvNzhDUjdOM3lQMGc0TzRnczdRTXNyeTBqV1ZuUDdDSi83MWtnQjFQWTQ5OW1wOFNzL0MzeDhtV2lqY1VlaHErUWJ6aGdGYVV1L210cnVKa2YxRjhzcnkwaldWblA3Q0ovNzFrZ0IxUFliMm51QkF6NUI3SHFGelRPK2NUWnloU0k3S0lQMXlFMVFoTkdyRm5oMWRZa2lST2ZHTkFJUnhDOWFPL3NaOFFzOHliS0tDYTZBYlVraUZvaDBOU0NPenBReSt3Nzg4N0RrSnl2djJ3bk9KMlpZUCtrM0dRSzEzbVR3Zmo0eEc4Q1JhemR5S2VNUU1qUzd2Z0FtOVNua3ZvV0svTGFTeWZIZWdpQ2ordndxdGlnZUlSeitPSG1uS0xtLytXQ1BhMDdRUkhkOXMyOTNUQk9TNFpHWE1RV0NMZmNXTC8yNjNyMnZKT0U1TEMxU0w1YzJrWjJnbzFvQUQ3ajBOK0xqODJBQWpVSVJqSWgzRHVBNkNDb2tYazVFb1REanp1SnFURno4ZE1iZHFseFNVbjYzZXdRcncwcENwVE1hZGsvbWpDY1dGclIyTlFwczFxbDg3aUpqemhVS0lQWXRPQVB4SkRlY1hWTmtpaWVFRFJmdlhvcnVlKzBpL050YXJqWFdrVnNBalVJUmpJaDNEdUE2Q0Nva1hrNUVZZnYvTElqZVRtOEtRdzF3K21jcWJTZ2VJUnorT0htbktMbS8rV0NQYTA1c2NQNFZjODR1UUp4TUkzMzNWdUUyeXl2TFNOWldjL3NJbi92V1NBSFU5anNLSzJPWFNBY0ZKcnpjamt6bUYvOEpXVUVoRUVURW0zSkJPSnNHdEVJSW5RNjZlb1RLWXpDTEpGU0IrbGdhcm5ieG9TcXl5SThtdGRjZ2FkaXpMY3hnSloxWkUzbks4c2FOKzRSbUxmSC95eXZMU05aV2Mvc0luL3ZXU0FIVTlzRUNhOGtEMldJZjVzSktvU1d6eC92aCtkY2JiZDg2QmZRMUwxZnJDUkJheGw3OENIeTFvNndKWUViT1kya0M0czZVTXZzTy9QT3c1Q2NyNzlzSnppZDZ5cy9VNEcyWW8zZGFTQkhCSktRWXl5dkxTTlpXYy9zSW4vdldTQUhVOWhhL1QydU9rUDJTdUdWU01sOXJPNTRjUXYvVlhUdENtbnlUYUkzT2JRb0RiN094VjFCTjBFSHJlL1FuM3FheE1lUWI3S0p5c1lacUVCa2wycC9pT1ZaZ29meTdDZ3pnTkRHTi92R04rZ0YvNnlhZXArQ3FxMnVFTm9wZzBEenhUNmRxTEJFVzNZRWU2UDJDVm5Gb1Q0c2FmcmtHeFJMVHpLYVlMSXNlNkpIWlZxUWhkWVFST1FFOXVoMDMwNUpHcVZ0VmR1cUlwUldNbHhXZnIreEJ4UERycXFpanlkaUhFb0VQZ0h0V2JjR2RWSWhabmh2c05CQjIvQWN0V3VueGFRb2M5ZXNsRmNBdGt4NDA1RGEwU21nK1F4NW12RDBHNHIxM3lMZGhzWmoyY29FMVAwcmloNWt6VUl1ZmhnbWM2eGIycEpaSVJXK3Y1YmVXOFh0QjhaWExLOHRJMWxaeit3aWYrOVpJQWRUMnBYeU9JYVBDRTVwNVppeDQ2bms5REh1UGpENkYwd0gwT3NvcGJacEtSWWxDcWgvOG1mY3Brdms5RFFpaUxTK0R5eXZMU05aV2Mvc0luL3ZXU0FIVTlocmNmNnREL3BWZkIvQzFWZWFkV1Q4S3V6OThlemJIVVhJdlMyTkY2djI0MXlSVzFlOWdVSlk4RkN2ZWhsZDJrTXNyeTBqV1ZuUDdDSi83MWtnQjFQWTdIbldnWEp4V0hJVDczY0M0NzdTSFM0aGhjdE1DQUJ6d21Ubm9GR2VUYmROeUpLZ2w3a0tTQXNGL0dvVStNUkxBWXdOTlhHRjMweTNENlplTXY4RE9NdnNWR2RYSHRqMjRaVWZ3RFdzSk1zc3J5MGpXVm5QN0NKLzcxa2dCMVBhZTZPeis0cTZBQTBod2UvaTJXNnV3TjByZWpDVjRnc2xtYWlzVEMrOTZWTXNyeTBqV1ZuUDdDSi83MWtnQjFQWnFydnBJMVN6VGoxTG9KZ0lWRU9aMXl5dkxTTlpXYy9zSW4vdldTQUhVOXVQVzJ3dnlDWkJwRE5WMnltVVNwVDcyR3Z6ejFQQk5weHAweDFEV1krNUU5dFIrZnBoSXVVV250U0k3VWVTampBKzBvRU1Ucmk1NEx1ZVR2N0NnZWdteTM3K0FZbFF1RjFDYmFvSC9GK1FKaVZTbjJYNk9LOTBSZkVxamtDL3JJU1l6Lzd1Y3A2YU0zVDE5Y0pweEVySExLOHRJMWxaeit3aWYrOVpJQWRUMk5JaU1pRkdTQ25GUDhveS9xSWZ5V1ZZY25XMlB6OUZNSVhRS1haL3BiQk5zVWxod3hvV1dlWXlLellBdFU0MCt6cFF5K3c3ODg3RGtKeXZ2MnduT0ovTG5hNVdzTHhaTmNpZ3JwMGJVQk9neStUTVUyNG5sZ0J6eW9Gc0pZQlpmSC9ZbzFWZ083TURhZzRXek8wWEt3N284QWNSbFJhNHE0TW9wTnNnKyt3UExLOHRJMWxaeit3aWYrOVpJQWRUMjlBdUI0alBjWDFkLzNBbCtKRXVlRDNCbmprSmMwYkg1THc0MUc3UnhCaklUMXl6UGhYY2VYUW1FY21jd3Y4WXNtYTNkVWFEMmRydnRFTFc3Q3Ryb0VhYzBPT3ZaWjNhU1lhOEduc29mcUJ6REx0aVl3Y0FPU3k2WTNrZXVPVlhnSU5WQU5HYkdNRDFZUWxwY28vcjNBODZVTXZzTy9QT3c1Q2NyNzlzSnppZDllT3dRQWVMTm4xbmJSTjM1N1JTblY5Y2J2UFg0Um1hY0NQTXFrS2VmWFFxc0FMc29jN1RzQU5jWVBXQjczVXV3dEtTUE9RdENTZkpwSjFMVFJhUWVudjFyVm5JT1BXaTJ0dW9PSVNWTjdIYnhvU3F5eUk4bXRkY2dhZGl6TGN3Y3R6bGRNOTRtTXNMSHRIcDVGUU0zUGNYaFYyUTEyK21oYjN5dGN4NHpnSkdSTHRPZi9rb2dVU1B1c1hmLzl5bVJyQ1FJUE91Q2Nad2l3VTM1TFZSNXdlU0hManZoTlBGWWZVVXpMeWMvcDVRUDRzM1ZjS1Qwa0xyOGxrR0VsanFJUnJnV211elprNWNjZzBSdENRODBWZGtjUWFEbVoza25aaUVZR2YzYTJaZ2VxYjZVcHRpQVJDWnhVV2xnbnBDanBtcDZ3Y2tvMEtDMXpzTGVTZkUrZkc4SXVKZVNxWWpjYkxQWDJtQjFrNDNnMEc5U1JSaUQ1STdvTThaM0M4U1lrTGZhM3cyKzZ6cjFHWGcrV21NcXJGUVVaczRXWGNINFFESXh0YzYwbk1VWDZMMVdYT1VVeG5NNWZMWWdpRUE4QUxzSWlydEJsK0VPMU9MOTlsRzhSSzd1bG9iLy9NQWsrN0RRRFVubnBOVWxndThpTDh3T28rNWFpb0lLc3BvUmttc0d6a0h4a01HU05wOURpeEdsei9sckEwTkpkZWZQR0dIT2N0YjhsdUlGTWN0eW91OGhRRDRYU3E4Z2lmNFkwMFNVSEV3NTJ1c2owbjdIZ2c3YTR4eVFsWndIWTJUOTdKS2dzRi83c1kxdXN2UzV1d0dmNE11ZHI5aHovTzUyOGFFcXNzaVBKclhYSUduWXN5M00yVGE3M3YwMzhhS252Um14bHF1dC9RRUNrWThINWEzOExXK0ROcmJOeDlkcDhLdU5TbEs1TVl1aEN3TXBFQXBiZmFBNXl5QnovdU81TkJHTHZBaHNJUmNscW5mL3hCVHpvWE9TUlptZmdSZFN2YUpoc0VxUmxtS20zem55ZDBnRWFGMC9Yb1ZvbUFuMWxGRkU5MENJU2EzcjAyRFlrRk5NL1IzYlZDdW5MK0R0N3dwZURMQUlmN1Z3WVBlWFg1RmFMR2o0VDh2czVKTjg0RExQNGt1RzlkZ3g5ek1wZHpVQWpBbk9hZ3ZST0VSZkcrTzhHT1o2VUlwelRjME5IQlJ4YTIzb05mWmpaMEFIeDN4b1YrYVRCdkQyNVNkbk5iVXBLWDdTQytDUGZ3NFVGeVlpdjdNK3pCNE9oQ0lFUnllQnJQRExNVzc4SitGVGd0YjIxRDhsd09QcTBrWHAwbU1oSldIOXRLZ1FVdVVUZXczYkJ2d1cwdlRSWDlPRG8vcnJpME54OU1tR0lpMTB1YlppMEJ0UFNnYXp4S0YwTTNxMEIvem02aUpseVlkNnJCVURnVXVLdUpLRWFPM1NTWHN0SS96YzBKcVh3dmhkbFBnK2txaUlwK1BxMGtYcDBtTWhKV0g5dEtnUVV1VVRldzNiQnZ3VzB2VFJYOU9Eby9ycllBcjhqeWwxNWJRZVdhMUkxRjlCaS9EMjVTZG5OYlVwS1g3U0MrQ1BmdzV0WkpQTWFkc0JRa05KSmhWSDZjV2FjK1ZLUzNML3dwT1lWMWtNSlppM0ZwWGlnT2hFRVg1ejhaQVN5MzQ1R2hNcU45RXc0VE92b3VlQmhZUWpuNjlzZnJkN0JDdkRTa0tsTXhwMlQrYU1KOGM5Y2tJVjNJNEUrWStmYXRqTmpWQXQ5eFl2L2JyZXZhOGs0VGtzTFZJdlV2V3p6blZFR25rUjZiRU92NWNvVVFDTlFoR01pSGNPNERvSUtpUmVUa1NlN2srb1NCQXg2Zy9EbGNqdlM4aU5LQjRoSFA0NGVhY291Yi81WUk5clRoeEtPblZFNkd1QUlLZy9ZZVdoREZ6TEs4dEkxbFp6K3dpZis5WklBZFQydW9uRHRlZnNNZm1laU9UVUUzblJyZGkyQmhzNEs0Nzd5VmhwSWQyNHlnMWprSDdmWCtkVFJBbm9DaVVGazZQa3l5dkxTTlpXYy9zSW4vdldTQUhVOXBrV1ZIUmdWWWNoK3l2R3R4R2JIa3g4YndpNGw1S3BpTnhzczlmYVlIV1RyQ0kvckxqbnp3TnFtb2dlK1ZMWExjc3J5MGpXVm5QN0NKLzcxa2dCMVBiQjQ5MUZpZ0VFOGlvV1VqRldsL3FCQmFSOUQ0dStpbkJtNkdJTm0wejJ0aWdUVjdwZEdvRG50cVNDRW5KckJ5Zy91Z3NzSkRrZjNOU0JIL0w3M29KelRqRHUzeXEvZVdZK0Jyek1Wem5YUEZDY2F1Mm93WExCMnhkWklERXM2ekdRNE1vbTJveTVvaytDK0ZLeDBVeWZ1ZUVmUWpxcTljdlAwVUwxZ1pkYmZxTmdCdDV1K3VwM01PdXBjVU00U3J2TEs4dEkxbFp6K3dpZis5WklBZFQyRzlwN2dRTStRZXg2aGMwenZuRTJjcHJRaGpVditxNmw1d25pU21qUlRTc0Mrd2dIY24yc2lvWGd0K29hTXp0Mnl5dkxTTlpXYy9zSW4vdldTQUhVOWxvVVVHNitDRmF3TzBxRDk2R0xSeGdiYVlkanBJdDZtdlUvbFg0UFF3VzRTb3g4N21JeEFMWjNTRG91bkREOVhKMTl5Wk11THlJTVZXc3VIVjRvWHc1R1hkR0MxUStORjBaWGdOb3d6L0FpUGRTeE1uOFJWR1NZWWwxYUo3MzQ4OWtkakdLNm8wUzBocHUxQW9LYys1TExLOHRJMWxaeit3aWYrOVpJQWRUMm15dFU5NUJzTUVlMjVzQ28rcm9xOE1zcnkwaldWblA3Q0ovNzFrZ0IxUFplalF0MkpRQzJKblZTV1hmaXZ1VExnbmtGbXZJUWEweW0vUlJ6RFB0b2daZzh6RlkvTWVtSHNtMEIvZm4zR3A5cVlONW1UMjNVaHAxck90cklqdGpBeXl2TFNOWldjL3NJbi92V1NBSFU5dEVtUU9QWkpRbmlMYzJXL0VXY1JuOHRMT2pxS3NUVHFDQmZXVnB4dVk2ZlkxS3NqQk1WTThDQ3pqaTNjR01lbDhzcnkwaldWblA3Q0ovNzFrZ0IxUFpGYkhsNmdnaHAxVTRWVXpTTlBDeE55eXZMU05aV2Mvc0luL3ZXU0FIVTlpSkdpTUNlYllnaXdqWklyTjhnTGkzY2EzWnBWZzdPOWFhSUcxckZDN09kTVhSYW5wc2RIdHpMQVM4N0pUZHRNVElOblZ1K3liTGk2K3pOZjRxL1BIZkxLOHRJMWxaeit3aWYrOVpJQWRUMjBuT0tQdDRtWldrcnAyRktWeGowZFc2NGtwOXJ6R2NvNFpYbGZYa0Urd1p6K1BQQWlaSEppdFBRTEx2NGFNZ0o4b090RWJCZ3gwSHE5UnQyUzRnRG93PT1cXFxcXFxcIilcXFxcbiAgICAgICAgICAgIFxcXFxuICAgICAgICAgICAgdmFyIGRjID0gJChwdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChcXFxcXFxcInZhciBjb25maWcgPVxcXFxcXFwiICsgZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvblxcXFxcXFwiKSk7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpO1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiB0aXRsZXMgKyBiYWRnZVR5cGUsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBwaWNzICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiBiYWRnZSArIGRlc2MsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAobW9kZSA9PSAn55u06ZO+JyA/IHRydWVfdXJsIDogKG1vZGUgPT0gJ+aWreaPkicgPyBkYyA6IHB1cmwgKyBsYXp5KSksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgXFxcXG4gICAgfSBlbHNlIHtcXFxcbiAgICAgICAgcHV0VmFyKCdhaWQnLCBTdHJpbmcodi5haWQpKTtcXFxcblxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IG1vZGUgPT0gJ+ebtOmTvicgPyBnZXRIZWFkKCfnm7Tpk74nKSA6ICfnm7Tpk74nLCAvLyfnm7Tpk77mkq3mlL4nLFxcXFxuICAgICAgICAgICAgdXJsOiAn55u06ZO+JyArIG1vZGVfdXJsLCAvL2xhenkxLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogbW9kZSA9PSAneWhjJyA/IGdldEhlYWQoJ+iQpOeBq+iZqycpIDogbW9kZSA9PSAn5pat5o+SJyA/IGdldEhlYWQoJ+aWreaPkicpIDogJ+iQpOeBq+iZqycsXFxcXG4gICAgICAgICAgICB1cmw6IG1vZGUgPT0gJ+aWreaPkicgPyAneWhjJyArIG1vZGVfdXJsIDogJ+aWreaPkicgKyBtb2RlX3VybCxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgaWYgKGdldFZhcignbGlrZV90eXBlJykgPT09ICflvIDlkK8nKSB7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICQobGlrZV91cmwpLmxhenlSdWxlKCgpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIHRzID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjb250ZW50X3R5cGUgPSAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkOyBjaGFyc2V0PXV0Zi04JztcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIGxfYm9keV90eHQgPSAnYWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFpZD0nICsgZ2V0VmFyKCdhaWQnKSArICcmYXBwa2V5PTFkOGI2ZTdkNDUyMzM0MzYmYnVpbGQ9NjEzMDQwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZsaWtlPTAmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nICsgdHMgKyAnJnNpZ249NGEwODY0NWMyOTk0ZWI2OTJhYzBjZmIwYmQ3NTY5YzYnO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgbF9jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGxfYm9keV90eHQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGxfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly8nICsgbF9jb2RlLmRhdGEudG9hc3Q7XFxcXG4gICAgICAgICAgICAgICAgfSwgKSxcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aKleW4gScsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAkKGNvaW5fdXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY29udGVudF90eXBlID0gJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldD11dGYtOCc7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBjX2JvZHlfdHh0ID0gJ2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhaWQ9JyArIGdldFZhcignYWlkJykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmF2dHlwZT0xJmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImZnJvbT03JmZyb21fc3BtaWQ9dG0ucmVjb21tZW5kLjAuMCZtb2JpX2FwcD1hbmRyb2lkJm11bHRpcGx5PTEmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzZWxlY3RfbGlrZT0xJnNwbWlkPW1haW4udWdjLXZpZGVvLWRldGFpbC4wLjAmc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJnRzPScgKyB0cyArICcmdXBpZD0wJnNpZ249OGFiYmRkZDg3YTZiZDgyZTFlNDJjYjNjZmZkMzJiYjknO1xcXFxuICAgICAgICAgICAgICAgICAgICB2YXIgY19jb2RlID0gSlNPTi5wYXJzZShyZXF1ZXN0KGlucHV0LCB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6IGNvbnRlbnRfdHlwZVxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvZHk6IGNfYm9keV90eHQsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q6ICdQT1NUJ1xcXFxuICAgICAgICAgICAgICAgICAgICB9KSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIC8vbG9nKGNfY29kZSk7XFxcXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndG9hc3Q6Ly/mipXkuoYx5Liq5biBJztcXFxcbiAgICAgICAgICAgICAgICB9LCApLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAnJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnYmxhbmtfYmxvY2snXFxcXG4gICAgICAgIH0pO1xcXFxuXFxcXG5cXFxcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XFxcXG4gICAgICAgICAgICB2YXIgcGFydCA9IHYudmlkZW9zICE9IDEgPyBwW2ldLnBhcnQgOiAn5b2T5YmN6KeG6aKR5peg6YCJ6ZuG77yM54K55Ye75q2k5aSE5pKt5pS+JztcXFxcbiAgICAgICAgICAgIHB1dFZhcignVUEnLCAnO3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjBcXFxcXFxcXFxcXFxcXFxc77ybXFxcXFxcXFxcXFxcXFxcXO+8myBXT1c2NCkgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ5LjAuMjYyMy44NyBTYWZhcmkvNTM3LjM277yG77yG77yG77yGUmVmZXJlckBodHRwczovL3d3dy5iaWxpYmlsaS5jb20vdmlkZW99Jyk7XFxcXG4gICAgICAgICAgICBldmFsUHJpdmF0ZUpTKFxcXFxcXFwiaWZuenFhTnFOUmtONk5xRzBmWng1TWV5NDc3T3NNSk9UYlRkOVNhak1rZjVSNU8zOTZKMjJGeGtiUWJrWFhDcGdnZnVhZDVvKzNwOTdMSFdiSXB0b3c0bytNUlF0YVAwLzh3aXlKQ3JaQ2FaWVc2NHdVMUI2MHhSQlF0YmRKQ0VnUnVIaG9ac2JHQVpCQTQzL1RYeEd3SWtDY2tiVjZuekhobTkzRGs1RGlDNUk1SG4rQ2ZpQk1FNHlRbzM5T1VKeTNwR0FXbGpEMXNucHpHaEJqMWIzSHJUdnlrakZhU1BnblMvTVVkSk1mMFFaSVNOR1U4ejVvdmFuUHNIK0Y1V3NRZ0hnSXF4VzlldlYzK3RneWZMVWRGUjBONERsdExZcnc3dkNQZ3pQUVgvdndCTVB5NlljVnRTVktqYjZRekZhdVROK0oySVJZcnBheTE1YWtBa29mYStZeC9mTlRlZjQrNlphVnptWGVaYUVhajBiUS9IUFppYnhUejNTK0RtVVZkZ1l1MEhYTXkwQ0ZDWFN0MytlT1VOOWMrRW1WQUxyTk44T3FXclBla3J2RjFxTjFVS3Y2a0JjQkVQL1N3a3VmczN2TTA3Zld2L1JOSllCN2hFaHNvSXh5dkhRT2lQWUNURCtlVXMrZmgrVTliUlJBVXpSU2xYQ3poV1hqRGZDSmpZLzlCMmw0UnBoL253b3BFTXFpaTVwSkNKVVBUYy9INFVmdzlGT0xabXhNSGJFaVdmZnAwcmdicEhvS25Sbnp3WWZnL1JLN245ekxBZEdBSy84dUdhMHNsWjVJVDFYVWVxclBzQ3F0M01INUcybXl4QkRscUQwWVFVYjZOV2hJN3BqanBpbjZiVzJ0aHd6SDROVC9UcDRDV3BIbFZ5Y0JWV3NTZ2hHeVNCRVFScEJRS0xPVHYxRXZPeGdGeGg5R1ljdTlUNldQdWZiRW5EZy9MSzlyZ3IycHdvSTNZSWowcDJCYkJtWDd2TWhQeEtLTHB4Wmk0M0p3VmY5SHhuMzFOYVlRaS8wUzF6VENnOVMyNnRVZ0FxNDhyaStFaTNNSFVrSTZXc01iQTczTG5mZ0JqNzdEQWxRbDVRT2tVdi9wSGh5WWxpaVEyWFlhWXhTSCtoRzQrdEErSzZ1UDBoREtlUUxrL2Y5dDdpKzZZTzBVKzhHaS9Yd0hBc3Q2Q0w3SS9LaUJmRlBuTllMeFpCeDlFMHNRZXJJKzhZS0YySmZUb3R2SGZjOWlTZjNMZUFjVXpXeS9Hc1lyMjBxekUxKzJocVVueFFicWlFamxhTXFlci8vUW81OE93K0ZtcFFwMXd1KzdoZ2ZyNlJrSzRZd3hrZXdlWGhPUmZDQk5xSUJKenR3WjFmQjBtYnBSTjNja256RGljcmFtbTNqV2tEaVl6Zi9KTTNoWXMzY3J5bGRHeVhxcjI4SjZ1OHhMYVNEWEYveVVRd2JTRldKTXN0NCtpalMzSDdEVTV3WWpna2hFemhCVkt4NzI0TFVta3BVVGFSVGowMEpnQ01zbEhEeXl2TFNOWldjL3NJbi92V1NBSFU5cTJDWVI3QzlDSWtHdUkwa09LSDBud0tLaTF4V2Y5WncxaXZnTHhrVWxPRUlGTnBROFhkNFJ2aWpqR0xyeFFSMnptc3JxTGpUaGpwblI5cnlsMnF1VG0rSG11aWVqc0dNV0dJWEtreXBkTFlQbnZjSGZIMmNsV2dVNzFWSnhXcno2S2s3TGpJR3o2bUZvajQ1Wlo3Ri9qMXRqWE1oOGxyWUJsS2RYanpsRGNzMmhzOUo5dUFjeEtXalJYbXk4dUtDNFp1N01mVkswa2NEZnZ0QWZja25lblJnd2haRktwU0h5Nkg4ZklsMFduSFBiVVNONS9RMUlpazhrYWFDME1TYlI4S1Y0NnZoRWV2UWRQb2V4WDdDanBTalprRkFLU0YvMmt1RFh5R3N6THoyaE5Pa0cwaTFCbWt4aGpjNjMvQVFseUtpemszME1KQmZOUFZFNnk5cURFc2RYbUxNc291SDhwNzBIeUgvS29lbHlBa2krVWZkbEtRTmoxN0hvWUdTaW5Ra2JiMmlGV0c5TkRPV3dyajhaUXVYVGlOS1RYSk9ySDhsVDErMTY0RUdqWGU1K2Z6ZlVtQU0wQ0xSTVRSL05xNXpOVmdlOVBGL1ZQTmZVMGROVmNvTG1ZUDZEVFU1T3pnMGJzb3gxYThTZ25keEZSOWJTTlJ6Wm56UEdKbzZIS0djZmJWYVNVRlFDVGQ2VWJ6VGRjcExEVFFxdVp3UEZiZGRTb1lqZHNGdWtuUENFMlVwNnJrL2UxZGg5S3I4bWFFOEZZOENPbkJ1N0IxV2RQZHl1V2V6N3hQdHNoekFJd1Jla0lPbUcwb21TbGJ4dVh3MGI5V3RQQVhSTVRlUGdhYkR1OEJyejAvNHMwZW9CQ1I2Y3ZYaXdLQVg4REZJOXZ6NGZudXJOTGQ3aFpJa0N2QW5UM1J3L3RTdHNTKzhyRlVtRzAzaWFRbUpuM3lYYWladzFNU0hrUlZxV3REWjh6U0FrcnFvWUE3UTN1eVhkSk02TXFDWEViQ2ZnWGxnUDRDQThnTHI4dHZ3aDRuWEZtWVNhYUdsRU1ZQ2hoVnNQMFRvbnNneUdjNlpIckYra0gybERHU3F4TU5lQitRVE5zTkhnckVScmh4NjZ4T3lsc0laRXdMQ2V2bmZtUXAvQ0x6NE1jQ3QwRld6aG5KUTJOQWg4MTFtT3diNDJpM1hPam50a3RIVDJ0UU1RUUtCZ2RUbllqR1lLdzBCNDE0MXVlQk5hd0dhWjNsTGFYV1Q3WXVHUWFGS3BYZHprbWk1c09kalZSeVNralZwQTlZZEVhblNRNTY4NFNqTFozQnV0V05reElwM2VReTQzayt4b2toUHZ3alRWWXBHa2JiQkdvQ004eklCRHhlcTIyTDlBa2NOWVh1ekpheS9OZzNUdVhXV0tBdjArOHpLZENSdHZhSVZZYjAwTTViQ3VQeGxDRElnVkNqVkNIWGlicXN1UDdqS3lSejN0cjluQ1pJWCsrWUNBYStaZFhLMFAyZWcxdGxKemVXZzIwelVnRWpPa25zSUZrazJ1QmZMMlVFak54ZGxsRE9JUzc0R3I0QkhicVRGT3ZGQmExalpsUGJyZnh1TlkxcS9KelNkY1ZHOTIxZTQ3T3o4ckZEUHVWRTdOZnRhMm1EZlFsN00wSlRON1RpZUJZamRhQVhQUzlET1lPUHNPVldVbE8xUXhjZXR2NWd3Z0kwZ0lWaHBhWFRJNkF5QzJuWTR2TGhmaFVaV3Jia2U2c2FHditOK1FjckFTL1hxek5WTzE4bnRiZk11ZWxGaVNuVEZTaXJZQk55TmJKMnl0T2s1SHFNSHh2TzdjRHpNUTdFMnplSkhqOFJ5dlNCbXZUcTBqQmRMQmlJQWg3ZUoreDJKb0VXLzNDYnJUYmZPeVp6K0hGUHNPN2hzeVR6S2FyRHBEdndkNkdsT0tnWDJTVmwzU1RENGFMdVhkMHZOd1ZacUg2RWlScmw4YWhTekx3QURjWU1JVUJEUndlR1kzbG50bXZDWDIxd0tWdGRlQkdUb1RLUnpET0FSTmZwR05iRkJLMHJ3cVB3SzN1WTR0aVh6aG1teUpsRDZLMm9XVTRnOVhZVzgyQUJsazUyTWxPZVFZZDFoV0hyYXdwR3BiSENFYzRpcXM4TjJTZGFhNUI5cU40VFlCM1hOTnRpK3JOSXRHZzlPcGFzdTVvZmZDRkZJYk5abWpUYzlFbEs0TXduT1c5OUNHbTQwMk1hNC9lazBsVUhQa3JNOFVXNk5DQURJb3ZDMGttclZVb3huUzBIUXhzZmdXUUlsa05QRDlGVWZPNGlKZjJmM2lUZ3p0OWhFMk9nVDJDakt3S3A4SENqdWhjYTVGY3MxU2xEbGhTQUtlSE1IOXcyVWYvbjV1UTZuQjBXVVdDTnNSdjlETjBNV2ZDeFY3Rk54VWxhMndjUEliVXRZUk5qb0U5Z295c0NxZkJ3bzdvWEdnQ1pGbHFtNzh2dHFDYmVLMjhpWHpqRmN0KzQ4dDBrYzZiRWlxUDI4S25ZRjhuQVZuRlFJMk9JZVF2S2JJSEFzL1RYbHMyNjNRbGFqZEhVcE1LWk5rL0FCS0cvK3FrVzJkV1FFOVdtUENlUE92ZFZtQWFQTXgyeTdMbjNqMjdVVlJQbElwbmlPNnI2V1AyZFQ0YW1mcGE0RFQ5dzhEa3RIMGozOVphNUtiQmpxWVQzMDhFYVgyN3hSdS9xL05YY1hoa1hQOUlEWnlSU0NjdVpreGY2VFo0UUtwSG41dnpqb3VJYWNTUE1UdGFTdHB5RkR2TkdIVCt4VjZFWXVCcTVyL2dDZDZPaFNiTERLcUh6dmNCQ0RCTE0yT1A0L0VSMnNodjdHckwySWJzd0tYUVk1U1VJRTF4OW5lSDJyNUd4NDFQMGJmT1ZwbWxMdEJOTVJFUGxNNGpUME9Kak11aEQvT3VHMmg0OVF4ZUpxVUtxQ3FyVzhyQVdiS0lxRjdESHhEMWx6MHpObTRqRWZzUzYvWUxTbFRwNHIzYytGZWREdmFSaUdTaUxuR0U4N3E1YkVkd0s3WWJuVkJZTVg2YmRDSXNLOFEwN1FKa095Y1VNZm1kQ2txVmU5N1JhQ25sYWNIUWFnMDI0ZUZuV0hHRk8vcngvdFV2VVppYzJ3QnE2L3g2ajhBSjhEMmxuZ244WDdhYUFyOVFWc25USldZVmtzMGh0MzRTWU9NZWsvaW5DbU10RHNrU3JPNytXVEVmQ3VDS2tpcDdWR3o1MkpNcTJ2enptbXlLeW8ycWE4UmhVY2N5WGh5bThXR3g2b3UrK1NpSnF1NmZNenN3TUc0VHRYL2pMUmZYMjRUOGFvWXBaM285M2k5U3hrUW8wdDNPUTIwTkgrNGxvQnJXeWt3QVNHRnFXT1gvNTU1SG5vS2pHdWhjKzZiTVZGZy9qUzNwREpzWG4rZk11N2VpZEphdnlaNlVaamgwQThLTDVyN2p6QVhuV2U2RWk1LzRQNlZwT1VIWVhLQTVzckVjekZwSFVQOVJkVjNJdWlLNzZHUHE2cGo1TTVMaktkd041S0JOWHVsMGFnT2UycElJU2Ntc0hLUE1yYjFNNDJzRGxvUlFobmVwTmlvOEFSdjBZRDJROUdKUE9jQkhVNkVUSFdZejJJaXluOVBpalpSN1lTcDJwN3lpUUJOR3FqV1lHV3U2TE1sUUlkWVJDSjlwVFJ6eHVVOHJuenh4azhQUUNENXBETVJFQzRaZE1vU1hjbWNWY0h5TUNtQVVHbWlUUitPckFDckxwZ3lkdnRMK2tNSFV0Wkh2SDRNYVI3SXh2aUhGQUVRY3p2cUo2TFVrc2kxRWRPTE1JL1JzUGNOK1A1RXhNcjJ4azE3NlBzZC91ZGp1aDVTU1lzaGZkQ3Fma285Tnhhemk3eVlJNW9sR0VFNEtpWFVxVWtGZDNxd2t2SElWVUlhUDA3NVFUMnlYd1Zwc0xUSGFEeHo2RmUzbzBoNExrbGlPOGdHV2EvaXFrRC9Ebm04c3J5MGpXVm5QN0NKLzcxa2dCMVBaWHdwZ2EwMXJEZllhVlRNVnl4R1NJeXl2TFNOWldjL3NJbi92V1NBSFU5alNJakloUmtncHhUL0tNdjZpSDhsbFdISjF0ajgvUlRDRjBDbDJmNld3VGJGSlljTWFGbG5tTWlzMkFMVk9OUHM2VU12c08vUE93NUNjcjc5c0p6aWVXTE1WYU9WRzQvZTFWUFRTQXpZOUg4N09DSlhleCtpQU9vVytLQW5yaUJ6QVZCZEZ3eVVxSWVuTEpWc1JIN1Z2M05WNzNNcXJxbi9wa3pBWHRraVVBWHdwS21WemRiZU5MbGVib2tEa29tc3NyeTBqV1ZuUDdDSi83MWtnQjFQWTNtVFJtU3RTa0hieEEvRnRjZmhiMzM0Qm96MVl1WDQrWm5wQmxSU3d5VFRFMXVHTFlmZXBaYTBKOXBUYzhZL0diRTZ6WHVhK2ZkM09Za2s0Q3BZNWhJTlZBTkdiR01EMVlRbHBjby9yM0E2djhIN3NkTzVLN1NqWjhJVDVKU0xWc3BCRlUzeXlxalBjZFZHOWR5RC9McEd4YlcyN1FCby84dTJWaHBrbTlMY013M2g4aGlwNkN6QjZUbHB3VDFUNjdYSGtHejhVYTFDK1NML0VFemVxOUs5OFZUU1c0RlB5ZWNGWTdJVWM0MEFYUG1wcUtJcXRhN1NjakFZdkQ4aFpIM2QzVTFVNTMvU29jSkhLRGo0WnYxamJuRlRzam9kalYwZkhlWU9kdDUwUEZXY094WFlhejhqZ2dkbDA0QkVGRlVrMFNwZnYyenJkTjI1NUtGcjFtNGdVeHkzS2k3eUZBUGhkS3J5Q0ovaGpUUkpRY1REbmE2eVBTZnNlQ0R0b1JrbUd2MHlOZEUwYmk5YzRwV1BRZ3JWaTBRamR6SDI1WDBObkpBa2w1WVVpa1BsbEZaWGhuMmRRekxtTWpLUDJSSzZMS1JBNUFwSGdPWFpXbkd0MEFtY2ZVeXV0dzBHWVJHOWV3b0tBWVEzOEp0S3ZSc2RWSWk2RmM0TXlqZTJCYnd1TG90K2w2WXh4UDJGZWtVa2tpOThnYlFxMENscHZiaFoybjV2YzVxSVoxZnZiU050ZU5IaTJOc0RXK2hVWEU4T1loM0F4OXdBSzZCaE0wRGlueG82T1ZvejhhbHhxNDR0dHFraUFSN0c4SFh6bXVNTmpMcythOStRSTlxZTZEU2JBQlFqN1VGRWhQY1YxZS9nUFQvd1IvczVveVNTTHYzMzB0anJ6d283cGxMb3VuYy9zYTdVZUF4QmVyUVVxeTJBbDQxRGF3RkxlSyttYSthT01iT2VaOGRJQmJHWmpXUko2alhaSWVNNWRrV29hWTVjUlJjQ3AwOXFGbW1obC9jV3NRVjIvS2ZxL0RhMnUzOFNmWHJJMVZLMmVnN0MyT3ZrNVNTY3Nsc1JOUTBRZ290Qys0TUNVUkVNODlSZTdJQjkvaXdXdis3OXFJM1MvSG5LZnhydUZ2T1dONC93V0hSNjlvY2FoR3hPLzF0OXVaUXNLTDhOaDRtRitMQUZZamhaK1I0SXBCVnRlWHk2ZkdsVzhhUVExc3ptL1M5aUlrK2pZY2trU25vVmlZWnRtMnZHc1pWQ0lPY2wwdnJMSG1aTVZ5aS9HSjhUOWwvaVNRcSs5TkFEbVdTd1JzVzlqcktSMnV5d0dzOUJoRmVzYlY0WEpYRXZ4TU1Lakhwd2h0WkRRQUZLS0xmalU0bEx1UDFrRzFHejNmUWdWRzBDS2dRckd4d3lnOUpORng4bEswcGRFT08rRGFYelRySG9YeE0wYklzZmNMWUN3SzVsbElDS0FrOFpNVDZNdGFITXYweTdldk1qQlovMVlsdlE5ZWtMMGY2KzdoVzdiR1RoRU95N3g5SXl5YmJvOXhVOGtHUTBJd1N5c2JINzk5ZXlmS25sWlpYZFUvbng0V24xYTFDUHlnSzE0S3RpWFRkRkRRMkxnQ09uMnFvUFpmN050SUZ4ZEw2eWFlcCtDcXEydUVOb3BnMER6eFR6SGJxWDZEbWNQN1B5ZWpITk9WVWczd0RGMlJ3ZDNJa3lZQ3FnWm5ONkVyVzFWMjZvaWxGWXlYRlordjdFSEU4QjZNaExueHRMR2tSWlowK0ZGSTZLbitYb2U3TEwrMlphRG80L3l5bmtWUjdCRnVTcWh0S0x2empkYnlZb1Rvd2ltODVjNlJxL1JDWHR3ZzlSZzRxU0VSR2pqWnlGY0pRL1E2YUpidjBMcEV5Um4zcXBwNzV1VDN6Y2JUU1JSVFZqenZjdVhJRXJncjFEL1B1Z0ZtaE9XZS8ycEIxNWpVNDBpZSszYzg5b3lpYWVJTy81c2tkd1FQemc2L1lITlYvMXNWVmdPS2FXNEk3UUFrYVNPdGRWUG02SDZ3dmx5WEVDQU52aENNR2VsRkFlMWpXdmRCTXVuVlI4TjJSRlNBTzhNa0lKNm84THZVb3pLRGtNUUJ0NXAvY1dzUVYyL0tmcS9EYTJ1MzhTZlhENTJnS0Q2SDhYVktGZm1ESGFvU2hNc3J5MGpXVm5QN0NKLzcxa2dCMVBhbWIwcWFiVDgzRDZxbi9hM0dsSHlHeGFtWmdSSGFLMTZ2bVpFemFudVRET3pHMWFVcHZFQ3RSQjhFTWdhcGFRWExLOHRJMWxaeit3aWYrOVpJQWRUMjZ2RnBnYTBaUkxXUlAzakgwdHlyTllBNzVlQ1RmOWRJcWpZR2NBQTFyc1UwemVlcGRNWjhNSlhkNSt4YkFhWEEvdUpmc0dqUEk3cHNRYzhKbitmbTNNTGsrTkNFRjhMc1EwT3RnbElYTCs2M0ZSdnlHN25NY2V2SDRpL1hUMEIxQlhOUEw2cjhpNmJuYmUrUUpLWU1BOTNQZGJCY0RzR1RWYUxpSmxZZEVPVGZqWWJwTFVSQ2RseDlLL3B1RVhXK1xcXFxcXFwiKVxcXFxuXFxcXG5cXFxcbiAgICAgICAgICAgIGlmICh2LnZpZGVvcyAhPSAxKSB7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHJ1cmwgPSBwdXJsICsgJz9wPScgKyBwW2ldLnBhZ2U7XFxcXG4gICAgICAgICAgICB9IGVsc2Uge1xcXFxuICAgICAgICAgICAgICAgIHZhciBydXJsID0gcHVybFxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgdmFyIGRjID0gJChydXJsKS5sYXp5UnVsZSgoKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChcXFxcXFxcInZhciBjb25maWcgPVxcXFxcXFwiICsgZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL0R1YW5OaWFuL015UGFyc2UuanNvblxcXFxcXFwiKSk7XFxcXG4gICAgICAgICAgICAgICAgZXZhbChyZXF1ZXN0KGNvbmZpZy5zZXR0aW5ncy5jaikpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBheXRtUGFyc2UoaW5wdXQpO1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBwYXJ0LFxcXFxuICAgICAgICAgICAgICAgIHBpY191cmw6ICdodHRwczovL2dpdGVlLmNvbS9DaGVyaXNoUngvaW1hZ2V3YXJlaG91c2UvcmF3L21hc3Rlci9pbWFnZS8xMzA5NjcyNWZlNTZjZTljZjY0M2EwZTRjZDBjMTU5Yy5naWYnLFxcXFxuICAgICAgICAgICAgICAgIHVybDogLyptb2RlID09ICdYNScgPyAneDVSdWxlOi8vJyArIGp4ICsgcnVybCArICdAJyArIGxhenkgOiAoKi8gbW9kZSA9PSAn55u06ZO+JyA/IGxhenkxIDogbW9kZSA9PSAn5pat5o+SJyA/IGRjIDogcnVybCArIGxhenksXFxcXG4gICAgICAgICAgICAgICAgY29sX3R5cGU6IHYudmlkZW9zICE9IDEgPyB2LnZpZGVvcyA+PSA1ID8gJ3RleHRfNScgOiAndGV4dF9jZW50ZXJfMScgOiAnYXZhdGFyJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG5cXFxcblxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgY29sX3R5cGU6ICdsaW5lX2JsYW5rJ1xcXFxuICAgIH0pO1xcXFxuICAgIGlmIChnZXRWYXIoJ3JlcGx5X3R5cGUnKSA9PT0gJ+W8gOWQrycpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOivhOiuuuWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfor4TorronID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfor4TorronPyflhbPpl60nOifor4TorronKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+ivhOiuuicpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAnPHN0cm9uZz4nICsgJ+KAnOKAnOaOqOiNkOWMuuKAneKAnScgKyAoZ2V0VmFyKCdsYWJlbCcpID09ICfmjqjojZAnID8gJ+KAnOKAnCDiipnigJ3igJ0nIDogJ+KAnOKAnCDiipXigJ3igJ0nKSArICc8L3N0cm9uZz4nLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignbGFiZWwnLCBnZXRWYXIoJ2xhYmVsJyk9PSfmjqjojZAnPyflhbPpl60nOifmjqjojZAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovLycrZ2V0VmFyKCdsYWJlbCcsJ+aOqOiNkCcpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICAgICAgfSk7XFxcXG5cXFxcblxcXFxuICAgICAgICBpZiAoZ2V0VmFyKFxcXFxcXFwibGFiZWxcXFxcXFxcIikgPT0gJ+ivhOiuuicpIHtcXFxcbiAgICAgICAgICAgIHZhciByZWx5ID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjIvcmVwbHkvbWFpbj9vaWQ9JyArIHYuYWlkICsgJyZ0eXBlPTEnLCB7fSkpO1xcXFxuICAgICAgICAgICAgdmFyIGNvdW50cyA9IHJlbHlbJ2RhdGEnXVsnY3Vyc29yJ11bJ2FsbF9jb3VudCddO1xcXFxuICAgICAgICAgICAgdmFyIHJlcGxpZXMgPSByZWx5LmRhdGEucmVwbGllcztcXFxcbiAgICAgICAgICAgIGZvciAodmFyIHggaW4gcmVwbGllcykge1xcXFxuICAgICAgICAgICAgICAgIHZhciByZXBsaWVzeCA9IHJlcGxpZXNbeF07XFxcXG4gICAgICAgICAgICAgICAgdmFyIG1lc3NhZ2UgPSByZXBsaWVzW3hdLmNvbnRlbnQubWVzc2FnZTtcXFxcbiAgICAgICAgICAgICAgICB2YXIgbWVtYmVyID0gcmVwbGllc1t4XS5tZW1iZXI7XFxcXG4gICAgICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdGl0bGU6IG1lbWJlci51bmFtZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiBtZW1iZXIuYXZhdGFyLFxcXFxuICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ2F2YXRhcidcXFxcbiAgICAgICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD48c3Ryb25nPicgKyBtZXNzYWdlICsgJzwvc3Ryb25nPjwvc21hbGw+JyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgdmFyIHJlcGx5ID0gcmVwbGllc1t4XS5yZXBsaWVzO1xcXFxuICAgICAgICAgICAgICAgIGZvciAodmFyIHogaW4gcmVwbHkpIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1lc3MgPSByZXBseVt6XS5jb250ZW50Lm1lc3NhZ2U7XFxcXG4gICAgICAgICAgICAgICAgICAgIHZhciBtZW0gPSByZXBseVt6XS5tZW1iZXIudW5hbWU7XFxcXG4gICAgICAgICAgICAgICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJzxzbWFsbD4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsnICsgbWVtICsgJzonICsgbWVzcyArICc8L3NtYWxsPicsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICAgICAgICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICAgICAgaWYgKGdldFZhcihcXFxcXFxcImxhYmVsXFxcXFxcXCIpID09ICfmjqjojZAnKSB7XFxcXG4gICAgICAgICAgICBmb3IgKHZhciByIGluIHJlbGF0ZWQpIHtcXFxcbiAgICAgICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgICAgICB0aXRsZTogcmVsYXRlZFtyXS50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgaW1nOiByZWxhdGVkW3JdLnBpYyxcXFxcbiAgICAgICAgICAgICAgICAgICAgZGVzYzogcmVsYXRlZFtyXS5kZXNjLFxcXFxuICAgICAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD1odHRwczovL2FwaS5iaWxpYmlsaS5jb20veC93ZWItaW50ZXJmYWNlL3ZpZXcvZGV0YWls77yf77yfYWlkPe+8hu+8hmJ2aWQ9JyArIHJlbGF0ZWRbcl0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8yJ1xcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9XFxcXG4gICAgfVxcXFxufSBjYXRjaCAoZSkge31cXFxcblxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLeWFs+azqDFcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZ3oxXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIHJlcyA9IHt9O3ZhciBkID0gW107XFxcXG52YXIgaWQgPSBNWV9VUkwuc3BsaXQoJ21pZD0nKVsxXTtcXFxcbnZhciBzdXJsID0gTVlfVVJMO1xcXFxudmFyIGNvZGUgPSBmZXRjaChzdXJsLHt9KTtcXFxcbnZhciB5bSA9IEpTT04ucGFyc2UoJ3tcXFxcXFxcIm15Jytjb2RlLnNwbGl0KCd7XFxcXFxcXCJteScpWzFdLnNwbGl0KCd9fTsnKVswXSsnfX0nKTtcXFxcblxcXFxudmFyIGVwID0geW1bJ2xpc3QnXVsnZ2V0Rm9sbG93TGlzdC1wYWdlLW1pZC0nK2lkXVsncmVzdWx0J107XFxcXG5mb3IgKCB4IGluIGVwKXtcXFxcbiAgdmFyIHl1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaO+8n++8n21pZD0nK2VwW3hdLm1pZCsn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlJztcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgIHRpdGxlOmVwW3hdLnVuYW1lLFxcXFxuICAgICAgIGltZzplcFt4XS5mYWNlLFxcXFxuICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2d6Mj91cmw9Jyt5dXJsLFxcXFxuICAgICAgIGNvbF90eXBlOidpY29uX3JvdW5kXzQnXFxcXG4gICAgICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5YWz5rOoMlxcXCIsXFxcInBhdGhcXFwiOlxcXCJnejJcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXFxcbmNvbnN0IGhlYWRDb2xvcj1cXFxcXFxcIiMzNThjY2RcXFxcXFxcIjtcXFxcbnZhciBqc29uID0ge307XFxcXG5ldmFsKCdqc29uPScgKyBmZXRjaChNWV9VUkwse30pKTtcXFxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxcXG57XFxcXG4gdmFyIHIgPSB7fTtcXFxcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcXFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXFxcbiBcXFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcXFxuIC8qXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG4gICAgIHZhciBzc3MgPSBuZXcgRGF0ZShwYXJzZUludChuUykpLnRvTG9jYWxlU3RyaW5nKCkuc3Vic3RyKDAsMTcpO1xcXFxuICAgICB2YXIgWU1EID0gc3NzLnNwbGl0KCfml6UnKVswXS5yZXBsYWNlKCflubQnLCctJykucmVwbGFjZSgn5pyIJywnLScpO1xcXFxuICAgICByZXR1cm4gKFlNRClcXFxcbn1cXFxcbiovXFxcXG5mdW5jdGlvbiBnZXRMb2NhbFRpbWUoblMpIHsgXFxcXG52YXIgZGF0ZSA9IG5ldyBEYXRlKG5TKTtcXFxcbnZhciBZWSA9IGRhdGUuZ2V0RnVsbFllYXIoKSsnLSc7IFxcXFxudmFyIE1NID0gKGRhdGUuZ2V0TW9udGgoKSArIDEgPCAxMCA/ICcwJyArIChkYXRlLmdldE1vbnRoKCkgKyAxKSA6IGRhdGUuZ2V0TW9udGgoKSArIDEpKyctJzsgXFxcXG52YXIgREQgPSAoZGF0ZS5nZXREYXRlKCkgPCAxMCA/ICcwJyArIChkYXRlLmdldERhdGUoKSkgOiBkYXRlLmdldERhdGUoKSk7IFxcXFxudmFyIHRpbWUgPSBZWSArIE1NICsgREQ7XFxcXG5yZXR1cm4gdGltZVxcXFxufVxcXFxuLy/ml7bpl7TmiLPovazmjaJcXFxcbnZhciB0aW1lID0gZ2V0TG9jYWxUaW1lKHQpO1xcXFxuXFxcXG5pZiAoai5wbGF5PjEwMDAwKVxcXFxuICAgIHZhciBwbGF5ID0gKGoucGxheS8xMDAwMCkudG9GaXhlZCgxKSsn5LiHJztcXFxcbmVsc2VcXFxcbiAgICB2YXIgcGxheSA9IGoucGxheTtcXFxcblxcXFxudmFyIHBpY3MgPSAoai5waWMuaW5kZXhPZignOicpIT0tMSk/ai5waWM6J2h0dHBzOicgKyBqLnBpYztcXFxcblxcXFxuIGlmIChqLmxlbmd0aCE9XFxcXFxcXCIwMDowMFxcXFxcXFwiKXtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICBwaWNfdXJsIDogcGljcyxcXFxcbiAgICAgdXJsIDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgai5idmlkKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgdGl0bGUgOiBqLnRpdGxlLFxcXFxuICAgICBjb2xfdHlwZSA6ICdtb3ZpZV8xX2xlZnRfcGljJyxcXFxcbiAgICAgZGVzYyA6ICfml7bplb/vvJonICsgai5sZW5ndGggKyAnICDmkq3mlL7ph4/vvJonICsgcGxheSArICcgIOaXpeacn++8micgKyB0aW1lXFxcXG4gICAgXFxcXG4gICAgfSk7XFxcXG59XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggeWdly3mkJzntKLkuIDnuqdcXFwiLFxcXCJwYXRoXFxcIjpcXFwic1xcXCIsXFxcInJ1bGVcXFwiOlxcXCJ0cnkge1xcXFxuICAgIHZhciByZXMgPSB7fTtcXFxcbiAgICB2YXIgZCA9IFtdO1xcXFxuICAgIHZhciBjb2RlID0gZ2V0UmVzQ29kZSgpO1xcXFxuICAgIHZhciB4cyA9IEpTT04ucGFyc2UoY29kZS5zcGxpdCgndmlkZW9cXFxcXFxcIixcXFxcXFxcImRhdGFcXFxcXFxcIjonKVsxXS5zcGxpdCgnfV0nKVswXSArICd9XScpO1xcXFxuICAgIC8vaWYoTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdPT0nMSZwYWdlc2l6ZT0yMCcpe1xcXFxuICAgIHZhciBwYWdlID0gTVlfVVJMLnNwbGl0KCdwYWdlPScpWzFdLnNwbGl0KCcmcGFnZXNpemU9JylbMF07XFxcXG4gICAgdHJ5IHtcXFxcbiAgICAgICAgdmFyIHcgPVxcXFxuICAgICAgICAgICAgSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS9zZWFyY2gvdHlwZT9rZXl3b3JkPScgKyBNWV9VUkwuc3BsaXQoJ2tleXdvcmQ9JylbMV0uc3BsaXQoJyYnKVswXSArICcmcGFnZT0nICsgcGFnZSArICcmc2VhcmNoX3R5cGU9YmlsaV91c2VyJm9yZGVyPXRvdGFscmFuayZwYWdlc2l6ZT0yMCcsIHt9KSkuZGF0YS5yZXN1bHQ7XFxcXG4gICAgICAgIGZvciAoaWkgPSAwOyBpaSA8IHcubGVuZ3RoICYmIGlpIDwgMjsgaWkrKykge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ3Vw77yaJyArIHdbaWldLnVuYW1lLFxcXFxuICAgICAgICAgICAgICAgIGltZzogJ2h0dHBzOicgKyB3W2lpXS51cGljLFxcXFxuICAgICAgICAgICAgICAgIGRlc2M6ICflhbPms6jvvJonICsgd1tpaV0uZmFucyxcXFxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn6KeG6aKR5pWw77yaJyArIHdbaWldLnZpZGVvcyxcXFxcbiAgICAgICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2Uvc3M/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3NwYWNlL2FyYy9zZWFyY2jvvJ/vvJ9taWQ9JyArIHdbaWldLm1pZCArICfvvIbvvIZwcz0zMO+8hu+8hnRpZD0w77yG77yGa2V5d29yZD3vvIbvvIZqc29ucD1qc29ucO+8hu+8hnBuPWZ5cGFnZe+8hu+8hm9yZGVyPXB1YmRhdGUjJyArIHdbaWldLnVuYW1lICsgJyMnLFxcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgIH1cXFxcbiAgICB9IGNhdGNoIChlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+KAmOKAmOaJvuS4jeWIsOS9oOaDs+imgeeahOWViu+8jOimgeS4jeaNouS4quWFs+mUruivje+8n+KAmeKAmScsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICB2YXIgZmFuID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9iYW5ndW1pXFxcXFxcXCIsXFxcXFxcXCJkYXRhXFxcXFxcXCI6JylbMV0uc3BsaXQoJ30se1xcXFxcXFwicmVzdWx0X3R5cGUnKVswXSk7XFxcXG4gICAgZm9yICh4IGluIGZhbikge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGZhblt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgaW1nOiBmYW5beF0uY292ZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiBmYW5beF0uZGVzYyxcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IGZhblt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhblt4XS5nb3RvX3VybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuICAgIHZhciBmYW4yID0gSlNPTi5wYXJzZShjb2RlLnNwbGl0KCdtZWRpYV9mdFxcXFxcXFwiLFxcXFxcXFwiZGF0YVxcXFxcXFwiOicpWzFdLnNwbGl0KCd9LHtcXFxcXFxcInJlc3VsdF90eXBlJylbMF0pO1xcXFxuICAgIGZvciAoeCBpbiBmYW4yKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogZmFuMlt4XS50aXRsZS5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgaW1nOiBmYW4yW3hdLmNvdmVyLFxcXFxuICAgICAgICAgICAgZGVzYzogZmFuMlt4XS5kZXNjLFxcXFxuICAgICAgICAgICAgY29udGVudDogZmFuMlt4XS5jdi5yZXBsYWNlKC88ZW0gY2xhc3M9XFxcXFxcXCJrZXl3b3JkXFxcXFxcXCI+fDxcXFxcXFxcXC9lbT4vZywgJycpLFxcXFxuICAgICAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JyArIGZhbjJbeF0uZ290b191cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfbGVmdF9waWMnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICAvL31cXFxcblxcXFxuICAgIGZvciAoeCBpbiB4cykge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHhzW3hdLnRpdGxlLnJlcGxhY2UoLzxlbSBjbGFzcz1cXFxcXFxcImtleXdvcmRcXFxcXFxcIj58PFxcXFxcXFxcL2VtPi9nLCAnJyksXFxcXG4gICAgICAgICAgICBpbWc6ICdodHRwOicgKyB4c1t4XS5waWMsXFxcXG4gICAgICAgICAgICBkZXNjOiB4c1t4XS5kZXNjcmlwdGlvbixcXFxcbiAgICAgICAgICAgIGNvbnRlbnQ6IHhzW3hdLmF1dGhvcixcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nICsgeHNbeF0uYnZpZCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMV9sZWZ0X3BpYydcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxuXFxcXG4gICAgcmVzLmRhdGEgPSBkO1xcXFxuICAgIHNldFJlc3VsdChyZXMpO1xcXFxufSBjYXRjaCAoZSkge1xcXFxuICAgIHZhciByZXMgPSB7fTtcXFxcbiAgICB2YXIgZCA9IFtdO1xcXFxuICAgIHZhciBrZXl3b3JkID0gTVlfVVJMLnNwbGl0KCdrZXl3b3JkPScpWzFdLnNwbGl0KCcmcGFnZT0nKVswXTtcXFxcbiAgICB2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L3YyL3NlYXJjaC90eXBlP2FwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYyNzAyMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD14aWFvbWkmaGlnaGxpZ2h0PTEma2V5d29yZD0nICsga2V5d29yZCArICcmbW9iaV9hcHA9YW5kcm9pZCZvcmRlcj10b3RhbHJhbmsmcGxhdGZvcm09YW5kcm9pZCZwbj0xJnBzPTIwJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMjcuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0xNjIzMDc2MTQwJnR5cGU9MiZ1c2VyX3R5cGU9MCZzaWduPTUwNjYyMTZmZWJiMjhhNjE5ODEyZTg4ZTVmZjFhMDM0JztcXFxcbiAgICB2YXIgY29kZSA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwsIHt9KSk7XFxcXG4gICAgdmFyIGxpc3QgPSBjb2RlLmRhdGEuaXRlbXM7XFxcXG4gICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXFxcbiAgICAgICAgICAgIGltZzogeC5jb3ZlcixcXFxcbiAgICAgICAgICAgIGRlc2M6IHguc2lnbixcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9zcz91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYXJjL3NlYXJjaD9taWQ9JyArIHgucGFyYW0gKyAn77yG77yGcHM9MzDvvIbvvIZ0aWQ9MO+8hu+8hmtleXdvcmQ977yG77yGanNvbnA9anNvbnDvvIbvvIZwbj1meXBhZ2XvvIbvvIZvcmRlcj1wdWJkYXRlIycgKyB4LnRpdGxlICsgJyMnICsgZ2V0VmFyKCd1YScpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8xX2xlZnRfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG4gICAgc2V0UmVzdWx0KGQpO1xcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8xX3ZlcnRpY2FsX3BpY1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5pCc57Si5LqM57qnXFxcIixcXFwicGF0aFxcXCI6XFxcInNzXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxudmFyIGpzb24gPSB7fTtcXFxcbmV2YWwoJ2pzb249JyArIGdldFJlc0NvZGUoKSk7XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxuaWYgKE1ZX1VSTC5pbmRleE9mKCdwbj0xJicpIT0tMSl7XFxcXG5kLnB1c2goe1xcXFxudGl0bGU6J+KAnOKAnOWFs+azqOKAneKAnScsXFxcXG51cmw6J2hpa2VyOi8vZW1wdHkjJytNWV9VUkwuc3BsaXQoJyMnKVsxXSsnJiYnK01ZX1VSTC5zcGxpdCgnbWlkPScpWzFdLnNwbGl0KCcmJylbMF0rYEBsYXp5UnVsZT0uanM6aW5wdXQ9aW5wdXQuc3BsaXQoJyMnKVsxXTt2YXIgcGljID0gSlNPTi5wYXJzZShmZXRjaCgnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvc3BhY2UvYWNjL2luZm8/bWlkPScraW5wdXQuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVsxXSsnJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtpZighZ2V0VmFyKCdsYjInKS5pbmNsdWRlcyhpbnB1dC5zcGxpdCgnJiYnKVsxXS5zcGxpdCgnJiYnKVswXSkpe3ZhciB4cj1nZXRWYXIoJ2xiMicpKydcXFxcXFxcXFxcXFxcXFxcbicraW5wdXQrJyMjJytwaWM7d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLHhyKTsndG9hc3Q6Ly/lhbPms6jmiJDlip8nfWVsc2V7J3RvYXN0Oi8v5bm06L275Lq677yM6ICX5a2Q5bC+5rGBJ31gLFxcXFxuY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxufSk7XFxcXG59XFxcXG5cXFxcbmZvciAodmFyIGkgPSAwOyBpIDwganNvbi5kYXRhLmxpc3Qudmxpc3QubGVuZ3RoOyBpKyspXFxcXG57XFxcXG4gdmFyIHIgPSB7fTtcXFxcbiB2YXIgaiA9IGpzb24uZGF0YS5saXN0LnZsaXN0W2ldO1xcXFxuIHZhciB0ID0gTnVtYmVyKGouY3JlYXRlZCkqMTAwMDtcXFxcbiBcXFxcbiAvL+aXtumXtOaIs+i9rOaNouaWueazlVxcXFxuZnVuY3Rpb24gZ2V0TG9jYWxUaW1lKG5TKSB7IFxcXFxuICAgICB2YXIgc3NzID0gbmV3IERhdGUocGFyc2VJbnQoblMpKS50b0xvY2FsZVN0cmluZygpLnN1YnN0cigwLDE3KTtcXFxcbiAgICAgdmFyIFlNRCA9IHNzcy5zcGxpdCgn5pelJylbMF0ucmVwbGFjZSgn5bm0JywnLScpLnJlcGxhY2UoJ+aciCcsJy0nKTtcXFxcbiAgICAgcmV0dXJuIChZTUQpXFxcXG59XFxcXG5cXFxcbi8v5pe26Ze05oiz6L2s5o2iXFxcXG52YXIgdGltZSA9IGdldExvY2FsVGltZSh0KTtcXFxcblxcXFxuaWYgKGoucGxheT4xMDAwMClcXFxcbiAgICB2YXIgcGxheSA9IChqLnBsYXkvMTAwMDApLnRvRml4ZWQoMSkrJ+S4hyc7XFxcXG5lbHNlXFxcXG4gICAgdmFyIHBsYXkgPSBqLnBsYXk7XFxcXG5cXFxcbnZhciBwaWNzID0gKGoucGljLmluZGV4T2YoJzonKSE9LTEpP2oucGljOidodHRwczonICsgai5waWM7XFxcXG5cXFxcbiByLnBpY191cmwgPSBwaWNzO1xcXFxuIHIudXJsID0gJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ977yG77yGYnZpZD0nK2ouYnZpZCsnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgXFxcXG5cXFxcbiByLnRpdGxlID0gai50aXRsZTtcXFxcbiByLmRlc2MgPSAn5pe26ZW/77yaJyArIGoubGVuZ3RoICsgJyAg5pKt5pS+6YeP77yaJyArIHBsYXkgKyAnICDml6XmnJ/vvJonICsgdGltZTtcXFxcbiBpZiAoai5sZW5ndGghPVxcXFxcXFwiMDA6MDBcXFxcXFxcIil7ZC5wdXNoKHIpfTtcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldFJlc3VsdChyZXMpXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLemihOWkhOeQhlxcXCIsXFxcInBhdGhcXFwiOlxcXCJ5Y2xcXFwiLFxcXCJydWxlXFxcIjpcXFwicHV0VmFyMigndWEnLCc7Z2V0O3V0Zi04O3tVc2VyLUFnZW50QE1vemlsbGEvNS4wIChMaW51eO+8m++8myBBbmRyb2lkIDcuMO+8m++8myB3diBsaXRlIGJhaWR1Ym94YXBwKSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvNzguMC4zOTA0Ljk2IE1vYmlsZSBTYWZhcmkvNTM3LjM2IFQ3LzEwLjMgU2VhcmNoQ3JhZnQvMi42LjIgKEJhaWR177yb77ybIFAxIDcuMCl9Jyk7XFxcXG5cXFxcbnB1dFZhcigna2V5JyxmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnKSk7XFxcXG5cXFxcbnB1dFZhcignWDUnLFxcXFxcXFwiQGxhenlSdWxlPS5qczp2YXIganggPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0Jyx7fSk7cmVmcmVzaFg1V2ViVmlldyhqeCtpbnB1dCk7J3RvYXN0Oi8v5pKt5pS+5LitJ1xcXFxcXFwiKTtcXFxcblxcXFxuaWYgKCFmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnKSkge1xcXFxuICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7XFxcXG4gICB9XFxcXG5cXFxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/mlLbol48udHh0JykpIHtcXFxcbiAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCfop4bpopEnKTtcXFxcbiAgIH1cXFxcblxcXFxuaWYgKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9qcy91cC5qc1xcXFxcXFwiLCB7fSk9PScnKXtcXFxcbiAgICBpZiAoZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXAudHh0XFxcXFxcXCIsIHt9KSE9Jycpe1xcXFxuICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIixmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cC50eHRcXFxcXFxcIiwge30pKTtcXFxcbiAgICB9XFxcXG4gICAgZWxzZXtcXFxcbiAgICAgIHZhciBwaWMgPSBKU09OLnBhcnNlKGZldGNoKCdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC9zcGFjZS9hY2MvaW5mbz9taWQ9MTAzMjU2ODgwJmpzb25wPWpzb25wJyx7fSkpLmRhdGEuZmFjZTtcXFxcbiAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvanMvdXAuanNcXFxcXFxcIiwgXFxcXFxcXCLljJfln44mJjEwMzI1Njg4MCMjXFxcXFxcXCIrcGljKTtcXFxcbiAgICAgIH1cXFxcbn1cXFxcblxcXFxuaWYgKCFmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFxcXFxcIiwge30pKSB7XFxcXG4gIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9jYWNoZS50eHRcXFxcXFxcIiwgXFxcXFxcXCIxMDMyNTY4ODBcXFxcXFxcIik7XFxcXG59XFxcXG5cXFxcbnB1dFZhcjIoJ2xiMicsZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2pzL3VwLmpzXFxcXFxcXCIse30pKTtcXFxcblxcXFxuLypcXFxcbnB1dFZhcihcXFxcXFxcIuino+aekOWPo1xcXFxcXFwiLGBoaWtlcjovL2VtcHR5I25vSGlzdG9yeSNAcnVsZT1qczp2YXIgZCA9IFtdO2QucHVzaCh7ZGVzYzogJzIwMCcsdXJsOiAnZmlsZTovLy9zdG9yYWdlL2VtdWxhdGVkLzAvQW5kcm9pZC9kYXRhL2NvbS5leGFtcGxlLmhpa2Vydmlldy9maWxlcy9Eb2N1bWVudHMvYmlsaS91cGp4Lmh0bWwnLGNvbF90eXBlOiAneDVfd2Vidmlld19zaW5nbGUnfSk7dmFyIHRpdGxlcyA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIHt9KS5zcGxpdCgvXFxcXFxcXFxcXFxcXFxcXG4vKTtmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXt2YXIgdCA9IHRpdGxlc1tpXS5zcGxpdChcXFxcXFxcIiYmXFxcXFxcXCIpO2QucHVzaCh7dGl0bGU6ZmV0Y2goXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBfanhjYWNoZS50eHRcXFxcXFxcIix7fSkgPT0gdFsxXSA/IHRbMF0gKyBcXFxcXFxcIuKAmOKAmO+8iOW9k+WJje+8ieKAmeKAmVxcXFxcXFwiIDogdFswXSxkZXNjOnRbMV0sdXJsOnRbMV0gKyAnQGxhenlSdWxlPS5qczpwdXRWYXIyKFxcXFxcXFwidWlkXFxcXFxcXCIsaW5wdXQpO3dyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cF9qeGNhY2hlLnR4dFxcXFxcXFwiLGlucHV0KTtiYWNrKCk7XFxcXFxcXCJ0b2FzdDovL+S/ruaUueaIkOWKn1xcXFxcXFwiJyxjb2xfdHlwZTogJ3RleHRfMSd9KTt9c2V0UmVzdWx0KGQpO2ApO1xcXFxuXFxcXG5pZiAoIWZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIHt9KSkge1xcXFxuICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC50eHRcXFxcXFxcIiwgXFxcXFxcXCLlhajnvZFWSVAmJmh0dHBzOi8vanh4LnNteXM4LmNuL2luZGV4LnBocD91cmw9XFxcXFxcXFxu5Yqg6YCfJiZodHRwczovL3d3dy5jdWFuLmxhL20zdTgucGhwP3VybD1cXFxcXFxcIik7XFxcXG59XFxcXG5cXFxcblxcXFxubGV0IGxvY2FsSHRtbDIgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvYmlsaS91cGp4Lmh0bWxcXFxcXFxcIiwge30pO1xcXFxubGV0IGdpdEh0bWwyID0gZmV0Y2goXFxcXFxcXCJodHRwczovL2Nkbi5qc2RlbGl2ci5uZXQvZ2gvWnJ1aXJ5L2hpa2Vydmlldy9odG1sL2ppZXhpLmh0bWxcXFxcXFxcIiwge30pLnJlcGxhY2UoL2ppZXhpXFxcXFxcXFwvamlleGkvZyxcXFxcXFxcImJpbGkvdXBqeFxcXFxcXFwiKTtcXFxcbmlmICghbG9jYWxIdG1sMikge1xcXFxuICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkvdXBqeC5odG1sXFxcXFxcXCIsIGdpdEh0bWwyKTtcXFxcbiAgdmFyIHRpdGxlcyA9IGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwangudHh0XFxcXFxcXCIsIHt9KTtcXFxcbiAgdmFyIHQgPSB0aXRsZXMuc3BsaXQoXFxcXFxcXCImJlxcXFxcXFwiKVsxXTtcXFxcbiAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL3VwX2p4Y2FjaGUudHh0XFxcXFxcXCIsdCk7XFxcXG59XFxcXG4qL1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mjqjojZBcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZmVlZFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgdXJsID0gJ2h0dHBzOi8vYXBwLmJpbGliaWxpLmNvbS94L2ludGwvZmVlZC9pbmRleD9hY2Nlc3Nfa2V5PScgKyBnZXRWYXIoXFxcXFxcXCJhY2Nlc3Nfa2V5XFxcXFxcXCIpICsgJyZhdXRvcGxheV9jYXJkPTImYnVpbGQ9NjIyNTMwMCZjX2xvY2FsZT16aF9DTiZjaGFubmVsPW1hc3RlciZjb2x1bW49MiZkZXZpY2VfbmFtZT0mZGV2aWNlX3R5cGU9MCZmbHVzaD04JmZudmFsPTQ2NCZmbnZlcj0wJmZvcmNlX2hvc3Q9MCZmb3Vyaz0xJmd1aWRhbmNlPTAmaHR0cHNfdXJsX3JlcT0wJm1vYmlfYXBwPWFuZHJvaWQmbmV0d29yaz13aWZpJnBsYXRmb3JtPWFuZHJvaWQmcGxheWVyX25ldD0xJnB1bGw9ZmFsc2UmcW49ODAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4yMi41JTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdEJztcXFxcbnZhciBsaXN0ID0gSlNPTi5wYXJzZShyZXF1ZXN0KHVybCwge30pKS5kYXRhLml0ZW1zO1xcXFxuZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxcXG4gICAgdmFyIHVybCA9IHguZ290byA9PSBcXFxcXFxcImJhbmd1bWlcXFxcXFxcIiA/IFxcXFxcXFwiaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9XFxcXFxcXCIgKyB4LnVyaS5zcGxpdChcXFxcXFxcIj9cXFxcXFxcIilbMF0gKyAnI2ltbWVyc2l2ZVRoZW1lIycgOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3dlYi1pbnRlcmZhY2Uvdmlldy9kZXRhaWzvvJ/vvJ9haWQ9XFxcXFxcXCIgKyB4LnBhcmFtICsgXFxcXFxcXCLvvIbvvIZidmlkPVxcXFxcXFwiICsgJyNpbW1lcnNpdmVUaGVtZSMnO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB4LmdvdG8gPT0gXFxcXFxcXCJiYW5ndW1pXFxcXFxcXCIgPyBcXFxcXFxcIvCfkrBcXFxcXFxcIiArIHgudGl0bGUgOiB4LnRpdGxlLFxcXFxuICAgICAgICBkZXNjOiB4LmNvdmVyX2xlZnRfMV9jb250ZW50X2Rlc2NyaXB0aW9uICsgXFxcXFxcXCIgXFxcXFxcXCIgKyB4LmNvdmVyX2xlZnRfMl9jb250ZW50X2Rlc2NyaXB0aW9uICsgXFxcXFxcXCIgIFxcXFxcXFwiICsgeC5jb3Zlcl9yaWdodF90ZXh0LFxcXFxuICAgICAgICBwaWM6IHguY292ZXIgKyBcXFxcXFxcIkBSZWZlcmVyPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiB1cmwsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnbW92aWVfMidcXFxcbiAgICB9KTtcXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5paw55WqXFxcIixcXFwicGF0aFxcXCI6XFxcIm5ld2JnbVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV09PScxJykge1xcXFxuXFxcXG4gICAgbGV0IHVybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC90aW1lbGluZT9hY2Nlc3Nfa2V5PSZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJmZpbHRlcl90eXBlPTAmbW9iaV9hcHA9YW5kcm9pZCZuaWdodF9tb2RlPTAmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9MTYzNTk1Mjg0MCZzaWduPTZlNGRmNDU0MmQzOGVlZTJmYWJmMjEyODg1YjkwYzY0JztcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICB2YXIgc291cmNlX2NvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsLCB7fSkpO1xcXFxuICAgICAgICB2YXIgZGF0ZWxpbmUgPSBbe1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzRdLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi5YmN5pelXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IFxcXFxcXFwiMFxcXFxcXFwiXFxcXG4gICAgICAgIH0se1xcXFxuICAgICAgICAgICAgXFxcXFxcXCJjb2RlXFxcXFxcXCI6IHNvdXJjZV9jb2RlLnJlc3VsdC5kYXRhWzVdLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi5pio5pelXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBcXFxcXFxcImlkXFxcXFxcXCI6IFxcXFxcXFwiMVxcXFxcXFwiXFxcXG4gICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiY29kZVxcXFxcXFwiOiBzb3VyY2VfY29kZS5yZXN1bHQuZGF0YVs2XSxcXFxcbiAgICAgICAgICAgIFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIuS7iuaXpVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgXFxcXFxcXCJpZFxcXFxcXFwiOiBcXFxcXFxcIjJcXFxcXFxcIlxcXFxuICAgICAgICB9LCB7XFxcXG4gICAgICAgICAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbN10sXFxcXG4gICAgICAgICAgICBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLmmI7ml6VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogXFxcXFxcXCIzXFxcXFxcXCJcXFxcbiAgICAgICAgfSx7XFxcXG4gICAgICAgICAgICBcXFxcXFxcImNvZGVcXFxcXFxcIjogc291cmNlX2NvZGUucmVzdWx0LmRhdGFbOF0sXFxcXG4gICAgICAgICAgICBcXFxcXFxcIm5hbWVcXFxcXFxcIjogXFxcXFxcXCLlkI7ml6VcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiaWRcXFxcXFxcIjogXFxcXFxcXCI0XFxcXFxcXCJcXFxcbiAgICAgICAgfV07XFxcXG4gICAgICAgIGlmICghZ2V0VmFyKCdpZCcpKSB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoJ2lkJywgJzInKTtcXFxcbiAgICAgICAgfVxcXFxuICAgICAgICBsZXQgaWQgPSBnZXRWYXIoJ2lkJyk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzAnID8gZ2V0SGVhZCgn5YmN5pelJykgOiAn5YmN5pelJyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzAnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICcxJyA/IGdldEhlYWQoJ+aYqOaXpScpIDogJ+aYqOaXpScsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICcxJyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBpZCA9PSAnMicgPyBnZXRIZWFkKCfku4rml6UnKSA6ICfku4rml6UnLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignaWQnLCAnMicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8vc3VjY2VzcyEnXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogaWQgPT0gJzMnID8gZ2V0SGVhZCgn5piO5pelJykgOiAn5piO5pelJyxcXFxcbiAgICAgICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoJ2lkJywgJzMnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL3N1Y2Nlc3MhJ1xcXFxcXFwiLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IGlkID09ICc0JyA/IGdldEhlYWQoJ+WQjuaXpScpIDogJ+WQjuaXpScsXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdpZCcsICc0Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly9zdWNjZXNzISdcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgbGV0IGxpc3QgPSBkYXRlbGluZVtpZF0uY29kZS5lcGlzb2RlcztcXFxcbiAgICAgICAgZm9yIChsZXQgeCBvZiBsaXN0KSB7XFxcXG4gICAgICAgICAgICBsZXQgdHlwZSA9ICh4LnB1Ymxpc2hlZCA9PSAnMScgPyAn5bey5Y+R5biDJyA6ICfmnKrlj5HluIMnKTtcXFxcbiAgICAgICAgICAgIGxvZyh0eXBlKVxcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogeC50aXRsZSxcXFxcbiAgICAgICAgICAgICAgICBkZXNjOiAn4oCY4oCYJyArIHR5cGUgKyAn4oCZ4oCZXFxcXFxcXFxuJyArIHgucHViX2luZGV4ICsgJ1xcXFxcXFxcbuabtOaWsOaXtumXtO+8micgKyBnZXRIZWFkKHgucHViX3RpbWUpLFxcXFxuICAgICAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPScgKyB4LnVybCArICcjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICAgICAgICAgICAgICBpbWc6IHguY292ZXIrUmVmZXJlcixcXFxcbiAgICAgICAgICAgICAgICBjb2xfdHlwZTonbW92aWVfMV92ZXJ0aWNhbF9waWMnXFxcXG4gICAgICAgICAgICB9KTtcXFxcbiAgICAgICAgfVxcXFxuICAgIH0gY2F0Y2ggKGUpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBnZXRIZWFkKCfpk77mjqXngrjkuobvvIznrYnkv67lpI0nKSxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3nlarliafntKLlvJVcXFwiLFxcXCJwYXRoXFxcIjpcXFwic3lcXFwiLFxcXCJydWxlXFxcIjpcXFwiY29uc3QgeyBDYXRlZ29yaWVzSGVhZGVyIH0gPSAkLnJlcXVpcmUoXFxcXFxcXCJoaWtlcjovL3BhZ2UvY2F0ZWdvcmllcy1oZWFkZXJcXFxcXFxcIilcXFxcblxcXFxuLyoqXFxcXG4gKiDojrflj5bliIbnsbvmlbDmja7mupDvvIzlj6/liqjmgIHlj6/pnZnmgIHvvIzoh6rlt7HmoLnmja7lrp7pmYXmg4XlhrXlpITnkIZcXFxcbiAqIGh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS9hbmltZS9pbmRleC9cXFxcbiAqL1xcXFxubGV0IG1DYXRlZ29yaWVzID0ge31cXFxcbmxldCBjYXRJblZhciA9IGdldFZhcihNWV9SVUxFLnVybCArIFxcXFxcXFwiI2NhdGVnb3JpZXNcXFxcXFxcIiwgJycpXFxcXG5pZiAoZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcXFxcXCIjY2F0ZWdvcmllc1xcXFxcXFwiLCAnJykpIHtcXFxcbiAgICBtQ2F0ZWdvcmllcyA9IEpTT04ucGFyc2UoY2F0SW5WYXIpXFxcXG59IGVsc2Uge1xcXFxuICAgIGxldCBjYXRVcmwgPSAnaHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tL2FuaW1lL2luZGV4LydcXFxcbiAgICBsZXQgY2F0U3JjID0gcmVxdWVzdChjYXRVcmwpXFxcXG4gICAgLy8gbG9nKGNhdFNyYylcXFxcbiAgICBsZXQgY2F0UmVnZXggPSAvd2luZG93XFxcXFxcXFwuX19JTklUSUFMX1NUQVRFX189KC4qPyk7XFxcXFxcXFwoZnVuY3Rpb25cXFxcXFxcXChcXFxcXFxcXClcXFxcXFxcXHsvXFxcXG4gICAgaWYgKGNhdFJlZ2V4LnRlc3QoY2F0U3JjKSkge1xcXFxuICAgICAgICAvLyBsb2coUmVnRXhwLiQxKVxcXFxuICAgICAgICBsZXQgY2F0ZWdvcnkgPSBKU09OLnBhcnNlKFJlZ0V4cC4kMSlcXFxcbiAgICAgICAgbGV0IG1GaWx0ZXJzID0gY2F0ZWdvcnkuZmlsdGVycztcXFxcbiAgICAgICAgLy8gbG9nKG1GaWx0ZXJzKVxcXFxuICAgICAgICBtRmlsdGVycy5tYXAoZmlsdGVyID0+IG1DYXRlZ29yaWVzW2ZpbHRlci5rZXldID0gZmlsdGVyLmxpc3QpXFxcXG4gICAgICAgIGxldCBvcmRlcnMgPSBjYXRlZ29yeS5vcmRlcnNcXFxcbiAgICAgICAgbGV0IG1PcmRlcnMgPSBbXVxcXFxuICAgICAgICBvcmRlcnMubWFwKG9yZGVyID0+IHtcXFxcbiAgICAgICAgICAgIGxldCBtT3JkZXIgPSB7fVxcXFxuICAgICAgICAgICAgbU9yZGVyLm5hbWUgPSBvcmRlci50aXRsZVxcXFxuICAgICAgICAgICAgbU9yZGVyLnZhbHVlID0gb3JkZXIua2V5XFxcXG4gICAgICAgICAgICBtT3JkZXJzLnB1c2gobU9yZGVyKVxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICAvLyBsb2cobU9yZGVycylcXFxcbiAgICAgICAgbUNhdGVnb3JpZXNbJ29yZGVyJ10gPSBtT3JkZXJzXFxcXG4gICAgfVxcXFxuICAgIHB1dFZhcihNWV9SVUxFLnVybCArIFxcXFxcXFwiI2NhdGVnb3JpZXNcXFxcXFxcIiwgSlNPTi5zdHJpbmdpZnkobUNhdGVnb3JpZXMpKVxcXFxufVxcXFxubGV0IGtleXMgPSBPYmplY3Qua2V5cyhtQ2F0ZWdvcmllcylcXFxcbi8vIGxvZyhtQ2F0ZWdvcmllcylcXFxcbi8vIGxvZyhrZXlzKVxcXFxuLyoqXFxcXG4gKiDnu4TlkIjlvZPliY3liIbnsbvpk77mjqVcXFxcbiAqL1xcXFxubGV0IHRydWVfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsLCBNWV9VUkwpXFxcXG50cnVlX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL3NlYXNvbi9pbmRleC9yZXN1bHQ/J1xcXFxuZm9yIChsZXQgaXQgb2Yga2V5cykge1xcXFxuICAgIGxldCBjYXRfdXJsID0gZ2V0VmFyKE1ZX1JVTEUudXJsICsgXFxcXFxcXCIjXFxcXFxcXCIgKyBpdCwgaXQgPT09ICdvcmRlcnMnID8gJzMnIDogJy0xJylcXFxcbiAgICB0cnVlX3VybCArPSAoY2F0X3VybCA/ICcmJyArIGl0ICsgJz0nICsgY2F0X3VybCA6ICcnKVxcXFxufVxcXFxuLy8gbGV0IHBhZ2UgPSAxXFxcXG5jb25zdCBwYWdlID0gTVlfVVJMLnNwbGl0KCcjJylbMV1cXFxcbmlmKHBhZ2U9PTEpe1xcXFxuICAgIFxcXFxufVxcXFxudHJ1ZV91cmwgPSB0cnVlX3VybCArXFxcXG4gICAgJyZzdD0xJnNvcnQ9MCZzZWFzb25fdHlwZT0xJnBhZ2VzaXplPTIwJnR5cGU9MScgK1xcXFxuICAgICcmcGFnZT0nICsgcGFnZVxcXFxuLy8gbG9nKHRydWVfdXJsKVxcXFxuXFxcXG5jb25zdCBlbXB0eSA9IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eVxcXFxcXFwiXFxcXG5cXFxcbkNhdGVnb3JpZXNIZWFkZXJcXFxcbiAgICAuc2V0U3ViQ2F0ZWdvcmllc0l0ZW1LZXkoJ25hbWUnLCAndmFsdWUnKVxcXFxuICAgIC5nZXQoZCwgbUNhdGVnb3JpZXMsIHBhZ2UpXFxcXG4vKipcXFxcbiAqIOiOt+WPluW9k+WJjeWIhuexu+mhtemdoua6kOeggVxcXFxuICovXFxcXG50cnkge1xcXFxuICAgIHZhciBzeWxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodHJ1ZV91cmwsIHt9KSkuZGF0YS5saXN0O1xcXFxuXFxcXG4gICAgLyoqXFxcXG4gICAgICog5YiX6KGo5pWw5o2u5rqQXFxcXG4gICAgICovXFxcXG4gICAgZm9yIChsZXQgZGF0YSBvZiBzeWxpc3QpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiBkYXRhLnRpdGxlIC8qKyAnLycgKyBkYXRhLmluZGV4X3Nob3cqLyAsXFxcXG4gICAgICAgICAgICBkZXNjOiBkYXRhLm9yZGVyLFxcXFxuICAgICAgICAgICAgaW1nOiBkYXRhLmNvdmVyK1JlZmVyZXIsXFxcXG4gICAgICAgICAgICB1cmw6ICdoaWtlcjovL3BhZ2UvZGV0YWlsP3VybD0nICsgZGF0YS5saW5rICsgJyNpbW1lcnNpdmVUaGVtZSMnLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdtb3ZpZV8zJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGNhdGNoIChlKSB7fVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3liqjmgIHliIbnsbvmqKHlnZdcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY2F0ZWdvcmllcy1oZWFkZXJcXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG4vKipcXFxcbiAqIOS9v+eUqOivtOaYju+8mlxcXFxuICogMS7mj5DliY3lu7rnq4vlpb0g5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGoIOeahOWvueW6lOWFs+ezu++8jOWNsyBnZXQg5Ye95pWw5Lit55qEIGNhdGVnb3JpZXNcXFxcbiAqIDIu6K6+572u5a2Q5YiG57G75pWw5o2u55qEIGtlee+8jOiwg+eUqCBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSh0aXRsZUtleSwgdXJsS2V5KVxcXFxuICogMy7nhLblkI7osIPnlKggQ2F0ZWdvcmllc0hlYWRlci5nZXQobGF5b3V0LCBjYXRlZ29yaWVzLCBwYWdlKVxcXFxuICpcXFxcbiAqIOaUr+aMgemTvuW8j+iwg+eUqO+8jOS4gOWPpeivneWNs+WPr+iwg+eUqOeUn+aIkOWIhuexu++8jOWNs++8mlxcXFxuICogQ2F0ZWdvcmllc0hlYWRlclxcXFxuICogICAgLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5KHRpdGxlS2V5LCB1cmxLZXkpXFxcXG4gKiAgICAuZ2V0KGxheW91dCwgY2F0ZWdvcmllcywgcGFnZSlcXFxcbiAqXFxcXG4gKiBAdHlwZSB7e3NldFN1YkNhdGVnb3JpZXNJdGVtS2V5OiBDYXRlZ29yaWVzSGVhZGVyLnNldFN1YkNhdGVnb3JpZXNJdGVtS2V5LCBnZXQ6IENhdGVnb3JpZXNIZWFkZXIuZ2V0LCBjYXRlZ29yaWVzS2V5OiB7dGl0bGU6IHN0cmluZywgdXJsOiBzdHJpbmd9fX1cXFxcbiAqL1xcXFxubGV0IENhdGVnb3JpZXNIZWFkZXIgPSB7XFxcXG4gICAgY2F0ZWdvcmllc0tleToge1xcXFxuICAgICAgICBzdWJfY2F0ZWdvcmllczogJycsXFxcXG4gICAgICAgIHRpdGxlOiAnJyxcXFxcbiAgICAgICAgdXJsOiAnJyxcXFxcbiAgICB9LFxcXFxuICAgIC8qKlxcXFxuICAgICAqIDEu6K6+572u5LuO5YiG57G75YiX6KGo5Lit5ou/55qE5a2Q5YiG57G755qE5pWw5o2uIGtlee+8jFxcXFxuICAgICAqICAg5qC55o2uIGtleSDmi7/liLDmlbDmja7lkI7vvIxcXFxcbiAgICAgKiAgIOS8muiHquWKqOi1i+WAvOe7mSBzY3JvbGxfYnV0dG9uIOeahCB7IHRpdGxlOiBpdGVtW3RpdGxlS2V5XSwgdXJsOiBpdGVtW3VybEtleV0gfVxcXFxuICAgICAqXFxcXG4gICAgICogQHBhcmFtIHRpdGxlX2tleSB0aXRsZSDnmoQga2V5XFxcXG4gICAgICogQHBhcmFtIHVybF9rZXkgdXJsIOeahCBrZXlcXFxcbiAgICAgKi9cXFxcbiAgICBzZXRTdWJDYXRlZ29yaWVzSXRlbUtleSA6ICh0aXRsZV9rZXksIHVybF9rZXkpID0+IHtcXFxcbiAgICAgICAgQ2F0ZWdvcmllc0hlYWRlci5jYXRlZ29yaWVzS2V5LnRpdGxlID0gdGl0bGVfa2V5XFxcXG4gICAgICAgIENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmwgPSB1cmxfa2V5XFxcXG4gICAgICAgIHJldHVybiBDYXRlZ29yaWVzSGVhZGVyO1xcXFxuICAgIH0sXFxcXG4gICAgc2V0U3ViQ2F0ZWdvcmllc0tleTogKHN1Yl9jYXRlZ29yaWVzX2tleSkgPT4ge1xcXFxuICAgICAgICBDYXRlZ29yaWVzSGVhZGVyLmNhdGVnb3JpZXNLZXkuc3ViX2NhdGVnb3JpZXMgPSBzdWJfY2F0ZWdvcmllc19rZXlcXFxcbiAgICAgICAgcmV0dXJuIENhdGVnb3JpZXNIZWFkZXI7XFxcXG4gICAgfSxcXFxcbiAgICAvKipcXFxcbiAgICAgKiAyLuiOt+WPluWIhuexu+WktOmDqFxcXFxuICAgICAqXFxcXG4gICAgICogQHBhcmFtIGxheW91dCDlvZPliY3nlYzpnaLvvIzljbPluLjnlKjnmoQgZC5wdXNoIOeahCBkXFxcXG4gICAgICogQHBhcmFtIGNhdGVnb3JpZXMg5YiG57G75omA5bGe57G75Z6L5ZKM5YiG57G75YiX6KGo55qE5a+55bqU5YWz57O76KGo77yMXFxcXG4gICAgICogICAgICAgIOWmgu+8mlxcXFxuICAgICAqICAgICAgICB7XFxcXG4gICAgICogICAgICAgICAgIFxcXFxcXFwi5bm05Lu9XFxcXFxcXCI6IFt7IFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIjIwMjFcXFxcXFxcIiwgXFxcXFxcXCJ2YWx1ZVxcXFxcXFwiOiBcXFxcXFxcIjIwMjFcXFxcXFxcIiB9LCB7IFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIjIwMjBcXFxcXFxcIiwgXFxcXFxcXCJ2YWx1ZVxcXFxcXFwiOiBcXFxcXFxcIjIwMjBcXFxcXFxcIiB9Li4uXSxcXFxcbiAgICAgKiAgICAgICAgICAgXFxcXFxcXCLmjpLluo9cXFxcXFxcIjogW3sgXFxcXFxcXCJuYW1lXFxcXFxcXCI6IFxcXFxcXFwi54Ot5bqmXFxcXFxcXCIsIFxcXFxcXFwidmFsdWVcXFxcXFxcIjogXFxcXFxcXCJob3RcXFxcXFxcIiB9LCB7IFxcXFxcXFwibmFtZVxcXFxcXFwiOiBcXFxcXFxcIuaXtumXtFxcXFxcXFwiLCBcXFxcXFxcInZhbHVlXFxcXFxcXCI6IFxcXFxcXFwidGltZVxcXFxcXFwiIH0uLi5dLFxcXFxuICAgICAqICAgICAgICB9XFxcXG4gICAgICogQHBhcmFtIHBhZ2Ug6aG156CBXFxcXG4gICAgICogQHBhcmFtIHVybExpc3RlbmVyIOmineWkluWkhOeQhiBidXR0b24g55qEIHVybO+8jOmcgOimgSByZXR1cm5cXFxcbiAgICAgKi9cXFxcbiAgICBnZXQ6IChsYXlvdXQsIGNhdGVnb3JpZXMsIHBhZ2UsIHVybExpc3RlbmVyKSA9PiB7XFxcXG4gICAgICAgIC8vIGxvZyhjYXRlZ29yaWVzKVxcXFxuICAgICAgICAvLyDliIbnsbvmiYDlsZ7nsbvlnovnmoTliJfooajvvIzlpoLvvJpbIFxcXFxcXFwi5bm05Lu9XFxcXFxcXCIsIFxcXFxcXFwi5o6S5bqPXFxcXFxcXCIgXVxcXFxuICAgICAgICBsZXQgY2F0ZWdvcnlfbmFtZXMgPSBPYmplY3Qua2V5cyhjYXRlZ29yaWVzKVxcXFxuICAgICAgICBsZXQgdHlwZXMgPSBbXVxcXFxuICAgICAgICAvLyDmoLnmja7lr7nlupTlhbPns7vooajmi7/liIbnsbvliJfooahcXFxcbiAgICAgICAgY2F0ZWdvcnlfbmFtZXMubWFwKGNhdGVnb3J5X25hbWUgPT4ge1xcXFxuICAgICAgICAgICAgLy8g6L+Z6YeM5Lya5ou/5YiwIOW5tOS7vSDmjpLluo8uLi4g5YW25Lit5LiA5LiqXFxcXG4gICAgICAgICAgICB0eXBlcy5wdXNoKGNhdGVnb3JpZXNbY2F0ZWdvcnlfbmFtZV0pO1xcXFxuICAgICAgICAgICAgLy8g6L+Z6YeM5LiL6Z2i5a+5IHR5cGVzIOeahOWAvOi/m+ihjOWkhOeQhlxcXFxuICAgICAgICB9KVxcXFxuICAgICAgICBjYXRlZ29yaWVzID0gdHlwZXM7XFxcXG4gICAgICAgIGxldCBpbml0X2NhdGUgPSBbXVxcXFxuXFxcXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMjA7IGkrKykge1xcXFxuICAgICAgICAgICAgaW5pdF9jYXRlLnB1c2goXFxcXFxcXCIwXFxcXFxcXCIpXFxcXG4gICAgICAgIH1cXFxcblxcXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXBfanNvbiA9IGdldFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShpbml0X2NhdGUpKVxcXFxuICAgICAgICBjb25zdCBjYXRlX3RlbXAgPSBKU09OLnBhcnNlKGNhdGVfdGVtcF9qc29uKVxcXFxuXFxcXG4gICAgICAgIGlmIChwYXJzZUludChwYWdlKSA9PT0gMSkge1xcXFxuICAgICAgICAgICAgLyoqXFxcXG4gICAgICAgICAgICAgKiDpgY3ljobnrKwgaW5kZXgg5bGC5YiG57G7XFxcXG4gICAgICAgICAgICAgKi9cXFxcbiAgICAgICAgICAgIGNhdGVnb3JpZXMuZm9yRWFjaCgoY2F0ZWdvcnksIGluZGV4KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yeV9uYW1lID0gY2F0ZWdvcnlfbmFtZXNbaW5kZXhdXFxcXG4gICAgICAgICAgICAgICAgbGV0IHN1Yl9jYXRlZ29yaWVzX2tleSA9IENhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS5zdWJfY2F0ZWdvcmllc1xcXFxuICAgICAgICAgICAgICAgIGxldCBzdWJfY2F0ZWdvcmllcyA9IHN1Yl9jYXRlZ29yaWVzX2tleSA/IGNhdGVnb3J5W3N1Yl9jYXRlZ29yaWVzX2tleV0gOiBjYXRlZ29yeTtcXFxcbiAgICAgICAgICAgICAgICAvLyBsb2coY2F0ZWdvcnkpXFxcXG4gICAgICAgICAgICAgICAgLyoqXFxcXG4gICAgICAgICAgICAgICAgICog5Zyo56ysIGluZGV4IOWxguWIhuexu+S4remBjeWOhuivpeWxguaJgOacieWtkOWIhuexu1xcXFxuICAgICAgICAgICAgICAgICAqL1xcXFxuICAgICAgICAgICAgICAgIHN1Yl9jYXRlZ29yaWVzLmZvckVhY2goKGl0ZW0sIGtleSkgPT4ge1xcXFxuICAgICAgICAgICAgICAgICAgICBsZXQgdGl0bGUgPSBpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS50aXRsZV1cXFxcbiAgICAgICAgICAgICAgICAgICAgbGV0IHVybCA9IGVzY2FwZShpdGVtW0NhdGVnb3JpZXNIZWFkZXIuY2F0ZWdvcmllc0tleS51cmxdKVxcXFxuICAgICAgICAgICAgICAgICAgICBpZiAodXJsTGlzdGVuZXIpIHVybCA9IHVybExpc3RlbmVyLm9uRGVhbChpdGVtLCBzdWJfY2F0ZWdvcnlfbmFtZSwgdXJsKVxcXFxuICAgICAgICAgICAgICAgICAgICBsYXlvdXQucHVzaCh7XFxcXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZToga2V5LnRvU3RyaW5nKCkgPT09IGNhdGVfdGVtcFtpbmRleF0gPyAn4oCc4oCc4oCd4oCdPGI+PHNwYW4gc3R5bGU9XFxcXFxcXCJjb2xvcjogIzA5OEFDMVxcXFxcXFwiPicgKyB0aXRsZSArICc8L3NwYW4+PC9iPicgOiB0aXRsZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVybDogJCh1cmwpLmxhenlSdWxlKChwYXJhbXMpID0+IHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuY2F0ZV90ZW1wW3BhcmFtcy5pbmRleF0gPSBwYXJhbXMua2V5LnRvU3RyaW5nKClcXFxcblxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1dFZhcihNWV9SVUxFLnRpdGxlLCBKU09OLnN0cmluZ2lmeShwYXJhbXMuY2F0ZV90ZW1wKSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXRWYXIoTVlfUlVMRS51cmwgKyBcXFxcXFxcIiNcXFxcXFxcIiArIHBhcmFtcy5zdWJfY2F0ZWdvcnlfbmFtZSwgaW5wdXQpXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UodHJ1ZSlcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gXFxcXFxcXCJoaWtlcjovL2VtcHR5XFxcXFxcXCJcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sIHtcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXRlX3RlbXA6IGNhdGVfdGVtcCxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleDogaW5kZXgsXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5OiBrZXksXFxcXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZTogcGFnZSxcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJfY2F0ZWdvcnlfbmFtZTogc3ViX2NhdGVnb3J5X25hbWVcXFxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxcXFxuICAgICAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6ICdzY3JvbGxfYnV0dG9uJyxcXFxcbiAgICAgICAgICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgICAgICAgICB9KVxcXFxuICAgICAgICAgICAgICAgIGxheW91dC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwiYmxhbmtfYmxvY2tcXFxcXFxcIlxcXFxuICAgICAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICAgICAgfSlcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn1cXFxcbiQuZXhwb3J0cy5DYXRlZ29yaWVzSGVhZGVyPUNhdGVnb3JpZXNIZWFkZXJcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLmiJHnmoTmlLbol48t6KeG6aKRXFxcIixcXFwicGF0aFxcXCI6XFxcInZpZGVvXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20veC92My9mYXYvZm9sZGVyL3NwYWNlP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MTMwNDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjEzLjAlMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0QmdHM9JyArIHRzICsgJyZ1cF9taWQ9JyArIGdldFZhcignc3RhcmlkJykgKyAnJnNpZ249MGE1MWI3NzJmODFkYzc4MTJjZDY2MjI2YTgzMjUzODMnO1xcXFxudmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkuZGF0YTtcXFxcbmZvciAodmFyIHggb2YgbGlzdCkge1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiB4Lm5hbWUsXFxcXG4gICAgICAgIGltZzogJ2h0dHBzOi8vZ2l0ZWUuY29tL0NoZXJpc2hSeC9pbWFnZXdhcmVob3VzZS9yYXcvbWFzdGVyL2ltYWdlLzEzMDk2NzI1ZmU1NmNlOWNmNjQzYTBlNGNkMGMxNTljLmdpZicsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL2VtcHR5I1xcXFxcXFwiK3guaWQrXFxcXFxcXCJAbGF6eVJ1bGU9LmpzOnB1dFZhcignY2hhbmdlJyxnZXRWYXIoJ2NoYW5nZScpPT1pbnB1dC5zcGxpdCgnIycpWzFdPycwJzppbnB1dC5zcGxpdCgnIycpWzFdKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+W3suWIt+aWsCdcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdhdmF0YXInXFxcXG4gICAgfSk7XFxcXG4gICAgaWYgKGdldFZhcignY2hhbmdlJykgPT0geC5pZCkge1xcXFxuICAgICAgICB2YXIgbGlzdDIgPSB4Lm1lZGlhTGlzdFJlc3BvbnNlLmxpc3Q7XFxcXG4gICAgICAgIGxvZyhsaXN0MilcXFxcbiAgICAgICAgZm9yICh2YXIgYSBpbiBsaXN0Mikge1xcXFxuICAgICAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgICAgICB0aXRsZTogbGlzdDJbYV0udGl0bGUsXFxcXG4gICAgICAgICAgICAgICAgaW1nOiBsaXN0MlthXS5jb3ZlcitSZWZlcmVyLFxcXFxuICAgICAgICAgICAgICAgIHVybDonaGlrZXI6Ly9wYWdlL2NvbGxlY3Rpb24/dXJsPWh0dHBzOi8vYXBpLmJpbGliaWxpLmNvbS94L3YzL2Zhdi9yZXNvdXJjZS9pZHPvvJ/vvJ9hY2Nlc3Nfa2V5PScrZ2V0VmFyKCdhY2Nlc3Nfa2V5JykrJ++8hu+8hmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM277yG77yGYnVpbGQ9NjEzMDQwMO+8hu+8hmNfbG9jYWxlPXpoX0NO77yG77yGY2hhbm5lbD1tYXN0ZXLvvIbvvIZtZWRpYV9pZD0nK2xpc3QyW2FdLmlkKyfvvIbvvIZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKyfvvIbvvIZtb2JpX2FwcD1hbmRyb2lk77yG77yGcGxhdGZvcm09YW5kcm9pZO+8hu+8hnNfbG9jYWxlPXpoX0NO77yG77yGc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi4xMy4wJTIyJTJDJTIyYWJ0ZXN0JTIyJTNBJTIyJTIyJTdE77yG77yGdHM9Jyt0cysn77yG77yGc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNycsXFxcXG4gICAgICAgICAgICAgICAvLyBkZXNjOiBhWydtZWRpYV9jb3VudCddLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAnbW92aWVfMydcXFxcbiAgICAgICAgICAgIH0pO1xcXFxuICAgICAgICB9XFxcXG5cXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5oiR55qE5pS26JePLei/veeVqlxcXCIsXFxcInBhdGhcXFwiOlxcXCJmYW5qdVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgdHMgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcXFxcbnZhciB2aWRlb191cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3BnYy9hcHAvZm9sbG93L3YyL2Jhbmd1bWk/YWNjZXNzX2tleT0nICsgZ2V0VmFyKCdhY2Nlc3Nfa2V5JykgKyAnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYwOTEwMDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZXImbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnBuPScgKyBwYWdlbnVtICsgJyZwcz0yMCZzX2xvY2FsZT16aF9DTiZzdGF0aXN0aWNzPSU3QiUyMmFwcElkJTIyJTNBMSUyQyUyMnBsYXRmb3JtJTIyJTNBMyUyQyUyMnZlcnNpb24lMjIlM0ElMjI2LjkuMSUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZzdGF0dXM9MiZ0cz0nICsgdHMgKyAnJnNpZ249MTYyNGY5NTk4ZGNhMDZlYjEyOTUzNGU0NzY1ZjliMWEnO1xcXFxudHJ5IHtcXFxcbiAgICB2YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh2aWRlb191cmwpKS5yZXN1bHQuZm9sbG93X2xpc3Q7XFxcXG4gICAgZm9yICh2YXIgeCBvZiBsaXN0KSB7XFxcXG4gICAgICAgIHZhciDnsbvlnosgPSB4LmlzX2ZpbmlzaCA9PSAxID8gXFxcXFxcXCLlroznu5NcXFxcXFxcIiA6IFxcXFxcXFwi6L+e6L29XFxcXFxcXCI7XFxcXG4gICAgICAgIHZhciDmoIfor4YgPSB4WydzZWFzb25fdHlwZV9uYW1lJ10gKyBcXFxcXFxcIiB8IFxcXFxcXFwiICsgeC5iYWRnZTtcXFxcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFxcXFxcIlxcXFxcXFxcdFxcXFxcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXFxcXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGNhdGNoIChlKSB7fVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaIkeeahOaUtuiXjy3ov73liadcXFwiLFxcXCJwYXRoXFxcIjpcXFwiZHNqXFxcIixcXFwicnVsZVxcXCI6XFxcInZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIHZpZGVvX3VybCA9ICdodHRwczovL2FwaS5iaWxpYmlsaS5jb20vcGdjL2FwcC9mb2xsb3cvdjIvY2luZW1hP2FjY2Vzc19rZXk9JyArIGdldFZhcignYWNjZXNzX2tleScpICsgJyZhcHBrZXk9MWQ4YjZlN2Q0NTIzMzQzNiZidWlsZD02MDkxMDAwJmNfbG9jYWxlPXpoX0NOJmNoYW5uZWw9bWFzdGVyJm1vYmlfYXBwPWFuZHJvaWQmcGxhdGZvcm09YW5kcm9pZCZwbj0nICsgcGFnZW51bSArICcmcHM9MjAmc19sb2NhbGU9emhfQ04mc3RhdGlzdGljcz0lN0IlMjJhcHBJZCUyMiUzQTElMkMlMjJwbGF0Zm9ybSUyMiUzQTMlMkMlMjJ2ZXJzaW9uJTIyJTNBJTIyNi45LjElMjIlMkMlMjJhYnRlc3QlMjIlM0ElMjIlMjIlN0Qmc3RhdHVzPTImdHM9JyArIHRzICsgJyZzaWduPTE2MjRmOTU5OGRjYTA2ZWIxMjk1MzRlNDc2NWY5YjFhJztcXFxcbnRyeSB7XFxcXG4gICAgdmFyIGxpc3QgPSBKU09OLnBhcnNlKHJlcXVlc3QodmlkZW9fdXJsKSkucmVzdWx0LmZvbGxvd19saXN0O1xcXFxuICAgIGZvciAodmFyIHggb2YgbGlzdCkge1xcXFxuICAgICAgICB2YXIg57G75Z6LID0geC5pc19maW5pc2ggPT0gMSA/IFxcXFxcXFwi5a6M57uTXFxcXFxcXCIgOiBcXFxcXFxcIui/nui9vVxcXFxcXFwiO1xcXFxuICAgICAgICB2YXIg5qCH6K+GID0geFsnc2Vhc29uX3R5cGVfbmFtZSddICsgXFxcXFxcXCIgfCBcXFxcXFxcIiArIHguYXJlYXNbMF0ubmFtZTtcXFxcbiAgICAgICAgdmFyIGRlc2MgPSB4LnByb2dyZXNzID8g5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiICsgeC5wcm9ncmVzcy5pbmRleF9zaG93IDog5qCH6K+GICsgXFxcXFxcXCJcXFxcXFxcXG7igJzigJxcXFxcXFxcIiArIHgubmV3X2VwLmluZGV4X3Nob3cgKyBcXFxcXFxcIuKAneKAnVxcXFxcXFxcblxcXFxcXFwiO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHgudGl0bGUgKyBcXFxcXFxcIlxcXFxcXFxcdFxcXFxcXFwiICsgZ2V0SGVhZCjnsbvlnospLFxcXFxuICAgICAgICAgICAgaW1nOiB4Lm5ld19lcC5jb3ZlciArIFJlZmVyZXIsXFxcXG4gICAgICAgICAgICBkZXNjOiBkZXNjLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9kZXRhaWw/dXJsPVxcXFxcXFwiICsgeC51cmwgKyAnI2ltbWVyc2l2ZVRoZW1lIycsXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ21vdmllXzFfdmVydGljYWxfcGljJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59IGNhdGNoIChlKSB7fVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuaIkeeahOaUtuiXjy3mlLbol49cXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29sbGVjdGlvblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczp2YXIgcmVzID0ge307dmFyIGQgPSBbXTtcXFxcbnZhciB0cyA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xcXFxudmFyIGNvZGUgPSBKU09OLnBhcnNlKHJlcXVlc3QoTVlfVVJMKSkuZGF0YTtcXFxcbnZhciByZXNvdXJjZXMgPSAnJztcXFxcbmZvciAodmFyIHggb2YgY29kZSl7XFxcXG4gICAgdmFyIHJlc291cmNlcyA9IHJlc291cmNlcyArIHguaWQgKyAnOicgKyB4LnR5cGUgKyAnLCc7XFxcXG59XFxcXG52YXIgcmVzb3VyY2VzID0gcmVzb3VyY2VzLnNsaWNlKDAscmVzb3VyY2VzLmxlbmd0aC0xKTtcXFxcbnZhciB1cmwgPSAnaHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvdjMvZmF2L3Jlc291cmNlL2luZm9zP2FjY2Vzc19rZXk9JytnZXRWYXIoJ2FjY2Vzc19rZXknKSsnJmFwcGtleT0xZDhiNmU3ZDQ1MjMzNDM2JmJ1aWxkPTYxMzA0MDAmY19sb2NhbGU9emhfQ04mY2hhbm5lbD1tYXN0ZSZtaWQ9JytnZXRWYXIoJ3N0YXJpZCcpKycmbW9iaV9hcHA9YW5kcm9pZCZwbGF0Zm9ybT1hbmRyb2lkJnJlc291cmNlcz0nK3Jlc291cmNlcysnJnNfbG9jYWxlPXpoX0NOJnN0YXRpc3RpY3M9JTdCJTIyYXBwSWQlMjIlM0ExJTJDJTIycGxhdGZvcm0lMjIlM0EzJTJDJTIydmVyc2lvbiUyMiUzQSUyMjYuMTMuMCUyMiUyQyUyMmFidGVzdCUyMiUzQSUyMiUyMiU3RCZ0cz0nK3RzKycmc2lnbj03ZTBmMWI5MmYzZWYzODI4YjE5YmU2NjgzODkxNTAwNyc7XFxcXG52YXIgbGlzdCA9IEpTT04ucGFyc2UocmVxdWVzdCh1cmwse30pKS5kYXRhO1xcXFxuZm9yICh2YXIgeSBvZiBsaXN0ICl7XFxcXG5kLnB1c2goe1xcXFxuICAgIHRpdGxlOnkudGl0bGUsXFxcXG4gICAgaW1nOnkuY292ZXIsXFxcXG4gICAgZGVzYzon5pKt5pS+6YePOiAnK3kuY250X2luZm8ucGxheSsnICDlvLnluZU6ICcreS5jbnRfaW5mby5kYW5tYWt1LFxcXFxuICAgIHVybDonaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9aHR0cHM6Ly9hcGkuYmlsaWJpbGkuY29tL3gvd2ViLWludGVyZmFjZS92aWV3L2RldGFpbO+8n++8n2FpZD3vvIbvvIZidmlkPScgKyB5LmJ2aWQgKycjaW1tZXJzaXZlVGhlbWUjJyxcXFxcbiAgICBjb2xfdHlwZTonbW92aWVfMydcXFxcbiAgICB9KTtcXFxcbn1cXFxcbnJlcy5kYXRhID0gZDtcXFxcbnNldFJlc3VsdChyZXMpO1xcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3nmbvlvZVcXFwiLFxcXCJwYXRoXFxcIjpcXFwibG9naW5cXFwiLFxcXCJydWxlXFxcIjpcXFwiZXZhbFByaXZhdGVKUygnTGxlMG5heWRzelEyNTBJaE95ZFJBMWtKcjBYbk5hL3JGbHNqaUVLWlc3cmV0WkZldUhOSmxQS1dNRTRhOUJjZkI5QjBoVGF3WU04ditoRXd6RjNSVk4yc1IvaUg4TnZ5SFk2dXpLTmdqTWJKODVHTEVnMEp5alBJdGZHR1Jnd0pGVVZOTDFJTGVSTmJhZTM5WFZyb0Q3V0tVS0JQZnY3SHdxajJIWUZINXVRTHBPVlp2RzRVY1lPekFzN2o4TmlhUEVVSk1TNDI0QmtibnMxTmY2RklEWGxma05JSXNXQkhXUmRPNm1wNzNWeTJ2dTVoZzFhRzBBVmVrNStwUWNxYWt4RU05Y1dHZ0NKQzVtS3BVaVpTRXRQOTJzS0E5U0srL05Ic3FmMTNDT3RRUmlpeDZnRmh5RmhMZXo3K0dwdVNiTEgxM2sxRkRVWmtpbFk3T0JQOHlDWlArWW00MVloaS95SVR4M0VsTG1namlCZXhqMHFUTGpyS0lYbng0RERYaWlwU3cvWXBVTmRxdGdVWEhOaTk4YTdjR3RMRSs5NUFxazJEY1YvSDNPRzVocHN3U0hDMitpbHJSTFA4K1R5TFRvZ3JGVWFKWU14T21yV3dBalVNMUZmTHMvTVN4NjAxVy91ZUZEQW1oTy9aWm9VWndmM01ZYmh0a3YrQnhneUcvNzZXZkRBUWJHQVJKOTROYWpaOXB6enZjdVhJRXJncjFEL1B1Z0ZtaE9XSGsvTVNkRkRsQnFNRHBFOHg5NVlqNnRMNHdGc3cyT2FHT29lOE1oc25pRllFRjhCcU1QUmVkMHo3Y0JDNFJHeEQ1TmdWMUZLV0hBUGdaUFlGS2pnTzlnbE5KdjcxSVNnSW85U0tSQkVqS21FNGNFdmIva0pFT0NFRExqQlFyVnNPVDExT3VaY1p1ZENaRU9Uem1yaUdIZFBmZmxLQnJGc0VoN3lsVXRQWllFY0VwQ3kxV2gxZTFZeE5LWmhiT3VrMDJ3dEE3RmZITlAwRHFJWjgzRjhSRkczOFJZMzZmRkkvL3pMcENNRU04VVhoemxqdzVxb1NQdnpmaGVSMS9HRjNNampGZnN6WFozVUN2Y0JnMndDMU9rQVZLcDB1U2NHTG1lcTZRYUViUU4ydW56MDJwcEZWN2VLOUg3M3lEMUVFbE5LQ1FDa2ttQjZkeHBxdGtWNkpoUnN4aWdNY2VYbjRkVUd0K0F0ZmtBMkt2eW1lNXJrdXBwQmNlRnZNZmhJRnN4WUdSMlVFOStveDZrZmxZQnRQcDU1UTZ1bElLeWRocms1VEFUek0yaXY5Zjl4cVlwSklJQm50SVZJb2YzT2FuSEpXckV0eFEyYzFnY3ZPdC9XYkUvbGtOZHJRMzNJT1lyT0ZiMmNiWjRNL2xoNW5WdHppanZwWWUwTTZPNXYrSW9aTXBPaVZxc2U3eU5pWGhBSHhFMDV6aWlWY2o5cGl6cFd6SWViek80ZytLa2FxSnJCUzZ5ejVRWG1pRmNXVkVTSUlJb3ZZSGVDS1JETGdCb2pxSmRUZUlYYVIvS2U0OXN0MDNYMkhSdzJyMEIwTW5pZjh0RVBkYTFnbGNCTHNURVpFVzJoYmtkdG9FaWNJUkZ2a2k1NXg5SFF0UVQ0enAyVFdwM2F1N1RJendEaXRDVWJiRE9WMXpGZ1NIaDA4NzNMbHlCSzRLOVEvejdvQlpvVGxoNVB6RW5SUTVRYWpBNlJQTWZlV0krclMrTUJiTU5qbWhqcUh2REliSjRpQnAreFhoamMrMnJ2aURhQU95RkM5dWx2a3h6YStUVzRNYXQwaHh0WURySWwrRHBvdWVqeUlNVFc4RHN2WHhQWENBUWJtd0dsREVBZk9peXF0cUxROUhmOGdEWEUzNVE3YXkweUFCRWVqMXFLV2dyai9ZbkJiWS9kWUFPUFNIcG1sZGRGTEpuS3BBcGRNWHZZQnN3cldGMENSUlNiMXM3Q1pSZ01mT1F6SzZJejYvdGVoYXNtT3M3TWw5dy9IcG41bktoMTArbjBpR1hNdng1SUkrU0dwb0x1ZUN0Um1KN1VWVkN0REc2eGV2eFlNbTA0c0FHR0dKYUNEQWhHSDhpY2JoSUUyYitvcURGRXBtVTBlWTdSdEc3OWhQaEwrZ1hZT3lZTlV2SnFlamxiWjEvT2R2TDVuWXk2bTMwR3dsM3o3dzVlc2xaQ1VBMGthUnM1a21VT0x2TDBRUVBENzRmYWdBZHFHc0xIVUdEV2I0QnpDTEYyTVlMSHkrRHNja0szRllKTXcwVTVxTjdMNzAwc1ZTYWxmNnRLOTZkV3F6bjVlSXJld2YxaUdvODNJY3d6OW84MUptdUtBMUxwSVNTOTA5OG53QXgxcVAxRnpQY3dJaFRTVnVSOCtBb28xcDNEaTBXTHdOS1FOT0k4eDc1RG1hRTZCTFBpRGthRExLSnljK2J6WDBoSUMzc1BiMitkZnZsa3NDbksyMmNHaEsyNUZzOU9GUjNyRi9WRlZTUmJERzcrN0FxT2tFMjRib2tFVWpkOG5TNUhqcXAzRC91ayswWHpCeTkyMjJYNmJKbUpod0ZsS3o0NlRCVlhlenptM2R6UVc3T2wrME9xZi9FeDJBWStyd1ArTTZ4RlJIVVgvajJHY0dhNW1oYkpVelJSQmRPNUlwclUyTnM2SHRTWEM5SXFjeFcxVmw1YkNPYk1HOStIdnZ6dTBzRzdBV05ndVpKQ3N4a0pYaGhnd2YyR0I2RlB1NitvRlJ6NkQ0QTA1c3NEc0xMVnltWjVjZ1RiRGNiZXExOVVtaVlhbTNQbjdxV0ljanVoOU9zTjR0aUZUcnJVRVBaSVJYOVhrMFVHRFlmYWJRMXBYZnhNLyt5U2g4cTdkd25WSi9nN2x1aWhHT2VlTndIWEFGQXk0bjNhY1BIMlhCYy9tc3g1WEtnSXJlT1JNVlkvY0ZiOUtjbTNvV1p6eks2K0hTUDg1dGtGS0ttNTVoZzhNeHdpNUl4OVJRRS9wR0F4MWNzb3ZTcDNqUlAwaDYybzZOaEZrdENES1d6akVVbDlibWEyOGZaeWlZNGRYQkVzSEJPcEt2QnpBQTBsUmtlelRuRXZ2WHM5WjU1VXJBYThaaEFGdXg2WkVOdzRjTVRJdVNrVmZ3K1YvVS9tb21sdEo5dkdQZ2lxYjVuWmw5S3U3ZDBST1YxNUozUUFzYmhPeFQ2U2drSVZ1Z3VWYVRWUmNqMEhXK21NTllLYlF5bnJOUkFxS0RlSnF1VnhjOUhsUE02TDhxUG5aSVdiYkhBZlVmR2J3MGxSbHdTdU9wRjcrQTJXSkxaNFh6U2dIYmNNWGt1bHpQUERQOS9jYVJJQjhlMlZrekVaU1BuVWlaQXBXUDZ3V3VzSHVCMzlXQU03OCtOQmk0QnAybXhXakxLSExXUU1EZUlYWGhkeGVjSzVxVVVmWUxnSVRpaDlEZUZwZ0xOV2NCTEdRRmJkU05rSjNOV3BjRzU2RGFqREl1TFVhOGswMGk5NGNKd0F6TWtKQnhOSmI1ZWhCUmtWdldYb3NtdEpCTWRSZjZORWJzVjl1OHZwWmpORW9nVWtubWx0Sjl2R1BnaXFiNW5abDlLdTdkMVpxVFB6b3B3WmhoK2l0RHBVYjBMcjI3YzV3TkFBRWpycGhPcWZlME5qMzlDTlcwTEg0V3hqZjJsd2x4TXRPS1IxSFFML0NQdzUxeXlZSi9MVnJReitpZjNpSUJOVTRuQ2dPYnVXNUpVTFR2c1FzczJSbmVMQ3c2cnBoeGdNc2Rhd01FZ1o5cUNyQ003eVRNMEV5bEZ4ZmppSVpLcWJLMTBCYWUyTm9IRCtHdW9VS0FRcDVTdTRBcVhTZktMem14NGhXYm1TaU5WN21DQi9yZHcxeWJzUHZnQUZjRzg1TjUza05qemNQdmJLTE9PeEhYSFlWV0NsQm1KcHJ3SnRIQTZCMVdacEdXUng1TS9nRG1zR3pWUm1WdUJEdm1TQVpNd0llVnI1YnpERTg2bTBOcWNtZ1ROZXB4d3FCK3lCQnA1S3pkNDJFQVFodDJFSzVUMnpNeHZnVHplUy96M0svcTVsUkhsMXpLMEovc1F3THg5ejhsTVZnOVJCYkFlL2ViMjBWb3d6Y3FQZGUvcWkwakhNd0djTWFDOWR1eVc1NndsR09zbmtiZXlCUS9QZlJTU3JrVUcvdmNhQ2JUYTRJVDg0Wnp0cE5RUnZiZVVuSUFvUGtXL2VaNndPVWlhNEpzeWF3OTlXYTgrRTRMakRtWjB6UmhuU0hnVXlDL3liOXJaVDJsRTFTN0pCSWs3WVpQWHlBMDBhMkxnS0ZHODhZelY4MGhpK0FWVHdSWlBrOXdsTzdnUlMyTlIvNTc3bkl4RzBIMjJsbEZzY21OMUxoSTkxRkQyVmJWWGJxaUtVVmpKY1ZuNi9zUWNUd3d6N3R2QjZ6OXlNbXJEbHlDTXZ5VWR3R0k2dXI5RWFjNHFXNkVVejF4SDJ5NVRJOEFmaHh4eE9yQVFabkVSYlRNSUNkZktHUUdESmUvVGRLUktRdGdicGI1TWMydmsxdURHcmRJY2JXQTZ6RFB1MjhIclAzSXlhc09YSUl5L0pSTmR2c1g2RGxLZFl3TG5GVVFqMnQ2SFFIaHRqa09saSt0Y09uUmxqQWEzMm9yZng3OVZPdXZpTnErbU9xUjFOK0NHUkYyYm1LVTFrcERBcng0VnpEZFdKZGRFcmErT2tGbk9ORUd6NFllY3dFUlpVZDc3K25uUEwyTW9DTW1FRFljdlhJczJFdVpIZGtUZm4xaXdlb2dEMDFRZndxWkhORjhIdmxCV01VL2Y2RWR6WEtMcUlnUksyaXBBTUZnS1J2bFJiYXNIUGxSdXNTZzBwUk5WVUNRUjVlYk55eHFGWGhMYzIrb2VkSzhKRW9Mb01FUTVEM2ZKYXJZZ2Q5ank2Zk9pQmtHOEM5SUlUQjhteXR5eXN3Y0t0d2h5MS8xV2JITzdDei9SZHFWY3lKMzRBMnEyWjN5dWkxUTVhMW9QbU8wTldMZm55YTQrc1JOUXJrc2lRNEh1TzI2R2FaVVI4a1d6RjFPeGRkdWFQVnhJTk1iNjU4Y3NYVnVER1o1TVlwV2RiY2tGVzZlWVBGaXUreFNEQy9lRHpzWEFINkZMM1BWOE9wRFVQQm1wVGVrMlhYZmVLZHFVMnBTOW03U0NpQ0I1dTJxYmlLQzJjOXZCVjI0TTZzOFJhNGhtZCtQYWo0RlR5dHYzNlNIMWJMSzh0STFsWnord2lmKzlaSUFkVDIyY3I1N2pxK3lwTVBlTjF5NTlEcXY3cHNoRCtKVEk4VWdkUzRRVmxDd0YxN1lydkpIUEQ0MktGRWJnUVkrKzBqMGRhbHlIWWNnZjU4UXlBbDkrbm5CSlpWVVZsSWlsUTZxRVBzSHpiNnJNYlY2N1lTcVpIY0x2ZkNUb2JSaTRwYUJDRVV4Y3lOTFF2SlNLY0twWkF1ZjIrOEs4MXpLeXozTWRFY3VydHNobnN4UUErb2NEQzJPeTU4aXlDSzZkU2pJclRQaUZGUTgwQm1wYTJEM2xzY0xWbVk1SVI0b2s5dGdkQmVYSTZYWjh1Mms5S0xKV2QrRnFzZjhZT1FHeE82RUgyY0NLTzJ1MCszRi9HT3o2Ky9PcnV0TGFocVIybWtWR0lkSkt1WGVZR3NabkRCZ2VKZ0JKWjhySUhDMEMwTldMTHhpakxMRkpmemkwcHpHSVJIVzRMQUpBaE8vZkxwU0w1MFJscmhNWXZiUXM0b1p1MXBlKzc5WFQ1UlI4OGRsWHMxcjZENHNKSFloNis3eDNrUFF1TWxzOXJjMW55d3pCZGwzNUNJWnhFdzZjQUNqUDhZNGRuNnp3TllQbnQ5UW1HMklWNFo0ck1Wd0k1cFpRaW1WNGNCMUp5cC95SzN2T2NGZXBXYmEwaU5MN3hBaEVHRHRzOEk3aEsvNU5IU0N6d3M2N1RTa0o4VUh5d0drdFNUSkNUMDE1eXBRQ2FTbkttT09xVWlteENhaGZTNGU0ZjlYdGZCbFNsR1djWit5eXZMU05aV2Mvc0luL3ZXU0FIVTlqeHNDUDJwSzhJcEg4alJ5YUR4YWlHRkx4TW1ReGM1a0RnZzZ2R2RQNkt5MjRBMkEwZUJpZVhiZ1BmWHlIczgyUjQ1NjkyMkp6MHBWQUdzalA0NDNteGlFK282V3YzTG5kbm0wK0YvUTFIa3Y3NFBkdkltSERONHVyR0Y4dEVCK0RsQ0ZRK2xGU3FoK2JDUEl2aHpoZTZOeHpxOERoK2lvenVuWklvZkl6cmlvMWdjckJmQjBRWWRqWEcwRlRSN3BkTjU0bTJNcHZFSDB5ZnRFbzE5bnJ2TEs4dEkxbFp6K3dpZis5WklBZFQydEhWL0NQU3NLdDd6d2N5dGFHckxhYW80MkQyMnNzd1RSTFBhRy9xNkdpN0RqRWhod0tsQnhqanc3SU15dElJM05rTThjYitKdEV5Zjh3RmtURUZpRkxVWWltUS9oUFhJOTN6clhrKyt2cW9nTHJ1MHRhWGd0bE0xN3F0QWZ6R1F1OHlVZEk0cXFZemVKeFh4ZjBOTloyb0JqZURyMkRpd0k5T1hQVXVCSGJzTDRjMy9udzEwRW0yVTZNRkJVY3Jaai9ETWFTRnhWY1o3TW9XbDJvbjhHbTBWb3d6Y3FQZGUvcWkwakhNd0djTWY5ejQ5ZWdaUlF6TDdoS1NVTTVUUHQzN0FtazM3OWNjd3BMdFBUVDIzQmg3VWhua2RHMEdVb0h2SHN5OTlHeG1RYVI0bmF5Ty9yUUZib3F1c3RTRkxyTzgwL1B0bkg4RUpjd1FhUVlaSnpOMWI5YkQ2UnJKbDZ6UUlvbXdNZll1dSttOEZzTzd6ZDQvY2ZyNmhpT2ViSFNLWm1EUEZkM1hSSmUvOUNObkxHTFlYSkxyWXZFdnRGendEOEEzbjNkaFhXUGlta0Fpc0YwUis3UGhROVZKTFdjR2g4dHFLZ29Wb1o3a3pCR3VEN1NoOWMrMlNyK1NBR0g2YUhCVDRGdDFlc3dVbmIrZm5KR2hhSFNDL1N2b3pLQ0xtV05yUFE5NGFadVl5T092MGZsUFU5UHY5S09RVXkrNVV1ZGxNdnRxbDdCSUpmbzRQaWgvbEs4ZTFORzlKTjBEOU1MdTJmNytVQkJjZ25jQjlFaHVjS1FDSnNSaFBMZ1pwWC9yK3NMZ25iUzFIY0JLNTZ2N3FObVBRWXpsTUx3Z1VGUUY3QWRld1RvZS9ZaXVBYnFjS2NNMU13TGZJNGJlL2duRzRjOFI0VTlCUDFHbDgxWjVUTFpmV2ZlMXg2VjhHekpJOTg3VnVLMlk3MTBubEVzSVVBQ3AwREErcDNiNnF3L2JFVUcwYm9MUHpvTnJJVEd0T0l3RWJ1WGlBanhrdmhzL0pBdndJRzY1djZvTlNrN1l4Slp6Rk5vK2oxZklhejArRkJqVzVjV2Yrc2lPcDN2WWhrWFdvNVNsNmFDN25RcjlEemhONzBUT2k5bkJ6SFFSRmxSM3Z2NmVjOHZZeWdJeVlRTmh5OWNpellTNWtkMlJOK2ZXTEI2aUFkUS9ERjd3eUg5OXpJcHJJTlU0TnhldmI2SHlWSlBrNTFYRkIxU0lnU0lycnB6M0VqM0orVmlncGdFYmhWWjZxc0ZsOEFuMlVZcEFsM3hMeTF1Y0JGMnhCdXFaS1licEpVdEQ5RndHZVJrVnlFMXRHcWpIdFFZaC9JTWdxdmZheUxaQnhpTytWM1RDMlZQRnoycm9DeHhOOElMenlLQ2NjeElZNkVZc2cyd0xiMWI5QityV0g0RzhOL3JnQzlEMHJYcm5RS0ViWXArbFhYbHR3RVNRZ1B6cmI1RW9SUHR5OWRpYmxTQmJ4cjRQd0VsL0dueFJsRlpwWWs4RHlmRkpkdU44MTIxWDVtUldLVTY2OW11RzNqSTRMc1hyaGw2QlZWTWNYTjlrYXE5cXpPcjJ2VGY2SXM1T3pWK3hnUU5CRHNNaWRzSjUvOCtVK1pMWG9va3RTN3pCOURqeUVuVFF4V1hPbmhJdzRrN1d6ajZwbStaSTVXMU4zMFFiVkIrUWZPSWZGemtBOFIza3NvRHVJeGZrZytzWTZrUEdzN01jclNXRTJ3MFdaWlRjaURvbVROei9hL0FBUkdhS0xFL2U0a2cxcjBwU0VkNUxxZnYyR1BEMENWRytJSVJzcTk1SE1GclhESWZmL3c5YkxLOHRJMWxaeit3aWYrOVpJQWRUMng5SmNkeDgvK0VNTDZzRitSQmhaT0lpemRuVUNjdmpMdkUzZHZqVDJYQmljZFFGejcxR1NPZWdqZytIZnlzVGE5NHA0NlVzL2craXVXSEEyc2RIdUVHWVNFblFsLzFYa3JHSTF3T3FMYzR4Vy9UeGZjSk9TQlkxZk9JMldOQXlwS1NKM1hMcTFiNGJIbHE2QlZ4Umw3WkdwWElBKzRUamhqY05XRDNoVzBoUXJvMDY4MXRIdGc3K2Jqd0NzUGt2TVV6MEc1a1BaaG0veXAxWnVheUc4YStobkxBc3Z1L01sS25QWXdybFRGUEVMUEN6cnROS1FueFFmTEFhUzFKTWtSeUNHdnhhVGtrUS9pZkY3S2R6Vm54eVEyYzg4eFF3R2NKd2I1aUZ3VElyTEs4dEkxbFp6K3dpZis5WklBZFQyZW1XdTRXRDVKTDlwWVF5czZ1dVRqcFVueTNHQ0JxdG1sU0Y3V0FxYi9TRE5OR3p5TlE3ZmE4Y3o2bzJCdWVIN25zZXd0THJXSTgxMzlrRFk3YnV3SUpsWlBOclFPMTRuS0M0RlJkWVRkNnRHTFJ6ZHpwUlEzWVNOMWVib3FMeURhaUR0dDJFZW8yU3VPTlNYREtrRFBVdEROL3lFWGhDUWNnVU43b0xKMHA5VFRnc0E0SW05M1JML0hYbkVadnF1ZWVoRU4wUmd1eWlFazZ4ZnFqdEcvL3Fyb2RmWFlkWjJYZXZVQTBlM1ExT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T2psQ2RDWHREbEdGaXdZaDluc0thV1laMmhaejlwYUFBOTY1eVJDUlQ2RlNPTHhhblJobzJFc2xJL2V4ZFkzbTZobmFGblAybG9BRDNybkpFSkZQb1ZLU2VWNEhjMksrUEhwZG1BVTdsQ2kwbkM4d1M2TFZwTVNTMTJCNHptMkppeS8vcjNyRnJDajg5d0NWTTRyV01lSGpHTkVxSU9rY0FLSXBoVG44TiszdFdyTHVldkpDVzh1Q1BtUnFOQkl4M281dTlBZ2cyQ294QmNiZUtoU2tneGNzcnkwaldWblA3Q0ovNzFrZ0IxUFpzOFFYMHczMzBSYnQrbitxZkdPS2dsdFRpOVRVSUUrbmFrT3dCVXdsR3pHQ292Y2pGL2VzZVlmaXNUMWtBVFphNUNCcFJFaCtmbmMzTGV0TGg2bEp6YlJ6Q09VN2h2WW1mcUNmUUlFRTJMSy93bnVvN3hLRk01eHU3d2RjYllsN0xLOHRJMWxaeit3aWYrOVpJQWRUMitpRndEMDg3ZW5TOVFtbmMrNlR0R3d5cWNzenV6NmowMEJGSVMvU2JNVmhuSkFDK1pRV1NvT1lTc3prZW5QWW1rUzl5RmNQbEZmakJabWhEaWR5S25zc3J5MGpXVm5QN0NKLzcxa2dCMVBiR2EySUwydjBKTCswNXlxcEVrMVJYUnNQZGRxdTlHL2daQndZdGIwMi82NExKVWM3bVp0dzVLdi80VTg0b2YvWndsNGJwcUY5YXo1TkpyS0trRi94aXl5dkxTTlpXYy9zSW4vdldTQUhVOWgrdGw5UXhpODdLMmgrNS9COVdIZ3pIN1gxaXkyOU9aQ29NZWxYRCtDbFZ5eXZMU05aV2Mvc0luL3ZXU0FIVTlpRVNNT292TWtCN2F2V2FncWRWQVpYemMvZ2JwT2x4MGdzRmpoUHduMHVoTGUxMmVmYTBtb1U1Wit4YXNkWkwvR0NqNDN0Q1ZCVG1GVUxydlRpeWdwYUdkb1djL2FXZ0FQZXVja1FrVStoVUdoRzdMakFNWGhrdEVYYnVyR1Fabm1jdEJMYVQvM2s4dE5iSEFwVmdLWGpMSzh0STFsWnord2lmKzlaSUFkVDIzbHdLcjZjaEJhMFYwQnp0UHpHdUl6RlhibFB4OUNQamlhV1hIaC9zaU1ETEs4dEkxbFp6K3dpZis5WklBZFQyUDRsMDJCdUtCREUzMGt2OUJiRjNTbi94STh6czQ5cjhYSUUyVG5HVFFYakxLOHRJMWxaeit3aWYrOVpJQWRUMlQ5ZTZsUHF1QVRlL3d4VjNYVFNUaVVETkc1T3pteTFuek9NU3IwSWJqczcwK2JmRng4aDdZQmcwMEFNczZjaUt6NG1uVzdicnVPSG1DNDRuWGtmc3dybDVFTGg0RXRaV1Nxcmhma2FwQ29LaWYzaUlCTlU0bkNnT2J1VzVKVUxUdzFBSUNaeUFDRXhuOXc2VzJpQlZJcTJVVWNXRjZONWRrRU9ER0FJd0lXcDRZUUI2d3JTMGJUd1pML1hvR1Y5WHNKdzNyei9FMjRWenNBTVlKMWpwS0F4STEyZDcwbC96QUNZQ2tsVS9kdFJBZ1VuS2ZDQ3h3Y0xRcTRLUXFBTGR1bXhRd3UrZE5CQlVvWDRtUHBEemhUbnBVY05XZXVkbFRmdmRBNlZhZldGeHkwR21McmhiZU1xQ09xNlRIcDdWT1pTVlVEcDU2bm5LOE9qMGJycm05QWQzSHplNGFpdFRzZzJVL2ZjSCs3ejFyY0VGUXJ3QVN1TUVnRlQvRGJnKzBuMCtvY0dEWG9nendzeEFaRHlhU3ViUnNtdFYwNUJRRlRKL0JOdnYvdWY1a1NZOWkvOTdLVTdJRm1ZeGw4c3B3emtUcmlvNGpBUkg2WndUWHBSbEg5NlRaZGQ5NHAycFRhbEwyYnRJS0lLNVdrNzRLNXdIMzJTWVRzaFZPZi9peXl2TFNOWldjL3NJbi92V1NBSFU5c1FzVkp6bS9wWUFmTmZWaFhHUk1KNlNvRDJvZmtIOUorWlNuTGZESkU4MGo4bkdXU2pmR3FuUDhtM1E3c2NsOGdkY0VzVlNEVnhxUVN4d2FpUlV3REJoNU9UQ2w3RHZvWnFEd29peHAwTzVWcUt2eXg4V0NVeU9PZmZ5T3JBZjU1b2VVS25hNXAySUF3Y3R5aDRJUm5VbjE5UVJ4SWRhK1R4K25LZkQ0R1JnRU1QNUs3OGZiL21lb1BrYkFkSFBVYkNmNnlCOHlPNCs5NldtUU1xckVpYXpLZXladGpidmxpa2JPZU1QNWZDOG03TzFPL0NCbmhmbk9yR1l6SFp3SGtDcWN3eEFxckI5V2tiTEx5SE1adnA1Z0dncklvS0doRkhENWJuZjlmQXp6cFF5K3c3ODg3RGtKeXZ2MnduT0orS3FsbVpBb3lIVmlINDNGejBYYUEwUm1tQmJwSEpmQUJjSmwycEFrS29IVlVjYmQ2eDVDelJSOC9PQXRucU92TnRDemlobTdXbDc3djFkUGxGSHp4M0xLOHRJMWxaeit3aWYrOVpJQWRUMmxoQkYzSDBQbzlGRVdDQXgrdjBuZmdVc1lXZDJpd2g4OXlBTXI2YXFSZHdiTVpmY2FJUHJmTUdpaDhRNlJVU2RHTnQ5cjJhVytRODVxSEZKdGk5QWZXTStuK2xzZ2x3MnljV0ptOEhCQmtGTG1RMFdwc05nRUFqZFNqLyt3OEJsMVVVd2h4bkxrYy96c2l0S0xSdHJIQ3JOV1JjUDlWTDNUZDhIYVVPNmZTbHFoMzZSdWNmdzhUUTFCMU1Xb3VwamhQUjhPVHorQ1VrZHlLUGJFN1VqMVVEcGg5a1lhcVhQTWwxLzZtcHEwMmJMSzh0STFsWnord2lmKzlaSUFkVDJPUGZacWZFclB3dDhmSmxvbzNGSG9ac0hqM3VOUjB5T2pJU1pRRlhmaGRXWWd0VW1iM1hOSURIb0hHeFducTVNNmRSL2hCQm81VjRpK1RMWnZNVXFlRkpjUjRueTFURFJkOHRPM2RCZDkwNlJ3bi9CQ3FIS09PMEdLTXZ4RkE5djhmVG0xTVBmeXJnTmxzd1hBdVpqeUg5c3ErNTB3bFpocW9KTVZsSzFVcSt0MUI4SUtZZVkyZDMvdzUzdGVlOWdTN3RRSUVTS1ZMUlJTTWV5Y3VMZ29vTUhKSGdoTFpkYnlKcDBZKytrRXFxMXJBTHZFS2NmdWRPdVMwMmExTzZFMzFBOVl5bVFQeVYrb2dBNVJhN1lNaUxnUTYwVDBlb1NrK2NpaTRoUEtKeGUvNGJlL1gzMk44cElJQkxIbkdxVHRqRWxuTVUyajZQVjhoclBUNFVHTmJseFovNnlJNm5lOWlHUmRhamxLWHBvTHVkQ3YwUE9FM3ZSTTZMMmNITWRCRVdWSGUrL3A1enk5aktBakpoQTJITDF5TE5oTG1SM1pFMzU5WXNIcUlBZVB5Q05yREozNWR6VXE4c3I3NWs1cDlzZnNOOWY2ZHp2eEFvRWdOemd3VnpLUEZseFdxd3pVd2F6V3lkR0NTV3BEbEhLZ09JTFlIaUx6WmRmSDVwdGNsNlBpQ0RiVWd0eE5yUVBLTmdYVUJZQXBLNEYvSjl4Wmw5SlB3MU1yWUkxazRVcDdHTVVhYWNYdHoyaWxEUEY2VHhQQmJyU0N5aU1Udm9GWnlyeTZRNW00OXZjVktna1JPUC9QQjEwNnpncXpWa1hEL1ZTOTAzZkIybER1bjBwMnlPZEVoL0N3Y3VGWTJORVVhRHVJQm9neWJDb0FTcEdTdi9kUC9OYTk5YWFmQiszdkE2eEM3c2c5MWdHUm14dGxYTnZZaUNNbUREekNaaE1mbmYvcWh4MWY4dklPRHJqTDVpZDZqeEhybWhBUmNVT3hENGo5LzU4V3RKWXZhbXRDendzNjdUU2tKOFVIeXdHa3RTVEpNcGdadGl6b0FYTjU5aFErVTVDaElRMFVUaklwQ0NoY0F2V3A5L0NIeW80Umc5L2lxaU5MU0JPVzQxcFl2Z0dVN3RIMWlQdWhleDE5YlhNNW84RTZXQ2pPeW5wN05nQUNWMytSQXo0cmFsMWhuYUZuUDJsb0FEM3JuSkVKRlBvVkMxUU9DR0RPL28xeFhiNjhnR2lIaUJDc3NIN1drVHN4VGZQVHFpdVhHMk5pV3N1b05jUC84NDQ3VE9Ed0J3UWh4YTFmM1JGTDBxVnlscUdyYlBlcWZnd1FYMFROdUJxOUQvTlRISXloZVR1d0FvVllHOHY0bE1qN29ydm51blV3d2drNlVYKzNVVWJMYUFaNEttdGRSM2hUc3hLaWlLNFJyaUVwMDc1RUg1MmxkalJKYjR1YkkvUVgrcWRyVEx4RndJZFllUC93aWlrTlZPWFBNQ203dUh2cmNJcHZocWNWdFZFWCtHOWFMOHZQbnpjK2hIbnhBNzA4YkQ2TGZKTmdhM0Z5SEtpQlIzVWY5bjBEZ0hHTjVYMWh4R2xRYm04VVRMOUxJQnZpRDk2MFY3SlF2bXFBaC9rNHBkZ0c5cXc0VWdoT2hqRXk1RG1DcCtkdjRSV09VT2FtNXFkK0tlZ2trRVNPRzhrUVFlcHpwUXkrdzc4ODdEa0p5dnYyd25PSjhDSlJsMUVPRE0wUVl6a3pNdHY4WEhMSzh0STFsWnord2lmKzlaSUFkVDJDb3Ryb1JQcjlMQUwxS3QrZDdEM01kdHhOYXNMVHVKZERJK3FOYmI4UFR0UHV0L3REcU9QWGkxMXl1NHpWMzNuUlk2RmovWlI1b0s4b3c3a1dtYnMwK0U4R09oaEdqRjVhN3NiL1FYdzJRT0RxdXNvZ1o2OU5QVHdjTUlJRUI5T0RDV09LQisxdnJGS1RGaDhmV29PQmdMUkpyRTc1MWswU2FERGxWTjNpc05KQU9zZlhqekd2b1l6VzJiYXBqR2xxeWpqNmZ5QlUrNUl3TjhGcTRsQnZnTjhZSThWTWQ4YmJ3SWp2SjV2S1dBU2ZBQUVCeStMRFZjNnNYdGNzUHZXdDMrc3VzOUkyMnpLMlRqN2hTNnA2TXNyeTBqV1ZuUDdDSi83MWtnQjFQYngvYUx6U0xRbXR3TzRXUm9OMjJLWVZKQTMvWHpTRWdiZ25lZ3hxcU5PQmkzdGRubjJ0SnFGT1dmc1dySFdTL3p2N3EyVTBIQW1TSGNiK250dGxzVkxqTWpSd2phT2dBdFJlajNkRXZTUFZGdy9pMGFDSzB4TVFiTEtoV2J4dFFDQmtsZkZhWVZGTFBaWkUwbjNTL3hqMUJQVG1GZGFVR3laUloyNlFER2hPTXNyeTBqV1ZuUDdDSi83MWtnQjFQWXpMTklUNjdzd2hKMVRFbklBTGNVcys1Smx3SnU3bXhUUlU0V1hBbkJQMTNnZTVnVmpqMU5hSjY4d3VhUGlWaDdBZDZVUFdXZ1I2d0xJUG5UVWZ0RmowcDZWWFNKUHVUZWF3UlJRNGMzY3JYZVFtdENIQ3BVZ1hLVm90Y0RkeldBVFRuT0tKVnlQMm1MT2xiTWg1dk03K3U0Zkw3TTE2ejg3U0pFSFRUVG1tK0s5TkhOcG1TbXdKYmhhc1p3ZGd4L0FkNlVQV1dnUjZ3TElQblRVZnRGak9JaWhGL0MzMWdzSzRFdnR1dXNtVWs4OWNja0FQNWl2bXB5R1JMNjZ4S1QzYkJBLzU0bFZPaXJWeHJaUUIvdzdUUzdsL0VlLzJvMUtFVUw4cDdEdG8vYzVzblFKbENTVWZERERPdWV4bVhqQU9iUWdzMzdiTER5RTc0WUtLYkxSZHd4SmVFa0NqRGR3THZNdUpHcnNDT3oyT3RqQVBJUVRrakNoTkp5V0N6U0VkelhLTHFJZ1JLMmlwQU1GZ0tSdmxSYmFzSFBsUnVzU2cwcFJOVlVDUVozWFBnbDNxVElsYU1Ib2JCUVJuUDAxMXZvaDV5NkRCTUtDMTZsWU5EOFVmbXlnY2xUWXNaQ2VkZXA3VWxvRHF3Y2pIYTZLSDhXMVdGWjlEWHhQM1d2WUYwUkRyWVRiNGpvUW1JVlYvY0puZWQzY1AyVXJ2cGxyNkxuZFRya05xQllBcEs0Ri9KOXhabDlKUHcxTXJZSTFrNFVwN0dNVWFhY1h0ejJpbERQRjZUeFBCYnJTQ3lpTVR2b0ZaeXJ5NlE1bTQ5dmNWS2drUk9QL1BCMTA2emdxelZrWEQvVlM5MDNmQjJsRHVuMHAyeU9kRWgvQ3djdUZZMk5FVWFEdUlPcno1c21adUx2SVhtV09wRVhXaUdvSWxpeWtwbkhjbWxaWkhsSnBWdXZvVXowRzVrUFpobS95cDFadWF5RzhhOXFSb3JWWEl0L2hhOTRLYzJ3ZlRjdkxLOHRJMWxaeit3aWYrOVpJQWRUMnp1WmhGcUhWRlJKVWNqME8vZVRHTGwzQllMVlBEVVFhTDlmSHQzNVN2Nm1GSWkyRUJWN2xma3BqbFNMUlhRTzlDendzNjdUU2tKOFVIeXdHa3RTVEpJSElhdzNnWGtxQW8wZWp3SlhyMjJLcmJZZko5RzVYODlQbUNIaXlwekdKQW8wM2NJMjB3TDJFd1czalRlWTdiL1lXWUNwbHJOcU1DRW44R29rNG42V2ZiL212YzN1aVN6MlNkbTc5VWlYakpqZkwzMDVoVTFiK0JIangyS3JTQ0tnRVZvL0JHUllSdC91dHlrdHJpNlpCZUhCVUxhbmc2cnkrL2RSVjVOM0VzRHViSlJYNklEWlB6ajh0d1E2U2N2a3ZuNGNLQzFRWitUcE1VUnJNL1JUaEJNRUVUcFRmcXlPNFpNYXpWc2JJZVIwNGVMRzJxWmJsR1hyVHY0VUVheFQzSnlodE5HWmVTaGJnK1BkNzkvMjQzelhiVmZtWkZZcFRycjJhNGJlTVp0eXlnM3lhVE45enVSaXI0TFZ6b2x0VmR1cUlwUldNbHhXZnIreEJ4UEJSUmhaQUFMZU1VQWdiNXhVRHoxU3hzdGNZdTZtcmZFaFBpOCtqaitHZGtLYmlRbTJWeWM3ZEpaVlA4VU9RN0R2YXg5OFRvM2p4UUFEdTlieVlEaVF1ZEgrTGxHYnRyUFBrMUJHNXN0SjFTMnAvbm1SWFo0SU9BTkxvRURuMnpTQkYzRE1DNmRzNzZqZ3YzNWI0eUZUeHl5dkxTTlpXYy9zSW4vdldTQUhVOWhRdjNyc3dzQkg1WW5OQk8rMDEvQm5PbERMN0R2enpzT1FuSysvYkNjNG40V0V4cmlTN0RMQ1pkdWlFT0prWE12ZnlucEVyMWRNOHBrTzZ3OXpZK1RzdGZnRDRjUWtwVEl5NVkrR3lwU25Ib0RMaW5SMGlmclNqd0JSeDgvY1luTTZVTXZzTy9QT3c1Q2NyNzlzSnppZHlTNmxidmNkWXlVOGI4RzZIYXoyU2Fzdmc1RmVOVnVtbWNlaWpvaTh6RFYxdUh6bHBKOWJ1VUFibUxQMU53ZU5ldXFLNllWdnA2dkNlRTRHaGZIeUhZS2k5eU1YOTZ4NWgrS3hQV1FCTmx2VHYzNGJKR3dzaDdjVVlYeTMxd1pUT2xETDdEdnp6c09RbksrL2JDYzRuaWNmbklybnltTStSaGNWTmZadXV1MTVSVnlHYTY0S1BtNDVRS0FXZXUwbmhUQkRRWXdGRnNILzlUWk1STjJsYkh0NFloL2NWRWgzSG9DWUZqMkFnTVVvYjhLbjFLVmlET3N2ZThqbWg2OHVwVWhtSDZJN0hlWGkxWWRUSFVqNkpobmFGblAybG9BRDNybkpFSkZQb1ZLSmZQd2gyR2tYRDdGcUY1MEdSOUdiandYOGZiZmpZd29yZGtYczM1RG9wQTg4K1l1NCtTYnpnekpLRXdpSmZxMW9KUzhDbWVodWNPc0xGclJUV21ucUF6QjhEMDhUWXQ0TG9sQkttT0ZEcDFYVlhTVnFtYXhwSGt4enNvRzk3aHMvOXB3VzVUbEtERnVhd0YrM1NQZ3RoOGJCbFF4NmpJYVhlUm9TWXY0ajdram5oY3pxL0JGMitweWZEd1NBalNCalhOK0E0azRGOTVJSFgrZVBFd0Z6dUp0bVRDTGY5dlRBeFdFOG9jUzVlQlBlTytzRDRRdy9CMi8xbzdGQmhCeVlzdG9EM2pUYitzeDhnWS9jOUl2dnIzS09qWmdPU0R6VHVmeThNN1ZYaFB1Mlo3UFNOckw5L2ttQTZ5czV2MXRLbStqUWF3djMvUUhYNDJKOXk4aEEydUxrRmFOeU80WHhDVjB1clRwaUVXY0dNTXIrbE9FSnlkNytuTm1Ld2o4WkRFVit6UG1MSExsQ0hJQnRNdTR2TEs4dEkxbFp6K3dpZis5WklBZFQyY3ZJN2NPTk9VeHZubi9oZTFJRVBrNllhY2oycmUzaEtzcm1jSTgrbU80akxLOHRJMWxaeit3aWYrOVpJQWRUMlZvVDVQWDdUblZvTDMzS2VxclI3YnFjekYvRjdoY0UvMDRIbDBOMXZJczJWOEZaUS91aGN1U2JzTmpjeEJRYi9Ibkg5Nit2UC9sL2JIMDJRdjN0VmhIUXY5Y0Z1cUpVRWFzclR5ekNYYTBJcjFqa0xGOC9yaHZqY3Eyank2aTE1cjZJMTdlaWZDaXkrZFlXNnI2dlFYV085cFliTzJzbmlYWDJ5VHhWc29rRXlUTEJnODFVRC9jQ2NTbWZrNnF1d2NHUXRxeno5U2JxNjI0b3J5UTZ1MlpGWW5vNS8rRnFiaEhScXZOcExld0lFUXNHa2xqa3JTRENBNU5aVG9hYzk1RTVOemVod2g4U0NreW9oS09oUWExZkNadUhkdlc5RGVCcVU4WGlzMUx2YUVYVEJ3MDBHZ2RvS09PQ1NxcVZXZHZHaEtyTElqeWExMXlCcDJMTXR6T3JzOG8zLzlrbmx4U1ZhRVJ5cFdaZHNwQXpNc0V5anl6Z2dJVFBqWlRUK3ZrQk15ZHdtMHU2NU5MZVNqZUtJZmV4MjRUTjBodW4wSGxXaUhRSVUrM1l4NllwcmkxdERod3ozODNRcGhFeUtGaHcwaFpnMXI3bEd2MG5wVW9welF2dVNaY0NidTVzVTBWT0Zsd0p3VDlkN3Bnb1JuUWh1ZkZEQnlFZC9qazBLTStGNStFNms5SlZ1dDVBcXFxSWpEcU5UaWxrVGNaY2gzejErWW5OM1lzSGJQK0FqV0hqVmNZcUhNUGVNNjF1aXFlUWRxUEJSVURBS3FIeVh6RW9SeUxKQ0dubjM1MHVhSXM4ZHhQeFhjZ284Ui80UTZpTXBZVGFWSElPcEhKbldoSm1Jcng1SDJiY0xiZlQ1L1FtTUlNVzVMZ291czE1eS9BSnJSMG5WbWVWY01KaXhVcjh4Qjh3T2Flc3FZYWRGeXl2TFNOWldjL3NJbi92V1NBSFU5a09Zb2dndWw0NHpJWjYxTHJvRmdYS0dkb1djL2FXZ0FQZXVja1FrVStoVVBiVmMwODBha2toTFhPcjdjZzhWRVV2WmJ6MEhYOGhQRnNhYlVENnIrYTJNTGwwRk55WjJFSFlrVjd6QUIvV05BRVpMcTNhdXYrcDdPYnZYN3MvcExsUjRZZ0tWQ1JPQlZ4bE44ZzNYV0tuMzY5TjFqbG9zcVJCZERNZkpCQmJEVHpjazg4M0RZSjJOTmRWUVlqT3Fnc2JLbmxxOFkrUGoyN2Q1d0MrYVpLUzVDLzdDZVN1OGZySWdiZ2luaGY3USt3MjE4aDlBdEtUWENRaWxnZXVSTEk2b2ZKVGRXdHlIQkNjYU5yN1g5aGdwclIrWmtSRWV3UW0wamltTjduQzd5eXZMU05aV2Mvc0luL3ZXU0FIVTlrOHVaRVVQckIyVjFMbThsT3kzYzgzSEljUlc0RTE2QjdsY3BMSHFaYWVwRGhrd29DL01hdVFMTm81aUVXMmV1Y2VqbWZnYVpOTEcxbEVRUzlvR1pCTUR4aG5RZ3Evam83bkpZeFdHaHBERkU2U3NoU05wa2MrM3VrWG5nYWRmaUg5TjgwQVBYSVh2dThxais3NGNITGZPbERMN0R2enpzT1FuSysvYkNjNG5oQTAxa3NOV1BpTGprQWI4VXRLSnE0aU5PTCtFREV6NnJmWW5hNkVEWUQ3bnRzL1NPTE4zUzV4VVF3RlFSLytMVFRwN1JidWdaMis2Yk1xQXlacVllOHNyeTBqV1ZuUDdDSi83MWtnQjFQYjVyT2FSd20xSGZncmxjZzFaRWczUlVubk9oRjBZWUJ5VVlYZEJPRGs3cFBNbDZTMWFsOVNySGZneW1UT2RJTWJYSkZiVjcyQlFsandVSzk2R1YzYVFvaE1qazAvSStSS2RpMDg5RGdvTWJ3QTMrVmMvL2VIcWg3NzZZTmVGaHdrTnE5QWRESjRuL0xSRDNXdFlKWEFTdDNpdkM0dTlRQlRmYi92Q21OSmkvZnphZXM0b0pBS3VTYzBDbythdTZSWnlweDVENWpMTm1YTTNGOFlacGc4eVZnUVh3R293OUY1M1RQdHdFTGhFYkNkVUpPZyszV3ZMWFJrV2NwWmFsZzRLMTU5YUVNL3Z3WXdDcTM0bHhrU0ZobEt5VFVnNVJzWGZSTHBhTWhtMGVaU0hkdW9ESE5mNFoxb2dnWkd6aWtvR29wOGMvenJvV0JvTi9hVkttbjhzNFR5RStVQlFlenYxZkxCZVV5QkdiSDhKWEEvNXUyMThFWkJCUXR3M29xRXY4eUoyRGNWZEtOeG16dEI4TG1uSCcpXFxcXG5cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt55m75b2VXFxcIixcXFwicGF0aFxcXCI6XFxcInB3ZC1sb2dpblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgaXNsb2dpbiA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCB7fSk7XFxcXG5pZiAoaXNsb2dpbiA9PT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB1cmw6IFxcXFxcXFwicHV0VmFyKCdteV9hY2NvdW50JyxpbnB1dCk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDnmoTotKblj7fmmK8nICsgaW5wdXQ7XFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiAnaW5wdXQnLFxcXFxuICAgICAgICB0aXRsZTogJ+i0puWPtycsXFxcXG4gICAgICAgIGV4dHJhOiB7XFxcXG4gICAgICAgICAgICBvbkNoYW5nZTogXFxcXFxcXCJwdXRWYXIoJ215X2FjY291bnQnLGlucHV0KVxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcXFxcbiAgICAgICAgICAgIGhlaWdodDogMSxcXFxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogZ2V0VmFyKCdteV9hY2NvdW50JylcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pO1xcXFxuXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcInB1dFZhcignbXlfcGFzc3dvcmQnLGlucHV0KTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOeahOWvhueggeaYrycgKyBpbnB1dFxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgdGl0bGU6ICflr4bnoIEnLFxcXFxuICAgICAgICBleHRyYToge1xcXFxuICAgICAgICAgICAgb25DaGFuZ2U6IFxcXFxcXFwicHV0VmFyKCdteV9wYXNzd29yZCcsaW5wdXQpXFxcXFxcXCIsXFxcXG4gICAgICAgICAgICB0eXBlOiAndGV4dGFyZWEnLFxcXFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxcXFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiBnZXRWYXIoJ215X3Bhc3N3b3JkJylcXFxcbiAgICAgICAgfVxcXFxuICAgIH0pXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc5aSn5Lya5ZGY77yfKOWFiOeCueaIkSnigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLkuI3mmK/lpKfkvJrlkZjliKvngrnnoa7orqTvvIzlkKbliJnlkI7mnpzoh6rotJ9cXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJpc3ZpcFxcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuoblpKfkvJrlkZjjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc55m75b2VKOWGjeeCueaIkSnigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLnoa7orqTnmbvlvZXvvJ9cXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJsb2dpbmluZ1xcXFxcXFwiLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG4gICAgaWYgKGdldFZhcihcXFxcXFxcImxvZ2luaW5nXFxcXFxcXCIpID09PSBcXFxcXFxcIjFcXFxcXFxcIikge1xcXFxuICAgICAgICBpZiAoZ2V0VmFyKCdteV9hY2NvdW50JykgIT0gJycgJiYgZ2V0VmFyKCdteV9wYXNzd29yZCcpICE9ICcnKSB7XFxcXG4gICAgICAgICAgICAvLyBUT0RPIOWQkOS9rOivtOi/memHjOWPr+S7peaUueaIkCAkLnJlcXVpcmUg55So5rOVICAgICAgICAgIFxcXFxuICAgICAgICAgICAgZXZhbFByaXZhdGVKUyhcXFxcXFxcImR0ZDFQM2RURUlUb25zZ3JORmZvQmlnaTVsamF6MFBlR21ibU1qanI5SDVuZnZzbkJ3N0pGcDM3Y24zZWdxdTB5LzB3VFcyb1U3cXRNd1FJQWlMaEVTVktCbEtrUnZXMHBuUERkSGw3UEd3d0RUNUdNMXZCc29nYjdZRHB3bXdWOHJ0dGFkME81WUpCdnBqWDI5aFVCcFNzaWFvN2wzVWVienhOQVdZaWo3WXdIV2h0MGpWYmg1U0w3UFhWbzE0OWZQU1R1eGw4QSt2TFVXaSsyV3hHck9aK1F2dHJZSW4yOEJxUzhQUzd6ZjBSMHlyOWhYempiTU9PWDJDT2RWWUtQZGJHc3h6a2xWNVgyTExtS2JQZ0VmUUVsQ2dNWnBZdW5lMEk4T3lJNTVITEs4dEkxbFp6K3dpZis5WklBZFQyZFRRdkNCYitpSGpwUjZLME1yMGRmYy9qclRkLytubXNtV3Jraml0dXE4eDJoN1UzYlptYXhrcVlyeFNvcHJMaVp2bkJrU3ZFb0lpcVVVT0tpbUN5MDFmM3RSZlNRQmVSNWxnVDVBL3hxZ2QyOGFFcXNzaVBKclhYSUduWXN5M01MWlJoU0x3NWtkU1UzWStkeUNhNlpjSUR4bE9HZVNGTG1JME9DRmJwWmU5Ylk3bktVT2FpMytUSHNhRmlFRXFwZC82blVRRjRUWlJCZ1ZxallFRndXSnlLQUs2REFxb1J2QjJUMGlmMndVdk9sREw3RHZ6enNPUW5LKy9iQ2M0bnlaeGREZlFYTjZScUIraTZOZ1RiQ2pOZDRURlg1ZldCdkhhNXBIclRTWkFoVFc5d0ZBNXdzQURCOTV5K0p4Mlg5UWs0R0xDR3N0Z0djbUhtOTZhcDF1V3ErSzh2R0VaRWJFamtVNTJ0TVM1eno2Z203WWhYZjhlQllCbUVhaUx1TWVVNzVHZTJxUzZ1T29qMjJJVEVVY3NyeTBqV1ZuUDdDSi83MWtnQjFQWVpOeW5YTGwxdGZvRFkzSFpnUGFrZjZEK0FEelFZcXhxUktaQ3RsTkl5YTlrOEM0SDdmYmhMRFhkV0Ezb1Y1eVVPZ2FTWEsxT000MEZ4TnlOWHBBL1pLUzZnWTNCMS9WMit6cHorUTdDbXVlNStxYU8wWHJEUDE1aGpTNGJ4bldyT2xETDdEdnp6c09RbksrL2JDYzRuWHhla3VvVFZVUlk3ZWgrZElGNFFPYVhtYk5qWU5raXFuQWQ4NUZyWEtYb2VnSlpDODVCNEpWcU9XY3VlaXBOYUh5L2R3QWhLcG5LLzVKTzdaNnlhMmxzMi9KdlBPQ1A5MWU2ZzRITytZcUVwTHFCamNIWDlYYjdPblA1RHNLYTVucHJia0lQMmtuRFhYcXRNWUdSZGNpZ2VJUnorT0htbktMbS8rV0NQYTA2MThFcXZNc0dnOWZwdnRVbzIvdG0wUnpZWWk4a3VGR29wVHlvaWtEd2kzY3NyeTBqV1ZuUDdDSi83MWtnQjFQYTFBRGt2aXZrbmNFaFBXUDR3WENhVHd3cFowRzYrWVR2eXA2OHRoRmRBTDV4eDkrblVhNWpXbUpVeXlRK3IxVXNENXNNcWluWTViL2VEVW54UktLQlR6cFF5K3c3ODg3RGtKeXZ2MnduT0p5ZEhQTTJhaDc4ZUF0dFNhaFZDRWIvbDNacWkyaEZraVpKOGd4UEMwUFk3L3F0Mk4wbjhsSEQ4KzcyS1RVRElxdVg1NjVDSVFuY0RXNUtmWFVaTE9uWmJzNlJUcVIwMEx1UEhBeFBJSGhpYWJqa052U1ZRT3p2M2F3ZXJhbWVTTzhzcnkwaldWblA3Q0ovNzFrZ0IxUGJaZkFBKzdnK1lkVE5wZXU5TFJSb29pRndWLzljdTVIcEVnWjJYNndhV2Rvb1kxZzVwQ1hLcE11L2Q3YzNoZFFmTEs4dEkxbFp6K3dpZis5WklBZFQyWTk2c2tCdE5sdk5BeDZJR3B6S044ZU4wT0pDbTJJcXNKSm5IWEpkMWZyeUNNbUVDRkVlYVZicHVLRzNWMDl3QUM3U1lpN2ovYkNCK0RDMTFCU2FadjhCM3BROVphQkhyQXNnK2ROUiswV010WmpLNFFsZnpzTXRnR3FkbmwvRCtcXFxcXFxcIilcXFxcbiAgICAgICAgfVxcXFxuICAgIH1cXFxcbn0gZWxzZSBpZiAoaXNsb2dpbiA9PT0gXFxcXFxcXCIyXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzlt7LnmbvlvZXvvIHigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLnoa7orqTph43mlrDnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXFxcXFwiKS5jb25maXJtKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dFZhcihcXFxcXFxcImlzbG9naW5cXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG59IGVsc2UgaWYgKGlzbG9naW4gPT09IFxcXFxcXFwiM1xcXFxcXFwiKSB7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCc5L2g6ZyA6KaB5Y675a6i5oi356uv5pS55LiL5a+G56CB5omN6IO955m75b2V77yB77yB77yB4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIGNvbF90eXBlOiBcXFxcXFxcInRleHRfY2VudGVyXzFcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi56Gu6K6k55m75b2V77yfKOivt+S4jeimgeWwneivleWkmuasoeeZu+W9le+8jOWQpuWImei0puWPt+W8guW4uClcXFxcXFxcIikuY29uZmlybSgoKSA9PiB7XFxcXG4gICAgICAgICAgICBwdXRWYXIoXFxcXFxcXCJpc2xvZ2luXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiKTtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2lzbG9naW4udHh0JywgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5L2g6YCJ5oup5LqG55m75b2V44CC56Wd5aW96L+QKOKcquKWveKcqilcXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxufSBlbHNlIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzngrnlh7vov5vlhaXnmbvlvZXpobXpnaLigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF9jZW50ZXJfMVxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6ICQoXFxcXFxcXCLnoa7orqTnmbvlvZXvvJ8o6K+35LiN6KaB5bCd6K+V5aSa5qyh55m75b2V77yM5ZCm5YiZ6LSm5Y+35byC5bi4KVxcXFxcXFwiKS5jb25maXJtKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHB1dFZhcihcXFxcXFxcImlzbG9naW5cXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIpO1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvaXNsb2dpbi50eHQnLCBcXFxcXFxcIjFcXFxcXFxcIik7XFxcXG4gICAgICAgICAgICByZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/kvaDpgInmi6nkuobnmbvlvZXjgILnpZ3lpb3ov5Ao4pyq4pa94pyqKVxcXFxcXFwiXFxcXG4gICAgICAgIH0pXFxcXG4gICAgfSk7XFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLnmbvlvZXpobXpnaJcXFwiLFxcXCJwYXRoXFxcIjpcXFwibmV3bG9naW5cXFwiLFxcXCJydWxlXFxcIjpcXFwianM6XFxcXG52YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzmlrnms5XkuIDigJ3igJ1cXFxcXFxcIixcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcXFxcXCJsX2lkXFxcXFxcXCIsXFxcXFxcXCIxXFxcXFxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcXFxcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXFxcXFwiJyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbn0pO1xcXFxuZC5wdXNoKHtcXFxcbiAgICB0aXRsZTogXFxcXFxcXCLigJzigJzmlrnms5XkuozigJ3igJ1cXFxcXFxcIixcXFxcbiAgICB1cmw6ICdoaWtlcjovL2VtcHR5QGxhenlSdWxlPS5qczpwdXRWYXIoXFxcXFxcXCJsX2lkXFxcXFxcXCIsXFxcXFxcXCIyXFxcXFxcXCIpO3JlZnJlc2hQYWdlKCk7XFxcXFxcXCJ0b2FzdDovL+WIt+aWsOaIkOWKn1xcXFxcXFwiJyxcXFxcbiAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbn0pO1xcXFxuaWYgKGdldFZhcihcXFxcXFxcImxfaWRcXFxcXFxcIikgPT0gXFxcXFxcXCIxXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+aTjeS9nOaMh+W8lSDikaDlhYjngrnlh7vkuIvmlrnnrKzkuIDmraXov5vljrvlk5Tlk6nmiYvmnLrniYjnvZHpobXnmbvlvZXotKblj7cg4pGh6L+U5Zue55u05o6l54K556ys5LqM5q2l55m75b2V54S25ZCO5oyJ5o+Q56S655m75b2VIOKAnOKAnOazqDrmlrnms5XkuIDkuI3lj6/nlKjlho3ph4fnlKjmlrnms5XkuozigJ3igJ0nLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJwxLiDngrnmiJHljrvnvZHpobXnmbvlvZXlkI7oh6rliqjojrflj5Zjb29raWXigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS9ja1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCcMi4g5YaN54K55oiR55m75b2V4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxuaWYgKGdldFZhcihcXFxcXFxcImxfaWRcXFxcXFxcIikgPT0gXFxcXFxcXCIyXFxcXFxcXCIpIHtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLmk43kvZzmjIflvJUg4pGg5YWI54K55Ye75LiL5pa556ys5LiA5q2l6L+b5Y675ZOU5ZOp5omL5py654mI572R6aG155m75b2V6LSm5Y+3IOKRoeeCueWHu+WPs+S4i+inkuiuvue9ruKGkuafpeeci+a6kOeggeKGkuWOn+eUn+eVjOmdoiDikaLlpI3liLbmnIDkuIrmlrnovpPlhaXmoYbph4znmoTpk77mjqUg4pGj6L+U5Zue6aaW6aG15oqK6ZO+5o6l6L6T5YWl5qGG5YaFIOKRpOeCueWHu+esrOS6jOatpe+8jOaMieaPkOekuueZu+W9leWNs+WPr1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3JpY2hfdGV4dCdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+S/neWtmCcsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJ2YXIgY2sgPSAnU0VTU0RBVEEnK2lucHV0LnNwbGl0KCdTRVNTREFUQScpWzFdLnNwbGl0KCdzaWQnKVswXS5yZXBsYWNlKCfvvJvvvJsnLCc7ICcpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLGNrLnJlcGxhY2UoJ++8m++8mycsJzsgJykpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5oKo55qEY29va2ll5pivOicrY2tcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgIGRlc2M6ICfor7fovpPlhaXpk77mjqUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCcMS4g54K55oiR5Y67572R6aG155m75b2V5ZCO5omL5Yqo6I635Y+WY29va2ll4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJodHRwczovL20uYmlsaWJpbGkuY29tL1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfY2VudGVyXzEnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IFxcXFxcXFwi4oCc4oCcMi4g54K55oiR55m75b2V4oCd4oCdXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2Uvd2VibG9naW5cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJ1xcXFxuICAgIH0pO1xcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwiY29va2ll6I635Y+WXFxcIixcXFwicGF0aFxcXCI6XFxcImNrXFxcIixcXFwicnVsZVxcXCI6XFxcImpzOlxcXFxuc2V0UmVzdWx0KFt7XFxcXG4gICAgY29sX3R5cGU6IFxcXFxcXFwieDVfd2Vidmlld19zaW5nbGVcXFxcXFxcIixcXFxcbiAgICB1cmw6IFxcXFxcXFwiaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS9cXFxcXFxcIixcXFxcbiAgICBkZXNjOiBcXFxcXFxcImZsb2F0JiYxMDAlXFxcXFxcXCIsXFxcXG4gICAgZXh0cmE6IHtcXFxcbiAgICAgICAganM6ICQudG9TdHJpbmcoKCkgPT4ge1xcXFxuICAgICAgICAgICAgZmJhLmxvZyhkb2N1bWVudC5jb29raWUpXFxcXG4gICAgICAgICAgICBmeV9icmlkZ2VfYXBwLndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2JpbGljay50eHQnLCBmeV9icmlkZ2VfYXBwLmdldENvb2tpZSgnaHR0cHM6Ly9tLmJpbGliaWxpLmNvbS8nKSk7XFxcXG4gICAgICAgIH0pXFxcXG4gICAgfVxcXFxufV0pXFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi6aG16Z2iLXdlYueZu+W9lVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ3ZWJsb2dpblxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgY2sgPSBmZXRjaChcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9iaWxpY2sudHh0XFxcXFxcXCIpLnJlcGxhY2UoL++8m++8myAvZywnOyAnKTtcXFxcbmxvZyhjaylcXFxcbnZhciBsb2dpbl91cmwgPSBcXFxcXFxcImh0dHBzOi8vcGFzc3BvcnQuYmlsaWJpbGkuY29tL2xvZ2luL2FwcC90aGlyZD9hcHBrZXk9MjdlYjUzZmM5MDU4ZjhjMyZhcGk9aHR0cCUzQSUyRiUyRmxpbmsuYWNnLnR2JTJGZm9ydW0ucGhwJnNpZ249NjdlYzc5ODAwNDM3MzI1M2Q2MDExNGNhYWFkODlhOGNcXFxcXFxcIjtcXFxcbnZhciBsb2NhdGlvbiA9IEpTT04ucGFyc2UoZmV0Y2gobG9naW5fdXJsLCB7XFxcXG4gICAgaGVhZGVyczoge1xcXFxuICAgICAgICBcXFxcXFxcInVzZXItYWdlbnRcXFxcXFxcIjogXFxcXFxcXCJNb3ppbGxhLzUuMCAoTGludXg7IEFuZHJvaWQgMTA7IE0yMDA3SjNTQyBCdWlsZC9RS1ExLjIwMDQxOS4wMDI7IHd2KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBWZXJzaW9uLzQuMCBDaHJvbWUvODMuMC40MTAzLjEwMSBNb2JpbGUgU2FmYXJpLzUzNy4zNlxcXFxcXFwiLFxcXFxuICAgICAgICBcXFxcXFxcImNvb2tpZVxcXFxcXFwiOiBja1xcXFxuICAgIH0sXFxcXG4gICAgbWV0aG9kOiAnR0VUJ1xcXFxufSkpLmRhdGFbJ2NvbmZpcm1fdXJpJ107XFxcXG4vL2xvZyhsb2NhdGlvbik7XFxcXG5cXFxcbnZhciBpbmZvID0gSlNPTi5wYXJzZShmZXRjaChsb2NhdGlvbiwge1xcXFxuICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgXFxcXFxcXCJ1c2VyLWFnZW50XFxcXFxcXCI6IFxcXFxcXFwiTW96aWxsYS81LjAgKExpbnV4OyBBbmRyb2lkIDEwOyBNMjAwN0ozU0MgQnVpbGQvUUtRMS4yMDA0MTkuMDAyOyB3dikgQXBwbGVXZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAgQ2hyb21lLzgzLjAuNDEwMy4xMDEgTW9iaWxlIFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgXFxcXFxcXCJjb29raWVcXFxcXFxcIjogY2tcXFxcbiAgICB9LFxcXFxuICAgIG1ldGhvZDogJ0dFVCcsXFxcXG4gICAgb25seUhlYWRlcnM6IHRydWUsXFxcXG4gICAgcmVkaXJlY3Q6IGZhbHNlXFxcXG59KSkuaGVhZGVycy5sb2NhdGlvblswXS5zcGxpdChcXFxcXFxcIj9cXFxcXFxcIilbMV0uc3BsaXQoXFxcXFxcXCImXFxcXFxcXCIpO1xcXFxucHV0VmFyKFxcXFxcXFwibXlrZXlcXFxcXFxcIixpbmZvWzBdLnNwbGl0KFxcXFxcXFwiPVxcXFxcXFwiKVsxXSk7XFxcXG5wdXRWYXIoXFxcXFxcXCJteW1pZFxcXFxcXFwiLGluZm9bMV0uc3BsaXQoXFxcXFxcXCI9XFxcXFxcXCIpWzFdKTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogaW5mb1swXSxcXFxcbiAgICAgICAgY29sX3R5cGU6ICdyaWNoX3RleHQnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IGluZm9bMV0sXFxcXG4gICAgICAgIGNvbF90eXBlOiAncmljaF90ZXh0J1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBcXFxcXFxcIuKAnOKAnOWkp+S8muWRmOeCueaIkeKAneKAnVxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogXFxcXFxcXCJ0ZXh0XzJcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiAkKFxcXFxcXFwi5LiN5piv5aSn5Lya5ZGY5Yir54K556Gu6K6k77yM5ZCm5YiZ5ZCO5p6c6Ieq6LSfXFxcXFxcXCIpLmNvbmZpcm0oKCkgPT4ge1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0XFxcXFxcXCIsZ2V0VmFyKFxcXFxcXFwibXlrZXlcXFxcXFxcIikpO1xcXFxuICAgICAgICAgICAgd3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHRcXFxcXFxcIixnZXRWYXIoXFxcXFxcXCJteWtleVxcXFxcXFwiKSk7XFxcXG4gICAgICAgICAgICB3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dFxcXFxcXFwiLGdldFZhcihcXFxcXFxcIm15bWlkXFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgIC8vcmVmcmVzaFBhZ2UoKTtcXFxcbiAgICAgICAgICAgIHJldHVybiBcXFxcXFxcInRvYXN0Oi8v5aSn5Lya5ZGY55m75b2V5oiQ5YqfXFxcXFxcXCJcXFxcbiAgICAgICAgfSlcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogXFxcXFxcXCLigJzigJzml6DkvJrlkZjngrnmiJHigJ3igJ1cXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6IFxcXFxcXFwidGV4dF8yXFxcXFxcXCIsXFxcXG4gICAgICAgIHVybDogJChcXFxcXFxcIueCueWHu+eZu+W9lVxcXFxcXFwiKS5jb25maXJtKCgpID0+IHtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9hY2Nlc3Nfa2V5LnR4dFxcXFxcXFwiLGdldFZhcihcXFxcXFxcIm15a2V5XFxcXFxcXCIpKTtcXFxcbiAgICAgICAgICAgIHdyaXRlRmlsZShcXFxcXFxcImhpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zdGFyaWQudHh0XFxcXFxcXCIsZ2V0VmFyKFxcXFxcXFwibXltaWRcXFxcXFxcIikpO1xcXFxuICAgICAgICAgICAgLy9yZWZyZXNoUGFnZSgpO1xcXFxuICAgICAgICAgICAgcmV0dXJuIFxcXFxcXFwidG9hc3Q6Ly/nmbvlvZXmiJDlip9cXFxcXFxcIlxcXFxuICAgICAgICB9KVxcXFxuICAgIH0pO1xcXFxuICAgIFxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeebtOaSrVxcXCIsXFxcInBhdGhcXFwiOlxcXCJ6YlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJpZiAoTVlfVVJMLnNwbGl0KCcjJylbMV0gPT0gJzEnKSB7XFxcXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcXFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcXFxudmFyIHpiYzIgPSAnMCYzMyc7XFxcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXFxcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcXFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcXFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcXFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcXFxuXFxcXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXFxcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxcXG5cXFxcbiAgICAvKmZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcXFxuICAgICAgICB2YXIgYSA9IHpid29yZDFbaV07XFxcXG4gICAgICAgIHZhciBiID0gemJjbGFzczFbaV07XFxcXG4gICAgICAgIHZhciBjID0gYSArICcmJyArIGI7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogYSA9PSB6YmxhYjEgPyBnZXRIZWFkKGEpIDogYSxcXFxcbiAgICAgICAgICAgIHVybDogJChcXFxcXFxcIiNub0xvYWRpbmcjXFxcXFxcXCIpLmxhenlSdWxlKChjKSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwiemJsYWIxXFxcXFxcXCIsIGMuc3BsaXQoJyYnKVswXSk7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKFxcXFxcXFwiemJrZXkxXFxcXFxcXCIsIGMuc3BsaXQoJyYnKVsxXSk7XFxcXG4gICAgICAgICAgICAgICAgcmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxuICAgICAgICAgICAgICAgIHJldHVybiBcXFxcXFxcImhpa2VyOi8vZW1wdHlcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfSwgYyksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ2ZsZXhfYnV0dG9uJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9Ki9cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+aQnOe0oicsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJwdXRWYXIoJ3piaycsaW5wdXQpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v5q2j5Zyo5pCc57SiJztcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICdpbnB1dCcsXFxcXG4gICAgICAgIGRlc2M6ICfkvaDmg7PnnIvku4DkuYjnm7Tmkq3vvJ8nXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2JpZ19ibGFua19ibG9jaydcXFxcbiAgICB9KTtcXFxcblxcXFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMSkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDFbaV0gPT0gemJsYWIxID8gZ2V0SGVhZCh6YndvcmQxW2ldKSA6IHpid29yZDFbaV0sXFxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjEnLCBuYW1lKTtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MScsIGtleSk7XFxcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCB6YndvcmQxW2ldLCB6YmNsYXNzMVtpXSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICBjb2xfdHlwZTogJ2JsYW5rX2Jsb2NrJ1xcXFxuICAgIH0pO1xcXFxuICAgIGZvciAodmFyIGkgaW4gemJ3b3JkMikge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHpid29yZDJbaV0gPT0gemJsYWIyID8gZ2V0SGVhZCh6YndvcmQyW2ldKSA6IHpid29yZDJbaV0sXFxcXG4gICAgICAgICAgICB1cmw6ICQoKS5sYXp5UnVsZSgobmFtZSwga2V5KSA9PiB7XFxcXG4gICAgICAgICAgICAgICAgcHV0VmFyKCd6YmxhYjInLCBuYW1lKTtcXFxcbiAgICAgICAgICAgICAgICBwdXRWYXIoJ3pia2V5MicsIGtleSk7XFxcXG4gICAgICAgICAgICAgICAgY2xlYXJWYXIoJ3piaycsIGlucHV0KTtcXFxcbiAgICAgICAgICAgICAgICByZWZyZXNoUGFnZSh0cnVlKTtcXFxcbiAgICAgICAgICAgICAgICByZXR1cm4gJ2hpa2VyOi8vZW1wdHknXFxcXG4gICAgICAgICAgICB9LCB6YndvcmQyW2ldLCB6YmNsYXNzMltpXSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3Njcm9sbF9idXR0b24nXFxcXG4gICAgICAgIH0pO1xcXFxuICAgIH1cXFxcbn1cXFxcbmlmIChnZXRWYXIoJ3piaycpICE9ICcnKSB7XFxcXG4gICAgdmFyIHpidXJsID0gXFxcXFxcXCJodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb20vbGl2ZT9rZXl3b3JkPVxcXFxcXFwiICsgZ2V0VmFyKCd6YmsnKTtcXFxcbiAgICBsb2coemJ1cmwpXFxcXG4gICAgdmFyIHF6ID0gXFxcXFxcXCJodHRwczovL3NlYXJjaC5iaWxpYmlsaS5jb21cXFxcXFxcIjtcXFxcbiAgICB2YXIgbGl2ZSA9IHF6ICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSksICdib2R5JiYuaGVhZGxpbmUtbGl2ZSYmYSYmaHJlZicpO1xcXFxuICAgIGxvZyhcXFxcXFxcIjEyMzo6OlxcXFxcXFwiICsgbGl2ZSlcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+S4u+aSrScsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCJoaWtlcjovL3BhZ2UvemIyP3VybD1cXFxcXFxcIitsaXZlLnJlcGxhY2UoXFxcXFxcXCI/XFxcXFxcXCIsXFxcXFxcXCLvvJ/vvJ9cXFxcXFxcIikucmVwbGFjZShcXFxcXFxcIiZcXFxcXFxcIixcXFxcXFxcIu+8hu+8hlxcXFxcXFwiKSArICfvvIbvvIZwYWdlPWZ5cGFnZScsXFxcXG4gICAgICAgIGRlc2M6ICflhbHmnIknICsgcGFyc2VEb21Gb3JIdG1sKGZldGNoKHpidXJsLCB7XFxcXG4gICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgXFxcXFxcXCJVc2VyLUFnZW50XFxcXFxcXCI6IFxcXFxcXFwiTW96aWxsYS81LjAgKFdpbmRvd3MgTlQgMTAuMDsgV09XNjQpIEFwcGxlV2ViS2l0LzUzNy4zNiAoS0hUTUwsIGxpa2UgR2Vja28pIENocm9tZS80OS4wLjI2MjMuODcgU2FmYXJpLzUzNy4zNlxcXFxcXFwiLFxcXFxuICAgICAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICAgICAgfVxcXFxuICAgICAgICB9KSwgJ2JvZHkmJi5mbG93LWxvYWRlciYmLmhlYWRsaW5lLWxpdmUmJi5udW0tdHh0JiZzcGFuJiZUZXh0JykucmVwbGFjZShcXFxcXFxcIlxcXFxcXFxcKFxcXFxcXFwiLCBcXFxcXFxcIlxcXFxcXFwiKS5yZXBsYWNlKFxcXFxcXFwiXFxcXFxcXFwpXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpICsgJ+S4u+aSrScsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICB9KTtcXFxcbiAgICB0cnkge1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6ICfnm7Tmkq3kuK0nLFxcXFxuICAgICAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vcGFnZS96YjI/dXJsPVxcXFxcXFwiK2xpdmUucmVwbGFjZShcXFxcXFxcIj9cXFxcXFxcIixcXFxcXFxcIu+8n++8n1xcXFxcXFwiKS5yZXBsYWNlKFxcXFxcXFwiJlxcXFxcXFwiLFxcXFxcXFwi77yG77yGXFxcXFxcXCIpLnJlcGxhY2UoXFxcXFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgKyAncGFnZT1meXBhZ2UnLFxcXFxuICAgICAgICAgICAgZGVzYzogJ+WFseaciScgKyBwYXJzZURvbUZvckh0bWwoZmV0Y2goemJ1cmwsIHtcXFxcbiAgICAgICAgICAgICAgICBoZWFkZXJzOiB7XFxcXG4gICAgICAgICAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgICAgICAgICAgXFxcXFxcXCJDb29raWVcXFxcXFxcIjogXFxcXFxcXCJfdXVpZD04MjQ2NzM3My1DNkExLTU3QkEtQUUwMi1BOUE2RDE3N0M4ODc5NzI0OGluZm9jOyBidXZpZDM9MTdDOUEyQ0ItODUwQi00QzczLUI5REUtNjREQjBFNkRCQUJCMTQzMTA1aW5mb2M7IHNpZD1jeTk2MWZxNzsgcnBkaWQ9fCh1fEpKKXxrfmx8MEondVl8WXx1a3VtKTsgTElWRV9CVVZJRD1BVVRPODgxNjA2MTAyMjE5MzQyMDsgYnNvdXJjZT1zZWFyY2hfYmFpZHU7IFBWSUQ9MjM7IGZpbmdlcj0xOTg0OTg5NTAxOyBhcnJhbmdlPW1hdHJpeFxcXFxcXFwiXFxcXG4gICAgICAgICAgICAgICAgfVxcXFxuICAgICAgICAgICAgfSksICdib2R5JiYuaGVhZGxpbmUtcm9vbSYmLm51bS10eHQmJnNwYW4mJlRleHQnKS5yZXBsYWNlKFxcXFxcXFwiXFxcXFxcXFwoXFxcXFxcXCIsIFxcXFxcXFwiXFxcXFxcXCIpLnJlcGxhY2UoXFxcXFxcXCJcXFxcXFxcXClcXFxcXFxcIiwgXFxcXFxcXCJcXFxcXFxcIikgKyAn55u05pKt6Ze0JyxcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF9jZW50ZXJfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfSBjYXRjaCAoZSkge31cXFxcbn0gZWxzZSB7XFxcXG4gICAgdmFyIHBhZ2UgPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXFxcbiAgICB2YXIgdXJsID0gXFxcXFxcXCJodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS9yb29tL3YzL2FyZWEvZ2V0Um9vbUxpc3Q/cGxhdGZvcm09d2ViJnBhcmVudF9hcmVhX2lkPVxcXFxcXFwiICsgemJrZXkxICsgXFxcXFxcXCImY2F0ZV9pZD0wJmFyZWFfaWQ9XFxcXFxcXCIgKyB6YmtleTIgKyBcXFxcXFxcIiZwYWdlPVxcXFxcXFwiICsgcGFnZSArIFxcXFxcXFwiJnBhZ2Vfc2l6ZT0zMCZ0YWdfdmVyc2lvbj0xXFxcXFxcXCI7XFxcXG4gICAgdmFyIGpzb24gPSBKU09OLnBhcnNlKHJlcXVlc3QodXJsKSk7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBqc29uLmRhdGEubGlzdC5sZW5ndGg7IGkrKykge1xcXFxuICAgICAgICB2YXIgciA9IHt9O1xcXFxuICAgICAgICB2YXIgaiA9IGpzb24uZGF0YS5saXN0W2ldO1xcXFxuICAgICAgICByLnBpY191cmwgPSBqLnN5c3RlbV9jb3ZlciArIFJlZmVyZXI7XFxcXG4gICAgICAgIHIudXJsID0gJ2h0dHBzOi8vYXBpLmxpdmUuYmlsaWJpbGkuY29tL3hsaXZlL3dlYi1yb29tL3YxL3BsYXlVcmwvcGxheVVybD9jaWQ9JyArIGoucm9vbWlkICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGA7XFxcXG4gICAgICAgIHIudGl0bGUgPSBqLnRpdGxlO1xcXFxuICAgICAgICByLmRlc2MgPSAnVVDwn5C377yaJyArIGoudW5hbWU7XFxcXG4gICAgICAgIHIuY29sX3R5cGUgPSBcXFxcXFxcIm1vdmllXzJcXFxcXFxcIjtcXFxcbiAgICAgICAgZC5wdXNoKHIpO1xcXFxuICAgIH1cXFxcbn1cXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt55u05pKtXFxcIixcXFwicGF0aFxcXCI6XFxcInpiMlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgUmVmZXJlciA9IFxcXFxcXFwiQFJlZmVyZXI9aHR0cHM6Ly93d3cuYmlsaWJpbGkuY29tXFxcXFxcXCI7XFxcXG5pZiAoTVlfVVJMLmluZGV4T2YoXFxcXFxcXCJzZWFyY2hfdHlwZT1saXZlX3VzZXJcXFxcXFxcIikgIT0gLTEpIHtcXFxcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSksICdib2R5JiYubGl2ZS11c2VyLXdyYXAmJmxpJyk7XFxcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmUCYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgdXJsOiAnaHR0cHM6Ly9hcGkubGl2ZS5iaWxpYmlsaS5jb20veGxpdmUvd2ViLXJvb20vdjEvcGxheVVybC9wbGF5VXJsP2NpZD0nICsgcGFyc2VEb20obGl2ZVtpXSwgJ2EmJmhyZWYnKS5zcGxpdChcXFxcXFxcImxpdmUuYmlsaWJpbGkuY29tL1xcXFxcXFwiKVsxXS5zcGxpdChcXFxcXFxcIj9mcm9tXFxcXFxcXCIpWzBdICsgJyZwbGF0Zm9ybT1oNSZvdHlwZT1qc29uJnF1YWxpdHk9MCcgKyBgQGxhenlSdWxlPVRleHQuanM6SlNPTi5wYXJzZShpbnB1dCkuZGF0YS5kdXJsWzBdLnVybGAsXFxcXG4gICAgICAgICAgICAvL2ltZzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcubGF6eS1pbWcmJmltZyYmc3JjJykgKyBSZWZlcmVyLFxcXFxuICAgICAgICAgICAgZGVzYzogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcuaXRlbS1yaWdodCYmLnN0YXR1cyYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufSBlbHNlIHtcXFxcbiAgICB2YXIgbGl2ZSA9IHBhcnNlRG9tRm9yQXJyYXkoZmV0Y2goTVlfVVJMLCB7XFxcXG4gICAgICAgIGhlYWRlcnM6IHtcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiVXNlci1BZ2VudFxcXFxcXFwiOiBcXFxcXFxcIk1vemlsbGEvNS4wIChXaW5kb3dzIE5UIDEwLjA7IFdPVzY0KSBBcHBsZVdlYktpdC81MzcuMzYgKEtIVE1MLCBsaWtlIEdlY2tvKSBDaHJvbWUvNDkuMC4yNjIzLjg3IFNhZmFyaS81MzcuMzZcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIFxcXFxcXFwiQ29va2llXFxcXFxcXCI6IFxcXFxcXFwiX3V1aWQ9ODI0NjczNzMtQzZBMS01N0JBLUFFMDItQTlBNkQxNzdDODg3OTcyNDhpbmZvYzsgYnV2aWQzPTE3QzlBMkNCLTg1MEItNEM3My1COURFLTY0REIwRTZEQkFCQjE0MzEwNWluZm9jOyBzaWQ9Y3k5NjFmcTc7IHJwZGlkPXwodXxKSil8a35sfDBKJ3VZfFl8dWt1bSk7IExJVkVfQlVWSUQ9QVVUTzg4MTYwNjEwMjIxOTM0MjA7IGJzb3VyY2U9c2VhcmNoX2JhaWR1OyBQVklEPTIzOyBmaW5nZXI9MTk4NDk4OTUwMTsgYXJyYW5nZT1tYXRyaXhcXFxcXFxcIlxcXFxuICAgICAgICB9XFxcXG4gICAgfSksICdib2R5JiYubGl2ZS1yb29tLXdyYXAmJmxpJyk7XFxcXG4gICAgZm9yICh2YXIgaSBpbiBsaXZlKSB7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICdwJiZUZXh0JyksXFxcXG4gICAgICAgICAgICB1cmw6ICdodHRwczovL2FwaS5saXZlLmJpbGliaWxpLmNvbS94bGl2ZS93ZWItcm9vbS92MS9wbGF5VXJsL3BsYXlVcmw/Y2lkPScgKyBwYXJzZURvbShsaXZlW2ldLCAnYSYmaHJlZicpLnNwbGl0KFxcXFxcXFwibGl2ZS5iaWxpYmlsaS5jb20vXFxcXFxcXCIpWzFdLnNwbGl0KFxcXFxcXFwiP2Zyb21cXFxcXFxcIilbMF0gKyAnJnBsYXRmb3JtPWg1Jm90eXBlPWpzb24mcXVhbGl0eT0wJyArIGBAbGF6eVJ1bGU9VGV4dC5qczpKU09OLnBhcnNlKGlucHV0KS5kYXRhLmR1cmxbMF0udXJsYCxcXFxcbiAgICAgICAgICAgIC8vaW1nOiBwYXJzZURvbShsaXZlW2ldLCAnLmxhenktaW1nJiZpbWcmJnNyYycpICsgUmVmZXJlcixcXFxcbiAgICAgICAgICAgIGRlc2M6ICdVUPCfkLfvvJonICsgcGFyc2VEb21Gb3JIdG1sKGxpdmVbaV0sICcudW5hbWUmJnNwYW4mJlRleHQnKSArICfCt+S6uuawlCcgKyBwYXJzZURvbUZvckh0bWwobGl2ZVtpXSwgJy5saXZlLW51bSYmc3BhbiYmVGV4dCcpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdwaWNfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgfVxcXFxufVxcXFxucmVzLmRhdGEgPSBkO1xcXFxuc2V0UmVzdWx0KHJlcyk7XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwiQVBJXFxcIixcXFwicGF0aFxcXCI6XFxcImFwaVxcXCIsXFxcInJ1bGVcXFwiOlxcXCJldmFsUHJpdmF0ZUpTKFxcXFxcXFwiTDdBdko0MUMrK2tsbEJNUEc5SlJUVXpRdkVqSlh3UnJmUmlKbUVCdWZVUUEySEhXdFFMUmhBd3FTTXpNVWRJQVJCTUtCYlB0MjhqQjZ0eXVZeFhPZjNDNytWelBEM05KRWVZeTI0T2ZUbVNnc1I0U0hpUFIzSjBPaWZRTW1UQkxNdGYxZFgzazF5LzhXdW9YUE1RbkNYWERNUTk3aHdlem90NTJJT3lLc0c2NE9xNWFHRk41ZGlxVDF0bTI5U3AvR3J0VkpYOGZ5am9OcTRUcnBmeGlIc1VXMVNZczJoZmNzM0pqTmtOT3VRMnBXYlAyc3BvOWNVTDZaT2hZdld5eEJNRWcya1BERVQ2dlF1YUZRbnhSSXBBdWxYSkRNdWZBT3Z6bU41YzBSVWlPanBqNTR5OFNxZTZnMS9GY202NDRXeVBGTXhXOGI0RFdmVGlYOWREZElCZG8yU0xuRDE4b1N1T0M1NXdlZzgrWFFTb3FtZXkzWHQzM3U3UzNhS3JpQ1VZTzJIQ3d6S3UyZGZ1bnBlMExPWTd3OXBiQ3NOampjYmplbzBuYU16UUxwdFhIaDRJM3pSVmRqSkU2ZkF6bTRTTVlBVTBBck40cHk4c0NmM2pCVWhNVTRNb0U5eHBOYy9abUlEU1dDeFdEMWdjaCtVTjBJMnhyYURnYmV1ek1vUVdzcnBxSGNjMWRoRk55QUVHcTRYeHlMOUVqUTRyd0dkYWpadlZWcm04MS91c0c3VGRZSnY3bmVBeTJnUFpRRXJPNjJOTUJ3MHNhZUNmOExyZHNJMyszTCtLL0h6UllmZFRVeXpmV0dUSkVRTTlxdXU5aWdtYnlwNU9EQWdvOW0yRGRBcnE4bGVJU21hK0NuSmdoREdNWVJMRlF5YUJOalFPVkRkVVlhMVRmbXRNZDlwV0lHZURHZ0JlQ09XdzZ5V2xQM2hCRDJyZTZKMTJhWnlsdmFYelRqbG4zRlp1cldBWVpLMXZJMXZKQzhEOUlRS1pQR3FjZ0VLdm5YcEZoWlZ2cHI1UUtWUFhSWGJ5djY0Z3ArWmJGZWFzcDlxVDVaaWFybXM3bWRIcz1cXFxcXFxcIilcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLpobXpnaIt5LiA57qn77yI5ouT5bGV77yJXFxcIixcXFwicGF0aFxcXCI6XFxcIm5ld2RldGlhbFxcXCIsXFxcInJ1bGVcXFwiOlxcXCJqczpcXFxcbnZhciByZXMgPSB7fTtcXFxcbnZhciBkID0gW107XFxcXG52YXIgUmVmZXJlciA9ICdAUmVmZXJlcj1odHRwOi8vd3d3LmJpbGliaWxpLmNvbSc7XFxcXG5pZiAoIWZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKSkge1xcXFxuICAgIHdyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JywgJ+W8gOWQryzlhbPpl60nKTtcXFxcbn1cXFxcbnZhciBzX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0Jyk7XFxcXG5wdXRWYXIoJ3JlcGx5X3R5cGUnLCBzX3R5cGUuc3BsaXQoJywnKVswXSk7XFxcXG5wdXRWYXIoJ2xpa2VfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzFdKTtcXFxcbi8v6aKc6ImyXFxcXG52YXIgQ29sb3JzID0gW1xcXFxcXFwiNFxcXFxcXFwiLCBcXFxcXFxcIjVcXFxcXFxcIiwgXFxcXFxcXCIwXFxcXFxcXCIsIFxcXFxcXFwiMVxcXFxcXFwiLCBcXFxcXFxcIkFcXFxcXFxcIiwgXFxcXFxcXCIzXFxcXFxcXCIsIFxcXFxcXFwiOFxcXFxcXFwiLCBcXFxcXFxcIjlcXFxcXFxcIiwgXFxcXFxcXCJCXFxcXFxcXCIsIFxcXFxcXFwiQ1xcXFxcXFwiLCBcXFxcXFxcIkRcXFxcXFxcIiwgXFxcXFxcXCJFXFxcXFxcXCIsIFxcXFxcXFwiNlxcXFxcXFwiLCBcXFxcXFxcIjdcXFxcXFxcIiwgXFxcXFxcXCJGXFxcXFxcXCJdO1xcXFxudmFyIENvbG9yID0gJyMnO1xcXFxuaWYgKGdldFZhcignWVMnKSA9PSAn6ZqP5py6Jykge1xcXFxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7XFxcXG4gICAgICAgIHZhciBudW0gPSBNYXRoLmNlaWwoKE1hdGgucmFuZG9tKCkgKiAxNSkpIC0gMTtcXFxcbiAgICAgICAgdmFyIENvbG9yID0gQ29sb3IgKyBDb2xvcnNbbnVtXTtcXFxcbiAgICB9XFxcXG59IGVsc2Uge1xcXFxuICAgIHZhciBDb2xvciA9IFxcXFxcXFwiI0ZBNzI5OFxcXFxcXFwiO1xcXFxufVxcXFxuXFxcXG5mdW5jdGlvbiBnZXRIZWFkKHRpdGxlKSB7XFxcXG4gICAgcmV0dXJuICfigJjigJjigJnigJk8c3Ryb25nPjxmb250IGNvbG9yPVxcXFxcXFwiJyArIENvbG9yICsgJ1xcXFxcXFwiPicgKyB0aXRsZSArICc8L2Zyb250Pjwvc3Ryb25nPic7XFxcXG59XFxcXG52YXIgcGFnZW51bSA9IE1ZX1VSTC5zcGxpdCgnIycpWzFdO1xcXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcXFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcImA7XFxcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXFxcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiYDtcXFxcblxcXFxuaWYgKHJ4ID09ICfmjpLooYzmppwnKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3BoYlxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICdVUOS4uycpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvdXBcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5pe25YWJ5py6Jykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9zZ2pcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5paw55WqJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9uZXdiZ21cXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn57Si5byVJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9zeVxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfnm7Tmkq0nKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3piXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+abtOWkmicpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvbW9yZVxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09IFxcXFxcXFwi5ryr5ri4XFxcXFxcXCIpIHtcXFxcbiAgICBldmFsUHJpdmF0ZUpTKFxcXFxcXFwiTm0wN3dJWjhVZFF5NDFTM2dDekhaRDFaNXJMZ0cxMlRONFhKMWVpY3Z3NGNpYkh2OTV6TkdtQkhzdUdUSXZiVWNoeVdYd1dNandxT2pHYWZPWmh1dUdIYjFqOS9LcFZrOGl2dHhxUnVVVDE1ZWRMUlNqWm5BQUZmemwzNVZiM2FrYXcwM2lGKzJuN3cwcm9sYjhZOGJXcDNOcVFxNjNGSEp4ZTNiZDRsemRTdmcrWG0zakVWWkl2a09VUGc0QW83VFRpUi84VWE0MzFUMVIyZXJhVGJnTkhDLys5cnhSODhjZW4zT3ZaVkNDSjNORmUrYjZzRW5mUUpxbytZRm4waDFZeVFOaFdsaGRJZ3dDb292MXdOS3Z6TmM1VTZsNkxKSUUvNGVaVzA3NnhBdnVHVzdWaVJ0ZDk5TmxLM2hicmM3d1BrVjErbjNBcU1QeU4wMDl6Q0xFU2dLYVlqbG44SThNZTZBcVJrRlN1elVNRE8za2NyV21pVzZ3eUdqMzg0Z1ozRDFhNUI0ZVZ6VHRqckNLbGt0R3hlQnVIZ1pIT0pRcFBLZXhaM1d4aWFiaDViS3Nib1U2QURXKzR2djZaVFBubThwL2tWSkxUakhhTGQxaGZUK0FpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS9TTUVuYkRueCtrNGp3NFlTZ21nNjZSekZ0TmdaK082emlLWDZNUEJhVUhKT29rVDRodFZvbzJGTmIxMGthRnhyTGJ5eFRjQ0JJL1FLditrdkdLUTJidjd2UnNGYUVOa0hGa0xaTkxORHg4blA0NjAzZi9wNXJKbHE1STRyYnF2TXZyUjFmbHhkZUVzODNrdERyZWpxaHBYMkhZb3g1WGplTmVwU1dBbFNlZWZnU1IxdGs5d0I5clVDdkQ1MUZDUWNBT2RqMGZJdWxad2lYK016WkZYNWZlVG5ma0FHdW94Sjh4eW0yZkMwaTlEeHdRRTJrZDZlcGZLRkpzT0l2VXViVmFML2JEK0pHaVhIa05vajZ1ajc1Y244MlQveFUrNXk3TVZacmwzaFljOW1Yc2dPZHBJTmgvSmd1bmVhTGx6L2N0ZnprVkZhUFN2YW1Ja2FFM0txRTVRNHN2dlIvRXlLbHZKSVUwVUt6OS94OElXK2U4blRnSy8yMVhRMW1DMVYxOTdVNWQvQkZlRnFCeG00d2lGSGtCRWlUNGt3V0JTeEEwTGdydWwrc1dtams0ZGtiY01wa1dDOEFySzgrcGFlQkNqT3NNaVY0NERyVFNCemlpZGozU1lRQS9GTG5hbW4zTVFHWHpMelovWEFmemsxMnBabC9xVTByMy9TYnAzeW9uajYzSDljZVNxRFMxM2N6SVRKUDJZNTdxTE04K3RwZk8wU0REb3VvQlpPNUZCb3JwbGUwaHJ6U3l6QXhtbGoxclozN3g5RDRTR2tRdGhnNVNsOWVNTVNhc1l4Y1M1TDBDZWNEVE9yTEZoVUhzVTJYS2hvTmJhTFFoY1N4RGRUYUJvdGZCNDhYRXp1V2hVNlgxY2JQWlo1azlhUWwzaTQxcHVBVkFTN3RvQnEyRzRPSmVuOXFTOGpwQXpDYnhDdUFObWpuL3pabWx6LzJYalY3YnpkV3p3NnVLYWpRdDJWdmhWSUhqcE4zQzBFYWtLR0tMN2tpdXBWTlM4L0xMRTVFOUhZSVlJd2FSQzBlcUVBbWR6dGtRNDVlVXEwVHl5ai80K1dUWTNNbWZiREJzV0E1VzFxSzFabFVlWGx3bDFmT09TZjBCMDgrMmxsU0g3cUgvQ0E4UmF6VTFpcG1IU1BJcHh5dys5dHpwbzB2Sk9UTzRwUTE4bGlDTW94RW9MbFk1TDcrZDlmeFJpbHAwUm85L3pXL1A3M3pDT0FCQ0VzM0ZjendqeTJVbHlDU0I3ejRnUE0xSnpsU21SR1gzaU0vM3lGTTdvd3dReUZyNzd6SkpLdHAwaXVnL21ON3hkYlJCbnJRYjJiMi9wWVBEV2JIL3lJcE91bDJpVmlYYWVtYTJWUXM2cUttMHhOdVpNcU9yOHRWcTc3VXpHcCtGWWZhVG5YVEdrV0t4ZWdHNXNpNFc0d244YXE1NStiUDZFQkpYeGp3VEFEQXg4WVArWGtpSzJuZ0V0YmdXdXpwWmhpQVlERVhCc2N2alpaaUxvdGNFQmdJcUg3eXpFdHBacDJZNCtZSG9GUUJ2VFFsei8rbTlkTzJMTmErUW81S3l0WXM1bG1LMjFjQ1VHb2ZQM1JXUjUzTHZzc0E0M25YcUprczA3cFhnbm80YWU2T0xvd0xqMDVZQU9YNXRRZGpOeFNvQXRacExoTXZTZjE0NDkzZ3MrY0hHNEdGblo2N1VoY0N0bzVnSE1DU0d2TjlkRGVYNUpkaEJySTU2WVVxY293eGlxRGg2MzJFcTdsR2lqdXczQmFQMUszdm9obzdBNWdzc2pzdE11VW9hU1NVb0tvV0FHQjJnYWh3anUraFVTNm1yS0czTnRtc2ZoTmxZb0o2d2lSUkZHeGNFTVVTQmgwM3Y1MjBreXlpZm9wZ2dCRUVQNHVNSW1VM0tCalc5T0RHZTNlaDROMk03MWJWWGJxaUtVVmpKY1ZuNi9zUWNUd2dKVWhkeDlEczhtKzl5WWk1WW1yNDczSENKN1F1YzMwWEtRNXp0V0NpcjBHMk1QdU02c0YxYjFZWFhzVzFrK3p0UDRoMUV2QTdyRzR2aG02Qi81ckd6K2xPVEczV2NqcTlNanVnTFFlTzNHRzZNdGFjdkdGT0h3ZFFiTDBYSlQwN1BzMmRBa3ZkWk5qdmZWYjFaTmlvcFY3TmErZytMQ1IySWV2dThkNUQwTEM0WXQ4anVBSHRpM1BsdU9YbWtXbUNGYjA2RURTRUd5Ty9SVU9KdDFRbTJRQytEbG9pRXBlbEIxcE91UkpRVVVGQnNsaVcreWFqL1hnRWkzbk5BM3VUd0puTEtnbGFjclExclpjZnI4QnNoUnpocVFsdHhkYmhXeGZrOFFLdklqSjRMRjFhZW1VR0IvamUzWnRveGgzdE10eE9KQ2ZCMHFlVWpIVWx5bXNjcXl5R29TWktPanhEeXZDOStHd2FjZEc0ZlVrTnlPa3RQUE15YnMvWnJtWFBJZVZxeUJ4b252T1hNL2JEYnB6MHJwOEcxWmVJMHJTb1JsdjExdldOc1BncjZzeW56ZEhZQmE4elBXSWxnVjBaMGg5SE5NbXZMbFZQTXZ3M2UrL2dYRjBmTEtoczloNGpUSGt6M0VyOWp1NEVtRW5GcU9mdWNHL1NDQ3M5ME50a29LUy81dFNyLzAvZTJIcW54UkxURCsxN1EwbFpudmJuNWZ5KzRHalJETzVMSldmeGZXdUtVaytiUTVMMWN5bVo5MXgvODIyZUU1YW9HclVlN2p4L1FkRkRCWGw3Skt0SlhZQnhtRVZhUklQNEN4QU1GcXpkT3llVlN2dHVrd0Z2N0d0MFYxVmppN1hvQy8zd1NKRlI2M2FtM000WllFekFjV29sU0V2YnNXL3NhM1JYVldPTHRlZ0wvZkJJa1ZIb1NOUmhiUlBFRTZpNkJzVUQ3cUtDaTEvZWdKVGpGMEo0S043UFJoR3k3YlRJT1R1K1lhL2Y5TGFkWDFBOGJMc1lzeGxUYk5xVm82SnpQWmFwaWNOY0NkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdydG10UEFhWDR1SnNOZ2FCMEJUbHhzbEMxT29Ka0VsTjdHYnAxckJjdEd1VXc3cEwrUklPVFFrQ1lsK2EwVW4yZW1vSHdOdWJxRitKZDVjTzJwd1VvejAzalprOFUzbVdHbWpJcmNjak14QWUvcnR3eXNQNjNiNmlHN003dkxwT254VjN4dkN5ZEtUd21UZGkwbDZDMHozbzV0cXkycGtsN3VqMThEVmVWQ1hDNFZHNTZGK3ZQOEU5VkVNQWwvekNjakkycW1xbHVhNytoM2JybEhnNzk4QVJtNGJkTVBPbWZ5ZG1UR0IwZjdocXpadjE0QjMvY1dZcmFkd080ZXIxOVpiZlZZK3Y5UEpZcjZXT1U2MmlIUmo2WCtTS3R0UFdSK2xZSTAzaXRNcjhEdkY2eEdDK3hwK2hXK3Yvei85ZnJjODFJY0dNSVNlOE1IVFdpWGpBM1BoT1ErZXdINm5mUmVFTlRQVmFCcXJDdGtobk5kaWM4VTJoYzFjd2xGTHo3Zm9MZVl5eU84aWVkWGVGV09PK3FYN2p6OXVuaEl4YWxCaU1JdnNHN0pQOTRkZGp6M244Zk1UYjVNUEJvWDVGY2FmNFpCU3dYZDk4NDRvQjBCMXFvcEVLU2JCcVp4VjlZUSt3cGppbnZMdnY4b0NTdjI2YVlUc3ZFYlhzVGUrTTRBQ1gwdGtVbHJBNmkwNFo1eTZwYWxvWllObThwRFRzSnJrMGptOTU0L1k4NnBDK2dxMXVTZFREa1o2WVpyK0tuSEgzNmRScm1OYVlsVExKRDZ2VlM3MktWa295LzlZYjRVWlIvaFRpVE5Vb0hpRWMvamg1cHlpNXYvbGdqMnRPMVJJZ3RYRXVjcDhYYmZpREJIemtMWlY3TmErZytMQ1IySWV2dThkNUQwSk15eGE0Tjg3SE9SMWZIekVXTjVuTHBjYUZ4bllJK3U0Zm13R2tOdUFhOHk2K1dvV1pxVVJSdUpmeGNBb0wvSW5SOHRSMjRwREtRTHdPaFQ4RHRycXlpN2ZjV2x2NG9HWU16cWxBYVNuWjhFdnIxWU91YnRVREhoRlVMalhZNStPK3d1cXorY3pZWU0vRk5KR1VSS0haY2k4RGZMeVBIRU84VmUwOG5oSGxzWXhZT2FwYWpBL2dCT2NweEQxRzBtQmVBYTc2cTBJY3pDU3NSNjVieE10MFlWY25qOG1wdDdvK3EyUjRBbU5Ka1ZFNGU1TGxZSVJpQ3VHTEdZdGQxT3ZqNzUwek8vbmlSeDJzcXJpTWFnVW9OM0J2RWF2a2xjSFpKcTk2N0hLSFJKU2VMWldUMjkyWUcvY2wzWTNleXgxMTZFTjRkMi9oZis3NGVVRTZscXprL2VnK1pTaDF5NlJJdDdKRmx1S2NYZXV4WldJd2RxcVk5TjgwL3NrSmdZdXB6TDI0bGxJb0NoZ3A4Y3dnQ3NkbWZVQzkvNm5ZREtJNnlidSt2QW5UWVdjNkttSUF4U0t1c3J0a1VGMVlBUTA5d2FwZkpmZlpWcThsUDY5Z3pIbTJJa3Y5a0d1dUhPVTlZWUhxQ0hqVjcrS3FJSncxcmVWdS82bnAydTZ2MGtBK3AxczZzMFhVaEtoWWdvTTJQQ1JNc05BcmZxYS9RRy9qZmx0OUxIWk1Xd2kxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL3lBZllIdXNjbFlQMFpMMk9rSjhiOU1ESWRXWTJxcUdPanEzaHJZWi81TWZMeFdLc0kybS9Ycy9hMkx4VVVRMm1QS2Vya3hqNy9MZ1dvSDBKQ0RCOE11OWx2eTBNSVNOWEdldXlPTSt2R0ZuZWN1ekRtN01RT0NFdW10YldSWEZtL2NmYk1UZVpSNVd0aVMzSkx4V1NucWtRNDZQL01IYncweVkvSHRHVWdZQ1QvTGNSb0IxYkk4T2ptSUI3UmRjR2VMYUtSQ2xGMDdzakcyVDMrT2FGSVVsOFdzZkNUcEF5UU1DUUhnTW9TQ21nNldFbUZ6NHRVZG01QXVKUjFQWkw1S1NKTFBGdStXMU9kR1lsOFhjSGtlajZGUzc2TEFYcHM5ODY4N2hBL211bGJtWFlLWVczWVhkbjZsRENrN2szRXlUY0VuV1lIbGhMZDFiM2VvOGRQanROTGd5UkcxTTRuRmlKdDB1YWU2SXF1ZDFMczdBSnVOMUt5VVpJeUJsd3UvajVxdkxxeG5SbGt2YWJuVkZOYTNOSXJ3bC9leldxNlZ2Z21iY0NpcGkrWDNHOWUxTjJqckNnM0paVnk5N1hVUGFWbE81MWxRZUIvRkJFeHVhVzFZR285SndWaHhrUVlmY1A0Y21DRU56aXdjZkhkVXhMUmJjMHFxb3REYW9Ydy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdXIrYlFWVTh6K0lTUDJUUUJXV3QyaTdkcWxweEdBWXczUGNIS1NuRXV6elBaVTR4NTJEV2VwRU5pbG5EWlBXdml4YjYxamJKR2tEL3hXWFJ3NzRFQmpFYm9iOTJkUEltVlhMT3VlQkpIdjdXR0tEOFcxQ3hGT0M5MWhqbU9BS1NUSGV0Z005RkREOTdIR3RnajlxejUybDkydXZSa0FNZFhQY0ErbE9CS0ZFQ0xYa0Z5WVpVT29VZEVERTdEc01HTHBEWEtPRGZPVHoxZkV0NG81VXdDQWV0VG1lZ0c5a0s1Um43VkduZFcxVzVaS0ZMVW1vemdUS3duVzNkZDZIS3JwbzNQYkl0UGR1U2ZseDVKaEtRZStGcUxnb1ZLRG12NGtmN2gzMUtyVlRyNE1YM2FPZUppUmdQbjBCMnVUTXJFRHd2QU9RMHZSL3hhRGFDR1owT0w1VTJ3bTZBeHdPQ2djTnM1SG5NOWFlaUtYU3FqSjBPejZpV25xZzdLbTBwaTFkVUs5NlZxb2doUjV1Z3Q2K2R0Y1ZWRTNlTncraHZ1R3FZYVJDK092YUV4cHFkeHBISUU3djd3RUFMREJqRlp4VjBPTjR1OXR4ZjNaaVFXNHlPazc2b1J0OFhlUjJ5OXc3Qjkrd1paVDkrSjhPRlAvN2llTTM3bW1SVEljR241RVU2LzRHdTFyQ3RGWDlUU3NYOGJYYXJQREM3dTBXLzlEOEQ4Y05YQ2VvY05Xd3hTSUFIQUppSFE5cUdrNG12QVZQdGZ6NVkvSkNoSTNCd3RtRm9udmVZQk41d2FoS3ZDc1E0NzZrQ3JWMU8rSk4vTklZdVdOSHMxUU9KTXkxTWl2eUhWY0h2SFExZzcxcFgzejBsR1VldFRtZWdHOWtLNVJuN1ZHbmRXMVdaUHdRbThCWWRLOGtzQkNwNzcvdEVTd3pKWHZmM0Fuemp2T0dKV3U2RXUwTHoyTXo4SmExUDNIWi93ZGxtUStINHFZUUZad0FSSWlISWhLRVN0aEV5bS9TeGZYQ2o2NHlOOGI0WVo3a2Vua1ZzZ3VsanFIWUM1aGo5emsvTWlmcXNnTHpoVktxK2FqTWJEVmkzYUJ0R3Q3MHdpWW5Cd0VjVTFNdEtid1F6K1Q2VGdUb202TDMvQnZaWU9TSkpBdk1ZWmR2R0xkcFpxcWRIbGxJcEZ4Mkp1NHJadHp4bkwzZGg3bXNvWmp0U2JHU1hKTnc4akVJUThmZTB4ZXFCWkZPMnpEZW9KV0tWQXFHTnhKTEVxS0lXQWRNUEZxSXVIaFpSWW1vQXpiWUdDSGxzcmlYOXFSTnVIcmtiNU1IKzN1WnkrSjNIME5EcS9JUEs0SmpLcFp1N29tdEtMRlcxdmQ3ZGkrYjdvVmtYVzJ4TDFNYy9sQ0o4L2FFTzdUMFg3Y09tMFExenFKN0ZyUFNaaHRyQ29Zcmw3aDFxL2xWck9xajJWenRlUklxM0xOcFhDVXoyWVdONHh3U0JPNFZPRit1ME5ZWjBmV2grOFY1U2lmSS9NQW1WbmlDVGhkMWVja1V4QklGN3R6MVNTWDBsRjYyT1REYjVPQi9FRGIveUJuaURyUU5Db0J6NzY5MjhleHdGUEc1RnNwU3FYMnRMcFdabDlWdUcrZHJEcjh2Y2RHcmpVenJGemZ2b0ZMR1hBQ2JOV0YzT0tYbllZWU9VU01BM2h0d3FWd2RuUHk1Ry9tTTgrTmNjV2NuZmduYWlnUXFianNqS3Qyc3MvZGx5ZzB0QkZCNWt1UU1tWC9URjhJRW1sZGJVa1l2eTExUmF0UHkwR2JFY0hrZ2ZhY0p0M3pXdVJqd0JTYkFIUUFYTU5PblJoWE5DVnNlK0JrUlpHWjRsOEFGVlpCeFF1MEZrcFdyNisrYlhyeU1MRWhLZDBnbnE0WHUvS0FQNWJuVklBcWRxZ1ZmbjlJMzdoUExubjFBT2VTdTRTUTJDZVMrVzJEWDhqMmRQV2xxWk1EUU84anN6UHJhL3NGWURaQ0FxWVJnOFBrTUN2S0dXZVJnMHpkdnZDVEhHRnQ3dUFMSW9ITE15ZG02L2tJZ0V3d3FCV1EycGszZ2RTRWNTcmdGVDVmTDFwMUFLUndiV2NNTVRMRHVabEN3cEZJSDVzTFZHT1piZlUrT0NNT2s1MFBZVDBVSllKT2cyUktod3FjQ2lEWFQySC9peUI0TGpIZjA5QnhmeFgyRUNIeTdIT09TNWZyODVMSzNtc1IzTytJcWxDbC9VaHpjTFV5cC9FMTBlWUVjQ01ISFdqeHdiSDVYSWJOWEVaKzdWYkdVcU51ZElqUERPRDdlZUpBL1loMlpmVGR4QlpVRFlvR0pVZmxVM3NEb1BPOXk1Y2dTdUN2VVA4KzZBV2FFNVR5bnE1TVkrL3k0RnFCOUNRZ3dmRExMSzh0STFsWnord2lmKzlaSUFkVDJJSFA1S1lnVFhTNVEvU1dDT2Jva25ZWitUQkZ4MW1lc0hHcWFxZ2pJWERIeFRyVHUvYkFxR2VFbG56ZDhsaG11L2F0ek44RklDTTNpUXhCMjRCcGRHRSs2MyswT280OWVMWFhLN2pOWGZlZkZ6NDhiaHRqWGNCL2xrYTZDaTJxR3FSL3l4UlZvRGVKSTFnREZya3Fnd2lTYmlIZjJobFFDcXY0UHF6RllKQ2tGd3BOdW9yeFdZRS9GSW9YSU1nelNDU2hZcnI1Sm02YjgzRG44d0RFVG9WM0FyNmFaK2V1SXc5ZzcyK2xLQTNITEs4dEkxbFp6K3dpZis5WklBZFQyYWtIWGdKWk15eHdiK0FGRjRiNG1iWnN6ajJyTmVLUDNBbjZrUkIwTWF5M09sREw3RHZ6enNPUW5LKy9iQ2M0bncvQnNKU2dpRUpGbjZyOUNMNEFtY3ZGMzEyQkppOGVYNFNjdE5EQnd3RTQ2SzY0T0FZSTB3Z1dHUm9qNVpicFFJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6ZHd2c01yYVNpYUNTWmtKTG44WU1GdktENGN0Z3BGdFo0dTlmc0NsL0JPdUpKNVJXQ3B0R0ZhUlJ5MElmdVlRRW9FMWU2WFJxQTU3YWtnaEp5YXdjb0tsU001SjFoTXlSTWlyNEEwbFRKQ1duSVExeDV3QytUNk9rTzM5eW04a28xVjhlNTBKemNrRHhJd2srdlhia1hiRXB4MnpLOGRndEdveEtUZ0dXajd1Rmd1NjVZOEpyYThXVXgxY1V4TFFZenZENFJISUdYRjhwTEZydVlCWXNFdXN3ZlpUT1YrY1lpUlA1MHNVZTNDSGJ4b1NxeXlJOG10ZGNnYWRpekxjeHhNZFlqL0ZKZ3BUN0ZhTTNobG9OTjArZzJsRFVjeWdQTmU3dEhRMlN1OGNzcnkwaldWblA3Q0ovNzFrZ0IxUFp5V3duUlpOTG9Ibzl4Wlc1Z3ZBTVZnNEtsUXhjMDQ0NU5DMkV1Rm1ISHBIeHZDTGlYa3FtSTNHeXoxOXBnZFpPR1JtUEhnbTdFUmw0eXFXUzI4aE1OSUhJaDFqcmEzQXBZejk3TWcvREhYSUtaQURsODZVVncvMzIwNVlSUlBPVVlSWHJHMWVGeVZ4TDhURENveDZjSWdVL29nVE1Rd0lDdEQzL1RIektwRG4vMjdiNDZRTUFvTlAyS2xyVCtkb09mTkxPVVVsamxXdEtrakZvK3hZZ0V5MUc5amtUUFRkQXRHKzd3NUJKNHQ1K0FUeVQwQ1ZJdm9JaVRGbFozaEprYjN3T0tkc2hBOEJIaXU2UndxR3kvRnU2MlZHb2RNOVhKYkJrMW0vUFNSd2JXcjhiSTlIMzNyOE5oV1Uxb3FRSXF3LzNLTmtzQnNJaTJSd3VROUZOUlFPSmJaNXNHeitYcVcwZFhzVVdZVm4xdjZoWWdwVVFPZ1ZWUktWYzRLaVNTOHNHb0VwYkFTdFBUMXVSb0c3NDhYdnF0VTVEMU53Slc3YW9ySkpNSUNxdVFVZnVKVWJzM3hPUlF5a1c5NFV5aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNQ083amg4TWdxWVd3ZW1Bbm9jSkhYUjBTY2VDakhHOVhXREVvd3NNZ3NkTVpvdkFzeGM1QURKQS9WWndxK3hpb3ZGNlcrWHVsdGp1aUIxR1hzR0FGL1BMSzh0STFsWnord2lmKzlaSUFkVDIxQk9XZWEzMWJ2UWNRT0RjK2o1MFcvcmt2R21xbGtwWDJVRU4za29mWDM0clNrWHdaM3NudDZJUmNabDlIR3ZVanFVd0t0bHJOTkFXckFPcHR3aFQ4Qm8ya2pWSUdFNmxkREIwNTluMnpGQk1yR29yekxxMENqbm5kVzVORDBTUXlkdHFtYnhldStDendpdDBCTHpKQnplZ2E0cTdzRlJHSWRLZUc0Z002RkRmYmpCNE1FNDBKSEdycC9hYVVuWnZzanpkaHRaNGpOdi83QUwveDZROXRoMUdrRlk3YllJYzJXRXRYWGFYSldoOU0rcWNSa2tjSmtBaGRlakh5WmpGYk4ybnRkaU1zeUhKTFo5VVdhdGFXUzl4MGF1TlRPc1hOKytnVXNaY0FKdDJOOERVbmJiMU03Sklpc0JYb3dwVVl1V2wrYS9PRUg3ck0ySWhkK2EyWnNzcnkwaldWblA3Q0ovNzFrZ0IxUFl3aUgwZlJuQ3p2bGJoY2NJZElQTkVHNlZSS1czSk1sMUpDSDBKNnZEbG12aDVKMXlERm1oYkFtWHF1VjBCb3J6OFN3dEt3THRHcStQUGorTmZzZzFwWkNtQjhSYnVJRzh4SHdGRk42bWNsY0tHZjI4N0U3aXljSGZiRTl5K1VJQ2lIYWRrZytveWlXMFNzdm5OQ05lZkczYTk0M1VxL2xDK0p0TlJSaTNLWUlqRE51OGlhcEZ6OXBzL2JlYkkrYURMSzh0STFsWnord2lmKzlaSUFkVDJ6L2xyQTBOSmRlZlBHR0hPY3RiOGxpc2ZjSHpWRFFBaG5lY1pXRmpkQWFSN2t4L09mTlpHem9CRHB5d3lZNklFdFdYSW1BSE1JK215OUlVZVRxUkNKbjVLeU1tQ0ZVVm5NcU1xVXgwak9CNHRSSVBFWGtod1pQbzRZTVVSY0RoSTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDVyTHg4V3B2VHBOUENPWVNXSm02YzJoaEFZR09aNzZPVUFwTjVzRHlUQkJXTWt4WU5RU294cTl3VVJLT0dyM0lzc3J5MGpXVm5QN0NKLzcxa2dCMVBiVmRQbTZoNCs4VjBOMVZuZnA0bm5EZkc4SXVKZVNxWWpjYkxQWDJtQjFrNURvMGs1cVFNZ09GWG9EakNiZGVuQmRYdkZmcjN1S1J3N3hPRDFaekxQM1JJRGlLVVRqVkRPYTBiMzByTnZ1OXNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3A1MTBUSk1FMitJeGhtWVExRFBMcUxjc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwVGZJRjBaWDIwd0t5cXVlM2VXM1pVSjBBK1hVQld3RU04QnBma01VNktpTDJXcHJOMW5VNkpUcW9JQUNSMUNDVXlNK3FDSXBMaTJDbVpnVHhkNXZkQ0FRcTliWUpSWldEOXcwSks1UnlFZzBDM2VWWWdidDk0VkREd0EwcnlKa05MK3ZwZkJzTzdkUmp1UjM2ZmlvK3NIUWpVb3lvME42WmRsQmplb2k1UUhpcHlOL20wd054aGFWRlhLczE2VHRudFN3bUd1dXVscy9MR21EcE9CMVlYVkJEZTlWd2R5K0paRFRjaDlzVFp1SzVzcWdHQlprSHB1OCtnOVJ1WWlUM0J4L2dVeFpKa3gwbTRBdllLbzk3QVpIa2RiUDdoVzBaZThaZU8wYmpJblJ0SVMvKzEvOW9wKy9Yd0pIRTVuQ1lpYk43ZWprYklHVGRsYnlqNTRCVnJMbVNUYXNrL2VzWFFSS2c1MUg5ckhJVXltVVFyRkxrT29hdWErVW02WlM0bjd2ejNVbDlZRmtUYXlQZThDdklQS1dvNUZIWkt4ZVdaUXZ2Y2t0SE9MaUFqcjVWS1RFWklGSnZqOEVlSi8zQkZHVFRrUkxpbFRBeExRMU03NitFS2VlV0oyRk9UWjBqNUtBbUxRYzNqNGIwVXhoc1F4Z2thcVN5M1o5NWtJdEFJREp6OU5JVE5wRHNHTm55VnpudTlwMHJTVGZiY0tqT1hZV25mWGJzM2F2czN0WWpYMEl2ZDJqSTZJLzE3MWZBV1I5VFp0eVNSSlZHc0diOXh2L214SlBnNE5xbTJjT2dMQktURVQ3OFIrRlR6SU9kdWtEYVFJYWpneGlQbTdwOE5LREtQRDZSYXFBcVpwUlQ2bHNoQmRVUng2cVI2cUhaWlUrUXhFRURkUG9mekUyU0FRYUJ0YUhuTVlCbTFlYnNKNUsrMXlTM291UWNWZnZUSDFyWU9QWmFtczNXZFRvbE9xZ2dBSkhVSUpTNE9WUGRnbHFXRjk2WWErTklGNWcvY0hjS2E3aVpvSDdNYTU0MjA1RmxoZnFPRHlGdHN0dlBOdmxPZXA2UDJYVDJXcHJOMW5VNkpUcW9JQUNSMUNDVU43N3NQOWJicTdwRjdIVElIeXZwUUtKc0tELzV4ZHc3UEJqdmlMcFRWTlcybnZhSmt5S0F2ZlZ5YUw2NGdyWUJyODZvaU5PY1NKYnBKQTBSYnJSOGVPSWJZcnJVcFhYbkhoS2RlSmRIUHN2L1JvVlVwT2tOSHAyeTFzNVRxZFlrUCs1LzZWVWRHNFVCbzBuNVBMVjRWSHJPbFR2VCtTaCtGeklLbGpuRmRIQUVvV0UwZDAvaS9vUS9wcFBmaFVibVRhZmRiQU5GeURCNlBmZHIrQkdONDFxZ1k4ZkNibEUxUiszUDcrRkNsTVBMNW43T0hTVlpLMnM2UTYweEtQTTYwNVQ1TlV6dzkwb21GSzlTRm03aERGUkxyUk5PYkdnaUZPaDdFb0JDWjE1aFVkZVljR1ozdnVZcXJ5UXB2TUV2SVFjU1pUVHI5eHhnZ05ad1Z3eHd0WkszT2hRUTFYWEY5d2FkbGo1QWhxMTlURGRhN0NZQ1Rza1h5TDI1d2ZvemJmdjRObWZSTWkyTzQwWTUyUmlsL2RTNHRidDN3ZFV2K2owbHBEQW9zbmdUMEpyMWpwektFTUg3VkthR1hqalNJZzhqZFJvb1Z0Q25sWUQybW9xUTlQd3lrZ2lVRlJUS2dQYUhvTHdoY3Z2Mldwck4xblU2SlRxb0lBQ1IxQ0NVbGNhUmNhQnU3WDV6bUpsQ0o1SGp3cTh5ZWMyT1dIVjVES0RaWVpNVGlGSmM0R04zdHVKLzVqZ0JPZEFYUHlkRjlscWF6ZFoxT2lVNnFDQUFrZFFnbEU4UTlFS0Z0ZFhBUUYvdGR5UUdGWVZkZXVpZVB6dTVzYlFUUnVEY0V5eUg0UG9HZTQrQnl6cHRjSU1lR0VvWDhKbndCcGFYbU5EVUxiTkFrVlJENS85Z3ozTUVkcEJpc2hlaHhUaEhjNVZlN2gvYk9oMnh1aW1DQVpFVTY4bUMySHhKYmk3bWVkWnRXblFLTmZFeGdLTlJoWEVVbW9GNVQxaXNTcUFKRFoyWmpoWERGMGw1YXlmbEtSdHNrR0JUODZJQStLZnBlaDhoMXB4VlZUcjUvekQyMkUxaXR4TzM1UDNyMkF5RCs3V1E0TUtZdHN2MUh3RFpSWmwwcFd1S0EzdHRtVE5ZZ1M4ekpPdWM3NnVmQTVCQjFBNCtFMFljQ211ZS9sajhwR1ZldU0zM1RaUElLak1wUnU5cFZIUDJUcUdaTHdTYy8weno5UnJmUkc5SmZ3cTVzZ3JLcWZxYkxOUjNSOENhdDhCUHlZQVBxZXF5a2d1Q2NBcGVRL1h0SHVGUFVremVUM1ZFZ1grMDFId1JvWG9TK2IrZm5sVUVoYzhFOFZMRUJSVXdTOFJLVEwzR3AxZnJGTzZDMW94NjhNT3FqZnA5OHNjRThzUlZtdmM2alg1MEV5UTdyeXlpdWdjYUxsYnNubkRNOWxxYXpkWjFPaVU2cUNBQWtkUWdsSUdwTGhLbEcxazh4aXh4Y2tkUGdSd005c2tnd1QzRjJidGpNMTYxSzBsOHl5dkxTTlpXYy9zSW4vdldTQUhVOXByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUGJKZkJXbXd0TWRvUEhQb1Y3ZWpTcFcrN2hPcGEzVkgrQm5XaXpoY0Y2eXl2TFNOWldjL3NJbi92V1NBSFU5dUE5Q1NXL3BGaTVMSmpGNUNvakZFQnNuNHQ3QlRmYmJacFN4blh5cThzRXpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMnl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFVFUVNrRXk4b3Bqb3FvZkptYnpEbTNBV0NqQUUzb0tvRFRzekF1T0o4MCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBhclRtWW03b09aMXJ4bDBUSTFxSmRPaG5hRm5QMmxvQUQzcm5KRUpGUG9WTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkt1Z0ZpeDUyMTNHcENPKzhYVnlRRWJXUTBBQlNpaTM0MU9KUzdqOVpCdFppQ3ZWVFExTm8zV3BoUjFMd01aeWpON0N3QXloTEEzRjFnSUNMUjlMSUJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2SXd3UTFWSFJxMC9ZRjIvWGVudHFQTEs4dEkxbFp6K3dpZis5WklBZFQybnVFTVlwOW1vckpmYWpCRUZLZTVzRmYzVi9KSEZrMWtBZDREbDEvUTE1WFZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFGUkVBc3g5eGt0STFyeFdoTE5aUUF6cFF5K3c3ODg3RGtKeXZ2MnduT0o3bmhIMEk2cXZYTHo5RkM5WUdYVzM1dnRNRENySEZiemxsZUlCMmNlRVd3eXl2TFNOWldjL3NJbi92V1NBSFU5bC82dmpJTlJBSVg2NGUzTXd5QithL2kzcEx2clpoMllqWE9MRXpEb01zenl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTdDQVFibXdHbERFQWZPaXlxdHFMUTlRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNQWFQdXFHeDduU0NteXdvdzlNUGczM214dWJBYVRQOTE4RlNIelhhUTFQanNNWG13eDcxUTd3ZzRBZG8vZmJyaHpPV2Q2TzhUUnp0VWUxODBMMnE5NkVsVVd1Nm1ET2NGaGx6ekprTnd2c0pTQTVOMm9Eb1ZmV2FhaW1GTGwySmRIbzNEV0ZQRTBUdHlsblhQRm5QaVIrcjZ5RUkya2NGT1piaDB4dUc5U1kvQU1SYkFIMDVKWWtpa3U0elY2THdTV0l1ZkZZZjRJV3lFck8yaFFyYVgxZGNnSEdrQXJoTGoycVFBNmwyQVVtQXBzTzRpY3NUc0FMb1hNaDY4RUJKUWJ0MmkwNmcxdk9rTGhCMVh6MTMrV0NRKzRTN09OWlpUcllkaVh5UGU0UTJPVC9mSXJQMHROejloV1RkQ1Jhb01FVUY5RzVyMjNLeCsvN09ONUlDYkdnVTRDV2xMMzQ1cGtrMXMyckFuYlh6RU9VbFZFUU1ZdWtwZ09ja1VZdUJ4S0VhZHlEUjJYTnZZSFBUVVNKNmNWUT09XFxcXFxcXCIpXFxcXG59XFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKTtcXFwifSx7XFxcImNvbF90eXBlXFxcIjpcXFwibW92aWVfM1xcXCIsXFxcIm5hbWVcXFwiOlxcXCLku6PnoIEt5pu05aSaXFxcIixcXFwicGF0aFxcXCI6XFxcIm1vcmVcXFwiLFxcXCJydWxlXFxcIjpcXFwiaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcXFxuICAgIHZhciBfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsIHt9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+a8q+a4uCcgPyBnZXRIZWFkKHJ4KSA6ICfmvKvmuLgnLFxcXFxuICAgICAgICB1cmw6ICfmvKvmuLgnICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiBnZXRWYXIoJ1lTJykgPT0gJ+maj+acuicgPyBnZXRIZWFkKCfpmo/mnLonKSA6IGdldEhlYWQoJ+mqmueyiScpLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdZUycsIGdldFZhcignWVMnKT09J+maj+acuic/J+mqmueyiSc6J+maj+acuicpO3JlZnJlc2hQYWdlKCk7J3RvYXN0Oi8v6aKc6ImyLS0nK2dldFZhcignWVMnLCfpmo/mnLonKVxcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXFxcXFwi5paw54mIXFxcXFxcXCI/Z2V0SGVhZChcXFxcXFxcIuaWsOeJiFxcXFxcXFwiKTpcXFxcXFxcIuaWsOeJiFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aWsOeJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogX3R5cGU9PVxcXFxcXFwi5pen54mIXFxcXFxcXCI/Z2V0SGVhZChcXFxcXFxcIuaXp+eJiFxcXFxcXFwiKTpcXFxcXFxcIuaXp+eJiFxcXFxcXFwiLFxcXFxuICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5qC35byPLnR4dCcsJ+aXp+eJiCcpO3JlZnJlc2hQYWdlKCk7YmFjayh0cnVlKTsndG9hc3Q6Ly/liIfmjaLmiJDlip8nO1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfMidcXFxcbiAgICB9KTtcXFxcbiAgICBpZiAocnggIT0gJ+aXtuWFieacuicgJiYgcnggIT0gJ+e0ouW8lScpIHtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXFxcXFwidmFsdWVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLCBcXFxcXFxcImpzXFxcXFxcXCI6IFxcXFxcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXFxcXFwifWAsXFxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcXFxcXCIsIFxcXFxcXFwiaGludFxcXFxcXFwiOiBcXFxcXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFxcXFxcIn1gLFxcXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcIn0se1xcXCJjb2xfdHlwZVxcXCI6XFxcIm1vdmllXzNcXFwiLFxcXCJuYW1lXFxcIjpcXFwi5Luj56CBLeS4gOe6pzJcXFwiLFxcXCJwYXRoXFxcIjpcXFwiY29tbW9uMlxcXCIsXFxcInJ1bGVcXFwiOlxcXCJ2YXIgcmVzID0ge307XFxcXG52YXIgZCA9IFtdO1xcXFxudmFyIHBhZ2VudW0gPSBNWV9VUkwuc3BsaXQoJyMnKVsxXTtcXFxcbnZhciBSZWZlcmVyID0gJ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tJztcXFxcbmlmICghZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcpKSB7XFxcXG4gICAgd3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnLCAn5byA5ZCvLOWFs+mXrScpO1xcXFxufVxcXFxudmFyIHNfdHlwZSA9IGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc2V0dGluZy50eHQnKTtcXFxcbnB1dFZhcigncmVwbHlfdHlwZScsIHNfdHlwZS5zcGxpdCgnLCcpWzBdKTtcXFxcbnB1dFZhcignbGlrZV90eXBlJywgc190eXBlLnNwbGl0KCcsJylbMV0pO1xcXFxuLy/popzoibJcXFxcbnZhciBDb2xvcnMgPSBbXFxcXFxcXCI0XFxcXFxcXCIsIFxcXFxcXFwiNVxcXFxcXFwiLCBcXFxcXFxcIjBcXFxcXFxcIiwgXFxcXFxcXCIxXFxcXFxcXCIsIFxcXFxcXFwiQVxcXFxcXFwiLCBcXFxcXFxcIjNcXFxcXFxcIiwgXFxcXFxcXCI4XFxcXFxcXCIsIFxcXFxcXFwiOVxcXFxcXFwiLCBcXFxcXFxcIkJcXFxcXFxcIiwgXFxcXFxcXCJDXFxcXFxcXCIsIFxcXFxcXFwiRFxcXFxcXFwiLCBcXFxcXFxcIkVcXFxcXFxcIiwgXFxcXFxcXCI2XFxcXFxcXCIsIFxcXFxcXFwiN1xcXFxcXFwiLCBcXFxcXFxcIkZcXFxcXFxcIl07XFxcXG52YXIgQ29sb3IgPSAnIyc7XFxcXG5pZiAoZ2V0VmFyKCdZUycpID09ICfpmo/mnLonKSB7XFxcXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHtcXFxcbiAgICAgICAgdmFyIG51bSA9IE1hdGguY2VpbCgoTWF0aC5yYW5kb20oKSAqIDE1KSkgLSAxO1xcXFxuICAgICAgICB2YXIgQ29sb3IgPSBDb2xvciArIENvbG9yc1tudW1dO1xcXFxuICAgIH1cXFxcbn0gZWxzZSB7XFxcXG4gICAgdmFyIENvbG9yID0gXFxcXFxcXCIjRkE3Mjk4XFxcXFxcXCI7XFxcXG59XFxcXG5cXFxcbmZ1bmN0aW9uIGdldEhlYWQodGl0bGUpIHtcXFxcbiAgICByZXR1cm4gJ+KAmOKAmOKAmeKAmTxzdHJvbmc+PGZvbnQgY29sb3I9XFxcXFxcXCInICsgQ29sb3IgKyAnXFxcXFxcXCI+JyArIHRpdGxlICsgJzwvZnJvbnQ+PC9zdHJvbmc+JztcXFxcbn1cXFxcblxcXFxudmFyIGMxID0gJ2FsbCZiYW5ndW1pJmd1b2NoYW4mZG91Z2EmbXVzaWMma25vd2xlZGdlJnRlY2gmY2FyJmxpZmUmZm9vZCZraWNoaWt1JmZhc2hpb24mY2luZXBoaWxlJm9yaWdpbiZyb29raWUmZ2FtZSZlbnQmZGFuY2UmbW92aWUmdHYmZG9jdW1lbnRhcnkmYW5pbWFsJmd1b2NodWFuZyc7XFxcXG5cXFxcbnZhciB3MSA9ICflhajpg6gm55Wq5YmnJuWbveWImybliqjnlLsm6Z+z5LmQJuefpeivhibnp5HmioAm5rG96L2mJueUn+a0uybnvo7po58m6ay855WcJuaXtuWwmiblvbHop4Ym5Y6f5YibJuaWsOS6uibmuLjmiI8m5aix5LmQJuiInui5iCbnlLXlvbEm55S16KeG5YmnJue6quW9leeJhybliqjnianlnIgm5Zu95Yib55u45YWzJztcXFxcblxcXFxudmFyIGMyID0gJzIyJjIxMiY3MSYxODImMTM4JjI4JjMzJjE4NSc7XFxcXG5cXFxcbnZhciB3MiA9ICfprLznlZwm576O6aOfJue7vOiJuiblvbHop4Ym55Sf5rS7Jumfs+S5kCbnlarliacm55S16KeG5YmnJztcXFxcblxcXFxudmFyIHdvcmQxID0gdzEuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczEgPSBjMS5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjEgPSBnZXRWYXIoJ2xhYjEnLCAn5YWo6YOoJyk7XFxcXG52YXIga2V5MSA9IGdldFZhcigna2V5MScsICdhbGwnKTtcXFxcblxcXFxudmFyIHdvcmQyID0gdzIuc3BsaXQoJyYnKTtcXFxcbnZhciBjbGFzczIgPSBjMi5zcGxpdCgnJicpO1xcXFxudmFyIGxhYjIgPSBnZXRWYXIoJ2xhYjInLCAn6ay855WcJyk7XFxcXG52YXIga2V5MiA9IGdldFZhcigna2V5MicsICcyMicpO1xcXFxuXFxcXG52YXIgemJjMSA9ICdhbGwmMiYzJjYmMSY1JjkmMTAmMTEnO1xcXFxudmFyIHpidzEgPSAn5YWo6YOoJue9kea4uCbmiYvmuLgm5Y2V5py6JuWoseS5kCbnlLXlj7Am6Jma5ouf5Li75pKtJueUn+a0uyblrabkuaAnO1xcXFxudmFyIHpiYzIgPSAnMCYzMyc7XFxcXG52YXIgemJ3MiA9ICfpu5jorqTlsI/liIbnsbsm5b2x6Z+z6aaG77yI55Sf5rS777yJJztcXFxcbnZhciB6YndvcmQxID0gemJ3MS5zcGxpdCgnJicpO1xcXFxudmFyIHpiY2xhc3MxID0gemJjMS5zcGxpdCgnJicpO1xcXFxudmFyIHpibGFiMSA9IGdldFZhcignemJsYWIxJywgJ+WFqOmDqCcpO1xcXFxudmFyIHpia2V5MSA9IGdldFZhcignemJrZXkxJywgJ2FsbCcpO1xcXFxuXFxcXG52YXIgemJ3b3JkMiA9IHpidzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmNsYXNzMiA9IHpiYzIuc3BsaXQoJyYnKTtcXFxcbnZhciB6YmxhYjIgPSBnZXRWYXIoJ3pibGFiMicsICfpu5jorqTlsI/liIbnsbsnKTtcXFxcbnZhciB6YmtleTIgPSBnZXRWYXIoJ3pia2V5MicsICcwJyk7XFxcXG5cXFxcblxcXFxuXFxcXG4vL+S4ieWQiOS4gFxcXFxudmFyIHJ4ID0gZmV0Y2goJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0Jywge30pO1xcXFxudmFyIHdyID0gYEBsYXp5UnVsZT0uanM6d3JpdGVGaWxlKFxcXFxcXFwiaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHRcXFxcXFxcIixpbnB1dCk7cmVmcmVzaFBhZ2UoZmFsc2UpO1xcXFxcXFwidG9hc3Q6Ly/liIfmjaLmiJDlip9cXFxcXFxcImA7XFxcXG52YXIgc190YWIgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+aUtuiXjy50eHQnLCB7fSk7XFxcXG52YXIgc3IgPSBgQGxhenlSdWxlPS5qczp3cml0ZUZpbGUoXFxcXFxcXCJoaWtlcjovL2ZpbGVzL2JpbGkv5pS26JePLnR4dFxcXFxcXFwiLGlucHV0KTtyZWZyZXNoUGFnZShmYWxzZSk7XFxcXFxcXCJ0b2FzdDovL+WIh+aNouaIkOWKn1xcXFxcXFwiYDtcXFxcblxcXFxuaWYgKE1ZX1VSTC5zcGxpdCgnIycpWzFdID09ICcxJykge1xcXFxuICAgIC8vLnJlcGxhY2UoJ20uYmlsaWJpbGkuY29tJywgJ3d3dy5iaWxpYmlsaS5jb20nKS5yZXBsYWNlKC9cXFxcXFxcXD8vZywgJ++8n++8nycpLnJlcGxhY2UoL1xcXFxcXFxcJi9nLCAn77yG77yGJylcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogJ+ino+aekCcsXFxcXG4gICAgICAgIHVybDogXFxcXFxcXCInaGlrZXI6Ly9wYWdlL2RldGFpbD91cmw9JysnaHR0cHM6Ly8nK2lucHV0LnNwbGl0KCdodHRwczovLycpWzFdKycjaW1tZXJzaXZlVGhlbWUjJ1xcXFxcXFwiLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ2lucHV0JyxcXFxcbiAgICAgICAgZGVzYzogJ+ivt+i+k+WFpee9keWdgOaIluiAhWLnq5nlpI3liLbnmoTpk77mjqUnXFxcXG4gICAgfSk7XFxcXG5cXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ1VQ5Li7JyA/IGdldEhlYWQoJ+mmlumhtScpIDogJ+mmlumhtScsXFxcXG4gICAgICAgIHVybDogJ1VQ5Li7JyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+aOkuihjOamnCcgPyBnZXRIZWFkKHJ4KSA6ICfmjpLooYzmppwnLFxcXFxuICAgICAgICB1cmw6ICfmjpLooYzmppwnICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgIH0pO1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiByeCA9PSAn5paw55WqJyA/IGdldEhlYWQocngpIDogJ+aWsOeVqicsXFxcXG4gICAgICAgIHVybDogJ+aWsOeVqicgKyB3cixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfnm7Tmkq0nID8gZ2V0SGVhZChyeCkgOiAn55u05pKtJyxcXFxcbiAgICAgICAgdXJsOiAn55u05pKtJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogcnggPT0gJ+abtOWkmicgPyBnZXRIZWFkKHJ4KSA6ICfmm7TlpJonLFxcXFxuICAgICAgICB1cmw6ICfmm7TlpJonICsgd3IsXFxcXG4gICAgICAgIGNvbF90eXBlOiAndGV4dF81J1xcXFxuICAgIH0pO1xcXFxuICAgIC8qXFxcXG4gICAgICAgIGlmIChyeCA9PSAn5pS26JePJykge1xcXFxuICAgICAgICAgICAgXFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+955WqJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veeVqicsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+955WqJyArIHNyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgICAgIHRpdGxlOiBzX3RhYiA9PSAn6L+95YmnJyA/IGdldEhlYWQoc190YWIpIDogJ+i/veWJpycsXFxcXG4gICAgICAgICAgICAgICAgdXJsOiAn6L+95YmnJyArIHNyLFxcXFxuICAgICAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8zJ1xcXFxuICAgICAgICAgICAgfSk7XFxcXG4gICAgICAgICAgICBcXFxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+955WqJykge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9mYW5qdVxcXFxcXFwiKSkucnVsZSlcXFxcbiAgICAgICAgICAgIH1cXFxcbiAgICAgICAgICAgIGlmIChzX3RhYiA9PSAn6L+95YmnJykge1xcXFxuICAgICAgICAgICAgICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9kc2pcXFxcXFxcIikpLnJ1bGUpXFxcXG4gICAgICAgICAgICB9XFxcXG4gICAgICAgIH1cXFxcbiAgICAqL1xcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+aOkuihjOamnCcpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvcGhiXFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ1VQ5Li7Jykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS91cFxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfml7blhYnmnLonKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3NnalxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfmlrDnlaonKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL25ld2JnbVxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09ICfntKLlvJUnKSB7XFxcXG4gICAgZXZhbChKU09OLnBhcnNlKGZldGNoKFxcXFxcXFwiaGlrZXI6Ly9wYWdlL3N5XFxcXFxcXCIpKS5ydWxlKVxcXFxufVxcXFxuXFxcXG5pZiAocnggPT0gJ+ebtOaSrScpIHtcXFxcbiAgICBldmFsKEpTT04ucGFyc2UoZmV0Y2goXFxcXFxcXCJoaWtlcjovL3BhZ2UvemJcXFxcXFxcIikpLnJ1bGUpXFxcXG59XFxcXG5cXFxcbmlmIChyeCA9PSAn5pu05aSaJykge1xcXFxuICAgIGV2YWwoSlNPTi5wYXJzZShmZXRjaChcXFxcXFxcImhpa2VyOi8vcGFnZS9tb3JlMlxcXFxcXFwiKSkucnVsZSlcXFxcbn1cXFxcblxcXFxuaWYgKHJ4ID09IFxcXFxcXFwi5ryr5ri4XFxcXFxcXCIpIHtcXFxcbiAgICBldmFsUHJpdmF0ZUpTKFxcXFxcXFwiTm0wN3dJWjhVZFF5NDFTM2dDekhaRDFaNXJMZ0cxMlRONFhKMWVpY3Z3NGNpYkh2OTV6TkdtQkhzdUdUSXZiVWNoeVdYd1dNandxT2pHYWZPWmh1dUdIYjFqOS9LcFZrOGl2dHhxUnVVVDE1ZWRMUlNqWm5BQUZmemwzNVZiM2FrYXcwM2lGKzJuN3cwcm9sYjhZOGJXcDNOcVFxNjNGSEp4ZTNiZDRsemRTdmcrWG0zakVWWkl2a09VUGc0QW83VFRpUi84VWE0MzFUMVIyZXJhVGJnTkhDLys5cnhSODhjZW4zT3ZaVkNDSjNORmUrYjZzRW5mUUpxbytZRm4waDFZeVFOaFdsaGRJZ3dDb292MXdOS3Z6TmM1VTZsNkxKSUUvNGVaVzA3NnhBdnVHVzdWaVJ0ZDk5TmxLM2hicmM3d1BrVjErbjNBcU1QeU4wMDl6Q0xFU2dLYVlqbG44SThNZTZBcVJrRlN1elVNRE8za2NyV21pVzZ3eUdqMzg0Z1ozRDFhNUI0ZVZ6VHRqckNLbGt0R3hlQnVIZ1pIT0pRcFBLZXhaM1d4aWFiaDViS3Nib1U2QURXKzR2djZaVFBubThwL2tWSkxUakhhTGQxaGZUK0FpMTVCY21HVkRxRkhSQXhPdzdEQmkyM2pIbHFhczRsNm8zb1NJVXg0RS9TTUVuYkRueCtrNGp3NFlTZ21nNjZSekZ0TmdaK082emlLWDZNUEJhVUhKT29rVDRodFZvbzJGTmIxMGthRnhyTGJ5eFRjQ0JJL1FLditrdkdLUTJidjd2UnNGYUVOa0hGa0xaTkxORHg4blA0NjAzZi9wNXJKbHE1STRyYnF2TXZyUjFmbHhkZUVzODNrdERyZWpxaHBYMkhZb3g1WGplTmVwU1dBbFNlZWZnU1IxdGs5d0I5clVDdkQ1MUZDUWNBT2RqMGZJdWxad2lYK016WkZYNWZlVG5ma0FHdW94Sjh4eW0yZkMwaTlEeHdRRTJrZDZlcGZLRkpzT0l2VXViVmFML2JEK0pHaVhIa05vajZ1ajc1Y244MlQveFUrNXk3TVZacmwzaFljOW1Yc2dPZHBJTmgvSmd1bmVhTGx6L2N0ZnprVkZhUFN2YW1Ja2FFM0txRTVRNHN2dlIvRXlLbHZKSVUwVUt6OS94OElXK2U4blRnSy8yMVhRMW1DMVYxOTdVNWQvQkZlRnFCeG00d2lGSGtCRWlUNGt3V0JTeEEwTGdydWwrc1dtams0ZGtiY01wa1dDOEFySzgrcGFlQkNqT3NNaVY0NERyVFNCemlpZGozU1lRQS9GTG5hbW4zTVFHWHpMelovWEFmemsxMnBabC9xVTByMy9TYnAzeW9uajYzSDljZVNxRFMxM2N6SVRKUDJZNTdxTE04K3RwZk8wU0REb3VvQlpPNUZCb3JwbGUwaHJ6U3l6QXhtbGoxclozN3g5RDRTR2tRdGhnNVNsOWVNTVNhc1l4Y1M1TDBDZWNEVE9yTEZoVUhzVTJYS2hvTmJhTFFoY1N4RGRUYUJvdGZCNDhYRXp1V2hVNlgxY2JQWlo1azlhUWwzaTQxcHVBVkFTN3RvQnEyRzRPSmVuOXFTOGpwQXpDYnhDdUFObWpuL3pabWx6LzJYalY3YnpkV3p3NnVLYWpRdDJWdmhWSUhqcE4zQzBFYWtLR0tMN2tpdXBWTlM4L0xMRTVFOUhZSVlJd2FSQzBlcUVBbWR6dGtRNDVlVXEwVHl5ai80K1dUWTNNbWZiREJzV0E1VzFxSzFabFVlWGx3bDFmT09TZjBCMDgrMmxsU0g3cUgvQ0E4UmF6VTFpcG1IU1BJcHh5dys5dHpwbzB2Sk9UTzRwUTE4bGlDTW94RW9MbFk1TDcrZDlmeFJpbHAwUm85L3pXL1A3M3pDT0FCQ0VzM0ZjendqeTJVbHlDU0I3ejRnUE0xSnpsU21SR1gzaU0vM3lGTTdvd3dReUZyNzd6SkpLdHAwaXVnL21ON3hkYlJCbnJRYjJiMi9wWVBEV2JIL3lJcE91bDJpVmlYYWVtYTJWUXM2cUttMHhOdVpNcU9yOHRWcTc3VXpHcCtGWWZhVG5YVEdrV0t4ZWdHNXNpNFc0d244YXE1NStiUDZFQkpYeGp3VEFEQXg4WVArWGtpSzJuZ0V0YmdXdXpwWmhpQVlERVhCc2N2alpaaUxvdGNFQmdJcUg3eXpFdHBacDJZNCtZSG9GUUJ2VFFsei8rbTlkTzJMTmErUW81S3l0WXM1bG1LMjFjQ1VHb2ZQM1JXUjUzTHZzc0E0M25YcUprczA3cFhnbm80YWU2T0xvd0xqMDVZQU9YNXRRZGpOeFNvQXRacExoTXZTZjE0NDkzZ3MrY0hHNEdGblo2N1VoY0N0bzVnSE1DU0d2TjlkRGVYNUpkaEJySTU2WVVxY293eGlxRGg2MzJFcTdsR2lqdXczQmFQMUszdm9obzdBNWdzc2pzdE11VW9hU1NVb0tvV0FHQjJnYWh3anUraFVTNm1yS0czTnRtc2ZoTmxZb0o2d2lSUkZHeGNFTVVTQmgwM3Y1MjBreXlpZm9wZ2dCRUVQNHVNSW1VM0tCalc5T0RHZTNlaDROMk03MWJWWGJxaUtVVmpKY1ZuNi9zUWNUd2dKVWhkeDlEczhtKzl5WWk1WW1yNDczSENKN1F1YzMwWEtRNXp0V0NpcjBHMk1QdU02c0YxYjFZWFhzVzFrK3p0UDRoMUV2QTdyRzR2aG02Qi81ckd6K2xPVEczV2NqcTlNanVnTFFlTzNHRzZNdGFjdkdGT0h3ZFFiTDBYSlQwN1BzMmRBa3ZkWk5qdmZWYjFaTmlvcFY3TmErZytMQ1IySWV2dThkNUQwTEM0WXQ4anVBSHRpM1BsdU9YbWtXbUNGYjA2RURTRUd5Ty9SVU9KdDFRbTJRQytEbG9pRXBlbEIxcE91UkpRVVVGQnNsaVcreWFqL1hnRWkzbk5BM3VUd0puTEtnbGFjclExclpjZnI4QnNoUnpocVFsdHhkYmhXeGZrOFFLdklqSjRMRjFhZW1VR0IvamUzWnRveGgzdE10eE9KQ2ZCMHFlVWpIVWx5bXNjcXl5R29TWktPanhEeXZDOStHd2FjZEc0ZlVrTnlPa3RQUE15YnMvWnJtWFBJZVZxeUJ4b252T1hNL2JEYnB6MHJwOEcxWmVJMHJTb1JsdjExdldOc1BncjZzeW56ZEhZQmE4elBXSWxnVjBaMGg5SE5NbXZMbFZQTXZ3M2UrL2dYRjBmTEtoczloNGpUSGt6M0VyOWp1NEVtRW5GcU9mdWNHL1NDQ3M5ME50a29LUy81dFNyLzAvZTJIcW54UkxURCsxN1EwbFpudmJuNWZ5KzRHalJETzVMSldmeGZXdUtVaytiUTVMMWN5bVo5MXgvODIyZUU1YW9HclVlN2p4L1FkRkRCWGw3Skt0SlhZQnhtRVZhUklQNEN4QU1GcXpkT3llVlN2dHVrd0Z2N0d0MFYxVmppN1hvQy8zd1NKRlI2M2FtM000WllFekFjV29sU0V2YnNXL3NhM1JYVldPTHRlZ0wvZkJJa1ZIb1NOUmhiUlBFRTZpNkJzVUQ3cUtDaTEvZWdKVGpGMEo0S043UFJoR3k3YlRJT1R1K1lhL2Y5TGFkWDFBOGJMc1lzeGxUYk5xVm82SnpQWmFwaWNOY0NkSFBNMmFoNzhlQXR0U2FoVkNFYi9sM1pxaTJoRmtpWko4Z3hQQzBQWTdydG10UEFhWDR1SnNOZ2FCMEJUbHhzbEMxT29Ka0VsTjdHYnAxckJjdEd1VXc3cEwrUklPVFFrQ1lsK2EwVW4yZW1vSHdOdWJxRitKZDVjTzJwd1VvejAzalprOFUzbVdHbWpJcmNjak14QWUvcnR3eXNQNjNiNmlHN003dkxwT254VjN4dkN5ZEtUd21UZGkwbDZDMHozbzV0cXkycGtsN3VqMThEVmVWQ1hDNFZHNTZGK3ZQOEU5VkVNQWwvekNjakkycW1xbHVhNytoM2JybEhnNzk4QVJtNGJkTVBPbWZ5ZG1UR0IwZjdocXpadjE0QjMvY1dZcmFkd080ZXIxOVpiZlZZK3Y5UEpZcjZXT1U2MmlIUmo2WCtTS3R0UFdSK2xZSTAzaXRNcjhEdkY2eEdDK3hwK2hXK3Yvei85ZnJjODFJY0dNSVNlOE1IVFdpWGpBM1BoT1ErZXdINm5mUmVFTlRQVmFCcXJDdGtobk5kaWM4VTJoYzFjd2xGTHo3Zm9MZVl5eU84aWVkWGVGV09PK3FYN2p6OXVuaEl4YWxCaU1JdnNHN0pQOTRkZGp6M244Zk1UYjVNUEJvWDVGY2FmNFpCU3dYZDk4NDRvQjBCMXFvcEVLU2JCcVp4VjlZUSt3cGppbnZMdnY4b0NTdjI2YVlUc3ZFYlhzVGUrTTRBQ1gwdGtVbHJBNmkwNFo1eTZwYWxvWllObThwRFRzSnJrMGptOTU0L1k4NnBDK2dxMXVTZFREa1o2WVpyK0tuSEgzNmRScm1OYVlsVExKRDZ2VlM3MktWa295LzlZYjRVWlIvaFRpVE5Vb0hpRWMvamg1cHlpNXYvbGdqMnRPMVJJZ3RYRXVjcDhYYmZpREJIemtMWlY3TmErZytMQ1IySWV2dThkNUQwSk15eGE0Tjg3SE9SMWZIekVXTjVuTHBjYUZ4bllJK3U0Zm13R2tOdUFhOHk2K1dvV1pxVVJSdUpmeGNBb0wvSW5SOHRSMjRwREtRTHdPaFQ4RHRycXlpN2ZjV2x2NG9HWU16cWxBYVNuWjhFdnIxWU91YnRVREhoRlVMalhZNStPK3d1cXorY3pZWU0vRk5KR1VSS0haY2k4RGZMeVBIRU84VmUwOG5oSGxzWXhZT2FwYWpBL2dCT2NweEQxRzBtQmVBYTc2cTBJY3pDU3NSNjVieE10MFlWY25qOG1wdDdvK3EyUjRBbU5Ka1ZFNGU1TGxZSVJpQ3VHTEdZdGQxT3ZqNzUwek8vbmlSeDJzcXJpTWFnVW9OM0J2RWF2a2xjSFpKcTk2N0hLSFJKU2VMWldUMjkyWUcvY2wzWTNleXgxMTZFTjRkMi9oZis3NGVVRTZscXprL2VnK1pTaDF5NlJJdDdKRmx1S2NYZXV4WldJd2RxcVk5TjgwL3NrSmdZdXB6TDI0bGxJb0NoZ3A4Y3dnQ3NkbWZVQzkvNm5ZREtJNnlidSt2QW5UWVdjNkttSUF4U0t1c3J0a1VGMVlBUTA5d2FwZkpmZlpWcThsUDY5Z3pIbTJJa3Y5a0d1dUhPVTlZWUhxQ0hqVjcrS3FJSncxcmVWdS82bnAydTZ2MGtBK3AxczZzMFhVaEtoWWdvTTJQQ1JNc05BcmZxYS9RRy9qZmx0OUxIWk1Xd2kxNUJjbUdWRHFGSFJBeE93N0RCaTIzakhscWFzNGw2bzNvU0lVeDRFL3lBZllIdXNjbFlQMFpMMk9rSjhiOU1ESWRXWTJxcUdPanEzaHJZWi81TWZMeFdLc0kybS9Ycy9hMkx4VVVRMm1QS2Vya3hqNy9MZ1dvSDBKQ0RCOE11OWx2eTBNSVNOWEdldXlPTSt2R0ZuZWN1ekRtN01RT0NFdW10YldSWEZtL2NmYk1UZVpSNVd0aVMzSkx4V1NucWtRNDZQL01IYncweVkvSHRHVWdZQ1QvTGNSb0IxYkk4T2ptSUI3UmRjR2VMYUtSQ2xGMDdzakcyVDMrT2FGSVVsOFdzZkNUcEF5UU1DUUhnTW9TQ21nNldFbUZ6NHRVZG01QXVKUjFQWkw1S1NKTFBGdStXMU9kR1lsOFhjSGtlajZGUzc2TEFYcHM5ODY4N2hBL211bGJtWFlLWVczWVhkbjZsRENrN2szRXlUY0VuV1lIbGhMZDFiM2VvOGRQanROTGd5UkcxTTRuRmlKdDB1YWU2SXF1ZDFMczdBSnVOMUt5VVpJeUJsd3UvajVxdkxxeG5SbGt2YWJuVkZOYTNOSXJ3bC9leldxNlZ2Z21iY0NpcGkrWDNHOWUxTjJqckNnM0paVnk5N1hVUGFWbE81MWxRZUIvRkJFeHVhVzFZR285SndWaHhrUVlmY1A0Y21DRU56aXdjZkhkVXhMUmJjMHFxb3REYW9Ydy9Cc0pTZ2lFSkZuNnI5Q0w0QW1jdXIrYlFWVTh6K0lTUDJUUUJXV3QyaTdkcWxweEdBWXczUGNIS1NuRXV6elBaVTR4NTJEV2VwRU5pbG5EWlBXdml4YjYxamJKR2tEL3hXWFJ3NzRFQmpFYm9iOTJkUEltVlhMT3VlQkpIdjdXR0tEOFcxQ3hGT0M5MWhqbU9BS1NUSGV0Z005RkREOTdIR3RnajlxejUybDkydXZSa0FNZFhQY0ErbE9CS0ZFQ0xYa0Z5WVpVT29VZEVERTdEc01HTHBEWEtPRGZPVHoxZkV0NG81VXdDQWV0VG1lZ0c5a0s1Um43VkduZFcxVzVaS0ZMVW1vemdUS3duVzNkZDZIS3JwbzNQYkl0UGR1U2ZseDVKaEtRZStGcUxnb1ZLRG12NGtmN2gzMUtyVlRyNE1YM2FPZUppUmdQbjBCMnVUTXJFRHd2QU9RMHZSL3hhRGFDR1owT0w1VTJ3bTZBeHdPQ2djTnM1SG5NOWFlaUtYU3FqSjBPejZpV25xZzdLbTBwaTFkVUs5NlZxb2doUjV1Z3Q2K2R0Y1ZWRTNlTncraHZ1R3FZYVJDK092YUV4cHFkeHBISUU3djd3RUFMREJqRlp4VjBPTjR1OXR4ZjNaaVFXNHlPazc2b1J0OFhlUjJ5OXc3Qjkrd1paVDkrSjhPRlAvN2llTTM3bW1SVEljR241RVU2LzRHdTFyQ3RGWDlUU3NYOGJYYXJQREM3dTBXLzlEOEQ4Y05YQ2VvY05Xd3hTSUFIQUppSFE5cUdrNG12QVZQdGZ6NVkvSkNoSTNCd3RtRm9udmVZQk41d2FoS3ZDc1E0NzZrQ3JWMU8rSk4vTklZdVdOSHMxUU9KTXkxTWl2eUhWY0h2SFExZzcxcFgzejBsR1VldFRtZWdHOWtLNVJuN1ZHbmRXMVdaUHdRbThCWWRLOGtzQkNwNzcvdEVTd3pKWHZmM0Fuemp2T0dKV3U2RXUwTHoyTXo4SmExUDNIWi93ZGxtUStINHFZUUZad0FSSWlISWhLRVN0aEV5bS9TeGZYQ2o2NHlOOGI0WVo3a2Vua1ZzZ3VsanFIWUM1aGo5emsvTWlmcXNnTHpoVktxK2FqTWJEVmkzYUJ0R3Q3MHdpWW5Cd0VjVTFNdEtid1F6K1Q2VGdUb202TDMvQnZaWU9TSkpBdk1ZWmR2R0xkcFpxcWRIbGxJcEZ4Mkp1NHJadHp4bkwzZGg3bXNvWmp0U2JHU1hKTnc4akVJUThmZTB4ZXFCWkZPMnpEZW9KV0tWQXFHTnhKTEVxS0lXQWRNUEZxSXVIaFpSWW1vQXpiWUdDSGxzcmlYOXFSTnVIcmtiNU1IKzN1WnkrSjNIME5EcS9JUEs0SmpLcFp1N29tdEtMRlcxdmQ3ZGkrYjdvVmtYVzJ4TDFNYy9sQ0o4L2FFTzdUMFg3Y09tMFExenFKN0ZyUFNaaHRyQ29Zcmw3aDFxL2xWck9xajJWenRlUklxM0xOcFhDVXoyWVdONHh3U0JPNFZPRit1ME5ZWjBmV2grOFY1U2lmSS9NQW1WbmlDVGhkMWVja1V4QklGN3R6MVNTWDBsRjYyT1REYjVPQi9FRGIveUJuaURyUU5Db0J6NzY5MjhleHdGUEc1RnNwU3FYMnRMcFdabDlWdUcrZHJEcjh2Y2RHcmpVenJGemZ2b0ZMR1hBQ2JOV0YzT0tYbllZWU9VU01BM2h0d3FWd2RuUHk1Ry9tTTgrTmNjV2NuZmduYWlnUXFianNqS3Qyc3MvZGx5ZzB0QkZCNWt1UU1tWC9URjhJRW1sZGJVa1l2eTExUmF0UHkwR2JFY0hrZ2ZhY0p0M3pXdVJqd0JTYkFIUUFYTU5PblJoWE5DVnNlK0JrUlpHWjRsOEFGVlpCeFF1MEZrcFdyNisrYlhyeU1MRWhLZDBnbnE0WHUvS0FQNWJuVklBcWRxZ1ZmbjlJMzdoUExubjFBT2VTdTRTUTJDZVMrVzJEWDhqMmRQV2xxWk1EUU84anN6UHJhL3NGWURaQ0FxWVJnOFBrTUN2S0dXZVJnMHpkdnZDVEhHRnQ3dUFMSW9ITE15ZG02L2tJZ0V3d3FCV1EycGszZ2RTRWNTcmdGVDVmTDFwMUFLUndiV2NNTVRMRHVabEN3cEZJSDVzTFZHT1piZlUrT0NNT2s1MFBZVDBVSllKT2cyUktod3FjQ2lEWFQySC9peUI0TGpIZjA5QnhmeFgyRUNIeTdIT09TNWZyODVMSzNtc1IzTytJcWxDbC9VaHpjTFV5cC9FMTBlWUVjQ01ISFdqeHdiSDVYSWJOWEVaKzdWYkdVcU51ZElqUERPRDdlZUpBL1loMlpmVGR4QlpVRFlvR0pVZmxVM3NEb1BPOXk1Y2dTdUN2VVA4KzZBV2FFNVR5bnE1TVkrL3k0RnFCOUNRZ3dmRExMSzh0STFsWnord2lmKzlaSUFkVDJJSFA1S1lnVFhTNVEvU1dDT2Jva25ZWitUQkZ4MW1lc0hHcWFxZ2pJWERIeFRyVHUvYkFxR2VFbG56ZDhsaG11L2F0ek44RklDTTNpUXhCMjRCcGRHRSs2MyswT280OWVMWFhLN2pOWGZlZkZ6NDhiaHRqWGNCL2xrYTZDaTJxR3FSL3l4UlZvRGVKSTFnREZya3Fnd2lTYmlIZjJobFFDcXY0UHF6RllKQ2tGd3BOdW9yeFdZRS9GSW9YSU1nelNDU2hZcnI1Sm02YjgzRG44d0RFVG9WM0FyNmFaK2V1SXc5ZzcyK2xLQTNITEs4dEkxbFp6K3dpZis5WklBZFQyYWtIWGdKWk15eHdiK0FGRjRiNG1iWnN6ajJyTmVLUDNBbjZrUkIwTWF5M09sREw3RHZ6enNPUW5LKy9iQ2M0bncvQnNKU2dpRUpGbjZyOUNMNEFtY3ZGMzEyQkppOGVYNFNjdE5EQnd3RTQ2SzY0T0FZSTB3Z1dHUm9qNVpicFFJTlZBTkdiR01EMVlRbHBjby9yM0EzYnhvU3F5eUk4bXRkY2dhZGl6TGN6ZHd2c01yYVNpYUNTWmtKTG44WU1GdktENGN0Z3BGdFo0dTlmc0NsL0JPdUpKNVJXQ3B0R0ZhUlJ5MElmdVlRRW9FMWU2WFJxQTU3YWtnaEp5YXdjb0tsU001SjFoTXlSTWlyNEEwbFRKQ1duSVExeDV3QytUNk9rTzM5eW04a28xVjhlNTBKemNrRHhJd2srdlhia1hiRXB4MnpLOGRndEdveEtUZ0dXajd1Rmd1NjVZOEpyYThXVXgxY1V4TFFZenZENFJISUdYRjhwTEZydVlCWXNFdXN3ZlpUT1YrY1lpUlA1MHNVZTNDSGJ4b1NxeXlJOG10ZGNnYWRpekxjeHhNZFlqL0ZKZ3BUN0ZhTTNobG9OTjArZzJsRFVjeWdQTmU3dEhRMlN1OGNzcnkwaldWblA3Q0ovNzFrZ0IxUFp5V3duUlpOTG9Ibzl4Wlc1Z3ZBTVZnNEtsUXhjMDQ0NU5DMkV1Rm1ISHBIeHZDTGlYa3FtSTNHeXoxOXBnZFpPR1JtUEhnbTdFUmw0eXFXUzI4aE1OSUhJaDFqcmEzQXBZejk3TWcvREhYSUtaQURsODZVVncvMzIwNVlSUlBPVVlSWHJHMWVGeVZ4TDhURENveDZjSWdVL29nVE1Rd0lDdEQzL1RIektwRG4vMjdiNDZRTUFvTlAyS2xyVCtkb09mTkxPVVVsamxXdEtrakZvK3hZZ0V5MUc5amtUUFRkQXRHKzd3NUJKNHQ1K0FUeVQwQ1ZJdm9JaVRGbFozaEprYjN3T0tkc2hBOEJIaXU2UndxR3kvRnU2MlZHb2RNOVhKYkJrMW0vUFNSd2JXcjhiSTlIMzNyOE5oV1Uxb3FRSXF3LzNLTmtzQnNJaTJSd3VROUZOUlFPSmJaNXNHeitYcVcwZFhzVVdZVm4xdjZoWWdwVVFPZ1ZWUktWYzRLaVNTOHNHb0VwYkFTdFBUMXVSb0c3NDhYdnF0VTVEMU53Slc3YW9ySkpNSUNxdVFVZnVKVWJzM3hPUlF5a1c5NFV5aDJkV1UycGp2MVYyN040WmxmMUdJQ3k2ZHJGdGFEZzZ4YmtqMkxkK0RNQ083amg4TWdxWVd3ZW1Bbm9jSkhYUjBTY2VDakhHOVhXREVvd3NNZ3NkTVpvdkFzeGM1QURKQS9WWndxK3hpb3ZGNlcrWHVsdGp1aUIxR1hzR0FGL1BMSzh0STFsWnord2lmKzlaSUFkVDIxQk9XZWEzMWJ2UWNRT0RjK2o1MFcvcmt2R21xbGtwWDJVRU4za29mWDM0clNrWHdaM3NudDZJUmNabDlIR3ZVanFVd0t0bHJOTkFXckFPcHR3aFQ4Qm8ya2pWSUdFNmxkREIwNTluMnpGQk1yR29yekxxMENqbm5kVzVORDBTUXlkdHFtYnhldStDendpdDBCTHpKQnplZ2E0cTdzRlJHSWRLZUc0Z002RkRmYmpCNE1FNDBKSEdycC9hYVVuWnZzanpkaHRaNGpOdi83QUwveDZROXRoMUdrRlk3YllJYzJXRXRYWGFYSldoOU0rcWNSa2tjSmtBaGRlakh5WmpGYk4ybnRkaU1zeUhKTFo5VVdhdGFXUzl4MGF1TlRPc1hOKytnVXNaY0FKdDJOOERVbmJiMU03Sklpc0JYb3dwVVl1V2wrYS9PRUg3ck0ySWhkK2EyWnNzcnkwaldWblA3Q0ovNzFrZ0IxUFl3aUgwZlJuQ3p2bGJoY2NJZElQTkVHNlZSS1czSk1sMUpDSDBKNnZEbG12aDVKMXlERm1oYkFtWHF1VjBCb3J6OFN3dEt3THRHcStQUGorTmZzZzFwWkNtQjhSYnVJRzh4SHdGRk42bWNsY0tHZjI4N0U3aXljSGZiRTl5K1VJQ2lIYWRrZytveWlXMFNzdm5OQ05lZkczYTk0M1VxL2xDK0p0TlJSaTNLWUlqRE51OGlhcEZ6OXBzL2JlYkkrYURMSzh0STFsWnord2lmKzlaSUFkVDJ6L2xyQTBOSmRlZlBHR0hPY3RiOGxpc2ZjSHpWRFFBaG5lY1pXRmpkQWFSN2t4L09mTlpHem9CRHB5d3lZNklFdFdYSW1BSE1JK215OUlVZVRxUkNKbjVLeU1tQ0ZVVm5NcU1xVXgwak9CNHRSSVBFWGtod1pQbzRZTVVSY0RoSTZ5YWVwK0NxcTJ1RU5vcGcwRHp4VDVyTHg4V3B2VHBOUENPWVNXSm02YzJoaEFZR09aNzZPVUFwTjVzRHlUQkJXTWt4WU5RU294cTl3VVJLT0dyM0lzc3J5MGpXVm5QN0NKLzcxa2dCMVBiVmRQbTZoNCs4VjBOMVZuZnA0bm5EZkc4SXVKZVNxWWpjYkxQWDJtQjFrNURvMGs1cVFNZ09GWG9EakNiZGVuQmRYdkZmcjN1S1J3N3hPRDFaekxQM1JJRGlLVVRqVkRPYTBiMzByTnZ1OXNzcnkwaldWblA3Q0ovNzFrZ0IxUGI1UjVPMzk2SjIyRnhrYlFia1hYQ3A1MTBUSk1FMitJeGhtWVExRFBMcUxjc3J5MGpXVm5QN0NKLzcxa2dCMVBiNVI1TzM5NkoyMkZ4a2JRYmtYWENwVGZJRjBaWDIwd0t5cXVlM2VXM1pVSjBBK1hVQld3RU04QnBma01VNktpTDJXcHJOMW5VNkpUcW9JQUNSMUNDVXlNK3FDSXBMaTJDbVpnVHhkNXZkQ0FRcTliWUpSWldEOXcwSks1UnlFZzBDM2VWWWdidDk0VkREd0EwcnlKa05MK3ZwZkJzTzdkUmp1UjM2ZmlvK3NIUWpVb3lvME42WmRsQmplb2k1UUhpcHlOL20wd054aGFWRlhLczE2VHRudFN3bUd1dXVscy9MR21EcE9CMVlYVkJEZTlWd2R5K0paRFRjaDlzVFp1SzVzcWdHQlprSHB1OCtnOVJ1WWlUM0J4L2dVeFpKa3gwbTRBdllLbzk3QVpIa2RiUDdoVzBaZThaZU8wYmpJblJ0SVMvKzEvOW9wKy9Yd0pIRTVuQ1lpYk43ZWprYklHVGRsYnlqNTRCVnJMbVNUYXNrL2VzWFFSS2c1MUg5ckhJVXltVVFyRkxrT29hdWErVW02WlM0bjd2ejNVbDlZRmtUYXlQZThDdklQS1dvNUZIWkt4ZVdaUXZ2Y2t0SE9MaUFqcjVWS1RFWklGSnZqOEVlSi8zQkZHVFRrUkxpbFRBeExRMU03NitFS2VlV0oyRk9UWjBqNUtBbUxRYzNqNGIwVXhoc1F4Z2thcVN5M1o5NWtJdEFJREp6OU5JVE5wRHNHTm55VnpudTlwMHJTVGZiY0tqT1hZV25mWGJzM2F2czN0WWpYMEl2ZDJqSTZJLzE3MWZBV1I5VFp0eVNSSlZHc0diOXh2L214SlBnNE5xbTJjT2dMQktURVQ3OFIrRlR6SU9kdWtEYVFJYWpneGlQbTdwOE5LREtQRDZSYXFBcVpwUlQ2bHNoQmRVUng2cVI2cUhaWlUrUXhFRURkUG9mekUyU0FRYUJ0YUhuTVlCbTFlYnNKNUsrMXlTM291UWNWZnZUSDFyWU9QWmFtczNXZFRvbE9xZ2dBSkhVSUpTNE9WUGRnbHFXRjk2WWErTklGNWcvY0hjS2E3aVpvSDdNYTU0MjA1RmxoZnFPRHlGdHN0dlBOdmxPZXA2UDJYVDJXcHJOMW5VNkpUcW9JQUNSMUNDVU43N3NQOWJicTdwRjdIVElIeXZwUUtKc0tELzV4ZHc3UEJqdmlMcFRWTlcybnZhSmt5S0F2ZlZ5YUw2NGdyWUJyODZvaU5PY1NKYnBKQTBSYnJSOGVPSWJZcnJVcFhYbkhoS2RlSmRIUHN2L1JvVlVwT2tOSHAyeTFzNVRxZFlrUCs1LzZWVWRHNFVCbzBuNVBMVjRWSHJPbFR2VCtTaCtGeklLbGpuRmRIQUVvV0UwZDAvaS9vUS9wcFBmaFVibVRhZmRiQU5GeURCNlBmZHIrQkdONDFxZ1k4ZkNibEUxUiszUDcrRkNsTVBMNW43T0hTVlpLMnM2UTYweEtQTTYwNVQ1TlV6dzkwb21GSzlTRm03aERGUkxyUk5PYkdnaUZPaDdFb0JDWjE1aFVkZVljR1ozdnVZcXJ5UXB2TUV2SVFjU1pUVHI5eHhnZ05ad1Z3eHd0WkszT2hRUTFYWEY5d2FkbGo1QWhxMTlURGRhN0NZQ1Rza1h5TDI1d2ZvemJmdjRObWZSTWkyTzQwWTUyUmlsL2RTNHRidDN3ZFV2K2owbHBEQW9zbmdUMEpyMWpwektFTUg3VkthR1hqalNJZzhqZFJvb1Z0Q25sWUQybW9xUTlQd3lrZ2lVRlJUS2dQYUhvTHdoY3Z2Mldwck4xblU2SlRxb0lBQ1IxQ0NVbGNhUmNhQnU3WDV6bUpsQ0o1SGp3cTh5ZWMyT1dIVjVES0RaWVpNVGlGSmM0R04zdHVKLzVqZ0JPZEFYUHlkRjlscWF6ZFoxT2lVNnFDQUFrZFFnbEU4UTlFS0Z0ZFhBUUYvdGR5UUdGWVZkZXVpZVB6dTVzYlFUUnVEY0V5eUg0UG9HZTQrQnl6cHRjSU1lR0VvWDhKbndCcGFYbU5EVUxiTkFrVlJENS85Z3ozTUVkcEJpc2hlaHhUaEhjNVZlN2gvYk9oMnh1aW1DQVpFVTY4bUMySHhKYmk3bWVkWnRXblFLTmZFeGdLTlJoWEVVbW9GNVQxaXNTcUFKRFoyWmpoWERGMGw1YXlmbEtSdHNrR0JUODZJQStLZnBlaDhoMXB4VlZUcjUvekQyMkUxaXR4TzM1UDNyMkF5RCs3V1E0TUtZdHN2MUh3RFpSWmwwcFd1S0EzdHRtVE5ZZ1M4ekpPdWM3NnVmQTVCQjFBNCtFMFljQ211ZS9sajhwR1ZldU0zM1RaUElLak1wUnU5cFZIUDJUcUdaTHdTYy8weno5UnJmUkc5SmZ3cTVzZ3JLcWZxYkxOUjNSOENhdDhCUHlZQVBxZXF5a2d1Q2NBcGVRL1h0SHVGUFVremVUM1ZFZ1grMDFId1JvWG9TK2IrZm5sVUVoYzhFOFZMRUJSVXdTOFJLVEwzR3AxZnJGTzZDMW94NjhNT3FqZnA5OHNjRThzUlZtdmM2alg1MEV5UTdyeXlpdWdjYUxsYnNubkRNOWxxYXpkWjFPaVU2cUNBQWtkUWdsSUdwTGhLbEcxazh4aXh4Y2tkUGdSd005c2tnd1QzRjJidGpNMTYxSzBsOHl5dkxTTlpXYy9zSW4vdldTQUhVOXByUWhqVXYrcTZsNXduaVNtalJUU3NDK3dnSGNuMnNpb1hndCtvYU16dDJ5eXZMU05aV2Mvc0luL3ZXU0FIVTloUGJKZkJXbXd0TWRvUEhQb1Y3ZWpTcFcrN2hPcGEzVkgrQm5XaXpoY0Y2eXl2TFNOWldjL3NJbi92V1NBSFU5dUE5Q1NXL3BGaTVMSmpGNUNvakZFQnNuNHQ3QlRmYmJacFN4blh5cThzRXpwUXkrdzc4ODdEa0p5dnYyd25PSjhzcnkwaldWblA3Q0ovNzFrZ0IxUFkwMFBWdm9NMmZXOEx4Tm1KWmo1ZlV5eXZMU05aV2Mvc0luL3ZXU0FIVTlzc3J5MGpXVm5QN0NKLzcxa2dCMVBhVG5pclNSbDkyWjFNTVduS3FQclZtcWh0TXJOSDVjNWwrNzV1NFZFblVrMVFJelkxeHVYR2tHVlgxOWR1WkdjckxLOHRJMWxaeit3aWYrOVpJQWRUMnl5dkxTTlpXYy9zSW4vdldTQUhVOW5DK2YzWDNqRldrSW5Vdlp1RitRVFVFUVNrRXk4b3Bqb3FvZkptYnpEbTNBV0NqQUUzb0tvRFRzekF1T0o4MCs4c3J5MGpXVm5QN0NKLzcxa2dCMVBhclRtWW03b09aMXJ4bDBUSTFxSmRPaG5hRm5QMmxvQUQzcm5KRUpGUG9WTXNyeTBqV1ZuUDdDSi83MWtnQjFQYkt1Z0ZpeDUyMTNHcENPKzhYVnlRRWJXUTBBQlNpaTM0MU9KUzdqOVpCdFppQ3ZWVFExTm8zV3BoUjFMd01aeWpON0N3QXloTEEzRjFnSUNMUjlMSUJ5eXZMU05aV2Mvc0luL3ZXU0FIVTl2SXd3UTFWSFJxMC9ZRjIvWGVudHFQTEs4dEkxbFp6K3dpZis5WklBZFQybnVFTVlwOW1vckpmYWpCRUZLZTVzRmYzVi9KSEZrMWtBZDREbDEvUTE1WFZ5SE91WGZIWnJhUHMwMS90UkFVNWpGZzVxbHFNRCtBRTV5bkVQVWJTWU1zcnkwaldWblA3Q0ovNzFrZ0IxUGFGUkVBc3g5eGt0STFyeFdoTE5aUUF6cFF5K3c3ODg3RGtKeXZ2MnduT0o3bmhIMEk2cXZYTHo5RkM5WUdYVzM1dnRNRENySEZiemxsZUlCMmNlRVd3eXl2TFNOWldjL3NJbi92V1NBSFU5bC82dmpJTlJBSVg2NGUzTXd5QithL2kzcEx2clpoMllqWE9MRXpEb01zenl5dkxTTlpXYy9zSW4vdldTQUhVOXRoR0VSdmZQRkx3TlJEVlphelEzWTdDQVFibXdHbERFQWZPaXlxdHFMUTlRWGh3VkMycDRPcTh2djNVVmVUZHhNSUJCdWJBYVVNUUI4NkxLcTJvdEQzaXlQZldLd1FRZGFhS0ZBOEc3bWtNQWFQdXFHeDduU0NteXdvdzlNUGczM214dWJBYVRQOTE4RlNIelhhUTFQanNNWG13eDcxUTd3ZzRBZG8vZmJyaHpPV2Q2TzhUUnp0VWUxODBMMnE5NkVsVVd1Nm1ET2NGaGx6ekprTnd2c0pTQTVOMm9Eb1ZmV2FhaW1GTGwySmRIbzNEV0ZQRTBUdHlsblhQRm5QaVIrcjZ5RUkya2NGT1piaDB4dUc5U1kvQU1SYkFIMDVKWWtpa3U0elY2THdTV0l1ZkZZZjRJV3lFck8yaFFyYVgxZGNnSEdrQXJoTGoycVFBNmwyQVVtQXBzTzRpY3NUc0FMb1hNaDY4RUJKUWJ0MmkwNmcxdk9rTGhCMVh6MTMrV0NRKzRTN09OWlpUcllkaVh5UGU0UTJPVC9mSXJQMHROejloV1RkQ1Jhb01FVUY5RzVyMjNLeCsvN09ONUlDYkdnVTRDV2xMMzQ1cGtrMXMyckFuYlh6RU9VbFZFUU1ZdWtwZ09ja1VZdUJ4S0VhZHlEUjJYTnZZSFBUVVNKNmNWUT09XFxcXFxcXCIpXFxcXG59XFxcXG4vL+S4ieWQiOS4gFxcXFxuXFxcXG5yZXMuZGF0YSA9IGQ7XFxcXG5zZXRSZXN1bHQocmVzKVxcXCJ9LHtcXFwiY29sX3R5cGVcXFwiOlxcXCJtb3ZpZV8zXFxcIixcXFwibmFtZVxcXCI6XFxcIuS7o+eggS3mm7TlpJoyXFxcIixcXFwicGF0aFxcXCI6XFxcIm1vcmUyXFxcIixcXFwicnVsZVxcXCI6XFxcImlmIChNWV9VUkwuc3BsaXQoJyMnKVsxXSA9PSAnMScpIHtcXFxcbiAgICB2YXIgX3R5cGUgPSBmZXRjaCgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCB7fSk7XFxcXG4gICAgXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfml7blhYnmnLonID8gZ2V0SGVhZChyeCkgOiAn5pe25YWJ8J+QpScsXFxcXG4gICAgICAgIHVybDogJ+aXtuWFieacuicgKyB3cixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgLypcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6L+955WqJyxcXFxcbiAgICAgICAgICAgIHVybDogJ2hpa2VyOi8vY29sbGVjdGlvbj9ncm91cD3ikaDov73nlaonLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzQnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICovXFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfntKLlvJUnID8gZ2V0SGVhZChyeCkgOiAn57Si5byVJyxcXFxcbiAgICAgICAgdXJsOiAn57Si5byVJyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICAvKlxcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgdGl0bGU6IHJ4ID09ICfmlLbol48nID8gZ2V0SGVhZChyeCkgOiAn5pS26JePJyxcXFxcbiAgICAgICAgICAgIHVybDogJ+aUtuiXjycgKyB3cixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF80J1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAqL1xcXFxuICAgIGQucHVzaCh7XFxcXG4gICAgICAgIHRpdGxlOiAn55m75b2VJyxcXFxcbiAgICAgICAgdXJsOiAnaGlrZXI6Ly9wYWdlL25ld2xvZ2luJyxcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IHJ4ID09ICfmvKvmuLgnID8gZ2V0SGVhZChyeCkgOiAn5ryr5ri4JyxcXFxcbiAgICAgICAgdXJsOiAn5ryr5ri4JyArIHdyLFxcXFxuICAgICAgICBjb2xfdHlwZTogJ3RleHRfNSdcXFxcbiAgICB9KTtcXFxcbiAgICBkLnB1c2goe1xcXFxuICAgICAgICB0aXRsZTogZ2V0VmFyKCdZUycpID09ICfpmo/mnLonID8gZ2V0SGVhZCgn6ZqP5py6JykgOiBnZXRIZWFkKCfpqprnsoknKSxcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOnB1dFZhcignWVMnLCBnZXRWYXIoJ1lTJyk9PSfpmo/mnLonPyfpqprnsoknOifpmo/mnLonKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+minOiJsi0tJytnZXRWYXIoJ1lTJywn6ZqP5py6JylcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzUnXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IF90eXBlPT1cXFxcXFxcIuaWsOeJiFxcXFxcXFwiP2dldEhlYWQoXFxcXFxcXCLmlrDniYhcXFxcXFxcIik6XFxcXFxcXCLmlrDniYhcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfmlrDniYgnKTtyZWZyZXNoUGFnZSgpO2JhY2sodHJ1ZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJztcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgfSk7XFxcXG4gICAgZC5wdXNoKHtcXFxcbiAgICAgICAgdGl0bGU6IF90eXBlPT1cXFxcXFxcIuaXp+eJiFxcXFxcXFwiP2dldEhlYWQoXFxcXFxcXCLml6fniYhcXFxcXFxcIik6XFxcXFxcXCLml6fniYhcXFxcXFxcIixcXFxcbiAgICAgICAgdXJsOiBcXFxcXFxcImhpa2VyOi8vZW1wdHlAbGF6eVJ1bGU9LmpzOndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+agt+W8jy50eHQnLCfml6fniYgnKTtyZWZyZXNoUGFnZSgpO2JhY2sodHJ1ZSk7J3RvYXN0Oi8v5YiH5o2i5oiQ5YqfJztcXFxcXFxcIixcXFxcbiAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzInXFxcXG4gICAgfSk7XFxcXG4gICAgXFxcXG4gICAgaWYgKHJ4ICE9ICfml7blhYnmnLonICYmIHJ4ICE9ICfntKLlvJUnKSB7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6Ieq5a6aVUlEJyxcXFxcbiAgICAgICAgICAgIHVybDogYGlucHV0Oi8ve1xcXFxcXFwidmFsdWVcXFxcXFxcIjpcXFxcXFxcIlxcXFxcXFwiLCBcXFxcXFxcImpzXFxcXFxcXCI6IFxcXFxcXFwid3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvc3RhcmlkLnR4dCcsaW5wdXQpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9iaWxpL+WkmuWQiOS4gC50eHQnLCdVUOS4uycpO2NsZWFyVmFyKCdodG0nKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWlVUlEXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5p+l77yfYuermeeCueW8gOiHquW3seeahOS/oeaBr++8jOmVv+aMiXVpZOWNs+WPr++8jOivt+Whq+WFpee6r+aVsOWtl1xcXFxcXFwifWAsXFxcXG4gICAgICAgICAgICBkZXNjOiAn4oCY4oCY5bey6L6T5YWlOiDigJnigJknICsgZ2V0SGVhZChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3N0YXJpZC50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+eCuei1nmtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2FjY2Vzc19rZXkudHh0JyxpbnB1dCk7d3JpdGVGaWxlKCdoaWtlcjovL2ZpbGVzL2JpbGkv5aSa5ZCI5LiALnR4dCcsJ1VQ5Li7Jyk7cmVmcmVzaFBhZ2UoKTsndG9hc3Q6Ly/kvaDovpPlhaXnmoTmmK8nK2lucHV0XFxcXFxcXCIsIFxcXFxcXFwiaGludFxcXFxcXFwiOiBcXFxcXFxcIuivt+WcqOS4i+aWuei+k+WFpWtleSjnlKjkuo7ngrnotZ7mipXluIEpXFxcXFxcXFxu5LiN55+l6YGT5oCO5LmI5oqT77yf6YKj5bCx566X5LqGXFxcXFxcXCJ9YCxcXFxcbiAgICAgICAgICAgIGRlc2M6ICfigJjigJjlt7LovpPlhaU6IOKAmeKAmScgKyBnZXRIZWFkKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JpbGkvYWNjZXNzX2tleS50eHQnKSksXFxcXG4gICAgICAgICAgICBjb2xfdHlwZTogJ3RleHRfMSdcXFxcbiAgICAgICAgfSk7XFxcXG4gICAgICAgIGQucHVzaCh7XFxcXG4gICAgICAgICAgICB0aXRsZTogJ+ino+aekGtleScsXFxcXG4gICAgICAgICAgICB1cmw6IGBpbnB1dDovL3tcXFxcXFxcInZhbHVlXFxcXFxcXCI6XFxcXFxcXCJcXFxcXFxcIiwgXFxcXFxcXCJqc1xcXFxcXFwiOiBcXFxcXFxcIndyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL2tleS50eHQnLGlucHV0KTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvYmlsaS/lpJrlkIjkuIAudHh0JywnVVDkuLsnKTtyZWZyZXNoUGFnZSgpOyd0b2FzdDovL+S9oOi+k+WFpeeahOaYrycraW5wdXRcXFxcXFxcIiwgXFxcXFxcXCJoaW50XFxcXFxcXCI6IFxcXFxcXFwi6K+35Zyo5LiL5pa56L6T5YWla2V5KOeUqOS6juino+aekClcXFxcXFxcXG7kuI3nn6XpgZPmgI7kuYjmipPvvJ/pgqPlsLHnrpfkuoZcXFxcXFxcIn1gLFxcXFxuICAgICAgICAgICAgZGVzYzogJ+KAmOKAmOW3sui+k+WFpTog4oCZ4oCZJyArIGdldEhlYWQoZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9rZXkudHh0JykpLFxcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICd0ZXh0XzEnXFxcXG4gICAgICAgIH0pO1xcXFxuICAgICAgICBkLnB1c2goe1xcXFxuICAgICAgICAgICAgY29sX3R5cGU6ICdibGFua19ibG9jaydcXFxcbiAgICAgICAgfSk7XFxcXG5cXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn6K+E6K665Yy6OiDigJzigJzlt7InICsgZ2V0VmFyKCdyZXBseV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdyZXBseV90eXBlJywgZ2V0VmFyKCdyZXBseV90eXBlJyk9PSflhbPpl60nPyflvIDlkK8nOiflhbPpl60nKTtyZWZyZXNoUGFnZSgpO3dyaXRlRmlsZSgnaGlrZXI6Ly9maWxlcy9ydWxlcy9iaWxpL3NldHRpbmcudHh0JyxnZXRWYXIoJ3JlcGx5X3R5cGUnKSsnLCcrZ2V0VmFyKCdsaWtlX3R5cGUnKSk7J3RvYXN0Oi8v5beyJytnZXRWYXIoJ3JlcGx5X3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICAgICAgZC5wdXNoKHtcXFxcbiAgICAgICAgICAgIHRpdGxlOiAn54K56LWeJuaKleW4gTog4oCc4oCc5beyJyArIGdldFZhcignbGlrZV90eXBlJyksXFxcXG4gICAgICAgICAgICB1cmw6IFxcXFxcXFwiaGlrZXI6Ly9lbXB0eUBsYXp5UnVsZT0uanM6cHV0VmFyKCdsaWtlX3R5cGUnLCBnZXRWYXIoJ2xpa2VfdHlwZScpPT0n5YWz6ZetJz8n5byA5ZCvJzon5YWz6ZetJyk7cmVmcmVzaFBhZ2UoKTt3cml0ZUZpbGUoJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmlsaS9zZXR0aW5nLnR4dCcsZ2V0VmFyKCdyZXBseV90eXBlJykrJywnK2dldFZhcignbGlrZV90eXBlJykpOyd0b2FzdDovL+W3sicrZ2V0VmFyKCdsaWtlX3R5cGUnKTtcXFxcXFxcIixcXFxcbiAgICAgICAgICAgIGNvbF90eXBlOiAndGV4dF8yJ1xcXFxuICAgICAgICB9KTtcXFxcbiAgICB9XFxcXG59XFxcIn1dXCJ9IiwicGljVXJsIjoiaHR0cDovL2kwLmhkc2xiLmNvbS9iZnMvYXJjaGl2ZS83MWI5MjI1ZTMzMjExNWRhYTRhYmQ0ZDE5MGJhZTU4OGNlNTk3N2NkLmpwZ0BSZWZlcmVyPWh0dHA6Ly93d3cuYmlsaWJpbGkuY29tIiwidGl0bGUiOiJVUC3lhZTlrZDkuLrku4DkuYjkuI3lkIPnqp3ovrnojYnvvJ/osIPnmq7lkIzlrabmiorogIHluIjmsJTlvpfmiZTpnovlrZDvvIHnrJEuLi4ifQ==
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement