From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.100, mailfrom: michael.d.kinney@intel.com) Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by groups.io with SMTP; Mon, 29 Apr 2019 10:11:35 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga007.jf.intel.com ([10.7.209.58]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Apr 2019 10:11:34 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,410,1549958400"; d="scan'208";a="135404974" Received: from orsmsx105.amr.corp.intel.com ([10.22.225.132]) by orsmga007.jf.intel.com with ESMTP; 29 Apr 2019 10:11:34 -0700 Received: from orsmsx111.amr.corp.intel.com (10.22.240.12) by ORSMSX105.amr.corp.intel.com (10.22.225.132) with Microsoft SMTP Server (TLS) id 14.3.408.0; Mon, 29 Apr 2019 10:11:33 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.24]) by ORSMSX111.amr.corp.intel.com ([169.254.12.39]) with mapi id 14.03.0415.000; Mon, 29 Apr 2019 10:11:33 -0700 From: "Michael D Kinney" To: "devel@edk2.groups.io" , "lersek@redhat.com" , "Kinney, Michael D" CC: "Dong, Eric" , "Ni, Ray" , "Wang, Jian J" Subject: Re: [edk2-devel] [Patch 2/4] UefiCpuPkg/MpInitLib: Avoid MSR_IA32_APIC_BASE for single core Thread-Topic: [edk2-devel] [Patch 2/4] UefiCpuPkg/MpInitLib: Avoid MSR_IA32_APIC_BASE for single core Thread-Index: AQHU+4/TkpmHhKe6VEKcO9kj6o03VqZPSbCAgAQXasA= Date: Mon, 29 Apr 2019 17:11:32 +0000 Message-ID: References: <20190425175334.5944-1-michael.d.kinney@intel.com> <20190425175334.5944-3-michael.d.kinney@intel.com> <8c03f148-8b61-2477-7708-0e55f32b581b@redhat.com> In-Reply-To: <8c03f148-8b61-2477-7708-0e55f32b581b@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Return-Path: michael.d.kinney@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvLA0KDQpJIHdhcyBhdHRlbXB0aW5nIHRvIGZvbGxvdyB0aGUgZXF1aXZhbGVudCBkZXRl Y3Rpb24gbG9naWMNCnRoYXQgaXMgdXNlZCBpbiB0aGUgU291cmNlTGV2ZWxEZWJ1Z1BrZy4NCg0K aHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9lZGsyL2Jsb2IvZTJkM2EyNWYxYTMxMzUyMjFh OWM4MDYxZTFiOGY5MDI0NWQ3MjdlYi9Tb3VyY2VMZXZlbERlYnVnUGtnL0xpYnJhcnkvRGVidWdB Z2VudC9EZWJ1Z0FnZW50Q29tbW9uL0RlYnVnTXAuYyNMMTQwDQoNClllcy4gIENQVUlEIGNhbiBi ZSB1c2VkIHRvIGRldGVybWluZSBhdmFpbGFiaWxpdHkgb2YNCk1TUl9JQTMyX0FQSUNfQkFTRS4g IFRoYXQgd291bGQgYmUgc2FmZXIgaWYgdGhlIG1heGltdW0NCm51bWJlciBvZiBDUFVzIGNhbiBz dGFydCB3aXRoIGEgdmFsdWUgb2YgMSBhbmQgY2hhbmdlIHRvDQphIGhpZ2hlciB2YWx1ZSBsYXRl ci4gIEJ1dCBiYXNlZCBvbiB5b3VyIGFuYWx5c2lzLA0KaXQgbG9va3MgbGlrZSB0aGUgbWF4IG51 bWJlciBvZiBDUFVzIGlzIGtub3duIHdoZW4gdGhpcyANCmZ1bmN0aW9uIHJ1bnMgd2hpY2ggaXMg YWx3YXlzIGFmdGVyIG1lbW9yeSBpcyBkaXNjb3ZlcmVkLg0KDQpUaGUgTVNSIGFjY2VzcyBpcyBp biB0aGUgZnVuY3Rpb24gR2V0Q3B1TXBEYXRhKCksIHdoaWNoIGlzDQpjYWxsZWQgZnJvbSBhbGwg dGhlIE1QIHNlcnZpY2UgZnVuY3Rpb25zLiAgSSB3YXMgdHJ5aW5nDQp0byBhdm9pZCBhbiBleHRy YSBDUFVJRCBjaGVjayBvbiBhbGwgdGhvc2UgcGF0aHMuDQoNCkkgcHJlZmVyIHRoZSBjdXJyZW50 IHBhdGNoIGlmIGl0IGlzIHNhZmUuICBQbGVhc2UgbGV0IG1lDQprbm93IGlmIHlvdSB0aGluayBl eHRyYSBjb21tZW50cyBhcmUgcmVxdWlyZWQgaW4gdGhlIGNvZGUNCm9yIHRoZSBjb21taXQgbWVz c2FnZS4NCg0KVGhhbmtzLA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8gW21haWx0bzpkZXZlbEBlZGsyLmdyb3Vwcy5p b10NCj4gT24gQmVoYWxmIE9mIExhc3psbyBFcnNlaw0KPiBTZW50OiBGcmlkYXksIEFwcmlsIDI2 LCAyMDE5IDEyOjI1IFBNDQo+IFRvOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiBDYzogRG9uZywgRXJpYyA8 ZXJpYy5kb25nQGludGVsLmNvbT47IE5pLCBSYXkNCj4gPHJheS5uaUBpbnRlbC5jb20+OyBXYW5n LCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtlZGsyLWRl dmVsXSBbUGF0Y2ggMi80XQ0KPiBVZWZpQ3B1UGtnL01wSW5pdExpYjogQXZvaWQgTVNSX0lBMzJf QVBJQ19CQVNFIGZvcg0KPiBzaW5nbGUgY29yZQ0KPiANCj4gKCtKaWFuKQ0KPiANCj4gSGkgTWlr ZSwNCj4gDQo+IHRoYW5rIHlvdSBmb3IgdGhlIENDLg0KPiANCj4gT24gMDQvMjUvMTkgMTk6NTMs IE1pY2hhZWwgRCBLaW5uZXkgd3JvdGU6DQo+ID4gQXZvaWQgYWNjZXNzIHRvIE1TUl9JQTMyX0FQ SUNfQkFTRSB0aGF0IG1heSBub3QgYmUNCj4gc3VwcG9ydGVkDQo+ID4gb24gc2luZ2xlIGNvcmUg Q1BVcy4gIElmDQo+IFBjZENwdU1heExvZ2ljYWxQcm9jZXNzb3JOdW1iZXIgaXMgMSwNCj4gPiB0 aGVuIHRoZXJlIGlzIG9ubHkgb25lIENQVSB0aGF0IG11c3QgYmUgdGhlIEJTUC4NCj4gPg0KPiA+ IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRlbC5jb20+DQo+ID4gQ2M6IFJheSBOaSA8cmF5 Lm5pQGludGVsLmNvbT4NCj4gPiBDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4N Cj4gPiBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEQgS2lubmV5DQo+IDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT4NCj4gPiAtLS0NCj4gPiAgVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9Q ZWlNcExpYi5jIHwgMTUNCj4gKysrKysrKysrKysrKystDQo+ID4gIDEgZmlsZSBjaGFuZ2VkLCAx NCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvVWVm aUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9QZWlNcExpYi5jDQo+IGIvVWVmaUNwdVBrZy9MaWJy YXJ5L01wSW5pdExpYi9QZWlNcExpYi5jDQo+ID4gaW5kZXggMzVkZmY5MWZkMi4uNTQ4ODA0OWMw OCAxMDA2NDQNCj4gPiAtLS0gYS9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL1BlaU1wTGli LmMNCj4gPiArKysgYi9VZWZpQ3B1UGtnL0xpYnJhcnkvTXBJbml0TGliL1BlaU1wTGliLmMNCj4g PiBAQCAtMSw3ICsxLDcgQEANCj4gPiAgLyoqIEBmaWxlDQo+ID4gICAgTVAgaW5pdGlhbGl6ZSBz dXBwb3J0IGZ1bmN0aW9ucyBmb3IgUEVJIHBoYXNlLg0KPiA+DQo+ID4gLSAgQ29weXJpZ2h0IChj KSAyMDE2IC0gMjAxOCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+ICsgIENvcHlyaWdodCAoYykgMjAxNiAtIDIwMTksIEludGVsIENvcnBvcmF0aW9u LiBBbGwNCj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPiAgICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+DQo+ID4gICoqLw0KPiA+IEBAIC0xMDEsNiAr MTAxLDE5IEBAIEdldENwdU1wRGF0YSAoDQo+ID4gICAgTVNSX0lBMzJfQVBJQ19CQVNFX1JFR0lT VEVSICBBcGljQmFzZU1zcjsNCj4gPiAgICBJQTMyX0RFU0NSSVBUT1IgICAgICAgICAgICAgIElk dHI7DQo+ID4NCj4gPiArICAvLw0KPiA+ICsgIC8vIElmIHRoZXJlIGlzIG9ubHkgMSBDUFUsIHRo ZW4gaXQgbXVzdCBiZSB0aGUgQlNQLg0KPiBUaGlzIGF2b2lkcyBhbiBhY2Nlc3MgdG8NCj4gPiAr ICAvLyBNU1JfSUEzMl9BUElDX0JBU0UgdGhhdCBtYXkgbm90IGJlIHN1cHBvcnRlZCBvbg0KPiBz aW5nbGUgY29yZSBDUFVzLg0KPiA+ICsgIC8vDQo+ID4gKyAgaWYgKFBjZEdldDMyIChQY2RDcHVN YXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyKSA9PQ0KPiAxKSB7DQo+ID4gKyAgICBDcHVNcERhdGEg PSBHZXRDcHVNcERhdGFGcm9tR3VpZGVkSG9iICgpOw0KPiA+ICsgICAgQVNTRVJUIChDcHVNcERh dGEgIT0gTlVMTCk7DQo+ID4gKyAgICByZXR1cm4gQ3B1TXBEYXRhOw0KPiA+ICsgIH0NCj4gPiAr DQo+ID4gKyAgLy8NCj4gPiArICAvLyBPdGhlcndpc2UgdXNlIE1TUl9JQTMyX0FQSUNfQkFTRSB0 byBkZXRlcm1pbmUgaWYNCj4gdGhlIENQVSBpcyBCU1Agb3IgQVAuDQo+ID4gKyAgLy8NCj4gPiAg ICBBcGljQmFzZU1zci5VaW50NjQgPSBBc21SZWFkTXNyNjQNCj4gKE1TUl9JQTMyX0FQSUNfQkFT RSk7DQo+ID4gICAgaWYgKEFwaWNCYXNlTXNyLkJpdHMuQlNQID09IDEpIHsNCj4gPiAgICAgIENw dU1wRGF0YSA9IEdldENwdU1wRGF0YUZyb21HdWlkZWRIb2IgKCk7DQo+ID4NCj4gDQo+IFRoaXMg cGF0Y2ggbGVhZHMgbWUgZG93biBvbiB0d28gcGF0aHM6DQo+IA0KPiAoMSkgU3BlY2lmaWNhbGx5 IHJlZ2FyZGluZyB0aGUgY29kZSBjaGFuZ2UuIEkgdGhpbmsgdGhpcw0KPiBwYXRjaCBpcyB1bnNh ZmUNCj4gICAgIG9uIHBsYXRmb3JtcyB0aGF0IGR5bmFtaWNhbGx5IHNldCB0aGUgUENEIHRvIGEg dmFsdWUNCj4gbGFyZ2VyIHRoYW4gMS4NCj4gICAgIChJbmNsdWRpbmcgT1ZNRi4pDQo+IA0KPiAg ICAgSWYgdGhlIHZhbHVlIGlzIGxhcmdlciB0aGFuIDEsIHRoZW4gdGhlIHN5c3RlbSBoYXMNCj4g YXQgbGVhc3Qgb25lIEFQLA0KPiAgICAgYW5kIHRoZSBBUCBtYXkgZW50ZXIgdGhlIGZ1bmN0aW9u LiBJbiBhZGRpdGlvbiwNCj4gYmVjYXVzZSB0aGUgUENEIGlzDQo+ICAgICBkeW5hbWljLCB0aGUg UGNkR2V0MzIoKSBjYWxsIHdpbGwgaW52b2tlIHRoZSBQQ0QgUFBJDQo+IChpZiBJDQo+ICAgICB1 bmRlcnN0YW5kIGNvcnJlY3RseSksIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGZvciBhbg0KPiBBUC4N Cj4gDQo+ICAgICBJcyBpdCBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHRoZSBhdmFpbGFiaWxp dHkgb2YNCj4gICAgIE1TUl9JQTMyX0FQSUNfQkFTRSBmcm9tIENQVUlELCBvciBhIGRpZmZlcmVu dCBNU1I/DQo+IA0KPiANCj4gKDIpIE1vcmUgZ2VuZXJhbGx5LCB0aGlzIHBhdGNoIG1hZGUgbWUg cmV2aWV3DQo+IE92bWZQa2cvUGxhdGZvcm1QZWk6DQo+IA0KPiAgICAgKGEpIE92bWZQa2cvUGxh dGZvcm1QZWkgc2V0cyB0aGUgUENEIGluDQo+IE1heENwdUNvdW50SW5pdGlhbGl6YXRpb24oKSwN Cj4gDQo+ICAgICAoYikgbGF0ZXIsIE92bWZQa2cvUGxhdGZvcm1QZWkgcHVibGlzaGVzIHRoZQ0K PiBwZXJtYW5lbnQgUEVJIFJBTSBpbg0KPiAgICAgICAgIFB1Ymxpc2hQZWlNZW1vcnkoKQ0KPiAN Cj4gICAgIChjKSB3aGljaCBpbiB0dXJuIGxlYWRzIHRvIHRoZSBpbnN0YWxsYXRpb24gb2YNCj4g ICAgICAgICBnRWZpUGVpTWVtb3J5RGlzY292ZXJlZFBwaUd1aWQgaW50dG8gdGhlIFBQSQ0KPiBk YXRhYmFzZSwgYnkgdGhlDQo+ICAgICAgICAgUEVJIENvcmUNCj4gDQo+ICAgICAoZCkgQ3B1TXBQ ZWkgY2FuIG5vdyBiZSBkaXNwYXRjaGVkLCBiZWNhdXNlIGl0IGhhcyBhDQo+IGRlcGV4IG9uIHRo ZQ0KPiAgICAgICAgICJtZW1vcnkgZGlzY292ZXJlZCIgUFBJDQo+IA0KPiAgICAgKGUpIFBlaU1w SW5pdExpYiwgd2hpY2ggaXMgbGlua2VkIGludG8gQ3B1TXBQZWksIGNhbg0KPiBjb25zdW1lIHRo ZSBQQ0QNCj4gICAgICAgICBzYWZlbHkuDQo+IA0KPiAgICAgSSByZWxpZWQgb24gdGhpcyBiZWhh dmlvciBpbiB0aGUgZm9sbG93aW5nIE9WTUYNCj4gY29tbWl0Og0KPiANCj4gICAgIGNvbW1pdCA0 NWE3MGRiM2MzYTU5YjY0ZTBmNTE3ODcwNDE1OTYzZmJmYWNmNTA3DQo+ICAgICBBdXRob3I6IExh c3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ICAgICBEYXRlOiAgIFRodSBOb3YgMjQg MTU6MTg6NDQgMjAxNiArMDEwMA0KPiANCj4gICAgICAgICBPdm1mUGtnL1BsYXRmb3JtUGVpOiB0 YWtlIFZDUFUgY291bnQgZnJvbSBRRU1VDQo+IGFuZCBjb25maWd1cmUgTXBJbml0TGliDQo+IA0K PiAgICAgICAgIFRoZXNlIHNldHRpbmdzIHdpbGwgYWxsb3cgQ3B1TXBQZWkgYW5kIENwdUR4ZSB0 bw0KPiB3YWl0IGZvciB0aGUgaW5pdGlhbCBBUA0KPiAgICAgICAgIGNoZWNrLWlucyBleGFjdGx5 IGFzIGxvbmcgYXMgbmVjZXNzYXJ5Lg0KPiANCj4gICAgICAgICBJdCBpcyBzYWZlIHRvIHNldA0K PiBQY2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyIGFuZA0KPiAgICAgICAgIFBjZENwdUFw SW5pdFRpbWVPdXRJbk1pY3JvU2Vjb25kcyBpbg0KPiBPdm1mUGtnL1BsYXRmb3JtUGVpLg0KPiAg ICAgICAgIE92bWZQa2cvUGxhdGZvcm1QZWkgaW5zdGFsbHMgdGhlIHBlcm1hbmVudCBQRUkNCj4g UkFNLCBwcm9kdWNpbmcNCj4gICAgICAgICBnRWZpUGVpTWVtb3J5RGlzY292ZXJlZFBwaUd1aWQs IGFuZA0KPiBVZWZpQ3B1UGtnL0NwdU1wUGVpIGhhcyBhIGRlcGV4IG9uDQo+ICAgICAgICAgZ0Vm aVBlaU1lbW9yeURpc2NvdmVyZWRQcGlHdWlkLg0KPiANCj4gICAgICAgICBbLi4uXQ0KPiANCj4g ICAgIEV4Y2VwdC4uLiBpbiBjb21taXQgMGEwZDUyOTZlNDQ4DQo+ICgiVWVmaUNwdVBrZy9DcHVN cFBlaTogc3VwcG9ydA0KPiAgICAgc3RhY2sgZ3VhcmQgZmVhdHVyZSIsIDIwMTgtMDktMTApLCB0 aGUgREVQRVgNCj4gbWVudGlvbmVkIGluIHN0ZXAgKGQpDQo+ICAgICB3YXMgZGVsZXRlZC4NCj4g DQo+ICAgICBTbyBub3cgSSBnb3QgYSBiaXQgbmVydm91cywgYmVjYXVzZSBob3cgYXJlIHRoZW4g dGhlDQo+IHNldHRpbmcgYW5kDQo+ICAgICByZWFkaW5nIG9mIHRoZSBQQ0Qgc2VyaWFsaXplZCBi ZXR3ZWVuDQo+IE92bWZQa2cvUGxhdGZvcm1QZWksIGFuZA0KPiAgICAgUGVpTXBJbml0TGliIGlu IENwdU1wUGVpPw0KPiANCj4gICAgIEx1Y2tpbHkgaG93ZXZlciwgSSB0aGluayB3ZSdyZSBzYWZl Og0KPiANCj4gICAgIC0gQ3B1TXBQZWkgaXRzZWxmIGRvZXNuJ3QgY29uc3VtZSB0aGUgUENELA0K PiANCj4gICAgIC0gTXBJbml0TGliIGNvbnN1bWVzIHRoZSBQQ0QgaW4gc2V2ZXJhbCBmdW5jdGlv bnMsDQo+IGJ1dCBhbGwgY2xpZW50cw0KPiAgICAgICBvZiBNcEluaXRMaWIgbXVzdCBjYWxsIE1w SW5pdExpYkluaXRpYWxpemUoKQ0KPiBmaXJzdCwgYmVmb3JlIHVzaW5nDQo+ICAgICAgIG90aGVy IGxpYnJhcnkgQVBJcw0KPiANCj4gICAgIC0gQ3B1TXBQZWkgY2FsbHMgTXBJbml0TGliSW5pdGlh bGl6ZSgpIGluIHRoZQ0KPiAgICAgICBJbml0aWFsaXplQ3B1TXBXb3JrZXIoKSBmdW5jdGlvbg0K PiANCj4gICAgIC0gdGhlIEluaXRpYWxpemVDcHVNcFdvcmtlcigpIGZ1bmN0aW9uIGlzIG9ubHkN Cj4gY2FsbGVkIGZyb20gdGhlDQo+ICAgICAgIE1lbW9yeURpc2NvdmVyZWRQcGlOb3RpZnlDYWxs YmFjaygpLg0KPiANCj4gICAgIFNvIHRoZSBQQ0Qgc2V0L2dldCBvcmRlciByZW1haW5zIHNhZmUg YW5kDQo+IGRldGVybWluaXN0aWMuIEV2ZW4gdGhvdWdoDQo+ICAgICBDcHVNcFBlaSBjYW4gbm93 IGJlIGRpc3BhdGNoZWQgYmVmb3JlIHBlcm1hbmVudA0KPiBtZW1vcnkgaXMNCj4gICAgIGRpc2Nv dmVyZWQsIE1wSW5pdExpYkluaXRpYWxpemUoKSAtLSBhbmQgc28gdGhlDQo+IHJlYWRpbmcgb2Yg dGhlIFBDRA0KPiAgICAgLS0gaXMgc3RpbGwgZGVsYXllZCB1bnRpbCBhZnRlciBwZXJtYW5lbnQg UEVJIFJBTSBpcw0KPiBhdmFpbGFibGUuDQo+ICAgICBUaGF0J3MgYSByZWxpZWYuDQo+IA0KPiAg ICAgSW4gZmFjdCwgaXQgbG9va3MgbGlrZSBjb21taXQgMGEwZDUyOTZlNDQ4DQo+ICgiVWVmaUNw dVBrZy9DcHVNcFBlaToNCj4gICAgIHN1cHBvcnQgc3RhY2sgZ3VhcmQgZmVhdHVyZSIsIDIwMTgt MDktMTApIGRlbGF5ZWQNCj4gdGhlIGVudGlyZQ0KPiAgICAgb3JpZ2luYWwgZW50cnkgcG9pbnQg b2YgQ3B1TXBQZWkgaW50byB0aGUgIm1lbW9yeQ0KPiBkaXNjb3ZlcmVkIg0KPiAgICAgY2FsbGJh Y2suIFRoYXQgYXBwZWFycyBPSyB0byBtZSwgaXQncyBqdXN0IHRoYXQgdGhlDQo+IHBhdGNoICh+ MTAwMA0KPiAgICAgbGluZXMpIGNvdWxkIGhhdmUgYmVlbiBzcGxpdCBhdCBsZWFzdCBpbiB0d286 IG9uZQ0KPiBwYXRjaCBjb3VsZCBoYXZlDQo+ICAgICBpbXBsZW1lbnRlZCB0aGUgIlBQSSBERVBF WCAtLT4gUFBJIG5vdGlmeSINCj4gdHJhbnNmb3JtYXRpb24sIHdpdGhvdXQNCj4gICAgIG90aGVy IGNoYW5nZXMgaW4gYmVoYXZpb3IsIGFuZCB0aGUgc2Vjb25kIHBhdGNoDQo+IGNvdWxkIGhhdmUg ZXh0ZW5kZWQNCj4gICAgIHRoZSAobm93IGRlbGF5ZWQpIHN0YXJ0dXAgbG9naWMgd2l0aA0KPiAg ICAgSW5pdGlhbGl6ZU1wRXhjZXB0aW9uU3RhY2tTd2l0Y2hIYW5kbGVycygpICYNCj4gZnJpZW5k cy4NCj4gDQo+IFRoYW5rcw0KPiBMYXN6bG8NCj4gDQo+IA0KDQo=