wit

avatar
(Edited)

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"LyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqLwovKiBnbG9iYWwgYWN0aW9ucywgYXBpICovCgpjb25zdCBOQl9BUFBST1ZBTFNfQUxMT1dFRCA9IDMwOwpjb25zdCBOQl9UT1BfV0lUTkVTU0VTID0gMjA7CmNvbnN0IE5CX0JBQ0tVUF9XSVRORVNTRVMgPSAxOwpjb25zdCBOQl9XSVRORVNTRVMgPSBOQl9UT1BfV0lUTkVTU0VTICsgTkJfQkFDS1VQX1dJVE5FU1NFUzsKY29uc3QgTkJfV0lUTkVTU0VTX1NJR05BVFVSRVNfUkVRVUlSRUQgPSAxNDsKY29uc3QgTUFYX1JPVU5EU19NSVNTRURfSU5fQV9ST1cgPSAzOyAvLyBhZnRlciB0aGF0IHRoZSB3aXRuZXNzIGlzIGRpc2FibGVkCmNvbnN0IE1BWF9ST1VORF9QUk9QT1NJVElPTl9XQUlUSU5HX1BFUklPRCA9IDQwOyAvLyBudW1iZXIgb2YgYmxvY2tzCmNvbnN0IE5CX1RPS0VOU19UT19SRVdBUkQgPSAnMC4wMDk1MTI5Myc7IC8vIGluZmxhdGlvbi5qcyB0b2tlbnMgcGVyIGJsb2NrCmNvbnN0IE5CX1RPS0VOU19ORUVERURfQkVGT1JFX1JFV0FSRElORyA9ICcwLjA0NzU2NDY1JzsgLy8gNXggdG8gcmV3YXJkCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcKY29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0wgPSAiJyR7Q09OU1RBTlRTLlVUSUxJVFlfVE9LRU5fU1lNQk9MfSQnIjsKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZwpjb25zdCBHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTCA9ICJCRUUiOwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGVtcGxhdGUtY3VybHktaW4tc3RyaW5nCmNvbnN0IEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OID0gJyR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OfSQnOwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGVtcGxhdGUtY3VybHktaW4tc3RyaW5nCmNvbnN0IEdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFID0gJyR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFfSQnOwoKYWN0aW9ucy5jcmVhdGVTU0MgPSBhc3luYyAoKSA9PiB7CiAgY29uc3QgdGFibGVFeGlzdHMgPSBhd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoJ3dpdG5lc3NlcycpOwoKICBpZiAodGFibGVFeGlzdHMgPT09IGZhbHNlKSB7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ3dpdG5lc3NlcycsIFsnYXBwcm92YWxXZWlnaHQnXSk7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ2FwcHJvdmFscycsIFsnZnJvbScsICd0byddKTsKICAgIGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgnYWNjb3VudHMnLCBbJ2FjY291bnQnXSk7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ3NjaGVkdWxlcycpOwogICAgYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCdwYXJhbXMnKTsKCiAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgIHRvdGFsQXBwcm92YWxXZWlnaHQ6ICcwJywKICAgICAgbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczogMCwKICAgICAgbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6IDAsCiAgICAgIHJvdW5kOiAwLAogICAgICBsYXN0QmxvY2tSb3VuZDogMCwKICAgICAgY3VycmVudFdpdG5lc3M6IG51bGwsCiAgICAgIGJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZTogMCwKICAgICAgbGFzdFdpdG5lc3NlczogW10sCiAgICAgIG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDogTkJfQVBQUk9WQUxTX0FMTE9XRUQsCiAgICAgIG51bWJlck9mVG9wV2l0bmVzc2VzOiBOQl9UT1BfV0lUTkVTU0VTLAogICAgICBudW1iZXJPZldpdG5lc3NTbG90czogTkJfV0lUTkVTU0VTLAogICAgICB3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOiBOQl9XSVRORVNTRVNfU0lHTkFUVVJFU19SRVFVSVJFRCwKICAgICAgbWF4Um91bmRzTWlzc2VkSW5BUm93OiBNQVhfUk9VTkRTX01JU1NFRF9JTl9BX1JPVywKICAgICAgbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6IE1BWF9ST1VORF9QUk9QT1NJVElPTl9XQUlUSU5HX1BFUklPRCwKICAgIH07CgogICAgYXdhaXQgYXBpLmRiLmluc2VydCgncGFyYW1zJywgcGFyYW1zKTsKICB9Cn07CgphY3Rpb25zLnJlc2V0U2NoZWR1bGUgPSBhc3luYyAoKSA9PiB7CiAgaWYgKGFwaS5zZW5kZXIgIT09IGFwaS5vd25lcikgcmV0dXJuOwoKICBjb25zdCBzY2hlZHVsZXMgPSBhd2FpdCBhcGkuZGIuZmluZCgnc2NoZWR1bGVzJywgeyB9KTsKCiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNjaGVkdWxlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHsKICAgIGNvbnN0IHNjaGVkdWxlID0gc2NoZWR1bGVzW2luZGV4XTsKICAgIGF3YWl0IGFwaS5kYi5yZW1vdmUoJ3NjaGVkdWxlcycsIHNjaGVkdWxlKTsKICB9CgogIGNvbnN0IHBhcmFtcyA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCdwYXJhbXMnLCB7fSk7CiAgcGFyYW1zLmN1cnJlbnRXaXRuZXNzID0gbnVsbDsKICBwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlID0gMDsKICBwYXJhbXMubGFzdFdpdG5lc3NlcyA9IFtdOwogIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3BhcmFtcycsIHBhcmFtcyk7Cn07CgphY3Rpb25zLnVwZGF0ZVBhcmFtcyA9IGFzeW5jIChwYXlsb2FkKSA9PiB7CiAgaWYgKGFwaS5zZW5kZXIgIT09IGFwaS5vd25lcikgcmV0dXJuOwoKICBjb25zdCB7CiAgICBudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsCiAgICBudW1iZXJPZlRvcFdpdG5lc3NlcywKICAgIG51bWJlck9mV2l0bmVzc1Nsb3RzLAogICAgd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCwKICAgIG1heFJvdW5kc01pc3NlZEluQVJvdywKICAgIG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLAogIH0gPSBwYXlsb2FkOwoKICBjb25zdCBwYXJhbXMgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgncGFyYW1zJywge30pOwogIGxldCBzaG91bGRSZXNldFNjaGVkdWxlID0gZmFsc2U7CgogIGlmIChudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQpKSB7CiAgICBwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50ID0gbnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50OwogIH0KICBpZiAobnVtYmVyT2ZUb3BXaXRuZXNzZXMgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZlRvcFdpdG5lc3NlcykpIHsKICAgIHBhcmFtcy5udW1iZXJPZlRvcFdpdG5lc3NlcyA9IG51bWJlck9mVG9wV2l0bmVzc2VzOwogIH0KICBpZiAobnVtYmVyT2ZXaXRuZXNzU2xvdHMgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZldpdG5lc3NTbG90cykKICAgICAgJiYgcGFyYW1zLm51bWJlck9mV2l0bmVzc1Nsb3RzICE9PSBudW1iZXJPZldpdG5lc3NTbG90cykgewogICAgc2hvdWxkUmVzZXRTY2hlZHVsZSA9IHRydWU7CiAgICBwYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHMgPSBudW1iZXJPZldpdG5lc3NTbG90czsKICB9CiAgaWYgKHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQgJiYgTnVtYmVyLmlzSW50ZWdlcih3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSkgewogICAgcGFyYW1zLndpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQgPSB3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOwogIH0KICBpZiAobWF4Um91bmRzTWlzc2VkSW5BUm93ICYmIE51bWJlci5pc0ludGVnZXIobWF4Um91bmRzTWlzc2VkSW5BUm93KSkgewogICAgcGFyYW1zLm1heFJvdW5kc01pc3NlZEluQVJvdyA9IG1heFJvdW5kc01pc3NlZEluQVJvdzsKICB9CiAgaWYgKG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kICYmIE51bWJlci5pc0ludGVnZXIobWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QpKSB7CiAgICBwYXJhbXMubWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QgPSBtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDsKICB9CiAgaWYgKCFhcGkuYXNzZXJ0KHBhcmFtcy5udW1iZXJPZlRvcFdpdG5lc3NlcyArIDEgPT09IHBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cywgJ29ubHkgMSBiYWNrdXAgYWxsb3dlZCcpKSB7CiAgICByZXR1cm47CiAgfQogIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3BhcmFtcycsIHBhcmFtcyk7CiAgaWYgKHNob3VsZFJlc2V0U2NoZWR1bGUpIHsKICAgIGF3YWl0IGFjdGlvbnMucmVzZXRTY2hlZHVsZSgpOwogIH0KfTsKCmNvbnN0IHVwZGF0ZVdpdG5lc3NSYW5rID0gYXN5bmMgKHdpdG5lc3MsIGFwcHJvdmFsV2VpZ2h0KSA9PiB7CiAgLy8gY2hlY2sgaWYgd2l0bmVzcyBleGlzdHMKICBjb25zdCB3aXRuZXNzUmVjID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogd2l0bmVzcyB9KTsKCiAgaWYgKHdpdG5lc3NSZWMpIHsKICAgIC8vIHVwZGF0ZSB3aXRuZXNzIGFwcHJvdmFsV2VpZ2h0CiAgICBjb25zdCBvbGRBcHByb3ZhbFdlaWdodCA9IHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw7CiAgICB3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsID0gYXBpLkJpZ051bWJlcigKICAgICAgd2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCwKICAgICkKICAgICAgLnBsdXMoYXBwcm92YWxXZWlnaHQpCiAgICAgIC50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKTsKCiAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCd3aXRuZXNzZXMnLCB3aXRuZXNzUmVjKTsKCiAgICBjb25zdCBwYXJhbXMgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgncGFyYW1zJywge30pOwoKICAgIC8vIHVwZGF0ZSB0b3RhbEFwcHJvdmFsV2VpZ2h0CiAgICBwYXJhbXMudG90YWxBcHByb3ZhbFdlaWdodCA9IGFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsQXBwcm92YWxXZWlnaHQpCiAgICAgIC5wbHVzKGFwcHJvdmFsV2VpZ2h0KQogICAgICAudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7CgogICAgLy8gdXBkYXRlIG51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMKICAgIGlmIChhcGkuQmlnTnVtYmVyKG9sZEFwcHJvdmFsV2VpZ2h0KS5lcSgwKQogICAgICAmJiBhcGkuQmlnTnVtYmVyKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLmd0KDApKSB7CiAgICAgIHBhcmFtcy5udW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzICs9IDE7CiAgICB9IGVsc2UgaWYgKGFwaS5CaWdOdW1iZXIob2xkQXBwcm92YWxXZWlnaHQpLmd0KDApCiAgICAgICYmIGFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkuZXEoMCkpIHsKICAgICAgcGFyYW1zLm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMgLT0gMTsKICAgIH0KCiAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCdwYXJhbXMnLCBwYXJhbXMpOwogIH0KfTsKCmFjdGlvbnMudXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzID0gYXN5bmMgKHBheWxvYWQpID0+IHsKICBjb25zdCB7IGFjY291bnQsIGNhbGxpbmdDb250cmFjdEluZm8gfSA9IHBheWxvYWQ7CgogIGlmIChjYWxsaW5nQ29udHJhY3RJbmZvID09PSB1bmRlZmluZWQpIHJldHVybjsKICBpZiAoY2FsbGluZ0NvbnRyYWN0SW5mby5uYW1lICE9PSAndG9rZW5zJykgcmV0dXJuOwoKICBjb25zdCBhY2N0ID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ2FjY291bnRzJywgeyBhY2NvdW50IH0pOwogIGlmIChhY2N0ICE9PSBudWxsKSB7CiAgICAvLyBjYWxjdWxhdGUgYXBwcm92YWwgd2VpZ2h0IG9mIHRoZSBhY2NvdW50CiAgICBjb25zdCBiYWxhbmNlID0gYXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCd0b2tlbnMnLCAnYmFsYW5jZXMnLCB7IGFjY291bnQsIHN5bWJvbDogR09WRVJOQU5DRV9UT0tFTl9TWU1CT0wgfSk7CiAgICBsZXQgYXBwcm92YWxXZWlnaHQgPSAwOwogICAgaWYgKGJhbGFuY2UgJiYgYmFsYW5jZS5zdGFrZSkgewogICAgICBhcHByb3ZhbFdlaWdodCA9IGJhbGFuY2Uuc3Rha2U7CiAgICB9CgogICAgaWYgKGJhbGFuY2UgJiYgYmFsYW5jZS5kZWxlZ2F0aW9uc0luKSB7CiAgICAgIGFwcHJvdmFsV2VpZ2h0ID0gYXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkKICAgICAgICAucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pCiAgICAgICAgLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pOwogICAgfQoKICAgIGNvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0ID0gYWNjdC5hcHByb3ZhbFdlaWdodDsKCiAgICBjb25zdCBkZWx0YUFwcHJvdmFsV2VpZ2h0ID0gYXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkKICAgICAgLm1pbnVzKG9sZEFwcHJvdmFsV2VpZ2h0KQogICAgICAudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7CgogICAgYWNjdC5hcHByb3ZhbFdlaWdodCA9IGFwcHJvdmFsV2VpZ2h0OwoKICAgIGlmICghYXBpLkJpZ051bWJlcihkZWx0YUFwcHJvdmFsV2VpZ2h0KS5lcSgwKSkgewogICAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCdhY2NvdW50cycsIGFjY3QpOwoKICAgICAgY29uc3QgYXBwcm92YWxzID0gYXdhaXQgYXBpLmRiLmZpbmQoJ2FwcHJvdmFscycsIHsgZnJvbTogYWNjb3VudCB9KTsKCiAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCBhcHByb3ZhbHMubGVuZ3RoOyBpbmRleCArPSAxKSB7CiAgICAgICAgY29uc3QgYXBwcm92YWwgPSBhcHByb3ZhbHNbaW5kZXhdOwogICAgICAgIGF3YWl0IHVwZGF0ZVdpdG5lc3NSYW5rKGFwcHJvdmFsLnRvLCBkZWx0YUFwcHJvdmFsV2VpZ2h0KTsKICAgICAgfQogICAgfQogIH0KfTsKCmFjdGlvbnMucmVnaXN0ZXIgPSBhc3luYyAocGF5bG9hZCkgPT4gewogIGNvbnN0IHsKICAgIElQLCBSUENQb3J0LCBQMlBQb3J0LCBzaWduaW5nS2V5LCBlbmFibGVkLCBpc1NpZ25lZFdpdGhBY3RpdmVLZXksCiAgfSA9IHBheWxvYWQ7CgogIGlmIChhcGkuYXNzZXJ0KGlzU2lnbmVkV2l0aEFjdGl2ZUtleSA9PT0gdHJ1ZSwgJ2FjdGl2ZSBrZXkgcmVxdWlyZWQnKQogICAgJiYgYXBpLmFzc2VydChJUCAmJiB0eXBlb2YgSVAgPT09ICdzdHJpbmcnICYmIGFwaS52YWxpZGF0b3IuaXNJUChJUCksICdJUCBpcyBpbnZhbGlkJykKICAgICYmIGFwaS5hc3NlcnQoUlBDUG9ydCAmJiBOdW1iZXIuaXNJbnRlZ2VyKFJQQ1BvcnQpICYmIFJQQ1BvcnQgPj0gMCAmJiBSUENQb3J0IDw9IDY1NTM1LCAnUlBDUG9ydCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA2NTUzNScpCiAgICAmJiBhcGkuYXNzZXJ0KFAyUFBvcnQgJiYgTnVtYmVyLmlzSW50ZWdlcihQMlBQb3J0KSAmJiBQMlBQb3J0ID49IDAgJiYgUDJQUG9ydCA8PSA2NTUzNSwgJ1AyUFBvcnQgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNjU1MzUnKQogICAgJiYgYXBpLmFzc2VydChhcGkudmFsaWRhdG9yLmlzQWxwaGFudW1lcmljKHNpZ25pbmdLZXkpICYmIHNpZ25pbmdLZXkubGVuZ3RoID09PSA1MywgJ2ludmFsaWQgc2lnbmluZyBrZXknKQogICAgJiYgYXBpLmFzc2VydCh0eXBlb2YgZW5hYmxlZCA9PT0gJ2Jvb2xlYW4nLCAnZW5hYmxlZCBtdXN0IGJlIGEgYm9vbGVhbicpKSB7CiAgICAvLyBjaGVjayBpZiB0aGVyZSBpcyBhbHJlYWR5IGEgd2l0bmVzcyB3aXRoIHRoZSBzYW1lIHNpZ25pbmcga2V5CiAgICBsZXQgd2l0bmVzcyA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCd3aXRuZXNzZXMnLCB7IHNpZ25pbmdLZXkgfSk7CgogICAgaWYgKGFwaS5hc3NlcnQod2l0bmVzcyA9PT0gbnVsbCB8fCB3aXRuZXNzLmFjY291bnQgPT09IGFwaS5zZW5kZXIsICdhIHdpdG5lc3MgaXMgYWxyZWFkeSB1c2luZyB0aGlzIHNpZ25pbmcga2V5JykpIHsKICAgICAgLy8gY2hlY2sgaWYgdGhlcmUgaXMgYWxyZWFkeSBhIHdpdG5lc3Mgd2l0aCB0aGUgc2FtZSBJUC9Qb3J0CiAgICAgIHdpdG5lc3MgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgnd2l0bmVzc2VzJywgeyBJUCwgUDJQUG9ydCB9KTsKCiAgICAgIGlmIChhcGkuYXNzZXJ0KHdpdG5lc3MgPT09IG51bGwgfHwgd2l0bmVzcy5hY2NvdW50ID09PSBhcGkuc2VuZGVyLCAnYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBJUC9Qb3J0JykpIHsKICAgICAgICB3aXRuZXNzID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogYXBpLnNlbmRlciB9KTsKCiAgICAgICAgLy8gaWYgdGhlIHdpdG5lc3MgaXMgYWxyZWFkeSByZWdpc3RlcmVkCiAgICAgICAgaWYgKHdpdG5lc3MpIHsKICAgICAgICAgIHdpdG5lc3MuSVAgPSBJUDsKICAgICAgICAgIHdpdG5lc3MuUlBDUG9ydCA9IFJQQ1BvcnQ7CiAgICAgICAgICB3aXRuZXNzLlAyUFBvcnQgPSBQMlBQb3J0OwogICAgICAgICAgd2l0bmVzcy5zaWduaW5nS2V5ID0gc2lnbmluZ0tleTsKICAgICAgICAgIHdpdG5lc3MuZW5hYmxlZCA9IGVuYWJsZWQ7CiAgICAgICAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCd3aXRuZXNzZXMnLCB3aXRuZXNzKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgd2l0bmVzcyA9IHsKICAgICAgICAgICAgYWNjb3VudDogYXBpLnNlbmRlciwKICAgICAgICAgICAgYXBwcm92YWxXZWlnaHQ6IHsgJG51bWJlckRlY2ltYWw6ICcwJyB9LAogICAgICAgICAgICBzaWduaW5nS2V5LAogICAgICAgICAgICBJUCwKICAgICAgICAgICAgUlBDUG9ydCwKICAgICAgICAgICAgUDJQUG9ydCwKICAgICAgICAgICAgZW5hYmxlZCwKICAgICAgICAgICAgbWlzc2VkUm91bmRzOiAwLAogICAgICAgICAgICBtaXNzZWRSb3VuZHNJbkFSb3c6IDAsCiAgICAgICAgICAgIHZlcmlmaWVkUm91bmRzOiAwLAogICAgICAgICAgICBsYXN0Um91bmRWZXJpZmllZDogbnVsbCwKICAgICAgICAgICAgbGFzdEJsb2NrVmVyaWZpZWQ6IG51bGwsCiAgICAgICAgICB9OwogICAgICAgICAgYXdhaXQgYXBpLmRiLmluc2VydCgnd2l0bmVzc2VzJywgd2l0bmVzcyk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9OwoKYWN0aW9ucy5hcHByb3ZlID0gYXN5bmMgKHBheWxvYWQpID0+IHsKICBjb25zdCB7IHdpdG5lc3MgfSA9IHBheWxvYWQ7CiAgY29uc3QgcGFyYW1zID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3BhcmFtcycsIHt9KTsKCiAgaWYgKGFwaS5hc3NlcnQod2l0bmVzcyAmJiB0eXBlb2Ygd2l0bmVzcyA9PT0gJ3N0cmluZycgJiYgd2l0bmVzcy5sZW5ndGggPj0gMyAmJiB3aXRuZXNzLmxlbmd0aCA8PSAxNiwgJ2ludmFsaWQgd2l0bmVzcyBhY2NvdW50JykpIHsKICAgIC8vIGNoZWNrIGlmIHdpdG5lc3MgZXhpc3RzCiAgICBjb25zdCB3aXRuZXNzUmVjID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogd2l0bmVzcyB9KTsKCiAgICBpZiAoYXBpLmFzc2VydCh3aXRuZXNzUmVjLCAnd2l0bmVzcyBkb2VzIG5vdCBleGlzdCcpKSB7CiAgICAgIGxldCBhY2N0ID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ2FjY291bnRzJywgeyBhY2NvdW50OiBhcGkuc2VuZGVyIH0pOwoKICAgICAgaWYgKGFjY3QgPT09IG51bGwpIHsKICAgICAgICBhY2N0ID0gewogICAgICAgICAgYWNjb3VudDogYXBpLnNlbmRlciwKICAgICAgICAgIGFwcHJvdmFsczogMCwKICAgICAgICAgIGFwcHJvdmFsV2VpZ2h0OiB7ICRudW1iZXJEZWNpbWFsOiAnMCcgfSwKICAgICAgICB9OwoKICAgICAgICBhY2N0ID0gYXdhaXQgYXBpLmRiLmluc2VydCgnYWNjb3VudHMnLCBhY2N0KTsKICAgICAgfQoKICAgICAgaWYgKGFwaS5hc3NlcnQoYWNjdC5hcHByb3ZhbHMgPCBwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50LCBgeW91IGNhbiBvbmx5IGFwcHJvdmUgJHtwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50fSB3aXRuZXNzZXNgKSkgewogICAgICAgIGxldCBhcHByb3ZhbCA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCdhcHByb3ZhbHMnLCB7IGZyb206IGFwaS5zZW5kZXIsIHRvOiB3aXRuZXNzIH0pOwoKICAgICAgICBpZiAoYXBpLmFzc2VydChhcHByb3ZhbCA9PT0gbnVsbCwgJ3lvdSBhbHJlYWR5IGFwcHJvdmVkIHRoaXMgd2l0bmVzcycpKSB7CiAgICAgICAgICBhcHByb3ZhbCA9IHsKICAgICAgICAgICAgZnJvbTogYXBpLnNlbmRlciwKICAgICAgICAgICAgdG86IHdpdG5lc3MsCiAgICAgICAgICB9OwogICAgICAgICAgYXdhaXQgYXBpLmRiLmluc2VydCgnYXBwcm92YWxzJywgYXBwcm92YWwpOwoKICAgICAgICAgIC8vIHVwZGF0ZSB0aGUgcmFuayBvZiB0aGUgd2l0bmVzcyB0aGF0IHJlY2VpdmVkIHRoZSBhcHByb3ZhbAogICAgICAgICAgY29uc3QgYmFsYW5jZSA9IGF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgndG9rZW5zJywgJ2JhbGFuY2VzJywgeyBhY2NvdW50OiBhcGkuc2VuZGVyLCBzeW1ib2w6IEdPVkVSTkFOQ0VfVE9LRU5fU1lNQk9MIH0pOwogICAgICAgICAgbGV0IGFwcHJvdmFsV2VpZ2h0ID0gMDsKICAgICAgICAgIGlmIChiYWxhbmNlICYmIGJhbGFuY2Uuc3Rha2UpIHsKICAgICAgICAgICAgYXBwcm92YWxXZWlnaHQgPSBiYWxhbmNlLnN0YWtlOwogICAgICAgICAgfQoKICAgICAgICAgIGlmIChiYWxhbmNlICYmIGJhbGFuY2UuZGVsZWdhdGlvbnNJbikgewogICAgICAgICAgICBhcHByb3ZhbFdlaWdodCA9IGFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpCiAgICAgICAgICAgICAgLnBsdXMoYmFsYW5jZS5kZWxlZ2F0aW9uc0luKQogICAgICAgICAgICAgIC50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKTsKICAgICAgICAgIH0KCiAgICAgICAgICBhY2N0LmFwcHJvdmFscyArPSAxOwogICAgICAgICAgYWNjdC5hcHByb3ZhbFdlaWdodCA9IGFwcHJvdmFsV2VpZ2h0OwoKICAgICAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ2FjY291bnRzJywgYWNjdCk7CgogICAgICAgICAgYXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsod2l0bmVzcywgYXBwcm92YWxXZWlnaHQpOwogICAgICAgIH0KICAgICAgfQogICAgfQogIH0KfTsKCmFjdGlvbnMuZGlzYXBwcm92ZSA9IGFzeW5jIChwYXlsb2FkKSA9PiB7CiAgY29uc3QgeyB3aXRuZXNzIH0gPSBwYXlsb2FkOwoKICBpZiAoYXBpLmFzc2VydCh3aXRuZXNzICYmIHR5cGVvZiB3aXRuZXNzID09PSAnc3RyaW5nJyAmJiB3aXRuZXNzLmxlbmd0aCA+PSAzICYmIHdpdG5lc3MubGVuZ3RoIDw9IDE2LCAnaW52YWxpZCB3aXRuZXNzIGFjY291bnQnKSkgewogICAgLy8gY2hlY2sgaWYgd2l0bmVzcyBleGlzdHMKICAgIGNvbnN0IHdpdG5lc3NSZWMgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgnd2l0bmVzc2VzJywgeyBhY2NvdW50OiB3aXRuZXNzIH0pOwoKCiAgICBpZiAoYXBpLmFzc2VydCh3aXRuZXNzUmVjLCAnd2l0bmVzcyBkb2VzIG5vdCBleGlzdCcpKSB7CiAgICAgIGxldCBhY2N0ID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ2FjY291bnRzJywgeyBhY2NvdW50OiBhcGkuc2VuZGVyIH0pOwoKICAgICAgaWYgKGFjY3QgPT09IG51bGwpIHsKICAgICAgICBhY2N0ID0gewogICAgICAgICAgYWNjb3VudDogYXBpLnNlbmRlciwKICAgICAgICAgIGFwcHJvdmFsczogMCwKICAgICAgICAgIGFwcHJvdmFsV2VpZ2h0OiB7ICRudW1iZXJEZWNpbWFsOiAnMCcgfSwKICAgICAgICB9OwoKICAgICAgICBhd2FpdCBhcGkuZGIuaW5zZXJ0KCdhY2NvdW50cycsIGFjY3QpOwogICAgICB9CgogICAgICAvLyBhIHVzZXIgY2FuIG9ubHkgZGlzYXBwcm92ZSBpZiBpdCBhbHJlYWR5IGFwcHJvdmVkIGEgd2l0bmVzcwogICAgICBpZiAoYXBpLmFzc2VydChhY2N0LmFwcHJvdmFscyA+IDAsICdubyBhcHByb3ZhbHMgZm91bmQnKSkgewogICAgICAgIGNvbnN0IGFwcHJvdmFsID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ2FwcHJvdmFscycsIHsgZnJvbTogYXBpLnNlbmRlciwgdG86IHdpdG5lc3MgfSk7CgogICAgICAgIGlmIChhcGkuYXNzZXJ0KGFwcHJvdmFsICE9PSBudWxsLCAneW91IGhhdmUgbm90IGFwcHJvdmVkIHRoaXMgd2l0bmVzcycpKSB7CiAgICAgICAgICBhd2FpdCBhcGkuZGIucmVtb3ZlKCdhcHByb3ZhbHMnLCBhcHByb3ZhbCk7CgogICAgICAgICAgY29uc3QgYmFsYW5jZSA9IGF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgndG9rZW5zJywgJ2JhbGFuY2VzJywgeyBhY2NvdW50OiBhcGkuc2VuZGVyLCBzeW1ib2w6IEdPVkVSTkFOQ0VfVE9LRU5fU1lNQk9MIH0pOwogICAgICAgICAgbGV0IGFwcHJvdmFsV2VpZ2h0ID0gMDsKICAgICAgICAgIGlmIChiYWxhbmNlICYmIGJhbGFuY2Uuc3Rha2UpIHsKICAgICAgICAgICAgYXBwcm92YWxXZWlnaHQgPSBiYWxhbmNlLnN0YWtlOwogICAgICAgICAgfQoKICAgICAgICAgIGlmIChiYWxhbmNlICYmIGJhbGFuY2UuZGVsZWdhdGlvbnNJbikgewogICAgICAgICAgICBhcHByb3ZhbFdlaWdodCA9IGFwaS5CaWdOdW1iZXIoYXBwcm92YWxXZWlnaHQpCiAgICAgICAgICAgICAgLnBsdXMoYmFsYW5jZS5kZWxlZ2F0aW9uc0luKQogICAgICAgICAgICAgIC50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKTsKICAgICAgICAgIH0KCiAgICAgICAgICBhY2N0LmFwcHJvdmFscyAtPSAxOwogICAgICAgICAgYWNjdC5hcHByb3ZhbFdlaWdodCA9IGFwcHJvdmFsV2VpZ2h0OwoKICAgICAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ2FjY291bnRzJywgYWNjdCk7CgogICAgICAgICAgLy8gdXBkYXRlIHRoZSByYW5rIG9mIHRoZSB3aXRuZXNzIHRoYXQgcmVjZWl2ZWQgdGhlIGRpc2FwcHJvdmFsCiAgICAgICAgICBhd2FpdCB1cGRhdGVXaXRuZXNzUmFuayh3aXRuZXNzLCBgLSR7YXBwcm92YWxXZWlnaHR9YCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9OwoKY29uc3QgY2hhbmdlQ3VycmVudFdpdG5lc3MgPSBhc3luYyAoKSA9PiB7CiAgY29uc3QgcGFyYW1zID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3BhcmFtcycsIHt9KTsKICBjb25zdCB7CiAgICBjdXJyZW50V2l0bmVzcywKICAgIHRvdGFsQXBwcm92YWxXZWlnaHQsCiAgICBsYXN0V2l0bmVzc2VzLAogICAgbGFzdEJsb2NrUm91bmQsCiAgICByb3VuZCwKICAgIG1heFJvdW5kc01pc3NlZEluQVJvdywKICAgIG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLAogIH0gPSBwYXJhbXM7CgogIGxldCB3aXRuZXNzRm91bmQgPSBmYWxzZTsKICAvLyBnZXQgYSBkZXRlcm1pbmlzdGljIHJhbmRvbSB3ZWlnaHQKICBjb25zdCByYW5kb20gPSBhcGkucmFuZG9tKCk7CiAgY29uc3QgcmFuZG9tV2VpZ2h0ID0gYXBpLkJpZ051bWJlcih0b3RhbEFwcHJvdmFsV2VpZ2h0KQogICAgLnRpbWVzKHJhbmRvbSkKICAgIC50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OLCAxKTsKCiAgbGV0IG9mZnNldCA9IDA7CiAgbGV0IGFjY1dlaWdodCA9IDA7CgogIGxldCB3aXRuZXNzZXMgPSBhd2FpdCBhcGkuZGIuZmluZCgKICAgICd3aXRuZXNzZXMnLAogICAgewogICAgICBhcHByb3ZhbFdlaWdodDogewogICAgICAgICRndDogewogICAgICAgICAgJG51bWJlckRlY2ltYWw6ICcwJywKICAgICAgICB9LAogICAgICB9LAogICAgfSwKICAgIDEwMCwgLy8gbGltaXQKICAgIG9mZnNldCwgLy8gb2Zmc2V0CiAgICBbCiAgICAgIHsgaW5kZXg6ICdhcHByb3ZhbFdlaWdodCcsIGRlc2NlbmRpbmc6IHRydWUgfSwKICAgIF0sCiAgKTsKICAvLyBnZXQgdGhlIHdpdG5lc3NlcyBvbiBzY2hlZHVsZQogIGNvbnN0IHNjaGVkdWxlcyA9IGF3YWl0IGFwaS5kYi5maW5kKCdzY2hlZHVsZXMnLCB7IHJvdW5kIH0pOwoKICBjb25zdCBwcmV2aW91c1JvdW5kV2l0bmVzcyA9IGxhc3RXaXRuZXNzZXMubGVuZ3RoID4gMSA/IGxhc3RXaXRuZXNzZXNbbGFzdFdpdG5lc3Nlcy5sZW5ndGggLSAyXSA6ICcnOwoKICAvLyBnZXQgdGhlIGN1cnJlbnQgc2NoZWR1bGUKICBjb25zdCBzY2hlZHVsZSA9IGF3YWl0IGFwaS5kYgogICAgLmZpbmRPbmUoJ3NjaGVkdWxlcycsIHsgcm91bmQsIHdpdG5lc3M6IGN1cnJlbnRXaXRuZXNzLCBibG9ja051bWJlcjogbGFzdEJsb2NrUm91bmQgfSk7CgogIGRvIHsKICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB3aXRuZXNzZXMubGVuZ3RoOyBpbmRleCArPSAxKSB7CiAgICAgIGNvbnN0IHdpdG5lc3MgPSB3aXRuZXNzZXNbaW5kZXhdOwoKICAgICAgYWNjV2VpZ2h0ID0gYXBpLkJpZ051bWJlcihhY2NXZWlnaHQpCiAgICAgICAgLnBsdXMod2l0bmVzcy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkKICAgICAgICAudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7CgogICAgICAvLyBpZiB0aGUgd2l0bmVzcyBpcyBlbmFibGVkCiAgICAgIC8vIGFuZCBkaWZmZXJlbnQgZnJvbSB0aGUgc2NoZWR1bGVkIG9uZSBmcm9tIHRoZSBwcmV2aW91cyByb3VuZAogICAgICAvLyBhbmQgZGlmZmVyZW50IGZyb20gYW4gYWxyZWFkeSBzY2hlZHVsZWQgd2l0bmVzcyBmb3IgdGhpcyByb3VuZAogICAgICBpZiAod2l0bmVzcy5lbmFibGVkID09PSB0cnVlCiAgICAgICAgJiYgd2l0bmVzcy5hY2NvdW50ICE9PSBwcmV2aW91c1JvdW5kV2l0bmVzcwogICAgICAgICYmIHNjaGVkdWxlcy5maW5kKHMgPT4gcy53aXRuZXNzID09PSB3aXRuZXNzLmFjY291bnQpID09PSB1bmRlZmluZWQKICAgICAgICAmJiBhcGkuQmlnTnVtYmVyKHJhbmRvbVdlaWdodCkubHRlKGFjY1dlaWdodCkpIHsKICAgICAgICBhcGkuZGVidWcoYGNoYW5nZWQgY3VycmVudCB3aXRuZXNzIGZyb20gJHtzY2hlZHVsZS53aXRuZXNzfSB0byAke3dpdG5lc3MuYWNjb3VudH1gKTsKICAgICAgICBzY2hlZHVsZS53aXRuZXNzID0gd2l0bmVzcy5hY2NvdW50OwogICAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3NjaGVkdWxlcycsIHNjaGVkdWxlKTsKICAgICAgICBwYXJhbXMuY3VycmVudFdpdG5lc3MgPSB3aXRuZXNzLmFjY291bnQ7CiAgICAgICAgcGFyYW1zLmxhc3RXaXRuZXNzZXMucHVzaCh3aXRuZXNzLmFjY291bnQpOwogICAgICAgIHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2UgPSBhcGkuYmxvY2tOdW1iZXIKICAgICAgICAgICsgbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q7CiAgICAgICAgYXdhaXQgYXBpLmRiLnVwZGF0ZSgncGFyYW1zJywgcGFyYW1zKTsKCiAgICAgICAgLy8gdXBkYXRlIHRoZSBjdXJyZW50IHdpdG5lc3MKICAgICAgICBjb25zdCBzY2hlZHVsZWRXaXRuZXNzID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogY3VycmVudFdpdG5lc3MgfSk7CiAgICAgICAgc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMgKz0gMTsKICAgICAgICBzY2hlZHVsZWRXaXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdyArPSAxOwoKICAgICAgICAvLyBkaXNhYmxlIHRoZSB3aXRuZXNzIGlmIG1pc3NlZCBtYXhSb3VuZHNNaXNzZWRJbkFSb3cKICAgICAgICBpZiAoc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3cgPj0gbWF4Um91bmRzTWlzc2VkSW5BUm93KSB7CiAgICAgICAgICBzY2hlZHVsZWRXaXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdyA9IDA7CiAgICAgICAgICBzY2hlZHVsZWRXaXRuZXNzLmVuYWJsZWQgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3dpdG5lc3NlcycsIHNjaGVkdWxlZFdpdG5lc3MpOwogICAgICAgIHdpdG5lc3NGb3VuZCA9IHRydWU7CiAgICAgICAgYXBpLmVtaXQoJ2N1cnJlbnRXaXRuZXNzQ2hhbmdlZCcsIHsgfSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAgIH0KCiAgICBpZiAod2l0bmVzc0ZvdW5kID09PSBmYWxzZSkgewogICAgICBvZmZzZXQgKz0gMTAwOwogICAgICB3aXRuZXNzZXMgPSBhd2FpdCBhcGkuZGIuZmluZCgKICAgICAgICAnd2l0bmVzc2VzJywKICAgICAgICB7CiAgICAgICAgICBhcHByb3ZhbFdlaWdodDogewogICAgICAgICAgICAkZ3Q6IHsKICAgICAgICAgICAgICAkbnVtYmVyRGVjaW1hbDogJzAnLAogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIDEwMCwgLy8gbGltaXQKICAgICAgICBvZmZzZXQsIC8vIG9mZnNldAogICAgICAgIFsKICAgICAgICAgIHsgaW5kZXg6ICdhcHByb3ZhbFdlaWdodCcsIGRlc2NlbmRpbmc6IHRydWUgfSwKICAgICAgICBdLAogICAgICApOwogICAgfQogIH0gd2hpbGUgKHdpdG5lc3Nlcy5sZW5ndGggPiAwICYmIHdpdG5lc3NGb3VuZCA9PT0gZmFsc2UpOwoKICBpZiAod2l0bmVzc0ZvdW5kID09PSBmYWxzZSkgewogICAgYXBpLmRlYnVnKCdubyBiYWNrdXAgd2l0bmVzcyB3YXMgZm91bmQsIGludGVyY2hhbmdpbmcgd2l0bmVzc2VzIHdpdGhpbiB0aGUgY3VycmVudCBzY2hlZHVsZScpOwogICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNjaGVkdWxlcy5sZW5ndGggLSAxOyBpbmRleCArPSAxKSB7CiAgICAgIGNvbnN0IHNjaGVkID0gc2NoZWR1bGVzW2luZGV4XTsKICAgICAgY29uc3QgbmV3V2l0bmVzcyA9IHNjaGVkLndpdG5lc3M7CiAgICAgIGlmIChuZXdXaXRuZXNzICE9PSBwcmV2aW91c1JvdW5kV2l0bmVzcykgewogICAgICAgIGFwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2N1cnJlbnRXaXRuZXNzfSB0byAke25ld1dpdG5lc3N9YCk7CiAgICAgICAgc2NoZWR1bGUud2l0bmVzcyA9IG5ld1dpdG5lc3M7CiAgICAgICAgYXdhaXQgYXBpLmRiLnVwZGF0ZSgnc2NoZWR1bGVzJywgc2NoZWR1bGUpOwogICAgICAgIHNjaGVkLndpdG5lc3MgPSBjdXJyZW50V2l0bmVzczsKICAgICAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCdzY2hlZHVsZXMnLCBzY2hlZCk7CiAgICAgICAgcGFyYW1zLmN1cnJlbnRXaXRuZXNzID0gbmV3V2l0bmVzczsKICAgICAgICBwYXJhbXMubGFzdFdpdG5lc3Nlcy5wdXNoKG5ld1dpdG5lc3MpOwogICAgICAgIHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2UgPSBhcGkuYmxvY2tOdW1iZXIKICAgICAgICAgICsgbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q7CiAgICAgICAgYXdhaXQgYXBpLmRiLnVwZGF0ZSgncGFyYW1zJywgcGFyYW1zKTsKCiAgICAgICAgLy8gdXBkYXRlIHRoZSBjdXJyZW50IHdpdG5lc3MKICAgICAgICBjb25zdCBzY2hlZHVsZWRXaXRuZXNzID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogY3VycmVudFdpdG5lc3MgfSk7CiAgICAgICAgc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMgKz0gMTsKICAgICAgICBzY2hlZHVsZWRXaXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdyArPSAxOwoKICAgICAgICAvLyBkaXNhYmxlIHRoZSB3aXRuZXNzIGlmIG1pc3NlZCBtYXhSb3VuZHNNaXNzZWRJbkFSb3cKICAgICAgICBpZiAoc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3cgPj0gbWF4Um91bmRzTWlzc2VkSW5BUm93KSB7CiAgICAgICAgICBzY2hlZHVsZWRXaXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdyA9IDA7CiAgICAgICAgICBzY2hlZHVsZWRXaXRuZXNzLmVuYWJsZWQgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3dpdG5lc3NlcycsIHNjaGVkdWxlZFdpdG5lc3MpOwogICAgICAgIGFwaS5lbWl0KCdjdXJyZW50V2l0bmVzc0NoYW5nZWQnLCB7IH0pOwogICAgICAgIGJyZWFrOwogICAgICB9CiAgICB9CiAgfQp9OwoKY29uc3QgbWFuYWdlV2l0bmVzc2VzU2NoZWR1bGUgPSBhc3luYyAoKSA9PiB7CiAgaWYgKGFwaS5zZW5kZXIgIT09ICdudWxsJykgcmV0dXJuOwoKICBjb25zdCBwYXJhbXMgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgncGFyYW1zJywge30pOwogIGNvbnN0IHsKICAgIG51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMsCiAgICB0b3RhbEFwcHJvdmFsV2VpZ2h0LAogICAgbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIsCiAgICBibG9ja051bWJlcldpdG5lc3NDaGFuZ2UsCiAgICBsYXN0QmxvY2tSb3VuZCwKICAgIG51bWJlck9mVG9wV2l0bmVzc2VzLAogICAgbnVtYmVyT2ZXaXRuZXNzU2xvdHMsCiAgICBtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCwKICB9ID0gcGFyYW1zOwoKICAvLyBjaGVjayB0aGUgY3VycmVudCBzY2hlZHVsZQogIGNvbnN0IGN1cnJlbnRCbG9jayA9IGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyICsgMTsKICBsZXQgc2NoZWR1bGUgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgnc2NoZWR1bGVzJywgeyBibG9ja051bWJlcjogY3VycmVudEJsb2NrIH0pOwoKICAvLyBpZiB0aGUgY3VycmVudCBibG9jayBoYXMgbm90IGJlZW4gc2NoZWR1bGVkIGFscmVhZHkgd2UgaGF2ZSB0byBjcmVhdGUgYSBuZXcgc2NoZWR1bGUKICBpZiAoc2NoZWR1bGUgPT09IG51bGwpIHsKICAgIGFwaS5kZWJ1ZygnY2FsY3VsYXRpbmcgbmV3IHNjaGVkdWxlJyk7CiAgICBzY2hlZHVsZSA9IFtdOwoKICAgIC8vIHRoZXJlIGhhcyB0byBiZSBlbm91Z2ggdG9wIHdpdG5lc3NlcyB0byBzdGFydCBhIHNjaGVkdWxlCiAgICBpZiAobnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlcyA+PSBudW1iZXJPZldpdG5lc3NTbG90cykgewogICAgICAvKgogICAgICAgIGV4YW1wbGU6CiAgICAgICAgLT4gdG90YWwgYXBwcm92YWwgd2VpZ2h0ID0gMTAsMDAwCiAgICAgICAgLT4gIGFwcHJvdmFsIHdlaWdodHM6CiAgICAgICAgICBhY2N0IEEgOiAxMDAwIChmcm9tIDAgdG8gMTAwMCkKICAgICAgICAgIGFjY3QgQiA6IDkwMCAoZnJvbSAxMDAwLjAwMDAwMDAxIHRvIDE5MDApCiAgICAgICAgICBhY2N0IEMgOiA4MDAgKGZyb20gMTkwMC4wMDAwMDAwMSB0byAyNzAwKQogICAgICAgICAgYWNjdCBEIDogNzAwIChmcm9tIDI3MDAuMDAwMDAwMDEgdG8gMzQwMCkKICAgICAgICAgIC4uLgogICAgICAgICAgYWNjdCBuIDogZnJvbSAoKG4tMSkudXBwZXJCb3VuZCArIDAuMDAwMDAwMDEpIHRvIDEwLDAwMCkKICAgICAgICAgIC0+IHRvdGFsIGFwcHJvdmFsIHdlaWdodCB0b3Agd2l0bmVzc2VzIChBLUQpID0gMyw0MDAKICAgICAgICAgIC0+IHBpY2sgdXAgYmFja3VwIHdpdG5lc3NlcyAoRS1uKTogd2VpZ2h0IHJhbmdlOgogICAgICAgICAgICBmcm9tIDMsNDAwLjAwMDAwMDEgdG8gMTAsMDAwCiAgICAgICovCgogICAgICAvLyBnZXQgYSBkZXRlcm1pbmlzdGljIHJhbmRvbSB3ZWlnaHQKICAgICAgY29uc3QgcmFuZG9tID0gYXBpLnJhbmRvbSgpOwogICAgICBsZXQgcmFuZG9tV2VpZ2h0ID0gbnVsbDsKCiAgICAgIGxldCBvZmZzZXQgPSAwOwogICAgICBsZXQgYWNjV2VpZ2h0ID0gMDsKCiAgICAgIGxldCB3aXRuZXNzZXMgPSBhd2FpdCBhcGkuZGIuZmluZCgKICAgICAgICAnd2l0bmVzc2VzJywKICAgICAgICB7CiAgICAgICAgICBhcHByb3ZhbFdlaWdodDogewogICAgICAgICAgICAkZ3Q6IHsKICAgICAgICAgICAgICAkbnVtYmVyRGVjaW1hbDogJzAnLAogICAgICAgICAgICB9LAogICAgICAgICAgfSwKICAgICAgICB9LAogICAgICAgIDEwMCwgLy8gbGltaXQKICAgICAgICBvZmZzZXQsIC8vIG9mZnNldAogICAgICAgIFsKICAgICAgICAgIHsgaW5kZXg6ICdhcHByb3ZhbFdlaWdodCcsIGRlc2NlbmRpbmc6IHRydWUgfSwKICAgICAgICBdLAogICAgICApOwoKICAgICAgZG8gewogICAgICAgIGZvciAobGV0IGluZGV4ID0gMDsgaW5kZXggPCB3aXRuZXNzZXMubGVuZ3RoOyBpbmRleCArPSAxKSB7CiAgICAgICAgICBjb25zdCB3aXRuZXNzID0gd2l0bmVzc2VzW2luZGV4XTsKCiAgICAgICAgICAvLyBjYWxjdWxhdGUgYSByYW5kb20gd2VpZ2h0IGlmIG5vdCBkb25lIHlldAogICAgICAgICAgaWYgKHNjaGVkdWxlLmxlbmd0aCA+PSBudW1iZXJPZlRvcFdpdG5lc3NlcwogICAgICAgICAgICAmJiByYW5kb21XZWlnaHQgPT09IG51bGwpIHsKICAgICAgICAgICAgcmFuZG9tV2VpZ2h0ID0gYXBpLkJpZ051bWJlcihhY2NXZWlnaHQpCiAgICAgICAgICAgICAgLnBsdXMoR09WRVJOQU5DRV9UT0tFTl9NSU5fVkFMVUUpCiAgICAgICAgICAgICAgLnBsdXMoYXBpLkJpZ051bWJlcih0b3RhbEFwcHJvdmFsV2VpZ2h0KQogICAgICAgICAgICAgICAgLm1pbnVzKGFjY1dlaWdodCkKICAgICAgICAgICAgICAgIC50aW1lcyhyYW5kb20pCiAgICAgICAgICAgICAgICAudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwgMSkpCiAgICAgICAgICAgICAgLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pOwogICAgICAgICAgfQoKICAgICAgICAgIGFjY1dlaWdodCA9IGFwaS5CaWdOdW1iZXIoYWNjV2VpZ2h0KQogICAgICAgICAgICAucGx1cyh3aXRuZXNzLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKQogICAgICAgICAgICAudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7CgogICAgICAgICAgLy8gaWYgdGhlIHdpdG5lc3MgaXMgZW5hYmxlZAogICAgICAgICAgaWYgKHdpdG5lc3MuZW5hYmxlZCA9PT0gdHJ1ZSkgewogICAgICAgICAgICAvLyBpZiB3ZSBoYXZlbid0IGZvdW5kIGFsbCB0aGUgdG9wIHdpdG5lc3NlcyB5ZXQKICAgICAgICAgICAgaWYgKHNjaGVkdWxlLmxlbmd0aCA8IG51bWJlck9mVG9wV2l0bmVzc2VzCiAgICAgICAgICAgICAgfHwgYXBpLkJpZ051bWJlcihyYW5kb21XZWlnaHQpLmx0ZShhY2NXZWlnaHQpKSB7CiAgICAgICAgICAgICAgc2NoZWR1bGUucHVzaCh7CiAgICAgICAgICAgICAgICB3aXRuZXNzOiB3aXRuZXNzLmFjY291bnQsCiAgICAgICAgICAgICAgICBibG9ja051bWJlcjogbnVsbCwKICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgfQogICAgICAgICAgfQoKICAgICAgICAgIGlmIChzY2hlZHVsZS5sZW5ndGggPj0gbnVtYmVyT2ZXaXRuZXNzU2xvdHMpIHsKICAgICAgICAgICAgaW5kZXggPSB3aXRuZXNzZXMubGVuZ3RoOwogICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKHNjaGVkdWxlLmxlbmd0aCA8IG51bWJlck9mV2l0bmVzc1Nsb3RzKSB7CiAgICAgICAgICBvZmZzZXQgKz0gMTAwOwogICAgICAgICAgd2l0bmVzc2VzID0gYXdhaXQgYXBpLmRiLmZpbmQoCiAgICAgICAgICAgICd3aXRuZXNzZXMnLAogICAgICAgICAgICB7CiAgICAgICAgICAgICAgYXBwcm92YWxXZWlnaHQ6IHsKICAgICAgICAgICAgICAgICRndDogewogICAgICAgICAgICAgICAgICAkbnVtYmVyRGVjaW1hbDogJzAnLAogICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICB9LAogICAgICAgICAgICB9LAogICAgICAgICAgICAxMDAsIC8vIGxpbWl0CiAgICAgICAgICAgIG9mZnNldCwgLy8gb2Zmc2V0CiAgICAgICAgICAgIFsKICAgICAgICAgICAgICB7IGluZGV4OiAnYXBwcm92YWxXZWlnaHQnLCBkZXNjZW5kaW5nOiB0cnVlIH0sCiAgICAgICAgICAgIF0sCiAgICAgICAgICApOwogICAgICAgIH0KICAgICAgfSB3aGlsZSAod2l0bmVzc2VzLmxlbmd0aCA+IDAgJiYgc2NoZWR1bGUubGVuZ3RoIDwgbnVtYmVyT2ZXaXRuZXNzU2xvdHMpOwogICAgfQoKICAgIC8vIGlmIHRoZXJlIGFyZSBlbm91Z2ggd2l0bmVzc2VzIHNjaGVkdWxlZAogICAgaWYgKHNjaGVkdWxlLmxlbmd0aCA9PT0gbnVtYmVyT2ZXaXRuZXNzU2xvdHMpIHsKICAgICAgLy8gc2h1ZmZsZSB0aGUgd2l0bmVzc2VzCiAgICAgIGxldCBqOyBsZXQgeDsKICAgICAgZm9yIChsZXQgaSA9IHNjaGVkdWxlLmxlbmd0aCAtIDE7IGkgPiAwOyBpIC09IDEpIHsKICAgICAgICBjb25zdCByYW5kb20gPSBhcGkucmFuZG9tKCk7CiAgICAgICAgaiA9IE1hdGguZmxvb3IocmFuZG9tICogKGkgKyAxKSk7CiAgICAgICAgeCA9IHNjaGVkdWxlW2ldOwogICAgICAgIHNjaGVkdWxlW2ldID0gc2NoZWR1bGVbal07CiAgICAgICAgc2NoZWR1bGVbal0gPSB4OwogICAgICB9CgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUKICAgICAgbGV0IGxhc3RXaXRuZXNzZXMgPSBwYXJhbXMubGFzdFdpdG5lc3NlczsKICAgICAgY29uc3QgcHJldmlvdXNSb3VuZFdpdG5lc3MgPSBsYXN0V2l0bmVzc2VzLmxlbmd0aCA+IDAgPyBsYXN0V2l0bmVzc2VzW2xhc3RXaXRuZXNzZXMubGVuZ3RoIC0gMV0gOiAnJzsKCiAgICAgIGlmIChsYXN0V2l0bmVzc2VzLmxlbmd0aCA+PSBudW1iZXJPZldpdG5lc3NTbG90cykgewogICAgICAgIGxhc3RXaXRuZXNzZXMgPSBbXTsKICAgICAgfQoKICAgICAgLy8gbWFrZSBzdXJlIHRoZSBsYXN0IHdpdG5lc3Mgb2YgdGhpcyByb3VuZCBpcyBub3Qgb25lIG9mIHRoZSBsYXN0IHdpdG5lc3NlcyBzY2hlZHVsZWQKICAgICAgY29uc3QgbGFzdFdpdG5lc3MgPSBzY2hlZHVsZVtzY2hlZHVsZS5sZW5ndGggLSAxXS53aXRuZXNzOwogICAgICBpZiAobGFzdFdpdG5lc3Nlcy5pbmNsdWRlcyhsYXN0V2l0bmVzcykgfHwgcHJldmlvdXNSb3VuZFdpdG5lc3MgPT09IGxhc3RXaXRuZXNzKSB7CiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZS5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgICAgaWYgKCFsYXN0V2l0bmVzc2VzLmluY2x1ZGVzKHNjaGVkdWxlW2ldLndpdG5lc3MpCiAgICAgICAgICAgICYmIHNjaGVkdWxlW2ldLndpdG5lc3MgIT09IHByZXZpb3VzUm91bmRXaXRuZXNzKSB7CiAgICAgICAgICAgIGNvbnN0IHRoaXNXaXRuZXNzID0gc2NoZWR1bGVbaV0ud2l0bmVzczsKICAgICAgICAgICAgc2NoZWR1bGVbaV0ud2l0bmVzcyA9IGxhc3RXaXRuZXNzOwogICAgICAgICAgICBzY2hlZHVsZVtzY2hlZHVsZS5sZW5ndGggLSAxXS53aXRuZXNzID0gdGhpc1dpdG5lc3M7CiAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgfQogICAgICAgIH0KICAgICAgfQoKICAgICAgLy8gbWFrZSBzdXJlIHRoZSB3aXRuZXNzIG9mIHRoZSBwcmV2aW91cyByb3VuZCBpcyBub3QgdGhlIGZpcnN0IHdpdG5lc3Mgb2YgdGhpcyByb3VuZAogICAgICBpZiAoc2NoZWR1bGVbMF0ud2l0bmVzcyA9PT0gcHJldmlvdXNSb3VuZFdpdG5lc3MpIHsKICAgICAgICBjb25zdCBmaXJzdFdpdG5lc3MgPSBzY2hlZHVsZVswXS53aXRuZXNzOwogICAgICAgIGNvbnN0IHNlY29uZFdpdG5lc3MgPSBzY2hlZHVsZVsxXS53aXRuZXNzOwogICAgICAgIHNjaGVkdWxlWzBdLndpdG5lc3MgPSBzZWNvbmRXaXRuZXNzOwogICAgICAgIHNjaGVkdWxlWzFdLndpdG5lc3MgPSBmaXJzdFdpdG5lc3M7CiAgICAgIH0KCiAgICAgIC8vIGJsb2NrIG51bWJlciBhdHRyaWJ1dGlvbgogICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWRlc3RydWN0dXJpbmcKICAgICAgbGV0IGJsb2NrTnVtYmVyID0gbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIgPT09IDAKICAgICAgICA/IGFwaS5ibG9ja051bWJlcgogICAgICAgIDogbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIgKyAxOwogICAgICBwYXJhbXMucm91bmQgKz0gMTsKICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzY2hlZHVsZS5sZW5ndGg7IGkgKz0gMSkgewogICAgICAgIC8vIHRoZSBibG9jayBudW1iZXIgdGhhdCB0aGUgd2l0bmVzcyB3aWxsIGhhdmUgdG8gInNpZ24iCiAgICAgICAgc2NoZWR1bGVbaV0uYmxvY2tOdW1iZXIgPSBibG9ja051bWJlcjsKICAgICAgICBzY2hlZHVsZVtpXS5yb3VuZCA9IHBhcmFtcy5yb3VuZDsKICAgICAgICBhcGkuZGVidWcoYHNjaGVkdWxlZCB3aXRuZXNzICR7c2NoZWR1bGVbaV0ud2l0bmVzc30gZm9yIGJsb2NrICR7YmxvY2tOdW1iZXJ9IChyb3VuZCAke3BhcmFtcy5yb3VuZH0pYCk7CiAgICAgICAgYXdhaXQgYXBpLmRiLmluc2VydCgnc2NoZWR1bGVzJywgc2NoZWR1bGVbaV0pOwogICAgICAgIGJsb2NrTnVtYmVyICs9IDE7CiAgICAgIH0KCiAgICAgIGlmIChsYXN0VmVyaWZpZWRCbG9ja051bWJlciA9PT0gMCkgewogICAgICAgIHBhcmFtcy5sYXN0VmVyaWZpZWRCbG9ja051bWJlciA9IGFwaS5ibG9ja051bWJlciAtIDE7CiAgICAgIH0KICAgICAgY29uc3QgbGFzdFdpdG5lc3NSb3VuZFNjaGVkdWxlID0gc2NoZWR1bGVbc2NoZWR1bGUubGVuZ3RoIC0gMV07CiAgICAgIHBhcmFtcy5sYXN0QmxvY2tSb3VuZCA9IGxhc3RXaXRuZXNzUm91bmRTY2hlZHVsZS5ibG9ja051bWJlcjsKICAgICAgcGFyYW1zLmN1cnJlbnRXaXRuZXNzID0gbGFzdFdpdG5lc3NSb3VuZFNjaGVkdWxlLndpdG5lc3M7CiAgICAgIGxhc3RXaXRuZXNzZXMucHVzaChsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUud2l0bmVzcyk7CiAgICAgIHBhcmFtcy5sYXN0V2l0bmVzc2VzID0gbGFzdFdpdG5lc3NlczsKICAgICAgcGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZSA9IGFwaS5ibG9ja051bWJlcgogICAgICAgICsgbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q7CiAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3BhcmFtcycsIHBhcmFtcyk7CiAgICAgIGFwaS5lbWl0KCduZXdTY2hlZHVsZScsIHsgfSk7CiAgICB9CiAgfSBlbHNlIGlmIChhcGkuYmxvY2tOdW1iZXIgPj0gYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlKSB7CiAgICBpZiAoYXBpLmJsb2NrTnVtYmVyID4gbGFzdEJsb2NrUm91bmQpIHsKICAgICAgLy8gb3RoZXJ3aXNlIHdlIGNoYW5nZSB0aGUgY3VycmVudCB3aXRuZXNzIGlmIGl0IGhhcyBub3QgcHJvcG9zZWQgdGhlIHJvdW5kIGluIHRpbWUKICAgICAgYXdhaXQgY2hhbmdlQ3VycmVudFdpdG5lc3MoKTsKICAgIH0gZWxzZSB7CiAgICAgIHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2UgPSBhcGkuYmxvY2tOdW1iZXIKICAgICAgICArIG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOwogICAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCdwYXJhbXMnLCBwYXJhbXMpOwogICAgICBhcGkuZW1pdCgnYXdhaXRpbmdSb3VuZEVuZCcsIHsgfSk7CiAgICB9CiAgfQp9OwoKYWN0aW9ucy5wcm9wb3NlUm91bmQgPSBhc3luYyAocGF5bG9hZCkgPT4gewogIGNvbnN0IHsKICAgIHJvdW5kSGFzaCwKICAgIGlzU2lnbmVkV2l0aEFjdGl2ZUtleSwKICAgIHNpZ25hdHVyZXMsCiAgfSA9IHBheWxvYWQ7CgogIGNvbnN0IHBhcmFtcyA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCdwYXJhbXMnLCB7fSk7CiAgY29uc3QgewogICAgbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIsCiAgICByb3VuZCwKICAgIGxhc3RCbG9ja1JvdW5kLAogICAgY3VycmVudFdpdG5lc3MsCiAgfSA9IHBhcmFtczsKICBjb25zdCBzY2hlZHVsZXMgPSBhd2FpdCBhcGkuZGIuZmluZCgnc2NoZWR1bGVzJywgeyByb3VuZCB9LCAxMDAwLCAwLCBbeyBpbmRleDogJ19pZCcsIGRlc2NlbmRpbmc6IGZhbHNlIH1dKTsKCiAgY29uc3QgbnVtYmVyT2ZXaXRuZXNzU2xvdHMgPSBzY2hlZHVsZXMubGVuZ3RoOwogIGNvbnN0IHsgd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCB9ID0gcGFyYW1zOwoKICBpZiAoaXNTaWduZWRXaXRoQWN0aXZlS2V5ID09PSB0cnVlCiAgICAmJiByb3VuZEhhc2ggJiYgdHlwZW9mIHJvdW5kSGFzaCA9PT0gJ3N0cmluZycgJiYgcm91bmRIYXNoLmxlbmd0aCA9PT0gNjQKICAgICYmIEFycmF5LmlzQXJyYXkoc2lnbmF0dXJlcykKICAgICYmIHNpZ25hdHVyZXMubGVuZ3RoIDw9IG51bWJlck9mV2l0bmVzc1Nsb3RzCiAgICAmJiBzaWduYXR1cmVzLmxlbmd0aCA+PSB3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSB7CiAgICBsZXQgY3VycmVudEJsb2NrID0gbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIgKyAxOwogICAgbGV0IGNhbGN1bGF0ZWRSb3VuZEhhc2ggPSAnJzsKCiAgICAvLyB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIGN1cnJlbnQgd2l0bmVzcyBvZiB0aGUgcm91bmQKICAgIGlmIChhcGkuc2VuZGVyID09PSBjdXJyZW50V2l0bmVzcykgewogICAgICAvLyBjYWxjdWxhdGUgcm91bmQgaGFzaAogICAgICB3aGlsZSAoY3VycmVudEJsb2NrIDw9IGxhc3RCbG9ja1JvdW5kKSB7CiAgICAgICAgY29uc3QgYmxvY2sgPSBhd2FpdCBhcGkuZGIuZ2V0QmxvY2tJbmZvKGN1cnJlbnRCbG9jayk7CgogICAgICAgIGlmIChibG9jayAhPT0gbnVsbCkgewogICAgICAgICAgY2FsY3VsYXRlZFJvdW5kSGFzaCA9IGFwaS5TSEEyNTYoYCR7Y2FsY3VsYXRlZFJvdW5kSGFzaH0ke2Jsb2NrLmhhc2h9YCk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgIGNhbGN1bGF0ZWRSb3VuZEhhc2ggPSAnJzsKICAgICAgICAgIGJyZWFrOwogICAgICAgIH0KCiAgICAgICAgY3VycmVudEJsb2NrICs9IDE7CiAgICAgIH0KCiAgICAgIGlmIChjYWxjdWxhdGVkUm91bmRIYXNoICE9PSAnJyAmJiBjYWxjdWxhdGVkUm91bmRIYXNoID09PSByb3VuZEhhc2gpIHsKICAgICAgICAvLyBjaGVjayB0aGUgc2lnbmF0dXJlcwogICAgICAgIGxldCBzaWduYXR1cmVzQ2hlY2tlZCA9IDA7CiAgICAgICAgY29uc3QgdmVyaWZpZWRCbG9ja0luZm9ybWF0aW9uID0gW107CiAgICAgICAgY29uc3QgY3VycmVudFdpdG5lc3NJbmZvID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogY3VycmVudFdpdG5lc3MgfSk7CiAgICAgICAgY29uc3QgY3VycmVudFdpdG5lc3NTaWduYXR1cmUgPSBzaWduYXR1cmVzLmZpbmQocyA9PiBzWzBdID09PSBjdXJyZW50V2l0bmVzcyk7CiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNjaGVkdWxlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHsKICAgICAgICAgIGNvbnN0IHNjaGVkdWxlZFdpdG5lc3MgPSBzY2hlZHVsZXNbaW5kZXhdOwogICAgICAgICAgY29uc3Qgd2l0bmVzcyA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCd3aXRuZXNzZXMnLCB7IGFjY291bnQ6IHNjaGVkdWxlZFdpdG5lc3Mud2l0bmVzcyB9KTsKICAgICAgICAgIGlmICh3aXRuZXNzICE9PSBudWxsKSB7CiAgICAgICAgICAgIGNvbnN0IHNpZ25hdHVyZSA9IHNpZ25hdHVyZXMuZmluZChzID0+IHNbMF0gPT09IHdpdG5lc3MuYWNjb3VudCk7CiAgICAgICAgICAgIGlmIChzaWduYXR1cmUpIHsKICAgICAgICAgICAgICBpZiAoYXBpLmNoZWNrU2lnbmF0dXJlKAogICAgICAgICAgICAgICAgY2FsY3VsYXRlZFJvdW5kSGFzaCwgc2lnbmF0dXJlWzFdLCB3aXRuZXNzLnNpZ25pbmdLZXksIHRydWUsCiAgICAgICAgICAgICAgKSkgewogICAgICAgICAgICAgICAgYXBpLmRlYnVnKGB3aXRuZXNzICR7d2l0bmVzcy5hY2NvdW50fSBzaWduZWQgcm91bmQgJHtyb3VuZH1gKTsKICAgICAgICAgICAgICAgIHNpZ25hdHVyZXNDaGVja2VkICs9IDE7CiAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyB0aGUgY3VycmVudCB3aXRuZXNzIHdpbGwgc2hvdyBhcyB0aGUgd2l0bmVzcyB0aGF0IHZlcmlmaWVkIHRoZSBibG9ja3MgZnJvbSB0aGUgcm91bmQKICAgICAgICAgICAgdmVyaWZpZWRCbG9ja0luZm9ybWF0aW9uLnB1c2goCiAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgYmxvY2tOdW1iZXI6IHNjaGVkdWxlZFdpdG5lc3MuYmxvY2tOdW1iZXIsCiAgICAgICAgICAgICAgICB3aXRuZXNzOiBjdXJyZW50V2l0bmVzcywKICAgICAgICAgICAgICAgIHNpZ25pbmdLZXk6IGN1cnJlbnRXaXRuZXNzSW5mby5zaWduaW5nS2V5LAogICAgICAgICAgICAgICAgcm91bmRTaWduYXR1cmU6IGN1cnJlbnRXaXRuZXNzU2lnbmF0dXJlWzFdLAogICAgICAgICAgICAgICAgcm91bmQsCiAgICAgICAgICAgICAgICByb3VuZEhhc2gsCiAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgKTsKICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChzaWduYXR1cmVzQ2hlY2tlZCA+PSB3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSB7CiAgICAgICAgICAvLyBtYXJrIGJsb2NrcyBvZiB0aGUgdmVyaWZpZWQgcm91bmQgYXMgdmVyaWZpZWQgYnkgdGhlIGN1cnJlbnQgd2l0bmVzcwogICAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHZlcmlmaWVkQmxvY2tJbmZvcm1hdGlvbi5sZW5ndGg7IGluZGV4ICs9IDEpIHsKICAgICAgICAgICAgYXdhaXQgYXBpLnZlcmlmeUJsb2NrKHZlcmlmaWVkQmxvY2tJbmZvcm1hdGlvbltpbmRleF0pOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIGdldCBjb250cmFjdCBiYWxhbmNlCiAgICAgICAgICBjb25zdCBjb250cmFjdEJhbGFuY2UgPSBhd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoJ3Rva2VucycsICdjb250cmFjdHNCYWxhbmNlcycsIHsgYWNjb3VudDogJ3dpdG5lc3NlcycsIHN5bWJvbDogVVRJTElUWV9UT0tFTl9TWU1CT0wgfSk7CiAgICAgICAgICBsZXQgcmV3YXJkV2l0bmVzc2VzID0gZmFsc2U7CgogICAgICAgICAgaWYgKGNvbnRyYWN0QmFsYW5jZQogICAgICAgICAgICAmJiBhcGkuQmlnTnVtYmVyKGNvbnRyYWN0QmFsYW5jZS5iYWxhbmNlKS5ndGUoTkJfVE9LRU5TX05FRURFRF9CRUZPUkVfUkVXQVJESU5HKSkgewogICAgICAgICAgICByZXdhcmRXaXRuZXNzZXMgPSB0cnVlOwogICAgICAgICAgfQoKICAgICAgICAgIC8vIHJlbW92ZSB0aGUgc2NoZWR1bGVzCiAgICAgICAgICBmb3IgKGxldCBpbmRleCA9IDA7IGluZGV4IDwgc2NoZWR1bGVzLmxlbmd0aDsgaW5kZXggKz0gMSkgewogICAgICAgICAgICBjb25zdCBzY2hlZHVsZSA9IHNjaGVkdWxlc1tpbmRleF07CiAgICAgICAgICAgIC8vIHJld2FyZCB0aGUgd2l0bmVzcyB0aGF0IGhlbHAgdmVyaWZ5aW5nIHRoaXMgcm91bmQKICAgICAgICAgICAgaWYgKHJld2FyZFdpdG5lc3NlcyA9PT0gdHJ1ZSkgewogICAgICAgICAgICAgIGF3YWl0IGFwaS50cmFuc2ZlclRva2VucyhzY2hlZHVsZS53aXRuZXNzLCBVVElMSVRZX1RPS0VOX1NZTUJPTCwgTkJfVE9LRU5TX1RPX1JFV0FSRCwgJ3VzZXInKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBhd2FpdCBhcGkuZGIucmVtb3ZlKCdzY2hlZHVsZXMnLCBzY2hlZHVsZSk7CiAgICAgICAgICB9CgogICAgICAgICAgcGFyYW1zLmN1cnJlbnRXaXRuZXNzID0gbnVsbDsKICAgICAgICAgIHBhcmFtcy5sYXN0VmVyaWZpZWRCbG9ja051bWJlciA9IGxhc3RCbG9ja1JvdW5kOwogICAgICAgICAgYXdhaXQgYXBpLmRiLnVwZGF0ZSgncGFyYW1zJywgcGFyYW1zKTsKCiAgICAgICAgICAvLyB1cGRhdGUgaW5mb3JtYXRpb24gZm9yIHRoZSBjdXJyZW50IHdpdG5lc3MKICAgICAgICAgIGNvbnN0IHdpdG5lc3MgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgnd2l0bmVzc2VzJywgeyBhY2NvdW50OiBjdXJyZW50V2l0bmVzcyB9KTsKICAgICAgICAgIHdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93ID0gMDsKICAgICAgICAgIHdpdG5lc3MubGFzdFJvdW5kVmVyaWZpZWQgPSByb3VuZDsKICAgICAgICAgIHdpdG5lc3MubGFzdEJsb2NrVmVyaWZpZWQgPSBsYXN0QmxvY2tSb3VuZDsKICAgICAgICAgIHdpdG5lc3MudmVyaWZpZWRSb3VuZHMgKz0gMTsKICAgICAgICAgIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3dpdG5lc3NlcycsIHdpdG5lc3MpOwoKICAgICAgICAgIC8vIGNhbGN1bGF0ZSBuZXcgc2NoZWR1bGUKICAgICAgICAgIGF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCk7CiAgICAgICAgfQogICAgICB9CiAgICB9CiAgfQp9OwoKYWN0aW9ucy5zY2hlZHVsZVdpdG5lc3NlcyA9IGFzeW5jICgpID0+IHsKICBpZiAoYXBpLnNlbmRlciAhPT0gJ251bGwnKSByZXR1cm47CgogIGF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCk7Cn07"}}}



0
0
0.000
4 comments
avatar

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"LyogZXNsaW50LWRpc2FibGUgbm8tYXdhaXQtaW4tbG9vcCAqLwovKiBnbG9iYWwgYWN0aW9ucywgYXBpICovCgpjb25zdCBOQl9BUFBST1ZBTFNfQUxMT1dFRCA9IDMwOwpjb25zdCBOQl9UT1BfV0lUTkVTU0VTID0gMjA7CmNvbnN0IE5CX0JBQ0tVUF9XSVRORVNTRVMgPSAxOwpjb25zdCBOQl9XSVRORVNTRVMgPSBOQl9UT1BfV0lUTkVTU0VTICsgTkJfQkFDS1VQX1dJVE5FU1NFUzsKY29uc3QgTkJfV0lUTkVTU0VTX1NJR05BVFVSRVNfUkVRVUlSRUQgPSAxNDsKY29uc3QgTUFYX1JPVU5EU19NSVNTRURfSU5fQV9ST1cgPSAzOyAvLyBhZnRlciB0aGF0IHRoZSB3aXRuZXNzIGlzIGRpc2FibGVkCmNvbnN0IE1BWF9ST1VORF9QUk9QT1NJVElPTl9XQUlUSU5HX1BFUklPRCA9IDQwOyAvLyBudW1iZXIgb2YgYmxvY2tzCmNvbnN0IE5CX1RPS0VOU19UT19SRVdBUkQgPSAnMC4wMDk1MTI5Myc7IC8vIGluZmxhdGlvbi5qcyB0b2tlbnMgcGVyIGJsb2NrCmNvbnN0IE5CX1RPS0VOU19ORUVERURfQkVGT1JFX1JFV0FSRElORyA9ICcwLjA0NzU2NDY1JzsgLy8gNXggdG8gcmV3YXJkCi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby10ZW1wbGF0ZS1jdXJseS1pbi1zdHJpbmcKY29uc3QgVVRJTElUWV9UT0tFTl9TWU1CT0wgPSAiJyR7Q09OU1RBTlRTLlVUSUxJVFlfVE9LRU5fU1lNQk9MfSQnIjsKLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXRlbXBsYXRlLWN1cmx5LWluLXN0cmluZwpjb25zdCBHT1ZFUk5BTkNFX1RPS0VOX1NZTUJPTCA9ICJCRUUiOwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGVtcGxhdGUtY3VybHktaW4tc3RyaW5nCmNvbnN0IEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OID0gJyR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OfSQnOwovLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdGVtcGxhdGUtY3VybHktaW4tc3RyaW5nCmNvbnN0IEdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFID0gJyR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFfSQnOwoKYWN0aW9ucy5jcmVhdGVTU0MgPSBhc3luYyAoKSA9PiB7CiAgY29uc3QgdGFibGVFeGlzdHMgPSBhd2FpdCBhcGkuZGIudGFibGVFeGlzdHMoJ3dpdG5lc3NlcycpOwoKICBpZiAodGFibGVFeGlzdHMgPT09IGZhbHNlKSB7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ3dpdG5lc3NlcycsIFsnYXBwcm92YWxXZWlnaHQnXSk7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ2FwcHJvdmFscycsIFsnZnJvbScsICd0byddKTsKICAgIGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgnYWNjb3VudHMnLCBbJ2FjY291bnQnXSk7CiAgICBhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoJ3NjaGVkdWxlcycpOwogICAgYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCdwYXJhbXMnKTsKCiAgICBjb25zdCBwYXJhbXMgPSB7CiAgICAgIHRvdGFsQXBwcm92YWxXZWlnaHQ6ICcwJywKICAgICAgbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczogMCwKICAgICAgbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6IDAsCiAgICAgIHJvdW5kOiAwLAogICAgICBsYXN0QmxvY2tSb3VuZDogMCwKICAgICAgY3VycmVudFdpdG5lc3M6IG51bGwsCiAgICAgIGJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZTogMCwKICAgICAgbGFzdFdpdG5lc3NlczogW10sCiAgICAgIG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDogTkJfQVBQUk9WQUxTX0FMTE9XRUQsCiAgICAgIG51bWJlck9mVG9wV2l0bmVzc2VzOiBOQl9UT1BfV0lUTkVTU0VTLAogICAgICBudW1iZXJPZldpdG5lc3NTbG90czogTkJfV0lUTkVTU0VTLAogICAgICB3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOiBOQl9XSVRORVNTRVNfU0lHTkFUVVJFU19SRVFVSVJFRCwKICAgICAgbWF4Um91bmRzTWlzc2VkSW5BUm93OiBNQVhfUk9VTkRTX01JU1NFRF9JTl9BX1JPVywKICAgICAgbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6IE1BWF9ST1VORF9QUk9QT1NJVElPTl9XQUlUSU5HX1BFUklPRCwKICAgIH07CgogICAgYXdhaXQgYXBpLmRiLmluc2VydCgncGFyYW1zJywgcGFyYW1zKTsKICB9Cn07CgphY3Rpb25zLnJlc2V0U2NoZWR1bGUgPSBhc3luYyAoKSA9PiB7CiAgaWYgKGFwaS5zZW5kZXIgIT09IGFwaS5vd25lcikgcmV0dXJuOwoKICBjb25zdCBzY2hlZHVsZXMgPSBhd2FpdCBhcGkuZGIuZmluZCgnc2NoZWR1bGVzJywgeyB9KTsKCiAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHNjaGVkdWxlcy5sZW5ndGg7IGluZGV4ICs9IDEpIHsKICAgIGNvbnN0IHNjaGVkdWxlID0gc2NoZWR1bGVzW2luZGV4XTsKICAgIGF3YWl0IGFwaS5kYi5yZW1vdmUoJ3NjaGVkdWxlcycsIHNjaGVkdWxlKTsKICB9CgogIGNvbnN0IHBhcmFtcyA9IGF3YWl0IGFwaS5kYi5maW5kT25lKCdwYXJhbXMnLCB7fSk7CiAgcGFyYW1zLmN1cnJlbnRXaXRuZXNzID0gbnVsbDsKICBwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlID0gMDsKICBwYXJhbXMubGFzdFdpdG5lc3NlcyA9IFtdOwogIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3BhcmFtcycsIHBhcmFtcyk7Cn07CgphY3Rpb25zLnVwZGF0ZVBhcmFtcyA9IGFzeW5jIChwYXlsb2FkKSA9PiB7CiAgaWYgKGFwaS5zZW5kZXIgIT09IGFwaS5vd25lcikgcmV0dXJuOwoKICBjb25zdCB7CiAgICBudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsCiAgICBudW1iZXJPZlRvcFdpdG5lc3NlcywKICAgIG51bWJlck9mV2l0bmVzc1Nsb3RzLAogICAgd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCwKICAgIG1heFJvdW5kc01pc3NlZEluQVJvdywKICAgIG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLAogIH0gPSBwYXlsb2FkOwoKICBjb25zdCBwYXJhbXMgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgncGFyYW1zJywge30pOwogIGxldCBzaG91bGRSZXNldFNjaGVkdWxlID0gZmFsc2U7CgogIGlmIChudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQpKSB7CiAgICBwYXJhbXMubnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50ID0gbnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50OwogIH0KICBpZiAobnVtYmVyT2ZUb3BXaXRuZXNzZXMgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZlRvcFdpdG5lc3NlcykpIHsKICAgIHBhcmFtcy5udW1iZXJPZlRvcFdpdG5lc3NlcyA9IG51bWJlck9mVG9wV2l0bmVzc2VzOwogIH0KICBpZiAobnVtYmVyT2ZXaXRuZXNzU2xvdHMgJiYgTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZldpdG5lc3NTbG90cykKICAgICAgJiYgcGFyYW1zLm51bWJlck9mV2l0bmVzc1Nsb3RzICE9PSBudW1iZXJPZldpdG5lc3NTbG90cykgewogICAgc2hvdWxkUmVzZXRTY2hlZHVsZSA9IHRydWU7CiAgICBwYXJhbXMubnVtYmVyT2ZXaXRuZXNzU2xvdHMgPSBudW1iZXJPZldpdG5lc3NTbG90czsKICB9CiAgaWYgKHdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQgJiYgTnVtYmVyLmlzSW50ZWdlcih3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSkgewogICAgcGFyYW1zLndpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQgPSB3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOwogIH0KICBpZiAobWF4Um91bmRzTWlzc2VkSW5BUm93ICYmIE51bWJlci5pc0ludGVnZXIobWF4Um91bmRzTWlzc2VkSW5BUm93KSkgewogICAgcGFyYW1zLm1heFJvdW5kc01pc3NlZEluQVJvdyA9IG1heFJvdW5kc01pc3NlZEluQVJvdzsKICB9CiAgaWYgKG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kICYmIE51bWJlci5pc0ludGVnZXIobWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QpKSB7CiAgICBwYXJhbXMubWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QgPSBtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDsKICB9CiAgaWYgKCFhcGkuYXNzZXJ0KHBhcmFtcy5udW1iZXJPZlRvcFdpdG5lc3NlcyArIDEgPT09IHBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cywgJ29ubHkgMSBiYWNrdXAgYWxsb3dlZCcpKSB7CiAgICByZXR1cm47CiAgfQogIGF3YWl0IGFwaS5kYi51cGRhdGUoJ3BhcmFtcycsIHBhcmFtcyk7CiAgaWYgKHNob3VsZFJlc2V0U2NoZWR1bGUpIHsKICAgIGF3YWl0IGFjdGlvbnMucmVzZXRTY2hlZHVsZSgpOwogIH0KfTsKCmNvbnN0IHVwZGF0ZVdpdG5lc3NSYW5rID0gYXN5bmMgKHdpdG5lc3MsIGFwcHJvdmFsV2VpZ2h0KSA9PiB7CiAgLy8gY2hlY2sgaWYgd2l0bmVzcyBleGlzdHMKICBjb25zdCB3aXRuZXNzUmVjID0gYXdhaXQgYXBpLmRiLmZpbmRPbmUoJ3dpdG5lc3NlcycsIHsgYWNjb3VudDogd2l0bmVzcyB9KTsKCiAgaWYgKHdpdG5lc3NSZWMpIHsKICAgIC8vIHVwZGF0ZSB3aXRuZXNzIGFwcHJvdmFsV2VpZ2h0CiAgICBjb25zdCBvbGRBcHByb3ZhbFdlaWdodCA9IHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw7CiAgICB3aXRuZXNzUmVjLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsID0gYXBpLkJpZ051bWJlcigKICAgICAgd2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCwKICAgICkKICAgICAgLnBsdXMoYXBwcm92YWxXZWlnaHQpCiAgICAgIC50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKTsKCiAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCd3aXRuZXNzZXMnLCB3aXRuZXNzUmVjKTsKCiAgICBjb25zdCBwYXJhbXMgPSBhd2FpdCBhcGkuZGIuZmluZE9uZSgncGFyYW1zJywge30pOwoKICAgIC8vIHVwZGF0ZSB0b3RhbEFwcHJvdmFsV2VpZ2h0CiAgICBwYXJhbXMudG90YWxBcHByb3ZhbFdlaWdodCA9IGFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsQXBwcm92YWxXZWlnaHQpCiAgICAgIC5wbHVzKGFwcHJvdmFsV2VpZ2h0KQogICAgICAudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTik7CgogICAgLy8gdXBkYXRlIG51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMKICAgIGlmIChhcGkuQmlnTnVtYmVyKG9sZEFwcHJvdmFsV2VpZ2h0KS5lcSgwKQogICAgICAmJiBhcGkuQmlnTnVtYmVyKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLmd0KDApKSB7CiAgICAgIHBhcmFtcy5udW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzICs9IDE7CiAgICB9IGVsc2UgaWYgKGFwaS5CaWdOdW1iZXIob2xkQXBwcm92YWxXZWlnaHQpLmd0KDApCiAgICAgICYmIGFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkuZXEoMCkpIHsKICAgICAgcGFyYW1zLm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMgLT0gMTsKICAgIH0KCiAgICBhd2FpdCBhcGkuZGIudXBkYXRlKCdwYXJhbXMnLCBwYXJhbXMpOwogIH0KfTsKCmFjdGlvbnMudXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzID0gYXN5bmMgKHBheWxvYWQpID0"}}}

0
0
0.000
avatar

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"Y29uc3QgTkJfQVBQUk9WQUxTX0FMTE9XRUQ9MzAsTkJfVE9QX1dJVE5FU1NFUz0yMCxOQl9CQUNLVVBfV0lUTkVTU0VTPTEsTkJfV0lUTkVTU0VTPTIxLE5CX1dJVE5FU1NFU19TSUdOQVRVUkVTX1JFUVVJUkVEPTE0LE1BWF9ST1VORFNfTUlTU0VEX0lOX0FfUk9XPTMsTUFYX1JPVU5EX1BST1BPU0lUSU9OX1dBSVRJTkdfUEVSSU9EPTQwLE5CX1RPS0VOU19UT19SRVdBUkQ9IjAuMDA5NTEyOTMiLE5CX1RPS0VOU19ORUVERURfQkVGT1JFX1JFV0FSRElORz0iMC4wNDc1NjQ2NSIsVVRJTElUWV9UT0tFTl9TWU1CT0w9Iicke0NPTlNUQU5UUy5VVElMSVRZX1RPS0VOX1NZTUJPTH0kJyIsR09WRVJOQU5DRV9UT0tFTl9TWU1CT0w9IkJFRSIsR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT049IiR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OfSQiLEdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFPSIke0NPTlNUQU5UUy5HT1ZFUk5BTkNFX1RPS0VOX01JTl9WQUxVRX0kIjthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57bGV0IGE9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ3aXRuZXNzZXMiKTtpZighMT09PWEpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgid2l0bmVzc2VzIixbImFwcHJvdmFsV2VpZ2h0Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYXBwcm92YWxzIixbImZyb20iLCJ0byJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImFjY291bnRzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJzY2hlZHVsZXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2xldCBiPXt0b3RhbEFwcHJvdmFsV2VpZ2h0OiIwIixudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzOjAsbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6MCxyb3VuZDowLGxhc3RCbG9ja1JvdW5kOjAsY3VycmVudFdpdG5lc3M6bnVsbCxibG9ja051bWJlcldpdG5lc3NDaGFuZ2U6MCxsYXN0V2l0bmVzc2VzOltdLG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDozMCxudW1iZXJPZlRvcFdpdG5lc3NlczoyMCxudW1iZXJPZldpdG5lc3NTbG90czoyMSx3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOjE0LG1heFJvdW5kc01pc3NlZEluQVJvdzozLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOjQwfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLGIpfX0sYWN0aW9ucy5yZXNldFNjaGVkdWxlPWFzeW5jKCk9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtsZXQgYz1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7fSk7Zm9yKGxldCBiPTA7YjxjLmxlbmd0aDtiKz0xKXtsZXQgZD1jW2JdO2F3YWl0IGFwaS5kYi5yZW1vdmUoInNjaGVkdWxlcyIsZCl9bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2EuY3VycmVudFdpdG5lc3M9bnVsbCxhLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT0wLGEubGFzdFdpdG5lc3Nlcz1bXSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGEpfSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBpPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47bGV0e251bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDpjLG51bWJlck9mVG9wV2l0bmVzc2VzOmQsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6Yix3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOmUsbWF4Um91bmRzTWlzc2VkSW5BUm93OmYsbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6Z309aSxhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxoPSExO2MmJk51bWJlci5pc0ludGVnZXIoYykmJihhLm51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudD1jKSxkJiZOdW1iZXIuaXNJbnRlZ2VyKGQpJiYoYS5udW1iZXJPZlRvcFdpdG5lc3Nlcz1kKSxiJiZOdW1iZXIuaXNJbnRlZ2VyKGIpJiZhLm51bWJlck9mV2l0bmVzc1Nsb3RzIT09YiYmKGg9ITAsYS5udW1iZXJPZldpdG5lc3NTbG90cz1iKSxlJiZOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoYS53aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkPWUpLGYmJk51bWJlci5pc0ludGVnZXIoZikmJihhLm1heFJvdW5kc01pc3NlZEluQVJvdz1mKSxnJiZOdW1iZXIuaXNJbnRlZ2VyKGcpJiYoYS5tYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZD1nKSxhcGkuYXNzZXJ0KGEubnVtYmVyT2ZUb3BXaXRuZXNzZXMrMT09PWEubnVtYmVyT2ZXaXRuZXNzU2xvdHMsIm9ubHkgMSBiYWNrdXAgYWxsb3dlZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixhKSxoJiZhd2FpdCBhY3Rpb25zLnJlc2V0U2NoZWR1bGUoKSl9O2NvbnN0IHVwZGF0ZVdpdG5lc3NSYW5rPWFzeW5jKGUsYyk9PntsZXQgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDplfSk7aWYoYSl7bGV0IGQ9YS5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbDthLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsPWFwaS5CaWdOdW1iZXIoYS5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkucGx1cyhjKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLGEpO2xldCBiPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtiLnRvdGFsQXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihiLnRvdGFsQXBwcm92YWxXZWlnaHQpLnBsdXMoYykudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiksYXBpLkJpZ051bWJlcihkKS5lcSgwKSYmYXBpLkJpZ051bWJlcihhLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5ndCgwKT9iLm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMrPTE6YXBpLkJpZ051bWJlcihkKS5ndCgwKSYmYXBpLkJpZ051bWJlcihhLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5lcSgwKSYmKGIubnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcy09MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixiKX19O2FjdGlvbnMudXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzPWFzeW5jIGk9PntsZXR7YWNjb3VudDpkLGNhbGxpbmdDb250cmFjdEluZm86Zn09aTtpZih2b2lkIDA9PT1mfHwidG9rZW5zIiE9PWYubmFtZSlyZXR1cm47bGV0IGM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDpkfSk7aWYobnVsbCE9PWMpe2xldCBhPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmQsc3ltYm9sOiJCRUUifSksYj0wO2EmJmEuc3Rha2UmJihiPWEuc3Rha2UpLGEmJmEuZGVsZWdhdGlvbnNJbiYmKGI9YXBpLkJpZ051bWJlcihiKS5wbHVzKGEuZGVsZWdhdGlvbnNJbikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpO2xldCBqPWMuYXBwcm92YWxXZWlnaHQsZz1hcGkuQmlnTnVtYmVyKGIpLm1pbnVzKGopLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pO2lmKGMuYXBwcm92YWxXZWlnaHQ9YiwhYXBpLkJpZ051bWJlcihnKS5lcSgwKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGMpO2xldCBoPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmR9KTtmb3IobGV0IGU9MDtlPGgubGVuZ3RoO2UrPTEpe2xldCBrPWhbZV07YXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsoay50byxnKX19fX0sYWN0aW9ucy5yZWdpc3Rlcj1hc3luYyBnPT57bGV0e0lQOmMsUlBDUG9ydDpkLFAyUFBvcnQ6YixzaWduaW5nS2V5OmUsZW5hYmxlZDpmLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpofT1nO2lmKGFwaS5hc3NlcnQoITA9PT1oLCJhY3RpdmUga2V5IHJlcXVpcmVkIikmJmFwaS5hc3NlcnQoYyYmInN0cmluZyI9PXR5cGVvZiBjJiZhcGkudmFsaWRhdG9yLmlzSVAoYyksIklQIGlzIGludmFsaWQiKSYmYXBpLmFzc2VydChkJiZOdW1iZXIuaXNJbnRlZ2VyKGQpJiZkPj0wJiZkPD02NTUzNSwiUlBDUG9ydCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA2NTUzNSIpJiZhcGkuYXNzZXJ0KGImJk51bWJlci5pc0ludGVnZXIoYikmJmI+PTAmJmI8PTY1NTM1LCJQMlBQb3J0IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDY1NTM1IikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhlKSYmNTM9PT1lLmxlbmd0aCwiaW52YWxpZCBzaWduaW5nIGtleSIpJiZhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGYsImVuYWJsZWQgbXVzdCBiZSBhIGJvb2xlYW4iKSl7bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse3NpZ25pbmdLZXk6ZX0pO2FwaS5hc3NlcnQobnVsbD09PWF8fGEuYWNjb3VudD09PWFwaS5zZW5kZXIsImEgd2l0bmVzcyBpcyBhbHJlYWR5IHVzaW5nIHRoaXMgc2lnbmluZyBrZXkiKSYmKGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse0lQOmMsUDJQUG9ydDpifSksYXBpLmFzc2VydChudWxsPT09YXx8YS5hY2NvdW50PT09YXBpLnNlbmRlciwiYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBJUC9Qb3J0IikmJigoYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDphcGkuc2VuZGVyfSkpPyhhLklQPWMsYS5SUENQb3J0PWQsYS5QMlBQb3J0PWIsYS5zaWduaW5nS2V5PWUsYS5lbmFibGVkPWYsYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIixhKSk6KGE9e2FjY291bnQ6YXBpLnNlbmRlcixhcHByb3ZhbFdlaWdodDp7JG51bWJlckRlY2ltYWw6IjAifSxzaWduaW5nS2V5OmUsSVA6YyxSUENQb3J0OmQsUDJQUG9ydDpiLGVuYWJsZWQ6ZixtaXNzZWRSb3VuZHM6MCxtaXNzZWRSb3VuZHNJbkFSb3c6MCx2ZXJpZmllZFJvdW5kczowLGxhc3RSb3VuZFZlcmlmaWVkOm51bGwsbGFzdEJsb2NrVmVyaWZpZWQ6bnVsbH0sYXdhaXQgYXBpLmRiLmluc2VydCgid2l0bmVzc2VzIixhKSkpKX19LGFjdGlvbnMuYXBwcm92ZT1hc3luYyBnPT57bGV0e3dpdG5lc3M6YX09ZyxmPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihhcGkuYXNzZXJ0KGEmJiJzdHJpbmciPT10eXBlb2YgYSYmYS5sZW5ndGg+PTMmJmEubGVuZ3RoPD0xNiwiaW52YWxpZCB3aXRuZXNzIGFjY291bnQiKSl7bGV0IGg9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6YX0pO2lmKGFwaS5hc3NlcnQoaCwid2l0bmVzcyBkb2VzIG5vdCBleGlzdCIpKXtsZXQgYj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihudWxsPT09YiYmKGI9e2FjY291bnQ6YXBpLnNlbmRlcixhcHByb3ZhbHM6MCxhcHByb3ZhbFdlaWdodDp7JG51bWJlckRlY2ltYWw6IjAifX0sYj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYikpLGFwaS5hc3NlcnQoYi5hcHByb3ZhbHM8Zi5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsYHlvdSBjYW4gb25seSBhcHByb3ZlICR7Zi5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnR9IHdpdG5lc3Nlc2ApKXtsZXQgZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHRvOmF9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1lLCJ5b3UgYWxyZWFkeSBhcHByb3ZlZCB0aGlzIHdpdG5lc3MiKSl7ZT17ZnJvbTphcGkuc2VuZGVyLHRvOmF9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFwcHJvdmFscyIsZSk7bGV0IGM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxkPTA7YyYmYy5zdGFrZSYmKGQ9Yy5zdGFrZSksYyYmYy5kZWxlZ2F0aW9uc0luJiYoZD1hcGkuQmlnTnVtYmVyKGQpLnBsdXMoYy5kZWxlZ2F0aW9uc0luKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksYi5hcHByb3ZhbHMrPTEsYi5hcHByb3ZhbFdlaWdodD1kLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixiKSxhd2FpdCB1cGRhdGVXaXRuZXNzUmFuayhhLGQpfX19fX0sYWN0aW9ucy5kaXNhcHByb3ZlPWFzeW5jIGY9PntsZXR7d2l0bmVzczphfT1mO2lmKGFwaS5hc3NlcnQoYSYmInN0cmluZyI9PXR5cGVvZiBhJiZhLmxlbmd0aD49MyYmYS5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtsZXQgZz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDphfSk7aWYoYXBpLmFzc2VydChnLCJ3aXRuZXNzIGRvZXMgbm90IGV4aXN0Iikpe2xldCBiPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKG51bGw9PT1iJiYoYj17YWNjb3VudDphcGkuc2VuZGVyLGFwcHJvdmFsczowLGFwcHJvdmFsV2VpZ2h0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYikpLGFwaS5hc3NlcnQoYi5hcHByb3ZhbHM+MCwibm8gYXBwcm92YWxzIGZvdW5kIikpe2xldCBlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsdG86YX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWUsInlvdSBoYXZlIG5vdCBhcHByb3ZlZCB0aGlzIHdpdG5lc3MiKSl7YXdhaXQgYXBpLmRiLnJlbW92ZSgiYXBwcm92YWxzIixlKTtsZXQgYz1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGQ9MDtjJiZjLnN0YWtlJiYoZD1jLnN0YWtlKSxjJiZjLmRlbGVnYXRpb25zSW4mJihkPWFwaS5CaWdOdW1iZXIoZCkucGx1cyhjLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKSxiLmFwcHJvdmFscy09MSxiLmFwcHJvdmFsV2VpZ2h0PWQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGIpLGF3YWl0IHVwZGF0ZVdpdG5lc3NSYW5rKGEsYC0ke2R9YCl9fX19fTtjb25zdCBjaGFuZ2VDdXJyZW50V2l0bmVzcz1hc3luYygpPT57bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtjdXJyZW50V2l0bmVzczplLHRvdGFsQXBwcm92YWxXZWlnaHQ6dSxsYXN0V2l0bmVzc2VzOmosbGFzdEJsb2NrUm91bmQ6dixyb3VuZDpxLG1heFJvdW5kc01pc3NlZEluQVJvdzpyLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOnN9PWEsaD0hMSx3PWFwaS5yYW5kb20oKSx4PWFwaS5CaWdOdW1iZXIodSkudGltZXModykudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwxKSxrPTAsbD0wLGk9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse2FwcHJvdmFsV2VpZ2h0OnskZ3Q6eyRudW1iZXJEZWNpbWFsOiIwIn19fSwxMDAsayxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH0sXSksbT1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7cm91bmQ6cX0pLHQ9ai5sZW5ndGg+MT9qW2oubGVuZ3RoLTJdOiIiLGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInNjaGVkdWxlcyIse3JvdW5kOnEsd2l0bmVzczplLGJsb2NrTnVtYmVyOnZ9KTtkb3tmb3IobGV0IG49MDtuPGkubGVuZ3RoO24rPTEpe2xldCBiPWlbbl07aWYobD1hcGkuQmlnTnVtYmVyKGwpLnBsdXMoYi5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiksITA9PT1iLmVuYWJsZWQmJmIuYWNjb3VudCE9PXQmJiB2b2lkIDA9PT1tLmZpbmQoYT0+YS53aXRuZXNzPT09Yi5hY2NvdW50KSYmYXBpLkJpZ051bWJlcih4KS5sdGUobCkpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2Yud2l0bmVzc30gdG8gJHtiLmFjY291bnR9YCksZi53aXRuZXNzPWIuYWNjb3VudCxhd2FpdCBhcGkuZGIudXBkYXRlKCJzY2hlZHVsZXMiLGYpLGEuY3VycmVudFdpdG5lc3M9Yi5hY2NvdW50LGEubGFzdFdpdG5lc3Nlcy5wdXNoKGIuYWNjb3VudCksYS5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9YXBpLmJsb2NrTnVtYmVyK3MsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixhKTtsZXQgYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDplfSk7Yy5taXNzZWRSb3VuZHMrPTEsYy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYy5taXNzZWRSb3VuZHNJbkFSb3c+PXImJihjLm1pc3NlZFJvdW5kc0luQVJvdz0wLGMuZW5hYmxlZD0hMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIixjKSxoPSEwLGFwaS5lbWl0KCJjdXJyZW50V2l0bmVzc0NoYW5nZWQiLHt9KTticmVha319ITE9PT1oJiYoays9MTAwLGk9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse2FwcHJvdmFsV2VpZ2h0OnskZ3Q6eyRudW1iZXJEZWNpbWFsOiIwIn19fSwxMDAsayxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH0sXSkpfXdoaWxlKGkubGVuZ3RoPjAmJiAhMT09PWgpaWYoITE9PT1oKXthcGkuZGVidWcoIm5vIGJhY2t1cCB3aXRuZXNzIHdhcyBmb3VuZCwgaW50ZXJjaGFuZ2luZyB3aXRuZXNzZXMgd2l0aGluIHRoZSBjdXJyZW50IHNjaGVkdWxlIik7Zm9yKGxldCBvPTA7bzxtLmxlbmd0aC0xO28rPTEpe2xldCBwPW1bb10sZz1wLndpdG5lc3M7aWYoZyE9PXQpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2V9IHRvICR7Z31gKSxmLndpdG5lc3M9Zyxhd2FpdCBhcGkuZGIudXBkYXRlKCJzY2hlZHVsZXMiLGYpLHAud2l0bmVzcz1lLGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIscCksYS5jdXJyZW50V2l0bmVzcz1nLGEubGFzdFdpdG5lc3Nlcy5wdXNoKGcpLGEuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcitzLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsYSk7bGV0IGQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6ZX0pO2QubWlzc2VkUm91bmRzKz0xLGQubWlzc2VkUm91bmRzSW5BUm93Kz0xLGQubWlzc2VkUm91bmRzSW5BUm93Pj1yJiYoZC5taXNzZWRSb3VuZHNJbkFSb3c9MCxkLmVuYWJsZWQ9ITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsZCksYXBpLmVtaXQoImN1cnJlbnRXaXRuZXNzQ2hhbmdlZCIse30pO2JyZWFrfX19fSxtYW5hZ2VXaXRuZXNzZXNTY2hlZHVsZT1hc3luYygpPT57aWYoIm51bGwiIT09YXBpLnNlbmRlcilyZXR1cm47bGV0IGI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzOncsdG90YWxBcHByb3ZhbFdlaWdodDp4LGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOmosYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlOnksbGFzdEJsb2NrUm91bmQ6eixudW1iZXJPZlRvcFdpdG5lc3Nlczp0LG51bWJlck9mV2l0bmVzc1Nsb3RzOmQsbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6dX09YixBPWorMSxhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJzY2hlZHVsZXMiLHtibG9ja051bWJlcjpBfSk7aWYobnVsbD09PWEpe2lmKGFwaS5kZWJ1ZygiY2FsY3VsYXRpbmcgbmV3IHNjaGVkdWxlIiksYT1bXSx3Pj1kKXtsZXQgQj1hcGkucmFuZG9tKCksbD1udWxsLG09MCxnPTAsaD1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxtLFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfSxdKTtkb3tmb3IobGV0IGs9MDtrPGgubGVuZ3RoO2srPTEpe2xldCBuPWhba107YS5sZW5ndGg+PXQmJm51bGw9PT1sJiYobD1hcGkuQmlnTnVtYmVyKGcpLnBsdXMoIiR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFfSQiKS5wbHVzKGFwaS5CaWdOdW1iZXIoeCkubWludXMoZykudGltZXMoQikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwxKSkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpLGc9YXBpLkJpZ051bWJlcihnKS5wbHVzKG4uYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pLCEwPT09bi5lbmFibGVkJiYoYS5sZW5ndGg8dHx8YXBpLkJpZ051bWJlcihsKS5sdGUoZykpJiZhLnB1c2goe3dpdG5lc3M6bi5hY2NvdW50LGJsb2NrTnVtYmVyOm51bGx9KSxhLmxlbmd0aD49ZCYmKGs9aC5sZW5ndGgpfWEubGVuZ3RoPGQmJihtKz0xMDAsaD1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxtLFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfSxdKSl9d2hpbGUoaC5sZW5ndGg+MCYmYS5sZW5ndGg8ZCl9aWYoYS5sZW5ndGg9PT1kKXtsZXQgbyx2O2ZvcihsZXQgaT1hLmxlbmd0aC0xO2k+MDtpLT0xKXtsZXQgQz1hcGkucmFuZG9tKCk7bz1NYXRoLmZsb29yKEMqKGkrMSkpLHY9YVtpXSxhW2ldPWFbb10sYVtvXT12fWxldCBjPWIubGFzdFdpdG5lc3NlcyxwPWMubGVuZ3RoPjA/Y1tjLmxlbmd0aC0xXToiIjtjLmxlbmd0aD49ZCYmKGM9W10pO2xldCBxPWFbYS5sZW5ndGgtMV0ud2l0bmVzcztpZihjLmluY2x1ZGVzKHEpfHxwPT09cSl7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0xKWlmKCFjLmluY2x1ZGVzKGFbZV0ud2l0bmVzcykmJmFbZV0ud2l0bmVzcyE9PXApe2xldCBEPWFbZV0ud2l0bmVzczthW2VdLndpdG5lc3M9cSxhW2EubGVuZ3RoLTFdLndpdG5lc3M9RDticmVha319aWYoYVswXS53aXRuZXNzPT09cCl7bGV0IEU9YVswXS53aXRuZXNzLEY9YVsxXS53aXRuZXNzO2FbMF0ud2l0bmVzcz1GLGFbMV0ud2l0bmVzcz1FfWxldCByPTA9PT1qP2FwaS5ibG9ja051bWJlcjpqKzE7Yi5yb3VuZCs9MTtmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrPTEpYVtmXS5ibG9ja051bWJlcj1yLGFbZl0ucm91bmQ9Yi5yb3VuZCxhcGkuZGVidWcoYHNjaGVkdWxlZCB3aXRuZXNzICR7YVtmXS53aXRuZXNzfSBmb3IgYmxvY2sgJHtyfSAocm91bmQgJHtiLnJvdW5kfSlgKSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJzY2hlZHVsZXMiLGFbZl0pLHIrPTE7MD09PWomJihiLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWFwaS5ibG9ja051bWJlci0xKTtsZXQgcz1hW2EubGVuZ3RoLTFdO2IubGFzdEJsb2NrUm91bmQ9cy5ibG9ja051bWJlcixiLmN1cnJlbnRXaXRuZXNzPXMud2l0bmVzcyxjLnB1c2gocy53aXRuZXNzKSxiLmxhc3RXaXRuZXNzZXM9YyxiLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrdSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGIpLGFwaS5lbWl0KCJuZXdTY2hlZHVsZSIse30pfX1lbHNlIGFwaS5ibG9ja051bWJlcj49eSYmKGFwaS5ibG9ja051bWJlcj56P2F3YWl0IGNoYW5nZUN1cnJlbnRXaXRuZXNzKCk6KGIuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcit1LGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsYiksYXBpLmVtaXQoImF3YWl0aW5nUm91bmRFbmQiLHt9KSkpfTthY3Rpb25zLnByb3Bvc2VSb3VuZD1hc3luYyB4PT57bGV0e3JvdW5kSGFzaDpiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTp5LHNpZ25hdHVyZXM6Y309eCxkPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6eixyb3VuZDpnLGxhc3RCbG9ja1JvdW5kOmksY3VycmVudFdpdG5lc3M6aH09ZCxlPWF3YWl0IGFwaS5kYi5maW5kKCJzY2hlZHVsZXMiLHtyb3VuZDpnfSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksQT1lLmxlbmd0aCx7d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDpwfT1kO2lmKCEwPT09eSYmYiYmInN0cmluZyI9PXR5cGVvZiBiJiY2ND09PWIubGVuZ3RoJiZBcnJheS5pc0FycmF5KGMpJiZjLmxlbmd0aDw9QSYmYy5sZW5ndGg+PXApe2xldCBqPXorMSxhPSIiO2lmKGFwaS5zZW5kZXI9PT1oKXtmb3IoO2o8PWk7KXtsZXQgcT1hd2FpdCBhcGkuZGIuZ2V0QmxvY2tJbmZvKGopO2lmKG51bGwhPT1xKWE9YXBpLlNIQTI1NihgJHthfSR7cS5oYXNofWApO2Vsc2V7YT0iIjticmVha31qKz0xfWlmKCIiIT09YSYmYT09PWIpe2xldCByPTAsaz1bXSxCPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50Omh9KSxDPWMuZmluZChhPT5hWzBdPT09aCk7Zm9yKGxldCBsPTA7bDxlLmxlbmd0aDtsKz0xKXtsZXQgcz1lW2xdLG09YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6cy53aXRuZXNzfSk7aWYobnVsbCE9PW0pe2xldCB0PWMuZmluZChhPT5hWzBdPT09bS5hY2NvdW50KTt0JiZhcGkuY2hlY2tTaWduYXR1cmUoYSx0WzFdLG0uc2lnbmluZ0tleSwhMCkmJihhcGkuZGVidWcoYHdpdG5lc3MgJHttLmFjY291bnR9IHNpZ25lZCByb3VuZCAke2d9YCkscis9MSksay5wdXNoKHtibG9ja051bWJlcjpzLmJsb2NrTnVtYmVyLHdpdG5lc3M6aCxzaWduaW5nS2V5OkIuc2lnbmluZ0tleSxyb3VuZFNpZ25hdHVyZTpDWzFdLHJvdW5kOmcscm91bmRIYXNoOmJ9KX19aWYocj49cCl7Zm9yKGxldCBuPTA7bjxrLmxlbmd0aDtuKz0xKWF3YWl0IGFwaS52ZXJpZnlCbG9jayhrW25dKTtsZXQgdT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImNvbnRyYWN0c0JhbGFuY2VzIix7YWNjb3VudDoid2l0bmVzc2VzIixzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0x9KSx2PSExO3UmJmFwaS5CaWdOdW1iZXIodS5iYWxhbmNlKS5ndGUoIjAuMDQ3NTY0NjUiKSYmKHY9ITApO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bys9MSl7bGV0IHc9ZVtvXTshMD09PXYmJmF3YWl0IGFwaS50cmFuc2ZlclRva2Vucyh3LndpdG5lc3MsVVRJTElUWV9UT0tFTl9TWU1CT0wsIjAuMDA5NTEyOTMiLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2NoZWR1bGVzIix3KX1kLmN1cnJlbnRXaXRuZXNzPW51bGwsZC5sYXN0VmVyaWZpZWRCbG9ja051bWJlcj1pLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsZCk7bGV0IGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6aH0pO2YubWlzc2VkUm91bmRzSW5BUm93PTAsZi5sYXN0Um91bmRWZXJpZmllZD1nLGYubGFzdEJsb2NrVmVyaWZpZWQ9aSxmLnZlcmlmaWVkUm91bmRzKz0xLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsZiksYXdhaXQgbWFuYWdlV2l0bmVzc2VzU2NoZWR1bGUoKX19fX19LGFjdGlvbnMuc2NoZWR1bGVXaXRuZXNzZXM9YXN5bmMoKT0+eyJudWxsIj09PWFwaS5zZW5kZXImJmF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9"}}}

0
0
0.000
avatar

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"Y29uc3QgTkJfQVBQUk9WQUxTX0FMTE9XRUQ9MzAsTkJfVE9QX1dJVE5FU1NFUz0yMCxOQl9CQUNLVVBfV0lUTkVTU0VTPTEsTkJfV0lUTkVTU0VTPTIxLE5CX1dJVE5FU1NFU19TSUdOQVRVUkVTX1JFUVVJUkVEPTE0LE1BWF9ST1VORFNfTUlTU0VEX0lOX0FfUk9XPTMsTUFYX1JPVU5EX1BST1BPU0lUSU9OX1dBSVRJTkdfUEVSSU9EPTQwLE5CX1RPS0VOU19UT19SRVdBUkQ9IjAuMDA5NTEyOTMiLE5CX1RPS0VOU19ORUVERURfQkVGT1JFX1JFV0FSRElORz0iMC4wNDc1NjQ2NSIsVVRJTElUWV9UT0tFTl9TWU1CT0w9Iicke0NPTlNUQU5UUy5VVElMSVRZX1RPS0VOX1NZTUJPTH0kJyIsR09WRVJOQU5DRV9UT0tFTl9TWU1CT0w9Iicke0NPTlNUQU5UUy5VVElMSVRZX1RPS0VOX1NZTUJPTH0kJyIsR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT049IiR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OfSQiLEdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFPSIke0NPTlNUQU5UUy5HT1ZFUk5BTkNFX1RPS0VOX01JTl9WQUxVRX0kIjthY3Rpb25zLmNyZWF0ZVNTQz1hc3luYygpPT57bGV0IGE9YXdhaXQgYXBpLmRiLnRhYmxlRXhpc3RzKCJ3aXRuZXNzZXMiKTtpZighMT09PWEpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgid2l0bmVzc2VzIixbImFwcHJvdmFsV2VpZ2h0Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYXBwcm92YWxzIixbImZyb20iLCJ0byJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImFjY291bnRzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJzY2hlZHVsZXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2xldCBiPXt0b3RhbEFwcHJvdmFsV2VpZ2h0OiIwIixudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzOjAsbGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6MCxyb3VuZDowLGxhc3RCbG9ja1JvdW5kOjAsY3VycmVudFdpdG5lc3M6bnVsbCxibG9ja051bWJlcldpdG5lc3NDaGFuZ2U6MCxsYXN0V2l0bmVzc2VzOltdLG51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDozMCxudW1iZXJPZlRvcFdpdG5lc3NlczoyMCxudW1iZXJPZldpdG5lc3NTbG90czoyMSx3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOjE0LG1heFJvdW5kc01pc3NlZEluQVJvdzozLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOjQwfTthd2FpdCBhcGkuZGIuaW5zZXJ0KCJwYXJhbXMiLGIpfX0sYWN0aW9ucy5yZXNldFNjaGVkdWxlPWFzeW5jKCk9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtsZXQgYz1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7fSk7Zm9yKGxldCBiPTA7YjxjLmxlbmd0aDtiKz0xKXtsZXQgZD1jW2JdO2F3YWl0IGFwaS5kYi5yZW1vdmUoInNjaGVkdWxlcyIsZCl9bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2EuY3VycmVudFdpdG5lc3M9bnVsbCxhLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT0wLGEubGFzdFdpdG5lc3Nlcz1bXSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGEpfSxhY3Rpb25zLnVwZGF0ZVBhcmFtcz1hc3luYyBpPT57aWYoYXBpLnNlbmRlciE9PWFwaS5vd25lcilyZXR1cm47bGV0e251bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDpjLG51bWJlck9mVG9wV2l0bmVzc2VzOmQsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6Yix3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkOmUsbWF4Um91bmRzTWlzc2VkSW5BUm93OmYsbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6Z309aSxhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSxoPSExO2MmJk51bWJlci5pc0ludGVnZXIoYykmJihhLm51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudD1jKSxkJiZOdW1iZXIuaXNJbnRlZ2VyKGQpJiYoYS5udW1iZXJPZlRvcFdpdG5lc3Nlcz1kKSxiJiZOdW1iZXIuaXNJbnRlZ2VyKGIpJiZhLm51bWJlck9mV2l0bmVzc1Nsb3RzIT09YiYmKGg9ITAsYS5udW1iZXJPZldpdG5lc3NTbG90cz1iKSxlJiZOdW1iZXIuaXNJbnRlZ2VyKGUpJiYoYS53aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkPWUpLGYmJk51bWJlci5pc0ludGVnZXIoZikmJihhLm1heFJvdW5kc01pc3NlZEluQVJvdz1mKSxnJiZOdW1iZXIuaXNJbnRlZ2VyKGcpJiYoYS5tYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZD1nKSxhcGkuYXNzZXJ0KGEubnVtYmVyT2ZUb3BXaXRuZXNzZXMrMT09PWEubnVtYmVyT2ZXaXRuZXNzU2xvdHMsIm9ubHkgMSBiYWNrdXAgYWxsb3dlZCIpJiYoYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixhKSxoJiZhd2FpdCBhY3Rpb25zLnJlc2V0U2NoZWR1bGUoKSl9O2NvbnN0IHVwZGF0ZVdpdG5lc3NSYW5rPWFzeW5jKGUsYyk9PntsZXQgYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDplfSk7aWYoYSl7bGV0IGQ9YS5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbDthLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsPWFwaS5CaWdOdW1iZXIoYS5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkucGx1cyhjKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLGEpO2xldCBiPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtiLnRvdGFsQXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihiLnRvdGFsQXBwcm92YWxXZWlnaHQpLnBsdXMoYykudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiksYXBpLkJpZ051bWJlcihkKS5lcSgwKSYmYXBpLkJpZ051bWJlcihhLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5ndCgwKT9iLm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMrPTE6YXBpLkJpZ051bWJlcihkKS5ndCgwKSYmYXBpLkJpZ051bWJlcihhLmFwcHJvdmFsV2VpZ2h0LiRudW1iZXJEZWNpbWFsKS5lcSgwKSYmKGIubnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcy09MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixiKX19O2FjdGlvbnMudXBkYXRlV2l0bmVzc2VzQXBwcm92YWxzPWFzeW5jIGk9PntsZXR7YWNjb3VudDpkLGNhbGxpbmdDb250cmFjdEluZm86Zn09aTtpZih2b2lkIDA9PT1mfHwidG9rZW5zIiE9PWYubmFtZSlyZXR1cm47bGV0IGM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDpkfSk7aWYobnVsbCE9PWMpe2xldCBhPWF3YWl0IGFwaS5kYi5maW5kT25lSW5UYWJsZSgidG9rZW5zIiwiYmFsYW5jZXMiLHthY2NvdW50OmQsc3ltYm9sOiJCRUUifSksYj0wO2EmJmEuc3Rha2UmJihiPWEuc3Rha2UpLGEmJmEuZGVsZWdhdGlvbnNJbiYmKGI9YXBpLkJpZ051bWJlcihiKS5wbHVzKGEuZGVsZWdhdGlvbnNJbikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpO2xldCBqPWMuYXBwcm92YWxXZWlnaHQsZz1hcGkuQmlnTnVtYmVyKGIpLm1pbnVzKGopLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pO2lmKGMuYXBwcm92YWxXZWlnaHQ9YiwhYXBpLkJpZ051bWJlcihnKS5lcSgwKSl7YXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGMpO2xldCBoPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmR9KTtmb3IobGV0IGU9MDtlPGgubGVuZ3RoO2UrPTEpe2xldCBrPWhbZV07YXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsoay50byxnKX19fX0sYWN0aW9ucy5yZWdpc3Rlcj1hc3luYyBnPT57bGV0e0lQOmMsUlBDUG9ydDpkLFAyUFBvcnQ6YixzaWduaW5nS2V5OmUsZW5hYmxlZDpmLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTpofT1nO2lmKGFwaS5hc3NlcnQoITA9PT1oLCJhY3RpdmUga2V5IHJlcXVpcmVkIikmJmFwaS5hc3NlcnQoYyYmInN0cmluZyI9PXR5cGVvZiBjJiZhcGkudmFsaWRhdG9yLmlzSVAoYyksIklQIGlzIGludmFsaWQiKSYmYXBpLmFzc2VydChkJiZOdW1iZXIuaXNJbnRlZ2VyKGQpJiZkPj0wJiZkPD02NTUzNSwiUlBDUG9ydCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA2NTUzNSIpJiZhcGkuYXNzZXJ0KGImJk51bWJlci5pc0ludGVnZXIoYikmJmI+PTAmJmI8PTY1NTM1LCJQMlBQb3J0IG11c3QgYmUgYW4gaW50ZWdlciBiZXR3ZWVuIDAgYW5kIDY1NTM1IikmJmFwaS5hc3NlcnQoYXBpLnZhbGlkYXRvci5pc0FscGhhbnVtZXJpYyhlKSYmNTM9PT1lLmxlbmd0aCwiaW52YWxpZCBzaWduaW5nIGtleSIpJiZhcGkuYXNzZXJ0KCJib29sZWFuIj09dHlwZW9mIGYsImVuYWJsZWQgbXVzdCBiZSBhIGJvb2xlYW4iKSl7bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse3NpZ25pbmdLZXk6ZX0pO2FwaS5hc3NlcnQobnVsbD09PWF8fGEuYWNjb3VudD09PWFwaS5zZW5kZXIsImEgd2l0bmVzcyBpcyBhbHJlYWR5IHVzaW5nIHRoaXMgc2lnbmluZyBrZXkiKSYmKGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse0lQOmMsUDJQUG9ydDpifSksYXBpLmFzc2VydChudWxsPT09YXx8YS5hY2NvdW50PT09YXBpLnNlbmRlciwiYSB3aXRuZXNzIGlzIGFscmVhZHkgdXNpbmcgdGhpcyBJUC9Qb3J0IikmJigoYT1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDphcGkuc2VuZGVyfSkpPyhhLklQPWMsYS5SUENQb3J0PWQsYS5QMlBQb3J0PWIsYS5zaWduaW5nS2V5PWUsYS5lbmFibGVkPWYsYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIixhKSk6KGE9e2FjY291bnQ6YXBpLnNlbmRlcixhcHByb3ZhbFdlaWdodDp7JG51bWJlckRlY2ltYWw6IjAifSxzaWduaW5nS2V5OmUsSVA6YyxSUENQb3J0OmQsUDJQUG9ydDpiLGVuYWJsZWQ6ZixtaXNzZWRSb3VuZHM6MCxtaXNzZWRSb3VuZHNJbkFSb3c6MCx2ZXJpZmllZFJvdW5kczowLGxhc3RSb3VuZFZlcmlmaWVkOm51bGwsbGFzdEJsb2NrVmVyaWZpZWQ6bnVsbH0sYXdhaXQgYXBpLmRiLmluc2VydCgid2l0bmVzc2VzIixhKSkpKX19LGFjdGlvbnMuYXBwcm92ZT1hc3luYyBnPT57bGV0e3dpdG5lc3M6YX09ZyxmPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtpZihhcGkuYXNzZXJ0KGEmJiJzdHJpbmciPT10eXBlb2YgYSYmYS5sZW5ndGg+PTMmJmEubGVuZ3RoPD0xNiwiaW52YWxpZCB3aXRuZXNzIGFjY291bnQiKSl7bGV0IGg9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6YX0pO2lmKGFwaS5hc3NlcnQoaCwid2l0bmVzcyBkb2VzIG5vdCBleGlzdCIpKXtsZXQgYj1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYWNjb3VudHMiLHthY2NvdW50OmFwaS5zZW5kZXJ9KTtpZihudWxsPT09YiYmKGI9e2FjY291bnQ6YXBpLnNlbmRlcixhcHByb3ZhbHM6MCxhcHByb3ZhbFdlaWdodDp7JG51bWJlckRlY2ltYWw6IjAifX0sYj1hd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYikpLGFwaS5hc3NlcnQoYi5hcHByb3ZhbHM8Zi5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsYHlvdSBjYW4gb25seSBhcHByb3ZlICR7Zi5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnR9IHdpdG5lc3Nlc2ApKXtsZXQgZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHRvOmF9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1lLCJ5b3UgYWxyZWFkeSBhcHByb3ZlZCB0aGlzIHdpdG5lc3MiKSl7ZT17ZnJvbTphcGkuc2VuZGVyLHRvOmF9LGF3YWl0IGFwaS5kYi5pbnNlcnQoImFwcHJvdmFscyIsZSk7bGV0IGM9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IkJFRSJ9KSxkPTA7YyYmYy5zdGFrZSYmKGQ9Yy5zdGFrZSksYyYmYy5kZWxlZ2F0aW9uc0luJiYoZD1hcGkuQmlnTnVtYmVyKGQpLnBsdXMoYy5kZWxlZ2F0aW9uc0luKS50b0ZpeGVkKEdPVkVSTkFOQ0VfVE9LRU5fUFJFQ0lTSU9OKSksYi5hcHByb3ZhbHMrPTEsYi5hcHByb3ZhbFdlaWdodD1kLGF3YWl0IGFwaS5kYi51cGRhdGUoImFjY291bnRzIixiKSxhd2FpdCB1cGRhdGVXaXRuZXNzUmFuayhhLGQpfX19fX0sYWN0aW9ucy5kaXNhcHByb3ZlPWFzeW5jIGY9PntsZXR7d2l0bmVzczphfT1mO2lmKGFwaS5hc3NlcnQoYSYmInN0cmluZyI9PXR5cGVvZiBhJiZhLmxlbmd0aD49MyYmYS5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtsZXQgZz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDphfSk7aWYoYXBpLmFzc2VydChnLCJ3aXRuZXNzIGRvZXMgbm90IGV4aXN0Iikpe2xldCBiPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKG51bGw9PT1iJiYoYj17YWNjb3VudDphcGkuc2VuZGVyLGFwcHJvdmFsczowLGFwcHJvdmFsV2VpZ2h0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYikpLGFwaS5hc3NlcnQoYi5hcHByb3ZhbHM+MCwibm8gYXBwcm92YWxzIGZvdW5kIikpe2xldCBlPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsdG86YX0pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWUsInlvdSBoYXZlIG5vdCBhcHByb3ZlZCB0aGlzIHdpdG5lc3MiKSl7YXdhaXQgYXBpLmRiLnJlbW92ZSgiYXBwcm92YWxzIixlKTtsZXQgYz1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiQkVFIn0pLGQ9MDtjJiZjLnN0YWtlJiYoZD1jLnN0YWtlKSxjJiZjLmRlbGVnYXRpb25zSW4mJihkPWFwaS5CaWdOdW1iZXIoZCkucGx1cyhjLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pKSxiLmFwcHJvdmFscy09MSxiLmFwcHJvdmFsV2VpZ2h0PWQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGIpLGF3YWl0IHVwZGF0ZVdpdG5lc3NSYW5rKGEsYC0ke2R9YCl9fX19fTtjb25zdCBjaGFuZ2VDdXJyZW50V2l0bmVzcz1hc3luYygpPT57bGV0IGE9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtjdXJyZW50V2l0bmVzczplLHRvdGFsQXBwcm92YWxXZWlnaHQ6dSxsYXN0V2l0bmVzc2VzOmosbGFzdEJsb2NrUm91bmQ6dixyb3VuZDpxLG1heFJvdW5kc01pc3NlZEluQVJvdzpyLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kOnN9PWEsaD0hMSx3PWFwaS5yYW5kb20oKSx4PWFwaS5CaWdOdW1iZXIodSkudGltZXModykudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwxKSxrPTAsbD0wLGk9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse2FwcHJvdmFsV2VpZ2h0OnskZ3Q6eyRudW1iZXJEZWNpbWFsOiIwIn19fSwxMDAsayxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH0sXSksbT1hd2FpdCBhcGkuZGIuZmluZCgic2NoZWR1bGVzIix7cm91bmQ6cX0pLHQ9ai5sZW5ndGg+MT9qW2oubGVuZ3RoLTJdOiIiLGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInNjaGVkdWxlcyIse3JvdW5kOnEsd2l0bmVzczplLGJsb2NrTnVtYmVyOnZ9KTtkb3tmb3IobGV0IG49MDtuPGkubGVuZ3RoO24rPTEpe2xldCBiPWlbbl07aWYobD1hcGkuQmlnTnVtYmVyKGwpLnBsdXMoYi5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiksITA9PT1iLmVuYWJsZWQmJmIuYWNjb3VudCE9PXQmJiB2b2lkIDA9PT1tLmZpbmQoYT0+YS53aXRuZXNzPT09Yi5hY2NvdW50KSYmYXBpLkJpZ051bWJlcih4KS5sdGUobCkpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2Yud2l0bmVzc30gdG8gJHtiLmFjY291bnR9YCksZi53aXRuZXNzPWIuYWNjb3VudCxhd2FpdCBhcGkuZGIudXBkYXRlKCJzY2hlZHVsZXMiLGYpLGEuY3VycmVudFdpdG5lc3M9Yi5hY2NvdW50LGEubGFzdFdpdG5lc3Nlcy5wdXNoKGIuYWNjb3VudCksYS5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9YXBpLmJsb2NrTnVtYmVyK3MsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixhKTtsZXQgYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDplfSk7Yy5taXNzZWRSb3VuZHMrPTEsYy5taXNzZWRSb3VuZHNJbkFSb3crPTEsYy5taXNzZWRSb3VuZHNJbkFSb3c+PXImJihjLm1pc3NlZFJvdW5kc0luQVJvdz0wLGMuZW5hYmxlZD0hMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIixjKSxoPSEwLGFwaS5lbWl0KCJjdXJyZW50V2l0bmVzc0NoYW5nZWQiLHt9KTticmVha319ITE9PT1oJiYoays9MTAwLGk9YXdhaXQgYXBpLmRiLmZpbmQoIndpdG5lc3NlcyIse2FwcHJvdmFsV2VpZ2h0OnskZ3Q6eyRudW1iZXJEZWNpbWFsOiIwIn19fSwxMDAsayxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH0sXSkpfXdoaWxlKGkubGVuZ3RoPjAmJiAhMT09PWgpaWYoITE9PT1oKXthcGkuZGVidWcoIm5vIGJhY2t1cCB3aXRuZXNzIHdhcyBmb3VuZCwgaW50ZXJjaGFuZ2luZyB3aXRuZXNzZXMgd2l0aGluIHRoZSBjdXJyZW50IHNjaGVkdWxlIik7Zm9yKGxldCBvPTA7bzxtLmxlbmd0aC0xO28rPTEpe2xldCBwPW1bb10sZz1wLndpdG5lc3M7aWYoZyE9PXQpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2V9IHRvICR7Z31gKSxmLndpdG5lc3M9Zyxhd2FpdCBhcGkuZGIudXBkYXRlKCJzY2hlZHVsZXMiLGYpLHAud2l0bmVzcz1lLGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIscCksYS5jdXJyZW50V2l0bmVzcz1nLGEubGFzdFdpdG5lc3Nlcy5wdXNoKGcpLGEuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcitzLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsYSk7bGV0IGQ9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6ZX0pO2QubWlzc2VkUm91bmRzKz0xLGQubWlzc2VkUm91bmRzSW5BUm93Kz0xLGQubWlzc2VkUm91bmRzSW5BUm93Pj1yJiYoZC5taXNzZWRSb3VuZHNJbkFSb3c9MCxkLmVuYWJsZWQ9ITEpLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsZCksYXBpLmVtaXQoImN1cnJlbnRXaXRuZXNzQ2hhbmdlZCIse30pO2JyZWFrfX19fSxtYW5hZ2VXaXRuZXNzZXNTY2hlZHVsZT1hc3luYygpPT57aWYoIm51bGwiIT09YXBpLnNlbmRlcilyZXR1cm47bGV0IGI9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzOncsdG90YWxBcHByb3ZhbFdlaWdodDp4LGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOmosYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlOnksbGFzdEJsb2NrUm91bmQ6eixudW1iZXJPZlRvcFdpdG5lc3Nlczp0LG51bWJlck9mV2l0bmVzc1Nsb3RzOmQsbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6dX09YixBPWorMSxhPWF3YWl0IGFwaS5kYi5maW5kT25lKCJzY2hlZHVsZXMiLHtibG9ja051bWJlcjpBfSk7aWYobnVsbD09PWEpe2lmKGFwaS5kZWJ1ZygiY2FsY3VsYXRpbmcgbmV3IHNjaGVkdWxlIiksYT1bXSx3Pj1kKXtsZXQgQj1hcGkucmFuZG9tKCksbD1udWxsLG09MCxnPTAsaD1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxtLFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfSxdKTtkb3tmb3IobGV0IGs9MDtrPGgubGVuZ3RoO2srPTEpe2xldCBuPWhba107YS5sZW5ndGg+PXQmJm51bGw9PT1sJiYobD1hcGkuQmlnTnVtYmVyKGcpLnBsdXMoIiR7Q09OU1RBTlRTLkdPVkVSTkFOQ0VfVE9LRU5fTUlOX1ZBTFVFfSQiKS5wbHVzKGFwaS5CaWdOdW1iZXIoeCkubWludXMoZykudGltZXMoQikudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTiwxKSkudG9GaXhlZChHT1ZFUk5BTkNFX1RPS0VOX1BSRUNJU0lPTikpLGc9YXBpLkJpZ051bWJlcihnKS5wbHVzKG4uYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT04pLCEwPT09bi5lbmFibGVkJiYoYS5sZW5ndGg8dHx8YXBpLkJpZ051bWJlcihsKS5sdGUoZykpJiZhLnB1c2goe3dpdG5lc3M6bi5hY2NvdW50LGJsb2NrTnVtYmVyOm51bGx9KSxhLmxlbmd0aD49ZCYmKGs9aC5sZW5ndGgpfWEubGVuZ3RoPGQmJihtKz0xMDAsaD1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxtLFt7aW5kZXg6ImFwcHJvdmFsV2VpZ2h0IixkZXNjZW5kaW5nOiEwfSxdKSl9d2hpbGUoaC5sZW5ndGg+MCYmYS5sZW5ndGg8ZCl9aWYoYS5sZW5ndGg9PT1kKXtsZXQgbyx2O2ZvcihsZXQgaT1hLmxlbmd0aC0xO2k+MDtpLT0xKXtsZXQgQz1hcGkucmFuZG9tKCk7bz1NYXRoLmZsb29yKEMqKGkrMSkpLHY9YVtpXSxhW2ldPWFbb10sYVtvXT12fWxldCBjPWIubGFzdFdpdG5lc3NlcyxwPWMubGVuZ3RoPjA/Y1tjLmxlbmd0aC0xXToiIjtjLmxlbmd0aD49ZCYmKGM9W10pO2xldCBxPWFbYS5sZW5ndGgtMV0ud2l0bmVzcztpZihjLmluY2x1ZGVzKHEpfHxwPT09cSl7Zm9yKGxldCBlPTA7ZTxhLmxlbmd0aDtlKz0xKWlmKCFjLmluY2x1ZGVzKGFbZV0ud2l0bmVzcykmJmFbZV0ud2l0bmVzcyE9PXApe2xldCBEPWFbZV0ud2l0bmVzczthW2VdLndpdG5lc3M9cSxhW2EubGVuZ3RoLTFdLndpdG5lc3M9RDticmVha319aWYoYVswXS53aXRuZXNzPT09cCl7bGV0IEU9YVswXS53aXRuZXNzLEY9YVsxXS53aXRuZXNzO2FbMF0ud2l0bmVzcz1GLGFbMV0ud2l0bmVzcz1FfWxldCByPTA9PT1qP2FwaS5ibG9ja051bWJlcjpqKzE7Yi5yb3VuZCs9MTtmb3IobGV0IGY9MDtmPGEubGVuZ3RoO2YrPTEpYVtmXS5ibG9ja051bWJlcj1yLGFbZl0ucm91bmQ9Yi5yb3VuZCxhcGkuZGVidWcoYHNjaGVkdWxlZCB3aXRuZXNzICR7YVtmXS53aXRuZXNzfSBmb3IgYmxvY2sgJHtyfSAocm91bmQgJHtiLnJvdW5kfSlgKSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJzY2hlZHVsZXMiLGFbZl0pLHIrPTE7MD09PWomJihiLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWFwaS5ibG9ja051bWJlci0xKTtsZXQgcz1hW2EubGVuZ3RoLTFdO2IubGFzdEJsb2NrUm91bmQ9cy5ibG9ja051bWJlcixiLmN1cnJlbnRXaXRuZXNzPXMud2l0bmVzcyxjLnB1c2gocy53aXRuZXNzKSxiLmxhc3RXaXRuZXNzZXM9YyxiLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrdSxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLGIpLGFwaS5lbWl0KCJuZXdTY2hlZHVsZSIse30pfX1lbHNlIGFwaS5ibG9ja051bWJlcj49eSYmKGFwaS5ibG9ja051bWJlcj56P2F3YWl0IGNoYW5nZUN1cnJlbnRXaXRuZXNzKCk6KGIuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcit1LGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsYiksYXBpLmVtaXQoImF3YWl0aW5nUm91bmRFbmQiLHt9KSkpfTthY3Rpb25zLnByb3Bvc2VSb3VuZD1hc3luYyB4PT57bGV0e3JvdW5kSGFzaDpiLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTp5LHNpZ25hdHVyZXM6Y309eCxkPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6eixyb3VuZDpnLGxhc3RCbG9ja1JvdW5kOmksY3VycmVudFdpdG5lc3M6aH09ZCxlPWF3YWl0IGFwaS5kYi5maW5kKCJzY2hlZHVsZXMiLHtyb3VuZDpnfSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksQT1lLmxlbmd0aCx7d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDpwfT1kO2lmKCEwPT09eSYmYiYmInN0cmluZyI9PXR5cGVvZiBiJiY2ND09PWIubGVuZ3RoJiZBcnJheS5pc0FycmF5KGMpJiZjLmxlbmd0aDw9QSYmYy5sZW5ndGg+PXApe2xldCBqPXorMSxhPSIiO2lmKGFwaS5zZW5kZXI9PT1oKXtmb3IoO2o8PWk7KXtsZXQgcT1hd2FpdCBhcGkuZGIuZ2V0QmxvY2tJbmZvKGopO2lmKG51bGwhPT1xKWE9YXBpLlNIQTI1NihgJHthfSR7cS5oYXNofWApO2Vsc2V7YT0iIjticmVha31qKz0xfWlmKCIiIT09YSYmYT09PWIpe2xldCByPTAsaz1bXSxCPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50Omh9KSxDPWMuZmluZChhPT5hWzBdPT09aCk7Zm9yKGxldCBsPTA7bDxlLmxlbmd0aDtsKz0xKXtsZXQgcz1lW2xdLG09YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6cy53aXRuZXNzfSk7aWYobnVsbCE9PW0pe2xldCB0PWMuZmluZChhPT5hWzBdPT09bS5hY2NvdW50KTt0JiZhcGkuY2hlY2tTaWduYXR1cmUoYSx0WzFdLG0uc2lnbmluZ0tleSwhMCkmJihhcGkuZGVidWcoYHdpdG5lc3MgJHttLmFjY291bnR9IHNpZ25lZCByb3VuZCAke2d9YCkscis9MSksay5wdXNoKHtibG9ja051bWJlcjpzLmJsb2NrTnVtYmVyLHdpdG5lc3M6aCxzaWduaW5nS2V5OkIuc2lnbmluZ0tleSxyb3VuZFNpZ25hdHVyZTpDWzFdLHJvdW5kOmcscm91bmRIYXNoOmJ9KX19aWYocj49cCl7Zm9yKGxldCBuPTA7bjxrLmxlbmd0aDtuKz0xKWF3YWl0IGFwaS52ZXJpZnlCbG9jayhrW25dKTtsZXQgdT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImNvbnRyYWN0c0JhbGFuY2VzIix7YWNjb3VudDoid2l0bmVzc2VzIixzeW1ib2w6VVRJTElUWV9UT0tFTl9TWU1CT0x9KSx2PSExO3UmJmFwaS5CaWdOdW1iZXIodS5iYWxhbmNlKS5ndGUoIjAuMDQ3NTY0NjUiKSYmKHY9ITApO2ZvcihsZXQgbz0wO288ZS5sZW5ndGg7bys9MSl7bGV0IHc9ZVtvXTshMD09PXYmJmF3YWl0IGFwaS50cmFuc2ZlclRva2Vucyh3LndpdG5lc3MsVVRJTElUWV9UT0tFTl9TWU1CT0wsIjAuMDA5NTEyOTMiLCJ1c2VyIiksYXdhaXQgYXBpLmRiLnJlbW92ZSgic2NoZWR1bGVzIix3KX1kLmN1cnJlbnRXaXRuZXNzPW51bGwsZC5sYXN0VmVyaWZpZWRCbG9ja051bWJlcj1pLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIsZCk7bGV0IGY9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6aH0pO2YubWlzc2VkUm91bmRzSW5BUm93PTAsZi5sYXN0Um91bmRWZXJpZmllZD1nLGYubGFzdEJsb2NrVmVyaWZpZWQ9aSxmLnZlcmlmaWVkUm91bmRzKz0xLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsZiksYXdhaXQgbWFuYWdlV2l0bmVzc2VzU2NoZWR1bGUoKX19fX19LGFjdGlvbnMuc2NoZWR1bGVXaXRuZXNzZXM9YXN5bmMoKT0+eyJudWxsIj09PWFwaS5zZW5kZXImJmF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9"}}}

0
0
0.000
avatar

{"id":"ssc-mainnet-hive","json":{"contractName":"contract","contractAction":"update","contractPayload":{"name":"witnesses","params":"","code":"Y29uc3QgTkJfQVBQUk9WQUxTX0FMTE9XRUQ9MzAsTkJfVE9QX1dJVE5FU1NFUz0yMCxOQl9CQUNLVVBfV0lUTkVTU0VTPTEsTkJfV0lUTkVTU0VTPTIxLE5CX1dJVE5FU1NFU19TSUdOQVRVUkVTX1JFUVVJUkVEPTE0LE1BWF9ST1VORFNfTUlTU0VEX0lOX0FfUk9XPTMsTUFYX1JPVU5EX1BST1BPU0lUSU9OX1dBSVRJTkdfUEVSSU9EPTQwLE5CX1RPS0VOU19UT19SRVdBUkQ9IjAuMDA5NTEyOTMiLE5CX1RPS0VOU19ORUVERURfQkVGT1JFX1JFV0FSRElORz0iMC4wNDc1NjQ2NSIsVVRJTElUWV9UT0tFTl9TWU1CT0w9IkJFRSIsR09WRVJOQU5DRV9UT0tFTl9TWU1CT0w9IkJFRSIsR09WRVJOQU5DRV9UT0tFTl9QUkVDSVNJT049MyxHT1ZFUk5BTkNFX1RPS0VOX01JTl9WQUxVRT0iMC4wMDEiO2FjdGlvbnMuY3JlYXRlU1NDPWFzeW5jKCk9PntpZighMT09PWF3YWl0IGFwaS5kYi50YWJsZUV4aXN0cygid2l0bmVzc2VzIikpe2F3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgid2l0bmVzc2VzIixbImFwcHJvdmFsV2VpZ2h0Il0pLGF3YWl0IGFwaS5kYi5jcmVhdGVUYWJsZSgiYXBwcm92YWxzIixbImZyb20iLCJ0byJdKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoImFjY291bnRzIixbImFjY291bnQiXSksYXdhaXQgYXBpLmRiLmNyZWF0ZVRhYmxlKCJzY2hlZHVsZXMiKSxhd2FpdCBhcGkuZGIuY3JlYXRlVGFibGUoInBhcmFtcyIpO2NvbnN0IHBhcmFtcz17dG90YWxBcHByb3ZhbFdlaWdodDoiMCIsbnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3NlczowLGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOjAscm91bmQ6MCxsYXN0QmxvY2tSb3VuZDowLGN1cnJlbnRXaXRuZXNzOm51bGwsYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlOjAsbGFzdFdpdG5lc3NlczpbXSxudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ6MzAsbnVtYmVyT2ZUb3BXaXRuZXNzZXM6MjAsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6MjEsd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDoxNCxtYXhSb3VuZHNNaXNzZWRJbkFSb3c6MyxtYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZDo0MH07YXdhaXQgYXBpLmRiLmluc2VydCgicGFyYW1zIixwYXJhbXMpfX0sYWN0aW9ucy5yZXNldFNjaGVkdWxlPWFzeW5jKCk9PntpZihhcGkuc2VuZGVyIT09YXBpLm93bmVyKXJldHVybjtjb25zdCBzY2hlZHVsZXM9YXdhaXQgYXBpLmRiLmZpbmQoInNjaGVkdWxlcyIse30pO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxzY2hlZHVsZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBzY2hlZHVsZT1zY2hlZHVsZXNbaW5kZXhdO2F3YWl0IGFwaS5kYi5yZW1vdmUoInNjaGVkdWxlcyIsc2NoZWR1bGUpfWNvbnN0IHBhcmFtcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgicGFyYW1zIix7fSk7cGFyYW1zLmN1cnJlbnRXaXRuZXNzPW51bGwscGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT0wLHBhcmFtcy5sYXN0V2l0bmVzc2VzPVtdLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKX0sYWN0aW9ucy51cGRhdGVQYXJhbXM9YXN5bmMgcGF5bG9hZD0+e2lmKGFwaS5zZW5kZXIhPT1hcGkub3duZXIpcmV0dXJuO2NvbnN0e251bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudDpudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsbnVtYmVyT2ZUb3BXaXRuZXNzZXM6bnVtYmVyT2ZUb3BXaXRuZXNzZXMsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6bnVtYmVyT2ZXaXRuZXNzU2xvdHMsd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDp3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkLG1heFJvdW5kc01pc3NlZEluQVJvdzptYXhSb3VuZHNNaXNzZWRJbkFSb3csbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2R9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KTtsZXQgc2hvdWxkUmVzZXRTY2hlZHVsZT0hMTtudW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQmJk51bWJlci5pc0ludGVnZXIobnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50KSYmKHBhcmFtcy5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQ9bnVtYmVyT2ZBcHByb3ZhbHNQZXJBY2NvdW50KSxudW1iZXJPZlRvcFdpdG5lc3NlcyYmTnVtYmVyLmlzSW50ZWdlcihudW1iZXJPZlRvcFdpdG5lc3NlcykmJihwYXJhbXMubnVtYmVyT2ZUb3BXaXRuZXNzZXM9bnVtYmVyT2ZUb3BXaXRuZXNzZXMpLG51bWJlck9mV2l0bmVzc1Nsb3RzJiZOdW1iZXIuaXNJbnRlZ2VyKG51bWJlck9mV2l0bmVzc1Nsb3RzKSYmcGFyYW1zLm51bWJlck9mV2l0bmVzc1Nsb3RzIT09bnVtYmVyT2ZXaXRuZXNzU2xvdHMmJihzaG91bGRSZXNldFNjaGVkdWxlPSEwLHBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cz1udW1iZXJPZldpdG5lc3NTbG90cyksd2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCYmTnVtYmVyLmlzSW50ZWdlcih3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkKSYmKHBhcmFtcy53aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkPXdpdG5lc3NTaWduYXR1cmVzUmVxdWlyZWQpLG1heFJvdW5kc01pc3NlZEluQVJvdyYmTnVtYmVyLmlzSW50ZWdlcihtYXhSb3VuZHNNaXNzZWRJbkFSb3cpJiYocGFyYW1zLm1heFJvdW5kc01pc3NlZEluQVJvdz1tYXhSb3VuZHNNaXNzZWRJbkFSb3cpLG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kJiZOdW1iZXIuaXNJbnRlZ2VyKG1heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kKSYmKHBhcmFtcy5tYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZD1tYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCksYXBpLmFzc2VydChwYXJhbXMubnVtYmVyT2ZUb3BXaXRuZXNzZXMrMT09PXBhcmFtcy5udW1iZXJPZldpdG5lc3NTbG90cywib25seSAxIGJhY2t1cCBhbGxvd2VkIikmJihhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksc2hvdWxkUmVzZXRTY2hlZHVsZSYmYXdhaXQgYWN0aW9ucy5yZXNldFNjaGVkdWxlKCkpfTtjb25zdCB1cGRhdGVXaXRuZXNzUmFuaz1hc3luYyh3aXRuZXNzLGFwcHJvdmFsV2VpZ2h0KT0+e2NvbnN0IHdpdG5lc3NSZWM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6d2l0bmVzc30pO2lmKHdpdG5lc3NSZWMpe2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PXdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWw7d2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbD1hcGkuQmlnTnVtYmVyKHdpdG5lc3NSZWMuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoNSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzUmVjKTtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO3BhcmFtcy50b3RhbEFwcHJvdmFsV2VpZ2h0PWFwaS5CaWdOdW1iZXIocGFyYW1zLnRvdGFsQXBwcm92YWxXZWlnaHQpLnBsdXMoYXBwcm92YWxXZWlnaHQpLnRvRml4ZWQoNSksYXBpLkJpZ051bWJlcihvbGRBcHByb3ZhbFdlaWdodCkuZXEoMCkmJmFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkuZ3QoMCk/cGFyYW1zLm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMrPTE6YXBpLkJpZ051bWJlcihvbGRBcHByb3ZhbFdlaWdodCkuZ3QoMCkmJmFwaS5CaWdOdW1iZXIod2l0bmVzc1JlYy5hcHByb3ZhbFdlaWdodC4kbnVtYmVyRGVjaW1hbCkuZXEoMCkmJihwYXJhbXMubnVtYmVyT2ZBcHByb3ZlZFdpdG5lc3Nlcy09MSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpfX07YWN0aW9ucy51cGRhdGVXaXRuZXNzZXNBcHByb3ZhbHM9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e2FjY291bnQ6YWNjb3VudCxjYWxsaW5nQ29udHJhY3RJbmZvOmNhbGxpbmdDb250cmFjdEluZm99PXBheWxvYWQ7aWYodm9pZCAwPT09Y2FsbGluZ0NvbnRyYWN0SW5mbylyZXR1cm47aWYoInRva2VucyIhPT1jYWxsaW5nQ29udHJhY3RJbmZvLm5hbWUpcmV0dXJuO2NvbnN0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphY2NvdW50fSk7aWYobnVsbCE9PWFjY3Qpe2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YWNjb3VudCxzeW1ib2w6IldPUktFUkJFRSJ9KTtsZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoNSkpO2NvbnN0IG9sZEFwcHJvdmFsV2VpZ2h0PWFjY3QuYXBwcm92YWxXZWlnaHQsZGVsdGFBcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5taW51cyhvbGRBcHByb3ZhbFdlaWdodCkudG9GaXhlZCg1KTtpZihhY2N0LmFwcHJvdmFsV2VpZ2h0PWFwcHJvdmFsV2VpZ2h0LCFhcGkuQmlnTnVtYmVyKGRlbHRhQXBwcm92YWxXZWlnaHQpLmVxKDApKXthd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCk7Y29uc3QgYXBwcm92YWxzPWF3YWl0IGFwaS5kYi5maW5kKCJhcHByb3ZhbHMiLHtmcm9tOmFjY291bnR9KTtmb3IobGV0IGluZGV4PTA7aW5kZXg8YXBwcm92YWxzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3QgYXBwcm92YWw9YXBwcm92YWxzW2luZGV4XTthd2FpdCB1cGRhdGVXaXRuZXNzUmFuayhhcHByb3ZhbC50byxkZWx0YUFwcHJvdmFsV2VpZ2h0KX19fX0sYWN0aW9ucy5yZWdpc3Rlcj1hc3luYyBwYXlsb2FkPT57Y29uc3R7SVA6SVAsUlBDUG9ydDpSUENQb3J0LFAyUFBvcnQ6UDJQUG9ydCxzaWduaW5nS2V5OnNpZ25pbmdLZXksZW5hYmxlZDplbmFibGVkLGlzU2lnbmVkV2l0aEFjdGl2ZUtleTppc1NpZ25lZFdpdGhBY3RpdmVLZXl9PXBheWxvYWQ7aWYoYXBpLmFzc2VydCghMD09PWlzU2lnbmVkV2l0aEFjdGl2ZUtleSwiYWN0aXZlIGtleSByZXF1aXJlZCIpJiZhcGkuYXNzZXJ0KElQJiYic3RyaW5nIj09dHlwZW9mIElQJiZhcGkudmFsaWRhdG9yLmlzSVAoSVApLCJJUCBpcyBpbnZhbGlkIikmJmFwaS5hc3NlcnQoUlBDUG9ydCYmTnVtYmVyLmlzSW50ZWdlcihSUENQb3J0KSYmUlBDUG9ydD49MCYmUlBDUG9ydDw9NjU1MzUsIlJQQ1BvcnQgbXVzdCBiZSBhbiBpbnRlZ2VyIGJldHdlZW4gMCBhbmQgNjU1MzUiKSYmYXBpLmFzc2VydChQMlBQb3J0JiZOdW1iZXIuaXNJbnRlZ2VyKFAyUFBvcnQpJiZQMlBQb3J0Pj0wJiZQMlBQb3J0PD02NTUzNSwiUDJQUG9ydCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VlbiAwIGFuZCA2NTUzNSIpJiZhcGkuYXNzZXJ0KGFwaS52YWxpZGF0b3IuaXNBbHBoYW51bWVyaWMoc2lnbmluZ0tleSkmJjUzPT09c2lnbmluZ0tleS5sZW5ndGgsImludmFsaWQgc2lnbmluZyBrZXkiKSYmYXBpLmFzc2VydCgiYm9vbGVhbiI9PXR5cGVvZiBlbmFibGVkLCJlbmFibGVkIG11c3QgYmUgYSBib29sZWFuIikpe2xldCB3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHtzaWduaW5nS2V5OnNpZ25pbmdLZXl9KTthcGkuYXNzZXJ0KG51bGw9PT13aXRuZXNzfHx3aXRuZXNzLmFjY291bnQ9PT1hcGkuc2VuZGVyLCJhIHdpdG5lc3MgaXMgYWxyZWFkeSB1c2luZyB0aGlzIHNpZ25pbmcga2V5IikmJih3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHtJUDpJUCxQMlBQb3J0OlAyUFBvcnR9KSxhcGkuYXNzZXJ0KG51bGw9PT13aXRuZXNzfHx3aXRuZXNzLmFjY291bnQ9PT1hcGkuc2VuZGVyLCJhIHdpdG5lc3MgaXMgYWxyZWFkeSB1c2luZyB0aGlzIElQL1BvcnQiKSYmKHdpdG5lc3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6YXBpLnNlbmRlcn0pLHdpdG5lc3M/KHdpdG5lc3MuSVA9SVAsd2l0bmVzcy5SUENQb3J0PVJQQ1BvcnQsd2l0bmVzcy5QMlBQb3J0PVAyUFBvcnQsd2l0bmVzcy5zaWduaW5nS2V5PXNpZ25pbmdLZXksd2l0bmVzcy5lbmFibGVkPWVuYWJsZWQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIix3aXRuZXNzKSk6KHdpdG5lc3M9e2FjY291bnQ6YXBpLnNlbmRlcixhcHByb3ZhbFdlaWdodDp7JG51bWJlckRlY2ltYWw6IjAifSxzaWduaW5nS2V5OnNpZ25pbmdLZXksSVA6SVAsUlBDUG9ydDpSUENQb3J0LFAyUFBvcnQ6UDJQUG9ydCxlbmFibGVkOmVuYWJsZWQsbWlzc2VkUm91bmRzOjAsbWlzc2VkUm91bmRzSW5BUm93OjAsdmVyaWZpZWRSb3VuZHM6MCxsYXN0Um91bmRWZXJpZmllZDpudWxsLGxhc3RCbG9ja1ZlcmlmaWVkOm51bGx9LGF3YWl0IGFwaS5kYi5pbnNlcnQoIndpdG5lc3NlcyIsd2l0bmVzcykpKSl9fSxhY3Rpb25zLmFwcHJvdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3dpdG5lc3M6d2l0bmVzc309cGF5bG9hZCxwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pO2lmKGFwaS5hc3NlcnQod2l0bmVzcyYmInN0cmluZyI9PXR5cGVvZiB3aXRuZXNzJiZ3aXRuZXNzLmxlbmd0aD49MyYmd2l0bmVzcy5sZW5ndGg8PTE2LCJpbnZhbGlkIHdpdG5lc3MgYWNjb3VudCIpKXtjb25zdCB3aXRuZXNzUmVjPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KHdpdG5lc3NSZWMsIndpdG5lc3MgZG9lcyBub3QgZXhpc3QiKSl7bGV0IGFjY3Q9YXdhaXQgYXBpLmRiLmZpbmRPbmUoImFjY291bnRzIix7YWNjb3VudDphcGkuc2VuZGVyfSk7aWYobnVsbD09PWFjY3QmJihhY2N0PXthY2NvdW50OmFwaS5zZW5kZXIsYXBwcm92YWxzOjAsYXBwcm92YWxXZWlnaHQ6eyRudW1iZXJEZWNpbWFsOiIwIn19LGFjY3Q9YXdhaXQgYXBpLmRiLmluc2VydCgiYWNjb3VudHMiLGFjY3QpKSxhcGkuYXNzZXJ0KGFjY3QuYXBwcm92YWxzPHBhcmFtcy5udW1iZXJPZkFwcHJvdmFsc1BlckFjY291bnQsYHlvdSBjYW4gb25seSBhcHByb3ZlICR7cGFyYW1zLm51bWJlck9mQXBwcm92YWxzUGVyQWNjb3VudH0gd2l0bmVzc2VzYCkpe2xldCBhcHByb3ZhbD1hd2FpdCBhcGkuZGIuZmluZE9uZSgiYXBwcm92YWxzIix7ZnJvbTphcGkuc2VuZGVyLHRvOndpdG5lc3N9KTtpZihhcGkuYXNzZXJ0KG51bGw9PT1hcHByb3ZhbCwieW91IGFscmVhZHkgYXBwcm92ZWQgdGhpcyB3aXRuZXNzIikpe2FwcHJvdmFsPXtmcm9tOmFwaS5zZW5kZXIsdG86d2l0bmVzc30sYXdhaXQgYXBpLmRiLmluc2VydCgiYXBwcm92YWxzIixhcHByb3ZhbCk7Y29uc3QgYmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImJhbGFuY2VzIix7YWNjb3VudDphcGkuc2VuZGVyLHN5bWJvbDoiV09SS0VSQkVFIn0pO2xldCBhcHByb3ZhbFdlaWdodD0wO2JhbGFuY2UmJmJhbGFuY2Uuc3Rha2UmJihhcHByb3ZhbFdlaWdodD1iYWxhbmNlLnN0YWtlKSxiYWxhbmNlJiZiYWxhbmNlLmRlbGVnYXRpb25zSW4mJihhcHByb3ZhbFdlaWdodD1hcGkuQmlnTnVtYmVyKGFwcHJvdmFsV2VpZ2h0KS5wbHVzKGJhbGFuY2UuZGVsZWdhdGlvbnNJbikudG9GaXhlZCg1KSksYWNjdC5hcHByb3ZhbHMrPTEsYWNjdC5hcHByb3ZhbFdlaWdodD1hcHByb3ZhbFdlaWdodCxhd2FpdCBhcGkuZGIudXBkYXRlKCJhY2NvdW50cyIsYWNjdCksYXdhaXQgdXBkYXRlV2l0bmVzc1Jhbmsod2l0bmVzcyxhcHByb3ZhbFdlaWdodCl9fX19fSxhY3Rpb25zLmRpc2FwcHJvdmU9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3dpdG5lc3M6d2l0bmVzc309cGF5bG9hZDtpZihhcGkuYXNzZXJ0KHdpdG5lc3MmJiJzdHJpbmciPT10eXBlb2Ygd2l0bmVzcyYmd2l0bmVzcy5sZW5ndGg+PTMmJndpdG5lc3MubGVuZ3RoPD0xNiwiaW52YWxpZCB3aXRuZXNzIGFjY291bnQiKSl7Y29uc3Qgd2l0bmVzc1JlYz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDp3aXRuZXNzfSk7aWYoYXBpLmFzc2VydCh3aXRuZXNzUmVjLCJ3aXRuZXNzIGRvZXMgbm90IGV4aXN0Iikpe2xldCBhY2N0PWF3YWl0IGFwaS5kYi5maW5kT25lKCJhY2NvdW50cyIse2FjY291bnQ6YXBpLnNlbmRlcn0pO2lmKG51bGw9PT1hY2N0JiYoYWNjdD17YWNjb3VudDphcGkuc2VuZGVyLGFwcHJvdmFsczowLGFwcHJvdmFsV2VpZ2h0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fSxhd2FpdCBhcGkuZGIuaW5zZXJ0KCJhY2NvdW50cyIsYWNjdCkpLGFwaS5hc3NlcnQoYWNjdC5hcHByb3ZhbHM+MCwibm8gYXBwcm92YWxzIGZvdW5kIikpe2NvbnN0IGFwcHJvdmFsPWF3YWl0IGFwaS5kYi5maW5kT25lKCJhcHByb3ZhbHMiLHtmcm9tOmFwaS5zZW5kZXIsdG86d2l0bmVzc30pO2lmKGFwaS5hc3NlcnQobnVsbCE9PWFwcHJvdmFsLCJ5b3UgaGF2ZSBub3QgYXBwcm92ZWQgdGhpcyB3aXRuZXNzIikpe2F3YWl0IGFwaS5kYi5yZW1vdmUoImFwcHJvdmFscyIsYXBwcm92YWwpO2NvbnN0IGJhbGFuY2U9YXdhaXQgYXBpLmRiLmZpbmRPbmVJblRhYmxlKCJ0b2tlbnMiLCJiYWxhbmNlcyIse2FjY291bnQ6YXBpLnNlbmRlcixzeW1ib2w6IldPUktFUkJFRSJ9KTtsZXQgYXBwcm92YWxXZWlnaHQ9MDtiYWxhbmNlJiZiYWxhbmNlLnN0YWtlJiYoYXBwcm92YWxXZWlnaHQ9YmFsYW5jZS5zdGFrZSksYmFsYW5jZSYmYmFsYW5jZS5kZWxlZ2F0aW9uc0luJiYoYXBwcm92YWxXZWlnaHQ9YXBpLkJpZ051bWJlcihhcHByb3ZhbFdlaWdodCkucGx1cyhiYWxhbmNlLmRlbGVnYXRpb25zSW4pLnRvRml4ZWQoNSkpLGFjY3QuYXBwcm92YWxzLT0xLGFjY3QuYXBwcm92YWxXZWlnaHQ9YXBwcm92YWxXZWlnaHQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgiYWNjb3VudHMiLGFjY3QpLGF3YWl0IHVwZGF0ZVdpdG5lc3NSYW5rKHdpdG5lc3MsIi0iK2FwcHJvdmFsV2VpZ2h0KX19fX19O2NvbnN0IGNoYW5nZUN1cnJlbnRXaXRuZXNzPWFzeW5jKCk9Pntjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtjdXJyZW50V2l0bmVzczpjdXJyZW50V2l0bmVzcyx0b3RhbEFwcHJvdmFsV2VpZ2h0OnRvdGFsQXBwcm92YWxXZWlnaHQsbGFzdFdpdG5lc3NlczpsYXN0V2l0bmVzc2VzLGxhc3RCbG9ja1JvdW5kOmxhc3RCbG9ja1JvdW5kLHJvdW5kOnJvdW5kLG1heFJvdW5kc01pc3NlZEluQVJvdzptYXhSb3VuZHNNaXNzZWRJbkFSb3csbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2R9PXBhcmFtcztsZXQgd2l0bmVzc0ZvdW5kPSExO2NvbnN0IHJhbmRvbT1hcGkucmFuZG9tKCkscmFuZG9tV2VpZ2h0PWFwaS5CaWdOdW1iZXIodG90YWxBcHByb3ZhbFdlaWdodCkudGltZXMocmFuZG9tKS50b0ZpeGVkKDUsMSk7bGV0IG9mZnNldD0wLGFjY1dlaWdodD0wLHdpdG5lc3Nlcz1hd2FpdCBhcGkuZGIuZmluZCgid2l0bmVzc2VzIix7YXBwcm92YWxXZWlnaHQ6eyRndDp7JG51bWJlckRlY2ltYWw6IjAifX19LDEwMCxvZmZzZXQsW3tpbmRleDoiYXBwcm92YWxXZWlnaHQiLGRlc2NlbmRpbmc6ITB9XSk7Y29uc3Qgc2NoZWR1bGVzPWF3YWl0IGFwaS5kYi5maW5kKCJzY2hlZHVsZXMiLHtyb3VuZDpyb3VuZH0pLHByZXZpb3VzUm91bmRXaXRuZXNzPWxhc3RXaXRuZXNzZXMubGVuZ3RoPjE/bGFzdFdpdG5lc3Nlc1tsYXN0V2l0bmVzc2VzLmxlbmd0aC0yXToiIixzY2hlZHVsZT1hd2FpdCBhcGkuZGIuZmluZE9uZSgic2NoZWR1bGVzIix7cm91bmQ6cm91bmQsd2l0bmVzczpjdXJyZW50V2l0bmVzcyxibG9ja051bWJlcjpsYXN0QmxvY2tSb3VuZH0pO2Rve2ZvcihsZXQgaW5kZXg9MDtpbmRleDx3aXRuZXNzZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCB3aXRuZXNzPXdpdG5lc3Nlc1tpbmRleF07aWYoYWNjV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYWNjV2VpZ2h0KS5wbHVzKHdpdG5lc3MuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoNSksITA9PT13aXRuZXNzLmVuYWJsZWQmJndpdG5lc3MuYWNjb3VudCE9PXByZXZpb3VzUm91bmRXaXRuZXNzJiZ2b2lkIDA9PT1zY2hlZHVsZXMuZmluZChzPT5zLndpdG5lc3M9PT13aXRuZXNzLmFjY291bnQpJiZhcGkuQmlnTnVtYmVyKHJhbmRvbVdlaWdodCkubHRlKGFjY1dlaWdodCkpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke3NjaGVkdWxlLndpdG5lc3N9IHRvICR7d2l0bmVzcy5hY2NvdW50fWApLHNjaGVkdWxlLndpdG5lc3M9d2l0bmVzcy5hY2NvdW50LGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIsc2NoZWR1bGUpLHBhcmFtcy5jdXJyZW50V2l0bmVzcz13aXRuZXNzLmFjY291bnQscGFyYW1zLmxhc3RXaXRuZXNzZXMucHVzaCh3aXRuZXNzLmFjY291bnQpLHBhcmFtcy5ibG9ja051bWJlcldpdG5lc3NDaGFuZ2U9YXBpLmJsb2NrTnVtYmVyK21heFJvdW5kUHJvcG9zaXRpb25XYWl0aW5nUGVyaW9kLGF3YWl0IGFwaS5kYi51cGRhdGUoInBhcmFtcyIscGFyYW1zKTtjb25zdCBzY2hlZHVsZWRXaXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSk7c2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHMrPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3crPTEsc2NoZWR1bGVkV2l0bmVzcy5taXNzZWRSb3VuZHNJbkFSb3c+PW1heFJvdW5kc01pc3NlZEluQVJvdyYmKHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93PTAsc2NoZWR1bGVkV2l0bmVzcy5lbmFibGVkPSExKSxhd2FpdCBhcGkuZGIudXBkYXRlKCJ3aXRuZXNzZXMiLHNjaGVkdWxlZFdpdG5lc3MpLHdpdG5lc3NGb3VuZD0hMCxhcGkuZW1pdCgiY3VycmVudFdpdG5lc3NDaGFuZ2VkIix7fSk7YnJlYWt9fSExPT09d2l0bmVzc0ZvdW5kJiYob2Zmc2V0Kz0xMDAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKSl9d2hpbGUod2l0bmVzc2VzLmxlbmd0aD4wJiYhMT09PXdpdG5lc3NGb3VuZCk7aWYoITE9PT13aXRuZXNzRm91bmQpe2FwaS5kZWJ1Zygibm8gYmFja3VwIHdpdG5lc3Mgd2FzIGZvdW5kLCBpbnRlcmNoYW5naW5nIHdpdG5lc3NlcyB3aXRoaW4gdGhlIGN1cnJlbnQgc2NoZWR1bGUiKTtmb3IobGV0IGluZGV4PTA7aW5kZXg8c2NoZWR1bGVzLmxlbmd0aC0xO2luZGV4Kz0xKXtjb25zdCBzY2hlZD1zY2hlZHVsZXNbaW5kZXhdLG5ld1dpdG5lc3M9c2NoZWQud2l0bmVzcztpZihuZXdXaXRuZXNzIT09cHJldmlvdXNSb3VuZFdpdG5lc3Mpe2FwaS5kZWJ1ZyhgY2hhbmdlZCBjdXJyZW50IHdpdG5lc3MgZnJvbSAke2N1cnJlbnRXaXRuZXNzfSB0byAke25ld1dpdG5lc3N9YCksc2NoZWR1bGUud2l0bmVzcz1uZXdXaXRuZXNzLGF3YWl0IGFwaS5kYi51cGRhdGUoInNjaGVkdWxlcyIsc2NoZWR1bGUpLHNjaGVkLndpdG5lc3M9Y3VycmVudFdpdG5lc3MsYXdhaXQgYXBpLmRiLnVwZGF0ZSgic2NoZWR1bGVzIixzY2hlZCkscGFyYW1zLmN1cnJlbnRXaXRuZXNzPW5ld1dpdG5lc3MscGFyYW1zLmxhc3RXaXRuZXNzZXMucHVzaChuZXdXaXRuZXNzKSxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyk7Y29uc3Qgc2NoZWR1bGVkV2l0bmVzcz1hd2FpdCBhcGkuZGIuZmluZE9uZSgid2l0bmVzc2VzIix7YWNjb3VudDpjdXJyZW50V2l0bmVzc30pO3NjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzKz0xLHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93Kz0xLHNjaGVkdWxlZFdpdG5lc3MubWlzc2VkUm91bmRzSW5BUm93Pj1tYXhSb3VuZHNNaXNzZWRJbkFSb3cmJihzY2hlZHVsZWRXaXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdz0wLHNjaGVkdWxlZFdpdG5lc3MuZW5hYmxlZD0hMSksYXdhaXQgYXBpLmRiLnVwZGF0ZSgid2l0bmVzc2VzIixzY2hlZHVsZWRXaXRuZXNzKSxhcGkuZW1pdCgiY3VycmVudFdpdG5lc3NDaGFuZ2VkIix7fSk7YnJlYWt9fX19LG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlPWFzeW5jKCk9PntpZigibnVsbCIhPT1hcGkuc2VuZGVyKXJldHVybjtjb25zdCBwYXJhbXM9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInBhcmFtcyIse30pLHtudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzOm51bWJlck9mQXBwcm92ZWRXaXRuZXNzZXMsdG90YWxBcHByb3ZhbFdlaWdodDp0b3RhbEFwcHJvdmFsV2VpZ2h0LGxhc3RWZXJpZmllZEJsb2NrTnVtYmVyOmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyLGJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZTpibG9ja051bWJlcldpdG5lc3NDaGFuZ2UsbGFzdEJsb2NrUm91bmQ6bGFzdEJsb2NrUm91bmQsbnVtYmVyT2ZUb3BXaXRuZXNzZXM6bnVtYmVyT2ZUb3BXaXRuZXNzZXMsbnVtYmVyT2ZXaXRuZXNzU2xvdHM6bnVtYmVyT2ZXaXRuZXNzU2xvdHMsbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2Q6bWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2R9PXBhcmFtcyxjdXJyZW50QmxvY2s9bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIrMTtsZXQgc2NoZWR1bGU9YXdhaXQgYXBpLmRiLmZpbmRPbmUoInNjaGVkdWxlcyIse2Jsb2NrTnVtYmVyOmN1cnJlbnRCbG9ja30pO2lmKG51bGw9PT1zY2hlZHVsZSl7aWYoYXBpLmRlYnVnKCJjYWxjdWxhdGluZyBuZXcgc2NoZWR1bGUiKSxzY2hlZHVsZT1bXSxudW1iZXJPZkFwcHJvdmVkV2l0bmVzc2VzPj1udW1iZXJPZldpdG5lc3NTbG90cyl7Y29uc3QgcmFuZG9tPWFwaS5yYW5kb20oKTtsZXQgcmFuZG9tV2VpZ2h0PW51bGwsb2Zmc2V0PTAsYWNjV2VpZ2h0PTAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKTtkb3tmb3IobGV0IGluZGV4PTA7aW5kZXg8d2l0bmVzc2VzLmxlbmd0aDtpbmRleCs9MSl7Y29uc3Qgd2l0bmVzcz13aXRuZXNzZXNbaW5kZXhdO3NjaGVkdWxlLmxlbmd0aD49bnVtYmVyT2ZUb3BXaXRuZXNzZXMmJm51bGw9PT1yYW5kb21XZWlnaHQmJihyYW5kb21XZWlnaHQ9YXBpLkJpZ051bWJlcihhY2NXZWlnaHQpLnBsdXMoIjAuMDAwMDEiKS5wbHVzKGFwaS5CaWdOdW1iZXIodG90YWxBcHByb3ZhbFdlaWdodCkubWludXMoYWNjV2VpZ2h0KS50aW1lcyhyYW5kb20pLnRvRml4ZWQoNSwxKSkudG9GaXhlZCg1KSksYWNjV2VpZ2h0PWFwaS5CaWdOdW1iZXIoYWNjV2VpZ2h0KS5wbHVzKHdpdG5lc3MuYXBwcm92YWxXZWlnaHQuJG51bWJlckRlY2ltYWwpLnRvRml4ZWQoNSksITA9PT13aXRuZXNzLmVuYWJsZWQmJihzY2hlZHVsZS5sZW5ndGg8bnVtYmVyT2ZUb3BXaXRuZXNzZXN8fGFwaS5CaWdOdW1iZXIocmFuZG9tV2VpZ2h0KS5sdGUoYWNjV2VpZ2h0KSkmJnNjaGVkdWxlLnB1c2goe3dpdG5lc3M6d2l0bmVzcy5hY2NvdW50LGJsb2NrTnVtYmVyOm51bGx9KSxzY2hlZHVsZS5sZW5ndGg+PW51bWJlck9mV2l0bmVzc1Nsb3RzJiYoaW5kZXg9d2l0bmVzc2VzLmxlbmd0aCl9c2NoZWR1bGUubGVuZ3RoPG51bWJlck9mV2l0bmVzc1Nsb3RzJiYob2Zmc2V0Kz0xMDAsd2l0bmVzc2VzPWF3YWl0IGFwaS5kYi5maW5kKCJ3aXRuZXNzZXMiLHthcHByb3ZhbFdlaWdodDp7JGd0OnskbnVtYmVyRGVjaW1hbDoiMCJ9fX0sMTAwLG9mZnNldCxbe2luZGV4OiJhcHByb3ZhbFdlaWdodCIsZGVzY2VuZGluZzohMH1dKSl9d2hpbGUod2l0bmVzc2VzLmxlbmd0aD4wJiZzY2hlZHVsZS5sZW5ndGg8bnVtYmVyT2ZXaXRuZXNzU2xvdHMpfWlmKHNjaGVkdWxlLmxlbmd0aD09PW51bWJlck9mV2l0bmVzc1Nsb3RzKXtsZXQgaix4O2ZvcihsZXQgaT1zY2hlZHVsZS5sZW5ndGgtMTtpPjA7aS09MSl7Y29uc3QgcmFuZG9tPWFwaS5yYW5kb20oKTtqPU1hdGguZmxvb3IocmFuZG9tKihpKzEpKSx4PXNjaGVkdWxlW2ldLHNjaGVkdWxlW2ldPXNjaGVkdWxlW2pdLHNjaGVkdWxlW2pdPXh9bGV0IGxhc3RXaXRuZXNzZXM9cGFyYW1zLmxhc3RXaXRuZXNzZXM7Y29uc3QgcHJldmlvdXNSb3VuZFdpdG5lc3M9bGFzdFdpdG5lc3Nlcy5sZW5ndGg+MD9sYXN0V2l0bmVzc2VzW2xhc3RXaXRuZXNzZXMubGVuZ3RoLTFdOiIiO2xhc3RXaXRuZXNzZXMubGVuZ3RoPj1udW1iZXJPZldpdG5lc3NTbG90cyYmKGxhc3RXaXRuZXNzZXM9W10pO2NvbnN0IGxhc3RXaXRuZXNzPXNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXS53aXRuZXNzO2lmKGxhc3RXaXRuZXNzZXMuaW5jbHVkZXMobGFzdFdpdG5lc3MpfHxwcmV2aW91c1JvdW5kV2l0bmVzcz09PWxhc3RXaXRuZXNzKWZvcihsZXQgaT0wO2k8c2NoZWR1bGUubGVuZ3RoO2krPTEpaWYoIWxhc3RXaXRuZXNzZXMuaW5jbHVkZXMoc2NoZWR1bGVbaV0ud2l0bmVzcykmJnNjaGVkdWxlW2ldLndpdG5lc3MhPT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7Y29uc3QgdGhpc1dpdG5lc3M9c2NoZWR1bGVbaV0ud2l0bmVzcztzY2hlZHVsZVtpXS53aXRuZXNzPWxhc3RXaXRuZXNzLHNjaGVkdWxlW3NjaGVkdWxlLmxlbmd0aC0xXS53aXRuZXNzPXRoaXNXaXRuZXNzO2JyZWFrfWlmKHNjaGVkdWxlWzBdLndpdG5lc3M9PT1wcmV2aW91c1JvdW5kV2l0bmVzcyl7Y29uc3QgZmlyc3RXaXRuZXNzPXNjaGVkdWxlWzBdLndpdG5lc3Msc2Vjb25kV2l0bmVzcz1zY2hlZHVsZVsxXS53aXRuZXNzO3NjaGVkdWxlWzBdLndpdG5lc3M9c2Vjb25kV2l0bmVzcyxzY2hlZHVsZVsxXS53aXRuZXNzPWZpcnN0V2l0bmVzc31sZXQgYmxvY2tOdW1iZXI9MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyP2FwaS5ibG9ja051bWJlcjpsYXN0VmVyaWZpZWRCbG9ja051bWJlcisxO3BhcmFtcy5yb3VuZCs9MTtmb3IobGV0IGk9MDtpPHNjaGVkdWxlLmxlbmd0aDtpKz0xKXNjaGVkdWxlW2ldLmJsb2NrTnVtYmVyPWJsb2NrTnVtYmVyLHNjaGVkdWxlW2ldLnJvdW5kPXBhcmFtcy5yb3VuZCxhcGkuZGVidWcoYHNjaGVkdWxlZCB3aXRuZXNzICR7c2NoZWR1bGVbaV0ud2l0bmVzc30gZm9yIGJsb2NrICR7YmxvY2tOdW1iZXJ9IChyb3VuZCAke3BhcmFtcy5yb3VuZH0pYCksYXdhaXQgYXBpLmRiLmluc2VydCgic2NoZWR1bGVzIixzY2hlZHVsZVtpXSksYmxvY2tOdW1iZXIrPTE7MD09PWxhc3RWZXJpZmllZEJsb2NrTnVtYmVyJiYocGFyYW1zLmxhc3RWZXJpZmllZEJsb2NrTnVtYmVyPWFwaS5ibG9ja051bWJlci0xKTtjb25zdCBsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGU9c2NoZWR1bGVbc2NoZWR1bGUubGVuZ3RoLTFdO3BhcmFtcy5sYXN0QmxvY2tSb3VuZD1sYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUuYmxvY2tOdW1iZXIscGFyYW1zLmN1cnJlbnRXaXRuZXNzPWxhc3RXaXRuZXNzUm91bmRTY2hlZHVsZS53aXRuZXNzLGxhc3RXaXRuZXNzZXMucHVzaChsYXN0V2l0bmVzc1JvdW5kU2NoZWR1bGUud2l0bmVzcykscGFyYW1zLmxhc3RXaXRuZXNzZXM9bGFzdFdpdG5lc3NlcyxwYXJhbXMuYmxvY2tOdW1iZXJXaXRuZXNzQ2hhbmdlPWFwaS5ibG9ja051bWJlcittYXhSb3VuZFByb3Bvc2l0aW9uV2FpdGluZ1BlcmlvZCxhd2FpdCBhcGkuZGIudXBkYXRlKCJwYXJhbXMiLHBhcmFtcyksYXBpLmVtaXQoIm5ld1NjaGVkdWxlIix7fSl9fWVsc2UgYXBpLmJsb2NrTnVtYmVyPj1ibG9ja051bWJlcldpdG5lc3NDaGFuZ2UmJihhcGkuYmxvY2tOdW1iZXI+bGFzdEJsb2NrUm91bmQ/YXdhaXQgY2hhbmdlQ3VycmVudFdpdG5lc3MoKToocGFyYW1zLmJsb2NrTnVtYmVyV2l0bmVzc0NoYW5nZT1hcGkuYmxvY2tOdW1iZXIrbWF4Um91bmRQcm9wb3NpdGlvbldhaXRpbmdQZXJpb2QsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpLGFwaS5lbWl0KCJhd2FpdGluZ1JvdW5kRW5kIix7fSkpKX07YWN0aW9ucy5wcm9wb3NlUm91bmQ9YXN5bmMgcGF5bG9hZD0+e2NvbnN0e3JvdW5kSGFzaDpyb3VuZEhhc2gsaXNTaWduZWRXaXRoQWN0aXZlS2V5OmlzU2lnbmVkV2l0aEFjdGl2ZUtleSxzaWduYXR1cmVzOnNpZ25hdHVyZXN9PXBheWxvYWQscGFyYW1zPWF3YWl0IGFwaS5kYi5maW5kT25lKCJwYXJhbXMiLHt9KSx7bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI6bGFzdFZlcmlmaWVkQmxvY2tOdW1iZXIscm91bmQ6cm91bmQsbGFzdEJsb2NrUm91bmQ6bGFzdEJsb2NrUm91bmQsY3VycmVudFdpdG5lc3M6Y3VycmVudFdpdG5lc3N9PXBhcmFtcyxzY2hlZHVsZXM9YXdhaXQgYXBpLmRiLmZpbmQoInNjaGVkdWxlcyIse3JvdW5kOnJvdW5kfSwxZTMsMCxbe2luZGV4OiJfaWQiLGRlc2NlbmRpbmc6ITF9XSksbnVtYmVyT2ZXaXRuZXNzU2xvdHM9c2NoZWR1bGVzLmxlbmd0aCx7d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZDp3aXRuZXNzU2lnbmF0dXJlc1JlcXVpcmVkfT1wYXJhbXM7aWYoITA9PT1pc1NpZ25lZFdpdGhBY3RpdmVLZXkmJnJvdW5kSGFzaCYmInN0cmluZyI9PXR5cGVvZiByb3VuZEhhc2gmJjY0PT09cm91bmRIYXNoLmxlbmd0aCYmQXJyYXkuaXNBcnJheShzaWduYXR1cmVzKSYmc2lnbmF0dXJlcy5sZW5ndGg8PW51bWJlck9mV2l0bmVzc1Nsb3RzJiZzaWduYXR1cmVzLmxlbmd0aD49d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCl7bGV0IGN1cnJlbnRCbG9jaz1sYXN0VmVyaWZpZWRCbG9ja051bWJlcisxLGNhbGN1bGF0ZWRSb3VuZEhhc2g9IiI7aWYoYXBpLnNlbmRlcj09PWN1cnJlbnRXaXRuZXNzKXtmb3IoO2N1cnJlbnRCbG9jazw9bGFzdEJsb2NrUm91bmQ7KXtjb25zdCBibG9jaz1hd2FpdCBhcGkuZGIuZ2V0QmxvY2tJbmZvKGN1cnJlbnRCbG9jayk7aWYobnVsbD09PWJsb2NrKXtjYWxjdWxhdGVkUm91bmRIYXNoPSIiO2JyZWFrfWNhbGN1bGF0ZWRSb3VuZEhhc2g9YXBpLlNIQTI1NihgJHtjYWxjdWxhdGVkUm91bmRIYXNofSR7YmxvY2suaGFzaH1gKSxjdXJyZW50QmxvY2srPTF9aWYoIiIhPT1jYWxjdWxhdGVkUm91bmRIYXNoJiZjYWxjdWxhdGVkUm91bmRIYXNoPT09cm91bmRIYXNoKXtsZXQgc2lnbmF0dXJlc0NoZWNrZWQ9MDtjb25zdCB2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb249W10sY3VycmVudFdpdG5lc3NJbmZvPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OmN1cnJlbnRXaXRuZXNzfSksY3VycmVudFdpdG5lc3NTaWduYXR1cmU9c2lnbmF0dXJlcy5maW5kKHM9PnNbMF09PT1jdXJyZW50V2l0bmVzcyk7Zm9yKGxldCBpbmRleD0wO2luZGV4PHNjaGVkdWxlcy5sZW5ndGg7aW5kZXgrPTEpe2NvbnN0IHNjaGVkdWxlZFdpdG5lc3M9c2NoZWR1bGVzW2luZGV4XSx3aXRuZXNzPWF3YWl0IGFwaS5kYi5maW5kT25lKCJ3aXRuZXNzZXMiLHthY2NvdW50OnNjaGVkdWxlZFdpdG5lc3Mud2l0bmVzc30pO2lmKG51bGwhPT13aXRuZXNzKXtjb25zdCBzaWduYXR1cmU9c2lnbmF0dXJlcy5maW5kKHM9PnNbMF09PT13aXRuZXNzLmFjY291bnQpO3NpZ25hdHVyZSYmYXBpLmNoZWNrU2lnbmF0dXJlKGNhbGN1bGF0ZWRSb3VuZEhhc2gsc2lnbmF0dXJlWzFdLHdpdG5lc3Muc2lnbmluZ0tleSwhMCkmJihhcGkuZGVidWcoYHdpdG5lc3MgJHt3aXRuZXNzLmFjY291bnR9IHNpZ25lZCByb3VuZCAke3JvdW5kfWApLHNpZ25hdHVyZXNDaGVja2VkKz0xKSx2ZXJpZmllZEJsb2NrSW5mb3JtYXRpb24ucHVzaCh7YmxvY2tOdW1iZXI6c2NoZWR1bGVkV2l0bmVzcy5ibG9ja051bWJlcix3aXRuZXNzOmN1cnJlbnRXaXRuZXNzLHNpZ25pbmdLZXk6Y3VycmVudFdpdG5lc3NJbmZvLnNpZ25pbmdLZXkscm91bmRTaWduYXR1cmU6Y3VycmVudFdpdG5lc3NTaWduYXR1cmVbMV0scm91bmQ6cm91bmQscm91bmRIYXNoOnJvdW5kSGFzaH0pfX1pZihzaWduYXR1cmVzQ2hlY2tlZD49d2l0bmVzc1NpZ25hdHVyZXNSZXF1aXJlZCl7Zm9yKGxldCBpbmRleD0wO2luZGV4PHZlcmlmaWVkQmxvY2tJbmZvcm1hdGlvbi5sZW5ndGg7aW5kZXgrPTEpYXdhaXQgYXBpLnZlcmlmeUJsb2NrKHZlcmlmaWVkQmxvY2tJbmZvcm1hdGlvbltpbmRleF0pO2NvbnN0IGNvbnRyYWN0QmFsYW5jZT1hd2FpdCBhcGkuZGIuZmluZE9uZUluVGFibGUoInRva2VucyIsImNvbnRyYWN0c0JhbGFuY2VzIix7YWNjb3VudDoid2l0bmVzc2VzIixzeW1ib2w6IkJFRSJ9KTtsZXQgcmV3YXJkV2l0bmVzc2VzPSExO2NvbnRyYWN0QmFsYW5jZSYmYXBpLkJpZ051bWJlcihjb250cmFjdEJhbGFuY2UuYmFsYW5jZSkuZ3RlKCIwLjA0NzU2NDY1IikmJihyZXdhcmRXaXRuZXNzZXM9ITApO2ZvcihsZXQgaW5kZXg9MDtpbmRleDxzY2hlZHVsZXMubGVuZ3RoO2luZGV4Kz0xKXtjb25zdCBzY2hlZHVsZT1zY2hlZHVsZXNbaW5kZXhdOyEwPT09cmV3YXJkV2l0bmVzc2VzJiZhd2FpdCBhcGkudHJhbnNmZXJUb2tlbnMoc2NoZWR1bGUud2l0bmVzcywiQkVFIiwiMC4wMDk1MTI5MyIsInVzZXIiKSxhd2FpdCBhcGkuZGIucmVtb3ZlKCJzY2hlZHVsZXMiLHNjaGVkdWxlKX1wYXJhbXMuY3VycmVudFdpdG5lc3M9bnVsbCxwYXJhbXMubGFzdFZlcmlmaWVkQmxvY2tOdW1iZXI9bGFzdEJsb2NrUm91bmQsYXdhaXQgYXBpLmRiLnVwZGF0ZSgicGFyYW1zIixwYXJhbXMpO2NvbnN0IHdpdG5lc3M9YXdhaXQgYXBpLmRiLmZpbmRPbmUoIndpdG5lc3NlcyIse2FjY291bnQ6Y3VycmVudFdpdG5lc3N9KTt3aXRuZXNzLm1pc3NlZFJvdW5kc0luQVJvdz0wLHdpdG5lc3MubGFzdFJvdW5kVmVyaWZpZWQ9cm91bmQsd2l0bmVzcy5sYXN0QmxvY2tWZXJpZmllZD1sYXN0QmxvY2tSb3VuZCx3aXRuZXNzLnZlcmlmaWVkUm91bmRzKz0xLGF3YWl0IGFwaS5kYi51cGRhdGUoIndpdG5lc3NlcyIsd2l0bmVzcyksYXdhaXQgbWFuYWdlV2l0bmVzc2VzU2NoZWR1bGUoKX19fX19LGFjdGlvbnMuc2NoZWR1bGVXaXRuZXNzZXM9YXN5bmMoKT0+eyJudWxsIj09PWFwaS5zZW5kZXImJmF3YWl0IG1hbmFnZVdpdG5lc3Nlc1NjaGVkdWxlKCl9Ow=="}}}

0
0
0.000