From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by dpdk.org (Postfix) with ESMTP id 92871271 for ; Thu, 29 Mar 2018 07:14:30 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga006.jf.intel.com ([10.7.209.51]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Mar 2018 22:14:29 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,375,1517904000"; d="scan'208";a="29820251" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by orsmga006.jf.intel.com with ESMTP; 28 Mar 2018 22:14:29 -0700 Received: from fmsmsx121.amr.corp.intel.com (10.18.125.36) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 28 Mar 2018 22:14:29 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx121.amr.corp.intel.com (10.18.125.36) with Microsoft SMTP Server (TLS) id 14.3.319.2; Wed, 28 Mar 2018 22:14:28 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.235]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.226]) with mapi id 14.03.0319.002; Thu, 29 Mar 2018 13:14:26 +0800 From: "Zhang, Helin" To: "Ananyev, Konstantin" , Chas Williams <3chas3@gmail.com>, "dev@dpdk.org" CC: "Lu, Wenzhuo" Thread-Topic: [PATCH] net/ixgbe: fix reconfiguration of rx queues Thread-Index: AQHTmRTYE/Umvo2hr02H2/aHNSRnBKOLCIkQgAAHiICAABD7QIAAATbggAAJ/ACAATFAgIAAADHAgAA7U4CAAUNsoIAAAHWggFkqKSA= Date: Thu, 29 Mar 2018 05:14:26 +0000 Message-ID: References: <20180129152115.26359-1-3chas3@gmail.com> <2601191342CEEE43887BDE71AB977258905653D7@IRSMSX103.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725890565545@IRSMSX103.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725890565566@IRSMSX103.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725890565AC3@IRSMSX103.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725890565AE3@IRSMSX103.ger.corp.intel.com> <2601191342CEEE43887BDE71AB977258905662FE@IRSMSX103.ger.corp.intel.com> <2601191342CEEE43887BDE71AB97725890566389@IRSMSX103.ger.corp.intel.com> In-Reply-To: <2601191342CEEE43887BDE71AB97725890566389@IRSMSX103.ger.corp.intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH] net/ixgbe: fix reconfiguration of rx queues X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 29 Mar 2018 05:14:31 -0000 DQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogZGV2IFttYWlsdG86ZGV2 LWJvdW5jZXNAZHBkay5vcmddIE9uIEJlaGFsZiBPZiBBbmFueWV2LCBLb25zdGFudGluDQo+IFNl bnQ6IFdlZG5lc2RheSwgSmFudWFyeSAzMSwgMjAxOCA5OjM5IFBNDQo+IFRvOiBDaGFzIFdpbGxp YW1zOyBkZXZAZHBkay5vcmcNCj4gQ2M6IEx1LCBXZW56aHVvDQo+IFN1YmplY3Q6IFJlOiBbZHBk ay1kZXZdIFtQQVRDSF0gbmV0L2l4Z2JlOiBmaXggcmVjb25maWd1cmF0aW9uIG9mIHJ4IHF1ZXVl cw0KPiANCj4gDQo+ID4NCj4gPg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gRnJvbTogIkNoYXJsZXMg KENoYXMpIFdpbGxpYW1zIiA8Y2hhczNAYXR0LmNvbT4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IC5k ZXZfY29uZmlndXJlKCkgbWF5IGJlIGNhbGxlZCBhZ2FpbiBhZnRlciBSWCBxdWV1ZXMgaGF2ZSBi ZWVuIHNldHVwLg0KPiA+ID4gPiA+IFRoaXMgaGFzIHRoZSBlZmZlY3Qgb2YgY2xlYXJpbmcgd2hh dGV2ZXIgc2V0dGluZyB0aGUgUlggcXVldWVzDQo+ID4gPiA+ID4gbWFkZSBmb3IgcnhfYnVsa19h bGxvY19hbGxvd2VkIG9yIHJ4X3ZlY19hbGxvd2VkLsKgIE9ubHkgcmVzZXQNCj4gPiA+ID4gPiB0 aGlzIGNvbmZpZ3VyYXRpb24gaXMgdGhlcmUgYXJlbid0IGFueSBjdXJyZW50bHkgYWxsb2NhdGVk IHF1ZXVlcy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEZpeGVzOiAwMWZhMWQ2MjE1ZmEgKCJpeGdi ZTogdW5pZnkgUnggc2V0dXAiKQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTog Q2hhcyBXaWxsaWFtcyA8Y2hhczNAYXR0LmNvbT4NCj4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPsKg IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jIHwgMTggKysrKysrKysrKysrKysrKy0t DQo+ID4gPiA+ID7CoCAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlv bnMoLSkNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9peGdi ZS9peGdiZV9ldGhkZXYuYw0KPiA+ID4gPiA+IGIvZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRo ZGV2LmMNCj4gPiA+ID4gPiBpbmRleCAzN2ViNjY4Li5iMzkyNDlhIDEwMDY0NA0KPiA+ID4gPiA+ IC0tLSBhL2RyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jDQo+ID4gPiA+ID4gKysrIGIv ZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2LmMNCj4gPiA+ID4gPiBAQCAtMjM0OCw2ICsy MzQ4LDcgQEAgaXhnYmVfZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiA+ID4g PipkZXYpDQo+ID4gPiA+ID7CoCDCoCDCoCDCoHN0cnVjdCBpeGdiZV9hZGFwdGVyICphZGFwdGVy ID0NCj4gPiA+ID4gPsKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgKHN0cnVjdCBpeGdiZV9hZGFwdGVy ICopZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiA+ID4gPsKgIMKgIMKgIMKgaW50IHJldDsN Cj4gPiA+ID4gPiArwqAgwqAgwqB1aW50MTZfdCBpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID7CoCDC oCDCoCDCoFBNRF9JTklUX0ZVTkNfVFJBQ0UoKTsNCj4gPiA+ID4gPsKgIMKgIMKgIMKgLyogbXVs dGlwZSBxdWV1ZSBtb2RlIGNoZWNraW5nICovICBAQCAtMjM2MywxMSArMjM2NCwxNyBAQA0KPiA+ ID4gPiA+aXhnYmVfZGV2X2NvbmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldikNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+wqAgwqAgwqAgwqAvKg0KPiA+ID4gPiA+wqAgwqAgwqAgwqAgKiBJbml0 aWFsaXplIHRvIFRSVUUuIElmIGFueSBvZiBSeCBxdWV1ZXMgZG9lc24ndCBtZWV0DQo+ID4gPiA+ ID50aGUgYnVsaw0KPiA+ID4gPiA+IC3CoCDCoCDCoCAqIGFsbG9jYXRpb24gb3IgdmVjdG9yIFJ4 IHByZWNvbmRpdGlvbnMgd2Ugd2lsbCByZXNldCBpdC4NCj4gPiA+ID4gPiArwqAgwqAgwqAgKiBh bGxvY2F0aW9uIG9yIHZlY3RvciBSeCBwcmVjb25kaXRpb25zIHdlIHdpbGwgcmVzZXQgaXQuDQo+ ID4gPiA+ID4gK1dlDQo+ID4gPiA+ID4gK8KgIMKgIMKgICogY2FuIG9ubHkgZG8gdGhpcyBpcyB0 aGVyZSBhcmVuJ3QgYW55IGV4aXN0aW5nIFJYIHF1ZXVlcy4NCj4gPiA+ID4gPsKgIMKgIMKgIMKg ICovDQo+ID4gPiA+ID4gK8KgIMKgIMKgZm9yIChpID0gMDsgaSA8IGRldi0+ZGF0YS0+bmJfcnhf cXVldWVzOyBpKyspIHsNCj4gPiA+ID4gPiArwqAgwqAgwqAgwqAgwqAgwqAgwqBpZiAoZGV2LT5k YXRhLT5yeF9xdWV1ZXNbaV0pDQo+ID4gPiA+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKg IMKgIMKgZ290byBvdXQ7DQo+ID4gPiA+ID4gK8KgIMKgIMKgfQ0KPiA+ID4gPiBJIGRvbid0IHNl ZSB3aHkgdGhpcyBpcyBuZWVkZWQuDQo+ID4gPiA+IEl0IHN1cmVseSBzaG91bGQgYmUgcG9zc2li bGUgdG8gcmVjb25maWd1cmUgZGV2aWNlIHdpdGggZGlmZmVyZW50DQo+ID4gPiA+IG51bWJlciBv ZiBxdWV1ZXMuDQo+ID4gPiA+IEtvbnN0YW50aW4NCj4gPiA+ID4NCj4gPiA+ID4gWWVzLCB5b3Ug Y2FuIGFkZCBuZXcgcXVldWVzIGJ1dCB5b3Ugc2hvdWxkbid0IHJlc2V0IHRoZSBidWxrIGFuZA0K PiA+ID4gPiB2ZWMgc2V0dGluZ3MgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBjaG9zZW4gYnkgdGhl IHByZXZpb3VzbHkgYWxsb2NhdGVkDQo+IHF1ZXVlcy4NCj4gPiA+IFdoeSBpcyB0aGF0PyBNaWdo dCBiZSBpbiBuZXcgcXVldWUgc2V0dXAgdXNlciB3aWxsIGNoYW5nZSBzZXR0aW5ncz8NCj4gPiA+ DQo+ID4gPiBUaGVyZSBpcyBubyByZXF1aXJlbWVudCB0aGF0IHRoZSB1c2VyIGFsbG9jYXRlcyBh bGwgdGhlIFJYIHF1ZXVlcyBpbiB0aGUNCj4gc2FtZSB3YXkuDQo+ID4gPiBTb21lIGNvdWxkIGhh dmUgYSBkaWZmZXJlbnQgbnVtYmVycyBvZiBkZXNjcyB3aGljaCBpcyBvbmUgb2YgdGhlDQo+ID4g PiBjaGVja3MgaW4NCj4gPiA+IGNoZWNrX3J4X2J1cnN0X2J1bGtfYWxsb2NfcHJlY29uZGl0aW9u cygpDQo+ID4gRXhhY3RseS4gVGhhdCdzwqAgd2h5IGFmdGVyIGRldl9jb25maWd1cmUoKSB1c2Vy IGhhcyB0byBjYWxsDQo+ID4gcXVldWVfc2V0dXAoKSBmb3IgKmFsbCogcXVldWVzIGhlIHBsYW5z IHRvIHVzZS4NCj4gPg0KPiA+IFdoZXJlIHRoZSBBUEkgb3IgZG9jdW1lbnRhdGlvbiBkb2VzIGl0 IHNheSB0aGF0IHRoaXMgaXMgbmVjZXNzYXJ5P8KgIElmDQo+ID4gdGhpcyB3YXMgYSByZXF1aXJl bWVudCB0aGVuIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpIHNob3VsZCBkcm9wIGV2ZXJ5DQo+ID4g YWxsb2NhdGVkIHF1ZXVlLsKgIFNpbmNlIGl0IGRvZXNuJ3QgZG8gdGhpcyBJIGNhbiBvbmx5IGFz c3VtZSB0aGF0IHlvdQ0KPiA+IGFyZSBhbGxvd2VkIHRvIGtlZXAgdXNpbmcgcXVldWVzIGFmdGVy IGNhbGxpbmcgcnRlX2V0aF9kZXZfY29uZmlndXJlKCkNCj4gd2l0aG91dCBoYXZpbmcgdG8gc2V0 IHRoZW0gdXAgYWdhaW4uDQo+ID4NCj4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPiBJ ZiB0aG9zZSBxdWV1ZXMNCj4gPiA+ID4gc2V0IHJ4X2J1bGtfYWxsb2NfYWxsb3dlZCB0byBiZSBm YWxzZSwgdGhlbiB0aGlzIGlzIGdvaW5nIHRvIGNhdXNlDQo+ID4gPiA+IGFuIGlzc3VlIHdpdGgg cXVldWUgcmVsZWFzZSBsYXRlciBvbi4NCj4gPiA+DQo+ID4gPiBDb3VsZCB5b3UgYmUgYSBiaXQg bW9yZSBzcGVjaWZpYyBoZXJlOg0KPiA+ID4gV2hhdCB5b3UgdGhpbmsgd2lsbCBiZSBicm9rZW4g aW4gaXhnYmVfcnhfcXVldWVfcmVsZWFzZSgpIGluIHRoYXQgY2FzZT8NCj4gPiA+DQo+ID4gPiBT b3JyeSwgSSBtaXNwb2tlLsKgIEl0J3MgdGhpcyBmdW5jdGlvbizCoGl4Z2JlX3Jlc2V0X3J4X3F1 ZXVlKCksDQo+ID4gPg0KPiA+ID4gwqAgwqAgwqAgwqAgLyoNCj4gPiA+IMKgIMKgIMKgIMKgIMKg KiBCeSBkZWZhdWx0LCB0aGUgUnggcXVldWUgc2V0dXAgZnVuY3Rpb24gYWxsb2NhdGVzIGVub3Vn aA0KPiA+ID4gbWVtb3J5IGZvcg0KPiA+ID4gwqAgwqAgwqAgwqAgwqAqIElYR0JFX01BWF9SSU5H X0RFU0MuwqAgVGhlIFJ4IEJ1cnN0IGJ1bGsgYWxsb2NhdGlvbg0KPiA+ID4gZnVuY3Rpb24gcmVx dWlyZXMNCj4gPiA+IMKgIMKgIMKgIMKgIMKgKiBleHRyYSBtZW1vcnkgYXQgdGhlIGVuZCBvZiB0 aGUgZGVzY3JpcHRvciByaW5nIHRvIGJlIHplcm8nZCBvdXQuDQo+ID4gPiDCoCDCoCDCoCDCoCDC oCovDQo+ID4gPiDCoCDCoCDCoCDCoCBpZiAoYWRhcHRlci0+cnhfYnVsa19hbGxvY19hbGxvd2Vk KQ0KPiA+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogemVybyBvdXQgZXh0cmEgbWVtb3J5 ICovDQo+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBsZW4gKz0gUlRFX1BNRF9JWEdCRV9S WF9NQVhfQlVSU1Q7DQo+ID4gPg0KPiA+ID4gwqAgwqAgwqAgwqAgLyoNCj4gPiA+IMKgIMKgIMKg IMKgIMKgKiBaZXJvIG91dCBIVyByaW5nIG1lbW9yeS4gWmVybyBvdXQgZXh0cmEgbWVtb3J5IGF0 IHRoZSBlbmQNCj4gPiA+IG9mDQo+ID4gPiDCoCDCoCDCoCDCoCDCoCogdGhlIEgvVyByaW5nIHNv IGxvb2stYWhlYWQgbG9naWMgaW4gUnggQnVyc3QgYnVsayBhbGxvYw0KPiA+ID4gZnVuY3Rpb24N Cj4gPiA+IMKgIMKgIMKgIMKgIMKgKiByZWFkcyBleHRyYSBtZW1vcnkgYXMgemVyb3MuDQo+ID4g PiDCoCDCoCDCoCDCoCDCoCovDQo+ID4gPiDCoCDCoCDCoCDCoCBmb3IgKGkgPSAwOyBpIDwgbGVu OyBpKyspIHsNCj4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHJ4cS0+cnhfcmluZ1tpXSA9 IHplcm9lZF9kZXNjOw0KPiA+ID4gwqAgwqAgwqAgwqAgfQ0KPiA+ID4NCj4gPiA+IFNvIHlvdSBw b3RlbnRpYWxseSB3cml0ZSBwYXN0IHRoZSByeF9yaW5nW10geW91IGFsbG9jYXRlZC4NCj4gPg0K PiA+IFdlIGFsd2F5cyBhbGxvY2F0ZSByeF9yaW5nW10gdG8gbWF4aW11bSBwb3NzaWJsZSBzaXpl IHBsdXMgc3BhY2UgZm9yIGZha2UNCj4gZGVzY3JpcHRvcnM6DQo+ID4NCj4gPiBkcml2ZXJzL25l dC9peGdiZS9peGdiZV9yeHR4Lmg6DQo+ID4gI2RlZmluZSBSWF9SSU5HX1NaICgoSVhHQkVfTUFY X1JJTkdfREVTQyArDQo+IFJURV9QTURfSVhHQkVfUlhfTUFYX0JVUlNUKQ0KPiA+ICogXA0KPiA+ IMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIMKgIHNpemVvZih1bmlvbiBpeGdiZV9hZHZfcnhf ZGVzYykpDQo+ID4NCj4gPiB0aGVuIGF0IGl4Z2JlX2Rldl9yeF9xdWV1ZV9zZXR1cCguLi4pOg0K PiA+DQo+ID4gwqAgLyoNCj4gPiDCoCDCoCAqIEFsbG9jYXRlIFJYIHJpbmcgaGFyZHdhcmUgZGVz Y3JpcHRvcnMuIEEgbWVtem9uZSBsYXJnZSBlbm91Z2ggdG8NCj4gPiDCoCDCoCAqIGhhbmRsZSB0 aGUgbWF4aW11bSByaW5nIHNpemUgaXMgYWxsb2NhdGVkIGluIG9yZGVyIHRvIGFsbG93IGZvcg0K PiA+IMKgIMKgICogcmVzaXppbmcgaW4gbGF0ZXIgY2FsbHMgdG8gdGhlIHF1ZXVlIHNldHVwIGZ1 bmN0aW9uLg0KPiA+IMKgIMKgICovDQo+ID4gwqAgwqAgcnogPSBydGVfZXRoX2RtYV96b25lX3Jl c2VydmUoZGV2LCAicnhfcmluZyIsIHF1ZXVlX2lkeCwNCj4gPiDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCBSWF9SSU5HX1NaLCBJWEdCRV9B TElHTiwNCj4gPiBzb2NrZXRfaWQpOw0KPiA+IMKgIMKgIC4uLg0KPiA+IMKgIMKgIHJ4cS0+cnhf cmluZyA9ICh1bmlvbiBpeGdiZV9hZHZfcnhfZGVzYyAqKSByei0+YWRkcjsNCj4gPg0KPiA+IFdo YXQgYWJvdXQgaGVyZT8NCj4gPg0KPiA+IMKgIMKgIMKgIMKgIGxlbiA9IG5iX2Rlc2M7DQo+ID4g wqAgwqAgwqAgwqAgaWYgKGFkYXB0ZXItPnJ4X2J1bGtfYWxsb2NfYWxsb3dlZCkNCj4gPiDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBsZW4gKz0gUlRFX1BNRF9JWEdCRV9SWF9NQVhfQlVSU1Q7DQo+ ID4NCj4gPiDCoCDCoCDCoCDCoCByeHEtPnN3X3JpbmcgPSBydGVfem1hbGxvY19zb2NrZXQoInJ4 cS0+c3dfcmluZyIsDQo+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgc2l6ZW9mKHN0cnVjdA0KPiA+IGl4Z2JlX3J4X2VudHJ5 KSAqIGxlbiwNCj4gPiDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDC oCDCoCDCoCDCoCDCoCDCoCDCoCBSVEVfQ0FDSEVfTElORV9TSVpFLA0KPiA+IHNvY2tldF9pZCk7 DQo+ID4NCj4gPiBUaGlzIGlzIGxhdGVyIHdhbGtlZCBhbmQgcmVzZXQgaW7CoGl4Z2JlX3Jlc2V0 X3J4X3F1ZXVlKCkNCj4gPg0KPiA+IMKgIMKgIMKgIMKgIGlmIChhZGFwdGVyLT5yeF9idWxrX2Fs bG9jX2FsbG93ZWQpDQo+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgLyogemVybyBvdXQgZXh0 cmEgbWVtb3J5ICovDQo+ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgbGVuICs9IFJURV9QTURf SVhHQkVfUlhfTUFYX0JVUlNUOw0KPiA+DQo+ID4gwqAgwqAgwqAgwqAgLyoNCj4gPiDCoCDCoCDC oCDCoCDCoCogWmVybyBvdXQgSFcgcmluZyBtZW1vcnkuIFplcm8gb3V0IGV4dHJhIG1lbW9yeSBh dCB0aGUgZW5kDQo+ID4gb2YNCj4gPiDCoCDCoCDCoCDCoCDCoCogdGhlIEgvVyByaW5nIHNvIGxv b2stYWhlYWQgbG9naWMgaW4gUnggQnVyc3QgYnVsayBhbGxvYw0KPiA+IGZ1bmN0aW9uDQo+ID4g wqAgwqAgwqAgwqAgwqAqIHJlYWRzIGV4dHJhIG1lbW9yeSBhcyB6ZXJvcy4NCj4gPiDCoCDCoCDC oCDCoCDCoCovDQo+ID4gwqAgwqAgwqAgwqAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7DQo+ ID4gwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgcnhxLT5yeF9yaW5nW2ldID0gemVyb2VkX2Rlc2M7 DQo+ID4gwqAgwqAgwqAgwqAgfQ0KPiA+DQo+ID4gwqAgwqAgwqAgwqAgLyoNCj4gPiDCoCDCoCDC oCDCoCDCoCogaW5pdGlhbGl6ZSBleHRyYSBzb2Z0d2FyZSByaW5nIGVudHJpZXMuIFNwYWNlIGZv ciB0aGVzZQ0KPiA+IGV4dHJhDQo+ID4gwqAgwqAgwqAgwqAgwqAqIGVudHJpZXMgaXMgYWx3YXlz IGFsbG9jYXRlZA0KPiA+IMKgIMKgIMKgIMKgIMKgKi8NCj4gPiDCoCDCoCDCoCDCoCBtZW1zZXQo JnJ4cS0+ZmFrZV9tYnVmLCAweDAsIHNpemVvZihyeHEtPmZha2VfbWJ1ZikpOw0KPiA+IMKgIMKg IMKgIMKgIGZvciAoaSA9IHJ4cS0+bmJfcnhfZGVzYzsgaSA8IGxlbjsgKytpKSB7DQo+ID4gwqAg wqAgwqAgwqAgwqAgwqAgwqAgwqAgcnhxLT5zd19yaW5nW2ldLm1idWYgPSAmcnhxLT5mYWtlX21i dWY7DQo+ID4gwqAgwqAgwqAgwqAgfQ0KPiA+DQo+IA0KPiBBcyBJIGNhbiBzZWUsIHJpZ2h0IG5v dyB3ZWxsIGJlaGF2aW5nIGFwcGxpY2F0aW9ucyAob25lIHRoYXQgYWx3YXlzIGNhbGwNCj4gcXVl dWVfc2V0dXAoKSBhZnRlciBkZXZfY29uZmlndXJlKSB3b3VsZG4ndCBiZSBhZmZlY3RlZC4NCj4g QnV0IHlvdSByaWdodCAtIGl0IGlzIGEgcG90ZW50aWFsIGlzc3VlIGFuZCBiZXR0ZXIgYmUgYWRk cmVzc2VkLg0KPiBUaG91Z2ggdG8gZml4IGl0IGFsbCB3ZSBuZWVkIGlzIGVpdGhlciBhbHdheXMg YWxsb2NhdGUgc3BhY2UgZm9yIGZha2VfbWJ1ZnMNCj4gaW5zaWRlIHN3X3JpbmcsIG9yIGp1c3Qg c3RvcmUgbnVtYmVyIG9mIGZha2UgbWJ1ZnMgaW5zaWRlIHJ4cS4NCj4gDQo+ID4gQ2xlYXJseSzC oHJ4X2J1bGtfYWxsb2NfYWxsb3dlZCBtdXN0IHJlbWFpbiBjb25zaXN0ZW50IGhlcmUuDQo+IA0K PiBJIGRvbid0IHRoaW5rIHNvLCBzZWUgYWJvdmUuDQo+IA0KPiA+DQo+ID4NCj4gPg0KPiA+DQo+ ID4gPg0KPiA+ID4gWW91IGNhbid0IGNoYW5nZcKgcnhfYnVsa19hbGxvY19hbGxvd2VkIG9uY2Ug aXQgaGFzIGJlZW4gc2V0IGFuZCB5b3UgaGF2ZQ0KPiBhbGxvY2F0ZWQgcXVldWVzLg0KPiA+ID4g SW4gZmFjdCwgeW91IGNhbid0IHJlYWxseSBsZXQgc29tZSBsYXRlciBxdWV1ZSBjaGFuZ2UgdGhp cyBzZXR0aW5nDQo+ID4gPiBhZnRlciB0aGUgZmlyc3QgcXVldWUgZGVjaWRlcyB3aGF0IEl0IHNo b3VsZCBiZS4NCj4gPg0KPiA+IFNlZSBhYm92ZS4NCj4gPg0KPiA+IEFnYWluLCBJIGhhdmUgcG9p bnRlZCBvdXQgd2hlcmUgdGhpcyBpcyBhIHByb2JsZW0uDQo+ID4NCj4gDQo+IEFnYWluLCB0aGlz IGlzIGJhc2VkIG9uIHlvdXIgYXNzdW1wdGlvbiAod3Jvbmcgb25lKSB0aGF0IGl0IGlzIG9rIG5v dCB0byBjYWxsDQo+IHF1ZXVlX3NldHVwKCkgYWZ0ZXIgZGV2X2NvbmZpZ3VyZSgpLg0KPiANCj4g Pg0KPiA+ID4NCj4gPiA+DQo+ID4gPg0KPiA+ID4gPsKgVGhpcyBicmVha3M6DQo+ID4gPiA+DQo+ ID4gPiA+IHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSguLi4sIDEsIDEsIC4uLik7DQo+ID4gPiA+IHJ4 X3F1ZXVlX3NldHVwKDEpDQo+ID4gPiA+IMKgIMKgW3J4X3F1ZXVlX3NldHVwIGRlY2lkZXMgdGhh dCBpdCBjYW4ndCBzdXBwb3J0DQo+ID4gPiA+IHJ4X2J1bGtfYWxsb2NfYWxsb3dlZF0gLi4NCj4g PiA+ID4NCj4gPiA+ID4gTGF0ZXIsIHlvdSB3YW50IHRvIGFkZCBzb21lIG1vcmUgcXVldWVzLMKg IHlvdSBjYWxsDQo+ID4gPiA+DQo+ID4gPiA+IGV0aF9ldGhfZGV2X2NvbmZpZ3VyZSguLi4sIDIs IDIsIC4uLik7DQo+ID4gPg0KPiA+ID4gQWZ0ZXIgeW91IGNhbGwgZGV2X2NvbmZpZ3VyZSwgeW91 J2xsIGhhdmUgdG8gZG8gcXVldWVfc2V0dXAoKSBmb3IgYWxsIHlvdXINCj4gcXVldWVzLg0KPiA+ ID4gZGV2X2NvbmZpZ3VyZSgpIGNhbiBjaGFuZ2VzIHNvbWUgZ2xvYmFsIGRldmljZSBzZXR0aW5n cywgc28gZWFjaA0KPiA+ID4gcXVldWUgaGFzIHRvIGJlIHJlY29uZmlndXJlZC4NCj4gPiA+IElu IHlvdXIgZXhhbXBsZSBJdCBzaG91bGQgYmU6DQo+ID4gPiBldGhfZXRoX2Rldl9jb25maWd1cmUo Li4uLCAyLCAyLCAuLi4pOyByeF9xdWV1ZV9zZXR1cCguLi4sMCwgLi4uKTsNCj4gPiA+IHJ4X3F1 ZXVlX3NldHVwKC4uLiwxLCAuLi4pOw0KPiA+ID4NCj4gPiA+IEtvbnN0YW50aW4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gTm90aGluZyBpbiB0aGUgQVBJIHNheXMgdGhpcyBtdXN0IGhhcHBlbi7CoCBJ ZiB0aGVyZSB3aGVyZSB0cnVlLA0KPiA+ID4gc2hvdWxkbid0IHJ0ZV9ldGhfZGV2X2NvbmZpZ3Vy ZSgpIGF1dG9tYXRpY2FsbHkgZHJvcCBhbnkgZXhpc3RpbmcgcXVldWVzPw0KPiA+DQo+ID4gT25l IG9mIHRoZSBmaXN0cyB0aGluZ3MgdGhhdCBpeGdiZV9kZXZfcnhfcXVldWVfc2V0dXAoKSAtIGNh bGxzDQo+IGl4Z2JlX3J4X3F1ZXVlX3JlbGVhc2UoKS4NCj4gPiBJbiB0aGVvcnkgdGhhdCBwcm9i YWJseSBjb3VsZCBiZSBtb3ZlZCB0byBydGVfZXRoX2Rldl9jb25maWd1cmUoKSwgYnV0IEkNCj4g dGhpbmsgY3VycmVudCBtb2RlbCBpcyBvayB0b28uDQo+ID4NCj4gPiA+VGhlcmUgaXMgZXhpc3Rp bmcgY29kZSB0aGF0IGRvZXNuJ3QgZG8gdGhpcy4NCj4gPg0KPiA+IFRoZW4gSSB0aGluayBpdCBp cyBhIGJ1ZyBpbiB0aGF0IGNvZGUuDQo+ID4NCj4gPiA+IFNob3cgbWUNCj4gPiA+IGluIHRoZSBB UEkgd2hlcmUgSSBhbSByZXF1aXJlZCB0byBzZXR1cCBhbGwgbXkgcXVldWVzIF9hZ2Fpbl8gYWZ0 ZXINCj4gPiA+IGNhbGxpbmcgcnRlX2V0aF9kZXZfY29uZmlndXJlKCkNCj4gPg0KPiA+IElmIHlv dSB0aGluayB0aGUgZG9jdW1lbnRhdGlvbiBkb2Vzbid0IGV4cGxhaW4gdGhhdCBwcm9wZXJsecKg IC3CoCBmZWVsDQo+ID4gZnJlZSB0byByYWlzZSBhIGJ1ZyBhZ2FpbnMgZG9jIGFuZC9vciBwcm92 aWRlIGEgcGF0Y2ggZm9yIGl0Lg0KPiA+IEFzIEnCoCBleHBsYWluZWQgYWJvdmUgLSBkZXZfY29u ZmlndXJlKCkgbWlnaHQgY2hhbmdlIHNvbWUgZ2xvYmFsDQo+ID4gc2V0dGluZ3MgKG1heF9yeF9w a3QsIGZsb3ctZGlyZWN0b3Igc2V0dGluZ3MsIGV0Yy4pwqAgdGhhdCB3b3VsZCBhZmZlY3QgZWFj aA0KPiBxdWV1ZSBpbiB0aGF0IGRldmljZS4NCj4gPiBTbyBxdWV1ZV9zZXR1cCgpIGlzIG5lY2Vz c2FyeSBhZnRlciBkZXZfY29uZmlndXJlKCkgdG8gbWFrZSBzdXJlIGl0IHdpbGwNCj4gb3BlcmF0 ZSBwcm9wZXJseS4NCj4gPg0KPiA+IElmIHlvdSB0aGluayB0aGUgZG9jdW1lbnRhdGlvbiBpcyB1 bmNsZWFyLCB0aGVuICp5b3UqIGZlZWwgZnJlZSB0bw0KPiA+IG9wZW4gYSBidWcgdG8gY2xhcmlm eSB3aGF0IHlvdSBiZWxpZXZlIGlzIHRoZSBjb3JyZWN0IGJlaGF2aW9yLsKgIFllcywNCj4gcnRl X2V0aF9kZXZfY29uZmlndXJlKCkgaXMgZnJlZSB0byBjaGFuZ2UgZ2xvYmFscy4NCj4gPiBBbnkg b2YgdGhlIEFQSSByb3V0aW5lcyBhcmUgZnJlZSB0byBjaGFuZ2UgZ2xvYmFscy7CoCBJdCBpcyB1 cCB0byB5b3VyDQo+ID4gUE1EIHRvIGRlYWwgd2l0aCB0aGUgZmFsbG91dCBmcm9tIGNoYW5naW5n IHN1Y2ggZ2xvYmFscy4NCj4gDQo+IEl0IGlzLCBidXQgZm9yIHRoYXQgYXBwbGljYXRpb24gaGF2 ZSB0byBmb2xsb3cgdGhlIGRlZmluZWQgcHJvY2VkdXJlLg0KPiBDdXJyZW50IHByb2NlZHVyZSBp czogZGV2X2NvbmZpZ3VyZSgpOyBxdWV1ZV9zZXR1cCgpOyBkZXZfc3RhcnQoKS4NCj4gWW91IGNh bid0IHNraXAgc2Vjb25kIHN0ZXAuDQo+IE1vc3QgZHJpdmVycyBhbGxvY2F0ZSBhbmQgZmlsbCB0 aGVpciBwcml2YXRlIHF1ZXVlIHN0cnVjdHVyZXMgaGVyZS4NCj4gU29tZSBvZiB0aGUgdmFsdWVz IGluc2lkZSB0aGVzZSBzdHJ1Y3R1cmVzIGFyZSBjYWxjdWxhdGVkIGJhc2VkIG9uIGRldl9jb25m DQo+IHBhcmFtZXRlcnMuDQo+IE9idmlvdXNseSBpZiBkZXZpY2UgY29uZmlndXJhdGlvbiBtaWdo dCBiZWVuIGNoYW5nZWQgLSB5b3UgbmVlZCB0bw0KPiByZWNvbmZpZ3VyZSB5b3VyIHF1ZXVlcyB0 b28uDQo+IA0KPiA+wqAgQm9uZGluZyBhbmQgdm14bmV0MyBhcmUganVzdCB0d28gZXhhbXBsZXMg b2YgdGhpcy4NCj4gDQo+IElmIHNvbWUgUE1EcyBmb3Igc29tZSBjYXNlcyBjYW4gd29yayB3aXRo b3V0IHF1ZXVlIHJlY29uZmlndXJhdGlvbiAtIGdyZWF0Lg0KPiBCdXQgaXQgZG9lc24ndCBtZWFu IHRoYXQgYWxsICBQTURzIHdvdWxkLg0KPiBNb3N0IEludGVsIFBNRHMgKGl4Z2JlLCBpNDBlLCBm bTEwaykgZG8gZXhwZWN0IHRoYXQgYmVoYXZpb3IuDQo+IEZyb20gbXkgY29kZSByZWFkaW5ncyAt IG1seCBhbmQgcWVkZSB0b28uDQo+IFByb2JhYmx5IHNvbWUgb3RoZXIgUE1EcyAtIEkgZGlkbid0 IGNoZWNrIGFsbCBvZiB0aGVtLg0KPiANCj4gPiBUaGUgImZpbmFsIiBxdWV1ZSAic2V0dXAiIGlz bid0IGRvbmUgdW50aWwgLmRldl9zdGFydCgpLsKgIEF0IHRoYXQgcG9pbnQsIHRoZQ0KPiBxdWV1 ZXMgYXJlIHVwZGF0ZWQuDQo+IA0KPiBJbiB0aGVvcnksICBpdCBpcyBwcm9iYWJseSBwb3NzaWJs ZSB0byBkbyB0aGluZ3MgaW4gYSB3YXkgeW91IHN1Z2dlc3Q6DQo+IG1ha2UgcXVldWVfc2V0dXAo KSBqdXN0IHRvIHN0b3JlIGlucHV0IHF1ZXVlIHBhcmFtZXRlcnMgYW5kIG1vdmUgYWxsIHRoZQ0K PiBhbGxvY2F0aW9uL2NvbmZpZ3VyYXRpb24gam9iIGludG8gZGV2X3N0YXJ0Lg0KPiBUaG91Z2gg aXQgd291bGQgcmVxdWlyZSBxdWl0ZSBhIGxvdCBvZiBjaGFuZ2VzIGluIG1hbnkgUE1EcyBhbmQg bWlnaHQNCj4gY29tcGxpY2F0ZSB0aGluZ3MuDQo+IFBlcnNvbmFsbHkgSSBkb24ndCBzZWUgYmln IGFkdmFudGFnZSBvZiBzdWNoIGNoYW5nZSwgd2hpbGUgdGhlIHJlcXVpcmVkIGVmZm9ydA0KPiB3 b3VsZCBiZSBzdWJzdGFudGlhbC4NCj4gRXNwZWNpYWxseSBpZiB3ZSBnb2luZyB0byBtb3ZlIHRv IHRoZSBtb2RlbCB3aXRoIGEgc2VwYXJhdGUgcngvdHggZnVuY3Rpb24gcGVyDQo+IHF1ZXVlIGFu eXdheS4NCj4gDQo+ID4gQWdhaW4sIHRoZXJlIGFyZSBleGlzdGluZyBleGFtcGxlcyBpbiB0aGUg ZXhpc3RpbmcgY29kZSBiYXNlIHRoYXQgZG8NCj4gPiBub3QgZm9sbG93IHlvdXIgaWRlYSBvZiB3 aGF0IHRoZSBBUEkgc2hvdWxkIGRvLsKgIEFyZSB0aGV5IHdyb25nIGFzIHdlbGw/DQo+IA0KPiBJ IHRoaW5rIHNvLg0KPiBBcyBJIHNhaWQgaXQgbWlnaHQgd29yayBmb3Igc29tZSBwYXJ0aWN1bGFy IFBNRCwgYnV0IGlmIGl0IGlzIGEgZ2VuZXJpYyBhcHAsIHRoZW4gaXQNCj4gc291bmRzIGxpa2Ug YSBidWcgdG8gbWUuDQo+IFdoYXQgcGFydGljdWxhciBhcHAgd2UgYXJlIHRhbGtpbmcgYWJvdXQ/ DQo+IA0KPiA+wqAgVGhlIHByZXBvbmRlcmFuY2Ugb2YgdGhlIGV2aWRlbmNlIHNlZW1zICB0byBi ZSBhZ2FpbnN0IHlvdXIgaWRlYSBvZg0KPiA+d2hhdCB0aGUgQVBJIHNob3VsZCBiZSBkb2luZy4N Cj4gPg0KPiA+IFF1ZXVlIHNldHVwIGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24uwqAgSWYgc29t ZSBQTUQgZG9lc24ndCBuZWVkIHRvDQo+ID4gZHJvcCBhbmQgc2V0dXAgcXVldWVzIGFnYWluIGFm dGVyIGFuIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpIHdoeSBhcmUgeW91DQo+IGZvcmNpbmcgaXQg dG8gZG8gc28/DQo+IA0KPiBJIGRvbid0IHRoaW5rIHF1ZXVlX3NldHVwKCkgaXMgdGhhdCBleHBl bnNpdmUgdG8gd29ycnkgYWJvdXQgdGhlIHByaWNlLg0KPiBXZSBhcmUgaW4gY29udHJvbCBwYXRo IGhlcmUuDQo+IEJ1dCBJdCBpcyB1cCB0byBQTUQgd2hhdCB0byBwdXQgaW5zaWRlIHRoYXQgcm91 dGluZS4NCj4gSWYgUE1EIGlzIHNtYXJ0IGVub3VnaCB0byBkZXRlY3QgdGhhdCBub3RoaW5nIHJl YWxseSBjaGFuZ2VkIGZyb20gbGFzdA0KPiBpbnZvY2F0aW9uIG9mIHF1ZXVlX3NldHVwKCkgYW5k IG5vIGV4dHJhIHdvcmsgcmVxdWlyZWQgLSB0aGVuIGl0IGNhbiBqdXN0DQo+IHJldHVybiBzdWNj ZXNzIHN0cmFpZ2h0d2F5Lg0KPiBBZ2Fpbiwgbm90aGluZyBwcmV2ZW50cyB1c2VyIHRvIG1ha2Ug c29tZSBzdHViIGxheWVyIG9uIHRvcCBvZiBjdXJyZW50DQo+IHJ0ZV9ldGhkZXYgQVBJIHRvIG1p bmltaXplIG51bWJlciBvZiBldGhfcXVldWVfc2V0dXAoKSBpbnZvY2F0aW9ucy4NCj4gDQo+ID7C oCBJdCB3YXMgdGhlIGNob2ljZQ0KPiA+IG9mIHRoZSBhdXRob3IgaW4gdGhlIGl4Z2JlIGRyaXZl ciB0byB1c2UgZ2xvYmFscyB0aGUgd2F5IHRoZXkgZGlkLg0KPiA+VGhlIGN1cnJlbnQgY29kZSBp cyBzdGlsbA0KPiA+IHNvbWV3aGF0IHdyb25nIGV2ZW4gYWZ0ZXIgdGhlIHBhdGNoIEkgcHJvcG9z ZS7CoCBUaGUgY29uZmlndXJhdGlvbiBvZg0KPiA+ZWFjaCBxdWV1ZSBkZXBlbmRzICBvbiB3aGF0 IHRoZSBwcmV2aW91cyBxdWV1ZXMgZGlkLsKgIFNpbmNlIHRoZXJlIGlzbid0DQo+ID5hIGJ1cnN0 IHBlciBxdWV1ZSByb3V0aW5lLCB0aGVyZSBuZWVkcyAgdG8gYmUgYSBzaW5nbGUgZGVjaXNpb24g bWFkZQ0KPiA+YWZ0ZXIgX2FsbF8gb2YgdGhlIHF1ZXVlcyBhcmUgY29uZmlndXJlZC7CoCBUaGF0 IGlzIHRoZSBvbmx5ICB0aW1lIHdoZW4geW91DQo+IGhhdmUgY29tcGxldGUga25vd2xlZGdlIHRv IG1ha2UgeW91ciBkZWNpc2lvbnMgYWJvdXQgd2hpY2ggUlggbW9kZSB0byB1c2UuDQo+ID4NCj4g Pg0KPiA+IEtvbnN0YW50aW4NCj4gPg0KPiA+ID4NCj4gPiA+DQo+ID4gPiA+IHJ4X3F1ZXVlX3Nl dHVwKDIpDQo+ID4gPiA+IMKgIFtyeF9xdWV1ZV9zZXR1cCBob3BlZnVsbHkgbWFrZXMgdGhlIHNh bWUgY2hvaWNlIGFzIHJ4cWlkID0gMT9dDQo+ID4gPiA+IC4uLg0KPiA+ID4gPg0KPiA+ID4gPiBJ cyBvbmUgc3VwcG9zZWQgdG8gcmVsZWFzZSBhbGwgcXVldWVzIGJlZm9yZSBjYWxsaW5nDQo+ID4g PiA+IHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSgpPyBJZiB0aGF0IGlzIHRydWUsIGl0IHNlZW1zIGxp a2UgdGhlDQo+ID4gPiA+IGNoYW5nZV9tdHUgZXhhbXBsZXMgSSBzZWUgYXJlIHBvc3NpYmx5IHdy b25nLsKgIEFzIHN1Z2dlc3RlZCBpbg0KPiBrZW5yZWxfbmljX2ludGVyZmFjZS5yc3Q6DQo+ID4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+IMKgIMKgIMKgIMKgIHJldCA9IHJ0ZV9ldGhfZGV2X2NvbmZp Z3VyZShwb3J0X2lkLCAxLCAxLCAmY29uZik7DQo+ID4gPiA+IMKgIMKgIMKgIMKgIGlmIChyZXQg PCAwKSB7DQo+ID4gPiA+IMKgIMKgIMKgIMKgIMKgIMKgIFJURV9MT0coRVJSLCBBUFAsICJGYWls IHRvIHJlY29uZmlndXJlIHBvcnQgJWRcbiIsDQo+ID4gPiA+IHBvcnRfaWQpOw0KPiA+ID4gPiDC oCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gcmV0Ow0KPiA+ID4gPiDCoCDCoCDCoCDCoCB9DQo+ID4g PiA+DQo+ID4gPiA+IMKgIMKgIMKgIMKgIC8qIFJlc3RhcnQgc3BlY2lmaWMgcG9ydCAqLw0KPiA+ ID4gPg0KPiA+ID4gPiDCoCDCoCDCoCDCoCByZXQgPSBydGVfZXRoX2Rldl9zdGFydChwb3J0X2lk KTsNCj4gPiA+ID4gwqAgwqAgwqAgwqAgaWYgKHJldCA8IDApIHsNCj4gPiA+ID4gwqAgwqAgwqAg wqAgwqAgwqAgwqBSVEVfTE9HKEVSUiwgQVBQLCAiRmFpbCB0byByZXN0YXJ0IHBvcnQgJWRcbiIs DQo+ID4gPiA+IHBvcnRfaWQpOw0KPiA+ID4gPiDCoCDCoCDCoCDCoCDCoCDCoCByZXR1cm4gcmV0 Ow0KPiA+ID4gPiDCoCDCoCDCoCDCoCB9DQo+ID4gPiA+DQo+ID4gPiA+IFRoaXMgaXMgd2lsbCBv YnZpb3VzbHkgcmVzZXQgdGhlIHJ4X2J1bGtfYWxsb2NfYWxsb3dlZCBhbmQgbm90IHJlYWxsb2Nh dGVkDQo+IHRoZSBSWCBxdWV1ZXMuDQo+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+ID7CoCDCoCDC oCDCoGFkYXB0ZXItPnJ4X2J1bGtfYWxsb2NfYWxsb3dlZCA9IHRydWU7DQo+ID4gPiA+ID7CoCDC oCDCoCDCoGFkYXB0ZXItPnJ4X3ZlY19hbGxvd2VkID0gdHJ1ZTsNCj4gPiA+ID4gPg0KPiA+ID4g PiA+ICtvdXQ6DQo+ID4gPiA+ID7CoCDCoCDCoCDCoHJldHVybiAwOw0KPiA+ID4gPiA+wqAgfQ0K PiA+ID4gPiA+DQo+ID4gPiA+ID4gQEAgLTQ5NTksNiArNDk2Niw3IEBAIGl4Z2JldmZfZGV2X2Nv bmZpZ3VyZShzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gPiA+ID4gPipkZXYpDQo+ID4gPiA+ID7CoCDC oCDCoCDCoHN0cnVjdCBydGVfZXRoX2NvbmYgKmNvbmYgPSAmZGV2LT5kYXRhLT5kZXZfY29uZjsN Cj4gPiA+ID4gPsKgIMKgIMKgIMKgc3RydWN0IGl4Z2JlX2FkYXB0ZXIgKmFkYXB0ZXIgPQ0KPiA+ ID4gPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAoc3RydWN0IGl4Z2JlX2Fk YXB0ZXINCj4gPiA+ID4gPiopZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsNCj4gPiA+ID4gPiArwqAg wqAgwqB1aW50MTZfdCBpOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID7CoCDCoCDCoCDCoFBNRF9JTklU X0xPRyhERUJVRywgIkNvbmZpZ3VyZWQgVmlydHVhbCBGdW5jdGlvbiBwb3J0IGlkOg0KPiA+ID4g PiA+JWQiLA0KPiA+ID4gPiA+wqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgwqAgZGV2LT5kYXRh LT5wb3J0X2lkKTsgIEBAIC00OTgxLDExICs0OTg5LDE3IEBADQo+ID4gPiA+ID5peGdiZXZmX2Rl dl9jb25maWd1cmUoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYpDQo+ID4gPiA+ID4NCj4gPiA+ID4g PsKgIMKgIMKgIMKgLyoNCj4gPiA+ID4gPsKgIMKgIMKgIMKgICogSW5pdGlhbGl6ZSB0byBUUlVF LiBJZiBhbnkgb2YgUnggcXVldWVzIGRvZXNuJ3QgbWVldA0KPiA+ID4gPiA+dGhlIGJ1bGsNCj4g PiA+ID4gPiAtwqAgwqAgwqAgKiBhbGxvY2F0aW9uIG9yIHZlY3RvciBSeCBwcmVjb25kaXRpb25z IHdlIHdpbGwgcmVzZXQgaXQuDQo+ID4gPiA+ID4gK8KgIMKgIMKgICogYWxsb2NhdGlvbiBvciB2 ZWN0b3IgUnggcHJlY29uZGl0aW9ucyB3ZSB3aWxsIHJlc2V0IGl0Lg0KPiA+ID4gPiA+ICtXZQ0K PiA+ID4gPiA+ICvCoCDCoCDCoCAqIGNhbiBvbmx5IGRvIHRoaXMgaXMgdGhlcmUgYXJlbid0IGFu eSBleGlzdGluZyBSWCBxdWV1ZXMuDQo+ID4gPiA+ID7CoCDCoCDCoCDCoCAqLw0KPiA+ID4gPiA+ ICvCoCDCoCDCoGZvciAoaSA9IDA7IGkgPCBkZXYtPmRhdGEtPm5iX3J4X3F1ZXVlczsgaSsrKSB7 DQo+ID4gPiA+ID4gK8KgIMKgIMKgIMKgIMKgIMKgIMKgaWYgKGRldi0+ZGF0YS0+cnhfcXVldWVz W2ldKQ0KPiA+ID4gPiA+ICvCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoCDCoGdvdG8gb3V0 Ow0KPiA+ID4gPiA+ICvCoCDCoCDCoH0NCj4gPiA+ID4gPsKgIMKgIMKgIMKgYWRhcHRlci0+cnhf YnVsa19hbGxvY19hbGxvd2VkID0gdHJ1ZTsNCj4gPiA+ID4gPsKgIMKgIMKgIMKgYWRhcHRlci0+ cnhfdmVjX2FsbG93ZWQgPSB0cnVlOw0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gK291dDoNCj4gPiA+ ID4gPsKgIMKgIMKgIMKgcmV0dXJuIDA7DQo+ID4gPiA+ID7CoCB9DQo+ID4gPiA+ID4NCj4gPiA+ ID4gPiAtLQ0KPiA+ID4gPiA+IDIuOS41DQoNCkknZCByZWplY3QgdGhpcyBwYXRjaCBmb3Igbm93 LCBhY2NvcmRpbmcgdG8gdGhlIGRpc2N1c3Npb24gYWJvdmUuDQpGZWVsIGZyZWUgdG8gd29yayBv dXIgbmV3IHZlcnNpb25zIHdpdGggc29tZSBhZ3JlZW1lbnQuIFNvcnJ5IGFuZCB0aGFua3MhDQoN Ci9IZWxpbg0K