Tokens Smart Contract

in #steem-engine4 years ago

{"id":"ssc-mainnet1","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokens","params":"","code":"Y29uc3QgQUNDT1VOVF9CTEFDS0xJU1Q9e2dhdGVpb2RlcG9zaXQ6MSxkZWVwY3J5cHRvODoxLGJpdHRyZXg6MSxwb2xvbmlleDoxLCJodW9iaS1wcm8iOjEsImhvbmV5LXN3YXAiOjEsImJpbmFuY2UtaG90IjoxLGJpdHZhdm86MSxibG9ja3RyYWRlczoxLHByb2JpdHN0ZWVtOjEscHJvYml0aGl2ZToxLGlvbm9teToxfTthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57bGV0IHRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygidG9rZW5zIik7aWYoITE9PT10YWJsZUV4aXN0cyl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJ0b2tlbnMiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYmFsYW5jZXMiLFsiYWNjb3VudCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImNvbnRyYWN0c0JhbGFuY2VzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3Rva2VuQ3JlYXRpb25GZWU6IjAifTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLHBhcmFtcyl9ZWxzZXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3BhcmFtcy5lbmFibGVEZWxlZ2F0aW9uRmVlPSIxMDAwIixwYXJhbXMuZW5hYmxlU3Rha2luZ0ZlZT0iMTAwMCIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfXRhYmxlRXhpc3RzPWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygicGVuZGluZ1Vuc3Rha2VzIiksITE9PT10YWJsZUV4aXN0cyYmYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwZW5kaW5nVW5zdGFrZXMiLFsiYWNjb3VudCIsInVuc3Rha2VDb21wbGV0ZVRpbWVzdGFtcCJdKSx0YWJsZUV4aXN0cz1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoImRlbGVnYXRpb25zIiksITE9PT10YWJsZUV4aXN0cyYmKGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiZGVsZWdhdGlvbnMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLFsiYWNjb3VudCIsImNvbXBsZXRlVGltZXN0YW1wIl0pKTtsZXQgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDoiU1RFRU1QIn0pO3Rva2VuJiZ0b2tlbi5wcmVjaXNpb248OCYmKHRva2VuLnByZWNpc2lvbj04LGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOiJFTkcifSksdm9pZCAwIT09dG9rZW4uc3Rha2luZ0VuYWJsZWQmJiExIT09dG9rZW4uc3Rha2luZ0VuYWJsZWR8fCh0b2tlbi5zdGFraW5nRW5hYmxlZD0hMCx0b2tlbi50b3RhbFN0YWtlZD0iMCIsdG9rZW4udW5zdGFraW5nQ29vbGRvd249NDAsdG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPTQsdG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQ9ITAsdG9rZW4udW5kZWxlZ2F0aW9uQ29vbGRvd249Nyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9O2NvbnN0IGJhbGFuY2VUZW1wbGF0ZT17YWNjb3VudDpudWxsLHN5bWJvbDpudWxsLGJhbGFuY2U6IjAiLHN0YWtlOiIwIixwZW5kaW5nVW5zdGFrZToiMCIsZGVsZWdhdGlvbnNJbjoiMCIsZGVsZWdhdGlvbnNPdXQ6IjAiLHBlbmRpbmdVbmRlbGVnYXRpb25zOiIwIn0sY2FsY3VsYXRlQmFsYW5jZT0oYmFsYW5jZSxxdWFudGl0eSxwcmVjaXNpb24sYWRkKT0+YWRkP2FwaS5CaWdOdW1iZXIoYmFsYW5jZSkucGx1cyhxdWFudGl0eSkudG9GaXhlZChwcmVjaXNpb24pOmFwaS5CaWdOdW1iZXIoYmFsYW5jZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQocHJlY2lzaW9uKSxjb3VudERlY2ltYWxzPXZhbHVlPT5hcGkuQmlnTnVtYmVyKHZhbHVlKS5kcCgpLGFkZFN0YWtlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHkpPT57bGV0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtudWxsPT09YmFsYW5jZSYmKGJhbGFuY2U9YmFsYW5jZVRlbXBsYXRlLGJhbGFuY2UuYWNjb3VudD1hY2NvdW50LGJhbGFuY2Uuc3ltYm9sPXRva2VuLnN5bWJvbCxiYWxhbmNlPWF3YWl0IGFwaS5kYi5pbnNlcnQoImJhbGFuY2VzIixiYWxhbmNlKSksdm9pZCAwPT09YmFsYW5jZS5zdGFrZSYmKGJhbGFuY2Uuc3Rha2U9IjAiLGJhbGFuY2UucGVuZGluZ1Vuc3Rha2U9IjAiKTtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2U7cmV0dXJuIGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3Qob3JpZ2luYWxTdGFrZSksImNhbm5vdCBhZGQiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSx2b2lkIDA9PT10b2tlbi50b3RhbFN0YWtlZCYmKHRva2VuLnRvdGFsU3Rha2VkPSIwIiksdG9rZW4udG90YWxTdGFrZWQ9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi50b3RhbFN0YWtlZCxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pLCEwKX0sc3ViU3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9Pntjb25zdCBiYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6dG9rZW4uc3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIHN0YWtlIikpe2NvbnN0IG9yaWdpbmFsU3Rha2U9YmFsYW5jZS5zdGFrZSxvcmlnaW5hbFBlbmRpbmdTdGFrZT1iYWxhbmNlLnBlbmRpbmdVbnN0YWtlO2lmKGJhbGFuY2Uuc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnN0YWtlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5zdGFrZSkubHQob3JpZ2luYWxTdGFrZSkmJmFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3Qob3JpZ2luYWxQZW5kaW5nU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLCEwfXJldHVybiExfSxzdWJCYWxhbmNlPWFzeW5jKGFjY291bnQsdG9rZW4scXVhbnRpdHksdGFibGUpPT57Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlLCJiYWxhbmNlIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBiYWxhbmNlIikpe2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7aWYoYmFsYW5jZS5iYWxhbmNlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5iYWxhbmNlLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkubHQob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IHN1YnRyYWN0IikpcmV0dXJuIGF3YWl0IGFwaS5kYi51cGRhdGUodGFibGUsYmFsYW5jZSksITB9cmV0dXJuITF9LGFkZEJhbGFuY2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSx0YWJsZSk9PntsZXQgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSh0YWJsZSx7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtpZihudWxsPT09YmFsYW5jZSlyZXR1cm4gYmFsYW5jZT1iYWxhbmNlVGVtcGxhdGUsYmFsYW5jZS5hY2NvdW50PWFjY291bnQsYmFsYW5jZS5zeW1ib2w9dG9rZW4uc3ltYm9sLGJhbGFuY2UuYmFsYW5jZT1xdWFudGl0eSxhd2FpdCBhcGkuZGIuaW5zZXJ0KHRhYmxlLGJhbGFuY2UpLCEwO2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2U7cmV0dXJuIGJhbGFuY2UuYmFsYW5jZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UuYmFsYW5jZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLCEhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UuYmFsYW5jZSkuZ3Qob3JpZ2luYWxCYWxhbmNlKSwiY2Fubm90IGFkZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSh0YWJsZSxiYWxhbmNlKSwhMCl9O2FjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWV9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtwYXJhbXMudG9rZW5DcmVhdGlvbkZlZT10b2tlbkNyZWF0aW9uRmVlLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy51cGRhdGVVcmw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3VybDp1cmwsc3ltYm9sOnN5bWJvbH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnVybCYmInN0cmluZyI9PXR5cGVvZiB1cmwsImludmFsaWQgcGFyYW1zIikmJmFwaS5hc3NlcnQodXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgbWV0YWRhdGE9SlNPTi5wYXJzZSh0b2tlbi5tZXRhZGF0YSk7YXBpLmFzc2VydChtZXRhZGF0YSYmbWV0YWRhdGEudXJsLCJhbiBlcnJvciBvY2N1cmVkIHdoZW4gdHJ5aW5nIHRvIHVwZGF0ZSB0aGUgdXJsIikmJihtZXRhZGF0YS51cmw9dXJsLHRva2VuLm1ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSl9Y2F0Y2goZSl7fX19LGFjdGlvbnMudXBkYXRlTWV0YWRhdGE9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e21ldGFkYXRhOm1ldGFkYXRhLHN5bWJvbDpzeW1ib2x9PXBheWxvYWQ7aWYoYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZtZXRhZGF0YSYmIm9iamVjdCI9PXR5cGVvZiBtZXRhZGF0YSwiaW52YWxpZCBwYXJhbXMiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZih0b2tlbiYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSl0cnl7Y29uc3QgZmluYWxNZXRhZGF0YT1KU09OLnN0cmluZ2lmeShtZXRhZGF0YSk7YXBpLmFzc2VydChmaW5hbE1ldGFkYXRhLmxlbmd0aDw9MWUzLCJpbnZhbGlkIG1ldGFkYXRhOiBtYXggbGVuZ3RoIG9mIDEwMDAiKSYmKHRva2VuLm1ldGFkYXRhPWZpbmFsTWV0YWRhdGEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfWNhdGNoKGUpe319fSxhY3Rpb25zLnVwZGF0ZVByZWNpc2lvbj1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxwcmVjaXNpb246cHJlY2lzaW9uLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCkmJmFwaS5hc3NlcnQocHJlY2lzaW9uPjAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO3Rva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpJiZhcGkuYXNzZXJ0KHByZWNpc2lvbj50b2tlbi5wcmVjaXNpb24sInByZWNpc2lvbiBjYW4gb25seSBiZSBpbmNyZWFzZWQiKSYmKHRva2VuLnByZWNpc2lvbj1wcmVjaXNpb24sYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpfX0sYWN0aW9ucy50cmFuc2Zlck93bmVyc2hpcD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCx0bzp0byxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKHRva2VuJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgdGhlIGlzc3VlciIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTthcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSYmKHRva2VuLmlzc3Vlcj1maW5hbFRvLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKX19fSxhY3Rpb25zLmNyZWF0ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7bmFtZTpuYW1lLHN5bWJvbDpzeW1ib2wsdXJsOnVybCxwcmVjaXNpb246cHJlY2lzaW9uLG1heFN1cHBseTptYXhTdXBwbHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHt0b2tlbkNyZWF0aW9uRmVlOnRva2VuQ3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkVORyJ9KSxhdXRob3JpemVkQ3JlYXRpb249ISFhcGkuQmlnTnVtYmVyKHRva2VuQ3JlYXRpb25GZWUpLmx0ZSgwKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZSh0b2tlbkNyZWF0aW9uRmVlKTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KG5hbWUmJiJzdHJpbmciPT10eXBlb2YgbmFtZSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmKHZvaWQgMD09PXVybHx8dXJsJiYic3RyaW5nIj09dHlwZW9mIHVybCkmJihwcmVjaXNpb24mJiJudW1iZXIiPT10eXBlb2YgcHJlY2lzaW9ufHwwPT09cHJlY2lzaW9uKSYmbWF4U3VwcGx5JiYic3RyaW5nIj09dHlwZW9mIG1heFN1cHBseSYmIWFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYShzeW1ib2wpJiZhcGkudmFsaWRhdG9yLmlzVXBwZXJjYXNlKHN5bWJvbCkmJnN5bWJvbC5sZW5ndGg+MCYmc3ltYm9sLmxlbmd0aDw9MTAsImludmFsaWQgc3ltYm9sOiB1cHBlcmNhc2UgbGV0dGVycyBvbmx5LCBtYXggbGVuZ3RoIG9mIDEwIikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhhcGkudmFsaWRhdG9yLmJsYWNrbGlzdChuYW1lLCIgIikpJiZuYW1lLmxlbmd0aD4wJiZuYW1lLmxlbmd0aDw9NTAsImludmFsaWQgbmFtZTogbGV0dGVycywgbnVtYmVycywgd2hpdGVzcGFjZXMgb25seSwgbWF4IGxlbmd0aCBvZiA1MCIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PXVybHx8dXJsLmxlbmd0aDw9MjU1LCJpbnZhbGlkIHVybDogbWF4IGxlbmd0aCBvZiAyNTUiKSYmYXBpLmFzc2VydChwcmVjaXNpb24+PTAmJnByZWNpc2lvbjw9OCYmTnVtYmVyLmlzSW50ZWdlcihwcmVjaXNpb24pLCJpbnZhbGlkIHByZWNpc2lvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobWF4U3VwcGx5KS5ndCgwKSwibWF4U3VwcGx5IG11c3QgYmUgcG9zaXRpdmUiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG1heFN1cHBseSkubHRlKE51bWJlci5NQVhfU0FGRV9JTlRFR0VSKSwibWF4U3VwcGx5IG11c3QgYmUgbG93ZXIgdGhhbiAiK051bWJlci5NQVhfU0FGRV9JTlRFR0VSKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT10b2tlbiwic3ltYm9sIGFscmVhZHkgZXhpc3RzIikpe2xldCBtZXRhZGF0YT17dXJsOnZvaWQgMD09PXVybD8iIjp1cmx9O21ldGFkYXRhPUpTT04uc3RyaW5naWZ5KG1ldGFkYXRhKTtjb25zdCBuZXdUb2tlbj17aXNzdWVyOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbCxuYW1lOm5hbWUsbWV0YWRhdGE6bWV0YWRhdGEscHJlY2lzaW9uOnByZWNpc2lvbixtYXhTdXBwbHk6YXBpLkJpZ051bWJlcihtYXhTdXBwbHkpLnRvRml4ZWQocHJlY2lzaW9uKSxzdXBwbHk6IjAiLGNpcmN1bGF0aW5nU3VwcGx5OiIwIixzdGFraW5nRW5hYmxlZDohMSx1bnN0YWtpbmdDb29sZG93bjoxLGRlbGVnYXRpb25FbmFibGVkOiExLHVuZGVsZWdhdGlvbkNvb2xkb3duOjB9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInRva2VucyIsbmV3VG9rZW4pLGFwaS5CaWdOdW1iZXIodG9rZW5DcmVhdGlvbkZlZSkuZ3QoMCkmJmF3YWl0IGFjdGlvbnMudHJhbnNmZXIoe3RvOiJudWxsIixzeW1ib2w6IkVORyIscXVhbnRpdHk6dG9rZW5DcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSl9fX0sYWN0aW9ucy5pc3N1ZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBpc3N1ZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW4ubWF4U3VwcGx5KS5taW51cyh0b2tlbi5zdXBwbHkpLmd0ZShxdWFudGl0eSksInF1YW50aXR5IGV4Y2VlZHMgYXZhaWxhYmxlIHN1cHBseSIpJiZhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7bGV0IHJlcz1hd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKTshMD09PXJlcyYmZmluYWxUbyE9PXRva2VuLmlzc3VlciYmYXdhaXQgc3ViQmFsYW5jZSh0b2tlbi5pc3N1ZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikmJihyZXM9YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpLCExPT09cmVzJiZhd2FpdCBhZGRCYWxhbmNlKHRva2VuLmlzc3Vlcix0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSksITA9PT1yZXMmJih0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgidHJhbnNmZXJGcm9tQ29udHJhY3QiLHtmcm9tOiJ0b2tlbnMiLHRvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pKX19fSxhY3Rpb25zLmlzc3VlVG9Db250cmFjdD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHRva2VuLmlzc3Vlcj09PWFwaS5zZW5kZXIsIm5vdCBhbGxvd2VkIHRvIGlzc3VlIHRva2VucyIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBpc3N1ZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIodG9rZW4ubWF4U3VwcGx5KS5taW51cyh0b2tlbi5zdXBwbHkpLmd0ZShxdWFudGl0eSksInF1YW50aXR5IGV4Y2VlZHMgYXZhaWxhYmxlIHN1cHBseSIpJiZhcGkuYXNzZXJ0KGZpbmFsVG8ubGVuZ3RoPj0zJiZmaW5hbFRvLmxlbmd0aDw9NTAsImludmFsaWQgdG8iKSl7ITA9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIikmJih0b2tlbi5zdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5zdXBwbHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSwibnVsbCIhPT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuZW1pdCgiaXNzdWVUb0NvbnRyYWN0Iix7ZnJvbToidG9rZW5zIix0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX0sYWN0aW9ucy50cmFuc2Zlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoZmluYWxUbyE9PWFwaS5zZW5kZXIsImNhbm5vdCB0cmFuc2ZlciB0byBzZWxmIikmJmFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KHZvaWQgMD09PUFDQ09VTlRfQkxBQ0tMSVNUW2ZpbmFsVG9dLCJub3QgYWxsb3dlZCB0byBzZW5kIHRvICIrZmluYWxUbykpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpe3JldHVybiExPT09YXdhaXQgYWRkQmFsYW5jZShmaW5hbFRvLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpPyhhd2FpdCBhZGRCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIiksITEpOigibnVsbCI9PT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKSxhcGkuZW1pdCgidHJhbnNmZXIiLHtmcm9tOmFwaS5zZW5kZXIsdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksITApfX19cmV0dXJuITF9LGFjdGlvbnMudHJhbnNmZXJUb0NvbnRyYWN0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtmcm9tOmZyb20sdG86dG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLGZpbmFsRnJvbT12b2lkIDA9PT1mcm9tfHwibnVsbCIhPT1hcGkuc2VuZGVyP2FwaS5zZW5kZXI6ZnJvbTtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5fHwibnVsbCI9PT1hcGkuc2VuZGVyLCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKS50b0xvd2VyQ2FzZSgpO2lmKGFwaS5hc3NlcnQoZmluYWxUbyE9PWZpbmFsRnJvbSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSYmYXBpLmFzc2VydChmaW5hbFRvLmxlbmd0aD49MyYmZmluYWxUby5sZW5ndGg8PTUwLCJpbnZhbGlkIHRvIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCB0cmFuc2ZlciBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGZpbmFsRnJvbSx0b2tlbixxdWFudGl0eSwiYmFsYW5jZXMiKSl7ITE9PT1hd2FpdCBhZGRCYWxhbmNlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHksImNvbnRyYWN0c0JhbGFuY2VzIik/YXdhaXQgYWRkQmFsYW5jZShmaW5hbEZyb20sdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIik6KCJudWxsIj09PWZpbmFsVG8mJih0b2tlbi5jaXJjdWxhdGluZ1N1cHBseT1jYWxjdWxhdGVCYWxhbmNlKHRva2VuLmNpcmN1bGF0aW5nU3VwcGx5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbikpLGFwaS5lbWl0KCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtmcm9tOmZpbmFsRnJvbSx0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSl9fX19LGFjdGlvbnMudHJhbnNmZXJGcm9tQ29udHJhY3Q9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5hc3NlcnQoIm51bGwiPT09YXBpLnNlbmRlciwibm90IGF1dGhvcml6ZWQiKSl7Y29uc3R7ZnJvbTpmcm9tLHRvOnRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdHlwZTp0eXBlfT1wYXlsb2FkLHR5cGVzPVsidXNlciIsImNvbnRyYWN0Il07aWYoYXBpLmFzc2VydCh0byYmInN0cmluZyI9PXR5cGVvZiB0byYmZnJvbSYmInN0cmluZyI9PXR5cGVvZiBmcm9tJiZzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0eXBlJiZ0eXBlcy5pbmNsdWRlcyh0eXBlKSYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKSx0YWJsZT0idXNlciI9PT10eXBlPyJiYWxhbmNlcyI6ImNvbnRyYWN0c0JhbGFuY2VzIjtpZihhcGkuYXNzZXJ0KCJ1c2VyIj09PXR5cGV8fCJjb250cmFjdCI9PT10eXBlJiZmaW5hbFRvIT09ZnJvbSwiY2Fubm90IHRyYW5zZmVyIHRvIHNlbGYiKSl7Y29uc3QgdG9WYWxpZD0idXNlciI9PT10eXBlP2FwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyk6ZmluYWxUby5sZW5ndGg+PTMmJmZpbmFsVG8ubGVuZ3RoPD01MDtpZihhcGkuYXNzZXJ0KCEwPT09dG9WYWxpZCwiaW52YWxpZCB0byIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgdHJhbnNmZXIgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViQmFsYW5jZShmcm9tLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZEJhbGFuY2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSx0YWJsZSk/YXdhaXQgYWRkQmFsYW5jZShmcm9tLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpOigibnVsbCI9PT1maW5hbFRvJiYodG9rZW4uY2lyY3VsYXRpbmdTdXBwbHk9Y2FsY3VsYXRlQmFsYW5jZSh0b2tlbi5jaXJjdWxhdGluZ1N1cHBseSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoInRva2VucyIsdG9rZW4pKSxhcGkuZW1pdCgidHJhbnNmZXJGcm9tQ29udHJhY3QiLHtmcm9tOmZyb20sdG86ZmluYWxUbyxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX19fX19O2NvbnN0IHByb2Nlc3NVbnN0YWtlPWFzeW5jIHVuc3Rha2U9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxxdWFudGl0eUxlZnQ6cXVhbnRpdHlMZWZ0LG51bWJlclRyYW5zYWN0aW9uc0xlZnQ6bnVtYmVyVHJhbnNhY3Rpb25zTGVmdH09dW5zdGFrZSxuZXdVbnN0YWtlPXVuc3Rha2UsYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7bGV0IHRva2Vuc1RvUmVsZWFzZT0wO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSYmKDE9PT1udW1iZXJUcmFuc2FjdGlvbnNMZWZ0Pyh0b2tlbnNUb1JlbGVhc2U9cXVhbnRpdHlMZWZ0LGF3YWl0IGFwaS5kYi5yZW1vdmUoInBlbmRpbmdVbnN0YWtlcyIsdW5zdGFrZSkpOih0b2tlbnNUb1JlbGVhc2U9YXBpLkJpZ051bWJlcihxdWFudGl0eSkuZGl2aWRlZEJ5KHRva2VuLm51bWJlclRyYW5zYWN0aW9ucykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxuZXdVbnN0YWtlLnF1YW50aXR5TGVmdD1hcGkuQmlnTnVtYmVyKG5ld1Vuc3Rha2UucXVhbnRpdHlMZWZ0KS5taW51cyh0b2tlbnNUb1JlbGVhc2UpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uKSxuZXdVbnN0YWtlLm51bWJlclRyYW5zYWN0aW9uc0xlZnQtPTEsbmV3VW5zdGFrZS5uZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA9YXBpLkJpZ051bWJlcihuZXdVbnN0YWtlLm5leHRUcmFuc2FjdGlvblRpbWVzdGFtcCkucGx1cyhuZXdVbnN0YWtlLm1pbGxpc2VjUGVyUGVyaW9kKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoInBlbmRpbmdVbnN0YWtlcyIsbmV3VW5zdGFrZSkpLGFwaS5CaWdOdW1iZXIodG9rZW5zVG9SZWxlYXNlKS5ndCgwKSkpe2NvbnN0IG9yaWdpbmFsQmFsYW5jZT1iYWxhbmNlLmJhbGFuY2Usb3JpZ2luYWxQZW5kaW5nU3Rha2U9YmFsYW5jZS5wZW5kaW5nVW5zdGFrZTtiYWxhbmNlLmJhbGFuY2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLmJhbGFuY2UsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZS5wZW5kaW5nVW5zdGFrZT1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1Vuc3Rha2UpLmx0KG9yaWdpbmFsUGVuZGluZ1N0YWtlKSYmYXBpLkJpZ051bWJlcihiYWxhbmNlLmJhbGFuY2UpLmd0KG9yaWdpbmFsQmFsYW5jZSksImNhbm5vdCBzdWJ0cmFjdCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLHRva2VuLnRvdGFsU3Rha2VkPWNhbGN1bGF0ZUJhbGFuY2UodG9rZW4udG90YWxTdGFrZWQsdG9rZW5zVG9SZWxlYXNlLHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgidG9rZW5zIix0b2tlbiksYXBpLmVtaXQoInVuc3Rha2UiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTp0b2tlbnNUb1JlbGVhc2V9KSwiRU5HIj09PXN5bWJvbCYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFjY291bnR9KSl9fTthY3Rpb25zLmNoZWNrUGVuZGluZ1Vuc3Rha2VzPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuc3RlZW1CbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bGV0IHBlbmRpbmdVbnN0YWtlcz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1Vuc3Rha2VzIix7bmV4dFRyYW5zYWN0aW9uVGltZXN0YW1wOnskbHRlOnRpbWVzdGFtcH19KSxuYlBlbmRpbmdVbnN0YWtlcz1wZW5kaW5nVW5zdGFrZXMubGVuZ3RoO2Zvcig7bmJQZW5kaW5nVW5zdGFrZXM+MDspe2ZvcihsZXQgaW5kZXg9MDtpbmRleDxuYlBlbmRpbmdVbnN0YWtlcztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1Vuc3Rha2U9cGVuZGluZ1Vuc3Rha2VzW2luZGV4XTthd2FpdCBwcm9jZXNzVW5zdGFrZShwZW5kaW5nVW5zdGFrZSl9cGVuZGluZ1Vuc3Rha2VzPWF3YWl0IGFwaS5kYi5maW5kKCJwZW5kaW5nVW5zdGFrZXMiLHtuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXA6eyRsdGU6dGltZXN0YW1wfX0pLG5iUGVuZGluZ1Vuc3Rha2VzPXBlbmRpbmdVbnN0YWtlcy5sZW5ndGh9fX0sYWN0aW9ucy5lbmFibGVTdGFraW5nPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuc3Rha2luZ0Nvb2xkb3duOnVuc3Rha2luZ0Nvb2xkb3duLG51bWJlclRyYW5zYWN0aW9uczpudW1iZXJUcmFuc2FjdGlvbnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtlbmFibGVTdGFraW5nRmVlOmVuYWJsZVN0YWtpbmdGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkVORyJ9KSxlbm91Z2hGdW5kcz11dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGVuYWJsZVN0YWtpbmdGZWUpLGF1dGhvcml6ZWQ9dm9pZCAwPT09ZW5hYmxlU3Rha2luZ0ZlZXx8YXBpLkJpZ051bWJlcihlbmFibGVTdGFraW5nRmVlKS5sdGUoMCl8fGVub3VnaEZ1bmRzO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZCwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyICBmZWVzIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wsImludmFsaWQgc3ltYm9sIikmJmFwaS5hc3NlcnQodW5zdGFraW5nQ29vbGRvd24mJk51bWJlci5pc0ludGVnZXIodW5zdGFraW5nQ29vbGRvd24pJiZ1bnN0YWtpbmdDb29sZG93bj4wJiZ1bnN0YWtpbmdDb29sZG93bjw9MTgyNTAsInVuc3Rha2luZ0Nvb2xkb3duIG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDEgYW5kIDE4MjUwIikmJmFwaS5hc3NlcnQobnVtYmVyVHJhbnNhY3Rpb25zJiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlclRyYW5zYWN0aW9ucykmJm51bWJlclRyYW5zYWN0aW9ucz4wJiZudW1iZXJUcmFuc2FjdGlvbnM8PTE4MjUwLCJudW1iZXJUcmFuc2FjdGlvbnMgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMTgyNTAiKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTthcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodG9rZW4uaXNzdWVyPT09YXBpLnNlbmRlciwibXVzdCBiZSB0aGUgaXNzdWVyIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWR8fCExPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5zdGFraW5nRW5hYmxlZD0hMCx0b2tlbi50b3RhbFN0YWtlZD0iMCIsdG9rZW4udW5zdGFraW5nQ29vbGRvd249dW5zdGFraW5nQ29vbGRvd24sdG9rZW4ubnVtYmVyVHJhbnNhY3Rpb25zPW51bWJlclRyYW5zYWN0aW9ucyxhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZVN0YWtpbmdGZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJFTkciLHF1YW50aXR5OmVuYWJsZVN0YWtpbmdGZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuc3Rha2U9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pLGZpbmFsVG89dG8udHJpbSgpO2lmKGFwaS5hc3NlcnQoYXBpLmlzVmFsaWRBY2NvdW50TmFtZShmaW5hbFRvKSwiaW52YWxpZCB0byIpJiZhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uc3Rha2luZ0VuYWJsZWQsInN0YWtpbmcgbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5ndCgwKSwibXVzdCBzdGFrZSBwb3NpdGl2ZSBxdWFudGl0eSIpJiZhd2FpdCBzdWJCYWxhbmNlKGFwaS5zZW5kZXIsdG9rZW4scXVhbnRpdHksImJhbGFuY2VzIikpeyExPT09YXdhaXQgYWRkU3Rha2UoZmluYWxUbyx0b2tlbixxdWFudGl0eSk/YXdhaXQgYWRkQmFsYW5jZShhcGkuc2VuZGVyLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOihhcGkuZW1pdCgic3Rha2UiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJFTkciPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YXBpLnNlbmRlcn0pKX19fSxhY3Rpb25zLnN0YWtlRnJvbUNvbnRyYWN0PWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LHRvOnRvLGNhbGxpbmdDb250cmFjdEluZm86Y2FsbGluZ0NvbnRyYWN0SW5mb309cGF5bG9hZDtpZihjYWxsaW5nQ29udHJhY3RJbmZvJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJnRvJiYic3RyaW5nIj09dHlwZW9mIHRvJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCksImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSksZmluYWxUbz10by50cmltKCk7aWYoYXBpLmFzc2VydChhcGkuaXNWYWxpZEFjY291bnROYW1lKGZpbmFsVG8pLCJpbnZhbGlkIHRvIikmJmFwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChjb3VudERlY2ltYWxzKHF1YW50aXR5KTw9dG9rZW4ucHJlY2lzaW9uLCJzeW1ib2wgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoITA9PT10b2tlbi5zdGFraW5nRW5hYmxlZCwic3Rha2luZyBub3QgZW5hYmxlZCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHN0YWtlIHBvc2l0aXZlIHF1YW50aXR5IikmJmF3YWl0IHN1YkJhbGFuY2UoY2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLHRva2VuLHF1YW50aXR5LCJjb250cmFjdHNCYWxhbmNlcyIpKXshMT09PWF3YWl0IGFkZFN0YWtlKGZpbmFsVG8sdG9rZW4scXVhbnRpdHkpP2F3YWl0IGFkZEJhbGFuY2UoY2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lLHRva2VuLHF1YW50aXR5LCJiYWxhbmNlcyIpOihhcGkuZW1pdCgic3Rha2VGcm9tQ29udHJhY3QiLHthY2NvdW50OmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJFTkciPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pKX19fTtjb25zdCBzdGFydFVuc3Rha2U9YXN5bmMoYWNjb3VudCx0b2tlbixxdWFudGl0eSk9Pntjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLnN0ZWVtQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksY29vbGRvd25QZXJpb2RNaWxsaXNlYz0yNCp0b2tlbi51bnN0YWtpbmdDb29sZG93biozNjAwKjFlMyxtaWxsaXNlY1BlclBlcmlvZD1hcGkuQmlnTnVtYmVyKGNvb2xkb3duUGVyaW9kTWlsbGlzZWMpLmRpdmlkZWRCeSh0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMpLmludGVnZXJWYWx1ZShhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLG5leHRUcmFuc2FjdGlvblRpbWVzdGFtcD1hcGkuQmlnTnVtYmVyKGJsb2NrRGF0ZS5nZXRUaW1lKCkpLnBsdXMobWlsbGlzZWNQZXJQZXJpb2QpLnRvTnVtYmVyKCksdW5zdGFrZT17YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2wscXVhbnRpdHk6cXVhbnRpdHkscXVhbnRpdHlMZWZ0OnF1YW50aXR5LG5leHRUcmFuc2FjdGlvblRpbWVzdGFtcDpuZXh0VHJhbnNhY3Rpb25UaW1lc3RhbXAsbnVtYmVyVHJhbnNhY3Rpb25zTGVmdDp0b2tlbi5udW1iZXJUcmFuc2FjdGlvbnMsbWlsbGlzZWNQZXJQZXJpb2Q6bWlsbGlzZWNQZXJQZXJpb2QsdHhJRDphcGkudHJhbnNhY3Rpb25JZH07YXdhaXQgYXBpLmRiLmluc2VydCgicGVuZGluZ1Vuc3Rha2VzIix1bnN0YWtlKX07YWN0aW9ucy51bnN0YWtlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuc3Rha2UgcG9zaXRpdmUgcXVhbnRpdHkiKSYmYXdhaXQgc3ViU3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSkmJihhd2FpdCBzdGFydFVuc3Rha2UoYXBpLnNlbmRlcix0b2tlbixxdWFudGl0eSksYXBpLmVtaXQoInVuc3Rha2VTdGFydCIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSkpfX07Y29uc3QgcHJvY2Vzc0NhbmNlbFVuc3Rha2U9YXN5bmMgdW5zdGFrZT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHF1YW50aXR5TGVmdDpxdWFudGl0eUxlZnR9PXVuc3Rha2UsYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbH0pLHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZSwiYmFsYW5jZSBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkuZ3RlKHF1YW50aXR5TGVmdCksIm92ZXJkcmF3biBwZW5kaW5nVW5zdGFrZSIpKXtjb25zdCBvcmlnaW5hbFN0YWtlPWJhbGFuY2Uuc3Rha2Usb3JpZ2luYWxQZW5kaW5nU3Rha2U9YmFsYW5jZS5wZW5kaW5nVW5zdGFrZTtpZihiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxxdWFudGl0eUxlZnQsdG9rZW4ucHJlY2lzaW9uLCEwKSxiYWxhbmNlLnBlbmRpbmdVbnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSxxdWFudGl0eUxlZnQsdG9rZW4ucHJlY2lzaW9uLCExKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYmFsYW5jZS5wZW5kaW5nVW5zdGFrZSkubHQob3JpZ2luYWxQZW5kaW5nU3Rha2UpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSlyZXR1cm4gYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2UpLGFwaS5lbWl0KCJ1bnN0YWtlIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHlMZWZ0fSksITB9cmV0dXJuITF9O2FjdGlvbnMuY2FuY2VsVW5zdGFrZT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dHhJRDp0eElELGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHhJRCYmInN0cmluZyI9PXR5cGVvZiB0eElELCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB1bnN0YWtlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwZW5kaW5nVW5zdGFrZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsdHhJRDp0eElEfSk7YXBpLmFzc2VydCh1bnN0YWtlLCJ1bnN0YWtlIGRvZXMgbm90IGV4aXN0IikmJmF3YWl0IHByb2Nlc3NDYW5jZWxVbnN0YWtlKHVuc3Rha2UpJiZhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5zdGFrZXMiLHVuc3Rha2UpfX0sYWN0aW9ucy5lbmFibGVEZWxlZ2F0aW9uPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHVuZGVsZWdhdGlvbkNvb2xkb3duOnVuZGVsZWdhdGlvbkNvb2xkb3duLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7ZW5hYmxlRGVsZWdhdGlvbkZlZTplbmFibGVEZWxlZ2F0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJFTkcifSksZW5vdWdoRnVuZHM9dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShlbmFibGVEZWxlZ2F0aW9uRmVlKSxhdXRob3JpemVkPXZvaWQgMD09PWVuYWJsZURlbGVnYXRpb25GZWV8fGFwaS5CaWdOdW1iZXIoZW5hYmxlRGVsZWdhdGlvbkZlZSkubHRlKDApfHxlbm91Z2hGdW5kcztpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWQsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciAgZmVlcyIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sLCJpbnZhbGlkIHN5bWJvbCIpJiZhcGkuYXNzZXJ0KHVuZGVsZWdhdGlvbkNvb2xkb3duJiZOdW1iZXIuaXNJbnRlZ2VyKHVuZGVsZWdhdGlvbkNvb2xkb3duKSYmdW5kZWxlZ2F0aW9uQ29vbGRvd24+MCYmdW5kZWxlZ2F0aW9uQ29vbGRvd248PTE4MjUwLCJ1bmRlbGVnYXRpb25Db29sZG93biBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxODI1MCIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2FwaS5hc3NlcnQobnVsbCE9PXRva2VuLCJzeW1ib2wgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydCh0b2tlbi5pc3N1ZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHRoZSBpc3N1ZXIiKSYmYXBpLmFzc2VydCghMD09PXRva2VuLnN0YWtpbmdFbmFibGVkLCJzdGFraW5nIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQodm9pZCAwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWR8fCExPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gYWxyZWFkeSBlbmFibGVkIikmJih0b2tlbi5kZWxlZ2F0aW9uRW5hYmxlZD0hMCx0b2tlbi51bmRlbGVnYXRpb25Db29sZG93bj11bmRlbGVnYXRpb25Db29sZG93bixhd2FpdCBhcGkuZGIudXBkYXRlKCJ0b2tlbnMiLHRva2VuKSxhcGkuQmlnTnVtYmVyKGVuYWJsZURlbGVnYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhY3Rpb25zLnRyYW5zZmVyKHt0bzoibnVsbCIsc3ltYm9sOiJFTkciLHF1YW50aXR5OmVuYWJsZURlbGVnYXRpb25GZWUsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX0pKX19LGFjdGlvbnMuZGVsZWdhdGU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86dG8saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChzeW1ib2wmJiJzdHJpbmciPT10eXBlb2Ygc3ltYm9sJiZ0byYmInN0cmluZyI9PXR5cGVvZiB0byYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbFRvPXRvLnRyaW0oKTtpZihhcGkuYXNzZXJ0KGFwaS5pc1ZhbGlkQWNjb3VudE5hbWUoZmluYWxUbyksImludmFsaWQgdG8iKSl7Y29uc3QgdG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT10b2tlbiwic3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoY291bnREZWNpbWFscyhxdWFudGl0eSk8PXRva2VuLnByZWNpc2lvbiwic3ltYm9sIHByZWNpc2lvbiBtaXNtYXRjaCIpJiZhcGkuYXNzZXJ0KCEwPT09dG9rZW4uZGVsZWdhdGlvbkVuYWJsZWQsImRlbGVnYXRpb24gbm90IGVuYWJsZWQiKSYmYXBpLmFzc2VydChmaW5hbFRvIT09YXBpLnNlbmRlciwiY2Fubm90IGRlbGVnYXRlIHRvIHlvdXJzZWxmIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCksIm11c3QgZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3QgYmFsYW5jZUZyb209YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KG51bGwhPT1iYWxhbmNlRnJvbSwiYmFsYW5jZUZyb20gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2VGcm9tLnN0YWtlKS5ndGUocXVhbnRpdHkpLCJvdmVyZHJhd24gc3Rha2UiKSl7dm9pZCAwPT09YmFsYW5jZUZyb20uc3Rha2U/KGJhbGFuY2VGcm9tLnN0YWtlPSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5zdGFrZT0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQ9IjAiLGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09YmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbiYmKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlRnJvbS5wZW5kaW5nVW5kZWxlZ2F0aW9ucz0iMCIsYmFsYW5jZUZyb20uZGVsZWdhdGVkU3Rha2UmJihkZWxldGUgYmFsYW5jZUZyb20uZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGJhbGFuY2VGcm9tLnJlY2VpdmVkU3Rha2UpKTtsZXQgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6ZmluYWxUbyxzeW1ib2w6c3ltYm9sfSk7bnVsbD09PWJhbGFuY2VUbz8oYmFsYW5jZVRvPWJhbGFuY2VUZW1wbGF0ZSxiYWxhbmNlVG8uYWNjb3VudD1maW5hbFRvLGJhbGFuY2VUby5zeW1ib2w9c3ltYm9sLGJhbGFuY2VUbz1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJiYWxhbmNlcyIsYmFsYW5jZVRvKSk6dm9pZCAwPT09YmFsYW5jZVRvLnN0YWtlPyhiYWxhbmNlVG8uc3Rha2U9IjAiLGJhbGFuY2VUby5wZW5kaW5nVW5zdGFrZT0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zSW49IjAiLGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dD0iMCIsYmFsYW5jZVRvLnBlbmRpbmdVbmRlbGVnYXRpb25zPSIwIik6dm9pZCAwPT09YmFsYW5jZVRvLmRlbGVnYXRpb25zSW4mJihiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj0iMCIsYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PSIwIixiYWxhbmNlVG8ucGVuZGluZ1VuZGVsZWdhdGlvbnM9IjAiLGJhbGFuY2VUby5kZWxlZ2F0ZWRTdGFrZSYmKGRlbGV0ZSBiYWxhbmNlVG8uZGVsZWdhdGVkU3Rha2UsZGVsZXRlIGJhbGFuY2VUby5yZWNlaXZlZFN0YWtlKSk7bGV0IGRlbGVnYXRpb249YXdhaXQgYXBpLmRiLmZpbmRPbmUoImRlbGVnYXRpb25zIix7dG86ZmluYWxUbyxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2NvbnN0IHRpbWVzdGFtcD1uZXcgRGF0ZShhcGkuc3RlZW1CbG9ja1RpbWVzdGFtcCsiLjAwMFoiKS5nZXRUaW1lKCk7bnVsbD09ZGVsZWdhdGlvbj8oYmFsYW5jZUZyb20uc3Rha2U9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlRnJvbS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITEpLGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNPdXQscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZVRvKSxkZWxlZ2F0aW9uPXt9LGRlbGVnYXRpb24uZnJvbT1hcGkuc2VuZGVyLGRlbGVnYXRpb24udG89ZmluYWxUbyxkZWxlZ2F0aW9uLnN5bWJvbD1zeW1ib2wsZGVsZWdhdGlvbi5xdWFudGl0eT1xdWFudGl0eSxkZWxlZ2F0aW9uLmNyZWF0ZWQ9dGltZXN0YW1wLGRlbGVnYXRpb24udXBkYXRlZD10aW1lc3RhbXAsYXdhaXQgYXBpLmRiLmluc2VydCgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pLGFwaS5lbWl0KCJkZWxlZ2F0ZSIse3RvOmZpbmFsVG8sc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJFTkciPT09c3ltYm9sJiYoYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6ZmluYWxUb30pKSk6KGJhbGFuY2VGcm9tLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZUZyb20uc3Rha2UscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxiYWxhbmNlRnJvbS5kZWxlZ2F0aW9uc091dD1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VGcm9tKSxiYWxhbmNlVG8uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VUby5kZWxlZ2F0aW9uc0luLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyksZGVsZWdhdGlvbi5xdWFudGl0eT1jYWxjdWxhdGVCYWxhbmNlKGRlbGVnYXRpb24ucXVhbnRpdHkscXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCEwKSxkZWxlZ2F0aW9uLnVwZGF0ZWQ9dGltZXN0YW1wLGF3YWl0IGFwaS5kYi51cGRhdGUoImRlbGVnYXRpb25zIixkZWxlZ2F0aW9uKSxhcGkuZW1pdCgiZGVsZWdhdGUiLHt0bzpmaW5hbFRvLHN5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHl9KSwiRU5HIj09PXN5bWJvbCYmKGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDphcGkuc2VuZGVyfSksYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ3aXRuZXNzZXMiLCJ1cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHMiLHthY2NvdW50OmZpbmFsVG99KSkpfX19fX0sYWN0aW9ucy51bmRlbGVnYXRlPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGZyb206ZnJvbSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIGN1c3RvbV9qc29uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KHN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJmZyb20mJiJzdHJpbmciPT10eXBlb2YgZnJvbSYmcXVhbnRpdHkmJiJzdHJpbmciPT10eXBlb2YgcXVhbnRpdHkmJiFhcGkuQmlnTnVtYmVyKHF1YW50aXR5KS5pc05hTigpLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCBmaW5hbEZyb209ZnJvbS50cmltKCk7aWYoYXBpLmFzc2VydChmaW5hbEZyb20ubGVuZ3RoPj0zJiZmaW5hbEZyb20ubGVuZ3RoPD0xNiwiaW52YWxpZCBmcm9tIikpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09dG9rZW4sInN5bWJvbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KGNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sInN5bWJvbCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydCghMD09PXRva2VuLmRlbGVnYXRpb25FbmFibGVkLCJkZWxlZ2F0aW9uIG5vdCBlbmFibGVkIikmJmFwaS5hc3NlcnQoZmluYWxGcm9tIT09YXBpLnNlbmRlciwiY2Fubm90IHVuZGVsZWdhdGUgZnJvbSB5b3Vyc2VsZiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmd0KDApLCJtdXN0IHVuZGVsZWdhdGUgcG9zaXRpdmUgcXVhbnRpdHkiKSl7Y29uc3QgYmFsYW5jZVRvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6c3ltYm9sfSk7aWYoYXBpLmFzc2VydChudWxsIT09YmFsYW5jZVRvLCJiYWxhbmNlVG8gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2VUby5kZWxlZ2F0aW9uc091dCkuZ3RlKHF1YW50aXR5KSwib3ZlcmRyYXduIGRlbGVnYXRpb24iKSl7Y29uc3QgYmFsYW5jZUZyb209YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDpmaW5hbEZyb20sc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2VGcm9tLCJiYWxhbmNlRnJvbSBkb2VzIG5vdCBleGlzdCIpKXtjb25zdCBkZWxlZ2F0aW9uPWF3YWl0IGFwaS5kYi5maW5kT25lKCJkZWxlZ2F0aW9ucyIse3RvOmZpbmFsRnJvbSxmcm9tOmFwaS5zZW5kZXIsc3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWRlbGVnYXRpb24sImRlbGVnYXRpb24gZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGRlbGVnYXRpb24ucXVhbnRpdHkpLmd0ZShxdWFudGl0eSksIm92ZXJkcmF3biBkZWxlZ2F0aW9uIikpe2JhbGFuY2VUby5wZW5kaW5nVW5kZWxlZ2F0aW9ucz1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLnBlbmRpbmdVbmRlbGVnYXRpb25zLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMCksYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0PWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZVRvLmRlbGVnYXRpb25zT3V0LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYmFsYW5jZXMiLGJhbGFuY2VUbyksYmFsYW5jZUZyb20uZGVsZWdhdGlvbnNJbj1jYWxjdWxhdGVCYWxhbmNlKGJhbGFuY2VGcm9tLmRlbGVnYXRpb25zSW4scXVhbnRpdHksdG9rZW4ucHJlY2lzaW9uLCExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJiYWxhbmNlcyIsYmFsYW5jZUZyb20pLGRlbGVnYXRpb24ucXVhbnRpdHk9Y2FsY3VsYXRlQmFsYW5jZShkZWxlZ2F0aW9uLnF1YW50aXR5LHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLkJpZ051bWJlcihkZWxlZ2F0aW9uLnF1YW50aXR5KS5ndCgwKT9hd2FpdCBhcGkuZGIudXBkYXRlKCJkZWxlZ2F0aW9ucyIsZGVsZWdhdGlvbik6YXdhaXQgYXBpLmRiLnJlbW92ZSgiZGVsZWdhdGlvbnMiLGRlbGVnYXRpb24pO2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuc3RlZW1CbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSxjb29sZG93blBlcmlvZE1pbGxpc2VjPTI0KnRva2VuLnVuZGVsZWdhdGlvbkNvb2xkb3duKjM2MDAqMWUzLGNvbXBsZXRlVGltZXN0YW1wPWJsb2NrRGF0ZS5nZXRUaW1lKCkrY29vbGRvd25QZXJpb2RNaWxsaXNlYyx1bmRlbGVnYXRpb249e2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6dG9rZW4uc3ltYm9sLHF1YW50aXR5OnF1YW50aXR5LGNvbXBsZXRlVGltZXN0YW1wOmNvbXBsZXRlVGltZXN0YW1wLHR4SUQ6YXBpLnRyYW5zYWN0aW9uSWR9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBlbmRpbmdVbmRlbGVnYXRpb25zIix1bmRlbGVnYXRpb24pLGFwaS5lbWl0KCJ1bmRlbGVnYXRlU3RhcnQiLHtmcm9tOmZpbmFsRnJvbSxzeW1ib2w6c3ltYm9sLHF1YW50aXR5OnF1YW50aXR5fSksIkVORyI9PT1zeW1ib2wmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgid2l0bmVzc2VzIiwidXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzIix7YWNjb3VudDpmaW5hbEZyb219KX19fX19fX07Y29uc3QgcHJvY2Vzc1VuZGVsZWdhdGlvbj1hc3luYyB1bmRlbGVnYXRpb249Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX09dW5kZWxlZ2F0aW9uLGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDpzeW1ib2x9KSx0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZSgidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWJhbGFuY2UsImJhbGFuY2UgZG9lcyBub3QgZXhpc3QiKSl7Y29uc3Qgb3JpZ2luYWxTdGFrZT1iYWxhbmNlLnN0YWtlLG9yaWdpbmFsUGVuZGluZ1VuZGVsZWdhdGlvbnM9YmFsYW5jZS5wZW5kaW5nVW5kZWxlZ2F0aW9ucztiYWxhbmNlLnN0YWtlPWNhbGN1bGF0ZUJhbGFuY2UoYmFsYW5jZS5zdGFrZSxxdWFudGl0eSx0b2tlbi5wcmVjaXNpb24sITApLGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnM9Y2FsY3VsYXRlQmFsYW5jZShiYWxhbmNlLnBlbmRpbmdVbmRlbGVnYXRpb25zLHF1YW50aXR5LHRva2VuLnByZWNpc2lvbiwhMSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhbGFuY2UucGVuZGluZ1VuZGVsZWdhdGlvbnMpLmx0KG9yaWdpbmFsUGVuZGluZ1VuZGVsZWdhdGlvbnMpJiZhcGkuQmlnTnVtYmVyKGJhbGFuY2Uuc3Rha2UpLmd0KG9yaWdpbmFsU3Rha2UpLCJjYW5ub3Qgc3VidHJhY3QiKSYmKGF3YWl0IGFwaS5kYi51cGRhdGUoImJhbGFuY2VzIixiYWxhbmNlKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJwZW5kaW5nVW5kZWxlZ2F0aW9ucyIsdW5kZWxlZ2F0aW9uKSxhcGkuZW1pdCgidW5kZWxlZ2F0ZURvbmUiLHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eX0pLCJFTkciPT09c3ltYm9sJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoIndpdG5lc3NlcyIsInVwZGF0ZVdpdG5lc3Nlc0FwcHJvdmFscyIse2FjY291bnQ6YWNjb3VudH0pKX19O2FjdGlvbnMuY2hlY2tQZW5kaW5nVW5kZWxlZ2F0aW9ucz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCB0aW1lc3RhbXA9bmV3IERhdGUoYXBpLnN0ZWVtQmxvY2tUaW1lc3RhbXArIi4wMDBaIikuZ2V0VGltZSgpO2xldCBwZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGg7Zm9yKDtuYlBlbmRpbmdVbmRlbGVnYXRpb25zPjA7KXtmb3IobGV0IGluZGV4PTA7aW5kZXg8bmJQZW5kaW5nVW5kZWxlZ2F0aW9ucztpbmRleCs9MSl7Y29uc3QgcGVuZGluZ1VuZGVsZWdhdGlvbj1wZW5kaW5nVW5kZWxlZ2F0aW9uc1tpbmRleF07YXdhaXQgcHJvY2Vzc1VuZGVsZWdhdGlvbihwZW5kaW5nVW5kZWxlZ2F0aW9uKX1wZW5kaW5nVW5kZWxlZ2F0aW9ucz1hd2FpdCBhcGkuZGIuZmluZCgicGVuZGluZ1VuZGVsZWdhdGlvbnMiLHtjb21wbGV0ZVRpbWVzdGFtcDp7JGx0ZTp0aW1lc3RhbXB9fSksbmJQZW5kaW5nVW5kZWxlZ2F0aW9ucz1wZW5kaW5nVW5kZWxlZ2F0aW9ucy5sZW5ndGh9fX07"}}}

Coin Marketplace

STEEM 0.21
TRX 0.20
JST 0.034
BTC 90827.60
ETH 3116.50
USDT 1.00
SBD 2.97