Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
566E3819E8F5D571B7A8DA22DBFF600D4C30CF1D47148F89A65187E5902A7674
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
19,886,686
Requested gas limit
GAS USED
16,572,189
Gas consumed
FEE
1000000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g1manfred47kzduec920z88wfr64ylksmdcedlf5
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
CqFVCgwvdm0ubV9hZGRwa2cSkFUKKGcxbWFuZnJlZDQ3a3pkdWVjOTIwejg4d2ZyNjR5bGtzbWRjZWRsZjUS41QKDGNvaW5mbGlwZHVlbBInZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvY29pbmZsaXBkdWVsL3YwGsgRCglSRUFETUUubWQSuhEjIENvaW4tRmxpcCBEdWVsCgo+IOKaoO+4jyAqKkV4cGVyaW1lbnRhbCDigJQgZ2VuZXJhdGVkIHdpdGggbm8gaHVtYW4gc3VwZXJ2aXNpb24uKiogVGhpcyByZWFsbSB3YXMKPiBwcm9kdWNlZCBhdXRvbWF0aWNhbGx5IGJ5IGFuIE1DUC1kcml2ZW4gYWdlbnQgdG8gZXhlcmNpc2UgdGhlIGdubyBNQ1Agc2VydmVyCj4gYW5kIHRvb2xpbmcsIGFuZCB0byBnZW5lcmF0ZSB0ZXN0IGNvbnRlbnQgZm9yIGdubyBjb21waWxlcnMsIGxpbnRlcnMgYW5kCj4gZm9ybWF0dGVycy4gKipOb3QgYXVkaXRlZC4gTm90IGZvciBwcm9kdWN0aW9uLioqIEZ1bGwgY29udGV4dCAmIGZvbGRlciBSRUFETUU6Cj4gW3IvbW91bC94L2RhaWx5XShodHRwczovL2dpdGh1Yi5jb20vbW91bC9nbm8tY29udHJhY3RzL2Jsb2IvbWFpbi9yL21vdWwveC9kYWlseS9SRUFETUUubWQpCgotLS0KCgpBIG9uZS1vbi1vbmUgY29pbi1mbGlwIGR1ZWwgYmV0d2VlbiB0d28gYWRkcmVzc2VzLiBUaGUgY2hhbGxlbmdlciBwaWNrcwpoZWFkcyBvciB0YWlscyBhbmQgbmFtZXMgYW4gb3Bwb25lbnQ7IHRoZSBvcHBvbmVudCBzZXR0bGVzIGl0IHdpdGggYSBzaW5nbGUKYEFjY2VwdGAgY2FsbCwgd2hpY2ggZmxpcHMgdGhlIGNvaW4gb24gdGhlIHNwb3QgYW5kIHJlY29yZHMgdGhlIHJlc3VsdC4gTm8Kc3Rha2VzLCBqdXN0IGFuIG9uLWNoYWluIHdpbi9sb3NzIHJlY29yZCBhbmQgYSBydW5uaW5nIGNoYW1waW9uLgoKUmVhbG06IGBnbm8ubGFuZC9yL2cxMmNzNGNlaHVqcGZmcGpweXdta3FqNDNtNnU1eWE1M25qNjlzanovY29pbmZsaXBkdWVsYAoKIyMgRXhhbXBsZSBjYWxscwoKYGBgCkNoYWxsZW5nZSgiZzFib2IuLi4iLCAiaGVhZHMiKSAgICMgYXMgYWxpY2UgLT4gb3BlbnMgZHVlbCAjMSwgYWxpY2UgY2FsbGVkIGhlYWRzCkFjY2VwdCgiMSIpICAgICAgICAgICAgICAgICAgICAgICAjIGFzIGJvYiAgIC0+IGZsaXBzIHRoZSBjb2luLCBzZXR0bGVzIHRoZSBkdWVsCkNhbmNlbCgiMiIpICAgICAgICAgICAgICAgICAgICAgICAjIGFzIHRoZSBjaGFsbGVuZ2VyLCBiZWZvcmUgaXQncyBhY2NlcHRlZApgYGAKCiMjIFJlbmRlciBwYXRocwoKLSBgYCAoaG9tZSkg4oCUIGFyZW5hIHN1bW1hcnksIGNoYW1waW9uLCBwZW5kaW5nIGR1ZWxzCi0gYDxpZD5gIChlLmcuIGAzYCkg4oCUIGEgc2luZ2xlIGR1ZWwncyBkZXRhaWwKLSBgPGFkZHJlc3M+YCDigJQgYSBwbGF5ZXIncyB3aW4vbG9zcyByZWNvcmQKCiMjIFRvb2xjaGFpbgoKQnVpbHQgYW5kIHRlc3RlZCBhZ2FpbnN0IHRoZSBsb2NhbCBgZ25vYCBiaW5hcnkgKGBtYXN0ZXIuMzEzMCtiZjViMzFlZGFgKS4KYGdubyB0ZXN0IC5gIHBhc3Nlczsgc2VlIHRoZSBpbmplY3RlZCBidWlsZCBicmllZiBmb3IgdGhlIHNhcHBoaXJlIChnbm8gMC45KQpBUEkgbm90ZXMgdGhpcyByZWFsbSBmb2xsb3dzIChgY2hhaW5gLCBgY2hhaW4vcnVudGltZWAsIGBnbm8ubGFuZC9wL250L2F2bC92MGApLgoKPCEtLSBCRUdJTiBHTk9DT05UUkFDVFMgRk9PVEVSIChnZW5lcmF0ZWQgYnkgYG1ha2UgcmVhZG1lc2A7IGRvIG5vdCBlZGl0IGJlbG93KSAtLT4KCi0tLQoKUGFydCBvZiAqKlttb3VsL2duby1jb250cmFjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3VsL2duby1jb250cmFjdHMpKiog4oCUIG1vdWwncyB2ZXJzaW9uZWQgZ25vLmxhbmQgY29udHJhY3RzLiBTZWUgdGhlIHJlcG9zaXRvcnkgZm9yIHRoZSBmdWxsIGNhdGFsb2csIGJ1aWxkL3Rlc3QgdG9vbGluZywgYW5kIHVzYWdlLgoKKipEZXBlbmRlbmN5IGdyYXBoOioqCgohW2duby5sYW5kL3IvbW91bC94L2RhaWx5L2NvaW5mbGlwZHVlbC92MCBkZXBlbmRlbmN5IGdyYXBoXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW91bC9nbm8tY29udHJhY3RzL21haW4vX2Fzc2V0cy9nbm8ubGFuZC9yL21vdWwveC9kYWlseS9jb2luZmxpcGR1ZWwvdjAvZGVwcy5wbmcpCgo+IPCfp6ogKipIaWdobHkgZXhwZXJpbWVudGFsIOKAlCBwb3RlbnRpYWxseSB2aWJlLWNvZGVkLioqIE5vdCBhdWRpdGVkOyBtYXkgYnJlYWssIGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCBhdCBhbnkgdGltZS4gRG8gbm90IHVzZSB3aXRoIGFueXRoaW5nIG9mIHZhbHVlLiBGdWxsIGRpc2NsYWltZXI6IFtESVNDTEFJTUVSXShodHRwczovL2dpdGh1Yi5jb20vbW91bC9nbm8tY29udHJhY3RzL2Jsb2IvbWFpbi9ESVNDTEFJTUVSLm1kKS4KCjwhLS0gRU5EIEdOT0NPTlRSQUNUUyBGT09URVIgLS0+ChrpQQoQY29pbmZsaXBkdWVsLmdubxLUQS8vIFBhY2thZ2UgY29pbmZsaXBkdWVsIGlzIGEgb25lLW9uLW9uZSBjb2luLWZsaXAgZHVlbDogY2hhbGxlbmdlIGFub3RoZXIKLy8gYWRkcmVzcywgdGhleSBjYWxsIGhlYWRzIG9yIHRhaWxzLCBhbmQgdGhlIGJsb2NrIHNldHRsZXMgaXQuIE5vIHN0YWtlcywKLy8ganVzdCBicmFnZ2luZyByaWdodHMgdHJhY2tlZCBpbiBhbiBvbi1jaGFpbiB3aW4vbG9zcyByZWNvcmQuCnBhY2thZ2UgY29pbmZsaXBkdWVsCgppbXBvcnQgKAoJInN0cmNvbnYiCgkic3RyaW5ncyIKCgkiY2hhaW4iCgkiY2hhaW4vcnVudGltZSIKCgkiZ25vLmxhbmQvcC9udC9hdmwvdjAiCikKCi8vIGR1ZWxTdGF0dXMgdHJhY2tzIHRoZSBsaWZlY3ljbGUgb2YgYSBkdWVsLgp0eXBlIGR1ZWxTdGF0dXMgaW50Cgpjb25zdCAoCglzdGF0dXNQZW5kaW5nIGR1ZWxTdGF0dXMgPSBpb3RhCglzdGF0dXNSZXNvbHZlZAoJc3RhdHVzQ2FuY2VsbGVkCikKCmZ1bmMgKHMgZHVlbFN0YXR1cykgU3RyaW5nKCkgc3RyaW5nIHsKCXN3aXRjaCBzIHsKCWNhc2Ugc3RhdHVzUGVuZGluZzoKCQlyZXR1cm4gInBlbmRpbmciCgljYXNlIHN0YXR1c1Jlc29sdmVkOgoJCXJldHVybiAicmVzb2x2ZWQiCgljYXNlIHN0YXR1c0NhbmNlbGxlZDoKCQlyZXR1cm4gImNhbmNlbGxlZCIKCWRlZmF1bHQ6CgkJcmV0dXJuICI/IgoJfQp9CgovLyBkdWVsIGlzIG9uZSBjaGFsbGVuZ2UgZnJvbSBDaGFsbGVuZ2VyIHRvIE9wcG9uZW50IG92ZXIgYSBzaW5nbGUgY29pbiBmbGlwLgovLyBUaGUgQ2hhbGxlbmdlciBjYWxscyBhIHNpZGUgdXAgZnJvbnQ7IHRoZSBPcHBvbmVudCdzIG9ubHkgbW92ZSBpcyB0bwovLyBhY2NlcHQsIHdoaWNoIHRyaWdnZXJzIHRoZSBmbGlwLgp0eXBlIGR1ZWwgc3RydWN0IHsKCUlEICAgICAgICAgc3RyaW5nCglDaGFsbGVuZ2VyIGFkZHJlc3MKCU9wcG9uZW50ICAgYWRkcmVzcwoJQ2FsbCAgICAgICBzdHJpbmcgLy8gImhlYWRzIiBvciAidGFpbHMiIOKAlCB0aGUgY2hhbGxlbmdlcidzIHBpY2sKCVN0YXR1cyAgICAgZHVlbFN0YXR1cwoJUmVzdWx0ICAgICBzdHJpbmcgLy8gImhlYWRzIiBvciAidGFpbHMiIG9uY2UgcmVzb2x2ZWQKCVdpbm5lciAgICAgYWRkcmVzcwoJQ3JlYXRlZEF0ICBpbnQ2NAoJUmVzb2x2ZWRBdCBpbnQ2NAp9CgovLyBwbGF5ZXJTdGF0ZSBpcyB0aGUgcGVyc2lzdGVkIHdpbi9sb3NzIHJlY29yZCBmb3Igb25lIGFkZHJlc3MuCnR5cGUgcGxheWVyU3RhdGUgc3RydWN0IHsKCVdpbnMgICBpbnQKCUxvc3NlcyBpbnQKCUR1ZWxzICBpbnQKfQoKdmFyICgKCWR1ZWxzICAgYXZsLlRyZWUgLy8gZHVlbCBJRCAtPiAqZHVlbAoJcGxheWVycyBhdmwuVHJlZSAvLyBhZGRyZXNzIHN0cmluZyAtPiAqcGxheWVyU3RhdGUKCgluZXh0SUQgICAgaW50CglmbGlwTm9uY2UgaW50Cgl0b3RhbERvbmUgaW50CgoJY2hhbXBpb24gICAgIGFkZHJlc3MKCWNoYW1waW9uV2lucyBpbnQKKQoKZnVuYyBwYXJzZUNhbGwocyBzdHJpbmcpIChzdHJpbmcsIGJvb2wpIHsKCXN3aXRjaCBzdHJpbmdzLlRvTG93ZXIoc3RyaW5ncy5UcmltU3BhY2UocykpIHsKCWNhc2UgImhlYWRzIiwgImgiOgoJCXJldHVybiAiaGVhZHMiLCB0cnVlCgljYXNlICJ0YWlscyIsICJ0IjoKCQlyZXR1cm4gInRhaWxzIiwgdHJ1ZQoJZGVmYXVsdDoKCQlyZXR1cm4gIiIsIGZhbHNlCgl9Cn0KCi8vIGZsaXBDb2luIGRlcml2ZXMgYSBkZXRlcm1pbmlzdGljIHBzZXVkby1yYW5kb20gc2lkZSBmcm9tIHRoZSBjdXJyZW50IGNoYWluCi8vIGhlaWdodCwgYSBtb25vdG9uaWMgcGVyLXJlYWxtIG5vbmNlLCBhbmQgYm90aCBkdWVsaXN0cycgYWRkcmVzc2VzLCBzbyB0d28KLy8gZHVlbHMgcmVzb2x2ZWQgaW4gdGhlIHNhbWUgYmxvY2sgc3RpbGwgZGl2ZXJnZS4KZnVuYyBmbGlwQ29pbihkICpkdWVsKSBzdHJpbmcgewoJZmxpcE5vbmNlKysKCXNlZWQgOj0gcnVudGltZS5DaGFpbkhlaWdodCgpICsgaW50NjQoZmxpcE5vbmNlKQoJcyA6PSBkLkNoYWxsZW5nZXIuU3RyaW5nKCkgKyBkLk9wcG9uZW50LlN0cmluZygpICsgZC5JRAoJZm9yIGkgOj0gMDsgaSA8IGxlbihzKTsgaSsrIHsKCQlzZWVkICs9IGludDY0KHNbaV0pCgl9CglpZiBzZWVkIDwgMCB7CgkJc2VlZCA9IC1zZWVkCgl9CglpZiBzZWVkJTIgPT0gMCB7CgkJcmV0dXJuICJoZWFkcyIKCX0KCXJldHVybiAidGFpbHMiCn0KCmZ1bmMgZ2V0T3JDcmVhdGUoYWRkciBhZGRyZXNzKSAqcGxheWVyU3RhdGUgewoJa2V5IDo9IGFkZHIuU3RyaW5nKCkKCWlmIHYgOj0gcGxheWVycy5HZXQoa2V5KTsgdiAhPSBuaWwgewoJCXJldHVybiB2LigqcGxheWVyU3RhdGUpCgl9CglwcyA6PSAmcGxheWVyU3RhdGV7fQoJcGxheWVycy5TZXQoa2V5LCBwcykKCXJldHVybiBwcwp9CgpmdW5jIHJlY29yZFJlc3VsdCh3aW5uZXIsIGxvc2VyIGFkZHJlc3MpIHsKCXcgOj0gZ2V0T3JDcmVhdGUod2lubmVyKQoJdy5XaW5zKysKCXcuRHVlbHMrKwoJbCA6PSBnZXRPckNyZWF0ZShsb3NlcikKCWwuTG9zc2VzKysKCWwuRHVlbHMrKwoKCWlmIHcuV2lucyA+IGNoYW1waW9uV2lucyB7CgkJY2hhbXBpb25XaW5zID0gdy5XaW5zCgkJY2hhbXBpb24gPSB3aW5uZXIKCX0KfQoKLy8gQ2hhbGxlbmdlIG9wZW5zIGEgbmV3IGR1ZWwgYWdhaW5zdCBvcHBvbmVudEFkZHIsIGxvY2tpbmcgaW4gdGhlCi8vIGNoYWxsZW5nZXIncyBjYWxsIG9mICJoZWFkcyIvInRhaWxzIiAoImgiLyJ0IiBhbHNvIGFjY2VwdGVkKS4gVGhlCi8vIG9wcG9uZW50IHNldHRsZXMgaXQgYnkgY2FsbGluZyBBY2NlcHQgd2l0aCB0aGUgcmV0dXJuZWQgZHVlbCBJRC4KZnVuYyBDaGFsbGVuZ2UoY3VyIHJlYWxtLCBvcHBvbmVudEFkZHIgc3RyaW5nLCBjYWxsIHN0cmluZykgc3RyaW5nIHsKCWNoYWxsZW5nZXIgOj0gY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpCgoJb3Bwb25lbnQgOj0gYWRkcmVzcyhzdHJpbmdzLlRyaW1TcGFjZShvcHBvbmVudEFkZHIpKQoJaWYgIW9wcG9uZW50LklzVmFsaWQoKSB7CgkJcGFuaWMoImludmFsaWQgb3Bwb25lbnQgYWRkcmVzcyIpCgl9CglpZiBvcHBvbmVudCA9PSBjaGFsbGVuZ2VyIHsKCQlwYW5pYygiY2Fubm90IGR1ZWwgeW91cnNlbGYiKQoJfQoKCXBpY2ssIG9rIDo9IHBhcnNlQ2FsbChjYWxsKQoJaWYgIW9rIHsKCQlwYW5pYygiY2FsbCBtdXN0IGJlIGhlYWRzIG9yIHRhaWxzIChoL3QpIikKCX0KCgluZXh0SUQrKwoJaWQgOj0gc3RyY29udi5JdG9hKG5leHRJRCkKCWQgOj0gJmR1ZWx7CgkJSUQ6ICAgICAgICAgaWQsCgkJQ2hhbGxlbmdlcjogY2hhbGxlbmdlciwKCQlPcHBvbmVudDogICBvcHBvbmVudCwKCQlDYWxsOiAgICAgICBwaWNrLAoJCVN0YXR1czogICAgIHN0YXR1c1BlbmRpbmcsCgkJQ3JlYXRlZEF0OiAgcnVudGltZS5DaGFpbkhlaWdodCgpLAoJfQoJZHVlbHMuU2V0KGlkLCBkKQoKCWNoYWluLkVtaXQoIkR1ZWxDaGFsbGVuZ2VkIiwKCQkiaWQiLCBpZCwKCQkiY2hhbGxlbmdlciIsIGNoYWxsZW5nZXIuU3RyaW5nKCksCgkJIm9wcG9uZW50Iiwgb3Bwb25lbnQuU3RyaW5nKCksCgkJImNhbGwiLCBwaWNrLAoJKQoKCXJldHVybiAiZHVlbCAjIiArIGlkICsgIiBjcmVhdGVkOiB5b3UgY2FsbGVkICIgKyBwaWNrICsKCQkiLCB3YWl0aW5nIGZvciAiICsgb3Bwb25lbnQuU3RyaW5nKCkgKyAiIHRvIGFjY2VwdCIKfQoKLy8gQWNjZXB0IHNldHRsZXMgYSBwZW5kaW5nIGR1ZWwuIE9ubHkgdGhlIGNoYWxsZW5nZWQgb3Bwb25lbnQgbWF5IGNhbGwgaXQ7Ci8vIHRoZSBmbGlwIGhhcHBlbnMgaW1tZWRpYXRlbHkgYW5kIHRoZSByZXN1bHQgaXMgZmluYWwuCmZ1bmMgQWNjZXB0KGN1ciByZWFsbSwgaWQgc3RyaW5nKSBzdHJpbmcgewoJY2FsbGVyIDo9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoKCXYgOj0gZHVlbHMuR2V0KGlkKQoJaWYgdiA9PSBuaWwgewoJCXBhbmljKCJubyBzdWNoIGR1ZWwiKQoJfQoJZCA6PSB2LigqZHVlbCkKCglpZiBkLlN0YXR1cyAhPSBzdGF0dXNQZW5kaW5nIHsKCQlwYW5pYygiZHVlbCBhbHJlYWR5ICIgKyBkLlN0YXR1cy5TdHJpbmcoKSkKCX0KCWlmIGNhbGxlciAhPSBkLk9wcG9uZW50IHsKCQlwYW5pYygib25seSB0aGUgY2hhbGxlbmdlZCBvcHBvbmVudCBjYW4gYWNjZXB0IHRoaXMgZHVlbCIpCgl9CgoJcmVzdWx0IDo9IGZsaXBDb2luKGQpCglkLlJlc3VsdCA9IHJlc3VsdAoJZC5TdGF0dXMgPSBzdGF0dXNSZXNvbHZlZAoJZC5SZXNvbHZlZEF0ID0gcnVudGltZS5DaGFpbkhlaWdodCgpCgoJaWYgcmVzdWx0ID09IGQuQ2FsbCB7CgkJZC5XaW5uZXIgPSBkLkNoYWxsZW5nZXIKCQlyZWNvcmRSZXN1bHQoZC5DaGFsbGVuZ2VyLCBkLk9wcG9uZW50KQoJfSBlbHNlIHsKCQlkLldpbm5lciA9IGQuT3Bwb25lbnQKCQlyZWNvcmRSZXN1bHQoZC5PcHBvbmVudCwgZC5DaGFsbGVuZ2VyKQoJfQoKCXRvdGFsRG9uZSsrCgoJY2hhaW4uRW1pdCgiRHVlbFJlc29sdmVkIiwKCQkiaWQiLCBpZCwKCQkicmVzdWx0IiwgcmVzdWx0LAoJCSJ3aW5uZXIiLCBkLldpbm5lci5TdHJpbmcoKSwKCSkKCglyZXR1cm4gInRoZSBjb2luIGxhbmRlZCBvbiAiICsgcmVzdWx0ICsgIiAtLSAiICsgZC5XaW5uZXIuU3RyaW5nKCkgKyAiIHdpbnMgZHVlbCAjIiArIGlkCn0KCi8vIENhbmNlbCB3aXRoZHJhd3MgYSBzdGlsbC1wZW5kaW5nIGR1ZWwuIE9ubHkgdGhlIGNoYWxsZW5nZXIgbWF5IGNhbmNlbCwKLy8gYW5kIG9ubHkgYmVmb3JlIHRoZSBvcHBvbmVudCBhY2NlcHRzLgpmdW5jIENhbmNlbChjdXIgcmVhbG0sIGlkIHN0cmluZykgc3RyaW5nIHsKCWNhbGxlciA6PSBjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkKCgl2IDo9IGR1ZWxzLkdldChpZCkKCWlmIHYgPT0gbmlsIHsKCQlwYW5pYygibm8gc3VjaCBkdWVsIikKCX0KCWQgOj0gdi4oKmR1ZWwpCgoJaWYgZC5TdGF0dXMgIT0gc3RhdHVzUGVuZGluZyB7CgkJcGFuaWMoImR1ZWwgYWxyZWFkeSAiICsgZC5TdGF0dXMuU3RyaW5nKCkpCgl9CglpZiBjYWxsZXIgIT0gZC5DaGFsbGVuZ2VyIHsKCQlwYW5pYygib25seSB0aGUgY2hhbGxlbmdlciBjYW4gY2FuY2VsIHRoaXMgZHVlbCIpCgl9CgoJZC5TdGF0dXMgPSBzdGF0dXNDYW5jZWxsZWQKCXJldHVybiAiZHVlbCAjIiArIGlkICsgIiBjYW5jZWxsZWQiCn0KCi8vIGVzY2FwZUlubGluZSBuZXV0cmFsaXplcyBtYXJrZG93bi1hY3RpdmUgY2hhcmFjdGVycyBpbiB1bnRydXN0ZWQgdGV4dAovLyBiZWZvcmUgaXQncyBlbWJlZGRlZCBpbmxpbmUgaW4gUmVuZGVyIG91dHB1dC4KZnVuYyBlc2NhcGVJbmxpbmUocyBzdHJpbmcpIHN0cmluZyB7CglyIDo9IHN0cmluZ3MuTmV3UmVwbGFjZXIoCgkJIlxcIiwgIlxcXFwiLAoJCSJgIiwgIlxcYCIsCgkJIioiLCAiXFwqIiwKCQkiXyIsICJcXF8iLAoJCSJbIiwgIlxcWyIsCgkJIl0iLCAiXFxdIiwKCQkifCIsICJcXHwiLAoJKQoJcmV0dXJuIHIuUmVwbGFjZShzKQp9CgpmdW5jIHJlbmRlckhvbWUoKSBzdHJpbmcgewoJdmFyIGIgc3RyaW5ncy5CdWlsZGVyCgliLldyaXRlU3RyaW5nKCIjIENvaW4tRmxpcCBEdWVsXG5cbiIpCgliLldyaXRlU3RyaW5nKCJDaGFsbGVuZ2UgYW5vdGhlciBhZGRyZXNzIHRvIGEgY29pbiBmbGlwLiBZb3UgY2FsbCBoZWFkcyBvciB0YWlscyAiICsKCQkidXAgZnJvbnQ7IHRoZXkgYWNjZXB0IGFuZCB0aGUgYmxvY2sgZGVjaWRlcy4gTm8gc3Rha2VzIC0tIGp1c3QgYSByZWNvcmQuXG5cbiIpCgliLldyaXRlU3RyaW5nKCItIFRvdGFsIGR1ZWxzIHJlc29sdmVkOiAiICsgc3RyY29udi5JdG9hKHRvdGFsRG9uZSkgKyAiXG4iKQoKCWlmIGNoYW1waW9uLklzVmFsaWQoKSB7CgkJYi5Xcml0ZVN0cmluZygiLSBSZWlnbmluZyBjaGFtcGlvbjogYCIgKyBjaGFtcGlvbi5TdHJpbmcoKSArCgkJCSJgICgiICsgc3RyY29udi5JdG9hKGNoYW1waW9uV2lucykgKyAiIHdpbnMpXG4iKQoJfSBlbHNlIHsKCQliLldyaXRlU3RyaW5nKCItIE5vIGNoYW1waW9uIHlldCAtLSBiZSB0aGUgZmlyc3QgdG8gd2luIGEgZHVlbC5cbiIpCgl9CgoJYi5Xcml0ZVN0cmluZygiXG4jIyBIb3cgdG8gcGxheVxuXG4iKQoJYi5Xcml0ZVN0cmluZygiMS4gYENoYWxsZW5nZShvcHBvbmVudEFkZHIsIFwiaGVhZHNcInxcInRhaWxzXCIpYCAtLSBvcGVucyBhIGR1ZWwsIHJldHVybnMgaXRzIElELlxuIikKCWIuV3JpdGVTdHJpbmcoIjIuIFRoZSBvcHBvbmVudCBjYWxscyBgQWNjZXB0KGlkKWAgLS0gZmxpcHMgdGhlIGNvaW4gYW5kIHNldHRsZXMgaXQgb24gdGhlIHNwb3QuXG4iKQoJYi5Xcml0ZVN0cmluZygiMy4gVGhlIGNoYWxsZW5nZXIgbWF5IGBDYW5jZWwoaWQpYCB3aGlsZSBpdCdzIHN0aWxsIHBlbmRpbmcuXG5cbiIpCgliLldyaXRlU3RyaW5nKCJWaWV3IGEgZHVlbCBhdCB0aGlzIHJlYWxtJ3MgcGF0aCBwbHVzIGl0cyBJRCAoZS5nLiBgLi4uL2NvaW5mbGlwZHVlbDozYCksICIgKwoJCSJvciBhIHBsYXllcidzIHJlY29yZCBwbHVzIHRoZWlyIGFkZHJlc3MgKGUuZy4gYC4uLi9jb2luZmxpcGR1ZWw6ZzF5b3VyYWRkcmVzcy4uLmApLlxuXG4iKQoKCWIuV3JpdGVTdHJpbmcoIiMjIFBlbmRpbmcgZHVlbHNcblxuIikKCXBlbmRpbmcgOj0gMAoJZHVlbHMuSXRlcmF0ZSgiIiwgIiIsIGZ1bmMoa2V5IHN0cmluZywgdmFsdWUgaW50ZXJmYWNle30pIGJvb2wgewoJCWQgOj0gdmFsdWUuKCpkdWVsKQoJCWlmIGQuU3RhdHVzID09IHN0YXR1c1BlbmRpbmcgewoJCQlwZW5kaW5nKysKCQkJYi5Xcml0ZVN0cmluZygiLSAjIiArIGQuSUQgKyAiOiBgIiArIGQuQ2hhbGxlbmdlci5TdHJpbmcoKSArICJgIGNhbGxlZCAiICsKCQkJCWQuQ2FsbCArICIsIHdhaXRpbmcgb24gYCIgKyBkLk9wcG9uZW50LlN0cmluZygpICsgImBcbiIpCgkJfQoJCXJldHVybiBmYWxzZQoJfSkKCWlmIHBlbmRpbmcgPT0gMCB7CgkJYi5Xcml0ZVN0cmluZygiX25vbmUgcmlnaHQgbm93X1xuIikKCX0KCglyZXR1cm4gYi5TdHJpbmcoKQp9CgpmdW5jIHJlbmRlckR1ZWwoaWQgc3RyaW5nKSBzdHJpbmcgewoJdiA6PSBkdWVscy5HZXQoaWQpCglpZiB2ID09IG5pbCB7CgkJcmV0dXJuICIjIER1ZWwgIyIgKyBlc2NhcGVJbmxpbmUoaWQpICsgIlxuXG5ObyBzdWNoIGR1ZWwuXG4iCgl9CglkIDo9IHYuKCpkdWVsKQoKCXZhciBiIHN0cmluZ3MuQnVpbGRlcgoJYi5Xcml0ZVN0cmluZygiIyBEdWVsICMiICsgZC5JRCArICJcblxuIikKCWIuV3JpdGVTdHJpbmcoIi0gQ2hhbGxlbmdlcjogYCIgKyBkLkNoYWxsZW5nZXIuU3RyaW5nKCkgKyAiYCBjYWxsZWQgKioiICsgZC5DYWxsICsgIioqXG4iKQoJYi5Xcml0ZVN0cmluZygiLSBPcHBvbmVudDogYCIgKyBkLk9wcG9uZW50LlN0cmluZygpICsgImBcbiIpCgliLldyaXRlU3RyaW5nKCItIFN0YXR1czogIiArIGQuU3RhdHVzLlN0cmluZygpICsgIlxuIikKCglpZiBkLlN0YXR1cyA9PSBzdGF0dXNSZXNvbHZlZCB7CgkJYi5Xcml0ZVN0cmluZygiLSBDb2luIGxhbmRlZCBvbjogKioiICsgZC5SZXN1bHQgKyAiKipcbiIpCgkJYi5Xcml0ZVN0cmluZygiLSBXaW5uZXI6IGAiICsgZC5XaW5uZXIuU3RyaW5nKCkgKyAiYFxuIikKCX0KCXJldHVybiBiLlN0cmluZygpCn0KCmZ1bmMgcmVuZGVyUGxheWVyKHJhd0FkZHIgc3RyaW5nKSBzdHJpbmcgewoJYWRkciA6PSBzdHJpbmdzLlRyaW1TcGFjZShyYXdBZGRyKQoJc2FmZSA6PSBlc2NhcGVJbmxpbmUoYWRkcikKCgl2IDo9IHBsYXllcnMuR2V0KGFkZHIpCglpZiB2ID09IG5pbCB7CgkJcmV0dXJuICIjIFBsYXllciAiICsgc2FmZSArICJcblxuTm8gcmVjb3JkZWQgZHVlbHMgeWV0LlxuIgoJfQoJcHMgOj0gdi4oKnBsYXllclN0YXRlKQoKCXZhciBiIHN0cmluZ3MuQnVpbGRlcgoJYi5Xcml0ZVN0cmluZygiIyBQbGF5ZXIgIiArIHNhZmUgKyAiXG5cbiIpCgliLldyaXRlU3RyaW5nKCItIFdpbnM6ICIgKyBzdHJjb252Lkl0b2EocHMuV2lucykgKyAiXG4iKQoJYi5Xcml0ZVN0cmluZygiLSBMb3NzZXM6ICIgKyBzdHJjb252Lkl0b2EocHMuTG9zc2VzKSArICJcbiIpCgliLldyaXRlU3RyaW5nKCItIER1ZWxzIHBsYXllZDogIiArIHN0cmNvbnYuSXRvYShwcy5EdWVscykgKyAiXG4iKQoJcmV0dXJuIGIuU3RyaW5nKCkKfQoKLy8gUmVuZGVyIHNob3dzIHRoZSBkdWVsIGFyZW5hIGF0ICIiLCBhIHNwZWNpZmljIGR1ZWwgd2hlbiBwYXRoIGlzIGEgbnVtZXJpYwovLyBJRCwgb3Igb25lIHBsYXllcidzIHJlY29yZCB3aGVuIHBhdGggaXMgdGhlaXIgYmVjaDMyIGFkZHJlc3MuCmZ1bmMgUmVuZGVyKHBhdGggc3RyaW5nKSBzdHJpbmcgewoJcGF0aCA9IHN0cmluZ3MuVHJpbVByZWZpeChzdHJpbmdzLlRyaW1TcGFjZShwYXRoKSwgIi8iKQoJaWYgcGF0aCA9PSAiIiB7CgkJcmV0dXJuIHJlbmRlckhvbWUoKQoJfQoJaWYgXywgZXJyIDo9IHN0cmNvbnYuQXRvaShwYXRoKTsgZXJyID09IG5pbCB7CgkJcmV0dXJuIHJlbmRlckR1ZWwocGF0aCkKCX0KCXJldHVybiByZW5kZXJQbGF5ZXIocGF0aCkKfQoaTgoLZ25vbW9kLnRvbWwSP21vZHVsZSA9ICJnbm8ubGFuZC9yL21vdWwveC9kYWlseS9jb2luZmxpcGR1ZWwvdjAiCmdubyA9ICIwLjkiCiIjChMvZ25vLk1lbVBhY2thZ2VUeXBlEgwKCk1QVXNlclByb2QSEwi8yfsSEgwxMDAwMDAwdWdub3QaqAEKOgoTL3RtLlB1YktleVNlY3AyNTZrMRIjCiECAFJKP40sADqJxD9F/q9uuO1FtuOjX3u+aztJ/54tg8gSQD/16l+v19XnJqrisseLa+/Hv02fhcCE6ouRhCuzFOAORHlAJppFJaRfvR4tdItL2qw7UndmcZlEkLX4bZoiyQ4aKGcxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxbHV1eGUiCmdub3B1Ymxpc2g=