{ "name": "TestContract", "structs": {}, "methods": [ { "name": "test_literal_encoding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_native_encoding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_arc4_encoding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_uint64_encoding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_static_encoding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_array_dynamic_encoding", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "test_bytes_to_fixed", "args": [ { "type": "bool", "name": "wrong_size" } ], "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": [ 2317 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 2351 ], "errorMessage": "invalid size" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAwIDYgMSAyCiAgICBieXRlY2Jsb2NrIDB4MDAyMCAweDAwMmEgYmFzZTY0KEM0RUJRdz09KSBiYXNlNjQoQ3lBRUFBSUJLREViUVFCNWdBUXpzMG1lTmhvQWpnRUFZekVaRkVReEdFU0NEQVNOZGkvZkJDMHludUVFYWszZmN3VFc0TGU4Qk9YS3pRWUVpYTlWZXdSRzRaYTlCUE00aHRvRUpaVzVXZ1EvVlNackJIMGtDVVVFQTFHcDNqWWFBSTRNQUJJQUx3QlFBSEVBamdDcUFNNEE2d0VPQVNzQmt3SHFBREVaZ1FVU01SZ1FRekVaRkRFWUZCQkROaG9CU1JXQkNCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKSWxrakNFc0JGUkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpGWUZBRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWSkJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKSWxtQkNBc2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllFWUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVraVdTVUxJd2hMQVJVU1JEWWFBa2tpV1NNSVN3RVZFa1JYQWdBU1JDUkROaG9CU1JXQmVCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSEFpSlpTVTRDSXd0TVNSVk9BbGNDQUNKSlN3VU1RUUF2U1NNTFN3SkpUd0paU1U4RlNVNEVFa1JMQVJWU1NSVkxBU1ZaU1lFcUVrUk1VaUpaZ1N3SUNFNENKQWhDLzhwR0FrOENTQ01JRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1E0RUdOaG9CSWttQkF3eEJBQzlKSXd0TEFrbFBBbGxKVHdWSlRnUVNSRXNCRlZKSkZVc0JKVmxKZ1NvU1JFeFNJbG1CTEFnSVRnSWtDRUwveWtoSkZVOENFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa1ZnU0FTUkRFQUVrUWtRdz09KSAweDMzYjM0OTllIDB4MDAwYjQ4NjU2YzZjNmYyMDU3NmY3MjZjNjQgMHgwMDBkMDAwYjQ4NjU2YzZjNmYyMDU3NmY3MjZjNjQgMHg4ZDc2MmZkZiAweDAwMDgwMDAwMDAwMDAwMDAwMDAwIDB4MmQzMjllZTEgMHg2YTRkZGY3MyAweGQ2ZTBiN2JjIDB4MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgMHgwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAgMHhlNWNhY2QwNiAweDAwMDE4MCAweDAwMDMgMHgwMDA0IDB4ODlhZjU1N2IgMHgwMDFhMDAwMzAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMyAweDAwMDMwMDA2IDB4MDAwNgogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToyMC0yMgogICAgLy8gIyBub3RlIHRoZXNlIHRlc3RzIGFyZSB1c2luZyBhYmlfY2FsbCBpbiBvcmRlciB0byB0ZXN0IGRpZmZlcmVudCBzY2VuYXJpb3Mgb2YgQVJDLTQgZW5jb2RpbmcKICAgIC8vICMgdGhlc2Ugc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggYSBtb3JlIHNpbXBsaWZpZWQgYWxnb3B5LmFyYzQuZW5jb2RlL2RlY29kZSB3aGVuIGl0IGlzIGF2YWlsYWJsZQogICAgLy8gY2xhc3MgVGVzdENvbnRyYWN0KGFyYzQuQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE0CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHhjMzY4MjVmZiAweDYyMGFjNmYwIDB4MzQ0YTg4MGIgMHhhOTJlMDNjNCAweDZjNGY4NDUzIDB4N2JkYTlhNDYgMHg5YTNmOGY5YiAvLyBtZXRob2QgInRlc3RfbGl0ZXJhbF9lbmNvZGluZygpdm9pZCIsIG1ldGhvZCAidGVzdF9uYXRpdmVfZW5jb2RpbmcoKXZvaWQiLCBtZXRob2QgInRlc3RfYXJjNF9lbmNvZGluZygpdm9pZCIsIG1ldGhvZCAidGVzdF9hcnJheV91aW50NjRfZW5jb2RpbmcoKXZvaWQiLCBtZXRob2QgInRlc3RfYXJyYXlfc3RhdGljX2VuY29kaW5nKCl2b2lkIiwgbWV0aG9kICJ0ZXN0X2FycmF5X2R5bmFtaWNfZW5jb2RpbmcoKXZvaWQiLCBtZXRob2QgInRlc3RfYnl0ZXNfdG9fZml4ZWQoYm9vbCl2b2lkIgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggdGVzdF9saXRlcmFsX2VuY29kaW5nIHRlc3RfbmF0aXZlX2VuY29kaW5nIHRlc3RfYXJjNF9lbmNvZGluZyB0ZXN0X2FycmF5X3VpbnQ2NF9lbmNvZGluZyB0ZXN0X2FycmF5X3N0YXRpY19lbmNvZGluZyB0ZXN0X2FycmF5X2R5bmFtaWNfZW5jb2RpbmcgdGVzdF9ieXRlc190b19maXhlZAogICAgZXJyCgptYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDE0OgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFyYzRfY29udmVyc2lvbnMuY29udHJhY3QubXlfZHluX3N0cnVjdF9hcmM0KHZhbHVlOiB1aW50NjQpIC0+IGJ5dGVzOgpteV9keW5fc3RydWN0X2FyYzQ6CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjIyMy0yMjQKICAgIC8vIEBzdWJyb3V0aW5lCiAgICAvLyBkZWYgbXlfZHluX3N0cnVjdF9hcmM0KHZhbHVlOiBVSW50NjQpIC0+IE15RHluU3RydWN0QVJDNDoKICAgIHByb3RvIDEgMQogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToyMjYKICAgIC8vIGFyYzQuVUludDY0KHZhbHVlKSwgYXJjNC5BZGRyZXNzKFR4bi5zZW5kZXIpLCBhcmM0LkR5bmFtaWNCeXRlcyhUeG4uc2VuZGVyLmJ5dGVzKQogICAgZnJhbWVfZGlnIC0xCiAgICBpdG9iCiAgICB0eG4gU2VuZGVyCiAgICBieXRlY18wIC8vIDB4MDAyMAogICAgdHhuIFNlbmRlcgogICAgY29uY2F0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjIyNS0yMjcKICAgIC8vIHJldHVybiBNeUR5blN0cnVjdEFSQzQoCiAgICAvLyAgICAgYXJjNC5VSW50NjQodmFsdWUpLCBhcmM0LkFkZHJlc3MoVHhuLnNlbmRlciksIGFyYzQuRHluYW1pY0J5dGVzKFR4bi5zZW5kZXIuYnl0ZXMpCiAgICAvLyApCiAgICBjb3ZlciAyCiAgICBjb25jYXQKICAgIGJ5dGVjXzEgLy8gMHgwMDJhCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgcmV0c3ViCgoKLy8gdGVzdF9jYXNlcy5hcmM0X2NvbnZlcnNpb25zLmNvbnRyYWN0LlRlc3RDb250cmFjdC50ZXN0X2xpdGVyYWxfZW5jb2Rpbmdbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2xpdGVyYWxfZW5jb2Rpbmc6CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjI1CiAgICAvLyBhcHAgPSBhcmM0LmFyYzRfY3JlYXRlKENoZWNrQXBwKS5jcmVhdGVkX2FwcAogICAgaXR4bl9iZWdpbgogICAgYnl0ZWNfMiAvLyBiYXNlNjQoQzRFQlF3PT0pCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KEN5QUVBQUlCS0RFYlFRQjVnQVF6czBtZU5ob0FqZ0VBWXpFWkZFUXhHRVNDREFTTmRpL2ZCQzB5bnVFRWFrM2Zjd1RXNExlOEJPWEt6UVlFaWE5VmV3Ukc0WmE5QlBNNGh0b0VKWlc1V2dRL1ZTWnJCSDBrQ1VVRUExR3AzallhQUk0TUFCSUFMd0JRQUhFQWpnQ3FBTTRBNndFT0FTc0Jrd0hxQURFWmdRVVNNUmdRUXpFWkZERVlGQkJETmhvQlNSV0JDQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpJbGtqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllGQUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVrVkpCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsbUJDQXNqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSkZZRVlFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa2lXU1VMSXdoTEFSVVNSRFlhQWtraVdTTUlTd0VWRWtSWEFnQVNSQ1JETmhvQlNSV0JlQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkhBaUpaU1U0Q0l3dE1TUlZPQWxjQ0FDSkpTd1VNUVFBdlNTTUxTd0pKVHdKWlNVOEZTVTRFRWtSTEFSVlNTUlZMQVNWWlNZRXFFa1JNVWlKWmdTd0lDRTRDSkFoQy84cEdBazhDU0NNSUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRNEVHTmhvQklrbUJBd3hCQUM5Skl3dExBa2xQQWxsSlR3VkpUZ1FTUkVzQkZWSkpGVXNCSlZsSmdTb1NSRXhTSWxtQkxBZ0lUZ0lrQ0VML3lraEpGVThDRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWZ1NBU1JERUFFa1FrUXc9PSkKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjI3LTI4CiAgICAvLyAjIHVpbnQ2NAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja191aW50NjQsIDAsIG9wLmJ6ZXJvKDgpLCBhcHBfaWQ9YXBwKQogICAgaXR4bl9iZWdpbgogICAgaW50Y18wIC8vIDAKICAgIGl0b2IKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDcgLy8gbWV0aG9kICJjaGVja191aW50NjQodWludDY0LGJ5dGVbXSl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyA4IC8vIDB4MDAwODAwMDAwMDAwMDAwMDAwMDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTozMC0zMwogICAgLy8gIyBieXRlcwogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19keW5hbWljX2J5dGVzLCBiIkhlbGxvIFdvcmxkIiwgYiJceDAwXHgwYkhlbGxvIFdvcmxkIiwgYXBwX2lkPWFwcAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MzIKICAgIC8vIENoZWNrQXBwLmNoZWNrX2R5bmFtaWNfYnl0ZXMsIGIiSGVsbG8gV29ybGQiLCBiIlx4MDBceDBiSGVsbG8gV29ybGQiLCBhcHBfaWQ9YXBwCiAgICBieXRlYyA5IC8vIG1ldGhvZCAiY2hlY2tfZHluYW1pY19ieXRlcyhieXRlW10sYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgNSAvLyAweDAwMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgNiAvLyAweDAwMGQwMDBiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MzAtMzMKICAgIC8vICMgYnl0ZXMKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfZHluYW1pY19ieXRlcywgYiJIZWxsbyBXb3JsZCIsIGIiXHgwMFx4MGJIZWxsbyBXb3JsZCIsIGFwcF9pZD1hcHAKICAgIC8vICkKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjM1LTM2CiAgICAvLyAjIHN0cmluZwogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja19zdHJpbmcsICJIZWxsbyBXb3JsZCIsIGIiXHgwMFx4MGJIZWxsbyBXb3JsZCIsIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgYnl0ZWMgMTAgLy8gbWV0aG9kICJjaGVja19zdHJpbmcoc3RyaW5nLGJ5dGVbXSl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDUgLy8gMHgwMDBiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MzIKICAgIC8vIENoZWNrQXBwLmNoZWNrX2R5bmFtaWNfYnl0ZXMsIGIiSGVsbG8gV29ybGQiLCBiIlx4MDBceDBiSGVsbG8gV29ybGQiLCBhcHBfaWQ9YXBwCiAgICBieXRlYyA2IC8vIDB4MDAwZDAwMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTozNS0zNgogICAgLy8gIyBzdHJpbmcKICAgIC8vIGFyYzQuYWJpX2NhbGwoQ2hlY2tBcHAuY2hlY2tfc3RyaW5nLCAiSGVsbG8gV29ybGQiLCBiIlx4MDBceDBiSGVsbG8gV29ybGQiLCBhcHBfaWQ9YXBwKQogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MzgtMzkKICAgIC8vICMgYmlndWludAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja19iaWd1aW50LCBCaWdVSW50KCksIG9wLmJ6ZXJvKDY0KSwgYXBwX2lkPWFwcCkKICAgIGl0eG5fYmVnaW4KICAgIGR1cAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBieXRlYyAxMSAvLyBtZXRob2QgImNoZWNrX2JpZ3VpbnQodWludDUxMixieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxMiAvLyAweDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgMTMgLy8gMHgwMDQwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo0MS00MgogICAgLy8gIyBib29sCiAgICAvLyBhcmM0LmFiaV9jYWxsKENoZWNrQXBwLmNoZWNrX2Jvb2wsIFRydWUsIGIiXHg4MCIsIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgYnl0ZWMgMTQgLy8gbWV0aG9kICJjaGVja19ib29sKGJvb2wsYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgcHVzaGJ5dGVzIDB4ODAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxNSAvLyAweDAwMDE4MAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjQ0CiAgICAvLyBhcmM0LmFiaV9jYWxsKENoZWNrQXBwLmRlbGV0ZV9hcHBsaWNhdGlvbiwgYXBwX2lkPWFwcCkKICAgIGl0eG5fYmVnaW4KICAgIHB1c2hpbnQgNSAvLyBEZWxldGVBcHBsaWNhdGlvbgogICAgaXR4bl9maWVsZCBPbkNvbXBsZXRpb24KICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgYnl0ZWMgNCAvLyBtZXRob2QgImRlbGV0ZV9hcHBsaWNhdGlvbigpdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToyMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFyYzRfY29udmVyc2lvbnMuY29udHJhY3QuVGVzdENvbnRyYWN0LnRlc3RfbmF0aXZlX2VuY29kaW5nW3JvdXRpbmddKCkgLT4gdm9pZDoKdGVzdF9uYXRpdmVfZW5jb2Rpbmc6CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBhcHAgPSBhcmM0LmFyYzRfY3JlYXRlKENoZWNrQXBwKS5jcmVhdGVkX2FwcAogICAgaXR4bl9iZWdpbgogICAgYnl0ZWNfMiAvLyBiYXNlNjQoQzRFQlF3PT0pCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KEN5QUVBQUlCS0RFYlFRQjVnQVF6czBtZU5ob0FqZ0VBWXpFWkZFUXhHRVNDREFTTmRpL2ZCQzB5bnVFRWFrM2Zjd1RXNExlOEJPWEt6UVlFaWE5VmV3Ukc0WmE5QlBNNGh0b0VKWlc1V2dRL1ZTWnJCSDBrQ1VVRUExR3AzallhQUk0TUFCSUFMd0JRQUhFQWpnQ3FBTTRBNndFT0FTc0Jrd0hxQURFWmdRVVNNUmdRUXpFWkZERVlGQkJETmhvQlNSV0JDQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpJbGtqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllGQUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVrVkpCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsbUJDQXNqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSkZZRVlFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa2lXU1VMSXdoTEFSVVNSRFlhQWtraVdTTUlTd0VWRWtSWEFnQVNSQ1JETmhvQlNSV0JlQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkhBaUpaU1U0Q0l3dE1TUlZPQWxjQ0FDSkpTd1VNUVFBdlNTTUxTd0pKVHdKWlNVOEZTVTRFRWtSTEFSVlNTUlZMQVNWWlNZRXFFa1JNVWlKWmdTd0lDRTRDSkFoQy84cEdBazhDU0NNSUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRNEVHTmhvQklrbUJBd3hCQUM5Skl3dExBa2xQQWxsSlR3VkpUZ1FTUkVzQkZWSkpGVXNCSlZsSmdTb1NSRXhTSWxtQkxBZ0lUZ0lrQ0VML3lraEpGVThDRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWZ1NBU1JERUFFa1FrUXc9PSkKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjUwLTUxCiAgICAvLyAjIHVpbnQ2NAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja191aW50NjQsIFR4bi5udW1fYXBwX2FyZ3MgLSAxLCBvcC5iemVybyg4KSwgYXBwX2lkPWFwcCkKICAgIGl0eG5fYmVnaW4KICAgIHR4biBOdW1BcHBBcmdzCiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgaXRvYgogICAgZGlnIDEKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgYnl0ZWMgNyAvLyBtZXRob2QgImNoZWNrX3VpbnQ2NCh1aW50NjQsYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDggLy8gMHgwMDA4MDAwMDAwMDAwMDAwMDAwMAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjUzLTU5CiAgICAvLyAjIGJ5dGVzCiAgICAvLyBhcmM0LmFiaV9jYWxsKAogICAgLy8gICAgIENoZWNrQXBwLmNoZWNrX2R5bmFtaWNfYnl0ZXMsCiAgICAvLyAgICAgVHhuLmFwcGxpY2F0aW9uX2FyZ3MoMCksCiAgICAvLyAgICAgYiJceDAwXHgwNCIgKyBUeG4uYXBwbGljYXRpb25fYXJncygwKSwKICAgIC8vICAgICBhcHBfaWQ9YXBwLAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo1NgogICAgLy8gVHhuLmFwcGxpY2F0aW9uX2FyZ3MoMCksCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo1NwogICAgLy8gYiJceDAwXHgwNCIgKyBUeG4uYXBwbGljYXRpb25fYXJncygwKSwKICAgIGJ5dGVjIDE3IC8vIDB4MDAwNAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo1NQogICAgLy8gQ2hlY2tBcHAuY2hlY2tfZHluYW1pY19ieXRlcywKICAgIGJ5dGVjIDkgLy8gbWV0aG9kICJjaGVja19keW5hbWljX2J5dGVzKGJ5dGVbXSxieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBzd2FwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6NTMtNTkKICAgIC8vICMgYnl0ZXMKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfZHluYW1pY19ieXRlcywKICAgIC8vICAgICBUeG4uYXBwbGljYXRpb25fYXJncygwKSwKICAgIC8vICAgICBiIlx4MDBceDA0IiArIFR4bi5hcHBsaWNhdGlvbl9hcmdzKDApLAogICAgLy8gICAgIGFwcF9pZD1hcHAsCiAgICAvLyApCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo2MS02NAogICAgLy8gIyBieXRlcwogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19zdHJpbmcsIFN0cmluZygiSGVsbG8gV29ybGQiKSwgYiJceDAwXHgwYkhlbGxvIFdvcmxkIiwgYXBwX2lkPWFwcAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6NjMKICAgIC8vIENoZWNrQXBwLmNoZWNrX3N0cmluZywgU3RyaW5nKCJIZWxsbyBXb3JsZCIpLCBiIlx4MDBceDBiSGVsbG8gV29ybGQiLCBhcHBfaWQ9YXBwCiAgICBieXRlYyAxMCAvLyBtZXRob2QgImNoZWNrX3N0cmluZyhzdHJpbmcsYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgNSAvLyAweDAwMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgNiAvLyAweDAwMGQwMDBiNDg2NTZjNmM2ZjIwNTc2ZjcyNmM2NAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6NjEtNjQKICAgIC8vICMgYnl0ZXMKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfc3RyaW5nLCBTdHJpbmcoIkhlbGxvIFdvcmxkIiksIGIiXHgwMFx4MGJIZWxsbyBXb3JsZCIsIGFwcF9pZD1hcHAKICAgIC8vICkKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjY2LTY3CiAgICAvLyAjIGJpZ3VpbnQKICAgIC8vIGFyYzQuYWJpX2NhbGwoQ2hlY2tBcHAuY2hlY2tfYmlndWludCwgQmlnVUludCgpLCBvcC5iemVybyg2NCksIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgYnl0ZWMgMTEgLy8gbWV0aG9kICJjaGVja19iaWd1aW50KHVpbnQ1MTIsYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgMTIgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDEzIC8vIDB4MDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6NjktNzAKICAgIC8vICMgYm9vbAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja19ib29sLCBUeG4ubnVtX2FwcF9hcmdzID09IDEsIGIiXHg4MCIsIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICB0eG4gTnVtQXBwQXJncwogICAgaW50Y18yIC8vIDEKICAgID09CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18wIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBkaWcgMQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBieXRlYyAxNCAvLyBtZXRob2QgImNoZWNrX2Jvb2woYm9vbCxieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgMTUgLy8gMHgwMDAxODAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo3MgogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5kZWxldGVfYXBwbGljYXRpb24sIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDQgLy8gbWV0aG9kICJkZWxldGVfYXBwbGljYXRpb24oKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6NDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5hcmM0X2NvbnZlcnNpb25zLmNvbnRyYWN0LlRlc3RDb250cmFjdC50ZXN0X2FyYzRfZW5jb2Rpbmdbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2FyYzRfZW5jb2Rpbmc6CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyBhcHAgPSBhcmM0LmFyYzRfY3JlYXRlKENoZWNrQXBwKS5jcmVhdGVkX2FwcAogICAgaXR4bl9iZWdpbgogICAgYnl0ZWNfMiAvLyBiYXNlNjQoQzRFQlF3PT0pCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KEN5QUVBQUlCS0RFYlFRQjVnQVF6czBtZU5ob0FqZ0VBWXpFWkZFUXhHRVNDREFTTmRpL2ZCQzB5bnVFRWFrM2Zjd1RXNExlOEJPWEt6UVlFaWE5VmV3Ukc0WmE5QlBNNGh0b0VKWlc1V2dRL1ZTWnJCSDBrQ1VVRUExR3AzallhQUk0TUFCSUFMd0JRQUhFQWpnQ3FBTTRBNndFT0FTc0Jrd0hxQURFWmdRVVNNUmdRUXpFWkZERVlGQkJETmhvQlNSV0JDQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpJbGtqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllGQUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVrVkpCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsbUJDQXNqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSkZZRVlFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa2lXU1VMSXdoTEFSVVNSRFlhQWtraVdTTUlTd0VWRWtSWEFnQVNSQ1JETmhvQlNSV0JlQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkhBaUpaU1U0Q0l3dE1TUlZPQWxjQ0FDSkpTd1VNUVFBdlNTTUxTd0pKVHdKWlNVOEZTVTRFRWtSTEFSVlNTUlZMQVNWWlNZRXFFa1JNVWlKWmdTd0lDRTRDSkFoQy84cEdBazhDU0NNSUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRNEVHTmhvQklrbUJBd3hCQUM5Skl3dExBa2xQQWxsSlR3VkpUZ1FTUkVzQkZWSkpGVXNCSlZsSmdTb1NSRXhTSWxtQkxBZ0lUZ0lrQ0VML3lraEpGVThDRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWZ1NBU1JERUFFa1FrUXc9PSkKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5Ojc4LTc5CiAgICAvLyAjIHVpbnQ2NAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja191aW50NjQsIGFyYzQuVUludDY0KCksIG9wLmJ6ZXJvKDgpLCBhcHBfaWQ9YXBwKQogICAgaXR4bl9iZWdpbgogICAgaW50Y18wIC8vIDAKICAgIGl0b2IKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDcgLy8gbWV0aG9kICJjaGVja191aW50NjQodWludDY0LGJ5dGVbXSl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyA4IC8vIDB4MDAwODAwMDAwMDAwMDAwMDAwMDAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo4MS04NwogICAgLy8gIyBieXRlcwogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19keW5hbWljX2J5dGVzLAogICAgLy8gICAgIGFyYzQuRHluYW1pY0J5dGVzKFR4bi5hcHBsaWNhdGlvbl9hcmdzKDApKSwKICAgIC8vICAgICBiIlx4MDBceDA0IiArIFR4bi5hcHBsaWNhdGlvbl9hcmdzKDApLAogICAgLy8gICAgIGFwcF9pZD1hcHAsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5Ojg0CiAgICAvLyBhcmM0LkR5bmFtaWNCeXRlcyhUeG4uYXBwbGljYXRpb25fYXJncygwKSksCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAwCiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo4NQogICAgLy8gYiJceDAwXHgwNCIgKyBUeG4uYXBwbGljYXRpb25fYXJncygwKSwKICAgIGJ5dGVjIDE3IC8vIDB4MDAwNAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo4MwogICAgLy8gQ2hlY2tBcHAuY2hlY2tfZHluYW1pY19ieXRlcywKICAgIGJ5dGVjIDkgLy8gbWV0aG9kICJjaGVja19keW5hbWljX2J5dGVzKGJ5dGVbXSxieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBzd2FwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6ODEtODcKICAgIC8vICMgYnl0ZXMKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfZHluYW1pY19ieXRlcywKICAgIC8vICAgICBhcmM0LkR5bmFtaWNCeXRlcyhUeG4uYXBwbGljYXRpb25fYXJncygwKSksCiAgICAvLyAgICAgYiJceDAwXHgwNCIgKyBUeG4uYXBwbGljYXRpb25fYXJncygwKSwKICAgIC8vICAgICBhcHBfaWQ9YXBwLAogICAgLy8gKQogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6ODktOTIKICAgIC8vICMgYnl0ZXMKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfc3RyaW5nLCBhcmM0LlN0cmluZygiSGVsbG8gV29ybGQiKSwgYiJceDAwXHgwYkhlbGxvIFdvcmxkIiwgYXBwX2lkPWFwcAogICAgLy8gKQogICAgaXR4bl9iZWdpbgogICAgZHVwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6OTEKICAgIC8vIENoZWNrQXBwLmNoZWNrX3N0cmluZywgYXJjNC5TdHJpbmcoIkhlbGxvIFdvcmxkIiksIGIiXHgwMFx4MGJIZWxsbyBXb3JsZCIsIGFwcF9pZD1hcHAKICAgIGJ5dGVjIDEwIC8vIG1ldGhvZCAiY2hlY2tfc3RyaW5nKHN0cmluZyxieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyA1IC8vIDB4MDAwYjQ4NjU2YzZjNmYyMDU3NmY3MjZjNjQKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyA2IC8vIDB4MDAwZDAwMGI0ODY1NmM2YzZmMjA1NzZmNzI2YzY0CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo4OS05MgogICAgLy8gIyBieXRlcwogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19zdHJpbmcsIGFyYzQuU3RyaW5nKCJIZWxsbyBXb3JsZCIpLCBiIlx4MDBceDBiSGVsbG8gV29ybGQiLCBhcHBfaWQ9YXBwCiAgICAvLyApCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weTo5NC05NQogICAgLy8gIyBiaWd1aW50CiAgICAvLyBhcmM0LmFiaV9jYWxsKENoZWNrQXBwLmNoZWNrX2JpZ3VpbnQsIGFyYzQuVUludDUxMigpLCBvcC5iemVybyg2NCksIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBkdXAKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgYnl0ZWMgMTEgLy8gbWV0aG9kICJjaGVja19iaWd1aW50KHVpbnQ1MTIsYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgYnl0ZWMgMTIgLy8gMHgwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGJ5dGVjIDEzIC8vIDB4MDA0MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6OTctOTgKICAgIC8vICMgYm9vbAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja19ib29sLCBhcmM0LkJvb2woVHhuLm51bV9hcHBfYXJncyA9PSAxKSwgYiJceDgwIiwgYXBwX2lkPWFwcCkKICAgIGl0eG5fYmVnaW4KICAgIHR4biBOdW1BcHBBcmdzCiAgICBpbnRjXzIgLy8gMQogICAgPT0KICAgIHB1c2hieXRlcyAweDAwCiAgICBpbnRjXzAgLy8gMAogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDE0IC8vIG1ldGhvZCAiY2hlY2tfYm9vbChib29sLGJ5dGVbXSl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxNSAvLyAweDAwMDE4MAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEwMAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5kZWxldGVfYXBwbGljYXRpb24sIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDQgLy8gbWV0aG9kICJkZWxldGVfYXBwbGljYXRpb24oKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6NzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5hcmM0X2NvbnZlcnNpb25zLmNvbnRyYWN0LlRlc3RDb250cmFjdC50ZXN0X2FycmF5X3VpbnQ2NF9lbmNvZGluZ1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfYXJyYXlfdWludDY0X2VuY29kaW5nOgogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxMDQKICAgIC8vIGFwcCA9IGFyYzQuYXJjNF9jcmVhdGUoQ2hlY2tBcHApLmNyZWF0ZWRfYXBwCiAgICBpdHhuX2JlZ2luCiAgICBieXRlY18yIC8vIGJhc2U2NChDNEVCUXc9PSkKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMyAvLyBiYXNlNjQoQ3lBRUFBSUJLREViUVFCNWdBUXpzMG1lTmhvQWpnRUFZekVaRkVReEdFU0NEQVNOZGkvZkJDMHludUVFYWszZmN3VFc0TGU4Qk9YS3pRWUVpYTlWZXdSRzRaYTlCUE00aHRvRUpaVzVXZ1EvVlNackJIMGtDVVVFQTFHcDNqWWFBSTRNQUJJQUx3QlFBSEVBamdDcUFNNEE2d0VPQVNzQmt3SHFBREVaZ1FVU01SZ1FRekVaRkRFWUZCQkROaG9CU1JXQkNCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKSWxrakNFc0JGUkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpGWUZBRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWSkJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKSWxtQkNBc2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllFWUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVraVdTVUxJd2hMQVJVU1JEWWFBa2tpV1NNSVN3RVZFa1JYQWdBU1JDUkROaG9CU1JXQmVCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSEFpSlpTVTRDSXd0TVNSVk9BbGNDQUNKSlN3VU1RUUF2U1NNTFN3SkpUd0paU1U4RlNVNEVFa1JMQVJWU1NSVkxBU1ZaU1lFcUVrUk1VaUpaZ1N3SUNFNENKQWhDLzhwR0FrOENTQ01JRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1E0RUdOaG9CSWttQkF3eEJBQzlKSXd0TEFrbFBBbGxKVHdWSlRnUVNSRXNCRlZKSkZVc0JKVmxKZ1NvU1JFeFNJbG1CTEFnSVRnSWtDRUwveWtoSkZVOENFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa1ZnU0FTUkRFQUVrUWtRdz09KQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTA2CiAgICAvLyBhcnIgPSBJbW11dGFibGVBcnJheSgoVHhuLm51bV9hcHBfYXJncywgVHhuLm51bV9hcHBfYXJncyArIDEsIFR4bi5udW1fYXBwX2FyZ3MgKyAyKSkKICAgIHR4biBOdW1BcHBBcmdzCiAgICBkdXAKICAgIGludGNfMiAvLyAxCiAgICArCiAgICB0eG4gTnVtQXBwQXJncwogICAgaW50Y18zIC8vIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgYnl0ZWMgMTYgLy8gMHgwMDAzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBjb25jYXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTEwCiAgICAvLyBhcmM0LmFiaV9jYWxsKENoZWNrQXBwLmNoZWNrX2R5bl9hcnJheV91aW42NCwgYXJyLCBleHBlY3RlZF9ieXRlcywgYXBwX2lkPWFwcCkKICAgIGl0eG5fYmVnaW4KICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDE4IC8vIG1ldGhvZCAiY2hlY2tfZHluX2FycmF5X3VpbjY0KHVpbnQ2NFtdLGJ5dGVbXSl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBieXRlYyAxOSAvLyAweDAwMWEwMDAzMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDIwMDAwMDAwMDAwMDAwMDAzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTExLTExNgogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19keW5fYXJyYXlfdWluNjQsCiAgICAvLyAgICAgKFR4bi5udW1fYXBwX2FyZ3MsIFR4bi5udW1fYXBwX2FyZ3MgKyAxLCBUeG4ubnVtX2FwcF9hcmdzICsgMiksCiAgICAvLyAgICAgZXhwZWN0ZWRfYnl0ZXMsCiAgICAvLyAgICAgYXBwX2lkPWFwcCwKICAgIC8vICkKICAgIGl0eG5fYmVnaW4KICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTEzCiAgICAvLyAoVHhuLm51bV9hcHBfYXJncywgVHhuLm51bV9hcHBfYXJncyArIDEsIFR4bi5udW1fYXBwX2FyZ3MgKyAyKSwKICAgIHR4biBOdW1BcHBBcmdzCiAgICBkdXAKICAgIGludGNfMiAvLyAxCiAgICArCiAgICB0eG4gTnVtQXBwQXJncwogICAgaW50Y18zIC8vIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgYnl0ZWMgMTYgLy8gMHgwMDAzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTEyCiAgICAvLyBDaGVja0FwcC5jaGVja19keW5fYXJyYXlfdWluNjQsCiAgICBieXRlYyAxOCAvLyBtZXRob2QgImNoZWNrX2R5bl9hcnJheV91aW42NCh1aW50NjRbXSxieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxMTAKICAgIC8vIGFyYzQuYWJpX2NhbGwoQ2hlY2tBcHAuY2hlY2tfZHluX2FycmF5X3VpbjY0LCBhcnIsIGV4cGVjdGVkX2J5dGVzLCBhcHBfaWQ9YXBwKQogICAgYnl0ZWMgMTkgLy8gMHgwMDFhMDAwMzAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTExLTExNgogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19keW5fYXJyYXlfdWluNjQsCiAgICAvLyAgICAgKFR4bi5udW1fYXBwX2FyZ3MsIFR4bi5udW1fYXBwX2FyZ3MgKyAxLCBUeG4ubnVtX2FwcF9hcmdzICsgMiksCiAgICAvLyAgICAgZXhwZWN0ZWRfYnl0ZXMsCiAgICAvLyAgICAgYXBwX2lkPWFwcCwKICAgIC8vICkKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjExNy0xMjIKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfc3RhdGljX2FycmF5X3VpbjY0XzMsCiAgICAvLyAgICAgKFR4bi5udW1fYXBwX2FyZ3MsIFR4bi5udW1fYXBwX2FyZ3MgKyAxLCBUeG4ubnVtX2FwcF9hcmdzICsgMiksCiAgICAvLyAgICAgZXhwZWN0ZWRfYnl0ZXNbMjpdLAogICAgLy8gICAgIGFwcF9pZD1hcHAsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjExOQogICAgLy8gKFR4bi5udW1fYXBwX2FyZ3MsIFR4bi5udW1fYXBwX2FyZ3MgKyAxLCBUeG4ubnVtX2FwcF9hcmdzICsgMiksCiAgICB0eG4gTnVtQXBwQXJncwogICAgZHVwCiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgdHhuIE51bUFwcEFyZ3MKICAgIGludGNfMyAvLyAyCiAgICArCiAgICB1bmNvdmVyIDIKICAgIGl0b2IKICAgIHVuY292ZXIgMgogICAgaXRvYgogICAgY29uY2F0CiAgICBzd2FwCiAgICBpdG9iCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTE4CiAgICAvLyBDaGVja0FwcC5jaGVja19zdGF0aWNfYXJyYXlfdWluNjRfMywKICAgIHB1c2hieXRlcyAweDQ2ZTE5NmJkIC8vIG1ldGhvZCAiY2hlY2tfc3RhdGljX2FycmF5X3VpbjY0XzModWludDY0WzNdLGJ5dGVbXSl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEyMAogICAgLy8gZXhwZWN0ZWRfYnl0ZXNbMjpdLAogICAgcHVzaGJ5dGVzIDB4MDAxODAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAyMDAwMDAwMDAwMDAwMDAwMwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTE3LTEyMgogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19zdGF0aWNfYXJyYXlfdWluNjRfMywKICAgIC8vICAgICAoVHhuLm51bV9hcHBfYXJncywgVHhuLm51bV9hcHBfYXJncyArIDEsIFR4bi5udW1fYXBwX2FyZ3MgKyAyKSwKICAgIC8vICAgICBleHBlY3RlZF9ieXRlc1syOl0sCiAgICAvLyAgICAgYXBwX2lkPWFwcCwKICAgIC8vICkKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEyNAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5kZWxldGVfYXBwbGljYXRpb24sIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDQgLy8gbWV0aG9kICJkZWxldGVfYXBwbGljYXRpb24oKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTAyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9jb252ZXJzaW9ucy5jb250cmFjdC5UZXN0Q29udHJhY3QudGVzdF9hcnJheV9zdGF0aWNfZW5jb2Rpbmdbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0X2FycmF5X3N0YXRpY19lbmNvZGluZzoKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTI4CiAgICAvLyBhcHAgPSBhcmM0LmFyYzRfY3JlYXRlKENoZWNrQXBwKS5jcmVhdGVkX2FwcAogICAgaXR4bl9iZWdpbgogICAgYnl0ZWNfMiAvLyBiYXNlNjQoQzRFQlF3PT0pCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KEN5QUVBQUlCS0RFYlFRQjVnQVF6czBtZU5ob0FqZ0VBWXpFWkZFUXhHRVNDREFTTmRpL2ZCQzB5bnVFRWFrM2Zjd1RXNExlOEJPWEt6UVlFaWE5VmV3Ukc0WmE5QlBNNGh0b0VKWlc1V2dRL1ZTWnJCSDBrQ1VVRUExR3AzallhQUk0TUFCSUFMd0JRQUhFQWpnQ3FBTTRBNndFT0FTc0Jrd0hxQURFWmdRVVNNUmdRUXpFWkZERVlGQkJETmhvQlNSV0JDQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpJbGtqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllGQUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVrVkpCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsbUJDQXNqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSkZZRVlFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa2lXU1VMSXdoTEFSVVNSRFlhQWtraVdTTUlTd0VWRWtSWEFnQVNSQ1JETmhvQlNSV0JlQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkhBaUpaU1U0Q0l3dE1TUlZPQWxjQ0FDSkpTd1VNUVFBdlNTTUxTd0pKVHdKWlNVOEZTVTRFRWtSTEFSVlNTUlZMQVNWWlNZRXFFa1JNVWlKWmdTd0lDRTRDSkFoQy84cEdBazhDU0NNSUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRNEVHTmhvQklrbUJBd3hCQUM5Skl3dExBa2xQQWxsSlR3VkpUZ1FTUkVzQkZWSkpGVXNCSlZsSmdTb1NSRXhTSWxtQkxBZ0lUZ0lrQ0VML3lraEpGVThDRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWZ1NBU1JERUFFa1FrUXc9PSkKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjIwMwogICAgLy8gcmV0dXJuIE15U3RydWN0KHZhbHVlLCBUeG4uc2VuZGVyKQogICAgdHhuIFNlbmRlcgogICAgZHVwbiAyCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEzMAogICAgLy8gYXJyID0gSW1tdXRhYmxlQXJyYXkoKG15X3N0cnVjdChVSW50NjQoMSkpLCBteV9zdHJ1Y3QoVUludDY0KDIpKSwgbXlfc3RydWN0KFVJbnQ2NCgzKSkpKQogICAgcHVzaGludCAzCiAgICBpdG9iCiAgICBpbnRjXzIgLy8gMQogICAgaXRvYgogICAgZHVwCiAgICB1bmNvdmVyIDUKICAgIGNvbmNhdAogICAgYnl0ZWMgMTYgLy8gMHgwMDAzCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMyAvLyAyCiAgICBpdG9iCiAgICBkdXAKICAgIHVuY292ZXIgNgogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgZGlnIDMKICAgIHVuY292ZXIgNQogICAgY29uY2F0CiAgICBjb25jYXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTMyLTEzMwogICAgLy8gYiJceDAwXHgwMyIKICAgIC8vICsgKG9wLmJ6ZXJvKDcpICsgYiJceDAxIikKICAgIHB1c2hieXRlcyAweDAwMDMwMDAwMDAwMDAwMDAwMDAxCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEzNAogICAgLy8gKyBUeG4uc2VuZGVyLmJ5dGVzCiAgICB0eG4gU2VuZGVyCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEzMi0xMzQKICAgIC8vIGIiXHgwMFx4MDMiCiAgICAvLyArIChvcC5iemVybyg3KSArIGIiXHgwMSIpCiAgICAvLyArIFR4bi5zZW5kZXIuYnl0ZXMKICAgIGNvbmNhdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxMzUKICAgIC8vICsgKG9wLmJ6ZXJvKDcpICsgYiJceDAyIikKICAgIHB1c2hieXRlcyAweDAwMDAwMDAwMDAwMDAwMDIKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTMyLTEzNQogICAgLy8gYiJceDAwXHgwMyIKICAgIC8vICsgKG9wLmJ6ZXJvKDcpICsgYiJceDAxIikKICAgIC8vICsgVHhuLnNlbmRlci5ieXRlcwogICAgLy8gKyAob3AuYnplcm8oNykgKyBiIlx4MDIiKQogICAgY29uY2F0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEzNgogICAgLy8gKyBUeG4uc2VuZGVyLmJ5dGVzCiAgICB0eG4gU2VuZGVyCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEzMi0xMzYKICAgIC8vIGIiXHgwMFx4MDMiCiAgICAvLyArIChvcC5iemVybyg3KSArIGIiXHgwMSIpCiAgICAvLyArIFR4bi5zZW5kZXIuYnl0ZXMKICAgIC8vICsgKG9wLmJ6ZXJvKDcpICsgYiJceDAyIikKICAgIC8vICsgVHhuLnNlbmRlci5ieXRlcwogICAgY29uY2F0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEzNwogICAgLy8gKyAob3AuYnplcm8oNykgKyBiIlx4MDMiKQogICAgcHVzaGJ5dGVzIDB4MDAwMDAwMDAwMDAwMDAwMwogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxMzItMTM3CiAgICAvLyBiIlx4MDBceDAzIgogICAgLy8gKyAob3AuYnplcm8oNykgKyBiIlx4MDEiKQogICAgLy8gKyBUeG4uc2VuZGVyLmJ5dGVzCiAgICAvLyArIChvcC5iemVybyg3KSArIGIiXHgwMiIpCiAgICAvLyArIFR4bi5zZW5kZXIuYnl0ZXMKICAgIC8vICsgKG9wLmJ6ZXJvKDcpICsgYiJceDAzIikKICAgIGNvbmNhdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxMzgKICAgIC8vICsgVHhuLnNlbmRlci5ieXRlcwogICAgdHhuIFNlbmRlcgogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxMzItMTM4CiAgICAvLyBiIlx4MDBceDAzIgogICAgLy8gKyAob3AuYnplcm8oNykgKyBiIlx4MDEiKQogICAgLy8gKyBUeG4uc2VuZGVyLmJ5dGVzCiAgICAvLyArIChvcC5iemVybyg3KSArIGIiXHgwMiIpCiAgICAvLyArIFR4bi5zZW5kZXIuYnl0ZXMKICAgIC8vICsgKG9wLmJ6ZXJvKDcpICsgYiJceDAzIikKICAgIC8vICsgVHhuLnNlbmRlci5ieXRlcwogICAgY29uY2F0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE0MAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja19keW5fYXJyYXlfc3RydWN0LCBhcnIsIGV4cGVjdGVkX2J5dGVzLCBhcHBfaWQ9YXBwKQogICAgaXR4bl9iZWdpbgogICAgZHVwCiAgICBsZW4KICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGRpZyAyCiAgICBjb25jYXQKICAgIGRpZyA3CiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIHB1c2hieXRlcyAweGYzMzg4NmRhIC8vIG1ldGhvZCAiY2hlY2tfZHluX2FycmF5X3N0cnVjdCgodWludDY0LGFkZHJlc3MpW10sYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgdW5jb3ZlciAzCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE0MS0xNDYKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfc3RhdGljX2FycmF5X3N0cnVjdCwKICAgIC8vICAgICAobXlfc3RydWN0KFVJbnQ2NCgxKSksIG15X3N0cnVjdChVSW50NjQoMikpLCBteV9zdHJ1Y3QoVUludDY0KDMpKSksCiAgICAvLyAgICAgZXhwZWN0ZWRfYnl0ZXNbMjpdLAogICAgLy8gICAgIGFwcF9pZD1hcHAsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjIwMwogICAgLy8gcmV0dXJuIE15U3RydWN0KHZhbHVlLCBUeG4uc2VuZGVyKQogICAgdHhuIFNlbmRlcgogICAgZHVwbiAyCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE0MwogICAgLy8gKG15X3N0cnVjdChVSW50NjQoMSkpLCBteV9zdHJ1Y3QoVUludDY0KDIpKSwgbXlfc3RydWN0KFVJbnQ2NCgzKSkpLAogICAgdW5jb3ZlciA2CiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgdW5jb3ZlciA1CiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgY29uY2F0CiAgICB1bmNvdmVyIDQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBjb25jYXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTQ0CiAgICAvLyBleHBlY3RlZF9ieXRlc1syOl0sCiAgICBpbnRjXzMgLy8gMgogICAgZGlnIDIKICAgID49CiAgICBpbnRjXzMgLy8gMgogICAgZGlnIDMKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICB1bmNvdmVyIDMKICAgIHN3YXAKICAgIHVuY292ZXIgMwogICAgc3Vic3RyaW5nMwogICAgZHVwCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAyCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTQyCiAgICAvLyBDaGVja0FwcC5jaGVja19zdGF0aWNfYXJyYXlfc3RydWN0LAogICAgcHVzaGJ5dGVzIDB4MjU5NWI5NWEgLy8gbWV0aG9kICJjaGVja19zdGF0aWNfYXJyYXlfc3RydWN0KCh1aW50NjQsYWRkcmVzcylbM10sYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgc3dhcAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE0MS0xNDYKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfc3RhdGljX2FycmF5X3N0cnVjdCwKICAgIC8vICAgICAobXlfc3RydWN0KFVJbnQ2NCgxKSksIG15X3N0cnVjdChVSW50NjQoMikpLCBteV9zdHJ1Y3QoVUludDY0KDMpKSksCiAgICAvLyAgICAgZXhwZWN0ZWRfYnl0ZXNbMjpdLAogICAgLy8gICAgIGFwcF9pZD1hcHAsCiAgICAvLyApCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxNDgKICAgIC8vIGFyYzQuYWJpX2NhbGwoQ2hlY2tBcHAuZGVsZXRlX2FwcGxpY2F0aW9uLCBhcHBfaWQ9YXBwKQogICAgaXR4bl9iZWdpbgogICAgcHVzaGludCA1IC8vIERlbGV0ZUFwcGxpY2F0aW9uCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBieXRlYyA0IC8vIG1ldGhvZCAiZGVsZXRlX2FwcGxpY2F0aW9uKCl2b2lkIgogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjEyNgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFyYzRfY29udmVyc2lvbnMuY29udHJhY3QuVGVzdENvbnRyYWN0LnRlc3RfYXJyYXlfZHluYW1pY19lbmNvZGluZ1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfYXJyYXlfZHluYW1pY19lbmNvZGluZzoKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTUyCiAgICAvLyBhcHAgPSBhcmM0LmFyYzRfY3JlYXRlKENoZWNrQXBwKS5jcmVhdGVkX2FwcAogICAgaXR4bl9iZWdpbgogICAgYnl0ZWNfMiAvLyBiYXNlNjQoQzRFQlF3PT0pCiAgICBpdHhuX2ZpZWxkIENsZWFyU3RhdGVQcm9ncmFtUGFnZXMKICAgIGJ5dGVjXzMgLy8gYmFzZTY0KEN5QUVBQUlCS0RFYlFRQjVnQVF6czBtZU5ob0FqZ0VBWXpFWkZFUXhHRVNDREFTTmRpL2ZCQzB5bnVFRWFrM2Zjd1RXNExlOEJPWEt6UVlFaWE5VmV3Ukc0WmE5QlBNNGh0b0VKWlc1V2dRL1ZTWnJCSDBrQ1VVRUExR3AzallhQUk0TUFCSUFMd0JRQUhFQWpnQ3FBTTRBNndFT0FTc0Jrd0hxQURFWmdRVVNNUmdRUXpFWkZERVlGQkJETmhvQlNSV0JDQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpJbGtqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllGQUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVrVkpCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsbUJDQXNqQ0VzQkZSSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSkZZRVlFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa2lXU1VMSXdoTEFSVVNSRFlhQWtraVdTTUlTd0VWRWtSWEFnQVNSQ1JETmhvQlNSV0JlQkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkhBaUpaU1U0Q0l3dE1TUlZPQWxjQ0FDSkpTd1VNUVFBdlNTTUxTd0pKVHdKWlNVOEZTVTRFRWtSTEFSVlNTUlZMQVNWWlNZRXFFa1JNVWlKWmdTd0lDRTRDSkFoQy84cEdBazhDU0NNSUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRNEVHTmhvQklrbUJBd3hCQUM5Skl3dExBa2xQQWxsSlR3VkpUZ1FTUkVzQkZWSkpGVXNCSlZsSmdTb1NSRXhTSWxtQkxBZ0lUZ0lrQ0VML3lraEpGVThDRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWZ1NBU1JERUFFa1FrUXc9PSkKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtUGFnZXMKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICBpdHhuIENyZWF0ZWRBcHBsaWNhdGlvbklECiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjIyMAogICAgLy8gcmV0dXJuIE15RHluU3RydWN0KHZhbHVlLCBUeG4uc2VuZGVyLCBUeG4uc2VuZGVyLmJ5dGVzKQogICAgdHhuIFNlbmRlcgogICAgZHVwbiA1CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE1NC0xNTYKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5KAogICAgLy8gICAgIChteV9keW5fc3RydWN0KFVJbnQ2NCgxKSksIG15X2R5bl9zdHJ1Y3QoVUludDY0KDIpKSwgbXlfZHluX3N0cnVjdChVSW50NjQoMykpKQogICAgLy8gKQogICAgcHVzaGludCAzCiAgICBpdG9iCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE1NQogICAgLy8gKG15X2R5bl9zdHJ1Y3QoVUludDY0KDEpKSwgbXlfZHluX3N0cnVjdChVSW50NjQoMikpLCBteV9keW5fc3RydWN0KFVJbnQ2NCgzKSkpCiAgICBpbnRjXzIgLy8gMQogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxNTQtMTU2CiAgICAvLyBhcnIgPSBJbW11dGFibGVBcnJheSgKICAgIC8vICAgICAobXlfZHluX3N0cnVjdChVSW50NjQoMSkpLCBteV9keW5fc3RydWN0KFVJbnQ2NCgyKSksIG15X2R5bl9zdHJ1Y3QoVUludDY0KDMpKSkKICAgIC8vICkKICAgIGl0b2IKICAgIGR1cAogICAgdW5jb3ZlciA4CiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgwMDIwCiAgICB1bmNvdmVyIDgKICAgIGNvbmNhdAogICAgc3dhcAogICAgYnl0ZWNfMSAvLyAweDAwMmEKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18xIC8vIDYKICAgICsKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTU1CiAgICAvLyAobXlfZHluX3N0cnVjdChVSW50NjQoMSkpLCBteV9keW5fc3RydWN0KFVJbnQ2NCgyKSksIG15X2R5bl9zdHJ1Y3QoVUludDY0KDMpKSkKICAgIGludGNfMyAvLyAyCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE1NC0xNTYKICAgIC8vIGFyciA9IEltbXV0YWJsZUFycmF5KAogICAgLy8gICAgIChteV9keW5fc3RydWN0KFVJbnQ2NCgxKSksIG15X2R5bl9zdHJ1Y3QoVUludDY0KDIpKSwgbXlfZHluX3N0cnVjdChVSW50NjQoMykpKQogICAgLy8gKQogICAgaXRvYgogICAgZHVwCiAgICB1bmNvdmVyIDkKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDAwMjAKICAgIHVuY292ZXIgOQogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAyYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAyCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgYnl0ZWMgMjAgLy8gMHgwMDAzMDAwNgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMQogICAgbGVuCiAgICB1bmNvdmVyIDQKICAgICsKICAgIGRpZyA2CiAgICB1bmNvdmVyIDkKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDAwMjAKICAgIHVuY292ZXIgOQogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAyYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciA0CiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTU4CiAgICAvLyBteV9keW5fc3RydWN0X2FyYzQoVUludDY0KDEpKSwKICAgIGludGNfMiAvLyAxCiAgICBjYWxsc3ViIG15X2R5bl9zdHJ1Y3RfYXJjNAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxNTkKICAgIC8vIG15X2R5bl9zdHJ1Y3RfYXJjNChVSW50NjQoMikpLAogICAgaW50Y18zIC8vIDIKICAgIGNhbGxzdWIgbXlfZHluX3N0cnVjdF9hcmM0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE2MAogICAgLy8gbXlfZHluX3N0cnVjdF9hcmM0KFVJbnQ2NCgzKSksCiAgICBwdXNoaW50IDMKICAgIGNhbGxzdWIgbXlfZHluX3N0cnVjdF9hcmM0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE1Ny0xNjEKICAgIC8vIGV4cGVjdGVkX2J5dGVzID0gYXJjNC5EeW5hbWljQXJyYXkoCiAgICAvLyAgICAgbXlfZHluX3N0cnVjdF9hcmM0KFVJbnQ2NCgxKSksCiAgICAvLyAgICAgbXlfZHluX3N0cnVjdF9hcmM0KFVJbnQ2NCgyKSksCiAgICAvLyAgICAgbXlfZHluX3N0cnVjdF9hcmM0KFVJbnQ2NCgzKSksCiAgICAvLyApLmJ5dGVzCiAgICBkaWcgMgogICAgbGVuCiAgICBpbnRjXzEgLy8gNgogICAgKwogICAgZHVwCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgYnl0ZWMgMjAgLy8gMHgwMDAzMDAwNgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMwogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE2MgogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5jaGVja19keW5fYXJyYXlfZHluX3N0cnVjdCwgYXJyLCBleHBlY3RlZF9ieXRlcywgYXBwX2lkPWFwcCkKICAgIGl0eG5fYmVnaW4KICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgNQogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbklECiAgICBwdXNoYnl0ZXMgMHgzZjU1MjY2YiAvLyBtZXRob2QgImNoZWNrX2R5bl9hcnJheV9keW5fc3RydWN0KCh1aW50NjQsYWRkcmVzcyxieXRlW10pW10sYnl0ZVtdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgc3dhcAogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBpbnRjXzEgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgaW50Y18wIC8vIDAKICAgIGl0eG5fZmllbGQgRmVlCiAgICBpdHhuX3N1Ym1pdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxNjUKICAgIC8vIG15X2R5bl9zdHJ1Y3RfYXJjNChVSW50NjQoMSkpLAogICAgaW50Y18yIC8vIDEKICAgIGNhbGxzdWIgbXlfZHluX3N0cnVjdF9hcmM0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE2NgogICAgLy8gbXlfZHluX3N0cnVjdF9hcmM0KFVJbnQ2NCgyKSksCiAgICBpbnRjXzMgLy8gMgogICAgY2FsbHN1YiBteV9keW5fc3RydWN0X2FyYzQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTY3CiAgICAvLyBteV9keW5fc3RydWN0X2FyYzQoVUludDY0KDMpKSwKICAgIHB1c2hpbnQgMwogICAgY2FsbHN1YiBteV9keW5fc3RydWN0X2FyYzQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTY0LTE2OAogICAgLy8gZXhwZWN0ZWRfYnl0ZXMgPSBhcmM0LlN0YXRpY0FycmF5KAogICAgLy8gICAgIG15X2R5bl9zdHJ1Y3RfYXJjNChVSW50NjQoMSkpLAogICAgLy8gICAgIG15X2R5bl9zdHJ1Y3RfYXJjNChVSW50NjQoMikpLAogICAgLy8gICAgIG15X2R5bl9zdHJ1Y3RfYXJjNChVSW50NjQoMykpLAogICAgLy8gKS5ieXRlcwogICAgZGlnIDIKICAgIGxlbgogICAgaW50Y18xIC8vIDYKICAgICsKICAgIGR1cAogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGJ5dGVjIDIxIC8vIDB4MDAwNgogICAgc3dhcAogICAgY29uY2F0CiAgICBkaWcgMwogICAgbGVuCiAgICB1bmNvdmVyIDIKICAgICsKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICBjb25jYXQKICAgIHVuY292ZXIgMwogICAgY29uY2F0CiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE2OS0xNzQKICAgIC8vIGFyYzQuYWJpX2NhbGwoCiAgICAvLyAgICAgQ2hlY2tBcHAuY2hlY2tfc3RhdGljX2FycmF5X2R5bl9zdHJ1Y3QsCiAgICAvLyAgICAgKG15X2R5bl9zdHJ1Y3QoVUludDY0KDEpKSwgbXlfZHluX3N0cnVjdChVSW50NjQoMikpLCBteV9keW5fc3RydWN0KFVJbnQ2NCgzKSkpLAogICAgLy8gICAgIGV4cGVjdGVkX2J5dGVzLAogICAgLy8gICAgIGFwcF9pZD1hcHAsCiAgICAvLyApCiAgICBpdHhuX2JlZ2luCiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjIyMAogICAgLy8gcmV0dXJuIE15RHluU3RydWN0KHZhbHVlLCBUeG4uc2VuZGVyLCBUeG4uc2VuZGVyLmJ5dGVzKQogICAgdHhuIFNlbmRlcgogICAgZHVwbiA1CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE3MQogICAgLy8gKG15X2R5bl9zdHJ1Y3QoVUludDY0KDEpKSwgbXlfZHluX3N0cnVjdChVSW50NjQoMikpLCBteV9keW5fc3RydWN0KFVJbnQ2NCgzKSkpLAogICAgdW5jb3ZlciA4CiAgICB1bmNvdmVyIDYKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDAwMjAKICAgIHVuY292ZXIgNgogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAyYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzEgLy8gNgogICAgKwogICAgdW5jb3ZlciA3CiAgICB1bmNvdmVyIDYKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDAwMjAKICAgIHVuY292ZXIgNgogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAyYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgYnl0ZWMgMjEgLy8gMHgwMDA2CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGRpZyAxCiAgICBsZW4KICAgIHVuY292ZXIgMwogICAgKwogICAgdW5jb3ZlciA3CiAgICB1bmNvdmVyIDYKICAgIGNvbmNhdAogICAgYnl0ZWNfMCAvLyAweDAwMjAKICAgIHVuY292ZXIgNgogICAgY29uY2F0CiAgICBzd2FwCiAgICBieXRlY18xIC8vIDB4MDAyYQogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAzCiAgICBjb25jYXQKICAgIHVuY292ZXIgMgogICAgY29uY2F0CiAgICBzd2FwCiAgICBjb25jYXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTcyCiAgICAvLyBleHBlY3RlZF9ieXRlcywKICAgIGRpZyAxCiAgICBsZW4KICAgIGl0b2IKICAgIGV4dHJhY3QgNiAyCiAgICB1bmNvdmVyIDIKICAgIGNvbmNhdAogICAgZGlnIDIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25JRAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxNzAKICAgIC8vIENoZWNrQXBwLmNoZWNrX3N0YXRpY19hcnJheV9keW5fc3RydWN0LAogICAgcHVzaGJ5dGVzIDB4N2QyNDA5NDUgLy8gbWV0aG9kICJjaGVja19zdGF0aWNfYXJyYXlfZHluX3N0cnVjdCgodWludDY0LGFkZHJlc3MsYnl0ZVtdKVszXSxieXRlW10pdm9pZCIKICAgIGl0eG5fZmllbGQgQXBwbGljYXRpb25BcmdzCiAgICBzd2FwCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTY5LTE3NAogICAgLy8gYXJjNC5hYmlfY2FsbCgKICAgIC8vICAgICBDaGVja0FwcC5jaGVja19zdGF0aWNfYXJyYXlfZHluX3N0cnVjdCwKICAgIC8vICAgICAobXlfZHluX3N0cnVjdChVSW50NjQoMSkpLCBteV9keW5fc3RydWN0KFVJbnQ2NCgyKSksIG15X2R5bl9zdHJ1Y3QoVUludDY0KDMpKSksCiAgICAvLyAgICAgZXhwZWN0ZWRfYnl0ZXMsCiAgICAvLyAgICAgYXBwX2lkPWFwcCwKICAgIC8vICkKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE3NgogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5kZWxldGVfYXBwbGljYXRpb24sIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDQgLy8gbWV0aG9kICJkZWxldGVfYXBwbGljYXRpb24oKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTUwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYXJjNF9jb252ZXJzaW9ucy5jb250cmFjdC5UZXN0Q29udHJhY3QudGVzdF9ieXRlc190b19maXhlZFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnRlc3RfYnl0ZXNfdG9fZml4ZWQ6CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE3OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18yIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuYm9vbAogICAgaW50Y18wIC8vIDAKICAgIGdldGJpdAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxODAKICAgIC8vIGFwcCA9IGFyYzQuYXJjNF9jcmVhdGUoQ2hlY2tBcHApLmNyZWF0ZWRfYXBwCiAgICBpdHhuX2JlZ2luCiAgICBieXRlY18yIC8vIGJhc2U2NChDNEVCUXc9PSkKICAgIGl0eG5fZmllbGQgQ2xlYXJTdGF0ZVByb2dyYW1QYWdlcwogICAgYnl0ZWNfMyAvLyBiYXNlNjQoQ3lBRUFBSUJLREViUVFCNWdBUXpzMG1lTmhvQWpnRUFZekVaRkVReEdFU0NEQVNOZGkvZkJDMHludUVFYWszZmN3VFc0TGU4Qk9YS3pRWUVpYTlWZXdSRzRaYTlCUE00aHRvRUpaVzVXZ1EvVlNackJIMGtDVVVFQTFHcDNqWWFBSTRNQUJJQUx3QlFBSEVBamdDcUFNNEE2d0VPQVNzQmt3SHFBREVaZ1FVU01SZ1FRekVaRkRFWUZCQkROaG9CU1JXQkNCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSklsa2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKSWxrakNFc0JGUkpFTmhvQ1NTSlpJd2hMQVJVU1JGY0NBQkpFSkVNMkdnRkpGWUZBRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1F6WWFBVWtWSkJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKSWxtQkNBc2pDRXNCRlJKRU5ob0NTU0paSXdoTEFSVVNSRmNDQUJKRUpFTTJHZ0ZKRllFWUVrUTJHZ0pKSWxrakNFc0JGUkpFVndJQUVrUWtRellhQVVraVdTVUxJd2hMQVJVU1JEWWFBa2tpV1NNSVN3RVZFa1JYQWdBU1JDUkROaG9CU1JXQmVCSkVOaG9DU1NKWkl3aExBUlVTUkZjQ0FCSkVKRU0yR2dGSEFpSlpTVTRDSXd0TVNSVk9BbGNDQUNKSlN3VU1RUUF2U1NNTFN3SkpUd0paU1U4RlNVNEVFa1JMQVJWU1NSVkxBU1ZaU1lFcUVrUk1VaUpaZ1N3SUNFNENKQWhDLzhwR0FrOENTQ01JRWtRMkdnSkpJbGtqQ0VzQkZSSkVWd0lBRWtRa1E0RUdOaG9CSWttQkF3eEJBQzlKSXd0TEFrbFBBbGxKVHdWSlRnUVNSRXNCRlZKSkZVc0JKVmxKZ1NvU1JFeFNJbG1CTEFnSVRnSWtDRUwveWtoSkZVOENFa1EyR2dKSklsa2pDRXNCRlJKRVZ3SUFFa1FrUXpZYUFVa1ZnU0FTUkRFQUVrUWtRdz09KQogICAgaXR4bl9maWVsZCBBcHByb3ZhbFByb2dyYW1QYWdlcwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIGl0eG4gQ3JlYXRlZEFwcGxpY2F0aW9uSUQKICAgIHN3YXAKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTgxCiAgICAvLyBzZW5kZXIgPSBHbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLmJ5dGVzCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgc3dhcAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxODMKICAgIC8vIGlmIHdyb25nX3NpemU6CiAgICBieiB0ZXN0X2J5dGVzX3RvX2ZpeGVkX2FmdGVyX2lmX2Vsc2VANAogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxODQKICAgIC8vIHNlbmRlciA9IHNlbmRlciArIHNlbmRlcgogICAgZHVwCiAgICBjb25jYXQKCnRlc3RfYnl0ZXNfdG9fZml4ZWRfYWZ0ZXJfaWZfZWxzZUA0OgogICAgLy8gYXJjNF9jb252ZXJzaW9ucy9jb250cmFjdC5weToxODYKICAgIC8vIGFyYzQuYWJpX2NhbGwoQ2hlY2tBcHAuY2hlY2tfc3RhdGljX2J5dGVzLCBzZW5kZXIsIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHNpemUKICAgIGRpZyAxCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIHB1c2hieXRlcyAweDAzNTFhOWRlIC8vIG1ldGhvZCAiY2hlY2tfc3RhdGljX2J5dGVzKGJ5dGVbMzJdKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaXR4bl9maWVsZCBBcHBsaWNhdGlvbkFyZ3MKICAgIGludGNfMSAvLyBhcHBsCiAgICBpdHhuX2ZpZWxkIFR5cGVFbnVtCiAgICBpbnRjXzAgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGl0eG5fc3VibWl0CiAgICAvLyBhcmM0X2NvbnZlcnNpb25zL2NvbnRyYWN0LnB5OjE4OAogICAgLy8gYXJjNC5hYmlfY2FsbChDaGVja0FwcC5kZWxldGVfYXBwbGljYXRpb24sIGFwcF9pZD1hcHApCiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDUgLy8gRGVsZXRlQXBwbGljYXRpb24KICAgIGl0eG5fZmllbGQgT25Db21wbGV0aW9uCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uSUQKICAgIGJ5dGVjIDQgLy8gbWV0aG9kICJkZWxldGVfYXBwbGljYXRpb24oKXZvaWQiCiAgICBpdHhuX2ZpZWxkIEFwcGxpY2F0aW9uQXJncwogICAgaW50Y18xIC8vIGFwcGwKICAgIGl0eG5fZmllbGQgVHlwZUVudW0KICAgIGludGNfMCAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFyYzRfY29udmVyc2lvbnMvY29udHJhY3QucHk6MTc4CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4K", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "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", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }