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.126, mailfrom: michael.d.kinney@intel.com) Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by groups.io with SMTP; Tue, 30 Apr 2019 08:21:40 -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 orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Apr 2019 08:21:39 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,414,1549958400"; d="scan'208";a="135699061" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga007.jf.intel.com with ESMTP; 30 Apr 2019 08:21:39 -0700 Received: from orsmsx115.amr.corp.intel.com (10.22.240.11) by ORSMSX106.amr.corp.intel.com (10.22.225.133) with Microsoft SMTP Server (TLS) id 14.3.408.0; Tue, 30 Apr 2019 08:21:39 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.24]) by ORSMSX115.amr.corp.intel.com ([169.254.4.162]) with mapi id 14.03.0415.000; Tue, 30 Apr 2019 08:21:39 -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/TkpmHhKe6VEKcO9kj6o03VqZPSbCAgAQXasCAAZSwAP//46Bw Date: Tue, 30 Apr 2019 15:21:38 +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: 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.139] 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 TGFzemxvLA0KDQpJIGFncmVlIHdpdGggeW91ciBhbmFseXNpcy4gIEkgd2lsbCB3b3JrIG9uIGEg DQpkaWZmZXJlbnQgc29sdXRpb24uDQoNClRoYW5rcywNCg0KTWlrZQ0KDQo+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IFttYWlsdG86 ZGV2ZWxAZWRrMi5ncm91cHMuaW9dIE9uIEJlaGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4gU2VudDog VHVlc2RheSwgQXByaWwgMzAsIDIwMTkgMzowMiBBTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQg PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g Q2M6IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBOaSwgUmF5DQo+IDxyYXkubmlA aW50ZWwuY29tPjsgV2FuZywgSmlhbiBKDQo+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+IFN1 YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BhdGNoIDIvNF0NCj4gVWVmaUNwdVBrZy9NcEluaXRM aWI6IEF2b2lkIE1TUl9JQTMyX0FQSUNfQkFTRSBmb3INCj4gc2luZ2xlIGNvcmUNCj4gDQo+IE9u IDA0LzI5LzE5IDE5OjExLCBLaW5uZXksIE1pY2hhZWwgRCB3cm90ZToNCj4gPiBMYXN6bG8sDQo+ ID4NCj4gPiBJIHdhcyBhdHRlbXB0aW5nIHRvIGZvbGxvdyB0aGUgZXF1aXZhbGVudCBkZXRlY3Rp b24NCj4gbG9naWMNCj4gPiB0aGF0IGlzIHVzZWQgaW4gdGhlIFNvdXJjZUxldmVsRGVidWdQa2cu DQo+ID4NCj4gPg0KPiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIvYmxvYi9lMmQz YTI1ZjFhMzEzNTIyDQo+IDFhOWM4MDYxZTFiOGY5MDI0NWQ3MjdlYi9Tb3VyY2VMZXZlbERlYnVn UGtnL0xpYnJhcnkvRGUNCj4gYnVnQWdlbnQvRGVidWdBZ2VudENvbW1vbi9EZWJ1Z01wLmMjTDE0 MA0KPiA+DQo+ID4gWWVzLiAgQ1BVSUQgY2FuIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIGF2YWlsYWJp bGl0eSBvZg0KPiA+IE1TUl9JQTMyX0FQSUNfQkFTRS4gIFRoYXQgd291bGQgYmUgc2FmZXIgaWYg dGhlDQo+IG1heGltdW0NCj4gPiBudW1iZXIgb2YgQ1BVcyBjYW4gc3RhcnQgd2l0aCBhIHZhbHVl IG9mIDEgYW5kIGNoYW5nZQ0KPiB0bw0KPiA+IGEgaGlnaGVyIHZhbHVlIGxhdGVyLiAgQnV0IGJh c2VkIG9uIHlvdXIgYW5hbHlzaXMsDQo+ID4gaXQgbG9va3MgbGlrZSB0aGUgbWF4IG51bWJlciBv ZiBDUFVzIGlzIGtub3duIHdoZW4NCj4gdGhpcw0KPiA+IGZ1bmN0aW9uIHJ1bnMgd2hpY2ggaXMg YWx3YXlzIGFmdGVyIG1lbW9yeSBpcw0KPiBkaXNjb3ZlcmVkLg0KPiANCj4gVGhlIHByb3Bvc2Vk IHBhdGNoIGlzIHNhZmUgd3J0LiB0aGUgUENEIHByb2R1Y3Rpb24tDQo+IGNvbnN1bXB0aW9uIHNl cXVlbmNlLA0KPiB5ZXMuDQo+IA0KPiBIb3dldmVyLCB0aGUgcGF0Y2ggaXMgdW5zYWZlIGR1ZSB0 byBBUHMgY2FsbGluZyBhIFBQSQ0KPiBtZW1iZXIgZnVuY3Rpb24NCj4gKG5hbWVseSwgdGhlIFBD RF9QUEkuR2V0MzIgZnVuY3Rpb24pLg0KPiANCj4gVG8gbXkgdW5kZXJzdGFuZGluZywgQVBzIG1h eSBub3QgY2FsbCBQUElzLg0KPiANCj4gPiBUaGUgTVNSIGFjY2VzcyBpcyBpbiB0aGUgZnVuY3Rp b24gR2V0Q3B1TXBEYXRhKCksDQo+IHdoaWNoIGlzDQo+ID4gY2FsbGVkIGZyb20gYWxsIHRoZSBN UCBzZXJ2aWNlIGZ1bmN0aW9ucy4gIEkgd2FzDQo+IHRyeWluZw0KPiA+IHRvIGF2b2lkIGFuIGV4 dHJhIENQVUlEIGNoZWNrIG9uIGFsbCB0aG9zZSBwYXRocy4NCj4gPg0KPiA+IEkgcHJlZmVyIHRo ZSBjdXJyZW50IHBhdGNoIGlmIGl0IGlzIHNhZmUuICBQbGVhc2UgbGV0DQo+IG1lDQo+ID4ga25v dyBpZiB5b3UgdGhpbmsgZXh0cmEgY29tbWVudHMgYXJlIHJlcXVpcmVkIGluIHRoZQ0KPiBjb2Rl DQo+ID4gb3IgdGhlIGNvbW1pdCBtZXNzYWdlLg0KPiANCj4gSSB0aGluayB0aGUgcGF0Y2ggaXMg dW5zYWZlLCBiZWNhdXNlIGl0IGlzIHBvc3NpYmxlIGZvcg0KPiBib3RoIG9mIHRoZQ0KPiBmb2xs b3dpbmcgY29uZGl0aW9ucyB0byBob2xkLCBhdCB0aGUgc2FtZSB0aW1lOg0KPiANCj4gLSB0aGUg ZnVuY3Rpb24gbWF5IGJlIGVudGVyZWQgYnkgYW4gQVANCj4gLSB0aGUgUENEIG1heSBiZSBkeW5h bWljDQo+IA0KPiBUaGF0IHdvdWxkIGxlYWQgdG8gYW4gQVAgY2FsbGluZw0KPiANCj4gICAoR2V0 UGNkUHBpUG9pbnRlciAoKSktPkdldDMyIChUb2tlbk51bWJlcikNCj4gDQo+IHdoaWNoIEkgYmVs aWV2ZSBpcyBmb3JiaWRkZW4uDQo+IA0KPiANCj4gSWYgdGhlIHBhdGNoIGNhbGxlZCBGaXhlZFBj ZEdldDMyKCksIHRoZW4gdGhlIHBhdGNoDQo+IHdvdWxkIGJlIHNhZmUuDQo+IFVuZm9ydHVuYXRl bHksIGluIHRoYXQgY2FzZSwgdGhlIHBhdGNoIHdvdWxkbid0IGNvbXBpbGUNCj4gZm9yIE92bWZQ a2cuDQo+IA0KPiBJZiB3ZSBjYW4gdXNlIGEgbmV3IFBDRCBmb3IgdGhpcywgc3VjaCB0aGF0DQo+ IFVlZmlDcHVQa2cuZGVjIGRvZXMgbm90DQo+IHBlcm1pdCBwbGF0Zm9ybXMgdG8gcGljayAiZHlu YW1pYyIgZm9yIHRoYXQgUENEIC0tIGkuZS4NCj4gaXQgd291bGQgaGF2ZSB0bw0KPiBiZSBGZWF0 dXJlLCBGaXhlZCwgb3IgUGF0Y2ggLS0sIGFuZCB0aGVuIHRoZSBwYXRjaCBpcw0KPiB1cGRhdGVk IHRvIGNhbGwNCj4gdGhlIGFwcHJvcHJpYXRlIGZsYXZvci1zcGVjaWZpYyBQQ0QgbWFjcm8NCj4g KEZlYXR1cmVQY2RHZXQsIFBhdGNoUGNkR2V0KiwNCj4gRml4ZWRQY2RHZXQqKSwgdGhlbiB0aGUg cGF0Y2ggd2lsbCBiZSBmaW5lLg0KPiANCj4gVGhlIHBvaW50IGlzIHRoYXQgdGhlICJnZXR0aW5n IHRoZSBQQ0QiIGFjdGlvbiBuZXZlcg0KPiBlbnRlciBhIGxpYnJhcnkNCj4gZnVuY3Rpb24gdGhh dCBpcyBub3QgZXhwbGljaXRseSBNUC1zYWZlLCBub3IgZW50ZXIgYQ0KPiBQUEkgbWVtYmVyIGZ1 bmN0aW9uLg0KPiANCj4gVGhhbmtzDQo+IExhc3psbw0KPiANCj4gPj4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPj4gRnJvbTogZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4gW21haWx0bzpk ZXZlbEBlZGsyLmdyb3Vwcy5pb10NCj4gPj4gT24gQmVoYWxmIE9mIExhc3psbyBFcnNlaw0KPiA+ PiBTZW50OiBGcmlkYXksIEFwcmlsIDI2LCAyMDE5IDEyOjI1IFBNDQo+ID4+IFRvOiBLaW5uZXks IE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+Ow0KPiA+PiBkZXZlbEBlZGsy Lmdyb3Vwcy5pbw0KPiA+PiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IE5p LCBSYXkNCj4gPj4gPHJheS5uaUBpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPGppYW4uai53 YW5nQGludGVsLmNvbT4NCj4gPj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUGF0Y2ggMi80 XQ0KPiA+PiBVZWZpQ3B1UGtnL01wSW5pdExpYjogQXZvaWQgTVNSX0lBMzJfQVBJQ19CQVNFIGZv cg0KPiA+PiBzaW5nbGUgY29yZQ0KPiA+Pg0KPiA+PiAoK0ppYW4pDQo+ID4+DQo+ID4+IEhpIE1p a2UsDQo+ID4+DQo+ID4+IHRoYW5rIHlvdSBmb3IgdGhlIENDLg0KPiA+Pg0KPiA+PiBPbiAwNC8y NS8xOSAxOTo1MywgTWljaGFlbCBEIEtpbm5leSB3cm90ZToNCj4gPj4+IEF2b2lkIGFjY2VzcyB0 byBNU1JfSUEzMl9BUElDX0JBU0UgdGhhdCBtYXkgbm90IGJlDQo+ID4+IHN1cHBvcnRlZA0KPiA+ Pj4gb24gc2luZ2xlIGNvcmUgQ1BVcy4gIElmDQo+ID4+IFBjZENwdU1heExvZ2ljYWxQcm9jZXNz b3JOdW1iZXIgaXMgMSwNCj4gPj4+IHRoZW4gdGhlcmUgaXMgb25seSBvbmUgQ1BVIHRoYXQgbXVz dCBiZSB0aGUgQlNQLg0KPiA+Pj4NCj4gPj4+IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRl bC5jb20+DQo+ID4+PiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiA+Pj4gQ2M6IExh c3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+PiBTaWduZWQtb2ZmLWJ5OiBNaWNo YWVsIEQgS2lubmV5DQo+ID4+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4+IC0t LQ0KPiA+Pj4gIFVlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvUGVpTXBMaWIuYyB8IDE1DQo+ ID4+ICsrKysrKysrKysrKysrLQ0KPiA+Pj4gIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25z KCspLCAxIGRlbGV0aW9uKC0pDQo+ID4+Pg0KPiA+Pj4gZGlmZiAtLWdpdA0KPiBhL1VlZmlDcHVQ a2cvTGlicmFyeS9NcEluaXRMaWIvUGVpTXBMaWIuYw0KPiA+PiBiL1VlZmlDcHVQa2cvTGlicmFy eS9NcEluaXRMaWIvUGVpTXBMaWIuYw0KPiA+Pj4gaW5kZXggMzVkZmY5MWZkMi4uNTQ4ODA0OWMw OCAxMDA2NDQNCj4gPj4+IC0tLSBhL1VlZmlDcHVQa2cvTGlicmFyeS9NcEluaXRMaWIvUGVpTXBM aWIuYw0KPiA+Pj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9QZWlNcExpYi5j DQo+ID4+PiBAQCAtMSw3ICsxLDcgQEANCj4gPj4+ICAvKiogQGZpbGUNCj4gPj4+ICAgIE1QIGlu aXRpYWxpemUgc3VwcG9ydCBmdW5jdGlvbnMgZm9yIFBFSSBwaGFzZS4NCj4gPj4+DQo+ID4+PiAt ICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAyMDE4LCBJbnRlbCBDb3Jwb3JhdGlvbi4NCj4gQWxsDQo+ ID4+IHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4+PiArICBDb3B5cmlnaHQgKGMpIDIwMTYgLSAy MDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4NCj4gQWxsDQo+ID4+IHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4+PiAgICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0K PiA+Pj4NCj4gPj4+ICAqKi8NCj4gPj4+IEBAIC0xMDEsNiArMTAxLDE5IEBAIEdldENwdU1wRGF0 YSAoDQo+ID4+PiAgICBNU1JfSUEzMl9BUElDX0JBU0VfUkVHSVNURVIgIEFwaWNCYXNlTXNyOw0K PiA+Pj4gICAgSUEzMl9ERVNDUklQVE9SICAgICAgICAgICAgICBJZHRyOw0KPiA+Pj4NCj4gPj4+ ICsgIC8vDQo+ID4+PiArICAvLyBJZiB0aGVyZSBpcyBvbmx5IDEgQ1BVLCB0aGVuIGl0IG11c3Qg YmUgdGhlDQo+IEJTUC4NCj4gPj4gVGhpcyBhdm9pZHMgYW4gYWNjZXNzIHRvDQo+ID4+PiArICAv LyBNU1JfSUEzMl9BUElDX0JBU0UgdGhhdCBtYXkgbm90IGJlIHN1cHBvcnRlZA0KPiBvbg0KPiA+ PiBzaW5nbGUgY29yZSBDUFVzLg0KPiA+Pj4gKyAgLy8NCj4gPj4+ICsgIGlmIChQY2RHZXQzMiAo UGNkQ3B1TWF4TG9naWNhbFByb2Nlc3Nvck51bWJlcikNCj4gPT0NCj4gPj4gMSkgew0KPiA+Pj4g KyAgICBDcHVNcERhdGEgPSBHZXRDcHVNcERhdGFGcm9tR3VpZGVkSG9iICgpOw0KPiA+Pj4gKyAg ICBBU1NFUlQgKENwdU1wRGF0YSAhPSBOVUxMKTsNCj4gPj4+ICsgICAgcmV0dXJuIENwdU1wRGF0 YTsNCj4gPj4+ICsgIH0NCj4gPj4+ICsNCj4gPj4+ICsgIC8vDQo+ID4+PiArICAvLyBPdGhlcndp c2UgdXNlIE1TUl9JQTMyX0FQSUNfQkFTRSB0byBkZXRlcm1pbmUNCj4gaWYNCj4gPj4gdGhlIENQ VSBpcyBCU1Agb3IgQVAuDQo+ID4+PiArICAvLw0KPiA+Pj4gICAgQXBpY0Jhc2VNc3IuVWludDY0 ID0gQXNtUmVhZE1zcjY0DQo+ID4+IChNU1JfSUEzMl9BUElDX0JBU0UpOw0KPiA+Pj4gICAgaWYg KEFwaWNCYXNlTXNyLkJpdHMuQlNQID09IDEpIHsNCj4gPj4+ICAgICAgQ3B1TXBEYXRhID0gR2V0 Q3B1TXBEYXRhRnJvbUd1aWRlZEhvYiAoKTsNCj4gPj4+DQo+ID4+DQo+ID4+IFRoaXMgcGF0Y2gg bGVhZHMgbWUgZG93biBvbiB0d28gcGF0aHM6DQo+ID4+DQo+ID4+ICgxKSBTcGVjaWZpY2FsbHkg cmVnYXJkaW5nIHRoZSBjb2RlIGNoYW5nZS4gSSB0aGluaw0KPiB0aGlzDQo+ID4+IHBhdGNoIGlz IHVuc2FmZQ0KPiA+PiAgICAgb24gcGxhdGZvcm1zIHRoYXQgZHluYW1pY2FsbHkgc2V0IHRoZSBQ Q0QgdG8gYQ0KPiB2YWx1ZQ0KPiA+PiBsYXJnZXIgdGhhbiAxLg0KPiA+PiAgICAgKEluY2x1ZGlu ZyBPVk1GLikNCj4gPj4NCj4gPj4gICAgIElmIHRoZSB2YWx1ZSBpcyBsYXJnZXIgdGhhbiAxLCB0 aGVuIHRoZSBzeXN0ZW0NCj4gaGFzDQo+ID4+IGF0IGxlYXN0IG9uZSBBUCwNCj4gPj4gICAgIGFu ZCB0aGUgQVAgbWF5IGVudGVyIHRoZSBmdW5jdGlvbi4gSW4gYWRkaXRpb24sDQo+ID4+IGJlY2F1 c2UgdGhlIFBDRCBpcw0KPiA+PiAgICAgZHluYW1pYywgdGhlIFBjZEdldDMyKCkgY2FsbCB3aWxs IGludm9rZSB0aGUgUENEDQo+IFBQSQ0KPiA+PiAoaWYgSQ0KPiA+PiAgICAgdW5kZXJzdGFuZCBj b3JyZWN0bHkpLCB3aGljaCBpcyBub3QgYWxsb3dlZCBmb3INCj4gYW4NCj4gPj4gQVAuDQo+ID4+ DQo+ID4+ICAgICBJcyBpdCBub3QgcG9zc2libGUgdG8gZGV0ZXJtaW5lIHRoZSBhdmFpbGFiaWxp dHkNCj4gb2YNCj4gPj4gICAgIE1TUl9JQTMyX0FQSUNfQkFTRSBmcm9tIENQVUlELCBvciBhIGRp ZmZlcmVudA0KPiBNU1I/DQo+ID4+DQo+ID4+DQo+ID4+ICgyKSBNb3JlIGdlbmVyYWxseSwgdGhp cyBwYXRjaCBtYWRlIG1lIHJldmlldw0KPiA+PiBPdm1mUGtnL1BsYXRmb3JtUGVpOg0KPiA+Pg0K PiA+PiAgICAgKGEpIE92bWZQa2cvUGxhdGZvcm1QZWkgc2V0cyB0aGUgUENEIGluDQo+ID4+IE1h eENwdUNvdW50SW5pdGlhbGl6YXRpb24oKSwNCj4gPj4NCj4gPj4gICAgIChiKSBsYXRlciwgT3Zt ZlBrZy9QbGF0Zm9ybVBlaSBwdWJsaXNoZXMgdGhlDQo+ID4+IHBlcm1hbmVudCBQRUkgUkFNIGlu DQo+ID4+ICAgICAgICAgUHVibGlzaFBlaU1lbW9yeSgpDQo+ID4+DQo+ID4+ICAgICAoYykgd2hp Y2ggaW4gdHVybiBsZWFkcyB0byB0aGUgaW5zdGFsbGF0aW9uIG9mDQo+ID4+ICAgICAgICAgZ0Vm aVBlaU1lbW9yeURpc2NvdmVyZWRQcGlHdWlkIGludHRvIHRoZSBQUEkNCj4gPj4gZGF0YWJhc2Us IGJ5IHRoZQ0KPiA+PiAgICAgICAgIFBFSSBDb3JlDQo+ID4+DQo+ID4+ICAgICAoZCkgQ3B1TXBQ ZWkgY2FuIG5vdyBiZSBkaXNwYXRjaGVkLCBiZWNhdXNlIGl0DQo+IGhhcyBhDQo+ID4+IGRlcGV4 IG9uIHRoZQ0KPiA+PiAgICAgICAgICJtZW1vcnkgZGlzY292ZXJlZCIgUFBJDQo+ID4+DQo+ID4+ ICAgICAoZSkgUGVpTXBJbml0TGliLCB3aGljaCBpcyBsaW5rZWQgaW50byBDcHVNcFBlaSwNCj4g Y2FuDQo+ID4+IGNvbnN1bWUgdGhlIFBDRA0KPiA+PiAgICAgICAgIHNhZmVseS4NCj4gPj4NCj4g Pj4gICAgIEkgcmVsaWVkIG9uIHRoaXMgYmVoYXZpb3IgaW4gdGhlIGZvbGxvd2luZyBPVk1GDQo+ ID4+IGNvbW1pdDoNCj4gPj4NCj4gPj4gICAgIGNvbW1pdCA0NWE3MGRiM2MzYTU5YjY0ZTBmNTE3 ODcwNDE1OTYzZmJmYWNmNTA3DQo+ID4+ICAgICBBdXRob3I6IExhc3psbyBFcnNlayA8bGVyc2Vr QHJlZGhhdC5jb20+DQo+ID4+ICAgICBEYXRlOiAgIFRodSBOb3YgMjQgMTU6MTg6NDQgMjAxNiAr MDEwMA0KPiA+Pg0KPiA+PiAgICAgICAgIE92bWZQa2cvUGxhdGZvcm1QZWk6IHRha2UgVkNQVSBj b3VudCBmcm9tDQo+IFFFTVUNCj4gPj4gYW5kIGNvbmZpZ3VyZSBNcEluaXRMaWINCj4gPj4NCj4g Pj4gICAgICAgICBUaGVzZSBzZXR0aW5ncyB3aWxsIGFsbG93IENwdU1wUGVpIGFuZA0KPiBDcHVE eGUgdG8NCj4gPj4gd2FpdCBmb3IgdGhlIGluaXRpYWwgQVANCj4gPj4gICAgICAgICBjaGVjay1p bnMgZXhhY3RseSBhcyBsb25nIGFzIG5lY2Vzc2FyeS4NCj4gPj4NCj4gPj4gICAgICAgICBJdCBp cyBzYWZlIHRvIHNldA0KPiA+PiBQY2RDcHVNYXhMb2dpY2FsUHJvY2Vzc29yTnVtYmVyIGFuZA0K PiA+PiAgICAgICAgIFBjZENwdUFwSW5pdFRpbWVPdXRJbk1pY3JvU2Vjb25kcyBpbg0KPiA+PiBP dm1mUGtnL1BsYXRmb3JtUGVpLg0KPiA+PiAgICAgICAgIE92bWZQa2cvUGxhdGZvcm1QZWkgaW5z dGFsbHMgdGhlIHBlcm1hbmVudA0KPiBQRUkNCj4gPj4gUkFNLCBwcm9kdWNpbmcNCj4gPj4gICAg ICAgICBnRWZpUGVpTWVtb3J5RGlzY292ZXJlZFBwaUd1aWQsIGFuZA0KPiA+PiBVZWZpQ3B1UGtn L0NwdU1wUGVpIGhhcyBhIGRlcGV4IG9uDQo+ID4+ICAgICAgICAgZ0VmaVBlaU1lbW9yeURpc2Nv dmVyZWRQcGlHdWlkLg0KPiA+Pg0KPiA+PiAgICAgICAgIFsuLi5dDQo+ID4+DQo+ID4+ICAgICBF eGNlcHQuLi4gaW4gY29tbWl0IDBhMGQ1Mjk2ZTQ0OA0KPiA+PiAoIlVlZmlDcHVQa2cvQ3B1TXBQ ZWk6IHN1cHBvcnQNCj4gPj4gICAgIHN0YWNrIGd1YXJkIGZlYXR1cmUiLCAyMDE4LTA5LTEwKSwg dGhlIERFUEVYDQo+ID4+IG1lbnRpb25lZCBpbiBzdGVwIChkKQ0KPiA+PiAgICAgd2FzIGRlbGV0 ZWQuDQo+ID4+DQo+ID4+ICAgICBTbyBub3cgSSBnb3QgYSBiaXQgbmVydm91cywgYmVjYXVzZSBo b3cgYXJlIHRoZW4NCj4gdGhlDQo+ID4+IHNldHRpbmcgYW5kDQo+ID4+ICAgICByZWFkaW5nIG9m IHRoZSBQQ0Qgc2VyaWFsaXplZCBiZXR3ZWVuDQo+ID4+IE92bWZQa2cvUGxhdGZvcm1QZWksIGFu ZA0KPiA+PiAgICAgUGVpTXBJbml0TGliIGluIENwdU1wUGVpPw0KPiA+Pg0KPiA+PiAgICAgTHVj a2lseSBob3dldmVyLCBJIHRoaW5rIHdlJ3JlIHNhZmU6DQo+ID4+DQo+ID4+ICAgICAtIENwdU1w UGVpIGl0c2VsZiBkb2Vzbid0IGNvbnN1bWUgdGhlIFBDRCwNCj4gPj4NCj4gPj4gICAgIC0gTXBJ bml0TGliIGNvbnN1bWVzIHRoZSBQQ0QgaW4gc2V2ZXJhbA0KPiBmdW5jdGlvbnMsDQo+ID4+IGJ1 dCBhbGwgY2xpZW50cw0KPiA+PiAgICAgICBvZiBNcEluaXRMaWIgbXVzdCBjYWxsIE1wSW5pdExp YkluaXRpYWxpemUoKQ0KPiA+PiBmaXJzdCwgYmVmb3JlIHVzaW5nDQo+ID4+ICAgICAgIG90aGVy IGxpYnJhcnkgQVBJcw0KPiA+Pg0KPiA+PiAgICAgLSBDcHVNcFBlaSBjYWxscyBNcEluaXRMaWJJ bml0aWFsaXplKCkgaW4gdGhlDQo+ID4+ICAgICAgIEluaXRpYWxpemVDcHVNcFdvcmtlcigpIGZ1 bmN0aW9uDQo+ID4+DQo+ID4+ICAgICAtIHRoZSBJbml0aWFsaXplQ3B1TXBXb3JrZXIoKSBmdW5j dGlvbiBpcyBvbmx5DQo+ID4+IGNhbGxlZCBmcm9tIHRoZQ0KPiA+PiAgICAgICBNZW1vcnlEaXNj b3ZlcmVkUHBpTm90aWZ5Q2FsbGJhY2soKS4NCj4gPj4NCj4gPj4gICAgIFNvIHRoZSBQQ0Qgc2V0 L2dldCBvcmRlciByZW1haW5zIHNhZmUgYW5kDQo+ID4+IGRldGVybWluaXN0aWMuIEV2ZW4gdGhv dWdoDQo+ID4+ICAgICBDcHVNcFBlaSBjYW4gbm93IGJlIGRpc3BhdGNoZWQgYmVmb3JlIHBlcm1h bmVudA0KPiA+PiBtZW1vcnkgaXMNCj4gPj4gICAgIGRpc2NvdmVyZWQsIE1wSW5pdExpYkluaXRp YWxpemUoKSAtLSBhbmQgc28gdGhlDQo+ID4+IHJlYWRpbmcgb2YgdGhlIFBDRA0KPiA+PiAgICAg LS0gaXMgc3RpbGwgZGVsYXllZCB1bnRpbCBhZnRlciBwZXJtYW5lbnQgUEVJDQo+IFJBTSBpcw0K PiA+PiBhdmFpbGFibGUuDQo+ID4+ICAgICBUaGF0J3MgYSByZWxpZWYuDQo+ID4+DQo+ID4+ICAg ICBJbiBmYWN0LCBpdCBsb29rcyBsaWtlIGNvbW1pdCAwYTBkNTI5NmU0NDgNCj4gPj4gKCJVZWZp Q3B1UGtnL0NwdU1wUGVpOg0KPiA+PiAgICAgc3VwcG9ydCBzdGFjayBndWFyZCBmZWF0dXJlIiwg MjAxOC0wOS0xMCkNCj4gZGVsYXllZA0KPiA+PiB0aGUgZW50aXJlDQo+ID4+ICAgICBvcmlnaW5h bCBlbnRyeSBwb2ludCBvZiBDcHVNcFBlaSBpbnRvIHRoZQ0KPiAibWVtb3J5DQo+ID4+IGRpc2Nv dmVyZWQiDQo+ID4+ICAgICBjYWxsYmFjay4gVGhhdCBhcHBlYXJzIE9LIHRvIG1lLCBpdCdzIGp1 c3QgdGhhdA0KPiB0aGUNCj4gPj4gcGF0Y2ggKH4xMDAwDQo+ID4+ICAgICBsaW5lcykgY291bGQg aGF2ZSBiZWVuIHNwbGl0IGF0IGxlYXN0IGluIHR3bzoNCj4gb25lDQo+ID4+IHBhdGNoIGNvdWxk IGhhdmUNCj4gPj4gICAgIGltcGxlbWVudGVkIHRoZSAiUFBJIERFUEVYIC0tPiBQUEkgbm90aWZ5 Ig0KPiA+PiB0cmFuc2Zvcm1hdGlvbiwgd2l0aG91dA0KPiA+PiAgICAgb3RoZXIgY2hhbmdlcyBp biBiZWhhdmlvciwgYW5kIHRoZSBzZWNvbmQgcGF0Y2gNCj4gPj4gY291bGQgaGF2ZSBleHRlbmRl ZA0KPiA+PiAgICAgdGhlIChub3cgZGVsYXllZCkgc3RhcnR1cCBsb2dpYyB3aXRoDQo+ID4+ICAg ICBJbml0aWFsaXplTXBFeGNlcHRpb25TdGFja1N3aXRjaEhhbmRsZXJzKCkgJg0KPiA+PiBmcmll bmRzLg0KPiA+Pg0KPiA+PiBUaGFua3MNCj4gPj4gTGFzemxvDQo+ID4+DQo+ID4+DQo+ID4NCj4g DQo+IA0KPiANCg0K