From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=jian.j.wang@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 2C956222EDCEC for ; Thu, 4 Jan 2018 17:04:57 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Jan 2018 17:10:03 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,316,1511856000"; d="scan'208";a="24460418" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga002.jf.intel.com with ESMTP; 04 Jan 2018 17:10:03 -0800 Received: from fmsmsx125.amr.corp.intel.com (10.18.125.40) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 4 Jan 2018 17:10:02 -0800 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX125.amr.corp.intel.com (10.18.125.40) with Microsoft SMTP Server (TLS) id 14.3.319.2; Thu, 4 Jan 2018 17:10:02 -0800 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.213]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.152]) with mapi id 14.03.0319.002; Fri, 5 Jan 2018 09:10:01 +0800 From: "Wang, Jian J" To: Laszlo Ersek , Brijesh Singh , "edk2-devel@lists.01.org" CC: Tom Lendacky , "Yao, Jiewen" , "Justen, Jordan L" , "Ard Biesheuvel" , "Ni, Ruiyu" Thread-Topic: [PATCH] OvmfPkg/BaseMemEncryptSevLib: Enable protection for newly added page table Thread-Index: AQHThX66iigS15bjzUqb3ryWKya42aNjjUyAgADqOuA= Date: Fri, 5 Jan 2018 01:10:00 +0000 Message-ID: References: <20180104170602.6617-1-brijesh.singh@amd.com> <016c210b-2f23-2624-fc7c-867d247521ee@redhat.com> In-Reply-To: <016c210b-2f23-2624-fc7c-867d247521ee@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYWIyZTE0MWQtMzUyZC00YTFiLWI2YjYtYTAxODAyMzI1MDJhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJOdW5JemNRZWg5aG9jUzFGNytjYnRmK0c5WVF5WHVkSnBcL1hMY0JYOWMrMWxMVkNmZ3NSUGFEd0VXT1pcLzBFS1IifQ== x-ctpclassification: CTP_NT 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] OvmfPkg/BaseMemEncryptSevLib: Enable protection for newly added page table X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 05 Jan 2018 01:04:58 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QWRkIENjIHRvIFJ1aXl1LCB3aG8gaGFzIHBsYW4gdG8gY29uc29saWRhdGUgcGFnZSB0YWJsZSBt YW5pcHVsYXRpb24gbWV0aG9kLg0KSGUgbWF5IHdhbnQgdG8gc2hhcmUgbW9yZSBpbmZvcm1hdGlv bi4NCg0KUmVnYXJkcywNCkppYW4NCg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ IEZyb206IExhc3psbyBFcnNlayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBG cmlkYXksIEphbnVhcnkgMDUsIDIwMTggMzowNyBBTQ0KPiBUbzogQnJpamVzaCBTaW5naCA8YnJp amVzaC5zaW5naEBhbWQuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IFRvbSBM ZW5kYWNreSA8VGhvbWFzLkxlbmRhY2t5QGFtZC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPGppYW4u ai53YW5nQGludGVsLmNvbT47IFlhbywgSmlld2VuIDxqaWV3ZW4ueWFvQGludGVsLmNvbT47IEp1 c3RlbiwgSm9yZGFuDQo+IEwgPGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+OyBBcmQgQmllc2hl dXZlbCA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gU3ViamVjdDogUmU6IFtQQVRDSF0g T3ZtZlBrZy9CYXNlTWVtRW5jcnlwdFNldkxpYjogRW5hYmxlIHByb3RlY3Rpb24gZm9yDQo+IG5l d2x5IGFkZGVkIHBhZ2UgdGFibGUNCj4gDQo+IEhpIEJyaWplc2gsDQo+IA0KPiBtZXRhIGNvbW1l bnQ6IHBsZWFzZSBhbHNvIENDIEFyZCBvbiBPdm1mUGtnIHBhdGNoZXM7IGhlIHRvbyBjby1tYWlu dGFpbnMNCj4gT3ZtZlBrZy4NCj4gDQo+IE1vcmUgYmVsb3c6DQo+IA0KPiBPbiAwMS8wNC8xOCAx ODowNiwgQnJpamVzaCBTaW5naCB3cm90ZToNCj4gPiBDb21taXQgMmFjMTczMGJmMmE1IChNZGVN b2R1bGVQa2cvRHhlSXBsOiBNYXJrIHBhZ2UgdGFibGUgYXMgcmVhZC1vbmx5KQ0KPiA+IHNldHMg dGhlIG1lbW9yeSBwYWdlcyB1c2VkIGZvciBwYWdlIHRhYmxlIGFzIHJlYWQtb25seSBhZnRlciBw YWdpbmcgaXMNCj4gPiBzZXR1cCBhbmQgc2V0cyBDUjAuV1AgdG8gcHJvdGVjdCBDUFUgbW9kaWZ5 aW5nIHRoZSByZWFkLW9ubHkgcGFnZXMuDQo+ID4gVGhlIGNvbW1pdCBjYXVzZXMgI1BGIHdoZW4g TWVtRW5jcnlwdFNldkNsZWFyUGFnZUVuY01hc2soKSBvcg0KPiA+IE1lbUVuY3J5cHRTZXZTZXRQ YWdlRW5jTWFzaygpIHRyaWVzIHRvIGNoYW5nZSB0aGUgcGFnZS10YWJsZSBhdHRyaWJ1dGVzLg0K PiA+DQo+ID4gVGhpcyBwYXRjaCB0YWtlcyB0aGUgc2ltaWxhciBhcHByb2FjaCBhcyBDb21taXQg MTQ3ZmQzNWMzZTM4DQo+ID4gKFVlZmlDcHVQa2cvQ3B1RHhlOiBFbmFibGUgcHJvdGVjdGlvbiBm b3IgbmV3bHkgYWRkZWQgcGFnZSB0YWJsZSkuDQo+ID4gV2hlbiBwYWdlIHRhYmxlIHByb3RlY3Rp b24gaXMgZW5hYmxlZCwgd2UgZGlzYWJsZSBpdCB0ZW1wb3JhcmlseSBiZWZvcmUNCj4gPiBjaGFu Z2luZyB0aGUgcGFnZSB0YWJsZSBhdHRyaWJ1dGVzLg0KPiA+DQo+ID4gVGhpcyBwYXRjaCBtYWtl cyB1c2Ugb2YgdGhlIHNhbWUgYXBwcm9hY2ggYXMgQ29tbWl0IDJhYzE3MzBiZjJhNQ0KPiA+IChN ZGVNb2R1bGVQa2cvRHhlSXBsOiBNYXJrIHBhZ2UgdGFibGUgYXMgcmVhZC1vbmx5KSkgZm9yIGFs bG9jYXRpbmcNCj4gPiBwYWdlIHRhYmxlIG1lbW9yeSBmcm9tIHJlc2VydmVkIG1lbW9yeSBwb29s LCB3aGljaCBoZWxwcyB0byByZWR1Y2UgYQ0KPiANCj4gInJlc2VydmVkIG1lbW9yeSBwb29sIiBp cyBhIG1pc2xlYWRpbmcgdGVybSwgaXQgaW52b2tlcyB0aG91Z2h0cyBhYm91dA0KPiBFZmlSZXNl cnZlZE1lbW9yeVR5cGUsIHdoaWNoIGlzIGFsc28gYWxsb2NhdGFibGUuDQo+IA0KPiA+IHBvdGVu dGlhbCAic3BsaXQiIG9wZXJhdGlvbi4NCj4gPg0KPiA+IENjOiBKaWFuIEogV2FuZyA8amlhbi5q LndhbmdAaW50ZWwuY29tPg0KPiA+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNv bT4NCj4gPiBDYzogSm9yZGFuIEp1c3RlbiA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4NCj4g PiBDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLnNpbmdoQGFtZC5jb20+DQo+IA0KPiBUaGUgZm9sbG93 aW5nIGxpbmUgaXMgbWlzc2luZywgZnJvbSBhYm92ZSB5b3VyIFMtby1iOg0KPiANCj4gQ29udHJp YnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0KPiANCj4g PiAtLS0NCj4gPiAgT3ZtZlBrZy9MaWJyYXJ5L0Jhc2VNZW1FbmNyeXB0U2V2TGliL1g2NC9WaXJ0 dWFsTWVtb3J5LmggfCAgMjggKysNCj4gPiAgT3ZtZlBrZy9MaWJyYXJ5L0Jhc2VNZW1FbmNyeXB0 U2V2TGliL1g2NC9WaXJ0dWFsTWVtb3J5LmMgfCAzNzgNCj4gKysrKysrKysrKysrKysrKysrKy0N Cj4gPiAgMiBmaWxlcyBjaGFuZ2VkLCAzOTkgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkN Cj4gDQo+IEkgZmluZCBpdCBhd2Z1bCB0aGF0IHdlIGhhdmUgdG8gZHVwbGljYXRlIGFsbCB0aGlz IGNvZGUgaW4gT3ZtZlBrZy4NCj4gDQo+IFRoZSBwYWdlIHByb3RlY3Rpb24gKCsgb3RoZXIgc2Vj dXJpdHkpIGZlYXR1cmVzIGhhdmUgYmVlbiBjb25zdGFudGx5DQo+IHJlZmluZWQgc2luY2UgSmlh biBzdGFydGVkIHRvIHdvcmsgb24gdGhlbS4gVGhlcmUncyBubyBndWFyYW50ZWUgdGhhdA0KPiB0 aGlzIGlzIHRoZSBsYXN0IHN5bmNocm9uaXphdGlvbiB3ZSBoYXZlIHRvIGRvIGluIE92bWZQa2cg ZHVlIHRvIGFub3RoZXINCj4gZmVhdHVyZSAob3IgYnVnZml4KSB1bmRlciBVZWZpQ3B1UGtnLg0K PiANCj4gWW91IGNhbiBzZWUgaW4gdGhlIG1lc3NhZ2VzIG9mIGJvdGggY29tbWl0cyAyYWMxNzMw YmYyYTUgYW5kDQo+IDE0N2ZkMzVjM2UzOCB0aGF0IEkgcGFydGljaXBhdGVkIGluIHRoZSByZWdy ZXNzaW9uLXRlc3Rpbmcgb2YgdGhvc2UgY29tbWl0cy4NCj4gDQo+IFlvdSBjYW4gYWxzbyBzZWUg b24gdGhlIGNvbW1pdCBtZXNzYWdlcyB0aGF0IEkgc2ltcGx5IHJhbiBvdXQgb2Ygc3RlYW0NCj4g d2hpbGUgdHJ5aW5nIHRvIGtlZXAgdXAgd2l0aCByYXBpZCBpdGVyYXRpb25zIG9mIHRob3NlIHBh dGNoZXMgLS0gSQ0KPiByZWdyZXNzaW9uLXRlc3RlZCB2ZXJzaW9ucyB0aGF0IEkgdGhvdWdodCB3 b3VsZCBiZSBmaW5hbCwgYnV0IGV2ZW4gYWZ0ZXINCj4gdGhhdCwgZnVydGhlciB1cGRhdGVzIHdl cmUgbWFkZSwgYW5kIEkgY291bGRuJ3QgdGVzdCB0aGUgZmluYWwgdmVyc2lvbnMuDQo+IA0KPiBF dmVuIGluIHRob3NlIHJlZ3Jlc3Npb24gdGVzdHMgdGhhdCBJIG1hbmFnZWQgdG8gZG8sIEkgZGlk bid0IHRlc3QgdGhlDQo+IHBhdGNoZXMgaW4gYSBTRVYgZ3Vlc3QuIFRoZSByZWFzb24gaXMgdGhh dCB0aGUgdGVzdCBtYXRyaXggaGFzIG5vdyBncm93bg0KPiB0byBhbiB1bm1hbmFnZWFibGUgc2l6 ZSwgc3VjaCB0aGF0IHNvbWV0aW1lcyBpdCBkb2Vzbid0IGV2ZW4gb2NjdXIgdG8gbWUNCj4gdGhh dCB0aGlzIG9yIHRoYXQgdmlydCBlbnZpcm9ubWVudCBjb3VsZCBiZSBhZmZlY3RlZCBieSBhIFVl ZmlDcHVQa2cgb3INCj4gTWRlKlBrZyBwYXRjaC4gSSByZWFsaXplZCB0aGUgcmlzaywgd2hpY2gg aXMgd2h5IEkgYXNrZWQgZm9yLCBhbmQgZ290LA0KPiBSZXZpZXdlciByb2xlIHVuZGVyIFVlZmlD cHVQa2cgLS0gcHVyZWx5IHNvIEkgY291bGQgKnRlc3QqIChub3QNCj4gbmVjZXNzYXJpbHkgcmV2 aWV3ISkgVWVmaUNwdVBrZyBwYXRjaGVzIGZpcnN0LWhhbmQsICpiZWZvcmUqIHRoZXkgYXJlDQo+ IGNvbW1pdHRlZC4gQnV0LCBJJ20gYXQgKGFuZCBiZXlvbmQpIGNhcGFjaXR5LCBldmVuIGluIHJl Y29nbml6aW5nIHdoYXQNCj4gYWZmZWN0cyB3aGF0Lg0KPiANCj4gVGhlcmUgYXJlIG9ubHkgdHdv IGZpeGVzIGZvciB0aGlzICh0aGV5IGFyZSBpbmRlcGVuZGVudCwgYW5kIGJvdGggc2hvdWxkDQo+ IGJlIGRvbmUpOg0KPiANCj4gKDEpIEFuIGF1dG9tYXRlZCByZWdyZXNzaW9uIHRlc3QgZW52aXJv bm1lbnQuIFdlIGRpc2N1c3NlZCB0aGlzIGVhcmxpZXINCj4gd2l0aCBKaWFuIChiZWNhdXNlIGhp cyB3b3JrIGhhZCBib3RoIGludHJvZHVjZWQsIGFuZCBlbHNld2hlcmUgZXhwb3NlZCwNCj4gYSBs YXJnZSBudW1iZXIgb2YgYnVncykuIEFmdGVyIHRoYXQsIEkgYWxzbyB0YWxrZWQgdG8gdmlydC1R RSBhdCBSZWQNCj4gSGF0LiBIb3BlZnVsbHkgdmlydC1RRSBAUkggd2lsbCBmaW5kIHNvbWUgcmVz b3VyY2VzIGluIEZlYnJ1YXJ5IDIwMTggdG8NCj4gd3JpdGUgT1ZNRiB0ZXN0IGNhc2VzIGZvciB0 aGUgYXZvY2Fkby12dCBwcm9qZWN0LiBJJ20gbm90IHN1cmUuDQo+IEN1cnJlbnRseSwgKnplcm8q IE9WTUYgdGVzdCBjYXNlcyBleGlzdCBpbiBhbnkgYXV0b21hdGVkIHRlc3QNCj4gZW52aXJvbm1l bnQgdGhhdCBJJ20gYXdhcmUgb2Y7IGFuZCBJIGhhdmUgc3BlbnQgYSBmcmlnaHRlbmluZyBhbW91 bnQgb2YNCj4gdGltZSBvbiBtYW51YWwgcmVncmVzc2lvbiB0ZXN0aW5nLg0KPiANCj4gKDIpIENv ZGUgc2hhcmluZyAvIHJldXNlIGJldHdlZW4gdG9wLWxldmVsIFBrZ3MgaW4gZWRrMiwgYXMgZGls aWdlbnRseQ0KPiBhcyBwb3NzaWJsZS4gSSB2ZXJ5IG11Y2ggZGlzbGlrZSB0aGF0IHdlIGhhdmUg cGFnZSB0YWJsZSBtYW5hZ2VtZW50DQo+IHNjYXR0ZXJlZCBiZXR3ZWVuIE1kZU1vZHVsZVBrZy9D b3JlL0R4ZUlwbFBlaW0sIFVlZmlDcHVQa2cvQ3B1RHhlLCBhbmQNCj4gT3ZtZlBrZy4gSWYgdGhl cmUgaXMgYSB3ZWxsLWRlZmluZWQgc2VjdXJpdHkgZmVhdHVyZSwgbmFtZWx5ICJwcm90ZWN0DQo+ IHBhZ2UgdGFibGVzIGJ5IG1ha2luZyB0aGVtIHJlYWQtb25seSIsIHRoZW4gdGhlIGNvcmUgZmVh dHVyZSBoYWQgYmV0dGVyDQo+IHByb3ZpZGUgdGhlIHRvb2xraXQgZm9yICphbGwqIHJlbGV2YW50 IG1vZHVsZXMgdG8gcmV1c2UuDQo+IA0KPiBEbyB3ZSByZWFsbHkgbmVlZCB0d28gZGVmaW5pdGlv bnMgb2YgdGhlIG1hY3JvIFBBR0lOR19MNF9BRERSRVNTX1NISUZUPw0KPiANCj4gRG8gd2UgcmVh bGx5IG5lZWQgKnRocmVlKiBkZWZpbml0aW9ucyBvZiB0aGUgbWFjcm8gSUEzMl9QR19SVz8NCj4g DQo+IC0gTWRlTW9kdWxlUGtnL0NvcmUvRHhlSXBsUGVpbS9YNjQvVmlydHVhbE1lbW9yeS5oDQo+ IC0gT3ZtZlBrZy9MaWJyYXJ5L0Jhc2VNZW1FbmNyeXB0U2V2TGliL1g2NC9WaXJ0dWFsTWVtb3J5 LmgNCj4gLSBVZWZpQ3B1UGtnL1BpU21tQ3B1RHhlU21tL1BpU21tQ3B1RHhlU21tLmgNCj4gDQo+ IFRoaXMgaXMganVzdCBzbG9wcHkgd29yaywgbWluZGxlc3MgY29kZSBkdXBsaWNhdGlvbi4NCj4g DQo+IEknbSBub3Qgd2lsbGluZyB0byByZXZpZXcgfjQwMCBsaW5lcyBvZiBwYWdlIHRhYmxlIG1h bmlwdWxhdGlvbiBpbg0KPiBkZXRhaWwgdGhhdCBhZG1pdHRlZGx5IGR1cGxpY2F0ZXMgVWVmaUNw dVBrZyBjb2RlLCBmcm9tIGNvbW1pdA0KPiAxNDdmZDM1YzNlMzguIFNvcnJ5LCBJIGRvbid0IHNj YWxlIHRvIHRoYXQgbGV2ZWwuDQo+IA0KPiANCj4gSGVyZSdzIHdoYXQgd2UgY2FuIGRvOg0KPiAN Cj4gKGEpIEkgY2FuIEFDSyB0aGlzIHBhdGNoLCBhbmQgcHVzaCBpdCwgd2l0aG91dCBsb29raW5n IGF0IG1vcmUgdGhhbiBqdXN0DQo+IHRoZSBjb21taXQgbWVzc2FnZSBhbmQgdGhlIGRpZmZzdGF0 Lg0KPiANCj4gKGIpIE9yIGVsc2UsIHlvdSBhbmQgSmlhbiBjb3VsZCBjb2xsYWJvcmF0ZSBvbiBm YWN0b3Jpbmcgb3V0IHRoZSBzaGFyZWQNCj4gYml0cyB0byBuZXcgSW5jbHVkZS9JbmR1c3RyeVN0 YW5kYXJkIGhlYWRlcnMsIEluY2x1ZGUvTGlicmFyeSBjbGFzcw0KPiBoZWFkZXJzLCBhbmQgTGli cmFyeSBpbnN0YW5jZXMuIChVZWZpQ3B1UGtnIGNhbiBjb25zdW1lIE1kZSpQa2csIGFuZA0KPiBP dm1mUGtnIGNhbiBjb25zdW1lIGFsbCBvZiB0aG9zZS4pIEFmdGVyIHRoYXQsIHdlIG1pZ2h0IG5v dCBuZWVkIGFueQ0KPiBzdWNoIE92bWZQa2cgcGF0Y2hlcyBpbiB0aGUgZmlyc3QgcGxhY2UsIG9y IGlmIHdlIGRpZCwgSSBjb3VsZA0KPiByZWFzb25hYmx5IGZpbmQgdGhlIHRpbWUgdG8gbG9vayBh dCB0aGVtLg0KPiANCj4gSSB0b3RhbGx5IGRvbid0IHJlcXVlc3QgdGhhdCBsaWJyYXJ5IGludGVy ZmFjZXMgYW5kIGluZHVzdHJ5IHN0YW5kYXJkDQo+IG1hY3JvcyBiZSBhZGRlZCB0byBwdWJsaWMg aGVhZGVycyAqdXBmcm9udCosIGJlZm9yZSAqbXVsdGlwbGUqIGNvbnN1bWVycw0KPiBhcHBlYXIu IEkgZG9uJ3QgYmVsaWV2ZSBpbiAiZGVzaWduIGJ5IGNvbW1pdHRlZSIuDQo+IA0KPiBIb3dldmVy LCBJIGRvIHN1YnNjcmliZSB0byBpbnRlcmZhY2UgZXh0cmFjdGlvbiB3aGVuIG9yZ2FuaWMgcHJv amVjdA0KPiBncm93dGggcmVzdWx0cyBpbiBtdWx0aXBsZSB1c2VzIG9mIHRoZSBzYW1lIHBhdHRl cm4uDQo+IA0KPiAoYykgT2J2aW91c2x5LCBvdGhlciBPdm1mUGtnIG1haW50YWluZXJzIGFyZSB3 ZWxjb21lIHRvIHJldmlldyB0aGUgcGF0Y2gNCj4gZm9yIHlvdSENCj4gDQo+IA0KPiBOQiwgaXQg aXMgbm90IGxvc3Qgb24gbWUgdGhhdCBwcmV2aW91cyBlZGsyIHByYWN0aWNlIGhhcyBhY3RpdmVs eQ0KPiBkaXNjb3VyYWdlZCBmZWF0dXJlIG5vcm1hbGl6YXRpb24sIG9uIG9jY2FzaW9uLiBUaGUg cmVqZWN0aW9uIG9mIHRoZQ0KPiBJb0ZpZm9MaWIgY2xhc3Mgd2FzIGEgcHJpbWUgZXhhbXBsZSwg YW5kIEkgZGlzYWdyZWUgd2l0aCB0aGF0IGRlY2lzaW9uDQo+IC0tIGluY2x1ZGluZyB0aGUgcmVz dWx0YW50IGR1cGxpY2F0aW9uIG9mIHRoZSBuZXcgSW9GaWZvKiBmdW5jdGlvbnMgdG8NCj4gYWxs IElvTGliIGluc3RhbmNlcyAtLSB0byB0aGlzIGRheS4NCj4gDQo+IEFub3RoZXIgdXRpbGl0eSBm dW5jdGlvbiB3ZSBzb3JlbHkgbWlzcyBpcyBzY2FubmluZyBQQ0kgY29uZmlnIHNwYWNlIGZvcg0K PiBhIGdpdmVuIGNhcGFiaWxpdHkgdGhhdCBoYXMga25vd24gc2l6ZSBjb25zdHJhaW50cy4gU28g d2UgaGF2ZQ0KPiBvcGVuLWNvZGVkIHN1Y2ggc2Nhbm5pbmcgYXQgbGVhc3QgdGhyaWNlLg0KPiAN Cj4gVGhpcyBkaXJlIHNpdHVhdGlvbiBpcyBub3QgaGVscGVkIGJ5IHRoZSBmYWN0IHRoYXQgdXBz dHJlYW1pbmcgZmVhdHVyZXMNCj4gdG8gY29yZSBwYWNrYWdlcywgc3VjaCBhcyBNZGVNb2R1bGVQ a2cgYW5kIFVlZmlDcHVQa2csIGlzICppbmNyZWRpYmx5Kg0KPiBoYXJkLiAqV2F5KiBoYXJkZXIg dGhhbiBpdCBzaG91bGQgYmUuIFNvIEkgZG9uJ3QgImJsYW1lIiB5b3UgZm9yDQo+IHN0YXJ0aW5n IHdpdGggdGhlIGVhc2llciB3YXkgKEkgaGF2ZSBmb2xsb3dlZCB0aGF0IHBhdGggbXlzZWxmIGlu IHRoZQ0KPiBwYXN0LCBzZXZlcmFsIHRpbWVzLCBvdXQgb2YgZGVzcGVyYXRpb24pLCBidXQgYXMg YSByZXZpZXdlciAvDQo+IGNvLW1haW50YWluZXIsIEkgc2ltcGx5IGNhbm5vdCBrZWVwIHVwIHdp dGggdGhpcyBsZXZlbCBvZiBjb2RlDQo+IGR1cGxpY2F0aW9uLCBhbmQgdGhlIGNvbnNlcXVlbnQg KHByZWRpY3RhYmxlKSBjaHVybiBpbiB0aGUgZnV0dXJlLg0KPiANCj4gDQo+IFBsZWFzZSBwaWNr IChhKSwgKGIpIG9yIChjKS4NCj4gDQo+IFRoYW5rcw0KPiBMYXN6bG8NCg==