UEtJWDEgeyB9CkRFRklOSVRJT05TIElNUExJQ0lUIFRBR1MgOjo9CkJFR0lOCmlkLWNlIE9CSkVDVCBJREVOVElGSUVSICA6Oj0gIHtqb2ludC1pc28tY2NpdHQoMikgZHMoNSkgMjl9CmlkLWNlLWF1dGhvcml0eUtleUlkZW50aWZpZXIgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLUNlIDM1IH0KQXV0aG9yaXR5S2V5SWRlbnRpZmllciA6Oj0gU0VRVUVOQ0UgewogICAgICBrZXlJZGVudGlmaWVyICAgICAgICAgICAgIFswXSB5SWRlbnRpZmllciAgICAgICAgICAgIE9QVElPTkFMLAogICAgICBhdXRob3JpdHlDZXJ0SXNzdWVyICAgICAgIFsxXSBHZW5lcmFsTmFtZXMgICAgICAgICAgICAgT1BUSU9OQUwsCiAgICAgIGF1dGhvcml0eUNlcnRTZXJpYWxOdW1iZXIgWzJdIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyICBPUFRJT05BTCB9CiAgICAtLSBhdXRob3JpdHlDZXJ0SXNzdWVyIGFuZCBhdXRob3JpdHlDZXJ0U2VyaWFsTnVtYmVyIHNoYWxsIGJvdGgKICAgIC0tIGJlIHByZXNlbnQgb3IgYm90aCBiZSBhYnNnZW50CktleUlkZW50aWZpZXIgOjo9IE9DVEVUIFNUUklORwppZC1jZS1zdWJqZWN0S2V5SWRlbnRpZmllciBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTQgfQpTdWJqZWN0S2V5SWRlbnRpZmllciA6Oj0gS2V5SWRlbnRpZmllcgppZC1jZS1rZXlVc2FnZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTUgfQpLZXlVc2FnZSA6Oj0gQklUIFNUUklORyB7CiAgICAgZGlnaXRhbFNpZ25hdHVyZSAgICAgICAgKDApLAogICAgIG7ublJlcHVkaWF0aW9uICAgICAgICAgICgxKSwKICAgICBrZXlFbmNpcGhlcm1lbnQgICAgICAgICAoMiksCiAgICAgZGF0YUVuY2lwaGVybWVudCAgICAgICAgKDMpLAogICAgIGtleUFncmVlbWVudCAgICAgICAgICAgICg0KSwKICAgICBrZXlDZXJ0U2lnbiAgICAgICAgICAgICAoNSksCiAgICAgY1JMU2lnbiAgICAgICAgICAgICAgICAgKDYpLAogICAgIGVuY2lwaGVyT25seSAgICAgICAgICAgICg3KSwKICAgICBkZWNpcGhloU9ucHkgICAgICAgICAgICAoOCkgfQppZC1jZS1wcml2YXRlS2V5VXNhZ2VQZXJpb2QgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDE2IH0KUHJpdmF0ZUtleVVzYWdlUGVyaW9kIDo6PSBTRVFVRU5DRW50CktleUlkZW50aWZpZXIgOjo9IE9DVEVUIFNUUklORwppZC1jZS1zdWJqZWN0S2V5SWRlbnRpZmllciBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTQgfQpTdWJqZWN0S2V5SWRlbnRpZmllciA6Oj0gS2V5SWRlbnRpZmllcgppZC1jZS1rZXlVc2FnZSBPQkpFQ1QgSURFTlRJRklFUiA6Oj0gIHsgaWQtY2UgMTUgfQpLZXlVc2FnZSA6Oj0gQklUIFNUUklORyB7CiAgICAgZGlnaXRhbFNpZ25hdHVyZSAgICAgICAgKDApLAogICAgIG7ublJlcHVkaWF0aW9uICAgICAgICAgICgxKSwKICAgICBrZXlFbmNpcGhlcm1lbnQgICAgICAgICAoMiksCiAgICAgZGF0YUVuY2lwaGVybWVudCAgICAgICAgKDMpLAogICAgIGtleUFncmVlbWVudCAgICAgICAgICAgICg0KSwKICAgICBrZXlDZXJ0U2lnbiAgICAgICAgICAgICAoNSksCiAgICAgY1JMU2lnbiAgICAgICAgICAgICAgICAgKDYpLAogICAgIGVuY2lwaGVyT25seSAgICAgICAgICAgICg3KSwKICAgICBkZWNpcGhloU9ucHkgICAgICAgICAgICAoOCkgfQppZC1jZS1wcml2YXRlS2V5VXNhZ2VQZXJpb2QgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDE2IH0KUHJpdmF0ZUtleVVzYWdlUGVyaW9kIDo6PSBTRVFVRU5DRSB7CiAgICAgbm90QmUgICAgVmlzaWJsZVN0cmluZyAgKFNJWkUgKDEuLjIwMCkpLAogICAgIGJtcFN0cmluZyAgICAgICAgQk1QU3RyaW5nICAgICAgKFNJWkUgKDEuLjIwMCkpLAogICAgIHV0ZjhTdHJpbmcgICAgICAgVVRGOFN0cmluZyAgICAgKFNJWkUgKDEuLjIwMCkpIH0KaWQtY2UtcG9saWN5TWFwcGluZ3MgT0JKRUNUIElERU5USUZJRVIgOjo9ICB7IGlkLWNlIDMzIH0KUG9saWN5TWFwcGluZ3MgOjo9IFNFUVVFTkNFIFNJWkUgKDEuLk1BWCkgT0YgU0VRVUVOQ0UgewogICAgIGlzc3VlckRvbWFpblBvbGljeSAgICAgIENlcnRQb2xpY3lJZCwKICAgICBzdWJqZWN0RG9tYWluUG9saWN5ICAgICBDZXJ0UG9saWN5SWQgfQpEaXJlY3RvcnlTdHJpbmcgOjo9IENIT0lDRSB7CiAgICAgIHRlbGV0ZXhTdHJpbmcgICAgICAgICAgICAgVGVsZXRleFN0cmluZyAoU0laRSAoMS4uTUFYKSksCiAgICAgIHByaW50YWJsZVN0cmluZyAgICAgICAgICAgUHJpbnRhYmxlU3RyaW5nIChTSVpFICgxLi5NQVgpKSwKICAgICAgdW5pdmVyc2FsU3RyaW5nICAgICAgICAgICBVbml2ZXJzYWxTdElORyAtLVNIQS0xIGhhc2ggb2YgcmVzcG9uZGVyJ3MgcHVibGljIGtleQp9CkNlcnRJRCA6Oj0gU0VRVUVOQ0UgewogICAgaGFzaEFsZ29yaXRobSAgICAgICAgICAgIEFsZ29yaXRobUlkZW50aWZpZXIsCiAgICBpc3N1ZXJOYW1lSGFzaCAgICAgT0NURVQgU1RSSU5HLCAtLSBIYXNoIG9mIElzc3VlcidzIEROCiAgICBpc3N1ZXJLZXlIYXNoICAgICAgT0NURVQgU1RSSU5HLCAtLSBIYXNoIG9mIElzc3VlcnMgcHVibGljIGtleQogICAgc2VyaWFsTnVtYmVyICAgICAgIENlcnRpZmljYXRlU2VyaWFsTnVtYmVyIH0KQ2VydFN0YXR1cyA6Oj0gQ0hPSUNFIHsKICAgIGdvb2QgICAgICAgICAgICAgICAgWzBdICAgICBJTVBMSUNJVCBOVUxMLAogICAgcmV2b2tlZCAgICAgICAgICAgICBbMV0gICAgIElNUExJQ0lUIFJldm9rZWRJbmZvLAogICAgdW5rbm93biAgICAgICAgICAgICBbMl0gICAgIElNUExJQ0lUIFVua25vd25JbmZvIH0KU2luZ2xlUmVzcG9uc2UgOjo9IFNFUVVFTkNFIHsKICAgY2VydElEICAgICAgICAgICAgICAgICAgICAgICBDZXJ0SUQsCiAgIGNlcnRTdGF0dXMgICAgICAgICAgICAgICAgICAgQ2VydFN0YXR1cywKICAgdGhpc1VwZGF0ZSAgICAgICAgICAgICAgICAgICBHZW5lcmFsaXplZFRpbWUsCiAgIG5leHRVcGRhdGUgICAgICAgICAgIFswXSAgICAgRVhQTElDSVQgR2VuZXJhbGl6ZWRUaW1lIE9QVElPTkFMLAogICBzaW5nICAgICAgIFJlc3BvbmRlcklELAogICBwcm9kdWNlZEF0ICAgICAgICAgICAgICAgR2VuZXJhbGl6ZWRUaW1lLAogICByZXNwb25zZXMgICAgICAgICAgICAgICAgU0VRVUVOQ0UgT0YgU2luZ2xlUmVzcG9uc2UsCiAgIHJlc3BvbnNlRXh0ZW5zaW9ucyAgIFsxXSBFWFBMSUNJVCBFeHRlbnNpb25zIE9QVElPTkFMIH0KUmVzcG9uZGVySUQgOjo9IENIT0lDRSB7CiAgIGJ5TmFtZSAgIFsxXSBFWFBMSUNJVCBSRE5TZXF1ZW5jZSwgLS1OYW1lCiAgIGJ5S2V5ICAgIFsyXSBFWFBMSUNJVCBPQ1RFVCBTVFJJTkcgLS1TSEEtMSBoYXNoIG9mIHJlc3BvbmRlcidzIHB1YmxpYyBrZXkKfQpDZXJ0SUQgOjo9IFNFUVVFTkNFIHsKICAgIGhhc2hBbGdvcml0aG0gICAgICAgICAgICBBbGdvcml0aG1JZGVudGlmaWVyLAogICAgaXNzdWVyTmFtZUhhc2ggICAgIE9DVEVUIFNUUklORywgLS0gSGFzaCBvZiBJc3N1ZXIncyBETgogICAgaXNzdWVyS2V5SGFzaCAgICAgIE9DVEVUIFNUUklORywgLS0gSGFzaCBvZiBJc3N1ZXJzIHB1YmxpYyBrZXkKICAgIHNlcmlhbE51bWJlciAgICAgICBDZXJ0aWZpY2F0ZVNlcmlhbE51bWJlciB9CkNlcnRTdGF0dXMgOjo9IENIT0lDRSB7CiAgICBnb29kICAgICAgICAgICAgICAgIFswXSAgICAgSU1QTElDSVQgTlVMTCwKICAgIHJldm9rZWQgICAgICAgICAgICAgWzFdICAgICBJTVBMSUNJVCBSZXZva2VkSW5mbywKICAgIHVua25vd24gICAgICAgICAgICAgWzJdICAgICBJTVBMSUNJVCBVbmtub3duSW5mbyB9ClNpbmdsZVJlc3BvbnNlIDo6PSBTRVFVRU5DRSB7CiAgIGNlcnRJRCAgICAgICAgICAgICAgICAgICAgICAgQ2VydElELAogICBjZXJ0U3RhdHVzICAgICAgICAgICAgICAgICAgIENlcnRTdGF0dXMsCiAgIHRoaXNVcGRhdGUgICAgICAgICAgICAgICAgICAgR2VuZXJhbGl6ZWRUaW1lLAogICBuZXh0VXBkYXRlICAgICAgICAgICBbMF0gICAgIEVYUExJQ0lUIEdlbmVyYWxpemVkVGltZSBPUFRJT05BTCwKICAgc2luZ2xlRXh0ZW5zaW9ucyAgICAgWzFdICAgICBFWFBMSUNJVCBFeHRlbnNpb25zIE9QVElPTkFMIH0KUmV2b2tlZEluZm8gOjo9IFNFUVVFTkNFIHsKICAgIHJldm9jYXRpb25UaW1lICAgICAgICAgICAgICBHZW5lcmFsaXplZFRpbWUsCiAgICByZXZvY2F0aW9uUmVhc29uICAgIFswXSAgICAgRVhQTElDSVQgQ1JMUmVhc29uIE9QVElPTkFMIH0KVW5rbm93bkluZm8gOjo9IE5VTEwgLS0gdGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhbiBFbnVtZXJhdGlvbgpFTkQK