Transaction executed successfully
Transaction Details
Inspect execution, participants, message data, gas usage, events and raw transaction data.
Transaction hash
5F81438D987A2172022AF3C384BE1A62D0AA7B9633600B006FE3E729D10A9C39
Transaction overview
Execution summary
TX INDEX
0
Position in block
GAS WANTED
250,000,000
Requested gas limit
GAS USED
19,922,005
Gas consumed
FEE
1000000ugnot
Transaction fee
Participants
Message
Message #1
m_addpkg
Arguments
g1n4pl5uc4yt5r96m9w6fmdznx3x0jyg8l6arhmt50000000ugnot
Execution log
msg:0,success:true,log:,events:[]
Events
No events emitted by this transaction.
Raw encoded transaction
CudsCgwvdm0ubV9hZGRwa2cS1mwKKGcxbjRwbDV1YzR5dDVyOTZtOXc2Zm1kem54M3gwanlnOGw2YXJobXQSmmwKCGJhemFhcnY1EkNnbm8ubGFuZC9yL2cxbjRwbDV1YzR5dDVyOTZtOXc2Zm1kem54M3gwanlnOGw2YXJobXQvYmF6YWFyL2JhemFhcnY1GrhqCgxiYXphYXJ2NS5nbm8Sp2pwYWNrYWdlIGJhemFhcnY1CgppbXBvcnQgKAoJImNoYWluIgoJImNoYWluL2JhbmtlciIKCSJjaGFpbi9ydW50aW1lL3Vuc2FmZSIKCSJzdHJjb252IgoJInN0cmluZ3MiCgoJImduby5sYW5kL3AvbnQvYXZsL3YwIgopCgpjb25zdCAoCglwa2dQYXRoICAgICAgICAgID0gImduby5sYW5kL3IvZzFuNHBsNXVjNHl0NXI5Nm05dzZmbWR6bngzeDBqeWc4bDZhcmhtdC9iYXphYXIvYmF6YWFydjUiCgluYXRpdmVEZW5vbSAgICAgID0gInVnbm90IgoJZGVmYXVsdExhdW5jaEZlZSA9IGludDY0KDFfMDAwXzAwMF8wMDApIC8vIDEwMDAgR05PVAoJbWF4TmFtZUxlbiAgICAgICA9IDY0CgltYXhJbWFnZUxlbiAgICAgID0gMjAwCgltYXhTdXBwbHlCb3VuZCAgID0gMV8wMDBfMDAwCgltYXhSb3lhbHR5QnBzICAgID0gMTAwMAoJbWF4U3ltYm9sTGVuICAgICA9IDExCgltYXhTbHVnTGVuICAgICAgICAgPSAxMQoJbWluU2x1Z0xlbiAgICAgICAgID0gMgoJZGVmYXVsdFByb3RvY29sQnBzID0gaW50NjQoMjAwKSAvLyAyJSBNYWdpYyBFZGVuCgltYXhQcm90b2NvbEJwcyAgICAgPSBpbnQ2NCg1MDApCikKCnR5cGUgY29sbGVjdGlvbiBzdHJ1Y3QgewoJc2x1ZyAgICAgICBzdHJpbmcKCW5hbWUgICAgICAgc3RyaW5nCglzeW1ib2wgICAgIHN0cmluZwoJY292ZXIgICAgICBzdHJpbmcKCXBrZyAgICAgICAgc3RyaW5nCgljcmVhdG9yICAgIGFkZHJlc3MKCW1heFN1cHBseSAgaW50CgltaW50UHJpY2UgIGludDY0CgltaW50ZWQgICAgIGludAoJcm95YWx0eUJwcyBpbnQKfQoKdHlwZSByZXNlcnZhdGlvbiBzdHJ1Y3QgewoJd2hvICBhZGRyZXNzCglwYWlkIGludDY0Cn0KCnZhciAoCglieVNsdWcgICAgICBhdmwuVHJlZQoJYnlQa2cgICAgICAgYXZsLlRyZWUKCXJlc2VydmVkICAgIGF2bC5UcmVlCglpbml0ZWQgICAgICBib29sCglhZG1pbiAgICAgICAgIGFkZHJlc3MKCXNlbGYgICAgICAgICAgYWRkcmVzcwoJcHJvdG9jb2xTaW5rICBhZGRyZXNzCglsYXVuY2hGZWUgICAgICAgIGludDY0Cglwcm90b2NvbEJwcyAgICAgIGludDY0CglnZW5lc2lzUGtnICAgICAgIHN0cmluZwoJZ2VuZXNpc1NpbmsgICAgICBhZGRyZXNzCglnZW5lc2lzU2hhcmVCcHMgIGludDY0CglkaXNjb3VudFB1c2hlciAgIHN0cmluZwoJaG9sZGVyRGlzYyAgICAgICBhdmwuVHJlZQopCgpmdW5jIEluaXQoY3VyIHJlYWxtKSB7CglpZiBpbml0ZWQgewoJCXBhbmljKCJmYWN0b3J5OiBhbHJlYWR5IGluaXRpYWxpemVkIikKCX0KCWlmICFjdXIuUHJldmlvdXMoKS5Jc1VzZXJDYWxsKCkgewoJCXBhbmljKCJmYWN0b3J5OiBFT0Egb25seSIpCgl9CglhZG1pbiA9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKQoJcHJvdG9jb2xTaW5rID0gYWRtaW4KCXNlbGYgPSBjdXIuQWRkcmVzcygpCglieVNsdWcgPSBhdmwuVHJlZXt9CglieVBrZyA9IGF2bC5UcmVle30KCXJlc2VydmVkID0gYXZsLlRyZWV7fQoJaG9sZGVyRGlzYyA9IGF2bC5UcmVle30KCWdlbmVzaXNQa2cgPSAiIgoJZ2VuZXNpc1NoYXJlQnBzID0gMAoJZGlzY291bnRQdXNoZXIgPSAiIgoJdmFyIHogYWRkcmVzcwoJZ2VuZXNpc1NpbmsgPSB6CglsYXVuY2hGZWUgPSBkZWZhdWx0TGF1bmNoRmVlCglwcm90b2NvbEJwcyA9IGRlZmF1bHRQcm90b2NvbEJwcwoJaW5pdGVkID0gdHJ1ZQoJY2hhaW4uRW1pdCgiSW5pdCIsICJhZG1pbiIsIGFkbWluLlN0cmluZygpKQp9CgpmdW5jIEFkZHJlc3MoKSBhZGRyZXNzIHsKCXJldHVybiBjaGFpbi5QYWNrYWdlQWRkcmVzcyhwa2dQYXRoKQp9CgpmdW5jIExhdW5jaEZlZSgpIGludDY0IHsKCXJlcXVpcmVJbml0KCkKCXJldHVybiBsYXVuY2hGZWUKfQoKZnVuYyBBZG1pbigpIHN0cmluZyB7CglyZXF1aXJlSW5pdCgpCglyZXR1cm4gYWRtaW4uU3RyaW5nKCkKfQoKZnVuYyBTZXRMYXVuY2hGZWUoY3VyIHJlYWxtLCB1Z25vdCBpbnQ2NCkgewoJcmVxdWlyZUFkbWluKGN1cikKCWlmIHVnbm90IDwgMCB7CgkJcGFuaWMoImZhY3Rvcnk6IGxhdW5jaCBmZWUiKQoJfQoJbGF1bmNoRmVlID0gdWdub3QKCWNoYWluLkVtaXQoIlNldExhdW5jaEZlZSIsICJ1Z25vdCIsIHN0cmNvbnYuRm9ybWF0SW50KHVnbm90LCAxMCkpCn0KCmZ1bmMgUHJvdG9jb2xCcHMoKSBpbnQ2NCB7CglyZXF1aXJlSW5pdCgpCglpZiBwcm90b2NvbEJwcyA8PSAwIHsKCQlyZXR1cm4gZGVmYXVsdFByb3RvY29sQnBzCgl9CglyZXR1cm4gcHJvdG9jb2xCcHMKfQoKZnVuYyBTZXRQcm90b2NvbEJwcyhjdXIgcmVhbG0sIGJwcyBpbnQ2NCkgewoJcmVxdWlyZUFkbWluKGN1cikKCWlmIGJwcyA8IDAgfHwgYnBzID4gbWF4UHJvdG9jb2xCcHMgewoJCXBhbmljKCJmYWN0b3J5OiBwcm90b2NvbCBicHMiKQoJfQoJcHJvdG9jb2xCcHMgPSBicHMKCWNoYWluLkVtaXQoIlNldFByb3RvY29sQnBzIiwgImJwcyIsIHN0cmNvbnYuRm9ybWF0SW50KGJwcywgMTApKQp9CgpmdW5jIFByb3RvY29sU2luaygpIGFkZHJlc3MgewoJcmVxdWlyZUluaXQoKQoJcmV0dXJuIHByb3RvY29sU2luawp9CgpmdW5jIFNldFByb3RvY29sU2luayhjdXIgcmVhbG0sIG5leHQgYWRkcmVzcykgewoJcmVxdWlyZUFkbWluKGN1cikKCWlmICFuZXh0LklzVmFsaWQoKSB7CgkJcGFuaWMoImZhY3Rvcnk6IGludmFsaWQgYWRkcmVzcyIpCgl9CglpZiBuZXh0ID09IHByb3RvY29sU2luayB7CgkJcGFuaWMoImZhY3Rvcnk6IGFscmVhZHkgc2luayIpCgl9Cglwcm90b2NvbFNpbmsgPSBuZXh0CgljaGFpbi5FbWl0KCJTZXRQcm90b2NvbFNpbmsiLCAiYWRkciIsIG5leHQuU3RyaW5nKCkpCn0KCmZ1bmMgR2VuZXNpc1BrZygpIHN0cmluZyB7CglyZXF1aXJlSW5pdCgpCglyZXR1cm4gZ2VuZXNpc1BrZwp9CgpmdW5jIEdlbmVzaXNTaW5rKCkgYWRkcmVzcyB7CglyZXF1aXJlSW5pdCgpCglyZXR1cm4gZ2VuZXNpc1NpbmsKfQoKZnVuYyBHZW5lc2lzU2hhcmVCcHMoKSBpbnQ2NCB7CglyZXF1aXJlSW5pdCgpCglpZiBnZW5lc2lzUGtnID09ICIiIHsKCQlyZXR1cm4gMAoJfQoJaWYgZ2VuZXNpc1NoYXJlQnBzIDw9IDAgewoJCXJldHVybiAxMTAwCgl9CglyZXR1cm4gZ2VuZXNpc1NoYXJlQnBzCn0KCmZ1bmMgSG9sZGVyRGlzY291bnQob3duZXIgc3RyaW5nKSBpbnQ2NCB7CglyZXF1aXJlSW5pdCgpCglpZiBnZW5lc2lzUGtnID09ICIiIHsKCQlyZXR1cm4gMAoJfQoJdiA6PSBob2xkZXJEaXNjLkdldChzdHJpbmdzLlRvTG93ZXIoc3RyaW5ncy5UcmltU3BhY2Uob3duZXIpKSkKCWlmIHYgPT0gbmlsIHsKCQlyZXR1cm4gMAoJfQoJcmV0dXJuIHYuKGludDY0KQp9CgpmdW5jIEF0dGFjaEdlbmVzaXMoY3VyIHJlYWxtKSB7CglyZXF1aXJlSW5pdCgpCglwcmV2IDo9IGN1ci5QcmV2aW91cygpCglpZiAhcHJldi5Jc0NvZGUoKSB7CgkJcGFuaWMoImZhY3Rvcnk6IGdlbmVzaXMgcmVhbG0iKQoJfQoJZW9hIDo9IHByZXYuUHJldmlvdXMoKQoJaWYgIWVvYS5Jc1VzZXJDYWxsKCkgfHwgZW9hLkFkZHJlc3MoKSAhPSBhZG1pbiB7CgkJcGFuaWMoImZhY3Rvcnk6IG5vdCBhZG1pbiIpCgl9Cglwa2cgOj0gcHJldi5Qa2dQYXRoKCkKCWlmIHBrZyA9PSAiIiB7CgkJcGFuaWMoImZhY3Rvcnk6IGdlbmVzaXMgcGtnIikKCX0KCWlmIGdlbmVzaXNQa2cgIT0gIiIgJiYgZ2VuZXNpc1BrZyAhPSBwa2cgewoJCXBhbmljKCJmYWN0b3J5OiBnZW5lc2lzIHNldCIpCgl9CglnZW5lc2lzUGtnID0gcGtnCglnZW5lc2lzU2luayA9IHByZXYuQWRkcmVzcygpCglpZiBnZW5lc2lzU2hhcmVCcHMgPD0gMCB7CgkJZ2VuZXNpc1NoYXJlQnBzID0gMTEwMAoJfQoJY2hhaW4uRW1pdCgiQXR0YWNoR2VuZXNpcyIsICJwa2ciLCBwa2cpCn0KCmZ1bmMgU2V0R2VuZXNpcyhjdXIgcmVhbG0sIHBrZyBzdHJpbmcpIHsKCXJlcXVpcmVBZG1pbihjdXIpCglwa2cgPSBzdHJpbmdzLlRyaW1TcGFjZShwa2cpCglpZiBwa2cgPT0gIiIgfHwgIXN0cmluZ3MuSGFzUHJlZml4KHBrZywgImduby5sYW5kL3IvIikgewoJCXBhbmljKCJmYWN0b3J5OiBnZW5lc2lzIHBrZyIpCgl9CglnZW5lc2lzUGtnID0gcGtnCglnZW5lc2lzU2luayA9IGNoYWluLlBhY2thZ2VBZGRyZXNzKHBrZykKCWlmIGdlbmVzaXNTaGFyZUJwcyA8PSAwIHsKCQlnZW5lc2lzU2hhcmVCcHMgPSAxMTAwCgl9CgljaGFpbi5FbWl0KCJTZXRHZW5lc2lzIiwgInBrZyIsIHBrZykKfQoKZnVuYyBTZXREaXNjb3VudFB1c2hlcihjdXIgcmVhbG0sIHBrZyBzdHJpbmcpIHsKCXJlcXVpcmVBZG1pbihjdXIpCglwa2cgPSBzdHJpbmdzLlRyaW1TcGFjZShwa2cpCglpZiBwa2cgPT0gIiIgfHwgIXN0cmluZ3MuSGFzUHJlZml4KHBrZywgImduby5sYW5kL3IvIikgewoJCXBhbmljKCJmYWN0b3J5OiBwdXNoZXIgcGtnIikKCX0KCWRpc2NvdW50UHVzaGVyID0gcGtnCgljaGFpbi5FbWl0KCJTZXREaXNjb3VudFB1c2hlciIsICJwa2ciLCBwa2cpCn0KCmZ1bmMgRGlzY291bnRQdXNoZXIoKSBzdHJpbmcgewoJcmVxdWlyZUluaXQoKQoJcmV0dXJuIGRpc2NvdW50UHVzaGVyCn0KCmZ1bmMgTm90ZUhvbGRlckRpc2NvdW50KGN1ciByZWFsbSwgb3duZXIgc3RyaW5nLCBicHMgaW50NjQpIHsKCXJlcXVpcmVJbml0KCkKCXByZXYgOj0gY3VyLlByZXZpb3VzKCkKCWlmICFwcmV2LklzQ29kZSgpIHsKCQlwYW5pYygiZmFjdG9yeTogbm90IGdlbmVzaXMiKQoJfQoJZnJvbSA6PSBwcmV2LlBrZ1BhdGgoKQoJb2sgOj0gKGdlbmVzaXNQa2cgIT0gIiIgJiYgZnJvbSA9PSBnZW5lc2lzUGtnKSB8fCAoZGlzY291bnRQdXNoZXIgIT0gIiIgJiYgZnJvbSA9PSBkaXNjb3VudFB1c2hlcikKCWlmICFvayB7CgkJcGFuaWMoImZhY3Rvcnk6IG5vdCBnZW5lc2lzIikKCX0KCWlmIGJwcyA8IDAgewoJCXBhbmljKCJmYWN0b3J5OiBkaXNjb3VudCIpCgl9Cgl3aG8gOj0gc3RyaW5ncy5Ub0xvd2VyKHN0cmluZ3MuVHJpbVNwYWNlKG93bmVyKSkKCWlmIHdobyA9PSAiIiB7CgkJcGFuaWMoImZhY3Rvcnk6IG93bmVyIikKCX0KCWlmIGJwcyA9PSAwIHsKCQlob2xkZXJEaXNjLlJlbW92ZSh3aG8pCgkJcmV0dXJuCgl9Cglob2xkZXJEaXNjLlNldCh3aG8sIGJwcykKfQoKZnVuYyBSZWdpc3RlcihjdXIgcmVhbG0sIG5hbWUsIHN5bWJvbCwgY292ZXIgc3RyaW5nLCBtYXhTdXBwbHkgaW50LCBtaW50UHJpY2UsIHJveWFsdHlCcHMgaW50NjQpIHsKCXJlcXVpcmVJbml0KCkKCXByZXYgOj0gY3VyLlByZXZpb3VzKCkKCWlmICFwcmV2LklzQ29kZSgpIHsKCQlwYW5pYygiZmFjdG9yeTogY29sbGVjdGlvbiByZWFsbSIpCgl9CgljcmVhdG9yUmxtIDo9IHByZXYuUHJldmlvdXMoKQoJaWYgIWNyZWF0b3JSbG0uSXNVc2VyQ2FsbCgpIHsKCQlwYW5pYygiZmFjdG9yeTogRU9BIGNyZWF0b3IiKQoJfQoJcGtnIDo9IHByZXYuUGtnUGF0aCgpCglzbHVnIDo9IGxhc3RFbGVtKHBrZykKCXJlcyA6PSBtdXN0UmVzZXJ2ZShzbHVnKQoJaWYgY3JlYXRvclJsbS5BZGRyZXNzKCkgIT0gcmVzLndobyB7CgkJcGFuaWMoImZhY3Rvcnk6IHJlc2VydmVkIikKCX0KCXJlc2VydmVkLlJlbW92ZShzbHVnKQoJcmVnaXN0ZXIocGtnLCBjcmVhdG9yUmxtLkFkZHJlc3MoKSwgbmFtZSwgc3ltYm9sLCBjb3ZlciwgbWF4U3VwcGx5LCBtaW50UHJpY2UsIHJveWFsdHlCcHMpCn0KCmZ1bmMgUmVzZXJ2ZShjdXIgcmVhbG0sIHNsdWcgc3RyaW5nKSB7CglyZXF1aXJlSW5pdCgpCglpZiAhY3VyLlByZXZpb3VzKCkuSXNVc2VyQ2FsbCgpIHsKCQlwYW5pYygiZmFjdG9yeTogRU9BIG9ubHkiKQoJfQoJc2x1ZyA9IHN0cmluZ3MuVG9Mb3dlcihzdHJpbmdzLlRyaW1TcGFjZShzbHVnKSkKCWlmICF2YWxpZFNsdWcoc2x1ZykgewoJCXBhbmljKCJmYWN0b3J5OiBzbHVnIikKCX0KCWlmIGJ5U2x1Zy5IYXMoc2x1ZykgfHwgcmVzZXJ2ZWQuSGFzKHNsdWcpIHsKCQlwYW5pYygiZmFjdG9yeTogc2x1ZyB0YWtlbiIpCgl9CgljYWxsZXIgOj0gY3VyLlByZXZpb3VzKCkuQWRkcmVzcygpCglwYWlkIDo9IHJlc2VydmVEdWUoY2FsbGVyKQoJdGFrZUZhY3RvcnlTZW5kKHBhaWQpCglyZXNlcnZlZC5TZXQoc2x1ZywgJnJlc2VydmF0aW9ue3dobzogY2FsbGVyLCBwYWlkOiBwYWlkfSkKCWNoYWluLkVtaXQoIlJlc2VydmUiLCAic2x1ZyIsIHNsdWcsICJwYWlkIiwgc3RyY29udi5Gb3JtYXRJbnQocGFpZCwgMTApKQp9CgovLyBSZXNlcnZlRHVlIGlzIHRoZSB1Z25vdCBSZXNlcnZlIHdpbGwgcmVxdWlyZSBmcm9tIGFkZHIuIFRoZSBmYWN0b3J5IGFkbWluCi8vICh0aGUgd2FsbGV0IHRoYXQgY2FsbGVkIEluaXQpIHBheXMgMC4gRXZlcnlvbmUgZWxzZSBwYXlzIExhdW5jaEZlZS4KZnVuYyBSZXNlcnZlRHVlKGFkZHIgc3RyaW5nKSBpbnQ2NCB7CglyZXF1aXJlSW5pdCgpCgl3aG8sIG9rIDo9IHBhcnNlQWRkcihhZGRyKQoJaWYgIW9rIHsKCQlyZXR1cm4gbGF1bmNoRmVlCgl9CglyZXR1cm4gcmVzZXJ2ZUR1ZSh3aG8pCn0KCmZ1bmMgcmVzZXJ2ZUR1ZShjYWxsZXIgYWRkcmVzcykgaW50NjQgewoJaWYgY2FsbGVyID09IGFkbWluIHsKCQlyZXR1cm4gMAoJfQoJcmV0dXJuIGxhdW5jaEZlZQp9CgpmdW5jIHBhcnNlQWRkcihyYXcgc3RyaW5nKSAoYWRkcmVzcywgYm9vbCkgewoJcyA6PSBzdHJpbmdzLlRyaW1TcGFjZShyYXcpCglpZiBzID09ICIiIHsKCQl2YXIgemVybyBhZGRyZXNzCgkJcmV0dXJuIHplcm8sIGZhbHNlCgl9Cgl3aG8gOj0gYWRkcmVzcyhzKQoJaWYgIXdoby5Jc1ZhbGlkKCkgewoJCXZhciB6ZXJvIGFkZHJlc3MKCQlyZXR1cm4gemVybywgZmFsc2UKCX0KCXJldHVybiB3aG8sIHRydWUKfQoKZnVuYyBDYW5jZWxSZXNlcnZlKGN1ciByZWFsbSwgc2x1ZyBzdHJpbmcpIHsKCXJlcXVpcmVJbml0KCkKCWlmICFjdXIuUHJldmlvdXMoKS5Jc1VzZXJDYWxsKCkgewoJCXBhbmljKCJmYWN0b3J5OiBFT0Egb25seSIpCgl9CglzbHVnID0gc3RyaW5ncy5Ub0xvd2VyKHN0cmluZ3MuVHJpbVNwYWNlKHNsdWcpKQoJcmVzIDo9IG11c3RSZXNlcnZlKHNsdWcpCglpZiByZXMud2hvICE9IGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKSB7CgkJcGFuaWMoImZhY3Rvcnk6IG5vdCByZXNlcnZlciIpCgl9CglpZiBieVNsdWcuSGFzKHNsdWcpIHsKCQlwYW5pYygiZmFjdG9yeTogYWxyZWFkeSByZWdpc3RlcmVkIikKCX0KCXJlc2VydmVkLlJlbW92ZShzbHVnKQoJaWYgcmVzLnBhaWQgPiAwIHsKCQliayA6PSBiYW5rZXIuTmV3QmFua2VyKGJhbmtlci5CYW5rZXJUeXBlUmVhbG1TZW5kLCBjdXIpCgkJYmsuU2VuZENvaW5zKHNlbGYsIHJlcy53aG8sIGNoYWluLkNvaW5ze3tEZW5vbTogbmF0aXZlRGVub20sIEFtb3VudDogcmVzLnBhaWR9fSkKCX0KCWNoYWluLkVtaXQoIkNhbmNlbFJlc2VydmUiLCAic2x1ZyIsIHNsdWcsICJwYWlkIiwgc3RyY29udi5Gb3JtYXRJbnQocmVzLnBhaWQsIDEwKSkKfQoKZnVuYyBSZXNlcnZlZENyZWF0b3Ioc2x1ZyBzdHJpbmcpIHN0cmluZyB7CglyZXF1aXJlSW5pdCgpCglzbHVnID0gc3RyaW5ncy5Ub0xvd2VyKHN0cmluZ3MuVHJpbVNwYWNlKHNsdWcpKQoJaWYgIXJlc2VydmVkLkhhcyhzbHVnKSB7CgkJcmV0dXJuICIiCgl9CglyZXR1cm4gcmVzZXJ2ZWQuR2V0KHNsdWcpLigqcmVzZXJ2YXRpb24pLndoby5TdHJpbmcoKQp9CgpmdW5jIHRha2VGYWN0b3J5U2VuZCh3YW50IGludDY0KSB7CglzZW50IDo9IHVuc2FmZS5PcmlnaW5TZW5kKCkKCWlmIHdhbnQgPT0gMCB7CgkJaWYgbGVuKHNlbnQpICE9IDAgewoJCQlwYW5pYygiZmFjdG9yeTogZXh0cmEgZGVub21zIikKCQl9CgkJcmV0dXJuCgl9CglpZiBsZW4oc2VudCkgIT0gMSB8fCBzZW50WzBdLkRlbm9tICE9IG5hdGl2ZURlbm9tIHx8IHNlbnRbMF0uQW1vdW50ICE9IHdhbnQgewoJCXBhbmljKCJmYWN0b3J5OiB3cm9uZyBwYXltZW50IikKCX0KfQoKZnVuYyBOb3RlTWludGVkKGN1ciByZWFsbSwgbiBpbnQpIHsKCXJlcXVpcmVJbml0KCkKCWlmIG4gPCAwIHsKCQlwYW5pYygiZmFjdG9yeTogbWludGVkIikKCX0KCXByZXYgOj0gY3VyLlByZXZpb3VzKCkKCWlmICFwcmV2LklzQ29kZSgpIHsKCQlwYW5pYygiZmFjdG9yeTogY29sbGVjdGlvbiByZWFsbSIpCgl9CgljIDo9IG11c3RCeVBrZyhwcmV2LlBrZ1BhdGgoKSkKCWMubWludGVkID0gbgoJYnlQa2cuU2V0KGMucGtnLCBjKQoJYnlTbHVnLlNldChjLnNsdWcsIGMpCn0KCmZ1bmMgTm90ZVJveWFsdHkoY3VyIHJlYWxtLCBicHMgaW50KSB7CglyZXF1aXJlSW5pdCgpCglpZiBicHMgPCAwIHx8IGJwcyA+IG1heFJveWFsdHlCcHMgewoJCXBhbmljKCJmYWN0b3J5OiByb3lhbHR5IikKCX0KCXByZXYgOj0gY3VyLlByZXZpb3VzKCkKCWlmICFwcmV2LklzQ29kZSgpIHsKCQlwYW5pYygiZmFjdG9yeTogY29sbGVjdGlvbiByZWFsbSIpCgl9CgljIDo9IG11c3RCeVBrZyhwcmV2LlBrZ1BhdGgoKSkKCWMucm95YWx0eUJwcyA9IGJwcwoJYnlQa2cuU2V0KGMucGtnLCBjKQoJYnlTbHVnLlNldChjLnNsdWcsIGMpCn0KCmZ1bmMgQ29sbGVjdGlvbk9mKHNsdWcgc3RyaW5nKSBzdHJpbmcgewoJcmVxdWlyZUluaXQoKQoJYyA6PSBtdXN0QnlTbHVnKHNsdWcpCglyZXR1cm4gYy5wa2cKfQoKZnVuYyBDb2xsZWN0aW9uQWRkcihzbHVnIHN0cmluZykgc3RyaW5nIHsKCXJlcXVpcmVJbml0KCkKCWMgOj0gbXVzdEJ5U2x1ZyhzbHVnKQoJcmV0dXJuIGNoYWluLlBhY2thZ2VBZGRyZXNzKGMucGtnKS5TdHJpbmcoKQp9CgpmdW5jIFJveWFsdHlPZihzbHVnIHN0cmluZykgaW50IHsKCXJlcXVpcmVJbml0KCkKCWMgOj0gbXVzdEJ5U2x1ZyhzbHVnKQoJcmV0dXJuIGMucm95YWx0eUJwcwp9CgpmdW5jIExpc3RDb2xsZWN0aW9ucygpIHN0cmluZyB7CglyZXF1aXJlSW5pdCgpCglvdXQgOj0gIiIKCWJ5U2x1Zy5JdGVyYXRlKCIiLCAiIiwgZnVuYyhfIHN0cmluZywgdmFsdWUgYW55KSBib29sIHsKCQljIDo9IHZhbHVlLigqY29sbGVjdGlvbikKCQlpZiBvdXQgIT0gIiIgewoJCQlvdXQgKz0gIlxuIgoJCX0KCQlvdXQgKz0gYy5zbHVnICsgInwiICsgYy5uYW1lICsgInwiICsgYy5jb3ZlciArICJ8IiArIGMucGtnICsgInwiICsgc3RyY29udi5Gb3JtYXRJbnQoYy5taW50UHJpY2UsIDEwKSArICJ8IiArIHN0cmNvbnYuSXRvYShjLm1heFN1cHBseSkgKyAifCIgKyBzdHJjb252Lkl0b2EoYy5taW50ZWQpICsgInwiICsgYy5jcmVhdG9yLlN0cmluZygpICsgInwiICsgY2hhaW4uUGFja2FnZUFkZHJlc3MoYy5wa2cpLlN0cmluZygpICsgInwiICsgc3RyY29udi5JdG9hKGMucm95YWx0eUJwcykKCQlyZXR1cm4gZmFsc2UKCX0pCglyZXR1cm4gb3V0Cn0KCmZ1bmMgV2l0aGRyYXcoY3VyIHJlYWxtKSB7CglyZXF1aXJlQWRtaW4oY3VyKQoJYmsgOj0gYmFua2VyLk5ld0JhbmtlcihiYW5rZXIuQmFua2VyVHlwZVJlYWxtU2VuZCwgY3VyKQoJdWdub3QgOj0gYmsuR2V0Q29pbnMoc2VsZikuQW1vdW50T2YobmF0aXZlRGVub20pCglsb2NrZWQgOj0gcmVzZXJ2ZWRQYWlkKCkKCWF2YWlsIDo9IHVnbm90IC0gbG9ja2VkCglpZiBhdmFpbCA8PSAwIHsKCQlwYW5pYygiZmFjdG9yeTogbm8gZnVuZHMiKQoJfQoJYmsuU2VuZENvaW5zKHNlbGYsIGFkbWluLCBjaGFpbi5Db2luc3t7RGVub206IG5hdGl2ZURlbm9tLCBBbW91bnQ6IGF2YWlsfX0pCgljaGFpbi5FbWl0KCJXaXRoZHJhdyIsICJhbW91bnQiLCBzdHJjb252LkZvcm1hdEludChhdmFpbCwgMTApKQp9CgpmdW5jIFRyYW5zZmVyQWRtaW4oY3VyIHJlYWxtLCBuZXh0IGFkZHJlc3MpIHsKCXJlcXVpcmVBZG1pbihjdXIpCglpZiAhbmV4dC5Jc1ZhbGlkKCkgewoJCXBhbmljKCJmYWN0b3J5OiBpbnZhbGlkIGFkZHJlc3MiKQoJfQoJaWYgbmV4dCA9PSBhZG1pbiB7CgkJcGFuaWMoImZhY3Rvcnk6IGFscmVhZHkgYWRtaW4iKQoJfQoJYWRtaW4gPSBuZXh0CgljaGFpbi5FbWl0KCJUcmFuc2ZlckFkbWluIiwgImFkZHIiLCBuZXh0LlN0cmluZygpKQp9CgpmdW5jIFJlbmRlcihfIHN0cmluZykgc3RyaW5nIHsKCWlmICFpbml0ZWQgewoJCXJldHVybiAiIyBCYXphYXIgZmFjdG9yeVxuXG5DYWxsIEluaXQgZmlyc3QuXG4iCgl9CglvdXQgOj0gIiMgQmF6YWFyIGZhY3RvcnlcblxuIgoJb3V0ICs9ICItIGxhdW5jaCBmZWU6ICIgKyBzdHJjb252LkZvcm1hdEludChsYXVuY2hGZWUsIDEwKSArICIgdWdub3RcbiIKCW91dCArPSAiLSBhZG1pbiByZXNlcnZlOiAwIHVnbm90XG4iCglvdXQgKz0gIi0gY29sbGVjdGlvbnM6ICIgKyBzdHJjb252Lkl0b2EoYnlTbHVnLlNpemUoKSkgKyAiXG5cbiIKCWxpbmVzIDo9IExpc3RDb2xsZWN0aW9ucygpCglpZiBsaW5lcyA9PSAiIiB7CgkJb3V0ICs9ICJfTm8gY29sbGVjdGlvbnMuX1xuIgoJfSBlbHNlIHsKCQlvdXQgKz0gImBgYFxuIiArIGxpbmVzICsgIlxuYGBgXG4iCgl9CglyZXR1cm4gb3V0Cn0KCmZ1bmMgcmVnaXN0ZXIocGtnIHN0cmluZywgY3JlYXRvciBhZGRyZXNzLCBuYW1lLCBzeW1ib2wsIGNvdmVyIHN0cmluZywgbWF4U3VwcGx5IGludCwgbWludFByaWNlLCByb3lhbHR5QnBzIGludDY0KSB7CglpZiAhc3RyaW5ncy5IYXNQcmVmaXgocGtnLCAiZ25vLmxhbmQvci8iKSB7CgkJcGFuaWMoImZhY3Rvcnk6IHBrZyIpCgl9CglzbHVnIDo9IGxhc3RFbGVtKHBrZykKCWlmICF2YWxpZFNsdWcoc2x1ZykgewoJCXBhbmljKCJmYWN0b3J5OiBzbHVnIikKCX0KCWlmICF2YWxpZE5hbWUobmFtZSkgewoJCXBhbmljKCJmYWN0b3J5OiBuYW1lIikKCX0KCWlmICF2YWxpZFN5bWJvbChzeW1ib2wpIHsKCQlwYW5pYygiZmFjdG9yeTogc3ltYm9sIikKCX0KCWlmICF2YWxpZEltYWdlKGNvdmVyKSB7CgkJcGFuaWMoImZhY3Rvcnk6IGNvdmVyIikKCX0KCWlmIG1heFN1cHBseSA8IDAgfHwgbWF4U3VwcGx5ID4gbWF4U3VwcGx5Qm91bmQgewoJCXBhbmljKCJmYWN0b3J5OiBtYXhTdXBwbHkiKQoJfQoJaWYgbWludFByaWNlIDwgMCB7CgkJcGFuaWMoImZhY3Rvcnk6IG1pbnRQcmljZSIpCgl9CglpZiByb3lhbHR5QnBzIDwgMCB8fCByb3lhbHR5QnBzID4gbWF4Um95YWx0eUJwcyB7CgkJcGFuaWMoImZhY3Rvcnk6IHJveWFsdHkiKQoJfQoJaWYgYnlTbHVnLkhhcyhzbHVnKSB7CgkJcGFuaWMoImZhY3Rvcnk6IHNsdWcgdGFrZW4iKQoJfQoJaWYgYnlQa2cuSGFzKHBrZykgewoJCXBhbmljKCJmYWN0b3J5OiBwa2cgYWxyZWFkeSByZWdpc3RlcmVkIikKCX0KCWMgOj0gJmNvbGxlY3Rpb257CgkJc2x1ZzogICAgICAgc2x1ZywKCQluYW1lOiAgICAgICBuYW1lLAoJCXN5bWJvbDogICAgIHN5bWJvbCwKCQljb3ZlcjogICAgICBjb3ZlciwKCQlwa2c6ICAgICAgICBwa2csCgkJY3JlYXRvcjogICAgY3JlYXRvciwKCQltYXhTdXBwbHk6ICBtYXhTdXBwbHksCgkJbWludFByaWNlOiAgbWludFByaWNlLAoJCXJveWFsdHlCcHM6IGludChyb3lhbHR5QnBzKSwKCX0KCWJ5U2x1Zy5TZXQoc2x1ZywgYykKCWJ5UGtnLlNldChwa2csIGMpCgljaGFpbi5FbWl0KCJSZWdpc3RlciIsICJzbHVnIiwgc2x1ZywgInBrZyIsIHBrZywgImNyZWF0b3IiLCBjcmVhdG9yLlN0cmluZygpKQp9CgpmdW5jIHJlcXVpcmVJbml0KCkgewoJaWYgIWluaXRlZCB7CgkJcGFuaWMoImZhY3Rvcnk6IGNhbGwgSW5pdCBmaXJzdCIpCgl9Cn0KCmZ1bmMgcmVxdWlyZUFkbWluKGN1ciByZWFsbSkgewoJcmVxdWlyZUluaXQoKQoJaWYgIWN1ci5QcmV2aW91cygpLklzVXNlckNhbGwoKSB7CgkJcGFuaWMoImZhY3Rvcnk6IEVPQSBvbmx5IikKCX0KCWlmIGN1ci5QcmV2aW91cygpLkFkZHJlc3MoKSAhPSBhZG1pbiB7CgkJcGFuaWMoImZhY3Rvcnk6IG5vdCBhZG1pbiIpCgl9Cn0KCmZ1bmMgbXVzdFJlc2VydmUoc2x1ZyBzdHJpbmcpICpyZXNlcnZhdGlvbiB7Cgl2IDo9IHJlc2VydmVkLkdldChzbHVnKQoJaWYgdiA9PSBuaWwgewoJCXBhbmljKCJmYWN0b3J5OiBub3QgcmVzZXJ2ZWQiKQoJfQoJcmV0dXJuIHYuKCpyZXNlcnZhdGlvbikKfQoKZnVuYyByZXNlcnZlZFBhaWQoKSBpbnQ2NCB7Cgl2YXIgbiBpbnQ2NAoJcmVzZXJ2ZWQuSXRlcmF0ZSgiIiwgIiIsIGZ1bmMoXyBzdHJpbmcsIHZhbHVlIGFueSkgYm9vbCB7CgkJbiArPSB2YWx1ZS4oKnJlc2VydmF0aW9uKS5wYWlkCgkJcmV0dXJuIGZhbHNlCgl9KQoJcmV0dXJuIG4KfQoKZnVuYyBtdXN0QnlTbHVnKHNsdWcgc3RyaW5nKSAqY29sbGVjdGlvbiB7Cgl2IDo9IGJ5U2x1Zy5HZXQoc2x1ZykKCWlmIHYgPT0gbmlsIHsKCQlwYW5pYygiZmFjdG9yeTogdW5rbm93biBjb2xsZWN0aW9uIikKCX0KCXJldHVybiB2LigqY29sbGVjdGlvbikKfQoKZnVuYyBtdXN0QnlQa2cocGtnIHN0cmluZykgKmNvbGxlY3Rpb24gewoJdiA6PSBieVBrZy5HZXQocGtnKQoJaWYgdiA9PSBuaWwgewoJCXBhbmljKCJmYWN0b3J5OiB1bmtub3duIGNvbGxlY3Rpb24iKQoJfQoJcmV0dXJuIHYuKCpjb2xsZWN0aW9uKQp9CgpmdW5jIGxhc3RFbGVtKHBrZyBzdHJpbmcpIHN0cmluZyB7CglpIDo9IHN0cmluZ3MuTGFzdEluZGV4KHBrZywgIi8iKQoJaWYgaSA8IDAgfHwgaSsxID49IGxlbihwa2cpIHsKCQlwYW5pYygiZmFjdG9yeTogcGtnIikKCX0KCXJldHVybiBwa2dbaSsxOl0KfQoKZnVuYyB2YWxpZFNsdWcocyBzdHJpbmcpIGJvb2wgewoJaWYgbGVuKHMpIDwgbWluU2x1Z0xlbiB8fCBsZW4ocykgPiBtYXhTbHVnTGVuIHsKCQlyZXR1cm4gZmFsc2UKCX0KCWlmIHNbMF0gPCAnYScgfHwgc1swXSA+ICd6JyB7CgkJcmV0dXJuIGZhbHNlCgl9CglyZXR1cm4gYXNjaWlTZXQocywgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSIpCn0KCmZ1bmMgdmFsaWRTeW1ib2wocyBzdHJpbmcpIGJvb2wgewoJaWYgbGVuKHMpIDwgMSB8fCBsZW4ocykgPiBtYXhTeW1ib2xMZW4gewoJCXJldHVybiBmYWxzZQoJfQoJcmV0dXJuIGFzY2lpU2V0KHMsICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ekFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaMDEyMzQ1Njc4OV8tIikKfQoKZnVuYyB2YWxpZE5hbWUobmFtZSBzdHJpbmcpIGJvb2wgewoJaWYgbGVuKG5hbWUpIDwgMSB8fCBsZW4obmFtZSkgPiBtYXhOYW1lTGVuIHsKCQlyZXR1cm4gZmFsc2UKCX0KCXJldHVybiAhc3RyaW5ncy5Db250YWluc0FueShuYW1lLCAiXG5ccnwiKQp9CgpmdW5jIHZhbGlkSW1hZ2UodSBzdHJpbmcpIGJvb2wgewoJaWYgdSA9PSAiIiB7CgkJcmV0dXJuIHRydWUKCX0KCWlmIGxlbih1KSA+IG1heEltYWdlTGVuIHsKCQlyZXR1cm4gZmFsc2UKCX0KCWlmIHN0cmluZ3MuQ29udGFpbnNBbnkodSwgIiBcdFxuXHJ8PD5cIidgIikgewoJCXJldHVybiBmYWxzZQoJfQoJaWYgc3RyaW5ncy5IYXNQcmVmaXgodSwgImh0dHBzOi8vIikgfHwgc3RyaW5ncy5IYXNQcmVmaXgodSwgImh0dHA6Ly8iKSB7CgkJcmV0dXJuIHRydWUKCX0KCWNvbnN0IHByZWZpeCA9ICIvc2FtcGxlcy8iCglpZiAhc3RyaW5ncy5IYXNQcmVmaXgodSwgcHJlZml4KSB7CgkJcmV0dXJuIGZhbHNlCgl9CglyZXN0IDo9IHVbbGVuKHByZWZpeCk6XQoJaWYgcmVzdCA9PSAiIiB7CgkJcmV0dXJuIGZhbHNlCgl9CglyZXR1cm4gYXNjaWlTZXQocmVzdCwgImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS5fLSIpCn0KCmZ1bmMgYXNjaWlTZXQocywgYWxsb3dlZCBzdHJpbmcpIGJvb2wgewoJZm9yIGkgOj0gMDsgaSA8IGxlbihzKTsgaSsrIHsKCQlpZiAhc3RyaW5ncy5Db250YWluc1J1bmUoYWxsb3dlZCwgcnVuZShzW2ldKSkgewoJCQlyZXR1cm4gZmFsc2UKCQl9Cgl9CglyZXR1cm4gdHJ1ZQp9ChpqCgtnbm9tb2QudG9tbBJbbW9kdWxlID0gImduby5sYW5kL3IvZzFuNHBsNXVjNHl0NXI5Nm05dzZmbWR6bngzeDBqeWc4bDZhcmhtdC9iYXphYXIvYmF6YWFydjUiCmdubyA9ICIwLjkiCiIiChMvZ25vLk1lbVBhY2thZ2VUeXBlEgsKCU1QVXNlckFsbCINNTAwMDAwMDB1Z25vdBIUCIDKte4BEgwxMDAwMDAwdWdub3QaqAEKOgoTL3RtLlB1YktleVNlY3AyNTZrMRIjCiECMUm5DwZgnt2UhYmlCfsy/+i/HtUmmVkWJmorMAzLSZASQJ7lxI3f1IJpyfqBz+PRiav/DgwoMACHzmaqj6WR9NVSQp4rxKNHh1yqMjmFPLh0aGbXwMTen6VBanq2+gE1O4AaKGcxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxbHV1eGU=