{ "name": "Arc4BoxContract", "structs": { "DynamicArrayInAStruct": [ { "name": "a", "type": "uint64" }, { "name": "arr", "type": "uint64[]" }, { "name": "b", "type": "uint64" }, { "name": "arr2", "type": "uint64[]" } ], "LargeStruct": [ { "name": "a", "type": "byte[1024]" }, { "name": "b", "type": "byte[1024]" }, { "name": "c", "type": "byte[1024]" }, { "name": "d", "type": "byte[1024]" }, { "name": "e", "type": "uint64" }, { "name": "f", "type": "byte[1024]" }, { "name": "g", "type": "byte[1024]" }, { "name": "h", "type": "uint64" } ] }, "methods": [ { "name": "setBoxes", "args": [ { "type": "uint64", "name": "a" }, { "type": "byte[]", "name": "b" }, { "type": "string", "name": "c" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "checkKeys", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "createManyInts", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setManyInts", "args": [ { "type": "uint64", "name": "index" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "sumManyInts", "args": [], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "deleteBoxes", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "indirectExtractAndReplace", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "readBoxes", "args": [], "returns": { "type": "(uint64,byte[],string,uint64)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "boxesExist", "args": [], "returns": { "type": "(bool,bool,bool,bool)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "sliceBox", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "arc4Box", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "testBoxRef", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "createBools", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "setBool", "args": [ { "type": "uint64", "name": "index" }, { "type": "bool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "sumBools", "args": [ { "type": "uint64", "name": "stopAtTotal" } ], "returns": { "type": "uint64" }, "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": { "boxA": { "keyType": "AVMString", "valueType": "uint64", "key": "Ym94QQ==" }, "boxB": { "keyType": "AVMString", "valueType": "byte[]", "key": "Yg==" }, "boxC": { "keyType": "AVMString", "valueType": "string", "key": "Qk9YX0M=" }, "boxD": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "Ym94RA==" }, "boxRef": { "keyType": "AVMString", "valueType": "AVMBytes", "key": "Ym94UmVm" }, "boxLarge": { "keyType": "AVMString", "valueType": "LargeStruct", "key": "Ym94TGFyZ2U=" }, "manyInts": { "keyType": "AVMString", "valueType": "uint64[513]", "key": "bWFueUludHM=" }, "dynamicBox": { "keyType": "AVMString", "valueType": "uint64[]", "key": "ZHluYW1pY0JveA==" }, "dynamicArrStruct": { "keyType": "AVMString", "valueType": "DynamicArrayInAStruct", "key": "ZHluYW1pY0FyclN0cnVjdA==" }, "tooManyBools": { "keyType": "AVMString", "valueType": "bool[33000]", "key": "dG9vTWFueUJvb2xz" } } }, "maps": { "global": {}, "local": {}, "box": { "boxMap": { "keyType": "uint64", "valueType": "AVMString", "prefix": "" } } } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 413, 438, 856, 976, 985, 991, 1374 ], "errorMessage": "Box must have value" }, { "pc": [ 1340 ], "errorMessage": "index access is out of bounds" }, { "pc": [ 404, 840, 873, 961, 971, 996, 1349, 1397 ], "errorMessage": "index out of bounds" }, { "pc": [ 327, 348 ], "errorMessage": "invalid array length header" }, { "pc": [ 1319 ], "errorMessage": "invalid number of bytes for arc4.bool" }, { "pc": [ 337, 358 ], "errorMessage": "invalid number of bytes for arc4.dynamic_array" }, { "pc": [ 320, 822, 831, 1310, 1359 ], "errorMessage": "invalid number of bytes for arc4.uint64" }, { "pc": [ 1207 ], "errorMessage": "no data" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYXJjNC9pbmRleC5kLnRzOjpDb250cmFjdC5hcHByb3ZhbFByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBpbnRjYmxvY2sgMSAwIDggMiA0MDk2CiAgICBieXRlY2Jsb2NrICJCT1hfQyIgImJsb2IiICJib3hMYXJnZSIgImJveEEiICJib3hEIiAiYiIgInRvb01hbnlCb29scyIgMHgwMDAxMDIwMyAibWFueUludHMiIDB4MTUxZjdjNzUgIjAiIDB4MDY4MTAxIDB4MDAwMjM0MzIgIjQyIiAiaGVsbG8iICJib3hSZWYiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDAKICAgIC8vIGNsYXNzIEFyYzRCb3hDb250cmFjdCBleHRlbmRzIGFyYzQuQ29udHJhY3QgewogICAgdHhuIE51bUFwcEFyZ3MKICAgIGJ6IG1haW5fX19hbGdvdHNfXy5kZWZhdWx0Q3JlYXRlQDI0CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICBhc3NlcnQKICAgIHR4biBBcHBsaWNhdGlvbklECiAgICBhc3NlcnQKICAgIHB1c2hieXRlc3MgMHgyN2Y3NmI2OSAweDkxMjM2MTdhIDB4ZjcyNjM5NDggMHgwOWJjYmE1ZSAweDdhMGQzZGM4IDB4N2QwMzliNDMgMHgzYmMzYjJmOSAweGRjZGU2MTRkIDB4ZTEzOTE3MjEgMHg2ODNiNWM2NCAweGE1YTYyNmZlIDB4OTAzOWVkZGUgMHgyOGIyZTI0MSAweDhkY2VkNzliIDB4MWM3N2Y0OTYgLy8gbWV0aG9kICJzZXRCb3hlcyh1aW50NjQsYnl0ZVtdLHN0cmluZyl2b2lkIiwgbWV0aG9kICJjaGVja0tleXMoKXZvaWQiLCBtZXRob2QgImNyZWF0ZU1hbnlJbnRzKCl2b2lkIiwgbWV0aG9kICJzZXRNYW55SW50cyh1aW50NjQsdWludDY0KXZvaWQiLCBtZXRob2QgInN1bU1hbnlJbnRzKCl1aW50NjQiLCBtZXRob2QgImRlbGV0ZUJveGVzKCl2b2lkIiwgbWV0aG9kICJpbmRpcmVjdEV4dHJhY3RBbmRSZXBsYWNlKCl2b2lkIiwgbWV0aG9kICJyZWFkQm94ZXMoKSh1aW50NjQsYnl0ZVtdLHN0cmluZyx1aW50NjQpIiwgbWV0aG9kICJib3hlc0V4aXN0KCkoYm9vbCxib29sLGJvb2wsYm9vbCkiLCBtZXRob2QgInNsaWNlQm94KCl2b2lkIiwgbWV0aG9kICJhcmM0Qm94KCl2b2lkIiwgbWV0aG9kICJ0ZXN0Qm94UmVmKCl2b2lkIiwgbWV0aG9kICJjcmVhdGVCb29scygpdm9pZCIsIG1ldGhvZCAic2V0Qm9vbCh1aW50NjQsYm9vbCl2b2lkIiwgbWV0aG9kICJzdW1Cb29scyh1aW50NjQpdWludDY0IgogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMAogICAgbWF0Y2ggc2V0Qm94ZXMgbWFpbl9jaGVja0tleXNfcm91dGVANyBtYWluX2NyZWF0ZU1hbnlJbnRzX3JvdXRlQDggc2V0TWFueUludHMgc3VtTWFueUludHMgZGVsZXRlQm94ZXMgaW5kaXJlY3RFeHRyYWN0QW5kUmVwbGFjZSByZWFkQm94ZXMgYm94ZXNFeGlzdCBzbGljZUJveCBhcmM0Qm94IHRlc3RCb3hSZWYgbWFpbl9jcmVhdGVCb29sc19yb3V0ZUAxOCBzZXRCb29sIHN1bUJvb2xzCiAgICBlcnIKCm1haW5fY3JlYXRlQm9vbHNfcm91dGVAMTg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNTIKICAgIC8vIHRvb01hbnlCb29scyA9IEJveDxGaXhlZEFycmF5PGJvb2xlYW4sIDMzXzAwMD4+KHsga2V5OiAndG9vTWFueUJvb2xzJyB9KQogICAgYnl0ZWMgNiAvLyAidG9vTWFueUJvb2xzIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NTAzCiAgICAvLyB0aGlzLnRvb01hbnlCb29scy5jcmVhdGUoKQogICAgcHVzaGludCA0MTI1CiAgICBib3hfY3JlYXRlCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUwMgogICAgLy8gY3JlYXRlQm9vbHMoKSB7CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgptYWluX2NyZWF0ZU1hbnlJbnRzX3JvdXRlQDg6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDgKICAgIC8vIG1hbnlJbnRzID0gQm94PE1hbnlJbnRzPih7IGtleTogJ21hbnlJbnRzJyB9KQogICAgYnl0ZWMgOCAvLyAibWFueUludHMiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MDIKICAgIC8vIHRoaXMubWFueUludHMuY3JlYXRlKCkKICAgIHB1c2hpbnQgNDEwNAogICAgYm94X2NyZWF0ZQogICAgcG9wCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MDEKICAgIC8vIGNyZWF0ZU1hbnlJbnRzKCkgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9jaGVja0tleXNfcm91dGVANzoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM5NAogICAgLy8gY2hlY2tLZXlzKCkgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKbWFpbl9fX2FsZ290c19fLmRlZmF1bHRDcmVhdGVAMjQ6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDAKICAgIC8vIGNsYXNzIEFyYzRCb3hDb250cmFjdCBleHRlbmRzIGFyYzQuQ29udHJhY3QgewogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgdHhuIEFwcGxpY2F0aW9uSUQKICAgICEKICAgICYmCiAgICByZXR1cm4KCgovLyBfcHV5YV9saWIudXRpbC5lbnN1cmVfYnVkZ2V0KHJlcXVpcmVkX2J1ZGdldDogdWludDY0LCBmZWVfc291cmNlOiB1aW50NjQpIC0+IHZvaWQ6CmVuc3VyZV9idWRnZXQ6CiAgICBwcm90byAyIDAKICAgIGZyYW1lX2RpZyAtMgogICAgcHVzaGludCAxMAogICAgKwoKZW5zdXJlX2J1ZGdldF93aGlsZV90b3BAMToKICAgIGR1cAogICAgZ2xvYmFsIE9wY29kZUJ1ZGdldAogICAgPgogICAgYnogZW5zdXJlX2J1ZGdldF9hZnRlcl93aGlsZUA2CiAgICBpdHhuX2JlZ2luCiAgICBwdXNoaW50IDYgLy8gYXBwbAogICAgaXR4bl9maWVsZCBUeXBlRW51bQogICAgcHVzaGludCA1IC8vIERlbGV0ZUFwcGxpY2F0aW9uCiAgICBpdHhuX2ZpZWxkIE9uQ29tcGxldGlvbgogICAgYnl0ZWMgMTEgLy8gMHgwNjgxMDEKICAgIGl0eG5fZmllbGQgQXBwcm92YWxQcm9ncmFtCiAgICBieXRlYyAxMSAvLyAweDA2ODEwMQogICAgaXR4bl9maWVsZCBDbGVhclN0YXRlUHJvZ3JhbQogICAgZnJhbWVfZGlnIC0xCiAgICBzd2l0Y2ggZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8wQDMgZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8xQDQKCmVuc3VyZV9idWRnZXRfc3dpdGNoX2Nhc2VfbmV4dEA1OgogICAgaXR4bl9zdWJtaXQKICAgIGIgZW5zdXJlX2J1ZGdldF93aGlsZV90b3BAMQoKZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8xQDQ6CiAgICBnbG9iYWwgTWluVHhuRmVlCiAgICBpdHhuX2ZpZWxkIEZlZQogICAgYiBlbnN1cmVfYnVkZ2V0X3N3aXRjaF9jYXNlX25leHRANQoKZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV8wQDM6CiAgICBpbnRjXzEgLy8gMAogICAgaXR4bl9maWVsZCBGZWUKICAgIGIgZW5zdXJlX2J1ZGdldF9zd2l0Y2hfY2FzZV9uZXh0QDUKCmVuc3VyZV9idWRnZXRfYWZ0ZXJfd2hpbGVANjoKICAgIHJldHN1YgoKCi8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjpBcmM0Qm94Q29udHJhY3Quc2V0Qm94ZXNbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRCb3hlczoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM1OQogICAgLy8gc2V0Qm94ZXMoYTogdWludDY0LCBiOiBieXRlcywgYzogYXJjNC5TdHIpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICBkaWcgMQogICAgZXh0cmFjdCAyIDAKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIGR1cAogICAgaW50Y18xIC8vIDAKICAgIGV4dHJhY3RfdWludDE2IC8vIG9uIGVycm9yOiBpbnZhbGlkIGFycmF5IGxlbmd0aCBoZWFkZXIKICAgIGludGNfMyAvLyAyCiAgICArCiAgICBkaWcgMQogICAgbGVuCiAgICBkdXAKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5keW5hbWljX2FycmF5PGFyYzQudWludDg+CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNjEKICAgIC8vIHRoaXMuYm94QS52YWx1ZSA9IGEKICAgIHVuY292ZXIgNQogICAgaXRvYgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQxCiAgICAvLyBib3hBID0gQm94PHVpbnQ2ND4oeyBrZXk6ICdib3hBJyB9KQogICAgYnl0ZWNfMyAvLyAiYm94QSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM2MQogICAgLy8gdGhpcy5ib3hBLnZhbHVlID0gYQogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQyCiAgICAvLyBib3hCID0gQm94PGFyYzQuRHluYW1pY0J5dGVzPih7IGtleTogJ2InIH0pCiAgICBieXRlYyA1IC8vICJiIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzYyCiAgICAvLyB0aGlzLmJveEIudmFsdWUgPSBkeW5hbWljQnl0ZXMKICAgIGJveF9kZWwKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQyCiAgICAvLyBib3hCID0gQm94PGFyYzQuRHluYW1pY0J5dGVzPih7IGtleTogJ2InIH0pCiAgICBieXRlYyA1IC8vICJiIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzYyCiAgICAvLyB0aGlzLmJveEIudmFsdWUgPSBkeW5hbWljQnl0ZXMKICAgIGRpZyA1CiAgICBib3hfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDMKICAgIC8vIGJveEMgPSBCb3g8YXJjNC5TdHI+KHsga2V5OiAnQk9YX0MnIH0pCiAgICBieXRlY18wIC8vICJCT1hfQyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM2MwogICAgLy8gdGhpcy5ib3hDLnZhbHVlID0gYwogICAgYm94X2RlbAogICAgcG9wCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDMKICAgIC8vIGJveEMgPSBCb3g8YXJjNC5TdHI+KHsga2V5OiAnQk9YX0MnIH0pCiAgICBieXRlY18wIC8vICJCT1hfQyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM2MwogICAgLy8gdGhpcy5ib3hDLnZhbHVlID0gYwogICAgZGlnIDIKICAgIGJveF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0NAogICAgLy8gYm94RCA9IEJveDxieXRlcz4oeyBrZXk6ICdib3hEJyB9KQogICAgYnl0ZWMgNCAvLyAiYm94RCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM2NAogICAgLy8gdGhpcy5ib3hELnZhbHVlID0gZHluYW1pY0J5dGVzLm5hdGl2ZQogICAgYm94X2RlbAogICAgcG9wCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDQKICAgIC8vIGJveEQgPSBCb3g8Ynl0ZXM+KHsga2V5OiAnYm94RCcgfSkKICAgIGJ5dGVjIDQgLy8gImJveEQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNjQKICAgIC8vIHRoaXMuYm94RC52YWx1ZSA9IGR5bmFtaWNCeXRlcy5uYXRpdmUKICAgIGRpZyAzCiAgICBib3hfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDcKICAgIC8vIGJveExhcmdlID0gQm94PExhcmdlU3RydWN0Pih7IGtleTogJ2JveExhcmdlJyB9KQogICAgYnl0ZWNfMiAvLyAiYm94TGFyZ2UiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNjUKICAgIC8vIHRoaXMuYm94TGFyZ2UuY3JlYXRlKCkKICAgIHB1c2hpbnQgNjE2MAogICAgYm94X2NyZWF0ZQogICAgcG9wCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNjYKICAgIC8vIHRoaXMuYm94TGFyZ2UudmFsdWUuZSA9IDQyCiAgICBwdXNoaW50IDQyCiAgICBpdG9iCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDcKICAgIC8vIGJveExhcmdlID0gQm94PExhcmdlU3RydWN0Pih7IGtleTogJ2JveExhcmdlJyB9KQogICAgYnl0ZWNfMiAvLyAiYm94TGFyZ2UiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNjYKICAgIC8vIHRoaXMuYm94TGFyZ2UudmFsdWUuZSA9IDQyCiAgICBpbnRjIDQgLy8gNDA5NgogICAgZGlnIDIKICAgIGJveF9yZXBsYWNlIC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDcKICAgIC8vIGJveExhcmdlID0gQm94PExhcmdlU3RydWN0Pih7IGtleTogJ2JveExhcmdlJyB9KQogICAgYnl0ZWNfMiAvLyAiYm94TGFyZ2UiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNjcKICAgIC8vIHRoaXMuYm94TGFyZ2UucmVwbGFjZShhcmM0LnNpemVPZjxCeXRlczEwMjQ+KCkgKiA0LCBuZXcgYXJjNC5VaW50NjQoNDIpLmJ5dGVzKQogICAgaW50YyA0IC8vIDQwOTYKICAgIHVuY292ZXIgMgogICAgYm94X3JlcGxhY2UKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MQogICAgLy8gYm94QSA9IEJveDx1aW50NjQ+KHsga2V5OiAnYm94QScgfSkKICAgIGJ5dGVjXzMgLy8gImJveEEiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNzEKICAgIC8vIHRoaXMuYm94QS52YWx1ZSArPSAzCiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gQm94IG11c3QgaGF2ZSB2YWx1ZQogICAgYnRvaQogICAgcHVzaGludCAzCiAgICArCiAgICBpdG9iCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDEKICAgIC8vIGJveEEgPSBCb3g8dWludDY0Pih7IGtleTogJ2JveEEnIH0pCiAgICBieXRlY18zIC8vICJib3hBIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzcxCiAgICAvLyB0aGlzLmJveEEudmFsdWUgKz0gMwogICAgc3dhcAogICAgYm94X3B1dAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQxCiAgICAvLyBib3hBID0gQm94PHVpbnQ2ND4oeyBrZXk6ICdib3hBJyB9KQogICAgYnl0ZWNfMyAvLyAiYm94QSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM3NAogICAgLy8gYXNzZXJ0KHRoaXMuYm94QS5sZW5ndGggPT09IDgpCiAgICBib3hfbGVuCiAgICBwb3AKICAgIGludGNfMiAvLyA4CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDIKICAgIC8vIGJveEIgPSBCb3g8YXJjNC5EeW5hbWljQnl0ZXM+KHsga2V5OiAnYicgfSkKICAgIGJ5dGVjIDUgLy8gImIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNzUKICAgIC8vIGFzc2VydCh0aGlzLmJveEIubGVuZ3RoID09PSBkeW5hbWljQnl0ZXMuYnl0ZXMubGVuZ3RoKQogICAgYm94X2xlbgogICAgcG9wCiAgICB1bmNvdmVyIDQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MwogICAgLy8gYm94QyA9IEJveDxhcmM0LlN0cj4oeyBrZXk6ICdCT1hfQycgfSkKICAgIGJ5dGVjXzAgLy8gIkJPWF9DIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6Mzc2CiAgICAvLyBhc3NlcnQodGhpcy5ib3hDLmxlbmd0aCA9PT0gYy5ieXRlcy5sZW5ndGgpCiAgICBib3hfbGVuCiAgICBhc3NlcnQgLy8gQm94IG11c3QgaGF2ZSB2YWx1ZQogICAgZHVwCiAgICBkaWcgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQ0CiAgICAvLyBib3hEID0gQm94PGJ5dGVzPih7IGtleTogJ2JveEQnIH0pCiAgICBieXRlYyA0IC8vICJib3hEIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6Mzc3CiAgICAvLyBhc3NlcnQodGhpcy5ib3hELmxlbmd0aCA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5sZW5ndGgpCiAgICBib3hfbGVuCiAgICBwb3AKICAgIGRpZyA0CiAgICBsZW4KICAgIGR1cDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MwogICAgLy8gYm94QyA9IEJveDxhcmM0LlN0cj4oeyBrZXk6ICdCT1hfQycgfSkKICAgIGJ5dGVjXzAgLy8gIkJPWF9DIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzgwCiAgICAvLyBhc3NlcnQodGhpcy5ib3hDLnZhbHVlLmJ5dGVzLmF0KDApID09PSBjLmJ5dGVzLmF0KDApKQogICAgaW50Y18xIC8vIDAKICAgIGludGNfMCAvLyAxCiAgICBib3hfZXh0cmFjdAogICAgZGlnIDUKICAgIGV4dHJhY3QgMCAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozODEKICAgIC8vIGFzc2VydCh0aGlzLmJveEMudmFsdWUuYnl0ZXMuYXQoLTEpID09PSBjLmJ5dGVzLmF0KC0xKSkKICAgIGRpZyAyCiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQzCiAgICAvLyBib3hDID0gQm94PGFyYzQuU3RyPih7IGtleTogJ0JPWF9DJyB9KQogICAgYnl0ZWNfMCAvLyAiQk9YX0MiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozODEKICAgIC8vIGFzc2VydCh0aGlzLmJveEMudmFsdWUuYnl0ZXMuYXQoLTEpID09PSBjLmJ5dGVzLmF0KC0xKSkKICAgIHN3YXAKICAgIGludGNfMCAvLyAxCiAgICBib3hfZXh0cmFjdAogICAgZGlnIDQKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkaWcgNgogICAgc3dhcAogICAgaW50Y18wIC8vIDEKICAgIGV4dHJhY3QzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozODIKICAgIC8vIGFzc2VydCh0aGlzLmJveEMudmFsdWUuYnl0ZXMuc2xpY2UoMCwgLTEpID09PSBjLmJ5dGVzLnNsaWNlKDAsIC0xKSkKICAgIGludGNfMSAvLyAwCiAgICBkaWcgMwogICAgPj0KICAgIGludGNfMSAvLyAwCiAgICBkaWcgNAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMCAvLyAxCiAgICBkaWcgNAogICAgPj0KICAgIGludGNfMCAvLyAxCiAgICBkaWcgNQogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyA0CiAgICBzd2FwCiAgICAtCiAgICBkdXAKICAgIGRpZyAyCiAgICA8CiAgICBkaWcgMgogICAgc3dhcAogICAgc2VsZWN0CiAgICBkaWcgMQogICAgLQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQzCiAgICAvLyBib3hDID0gQm94PGFyYzQuU3RyPih7IGtleTogJ0JPWF9DJyB9KQogICAgYnl0ZWNfMCAvLyAiQk9YX0MiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozODIKICAgIC8vIGFzc2VydCh0aGlzLmJveEMudmFsdWUuYnl0ZXMuc2xpY2UoMCwgLTEpID09PSBjLmJ5dGVzLnNsaWNlKDAsIC0xKSkKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIGJveF9leHRyYWN0CiAgICBpbnRjXzEgLy8gMAogICAgZGlnIDYKICAgID49CiAgICBpbnRjXzEgLy8gMAogICAgZGlnIDcKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBpbnRjXzAgLy8gMQogICAgZGlnIDcKICAgID49CiAgICBpbnRjXzAgLy8gMQogICAgZGlnIDgKICAgIHVuY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgNwogICAgc3dhcAogICAgLQogICAgZHVwCiAgICBkaWcgMgogICAgPAogICAgZGlnIDIKICAgIHN3YXAKICAgIHNlbGVjdAogICAgZGlnIDgKICAgIGRpZyAyCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgIHVuY292ZXIgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzgzCiAgICAvLyBhc3NlcnQodGhpcy5ib3hDLnZhbHVlLmJ5dGVzLnNsaWNlKDAsIDIpID09PSBjLmJ5dGVzLnNsaWNlKDAsIDIpKQogICAgaW50Y18zIC8vIDIKICAgIGRpZyA1CiAgICA+PQogICAgaW50Y18zIC8vIDIKICAgIHVuY292ZXIgNgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAyCiAgICAtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDMKICAgIC8vIGJveEMgPSBCb3g8YXJjNC5TdHI+KHsga2V5OiAnQk9YX0MnIH0pCiAgICBieXRlY18wIC8vICJCT1hfQyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM4MwogICAgLy8gYXNzZXJ0KHRoaXMuYm94Qy52YWx1ZS5ieXRlcy5zbGljZSgwLCAyKSA9PT0gYy5ieXRlcy5zbGljZSgwLCAyKSkKICAgIHVuY292ZXIgMwogICAgdW5jb3ZlciAyCiAgICBib3hfZXh0cmFjdAogICAgaW50Y18zIC8vIDIKICAgIGRpZyA1CiAgICA+PQogICAgaW50Y18zIC8vIDIKICAgIHVuY292ZXIgNgogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIHVuY292ZXIgNQogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIHN1YnN0cmluZzMKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0NAogICAgLy8gYm94RCA9IEJveDxieXRlcz4oeyBrZXk6ICdib3hEJyB9KQogICAgYnl0ZWMgNCAvLyAiYm94RCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM4NgogICAgLy8gYXNzZXJ0KHRoaXMuYm94RC52YWx1ZS5hdCgwKSA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5hdCgwKSkKICAgIGludGNfMSAvLyAwCiAgICBpbnRjXzAgLy8gMQogICAgYm94X2V4dHJhY3QKICAgIHVuY292ZXIgNAogICAgZXh0cmFjdCAyIDEKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM4NwogICAgLy8gYXNzZXJ0KHRoaXMuYm94RC52YWx1ZS5hdCgtMSkgPT09IGR5bmFtaWNCeXRlcy5uYXRpdmUuYXQoLTEpKQogICAgZGlnIDEKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDQKICAgIC8vIGJveEQgPSBCb3g8Ynl0ZXM+KHsga2V5OiAnYm94RCcgfSkKICAgIGJ5dGVjIDQgLy8gImJveEQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozODcKICAgIC8vIGFzc2VydCh0aGlzLmJveEQudmFsdWUuYXQoLTEpID09PSBkeW5hbWljQnl0ZXMubmF0aXZlLmF0KC0xKSkKICAgIHN3YXAKICAgIGludGNfMCAvLyAxCiAgICBib3hfZXh0cmFjdAogICAgZGlnIDEKICAgIGludGNfMCAvLyAxCiAgICAtCiAgICBkaWcgNAogICAgc3dhcAogICAgaW50Y18wIC8vIDEKICAgIGV4dHJhY3QzCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozODgKICAgIC8vIGFzc2VydCh0aGlzLmJveEQudmFsdWUuc2xpY2UoMCwgLTEpID09PSBkeW5hbWljQnl0ZXMubmF0aXZlLnNsaWNlKDAsIC0xKSkKICAgIGludGNfMSAvLyAwCiAgICBkaWcgMgogICAgPj0KICAgIGludGNfMSAvLyAwCiAgICBkaWcgMwogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGludGNfMCAvLyAxCiAgICBkaWcgMwogICAgPj0KICAgIGludGNfMCAvLyAxCiAgICBkaWcgNAogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAzCiAgICBzd2FwCiAgICAtCiAgICBkdXAKICAgIGRpZyAyCiAgICA8CiAgICBkaWcgMgogICAgc3dhcAogICAgc2VsZWN0CiAgICBkaWcgMQogICAgLQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQ0CiAgICAvLyBib3hEID0gQm94PGJ5dGVzPih7IGtleTogJ2JveEQnIH0pCiAgICBieXRlYyA0IC8vICJib3hEIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6Mzg4CiAgICAvLyBhc3NlcnQodGhpcy5ib3hELnZhbHVlLnNsaWNlKDAsIC0xKSA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5zbGljZSgwLCAtMSkpCiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBib3hfZXh0cmFjdAogICAgaW50Y18xIC8vIDAKICAgIGRpZyAzCiAgICA+PQogICAgaW50Y18xIC8vIDAKICAgIGRpZyA0CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgaW50Y18wIC8vIDEKICAgIGRpZyA0CiAgICA+PQogICAgaW50Y18wIC8vIDEKICAgIGRpZyA1CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZGlnIDQKICAgIHN3YXAKICAgIC0KICAgIGR1cAogICAgZGlnIDIKICAgIDwKICAgIGRpZyAyCiAgICBzd2FwCiAgICBzZWxlY3QKICAgIGRpZyA2CiAgICBkaWcgMgogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICB1bmNvdmVyIDIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM4OQogICAgLy8gYXNzZXJ0KHRoaXMuYm94RC52YWx1ZS5zbGljZSgwLCA1KSA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5zbGljZSgwLCA1KSkKICAgIHB1c2hpbnQgNQogICAgZGlnIDQKICAgID49CiAgICBwdXNoaW50IDUKICAgIGRpZyA1CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgZGlnIDIKICAgIC0KICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0NAogICAgLy8gYm94RCA9IEJveDxieXRlcz4oeyBrZXk6ICdib3hEJyB9KQogICAgYnl0ZWMgNCAvLyAiYm94RCIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM4OQogICAgLy8gYXNzZXJ0KHRoaXMuYm94RC52YWx1ZS5zbGljZSgwLCA1KSA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5zbGljZSgwLCA1KSkKICAgIGRpZyAzCiAgICB1bmNvdmVyIDIKICAgIGJveF9leHRyYWN0CiAgICBwdXNoaW50IDUKICAgIGRpZyA0CiAgICA+PQogICAgcHVzaGludCA1CiAgICBkaWcgNQogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyA2CiAgICBkaWcgMwogICAgdW5jb3ZlciAyCiAgICBzdWJzdHJpbmczCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozOTAKICAgIC8vIGFzc2VydCh0aGlzLmJveEQudmFsdWUuc2xpY2UoMCwgVWludDY0KDIpKSA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5zbGljZSgwLCBVaW50NjQoMikpKQogICAgaW50Y18zIC8vIDIKICAgIGRpZyA0CiAgICA+PQogICAgaW50Y18zIC8vIDIKICAgIHVuY292ZXIgNQogICAgdW5jb3ZlciAyCiAgICBzZWxlY3QKICAgIGRpZyAyCiAgICAtCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDQKICAgIC8vIGJveEQgPSBCb3g8Ynl0ZXM+KHsga2V5OiAnYm94RCcgfSkKICAgIGJ5dGVjIDQgLy8gImJveEQiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozOTAKICAgIC8vIGFzc2VydCh0aGlzLmJveEQudmFsdWUuc2xpY2UoMCwgVWludDY0KDIpKSA9PT0gZHluYW1pY0J5dGVzLm5hdGl2ZS5zbGljZSgwLCBVaW50NjQoMikpKQogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDIKICAgIGJveF9leHRyYWN0CiAgICBpbnRjXzMgLy8gMgogICAgZGlnIDMKICAgID49CiAgICBpbnRjXzMgLy8gMgogICAgdW5jb3ZlciA0CiAgICB1bmNvdmVyIDIKICAgIHNlbGVjdAogICAgdW5jb3ZlciAzCiAgICB1bmNvdmVyIDMKICAgIHVuY292ZXIgMgogICAgc3Vic3RyaW5nMwogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQ3CiAgICAvLyBib3hMYXJnZSA9IEJveDxMYXJnZVN0cnVjdD4oeyBrZXk6ICdib3hMYXJnZScgfSkKICAgIGJ5dGVjXzIgLy8gImJveExhcmdlIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzkxCiAgICAvLyBhc3NlcnQodGhpcy5ib3hMYXJnZS5sZW5ndGggPT09IGFyYzQuc2l6ZU9mPExhcmdlU3RydWN0PigpKQogICAgYm94X2xlbgogICAgcG9wCiAgICBwdXNoaW50IDYxNjAKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM1OQogICAgLy8gc2V0Qm94ZXMoYTogdWludDY0LCBiOiBieXRlcywgYzogYXJjNC5TdHIpIHsKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo6QXJjNEJveENvbnRyYWN0LnNldE1hbnlJbnRzW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0TWFueUludHM6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MDUKICAgIC8vIHNldE1hbnlJbnRzKGluZGV4OiB1aW50NjQsIHZhbHVlOiB1aW50NjQpIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQwNgogICAgLy8gdGhpcy5tYW55SW50cy52YWx1ZVtpbmRleF0gPSB2YWx1ZQogICAgc3dhcAogICAgaW50Y18yIC8vIDgKICAgICoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0OAogICAgLy8gbWFueUludHMgPSBCb3g8TWFueUludHM+KHsga2V5OiAnbWFueUludHMnIH0pCiAgICBieXRlYyA4IC8vICJtYW55SW50cyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQwNgogICAgLy8gdGhpcy5tYW55SW50cy52YWx1ZVtpbmRleF0gPSB2YWx1ZQogICAgc3dhcAogICAgdW5jb3ZlciAyCiAgICBib3hfcmVwbGFjZSAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDA1CiAgICAvLyBzZXRNYW55SW50cyhpbmRleDogdWludDY0LCB2YWx1ZTogdWludDY0KSB7CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6OkFyYzRCb3hDb250cmFjdC5zdW1NYW55SW50c1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnN1bU1hbnlJbnRzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDEwCiAgICAvLyBlbnN1cmVCdWRnZXQoMTBfNTAwKQogICAgcHVzaGludCAxMDUwMAogICAgaW50Y18xIC8vIDAKICAgIGNhbGxzdWIgZW5zdXJlX2J1ZGdldAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDExCiAgICAvLyBsZXQgdG90YWwgPSBVaW50NjQoMCkKICAgIGludGNfMSAvLyAwCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDgKICAgIC8vIG1hbnlJbnRzID0gQm94PE1hbnlJbnRzPih7IGtleTogJ21hbnlJbnRzJyB9KQogICAgYnl0ZWMgOCAvLyAibWFueUludHMiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MTIKICAgIC8vIGZvciAoY29uc3QgdmFsIG9mIHRoaXMubWFueUludHMudmFsdWUpIHsKICAgIGJveF9sZW4KICAgIGJ1cnkgMQogICAgYXNzZXJ0IC8vIEJveCBtdXN0IGhhdmUgdmFsdWUKICAgIGludGNfMSAvLyAwCgpzdW1NYW55SW50c19mb3JfaGVhZGVyQDI6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MTIKICAgIC8vIGZvciAoY29uc3QgdmFsIG9mIHRoaXMubWFueUludHMudmFsdWUpIHsKICAgIGR1cAogICAgcHVzaGludCA1MTMKICAgIDwKICAgIGJ6IHN1bU1hbnlJbnRzX2FmdGVyX2ZvckA1CiAgICBkdXAKICAgIGludGNfMiAvLyA4CiAgICAqCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDgKICAgIC8vIG1hbnlJbnRzID0gQm94PE1hbnlJbnRzPih7IGtleTogJ21hbnlJbnRzJyB9KQogICAgYnl0ZWMgOCAvLyAibWFueUludHMiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MTIKICAgIC8vIGZvciAoY29uc3QgdmFsIG9mIHRoaXMubWFueUludHMudmFsdWUpIHsKICAgIHN3YXAKICAgIGludGNfMiAvLyA4CiAgICBib3hfZXh0cmFjdCAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgYnRvaQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDEzCiAgICAvLyB0b3RhbCA9IHRvdGFsICsgdmFsCiAgICB1bmNvdmVyIDIKICAgICsKICAgIHN3YXAKICAgIGludGNfMCAvLyAxCiAgICArCiAgICBiIHN1bU1hbnlJbnRzX2Zvcl9oZWFkZXJAMgoKc3VtTWFueUludHNfYWZ0ZXJfZm9yQDU6CiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQwOQogICAgLy8gc3VtTWFueUludHMoKSB7CiAgICBpdG9iCiAgICBieXRlYyA5IC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6OkFyYzRCb3hDb250cmFjdC5kZWxldGVCb3hlc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmRlbGV0ZUJveGVzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQxCiAgICAvLyBib3hBID0gQm94PHVpbnQ2ND4oeyBrZXk6ICdib3hBJyB9KQogICAgYnl0ZWNfMyAvLyAiYm94QSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQxOQogICAgLy8gdGhpcy5ib3hBLmRlbGV0ZSgpCiAgICBib3hfZGVsCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MgogICAgLy8gYm94QiA9IEJveDxhcmM0LkR5bmFtaWNCeXRlcz4oeyBrZXk6ICdiJyB9KQogICAgYnl0ZWMgNSAvLyAiYiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQyMAogICAgLy8gdGhpcy5ib3hCLmRlbGV0ZSgpCiAgICBib3hfZGVsCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MwogICAgLy8gYm94QyA9IEJveDxhcmM0LlN0cj4oeyBrZXk6ICdCT1hfQycgfSkKICAgIGJ5dGVjXzAgLy8gIkJPWF9DIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDIxCiAgICAvLyB0aGlzLmJveEMuZGVsZXRlKCkKICAgIGJveF9kZWwKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQxCiAgICAvLyBib3hBID0gQm94PHVpbnQ2ND4oeyBrZXk6ICdib3hBJyB9KQogICAgYnl0ZWNfMyAvLyAiYm94QSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQyMgogICAgLy8gYXNzZXJ0KHRoaXMuYm94QS5nZXQoeyBkZWZhdWx0OiBVaW50NjQoNDIpIH0pID09PSA0MikKICAgIGJveF9nZXQKICAgIHN3YXAKICAgIGJ0b2kKICAgIHB1c2hpbnQgNDIKICAgIGRpZyAxCiAgICBkaWcgMwogICAgc2VsZWN0CiAgICBwdXNoaW50IDQyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDIKICAgIC8vIGJveEIgPSBCb3g8YXJjNC5EeW5hbWljQnl0ZXM+KHsga2V5OiAnYicgfSkKICAgIGJ5dGVjIDUgLy8gImIiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MjMKICAgIC8vIGFzc2VydCh0aGlzLmJveEIuZ2V0KHsgZGVmYXVsdDogbmV3IGFyYzQuRHluYW1pY0J5dGVzKEJ5dGVzKCc0MicpKSB9KS5uYXRpdmUgPT09IEJ5dGVzKCc0MicpKQogICAgYm94X2dldAogICAgYnl0ZWMgMTIgLy8gMHgwMDAyMzQzMgogICAgY292ZXIgMgogICAgc2VsZWN0CiAgICBleHRyYWN0IDIgMAogICAgYnl0ZWMgMTMgLy8gIjQyIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQzCiAgICAvLyBib3hDID0gQm94PGFyYzQuU3RyPih7IGtleTogJ0JPWF9DJyB9KQogICAgYnl0ZWNfMCAvLyAiQk9YX0MiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MjQKICAgIC8vIGFzc2VydCh0aGlzLmJveEMuZ2V0KHsgZGVmYXVsdDogbmV3IGFyYzQuU3RyKCc0MicpIH0pLm5hdGl2ZSA9PT0gJzQyJykKICAgIGJveF9nZXQKICAgIGJ5dGVjIDEyIC8vIDB4MDAwMjM0MzIKICAgIGNvdmVyIDIKICAgIHNlbGVjdAogICAgZXh0cmFjdCAyIDAKICAgIGJ5dGVjIDEzIC8vICI0MiIKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQyNwogICAgLy8gYXNzZXJ0KCFhRXhpc3RzKQogICAgc3dhcAogICAgIQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MjgKICAgIC8vIGFzc2VydChhID09PSAwKQogICAgIQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDcKICAgIC8vIGJveExhcmdlID0gQm94PExhcmdlU3RydWN0Pih7IGtleTogJ2JveExhcmdlJyB9KQogICAgYnl0ZWNfMiAvLyAiYm94TGFyZ2UiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MjkKICAgIC8vIHRoaXMuYm94TGFyZ2UuZGVsZXRlKCkKICAgIGJveF9kZWwKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDE4CiAgICAvLyBkZWxldGVCb3hlcygpIHsKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo6QXJjNEJveENvbnRyYWN0LmluZGlyZWN0RXh0cmFjdEFuZFJlcGxhY2Vbcm91dGluZ10oKSAtPiB2b2lkOgppbmRpcmVjdEV4dHJhY3RBbmRSZXBsYWNlOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQ3CiAgICAvLyBib3hMYXJnZSA9IEJveDxMYXJnZVN0cnVjdD4oeyBrZXk6ICdib3hMYXJnZScgfSkKICAgIGJ5dGVjXzIgLy8gImJveExhcmdlIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDMyLTQzMwogICAgLy8gY29uc3QgbGFyZ2UgPSBjbG9uZSh0aGlzLmJveExhcmdlLnZhbHVlKQogICAgLy8gbGFyZ2UuZSArPSAxCiAgICBpbnRjIDQgLy8gNDA5NgogICAgaW50Y18yIC8vIDgKICAgIGJveF9leHRyYWN0IC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MzMKICAgIC8vIGxhcmdlLmUgKz0gMQogICAgYnRvaQogICAgaW50Y18wIC8vIDEKICAgICsKICAgIGl0b2IKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0NwogICAgLy8gYm94TGFyZ2UgPSBCb3g8TGFyZ2VTdHJ1Y3Q+KHsga2V5OiAnYm94TGFyZ2UnIH0pCiAgICBieXRlY18yIC8vICJib3hMYXJnZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQzMy00MzQKICAgIC8vIGxhcmdlLmUgKz0gMQogICAgLy8gdGhpcy5ib3hMYXJnZS52YWx1ZSA9IGNsb25lKGxhcmdlKQogICAgaW50YyA0IC8vIDQwOTYKICAgIHVuY292ZXIgMgogICAgYm94X3JlcGxhY2UgLy8gb24gZXJyb3I6IGluZGV4IG91dCBvZiBib3VuZHMKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQzMQogICAgLy8gaW5kaXJlY3RFeHRyYWN0QW5kUmVwbGFjZSgpIHsKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo6QXJjNEJveENvbnRyYWN0LnJlYWRCb3hlc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnJlYWRCb3hlczoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MQogICAgLy8gYm94QSA9IEJveDx1aW50NjQ+KHsga2V5OiAnYm94QScgfSkKICAgIGJ5dGVjXzMgLy8gImJveEEiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MjYKICAgIC8vIHJldHVybiBVaW50NjQoYm94LnZhbHVlICsgMSkKICAgIGJveF9nZXQKICAgIGFzc2VydCAvLyBCb3ggbXVzdCBoYXZlIHZhbHVlCiAgICBidG9pCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDM4CiAgICAvLyByZXR1cm4gW1VpbnQ2NChnZXRCb3hWYWx1ZVBsdXMxKHRoaXMuYm94QSkgLSAxKSwgdGhpcy5ib3hCLnZhbHVlLm5hdGl2ZSwgdGhpcy5ib3hDLnZhbHVlLCB0aGlzLmJveExhcmdlLnZhbHVlLmVdIGFzIGNvbnN0CiAgICBpbnRjXzAgLy8gMQogICAgLQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQyCiAgICAvLyBib3hCID0gQm94PGFyYzQuRHluYW1pY0J5dGVzPih7IGtleTogJ2InIH0pCiAgICBieXRlYyA1IC8vICJiIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDM4CiAgICAvLyByZXR1cm4gW1VpbnQ2NChnZXRCb3hWYWx1ZVBsdXMxKHRoaXMuYm94QSkgLSAxKSwgdGhpcy5ib3hCLnZhbHVlLm5hdGl2ZSwgdGhpcy5ib3hDLnZhbHVlLCB0aGlzLmJveExhcmdlLnZhbHVlLmVdIGFzIGNvbnN0CiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gQm94IG11c3QgaGF2ZSB2YWx1ZQogICAgZXh0cmFjdCAyIDAKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MwogICAgLy8gYm94QyA9IEJveDxhcmM0LlN0cj4oeyBrZXk6ICdCT1hfQycgfSkKICAgIGJ5dGVjXzAgLy8gIkJPWF9DIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDM4CiAgICAvLyByZXR1cm4gW1VpbnQ2NChnZXRCb3hWYWx1ZVBsdXMxKHRoaXMuYm94QSkgLSAxKSwgdGhpcy5ib3hCLnZhbHVlLm5hdGl2ZSwgdGhpcy5ib3hDLnZhbHVlLCB0aGlzLmJveExhcmdlLnZhbHVlLmVdIGFzIGNvbnN0CiAgICBib3hfZ2V0CiAgICBhc3NlcnQgLy8gQm94IG11c3QgaGF2ZSB2YWx1ZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQ3CiAgICAvLyBib3hMYXJnZSA9IEJveDxMYXJnZVN0cnVjdD4oeyBrZXk6ICdib3hMYXJnZScgfSkKICAgIGJ5dGVjXzIgLy8gImJveExhcmdlIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDM4CiAgICAvLyByZXR1cm4gW1VpbnQ2NChnZXRCb3hWYWx1ZVBsdXMxKHRoaXMuYm94QSkgLSAxKSwgdGhpcy5ib3hCLnZhbHVlLm5hdGl2ZSwgdGhpcy5ib3hDLnZhbHVlLCB0aGlzLmJveExhcmdlLnZhbHVlLmVdIGFzIGNvbnN0CiAgICBpbnRjIDQgLy8gNDA5NgogICAgaW50Y18yIC8vIDgKICAgIGJveF9leHRyYWN0IC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0MzcKICAgIC8vIHJlYWRCb3hlcygpOiByZWFkb25seSBbdWludDY0LCBieXRlcywgYXJjNC5TdHIsIHVpbnQ2NF0gewogICAgdW5jb3ZlciAzCiAgICBpdG9iCiAgICBkaWcgMwogICAgbGVuCiAgICBpdG9iCiAgICBleHRyYWN0IDYgMgogICAgdW5jb3ZlciA0CiAgICBjb25jYXQKICAgIHN3YXAKICAgIHB1c2hieXRlcyAweDAwMTQKICAgIGNvbmNhdAogICAgZGlnIDEKICAgIGxlbgogICAgcHVzaGludCAyMAogICAgKwogICAgaXRvYgogICAgZXh0cmFjdCA2IDIKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBpdG9iCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgY29uY2F0CiAgICBieXRlYyA5IC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6OkFyYzRCb3hDb250cmFjdC5ib3hlc0V4aXN0W3JvdXRpbmddKCkgLT4gdm9pZDoKYm94ZXNFeGlzdDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MQogICAgLy8gYm94QSA9IEJveDx1aW50NjQ+KHsga2V5OiAnYm94QScgfSkKICAgIGJ5dGVjXzMgLy8gImJveEEiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NDIKICAgIC8vIHJldHVybiBbdGhpcy5ib3hBLmV4aXN0cywgdGhpcy5ib3hCLmV4aXN0cywgdGhpcy5ib3hDLmV4aXN0cywgdGhpcy5ib3hMYXJnZS5leGlzdHNdIGFzIGNvbnN0CiAgICBib3hfbGVuCiAgICBidXJ5IDEKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MgogICAgLy8gYm94QiA9IEJveDxhcmM0LkR5bmFtaWNCeXRlcz4oeyBrZXk6ICdiJyB9KQogICAgYnl0ZWMgNSAvLyAiYiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ0MgogICAgLy8gcmV0dXJuIFt0aGlzLmJveEEuZXhpc3RzLCB0aGlzLmJveEIuZXhpc3RzLCB0aGlzLmJveEMuZXhpc3RzLCB0aGlzLmJveExhcmdlLmV4aXN0c10gYXMgY29uc3QKICAgIGJveF9sZW4KICAgIGNvdmVyIDIKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQzCiAgICAvLyBib3hDID0gQm94PGFyYzQuU3RyPih7IGtleTogJ0JPWF9DJyB9KQogICAgYnl0ZWNfMCAvLyAiQk9YX0MiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NDIKICAgIC8vIHJldHVybiBbdGhpcy5ib3hBLmV4aXN0cywgdGhpcy5ib3hCLmV4aXN0cywgdGhpcy5ib3hDLmV4aXN0cywgdGhpcy5ib3hMYXJnZS5leGlzdHNdIGFzIGNvbnN0CiAgICBib3hfbGVuCiAgICBjb3ZlciAzCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0NwogICAgLy8gYm94TGFyZ2UgPSBCb3g8TGFyZ2VTdHJ1Y3Q+KHsga2V5OiAnYm94TGFyZ2UnIH0pCiAgICBieXRlY18yIC8vICJib3hMYXJnZSIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ0MgogICAgLy8gcmV0dXJuIFt0aGlzLmJveEEuZXhpc3RzLCB0aGlzLmJveEIuZXhpc3RzLCB0aGlzLmJveEMuZXhpc3RzLCB0aGlzLmJveExhcmdlLmV4aXN0c10gYXMgY29uc3QKICAgIGJveF9sZW4KICAgIGNvdmVyIDQKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDQxCiAgICAvLyBib3hlc0V4aXN0KCk6IHJlYWRvbmx5IFtib29sZWFuLCBib29sZWFuLCBib29sZWFuLCBib29sZWFuXSB7CiAgICBwdXNoYnl0ZXMgMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBpbnRjXzAgLy8gMQogICAgdW5jb3ZlciAyCiAgICBzZXRiaXQKICAgIGludGNfMyAvLyAyCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgcHVzaGludCAzCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWMgOSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjpBcmM0Qm94Q29udHJhY3Quc2xpY2VCb3hbcm91dGluZ10oKSAtPiB2b2lkOgpzbGljZUJveDoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ0NwogICAgLy8gYm94MC52YWx1ZSA9IEJ5dGVzKCdUZXN0aW5nIHRlc3RpbmcgMTIzJykKICAgIGJ5dGVjIDEwIC8vICIwIgogICAgYm94X2RlbAogICAgcG9wCiAgICBieXRlYyAxMCAvLyAiMCIKICAgIHB1c2hieXRlcyAiVGVzdGluZyB0ZXN0aW5nIDEyMyIKICAgIGJveF9wdXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ0OAogICAgLy8gYXNzZXJ0KGJveDAudmFsdWUuc2xpY2UoMCwgNykgPT09IEJ5dGVzKCdUZXN0aW5nJykpCiAgICBieXRlYyAxMCAvLyAiMCIKICAgIGludGNfMSAvLyAwCiAgICBwdXNoaW50IDcKICAgIGJveF9leHRyYWN0CiAgICBwdXNoYnl0ZXMgIlRlc3RpbmciCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDMKICAgIC8vIGJveEMgPSBCb3g8YXJjNC5TdHI+KHsga2V5OiAnQk9YX0MnIH0pCiAgICBieXRlY18wIC8vICJCT1hfQyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ1MAogICAgLy8gdGhpcy5ib3hDLnZhbHVlID0gbmV3IGFyYzQuU3RyKCdIZWxsbycpCiAgICBib3hfZGVsCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0MwogICAgLy8gYm94QyA9IEJveDxhcmM0LlN0cj4oeyBrZXk6ICdCT1hfQycgfSkKICAgIGJ5dGVjXzAgLy8gIkJPWF9DIgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDUwCiAgICAvLyB0aGlzLmJveEMudmFsdWUgPSBuZXcgYXJjNC5TdHIoJ0hlbGxvJykKICAgIHB1c2hieXRlcyAweDAwMDU0ODY1NmM2YzZmCiAgICBib3hfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czozNDMKICAgIC8vIGJveEMgPSBCb3g8YXJjNC5TdHI+KHsga2V5OiAnQk9YX0MnIH0pCiAgICBieXRlY18wIC8vICJCT1hfQyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ1MQogICAgLy8gYXNzZXJ0KHRoaXMuYm94Qy52YWx1ZS5ieXRlcy5zbGljZSgyLCAxMCkgPT09IEJ5dGVzKCdIZWxsbycpKQogICAgaW50Y18zIC8vIDIKICAgIHB1c2hpbnQgNQogICAgYm94X2V4dHJhY3QKICAgIHB1c2hieXRlcyAiSGVsbG8iCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NDUKICAgIC8vIHNsaWNlQm94KCkgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjpBcmM0Qm94Q29udHJhY3QuYXJjNEJveFtyb3V0aW5nXSgpIC0+IHZvaWQ6CmFyYzRCb3g6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NTYKICAgIC8vIGJveEQudmFsdWUgPSBuZXcgYXJjNC5TdGF0aWNBcnJheShuZXcgYXJjNC5VaW50OCgwKSwgbmV3IGFyYzQuVWludDgoMSksIG5ldyBhcmM0LlVpbnQ4KDIpLCBuZXcgYXJjNC5VaW50OCgzKSkKICAgIHB1c2hieXRlcyAiZCIKICAgIGJ5dGVjIDcgLy8gMHgwMDAxMDIwMwogICAgYm94X3B1dAogICAgYnl0ZWMgNyAvLyAweDAwMDEwMjAzCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NTcKICAgIC8vIGFzc2VydChib3hELnZhbHVlWzBdLmFzVWludDY0KCkgPT09IDApCiAgICBpbnRjXzEgLy8gMAogICAgZ2V0Ynl0ZQogICAgIQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NTYKICAgIC8vIGJveEQudmFsdWUgPSBuZXcgYXJjNC5TdGF0aWNBcnJheShuZXcgYXJjNC5VaW50OCgwKSwgbmV3IGFyYzQuVWludDgoMSksIG5ldyBhcmM0LlVpbnQ4KDIpLCBuZXcgYXJjNC5VaW50OCgzKSkKICAgIGJ5dGVjIDcgLy8gMHgwMDAxMDIwMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDU4CiAgICAvLyBhc3NlcnQoYm94RC52YWx1ZVsxXS5hc1VpbnQ2NCgpID09PSAxKQogICAgaW50Y18wIC8vIDEKICAgIGdldGJ5dGUKICAgIGludGNfMCAvLyAxCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NTYKICAgIC8vIGJveEQudmFsdWUgPSBuZXcgYXJjNC5TdGF0aWNBcnJheShuZXcgYXJjNC5VaW50OCgwKSwgbmV3IGFyYzQuVWludDgoMSksIG5ldyBhcmM0LlVpbnQ4KDIpLCBuZXcgYXJjNC5VaW50OCgzKSkKICAgIGJ5dGVjIDcgLy8gMHgwMDAxMDIwMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDU5CiAgICAvLyBhc3NlcnQoYm94RC52YWx1ZVsyXS5hc1VpbnQ2NCgpID09PSAyKQogICAgaW50Y18zIC8vIDIKICAgIGdldGJ5dGUKICAgIGludGNfMyAvLyAyCiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0NTYKICAgIC8vIGJveEQudmFsdWUgPSBuZXcgYXJjNC5TdGF0aWNBcnJheShuZXcgYXJjNC5VaW50OCgwKSwgbmV3IGFyYzQuVWludDgoMSksIG5ldyBhcmM0LlVpbnQ4KDIpLCBuZXcgYXJjNC5VaW50OCgzKSkKICAgIGJ5dGVjIDcgLy8gMHgwMDAxMDIwMwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDYwCiAgICAvLyBhc3NlcnQoYm94RC52YWx1ZVszXS5hc1VpbnQ2NCgpID09PSAzKQogICAgcHVzaGludCAzCiAgICBnZXRieXRlCiAgICBwdXNoaW50IDMKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ1NAogICAgLy8gYXJjNEJveCgpIHsKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo6QXJjNEJveENvbnRyYWN0LnRlc3RCb3hSZWZbcm91dGluZ10oKSAtPiB2b2lkOgp0ZXN0Qm94UmVmOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDY2CiAgICAvLyBhc3NlcnQoIWJveFJlZjEuZXhpc3RzLCAnbm8gZGF0YScpCiAgICBieXRlY18xIC8vICJibG9iIgogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICAhCiAgICBhc3NlcnQgLy8gbm8gZGF0YQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDcxCiAgICAvLyBhc3NlcnQoYm94UmVmMS5jcmVhdGUoeyBzaXplOiBVaW50NjQoMzIpIH0pKQogICAgYnl0ZWNfMSAvLyAiYmxvYiIKICAgIHB1c2hpbnQgMzIKICAgIGJveF9jcmVhdGUKICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDc0CiAgICAvLyBjb25zdCBzZW5kZXJCeXRlcyA9IFR4bi5zZW5kZXIuYnl0ZXMKICAgIHR4biBTZW5kZXIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ3NQogICAgLy8gY29uc3QgYXBwQWRkcmVzcyA9IEdsb2JhbC5jdXJyZW50QXBwbGljYXRpb25BZGRyZXNzLmJ5dGVzCiAgICBnbG9iYWwgQ3VycmVudEFwcGxpY2F0aW9uQWRkcmVzcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDc3CiAgICAvLyBib3hSZWYxLnJlcGxhY2UoMCwgc2VuZGVyQnl0ZXMpCiAgICBieXRlY18xIC8vICJibG9iIgogICAgaW50Y18xIC8vIDAKICAgIGRpZyAzCiAgICBib3hfcmVwbGFjZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDc4CiAgICAvLyBib3hSZWYxLnJlc2l6ZSg4MDAwKQogICAgYnl0ZWNfMSAvLyAiYmxvYiIKICAgIHB1c2hpbnQgODAwMAogICAgYm94X3Jlc2l6ZQogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDc5CiAgICAvLyBib3hSZWYxLnNwbGljZSgwLCAwLCBhcHBBZGRyZXNzKQogICAgYnl0ZWNfMSAvLyAiYmxvYiIKICAgIGludGNfMSAvLyAwCiAgICBkdXAKICAgIGRpZyAzCiAgICBib3hfc3BsaWNlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0ODAKICAgIC8vIGJveFJlZjEucmVwbGFjZSg2NCwgdmFsdWUzKQogICAgYnl0ZWNfMSAvLyAiYmxvYiIKICAgIHB1c2hpbnQgNjQKICAgIGJ5dGVjIDE0IC8vICJoZWxsbyIKICAgIGJveF9yZXBsYWNlCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0ODEKICAgIC8vIGNvbnN0IHByZWZpeCA9IGJveFJlZjEuZXh0cmFjdCgwLCAzMiAqIDIgKyB2YWx1ZTMubGVuZ3RoKQogICAgYnl0ZWNfMSAvLyAiYmxvYiIKICAgIGludGNfMSAvLyAwCiAgICBwdXNoaW50IDY5CiAgICBib3hfZXh0cmFjdAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDgyCiAgICAvLyBhc3NlcnQocHJlZml4ID09PSBhcHBBZGRyZXNzLmNvbmNhdChzZW5kZXJCeXRlcykuY29uY2F0KHZhbHVlMykpCiAgICBkaWcgMQogICAgZGlnIDMKICAgIGNvbmNhdAogICAgYnl0ZWMgMTQgLy8gImhlbGxvIgogICAgY29uY2F0CiAgICA9PQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0ODQKICAgIC8vIGJveFJlZjEuZGVsZXRlKCkKICAgIGJ5dGVjXzEgLy8gImJsb2IiCiAgICBib3hfZGVsCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ4NwogICAgLy8gY29uc3QgW3ZhbHVlLCBleGlzdHNdID0gYm94UmVmMS5tYXliZSgpCiAgICBieXRlY18xIC8vICJibG9iIgogICAgYm94X2dldAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDg4CiAgICAvLyBhc3NlcnQoIWV4aXN0cykKICAgIGR1cAogICAgIQogICAgYXNzZXJ0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0ODkKICAgIC8vIGFzc2VydCh2YWx1ZSA9PT0gQnl0ZXMoJycpKQogICAgZGlnIDEKICAgIHB1c2hieXRlcyAiIgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDkwCiAgICAvLyBhc3NlcnQoYm94UmVmMS5nZXQoeyBkZWZhdWx0OiBzZW5kZXJCeXRlcyB9KSA9PT0gc2VuZGVyQnl0ZXMpCiAgICBkaWcgMwogICAgY292ZXIgMgogICAgc2VsZWN0CiAgICBkaWcgMgogICAgPT0KICAgIGFzc2VydAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDkyCiAgICAvLyBib3hSZWYxLnZhbHVlID0gc2VuZGVyQnl0ZXMuY29uY2F0KGFwcEFkZHJlc3MpCiAgICBjb25jYXQKICAgIGJ5dGVjXzEgLy8gImJsb2IiCiAgICBib3hfZGVsCiAgICBwb3AKICAgIGJ5dGVjXzEgLy8gImJsb2IiCiAgICBzd2FwCiAgICBib3hfcHV0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0OTMKICAgIC8vIGFzc2VydChib3hSZWYxLmV4aXN0cywgJ0Jsb2IgZXhpc3RzJykKICAgIGJ5dGVjXzEgLy8gImJsb2IiCiAgICBib3hfbGVuCiAgICBwb3AKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ5NAogICAgLy8gYXNzZXJ0KGJveFJlZjEubGVuZ3RoID09PSA2NCkKICAgIHB1c2hpbnQgNjQKICAgID09CiAgICBhc3NlcnQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM0NgogICAgLy8gYm94UmVmID0gQm94PGJ5dGVzPih7IGtleTogJ2JveFJlZicgfSkKICAgIGJ5dGVjIDE1IC8vICJib3hSZWYiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo0OTcKICAgIC8vIHRoaXMuYm94UmVmLmNyZWF0ZSh7IHNpemU6IFVpbnQ2NCgzMikgfSkKICAgIHB1c2hpbnQgMzIKICAgIGJveF9jcmVhdGUKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzQ2CiAgICAvLyBib3hSZWYgPSBCb3g8Ynl0ZXM+KHsga2V5OiAnYm94UmVmJyB9KQogICAgYnl0ZWMgMTUgLy8gImJveFJlZiIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjQ5OQogICAgLy8gdGhpcy5ib3hSZWYuZGVsZXRlKCkKICAgIGJveF9kZWwKICAgIHBvcAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NDYzCiAgICAvLyB0ZXN0Qm94UmVmKCkgewogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjpBcmM0Qm94Q29udHJhY3Quc2V0Qm9vbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldEJvb2w6CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MDYKICAgIC8vIHNldEJvb2woaW5kZXg6IHVpbnQ2NCwgdmFsdWU6IGJvb2xlYW4pIHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzAgLy8gMQogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC5ib29sCiAgICBpbnRjXzEgLy8gMAogICAgZ2V0Yml0CiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MDcKICAgIC8vIHRoaXMudG9vTWFueUJvb2xzLnZhbHVlW2luZGV4XSA9IHZhbHVlCiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgIC8KICAgIHVuY292ZXIgMgogICAgaW50Y18yIC8vIDgKICAgICUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM1MgogICAgLy8gdG9vTWFueUJvb2xzID0gQm94PEZpeGVkQXJyYXk8Ym9vbGVhbiwgMzNfMDAwPj4oeyBrZXk6ICd0b29NYW55Qm9vbHMnIH0pCiAgICBieXRlYyA2IC8vICJ0b29NYW55Qm9vbHMiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MDcKICAgIC8vIHRoaXMudG9vTWFueUJvb2xzLnZhbHVlW2luZGV4XSA9IHZhbHVlCiAgICBkaWcgMgogICAgaW50Y18wIC8vIDEKICAgIGJveF9leHRyYWN0CiAgICBkaWcgMQogICAgaW50Y18yIC8vIDgKICAgIDwKICAgIGFzc2VydCAvLyBpbmRleCBhY2Nlc3MgaXMgb3V0IG9mIGJvdW5kcwogICAgc3dhcAogICAgdW5jb3ZlciAzCiAgICBzZXRiaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM1MgogICAgLy8gdG9vTWFueUJvb2xzID0gQm94PEZpeGVkQXJyYXk8Ym9vbGVhbiwgMzNfMDAwPj4oeyBrZXk6ICd0b29NYW55Qm9vbHMnIH0pCiAgICBieXRlYyA2IC8vICJ0b29NYW55Qm9vbHMiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MDcKICAgIC8vIHRoaXMudG9vTWFueUJvb2xzLnZhbHVlW2luZGV4XSA9IHZhbHVlCiAgICBjb3ZlciAyCiAgICBib3hfcmVwbGFjZSAvLyBvbiBlcnJvcjogaW5kZXggb3V0IG9mIGJvdW5kcwogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NTA2CiAgICAvLyBzZXRCb29sKGluZGV4OiB1aW50NjQsIHZhbHVlOiBib29sZWFuKSB7CiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6OkFyYzRCb3hDb250cmFjdC5zdW1Cb29sc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CnN1bUJvb2xzOgogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6NTEwCiAgICAvLyBzdW1Cb29scyhzdG9wQXRUb3RhbDogdWludDY0KTogdWludDY0IHsKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIGR1cAogICAgbGVuCiAgICBpbnRjXzIgLy8gOAogICAgPT0KICAgIGFzc2VydCAvLyBpbnZhbGlkIG51bWJlciBvZiBieXRlcyBmb3IgYXJjNC51aW50NjQKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxMQogICAgLy8gZW5zdXJlQnVkZ2V0KDEzXzAwMCkKICAgIHB1c2hpbnQgMTMwMDAKICAgIGludGNfMSAvLyAwCiAgICBjYWxsc3ViIGVuc3VyZV9idWRnZXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxMgogICAgLy8gbGV0IHRvdGFsOiB1aW50NjQgPSAwCiAgICBpbnRjXzEgLy8gMAogICAgLy8gdGVzdHMvYXBwcm92YWxzL2JveC1wcm94aWVzLmFsZ28udHM6MzUyCiAgICAvLyB0b29NYW55Qm9vbHMgPSBCb3g8Rml4ZWRBcnJheTxib29sZWFuLCAzM18wMDA+Pih7IGtleTogJ3Rvb01hbnlCb29scycgfSkKICAgIGJ5dGVjIDYgLy8gInRvb01hbnlCb29scyIKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxMwogICAgLy8gZm9yIChjb25zdCB2YWx1ZSBvZiB0aGlzLnRvb01hbnlCb29scy52YWx1ZSkgewogICAgYm94X2xlbgogICAgYnVyeSAxCiAgICBhc3NlcnQgLy8gQm94IG11c3QgaGF2ZSB2YWx1ZQogICAgaW50Y18xIC8vIDAKCnN1bUJvb2xzX2Zvcl9oZWFkZXJAMjoKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxMwogICAgLy8gZm9yIChjb25zdCB2YWx1ZSBvZiB0aGlzLnRvb01hbnlCb29scy52YWx1ZSkgewogICAgZHVwCiAgICBwdXNoaW50IDMzMDAwCiAgICA8CiAgICBieiBzdW1Cb29sc19ibG9ja0AxMAogICAgZHVwbiAyCiAgICBpbnRjXzIgLy8gOAogICAgLwogICAgc3dhcAogICAgaW50Y18yIC8vIDgKICAgICUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjM1MgogICAgLy8gdG9vTWFueUJvb2xzID0gQm94PEZpeGVkQXJyYXk8Ym9vbGVhbiwgMzNfMDAwPj4oeyBrZXk6ICd0b29NYW55Qm9vbHMnIH0pCiAgICBieXRlYyA2IC8vICJ0b29NYW55Qm9vbHMiCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MTMKICAgIC8vIGZvciAoY29uc3QgdmFsdWUgb2YgdGhpcy50b29NYW55Qm9vbHMudmFsdWUpIHsKICAgIHVuY292ZXIgMgogICAgaW50Y18wIC8vIDEKICAgIGJveF9leHRyYWN0IC8vIG9uIGVycm9yOiBpbmRleCBvdXQgb2YgYm91bmRzCiAgICBzd2FwCiAgICBnZXRiaXQKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxNAogICAgLy8gaWYgKHZhbHVlKSB7CiAgICBieiBzdW1Cb29sc19hZnRlcl9pZl9lbHNlQDUKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxNQogICAgLy8gdG90YWwgKz0gMQogICAgc3dhcAogICAgaW50Y18wIC8vIDEKICAgICsKICAgIHN3YXAKCnN1bUJvb2xzX2FmdGVyX2lmX2Vsc2VANToKICAgIC8vIHRlc3RzL2FwcHJvdmFscy9ib3gtcHJveGllcy5hbGdvLnRzOjUxNwogICAgLy8gaWYgKHRvdGFsID09PSBzdG9wQXRUb3RhbCkgewogICAgZGlnIDEKICAgIGRpZyAzCiAgICA9PQogICAgYm56IHN1bUJvb2xzX2Jsb2NrQDEwCiAgICBpbnRjXzAgLy8gMQogICAgKwogICAgYiBzdW1Cb29sc19mb3JfaGVhZGVyQDIKCnN1bUJvb2xzX2Jsb2NrQDEwOgogICAgcG9wCiAgICAvLyB0ZXN0cy9hcHByb3ZhbHMvYm94LXByb3hpZXMuYWxnby50czo1MTAKICAgIC8vIHN1bUJvb2xzKHN0b3BBdFRvdGFsOiB1aW50NjQpOiB1aW50NjQgewogICAgaXRvYgogICAgYnl0ZWMgOSAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBAYWxnb3JhbmRmb3VuZGF0aW9uL2FsZ29yYW5kLXR5cGVzY3JpcHQvYmFzZS1jb250cmFjdC5kLnRzOjpCYXNlQ29udHJhY3QuY2xlYXJTdGF0ZVByb2dyYW0oKSAtPiB1aW50NjQ6Cm1haW46CiAgICBwdXNoaW50IDEKICAgIHJldHVybgo=" }, "byteCode": { "approval": "CyAFAQAIAoAgJhAFQk9YX0MEYmxvYghib3hMYXJnZQRib3hBBGJveEQBYgx0b29NYW55Qm9vbHMEAAECAwhtYW55SW50cwQVH3x1ATADBoEBBAACNDICNDIFaGVsbG8GYm94UmVmMRtBAIwxGRREMRhEgg8EJ/draQSRI2F6BPcmOUgECby6XgR6DT3IBH0Dm0MEO8Oy+QTc3mFNBOE5FyEEaDtcZASlpib+BJA57d4EKLLiQQSNztebBBx39JY2GgCODwBXABMACgJNAmkCmwLbAuwDMQNgA6sD0AABBDUEZgAnBoGdILlIIkMnCIGIILlIIkMiQzEZFDEYFBBDigIAi/6BCghJMgwNQQAqsYEGshCBBbIZJwuyHicLsh+L/40CAAsABLNC/9wyALIBQv/1I7IBQv/viTYaAUkVJBJEFzYaAkkjWSUISwEVSU8CEkRLAVcCADYaA0kjWSUISwEVSU8CEkRPBRYrTL8nBbxIJwVLBb8ovEgoSwK/JwS8SCcESwO/KoGQMLlIgSoWKiEESwK7KiEETwK7K75EF4EDCBYrTL8rvUgkEkQnBb1ITwQSRCi9RElLAhJEJwS9SEsEFUoSRCgjIrpLBVcAARJESwIiCShMIrpLBCIJSwZMIlgSRCNLAw8jSwRPAk0iSwQPIksFTwJNSwRMCUlLAgxLAkxNSwEJKEsCTwK6I0sGDyNLB08CTSJLBw8iSwhPAk1LB0wJSUsCDEsCTE1LCEsCTwJSTwISRCVLBQ8lTwZPAk1LAgkoTwNPArolSwUPJU8GTwJNTwVPA08CUhJEJwQjIrpPBFcCARJESwEiCScETCK6SwEiCUsETCJYEkQjSwIPI0sDTwJNIksDDyJLBE8CTUsDTAlJSwIMSwJMTUsBCScESwJPArojSwMPI0sETwJNIksEDyJLBU8CTUsETAlJSwIMSwJMTUsGSwJPAlJPAhJEgQVLBA+BBUsFTwJNSwIJJwRLA08CuoEFSwQPgQVLBU8CTUsGSwNPAlISRCVLBA8lTwVPAk1LAgknBE8DTwK6JUsDDyVPBE8CTU8DTwNPAlISRCq9SIGQMBJEIkM2GgFJFSQSRBc2GgJJFSQSREwkCycITE8CuyJDgYRSI4j9rSMnCL1FAUQjSYGBBAxBABJJJAsnCEwkuhdPAghMIghC/+ZIFicJTFCwIkMrvEgnBbxIKLxIK75MF4EqSwFLA02BKhJEJwW+JwxOAk1XAgAnDRJEKL4nDE4CTVcCACcNEkRMFEQURCq8SCJDKiEEJLoXIggWKiEETwK7IkMrvkQXIggiCScFvkRXAgAovkQqIQQkuhdPAxZLAxUWVwYCTwRQTIACABRQSwEVgRQIFlcGAlBPAhZQTFBMUCcJTFCwIkMrvUUBJwW9TgJIKL1OA0gqvU4ESIABACNPAlQiTwJUJU8CVIEDTwJUJwlMULAiQycKvEgnCoATVGVzdGluZyB0ZXN0aW5nIDEyM78nCiOBB7qAB1Rlc3RpbmcSRCi8SCiABwAFSGVsbG+/KCWBBbqABUhlbGxvEkQiQ4ABZCcHvycHI1UURCcHIlUiEkQnByVVJRJEJweBA1WBAxJEIkMpvUUBFEQpgSC5RDEAMgopI0sDuymBwD7TKSNJSwPSKYFAJw67KSOBRbpLAUsDUCcOUBJEKbxIKb5JFERLAYAAEkRLA04CTUsCEkRQKbxIKUy/Kb1IgUASRCcPgSC5SCcPvEgiQzYaAUkVJBJEFzYaAkkVIhJEI1NLASQKTwIkGCcGSwIiuksBJAxETE8DVCcGTgK7IkM2GgFJFSQSRBeByGUjiPunIycGvUUBRCNJgeiBAgxBACNHAiQKTCQYJwZPAiK6TFNBAARMIghMSwFLAxJAAAUiCEL/1EgWJwlMULAiQw==", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 10, "patch": 0 } }, "events": [], "templateVariables": {} }