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.43; helo=mga05.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) (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 85DE621A10961 for ; Wed, 29 Nov 2017 17:47:44 -0800 (PST) Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga105.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2017 17:52:08 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,339,1508828400"; d="scan'208";a="181806684" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga005.fm.intel.com with ESMTP; 29 Nov 2017 17:52:08 -0800 Received: from fmsmsx119.amr.corp.intel.com (10.18.124.207) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 29 Nov 2017 17:52:08 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by FMSMSX119.amr.corp.intel.com (10.18.124.207) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 29 Nov 2017 17:52:08 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.159]) with mapi id 14.03.0319.002; Thu, 30 Nov 2017 09:52:06 +0800 From: "Wang, Jian J" To: "afish@apple.com" CC: "Yao, Jiewen" , "edk2-devel@lists.01.org" Thread-Topic: [edk2] [PATCH 0/2] Enable page table write protection Thread-Index: AQHTaO6jS1DO4wpsLEWRTketUMlavaMqjVAAgACYNlD//4PNAIAAm23w//+RD4CAATvkkP//gSmAABD+DHD//4TdAP//dueQ Date: Thu, 30 Nov 2017 01:52:05 +0000 Message-ID: References: <20171129084640.20076-1-jian.j.wang@intel.com> <19004429-87DC-4620-8A78-4EF085D5AD9D@intel.com> <47960CCE-CA63-49FE-99AF-48E61050EF05@intel.com> <75B70EA2-DA2E-41E5-9580-FA23AB545AC2@intel.com> <74D8A39837DF1E4DA445A8C0B3885C503AA326DF@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYjc1Yjg1YzEtMzZhNS00ZTYwLTkzZWItYTM3ZjkxYTFiOTFmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJIWGJSNVRoOVNQZUtwVDR0UTFRbGNONFwvc3RkVjZ5V0Y1bGVKaGlQVk56NzVzTDVqaFhJT0ZPZCtWTXRiVW1vUyJ9 x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH 0/2] Enable page table write protection X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Nov 2017 01:47:44 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgQW5kcmV3LA0KDQpJIGRpZCB0dXJuIG9uL29mZiB3cml0ZSBwcm90ZWN0aW9uIHdoZW4gSSB1 cGRhdGUgcGFnZSBhdHRyaWJ1dGVzLiBXaGF0IHdlJ3JlIGRpc2N1c3NpbmcNCmlzIHRoZSB3b3Jz dCBjYXNlIGluIHdoaWNoIHByb3RlY3RpbmcgdGhlIG5ld2x5IGFkZGVkIHBhZ2UgdGFibGUgd2ls bCBmYWxsIGludG8gYSB2ZXJ5IGRlZXANCnJlY3Vyc2l2ZSBsb29wLiBUaGlzIGlzIHBvc3NpYmxl IGluIHRoZW9yeSBidXQgbm90IHN1cmUgaXQgd2lsbCByZWFsbHkgaGFwcGVuIGluIHByYWN0aWNl Lg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IGFmaXNoQGFwcGxlLmNv bSBbbWFpbHRvOmFmaXNoQGFwcGxlLmNvbV0NCj4gU2VudDogVGh1cnNkYXksIE5vdmVtYmVyIDMw LCAyMDE3IDk6MzggQU0NCj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdAaW50ZWwuY29t Pg0KPiBDYzogWWFvLCBKaWV3ZW4gPGppZXdlbi55YW9AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmcNCj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMC8yXSBFbmFibGUgcGFn ZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+IA0KPiANCj4gDQo+ID4gT24gTm92IDI5LCAyMDE3 LCBhdCA1OjE2IFBNLCBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4gd3JvdGU6 DQo+ID4NCj4gPiBXaGVuIHlvdSBzcGxpdCBwYWdlIHRhYmxlcywgeW91IG5lZWQgdG8gYWxsb2Nh dGUgbmV3IHBhZ2VzIGZvciBuZXcgcGFnZQ0KPiB0YWJsZS4NCj4gPiBTaW5jZSB5b3UgaGF2ZSBu ZXcgcGFnZSB0YWJsZXMgYWRkZWQsIHlvdSBuZWVkIHRvIG1hcmsgdGhlbSB0byBiZSByZWFkLW9u bHkNCj4gPiBhcyB3ZWxsLCByaWdodD8gV2hlbiB5b3UgZG8gdGhpcywgdGhlIHBhZ2UgdGFibGUg Zm9yIHRoZSBtZW1vcnkgbmV3bHkNCj4gYWxsb2NhdGVkDQo+ID4gbWlnaHQgc3RpbGwgbmVlZHMg dG8gYmUgc3BsaXQuIFRoaXMgaXMgdGhlIHdvcnN0IGNhc2UgYnV0IHRoZXJlJ3Mgc3RpbGwgY2hh bmNlIG9mIGl0LA0KPiA+IHJpZ2h0PyBXZSBjYW5ub3QgZ3VhcmFudGVlLCB0aGVvcmV0aWNhbGx5 LCB0aGUgcGFnZSB0YWJsZSBmb3IgdGhlIG5ld2x5DQo+IGFsbG9jYXRlZA0KPiA+IHBhZ2UgdGFi bGVzIGlzIGluIHRoZSBzYW1lIGFzIGp1c3Qgc3BsaXQgb25lcy4gU28sIGluIHdvcnN0IGNhc2Us IG9uY2Ugd2Ugd2FudCB0bw0KPiA+IG1hcmsgbmV3IHBhZ2UgdGFibGUgdG8gYmUgcmVhZC1vbmx5 LCB3ZSBuZWVkIHRvIHNwbGl0IHRoZSBwYWdlIHRhYmxlDQo+IG1hbmFnaW5nDQo+ID4gdGhvc2Ug bWVtb3J5LCBhbmQgaWYgd2UgbmVlZCB0byBkbyBzcGxpdCwgd2UgbmVlZCB0byBhbGxvY2F0ZSBt b3JlIG5ldw0KPiBwYWdlcy4NCj4gPiBUaGlzIG1pZ2h0IGZhbGwgaW50byBhIHJlY3Vyc2l2ZSBz aXR1YXRpb24gdW50aWwgYWxsIHRoZSBzbWFsbGVzdCBwYWdlIHRhYmxlIGFyZQ0KPiBjcmVhdGVk Lg0KPiA+IEluIHByYWN0aWNlIGl0J3MgYWxtb3N0IGltcG9zc2libGUgdG8gbGV0IGl0IGhhcHBl biBidXQgdGhlIGNoYW5jZXMgYXJlIHdlIHdpbGwNCj4gZmFsbCBpbnRvDQo+ID4gc3VjaCByZWN1 cnNpdmUgc2l0dWF0aW9uIG1vcmUgdGhhbiBvbmUgbGV2ZWwuDQo+ID4NCj4gDQo+IFdoeSBub3Qg anVzdCBoYXZlIHRoZSBwYWdlIHRhYmxlIHVwZGF0ZSBjb2RlIHR1cm4gb2ZmIHRoZSB3cml0ZSBw cm90ZWN0IHdoZW4gaXQNCj4gaXMgbW9kaWZ5aW5nIHRhYmxlcywgYW5kIHRoZW4gdHVybiBpdCBi YWNrIG9uPyBPciBhbSBJIG1pc3Npbmcgc29tZXRoaW5nPw0KPiANCj4gVGhhbmtzLA0KPiANCj4g QW5kcmV3IEZpc2gNCj4gDQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZy b206IFlhbywgSmlld2VuDQo+ID4+IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAzMCwgMjAxNyA4 OjUyIEFNDQo+ID4+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4g Pj4gQ2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4+IFN1YmplY3Q6IFJFOiBbZWRrMl0g W1BBVENIIDAvMl0gRW5hYmxlIHBhZ2UgdGFibGUgd3JpdGUgcHJvdGVjdGlvbg0KPiA+Pg0KPiA+ PiAtLSB3aGVuZXZlciB5b3UncmUgdHJ5aW5nIHRvIG1hcmsgb25lIHBhZ2UgdXNlZCBhcyBwYWdl IHRhYmxlIHRvIGJlIHJlYWQtDQo+IG9ubHksDQo+ID4+IHlvdSBuZWVkIHRvIHNwbGl0IGl0cyBw YWdlIHRhYmxlIGluIGFkdmFuY2UNCj4gPj4gW0ppZXdlbl0gU29ycnksIEkgZG8gbm90IHF1aXRl IHVuZGVyc3RhbmQgdGhlIHByb2JsZW0gc3RhdGVtZW50Lg0KPiA+PiBUbyBzZXQgYSBwYWdlIHRv IGJlIFJlYWRPbmx5LCB5b3UganVzdCBmbGlwIHRoZSBSL1cgYml0IGluIHRoZSBwYWdlIGVudHJ5 Lg0KPiA+PiBUaGUgc3RlcCBJIGV4cGVjdCBpczoNCj4gPj4gMSkgWW91IHNwbGl0IHBhZ2UgdGFi bGUuDQo+ID4+IDIpIEZpbGwgdGhlIGRhdGEgc3RydWN0dXJlIGluIHRoZSBuZXcgZW50cnkuDQo+ ID4+IDMpIEZsaXAgUi9XIGJpdCAoPD09IFRoaXMgaXMgdGhlIG5ldyBzdGVwKS4NCj4gPj4gNCkg Rmx1c2hQYWdlVGFibGUuDQo+ID4+DQo+ID4+IFRoYW5rIHlvdQ0KPiA+PiBZYW8gSmlld2VuDQo+ ID4+DQo+ID4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4gRnJvbTogV2FuZywg SmlhbiBKDQo+ID4+PiBTZW50OiBUaHVyc2RheSwgTm92ZW1iZXIgMzAsIDIwMTcgODo0NCBBTQ0K PiA+Pj4gVG86IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPj4+IENjOiBl ZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+Pj4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0gg MC8yXSBFbmFibGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9uDQo+ID4+Pg0KPiA+Pj4gSSBk aWQgdGhpbmsgb2YgcHJvdGVjdGluZyBuZXcgcGFnZSB0YWJsZSBpbiBjcHUgZHJpdmVyLiBCdXQg SSB0aGluayB0aGVyZSdzIHJpc2tzDQo+ID4+PiB0byBkbyBpdCwgd2hpY2ggaXMgdGhhdCB0aGVy ZSBtaWdodCBiZSBhIGNoYW5jZSB0aGF0LCB3aGVuZXZlciB5b3UncmUgdHJ5aW5nDQo+IHRvDQo+ ID4+PiBtYXJrIG9uZSBwYWdlIHVzZWQgYXMgcGFnZSB0YWJsZSB0byBiZSByZWFkLW9ubHksIHlv dSBuZWVkIHRvIHNwbGl0IGl0cyBwYWdlDQo+ID4+PiB0YWJsZSBpbiBhZHZhbmNlLCBhbmQgYWdh aW4gYW5kIGFnYWluLCB1bnRpbCBhbGwgcGFnZSB0YWJsZXMgYXJlIGZvciA0S0IgcGFnZXMuDQo+ ID4+Pg0KPiA+Pj4gQWx0aG91Z2ggdGhpcyBpcyBhIHJhcmUgY2FzZSwgb3IgdGhlIHBhZ2UgdGFi bGUgInNwbGl0IiB3aWxsIGp1c3QgaGFwcGVuIGZvciBhDQo+IGZldw0KPiA+Pj4gdGltZXMsIGl0 IHdpbGwgc2xvdyBkb3duIHRoZSBib290IHByb2Nlc3MgYSBsaXR0bGUgYml0IGFueXdheS4gU28g SSB0aG91Z2ggIGl0J3MNCj4gPj4+IHNhZmVyIG5vdCB0byBwcm90ZWN0IG5ldyBwYWdlIHRhYmxl cyBjcmVhdGVkIGFmdGVyIER4ZUlwbC4NCj4gPj4+DQo+ID4+PiBNYXliZSBpdCdzIGp1c3Qgb3Zl ciB3b3JyeWluZyBhYm91dCBpdC4gTWF5YmUgd2UganVzdCBuZWVkIHRvIGFkZCBhIFBDRCB0bw0K PiA+Pj4gdHVybiBvbi9vZmYgaXQganVzdCBpbiBjYXNlLiBEbyB5b3UgaGF2ZSBhbnkgaWRlYXMg aW4gbWluZD8NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+ PiBGcm9tOiBZYW8sIEppZXdlbg0KPiA+Pj4+IFNlbnQ6IFdlZG5lc2RheSwgTm92ZW1iZXIgMjks IDIwMTcgOTozNSBQTQ0KPiA+Pj4+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVs LmNvbT4NCj4gPj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+PiBTdWJqZWN0 OiBSZTogW2VkazJdIFtQQVRDSCAwLzJdIEVuYWJsZSBwYWdlIHRhYmxlIHdyaXRlIHByb3RlY3Rp b24NCj4gPj4+Pg0KPiA+Pj4+IEkgZG8gdGhpbmsgd2UgbmVlZCB1cGRhdGUgQ1BVIGRyaXZlciB0 byBwcm90ZWN0IG5ldyBhbGxvY2F0ZWQgc3BsaXQgcGFnZS4NCj4gPj4+Pg0KPiA+Pj4+IElmIHlv dSB2ZXJpZmllZCBpbiBzaGVsbCBlbnYsIEkgdGhpbmsgaXQgd2lsbCBleHBvc2VkLCBwbGVhc2Ug YWRkIGEgdGVzdCB0bw0KPiB0cmlnZ2VyDQo+ID4+Pj4gcGFnZSBzcGxpdCBpbiBDUFUgZHJpdmVy Lg0KPiA+Pj4+DQo+ID4+Pj4gSSByZWNvbW1lbmQgdG8gd3JpdGUgc29tZSB1bml0IHRlc3QgdG8g cGFyc2UgcGFnZSB0YWJsZSBpbiBzaGVsbC4NCj4gPj4+Pg0KPiA+Pj4+IHRoYW5rIHlvdSENCj4g Pj4+PiBZYW8sIEppZXdlbg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4g5ZyoIDIwMTflubQxMeac iDI55pel77yM5LiL5Y2IODoxNe+8jFdhbmcsIEppYW4gSg0KPiA8amlhbi5qLndhbmdAaW50ZWwu Y29tPg0KPiA+Pj4g5YaZDQo+ID4+Pj4g6YGT77yaDQo+ID4+Pj4+DQo+ID4+Pj4+IEl0J3MgaW4g dGhlIER4ZUlwbFBlaW0uDQo+ID4+Pj4+DQo+ID4+Pj4+IEJ5IHRoZSB3YXksIHRoZXJlJ3MgYW4g aXNzdWUgaW4gdGhpcyBwYXRjaC4gSSBmb3Jnb3QgdG8gcHJvdGVjdCBwYWdlIHRhYmxlDQo+IGZv cg0KPiA+Pj4gMzItDQo+ID4+Pj4gYml0IG1vZGUuDQo+ID4+Pj4+IFNvIHRoaXMgcGF0Y2ggd29y a3Mgb25seSBmb3IgNjQtYml0IG1vZGUuIEknbGwgYWRkIGl0IGluIHYyIHBhdGNoLg0KPiA+Pj4+ Pg0KPiA+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+Pj4+IEZyb206IFlh bywgSmlld2VuDQo+ID4+Pj4+PiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDI5LCAyMDE3IDY6 NTYgUE0NCj4gPj4+Pj4+IFRvOiBXYW5nLCBKaWFuIEogPGppYW4uai53YW5nQGludGVsLmNvbT4N Cj4gPj4+Pj4+IENjOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+Pj4+Pj4gU3ViamVjdDog UmU6IFtlZGsyXSBbUEFUQ0ggMC8yXSBFbmFibGUgcGFnZSB0YWJsZSB3cml0ZSBwcm90ZWN0aW9u DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gSXMgdGhpcyBjb2RlIGluIENQVSBkcml2ZXI/DQo+ID4+Pj4+ Pg0KPiA+Pj4+Pj4gdGhhbmsgeW91IQ0KPiA+Pj4+Pj4gWWFvLCBKaWV3ZW4NCj4gPj4+Pj4+DQo+ ID4+Pj4+Pg0KPiA+Pj4+Pj4+IOWcqCAyMDE35bm0MTHmnIgyOeaXpe+8jOS4i+WNiDY6MjTvvIxX YW5nLCBKaWFuIEoNCj4gPj4gPGppYW4uai53YW5nQGludGVsLmNvbT4NCj4gPj4+PiDlhpkNCj4g Pj4+Pj4+IOmBk++8mg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gWWVzLCBJIHZhbGlkYXRlZCB0aGVt IG1hbnVhbGx5IHdpdGggSlRBRyBkZWJ1ZyB0b29sLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gaWYg KChMM1BhZ2VUYWJsZVtJbmRleDNdICYgSUEzMl9QR19QUykgIT0gMCkgew0KPiA+Pj4+Pj4+IC8v IDFHIHBhZ2UuIFNwbGl0IHRvIDJNLg0KPiA+Pj4+Pj4+IEwyUGFnZVRhYmxlID0gQWxsb2NhdGVQ YWdlcyAoMSk7DQo+ID4+Pj4+Pj4gQVNTRVJUIChMMlBhZ2VUYWJsZSAhPSBOVUxMKTsNCj4gPj4+ Pj4+PiAgUGh5c2ljYWxBZGRyZXNzID0gTDNQYWdlVGFibGVbSW5kZXgzXSAmDQo+ID4+PiBQQUdJ TkdfMUdfQUREUkVTU19NQVNLXzY0Ow0KPiA+Pj4+Pj4+ICBmb3IgKEluZGV4ID0gMDsgSW5kZXgg PCBFRklfUEFHRV9TSVpFL3NpemVvZiAoVUlOVDY0KTsgKytJbmRleCkgew0KPiA+Pj4+Pj4+ICAg TDJQYWdlVGFibGVbSW5kZXhdID0gUGh5c2ljYWxBZGRyZXNzICB8IEFkZHJlc3NFbmNNYXNrIHwN Cj4gPj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIElBMzJfUEdfUFMgfCBJQTMyX1BHX1Ag fCBJQTMyX1BHX1JXOw0KPiA+Pj4+Pj4+ICAgUGh5c2ljYWxBZGRyZXNzICs9IFNJWkVfMk1COw0K PiA+Pj4+Pj4+IH0NCj4gPj4+Pj4+PiBMM1BhZ2VUYWJsZVtJbmRleDNdID0gKFVJTlQ2NCkgKFVJ TlROKSBMMlBhZ2VUYWJsZSB8DQo+ID4+PiBBZGRyZXNzRW5jTWFzayB8DQo+ID4+Pj4+Pj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUEzMl9QR19QIHwNCj4gPj4+IElB MzJfUEdfUlc7DQo+ID4+Pj4+Pj4gU2V0UGFnZVJlYWRPbmx5IChQYWdlVGFibGVCYXNlLA0KPiA+ Pj4+Pj4gKEVGSV9QSFlTSUNBTF9BRERSRVNTKShVSU5UTilMMlBhZ2VUYWJsZSk7DQo+ID4+Pj4+ Pj4gfQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gVGhlIG5ld2x5IGFsbG9jYXRlZCBwYWdlIHRhYmxl IGlzIHNldCBpbiB0aGUgU2V0UGFnZVJlYWRPbmx5KCkgaXRzZWxmDQo+ID4+Pj4+PiByZWN1cnNp dmVseSwgbGlrZQ0KPiA+Pj4+Pj4+IGFib3ZlIGNvZGUgaW4gd2hpY2ggTDJQYWdlVGFibGUgaXMg YWxsb2NhdGVkIGFuZCB0aGVuIHNldCBpdCB0byBiZQ0KPiA+Pj4gcmVhZC1vbmx5DQo+ID4+Pj4+ PiBhZnRlcg0KPiA+Pj4+Pj4+IGluaXRpYWxpemluZyB0aGUgdGFibGUgY29udGVudC4NCj4gPj4+ Pj4+Pg0KPiA+Pj4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4+PiBG cm9tOiBZYW8sIEppZXdlbg0KPiA+Pj4+Pj4+PiBTZW50OiBXZWRuZXNkYXksIE5vdmVtYmVyIDI5 LCAyMDE3IDU6MTYgUE0NCj4gPj4+Pj4+Pj4gVG86IFdhbmcsIEppYW4gSiA8amlhbi5qLndhbmdA aW50ZWwuY29tPg0KPiA+Pj4+Pj4+PiBDYzogZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPj4+ Pj4+Pj4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMC8yXSBFbmFibGUgcGFnZSB0YWJsZSB3 cml0ZSBwcm90ZWN0aW9uDQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+IFRoYW5rcy4NCj4gPj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4gTWF5IEkga25vdyBpZiB0aGlzIGlzIHZhbGlkYXRlZCBpbiB1ZWZpIHNo ZWxsLCB0aGF0IGFsbCBwYWdlIHRhYmxlIGlzDQo+ID4+IHJlYWRvbmx5Pw0KPiA+Pj4+Pj4+Pg0K PiA+Pj4+Pj4+PiBJIGRpZCBub3QgZmluZCB0aGUgY29kZSB0byBzZXQgbmV3IGFsbG9jYXRlZCBz cGxpdCBwYWdlIHRvIGJlIHJlYWRvbmx5Lg0KPiA+PiBDYW4NCj4gPj4+PiB5b3UNCj4gPj4+Pj4+ Pj4gZ2l2ZSBtZSBhIGhhbmQgb24gdGhhdD8NCj4gPj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4gdGhhbmsg eW91IQ0KPiA+Pj4+Pj4+PiBZYW8sIEppZXdlbg0KPiA+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pg0KPiA+ Pj4+Pj4+Pj4g5ZyoIDIwMTflubQxMeaciDI55pel77yM5LiL5Y2INDo0N++8jEppYW4gSiBXYW5n DQo+ID4+PiA8amlhbi5qLndhbmdAaW50ZWwuY29tPg0KPiA+Pj4+Pj4g5YaZDQo+ID4+Pj4+Pj4+ IOmBk++8mg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFdyaXRlIFByb3RlY3QgZmVhdHVyZSAo Q1IwLldQKSBpcyBhbHdheXMgZW5hYmxlZCBpbiBkcml2ZXINCj4gPj4+Pj4+Pj4gVWVmaUNwdVBr Zy9DcHVEeGUuDQo+ID4+Pj4+Pj4+PiBCdXQgdGhlIG1lbW9yeSBwYWdlcyB1c2VkIGZvciBwYWdl IHRhYmxlIGFyZSBub3Qgc2V0IGFzIHJlYWQtb25seQ0KPiBpbg0KPiA+Pj4gdGhlDQo+ID4+Pj4+ Pj4+IGRyaXZlcg0KPiA+Pj4+Pj4+Pj4gRHhlSXBsUGVpbSwgYWZ0ZXIgdGhlIHBhZ2luZyBpcyBz ZXR1cC4gVGhpcyBtaWdodCBqZW9wYXJkaXplIHRoZSBwYWdlDQo+ID4+Pj4gdGFibGUNCj4gPj4+ Pj4+Pj4+IGludGVncml0eSBpZiB0aGVyZSdzIGJ1ZmZlciBvdmVyZmxvdyBvY2N1cmVkIGluIG90 aGVyIHBhcnQgb2Ygc3lzdGVtLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFRoaXMgcGF0Y2gg c2VyaWVzIHdpbGwgY2hhbmdlIHRoaXMgc2l0dWF0aW9uIGJ5IGNsZWFyaW5nIFIvVyBiaXQgaW4N Cj4gcGFnZQ0KPiA+Pj4+Pj4gYXR0cmlidXRlDQo+ID4+Pj4+Pj4+PiBvZiB0aGUgcGFnZXMgdXNl ZCBhcyBwYWdlIHRhYmxlLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IFZhbGlkYXRpb24gd29y a3MgaW5jbHVkZSBib290aW5nIFdpbmRvd3MgKDEwL3NlcnZlciAyMDE2KSBhbmQNCj4gTGludXgN Cj4gPj4+Pj4+Pj4gKEZlZG9yYS9VYnVudHUpDQo+ID4+Pj4+Pj4+PiBvbiBPVk1GIGFuZCBJbnRl bCByZWFsIHBsYXRmb3JtLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+IEppYW4gSiBXYW5nICgy KToNCj4gPj4+Pj4+Pj4+IFVlZmlDcHVQa2cvQ3B1RHhlOiBDaGVjayBDUjAuV1AgYmVmb3JlIGNo YW5naW5nIHBhZ2UgdGFibGUNCj4gPj4+Pj4+Pj4+IE1kZU1vZHVsZVBrZy9EeGVJcGw6IE1hcmsg cGFnZSB0YWJsZSBhcyByZWFkLW9ubHkNCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBNZGVNb2R1 bGVQa2cvQ29yZS9EeGVJcGxQZWltL1g2NC9WaXJ0dWFsTWVtb3J5LmMgfCAxNjYNCj4gPj4+Pj4+ Pj4gKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+Pj4+Pj4+IE1kZU1vZHVsZVBrZy9Db3Jl L0R4ZUlwbFBlaW0vWDY0L1ZpcnR1YWxNZW1vcnkuaCB8ICAxNCArKw0KPiA+Pj4+Pj4+Pj4gVWVm aUNwdVBrZy9DcHVEeGUvQ3B1UGFnZVRhYmxlLmMgICAgICAgICAgICAgICAgIHwgIDY1DQo+ID4+ PiArKysrKysrKy0NCj4gPj4+Pj4+Pj4+IDMgZmlsZXMgY2hhbmdlZCwgMjQxIGluc2VydGlvbnMo KyksIDQgZGVsZXRpb25zKC0pDQo+ID4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4gLS0NCj4gPj4+Pj4+ Pj4+IDIuMTQuMS53aW5kb3dzLjENCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBfX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+Pj4+Pj4+Pj4gZWRrMi1k ZXZlbCBtYWlsaW5nIGxpc3QNCj4gPj4+Pj4+Pj4+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ ID4+Pj4+Pj4+PiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2 ZWwNCj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K PiA+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcN Cj4gPiBodHRwczovL2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg0K