From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4E39D45B09; Fri, 11 Oct 2024 00:59:06 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D6460402E3; Fri, 11 Oct 2024 00:59:05 +0200 (CEST) Received: from frasgout.his.huawei.com (frasgout.his.huawei.com [185.176.79.56]) by mails.dpdk.org (Postfix) with ESMTP id 21465402D3 for ; Fri, 11 Oct 2024 00:59:04 +0200 (CEST) Received: from mail.maildlp.com (unknown [172.18.186.216]) by frasgout.his.huawei.com (SkyGuard) with ESMTP id 4XPlSf1Cr6z6L70g; Fri, 11 Oct 2024 06:54:42 +0800 (CST) Received: from frapeml100005.china.huawei.com (unknown [7.182.85.132]) by mail.maildlp.com (Postfix) with ESMTPS id 8D7F41400D8; Fri, 11 Oct 2024 06:59:03 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by frapeml100005.china.huawei.com (7.182.85.132) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.39; Fri, 11 Oct 2024 00:58:20 +0200 Received: from frapeml500007.china.huawei.com ([7.182.85.172]) by frapeml500007.china.huawei.com ([7.182.85.172]) with mapi id 15.01.2507.039; Fri, 11 Oct 2024 00:58:20 +0200 From: Konstantin Ananyev To: Ferruh Yigit , Dariusz Sosnowski , "NBU-Contact-Thomas Monjalon (EXTERNAL)" , Andrew Rybchenko CC: "dev@dpdk.org" , Bruce Richardson Subject: RE: [RFC 0/4] ethdev: rework config restore Thread-Topic: [RFC 0/4] ethdev: rework config restore Thread-Index: AQHbCaxnvJzcot6EwEidqZ9OS9qkZLJvWnWAgAeTsoCABDL0EIAAwm0AgAFT2bCAAGMBgIAA/pwAgAB0wwCAANexAIAAC/eAgAA7NQCAAAyNgIAAgrRQ Date: Thu, 10 Oct 2024 22:58:20 +0000 Message-ID: <0d526176545845c49d67a30855202f2f@huawei.com> References: <20240918092201.33772-1-dsosnowski@nvidia.com> <13747524-f073-4749-adbd-be1c7681dbcd@amd.com> <3833d9270fba43af9d17765056911940@huawei.com> <8a6f760c-8bc7-46cd-92e0-a8af66114e2d@amd.com> <5ef19db7-f6fe-4a48-8497-e17b33a262b5@amd.com> <6e2487af-5bf5-4a07-bc9d-2e6f1a1def19@amd.com> In-Reply-To: <6e2487af-5bf5-4a07-bc9d-2e6f1a1def19@amd.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.195.32.57] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org DQoNCmNvbmZpZyByZXN0b3JlDQo+ID4+DQo+ID4+IEV4dGVybmFsIGVtYWlsOiBVc2UgY2F1dGlv biBvcGVuaW5nIGxpbmtzIG9yIGF0dGFjaG1lbnRzDQo+ID4+DQo+ID4+DQo+ID4+IE9uIDEwLzEw LzIwMjQgMTowOCBQTSwgRGFyaXVzeiBTb3Nub3dza2kgd3JvdGU6DQo+ID4+Pj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBGZXJydWggWWlnaXQgPGZlcnJ1aC55aWdp dEBhbWQuY29tPg0KPiA+Pj4+IFNlbnQ6IFRodXJzZGF5LCBPY3RvYmVyIDEwLCAyMDI0IDAxOjE3 DQo+ID4+Pj4gVG86IERhcml1c3ogU29zbm93c2tpIDxkc29zbm93c2tpQG52aWRpYS5jb20+OyBL b25zdGFudGluIEFuYW55ZXYNCj4gPj4+PiA8a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb20+ OyBOQlUtQ29udGFjdC1UaG9tYXMgTW9uamFsb24NCj4gPj4+PiAoRVhURVJOQUwpIDx0aG9tYXNA bW9uamFsb24ubmV0PjsgQW5kcmV3IFJ5YmNoZW5rbw0KPiA+Pj4+IDxhbmRyZXcucnliY2hlbmtv QG9rdGV0bGFicy5ydT4NCj4gPj4+PiBDYzogZGV2QGRwZGsub3JnOyBCcnVjZSBSaWNoYXJkc29u IDxicnVjZS5yaWNoYXJkc29uQGludGVsLmNvbT4NCj4gPj4+PiBTdWJqZWN0OiBSZTogW1JGQyAw LzRdIGV0aGRldjogcmV3b3JrIGNvbmZpZyByZXN0b3JlDQo+ID4+Pj4NCj4gPj4+PiBFeHRlcm5h bCBlbWFpbDogVXNlIGNhdXRpb24gb3BlbmluZyBsaW5rcyBvciBhdHRhY2htZW50cw0KPiA+Pj4+ DQo+ID4+Pj4NCj4gPj4+PiBPbiAxMC85LzIwMjQgNToxOCBQTSwgRGFyaXVzeiBTb3Nub3dza2kg d3JvdGU6DQo+ID4+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+Pj4+Pj4gRnJv bTogRmVycnVoIFlpZ2l0IDxmZXJydWgueWlnaXRAYW1kLmNvbT4NCj4gPj4+Pj4+IFNlbnQ6IFdl ZG5lc2RheSwgT2N0b2JlciA5LCAyMDI0IDAzOjA4DQo+ID4+Pj4+PiBUbzogS29uc3RhbnRpbiBB bmFueWV2IDxrb25zdGFudGluLmFuYW55ZXZAaHVhd2VpLmNvbT47IERhcml1c3oNCj4gPj4+Pj4+ IFNvc25vd3NraSA8ZHNvc25vd3NraUBudmlkaWEuY29tPjsgTkJVLUNvbnRhY3QtVGhvbWFzIE1v bmphbG9uDQo+ID4+Pj4+PiAoRVhURVJOQUwpIDx0aG9tYXNAbW9uamFsb24ubmV0PjsgQW5kcmV3 IFJ5YmNoZW5rbw0KPiA+Pj4+Pj4gPGFuZHJldy5yeWJjaGVua29Ab2t0ZXRsYWJzLnJ1Pg0KPiA+ Pj4+Pj4gQ2M6IGRldkBkcGRrLm9yZzsgQnJ1Y2UgUmljaGFyZHNvbiA8YnJ1Y2UucmljaGFyZHNv bkBpbnRlbC5jb20+DQo+ID4+Pj4+PiBTdWJqZWN0OiBSZTogW1JGQyAwLzRdIGV0aGRldjogcmV3 b3JrIGNvbmZpZyByZXN0b3JlDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gRXh0ZXJuYWwgZW1haWw6IFVz ZSBjYXV0aW9uIG9wZW5pbmcgbGlua3Mgb3IgYXR0YWNobWVudHMNCj4gPj4+Pj4+DQo+ID4+Pj4+ Pg0KPiA+Pj4+Pj4gT24gMTAvOC8yMDI0IDY6MjEgUE0sIEtvbnN0YW50aW4gQW5hbnlldiB3cm90 ZToNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBXZSBoYXZlIGJlZW4gd29y a2luZyBvbiBvcHRpbWl6aW5nIHRoZSBsYXRlbmN5IG9mIGNhbGxzIHRvDQo+ID4+Pj4+Pj4+Pj4+ PiBydGVfZXRoX2Rldl9zdGFydCgpLCBvbiBwb3J0cyBzcGF3bmVkIGJ5IG1seDUgUE1ELiBNb3N0 IG9mDQo+ID4+Pj4+Pj4+Pj4+PiB0aGUgd29yayByZXF1aXJlcyBjaGFuZ2VzIGluIHRoZSBpbXBs ZW1lbnRhdGlvbiBvZg0KPiA+Pj4+Pj4+Pj4+Pj4gLmRldl9zdGFydCgpIFBNRCBjYWxsYmFjaywg YnV0IEkgYWxzbyB3YW50ZWQgdG8gc3RhcnQgYQ0KPiA+Pj4+Pj4+Pj4+Pj4gZGlzY3Vzc2lvbiBy ZWdhcmRpbmcgY29uZmlndXJhdGlvbiByZXN0b3JlLg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+ Pj4+Pj4+IHJ0ZV9ldGhfZGV2X3N0YXJ0KCkgZG9lcyBhIGZldyB0aGluZ3Mgb24gdG9wIG9mIGNh bGxpbmcNCj4gPj4+Pj4+Pj4+Pj4+IC5kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4gY2FsbGJhY2s6DQo+ ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gLSBCZWZvcmUgY2FsbGluZyBpdDoNCj4gPj4+ Pj4+Pj4+Pj4+ICAgICAtIGV0aF9kZXZfbWFjX3Jlc3RvcmUoKSAtIGlmIGRldmljZSBzdXBwb3J0 cw0KPiA+Pj4+Pj4+Pj4+Pj4gUlRFX0VUSF9ERVZfTk9MSVZFX01BQ19BRERSOw0KPiA+Pj4+Pj4+ Pj4+Pj4gLSBBZnRlciBjYWxsaW5nIGl0Og0KPiA+Pj4+Pj4+Pj4+Pj4gICAgIC0gZXRoX2Rldl9t YWNfcmVzdG9yZSgpIC0gaWYgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQNCj4gPj4+Pj4+Pj4+Pj4g UlRFX0VUSF9ERVZfTk9MSVZFX01BQ19BRERSOw0KPiA+Pj4+Pj4+Pj4+Pj4gICAgIC0gcmVzdG9y ZSBwcm9taXNjdW91cyBjb25maWcNCj4gPj4+Pj4+Pj4+Pj4+ICAgICAtIHJlc3RvcmUgYWxsIG11 bHRpY2FzdCBjb25maWcNCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBldGhfZGV2X21h Y19yZXN0b3JlKCkgaXRlcmF0ZXMgb3ZlciBhbGwga25vd24gTUFDIGFkZHJlc3NlcyAtDQo+ID4+ Pj4+Pj4+Pj4+PiBzdG9yZWQgaW4gcnRlX2V0aF9kZXZfZGF0YS5tYWNfYWRkcnMgYXJyYXkgLSBh bmQgY2FsbHMNCj4gPj4+Pj4+Pj4+Pj4+IC5tYWNfYWRkcl9zZXQoKSBhbmQgLm1hY19hZGRyX2Fk ZCgpIGNhbGxiYWNrcyB0byBhcHBseSB0aGVzZQ0KPiA+Pj4+Pj4+Pj4+Pj4gTUFDDQo+ID4+Pj4+ PiBhZGRyZXNzZXMuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gUHJvbWlzY3VvdXMg Y29uZmlnIHJlc3RvcmUgY2hlY2tzIGlmIHByb21pc2N1b3VzIG1vZGUgaXMNCj4gPj4+Pj4+Pj4+ Pj4+IGVuYWJsZWQgb3Igbm90LCBhbmQgY2FsbHMgLnByb21pc2N1b3VzX2VuYWJsZSgpIG9yDQo+ ID4+Pj4+Pj4+Pj4+PiAucHJvbWlzY3VvdXNfZGlzYWJsZSgpDQo+ID4+Pj4+PiBjYWxsYmFjay4N Cj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBBbGwgbXVsdGljYXN0IGNvbmZpZyByZXN0 b3JlIGNoZWNrcyBpZiBhbGwgbXVsdGljYXN0IG1vZGUgaXMNCj4gPj4+Pj4+Pj4+Pj4+IGVuYWJs ZWQgb3Igbm90LCBhbmQgY2FsbHMgLmFsbG11bHRpY2FzdF9lbmFibGUoKSBvcg0KPiA+Pj4+Pj4+ Pj4+Pj4gLmFsbG11bHRpY2FzdF9kaXNhYmxlKCkNCj4gPj4+Pj4+IGNhbGxiYWNrLg0KPiA+Pj4+ Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4+IENhbGxiYWNrcyBhcmUgY2FsbGVkIGRpcmVjdGx5IGlu IGFsbCBvZiB0aGVzZSBjYXNlcywgdG8NCj4gPj4+Pj4+Pj4+Pj4+IGJ5cGFzcyB0aGUgY2hlY2tz IGZvciBhcHBseWluZyB0aGUgc2FtZSBjb25maWd1cmF0aW9uLCB3aGljaA0KPiA+Pj4+Pj4+Pj4+ Pj4gZXhpc3QgaW4gcmVsZXZhbnQNCj4gPj4+Pj4+IEFQSXMuDQo+ID4+Pj4+Pj4+Pj4+PiBDaGVj a3MgYXJlIGJ5cGFzc2VkIHRvIGZvcmNlIGRyaXZlcnMgdG8gcmVhcHBseSB0aGUgY29uZmlndXJh dGlvbi4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBMZXQncyBjb25zaWRlciB3aGF0 IGhhcHBlbnMgaW4gdGhlIGZvbGxvd2luZyBzZXF1ZW5jZSBvZiBBUEkgY2FsbHMuDQo+ID4+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gMS4gcnRlX2V0aF9kZXZfY29uZmlndXJlKCkNCj4gPj4+ Pj4+Pj4+Pj4+IDIuIHJ0ZV9ldGhfdHhfcXVldWVfc2V0dXAoKQ0KPiA+Pj4+Pj4+Pj4+Pj4gMy4g cnRlX2V0aF9yeF9xdWV1ZV9zZXR1cCgpDQo+ID4+Pj4+Pj4+Pj4+PiA0LiBydGVfZXRoX3Byb21p c2N1b3VzX2VuYWJsZSgpDQo+ID4+Pj4+Pj4+Pj4+PiAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+ cHJvbWlzY3VvdXNfZW5hYmxlKCkNCj4gPj4+Pj4+Pj4+Pj4+ICAgICAtIFN0b3JlcyBwcm9taXNj dW91cyBzdGF0ZSBpbiBkZXYtPmRhdGEtPnByb21pc2N1b3VzIDUuDQo+ID4+Pj4+Pj4+Pj4+PiBy dGVfZXRoX2FsbG11bHRpY2FzdF9lbmFibGUoKQ0KPiA+Pj4+Pj4+Pj4+Pj4gICAgIC0gQ2FsbCBk ZXYtPmRldl9vcHMtPmFsbG11bHRpY2FzdF9lbmFibGUoKQ0KPiA+Pj4+Pj4+Pj4+Pj4gICAgIC0g U3RvcmVzIGFsbG11bHRpY2FzdCBzdGF0ZSBpbiBkZXYtPmRhdGEtPmFsbG11bHRpY2FzdCA2Lg0K PiA+Pj4+Pj4+Pj4+Pj4gcnRlX2V0aF9kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+Pj4+Pj4gICAgIC0g Q2FsbCBkZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ID4+Pj4+Pj4+Pj4+PiAgICAgLSBDYWxs IGRldi0+ZGV2X29wcy0+bWFjX2FkZHJfc2V0KCkgLSBhcHBseSBkZWZhdWx0IE1BQyBhZGRyZXNz DQo+ID4+Pj4+Pj4+Pj4+PiAgICAgLSBDYWxsIGRldi0+ZGV2X29wcy0+cHJvbWlzY3VvdXNfZW5h YmxlKCkNCj4gPj4+Pj4+Pj4+Pj4+ICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5hbGxtdWx0aWNh c3RfZW5hYmxlKCkNCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBFdmVuIHRob3VnaCBh bGwgY29uZmlndXJhdGlvbiBpcyBhdmFpbGFibGUgaW4gZGV2LT5kYXRhIGFmdGVyDQo+ID4+Pj4+ Pj4+Pj4+PiBzdGVwIDUsIGxpYnJhcnkgZm9yY2VzIHJlYXBwbHlpbmcgdGhpcyBjb25maWd1cmF0 aW9uIGluIHN0ZXAgNi4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBJbiBtbHg1IFBN RCBjYXNlIGFsbCByZWxldmFudCBjYWxsYmFja3MgcmVxdWlyZSBjb21tdW5pY2F0aW9uDQo+ID4+ Pj4+Pj4+Pj4+PiB3aXRoIHRoZSBrZXJuZWwgZHJpdmVyLCB0byBjb25maWd1cmUgdGhlIGRldmlj ZSAobWx4NSBQTUQNCj4gPj4+Pj4+Pj4+Pj4+IG11c3QgY3JlYXRlL2Rlc3Ryb3kgbmV3IGtlcm5l bCBmbG93IHJ1bGVzIGFuZC9vciBjaGFuZ2UgbmV0ZGV2DQo+ID4+IGNvbmZpZykuDQo+ID4+Pj4+ Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4gbWx4NSBQTUQgaGFuZGxlcyBhcHBseWluZyBhbGwgY29u ZmlndXJhdGlvbiBpbiAuZGV2X3N0YXJ0KCksDQo+ID4+Pj4+Pj4+Pj4+PiBzbyB0aGUgZm9sbG93 aW5nIGZvcmNlZCBjYWxsYmFja3MgZm9yY2UgYWRkaXRpb25hbA0KPiA+Pj4+Pj4+Pj4+Pj4gY29t bXVuaWNhdGlvbiB3aXRoIHRoZSBrZXJuZWwuIFRoZQ0KPiA+Pj4+Pj4+Pj4+PiBzYW1lIGNvbmZp Z3VyYXRpb24gaXMgYXBwbGllZCBtdWx0aXBsZSB0aW1lcy4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+Pj4+PiBBcyBhbiBvcHRpbWl6YXRpb24sIG1seDUgUE1EIGNvdWxkIGNoZWNrIGlmIGEg Z2l2ZW4NCj4gPj4+Pj4+Pj4+Pj4+IGNvbmZpZ3VyYXRpb24gd2FzIGFwcGxpZWQsIGJ1dCB0aGlz IHdvdWxkIGR1cGxpY2F0ZSB0aGUNCj4gPj4+Pj4+Pj4+Pj4+IGZ1bmN0aW9uYWxpdHkgb2YgdGhl IGxpYnJhcnkgKGZvciBleGFtcGxlDQo+ID4+Pj4+Pj4+Pj4+PiBydGVfZXRoX3Byb21pc2N1b3Vz X2VuYWJsZSgpIGRvZXMgbm90IGNhbGwgdGhlIGRyaXZlciBpZg0KPiA+Pj4+Pj4+Pj4+Pj4gZGV2 LT5kYXRhLT5wcm9taXNjdW91cyBpcyBzZXQpLg0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+ Pj4+IFF1ZXN0aW9uOiBTaW5jZSBhbGwgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXMgYXZhaWxhYmxl IGJlZm9yZQ0KPiA+Pj4+Pj4+Pj4+Pj4gLmRldl9zdGFydCgpIGNhbGxiYWNrIGlzIGNhbGxlZCwg d2h5IGV0aGRldiBsaWJyYXJ5IGRvZXMgbm90DQo+ID4+Pj4+Pj4+Pj4+PiBleHBlY3QgLmRldl9z dGFydCgpIHRvDQo+ID4+Pj4+Pj4+Pj4+IHRha2UgdGhpcyBjb25maWd1cmF0aW9uIGludG8gYWNj b3VudD8NCj4gPj4+Pj4+Pj4+Pj4+IEluIG90aGVyIHdvcmRzLCB3aHkgbGlicmFyeSBoYXMgdG8g cmVhcHBseSB0aGUgY29uZmlndXJhdGlvbj8NCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+ PiBJIGNvdWxkIG5vdCBmaW5kIGFueSBwYXJ0aWN1bGFyIHJlYXNvbiB3aHkgY29uZmlndXJhdGlv bg0KPiA+Pj4+Pj4+Pj4+Pj4gcmVzdG9yZSBleGlzdHMgYXMgcGFydCBvZiB0aGUgcHJvY2VzcyAo aXQgd2FzIGluIHRoZSBpbml0aWFsIERQREsNCj4gPj4gY29tbWl0KS4NCj4gPj4+Pj4+Pj4+Pj4+ DQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IE15IGFzc3VtcHRpb24gaXMgLmRldl9zdG9w KCkgY2F1c2UgdGhlc2UgdmFsdWVzIHJlc2V0IGluIHNvbWUNCj4gPj4+Pj4+Pj4+Pj4gZGV2aWNl cywgc28NCj4gPj4+Pj4+Pj4+Pj4gLmRldl9zdGFydCgpIHJlc3RvcmVzIHRoZW0gYmFjay4NCj4g Pj4+Pj4+Pj4+Pj4gQEJydWNlIG9yIEBLb25zdGFudGluIG1heSByZW1lbWJlciB0aGUgaGlzdG9y eS4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+PiBZZXAsIGFzIEkgcmVtZW1iZXIsIGF0IGxlYXN0 IHNvbWUgSW50ZWwgUE1EcyBjYWxsaW5nIGh3X3Jlc2V0KCkNCj4gPj4+Pj4+Pj4+IGFkDQo+ID4+ Pj4+Pj4+PiBkZWNfc3RvcCgpIGFuZCBldmVuIGRldl9zdGFydCgpIHRvIG1ha2Ugc3VyZSB0aGF0 IEhXIGlzIGluIGENCj4gPj4+Pj4+Pj4+IGNsZWFuDQo+ID4+Pj4+Pj4+PiAoa25vd24pDQo+ID4+ Pj4+PiBzdGF0ZS4NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IEJ1 dCBJIGFncmVlIHRoaXMgaXMgZGV2aWNlIHNwZWNpZmljIGJlaGF2aW9yLCBhbmQgY2FuIGJlDQo+ ID4+Pj4+Pj4+Pj4+IG1hbmFnZWQgYnkgd2hhdCBkZXZpY2UgcmVxdWlyZXMuDQo+ID4+Pj4+Pj4+ Pg0KPiA+Pj4+Pj4+Pj4gUHJvYmFibHkgeWVzLg0KPiA+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+Pj4N Cj4gPj4+Pj4+Pj4+Pj4+IFRoZSBwYXRjaGVzIGluY2x1ZGVkIGluIHRoaXMgUkZDLCBwcm9wb3Nl IGEgbWVjaGFuaXNtIHdoaWNoDQo+ID4+Pj4+Pj4+Pj4+PiB3b3VsZCBoZWxwIHdpdGggbWFuYWdp bmcgd2hpY2ggZHJpdmVycyByZWx5IG9uIGZvcmNlZnVsDQo+ID4+Pj4+Pj4+Pj4+PiBjb25maWd1 cmF0aW9uDQo+ID4+Pj4gcmVzdG9yZS4NCj4gPj4+Pj4+Pj4+Pj4+IERyaXZlcnMgY291bGQgYWR2 ZXJ0aXNlIGlmIGZvcmNlZnVsIGNvbmZpZ3VyYXRpb24gcmVzdG9yZSBpcw0KPiA+Pj4+Pj4+Pj4+ Pj4gbmVlZGVkIHRocm91Z2ggYFJURV9FVEhfREVWXypfRk9SQ0VfUkVTVE9SRWAgZGV2aWNlIGZs YWcuIElmDQo+ID4+Pj4+Pj4+Pj4+PiB0aGlzIGZsYWcgaXMgc2V0LCB0aGVuIHRoZSBkcml2ZXIg aW4gcXVlc3Rpb24gcmVxdWlyZXMgZXRoZGV2DQo+ID4+Pj4+Pj4+Pj4+PiB0byBmb3JjZWZ1bGx5 IHJlc3RvcmUNCj4gPj4+Pj4+Pj4+Pj4gY29uZmlndXJhdGlvbi4NCj4gPj4+Pj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+IE9LIHRvIHVzZSBmbGFnIGZvciBpdCwgYnV0IG5v dCBzdXJlIGFib3V0IHVzaW5nICdkZXZfaW5mby0+ZGV2X2ZsYWdzJw0KPiA+Pj4+Pj4+Pj4+PiAo UlRFX0VUSF9ERVZfKikgZm9yIHRoaXMsIGFzIHRoaXMgZmxhZyBpcyBzaGFyZWQgd2l0aCB1c2Vy IGFuZA0KPiA+Pj4+Pj4+Pj4+PiB0aGlzIGlzIGFsbCBkcGRrIGludGVybmFsLg0KPiA+Pj4+Pj4+ Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBXaGF0IGFib3V0IHRvIGhhdmUgYSBkZWRpY2F0ZWQgZmxhZyBm b3IgaXQ/IFdlIGNhbiBoYXZlIGENCj4gPj4+Pj4+Pj4+Pj4gZGVkaWNhdGVkIHNldCBvZiBmbGFn IHZhbHVlcyBmb3IgcmVzdG9yZS4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IEFncmVlZC4g V2hhdCBkbyB5b3UgdGhpbmsgYWJvdXQgdGhlIGZvbGxvd2luZz8NCj4gPj4+Pj4+Pj4+DQo+ID4+ Pj4+Pj4+PiBJbnN0ZWFkIG9mIGV4cG9zaW5nIHRoYXQsIGNhbiB3ZSBwcm9iYWJseSBtYWtlIGl0 IHRyYW5zcGFyZW50IHRvDQo+ID4+Pj4+Pj4+PiB0aGUgdXNlciBhbmQgcHJvYmFibHkgZXRoZGV2 IGxheWVyIHRvbz8NCj4gPj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ICsxIHRvIG1h a2UgaXQgdHJhbnNwYXJlbnQgdG8gdXNlciwgYnV0IG5vdCBzdXJlIGlmIHdlIGNhbiBtYWtlIGl0 DQo+ID4+Pj4+Pj4+IHRyYW5zcGFyZW50IHRvIGV0aGRldiBsYXllci4NCj4gPj4+Pj4+Pg0KPiA+ Pj4+Pj4+IEp1c3QgdG8gYmUgY2xlYXI6DQo+ID4+Pj4+Pj4gTGV0IHNheSwgdXNpbmcgZXhhbXBs ZSBmcm9tIGFib3ZlOg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gIHJ0ZV9ldGhfZGV2X3N0YXJ0KCkN Cj4gPj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ID4+Pj4+ Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5tYWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRlZmF1 bHQgTUFDIGFkZHJlc3MNCj4gPj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPnByb21p c2N1b3VzX2VuYWJsZSgpDQo+ID4+Pj4+Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5hbGxt dWx0aWNhc3RfZW5hYmxlKCkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IFdlIHByb2JhYmx5IGNhbiBp bnRyb2R1Y2UgZXRoZGV2IGludGVybmFsIGZ1bmN0aW9uIChzdGlsbCB2aXNpYmxlDQo+ID4+Pj4+ Pj4gdG8NCj4gPj4+Pj4+PiBQTURzKSB0aGF0IHdvdWxkIGRvIGxhc3QgMyBzdGVwczoNCj4gPj4+ Pj4+PiBldGhkZXZfcmVwbGF5X3VzZXJfY29uZiguLi4pDQo+ID4+Pj4+Pj4gICAgICAtIENhbGwg ZGV2LT5kZXZfb3BzLT5tYWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRlZmF1bHQgTUFDIGFkZHJlc3MN Cj4gPj4+Pj4+PiAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPnByb21pc2N1b3VzX2VuYWJsZSgp DQo+ID4+Pj4+Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5hbGxtdWx0aWNhc3RfZW5hYmxl KCkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEFuZCBsZXQgUE1EIGl0c2VsZiB0byBkZWNpZGUgZG9l cyBpdCBuZWVkcyB0byBjYWxsIGl0IGF0IGRldl9zdGFydCgpIG9yIG5vdC4NCj4gPj4+Pj4+PiBT byBpdCB3aWxsIGJlY29tZToNCj4gPj4+Pj4+PiBydGVfZXRoX2Rldl9zdGFydCgpDQo+ID4+Pj4+ Pj4gICAgICAtIENhbGwgZGV2LT5kZXZfb3BzLT5kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+ICAgICAg IC1DYWxsIGV0aGRldl9yZXBsYXlfdXNlcl9jb25mKC4pDQo+ID4+Pj4+Pj4gICAgICAgICAgICAg ICAtIENhbGwgZGV2LT5kZXZfb3BzLT5tYWNfYWRkcl9zZXQoKSAtIGFwcGx5IGRlZmF1bHQgTUFD IGFkZHJlc3MNCj4gPj4+Pj4+PiAgICAgICAgICAgICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPnBy b21pc2N1b3VzX2VuYWJsZSgpDQo+ID4+Pj4+Pj4gICAgICAgICAgICAgICAtQ2FsbCBkZXYtPmRl dl9vcHMtPmFsbG11bHRpY2FzdF9lbmFibGUoKQ0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gRm9yIFBN RHMgdGhhdCBkbyBuZWVkIHRvIHJlc3RvcmUgdXNlciBwcm92aWRlZCBjb25maWcgQW5kDQo+ID4+ Pj4+Pj4gcnRlX2V0aF9kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4+ICAgICAgLSBDYWxsIGRldi0+ZGV2 X29wcy0+ZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+Pg0KPiA+Pj4+Pj4+IEZvciB0aG9zZSB3aG8gZG8g bm90Lg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gT0ssIGdvdCBpdCB3aGF0IHlvdSBt ZWFuLg0KPiA+Pj4+Pj4gUHVzaGluZyByZXN0b3JlIGZ1bmN0aW9uYWxpdHkgdG8gUE1EcyB3b3Jr cywgYnV0IHRoaXMgbWF5IGJlIGRvaW5nDQo+ID4+Pj4+PiByZWR1bmRhbnQgd29yayBvbiBlYWNo IFBNRC4NCj4gPj4+Pj4+DQo+ID4+Pj4+PiBJbnN0ZWFkIERhcml1c3ogc3VnZ2VzdHMgUE1EIHRv IHByb3ZpZGUgYSBmbGFnIHRvIGVodGRldiB0byB3aGF0IHRvDQo+ID4+Pj4+PiByZXN0b3JlIGFu ZCBjb21tb24gY29kZSBpbiBldGhkZXYgZG9lcyB0aGUgd29yay4NCj4gPj4+Pj4+IE15IGJlbG93 IGRlZGljYXRlZCBkYXRhIHN0cnVjdCBjb21tZW50IGlzIHRvIGhhdmUgdGhpcyBmbGFnIGluIGEN Cj4gPj4+Pj4+IG5ldyBzdHJ1Y3QsIG92ZXJhbGwgbGlrZSBmb2xsb3dpbmc6DQo+ID4+Pj4+Pg0K PiA+Pj4+Pj4gcnRlX2V0aF9kZXZfc3RhcnQoKQ0KPiA+Pj4+Pj4gICAgLSBDYWxsIGRldi0+ZGV2 X29wcy0+ZGV2X3N0YXJ0KCkNCj4gPj4+Pj4+ICAgIC0gQ2FsbCBkZXYtPmRldl9vcHMtPmdldF9y ZXN0b3JlX2ZsYWdzKGV0aGRldiwgUlRFX0VUSF9TVEFSVCwgJmZsYWdzKQ0KPiA+Pj4+Pj4gICAg LSBpZiAoZmxhZ3MgJiBNQUMpIGRldi0+ZGV2X29wcy0+bWFjX2FkZHJfc2V0KCkNCj4gPj4+Pj4+ ICAgIC0gaWYgKGZsYWdzICYgUFJPTUlTQykgZGV2LT5kZXZfb3BzLT5wcm9taXNjdW91c19lbmFi bGUoKQ0KPiA+Pj4+Pj4gICAgLSAuLi4NCj4gPj4+Pj4NCj4gPj4+Pj4gQ291bGQgeW91IHBsZWFz ZSBleHBsYWluIHdoYXQgaXMgdGhlIGJlbmVmaXQgb2YgZXhwb3NpbmcgZmxhZ3MNCj4gPj4+Pj4g dGhyb3VnaCBkZXZfb3BzDQo+ID4+Pj4gY2FsbGJhY2sgdnMgYSBkZWRpY2F0ZWQgZmxhZ3MgZmll bGQgaW4gcnRlX2V0aF9kZXZfZGF0YT8NCj4gPj4+Pj4gSW4gYm90aCBzb2x1dGlvbnM6DQo+ID4+ Pj4+IC0gY29uZmlnIHJlc3RvcmUgaXMgdHJhbnNwYXJlbnQgdG8gdGhlIHVzZXIsDQo+ID4+Pj4+ IC0gZHJpdmVycyBjYW4gb21pdCBjb25maWcgcmVzdG9yZSAoZWl0aGVyIGJ5IG5vdCBpbXBsZW1l bnRpbmcgdGhlDQo+ID4+Pj4+IGNhbGxiYWNrIG9yIG5vdCBwcm92aWRpbmcgdGhlIGZsYWdzKSwN Cj4gPj4+Pj4gLSBhbiBBQkkgY2hhbmdlIGlzIGludHJvZHVjZWQgKG5vdCBhIGh1Z2UgY29uY2Vy biwgYXQgbGVhc3QgZm9yIDI0LjExKS4NCj4gPj4+Pj4NCj4gPj4+Pj4gSSB1bmRlcnN0YW5kIHRo YXQgbXkgaW5pdGlhbCBwcm9wb3NhbCB3aXRoICJpbnRlcm5hbF9mbGFncyIgd2FzIHRvbw0KPiA+ Pj4+PiB2YWd1ZSwgYnV0IHJlbmFtaW5nIGFuZCBzcGxpdHRpbmcgdGhpcyBmaWVsZCBpbnRvOg0K PiA+Pj4+Pg0KPiA+Pj4+PiAtIGRldl9zdGFydF9yZXN0b3JlX2ZsYWdzDQo+ID4+Pj4+IC0gZGV2 X3Jlc2V0X3Jlc3RvcmVfZmxhZ3MNCj4gPj4+Pj4gLSBhbmQgc28gb24uLi4NCj4gPj4+Pj4NCj4g Pj4+Pj4gc2VlbXMgc3VmZmljaWVudCwgYXQgbGVhc3QgaW4gbXkgb3Bpbmlvbi4NCj4gPj4+Pj4N Cj4gPj4+Pg0KPiA+Pj4+IEhpIERhcml1c3osDQo+ID4+Pj4NCj4gPj4+PiBQdXR0aW5nIGZsYWdz IHRvIHJ0ZV9ldGhfZGV2X2RhdGEgd29ya3MsIGFuZCBpdCBpcyBlYXNpZXIgc2luY2UgdGhlcmUN Cj4gPj4+PiBpcyBkaXJlY3QgYWNjZXNzIGZyb20gcnRlX2V0aF9kZXYgdG8gcnRlX2V0aF9kZXZf ZGF0YSwgc28geW91IGRvbid0DQo+ID4+Pj4gbmVlZCBuZXcgZGV2X29wcy4gU28gdGhpcyBpcyBh IHZhbGlkIG9wdGlvbi4NCj4gPj4+Pg0KPiA+Pj4+IEJ1dCBiZW5lZml0IG9mIG5ldyBkZXZfb3Bz IGlzIHRvIGtlZXAgInN0cnVjdCBydGVfZXRoX2Rldl9kYXRhIiBjbGVhbi4NCj4gPj4+Pg0KPiA+ Pj4+ICJzdHJ1Y3QgcnRlX2V0aF9kZXZfZGF0YSIgaXMgaW50ZWdyYWwgZGF0YSBzdHJ1Y3R1cmUg Zm9yIGV0aGRldiBhbmQNCj4gPj4+PiBpdCBpcyB1c2VkIGluIG11bHRpcGxlIGxvY2F0aW9ucywg bW9zdGx5IHJlbGF0ZWQgdG8gdGhlIGRhdGFwYXRoIGFuZA0KPiA+Pj4+IGFsbCBkcml2ZXJzIG5l ZWRzIHRvIGRlYWwgd2l0aCBmaWVsZHMgb2YgdGhpcyBzdHJ1Y3QuDQo+ID4+Pj4gTGlrZSBbcnhd X3F1ZXVlcywgZGV2X3ByaXZhdGUsIGRldl9jb25mIGFsbCBpbXBvcnRhbnQgYW5kIHVzZWQgYSBs b3QuDQo+ID4+Pj4NCj4gPj4+PiBJIHdhbnQgdG8gcHJvdGVjdCAic3RydWN0IHJ0ZV9ldGhfZGV2 X2RhdGEiIGZyb20gbm9pc2UgYXMgbXVjaCBhcw0KPiA+Pj4+IHBvc3NpYmxlLCB0aG91Z2ggd2hh dCBpcyBub2lzZSBpcyBub3QgYWx3YXlzIHRoYXQgY2xlYXIuDQo+ID4+Pj4NCj4gPj4+PiBUaGlz IHJlc3RvcmUgZmxhZyBpcyBub3QgY3JpdGljYWwsIGFuZCBJIGV4cGVjdCBtb3N0IG9mIHRoZSBk cml2ZXJzDQo+ID4+Pj4gd29uJ3QgY2FyZSBhbmQgcG9wdWxhdGUgdGhpcyByZXN0b3JlIGZsYWcg YXQgYWxsLiBUaGF0IGlzIHdoeSB0byBtZQ0KPiA+Pj4+IGl0IGlzIGJldHRlciBoYXZlIGRlZGlj YXRlZCBzdHJ1Y3QgZm9yIGl0IGFuZCBvbmx5IGRyaXZlcnMgY2FyZSBhYm91dCByZXN0b3JlDQo+ ID4+IGZlYXR1cmUga25vdyBpdC4NCj4gPj4+DQo+ID4+PiBJIHNlZS4gVGhhbmsgeW91IHZlcnkg bXVjaCBmb3IgdGhlIGV4cGxhbmF0aW9uLg0KPiA+Pj4NCj4gPj4+IEluIHRoaXMgY2FzZSwgaXQg bG9va3MgbGlrZSBhZGRpbmcgdGhpcyB0byBkZXZfb3BzIGlzIHRoZSB3YXkgdG8gZ28uDQo+ID4+ Pg0KPiA+Pj4gU28sIHN1bW1hcml6aW5nIGl0IGFsbDoNCj4gPj4+DQo+ID4+PiAxLiBkZXZfb3Bz IHNob3VsZCBiZSBleHRlbmRlZCB3aXRoIGEgY2FsbGJhY2sgd2l0aCB0aGUgZm9sbG93aW5nIHNp Z25hdHVyZSBhbmQNCj4gPj4gZW51bXMvZmxhZ3M6DQo+ID4+Pg0KPiA+Pj4gZW51bSBydGVfZXRo X2Rldl9vcGVyYXRpb24gb3Agew0KPiA+Pj4gICAgICAgUlRFX0VUSF9TVEFSVCwNCj4gPj4+ICAg ICAgIFJURV9FVEhfU1RPUCwNCj4gPj4+ICAgICAgIFJURV9FVEhfUkVTRVQsDQo+ID4+PiB9Ow0K PiA+Pj4NCj4gPj4+ICNkZWZpbmUgUlRFX0VUSF9SRVNUT1JFX01BQ19BRERSIFJURV9CSVQzMigw KSAjZGVmaW5lDQo+ID4+PiBSVEVfRVRIX1JFU1RPUkVfUFJPTUlTQyBSVEVfQklUMzIoMSkgI2Rl ZmluZQ0KPiA+PiBSVEVfRVRIX1JFU1RPUkVfQUxMTVVMVEkNCj4gPj4+IFJURV9CSVQzMigyKQ0K PiA+Pj4NCj4gPj4+IHZvaWQgKCpnZXRfcmVzdG9yZV9mbGFncykoDQo+ID4+PiAgICAgICBzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwNCj4gPj4+ICAgICAgIGVudW0gcnRlX2V0aF9kZXZfb3BlcmF0 aW9uIG9wLA0KPiA+Pj4gICAgICAgdWludDMyX3QgKmZsYWdzKTsNCj4gPj4+DQo+ID4+PiAyLiBy dGVfZXRoX2Rldl9zdGFydCgpIHdpbGwgd29yayBhcyBmb2xsb3dzOg0KPiA+Pj4NCj4gPj4+IC0g Q2FsbCBkZXYtPmRldl9vcHMtPmRldl9zdGFydCgpDQo+ID4+PiAtIENhbGwgZGV2LT5kZXZfb3Bz LT5nZXRfcmVzdG9yZV9mbGFncyhkZXYsIFJURV9FVEhfU1RBUlQsICZmbGFncykuIElmIGNhbGxi YWNrDQo+ID4+IGlzIG5vdCBwcm92aWRlZCwgYXNzdW1lIGZsYWdzID09IDAuDQo+ID4+PiAtIGlm IChmbGFncyAmIFJURV9FVEhfUkVTVE9SRV9NQUNfQUREUikgLSByZXN0b3JlIE1BQyBhZGRyZXNz ZXMNCj4gPj4+IC0gYW5kIHNvIG9uLi4uDQo+ID4+Pg0KPiA+Pg0KPiA+PiBBbGwgYWJvdmUgbG9v a3MgZ29vZC4NCj4gPj4NCj4gPj4+IEFsc28sIEkgd291bGQgbGlrZSB0byBhZGQgdGhlIGZvbGxv d2luZzoNCj4gPj4+DQo+ID4+PiAzLiBQYXRjaHNldCBpbnRyb2R1Y2luZyB0aGlzIGNoYW5nZSBz aG91bGQgYWRkIGdldF9yZXN0b3JlX2ZsYWdzKCkNCj4gPj4gaW1wbGVtZW50YXRpb24gdG8gYWxs IGRyaXZlcnMsIHdoaWNoIGluZm9ybXMgdGhhdCBhbGwgY29uZmlnIHNob3VsZCBiZSByZXN0b3Jl ZC4NCj4gPj4+IFRoaXMgd291bGQgcHJlc2VydmUgdGhlIGN1cnJlbnQgYmVoYXZpb3IuDQo+ID4+ PiBMYXRlciwgdGhpcyBjb3VsZCBiZSByZWZpbmVkIGRyaXZlciBieSBkcml2ZXIuDQo+ID4+Pg0K PiA+Pj4gV2hhdCBkbyB5b3UgdGhpbms/DQo+ID4+Pg0KPiA+Pg0KPiA+PiBXaGF0IHlvdSBhcmUg c2F5aW5nIGlzIGNvcnJlY3QsIGJ1dCBJIHN1c3BlY3QgbW9zdCBvZiB0aGUgZHJpdmVycyBkb24n dCByZWFsbHkgbmVlZA0KPiA+PiB0aGlzIHJlc3RvcmUsIGJ1dCB0aGV5IGhhdmUgaXQgc2luY2Ug aXQgd2FzIGluIHRoZSBldGhkZXYgbGF5ZXIuDQo+ID4+DQo+ID4+IElmIHdlIGludHJvZHVjZSBi YWNrIHJlc3RvcmUgdmlhIGdldF9yZXN0b3JlX2ZsYWdzKCksIGl0IG1heSBzdGF5IGFzIGl0IGlz IGluIGRyaXZlcnMsIGF0DQo+ID4+IGxlYXN0IGZvciBtb3N0IG9mIHRoZW0uDQo+ID4+DQo+ID4+ IFdoYXQgZG8geW91IHRoaW5rIHRvIHJpc2sgYnJlYWtpbmcgc3R1ZmYgZm9yIHRoaXMgY2FzZS4N Cj4gPj4NCj4gPj4gU28gZG9uJ3QgaW1wbGVtZW50IHRoaXMgaW4gdGhlIGRyaXZlcnMgYnkgZGVm YXVsdCwgc28gd2hvIG5lZWRzIGl0IHdpbGwgcmVjb2duaXplDQo+ID4+IHRoZSBpc3N1ZSBhbmQg d2lsbCBpbXBsZW1lbnQgaXQuIElmIHdlIG1lcmdlIHRoaXMgcGF0Y2ggZm9yIC1yYzEsIGl0IGdp dmVzIGVub3VnaA0KPiA+PiB0aW1lIGZvciBkcml2ZXJzIHRvIGRldGVjdCB0aGUgaXNzdWUgYW5k IGZpeCBpdC4NCj4gPg0KPiA+IEl0IHNlZW1zIHJhdGhlciB0b28gcmlza3ksIGVzcGVjaWFsbHkg Y29uc2lkZXJpbmcgdGhhdCBmb3IgZXhhbXBsZSwgdGhlcmUgYXJlIGEgZmV3IEludGVsIGRyaXZl cnMgd2hpY2ggZG8gbm90IGhhdmUgbWFpbnRhaW5lcnMgKGxpa2UNCj4gaTQwZSkuDQo+ID4gU28s IEkgZG9uJ3Qga25vdyB3aGF0IHdpbGwgaGFwcGVuIHRvIHN1Y2ggZHJpdmVycy4gVGhleSBtYXkg YmUgbGVmdCBicm9rZW4gKGlmIHRoZXkgYXJlIGFmZmVjdGVkKSBmb3IgMjQuMTEgYW5kIGZ1dHVy ZSByZWxlYXNlcy4NCj4gPiBCdXQgSSBhZ3JlZSB0aGF0IGlmIGRlZmF1bHQgYmVoYXZpb3IgaXMg cHJlc2VydmVkLCB0aGlzIGRlcGVuZGVuY2Ugb2YgZHJpdmVycyBvbiBjb25maWcgcmVzdG9yZSBt aWdodCBzdGF5IGFzIGlzLg0KPiA+IEknbSBvbiB0aGUgZmVuY2UgYWJvdXQgaXQuDQo+ID4NCj4g DQo+IFllYWgsIG5vdCBzdXJlLg0KPiANCj4gRG8geW91IHRoaW5rIHRoZSBkZXZfb3BzIGZ1bmN0 aW9uIGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUNCj4gJ2V0aGRldl9kcml2ZXIuYycgYW5kIGFs bCBkcml2ZXJzIHVzZSBleGFjdCBzYW1lIGZ1bmN0aW9uPw0KPiBTbyB0aGlzIHJlZHVjZXMgY2hh bmdlcyBhbmQgZHVwbGljYXRpb24gaW4gZHJpdmVycyB3aGlsZSBwcmVzZXJ2aW5nIHRoZQ0KPiBi ZWhhdmlvci4NCg0KV29uZGVyIHdoeSBpdCBjYW4ndCBiZSBkb25lIHZpc2EtdmVyc2E/DQpJZiB0 aGlzIG5ldyBmdW5jdGlvbiBpcyBub3QgaW1wbGVtZW50ZWQgYnkgUE1ELCB0aGVuIHNpbXBseSBh c3N1bWUNCnRoYXQgZXZlcnl0aGluZyBuZWVkcyB0byBiZSByZXN0b3JlZCAoYXMgaXQgaGFwcGVu cyBub3cpPyANCg0KPiA+Pg0KPiA+PiBPbmx5IHdlIG1heSBpbXBsZW1lbnQgdGhpcyB0byB0aGUg ZHJpdmVycyB0aGF0IGV4aXN0IHdoZW4gdGhpcyByZXN0b3JlIGNvZGUgd2FzDQo+ID4+IGludHJv ZHVjZWQuDQo+ID4+IEkgbWVhbiB3aGF0ZXZlciBkcml2ZXIgZXhpc3QgaW4gdGhlIGluaXRpYWwg RFBESyBjb21taXQsIGltcGxlbWVudCB0aGlzIGxvZ2ljIG9ubHkNCj4gPj4gdG8gdGhvc2UgZHJp dmVycy4NCj4gPg0KPiA+IFNlZW1zIHJlYXNvbmFibGUgdG8gbWUuIEluIHRoaXMgY2FzZSwgaXQg d291bGQgYmUgaWdiIChJSVVDLCBub3cgaXQncyBuYW1lZCBlMTAwMCkgYW5kIGl4Z2JlLg0KPiA+ DQo+ID4+DQo+ID4+PiBBbHNvLCB0aGVyZSdzIGFuIG9wZW4gcXVlc3Rpb24gYWJvdXQgJ3N0b3An IGFuZCAncmVzZXQnIG9wZXJhdGlvbnMuDQo+ID4+PiBBdCB0aGUgbW9tZW50LCBldGhkZXYgbGF5 ZXIgZG9lcyBub3QgZG8gYW55IGNvbmZpZyBtYW5pcHVsYXRpb24gZHVyaW5nIHRoZXNlDQo+ID4+ IG9wZXJhdGlvbnMuDQo+ID4+PiBNYXliZSB3ZSBzaG91bGQgbGltaXQgZ2V0X3Jlc3RvcmVfZmxh Z3MoKSB0byAnc3RhcnQnIG9ubHk/DQo+ID4+Pg0KPiA+Pg0KPiA+PiBBY2ssIEkgd2FzIGFib3V0 IHRvIHN1Z2dlc3QgdGhlIHNhbWUsIGZvciBub3cgb25seSBoYXZlICdSVEVfRVRIX1NUQVJUJw0K PiA+PiBhcyBhIHBsYWNlaG9sZGVyIGZvciBsYXRlciBwb3NzaWJsZSB1c2FnZXMuDQo+ID4NCj4g PiBBY2sNCj4gPg0KPiA+Pg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+Pj4NCj4gPj4+ Pj4+IFNvIFBNRHMgb25seSB3aWxsIHByb3ZpZGUgd2hhdCB0byByZXN0b3JlIHdpdGggYW4gaW50 ZXJuYWwgQVBJIGFuZA0KPiA+Pj4+Pj4gY29tbW9uIGV0aGRldiBsYXllciB3aWxsIHJlc3RvcmUg aXQuDQo+ID4+Pj4+PiBJZiBubyByZXN0b3JlIHJlcXVpcmVkIFBNRCBtYXkgbm90IGltcGxlbWVu dCAuZ2V0X3Jlc3RvcmVfZmxhZ3MoKSBhdCBhbGwuDQo+ID4+Pj4+Pg0KPiA+Pj4+Pj4gQWRkaXRp b25hbGx5LCBSVEVfRVRIX1NUQVJULCBSVEVfRVRIX1JFU0VUIGV0YyBmbGFnIGNhbiBiZSBwcm92 aWRlZA0KPiA+Pj4+Pj4gdG8gaW50ZXJuYWwgQVBJIHRvIGdldCB3aGF0IHRvIHJlc3RvcmUgaW4g ZGlmZmVyZW50IHN0YXRlcy4uLg0KPiA+Pj4+Pj4NCj4gPj4+Pj4+Pj4gU3VnZ2VzdGVkICdpbnRl cm5hbF9mbGFnJyBpbiAic3RydWN0IHJ0ZV9ldGhfZGV2X2RhdGEiIGNhbiBiZQ0KPiA+Pj4+Pj4+ PiBjb25mdXNpbmcgYW5kIG9wZW4gdG8gaW50ZXJwcmV0YXRpb24gd2hhdCB0byB1c2UgaXQgZm9y IGFuZCBieQ0KPiA+Pj4+Pj4+PiB0aW1lIGJlY29tZSBzb3VyY2Ugb2YgZGVmZWN0Lg0KPiA+Pj4+ Pj4+DQo+ID4+Pj4+Pj4gWWVzLCBzYW1lIHRob3VnaHRzLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+ IEluc3RlYWQgd2hhdCBkbyB5b3UgdGhpbmsgdG8gaGF2ZSBhIHNlcGFyYXRlLCBkZWRpY2F0ZWQg ZGF0YSBzdHJ1Y3QgZm9yIGl0Pw0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4gSG1tLi4uIG5vdCBzdXJl IEkgdW5kZXJzdG9vZCB5b3UgaGVyZS4uLg0KPiA+Pj4+Pj4+DQo+ID4+Pj4+Pj4+DQo+ID4+Pj4+ Pj4+PiBNaWdodCBiZSB3ZSBjYW4gbW92ZSB0aGlzIHJlc3RvcmF0aW9uIGNvZGUgaW50byB0aGUg bmV3IGV0aGRldg0KPiA+Pj4+Pj4+Pj4gaGVscGVyIGZ1bmN0aW9uLChldGhkZXZkX3VzZXJfY29u ZmlnX3Jlc3RvcmUoKSAgb3Igc28pIHRoYXQgUE1EDQo+ID4+Pj4+Pj4+PiBjYW4gaW52b2tlDQo+ ID4+Pj4+PiBkdXJpbmcgaXRzIGRldl9zdGFydCgpIGlmIG5lZWRlZD8NCj4gPj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiAjZGVmaW5lIFJURV9FVEhfREVWX0lOVEVSTkFMX1BS T01JU0NfRk9SQ0VfUkVTVE9SRQ0KPiA+Pj4+IFJURV9CSVQzMigwKQ0KPiA+Pj4+Pj4+Pj4+ICNk ZWZpbmUgUlRFX0VUSF9ERVZfSU5URVJOQUxfQUxMTVVMVElfRk9SQ0VfUkVTVE9SRQ0KPiA+Pj4+ IFJURV9CSVQzMigxKQ0KPiA+Pj4+Pj4+Pj4+ICNkZWZpbmUgUlRFX0VUSF9ERVZfSU5URVJOQUxf TUFDX0FERFJfRk9SQ0VfUkVTVE9SRQ0KPiA+Pj4+Pj4gUlRFX0JJVDMyKDIpDQo+ID4+Pj4+Pj4+ Pj4NCj4gPj4+Pj4+Pj4+PiBzdHJ1Y3QgcnRlX2V0aF9kZXZfZGF0YSB7DQo+ID4+Pj4+Pj4+Pj4g ICAgLyogc25pcCAqLw0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gICAgdWludDMyX3QgZGV2 X2ZsYWdzOw0KPiA+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4gICAgLyoqDQo+ID4+Pj4+Pj4+Pj4g ICAgICogSW50ZXJuYWwgZGV2aWNlIGNhcGFiaWxpdGllcywgdXNlZCBvbmx5IGJ5IGV0aGRldiBs aWJyYXJ5Lg0KPiA+Pj4+Pj4+Pj4+ICAgICAqIENlcnRhaW4gZnVuY3Rpb25hbGl0aWVzIHByb3Zp ZGVkIGJ5IHRoZSBsaWJyYXJ5IG1pZ2h0DQo+ID4+Pj4gZW5hYmxlZC9kaXNhYmxlZCwNCj4gPj4+ Pj4+Pj4+PiAgICAgKiBiYXNlZCBvbiBkcml2ZXIgZXhwb3NpbmcgY2VydGFpbiBjYXBhYmlsaXRp ZXMuDQo+ID4+Pj4+Pj4+Pj4gICAgICovDQo+ID4+Pj4+Pj4+Pj4gICAgdWludDMyX3QgaW50ZXJu YWxfZmxhZ3M7DQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiAgICAvKiBzbmlwICovDQo+ID4+ Pj4+Pj4+Pj4gfTsNCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+PiBBbHNvIHBlcmhhcHMgd2Ug aGF2ZSBnbyBpbnRvIGRldGFpbHMgd2hhdCBuZWVkcyB0byBiZSByZXN0b3JlZA0KPiA+Pj4+Pj4+ Pj4+PiBhZnRlciAnc3RvcCcgYW5kIHdoYXQgbmVlZHMgdG8gYmUgcmVzdG9yZWQgYWZ0ZXIgJ3Jl c2V0JyBhbmQNCj4gPj4+Pj4+Pj4+Pj4gdXNlIHNpbWlsYXINCj4gPj4+Pj4+IG1lY2hhbmlzbSBl dGMuLi4NCj4gPj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+IEkgdGhpbmsgd2Ugc2hvdWxkIGxvb2sg aW50byB0aGF0Lg0KPiA+Pj4+Pj4+Pj4+IEFueSAnY29kaWZpY2F0aW9uJyBvZiBzZW1hbnRpY3Mg YmV0d2VlbiBkcml2ZXJzIGFuZCBldGhkZXYNCj4gPj4+Pj4+Pj4+PiBsaWJyYXJ5IGlzIGdvb2Qg aW4NCj4gPj4+Pj4+IG15IG9waW5pb24uDQo+ID4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+PiBBdCBs ZWFzdCByaWdodCBub3csIGV0aGRldiBkb2VzIG5vdCBjaGFuZ2UgYW55IGNvbmZpZ3VyYXRpb24g aW4NCj4gPj4+Pj4+Pj4+PiAnc3RvcCcgYW5kDQo+ID4+Pj4+PiAncmVzZXQnIGZyb20gd2hhdCBJ IHNlZS4NCj4gPj4+Pj4+Pj4+PiBCdXQgdGhhdCdzIG9uIGxpYnJhcnkgc2lkZSBvbmx5Lg0KPiA+ Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiBUaGlzIHdheSwgaWYgd2Ugd291bGQgY29uY2x1ZGUg dGhhdCBpdCBtYWtlcyBzZW5zZSBmb3INCj4gPj4+Pj4+Pj4+Pj4+IC5kZXZfc3RhcnQoKSB0byBo YW5kbGUgYWxsIHN0YXJ0aW5nIGNvbmZpZ3VyYXRpb24gYXNwZWN0cywgd2UNCj4gPj4+Pj4+Pj4+ Pj4+IGNvdWxkIHRyYWNrIHdoaWNoIGRyaXZlcnMgc3RpbGwgcmVseQ0KPiA+Pj4+Pj4+Pj4+PiBv biBjb25maWd1cmF0aW9uIHJlc3RvcmUuDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4g RGFyaXVzeiBTb3Nub3dza2kgKDQpOg0KPiA+Pj4+Pj4+Pj4+Pj4gICBldGhkZXY6IHJld29yayBj b25maWcgcmVzdG9yZQ0KPiA+Pj4+Pj4+Pj4+Pj4gICBldGhkZXY6IG9taXQgcHJvbWlzY3VvdXMg Y29uZmlnIHJlc3RvcmUgaWYgbm90IHJlcXVpcmVkDQo+ID4+Pj4+Pj4+Pj4+PiAgIGV0aGRldjog b21pdCBhbGwgbXVsdGljYXN0IGNvbmZpZyByZXN0b3JlIGlmIG5vdCByZXF1aXJlZA0KPiA+Pj4+ Pj4+Pj4+Pj4gICBldGhkZXY6IG9taXQgTUFDIGFkZHJlc3MgcmVzdG9yZSBpZiBub3QgcmVxdWly ZWQNCj4gPj4+Pj4+Pj4+Pj4+DQo+ID4+Pj4+Pj4+Pj4+PiAgbGliL2V0aGRldi9ydGVfZXRoZGV2 LmMgfCAzOQ0KPiA+Pj4+Pj4+Pj4+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr Ky0tLS0tDQo+ID4+Pj4+Pj4+Pj4+PiAgbGliL2V0aGRldi9ydGVfZXRoZGV2LmggfCAxOCArKysr KysrKysrKysrKysrKysNCj4gPj4+Pj4+Pj4+Pj4+ICAyIGZpbGVzIGNoYW5nZWQsIDUyIGluc2Vy dGlvbnMoKyksIDUgZGVsZXRpb25zKC0pDQo+ID4+Pj4+Pj4+Pj4+Pg0KPiA+Pj4+Pj4+Pj4+Pj4g LS0NCj4gPj4+Pj4+Pj4+Pj4+IDIuMzkuNQ0KPiA+Pj4+Pj4+Pj4+Pj4NCj4gPj4+Pj4+Pj4+DQo+ ID4+Pj4+Pj4NCj4gPj4+Pj4NCj4gPj4+DQo+ID4NCg0K