Tokenfunds Smart Contract

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"tokenfunds","params":"","code":"Y29uc3QgRmVlTWV0aG9kPVsiYnVybiIsImlzc3VlciJdLFBheW91dFR5cGU9WyJ1c2VyIiwiY29udHJhY3QiXTtmdW5jdGlvbiB2YWxpZGF0ZVRva2VucyhwYXlUb2tlbk9iaix2b3RlVG9rZW5PYmope3JldHVybiEhYXBpLmFzc2VydChwYXlUb2tlbk9iaiYmKHBheVRva2VuT2JqLmlzc3Vlcj09PWFwaS5zZW5kZXJ8fCJCRUUiPT09cGF5VG9rZW5PYmouc3ltYm9sJiZhcGkuc2VuZGVyPT09YXBpLm93bmVyKSwibXVzdCBiZSBpc3N1ZXIgb2YgcGF5VG9rZW4iKSYmISFhcGkuYXNzZXJ0KHZvdGVUb2tlbk9iaiYmdm90ZVRva2VuT2JqLnN0YWtpbmdFbmFibGVkLCJ2b3RlVG9rZW4gbXVzdCBoYXZlIHN0YWtpbmcgZW5hYmxlZCIpfWZ1bmN0aW9uIHZhbGlkYXRlRGF0ZVRpbWUoc3RyKXtpZigyND09PXN0ci5sZW5ndGgpe2ZvcihsZXQgaT0wO2k8c3RyLmxlbmd0aCYmMT09PVs1LDgsMTEsMTQsMTcsMjFdLmluZGV4T2YoaSk7aSs9MSl7Y29uc3QgY29kZT1zdHIuY2hhckNvZGVBdChpKTtpZighKGNvZGU+NDcmJmNvZGU8NTgpKXJldHVybiExfXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIHZhbGlkYXRlRGF0ZVJhbmdlKHN0YXJ0RGF0ZSxlbmREYXRlLG1heERheXMpe2lmKCFhcGkuYXNzZXJ0KHZhbGlkYXRlRGF0ZVRpbWUoc3RhcnREYXRlKSYmdmFsaWRhdGVEYXRlVGltZShlbmREYXRlKSwiaW52YWxpZCBkYXRldGltZSBmb3JtYXQ6IFlZWVktTU0tRERUaGg6bW06c3Muc3NzWiIpKXJldHVybiExO2NvbnN0IG5vdz1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLHN0YXJ0PW5ldyBEYXRlKHN0YXJ0RGF0ZSksZW5kPW5ldyBEYXRlKGVuZERhdGUpO2lmKCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoc3RhcnQuZ2V0VGltZSgpKS5sdChhcGkuQmlnTnVtYmVyKGVuZC5nZXRUaW1lKCkpLm1pbnVzKDg2NGU1KSksImRhdGVzIG11c3QgYmUgYXQgbGVhc3QgMSBkYXkgYXBhcnQiKXx8IWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihzdGFydC5nZXRUaW1lKCkpLmd0KGFwaS5CaWdOdW1iZXIobm93LmdldFRpbWUoKSkucGx1cyg4NjRlNSkpLCJzdGFydERhdGUgbXVzdCBiZSBhdCBsZWFzdCAxIGRheSBpbiB0aGUgZnV0dXJlIikpcmV0dXJuITE7Y29uc3QgcmFuZ2VEYXlzPWFwaS5CaWdOdW1iZXIoc3RhcnQuZ2V0VGltZSgpKS5taW51cyhlbmQuZ2V0VGltZSgpKS5hYnMoKS5kaXZpZGVkQnkoODY0ZTUpLnRvRml4ZWQoMCxhcGkuQmlnTnVtYmVyLlJPVU5EX0NFSUwpO3JldHVybiEhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHJhbmdlRGF5cykubHRlKG1heERheXMpLCJkYXRlIHJhbmdlIGV4Y2VlZHMgRFRGIG1heERheXMiKX1mdW5jdGlvbiB2YWxpZGF0ZURhdGVDaGFuZ2UocHJvcG9zYWwsbmV3RGF0ZSxtYXhEYXlzKXtpZighYXBpLmFzc2VydCh2YWxpZGF0ZURhdGVUaW1lKG5ld0RhdGUpLCJpbnZhbGlkIGRhdGV0aW1lIGZvcm1hdDogWVlZWS1NTS1ERFRoaDptbTpzcy5zc3NaIikpcmV0dXJuITE7Y29uc3Qgc3RhcnQ9bmV3IERhdGUocHJvcG9zYWwuc3RhcnREYXRlKSxjdXI9bmV3IERhdGUocHJvcG9zYWwuZW5kRGF0ZSkscmVwbD1uZXcgRGF0ZShuZXdEYXRlKTtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHN0YXJ0LmdldFRpbWUoKSkubHQoYXBpLkJpZ051bWJlcihyZXBsLmdldFRpbWUoKSkubWludXMoODY0ZTUpKSwiZGF0ZXMgbXVzdCBiZSBhdCBsZWFzdCAxIGRheSBhcGFydCIpKXJldHVybiExO2lmKCFhcGkuYXNzZXJ0KHJlcGw8PWN1ciwiZGF0ZSBjYW4gb25seSBiZSByZWR1Y2VkIikpcmV0dXJuITE7Y29uc3QgcmFuZ2VEYXlzPWFwaS5CaWdOdW1iZXIoc3RhcnQuZ2V0VGltZSgpKS5taW51cyhyZXBsLmdldFRpbWUoKSkuYWJzKCkuZGl2aWRlZEJ5KDg2NGU1KS50b0ZpeGVkKDAsYXBpLkJpZ051bWJlci5ST1VORF9DRUlMKTtyZXR1cm4hIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihyYW5nZURheXMpLmx0ZShtYXhEYXlzKSwiZGF0ZSByYW5nZSBleGNlZWRzIERURiBtYXhEYXlzIil9ZnVuY3Rpb24gdmFsaWRhdGVQZW5kaW5nKHByb3Bvc2FsKXtjb25zdCBibG9ja0RhdGU9bmV3IERhdGUoYXBpLmhpdmVCbG9ja1RpbWVzdGFtcCsiLjAwMFoiKTtyZXR1cm4gbmV3IERhdGUocHJvcG9zYWwuZW5kRGF0ZSk+PWJsb2NrRGF0ZX1hc3luYyBmdW5jdGlvbiB1cGRhdGVQcm9wb3NhbFdlaWdodChpZCxkZWx0YUFwcHJvdmFsV2VpZ2h0LGRlbHRhVG9rZW49bnVsbCl7Y29uc3QgcHJvcG9zYWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInByb3Bvc2FscyIse19pZDppZH0pO2lmKHByb3Bvc2FsJiZ2YWxpZGF0ZVBlbmRpbmcocHJvcG9zYWwpKXtpZihkZWx0YVRva2VuKXtpZigoYXdhaXQgYXBpLmRiLmZpbmRPbmUoImZ1bmRzIix7aWQ6cHJvcG9zYWwuZnVuZElkfSkpLnZvdGVUb2tlbiE9PWRlbHRhVG9rZW4uc3ltYm9sKXJldHVybiEwfXJldHVybiBwcm9wb3NhbC5hcHByb3ZhbFdlaWdodD17JG51bWJlckRlY2ltYWw6YXBpLkJpZ051bWJlcihwcm9wb3NhbC5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkucGx1cyhkZWx0YUFwcHJvdmFsV2VpZ2h0KX0sYXdhaXQgYXBpLmRiLnVwZGF0ZSgicHJvcG9zYWxzIixwcm9wb3NhbCksITB9cmV0dXJuITF9YXN5bmMgZnVuY3Rpb24gY2hlY2tQZW5kaW5nUHJvcG9zYWxzKGR0ZixwYXJhbXMpe2NvbnN0IGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLHBheVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmR0Zi5wYXlUb2tlbn0pLHRpY2tQYXlSYXRpbz1hcGkuQmlnTnVtYmVyKHBhcmFtcy5kdGZUaWNrSG91cnMpLmRpdmlkZWRCeSgyNCksZnVuZGVkPVtdLGZ1bmRlZExvZz1bXTtsZXQgcHJvcG9zYWxzLG9mZnNldD0wLHJ1bm5pbmdQYXk9YXBpLkJpZ051bWJlcihkdGYubWF4QW1vdW50UGVyRGF5KS50aW1lcyh0aWNrUGF5UmF0aW8pO2Zvcig7cnVubmluZ1BheS5ndCgwKTspe3Byb3Bvc2Fscz1hd2FpdCBhcGkuZGIuZmluZCgicHJvcG9zYWxzIix7ZnVuZElkOmR0Zi5pZCxhY3RpdmU6ITAsYXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6YXBpLkJpZ051bWJlcihkdGYudm90ZVRocmVzaG9sZCl9fSxzdGFydERhdGU6eyRsdGU6YmxvY2tEYXRlLnRvSVNPU3RyaW5nKCl9LGVuZERhdGU6eyRndGU6YmxvY2tEYXRlLnRvSVNPU3RyaW5nKCl9fSxwYXJhbXMucHJvY2Vzc1F1ZXJ5TGltaXQsb2Zmc2V0LFt7aW5kZXg6ImJ5QXBwcm92YWxXZWlnaHQiLGRlc2NlbmRpbmc6ITB9LHtpbmRleDoiX2lkIixkZXNjZW5kaW5nOiExfV0pO2ZvcihsZXQgaT0wO2k8cHJvcG9zYWxzLmxlbmd0aDtpKz0xKXtpZihhcGkuQmlnTnVtYmVyKHByb3Bvc2Fsc1tpXS5hbW91bnRQZXJEYXkpLnRpbWVzKHRpY2tQYXlSYXRpbykuZ3RlKHJ1bm5pbmdQYXkpKXtwcm9wb3NhbHNbaV0udGlja1BheT1ydW5uaW5nUGF5LnRvRml4ZWQocGF5VG9rZW5PYmoucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksZnVuZGVkLnB1c2gocHJvcG9zYWxzW2ldKSxydW5uaW5nUGF5PWFwaS5CaWdOdW1iZXIoMCk7YnJlYWt9cHJvcG9zYWxzW2ldLnRpY2tQYXk9YXBpLkJpZ051bWJlcihwcm9wb3NhbHNbaV0uYW1vdW50UGVyRGF5KS50aW1lcyh0aWNrUGF5UmF0aW8pLnRvRml4ZWQocGF5VG9rZW5PYmoucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfRE9XTiksZnVuZGVkLnB1c2gocHJvcG9zYWxzW2ldKSxydW5uaW5nUGF5PXJ1bm5pbmdQYXkubWludXMocHJvcG9zYWxzW2ldLnRpY2tQYXkpfWlmKHByb3Bvc2Fscy5sZW5ndGg8cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0KWJyZWFrO29mZnNldCs9cGFyYW1zLnByb2Nlc3NRdWVyeUxpbWl0fWZvcihsZXQgaT0wO2k8ZnVuZGVkLmxlbmd0aDtpKz0xKXtjb25zdCBmdW5kPWZ1bmRlZFtpXTtmdW5kZWRMb2cucHVzaCh7aWQ6ZnVuZC5faWQsdGlja1BheTpmdW5kLnRpY2tQYXl9KSwidXNlciI9PT1mdW5kLnBheW91dC50eXBlP2F3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwiaXNzdWUiLHt0bzpmdW5kLnBheW91dC5uYW1lLHN5bWJvbDpwYXlUb2tlbk9iai5zeW1ib2wscXVhbnRpdHk6ZnVuZC50aWNrUGF5fSk6ImNvbnRyYWN0Ij09PWZ1bmQucGF5b3V0LnR5cGUmJihhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsImlzc3VlVG9Db250cmFjdCIse3RvOmZ1bmQucGF5b3V0Lm5hbWUsc3ltYm9sOnBheVRva2VuT2JqLnN5bWJvbCxxdWFudGl0eTpmdW5kLnRpY2tQYXl9KSxhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoZnVuZC5wYXlvdXQubmFtZSwicmVjZWl2ZUR0ZlRva2VucyIse2RhdGE6ZnVuZC5wYXlvdXQuY29udHJhY3RQYXlsb2FkLHN5bWJvbDpwYXlUb2tlbk9iai5zeW1ib2wscXVhbnRpdHk6ZnVuZC50aWNrUGF5fSkpfWR0Zi5sYXN0VGlja1RpbWU9YXBpLkJpZ051bWJlcihibG9ja0RhdGUuZ2V0VGltZSgpKS50b051bWJlcigpLGF3YWl0IGFwaS5kYi51cGRhdGUoImZ1bmRzIixkdGYpLGFwaS5lbWl0KCJmdW5kUHJvcG9zYWxzIix7ZnVuZElkOmR0Zi5pZCxmdW5kZWQ6ZnVuZGVkTG9nfSl9YWN0aW9ucy5jcmVhdGVTU0M9YXN5bmMoKT0+e2lmKCExPT09YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJmdW5kcyIpKXthd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImZ1bmRzIixbImlkIiwibGFzdFRpY2tUaW1lIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicHJvcG9zYWxzIixbImZ1bmRJZCIse25hbWU6ImJ5QXBwcm92YWxXZWlnaHQiLGluZGV4OntmdW5kSWQ6MSxhcHByb3ZhbFdlaWdodDoxfX1dKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImFwcHJvdmFscyIsWyJmcm9tIiwidG8iXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJhY2NvdW50cyIsW10se3ByaW1hcnlLZXk6WyJhY2NvdW50Il19KSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17ZHRmQ3JlYXRpb25GZWU6IjEwMDAiLGR0ZlVwZGF0ZUZlZToiMzAwIixkdGZUaWNrSG91cnM6IjI0IixtYXhEdGZzUGVyQmxvY2s6NDAsbWF4QWNjb3VudEFwcHJvdmFsczo1MCxwcm9jZXNzUXVlcnlMaW1pdDoxZTN9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX1lbHNle2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoIXBhcmFtcy51cGRhdGVJbmRleCl7Y29uc3QgZHRmcz1hd2FpdCBhcGkuZGIuZmluZCgiZnVuZHMiLHt9KSx2b3RlVG9rZW5zPW5ldyBTZXQ7Zm9yKGxldCBpPTA7aTxkdGZzLmxlbmd0aDtpKz0xKXZvdGVUb2tlbnMuYWRkKGR0ZnNbaV0udm90ZVRva2VuKTtjb25zdCByZXNldEFjY291bnRzPWF3YWl0IGFwaS5kYi5maW5kKCJhY2NvdW50cyIse30pO2ZvcihsZXQgaT0wO2k8cmVzZXRBY2NvdW50cy5sZW5ndGg7aSs9MSl7Y29uc3QgYWNjdD1yZXNldEFjY291bnRzW2ldO2FjY3Qud2VpZ2h0cz1hY2N0LndlaWdodHMuZmlsdGVyKGVsZT0+dm90ZVRva2Vucy5oYXMoZWxlLnN5bWJvbCkpLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2N0KX1jb25zdCByZXNldFByb3Bvc2Fscz1hd2FpdCBhcGkuZGIuZmluZCgicHJvcG9zYWxzIix7fSk7Zm9yKGxldCBpPTA7aTxyZXNldFByb3Bvc2Fscy5sZW5ndGg7aSs9MSl7Y29uc3QgcHJvcD1yZXNldFByb3Bvc2Fsc1tpXSxwcm9wRnVuZD1kdGZzLmZpbmQoeD0+eC5pZD09PXByb3AuZnVuZElkKSxwcm9wQXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHt0bzpwcm9wLl9pZH0pO2xldCBuZXdBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKCIwIik7Zm9yKGxldCBqPTA7ajxwcm9wQXBwcm92YWxzLmxlbmd0aDtqKz0xKXtjb25zdCBhcHByb3ZhbD1wcm9wQXBwcm92YWxzW2pdLGFwcHJvdmFsQWNjdFdndD1yZXNldEFjY291bnRzLmZpbmQoeD0+eC5hY2NvdW50PT09YXBwcm92YWwuZnJvbSkud2VpZ2h0cy5maW5kKHg9Pnguc3ltYm9sPT09cHJvcEZ1bmQudm90ZVRva2VuKTtuZXdBcHByb3ZhbFdlaWdodD1uZXdBcHByb3ZhbFdlaWdodC5wbHVzKGFwcHJvdmFsQWNjdFdndC53ZWlnaHQpfXByb3AuYXBwcm92YWxXZWlnaHQ9eyRudW1iZXJEZWNpbWFsOm5ld0FwcHJvdmFsV2VpZ2h0fSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwcm9wb3NhbHMiLHByb3ApfXBhcmFtcy51cGRhdGVJbmRleD0xLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX19fSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZHRmQ3JlYXRpb25GZWU6ZHRmQ3JlYXRpb25GZWUsZHRmVXBkYXRlRmVlOmR0ZlVwZGF0ZUZlZSxkdGZUaWNrSG91cnM6ZHRmVGlja0hvdXJzLG1heER0ZnNQZXJCbG9jazptYXhEdGZzUGVyQmxvY2ssbWF4QWNjb3VudEFwcHJvdmFsczptYXhBY2NvdW50QXBwcm92YWxzLHByb2Nlc3NRdWVyeUxpbWl0OnByb2Nlc3NRdWVyeUxpbWl0fT1wYXlsb2FkO2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoZHRmQ3JlYXRpb25GZWUpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgZHRmQ3JlYXRpb25GZWUmJiFhcGkuQmlnTnVtYmVyKGR0ZkNyZWF0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKGR0ZkNyZWF0aW9uRmVlKS5ndGUoMCksImludmFsaWQgZHRmQ3JlYXRpb25GZWUiKSlyZXR1cm47cGFyYW1zLmR0ZkNyZWF0aW9uRmVlPWR0ZkNyZWF0aW9uRmVlfWlmKGR0ZlVwZGF0ZUZlZSl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBkdGZVcGRhdGVGZWUmJiFhcGkuQmlnTnVtYmVyKGR0ZlVwZGF0ZUZlZSkuaXNOYU4oKSYmYXBpLkJpZ051bWJlcihkdGZVcGRhdGVGZWUpLmd0ZSgwKSwiaW52YWxpZCBkdGZVcGRhdGVGZWUiKSlyZXR1cm47cGFyYW1zLmR0ZlVwZGF0ZUZlZT1kdGZVcGRhdGVGZWV9aWYoZHRmVGlja0hvdXJzKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGR0ZlRpY2tIb3VycyYmYXBpLkJpZ051bWJlcihkdGZUaWNrSG91cnMpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKGR0ZlRpY2tIb3VycykuZ3RlKDEpLCJpbnZhbGlkIGR0ZlRpY2tIb3VycyIpKXJldHVybjtwYXJhbXMuZHRmVGlja0hvdXJzPWR0ZlRpY2tIb3Vyc31pZihtYXhEdGZzUGVyQmxvY2spe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgbWF4RHRmc1BlckJsb2NrJiZhcGkuQmlnTnVtYmVyKG1heER0ZnNQZXJCbG9jaykuaXNJbnRlZ2VyKCkmJmFwaS5CaWdOdW1iZXIobWF4RHRmc1BlckJsb2NrKS5ndGUoMSksImludmFsaWQgbWF4RHRmc1BlckJsb2NrIikpcmV0dXJuO3BhcmFtcy5tYXhEdGZzUGVyQmxvY2s9YXBpLkJpZ051bWJlcihtYXhEdGZzUGVyQmxvY2spLnRvTnVtYmVyKCl9aWYobWF4QWNjb3VudEFwcHJvdmFscyl7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYXhBY2NvdW50QXBwcm92YWxzJiZhcGkuQmlnTnVtYmVyKG1heEFjY291bnRBcHByb3ZhbHMpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG1heEFjY291bnRBcHByb3ZhbHMpLmd0ZSgxKSwiaW52YWxpZCBtYXhEdGZzUGVyQmxvY2siKSlyZXR1cm47cGFyYW1zLm1heEFjY291bnRBcHByb3ZhbHM9YXBpLkJpZ051bWJlcihtYXhBY2NvdW50QXBwcm92YWxzKS50b051bWJlcigpfWlmKHByb2Nlc3NRdWVyeUxpbWl0KXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHByb2Nlc3NRdWVyeUxpbWl0JiZhcGkuQmlnTnVtYmVyKHByb2Nlc3NRdWVyeUxpbWl0KS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihwcm9jZXNzUXVlcnlMaW1pdCkuZ3RlKDEpLCJpbnZhbGlkIHByb2Nlc3NRdWVyeUxpbWl0IikpcmV0dXJuO3BhcmFtcy5wcm9jZXNzUXVlcnlMaW1pdD1hcGkuQmlnTnVtYmVyKHByb2Nlc3NRdWVyeUxpbWl0KS50b051bWJlcigpfWF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy5jcmVhdGVGdW5kPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtwYXlUb2tlbjpwYXlUb2tlbix2b3RlVG9rZW46dm90ZVRva2VuLHZvdGVUaHJlc2hvbGQ6dm90ZVRocmVzaG9sZCxtYXhEYXlzOm1heERheXMsbWF4QW1vdW50UGVyRGF5Om1heEFtb3VudFBlckRheSxwcm9wb3NhbEZlZTpwcm9wb3NhbEZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2R0ZkNyZWF0aW9uRmVlOmR0ZkNyZWF0aW9uRmVlfT1wYXJhbXMsdXRpbGl0eVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGF1dGhvcml6ZWRDcmVhdGlvbj0hKCFhcGkuQmlnTnVtYmVyKGR0ZkNyZWF0aW9uRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKGR0ZkNyZWF0aW9uRmVlKTtpZihhcGkuYXNzZXJ0KGF1dGhvcml6ZWRDcmVhdGlvbiwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSBjcmVhdGlvbiBmZWUiKSYmYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiB2b3RlVGhyZXNob2xkJiZhcGkuQmlnTnVtYmVyKHZvdGVUaHJlc2hvbGQpLmd0KDApLCJpbnZhbGlkIHZvdGVUaHJlc2hvbGQ6IGdyZWF0ZXIgdGhhbiAwIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYXhEYXlzJiZhcGkuQmlnTnVtYmVyKG1heERheXMpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKG1heERheXMpLmd0KDApJiZhcGkuQmlnTnVtYmVyKG1heERheXMpLmx0ZSg3MzApLCJpbnZhbGlkIG1heERheXM6IGludGVnZXIgYmV0d2VlbiAxIGFuZCA3MzAiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIG1heEFtb3VudFBlckRheSYmYXBpLkJpZ051bWJlcihtYXhBbW91bnRQZXJEYXkpLmd0KDApLCJpbnZhbGlkIG1heEFtb3VudFBlckRheTogZ3JlYXRlciB0aGFuIDAiKSl7aWYocHJvcG9zYWxGZWUpe2lmKCFhcGkuYXNzZXJ0KCJvYmplY3QiPT10eXBlb2YgcHJvcG9zYWxGZWUmJiJzdHJpbmciPT10eXBlb2YgcHJvcG9zYWxGZWUubWV0aG9kJiYtMSE9PUZlZU1ldGhvZC5pbmRleE9mKHByb3Bvc2FsRmVlLm1ldGhvZCkmJiJzdHJpbmciPT10eXBlb2YgcHJvcG9zYWxGZWUuc3ltYm9sJiYic3RyaW5nIj09dHlwZW9mIHByb3Bvc2FsRmVlLmFtb3VudCYmYXBpLkJpZ051bWJlcihwcm9wb3NhbEZlZS5hbW91bnQpLmd0KDApLCJpbnZhbGlkIHByb3Bvc2FsRmVlIikpcmV0dXJuO2NvbnN0IGZlZVRva2VuT2JqPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnByb3Bvc2FsRmVlLnN5bWJvbH0pO2lmKCFhcGkuYXNzZXJ0KGZlZVRva2VuT2JqJiZhcGkuQmlnTnVtYmVyKHByb3Bvc2FsRmVlLmFtb3VudCkuZHAoKTw9ZmVlVG9rZW5PYmoucHJlY2lzaW9uLCJpbnZhbGlkIHByb3Bvc2FsRmVlIHRva2VuIG9yIHByZWNpc2lvbiIpKXJldHVybn1jb25zdCBwYXlUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwYXlUb2tlbn0pLHZvdGVUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDp2b3RlVG9rZW59KTtpZighdmFsaWRhdGVUb2tlbnMocGF5VG9rZW5PYmosdm90ZVRva2VuT2JqKXx8IWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihtYXhBbW91bnRQZXJEYXkpLmRwKCk8PXBheVRva2VuT2JqLnByZWNpc2lvbiwibWF4QW1vdW50UGVyRGF5IHByZWNpc2lvbiBtaXNtYXRjaCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHZvdGVUaHJlc2hvbGQpLmRwKCk8PXZvdGVUb2tlbk9iai5wcmVjaXNpb24sInZvdGVUaHJlc2hvbGQgcHJlY2lzaW9uIG1pc21hdGNoIikpcmV0dXJuO2NvbnN0IG5vdz1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLG5ld0R0Zj17cGF5VG9rZW46cGF5VG9rZW4sdm90ZVRva2VuOnZvdGVUb2tlbix2b3RlVGhyZXNob2xkOnZvdGVUaHJlc2hvbGQsbWF4RGF5czptYXhEYXlzLG1heEFtb3VudFBlckRheTptYXhBbW91bnRQZXJEYXkscHJvcG9zYWxGZWU6cHJvcG9zYWxGZWUsYWN0aXZlOiExLGNyZWF0b3I6YXBpLnNlbmRlcixsYXN0VGlja1RpbWU6bm93LmdldFRpbWUoKX07bmV3RHRmLmlkPWAke3BheVRva2VufToke3ZvdGVUb2tlbn1gO2NvbnN0IGV4aXN0aW5nRHRmPWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOm5ld0R0Zi5pZH0pO2lmKCFhcGkuYXNzZXJ0KCFleGlzdGluZ0R0ZiwiRFRGIGFscmVhZHkgZXhpc3RzIikpcmV0dXJuO2NvbnN0IGluc2VydGVkRHRmPWF3YWl0IGFwaS5kYi5pbnNlcnQoImZ1bmRzIixuZXdEdGYpO2FwaS5zZW5kZXIhPT1hcGkub3duZXImJiJudWxsIiE9PWFwaS5zZW5kZXImJmFwaS5CaWdOdW1iZXIoZHRmQ3JlYXRpb25GZWUpLmd0KDApJiZhd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyIix7dG86Im51bGwiLHN5bWJvbDoiQkVFIixxdWFudGl0eTpkdGZDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoImNyZWF0ZUZ1bmQiLHtpZDppbnNlcnRlZER0Zi5pZH0pfX0sYWN0aW9ucy51cGRhdGVGdW5kPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtmdW5kSWQ6ZnVuZElkLHZvdGVUaHJlc2hvbGQ6dm90ZVRocmVzaG9sZCxtYXhEYXlzOm1heERheXMsbWF4QW1vdW50UGVyRGF5Om1heEFtb3VudFBlckRheSxwcm9wb3NhbEZlZTpwcm9wb3NhbEZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse2R0ZlVwZGF0ZUZlZTpkdGZVcGRhdGVGZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZFVwZGF0ZT0hKCFhcGkuQmlnTnVtYmVyKGR0ZlVwZGF0ZUZlZSkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8dXRpbGl0eVRva2VuQmFsYW5jZSYmYXBpLkJpZ051bWJlcih1dGlsaXR5VG9rZW5CYWxhbmNlLmJhbGFuY2UpLmd0ZShkdGZVcGRhdGVGZWUpO2lmKGFwaS5hc3NlcnQoYXV0aG9yaXplZFVwZGF0ZSwieW91IG11c3QgaGF2ZSBlbm91Z2ggdG9rZW5zIHRvIGNvdmVyIHRoZSB1cGRhdGUgZmVlIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2Ygdm90ZVRocmVzaG9sZCYmYXBpLkJpZ051bWJlcih2b3RlVGhyZXNob2xkKS5ndCgwKSwiaW52YWxpZCB2b3RlVGhyZXNob2xkOiBncmVhdGVyIHRoYW4gMCIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgbWF4RGF5cyYmYXBpLkJpZ051bWJlcihtYXhEYXlzKS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihtYXhEYXlzKS5ndCgwKSYmYXBpLkJpZ051bWJlcihtYXhEYXlzKS5sdGUoNzMwKSwiaW52YWxpZCBtYXhEYXlzOiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgNzMwIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBtYXhBbW91bnRQZXJEYXkmJmFwaS5CaWdOdW1iZXIobWF4QW1vdW50UGVyRGF5KS5ndCgwKSwiaW52YWxpZCBtYXhBbW91bnRQZXJEYXk6IGdyZWF0ZXIgdGhhbiAwIikpe2lmKHByb3Bvc2FsRmVlKXtpZighYXBpLmFzc2VydCgib2JqZWN0Ij09dHlwZW9mIHByb3Bvc2FsRmVlJiYic3RyaW5nIj09dHlwZW9mIHByb3Bvc2FsRmVlLm1ldGhvZCYmLTEhPT1GZWVNZXRob2QuaW5kZXhPZihwcm9wb3NhbEZlZS5tZXRob2QpJiYic3RyaW5nIj09dHlwZW9mIHByb3Bvc2FsRmVlLnN5bWJvbCYmInN0cmluZyI9PXR5cGVvZiBwcm9wb3NhbEZlZS5hbW91bnQmJmFwaS5CaWdOdW1iZXIocHJvcG9zYWxGZWUuYW1vdW50KS5ndCgwKSwiaW52YWxpZCBwcm9wb3NhbEZlZSIpKXJldHVybjtjb25zdCBmZWVUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpwcm9wb3NhbEZlZS5zeW1ib2x9KTtpZighYXBpLmFzc2VydChmZWVUb2tlbk9iaiYmYXBpLkJpZ051bWJlcihwcm9wb3NhbEZlZS5hbW91bnQpLmRwKCk8PWZlZVRva2VuT2JqLnByZWNpc2lvbiwiaW52YWxpZCBwcm9wb3NhbEZlZSB0b2tlbiBvciBwcmVjaXNpb24iKSlyZXR1cm59Y29uc3QgZXhpc3RpbmdEdGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImZ1bmRzIix7aWQ6ZnVuZElkfSk7aWYoIWFwaS5hc3NlcnQoZXhpc3RpbmdEdGYsIkRURiBub3QgZm91bmQiKXx8IWFwaS5hc3NlcnQoZXhpc3RpbmdEdGYuY3JlYXRvcj09PWFwaS5zZW5kZXJ8fGFwaS5vd25lcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgRFRGIGNyZWF0b3IiKSlyZXR1cm47Y29uc3QgcGF5VG9rZW5PYmo9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdEdGYucGF5VG9rZW59KSx2b3RlVG9rZW5PYmo9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZXhpc3RpbmdEdGYudm90ZVRva2VufSk7aWYoIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihtYXhBbW91bnRQZXJEYXkpLmRwKCk8PXBheVRva2VuT2JqLnByZWNpc2lvbiwibWF4QW1vdW50UGVyRGF5IHByZWNpc2lvbiBtaXNtYXRjaCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHZvdGVUaHJlc2hvbGQpLmRwKCk8PXZvdGVUb2tlbk9iai5wcmVjaXNpb24sInZvdGVUaHJlc2hvbGQgcHJlY2lzaW9uIG1pc21hdGNoIikpcmV0dXJuO2V4aXN0aW5nRHRmLnZvdGVUaHJlc2hvbGQ9dm90ZVRocmVzaG9sZCxleGlzdGluZ0R0Zi5tYXhEYXlzPW1heERheXMsZXhpc3RpbmdEdGYubWF4QW1vdW50UGVyRGF5PW1heEFtb3VudFBlckRheSxwcm9wb3NhbEZlZSYmKGV4aXN0aW5nRHRmLnByb3Bvc2FsRmVlPXByb3Bvc2FsRmVlKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJmdW5kcyIsZXhpc3RpbmdEdGYpLGFwaS5zZW5kZXIhPT1hcGkub3duZXImJiJudWxsIiE9PWFwaS5zZW5kZXImJmFwaS5CaWdOdW1iZXIoZHRmVXBkYXRlRmVlKS5ndCgwKSYmYXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOiJudWxsIixzeW1ib2w6IkJFRSIscXVhbnRpdHk6ZHRmVXBkYXRlRmVlLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9KSxhcGkuZW1pdCgidXBkYXRlRnVuZCIse2lkOmZ1bmRJZH0pfX0sYWN0aW9ucy5zZXREdGZBY3RpdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2Z1bmRJZDpmdW5kSWQsYWN0aXZlOmFjdGl2ZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSlyZXR1cm47Y29uc3QgZHRmPWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOmZ1bmRJZH0pO2FwaS5hc3NlcnQoZHRmLCJEVEYgZG9lcyBub3QgZXhpc3QiKSYmYXBpLmFzc2VydChkdGYuY3JlYXRvcj09PWFwaS5zZW5kZXJ8fGFwaS5vd25lcj09PWFwaS5zZW5kZXIsIm11c3QgYmUgRFRGIGNyZWF0b3IiKSYmKGR0Zi5hY3RpdmU9ISFhY3RpdmUsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiZnVuZHMiLGR0ZiksYXBpLmVtaXQoInNldER0ZkFjdGl2ZSIse2lkOmR0Zi5pZCxhY3RpdmU6ZHRmLmFjdGl2ZX0pKX0sYWN0aW9ucy5jcmVhdGVQcm9wb3NhbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7ZnVuZElkOmZ1bmRJZCx0aXRsZTp0aXRsZSxzdGFydERhdGU6c3RhcnREYXRlLGVuZERhdGU6ZW5kRGF0ZSxhbW91bnRQZXJEYXk6YW1vdW50UGVyRGF5LGF1dGhvclBlcm1saW5rOmF1dGhvclBlcm1saW5rLHBheW91dDpwYXlvdXQsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZCxkdGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImZ1bmRzIix7aWQ6ZnVuZElkfSk7aWYoIWFwaS5hc3NlcnQoZHRmLCJEVEYgZG9lcyBub3QgZXhpc3QiKSlyZXR1cm47bGV0IGF1dGhvcml6ZWRDcmVhdGlvbj0hMDtpZihkdGYucHJvcG9zYWxGZWUpe2NvbnN0IGZlZVRva2VuQmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpkdGYucHJvcG9zYWxGZWUuc3ltYm9sfSk7YXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIoZHRmLnByb3Bvc2FsRmVlLmFtb3VudCkubHRlKDApJiZhcGkuc2VuZGVyIT09YXBpLm93bmVyKXx8ZmVlVG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKGZlZVRva2VuQmFsYW5jZS5iYWxhbmNlKS5ndGUoZHRmLnByb3Bvc2FsRmVlLmFtb3VudCl9aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCEwPT09ZHRmLmFjdGl2ZSwiRFRGIGlzIG5vdCBhY3RpdmUiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHRpdGxlJiZ0aXRsZS5sZW5ndGg+MCYmdGl0bGUubGVuZ3RoPD04MCwiaW52YWxpZCB0aXRsZTogYmV0d2VlbiAxIGFuZCA4MCBjaGFyYWN0ZXJzIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBhdXRob3JQZXJtbGluayYmYXV0aG9yUGVybWxpbmsubGVuZ3RoPjAmJmF1dGhvclBlcm1saW5rLmxlbmd0aDw9MjU1LCJpbnZhbGlkIGF1dGhvclBlcm1saW5rOiBiZXR3ZWVuIDEgYW5kIDI1NSBjaGFyYWN0ZXJzIikmJmFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBhbW91bnRQZXJEYXkmJmFwaS5CaWdOdW1iZXIoYW1vdW50UGVyRGF5KS5pc0ludGVnZXIoKSYmYXBpLkJpZ051bWJlcihhbW91bnRQZXJEYXkpLmd0KDApLCJpbnZhbGlkIGFtb3VudFBlckRheTogZ3JlYXRlciB0aGFuIDAiKSYmYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGFtb3VudFBlckRheSkubHRlKGR0Zi5tYXhBbW91bnRQZXJEYXkpLCJpbnZhbGlkIGFtb3VudFBlckRheTogZXhjZWVkcyBEVEYgbWF4QW1vdW50UGVyRGF5IikmJmFwaS5hc3NlcnQoIm9iamVjdCI9PXR5cGVvZiBwYXlvdXQmJiJzdHJpbmciPT10eXBlb2YgcGF5b3V0LnR5cGUmJi0xIT09UGF5b3V0VHlwZS5pbmRleE9mKHBheW91dC50eXBlKSYmKCJjb250cmFjdCIhPT1wYXlvdXQudHlwZXx8Im9iamVjdCI9PXR5cGVvZiBwYXlvdXQuY29udHJhY3RQYXlsb2FkKSYmInN0cmluZyI9PXR5cGVvZiBwYXlvdXQubmFtZSYmcGF5b3V0Lm5hbWUubGVuZ3RoPj0zJiZwYXlvdXQubmFtZS5sZW5ndGg8PTUwLCJpbnZhbGlkIHBheW91dCBzZXR0aW5ncyIpJiZ2YWxpZGF0ZURhdGVSYW5nZShzdGFydERhdGUsZW5kRGF0ZSxkdGYubWF4RGF5cykpe2NvbnN0IG5ld1Byb3Bvc2FsPXtmdW5kSWQ6ZnVuZElkLHRpdGxlOnRpdGxlLHN0YXJ0RGF0ZTpzdGFydERhdGUsZW5kRGF0ZTplbmREYXRlLGFtb3VudFBlckRheTphbW91bnRQZXJEYXksYXV0aG9yUGVybWxpbms6YXV0aG9yUGVybWxpbmsscGF5b3V0OnBheW91dCxjcmVhdG9yOmFwaS5zZW5kZXIsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn0sYWN0aXZlOiEwfSxpbnNlcnRlZFByb3Bvc2FsPWF3YWl0IGFwaS5kYi5pbnNlcnQoInByb3Bvc2FscyIsbmV3UHJvcG9zYWwpO2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXImJmR0Zi5wcm9wb3NhbEZlZSlpZigiYnVybiI9PT1kdGYucHJvcG9zYWxGZWUubWV0aG9kKWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOmR0Zi5wcm9wb3NhbEZlZS5zeW1ib2wscXVhbnRpdHk6ZHRmLnByb3Bvc2FsRmVlLmFtb3VudH0pO2Vsc2UgaWYoImlzc3VlciI9PT1kdGYucHJvcG9zYWxGZWUubWV0aG9kKXtjb25zdCBmZWVUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpkdGYucHJvcG9zYWxGZWUuc3ltYm9sfSk7YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlciIse3RvOmZlZVRva2VuT2JqLmlzc3VlcixzeW1ib2w6ZHRmLnByb3Bvc2FsRmVlLnN5bWJvbCxxdWFudGl0eTpkdGYucHJvcG9zYWxGZWUuYW1vdW50fSl9YXBpLmVtaXQoImNyZWF0ZVByb3Bvc2FsIix7aWQ6aW5zZXJ0ZWRQcm9wb3NhbC5faWR9KX19LGFjdGlvbnMudXBkYXRlUHJvcG9zYWw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkLHRpdGxlOnRpdGxlLGVuZERhdGU6ZW5kRGF0ZSxhbW91bnRQZXJEYXk6YW1vdW50UGVyRGF5LGF1dGhvclBlcm1saW5rOmF1dGhvclBlcm1saW5rLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoIWFwaS5hc3NlcnQoInN0cmluZyI9PXR5cGVvZiBpZCYmYXBpLkJpZ051bWJlcihpZCkuaXNJbnRlZ2VyKCksImludmFsaWQgaWQiKSlyZXR1cm47Y29uc3QgcHJvcG9zYWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInByb3Bvc2FscyIse19pZDphcGkuQmlnTnVtYmVyKGlkKS50b051bWJlcigpfSk7aWYoIWFwaS5hc3NlcnQocHJvcG9zYWwsInByb3Bvc2FsIGRvZXMgbm90IGV4aXN0Iil8fCFhcGkuYXNzZXJ0KHByb3Bvc2FsLmNyZWF0b3I9PT1hcGkuc2VuZGVyfHxhcGkub3duZXI9PT1hcGkuc2VuZGVyLCJtdXN0IGJlIHByb3Bvc2FsIGNyZWF0b3IiKSlyZXR1cm47Y29uc3QgZHRmPWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOnByb3Bvc2FsLmZ1bmRJZCxhY3RpdmU6ITB9KTthcGkuYXNzZXJ0KGR0ZiwiRFRGIGRvZXMgbm90IGV4aXN0IG9yIGluYWN0aXZlIikmJmFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCEwPT09ZHRmLmFjdGl2ZSwiRFRGIGlzIG5vdCBhY3RpdmUiKSYmYXBpLmFzc2VydCghMD09PXByb3Bvc2FsLmFjdGl2ZSwicHJvcG9zYWwgaXMgbm90IGFjdGl2ZSIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgdGl0bGUmJnRpdGxlLmxlbmd0aD4wJiZ0aXRsZS5sZW5ndGg8PTgwLCJpbnZhbGlkIHRpdGxlOiBiZXR3ZWVuIDEgYW5kIDgwIGNoYXJhY3RlcnMiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGF1dGhvclBlcm1saW5rJiZhdXRob3JQZXJtbGluay5sZW5ndGg+MCYmYXV0aG9yUGVybWxpbmsubGVuZ3RoPD0yNTUsImludmFsaWQgYXV0aG9yUGVybWxpbms6IGJldHdlZW4gMSBhbmQgMjU1IGNoYXJhY3RlcnMiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGFtb3VudFBlckRheSYmYXBpLkJpZ051bWJlcihhbW91bnRQZXJEYXkpLmlzSW50ZWdlcigpJiZhcGkuQmlnTnVtYmVyKGFtb3VudFBlckRheSkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIoYW1vdW50UGVyRGF5KS5sdGUocHJvcG9zYWwuYW1vdW50UGVyRGF5KSwiaW52YWxpZCBhbW91bnRQZXJEYXk6IGdyZWF0ZXIgdGhhbiAwIGFuZCBjYW5ub3QgYmUgaW5jcmVhc2VkIikmJmFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhbW91bnRQZXJEYXkpLmx0ZShkdGYubWF4QW1vdW50UGVyRGF5KSwiaW52YWxpZCBhbW91bnRQZXJEYXk6IGV4Y2VlZHMgRFRGIG1heEFtb3VudFBlckRheSIpJiZ2YWxpZGF0ZURhdGVDaGFuZ2UocHJvcG9zYWwsZW5kRGF0ZSxkdGYubWF4RGF5cykmJihwcm9wb3NhbC50aXRsZT10aXRsZSxwcm9wb3NhbC5lbmREYXRlPWVuZERhdGUscHJvcG9zYWwuYW1vdW50UGVyRGF5PWFtb3VudFBlckRheSxwcm9wb3NhbC5hdXRob3JQZXJtbGluaz1hdXRob3JQZXJtbGluayxhd2FpdCBhcGkuZGIudXBkYXRlKCJwcm9wb3NhbHMiLHByb3Bvc2FsKSxhcGkuZW1pdCgidXBkYXRlUHJvcG9zYWwiLHtpZDpwcm9wb3NhbC5faWR9KSl9LGFjdGlvbnMuZGlzYWJsZVByb3Bvc2FsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpZDppZCxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgaWQmJmFwaS5CaWdOdW1iZXIoaWQpLmlzSW50ZWdlcigpLCJpbnZhbGlkIGlkIikpcmV0dXJuO2NvbnN0IHByb3Bvc2FsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwcm9wb3NhbHMiLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2FwaS5hc3NlcnQocHJvcG9zYWwsInByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoITA9PT1wcm9wb3NhbC5hY3RpdmUsInByb3Bvc2FsIGFscmVhZHkgZGlzYWJsZWQiKSYmYXBpLmFzc2VydChwcm9wb3NhbC5jcmVhdG9yPT09YXBpLnNlbmRlcnx8YXBpLm93bmVyPT09YXBpLnNlbmRlciwibXVzdCBiZSBwcm9wb3NhbCBjcmVhdG9yIikmJihwcm9wb3NhbC5hY3RpdmU9ITEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicHJvcG9zYWxzIixwcm9wb3NhbCksYXBpLmVtaXQoImRpc2FibGVQcm9wb3NhbCIse2lkOnByb3Bvc2FsLl9pZH0pKX0sYWN0aW9ucy5hcHByb3ZlUHJvcG9zYWw9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2lkOmlkfT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYoYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIGlkJiZhcGkuQmlnTnVtYmVyKGlkKS5pc0ludGVnZXIoKSwiaW52YWxpZCBpZCIpKXtjb25zdCBwcm9wb3NhbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicHJvcG9zYWxzIix7X2lkOmFwaS5CaWdOdW1iZXIoaWQpLnRvTnVtYmVyKCl9KTtpZihhcGkuYXNzZXJ0KHByb3Bvc2FsLCJwcm9wb3NhbCBkb2VzIG5vdCBleGlzdCIpJiZhcGkuYXNzZXJ0KHZhbGlkYXRlUGVuZGluZyhwcm9wb3NhbCksInByb3Bvc2FsIGlzIG5vdCBwZW5kaW5nIikpe2NvbnN0IGR0Zj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiZnVuZHMiLHtpZDpwcm9wb3NhbC5mdW5kSWR9KSx2b3RlVG9rZW5PYmo9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6ZHRmLnZvdGVUb2tlbn0pO2xldCBhY2N0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO251bGw9PT1hY2N0JiYoYWNjdD17YWNjb3VudDphcGkuc2VuZGVyLHdlaWdodHM6W119LGFjY3Q9YXdhaXQgYXBpLmRiLmluc2VydCgiYWNjb3VudHMiLGFjY3QpKTtsZXQgYWN0aXZlQXBwcm92YWxzPTA7Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIscHJvcG9zYWxQZW5kaW5nOiEwfSxwYXJhbXMubWF4QWNjb3VudEFwcHJvdmFscywwLFt7aW5kZXg6Il9pZCIsZGVzY2VuZGluZzohMH1dKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8YXBwcm92YWxzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3QgYXBwcm92YWw9YXBwcm92YWxzW2luZGV4XSxhcHByb3ZhbFByb3Bvc2FsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwcm9wb3NhbHMiLHtfaWQ6YXBwcm92YWwudG99KTthcHByb3ZhbFByb3Bvc2FsJiZ2YWxpZGF0ZVBlbmRpbmcoYXBwcm92YWxQcm9wb3NhbCk/YWN0aXZlQXBwcm92YWxzKz0xOihhcHByb3ZhbC5wcm9wb3NhbFBlbmRpbmc9ITEsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYXBwcm92YWxzIixhcHByb3ZhbCkpfWlmKCFhcGkuYXNzZXJ0KGFjdGl2ZUFwcHJvdmFsczxwYXJhbXMubWF4QWNjb3VudEFwcHJvdmFscyxgeW91IGNhbiBvbmx5IGFwcHJvdmUgJHtwYXJhbXMubWF4QWNjb3VudEFwcHJvdmFsc30gYWN0aXZlIHByb3Bvc2Fsc2ApKXJldHVybjtsZXQgYXBwcm92YWw9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFwcHJvdmFscyIse2Zyb206YXBpLnNlbmRlcix0bzpwcm9wb3NhbC5faWR9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1hcHByb3ZhbCwieW91IGFscmVhZHkgYXBwcm92ZWQgdGhpcyBwcm9wb3NhbCIpKXthcHByb3ZhbD17ZnJvbTphcGkuc2VuZGVyLHRvOnByb3Bvc2FsLl9pZCxwcm9wb3NhbFBlbmRpbmc6ITB9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFwcHJvdmFscyIsYXBwcm92YWwpO2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6ZHRmLnZvdGVUb2tlbn0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZCh2b3RlVG9rZW5PYmoucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCkpO2NvbnN0IHdJbmRleD1hY2N0LndlaWdodHMuZmluZEluZGV4KHg9Pnguc3ltYm9sPT09ZHRmLnZvdGVUb2tlbik7LTEhPT13SW5kZXg/YWNjdC53ZWlnaHRzW3dJbmRleF0ud2VpZ2h0PWFwcHJvdmFsV2VpZ2h0OmFjY3Qud2VpZ2h0cy5wdXNoKHtzeW1ib2w6ZHRmLnZvdGVUb2tlbix3ZWlnaHQ6YXBwcm92YWxXZWlnaHR9KSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlUHJvcG9zYWxXZWlnaHQocHJvcG9zYWwuX2lkLGFwcHJvdmFsV2VpZ2h0KSxhcGkuZW1pdCgiYXBwcm92ZVByb3Bvc2FsIix7aWQ6cHJvcG9zYWwuX2lkfSl9fX19LGFjdGlvbnMuZGlzYXBwcm92ZVByb3Bvc2FsPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtpZDppZH09cGF5bG9hZDtpZihhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgaWQmJmFwaS5CaWdOdW1iZXIoaWQpLmlzSW50ZWdlcigpLCJpbnZhbGlkIGlkIikpe2NvbnN0IHByb3Bvc2FsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwcm9wb3NhbHMiLHtfaWQ6YXBpLkJpZ051bWJlcihpZCkudG9OdW1iZXIoKX0pO2lmKGFwaS5hc3NlcnQocHJvcG9zYWwsInByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQodmFsaWRhdGVQZW5kaW5nKHByb3Bvc2FsKSwicHJvcG9zYWwgaXMgbm90IHBlbmRpbmciKSl7Y29uc3QgZHRmPWF3YWl0IGFwaS5kYi5maW5kT25lKCJmdW5kcyIse2lkOnByb3Bvc2FsLmZ1bmRJZH0pLHZvdGVUb2tlbk9iaj1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsInRva2VucyIse3N5bWJvbDpkdGYudm90ZVRva2VufSk7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7bnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsd2VpZ2h0czpbXX0sYWNjdD1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYWNjdCkpO2NvbnN0IGFwcHJvdmFsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsdG86cHJvcG9zYWwuX2lkfSk7aWYoYXBpLmFzc2VydChudWxsIT09YXBwcm92YWwsInlvdSBoYXZlIG5vdCBhcHByb3ZlZCB0aGlzIHByb3Bvc2FsIikpe2F3YWl0IGFwaS5kYi5yZW1vdmUoImFwcHJvdmFscyIsYXBwcm92YWwpO2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6ZHRmLnZvdGVUb2tlbn0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZCh2b3RlVG9rZW5PYmoucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCkpO2NvbnN0IHdJbmRleD1hY2N0LndlaWdodHMuZmluZEluZGV4KHg9Pnguc3ltYm9sPT09ZHRmLnZvdGVUb2tlbik7LTEhPT13SW5kZXg/YWNjdC53ZWlnaHRzW3dJbmRleF0ud2VpZ2h0PWFwcHJvdmFsV2VpZ2h0OmFjY3Qud2VpZ2h0cy5wdXNoKHtzeW1ib2w6ZHRmLnZvdGVUb2tlbix3ZWlnaHQ6YXBwcm92YWxXZWlnaHR9KSxhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlUHJvcG9zYWxXZWlnaHQocHJvcG9zYWwuX2lkLGFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpLm5lZ2F0ZWQoKSksYXBpLmVtaXQoImRpc2FwcHJvdmVQcm9wb3NhbCIse2lkOnByb3Bvc2FsLl9pZH0pfX19fSxhY3Rpb25zLnVwZGF0ZVByb3Bvc2FsQXBwcm92YWxzPWFzeW5jIHBheWxvYWQ9Pntjb25zdHthY2NvdW50OmFjY291bnQsdG9rZW46dG9rZW4sY2FsbGluZ0NvbnRyYWN0SW5mbzpjYWxsaW5nQ29udHJhY3RJbmZvfT1wYXlsb2FkO2lmKHZvaWQgMD09PWNhbGxpbmdDb250cmFjdEluZm8pcmV0dXJuO2lmKCJ0b2tlbnMiIT09Y2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lKXJldHVybjtjb25zdCBhY2N0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YWNjb3VudH0pO2lmKG51bGwhPT1hY2N0KXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHdJbmRleD1hY2N0LndlaWdodHMuZmluZEluZGV4KHg9Pnguc3ltYm9sPT09dG9rZW4uc3ltYm9sKTtpZigtMSE9PXdJbmRleCl7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphY2NvdW50LHN5bWJvbDp0b2tlbi5zeW1ib2x9KTtsZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCkpO2xldCBvbGRBcHByb3ZhbFdlaWdodD0wO29sZEFwcHJvdmFsV2VpZ2h0PWFjY3Qud2VpZ2h0c1t3SW5kZXhdLndlaWdodCxhY2N0LndlaWdodHNbd0luZGV4XS53ZWlnaHQ9YXBwcm92YWxXZWlnaHQ7Y29uc3QgZGVsdGFBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5taW51cyhvbGRBcHByb3ZhbFdlaWdodCkuZHAodG9rZW4ucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCk7aWYoIWFwaS5CaWdOdW1iZXIoZGVsdGFBcHByb3ZhbFdlaWdodCkuZXEoMCkpe2F3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixhY2N0KTtjb25zdCBhcHByb3ZhbHM9YXdhaXQgYXBpLmRiLmZpbmQoImFwcHJvdmFscyIse2Zyb206YWNjb3VudCxwcm9wb3NhbFBlbmRpbmc6ITB9LHBhcmFtcy5tYXhBY2NvdW50QXBwcm92YWxzLDAsW3tpbmRleDoiX2lkIixkZXNjZW5kaW5nOiEwfV0pO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxhcHByb3ZhbHMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBhcHByb3ZhbD1hcHByb3ZhbHNbaW5kZXhdO2F3YWl0IHVwZGF0ZVByb3Bvc2FsV2VpZ2h0KGFwcHJvdmFsLnRvLGRlbHRhQXBwcm92YWxXZWlnaHQsdG9rZW4pfHwoYXBwcm92YWwucHJvcG9zYWxQZW5kaW5nPSExLGF3YWl0IGFwaS5kYi51cGRhdGUoImFwcHJvdmFscyIsYXBwcm92YWwpKX19fX19LGFjdGlvbnMuY2hlY2tQZW5kaW5nRHRmcz1hc3luYygpPT57aWYoYXBpLmFzc2VydCgibnVsbCI9PT1hcGkuc2VuZGVyLCJub3QgYXV0aG9yaXplZCIpKXtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLGJsb2NrRGF0ZT1uZXcgRGF0ZShhcGkuaGl2ZUJsb2NrVGltZXN0YW1wKyIuMDAwWiIpLHRpY2tUaW1lPWFwaS5CaWdOdW1iZXIoYmxvY2tEYXRlLmdldFRpbWUoKSkubWludXMoMzYwMCpwYXJhbXMuZHRmVGlja0hvdXJzKjFlMykudG9OdW1iZXIoKSxwZW5kaW5nRHRmcz1hd2FpdCBhcGkuZGIuZmluZCgiZnVuZHMiLHthY3RpdmU6ITAsbGFzdFRpY2tUaW1lOnskbHRlOnRpY2tUaW1lfX0scGFyYW1zLm1heER0ZnNQZXJCbG9jaywwLFt7aW5kZXg6Imxhc3RUaWNrVGltZSIsZGVzY2VuZGluZzohMX0se2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSk7Zm9yKGxldCBpPTA7aTxwZW5kaW5nRHRmcy5sZW5ndGg7aSs9MSlhd2FpdCBjaGVja1BlbmRpbmdQcm9wb3NhbHMocGVuZGluZ0R0ZnNbaV0scGFyYW1zKX19Ow=="}}}

H2
H3
H4
3 columns
2 columns
1 column
2 Comments
Ecency