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.24, mailfrom: ray.ni@intel.com) Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by groups.io with SMTP; Wed, 31 Jul 2019 23:25:24 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 31 Jul 2019 23:25:23 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.64,333,1559545200"; d="scan'208";a="172810773" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga008.fm.intel.com with ESMTP; 31 Jul 2019 23:25:23 -0700 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 31 Jul 2019 23:25:23 -0700 Received: from shsmsx151.ccr.corp.intel.com (10.239.6.50) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 31 Jul 2019 23:25:22 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.112]) by SHSMSX151.ccr.corp.intel.com ([169.254.3.250]) with mapi id 14.03.0439.000; Thu, 1 Aug 2019 14:25:20 +0800 From: "Ni, Ray" To: "Yao, Jiewen" , "devel@edk2.groups.io" , "lersek@redhat.com" CC: "Dong, Eric" , "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH v2 2/2] UefiCpuPkg/PiSmmCpu: PcdCpuSmmAccessOut controls SMM access-out policy Thread-Topic: [edk2-devel] [PATCH v2 2/2] UefiCpuPkg/PiSmmCpu: PcdCpuSmmAccessOut controls SMM access-out policy Thread-Index: AQHVR/WU6Iz8BO8X30eoNUShJHkQl6bk4uAAgACY32D//4HjAIAAkNFw//+I64CAAK0ucA== Date: Thu, 1 Aug 2019 06:25:20 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C26720C@SHSMSX104.ccr.corp.intel.com> References: <20190731163852.191708-1-ray.ni@intel.com> <20190731163852.191708-3-ray.ni@intel.com>,<50b073a1-bf04-4b8a-e267-2af933d34c5c@redhat.com> <734D49CCEBEEF84792F5B80ED585239D5C266BC4@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F738DCC@shsmsx102.ccr.corp.intel.com> <734D49CCEBEEF84792F5B80ED585239D5C266CC5@SHSMSX104.ccr.corp.intel.com> <74D8A39837DF1E4DA445A8C0B3885C503F739126@shsmsx102.ccr.corp.intel.com> In-Reply-To: <74D8A39837DF1E4DA445A8C0B3885C503F739126@shsmsx102.ccr.corp.intel.com> Accept-Language: en-US, zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: ray.ni@intel.com Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 Smlld2VuLCBMYXN6bG8sDQpGaXJzdGx5IGxldCdzIGFzc3VtZSB3ZSBhcmUgYWxpZ25lZCB0byB1 c2Ugc2luZ2xlL29uZSBQQ0QgdG8gY29udHJvbCBib3RoIHN0YXRpYyBwYWdlIHRhYmxlIGNyZWF0 aW9uIGFuZCBTTU0gYWNjZXNzIG91dC4NCg0KV2l0aCB0aGlzIGFzc3VtcHRpb24sIHdlIG5lZWQg bW9yZSBkaXNjdXNzaW9uIGFib3V0IHdoYXQgcHJvcGVyIFBDRCBuYW1lIHRvIGNob29zZS4NCg0K Rm9yIG5vdyB0aGVyZSBhcmUgdHdvIGNhbmRpZGF0ZXM6IFBjZENwdVNtbVN0YXRpY1BhZ2VUYWJs ZSBhbmQgUGNkQ3B1U21tQWNjZXNzT3V0Lg0KICBMYXN6bG8gZG9lc24ndCBsaWtlIFBjZENwdVNt bVN0YXRpY1BhZ2VUYWJsZSAoSmlld2VuIHByb3Bvc2VkLiBJIGRvbid0IGxpa2UgdGhpcyBuYW1l IGVpdGhlcikuDQogIEppZXdlbiBkb2Vzbid0IGxpa2UgUGNkQ3B1U21tQWNjZXNzT3V0IChJIHBy b3Bvc2VkLiBOb3Qgc3VyZSBpZiBMYXN6bG8gbGlrZXMgaXQgb3Igbm90KS4NCg0KV2hlbiB1c2lu ZyBQY2RDcHVTbW1TdGF0aWNQYWdlVGFibGUsIHRoZSBzdHJhaWdodGZvcndhcmQgbWVhbmluZyBp cyB3aGV0aGVyIHRoZSBwYWdlIHRhYmxlDQp0byBjb3ZlciBhbGwgbWVtb3J5IHRoYXQgbmVlZHMg YWNjZXNzL2ZvcmJpZGRlbiBpcyBjcmVhdGVkIGluIGFkdmFuY2UuIFdoZW4gcGFnZSB0YWJsZSBp cyBjcmVhdGVkDQppbiBhZHZhbmNlLCBpdCdzIGEgYml0IGhhcmQgdG8gZGVkdWNlIHRoYXQgYWNj ZXNzIG91dCBpcyBmb3JiaWRkZW4uIFdoZW4gcGFnZSB0YWJsZSBpcyBkeW5hbWljYWxseQ0KY3Jl YXRlZCBpbiBQRiBoYW5kbGVyLCBpdCdzIGFsc28gYSBiaXQgaGFyZCB0byBkZWR1Y2UgdGhhdCBh Y2Nlc3Mgb3V0IGlzIGFsbG93ZWQuDQoNCldoZW4gdXNpbmcgUGNkQ3B1U21tQWNjZXNzT3V0LCB0 aGUgc3RyYWlnaHRmb3J3YXJkIG1lYW5pbmcgaXMgd2hldGhlciB0byBhbGxvdyBTTU0gY29kZQ0K dG8gYWNjZXNzIG5vbi1TTVJBTSBtZW1vcnkuIEV4Y2VwdGlvbiBpcyBBQ1BJIE5WUy8gUlNWRCwg UnVudGltZSBhbmQgTU1JTyBjYW4NCmFsd2F5cyBiZSBhY2Nlc3NpYmxlIHRvIFNNTSBjb2RlLiBX aGVuIFBjZENwdVNtbUFjY2Vzc091dCBpcyBUUlVFLCB3aGV0aGVyIHRvIHVzZSBzdGF0aWMNCnBh Z2UgdGFibGUgaXMgUGlTbW1DcHUncyBpbXBsZW1lbnRhdGlvbiBjaG9pY2UsIGJ1dCBzaW5jZSBk eW5hbWljIHBhZ2UgdGFibGUgY3JlYXRpb24gaW4NClBGIGhhbmRsZXIgc2F2ZXMgdGhlIFNNUkFN LCB0aGUgUGlTbW1DcHUgY2FuIGNob29zZSB0byB1c2UgdGhlIG9wdGltYWwgc29sdXRpb24gd2hp Y2ggbWVhbnMNCnRvIGNyZWF0ZSBwYWdlIHRhYmxlIGluIFBGIGhhbmRsZXIgKElkZW50aWNhbCB0 byBKaWV3ZW4ncyBjYXNlICMyKS4gV2hlbiBQY2RDcHVTbW1BY2Nlc3NPdXQgaXMNCkZBTFNFLCBp dCdzIG1vcmUgc2VjdXJlIHRvIGhhdmUgYSBzdGF0aWMgcGFnZSB0YWJsZSAoSWRlbnRpY2FsIHRv IEppZXdlbidzIGNhc2UgIzMpLg0KV2hhdCBJIHdhbnQgdG8gc2F5IGhlcmUgaXMgU21tQWNjZXNz T3V0IGlzIHRoZSBwb2xpY3kgdGhhdCBQaVNtbUNwdSBkcml2ZXIgd2FudHMgdG8gZ2V0IGZyb20N CnBsYXRmb3JtIHNpZGUsIHdoZXRoZXIgdG8gdXNlIHN0YXRpYyBwYWdlIHRhYmxlIGlzIGl0cyBv d24gaW1wbGVtZW50YXRpb24gY2hvaWNlIHRvIG1lZXQgcGxhdGZvcm0NClNtbUFjY2Vzc091dCBy ZXF1aXJlbWVudC4NCg0KU28gSSB0aGluayBQY2RDcHVTbW1BY2Nlc3NPdXQgaXMgYmV0dGVyIHRo YW4gUGNkQ3B1U21tU3RhdGljUGFnZVRhYmxlLg0KDQpJIGFncmVlIHdpdGggSmlld2VuJ3MgY29u Y2VybiB0aGlzIG5hbWUgaXMgbm90IHZlcnkgcHJlY2lzZSB0byBkZXNjcmliZSB0aGUgYmVoYXZp b3IuDQoNCkxhc3psbywgSmlld2VuLA0KRG8geW91IGhhdmUgc29tZSBwcm9wb3NhbHM/DQoNClRo YW5rcywNClJheQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogWWFv LCBKaWV3ZW4NCj4gU2VudDogVGh1cnNkYXksIEF1Z3VzdCAxLCAyMDE5IDExOjExIEFNDQo+IFRv OiBOaSwgUmF5IDxyYXkubmlAaW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IGxlcnNl a0ByZWRoYXQuY29tDQo+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgV2Fu ZywgSmlhbiBKIDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJFOiBbZWRrMi1k ZXZlbF0gW1BBVENIIHYyIDIvMl0gVWVmaUNwdVBrZy9QaVNtbUNwdToNCj4gUGNkQ3B1U21tQWNj ZXNzT3V0IGNvbnRyb2xzIFNNTSBhY2Nlc3Mtb3V0IHBvbGljeQ0KPiANCj4gU21tQWNjZXNzT3V0 ID0gU01NIGFjY2VzcyBtZW1vcnkgb3V0c2lkZSBTTVJBTS4NCj4gDQo+IFNvLCBkbyB3ZSB3YW50 IHRvIHRyZWF0IFNNTSBhY2Nlc3MgQUNQSSBOVlMsIFJTVkQsIFJ1bnRpbWUsIE1NSU8sIHRvIGJl DQo+IFNtbUFjY2Vzc091dD8NCj4gDQo+IFRoYW5rIHlvdQ0KPiBZYW8gSmlld2VuDQo+IA0KPiA+ IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gRnJvbTogTmksIFJheQ0KPiA+IFNlbnQ6 IFRodXJzZGF5LCBBdWd1c3QgMSwgMjAxOSAxMDoyNCBBTQ0KPiA+IFRvOiBZYW8sIEppZXdlbiA8 amlld2VuLnlhb0BpbnRlbC5jb20+OyBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsNCj4gPiBsZXJzZWtA cmVkaGF0LmNvbQ0KPiA+IENjOiBEb25nLCBFcmljIDxlcmljLmRvbmdAaW50ZWwuY29tPjsgV2Fu ZywgSmlhbiBKDQo+ID4gPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiBTdWJqZWN0OiBSRTog W2VkazItZGV2ZWxdIFtQQVRDSCB2MiAyLzJdIFVlZmlDcHVQa2cvUGlTbW1DcHU6DQo+ID4gUGNk Q3B1U21tQWNjZXNzT3V0IGNvbnRyb2xzIFNNTSBhY2Nlc3Mtb3V0IHBvbGljeQ0KPiA+DQo+ID4g SGkgSmlld2VuLA0KPiA+DQo+ID4gPg0KPiA+ID4gSSBhZ3JlZSB0aGF0IHdlIG9ubHkgbmVlZCBz dXBwb3J0ICMyIGFuZCAjMy4NCj4gPiA+DQo+ID4gPiBXZSBuZWVkIG9uZSBQQ0Q6DQo+ID4gPiAx KSBpZiBpdCBpcyBzZXQgdG8gVFJVRSwgaXQgbG9ja3MgU01NIHBhZ2luZyAobWFrZSBpdCBzdGF0 aWMpLCBvbmx5DQo+ID4gPiBhbGxvd3MgU01NDQo+ID4gYWNjZXNzIFJTVkQsIEFDUElOVlMsIFJ1 bnRpbWUsIGFzIGNvbW0gYnVmZmVyLA0KPiA+ID4gcGx1cyBNTUlPIGZvciBkZXZpY2UgYWNjZXNz LiBUaGF0IGlzIHNlY3VyZSBjb25maWd1cmF0aW9uLg0KPiA+ID4gMikgaXQgaXMgRkFMU0UsIGl0 IGFsbG93cyBTTU0gdG8gYWNjZXNzIE9TIG1lbW9yeS4gSXQgY291bGQgYmUNCj4gPiA+IHN0YXRp YyBvcg0KPiA+IGR5bmFtaWMgcGFnaW5nLg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBQY2RDcHVTbW1B Y2Nlc3NPdXQgc2VlbXMgYWxzbyBjb25mdXNpbmcuDQo+ID4gPiAJV2hhdCAiT3V0IiBtZWFucyA/ Pz8NCj4gPiA+IAlXaGF0IE91dD1GYWxzZSBtZWFucz8gT25seSBhbGxvdyBpbnNpZGUgU01SQU0g YWNjZXNzPw0KPiA+ID4gQW55d2F5LCBJIGFtIG9wZW4gZm9yIHRoZSBuYW1pbmcgcHJvcG9zYWwu DQo+ID4NCj4gPiBTbW1BY2Nlc3NPdXQgPSBTTU0gYWNjZXNzIG1lbW9yeSBvdXRzaWRlIFNNUkFN Lg0KPiA+IE15IGV4cGVyaWVuY2UgaXMgc29tZXRpbWVzIHNvbWVvbmUgbWF5IHRoaW5rIHVwIGEg cGVyc29uYWxseSBwcmVmZXJyZWQNCj4gPiBuYW1lIGJ1dCBtYXkgYmUgdmVyeSBjb25mdXNpbmcg dG8gb3RoZXJzLiBJIGFsc28gd2FudCB0byBhdm9pZCB0aGF0Lg0KPiA+DQo+ID4gRG8geW91IGhh dmUgYSBuYW1lIHByb3Bvc2FsPw0KPiA+DQo+ID4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiBUaGFu ayB5b3UNCj4gPiA+IFlhbyBKaWV3ZW4NCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IE5pLCBSYXkNCj4gPiA+ID4gU2VudDogVGh1cnNkYXks IEF1Z3VzdCAxLCAyMDE5IDk6MjggQU0NCj4gPiA+ID4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4u eWFvQGludGVsLmNvbT47IGRldmVsQGVkazIuZ3JvdXBzLmlvOw0KPiA+ID4gPiBsZXJzZWtAcmVk aGF0LmNvbQ0KPiA+ID4gPiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IFdh bmcsIEppYW4gSg0KPiA+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+DQo+ID4gPiA+IFN1YmplY3Q6 IFJFOiBbZWRrMi1kZXZlbF0gW1BBVENIIHYyIDIvMl0gVWVmaUNwdVBrZy9QaVNtbUNwdToNCj4g PiA+ID4gUGNkQ3B1U21tQWNjZXNzT3V0IGNvbnRyb2xzIFNNTSBhY2Nlc3Mtb3V0IHBvbGljeQ0K PiA+ID4gPg0KPiA+ID4gPiA+IEJlbG93IGlzIG15IHRob3VnaHQsIHBsZWFzZSBjb3JyZWN0IGlm IEkgYW0gd3JvbmcuDQo+ID4gPiA+ID4gMSkgU3RhdGljUGFnaW5nPWZhbHNlLCBBY2Nlc3NPdXQ9 ZmFsc2U6IGl0IHNlZW1zIGludmFsaWQuIElmIHdlDQo+ID4gPiA+ID4gZG9uoa90DQo+ID4gPiA+ IHN1cHBvcnQgYWNjZXNzIG91dCwgd2h5IHdlIG5lZWQgZHluYW1pYyBwYWdpbmc/DQo+ID4gPiA+ ID4gMikgU3RhdGljUGFnaW5nPWZhbHNlLCBBY2Nlc3NPdXQ9dHJ1ZTogaXQgc2VlbXMgdmFsaWQu IFdlIG5lZWQNCj4gPiA+ID4gPiBhY2Nlc3MNCj4gPiBvdXQsDQo+ID4gPiA+IGJ1dCB3ZSBvbmx5 IHdhbnQgYSBzbWFsbCBwYWdpbmcgaW4gdGhlIGJlZ2lubmluZy4gQXMNCj4gPiA+ID4gPiBzdWNo IHdlIHVzZSBkeW5hbWljIHBhZ2luZy4gVGhpcyBpcyB0byBzdXBwb3J0IEhvdHBsdWcgbWVtb3J5 Lg0KPiA+ID4gPiA+IDMpIFN0YXRpY1BhZ2luZz10cnVlLCBBY2Nlc3NPdXQ9ZmFsc2U6IGl0IHNl ZW1zIHZhbGlkLiBUaGUgaXMNCj4gPiA+ID4gPiBzZWN1cmUNCj4gPiA+ID4gY29uZmlndXJhdGlv bi4NCj4gPiA+ID4gPiA0KSBTdGF0aWNQYWdpbmc9dHJ1ZSwgQWNjZXNzT3V0PXRydWU6IGl0IHNl ZW1zIHZhbGlkLCBidXQgSSBkbw0KPiA+ID4gPiA+IG5vdCBzZWUNCj4gPiB0aGUNCj4gPiA+ID4g dmFsdWUgdG8gc3VwcG9ydCB0aGlzLiBJZiB3ZSBhbHdheXMgYWxsb3cgYWNjZXNzIG91dCwNCj4g PiA+ID4gPiB3aGF0IGlzIHRoZSB2YWx1ZSB0byBzZXQgc3RhdGljIHBhZ2luZy4gT3Igd2h5IHdl IGNhcmUgdGhlDQo+ID4gPiA+ID4gcGFnaW5nIGlzDQo+ID4gc3RhdGljDQo+ID4gPiA+IG9yIGR5 bmFtaWM/DQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEppZXdlbiwNCj4gPiA+ID4gVGhlIHZh bHVlIG9mIHN0YXRpYyBwYWdpbmcgaXMgdG8gcmVkdWNlIHBhZ2UgdGFibGUgU01SQU0gY29uc3Vt cHRpb24uDQo+ID4gV2UNCj4gPiA+ID4gY291bGQgY3JlYXRlIHRoZSBwYWdlIHRhYmxlIGluIGFk dmFuY2UgYW5kIHRoYXQgcGFnZSB0YWJsZSBwZXJtaXRzDQo+ID4gPiA+IHNtbSBhY2Nlc3Mgb3V0 Lg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gQXMgc3VjaCBJIHJlY29tbWVuZCB3ZSBv bmx5IHN1cHBvcnQgIzIgYW5kICMzLg0KPiA+ID4gPg0KPiA+ID4gPiBTdXBwb3J0aW5nICMyIGFu ZCAjMyBpcyBiYXNlZCBvbiByZWFsIHJlcXVpcmVtZW50LCBub3QgZnJvbSBhYm92ZQ0KPiA+ID4g PiBkaXNjdXNzaW9uIG9mIDQgY29tYmluYXRpb25zLg0KPiA+ID4gPg0KPiA+ID4gPiA+DQo+ID4g PiA+ID4gQWdhaW4sIGlmIHRoZSBuYW1pbmcgaXMgY29uZnVzaW5nLCBJIGFncmVlIHdlIHNob3Vs ZCBjbGFyaWZ5IG9yDQo+ID4gPiA+ID4gZXZlbg0KPiA+IHJlbmFtZS4NCj4gPiA+ID4NCj4gPiA+ ID4gSSBhbHNvIGFncmVlIHRoYXQgaGF2aW5nIGZld2VyIFBDRHMgdG8gcHJvdmlkZSBmZXdlcg0K PiA+ID4gPiBjb25maWd1cmF0aW9ucy4gSXQNCj4gPiBhbHNvDQo+ID4gPiA+IHJlZHVjZXMgdmFs aWRhdGlvbiBlZmZvcnQuDQo+ID4gPiA+DQo+ID4gPiA+IEppZXdlbiAmIExhc3psbywNCj4gPiA+ ID4gRG8geW91IGFncmVlIHRoYXQgd2l0aCBvbmx5ICMyIGFuZCAjMyBzdXBwb3J0ZWQsIHRoZSBl eGlzdGluZyBQQ0QNCj4gPiA+ID4gY2FuIGJlIHJlbmFtZWQgdG8gUGNkQ3B1U21tQWNjZXNzT3V0 Pw0KPiA+ID4gPiBJZiBBY2Nlc3NPdXQ9dHJ1ZSwgaXQgaW1wbGllcyBzdGF0aWMgcGFnaW5nIGlz IG5vdCB1c2VkLg0KPiA+ID4gPiBJZiBBY2Nlc3NPdXQ9ZmFsc2UsIGl0IGltcGxpZXMgc3RhdGlj IHBhZ2luZyBpcyB1c2VkLg0KPiA+ID4gPg0KPiA+ID4gPiBNeSBnb2FsIGlzIHRvIGhhdmUgYSB3 YXkgdG8gYWxsb3cgUkFTIGNvZGUgYWNjZXNzIG91dCBmcm9tIFNNTQ0KPiA+ID4gPiBhZnRlciBS ZWFkeVRvTG9jay4NCj4gPiA+ID4gQW55IHNvbHV0aW9uIHRoYXQgY2FuIG1lZXQgdGhpcyBnb2Fs IGlzIG9rIHRvIG1lLiBJIGRvbid0IHdhbnQgdG8NCj4gPiA+ID4gYWRkIGNvbmZ1c2luZy91bm5l Y2Vzc2FyeS1jb21wbGV4aXR5IGR1ZSB0byB0aGlzIGdvYWwuDQo+ID4gPiA+DQo+ID4gPiA+ID4g V2hhdCBJIGFtIHRyeWluZyB0byBhY2hpZXZlIGlzIHRvIGxpbWl0IHRoZSBudW1iZXIgb2Ygc3Vw cG9ydGVkDQo+ID4gPiA+IGNvbWJpbmF0aW9uIHRvIHJlZHVjZSB0aGUgZWZmb3J0IG9mIHZhbGlk YXRpb24gYW5kIG1haW50ZW5hbmNlLg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gdGhhbmsgeW91IQ0K PiA+ID4gPiA+IFlhbywgSmlld2VuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g 1NogMjAxOcTqONTCMcjVo6zJz87nNzoxM6OsTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNv bT4NCj4gPiDQtA0KPiA+ID4gPiC1wKO6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSGkgUmF5 LCBKaWV3ZW4sDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSSd2ZSBnb3Qgc2V2ZXJhbCBjb21t ZW50cyAvIHF1ZXN0aW9uczoNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPj4gT24gMDcvMzEvMTkg MTg6MzgsIE5pLCBSYXkgd3JvdGU6DQo+ID4gPiA+ID4gPj4gVGhpcyBwYXRjaCBza2lwcyB0byB1 cGRhdGUgcGFnZSB0YWJsZSBmb3Igbm9uLVNNUkFNIG1lbW9yeQ0KPiA+ID4gPiA+ID4+IHdoZW4g UGNkQ3B1U21tQWNjZXNzT3V0IGlzIFRSVUUuDQo+ID4gPiA+ID4gPj4gU28gdGhhdCB3aGVuIFNN TSBhY2Nlc3NlcyBvdXQsIG5vIHBhZ2UgZmF1bHQgaXMgdHJpZ2dlcmVkIGF0IGFsbC4NCj4gPiA+ ID4gPiA+Pg0KPiA+ID4gPiA+ID4+IFNpZ25lZC1vZmYtYnk6IFJheSBOaSA8cmF5Lm5pQGludGVs LmNvbT4NCj4gPiA+ID4gPiA+PiBDYzogRXJpYyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0K PiA+ID4gPiA+ID4+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPiA+ ID4gPiA+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPiA+ID4g PiA+PiBDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiA+ID4gPiA+PiAt LS0NCj4gPiA+ID4gPiA+PiBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21t LmMgfCAyMQ0KPiA+ID4gPiArKysrKysrKysrKysrKysrKy0tLS0NCj4gPiA+ID4gPiA+PiBVZWZp Q3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdlVGJsLmMgICAgfCAgMiArLQ0KPiA+ID4gPiA+ ID4+IDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkNCj4g PiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1 RHhlU21tL1BpU21tQ3B1RHhlU21tLmMNCj4gPiA+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhl U21tL1BpU21tQ3B1RHhlU21tLmMNCj4gPiA+ID4gPiA+PiBpbmRleCA2OWEwNGRmYjIzLi40Mjdj MzNmYjAxIDEwMDY0NA0KPiA+ID4gPiA+ID4+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVT bW0vUGlTbW1DcHVEeGVTbW0uYw0KPiA+ID4gPiA+ID4+ICsrKyBiL1VlZmlDcHVQa2cvUGlTbW1D cHVEeGVTbW0vUGlTbW1DcHVEeGVTbW0uYw0KPiA+ID4gPiA+ID4+IEBAIC0xMzAsNiArMTMwLDEx IEBAIFVJTlQ4DQo+ID4gPiA+IG1QaHlzaWNhbEFkZHJlc3NCaXRzOw0KPiA+ID4gPiA+ID4+IFVJ TlQzMiAgICAgICAgICAgICAgICAgICBtU21tQ3IwOw0KPiA+ID4gPiA+ID4+IFVJTlQzMiAgICAg ICAgICAgICAgICAgICBtU21tQ3I0Ow0KPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPj4gKy8vDQo+ ID4gPiA+ID4gPj4gKy8vIENhY2hlIG9mIFBjZENwdVNtbUFjY2Vzc091dCAvLw0KPiA+ID4gPiA+ ID4+ICtCT09MRUFOICAgICAgICAgICAgICAgICAgbVNtbUFjY2Vzc091dDsNCj4gPiA+ID4gPiA+ PiArDQo+ID4gPiA+ID4gPj4gLyoqDQo+ID4gPiA+ID4gPj4gICBJbml0aWFsaXplIElEVCB0byBz ZXR1cCBleGNlcHRpb24gaGFuZGxlcnMgZm9yIFNNTS4NCj4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ ID4+IEBAIC02MTAsNiArNjE1LDEyIEBAIFBpQ3B1U21tRW50cnkgKA0KPiA+ID4gPiA+ID4+ICAg bVNtbUNvZGVBY2Nlc3NDaGVja0VuYWJsZSA9IFBjZEdldEJvb2wNCj4gPiA+ID4gKFBjZENwdVNt bUNvZGVBY2Nlc3NDaGVja0VuYWJsZSk7DQo+ID4gPiA+ID4gPj4gICBERUJVRyAoKEVGSV9EX0lO Rk8sICJQY2RDcHVTbW1Db2RlQWNjZXNzQ2hlY2tFbmFibGUNCj4gPiA9ICVkXG4iLA0KPiA+ID4g PiBtU21tQ29kZUFjY2Vzc0NoZWNrRW5hYmxlKSk7DQo+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ PiArICAvLw0KPiA+ID4gPiA+ID4+ICsgIC8vIFNhdmUgdGhlIFBjZENwdVNtbUFjY2Vzc091dCB2 YWx1ZSBpbnRvIGEgZ2xvYmFsIHZhcmlhYmxlLg0KPiA+ID4gPiA+ID4+ICsgIC8vDQo+ID4gPiA+ ID4gPj4gKyAgbVNtbUFjY2Vzc091dCA9IFBjZEdldEJvb2wgKFBjZENwdVNtbUFjY2Vzc091dCk7 DQo+IERFQlVHDQo+ID4gPiA+ID4gPj4gKyAoKERFQlVHX0lORk8sICJQY2RDcHVTbW1BY2Nlc3NP dXQgPSAlZFxuIiwNCj4gPiA+ID4gbVNtbUFjY2Vzc091dCkpOw0KPiA+ID4gPiA+ID4+ICsNCj4g PiA+ID4gPiA+PiAgIC8vDQo+ID4gPiA+ID4gPj4gICAvLyBTYXZlIHRoZSBQY2RQdGVNZW1vcnlF bmNyeXB0aW9uQWRkcmVzc09yTWFzayB2YWx1ZSBpbnRvDQo+ID4gPiA+ID4gPj4gYQ0KPiA+ID4g PiBnbG9iYWwgdmFyaWFibGUuDQo+ID4gPiA+ID4gPj4gICAvLyBNYWtlIHN1cmUgQWRkcmVzc0Vu Y01hc2sgaXMgY29udGFpbmVkIHRvIHNtYWxsZXN0DQo+ID4gPiA+ID4gPj4gc3VwcG9ydGVkDQo+ ID4gPiA+IGFkZHJlc3MgZmllbGQuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gVGhlIGFib3Zl IGxvb2tzIGNvcnJlY3Q7IGhvd2V2ZXIsIHRoZSBQY2RHZXRCb29sKCkgY2FsbA0KPiA+ID4gPiA+ ID4gZGVwZW5kcyBvbg0KPiA+IHRoZQ0KPiA+ID4gPiA+ID4gSU5GIGZpbGUgbGlzdGluZyBQY2RD cHVTbW1BY2Nlc3NPdXQuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gKDEpIFJheSwgZGlkIHlv dSBmb3JnZXQgdG8gc3RhZ2UgdGhlIElORiBmaWxlIHVwZGF0ZSBmb3IgdGhpcw0KPiA+ID4gPiA+ ID4gcGF0Y2gNCj4gPiBjb21taXQ/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+PiBAQCAtMTQzMSwxMCArMTQ0MiwxMiBAQCBQZXJmb3JtUmVtYWluaW5nVGFza3MgKA0KPiA+ ID4gPiA+ID4+ICAgICAvLw0KPiA+ID4gPiA+ID4+ICAgICBTZXRNZW1NYXBBdHRyaWJ1dGVzICgp Ow0KPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPj4gLSAgICAvLw0KPiA+ID4gPiA+ID4+IC0gICAg Ly8gRm9yIG91dHNpZGUgU01SQU0sIHdlIG9ubHkgbWFwIFNNTSBjb21tdW5pY2F0aW9uDQo+ID4g YnVmZmVyDQo+ID4gPiA+IG9yIE1NSU8uDQo+ID4gPiA+ID4gPj4gLSAgICAvLw0KPiA+ID4gPiA+ ID4+IC0gICAgU2V0VWVmaU1lbU1hcEF0dHJpYnV0ZXMgKCk7DQo+ID4gPiA+ID4gPj4gKyAgICBp ZiAoIW1TbW1BY2Nlc3NPdXQpIHsNCj4gPiA+ID4gPiA+PiArICAgICAgLy8NCj4gPiA+ID4gPiA+ PiArICAgICAgLy8gRm9yIG91dHNpZGUgU01SQU0sIHdlIG9ubHkgbWFwIFNNTSBjb21tdW5pY2F0 aW9uDQo+ID4gPiA+IGJ1ZmZlciBvciBNTUlPLg0KPiA+ID4gPiA+ID4+ICsgICAgICAvLw0KPiA+ ID4gPiA+ID4+ICsgICAgICBTZXRVZWZpTWVtTWFwQXR0cmlidXRlcyAoKTsNCj4gPiA+ID4gPiA+ PiArICAgIH0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBUaGlzIGNoYW5nZSBsb29rcyBPSy4g SXQgc2VlbXMgdG8gY29uZGl0aW9uYWxpemUgdGhlIGxvZ2ljDQo+ID4gPiA+ID4gPiBhZGRlZCBp biBjb21taXQgZDJmYzc3MTExMzZhICgiVWVmaUNwdVBrZy9QaVNtbUNwdTogQWRkIFNNTQ0KPiA+ ID4gPiA+ID4gQ29tbQ0KPiA+IEJ1ZmZlcg0KPiA+ID4gPiBQYWdpbmcNCj4gPiA+ID4gPiA+IFBy b3RlY3Rpb24uIiwgMjAxNi0xMi0xOSkuDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSG93ZXZl ciwgdGhlIGNvbW1lbnQgY29uZnVzZXMgbWUgYSBiaXQ7IGl0IHNheXMgIlNNTQ0KPiA+IGNvbW11 bmljYXRpb24NCj4gPiA+ID4gPiA+IGJ1ZmZlciAqb3IgTU1JTyoiLg0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+IEkgYXNzdW1lICJTTU0gY29tbXVuaWNhdGlvbiBidWZmZXIiIGNhbiBiZSBpbiAi cmVzZXJ2ZWQsDQo+ID4gPiA+ID4gPiBydW50aW1lDQo+ID4gYW5kDQo+ID4gPiA+ID4gPiBBQ1BJ IE5WUyIgUkFNLCBzbyB0aGF0IHBhcnQgbGlrZWx5IG1hdGNoZXMgdGhlIG5ldyBQQ0Qncw0KPiA+ IGV4cGxhbmF0aW9uDQo+ID4gPiA+ID4gPiBmcm9tIHBhdGNoIzEuIEJ1dCBNTUlPIGlzIG5vdCBt ZW50aW9uZWQgaW4gcGF0Y2gjMS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAoMikgU2hvdWxk IHdlIGV4dGVuZCB0aGUgZGVzY3JpcHRpb24gb2YgdGhlIFBDRCBpbiBwYXRjaCMxLA0KPiA+ID4g PiA+ID4gd2l0aA0KPiA+IE1NSU8/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gT3IgaXMgTU1J TyBjb25zaWRlcmVkICpydW50aW1lKiBNTUlPIChhbmQgc28gY292ZXJlZCBieQ0KPiA+ICJydW50 aW1lIik/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPj4gICAgIC8vDQo+ ID4gPiA+ID4gPj4gICAgIC8vIFNldCBwYWdlIHRhYmxlIGl0c2VsZiB0byBiZSByZWFkLW9ubHkN Cj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBJbiB0aGUgcHJldmlvdXMgdmVyc2lvbiBvZiB0aGUg cGF0Y2ggc2VyaWVzLCBuYW1lbHkNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAgW2VkazItZGV2 ZWxdIFtQQVRDSCAzLzNdDQo+ID4gPiA+ID4gPiAgVWVmaUNwdVBrZy9QaVNtbUNwdTogQWxsb3cg U01NIGFjY2Vzcy1vdXQgd2hlbiBzdGF0aWMgcGFnaW5nDQo+ID4gaXMNCj4gPiA+ID4gT0ZGDQo+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiBodHRwOi8vbWlkLm1haWwtYXJj aGl2ZS5jb20vMjAxOTA3MjcwMzI4NTAuMzM3ODQwLTQtcmF5Lm5pQGludGVsLmNvbQ0KPiA+ID4g PiA+ID4gIGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzQ0NDcwDQo+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gdGhlIG5leHQgb3BlcmF0aW9uIChuYW1lbHkgU2V0UGFnZVRh YmxlQXR0cmlidXRlcygpKSB3YXMNCj4gPiA+ID4gY29uZGl0aW9uYWxpemVkDQo+ID4gPiA+ID4g PiB0b28uIElzIHRoYXQgbm8gbG9uZ2VyIG5lY2Vzc2FyeSwgd2l0aCB0aGUgbmV3IFBDRD8gU2hv dWxkbid0DQo+ID4gPiA+ID4gPiB3ZSBzdGlsbCBjb25kaXRpb25hbGl6ZSBTZXRQYWdlVGFibGVB dHRyaWJ1dGVzKCkgb24gdGhlDQo+ID4gPiA+ID4gPiAqb3RoZXIqIChzdGF0aWMgcGFnaW5nKQ0K PiA+ID4gPiBQQ0Q/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQWggd2FpdCwgd2UgYWxyZWFk eSBkbyBpdCEgU2V0UGFnZVRhYmxlQXR0cmlidXRlcygpIGhhcyB0d28NCj4gPiA+ID4gPiA+IGlt cGxlbWVudGF0aW9ucywgb25lIGZvciBJQTMyIGFuZCBhbm90aGVyIGZvciBYNjQuDQo+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gLSBUaGUgWDY0IHZhcmlhbnQgY2hlY2tzIGZvciBzdGF0aWMgcGFn ZSB0YWJsZXMgaW50ZXJuYWxseSwNCj4gPiA+ID4gPiA+IGFuZCBpZiB0aGV5IGFyZSBkaXNhYmxl ZCwgdGhlbiBTZXRQYWdlVGFibGVBdHRyaWJ1dGVzKCkgZG9lcw0KPiBub3RoaW5nLg0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IC0gVGhlIElBMzIgdmFyaWFudCBkb2VzIG5vdCBjb250YWluIHRo YXQgY2hlY2ssIGJlY2F1c2Ugb24NCj4gPiA+ID4gPiA+IElBMzIgdGhlDQo+ID4gcGFnZQ0KPiA+ ID4gPiA+ID4gdGFibGVzIGFyZSBhbHdheXMgYnVpbHQgc3RhdGljYWxseS4NCj4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiBTbyBTZXRQYWdlVGFibGVBdHRyaWJ1dGVzKCkgYWxyZWFkeSBkZXBlbmRz IG9uIHN0YXRpYyBwYWdpbmcNCj4gPiA+ID4gPiA+ICppbnRlcm5hbGx5KiwgaGVuY2UgZ2F0aW5n IHRoZSBTZXRQYWdlVGFibGVBdHRyaWJ1dGVzKCkgY2FsbA0KPiA+ID4gPiA+ID4gKmV4dGVybmFs bHkqLCBsaWtlIGl0IHdhcyBkb25lIGluIHRoZSBwcmV2aW91cyB2ZXJzaW9uIG9mIHRoZQ0KPiA+ ID4gPiA+ID4gcGF0Y2ggc2VyaWVzLCBpcyBzdXBlcmZsdW91cyBpbiB0aGUgZmlyc3QgcGxhY2Uu DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gR29vZCENCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4+IGRpZmYgLS1naXQgYS9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2 NC9QYWdlVGJsLmMNCj4gPiA+ID4gYi9VZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1g2NC9QYWdl VGJsLmMNCj4gPiA+ID4gPiA+PiBpbmRleCBhM2I2MmY3Nzg3Li42Njk5YWFjNjVkIDEwMDY0NA0K PiA+ID4gPiA+ID4+IC0tLSBhL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1BhZ2VUYmwu Yw0KPiA+ID4gPiA+ID4+ICsrKyBiL1VlZmlDcHVQa2cvUGlTbW1DcHVEeGVTbW0vWDY0L1BhZ2VU YmwuYw0KPiA+ID4gPiA+ID4+IEBAIC0xMDI5LDcgKzEwMjksNyBAQCBTbWlQRkhhbmRsZXIgKA0K PiA+ID4gPiA+ID4+ICAgICAgIGdvdG8gRXhpdDsNCj4gPiA+ID4gPiA+PiAgICAgfQ0KPiA+ID4g PiA+ID4+DQo+ID4gPiA+ID4gPj4gLSAgICBpZiAobUNwdVNtbVN0YXRpY1BhZ2VUYWJsZSAmJg0K PiA+ID4gPiBJc1NtbUNvbW1CdWZmZXJGb3JiaWRkZW5BZGRyZXNzIChQRkFkZHJlc3MpKSB7DQo+ ID4gPiA+ID4gPj4gKyAgICBpZiAoSXNTbW1Db21tQnVmZmVyRm9yYmlkZGVuQWRkcmVzcyAoUEZB ZGRyZXNzKSkgew0KPiA+ID4gPiA+ID4+ICAgICAgIER1bXBDcHVDb250ZXh0IChJbnRlcnJ1cHRU eXBlLCBTeXN0ZW1Db250ZXh0KTsNCj4gPiA+ID4gPiA+PiAgICAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiQWNjZXNzIFNNTSBjb21tdW5pY2F0aW9uDQo+ID4gPiA+IGZvcmJpZGRlbiBhZGRyZXNz ICgweCVseCkhXG4iLCBQRkFkZHJlc3MpKTsNCj4gPiA+ID4gPiA+PiAgICAgICBERUJVR19DT0RF ICgNCj4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFRoaXMgaHVuayBsb29r cyBnb29kLiBCZWNhdXNlOg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0gd2UgZW5zdXJlIHRo YXQgdGhlcmUgaXMgbm8gcGFnZSBmYXVsdCBhdCBhbGwsIGluIHRoZQ0KPiA+ID4gPiA+ID4gImFj Y2Vzcy1vdXQgcGVybWl0dGVkIiBjYXNlLCBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIGNvbnNpZGVy DQo+ID4gPiA+ID4gPiAiYWNjZXNzLW91dCIgaW4gdGhlIGZhdWx0IGhhbmRsZXIgYXQgYWxsOw0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IC0gdGhlICJtU21tQWNjZXNzT3V0IiBsb2dpYyBpbiBQ ZXJmb3JtUmVtYWluaW5nVGFza3MoKSBhcHBsaWVzDQo+ID4gPiA+ID4gPiB0bw0KPiA+ID4gPiBi b3RoDQo+ID4gPiA+ID4gPiBJQTMyIGFuZCBYNjQgKGNvbW1vbmx5KSwgYW5kIHRoZSBTbWlQRkhh bmRsZXIoKSBmdW5jdGlvbiBpcw0KPiA+ID4gPiBpbXBsZW1lbnRlZA0KPiA+ID4gPiA+ID4gZm9y IGJvdGggSUEzMiBhbmQgWDY0IChzZXBhcmF0ZWx5KSwgYW5kIGFmdGVyIHRoaXMgcGF0Y2gsIGJv dGgNCj4gPiA+ID4gPiA+IGZhdWx0IGhhbmRsZXJzIGNoZWNrIElzU21tQ29tbUJ1ZmZlckZvcmJp ZGRlbkFkZHJlc3MoKQ0KPiA+ID4gPiA+ID4gaWRlbnRpY2FsbHkuIFNvDQo+ID4gdGhpcw0KPiA+ ID4gPiBpcw0KPiA+ID4gPiA+ID4gbmljZSBhbmQgc3ltbWV0cmljOw0KPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+IC0gd2UgZG9uJ3QgaW50ZXJmZXJlIHdpdGggb24tZGVtYW5kIHBhZ2UgdGFibGUg YnVpbGRpbmcgKHdoZW4NCj4gPiA+ID4gPiA+IGl0IGlzIGVuYWJsZWQgb24gWDY0KSAtLSBwYWdl IGZhdWx0cyBzaG91bGQgc3RpbGwgYmUgdHJpZ2dlcmVkDQo+ID4gPiA+ID4gPiBieSBSQU0gcGFn ZXMgbm90IHlldCBtYXBwZWQgYXQgYWxsLCBhbmQgdGhlIFg2NCB2YXJpYW50IG9mDQo+ID4gPiA+ ID4gPiBTbWlEZWZhdWx0UEZIYW5kbGVyKCkgc2hvdWxkIGZpeCB1cCAqdGhvc2UqIGZhdWx0cyBs aWtlIGJlZm9yZS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSG93ZXZl cjogZ2l2ZW4gdGhhdCB0aGlzIGh1bmsgcHJhY3RpY2FsbHkgdW5kZXMgY29tbWl0DQo+ID4gPiA+ ID4gPiBjNjBkMzZiNCwgSQ0KPiA+ID4gPiB3b3VsZA0KPiA+ID4gPiA+ID4gc3VnZ2VzdCB0aGF0 IHdlIHJldmVydCBjb21taXQgYzYwZDM2YjQgaW4gYSBzZXBhcmF0ZSBwYXRjaC4gU28NCj4gPiA+ ID4gPiA+IHRoZSBzZXJpZXMgd291bGQgZ28gbGlrZToNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4g PiAtIHBhdGNoIzE6IGNvbW1pdCBjNjBkMzZiNCBpcyBub3QgZ29vZCBlbm91Z2gsIHdlJ3JlIGdv aW5nIHRvDQo+ID4gPiA+IGltcGxlbWVudA0KPiA+ID4gPiA+ID4gYSBzZXBhcmF0ZSBhcHByb2Fj aCwgc28gcmV2ZXJ0IGNvbW1pdCBjNjBkMzZiNCwgYXQgZmlyc3QuDQo+ID4gPiA+ID4gPiAtIHBh dGNoIzI6IGludHJvZHVjZSB0aGUgbmV3IFBDRA0KPiA+ID4gPiA+ID4gLSBwYXRjaCMzOiBkaXNh YmxlIHBhZ2UgZmF1bHQgZ2VuZXJhdGlvbiBmb3Igbm9uLVNNUkFNDQo+ID4gPiA+ID4gPiBhZGRy ZXNzZXMgKD0NCj4gPiA+ID4ga2VlcA0KPiA+ID4gPiA+ID4gdGhlbSBtYXBwZWQgYXMgbm9ybWFs KSB0byB3aGljaCBhY2Nlc3Mtb3V0IGlzIHBlcm1pdHRlZC4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiAoMykgUmF5LCBkbyB5b3UgYWdyZWUgdG8gc3RydWN0dXJlIHRoZSBwYXRjaCBzZXJpZXMg bGlrZSB0aGF0Pw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICg0KSBKaWV3ZW4sIGFyZSB5b3Ug T0sgd2l0aCB0aGUgZ2VuZXJhbCBhcHByb2FjaCwgbmFtZWx5IHRvDQo+ID4gPiA+ID4gPiByZWxh eCBhY2Nlc3Mtb3V0IGJ5IGVsaW1pbmF0aW5nICpzdWNoKiBwYWdlIGZhdWx0cywgcmF0aGVyDQo+ ID4gPiA+ID4gPiB0aGFuIGZpeGluZyB0aGVtDQo+ID4gdXANCj4gPiA+ID4gPiA+IGluIHRoZSBm YXVsdCBoYW5kbGVyPw0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IChJIGNlcnRhaW5seSBhZ3Jl ZSB3aXRoIHRoaXMgYXBwcm9hY2g6IHRoZSBmaXh1cCBpbiB0aGUgZmF1bHQNCj4gPiA+ID4gPiA+ IGhhbmRsZXIsIG5hbWVseSBTbWlEZWZhdWx0UEZIYW5kbGVyKCksIG9ubHkgY292ZXJzIHRoZSBY NjQNCj4gPiA+ID4gPiA+IGNhc2U7IGluIHRoZSBJQTMyIGNhc2UsIGl0IGp1c3QgaGFuZ3MuIFRo YXQgc2hvd3MgdGhhdCB0aGUNCj4gPiA+ID4gPiA+IGZhdWx0IGZpeHVwIGlzIGluaGVyZW50bHkg dGllZCB0byBvbi1kZW1hbmQgcGFnZSB0YWJsZQ0KPiA+ID4gPiA+ID4gYnVpbGRpbmcsIHdoZXJl YXMgdGhlIGFjY2Vzcy1vdXQgZmVhdHVyZQ0KPiA+ID4gPiBzaG91bGQNCj4gPiA+ID4gPiA+IGJl IHBvc3NpYmxlIHRvIHBlcm1pdCBvbiBJQTMyIHRvby4pDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gVGhhbmtzLA0KPiA+ID4gPiA+ID4gTGFzemxvDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPg0K