{ "name": "PolicyVault", "structs": { "PolicyRecord": [ { "name": "expiry_round", "type": "uint64" }, { "name": "missed_renewals", "type": "uint64" }, { "name": "spend_cap_tier", "type": "uint64" }, { "name": "operator_pubkey", "type": "byte[]" } ] }, "methods": [ { "name": "init_policy", "args": [ { "type": "address", "name": "agent" }, { "type": "uint64", "name": "window_rounds" }, { "type": "byte[]", "name": "operator_pubkey" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "renew_with_proof", "args": [ { "type": "address", "name": "agent" }, { "type": "byte[]", "name": "challenge" }, { "type": "byte[]", "name": "challenge_sig" }, { "type": "uint64", "name": "extension_rounds" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "check_and_enforce", "args": [ { "type": "address", "name": "agent" }, { "type": "uint64", "name": "amount" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "tick_missed_renewal", "args": [ { "type": "address", "name": "agent" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_policy_status", "args": [ { "type": "address", "name": "agent" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": {}, "box": { "policies": { "keyType": "address", "valueType": "PolicyRecord", "prefix": "cG9saWNpZXM=" } } } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 247 ], "errorMessage": "Invalid renewal signature" }, { "pc": [ 380 ], "errorMessage": "agent fully frozen" }, { "pc": [ 370 ], "errorMessage": "capped at 0.1 ALGO" }, { "pc": [ 350 ], "errorMessage": "capped at 1 ALGO" }, { "pc": [ 314, 333, 399, 419, 518, 537 ], "errorMessage": "index out of bounds" }, { "pc": [ 112, 182, 198 ], "errorMessage": "invalid array length header" }, { "pc": [ 119, 189, 205 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 97, 176, 294, 392, 508 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 105, 216, 302 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 129 ], "errorMessage": "operator_pubkey must be 32 bytes" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAyIDggMCAxCiAgICBieXRlY2Jsb2NrICJwb2xpY2llcyIgMHgwMDFhIDB4MTUxZjdjNzUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6MTAKICAgIC8vIGNsYXNzIFBvbGljeVZhdWx0KEFSQzRDb250cmFjdCk6CiAgICB0eG4gTnVtQXBwQXJncwogICAgYnogbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNAogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4YTczZDVmM2MgMHg5NTcyYWRiYiAweGMxOGM2YjMyIDB4Zjk5Zjc2OTYgMHhiZGI3NTllYiAvLyBtZXRob2QgImluaXRfcG9saWN5KGFkZHJlc3MsdWludDY0LGJ5dGVbXSl2b2lkIiwgbWV0aG9kICJyZW5ld193aXRoX3Byb29mKGFkZHJlc3MsYnl0ZVtdLGJ5dGVbXSx1aW50NjQpdm9pZCIsIG1ldGhvZCAiY2hlY2tfYW5kX2VuZm9yY2UoYWRkcmVzcyx1aW50NjQpdWludDY0IiwgbWV0aG9kICJ0aWNrX21pc3NlZF9yZW5ld2FsKGFkZHJlc3Mpdm9pZCIsIG1ldGhvZCAiZ2V0X3BvbGljeV9zdGF0dXMoYWRkcmVzcyl1aW50NjQiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBpbml0X3BvbGljeSByZW5ld193aXRoX3Byb29mIGNoZWNrX2FuZF9lbmZvcmNlIHRpY2tfbWlzc2VkX3JlbmV3YWwgZ2V0X3BvbGljeV9zdGF0dXMKICAgIGVycgoKbWFpbl9fX2FsZ29weV9kZWZhdWx0X2NyZWF0ZUAxNDoKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICAhCiAgICAmJgogICAgcmV0dXJuCgoKLy8gc21hcnRfY29udHJhY3RzLnBvbGljeV92YXVsdC5jb250cmFjdC5Qb2xpY3lWYXVsdC5pbml0X3BvbGljeVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmluaXRfcG9saWN5OgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weToxNAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weToxNy0xOAogICAgLy8gIyBDcmVhdGUgbmV3IHBvbGljeSBlbnRyeS4gT25seSBjYWxsYWJsZSBieSBvcmcgYWRtaW4uCiAgICAvLyBhc3NlcnQgb3BlcmF0b3JfcHVia2V5Lmxlbmd0aCA9PSAzMiwgIm9wZXJhdG9yX3B1YmtleSBtdXN0IGJlIDMyIGJ5dGVzIgogICAgZHVwCiAgICBsZW4KICAgIGR1cAogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBvcGVyYXRvcl9wdWJrZXkgbXVzdCBiZSAzMiBieXRlcwogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weToyMQogICAgLy8gZXhwaXJ5X3JvdW5kPUdsb2JhbC5yb3VuZCArIHdpbmRvd19yb3VuZHMsCiAgICBnbG9iYWwgUm91bmQKICAgIHVuY292ZXIgMwogICAgKwogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weToyMC0yNQogICAgLy8gc2VsZi5wb2xpY2llc1thZ2VudF0gPSBQb2xpY3lSZWNvcmQoCiAgICAvLyAgICAgZXhwaXJ5X3JvdW5kPUdsb2JhbC5yb3VuZCArIHdpbmRvd19yb3VuZHMsCiAgICAvLyAgICAgbWlzc2VkX3JlbmV3YWxzPVVJbnQ2NCgwKSwKICAgIC8vICAgICBzcGVuZF9jYXBfdGllcj1VSW50NjQoMCksCiAgICAvLyAgICAgb3BlcmF0b3JfcHVia2V5PW9wZXJhdG9yX3B1YmtleQogICAgLy8gKQogICAgaXRvYgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weToyMgogICAgLy8gbWlzc2VkX3JlbmV3YWxzPVVJbnQ2NCgwKSwKICAgIGludGNfMiAvLyAwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjIwLTI1CiAgICAvLyBzZWxmLnBvbGljaWVzW2FnZW50XSA9IFBvbGljeVJlY29yZCgKICAgIC8vICAgICBleHBpcnlfcm91bmQ9R2xvYmFsLnJvdW5kICsgd2luZG93X3JvdW5kcywKICAgIC8vICAgICBtaXNzZWRfcmVuZXdhbHM9VUludDY0KDApLAogICAgLy8gICAgIHNwZW5kX2NhcF90aWVyPVVJbnQ2NCgwKSwKICAgIC8vICAgICBvcGVyYXRvcl9wdWJrZXk9b3BlcmF0b3JfcHVia2V5CiAgICAvLyApCiAgICBpdG9iCiAgICBzd2FwCiAgICBkaWcgMQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgYnl0ZWNfMSAvLyAweDAwMWEKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjIwCiAgICAvLyBzZWxmLnBvbGljaWVzW2FnZW50XSA9IFBvbGljeVJlY29yZCgKICAgIGJ5dGVjXzAgLy8gInBvbGljaWVzIgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6MjAtMjUKICAgIC8vIHNlbGYucG9saWNpZXNbYWdlbnRdID0gUG9saWN5UmVjb3JkKAogICAgLy8gICAgIGV4cGlyeV9yb3VuZD1HbG9iYWwucm91bmQgKyB3aW5kb3dfcm91bmRzLAogICAgLy8gICAgIG1pc3NlZF9yZW5ld2Fscz1VSW50NjQoMCksCiAgICAvLyAgICAgc3BlbmRfY2FwX3RpZXI9VUludDY0KDApLAogICAgLy8gICAgIG9wZXJhdG9yX3B1YmtleT1vcGVyYXRvcl9wdWJrZXkKICAgIC8vICkKICAgIGR1cAogICAgYm94X2RlbAogICAgcG9wCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjE0CiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIGludGNfMyAvLyAxCiAgICByZXR1cm4KCgovLyBzbWFydF9jb250cmFjdHMucG9saWN5X3ZhdWx0LmNvbnRyYWN0LlBvbGljeVZhdWx0LnJlbmV3X3dpdGhfcHJvb2Zbcm91dGluZ10oKSAtPiB2b2lkOgpyZW5ld193aXRoX3Byb29mOgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weToyNwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6MjktMzEKICAgIC8vICMgVmVyaWZ5IGVkMjU1MTkgc2lnIG9mIHJlbmV3YWxfY2hhbGxlbmdlIGRlcml2ZWQgZnJvbSBsYXN0IDMgcGF5bWVudCBoYXNoZXMuCiAgICAvLyAjIFJlc2V0IG1pc3NlZF9yZW5ld2FscyA9IDAuIEV4dGVuZCBleHBpcnlfcm91bmQgYnkgd2luZG93LgogICAgLy8gcG9saWN5ID0gc2VsZi5wb2xpY2llc1thZ2VudF0uY29weSgpCiAgICBieXRlY18wIC8vICJwb2xpY2llcyIKICAgIHVuY292ZXIgNAogICAgY29uY2F0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjI5LTMyCiAgICAvLyAjIFZlcmlmeSBlZDI1NTE5IHNpZyBvZiByZW5ld2FsX2NoYWxsZW5nZSBkZXJpdmVkIGZyb20gbGFzdCAzIHBheW1lbnQgaGFzaGVzLgogICAgLy8gIyBSZXNldCBtaXNzZWRfcmVuZXdhbHMgPSAwLiBFeHRlbmQgZXhwaXJ5X3JvdW5kIGJ5IHdpbmRvdy4KICAgIC8vIHBvbGljeSA9IHNlbGYucG9saWNpZXNbYWdlbnRdLmNvcHkoKQogICAgLy8gcHVia2V5ID0gcG9saWN5Lm9wZXJhdG9yX3B1YmtleQogICAgZHVwCiAgICBwdXNoaW50IDI2CiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGludGNfMCAvLyAyCiAgICArCiAgICBkaWcgMQogICAgcHVzaGludCAyNgogICAgdW5jb3ZlciAyCiAgICBib3hfZXh0cmFjdAogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTozMgogICAgLy8gcHVia2V5ID0gcG9saWN5Lm9wZXJhdG9yX3B1YmtleQogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6MzQKICAgIC8vIGFzc2VydCBvcC5lZDI1NTE5dmVyaWZ5KGNoYWxsZW5nZSwgY2hhbGxlbmdlX3NpZywgcHVia2V5KSwgIkludmFsaWQgcmVuZXdhbCBzaWduYXR1cmUiCiAgICB1bmNvdmVyIDQKICAgIHVuY292ZXIgNAogICAgZGlnIDIKICAgIGVkMjU1MTl2ZXJpZnkKICAgIGFzc2VydCAvLyBJbnZhbGlkIHJlbmV3YWwgc2lnbmF0dXJlCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjM3CiAgICAvLyBleHBpcnlfcm91bmQ9R2xvYmFsLnJvdW5kICsgZXh0ZW5zaW9uX3JvdW5kcywKICAgIGdsb2JhbCBSb3VuZAogICAgdW5jb3ZlciAzCiAgICArCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjM2LTQxCiAgICAvLyBzZWxmLnBvbGljaWVzW2FnZW50XSA9IFBvbGljeVJlY29yZCgKICAgIC8vICAgICBleHBpcnlfcm91bmQ9R2xvYmFsLnJvdW5kICsgZXh0ZW5zaW9uX3JvdW5kcywKICAgIC8vICAgICBtaXNzZWRfcmVuZXdhbHM9VUludDY0KDApLAogICAgLy8gICAgIHNwZW5kX2NhcF90aWVyPVVJbnQ2NCgwKSwKICAgIC8vICAgICBvcGVyYXRvcl9wdWJrZXk9cHVia2V5CiAgICAvLyApCiAgICBpdG9iCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjM4CiAgICAvLyBtaXNzZWRfcmVuZXdhbHM9VUludDY0KDApLAogICAgaW50Y18yIC8vIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6MzYtNDEKICAgIC8vIHNlbGYucG9saWNpZXNbYWdlbnRdID0gUG9saWN5UmVjb3JkKAogICAgLy8gICAgIGV4cGlyeV9yb3VuZD1HbG9iYWwucm91bmQgKyBleHRlbnNpb25fcm91bmRzLAogICAgLy8gICAgIG1pc3NlZF9yZW5ld2Fscz1VSW50NjQoMCksCiAgICAvLyAgICAgc3BlbmRfY2FwX3RpZXI9VUludDY0KDApLAogICAgLy8gICAgIG9wZXJhdG9yX3B1YmtleT1wdWJrZXkKICAgIC8vICkKICAgIGl0b2IKICAgIHN3YXAKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAxYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6MjcKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wb2xpY3lfdmF1bHQuY29udHJhY3QuUG9saWN5VmF1bHQuY2hlY2tfYW5kX2VuZm9yY2Vbcm91dGluZ10oKSAtPiB2b2lkOgpjaGVja19hbmRfZW5mb3JjZToKICAgIHB1c2hieXRlcyAiIgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo0MwogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICBzd2FwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjQ1LTQ3CiAgICAvLyAjIFJldHVybnM6IDA9YWxsb3dlZCwgMT13YXJuKGNhcHBlZCAxIEFMR08pLCAyPWNhcHBlZCgwLjEgQUxHTyksIDM9ZnVsbHkgZnJvemVuCiAgICAvLyAjIEdyYWR1YXRlZDogbWlzc2VkX3JlbmV3YWxzIDEgLT4gdGllciAxLCAyIC0+IHRpZXIgMiwgMysgLT4gdGllciAzCiAgICAvLyBwb2xpY3kgPSBzZWxmLnBvbGljaWVzW2FnZW50XS5jb3B5KCkKICAgIGJ5dGVjXzAgLy8gInBvbGljaWVzIgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NDkKICAgIC8vIGlmIEdsb2JhbC5yb3VuZCA+PSBwb2xpY3kuZXhwaXJ5X3JvdW5kOgogICAgZ2xvYmFsIFJvdW5kCiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMAogICAgaW50Y18xIC8vIDgKICAgIGJveF9leHRyYWN0IC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICA+PQogICAgYnogY2hlY2tfYW5kX2VuZm9yY2VfYWZ0ZXJfaWZfZWxzZUAzCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjUwCiAgICAvLyByZXR1cm4gVUludDY0KDMpCiAgICBwdXNoaW50IDMKCmNoZWNrX2FuZF9lbmZvcmNlX2FmdGVyX2lubGluZWRfc21hcnRfY29udHJhY3RzLnBvbGljeV92YXVsdC5jb250cmFjdC5Qb2xpY3lWYXVsdC5jaGVja19hbmRfZW5mb3JjZUAxMjoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NDMKICAgIC8vIEBhYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMiAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKY2hlY2tfYW5kX2VuZm9yY2VfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo1MgogICAgLy8gdGllciA9IHBvbGljeS5zcGVuZF9jYXBfdGllcgogICAgZHVwCiAgICBwdXNoaW50IDE2CiAgICBpbnRjXzEgLy8gOAogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIGR1cAogICAgYnVyeSA0CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjUzCiAgICAvLyBpZiB0aWVyID09IFVJbnQ2NCgxKToKICAgIGludGNfMyAvLyAxCiAgICA9PQogICAgYnogY2hlY2tfYW5kX2VuZm9yY2VfZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NTQKICAgIC8vIGFzc2VydCBhbW91bnQgPD0gVUludDY0KDFfMDAwXzAwMCksICJjYXBwZWQgYXQgMSBBTEdPIgogICAgZGlnIDEKICAgIHB1c2hpbnQgMTAwMDAwMAogICAgPD0KICAgIGFzc2VydCAvLyBjYXBwZWQgYXQgMSBBTEdPCgpjaGVja19hbmRfZW5mb3JjZV9hZnRlcl9pZl9lbHNlQDExOgogICAgZGlnIDIKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NDMKICAgIC8vIEBhYmltZXRob2QoKQogICAgYiBjaGVja19hbmRfZW5mb3JjZV9hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5wb2xpY3lfdmF1bHQuY29udHJhY3QuUG9saWN5VmF1bHQuY2hlY2tfYW5kX2VuZm9yY2VAMTIKCmNoZWNrX2FuZF9lbmZvcmNlX2Vsc2VfYm9keUA1OgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo1NQogICAgLy8gZWxpZiB0aWVyID09IFVJbnQ2NCgyKToKICAgIGRpZyAyCiAgICBpbnRjXzAgLy8gMgogICAgPT0KICAgIGJ6IGNoZWNrX2FuZF9lbmZvcmNlX2Vsc2VfYm9keUA3CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjU2CiAgICAvLyBhc3NlcnQgYW1vdW50IDw9IFVJbnQ2NCgxMDBfMDAwKSwgImNhcHBlZCBhdCAwLjEgQUxHTyIKICAgIGRpZyAxCiAgICBwdXNoaW50IDEwMDAwMAogICAgPD0KICAgIGFzc2VydCAvLyBjYXBwZWQgYXQgMC4xIEFMR08KICAgIGIgY2hlY2tfYW5kX2VuZm9yY2VfYWZ0ZXJfaWZfZWxzZUAxMQoKY2hlY2tfYW5kX2VuZm9yY2VfZWxzZV9ib2R5QDc6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjU3CiAgICAvLyBlbGlmIHRpZXIgPj0gVUludDY0KDMpOgogICAgZGlnIDIKICAgIHB1c2hpbnQgMwogICAgPj0KICAgICEKICAgIGFzc2VydCAvLyBhZ2VudCBmdWxseSBmcm96ZW4KICAgIGIgY2hlY2tfYW5kX2VuZm9yY2VfYWZ0ZXJfaWZfZWxzZUAxMQoKCi8vIHNtYXJ0X2NvbnRyYWN0cy5wb2xpY3lfdmF1bHQuY29udHJhY3QuUG9saWN5VmF1bHQudGlja19taXNzZWRfcmVuZXdhbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRpY2tfbWlzc2VkX3JlbmV3YWw6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjYyCiAgICAvLyBAYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDMyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzMj4KICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NjQtNjYKICAgIC8vICMgQ2FsbGVkIGJ5IGJhY2tlbmQgY3JvbiBlYWNoIGVwb2NoIGlmIG5vIHJlbmV3YWwgc2Vlbi4KICAgIC8vICMgSW5jcmVtZW50cyBtaXNzZWRfcmVuZXdhbHMuIFVwZGF0ZXMgc3BlbmRfY2FwX3RpZXIuCiAgICAvLyBwb2xpY3kgPSBzZWxmLnBvbGljaWVzW2FnZW50XS5jb3B5KCkKICAgIGJ5dGVjXzAgLy8gInBvbGljaWVzIgogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NjQtNjcKICAgIC8vICMgQ2FsbGVkIGJ5IGJhY2tlbmQgY3JvbiBlYWNoIGVwb2NoIGlmIG5vIHJlbmV3YWwgc2Vlbi4KICAgIC8vICMgSW5jcmVtZW50cyBtaXNzZWRfcmVuZXdhbHMuIFVwZGF0ZXMgc3BlbmRfY2FwX3RpZXIuCiAgICAvLyBwb2xpY3kgPSBzZWxmLnBvbGljaWVzW2FnZW50XS5jb3B5KCkKICAgIC8vIG1pc3NlZCA9IHBvbGljeS5taXNzZWRfcmVuZXdhbHMgKyAxCiAgICBpbnRjXzEgLy8gOAogICAgZHVwCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo2NwogICAgLy8gbWlzc2VkID0gcG9saWN5Lm1pc3NlZF9yZW5ld2FscyArIDEKICAgIGJ0b2kKICAgIGludGNfMyAvLyAxCiAgICArCiAgICBkdXAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NjgKICAgIC8vIHRpZXIgPSBVSW50NjQoMCkKICAgIGludGNfMiAvLyAwCiAgICBzd2FwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjcwCiAgICAvLyBpZiBtaXNzZWQgPT0gVUludDY0KDEpOgogICAgaW50Y18zIC8vIDEKICAgID09CiAgICBieiB0aWNrX21pc3NlZF9yZW5ld2FsX2Vsc2VfYm9keUAzCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5OjcxCiAgICAvLyB0aWVyID0gVUludDY0KDEpCiAgICBpbnRjXzMgLy8gMQogICAgYnVyeSAxCgp0aWNrX21pc3NlZF9yZW5ld2FsX2FmdGVyX2lmX2Vsc2VAOToKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NzgKICAgIC8vIGV4cGlyeV9yb3VuZD1wb2xpY3kuZXhwaXJ5X3JvdW5kLAogICAgZGlnIDIKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGludGNfMSAvLyA4CiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo4MQogICAgLy8gb3BlcmF0b3JfcHVia2V5PXBvbGljeS5vcGVyYXRvcl9wdWJrZXkKICAgIGRpZyAxCiAgICBwdXNoaW50IDI2CiAgICBpbnRjXzAgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGludGNfMCAvLyAyCiAgICArCiAgICBkaWcgMgogICAgcHVzaGludCAyNgogICAgdW5jb3ZlciAyCiAgICBib3hfZXh0cmFjdAogICAgZXh0cmFjdCAyIDAKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NzctODIKICAgIC8vIHNlbGYucG9saWNpZXNbYWdlbnRdID0gUG9saWN5UmVjb3JkKAogICAgLy8gICAgIGV4cGlyeV9yb3VuZD1wb2xpY3kuZXhwaXJ5X3JvdW5kLAogICAgLy8gICAgIG1pc3NlZF9yZW5ld2Fscz1taXNzZWQsCiAgICAvLyAgICAgc3BlbmRfY2FwX3RpZXI9dGllciwKICAgIC8vICAgICBvcGVyYXRvcl9wdWJrZXk9cG9saWN5Lm9wZXJhdG9yX3B1YmtleQogICAgLy8gKQogICAgc3dhcAogICAgaXRvYgogICAgZGlnIDQKICAgIGl0b2IKICAgIGNvbmNhdAogICAgZGlnIDMKICAgIGl0b2IKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAxYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGJveF9wdXQKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NjIKICAgIC8vIEBhYmltZXRob2QoKQogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKdGlja19taXNzZWRfcmVuZXdhbF9lbHNlX2JvZHlAMzoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NzIKICAgIC8vIGVsaWYgbWlzc2VkID09IFVJbnQ2NCgyKToKICAgIGRpZyAxCiAgICBpbnRjXzAgLy8gMgogICAgPT0KICAgIGJ6IHRpY2tfbWlzc2VkX3JlbmV3YWxfZWxzZV9ib2R5QDUKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NzMKICAgIC8vIHRpZXIgPSBVSW50NjQoMikKICAgIGludGNfMCAvLyAyCiAgICBidXJ5IDEKICAgIGIgdGlja19taXNzZWRfcmVuZXdhbF9hZnRlcl9pZl9lbHNlQDkKCnRpY2tfbWlzc2VkX3JlbmV3YWxfZWxzZV9ib2R5QDU6CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5Ojc0CiAgICAvLyBlbGlmIG1pc3NlZCA+PSBVSW50NjQoMyk6CiAgICBkaWcgMQogICAgcHVzaGludCAzCiAgICA+PQogICAgYnogdGlja19taXNzZWRfcmVuZXdhbF9hZnRlcl9pZl9lbHNlQDkKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6NzUKICAgIC8vIHRpZXIgPSBVSW50NjQoMykKICAgIHB1c2hpbnQgMwogICAgYnVyeSAxCiAgICBiIHRpY2tfbWlzc2VkX3JlbmV3YWxfYWZ0ZXJfaWZfZWxzZUA5CgoKLy8gc21hcnRfY29udHJhY3RzLnBvbGljeV92YXVsdC5jb250cmFjdC5Qb2xpY3lWYXVsdC5nZXRfcG9saWN5X3N0YXR1c1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF9wb2xpY3lfc3RhdHVzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo4NAogICAgLy8gQGFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5Ojg2LTg3CiAgICAvLyAjIFJldHVybnMgY3VycmVudCB0aWVyIGZvciB0aGlzIGFnZW50LgogICAgLy8gcG9saWN5ID0gc2VsZi5wb2xpY2llc1thZ2VudF0uY29weSgpCiAgICBieXRlY18wIC8vICJwb2xpY2llcyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZHVwCiAgICAvLyBzbWFydF9jb250cmFjdHMvcG9saWN5X3ZhdWx0L2NvbnRyYWN0LnB5Ojg5CiAgICAvLyBpZiBHbG9iYWwucm91bmQgPj0gcG9saWN5LmV4cGlyeV9yb3VuZDoKICAgIGdsb2JhbCBSb3VuZAogICAgc3dhcAogICAgaW50Y18yIC8vIDAKICAgIGludGNfMSAvLyA4CiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgPj0KICAgIGJ6IGdldF9wb2xpY3lfc3RhdHVzX2FmdGVyX2lmX2Vsc2VAMwogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo5MAogICAgLy8gcmV0dXJuIFVJbnQ2NCgzKQogICAgcHVzaGludCAzCgpnZXRfcG9saWN5X3N0YXR1c19hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5wb2xpY3lfdmF1bHQuY29udHJhY3QuUG9saWN5VmF1bHQuZ2V0X3BvbGljeV9zdGF0dXNANDoKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6ODQKICAgIC8vIEBhYmltZXRob2QoKQogICAgaXRvYgogICAgYnl0ZWNfMiAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKZ2V0X3BvbGljeV9zdGF0dXNfYWZ0ZXJfaWZfZWxzZUAzOgogICAgLy8gc21hcnRfY29udHJhY3RzL3BvbGljeV92YXVsdC9jb250cmFjdC5weTo5MgogICAgLy8gcmV0dXJuIHBvbGljeS5zcGVuZF9jYXBfdGllcgogICAgZHVwCiAgICBwdXNoaW50IDE2CiAgICBpbnRjXzEgLy8gOAogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIC8vIHNtYXJ0X2NvbnRyYWN0cy9wb2xpY3lfdmF1bHQvY29udHJhY3QucHk6ODQKICAgIC8vIEBhYmltZXRob2QoKQogICAgYiBnZXRfcG9saWN5X3N0YXR1c19hZnRlcl9pbmxpbmVkX3NtYXJ0X2NvbnRyYWN0cy5wb2xpY3lfdmF1bHQuY29udHJhY3QuUG9saWN5VmF1bHQuZ2V0X3BvbGljeV9zdGF0dXNANAo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAggAASYDCHBvbGljaWVzAgAaBBUffHUxG0EAMjEZFEQxGESCBQSnPV88BJVyrbsEwYxrMgT5n3aWBL23Wes2GgCOBQAJAFgAzAEwAaQAMRkUMRgUEEM2GgFJFYEgEkQ2GgJJFSMSRBc2GgNJJFkiCEsBFRJEVwIASRVJgSASRDIGTwMIFiQWTEsBUExQTBZXBgJPAlBMKVBMUChPAlBJvEhMvyVDNhoBSRWBIBJENhoCSSRZIghLARUSRFcCADYaA0kkWSIISwEVEkRXAgA2GgRJFSMSRBcoTwRQSYEaIroXIghLAYEaTwK6VwIATwRPBEsCBEQyBk8DCBYkFkxLAVBMUEsBFRZXBgJPAlBMKVBMUEsBvEi/JUOAADYaAUkVgSASRDYaAkkVIxJEF0woTFBJMgZMJCO6Fw9BAAmBAxYqTFCwJUNJgRAjuhdJRQQlEkEADUsBgcCEPQ5ESwJC/95LAiISQQALSwGBoI0GDkRC/+lLAoEDDxREQv/fNhoBSRWBIBJEKExQSSNJuhclCEkkTCUSQQA9JUUBSwJJJCO6F0sBgRoiuhciCEsCgRpPArpXAgBMFksEFlBLAxZQSwEVFlcGAk8CUEwpUExQSwG8SL8lQ0sBIhJBAAYiRQFC/7lLAYEDD0H/sYEDRQFC/6o2GgFJFYEgEkQoTFBJMgZMJCO6Fw9BAAmBAxYqTFCwJUNJgRAjuhdC//A=", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 8, "patch": 0 } }, "events": [], "templateVariables": {} }