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.43; helo=mga05.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 21A58210D439A for ; Wed, 1 Aug 2018 21:07:08 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Aug 2018 21:07:07 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,434,1526367600"; d="scan'208";a="59784610" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga008.fm.intel.com with ESMTP; 01 Aug 2018 21:07:01 -0700 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 1 Aug 2018 21:07:01 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 1 Aug 2018 21:07:00 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.81]) by shsmsx102.ccr.corp.intel.com ([169.254.2.124]) with mapi id 14.03.0319.002; Thu, 2 Aug 2018 12:06:57 +0800 From: "Gao, Liming" To: Laszlo Ersek , "Ni, Ruiyu" , edk2-devel-01 CC: "Zhang, Chao B" , "Dong, Eric" , "Carsey, Jaben" , "Wu, Jiaxin" , "Yao, Jiewen" , "Kinney, Michael D" , Roman Bacik , "Fu, Siyuan" , "Zeng, Star" Thread-Topic: [PATCH 1/6] MdePkg/UefiLib: introduce EfiOpenFileByDevicePath() Thread-Index: AQHUHtkHwt/iAKJhYkC7KCEcRh+8N6SiVKKAgAAr9gCABAwgAIAAzpEAgANDt8A= Date: Thu, 2 Aug 2018 04:06:57 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E2C466F@SHSMSX104.ccr.corp.intel.com> References: <20180718205043.17574-1-lersek@redhat.com> <20180718205043.17574-2-lersek@redhat.com> <425d0b30-a322-23c7-6d56-8f23696b86cd@Intel.com> <9bb5eed1-f8b0-8d22-e801-53ba7a06cdc5@redhat.com> <57ac2b07-41fc-d01d-e20b-9be4a68a0f1b@Intel.com> <4a445d20-4216-545d-cc2e-ee21bdb90925@redhat.com> In-Reply-To: <4a445d20-4216-545d-cc2e-ee21bdb90925@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 1/6] MdePkg/UefiLib: introduce EfiOpenFileByDevicePath() X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.27 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 02 Aug 2018 04:07:08 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvOg0KICBJIGhhdmUgbm8gb3RoZXIgY29tbWVudHMuIEludGVsRnJhbWV3b3JrUGtnIGhh cyBhbm90aGVyIFVlZmlMaWIgbGlicmFyeSBpbnN0YW5jZSBGcmFtZXdvcmtVZWZpTGliLiBDb3Vs ZCB5b3UgaGVscCB1cGRhdGUgaXQgYWxzbz8NCg0KICBGb3IgTWRlUGtnLCB5b3UgY2FuIGFkZCBS ZXZpZXdlZC1ieTogTGltaW5nIEdhbyA8bGltaW5nLmdhb0BpbnRlbC5jb20+DQoNClRoYW5rcw0K TGltaW5nDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBMYXN6bG8gRXJzZWsg W21haWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj5TZW50OiBNb25kYXksIEp1bHkgMzAsIDIwMTgg MTA6MTQgUE0NCj5UbzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+OyBlZGsyLWRldmVs LTAxIDxlZGsyLWRldmVsQGxpc3RzLjAxLm9yZz4NCj5DYzogWmhhbmcsIENoYW8gQiA8Y2hhby5i LnpoYW5nQGludGVsLmNvbT47IERvbmcsIEVyaWMNCj48ZXJpYy5kb25nQGludGVsLmNvbT47IENh cnNleSwgSmFiZW4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+OyBXdSwgSmlheGluDQo+PGppYXhp bi53dUBpbnRlbC5jb20+OyBZYW8sIEppZXdlbiA8amlld2VuLnlhb0BpbnRlbC5jb20+OyBHYW8s IExpbWluZw0KPjxsaW1pbmcuZ2FvQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+Um9tYW4gQmFjaWsgPHJvbWFuLmJhY2lrQGJyb2Fk Y29tLmNvbT47IEZ1LCBTaXl1YW4NCj48c2l5dWFuLmZ1QGludGVsLmNvbT47IFplbmcsIFN0YXIg PHN0YXIuemVuZ0BpbnRlbC5jb20+DQo+U3ViamVjdDogUmU6IFtQQVRDSCAxLzZdIE1kZVBrZy9V ZWZpTGliOiBpbnRyb2R1Y2UNCj5FZmlPcGVuRmlsZUJ5RGV2aWNlUGF0aCgpDQo+DQo+T24gMDcv MzAvMTggMDM6NTQsIE5pLCBSdWl5dSB3cm90ZToNCj4+IE9uIDcvMjcvMjAxOCA4OjA2IFBNLCBM YXN6bG8gRXJzZWsgd3JvdGU6DQo+Pj4gT24gMDcvMjcvMTggMTE6MjgsIE5pLCBSdWl5dSB3cm90 ZToNCj4+Pj4gT24gNy8xOS8yMDE4IDQ6NTAgQU0sIExhc3psbyBFcnNlayB3cm90ZToNCj4+Pj4N Cj4+Pj4+ICvCoCAvLw0KPj4+Pj4gK8KgIC8vIFRyYXZlcnNlIHRoZSBkZXZpY2UgcGF0aCBub2Rl cyByZWxhdGl2ZSB0byB0aGUgZmlsZXN5c3RlbS4NCj4+Pj4+ICvCoCAvLw0KPj4+Pj4gK8KgIHdo aWxlICghSXNEZXZpY2VQYXRoRW5kICgqRmlsZVBhdGgpKSB7DQo+Pj4+PiArwqDCoMKgIC8vDQo+ Pj4+PiArwqDCoMKgIC8vIEtlZXAgbG9jYWwgdmFyaWFibGVzIHRoYXQgcmVsYXRlIHRvIHRoZSBj dXJyZW50IGRldmljZSBwYXRoDQo+Pj4+PiBub2RlIHRpZ2h0bHkNCj4+Pj4+ICvCoMKgwqAgLy8g c2NvcGVkLg0KPj4+Pj4gK8KgwqDCoCAvLw0KPj4+Pj4gK8KgwqDCoCBGSUxFUEFUSF9ERVZJQ0Vf UEFUSCAqRmlsZVBhdGhOb2RlOw0KPj4+Pj4gK8KgwqDCoCBDSEFSMTbCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICpBbGlnbmVkUGF0aE5hbWU7DQo+Pj4+PiArwqDCoMKgIENIQVIxNsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKlBhdGhOYW1lOw0KPj4+Pj4gK8KgwqDCoCBFRklfRklM RV9QUk9UT0NPTMKgwqDCoCAqTmV4dEZpbGU7DQo+Pj4+IDEuIE5vdCBzdXJlIGlmIGl0IGZvbGxv d3MgdGhlIGNvZGluZyBzdHlsZS4gSSB3b3VsZCBwcmVmZXIgdG8gbW92ZSB0aGUNCj4+Pj4gZGVm aW5pdGlvbiB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmdW5jdGlvbi4NCj4+Pg0KPj4+IE9LLCB3 aWxsIGRvLg0KPj4NCj4+IFRoYW5rcyENCj4+DQo+Pj4NCj4+Pj4NCj4+Pj4+ICsNCj4+Pj4+ICvC oMKgwqAgaWYgKERldmljZVBhdGhUeXBlICgqRmlsZVBhdGgpICE9IE1FRElBX0RFVklDRV9QQVRI IHx8DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqAgRGV2aWNlUGF0aFN1YlR5cGUgKCpGaWxlUGF0aCkg IT0gTUVESUFfRklMRVBBVEhfRFApIHsNCj4+Pj4+ICvCoMKgwqDCoMKgIFN0YXR1cyA9IEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4+Pj4+ICvCoMKgwqDCoMKgIGdvdG8gQ2xvc2VMYXN0RmlsZTsN Cj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gK8KgwqDCoCBGaWxlUGF0aE5vZGUgPSAoRklMRVBBVEhf REVWSUNFX1BBVEggKikqRmlsZVBhdGg7DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8vDQo+Pj4+ PiArwqDCoMKgIC8vIEZpbGVQYXRoTm9kZS0+UGF0aE5hbWUgbWF5IGJlIHVuYWxpZ25lZCwgYW5k IHRoZSBVRUZJDQo+Pj4+PiBzcGVjaWZpY2F0aW9uDQo+Pj4+PiArwqDCoMKgIC8vIHJlcXVpcmVz IHBvaW50ZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBwcm90b2NvbCBtZW1iZXIgZnVuY3Rpb25zDQo+ Pj4+PiB0byBiZQ0KPj4+Pj4gK8KgwqDCoCAvLyBhbGlnbmVkLiBDcmVhdGUgYW4gYWxpZ25lZCBj b3B5IG9mIHRoZSBwYXRobmFtZSBpZiBuZWNlc3NhcnkuDQo+Pj4+PiArwqDCoMKgIC8vDQo+Pj4+ PiArwqDCoMKgIGlmICgoVUlOVE4pRmlsZVBhdGhOb2RlLT5QYXRoTmFtZSAlIHNpemVvZg0KPj4+ Pj4gKkZpbGVQYXRoTm9kZS0+UGF0aE5hbWUgPT0gMCkgew0KPj4+Pj4gK8KgwqDCoMKgwqAgQWxp Z25lZFBhdGhOYW1lID0gTlVMTDsNCj4+Pj4+ICvCoMKgwqDCoMKgIFBhdGhOYW1lID0gRmlsZVBh dGhOb2RlLT5QYXRoTmFtZTsNCj4+Pj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+Pj4+ICvCoMKgwqDC oMKgIEFsaWduZWRQYXRoTmFtZSA9IEFsbG9jYXRlQ29weVBvb2wgKA0KPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChEZXZpY2VQYXRoTm9k ZUxlbmd0aCAoRmlsZVBhdGhOb2RlKSAtDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBTSVpFX09GX0ZJTEVQQVRIX0RFVklDRV9QQVRI KSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBGaWxlUGF0aE5vZGUtPlBhdGhOYW1lDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKTsNCj4+Pj4+ICvCoMKgwqDCoMKgIGlmIChB bGlnbmVkUGF0aE5hbWUgPT0gTlVMTCkgew0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIFN0YXR1cyA9 IEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gQ2xvc2VM YXN0RmlsZTsNCj4+Pj4+ICvCoMKgwqDCoMKgIH0NCj4+Pj4+ICvCoMKgwqDCoMKgIFBhdGhOYW1l ID0gQWxpZ25lZFBhdGhOYW1lOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiArwqDC oMKgIC8vDQo+Pj4+PiArwqDCoMKgIC8vIE9wZW4gdGhlIG5leHQgcGF0aG5hbWUgZnJhZ21lbnQg d2l0aCBFRklfRklMRV9NT0RFX0NSRUFURQ0KPj4+Pj4gbWFza2VkIG91dCBhbmQNCj4+Pj4+ICvC oMKgwqAgLy8gd2l0aCBBdHRyaWJ1dGVzIHNldCB0byAwLg0KPj4+Pj4gK8KgwqDCoCAvLw0KPj4+ Pj4gK8KgwqDCoCBTdGF0dXMgPSBMYXN0RmlsZS0+T3BlbiAoDQo+Pj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIExhc3RGaWxlLA0KPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmTmV4dEZpbGUs DQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFBhdGhOYW1lLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBPcGVuTW9kZSAmIH4oVUlOVDY0KUVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPj4+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAwDQo+ Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICk7 DQo+Pj4+IDIuIEFzIEkgc2FpZCBpbiBwcmV2aW91cyBtYWlsLCBpcyBpdCByZWFsbHkgbmVlZGVk Pw0KPj4+PiBQZXIgc3BlYyBpdCdzIG5vdCByZXF1aXJlZC4gUGVyIEZBVCBkcml2ZXIgaW1wbGVt ZW50YXRpb24sIGl0J3MgYWxzbyBub3QNCj4+Pj4gcmVxdWlyZWQuDQo+Pj4NCj4+PiBJIGNhbiBk byB0aGF0LCBidXQgaXQncyBvdXQgb2Ygc2NvcGUgZm9yIHRoaXMgc2VyaWVzLiBUaGUgYmVoYXZp b3IgdGhhdA0KPj4+IHlvdSBwb2ludCBvdXQgaXMgbm90IGEgZnVuY3Rpb25hbGl0eSBidWcgKGl0 IGlzIG5vdCBvYnNlcnZhYmx5IGVycm9uZW91cw0KPj4+IGJlaGF2aW9yKSwganVzdCBzdWItb3B0 aW1hbCBpbXBsZW1lbnRhdGlvbi4gVGhpcyBzZXJpZXMgaXMgYWJvdXQNCj4+PiB1bmlmeWluZyB0 aGUgaW1wbGVtZW50YXRpb24gYW5kIGZpeGluZyB0aG9zZSBpc3N1ZXMgdGhhdCBhcmUgYWN0dWFs DQo+Pj4gYnVncy4gSSBzdWdnZXN0IHRoYXQgd2UgcmVwb3J0IGEgc2VwYXJhdGUgQlogYWJvdXQg dGhpcyBxdWVzdGlvbiwNCj4+PiBkaXNjdXNzIGl0IHNlcGFyYXRlbHksIGFuZCB0aGVuIEkgY2Fu IHNlbmQgYSBzZXBhcmF0ZSBwYXRjaCAod2hpY2ggd2lsbA0KPj4+IGJlbmVmaXQgYWxsIGNsaWVu dCBjb2RlIGF0IG9uY2UpLg0KPj4+DQo+Pj4gRG9lcyB0aGF0IHNvdW5kIGFjY2VwdGFibGU/DQo+ Pg0KPj4gSSBhZ3JlZS4NCj4+DQo+Pj4NCj4+Pj4NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLy8N Cj4+Pj4+ICvCoMKgwqAgLy8gUmV0cnkgd2l0aCBFRklfRklMRV9NT0RFX0NSRUFURSBhbmQgdGhl IG9yaWdpbmFsIEF0dHJpYnV0ZXMgaWYNCj4+Pj4+IHRoZSBmaXJzdA0KPj4+Pj4gK8KgwqDCoCAv LyBhdHRlbXB0IGZhaWxlZCwgYW5kIHRoZSBjYWxsZXIgc3BlY2lmaWVkIEVGSV9GSUxFX01PREVf Q1JFQVRFLg0KPj4+Pj4gK8KgwqDCoCAvLw0KPj4+Pj4gK8KgwqDCoCBpZiAoRUZJX0VSUk9SIChT dGF0dXMpICYmIChPcGVuTW9kZSAmDQo+RUZJX0ZJTEVfTU9ERV9DUkVBVEUpICE9DQo+Pj4+PiAw KSB7DQo+Pj4+PiArwqDCoMKgwqDCoCBTdGF0dXMgPSBMYXN0RmlsZS0+T3BlbiAoDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBMYXN0 RmlsZSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICZOZXh0RmlsZSwNCj4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFBhdGhOYW1lLA0KPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgT3Blbk1vZGUsDQo+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBdHRy aWJ1dGVzDQo+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCApOw0KPj4+Pj4gK8KgwqDCoCB9DQo+Pj4+PiArDQo+Pj4+PiArwqDCoMKgIC8v DQo+Pj4+PiArwqDCoMKgIC8vIFJlbGVhc2UgYW55IEFsaWduZWRQYXRoTmFtZSBvbiBib3RoIGVy cm9yIGFuZCBzdWNjZXNzIHBhdGhzOw0KPj4+Pj4gUGF0aE5hbWUgaXMNCj4+Pj4+ICvCoMKgwqAg Ly8gbm8gbG9uZ2VyIG5lZWRlZC4NCj4+Pj4+ICvCoMKgwqAgLy8NCj4+Pj4+ICvCoMKgwqAgaWYg KEFsaWduZWRQYXRoTmFtZSAhPSBOVUxMKSB7DQo+Pj4+PiArwqDCoMKgwqDCoCBGcmVlUG9vbCAo QWxpZ25lZFBhdGhOYW1lKTsNCj4+Pj4+ICvCoMKgwqAgfQ0KPj4+Pj4gK8KgwqDCoCBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7DQo+Pj4+PiArwqDCoMKgwqDCoCBnb3RvIENsb3NlTGFzdEZpbGU7 DQo+Pj4+PiArwqDCoMKgIH0NCj4+Pj4+ICsNCj4+Pj4+ICvCoMKgwqAgLy8NCj4+Pj4+ICvCoMKg wqAgLy8gQWR2YW5jZSB0byB0aGUgbmV4dCBkZXZpY2UgcGF0aCBub2RlLg0KPj4+Pj4gK8KgwqDC oCAvLw0KPj4+Pj4gK8KgwqDCoCBMYXN0RmlsZS0+Q2xvc2UgKExhc3RGaWxlKTsNCj4+Pj4+ICvC oMKgwqAgTGFzdEZpbGUgPSBOZXh0RmlsZTsNCj4+Pj4+ICvCoMKgwqAgKkZpbGVQYXRoID0gTmV4 dERldmljZVBhdGhOb2RlIChGaWxlUGF0aE5vZGUpOw0KPj4+Pj4gK8KgIH0NCj4+Pj4+ICsNCj4+ Pj4+ICvCoCAqRmlsZSA9IExhc3RGaWxlOw0KPj4+Pj4gK8KgIHJldHVybiBFRklfU1VDQ0VTUzsN Cj4+Pj4+ICsNCj4+Pj4+ICtDbG9zZUxhc3RGaWxlOg0KPj4+Pj4gK8KgIExhc3RGaWxlLT5DbG9z ZSAoTGFzdEZpbGUpOw0KPj4+Pj4gKw0KPj4+Pj4gK8KgIEFTU0VSVCAoRUZJX0VSUk9SIChTdGF0 dXMpKTsNCj4+Pj4gMy4gQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4+Pg0KPj4+IE5vLCB0 aGF0J3Mgbm90IGNvcnJlY3Q7IEkgKnJlYWxseSogbWVhbnQNCj4+Pg0KPj4+IMKgwqAgQVNTRVJU IChFRklfRVJST1IgKFN0YXR1cykpDQo+Pj4NCj4+PiBQbGVhc2UgZmluZCB0aGUgZXhwbGFuYXRp b24gaGVyZToNCj4+Pg0KPj4+IGh0dHBzOi8vbGlzdHMuMDEub3JnL3BpcGVybWFpbC9lZGsyLWRl dmVsLzIwMTgtSnVseS8wMjcyODguaHRtbA0KPj4+DQo+Pj4gSG93ZXZlciwgZ2l2ZW4gdGhhdCBi b3RoIEphYmVuIGFuZCB5b3Ugd2VyZSBjb25mdXNlZCBieSB0aGlzLCBJIGFncmVlDQo+Pj4gdGhh dCBJIHNob3VsZCBhZGQgYSBjb21tZW50IGJlZm9yZSB0aGUgYXNzZXJ0Og0KPj4+DQo+Pj4gwqDC oCAvLw0KPj4+IMKgwqAgLy8gV2UgYXJlIG9uIHRoZSBlcnJvciBwYXRoOyB3ZSBtdXN0IGhhdmUg c2V0IGFuIGVycm9yIFN0YXR1cyBmb3INCj4+PiDCoMKgIC8vIHJldHVybmluZyB0byB0aGUgY2Fs bGVyLg0KPj4+IMKgwqAgLy8NCj4+DQo+PiBJIGp1c3QgZm91bmQgdGhlcmUgaXMgbm8gIiEiIGJl Zm9yZSAiRUZJX0VSUk9SIi4NCj4+IEl0J3MgcmVhbGx5IGNvbmZ1c2luZy4gSSBhZ3JlZSBhIGNv bW1lbnQgYmVmb3JlIHRoYXQgaXMgYmV0dGVyLg0KPj4gVGhhbmtzIQ0KPj4NCj4+IFdpdGggdGhl IGNvbW1lbnQgYWRkZWQsIFJldmlld2VkLWJ5OiBSdWl5dSBOaSA8cnVpeXUubmlAaW50ZWwuY29t Pg0KPg0KPlRoYW5rcywgUmF5IC0tIGxvb2tzIGxpa2UgSSd2ZSBhbG1vc3QgZ290IGVub3VnaCBm ZWVkYmFjayBmb3IgcG9zdGluZw0KPnYyOyBob3dldmVyIEkgaGF2ZW4ndCByZWNlaXZlZCBhbnkg TWRlUGtnIG1haW50YWluZXIgZmVlZGJhY2sgKGZyb20gTWlrZQ0KPmFuZC9vciBMaW1pbmcpIHll dC4gQW0gSSB0byB1bmRlcnN0YW5kIHlvdXIgcmV2aWV3IGFzIGEgc3Vic3RpdHV0ZSBmb3INCj50 aGVpcnMsIG9yIGFzIGFuIGFkZGl0aW9uIHRvIHRoZWlycz8NCj4NCj5UaGFua3MhDQo+TGFzemxv DQo=