Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
358E58334816978BFED6951FECB3C11237B7A888CFCAF505B1665FC1851DA93B
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
18,304,458
Requested gas limit
GAS USED
15,253,665
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
Cv5UCgwvdm0ubV9hZGRwa2cS7VQKKGcxbWFuZnJlZDQ3a3pkdWVjOTIwejg4d2ZyNjR5bGtzbWRjZWRsZjUSwFQKCXJwc29yYWNsZRIkZ25vLmxhbmQvci9tb3VsL3gvZGFpbHkvcnBzb3JhY2xlL3YwGvsaCglSRUFETUUubWQS7RojIFJvY2stUGFwZXItU2Npc3NvcnMgT3JhY2xlCgo+IOKaoO+4jyAqKkV4cGVyaW1lbnRhbCDigJQgZ2VuZXJhdGVkIHdpdGggbm8gaHVtYW4gc3VwZXJ2aXNpb24uKiogVGhpcyByZWFsbSB3YXMKPiBwcm9kdWNlZCBhdXRvbWF0aWNhbGx5IGJ5IGFuIE1DUC1kcml2ZW4gYWdlbnQgdG8gZXhlcmNpc2UgdGhlIGdubyBNQ1Agc2VydmVyCj4gYW5kIHRvb2xpbmcsIGFuZCB0byBnZW5lcmF0ZSB0ZXN0IGNvbnRlbnQgZm9yIGdubyBjb21waWxlcnMsIGxpbnRlcnMgYW5kCj4gZm9ybWF0dGVycy4gKipOb3QgYXVkaXRlZC4gTm90IGZvciBwcm9kdWN0aW9uLioqIEZ1bGwgY29udGV4dCAmIGZvbGRlciBSRUFETUU6Cj4gW3IvbW91bC94L2RhaWx5XShodHRwczovL2dpdGh1Yi5jb20vbW91bC9nbm8tY29udHJhY3RzL2Jsb2IvbWFpbi9yL21vdWwveC9kYWlseS9SRUFETUUubWQpCgotLS0KCgpBIHJvY2stcGFwZXItc2Npc3NvcnMgb3Bwb25lbnQgdGhhdCBkb2Vzbid0IHJvbGwgZGljZSDigJQgaXQgc3R1ZGllcyB5b3UuIFRoZQpvcmFjbGUgdGFsbGllcyBldmVyeSBtb3ZlIHlvdSd2ZSBldmVyIHRocm93biBhbmQgYWx3YXlzIGNvdW50ZXJzIHdoaWNoZXZlcgpvbmUgeW91IGZhdm9yIG1vc3QsIHNvIGEgZml4ZWQgaGFiaXQgZ2V0cyBwdW5pc2hlZCB3aGlsZSBhIGdlbnVpbmVseSBtaXhlZAoocm91Z2hseSAxLzMtMS8zLTEvMykgc3RyYXRlZ3kgaXMgdW5iZWF0YWJsZSBpbiB0aGUgbG9uZyBydW4uIEl0J3MgYSBsaXZlLApwbGF5YWJsZSBkZW1vIG9mIHRoZSByb2NrLXBhcGVyLXNjaXNzb3JzIG1peGVkLXN0cmF0ZWd5IE5hc2ggZXF1aWxpYnJpdW06CmBSZW5kZXJgIHNob3dzIHlvdXIgd2luL2xvc3MvZHJhdyByZWNvcmQsIHlvdXIgbW92ZS1oaXN0b3J5IGJyZWFrZG93biwgYW5kIGEKInByZWRpY3RhYmlsaXR5IHNjb3JlIiAoeW91ciBtb3N0LXBsYXllZCBtb3ZlJ3Mgc2hhcmUgb2YgeW91ciByb3VuZHMg4oCUIGxvd2VyCm1lYW5zIHRoZSBvcmFjbGUgaGFzIGxlc3MgdG8gd29yayB3aXRoKS4KCioqUmVhbG0gcGF0aDoqKiBgZ25vLmxhbmQvci9nMTJjczRjZWh1anBmZnBqcHl3bWtxajQzbTZ1NXlhNTNuajY5c2p6L3Jwc29yYWNsZWAKCiMjIEV4YW1wbGUgY2FsbHMKCmBgYHNoCiMgUGxheSBvbmUgcm91bmQg4oCUIHRoZSBvcmFjbGUgcHJlZGljdHMgZnJvbSB5b3VyIG1vdmUgaGlzdG9yeSwgdGhlbiBjb3VudGVycwpnbm9rZXkgbWFrZXR4IGNhbGwgXAogIC1wa2dwYXRoICJnbm8ubGFuZC9yL2cxMmNzNGNlaHVqcGZmcGpweXdta3FqNDNtNnU1eWE1M25qNjlzanovcnBzb3JhY2xlIiBcCiAgLWZ1bmMgUGxheSAtYXJncyAicm9jayIgXAogIC1nYXMtZmVlIDEwMDAwMDB1Z25vdCAtZ2FzLXdhbnRlZCAyMDAwMDAwIC1icm9hZGNhc3QgLWNoYWluaWQgc2FwcGhpcmUtMSA8a2V5PgoKIyBWaWV3IHRoZSBvcmFjbGUncyBkYXNoYm9hcmQgKHRvdGFsIHJvdW5kcywgb3JhY2xlIHdpbiByYXRlLCB0b3Agb3V0d2l0dGVyKQpnbm9rZXkgcXVlcnkgdm0vcXJlbmRlciBcCiAgLS1kYXRhICJnbm8ubGFuZC9yL2cxMmNzNGNlaHVqcGZmcGpweXdta3FqNDNtNnU1eWE1M25qNjlzanovcnBzb3JhY2xlOiIKCiMgVmlldyBvbmUgcGxheWVyJ3MgcmVjb3JkIGFuZCBtb3ZlLWhpc3RvcnkgYnJlYWtkb3duCmdub2tleSBxdWVyeSB2bS9xcmVuZGVyIFwKICAtLWRhdGEgImduby5sYW5kL3IvZzEyY3M0Y2VodWpwZmZwanB5d21rcWo0M202dTV5YTUzbmo2OXNqei9ycHNvcmFjbGU6ZzF5b3VyYWRkcmVzcy4uLiIKYGBgCgojIyBUb29sY2hhaW4KCldyaXR0ZW4gYWdhaW5zdCB0aGUgc2FwcGhpcmUgKGdubyAwLjkpIHN0ZGxpYiBzcGxpdCAoYGNoYWluYCwgYGNoYWluL3J1bnRpbWVgLApgZ25vLmxhbmQvcC9udC9hdmwvdjBgLCBgZ25vLmxhbmQvcC9udC90ZXN0dXRpbHMvdjBgKSwgZm9sbG93aW5nIHRoZSBzYW1lCmNyb3NzaW5nLWZ1bmN0aW9uIChgY3VyIHJlYWxtYCkgYW5kIGBhdmwuVHJlZWAtYmFja2VkIHN0YXRlIHBhdHRlcm5zIGFscmVhZHkKdmVyaWZpZWQgb24gdGhpcyBjaGFpbiBieSB0aGUgYHJwc21hdGNoYCByZWFsbSBpbiB0aGlzIHJlcG8uIFRoZSBgZ25vYCBiaW5hcnkKb24gYFBBVEhgIGhlcmUgaGFzIGl0cyBjb21waWxlZC1pbiBgR05PUk9PVGAgcG9pbnRpbmcgYXQgYSBub3ctZGVsZXRlZApkaXJlY3RvcnkgKGAvcHJpdmF0ZS90bXAvZ25vc3dhcC1yZXZpZXcvZ25vYCksIGFuZCBubyBHbyB0b29sY2hhaW4gaXMKYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQgdG8gcmVidWlsZCBhIGNoYWluLW1hdGNoZWQgYmluYXJ5IHBlcgpgcmVmZXJlbmNlcy90b29sY2hhaW4ubWRgLCBzbyBgZ25vIHRlc3RgIGNvdWxkIG5vdCBiZSBydW4gdGhpcyB0aW1lLiBUaGUgY29kZQp3YXMgaW5zdGVhZCByZXZpZXdlZCBieSBoYW5kIGFnYWluc3QgdGhlIGV4YWN0IHdvcmtpbmcgcGF0dGVybnMgaW4KYHJwc21hdGNoYCAoc2FtZSBpbXBvcnRzLCBzYW1lIGBjdXIuSXNDdXJyZW50KClgIC8gYGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKWAKZ3VhcmQsIHNhbWUgYGF2bC5UcmVlYCBnZXQtb3ItY3JlYXRlLCBzYW1lIGBjaGFpbi5FbWl0YCBjYWxsIHNoYXBlKSBhbmQKYWdhaW5zdCBHbydzIGFycmF5LWluZGV4aW5nLWJ5LW5hbWVkLWludGVnZXItdHlwZSBydWxlIGZvciB0aGUgYE1vdmVgLWtleWVkCmBDb3VudHNgIGFycmF5LgoKPCEtLSBCRUdJTiBHTk9DT05UUkFDVFMgRk9PVEVSIChnZW5lcmF0ZWQgYnkgYG1ha2UgcmVhZG1lc2A7IGRvIG5vdCBlZGl0IGJlbG93KSAtLT4KCi0tLQoKUGFydCBvZiAqKlttb3VsL2duby1jb250cmFjdHNdKGh0dHBzOi8vZ2l0aHViLmNvbS9tb3VsL2duby1jb250cmFjdHMpKiog4oCUIG1vdWwncyB2ZXJzaW9uZWQgZ25vLmxhbmQgY29udHJhY3RzLiBTZWUgdGhlIHJlcG9zaXRvcnkgZm9yIHRoZSBmdWxsIGNhdGFsb2csIGJ1aWxkL3Rlc3QgdG9vbGluZywgYW5kIHVzYWdlLgoKKipEZXBlbmRlbmN5IGdyYXBoOioqCgohW2duby5sYW5kL3IvbW91bC94L2RhaWx5L3Jwc29yYWNsZS92MCBkZXBlbmRlbmN5IGdyYXBoXShodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vbW91bC9nbm8tY29udHJhY3RzL21haW4vX2Fzc2V0cy9nbm8ubGFuZC9yL21vdWwveC9kYWlseS9ycHNvcmFjbGUvdjAvZGVwcy5wbmcpCgo+IPCfp6ogKipIaWdobHkgZXhwZXJpbWVudGFsIOKAlCBwb3RlbnRpYWxseSB2aWJlLWNvZGVkLioqIE5vdCBhdWRpdGVkOyBtYXkgYnJlYWssIGNoYW5nZSwgb3IgYmUgcmVtb3ZlZCBhdCBhbnkgdGltZS4gRG8gbm90IHVzZSB3aXRoIGFueXRoaW5nIG9mIHZhbHVlLiBGdWxsIGRpc2NsYWltZXI6IFtESVNDTEFJTUVSXShodHRwczovL2dpdGh1Yi5jb20vbW91bC9nbm8tY29udHJhY3RzL2Jsb2IvbWFpbi9ESVNDTEFJTUVSLm1kKS4KCjwhLS0gRU5EIEdOT0NPTlRSQUNUUyBGT09URVIgLS0+ChpLCgtnbm9tb2QudG9tbBI8bW9kdWxlID0gImduby5sYW5kL3IvbW91bC94L2RhaWx5L3Jwc29yYWNsZS92MCIKZ25vID0gIjAuOSIKGpw4Cg1ycHNvcmFjbGUuZ25vEoo4Ly8gUGFja2FnZSBycHNvcmFjbGUgaXMgYSByb2NrLXBhcGVyLXNjaXNzb3JzIG9wcG9uZW50IHRoYXQgZG9lc24ndCByb2xsCi8vIGRpY2U6IGl0IHN0dWRpZXMgZWFjaCBwbGF5ZXIncyBtb3ZlIGhpc3RvcnkgYW5kIGFsd2F5cyB0aHJvd3MgdGhlCi8vIGNvdW50ZXIgdG8gd2hpY2hldmVyIG1vdmUgdGhhdCBwbGF5ZXIgaGFzIGZhdm9yZWQgbW9zdC4gUGxheSBhIGZpeGVkCi8vIHBhdHRlcm4gYW5kIHRoZSBvcmFjbGUgcHVuaXNoZXMgaXQ7IHBsYXkgY2xvc2UgdG8gYSB1bmlmb3JtIDEvMy0xLzMtMS8zCi8vIG1peCBhbmQgaXQgY2FuJ3Qgb3V0LWd1ZXNzIHlvdSBiZXR0ZXIgdGhhbiBjaGFuY2UuCnBhY2thZ2UgcnBzb3JhY2xlCgppbXBvcnQgKAoJInN0cmNvbnYiCgkic3RyaW5ncyIKCgkiY2hhaW4iCgkiY2hhaW4vcnVudGltZSIKCgkiZ25vLmxhbmQvcC9udC9hdmwvdjAiCikKCi8vIE1vdmUgaXMgb25lIG9mIHJvY2ssIHBhcGVyLCBvciBzY2lzc29ycywgb3JkZXJlZCBzbyB0aGF0Ci8vICh3aW5uZXIgLSBsb3NlciArIDMpICUgMyA9PSAxIGZvciBldmVyeSB3aW5uaW5nIHBhaXIuCnR5cGUgTW92ZSBpbnQKCmNvbnN0ICgKCVJvY2sgTW92ZSA9IGlvdGEKCVBhcGVyCglTY2lzc29ycwopCgpmdW5jIG1vdmVOYW1lKG0gTW92ZSkgc3RyaW5nIHsKCXN3aXRjaCBtIHsKCWNhc2UgUm9jazoKCQlyZXR1cm4gInJvY2siCgljYXNlIFBhcGVyOgoJCXJldHVybiAicGFwZXIiCgljYXNlIFNjaXNzb3JzOgoJCXJldHVybiAic2Npc3NvcnMiCglkZWZhdWx0OgoJCXJldHVybiAiPyIKCX0KfQoKZnVuYyBwYXJzZU1vdmUocyBzdHJpbmcpIChNb3ZlLCBib29sKSB7Cglzd2l0Y2ggc3RyaW5ncy5Ub0xvd2VyKHN0cmluZ3MuVHJpbVNwYWNlKHMpKSB7CgljYXNlICJyb2NrIiwgInIiOgoJCXJldHVybiBSb2NrLCB0cnVlCgljYXNlICJwYXBlciIsICJwIjoKCQlyZXR1cm4gUGFwZXIsIHRydWUKCWNhc2UgInNjaXNzb3JzIiwgInMiOgoJCXJldHVybiBTY2lzc29ycywgdHJ1ZQoJZGVmYXVsdDoKCQlyZXR1cm4gMCwgZmFsc2UKCX0KfQoKLy8ganVkZ2UgcmV0dXJucyAwIGZvciBhIHRpZSwgMSBpZiBwIGJlYXRzIGgsIDIgaWYgaCBiZWF0cyBwLgpmdW5jIGp1ZGdlKHAsIGggTW92ZSkgaW50IHsKCXJldHVybiAoaW50KHApIC0gaW50KGgpICsgMykgJSAzCn0KCi8vIGJlYXRzIHJldHVybnMgdGhlIG1vdmUgdGhhdCBkZWZlYXRzIG0uCmZ1bmMgYmVhdHMobSBNb3ZlKSBNb3ZlIHsKCXJldHVybiBNb3ZlKChpbnQobSkgKyAxKSAlIDMpCn0KCi8vIHBsYXllclN0YXRlIGlzIHRoZSBwZXJzaXN0ZWQgcmVjb3JkIGZvciBvbmUgYWRkcmVzcy4KdHlwZSBwbGF5ZXJTdGF0ZSBzdHJ1Y3QgewoJQ291bnRzICAgICBbM11pbnQgLy8gaGlzdG9yeSB0YWxseSBwZXIgbW92ZSwgd2hhdCB0aGUgb3JhY2xlIHByZWRpY3RzIGZyb20KCVJvdW5kcyAgICAgaW50CglXaW5zICAgICAgIGludCAvLyBwbGF5ZXIgYmVhdCB0aGUgb3JhY2xlCglMb3NzZXMgICAgIGludCAvLyBvcmFjbGUgYmVhdCB0aGUgcGxheWVyCglEcmF3cyAgICAgIGludAoJQmVzdFN0cmVhayBpbnQKCXN0cmVhayAgICAgaW50IC8vIGN1cnJlbnQgcGxheWVyIHdpbiBzdHJlYWsgYWdhaW5zdCB0aGUgb3JhY2xlCn0KCnZhciAoCglwbGF5ZXJzIGF2bC5UcmVlIC8vIGFkZHJlc3Mgc3RyaW5nIC0+ICpwbGF5ZXJTdGF0ZQoKCW5vbmNlICAgICAgICAgaW50Cgl0b3RhbFJvdW5kcyAgIGludAoJb3JhY2xlQ29ycmVjdCBpbnQgLy8gcm91bmRzIHRoZSBvcmFjbGUgd29uIGJ5IHN1Y2Nlc3NmdWxseSBjb3VudGVyaW5nCgoJdG9wT3V0d2l0dGVyICAgICBhZGRyZXNzCgl0b3BPdXR3aXR0ZXJXaW5zIGludAopCgpmdW5jIGdldE9yQ3JlYXRlKGFkZHIgYWRkcmVzcykgKnBsYXllclN0YXRlIHsKCWtleSA6PSBhZGRyLlN0cmluZygpCglpZiB2IDo9IHBsYXllcnMuR2V0KGtleSk7IHYgIT0gbmlsIHsKCQlyZXR1cm4gdi4oKnBsYXllclN0YXRlKQoJfQoJcHMgOj0gJnBsYXllclN0YXRle30KCXBsYXllcnMuU2V0KGtleSwgcHMpCglyZXR1cm4gcHMKfQoKLy8gcHJlZGljdCBndWVzc2VzIHRoZSBwbGF5ZXIncyBuZXh0IG1vdmUgYXMgdGhlIG1vc3QtcGxheWVkIG1vdmUgaW4gdGhlaXIKLy8gaGlzdG9yeSBzbyBmYXIuIFRpZXMgKGluY2x1ZGluZyBhIGZyZXNoIHBsYXllcidzIGFsbC16ZXJvIGhpc3RvcnkpIGZhbGwKLy8gYmFjayB0byBhIGNoYWluLWhlaWdodC1kZXJpdmVkIHNlZWQgc28gdGhlIG9yYWNsZSBkb2Vzbid0IGFsd2F5cyBicmVhawovLyB0aWVzIHRoZSBzYW1lIHdheS4KZnVuYyBwcmVkaWN0KHBzICpwbGF5ZXJTdGF0ZSwgc2VlZCBpbnQ2NCkgTW92ZSB7CgliZXN0IDo9IFJvY2sKCWJlc3RDb3VudCA6PSBwcy5Db3VudHNbUm9ja10KCXRpZWQgOj0gW11Nb3Zle1JvY2t9Cglmb3IgXywgbSA6PSByYW5nZSBbXU1vdmV7UGFwZXIsIFNjaXNzb3JzfSB7CgkJc3dpdGNoIHsKCQljYXNlIHBzLkNvdW50c1ttXSA+IGJlc3RDb3VudDoKCQkJYmVzdENvdW50ID0gcHMuQ291bnRzW21dCgkJCWJlc3QgPSBtCgkJCXRpZWQgPSBbXU1vdmV7bX0KCQljYXNlIHBzLkNvdW50c1ttXSA9PSBiZXN0Q291bnQ6CgkJCXRpZWQgPSBhcHBlbmQodGllZCwgbSkKCQl9Cgl9CglpZiBsZW4odGllZCkgPiAxIHsKCQlpZiBzZWVkIDwgMCB7CgkJCXNlZWQgPSAtc2VlZAoJCX0KCQliZXN0ID0gdGllZFtpbnQoc2VlZCklbGVuKHRpZWQpXQoJfQoJcmV0dXJuIGJlc3QKfQoKLy8gUGxheSBwaXRzIHRoZSBjYWxsZXIgYWdhaW5zdCB0aGUgb3JhY2xlOiBpdCBwcmVkaWN0cyB5b3VyIG5leHQgbW92ZSBmcm9tCi8vIHlvdXIgb3duIG1vdmUgaGlzdG9yeSBhbmQgdGhyb3dzIHRoZSBjb3VudGVyLiBBY2NlcHRzCi8vICJyb2NrIi8icGFwZXIiLyJzY2lzc29ycyIgb3IgdGhlIHNpbmdsZS1sZXR0ZXIgc2hvcnRoYW5kICJyIi8icCIvInMiLgpmdW5jIFBsYXkoY3VyIHJlYWxtLCBtb3ZlU3RyIHN0cmluZykgc3RyaW5nIHsKCWlmICFjdXIuSXNDdXJyZW50KCkgewoJCXBhbmljKCJpbnZhbGlkIHJlYWxtIikKCX0KCWNhbGxlciA6PSBjdXIuUHJldmlvdXMoKS5BZGRyZXNzKCkKCglwbGF5ZXJNb3ZlLCBvayA6PSBwYXJzZU1vdmUobW92ZVN0cikKCWlmICFvayB7CgkJcGFuaWMoImludmFsaWQgbW92ZTogdXNlIHJvY2ssIHBhcGVyLCBvciBzY2lzc29ycyAoci9wL3MpIikKCX0KCglwcyA6PSBnZXRPckNyZWF0ZShjYWxsZXIpCgoJbm9uY2UrKwoJc2VlZCA6PSBydW50aW1lLkNoYWluSGVpZ2h0KCkgKyBpbnQ2NChub25jZSkKCXByZWRpY3RlZCA6PSBwcmVkaWN0KHBzLCBzZWVkKQoJb3JhY2xlTW92ZSA6PSBiZWF0cyhwcmVkaWN0ZWQpCgoJcmVzdWx0IDo9IGp1ZGdlKHBsYXllck1vdmUsIG9yYWNsZU1vdmUpCgoJcHMuQ291bnRzW3BsYXllck1vdmVdKysKCXBzLlJvdW5kcysrCgl0b3RhbFJvdW5kcysrCgoJdmFyIG1zZyBzdHJpbmcKCXN3aXRjaCByZXN1bHQgewoJY2FzZSAxOgoJCXBzLldpbnMrKwoJCXBzLnN0cmVhaysrCgkJaWYgcHMuc3RyZWFrID4gcHMuQmVzdFN0cmVhayB7CgkJCXBzLkJlc3RTdHJlYWsgPSBwcy5zdHJlYWsKCQl9CgkJaWYgcHMuV2lucyA+IHRvcE91dHdpdHRlcldpbnMgewoJCQl0b3BPdXR3aXR0ZXJXaW5zID0gcHMuV2lucwoJCQl0b3BPdXR3aXR0ZXIgPSBjYWxsZXIKCQl9CgkJbXNnID0gInlvdSBvdXR3aXR0ZWQgdGhlIG9yYWNsZSEiCgljYXNlIDI6CgkJcHMuTG9zc2VzKysKCQlwcy5zdHJlYWsgPSAwCgkJb3JhY2xlQ29ycmVjdCsrCgkJbXNnID0gInRoZSBvcmFjbGUgcmVhZCB5b3UgbGlrZSBhIGJvb2suIgoJZGVmYXVsdDoKCQlwcy5EcmF3cysrCgkJcHMuc3RyZWFrID0gMAoJCW1zZyA9ICJhIGRyYXcg4oCUIHlvdSBhbmQgdGhlIG9yYWNsZSBwaWNrZWQgdGhlIHNhbWUgbW92ZS4iCgl9CgoJY2hhaW4uRW1pdCgiUm91bmRQbGF5ZWQiLAoJCSJwbGF5ZXIiLCBjYWxsZXIuU3RyaW5nKCksCgkJInBsYXllck1vdmUiLCBtb3ZlTmFtZShwbGF5ZXJNb3ZlKSwKCQkib3JhY2xlUHJlZGljdGVkIiwgbW92ZU5hbWUocHJlZGljdGVkKSwKCQkib3JhY2xlTW92ZSIsIG1vdmVOYW1lKG9yYWNsZU1vdmUpLAoJCSJyZXN1bHQiLCBzdHJjb252Lkl0b2EocmVzdWx0KSwKCSkKCglyZXR1cm4gInlvdSBwbGF5ZWQgIiArIG1vdmVOYW1lKHBsYXllck1vdmUpICsgIiwgdGhlIG9yYWNsZSBwcmVkaWN0ZWQgIiArCgkJbW92ZU5hbWUocHJlZGljdGVkKSArICIgYW5kIHRocmV3ICIgKyBtb3ZlTmFtZShvcmFjbGVNb3ZlKSArICIgLT4gIiArIG1zZwp9CgpmdW5jIHJlbmRlckhvbWUoKSBzdHJpbmcgewoJdmFyIGIgc3RyaW5ncy5CdWlsZGVyCgliLldyaXRlU3RyaW5nKCIjIFJvY2stUGFwZXItU2Npc3NvcnMgT3JhY2xlXG5cbiIpCgliLldyaXRlU3RyaW5nKCJBbiBhZGFwdGl2ZSBvcHBvbmVudDogaXQgZG9lc24ndCByb2xsIGRpY2UsIGl0IHN0dWRpZXMgeW91LiAiKQoJYi5Xcml0ZVN0cmluZygiRXZlcnkgdGhyb3cgaXMgbG9nZ2VkLCBhbmQgdGhlIG9yYWNsZSBhbHdheXMgY291bnRlcnMgd2hpY2hldmVyICIpCgliLldyaXRlU3RyaW5nKCJtb3ZlIHlvdSd2ZSBwbGF5ZWQgbW9zdCBvZnRlbi4gUGxheSBhIHVuaWZvcm0gbWl4ZWQgc3RyYXRlZ3kgYW5kICIpCgliLldyaXRlU3RyaW5nKCJpdCBjYW4ndCBvdXQtZ3Vlc3MgeW91OyBmYWxsIGludG8gYSBoYWJpdCBhbmQgaXQgd2lsbC5cblxuIikKCgliLldyaXRlU3RyaW5nKCItIFRvdGFsIHJvdW5kcyBwbGF5ZWQ6ICIgKyBzdHJjb252Lkl0b2EodG90YWxSb3VuZHMpICsgIlxuIikKCWlmIHRvdGFsUm91bmRzID4gMCB7CgkJcGN0IDo9IG9yYWNsZUNvcnJlY3QgKiAxMDAgLyB0b3RhbFJvdW5kcwoJCWIuV3JpdGVTdHJpbmcoIi0gT3JhY2xlIHdpbiByYXRlOiAiICsgc3RyY29udi5JdG9hKHBjdCkgKyAiJVxuIikKCX0KCWlmIHRvcE91dHdpdHRlci5Jc1ZhbGlkKCkgewoJCWIuV3JpdGVTdHJpbmcoIi0gVG9wIG91dHdpdHRlcjogYCIgKyB0b3BPdXR3aXR0ZXIuU3RyaW5nKCkgKyAiYCAoIiArCgkJCXN0cmNvbnYuSXRvYSh0b3BPdXR3aXR0ZXJXaW5zKSArICIgd2lucyBhZ2FpbnN0IHRoZSBvcmFjbGUpXG4iKQoJfSBlbHNlIHsKCQliLldyaXRlU3RyaW5nKCItIE5vIG9uZSBoYXMgYmVhdGVuIHRoZSBvcmFjbGUgeWV0LlxuIikKCX0KCgliLldyaXRlU3RyaW5nKCJcbiMjIEhvdyB0byBwbGF5XG5cbiIpCgliLldyaXRlU3RyaW5nKCJDYWxsIGBQbGF5KFwicm9ja1wifFwicGFwZXJcInxcInNjaXNzb3JzXCIpYCAob3IgYHJgL2BwYC9gc2ApLiAiKQoJYi5Xcml0ZVN0cmluZygiVmlldyB5b3VyIG93biByZWNvcmQgYXQgdGhpcyByZWFsbSdzIHBhdGggcGx1cyB5b3VyIGFkZHJlc3MsICIpCgliLldyaXRlU3RyaW5nKCJlLmcuIGAuLi4vcnBzb3JhY2xlOmcxeW91cmFkZHJlc3MuLi5gXG4iKQoJcmV0dXJuIGIuU3RyaW5nKCkKfQoKLy8gZXNjYXBlSW5saW5lIG5ldXRyYWxpemVzIG1hcmtkb3duLWFjdGl2ZSBjaGFyYWN0ZXJzIGluIHVudHJ1c3RlZCB0ZXh0Ci8vIGJlZm9yZSBpdCdzIGVtYmVkZGVkIGlubGluZSBpbiBSZW5kZXIgb3V0cHV0LgpmdW5jIGVzY2FwZUlubGluZShzIHN0cmluZykgc3RyaW5nIHsKCXIgOj0gc3RyaW5ncy5OZXdSZXBsYWNlcigKCQkiXFwiLCAiXFxcXCIsCgkJImAiLCAiXFxgIiwKCQkiKiIsICJcXCoiLAoJCSJfIiwgIlxcXyIsCgkJIlsiLCAiXFxbIiwKCQkiXSIsICJcXF0iLAoJCSJ8IiwgIlxcfCIsCgkpCglyZXR1cm4gci5SZXBsYWNlKHMpCn0KCmZ1bmMgcmVuZGVyUGxheWVyKHJhd0FkZHIgc3RyaW5nKSBzdHJpbmcgewoJYWRkciA6PSBzdHJpbmdzLlRyaW1TcGFjZShyYXdBZGRyKQoJc2FmZSA6PSBlc2NhcGVJbmxpbmUoYWRkcikKCgl2IDo9IHBsYXllcnMuR2V0KGFkZHIpCglpZiB2ID09IG5pbCB7CgkJcmV0dXJuICIjIFBsYXllciAiICsgc2FmZSArICJcblxuTm8gcmVjb3JkZWQgcm91bmRzIHlldC5cbiIKCX0KCXBzIDo9IHYuKCpwbGF5ZXJTdGF0ZSkKCgl2YXIgYiBzdHJpbmdzLkJ1aWxkZXIKCWIuV3JpdGVTdHJpbmcoIiMgUGxheWVyICIgKyBzYWZlICsgIlxuXG4iKQoJYi5Xcml0ZVN0cmluZygiLSBSb3VuZHMgcGxheWVkOiAiICsgc3RyY29udi5JdG9hKHBzLlJvdW5kcykgKyAiXG4iKQoJYi5Xcml0ZVN0cmluZygiLSBCZWF0IHRoZSBvcmFjbGU6ICIgKyBzdHJjb252Lkl0b2EocHMuV2lucykgKyAiXG4iKQoJYi5Xcml0ZVN0cmluZygiLSBMb3N0IHRvIHRoZSBvcmFjbGU6ICIgKyBzdHJjb252Lkl0b2EocHMuTG9zc2VzKSArICJcbiIpCgliLldyaXRlU3RyaW5nKCItIERyYXdzOiAiICsgc3RyY29udi5JdG9hKHBzLkRyYXdzKSArICJcbiIpCgliLldyaXRlU3RyaW5nKCItIEJlc3Qgd2luIHN0cmVhayB2cyBvcmFjbGU6ICIgKyBzdHJjb252Lkl0b2EocHMuQmVzdFN0cmVhaykgKyAiXG4iKQoJYi5Xcml0ZVN0cmluZygiLSBNb3ZlIGhpc3Rvcnkg4oCUIHJvY2s6ICIgKyBzdHJjb252Lkl0b2EocHMuQ291bnRzW1JvY2tdKSArCgkJIiwgcGFwZXI6ICIgKyBzdHJjb252Lkl0b2EocHMuQ291bnRzW1BhcGVyXSkgKwoJCSIsIHNjaXNzb3JzOiAiICsgc3RyY29udi5JdG9hKHBzLkNvdW50c1tTY2lzc29yc10pICsgIlxuIikKCglpZiBwcy5Sb3VuZHMgPiAwIHsKCQltYXhDb3VudCA6PSBwcy5Db3VudHNbUm9ja10KCQlmb3IgXywgYyA6PSByYW5nZSBwcy5Db3VudHNbMTpdIHsKCQkJaWYgYyA+IG1heENvdW50IHsKCQkJCW1heENvdW50ID0gYwoJCQl9CgkJfQoJCXByZWRpY3RhYmlsaXR5IDo9IG1heENvdW50ICogMTAwIC8gcHMuUm91bmRzCgkJYi5Xcml0ZVN0cmluZygiLSBQcmVkaWN0YWJpbGl0eSBzY29yZTogIiArIHN0cmNvbnYuSXRvYShwcmVkaWN0YWJpbGl0eSkgKwoJCQkiJSAobG93ZXIgaXMgaGFyZGVyIGZvciB0aGUgb3JhY2xlIHRvIHJlYWQpXG4iKQoJfQoJcmV0dXJuIGIuU3RyaW5nKCkKfQoKLy8gUmVuZGVyIHNob3dzIHRoZSBvcmFjbGUncyBkYXNoYm9hcmQgYXQgIiIsIG9yIG9uZSBwbGF5ZXIncyByZWNvcmQgd2hlbgovLyBwYXRoIGlzIHRoZWlyIGJlY2gzMiBhZGRyZXNzLgpmdW5jIFJlbmRlcihwYXRoIHN0cmluZykgc3RyaW5nIHsKCXBhdGggPSBzdHJpbmdzLlRyaW1QcmVmaXgoc3RyaW5ncy5UcmltU3BhY2UocGF0aCksICIvIikKCWlmIHBhdGggPT0gIiIgewoJCXJldHVybiByZW5kZXJIb21lKCkKCX0KCXJldHVybiByZW5kZXJQbGF5ZXIocGF0aCkKfQoiIwoTL2duby5NZW1QYWNrYWdlVHlwZRIMCgpNUFVzZXJQcm9kEhMIlLe6ERIMMTAwMDAwMHVnbm90GqgBCjoKEy90bS5QdWJLZXlTZWNwMjU2azESIwohAgBSSj+NLAA6icQ/Rf6vbrjtRbbjo197vms7Sf+eLYPIEkD7ljQJ9j2LqMmyvAOle9RWKgKzxfe2+JkGgxgTZpyU6lh3vTyBpn9XaHVVSNY9P+BxHTIwNXuWwX+2khKeZmp5GihnMXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcWx1dXhlIgpnbm9wdWJsaXNo