{ "name": "AssignmentsAlgo", "structs": { "Object3C0E3B9F": [ { "name": "balance", "type": "uint64" }, { "name": "minBalance", "type": "uint64" } ], "Object3EB715E7": [ { "name": "a", "type": "uint64" }, { "name": "b", "type": "string" } ], "ReadonlyObject3EB715E7": [ { "name": "a", "type": "uint64" }, { "name": "b", "type": "string" } ] }, "methods": [ { "name": "testPrimitives", "args": [ { "type": "uint64", "name": "u" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testAccountDestructure", "args": [], "returns": { "type": "(uint64,uint64)", "struct": "Object3C0E3B9F" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testArrayDestructure", "args": [ { "type": "uint64[]", "name": "i_a" }, { "type": "uint64", "name": "u" }, { "type": "uint64[]", "name": "m_a" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testArrayNarrowing", "args": [ { "type": "uint64[]", "name": "m_a" }, { "type": "uint64", "name": "u" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testTupleToArray", "args": [ { "type": "(uint64,uint64)", "name": "m_t" }, { "type": "(uint64,uint64)", "name": "i_t" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testNested", "args": [ { "type": "uint64[][]", "name": "i_a" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testDestructureObj", "args": [ { "type": "(uint64,string)", "struct": "Object3EB715E7", "name": "m" }, { "type": "(uint64,string)", "struct": "ReadonlyObject3EB715E7", "name": "i" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testObjLiteralNarrowing", "args": [ { "type": "uint64", "name": "a" }, { "type": "uint64", "name": "b" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testMixed", "args": [ { "type": "((uint64))[]", "name": "m" } ], "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": [ 884 ], "errorMessage": "a5 length should be 3" }, { "pc": [ 725, 728 ], "errorMessage": "account funded" }, { "pc": [ 878, 923, 1182, 1264, 1326 ], "errorMessage": "assert target is match for conditions" }, { "pc": [ 1463 ], "errorMessage": "getVal should only be called once" }, { "pc": [ 1474 ], "errorMessage": "getVal should still be called once even though its result is not used" }, { "pc": [ 761, 776, 937, 952, 969, 986, 1012, 1028, 1044, 1060, 1074, 1090, 1146, 1172, 1228, 1254, 1298, 1320, 1382, 1432 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 212 ], "errorMessage": "index out of bounds" }, { "pc": [ 476 ], "errorMessage": "invalid array encoding" }, { "pc": [ 307, 331, 360, 436, 498, 560, 596, 678, 1128, 1210, 1280 ], "errorMessage": "invalid array length header" }, { "pc": [ 572 ], "errorMessage": "invalid number of bytes for Object3EB715E7" }, { "pc": [ 608 ], "errorMessage": "invalid number of bytes for ReadonlyObject3EB715E7" }, { "pc": [ 687 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 528 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array>" }, { "pc": [ 316, 340, 369 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 404 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 395 ], "errorMessage": "invalid number of bytes for arc4.tuple" }, { "pc": [ 274, 324, 377, 654, 663 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 551, 587 ], "errorMessage": "invalid tail pointer at index 1 of (uint64,(len+utf8[]))" }, { "pc": [ 484 ], "errorMessage": "invalid tail pointer for (len+(len+uint64[])[])" }, { "pc": [ 546, 582 ], "errorMessage": "invalid tuple encoding" }, { "pc": [ 829 ], "errorMessage": "logAndReturn called 3 times" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgOCAyIDAgMQogICAgYiBtYWluX2Jsb2NrQDAKCm1haW5fYmxvY2tAMDoKICAgIGIgbWFpbl9ibG9ja0AxCgptYWluX2Jsb2NrQDE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxOS0yMAogICAgLy8gQGNvbnRyYWN0KHsgc2NyYXRjaFNsb3RzOiBbY291bnRTbG90XSB9KQogICAgLy8gZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnRzQWxnbyBleHRlbmRzIENvbnRyYWN0IHsKICAgIHR4biBOdW1BcHBBcmdzCiAgICBpbnRjXzIgLy8gMAogICAgIT0KICAgIGJ6IG1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDE2CiAgICBiIG1haW5fYWJpX3JvdXRpbmdAMgoKbWFpbl9hYmlfcm91dGluZ0AyOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MTktMjAKICAgIC8vIEBjb250cmFjdCh7IHNjcmF0Y2hTbG90czogW2NvdW50U2xvdF0gfSkKICAgIC8vIGV4cG9ydCBjbGFzcyBBc3NpZ25tZW50c0FsZ28gZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzIgLy8gTm9PcAogICAgPT0KICAgIGFzc2VydAogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgIGludGNfMiAvLyAwCiAgICAhPQogICAgYnogbWFpbl9jcmVhdGVfTm9PcEAxNAogICAgYiBtYWluX2NhbGxfTm9PcEAzCgptYWluX2NhbGxfTm9PcEAzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MTktMjAKICAgIC8vIEBjb250cmFjdCh7IHNjcmF0Y2hTbG90czogW2NvdW50U2xvdF0gfSkKICAgIC8vIGV4cG9ydCBjbGFzcyBBc3NpZ25tZW50c0FsZ28gZXh0ZW5kcyBDb250cmFjdCB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBwdXNoYnl0ZXMgMHg3MDJlYTEwOCAvLyBtZXRob2QgInRlc3RQcmltaXRpdmVzKHVpbnQ2NCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4ZWRkYTg1ZTkgLy8gbWV0aG9kICJ0ZXN0QWNjb3VudERlc3RydWN0dXJlKCkodWludDY0LHVpbnQ2NCkiCiAgICBwdXNoYnl0ZXMgMHg1YjJmNzcxMyAvLyBtZXRob2QgInRlc3RBcnJheURlc3RydWN0dXJlKHVpbnQ2NFtdLHVpbnQ2NCx1aW50NjRbXSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4OTBjY2NiM2QgLy8gbWV0aG9kICJ0ZXN0QXJyYXlOYXJyb3dpbmcodWludDY0W10sdWludDY0KXZvaWQiCiAgICBwdXNoYnl0ZXMgMHhkOGJlOTNiZiAvLyBtZXRob2QgInRlc3RUdXBsZVRvQXJyYXkoKHVpbnQ2NCx1aW50NjQpLCh1aW50NjQsdWludDY0KSl2b2lkIgogICAgcHVzaGJ5dGVzIDB4NWEzZmVjNWEgLy8gbWV0aG9kICJ0ZXN0TmVzdGVkKHVpbnQ2NFtdW10pdm9pZCIKICAgIHB1c2hieXRlcyAweDI3YTRmMzY3IC8vIG1ldGhvZCAidGVzdERlc3RydWN0dXJlT2JqKCh1aW50NjQsc3RyaW5nKSwodWludDY0LHN0cmluZykpdm9pZCIKICAgIHB1c2hieXRlcyAweGQ2YzlmNDg2IC8vIG1ldGhvZCAidGVzdE9iakxpdGVyYWxOYXJyb3dpbmcodWludDY0LHVpbnQ2NCl2b2lkIgogICAgcHVzaGJ5dGVzIDB4NmUwM2FkMGMgLy8gbWV0aG9kICJ0ZXN0TWl4ZWQoKCh1aW50NjQpKVtdKXZvaWQiCiAgICB1bmNvdmVyIDkKICAgIG1hdGNoIG1haW5fdGVzdFByaW1pdGl2ZXNfcm91dGVANCBtYWluX3Rlc3RBY2NvdW50RGVzdHJ1Y3R1cmVfcm91dGVANSBtYWluX3Rlc3RBcnJheURlc3RydWN0dXJlX3JvdXRlQDYgbWFpbl90ZXN0QXJyYXlOYXJyb3dpbmdfcm91dGVANyBtYWluX3Rlc3RUdXBsZVRvQXJyYXlfcm91dGVAOCBtYWluX3Rlc3ROZXN0ZWRfcm91dGVAOSBtYWluX3Rlc3REZXN0cnVjdHVyZU9ial9yb3V0ZUAxMCBtYWluX3Rlc3RPYmpMaXRlcmFsTmFycm93aW5nX3JvdXRlQDExIG1haW5fdGVzdE1peGVkX3JvdXRlQDEyCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMwoKbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEzOgogICAgYiBtYWluX2FmdGVyX2lmX2Vsc2VAMTUKCm1haW5fYWZ0ZXJfaWZfZWxzZUAxNToKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDE3CgptYWluX2FmdGVyX2lmX2Vsc2VAMTc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxOS0yMAogICAgLy8gQGNvbnRyYWN0KHsgc2NyYXRjaFNsb3RzOiBbY291bnRTbG90XSB9KQogICAgLy8gZXhwb3J0IGNsYXNzIEFzc2lnbm1lbnRzQWxnbyBleHRlbmRzIENvbnRyYWN0IHsKICAgIGVycgoKbWFpbl90ZXN0TWl4ZWRfcm91dGVAMTI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxMDMKICAgIC8vIHRlc3RNaXhlZChtOiBBcnJheTx7IGE6IFt1aW50NjRdIH0+KSB7CiAgICBjYWxsc3ViIHRlc3RNaXhlZAogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTMKCm1haW5fdGVzdE9iakxpdGVyYWxOYXJyb3dpbmdfcm91dGVAMTE6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo4OAogICAgLy8gdGVzdE9iakxpdGVyYWxOYXJyb3dpbmcoYTogdWludDY0LCBiOiB1aW50NjQpIHsKICAgIGNhbGxzdWIgdGVzdE9iakxpdGVyYWxOYXJyb3dpbmcKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEzCgptYWluX3Rlc3REZXN0cnVjdHVyZU9ial9yb3V0ZUAxMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjgzCiAgICAvLyB0ZXN0RGVzdHJ1Y3R1cmVPYmoobTogeyBhOiB1aW50NjQ7IGI6IHN0cmluZyB9LCBpOiBSZWFkb25seTx7IGE6IHVpbnQ2NDsgYjogc3RyaW5nIH0+KSB7CiAgICBjYWxsc3ViIHRlc3REZXN0cnVjdHVyZU9iagogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTMKCm1haW5fdGVzdE5lc3RlZF9yb3V0ZUA5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NzgKICAgIC8vIHRlc3ROZXN0ZWQoaV9hOiBSZWFkb25seUFycmF5PFJlYWRvbmx5QXJyYXk8dWludDY0Pj4pIHsKICAgIGNhbGxzdWIgdGVzdE5lc3RlZAogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTMKCm1haW5fdGVzdFR1cGxlVG9BcnJheV9yb3V0ZUA4OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NjgKICAgIC8vIHRlc3RUdXBsZVRvQXJyYXkobV90OiBbdWludDY0LCB1aW50NjRdLCBpX3Q6IHJlYWRvbmx5IFt1aW50NjQsIHVpbnQ2NF0pIHsKICAgIGNhbGxzdWIgdGVzdFR1cGxlVG9BcnJheQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTMKCm1haW5fdGVzdEFycmF5TmFycm93aW5nX3JvdXRlQDc6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo1NAogICAgLy8gdGVzdEFycmF5TmFycm93aW5nKG1fYTogdWludDY0W10sIHU6IHVpbnQ2NCkgewogICAgY2FsbHN1YiB0ZXN0QXJyYXlOYXJyb3dpbmcKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEzCgptYWluX3Rlc3RBcnJheURlc3RydWN0dXJlX3JvdXRlQDY6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czozNAogICAgLy8gdGVzdEFycmF5RGVzdHJ1Y3R1cmUoaV9hOiBSZWFkb25seUFycmF5PHVpbnQ2ND4sIHU6IHVpbnQ2NCwgbV9hOiB1aW50NjRbXSkgewogICAgY2FsbHN1YiB0ZXN0QXJyYXlEZXN0cnVjdHVyZQogICAgYiBtYWluX3N3aXRjaF9jYXNlX25leHRAMTMKCm1haW5fdGVzdEFjY291bnREZXN0cnVjdHVyZV9yb3V0ZUA1OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MjkKICAgIC8vIHRlc3RBY2NvdW50RGVzdHJ1Y3R1cmUoKSB7CiAgICBjYWxsc3ViIHRlc3RBY2NvdW50RGVzdHJ1Y3R1cmUKICAgIGIgbWFpbl9zd2l0Y2hfY2FzZV9uZXh0QDEzCgptYWluX3Rlc3RQcmltaXRpdmVzX3JvdXRlQDQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoyMQogICAgLy8gdGVzdFByaW1pdGl2ZXModTogdWludDY0KSB7CiAgICBjYWxsc3ViIHRlc3RQcmltaXRpdmVzCiAgICBiIG1haW5fc3dpdGNoX2Nhc2VfbmV4dEAxMwoKbWFpbl9jcmVhdGVfTm9PcEAxNDoKICAgIGIgbWFpbl9hZnRlcl9pZl9lbHNlQDE1CgptYWluX19fYWxnb3RzX18uZGVmYXVsdENyZWF0ZUAxNjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjE5LTIwCiAgICAvLyBAY29udHJhY3QoeyBzY3JhdGNoU2xvdHM6IFtjb3VudFNsb3RdIH0pCiAgICAvLyBleHBvcnQgY2xhc3MgQXNzaWdubWVudHNBbGdvIGV4dGVuZHMgQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18yIC8vIE5vT3AKICAgID09CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgaW50Y18yIC8vIDAKICAgID09CiAgICAmJgogICAgYXNzZXJ0CiAgICBjYWxsc3ViIF9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZQogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKCi8vIF9wdXlhX2xpYi5hcmM0LmR5bmFtaWNfYXNzZXJ0X2luZGV4KGFycmF5OiBieXRlcywgaW5kZXg6IHVpbnQ2NCkgLT4gdm9pZDoKZHluYW1pY19hc3NlcnRfaW5kZXg6CiAgICBwcm90byAyIDAKICAgIGIgZHluYW1pY19hc3NlcnRfaW5kZXhfYmxvY2tAMAoKZHluYW1pY19hc3NlcnRfaW5kZXhfYmxvY2tAMDoKICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2CiAgICBmcmFtZV9kaWcgLTEKICAgID4KICAgIGFzc2VydCAvLyBpbmRleCBvdXQgb2YgYm91bmRzCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6cmVzZXRDb3VudCgpIC0+IHZvaWQ6CnJlc2V0Q291bnQ6CiAgICBiIHJlc2V0Q291bnRfYmxvY2tAMAoKcmVzZXRDb3VudF9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OQogICAgLy8gb3AuU2NyYXRjaC5zdG9yZShjb3VudFNsb3QsIDApCiAgICBpbnRjXzIgLy8gMAogICAgaW50Y18yIC8vIDAKICAgIHN0b3JlcwogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OmdldENvdW50KCkgLT4gdWludDY0OgpnZXRDb3VudDoKICAgIGIgZ2V0Q291bnRfYmxvY2tAMAoKZ2V0Q291bnRfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjEyCiAgICAvLyByZXR1cm4gb3AuU2NyYXRjaC5sb2FkVWludDY0KGNvdW50U2xvdCkKICAgIGludGNfMiAvLyAwCiAgICBsb2FkcwogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OmluY0NvdW50KCkgLT4gdm9pZDoKaW5jQ291bnQ6CiAgICBiIGluY0NvdW50X2Jsb2NrQDAKCmluY0NvdW50X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxNgogICAgLy8gb3AuU2NyYXRjaC5zdG9yZShjb3VudFNsb3QsIG9wLlNjcmF0Y2gubG9hZFVpbnQ2NChjb3VudFNsb3QpICsgMSkKICAgIGludGNfMiAvLyAwCiAgICBsb2FkcwogICAgaW50Y18zIC8vIDEKICAgICsKICAgIGludGNfMiAvLyAwCiAgICB1bmNvdmVyIDEKICAgIHN0b3JlcwogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OmdldFZhbCgpIC0+IHVpbnQ2NCwgdWludDY0OgpnZXRWYWw6CiAgICBiIGdldFZhbF9ibG9ja0AwCgpnZXRWYWxfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjExNAogICAgLy8gaW5jQ291bnQoKQogICAgY2FsbHN1YiBpbmNDb3VudAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MTE3CiAgICAvLyBhOiAxLAogICAgaW50Y18zIC8vIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjExOAogICAgLy8gYjogMiwKICAgIGludGNfMSAvLyAyCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxMTYtMTE5CiAgICAvLyByZXR1cm4gewogICAgLy8gICBhOiAxLAogICAgLy8gICBiOiAyLAogICAgLy8gfQogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OmxvZ0FuZFJldHVybih1OiB1aW50NjQpIC0+IHVpbnQ2NDoKbG9nQW5kUmV0dXJuOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MTIyCiAgICAvLyBmdW5jdGlvbiBsb2dBbmRSZXR1cm4odTogdWludDY0KTogdWludDY0IHsKICAgIHByb3RvIDEgMQogICAgYiBsb2dBbmRSZXR1cm5fYmxvY2tAMAoKbG9nQW5kUmV0dXJuX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxMjMKICAgIC8vIGluY0NvdW50KCkKICAgIGNhbGxzdWIgaW5jQ291bnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjEyNAogICAgLy8gbG9nKHUpCiAgICBmcmFtZV9kaWcgLTEKICAgIGl0b2IKICAgIGxvZwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MTI1CiAgICAvLyByZXR1cm4gdQogICAgZnJhbWVfZGlnIC0xCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RQcmltaXRpdmVzW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdFByaW1pdGl2ZXM6CiAgICBiIHRlc3RQcmltaXRpdmVzX2Jsb2NrQDAKCnRlc3RQcmltaXRpdmVzX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoyMQogICAgLy8gdGVzdFByaW1pdGl2ZXModTogdWludDY0KSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdFByaW1pdGl2ZXMKICAgIGludGNfMyAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RBY2NvdW50RGVzdHJ1Y3R1cmVbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0QWNjb3VudERlc3RydWN0dXJlOgogICAgYiB0ZXN0QWNjb3VudERlc3RydWN0dXJlX2Jsb2NrQDAKCnRlc3RBY2NvdW50RGVzdHJ1Y3R1cmVfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjI5CiAgICAvLyB0ZXN0QWNjb3VudERlc3RydWN0dXJlKCkgewogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RBY2NvdW50RGVzdHJ1Y3R1cmUKICAgIHB1c2hieXRlcyAweDE1MWY3Yzc1CiAgICB1bmNvdmVyIDEKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzMgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0QXJyYXlEZXN0cnVjdHVyZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RBcnJheURlc3RydWN0dXJlOgogICAgYiB0ZXN0QXJyYXlEZXN0cnVjdHVyZV9ibG9ja0AwCgp0ZXN0QXJyYXlEZXN0cnVjdHVyZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MzQKICAgIC8vIHRlc3RBcnJheURlc3RydWN0dXJlKGlfYTogUmVhZG9ubHlBcnJheTx1aW50NjQ+LCB1OiB1aW50NjQsIG1fYTogdWludDY0W10pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PHVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PHVpbnQ2ND4KICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0QXJyYXlEZXN0cnVjdHVyZQogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdEFycmF5TmFycm93aW5nW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdEFycmF5TmFycm93aW5nOgogICAgYiB0ZXN0QXJyYXlOYXJyb3dpbmdfYmxvY2tAMAoKdGVzdEFycmF5TmFycm93aW5nX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo1NAogICAgLy8gdGVzdEFycmF5TmFycm93aW5nKG1fYTogdWludDY0W10sIHU6IHVpbnQ2NCkgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8dWludDY0PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RBcnJheU5hcnJvd2luZwogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdFR1cGxlVG9BcnJheVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RUdXBsZVRvQXJyYXk6CiAgICBiIHRlc3RUdXBsZVRvQXJyYXlfYmxvY2tAMAoKdGVzdFR1cGxlVG9BcnJheV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NjgKICAgIC8vIHRlc3RUdXBsZVRvQXJyYXkobV90OiBbdWludDY0LCB1aW50NjRdLCBpX3Q6IHJlYWRvbmx5IFt1aW50NjQsIHVpbnQ2NF0pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDE2CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPHVpbnQ2NCx1aW50NjQ+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAxNgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgY292ZXIgMQogICAgaW50Y18wIC8vIDgKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMgogICAgY2FsbHN1YiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RUdXBsZVRvQXJyYXkKICAgIGludGNfMyAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3ROZXN0ZWRbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0TmVzdGVkOgogICAgYiB0ZXN0TmVzdGVkX2Jsb2NrQDAKCnRlc3ROZXN0ZWRfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjc4CiAgICAvLyB0ZXN0TmVzdGVkKGlfYTogUmVhZG9ubHlBcnJheTxSZWFkb25seUFycmF5PHVpbnQ2ND4+KSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXBuIDIKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBkdXAKICAgIGNvdmVyIDIKICAgIGludGNfMSAvLyAyCiAgICAqCiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGIgdGVzdE5lc3RlZF9mb3JfaGVhZGVyQDEKCnRlc3ROZXN0ZWRfZm9yX2hlYWRlckAxOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NzgKICAgIC8vIHRlc3ROZXN0ZWQoaV9hOiBSZWFkb25seUFycmF5PFJlYWRvbmx5QXJyYXk8dWludDY0Pj4pIHsKICAgIGR1cAogICAgZGlnIDQKICAgIDwKICAgIGJ6IHRlc3ROZXN0ZWRfYWZ0ZXJfZm9yQDQKICAgIGIgdGVzdE5lc3RlZF9mb3JfYm9keUAyCgp0ZXN0TmVzdGVkX2Zvcl9ib2R5QDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo3OAogICAgLy8gdGVzdE5lc3RlZChpX2E6IFJlYWRvbmx5QXJyYXk8UmVhZG9ubHlBcnJheTx1aW50NjQ+PikgewogICAgZHVwCiAgICBpbnRjXzEgLy8gMgogICAgKgogICAgZGlnIDIKICAgIGR1cAogICAgY292ZXIgMgogICAgdW5jb3ZlciAxCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBlbmNvZGluZwogICAgZHVwCiAgICBkaWcgNQogICAgZHVwCiAgICBjb3ZlciA0CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGZvciAobGVuKyhsZW4rdWludDY0W10pW10pCiAgICBkaWcgMQogICAgbGVuCiAgICBjb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMQogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMSAvLyAyCiAgICArCiAgICArCiAgICBidXJ5IDMKICAgIGIgdGVzdE5lc3RlZF9mb3JfZm9vdGVyQDMKCnRlc3ROZXN0ZWRfZm9yX2Zvb3RlckAzOgogICAgZHVwCiAgICBpbnRjXzMgLy8gMQogICAgKwogICAgYnVyeSAxCiAgICBiIHRlc3ROZXN0ZWRfZm9yX2hlYWRlckAxCgp0ZXN0TmVzdGVkX2FmdGVyX2ZvckA0OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NzgKICAgIC8vIHRlc3ROZXN0ZWQoaV9hOiBSZWFkb25seUFycmF5PFJlYWRvbmx5QXJyYXk8dWludDY0Pj4pIHsKICAgIGRpZyAyCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgZGlnIDUKICAgIGR1cAogICAgY292ZXIgMgogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC5keW5hbWljX2FycmF5PHVpbnQ2ND4+CiAgICBjYWxsc3ViIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdE5lc3RlZAogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdERlc3RydWN0dXJlT2JqW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdERlc3RydWN0dXJlT2JqOgogICAgYiB0ZXN0RGVzdHJ1Y3R1cmVPYmpfYmxvY2tAMAoKdGVzdERlc3RydWN0dXJlT2JqX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo4MwogICAgLy8gdGVzdERlc3RydWN0dXJlT2JqKG06IHsgYTogdWludDY0OyBiOiBzdHJpbmcgfSwgaTogUmVhZG9ubHk8eyBhOiB1aW50NjQ7IGI6IHN0cmluZyB9PikgewogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIGR1cAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgMTAKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggMSBvZiAodWludDY0LChsZW4rdXRmOFtdKSkKICAgIGRpZyAxCiAgICB1bmNvdmVyIDEKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAxCiAgICAqCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgcHVzaGludCAxMAogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgT2JqZWN0M0VCNzE1RTcKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDEwCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDEgb2YgKHVpbnQ2NCwobGVuK3V0ZjhbXSkpCiAgICBkaWcgMQogICAgdW5jb3ZlciAxCiAgICB1bmNvdmVyIDMKICAgIHN1YnN0cmluZzMKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMQogICAgKgogICAgaW50Y18xIC8vIDIKICAgICsKICAgIHB1c2hpbnQgMTAKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIFJlYWRvbmx5T2JqZWN0M0VCNzE1RTcKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgY292ZXIgMQogICAgZHVwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdF91aW50MTYKICAgIGNvdmVyIDEKICAgIGR1cAogICAgbGVuCiAgICBjb3ZlciAxCiAgICB1bmNvdmVyIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgZXh0cmFjdCAyIDAKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0RGVzdHJ1Y3R1cmVPYmoKICAgIGludGNfMyAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RPYmpMaXRlcmFsTmFycm93aW5nW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdE9iakxpdGVyYWxOYXJyb3dpbmc6CiAgICBiIHRlc3RPYmpMaXRlcmFsTmFycm93aW5nX2Jsb2NrQDAKCnRlc3RPYmpMaXRlcmFsTmFycm93aW5nX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo4OAogICAgLy8gdGVzdE9iakxpdGVyYWxOYXJyb3dpbmcoYTogdWludDY0LCBiOiB1aW50NjQpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0T2JqTGl0ZXJhbE5hcnJvd2luZwogICAgaW50Y18zIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdE1peGVkW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdE1peGVkOgogICAgYiB0ZXN0TWl4ZWRfYmxvY2tAMAoKdGVzdE1peGVkX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxMDMKICAgIC8vIHRlc3RNaXhlZChtOiBBcnJheTx7IGE6IFt1aW50NjRdIH0+KSB7CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18xIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxPYmplY3Q3Q0ZBRjVENj4KICAgIGNhbGxzdWIgdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0TWl4ZWQKICAgIGludGNfMyAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RQcmltaXRpdmVzKHU6IHVpbnQ2NCkgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0UHJpbWl0aXZlczoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjIxCiAgICAvLyB0ZXN0UHJpbWl0aXZlcyh1OiB1aW50NjQpIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RQcmltaXRpdmVzX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdFByaW1pdGl2ZXNfYmxvY2tAMDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjIyCiAgICAvLyBjb25zdCBwMSA9IHUKICAgIGZyYW1lX2RpZyAtMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MjMKICAgIC8vIGxldCBwMjogdWludDY0ID0gMgogICAgaW50Y18xIC8vIDIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjI0CiAgICAvLyBwMiArPSAxCiAgICBpbnRjXzMgLy8gMQogICAgKwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MjUKICAgIC8vIGFzc2VydChwMiA9PT0gMykKICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MjYKICAgIC8vIGFzc2VydChwMSA9PT0gdSkKICAgIGZyYW1lX2RpZyAtMQogICAgPT0KICAgIGFzc2VydAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0QWNjb3VudERlc3RydWN0dXJlKCkgLT4gYnl0ZXM6CnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdEFjY291bnREZXN0cnVjdHVyZToKICAgIGIgdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0QWNjb3VudERlc3RydWN0dXJlX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdEFjY291bnREZXN0cnVjdHVyZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MzAKICAgIC8vIGNvbnN0IHsgYmFsYW5jZSwgbWluQmFsYW5jZSB9ID0gR2xvYmFsLmN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGdsb2JhbCBDdXJyZW50QXBwbGljYXRpb25BZGRyZXNzCiAgICBkdXAKICAgIGFjY3RfcGFyYW1zX2dldCBBY2N0QmFsYW5jZQogICAgY292ZXIgMQogICAgY292ZXIgMgogICAgYXNzZXJ0IC8vIGFjY291bnQgZnVuZGVkCiAgICBhY2N0X3BhcmFtc19nZXQgQWNjdE1pbkJhbGFuY2UKICAgIGFzc2VydCAvLyBhY2NvdW50IGZ1bmRlZAogICAgdW5jb3ZlciAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czozMQogICAgLy8gcmV0dXJuIHsgYmFsYW5jZSwgbWluQmFsYW5jZSB9CiAgICBpdG9iCiAgICBwdXNoYnl0ZXMgMHgKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICB1bmNvdmVyIDEKICAgIGl0b2IKICAgIGNvbmNhdAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0QXJyYXlEZXN0cnVjdHVyZShpX2E6IGJ5dGVzLCB1OiB1aW50NjQsIG1fYTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdEFycmF5RGVzdHJ1Y3R1cmU6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czozNAogICAgLy8gdGVzdEFycmF5RGVzdHJ1Y3R1cmUoaV9hOiBSZWFkb25seUFycmF5PHVpbnQ2ND4sIHU6IHVpbnQ2NCwgbV9hOiB1aW50NjRbXSkgewogICAgcHJvdG8gMyAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdEFycmF5RGVzdHJ1Y3R1cmVfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0QXJyYXlEZXN0cnVjdHVyZV9ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MzUKICAgIC8vIGNvbnN0IFssIGExXSA9IGlfYQogICAgZnJhbWVfZGlnIC0zCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMwogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18zIC8vIDEKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czozNgogICAgLy8gYXNzZXJ0KGExID09PSBpX2FbMV0pCiAgICBmcmFtZV9kaWcgLTMKICAgIGxlbgogICAgZnJhbWVfZGlnIC0zCiAgICBpbnRjXzEgLy8gMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzMgLy8gMQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjM4CiAgICAvLyByZXNldENvdW50KCkKICAgIGNhbGxzdWIgcmVzZXRDb3VudAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MzkKICAgIC8vIGNvbnN0IGE1ID0gKFthMiwgYTNdID0gW2xvZ0FuZFJldHVybih1KSwgbG9nQW5kUmV0dXJuKHUpLCBsb2dBbmRSZXR1cm4odSldKQogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGxvZ0FuZFJldHVybgogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGxvZ0FuZFJldHVybgogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGxvZ0FuZFJldHVybgogICAgY292ZXIgMgogICAgZGlnIDEKICAgIGNvdmVyIDMKICAgIGR1cAogICAgY292ZXIgNAogICAgdW5jb3ZlciAxCiAgICBpdG9iCiAgICBwdXNoYnl0ZXMgMHgKICAgIHVuY292ZXIgMQogICAgY29uY2F0CiAgICB1bmNvdmVyIDEKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxCiAgICBpdG9iCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjQwCiAgICAvLyBhc3NlcnQoZ2V0Q291bnQoKSA9PT0gMywgJ2xvZ0FuZFJldHVybiBjYWxsZWQgMyB0aW1lcycpCiAgICBjYWxsc3ViIGdldENvdW50CiAgICBwdXNoaW50IDMKICAgID09CiAgICBhc3NlcnQgLy8gbG9nQW5kUmV0dXJuIGNhbGxlZCAzIHRpbWVzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo0MQogICAgLy8gYXNzZXJ0KGEyID09PSB1KQogICAgdW5jb3ZlciAxCiAgICBmcmFtZV9kaWcgLTIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjQyCiAgICAvLyBhc3NlcnQoYTMgPT09IHUpCiAgICB1bmNvdmVyIDEKICAgIGZyYW1lX2RpZyAtMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NDMKICAgIC8vIGFzc2VydE1hdGNoKGE1LCBbdSwgdSwgdV0pCiAgICBwdXNoaW50IDMKICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGRpZyAxCiAgICBpbnRjXzIgLy8gMAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTIKICAgID09CiAgICAmJgogICAgZGlnIDEKICAgIGludGNfMCAvLyA4CiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAtMgogICAgPT0KICAgICYmCiAgICB1bmNvdmVyIDEKICAgIHB1c2hpbnQgMTYKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgZnJhbWVfZGlnIC0yCiAgICA9PQogICAgJiYKICAgIGFzc2VydCAvLyBhc3NlcnQgdGFyZ2V0IGlzIG1hdGNoIGZvciBjb25kaXRpb25zCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo0NAogICAgLy8gYXNzZXJ0KGE1Lmxlbmd0aCA9PT0gMywgJ2E1IGxlbmd0aCBzaG91bGQgYmUgMycpCiAgICBwdXNoaW50IDMKICAgIHB1c2hpbnQgMwogICAgPT0KICAgIGFzc2VydCAvLyBhNSBsZW5ndGggc2hvdWxkIGJlIDMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjQ1CiAgICAvLyBjb25zdCBbYTRdOiBbdWludDY0XSA9IFsxXQogICAgaW50Y18zIC8vIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjQ2CiAgICAvLyBhc3NlcnQoYTQgPT09IDEpCiAgICBpbnRjXzMgLy8gMQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NDcKICAgIC8vIGNvbnN0IFtjLCBkXSA9IFtsb2dBbmRSZXR1cm4odSksIGxvZ0FuZFJldHVybih1KSwgbG9nQW5kUmV0dXJuKHUpXQogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGxvZ0FuZFJldHVybgogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGxvZ0FuZFJldHVybgogICAgZnJhbWVfZGlnIC0yCiAgICBjYWxsc3ViIGxvZ0FuZFJldHVybgogICAgY292ZXIgMgogICAgY292ZXIgMQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NDgKICAgIC8vIGFzc2VydE1hdGNoKFtjLCBkXSwgW3UsIHVdKQogICAgaW50Y18xIC8vIDIKICAgIGludGNfMSAvLyAyCiAgICA9PQogICAgdW5jb3ZlciAxCiAgICBmcmFtZV9kaWcgLTIKICAgID09CiAgICAmJgogICAgdW5jb3ZlciAxCiAgICBmcmFtZV9kaWcgLTIKICAgID09CiAgICAmJgogICAgYXNzZXJ0IC8vIGFzc2VydCB0YXJnZXQgaXMgbWF0Y2ggZm9yIGNvbmRpdGlvbnMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjQ5CiAgICAvLyBjb25zdCBbYTYsIGE3XSA9IG1fYQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTEKICAgIGxlbgogICAgZnJhbWVfZGlnIC0xCiAgICBpbnRjXzEgLy8gMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzMgLy8gMQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIGNvdmVyIDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjUwCiAgICAvLyBhc3NlcnQoYTYgPT09IG1fYVswXSkKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMSAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMiAvLyAwCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NTEKICAgIC8vIGFzc2VydChhNyA9PT0gbV9hWzFdKQogICAgZnJhbWVfZGlnIC0xCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18zIC8vIDEKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICA9PQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RBcnJheU5hcnJvd2luZyhtX2E6IGJ5dGVzLCB1OiB1aW50NjQpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdEFycmF5TmFycm93aW5nOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NTQKICAgIC8vIHRlc3RBcnJheU5hcnJvd2luZyhtX2E6IHVpbnQ2NFtdLCB1OiB1aW50NjQpIHsKICAgIHByb3RvIDIgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RBcnJheU5hcnJvd2luZ19ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RBcnJheU5hcnJvd2luZ19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NTUKICAgIC8vIGNvbnN0IGRpcmVjdCA9IGNsb25lKG1fYSkKICAgIGZyYW1lX2RpZyAtMgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NTYKICAgIC8vIG1fYVswXSArPSAxCiAgICBmcmFtZV9kaWcgLTIKICAgIGxlbgogICAgZnJhbWVfZGlnIC0yCiAgICBpbnRjXzEgLy8gMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzIgLy8gMAogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIGludGNfMyAvLyAxCiAgICArCiAgICBpdG9iCiAgICBpbnRjXzIgLy8gMAogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMSAvLyAyCiAgICArCiAgICBmcmFtZV9kaWcgLTIKICAgIHVuY292ZXIgMQogICAgdW5jb3ZlciAyCiAgICByZXBsYWNlMyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGZyYW1lX2J1cnkgLTIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjU3CiAgICAvLyBkaXJlY3RbMF0gKz0gMgogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIGR1cAogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgaXRvYgogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzEgLy8gMgogICAgKwogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDEKICAgIHVuY292ZXIgMgogICAgcmVwbGFjZTMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo1OAogICAgLy8gYXNzZXJ0KG1fYVswXSAhPT0gZGlyZWN0WzBdKQogICAgZnJhbWVfZGlnIC0yCiAgICBsZW4KICAgIGZyYW1lX2RpZyAtMgogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICAhPQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RUdXBsZVRvQXJyYXkobV90OiBieXRlcywgaV90LjA6IHVpbnQ2NCwgaV90LjE6IHVpbnQ2NCkgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0VHVwbGVUb0FycmF5OgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NjgKICAgIC8vIHRlc3RUdXBsZVRvQXJyYXkobV90OiBbdWludDY0LCB1aW50NjRdLCBpX3Q6IHJlYWRvbmx5IFt1aW50NjQsIHVpbnQ2NF0pIHsKICAgIHByb3RvIDMgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3RUdXBsZVRvQXJyYXlfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0VHVwbGVUb0FycmF5X2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo2OQogICAgLy8gY29uc3QgbV9hOiB1aW50NjRbXSA9IGNsb25lKG1fdCkKICAgIGZyYW1lX2RpZyAtMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgZnJhbWVfZGlnIC0zCiAgICBpbnRjXzAgLy8gOAogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzCiAgICBidG9pCiAgICBpbnRjXzEgLy8gMgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICB1bmNvdmVyIDEKICAgIGl0b2IKICAgIGNvbmNhdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NzAKICAgIC8vIGFzc2VydE1hdGNoKG1fYSwgbV90KQogICAgZHVwCiAgICBpbnRjXzIgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18xIC8vIDIKICAgID09CiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgZHVwCiAgICBpbnRjXzEgLy8gMgogICAgdW5jb3ZlciAzCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzIgLy8gMAogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAtMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgPT0KICAgIHVuY292ZXIgMgogICAgJiYKICAgIGNvdmVyIDEKICAgIGR1cAogICAgbGVuCiAgICBjb3ZlciAxCiAgICBpbnRjXzEgLy8gMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzMgLy8gMQogICAgaW50Y18wIC8vIDgKICAgICoKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MyAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAtMwogICAgaW50Y18wIC8vIDgKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgPT0KICAgICYmCiAgICBhc3NlcnQgLy8gYXNzZXJ0IHRhcmdldCBpcyBtYXRjaCBmb3IgY29uZGl0aW9ucwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NzEKICAgIC8vIGNvbnN0IGlfYTogcmVhZG9ubHkgdWludDY0W10gPSBjbG9uZShtX3QpCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMiAvLyAwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgIGZyYW1lX2RpZyAtMwogICAgaW50Y18wIC8vIDgKICAgIGludGNfMCAvLyA4CiAgICBleHRyYWN0MwogICAgYnRvaQogICAgaW50Y18xIC8vIDIKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgdW5jb3ZlciAxCiAgICBpdG9iCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjcyCiAgICAvLyBhc3NlcnRNYXRjaChpX2EsIG1fdCkKICAgIGR1cAogICAgaW50Y18yIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMSAvLyAyCiAgICA9PQogICAgY292ZXIgMQogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIGR1cAogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMiAvLyAwCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgID09CiAgICB1bmNvdmVyIDIKICAgICYmCiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18zIC8vIDEKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICBmcmFtZV9kaWcgLTMKICAgIGludGNfMCAvLyA4CiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMKICAgIGJ0b2kKICAgID09CiAgICAmJgogICAgYXNzZXJ0IC8vIGFzc2VydCB0YXJnZXQgaXMgbWF0Y2ggZm9yIGNvbmRpdGlvbnMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjc0CiAgICAvLyBjb25zdCBpX2EyOiByZWFkb25seSB1aW50NjRbXSA9IGlfdAogICAgaW50Y18xIC8vIDIKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBmcmFtZV9kaWcgLTIKICAgIGl0b2IKICAgIGNvbmNhdAogICAgZnJhbWVfZGlnIC0xCiAgICBpdG9iCiAgICBjb25jYXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjc1CiAgICAvLyBhc3NlcnRNYXRjaChpX2EyLCBpX3QpCiAgICBkdXAKICAgIGludGNfMiAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzEgLy8gMgogICAgPT0KICAgIGNvdmVyIDEKICAgIGR1cAogICAgbGVuCiAgICBjb3ZlciAxCiAgICBkdXAKICAgIGludGNfMSAvLyAyCiAgICB1bmNvdmVyIDMKICAgIHN1YnN0cmluZzMKICAgIGludGNfMiAvLyAwCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgZnJhbWVfZGlnIC0yCiAgICA9PQogICAgdW5jb3ZlciAyCiAgICAmJgogICAgY292ZXIgMQogICAgZHVwCiAgICBsZW4KICAgIGNvdmVyIDEKICAgIGludGNfMSAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMyAvLyAxCiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18wIC8vIDgKICAgIGV4dHJhY3QzIC8vIG9uIGVycm9yOiBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgZnJhbWVfZGlnIC0xCiAgICA9PQogICAgJiYKICAgIGFzc2VydCAvLyBhc3NlcnQgdGFyZ2V0IGlzIG1hdGNoIGZvciBjb25kaXRpb25zCiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3ROZXN0ZWQoaV9hOiBieXRlcykgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0TmVzdGVkOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6NzgKICAgIC8vIHRlc3ROZXN0ZWQoaV9hOiBSZWFkb25seUFycmF5PFJlYWRvbmx5QXJyYXk8dWludDY0Pj4pIHsKICAgIHByb3RvIDEgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3ROZXN0ZWRfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0TmVzdGVkX2Jsb2NrQDA6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo3OQogICAgLy8gY29uc3QgW1thXV0gPSBpX2EKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18yIC8vIDAKICAgIGNhbGxzdWIgZHluYW1pY19hc3NlcnRfaW5kZXgKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMSAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMiAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHVuY292ZXIgMQogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18xIC8vIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIGV4dHJhY3QzCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo4MAogICAgLy8gYXNzZXJ0KGEgPT09IGlfYVswXVswXSkKICAgIGZyYW1lX2RpZyAtMQogICAgaW50Y18yIC8vIDAKICAgIGNhbGxzdWIgZHluYW1pY19hc3NlcnRfaW5kZXgKICAgIGZyYW1lX2RpZyAtMQogICAgbGVuCiAgICBmcmFtZV9kaWcgLTEKICAgIGludGNfMSAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMiAvLyAwCiAgICBpbnRjXzEgLy8gMgogICAgKgogICAgZGlnIDEKICAgIHVuY292ZXIgMQogICAgZXh0cmFjdF91aW50MTYKICAgIGR1cDIKICAgIGV4dHJhY3RfdWludDE2CiAgICBpbnRjXzAgLy8gOAogICAgKgogICAgaW50Y18xIC8vIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgdW5jb3ZlciAyCiAgICB1bmNvdmVyIDIKICAgIGV4dHJhY3QzCiAgICBkdXAKICAgIGxlbgogICAgY292ZXIgMQogICAgaW50Y18xIC8vIDIKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18yIC8vIDAKICAgIGludGNfMCAvLyA4CiAgICAqCiAgICBpbnRjXzAgLy8gOAogICAgZXh0cmFjdDMgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICA9PQogICAgYXNzZXJ0CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3REZXN0cnVjdHVyZU9iaihtOiBieXRlcywgaS5hOiB1aW50NjQsIGkuYjogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdERlc3RydWN0dXJlT2JqOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6ODMKICAgIC8vIHRlc3REZXN0cnVjdHVyZU9iaihtOiB7IGE6IHVpbnQ2NDsgYjogc3RyaW5nIH0sIGk6IFJlYWRvbmx5PHsgYTogdWludDY0OyBiOiBzdHJpbmcgfT4pIHsKICAgIHByb3RvIDMgMAogICAgYiB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3REZXN0cnVjdHVyZU9ial9ibG9ja0AwCgp0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLnRlc3REZXN0cnVjdHVyZU9ial9ibG9ja0AwOgogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0T2JqTGl0ZXJhbE5hcnJvd2luZyhhOiB1aW50NjQsIGI6IHVpbnQ2NCkgLT4gdm9pZDoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0T2JqTGl0ZXJhbE5hcnJvd2luZzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjg4CiAgICAvLyB0ZXN0T2JqTGl0ZXJhbE5hcnJvd2luZyhhOiB1aW50NjQsIGI6IHVpbnQ2NCkgewogICAgcHJvdG8gMiAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdE9iakxpdGVyYWxOYXJyb3dpbmdfYmxvY2tAMAoKdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0T2JqTGl0ZXJhbE5hcnJvd2luZ19ibG9ja0AwOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OTUKICAgIC8vIHJlc2V0Q291bnQoKQogICAgY2FsbHN1YiByZXNldENvdW50CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo5NgogICAgLy8gY29uc3QgbU9iajM6IE11dGFibGVPYmogPSB7IC4uLmdldFZhbCgpIH0KICAgIGNhbGxzdWIgZ2V0VmFsCiAgICBjb3ZlciAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo5NwogICAgLy8gYXNzZXJ0KGdldENvdW50KCkgPT09IDEsICdnZXRWYWwgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UnKQogICAgY2FsbHN1YiBnZXRDb3VudAogICAgaW50Y18zIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gZ2V0VmFsIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBvbmNlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo5OQogICAgLy8gY29uc3QgbU9iajQ6IE11dGFibGVPYmogPSB7IC4uLmdldFZhbCgpLCBhLCBiIH0KICAgIGNhbGxzdWIgZ2V0VmFsCiAgICBjb3ZlciAxCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czoxMDAKICAgIC8vIGFzc2VydChnZXRDb3VudCgpID09PSAyLCAnZ2V0VmFsIHNob3VsZCBzdGlsbCBiZSBjYWxsZWQgb25jZSBldmVuIHRob3VnaCBpdHMgcmVzdWx0IGlzIG5vdCB1c2VkJykKICAgIGNhbGxzdWIgZ2V0Q291bnQKICAgIGludGNfMSAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGdldFZhbCBzaG91bGQgc3RpbGwgYmUgY2FsbGVkIG9uY2UgZXZlbiB0aG91Z2ggaXRzIHJlc3VsdCBpcyBub3QgdXNlZAogICAgcmV0c3ViCgoKLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6OkFzc2lnbm1lbnRzQWxnby50ZXN0TWl4ZWQobTogYnl0ZXMpIC0+IHZvaWQ6CnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdE1peGVkOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2Fzc2lnbm1lbnRzLmFsZ28udHM6MTAzCiAgICAvLyB0ZXN0TWl4ZWQobTogQXJyYXk8eyBhOiBbdWludDY0XSB9PikgewogICAgcHJvdG8gMSAwCiAgICBiIHRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdE1peGVkX2Jsb2NrQDAKCnRlc3RzL2FwcHJvdmFscy9hc3NpZ25tZW50cy5hbGdvLnRzOjpBc3NpZ25tZW50c0FsZ28udGVzdE1peGVkX2Jsb2NrQDA6CiAgICByZXRzdWIKCgovLyB0ZXN0cy9hcHByb3ZhbHMvYXNzaWdubWVudHMuYWxnby50czo6QXNzaWdubWVudHNBbGdvLl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZSgpIC0+IHZvaWQ6Cl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZToKICAgIGIgX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlX2Jsb2NrQDAKCl9fYWxnb3RzX18uZGVmYXVsdENyZWF0ZV9ibG9ja0AwOgogICAgcmV0c3ViCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBiIG1haW5fYmxvY2tAMAoKbWFpbl9ibG9ja0AwOgogICAgcHVzaGludCAxCiAgICByZXR1cm4K" }, "byteCode": { "approval": "CyAECAIAAUIAAEIAADEbJBNBAKRCAAAxGSQSRDEYJBNBAJJCAAA2GgCABHAuoQiABO3ahemABFsvdxOABJDMyz2ABNi+k7+ABFo/7FqABCek82eABNbJ9IaABG4DrQxPCY4JADoANAAuACgAIgAcABYAEAAKQgAAQgAAQgAAAIgCHEL/84gB/EL/7YgBiEL/54gBF0L/4YgA5kL/24gAwEL/1YgAhUL/z4gAbUL/yYgAVkL/w0L/wzEZJBIxGCQSEESIBQYlQ4oCAEIAAIv+JFmL/w1EiUIAACQkP4lCAAAkPolCAAAkPiUIJE8BP4lCAACI/+4lI4mKAQFCAACI/+KL/xawi/+JQgAANhoBSRUiEkQXiAGeJUNCAACIAaqABBUffHVPAVCwJUNCAAA2GgFJJFkiCyMISwEVEkQ2GgJJFSISRBc2GgNJJFkiCyMISwEVEkRPAk8CTwKIAYglQ0IAADYaAUkkWSILIwhLARUSRDYaAkkVIhJEF4gCYSVDQgAANhoBSRWBEBJENhoCSRWBEBJESSQiWBdOASIiWBdPAk8CTwKIAp4lQ0IAADYaAUcCJFlJTgIjC04BSRVOASNPAlIkQgAASUsEDEEANkIAAEkjC0sCSU4CTwFZSUsFSU4EEkRLARVOAU8CTwFPAlIkWSILIwgIRQNCAABJJQhFAUL/w0sCIwhLBUlOAhUSRIgDHCVDQgAANhoBSRVOAUkiWUmBChJESwFPAU8DUiRZJQsjCIEKCEsBFRJENhoCSRVOAUkiWUmBChJESwFPAU8DUiRZJQsjCIEKCEsBFRJESSQiWBdOAUkiWU4BSRVOAU8CTwJSVwIATwJPAk8CiAMbJUNCAAA2GgFJFSISRBc2GgJJFSISRBeIAwglQ0IAADYaAUkkWSILIwhLARUSRIgDESVDigEAQgAAi/8jJQiBAxJEi/8SRIlCAAAyCklzAE4BTgJEcwFETwEWgABPAVBPARZQiYoDAEIAAIv9FYv9I08CUiUiCyJYF4v9FYv9I08CUiUiCyJYFxJEiP3Hi/6I/eSL/oj934v+iP3aTgJLAU4DSU4ETwEWgABPAVBPARZQTwEWUIj9o4EDEkRPAYv+EkRPAYv+EkSBA4EDEksBJCJYF4v+EhBLASIiWBeL/hIQTwGBECJYF4v+EhBEgQOBAxJEJSUSRIv+iP16i/6I/XWL/oj9cE4CTgEjIxJPAYv+EhBPAYv+EhBEi/8Vi/8jTwJSJCILIlgXi/8Vi/8jTwJSJSILIlgXTgGL/xWL/yNPAlIkIgsiWBcSRIv/FYv/I08CUiUiCyJYFxJEiYoCAEIAAIv+i/4Vi/4jTwJSJCILIlgXJQgWJCILIwiL/k8BTwJdjP5JFU4BSSNPA1IkIgsiWBcjCBYkIgsjCE8CTwFPAl2L/hWL/iNPAlIkIgsiWBdOAUkVTgEjTwJSJCILIlgXE0SJigMAQgAAi/0kIlgXi/0iIlgXIxZXBgJPAhZQTwEWUEkkWSMSTgFJFU4BSSNPA1IkIgsiWBeL/SQiWBcSTwIQTgFJFU4BI08CUiUiCyJYF4v9IiJYFxIQRIv9JCJYF4v9IiJYFyMWVwYCTwIWUE8BFlBJJFkjEk4BSRVOAUkjTwNSJCILIlgXi/0kIlgXEk8CEE4BSRVOASNPAlIlIgsiWBeL/SIiWBcSEEQjFlcGAov+FlCL/xZQSSRZIxJOAUkVTgFJI08DUiQiCyJYF4v+Ek8CEE4BSRVOASNPAlIlIgsiWBeL/xIQRImKAQBCAACL/ySI+4uL/xWL/yNPAlIkIwtLAU8BWUpZIgsjCE8CTwJPAlhJFU4BI08CUiQiCyJYF4v/JIj7WYv/FYv/I08CUiQjC0sBTwFZSlkiCyMITwJPAk8CWEkVTgEjTwJSJCILIlgXEkSJigMAQgAAiYoCAEIAAIj7KYj7P04BiPsoJRJEiPs0TgGI+x0jEkSJigEAQgAAiUIAAIk=", "clear": "C0IAAIEBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }