{ "name": "TestToken", "structs": {}, "methods": [ { "name": "createApplication", "args": [ { "type": "string", "name": "name" }, { "type": "string", "name": "symbol" }, { "type": "uint256", "name": "supply" } ], "returns": { "type": "void" }, "actions": { "create": [ "NoOp" ], "call": [] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "mintInitialSupply", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Boxes cannot be written while the application is created, so the owner receives the supply in a second call.", "events": [ { "name": "arc200_Transfer", "args": [ { "type": "address", "name": "field1" }, { "type": "address", "name": "field2" }, { "type": "uint256", "name": "field3" } ] } ], "recommendations": {} }, { "name": "arc200_name", "args": [], "returns": { "type": "byte[32]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "arc200_symbol", "args": [], "returns": { "type": "byte[8]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "arc200_decimals", "args": [], "returns": { "type": "uint8" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "arc200_totalSupply", "args": [], "returns": { "type": "uint256" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "arc200_balanceOf", "args": [ { "type": "address", "name": "owner" } ], "returns": { "type": "uint256" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "arc200_allowance", "args": [ { "type": "address", "name": "owner" }, { "type": "address", "name": "spender" } ], "returns": { "type": "uint256" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "arc200_transfer", "args": [ { "type": "address", "name": "to" }, { "type": "uint256", "name": "value" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "arc200_Transfer", "args": [ { "type": "address", "name": "field1" }, { "type": "address", "name": "field2" }, { "type": "uint256", "name": "field3" } ] } ], "recommendations": {} }, { "name": "arc200_transferFrom", "args": [ { "type": "address", "name": "from_" }, { "type": "address", "name": "to" }, { "type": "uint256", "name": "value" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "arc200_Transfer", "args": [ { "type": "address", "name": "field1" }, { "type": "address", "name": "field2" }, { "type": "uint256", "name": "field3" } ] } ], "recommendations": {} }, { "name": "arc200_approve", "args": [ { "type": "address", "name": "spender" }, { "type": "uint256", "name": "value" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [ { "name": "arc200_Approval", "args": [ { "type": "address", "name": "field1" }, { "type": "address", "name": "field2" }, { "type": "uint256", "name": "field3" } ] } ], "recommendations": {} }, { "name": "owner", "args": [], "returns": { "type": "address" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "transferOwnership", "args": [ { "type": "address", "name": "newOwner" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "deposit", "args": [ { "type": "pay", "name": "payment" }, { "type": "string", "name": "note" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "deposits", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "An ARC-200 token with an owner and a payable deposit method. Fund the application account: balances are boxes.", "networks": {}, "state": { "schema": { "global": { "ints": 1, "bytes": 4 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "name": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "bmFtZQ==" }, "symbol": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "c3ltYm9s" }, "supply": { "keyType": "AVMString", "valueType": "uint256", "key": "c3VwcGx5" }, "owner_account": { "keyType": "AVMString", "valueType": "address", "key": "b3duZXJfYWNjb3VudA==" }, "deposit_total": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "ZGVwb3NpdF90b3RhbA==" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "balances": { "keyType": "address", "valueType": "uint256", "prefix": "Yg==" }, "allowances": { "keyType": "AVMBytes", "valueType": "uint256", "prefix": "YQ==" } } } }, "bareActions": { "create": [], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 572 ], "errorMessage": "allowance" }, { "pc": [ 382 ], "errorMessage": "already minted" }, { "pc": [ 757 ], "errorMessage": "balance" }, { "pc": [ 714, 729 ], "errorMessage": "check self.deposit_total exists" }, { "pc": [ 413 ], "errorMessage": "check self.name exists" }, { "pc": [ 371, 644, 664 ], "errorMessage": "check self.owner_account exists" }, { "pc": [ 387, 435 ], "errorMessage": "check self.supply exists" }, { "pc": [ 424 ], "errorMessage": "check self.symbol exists" }, { "pc": [ 301, 314, 687 ], "errorMessage": "invalid array length header" }, { "pc": [ 308, 321, 694 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 449, 471, 479, 504, 532, 540, 598, 658 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 329, 512, 548, 606 ], "errorMessage": "invalid number of bytes for arc4.uint256" }, { "pc": [ 373, 666 ], "errorMessage": "not owner" }, { "pc": [ 709 ], "errorMessage": "note" }, { "pc": [ 580, 765, 790 ], "errorMessage": "overflow" }, { "pc": [ 285 ], "errorMessage": "text too long" }, { "pc": [ 681 ], "errorMessage": "transaction type is pay" }, { "pc": [ 702 ], "errorMessage": "wrong receiver" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAzMiAxIDAgMgogICAgYnl0ZWNibG9jayAweDE1MWY3Yzc1IDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCAib3duZXJfYWNjb3VudCIgMHg2MiAic3VwcGx5IiAiZGVwb3NpdF90b3RhbCIgIm5hbWUiICJzeW1ib2wiIDB4NjEgMHgxNTFmN2M3NTgwIDB4Nzk4M2MzNWMKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5Ojc2CiAgICAvLyBzZWxmLm5hbWUgPSBCeXRlcygpCiAgICBieXRlYyA2IC8vICJuYW1lIgogICAgcHVzaGJ5dGVzIDB4CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6NzcKICAgIC8vIHNlbGYuc3ltYm9sID0gQnl0ZXMoKQogICAgYnl0ZWMgNyAvLyAic3ltYm9sIgogICAgcHVzaGJ5dGVzIDB4CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6NzgKICAgIC8vIHNlbGYuc3VwcGx5ID0gYXJjNC5VSW50MjU2KCkKICAgIGJ5dGVjIDQgLy8gInN1cHBseSIKICAgIGJ5dGVjXzEgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6NzkKICAgIC8vIHNlbGYub3duZXJfYWNjb3VudCA9IEFjY291bnQoKQogICAgYnl0ZWNfMiAvLyAib3duZXJfYWNjb3VudCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjgwCiAgICAvLyBzZWxmLmRlcG9zaXRfdG90YWwgPSBVSW50NjQoKQogICAgYnl0ZWMgNSAvLyAiZGVwb3NpdF90b3RhbCIKICAgIGludGNfMiAvLyAwCiAgICBhcHBfZ2xvYmFsX3B1dAoKbWFpbl9hZnRlcl9pZl9lbHNlQDI6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo3MgogICAgLy8gY2xhc3MgVGVzdFRva2VuKEFSQzRDb250cmFjdCk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBieiBtYWluX2NyZWF0ZV9Ob09wQDIwCiAgICBwdXNoYnl0ZXNzIDB4ODUyNTNhNmQgMHg2NTdkMTNlYyAweGI2YWUxYTI1IDB4ODRlYzEzZDUgMHhlYzk5NjA0MSAweDgyZTU3M2M0IDB4YmJiMzE5ZjMgMHhkYTcwMjViOSAweDRhOTY4ZjhmIDB4YjU0MjIxMjUgMHhiMWJiYjBhOCAweGUxN2JhZmI0IDB4NTZlNGM2YzMgMHg5M2NhNmQxNiAvLyBtZXRob2QgIm1pbnRJbml0aWFsU3VwcGx5KCl2b2lkIiwgbWV0aG9kICJhcmMyMDBfbmFtZSgpYnl0ZVszMl0iLCBtZXRob2QgImFyYzIwMF9zeW1ib2woKWJ5dGVbOF0iLCBtZXRob2QgImFyYzIwMF9kZWNpbWFscygpdWludDgiLCBtZXRob2QgImFyYzIwMF90b3RhbFN1cHBseSgpdWludDI1NiIsIG1ldGhvZCAiYXJjMjAwX2JhbGFuY2VPZihhZGRyZXNzKXVpbnQyNTYiLCBtZXRob2QgImFyYzIwMF9hbGxvd2FuY2UoYWRkcmVzcyxhZGRyZXNzKXVpbnQyNTYiLCBtZXRob2QgImFyYzIwMF90cmFuc2ZlcihhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAiYXJjMjAwX3RyYW5zZmVyRnJvbShhZGRyZXNzLGFkZHJlc3MsdWludDI1Nilib29sIiwgbWV0aG9kICJhcmMyMDBfYXBwcm92ZShhZGRyZXNzLHVpbnQyNTYpYm9vbCIsIG1ldGhvZCAib3duZXIoKWFkZHJlc3MiLCBtZXRob2QgInRyYW5zZmVyT3duZXJzaGlwKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAiZGVwb3NpdChwYXksc3RyaW5nKXZvaWQiLCBtZXRob2QgImRlcG9zaXRzKCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBtaW50SW5pdGlhbFN1cHBseSBhcmMyMDBfbmFtZSBhcmMyMDBfc3ltYm9sIG1haW5fYXJjMjAwX2RlY2ltYWxzX3JvdXRlQDggYXJjMjAwX3RvdGFsU3VwcGx5IGFyYzIwMF9iYWxhbmNlT2YgYXJjMjAwX2FsbG93YW5jZSBhcmMyMDBfdHJhbnNmZXIgYXJjMjAwX3RyYW5zZmVyRnJvbSBhcmMyMDBfYXBwcm92ZSBvd25lciB0cmFuc2Zlck93bmVyc2hpcCBkZXBvc2l0IGRlcG9zaXRzCiAgICBlcnIKCm1haW5fYXJjMjAwX2RlY2ltYWxzX3JvdXRlQDg6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwNgogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgptYWluX2NyZWF0ZV9Ob09wQDIwOgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6NzIKICAgIC8vIGNsYXNzIFRlc3RUb2tlbihBUkM0Q29udHJhY3QpOgogICAgcHVzaGJ5dGVzIDB4MDVlMTYzYTkgLy8gbWV0aG9kICJjcmVhdGVBcHBsaWNhdGlvbihzdHJpbmcsc3RyaW5nLHVpbnQyNTYpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGNyZWF0ZUFwcGxpY2F0aW9uCiAgICBlcnIKCgovLyB0ZXN0X2NvbnRyYWN0cy5wYWRkZWQodGV4dDogYnl0ZXMsIHNpemU6IHVpbnQ2NCkgLT4gYnl0ZXM6CnBhZGRlZDoKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjI2LTI3CiAgICAvLyBAc3Vicm91dGluZQogICAgLy8gZGVmIHBhZGRlZCh0ZXh0OiBTdHJpbmcsIHNpemU6IFVJbnQ2NCkgLT4gQnl0ZXM6CiAgICBwcm90byAyIDEKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjI5CiAgICAvLyBhc3NlcnQgdGV4dC5ieXRlcy5sZW5ndGggPD0gc2l6ZSwgInRleHQgdG9vIGxvbmciCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgZHVwCiAgICBmcmFtZV9kaWcgLTEKICAgIDw9CiAgICBhc3NlcnQgLy8gdGV4dCB0b28gbG9uZwogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MzAKICAgIC8vIHJldHVybiB0ZXh0LmJ5dGVzICsgb3AuYnplcm8oc2l6ZSAtIHRleHQuYnl0ZXMubGVuZ3RoKQogICAgZnJhbWVfZGlnIC0xCiAgICBzd2FwCiAgICAtCiAgICBiemVybwogICAgZnJhbWVfZGlnIC0yCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHJldHN1YgoKCi8vIHRlc3RfY29udHJhY3RzLlRlc3RUb2tlbi5jcmVhdGVBcHBsaWNhdGlvbltyb3V0aW5nXSgpIC0+IHZvaWQ6CmNyZWF0ZUFwcGxpY2F0aW9uOgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6ODQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChjcmVhdGU9InJlcXVpcmUiKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50MjU2CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo4NgogICAgLy8gc2VsZi5uYW1lID0gcGFkZGVkKG5hbWUubmF0aXZlLCBVSW50NjQoMzIpKQogICAgdW5jb3ZlciAyCiAgICBleHRyYWN0IDIgMAogICAgaW50Y18wIC8vIDMyCiAgICBjYWxsc3ViIHBhZGRlZAogICAgYnl0ZWMgNiAvLyAibmFtZSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo4NwogICAgLy8gc2VsZi5zeW1ib2wgPSBwYWRkZWQoc3ltYm9sLm5hdGl2ZSwgVUludDY0KDgpKQogICAgc3dhcAogICAgZXh0cmFjdCAyIDAKICAgIHB1c2hpbnQgOAogICAgY2FsbHN1YiBwYWRkZWQKICAgIGJ5dGVjIDcgLy8gInN5bWJvbCIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo4OAogICAgLy8gc2VsZi5zdXBwbHkgPSBzdXBwbHkKICAgIGJ5dGVjIDQgLy8gInN1cHBseSIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo4OQogICAgLy8gc2VsZi5vd25lcl9hY2NvdW50ID0gVHhuLnNlbmRlcgogICAgYnl0ZWNfMiAvLyAib3duZXJfYWNjb3VudCIKICAgIHR4biBTZW5kZXIKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo4NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGNyZWF0ZT0icmVxdWlyZSIpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jb250cmFjdHMuVGVzdFRva2VuLm1pbnRJbml0aWFsU3VwcGx5W3JvdXRpbmddKCkgLT4gdm9pZDoKbWludEluaXRpYWxTdXBwbHk6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo5NAogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgPT0gc2VsZi5vd25lcl9hY2NvdW50LCAibm90IG93bmVyIgogICAgdHhuIFNlbmRlcgogICAgaW50Y18yIC8vIDAKICAgIGJ5dGVjXzIgLy8gIm93bmVyX2FjY291bnQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYub3duZXJfYWNjb3VudCBleGlzdHMKICAgID09CiAgICBhc3NlcnQgLy8gbm90IG93bmVyCiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTo5NQogICAgLy8gYXNzZXJ0IFR4bi5zZW5kZXIgbm90IGluIHNlbGYuYmFsYW5jZXMsICJhbHJlYWR5IG1pbnRlZCIKICAgIGJ5dGVjXzMgLy8gMHg2MgogICAgdHhuIFNlbmRlcgogICAgY29uY2F0CiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgICEKICAgIGFzc2VydCAvLyBhbHJlYWR5IG1pbnRlZAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6OTYKICAgIC8vIHN1cHBseSA9IHNlbGYuc3VwcGx5CiAgICBpbnRjXzIgLy8gMAogICAgYnl0ZWMgNCAvLyAic3VwcGx5IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnN1cHBseSBleGlzdHMKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5Ojk3CiAgICAvLyBzZWxmLmJhbGFuY2VzW1R4bi5zZW5kZXJdID0gc3VwcGx5CiAgICBieXRlY18zIC8vIDB4NjIKICAgIHR4biBTZW5kZXIKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGJveF9wdXQKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5Ojk4CiAgICAvLyBhcmM0LmVtaXQoImFyYzIwMF9UcmFuc2ZlcihhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiLCBhcmM0LkFkZHJlc3MoR2xvYmFsLnplcm9fYWRkcmVzcyksIGFyYzQuQWRkcmVzcyhUeG4uc2VuZGVyKSwgc3VwcGx5KQogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICB0eG4gU2VuZGVyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYnl0ZWMgMTAgLy8gbWV0aG9kICJhcmMyMDBfVHJhbnNmZXIoYWRkcmVzcyxhZGRyZXNzLHVpbnQyNTYpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uYXJjMjAwX25hbWVbcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfbmFtZToKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjEwMgogICAgLy8gcmV0dXJuIEJ5dGVzMzIuZnJvbV9ieXRlcyhzZWxmLm5hbWUpCiAgICBpbnRjXzIgLy8gMAogICAgYnl0ZWMgNiAvLyAibmFtZSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5uYW1lIGV4aXN0cwogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTAwCiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uYXJjMjAwX3N5bWJvbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzIwMF9zeW1ib2w6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMDYKICAgIC8vIHJldHVybiBCeXRlczguZnJvbV9ieXRlcyhzZWxmLnN5bWJvbCkKICAgIGludGNfMiAvLyAwCiAgICBieXRlYyA3IC8vICJzeW1ib2wiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuc3ltYm9sIGV4aXN0cwogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTA0CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uYXJjMjAwX3RvdGFsU3VwcGx5W3JvdXRpbmddKCkgLT4gdm9pZDoKYXJjMjAwX3RvdGFsU3VwcGx5OgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTE0CiAgICAvLyByZXR1cm4gc2VsZi5zdXBwbHkKICAgIGludGNfMiAvLyAwCiAgICBieXRlYyA0IC8vICJzdXBwbHkiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuc3VwcGx5IGV4aXN0cwogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTEyCiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uYXJjMjAwX2JhbGFuY2VPZltyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzIwMF9iYWxhbmNlT2Y6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMTYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMTgKICAgIC8vIHJldHVybiBzZWxmLmJhbGFuY2VzLmdldChvd25lci5uYXRpdmUsIGRlZmF1bHQ9YXJjNC5VSW50MjU2KDApKQogICAgYnl0ZWNfMyAvLyAweDYyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGJveF9nZXQKICAgIGJ5dGVjXzEgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBjb3ZlciAyCiAgICBzZWxlY3QKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjExNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jb250cmFjdHMuVGVzdFRva2VuLmFyYzIwMF9hbGxvd2FuY2Vbcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfYWxsb3dhbmNlOgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTIwCiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTozNgogICAgLy8gcmV0dXJuIG9wLnNoYTI1NihmaXJzdC5ieXRlcyArIHNlY29uZC5ieXRlcykKICAgIGNvbmNhdAogICAgc2hhMjU2CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMjIKICAgIC8vIHJldHVybiBzZWxmLmFsbG93YW5jZXMuZ2V0KHBhaXJfa2V5KG93bmVyLm5hdGl2ZSwgc3BlbmRlci5uYXRpdmUpLCBkZWZhdWx0PWFyYzQuVUludDI1NigwKSkKICAgIGJ5dGVjIDggLy8gMHg2MQogICAgc3dhcAogICAgY29uY2F0CiAgICBib3hfZ2V0CiAgICBieXRlY18xIC8vIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgY292ZXIgMgogICAgc2VsZWN0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMjAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY29udHJhY3RzLlRlc3RUb2tlbi5hcmMyMDBfdHJhbnNmZXJbcm91dGluZ10oKSAtPiB2b2lkOgphcmMyMDBfdHJhbnNmZXI6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMjQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQyNTYKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjEyNgogICAgLy8gc2VsZi5fbW92ZShUeG4uc2VuZGVyLCB0by5uYXRpdmUsIHZhbHVlKQogICAgdHhuIFNlbmRlcgogICAgY292ZXIgMgogICAgY2FsbHN1YiBfbW92ZQogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTI0CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGJ5dGVjIDkgLy8gMHgxNTFmN2M3NTgwCiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uYXJjMjAwX3RyYW5zZmVyRnJvbVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzIwMF90cmFuc2ZlckZyb206CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDI1NgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MzYKICAgIC8vIHJldHVybiBvcC5zaGEyNTYoZmlyc3QuYnl0ZXMgKyBzZWNvbmQuYnl0ZXMpCiAgICBkaWcgMgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTMxCiAgICAvLyBrZXkgPSBwYWlyX2tleShmcm9tXy5uYXRpdmUsIFR4bi5zZW5kZXIpCiAgICB0eG4gU2VuZGVyCiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weTozNgogICAgLy8gcmV0dXJuIG9wLnNoYTI1NihmaXJzdC5ieXRlcyArIHNlY29uZC5ieXRlcykKICAgIGNvbmNhdAogICAgc2hhMjU2CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMzIKICAgIC8vIGFsbG93ZWQgPSBzZWxmLmFsbG93YW5jZXMuZ2V0KGtleSwgZGVmYXVsdD1hcmM0LlVJbnQyNTYoMCkpCiAgICBieXRlYyA4IC8vIDB4NjEKICAgIHN3YXAKICAgIGNvbmNhdAogICAgaW50Y18wIC8vIDMyCiAgICBiemVybwogICAgZGlnIDEKICAgIGJveF9nZXQKICAgIGJ5dGVjXzEgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBjb3ZlciAyCiAgICBzZWxlY3QKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjEzMwogICAgLy8gYXNzZXJ0IGFsbG93ZWQubmF0aXZlID49IHZhbHVlLm5hdGl2ZSwgImFsbG93YW5jZSIKICAgIGR1cAogICAgZGlnIDQKICAgIGI+PQogICAgYXNzZXJ0IC8vIGFsbG93YW5jZQogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTM0CiAgICAvLyBzZWxmLmFsbG93YW5jZXNba2V5XSA9IGFyYzQuVUludDI1NihhbGxvd2VkLm5hdGl2ZSAtIHZhbHVlLm5hdGl2ZSkKICAgIGRpZyAzCiAgICBiLQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPD0KICAgIGFzc2VydCAvLyBvdmVyZmxvdwogICAgYnwKICAgIGJveF9wdXQKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjEzNQogICAgLy8gc2VsZi5fbW92ZShmcm9tXy5uYXRpdmUsIHRvLm5hdGl2ZSwgdmFsdWUpCiAgICBjYWxsc3ViIF9tb3ZlCiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWMgOSAvLyAweDE1MWY3Yzc1ODAKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY29udHJhY3RzLlRlc3RUb2tlbi5hcmMyMDBfYXBwcm92ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzIwMF9hcHByb3ZlOgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTM4CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50MjU2CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNDAKICAgIC8vIHNlbGYuYWxsb3dhbmNlc1twYWlyX2tleShUeG4uc2VuZGVyLCBzcGVuZGVyLm5hdGl2ZSldID0gdmFsdWUKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjM2CiAgICAvLyByZXR1cm4gb3Auc2hhMjU2KGZpcnN0LmJ5dGVzICsgc2Vjb25kLmJ5dGVzKQogICAgZGlnIDIKICAgIGNvbmNhdAogICAgc2hhMjU2CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNDAKICAgIC8vIHNlbGYuYWxsb3dhbmNlc1twYWlyX2tleShUeG4uc2VuZGVyLCBzcGVuZGVyLm5hdGl2ZSldID0gdmFsdWUKICAgIGJ5dGVjIDggLy8gMHg2MQogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMQogICAgYm94X3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTQxCiAgICAvLyBhcmM0LmVtaXQoImFyYzIwMF9BcHByb3ZhbChhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiLCBhcmM0LkFkZHJlc3MoVHhuLnNlbmRlciksIHNwZW5kZXIsIHZhbHVlKQogICAgdHhuIFNlbmRlcgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgcHVzaGJ5dGVzIDB4MTk2OWY4NjUgLy8gbWV0aG9kICJhcmMyMDBfQXBwcm92YWwoYWRkcmVzcyxhZGRyZXNzLHVpbnQyNTYpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjEzOAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBieXRlYyA5IC8vIDB4MTUxZjdjNzU4MAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jb250cmFjdHMuVGVzdFRva2VuLm93bmVyW3JvdXRpbmddKCkgLT4gdm9pZDoKb3duZXI6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNDYKICAgIC8vIHJldHVybiBhcmM0LkFkZHJlc3Moc2VsZi5vd25lcl9hY2NvdW50KQogICAgaW50Y18yIC8vIDAKICAgIGJ5dGVjXzIgLy8gIm93bmVyX2FjY291bnQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYub3duZXJfYWNjb3VudCBleGlzdHMKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjE0NAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jb250cmFjdHMuVGVzdFRva2VuLnRyYW5zZmVyT3duZXJzaGlwW3JvdXRpbmddKCkgLT4gdm9pZDoKdHJhbnNmZXJPd25lcnNoaXA6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNDgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNTAKICAgIC8vIGFzc2VydCBUeG4uc2VuZGVyID09IHNlbGYub3duZXJfYWNjb3VudCwgIm5vdCBvd25lciIKICAgIHR4biBTZW5kZXIKICAgIGludGNfMiAvLyAwCiAgICBieXRlY18yIC8vICJvd25lcl9hY2NvdW50IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLm93bmVyX2FjY291bnQgZXhpc3RzCiAgICA9PQogICAgYXNzZXJ0IC8vIG5vdCBvd25lcgogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTUxCiAgICAvLyBzZWxmLm93bmVyX2FjY291bnQgPSBuZXdPd25lci5uYXRpdmUKICAgIGJ5dGVjXzIgLy8gIm93bmVyX2FjY291bnQiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTQ4CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uZGVwb3NpdFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmRlcG9zaXQ6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNTMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMSAvLyAxCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzEgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNTUKICAgIC8vIGFzc2VydCBwYXltZW50LnJlY2VpdmVyID09IEdsb2JhbC5jdXJyZW50X2FwcGxpY2F0aW9uX2FkZHJlc3MsICJ3cm9uZyByZWNlaXZlciIKICAgIGRpZyAxCiAgICBndHhucyBSZWNlaXZlcgogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gd3JvbmcgcmVjZWl2ZXIKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjE1NgogICAgLy8gYXNzZXJ0IG5vdGUubmF0aXZlICE9ICIiLCAibm90ZSIKICAgIGV4dHJhY3QgMiAwCiAgICBwdXNoYnl0ZXMgIiIKICAgICE9CiAgICBhc3NlcnQgLy8gbm90ZQogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTU3CiAgICAvLyBzZWxmLmRlcG9zaXRfdG90YWwgKz0gcGF5bWVudC5hbW91bnQKICAgIGludGNfMiAvLyAwCiAgICBieXRlYyA1IC8vICJkZXBvc2l0X3RvdGFsIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmRlcG9zaXRfdG90YWwgZXhpc3RzCiAgICBzd2FwCiAgICBndHhucyBBbW91bnQKICAgICsKICAgIGJ5dGVjIDUgLy8gImRlcG9zaXRfdG90YWwiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTUzCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2NvbnRyYWN0cy5UZXN0VG9rZW4uZGVwb3NpdHNbcm91dGluZ10oKSAtPiB2b2lkOgpkZXBvc2l0czoKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjE2MQogICAgLy8gcmV0dXJuIGFyYzQuVUludDY0KHNlbGYuZGVwb3NpdF90b3RhbCkKICAgIGludGNfMiAvLyAwCiAgICBieXRlYyA1IC8vICJkZXBvc2l0X3RvdGFsIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmRlcG9zaXRfdG90YWwgZXhpc3RzCiAgICBpdG9iCiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY29udHJhY3RzLlRlc3RUb2tlbi5fbW92ZShzZW5kZXI6IGJ5dGVzLCByZWNlaXZlcjogYnl0ZXMsIHZhbHVlOiBieXRlcykgLT4gdm9pZDoKX21vdmU6CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNjMtMTY0CiAgICAvLyBAc3Vicm91dGluZQogICAgLy8gZGVmIF9tb3ZlKHNlbGYsIHNlbmRlcjogQWNjb3VudCwgcmVjZWl2ZXI6IEFjY291bnQsIHZhbHVlOiBhcmM0LlVJbnQyNTYpIC0+IE5vbmU6CiAgICBwcm90byAzIDAKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjE2NQogICAgLy8gYmFsYW5jZSA9IHNlbGYuYmFsYW5jZXMuZ2V0KHNlbmRlciwgZGVmYXVsdD1hcmM0LlVJbnQyNTYoMCkpCiAgICBieXRlY18zIC8vIDB4NjIKICAgIGZyYW1lX2RpZyAtMwogICAgY29uY2F0CiAgICBpbnRjXzAgLy8gMzIKICAgIGJ6ZXJvCiAgICBkaWcgMQogICAgYm94X2dldAogICAgYnl0ZWNfMSAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIGNvdmVyIDIKICAgIHNlbGVjdAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTY2CiAgICAvLyBhc3NlcnQgYmFsYW5jZS5uYXRpdmUgPj0gdmFsdWUubmF0aXZlLCAiYmFsYW5jZSIKICAgIGR1cAogICAgZnJhbWVfZGlnIC0xCiAgICBiPj0KICAgIGFzc2VydCAvLyBiYWxhbmNlCiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNjcKICAgIC8vIHNlbGYuYmFsYW5jZXNbc2VuZGVyXSA9IGFyYzQuVUludDI1NihiYWxhbmNlLm5hdGl2ZSAtIHZhbHVlLm5hdGl2ZSkKICAgIGZyYW1lX2RpZyAtMQogICAgYi0KICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMzIKICAgIDw9CiAgICBhc3NlcnQgLy8gb3ZlcmZsb3cKICAgIGRpZyAxCiAgICBifAogICAgdW5jb3ZlciAyCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNjgKICAgIC8vIHJlY2VpdmVkID0gc2VsZi5iYWxhbmNlcy5nZXQocmVjZWl2ZXIsIGRlZmF1bHQ9YXJjNC5VSW50MjU2KDApKQogICAgYnl0ZWNfMyAvLyAweDYyCiAgICBmcmFtZV9kaWcgLTIKICAgIGNvbmNhdAogICAgZHVwCiAgICBib3hfZ2V0CiAgICAvLyB0ZXN0X2NvbnRyYWN0cy5weToxNjUKICAgIC8vIGJhbGFuY2UgPSBzZWxmLmJhbGFuY2VzLmdldChzZW5kZXIsIGRlZmF1bHQ9YXJjNC5VSW50MjU2KDApKQogICAgYnl0ZWNfMSAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjE2OAogICAgLy8gcmVjZWl2ZWQgPSBzZWxmLmJhbGFuY2VzLmdldChyZWNlaXZlciwgZGVmYXVsdD1hcmM0LlVJbnQyNTYoMCkpCiAgICBjb3ZlciAyCiAgICBzZWxlY3QKICAgIC8vIHRlc3RfY29udHJhY3RzLnB5OjE2OQogICAgLy8gc2VsZi5iYWxhbmNlc1tyZWNlaXZlcl0gPSBhcmM0LlVJbnQyNTYocmVjZWl2ZWQubmF0aXZlICsgdmFsdWUubmF0aXZlKQogICAgZnJhbWVfZGlnIC0xCiAgICBiKwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyAzMgogICAgPD0KICAgIGFzc2VydCAvLyBvdmVyZmxvdwogICAgdW5jb3ZlciAyCiAgICBifAogICAgYm94X3B1dAogICAgLy8gdGVzdF9jb250cmFjdHMucHk6MTcwCiAgICAvLyBhcmM0LmVtaXQoImFyYzIwMF9UcmFuc2ZlcihhZGRyZXNzLGFkZHJlc3MsdWludDI1NikiLCBhcmM0LkFkZHJlc3Moc2VuZGVyKSwgYXJjNC5BZGRyZXNzKHJlY2VpdmVyKSwgdmFsdWUpCiAgICBmcmFtZV9kaWcgLTMKICAgIGZyYW1lX2RpZyAtMgogICAgY29uY2F0CiAgICBmcmFtZV9kaWcgLTEKICAgIGNvbmNhdAogICAgYnl0ZWMgMTAgLy8gbWV0aG9kICJhcmMyMDBfVHJhbnNmZXIoYWRkcmVzcyxhZGRyZXNzLHVpbnQyNTYpIgogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEIAEAAiYLBBUffHUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANb3duZXJfYWNjb3VudAFiBnN1cHBseQ1kZXBvc2l0X3RvdGFsBG5hbWUGc3ltYm9sAWEFFR98dYAEeYPDXDEYQAAWJwaAAGcnB4AAZycEKWcqMgNnJwUkZzEZFEQxGEEAdIIOBIUlOm0EZX0T7AS2rholBITsE9UE7JlgQQSC5XPEBLuzGfME2nAluQRKlo+PBLVCISUEsbuwqAThe6+0BFbkxsMEk8ptFjYaAI4OAHQAnwCqAAEAtQDAANYA9wETAVUBhwGRAaYB2wCABRUffHUGsCNDgAQF4WOpNhoAjgEAFgCKAgGL/hVJi/8ORIv/TAmvi/5MUIk2GgFJJFklCEsBFRJENhoCSSRZJQhLARUSRDYaA0kVIhJETwJXAgAiiP/AJwZMZ0xXAgCBCIj/sycHTGcnBExnKjEAZyNDMQAkKmVEEkQrMQBQvUUBFEQkJwRlRCsxAFBLAb8yAzEAUExQJwpMULAjQyQnBmVEKExQsCNDJCcHZUQoTFCwI0MkJwRlRChMULAjQzYaAUkVIhJEK0xQvilOAk0oTFCwI0M2GgFJFSISRDYaAkkVIhJEUAEnCExQvilOAk0oTFCwI0M2GgFJFSISRDYaAkkVIhJEMQBOAogA2ScJsCNDNhoBSRUiEkQ2GgJJFSISRDYaA0kVIhJESwIxAFABJwhMUCKvSwG+KU4CTUlLBKdESwOhSRUiDkSrv4gAlycJsCNDNhoBSRUiEkQ2GgJJFSISRDEASwJQAScITFBLAb8xAE8CUExQgAQZafhlTFCwJwmwI0MkKmVEKExQsCNDNhoBSRUiEkQxACQqZUQSRCpMZyNDMRYjCUk4ECMSRDYaAUkkWSUISwEVEkRLATgHMgoSRFcCAIAAE0QkJwVlREw4CAgnBUxnI0MkJwVlRBYoTFCwI0OKAwAri/1QIq9LAb4pTgJNSYv/p0SL/6FJFSIOREsBq08CTL8ri/5QSb4pTgJNi/+gSRUiDkRPAqu/i/2L/lCL/1AnCkxQsIk=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 1 } }, "events": [ { "name": "arc200_Transfer", "args": [ { "type": "address", "name": "field1" }, { "type": "address", "name": "field2" }, { "type": "uint256", "name": "field3" } ] }, { "name": "arc200_Approval", "args": [ { "type": "address", "name": "field1" }, { "type": "address", "name": "field2" }, { "type": "uint256", "name": "field3" } ] } ], "templateVariables": {} }