Market Smart Contract
{"id":"ssc-mainnet1","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"market","params":"","code":"Y29uc3QgU1RFRU1fUEVHR0VEX1NZTUJPTD0iU1RFRU1QIixTVEVFTV9QRUdHRURfU1lNQk9MX1BSRVNJQ0lPTj04LENPTlRSQUNUX05BTUU9Im1hcmtldCIsZ2V0TWV0cmljPWFzeW5jIHN5bWJvbD0+e2xldCBtZXRyaWM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIm1ldHJpY3MiLHtzeW1ib2w6c3ltYm9sfSk7aWYobnVsbD09PW1ldHJpYyl7bWV0cmljPXt9LG1ldHJpYy5zeW1ib2w9c3ltYm9sLG1ldHJpYy52b2x1bWU9IjAiLG1ldHJpYy52b2x1bWVFeHBpcmF0aW9uPTAsbWV0cmljLmxhc3RQcmljZT0iMCIsbWV0cmljLmxvd2VzdEFzaz0iMCIsbWV0cmljLmhpZ2hlc3RCaWQ9IjAiLG1ldHJpYy5sYXN0RGF5UHJpY2U9IjAiLG1ldHJpYy5sYXN0RGF5UHJpY2VFeHBpcmF0aW9uPTAsbWV0cmljLnByaWNlQ2hhbmdlU3RlZW09IjAiLG1ldHJpYy5wcmljZUNoYW5nZVBlcmNlbnQ9IjAiO3JldHVybiBhd2FpdCBhcGkuZGIuaW5zZXJ0KCJtZXRyaWNzIixtZXRyaWMpfXJldHVybiBtZXRyaWN9LHVwZGF0ZVZvbHVtZU1ldHJpYz1hc3luYyhzeW1ib2wscXVhbnRpdHksYWRkPSEwKT0+e2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuc3RlZW1CbG9ja1RpbWVzdGFtcCsiLjAwMFoiKSx0aW1lc3RhbXBTZWM9YmxvY2tEYXRlLmdldFRpbWUoKS8xZTMsbWV0cmljPWF3YWl0IGdldE1ldHJpYyhzeW1ib2wpOyEwPT09YWRkPyhtZXRyaWMudm9sdW1lRXhwaXJhdGlvbjx0aW1lc3RhbXBTZWMmJihtZXRyaWMudm9sdW1lPSIwLjAwMCIpLG1ldHJpYy52b2x1bWU9YXBpLkJpZ051bWJlcihtZXRyaWMudm9sdW1lKS5wbHVzKHF1YW50aXR5KS50b0ZpeGVkKDgpLG1ldHJpYy52b2x1bWVFeHBpcmF0aW9uPWJsb2NrRGF0ZS5zZXREYXRlKGJsb2NrRGF0ZS5nZXREYXRlKCkrMSkvMWUzKTptZXRyaWMudm9sdW1lPWFwaS5CaWdOdW1iZXIobWV0cmljLnZvbHVtZSkubWludXMocXVhbnRpdHkpLnRvRml4ZWQoOCksYXBpLkJpZ051bWJlcihtZXRyaWMudm9sdW1lKS5sdCgwKSYmKG1ldHJpYy52b2x1bWU9IjAuMDAwIiksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWV0cmljcyIsbWV0cmljKX0sdXBkYXRlUHJpY2VNZXRyaWNzPWFzeW5jKHN5bWJvbCxwcmljZSk9Pntjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLnN0ZWVtQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksdGltZXN0YW1wU2VjPWJsb2NrRGF0ZS5nZXRUaW1lKCkvMWUzLG1ldHJpYz1hd2FpdCBnZXRNZXRyaWMoc3ltYm9sKTttZXRyaWMubGFzdFByaWNlPXByaWNlLG1ldHJpYy5sYXN0RGF5UHJpY2VFeHBpcmF0aW9uPHRpbWVzdGFtcFNlYz8obWV0cmljLmxhc3REYXlQcmljZT1wcmljZSxtZXRyaWMubGFzdERheVByaWNlRXhwaXJhdGlvbj1ibG9ja0RhdGUuc2V0RGF0ZShibG9ja0RhdGUuZ2V0RGF0ZSgpKzEpLzFlMyxtZXRyaWMucHJpY2VDaGFuZ2VTdGVlbT0iMCIsbWV0cmljLnByaWNlQ2hhbmdlUGVyY2VudD0iMCUiKToobWV0cmljLnByaWNlQ2hhbmdlU3RlZW09YXBpLkJpZ051bWJlcihwcmljZSkubWludXMobWV0cmljLmxhc3REYXlQcmljZSkudG9GaXhlZCg4KSxtZXRyaWMucHJpY2VDaGFuZ2VQZXJjZW50PWFwaS5CaWdOdW1iZXIobWV0cmljLnByaWNlQ2hhbmdlU3RlZW0pLmRpdmlkZWRCeShtZXRyaWMubGFzdERheVByaWNlKS5tdWx0aXBsaWVkQnkoMTAwKS50b0ZpeGVkKDIpKyIlIiksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWV0cmljcyIsbWV0cmljKX0sdXBkYXRlQmlkTWV0cmljPWFzeW5jIHN5bWJvbD0+e2NvbnN0IG1ldHJpYz1hd2FpdCBnZXRNZXRyaWMoc3ltYm9sKSxidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sfSwxLDAsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9XSk7YnV5T3JkZXJCb29rLmxlbmd0aD4wP21ldHJpYy5oaWdoZXN0QmlkPWJ1eU9yZGVyQm9va1swXS5wcmljZTptZXRyaWMuaGlnaGVzdEJpZD0iMCIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgibWV0cmljcyIsbWV0cmljKX0sdXBkYXRlQXNrTWV0cmljPWFzeW5jIHN5bWJvbD0+e2NvbnN0IG1ldHJpYz1hd2FpdCBnZXRNZXRyaWMoc3ltYm9sKSxzZWxsT3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJzZWxsQm9vayIse3N5bWJvbDpzeW1ib2x9LDEsMCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMX1dKTtzZWxsT3JkZXJCb29rLmxlbmd0aD4wP21ldHJpYy5sb3dlc3RBc2s9c2VsbE9yZGVyQm9va1swXS5wcmljZTptZXRyaWMubG93ZXN0QXNrPSIwIixhd2FpdCBhcGkuZGIudXBkYXRlKCJtZXRyaWNzIixtZXRyaWMpfSx1cGRhdGVUcmFkZXNIaXN0b3J5PWFzeW5jKHR5cGUsYnV5ZXIsc2VsbGVyLHN5bWJvbCxxdWFudGl0eSxwcmljZSx2b2x1bWUsYnV5VHhJZCxzZWxsVHhJZCk9Pntjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLnN0ZWVtQmxvY2tUaW1lc3RhbXArIi4wMDBaIiksdGltZXN0YW1wU2VjPWJsb2NrRGF0ZS5nZXRUaW1lKCkvMWUzLHRpbWVzdGFtcE1pbnVzMjRocnM9YmxvY2tEYXRlLnNldERhdGUoYmxvY2tEYXRlLmdldERhdGUoKS0xKS8xZTM7bGV0IHRyYWRlc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKCJ0cmFkZXNIaXN0b3J5Iix7c3ltYm9sOnN5bWJvbCx0aW1lc3RhbXA6eyRsdDp0aW1lc3RhbXBNaW51czI0aHJzfX0pLG5iVHJhZGVzVG9EZWxldGU9dHJhZGVzVG9EZWxldGUubGVuZ3RoO2Zvcig7bmJUcmFkZXNUb0RlbGV0ZT4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iVHJhZGVzVG9EZWxldGU7aW5kZXgrPTEpe2NvbnN0IHRyYWRlPXRyYWRlc1RvRGVsZXRlW2luZGV4XTthd2FpdCB1cGRhdGVWb2x1bWVNZXRyaWModHJhZGUuc3ltYm9sLHRyYWRlLnZvbHVtZSwhMSksYXdhaXQgYXBpLmRiLnJlbW92ZSgidHJhZGVzSGlzdG9yeSIsdHJhZGUpfXRyYWRlc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKCJ0cmFkZXNIaXN0b3J5Iix7c3ltYm9sOnN5bWJvbCx0aW1lc3RhbXA6eyRsdDp0aW1lc3RhbXBNaW51czI0aHJzfX0pLG5iVHJhZGVzVG9EZWxldGU9dHJhZGVzVG9EZWxldGUubGVuZ3RofWNvbnN0IG5ld1RyYWRlPXt9O25ld1RyYWRlLnR5cGU9dHlwZSxuZXdUcmFkZS5idXllcj1idXllcixuZXdUcmFkZS5zZWxsZXI9c2VsbGVyLG5ld1RyYWRlLnN5bWJvbD1zeW1ib2wsbmV3VHJhZGUucXVhbnRpdHk9cXVhbnRpdHksbmV3VHJhZGUucHJpY2U9cHJpY2UsbmV3VHJhZGUudGltZXN0YW1wPXRpbWVzdGFtcFNlYyxuZXdUcmFkZS52b2x1bWU9dm9sdW1lLG5ld1RyYWRlLmJ1eVR4SWQ9YnV5VHhJZCxuZXdUcmFkZS5zZWxsVHhJZD1zZWxsVHhJZCxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJ0cmFkZXNIaXN0b3J5IixuZXdUcmFkZSksYXdhaXQgdXBkYXRlUHJpY2VNZXRyaWNzKHN5bWJvbCxwcmljZSl9LGNvdW50RGVjaW1hbHM9dmFsdWU9PmFwaS5CaWdOdW1iZXIodmFsdWUpLmRwKCkscmVtb3ZlRXhwaXJlZE9yZGVycz1hc3luYyB0YWJsZT0+e2NvbnN0IHRpbWVzdGFtcFNlYz1hcGkuQmlnTnVtYmVyKG5ldyBEYXRlKGFwaS5zdGVlbUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSkuZGl2aWRlZEJ5KDFlMykudG9OdW1iZXIoKTtsZXQgbmJPcmRlcnNUb0RlbGV0ZT0wLG9yZGVyc1RvRGVsZXRlPWF3YWl0IGFwaS5kYi5maW5kKHRhYmxlLHtleHBpcmF0aW9uOnskbHRlOnRpbWVzdGFtcFNlY319KTtmb3IobmJPcmRlcnNUb0RlbGV0ZT1vcmRlcnNUb0RlbGV0ZS5sZW5ndGg7bmJPcmRlcnNUb0RlbGV0ZT4wOyl7Zm9yKGxldCBpbmRleD0wO2luZGV4PG5iT3JkZXJzVG9EZWxldGU7aW5kZXgrPTEpe2NvbnN0IG9yZGVyPW9yZGVyc1RvRGVsZXRlW2luZGV4XTtsZXQgcXVhbnRpdHksc3ltYm9sOyJidXlCb29rIj09PXRhYmxlPyhzeW1ib2w9IlNURUVNUCIscXVhbnRpdHk9b3JkZXIudG9rZW5zTG9ja2VkKTooc3ltYm9sPW9yZGVyLnN5bWJvbCxxdWFudGl0eT1vcmRlci5xdWFudGl0eSksYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKG9yZGVyLmFjY291bnQsc3ltYm9sLHF1YW50aXR5LCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSh0YWJsZSxvcmRlciksImJ1eUJvb2siPT09dGFibGU/YXdhaXQgdXBkYXRlQXNrTWV0cmljKG9yZGVyLnN5bWJvbCk6YXdhaXQgdXBkYXRlQmlkTWV0cmljKG9yZGVyLnN5bWJvbCl9b3JkZXJzVG9EZWxldGU9YXdhaXQgYXBpLmRiLmZpbmQodGFibGUse2V4cGlyYXRpb246eyRsdGU6dGltZXN0YW1wU2VjfX0pLG5iT3JkZXJzVG9EZWxldGU9b3JkZXJzVG9EZWxldGUubGVuZ3RofX07YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+eyExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJidXlCb29rIikmJihhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImJ1eUJvb2siLFsic3ltYm9sIiwiYWNjb3VudCIsInByaWNlRGVjIiwiZXhwaXJhdGlvbiIsInR4SWQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJzZWxsQm9vayIsWyJzeW1ib2wiLCJhY2NvdW50IiwicHJpY2VEZWMiLCJleHBpcmF0aW9uIiwidHhJZCJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInRyYWRlc0hpc3RvcnkiLFsic3ltYm9sIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibWV0cmljcyIsWyJzeW1ib2wiXSkpfSxhY3Rpb25zLmNhbmNlbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dHlwZTp0eXBlLGlkOmlkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgY3VzdG9tX2pzb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQodHlwZSYmWyJidXkiLCJzZWxsIl0uaW5jbHVkZXModHlwZSkmJmlkLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0YWJsZT0iYnV5Ij09PXR5cGU/ImJ1eUJvb2siOiJzZWxsQm9vayI7bGV0IG9yZGVyPW51bGw7aWYoInN0cmluZyI9PXR5cGVvZiBpZCYmaWQubGVuZ3RoPDUwJiYob3JkZXI9YXdhaXQgYXBpLmRiLmZpbmRPbmUodGFibGUse3R4SWQ6aWR9KSksYXBpLmFzc2VydChudWxsIT09b3JkZXIsIm9yZGVyIGRvZXMgbm90IGV4aXN0IG9yIGludmFsaWQgcGFyYW1zIikmJm9yZGVyLmFjY291bnQ9PT1hcGkuc2VuZGVyKXtsZXQgcXVhbnRpdHksc3ltYm9sOyJidXkiPT09dHlwZT8oc3ltYm9sPSJTVEVFTVAiLHF1YW50aXR5PW9yZGVyLnRva2Vuc0xvY2tlZCk6KHN5bWJvbD1vcmRlci5zeW1ib2wscXVhbnRpdHk9b3JkZXIucXVhbnRpdHkpLGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLHN5bWJvbCxxdWFudGl0eSwidXNlciIpLGF3YWl0IGFwaS5kYi5yZW1vdmUodGFibGUsb3JkZXIpLCJzZWxsIj09PXR5cGU/YXdhaXQgdXBkYXRlQXNrTWV0cmljKG9yZGVyLnN5bWJvbCk6YXdhaXQgdXBkYXRlQmlkTWV0cmljKG9yZGVyLnN5bWJvbCl9fX07Y29uc3QgZmluZE1hdGNoaW5nU2VsbE9yZGVycz1hc3luYyhvcmRlcix0b2tlblByZWNpc2lvbik9Pntjb25zdHthY2NvdW50OmFjY291bnQsc3ltYm9sOnN5bWJvbCxwcmljZURlYzpwcmljZURlY309b3JkZXIsYnV5T3JkZXI9b3JkZXI7bGV0IG9mZnNldD0wLHZvbHVtZVRyYWRlZD0wO2F3YWl0IHJlbW92ZUV4cGlyZWRPcmRlcnMoInNlbGxCb29rIik7bGV0IHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGx0ZTpwcmljZURlY319LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPXNlbGxPcmRlckJvb2subGVuZ3RoO2xldCBpbmM9MDtmb3IoO2luYzxuYk9yZGVycyYmYXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkuZ3QoMCk7KXtjb25zdCBzZWxsT3JkZXI9c2VsbE9yZGVyQm9va1tpbmNdO2lmKGFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLmx0ZShzZWxsT3JkZXIucXVhbnRpdHkpKXtsZXQgcXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCk7aWYoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkmJihxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSwidGhlIG9yZGVyIGNhbm5vdCBiZSBmaWxsZWQiKSl7bGV0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYWNjb3VudCxzeW1ib2wsYnV5T3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKGFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhidXlPcmRlci5xdWFudGl0eSkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsIlNURUVNUCIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhzZWxsT3JkZXIuYWNjb3VudCksYXBpLmRlYnVnKCJTVEVFTVAiKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSk7Y29uc3QgcXR5TGVmdFNlbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubWludXMoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQodG9rZW5QcmVjaXNpb24pLG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShxdHlMZWZ0U2VsbE9yZGVyKS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIocXR5TGVmdFNlbGxPcmRlcikuZ3QoMCkmJmFwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikuZ3RlKCIwLjAwMDAwMDAxIik/KHNlbGxPcmRlci5xdWFudGl0eT1xdHlMZWZ0U2VsbE9yZGVyLGF3YWl0IGFwaS5kYi51cGRhdGUoInNlbGxCb29rIixzZWxsT3JkZXIpKTooYXBpLkJpZ051bWJlcihxdHlMZWZ0U2VsbE9yZGVyKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxxdHlMZWZ0U2VsbE9yZGVyLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlcikpO2NvbnN0IHRva2Vuc1RvVW5sb2NrPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5taW51cyhxdHlUb2tlbnNUb1NlbmQpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcih0b2tlbnNUb1VubG9jaykuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTVEVFTVAiLHRva2Vuc1RvVW5sb2NrLCJ1c2VyIiksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgiYnV5IixhY2NvdW50LHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSxzZWxsT3JkZXIucHJpY2UscXR5VG9rZW5zVG9TZW5kLGJ1eU9yZGVyLnR4SWQsc2VsbE9yZGVyLnR4SWQpLHZvbHVtZVRyYWRlZD1hcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkucGx1cyhxdHlUb2tlbnNUb1NlbmQpLGJ1eU9yZGVyLnF1YW50aXR5PSIwIixhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlcil9fWVsc2V7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4KTtpZihhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoYnV5T3JkZXIudG9rZW5zTG9ja2VkKSYmKHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSwidGhlIG9yZGVyIGNhbm5vdCBiZSBmaWxsZWQiKSl7bGV0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhhY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcoc2VsbE9yZGVyLnF1YW50aXR5KSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhzZWxsT3JkZXIuYWNjb3VudCwiU1RFRU1QIixxdHlUb2tlbnNUb1NlbmQsInVzZXIiKSxyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKHNlbGxPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoIlNURUVNUCIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSxidXlPcmRlci50b2tlbnNMb2NrZWQ9YXBpLkJpZ051bWJlcihidXlPcmRlci50b2tlbnNMb2NrZWQpLm1pbnVzKHF0eVRva2Vuc1RvU2VuZCkudG9GaXhlZCg4KSxidXlPcmRlci5xdWFudGl0eT1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5taW51cyhzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQodG9rZW5QcmVjaXNpb24pO2NvbnN0IG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikubHQoIjAuMDAwMDAwMDEiKSYmKGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTVEVFTVAiLGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCwidXNlciIpLGJ1eU9yZGVyLnF1YW50aXR5PSIwIixhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlcikpLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoImJ1eSIsYWNjb3VudCxzZWxsT3JkZXIuYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LHNlbGxPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCl9fWluYys9MX1vZmZzZXQrPTFlMyxhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSYmKHNlbGxPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoInNlbGxCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGx0ZTpwcmljZURlY319LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pKX13aGlsZShzZWxsT3JkZXJCb29rLmxlbmd0aD4wJiZhcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnF1YW50aXR5KS5ndCgwKSk7YXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS5kYi51cGRhdGUoImJ1eUJvb2siLGJ1eU9yZGVyKSxhcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkuZ3QoMCkmJmF3YWl0IHVwZGF0ZVZvbHVtZU1ldHJpYyhzeW1ib2wsdm9sdW1lVHJhZGVkKSxhd2FpdCB1cGRhdGVBc2tNZXRyaWMoc3ltYm9sKSxhd2FpdCB1cGRhdGVCaWRNZXRyaWMoc3ltYm9sKX0sZmluZE1hdGNoaW5nQnV5T3JkZXJzPWFzeW5jKG9yZGVyLHRva2VuUHJlY2lzaW9uKT0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnByaWNlRGVjfT1vcmRlcixzZWxsT3JkZXI9b3JkZXI7bGV0IG9mZnNldD0wLHZvbHVtZVRyYWRlZD0wO2F3YWl0IHJlbW92ZUV4cGlyZWRPcmRlcnMoImJ1eUJvb2siKTtsZXQgYnV5T3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJidXlCb29rIix7c3ltYm9sOnN5bWJvbCxwcmljZURlYzp7JGd0ZTpwcmljZURlY319LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPWJ1eU9yZGVyQm9vay5sZW5ndGg7bGV0IGluYz0wO2Zvcig7aW5jPG5iT3JkZXJzJiZhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCk7KXtjb25zdCBidXlPcmRlcj1idXlPcmRlckJvb2tbaW5jXTtpZihhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubHRlKGJ1eU9yZGVyLnF1YW50aXR5KSl7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndChidXlPcmRlci50b2tlbnNMb2NrZWQpJiYocXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKGJ1eU9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhzZWxsT3JkZXIucXVhbnRpdHkpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFjY291bnQsIlNURUVNUCIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhhY2NvdW50KSxhcGkuZGVidWcoIlNURUVNUCIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKTtjb25zdCBxdHlMZWZ0QnV5T3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5xdWFudGl0eSkubWludXMoc2VsbE9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuUHJlY2lzaW9uKSxidXlPcmRlcnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpLG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRCdXlPcmRlcikudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKHF0eUxlZnRCdXlPcmRlcikuZ3QoMCkmJmFwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0ZpbGxPcmRlcikuZ3RlKCIwLjAwMDAwMDAxIik/KGJ1eU9yZGVyLnF1YW50aXR5PXF0eUxlZnRCdXlPcmRlcixidXlPcmRlci50b2tlbnNMb2NrZWQ9YnV5T3JkZXJ0b2tlbnNMb2NrZWQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYnV5Qm9vayIsYnV5T3JkZXIpKTooYXBpLkJpZ051bWJlcihidXlPcmRlcnRva2Vuc0xvY2tlZCkuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LCJTVEVFTVAiLGJ1eU9yZGVydG9rZW5zTG9ja2VkLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgiYnV5Qm9vayIsYnV5T3JkZXIpKSxhd2FpdCB1cGRhdGVUcmFkZXNIaXN0b3J5KCJzZWxsIixidXlPcmRlci5hY2NvdW50LGFjY291bnQsc3ltYm9sLHNlbGxPcmRlci5xdWFudGl0eSxidXlPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCksc2VsbE9yZGVyLnF1YW50aXR5PTAsYXdhaXQgYXBpLmRiLnJlbW92ZSgic2VsbEJvb2siLHNlbGxPcmRlcil9fWVsc2V7bGV0IHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCk7aWYocXR5VG9rZW5zVG9TZW5kPmJ1eU9yZGVyLnRva2Vuc0xvY2tlZCYmKHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkoYnV5T3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5VG9rZW5zVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhidXlPcmRlci5hY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSwidXNlciIpO3Jlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK2FwaS50cmFuc2FjdGlvbklkKSxhcGkuZGVidWcoYnV5T3JkZXIuYWNjb3VudCksYXBpLmRlYnVnKHN5bWJvbCksYXBpLmRlYnVnKGJ1eU9yZGVyLnF1YW50aXR5KSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhY2NvdW50LCJTVEVFTVAiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK2FwaS50cmFuc2FjdGlvbklkKSxhcGkuZGVidWcoYWNjb3VudCksYXBpLmRlYnVnKCJTVEVFTVAiKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSk7Y29uc3QgYnV5T3JkZXJ0b2tlbnNMb2NrZWQ9YXBpLkJpZ051bWJlcihidXlPcmRlci50b2tlbnNMb2NrZWQpLm1pbnVzKHF0eVRva2Vuc1RvU2VuZCkudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKGJ1eU9yZGVydG9rZW5zTG9ja2VkKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsIlNURUVNUCIsYnV5T3JkZXJ0b2tlbnNMb2NrZWQsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlciksc2VsbE9yZGVyLnF1YW50aXR5PWFwaS5CaWdOdW1iZXIoc2VsbE9yZGVyLnF1YW50aXR5KS5taW51cyhidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCh0b2tlblByZWNpc2lvbik7Y29uc3QgbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHNlbGxPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4KTthcGkuQmlnTnVtYmVyKG5iVG9rZW5zVG9GaWxsT3JkZXIpLmx0KCIwLjAwMDAwMDAxIikmJihhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LCJ1c2VyIiksc2VsbE9yZGVyLnF1YW50aXR5PSIwIixhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgic2VsbCIsYnV5T3JkZXIuYWNjb3VudCxhY2NvdW50LHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSxidXlPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCl9fWluYys9MX1vZmZzZXQrPTFlMyxhcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJihidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sLHByaWNlRGVjOnskZ3RlOnByaWNlRGVjfX0sMWUzLG9mZnNldCxbe2luZGV4OiJwcmljZURlYyIsZGVzY2VuZGluZzohMH0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSkpfXdoaWxlKGJ1eU9yZGVyQm9vay5sZW5ndGg+MCYmYXBpLkJpZ051bWJlcihzZWxsT3JkZXIucXVhbnRpdHkpLmd0KDApKTthcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkuZ3QoMCkmJmF3YWl0IGFwaS5kYi51cGRhdGUoInNlbGxCb29rIixzZWxsT3JkZXIpLGFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5ndCgwKSYmYXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHN5bWJvbCx2b2x1bWVUcmFkZWQpLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhzeW1ib2wpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhzeW1ib2wpfTthY3Rpb25zLmJ1eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxwcmljZTpwcmljZSxleHBpcmF0aW9uOmV4cGlyYXRpb24saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwcmljZSYmInN0cmluZyI9PXR5cGVvZiBwcmljZSYmIWFwaS5CaWdOdW1iZXIocHJpY2UpLmlzTmFOKCkmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTVEVFTVAiIT09c3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCkmJih2b2lkIDA9PT1leHBpcmF0aW9ufHxleHBpcmF0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGV4cGlyYXRpb24pJiZleHBpcmF0aW9uPjApLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuJiZhcGkuQmlnTnVtYmVyKHByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhwcmljZSk8PTgmJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5iVG9rZW5zVG9Mb2NrPWFwaS5CaWdOdW1iZXIocHJpY2UpLm11bHRpcGxpZWRCeShxdWFudGl0eSkudG9GaXhlZCg4KTtpZihhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobmJUb2tlbnNUb0xvY2spLmd0ZSgiMC4wMDAwMDAwMSIpLCJvcmRlciBjYW5ub3QgYmUgcGxhY2VkIGFzIGl0IGNhbm5vdCBiZSBmaWxsZWQiKSl7Y29uc3QgcmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXJUb0NvbnRyYWN0Iix7c3ltYm9sOiJTVEVFTVAiLHF1YW50aXR5Om5iVG9rZW5zVG9Mb2NrLHRvOiJtYXJrZXQifSk7aWYodm9pZCAwPT09cmVzLmVycm9ycyYmcmVzLmV2ZW50cyYmdm9pZCAwIT09cmVzLmV2ZW50cy5maW5kKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiYidHJhbnNmZXJUb0NvbnRyYWN0Ij09PWVsLmV2ZW50JiZlbC5kYXRhLmZyb209PT1hcGkuc2VuZGVyJiYibWFya2V0Ij09PWVsLmRhdGEudG8mJmVsLmRhdGEucXVhbnRpdHk9PT1uYlRva2Vuc1RvTG9jayYmIlNURUVNUCI9PT1lbC5kYXRhLnN5bWJvbCkpe2NvbnN0IHRpbWVzdGFtcFNlYz1hcGkuQmlnTnVtYmVyKG5ldyBEYXRlKGFwaS5zdGVlbUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSkuZGl2aWRlZEJ5KDFlMykudG9OdW1iZXIoKSxvcmRlcj17fTtvcmRlci50eElkPWFwaS50cmFuc2FjdGlvbklkLG9yZGVyLnRpbWVzdGFtcD10aW1lc3RhbXBTZWMsb3JkZXIuYWNjb3VudD1hcGkuc2VuZGVyLG9yZGVyLnN5bWJvbD1zeW1ib2wsb3JkZXIucXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLG9yZGVyLnByaWNlPWFwaS5CaWdOdW1iZXIocHJpY2UpLnRvRml4ZWQoOCksb3JkZXIucHJpY2VEZWM9eyRudW1iZXJEZWNpbWFsOm9yZGVyLnByaWNlfSxvcmRlci50b2tlbnNMb2NrZWQ9bmJUb2tlbnNUb0xvY2ssb3JkZXIuZXhwaXJhdGlvbj12b2lkIDA9PT1leHBpcmF0aW9ufHxleHBpcmF0aW9uPjI1OTJlMz90aW1lc3RhbXBTZWMrMjU5MmUzOnRpbWVzdGFtcFNlYytleHBpcmF0aW9uO2NvbnN0IG9yZGVySW5EYj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJidXlCb29rIixvcmRlcik7YXdhaXQgZmluZE1hdGNoaW5nU2VsbE9yZGVycyhvcmRlckluRGIsdG9rZW4ucHJlY2lzaW9uKX19fX19LGFjdGlvbnMuc2VsbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7c3ltYm9sOnN5bWJvbCxxdWFudGl0eTpxdWFudGl0eSxwcmljZTpwcmljZSxleHBpcmF0aW9uOmV4cGlyYXRpb24saXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmYXBpLmFzc2VydChwcmljZSYmInN0cmluZyI9PXR5cGVvZiBwcmljZSYmIWFwaS5CaWdOdW1iZXIocHJpY2UpLmlzTmFOKCkmJnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBzeW1ib2wmJiJTVEVFTVAiIT09c3ltYm9sJiZxdWFudGl0eSYmInN0cmluZyI9PXR5cGVvZiBxdWFudGl0eSYmIWFwaS5CaWdOdW1iZXIocXVhbnRpdHkpLmlzTmFOKCkmJih2b2lkIDA9PT1leHBpcmF0aW9ufHxleHBpcmF0aW9uJiZOdW1iZXIuaXNJbnRlZ2VyKGV4cGlyYXRpb24pJiZleHBpcmF0aW9uPjApLCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCB0b2tlbj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzeW1ib2x9KTtpZihhcGkuYXNzZXJ0KHRva2VuJiZhcGkuQmlnTnVtYmVyKHByaWNlKS5ndCgwKSYmY291bnREZWNpbWFscyhwcmljZSk8PTgmJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IG5iVG9rZW5zVG9GaWxsT3JkZXI9YXBpLkJpZ051bWJlcihwcmljZSkubXVsdGlwbGllZEJ5KHF1YW50aXR5KS50b0ZpeGVkKDgpO2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKSwib3JkZXIgY2Fubm90IGJlIHBsYWNlZCBhcyBpdCBjYW5ub3QgYmUgZmlsbGVkIikpe2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86Im1hcmtldCJ9KTtpZih2b2lkIDA9PT1yZXMuZXJyb3JzJiZyZXMuZXZlbnRzJiZ2b2lkIDAhPT1yZXMuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWFwaS5zZW5kZXImJiJtYXJrZXQiPT09ZWwuZGF0YS50byYmZWwuZGF0YS5xdWFudGl0eT09PXF1YW50aXR5JiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpe2NvbnN0IHRpbWVzdGFtcFNlYz1hcGkuQmlnTnVtYmVyKG5ldyBEYXRlKGFwaS5zdGVlbUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLmdldFRpbWUoKSkuZGl2aWRlZEJ5KDFlMykudG9OdW1iZXIoKSxvcmRlcj17fTtvcmRlci50eElkPWFwaS50cmFuc2FjdGlvbklkLG9yZGVyLnRpbWVzdGFtcD10aW1lc3RhbXBTZWMsb3JkZXIuYWNjb3VudD1hcGkuc2VuZGVyLG9yZGVyLnN5bWJvbD1zeW1ib2wsb3JkZXIucXVhbnRpdHk9YXBpLkJpZ051bWJlcihxdWFudGl0eSkudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLG9yZGVyLnByaWNlPWFwaS5CaWdOdW1iZXIocHJpY2UpLnRvRml4ZWQoOCksb3JkZXIucHJpY2VEZWM9eyRudW1iZXJEZWNpbWFsOm9yZGVyLnByaWNlfSxvcmRlci5leHBpcmF0aW9uPXZvaWQgMD09PWV4cGlyYXRpb258fGV4cGlyYXRpb24+MjU5MmUzP3RpbWVzdGFtcFNlYysyNTkyZTM6dGltZXN0YW1wU2VjK2V4cGlyYXRpb247Y29uc3Qgb3JkZXJJbkRiPWF3YWl0IGFwaS5kYi5pbnNlcnQoInNlbGxCb29rIixvcmRlcik7YXdhaXQgZmluZE1hdGNoaW5nQnV5T3JkZXJzKG9yZGVySW5EYix0b2tlbi5wcmVjaXNpb24pfX19fX0sYWN0aW9ucy5tYXJrZXRCdXk9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNURUVNUCIhPT1zeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCkpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD04LCJpbnZhbGlkIHBhcmFtcyIpKXtjb25zdCByZXN1bHQ9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtzeW1ib2w6IlNURUVNUCIscXVhbnRpdHk6cXVhbnRpdHksdG86Im1hcmtldCJ9KTtpZih2b2lkIDA9PT1yZXN1bHQuZXJyb3JzJiZyZXN1bHQuZXZlbnRzJiZ2b2lkIDAhPT1yZXN1bHQuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWFwaS5zZW5kZXImJiJtYXJrZXQiPT09ZWwuZGF0YS50byYmZWwuZGF0YS5xdWFudGl0eT09PXF1YW50aXR5JiYiU1RFRU1QIj09PWVsLmRhdGEuc3ltYm9sKSl7bGV0IHN0ZWVtcFJlbWFpbmluZz1xdWFudGl0eSxvZmZzZXQ9MCx2b2x1bWVUcmFkZWQ9MDthd2FpdCByZW1vdmVFeHBpcmVkT3JkZXJzKCJzZWxsQm9vayIpO2xldCBzZWxsT3JkZXJCb29rPWF3YWl0IGFwaS5kYi5maW5kKCJzZWxsQm9vayIse3N5bWJvbDpzeW1ib2x9LDFlMyxvZmZzZXQsW3tpbmRleDoicHJpY2VEZWMiLGRlc2NlbmRpbmc6ITF9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2Rve2NvbnN0IG5iT3JkZXJzPXNlbGxPcmRlckJvb2subGVuZ3RoO2xldCBpbmM9MDtmb3IoO2luYzxuYk9yZGVycyYmYXBpLkJpZ051bWJlcihzdGVlbXBSZW1haW5pbmcpLmd0KDApOyl7Y29uc3Qgc2VsbE9yZGVyPXNlbGxPcmRlckJvb2tbaW5jXSxxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihzdGVlbXBSZW1haW5pbmcpLmRpdmlkZWRCeShzZWxsT3JkZXIucHJpY2UpLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTik7aWYoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmx0ZShzZWxsT3JkZXIucXVhbnRpdHkpJiZhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkpe2lmKGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKHN0ZWVtcFJlbWFpbmluZykuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFwaS5zZW5kZXIsc3ltYm9sLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpO3Jlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK2FwaS50cmFuc2FjdGlvbklkKSxhcGkuZGVidWcoYXBpLnNlbmRlciksYXBpLmRlYnVnKHN5bWJvbCksYXBpLmRlYnVnKHF0eVRva2Vuc1RvU2VuZCkpLHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsIlNURUVNUCIsc3RlZW1wUmVtYWluaW5nLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhzZWxsT3JkZXIuYWNjb3VudCksYXBpLmRlYnVnKCJTVEVFTVAiKSxhcGkuZGVidWcoc3RlZW1wUmVtYWluaW5nKSk7Y29uc3QgcXR5TGVmdFNlbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5xdWFudGl0eSkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKHNlbGxPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHF0eUxlZnRTZWxsT3JkZXIpLnRvRml4ZWQoOCk7YXBpLkJpZ051bWJlcihxdHlMZWZ0U2VsbE9yZGVyKS5ndCgwKSYmYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKT8oc2VsbE9yZGVyLnF1YW50aXR5PXF0eUxlZnRTZWxsT3JkZXIsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2VsbEJvb2siLHNlbGxPcmRlcikpOihhcGkuQmlnTnVtYmVyKHF0eUxlZnRTZWxsT3JkZXIpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2VsbE9yZGVyLmFjY291bnQsc3ltYm9sLHF0eUxlZnRTZWxsT3JkZXIsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzZWxsQm9vayIsc2VsbE9yZGVyKSksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgiYnV5IixhcGkuc2VuZGVyLHNlbGxPcmRlci5hY2NvdW50LHN5bWJvbCxxdHlUb2tlbnNUb1NlbmQsc2VsbE9yZGVyLnByaWNlLHN0ZWVtcFJlbWFpbmluZyxhcGkudHJhbnNhY3Rpb25JZCxzZWxsT3JkZXIudHhJZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHN0ZWVtcFJlbWFpbmluZyksc3RlZW1wUmVtYWluaW5nPSIwIn19ZWxzZSBpZihhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkpe2xldCBxdHlTdGVlbXBUb1NlbmQ9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCk7aWYoYXBpLkJpZ051bWJlcihxdHlTdGVlbXBUb1NlbmQpLmd0KHN0ZWVtcFJlbWFpbmluZykmJihxdHlTdGVlbXBUb1NlbmQ9YXBpLkJpZ051bWJlcihzZWxsT3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShzZWxsT3JkZXIucXVhbnRpdHkpLnRvRml4ZWQoOCxhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocXR5U3RlZW1wVG9TZW5kKS5ndCgwKSYmYXBpLkJpZ051bWJlcihzdGVlbXBSZW1haW5pbmcpLmd0KDApLCJ0aGUgb3JkZXIgY2Fubm90IGJlIGZpbGxlZCIpKXtsZXQgcmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLHN5bWJvbCxzZWxsT3JkZXIucXVhbnRpdHksInVzZXIiKTtyZXMuZXJyb3JzJiYoYXBpLmRlYnVnKHJlcy5lcnJvcnMpLGFwaS5kZWJ1ZygiVFhJRDogIithcGkudHJhbnNhY3Rpb25JZCksYXBpLmRlYnVnKGFwaS5zZW5kZXIpLGFwaS5kZWJ1ZyhzeW1ib2wpLGFwaS5kZWJ1ZyhzZWxsT3JkZXIucXVhbnRpdHkpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKHNlbGxPcmRlci5hY2NvdW50LCJTVEVFTVAiLHF0eVN0ZWVtcFRvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK2FwaS50cmFuc2FjdGlvbklkKSxhcGkuZGVidWcoc2VsbE9yZGVyLmFjY291bnQpLGFwaS5kZWJ1ZygiU1RFRU1QIiksYXBpLmRlYnVnKHF0eVN0ZWVtcFRvU2VuZCkpLGF3YWl0IGFwaS5kYi5yZW1vdmUoInNlbGxCb29rIixzZWxsT3JkZXIpLHN0ZWVtcFJlbWFpbmluZz1hcGkuQmlnTnVtYmVyKHN0ZWVtcFJlbWFpbmluZykubWludXMocXR5U3RlZW1wVG9TZW5kKS50b0ZpeGVkKDgpLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoImJ1eSIsYXBpLnNlbmRlcixzZWxsT3JkZXIuYWNjb3VudCxzeW1ib2wsc2VsbE9yZGVyLnF1YW50aXR5LHNlbGxPcmRlci5wcmljZSxxdHlTdGVlbXBUb1NlbmQsYXBpLnRyYW5zYWN0aW9uSWQsc2VsbE9yZGVyLnR4SWQpLHZvbHVtZVRyYWRlZD1hcGkuQmlnTnVtYmVyKHZvbHVtZVRyYWRlZCkucGx1cyhxdHlTdGVlbXBUb1NlbmQpfX1pbmMrPTF9b2Zmc2V0Kz0xZTMsYXBpLkJpZ051bWJlcihzdGVlbXBSZW1haW5pbmcpLmd0KDApJiYoc2VsbE9yZGVyQm9vaz1hd2FpdCBhcGkuZGIuZmluZCgic2VsbEJvb2siLHtzeW1ib2w6c3ltYm9sfSwxZTMsb2Zmc2V0LFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSl9d2hpbGUoc2VsbE9yZGVyQm9vay5sZW5ndGg+MCYmYXBpLkJpZ051bWJlcihzdGVlbXBSZW1haW5pbmcpLmd0KDApKTthcGkuQmlnTnVtYmVyKHN0ZWVtcFJlbWFpbmluZykuZ3QoMCkmJmF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLCJTVEVFTVAiLHN0ZWVtcFJlbWFpbmluZywidXNlciIpLGFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5ndCgwKSYmYXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHN5bWJvbCx2b2x1bWVUcmFkZWQpLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhzeW1ib2wpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhzeW1ib2wpfX19fSxhY3Rpb25zLm1hcmtldFNlbGw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSBjdXN0b21fanNvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSYmc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHN5bWJvbCYmIlNURUVNUCIhPT1zeW1ib2wmJnF1YW50aXR5JiYic3RyaW5nIj09dHlwZW9mIHF1YW50aXR5JiYhYXBpLkJpZ051bWJlcihxdWFudGl0eSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihxdWFudGl0eSkuZ3QoMCkpe2NvbnN0IHRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbH0pO2lmKGFwaS5hc3NlcnQodG9rZW4mJmNvdW50RGVjaW1hbHMocXVhbnRpdHkpPD10b2tlbi5wcmVjaXNpb24sImludmFsaWQgcGFyYW1zIikpe2NvbnN0IHJlc3VsdD1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse3N5bWJvbDpzeW1ib2wscXVhbnRpdHk6cXVhbnRpdHksdG86Im1hcmtldCJ9KTtpZih2b2lkIDA9PT1yZXN1bHQuZXJyb3JzJiZyZXN1bHQuZXZlbnRzJiZ2b2lkIDAhPT1yZXN1bHQuZXZlbnRzLmZpbmQoZWw9PiJ0b2tlbnMiPT09ZWwuY29udHJhY3QmJiJ0cmFuc2ZlclRvQ29udHJhY3QiPT09ZWwuZXZlbnQmJmVsLmRhdGEuZnJvbT09PWFwaS5zZW5kZXImJiJtYXJrZXQiPT09ZWwuZGF0YS50byYmZWwuZGF0YS5xdWFudGl0eT09PXF1YW50aXR5JiZlbC5kYXRhLnN5bWJvbD09PXN5bWJvbCkpe2xldCB0b2tlbnNSZW1haW5pbmc9cXVhbnRpdHksb2Zmc2V0PTAsdm9sdW1lVHJhZGVkPTA7YXdhaXQgcmVtb3ZlRXhwaXJlZE9yZGVycygiYnV5Qm9vayIpO2xldCBidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sfSwxZTMsb2Zmc2V0LFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtkb3tjb25zdCBuYk9yZGVycz1idXlPcmRlckJvb2subGVuZ3RoO2xldCBpbmM9MDtmb3IoO2luYzxuYk9yZGVycyYmYXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmd0KDApOyl7Y29uc3QgYnV5T3JkZXI9YnV5T3JkZXJCb29rW2luY107aWYoYXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLmx0ZShidXlPcmRlci5xdWFudGl0eSkpe2xldCBxdHlUb2tlbnNUb1NlbmQ9YXBpLkJpZ051bWJlcihidXlPcmRlci5wcmljZSkubXVsdGlwbGllZEJ5KHRva2Vuc1JlbWFpbmluZykudG9GaXhlZCg4KTtpZihhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoYnV5T3JkZXIudG9rZW5zTG9ja2VkKSYmKHF0eVRva2Vuc1RvU2VuZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkodG9rZW5zUmVtYWluaW5nKS50b0ZpeGVkKDgsYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF0eVRva2Vuc1RvU2VuZCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIodG9rZW5zUmVtYWluaW5nKS5ndCgwKSwidGhlIG9yZGVyIGNhbm5vdCBiZSBmaWxsZWQiKSl7bGV0IHJlcz1hd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYnV5T3JkZXIuYWNjb3VudCxzeW1ib2wsdG9rZW5zUmVtYWluaW5nLCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhidXlPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcodG9rZW5zUmVtYWluaW5nKSkscmVzPWF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLCJTVEVFTVAiLHF0eVRva2Vuc1RvU2VuZCwidXNlciIpLHJlcy5lcnJvcnMmJihhcGkuZGVidWcocmVzLmVycm9ycyksYXBpLmRlYnVnKCJUWElEOiAiK2FwaS50cmFuc2FjdGlvbklkKSxhcGkuZGVidWcoYXBpLnNlbmRlciksYXBpLmRlYnVnKCJTVEVFTVAiKSxhcGkuZGVidWcocXR5VG9rZW5zVG9TZW5kKSk7Y29uc3QgcXR5TGVmdEJ1eU9yZGVyPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucXVhbnRpdHkpLm1pbnVzKHRva2Vuc1JlbWFpbmluZykudG9GaXhlZCh0b2tlbi5wcmVjaXNpb24pLGJ1eU9yZGVydG9rZW5zTG9ja2VkPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIudG9rZW5zTG9ja2VkKS5taW51cyhxdHlUb2tlbnNUb1NlbmQpLnRvRml4ZWQoOCksbmJUb2tlbnNUb0ZpbGxPcmRlcj1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnByaWNlKS5tdWx0aXBsaWVkQnkocXR5TGVmdEJ1eU9yZGVyKS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIocXR5TGVmdEJ1eU9yZGVyKS5ndCgwKSYmYXBpLkJpZ051bWJlcihuYlRva2Vuc1RvRmlsbE9yZGVyKS5ndGUoIjAuMDAwMDAwMDEiKT8oYnV5T3JkZXIucXVhbnRpdHk9cXR5TGVmdEJ1eU9yZGVyLGJ1eU9yZGVyLnRva2Vuc0xvY2tlZD1idXlPcmRlcnRva2Vuc0xvY2tlZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJidXlCb29rIixidXlPcmRlcikpOihhcGkuQmlnTnVtYmVyKGJ1eU9yZGVydG9rZW5zTG9ja2VkKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsIlNURUVNUCIsYnV5T3JkZXJ0b2tlbnNMb2NrZWQsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJidXlCb29rIixidXlPcmRlcikpLGF3YWl0IHVwZGF0ZVRyYWRlc0hpc3RvcnkoInNlbGwiLGJ1eU9yZGVyLmFjY291bnQsYXBpLnNlbmRlcixzeW1ib2wsdG9rZW5zUmVtYWluaW5nLGJ1eU9yZGVyLnByaWNlLHF0eVRva2Vuc1RvU2VuZCxidXlPcmRlci50eElkLGFwaS50cmFuc2FjdGlvbklkKSx2b2x1bWVUcmFkZWQ9YXBpLkJpZ051bWJlcih2b2x1bWVUcmFkZWQpLnBsdXMocXR5VG9rZW5zVG9TZW5kKSx0b2tlbnNSZW1haW5pbmc9MH19ZWxzZXtsZXQgcXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4KTtpZihxdHlUb2tlbnNUb1NlbmQ+YnV5T3JkZXIudG9rZW5zTG9ja2VkJiYocXR5VG9rZW5zVG9TZW5kPWFwaS5CaWdOdW1iZXIoYnV5T3JkZXIucHJpY2UpLm11bHRpcGxpZWRCeShidXlPcmRlci5xdWFudGl0eSkudG9GaXhlZCg4LGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTikpLGFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihxdHlUb2tlbnNUb1NlbmQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCksInRoZSBvcmRlciBjYW5ub3QgYmUgZmlsbGVkIikpe2xldCByZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGJ1eU9yZGVyLmFjY291bnQsc3ltYm9sLGJ1eU9yZGVyLnF1YW50aXR5LCJ1c2VyIik7cmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhidXlPcmRlci5hY2NvdW50KSxhcGkuZGVidWcoc3ltYm9sKSxhcGkuZGVidWcoYnV5T3JkZXIucXVhbnRpdHkpKSxyZXM9YXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFwaS5zZW5kZXIsIlNURUVNUCIscXR5VG9rZW5zVG9TZW5kLCJ1c2VyIikscmVzLmVycm9ycyYmKGFwaS5kZWJ1ZyhyZXMuZXJyb3JzKSxhcGkuZGVidWcoIlRYSUQ6ICIrYXBpLnRyYW5zYWN0aW9uSWQpLGFwaS5kZWJ1ZyhhcGkuc2VuZGVyKSxhcGkuZGVidWcoIlNURUVNUCIpLGFwaS5kZWJ1ZyhxdHlUb2tlbnNUb1NlbmQpKTtjb25zdCBidXlPcmRlcnRva2Vuc0xvY2tlZD1hcGkuQmlnTnVtYmVyKGJ1eU9yZGVyLnRva2Vuc0xvY2tlZCkubWludXMocXR5VG9rZW5zVG9TZW5kKS50b0ZpeGVkKDgpO2FwaS5CaWdOdW1iZXIoYnV5T3JkZXJ0b2tlbnNMb2NrZWQpLmd0KDApJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYnV5T3JkZXIuYWNjb3VudCwiU1RFRU1QIixidXlPcmRlcnRva2Vuc0xvY2tlZCwidXNlciIpLGF3YWl0IGFwaS5kYi5yZW1vdmUoImJ1eUJvb2siLGJ1eU9yZGVyKSx0b2tlbnNSZW1haW5pbmc9YXBpLkJpZ051bWJlcih0b2tlbnNSZW1haW5pbmcpLm1pbnVzKGJ1eU9yZGVyLnF1YW50aXR5KS50b0ZpeGVkKHRva2VuLnByZWNpc2lvbiksYXdhaXQgdXBkYXRlVHJhZGVzSGlzdG9yeSgic2VsbCIsYnV5T3JkZXIuYWNjb3VudCxhcGkuc2VuZGVyLHN5bWJvbCxidXlPcmRlci5xdWFudGl0eSxidXlPcmRlci5wcmljZSxxdHlUb2tlbnNUb1NlbmQsYnV5T3JkZXIudHhJZCxhcGkudHJhbnNhY3Rpb25JZCksdm9sdW1lVHJhZGVkPWFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5wbHVzKHF0eVRva2Vuc1RvU2VuZCl9fWluYys9MX1vZmZzZXQrPTFlMyxhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCkmJihidXlPcmRlckJvb2s9YXdhaXQgYXBpLmRiLmZpbmQoImJ1eUJvb2siLHtzeW1ib2w6c3ltYm9sfSwxZTMsb2Zmc2V0LFt7aW5kZXg6InByaWNlRGVjIixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKSl9d2hpbGUoYnV5T3JkZXJCb29rLmxlbmd0aD4wJiZhcGkuQmlnTnVtYmVyKHRva2Vuc1JlbWFpbmluZykuZ3QoMCkpO2FwaS5CaWdOdW1iZXIodG9rZW5zUmVtYWluaW5nKS5ndCgwKSYmYXdhaXQgYXBpLnRyYW5zZmVyVG9rZW5zKGFwaS5zZW5kZXIsc3ltYm9sLHRva2Vuc1JlbWFpbmluZywidXNlciIpLGFwaS5CaWdOdW1iZXIodm9sdW1lVHJhZGVkKS5ndCgwKSYmYXdhaXQgdXBkYXRlVm9sdW1lTWV0cmljKHN5bWJvbCx2b2x1bWVUcmFkZWQpLGF3YWl0IHVwZGF0ZUFza01ldHJpYyhzeW1ib2wpLGF3YWl0IHVwZGF0ZUJpZE1ldHJpYyhzeW1ib2wpfX19fTs="}}}