{ "name": "SimProbe", "structs": {}, "methods": [ { "name": "configure", "args": [ { "type": "uint64", "name": "keeper_app" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Name the keeper app `keeper_only` will check the sender against.", "events": [], "recommendations": {} }, { "name": "configure_subjects", "args": [ { "type": "address", "name": "s0" }, { "type": "address", "name": "s1" }, { "type": "address", "name": "s2" }, { "type": "address", "name": "s3" }, { "type": "address", "name": "s4" }, { "type": "address", "name": "s5" }, { "type": "address", "name": "s6" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Name the seven accounts `needs_six`/`needs_seven` reach for.", "events": [], "recommendations": {} }, { "name": "works", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "No requirements at all. Should pass everywhere, always.", "events": [], "recommendations": {} }, { "name": "keeper_only", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Passes only when the caller is the keeper app's own account.", "events": [], "recommendations": {} }, { "name": "always_reverts", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Fails unconditionally, on every path, every time.", "events": [], "recommendations": {} }, { "name": "needs_six", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Reads six accounts named nowhere in the call. Fits Arcron's budget.", "events": [], "recommendations": {} }, { "name": "needs_seven", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Reads seven accounts. Does not fit what Arcron leaves a target.", "events": [], "recommendations": {} }, { "name": "burns_budget", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Does a fixed, large number of costly ops -- deliberately more than\nthe ~1,250 a target gets when called through a real Arcron execution (`docs/integrating.md`), so it fails everywhere a real chain would run it. Exists to check whether a simulated call can be handed a budget no real execution will ever grant it (`extra_opcode_budget`).", "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "A target whose every method exists to be simulated and then really run.", "networks": {}, "state": { "schema": { "global": { "ints": 2, "bytes": 7 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": { "keeper_app": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "a2VlcGVyX2FwcA==" }, "calls": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "Y2FsbHM=" }, "s0": { "keyType": "AVMString", "valueType": "address", "key": "czA=" }, "s1": { "keyType": "AVMString", "valueType": "address", "key": "czE=" }, "s2": { "keyType": "AVMString", "valueType": "address", "key": "czI=" }, "s3": { "keyType": "AVMString", "valueType": "address", "key": "czM=" }, "s4": { "keyType": "AVMString", "valueType": "address", "key": "czQ=" }, "s5": { "keyType": "AVMString", "valueType": "address", "key": "czU=" }, "s6": { "keyType": "AVMString", "valueType": "address", "key": "czY=" } }, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 315 ], "errorMessage": "Only the keeper app" }, { "pc": [ 339, 346, 355, 364, 373, 382, 406, 413, 422, 431, 440, 449, 458 ], "errorMessage": "account funded" }, { "pc": [ 313 ], "errorMessage": "application exists" }, { "pc": [ 290, 319, 387, 463, 502 ], "errorMessage": "check self.calls exists" }, { "pc": [ 310 ], "errorMessage": "check self.keeper_app exists" }, { "pc": [ 336, 403 ], "errorMessage": "check self.s0 exists" }, { "pc": [ 343, 410 ], "errorMessage": "check self.s1 exists" }, { "pc": [ 352, 419 ], "errorMessage": "check self.s2 exists" }, { "pc": [ 361, 428 ], "errorMessage": "check self.s3 exists" }, { "pc": [ 370, 437 ], "errorMessage": "check self.s4 exists" }, { "pc": [ 379, 446 ], "errorMessage": "check self.s5 exists" }, { "pc": [ 455 ], "errorMessage": "check self.s6 exists" }, { "pc": [ 172 ], "errorMessage": "deliberate revert" }, { "pc": [ 204, 212, 220, 228, 236, 244, 252 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 189 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 513 ], "errorMessage": "unreachable, keeps digest live" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDEgMzIKICAgIGJ5dGVjYmxvY2sgImNhbGxzIiAweDE1MWY3Yzc1ICJzMCIgInMxIiAiczIiICJzMyIgInM0IiAiczUiICJrZWVwZXJfYXBwIiAiczYiCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYm56IG1haW5fYWZ0ZXJfaWZfZWxzZUAyCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjUxCiAgICAvLyBzZWxmLmtlZXBlcl9hcHAgPSBHbG9iYWxTdGF0ZShVSW50NjQoMCkpCiAgICBieXRlYyA4IC8vICJrZWVwZXJfYXBwIgogICAgaW50Y18wIC8vIDAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjUyCiAgICAvLyBzZWxmLmNhbGxzID0gR2xvYmFsU3RhdGUoVUludDY0KDApKQogICAgYnl0ZWNfMCAvLyAiY2FsbHMiCiAgICBpbnRjXzAgLy8gMAogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTMKICAgIC8vIHNlbGYuczAgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlY18yIC8vICJzMCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTQKICAgIC8vIHNlbGYuczEgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlY18zIC8vICJzMSIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTUKICAgIC8vIHNlbGYuczIgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlYyA0IC8vICJzMiIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTYKICAgIC8vIHNlbGYuczMgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlYyA1IC8vICJzMyIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTcKICAgIC8vIHNlbGYuczQgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlYyA2IC8vICJzNCIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTgKICAgIC8vIHNlbGYuczUgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlYyA3IC8vICJzNSIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NTkKICAgIC8vIHNlbGYuczYgPSBHbG9iYWxTdGF0ZShBY2NvdW50KCkpCiAgICBieXRlYyA5IC8vICJzNiIKICAgIGdsb2JhbCBaZXJvQWRkcmVzcwogICAgYXBwX2dsb2JhbF9wdXQKCm1haW5fYWZ0ZXJfaWZfZWxzZUAyOgogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo0NwogICAgLy8gY2xhc3MgU2ltUHJvYmUoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE3CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHg2NzE1NDNmOSAweGNkMWEzODEzIDB4MWUwZmE0YTQgMHhkNmZmYzk3ZSAweDUxMmI3MzY2IDB4MzJiNGJhNTggMHhkZDUxYjU4OSAweDQ2Y2NmY2UyIC8vIG1ldGhvZCAiY29uZmlndXJlKHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJjb25maWd1cmVfc3ViamVjdHMoYWRkcmVzcyxhZGRyZXNzLGFkZHJlc3MsYWRkcmVzcyxhZGRyZXNzLGFkZHJlc3MsYWRkcmVzcyl2b2lkIiwgbWV0aG9kICJ3b3JrcygpdWludDY0IiwgbWV0aG9kICJrZWVwZXJfb25seSgpdWludDY0IiwgbWV0aG9kICJhbHdheXNfcmV2ZXJ0cygpdWludDY0IiwgbWV0aG9kICJuZWVkc19zaXgoKXVpbnQ2NCIsIG1ldGhvZCAibmVlZHNfc2V2ZW4oKXVpbnQ2NCIsIG1ldGhvZCAiYnVybnNfYnVkZ2V0KCl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBjb25maWd1cmUgY29uZmlndXJlX3N1YmplY3RzIHdvcmtzIGtlZXBlcl9vbmx5IG1haW5fYWx3YXlzX3JldmVydHNfcm91dGVAMTAgbmVlZHNfc2l4IG5lZWRzX3NldmVuIGJ1cm5zX2J1ZGdldAogICAgZXJyCgptYWluX2Fsd2F5c19yZXZlcnRzX3JvdXRlQDEwOgogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxMDQKICAgIC8vIGFzc2VydCBGYWxzZSwgImRlbGliZXJhdGUgcmV2ZXJ0IgogICAgZXJyIC8vIGRlbGliZXJhdGUgcmV2ZXJ0CgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE3OgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuc2ltX3Byb2JlLmNvbnRyYWN0LlNpbVByb2JlLmNvbmZpZ3VyZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmNvbmZpZ3VyZToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NjEKICAgIC8vIEBhYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIHB1c2hpbnQgOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6NjQKICAgIC8vIHNlbGYua2VlcGVyX2FwcC52YWx1ZSA9IGtlZXBlcl9hcHAKICAgIGJ5dGVjIDggLy8gImtlZXBlcl9hcHAiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo2MQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnNpbV9wcm9iZS5jb250cmFjdC5TaW1Qcm9iZS5jb25maWd1cmVfc3ViamVjdHNbcm91dGluZ10oKSAtPiB2b2lkOgpjb25maWd1cmVfc3ViamVjdHM6CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjY2CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMiAvLyAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDcKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuc3RhdGljX2FycmF5PGFyYzQudWludDgsIDMyPgogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo3OAogICAgLy8gc2VsZi5zMC52YWx1ZSA9IHMwLm5hdGl2ZQogICAgYnl0ZWNfMiAvLyAiczAiCiAgICB1bmNvdmVyIDcKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5Ojc5CiAgICAvLyBzZWxmLnMxLnZhbHVlID0gczEubmF0aXZlCiAgICBieXRlY18zIC8vICJzMSIKICAgIHVuY292ZXIgNgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6ODAKICAgIC8vIHNlbGYuczIudmFsdWUgPSBzMi5uYXRpdmUKICAgIGJ5dGVjIDQgLy8gInMyIgogICAgdW5jb3ZlciA1CiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo4MQogICAgLy8gc2VsZi5zMy52YWx1ZSA9IHMzLm5hdGl2ZQogICAgYnl0ZWMgNSAvLyAiczMiCiAgICB1bmNvdmVyIDQKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjgyCiAgICAvLyBzZWxmLnM0LnZhbHVlID0gczQubmF0aXZlCiAgICBieXRlYyA2IC8vICJzNCIKICAgIHVuY292ZXIgMwogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6ODMKICAgIC8vIHNlbGYuczUudmFsdWUgPSBzNS5uYXRpdmUKICAgIGJ5dGVjIDcgLy8gInM1IgogICAgdW5jb3ZlciAyCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo4NAogICAgLy8gc2VsZi5zNi52YWx1ZSA9IHM2Lm5hdGl2ZQogICAgYnl0ZWMgOSAvLyAiczYiCiAgICBzd2FwCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo2NgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnNpbV9wcm9iZS5jb250cmFjdC5TaW1Qcm9iZS53b3Jrc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CndvcmtzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weTo4OQogICAgLy8gc2VsZi5jYWxscy52YWx1ZSArPSAxCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMCAvLyAiY2FsbHMiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuY2FsbHMgZXhpc3RzCiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYnl0ZWNfMCAvLyAiY2FsbHMiCiAgICBkaWcgMQogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6ODYKICAgIC8vIEBhYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18xIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5zaW1fcHJvYmUuY29udHJhY3QuU2ltUHJvYmUua2VlcGVyX29ubHlbcm91dGluZ10oKSAtPiB2b2lkOgprZWVwZXJfb25seToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6OTYKICAgIC8vIFR4bi5zZW5kZXIgPT0gQXBwbGljYXRpb24oc2VsZi5rZWVwZXJfYXBwLnZhbHVlKS5hZGRyZXNzCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgOCAvLyAia2VlcGVyX2FwcCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5rZWVwZXJfYXBwIGV4aXN0cwogICAgYXBwX3BhcmFtc19nZXQgQXBwQWRkcmVzcwogICAgYXNzZXJ0IC8vIGFwcGxpY2F0aW9uIGV4aXN0cwogICAgPT0KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6OTUtOTcKICAgIC8vIGFzc2VydCAoCiAgICAvLyAgICAgVHhuLnNlbmRlciA9PSBBcHBsaWNhdGlvbihzZWxmLmtlZXBlcl9hcHAudmFsdWUpLmFkZHJlc3MKICAgIC8vICksICJPbmx5IHRoZSBrZWVwZXIgYXBwIgogICAgYXNzZXJ0IC8vIE9ubHkgdGhlIGtlZXBlciBhcHAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6OTgKICAgIC8vIHNlbGYuY2FsbHMudmFsdWUgKz0gMQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzAgLy8gImNhbGxzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmNhbGxzIGV4aXN0cwogICAgaW50Y18xIC8vIDEKICAgICsKICAgIGJ5dGVjXzAgLy8gImNhbGxzIgogICAgZGlnIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjkyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGl0b2IKICAgIGJ5dGVjXzEgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMSAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMuc2ltX3Byb2JlLmNvbnRyYWN0LlNpbVByb2JlLm5lZWRzX3NpeFtyb3V0aW5nXSgpIC0+IHZvaWQ6Cm5lZWRzX3NpeDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTEwCiAgICAvLyB0b3RhbCArPSBzZWxmLnMwLnZhbHVlLmJhbGFuY2UKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18yIC8vICJzMCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zMCBleGlzdHMKICAgIGFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgZnVuZGVkCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjExMQogICAgLy8gdG90YWwgKz0gc2VsZi5zMS52YWx1ZS5iYWxhbmNlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWNfMyAvLyAiczEiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuczEgZXhpc3RzCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxMTIKICAgIC8vIHRvdGFsICs9IHNlbGYuczIudmFsdWUuYmFsYW5jZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDQgLy8gInMyIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnMyIGV4aXN0cwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgICsKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTEzCiAgICAvLyB0b3RhbCArPSBzZWxmLnMzLnZhbHVlLmJhbGFuY2UKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA1IC8vICJzMyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zMyBleGlzdHMKICAgIGFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgZnVuZGVkCiAgICArCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjExNAogICAgLy8gdG90YWwgKz0gc2VsZi5zNC52YWx1ZS5iYWxhbmNlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNiAvLyAiczQiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuczQgZXhpc3RzCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxMTUKICAgIC8vIHRvdGFsICs9IHNlbGYuczUudmFsdWUuYmFsYW5jZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDcgLy8gInM1IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnM1IGV4aXN0cwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgICsKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTE2CiAgICAvLyBzZWxmLmNhbGxzLnZhbHVlICs9IDEKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJjYWxscyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jYWxscyBleGlzdHMKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBieXRlY18wIC8vICJjYWxscyIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjEwNgogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnNpbV9wcm9iZS5jb250cmFjdC5TaW1Qcm9iZS5uZWVkc19zZXZlbltyb3V0aW5nXSgpIC0+IHZvaWQ6Cm5lZWRzX3NldmVuOgogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxMjMKICAgIC8vIHRvdGFsICs9IHNlbGYuczAudmFsdWUuYmFsYW5jZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjXzIgLy8gInMwIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnMwIGV4aXN0cwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTI0CiAgICAvLyB0b3RhbCArPSBzZWxmLnMxLnZhbHVlLmJhbGFuY2UKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18zIC8vICJzMSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zMSBleGlzdHMKICAgIGFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgZnVuZGVkCiAgICArCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjEyNQogICAgLy8gdG90YWwgKz0gc2VsZi5zMi52YWx1ZS5iYWxhbmNlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNCAvLyAiczIiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuczIgZXhpc3RzCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxMjYKICAgIC8vIHRvdGFsICs9IHNlbGYuczMudmFsdWUuYmFsYW5jZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDUgLy8gInMzIgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnMzIGV4aXN0cwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgICsKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTI3CiAgICAvLyB0b3RhbCArPSBzZWxmLnM0LnZhbHVlLmJhbGFuY2UKICAgIGludGNfMCAvLyAwCiAgICBieXRlYyA2IC8vICJzNCIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5zNCBleGlzdHMKICAgIGFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQogICAgYXNzZXJ0IC8vIGFjY291bnQgZnVuZGVkCiAgICArCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjEyOAogICAgLy8gdG90YWwgKz0gc2VsZi5zNS52YWx1ZS5iYWxhbmNlCiAgICBpbnRjXzAgLy8gMAogICAgYnl0ZWMgNyAvLyAiczUiCiAgICBhcHBfZ2xvYmFsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuczUgZXhpc3RzCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdEJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxMjkKICAgIC8vIHRvdGFsICs9IHNlbGYuczYudmFsdWUuYmFsYW5jZQogICAgaW50Y18wIC8vIDAKICAgIGJ5dGVjIDkgLy8gInM2IgogICAgYXBwX2dsb2JhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLnM2IGV4aXN0cwogICAgYWNjdF9wYXJhbXNfZ2V0IEFjY3RCYWxhbmNlCiAgICBhc3NlcnQgLy8gYWNjb3VudCBmdW5kZWQKICAgICsKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTMwCiAgICAvLyBzZWxmLmNhbGxzLnZhbHVlICs9IDEKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJjYWxscyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jYWxscyBleGlzdHMKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBieXRlY18wIC8vICJjYWxscyIKICAgIHN3YXAKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjExOQogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnNpbV9wcm9iZS5jb250cmFjdC5TaW1Qcm9iZS5idXJuc19idWRnZXRbcm91dGluZ10oKSAtPiB2b2lkOgpidXJuc19idWRnZXQ6CiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjE0MQogICAgLy8gZGlnZXN0ID0gb3AuYnplcm8oMzIpCiAgICBpbnRjXzIgLy8gMzIKICAgIGJ6ZXJvCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjE0MgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDEwMCk6CiAgICBpbnRjXzAgLy8gMAoKYnVybnNfYnVkZ2V0X2Zvcl9oZWFkZXJAMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTQyCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoMTAwKToKICAgIGR1cAogICAgcHVzaGludCAxMDAKICAgIDwKICAgIGJ6IGJ1cm5zX2J1ZGdldF9hZnRlcl9mb3JANQogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxNDMKICAgIC8vIGRpZ2VzdCA9IG9wLnNoYTI1NihvcC5pdG9iKGkpICsgZGlnZXN0KQogICAgZHVwCiAgICBpdG9iCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc2hhMjU2CiAgICBzd2FwCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjE0MgogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDEwMCk6CiAgICBpbnRjXzEgLy8gMQogICAgKwogICAgYiBidXJuc19idWRnZXRfZm9yX2hlYWRlckAyCgpidXJuc19idWRnZXRfYWZ0ZXJfZm9yQDU6CiAgICBwb3AKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9zaW1fcHJvYmUvY29udHJhY3QucHk6MTQ0CiAgICAvLyBzZWxmLmNhbGxzLnZhbHVlICs9IDEKICAgIGludGNfMCAvLyAwCiAgICBieXRlY18wIC8vICJjYWxscyIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5jYWxscyBleGlzdHMKICAgIGludGNfMSAvLyAxCiAgICArCiAgICBieXRlY18wIC8vICJjYWxscyIKICAgIGRpZyAxCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gc21hcnRfY29udHJhY3RzL3NpbV9wcm9iZS9jb250cmFjdC5weToxNDUKICAgIC8vIGFzc2VydCBkaWdlc3QubGVuZ3RoID09IDMyLCAidW5yZWFjaGFibGUsIGtlZXBzIGRpZ2VzdCBsaXZlIgogICAgc3dhcAogICAgbGVuCiAgICBpbnRjXzIgLy8gMzIKICAgID09CiAgICBhc3NlcnQgLy8gdW5yZWFjaGFibGUsIGtlZXBzIGRpZ2VzdCBsaXZlCiAgICAvLyBzbWFydF9jb250cmFjdHMvc2ltX3Byb2JlL2NvbnRyYWN0LnB5OjEzMwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18xIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzEgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyADAAEgJgoFY2FsbHMEFR98dQJzMAJzMQJzMgJzMwJzNAJzNQprZWVwZXJfYXBwAnM2MRhAACgnCCJnKCJnKjIDZysyA2cnBDIDZycFMgNnJwYyA2cnBzIDZycJMgNnMRtBAEgxGRREMRhEgggEZxVD+QTNGjgTBB4PpKQE1v/JfgRRK3NmBDK0ulgE3VG1iQRGzPziNhoAjggACgAaAHQAhQABAKIA5QExAAAxGRQxGBQQQzYaAUkVgQgSRBcnCExnI0M2GgFJFSQSRDYaAkkVJBJENhoDSRUkEkQ2GgRJFSQSRDYaBUkVJBJENhoGSRUkEkQ2GgdJFSQSRCpPB2crTwZnJwRPBWcnBU8EZycGTwNnJwdPAmcnCUxnI0MiKGVEIwgoSwFnFilMULAjQzEAIicIZURyCEQSRCIoZUQjCChLAWcWKUxQsCNDIiplRHMARCIrZURzAEQIIicEZURzAEQIIicFZURzAEQIIicGZURzAEQIIicHZURzAEQIIihlRCMIKExnFilMULAjQyIqZURzAEQiK2VEcwBECCInBGVEcwBECCInBWVEcwBECCInBmVEcwBECCInB2VEcwBECCInCWVEcwBECCIoZUQjCChMZxYpTFCwI0MkryJJgWQMQQAMSRZPAlABTCMIQv/tSCIoZUQjCChLAWdMFSQSRBYpTFCwI0M=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 9, "patch": 0 } }, "events": [], "templateVariables": {} }