From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=jiaxin.wu@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 225FD22361E43 for ; Sat, 10 Feb 2018 18:39:42 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Feb 2018 18:45:30 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,493,1511856000"; d="scan'208";a="30479440" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga001.jf.intel.com with ESMTP; 10 Feb 2018 18:45:29 -0800 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 10 Feb 2018 18:45:29 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.319.2; Sat, 10 Feb 2018 18:45:29 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.116]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.130]) with mapi id 14.03.0319.002; Sun, 11 Feb 2018 10:45:27 +0800 From: "Wu, Jiaxin" To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: "Kinney, Michael D" , "Zimmer, Vincent" , "Yao, Jiewen" , "Ye, Ting" , "Fu, Siyuan" Thread-Topic: [Patch 2/2] NetworkPkg: Read TlsCipherList variable and configure it for HTTPS session. Thread-Index: AQHToVpyC3Lp2YgVw0miwlQSPLSCv6ObVTEAgAMsf0A= Date: Sun, 11 Feb 2018 02:45:27 +0000 Message-ID: <895558F6EA4E3B41AC93A00D163B727416381A59@SHSMSX103.ccr.corp.intel.com> References: <1518148778-14300-1-git-send-email-jiaxin.wu@intel.com> <1518148778-14300-3-git-send-email-jiaxin.wu@intel.com> <8ca3dab4-dd8a-0e05-a796-33203f35006b@redhat.com> In-Reply-To: <8ca3dab4-dd8a-0e05-a796-33203f35006b@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYThhZmQzY2MtYzc4MS00NDZhLTk1OTAtYjg2YmExOWEzZGQyIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6IkdTdXdZNjUwZ0FDcnlhcEhcL05sKzZvXC9zdm9RZXY0T3NcL1gxQnpNTXgyTzA9In0= x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch 2/2] NetworkPkg: Read TlsCipherList variable and configure it for HTTPS session. X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Feb 2018 02:39:43 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIExhc3psbywgSSB3aWxsIGludGVncmF0ZSB5b3VyIGNvbW1lbnRzIGludG8gdGhlIG5l dyBwYXRjaC4NCg0KQmVzdCBSZWdhcmRzIQ0KSmlheGluIA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29t XQ0KPiBTZW50OiBGcmlkYXksIEZlYnJ1YXJ5IDksIDIwMTggNjoxNiBQTQ0KPiBUbzogV3UsIEpp YXhpbiA8amlheGluLnd1QGludGVsLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+IENj OiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBaaW1tZXIs IFZpbmNlbnQNCj4gPHZpbmNlbnQuemltbWVyQGludGVsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3 ZW4ueWFvQGludGVsLmNvbT47IFllLA0KPiBUaW5nIDx0aW5nLnllQGludGVsLmNvbT47IEZ1LCBT aXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUGF0Y2ggMi8yXSBO ZXR3b3JrUGtnOiBSZWFkIFRsc0NpcGhlckxpc3QgdmFyaWFibGUgYW5kDQo+IGNvbmZpZ3VyZSBp dCBmb3IgSFRUUFMgc2Vzc2lvbi4NCj4gDQo+IE9uIDAyLzA5LzE4IDA0OjU5LCBKaWF4aW4gV3Ug d3JvdGU6DQo+ID4gVGhpcyBwYXRjaCBpcyB0byByZWFkIHRoZSBUbHNDaXBoZXJMaXN0IHZhcmlh YmxlIGFuZCBjb25maWd1cmUgaXQgZm9yIHRoZQ0KPiA+IGxhdGVyIEhUVFBTIHNlc3Npb24uDQo+ ID4NCj4gPiBJZiB0aGUgdmFyaWFibGUgaXMgbm90IHNldCBieSBhbnkgcGxhdGZvcm0sIEVGSV9O T1RfRk9VTkQgd2lsbCBiZSByZXR1cm5lZA0KPiA+IGZyb20gR2V0VmFyaWFibGUgc2VydmljZS4g SW4gc3VjaCBhIGNhc2UsIHRoZSBkZWZhdWx0IENpcGhlckxpc3QgY3JlYXRlZCBpbg0KPiA+IFRs c0R4ZSBkcml2ZXIgd2lsbCBiZSB1c2VkLg0KPiA+DQo+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVy c2VrQHJlZGhhdC5jb20+DQo+ID4gQ2M6IEtpbm5leSBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPg0KPiA+IENjOiBaaW1tZXIgVmluY2VudCA8dmluY2VudC56aW1tZXJAaW50 ZWwuY29tPg0KPiA+IENjOiBZYW8gSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiBD YzogWWUgVGluZyA8dGluZy55ZUBpbnRlbC5jb20+DQo+ID4gQ2M6IEZ1IFNpeXVhbiA8c2l5dWFu LmZ1QGludGVsLmNvbT4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1 dGlvbiBBZ3JlZW1lbnQgMS4wDQo+ID4gU2lnbmVkLW9mZi1ieTogV3UgSmlheGluIDxqaWF4aW4u d3VAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICBOZXR3b3JrUGtnL0h0dHBEeGUvSHR0cERyaXZl ci5oICAgfCAgMyArLQ0KPiA+ICBOZXR3b3JrUGtnL0h0dHBEeGUvSHR0cER4ZS5pbmYgICAgfCAg MyArLQ0KPiA+ICBOZXR3b3JrUGtnL0h0dHBEeGUvSHR0cHNTdXBwb3J0LmMgfCA5Mg0KPiArKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0NCj4gPiAgMyBmaWxlcyBjaGFuZ2Vk LCA5NSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBh L05ldHdvcmtQa2cvSHR0cER4ZS9IdHRwRHJpdmVyLmgNCj4gYi9OZXR3b3JrUGtnL0h0dHBEeGUv SHR0cERyaXZlci5oDQo+ID4gaW5kZXggOTNhNDEyYS4uZWJhN2QzMiAxMDA2NDQNCj4gPiAtLS0g YS9OZXR3b3JrUGtnL0h0dHBEeGUvSHR0cERyaXZlci5oDQo+ID4gKysrIGIvTmV0d29ya1BrZy9I dHRwRHhlL0h0dHBEcml2ZXIuaA0KPiA+IEBAIC0xLDkgKzEsOSBAQA0KPiA+ICAvKiogQGZpbGUN Cj4gPiAgICBUaGUgaGVhZGVyIGZpbGVzIG9mIHRoZSBkcml2ZXIgYmluZGluZyBhbmQgc2Vydmlj ZSBiaW5kaW5nIHByb3RvY29sIGZvcg0KPiBIdHRwRHhlIGRyaXZlci4NCj4gPg0KPiA+IC0gIENv cHlyaWdodCAoYykgMjAxNSAtIDIwMTYsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJl c2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE4LCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gICAgKEMpIENvcHlyaWdodCAy MDE2IEhld2xldHQgUGFja2FyZCBFbnRlcnByaXNlIERldmVsb3BtZW50IExQPEJSPg0KPiA+DQo+ ID4gICAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1hdGVyaWFscw0KPiA+ICAg IGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25k aXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+ICAgIHdoaWNoIGFjY29tcGFuaWVzIHRo aXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4g Zm91bmQgYXQNCj4gPiBAQCAtNTksMTAgKzU5LDExIEBADQo+ID4gIC8vIFByb2R1Y2VkIFByb3Rv Y29scw0KPiA+ICAvLw0KPiA+ICAjaW5jbHVkZSA8UHJvdG9jb2wvSHR0cC5oPg0KPiA+DQo+ID4g ICNpbmNsdWRlIDxHdWlkL1Rsc0F1dGhlbnRpY2F0aW9uLmg+DQo+ID4gKyNpbmNsdWRlIDxHdWlk L1Rsc0NpcGhlckxpc3QuaD4NCj4gPg0KPiA+ICAjaW5jbHVkZSA8SW5kdXN0cnlTdGFuZGFyZC9U bHMxLmg+DQo+ID4NCj4gPiAgLy8NCj4gPiAgLy8gRHJpdmVyIFZlcnNpb24NCj4gPiBkaWZmIC0t Z2l0IGEvTmV0d29ya1BrZy9IdHRwRHhlL0h0dHBEeGUuaW5mDQo+IGIvTmV0d29ya1BrZy9IdHRw RHhlL0h0dHBEeGUuaW5mDQo+ID4gaW5kZXggMjAwNzVmNS4uYjFkN2JkMiAxMDA2NDQNCj4gPiAt LS0gYS9OZXR3b3JrUGtnL0h0dHBEeGUvSHR0cER4ZS5pbmYNCj4gPiArKysgYi9OZXR3b3JrUGtn L0h0dHBEeGUvSHR0cER4ZS5pbmYNCj4gPiBAQCAtMSw5ICsxLDkgQEANCj4gPiAgIyMgQGZpbGUN Cj4gPiAgIyAgSW1wbGVtZW50YXRpb24gb2YgRUZJIEhUVFAgcHJvdG9jb2wgaW50ZXJmYWNlcy4N Cj4gPiAgIw0KPiA+IC0jICBDb3B5cmlnaHQgKGMpIDIwMTUgLSAyMDE3LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAx NSAtIDIwMTgsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4g PiAgIw0KPiA+ICAjICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxz DQo+ID4gICMgIGFyZSBsaWNlbnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1z IGFuZCBjb25kaXRpb25zIG9mIHRoZQ0KPiBCU0QgTGljZW5zZQ0KPiA+ICAjICB3aGljaCBhY2Nv bXBhbmllcyB0aGlzIGRpc3RyaWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBt YXkgYmUNCj4gZm91bmQgYXQNCj4gPiAgIyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2Vz L2JzZC1saWNlbnNlLnBocC4NCj4gPiBAQCAtNzIsMTAgKzcyLDExIEBADQo+ID4gICAgZ0VmaVRs c1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMjIFNPTUVUSU1FU19D T05TVU1FUw0KPiA+ICAgIGdFZmlUbHNDb25maWd1cmF0aW9uUHJvdG9jb2xHdWlkICAgICAgICAg ICAgICAgICAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gPg0KPiA+ICBbR3VpZHNdDQo+ID4gICAg Z0VmaVRsc0NhQ2VydGlmaWNhdGVHdWlkICAgICAgICAgICAgICAgICAgICAgICAgICMjIFNPTUVU SU1FU19DT05TVU1FUyAgIyMNCj4gVmFyaWFibGU6TCJUbHNDYUNlcnRpZmljYXRlIg0KPiA+ICsg IGdUbHNDaXBoZXJMaXN0R3VpZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyBTT01F VElNRVNfQ09OU1VNRVMgICMjDQo+IFZhcmlhYmxlOkwiVGxzQ2lwaGVyTGlzdCINCj4gPg0KPiA+ ICBbUGNkXQ0KPiA+ICAgIGdFZmlOZXR3b3JrUGtnVG9rZW5TcGFjZUd1aWQuUGNkQWxsb3dIdHRw Q29ubmVjdGlvbnMgICAgICAgIyMNCj4gQ09OU1VNRVMNCj4gPiAgICBnRWZpTmV0d29ya1BrZ1Rv a2VuU3BhY2VHdWlkLlBjZEh0dHBzQXV0aGVudGljYXRpb25Nb2RlICAgICMjDQo+IFNPTUVUSU1F U19DT05TVU1FUw0KPiA+ICAgIGdFZmlOZXR3b3JrUGtnVG9rZW5TcGFjZUd1aWQuUGNkSHR0cHNI b3N0UHVibGljQ2VydCAgICAgICAgIyMNCj4gU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4gZGlmZiAt LWdpdCBhL05ldHdvcmtQa2cvSHR0cER4ZS9IdHRwc1N1cHBvcnQuYw0KPiBiL05ldHdvcmtQa2cv SHR0cER4ZS9IdHRwc1N1cHBvcnQuYw0KPiA+IGluZGV4IDI4ODA4MmEuLjYyY2I4NjcgMTAwNjQ0 DQo+ID4gLS0tIGEvTmV0d29ya1BrZy9IdHRwRHhlL0h0dHBzU3VwcG9ydC5jDQo+ID4gKysrIGIv TmV0d29ya1BrZy9IdHRwRHhlL0h0dHBzU3VwcG9ydC5jDQo+ID4gQEAgLTEsOSArMSw5IEBADQo+ ID4gIC8qKiBAZmlsZQ0KPiA+ICAgIE1pc2NlbGxhbmVvdXMgcm91dGluZXMgc3BlY2lmaWMgdG8g SHR0cHMgZm9yIEh0dHBEeGUgZHJpdmVyLg0KPiA+DQo+ID4gLUNvcHlyaWdodCAoYykgMjAxNiAt IDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAr Q29weXJpZ2h0IChjKSAyMDE2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiA+ICAoQykgQ29weXJpZ2h0IDIwMTYgSGV3bGV0dCBQYWNrYXJkIEVu dGVycHJpc2UgRGV2ZWxvcG1lbnQgTFA8QlI+DQo+ID4gIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFj Y29tcGFueWluZyBtYXRlcmlhbHMNCj4gPiAgYXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJs ZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRA0KPiBMaWNlbnNlDQo+ ID4gIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAgVGhlIGZ1bGwgdGV4dCBv ZiB0aGUgbGljZW5zZSBtYXkgYmUNCj4gZm91bmQgYXQNCj4gPiAgaHR0cDovL29wZW5zb3VyY2Uu b3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KPiA+IEBAIC00OTIsMTAgKzQ5Miw5MSBAQCBU bHNDb25maWdDZXJ0aWZpY2F0ZSAoDQo+ID4NCj4gPiAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICB9 DQo+ID4NCj4gPiAgLyoqDQo+ID4gKyAgUmVhZCB0aGUgVGxzQ2lwaGVyTGlzdCB2YXJpYWJsZSBh bmQgY29uZmlndXJlIGl0IGZvciBIVFRQUyBzZXNzaW9uLg0KPiA+ICsNCj4gPiArICBAcGFyYW1b aW4sIG91dF0gIEh0dHBJbnN0YW5jZSAgICAgICBUaGUgSFRUUCBpbnN0YW5jZSBwcml2YXRlIGRh dGEuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBUaGUgcHJl ZmVyZWQgVExTIENpcGhlckxpc3QgaXMgY29uZmlndXJlZC4NCj4gPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICAgRmFpbCB0byBnZXQgJ1Rsc0NpcGhlckxpc3QnIHZhcmlhYmxlLg0K PiA+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICBUaGUgY29udGVudHMgb2YgdmFy aWFibGUgYXJlIGludmFsaWQuDQo+ID4gKyAgQHJldHZhbCBFRklfT1VUX09GX1JFU09VUkNFUyAg IENhbid0IGFsbG9jYXRlIG1lbW9yeSByZXNvdXJjZXMuDQo+ID4gKw0KPiA+ICsgIEByZXR2YWwg T3RoZXJzICAgICAgICAgICAgICAgICBPdGhlciBlcnJvciBhcyBpbmRpY2F0ZWQuDQo+ID4gKw0K PiA+ICsqKi8NCj4gPiArRUZJX1NUQVRVUw0KPiA+ICtUbHNDb25maWdDaXBoZXJMaXN0ICgNCj4g PiArICBJTiBPVVQgSFRUUF9QUk9UT0NPTCAgICAgICpIdHRwSW5zdGFuY2UNCj4gPiArICApDQo+ ID4gK3sNCj4gPiArICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsNCj4gPiArICBVSU5UOCAg ICAgICAgICAgICAgICpDaXBoZXJMaXN0Ow0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICAgQ2lw aGVyTGlzdFNpemU7DQo+ID4gKw0KPiA+ICsgIENpcGhlckxpc3QgICAgID0gTlVMTDsNCj4gPiAr ICBDaXBoZXJMaXN0U2l6ZSA9IDA7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gVHJ5IHRv IHJlYWQgdGhlIFRsc0NpcGhlckxpc3QgdmFyaWFibGUuDQo+ID4gKyAgLy8NCj4gPiArICBTdGF0 dXMgID0gZ1JULT5HZXRWYXJpYWJsZSAoDQo+ID4gKyAgICAgICAgICAgICAgICAgICBFREtJSV9U TFNfQ0lQSEVSX0xJU1RfVkFSSUFCTEUsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAmZ1Rsc0Np cGhlckxpc3RHdWlkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgTlVMTCwNCj4gPiArICAgICAg ICAgICAgICAgICAgICZDaXBoZXJMaXN0U2l6ZSwNCj4gPiArICAgICAgICAgICAgICAgICAgIE5V TEwNCj4gPiArICAgICAgICAgICAgICAgICAgICk7DQo+ID4gKw0KPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykgJiYgU3RhdHVzICE9IEVGSV9CVUZGRVJfVE9PX1NNQUxMKSB7DQo+ID4gKyAg ICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gDQo+IEkgdGhpbmsgdGhlIGFib3ZlIEdldFZh cmlhYmxlIHNlcnZpY2UgY2FsbCBjYW4gbmV2ZXIgc3VjY2VlZC4gV2hhdCBhYm91dDoNCj4gDQo+ ICAgQVNTRVJUIChFRklfRVJST1IgKFN0YXR1cykpOw0KPiAgIGlmIChTdGF0dXMgIT0gRUZJX0JV RkZFUl9UT09fU01BTEwpIHsNCj4gICAgIHJldHVybiBTdGF0dXM7DQo+ICAgfQ0KPiANCj4gTm90 IHZlcnkgaW1wb3J0YW50ICh0aGUgYmVoYXZpb3Igd29uJ3QgY2hhbmdlKSwgYnV0IEkgdGhpbmsg dGhpcyBpcw0KPiBiZXR0ZXIgZm9yIGRvY3VtZW50YXRpb24gcHVycG9zZXMuDQo+IA0KPiBUaGUg cGF0Y2ggbG9va3MgZ29vZCB0byBtZSBvdGhlcndpc2UuDQo+IA0KPiBUaGFuayB5b3UhDQo+IExh c3psbw0KPiANCj4gDQo+ID4gKw0KPiA+ICsgIGlmIChDaXBoZXJMaXN0U2l6ZSAlIHNpemVvZiAo RUZJX1RMU19DSVBIRVIpICE9IDApIHsNCj4gPiArICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJB TUVURVI7DQo+ID4gKyAgfQ0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIEFsbG9jYXRlIGJ1 ZmZlciBhbmQgcmVhZCB0aGUgY29uZmlnIHZhcmlhYmxlLg0KPiA+ICsgIC8vDQo+ID4gKyAgQ2lw aGVyTGlzdCA9IEFsbG9jYXRlUG9vbCAoQ2lwaGVyTGlzdFNpemUpOw0KPiA+ICsgIGlmIChDaXBo ZXJMaXN0ID09IE5VTEwpIHsNCj4gPiArICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsN Cj4gPiArICB9DQo+ID4gKw0KPiA+ICsgIFN0YXR1cyA9IGdSVC0+R2V0VmFyaWFibGUgKA0KPiA+ ICsgICAgICAgICAgICAgICAgICBFREtJSV9UTFNfQ0lQSEVSX0xJU1RfVkFSSUFCTEUsDQo+ID4g KyAgICAgICAgICAgICAgICAgICZnVGxzQ2lwaGVyTGlzdEd1aWQsDQo+ID4gKyAgICAgICAgICAg ICAgICAgIE5VTEwsDQo+ID4gKyAgICAgICAgICAgICAgICAgICZDaXBoZXJMaXN0U2l6ZSwNCj4g PiArICAgICAgICAgICAgICAgICAgQ2lwaGVyTGlzdA0KPiA+ICsgICAgICAgICAgICAgICAgICAp Ow0KPiA+ICsgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPiArICAgIC8vDQo+ID4gKyAg ICAvLyBHZXRWYXJpYWJsZSBzdGlsbCBlcnJvciBvciB0aGUgdmFyaWFibGUgaXMgY29ycnVwdGVk Lg0KPiA+ICsgICAgLy8NCj4gPiArICAgIGdvdG8gT05fRVhJVDsNCj4gPiArICB9DQo+ID4gKw0K PiA+ICsgIEFTU0VSVCAoQ2lwaGVyTGlzdCAhPSBOVUxMKTsNCj4gPiArDQo+ID4gKyAgU3RhdHVz ID0gSHR0cEluc3RhbmNlLT5UbHMtPlNldFNlc3Npb25EYXRhICgNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBIdHRwSW5zdGFuY2UtPlRscywNCj4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBFZmlUbHNDaXBoZXJMaXN0LA0KPiA+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIENpcGhlckxpc3QsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQ2lwaGVyTGlzdFNpemUNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICApOw0KPiA+ICsNCj4gPiArT05fRVhJVDoNCj4gPiArICBGcmVlUG9vbCAoQ2lwaGVy TGlzdCk7DQo+ID4gKw0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4gK30NCj4gPiArDQo+ID4g Ky8qKg0KPiA+ICAgIENvbmZpZ3VyZSBUTFMgc2Vzc2lvbiBkYXRhLg0KPiA+DQo+ID4gICAgQHBh cmFtW2luLCBvdXRdICBIdHRwSW5zdGFuY2UgICAgICAgVGhlIEhUVFAgaW5zdGFuY2UgcHJpdmF0 ZSBkYXRhLg0KPiA+DQo+ID4gICAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgIFRMUyBz ZXNzaW9uIGRhdGEgaXMgY29uZmlndXJlZC4NCj4gPiBAQCAtNTUxLDEwICs2MzIsMTkgQEAgVGxz Q29uZmlndXJlU2Vzc2lvbiAoDQo+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+ ICAgICAgcmV0dXJuIFN0YXR1czsNCj4gPiAgICB9DQo+ID4NCj4gPiAgICAvLw0KPiA+ICsgIC8v IFRscyBDaXBoZXIgTGlzdA0KPiA+ICsgIC8vDQo+ID4gKyAgU3RhdHVzID0gVGxzQ29uZmlnQ2lw aGVyTGlzdCAoSHR0cEluc3RhbmNlKTsNCj4gPiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpICYm IFN0YXR1cyAhPSBFRklfTk9UX0ZPVU5EKSB7DQo+ID4gKyAgICBERUJVRyAoKEVGSV9EX0VSUk9S LCAiVGxzQ29uZmlnQ2lwaGVyTGlzdDogcmV0dXJuICVyIGVycm9yLlxuIiwNCj4gU3RhdHVzKSk7 DQo+ID4gKyAgICByZXR1cm4gU3RhdHVzOw0KPiA+ICsgIH0NCj4gPiArDQo+ID4gKyAgLy8NCj4g PiAgICAvLyBUbHMgQ29uZmlnIENlcnRpZmljYXRlDQo+ID4gICAgLy8NCj4gPiAgICBTdGF0dXMg PSBUbHNDb25maWdDZXJ0aWZpY2F0ZSAoSHR0cEluc3RhbmNlKTsNCj4gPiAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4gICAgICBERUJVRyAoKEVGSV9EX0VSUk9SLCAiVGxzQ29uZmln Q2VydGlmaWNhdGU6IHJldHVybiAlciBlcnJvci5cbiIsDQo+IFN0YXR1cykpOw0KPiA+DQoNCg==