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.136; helo=mga12.intel.com; envelope-from=jiewen.yao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) (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 5DF342098C8B6 for ; Thu, 19 Jul 2018 06:03:15 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 19 Jul 2018 06:03:14 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.51,374,1526367600"; d="scan'208";a="58946570" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga006.jf.intel.com with ESMTP; 19 Jul 2018 06:03:14 -0700 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 19 Jul 2018 06:03:13 -0700 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.124]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.173]) with mapi id 14.03.0319.002; Thu, 19 Jul 2018 21:03:10 +0800 From: "Yao, Jiewen" To: Laszlo Ersek CC: edk2-devel-01 , "Zhang, Chao B" , "Dong, Eric" , "Carsey, Jaben" , "Wu, Jiaxin" , "Gao, Liming" , "Kinney, Michael D" , Roman Bacik , "Ni, Ruiyu" , "Fu, Siyuan" , "Zeng, Star" , "Yao, Jiewen" Thread-Topic: [PATCH 1/6] MdePkg/UefiLib: introduce EfiOpenFileByDevicePath() Thread-Index: AQHUHtkHk9gu9//slUuamVfCosiu+6SVm0HRgAA8pICAAKwFQA== Date: Thu, 19 Jul 2018 13:03:10 +0000 Message-ID: <74D8A39837DF1E4DA445A8C0B3885C503ACB6C6D@shsmsx102.ccr.corp.intel.com> References: <20180718205043.17574-1-lersek@redhat.com> <20180718205043.17574-2-lersek@redhat.com> <097C42DC-FC1C-4A85-BE9D-C826F9ADBADB@intel.com> <14d68d9a-5780-1523-d03f-611562c15bc9@redhat.com> In-Reply-To: <14d68d9a-5780-1523-d03f-611562c15bc9@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNGRmOTk0ZDMtNWNjOS00ODlhLWFiNjgtZmUxZGQ1ZDVlOWZiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoicmJGV3hrWlRVWnA1UG9DSGtiVzk1dVN1dlcrV3hJTGVvY2I3bVNWdEtLMzh4VitRWkJcLzhiR3o3MVBtRUNzTUQifQ== x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action 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, 19 Jul 2018 13:03:15 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Q29vbC4gVGhhbmtzIQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTog TGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+IFNlbnQ6IFRodXJzZGF5 LCBKdWx5IDE5LCAyMDE4IDY6NDcgUE0NCj4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGlu dGVsLmNvbT4NCj4gQ2M6IGVkazItZGV2ZWwtMDEgPGVkazItZGV2ZWxAbGlzdHMuMDEub3JnPjsg WmhhbmcsIENoYW8gQg0KPiA8Y2hhby5iLnpoYW5nQGludGVsLmNvbT47IERvbmcsIEVyaWMgPGVy aWMuZG9uZ0BpbnRlbC5jb20+OyBDYXJzZXksIEphYmVuDQo+IDxqYWJlbi5jYXJzZXlAaW50ZWwu Y29tPjsgV3UsIEppYXhpbiA8amlheGluLnd1QGludGVsLmNvbT47IEdhbywgTGltaW5nDQo+IDxs aW1pbmcuZ2FvQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT47DQo+IFJvbWFuIEJhY2lrIDxyb21hbi5iYWNpa0Bicm9hZGNvbS5jb20+OyBO aSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47DQo+IEZ1LCBTaXl1YW4gPHNpeXVhbi5mdUBp bnRlbC5jb20+OyBaZW5nLCBTdGFyIDxzdGFyLnplbmdAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBS ZTogW1BBVENIIDEvNl0gTWRlUGtnL1VlZmlMaWI6IGludHJvZHVjZSBFZmlPcGVuRmlsZUJ5RGV2 aWNlUGF0aCgpDQo+IA0KPiBPbiAwNy8xOS8xOCAwMToxMCwgWWFvLCBKaWV3ZW4gd3JvdGU6DQo+ ID4gVGhhbmtzIExhc3psby4NCj4gPg0KPiA+IFdvdWxkIHlvdSBwbGVhc2UgYWRkIG9uZSBsaW5l IGNvbW1lbnQgb24gdGhlIEZpbGVQYXRoLCB0byBkZXNjcmliZSBpZiB0aGUNCj4gRmlsZVBhdGgg aXMgaW50ZXJuYWwgaW5wdXQgb3IgZXh0ZXJuYWwgaW5wdXQ/IEFzIHN1Y2ggdGhlIEFQSSBjb25z dW1lciBjYW4NCj4ga25vdyBpZiBjYWxsZXKhr3MgcmVzcG9uc2liaWxpdHkgdG8gdmVyaWZ5IGl0 IG9yIGNhbGxlZaGvcyByZXNwb25zaWJpbGl0eS4NCj4gDQo+IEdvb2QgcG9pbnQuIFRoZSBjYWxs ZXIgaXMgcmVzcG9uc2libGUgZm9yIGVuc3VyaW5nIHRoZSB3ZWxsLWZvcm1lZG5lc3MNCj4gb2Yg dGhlIGRldmljZSBwYXRoIHBvaW50ZWQtdG8gYnkgKCpGaWxlUGF0aCkuIFRoZSBmdW5jdGlvbiB1 c2VzDQo+IERldmljZVBhdGhMaWIgQVBJcyBzdWNoIGFzIE5leHREZXZpY2VQYXRoTm9kZSgpLCBh bmQgaWYgZS5nLiBzb21lIGRldmljZQ0KPiBwYXRoIG5vZGUgaGVhZGVycyBhcmUgaW52YWxpZCAo Y29udGFpbmluZyBib2d1cyBsZW5ndGhzLCBmb3IgZXhhbXBsZSksDQo+IHRoZW4gdGhlIGZ1bmN0 aW9uIHdvbid0IHdvcmsgYXMgZXhwZWN0ZWQuDQo+IA0KPiBJJ2xsIGFkZCBzdWNoIGEgY29tbWVu dC4NCj4gDQo+ID4gRm9yIGV4YW1wbGUsIGlmIHRoZSBjYWxsZXIgZ2V0cyBwYXRoIGZyb20gYSBy ZWFkIHdyaXRlIHZhcmlhYmxlLCBhbmQgaW5wdXQgaXQNCj4gZGlyZWN0bHksIHRoZSB0aGlzIEFQ SSBuZWVkIHZhbGlkYXRlIGJlZm9yZSB1c2UuDQo+ID4gSWYgdGhlIGNhbGxlciBhbHJlYWR5IGRv ZXMgdGhlIHZlcmlmaWNhdGlvbiwgdGhlbiB0aGlzIEFQSSBjYW4gdXNlIGl0IGRpcmVjdGx5Lg0K PiANCj4gUmlnaHQuDQo+IA0KPiAoQSBzZXBhcmF0ZSBxdWVzdGlvbiB3b3VsZCBiZSBpZiBlZGsy IG9mZmVycyBmYWNpbGl0aWVzIGZvciB2ZXJpZnlpbmcNCj4gdGhlIHdlbGwtZm9ybWVkbmVzcyBv ZiBhbnkgZ2l2ZW4gZGV2aWNlIHBhdGggLS0gaXQgbG9va3MgbGlrZSBhIGNvbXBsZXgNCj4gdGFz aywgdG8gaW1wbGVtZW50IGV2ZXJ5d2hlcmUuKQ0KPiANCj4gSW4gdGhpcyBzZXJpZXMgSSdkIGp1 c3QgbGlrZSB0byBleHRyYWN0IHRoZSBkdXBsaWNhdGVkIGNvZGUgdG8gYSBjb21tb24NCj4gbG9j YXRpb24sIGFuZCBmaXggaXRzIGJ1Z3MuIEkgZGlkbid0IHRyeSB0byBjaGFuZ2UgdGhlIGludGVy ZmFjZQ0KPiBjb250cmFjdCAoanVzdCB0byBkb2N1bWVudCBpdCBtb3JlIHByZWNpc2VseSkuIElm IHdlJ2QgbGlrZSB0byAiYXJtb3IiDQo+IHRoaXMgZnVuY3Rpb24gYWdhaW5zdCBtYWxpY2lvdXNs eSBmb3JtYXR0ZWQgZGV2aWNlIHBhdGhzLCBJTU8gdGhhdA0KPiBzaG91bGQgYmUgZG9uZSBzZXBh cmF0ZWx5Lg0KPiANCj4gU28gSSBhZ3JlZSB0aGF0IHRoZSBjb21tZW50IHlvdSBzdWdnZXN0IHNo b3VsZCBiZSBhZGRlZC4NCj4gDQo+ID4gU2FuaXR5IGNoZWNrIGlzIGp1c3QgZm9yIHRoZSBmb3Jt YXQsIG5vdCB0aGUgY29udGVudC4NCj4gPiBUaGUgcXVlc3Rpb24gSSBoYXZlIGlzOiBXaGVyZSBz aG91bGQgdGhlIHNhbml0eSBjaGVjayBiZT8NCj4gDQo+IEF0IHRoZSBtb21lbnQ6IGluIHRoZSBj YWxsZXIuDQo+IA0KPiBUaGFua3MhDQo+IExhc3psbw0KPiANCj4gPg0KPiA+IHRoYW5rIHlvdSEN Cj4gPiBZYW8sIEppZXdlbg0KPiA+DQo+ID4NCj4gPj4g1NogMjAxOMTqN9TCMTnI1aOsyc/O5zQ6 NTCjrExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+INC0DQo+ILXAo7oNCj4gPj4NCj4g Pj4gVGhlIEVmaU9wZW5GaWxlQnlEZXZpY2VQYXRoKCkgZnVuY3Rpb24gY2VudHJhbGl6ZXMgZnVu Y3Rpb25hbGl0eSBmcm9tDQo+ID4+DQo+ID4+IC0gTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9EaXNr L1JhbURpc2tEeGUNCj4gPj4gLSBOZXR3b3JrUGtnL1Rsc0F1dGhDb25maWdEeGUNCj4gPj4gLSBT ZWN1cml0eVBrZy9WYXJpYWJsZUF1dGhlbnRpY2F0ZWQvU2VjdXJlQm9vdENvbmZpZ0R4ZQ0KPiA+ PiAtIFNoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsTGliDQo+ID4+DQo+ID4+IHVuaWZ5aW5nIHRo ZSBpbXBsZW1lbnRhdGlvbiBhbmQgZml4aW5nIHZhcmlvdXMgYnVncy4NCj4gPj4NCj4gPj4gQ2M6 IENoYW8gWmhhbmcgPGNoYW8uYi56aGFuZ0BpbnRlbC5jb20+DQo+ID4+IENjOiBFcmljIERvbmcg PGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4+IENjOiBKYWJlbiBDYXJzZXkgPGphYmVuLmNhcnNl eUBpbnRlbC5jb20+DQo+ID4+IENjOiBKaWF4aW4gV3UgPGppYXhpbi53dUBpbnRlbC5jb20+DQo+ ID4+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPj4gQ2M6IExpbWlu ZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+PiBDYzogTWljaGFlbCBEIEtpbm5leSA8 bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4+IENjOiBSb21hbiBCYWNpayA8cm9tYW4u YmFjaWtAYnJvYWRjb20uY29tPg0KPiA+PiBDYzogUnVpeXUgTmkgPHJ1aXl1Lm5pQGludGVsLmNv bT4NCj4gPj4gQ2M6IFNpeXVhbiBGdSA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCj4gPj4gQ2M6IFN0 YXIgWmVuZyA8c3Rhci56ZW5nQGludGVsLmNvbT4NCj4gPj4gUmVmOiBodHRwczovL2J1Z3ppbGxh LnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDgNCj4gPj4gQ29udHJpYnV0ZWQtdW5k ZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiA+PiBTaWduZWQtb2Zm LWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+PiAtLS0NCj4gPj4gTWRl UGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmluZiB8ICAgMSArDQo+ID4+IE1kZVBrZy9JbmNs dWRlL0xpYnJhcnkvVWVmaUxpYi5oICAgfCAgODYgKysrKysrKysNCj4gPj4gTWRlUGtnL0xpYnJh cnkvVWVmaUxpYi9VZWZpTGliLmMgICB8IDIyNiArKysrKysrKysrKysrKysrKysrKw0KPiA+PiAz IGZpbGVzIGNoYW5nZWQsIDMxMyBpbnNlcnRpb25zKCspDQo+ID4+DQo+ID4+IGRpZmYgLS1naXQg YS9NZGVQa2cvTGlicmFyeS9VZWZpTGliL1VlZmlMaWIuaW5mDQo+IGIvTWRlUGtnL0xpYnJhcnkv VWVmaUxpYi9VZWZpTGliLmluZg0KPiA+PiBpbmRleCBmNjlmMGE0M2I1NzYuLmE2YzczOWVmM2Q2 ZCAxMDA2NDQNCj4gPj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmluZg0K PiA+PiArKysgYi9NZGVQa2cvTGlicmFyeS9VZWZpTGliL1VlZmlMaWIuaW5mDQo+ID4+IEBAIC02 OCw2ICs2OCw3IEBAIFtQcm90b2NvbHNdDQo+ID4+ICAgZ0VmaVNpbXBsZVRleHRPdXRQcm90b2Nv bEd1aWQgICAgICAgICAgICAgICAgICAgIyMNCj4gU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4+ICAg Z0VmaUdyYXBoaWNzT3V0cHV0UHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICAgIyMNCj4gU09N RVRJTUVTX0NPTlNVTUVTDQo+ID4+ICAgZ0VmaUhpaUZvbnRQcm90b2NvbEd1aWQgICAgICAgICAg ICAgICAgICAgICAgICAgIyMNCj4gU09NRVRJTUVTX0NPTlNVTUVTDQo+ID4+ICsgIGdFZmlTaW1w bGVGaWxlU3lzdGVtUHJvdG9jb2xHdWlkICAgICAgICAgICAgICAgICMjDQo+IFNPTUVUSU1FU19D T05TVU1FUw0KPiA+PiAgIGdFZmlVZ2FEcmF3UHJvdG9jb2xHdWlkIHwNCj4gZ0VmaU1kZVBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFVnYUNvbnN1bWVTdXBwb3J0ICAgICAgICAgICAgICAgICAjIw0KPiBT T01FVElNRVNfQ09OU1VNRVMgIyBDb25zdW1lcyBpZiBnRWZpR3JhcGhpY3NPdXRwdXRQcm90b2Nv bEd1aWQNCj4gdW5pbnN0YWxsZWQNCj4gPj4gICBnRWZpQ29tcG9uZW50TmFtZVByb3RvY29sR3Vp ZCAgfCBOT1QNCj4gZ0VmaU1kZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENvbXBvbmVudE5hbWVEaXNh YmxlICAgIyMNCj4gU09NRVRJTUVTX1BST0RVQ0VTICMgVXNlciBjaG9vc2VzIHRvIHByb2R1Y2Ug aXQNCj4gPj4gICBnRWZpQ29tcG9uZW50TmFtZTJQcm90b2NvbEd1aWQgfCBOT1QNCj4gZ0VmaU1k ZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZENvbXBvbmVudE5hbWUyRGlzYWJsZSAgIyMNCj4gU09NRVRJ TUVTX1BST0RVQ0VTICMgVXNlciBjaG9vc2VzIHRvIHByb2R1Y2UgaXQNCj4gPj4gZGlmZiAtLWdp dCBhL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+IGIvTWRlUGtnL0luY2x1ZGUv TGlicmFyeS9VZWZpTGliLmgNCj4gPj4gaW5kZXggN2M2ZmRlNjIwYzc0Li4yNDY4YmYyYWVlODAg MTAwNjQ0DQo+ID4+IC0tLSBhL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4+ ICsrKyBiL01kZVBrZy9JbmNsdWRlL0xpYnJhcnkvVWVmaUxpYi5oDQo+ID4+IEBAIC0zMyw2ICsz Myw4IEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YNCj4gQU5ZIEtJ TkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuDQo+ID4+ICNpbmNsdWRlIDxQcm90b2NvbC9E cml2ZXJEaWFnbm9zdGljcy5oPg0KPiA+PiAjaW5jbHVkZSA8UHJvdG9jb2wvRHJpdmVyRGlhZ25v c3RpY3MyLmg+DQo+ID4+ICNpbmNsdWRlIDxQcm90b2NvbC9HcmFwaGljc091dHB1dC5oPg0KPiA+ PiArI2luY2x1ZGUgPFByb3RvY29sL0RldmljZVBhdGguaD4NCj4gPj4gKyNpbmNsdWRlIDxQcm90 b2NvbC9TaW1wbGVGaWxlU3lzdGVtLmg+DQo+ID4+DQo+ID4+ICNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VMaWIuaD4NCj4gPj4NCj4gPj4gQEAgLTE1MjAsNCArMTUyMiw4OCBAQCBFZmlMb2NhdGVQcm90 b2NvbEJ1ZmZlciAoDQo+ID4+ICAgT1VUIFVJTlROICAgICAqTm9Qcm90b2NvbHMsDQo+ID4+ICAg T1VUIFZPSUQgICAgICAqKipCdWZmZXINCj4gPj4gICApOw0KPiA+PiArDQo+ID4+ICsvKioNCj4g Pj4gKyAgT3BlbiBvciBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgcG9zc2libHkgY3JlYXRp bmcgdGhlIGNoYWluIG9mDQo+ID4+ICsgIGRpcmVjdG9yaWVzIGxlYWRpbmcgdXAgdG8gdGhlIGRp cmVjdG9yeS4NCj4gPj4gKw0KPiA+PiArICBFZmlPcGVuRmlsZUJ5RGV2aWNlUGF0aCgpIGZpcnN0 IGxvY2F0ZXMNCj4gRUZJX1NJTVBMRV9GSUxFX1NZU1RFTV9QUk9UT0NPTCBvbg0KPiA+PiArICBG aWxlUGF0aCwgYW5kIG9wZW5zIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGF0IGZpbGVzeXN0ZW0g d2l0aA0KPiA+PiArICBFRklfU0lNUExFX0ZJTEVfU1lTVEVNX1BST1RPQ09MLk9wZW5Wb2x1bWUo KS4NCj4gPj4gKw0KPiA+PiArICBPbiB0aGUgcmVtYWluaW5nIGRldmljZSBwYXRoLCB0aGUgbG9u Z2VzdCBpbml0aWFsIHNlcXVlbmNlIG9mDQo+ID4+ICsgIEZJTEVQQVRIX0RFVklDRV9QQVRIIG5v ZGVzIGlzIG5vZGUtd2lzZSB0cmF2ZXJzZWQgd2l0aA0KPiA+PiArICBFRklfRklMRV9QUk9UT0NP TC5PcGVuKCkuIEZvciB0aGUgcGF0aG5hbWUgZnJhZ21lbnQgc3BlY2lmaWVkIGJ5DQo+IGVhY2gN Cj4gPj4gKyAgdHJhdmVyc2VkIEZJTEVQQVRIX0RFVklDRV9QQVRIIG5vZGUsIEVmaU9wZW5GaWxl QnlEZXZpY2VQYXRoKCkgZmlyc3QNCj4gbWFza3MNCj4gPj4gKyAgRUZJX0ZJTEVfTU9ERV9DUkVB VEUgb3V0IG9mIE9wZW5Nb2RlLCBhbmQgcGFzc2VzIDAgZm9yIEF0dHJpYnV0ZXMuDQo+IElmDQo+ ID4+ICsgIEVGSV9GSUxFX1BST1RPQ09MLk9wZW4oKSBmYWlscywgYW5kIE9wZW5Nb2RlIGluY2x1 ZGVzDQo+IEVGSV9GSUxFX01PREVfQ1JFQVRFLA0KPiA+PiArICB0aGVuIHRoZSBvcGVyYXRpb24g aXMgcmV0cmllZCB3aXRoIHRoZSBjYWxsZXIncyBPcGVuTW9kZSBhbmQgQXR0cmlidXRlcw0KPiA+ PiArICB1bm1vZGlmaWVkLg0KPiA+PiArDQo+ID4+ICsgIChBcyBhIGNvbnNlcXVlbmNlLCBpZiBP cGVuTW9kZSBpbmNsdWRlcyBFRklfRklMRV9NT0RFX0NSRUFURSwgYW5kDQo+IEF0dHJpYnV0ZXMN Cj4gPj4gKyAgaW5jbHVkZXMgRUZJX0ZJTEVfRElSRUNUT1JZLCBhbmQgZWFjaCBGSUxFUEFUSF9E RVZJQ0VfUEFUSCBzcGVjaWZpZXMNCj4gYSBzaW5nbGUNCj4gPj4gKyAgcGF0aG5hbWUgY29tcG9u ZW50LCB0aGVuIEVmaU9wZW5GaWxlQnlEZXZpY2VQYXRoKCkgZW5zdXJlcyB0aGF0IHRoZQ0KPiBz cGVjaWZpZWQNCj4gPj4gKyAgc2VyaWVzIG9mIHN1YmRpcmVjdG9yaWVzIGV4aXN0IG9uIHJldHVy bi4pDQo+ID4+ICsNCj4gPj4gKyAgVGhlIEVGSV9GSUxFX1BST1RPQ09MIGlkZW50aWZpZWQgYnkg dGhlIGxhc3QgRklMRVBBVEhfREVWSUNFX1BBVEgNCj4gbm9kZSBpcw0KPiA+PiArICBvdXRwdXQg dG8gdGhlIGNhbGxlcjsgaW50ZXJtZWRpYXRlIEVGSV9GSUxFX1BST1RPQ09MIGluc3RhbmNlcyBh cmUNCj4gY2xvc2VkLiBJZg0KPiA+PiArICB0aGVyZSBhcmUgbm8gRklMRVBBVEhfREVWSUNFX1BB VEggbm9kZXMgcGFzdCB0aGUgbm9kZSB0aGF0IGlkZW50aWZpZXMNCj4gdGhlDQo+ID4+ICsgIGZp bGVzeXN0ZW0sIHRoZW4gdGhlIEVGSV9GSUxFX1BST1RPQ09MIG9mIHRoZSByb290IGRpcmVjdG9y eSBvZiB0aGUNCj4gPj4gKyAgZmlsZXN5c3RlbSBpcyBvdXRwdXQgdG8gdGhlIGNhbGxlci4gSWYg YSBkZXZpY2UgcGF0aCBub2RlIHRoYXQgaXMgZGlmZmVyZW50DQo+ID4+ICsgIGZyb20gRklMRVBB VEhfREVWSUNFX1BBVEggaXMgZW5jb3VudGVyZWQgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0s DQo+IHRoZQ0KPiA+PiArICB0cmF2ZXJzYWwgaXMgc3RvcHBlZCB3aXRoIGFuIGVycm9yLCBhbmQg YSBOVUxMIEVGSV9GSUxFX1BST1RPQ09MIGlzDQo+IG91dHB1dC4NCj4gPj4gKw0KPiA+PiArICBA cGFyYW1baW4sb3V0XSBGaWxlUGF0aCAgT24gaW5wdXQsIHRoZSBkZXZpY2UgcGF0aCB0byB0aGUg ZmlsZSBvcg0KPiBkaXJlY3RvcnkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv IG9wZW4gb3IgY3JlYXRlLiBPbiBvdXRwdXQsIEZpbGVQYXRoDQo+IHBvaW50cyBvbmUNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3QgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgb3Jp Z2luYWwgZGV2aWNlDQo+IHBhdGggdGhhdA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZC4gRmlsZVBhdGggaXMNCj4gc2V0IG9u DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgZXZlbiBpZiBFZmlPcGVu RmlsZUJ5RGV2aWNlUGF0aCgpDQo+IHJldHVybnMgYW4NCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIGVycm9yLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbVtvdXRdIEZpbGUgICAgICAg ICBPbiBlcnJvciwgRmlsZSBpcyBzZXQgdG8gTlVMTC4gT24gc3VjY2VzcywgRmlsZQ0KPiBpcw0K PiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IHRvIHRoZSBFRklfRklMRV9QUk9U T0NPTCBvZiB0aGUgcm9vdA0KPiBkaXJlY3RvcnkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9mIHRoZSBmaWxlc3lzdGVtLCBpZiB0aGVyZSBhcmUgbm8NCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEZJTEVQQVRIX0RFVklDRV9QQVRIIG5vZGVzIGluIEZpbGVQYXRo Ow0KPiBvdGhlcndpc2UsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlIGlz IHNldCB0byB0aGUgRUZJX0ZJTEVfUFJPVE9DT0wNCj4gaWRlbnRpZmllZCBieQ0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGxhc3Qgbm9kZSBpbiBGaWxlUGF0aC4NCj4gPj4g Kw0KPiA+PiArICBAcGFyYW1baW5dIE9wZW5Nb2RlICAgICAgVGhlIE9wZW5Nb2RlIHBhcmFtZXRl ciB0byBwYXNzIHRvDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9Q Uk9UT0NPTC5PcGVuKCkuIEZvciBlYWNoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICBGSUxFUEFUSF9ERVZJQ0VfUEFUSCBub2RlIGluIEZpbGVQYXRoLA0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgRWZpT3BlbkZpbGVCeURldmljZVBhdGgoKSBmaXJzdCBvcGVucyB0 aGUNCj4gc3BlY2lmaWVkDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFt ZSBmcmFnbWVudCB3aXRoDQo+IEVGSV9GSUxFX01PREVfQ1JFQVRFIG1hc2tlZA0KPiA+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgb3V0IG9mIE9wZW5Nb2RlIGFuZCB3aXRoIEF0dHJpYnV0 ZXMgc2V0DQo+IHRvIDAsIGFuZA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgb25s eSByZXRyaWVzIHRoZSBvcGVyYXRpb24gd2l0aA0KPiBFRklfRklMRV9NT0RFX0NSRUFURQ0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5tYXNrZWQgYW5kIEF0dHJpYnV0ZXMgcHJv cGFnYXRlZCBpZiB0aGUNCj4gZmlyc3Qgb3Blbg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXR0ZW1wdCBmYWlscy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW1baW5dIEF0dHJpYnV0 ZXMgICAgVGhlIEF0dHJpYnV0ZXMgcGFyYW1ldGVyIHRvIHBhc3MgdG8NCj4gPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9GSUxFX1BST1RPQ09MLk9wZW4oKSwgd2hlbg0KPiBFRklf RklMRV9NT0RFX0NSRUFURQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcHJv cGFnYXRlZCB1bm1hc2tlZCBpbiBPcGVuTW9kZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgVGhlIGZpbGUgb3IgZGlyZWN0b3J5IGhhcyBiZWVuDQo+IG9w ZW5lZCBvcg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZC4N Cj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRmlsZVBhdGgg aXMgTlVMTDsgb3IgRmlsZSBpcyBOVUxMOyBvcg0KPiBGaWxlUGF0aA0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYSBkZXZpY2UgcGF0aCBub2RlLCBwYXN0 DQo+IHRoZSBub2RlDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0 IGlkZW50aWZpZXMNCj4gPj4gKw0KPiBFRklfU0lNUExFX0ZJTEVfU1lTVEVNX1BST1RPQ09MLCB0 aGF0IGlzIG5vdCBhDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxF UEFUSF9ERVZJQ0VfUEFUSCBub2RlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX09VVF9P Rl9SRVNPVVJDRVMgICBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuDQo+ID4+ICsNCj4gPj4gKyAg QHJldHVybiAgICAgICAgICAgICAgICAgICAgICAgIEVycm9yIGNvZGVzIHByb3BhZ2F0ZWQgZnJv bSB0aGUNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZURldmlj ZVBhdGgoKSBhbmQNCj4gT3BlblByb3RvY29sKCkgYm9vdA0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2VydmljZXMsIGFuZCBmcm9tIHRoZQ0KPiA+PiArDQo+IEVGSV9T SU1QTEVfRklMRV9TWVNURU1fUFJPVE9DT0wuT3BlblZvbHVtZSgpDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBhbmQgRUZJX0ZJTEVfUFJPVE9DT0wuT3BlbigpDQo+IG1l bWJlciBmdW5jdGlvbnMuDQo+ID4+ICsqKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQ SQ0KPiA+PiArRWZpT3BlbkZpbGVCeURldmljZVBhdGggKA0KPiA+PiArICBJTiBPVVQgRUZJX0RF VklDRV9QQVRIX1BST1RPQ09MICAqKkZpbGVQYXRoLA0KPiA+PiArICBPVVQgICAgRUZJX0ZJTEVf UFJPVE9DT0wgICAgICAgICAqKkZpbGUsDQo+ID4+ICsgIElOICAgICBVSU5UNjQgICAgICAgICAg ICAgICAgICAgIE9wZW5Nb2RlLA0KPiA+PiArICBJTiAgICAgVUlOVDY0ICAgICAgICAgICAgICAg ICAgICBBdHRyaWJ1dGVzDQo+ID4+ICsgICk7DQo+ID4+ICNlbmRpZg0KPiA+PiBkaWZmIC0tZ2l0 IGEvTWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmMNCj4gYi9NZGVQa2cvTGlicmFyeS9V ZWZpTGliL1VlZmlMaWIuYw0KPiA+PiBpbmRleCA4MjhhNTRjZTdhOTcuLmQzZTI5MDE3OGNkOSAx MDA2NDQNCj4gPj4gLS0tIGEvTWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmMNCj4gPj4g KysrIGIvTWRlUGtnL0xpYnJhcnkvVWVmaUxpYi9VZWZpTGliLmMNCj4gPj4gQEAgLTE3MTksMyAr MTcxOSwyMjkgQEAgRWZpTG9jYXRlUHJvdG9jb2xCdWZmZXIgKA0KPiA+Pg0KPiA+PiAgIHJldHVy biBFRklfU1VDQ0VTUzsNCj4gPj4gfQ0KPiA+PiArDQo+ID4+ICsvKioNCj4gPj4gKyAgT3BlbiBv ciBjcmVhdGUgYSBmaWxlIG9yIGRpcmVjdG9yeSwgcG9zc2libHkgY3JlYXRpbmcgdGhlIGNoYWlu IG9mDQo+ID4+ICsgIGRpcmVjdG9yaWVzIGxlYWRpbmcgdXAgdG8gdGhlIGRpcmVjdG9yeS4NCj4g Pj4gKw0KPiA+PiArICBFZmlPcGVuRmlsZUJ5RGV2aWNlUGF0aCgpIGZpcnN0IGxvY2F0ZXMNCj4g RUZJX1NJTVBMRV9GSUxFX1NZU1RFTV9QUk9UT0NPTCBvbg0KPiA+PiArICBGaWxlUGF0aCwgYW5k IG9wZW5zIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGF0IGZpbGVzeXN0ZW0gd2l0aA0KPiA+PiAr ICBFRklfU0lNUExFX0ZJTEVfU1lTVEVNX1BST1RPQ09MLk9wZW5Wb2x1bWUoKS4NCj4gPj4gKw0K PiA+PiArICBPbiB0aGUgcmVtYWluaW5nIGRldmljZSBwYXRoLCB0aGUgbG9uZ2VzdCBpbml0aWFs IHNlcXVlbmNlIG9mDQo+ID4+ICsgIEZJTEVQQVRIX0RFVklDRV9QQVRIIG5vZGVzIGlzIG5vZGUt d2lzZSB0cmF2ZXJzZWQgd2l0aA0KPiA+PiArICBFRklfRklMRV9QUk9UT0NPTC5PcGVuKCkuIEZv ciB0aGUgcGF0aG5hbWUgZnJhZ21lbnQgc3BlY2lmaWVkIGJ5DQo+IGVhY2gNCj4gPj4gKyAgdHJh dmVyc2VkIEZJTEVQQVRIX0RFVklDRV9QQVRIIG5vZGUsIEVmaU9wZW5GaWxlQnlEZXZpY2VQYXRo KCkgZmlyc3QNCj4gbWFza3MNCj4gPj4gKyAgRUZJX0ZJTEVfTU9ERV9DUkVBVEUgb3V0IG9mIE9w ZW5Nb2RlLCBhbmQgcGFzc2VzIDAgZm9yIEF0dHJpYnV0ZXMuDQo+IElmDQo+ID4+ICsgIEVGSV9G SUxFX1BST1RPQ09MLk9wZW4oKSBmYWlscywgYW5kIE9wZW5Nb2RlIGluY2x1ZGVzDQo+IEVGSV9G SUxFX01PREVfQ1JFQVRFLA0KPiA+PiArICB0aGVuIHRoZSBvcGVyYXRpb24gaXMgcmV0cmllZCB3 aXRoIHRoZSBjYWxsZXIncyBPcGVuTW9kZSBhbmQgQXR0cmlidXRlcw0KPiA+PiArICB1bm1vZGlm aWVkLg0KPiA+PiArDQo+ID4+ICsgIChBcyBhIGNvbnNlcXVlbmNlLCBpZiBPcGVuTW9kZSBpbmNs dWRlcyBFRklfRklMRV9NT0RFX0NSRUFURSwgYW5kDQo+IEF0dHJpYnV0ZXMNCj4gPj4gKyAgaW5j bHVkZXMgRUZJX0ZJTEVfRElSRUNUT1JZLCBhbmQgZWFjaCBGSUxFUEFUSF9ERVZJQ0VfUEFUSCBz cGVjaWZpZXMNCj4gYSBzaW5nbGUNCj4gPj4gKyAgcGF0aG5hbWUgY29tcG9uZW50LCB0aGVuIEVm aU9wZW5GaWxlQnlEZXZpY2VQYXRoKCkgZW5zdXJlcyB0aGF0IHRoZQ0KPiBzcGVjaWZpZWQNCj4g Pj4gKyAgc2VyaWVzIG9mIHN1YmRpcmVjdG9yaWVzIGV4aXN0IG9uIHJldHVybi4pDQo+ID4+ICsN Cj4gPj4gKyAgVGhlIEVGSV9GSUxFX1BST1RPQ09MIGlkZW50aWZpZWQgYnkgdGhlIGxhc3QgRklM RVBBVEhfREVWSUNFX1BBVEgNCj4gbm9kZSBpcw0KPiA+PiArICBvdXRwdXQgdG8gdGhlIGNhbGxl cjsgaW50ZXJtZWRpYXRlIEVGSV9GSUxFX1BST1RPQ09MIGluc3RhbmNlcyBhcmUNCj4gY2xvc2Vk LiBJZg0KPiA+PiArICB0aGVyZSBhcmUgbm8gRklMRVBBVEhfREVWSUNFX1BBVEggbm9kZXMgcGFz dCB0aGUgbm9kZSB0aGF0IGlkZW50aWZpZXMNCj4gdGhlDQo+ID4+ICsgIGZpbGVzeXN0ZW0sIHRo ZW4gdGhlIEVGSV9GSUxFX1BST1RPQ09MIG9mIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGUNCj4g Pj4gKyAgZmlsZXN5c3RlbSBpcyBvdXRwdXQgdG8gdGhlIGNhbGxlci4gSWYgYSBkZXZpY2UgcGF0 aCBub2RlIHRoYXQgaXMgZGlmZmVyZW50DQo+ID4+ICsgIGZyb20gRklMRVBBVEhfREVWSUNFX1BB VEggaXMgZW5jb3VudGVyZWQgcmVsYXRpdmUgdG8gdGhlIGZpbGVzeXN0ZW0sDQo+IHRoZQ0KPiA+ PiArICB0cmF2ZXJzYWwgaXMgc3RvcHBlZCB3aXRoIGFuIGVycm9yLCBhbmQgYSBOVUxMIEVGSV9G SUxFX1BST1RPQ09MIGlzDQo+IG91dHB1dC4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW1baW4sb3V0 XSBGaWxlUGF0aCAgT24gaW5wdXQsIHRoZSBkZXZpY2UgcGF0aCB0byB0aGUgZmlsZSBvcg0KPiBk aXJlY3RvcnkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIG9wZW4gb3IgY3Jl YXRlLiBPbiBvdXRwdXQsIEZpbGVQYXRoDQo+IHBvaW50cyBvbmUNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBhc3QgdGhlIGxhc3Qgbm9kZSBpbiB0aGUgb3JpZ2luYWwgZGV2aWNl DQo+IHBhdGggdGhhdA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzIGJlZW4g c3VjY2Vzc2Z1bGx5IHByb2Nlc3NlZC4gRmlsZVBhdGggaXMNCj4gc2V0IG9uDQo+ID4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgZXZlbiBpZiBFZmlPcGVuRmlsZUJ5RGV2aWNl UGF0aCgpDQo+IHJldHVybnMgYW4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVy cm9yLg0KPiA+PiArDQo+ID4+ICsgIEBwYXJhbVtvdXRdIEZpbGUgICAgICAgICBPbiBlcnJvciwg RmlsZSBpcyBzZXQgdG8gTlVMTC4gT24gc3VjY2VzcywgRmlsZQ0KPiBpcw0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2V0IHRvIHRoZSBFRklfRklMRV9QUk9UT0NPTCBvZiB0aGUg cm9vdA0KPiBkaXJlY3RvcnkNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRo ZSBmaWxlc3lzdGVtLCBpZiB0aGVyZSBhcmUgbm8NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEZJTEVQQVRIX0RFVklDRV9QQVRIIG5vZGVzIGluIEZpbGVQYXRoOw0KPiBvdGhlcndp c2UsDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWxlIGlzIHNldCB0byB0aGUg RUZJX0ZJTEVfUFJPVE9DT0wNCj4gaWRlbnRpZmllZCBieQ0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIGxhc3Qgbm9kZSBpbiBGaWxlUGF0aC4NCj4gPj4gKw0KPiA+PiArICBA cGFyYW1baW5dIE9wZW5Nb2RlICAgICAgVGhlIE9wZW5Nb2RlIHBhcmFtZXRlciB0byBwYXNzIHRv DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfRklMRV9QUk9UT0NPTC5PcGVu KCkuIEZvciBlYWNoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFUEFUSF9E RVZJQ0VfUEFUSCBub2RlIGluIEZpbGVQYXRoLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgRWZpT3BlbkZpbGVCeURldmljZVBhdGgoKSBmaXJzdCBvcGVucyB0aGUNCj4gc3BlY2lm aWVkDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRobmFtZSBmcmFnbWVudCB3 aXRoDQo+IEVGSV9GSUxFX01PREVfQ1JFQVRFIG1hc2tlZA0KPiA+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgb3V0IG9mIE9wZW5Nb2RlIGFuZCB3aXRoIEF0dHJpYnV0ZXMgc2V0DQo+IHRv IDAsIGFuZA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgb25seSByZXRyaWVzIHRo ZSBvcGVyYXRpb24gd2l0aA0KPiBFRklfRklMRV9NT0RFX0NSRUFURQ0KPiA+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgdW5tYXNrZWQgYW5kIEF0dHJpYnV0ZXMgcHJvcGFnYXRlZCBpZiB0 aGUNCj4gZmlyc3Qgb3Blbg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0ZW1w dCBmYWlscy4NCj4gPj4gKw0KPiA+PiArICBAcGFyYW1baW5dIEF0dHJpYnV0ZXMgICAgVGhlIEF0 dHJpYnV0ZXMgcGFyYW1ldGVyIHRvIHBhc3MgdG8NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIEVGSV9GSUxFX1BST1RPQ09MLk9wZW4oKSwgd2hlbg0KPiBFRklfRklMRV9NT0RFX0NS RUFURQ0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgcHJvcGFnYXRlZCB1bm1h c2tlZCBpbiBPcGVuTW9kZS4NCj4gPj4gKw0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAg ICAgICAgICAgVGhlIGZpbGUgb3IgZGlyZWN0b3J5IGhhcyBiZWVuDQo+IG9wZW5lZCBvcg0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZC4NCj4gPj4gKw0KPiA+ PiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgRmlsZVBhdGggaXMgTlVMTDsgb3Ig RmlsZSBpcyBOVUxMOyBvcg0KPiBGaWxlUGF0aA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29udGFpbnMgYSBkZXZpY2UgcGF0aCBub2RlLCBwYXN0DQo+IHRoZSBub2Rl DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlkZW50aWZpZXMN Cj4gPj4gKw0KPiBFRklfU0lNUExFX0ZJTEVfU1lTVEVNX1BST1RPQ09MLCB0aGF0IGlzIG5vdCBh DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGSUxFUEFUSF9ERVZJQ0Vf UEFUSCBub2RlLg0KPiA+PiArDQo+ID4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMg ICBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuDQo+ID4+ICsNCj4gPj4gKyAgQHJldHVybiAgICAg ICAgICAgICAgICAgICAgICAgIEVycm9yIGNvZGVzIHByb3BhZ2F0ZWQgZnJvbSB0aGUNCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2F0ZURldmljZVBhdGgoKSBhbmQN Cj4gT3BlblByb3RvY29sKCkgYm9vdA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc2VydmljZXMsIGFuZCBmcm9tIHRoZQ0KPiA+PiArDQo+IEVGSV9TSU1QTEVfRklMRV9T WVNURU1fUFJPVE9DT0wuT3BlblZvbHVtZSgpDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbmQgRUZJX0ZJTEVfUFJPVE9DT0wuT3BlbigpDQo+IG1lbWJlciBmdW5jdGlv bnMuDQo+ID4+ICsqKi8NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4gK0VGSUFQSQ0KPiA+PiArRWZp T3BlbkZpbGVCeURldmljZVBhdGggKA0KPiA+PiArICBJTiBPVVQgRUZJX0RFVklDRV9QQVRIX1BS T1RPQ09MICAqKkZpbGVQYXRoLA0KPiA+PiArICBPVVQgICAgRUZJX0ZJTEVfUFJPVE9DT0wgICAg ICAgICAqKkZpbGUsDQo+ID4+ICsgIElOICAgICBVSU5UNjQgICAgICAgICAgICAgICAgICAgIE9w ZW5Nb2RlLA0KPiA+PiArICBJTiAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1 dGVzDQo+ID4+ICsgICkNCj4gPj4gK3sNCj4gPj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICAgICAgICBTdGF0dXM7DQo+ID4+ICsgIEVGSV9IQU5ETEUgICAgICAgICAgICAgICAgICAgICAg RmlsZVN5c3RlbUhhbmRsZTsNCj4gPj4gKyAgRUZJX1NJTVBMRV9GSUxFX1NZU1RFTV9QUk9UT0NP TCAqRmlsZVN5c3RlbTsNCj4gPj4gKyAgRUZJX0ZJTEVfUFJPVE9DT0wgICAgICAgICAgICAgICAq TGFzdEZpbGU7DQo+ID4+ICsNCj4gPj4gKyAgaWYgKEZpbGUgPT0gTlVMTCkgew0KPiA+PiArICAg IHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+ICsgIH0NCj4gPj4gKyAgKkZpbGUg PSBOVUxMOw0KPiA+PiArDQo+ID4+ICsgIGlmIChGaWxlUGF0aCA9PSBOVUxMKSB7DQo+ID4+ICsg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ ICsgIC8vDQo+ID4+ICsgIC8vIExvb2sgdXAgdGhlIGZpbGVzeXN0ZW0uDQo+ID4+ICsgIC8vDQo+ ID4+ICsgIFN0YXR1cyA9IGdCUy0+TG9jYXRlRGV2aWNlUGF0aCAoDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAmZ0VmaVNpbXBsZUZpbGVTeXN0ZW1Qcm90b2NvbEd1aWQsDQo+ID4+ICsgICAgICAg ICAgICAgICAgICBGaWxlUGF0aCwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICZGaWxlU3lzdGVt SGFuZGxlDQo+ID4+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+PiArICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7DQo+ID4+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4gKyAgfQ0KPiA+PiAr ICBTdGF0dXMgPSBnQlMtPk9wZW5Qcm90b2NvbCAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICBG aWxlU3lzdGVtSGFuZGxlLA0KPiA+PiArICAgICAgICAgICAgICAgICAgJmdFZmlTaW1wbGVGaWxl U3lzdGVtUHJvdG9jb2xHdWlkLA0KPiA+PiArICAgICAgICAgICAgICAgICAgKFZPSUQgKiopJkZp bGVTeXN0ZW0sDQo+ID4+ICsgICAgICAgICAgICAgICAgICBnSW1hZ2VIYW5kbGUsDQo+ID4+ICsg ICAgICAgICAgICAgICAgICBOVUxMLA0KPiA+PiArICAgICAgICAgICAgICAgICAgRUZJX09QRU5f UFJPVE9DT0xfR0VUX1BST1RPQ09MDQo+ID4+ICsgICAgICAgICAgICAgICAgICApOw0KPiA+PiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+ICsgICAgcmV0dXJuIFN0YXR1czsNCj4g Pj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ICsgIC8vIE9wZW4gdGhlIHJvb3QgZGly ZWN0b3J5IG9mIHRoZSBmaWxlc3lzdGVtLiBBZnRlciB0aGlzIG9wZXJhdGlvbg0KPiBzdWNjZWVk cywNCj4gPj4gKyAgLy8gd2UgaGF2ZSB0byByZWxlYXNlIExhc3RGaWxlIG9uIGVycm9yLg0KPiA+ PiArICAvLw0KPiA+PiArICBTdGF0dXMgPSBGaWxlU3lzdGVtLT5PcGVuVm9sdW1lIChGaWxlU3lz dGVtLCAmTGFzdEZpbGUpOw0KPiA+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+ ICsgICAgcmV0dXJuIFN0YXR1czsNCj4gPj4gKyAgfQ0KPiA+PiArDQo+ID4+ICsgIC8vDQo+ID4+ ICsgIC8vIFRyYXZlcnNlIHRoZSBkZXZpY2UgcGF0aCBub2RlcyByZWxhdGl2ZSB0byB0aGUgZmls ZXN5c3RlbS4NCj4gPj4gKyAgLy8NCj4gPj4gKyAgd2hpbGUgKCFJc0RldmljZVBhdGhFbmQgKCpG aWxlUGF0aCkpIHsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIEtlZXAgbG9jYWwgdmFyaWFi bGVzIHRoYXQgcmVsYXRlIHRvIHRoZSBjdXJyZW50IGRldmljZSBwYXRoIG5vZGUNCj4gdGlnaHRs eQ0KPiA+PiArICAgIC8vIHNjb3BlZC4NCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIEZJTEVQQVRI X0RFVklDRV9QQVRIICpGaWxlUGF0aE5vZGU7DQo+ID4+ICsgICAgQ0hBUjE2ICAgICAgICAgICAg ICAgKkFsaWduZWRQYXRoTmFtZTsNCj4gPj4gKyAgICBDSEFSMTYgICAgICAgICAgICAgICAqUGF0 aE5hbWU7DQo+ID4+ICsgICAgRUZJX0ZJTEVfUFJPVE9DT0wgICAgKk5leHRGaWxlOw0KPiA+PiAr DQo+ID4+ICsgICAgaWYgKERldmljZVBhdGhUeXBlICgqRmlsZVBhdGgpICE9IE1FRElBX0RFVklD RV9QQVRIIHx8DQo+ID4+ICsgICAgICAgIERldmljZVBhdGhTdWJUeXBlICgqRmlsZVBhdGgpICE9 IE1FRElBX0ZJTEVQQVRIX0RQKSB7DQo+ID4+ICsgICAgICBTdGF0dXMgPSBFRklfSU5WQUxJRF9Q QVJBTUVURVI7DQo+ID4+ICsgICAgICBnb3RvIENsb3NlTGFzdEZpbGU7DQo+ID4+ICsgICAgfQ0K PiA+PiArICAgIEZpbGVQYXRoTm9kZSA9IChGSUxFUEFUSF9ERVZJQ0VfUEFUSCAqKSpGaWxlUGF0 aDsNCj4gPj4gKw0KPiA+PiArICAgIC8vDQo+ID4+ICsgICAgLy8gRmlsZVBhdGhOb2RlLT5QYXRo TmFtZSBtYXkgYmUgdW5hbGlnbmVkLCBhbmQgdGhlIFVFRkkNCj4gc3BlY2lmaWNhdGlvbg0KPiA+ PiArICAgIC8vIHJlcXVpcmVzIHBvaW50ZXJzIHRoYXQgYXJlIHBhc3NlZCB0byBwcm90b2NvbCBt ZW1iZXIgZnVuY3Rpb25zIHRvDQo+IGJlDQo+ID4+ICsgICAgLy8gYWxpZ25lZC4gQ3JlYXRlIGFu IGFsaWduZWQgY29weSBvZiB0aGUgcGF0aG5hbWUgaWYgbmVjZXNzYXJ5Lg0KPiA+PiArICAgIC8v DQo+ID4+ICsgICAgaWYgKChVSU5UTilGaWxlUGF0aE5vZGUtPlBhdGhOYW1lICUgc2l6ZW9mDQo+ ICpGaWxlUGF0aE5vZGUtPlBhdGhOYW1lID09IDApIHsNCj4gPj4gKyAgICAgIEFsaWduZWRQYXRo TmFtZSA9IE5VTEw7DQo+ID4+ICsgICAgICBQYXRoTmFtZSA9IEZpbGVQYXRoTm9kZS0+UGF0aE5h bWU7DQo+ID4+ICsgICAgfSBlbHNlIHsNCj4gPj4gKyAgICAgIEFsaWduZWRQYXRoTmFtZSA9IEFs bG9jYXRlQ29weVBvb2wgKA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAoRGV2aWNl UGF0aE5vZGVMZW5ndGggKEZpbGVQYXRoTm9kZSkgLQ0KPiA+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgU0laRV9PRl9GSUxFUEFUSF9ERVZJQ0VfUEFUSCksDQo+ID4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgIEZpbGVQYXRoTm9kZS0+UGF0aE5hbWUNCj4gPj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgKTsNCj4gPj4gKyAgICAgIGlmIChBbGlnbmVkUGF0aE5hbWUgPT0gTlVM TCkgew0KPiA+PiArICAgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4g KyAgICAgICAgZ290byBDbG9zZUxhc3RGaWxlOw0KPiA+PiArICAgICAgfQ0KPiA+PiArICAgICAg UGF0aE5hbWUgPSBBbGlnbmVkUGF0aE5hbWU7DQo+ID4+ICsgICAgfQ0KPiA+PiArDQo+ID4+ICsg ICAgLy8NCj4gPj4gKyAgICAvLyBPcGVuIHRoZSBuZXh0IHBhdGhuYW1lIGZyYWdtZW50IHdpdGgg RUZJX0ZJTEVfTU9ERV9DUkVBVEUNCj4gbWFza2VkIG91dCBhbmQNCj4gPj4gKyAgICAvLyB3aXRo IEF0dHJpYnV0ZXMgc2V0IHRvIDAuDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAgICBTdGF0dXMgPSBM YXN0RmlsZS0+T3BlbiAoDQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgTGFzdEZpbGUs DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgJk5leHRGaWxlLA0KPiA+PiArICAgICAg ICAgICAgICAgICAgICAgICAgIFBhdGhOYW1lLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAg ICAgIE9wZW5Nb2RlICYNCj4gfihVSU5UNjQpRUZJX0ZJTEVfTU9ERV9DUkVBVEUsDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgMA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICk7DQo+ID4+ICsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIC8vIFJldHJ5IHdpdGggRUZJX0ZJ TEVfTU9ERV9DUkVBVEUgYW5kIHRoZSBvcmlnaW5hbCBBdHRyaWJ1dGVzIGlmIHRoZQ0KPiBmaXJz dA0KPiA+PiArICAgIC8vIGF0dGVtcHQgZmFpbGVkLCBhbmQgdGhlIGNhbGxlciBzcGVjaWZpZWQg RUZJX0ZJTEVfTU9ERV9DUkVBVEUuDQo+ID4+ICsgICAgLy8NCj4gPj4gKyAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpICYmIChPcGVuTW9kZSAmIEVGSV9GSUxFX01PREVfQ1JFQVRFKSAhPSAwKQ0K PiB7DQo+ID4+ICsgICAgICBTdGF0dXMgPSBMYXN0RmlsZS0+T3BlbiAoDQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICBMYXN0RmlsZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICZOZXh0RmlsZSwNCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhdGhO YW1lLA0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgT3Blbk1vZGUsDQo+ID4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzDQo+ID4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICApOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KPiA+PiArICAgIC8vDQo+ID4+ ICsgICAgLy8gUmVsZWFzZSBhbnkgQWxpZ25lZFBhdGhOYW1lIG9uIGJvdGggZXJyb3IgYW5kIHN1 Y2Nlc3MgcGF0aHM7DQo+IFBhdGhOYW1lIGlzDQo+ID4+ICsgICAgLy8gbm8gbG9uZ2VyIG5lZWRl ZC4NCj4gPj4gKyAgICAvLw0KPiA+PiArICAgIGlmIChBbGlnbmVkUGF0aE5hbWUgIT0gTlVMTCkg ew0KPiA+PiArICAgICAgRnJlZVBvb2wgKEFsaWduZWRQYXRoTmFtZSk7DQo+ID4+ICsgICAgfQ0K PiA+PiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4gKyAgICAgIGdvdG8gQ2xv c2VMYXN0RmlsZTsNCj4gPj4gKyAgICB9DQo+ID4+ICsNCj4gPj4gKyAgICAvLw0KPiA+PiArICAg IC8vIEFkdmFuY2UgdG8gdGhlIG5leHQgZGV2aWNlIHBhdGggbm9kZS4NCj4gPj4gKyAgICAvLw0K PiA+PiArICAgIExhc3RGaWxlLT5DbG9zZSAoTGFzdEZpbGUpOw0KPiA+PiArICAgIExhc3RGaWxl ID0gTmV4dEZpbGU7DQo+ID4+ICsgICAgKkZpbGVQYXRoID0gTmV4dERldmljZVBhdGhOb2RlIChG aWxlUGF0aE5vZGUpOw0KPiA+PiArICB9DQo+ID4+ICsNCj4gPj4gKyAgKkZpbGUgPSBMYXN0Rmls ZTsNCj4gPj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+PiArDQo+ID4+ICtDbG9zZUxhc3RG aWxlOg0KPiA+PiArICBMYXN0RmlsZS0+Q2xvc2UgKExhc3RGaWxlKTsNCj4gPj4gKw0KPiA+PiAr ICBBU1NFUlQgKEVGSV9FUlJPUiAoU3RhdHVzKSk7DQo+ID4+ICsgIHJldHVybiBTdGF0dXM7DQo+ ID4+ICt9DQo+ID4+IC0tDQo+ID4+IDIuMTQuMS4zLmdiN2NmNmUwMjQwMWINCj4gPj4NCj4gPj4N Cg0K