From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: hao.a.wu@intel.com) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by groups.io with SMTP; Mon, 10 Jun 2019 00:03:54 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga008.jf.intel.com ([10.7.209.65]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jun 2019 00:03:53 -0700 X-ExtLoop1: 1 Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga008.jf.intel.com with ESMTP; 10 Jun 2019 00:03:53 -0700 Received: from fmsmsx112.amr.corp.intel.com (10.18.116.6) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 10 Jun 2019 00:03:52 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by FMSMSX112.amr.corp.intel.com (10.18.116.6) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 10 Jun 2019 00:03:52 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.137]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.153]) with mapi id 14.03.0415.000; Mon, 10 Jun 2019 15:03:50 +0800 From: "Wu, Hao A" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Ni, Ray" CC: Alex Williamson , "Wang, Jian J" , Ard Biesheuvel , "Zeng, Star" Subject: Re: [edk2-devel] [PATCH for-next] MdeModulePkg/PciBusDxe: catch unimplemented extended config space reads Thread-Topic: [edk2-devel] [PATCH for-next] MdeModulePkg/PciBusDxe: catch unimplemented extended config space reads Thread-Index: AQHVGx667J2hHY1LKEuAAGcxS3jDQKaMROAAgAAN6ICACCsfwA== Date: Mon, 10 Jun 2019 07:03:49 +0000 Message-ID: References: <20190604214424.456-1-lersek@redhat.com> <78d6c780-bf99-9c3a-7d14-1f10b82022ad@redhat.com> In-Reply-To: <78d6c780-bf99-9c3a-7d14-1f10b82022ad@redhat.com> Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: hao.a.wu@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGVsbG8gUmF5LA0KDQpEbyB5b3UgaGF2ZSBjb21tZW50cyBvbiB0aGlzIHBhdGNoPw0KDQo+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIFtt YWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dIE9uIEJlaGFsZiBPZg0KPiBMYXN6bG8gRXJzZWsN Cj4gU2VudDogV2VkbmVzZGF5LCBKdW5lIDA1LCAyMDE5IDY6MTUgUE0NCj4gVG86IEFyZCBCaWVz aGV1dmVsOyBlZGsyLWRldmVsLWdyb3Vwcy1pbw0KPiBDYzogQWxleCBXaWxsaWFtc29uOyBXdSwg SGFvIEE7IFdhbmcsIEppYW4gSjsgTmksIFJheTsgWmVuZywgU3Rhcg0KPiBTdWJqZWN0OiBSZTog W2VkazItZGV2ZWxdIFtQQVRDSCBmb3ItbmV4dF0gTWRlTW9kdWxlUGtnL1BjaUJ1c0R4ZToNCj4g Y2F0Y2ggdW5pbXBsZW1lbnRlZCBleHRlbmRlZCBjb25maWcgc3BhY2UgcmVhZHMNCj4gDQo+IE9u IDA2LzA1LzE5IDExOjI1LCBBcmQgQmllc2hldXZlbCB3cm90ZToNCj4gPiBPbiBUdWUsIDQgSnVu IDIwMTkgYXQgMjM6NDQsIExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+IHdyb3RlOg0K PiA+Pg0KPiA+PiBXaGVuIGFzc2lnbmluZyBhIHBoeXNpY2FsIFBDSWUgZGV2aWNlIHRvIGEgUUVN VS9LVk0gZ3Vlc3QsIFBjaUJ1c0R4ZQ0KPiBtYXkNCj4gPj4gZmluZCB0aGF0IHRoZSBleHRlbmRl ZCBjb25maWcgc3BhY2UgaXMgbm90IChmdWxseSkgaW1wbGVtZW50ZWQuIEluDQo+ID4+IExvY2F0 ZVBjaUV4cHJlc3NDYXBhYmlsaXR5UmVnQmxvY2soKSwgIkNhcGFiaWxpdHlFbnRyeSIgbWF5IGJl IHJlYWQgYXMNCj4gPj4gMHhGRkZGX0ZGRkYgYXQgYSBnaXZlbiBjb25maWcgc3BhY2Ugb2Zmc2V0 LCBhZnRlciB3aGljaCB0aGUgbG9vcCBnZXRzDQo+ID4+IHN0dWNrIHNwaW5uaW5nIG9uIG9mZnNl dCAweEZGQyAodGhlIHJlYWQgYXQgb2Zmc2V0IDB4RkZDIHJldHVybnMNCj4gPj4gMHhGRkZGX0ZG RkYgbW9zdCBsaWtlbHkgYXMgd2VsbCkuDQo+ID4+DQo+ID4+IEFub3RoZXIgc2NlbmFyaW8gKG5v dCByZWxhdGVkIHRvIHZpcnR1YWxpemF0aW9uKSBmb3IgdHJpZ2dlcmluZyB0aGUgYWJvdmUNCj4g Pj4gaXMgd2hlbiBhIENvbnZlbnRpb25hbCBQQ0kgYnVzIC0tIGV4cG9zZWQgYnkgYSBQQ0llLXRv LVBDSSBicmlkZ2UgaW4gdGhlDQo+ID4+IHRvcG9sb2d5IC0tIGludGVydmVuZXMgYmV0d2VlbiBh IFBDSSBFeHByZXNzIFJvb3QgUG9ydCBhbmQgYSBQQ0kgRXhwcmVzcw0KPiA+PiBFbmRwb2ludC4g VGhlIENvbnZlbnRpb25hbCBQQ0kgYnVzIGxpbWl0cyB0aGUgYWNjZXNzaWJsZSBjb25maWcgc3Bh Y2Ugb2YNCj4gPj4gdGhlIFBDSSBFeHByZXNzIEVuZHBvaW50LCBldmVuIHRob3VnaCB0aGUgZW5k cG9pbnQgYWR2ZXJ0aXplcyB0aGUgUENJDQo+ID4+IEV4cHJlc3MgY2FwYWJpbGl0eS4gSGVyZSdz IGEgZGlhZ3JhbSwgY291cnRlc3kgb2YgQWxleCBXaWxsaWFtc29uOg0KPiA+Pg0KPiA+PiAgIFtQ Q0llIFJvb3QgUG9ydF0tLVtQQ0llLXRvLVBDSV0tLVtQQ0ktdG8tUENJZV0tLVtQQ0llIEVQXQ0K PiA+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtPnwgIHw8LSBDb252ZW50aW9uYWwg UENJIGJ1cw0KPiA+Pg0KPiA+PiBDYXRjaCByZWFkcyBvZiAweEZGRkZfRkZGRiBpbiBMb2NhdGVQ Y2lFeHByZXNzQ2FwYWJpbGl0eVJlZ0Jsb2NrKCksIGFuZA0KPiA+PiBicmVhayBvdXQgb2YgdGhl IHNjYW4gd2l0aCBhIHdhcm5pbmcgbWVzc2FnZS4gVGhlIGZ1bmN0aW9uIHdpbGwgcmV0dXJuDQo+ ID4+IEVGSV9OT1RfRk9VTkQuDQo+ID4+DQo+ID4+IENjOiBBbGV4IFdpbGxpYW1zb24gPGFsZXgu d2lsbGlhbXNvbkByZWRoYXQuY29tPg0KPiA+PiBDYzogSGFvIEEgV3UgPGhhby5hLnd1QGludGVs LmNvbT4NCj4gPj4gQ2M6IEppYW4gSiBXYW5nIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4+ IENjOiBSYXkgTmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4+IENjOiBTdGFyIFplbmcgPHN0YXIu emVuZ0BpbnRlbC5jb20+DQo+ID4+IFNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2Vr QHJlZGhhdC5jb20+DQo+ID4+IC0tLQ0KPiA+Pg0KPiA+PiBOb3RlczoNCj4gPj4gICAgIFJlcG86 ICAgaHR0cHM6Ly9naXRodWIuY29tL2xlcnNlay9lZGsyLmdpdA0KPiA+PiAgICAgQnJhbmNoOiBw Y2lidXNfbm9fZXh0X2NvbmYNCj4gPj4NCj4gPj4gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1BjaUJ1 c0R4ZS9QY2lDb21tYW5kLmMgfCAxMw0KPiArKysrKysrKysrKysrDQo+ID4+ICAxIGZpbGUgY2hh bmdlZCwgMTMgaW5zZXJ0aW9ucygrKQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvTWRlTW9kdWxl UGtnL0J1cy9QY2kvUGNpQnVzRHhlL1BjaUNvbW1hbmQuYw0KPiBiL01kZU1vZHVsZVBrZy9CdXMv UGNpL1BjaUJ1c0R4ZS9QY2lDb21tYW5kLmMNCj4gPj4gaW5kZXggMjE0YWVlY2RkNDBhLi42Mjgz ZDYwMjIwN2MgMTAwNjQ0DQo+ID4+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL1BjaUJ1c0R4 ZS9QY2lDb21tYW5kLmMNCj4gPj4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvUGNpQnVzRHhl L1BjaUNvbW1hbmQuYw0KPiA+PiBAQCAtMjM2LDYgKzIzNiwxOSBAQCBMb2NhdGVQY2lFeHByZXNz Q2FwYWJpbGl0eVJlZ0Jsb2NrICgNCj4gPj4gICAgICAgIGJyZWFrOw0KPiA+PiAgICAgIH0NCj4g Pj4NCj4gPj4gKyAgICBpZiAoQ2FwYWJpbGl0eUVudHJ5ID09IE1BWF9VSU5UMzIpIHsNCj4gPg0K PiA+IFNob3VsZCB3ZSBjaGVjayBoZXJlIHRoYXQgdGhlIG9mZnNldCA+IDB4MTAwID8gT3RoZXJ3 aXNlLCB0aGlzIGFmZmVjdHMNCj4gPiBtb3JlIHRoYW4ganVzdCB0aGUgZXh0ZW5kZWQgY29uZmln IHNwYWNlLg0KPiANCj4gQSBzZXBhcmF0ZSBmdW5jdGlvbiBleGlzdHMgZm9yIGxvY2F0aW5nIGNh cHMgaW4gdGhlIGNvbnZlbnRpb25hbCBjb25maWcNCj4gc3BhY2UgKExvY2F0ZUNhcGFiaWxpdHlS ZWdCbG9jaygpKS4NCj4gDQo+IFdoZXJlYXMgdGhlIGZ1bmN0aW9uIGJlaW5nIHBhdGNoZWQgLS0N Cj4gTG9jYXRlUGNpRXhwcmVzc0NhcGFiaWxpdHlSZWdCbG9jaygpIC0tIGlzIHN1cHBvc2VkIHRv IHN0YXJ0IHdpdGggYQ0KPiBjYXBhYmlsaXR5IG9mZnNldCBpbnRvIHRoZSBleHRlbmRlZCBjb25m aWcgc3BhY2UsIHBhc3NlZCBpbiBieSB0aGUNCj4gY2FsbGVyIHZpYSAqT2Zmc2V0LCBvciBlbHNl IGF0IDB4MTAwIGlmICpPZmZzZXQgaXMgMC4NCj4gDQo+IEFuZCwgbXkgdW5kZXJzdGFuZGluZyBp cyB0aGF0IGFuIGV4dGVuZGVkIGNhcCBzaGFsbCBuZXZlciBjaGFpbiB0byBhDQo+IGNvbnZlbnRp b25hbCBjYXAuIFRoZSBzcGVjIHNheXMsDQo+IA0KPiAgICAgTmV4dCBDYXBhYmlsaXR5IE9mZnNl dCDigJMgVGhpcyBmaWVsZCBjb250YWlucyB0aGUgb2Zmc2V0IHRvIHRoZSBuZXh0DQo+ICAgICBQ Q0kgRXhwcmVzcyBDYXBhYmlsaXR5IHN0cnVjdHVyZSBvciAwMDBoIGlmIG5vIG90aGVyIGl0ZW1z IGV4aXN0IGluDQo+ICAgICB0aGUgbGlua2VkIGxpc3Qgb2YgQ2FwYWJpbGl0aWVzLg0KPiANCj4g ICAgIEZvciBFeHRlbmRlZCBDYXBhYmlsaXRpZXMgaW1wbGVtZW50ZWQgaW4gQ29uZmlndXJhdGlv biBTcGFjZSwgdGhpcw0KPiAgICAgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSBiZWdpbm5pbmcg b2YgUENJIGNvbXBhdGlibGUgQ29uZmlndXJhdGlvbg0KPiAgICAgU3BhY2UgYW5kIHRodXMgbXVz dCBhbHdheXMgYmUgZWl0aGVyIDAwMGggKGZvciB0ZXJtaW5hdGluZyBsaXN0IG9mDQo+ICAgICBD YXBhYmlsaXRpZXMpIG9yIGdyZWF0ZXIgdGhhbiAwRkZoLg0KPiANCj4gICAgIFRoZSBib3R0b20g MiBiaXRzIG9mIHRoaXMgb2Zmc2V0IGFyZSBSZXNlcnZlZCBhbmQgbXVzdCBiZQ0KPiAgICAgaW1w bGVtZW50ZWQgYXMgMDBiIGFsdGhvdWdoIHNvZnR3YXJlIG11c3QgbWFzayB0aGVtIHRvIGFsbG93 IGZvcg0KPiAgICAgZnV0dXJlIHVzZXMgb2YgdGhlc2UgYml0cy4NCj4gDQo+IEFkZGl0aW9uYWxs eSwgdGhlIGNhcGFiaWxpdHkgaGVhZGVyIGlzIGRpZmZlcmVudCBmb3IgY29udmVudGlvbmFsDQo+ IGNhcGFiaWxpdGllczogRUZJX1BDSV9DQVBBQklMSVRZX0hEUiAtLSAyIGJ5dGVzIC0tIHZzLg0K PiBQQ0lfRVhQUkVTU19FWFRFTkRFRF9DQVBBQklMSVRJRVNfSEVBREVSIC0tIDQgYnl0ZXMuIFNv IGlmIHRoaXMgbG9vcA0KPiBldmVyIGNyb3NzZWQgb3ZlciBpbnRvIG5vcm1hbCBjb25maWcgc3Bh Y2UsIGl0IHdvdWxkIGJyZWFrIGhvcnJpYmx5LA0KPiByZWdhcmRsZXNzIG9mIHRoaXMgcGF0Y2gu DQo+IA0KPiBBIG1vcmUgZ2VuZXJhbCBxdWVzdGlvbiB3b3VsZCBiZSBob3cgbXVjaCB3ZSBzaG91 bGQgYXJtb3Igc3VjaA0KPiBmdW5jdGlvbnMNCj4gLS0gaS5lLiwgY2FwYWJpbGl0eSBsaXN0IHNj YW5uaW5nIC0tIHdpdGggc2FuaXR5IGNoZWNrcy4NCj4gDQo+IE15IGFuc3dlciB0byB0aGF0IHdh cyBhdXRob3JpbmcgUGNpQ2FwTGliLCB3aGljaCBkZXRlY3RzIGxvb3BzIGluIGNhcA0KPiBsaXN0 cywgb3ZlcnNpemVkIGNhcGFiaWxpdHkgcmVhZHMvd3JpdGVzLCBhbiBhYnNlbnQgZXh0ZW5kZWQg Y29uZmlnDQo+IHNwYWNlIGluIHNwaXRlIG9mIGEgcHJlc2VudCBleHByZXNzIGNhcGFiaWxpdHk7 IG1heWJlIG1vcmUuIEJhc2ljYWxseQ0KPiBldmVyeXRoaW5nIEkgY291bGQgdGhpbmsgb2YgYW5k L29yIGhhZCBlbmNvdW50ZXJlZCBieSB0aGVuLg0KPiANCj4gWW91IHByb2JhYmx5IHJlbWVtYmVy IHRoYXQgSSBvcmlnaW5hbGx5IGF0dGVtcHRlZCB0byBnZXQgUGNpQ2FwTGliIGFuZA0KPiBpdHMg YWNjZXNzb3JpZXMgaW50byBNZGVQa2csIHdpdGggYW4gaW50ZW50IHRvIHJlYmFzZSBjb3JlIFBD SSBkcml2ZXJzDQo+IHRvIHRoZW0gLS0gaW5jbHVkaW5nIFBjaUJ1c0R4ZS4gKFRoZSBvcmlnaW5h bCAic2FsZXMgcGl0Y2giIGNhbiBiZSBmb3VuZA0KPiBhdA0KPiA8aHR0cDovL21pZC5tYWlsLWFy Y2hpdmUuY29tLzIwMTgwNTA0MjEzNjM3LjExMjY2LTEtDQo+IGxlcnNla0ByZWRoYXQuY29tPi4p DQo+IEkgaGFkbid0IHJlY2VpdmVkIGVpdGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBmZWVkYmFj ayByZWdhcmRpbmcgdGhhdA0KPiBpZGVhIGZvciBhIG1vbnRoIG9yIHNvLCBhZnRlciB3aGljaCB3 ZSBtZXJnZWQgdGhlIGxpYnJhcnkgaW50byBPdm1mUGtnLA0KPiBpbiB0aGUgZW5kLiAoQW5kIGl0 IGlzIG5vdyB1c2VkIGJ5IEFybVZpcnRRZW11KiBhbmQgT1ZNRiBvbmx5LCBhcyBwYXJ0DQo+IG9m IE92bWZQa2cvUGNpSG90UGx1Z0luaXREeGUgYW5kIE92bWZQa2cvVmlydGlvMTBEeGUpLg0KPiAN Cj4gSSBkaWQgZmlsZSBhIGxvbmdlci10ZXJtIHJlbWluZGVyIEJaIGF0DQo+IDxodHRwczovL2J1 Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTk1Nz4uIEJ1dCwgSSBnYXZlIHVw IG9uDQo+IHRoYXQgYXMgd2VsbCBpbiBhYm91dCA0IG1vbnRocy4NCj4gDQo+IFRoZSB1cHNob3Qg aXMgdGhhdCBub3cgSSBjYW4gb25seSBjb250cmlidXRlIHBpZWNlbWVhbCBmaXhlcyBmb3INCj4g UGNpQnVzRHhlLCB3aGVuZXZlciBJIGNvbWUgYWNyb3NzIHNvbWV0aGluZy4gVGhpcyBwYXJ0aWN1 bGFyIGlzc3VlIGhhcw0KPiBiaXR0ZW4gdXMgYXQgUkggdHdpY2UgYnkgbm93IC0tIHVuZm9ydHVu YXRlbHksIGJvdGggUkhCWnMgYXJlIHByaXZhdGUsDQo+IGhlbmNlIEkgZGlkbid0IHJlZmVyZW5j ZSB0aGVtIGluIHRoZSBjb21taXQgbWVzc2FnZS4gKEl0J3Mgc3VwZXINCj4gYW5ub3lpbmcgaWYg eW91IGNsaWNrIGEgQlogbGluaywganVzdCB0byBiZSByZWplY3RlZCBhY2Nlc3MuKQ0KPiANCj4g SW4gc3VtbWFyeSwgYWRkaW5nIGEgc3RhbmRhbG9uZSBjaGVjayBmb3IgIm5leHQiIGNhcCBvZmZz ZXRzIHRoYXQgZmFsbA0KPiBpbnRvIHRoZSBmb3JiaWRkZW4gcmFuZ2UgWzEsIDI1NV0gKGluY2x1 c2l2ZSkgd291bGQgYmUgd29ydGh3aGlsZSwgaW4NCj4gdGhlb3J5LiAoSW4gZmFjdCBQY2lDYXBM aWIgaGFwcGVucyB0byBjb250YWluIGEgY2hlY2sgZm9yIHRoYXQgdG9vLikgQnV0DQo+IHRoYXQn cyBhIGRpZmZlcmVudCBwYXRjaCwgYW5kIHdlIGhhdmVuJ3QgcnVuIGludG8gdGhhdCBzaXR1YXRp b24geWV0LCBpbg0KPiBwcmFjdGljZS4gU28gSSdkIHRoaW5rIGl0J3Mgb3V0IG9mIHNjb3BlIHNw ZWNpZmljYWxseSBmb3IgUGNpQnVzRHhlLCBhdA0KPiB0aGlzIHBvaW50LiAoS2V5IHBocmFzZSBi ZWluZyAicGllY2VtZWFsIGZpeGVzIi4pDQo+IA0KPiBUaGFua3MsDQo+IExhc3psbw0KPiANCj4g Pg0KPiA+PiArICAgICAgREVCVUcgKCgNCj4gPj4gKyAgICAgICAgREVCVUdfV0FSTiwNCj4gPj4g KyAgICAgICAgIiVhOiBbJTAyeHwlMDJ4fCUwMnhdIGZhaWxlZCB0byBhY2Nlc3MgY29uZmlnIHNw YWNlIGF0IG9mZnNldA0KPiAweCV4XG4iLA0KPiA+PiArICAgICAgICBfX0ZVTkNUSU9OX18sDQo+ ID4+ICsgICAgICAgIFBjaUlvRGV2aWNlLT5CdXNOdW1iZXIsDQo+ID4+ICsgICAgICAgIFBjaUlv RGV2aWNlLT5EZXZpY2VOdW1iZXIsDQo+ID4+ICsgICAgICAgIFBjaUlvRGV2aWNlLT5GdW5jdGlv bk51bWJlciwNCj4gPj4gKyAgICAgICAgQ2FwYWJpbGl0eVB0cg0KPiA+PiArICAgICAgICApKTsN Cj4gPj4gKyAgICAgIGJyZWFrOw0KPiA+PiArICAgIH0NCj4gPj4gKw0KDQpBY2tlZC1ieTogSGFv IEEgV3UgPGhhby5hLnd1QGludGVsLmNvbT4NCg0KQmVzdCBSZWdhcmRzLA0KSGFvIFd1DQoNCj4g Pj4gICAgICBDYXBhYmlsaXR5SUQgPSAoVUlOVDE2KSBDYXBhYmlsaXR5RW50cnk7DQo+ID4+DQo+ ID4+ICAgICAgaWYgKENhcGFiaWxpdHlJRCA9PSBDYXBJZCkgew0KPiA+PiAtLQ0KPiA+PiAyLjE5 LjEuMy5nMzAyNDdhYTVkMjAxDQo+ID4+DQo+ID4+DQo+ID4+IC0tLS0tLS0tLS0tLQ0KPiA+PiBH cm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3Jv dXAuDQo+ID4+DQo+ID4+IFZpZXcvUmVwbHkgT25saW5lICgjNDE4OTMpOg0KPiBodHRwczovL2Vk azIuZ3JvdXBzLmlvL2cvZGV2ZWwvbWVzc2FnZS80MTg5Mw0KPiA+PiBNdXRlIFRoaXMgVG9waWM6 IGh0dHBzOi8vZ3JvdXBzLmlvL210LzMxOTMxMjQ2LzE3NjExODgNCj4gPj4gR3JvdXAgT3duZXI6 IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvDQo+ID4+IFVuc3Vic2NyaWJlOiBodHRwczovL2Vk azIuZ3JvdXBzLmlvL2cvZGV2ZWwvdW5zdWINCj4gW2FyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmdd DQo+ID4+IC0tLS0tLS0tLS0tLQ0KPiA+Pg0KPiANCj4gDQo+IA0KDQo=