{"id":"ssc-testnet-reaz","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokenfunds","params":"","code":"Y29uc3QgRmVlTWV0aG9kPVsiYnVybiIsImlzc3VlciJdLFBheW91dFR5cGU9WyJ1c2VyIiwiY29udHJhY3QiXTtmdW5jdGlvbiB2YWxpZGF0ZVRva2VucyhlLGEpe3JldHVybiEhYXBpLmFzc2VydChlJiYoZS5pc3N1ZXI9PT1hcGkuc2VuZGVyfHwiQkVFIj09PWUuc3ltYm9sJiZhcGkuc2VuZGVyPT09YXBpLm93bmVyKSwibXVzdCBiZSBpc3N1ZXIgb2YgcGF5VG9rZW4iKSYmISFhcGkuYXNzZXJ0KGEmJmEuc3Rha2luZ0VuYWJsZWQsInZvdGVUb2tlbiBtdXN0IGhhdmUgc3Rha2luZyBlbmFibGVkIil9ZnVuY3Rpb24gdmFsaWRhdGVEYXRlVGltZShhKXtpZigyNCE9PWEubGVuZ3RoKXJldHVybiExO2ZvcihsZXQgZT0wO2U8YS5sZW5ndGgmJjE9PT1bNSw4LDExLDE0LDE3LDIxXS5pbmRleE9mKGUpO2UrPTEpe3ZhciBpPWEuY2hhckNvZGVBdChlKTtpZighKDQ3PGkmJmk8NTgpKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHZhbGlkYXRlRGF0ZVJhbmdlKGUsYSxpKXtpZighYXBpLmFzc2VydCh2YWxpZGF0ZURhdGVUaW1lKGUpJiZ2YWxpZGF0ZURhdGVUaW1lKGEpLCJpbnZhbGlkIGRhdGV0aW1lIGZvcm1hdDogWVlZWS1NTS1ERFRoaDptbTpzcy5zc3NaIikpcmV0dXJuITE7Y29uc3QgdD1uZXcgRGF0ZShgJHthcGkuaGl2ZUJsb2NrVGltZXN0YW1wfS4wMDBaYCksbj1uZXcgRGF0ZShlKSxzPW5ldyBEYXRlKGEpO2lmKCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobi5nZXRUaW1lKCkpLmx0KGFwaS5CaWdOdW1iZXIocy5nZXRUaW1lKCkpLm1pbnVzKDg2NGU1KSksImRhdGVzIG11c3QgYmUgYXQgbGVhc3QgMSBkYXkgYXBhcnQiKXx8IWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuLmdldFRpbWUoKSkuZ3QoYXBpLkJpZ051bWJlcih0LmdldFRpbWUoKSkucGx1cyg4NjRlNSkpLCJzdGFydERhdGUgbXVzdCBiZSBhdCBsZWFzdCAxIGRheSBpbiB0aGUgZnV0dXJlIikpcmV0dXJuITE7Y29uc3Qgcj1hcGkuQmlnTnVtYmVyKG4uZ2V0VGltZSgpKS5taW51cyhzLmdldFRpbWUoKSkuYWJzKCk7YT1yLmRpdmlkZWRCeSg4NjRlNSkudG9GaXhlZCgwLGFwaS5CaWdOdW1iZXIuUk9VTkRfQ0VJTCk7cmV0dXJuISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYSkubHRlKGkpLCJkYXRlIHJhbmdlIGV4Y2VlZHMgRFRGIG1heERheXMiKX1mdW5jdGlvbiB2YWxpZGF0ZURhdGVDaGFuZ2UoZSxhLGkpe2lmKCFhcGkuYXNzZXJ0KHZhbGlkYXRlRGF0ZVRpbWUoYSksImludmFsaWQgZGF0ZXRpbWUgZm9ybWF0OiBZWVlZLU1NLUREVGhoOm1tOnNzLnNzc1oiKSlyZXR1cm4hMTtjb25zdCB0PW5ldyBEYXRlKGUuc3RhcnREYXRlKTtlPW5ldyBEYXRlKGUuZW5kRGF0ZSk7Y29uc3Qgbj1uZXcgRGF0ZShhKTtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHQuZ2V0VGltZSgpKS5sdChhcGkuQmlnTnVtYmVyKG4uZ2V0VGltZSgpKS5taW51cyg4NjRlNSkpLCJkYXRlcyBtdXN0IGJlIGF0IGxlYXN0IDEgZGF5IGFwYXJ0IikpcmV0dXJuITE7aWYoIWFwaS5hc3NlcnQobjw9ZSwiZGF0ZSBjYW4gb25seSBiZSByZWR1Y2VkIikpcmV0dXJuITE7Y29uc3Qgcz1hcGkuQmlnTnVtYmVyKHQuZ2V0VGltZSgpKS5taW51cyhuLmdldFRpbWUoKSkuYWJzKCk7ZT1zLmRpdmlkZWRCeSg4NjRlNSkudG9GaXhlZCgwLGFwaS5CaWdOdW1iZXIuUk9VTkRfQ0VJTCk7cmV0dXJuISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoZSkubHRlKGkpLCJkYXRlIHJhbmdlIGV4Y2VlZHMgRFRGIG1heERheXMiKX1mdW5jdGlvbiB2YWxpZGF0ZVBlbmRpbmcoZSl7dmFyIGE9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO3JldHVybiBuZXcgRGF0ZShlLmVuZERhdGUpPj1hfWFjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygiZnVuZHMiKSl7YXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJmdW5kcyIsWyJpZCIsImxhc3RUaWNrVGltZSJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInByb3Bvc2FscyIsWyJmdW5kSWQiLHtuYW1lOiJieUFwcHJvdmFsV2VpZ2h0IixpbmRleDp7ZnVuZElkOjEsYXBwcm92YWxXZWlnaHQ6MX19XSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJhcHByb3ZhbHMiLFsiZnJvbSIsInRvIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYWNjb3VudHMiLFtdLHtwcmltYXJ5S2V5OlsiYWNjb3VudCJdfSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBlPXtkdGZDcmVhdGlvbkZlZToiMTAwMCIsZHRmVXBkYXRlRmVlOiIzMDAiLGR0ZlRpY2tIb3VyczoiMjQiLG1heER0ZnNQZXJCbG9jazo0MCxtYXhBY2NvdW50QXBwcm92YWxzOjUwLHByb2Nlc3NRdWVyeUxpbWl0OjFlM307YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixlKX1lbHNle2NvbnN0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKCFhLnVwZGF0ZUluZGV4KXtjb25zdCBvPWF3YWl0IGFwaS5kYi5maW5kKCJmdW5kcyIse30pLHA9bmV3IFNldDtmb3IobGV0IGU9MDtlPG8ubGVuZ3RoO2UrPTEpcC5hZGQob1tlXS52b3RlVG9rZW4pO2NvbnN0IGQ9YXdhaXQgYXBpLmRiLmZpbmQoImFjY291bnRzIix7fSk7Zm9yKGxldCBlPTA7ZTxkLmxlbmd0aDtlKz0xKXtjb25zdCB1PWRbZV07dS53ZWlnaHRzPXUud2VpZ2h0cy5maWx0ZXIoZT0+cC5oYXMoZS5zeW1ib2wpKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsdSl9dmFyIGk9YXdhaXQgYXBpLmRiLmZpbmQoInByb3Bvc2FscyIse30pO2ZvcihsZXQgZT0wO2U8aS5sZW5ndGg7ZSs9MSl7Y29uc3QgbD1pW2VdO3ZhciB0PW8uZmluZChlPT5lLmlkPT09bC5mdW5kSWQpLG49YXdhaXQgYXBpLmRiLmZpbmQoImFwcHJvdmFscyIse3RvOmwuX2lkfSk7bGV0IGE9YXBpLkJpZ051bWJlcigiMCIpO2ZvcihsZXQgZT0wO2U8bi5sZW5ndGg7ZSs9MSl7dmFyIHM9bltlXTtjb25zdCBtPWQuZmluZChlPT5lLmFjY291bnQ9PT1zLmZyb20pO3ZhciByPW0ud2VpZ2h0cy5maW5kKGU9PmUuc3ltYm9sPT09dC52b3RlVG9rZW4pO2E9YS5wbHVzKHIud2VpZ2h0KX1sLmFwcHJvdmFsV2VpZ2h0PXskbnVtYmVyRGVjaW1hbDphfSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwcm9wb3NhbHMiLGwpfWEudXBkYXRlSW5kZXg9MSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGEpfX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIGU9Pnt2YXJ7ZHRmQ3JlYXRpb25GZWU6YSxkdGZVcGRhdGVGZWU6aSxkdGZUaWNrSG91cnM6dCxtYXhEdGZzUGVyQmxvY2s6bixtYXhBY2NvdW50QXBwcm92YWxzOnMscHJvY2Vzc1F1ZXJ5TGltaXQ6ZX09ZTtpZihhcGkuc2VuZGVyPT09YXBpLm93bmVyKXtjb25zdCByPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihhKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGEmJiFhcGkuQmlnTnVtYmVyKGEpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoYSkuZ3RlKDApLCJpbnZhbGlkIGR0ZkNyZWF0aW9uRmVlIikpcmV0dXJuO3IuZHRmQ3JlYXRpb25GZWU9YX1pZihpKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGkmJiFhcGkuQmlnTnVtYmVyKGkpLmlzTmFOKCkmJmFwaS5CaWdOdW1iZXIoaSkuZ3RlKDApLCJpbnZhbGlkIGR0ZlVwZGF0ZUZlZSIpKXJldHVybjtyLmR0ZlVwZGF0ZUZlZT1pfWlmKHQpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgdCYmYXBpLkJpZ051bWJlcih0KS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcih0KS5ndGUoMSksImludmFsaWQgZHRmVGlja0hvdXJzIikpcmV0dXJuO3IuZHRmVGlja0hvdXJzPXR9aWYobil7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBuJiZhcGkuQmlnTnVtYmVyKG4pLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG4pLmd0ZSgxKSwiaW52YWxpZCBtYXhEdGZzUGVyQmxvY2siKSlyZXR1cm47ci5tYXhEdGZzUGVyQmxvY2s9YXBpLkJpZ051bWJlcihuKS50b051bWJlcigpfWlmKHMpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgcyYmYXBpLkJpZ051bWJlcihzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihzKS5ndGUoMSksImludmFsaWQgbWF4RHRmc1BlckJsb2NrIikpcmV0dXJuO3IubWF4QWNjb3VudEFwcHJvdmFscz1hcGkuQmlnTnVtYmVyKHMpLnRvTnVtYmVyKCl9aWYoZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBlJiZhcGkuQmlnTnVtYmVyKGUpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKGUpLmd0ZSgxKSwiaW52YWxpZCBwcm9jZXNzUXVlcnlMaW1pdCIpKXJldHVybjtyLnByb2Nlc3NRdWVyeUxpbWl0PWFwaS5CaWdOdW1iZXIoZSkudG9OdW1iZXIoKX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHIpfX07YXN5bmMgZnVuY3Rpb24gdXBkYXRlUHJvcG9zYWxXZWlnaHQoZSxhLGk9bnVsbCl7Y29uc3QgdD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicHJvcG9zYWxzIix7X2lkOmV9KTtpZih0JiZ2YWxpZGF0ZVBlbmRpbmcodCkpe2lmKGkpaWYoKGF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOnQuZnVuZElkfSkpLnZvdGVUb2tlbiE9PWkuc3ltYm9sKXJldHVybiEwO3JldHVybiB0LmFwcHJvdmFsV2VpZ2h0PXskbnVtYmVyRGVjaW1hbDphcGkuQmlnTnVtYmVyKHQuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnBsdXMoYSl9LGF3YWl0IGFwaS5kYi51cGRhdGUoInByb3Bvc2FscyIsdCksITB9cmV0dXJuITF9YWN0aW9ucy5jcmVhdGVGdW5kPWFzeW5jIGU9Pnt2YXJ7cGF5VG9rZW46YSx2b3RlVG9rZW46aSx2b3RlVGhyZXNob2xkOnQsbWF4RGF5czpuLG1heEFtb3VudFBlckRheTpzLHByb3Bvc2FsRmVlOnIsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99PWUse2R0ZkNyZWF0aW9uRmVlOnB9PWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksZT0hKCFhcGkuQmlnTnVtYmVyKHApLmx0ZSgwKSYmYXBpLnNlbmRlciE9PWFwaS5vd25lcil8fGUmJmFwaS5CaWdOdW1iZXIoZS5iYWxhbmNlKS5ndGUocCk7aWYoYXBpLmFzc2VydChlLCJ5b3UgbXVzdCBoYXZlIGVub3VnaCB0b2tlbnMgdG8gY292ZXIgdGhlIGNyZWF0aW9uIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09bywieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB0JiZhcGkuQmlnTnVtYmVyKHQpLmd0KDApLCJpbnZhbGlkIHZvdGVUaHJlc2hvbGQ6IGdyZWF0ZXIgdGhhbiAwIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBuJiZhcGkuQmlnTnVtYmVyKG4pLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG4pLmd0KDApJiZhcGkuQmlnTnVtYmVyKG4pLmx0ZSg3MzApLCJpbnZhbGlkIG1heERheXM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MzAiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHMmJmFwaS5CaWdOdW1iZXIocykuZ3QoMCksImludmFsaWQgbWF4QW1vdW50UGVyRGF5OiBncmVhdGVyIHRoYW4gMCIpKXtpZihyKXtpZighYXBpLmFzc2VydCgib2JqZWN0Ij09dHlwZW9mIHImJiJzdHJpbmciPT10eXBlb2Ygci5tZXRob2QmJi0xIT09RmVlTWV0aG9kLmluZGV4T2Yoci5tZXRob2QpJiYic3RyaW5nIj09dHlwZW9mIHIuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHIuYW1vdW50JiZhcGkuQmlnTnVtYmVyKHIuYW1vdW50KS5ndCgwKSwiaW52YWxpZCBwcm9wb3NhbEZlZSIpKXJldHVybjt2YXIgZD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpyLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGQmJmFwaS5CaWdOdW1iZXIoci5hbW91bnQpLmRwKCk8PWQucHJlY2lzaW9uLCJpbnZhbGlkIHByb3Bvc2FsRmVlIHRva2VuIG9yIHByZWNpc2lvbiIpKXJldHVybn1lPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmF9KSxkPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOml9KTtpZih2YWxpZGF0ZVRva2VucyhlLGQpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIocykuZHAoKTw9ZS5wcmVjaXNpb24sIm1heEFtb3VudFBlckRheSBwcmVjaXNpb24gbWlzbWF0Y2giKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHQpLmRwKCk8PWQucHJlY2lzaW9uLCJ2b3RlVGhyZXNob2xkIHByZWNpc2lvbiBtaXNtYXRjaCIpKXtjb25zdCB1PW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKSxsPXtwYXlUb2tlbjphLHZvdGVUb2tlbjppLHZvdGVUaHJlc2hvbGQ6dCxtYXhEYXlzOm4sbWF4QW1vdW50UGVyRGF5OnMscHJvcG9zYWxGZWU6cixhY3RpdmU6ITEsY3JlYXRvcjphcGkuc2VuZGVyLGxhc3RUaWNrVGltZTp1LmdldFRpbWUoKX07bC5pZD1gJHthfToke2l9YDtpPWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOmwuaWR9KTthcGkuYXNzZXJ0KCFpLCJEVEYgYWxyZWFkeSBleGlzdHMiKSYmKGk9YXdhaXQgYXBpLmRiLmluc2VydCgiZnVuZHMiLGwpLGFwaS5zZW5kZXIhPT1hcGkub3duZXImJiJudWxsIiE9PWFwaS5zZW5kZXImJmFwaS5CaWdOdW1iZXIocCkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnAsaXNTaWduZWRXaXRoQWN0aXZlS2V5Om99KSxhcGkuZW1pdCgiY3JlYXRlRnVuZCIse2lkOmkuaWR9KSl9fX0sYWN0aW9ucy51cGRhdGVGdW5kPWFzeW5jIGU9Pnt2YXJ7ZnVuZElkOmEsdm90ZVRocmVzaG9sZDppLG1heERheXM6dCxtYXhBbW91bnRQZXJEYXk6bixwcm9wb3NhbEZlZTpzLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpyfT1lLHtkdGZVcGRhdGVGZWU6b309YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGU9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxlPSEoIWFwaS5CaWdOdW1iZXIobykubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8ZSYmYXBpLkJpZ051bWJlcihlLmJhbGFuY2UpLmd0ZShvKTtpZihhcGkuYXNzZXJ0KGUsInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgdXBkYXRlIGZlZSIpJiZhcGkuYXNzZXJ0KCEwPT09ciwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpJiZhcGkuQmlnTnVtYmVyKGkpLmd0KDApLCJpbnZhbGlkIHZvdGVUaHJlc2hvbGQ6IGdyZWF0ZXIgdGhhbiAwIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB0JiZhcGkuQmlnTnVtYmVyKHQpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKHQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKHQpLmx0ZSg3MzApLCJpbnZhbGlkIG1heERheXM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MzAiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG4mJmFwaS5CaWdOdW1iZXIobikuZ3QoMCksImludmFsaWQgbWF4QW1vdW50UGVyRGF5OiBncmVhdGVyIHRoYW4gMCIpKXtpZihzKXtpZighYXBpLmFzc2VydCgib2JqZWN0Ij09dHlwZW9mIHMmJiJzdHJpbmciPT10eXBlb2Ygcy5tZXRob2QmJi0xIT09RmVlTWV0aG9kLmluZGV4T2Yocy5tZXRob2QpJiYic3RyaW5nIj09dHlwZW9mIHMuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHMuYW1vdW50JiZhcGkuQmlnTnVtYmVyKHMuYW1vdW50KS5ndCgwKSwiaW52YWxpZCBwcm9wb3NhbEZlZSIpKXJldHVybjt2YXIgcD1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpzLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KHAmJmFwaS5CaWdOdW1iZXIocy5hbW91bnQpLmRwKCk8PXAucHJlY2lzaW9uLCJpbnZhbGlkIHByb3Bvc2FsRmVlIHRva2VuIG9yIHByZWNpc2lvbiIpKXJldHVybn1jb25zdCBkPWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOmF9KTthcGkuYXNzZXJ0KGQsIkRURiBub3QgZm91bmQiKSYmYXBpLmFzc2VydChkLmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIERURiBjcmVhdG9yIikmJihlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmQucGF5VG9rZW59KSxwPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmQudm90ZVRva2VufSksYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKG4pLmRwKCk8PWUucHJlY2lzaW9uLCJtYXhBbW91bnRQZXJEYXkgcHJlY2lzaW9uIG1pc21hdGNoIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihpKS5kcCgpPD1wLnByZWNpc2lvbiwidm90ZVRocmVzaG9sZCBwcmVjaXNpb24gbWlzbWF0Y2giKSYmKGQudm90ZVRocmVzaG9sZD1pLGQubWF4RGF5cz10LGQubWF4QW1vdW50UGVyRGF5PW4scyYmKGQucHJvcG9zYWxGZWU9cyksYXdhaXQgYXBpLmRiLnVwZGF0ZSgiZnVuZHMiLGQpLGFwaS5zZW5kZXIhPT1hcGkub3duZXImJiJudWxsIiE9PWFwaS5zZW5kZXImJmFwaS5CaWdOdW1iZXIobykuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5Om8saXNTaWduZWRXaXRoQWN0aXZlS2V5OnJ9KSxhcGkuZW1pdCgidXBkYXRlRnVuZCIse2lkOmF9KSkpfX0sYWN0aW9ucy5zZXREdGZBY3RpdmU9YXN5bmMgZT0+e3ZhcntmdW5kSWQ6YSxhY3RpdmU6aSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ZX09ZTtpZihhcGkuYXNzZXJ0KCEwPT09ZSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5Iikpe2NvbnN0IHQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImZ1bmRzIix7aWQ6YX0pO2FwaS5hc3NlcnQodCwiRFRGIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodC5jcmVhdG9yPT09YXBpLnNlbmRlcnx8YXBpLm93bmVyPT09YXBpLnNlbmRlciwibXVzdCBiZSBEVEYgY3JlYXRvciIpJiYodC5hY3RpdmU9ISFpLGF3YWl0IGFwaS5kYi51cGRhdGUoImZ1bmRzIix0KSxhcGkuZW1pdCgic2V0RHRmQWN0aXZlIix7aWQ6dC5pZCxhY3RpdmU6dC5hY3RpdmV9KSl9fSxhY3Rpb25zLmNyZWF0ZVByb3Bvc2FsPWFzeW5jIGE9Pnt2YXJ7ZnVuZElkOmksdGl0bGU6dCxzdGFydERhdGU6bixlbmREYXRlOnMsYW1vdW50UGVyRGF5OnIsYXV0aG9yUGVybWxpbms6byxwYXlvdXQ6cCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6ZH09YSx1PWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOml9KTtpZihhcGkuYXNzZXJ0KHUsIkRURiBkb2VzIG5vdCBleGlzdCIpKXtsZXQgZT0hMDt1LnByb3Bvc2FsRmVlJiYoYT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDp1LnByb3Bvc2FsRmVlLnN5bWJvbH0pLGU9ISghYXBpLkJpZ051bWJlcih1LnByb3Bvc2FsRmVlLmFtb3VudCkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8YSYmYXBpLkJpZ051bWJlcihhLmJhbGFuY2UpLmd0ZSh1LnByb3Bvc2FsRmVlLmFtb3VudCkpLGFwaS5hc3NlcnQoZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWUiKSYmYXBpLmFzc2VydCghMD09PWQsInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCEwPT09dS5hY3RpdmUsIkRURiBpcyBub3QgYWN0aXZlIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB0JiYwPHQubGVuZ3RoJiZ0Lmxlbmd0aDw9ODAsImludmFsaWQgdGl0bGU6IGJldHdlZW4gMSBhbmQgODAgY2hhcmFjdGVycyIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgbyYmMDxvLmxlbmd0aCYmby5sZW5ndGg8PTI1NSwiaW52YWxpZCBhdXRob3JQZXJtbGluazogYmV0d2VlbiAxIGFuZCAyNTUgY2hhcmFjdGVycyIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgciYmYXBpLkJpZ051bWJlcihyKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihyKS5ndCgwKSwiaW52YWxpZCBhbW91bnRQZXJEYXk6IGdyZWF0ZXIgdGhhbiAwIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihyKS5sdGUodS5tYXhBbW91bnRQZXJEYXkpLCJpbnZhbGlkIGFtb3VudFBlckRheTogZXhjZWVkcyBEVEYgbWF4QW1vdW50UGVyRGF5IikmJmFwaS5hc3NlcnQoIm9iamVjdCI9PXR5cGVvZiBwJiYic3RyaW5nIj09dHlwZW9mIHAudHlwZSYmLTEhPT1QYXlvdXRUeXBlLmluZGV4T2YocC50eXBlKSYmKCJjb250cmFjdCIhPT1wLnR5cGV8fCJvYmplY3QiPT10eXBlb2YgcC5jb250cmFjdFBheWxvYWQpJiYic3RyaW5nIj09dHlwZW9mIHAubmFtZSYmMzw9cC5uYW1lLmxlbmd0aCYmcC5uYW1lLmxlbmd0aDw9NTAsImludmFsaWQgcGF5b3V0IHNldHRpbmdzIikmJnZhbGlkYXRlRGF0ZVJhbmdlKG4scyx1Lm1heERheXMpJiYobz17ZnVuZElkOmksdGl0bGU6dCxzdGFydERhdGU6bixlbmREYXRlOnMsYW1vdW50UGVyRGF5OnIsYXV0aG9yUGVybWxpbms6byxwYXlvdXQ6cCxjcmVhdG9yOmFwaS5zZW5kZXIsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sYWN0aXZlOiEwfSxwPWF3YWl0IGFwaS5kYi5pbnNlcnQoInByb3Bvc2FscyIsbyksYXBpLnNlbmRlciE9PWFwaS5vd25lciYmdS5wcm9wb3NhbEZlZSYmKCJidXJuIj09PXUucHJvcG9zYWxGZWUubWV0aG9kP2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOnUucHJvcG9zYWxGZWUuc3ltYm9sLHF1YW50aXR5OnUucHJvcG9zYWxGZWUuYW1vdW50fSk6Imlzc3VlciI9PT11LnByb3Bvc2FsRmVlLm1ldGhvZCYmKG89YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6dS5wcm9wb3NhbEZlZS5zeW1ib2x9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86by5pc3N1ZXIsc3ltYm9sOnUucHJvcG9zYWxGZWUuc3ltYm9sLHF1YW50aXR5OnUucHJvcG9zYWxGZWUuYW1vdW50fSkpKSxhcGkuZW1pdCgiY3JlYXRlUHJvcG9zYWwiLHtpZDpwLl9pZH0pKX19LGFjdGlvbnMudXBkYXRlUHJvcG9zYWw9YXN5bmMgZT0+e3ZhcntpZDphLHRpdGxlOmksZW5kRGF0ZTp0LGFtb3VudFBlckRheTpuLGF1dGhvclBlcm1saW5rOnMsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmV9PWU7aWYoYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGEmJmFwaS5CaWdOdW1iZXIoYSkuaXNJbnRlZ2VyKCksImludmFsaWQgaWQiKSl7Y29uc3Qgcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgicHJvcG9zYWxzIix7X2lkOmFwaS5CaWdOdW1iZXIoYSkudG9OdW1iZXIoKX0pO2FwaS5hc3NlcnQociwicHJvcG9zYWwgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChyLmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHByb3Bvc2FsIGNyZWF0b3IiKSYmKGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImZ1bmRzIix7aWQ6ci5mdW5kSWQsYWN0aXZlOiEwfSksYXBpLmFzc2VydChhLCJEVEYgZG9lcyBub3QgZXhpc3Qgb3IgaW5hY3RpdmUiKSYmYXBpLmFzc2VydCghMD09PWUsInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCEwPT09YS5hY3RpdmUsIkRURiBpcyBub3QgYWN0aXZlIikmJmFwaS5hc3NlcnQoITA9PT1yLmFjdGl2ZSwicHJvcG9zYWwgaXMgbm90IGFjdGl2ZSIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgaSYmMDxpLmxlbmd0aCYmaS5sZW5ndGg8PTgwLCJpbnZhbGlkIHRpdGxlOiBiZXR3ZWVuIDEgYW5kIDgwIGNoYXJhY3RlcnMiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHMmJjA8cy5sZW5ndGgmJnMubGVuZ3RoPD0yNTUsImludmFsaWQgYXV0aG9yUGVybWxpbms6IGJldHdlZW4gMSBhbmQgMjU1IGNoYXJhY3RlcnMiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG4mJmFwaS5CaWdOdW1iZXIobikuaXNJbnRlZ2VyKCkmJmFwaS5CaWdOdW1iZXIobikuZ3QoMCkmJmFwaS5CaWdOdW1iZXIobikubHRlKHIuYW1vdW50UGVyRGF5KSwiaW52YWxpZCBhbW91bnRQZXJEYXk6IGdyZWF0ZXIgdGhhbiAwIGFuZCBjYW5ub3QgYmUgaW5jcmVhc2VkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihuKS5sdGUoYS5tYXhBbW91bnRQZXJEYXkpLCJpbnZhbGlkIGFtb3VudFBlckRheTogZXhjZWVkcyBEVEYgbWF4QW1vdW50UGVyRGF5IikmJnZhbGlkYXRlRGF0ZUNoYW5nZShyLHQsYS5tYXhEYXlzKSYmKHIudGl0bGU9aSxyLmVuZERhdGU9dCxyLmFtb3VudFBlckRheT1uLHIuYXV0aG9yUGVybWxpbms9cyxhd2FpdCBhcGkuZGIudXBkYXRlKCJwcm9wb3NhbHMiLHIpLGFwaS5lbWl0KCJ1cGRhdGVQcm9wb3NhbCIse2lkOnIuX2lkfSkpKX19LGFjdGlvbnMuZGlzYWJsZVByb3Bvc2FsPWFzeW5jIGU9Pnt2YXJ7aWQ6ZX09ZTtpZihhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgZSYmYXBpLkJpZ051bWJlcihlKS5pc0ludGVnZXIoKSwiaW52YWxpZCBpZCIpKXtjb25zdCBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwcm9wb3NhbHMiLHtfaWQ6YXBpLkJpZ051bWJlcihlKS50b051bWJlcigpfSk7YXBpLmFzc2VydChhLCJwcm9wb3NhbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KCEwPT09YS5hY3RpdmUsInByb3Bvc2FsIGFscmVhZHkgZGlzYWJsZWQiKSYmYXBpLmFzc2VydChhLmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHByb3Bvc2FsIGNyZWF0b3IiKSYmKGEuYWN0aXZlPSExLGF3YWl0IGFwaS5kYi51cGRhdGUoInByb3Bvc2FscyIsYSksYXBpLmVtaXQoImRpc2FibGVQcm9wb3NhbCIse2lkOmEuX2lkfSkpfX0sYWN0aW9ucy5hcHByb3ZlUHJvcG9zYWw9YXN5bmMgdD0+e3ZhcntpZDpufT10LHM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBuJiZhcGkuQmlnTnVtYmVyKG4pLmlzSW50ZWdlcigpLCJpbnZhbGlkIGlkIikpe3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInByb3Bvc2FscyIse19pZDphcGkuQmlnTnVtYmVyKG4pLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KHQsInByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodmFsaWRhdGVQZW5kaW5nKHQpLCJwcm9wb3NhbCBpcyBub3QgcGVuZGluZyIpKXt2YXIgcj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZnVuZHMiLHtpZDp0LmZ1bmRJZH0pLG49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ci52b3RlVG9rZW59KTtsZXQgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtudWxsPT09YSYmKGE9e2FjY291bnQ6YXBpLnNlbmRlcix3ZWlnaHRzOltdfSxhPWF3YWl0IGFwaS5kYi5pbnNlcnQoImFjY291bnRzIixhKSk7bGV0IGk9MDt2YXIgbz1hd2FpdCBhcGkuZGIuZmluZCgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHByb3Bvc2FsUGVuZGluZzohMH0scy5tYXhBY2NvdW50QXBwcm92YWxzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiEwfV0pO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSs9MSl7Y29uc3QgZD1vW2VdO3ZhciBwPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwcm9wb3NhbHMiLHtfaWQ6ZC50b30pO3AmJnZhbGlkYXRlUGVuZGluZyhwKT9pKz0xOihkLnByb3Bvc2FsUGVuZGluZz0hMSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhcHByb3ZhbHMiLGQpKX1pZihhcGkuYXNzZXJ0KGk8cy5tYXhBY2NvdW50QXBwcm92YWxzLGB5b3UgY2FuIG9ubHkgYXBwcm92ZSAke3MubWF4QWNjb3VudEFwcHJvdmFsc30gYWN0aXZlIHByb3Bvc2Fsc2ApKXtzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsdG86dC5faWR9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1zLCJ5b3UgYWxyZWFkeSBhcHByb3ZlZCB0aGlzIHByb3Bvc2FsIikpe3M9e2Zyb206YXBpLnNlbmRlcix0bzp0Ll9pZCxwcm9wb3NhbFBlbmRpbmc6ITB9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFwcHJvdmFscyIscyk7cz1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpyLnZvdGVUb2tlbn0pO2xldCBlPTA7cyYmcy5zdGFrZSYmKGU9cy5zdGFrZSkscyYmcy5kZWxlZ2F0aW9uc0luJiYoZT1hcGkuQmlnTnVtYmVyKGUpLnBsdXMocy5kZWxlZ2F0aW9uc0luKS50b0ZpeGVkKG4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCkpO249YS53ZWlnaHRzLmZpbmRJbmRleChlPT5lLnN5bWJvbD09PXIudm90ZVRva2VuKTstMSE9PW4/YS53ZWlnaHRzW25dLndlaWdodD1lOmEud2VpZ2h0cy5wdXNoKHtzeW1ib2w6ci52b3RlVG9rZW4sd2VpZ2h0OmV9KSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYSksYXdhaXQgdXBkYXRlUHJvcG9zYWxXZWlnaHQodC5faWQsZSksYXBpLmVtaXQoImFwcHJvdmVQcm9wb3NhbCIse2lkOnQuX2lkfSl9fX19fSxhY3Rpb25zLmRpc2FwcHJvdmVQcm9wb3NhbD1hc3luYyBpPT57dmFye2lkOnR9PWk7aWYoYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHQmJmFwaS5CaWdOdW1iZXIodCkuaXNJbnRlZ2VyKCksImludmFsaWQgaWQiKSl7dmFyIG49YXdhaXQgYXBpLmRiLmZpbmRPbmUoInByb3Bvc2FscyIse19pZDphcGkuQmlnTnVtYmVyKHQpLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KG4sInByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodmFsaWRhdGVQZW5kaW5nKG4pLCJwcm9wb3NhbCBpcyBub3QgcGVuZGluZyIpKXt2YXIgcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZnVuZHMiLHtpZDpuLmZ1bmRJZH0pLGk9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cy52b3RlVG9rZW59KTtsZXQgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtudWxsPT09YSYmKGE9e2FjY291bnQ6YXBpLnNlbmRlcix3ZWlnaHRzOltdfSxhPWF3YWl0IGFwaS5kYi5pbnNlcnQoImFjY291bnRzIixhKSk7dD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHRvOm4uX2lkfSk7aWYoYXBpLmFzc2VydChudWxsIT09dCwieW91IGhhdmUgbm90IGFwcHJvdmVkIHRoaXMgcHJvcG9zYWwiKSl7YXdhaXQgYXBpLmRiLnJlbW92ZSgiYXBwcm92YWxzIix0KTt0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnMudm90ZVRva2VufSk7bGV0IGU9MDt0JiZ0LnN0YWtlJiYoZT10LnN0YWtlKSx0JiZ0LmRlbGVnYXRpb25zSW4mJihlPWFwaS5CaWdOdW1iZXIoZSkucGx1cyh0LmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoaS5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSk7aT1hLndlaWdodHMuZmluZEluZGV4KGU9PmUuc3ltYm9sPT09cy52b3RlVG9rZW4pOy0xIT09aT9hLndlaWdodHNbaV0ud2VpZ2h0PWU6YS53ZWlnaHRzLnB1c2goe3N5bWJvbDpzLnZvdGVUb2tlbix3ZWlnaHQ6ZX0pLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhKSxhd2FpdCB1cGRhdGVQcm9wb3NhbFdlaWdodChuLl9pZCxhcGkuQmlnTnVtYmVyKGUpLm5lZ2F0ZWQoKSksYXBpLmVtaXQoImRpc2FwcHJvdmVQcm9wb3NhbCIse2lkOm4uX2lkfSl9fX19LGFjdGlvbnMudXBkYXRlUHJvcG9zYWxBcHByb3ZhbHM9YXN5bmMgYT0+e3ZhcnthY2NvdW50OmksdG9rZW46dCxjYWxsaW5nQ29udHJhY3RJbmZvOm59PWE7aWYodm9pZCAwIT09biYmInRva2VucyI9PT1uLm5hbWUpe2NvbnN0IHA9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDppfSk7aWYobnVsbCE9PXApe3ZhciBzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxhPXAud2VpZ2h0cy5maW5kSW5kZXgoZT0+ZS5zeW1ib2w9PT10LnN5bWJvbCk7aWYoLTEhPT1hKXtuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50Omksc3ltYm9sOnQuc3ltYm9sfSk7bGV0IGU9MDtuJiZuLnN0YWtlJiYoZT1uLnN0YWtlKSxuJiZuLmRlbGVnYXRpb25zSW4mJihlPWFwaS5CaWdOdW1iZXIoZSkucGx1cyhuLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQodC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSk7bj1wLndlaWdodHNbYV0ud2VpZ2h0O3Aud2VpZ2h0c1thXS53ZWlnaHQ9ZTt2YXIgcj1hcGkuQmlnTnVtYmVyKGUpLm1pbnVzKG4pLmRwKHQucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCk7aWYoIWFwaS5CaWdOdW1iZXIocikuZXEoMCkpe2F3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixwKTt2YXIgbz1hd2FpdCBhcGkuZGIuZmluZCgiYXBwcm92YWxzIix7ZnJvbTppLHByb3Bvc2FsUGVuZGluZzohMH0scy5tYXhBY2NvdW50QXBwcm92YWxzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiEwfV0pO2ZvcihsZXQgZT0wO2U8by5sZW5ndGg7ZSs9MSl7Y29uc3QgZD1vW2VdO2F3YWl0IHVwZGF0ZVByb3Bvc2FsV2VpZ2h0KGQudG8scix0KXx8KGQucHJvcG9zYWxQZW5kaW5nPSExLGF3YWl0IGFwaS5kYi51cGRhdGUoImFwcHJvdmFscyIsZCkpfX19fX19O2FzeW5jIGZ1bmN0aW9uIGNoZWNrUGVuZGluZ1Byb3Bvc2FscyhlLGEpe2NvbnN0IGk9bmV3IERhdGUoYCR7YXBpLmhpdmVCbG9ja1RpbWVzdGFtcH0uMDAwWmApO3ZhciB0PWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmUucGF5VG9rZW59KSxuPWFwaS5CaWdOdW1iZXIoYS5kdGZUaWNrSG91cnMpLmRpdmlkZWRCeSgyNCk7Y29uc3Qgcz1bXSxyPVtdO2xldCBvPTAscCxkPWFwaS5CaWdOdW1iZXIoZS5tYXhBbW91bnRQZXJEYXkpLnRpbWVzKG4pO2Zvcig7ZC5ndCgwKTspe3A9YXdhaXQgYXBpLmRiLmZpbmQoInByb3Bvc2FscyIse2Z1bmRJZDplLmlkLGFjdGl2ZTohMCxhcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDphcGkuQmlnTnVtYmVyKGUudm90ZVRocmVzaG9sZCl9fSxzdGFydERhdGU6eyRsdGU6aS50b0lTT1N0cmluZygpfSxlbmREYXRlOnskZ3RlOmkudG9JU09TdHJpbmcoKX19LGEucHJvY2Vzc1F1ZXJ5TGltaXQsbyxbe2luZGV4OiJieUFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGU9MDtlPHAubGVuZ3RoO2UrPTEpe2lmKGFwaS5CaWdOdW1iZXIocFtlXS5hbW91bnRQZXJEYXkpLnRpbWVzKG4pLmd0ZShkKSl7cFtlXS50aWNrUGF5PWQudG9GaXhlZCh0LnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHMucHVzaChwW2VdKSxkPWFwaS5CaWdOdW1iZXIoMCk7YnJlYWt9cFtlXS50aWNrUGF5PWFwaS5CaWdOdW1iZXIocFtlXS5hbW91bnRQZXJEYXkpLnRpbWVzKG4pLnRvRml4ZWQodC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSxzLnB1c2gocFtlXSksZD1kLm1pbnVzKHBbZV0udGlja1BheSl9aWYocC5sZW5ndGg8YS5wcm9jZXNzUXVlcnlMaW1pdClicmVhaztvKz1hLnByb2Nlc3NRdWVyeUxpbWl0fWZvcihsZXQgZT0wO2U8cy5sZW5ndGg7ZSs9MSl7dmFyIHU9c1tlXTtyLnB1c2goe2lkOnUuX2lkLHRpY2tQYXk6dS50aWNrUGF5fSksInVzZXIiPT09dS5wYXlvdXQudHlwZT9hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlIix7dG86dS5wYXlvdXQubmFtZSxzeW1ib2w6dC5zeW1ib2wscXVhbnRpdHk6dS50aWNrUGF5fSk6ImNvbnRyYWN0Ij09PXUucGF5b3V0LnR5cGUmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlVG9Db250cmFjdCIse3RvOnUucGF5b3V0Lm5hbWUsc3ltYm9sOnQuc3ltYm9sLHF1YW50aXR5OnUudGlja1BheX0pLGF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCh1LnBheW91dC5uYW1lLCJyZWNlaXZlRHRmVG9rZW5zIix7ZGF0YTp1LnBheW91dC5jb250cmFjdFBheWxvYWQsc3ltYm9sOnQuc3ltYm9sLHF1YW50aXR5OnUudGlja1BheX0pKX1lLmxhc3RUaWNrVGltZT1hcGkuQmlnTnVtYmVyKGkuZ2V0VGltZSgpKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoImZ1bmRzIixlKSxhcGkuZW1pdCgiZnVuZFByb3Bvc2FscyIse2Z1bmRJZDplLmlkLGZ1bmRlZDpyfSl9YWN0aW9ucy5jaGVja1BlbmRpbmdEdGZzPWFzeW5jKCk9PntpZihhcGkuYXNzZXJ0KCJudWxsIj09PWFwaS5zZW5kZXIsIm5vdCBhdXRob3JpemVkIikpe3ZhciBhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtjb25zdCB0PW5ldyBEYXRlKGAke2FwaS5oaXZlQmxvY2tUaW1lc3RhbXB9LjAwMFpgKTt2YXIgZT1hcGkuQmlnTnVtYmVyKHQuZ2V0VGltZSgpKS5taW51cygzNjAwKmEuZHRmVGlja0hvdXJzKjFlMykudG9OdW1iZXIoKSxpPWF3YWl0IGFwaS5kYi5maW5kKCJmdW5kcyIse2FjdGl2ZTohMCxsYXN0VGlja1RpbWU6eyRsdGU6ZX19LGEubWF4RHRmc1BlckJsb2NrLDAsW3tpbmRleDoibGFzdFRpY2tUaW1lIixkZXNjZW5kaW5nOiExfSx7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMX1dKTtmb3IobGV0IGU9MDtlPGkubGVuZ3RoO2UrPTEpYXdhaXQgY2hlY2tQZW5kaW5nUHJvcG9zYWxzKGlbZV0sYSl9fTs="}}}