{ "name": "Reference", "structs": {}, "methods": [ { "name": "noop_with_uint64", "args": [ { "type": "uint64", "name": "a" } ], "returns": { "type": "uint8" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "opt_in", "args": [ { "type": "uint64", "name": "uint" }, { "type": "byte[]", "name": "bites" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "OptIn" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "all_the_things", "args": [ { "type": "uint64", "name": "a" } ], "returns": { "type": "uint8" }, "actions": { "create": [ "NoOp", "OptIn", "DeleteApplication" ], "call": [ "NoOp", "OptIn", "CloseOut", "UpdateApplication", "DeleteApplication" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "mixed_oca", "args": [ { "type": "uint64", "name": "a" } ], "returns": { "type": "uint8" }, "actions": { "create": [], "call": [ "NoOp", "CloseOut", "DeleteApplication" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "opt_into_asset", "args": [ { "type": "uint64", "name": "asset" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "with_transactions", "args": [ { "type": "uint64", "name": "asset" }, { "type": "uint64", "name": "an_int" }, { "type": "pay", "name": "pay" }, { "type": "uint64", "name": "another_int" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "compare_assets", "args": [ { "type": "uint64", "name": "asset_a" }, { "type": "uint64", "name": "asset_b" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_address", "args": [], "returns": { "type": "address" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_asset", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_application", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "get_an_int", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": true, "events": [], "recommendations": {} }, { "name": "method_with_default_args", "args": [ { "type": "uint64", "name": "asset_from_storage", "defaultValue": { "source": "global", "data": "YXNh", "type": "AVMString" } }, { "type": "uint64", "name": "asset_from_function", "defaultValue": { "source": "method", "data": "get_asset()uint64" } }, { "type": "address", "name": "account_from_storage", "defaultValue": { "source": "global", "data": "Y3JlYXRvcg==", "type": "AVMString" } }, { "type": "address", "name": "account_from_function", "defaultValue": { "source": "method", "data": "get_address()address" } }, { "type": "uint64", "name": "application_from_storage", "defaultValue": { "source": "global", "data": "YXBw", "type": "AVMString" } }, { "type": "uint64", "name": "application_from_function", "defaultValue": { "source": "method", "data": "get_application()uint64" } }, { "type": "byte[3]", "name": "bytes_from_storage", "defaultValue": { "source": "global", "data": "c29tZV9ieXRlcw==", "type": "AVMString" } }, { "type": "uint64", "name": "int_from_storage", "defaultValue": { "source": "global", "data": "YW5faW50", "type": "AVMString" } }, { "type": "uint64", "name": "int_from_function", "defaultValue": { "source": "method", "data": "get_an_int()uint64" } }, { "type": "uint32", "name": "int_from_const", "defaultValue": { "source": "literal", "data": "AAAAew==", "type": "uint32" } }, { "type": "string", "name": "str_from_const", "defaultValue": { "source": "literal", "data": "AANhYmM=", "type": "string" } }, { "type": "uint64", "name": "int_from_local", "defaultValue": { "source": "local", "data": "bG9jYWxfdWludA==", "type": "AVMString" } }, { "type": "byte[]", "name": "bytes_from_local", "defaultValue": { "source": "local", "data": "bG9jYWxfYnl0ZXM=", "type": "AVMString" } } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "method_with_15_args", "args": [ { "type": "uint64", "name": "one" }, { "type": "uint64", "name": "two" }, { "type": "uint64", "name": "three" }, { "type": "uint64", "name": "four" }, { "type": "uint64", "name": "five" }, { "type": "uint64", "name": "six" }, { "type": "uint64", "name": "seven" }, { "type": "uint64", "name": "eight" }, { "type": "uint64", "name": "nine" }, { "type": "uint64", "name": "ten" }, { "type": "uint64", "name": "eleven" }, { "type": "uint64", "name": "twelve" }, { "type": "uint64", "name": "thirteen" }, { "type": "uint64", "name": "fourteen" }, { "type": "byte[]", "name": "fifteen" } ], "returns": { "type": "byte[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Fifteen args should not encode the last argument as a tuple", "events": [], "recommendations": {} }, { "name": "method_with_more_than_15_args", "args": [ { "type": "uint64", "name": "a" }, { "type": "uint64", "name": "b" }, { "type": "uint64", "name": "c" }, { "type": "uint64", "name": "d" }, { "type": "uint64", "name": "asset" }, { "type": "uint64", "name": "e" }, { "type": "uint64", "name": "f" }, { "type": "pay", "name": "pay" }, { "type": "uint64", "name": "g" }, { "type": "uint64", "name": "h" }, { "type": "uint64", "name": "i" }, { "type": "uint64", "name": "j" }, { "type": "uint64", "name": "k" }, { "type": "uint64", "name": "l" }, { "type": "uint64", "name": "m" }, { "type": "uint64", "name": "n" }, { "type": "uint64", "name": "o" }, { "type": "uint64", "name": "p" }, { "type": "uint64", "name": "q" }, { "type": "uint64", "name": "r" }, { "type": "byte[]", "name": "s" }, { "type": "byte[]", "name": "t" }, { "type": "uint64", "name": "asset2" }, { "type": "pay", "name": "pay2" }, { "type": "uint64", "name": "u" }, { "type": "uint64", "name": "v" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "desc": "Application calls only support 16 args, and arc4 calls utilise the first arg for the method\nselector. Args beyond this number are packed into a tuple and placed in the 16th slot.", "events": [], "recommendations": {} }, { "name": "hello_with_algopy_string", "args": [ { "type": "string", "name": "name" } ], "returns": { "type": "string" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 3, "bytes": 2 }, "local": { "ints": 1, "bytes": 1 } }, "keys": { "global": { "asa": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YXNh" }, "an_int": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YW5faW50" }, "some_bytes": { "keyType": "AVMString", "valueType": "byte[3]", "key": "c29tZV9ieXRlcw==" }, "creator": { "keyType": "AVMString", "valueType": "address", "key": "Y3JlYXRvcg==" }, "app": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "YXBw" } }, "local": { "local_bytes": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "bG9jYWxfYnl0ZXM=" }, "local_uint": { "keyType": "AVMString", "valueType": "AVMUint64", "key": "bG9jYWxfdWludA==" } }, "box": {} }, "maps": { "global": {}, "local": {}, "box": {} } }, "bareActions": { "create": [ "DeleteApplication", "NoOp", "OptIn" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 492 ], "errorMessage": "ASA already opted in" }, { "pc": [ 486 ], "errorMessage": "Only creator can opt in to ASA" }, { "pc": [ 595 ], "errorMessage": "asset a == b" }, { "pc": [ 490, 552 ], "errorMessage": "check self.asa exists" }, { "pc": [ 842 ], "errorMessage": "check self.local_bytes exists for account" }, { "pc": [ 831 ], "errorMessage": "check self.local_uint exists for account" }, { "pc": [ 764, 774, 784 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 394, 691, 713, 978, 1180, 1201, 1229, 1250, 1278, 1299, 1330, 1351, 1379, 1400, 1429, 1451, 1487, 1509, 1544, 1565, 1606, 1627, 1655, 1676, 1818 ], "errorMessage": "invalid array length header" }, { "pc": [ 401, 698, 720, 985, 1825 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 624, 633 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 660 ], "errorMessage": "invalid number of bytes for arc4.static_array" }, { "pc": [ 1206, 1255, 1304, 1356, 1405, 1460, 1518, 1570, 1632, 1681 ], "errorMessage": "invalid number of bytes for arc4.tuple,arc4.dynamic_array,arc4.uint64,arc4.uint64,arc4.uint64>" }, { "pc": [ 685 ], "errorMessage": "invalid number of bytes for arc4.uint32" }, { "pc": [ 361, 387, 427, 453, 479, 521, 530, 548, 583, 592, 605, 614, 641, 650, 668, 676, 706, 854, 863, 872, 881, 890, 899, 908, 917, 926, 935, 944, 953, 962, 971, 1041, 1049, 1057, 1065, 1074, 1083, 1091, 1109, 1117, 1125, 1133, 1141, 1149, 1157 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 1172, 1221, 1270, 1322, 1371, 1420, 1479, 1536, 1598, 1647 ], "errorMessage": "invalid tail pointer at index 5 of (uint64,uint64,uint64,uint64,uint64,(len+uint8[]),(len+uint8[]),uint64,uint64,uint64)" }, { "pc": [ 1193, 1242, 1291, 1343, 1392, 1442, 1500, 1557, 1619, 1668 ], "errorMessage": "invalid tail pointer at index 6 of (uint64,uint64,uint64,uint64,uint64,(len+uint8[]),(len+uint8[]),uint64,uint64,uint64)" }, { "pc": [ 1167, 1188, 1216, 1237, 1265, 1286, 1317, 1338, 1366, 1387, 1415, 1437, 1474, 1495, 1531, 1552, 1593, 1614, 1642, 1663 ], "errorMessage": "invalid tuple encoding" }, { "pc": [ 556 ], "errorMessage": "is correct asset" }, { "pc": [ 562, 573 ], "errorMessage": "is correct int" }, { "pc": [ 569 ], "errorMessage": "is payment to app" }, { "pc": [ 370, 436, 462 ], "errorMessage": "overflow" }, { "pc": [ 540, 1101, 1583 ], "errorMessage": "transaction type is pay" }, { "pc": [ 771 ], "errorMessage": "wrong 0th byte from storage" }, { "pc": [ 781 ], "errorMessage": "wrong 1st byte from storage" }, { "pc": [ 791 ], "errorMessage": "wrong 2nd byte from storage" }, { "pc": [ 748 ], "errorMessage": "wrong account from function" }, { "pc": [ 742 ], "errorMessage": "wrong account from storage" }, { "pc": [ 761 ], "errorMessage": "wrong application from function" }, { "pc": [ 754 ], "errorMessage": "wrong application from storage" }, { "pc": [ 736 ], "errorMessage": "wrong asset from function" }, { "pc": [ 729 ], "errorMessage": "wrong asset from storage" }, { "pc": [ 804 ], "errorMessage": "wrong int from function" }, { "pc": [ 797 ], "errorMessage": "wrong int from storage" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayA4IDAgMSAyCiAgICBieXRlY2Jsb2NrIDB4MTUxZjdjNzUgImFzYSIgMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDAxYzggImxvY2FsX3VpbnQiICJsb2NhbF9ieXRlcyIKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBibnogbWFpbl9hZnRlcl9pZl9lbHNlQDIKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI2CiAgICAvLyBzZWxmLmFzYSA9IEFzc2V0KDEyMykKICAgIGJ5dGVjXzEgLy8gImFzYSIKICAgIHB1c2hpbnQgMTIzCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjcKICAgIC8vIHNlbGYuYW5faW50ID0gVUludDY0KDIpCiAgICBwdXNoYnl0ZXMgImFuX2ludCIKICAgIGludGNfMyAvLyAyCiAgICBhcHBfZ2xvYmFsX3B1dAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjgKICAgIC8vIHNlbGYuc29tZV9ieXRlcyA9IEJ5dGVzMyhhcmM0LkJ5dGUoNyksIGFyYzQuQnl0ZSg4KSwgYXJjNC5CeXRlKDkpKQogICAgcHVzaGJ5dGVzcyAic29tZV9ieXRlcyIgMHgwNzA4MDkKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOQogICAgLy8gc2VsZi5jcmVhdG9yID0gb3AuVHhuLnNlbmRlcgogICAgcHVzaGJ5dGVzICJjcmVhdG9yIgogICAgdHhuIFNlbmRlcgogICAgYXBwX2dsb2JhbF9wdXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjMwCiAgICAvLyBzZWxmLmFwcCA9IEFwcGxpY2F0aW9uKDEyMykKICAgIHB1c2hieXRlcyAiYXBwIgogICAgcHVzaGludCAxMjMKICAgIGFwcF9nbG9iYWxfcHV0CgptYWluX2FmdGVyX2lmX2Vsc2VAMjoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI0CiAgICAvLyBjbGFzcyBSZWZlcmVuY2UoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX2JhcmVfYWJpX2NvbmZpZ0AyNQogICAgcHVzaGJ5dGVzcyAweDAxMDQwMDIzIDB4M2E1MzUzZmMgMHhkMmYyZjUzYyAvLyBtZXRob2QgIm9wdF9pbih1aW50NjQsYnl0ZVtdKXZvaWQiLCBtZXRob2QgImFsbF90aGVfdGhpbmdzKHVpbnQ2NCl1aW50OCIsIG1ldGhvZCAibWl4ZWRfb2NhKHVpbnQ2NCl1aW50OCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fb3B0X2luX3JvdXRlQDUgZnVsbF9hYmlfY29uZmlnIG1haW5fbWl4ZWRfb2NhX3JvdXRlQDcKCm1haW5fc3dpdGNoX2Nhc2VfbmV4dEA4OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjQKICAgIC8vIGNsYXNzIFJlZmVyZW5jZShBUkM0Q29udHJhY3QpOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4ZDc4ZGIzNWIgMHhkOGY2MmQ5YSAweGI4NDMxMTE5IDB4YzQxNjM3MmQgMHg3ZmFkOTc4MCAweDJmZGY5NWE0IDB4MTM5OTgyNmMgMHhhMTMwMDgyMSAweDYxMzdkYzM3IDB4NTczMjE5NWEgMHhmNjA5NmM4MiAweDkwMjNiYjE5IC8vIG1ldGhvZCAibm9vcF93aXRoX3VpbnQ2NCh1aW50NjQpdWludDgiLCBtZXRob2QgIm9wdF9pbnRvX2Fzc2V0KHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJ3aXRoX3RyYW5zYWN0aW9ucyh1aW50NjQsdWludDY0LHBheSx1aW50NjQpdm9pZCIsIG1ldGhvZCAiY29tcGFyZV9hc3NldHModWludDY0LHVpbnQ2NCl2b2lkIiwgbWV0aG9kICJnZXRfYWRkcmVzcygpYWRkcmVzcyIsIG1ldGhvZCAiZ2V0X2Fzc2V0KCl1aW50NjQiLCBtZXRob2QgImdldF9hcHBsaWNhdGlvbigpdWludDY0IiwgbWV0aG9kICJnZXRfYW5faW50KCl1aW50NjQiLCBtZXRob2QgIm1ldGhvZF93aXRoX2RlZmF1bHRfYXJncyh1aW50NjQsdWludDY0LGFkZHJlc3MsYWRkcmVzcyx1aW50NjQsdWludDY0LGJ5dGVbM10sdWludDY0LHVpbnQ2NCx1aW50MzIsc3RyaW5nLHVpbnQ2NCxieXRlW10pdm9pZCIsIG1ldGhvZCAibWV0aG9kX3dpdGhfMTVfYXJncyh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LGJ5dGVbXSlieXRlW10iLCBtZXRob2QgIm1ldGhvZF93aXRoX21vcmVfdGhhbl8xNV9hcmdzKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCxwYXksdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsYnl0ZVtdLGJ5dGVbXSx1aW50NjQscGF5LHVpbnQ2NCx1aW50NjQpdWludDY0IiwgbWV0aG9kICJoZWxsb193aXRoX2FsZ29weV9zdHJpbmcoc3RyaW5nKXN0cmluZyIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG5vb3Bfd2l0aF91aW50NjQgb3B0X2ludG9fYXNzZXQgd2l0aF90cmFuc2FjdGlvbnMgY29tcGFyZV9hc3NldHMgbWFpbl9nZXRfYWRkcmVzc19yb3V0ZUAxNCBtYWluX2dldF9hc3NldF9yb3V0ZUAxNSBtYWluX2dldF9hcHBsaWNhdGlvbl9yb3V0ZUAxNiBtYWluX2dldF9hbl9pbnRfcm91dGVAMTcgbWV0aG9kX3dpdGhfZGVmYXVsdF9hcmdzIG1ldGhvZF93aXRoXzE1X2FyZ3MgbWV0aG9kX3dpdGhfbW9yZV90aGFuXzE1X2FyZ3MgaGVsbG9fd2l0aF9hbGdvcHlfc3RyaW5nCiAgICBlcnIKCm1haW5fZ2V0X2FuX2ludF9yb3V0ZUAxNzoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEzOAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKHJlYWRvbmx5PVRydWUsIG5hbWU9ImdldF9hbl9pbnQiKQogICAgcHVzaGJ5dGVzIDB4MTUxZjdjNzUwMDAwMDAwMDAwMDAwMDAzCiAgICBsb2cKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCm1haW5fZ2V0X2FwcGxpY2F0aW9uX3JvdXRlQDE2OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTM0CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSwgbmFtZT0iZ2V0X2FwcGxpY2F0aW9uIikKICAgIGJ5dGVjXzIgLy8gMHgxNTFmN2M3NTAwMDAwMDAwMDAwMDAxYzgKICAgIGxvZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKbWFpbl9nZXRfYXNzZXRfcm91dGVAMTU6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZChyZWFkb25seT1UcnVlKQogICAgYnl0ZWNfMiAvLyAweDE1MWY3Yzc1MDAwMDAwMDAwMDAwMDFjOAogICAgbG9nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgptYWluX2dldF9hZGRyZXNzX3JvdXRlQDE0OgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTI2CiAgICAvLyBAYXJjNC5hYmltZXRob2QocmVhZG9ubHk9VHJ1ZSkKICAgIHB1c2hieXRlcyBiYXNlMzIoQ1VQWFk1SUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQSkKICAgIGxvZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKbWFpbl9taXhlZF9vY2Ffcm91dGVANzoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjY2LTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoCiAgICAvLyAgICAgYWxsb3dfYWN0aW9ucz1bCiAgICAvLyAgICAgICAgICJOb09wIiwKICAgIC8vICAgICAgICAgIkNsb3NlT3V0IiwKICAgIC8vICAgICAgICAgIkRlbGV0ZUFwcGxpY2F0aW9uIiwKICAgIC8vICAgICBdLAogICAgLy8gICAgIGNyZWF0ZT0iZGlzYWxsb3ciLAogICAgLy8gICAgIHJlYWRvbmx5PVRydWUsCiAgICAvLyApCiAgICBpbnRjXzIgLy8gMQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgc2hsCiAgICBwdXNoaW50IDM3CiAgICAmCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgJiYKICAgIGFzc2VydAogICAgYiBtaXhlZF9vY2EKCm1haW5fb3B0X2luX3JvdXRlQDU6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9W09uQ29tcGxldGVBY3Rpb24uT3B0SW5dKQogICAgdHhuIE9uQ29tcGxldGlvbgogICAgaW50Y18yIC8vIE9wdEluCiAgICA9PQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICYmCiAgICBhc3NlcnQKICAgIGIgb3B0X2luCgptYWluX2JhcmVfYWJpX2NvbmZpZ0AyNToKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5Ojc5LTg4CiAgICAvLyBAYXJjNC5iYXJlbWV0aG9kKAogICAgLy8gICAgIGFsbG93X2FjdGlvbnM9WwogICAgLy8gICAgICAgICAiTm9PcCIsCiAgICAvLyAgICAgICAgICJPcHRJbiIsCiAgICAvLyAgICAgICAgICJDbG9zZU91dCIsCiAgICAvLyAgICAgICAgICJVcGRhdGVBcHBsaWNhdGlvbiIsCiAgICAvLyAgICAgICAgICJEZWxldGVBcHBsaWNhdGlvbiIsCiAgICAvLyAgICAgXSwKICAgIC8vICAgICBjcmVhdGU9InJlcXVpcmUiLAogICAgLy8gKQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgIGFzc2VydAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6OTAKICAgIC8vIGxvZygiSGVsbG8gV29ybGQiKQogICAgcHVzaGJ5dGVzICJIZWxsbyBXb3JsZCIKICAgIGxvZwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NzktODgKICAgIC8vIEBhcmM0LmJhcmVtZXRob2QoCiAgICAvLyAgICAgYWxsb3dfYWN0aW9ucz1bCiAgICAvLyAgICAgICAgICJOb09wIiwKICAgIC8vICAgICAgICAgIk9wdEluIiwKICAgIC8vICAgICAgICAgIkNsb3NlT3V0IiwKICAgIC8vICAgICAgICAgIlVwZGF0ZUFwcGxpY2F0aW9uIiwKICAgIC8vICAgICAgICAgIkRlbGV0ZUFwcGxpY2F0aW9uIiwKICAgIC8vICAgICBdLAogICAgLy8gICAgIGNyZWF0ZT0icmVxdWlyZSIsCiAgICAvLyApCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2Uubm9vcF93aXRoX3VpbnQ2NFtyb3V0aW5nXSgpIC0+IHZvaWQ6Cm5vb3Bfd2l0aF91aW50NjQ6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0MgogICAgLy8gcmVzdWx0ID0gMSArIGEuYXNfdWludDY0KCkKICAgIGJ0b2kKICAgIGludGNfMiAvLyAxCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0MwogICAgLy8gcmV0dXJuIGFyYzQuVUludDgocmVzdWx0KQogICAgaXRvYgogICAgZHVwCiAgICBiaXRsZW4KICAgIGludGNfMCAvLyA4CiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBleHRyYWN0IDcgMQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NDAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm9wdF9pbltyb3V0aW5nXSgpIC0+IHZvaWQ6Cm9wdF9pbjoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQ1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoYWxsb3dfYWN0aW9ucz1bT25Db21wbGV0ZUFjdGlvbi5PcHRJbl0pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NDcKICAgIC8vIHNlbGYubG9jYWxfdWludFtUeG4uc2VuZGVyXSA9IHVpbnQKICAgIHR4biBTZW5kZXIKICAgIGJ5dGVjXzMgLy8gImxvY2FsX3VpbnQiCiAgICB1bmNvdmVyIDMKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjQ4CiAgICAvLyBzZWxmLmxvY2FsX2J5dGVzW1R4bi5zZW5kZXJdID0gYml0ZXMKICAgIHR4biBTZW5kZXIKICAgIGJ5dGVjIDQgLy8gImxvY2FsX2J5dGVzIgogICAgdW5jb3ZlciAyCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo0NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9W09uQ29tcGxldGVBY3Rpb24uT3B0SW5dKQogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLmZ1bGxfYWJpX2NvbmZpZ1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmZ1bGxfYWJpX2NvbmZpZzoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjUwLTYxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoCiAgICAvLyAgICAgYWxsb3dfYWN0aW9ucz1bCiAgICAvLyAgICAgICAgICJOb09wIiwKICAgIC8vICAgICAgICAgT25Db21wbGV0ZUFjdGlvbi5PcHRJbiwKICAgIC8vICAgICAgICAgIkNsb3NlT3V0IiwKICAgIC8vICAgICAgICAgT25Db21wbGV0ZUFjdGlvbi5VcGRhdGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICAgICAgT25Db21wbGV0ZUFjdGlvbi5EZWxldGVBcHBsaWNhdGlvbiwKICAgIC8vICAgICBdLAogICAgLy8gICAgIG5hbWU9ImFsbF90aGVfdGhpbmdzIiwKICAgIC8vICAgICBjcmVhdGU9ImFsbG93IiwKICAgIC8vICAgICByZWFkb25seT1UcnVlLAogICAgLy8gKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NjMKICAgIC8vIHJlc3VsdCA9IFVJbnQ2NCgxKSArIGEuYXNfdWludDY0KCkKICAgIGJ0b2kKICAgIGludGNfMiAvLyAxCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weTo2NAogICAgLy8gcmV0dXJuIGFyYzQuVUludDgocmVzdWx0KQogICAgaXRvYgogICAgZHVwCiAgICBiaXRsZW4KICAgIGludGNfMCAvLyA4CiAgICA8PQogICAgYXNzZXJ0IC8vIG92ZXJmbG93CiAgICBleHRyYWN0IDcgMQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NTAtNjEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgKICAgIC8vICAgICBhbGxvd19hY3Rpb25zPVsKICAgIC8vICAgICAgICAgIk5vT3AiLAogICAgLy8gICAgICAgICBPbkNvbXBsZXRlQWN0aW9uLk9wdEluLAogICAgLy8gICAgICAgICAiQ2xvc2VPdXQiLAogICAgLy8gICAgICAgICBPbkNvbXBsZXRlQWN0aW9uLlVwZGF0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgICAgICBPbkNvbXBsZXRlQWN0aW9uLkRlbGV0ZUFwcGxpY2F0aW9uLAogICAgLy8gICAgIF0sCiAgICAvLyAgICAgbmFtZT0iYWxsX3RoZV90aGluZ3MiLAogICAgLy8gICAgIGNyZWF0ZT0iYWxsb3ciLAogICAgLy8gICAgIHJlYWRvbmx5PVRydWUsCiAgICAvLyApCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2UubWl4ZWRfb2NhW3JvdXRpbmddKCkgLT4gdm9pZDoKbWl4ZWRfb2NhOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NjYtNzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgKICAgIC8vICAgICBhbGxvd19hY3Rpb25zPVsKICAgIC8vICAgICAgICAgIk5vT3AiLAogICAgLy8gICAgICAgICAiQ2xvc2VPdXQiLAogICAgLy8gICAgICAgICAiRGVsZXRlQXBwbGljYXRpb24iLAogICAgLy8gICAgIF0sCiAgICAvLyAgICAgY3JlYXRlPSJkaXNhbGxvdyIsCiAgICAvLyAgICAgcmVhZG9ubHk9VHJ1ZSwKICAgIC8vICkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5Ojc2CiAgICAvLyByZXN1bHQgPSBVSW50NjQoMSkgKyBhLmFzX3VpbnQ2NCgpCiAgICBidG9pCiAgICBpbnRjXzIgLy8gMQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6NzcKICAgIC8vIHJldHVybiBhcmM0LlVJbnQ4KHJlc3VsdCkKICAgIGl0b2IKICAgIGR1cAogICAgYml0bGVuCiAgICBpbnRjXzAgLy8gOAogICAgPD0KICAgIGFzc2VydCAvLyBvdmVyZmxvdwogICAgZXh0cmFjdCA3IDEKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjY2LTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoCiAgICAvLyAgICAgYWxsb3dfYWN0aW9ucz1bCiAgICAvLyAgICAgICAgICJOb09wIiwKICAgIC8vICAgICAgICAgIkNsb3NlT3V0IiwKICAgIC8vICAgICAgICAgIkRlbGV0ZUFwcGxpY2F0aW9uIiwKICAgIC8vICAgICBdLAogICAgLy8gICAgIGNyZWF0ZT0iZGlzYWxsb3ciLAogICAgLy8gICAgIHJlYWRvbmx5PVRydWUsCiAgICAvLyApCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2Uub3B0X2ludG9fYXNzZXRbcm91dGluZ10oKSAtPiB2b2lkOgpvcHRfaW50b19hc3NldDoKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjkyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5Ojk0LTk1CiAgICAvLyAjIE9ubHkgYWxsb3cgYXBwIGNyZWF0b3IgdG8gb3B0IHRoZSBhcHAgYWNjb3VudCBpbnRvIGEgQVNBCiAgICAvLyBhc3NlcnQgb3AuVHhuLnNlbmRlciA9PSBvcC5HbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCAiT25seSBjcmVhdG9yIGNhbiBvcHQgaW4gdG8gQVNBIgogICAgdHhuIFNlbmRlcgogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICA9PQogICAgYXNzZXJ0IC8vIE9ubHkgY3JlYXRvciBjYW4gb3B0IGluIHRvIEFTQQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6OTYtOTcKICAgIC8vICMgVmVyaWZ5IGEgQVNBIGhhc24ndCBhbHJlYWR5IGJlZW4gb3B0ZWQgaW50bwogICAgLy8gYXNzZXJ0IG5vdCBzZWxmLmFzYSwgIkFTQSBhbHJlYWR5IG9wdGVkIGluIgogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjXzEgLy8gImFzYSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc2EgZXhpc3RzCiAgICAhCiAgICBhc3NlcnQgLy8gQVNBIGFscmVhZHkgb3B0ZWQgaW4KICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5Ojk4LTk5CiAgICAvLyAjIFNhdmUgQVNBIElEIGluIGdsb2JhbCBzdGF0ZQogICAgLy8gc2VsZi5hc2EgPSBhc3NldAogICAgYnl0ZWNfMSAvLyAiYXNhIgogICAgZGlnIDEKICAgIGFwcF9nbG9iYWxfcHV0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDEtMTAyCiAgICAvLyAjIFN1Ym1pdCBvcHQtaW4gdHJhbnNhY3Rpb246IDAgYXNzZXQgdHJhbnNmZXIgdG8gc2VsZgogICAgLy8gb3AuSVR4bkNyZWF0ZS5iZWdpbigpCiAgICBpdHhuX2JlZ2luCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDMKICAgIC8vIG9wLklUeG5DcmVhdGUuc2V0X3R5cGVfZW51bShUcmFuc2FjdGlvblR5cGUuQXNzZXRUcmFuc2ZlcikKICAgIHB1c2hpbnQgNCAvLyBheGZlcgogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA0CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnNldF9mZWUoVUludDY0KDApKSAgIyBjb3ZlciBmZWUgd2l0aCBvdXRlciB0eG4KICAgIGludGNfMSAvLyAwCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA1CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnNldF9hc3NldF9yZWNlaXZlcihvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzKQogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgIGl0eG5fZmllbGQgQXNzZXRSZWNlaXZlcgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA2CiAgICAvLyBvcC5JVHhuQ3JlYXRlLnNldF94ZmVyX2Fzc2V0KGFzc2V0KQogICAgaXR4bl9maWVsZCBYZmVyQXNzZXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEwNwogICAgLy8gb3AuSVR4bkNyZWF0ZS5zdWJtaXQoKQogICAgaXR4bl9zdWJtaXQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjkyCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS53aXRoX3RyYW5zYWN0aW9uc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CndpdGhfdHJhbnNhY3Rpb25zOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTA5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18yIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTE3CiAgICAvLyBhc3NlcnQgc2VsZi5hc2EgPT0gYXNzZXQsICJpcyBjb3JyZWN0IGFzc2V0IgogICAgaW50Y18xIC8vIDAKICAgIGJ5dGVjXzEgLy8gImFzYSIKICAgIGFwcF9nbG9iYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hc2EgZXhpc3RzCiAgICB1bmNvdmVyIDQKICAgID09CiAgICBhc3NlcnQgLy8gaXMgY29ycmVjdCBhc3NldAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTE4CiAgICAvLyBhc3NlcnQgYW5faW50LmFzX3VpbnQ2NCgpID09IDEsICJpcyBjb3JyZWN0IGludCIKICAgIHVuY292ZXIgMgogICAgYnRvaQogICAgaW50Y18yIC8vIDEKICAgID09CiAgICBhc3NlcnQgLy8gaXMgY29ycmVjdCBpbnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjExOQogICAgLy8gYXNzZXJ0IHBheS5yZWNlaXZlciA9PSBvcC5HbG9iYWwuY3VycmVudF9hcHBsaWNhdGlvbl9hZGRyZXNzLCAiaXMgcGF5bWVudCB0byBhcHAiCiAgICBzd2FwCiAgICBndHhucyBSZWNlaXZlcgogICAgZ2xvYmFsIEN1cnJlbnRBcHBsaWNhdGlvbkFkZHJlc3MKICAgID09CiAgICBhc3NlcnQgLy8gaXMgcGF5bWVudCB0byBhcHAKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEyMAogICAgLy8gYXNzZXJ0IGFub3RoZXJfaW50LmFzX3VpbnQ2NCgpID09IDIsICJpcyBjb3JyZWN0IGludCIKICAgIGJ0b2kKICAgIGludGNfMyAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGlzIGNvcnJlY3QgaW50CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLmNvbXBhcmVfYXNzZXRzW3JvdXRpbmddKCkgLT4gdm9pZDoKY29tcGFyZV9hc3NldHM6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxMjIKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTI0CiAgICAvLyBhc3NlcnQgYXNzZXRfYSA9PSBhc3NldF9iLCAiYXNzZXQgYSA9PSBiIgogICAgPT0KICAgIGFzc2VydCAvLyBhc3NldCBhID09IGIKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjEyMgogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdF9jYXNlcy5hYmlfcm91dGluZy5jb250cmFjdC5SZWZlcmVuY2UubWV0aG9kX3dpdGhfZGVmYXVsdF9hcmdzW3JvdXRpbmddKCkgLT4gdm9pZDoKbWV0aG9kX3dpdGhfZGVmYXVsdF9hcmdzOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTQyLTE1OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKAogICAgLy8gICAgIGRlZmF1bHRfYXJncz17CiAgICAvLyAgICAgICAgICJhc3NldF9mcm9tX3N0b3JhZ2UiOiAiYXNhIiwKICAgIC8vICAgICAgICAgImFzc2V0X2Zyb21fZnVuY3Rpb24iOiBnZXRfYXNzZXQsCiAgICAvLyAgICAgICAgICJhY2NvdW50X2Zyb21fc3RvcmFnZSI6ICJjcmVhdG9yIiwKICAgIC8vICAgICAgICAgImFjY291bnRfZnJvbV9mdW5jdGlvbiI6ICJnZXRfYWRkcmVzcyIsCiAgICAvLyAgICAgICAgICJhcHBsaWNhdGlvbl9mcm9tX3N0b3JhZ2UiOiAiYXBwIiwKICAgIC8vICAgICAgICAgImFwcGxpY2F0aW9uX2Zyb21fZnVuY3Rpb24iOiBnZXRfYXBwLAogICAgLy8gICAgICAgICAiYnl0ZXNfZnJvbV9zdG9yYWdlIjogInNvbWVfYnl0ZXMiLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fc3RvcmFnZSI6ICJhbl9pbnQiLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fZnVuY3Rpb24iOiAiZ2V0X2FfaW50IiwKICAgIC8vICAgICAgICAgImludF9mcm9tX2NvbnN0IjogYXJjNC5VSW50MzIoMTIzKSwKICAgIC8vICAgICAgICAgInN0cl9mcm9tX2NvbnN0IjogYXJjNC5TdHJpbmcoImFiYyIpLAogICAgLy8gICAgICAgICAiaW50X2Zyb21fbG9jYWwiOiAibG9jYWxfdWludCIsCiAgICAvLyAgICAgICAgICJieXRlc19mcm9tX2xvY2FsIjogImxvY2FsX2J5dGVzIiwKICAgIC8vICAgICB9CiAgICAvLyApCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA0CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5zdGF0aWNfYXJyYXk8YXJjNC51aW50OCwgMzI+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA1CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA2CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA3CiAgICBkdXAKICAgIGxlbgogICAgcHVzaGludCAzCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnN0YXRpY19hcnJheTxhcmM0LnVpbnQ4LCAzPgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgOAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgOQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTAKICAgIGR1cAogICAgbGVuCiAgICBwdXNoaW50IDQKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDMyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEzCiAgICBkdXAKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgZGlnIDEKICAgIGxlbgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBleHRyYWN0IDIgMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTc1CiAgICAvLyBhc3NlcnQgYXNzZXRfZnJvbV9zdG9yYWdlID09IEFzc2V0KDEyMyksICJ3cm9uZyBhc3NldCBmcm9tIHN0b3JhZ2UiCiAgICB1bmNvdmVyIDEyCiAgICBwdXNoaW50IDEyMwogICAgPT0KICAgIGFzc2VydCAvLyB3cm9uZyBhc3NldCBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE3NgogICAgLy8gYXNzZXJ0IGFzc2V0X2Zyb21fZnVuY3Rpb24gPT0gQXNzZXQoNDU2KSwgIndyb25nIGFzc2V0IGZyb20gZnVuY3Rpb24iCiAgICB1bmNvdmVyIDExCiAgICBwdXNoaW50IDQ1NgogICAgPT0KICAgIGFzc2VydCAvLyB3cm9uZyBhc3NldCBmcm9tIGZ1bmN0aW9uCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxNzcKICAgIC8vIGFzc2VydCBhY2NvdW50X2Zyb21fc3RvcmFnZSA9PSBvcC5HbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCAid3JvbmcgYWNjb3VudCBmcm9tIHN0b3JhZ2UiCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIHVuY292ZXIgMTEKICAgID09CiAgICBhc3NlcnQgLy8gd3JvbmcgYWNjb3VudCBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE3OAogICAgLy8gYXNzZXJ0IGFjY291bnRfZnJvbV9mdW5jdGlvbiA9PSBvcC5HbG9iYWwuemVyb19hZGRyZXNzLCAid3JvbmcgYWNjb3VudCBmcm9tIGZ1bmN0aW9uIgogICAgZ2xvYmFsIFplcm9BZGRyZXNzCiAgICB1bmNvdmVyIDEwCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGFjY291bnQgZnJvbSBmdW5jdGlvbgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTc5CiAgICAvLyBhc3NlcnQgYXBwbGljYXRpb25fZnJvbV9zdG9yYWdlID09IEFwcGxpY2F0aW9uKDEyMyksICJ3cm9uZyBhcHBsaWNhdGlvbiBmcm9tIHN0b3JhZ2UiCiAgICB1bmNvdmVyIDgKICAgIHB1c2hpbnQgMTIzCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGFwcGxpY2F0aW9uIGZyb20gc3RvcmFnZQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTgwCiAgICAvLyBhc3NlcnQgYXBwbGljYXRpb25fZnJvbV9mdW5jdGlvbiA9PSBBcHBsaWNhdGlvbig0NTYpLCAid3JvbmcgYXBwbGljYXRpb24gZnJvbSBmdW5jdGlvbiIKICAgIHVuY292ZXIgNwogICAgcHVzaGludCA0NTYKICAgID09CiAgICBhc3NlcnQgLy8gd3JvbmcgYXBwbGljYXRpb24gZnJvbSBmdW5jdGlvbgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTgxCiAgICAvLyBhc3NlcnQgYnl0ZXNfZnJvbV9zdG9yYWdlWzBdID09IGFyYzQuQnl0ZSg3KSwgIndyb25nIDB0aCBieXRlIGZyb20gc3RvcmFnZSIKICAgIGRpZyA2CiAgICBleHRyYWN0IDAgMSAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHB1c2hieXRlcyAweDA3CiAgICBiPT0KICAgIGFzc2VydCAvLyB3cm9uZyAwdGggYnl0ZSBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE4MgogICAgLy8gYXNzZXJ0IGJ5dGVzX2Zyb21fc3RvcmFnZVsxXSA9PSBhcmM0LkJ5dGUoOCksICJ3cm9uZyAxc3QgYnl0ZSBmcm9tIHN0b3JhZ2UiCiAgICBkaWcgNgogICAgZXh0cmFjdCAxIDEgLy8gb24gZXJyb3I6IGluZGV4IGFjY2VzcyBpcyBvdXQgb2YgYm91bmRzCiAgICBwdXNoYnl0ZXMgMHgwOAogICAgYj09CiAgICBhc3NlcnQgLy8gd3JvbmcgMXN0IGJ5dGUgZnJvbSBzdG9yYWdlCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODMKICAgIC8vIGFzc2VydCBieXRlc19mcm9tX3N0b3JhZ2VbMl0gPT0gYXJjNC5CeXRlKDkpLCAid3JvbmcgMm5kIGJ5dGUgZnJvbSBzdG9yYWdlIgogICAgdW5jb3ZlciA2CiAgICBleHRyYWN0IDIgMSAvLyBvbiBlcnJvcjogaW5kZXggYWNjZXNzIGlzIG91dCBvZiBib3VuZHMKICAgIHB1c2hieXRlcyAweDA5CiAgICBiPT0KICAgIGFzc2VydCAvLyB3cm9uZyAybmQgYnl0ZSBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE4NAogICAgLy8gYXNzZXJ0IGludF9mcm9tX3N0b3JhZ2UuYXNfdWludDY0KCkgPT0gMiwgIndyb25nIGludCBmcm9tIHN0b3JhZ2UiCiAgICB1bmNvdmVyIDUKICAgIGJ0b2kKICAgIGludGNfMyAvLyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGludCBmcm9tIHN0b3JhZ2UKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE4NQogICAgLy8gYXNzZXJ0IGludF9mcm9tX2Z1bmN0aW9uLmFzX3VpbnQ2NCgpID09IDMsICJ3cm9uZyBpbnQgZnJvbSBmdW5jdGlvbiIKICAgIHVuY292ZXIgNAogICAgYnRvaQogICAgcHVzaGludCAzCiAgICA9PQogICAgYXNzZXJ0IC8vIHdyb25nIGludCBmcm9tIGZ1bmN0aW9uCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODYKICAgIC8vIGFzc2VydCBpbnRfZnJvbV9jb25zdCA9PSAxMjMKICAgIHVuY292ZXIgMwogICAgcHVzaGJ5dGVzIDB4MDAwMDAwN2IKICAgIGI9PQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODcKICAgIC8vIGFzc2VydCBzdHJfZnJvbV9jb25zdCA9PSAiYWJjIgogICAgdW5jb3ZlciAyCiAgICBwdXNoYnl0ZXMgMHgwMDAzNjE2MjYzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxODgKICAgIC8vIGFzc2VydCBpbnRfZnJvbV9sb2NhbCA9PSBzZWxmLmxvY2FsX3VpbnRbVHhuLnNlbmRlcl0KICAgIHR4biBTZW5kZXIKICAgIGludGNfMSAvLyAwCiAgICBieXRlY18zIC8vICJsb2NhbF91aW50IgogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYubG9jYWxfdWludCBleGlzdHMgZm9yIGFjY291bnQKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTg5CiAgICAvLyBhc3NlcnQgYnl0ZXNfZnJvbV9sb2NhbCA9PSBzZWxmLmxvY2FsX2J5dGVzW1R4bi5zZW5kZXJdCiAgICB0eG4gU2VuZGVyCiAgICBpbnRjXzEgLy8gMAogICAgYnl0ZWMgNCAvLyAibG9jYWxfYnl0ZXMiCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5sb2NhbF9ieXRlcyBleGlzdHMgZm9yIGFjY291bnQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjE0Mi0xNTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgKICAgIC8vICAgICBkZWZhdWx0X2FyZ3M9ewogICAgLy8gICAgICAgICAiYXNzZXRfZnJvbV9zdG9yYWdlIjogImFzYSIsCiAgICAvLyAgICAgICAgICJhc3NldF9mcm9tX2Z1bmN0aW9uIjogZ2V0X2Fzc2V0LAogICAgLy8gICAgICAgICAiYWNjb3VudF9mcm9tX3N0b3JhZ2UiOiAiY3JlYXRvciIsCiAgICAvLyAgICAgICAgICJhY2NvdW50X2Zyb21fZnVuY3Rpb24iOiAiZ2V0X2FkZHJlc3MiLAogICAgLy8gICAgICAgICAiYXBwbGljYXRpb25fZnJvbV9zdG9yYWdlIjogImFwcCIsCiAgICAvLyAgICAgICAgICJhcHBsaWNhdGlvbl9mcm9tX2Z1bmN0aW9uIjogZ2V0X2FwcCwKICAgIC8vICAgICAgICAgImJ5dGVzX2Zyb21fc3RvcmFnZSI6ICJzb21lX2J5dGVzIiwKICAgIC8vICAgICAgICAgImludF9mcm9tX3N0b3JhZ2UiOiAiYW5faW50IiwKICAgIC8vICAgICAgICAgImludF9mcm9tX2Z1bmN0aW9uIjogImdldF9hX2ludCIsCiAgICAvLyAgICAgICAgICJpbnRfZnJvbV9jb25zdCI6IGFyYzQuVUludDMyKDEyMyksCiAgICAvLyAgICAgICAgICJzdHJfZnJvbV9jb25zdCI6IGFyYzQuU3RyaW5nKCJhYmMiKSwKICAgIC8vICAgICAgICAgImludF9mcm9tX2xvY2FsIjogImxvY2FsX3VpbnQiLAogICAgLy8gICAgICAgICAiYnl0ZXNfZnJvbV9sb2NhbCI6ICJsb2NhbF9ieXRlcyIsCiAgICAvLyAgICAgfQogICAgLy8gKQogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm1ldGhvZF93aXRoXzE1X2FyZ3Nbcm91dGluZ10oKSAtPiB2b2lkOgptZXRob2Rfd2l0aF8xNV9hcmdzOgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MTkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDUKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDYKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDcKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDgKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDkKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEwCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEzCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4KICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTMKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIHVuY292ZXIgMTQKICAgIHVuY292ZXIgMTQKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTQKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIHVuY292ZXIgMTMKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTUKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIC8vICsgZm91cgogICAgdW5jb3ZlciAxMgogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjEyLTIxNgogICAgLy8gb25lCiAgICAvLyArIHR3bwogICAgLy8gKyB0aHJlZQogICAgLy8gKyBmb3VyCiAgICAvLyArIGZpdmUKICAgIHVuY292ZXIgMTEKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTcKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIC8vICsgZm91cgogICAgLy8gKyBmaXZlCiAgICAvLyArIHNpeAogICAgdW5jb3ZlciAxMAogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjEyLTIxOAogICAgLy8gb25lCiAgICAvLyArIHR3bwogICAgLy8gKyB0aHJlZQogICAgLy8gKyBmb3VyCiAgICAvLyArIGZpdmUKICAgIC8vICsgc2l4CiAgICAvLyArIHNldmVuCiAgICB1bmNvdmVyIDkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIxMi0yMTkKICAgIC8vIG9uZQogICAgLy8gKyB0d28KICAgIC8vICsgdGhyZWUKICAgIC8vICsgZm91cgogICAgLy8gKyBmaXZlCiAgICAvLyArIHNpeAogICAgLy8gKyBzZXZlbgogICAgLy8gKyBlaWdodAogICAgdW5jb3ZlciA4CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjIwCiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgdW5jb3ZlciA3CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjIxCiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIHVuY292ZXIgNgogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjEyLTIyMgogICAgLy8gb25lCiAgICAvLyArIHR3bwogICAgLy8gKyB0aHJlZQogICAgLy8gKyBmb3VyCiAgICAvLyArIGZpdmUKICAgIC8vICsgc2l4CiAgICAvLyArIHNldmVuCiAgICAvLyArIGVpZ2h0CiAgICAvLyArIG5pbmUKICAgIC8vICsgdGVuCiAgICAvLyArIGVsZXZlbgogICAgdW5jb3ZlciA1CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjIzCiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIC8vICsgZWxldmVuCiAgICAvLyArIHR3ZWx2ZQogICAgdW5jb3ZlciA0CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjI0CiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIC8vICsgZWxldmVuCiAgICAvLyArIHR3ZWx2ZQogICAgLy8gKyB0aGlydGVlbgogICAgdW5jb3ZlciAzCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTItMjI1CiAgICAvLyBvbmUKICAgIC8vICsgdHdvCiAgICAvLyArIHRocmVlCiAgICAvLyArIGZvdXIKICAgIC8vICsgZml2ZQogICAgLy8gKyBzaXgKICAgIC8vICsgc2V2ZW4KICAgIC8vICsgZWlnaHQKICAgIC8vICsgbmluZQogICAgLy8gKyB0ZW4KICAgIC8vICsgZWxldmVuCiAgICAvLyArIHR3ZWx2ZQogICAgLy8gKyB0aGlydGVlbgogICAgLy8gKyBmb3VydGVlbgogICAgdW5jb3ZlciAyCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMTEtMjI2CiAgICAvLyBhc3NlcnQgKAogICAgLy8gICAgIG9uZQogICAgLy8gICAgICsgdHdvCiAgICAvLyAgICAgKyB0aHJlZQogICAgLy8gICAgICsgZm91cgogICAgLy8gICAgICsgZml2ZQogICAgLy8gICAgICsgc2l4CiAgICAvLyAgICAgKyBzZXZlbgogICAgLy8gICAgICsgZWlnaHQKICAgIC8vICAgICArIG5pbmUKICAgIC8vICAgICArIHRlbgogICAgLy8gICAgICsgZWxldmVuCiAgICAvLyAgICAgKyB0d2VsdmUKICAgIC8vICAgICArIHRoaXJ0ZWVuCiAgICAvLyAgICAgKyBmb3VydGVlbgogICAgLy8gKQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToxOTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18yIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RfY2FzZXMuYWJpX3JvdXRpbmcuY29udHJhY3QuUmVmZXJlbmNlLm1ldGhvZF93aXRoX21vcmVfdGhhbl8xNV9hcmdzW3JvdXRpbmddKCkgLT4gdm9pZDoKbWV0aG9kX3dpdGhfbW9yZV90aGFuXzE1X2FyZ3M6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNQogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNgogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgNwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuIEdyb3VwSW5kZXgKICAgIGludGNfMyAvLyAyCiAgICAtCiAgICBkdXAKICAgIGd0eG5zIFR5cGVFbnVtCiAgICBpbnRjXzIgLy8gcGF5CiAgICA9PQogICAgYXNzZXJ0IC8vIHRyYW5zYWN0aW9uIHR5cGUgaXMgcGF5CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA4CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyA5CiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMAogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEyCiAgICBkdXAKICAgIGxlbgogICAgaW50Y18wIC8vIDgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxMwogICAgZHVwCiAgICBsZW4KICAgIGludGNfMCAvLyA4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnVpbnQ2NAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTQKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgZGlnIDEKICAgIHB1c2hpbnQgNDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgNjgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNSBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgMgogICAgc3dhcAogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDcwCiAgICArCiAgICBkaWcgMgogICAgcHVzaGludCA0MgogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNiBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgMwogICAgc3dhcAogICAgZGlnIDMKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgKwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgcHVzaGludCA0MAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCA2OAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA1IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIGRpZyAyCiAgICBzd2FwCiAgICBkaWcgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgNzAKICAgICsKICAgIGRpZyAyCiAgICBwdXNoaW50IDQyCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBkaWcgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA2IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIGRpZyAzCiAgICBzd2FwCiAgICBkaWcgMwogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICArCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PixhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQ+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBwdXNoaW50IDQwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDY4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDUgb2YgKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsKGxlbit1aW50OFtdKSwobGVuK3VpbnQ4W10pLHVpbnQ2NCx1aW50NjQsdWludDY0KQogICAgZGlnIDIKICAgIHN3YXAKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCA3MAogICAgKwogICAgZGlnIDIKICAgIHB1c2hpbnQgNDIKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIGRpZyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDYgb2YgKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsKGxlbit1aW50OFtdKSwobGVuK3VpbnQ4W10pLHVpbnQ2NCx1aW50NjQsdWludDY0KQogICAgZGlnIDMKICAgIHN3YXAKICAgIGRpZyAzCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudHVwbGU8YXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PixhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHB1c2hpbnQgMTYKICAgIGV4dHJhY3RfdWludDY0CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBwdXNoaW50IDQwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDY4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDUgb2YgKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsKGxlbit1aW50OFtdKSwobGVuK3VpbnQ4W10pLHVpbnQ2NCx1aW50NjQsdWludDY0KQogICAgZGlnIDIKICAgIHN3YXAKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCA3MAogICAgKwogICAgZGlnIDIKICAgIHB1c2hpbnQgNDIKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIGRpZyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDYgb2YgKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsKGxlbit1aW50OFtdKSwobGVuK3VpbnQ4W10pLHVpbnQ2NCx1aW50NjQsdWludDY0KQogICAgZGlnIDMKICAgIHN3YXAKICAgIGRpZyAzCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudHVwbGU8YXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PixhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgZGlnIDEKICAgIHB1c2hpbnQgNDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgNjgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNSBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgMgogICAgc3dhcAogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDcwCiAgICArCiAgICBkaWcgMgogICAgcHVzaGludCA0MgogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNiBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgMwogICAgc3dhcAogICAgZGlnIDMKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgKwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0PgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgcHVzaGludCA0MAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCA2OAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA1IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIGRpZyAyCiAgICBkaWcgMQogICAgZGlnIDMKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDcwCiAgICArCiAgICBkaWcgMwogICAgcHVzaGludCA0MgogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNiBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgNAogICAgZGlnIDEKICAgIGRpZyA1CiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgKwogICAgdW5jb3ZlciAzCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PixhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQ+CiAgICBzdWJzdHJpbmczCiAgICBleHRyYWN0IDIgMAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgcHVzaGludCA0MAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCA2OAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA1IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIGRpZyAyCiAgICBzd2FwCiAgICBkaWcgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgNzAKICAgICsKICAgIGRpZyAyCiAgICBwdXNoaW50IDQyCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBkaWcgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA2IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIHVuY292ZXIgMwogICAgc3dhcAogICAgZGlnIDMKICAgIHN1YnN0cmluZzMKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICB1bmNvdmVyIDIKICAgICsKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0PgogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDE1CiAgICBkdXAKICAgIGxlbgogICAgZGlnIDEKICAgIHB1c2hpbnQgNDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIHB1c2hpbnQgNjgKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNSBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgMgogICAgc3dhcAogICAgZGlnIDIKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBwdXNoaW50IDcwCiAgICArCiAgICBkaWcgMgogICAgcHVzaGludCA0MgogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgZGlnIDIKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCB0YWlsIHBvaW50ZXIgYXQgaW5kZXggNiBvZiAodWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCwobGVuK3VpbnQ4W10pLChsZW4rdWludDhbXSksdWludDY0LHVpbnQ2NCx1aW50NjQpCiAgICBkaWcgMwogICAgc3dhcAogICAgZGlnIDMKICAgIHN1YnN0cmluZzMKICAgIGludGNfMSAvLyAwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCBhcnJheSBsZW5ndGggaGVhZGVyCiAgICBpbnRjXzMgLy8gMgogICAgKwogICAgKwogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC50dXBsZTxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0PgogICAgcHVzaGludCA0NAogICAgZXh0cmFjdF91aW50NjQKICAgIHR4biBHcm91cEluZGV4CiAgICBpbnRjXzIgLy8gMQogICAgLQogICAgZHVwCiAgICBndHhucyBUeXBlRW51bQogICAgaW50Y18yIC8vIHBheQogICAgPT0KICAgIGFzc2VydCAvLyB0cmFuc2FjdGlvbiB0eXBlIGlzIHBheQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMTUKICAgIGR1cAogICAgbGVuCiAgICBkaWcgMQogICAgcHVzaGludCA0MAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgdHVwbGUgZW5jb2RpbmcKICAgIGR1cAogICAgcHVzaGludCA2OAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA1IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIGRpZyAyCiAgICBzd2FwCiAgICBkaWcgMgogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIHB1c2hpbnQgNzAKICAgICsKICAgIGRpZyAyCiAgICBwdXNoaW50IDQyCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBkaWcgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIHRhaWwgcG9pbnRlciBhdCBpbmRleCA2IG9mICh1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsdWludDY0LChsZW4rdWludDhbXSksKGxlbit1aW50OFtdKSx1aW50NjQsdWludDY0LHVpbnQ2NCkKICAgIGRpZyAzCiAgICBzd2FwCiAgICBkaWcgMwogICAgc3Vic3RyaW5nMwogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICArCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgbnVtYmVyIG9mIGJ5dGVzIGZvciBhcmM0LnR1cGxlPGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQudWludDY0LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PixhcmM0LmR5bmFtaWNfYXJyYXk8YXJjNC51aW50OD4sYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQ+CiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxNQogICAgZHVwCiAgICBsZW4KICAgIGRpZyAxCiAgICBwdXNoaW50IDQwCiAgICBleHRyYWN0X3VpbnQxNiAvLyBvbiBlcnJvcjogaW52YWxpZCB0dXBsZSBlbmNvZGluZwogICAgZHVwCiAgICBwdXNoaW50IDY4CiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDUgb2YgKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsKGxlbit1aW50OFtdKSwobGVuK3VpbnQ4W10pLHVpbnQ2NCx1aW50NjQsdWludDY0KQogICAgZGlnIDIKICAgIHN3YXAKICAgIGRpZyAyCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgcHVzaGludCA3MAogICAgKwogICAgZGlnIDIKICAgIHB1c2hpbnQgNDIKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIHR1cGxlIGVuY29kaW5nCiAgICBkdXAKICAgIGRpZyAyCiAgICA9PQogICAgYXNzZXJ0IC8vIGludmFsaWQgdGFpbCBwb2ludGVyIGF0IGluZGV4IDYgb2YgKHVpbnQ2NCx1aW50NjQsdWludDY0LHVpbnQ2NCx1aW50NjQsKGxlbit1aW50OFtdKSwobGVuK3VpbnQ4W10pLHVpbnQ2NCx1aW50NjQsdWludDY0KQogICAgZGlnIDMKICAgIHN3YXAKICAgIGRpZyAzCiAgICBzdWJzdHJpbmczCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgICsKICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQudHVwbGU8YXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC51aW50NjQsYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+LGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PixhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2NCxhcmM0LnVpbnQ2ND4KICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI2NAogICAgLy8gYXNzZXJ0IG9wLlR4bi5udW1fYXBwX2FyZ3MgPT0gMTYKICAgIHR4biBOdW1BcHBBcmdzCiAgICBwdXNoaW50IDE2CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNjUKICAgIC8vIGFzc2VydCBwYXkuYW1vdW50ID09IDEwMDAwMAogICAgdW5jb3ZlciAxOAogICAgZ3R4bnMgQW1vdW50CiAgICBwdXNoaW50IDEwMDAwMAogICAgPT0KICAgIGFzc2VydAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjY2CiAgICAvLyBhc3NlcnQgcGF5Mi5hbW91bnQgPT0gMjAwMDAwCiAgICB1bmNvdmVyIDIKICAgIGd0eG5zIEFtb3VudAogICAgcHVzaGludCAyMDAwMDAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI2NwogICAgLy8gYXNzZXJ0IGFzc2V0LmlkCiAgICB1bmNvdmVyIDE5CiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI2OAogICAgLy8gYXNzZXJ0IGFzc2V0Mi5pZAogICAgdW5jb3ZlciAyCiAgICBhc3NlcnQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3MAogICAgLy8gbG9nKHMgKyB0KQogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDMKICAgIGNvbmNhdAogICAgbG9nCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIHVuY292ZXIgMTkKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3NAogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICB1bmNvdmVyIDE5CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjc0CiAgICAvLyBhLmFzX3VpbnQ2NCgpCiAgICAvLyArIGIuYXNfdWludDY0KCkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3NQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICB1bmNvdmVyIDE4CiAgICBidG9pCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjc1CiAgICAvLyBhLmFzX3VpbnQ2NCgpCiAgICAvLyArIGIuYXNfdWludDY0KCkKICAgIC8vICsgYy5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI3NgogICAgLy8gYS5hc191aW50NjQoKQogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICAvLyArIGMuYXNfdWludDY0KCkKICAgIC8vICsgZAogICAgdW5jb3ZlciAxNwogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjc3CiAgICAvLyArIGUuYXNfdWludDY0KCkKICAgIHVuY292ZXIgMTYKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yNzcKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjc4CiAgICAvLyArIGYuYXNfdWludDY0KCkKICAgIHVuY292ZXIgMTUKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yNzgKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgLy8gKyBmLmFzX3VpbnQ2NCgpCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzkKICAgIC8vICsgZy5hc191aW50NjQoKQogICAgdW5jb3ZlciAxNAogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI3OQogICAgLy8gYS5hc191aW50NjQoKQogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICAvLyArIGMuYXNfdWludDY0KCkKICAgIC8vICsgZAogICAgLy8gKyBlLmFzX3VpbnQ2NCgpCiAgICAvLyArIGYuYXNfdWludDY0KCkKICAgIC8vICsgZy5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjgwCiAgICAvLyArIGguYXNfdWludDY0KCkKICAgIHVuY292ZXIgMTMKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODAKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgLy8gKyBmLmFzX3VpbnQ2NCgpCiAgICAvLyArIGcuYXNfdWludDY0KCkKICAgIC8vICsgaC5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjgxCiAgICAvLyArIGkuYXNfdWludDY0KCkKICAgIHVuY292ZXIgMTIKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODEKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgLy8gKyBmLmFzX3VpbnQ2NCgpCiAgICAvLyArIGcuYXNfdWludDY0KCkKICAgIC8vICsgaC5hc191aW50NjQoKQogICAgLy8gKyBpLmFzX3VpbnQ2NCgpCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyODIKICAgIC8vICsgai5hc191aW50NjQoKQogICAgdW5jb3ZlciAxMQogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4MgogICAgLy8gYS5hc191aW50NjQoKQogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICAvLyArIGMuYXNfdWludDY0KCkKICAgIC8vICsgZAogICAgLy8gKyBlLmFzX3VpbnQ2NCgpCiAgICAvLyArIGYuYXNfdWludDY0KCkKICAgIC8vICsgZy5hc191aW50NjQoKQogICAgLy8gKyBoLmFzX3VpbnQ2NCgpCiAgICAvLyArIGkuYXNfdWludDY0KCkKICAgIC8vICsgai5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjgzCiAgICAvLyArIGsuYXNfdWludDY0KCkKICAgIHVuY292ZXIgMTAKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODMKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgLy8gKyBmLmFzX3VpbnQ2NCgpCiAgICAvLyArIGcuYXNfdWludDY0KCkKICAgIC8vICsgaC5hc191aW50NjQoKQogICAgLy8gKyBpLmFzX3VpbnQ2NCgpCiAgICAvLyArIGouYXNfdWludDY0KCkKICAgIC8vICsgay5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjg0CiAgICAvLyArIGwuYXNfdWludDY0KCkKICAgIHVuY292ZXIgOQogICAgYnRvaQogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4NAogICAgLy8gYS5hc191aW50NjQoKQogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICAvLyArIGMuYXNfdWludDY0KCkKICAgIC8vICsgZAogICAgLy8gKyBlLmFzX3VpbnQ2NCgpCiAgICAvLyArIGYuYXNfdWludDY0KCkKICAgIC8vICsgZy5hc191aW50NjQoKQogICAgLy8gKyBoLmFzX3VpbnQ2NCgpCiAgICAvLyArIGkuYXNfdWludDY0KCkKICAgIC8vICsgai5hc191aW50NjQoKQogICAgLy8gKyBrLmFzX3VpbnQ2NCgpCiAgICAvLyArIGwuYXNfdWludDY0KCkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4NQogICAgLy8gKyBtLmFzX3VpbnQ2NCgpCiAgICB1bmNvdmVyIDgKICAgIGJ0b2kKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yODUKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgLy8gKyBmLmFzX3VpbnQ2NCgpCiAgICAvLyArIGcuYXNfdWludDY0KCkKICAgIC8vICsgaC5hc191aW50NjQoKQogICAgLy8gKyBpLmFzX3VpbnQ2NCgpCiAgICAvLyArIGouYXNfdWludDY0KCkKICAgIC8vICsgay5hc191aW50NjQoKQogICAgLy8gKyBsLmFzX3VpbnQ2NCgpCiAgICAvLyArIG0uYXNfdWludDY0KCkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4NgogICAgLy8gKyBuLmFzX3VpbnQ2NCgpCiAgICB1bmNvdmVyIDcKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIyOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzEgLy8gMAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjg2CiAgICAvLyArIG4uYXNfdWludDY0KCkKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjg2CiAgICAvLyBhLmFzX3VpbnQ2NCgpCiAgICAvLyArIGIuYXNfdWludDY0KCkKICAgIC8vICsgYy5hc191aW50NjQoKQogICAgLy8gKyBkCiAgICAvLyArIGUuYXNfdWludDY0KCkKICAgIC8vICsgZi5hc191aW50NjQoKQogICAgLy8gKyBnLmFzX3VpbnQ2NCgpCiAgICAvLyArIGguYXNfdWludDY0KCkKICAgIC8vICsgaS5hc191aW50NjQoKQogICAgLy8gKyBqLmFzX3VpbnQ2NCgpCiAgICAvLyArIGsuYXNfdWludDY0KCkKICAgIC8vICsgbC5hc191aW50NjQoKQogICAgLy8gKyBtLmFzX3VpbnQ2NCgpCiAgICAvLyArIG4uYXNfdWludDY0KCkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI4NwogICAgLy8gKyBvLmFzX3VpbnQ2NCgpCiAgICB1bmNvdmVyIDYKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIyOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBpbnRjXzAgLy8gOAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjg3CiAgICAvLyArIG8uYXNfdWludDY0KCkKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjg3CiAgICAvLyBhLmFzX3VpbnQ2NCgpCiAgICAvLyArIGIuYXNfdWludDY0KCkKICAgIC8vICsgYy5hc191aW50NjQoKQogICAgLy8gKyBkCiAgICAvLyArIGUuYXNfdWludDY0KCkKICAgIC8vICsgZi5hc191aW50NjQoKQogICAgLy8gKyBnLmFzX3VpbnQ2NCgpCiAgICAvLyArIGguYXNfdWludDY0KCkKICAgIC8vICsgaS5hc191aW50NjQoKQogICAgLy8gKyBqLmFzX3VpbnQ2NCgpCiAgICAvLyArIGsuYXNfdWludDY0KCkKICAgIC8vICsgbC5hc191aW50NjQoKQogICAgLy8gKyBtLmFzX3VpbnQ2NCgpCiAgICAvLyArIG4uYXNfdWludDY0KCkKICAgIC8vICsgby5hc191aW50NjQoKQogICAgKwogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI4OAogICAgLy8gYS5hc191aW50NjQoKQogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICAvLyArIGMuYXNfdWludDY0KCkKICAgIC8vICsgZAogICAgLy8gKyBlLmFzX3VpbnQ2NCgpCiAgICAvLyArIGYuYXNfdWludDY0KCkKICAgIC8vICsgZy5hc191aW50NjQoKQogICAgLy8gKyBoLmFzX3VpbnQ2NCgpCiAgICAvLyArIGkuYXNfdWludDY0KCkKICAgIC8vICsgai5hc191aW50NjQoKQogICAgLy8gKyBrLmFzX3VpbnQ2NCgpCiAgICAvLyArIGwuYXNfdWludDY0KCkKICAgIC8vICsgbS5hc191aW50NjQoKQogICAgLy8gKyBuLmFzX3VpbnQ2NCgpCiAgICAvLyArIG8uYXNfdWludDY0KCkKICAgIC8vICsgcAogICAgdW5jb3ZlciA1CiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyODkKICAgIC8vICsgcS5hc191aW50NjQoKQogICAgdW5jb3ZlciA0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgcHVzaGludCAyNAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjg5CiAgICAvLyArIHEuYXNfdWludDY0KCkKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjg5CiAgICAvLyBhLmFzX3VpbnQ2NCgpCiAgICAvLyArIGIuYXNfdWludDY0KCkKICAgIC8vICsgYy5hc191aW50NjQoKQogICAgLy8gKyBkCiAgICAvLyArIGUuYXNfdWludDY0KCkKICAgIC8vICsgZi5hc191aW50NjQoKQogICAgLy8gKyBnLmFzX3VpbnQ2NCgpCiAgICAvLyArIGguYXNfdWludDY0KCkKICAgIC8vICsgaS5hc191aW50NjQoKQogICAgLy8gKyBqLmFzX3VpbnQ2NCgpCiAgICAvLyArIGsuYXNfdWludDY0KCkKICAgIC8vICsgbC5hc191aW50NjQoKQogICAgLy8gKyBtLmFzX3VpbnQ2NCgpCiAgICAvLyArIG4uYXNfdWludDY0KCkKICAgIC8vICsgby5hc191aW50NjQoKQogICAgLy8gKyBwCiAgICAvLyArIHEuYXNfdWludDY0KCkKICAgICsKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5MAogICAgLy8gKyByLmFzX3VpbnQ2NCgpCiAgICB1bmNvdmVyIDMKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjIyOQogICAgLy8gQGFyYzQuYWJpbWV0aG9kCiAgICBwdXNoaW50IDMyCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOTAKICAgIC8vICsgci5hc191aW50NjQoKQogICAgZXh0cmFjdF91aW50NjQKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI3My0yOTAKICAgIC8vIGEuYXNfdWludDY0KCkKICAgIC8vICsgYi5hc191aW50NjQoKQogICAgLy8gKyBjLmFzX3VpbnQ2NCgpCiAgICAvLyArIGQKICAgIC8vICsgZS5hc191aW50NjQoKQogICAgLy8gKyBmLmFzX3VpbnQ2NCgpCiAgICAvLyArIGcuYXNfdWludDY0KCkKICAgIC8vICsgaC5hc191aW50NjQoKQogICAgLy8gKyBpLmFzX3VpbnQ2NCgpCiAgICAvLyArIGouYXNfdWludDY0KCkKICAgIC8vICsgay5hc191aW50NjQoKQogICAgLy8gKyBsLmFzX3VpbnQ2NCgpCiAgICAvLyArIG0uYXNfdWludDY0KCkKICAgIC8vICsgbi5hc191aW50NjQoKQogICAgLy8gKyBvLmFzX3VpbnQ2NCgpCiAgICAvLyArIHAKICAgIC8vICsgcS5hc191aW50NjQoKQogICAgLy8gKyByLmFzX3VpbnQ2NCgpCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOTEKICAgIC8vICsgdS5hc191aW50NjQoKQogICAgdW5jb3ZlciAyCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyMjkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgcHVzaGludCA1MgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjkxCiAgICAvLyArIHUuYXNfdWludDY0KCkKICAgIGV4dHJhY3RfdWludDY0CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzMtMjkxCiAgICAvLyBhLmFzX3VpbnQ2NCgpCiAgICAvLyArIGIuYXNfdWludDY0KCkKICAgIC8vICsgYy5hc191aW50NjQoKQogICAgLy8gKyBkCiAgICAvLyArIGUuYXNfdWludDY0KCkKICAgIC8vICsgZi5hc191aW50NjQoKQogICAgLy8gKyBnLmFzX3VpbnQ2NCgpCiAgICAvLyArIGguYXNfdWludDY0KCkKICAgIC8vICsgaS5hc191aW50NjQoKQogICAgLy8gKyBqLmFzX3VpbnQ2NCgpCiAgICAvLyArIGsuYXNfdWludDY0KCkKICAgIC8vICsgbC5hc191aW50NjQoKQogICAgLy8gKyBtLmFzX3VpbnQ2NCgpCiAgICAvLyArIG4uYXNfdWludDY0KCkKICAgIC8vICsgby5hc191aW50NjQoKQogICAgLy8gKyBwCiAgICAvLyArIHEuYXNfdWludDY0KCkKICAgIC8vICsgci5hc191aW50NjQoKQogICAgLy8gKyB1LmFzX3VpbnQ2NCgpCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOTIKICAgIC8vICsgdi5hc191aW50NjQoKQogICAgc3dhcAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIHB1c2hpbnQgNjAKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5MgogICAgLy8gKyB2LmFzX3VpbnQ2NCgpCiAgICBleHRyYWN0X3VpbnQ2NAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjczLTI5MgogICAgLy8gYS5hc191aW50NjQoKQogICAgLy8gKyBiLmFzX3VpbnQ2NCgpCiAgICAvLyArIGMuYXNfdWludDY0KCkKICAgIC8vICsgZAogICAgLy8gKyBlLmFzX3VpbnQ2NCgpCiAgICAvLyArIGYuYXNfdWludDY0KCkKICAgIC8vICsgZy5hc191aW50NjQoKQogICAgLy8gKyBoLmFzX3VpbnQ2NCgpCiAgICAvLyArIGkuYXNfdWludDY0KCkKICAgIC8vICsgai5hc191aW50NjQoKQogICAgLy8gKyBrLmFzX3VpbnQ2NCgpCiAgICAvLyArIGwuYXNfdWludDY0KCkKICAgIC8vICsgbS5hc191aW50NjQoKQogICAgLy8gKyBuLmFzX3VpbnQ2NCgpCiAgICAvLyArIG8uYXNfdWludDY0KCkKICAgIC8vICsgcAogICAgLy8gKyBxLmFzX3VpbnQ2NCgpCiAgICAvLyArIHIuYXNfdWludDY0KCkKICAgIC8vICsgdS5hc191aW50NjQoKQogICAgLy8gKyB2LmFzX3VpbnQ2NCgpCiAgICArCiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyNzItMjkzCiAgICAvLyByZXR1cm4gYXJjNC5VSW50NjQoCiAgICAvLyAgICAgYS5hc191aW50NjQoKQogICAgLy8gICAgICsgYi5hc191aW50NjQoKQogICAgLy8gICAgICsgYy5hc191aW50NjQoKQogICAgLy8gICAgICsgZAogICAgLy8gICAgICsgZS5hc191aW50NjQoKQogICAgLy8gICAgICsgZi5hc191aW50NjQoKQogICAgLy8gICAgICsgZy5hc191aW50NjQoKQogICAgLy8gICAgICsgaC5hc191aW50NjQoKQogICAgLy8gICAgICsgaS5hc191aW50NjQoKQogICAgLy8gICAgICsgai5hc191aW50NjQoKQogICAgLy8gICAgICsgay5hc191aW50NjQoKQogICAgLy8gICAgICsgbC5hc191aW50NjQoKQogICAgLy8gICAgICsgbS5hc191aW50NjQoKQogICAgLy8gICAgICsgbi5hc191aW50NjQoKQogICAgLy8gICAgICsgby5hc191aW50NjQoKQogICAgLy8gICAgICsgcAogICAgLy8gICAgICsgcS5hc191aW50NjQoKQogICAgLy8gICAgICsgci5hc191aW50NjQoKQogICAgLy8gICAgICsgdS5hc191aW50NjQoKQogICAgLy8gICAgICsgdi5hc191aW50NjQoKQogICAgLy8gKQogICAgaXRvYgogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6MjI5CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMiAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0X2Nhc2VzLmFiaV9yb3V0aW5nLmNvbnRyYWN0LlJlZmVyZW5jZS5oZWxsb193aXRoX2FsZ29weV9zdHJpbmdbcm91dGluZ10oKSAtPiB2b2lkOgpoZWxsb193aXRoX2FsZ29weV9zdHJpbmc6CiAgICAvLyBhYmlfcm91dGluZy9jb250cmFjdC5weToyOTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZAogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgZHVwCiAgICBpbnRjXzEgLy8gMAogICAgZXh0cmFjdF91aW50MTYgLy8gb24gZXJyb3I6IGludmFsaWQgYXJyYXkgbGVuZ3RoIGhlYWRlcgogICAgaW50Y18zIC8vIDIKICAgICsKICAgIGRpZyAxCiAgICBsZW4KICAgID09CiAgICBhc3NlcnQgLy8gaW52YWxpZCBudW1iZXIgb2YgYnl0ZXMgZm9yIGFyYzQuZHluYW1pY19hcnJheTxhcmM0LnVpbnQ4PgogICAgZXh0cmFjdCAyIDAKICAgIC8vIGFiaV9yb3V0aW5nL2NvbnRyYWN0LnB5OjI5NwogICAgLy8gcmV0dXJuICJIZWxsbyAiICsgbmFtZSArICIhIgogICAgcHVzaGJ5dGVzICJIZWxsbyAiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHB1c2hieXRlcyAiISIKICAgIGNvbmNhdAogICAgLy8gYWJpX3JvdXRpbmcvY29udHJhY3QucHk6Mjk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QKICAgIGR1cAogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzIgLy8gMQogICAgcmV0dXJuCg==", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyAECAABAiYFBBUffHUDYXNhDBUffHUAAAAAAAAByApsb2NhbF91aW50C2xvY2FsX2J5dGVzMRhAADQpgXtngAZhbl9pbnQlZ4ICCnNvbWVfYnl0ZXMDBwgJZ4AHY3JlYXRvcjEAZ4ADYXBwgXtnMRtBANqCAwQBBAAjBDpTU/wE0vL1PDYaAI4DALMBFAClMRkURDEYRIIMBNeNs1sE2PYtmgS4QxEZBMQWNy0Ef62XgAQv35WkBBOZgmwEoTAIIQRhN9w3BFcyGVoE9glsggSQI7sZNhoAjgwAcADmARABTgAaABYAEgABAWQCXQMYBiMAgAwVH3x1AAAAAAAAAAOwJEMqsCRDKrAkQ4AkFR98dQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsCRDJDEZkIElGjEYEERCAHsxGSQSMRgQREIALjEYFESAC0hlbGxvIFdvcmxksCRDNhoBSRUiEkQXJAgWSZMiDkRXBwEoTFCwJEM2GgFJFSISRBc2GgJJI1klCEsBFRJEVwIAMQArTwNmMQAnBE8CZiRDNhoBSRUiEkQXJAgWSZMiDkRXBwEoTFCwJEM2GgFJFSISRBckCBZJkyIORFcHAShMULAkQzYaAUkVIhJEFzEAMgkSRCMpZUQURClLAWexgQSyECOyATIKshSyEbMkQzYaAUkVIhJEFzYaAkkVIhJEMRYkCUk4ECQSRDYaA0kVIhJEIyllRE8EEkRPAhckEkRMOAcyChJEFyUSRCRDNhoBSRUiEkQXNhoCSRUiEkQXEkQkQzYaAUkVIhJEFzYaAkkVIhJEFzYaA0kVgSASRDYaBEkVgSASRDYaBUkVIhJEFzYaBkkVIhJEFzYaB0kVgQMSRDYaCEkVIhJENhoJSRUiEkQ2GgpJFYEEEkQ2GgtJI1klCEsBFRJENhoMSRUiEkQXNhoNSSNZJQhLARUSRFcCAE8MgXsSRE8LgcgDEkQyCU8LEkQyA08KEkRPCIF7EkRPB4HIAxJESwZXAAGAAQeoREsGVwEBgAEIqERPBlcCAYABCahETwUXJRJETwQXgQMSRE8DgAQAAAB7qERPAoAFAANhYmMSRDEAIytjRE8CEkQxACMnBGNEEkQkQzYaAUkVIhJEFzYaAkkVIhJEFzYaA0kVIhJEFzYaBEkVIhJEFzYaBUkVIhJEFzYaBkkVIhJEFzYaB0kVIhJEFzYaCEkVIhJEFzYaCUkVIhJEFzYaCkkVIhJEFzYaC0kVIhJEFzYaDEkVIhJEFzYaDUkVIhJEFzYaDkkVIhJEFzYaD0kjWSUISwEVEkRPDk8OCE8NCE8MCE8LCE8KCE8JCE8ICE8HCE8GCE8FCE8ECE8DCE8CCEQoTFCwJEM2GgFJFSISRDYaAkkVIhJENhoDSRUiEkQ2GgRJFSISRBc2GgVJFSISRBc2GgZJFSISRDYaB0kVIhJEMRYlCUk4ECQSRDYaCEkVIhJENhoJSRUiEkQ2GgpJFSISRDYaC0kVIhJENhoMSRUiEkQ2Gg1JFSISRDYaDkkVIhJENhoPSRVLAYEoWUmBRBJESwJMSwJSI1mBRghLAoEqWUlLAhJESwNMSwNSI1klCAgSRDYaD0kVSwGBKFlJgUQSREsCTEsCUiNZgUYISwKBKllJSwISREsDTEsDUiNZJQgIEkQ2Gg9JFUsBgShZSYFEEkRLAkxLAlIjWYFGCEsCgSpZSUsCEkRLA0xLA1IjWSUICBJEgRBbNhoPSRVLAYEoWUmBRBJESwJMSwJSI1mBRghLAoEqWUlLAhJESwNMSwNSI1klCAgSRDYaD0kVSwGBKFlJgUQSREsCTEsCUiNZgUYISwKBKllJSwISREsDTEsDUiNZJQgIEkQ2Gg9JFUsBgShZSYFEEkRLAksBSwNSI1mBRghLA4EqWUlLAhJESwRLAUsFUiNZJQhPAghPAxJEUlcCADYaD0kVSwGBKFlJgUQSREsCTEsCUiNZgUYISwKBKllJSwISRE8DTEsDUkkjWSUITwIITwISRFcCADYaD0kVSwGBKFlJgUQSREsCTEsCUiNZgUYISwKBKllJSwISREsDTEsDUiNZJQgIEkSBLFsxFiQJSTgQJBJENhoPSRVLAYEoWUmBRBJESwJMSwJSI1mBRghLAoEqWUlLAhJESwNMSwNSI1klCAgSRDYaD0kVSwGBKFlJgUQSREsCTEsCUiNZgUYISwKBKllJSwISREsDTEsDUiNZJQgIEkQxG4EQEkRPEjgIgaCNBhJETwI4CIHAmgwSRE8TRE8CRE8DTwNQsE8TF08TFwhPEhcITxEITxAXCE8PFwhPDhcITw0XCE8MFwhPCxcITwoXCE8JFwhPCBcITwcjWwhPBiJbCE8FCE8EgRhbCE8DgSBbCE8CgTRbCEyBPFsIFihMULAkQzYaAUkjWSUISwEVEkRXAgCABkhlbGxvIExQgAEhUEkVFlcGAkxQKExQsCRD", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 99, "minor": 99, "patch": 99 } }, "events": [], "templateVariables": {} }