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 C51BE41DE6; Mon, 6 Mar 2023 12:13:55 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 598DC40E50; Mon, 6 Mar 2023 12:13:55 +0100 (CET) Received: from szxga03-in.huawei.com (szxga03-in.huawei.com [45.249.212.189]) by mails.dpdk.org (Postfix) with ESMTP id 5FC9340A8A for ; Mon, 6 Mar 2023 12:13:53 +0100 (CET) Received: from dggpeml500021.china.huawei.com (unknown [172.30.72.53]) by szxga03-in.huawei.com (SkyGuard) with ESMTP id 4PVbYP6qtgz1gwqm; Mon, 6 Mar 2023 19:13:45 +0800 (CST) Received: from frapeml500007.china.huawei.com (7.182.85.172) by dggpeml500021.china.huawei.com (7.185.36.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.21; Mon, 6 Mar 2023 19:13:50 +0800 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.021; Mon, 6 Mar 2023 12:13:48 +0100 From: Konstantin Ananyev To: Ajit Khaparde , Ferruh Yigit CC: Konstantin Ananyev , Thomas Monjalon , Andrew Rybchenko , "dev@dpdk.org" , Fengchengwen Subject: RE: [PATCH 1/5] ethdev: fix race-condition of proactive error handling mode Thread-Topic: [PATCH 1/5] ethdev: fix race-condition of proactive error handling mode Thread-Index: AQHZS+uvQnCnmh+sv0S0/W2/2wgHVa7nZ26wgAHQp4CAAwPJgIABLjQAgAAlK+D///3qAIAAAVaAgAASk4A= Date: Mon, 6 Mar 2023 11:13:48 +0000 Message-ID: References: <20230301030610.49468-1-fengchengwen@huawei.com> <20230301030610.49468-2-fengchengwen@huawei.com> <0f387ca1eee34a7f92745de7b59a71a1@huawei.com> <18c5b676-ae72-e646-89af-d6cd636d923f@yandex.ru> <5b40049f-6f22-fc3f-b13e-da1793c2fd1a@amd.com> <9092fdae9c1d4c53a00a8f23eb1129ec@huawei.com> <0effdaa9-5045-0635-775c-6e1eda0d5dba@amd.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.195.247.106] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected 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 DQoNCj4gPiA+Pj4+Pj4gSW4gdGhlIHByb2FjdGl2ZSBlcnJvciBoYW5kbGluZyBtb2RlLCB0aGUg UE1EIHdpbGwgc2V0IHRoZSBkYXRhIHBhdGgNCj4gPiA+Pj4+Pj4gcG9pbnRlcnMgdG8gZHVtbXkg ZnVuY3Rpb25zIGFuZCB0aGVuIHRyeSByZWNvdmVyeSwgaW4gdGhpcyBwZXJpb2QgdGhlDQo+ID4g Pj4+Pj4+IGFwcGxpY2F0aW9uIG1heSBzdGlsbCBpbnZva2luZyBkYXRhIHBhdGggQVBJLiBUaGlz IHdpbGwgaW50cm9kdWNlIGENCj4gPiA+Pj4+Pj4gcmFjZS1jb25kaXRpb24gd2l0aCBkYXRhIHBh dGggd2hpY2ggbWF5IGxlYWQgdG8gY3Jhc2ggWzFdLg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiBB bHRob3VnaCB0aGUgUE1EIGFkZGVkIGRlbGF5IGFmdGVyIHNldHRpbmcgZGF0YSBwYXRoIHBvaW50 ZXJzIHRvIGNvdmVyDQo+ID4gPj4+Pj4+IHRoZSBhYm92ZSByYWNlLWNvbmRpdGlvbiwgaXQgcmVk dWNlcyB0aGUgcHJvYmFiaWxpdHksIGJ1dCBpdCBkb2Vzbid0DQo+ID4gPj4+Pj4+IHNvbHZlIHRo ZSBwcm9ibGVtLg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiBUbyBzb2x2ZSB0aGUgcmFjZS1jb25k aXRpb24gcHJvYmxlbSBmdW5kYW1lbnRhbGx5LCB0aGUgZm9sbG93aW5nDQo+ID4gPj4+Pj4+IHJl cXVpcmVtZW50cyBhcmUgYWRkZWQ6DQo+ID4gPj4+Pj4+IDEuIFRoZSBQTUQgc2hvdWxkIHNldCB0 aGUgZGF0YSBwYXRoIHBvaW50ZXJzIHRvIGR1bW15IGZ1bmN0aW9ucyBhZnRlcg0KPiA+ID4+Pj4+ PiAgICAgcmVwb3J0IFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcgZXZlbnQuDQo+ID4gPj4+ Pj4+IDIuIFRoZSBhcHBsaWNhdGlvbiBzaG91bGQgc3RvcCBkYXRhIHBhdGggQVBJIGludm9jYXRp b24gd2hlbiBwcm9jZXNzDQo+ID4gPj4+Pj4+ICAgICB0aGUgUlRFX0VUSF9FVkVOVF9FUlJfUkVD T1ZFUklORyBldmVudC4NCj4gPiA+Pj4+Pj4gMy4gVGhlIFBNRCBzaG91bGQgc2V0IHRoZSBkYXRh IHBhdGggcG9pbnRlcnMgdG8gdmFsaWQgZnVuY3Rpb25zIGJlZm9yZQ0KPiA+ID4+Pj4+PiAgICAg cmVwb3J0IFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfU1VDQ0VTUyBldmVudC4NCj4gPiA+Pj4+Pj4g NC4gVGhlIGFwcGxpY2F0aW9uIHNob3VsZCBlbmFibGUgZGF0YSBwYXRoIEFQSSBpbnZvY2F0aW9u IHdoZW4gcHJvY2Vzcw0KPiA+ID4+Pj4+PiAgICAgdGhlIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllf U1VDQ0VTUyBldmVudC4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBIb3cgdGhpcyBp cyBzb2x2aW5nIHRoZSByYWNlLWNvbmRpdGlvbiwgYnkgcHVzaGluZyByZXNwb25zaWJpbGl0eSB0 bw0KPiA+ID4+Pj4gc3RvcCBkYXRhIHBhdGggdG8gYXBwbGljYXRpb24/DQo+ID4gPj4+DQo+ID4g Pj4+IEV4YWN0bHksIGl0IGJlY29tZXMgYXBwbGljYXRpb24gcmVzcG9uc2liaWxpdHkgdG8gbWFr ZSBzdXJlIGRhdGEtcGF0aCBpcw0KPiA+ID4+PiBzdG9wcGVkL3N1c3BlbmRlZCBiZWZvcmUgcmVj b3Zlcnkgd2lsbCBjb250aW51ZS4NCj4gPiA+Pj4NCj4gPiA+Pg0KPiA+ID4+IEZyb20gZG9jdW1l bnRhdGlvbiBvZiB0aGUgZmVhdHVyZToNCj4gPiA+Pg0KPiA+ID4+IGBgDQo+ID4gPj4gQmVjYXVz ZSB0aGUgUE1EIHJlY292ZXJzIGF1dG9tYXRpY2FsbHksDQo+ID4gPj4gdGhlIGFwcGxpY2F0aW9u IGNhbiBvbmx5IHNlbnNlIHRoYXQgdGhlIGRhdGEgZmxvdyBpcyBkaXNjb25uZWN0ZWQgZm9yIGEN Cj4gPiA+PiB3aGlsZSBhbmQgdGhlIGNvbnRyb2wgQVBJIHJldHVybnMgYW4gZXJyb3IgaW4gdGhp cyBwZXJpb2QuDQo+ID4gPj4NCj4gPiA+PiBJbiBvcmRlciB0byBzZW5zZSB0aGUgZXJyb3IgaGFw cGVuaW5nL3JlY292ZXJpbmcsIGFzIHdlbGwgYXMgdG8gcmVzdG9yZQ0KPiA+ID4+IHNvbWUgYWRk aXRpb25hbCBjb25maWd1cmF0aW9uLCB0aHJlZSBldmVudHMgYXJlIGF2YWlsYWJsZToNCj4gPiA+ PiBgYA0KPiA+ID4+DQo+ID4gPj4gSXQgbG9va3MgbGlrZSBpbml0aWFsIGRlc2lnbiBpcyB0byB1 c2UgZXZlbnRzIG1haW5seSBpbmZvcm0gYXBwbGljYXRpb24NCj4gPiA+PiBhYm91dCB3aGF0IGhh cHBlbmVkIGFuZCBtYWlubHkgZm9yIHJlLWNvbmZpZ3VyYXRpb24uDQo+ID4gPj4NCj4gPiA+PiBB bHRob3VnaCBJIGFtIGRvbid0IGRpc2FncmVlIHRvIGludm9sdmUgdGhlIGFwcGxpY2F0aW9uLCBJ IGFtIG5vdCBzdXJlDQo+ID4gPj4gdGhhdCBpcyBwYXJ0IG9mIGN1cnJlbnQgZGVzaWduLg0KPiA+ ID4NCj4gPiA+IEkgdGhvdWdodCB3ZSBhbGwgYWdyZWVkIHRoYXQgaW5pdGlhbCBkZXNpZ24gY29u dGFpbiBzb21lIGZhbGxhY2llcyB0aGF0DQo+ID4gPiBuZWVkIHRvIGZpeGVkLCBubz8NCj4gPiA+ IFN0YXRlbWVudCB0aGF0IHdpdGggY3VycmVudCBydGVfZXRoZGV2IGRlc2lnbiBlcnJvciByZWNv dmVyeSBjYW4gYmUgZG9uZQ0KPiA+ID4gd2l0aG91dCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBhcHAg KHRvIHN0b3Avc3VzcGVuZCBkYXRhL2NvbnRyb2wgcGF0aCkNCj4gPiA+IGlzIHRoZSBtYWluIG9u ZSBJIHRoaW5rLg0KPiA+ID4gSXQgbmVlZHMgc29tZSBpbnRlcmFjdGlvbiB3aXRoIGFwcCBsYXll ciwgb25lIHdheSBvciBhbm90aGVyLg0KPiA+ID4NCj4gPiA+Pj4+DQo+ID4gPj4+PiBXaGF0IGlm IGFwcGxpY2F0aW9uIGlzIG5vdCBpbnRlcmVzdGVkIGluIHJlY292ZXJ5IG1vZGVzIGF0IGFsbCBh bmQgbm90DQo+ID4gPj4+PiByZWdpc3RlcmVkIGFueSBjYWxsYmFjayBmb3IgdGhlIHJlY292ZXJ5 Pw0KPiA+ID4+Pg0KPiA+ID4+Pg0KPiA+ID4+PiBBcmUgeW91IHNheWluZyB0aGVyZSBpcyBubyB3 YXkgZm9yIGFwcGxpY2F0aW9uIHRvIGRpc2FibGUNCj4gPiA+Pj4gYXV0b21hdGljIHJlY292ZXJ5 IGluIFBNRCBpZiBpdCBpcyBub3QgaW50ZXJlc3RlZA0KPiA+ID4+PiAob3IgY2FuJ3QgZnVsbC1m aWxsIHBlci1yZXF1ZXN0aWVzIGZvciBpdCk/DQo+ID4gPj4+IElmIHNvLCB0aGVuIHllcyBpdCBp cyBhIHByb2JsZW0gYW5kIHdlIG5lZWQgdG8gZml4IGl0Lg0KPiA+ID4+PiBJIGFzc3VtZWQgdGhh dCBzdWNoIG1lY2hhbmlzbSB0byBkaXNhYmxlIHVud2FudGVkIGV2ZW50cyBhbHJlYWR5IGV4aXN0 cywNCj4gPiA+Pj4gYnV0IEkgY2FuJ3QgZmluZCBhbnl0aGluZy4NCj4gPiA+Pj4gV29uZGVyIHdo YXQgd291bGQgYmUgdGhlIGVhc2llc3Qgd2F5IGhlcmUgLSBjYW4gUE1EIG1ha2UgYSBkZWNpc2lv bg0KPiA+ID4+PiBiYXNlZCBvbiBjYWxsYmFjayByZXR1cm4gdmFsdWUsIG9yIGRvIHdlIG5lZWQg YSBuZXcgQVBJIHRvDQo+ID4gPj4+IGVuYWJsZS9kaXNhYmxlIGNhbGxiYWNrcywgb3IgLi4uPw0K PiA+ID4+Pg0KPiA+ID4+Pg0KPiA+ID4+DQo+ID4gPj4gQXMgZmFyIGFzIEkgY2FuIHNlZSBhdXRv bWF0aWMgcmVjb3ZlcnkgaXMgbm90IGNvbmZpZ3VyYWJsZSBieSBhcHAuDQo+ID4gPj4NCj4gPiA+ PiBCdXQgdGhhdCBpcyBub3QgYWxsLCBQTUQgc2VuZHMgZXZlbnRzIHRvIGFwcGxpY2F0aW9uIGJ1 dCBQTUQgY2FuJ3Qga25vdw0KPiA+ID4+IGlmIGFwcGxpY2F0aW9uIGlzIGhhbmRsaW5nIHRoZW0g b3Igbm90LCBzbyB3aXRoIGN1cnJlbnQgZGVzaWduIFBNRCBjYW4ndA0KPiA+ID4+IHJlbHkgb24g dG8gYXBwLg0KPiA+ID4NCj4gPiA+IFdlbGwsIFBNRCBpbnZva2VzIHVzZXIgcHJvdmlkZWQgY2Fs bGJhY2suDQo+ID4gPiBPbmUgd2F5IHRvIGZpeCB0aGF0IHByb2JsZW0gLSBpZiB0aGVyZSBpcyBu byBjYWxsYmFjayBwcm92aWRlZCwNCj4gPiA+IG9yIGNhbGxiYWNrIHJldHVybnMgYW4gZXJyb3Ig Y29kZSAtIFBNRCBjYW4gYXNzdW1lIHRoYXQgcmVjb3ZlcnkNCj4gPiA+IHNob3VsZCBub3QgYmUg ZG9uZS4NCj4gPiA+IFRoYXQgaXMgcHJvYmFibHkgbm90IHRoZSBiZXN0IGRlc2lnbiBjaG9pY2Us IGJ1dCBhdCBsZWFzdCBpdCB3aWxsIGFsbG93DQo+ID4gPiB0byBmaXggdGhlIHByb2JsZW0gd2l0 aG91dCB0b28gbWFueSBjaGFuZ2VzIGFuZCBpbnRyb2R1Y2luZyBuZXcgQVBJLg0KPiA+ID4gVGhh dCBjb3VsZCBiZSBzb3J0IG9mIGEgJ3F1aWNrIGZpeCcuDQo+ID4gPiBJbiBhIG1lYW53aGlsZSB3 ZSBjYW4gdGhpbmsgYWJvdXQgbmV3L2JldHRlciBhcHByb2FjaCBmb3IgdGhhdC4NCj4gPiA+DQo+ ID4NCj4gPiAtcmMyIGZvciAyMy4wMyBpcyBhIGZldyBkYXlzIGF3YXkuDQo+ID4NCj4gPiBXaGF0 IGRvIHlvdSB0aGluayB0byBoYXZlICdxdWljayBmaXgnIGFzIG1vZGlmeWluZyBob3cgZHJpdmVy IHVwZGF0ZXMNCj4gPiBidXJzdCBvcHMgdG8gcHJldmVudCB0aGUgcmFjZSBjb25kaXRpb24sIGZv ciB0aGlzIHJlbGVhc2U/DQo+ID4NCj4gPiBBbmQgcGxhbiBhIGRlc2lnbiB1cGRhdGUgZm9yIHRo ZSBuZXh0IHJlbGVhc2U/DQo+ICsxIG9uIHRoZSBvdmVyYWxsIGFwcHJvYWNoLg0KDQpZZXAsIGFn cmVlLg0KIA0KPiANCj4gPg0KPiA+DQo+ID4gPj4NCj4gPiA+Pj4+IEkgdGhpbmsgZHJpdmVyIHNo b3VsZCBub3QgcmVseSBvbiBhcHBsaWNhdGlvbiBmb3IgdGhpcywgdW5sZXNzDQo+ID4gPj4+PiBh cHBsaWNhdGlvbiBleHBsaWNpdGx5IHNheXMgKHRvIGRyaXZlcikgdGhhdCBpdCBpcyBoYW5kbGlu ZyByZWNvdmVyeSwNCj4gPiA+Pj4+IHJpZ2h0IG5vdyB0aGVyZSBpcyBubyB3YXkgZm9yIGRyaXZl ciB0byBrbm93IHRoaXMuDQo+ID4gPj4+DQo+ID4gPj4+IEkgdGhpbmsgaXQgaXMgdmlzYS12ZXJz YToNCj4gPiA+Pj4gYXBwbGljYXRpb24gc2hvdWxkIG5vdCBlbmFibGUgYXV0by1yZWNvdmVyeSBp ZiBpdCBjYW4ndCBtZWV0DQo+ID4gPj4+IHBlci1yZXF1ZXN0c3RpZXMgZm9yIGl0IChwcm92aWRl IGFwcHJvcHJpYXRlIGNhbGxiYWNrKS4NCj4gPiA+Pj4NCj4gPiA+Pg0KPiA+ID4+IEkgYWdyZWUg b24gYWJvdmUsIHdlIGFyZSBzYXlpbmcgc2ltaWxhciB0aGluZyBpbiBkaWZmZXJlbnQgcGVyc3Bl Y3RpdmUuDQo+ID4gPg0KPiA+ID4gT2ssIHRoYXQncyBnb29kIHdlIGFyZSBvbiB0aGUgc2FtZSBw YWdlLg0KPiA+ID4NCj4gPiA+DQo+ID4gPj4NCj4gPiA+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+Pj4+ IEFsc28sIHRoaXMgcGF0Y2ggaW50cm9kdWNlIGEgZHJpdmVyIGludGVybmFsIGZ1bmN0aW9uDQo+ ID4gPj4+Pj4+IHJ0ZV9ldGhfZnBfb3BzX3NldHVwIHdoaWNoIHVzZWQgYXMgYW4gaGVscCBmdW5j dGlvbiBmb3IgUE1ELg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiBbMV0NCj4gPiA+Pj4+Pj4gaHR0 cDovL3BhdGNod29yay5kcGRrLm9yZy9wcm9qZWN0L2RwZGsvcGF0Y2gvMjAyMzAyMjAwNjA4Mzku MTI2NzM0OS0yLWFzaG9rLmsua2FsYWRpQGludGVsLmNvbS8NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+ Pj4gRml4ZXM6IGViMGQ0NzFhODk0MSAoImV0aGRldjogYWRkIHByb2FjdGl2ZSBlcnJvciBoYW5k bGluZyBtb2RlIikNCj4gPiA+Pj4+Pj4gQ2M6IHN0YWJsZUBkcGRrLm9yZw0KPiA+ID4+Pj4+Pg0K PiA+ID4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBDaGVuZ3dlbiBGZW5nIDxmZW5nY2hlbmd3ZW5AaHVh d2VpLmNvbT4NCj4gPiA+Pj4+Pj4gLS0tDQo+ID4gPj4+Pj4+ICAgZG9jL2d1aWRlcy9wcm9nX2d1 aWRlL3BvbGxfbW9kZV9kcnYucnN0IHwgMjAgKysrKysrKy0tLS0tLS0tLQ0KPiA+ID4+Pj4+PiAg IGxpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5jICAgICAgICAgICAgICB8ICA4ICsrKysrKysNCj4g PiA+Pj4+Pj4gICBsaWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuaCAgICAgICAgICAgICAgfCAxMCAr KysrKysrKw0KPiA+ID4+Pj4+PiAgIGxpYi9ldGhkZXYvcnRlX2V0aGRldi5oICAgICAgICAgICAg ICAgICB8IDMyDQo+ID4gPj4+Pj4+ICsrKysrKysrKysrKysrKy0tLS0tLS0tLS0NCj4gPiA+Pj4+ Pj4gICBsaWIvZXRoZGV2L3ZlcnNpb24ubWFwICAgICAgICAgICAgICAgICAgfCAgMSArDQo+ID4g Pj4+Pj4+ICAgNSBmaWxlcyBjaGFuZ2VkLCA0NiBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMo LSkNCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gZGlmZiAtLWdpdCBhL2RvYy9ndWlkZXMvcHJvZ19n dWlkZS9wb2xsX21vZGVfZHJ2LnJzdA0KPiA+ID4+Pj4+PiBiL2RvYy9ndWlkZXMvcHJvZ19ndWlk ZS9wb2xsX21vZGVfZHJ2LnJzdA0KPiA+ID4+Pj4+PiBpbmRleCBjMTQ1YTkwNjZjLi5lMzgwZmYx MzVhIDEwMDY0NA0KPiA+ID4+Pj4+PiAtLS0gYS9kb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcG9sbF9t b2RlX2Rydi5yc3QNCj4gPiA+Pj4+Pj4gKysrIGIvZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3BvbGxf bW9kZV9kcnYucnN0DQo+ID4gPj4+Pj4+IEBAIC02MzgsMTQgKzYzOCw5IEBAIGRpZmZlcmVudCBm cm9tIHRoZSBhcHBsaWNhdGlvbiBpbnZva2VzIHJlY292ZXJ5DQo+ID4gPj4+Pj4+IGluIFBBU1NJ VkUgbW9kZSwNCj4gPiA+Pj4+Pj4gICB0aGUgUE1EIGF1dG9tYXRpY2FsbHkgcmVjb3ZlcnMgZnJv bSBlcnJvciBpbiBQUk9BQ1RJVkUgbW9kZSwNCj4gPiA+Pj4+Pj4gICBhbmQgb25seSBhIHNtYWxs IGFtb3VudCBvZiB3b3JrIGlzIHJlcXVpcmVkIGZvciB0aGUgYXBwbGljYXRpb24uDQo+ID4gPj4+ Pj4+DQo+ID4gPj4+Pj4+IC1EdXJpbmcgZXJyb3IgZGV0ZWN0aW9uIGFuZCBhdXRvbWF0aWMgcmVj b3ZlcnksDQo+ID4gPj4+Pj4+IC10aGUgUE1EIHNldHMgdGhlIGRhdGEgcGF0aCBwb2ludGVycyB0 byBkdW1teSBmdW5jdGlvbnMNCj4gPiA+Pj4+Pj4gLSh3aGljaCB3aWxsIHByZXZlbnQgdGhlIGNy YXNoKSwNCj4gPiA+Pj4+Pj4gLWFuZCBhbHNvIG1ha2Ugc3VyZSB0aGUgY29udHJvbCBwYXRoIG9w ZXJhdGlvbnMgZmFpbCB3aXRoIGEgcmV0dXJuDQo+ID4gPj4+Pj4+IGNvZGUgYGAtRUJVU1lgYC4N Cj4gPiA+Pj4+Pj4gLQ0KPiA+ID4+Pj4+PiAtQmVjYXVzZSB0aGUgUE1EIHJlY292ZXJzIGF1dG9t YXRpY2FsbHksDQo+ID4gPj4+Pj4+IC10aGUgYXBwbGljYXRpb24gY2FuIG9ubHkgc2Vuc2UgdGhh dCB0aGUgZGF0YSBmbG93IGlzIGRpc2Nvbm5lY3RlZA0KPiA+ID4+Pj4+PiBmb3IgYSB3aGlsZQ0K PiA+ID4+Pj4+PiAtYW5kIHRoZSBjb250cm9sIEFQSSByZXR1cm5zIGFuIGVycm9yIGluIHRoaXMg cGVyaW9kLg0KPiA+ID4+Pj4+PiArRHVyaW5nIGVycm9yIGRldGVjdGlvbiBhbmQgYXV0b21hdGlj IHJlY292ZXJ5LCB0aGUgUE1EIHNldHMgdGhlDQo+ID4gPj4+Pj4+IGRhdGEgcGF0aA0KPiA+ID4+ Pj4+PiArcG9pbnRlcnMgdG8gZHVtbXkgZnVuY3Rpb25zIGFuZCBhbHNvIG1ha2Ugc3VyZSB0aGUg Y29udHJvbCBwYXRoDQo+ID4gPj4+Pj4+IG9wZXJhdGlvbnMNCj4gPiA+Pj4+Pj4gK2ZhaWxlZCB3 aXRoIGEgcmV0dXJuIGNvZGUgYGAtRUJVU1lgYC4NCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gICBJ biBvcmRlciB0byBzZW5zZSB0aGUgZXJyb3IgaGFwcGVuaW5nL3JlY292ZXJpbmcsDQo+ID4gPj4+ Pj4+ICAgYXMgd2VsbCBhcyB0byByZXN0b3JlIHNvbWUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9u LA0KPiA+ID4+Pj4+PiBAQCAtNjUzLDkgKzY0OCw5IEBAIHRocmVlIGV2ZW50cyBhcmUgYXZhaWxh YmxlOg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiAgIGBgUlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZF UklOR2BgDQo+ID4gPj4+Pj4+ICAgICAgTm90aWZ5IHRoZSBhcHBsaWNhdGlvbiB0aGF0IGFuIGVy cm9yIGlzIGRldGVjdGVkDQo+ID4gPj4+Pj4+IC0gICBhbmQgdGhlIHJlY292ZXJ5IGlzIGJlaW5n IHN0YXJ0ZWQuDQo+ID4gPj4+Pj4+ICsgICBhbmQgdGhlIHJlY292ZXJ5IGlzIGFib3V0IHRvIHN0 YXJ0Lg0KPiA+ID4+Pj4+PiAgICAgIFVwb24gcmVjZWl2aW5nIHRoZSBldmVudCwgdGhlIGFwcGxp Y2F0aW9uIHNob3VsZCBub3QgaW52b2tlDQo+ID4gPj4+Pj4+IC0gICBhbnkgY29udHJvbCBwYXRo IGZ1bmN0aW9uIHVudGlsIHJlY2VpdmluZw0KPiA+ID4+Pj4+PiArICAgYW55IGNvbnRyb2wgYW5k IGRhdGEgcGF0aCBBUEkgdW50aWwgcmVjZWl2aW5nDQo+ID4gPj4+Pj4+ICAgICAgYGBSVEVfRVRI X0VWRU5UX1JFQ09WRVJZX1NVQ0NFU1NgYCBvcg0KPiA+ID4+Pj4+PiBgYFJURV9FVEhfRVZFTlRf UkVDT1ZFUllfRkFJTEVEYGAgZXZlbnQuDQo+ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+ICAgLi4gbm90 ZTo6DQo+ID4gPj4+Pj4+IEBAIC02NjYsOCArNjYxLDkgQEAgdGhyZWUgZXZlbnRzIGFyZSBhdmFp bGFibGU6DQo+ID4gPj4+Pj4+DQo+ID4gPj4+Pj4+ICAgYGBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZ X1NVQ0NFU1NgYA0KPiA+ID4+Pj4+PiAgICAgIE5vdGlmeSB0aGUgYXBwbGljYXRpb24gdGhhdCB0 aGUgcmVjb3ZlcnkgZnJvbSBlcnJvciBpcyBzdWNjZXNzZnVsLA0KPiA+ID4+Pj4+PiAtICAgdGhl IFBNRCBhbHJlYWR5IHJlLWNvbmZpZ3VyZXMgdGhlIHBvcnQsDQo+ID4gPj4+Pj4+IC0gICBhbmQg dGhlIGVmZmVjdCBpcyB0aGUgc2FtZSBhcyBhIHJlc3RhcnQgb3BlcmF0aW9uLg0KPiA+ID4+Pj4+ PiArICAgdGhlIFBNRCBhbHJlYWR5IHJlLWNvbmZpZ3VyZXMgdGhlIHBvcnQuDQo+ID4gPj4+Pj4+ ICsgICBUaGUgYXBwbGljYXRpb24gc2hvdWxkIHJlc3RvcmUgc29tZSBhZGRpdGlvbmFsIGNvbmZp Z3VyYXRpb24sDQo+ID4gPj4+Pj4+IGFuZCB0aGVuDQo+ID4gPj4+Pj4+ICsgICBlbmFibGUgZGF0 YSBwYXRoIEFQSSBpbnZvY2F0aW9uLg0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiAgIGBgUlRFX0VU SF9FVkVOVF9SRUNPVkVSWV9GQUlMRURgYA0KPiA+ID4+Pj4+PiAgICAgIE5vdGlmeSB0aGUgYXBw bGljYXRpb24gdGhhdCB0aGUgcmVjb3ZlcnkgZnJvbSBlcnJvciBmYWlsZWQsDQo+ID4gPj4+Pj4+ IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L2V0aGRldl9kcml2ZXIuYyBiL2xpYi9ldGhkZXYvZXRo ZGV2X2RyaXZlci5jDQo+ID4gPj4+Pj4+IGluZGV4IDBiZTFlOGNhMDQuLmY5OTQ2NTNmZTkgMTAw NjQ0DQo+ID4gPj4+Pj4+IC0tLSBhL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5jDQo+ID4gPj4+ Pj4+ICsrKyBiL2xpYi9ldGhkZXYvZXRoZGV2X2RyaXZlci5jDQo+ID4gPj4+Pj4+IEBAIC01MTUs NiArNTE1LDE0IEBAIHJ0ZV9ldGhfZG1hX3pvbmVfZnJlZShjb25zdCBzdHJ1Y3QgcnRlX2V0aF9k ZXYNCj4gPiA+Pj4+Pj4gKmRldiwgY29uc3QgY2hhciAqcmluZ19uYW1lLA0KPiA+ID4+Pj4+PiAg ICAgICByZXR1cm4gcmM7DQo+ID4gPj4+Pj4+ICAgfQ0KPiA+ID4+Pj4+Pg0KPiA+ID4+Pj4+PiAr dm9pZA0KPiA+ID4+Pj4+PiArcnRlX2V0aF9mcF9vcHNfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2 ICpkZXYpDQo+ID4gPj4+Pj4+ICt7DQo+ID4gPj4+Pj4+ICsgICAgaWYgKGRldiA9PSBOVUxMKQ0K PiA+ID4+Pj4+PiArICAgICAgICByZXR1cm47DQo+ID4gPj4+Pj4+ICsgICAgZXRoX2Rldl9mcF9v cHNfc2V0dXAocnRlX2V0aF9mcF9vcHMgKyBkZXYtPmRhdGEtPnBvcnRfaWQsIGRldik7DQo+ID4g Pj4+Pj4+ICt9DQo+ID4gPj4+Pj4+ICsNCj4gPiA+Pj4+Pj4gICBjb25zdCBzdHJ1Y3QgcnRlX21l bXpvbmUgKg0KPiA+ID4+Pj4+PiAgIHJ0ZV9ldGhfZG1hX3pvbmVfcmVzZXJ2ZShjb25zdCBzdHJ1 Y3QgcnRlX2V0aF9kZXYgKmRldiwgY29uc3QgY2hhcg0KPiA+ID4+Pj4+PiAqcmluZ19uYW1lLA0K PiA+ID4+Pj4+PiAgICAgICAgICAgICAgICB1aW50MTZfdCBxdWV1ZV9pZCwgc2l6ZV90IHNpemUs IHVuc2lnbmVkIGludCBhbGlnbiwNCj4gPiA+Pj4+Pj4gZGlmZiAtLWdpdCBhL2xpYi9ldGhkZXYv ZXRoZGV2X2RyaXZlci5oIGIvbGliL2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gPiA+Pj4+Pj4g aW5kZXggMmM5ZDYxNWZiNS4uMGQ5NjRkMWY2NyAxMDA2NDQNCj4gPiA+Pj4+Pj4gLS0tIGEvbGli L2V0aGRldi9ldGhkZXZfZHJpdmVyLmgNCj4gPiA+Pj4+Pj4gKysrIGIvbGliL2V0aGRldi9ldGhk ZXZfZHJpdmVyLmgNCj4gPiA+Pj4+Pj4gQEAgLTE2MjEsNiArMTYyMSwxNiBAQCBpbnQNCj4gPiA+ Pj4+Pj4gICBydGVfZXRoX2RtYV96b25lX2ZyZWUoY29uc3Qgc3RydWN0IHJ0ZV9ldGhfZGV2ICpl dGhfZGV2LCBjb25zdA0KPiA+ID4+Pj4+PiBjaGFyICpuYW1lLA0KPiA+ID4+Pj4+PiAgICAgICAg ICAgIHVpbnQxNl90IHF1ZXVlX2lkKTsNCj4gPiA+Pj4+Pj4NCj4gPiA+Pj4+Pj4gKy8qKg0KPiA+ ID4+Pj4+PiArICogQGludGVybmFsDQo+ID4gPj4+Pj4+ICsgKiBTZXR1cCBldGggZmFzdC1wYXRo IEFQSSB0byBldGhkZXYgdmFsdWVzLg0KPiA+ID4+Pj4+PiArICoNCj4gPiA+Pj4+Pj4gKyAqIEBw YXJhbSBkZXYNCj4gPiA+Pj4+Pj4gKyAqICBQb2ludGVyIHRvIHN0cnVjdCBydGVfZXRoX2Rldi4N Cj4gPiA+Pj4+Pj4gKyAqLw0KPiA+ID4+Pj4+PiArX19ydGVfaW50ZXJuYWwNCj4gPiA+Pj4+Pj4g K3ZvaWQgcnRlX2V0aF9mcF9vcHNfc2V0dXAoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpOw0KPiA+ ID4+Pj4+PiArDQo+ID4gPj4+Pj4+ICAgLyoqDQo+ID4gPj4+Pj4+ICAgICogQGludGVybmFsDQo+ ID4gPj4+Pj4+ICAgICogQXRvbWljYWxseSBzZXQgdGhlIGxpbmsgc3RhdHVzIGZvciB0aGUgc3Bl Y2lmaWMgZGV2aWNlLg0KPiA+ID4+Pj4+PiBkaWZmIC0tZ2l0IGEvbGliL2V0aGRldi9ydGVfZXRo ZGV2LmggYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+ID4+Pj4+PiBpbmRleCAwNDk2NDFk NTdjLi40NGVlNzIyOWMxIDEwMDY0NA0KPiA+ID4+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L3J0ZV9l dGhkZXYuaA0KPiA+ID4+Pj4+PiArKysgYi9saWIvZXRoZGV2L3J0ZV9ldGhkZXYuaA0KPiA+ID4+ Pj4+PiBAQCAtMzk0NCwyNSArMzk0NCwyOCBAQCBlbnVtIHJ0ZV9ldGhfZXZlbnRfdHlwZSB7DQo+ ID4gPj4+Pj4+ICAgICAgICAqLw0KPiA+ID4+Pj4+PiAgICAgICBSVEVfRVRIX0VWRU5UX1JYX0FW QUlMX1RIUkVTSCwNCj4gPiA+Pj4+Pj4gICAgICAgLyoqIFBvcnQgcmVjb3ZlcmluZyBmcm9tIGEg aGFyZHdhcmUgb3IgZmlybXdhcmUgZXJyb3IuDQo+ID4gPj4+Pj4+IC0gICAgICogSWYgUE1EIHN1 cHBvcnRzIHByb2FjdGl2ZSBlcnJvciByZWNvdmVyeSwNCj4gPiA+Pj4+Pj4gLSAgICAgKiBpdCBz aG91bGQgdHJpZ2dlciB0aGlzIGV2ZW50IHRvIG5vdGlmeSBhcHBsaWNhdGlvbg0KPiA+ID4+Pj4+ PiAtICAgICAqIHRoYXQgaXQgZGV0ZWN0ZWQgYW4gZXJyb3IgYW5kIHRoZSByZWNvdmVyeSBpcyBi ZWluZyBzdGFydGVkLg0KPiA+ID4+Pj4+PiAtICAgICAqIFVwb24gcmVjZWl2aW5nIHRoZSBldmVu dCwgdGhlIGFwcGxpY2F0aW9uIHNob3VsZCBub3QgaW52b2tlDQo+ID4gPj4+Pj4+IGFueSBjb250 cm9sIHBhdGggQVBJDQo+ID4gPj4+Pj4+IC0gICAgICogKHN1Y2ggYXMgcnRlX2V0aF9kZXZfY29u ZmlndXJlL3J0ZV9ldGhfZGV2X3N0b3AuLi4pIHVudGlsDQo+ID4gPj4+Pj4+IHJlY2VpdmluZw0K PiA+ID4+Pj4+PiAtICAgICAqIFJURV9FVEhfRVZFTlRfUkVDT1ZFUllfU1VDQ0VTUyBvcg0KPiA+ ID4+Pj4+PiBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX0ZBSUxFRCBldmVudC4NCj4gPiA+Pj4+Pj4g LSAgICAgKiBUaGUgUE1EIHdpbGwgc2V0IHRoZSBkYXRhIHBhdGggcG9pbnRlcnMgdG8gZHVtbXkg ZnVuY3Rpb25zLA0KPiA+ID4+Pj4+PiAtICAgICAqIGFuZCByZS1zZXQgdGhlIGRhdGEgcGF0aCBw b2ludGVycyB0byBub24tZHVtbXkgZnVuY3Rpb25zDQo+ID4gPj4+Pj4+IC0gICAgICogYmVmb3Jl IHJlcG9ydGluZyBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX1NVQ0NFU1MgZXZlbnQuDQo+ID4gPj4+ Pj4+IC0gICAgICogSXQgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IHNlbmQgb3Ig cmVjZWl2ZSBhbnkNCj4gPiA+Pj4+Pj4gcGFja2V0cw0KPiA+ID4+Pj4+PiAtICAgICAqIGR1cmlu ZyB0aGlzIHBlcmlvZC4NCj4gPiA+Pj4+Pj4gKyAgICAgKg0KPiA+ID4+Pj4+PiArICAgICAqIElm IFBNRCBzdXBwb3J0cyBwcm9hY3RpdmUgZXJyb3IgcmVjb3ZlcnksIGl0IHNob3VsZCB0cmlnZ2Vy DQo+ID4gPj4+Pj4+IHRoaXMNCj4gPiA+Pj4+Pj4gKyAgICAgKiBldmVudCB0byBub3RpZnkgYXBw bGljYXRpb24gdGhhdCBpdCBkZXRlY3RlZCBhbiBlcnJvciBhbmQgdGhlDQo+ID4gPj4+Pj4+ICsg ICAgICogcmVjb3ZlcnkgaXMgYWJvdXQgdG8gc3RhcnQuDQo+ID4gPj4+Pj4+ICsgICAgICoNCj4g PiA+Pj4+Pj4gKyAgICAgKiBVcG9uIHJlY2VpdmluZyB0aGUgZXZlbnQsIHRoZSBhcHBsaWNhdGlv biBzaG91bGQgbm90IGludm9rZSBhbnkNCj4gPiA+Pj4+Pj4gKyAgICAgKiBjb250cm9sIGFuZCBk YXRhIHBhdGggQVBJIHVudGlsIHJlY2VpdmluZw0KPiA+ID4+Pj4+PiArICAgICAqIFJURV9FVEhf RVZFTlRfUkVDT1ZFUllfU1VDQ0VTUyBvciBSVEVfRVRIX0VWRU5UX1JFQ09WRVJZX0ZBSUxFRA0K PiA+ID4+Pj4+PiArICAgICAqIGV2ZW50Lg0KPiA+ID4+Pj4+PiArICAgICAqDQo+ID4gPj4+Pj4+ ICsgICAgICogT25jZSB0aGlzIGV2ZW50IGlzIHJlcG9ydGVkLCB0aGUgUE1EIHdpbGwgc2V0IHRo ZSBkYXRhIHBhdGgNCj4gPiA+Pj4+Pj4gcG9pbnRlcnMNCj4gPiA+Pj4+Pj4gKyAgICAgKiB0byBk dW1teSBmdW5jdGlvbnMsIGFuZCByZS1zZXQgdGhlIGRhdGEgcGF0aCBwb2ludGVycyB0byB2YWxp ZA0KPiA+ID4+Pj4+PiArICAgICAqIGZ1bmN0aW9ucyBiZWZvcmUgcmVwb3J0aW5nIFJURV9FVEhf RVZFTlRfUkVDT1ZFUllfU1VDQ0VTUw0KPiA+ID4+Pj4+PiBldmVudC4NCj4gPiA+Pj4+Pj4gKyAg ICAgKg0KPiA+ID4+Pj4+PiAgICAgICAgKiBAbm90ZSBCZWZvcmUgdGhlIFBNRCByZXBvcnRzIHRo ZSByZWNvdmVyeSByZXN1bHQsDQo+ID4gPj4+Pj4+ICAgICAgICAqIHRoZSBQTUQgbWF5IHJlcG9y dCB0aGUgUlRFX0VUSF9FVkVOVF9FUlJfUkVDT1ZFUklORyBldmVudA0KPiA+ID4+Pj4+PiBhZ2Fp biwNCj4gPiA+Pj4+Pj4gICAgICAgICogYmVjYXVzZSBhIGxhcmdlciBlcnJvciBtYXkgb2NjdXIg ZHVyaW5nIHRoZSByZWNvdmVyeS4NCj4gPiA+Pj4+Pj4gICAgICAgICovDQo+ID4gPj4+Pj4+ICAg ICAgIFJURV9FVEhfRVZFTlRfRVJSX1JFQ09WRVJJTkcsDQo+ID4gPj4+Pj4+ICAgICAgIC8qKiBQ b3J0IHJlY292ZXJzIHN1Y2Nlc3NmdWxseSBmcm9tIHRoZSBlcnJvci4NCj4gPiA+Pj4+Pj4gLSAg ICAgKiBUaGUgUE1EIGFscmVhZHkgcmUtY29uZmlndXJlZCB0aGUgcG9ydCwNCj4gPiA+Pj4+Pj4g LSAgICAgKiBhbmQgdGhlIGVmZmVjdCBpcyB0aGUgc2FtZSBhcyBhIHJlc3RhcnQgb3BlcmF0aW9u Lg0KPiA+ID4+Pj4+PiArICAgICAqDQo+ID4gPj4+Pj4+ICsgICAgICogVGhlIFBNRCBhbHJlYWR5 IHJlLWNvbmZpZ3VyZWQgdGhlIHBvcnQ6DQo+ID4gPj4+Pj4+ICAgICAgICAqIGEpIFRoZSBmb2xs b3dpbmcgb3BlcmF0aW9uIHdpbGwgYmUgcmV0YWluZWQ6IChhbHBoYWJldGljYWxseSkNCj4gPiA+ Pj4+Pj4gICAgICAgICogICAgLSBEQ0IgY29uZmlndXJhdGlvbg0KPiA+ID4+Pj4+PiAgICAgICAg KiAgICAtIEZFQyBjb25maWd1cmF0aW9uDQo+ID4gPj4+Pj4+IEBAIC0zOTg5LDYgKzM5OTIsOSBA QCBlbnVtIHJ0ZV9ldGhfZXZlbnRfdHlwZSB7DQo+ID4gPj4+Pj4+ICAgICAgICAqICAgICAgKEBz ZWUgUlRFX0VUSF9ERVZfQ0FQQV9GTE9XX1NIQVJFRF9PQkpFQ1RfS0VFUCkNCj4gPiA+Pj4+Pj4g ICAgICAgICogYykgQW55IG90aGVyIGNvbmZpZ3VyYXRpb24gd2lsbCBub3QgYmUgc3RvcmVkDQo+ ID4gPj4+Pj4+ICAgICAgICAqICAgIGFuZCB3aWxsIG5lZWQgdG8gYmUgcmUtY29uZmlndXJlZC4N Cj4gPiA+Pj4+Pj4gKyAgICAgKg0KPiA+ID4+Pj4+PiArICAgICAqIFRoZSBhcHBsaWNhdGlvbiBz aG91bGQgcmVzdG9yZSBzb21lIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbg0KPiA+ID4+Pj4+PiAr ICAgICAqIChzZWUgYWJvdmUgY2FzZSBiL2MpLCBhbmQgdGhlbiBlbmFibGUgZGF0YSBwYXRoIEFQ SSBpbnZvY2F0aW9uLg0KPiA+ID4+Pj4+PiAgICAgICAgKi8NCj4gPiA+Pj4+Pj4gICAgICAgUlRF X0VUSF9FVkVOVF9SRUNPVkVSWV9TVUNDRVNTLA0KPiA+ID4+Pj4+PiAgICAgICAvKiogUG9ydCBy ZWNvdmVyeSBmYWlsZWQuDQo+ID4gPj4+Pj4+IGRpZmYgLS1naXQgYS9saWIvZXRoZGV2L3ZlcnNp b24ubWFwIGIvbGliL2V0aGRldi92ZXJzaW9uLm1hcA0KPiA+ID4+Pj4+PiBpbmRleCAzNTdkMWE4 OGMwLi5jMjczZTBiZGFlIDEwMDY0NA0KPiA+ID4+Pj4+PiAtLS0gYS9saWIvZXRoZGV2L3ZlcnNp b24ubWFwDQo+ID4gPj4+Pj4+ICsrKyBiL2xpYi9ldGhkZXYvdmVyc2lvbi5tYXANCj4gPiA+Pj4+ Pj4gQEAgLTMyMCw2ICszMjAsNyBAQCBJTlRFUk5BTCB7DQo+ID4gPj4+Pj4+ICAgICAgIHJ0ZV9l dGhfZGV2aWNlczsNCj4gPiA+Pj4+Pj4gICAgICAgcnRlX2V0aF9kbWFfem9uZV9mcmVlOw0KPiA+ ID4+Pj4+PiAgICAgICBydGVfZXRoX2RtYV96b25lX3Jlc2VydmU7DQo+ID4gPj4+Pj4+ICsgICAg cnRlX2V0aF9mcF9vcHNfc2V0dXA7DQo+ID4gPj4+Pj4+ICAgICAgIHJ0ZV9ldGhfaGFpcnBpbl9x dWV1ZV9wZWVyX2JpbmQ7DQo+ID4gPj4+Pj4+ICAgICAgIHJ0ZV9ldGhfaGFpcnBpbl9xdWV1ZV9w ZWVyX3VuYmluZDsNCj4gPiA+Pj4+Pj4gICAgICAgcnRlX2V0aF9oYWlycGluX3F1ZXVlX3BlZXJf dXBkYXRlOw0KPiA+ID4+Pj4+PiAtLQ0KPiA+ID4+Pj4+ICAgQWNrZWQtYnk6IEtvbnN0YW50aW4g QW5hbnlldiA8a29uc3RhbnRpbi5hbmFueWV2QGh1YXdlaS5jb20+DQo+ID4gPj4+Pj4NCj4gPiA+ Pj4+Pj4gMi4xNy4xDQo+ID4gPj4+Pj4NCj4gPiA+Pj4+DQo+ID4gPj4+DQo+ID4gPg0KPiA+DQo=