{ "name": "LocalMapContract", "structs": {}, "methods": [ { "name": "opt_in", "args": [], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "OptIn" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_string", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "string" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_byte", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "byte" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_bool", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_address", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "address" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_uint128", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "uint128" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_arc4_dynamic_bytes", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "byte[]" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_implicit_key_tuple", "args": [ { "type": "address", "name": "a" }, { "type": "(uint64,byte[],bool)", "name": "key" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_string", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "string", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_byte", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "byte", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_bool", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "bool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_address", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "address", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_uint128", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "uint128", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_arc4_dynamic_bytes", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "byte[]", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_implicit_key_tuple", "args": [ { "type": "address", "name": "a" }, { "type": "(uint64,byte[],bool)", "name": "key" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "delete_implicit_key_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "contains_implicit_key_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "maybe_implicit_key_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "(uint64,bool)" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_default_implicit_key_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "uint64", "name": "default" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "uint64" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_arc4_string", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "string" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "get_arc4_bool", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" } ], "returns": { "type": "bool" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_arc4_uint", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "uint64", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_arc4_string", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "string", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} }, { "name": "set_arc4_bool", "args": [ { "type": "address", "name": "a" }, { "type": "uint64", "name": "key" }, { "type": "bool", "name": "value" } ], "returns": { "type": "void" }, "actions": { "create": [], "call": [ "NoOp" ] }, "readonly": false, "events": [], "recommendations": {} } ], "arcs": [ 22, 28 ], "networks": {}, "state": { "schema": { "global": { "ints": 0, "bytes": 0 }, "local": { "ints": 0, "bytes": 0 } }, "keys": { "global": {}, "local": {}, "box": {} }, "maps": { "global": {}, "local": { "implicit_key_arc4_uint": { "keyType": "uint64", "valueType": "uint64", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfdWludA==" }, "implicit_key_arc4_string": { "keyType": "uint64", "valueType": "string", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfc3RyaW5n" }, "implicit_key_arc4_byte": { "keyType": "uint64", "valueType": "byte", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfYnl0ZQ==" }, "implicit_key_arc4_bool": { "keyType": "uint64", "valueType": "bool", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfYm9vbA==" }, "implicit_key_arc4_address": { "keyType": "uint64", "valueType": "address", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfYWRkcmVzcw==" }, "implicit_key_arc4_uint128": { "keyType": "uint64", "valueType": "uint128", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfdWludDEyOA==" }, "implicit_key_arc4_dynamic_bytes": { "keyType": "uint64", "valueType": "byte[]", "prefix": "aW1wbGljaXRfa2V5X2FyYzRfZHluYW1pY19ieXRlcw==" }, "implicit_key_tuple": { "keyType": "(uint64,byte[],bool)", "valueType": "AVMUint64", "prefix": "aW1wbGljaXRfa2V5X3R1cGxl" }, "arc4_uint": { "keyType": "uint64", "valueType": "uint64", "prefix": "ZXhwbGljaXRfYXJjNF91aW50" }, "arc4_string": { "keyType": "uint64", "valueType": "string", "prefix": "ZXhwbGljaXRfYXJjNF9zdHJpbmc=" }, "arc4_bool": { "keyType": "uint64", "valueType": "bool", "prefix": "ZXhwbGljaXRfYXJjNF9ib29s" } }, "box": {} } }, "bareActions": { "create": [ "NoOp" ], "call": [] }, "sourceInfo": { "approval": { "sourceInfo": [ { "pc": [ 1457 ], "errorMessage": "check self.arc4_bool entry exists for account" }, { "pc": [ 1435 ], "errorMessage": "check self.arc4_string entry exists for account" }, { "pc": [ 1413 ], "errorMessage": "check self.arc4_uint entry exists for account" }, { "pc": [ 1074 ], "errorMessage": "check self.implicit_key_arc4_address entry exists for account" }, { "pc": [ 1052 ], "errorMessage": "check self.implicit_key_arc4_bool entry exists for account" }, { "pc": [ 1030 ], "errorMessage": "check self.implicit_key_arc4_byte entry exists for account" }, { "pc": [ 1118 ], "errorMessage": "check self.implicit_key_arc4_dynamic_bytes entry exists for account" }, { "pc": [ 1008 ], "errorMessage": "check self.implicit_key_arc4_string entry exists for account" }, { "pc": [ 986 ], "errorMessage": "check self.implicit_key_arc4_uint entry exists for account" }, { "pc": [ 1096 ], "errorMessage": "check self.implicit_key_arc4_uint128 entry exists for account" }, { "pc": [ 1137 ], "errorMessage": "check self.implicit_key_tuple entry exists for account" } ], "pcOffsetMethod": "none" }, "clear": { "sourceInfo": [], "pcOffsetMethod": "none" } }, "source": { "approval": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuYXBwcm92YWxfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIGludGNibG9jayAxIDAKICAgIGJ5dGVjYmxvY2sgMHgxNTFmN2M3NSAiaW1wbGljaXRfa2V5X2FyYzRfdWludCIgMHgwMCAweDAwMDAwMDAwMDAwMDA1MzkgMHgwMDA1NDg2NTZjNmM2ZiAiaW1wbGljaXRfa2V5X2FyYzRfc3RyaW5nIiAiaW1wbGljaXRfa2V5X2FyYzRfYnl0ZSIgImltcGxpY2l0X2tleV9hcmM0X2Jvb2wiICJpbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzIiAiaW1wbGljaXRfa2V5X2FyYzRfdWludDEyOCIgImltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXMiICJpbXBsaWNpdF9rZXlfdHVwbGUiICJleHBsaWNpdF9hcmM0X3VpbnQiICJleHBsaWNpdF9hcmM0X3N0cmluZyIgMHg2NTc4NzA2YzY5NjM2OTc0NWY2MTcyNjMzNDVmNjI2ZjZmNmMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5MDYKICAgIC8vIGNsYXNzIExvY2FsTWFwQ29udHJhY3QoQVJDNENvbnRyYWN0KToKICAgIHR4biBOdW1BcHBBcmdzCiAgICBieiBtYWluX19fYWxnb3B5X2RlZmF1bHRfY3JlYXRlQDM3CiAgICBwdXNoYnl0ZXMgMHgzMGM2ZDU4YSAvLyBtZXRob2QgIm9wdF9pbigpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIG1haW5fb3B0X2luX3JvdXRlQDUKCm1haW5fc3dpdGNoX2Nhc2VfbmV4dEA2OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkwNgogICAgLy8gY2xhc3MgTG9jYWxNYXBDb250cmFjdChBUkM0Q29udHJhY3QpOgogICAgdHhuIE9uQ29tcGxldGlvbgogICAgIQogICAgYXNzZXJ0CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgYXNzZXJ0CiAgICBwdXNoYnl0ZXNzIDB4OGI0MmZmNjkgMHhmMGRiYTQyZCAweGFmYTY3MWU0IDB4MmM1YzNhNDcgMHhmM2ZiZDljNCAweDk4YzVkYjQ3IDB4YmQyNWRjMGEgMHgxNmNlMjgwNCAweDdlYWQ2NjY2IDB4YzgxZDFmYzAgMHhkZDRjNDQ2OCAweDBmMWM2YTNiIDB4NTQ4NWJhMGEgMHhjZDgwNDJiNCAweDY2OTRlOGY4IDB4MTJkNzUwMGEgMHg3MDk4MjA0YyAweDE0ZWZlYjlhIDB4Y2ZjMjJmNTggMHg5MzRmNmY0MiAweDEzNjQzNTBiIDB4NzQ5NTM1NzUgMHg1MTU1NTIyMSAweGM1ZmMyN2NhIDB4YmM4ZWFmZWQgMHg0ZDgyMzE3MCAvLyBtZXRob2QgImdldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50KGFkZHJlc3MsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAiZ2V0X2ltcGxpY2l0X2tleV9hcmM0X3N0cmluZyhhZGRyZXNzLHVpbnQ2NClzdHJpbmciLCBtZXRob2QgImdldF9pbXBsaWNpdF9rZXlfYXJjNF9ieXRlKGFkZHJlc3MsdWludDY0KWJ5dGUiLCBtZXRob2QgImdldF9pbXBsaWNpdF9rZXlfYXJjNF9ib29sKGFkZHJlc3MsdWludDY0KWJvb2wiLCBtZXRob2QgImdldF9pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzKGFkZHJlc3MsdWludDY0KWFkZHJlc3MiLCBtZXRob2QgImdldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4KGFkZHJlc3MsdWludDY0KXVpbnQxMjgiLCBtZXRob2QgImdldF9pbXBsaWNpdF9rZXlfYXJjNF9keW5hbWljX2J5dGVzKGFkZHJlc3MsdWludDY0KWJ5dGVbXSIsIG1ldGhvZCAiZ2V0X2ltcGxpY2l0X2tleV90dXBsZShhZGRyZXNzLCh1aW50NjQsYnl0ZVtdLGJvb2wpKXVpbnQ2NCIsIG1ldGhvZCAic2V0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnQoYWRkcmVzcyx1aW50NjQsdWludDY0KXZvaWQiLCBtZXRob2QgInNldF9pbXBsaWNpdF9rZXlfYXJjNF9zdHJpbmcoYWRkcmVzcyx1aW50NjQsc3RyaW5nKXZvaWQiLCBtZXRob2QgInNldF9pbXBsaWNpdF9rZXlfYXJjNF9ieXRlKGFkZHJlc3MsdWludDY0LGJ5dGUpdm9pZCIsIG1ldGhvZCAic2V0X2ltcGxpY2l0X2tleV9hcmM0X2Jvb2woYWRkcmVzcyx1aW50NjQsYm9vbCl2b2lkIiwgbWV0aG9kICJzZXRfaW1wbGljaXRfa2V5X2FyYzRfYWRkcmVzcyhhZGRyZXNzLHVpbnQ2NCxhZGRyZXNzKXZvaWQiLCBtZXRob2QgInNldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4KGFkZHJlc3MsdWludDY0LHVpbnQxMjgpdm9pZCIsIG1ldGhvZCAic2V0X2ltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXMoYWRkcmVzcyx1aW50NjQsYnl0ZVtdKXZvaWQiLCBtZXRob2QgInNldF9pbXBsaWNpdF9rZXlfdHVwbGUoYWRkcmVzcywodWludDY0LGJ5dGVbXSxib29sKSx1aW50NjQpdm9pZCIsIG1ldGhvZCAiZGVsZXRlX2ltcGxpY2l0X2tleV9hcmM0X3VpbnQoYWRkcmVzcyx1aW50NjQpdm9pZCIsIG1ldGhvZCAiY29udGFpbnNfaW1wbGljaXRfa2V5X2FyYzRfdWludChhZGRyZXNzLHVpbnQ2NClib29sIiwgbWV0aG9kICJtYXliZV9pbXBsaWNpdF9rZXlfYXJjNF91aW50KGFkZHJlc3MsdWludDY0KSh1aW50NjQsYm9vbCkiLCBtZXRob2QgImdldF9kZWZhdWx0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnQoYWRkcmVzcyx1aW50NjQsdWludDY0KXVpbnQ2NCIsIG1ldGhvZCAiZ2V0X2FyYzRfdWludChhZGRyZXNzLHVpbnQ2NCl1aW50NjQiLCBtZXRob2QgImdldF9hcmM0X3N0cmluZyhhZGRyZXNzLHVpbnQ2NClzdHJpbmciLCBtZXRob2QgImdldF9hcmM0X2Jvb2woYWRkcmVzcyx1aW50NjQpYm9vbCIsIG1ldGhvZCAic2V0X2FyYzRfdWludChhZGRyZXNzLHVpbnQ2NCx1aW50NjQpdm9pZCIsIG1ldGhvZCAic2V0X2FyYzRfc3RyaW5nKGFkZHJlc3MsdWludDY0LHN0cmluZyl2b2lkIiwgbWV0aG9kICJzZXRfYXJjNF9ib29sKGFkZHJlc3MsdWludDY0LGJvb2wpdm9pZCIKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDAKICAgIG1hdGNoIGdldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50IGdldF9pbXBsaWNpdF9rZXlfYXJjNF9zdHJpbmcgZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2J5dGUgZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2Jvb2wgZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2FkZHJlc3MgZ2V0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnQxMjggZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXMgZ2V0X2ltcGxpY2l0X2tleV90dXBsZSBzZXRfaW1wbGljaXRfa2V5X2FyYzRfdWludCBzZXRfaW1wbGljaXRfa2V5X2FyYzRfc3RyaW5nIHNldF9pbXBsaWNpdF9rZXlfYXJjNF9ieXRlIHNldF9pbXBsaWNpdF9rZXlfYXJjNF9ib29sIHNldF9pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzIHNldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4IHNldF9pbXBsaWNpdF9rZXlfYXJjNF9keW5hbWljX2J5dGVzIHNldF9pbXBsaWNpdF9rZXlfdHVwbGUgZGVsZXRlX2ltcGxpY2l0X2tleV9hcmM0X3VpbnQgY29udGFpbnNfaW1wbGljaXRfa2V5X2FyYzRfdWludCBtYXliZV9pbXBsaWNpdF9rZXlfYXJjNF91aW50IGdldF9kZWZhdWx0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnQgZ2V0X2FyYzRfdWludCBnZXRfYXJjNF9zdHJpbmcgZ2V0X2FyYzRfYm9vbCBzZXRfYXJjNF91aW50IHNldF9hcmM0X3N0cmluZyBzZXRfYXJjNF9ib29sCiAgICBlcnIKCm1haW5fb3B0X2luX3JvdXRlQDU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTIzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoYWxsb3dfYWN0aW9ucz1bIk9wdEluIl0pCiAgICB0eG4gT25Db21wbGV0aW9uCiAgICBpbnRjXzAgLy8gT3B0SW4KICAgID09CiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgJiYKICAgIGFzc2VydAogICAgYiBvcHRfaW4KCm1haW5fX19hbGdvcHlfZGVmYXVsdF9jcmVhdGVAMzc6CiAgICB0eG4gT25Db21wbGV0aW9uCiAgICAhCiAgICB0eG4gQXBwbGljYXRpb25JRAogICAgIQogICAgJiYKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0Lm9wdF9pbltyb3V0aW5nXSgpIC0+IHZvaWQ6Cm9wdF9pbjoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5MjYKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfdWludFtHbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCBrZXldID0gYXJjNC5VSW50NjQoMTMzNykKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgcHVzaGJ5dGVzIDB4Njk2ZDcwNmM2OTYzNjk3NDVmNmI2NTc5NWY2MTcyNjMzNDVmNzU2OTZlNzQwMDAwMDAwMDAwMDAwMDAwCiAgICBieXRlY18zIC8vIDB4MDAwMDAwMDAwMDAwMDUzOQogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkyNwogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9zdHJpbmdbR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywga2V5XSA9IGFyYzQuU3RyaW5nKCJIZWxsbyIpCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIHB1c2hieXRlcyAweDY5NmQ3MDZjNjk2MzY5NzQ1ZjZiNjU3OTVmNjE3MjYzMzQ1ZjczNzQ3MjY5NmU2NzAwMDAwMDAwMDAwMDAwMDAKICAgIGJ5dGVjIDQgLy8gMHgwMDA1NDg2NTZjNmM2ZgogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkyOAogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9ieXRlW0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIGtleV0gPSBhcmM0LkJ5dGUoMCkKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgcHVzaGJ5dGVzIDB4Njk2ZDcwNmM2OTYzNjk3NDVmNmI2NTc5NWY2MTcyNjMzNDVmNjI3OTc0NjUwMDAwMDAwMDAwMDAwMDAwCiAgICBieXRlY18yIC8vIDB4MDAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5MjkKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfYm9vbFtHbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCBrZXldID0gYXJjNC5Cb29sKFRydWUpCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIHB1c2hieXRlc3MgMHg2OTZkNzA2YzY5NjM2OTc0NWY2YjY1Nzk1ZjYxNzI2MzM0NWY2MjZmNmY2YzAwMDAwMDAwMDAwMDAwMDAgMHg4MAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkzMAogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzW0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIGtleV0gPSBhcmM0LkFkZHJlc3MoCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIHB1c2hieXRlcyAweDY5NmQ3MDZjNjk2MzY5NzQ1ZjZiNjU3OTVmNjE3MjYzMzQ1ZjYxNjQ2NDcyNjU3MzczMDAwMDAwMDAwMDAwMDAwMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkzMQogICAgLy8gR2xvYmFsLmNyZWF0b3JfYWRkcmVzcwogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTMwLTkzMgogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzW0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIGtleV0gPSBhcmM0LkFkZHJlc3MoCiAgICAvLyAgICAgR2xvYmFsLmNyZWF0b3JfYWRkcmVzcwogICAgLy8gKQogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkzMwogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4W0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIGtleV0gPSBhcmM0LlVJbnQxMjgoMioqMTAwKQogICAgZ2xvYmFsIENyZWF0b3JBZGRyZXNzCiAgICBwdXNoYnl0ZXNzIDB4Njk2ZDcwNmM2OTYzNjk3NDVmNmI2NTc5NWY2MTcyNjMzNDVmNzU2OTZlNzQzMTMyMzgwMDAwMDAwMDAwMDAwMDAwIDB4MDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5MzQKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfZHluYW1pY19ieXRlc1tHbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCBrZXldID0gYXJjNC5EeW5hbWljQnl0ZXMoCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5MzQtOTM2CiAgICAvLyBzZWxmLmltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXNbR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywga2V5XSA9IGFyYzQuRHluYW1pY0J5dGVzKAogICAgLy8gICAgIGIiZHluYW1pYyBieXRlcyIKICAgIC8vICkKICAgIHB1c2hieXRlc3MgMHg2OTZkNzA2YzY5NjM2OTc0NWY2YjY1Nzk1ZjYxNzI2MzM0NWY2NDc5NmU2MTZkNjk2MzVmNjI3OTc0NjU3MzAwMDAwMDAwMDAwMDAwMDAgMHgwMDBkNjQ3OTZlNjE2ZDY5NjMyMDYyNzk3NDY1NzMKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5MzcKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X3R1cGxlW0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIChVSW50NjQoMTApLCBCeXRlcyhiInRlc3QiKSwgRmFsc2UpXSA9ICgKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgcHVzaGJ5dGVzIDB4Njk2ZDcwNmM2OTYzNjk3NDVmNmI2NTc5NWY3NDc1NzA2YzY1MDAwMDAwMDAwMDAwMDAwYTAwMGIwMDAwMDQ3NDY1NzM3NAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkzOAogICAgLy8gVUludDY0KDEwKQogICAgcHVzaGludCAxMAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkzNy05MzkKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X3R1cGxlW0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIChVSW50NjQoMTApLCBCeXRlcyhiInRlc3QiKSwgRmFsc2UpXSA9ICgKICAgIC8vICAgICBVSW50NjQoMTApCiAgICAvLyApCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTQxCiAgICAvLyBzZWxmLmFyYzRfdWludFtHbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCBrZXldID0gYXJjNC5VSW50NjQoMTMzNykKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgcHVzaGJ5dGVzIDB4NjU3ODcwNmM2OTYzNjk3NDVmNjE3MjYzMzQ1Zjc1Njk2ZTc0MDAwMDAwMDAwMDAwMDAwMAogICAgYnl0ZWNfMyAvLyAweDAwMDAwMDAwMDAwMDA1MzkKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NDIKICAgIC8vIHNlbGYuYXJjNF9zdHJpbmdbR2xvYmFsLmNyZWF0b3JfYWRkcmVzcywga2V5XSA9IGFyYzQuU3RyaW5nKCJIZWxsbyIpCiAgICBnbG9iYWwgQ3JlYXRvckFkZHJlc3MKICAgIHB1c2hieXRlcyAweDY1Nzg3MDZjNjk2MzY5NzQ1ZjYxNzI2MzM0NWY3Mzc0NzI2OTZlNjcwMDAwMDAwMDAwMDAwMDAwCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTI3CiAgICAvLyBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3N0cmluZ1tHbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCBrZXldID0gYXJjNC5TdHJpbmcoIkhlbGxvIikKICAgIGJ5dGVjIDQgLy8gMHgwMDA1NDg2NTZjNmM2ZgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk0MgogICAgLy8gc2VsZi5hcmM0X3N0cmluZ1tHbG9iYWwuY3JlYXRvcl9hZGRyZXNzLCBrZXldID0gYXJjNC5TdHJpbmcoIkhlbGxvIikKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NDMKICAgIC8vIHNlbGYuYXJjNF9ib29sW0dsb2JhbC5jcmVhdG9yX2FkZHJlc3MsIGtleV0gPSBhcmM0LkJvb2woVHJ1ZSkKICAgIGdsb2JhbCBDcmVhdG9yQWRkcmVzcwogICAgcHVzaGJ5dGVzcyAweDY1Nzg3MDZjNjk2MzY5NzQ1ZjYxNzI2MzM0NWY2MjZmNmY2YzAwMDAwMDAwMDAwMDAwMDAgMHg4MAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjkyMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKGFsbG93X2FjdGlvbnM9WyJPcHRJbiJdKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmdldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTQ1LTk0NgogICAgLy8gIyAtLS0gSW1wbGljaXQga2V5X3ByZWZpeDogZ2V0dGVycyAtLS0KICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTQ4CiAgICAvLyByZXR1cm4gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF91aW50W2EsIGtleV0KICAgIGl0b2IKICAgIGJ5dGVjXzEgLy8gImltcGxpY2l0X2tleV9hcmM0X3VpbnQiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMSAvLyAwCiAgICBzd2FwCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF91aW50IGVudHJ5IGV4aXN0cyBmb3IgYWNjb3VudAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk0NS05NDYKICAgIC8vICMgLS0tIEltcGxpY2l0IGtleV9wcmVmaXg6IGdldHRlcnMgLS0tCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmdldF9pbXBsaWNpdF9rZXlfYXJjNF9zdHJpbmdbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfaW1wbGljaXRfa2V5X2FyYzRfc3RyaW5nOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk1MAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NTIKICAgIC8vIHJldHVybiBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3N0cmluZ1thLCBrZXldCiAgICBpdG9iCiAgICBieXRlYyA1IC8vICJpbXBsaWNpdF9rZXlfYXJjNF9zdHJpbmciCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMSAvLyAwCiAgICBzd2FwCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9zdHJpbmcgZW50cnkgZXhpc3RzIGZvciBhY2NvdW50CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTUwCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmdldF9pbXBsaWNpdF9rZXlfYXJjNF9ieXRlW3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2J5dGU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTU0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk1NgogICAgLy8gcmV0dXJuIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfYnl0ZVthLCBrZXldCiAgICBpdG9iCiAgICBieXRlYyA2IC8vICJpbXBsaWNpdF9rZXlfYXJjNF9ieXRlIgogICAgc3dhcAogICAgY29uY2F0CiAgICBpbnRjXzEgLy8gMAogICAgc3dhcAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfYnl0ZSBlbnRyeSBleGlzdHMgZm9yIGFjY291bnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NTQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3QuZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2Jvb2xbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfaW1wbGljaXRfa2V5X2FyYzRfYm9vbDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NTgKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTYwCiAgICAvLyByZXR1cm4gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9ib29sW2EsIGtleV0KICAgIGl0b2IKICAgIGJ5dGVjIDcgLy8gImltcGxpY2l0X2tleV9hcmM0X2Jvb2wiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMSAvLyAwCiAgICBzd2FwCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9ib29sIGVudHJ5IGV4aXN0cyBmb3IgYWNjb3VudAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk1OAogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5nZXRfaW1wbGljaXRfa2V5X2FyYzRfYWRkcmVzc1tyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF9pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk2MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NjQKICAgIC8vIHJldHVybiBzZWxmLmltcGxpY2l0X2tleV9hcmM0X2FkZHJlc3NbYSwga2V5XQogICAgaXRvYgogICAgYnl0ZWMgOCAvLyAiaW1wbGljaXRfa2V5X2FyYzRfYWRkcmVzcyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgaW50Y18xIC8vIDAKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmltcGxpY2l0X2tleV9hcmM0X2FkZHJlc3MgZW50cnkgZXhpc3RzIGZvciBhY2NvdW50CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTYyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmdldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnQxMjg6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTY2CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk2OAogICAgLy8gcmV0dXJuIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfdWludDEyOFthLCBrZXldCiAgICBpdG9iCiAgICBieXRlYyA5IC8vICJpbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4IgogICAgc3dhcAogICAgY29uY2F0CiAgICBpbnRjXzEgLy8gMAogICAgc3dhcAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfdWludDEyOCBlbnRyeSBleGlzdHMgZm9yIGFjY291bnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NjYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3QuZ2V0X2ltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXNbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfaW1wbGljaXRfa2V5X2FyYzRfZHluYW1pY19ieXRlczoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTcyCiAgICAvLyByZXR1cm4gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9keW5hbWljX2J5dGVzW2EsIGtleV0KICAgIGl0b2IKICAgIGJ5dGVjIDEwIC8vICJpbXBsaWNpdF9rZXlfYXJjNF9keW5hbWljX2J5dGVzIgogICAgc3dhcAogICAgY29uY2F0CiAgICBpbnRjXzEgLy8gMAogICAgc3dhcAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYXNzZXJ0IC8vIGNoZWNrIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfZHluYW1pY19ieXRlcyBlbnRyeSBleGlzdHMgZm9yIGFjY291bnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NzAKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3QuZ2V0X2ltcGxpY2l0X2tleV90dXBsZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CmdldF9pbXBsaWNpdF9rZXlfdHVwbGU6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk3NgogICAgLy8gcmV0dXJuIHNlbGYuaW1wbGljaXRfa2V5X3R1cGxlW2EsIGtleV0KICAgIGJ5dGVjIDExIC8vICJpbXBsaWNpdF9rZXlfdHVwbGUiCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTc0CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk3NgogICAgLy8gcmV0dXJuIHNlbGYuaW1wbGljaXRfa2V5X3R1cGxlW2EsIGtleV0KICAgIGNvbmNhdAogICAgaW50Y18xIC8vIDAKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIGFzc2VydCAvLyBjaGVjayBzZWxmLmltcGxpY2l0X2tleV90dXBsZSBlbnRyeSBleGlzdHMgZm9yIGFjY291bnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NzQKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpdG9iCiAgICBieXRlY18wIC8vIDB4MTUxZjdjNzUKICAgIHN3YXAKICAgIGNvbmNhdAogICAgbG9nCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3Quc2V0X2ltcGxpY2l0X2tleV9hcmM0X3VpbnRbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfaW1wbGljaXRfa2V5X2FyYzRfdWludDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NzgtOTc5CiAgICAvLyAjIC0tLSBJbXBsaWNpdCBrZXlfcHJlZml4OiBzZXR0ZXJzIC0tLQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5ODEKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfdWludFthLCBrZXldID0gdmFsdWUKICAgIHN3YXAKICAgIGl0b2IKICAgIGJ5dGVjXzEgLy8gImltcGxpY2l0X2tleV9hcmM0X3VpbnQiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5NzgtOTc5CiAgICAvLyAjIC0tLSBJbXBsaWNpdCBrZXlfcHJlZml4OiBzZXR0ZXJzIC0tLQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5zZXRfaW1wbGljaXRfa2V5X2FyYzRfc3RyaW5nW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X2ltcGxpY2l0X2tleV9hcmM0X3N0cmluZzoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5ODMKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTg1CiAgICAvLyBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3N0cmluZ1thLCBrZXldID0gdmFsdWUKICAgIHN3YXAKICAgIGl0b2IKICAgIGJ5dGVjIDUgLy8gImltcGxpY2l0X2tleV9hcmM0X3N0cmluZyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk4MwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5zZXRfaW1wbGljaXRfa2V5X2FyYzRfYnl0ZVtyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9pbXBsaWNpdF9rZXlfYXJjNF9ieXRlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk4NwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5ODkKICAgIC8vIHNlbGYuaW1wbGljaXRfa2V5X2FyYzRfYnl0ZVthLCBrZXldID0gdmFsdWUKICAgIHN3YXAKICAgIGl0b2IKICAgIGJ5dGVjIDYgLy8gImltcGxpY2l0X2tleV9hcmM0X2J5dGUiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5ODcKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3Quc2V0X2ltcGxpY2l0X2tleV9hcmM0X2Jvb2xbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfaW1wbGljaXRfa2V5X2FyYzRfYm9vbDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weTo5OTEKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTkzCiAgICAvLyBzZWxmLmltcGxpY2l0X2tleV9hcmM0X2Jvb2xbYSwga2V5XSA9IHZhbHVlCiAgICBzd2FwCiAgICBpdG9iCiAgICBieXRlYyA3IC8vICJpbXBsaWNpdF9rZXlfYXJjNF9ib29sIgogICAgc3dhcAogICAgY29uY2F0CiAgICBzd2FwCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTkxCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LnNldF9pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X2ltcGxpY2l0X2tleV9hcmM0X2FkZHJlc3M6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTk1CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk5NwogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzW2EsIGtleV0gPSB2YWx1ZQogICAgc3dhcAogICAgaXRvYgogICAgYnl0ZWMgOCAvLyAiaW1wbGljaXRfa2V5X2FyYzRfYWRkcmVzcyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk5NQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5zZXRfaW1wbGljaXRfa2V5X2FyYzRfdWludDEyOFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9pbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5Ojk5OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDAxCiAgICAvLyBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3VpbnQxMjhbYSwga2V5XSA9IHZhbHVlCiAgICBzd2FwCiAgICBpdG9iCiAgICBieXRlYyA5IC8vICJpbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4IgogICAgc3dhcAogICAgY29uY2F0CiAgICBzd2FwCiAgICBhcHBfbG9jYWxfcHV0CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6OTk5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LnNldF9pbXBsaWNpdF9rZXlfYXJjNF9keW5hbWljX2J5dGVzW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X2ltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXM6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTAwMwogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDA3CiAgICAvLyBzZWxmLmltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXNbYSwga2V5XSA9IHZhbHVlLmNvcHkoKQogICAgc3dhcAogICAgaXRvYgogICAgYnl0ZWMgMTAgLy8gImltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXMiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDAzCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LnNldF9pbXBsaWNpdF9rZXlfdHVwbGVbcm91dGluZ10oKSAtPiB2b2lkOgpzZXRfaW1wbGljaXRfa2V5X3R1cGxlOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMDkKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTAxMwogICAgLy8gc2VsZi5pbXBsaWNpdF9rZXlfdHVwbGVbYSwga2V5XSA9IHZhbHVlCiAgICBieXRlYyAxMSAvLyAiaW1wbGljaXRfa2V5X3R1cGxlIgogICAgdW5jb3ZlciAyCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDA5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmRlbGV0ZV9pbXBsaWNpdF9rZXlfYXJjNF91aW50W3JvdXRpbmddKCkgLT4gdm9pZDoKZGVsZXRlX2ltcGxpY2l0X2tleV9hcmM0X3VpbnQ6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTAxNS0xMDE2CiAgICAvLyAjIC0tLSBJbXBsaWNpdCBrZXlfcHJlZml4OiBkZWxldGUgLS0tCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMTgKICAgIC8vIGRlbCBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3VpbnRbYSwga2V5XQogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAiaW1wbGljaXRfa2V5X2FyYzRfdWludCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgYXBwX2xvY2FsX2RlbAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMTUtMTAxNgogICAgLy8gIyAtLS0gSW1wbGljaXQga2V5X3ByZWZpeDogZGVsZXRlIC0tLQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5jb250YWluc19pbXBsaWNpdF9rZXlfYXJjNF91aW50W3JvdXRpbmddKCkgLT4gdm9pZDoKY29udGFpbnNfaW1wbGljaXRfa2V5X2FyYzRfdWludDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDIwLTEwMjEKICAgIC8vICMgLS0tIEltcGxpY2l0IGtleV9wcmVmaXg6IGNvbnRhaW5zIC0tLQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDIzCiAgICAvLyByZXR1cm4gKGEsIGtleSkgaW4gc2VsZi5pbXBsaWNpdF9rZXlfYXJjNF91aW50CiAgICBpdG9iCiAgICBieXRlY18xIC8vICJpbXBsaWNpdF9rZXlfYXJjNF91aW50IgogICAgc3dhcAogICAgY29uY2F0CiAgICBpbnRjXzEgLy8gMAogICAgc3dhcAogICAgYXBwX2xvY2FsX2dldF9leAogICAgYnVyeSAxCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTAyMC0xMDIxCiAgICAvLyAjIC0tLSBJbXBsaWNpdCBrZXlfcHJlZml4OiBjb250YWlucyAtLS0KICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBieXRlY18yIC8vIDB4MDAKICAgIGludGNfMSAvLyAwCiAgICB1bmNvdmVyIDIKICAgIHNldGJpdAogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0Lm1heWJlX2ltcGxpY2l0X2tleV9hcmM0X3VpbnRbcm91dGluZ10oKSAtPiB2b2lkOgptYXliZV9pbXBsaWNpdF9rZXlfYXJjNF91aW50OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMjUtMTAyNgogICAgLy8gIyAtLS0gSW1wbGljaXQga2V5X3ByZWZpeDogbWF5YmUgLS0tCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMjgKICAgIC8vIHJldHVybiBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3VpbnQubWF5YmUoYSwga2V5KQogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAiaW1wbGljaXRfa2V5X2FyYzRfdWludCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgaW50Y18xIC8vIDAKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9nZXRfZXgKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDI1LTEwMjYKICAgIC8vICMgLS0tIEltcGxpY2l0IGtleV9wcmVmaXg6IG1heWJlIC0tLQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzIgLy8gMHgwMAogICAgaW50Y18xIC8vIDAKICAgIHVuY292ZXIgMgogICAgc2V0Yml0CiAgICBjb25jYXQKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5nZXRfZGVmYXVsdF9pbXBsaWNpdF9rZXlfYXJjNF91aW50W3JvdXRpbmddKCkgLT4gdm9pZDoKZ2V0X2RlZmF1bHRfaW1wbGljaXRfa2V5X2FyYzRfdWludDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDMwLTEwMzEKICAgIC8vICMgLS0tIEltcGxpY2l0IGtleV9wcmVmaXg6IGdldCB3aXRoIGRlZmF1bHQgLS0tCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMzUKICAgIC8vIHJldHVybiBzZWxmLmltcGxpY2l0X2tleV9hcmM0X3VpbnQuZ2V0KGEsIGtleSwgZGVmYXVsdD1kZWZhdWx0KQogICAgc3dhcAogICAgaXRvYgogICAgYnl0ZWNfMSAvLyAiaW1wbGljaXRfa2V5X2FyYzRfdWludCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgdW5jb3ZlciAyCiAgICBpbnRjXzEgLy8gMAogICAgdW5jb3ZlciAyCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBzZWxlY3QKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDMwLTEwMzEKICAgIC8vICMgLS0tIEltcGxpY2l0IGtleV9wcmVmaXg6IGdldCB3aXRoIGRlZmF1bHQgLS0tCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmdldF9hcmM0X3VpbnRbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfYXJjNF91aW50OgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwMzctMTAzOAogICAgLy8gIyAtLS0gRXhwbGljaXQga2V5X3ByZWZpeDogZ2V0dGVycyAtLS0KICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTA0MAogICAgLy8gcmV0dXJuIHNlbGYuYXJjNF91aW50W2EsIGtleV0KICAgIGl0b2IKICAgIGJ5dGVjIDEyIC8vICJleHBsaWNpdF9hcmM0X3VpbnQiCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMSAvLyAwCiAgICBzd2FwCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hcmM0X3VpbnQgZW50cnkgZXhpc3RzIGZvciBhY2NvdW50CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTAzNy0xMDM4CiAgICAvLyAjIC0tLSBFeHBsaWNpdCBrZXlfcHJlZml4OiBnZXR0ZXJzIC0tLQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5nZXRfYXJjNF9zdHJpbmdbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfYXJjNF9zdHJpbmc6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTA0MgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDQ0CiAgICAvLyByZXR1cm4gc2VsZi5hcmM0X3N0cmluZ1thLCBrZXldCiAgICBpdG9iCiAgICBieXRlYyAxMyAvLyAiZXhwbGljaXRfYXJjNF9zdHJpbmciCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMSAvLyAwCiAgICBzd2FwCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hcmM0X3N0cmluZyBlbnRyeSBleGlzdHMgZm9yIGFjY291bnQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDQyCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgYnl0ZWNfMCAvLyAweDE1MWY3Yzc1CiAgICBzd2FwCiAgICBjb25jYXQKICAgIGxvZwogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgoKCi8vIHRlc3RzLmFydGlmYWN0cy5TdGF0ZU9wcy5jb250cmFjdC5Mb2NhbE1hcENvbnRyYWN0LmdldF9hcmM0X2Jvb2xbcm91dGluZ10oKSAtPiB2b2lkOgpnZXRfYXJjNF9ib29sOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwNDYKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTA0OAogICAgLy8gcmV0dXJuIHNlbGYuYXJjNF9ib29sW2EsIGtleV0KICAgIGl0b2IKICAgIGJ5dGVjIDE0IC8vIDB4NjU3ODcwNmM2OTYzNjk3NDVmNjE3MjYzMzQ1ZjYyNmY2ZjZjCiAgICBzd2FwCiAgICBjb25jYXQKICAgIGludGNfMSAvLyAwCiAgICBzd2FwCiAgICBhcHBfbG9jYWxfZ2V0X2V4CiAgICBhc3NlcnQgLy8gY2hlY2sgc2VsZi5hcmM0X2Jvb2wgZW50cnkgZXhpc3RzIGZvciBhY2NvdW50CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTA0NgogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIGJ5dGVjXzAgLy8gMHgxNTFmN2M3NQogICAgc3dhcAogICAgY29uY2F0CiAgICBsb2cKICAgIGludGNfMCAvLyAxCiAgICByZXR1cm4KCgovLyB0ZXN0cy5hcnRpZmFjdHMuU3RhdGVPcHMuY29udHJhY3QuTG9jYWxNYXBDb250cmFjdC5zZXRfYXJjNF91aW50W3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X2FyYzRfdWludDoKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDUwLTEwNTEKICAgIC8vICMgLS0tIEV4cGxpY2l0IGtleV9wcmVmaXg6IHNldHRlcnMgLS0tCiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMgogICAgYnRvaQogICAgdHhuYSBBcHBsaWNhdGlvbkFyZ3MgMwogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwNTMKICAgIC8vIHNlbGYuYXJjNF91aW50W2EsIGtleV0gPSB2YWx1ZQogICAgc3dhcAogICAgaXRvYgogICAgYnl0ZWMgMTIgLy8gImV4cGxpY2l0X2FyYzRfdWludCIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwNTAtMTA1MQogICAgLy8gIyAtLS0gRXhwbGljaXQga2V5X3ByZWZpeDogc2V0dGVycyAtLS0KICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3Quc2V0X2FyYzRfc3RyaW5nW3JvdXRpbmddKCkgLT4gdm9pZDoKc2V0X2FyYzRfc3RyaW5nOgogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwNTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAxCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAyCiAgICBidG9pCiAgICB0eG5hIEFwcGxpY2F0aW9uQXJncyAzCiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTA1NwogICAgLy8gc2VsZi5hcmM0X3N0cmluZ1thLCBrZXldID0gdmFsdWUKICAgIHN3YXAKICAgIGl0b2IKICAgIGJ5dGVjIDEzIC8vICJleHBsaWNpdF9hcmM0X3N0cmluZyIKICAgIHN3YXAKICAgIGNvbmNhdAogICAgc3dhcAogICAgYXBwX2xvY2FsX3B1dAogICAgLy8gdGVzdHMvYXJ0aWZhY3RzL1N0YXRlT3BzL2NvbnRyYWN0LnB5OjEwNTUKICAgIC8vIEBhcmM0LmFiaW1ldGhvZCgpCiAgICBpbnRjXzAgLy8gMQogICAgcmV0dXJuCgoKLy8gdGVzdHMuYXJ0aWZhY3RzLlN0YXRlT3BzLmNvbnRyYWN0LkxvY2FsTWFwQ29udHJhY3Quc2V0X2FyYzRfYm9vbFtyb3V0aW5nXSgpIC0+IHZvaWQ6CnNldF9hcmM0X2Jvb2w6CiAgICAvLyB0ZXN0cy9hcnRpZmFjdHMvU3RhdGVPcHMvY29udHJhY3QucHk6MTA1OQogICAgLy8gQGFyYzQuYWJpbWV0aG9kKCkKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDEKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDIKICAgIGJ0b2kKICAgIHR4bmEgQXBwbGljYXRpb25BcmdzIDMKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDYxCiAgICAvLyBzZWxmLmFyYzRfYm9vbFthLCBrZXldID0gdmFsdWUKICAgIHN3YXAKICAgIGl0b2IKICAgIGJ5dGVjIDE0IC8vIDB4NjU3ODcwNmM2OTYzNjk3NDVmNjE3MjYzMzQ1ZjYyNmY2ZjZjCiAgICBzd2FwCiAgICBjb25jYXQKICAgIHN3YXAKICAgIGFwcF9sb2NhbF9wdXQKICAgIC8vIHRlc3RzL2FydGlmYWN0cy9TdGF0ZU9wcy9jb250cmFjdC5weToxMDU5CiAgICAvLyBAYXJjNC5hYmltZXRob2QoKQogICAgaW50Y18wIC8vIDEKICAgIHJldHVybgo=", "clear": "I3ByYWdtYSB2ZXJzaW9uIDExCiNwcmFnbWEgdHlwZXRyYWNrIGZhbHNlCgovLyBhbGdvcHkuYXJjNC5BUkM0Q29udHJhY3QuY2xlYXJfc3RhdGVfcHJvZ3JhbSgpIC0+IHVpbnQ2NDoKbWFpbjoKICAgIHB1c2hpbnQgMQogICAgcmV0dXJuCg==" }, "byteCode": { "approval": "CyACAQAmDwQVH3x1FmltcGxpY2l0X2tleV9hcmM0X3VpbnQBAAgAAAAAAAAFOQcABUhlbGxvGGltcGxpY2l0X2tleV9hcmM0X3N0cmluZxZpbXBsaWNpdF9rZXlfYXJjNF9ieXRlFmltcGxpY2l0X2tleV9hcmM0X2Jvb2wZaW1wbGljaXRfa2V5X2FyYzRfYWRkcmVzcxlpbXBsaWNpdF9rZXlfYXJjNF91aW50MTI4H2ltcGxpY2l0X2tleV9hcmM0X2R5bmFtaWNfYnl0ZXMSaW1wbGljaXRfa2V5X3R1cGxlEmV4cGxpY2l0X2FyYzRfdWludBRleHBsaWNpdF9hcmM0X3N0cmluZxJleHBsaWNpdF9hcmM0X2Jvb2wxG0EA3YAEMMbVijYaAI4BAMUxGRREMRhEghoEi0L/aQTw26QtBK+mceQELFw6RwTz+9nEBJjF20cEvSXcCgQWzigEBH6tZmYEyB0fwATdTERoBA8cajsEVIW6CgTNgEK0BGaU6PgEEtdQCgRwmCBMBBTv65oEz8IvWASTT29CBBNkNQsEdJU1dQRRVVIhBMX8J8oEvI6v7QRNgjFwNhoAjhoB1wHsAgICGAIuAkQCWgJwAoQClwKrAr8C0wLnAvsDDwMiAzADSwNlA4EDlwOtA8MD1wPrADEZIhIxGBBEQgAIMRkUMRgUEEMyCYAeaW1wbGljaXRfa2V5X2FyYzRfdWludAAAAAAAAAAAK2YyCYAgaW1wbGljaXRfa2V5X2FyYzRfc3RyaW5nAAAAAAAAAAAnBGYyCYAeaW1wbGljaXRfa2V5X2FyYzRfYnl0ZQAAAAAAAAAAKmYyCYICHmltcGxpY2l0X2tleV9hcmM0X2Jvb2wAAAAAAAAAAAGAZjIJgCFpbXBsaWNpdF9rZXlfYXJjNF9hZGRyZXNzAAAAAAAAAAAyCWYyCYICIWltcGxpY2l0X2tleV9hcmM0X3VpbnQxMjgAAAAAAAAAABAAAAAQAAAAAAAAAAAAAAAAZjIJggInaW1wbGljaXRfa2V5X2FyYzRfZHluYW1pY19ieXRlcwAAAAAAAAAADwANZHluYW1pYyBieXRlc2YyCYAjaW1wbGljaXRfa2V5X3R1cGxlAAAAAAAAAAoACwAABHRlc3SBCmYyCYAaZXhwbGljaXRfYXJjNF91aW50AAAAAAAAAAArZjIJgBxleHBsaWNpdF9hcmM0X3N0cmluZwAAAAAAAAAAJwRmMgmCAhpleHBsaWNpdF9hcmM0X2Jvb2wAAAAAAAAAAAGAZiJDNhoBNhoCFxYpTFAjTGNEKExQsCJDNhoBNhoCFxYnBUxQI0xjRChMULAiQzYaATYaAhcWJwZMUCNMY0QoTFCwIkM2GgE2GgIXFicHTFAjTGNEKExQsCJDNhoBNhoCFxYnCExQI0xjRChMULAiQzYaATYaAhcWJwlMUCNMY0QoTFCwIkM2GgE2GgIXFicKTFAjTGNEKExQsCJDNhoBJws2GgJQI0xjRBYoTFCwIkM2GgE2GgIXNhoDTBYpTFBMZiJDNhoBNhoCFzYaA0wWJwVMUExmIkM2GgE2GgIXNhoDTBYnBkxQTGYiQzYaATYaAhc2GgNMFicHTFBMZiJDNhoBNhoCFzYaA0wWJwhMUExmIkM2GgE2GgIXNhoDTBYnCUxQTGYiQzYaATYaAhc2GgNMFicKTFBMZiJDNhoBNhoCNhoDFycLTwJQTGYiQzYaATYaAhcWKUxQaCJDNhoBNhoCFxYpTFAjTGNFASojTwJUKExQsCJDNhoBNhoCFxYpTFAjTGMqI08CVFAoTFCwIkM2GgE2GgIXNhoDTBYpTFBPAiNPAmNNKExQsCJDNhoBNhoCFxYnDExQI0xjRChMULAiQzYaATYaAhcWJw1MUCNMY0QoTFCwIkM2GgE2GgIXFicOTFAjTGNEKExQsCJDNhoBNhoCFzYaA0wWJwxMUExmIkM2GgE2GgIXNhoDTBYnDUxQTGYiQzYaATYaAhc2GgNMFicOTFBMZiJD", "clear": "C4EBQw==" }, "compilerInfo": { "compiler": "puya", "compilerVersion": { "major": 5, "minor": 8, "patch": 1 } }, "events": [], "templateVariables": {} }