{ "name": "BoxBoolArrayAppendRead", "structs": {}, "methods": [ { "name": "box_round_trip", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "box_out_of_bounds", "args": [], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "desc": "Regression test: appending to a dynamic array of bools stored in a box was lowered\n to an in-place helper that advanced one byte per element, while reads of the same\n array are (correctly) bit packed. After two appends the box contained\n `[len=2][0x80][0x80]` and reading index 1 returned the (zero) bit 1 of the first byte,\n so `push(true); push(true)` read back as `[true, false]`.", "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": { "boxed": { "keyType": "AVMString", "valueType": "bool[]", "key": "Ym94ZWQ=" } } }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 400, 476, 532 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 381, 395, 456, 484, 513, 527, 581, 586, 607, 612, 633, 638, 679, 684, 706, 711, 754, 758 ], "errorMessage": "index out of bounds" }, { "pc": [ 87 ], "errorMessage": "max array length exceeded" }, { "pc": [ 359 ], "errorMessage": "unexpected box size after appends" }, { "pc": [ 352 ], "errorMessage": "unexpected length after appends" }, { "pc": [ 577 ], "errorMessage": "unexpected length after extend" }, { "pc": [ 675 ], "errorMessage": "unexpected length after reference array extend" }, { "pc": [ 418 ], "errorMessage": "unexpected value after appends" }, { "pc": [ 653 ], "errorMessage": "unexpected value after extend" }, { "pc": [ 726 ], "errorMessage": "unexpected value after reference array extend" }, { "pc": [ 548 ], "errorMessage": "unexpected value after writes" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDIgMSA4CiAgICBieXRlY2Jsb2NrICJib3hlZCIgMHgwMCAweDA2ODEwMQogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weToxNQogICAgLy8gY2xhc3MgQm94Qm9vbEFycmF5QXBwZW5kUmVhZChBUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fX19hbGdvcHlfZGVmYXVsdF9jcmVhdGVAMTEKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydAogICAgcHVzaGJ5dGVzcyAweGEwYmM0ZWFjIDB4ODMxMTU0Y2QgLy8gbWV0aG9kICJib3hfcm91bmRfdHJpcCgpdm9pZCIsIG1ldGhvZCAiYm94X291dF9vZl9ib3VuZHMoKWJvb2wiCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBtYXRjaCBib3hfcm91bmRfdHJpcCBib3hfb3V0X29mX2JvdW5kcwogICAgZXJyCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDExOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyBfcHV5YV9saWIuYm94X2FyYzQuYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHMoYm94X2tleTogYnl0ZXMsIGFycmF5X29mZnNldDogdWludDY0LCBuZXdfaXRlbXNfYnl0ZXM6IGJ5dGVzLCBuZXdfaXRlbXNfY291bnQ6IHVpbnQ2NCwgcmVhZF9zdGVwOiB1aW50NjQpIC0+IHVpbnQ2NDoKYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHM6CiAgICBwcm90byA1IDEKICAgIGZyYW1lX2RpZyAtNQogICAgZnJhbWVfZGlnIC00CiAgICBpbnRjXzEgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGR1cG4gMgogICAgZnJhbWVfZGlnIC0yCiAgICArCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGR1cAogICAgcHVzaGludCA2NTUzNQogICAgPD0KICAgIGFzc2VydCAvLyBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBmcmFtZV9kaWcgLTQKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBjb3ZlciAzCiAgICBzd2FwCiAgICBwdXNoaW50IDcKICAgICsKICAgIGludGNfMyAvLyA4CiAgICAvCiAgICBkdXAKICAgIGNvdmVyIDUKICAgIHN3YXAKICAgIHB1c2hpbnQgNwogICAgKwogICAgaW50Y18zIC8vIDgKICAgIC8KICAgIHN3YXAKICAgIC0KICAgIGR1cAogICAgYnogYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfYWZ0ZXJfaWZfZWxzZUAyCiAgICBmcmFtZV9kaWcgLTUKICAgIGJveF9sZW4KICAgIHBvcAogICAgZGlnIDEKICAgIGR1cAogICAgY292ZXIgMgogICAgKwogICAgZnJhbWVfZGlnIC01CiAgICBzd2FwCiAgICBib3hfcmVzaXplCiAgICBkaWcgMwogICAgZnJhbWVfZGlnIDAKICAgICsKICAgIHN3YXAKICAgIGJ6ZXJvCiAgICBmcmFtZV9kaWcgLTUKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMwogICAgYm94X3NwbGljZQoKYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfYWZ0ZXJfaWZfZWxzZUAyOgogICAgZGlnIDEKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgLTUKICAgIGZyYW1lX2RpZyAtNAogICAgdW5jb3ZlciAyCiAgICBib3hfcmVwbGFjZQogICAgaW50Y18wIC8vIDAKICAgIHN3YXAKICAgIHVuY292ZXIgNAogICAgY292ZXIgMgoKYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfd2hpbGVfdG9wQDM6CiAgICBkaWcgMgogICAgZGlnIDQKICAgIDwKICAgIGJ6IGJveF9keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX3doaWxlQDkKICAgIGRpZyAyCiAgICBkdXAKICAgIGludGNfMyAvLyA4CiAgICAvCiAgICBkaWcgNgogICAgKwogICAgZHVwCiAgICBjb3ZlciA1CiAgICBzd2FwCiAgICBpbnRjXzMgLy8gOAogICAgJQogICAgY292ZXIgNQogICAgZnJhbWVfZGlnIC01CiAgICBzd2FwCiAgICBpbnRjXzIgLy8gMQogICAgYm94X2V4dHJhY3QKICAgIGNvdmVyIDUKCmJveF9keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX3doaWxlX3RvcEA1OgogICAgZGlnIDQKICAgIGludGNfMyAvLyA4CiAgICA8CiAgICBieiBib3hfZHluYW1pY19hcnJheV9jb25jYXRfYml0c19hZnRlcl93aGlsZUA4CiAgICBkaWcgMgogICAgZGlnIDcKICAgIDwKICAgIGJ6IGJveF9keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX3doaWxlQDgKICAgIGZyYW1lX2RpZyAtMwogICAgdW5jb3ZlciAyCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGdldGJpdAogICAgdW5jb3ZlciA2CiAgICB1bmNvdmVyIDYKICAgIGR1cAogICAgY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGNvdmVyIDUKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBjb3ZlciA0CiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBjb3ZlciAyCiAgICBmcmFtZV9kaWcgLTEKICAgICsKICAgIHN3YXAKICAgIGIgYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfd2hpbGVfdG9wQDUKCmJveF9keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX3doaWxlQDg6CiAgICB1bmNvdmVyIDQKICAgIHBvcAogICAgZnJhbWVfZGlnIC01CiAgICB1bmNvdmVyIDQKICAgIHVuY292ZXIgNQogICAgYm94X3JlcGxhY2UKICAgIGIgYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHNfd2hpbGVfdG9wQDMKCmJveF9keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzX2FmdGVyX3doaWxlQDk6CiAgICBmcmFtZV9idXJ5IDAKICAgIHJldHN1YgoKCi8vIHRlc3RfY2FzZXMucmVncmVzc2lvbl90ZXN0cy5ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5Cb3hCb29sQXJyYXlBcHBlbmRSZWFkLmJveF9yb3VuZF90cmlwW3JvdXRpbmddKCkgLT4gdm9pZDoKYm94X3JvdW5kX3RyaXA6CiAgICBwdXNoYnl0ZXMgIiIKCmJveF9yb3VuZF90cmlwX3doaWxlX3RvcEAyODoKICAgIHB1c2hpbnQgNDAwMTAKICAgIGdsb2JhbCBPcGNvZGVCdWRnZXQKICAgID4KICAgIGJ6IGJveF9yb3VuZF90cmlwX2FmdGVyX3doaWxlQDMzCiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgcHVzaGludCA1IC8vIERlbGV0ZUFwcGxpY2F0aW9uCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgYnl0ZWNfMiAvLyAweDA2ODEwMQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW0KICAgIGJ5dGVjXzIgLy8gMHgwNjgxMDEKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGIgYm94X3JvdW5kX3RyaXBfd2hpbGVfdG9wQDI4Cgpib3hfcm91bmRfdHJpcF9hZnRlcl93aGlsZUAzMzoKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MjkKICAgIC8vIHNlbGYuYm94ZWQudmFsdWUgPSBCb29sQXJyYXkoKQogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgcHVzaGJ5dGVzIDB4MDAwMAogICAgYm94X3B1dAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTozMC0zMQogICAgLy8gIyByZXBlYXQgdHJ1ZSwgdHJ1ZSwgZmFsc2UgdG8gY292ZXIgdGhlIG9yaWdpbmFsIGJ1ZyBhbmQgYnl0ZSBib3VuZGFyaWVzCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2Uobik6CiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSAxCgpib3hfcm91bmRfdHJpcF9mb3JfaGVhZGVyQDI6CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjMwLTMxCiAgICAvLyAjIHJlcGVhdCB0cnVlLCB0cnVlLCBmYWxzZSB0byBjb3ZlciB0aGUgb3JpZ2luYWwgYnVnIGFuZCBieXRlIGJvdW5kYXJpZXMKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIGR1cAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weToyOAogICAgLy8gbiA9IFVJbnQ2NCgxNykKICAgIHB1c2hpbnQgMTcKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzAtMzEKICAgIC8vICMgcmVwZWF0IHRydWUsIHRydWUsIGZhbHNlIHRvIGNvdmVyIHRoZSBvcmlnaW5hbCBidWcgYW5kIGJ5dGUgYm91bmRhcmllcwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKG4pOgogICAgPAogICAgYnogYm94X3JvdW5kX3RyaXBfYWZ0ZXJfZm9yQDUKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzIKICAgIC8vIHNlbGYuYm94ZWQudmFsdWUuYXBwZW5kKGFyYzQuQm9vbChpICUgMyAhPSAyKSkKICAgIGR1cG4gMgogICAgcHVzaGludCAzCiAgICAlCiAgICBpbnRjXzEgLy8gMgogICAgIT0KICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAxCiAgICBkdXAKICAgIGNhbGxzdWIgYm94X2R5bmFtaWNfYXJyYXlfY29uY2F0X2JpdHMKICAgIHBvcAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTozMC0zMQogICAgLy8gIyByZXBlYXQgdHJ1ZSwgdHJ1ZSwgZmFsc2UgdG8gY292ZXIgdGhlIG9yaWdpbmFsIGJ1ZyBhbmQgYnl0ZSBib3VuZGFyaWVzCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2Uobik6CiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgYnVyeSAxCiAgICBiIGJveF9yb3VuZF90cmlwX2Zvcl9oZWFkZXJAMgoKYm94X3JvdW5kX3RyaXBfYWZ0ZXJfZm9yQDU6CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjMzCiAgICAvLyBhc3NlcnQgc2VsZi5ib3hlZC52YWx1ZS5sZW5ndGggPT0gbiwgInVuZXhwZWN0ZWQgbGVuZ3RoIGFmdGVyIGFwcGVuZHMiCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MjgKICAgIC8vIG4gPSBVSW50NjQoMTcpCiAgICBwdXNoaW50IDE3CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjMzCiAgICAvLyBhc3NlcnQgc2VsZi5ib3hlZC52YWx1ZS5sZW5ndGggPT0gbiwgInVuZXhwZWN0ZWQgbGVuZ3RoIGFmdGVyIGFwcGVuZHMiCiAgICA9PQogICAgYXNzZXJ0IC8vIHVuZXhwZWN0ZWQgbGVuZ3RoIGFmdGVyIGFwcGVuZHMKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzQKICAgIC8vIGFzc2VydCBzZWxmLmJveGVkLmxlbmd0aCA9PSAyICsgKG4gKyA3KSAvLyA4LCAidW5leHBlY3RlZCBib3ggc2l6ZSBhZnRlciBhcHBlbmRzIgogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBib3hfbGVuCiAgICBwb3AKICAgIHB1c2hpbnQgNQogICAgPT0KICAgIGFzc2VydCAvLyB1bmV4cGVjdGVkIGJveCBzaXplIGFmdGVyIGFwcGVuZHMKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzUKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIGludGNfMCAvLyAwCiAgICBidXJ5IDEKCmJveF9yb3VuZF90cmlwX2Zvcl9oZWFkZXJANjoKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzUKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIGR1cAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weToyOAogICAgLy8gbiA9IFVJbnQ2NCgxNykKICAgIHB1c2hpbnQgMTcKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzUKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIDwKICAgIGJ6IGJveF9yb3VuZF90cmlwX2FmdGVyX2ZvckA5CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjM2CiAgICAvLyBhc3NlcnQgYm9vbChzZWxmLmJveGVkLnZhbHVlW2ldKSA9PSAoaSAlIDMgIT0gMiksICJ1bmV4cGVjdGVkIHZhbHVlIGFmdGVyIGFwcGVuZHMiCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGRpZyAxCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgPAogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIGR1cAogICAgaW50Y18zIC8vIDgKICAgIC8KICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDgKICAgICUKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgdW5jb3ZlciAyCiAgICBpbnRjXzIgLy8gMQogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOAogICAgPAogICAgYXNzZXJ0IC8vIGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICBnZXRiaXQKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18xIC8vIDB4MDAKICAgICE9CiAgICBkaWcgMQogICAgcHVzaGludCAzCiAgICAlCiAgICBpbnRjXzEgLy8gMgogICAgIT0KICAgID09CiAgICBhc3NlcnQgLy8gdW5leHBlY3RlZCB2YWx1ZSBhZnRlciBhcHBlbmRzCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjM1CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2Uobik6CiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgYnVyeSAxCiAgICBiIGJveF9yb3VuZF90cmlwX2Zvcl9oZWFkZXJANgoKYm94X3JvdW5kX3RyaXBfYWZ0ZXJfZm9yQDk6CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjM4LTM5CiAgICAvLyAjIHdyaXRlIGV2ZXJ5IGluZGV4LCB0aGVuIHJlYWQgZWFjaCBiYWNrCiAgICAvLyBmb3IgaSBpbiB1cmFuZ2Uobik6CiAgICBpbnRjXzAgLy8gMAogICAgYnVyeSAxCgpib3hfcm91bmRfdHJpcF9mb3JfaGVhZGVyQDEwOgogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTozOC0zOQogICAgLy8gIyB3cml0ZSBldmVyeSBpbmRleCwgdGhlbiByZWFkIGVhY2ggYmFjawogICAgLy8gZm9yIGkgaW4gdXJhbmdlKG4pOgogICAgZHVwCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjI4CiAgICAvLyBuID0gVUludDY0KDE3KQogICAgcHVzaGludCAxNwogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTozOC0zOQogICAgLy8gIyB3cml0ZSBldmVyeSBpbmRleCwgdGhlbiByZWFkIGVhY2ggYmFjawogICAgLy8gZm9yIGkgaW4gdXJhbmdlKG4pOgogICAgPAogICAgYnogYm94X3JvdW5kX3RyaXBfYWZ0ZXJfZm9yQDEzCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQwCiAgICAvLyBzZWxmLmJveGVkLnZhbHVlW2ldID0gYXJjNC5Cb29sKGkgJSAyID09IDApCiAgICBkdXBuIDIKICAgIGludGNfMSAvLyAyCiAgICAlCiAgICAhCiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18xIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBkaWcgMgogICAgPgogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOAogICAgLwogICAgaW50Y18xIC8vIDIKICAgICsKICAgIGRpZyAyCiAgICBpbnRjXzMgLy8gOAogICAgJQogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBkaWcgMgogICAgaW50Y18yIC8vIDEKICAgIGJveF9leHRyYWN0CiAgICBkaWcgMQogICAgaW50Y18zIC8vIDgKICAgIDwKICAgIGFzc2VydCAvLyBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgc3dhcAogICAgdW5jb3ZlciAzCiAgICBzZXRiaXQKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgY292ZXIgMgogICAgYm94X3JlcGxhY2UgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MzgtMzkKICAgIC8vICMgd3JpdGUgZXZlcnkgaW5kZXgsIHRoZW4gcmVhZCBlYWNoIGJhY2sKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgYm94X3JvdW5kX3RyaXBfZm9yX2hlYWRlckAxMAoKYm94X3JvdW5kX3RyaXBfYWZ0ZXJfZm9yQDEzOgogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo0MQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKG4pOgogICAgaW50Y18wIC8vIDAKICAgIGJ1cnkgMQoKYm94X3JvdW5kX3RyaXBfZm9yX2hlYWRlckAxNDoKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NDEKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIGR1cAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weToyOAogICAgLy8gbiA9IFVJbnQ2NCgxNykKICAgIHB1c2hpbnQgMTcKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NDEKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIDwKICAgIGJ6IGJveF9yb3VuZF90cmlwX2FmdGVyX2ZvckAxNwogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo0MgogICAgLy8gYXNzZXJ0IGJvb2woc2VsZi5ib3hlZC52YWx1ZVtpXSkgPT0gKGkgJSAyID09IDApLCAidW5leHBlY3RlZCB2YWx1ZSBhZnRlciB3cml0ZXMiCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGRpZyAxCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgPAogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIGR1cAogICAgaW50Y18zIC8vIDgKICAgIC8KICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgaW50Y18zIC8vIDgKICAgICUKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgdW5jb3ZlciAyCiAgICBpbnRjXzIgLy8gMQogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIGRpZyAxCiAgICBpbnRjXzMgLy8gOAogICAgPAogICAgYXNzZXJ0IC8vIGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICBnZXRiaXQKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBieXRlY18xIC8vIDB4MDAKICAgICE9CiAgICBkaWcgMQogICAgaW50Y18xIC8vIDIKICAgICUKICAgICEKICAgID09CiAgICBhc3NlcnQgLy8gdW5leHBlY3RlZCB2YWx1ZSBhZnRlciB3cml0ZXMKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NDEKICAgIC8vIGZvciBpIGluIHVyYW5nZShuKToKICAgIGludGNfMiAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgYm94X3JvdW5kX3RyaXBfZm9yX2hlYWRlckAxNAoKYm94X3JvdW5kX3RyaXBfYWZ0ZXJfZm9yQDE3OgogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo0NC00NQogICAgLy8gIyBleHRlbmQgd2l0aCBhbiBhbHJlYWR5IGJpdCBwYWNrZWQgYXJyYXkKICAgIC8vIHNlbGYuYm94ZWQudmFsdWUuZXh0ZW5kKEJvb2xBcnJheShhcmM0LkJvb2woVHJ1ZSksIGFyYzQuQm9vbChGYWxzZSksIGFyYzQuQm9vbChUcnVlKSkpCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICBwdXNoYnl0ZXMgMHhhMAogICAgcHVzaGludCAzCiAgICBpbnRjXzIgLy8gMQogICAgY2FsbHN1YiBib3hfZHluYW1pY19hcnJheV9jb25jYXRfYml0cwogICAgcG9wCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQ2CiAgICAvLyBhc3NlcnQgc2VsZi5ib3hlZC52YWx1ZS5sZW5ndGggPT0gbiArIDMsICJ1bmV4cGVjdGVkIGxlbmd0aCBhZnRlciBleHRlbmQiCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGR1cAogICAgcHVzaGludCAyMAogICAgPT0KICAgIGFzc2VydCAvLyB1bmV4cGVjdGVkIGxlbmd0aCBhZnRlciBleHRlbmQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MjgKICAgIC8vIG4gPSBVSW50NjQoMTcpCiAgICBwdXNoaW50IDE3CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQ4CiAgICAvLyBzZWxmLmJveGVkLnZhbHVlW25dIGFuZCBub3Qgc2VsZi5ib3hlZC52YWx1ZVtuICsgMV0gYW5kIHNlbGYuYm94ZWQudmFsdWVbbiArIDJdCiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBwdXNoaW50IDQKICAgIGludGNfMiAvLyAxCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18yIC8vIDEKICAgIGdldGJpdAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NDQtNDUKICAgIC8vICMgZXh0ZW5kIHdpdGggYW4gYWxyZWFkeSBiaXQgcGFja2VkIGFycmF5CiAgICAvLyBzZWxmLmJveGVkLnZhbHVlLmV4dGVuZChCb29sQXJyYXkoYXJjNC5Cb29sKFRydWUpLCBhcmM0LkJvb2woRmFsc2UpLCBhcmM0LkJvb2woVHJ1ZSkpKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQ4CiAgICAvLyBzZWxmLmJveGVkLnZhbHVlW25dIGFuZCBub3Qgc2VsZi5ib3hlZC52YWx1ZVtuICsgMV0gYW5kIHNlbGYuYm94ZWQudmFsdWVbbiArIDJdCiAgICAhPQogICAgYnogYm94X3JvdW5kX3RyaXBfYm9vbF9mYWxzZUAyMQogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18xIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBwdXNoaW50IDE4CiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBwdXNoaW50IDQKICAgIGludGNfMiAvLyAxCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18xIC8vIDIKICAgIGdldGJpdAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NDQtNDUKICAgIC8vICMgZXh0ZW5kIHdpdGggYW4gYWxyZWFkeSBiaXQgcGFja2VkIGFycmF5CiAgICAvLyBzZWxmLmJveGVkLnZhbHVlLmV4dGVuZChCb29sQXJyYXkoYXJjNC5Cb29sKFRydWUpLCBhcmM0LkJvb2woRmFsc2UpLCBhcmM0LkJvb2woVHJ1ZSkpKQogICAgYnl0ZWNfMSAvLyAweDAwCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQ4CiAgICAvLyBzZWxmLmJveGVkLnZhbHVlW25dIGFuZCBub3Qgc2VsZi5ib3hlZC52YWx1ZVtuICsgMV0gYW5kIHNlbGYuYm94ZWQudmFsdWVbbiArIDJdCiAgICA9PQogICAgYnogYm94X3JvdW5kX3RyaXBfYm9vbF9mYWxzZUAyMQogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18xIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBwdXNoaW50IDE5CiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBwdXNoaW50IDQKICAgIGludGNfMiAvLyAxCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgcHVzaGludCAzCiAgICBnZXRiaXQKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQ0LTQ1CiAgICAvLyAjIGV4dGVuZCB3aXRoIGFuIGFscmVhZHkgYml0IHBhY2tlZCBhcnJheQogICAgLy8gc2VsZi5ib3hlZC52YWx1ZS5leHRlbmQoQm9vbEFycmF5KGFyYzQuQm9vbChUcnVlKSwgYXJjNC5Cb29sKEZhbHNlKSwgYXJjNC5Cb29sKFRydWUpKSkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo0OAogICAgLy8gc2VsZi5ib3hlZC52YWx1ZVtuXSBhbmQgbm90IHNlbGYuYm94ZWQudmFsdWVbbiArIDFdIGFuZCBzZWxmLmJveGVkLnZhbHVlW24gKyAyXQogICAgIT0KICAgIGJ6IGJveF9yb3VuZF90cmlwX2Jvb2xfZmFsc2VAMjEKICAgIGludGNfMiAvLyAxCgpib3hfcm91bmRfdHJpcF9ib29sX21lcmdlQDIyOgogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo0Ny00OQogICAgLy8gYXNzZXJ0ICgKICAgIC8vICAgICBzZWxmLmJveGVkLnZhbHVlW25dIGFuZCBub3Qgc2VsZi5ib3hlZC52YWx1ZVtuICsgMV0gYW5kIHNlbGYuYm94ZWQudmFsdWVbbiArIDJdCiAgICAvLyApLCAidW5leHBlY3RlZCB2YWx1ZSBhZnRlciBleHRlbmQiCiAgICBhc3NlcnQgLy8gdW5leHBlY3RlZCB2YWx1ZSBhZnRlciBleHRlbmQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NTEtNTMKICAgIC8vICMgZXh0ZW5kIHdpdGggYSByZWZlcmVuY2UgYXJyYXksIHdob3NlIGl0ZW1zIGFyZSBlYWNoIGVuY29kZWQgYXMgYSB3aG9sZSBieXRlCiAgICAvLyAjIHJhdGhlciB0aGFuIGJpdCBwYWNrZWQKICAgIC8vIHNlbGYuYm94ZWQudmFsdWUuZXh0ZW5kKFJlZmVyZW5jZUFycmF5W2FyYzQuQm9vbF0oKGFyYzQuQm9vbChGYWxzZSksIGFyYzQuQm9vbChUcnVlKSkpKQogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBpbnRjXzAgLy8gMAogICAgcHVzaGJ5dGVzIDB4MDA4MAogICAgaW50Y18xIC8vIDIKICAgIGludGNfMyAvLyA4CiAgICBjYWxsc3ViIGJveF9keW5hbWljX2FycmF5X2NvbmNhdF9iaXRzCiAgICBwb3AKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NTQKICAgIC8vIGFzc2VydCBzZWxmLmJveGVkLnZhbHVlLmxlbmd0aCA9PSBuICsgNSwgInVuZXhwZWN0ZWQgbGVuZ3RoIGFmdGVyIHJlZmVyZW5jZSBhcnJheSBleHRlbmQiCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGludGNfMCAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgYm94X2V4dHJhY3QKICAgIGJ0b2kKICAgIGR1cAogICAgcHVzaGludCAyMgogICAgPT0KICAgIGFzc2VydCAvLyB1bmV4cGVjdGVkIGxlbmd0aCBhZnRlciByZWZlcmVuY2UgYXJyYXkgZXh0ZW5kCiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjU2CiAgICAvLyBub3Qgc2VsZi5ib3hlZC52YWx1ZVtuICsgM10gYW5kIHNlbGYuYm94ZWQudmFsdWVbbiArIDRdCiAgICBwdXNoaW50IDIwCiAgICA+CiAgICBhc3NlcnQgLy8gaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBwdXNoaW50IDQKICAgIGludGNfMiAvLyAxCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgcHVzaGludCA0CiAgICBnZXRiaXQKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICAvLyByZWdyZXNzaW9uX3Rlc3RzL2JveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLnB5OjQ0LTQ1CiAgICAvLyAjIGV4dGVuZCB3aXRoIGFuIGFscmVhZHkgYml0IHBhY2tlZCBhcnJheQogICAgLy8gc2VsZi5ib3hlZC52YWx1ZS5leHRlbmQoQm9vbEFycmF5KGFyYzQuQm9vbChUcnVlKSwgYXJjNC5Cb29sKEZhbHNlKSwgYXJjNC5Cb29sKFRydWUpKSkKICAgIGJ5dGVjXzEgLy8gMHgwMAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo1NgogICAgLy8gbm90IHNlbGYuYm94ZWQudmFsdWVbbiArIDNdIGFuZCBzZWxmLmJveGVkLnZhbHVlW24gKyA0XQogICAgPT0KICAgIGJ6IGJveF9yb3VuZF90cmlwX2Jvb2xfZmFsc2VAMjUKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgaW50Y18wIC8vIDAKICAgIGludGNfMSAvLyAyCiAgICBib3hfZXh0cmFjdAogICAgYnRvaQogICAgcHVzaGludCAyMQogICAgPgogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgcHVzaGludCA0CiAgICBpbnRjXzIgLy8gMQogICAgYm94X2V4dHJhY3QgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIHB1c2hpbnQgNQogICAgZ2V0Yml0CiAgICBieXRlY18xIC8vIDB4MDAKICAgIGludGNfMCAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgLy8gcmVncmVzc2lvbl90ZXN0cy9ib3hfYm9vbF9hcnJheV9hcHBlbmRfcmVhZC5weTo0NC00NQogICAgLy8gIyBleHRlbmQgd2l0aCBhbiBhbHJlYWR5IGJpdCBwYWNrZWQgYXJyYXkKICAgIC8vIHNlbGYuYm94ZWQudmFsdWUuZXh0ZW5kKEJvb2xBcnJheShhcmM0LkJvb2woVHJ1ZSksIGFyYzQuQm9vbChGYWxzZSksIGFyYzQuQm9vbChUcnVlKSkpCiAgICBieXRlY18xIC8vIDB4MDAKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NTYKICAgIC8vIG5vdCBzZWxmLmJveGVkLnZhbHVlW24gKyAzXSBhbmQgc2VsZi5ib3hlZC52YWx1ZVtuICsgNF0KICAgICE9CiAgICBieiBib3hfcm91bmRfdHJpcF9ib29sX2ZhbHNlQDI1CiAgICBpbnRjXzIgLy8gMQoKYm94X3JvdW5kX3RyaXBfYm9vbF9tZXJnZUAyNjoKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NTUtNTcKICAgIC8vIGFzc2VydCAoCiAgICAvLyAgICAgbm90IHNlbGYuYm94ZWQudmFsdWVbbiArIDNdIGFuZCBzZWxmLmJveGVkLnZhbHVlW24gKyA0XQogICAgLy8gKSwgInVuZXhwZWN0ZWQgdmFsdWUgYWZ0ZXIgcmVmZXJlbmNlIGFycmF5IGV4dGVuZCIKICAgIGFzc2VydCAvLyB1bmV4cGVjdGVkIHZhbHVlIGFmdGVyIHJlZmVyZW5jZSBhcnJheSBleHRlbmQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6MjUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKYm94X3JvdW5kX3RyaXBfYm9vbF9mYWxzZUAyNToKICAgIGludGNfMCAvLyAwCiAgICBiIGJveF9yb3VuZF90cmlwX2Jvb2xfbWVyZ2VAMjYKCmJveF9yb3VuZF90cmlwX2Jvb2xfZmFsc2VAMjE6CiAgICBpbnRjXzAgLy8gMAogICAgYiBib3hfcm91bmRfdHJpcF9ib29sX21lcmdlQDIyCgoKLy8gdGVzdF9jYXNlcy5yZWdyZXNzaW9uX3Rlc3RzLmJveF9ib29sX2FycmF5X2FwcGVuZF9yZWFkLkJveEJvb2xBcnJheUFwcGVuZFJlYWQuYm94X291dF9vZl9ib3VuZHNbcm91dGluZ10oKSAtPiB2b2lkOgpib3hfb3V0X29mX2JvdW5kczoKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NjEtNjIKICAgIC8vICMgdHdvIGJvb2xzIGxlYXZlIHNpeCBwYWRkaW5nIGJpdHMgaW4gdGhlIGZpbmFsIGJ5dGUKICAgIC8vIHNlbGYuYm94ZWQudmFsdWUgPSBCb29sQXJyYXkoYXJjNC5Cb29sKFRydWUpLCBhcmM0LkJvb2woVHJ1ZSkpCiAgICBieXRlY18wIC8vICJib3hlZCIKICAgIGJveF9kZWwKICAgIHBvcAogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBwdXNoYnl0ZXMgMHgwMDAyYzAKICAgIGJveF9wdXQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NjMKICAgIC8vIHJldHVybiBzZWxmLmJveGVkLnZhbHVlWzJdLm5hdGl2ZQogICAgYnl0ZWNfMCAvLyAiYm94ZWQiCiAgICBpbnRjXzAgLy8gMAogICAgaW50Y18xIC8vIDIKICAgIGJveF9leHRyYWN0CiAgICBidG9pCiAgICBpbnRjXzEgLy8gMgogICAgPgogICAgYXNzZXJ0IC8vIGluZGV4IG91dCBvZiBib3VuZHMKICAgIGJ5dGVjXzAgLy8gImJveGVkIgogICAgaW50Y18xIC8vIDIKICAgIGludGNfMiAvLyAxCiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgaW50Y18xIC8vIDIKICAgIGdldGJpdAogICAgYnl0ZWNfMSAvLyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIC8vIHJlZ3Jlc3Npb25fdGVzdHMvYm94X2Jvb2xfYXJyYXlfYXBwZW5kX3JlYWQucHk6NTkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAEAAIBCCYDBWJveGVkAQADBoEBMRtBAB0xGRREMRhEggIEoLxOrASDEVTNNhoAjgIA0AKrADEZFDEYFBBDigUBi/uL/CO6F0cCi/4ISU4CSYH//wMORIv8IwhOA0yBBwglCklOBUyBBwglCkwJSUEAHYv7vUhLAUlOAgiL+0zTSwOLAAhMr4v7TwIiTwPSSwEWVwYCi/uL/E8CuyJMTwROAksCSwQMQQBYSwJJJQpLBghJTgVMJRhOBYv7TCS6TgVLBCUMQQAtSwJLBwxBACWL/U8CSU4CU08GTwZJTgNPAlROBSQITgRPAiQITgKL/whMQv/MTwRIi/tPBE8Fu0L/oIwAiYAAgcq4AjIMDUEAFrGBBrIQgQWyGSqyHiqyHyKyAbNC/+AovEgogAIAAL8iRQFJgREMQQAdRwKBAxgjEykiTwJUKCJPAiRJiP7vSCQIRQFC/9woIiO6F4EREkQovUiBBRJEIkUBSYERDEEAOCgiI7oXSwFJTwIMREklCiMISwElGChPAiS6SwElDERMUykiTwJUKRNLAYEDGCMTEkQkCEUBQv/BIkUBSYERDEEAOEcCIxgUKSJPAlQiUygiI7oXSwINREsBJQojCEsCJRgoSwIkuksBJQxETE8DVChOArskCEUBQv/BIkUBSYERDEEANigiI7oXSwFJTwIMREklCiMISwElGChPAiS6SwElDERMUykiTwJUKRNLASMYFBJEJAhFAUL/wygigAGggQMkiP4ISCgiI7oXSYEUEkSBEQ1EKIEEJLokUykiTwJUKRNBAIYoIiO6F4ESDUQogQQkuiNTKSJPAlQpEkEAbCgiI7oXgRMNRCiBBCS6gQNTKSJPAlQpE0EAUSREKCKAAgCAIyWI/aZIKCIjuhdJgRYSRIEUDUQogQQkuoEEUykiTwJUKRJBAB8oIiO6F4EVDUQogQQkuoEFUykiTwJUKRNBAAQkRCRDIkL/+SJC/6wovEgogAMAAsC/KCIjuhcjDUQoIyS6I1MpIk8CVIAEFR98dUxQsCRD", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }