{ "name": "Contract", "structs": {}, "methods": [ { "name": "test_array", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_extend", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_multiple_append", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "overhead", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_too_long", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_copy_and_extend", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_evaluation_order", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_assignment_maximum_cursage", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_allocations", "args": [ { "type": "uint64", "name": "num" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_iteration", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_quicksort", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": ["NoOp"] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_unobserved_write", "args": [], "returns": { "type": "void" }, "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": {} } }, "bareActions": { "create": ["NoOp"], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [888], "errorMessage": "array is expected length" }, { "pc": [1311, 1390, 1606], "errorMessage": "array is not sorted" }, { "pc": [552], "errorMessage": "cannot pop from empty array" }, { "pc": [966, 996, 1004, 1011, 1016], "errorMessage": "expected 4" }, { "pc": [944], "errorMessage": "expected 5" }, { "pc": [1560], "errorMessage": "expected array of length 32" }, { "pc": [1282], "errorMessage": "expected array of length 5" }, { "pc": [1353], "errorMessage": "incorrect array value" }, { "pc": [ 314, 323, 326, 329, 717, 1112, 1129, 1187, 1641, 1660 ], "errorMessage": "index access is out of bounds" }, { "pc": [1474], "errorMessage": "invalid array length header" }, { "pc": [ 416, 465, 489, 618, 680, 705, 709, 804, 833, 837, 841, 869, 892, 909, 924, 967, 1043, 1262, 1440, 1540 ], "errorMessage": "max array length exceeded" }, { "pc": [1685], "errorMessage": "no available slots" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDggMCA1IDUxMgogICAgYnl0ZWNibG9jayAweCAweDAwMDAwMDAwMDAwMDAwMDAgMHgwMDAwMDAwMDAwMDAwMDA0CiAgICBwdXNoYnl0ZXMgMHg3ZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmCiAgICBzdG9yZSAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMwogICAgLy8gY2xhc3MgQ29udHJhY3QoYXJjNC5BUkM0Q29udHJhY3QpOgogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fX19hbGdvcHlfZGVmYXVsdF9jcmVhdGVAMTkKICAgIHR4biBPbkNvbXBsZXRpb24KICAgICEKICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGFzc2VydAogICAgcHVzaGJ5dGVzcyAweGEzM2JlODczIDB4ZTBjMzc4ZTkgMHgzNjZmNTA5ZCAweDU4MzUxYTUwIDB4ZmE5OWU5ODQgMHhhMjBlNDQwZiAweDE3OWFjM2Y5IDB4NDVkY2M4MzYgMHhmMTdmNmYwYSAweDg0NWUxYjRlIDB4NzYyMWNmZDEgMHg1NjYxYTY3YyAvLyBtZXRob2QgInRlc3RfYXJyYXkoKXZvaWQiLCBtZXRob2QgInRlc3RfYXJyYXlfZXh0ZW5kKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FycmF5X211bHRpcGxlX2FwcGVuZCgpdm9pZCIsIG1ldGhvZCAib3ZlcmhlYWQoKXZvaWQiLCBtZXRob2QgInRlc3RfYXJyYXlfdG9vX2xvbmcoKXZvaWQiLCBtZXRob2QgInRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXIoKXZvaWQiLCBtZXRob2QgInRlc3RfYXJyYXlfYXNzaWdubWVudF9tYXhpbXVtX2N1cnNhZ2UoKXZvaWQiLCBtZXRob2QgInRlc3RfYWxsb2NhdGlvbnModWludDY0KXZvaWQiLCBtZXRob2QgInRlc3RfaXRlcmF0aW9uKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X3F1aWNrc29ydCgpdm9pZCIsIG1ldGhvZCAidGVzdF91bm9ic2VydmVkX3dyaXRlKCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggdGVzdF9hcnJheSB0ZXN0X2FycmF5X2V4dGVuZCB0ZXN0X2FycmF5X211bHRpcGxlX2FwcGVuZCBtYWluX292ZXJoZWFkX3JvdXRlQDcgdGVzdF9hcnJheV90b29fbG9uZyB0ZXN0X2FycmF5X2NvcHlfYW5kX2V4dGVuZCB0ZXN0X2FycmF5X2V2YWx1YXRpb25fb3JkZXIgdGVzdF9hcnJheV9hc3NpZ25tZW50X21heGltdW1fY3Vyc2FnZSB0ZXN0X2FsbG9jYXRpb25zIHRlc3RfaXRlcmF0aW9uIHRlc3RfcXVpY2tzb3J0IHRlc3RfdW5vYnNlcnZlZF93cml0ZQogICAgZXJyCgptYWluX292ZXJoZWFkX3JvdXRlQDc6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo3MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCm1haW5fX19hbGdvcHlfZGVmYXVsdF9jcmVhdGVAMTk6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgJiYKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LnF1aWNrc29ydF93aW5kb3coYXJyOiB1aW50NjQsIHdpbmRvd19sZWZ0OiB1aW50NjQsIHdpbmRvd19yaWdodDogdWludDY0KSAtPiB2b2lkOgpxdWlja3NvcnRfd2luZG93OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjAxLTIwNAogICAgLy8gQHN1YnJvdXRpbmUKICAgIC8vIGRlZiBxdWlja3NvcnRfd2luZG93KAogICAgLy8gICAgIGFycjogUmVmZXJlbmNlQXJyYXlbVUludDY0XSwgd2luZG93X2xlZnQ6IFVJbnQ2NCwgd2luZG93X3JpZ2h0OiBVSW50NjQKICAgIC8vICkgLT4gTm9uZToKICAgIHByb3RvIDMgMAogICAgYnl0ZWNfMCAvLyAiIgogICAgZHVwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMDcKICAgIC8vIHBpdm90ID0gYXJyWyh3aW5kb3dfbGVmdCArIHdpbmRvd19yaWdodCkgLy8gMl0KICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIC0xCiAgICArCiAgICBwdXNoaW50IDIKICAgIC8KICAgIGZyYW1lX2RpZyAtMwogICAgbG9hZHMKICAgIHN3YXAKICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZnJhbWVfZGlnIC0xCiAgICBmcmFtZV9kaWcgLTIKCnF1aWNrc29ydF93aW5kb3dfd2hpbGVfdG9wQDM6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMTEtMjEyCiAgICAvLyAjIG1vdmUgbGVmdCBvZiB3aW5kb3cgdG93YXJkcyBwaXZvdAogICAgLy8gd2hpbGUgYXJyW2xlZnRdIDwgcGl2b3Q6CiAgICBmcmFtZV9kaWcgLTMKICAgIGxvYWRzCiAgICBmcmFtZV9kaWcgNAogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGR1cAogICAgZnJhbWVfYnVyeSAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZnJhbWVfZGlnIDIKICAgIDwKICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfd2hpbGVfdG9wQDYKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjIxMwogICAgLy8gbGVmdCArPSAxCiAgICBmcmFtZV9kaWcgNAogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGZyYW1lX2J1cnkgNAogICAgYiBxdWlja3NvcnRfd2luZG93X3doaWxlX3RvcEAzCgpxdWlja3NvcnRfd2luZG93X3doaWxlX3RvcEA2OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjE0LTIxNQogICAgLy8gIyBtb3ZlIHJpZ2h0IG9mIHdpbmRvdyB0b3dhcmRzIHBpdm90CiAgICAvLyB3aGlsZSBwaXZvdCA8IGFycltyaWdodF06CiAgICBmcmFtZV9kaWcgLTMKICAgIGxvYWRzCiAgICBmcmFtZV9kaWcgMwogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGR1cAogICAgZnJhbWVfYnVyeSAxCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZnJhbWVfZGlnIDIKICAgID4KICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfd2hpbGVAMTAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjIxNi0yMTcKICAgIC8vICMgYnJlYWsgb3V0IG9mIGxvb3AgaWYgcmlnaHQgd291bGQgZ28gbmVnYXRpdmUKICAgIC8vIGlmIG5vdCByaWdodDoKICAgIGZyYW1lX2RpZyAzCiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMTkKICAgIC8vIHJpZ2h0IC09IDEKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZnJhbWVfYnVyeSAzCiAgICBiIHF1aWNrc29ydF93aW5kb3dfd2hpbGVfdG9wQDYKCnF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfd2hpbGVAMjI6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNDctMjQ4CiAgICAvLyAjIHNvcnQgbGVmdCBoYWxmIG9mIHdpbmRvdwogICAgLy8gaWYgd2luZG93X2xlZnQgPCByaWdodDoKICAgIGZyYW1lX2RpZyAtMgogICAgZnJhbWVfZGlnIDMKICAgIDwKICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAyNAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjQ5CiAgICAvLyBxdWlja3NvcnRfd2luZG93KGFyciwgd2luZG93X2xlZnQsIHJpZ2h0KQogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgLTIKICAgIGZyYW1lX2RpZyAzCiAgICBjYWxsc3ViIHF1aWNrc29ydF93aW5kb3cKCnF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAyNDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI1MC0yNTEKICAgIC8vICMgc29ydCByaWdodCBoYWxmIG9mIHdpbmRvdwogICAgLy8gaWYgbGVmdCA8IHdpbmRvd19yaWdodDoKICAgIGZyYW1lX2RpZyA0CiAgICBmcmFtZV9kaWcgLTEKICAgIDwKICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAyNgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjUyCiAgICAvLyBxdWlja3NvcnRfd2luZG93KGFyciwgbGVmdCwgd2luZG93X3JpZ2h0KQogICAgZnJhbWVfZGlnIC0zCiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIC0xCiAgICBjYWxsc3ViIHF1aWNrc29ydF93aW5kb3cKCnF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAyNjoKICAgIHJldHN1YgoKcXVpY2tzb3J0X3dpbmRvd19hZnRlcl93aGlsZUAxMDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjIyMS0yMjIKICAgIC8vICMgaWYgd2luZG93IGlzbid0IGVtcHR5IHRoZW4gc3dhcCB2YWx1ZXMgYW5kIG1vdmUgd2luZG93IGluCiAgICAvLyBpZiBsZWZ0IDwgcmlnaHQ6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDMKICAgIDwKICAgIGJ6IHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAxNgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjIzCiAgICAvLyBhcnJbbGVmdF0sIGFycltyaWdodF0gPSBhcnJbcmlnaHRdLCBhcnJbbGVmdF0KICAgIGZyYW1lX2RpZyAtMwogICAgbG9hZHMKICAgIGR1cAogICAgZnJhbWVfZGlnIDEKICAgIGR1cAogICAgY292ZXIgMwogICAgaW50Y18xIC8vIDgKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgZGlnIDEKICAgIGZyYW1lX2RpZyAwCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGludGNfMSAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGNvdmVyIDMKICAgIHJlcGxhY2UzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgY292ZXIgMgogICAgcmVwbGFjZTMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBmcmFtZV9kaWcgLTMKICAgIHN3YXAKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjI0CiAgICAvLyBsZWZ0ICs9IDEKICAgIGZyYW1lX2RpZyA0CiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSA0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMjUtMjI2CiAgICAvLyAjIGJyZWFrIG91dCBvZiBsb29wIGlmIHJpZ2h0IHdvdWxkIGdvIG5lZ2F0aXZlCiAgICAvLyBpZiBub3QgcmlnaHQ6CiAgICBmcmFtZV9kaWcgMwogICAgYnogcXVpY2tzb3J0X3dpbmRvd19hZnRlcl93aGlsZUAyMgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjI4CiAgICAvLyByaWdodCAtPSAxCiAgICBmcmFtZV9kaWcgMwogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGR1cAogICAgZnJhbWVfYnVyeSAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMjktMjMwCiAgICAvLyAjIGV4cGxpY2l0IGNvbnRpbnVlIHRvIGF2b2lkIGhpdHRpbmcgb3V0ZXIgYnJlYWsKICAgIC8vIGlmIGxlZnQgPD0gcmlnaHQ6CiAgICBmcmFtZV9kaWcgNAogICAgPj0KICAgIGJueiBxdWlja3NvcnRfd2luZG93X3doaWxlX3RvcEAzCiAgICBiIHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfd2hpbGVAMjIKCnF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfaWZfZWxzZUAxNjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjIzNS0yMzYKICAgIC8vICMgaWYgd2luZG93IGlzIGp1c3Qgb25lIGl0ZW0sIGRvbid0IGJvdGhlciBzd2FwcGluZywgYnV0IHN0aWxsIGFkanVzdCB3aW5kb3cKICAgIC8vIGlmIGxlZnQgPT0gcmlnaHQ6CiAgICBmcmFtZV9kaWcgNAogICAgZnJhbWVfZGlnIDMKICAgID09CiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMzcKICAgIC8vIGxlZnQgKz0gMQogICAgZnJhbWVfZGlnIDQKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjIzOC0yMzkKICAgIC8vICMgZG9uJ3QgZGVjcmVtZW50IHJpZ2h0IGlmIGl0IHdvdWxkIGdvIG5lZ2F0aXZlCiAgICAvLyBpZiByaWdodDoKICAgIGZyYW1lX2RpZyAzCiAgICBieiBxdWlja3NvcnRfd2luZG93X2FmdGVyX3doaWxlQDIyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNDAKICAgIC8vIHJpZ2h0IC09IDEKICAgIGZyYW1lX2RpZyAzCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgZnJhbWVfYnVyeSAzCiAgICBiIHF1aWNrc29ydF93aW5kb3dfYWZ0ZXJfd2hpbGVAMjIKCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJyYXlzLnVpbnQ2NC5jcmVhdGVfYXJyYXkoKSAtPiB1aW50NjQ6CmNyZWF0ZV9hcnJheToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI1NS0yNTYKICAgIC8vIEBzdWJyb3V0aW5lKGlubGluZT1GYWxzZSkKICAgIC8vIGRlZiBjcmVhdGVfYXJyYXkoKSAtPiBSZWZlcmVuY2VBcnJheVtVSW50NjRdOgogICAgcHJvdG8gMCAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNTcKICAgIC8vIGFyciA9IFJlZmVyZW5jZUFycmF5W1VJbnQ2NF0oKQogICAgY2FsbHN1YiBfcHV5YV9saWIubWVtLm5ld19zbG90CiAgICBkdXAKICAgIGJ5dGVjXzAgLy8gMHgKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjU4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzIgLy8gMAoKY3JlYXRlX2FycmF5X2Zvcl9oZWFkZXJAMToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI1OAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgZnJhbWVfZGlnIDEKICAgIGludGNfMyAvLyA1CiAgICA8CiAgICBieiBjcmVhdGVfYXJyYXlfYWZ0ZXJfZm9yQDQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI1OQogICAgLy8gYXJyLmFwcGVuZChpKQogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgbG9hZHMKICAgIGZyYW1lX2RpZyAxCiAgICBkdXAKICAgIGNvdmVyIDMKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNTgKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBmcmFtZV9idXJ5IDEKICAgIGIgY3JlYXRlX2FycmF5X2Zvcl9oZWFkZXJAMQoKY3JlYXRlX2FycmF5X2FmdGVyX2ZvckA0OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjYwCiAgICAvLyByZXR1cm4gYXJyCiAgICByZXRzdWIKCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJyYXlzLnVpbnQ2NC5hc3NlcnRfbGFzdF9pc196ZXJvKGFycjogdWludDY0KSAtPiB2b2lkOgphc3NlcnRfbGFzdF9pc196ZXJvOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjYzLTI2NAogICAgLy8gQHN1YnJvdXRpbmUoaW5saW5lPUZhbHNlKQogICAgLy8gZGVmIGFzc2VydF9sYXN0X2lzX3plcm8oYXJyOiBSZWZlcmVuY2VBcnJheVtVSW50NjRdKSAtPiBOb25lOgogICAgcHJvdG8gMSAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNjUKICAgIC8vIGFzc2VydCBhcnJbYXJyLmxlbmd0aCAtIDFdID09IDAKICAgIGZyYW1lX2RpZyAtMQogICAgbG9hZHMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBleHRyYWN0X3VpbnQ2NAogICAgIQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJyYXlzLnVpbnQ2NC5hZGRfeChhcnI6IHVpbnQ2NCwgeDogdWludDY0KSAtPiB2b2lkOgphZGRfeDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI3Ny0yNzgKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgYWRkX3goYXJyOiBSZWZlcmVuY2VBcnJheVtVSW50NjRdLCB4OiBVSW50NjQpIC0+IE5vbmU6CiAgICBwcm90byAyIDAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI3OQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKHgpOgogICAgaW50Y18yIC8vIDAKCmFkZF94X2Zvcl9oZWFkZXJAMToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI3OQogICAgLy8gZm9yIGkgaW4gdXJhbmdlKHgpOgogICAgZnJhbWVfZGlnIDAKICAgIGZyYW1lX2RpZyAtMQogICAgPAogICAgYnogYWRkX3hfYWZ0ZXJfZm9yQDQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI4MAogICAgLy8gYXJyLmFwcGVuZChpKQogICAgZnJhbWVfZGlnIC0yCiAgICBsb2FkcwogICAgZnJhbWVfZGlnIDAKICAgIGR1cAogICAgY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBmcmFtZV9kaWcgLTIKICAgIHN3YXAKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6Mjc5CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoeCk6CiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgZnJhbWVfYnVyeSAwCiAgICBiIGFkZF94X2Zvcl9oZWFkZXJAMQoKYWRkX3hfYWZ0ZXJfZm9yQDQ6CiAgICByZXRzdWIKCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJyYXlzLnVpbnQ2NC5hcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyOiB1aW50NjQpIC0+IHVpbnQ2NDoKYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjkxLTI5MgogICAgLy8gQHN1YnJvdXRpbmUKICAgIC8vIGRlZiBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyOiBSZWZlcmVuY2VBcnJheVtVSW50NjRdKSAtPiBSZWZlcmVuY2VBcnJheVtVSW50NjRdOgogICAgcHJvdG8gMSAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyOTMKICAgIC8vIGFyci5hcHBlbmQoYXJyLmxlbmd0aCkKICAgIGZyYW1lX2RpZyAtMQogICAgbG9hZHMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBmcmFtZV9kaWcgLTEKICAgIHN3YXAKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6Mjk0CiAgICAvLyByZXR1cm4gYXJyCiAgICBmcmFtZV9kaWcgLTEKICAgIHJldHN1YgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LkNvbnRyYWN0LnRlc3RfYXJyYXlbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2FycmF5OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTYKICAgIC8vIGFyciA9IFJlZmVyZW5jZUFycmF5W1VJbnQ2NF0oKQogICAgY2FsbHN1YiBfcHV5YV9saWIubWVtLm5ld19zbG90CiAgICBkdXAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE5CiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCg0MikpCiAgICBwdXNoaW50IDQyCiAgICBpdG9iCiAgICBkaWcgMQogICAgc3dhcAogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyMwogICAgLy8gYWRkX3goYXJyLCBVSW50NjQoNSkpCiAgICBkdXAKICAgIGludGNfMyAvLyA1CiAgICBjYWxsc3ViIGFkZF94CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNAogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gNgogICAgbG9hZHMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgZHVwCiAgICBwdXNoaW50IDYKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI1CiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSA0CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI3CiAgICAvLyBwb3BfeChhcnIsIHg9VUludDY0KDMpLCBleHBlY3RlZD1VSW50NjQoNCkpCiAgICBwdXNoaW50IDQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI4NQogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIGludGNfMiAvLyAwCgp0ZXN0X2FycmF5X2Zvcl9oZWFkZXJAMjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI4NQogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIGR1cAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjcKICAgIC8vIHBvcF94KGFyciwgeD1VSW50NjQoMyksIGV4cGVjdGVkPVVJbnQ2NCg0KSkKICAgIHB1c2hpbnQgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6Mjg1CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKHgpOgogICAgPAogICAgYnogdGVzdF9hcnJheV9hZnRlcl9mb3JANAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6Mjg2CiAgICAvLyBwb3BwZWQgPSBhcnIucG9wKCkKICAgIGRpZyAyCiAgICBkdXAKICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgZHVwCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgaW50Y18wIC8vIDEKICAgIC0gLy8gb24gZXJyb3I6IGNhbm5vdCBwb3AgZnJvbSBlbXB0eSBhcnJheQogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGRpZyAyCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgc3dhcAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6Mjg2CiAgICAvLyBwb3BwZWQgPSBhcnIucG9wKCkKICAgIGludGNfMSAvLyA4CiAgICAtCiAgICB1bmNvdmVyIDIKICAgIGludGNfMiAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI4NgogICAgLy8gcG9wcGVkID0gYXJyLnBvcCgpCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6Mjg3CiAgICAvLyBhc3NlcnQgcG9wcGVkID09IGV4cGVjdGVkCiAgICBkaWcgMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyODgKICAgIC8vIGV4cGVjdGVkIC09IDEKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBidXJ5IDIKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI4NQogICAgLy8gZm9yIF9pIGluIHVyYW5nZSh4KToKICAgIGR1cAogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiB0ZXN0X2FycmF5X2Zvcl9oZWFkZXJAMgoKdGVzdF9hcnJheV9hZnRlcl9mb3JANDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI4CiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSAzCiAgICBkaWcgMgogICAgZHVwCiAgICBsb2FkcwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBkdXAKICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MjkKICAgIC8vIGFzc2VydCBhcnJbLTFdID09IDEKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MzEKICAgIC8vIGFyci5hcHBlbmQoVUludDY0KDQzKSkKICAgIHB1c2hpbnQgNDMKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgZHVwMgogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTozMgogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gNAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBkdXAKICAgIHB1c2hpbnQgNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MzMKICAgIC8vIGFzc2VydCBhcnJbLTFdID09IDQzCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGRpZyAxCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0MwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MzQKICAgIC8vIGFzc2VydCBhcnJbMF0gPT0gNDIKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0MgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MzYKICAgIC8vIGFkZF94KGFyciwgVUludDY0KDEwKSkKICAgIGR1cAogICAgcHVzaGludCAxMAogICAgY2FsbHN1YiBhZGRfeAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MzcKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDE0CiAgICBkdXAKICAgIGxvYWRzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCAxNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MzgKICAgIC8vIGFzc2VydCBhcnJbLTFdID09IDkKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDkKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjQwCiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCg0NCkpCiAgICBwdXNoaW50IDQ0CiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjQxCiAgICAvLyBhc3NlcnQgYXJyLmxlbmd0aCA9PSAxNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBkdXAKICAgIHB1c2hpbnQgMTUKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjQyCiAgICAvLyBhc3NlcnQgYXJyWy0xXSA9PSA0NAogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBkaWcgMQogICAgc3dhcAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjI3MgogICAgLy8gYXJyLmFwcGVuZChVSW50NjQoOTkpKQogICAgcHVzaGludCA5OQogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToyNzMKICAgIC8vIGFycjIuYXBwZW5kKFVJbnQ2NCgxMDApKQogICAgcHVzaGludCAxMDAKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NDQKICAgIC8vIHJldHVybl9yZWYoYXJyLCBhcnIpWzBdICs9IDIKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDIKICAgICsKICAgIGl0b2IKICAgIHJlcGxhY2UyIDAgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICBkaWcgMQogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo0NQogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gMTcKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgZHVwCiAgICBwdXNoaW50IDE3CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo0NgogICAgLy8gYXNzZXJ0IGFyclswXSA9PSA0NAogICAgZGlnIDEKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA0NAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NDcKICAgIC8vIGFzc2VydCBhcnJbLTJdID09IDk5CiAgICBkdXAKICAgIHB1c2hpbnQgMgogICAgLQogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGRpZyAyCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCA5OQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NDgKICAgIC8vIGFzc2VydCBhcnJbLTFdID09IDEwMAogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBleHRyYWN0X3VpbnQ2NAogICAgcHVzaGludCAxMDAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LkNvbnRyYWN0LnRlc3RfYXJyYXlfZXh0ZW5kW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9hcnJheV9leHRlbmQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo1MgogICAgLy8gYXJyID0gUmVmZXJlbmNlQXJyYXlbVUludDY0XSgpCiAgICBjYWxsc3ViIF9wdXlhX2xpYi5tZW0ubmV3X3Nsb3QKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAweAogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo1MwogICAgLy8gYWRkX3goYXJyLCBVSW50NjQoMSkpCiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICBjYWxsc3ViIGFkZF94CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo1OQogICAgLy8gYXJyLmV4dGVuZChhcnIyKQogICAgZHVwCiAgICBsb2FkcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NTcKICAgIC8vIGFycjIuYXBwZW5kKFVJbnQ2NCgzKSkKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NTkKICAgIC8vIGFyci5leHRlbmQoYXJyMikKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgc3dhcAogICAgZGlnIDEKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NjAKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDQKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIHB1c2hpbnQgNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NTAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLkFycmF5cy51aW50NjQuQ29udHJhY3QudGVzdF9hcnJheV9tdWx0aXBsZV9hcHBlbmRbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2FycmF5X211bHRpcGxlX2FwcGVuZDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjY0CiAgICAvLyBhcnIgPSBSZWZlcmVuY2VBcnJheVtVSW50NjRdKCkKICAgIGNhbGxzdWIgX3B1eWFfbGliLm1lbS5uZXdfc2xvdAogICAgZHVwCiAgICBieXRlY18wIC8vIDB4CiAgICBzdG9yZXMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjY1CiAgICAvLyBhZGRfeChhcnIsIFVJbnQ2NCgxKSkKICAgIGR1cAogICAgaW50Y18wIC8vIDEKICAgIGNhbGxzdWIgYWRkX3gKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjY2CiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCgxKSkKICAgIGR1cAogICAgbG9hZHMKICAgIGludGNfMCAvLyAxCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjY3CiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCgyKSkKICAgIHB1c2hpbnQgMgogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo2OAogICAgLy8gYXJyLmFwcGVuZChVSW50NjQoMykpCiAgICBwdXNoaW50IDMKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgc3dhcAogICAgZGlnIDEKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NjkKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDQKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIHB1c2hpbnQgNAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NjIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLkFycmF5cy51aW50NjQuQ29udHJhY3QudGVzdF9hcnJheV90b29fbG9uZ1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfYXJyYXlfdG9vX2xvbmc6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo3NwogICAgLy8gYXJyYXkgPSBSZWZlcmVuY2VBcnJheVtVSW50NjRdKCkKICAgIGJ5dGVjXzAgLy8gMHgKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5Ojc4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNTEyKToKICAgIGludGNfMiAvLyAwCgp0ZXN0X2FycmF5X3Rvb19sb25nX2Zvcl9oZWFkZXJAMjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5Ojc4CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNTEyKToKICAgIGR1cAogICAgaW50YyA0IC8vIDUxMgogICAgPAogICAgYnogdGVzdF9hcnJheV90b29fbG9uZ19hZnRlcl9mb3JANQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NzkKICAgIC8vIGFycmF5LmFwcGVuZChpKQogICAgZHVwMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGJ1cnkgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6NzgKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1MTIpOgogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiB0ZXN0X2FycmF5X3Rvb19sb25nX2Zvcl9oZWFkZXJAMgoKdGVzdF9hcnJheV90b29fbG9uZ19hZnRlcl9mb3JANToKICAgIGRpZyAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo4MAogICAgLy8gYXNzZXJ0IGFycmF5Lmxlbmd0aCA9PSA1MTIsICJhcnJheSBpcyBleHBlY3RlZCBsZW5ndGgiCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIGludGMgNCAvLyA1MTIKICAgID09CiAgICBhc3NlcnQgLy8gYXJyYXkgaXMgZXhwZWN0ZWQgbGVuZ3RoCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo4MgogICAgLy8gYXJyYXkuYXBwZW5kKFVJbnQ2NCg1MTIpKSAgIyB0aGlzIHdpbGwgZmFpbAogICAgaW50YyA0IC8vIDUxMgogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICBwb3AKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5Ojc1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LkNvbnRyYWN0LnRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9hcnJheV9jb3B5X2FuZF9leHRlbmQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo4NgogICAgLy8gYXJyYXkgPSBSZWZlcmVuY2VBcnJheVtVSW50NjRdKCkKICAgIGJ5dGVjXzAgLy8gMHgKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5Ojg3CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzIgLy8gMAoKdGVzdF9hcnJheV9jb3B5X2FuZF9leHRlbmRfZm9yX2hlYWRlckAyOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6ODcKICAgIC8vIGZvciBpIGluIHVyYW5nZSg1KToKICAgIGR1cAogICAgaW50Y18zIC8vIDUKICAgIDwKICAgIGJ6IHRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kX2FmdGVyX2ZvckA1CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo4OAogICAgLy8gYXJyYXkuYXBwZW5kKGkpCiAgICBkdXAyCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgYnVyeSAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo4NwogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiB0ZXN0X2FycmF5X2NvcHlfYW5kX2V4dGVuZF9mb3JfaGVhZGVyQDIKCnRlc3RfYXJyYXlfY29weV9hbmRfZXh0ZW5kX2FmdGVyX2ZvckA1OgogICAgZGlnIDEKICAgIGR1cAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6OTEKICAgIC8vIGFycmF5LmFwcGVuZChVSW50NjQoNSkpCiAgICBpbnRjXzMgLy8gNQogICAgaXRvYgogICAgY29uY2F0IC8vIG9uIGVycm9yOiBtYXggYXJyYXkgbGVuZ3RoIGV4Y2VlZGVkCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo5MgogICAgLy8gYXNzZXJ0IGFycmF5Lmxlbmd0aCA9PSA2CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIGR1cAogICAgcHVzaGludCA2CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo5MwogICAgLy8gYXNzZXJ0IGFycmF5Wy0xXSA9PSA1LCAiZXhwZWN0ZWQgNSIKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzMgLy8gNQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCA1CiAgICBkaWcgMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6OTUKICAgIC8vIGFzc2VydCBhcnJheTIubGVuZ3RoID09IDUKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgZHVwCiAgICBpbnRjXzMgLy8gNQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6OTYKICAgIC8vIGFzc2VydCBhcnJheTJbLTFdID09IDQsICJleHBlY3RlZCA0IgogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBkaWcgMQogICAgc3dhcAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNAogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCA0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weTo5OAogICAgLy8gYXJyYXkuZXh0ZW5kKGFycmF5MikKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6OTkKICAgIC8vIGFzc2VydCBhcnJheS5sZW5ndGggPT0gMTEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgZHVwCiAgICBwdXNoaW50IDExCiAgICA9PQogICAgYXNzZXJ0CiAgICB1bmNvdmVyIDIKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEwMAogICAgLy8gYXNzZXJ0IGFycmF5Mi5sZW5ndGggPT0gNQogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgaW50Y18zIC8vIDUKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEwMQogICAgLy8gYXNzZXJ0IGFycmF5Wy0xXSA9PSA0LCAiZXhwZWN0ZWQgNCIKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgZGlnIDEKICAgIHN3YXAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgNAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTAyCiAgICAvLyBhc3NlcnQgYXJyYXlbNF0gPT0gNCwgImV4cGVjdGVkIDQiCiAgICBkdXAKICAgIHB1c2hpbnQgMzIKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgNAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTAzCiAgICAvLyBhc3NlcnQgYXJyYXlbNV0gPT0gNSwgImV4cGVjdGVkIDQiCiAgICBkdXAKICAgIHB1c2hpbnQgNDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzMgLy8gNQogICAgPT0KICAgIGFzc2VydCAvLyBleHBlY3RlZCA0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMDQKICAgIC8vIGFzc2VydCBhcnJheVs2XSA9PSAwLCAiZXhwZWN0ZWQgNCIKICAgIHB1c2hpbnQgNDgKICAgIGV4dHJhY3RfdWludDY0CiAgICAhCiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgNAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6ODQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLkFycmF5cy51aW50NjQuQ29udHJhY3QudGVzdF9hcnJheV9ldmFsdWF0aW9uX29yZGVyW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9hcnJheV9ldmFsdWF0aW9uX29yZGVyOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTA4CiAgICAvLyBhcnIgPSBSZWZlcmVuY2VBcnJheVtVSW50NjRdKCkKICAgIGNhbGxzdWIgX3B1eWFfbGliLm1lbS5uZXdfc2xvdAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTA5CiAgICAvLyBhcnIuYXBwZW5kKFVJbnQ2NCgzKSkKICAgIHB1c2hpbnQgMwogICAgaXRvYgogICAgZGlnIDEKICAgIHN3YXAKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTEwCiAgICAvLyBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4oYXJyKS5leHRlbmQoYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuKGFycikpCiAgICBkdXAKICAgIGNhbGxzdWIgYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuCiAgICBkaWcgMQogICAgY2FsbHN1YiBhcHBlbmRfbGVuZ3RoX2FuZF9yZXR1cm4KICAgIGxvYWRzCiAgICBkaWcgMQogICAgbG9hZHMKICAgIHN3YXAKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMTEKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDYKICAgIGR1cAogICAgbG9hZHMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgcHVzaGludCA2CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMTIKICAgIC8vIGFzc2VydCBhcnJbMF0gPT0gMwogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTEzCiAgICAvLyBhc3NlcnQgYXJyWzFdID09IDEKICAgIGR1cAogICAgaW50Y18xIC8vIDgKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTE0CiAgICAvLyBhc3NlcnQgYXJyWzJdID09IDIKICAgIGR1cAogICAgcHVzaGludCAxNgogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTE1CiAgICAvLyBhc3NlcnQgYXJyWzNdID09IDMKICAgIGR1cAogICAgcHVzaGludCAyNAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTE2CiAgICAvLyBhc3NlcnQgYXJyWzRdID09IDEKICAgIGR1cAogICAgcHVzaGludCAzMgogICAgZXh0cmFjdF91aW50NjQKICAgIGludGNfMCAvLyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMTcKICAgIC8vIGFzc2VydCBhcnJbNV0gPT0gMgogICAgcHVzaGludCA0MAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTE5CiAgICAvLyBhcnJbYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuKGFycilbMF1dID0gYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuKGFycilbLTFdCiAgICBkdXAKICAgIGNhbGxzdWIgYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuCiAgICBsb2FkcwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGludGNfMSAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGRpZyAxCiAgICBjYWxsc3ViIGFwcGVuZF9sZW5ndGhfYW5kX3JldHVybgogICAgbG9hZHMKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgZGlnIDIKICAgIGxvYWRzCiAgICBzd2FwCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgdW5jb3ZlciAyCiAgICByZXBsYWNlMyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHN3YXAKICAgIGRpZyAxCiAgICBzdG9yZXMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEyMAogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gOAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBpbnRjXzEgLy8gOAogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTIxCiAgICAvLyBhc3NlcnQgYXJyWzZdID09IDYKICAgIGR1cAogICAgcHVzaGludCA0OAogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTIyCiAgICAvLyBhc3NlcnQgYXJyWzddID09IDcKICAgIGR1cAogICAgcHVzaGludCA1NgogICAgZXh0cmFjdF91aW50NjQKICAgIHB1c2hpbnQgNwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTIzCiAgICAvLyBhc3NlcnQgYXJyWzNdID09IDYKICAgIHB1c2hpbnQgMjQKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDYKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEwNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuQXJyYXlzLnVpbnQ2NC5Db250cmFjdC50ZXN0X2FycmF5X2Fzc2lnbm1lbnRfbWF4aW11bV9jdXJzYWdlW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9hcnJheV9hc3NpZ25tZW50X21heGltdW1fY3Vyc2FnZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEyNwogICAgLy8gYXJyID0gUmVmZXJlbmNlQXJyYXlbVUludDY0XSgpCiAgICBjYWxsc3ViIF9wdXlhX2xpYi5tZW0ubmV3X3Nsb3QKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEyOAogICAgLy8gYXJyLmFwcGVuZChVSW50NjQoMykpCiAgICBwdXNoaW50IDMKICAgIGl0b2IKICAgIGRpZyAxCiAgICBzd2FwCiAgICBzdG9yZXMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEyOQogICAgLy8gYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuKGFycilbMF0gPSBVSW50NjQoNDIpCiAgICBkdXAKICAgIGNhbGxzdWIgYXBwZW5kX2xlbmd0aF9hbmRfcmV0dXJuCiAgICBwdXNoaW50IDQyCiAgICBpdG9iCiAgICBkaWcgMQogICAgbG9hZHMKICAgIHN3YXAKICAgIHJlcGxhY2UyIDAgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBzdG9yZXMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEzMAogICAgLy8gYXNzZXJ0IGFyci5sZW5ndGggPT0gMgogICAgbG9hZHMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgcHVzaGludCAyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMzEKICAgIC8vIGFzc2VydCBhcnJbMF0gPT0gNDIKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDY0CiAgICBwdXNoaW50IDQyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMzIKICAgIC8vIGFzc2VydCBhcnJbMV0gPT0gMQogICAgaW50Y18xIC8vIDgKICAgIGV4dHJhY3RfdWludDY0CiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTI1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LkNvbnRyYWN0LnRlc3RfYWxsb2NhdGlvbnNbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2FsbG9jYXRpb25zOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTM0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTM2CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKG51bSk6CiAgICBpbnRjXzIgLy8gMAoKdGVzdF9hbGxvY2F0aW9uc19mb3JfaGVhZGVyQDI6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMzYKICAgIC8vIGZvciBfaSBpbiB1cmFuZ2UobnVtKToKICAgIGR1cAogICAgZGlnIDIKICAgIDwKICAgIGJ6IHRlc3RfYWxsb2NhdGlvbnNfYWZ0ZXJfZm9yQDUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjEzNwogICAgLy8gYWxsb2NfdGVzdCA9IFJlZmVyZW5jZUFycmF5W1VJbnQ2NF0oKQogICAgY2FsbHN1YiBfcHV5YV9saWIubWVtLm5ld19zbG90CiAgICBkdXAKICAgIGJ5dGVjXzAgLy8gMHgKICAgIHN0b3JlcwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTM4CiAgICAvLyBhZGRfeChhbGxvY190ZXN0LCBVSW50NjQoMSkpCiAgICBpbnRjXzAgLy8gMQogICAgY2FsbHN1YiBhZGRfeAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTM2CiAgICAvLyBmb3IgX2kgaW4gdXJhbmdlKG51bSk6CiAgICBkdXAKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgdGVzdF9hbGxvY2F0aW9uc19mb3JfaGVhZGVyQDIKCnRlc3RfYWxsb2NhdGlvbnNfYWZ0ZXJfZm9yQDU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxMzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLkFycmF5cy51aW50NjQuQ29udHJhY3QudGVzdF9pdGVyYXRpb25bcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2l0ZXJhdGlvbjoKICAgIGludGNfMiAvLyAwCiAgICBkdXAKICAgIGJ5dGVjXzAgLy8gIiIKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE0MgogICAgLy8gYXJyID0gUmVmZXJlbmNlQXJyYXlbVUludDY0XSgpCiAgICBkdXBuIDcKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE0MwogICAgLy8gZm9yIHZhbCBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzIgLy8gMAoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAyOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTQzCiAgICAvLyBmb3IgdmFsIGluIHVyYW5nZSg1KToKICAgIGR1cAogICAgaW50Y18zIC8vIDUKICAgIDwKICAgIGJ6IHRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckA1CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNDQKICAgIC8vIGFyci5hcHBlbmQodmFsKQogICAgZHVwMgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIGJ1cnkgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTQzCiAgICAvLyBmb3IgdmFsIGluIHVyYW5nZSg1KToKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBidXJ5IDEKICAgIGIgdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAyCgp0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JANToKICAgIGRpZyAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNDUKICAgIC8vIGFzc2VydCBhcnIubGVuZ3RoID09IDUsICJleHBlY3RlZCBhcnJheSBvZiBsZW5ndGggNSIKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIGR1cAogICAgYnVyeSAxMAogICAgaW50Y18zIC8vIDUKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXJyYXkgb2YgbGVuZ3RoIDUKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE0Ny0xNDgKICAgIC8vICMgaXRlcmF0ZQogICAgLy8gbGFzdCA9IFVJbnQ2NCgwKQogICAgaW50Y18yIC8vIDAKICAgIGJ1cnkgNAogICAgaW50Y18yIC8vIDAKICAgIGJ1cnkgNQoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckA2OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTQ5CiAgICAvLyBmb3IgdmFsdWUgaW4gYXJyOgogICAgZGlnIDQKICAgIGRpZyA5CiAgICA8CiAgICBieiB0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAOQogICAgZGlnIDEKICAgIGRpZyA1CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTUwCiAgICAvLyBhc3NlcnQgdmFsdWUgPj0gbGFzdCwgImFycmF5IGlzIG5vdCBzb3J0ZWQiCiAgICBkdXAKICAgIGRpZyA2CiAgICA+PQogICAgYXNzZXJ0IC8vIGFycmF5IGlzIG5vdCBzb3J0ZWQKICAgIHN3YXAKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBidXJ5IDYKICAgIGJ1cnkgNAogICAgYiB0ZXN0X2l0ZXJhdGlvbl9mb3JfaGVhZGVyQDYKCnRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckA5OgogICAgZGlnIDEKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE1My0xNTQKICAgIC8vICMgZW51bWVyYXRlCiAgICAvLyBmb3IgaWR4LCB2YWx1ZSBpbiB1ZW51bWVyYXRlKGFycik6CiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBidXJ5IDgKICAgIGludGNfMiAvLyAwCiAgICBidXJ5IDYKCnRlc3RfaXRlcmF0aW9uX2Zvcl9oZWFkZXJAMTA6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNTMtMTU0CiAgICAvLyAjIGVudW1lcmF0ZQogICAgLy8gZm9yIGlkeCwgdmFsdWUgaW4gdWVudW1lcmF0ZShhcnIpOgogICAgZGlnIDUKICAgIGRpZyA4CiAgICA8CiAgICBieiB0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAMTMKICAgIGRpZyAxCiAgICBkaWcgNgogICAgZHVwCiAgICBjb3ZlciAyCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgZXh0cmFjdF91aW50NjQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE1NQogICAgLy8gYXNzZXJ0IHZhbHVlID09IGlkeCwgImluY29ycmVjdCBhcnJheSB2YWx1ZSIKICAgIGRpZyAxCiAgICA9PQogICAgYXNzZXJ0IC8vIGluY29ycmVjdCBhcnJheSB2YWx1ZQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGJ1cnkgNgogICAgYiB0ZXN0X2l0ZXJhdGlvbl9mb3JfaGVhZGVyQDEwCgp0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAMTM6CiAgICBkaWcgMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTU3LTE1OAogICAgLy8gIyByZXZlcnNlCiAgICAvLyBmb3IgdmFsdWUgaW4gcmV2ZXJzZWQoYXJyKToKICAgIGxlbgogICAgaW50Y18xIC8vIDgKICAgIC8KICAgIGJ1cnkgMwoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAxNDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE1Ny0xNTgKICAgIC8vICMgcmV2ZXJzZQogICAgLy8gZm9yIHZhbHVlIGluIHJldmVyc2VkKGFycik6CiAgICBkaWcgMgogICAgYnogdGVzdF9pdGVyYXRpb25fYWZ0ZXJfZm9yQDE3CiAgICBkaWcgMgogICAgaW50Y18wIC8vIDEKICAgIC0KICAgIGR1cAogICAgYnVyeSA0CiAgICBkaWcgMgogICAgc3dhcAogICAgaW50Y18xIC8vIDgKICAgICoKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNTkKICAgIC8vIGFzc2VydCB2YWx1ZSA8PSBsYXN0LCAiYXJyYXkgaXMgbm90IHNvcnRlZCIKICAgIGR1cAogICAgZGlnIDUKICAgIDw9CiAgICBhc3NlcnQgLy8gYXJyYXkgaXMgbm90IHNvcnRlZAogICAgYnVyeSA0CiAgICBiIHRlc3RfaXRlcmF0aW9uX2Zvcl9oZWFkZXJAMTQKCnRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckAxNzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE2MgogICAgLy8gYXJjNF9hcnIgPSBhcmM0LkR5bmFtaWNBcnJheVthcmM0LlVJbnQ2NF0oKQogICAgcHVzaGJ5dGVzIDB4MDAwMAogICAgYnVyeSAxMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTQyCiAgICAvLyBhcnIgPSBSZWZlcmVuY2VBcnJheVtVSW50NjRdKCkKICAgIGJ5dGVjXzAgLy8gMHgKICAgIGJ1cnkgMTAKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE2NAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgaW50Y18yIC8vIDAKICAgIGJ1cnkgNwoKdGVzdF9pdGVyYXRpb25fZm9yX2hlYWRlckAxODoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE2NAogICAgLy8gZm9yIGkgaW4gdXJhbmdlKDUpOgogICAgZGlnIDYKICAgIGludGNfMyAvLyA1CiAgICA8CiAgICBieiB0ZXN0X2l0ZXJhdGlvbl9hZnRlcl9mb3JAMjEKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE2NQogICAgLy8gYXJjNF9hcnIuYXBwZW5kKGFyYzQuVUludDY0KGkpKQogICAgZGlnIDYKICAgIGR1cAogICAgaXRvYgogICAgZGlnIDEyCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTY1CiAgICAvLyBhcmM0X2Fyci5hcHBlbmQoYXJjNC5VSW50NjQoaSkpCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgaXRvYgogICAgZXh0cmFjdCA2IDAKICAgIHJlcGxhY2UyIDAKICAgIGRpZyAxCiAgICBjb25jYXQKICAgIGJ1cnkgMTMKICAgIGRpZyAxMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTY2CiAgICAvLyBuYXRpdmVfYXJyLmFwcGVuZChhcmM0LlVJbnQ2NChpKSkKICAgIHN3YXAKICAgIGNvbmNhdCAvLyBvbiBlcnJvcjogbWF4IGFycmF5IGxlbmd0aCBleGNlZWRlZAogICAgYnVyeSAxMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTY0CiAgICAvLyBmb3IgaSBpbiB1cmFuZ2UoNSk6CiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgYnVyeSA3CiAgICBiIHRlc3RfaXRlcmF0aW9uX2Zvcl9oZWFkZXJAMTgKCnRlc3RfaXRlcmF0aW9uX2FmdGVyX2ZvckAyMToKICAgIGRpZyA5CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNjcKICAgIC8vIGNvbWJpbmVkX2FyciA9IGFyYzRfYXJyICsgbmF0aXZlX2FycgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBkaWcgMTIKICAgIGR1cAogICAgY292ZXIgMgogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICArCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMAogICAgcmVwbGFjZTIgMAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNjgKICAgIC8vIGFzc2VydCBjb21iaW5lZF9hcnIubGVuZ3RoID09IDEwCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDEwCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNjkKICAgIC8vIGFzc2VydCBjb21iaW5lZF9hcnJbMF0gPT0gMAogICAgZHVwCiAgICBleHRyYWN0IDIgOAogICAgYnl0ZWNfMSAvLyAweDAwMDAwMDAwMDAwMDAwMDAKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNzAKICAgIC8vIGFzc2VydCBjb21iaW5lZF9hcnJbNF0gPT0gNAogICAgZHVwCiAgICBleHRyYWN0IDM0IDgKICAgIGJ5dGVjXzIgLy8gMHgwMDAwMDAwMDAwMDAwMDA0CiAgICBiPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTcxCiAgICAvLyBhc3NlcnQgY29tYmluZWRfYXJyWzVdID09IDAKICAgIGR1cAogICAgZXh0cmFjdCA0MiA4CiAgICBieXRlY18xIC8vIDB4MDAwMDAwMDAwMDAwMDAwMAogICAgYj09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE3MgogICAgLy8gYXNzZXJ0IGNvbWJpbmVkX2Fycls5XSA9PSA0CiAgICBleHRyYWN0IDc0IDgKICAgIGJ5dGVjXzIgLy8gMHgwMDAwMDAwMDAwMDAwMDA0CiAgICBiPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTQwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LkNvbnRyYWN0LnRlc3RfcXVpY2tzb3J0W3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9xdWlja3NvcnQ6CiAgICBieXRlY18wIC8vICIiCiAgICBkdXBuIDIKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE3Ni0xNzcKICAgIC8vICMgY3JlYXRlIHBzZXVkbyByYW5kb20gYXJyYXkgZnJvbSBzZW5kZXIgYWRkcmVzcwogICAgLy8gcm5kID0gUmVmZXJlbmNlQXJyYXlbVUludDY0XSgpCiAgICBjYWxsc3ViIF9wdXlhX2xpYi5tZW0ubmV3X3Nsb3QKICAgIGR1cAogICAgYnl0ZWNfMCAvLyAweAogICAgc3RvcmVzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxNzgKICAgIC8vIGZvciBiIGluIFR4bi5zZW5kZXIuYnl0ZXM6CiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzIgLy8gMAoKdGVzdF9xdWlja3NvcnRfZm9yX2hlYWRlckAyOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTc4CiAgICAvLyBmb3IgYiBpbiBUeG4uc2VuZGVyLmJ5dGVzOgogICAgZHVwCiAgICBwdXNoaW50IDMyCiAgICA8CiAgICBieiB0ZXN0X3F1aWNrc29ydF9hZnRlcl9mb3JANQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTc5CiAgICAvLyBybmQuYXBwZW5kKG9wLmJ0b2koYikpCiAgICBkdXAyCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGdldGJ5dGUKICAgIGRpZyA0CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGxvYWRzCiAgICBzd2FwCiAgICBpdG9iCiAgICBjb25jYXQgLy8gb24gZXJyb3I6IG1heCBhcnJheSBsZW5ndGggZXhjZWVkZWQKICAgIHN0b3JlcwogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGJ1cnkgMQogICAgYiB0ZXN0X3F1aWNrc29ydF9mb3JfaGVhZGVyQDIKCnRlc3RfcXVpY2tzb3J0X2FmdGVyX2ZvckA1OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTgwCiAgICAvLyBhc3NlcnQgcm5kLmxlbmd0aCA9PSAzMiwgImV4cGVjdGVkIGFycmF5IG9mIGxlbmd0aCAzMiIKICAgIGRpZyAyCiAgICBkdXAKICAgIGxvYWRzCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBkdXAKICAgIHB1c2hpbnQgMzIKICAgID09CiAgICBhc3NlcnQgLy8gZXhwZWN0ZWQgYXJyYXkgb2YgbGVuZ3RoIDMyCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxODItMTgzCiAgICAvLyAjIHNvcnQgdGhlIGFycmF5CiAgICAvLyBxdWlja3NvcnRfd2luZG93KHJuZCwgVUludDY0KDApLCBybmQubGVuZ3RoIC0gMSkKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkaWcgMQogICAgaW50Y18yIC8vIDAKICAgIHVuY292ZXIgMgogICAgY2FsbHN1YiBxdWlja3NvcnRfd2luZG93CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxODUtMTg2CiAgICAvLyAjIGFycmF5IHNob3VsZCBub3cgYmUgaW4gYXNjZW5kaW5nIG9yZGVyCiAgICAvLyBsYXN0ID0gVUludDY0KDApCiAgICBpbnRjXzIgLy8gMAogICAgYnVyeSA1CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxODcKICAgIC8vIGZvciB2YWx1ZSBpbiBybmQ6CiAgICBsb2FkcwogICAgbGVuCiAgICBpbnRjXzEgLy8gOAogICAgLwogICAgYnVyeSA2CiAgICBpbnRjXzIgLy8gMAogICAgYnVyeSA1Cgp0ZXN0X3F1aWNrc29ydF9mb3JfaGVhZGVyQDY6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxODcKICAgIC8vIGZvciB2YWx1ZSBpbiBybmQ6CiAgICBkaWcgNAogICAgZGlnIDYKICAgIDwKICAgIGJ6IHRlc3RfcXVpY2tzb3J0X2FmdGVyX2ZvckA5CiAgICBkaWcgMgogICAgbG9hZHMKICAgIGRpZyA1CiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMSAvLyA4CiAgICAqCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTg4CiAgICAvLyBhc3NlcnQgdmFsdWUgPj0gbGFzdCwgImFycmF5IGlzIG5vdCBzb3J0ZWQiCiAgICBkdXAKICAgIGRpZyA2CiAgICA+PQogICAgYXNzZXJ0IC8vIGFycmF5IGlzIG5vdCBzb3J0ZWQKICAgIHN3YXAKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBidXJ5IDYKICAgIGJ1cnkgNAogICAgYiB0ZXN0X3F1aWNrc29ydF9mb3JfaGVhZGVyQDYKCnRlc3RfcXVpY2tzb3J0X2FmdGVyX2ZvckA5OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5BcnJheXMudWludDY0LkNvbnRyYWN0LnRlc3RfdW5vYnNlcnZlZF93cml0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfdW5vYnNlcnZlZF93cml0ZToKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE5MwogICAgLy8gYXJyID0gY3JlYXRlX2FycmF5KCkKICAgIGNhbGxzdWIgY3JlYXRlX2FycmF5CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxOTQKICAgIC8vIGxhc3QgPSBhcnIubGVuZ3RoIC0gMQogICAgZHVwCiAgICBsb2FkcwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMSAvLyA4CiAgICAvCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL0FycmF5cy91aW50NjQucHk6MTk1CiAgICAvLyBhcnJbbGFzdF0gPSBVSW50NjQoMCkgICMgd3JpdGUKICAgIGludGNfMiAvLyAwCiAgICBpdG9iCiAgICBzd2FwCiAgICBpbnRjXzEgLy8gOAogICAgKgogICAgdW5jb3ZlciAyCiAgICBkaWcgMQogICAgdW5jb3ZlciAzCiAgICByZXBsYWNlMyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGRpZyAyCiAgICBzd2FwCiAgICBzdG9yZXMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE5NgogICAgLy8gYXNzZXJ0X2xhc3RfaXNfemVybyhhcnIpCiAgICBkaWcgMQogICAgY2FsbHN1YiBhc3NlcnRfbGFzdF9pc196ZXJvCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvQXJyYXlzL3VpbnQ2NC5weToxOTcKICAgIC8vIGFycltsYXN0XSA9IFVJbnQ2NCgxKSAgIyB3cml0ZQogICAgaW50Y18wIC8vIDEKICAgIGl0b2IKICAgIGRpZyAyCiAgICBsb2FkcwogICAgZGlnIDIKICAgIHVuY292ZXIgMgogICAgcmVwbGFjZTMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICB1bmNvdmVyIDIKICAgIGRpZyAxCiAgICBzdG9yZXMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE5OAogICAgLy8gYXNzZXJ0IGFycltsYXN0XSA9PSAxCiAgICBzd2FwCiAgICBleHRyYWN0X3VpbnQ2NAogICAgaW50Y18wIC8vIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9BcnJheXMvdWludDY0LnB5OjE5MQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyBfcHV5YV9saWIubWVtLm5ld19zbG90KCkgLT4gdWludDY0OgpfcHV5YV9saWIubWVtLm5ld19zbG90OgogICAgbG9hZCAwCiAgICBiaXRsZW4KICAgIGxvYWQgMAogICAgcHVzaGludCAyNTYKICAgIGRpZyAyCiAgICAtCiAgICBpbnRjXzIgLy8gMAogICAgc2V0Yml0IC8vIG9uIGVycm9yOiBubyBhdmFpbGFibGUgc2xvdHMKICAgIHN0b3JlIDAKICAgIHJldHN1Ygo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "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", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 8, "patch": 1 } }, "events": [], "templateVariables": {} }