{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"deploy","contractPayload":{"name":"marketpools","params":"","code":"Y29uc3QgVHJhZGVUeXBlPVsiZXhhY3RJbnB1dCIsImV4YWN0T3V0cHV0Il07ZnVuY3Rpb24gZ2V0QW1vdW50SW4oYW1vdW50T3V0LGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCl7aWYoIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhbW91bnRPdXQpLmd0KDApLCJpbnN1ZmZpY2llbnQgb3V0cHV0IGFtb3VudCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS5ndCgwKSYmYXBpLkJpZ051bWJlcihsaXF1aWRpdHlPdXQpLmd0KDApJiZhcGkuQmlnTnVtYmVyKGFtb3VudE91dCkubHQobGlxdWlkaXR5T3V0KSwiaW5zdWZmaWNpZW50IGxpcXVpZGl0eSIpKXJldHVybiExO2NvbnN0IG51bT1hcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS50aW1lcyhhbW91bnRPdXQpLGRlbj1hcGkuQmlnTnVtYmVyKGxpcXVpZGl0eU91dCkubWludXMoYW1vdW50T3V0KTtyZXR1cm4gbnVtLmRpdmlkZWRCeShkZW4pfWZ1bmN0aW9uIGdldEFtb3VudE91dChhbW91bnRJbixsaXF1aWRpdHlJbixsaXF1aWRpdHlPdXQpe2lmKCFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYW1vdW50SW4pLmd0KDApLCJpbnN1ZmZpY2llbnQgb3V0cHV0IGFtb3VudCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGxpcXVpZGl0eUluKS5ndCgwKSYmYXBpLkJpZ051bWJlcihsaXF1aWRpdHlPdXQpLmd0KDApLCJpbnN1ZmZpY2llbnQgbGlxdWlkaXR5IikpcmV0dXJuITE7Y29uc3QgbnVtPWFwaS5CaWdOdW1iZXIoYW1vdW50SW4pLnRpbWVzKGxpcXVpZGl0eU91dCksZGVuPWFwaS5CaWdOdW1iZXIobGlxdWlkaXR5SW4pLnBsdXMoYW1vdW50SW4pLGFtb3VudE91dD1udW0uZGl2aWRlZEJ5KGRlbik7cmV0dXJuISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoYW1vdW50T3V0KS5sdChsaXF1aWRpdHlPdXQpLCJpbnN1ZmZpY2llbnQgbGlxdWlkaXR5IikmJmFtb3VudE91dH1hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZU9yYWNsZShwb29sLG5ld1ByaWNlLG1heERldmlhdGlvbj1hcGkuQmlnTnVtYmVyKCIwLjAxIikpe2NvbnN0W2Jhc2VTeW1ib2wscXVvdGVTeW1ib2xdPXBvb2wudG9rZW5QYWlyLnNwbGl0KCI6IiksYmFzZU1ldHJpY3M9IlNXQVAuSElWRSIhPT1iYXNlU3ltYm9sP2F3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgibWFya2V0IiwibWV0cmljcyIse3N5bWJvbDpiYXNlU3ltYm9sfSk6e2xhc3RQcmljZToxfSxxdW90ZU1ldHJpY3M9IlNXQVAuSElWRSIhPT1xdW90ZVN5bWJvbD9hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoIm1hcmtldCIsIm1ldHJpY3MiLHtzeW1ib2w6cXVvdGVTeW1ib2x9KTp7bGFzdFByaWNlOjF9O2lmKCFiYXNlTWV0cmljc3x8IXF1b3RlTWV0cmljcylyZXR1cm4gbnVsbDtjb25zdCBvcmFjbGU9YXBpLkJpZ051bWJlcihiYXNlTWV0cmljcy5sYXN0UHJpY2UpLmRpdmlkZWRCeShxdW90ZU1ldHJpY3MubGFzdFByaWNlKSxkZXY9YXBpLkJpZ051bWJlcihuZXdQcmljZSkubWludXMob3JhY2xlKS5hYnMoKS5kaXZpZGVkQnkob3JhY2xlKTtyZXR1cm4hIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihkZXYpLmx0ZShtYXhEZXZpYXRpb24pLCJleGNlZWRlZCBtYXggZGV2aWF0aW9uIGZyb20gb3JkZXIgYm9vayIpfWZ1bmN0aW9uIHZhbGlkYXRlTGlxdWlkaXR5U3dhcChwb29sLGJhc2VEZWx0YSxxdW90ZURlbHRhKXtjb25zdCBwPWFwaS5CaWdOdW1iZXIocG9vbC5xdW90ZVF1YW50aXR5KS5kaXZpZGVkQnkocG9vbC5iYXNlUXVhbnRpdHkpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKTtyZXR1cm4hIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhcGkuQmlnTnVtYmVyKHF1b3RlRGVsdGEpLmRpdmlkZWRCeShiYXNlRGVsdGEpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSkuZXEocCksYGNvbnN0YW50IHByaWNlICR7YXBpLkJpZ051bWJlcihxdW90ZURlbHRhKS5kaXZpZGVkQnkoYmFzZURlbHRhKX0sIGV4cGVjdGVkICR7cH1gKX1mdW5jdGlvbiB2YWxpZGF0ZVN3YXAocG9vbCxiYXNlRGVsdGEscXVvdGVEZWx0YSxtYXhTbGlwcGFnZSl7Y29uc3Qgaz1hcGkuQmlnTnVtYmVyKHBvb2wuYmFzZVF1YW50aXR5KS50aW1lcyhwb29sLnF1b3RlUXVhbnRpdHkpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9IQUxGX1VQKSxiYXNlQWRqdXN0ZWQ9YXBpLkJpZ051bWJlcihwb29sLmJhc2VRdWFudGl0eSkucGx1cyhiYXNlRGVsdGEpLHF1b3RlQWRqdXN0ZWQ9YXBpLkJpZ051bWJlcihwb29sLnF1b3RlUXVhbnRpdHkpLnBsdXMocXVvdGVEZWx0YSkscD1hcGkuQmlnTnVtYmVyKHBvb2wucXVvdGVRdWFudGl0eSkuZGl2aWRlZEJ5KHBvb2wuYmFzZVF1YW50aXR5KS50b0ZpeGVkKHBvb2wucHJlY2lzaW9uLGFwaS5CaWdOdW1iZXIuUk9VTkRfSEFMRl9VUCkscEFkanVzdGVkPWFwaS5CaWdOdW1iZXIocXVvdGVBZGp1c3RlZCkuZGl2aWRlZEJ5KGJhc2VBZGp1c3RlZCkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApLHNsaXBwYWdlPWFwaS5CaWdOdW1iZXIocEFkanVzdGVkKS5taW51cyhwKS5hYnMoKS5kaXZpZGVkQnkocCk7cmV0dXJuISFhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIoc2xpcHBhZ2UpLmx0ZShtYXhTbGlwcGFnZSksImV4Y2VlZGVkIG1heCBzbGlwcGFnZSBmb3Igc3dhcCIpJiYhIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcihhcGkuQmlnTnVtYmVyKGJhc2VBZGp1c3RlZCkudGltZXMocXVvdGVBZGp1c3RlZCkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApKS5lcShrKSxgY29uc3RhbnQgcHJvZHVjdCAke2FwaS5CaWdOdW1iZXIoYmFzZUFkanVzdGVkKS50aW1lcyhxdW90ZUFkanVzdGVkKX0sIGV4cGVjdGVkICR7a31gKX1hc3luYyBmdW5jdGlvbiB2YWxpZGF0ZVRva2VuUGFpcih0b2tlblBhaXIpe2lmKCFhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgdG9rZW5QYWlyJiYtMSE9PXRva2VuUGFpci5pbmRleE9mKCI6IiksImludmFsaWQgdG9rZW5QYWlyIGZvcm1hdCIpKXJldHVybiExO2NvbnN0W2Jhc2VTeW1ib2wscXVvdGVTeW1ib2xdPXRva2VuUGFpci5zcGxpdCgiOiIpO3JldHVybiEhKGFwaS5hc3NlcnQoYmFzZVN5bWJvbCE9PXF1b3RlU3ltYm9sLCJ0b2tlblBhaXIgY2Fubm90IGJlIHRoZSBzYW1lIHRva2VuIikmJmFwaS5hc3NlcnQoYXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6YmFzZVN5bWJvbH0pLCJiYXNlU3ltYm9sIGRvZXMgbm90IGV4aXN0IikmJmFwaS5hc3NlcnQoYXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cXVvdGVTeW1ib2x9KSwicXVvdGVTeW1ib2wgZG9lcyBub3QgZXhpc3QiKSl9YXN5bmMgZnVuY3Rpb24gdmFsaWRhdGVQb29sKHRva2VuUGFpcil7Y29uc3RbYmFzZVN5bWJvbCxxdW90ZVN5bWJvbF09dG9rZW5QYWlyLnNwbGl0KCI6IikscG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHt0b2tlblBhaXI6dG9rZW5QYWlyfSkscmV2UG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHt0b2tlblBhaXI6W3F1b3RlU3ltYm9sLGJhc2VTeW1ib2xdLmpvaW4oIjoiKX0pO3JldHVybiEhYXBpLmFzc2VydChudWxsPT09cG9vbCYmbnVsbD09PXJldlBvb2wsImEgcG9vbCBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyB0b2tlblBhaXIiKX1hc3luYyBmdW5jdGlvbiB1cGRhdGVQb29sU3RhdHMocG9vbCxiYXNlQWRqdXN0ZWQscXVvdGVBZGp1c3RlZCxzd2FwPSEwKXtjb25zdCB1UG9vbD1wb29sO3VQb29sLmJhc2VRdWFudGl0eT1hcGkuQmlnTnVtYmVyKHBvb2wuYmFzZVF1YW50aXR5KS5wbHVzKGJhc2VBZGp1c3RlZCkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApLHVQb29sLnF1b3RlUXVhbnRpdHk9YXBpLkJpZ051bWJlcihwb29sLnF1b3RlUXVhbnRpdHkpLnBsdXMocXVvdGVBZGp1c3RlZCkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0hBTEZfVVApLGFwaS5CaWdOdW1iZXIodVBvb2wuYmFzZVF1YW50aXR5KS5ndCgwKSYmYXBpLkJpZ051bWJlcih1UG9vbC5xdW90ZVF1YW50aXR5KS5ndCgwKSYmKHVQb29sLmJhc2VQcmljZT1hcGkuQmlnTnVtYmVyKHVQb29sLnF1b3RlUXVhbnRpdHkpLmRpdmlkZWRCeSh1UG9vbC5iYXNlUXVhbnRpdHkpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSx1UG9vbC5xdW90ZVByaWNlPWFwaS5CaWdOdW1iZXIodVBvb2wuYmFzZVF1YW50aXR5KS5kaXZpZGVkQnkodVBvb2wucXVvdGVRdWFudGl0eSkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSxzd2FwJiYodVBvb2wuYmFzZVZvbHVtZT1hcGkuQmlnTnVtYmVyKHVQb29sLmJhc2VWb2x1bWUpLnBsdXMoTWF0aC5hYnMoYmFzZUFkanVzdGVkKSkudG9GaXhlZChwb29sLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLHVQb29sLnF1b3RlVm9sdW1lPWFwaS5CaWdOdW1iZXIodVBvb2wucXVvdGVWb2x1bWUpLnBsdXMoTWF0aC5hYnMocXVvdGVBZGp1c3RlZCkpLnRvRml4ZWQocG9vbC5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicG9vbHMiLHVQb29sKX1hY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57aWYoITE9PT1hd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoInBvb2xzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgicG9vbHMiLFsidG9rZW5QYWlyIl0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgibGlxdWlkaXR5UG9zaXRpb25zIixbImFjY291bnQiLCJ0b2tlblBhaXIiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJwYXJhbXMiKTtjb25zdCBwYXJhbXM9e3Bvb2xDcmVhdGlvbkZlZToiMTAwMCJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBhcmFtcyIscGFyYW1zKX19LGFjdGlvbnMudXBkYXRlUGFyYW1zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHtwb29sQ3JlYXRpb25GZWU6cG9vbENyZWF0aW9uRmVlfT1wYXlsb2FkO2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7aWYocG9vbENyZWF0aW9uRmVlKXtpZighYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHBvb2xDcmVhdGlvbkZlZSYmIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5pc05hTigpJiZhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuZ3RlKDApLCJpbnZhbGlkIHBvb2xDcmVhdGlvbkZlZSIpKXJldHVybjtwYXJhbXMucG9vbENyZWF0aW9uRmVlPXBvb2xDcmVhdGlvbkZlZX1hd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyl9LGFjdGlvbnMuY3JlYXRlUG9vbD1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG9rZW5QYWlyOnRva2VuUGFpcixpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkLHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSkse3Bvb2xDcmVhdGlvbkZlZTpwb29sQ3JlYXRpb25GZWV9PXBhcmFtcyx1dGlsaXR5VG9rZW5CYWxhbmNlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOiJCRUUifSksYXV0aG9yaXplZENyZWF0aW9uPSEoIWFwaS5CaWdOdW1iZXIocG9vbENyZWF0aW9uRmVlKS5sdGUoMCkmJmFwaS5zZW5kZXIhPT1hcGkub3duZXIpfHx1dGlsaXR5VG9rZW5CYWxhbmNlJiZhcGkuQmlnTnVtYmVyKHV0aWxpdHlUb2tlbkJhbGFuY2UuYmFsYW5jZSkuZ3RlKHBvb2xDcmVhdGlvbkZlZSk7aWYoYXBpLmFzc2VydChhdXRob3JpemVkQ3JlYXRpb24sInlvdSBtdXN0IGhhdmUgZW5vdWdoIHRva2VucyB0byBjb3ZlciB0aGUgY3JlYXRpb24gZmVlIikmJmF3YWl0IHZhbGlkYXRlVG9rZW5QYWlyKHRva2VuUGFpcikmJmF3YWl0IHZhbGlkYXRlUG9vbCh0b2tlblBhaXIpJiZhcGkuYXNzZXJ0KCEwPT09aXNTaWduZWRXaXRoQWN0aXZlS2V5LCJ5b3UgbXVzdCB1c2UgYSB0cmFuc2FjdGlvbiBzaWduZWQgd2l0aCB5b3VyIGFjdGl2ZSBrZXkiKSl7Y29uc3RbYmFzZVN5bWJvbCxxdW90ZVN5bWJvbF09dG9rZW5QYWlyLnNwbGl0KCI6IiksYmFzZVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOmJhc2VTeW1ib2x9KSxxdW90ZVRva2VuPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnF1b3RlU3ltYm9sfSksbmV3UG9vbD17dG9rZW5QYWlyOnRva2VuUGFpcixiYXNlUXVhbnRpdHk6MCxiYXNlVm9sdW1lOjAsYmFzZVByaWNlOjAscXVvdGVRdWFudGl0eTowLHF1b3RlVm9sdW1lOjAscXVvdGVQcmljZTowLHByZWNpc2lvbjpNYXRoLm1heChiYXNlVG9rZW4ucHJlY2lzaW9uLHF1b3RlVG9rZW4ucHJlY2lzaW9uKSxjcmVhdG9yOmFwaS5zZW5kZXJ9O2F3YWl0IGFwaS5kYi5pbnNlcnQoInBvb2xzIixuZXdQb29sKSxhcGkuc2VuZGVyIT09YXBpLm93bmVyJiZhcGkuQmlnTnVtYmVyKHBvb2xDcmVhdGlvbkZlZSkuZ3QoMCkmJmF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXIiLHt0bzoibnVsbCIsc3ltYm9sOiJCRUUiLHF1YW50aXR5OnBvb2xDcmVhdGlvbkZlZSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fSksYXBpLmVtaXQoImNyZWF0ZVBvb2wiLHt0b2tlblBhaXI6dG9rZW5QYWlyfSl9fSxhY3Rpb25zLmFkZExpcXVpZGl0eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG9rZW5QYWlyOnRva2VuUGFpcixiYXNlUXVhbnRpdHk6YmFzZVF1YW50aXR5LHF1b3RlUXVhbnRpdHk6cXVvdGVRdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCEoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoYmFzZVF1YW50aXR5JiZhcGkuQmlnTnVtYmVyKGJhc2VRdWFudGl0eSkuZ3QoMCksImludmFsaWQgYmFzZVF1YW50aXR5IikmJmFwaS5hc3NlcnQocXVvdGVRdWFudGl0eSYmYXBpLkJpZ051bWJlcihxdW90ZVF1YW50aXR5KS5ndCgwKSwiaW52YWxpZCBxdW90ZVF1YW50aXR5IikmJmF3YWl0IHZhbGlkYXRlVG9rZW5QYWlyKHRva2VuUGFpcikpKXJldHVybjtjb25zdFtiYXNlU3ltYm9sLHF1b3RlU3ltYm9sXT10b2tlblBhaXIuc3BsaXQoIjoiKSxiYXNlVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6YmFzZVN5bWJvbH0pLHF1b3RlVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cXVvdGVTeW1ib2x9KTtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhc2VRdWFudGl0eSkuZHAoKTw9YmFzZVRva2VuLnByZWNpc2lvbiwiYmFzZVF1YW50aXR5IHByZWNpc2lvbiBtaXNtYXRjaCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1b3RlUXVhbnRpdHkpLmRwKCk8PXF1b3RlVG9rZW4ucHJlY2lzaW9uLCJxdW90ZVF1YW50aXR5IHByZWNpc2lvbiBtaXNtYXRjaCIpKXJldHVybjtjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse3Rva2VuUGFpcjp0b2tlblBhaXJ9KTtpZihhcGkuYXNzZXJ0KHBvb2wsIm5vIGV4aXN0aW5nIHBvb2wgZm9yIHRva2VuUGFpciIpKXtpZihhcGkuQmlnTnVtYmVyKHBvb2wuYmFzZVF1YW50aXR5KS5lcSgwKSYmYXBpLkJpZ051bWJlcihwb29sLnF1b3RlUXVhbnRpdHkpLmVxKDApJiYhMT09PWF3YWl0IHZhbGlkYXRlT3JhY2xlKHBvb2wsYXBpLkJpZ051bWJlcihxdW90ZVF1YW50aXR5KS5kaXZpZGVkQnkoYmFzZVF1YW50aXR5KSkpcmV0dXJuO2lmKGFwaS5CaWdOdW1iZXIocG9vbC5iYXNlUXVhbnRpdHkpLmd0KDApJiZhcGkuQmlnTnVtYmVyKHBvb2wucXVvdGVRdWFudGl0eSkuZ3QoMCkmJiF2YWxpZGF0ZUxpcXVpZGl0eVN3YXAocG9vbCxiYXNlUXVhbnRpdHkscXVvdGVRdWFudGl0eSkpcmV0dXJuO2NvbnN0IHNlbmRlckJhc2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6YmFzZVN5bWJvbH0pLHNlbmRlclF1b3RlPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmFwaS5zZW5kZXIsc3ltYm9sOnF1b3RlU3ltYm9sfSksc2VuZGVyRnVuZGVkPXNlbmRlckJhc2UmJnNlbmRlclF1b3RlJiZhcGkuQmlnTnVtYmVyKHNlbmRlckJhc2UuYmFsYW5jZSkuZ3RlKGJhc2VRdWFudGl0eSkmJmFwaS5CaWdOdW1iZXIoc2VuZGVyUXVvdGUuYmFsYW5jZSkuZ3RlKHF1b3RlUXVhbnRpdHkpO2lmKCFhcGkuYXNzZXJ0KHNlbmRlckZ1bmRlZCwiaW5zdWZmaWNpZW50IHRva2VuIGJhbGFuY2UiKSlyZXR1cm47Y29uc3QgbHA9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImxpcXVpZGl0eVBvc2l0aW9ucyIse2FjY291bnQ6YXBpLnNlbmRlcix0b2tlblBhaXI6dG9rZW5QYWlyfSk7aWYobHApbHAuYmFzZVF1YW50aXR5PWFwaS5CaWdOdW1iZXIobHAuYmFzZVF1YW50aXR5KS5wbHVzKGJhc2VRdWFudGl0eSksbHAucXVvdGVRdWFudGl0eT1hcGkuQmlnTnVtYmVyKGxwLnF1b3RlUXVhbnRpdHkpLnBsdXMocXVvdGVRdWFudGl0eSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgibGlxdWlkaXR5UG9zaXRpb25zIixscCk7ZWxzZXtjb25zdCBuZXdscD17YWNjb3VudDphcGkuc2VuZGVyLHRva2VuUGFpcjp0b2tlblBhaXIsYmFzZVF1YW50aXR5OmJhc2VRdWFudGl0eSxxdW90ZVF1YW50aXR5OnF1b3RlUXVhbnRpdHl9O2F3YWl0IGFwaS5kYi5pbnNlcnQoImxpcXVpZGl0eVBvc2l0aW9ucyIsbmV3bHApfWNvbnN0IGJhc2VSZXM9YXdhaXQgYXBpLmV4ZWN1dGVTbWFydENvbnRyYWN0KCJ0b2tlbnMiLCJ0cmFuc2ZlclRvQ29udHJhY3QiLHtzeW1ib2w6YmFzZVN5bWJvbCxxdWFudGl0eTpiYXNlUXVhbnRpdHksdG86Im1hcmtldHBvb2xzIn0pLHF1b3RlUmVzPWF3YWl0IGFwaS5leGVjdXRlU21hcnRDb250cmFjdCgidG9rZW5zIiwidHJhbnNmZXJUb0NvbnRyYWN0Iix7c3ltYm9sOnF1b3RlU3ltYm9sLHF1YW50aXR5OnF1b3RlUXVhbnRpdHksdG86Im1hcmtldHBvb2xzIn0pO2lmKCFhcGkuYXNzZXJ0KHZvaWQgMD09PWJhc2VSZXMuZXJyb3JzJiZ2b2lkIDA9PT1xdW90ZVJlcy5lcnJvcnMsImRlcG9zaXQgdHJhbnNmZXIgZXJyb3JzIikpcmV0dXJuO2F3YWl0IHVwZGF0ZVBvb2xTdGF0cyhwb29sLGJhc2VRdWFudGl0eSxxdW90ZVF1YW50aXR5LCExKSxhcGkuZW1pdCgiYWRkTGlxdWlkaXR5Iix7YmFzZVN5bWJvbDpiYXNlU3ltYm9sLHF1b3RlU3ltYm9sOnF1b3RlU3ltYm9sfSl9fSxhY3Rpb25zLnJlbW92ZUxpcXVpZGl0eT1hc3luYyBwYXlsb2FkPT57Y29uc3R7dG9rZW5QYWlyOnRva2VuUGFpcixiYXNlUXVhbnRpdHk6YmFzZVF1YW50aXR5LHF1b3RlUXVhbnRpdHk6cXVvdGVRdWFudGl0eSxpc1NpZ25lZFdpdGhBY3RpdmVLZXk6aXNTaWduZWRXaXRoQWN0aXZlS2V5fT1wYXlsb2FkO2lmKCEoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwieW91IG11c3QgdXNlIGEgdHJhbnNhY3Rpb24gc2lnbmVkIHdpdGggeW91ciBhY3RpdmUga2V5IikmJmFwaS5hc3NlcnQoYmFzZVF1YW50aXR5JiZhcGkuQmlnTnVtYmVyKGJhc2VRdWFudGl0eSkuZ3QoMCksImludmFsaWQgYmFzZVF1YW50aXR5IikmJmFwaS5hc3NlcnQocXVvdGVRdWFudGl0eSYmYXBpLkJpZ051bWJlcihxdW90ZVF1YW50aXR5KS5ndCgwKSwiaW52YWxpZCBxdW90ZVF1YW50aXR5IikmJmF3YWl0IHZhbGlkYXRlVG9rZW5QYWlyKHRva2VuUGFpcikpKXJldHVybjtjb25zdFtiYXNlU3ltYm9sLHF1b3RlU3ltYm9sXT10b2tlblBhaXIuc3BsaXQoIjoiKSxiYXNlVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6YmFzZVN5bWJvbH0pLHF1b3RlVG9rZW49YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6cXVvdGVTeW1ib2x9KTtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKGJhc2VRdWFudGl0eSkuZHAoKTw9YmFzZVRva2VuLnByZWNpc2lvbiwiYmFzZVF1YW50aXR5IHByZWNpc2lvbiBtaXNtYXRjaCIpfHwhYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHF1b3RlUXVhbnRpdHkpLmRwKCk8PXF1b3RlVG9rZW4ucHJlY2lzaW9uLCJxdW90ZVF1YW50aXR5IHByZWNpc2lvbiBtaXNtYXRjaCIpKXJldHVybjtjb25zdCBwb29sPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwb29scyIse3Rva2VuUGFpcjp0b2tlblBhaXJ9KTtpZihhcGkuYXNzZXJ0KHBvb2wsIm5vIGV4aXN0aW5nIHBvb2wgZm9yIHRva2VuUGFpciIpKXtpZighYXBpLmFzc2VydChhcGkuQmlnTnVtYmVyKHBvb2wuYmFzZVF1YW50aXR5KS5ndCgwKSYmYXBpLkJpZ051bWJlcihwb29sLnF1b3RlUXVhbnRpdHkpLmd0KDApLCJpbnN1ZmZpY2llbnQgbGlxdWlkaXR5Iil8fCF2YWxpZGF0ZUxpcXVpZGl0eVN3YXAocG9vbCxiYXNlUXVhbnRpdHkscXVvdGVRdWFudGl0eSkpcmV0dXJuO2NvbnN0IGxwPWF3YWl0IGFwaS5kYi5maW5kT25lKCJsaXF1aWRpdHlQb3NpdGlvbnMiLHthY2NvdW50OmFwaS5zZW5kZXIsdG9rZW5QYWlyOnRva2VuUGFpcn0pO2FwaS5hc3NlcnQobHAsIm5vIGV4aXN0aW5nIGxpcXVpZGl0eSBwb3NpdGlvbiIpJiZhcGkuYXNzZXJ0KGFwaS5CaWdOdW1iZXIobHAuYmFzZVF1YW50aXR5KS5taW51cyhiYXNlUXVhbnRpdHkpLmd0ZSgwKSYmYXBpLkJpZ051bWJlcihscC5xdW90ZVF1YW50aXR5KS5taW51cyhxdW90ZVF1YW50aXR5KS5ndGUoMCksIm5vdCBlbm91Z2ggbGlxdWlkaXR5IGluIHBvc2l0aW9uIikmJihscC5iYXNlUXVhbnRpdHk9YXBpLkJpZ051bWJlcihscC5iYXNlUXVhbnRpdHkpLm1pbnVzKGJhc2VRdWFudGl0eSksbHAucXVvdGVRdWFudGl0eT1hcGkuQmlnTnVtYmVyKGxwLnF1b3RlUXVhbnRpdHkpLm1pbnVzKHF1b3RlUXVhbnRpdHkpLGFwaS5CaWdOdW1iZXIobHAuYmFzZVF1YW50aXR5KS5lcSgwKSYmYXBpLkJpZ051bWJlcihscC5xdW90ZVF1YW50aXR5KS5lcSgwKT9hd2FpdCBhcGkuZGIucmVtb3ZlKCJsaXF1aWRpdHlQb3NpdGlvbnMiLGxwKTphd2FpdCBhcGkuZGIudXBkYXRlKCJsaXF1aWRpdHlQb3NpdGlvbnMiLGxwKSxhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoYXBpLnNlbmRlcixiYXNlU3ltYm9sLGJhc2VRdWFudGl0eSwidXNlciIpLGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLHF1b3RlU3ltYm9sLHF1b3RlUXVhbnRpdHksInVzZXIiKSxhd2FpdCB1cGRhdGVQb29sU3RhdHMocG9vbCxhcGkuQmlnTnVtYmVyKGJhc2VRdWFudGl0eSkubmVnYXRlZCgpLGFwaS5CaWdOdW1iZXIocXVvdGVRdWFudGl0eSkubmVnYXRlZCgpLCExKSxhcGkuZW1pdCgicmVtb3ZlTGlxdWlkaXR5Iix7YmFzZVN5bWJvbDpiYXNlU3ltYm9sLHF1b3RlU3ltYm9sOnF1b3RlU3ltYm9sfSkpfX0sYWN0aW9ucy5zd2FwVG9rZW5zPWFzeW5jIHBheWxvYWQ9Pntjb25zdHt0b2tlblBhaXI6dG9rZW5QYWlyLHRva2VuU3ltYm9sOnRva2VuU3ltYm9sLHRva2VuQW1vdW50OnRva2VuQW1vdW50LHRyYWRlVHlwZTp0cmFkZVR5cGUsbWF4U2xpcHBhZ2U6bWF4U2xpcHBhZ2UsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleX09cGF5bG9hZDtpZighKGFwaS5hc3NlcnQoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXksInlvdSBtdXN0IHVzZSBhIHRyYW5zYWN0aW9uIHNpZ25lZCB3aXRoIHlvdXIgYWN0aXZlIGtleSIpJiZhcGkuYXNzZXJ0KCJzdHJpbmciPT10eXBlb2YgdG9rZW5TeW1ib2wsImludmFsaWQgdG9rZW4iKSYmYXBpLmFzc2VydCh0b2tlbkFtb3VudCYmYXBpLkJpZ051bWJlcih0b2tlbkFtb3VudCkuZ3QoMCksImluc3VmZmljaWVudCB0b2tlbkFtb3VudCIpJiZhcGkuYXNzZXJ0KG1heFNsaXBwYWdlJiZhcGkuQmlnTnVtYmVyKG1heFNsaXBwYWdlKS5ndCgwKSYmYXBpLkJpZ051bWJlcihtYXhTbGlwcGFnZSkubHQoNTApLCJtYXhTbGlwcGFnZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiAwIGFuZCBsZXNzIHRoYW4gNTAiKSYmYXBpLmFzc2VydCgic3RyaW5nIj09dHlwZW9mIHRyYWRlVHlwZSYmLTEhPT1UcmFkZVR5cGUuaW5kZXhPZih0cmFkZVR5cGUpLCJpbnZhbGlkIHRyYWRlVHlwZSIpJiZhd2FpdCB2YWxpZGF0ZVRva2VuUGFpcih0b2tlblBhaXIpKSlyZXR1cm47Y29uc3RbYmFzZVN5bWJvbCxxdW90ZVN5bWJvbF09dG9rZW5QYWlyLnNwbGl0KCI6IikscG9vbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgicG9vbHMiLHt0b2tlblBhaXI6dG9rZW5QYWlyfSk7aWYoIWFwaS5hc3NlcnQocG9vbCwibm8gZXhpc3RpbmcgcG9vbCBmb3IgdG9rZW5QYWlyIikpcmV0dXJuO2xldCBsaXF1aWRpdHlJbixsaXF1aWRpdHlPdXQsc3ltYm9sSW4sc3ltYm9sT3V0OygiZXhhY3RJbnB1dCI9PT10cmFkZVR5cGU/dG9rZW5TeW1ib2w9PT1iYXNlU3ltYm9sOnRva2VuU3ltYm9sIT09YmFzZVN5bWJvbCk/KGxpcXVpZGl0eUluPXBvb2wuYmFzZVF1YW50aXR5LGxpcXVpZGl0eU91dD1wb29sLnF1b3RlUXVhbnRpdHksc3ltYm9sSW49YmFzZVN5bWJvbCxzeW1ib2xPdXQ9cXVvdGVTeW1ib2wpOihsaXF1aWRpdHlJbj1wb29sLnF1b3RlUXVhbnRpdHksbGlxdWlkaXR5T3V0PXBvb2wuYmFzZVF1YW50aXR5LHN5bWJvbEluPXF1b3RlU3ltYm9sLHN5bWJvbE91dD1iYXNlU3ltYm9sKTtjb25zdCB0b2tlbkluPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwidG9rZW5zIix7c3ltYm9sOnN5bWJvbElufSksdG9rZW5PdXQ9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJ0b2tlbnMiLHtzeW1ib2w6c3ltYm9sT3V0fSksc2VuZGVyQmFzZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDpzeW1ib2xJbn0pO2xldCB0b2tlblBhaXJEZWx0YSx0b2tlblF1YW50aXR5LHNlbmRlckJhc2VGdW5kZWQ9ITE7aWYoImV4YWN0SW5wdXQiPT09dHJhZGVUeXBlKXtjb25zdCB0b2tlbkFtb3VudEFkanVzdGVkPWFwaS5CaWdOdW1iZXIoZ2V0QW1vdW50T3V0KHRva2VuQW1vdW50LGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCkpO2lmKCF0b2tlbkFtb3VudEFkanVzdGVkLmlzRmluaXRlKCkpcmV0dXJuO2lmKHNlbmRlckJhc2VGdW5kZWQ9c2VuZGVyQmFzZSYmYXBpLkJpZ051bWJlcihzZW5kZXJCYXNlLmJhbGFuY2UpLmd0ZSh0b2tlbkFtb3VudCksdG9rZW5QYWlyRGVsdGE9dG9rZW5TeW1ib2w9PT1iYXNlU3ltYm9sP1t0b2tlbkFtb3VudCxhcGkuQmlnTnVtYmVyKHRva2VuQW1vdW50QWRqdXN0ZWQpLm5lZ2F0ZWQoKV06W2FwaS5CaWdOdW1iZXIodG9rZW5BbW91bnRBZGp1c3RlZCkubmVnYXRlZCgpLHRva2VuQW1vdW50XSx0b2tlblF1YW50aXR5PXtpbjp0b2tlbkFtb3VudCxvdXQ6dG9rZW5BbW91bnRBZGp1c3RlZH0sIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlblF1YW50aXR5LmluKS5kcCgpPD10b2tlbkluLnByZWNpc2lvbiwic3ltYm9sSW4gcHJlY2lzaW9uIG1pc21hdGNoIikpcmV0dXJufWVsc2UgaWYoImV4YWN0T3V0cHV0Ij09PXRyYWRlVHlwZSl7Y29uc3QgdG9rZW5BbW91bnRBZGp1c3RlZD1hcGkuQmlnTnVtYmVyKGdldEFtb3VudEluKHRva2VuQW1vdW50LGxpcXVpZGl0eUluLGxpcXVpZGl0eU91dCkpO2lmKCF0b2tlbkFtb3VudEFkanVzdGVkLmlzRmluaXRlKCkpcmV0dXJuO2lmKHNlbmRlckJhc2VGdW5kZWQ9c2VuZGVyQmFzZSYmYXBpLkJpZ051bWJlcihzZW5kZXJCYXNlLmJhbGFuY2UpLmd0ZSh0b2tlbkFtb3VudEFkanVzdGVkLnRvRml4ZWQodG9rZW5Jbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSksdG9rZW5QYWlyRGVsdGE9dG9rZW5TeW1ib2w9PT1iYXNlU3ltYm9sP1thcGkuQmlnTnVtYmVyKHRva2VuQW1vdW50KS5uZWdhdGVkKCksdG9rZW5BbW91bnRBZGp1c3RlZF06W3Rva2VuQW1vdW50QWRqdXN0ZWQsYXBpLkJpZ051bWJlcih0b2tlbkFtb3VudCkubmVnYXRlZCgpXSx0b2tlblF1YW50aXR5PXtpbjp0b2tlbkFtb3VudEFkanVzdGVkLG91dDp0b2tlbkFtb3VudH0sIWFwaS5hc3NlcnQoYXBpLkJpZ051bWJlcih0b2tlblF1YW50aXR5Lm91dCkuZHAoKTw9dG9rZW5PdXQucHJlY2lzaW9uLCJzeW1ib2xPdXQgcHJlY2lzaW9uIG1pc21hdGNoIikpcmV0dXJufWlmKCFhcGkuYXNzZXJ0KHNlbmRlckJhc2VGdW5kZWQsImluc3VmZmljaWVudCBpbnB1dCBiYWxhbmNlIil8fCF2YWxpZGF0ZVN3YXAocG9vbCx0b2tlblBhaXJEZWx0YVswXSx0b2tlblBhaXJEZWx0YVsxXSxhcGkuQmlnTnVtYmVyKG1heFNsaXBwYWdlKS5kaXZpZGVkQnkoMTAwKSkpcmV0dXJuO2NvbnN0IHJlcz1hd2FpdCBhcGkuZXhlY3V0ZVNtYXJ0Q29udHJhY3QoInRva2VucyIsInRyYW5zZmVyVG9Db250cmFjdCIse3N5bWJvbDpzeW1ib2xJbixxdWFudGl0eTphcGkuQmlnTnVtYmVyKHRva2VuUXVhbnRpdHkuaW4pLnRvRml4ZWQodG9rZW5Jbi5wcmVjaXNpb24sYXBpLkJpZ051bWJlci5ST1VORF9ET1dOKSx0bzoibWFya2V0cG9vbHMifSk7dm9pZCAwPT09cmVzLmVycm9ycyYmcmVzLmV2ZW50cyYmdm9pZCAwIT09cmVzLmV2ZW50cy5maW5kKGVsPT4idG9rZW5zIj09PWVsLmNvbnRyYWN0JiYidHJhbnNmZXJUb0NvbnRyYWN0Ij09PWVsLmV2ZW50JiZlbC5kYXRhLmZyb209PT1hcGkuc2VuZGVyJiYibWFya2V0cG9vbHMiPT09ZWwuZGF0YS50byYmZWwuZGF0YS5xdWFudGl0eT09PWFwaS5CaWdOdW1iZXIodG9rZW5RdWFudGl0eS5pbikudG9GaXhlZCh0b2tlbkluLnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pKSYmKGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhhcGkuc2VuZGVyLHN5bWJvbE91dCxhcGkuQmlnTnVtYmVyKHRva2VuUXVhbnRpdHkub3V0KS50b0ZpeGVkKHRva2VuT3V0LnByZWNpc2lvbixhcGkuQmlnTnVtYmVyLlJPVU5EX0RPV04pLCJ1c2VyIiksYXdhaXQgdXBkYXRlUG9vbFN0YXRzKHBvb2wsdG9rZW5QYWlyRGVsdGFbMF0sdG9rZW5QYWlyRGVsdGFbMV0pLGFwaS5lbWl0KCJzd2FwVG9rZW5zIix7c3ltYm9sSW46c3ltYm9sSW4sc3ltYm9sT3V0OnN5bWJvbE91dH0pKX07"}}}