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.65, mailfrom: ray.ni@intel.com) Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by groups.io with SMTP; Wed, 10 Jul 2019 23:42:48 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 Jul 2019 23:42:47 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,476,1557212400"; d="scan'208";a="167940613" Received: from fmsmsx106.amr.corp.intel.com ([10.18.124.204]) by fmsmga007.fm.intel.com with ESMTP; 10 Jul 2019 23:42:47 -0700 Received: from fmsmsx152.amr.corp.intel.com (10.18.125.5) by FMSMSX106.amr.corp.intel.com (10.18.124.204) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 10 Jul 2019 23:42:47 -0700 Received: from shsmsx105.ccr.corp.intel.com (10.239.4.158) by FMSMSX152.amr.corp.intel.com (10.18.125.5) with Microsoft SMTP Server (TLS) id 14.3.439.0; Wed, 10 Jul 2019 23:42:45 -0700 Received: from shsmsx104.ccr.corp.intel.com ([169.254.5.110]) by SHSMSX105.ccr.corp.intel.com ([169.254.11.232]) with mapi id 14.03.0439.000; Thu, 11 Jul 2019 14:42:42 +0800 From: "Ni, Ray" To: "Dong, Eric" , "devel@edk2.groups.io" , Laszlo Ersek CC: "Kinney, Michael D" , "Gao, Liming" Subject: Re: [Patch v5 1/2] MdePkg: Add new MM MP Protocol definition. Thread-Topic: [Patch v5 1/2] MdePkg: Add new MM MP Protocol definition. Thread-Index: AQHVNvUCS+q4wEkxd069DJ2cJQjq9abE91yA Date: Thu, 11 Jul 2019 06:42:42 +0000 Message-ID: <734D49CCEBEEF84792F5B80ED585239D5C223BE7@SHSMSX104.ccr.corp.intel.com> References: <20190710075624.16420-1-eric.dong@intel.com> <20190710075624.16420-2-eric.dong@intel.com> In-Reply-To: <20190710075624.16420-2-eric.dong@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="utf-8" Content-Transfer-Encoding: base64 KyBNZGVQa2cgbWFpbnRhaW5lcnMNCg0KV2UgbmVlZCB0byBmb2xsb3cgdGhlIG9wZW4gc291cmNl IGNvbW11bml0eSBwcm9jZXNzIHRvIGluY2x1ZGUgTWRlUGtnDQptYWludGFpbmVycyBmb3IgdGhp cyBjaGFuZ2UgcmV2aWV3Lg0KDQpMYXN6bG8sDQpZb3UgYXJlIGluIHRoZSBDYyBsaXN0IGFuZCBo YWQgZ2l2ZW4gUmVncmVzc2lvbi1UZXN0ZWQtQnkgZm9yIFYzIHBhdGNoIHNlcmllcy4NCkl0IHdv dWxkIGJlIGdyZWF0IGlmIHlvdSBjb3VsZCBnaXZlIHBhdGNoIG93bmVyIGEgaGludCB0byBhdm9p ZCBicmVha2luZyB0aGUgcHJvY2Vzcw0KdGhvdWdoIEkgdW5kZXJzdGFuZCBpdCdzIG5vdCByZXNw b25zaWJpbGl0eSBvZiB0aGUgcGVvcGxlIGluIHRoZSBDQyBsaXN0LiDwn5iKDQoNClRoYW5rcywN ClJheQ0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogRG9uZywgRXJp Yw0KPiBTZW50OiBXZWRuZXNkYXksIEp1bHkgMTAsIDIwMTkgMzo1NiBQTQ0KPiBUbzogZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gQ2M6IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBMYXN6bG8g RXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiBTdWJqZWN0OiBbUGF0Y2ggdjUgMS8yXSBNZGVQ a2c6IEFkZCBuZXcgTU0gTVAgUHJvdG9jb2wgZGVmaW5pdGlvbi4NCj4gDQo+IFJFRjogaHR0cHM6 Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTM3DQo+IA0KPiBFRkkg TU0gTVAgUHJvdG9jb2wgaXMgZGVmaW5lZCBpbiB0aGUgUEkgMS41IHNwZWNpZmljYXRpb24uDQo+ IA0KPiBUaGUgTU0gTVAgcHJvdG9jb2wgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIGFs bG93IGV4ZWN1dGlvbiBvZg0KPiBwcm9jZWR1cmVzIG9uIHByb2Nlc3NvcnMgdGhhdCBoYXZlIGVu dGVyZWQgTU0uIFRoaXMgcHJvdG9jb2wgaGFzIHRoZQ0KPiBmb2xsb3dpbmcgcHJvcGVydGllczoN Cj4gMS4gVGhlIGNhbGxlciBjYW4gaW52b2tlIGV4ZWN1dGlvbiBvZiBhIHByb2NlZHVyZSBvbiBh IHByb2Nlc3Nvciwgb3RoZXIgdGhhbg0KPiB0aGUgY2FsbGVyLCB0aGF0IGhhcyBhbHNvIGVudGVy ZWQgTU0uIFN1cHBvcnRzIGJsb2NraW5nIGFuZCBub24tYmxvY2tpbmcNCj4gbW9kZXMgb2Ygb3Bl cmF0aW9uLg0KPiAyLiBUaGUgY2FsbGVyIGNhbiBpbnZva2UgYSBwcm9jZWR1cmUgb24gbXVsdGlw bGUgcHJvY2Vzc29ycy4gU3VwcG9ydHMNCj4gYmxvY2tpbmcgYW5kIG5vbi1ibG9ja2luZyBtb2Rl cyBvZiBvcGVyYXRpb24uDQo+IA0KPiBDYzogUmF5IE5pIDxyYXkubmlAaW50ZWwuY29tPg0KPiBD YzogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gU2lnbmVkLW9mZi1ieTogRXJp YyBEb25nIDxlcmljLmRvbmdAaW50ZWwuY29tPg0KPiBSZXZpZXdlZC1ieTogUmF5IE5pIDxyYXku bmlAaW50ZWwuY29tPg0KPiAtLS0NCj4gIE1kZVBrZy9JbmNsdWRlL1BpL1BpTXVsdGlQaGFzZS5o IHwgIDE2ICsrDQo+ICBNZGVQa2cvSW5jbHVkZS9Qcm90b2NvbC9NbU1wLmggICB8IDMzMw0KPiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrDQo+ICBNZGVQa2cvTWRlUGtnLmRlYyAgICAg ICAgICAgICAgICB8ICAgMyArDQo+ICAzIGZpbGVzIGNoYW5nZWQsIDM1MiBpbnNlcnRpb25zKCsp DQo+ICBjcmVhdGUgbW9kZSAxMDA2NDQgTWRlUGtnL0luY2x1ZGUvUHJvdG9jb2wvTW1NcC5oDQo+ IA0KPiBkaWZmIC0tZ2l0IGEvTWRlUGtnL0luY2x1ZGUvUGkvUGlNdWx0aVBoYXNlLmgNCj4gYi9N ZGVQa2cvSW5jbHVkZS9QaS9QaU11bHRpUGhhc2UuaA0KPiBpbmRleCBlYjEyNTI3NzY3Li5hNTA1 Njc5OWUxIDEwMDY0NA0KPiAtLS0gYS9NZGVQa2cvSW5jbHVkZS9QaS9QaU11bHRpUGhhc2UuaA0K PiArKysgYi9NZGVQa2cvSW5jbHVkZS9QaS9QaU11bHRpUGhhc2UuaA0KPiBAQCAtMTc2LDQgKzE3 NiwyMCBAQCBWT0lEDQo+ICAgIElOIE9VVCBWT0lEICAqQnVmZmVyDQo+ICAgICk7DQo+IA0KPiAr LyoqDQo+ICsgIFRoZSBmdW5jdGlvbiBwcm90b3R5cGUgZm9yIGludm9raW5nIGEgZnVuY3Rpb24g b24gYW4gQXBwbGljYXRpb24gUHJvY2Vzc29yLg0KPiArDQo+ICsgIFRoaXMgZGVmaW5pdGlvbiBp cyB1c2VkIGJ5IHRoZSBVRUZJIE1NIE1QIFNlcmljZXMgUHJvdG9jb2wuDQo+ICsNCj4gKyAgQHBh cmFtW2luXSBQcm9jZWR1cmVBcmd1bWVudCAgICBUaGUgcG9pbnRlciB0byBwcml2YXRlIGRhdGEg YnVmZmVyLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgRXhjdXRp dmUgdGhlIHByb2NlZHVyZSBzdWNjZXNzZnVsbHkNCj4gKw0KPiArKiovDQo+ICt0eXBlZGVmDQo+ ICtFRklfU1RBVFVTDQo+ICsoRUZJQVBJICpFRklfQVBfUFJPQ0VEVVJFMikoDQo+ICsgIElOIFZP SUQgICpQcm9jZWR1cmVBcmd1bWVudA0KPiArKTsNCj4gKw0KPiAgI2VuZGlmDQo+IGRpZmYgLS1n aXQgYS9NZGVQa2cvSW5jbHVkZS9Qcm90b2NvbC9NbU1wLmgNCj4gYi9NZGVQa2cvSW5jbHVkZS9Q cm90b2NvbC9NbU1wLmggbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gMDAwMDAwMDAwMC4u YmVhY2UxMzg2Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL01kZVBrZy9JbmNsdWRlL1Byb3Rv Y29sL01tTXAuaA0KPiBAQCAtMCwwICsxLDMzMyBAQA0KPiArLyoqIEBmaWxlDQo+ICsgIEVGSSBN TSBNUCBQcm90b2NvbCBpcyBkZWZpbmVkIGluIHRoZSBQSSAxLjUgc3BlY2lmaWNhdGlvbi4NCj4g Kw0KPiArICBUaGUgTU0gTVAgcHJvdG9jb2wgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRv IGFsbG93IGV4ZWN1dGlvbiBvZg0KPiArIHByb2NlZHVyZXMgb24gcHJvY2Vzc29ycyB0aGF0ICBo YXZlIGVudGVyZWQgTU0uIFRoaXMgcHJvdG9jb2wgaGFzIHRoZQ0KPiBmb2xsb3dpbmcgcHJvcGVy dGllczoNCj4gKyAgMS4gVGhlIGNhbGxlciBjYW4gb25seSBpbnZva2UgZXhlY3V0aW9uIG9mIGEg cHJvY2VkdXJlIG9uIGEgcHJvY2Vzc29yLA0KPiBvdGhlciB0aGFuIHRoZSBjYWxsZXIsIHRoYXQN Cj4gKyAgICAgaGFzIGFsc28gZW50ZXJlZCBNTS4NCj4gKyAgMi4gSXQgaXMgcG9zc2libGUgdG8g aW52b2tlIGEgcHJvY2VkdXJlIG9uIG11bHRpcGxlIHByb2Nlc3NvcnMuIFN1cHBvcnRzDQo+IGJs b2NraW5nIGFuZCBub24tYmxvY2tpbmcNCj4gKyAgICAgbW9kZXMgb2Ygb3BlcmF0aW9uLg0KPiAr DQo+ICsgIENvcHlyaWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMg cmVzZXJ2ZWQuPEJSPg0KPiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiArDQo+ICsqKi8NCj4gKw0KPiArI2lmbmRlZiBfTU1fTVBfSF8NCj4gKyNkZWZp bmUgX01NX01QX0hfDQo+ICsNCj4gKyNpbmNsdWRlIDxQaS9QaU1tQ2lzLmg+DQo+ICsNCj4gKyNk ZWZpbmUgRUZJX01NX01QX1BST1RPQ09MX0dVSUQgXA0KPiArICB7IFwNCj4gKyAgICAweDVkNTQ1 MGQ3LCAweDk5MGMsIDB4NDE4MCwgezB4YTgsIDB4MywgMHg4ZSwgMHg2MywgMHhmMCwgMHg2MCwN Cj4gKzB4ODMsIDB4NyAgfSAgXA0KPiArICB9DQo+ICsNCj4gKy8vDQo+ICsvLyBSZXZpc2lvbiBk ZWZpbml0aW9uLg0KPiArLy8NCj4gKyNkZWZpbmUgRUZJX01NX01QX1BST1RPQ09MX1JFVklTSU9O ICAgIDB4MDANCj4gKw0KPiArLy8NCj4gKy8vIEF0dHJpYnV0ZSBmbGFncw0KPiArLy8NCj4gKyNk ZWZpbmUgRUZJX01NX01QX1RJTUVPVVRfU1VQUE9SVEVEICAgIDB4MDENCj4gKw0KPiArLy8NCj4g Ky8vIENvbXBsZXRpb24gdG9rZW4NCj4gKy8vDQo+ICt0eXBlZGVmIFZPSUQqIE1NX0NPTVBMRVRJ T047DQo+ICsNCj4gK3R5cGVkZWYgc3RydWN0IHsNCj4gKyAgTU1fQ09NUExFVElPTiAgQ29tcGxl dGlvbjsNCj4gKyAgRUZJX1NUQVRVUyAgICAgU3RhdHVzOw0KPiArfSBNTV9ESVNQQVRDSF9DT01Q TEVUSU9OX1RPS0VOOw0KPiArDQo+ICt0eXBlZGVmIHN0cnVjdCBfRUZJX01NX01QX1BST1RPQ09M ICBFRklfTU1fTVBfUFJPVE9DT0w7DQo+ICsNCj4gKy8qKg0KPiArICBTZXJ2aWNlIHRvIHJldHJp ZXZlcyB0aGUgbnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29yIGluIHRoZSBwbGF0Zm9ybS4NCj4g Kw0KPiArICBAcGFyYW1baW5dICBUaGlzICAgICAgICAgICAgICAgIFRoZSBFRklfTU1fTVBfUFJP VE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtvdXRdIE51bWJlck9mUHJvY2Vzc29ycyAgUG9p bnRlciB0byB0aGUgdG90YWwgbnVtYmVyIG9mIGxvZ2ljYWwNCj4gcHJvY2Vzc29ycyBpbiB0aGUg c3lzdGVtLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGluZyB0 aGUgQlNQIGFuZCBhbGwgQVBzLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAg ICAgICAgVGhlIG51bWJlciBvZiBwcm9jZXNzb3JzIHdhcyByZXRyaWV2ZWQNCj4gc3VjY2Vzc2Z1 bGx5DQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgTnVtYmVyT2ZQcm9jZXNz b3JzIGlzIE5VTEwNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQ SSAqRUZJX01NX0dFVF9OVU1CRVJfT0ZfUFJPQ0VTU09SUykgKA0KPiArICBJTiBDT05TVCBFRklf TU1fTVBfUFJPVE9DT0wgICpUaGlzLA0KPiArICBPVVQgICAgICBVSU5UTiAgICAgICAgICAgICAg ICpOdW1iZXJPZlByb2Nlc3NvcnMNCj4gKyk7DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFRoaXMg c2VydmljZSBhbGxvd3MgdGhlIGNhbGxlciB0byBpbnZva2UgYSBwcm9jZWR1cmUgb25lIG9mIHRo ZQ0KPiArYXBwbGljYXRpb24gcHJvY2Vzc29ycyAoQVApLiBUaGlzDQo+ICsgIGZ1bmN0aW9uIHVz ZXMgYW4gb3B0aW9uYWwgdG9rZW4gcGFyYW1ldGVyIHRvIHN1cHBvcnQgYmxvY2tpbmcgYW5kDQo+ ICtub24tYmxvY2tpbmcgbW9kZXMuIElmIHRoZSB0b2tlbg0KPiArICBpcyBwYXNzZWQgaW50byB0 aGUgY2FsbCwgdGhlIGZ1bmN0aW9uIHdpbGwgb3BlcmF0ZSBpbiBhIG5vbi1ibG9ja2luZw0KPiAr ZmFzaGlvbiBhbmQgdGhlIGNhbGxlciBjYW4NCj4gKyAgY2hlY2sgZm9yIGNvbXBsZXRpb24gd2l0 aCBDaGVja09uUHJvY2VkdXJlIG9yIFdhaXRGb3JQcm9jZWR1cmUuDQo+ICsNCj4gKyAgQHBhcmFt W2luXSAgICAgVGhpcyAgICAgICAgICAgICAgICAgICBUaGUgRUZJX01NX01QX1BST1RPQ09MIGlu c3RhbmNlLg0KPiArICBAcGFyYW1baW5dICAgICBQcm9jZWR1cmUgICAgICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUgcHJvY2VkdXJlIHRvIGJlIHJ1biBvbg0KPiB0aGUgZGVzaWduYXRlZCB0YXJn ZXQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUCBvZiB0aGUg c3lzdGVtLiBUeXBlIEVGSV9BUF9QUk9DRURVUkUyIGlzIGRlZmluZWQNCj4gYmVsb3cgaW4NCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkIGRlZmluaXRp b25zLg0KPiArICBAcGFyYW1baW5dICAgICBDcHVOdW1iZXIgICAgICAgICAgICAgIFRoZSB6ZXJv LWJhc2VkIGluZGV4IG9mIHRoZSBwcm9jZXNzb3INCj4gbnVtYmVyIG9mIHRoZSB0YXJnZXQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBUCwgb24gd2hpY2ggdGhl IGNvZGUgc3RyZWFtIGlzIHN1cHBvc2VkIHRvIHJ1bi4gSWYgdGhlDQo+IG51bWJlcg0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvaW50cyB0byB0aGUgY2FsbGlu ZyBwcm9jZXNzb3IgdGhlbiBpdCB3aWxsIG5vdCBydW4gdGhlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc3VwcGxpZWQgY29kZS4NCj4gKyAgQHBhcmFtW2luXSAg ICAgVGltZW91dEluTWljcm9zZWNvbmRzICBJbmRpY2F0ZXMgdGhlIHRpbWUgbGltaXQgaW4NCj4g bWljcm9zZWNvbmRzIGZvciB0aGlzIEFQIHRvDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZmluaXNoIGV4ZWN1dGlvbiBvZiBQcm9jZWR1cmUsIGVpdGhlciBmb3Ig YmxvY2tpbmcgb3INCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBu b24tYmxvY2tpbmcgbW9kZS4gWmVybyBtZWFucyBpbmZpbml0eS4gSWYgdGhlIHRpbWVvdXQNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBpcmVzIGJlZm9yZSB0 aGlzIEFQIHJldHVybnMgZnJvbSBQcm9jZWR1cmUsIHRoZW4NCj4gUHJvY2VkdXJlDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb24gdGhlIEFQIGlzIHRlcm1pbmF0 ZWQuIElmIHRoZSB0aW1lb3V0IGV4cGlyZXMgaW4NCj4gYmxvY2tpbmcNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RlLCB0aGUgY2FsbCByZXR1cm5zIEVGSV9U SU1FT1VULiBJZiB0aGUgdGltZW91dA0KPiBleHBpcmVzDQo+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaW4gbm9uLWJsb2NraW5nIG1vZGUsIHRoZSB0aW1lb3V0IGRl dGVybWluZWQgY2FuIGJlDQo+IHRocm91Z2gNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBDaGVja09uUHJvY2VkdXJlIG9yIFdhaXRGb3JQcm9jZWR1cmUuDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90ZSB0aGF0IHRpbWVvdXQg c3VwcG9ydCBpcyBvcHRpb25hbC4gV2hldGhlciBhbg0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIHN1cHBvcnRzIHRoaXMgZmVhdHVyZSwg Y2FuIGJlDQo+IGRldGVybWluZWQgdmlhDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdGhlIEF0dHJpYnV0ZXMgZGF0YSBtZW1iZXIuDQo+ICsgIEBwYXJhbVtpbixv dXRdIFByb2NlZHVyZUFyZ3VtZW50cyAgICAgQWxsb3dzIHRoZSBjYWxsZXIgdG8gcGFzcyBhIGxp c3Qgb2YNCj4gcGFyYW1ldGVycyB0byB0aGUgY29kZQ0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgcnVuIGJ5IHRoZSBBUC4gSXQgaXMgYW4gb3B0aW9u YWwgY29tbW9uIG1haWxib3gNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiZXR3ZWVuIEFQcyBhbmQgdGhlIGNhbGxlciB0byBzaGFyZSBpbmZvcm1hdGlvbi4NCj4g KyAgQHBhcmFtW2luLG91dF0gVG9rZW4gICAgICAgICAgICAgICAgICBUaGlzIGlzIHBhcmFtZXRl ciBpcyBicm9rZW4gaW50byB0d28NCj4gY29tcG9uZW50czoNCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAxLlRva2VuLT5Db21wbGV0aW9uIGlzIGFuIG9wdGlvbmFs IHBhcmFtZXRlciB0aGF0DQo+IGFsbG93cyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWxsZXIgdG8gZXhlY3V0ZSB0aGUgcHJvY2VkdXJlIGluIGEgYmxv Y2tpbmcgb3Igbm9uLQ0KPiBibG9ja2luZw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGZhc2hpb24uIElmIGl0IGlzIE5VTEwgdGhlIGNhbGwgaXMgYmxvY2tpbmcs IGFuZCB0aGUgY2FsbCB3aWxsDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgbm90IHJldHVybiB1bnRpbCB0aGUgQVAgaGFzIGNvbXBsZXRlZCB0aGUgcHJvY2VkdXJl LiBJZg0KPiB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 b2tlbiBpcyBub3QgTlVMTCwgdGhlIGNhbGwgd2lsbCByZXR1cm4gaW1tZWRpYXRlbHkuIFRoZQ0K PiBjYWxsZXINCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4g Y2hlY2sgd2hldGhlciB0aGUgcHJvY2VkdXJlIGhhcyBjb21wbGV0ZWQgd2l0aA0KPiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENoZWNrT25Qcm9jZWR1cmUgb3IgV2Fp dEZvclByb2NlZHVyZS4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAyLlRva2VuLT5TdGF0dXMgVGhlIGltcGxlbWVudGF0aW9uIHVwZGF0ZXMgdGhlDQo+IGFkZHJl c3MgcG9pbnRlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0 IGJ5IHRoaXMgdmFyaWFibGUgd2l0aCB0aGUgc3RhdHVzIGNvZGUgcmV0dXJuZWQgYnkNCj4gUHJv Y2VkdXJlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiBp dCBjb21wbGV0ZXMgZXhlY3V0aW9uIG9uIHRoZSB0YXJnZXQgQVAsIG9yIHdpdGgNCj4gRUZJX1RJ TUVPVVQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0aGUg UHJvY2VkdXJlIGZhaWxzIHRvIGNvbXBsZXRlIHdpdGhpbiB0aGUgb3B0aW9uYWwNCj4gdGltZW91 dC4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgaW1wbGVt ZW50YXRpb24gd2lsbCB1cGRhdGUgdGhpcyB2YXJpYWJsZSB3aXRoDQo+IEVGSV9OT1RfUkVBRFkN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvciB0byBzdGFy dGluZyBQcm9jZWR1cmUgb24gdGhlIHRhcmdldCBBUC4NCj4gKyAgQHBhcmFtW2luLG91dF0gQ1BV U3RhdHVzICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIHBvaW50ZXIgbWF5IGJlIHVzZWQgdG8g Z2V0DQo+IHRoZSBzdGF0dXMgY29kZSByZXR1cm5lZA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJ5IFByb2NlZHVyZSB3aGVuIGl0IGNvbXBsZXRlcyBleGVjdXRp b24gb24gdGhlDQo+IHRhcmdldCBBUCwgb3Igd2l0aA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIEVGSV9USU1FT1VUIGlmIHRoZSBQcm9jZWR1cmUgZmFpbHMgdG8g Y29tcGxldGUgd2l0aGluDQo+IHRoZSBvcHRpb25hbA0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHRpbWVvdXQuIFRoZSBpbXBsZW1lbnRhdGlvbiB3aWxsIHVwZGF0 ZSB0aGlzIHZhcmlhYmxlDQo+IHdpdGgNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBFRklfTk9UX1JFQURZIHByaW9yIHRvIHN0YXJ0aW5nIFByb2NlZHVyZSBvbiB0 aGUNCj4gdGFyZ2V0IEFQLg0KPiArDQo+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAg ICAgICAgICAgSW4gdGhlIGJsb2NraW5nIGNhc2UsIHRoaXMgaW5kaWNhdGVzIHRoYXQNCj4gUHJv Y2VkdXJlIGhhcyBjb21wbGV0ZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBleGVjdXRpb24gb24gdGhlIHRhcmdldCBBUC4NCj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBJbiB0aGUgbm9uLWJsb2NraW5nIGNhc2UgdGhpcyBpbmRp Y2F0ZXMgdGhhdCB0aGUNCj4gcHJvY2VkdXJlIGhhcw0KPiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGJlZW4gc3VjY2Vzc2Z1bGx5IHNjaGVkdWxlZCBmb3IgZXhlY3V0 aW9uIG9uIHRoZSB0YXJnZXQNCj4gQVAuDQo+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSICAgICAgICAgVGhlIGlucHV0IGFyZ3VtZW50cyBhcmUgb3V0IG9mDQo+IHJhbmdlLiBFaXRo ZXIgdGhlIHRhcmdldCBBUCBpcyB0aGUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjYWxsZXIgb2YgdGhlIGZ1bmN0aW9uLCBvciB0aGUgUHJvY2VkdXJlIG9yIFRv a2VuIGlzIE5VTEwNCj4gKyAgQHJldHZhbCBFRklfTk9UX1JFQURZICAgICAgICAgICAgICAgICBJ ZiB0aGUgdGFyZ2V0IEFQIGlzIGJ1c3kgZXhlY3V0aW5nIGFub3RoZXINCj4gcHJvY2VkdXJlDQo+ ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgICAgICAgVG9rZW4gaXMgYWxyZWFk eSBpbiB1c2UgZm9yIGFub3RoZXINCj4gcHJvY2VkdXJlDQo+ICsgIEByZXR2YWwgRUZJX1RJTUVP VVQgICAgICAgICAgICAgICAgICAgSW4gYmxvY2tpbmcgbW9kZSwgdGhlIHRpbWVvdXQgZXhwaXJl ZA0KPiBiZWZvcmUgdGhlIHNwZWNpZmllZCBBUA0KPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGhhcyBmaW5pc2hlZCAqKi8gdHlwZWRlZg0KPiArRUZJX1NUQVRVUyAo RUZJQVBJICpFRklfTU1fRElTUEFUQ0hfUFJPQ0VEVVJFKSAoDQo+ICsgIElOIENPTlNUIEVGSV9N TV9NUF9QUk9UT0NPTCAgICAgICAgICAgICpUaGlzLA0KPiArICBJTiAgICAgICBFRklfQVBfUFJP Q0VEVVJFMiAgICAgICAgICAgICBQcm9jZWR1cmUsDQo+ICsgIElOICAgICAgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgIENwdU51bWJlciwNCj4gKyAgSU4gICAgICAgVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgICAgVGltZW91dEluTWljcm9zZWNvbmRzLA0KPiArICBJTiBPVVQgICBW T0lEICAgICAgICAgICAgICAgICAgICAgICAgICAqUHJvY2VkdXJlQXJndW1lbnRzIE9QVElPTkFM LA0KPiArICBJTiBPVVQgICBNTV9DT01QTEVUSU9OICAgICAgICAgICAgICAgICAqVG9rZW4sDQo+ ICsgIElOIE9VVCAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICpDUFVTdGF0dXMNCj4g Kyk7DQo+ICsNCj4gKy8qKg0KPiArICBUaGlzIHNlcnZpY2UgYWxsb3dzIHRoZSBjYWxsZXIgdG8g aW52b2tlIGEgcHJvY2VkdXJlIG9uIGFsbCBydW5uaW5nDQo+ICthcHBsaWNhdGlvbiBwcm9jZXNz b3JzIChBUCkNCj4gKyAgZXhjZXB0IHRoZSBjYWxsZXIuIFRoaXMgZnVuY3Rpb24gdXNlcyBhbiBv cHRpb25hbCB0b2tlbiBwYXJhbWV0ZXIgdG8NCj4gK3N1cHBvcnQgYmxvY2tpbmcgYW5kDQo+ICsg IG5vbmJsb2NraW5nIG1vZGVzLiBJZiB0aGUgdG9rZW4gaXMgcGFzc2VkIGludG8gdGhlIGNhbGws IHRoZSBmdW5jdGlvbg0KPiArd2lsbCBvcGVyYXRlIGluIGEgbm9uLWJsb2NraW5nDQo+ICsgIGZh c2hpb24gYW5kIHRoZSBjYWxsZXIgY2FuIGNoZWNrIGZvciBjb21wbGV0aW9uIHdpdGggQ2hlY2tP blByb2NlZHVyZSBvcg0KPiBXYWl0Rm9yUHJvY2VkdXJlLg0KPiArDQo+ICsgIEl0IGlzIG5vdCBu ZWNlc3NhcnkgZm9yIHRoZSBpbXBsZW1lbnRhdGlvbiB0byBydW4gdGhlIHByb2NlZHVyZSBvbiBl dmVyeQ0KPiBwcm9jZXNzb3Igb24gdGhlIHBsYXRmb3JtLg0KPiArICBQcm9jZXNzb3JzIHRoYXQg YXJlIHBvd2VyZWQgZG93biBpbiBzdWNoIGEgd2F5IHRoYXQgdGhleSBjYW5ub3QNCj4gKyByZXNw b25kIHRvIGludGVycnVwdHMsIG1heSBiZSAgZXhjbHVkZWQgZnJvbSB0aGUgYnJvYWRjYXN0Lg0K PiArDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgVGhpcyAgICAgICAgICAgICAgICAgICBUaGUg RUZJX01NX01QX1BST1RPQ09MIGluc3RhbmNlLg0KPiArICBAcGFyYW1baW5dICAgICBQcm9jZWR1 cmUgICAgICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgY29kZSBzdHJlYW0gdG8gYmUgcnVuIG9u DQo+IHRoZSBBUHMgdGhhdCBoYXZlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZW50ZXJlZCBNTS4gVHlwZSBFRklfQVBfUFJPQ0VEVVJFIGlzIGRlZmluZWQNCj4g YmVsb3cgaW4gcmVsYXRlZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGRlZmluaXRpb25zLg0KPiArICBAcGFyYW1baW5dICAgICBUaW1lb3V0SW5NaWNyb3NlY29u ZHMgIEluZGljYXRlcyB0aGUgdGltZSBsaW1pdCBpbg0KPiBtaWNyb3NlY29uZHMgZm9yIHRoZSBB UHMgdG8gZmluaXNoDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ZXhlY3V0aW9uIG9mIFByb2NlZHVyZSwgZWl0aGVyIGZvciBibG9ja2luZyBvciBub24tDQo+IGJs b2NraW5nIG1vZGUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg WmVybyBtZWFucyBpbmZpbml0eS4gSWYgdGhlIHRpbWVvdXQgZXhwaXJlcyBiZWZvcmUgYWxsDQo+ IEFQcyByZXR1cm4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm cm9tIFByb2NlZHVyZSwgdGhlbiBQcm9jZWR1cmUgb24gdGhlIGZhaWxlZCBBUHMgaXMNCj4gdGVy bWluYXRlZC4gSWYNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0 aGUgdGltZW91dCBleHBpcmVzIGluIGJsb2NraW5nIG1vZGUsIHRoZSBjYWxsIHJldHVybnMNCj4g RUZJX1RJTUVPVVQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg SWYgdGhlIHRpbWVvdXQgZXhwaXJlcyBpbiBub24tYmxvY2tpbmcgbW9kZSwgdGhlDQo+IHRpbWVv dXQgZGV0ZXJtaW5lZA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNhbiBiZSB0aHJvdWdoIENoZWNrT25Qcm9jZWR1cmUgb3INCj4gV2FpdEZvclByb2NlZHVyZS4N Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RlIHRoYXQgdGlt ZW91dCBzdXBwb3J0IGlzIG9wdGlvbmFsLiBXaGV0aGVyIGFuDQo+IGltcGxlbWVudGF0aW9uDQo+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHMgdGhpcyBm ZWF0dXJlIGNhbiBiZSBkZXRlcm1pbmVkIHZpYSB0aGUNCj4gQXR0cmlidXRlcyBkYXRhDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtYmVyLg0KPiArICBAcGFy YW1baW4sb3V0XSBQcm9jZWR1cmVBcmd1bWVudHMgICAgIEFsbG93cyB0aGUgY2FsbGVyIHRvIHBh c3MgYSBsaXN0IG9mDQo+IHBhcmFtZXRlcnMgdG8gdGhlIGNvZGUNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGlzIHJ1biBieSB0aGUgQVAuIEl0IGlzIGFu IG9wdGlvbmFsIGNvbW1vbiBtYWlsYm94DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYmV0d2VlbiBBUHMgYW5kIHRoZSBjYWxsZXIgdG8gc2hhcmUgaW5mb3JtYXRp b24uDQo+ICsgIEBwYXJhbVtpbixvdXRdIFRva2VuICAgICAgICAgICAgICAgICAgVGhpcyBpcyBw YXJhbWV0ZXIgaXMgYnJva2VuIGludG8gdHdvDQo+IGNvbXBvbmVudHM6DQo+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMS5Ub2tlbi0+Q29tcGxldGlvbiBpcyBhbiBv cHRpb25hbCBwYXJhbWV0ZXIgdGhhdA0KPiBhbGxvd3MgdGhlDQo+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyIHRvIGV4ZWN1dGUgdGhlIHByb2NlZHVyZSBp biBhIGJsb2NraW5nIG9yIG5vbi0NCj4gYmxvY2tpbmcNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBmYXNoaW9uLiBJZiBpdCBpcyBOVUxMIHRoZSBjYWxsIGlzIGJs b2NraW5nLCBhbmQgdGhlIGNhbGwgd2lsbA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG5vdCByZXR1cm4gdW50aWwgdGhlIEFQIGhhcyBjb21wbGV0ZWQgdGhlIHBy b2NlZHVyZS4gSWYNCj4gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgdG9rZW4gaXMgbm90IE5VTEwsIHRoZSBjYWxsIHdpbGwgcmV0dXJuIGltbWVkaWF0ZWx5 LiBUaGUNCj4gY2FsbGVyDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY2FuIGNoZWNrIHdoZXRoZXIgdGhlIHByb2NlZHVyZSBoYXMgY29tcGxldGVkIHdpdGgNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaGVja09uUHJvY2VkdXJl IG9yIFdhaXRGb3JQcm9jZWR1cmUuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMi5Ub2tlbi0+U3RhdHVzIFRoZSBpbXBsZW1lbnRhdGlvbiB1cGRhdGVzIHRoZQ0K PiBhZGRyZXNzIHBvaW50ZWQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhdCBieSB0aGlzIHZhcmlhYmxlIHdpdGggdGhlIHN0YXR1cyBjb2RlIHJldHVybmVkIGJ5 DQo+IFByb2NlZHVyZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHdoZW4gaXQgY29tcGxldGVzIGV4ZWN1dGlvbiBvbiB0aGUgdGFyZ2V0IEFQLCBvciB3aXRoDQo+ IEVGSV9USU1FT1VUDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg aWYgdGhlIFByb2NlZHVyZSBmYWlscyB0byBjb21wbGV0ZSB3aXRoaW4gdGhlIG9wdGlvbmFsDQo+ IHRpbWVvdXQuDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhl IGltcGxlbWVudGF0aW9uIHdpbGwgdXBkYXRlIHRoaXMgdmFyaWFibGUgd2l0aA0KPiBFRklfTk9U X1JFQURZDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpb3Ig dG8gc3RhcnRpbmcgUHJvY2VkdXJlIG9uIHRoZSB0YXJnZXQgQVANCj4gKyAgQHBhcmFtW2luLG91 dF0gQ1BVU3RhdHVzICAgICAgICAgICAgICBUaGlzIG9wdGlvbmFsIHBvaW50ZXIgbWF5IGJlIHVz ZWQgdG8gZ2V0DQo+IHRoZSBpbmRpdmlkdWFsIHN0YXR1cw0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybmVkIGJ5IGV2ZXJ5IEFQIHRoYXQgcGFydGljaXBh dGVkIGluIHRoZSBicm9hZGNhc3QuDQo+IFRoaXMNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwYXJhbWV0ZXIgaWYgdXNlZCBwcm92aWRlcyB0aGUgYmFzZSBhZGRy ZXNzIG9mIGFuIGFycmF5DQo+IHRvIGhvbGQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0aGUgRUZJX1NUQVRVUyB2YWx1ZSBvZiBlYWNoIEFQIGluIHRoZSBzeXN0 ZW0uIFRoZSBzaXplDQo+IG9mIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFycmF5IGNhbiBiZSBhc2NlcnRhaW5lZCBieSB0aGUNCj4gR2V0TnVtYmVyT2ZQ cm9jZXNzb3JzIGZ1bmN0aW9uLg0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIEFzIG1lbnRpb25lZCBhYm92ZSwgdGhlIGJyb2FkY2FzdCBtYXkgbm90IGluY2x1ZGUN Cj4gZXZlcnkgcHJvY2Vzc29yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaW4gdGhlIHN5c3RlbS4gU29tZSBpbXBsZW1lbnRhdGlvbnMgbWF5IGV4Y2x1ZGUNCj4g cHJvY2Vzc29ycyB0aGF0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaGF2ZSBiZWVuIHBvd2VyZWQgZG93biBpbiBzdWNoIGEgd2F5IHRoYXQgdGhleSBhcmUNCj4g bm90IHJlc3BvbnNpdmUNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB0byBpbnRlcnJ1cHRzLiBBZGRpdGlvbmFsbHkgdGhlIGJyb2FkY2FzdCBleGNsdWRlcyB0aGUN Cj4gcHJvY2Vzc29yDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg d2hpY2ggaXMgbWFraW5nIHRoZSBCcm9hZGNhc3RQcm9jZWR1cmUgY2FsbC4gRm9yIGV2ZXJ5DQo+ IGV4Y2x1ZGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv Y2Vzc29yLCB0aGUgYXJyYXkgZW50cnkgbXVzdA0KPiArIGNvbnRhaW4gYSB2YWx1ZSBvZiBFRklf Tk9UX1NUQVJURUQNCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAg ICAgIEluIHRoZSBibG9ja2luZyBjYXNlLCB0aGlzIGluZGljYXRlcyB0aGF0DQo+IFByb2NlZHVy ZSBoYXMgY29tcGxldGVkDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZXhlY3V0aW9uIG9uIHRoZSBBUHMuIEluIHRoZSBub24tYmxvY2tpbmcgY2FzZSB0aGlzDQo+ IGluZGljYXRlcyB0aGF0DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGhlIHByb2NlZHVyZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgc2NoZWR1bGVkIGZvcg0KPiBl eGVjdXRpb24gb24gdGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQVBzLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICAgIFByb2Nl ZHVyZSBvciBUb2tlbiBpcyBOVUxMLg0KPiArICBAcmV0dmFsIEVGSV9OT1RfUkVBRFkgICAgICAg ICAgICAgICAgIElmIGEgdGFyZ2V0IEFQIGlzIGJ1c3kgZXhlY3V0aW5nIGFub3RoZXINCj4gcHJv Y2VkdXJlLg0KPiArICBAcmV0dmFsIEVGSV9USU1FT1VUICAgICAgICAgICAgICAgICAgIEluIGJs b2NraW5nIG1vZGUsIHRoZSB0aW1lb3V0IGV4cGlyZWQNCj4gYmVmb3JlIGFsbCBlbmFibGVkIEFQ cyBoYXZlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNo ZWQuDQo+ICsgIEByZXR2YWwgRUZJX0FMUkVBRFlfU1RBUlRFRCAgICAgICAgICAgQmVmb3JlIHRo ZSBBUCBwcm9jZWR1cmUgYXNzb2NpYXRlZA0KPiB3aXRoIHRoZSBUb2tlbiBpcyBmaW5pc2hlZCwg dGhlDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtZSBUb2tl biBjYW5ub3QgYmUgdXNlZCB0byBkaXNwYXRjaCBvciBicm9hZGNhc3QNCj4gYW5vdGhlciBwcm9j ZWR1cmUuDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRVUw0KPiArKEVGSUFQ SSAqRUZJX01NX0JST0FEQ0FTVF9QUk9DRURVUkUpICgNCj4gKyAgSU4gQ09OU1QgRUZJX01NX01Q X1BST1RPQ09MICAgICAgICAgICAgKlRoaXMsDQo+ICsgIElOICAgICAgIEVGSV9BUF9QUk9DRURV UkUyICAgICAgICAgICAgIFByb2NlZHVyZSwNCj4gKyAgSU4gICAgICAgVUlOVE4gICAgICAgICAg ICAgICAgICAgICAgICAgVGltZW91dEluTWljcm9zZWNvbmRzLA0KPiArICBJTiBPVVQgICBWT0lE ICAgICAgICAgICAgICAgICAgICAgICAgICAqUHJvY2VkdXJlQXJndW1lbnRzIE9QVElPTkFMLA0K PiArICBJTiBPVVQgICBNTV9DT01QTEVUSU9OICAgICAgICAgICAgICAgICAqVG9rZW4sDQo+ICsg IElOIE9VVCAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICpDUFVTdGF0dXMNCj4gKyk7 DQo+ICsNCj4gKw0KPiArLyoqDQo+ICsgIFRoaXMgc2VydmljZSBhbGxvd3MgdGhlIGNhbGxlciB0 byBzZXQgYSBzdGFydHVwIHByb2NlZHVyZSB0aGF0IHdpbGwNCj4gK2JlIGV4ZWN1dGVkIHdoZW4g YW4gQVAgcG93ZXJzDQo+ICsgIHVwIGZyb20gYSBzdGF0ZSB3aGVyZSBjb3JlIGNvbmZpZ3VyYXRp b24gYW5kIGNvbnRleHQgaXMgbG9zdC4gVGhlDQo+ICtwcm9jZWR1cmUgaXMgZXhlY3V0aW9uIGhh cyB0aGUNCj4gKyAgZm9sbG93aW5nIHByb3BlcnRpZXM6DQo+ICsgIDEuIFRoZSBwcm9jZWR1cmUg ZXhlY3V0ZXMgYmVmb3JlIHRoZSBwcm9jZXNzb3IgaXMgaGFuZGVkIG92ZXIgdG8gdGhlDQo+IG9w ZXJhdGluZyBzeXN0ZW0uDQo+ICsgIDIuIEFsbCBwcm9jZXNzb3JzIGV4ZWN1dGUgdGhlIHNhbWUg c3RhcnR1cCBwcm9jZWR1cmUuDQo+ICsgIDMuIFRoZSBwcm9jZWR1cmUgbWF5IHJ1biBpbiBwYXJh bGxlbCB3aXRoIG90aGVyIHByb2NlZHVyZXMgaW52b2tlZA0KPiArdGhyb3VnaCB0aGUgZnVuY3Rp b25zIGluIHRoaXMNCj4gKyAgcHJvdG9jb2wsIG9yIHdpdGggcHJvY2Vzc29ycyB0aGF0IGFyZSBl eGVjdXRpbmcgYW4gTU0gaGFuZGxlciBvciBydW5uaW5nDQo+IGluIHRoZSBvcGVyYXRpbmcgc3lz dGVtLg0KPiArDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgIFRoaXMgICAgICAgICAgICAgICAg IFRoZSBFRklfTU1fTVBfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gICAgICBQ cm9jZWR1cmUgICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIGNvZGUgc3RyZWFtIHRvIGJlIHJ1 biBvbg0KPiB0aGUgZGVzaWduYXRlZCB0YXJnZXQgQVANCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9mIHRoZSBzeXN0ZW0uIFR5cGUgRUZJX0FQX1BST0NFRFVSRSBp cyBkZWZpbmVkDQo+IGJlbG93IGluIFZvbHVtZSAyDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICB3aXRoIHRoZSByZWxhdGVkIGRlZmluaXRpb25zIG9mDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTVBfU0VSVklDRVNfUFJPVE9D T0wuU3RhcnR1cEFsbEFQcy4NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIElmIGNhbGxlciBtYXkgcGFzcyBhIHZhbHVlIG9mIE5VTEwgdG8gZGVyZWdpc3RlciBhbnkN Cj4gZXhpc3RpbmcNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0 YXJ0dXAgcHJvY2VkdXJlLg0KPiArICBAcGFyYW1baW4sb3V0XSAgUHJvY2VkdXJlQXJndW1lbnRz ICAgQWxsb3dzIHRoZSBjYWxsZXIgdG8gcGFzcyBhIGxpc3Qgb2YNCj4gcGFyYW1ldGVycyB0byB0 aGUgY29kZSB0aGF0IGlzDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBydW4gYnkgdGhlIEFQLiBJdCBpcyBhbiBvcHRpb25hbCBjb21tb24gbWFpbGJveA0KPiBiZXR3 ZWVuIEFQcyBhbmQNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo ZSBjYWxsZXIgdG8gc2hhcmUgaW5mb3JtYXRpb24NCj4gKw0KPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgICAgICAgICAgICAgVGhlIFByb2NlZHVyZSBoYXMgYmVlbiBzZXQgc3VjY2Vzc2Z1 bGx5Lg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICAgVGhlIFByb2Nl ZHVyZSBpcyBOVUxMLg0KPiArKiovDQo+ICt0eXBlZGVmDQo+ICtFRklfU1RBVFVTDQo+ICsoRUZJ QVBJICpFRklfTU1fU0VUX1NUQVJUVVBfUFJPQ0VEVVJFKSAoDQo+ICsgIElOIENPTlNUIEVGSV9N TV9NUF9QUk9UT0NPTCAqVGhpcywNCj4gKyAgSU4gICAgICAgRUZJX0FQX1BST0NFRFVSRSAgIFBy b2NlZHVyZSwNCj4gKyAgSU4gT1VUICAgVk9JRCAgICAgICAgICAgICAgICpQcm9jZWR1cmVBcmd1 bWVudHMgT1BUSU9OQUwNCj4gKyk7DQo+ICsNCj4gKy8qKg0KPiArICBXaGVuIG5vbi1ibG9ja2lu ZyBleGVjdXRpb24gb2YgYSBwcm9jZWR1cmUgb24gYW4gQVAgaXMgaW52b2tlZCB3aXRoDQo+ICtE aXNwYXRjaFByb2NlZHVyZSwNCj4gKyAgdmlhIHRoZSB1c2Ugb2YgYSB0b2tlbiwgdGhpcyBmdW5j dGlvbiBjYW4gYmUgdXNlZCB0byBjaGVjayBmb3IgY29tcGxldGlvbiBvZg0KPiB0aGUgcHJvY2Vk dXJlIG9uIHRoZSBBUC4NCj4gKyAgVGhlIGZ1bmN0aW9uIHRha2VzIHRoZSB0b2tlbiB0aGF0IHdh cyBwYXNzZWQgaW50byB0aGUNCj4gK0Rpc3BhdGNoUHJvY2VkdXJlIGNhbGwuIElmIHRoZSBwcm9j ZWR1cmUNCj4gKyAgaXMgY29tcGxldGUsIGFuZCB0aGVyZWZvcmUgaXQgaXMgbm93IHBvc3NpYmxl IHRvIHJ1biBhbm90aGVyDQo+ICtwcm9jZWR1cmUgb24gdGhlIHNhbWUgQVAsIHRoaXMgZnVuY3Rp b24NCj4gKyAgcmV0dXJucyBFRklfU1VDRVNTLiBJbiB0aGlzIGNhc2UgdGhlIHN0YXR1cyByZXR1 cm5lZCBieSB0aGUgcHJvY2VkdXJlDQo+ICt0aGF0IGV4ZWN1dGVkIG9uIHRoZSBBUCBpcw0KPiAr ICByZXR1cm5lZCBpbiB0aGUgdG9rZW4ncyBTdGF0dXMgZmllbGQuIElmIHRoZSBwcm9jZWR1cmUg aGFzIG5vdCB5ZXQNCj4gK2NvbXBsZXRlZCwgdGhlbiB0aGlzIGZ1bmN0aW9uDQo+ICsgIHJldHVy bnMgRUZJX05PVF9SRUFEWS4NCj4gKw0KPiArICBXaGVuIGEgbm9uLWJsb2NraW5nIGV4ZWN1dGlv biBvZiBhIHByb2NlZHVyZSBpcyBpbnZva2VkIHdpdGgNCj4gKyBCcm9hZGNhc3RQcm9jZWR1cmUs IHZpYSB0aGUgIHVzZSBvZiBhIHRva2VuLCB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkDQo+ICsg dG8gY2hlY2sgZm9yIGNvbXBsZXRpb24gb2YgdGhlIHByb2NlZHVyZSBvbiBhbGwgdGhlICBicm9h ZGNhc3QgQVBzLg0KPiArIFRoZSBmdW5jdGlvbiB0YWtlcyB0aGUgdG9rZW4gdGhhdCB3YXMgcGFz c2VkIGludG8gdGhlDQo+ICsgQnJvYWRjYXN0UHJvY2VkdXJlICBjYWxsLiBJZiB0aGUgcHJvY2Vk dXJlIGlzIGNvbXBsZXRlIG9uIGFsbA0KPiArIGJyb2FkY2FzdCBBUHMgdGhpcyBmdW5jdGlvbiBy ZXR1cm5zIEVGSV9TVUNFU1MuIEluIHRoaXMgIGNhc2UgdGhlIFN0YXR1cw0KPiBmaWVsZCBpbiB0 aGUgdG9rZW4gcGFzc2VkIGludG8gdGhlIGZ1bmN0aW9uIHJlZmxlY3RzIHRoZSBvdmVyYWxsIHJl c3VsdCBvZiB0aGUNCj4gaW52b2NhdGlvbiwgd2hpY2ggbWF5IGJlIEVGSV9TVUNDRVNTLCBpZiBh bGwgZXhlY3V0aW9ucyBzdWNjZWVkZWQsIG9yIHRoZQ0KPiBmaXJzdCBvYnNlcnZlZCBmYWlsdXJl Lg0KPiArICBJZiB0aGUgcHJvY2VkdXJlIGhhcyBub3QgeWV0IGNvbXBsZXRlZCBvbiB0aGUgYnJv YWRjYXN0IEFQcywgdGhlDQo+ICsgZnVuY3Rpb24gcmV0dXJucyAgRUZJX05PVF9SRUFEWS4NCj4g Kw0KPiArICBAcGFyYW1baW5dICAgICAgVGhpcyAgICAgICAgICAgICAgICAgVGhlIEVGSV9NTV9N UF9QUk9UT0NPTCBpbnN0YW5jZS4NCj4gKyAgQHBhcmFtW2luXSAgICAgIFRva2VuICAgICAgICAg ICAgICAgIFRoaXMgcGFyYW1ldGVyIGRlc2NyaWJlcyB0aGUgdG9rZW4gdGhhdCB3YXMNCj4gcGFz c2VkIGludG8NCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3Bh dGNoUHJvY2VkdXJlIG9yIEJyb2FkY2FzdFByb2NlZHVyZS4NCj4gKw0KPiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgICAgICAgUHJvY2VkdXJlIGhhcyBjb21wbGV0ZWQuDQo+ICsg IEByZXR2YWwgRUZJX05PVF9SRUFEWSAgICAgICAgICAgICAgICBUaGUgUHJvY2VkdXJlIGhhcyBu b3QgY29tcGxldGVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICAg VG9rZW4gb3IgVG9rZW4tPkNvbXBsZXRpb24gaXMNCj4gTlVMTA0KPiArICBAcmV0dmFsIEVGSV9O T1RfRk9VTkQgICAgICAgICAgICAgICAgVG9rZW4gaXMgbm90IGN1cnJlbnRseSBpbiB1c2UgZm9y IGEgbm9uLQ0KPiBibG9ja2luZyBjYWxsDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJ X1NUQVRVUw0KPiArKEVGSUFQSSAqRUZJX0NIRUNLX0ZPUl9QUk9DRURVUkUpICgNCj4gKyAgSU4g Q09OU1QgRUZJX01NX01QX1BST1RPQ09MICAgICAgICAgICAgKlRoaXMsDQo+ICsgIElOICAgICAg IE1NX0NPTVBMRVRJT04gICAgICAgICAgICAgICAgIFRva2VuDQo+ICspOw0KPiArDQo+ICsvKioN Cj4gKyAgV2hlbiBhIG5vbi1ibG9ja2luZyBleGVjdXRpb24gb2YgYSBwcm9jZWR1cmUgb24gYW4g QVAgaXMgaW52b2tlZCB2aWENCj4gK0Rpc3BhdGNoUHJvY2VkdXJlLA0KPiArICB0aGlzIGZ1bmN0 aW9uIHdpbGwgYmxvY2sgdGhlIGNhbGxlciB1bnRpbCB0aGUgcmVtb3RlIHByb2NlZHVyZSBoYXMg Y29tcGxldGVkDQo+IG9uIHRoZSBkZXNpZ25hdGVkIEFQLg0KPiArICBUaGUgbm9uLWJsb2NraW5n IHByb2NlZHVyZSBpbnZvY2F0aW9uIGlzIGlkZW50aWZpZWQgYnkgdGhlIFRva2VuDQo+ICtwYXJh bWV0ZXIsIHdoaWNoIG11c3QgbWF0Y2ggdGhlDQo+ICsgIHRva2VuIHRoYXQgdXNlZCB3aGVuIERp c3BhdGNoUHJvY2VkdXJlIHdhcyBjYWxsZWQuIFVwb24gY29tcGxldGlvbg0KPiArdGhlIHN0YXR1 cyByZXR1cm5lZCBieQ0KPiArICB0aGUgcHJvY2VkdXJlIHRoYXQgZXhlY3V0ZWQgb24gdGhlIEFQ IGlzIHVzZWQgdG8gdXBkYXRlIHRoZSB0b2tlbidzDQo+IFN0YXR1cyBmaWVsZC4NCj4gKw0KPiAr ICBXaGVuIGEgbm9uLWJsb2NraW5nIGV4ZWN1dGlvbiBvZiBhIHByb2NlZHVyZSBvbiBhbiBBUCBp cyBpbnZva2VkIHZpYQ0KPiArIEJyb2FkY2FzdFByb2NlZHVyZSAgdGhpcyBmdW5jdGlvbiB3aWxs IGJsb2NrIHRoZSBjYWxsZXIgdW50aWwgdGhlDQo+ICsgcmVtb3RlIHByb2NlZHVyZSBoYXMgY29t cGxldGVkIG9uIGFsbCBvZiB0aGUgQVBzIHRoYXQgIGVudGVyZWQgTU0uIFRoZQ0KPiArIG5vbi1i bG9ja2luZyBwcm9jZWR1cmUgaW52b2NhdGlvbiBpcyBpZGVudGlmaWVkIGJ5IHRoZSBUb2tlbg0K PiArIHBhcmFtZXRlciwgd2hpY2ggIG11c3QgbWF0Y2ggdGhlIHRva2VuIHRoYXQgdXNlZCB3aGVu DQo+ICsgQnJvYWRjYXN0UHJvY2VkdXJlIHdhcyBjYWxsZWQuIFVwb24gY29tcGxldGlvbiB0aGUg IG92ZXJhbGwgc3RhdHVzDQo+ICsgcmV0dXJuZWQgYnkgdGhlIHByb2NlZHVyZXMgdGhhdCBleGVj dXRlZCBvbiB0aGUgYnJvYWRjYXN0IEFQIGlzIHVzZWQgdG8NCj4gdXBkYXRlIHRoZSAgdG9rZW4n cyBTdGF0dXMgZmllbGQuIFRoZSBvdmVyYWxsIHN0YXR1cyBtYXkgYmUgRUZJX1NVQ0NFU1MsIGlm IGFsbA0KPiBleGVjdXRpb25zIHN1Y2NlZWRlZCwgb3IgdGhlICBmaXJzdCBvYnNlcnZlZCBmYWls dXJlLg0KPiArDQo+ICsNCj4gKyAgQHBhcmFtW2luXSAgICAgIFRoaXMgICAgICAgICAgICAgICAg IFRoZSBFRklfTU1fTVBfUFJPVE9DT0wgaW5zdGFuY2UuDQo+ICsgIEBwYXJhbVtpbl0gICAgICBU b2tlbiAgICAgICAgICAgICAgICBUaGlzIHBhcmFtZXRlciBkZXNjcmliZXMgdGhlIHRva2VuIHRo YXQgd2FzDQo+IHBhc3NlZCBpbnRvDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBEaXNwYXRjaFByb2NlZHVyZSBvciBCcm9hZGNhc3RQcm9jZWR1cmUuDQo+ICsNCj4g KyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICAgICAgIFByb2NlZHVyZSBoYXMgY29t cGxldGVkLg0KPiArICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgICAgICAgVG9rZW4g b3IgVG9rZW4tPkNvbXBsZXRpb24gaXMNCj4gTlVMTA0KPiArICBAcmV0dmFsIEVGSV9OT1RfRk9V TkQgICAgICAgICAgICAgICAgVG9rZW4gaXMgbm90IGN1cnJlbnRseSBpbiB1c2UgZm9yIGEgbm9u LQ0KPiBibG9ja2luZyBjYWxsDQo+ICsNCj4gKyoqLw0KPiArdHlwZWRlZg0KPiArRUZJX1NUQVRV Uw0KPiArKEVGSUFQSSAqRUZJX1dBSVRfRk9SX1BST0NFRFVSRSkgKA0KPiArICBJTiBDT05TVCBF RklfTU1fTVBfUFJPVE9DT0wgICAgICAgICAgICAqVGhpcywNCj4gKyAgSU4gICAgICAgTU1fQ09N UExFVElPTiAgICAgICAgICAgICAgICAgVG9rZW4NCj4gKyk7DQo+ICsNCj4gKw0KPiArDQo+ICsv Ly8NCj4gKy8vLyBUaGUgTU0gTVAgcHJvdG9jb2wgcHJvdmlkZXMgYSBzZXQgb2YgZnVuY3Rpb25z IHRvIGFsbG93IGV4ZWN1dGlvbg0KPiArb2YgcHJvY2VkdXJlcyBvbiBwcm9jZXNzb3JzIHRoYXQg Ly8vIGhhdmUgZW50ZXJlZCBNTS4NCj4gKy8vLw0KPiArc3RydWN0IF9FRklfTU1fTVBfUFJPVE9D T0wgew0KPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmV2aXNpb247DQo+ ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVzOw0KPiArICBF RklfTU1fR0VUX05VTUJFUl9PRl9QUk9DRVNTT1JTICAgR2V0TnVtYmVyT2ZQcm9jZXNzb3JzOw0K PiArICBFRklfTU1fRElTUEFUQ0hfUFJPQ0VEVVJFICAgICAgICAgRGlzcGF0Y2hQcm9jZWR1cmU7 DQo+ICsgIEVGSV9NTV9CUk9BRENBU1RfUFJPQ0VEVVJFICAgICAgICBCcm9hZGNhc3RQcm9jZWR1 cmU7DQo+ICsgIEVGSV9NTV9TRVRfU1RBUlRVUF9QUk9DRURVUkUgICAgICBTZXRTdGFydHVwUHJv Y2VkdXJlOw0KPiArICBFRklfQ0hFQ0tfRk9SX1BST0NFRFVSRSAgICAgICAgICAgQ2hlY2tGb3JQ cm9jZWR1cmU7DQo+ICsgIEVGSV9XQUlUX0ZPUl9QUk9DRURVUkUgICAgICAgICAgICBXYWl0Rm9y UHJvY2VkdXJlOw0KPiArfTsNCj4gKw0KPiArZXh0ZXJuIEVGSV9HVUlEIGdFZmlNbU1wUHJvdG9j b2xHdWlkOw0KPiArDQo+ICsjZW5kaWYNCj4gZGlmZiAtLWdpdCBhL01kZVBrZy9NZGVQa2cuZGVj IGIvTWRlUGtnL01kZVBrZy5kZWMgaW5kZXgNCj4gNmM1NjMzNzVlZS4uYjM4MmVmZDU3OCAxMDA2 NDQNCj4gLS0tIGEvTWRlUGtnL01kZVBrZy5kZWMNCj4gKysrIGIvTWRlUGtnL01kZVBrZy5kZWMN Cj4gQEAgLTExNjcsNiArMTE2Nyw5IEBADQo+ICAgICMgUHJvdG9jb2xzIGRlZmluZWQgaW4gUEkg MS41Lg0KPiAgICAjDQo+IA0KPiArICAjIyBJbmNsdWRlL1Byb3RvY29sL01tTXAuaA0KPiArICBn RWZpTW1NcFByb3RvY29sR3VpZCA9IHsgMHg1ZDU0NTBkNywgMHg5OTBjLCAweDQxODAsIHsgMHhh OCwgMHgzLA0KPiArIDB4OGUsIDB4NjMsIDB4ZjAsIDB4NjAsIDB4ODMsIDB4NyB9fQ0KPiArDQo+ ICAgICMjIEluY2x1ZGUvUHJvdG9jb2wvTW1FbmRPZkR4ZS5oDQo+ICAgIGdFZmlNbUVuZE9mRHhl UHJvdG9jb2xHdWlkID0geyAweDI0ZTcwMDQyLCAweGQ1YzUsIDB4NDI2MCwgeyAweDhjLCAweDM5 LA0KPiAweGEsIDB4ZDMsIDB4YWEsIDB4MzIsIDB4ZTksIDB4M2QgfX0NCj4gDQo+IC0tDQo+IDIu MjEuMC53aW5kb3dzLjENCg0K