{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxLG14Y2hpdmU6MX0sUkVTRVJWRURfU1lNQk9MUz17RU5HOiJudWxsIixTVEVFTVA6InN0ZWVtLXBlZyIsQlRDUDoiYnRjcGVnIixMVENQOiJsdGNwIixET0dFUDoiZG9nZXAiLEJDSFA6ImJjaHAiLFNNVFQ6InN0ZWVtbW9uc3RlcnMiLEVNOiJzdGVlbS1lbmciLEVNRk9VUjoic3RlZW0tZW5nIixISVZFUDoic3RlZW0tdG9rZW5zIn0sY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLGZpbmRBbmRQcm9jZXNzQWxsPWFzeW5jKHRhYmxlLHF1ZXJ5LGNhbGxiYWNrKT0+e2xldCBvZmZzZXQ9MCxyZXN1bHRzPVtdLGRvbmU9ITE7Zm9yKDshZG9uZTspaWYocmVzdWx0cz1hd2FpdCBhcGkuZGIuZmluZCh0YWJsZSxxdWVyeSwxZTMsb2Zmc2V0KSxyZXN1bHRzKXtmb3IobGV0IGk9MDtpPHJlc3VsdHMubGVuZ3RoO2krPTEpYXdhaXQgY2FsbGJhY2socmVzdWx0c1tpXSk7cmVzdWx0cy5sZW5ndGg8MWUzP2RvbmU9ITA6b2Zmc2V0Kz0xZTN9fSxmaXhNdWx0aVR4VW5zdGFrZUJhbGFuY2VzPWFzeW5jKCk9Pnthd2FpdCBmaW5kQW5kUHJvY2Vzc0FsbCgidG9rZW5zIix7fSxhc3luYyB0b2tlbj0+e2F3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJwZW5kaW5nVW5zdGFrZXMiLHtzeW1ib2w6dG9rZW4uc3ltYm9sfSxhc3luYyBwZW5kaW5nVW5zdGFrZT0+e2lmKHBlbmRpbmdVbnN0YWtlLm51bWJlclRyYW5zYWN0aW9uc0xlZnQ+MSl7Y29uc3QgdG9rZW5zVG9SZWxlYXNlPWFwaS5CaWdOdW1iZXIocGVuZGluZ1Vuc3Rha2UucXVhbnRpdHkpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksYWRqdXN0ZWQ9YXBpLkJpZ051bWJlcihwZW5kaW5nVW5zdGFrZS5xdWFudGl0eUxlZnQpLm1pbnVzKHRva2Vuc1RvUmVsZWFzZSksYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OnBlbmRpbmdVbnN0YWtlLmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2JhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLGFkanVzdGVkLHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbil9ZWxzZSB0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLHBlbmRpbmdVbnN0YWtlLnF1YW50aXR5TGVmdCx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pfSl9KX07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ0b2tlbnMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlbnMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImNvbnRyYWN0c0JhbGFuY2VzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBlbmRpbmdVbnN0YWtlcyIsWyJhY2NvdW50IiwidW5zdGFrZUNvbXBsZXRlVGltZXN0YW1wIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZGVsZWdhdGlvbnMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsiYWNjb3VudCIsImNvbXBsZXRlVGltZXN0YW1wIl0pO2NvbnN0IHBhcmFtcz17dG9rZW5DcmVhdGlvbkZlZToiMCIsZW5hYmxlRGVsZWdhdGlvbkZlZToiMCIsZW5hYmxlU3Rha2luZ0ZlZToiMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLmZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZXx8KGF3YWl0IGZpeE11bHRpVHhVbnN0YWtlQmFsYW5jZXMoKSxwYXJhbXMuZml4TXVsdGlUeFVuc3Rha2VCYWxhbmNlPSEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9fTtjb25zdCBiYWxhbmNlVGVtcGxhdGU9e2FjY291bnQ6bnVsbCxzeW1ib2w6bnVsbCxiYWxhbmNlOiIwIixzdGFrZToiMCIscGVuZGluZ1Vuc3Rha2U6IjAiLGRlbGVnYXRpb25zSW46IjAiLGRlbGVnYXRpb25zT3V0OiIwIixwZW5kaW5nVW5kZWxlZ2F0aW9uczoiMCJ9LGFkZFN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtudWxsPT09YmFsYW5jZSYmKGJhbGFuY2U9YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2UuYWNjb3VudD1hY2NvdW50LGJhbGFuY2Uuc3ltYm9sPXRva2VuLnN5bWJvbCxiYWxhbmNlPWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhbGFuY2VzIixiYWxhbmNlKSksdm9pZCAwPT09YmFsYW5jZS5zdGFrZSYmKGJhbGFuY2Uuc3Rha2U9IjAiLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9IjAiKTtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2U7cmV0dXJuIGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx2b2lkIDA9PT10b2tlbi50b3RhbFN0YWtlZCYmKHRva2VuLnRvdGFsU3Rha2VkPSIwIiksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLCEwKX0sc3ViQmFsYW5jZT1hc3luYyhhY2NvdW50LHRva2VuLHF1YW50aXR5LHRhYmxlKT0+e2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5iYWxhbmNlKS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gYmFsYW5jZSIpKXtjb25zdCBvcmlnaW5hbEJhbGFuY2U9YmFsYW5jZS5iYWxhbmNlO2lmKGJhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmx0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBzdWJ0cmFjdCIpKXJldHVybiBhd2FpdCBhcGkuZGIudXBkYXRlKHRhYmxlLGJhbGFuY2UpLCEwfXJldHVybiExfSxhZGRCYWxhbmNlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHksdGFibGUpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYobnVsbD09PWJhbGFuY2UpcmV0dXJuIGJhbGFuY2U9YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2UuYWNjb3VudD1hY2NvdW50LGJhbGFuY2Uuc3ltYm9sPXRva2VuLnN5bWJvbCxiYWxhbmNlLmJhbGFuY2U9cXVhbnRpdHksYXdhaXQgYXBpLmRiLmluc2VydCh0YWJsZSxiYWxhbmNlKSwhMDtjb25zdCBvcmlnaW5hbEJhbGFuY2U9YmFsYW5jZS5iYWxhbmNlO3JldHVybiBiYWxhbmNlLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwhIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUodGFibGUsYmFsYW5jZSksITApfTthY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47Y29uc3R7dG9rZW5DcmVhdGlvbkZlZTp0b2tlbkNyZWF0aW9uRmVlLGVuYWJsZURlbGVnYXRpb25GZWU6ZW5hYmxlRGVsZWdhdGlvbkZlZSxlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMudG9rZW5DcmVhdGlvbkZlZT10b2tlbkNyZWF0aW9uRmVlLHBhcmFtcy5lbmFibGVEZWxlZ2F0aW9uRmVlPWVuYWJsZURlbGVnYXRpb25GZWUscGFyYW1zLmVuYWJsZVN0YWtpbmdGZWU9ZW5hYmxlU3Rha2luZ0ZlZSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMudXBkYXRlVXJsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt1cmw6dXJsLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ1cmwmJiJzdHJpbmciPT10eXBlb2YgdXJsLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KHVybC5sZW5ndGg8PTI1NSwiaW52YWxpZCB1cmw6IG1heCBsZW5ndGggb2YgMjU1Iikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYodG9rZW4mJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2NvbnN0IG1ldGFkYXRhPUpTT04ucGFyc2UodG9rZW4ubWV0YWRhdGEpO2FwaS5hc3NlcnQobWV0YWRhdGEmJm1ldGFkYXRhLnVybCwiYW4gZXJyb3Igb2NjdXJlZCB3aGVuIHRyeWluZyB0byB1cGRhdGUgdGhlIHVybCIpJiYobWV0YWRhdGEudXJsPXVybCx0b2tlbi5tZXRhZGF0YT1KU09OLnN0cmluZ2lmeShtZXRhZGF0YSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfWNhdGNoKGUpe319fSxhY3Rpb25zLnVwZGF0ZU1ldGFkYXRhPWFzeW5jIHBheWxvYWQ9Pntjb25zdHttZXRhZGF0YTptZXRhZGF0YSxzeW1ib2w6c3ltYm9sfT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmbWV0YWRhdGEmJiJvYmplY3QiPT10eXBlb2YgbWV0YWRhdGEsImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYodG9rZW4mJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikpdHJ5e2NvbnN0IGZpbmFsTWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2FwaS5hc3NlcnQoZmluYWxNZXRhZGF0YS5sZW5ndGg8PTFlMywiaW52YWxpZCBtZXRhZGF0YTogbWF4IGxlbmd0aCBvZiAxMDAwIikmJih0b2tlbi5tZXRhZGF0YT1maW5hbE1ldGFkYXRhLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX1jYXRjaChlKXt9fX0sYWN0aW9ucy51cGRhdGVQcmVjaXNpb249YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscHJlY2lzaW9uOnByZWNpc2lvbixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj4wJiZwcmVjaXNpb248PTgmJk51bWJlci5pc0ludGVnZXIocHJlY2lzaW9uKSwiaW52YWxpZCBwcmVjaXNpb24iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTt0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydChwcmVjaXNpb24+dG9rZW4ucHJlY2lzaW9uLCJwcmVjaXNpb24gY2FuIG9ubHkgYmUgaW5jcmVhc2VkIikmJih0b2tlbi5wcmVjaXNpb249cHJlY2lzaW9uLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX19LGFjdGlvbnMudHJhbnNmZXJPd25lcnNoaXA9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wsdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0bywiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7YXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJih0b2tlbi5pc3N1ZXI9ZmluYWxUbyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9fX0sYWN0aW9ucy5jcmVhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e25hbWU6bmFtZSxzeW1ib2w6c3ltYm9sLHVybDp1cmwscHJlY2lzaW9uOnByZWNpc2lvbixtYXhTdXBwbHk6bWF4U3VwcGx5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7dG9rZW5DcmVhdGlvbkZlZTp0b2tlbkNyZWF0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEhYXBpLkJpZ051bWJlcih0b2tlbkNyZWF0aW9uRmVlKS5sdGUoMCl8fHV0aWxpdHlUb2tlbkJhbGFuY2UmJmFwaS5CaWdOdW1iZXIodXRpbGl0eVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUodG9rZW5DcmVhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChuYW1lJiYic3RyaW5nIj09dHlwZW9mIG5hbWUmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJih2b2lkIDA9PT11cmx8fHVybCYmInN0cmluZyI9PXR5cGVvZiB1cmwpJiYocHJlY2lzaW9uJiYibnVtYmVyIj09dHlwZW9mIHByZWNpc2lvbnx8MD09PXByZWNpc2lvbikmJm1heFN1cHBseSYmInN0cmluZyI9PXR5cGVvZiBtYXhTdXBwbHkmJiFhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSYmYXBpLmFzc2VydChzeW1ib2wubGVuZ3RoPjAmJnN5bWJvbC5sZW5ndGg8PTEwJiZhcGkudmFsaWRhdG9yLmlzQWxwaGEoYXBpLnZhbGlkYXRvci5ibGFja2xpc3Qoc3ltYm9sLCIuIikpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJigtMT09PXN5bWJvbC5pbmRleE9mKCIuIil8fHN5bWJvbC5pbmRleE9mKCIuIik+MCYmc3ltYm9sLmluZGV4T2YoIi4iKTxzeW1ib2wubGVuZ3RoLTEmJnN5bWJvbC5pbmRleE9mKCIuIik9PT1zeW1ib2wubGFzdEluZGV4T2YoIi4iKSksJ2ludmFsaWQgc3ltYm9sOiB1cHBlcmNhc2UgbGV0dGVycyBvbmx5IGFuZCBvbmUgIi4iIGFsbG93ZWQsIG1heCBsZW5ndGggb2YgMTAnKSYmYXBpLmFzc2VydCh2b2lkIDA9PT1SRVNFUlZFRF9TWU1CT0xTW3N5bWJvbF18fGFwaS5zZW5kZXI9PT1SRVNFUlZFRF9TWU1CT0xTW3N5bWJvbF0sImNhbm5vdCB1c2UgdGhpcyBzeW1ib2wiKSYmYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKGFwaS52YWxpZGF0b3IuYmxhY2tsaXN0KG5hbWUsIiAiKSkmJm5hbWUubGVuZ3RoPjAmJm5hbWUubGVuZ3RoPD01MCwiaW52YWxpZCBuYW1lOiBsZXR0ZXJzLCBudW1iZXJzLCB3aGl0ZXNwYWNlcyBvbmx5LCBtYXggbGVuZ3RoIG9mIDUwIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dXJsfHx1cmwubGVuZ3RoPD0yNTUsImludmFsaWQgdXJsOiBtYXggbGVuZ3RoIG9mIDI1NSIpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj49MCYmcHJlY2lzaW9uPD04JiZOdW1iZXIuaXNJbnRlZ2VyKHByZWNpc2lvbiksImludmFsaWQgcHJlY2lzaW9uIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLmd0KDApLCJtYXhTdXBwbHkgbXVzdCBiZSBwb3NpdGl2ZSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5sdGUoTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpLCJtYXhTdXBwbHkgbXVzdCBiZSBsb3dlciB0aGFuICIrTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbD09PXRva2VuLCJzeW1ib2wgYWxyZWFkeSBleGlzdHMiKSl7bGV0IG1ldGFkYXRhPXt1cmw6dm9pZCAwPT09dXJsPyIiOnVybH07bWV0YWRhdGE9SlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpO2NvbnN0IG5ld1Rva2VuPXtpc3N1ZXI6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLG5hbWU6bmFtZSxtZXRhZGF0YTptZXRhZGF0YSxwcmVjaXNpb246cHJlY2lzaW9uLG1heFN1cHBseTphcGkuQmlnTnVtYmVyKG1heFN1cHBseSkudG9GaXhlZChwcmVjaXNpb24pLHN1cHBseToiMCIsY2lyY3VsYXRpbmdTdXBwbHk6IjAiLHN0YWtpbmdFbmFibGVkOiExLHVuc3Rha2luZ0Nvb2xkb3duOjEsZGVsZWdhdGlvbkVuYWJsZWQ6ITEsdW5kZWxlZ2F0aW9uQ29vbGRvd246MH07YXdhaXQgYXBpLmRiLmluc2VydCgidG9rZW5zIixuZXdUb2tlbiksYXBpLkJpZ051bWJlcih0b2tlbkNyZWF0aW9uRmVlKS5ndCgwKSYmYXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTp0b2tlbkNyZWF0aW9uRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KX19fSxhY3Rpb25zLmlzc3VlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXksY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkLGZyb21NaW5pbmdDb250cmFjdD0ibnVsbCI9PT1hcGkuc2VuZGVyJiYibWluaW5nIj09PWNhbGxpbmdDb250cmFjdEluZm8ubmFtZTtpZihmcm9tTWluaW5nQ29udHJhY3R8fGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGZyb21NaW5pbmdDb250cmFjdHx8dG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5IikmJmFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpKXtsZXQgcmVzPWF3YWl0IGFkZEJhbGFuY2UodG9rZW4uaXNzdWVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOyEwPT09cmVzJiZmaW5hbFRvIT09dG9rZW4uaXNzdWVyJiZhd2FpdCBzdWJCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSYmKHJlcz1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIiksITE9PT1yZXMmJmF3YWl0IGFkZEJhbGFuY2UodG9rZW4uaXNzdWVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKSwhMD09PXJlcyYmKHRva2VuLnN1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnN1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCJudWxsIiE9PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJ0cmFuc2ZlckZyb21Db250cmFjdCIse2Zyb206InRva2VucyIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19LGFjdGlvbnMuaXNzdWVUb0NvbnRyYWN0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibm90IGFsbG93ZWQgdG8gaXNzdWUgdG9rZW5zIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGlzc3VlIHBvc2l0aXZlIHF1YW50aXR5IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlbi5tYXhTdXBwbHkpLm1pbnVzKHRva2VuLnN1cHBseSkuZ3RlKHF1YW50aXR5KSwicXVhbnRpdHkgZXhjZWVkcyBhdmFpbGFibGUgc3VwcGx5IikmJmFwaS5hc3NlcnQoZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MCwiaW52YWxpZCB0byIpKXshMD09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSYmKHRva2VuLnN1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnN1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCJudWxsIiE9PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLGFwaS5lbWl0KCJpc3N1ZVRvQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fSxhY3Rpb25zLnRyYW5zZmVyPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChmaW5hbFRvIT09YXBpLnNlbmRlciwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSYmYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQodm9pZCAwPT09QUNDT1VOVF9CTEFDS0xJU1RbZmluYWxUb10sIm5vdCBhbGxvd2VkIHRvIHNlbmQgdG8gIitmaW5hbFRvKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7cmV0dXJuITE9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik/KGF3YWl0IGFkZEJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSwhMSk6KCJudWxsIj09PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpLGFwaS5lbWl0KCJ0cmFuc2ZlciIse2Zyb206YXBpLnNlbmRlcix0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSwhMCl9fX1yZXR1cm4hMX0sYWN0aW9ucy50cmFuc2ZlclRvQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Zyb206ZnJvbSx0bzp0byxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQsZmluYWxGcm9tPXZvaWQgMD09PWZyb218fCJudWxsIiE9PWFwaS5zZW5kZXI/YXBpLnNlbmRlcjpmcm9tO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXl8fCJudWxsIj09PWFwaS5zZW5kZXIsInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLnRvTG93ZXJDYXNlKCk7aWYoYXBpLmFzc2VydChmaW5hbFRvIT09ZmluYWxGcm9tLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTAsImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHRyYW5zZmVyIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoZmluYWxGcm9tLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKT9hd2FpdCBhZGRCYWxhbmNlKGZpbmFsRnJvbSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTooIm51bGwiPT09ZmluYWxUbyYmKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5PWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSksYXBpLmVtaXQoInRyYW5zZmVyVG9Db250cmFjdCIse2Zyb206ZmluYWxGcm9tLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fX0sYWN0aW9ucy50cmFuc2ZlckZyb21Db250cmFjdD1hc3luYyBwYXlsb2FkPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdHtmcm9tOmZyb20sdG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0eXBlOnR5cGV9PXBheWxvYWQsdHlwZXM9WyJ1c2VyIiwiY29udHJhY3QiXTtpZihhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZmcm9tJiYic3RyaW5nIj09dHlwZW9mIGZyb20mJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnR5cGUmJnR5cGVzLmluY2x1ZGVzKHR5cGUpJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRhYmxlPSJ1c2VyIj09PXR5cGU/ImJhbGFuY2VzIjoiY29udHJhY3RzQmFsYW5jZXMiO2lmKGFwaS5hc3NlcnQoInVzZXIiPT09dHlwZXx8ImNvbnRyYWN0Ij09PXR5cGUmJmZpbmFsVG8hPT1mcm9tLCJjYW5ub3QgdHJhbnNmZXIgdG8gc2VsZiIpKXtjb25zdCB0b1ZhbGlkPSJ1c2VyIj09PXR5cGU/YXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKTpmaW5hbFRvLmxlbmd0aD49MyYmZmluYWxUby5sZW5ndGg8PTUwO2lmKGFwaS5hc3NlcnQoITA9PT10b1ZhbGlkLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LHRhYmxlKT9hd2FpdCBhZGRCYWxhbmNlKGZyb20sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIik6KCJudWxsIj09PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpLGFwaS5lbWl0KCJ0cmFuc2ZlckZyb21Db250cmFjdCIse2Zyb206ZnJvbSx0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX19fX07Y29uc3QgcHJvY2Vzc1Vuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlLG5ld1Vuc3Rha2U9dW5zdGFrZSxiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sfSksdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtsZXQgdG9rZW5zVG9SZWxlYXNlPTAsbmV4dFRva2Vuc1RvUmVsZWFzZT0wO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKDE9PT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0Pyh0b2tlbnNUb1JlbGVhc2U9cXVhbnRpdHlMZWZ0LGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSkpOih0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXdVbnN0YWtlLnF1YW50aXR5TGVmdD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0KS5taW51cyh0b2tlbnNUb1JlbGVhc2UpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxuZXdVbnN0YWtlLm51bWJlclRyYW5zYWN0aW9uc0xlZnQtPTEsbmV4dFRva2Vuc1RvUmVsZWFzZT0xPT09bmV3VW5zdGFrZS5udW1iZXJUcmFuc2FjdGlvbnNMZWZ0P25ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0OnRva2Vuc1RvUmVsZWFzZSxuZXdVbnN0YWtlLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UubmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wKS5wbHVzKG5ld1Vuc3Rha2UubWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGVuZGluZ1Vuc3Rha2VzIixuZXdVbnN0YWtlKSksYXBpLkJpZ051bWJlcih0b2tlbnNUb1JlbGVhc2UpLmd0KDApKSl7Y29uc3Qgb3JpZ2luYWxCYWxhbmNlPWJhbGFuY2UuYmFsYW5jZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2JhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuQmlnTnVtYmVyKG5leHRUb2tlbnNUb1JlbGVhc2UpLmd0KDApJiYoYmFsYW5jZS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2Uuc3Rha2UsbmV4dFRva2Vuc1RvUmVsZWFzZSx0b2tlbi5wcmVjaXNpb24sITEpKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZSksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxuZXh0VG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoInVuc3Rha2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTp0b2tlbnNUb1JlbGVhc2V9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6YXBpLkJpZ051bWJlcih0b2tlbnNUb1JlbGVhc2UpLm5lZ2F0ZWQoKX0pKX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5zdGFrZXM9YXN5bmMoKT0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3QgdGltZXN0YW1wPW5ldyBEYXRlKGFwaS5oaXZlQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2xldCBwZW5kaW5nVW5zdGFrZXM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbnN0YWtlcyIse25leHRUcmFuc2FjdGlvblRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5zdGFrZXM9cGVuZGluZ1Vuc3Rha2VzLmxlbmd0aDtmb3IoO25iUGVuZGluZ1Vuc3Rha2VzPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5zdGFrZXM7aW5kZXgrPTEpe2NvbnN0IHBlbmRpbmdVbnN0YWtlPXBlbmRpbmdVbnN0YWtlc1tpbmRleF07YXdhaXQgcHJvY2Vzc1Vuc3Rha2UocGVuZGluZ1Vuc3Rha2UpfXBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbnN0YWtlcz1wZW5kaW5nVW5zdGFrZXMubGVuZ3RofX19LGFjdGlvbnMuZW5hYmxlU3Rha2luZz1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx1bnN0YWtpbmdDb29sZG93bjp1bnN0YWtpbmdDb29sZG93bixudW1iZXJUcmFuc2FjdGlvbnM6bnVtYmVyVHJhbnNhY3Rpb25zLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZW5hYmxlU3Rha2luZ0ZlZTplbmFibGVTdGFraW5nRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVTdGFraW5nRmVlKSxhdXRob3JpemVkPXZvaWQgMD09PWVuYWJsZVN0YWtpbmdGZWV8fGFwaS5CaWdOdW1iZXIoZW5hYmxlU3Rha2luZ0ZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuc3Rha2luZ0Nvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuc3Rha2luZ0Nvb2xkb3duKSYmdW5zdGFraW5nQ29vbGRvd24+MCYmdW5zdGFraW5nQ29vbGRvd248PTE4MjUwLCJ1bnN0YWtpbmdDb29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpJiZhcGkuYXNzZXJ0KG51bWJlclRyYW5zYWN0aW9ucyYmTnVtYmVyLmlzSW50ZWdlcihudW1iZXJUcmFuc2FjdGlvbnMpJiZudW1iZXJUcmFuc2FjdGlvbnM+MCYmbnVtYmVyVHJhbnNhY3Rpb25zPD0xODI1MCwibnVtYmVyVHJhbnNhY3Rpb25zIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXRva2VuLnN0YWtpbmdFbmFibGVkfHwhMT09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIGFscmVhZHkgZW5hYmxlZCIpJiYodG9rZW4uc3Rha2luZ0VuYWJsZWQ9ITAsdG9rZW4udG90YWxTdGFrZWQ9IjAiLHRva2VuLnVuc3Rha2luZ0Nvb2xkb3duPXVuc3Rha2luZ0Nvb2xkb3duLHRva2VuLm51bWJlclRyYW5zYWN0aW9ucz1udW1iZXJUcmFuc2FjdGlvbnMsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5ndCgwKSYmYXdhaXQgYWN0aW9ucy50cmFuc2Zlcih7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTplbmFibGVTdGFraW5nRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSl9fSxhY3Rpb25zLnN0YWtlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOnRvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KSxmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3Qgc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZFN0YWtlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHkpP2F3YWl0IGFkZEJhbGFuY2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTooYXBpLmVtaXQoInN0YWtlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX0sYWN0aW9ucy5zdGFrZUZyb21Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSx0bzp0byxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7aWYoY2FsbGluZ0NvbnRyYWN0SW5mbyYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSx0b2tlbixxdWFudGl0eSwiY29udHJhY3RzQmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRTdGFrZShmaW5hbFRvLHRva2VuLHF1YW50aXR5KT9hd2FpdCBhZGRCYWxhbmNlKGNhbGxpbmdDb250cmFjdEluZm8ubmFtZSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTooYXBpLmVtaXQoInN0YWtlRnJvbUNvbnRyYWN0Iix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX07Y29uc3Qgc3RhcnRVbnN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnRva2VuLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0Iil8fCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIHN0YWtlIikpcmV0dXJuITE7e2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlLG5leHRUb2tlbnNUb1JlbGVhc2U9dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPjE/YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTpxdWFudGl0eTtiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxuZXh0VG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkubHQob3JpZ2luYWxTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3Qob3JpZ2luYWxQZW5kaW5nU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx0b2tlbi50b3RhbFN0YWtlZD1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLnRvdGFsU3Rha2VkLG5leHRUb2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSx0b2tlbi5zeW1ib2wsYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIobmV4dFRva2Vuc1RvUmVsZWFzZSkubmVnYXRlZCgpfSkpfWNvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLGNvb2xkb3duUGVyaW9kTWlsbGlzZWM9MjQqdG9rZW4udW5zdGFraW5nQ29vbGRvd24qMzYwMCoxZTMsbWlsbGlzZWNQZXJQZXJpb2Q9YXBpLkJpZ051bWJlcihjb29sZG93blBlcmlvZE1pbGxpc2VjKS5kaXZpZGVkQnkodG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zKS5pbnRlZ2VyVmFsdWUoYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS5wbHVzKG1pbGxpc2VjUGVyUGVyaW9kKS50b051bWJlcigpLHVuc3Rha2U9e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eSxuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wLG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6dG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zLG1pbGxpc2VjUGVyUGVyaW9kOm1pbGxpc2VjUGVyUGVyaW9kLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O3JldHVybiBhd2FpdCBhcGkuZGIuaW5zZXJ0KCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpLCEwfTthY3Rpb25zLnVuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7YXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdW5zdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSkmJmFwaS5lbWl0KCJ1bnN0YWtlU3RhcnQiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pfX07Y29uc3QgcHJvY2Vzc0NhbmNlbFVuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnQsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDpudW1iZXJUcmFuc2FjdGlvbnNMZWZ0fT11bnN0YWtlLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmd0ZShxdWFudGl0eUxlZnQpLCJvdmVyZHJhd24gcGVuZGluZ1Vuc3Rha2UiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlLG9yaWdpbmFsUGVuZGluZ1N0YWtlPWJhbGFuY2UucGVuZGluZ1Vuc3Rha2UsdG9rZW5zVG9SZWxlYXNlPW51bWJlclRyYW5zYWN0aW9uc0xlZnQ+MT9hcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5kaXZpZGVkQnkodG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pOnF1YW50aXR5TGVmdDtpZihiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSx0b2tlbnNUb1JlbGVhc2UsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSxxdWFudGl0eUxlZnQsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoInVuc3Rha2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eUxlZnR9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6dG9rZW5zVG9SZWxlYXNlfSksITB9cmV0dXJuITF9O2FjdGlvbnMuY2FuY2VsVW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dHhJRDp0eElELGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHhJRCYmInN0cmluZyI9PXR5cGVvZiB0eElELCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bnN0YWtlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwZW5kaW5nVW5zdGFrZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsdHhJRDp0eElEfSk7YXBpLmFzc2VydCh1bnN0YWtlLCJ1bnN0YWtlIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHByb2Nlc3NDYW5jZWxVbnN0YWtlKHVuc3Rha2UpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpfX0sYWN0aW9ucy5lbmFibGVEZWxlZ2F0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuZGVsZWdhdGlvbkNvb2xkb3duOnVuZGVsZWdhdGlvbkNvb2xkb3duLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVEZWxlZ2F0aW9uRmVlKSxhdXRob3JpemVkPXZvaWQgMD09PWVuYWJsZURlbGVnYXRpb25GZWV8fGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWR8fCExPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZD0hMCx0b2tlbi51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19O2NvbnN0IHZhbGlkYXRlRGVsZWdhdGlvblF1YW50aXR5PWFzeW5jKGJhbGFuY2UsdG9rZW4scXVhbnRpdHkpPT57bGV0IGF2YWlsYWJsZURlbGVnYXRpb25CYWxhbmNlPWFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSk7cmV0dXJuIGF3YWl0IGZpbmRBbmRQcm9jZXNzQWxsKCJwZW5kaW5nVW5zdGFrZXMiLHtzeW1ib2w6YmFsYW5jZS5zeW1ib2wsYWNjb3VudDpiYWxhbmNlLmFjY291bnR9LGFzeW5jIHBlbmRpbmdVbnN0YWtlPT57aWYocGVuZGluZ1Vuc3Rha2UubnVtYmVyVHJhbnNhY3Rpb25zTGVmdD4xKXtjb25zdCB0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihwZW5kaW5nVW5zdGFrZS5xdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKTthdmFpbGFibGVEZWxlZ2F0aW9uQmFsYW5jZT1hdmFpbGFibGVEZWxlZ2F0aW9uQmFsYW5jZS5taW51cyhwZW5kaW5nVW5zdGFrZS5xdWFudGl0eUxlZnQpLnBsdXModG9rZW5zVG9SZWxlYXNlKX19KSxhcGkuYXNzZXJ0KGF2YWlsYWJsZURlbGVnYXRpb25CYWxhbmNlLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBzdGFrZSIpfTthY3Rpb25zLmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOnRvLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmdG8mJiJzdHJpbmciPT10eXBlb2YgdG8mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxUbyE9PWFwaS5zZW5kZXIsImNhbm5vdCBkZWxlZ2F0ZSB0byB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IGRlbGVnYXRlIHBvc2l0aXZlIHF1YW50aXR5Iikpe2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZUZyb20sImJhbGFuY2VGcm9tIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHZhbGlkYXRlRGVsZWdhdGlvblF1YW50aXR5KGJhbGFuY2VGcm9tLHRva2VuLHF1YW50aXR5KSl7dm9pZCAwPT09YmFsYW5jZUZyb20uc3Rha2U/KGJhbGFuY2VGcm9tLnN0YWtlPSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5zdGFrZT0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09YmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbiYmKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgYmFsYW5jZUZyb20uZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGJhbGFuY2VGcm9tLnJlY2VpdmVkU3Rha2UpKTtsZXQgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sfSk7bnVsbD09PWJhbGFuY2VUbz8oYmFsYW5jZVRvPWJhbGFuY2VUZW1wbGF0ZSxiYWxhbmNlVG8uYWNjb3VudD1maW5hbFRvLGJhbGFuY2VUby5zeW1ib2w9c3ltYm9sLGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJiYWxhbmNlcyIsYmFsYW5jZVRvKSk6dm9pZCAwPT09YmFsYW5jZVRvLnN0YWtlPyhiYWxhbmNlVG8uc3Rha2U9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5zdGFrZT0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09YmFsYW5jZVRvLmRlbGVnYXRpb25zSW4mJihiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLGJhbGFuY2VUby5kZWxlZ2F0ZWRTdGFrZSYmKGRlbGV0ZSBiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGJhbGFuY2VUby5yZWNlaXZlZFN0YWtlKSk7bGV0IGRlbGVnYXRpb249YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86ZmluYWxUbyxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtudWxsPT1kZWxlZ2F0aW9uPyhiYWxhbmNlRnJvbS5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlRnJvbSksYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbixxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pLGRlbGVnYXRpb249e30sZGVsZWdhdGlvbi5mcm9tPWFwaS5zZW5kZXIsZGVsZWdhdGlvbi50bz1maW5hbFRvLGRlbGVnYXRpb24uc3ltYm9sPXN5bWJvbCxkZWxlZ2F0aW9uLnF1YW50aXR5PXF1YW50aXR5LGRlbGVnYXRpb24uY3JlYXRlZD10aW1lc3RhbXAsZGVsZWdhdGlvbi51cGRhdGVkPXRpbWVzdGFtcCxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbiksYXBpLmVtaXQoImRlbGVnYXRlIix7dG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGRlbGVnYXRlZDohMH0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgibWluaW5nIiwiaGFuZGxlU3Rha2VDaGFuZ2UiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTphcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5uZWdhdGVkKCl9KSk6KGJhbGFuY2VGcm9tLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VGcm9tKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxkZWxlZ2F0aW9uLnVwZGF0ZWQ9dGltZXN0YW1wLGF3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIm1pbmluZyIsImhhbmRsZVN0YWtlQ2hhbmdlIix7YWNjb3VudDpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksZGVsZWdhdGVkOiEwfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHF1YW50aXR5OmFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLm5lZ2F0ZWQoKX0pKX19fX19LGFjdGlvbnMudW5kZWxlZ2F0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxmcm9tOmZyb20saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZmcm9tJiYic3RyaW5nIj09dHlwZW9mIGZyb20mJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgZmluYWxGcm9tPWZyb20udHJpbSgpO2lmKGFwaS5hc3NlcnQoZmluYWxGcm9tLmxlbmd0aD49MyYmZmluYWxGcm9tLmxlbmd0aDw9MTYsImludmFsaWQgZnJvbSIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZCwiZGVsZWdhdGlvbiBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGZpbmFsRnJvbSE9PWFwaS5zZW5kZXIsImNhbm5vdCB1bmRlbGVnYXRlIGZyb20geW91cnNlbGYiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB1bmRlbGVnYXRlIHBvc2l0aXZlIHF1YW50aXR5Iikpe2NvbnN0IGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VUbywiYmFsYW5jZVRvIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlVG8uZGVsZWdhdGlvbnNPdXQpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2NvbnN0IGJhbGFuY2VGcm9tPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxGcm9tLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlRnJvbSwiYmFsYW5jZUZyb20gZG9lcyBub3QgZXhpc3QiKSl7Y29uc3QgZGVsZWdhdGlvbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZGVsZWdhdGlvbnMiLHt0bzpmaW5hbEZyb20sZnJvbTphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1kZWxlZ2F0aW9uLCJkZWxlZ2F0aW9uIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihkZWxlZ2F0aW9uLnF1YW50aXR5KS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gZGVsZWdhdGlvbiIpKXtiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucyxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlVG8pLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc0luLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VGcm9tKSxkZWxlZ2F0aW9uLnF1YW50aXR5PWNhbGN1bGF0ZUJhbGFuY2UoZGVsZWdhdGlvbi5xdWFudGl0eSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGFwaS5CaWdOdW1iZXIoZGVsZWdhdGlvbi5xdWFudGl0eSkuZ3QoMCk/YXdhaXQgYXBpLmRiLnVwZGF0ZSgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pOmF3YWl0IGFwaS5kYi5yZW1vdmUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKTtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuZGVsZWdhdGlvbkNvb2xkb3duKjM2MDAqMWUzLGNvbXBsZXRlVGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCkrY29vbGRvd25QZXJpb2RNaWxsaXNlYyx1bmRlbGVnYXRpb249e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNvbXBsZXRlVGltZXN0YW1wOmNvbXBsZXRlVGltZXN0YW1wLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6ZmluYWxGcm9tLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6YXBpLkJpZ051bWJlcihxdWFudGl0eSkubmVnYXRlZCgpLGRlbGVnYXRlZDohMH0pfX19fX19fTtjb25zdCBwcm9jZXNzVW5kZWxlZ2F0aW9uPWFzeW5jIHVuZGVsZWdhdGlvbj0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fT11bmRlbGVnYXRpb24sYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucz1iYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zO2JhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnMscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucykubHQob3JpZ2luYWxQZW5kaW5nVW5kZWxlZ2F0aW9ucykmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlRG9uZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJtaW5pbmciLCJoYW5kbGVTdGFrZUNoYW5nZSIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX07YWN0aW9ucy5jaGVja1BlbmRpbmdVbmRlbGVnYXRpb25zPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKTtsZXQgcGVuZGluZ1VuZGVsZWdhdGlvbnM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1VuZGVsZWdhdGlvbnM9cGVuZGluZ1VuZGVsZWdhdGlvbnMubGVuZ3RoO2Zvcig7bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iUGVuZGluZ1VuZGVsZWdhdGlvbnM7aW5kZXgrPTEpe2NvbnN0IHBlbmRpbmdVbmRlbGVnYXRpb249cGVuZGluZ1VuZGVsZWdhdGlvbnNbaW5kZXhdO2F3YWl0IHByb2Nlc3NVbmRlbGVnYXRpb24ocGVuZGluZ1VuZGVsZWdhdGlvbil9cGVuZGluZ1VuZGVsZWdhdGlvbnM9YXdhaXQgYXBpLmRiLmZpbmQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix7Y29tcGxldGVUaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1VuZGVsZWdhdGlvbnM9cGVuZGluZ1VuZGVsZWdhdGlvbnMubGVuZ3RofX19Ow=="}}}