yv66vgAAADIApAEALXZpZXdzL2h0bWwvc2VydmljZURldGFpbCQkYW5vbmZ1biRzY3JpcHRzJDEkMQcAAQEAbUxzY2FsYS9ydW50aW1lL0Fic3RyYWN0RnVuY3Rpb24xPExtb2RlbHMvU2VydmljZUNvbmZpZ3VyYXRpb25JdGVtO0xwbGF5L3R3aXJsL2FwaS9IdG1sOz47THNjYWxhL1NlcmlhbGl6YWJsZTsBAB9zY2FsYS9ydW50aW1lL0Fic3RyYWN0RnVuY3Rpb24xBwAEAQASc2NhbGEvU2VyaWFsaXphYmxlBwAGAQAcc2VydmljZURldGFpbC50ZW1wbGF0ZS5zY2FsYQEAGXZpZXdzL2h0bWwvc2VydmljZURldGFpbCQHAAkBAAlzY3JpcHRzJDEBAFUoTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvdXRpbC9MaXN0O0xtb2RlbHMvU2VydmljZUV4ZWN1dGlvbkxvZzspTHBsYXkvdHdpcmwvYXBpL0h0bWw7DAALAAwBAAVhcHBseQEAOChMbW9kZWxzL1NlcnZpY2VDb25maWd1cmF0aW9uSXRlbTspTHBsYXkvdHdpcmwvYXBpL0h0bWw7AQAHTU9EVUxFJAEAG0x2aWV3cy9odG1sL3NlcnZpY2VEZXRhaWwkOwwAEAARCQAKABIBABVzY2FsYS9jb2xsZWN0aW9uL1NlcSQHABQBABdMc2NhbGEvY29sbGVjdGlvbi9TZXEkOwwAEAAWCQAVABcBAA1zY2FsYS9QcmVkZWYkBwAZAQAPTHNjYWxhL1ByZWRlZiQ7DAAQABsJABoAHAEAEGphdmEvbGFuZy9PYmplY3QHAB4BAAZmb3JtYXQBABkoKUxwbGF5L3R3aXJsL2FwaS9Gb3JtYXQ7DAAgACEKAAoAIgEABAoJCQkIACQBABVwbGF5L3R3aXJsL2FwaS9Gb3JtYXQHACYBAANyYXcBAC8oTGphdmEvbGFuZy9TdHJpbmc7KUxwbGF5L3R3aXJsL2FwaS9BcHBlbmRhYmxlOwwAKAApCwAnACoBAIl2YXIgcGFyYW1ldGVyTmFtZSA9ICIiOwoJCQl2YXIgcGFyYW1ldGVyVHlwZSA9ICIiOwoJCQl2YXIgcGFyYW1ldGVyVmFsdWUgPSAiIjsKCQkJdmFyIHBhcmFtZXRlckRlZmF1bHRWYWx1ZSA9ICIiOwoJCQlwYXJhbWV0ZXJQdXJwb3NlID0gIggALAEAH21vZGVscy9TZXJ2aWNlQ29uZmlndXJhdGlvbkl0ZW0HAC4BABNnZXRQYXJhbWV0ZXJQdXJwb3NlAQAUKClMamF2YS9sYW5nL1N0cmluZzsMADAAMQoALwAyAQAJX2Rpc3BsYXlfDAA0ACkKAAoANQEAFyI7CgkJCXBhcmFtZXRlclJ1bGUgPSAiCAA3AQAQZ2V0UGFyYW1ldGVyUnVsZQwAOQAxCgAvADoBAA8iOwoJCQl2YWx1ZSA9ICIIADwBAAhnZXRWYWx1ZQwAPgAxCgAvAD8BABciOwoJCQlwYXJhbWV0ZXJOYW1lID0gIggAQQEAEGdldFBhcmFtZXRlck5hbWUMAEMAMQoALwBEAQE0IjsKCQkJcGFyYW1ldGVyVHlwZSA9IHBhcmFtZXRlclJ1bGUuc3BsaXQoIip8IilbMV0uc3BsaXQoInwqIilbMV07CgkJCXBhcmFtZXRlclZhbHVlID0gcGFyYW1ldGVyUnVsZS5zcGxpdCgiKnwiKVsyXS5zcGxpdCgifCoiKVsxXTsKCQkJcGFyYW1ldGVyRGVmYXVsdFZhbHVlID0gcGFyYW1ldGVyUnVsZS5zcGxpdCgiKnwiKVszXS5zcGxpdCgifCoiKVsxXTsKCQkJCgkJCXZhciByZXMgPSBwYXJhbWV0ZXJQdXJwb3NlLnNwbGl0KCIgIik7CgkJCXZhciBuYW1lID0gcmVzWzBdOwoJCQlmb3IgKGkgPSAxOyBpIDwgcmVzLmxlbmd0aDsgaSsrKSAIAEYBAAF7CABIAQAFCgkJCQkIAEoBAGF2YXIgdGVtcCA9IHJlc1tpXS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKTsKCQkJCXRlbXAgKz0gcmVzW2ldLnN1YnN0cmluZygxKTsKCQkJCW5hbWUgKz0gdGVtcDsKCQkJCABMAQABfQgATgEA2W5hbWUgKz0gIl9kZXRhaWwiOwoJCQkKCQkJCgkJCWNvbnNvbGUubG9nKHBhcmFtZXRlck5hbWUgKyBzZXBlcmF0b3IgKyBuYW1lICsgc2VwZXJhdG9yICsgdmFsdWUgKyBzZXBlcmF0b3IgKyBwYXJhbWV0ZXJUeXBlICsgc2VwZXJhdG9yICsgcGFy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AB5zY2FsYS9yZWZsZWN0L01hbmlmZXN0RmFjdG9yeSQHAH8BACBMc2NhbGEvcmVmbGVjdC9NYW5pZmVzdEZhY3RvcnkkOwwAEACBCQCAAIIBABNwbGF5L3R3aXJsL2FwaS9IdG1sBwCEAQAJY2xhc3NUeXBlAQArKExqYXZhL2xhbmcvQ2xhc3M7KUxzY2FsYS9yZWZsZWN0L01hbmlmZXN0OwwAhgCHCgCAAIgBAEcoTGphdmEvbGFuZy9PYmplY3Q7THNjYWxhL3JlZmxlY3QvTWFuaWZlc3Q7KUxwbGF5L3R3aXJsL2FwaS9BcHBlbmRhYmxlOwwANACKCgAKAIsBAAR0aGlzAQAvTHZpZXdzL2h0bWwvc2VydmljZURldGFpbCQkYW5vbmZ1biRzY3JpcHRzJDEkMTsBAAhjb25mSXRlbQEAIUxtb2RlbHMvU2VydmljZUNvbmZpZ3VyYXRpb25JdGVtOwEAJihMamF2YS9sYW5nL09iamVjdDspTGphdmEvbGFuZy9PYmplY3Q7DAAOAA8KAAIAkgEAAnYxAQASTGphdmEvbGFuZy9PYmplY3Q7AQAGPGluaXQ+AQADKClWDACWAJcKAAUAmAEABENvZGUBABJMb2NhbFZhcmlhYmxlVGFibGUBAA9MaW5lTnVtYmVyVGFibGUBAAlTaWduYXR1cmUBAApTb3VyY2VGaWxlAQAPRW5jbG9zaW5nTWV0aG9kAQAMSW5uZXJDbGFzc2VzAQAFU2NhbGEBABlSdW50aW1lVmlzaWJsZUFubm90YXRpb25zAQA6THBsYXkvY29yZS9lbmhhbmNlcnMvUHJvcGVydGllc0VuaGFuY2VyJFJld3JpdHRlbkFjY2Vzc29yOwAxAAIABQABAAcAAAADABEADgAPAAEAmgAABecACAACAAAD67IAE7IAGLIAHRA6vQAfWQOyABO2ACMSJbkAKwIAU1kEsgATtgAjEi25ACsCAFNZBbIAEyu2ADO2ADZTWQayABO2ACMSOLkAKwIAU1kHsgATK7YAO7YANlNZCLIAE7YAIxI9uQArAgBTWRAGsgATK7YAQLYANlNZEAeyABO2ACMSQrkAKwIAU1kQCLIAEyu2AEW2ADZTWRAJsgATtgAjEke5ACsCAFNZEAqyABO2ACMSSbkAKwIAU1kQC7IAE7YAIxJLuQArAgBT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