From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id D4814A0350; Wed, 24 Jun 2020 05:09:44 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 870071D6FD; Wed, 24 Jun 2020 05:09:43 +0200 (CEST) Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by dpdk.org (Postfix) with ESMTP id D6B201D6FC for ; Wed, 24 Jun 2020 05:09:41 +0200 (CEST) IronPort-SDR: 9ThJC545HDIGpxnz6AQDpVeMw6mx32i3asxsKP8eQHelMxZop22my3QltyWJ2hh0eRlBjmGQCe oUARWktx2ZbA== X-IronPort-AV: E=McAfee;i="6000,8403,9661"; a="142534563" X-IronPort-AV: E=Sophos;i="5.75,273,1589266800"; d="scan'208";a="142534563" X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by fmsmga102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Jun 2020 20:09:40 -0700 IronPort-SDR: VidUk5BjLo/2hDf3zcdoWs96DyGcKYu8bzw1tEaskr3CM/1C20rKc5c2tAkZUtBh/ZxV6AMdqD dByTfpXzfwKQ== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.75,273,1589266800"; d="scan'208";a="263523604" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by fmsmga007.fm.intel.com with ESMTP; 23 Jun 2020 20:09:40 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 23 Jun 2020 20:09:40 -0700 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 23 Jun 2020 20:09:39 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 23 Jun 2020 20:09:39 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.85]) by shsmsx102.ccr.corp.intel.com ([169.254.2.36]) with mapi id 14.03.0439.000; Wed, 24 Jun 2020 11:09:36 +0800 From: "Sun, GuinanX" To: "Guo, Jia" , "dev@dpdk.org" CC: "Xing, Beilei" Thread-Topic: [PATCH] net/i40e: enable port filter by switch filter Thread-Index: AQHWP7GtRiN+juemnk6tFjgwN9JHDqjiiXYAgASfjTA= Date: Wed, 24 Jun 2020 03:09:35 +0000 Message-ID: <05758BDAD7FC8E4BAED63D0390A8A955869D09@SHSMSX101.ccr.corp.intel.com> References: <20200611052416.14592-1-guinanx.sun@intel.com> In-Reply-To: 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/i40e: enable port filter by switch filter 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" SGkgR3VvamlhDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogR3VvLCBK aWENCj4gU2VudDogU3VuZGF5LCBKdW5lIDIxLCAyMDIwIDg6MjkgUE0NCj4gVG86IFN1biwgR3Vp bmFuWCA8Z3VpbmFueC5zdW5AaW50ZWwuY29tPjsgZGV2QGRwZGsub3JnDQo+IENjOiBYaW5nLCBC ZWlsZWkgPGJlaWxlaS54aW5nQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSF0gbmV0 L2k0MGU6IGVuYWJsZSBwb3J0IGZpbHRlciBieSBzd2l0Y2ggZmlsdGVyDQo+IA0KPiBoaSwgZ3Vp bmFuDQo+IA0KPiBPbiA2LzExLzIwMjAgMToyNCBQTSwgR3VpbmFuIFN1biB3cm90ZToNCj4gPiBU aGlzIHBhdGNoIGVuYWJsZXMgdGhlIGZpbHRlciB0aGF0IHN1cHBvcnRzIHRvIGNyZWF0ZSBmb2xs b3dpbmcgdHdvDQo+ID4gcnVsZXMgZm9yIHRoZSBzYW1lIHBhY2tldCB0eXBlOg0KPiA+IE9uZSBp cyB0byBzZWxlY3Qgc291cmNlIHBvcnQgb25seSBhcyBpbnB1dCBzZXQgYW5kIHRoZSBvdGhlciBp cyBmb3INCj4gPiBkZXN0aW5hdGlvbiBwb3J0IG9ubHkuDQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBHdWluYW4gU3VuIDxndWluYW54LnN1bkBpbnRlbC5jb20+DQo+ID4gLS0tDQo+ID4gICBkb2Mv Z3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzA4LnJzdCB8ICAgNyArDQo+ID4gICBkcml2ZXJz L25ldC9pNDBlL2k0MGVfZXRoZGV2LmMgICAgICAgICB8IDE5NSArKysrKysrKysrKysrKysrKysr Ky0NCj4gPiAgIGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuaCAgICAgICAgIHwgIDE3ICsr DQo+ID4gICBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZmxvdy5jICAgICAgICAgICB8IDIyMyArKysr KysrKysrKysrKysrKysrKysrKysrDQo+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDQ0MSBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9uKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZG9jL2d1aWRlcy9y ZWxfbm90ZXMvcmVsZWFzZV8yMF8wOC5yc3QNCj4gPiBiL2RvYy9ndWlkZXMvcmVsX25vdGVzL3Jl bGVhc2VfMjBfMDgucnN0DQo+ID4gaW5kZXggN2E2N2M5NjBjLi4xNjg3MDEwMGQgMTAwNjQ0DQo+ ID4gLS0tIGEvZG9jL2d1aWRlcy9yZWxfbm90ZXMvcmVsZWFzZV8yMF8wOC5yc3QNCj4gPiArKysg Yi9kb2MvZ3VpZGVzL3JlbF9ub3Rlcy9yZWxlYXNlXzIwXzA4LnJzdA0KPiA+IEBAIC02OCw2ICs2 OCwxMyBAQCBOZXcgRmVhdHVyZXMNCj4gPg0KPiA+ICAgICAqIEFkZGVkIG5ldyBQTUQgZGV2YXJn IGBgcmVjbGFpbV9tZW1fbW9kZWBgLg0KPiA+DQo+ID4gKyogKipVcGRhdGVkIEludGVsIGk0MGUg ZHJpdmVyLioqDQo+ID4gKw0KPiA+ICsgIFVwZGF0ZWQgaTQwZSBQTUQgd2l0aCBuZXcgZmVhdHVy ZXMgYW5kIGltcHJvdmVtZW50cywgaW5jbHVkaW5nOg0KPiA+ICsNCj4gPiArICAqIEFkZGVkIGEg bmV3IHR5cGUgb2YgY2xvdWQgZmlsdGVyIHRvIHN1cHBvcnQgdGhlIGNvZXhpc3RlbmNlIG9mIHRo ZQ0KPiA+ICsgICAgZm9sbG93aW5nIHR3byBydWxlcy4gT25lIHNlbGVjdHMgTDQgZGVzdGluYXRp b24gYXMgaW5wdXQgc2V0IGFuZA0KPiA+ICsgICAgdGhlIG90aGVyIG9uZSBzZWxlY3RzIEw0IHNv dXJjZSBwb3J0Lg0KPiA+DQo+ID4gICBSZW1vdmVkIEl0ZW1zDQo+ID4gICAtLS0tLS0tLS0tLS0t DQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiA+IGIv ZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jIGluZGV4IDk3MGEzMWNiMi4uOTdlNmU5NDhh IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiA+ICsr KyBiL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYw0KPiA+IEBAIC03OTU2LDYgKzc5NTYs MTMgQEAgaTQwZV9kZXZfdHVubmVsX2ZpbHRlcl9zZXQoc3RydWN0IGk0MGVfcGYgKnBmLA0KPiA+ ICAgI2RlZmluZSBJNDBFX1RSX0dSRV9LRVlfTUFTSwkJCTB4NDAwDQo+ID4gICAjZGVmaW5lIEk0 MEVfVFJfR1JFX0tFWV9XSVRIX1hTVU1fTUFTSwkJMHg4MDANCj4gPiAgICNkZWZpbmUgSTQwRV9U Ul9HUkVfTk9fS0VZX01BU0sJCQkweDgwMDANCj4gPiArI2RlZmluZSBJNDBFX0FRQ19SRVBMQUNF X0NMT1VEX0NNRF9JTlBVVF9QT1JUX1RSX1dPUkQwIDB4NDkNCj4gI2RlZmluZQ0KPiA+ICtJNDBF X0FRQ19SRVBMQUNFX0NMT1VEX0NNRF9JTlBVVF9ESVJFQ1RJT05fV09SRDAgMHg0MQ0KPiAjZGVm aW5lDQo+ID4gK0k0MEVfQVFDX1JFUExBQ0VfQ0xPVURfQ01EX0lOUFVUX0lOR1JFU1NfV09SRDAg MHg4MA0KPiA+ICsjZGVmaW5lIEk0MEVfRElSRUNUSU9OX0lOR1JFU1NfS0VZCQkweDgwMDANCj4g PiArI2RlZmluZSBJNDBFX1RSX0w0X1RZUEVfVENQCQkJMHgyDQo+ID4gKyNkZWZpbmUgSTQwRV9U Ul9MNF9UWVBFX1VEUAkJCTB4NA0KPiA+ICsjZGVmaW5lIEk0MEVfVFJfTDRfVFlQRV9TQ1RQCQkJ MHg4DQo+ID4NCj4gPiAgIHN0YXRpYyBlbnVtDQo+ID4gICBpNDBlX3N0YXR1c19jb2RlIGk0MGVf cmVwbGFjZV9tcGxzX2wxX2ZpbHRlcihzdHJ1Y3QgaTQwZV9wZiAqcGYpIEBADQo+ID4gLTgyNTQs NiArODI2MSwxMzEgQEAgaTQwZV9zdGF0dXNfY29kZQ0KPiBpNDBlX3JlcGxhY2VfZ3RwX2Nsb3Vk X2ZpbHRlcihzdHJ1Y3QgaTQwZV9wZiAqcGYpDQo+ID4gICAJcmV0dXJuIHN0YXR1czsNCj4gPiAg IH0NCj4gPg0KPiA+ICtzdGF0aWMgZW51bSBpNDBlX3N0YXR1c19jb2RlDQo+ID4gK2k0MGVfcmVw bGFjZV9wb3J0X2wxX2ZpbHRlcihzdHJ1Y3QgaTQwZV9wZiAqcGYsIGVudW0NCj4gPiAraTQwZV9s NF9wb3J0X3R5cGUgcG9ydF90eXBlKSB7DQo+ID4gKwlzdHJ1Y3QgaTQwZV9hcWNfcmVwbGFjZV9j bG91ZF9maWx0ZXJzX2NtZF9idWYgIGZpbHRlcl9yZXBsYWNlX2J1ZjsNCj4gPiArCXN0cnVjdCBp NDBlX2FxY19yZXBsYWNlX2Nsb3VkX2ZpbHRlcnNfY21kICBmaWx0ZXJfcmVwbGFjZTsNCj4gPiAr CWVudW0gaTQwZV9zdGF0dXNfY29kZSBzdGF0dXMgPSBJNDBFX1NVQ0NFU1M7DQo+ID4gKwlzdHJ1 Y3QgaTQwZV9odyAqaHcgPSBJNDBFX1BGX1RPX0hXKHBmKTsNCj4gPiArCXN0cnVjdCBydGVfZXRo X2RldiAqZGV2ID0gKChzdHJ1Y3QgaTQwZV9hZGFwdGVyDQo+ID4gKyopaHctPmJhY2spLT5ldGhf ZGV2Ow0KPiA+ICsNCj4gDQo+IA0KPiBUaGUgQ2hyaXN0bWFzIHRyZWUgd291bGQgYmUgbG9vayBn b29kPw0KPiANClRoZSBkZWZpbml0aW9uIG9mIGRldiBoYXMgbm8gd2F5IHRvIGZvbGxvdyB0aGUg Y2hyaXNtYXMgdHJlZSBwcmluY2lwbGUuDQo+IA0KPiA+ICsJaWYgKHBmLT5zdXBwb3J0X211bHRp X2RyaXZlcikgew0KPiA+ICsJCVBNRF9EUlZfTE9HKEVSUiwgIlJlcGxhY2UgbDEgZmlsdGVyIGlz IG5vdCBzdXBwb3J0ZWQuIik7DQo+ID4gKwkJcmV0dXJuIEk0MEVfTk9UX1NVUFBPUlRFRDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwltZW1zZXQoJmZpbHRlcl9yZXBsYWNlLCAwLA0KPiA+ICsJICAg ICAgIHNpemVvZihzdHJ1Y3QgaTQwZV9hcWNfcmVwbGFjZV9jbG91ZF9maWx0ZXJzX2NtZCkpOw0K PiA+ICsJbWVtc2V0KCZmaWx0ZXJfcmVwbGFjZV9idWYsIDAsDQo+ID4gKwkgICAgICAgc2l6ZW9m KHN0cnVjdCBpNDBlX2FxY19yZXBsYWNlX2Nsb3VkX2ZpbHRlcnNfY21kX2J1ZikpOw0KPiA+ICsN Cj4gPiArCS8qIGNyZWF0ZSBMMSBmaWx0ZXIgKi8NCj4gPiArCWlmIChwb3J0X3R5cGUgPT0gSTQw RV9MNF9QT1JUX1RZUEVfU1JDKSB7DQo+ID4gKwkJZmlsdGVyX3JlcGxhY2Uub2xkX2ZpbHRlcl90 eXBlID0NCj4gPiArDQo+IAlJNDBFX0FRQ19SRVBMQUNFX0NMT1VEX0NNRF9JTlBVVF9GVl9UVU5O TEVfS0VZOw0KPiA+ICsJCWZpbHRlcl9yZXBsYWNlLm5ld19maWx0ZXJfdHlwZSA9DQo+IEk0MEVf QVFDX0FERF9DTE9VRF9GSUxURVJfMFgxMTsNCj4gPiArCQlmaWx0ZXJfcmVwbGFjZV9idWYuZGF0 YVs4XSA9DQo+ID4gKw0KPiAJSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfRlZfU1JD X1BPUlQ7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCWZpbHRlcl9yZXBsYWNlLm9sZF9maWx0ZXJf dHlwZSA9DQo+ID4gKw0KPiAJSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfRlZfU1RB R19JVkxBTjsNCj4gPiArCQlmaWx0ZXJfcmVwbGFjZS5uZXdfZmlsdGVyX3R5cGUgPQ0KPiBJNDBF X0FRQ19BRERfQ0xPVURfRklMVEVSXzBYMTA7DQo+ID4gKwkJZmlsdGVyX3JlcGxhY2VfYnVmLmRh dGFbOF0gPQ0KPiA+ICsNCj4gCUk0MEVfQVFDX1JFUExBQ0VfQ0xPVURfQ01EX0lOUFVUX0ZWX0RT VF9QT1JUOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCWZpbHRlcl9yZXBsYWNlLnRyX2JpdCA9IDA7 DQo+ID4gKwkvKiBQcmVwYXJlIHRoZSBidWZmZXIsIDMgZW50cmllcyAqLw0KPiA+ICsJZmlsdGVy X3JlcGxhY2VfYnVmLmRhdGFbMF0gPQ0KPiA+ICsNCj4gCUk0MEVfQVFDX1JFUExBQ0VfQ0xPVURf Q01EX0lOUFVUX0RJUkVDVElPTl9XT1JEMDsNCj4gPiArCWZpbHRlcl9yZXBsYWNlX2J1Zi5kYXRh WzBdIHw9DQo+ID4gKwkJSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfVkFMSURBVEVE Ow0KPiA+ICsJZmlsdGVyX3JlcGxhY2VfYnVmLmRhdGFbMl0gPSAweDAwOw0KPiA+ICsJZmlsdGVy X3JlcGxhY2VfYnVmLmRhdGFbM10gPQ0KPiA+ICsJCUk0MEVfQVFDX1JFUExBQ0VfQ0xPVURfQ01E X0lOUFVUX0lOR1JFU1NfV09SRDA7DQo+ID4gKwlmaWx0ZXJfcmVwbGFjZV9idWYuZGF0YVs0XSA9 DQo+ID4gKwkJSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfUE9SVF9UUl9XT1JEMDsN Cj4gPiArCWZpbHRlcl9yZXBsYWNlX2J1Zi5kYXRhWzRdIHw9DQo+ID4gKwkJSTQwRV9BUUNfUkVQ TEFDRV9DTE9VRF9DTURfSU5QVVRfVkFMSURBVEVEOw0KPiA+ICsJZmlsdGVyX3JlcGxhY2VfYnVm LmRhdGFbNV0gPSAweDAwOw0KPiA+ICsJZmlsdGVyX3JlcGxhY2VfYnVmLmRhdGFbNl0gPSBJNDBF X1RSX0w0X1RZUEVfVURQIHwNCj4gPiArCQlJNDBFX1RSX0w0X1RZUEVfVENQIHwNCj4gPiArCQlJ NDBFX1RSX0w0X1RZUEVfU0NUUDsNCj4gPiArCWZpbHRlcl9yZXBsYWNlX2J1Zi5kYXRhWzddID0g MHgwMDsNCj4gPiArCWZpbHRlcl9yZXBsYWNlX2J1Zi5kYXRhWzhdIHw9DQo+ID4gKwkJSTQwRV9B UUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfVkFMSURBVEVEOw0KPiA+ICsJZmlsdGVyX3JlcGxh Y2VfYnVmLmRhdGFbOV0gPSAweDAwOw0KPiA+ICsJZmlsdGVyX3JlcGxhY2VfYnVmLmRhdGFbMTBd ID0gMHhGRjsNCj4gPiArCWZpbHRlcl9yZXBsYWNlX2J1Zi5kYXRhWzExXSA9IDB4RkY7DQo+ID4g Kw0KPiA+ICsJc3RhdHVzID0gaTQwZV9hcV9yZXBsYWNlX2Nsb3VkX2ZpbHRlcnMoaHcsICZmaWx0 ZXJfcmVwbGFjZSwNCj4gPiArCQkJCQkJJmZpbHRlcl9yZXBsYWNlX2J1Zik7DQo+IA0KPiANCj4g UGxlYXNlIGNoZWNrIHRoZSBhbGlnbm1lbnQgaGVyZSBhbmQgYmVsb3cuDQpQYXRjaCBWMiB3aWxs IGZpeCB0aGlzIHByb2JsZW0uDQo+IA0KPiANCj4gPiArCWlmICghc3RhdHVzICYmIChmaWx0ZXJf cmVwbGFjZS5vbGRfZmlsdGVyX3R5cGUgIT0NCj4gPiArCQkJZmlsdGVyX3JlcGxhY2UubmV3X2Zp bHRlcl90eXBlKSkNCj4gPiArCQlQTURfRFJWX0xPRyhXQVJOSU5HLCAiaTQwZSBkZXZpY2UgJXMg Y2hhbmdlZCBjbG91ZCBsMQ0KPiB0eXBlLiINCj4gPiArCQkJICAgICIgb3JpZ2luYWw6IDB4JXgs IG5ldzogMHgleCIsDQo+ID4gKwkJCSAgICBkZXYtPmRldmljZS0+bmFtZSwNCj4gPiArCQkJICAg IGZpbHRlcl9yZXBsYWNlLm9sZF9maWx0ZXJfdHlwZSwNCj4gPiArCQkJICAgIGZpbHRlcl9yZXBs YWNlLm5ld19maWx0ZXJfdHlwZSk7DQo+ID4gKw0KPiA+ICsJcmV0dXJuIHN0YXR1czsNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGVudW0NCj4gPiAraTQwZV9zdGF0dXNfY29kZSBpNDBlX3Jl cGxhY2VfcG9ydF9jbG91ZF9maWx0ZXIoc3RydWN0IGk0MGVfcGYgKnBmLA0KPiA+ICsJCQkJCQll bnVtIGk0MGVfbDRfcG9ydF90eXBlDQo+IHBvcnRfdHlwZSkNCj4gDQo+IA0KPiBQbGVhc2UgY2hl Y2sgdGhlIGxpbWl0IG9mIHRoZSBsaW5lIGNoYXJhY3RlcnMgYW5kIGJlbG93LiBJIHRoaW5rIGNo ZWNrcGF0Y2ggY291bGQNCj4gaGVscCB5b3UgZm9yIHRoYXQuDQoNClBhdGNoIFYyIHdpbGwgZml4 IHRoaXMgcHJvYmxlbS4NCj4gDQo+IA0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgaTQwZV9hcWNfcmVw bGFjZV9jbG91ZF9maWx0ZXJzX2NtZF9idWYgIGZpbHRlcl9yZXBsYWNlX2J1ZjsNCj4gPiArCXN0 cnVjdCBpNDBlX2FxY19yZXBsYWNlX2Nsb3VkX2ZpbHRlcnNfY21kICBmaWx0ZXJfcmVwbGFjZTsN Cj4gPiArCWVudW0gaTQwZV9zdGF0dXNfY29kZSBzdGF0dXMgPSBJNDBFX1NVQ0NFU1M7DQo+ID4g KwlzdHJ1Y3QgaTQwZV9odyAqaHcgPSBJNDBFX1BGX1RPX0hXKHBmKTsNCj4gPiArCXN0cnVjdCBy dGVfZXRoX2RldiAqZGV2ID0gKChzdHJ1Y3QgaTQwZV9hZGFwdGVyICopaHctPmJhY2spLT5ldGhf ZGV2Ow0KPiA+ICsNCj4gPiArCWlmIChwZi0+c3VwcG9ydF9tdWx0aV9kcml2ZXIpIHsNCj4gPiAr CQlQTURfRFJWX0xPRyhFUlIsICJSZXBsYWNlIGNsb3VkIGZpbHRlciBpcyBub3Qgc3VwcG9ydGVk LiIpOw0KPiA+ICsJCXJldHVybiBJNDBFX05PVF9TVVBQT1JURUQ7DQo+ID4gKwl9DQo+ID4gKw0K PiA+ICsJbWVtc2V0KCZmaWx0ZXJfcmVwbGFjZSwgMCwNCj4gPiArCSAgICAgICBzaXplb2Yoc3Ry dWN0IGk0MGVfYXFjX3JlcGxhY2VfY2xvdWRfZmlsdGVyc19jbWQpKTsNCj4gPiArCW1lbXNldCgm ZmlsdGVyX3JlcGxhY2VfYnVmLCAwLA0KPiA+ICsJICAgICAgIHNpemVvZihzdHJ1Y3QgaTQwZV9h cWNfcmVwbGFjZV9jbG91ZF9maWx0ZXJzX2NtZF9idWYpKTsNCj4gPiArDQo+ID4gKwlpZiAocG9y dF90eXBlID09IEk0MEVfTDRfUE9SVF9UWVBFX1NSQykgew0KPiA+ICsJCWZpbHRlcl9yZXBsYWNl Lm9sZF9maWx0ZXJfdHlwZSA9DQo+IEk0MEVfQVFDX0FERF9DTE9VRF9GSUxURVJfSUlQOw0KPiA+ ICsJCWZpbHRlcl9yZXBsYWNlLm5ld19maWx0ZXJfdHlwZSA9DQo+ID4gKwkJCUk0MEVfQVFDX0FE RF9MMV9GSUxURVJfMFgxMTsNCj4gPiArCQlmaWx0ZXJfcmVwbGFjZV9idWYuZGF0YVs0XSA9DQo+ IEk0MEVfQVFDX0FERF9DTE9VRF9GSUxURVJfMFgxMTsNCj4gPiArCX0gZWxzZSB7DQo+ID4gKwkJ ZmlsdGVyX3JlcGxhY2Uub2xkX2ZpbHRlcl90eXBlID0NCj4gSTQwRV9BUUNfQUREX0NMT1VEX0ZJ TFRFUl9PSVA7DQo+ID4gKwkJZmlsdGVyX3JlcGxhY2UubmV3X2ZpbHRlcl90eXBlID0NCj4gPiAr CQkJSTQwRV9BUUNfQUREX0NMT1VEX0ZJTFRFUl8wWDEwOw0KPiA+ICsJCWZpbHRlcl9yZXBsYWNl X2J1Zi5kYXRhWzRdID0NCj4gSTQwRV9BUUNfQUREX0NMT1VEX0ZJTFRFUl8wWDEwOw0KPiA+ICsJ fQ0KPiA+ICsNCj4gPiArCWZpbHRlcl9yZXBsYWNlLnZhbGlkX2ZsYWdzID0gSTQwRV9BUUNfUkVQ TEFDRV9DTE9VRF9GSUxURVI7DQo+ID4gKwlmaWx0ZXJfcmVwbGFjZS50cl9iaXQgPSAwOw0KPiA+ ICsJLyogUHJlcGFyZSB0aGUgYnVmZmVyLCAyIGVudHJpZXMgKi8NCj4gPiArCWZpbHRlcl9yZXBs YWNlX2J1Zi5kYXRhWzBdID0NCj4gSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfRlZf U1RBRzsNCj4gPiArCWZpbHRlcl9yZXBsYWNlX2J1Zi5kYXRhWzBdIHw9DQo+ID4gKwkJSTQwRV9B UUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfVkFMSURBVEVEOw0KPiA+ICsJZmlsdGVyX3JlcGxh Y2VfYnVmLmRhdGFbNF0gfD0NCj4gPiArCQlJNDBFX0FRQ19SRVBMQUNFX0NMT1VEX0NNRF9JTlBV VF9WQUxJREFURUQ7DQo+ID4gKwlzdGF0dXMgPSBpNDBlX2FxX3JlcGxhY2VfY2xvdWRfZmlsdGVy cyhodywgJmZpbHRlcl9yZXBsYWNlLA0KPiA+ICsJCQkJCQkmZmlsdGVyX3JlcGxhY2VfYnVmKTsN Cj4gPiArDQo+ID4gKwlpZiAoIXN0YXR1cyAmJiAoZmlsdGVyX3JlcGxhY2Uub2xkX2ZpbHRlcl90 eXBlICE9DQo+ID4gKwkJCWZpbHRlcl9yZXBsYWNlLm5ld19maWx0ZXJfdHlwZSkpDQo+ID4gKwkJ UE1EX0RSVl9MT0coV0FSTklORywgImk0MGUgZGV2aWNlICVzIGNoYW5nZWQgY2xvdWQgZmlsdGVy DQo+IHR5cGUuIg0KPiA+ICsJCQkgICAgIiBvcmlnaW5hbDogMHgleCwgbmV3OiAweCV4IiwNCj4g PiArCQkJICAgIGRldi0+ZGV2aWNlLT5uYW1lLA0KPiA+ICsJCQkgICAgZmlsdGVyX3JlcGxhY2Uu b2xkX2ZpbHRlcl90eXBlLA0KPiA+ICsJCQkgICAgZmlsdGVyX3JlcGxhY2UubmV3X2ZpbHRlcl90 eXBlKTsNCj4gPiArDQo+ID4gKwlyZXR1cm4gc3RhdHVzOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAg aW50DQo+ID4gICBpNDBlX2Rldl9jb25zaXN0ZW50X3R1bm5lbF9maWx0ZXJfc2V0KHN0cnVjdCBp NDBlX3BmICpwZiwNCj4gPiAgIAkJICAgICAgc3RydWN0IGk0MGVfdHVubmVsX2ZpbHRlcl9jb25m ICp0dW5uZWxfZmlsdGVyLA0KPiA+IEBAIC04NDAxLDYgKzg1MzMsNTggQEAgaTQwZV9kZXZfY29u c2lzdGVudF90dW5uZWxfZmlsdGVyX3NldChzdHJ1Y3QNCj4gaTQwZV9wZiAqcGYsDQo+ID4gICAJ CXBmaWx0ZXItPmdlbmVyYWxfZmllbGRzWzBdID0gdHVubmVsX2ZpbHRlci0+aW5uZXJfdmxhbjsN Cj4gPiAgIAkJcGZpbHRlci0+Z2VuZXJhbF9maWVsZHNbMV0gPSB0dW5uZWxfZmlsdGVyLT5vdXRl cl92bGFuOw0KPiA+ICAgCQliaWdfYnVmZmVyID0gMTsNCj4gPiArCQlicmVhazsNCj4gPiArCWNh c2UgSTQwRV9UVU5ORUxfVFlQRV9VRFA6DQo+ID4gKwljYXNlIEk0MEVfVFVOTkVMX1RZUEVfVENQ Og0KPiA+ICsJY2FzZSBJNDBFX1RVTk5FTF9UWVBFX1NDVFA6DQo+ID4gKwkJaWYgKHR1bm5lbF9m aWx0ZXItPnBvcnRfdHlwZSA9PSBJNDBFX0w0X1BPUlRfVFlQRV9TUkMpIHsNCj4gPiArCQkJaWYg KCFwZi0+c3BvcnRfcmVwbGFjZV9mbGFnKSB7DQo+ID4gKwkJCQlpNDBlX3JlcGxhY2VfcG9ydF9s MV9maWx0ZXIocGYsIHR1bm5lbF9maWx0ZXItDQo+ID5wb3J0X3R5cGUpOw0KPiA+ICsJCQkJaTQw ZV9yZXBsYWNlX3BvcnRfY2xvdWRfZmlsdGVyKHBmLA0KPiB0dW5uZWxfZmlsdGVyLT5wb3J0X3R5 cGUpOw0KPiA+ICsJCQkJcGYtPnNwb3J0X3JlcGxhY2VfZmxhZyA9IDE7DQo+ID4gKwkJCX0NCj4g PiArCQkJdGVpZF9sZSA9IHJ0ZV9jcHVfdG9fbGVfMzIodHVubmVsX2ZpbHRlci0+dGVuYW50X2lk KTsNCj4gPiArCQkJcGZpbHRlci0NCj4gPmdlbmVyYWxfZmllbGRzW0k0MEVfQVFDX0FERF9DTE9V RF9GVl9GTFVfMFgxMV9XT1JEMF0gPQ0KPiA+ICsJCQkJSTQwRV9ESVJFQ1RJT05fSU5HUkVTU19L RVk7DQo+ID4gKw0KPiA+ICsJCQlpZiAodHVubmVsX2ZpbHRlci0+dHVubmVsX3R5cGUgPT0NCj4g STQwRV9UVU5ORUxfVFlQRV9VRFApDQo+ID4gKwkJCQlwZmlsdGVyLQ0KPiA+Z2VuZXJhbF9maWVs ZHNbSTQwRV9BUUNfQUREX0NMT1VEX0ZWX0ZMVV8wWDExX1dPUkQxXSA9DQo+ID4gKwkJCQkJSTQw RV9UUl9MNF9UWVBFX1VEUDsNCj4gPiArCQkJZWxzZSBpZiAodHVubmVsX2ZpbHRlci0+dHVubmVs X3R5cGUgPT0NCj4gSTQwRV9UVU5ORUxfVFlQRV9UQ1ApDQo+ID4gKwkJCQlwZmlsdGVyLQ0KPiA+ Z2VuZXJhbF9maWVsZHNbSTQwRV9BUUNfQUREX0NMT1VEX0ZWX0ZMVV8wWDExX1dPUkQxXSA9DQo+ ID4gKwkJCQkJSTQwRV9UUl9MNF9UWVBFX1RDUDsNCj4gPiArCQkJZWxzZQ0KPiA+ICsJCQkJcGZp bHRlci0NCj4gPmdlbmVyYWxfZmllbGRzW0k0MEVfQVFDX0FERF9DTE9VRF9GVl9GTFVfMFgxMV9X T1JEMV0gPQ0KPiA+ICsJCQkJCUk0MEVfVFJfTDRfVFlQRV9TQ1RQOw0KPiA+ICsNCj4gPiArCQkJ cGZpbHRlci0NCj4gPmdlbmVyYWxfZmllbGRzW0k0MEVfQVFDX0FERF9DTE9VRF9GVl9GTFVfMFgx MV9XT1JEMl0gPQ0KPiA+ICsJCQkJKHRlaWRfbGUgPj4gMTYpICYgMHhGRkZGOw0KPiA+ICsJCQli aWdfYnVmZmVyID0gMTsNCj4gPiArCQl9IGVsc2Ugew0KPiA+ICsJCQlpZiAoIXBmLT5kcG9ydF9y ZXBsYWNlX2ZsYWcpIHsNCj4gPiArCQkJCWk0MGVfcmVwbGFjZV9wb3J0X2wxX2ZpbHRlcihwZiwg dHVubmVsX2ZpbHRlci0NCj4gPnBvcnRfdHlwZSk7DQo+ID4gKwkJCQlpNDBlX3JlcGxhY2VfcG9y dF9jbG91ZF9maWx0ZXIocGYsDQo+IHR1bm5lbF9maWx0ZXItPnBvcnRfdHlwZSk7DQo+ID4gKwkJ CQlwZi0+ZHBvcnRfcmVwbGFjZV9mbGFnID0gMTsNCj4gPiArCQkJfQ0KPiA+ICsJCQl0ZWlkX2xl ID0gcnRlX2NwdV90b19sZV8zMih0dW5uZWxfZmlsdGVyLT50ZW5hbnRfaWQpOw0KPiA+ICsJCQlw ZmlsdGVyLQ0KPiA+Z2VuZXJhbF9maWVsZHNbSTQwRV9BUUNfQUREX0NMT1VEX0ZWX0ZMVV8wWDEw X1dPUkQwXSA9DQo+ID4gKwkJCQlJNDBFX0RJUkVDVElPTl9JTkdSRVNTX0tFWTsNCj4gPiArDQo+ ID4gKwkJCWlmICh0dW5uZWxfZmlsdGVyLT50dW5uZWxfdHlwZSA9PQ0KPiBJNDBFX1RVTk5FTF9U WVBFX1VEUCkNCj4gPiArCQkJCXBmaWx0ZXItDQo+ID5nZW5lcmFsX2ZpZWxkc1tJNDBFX0FRQ19B RERfQ0xPVURfRlZfRkxVXzBYMTBfV09SRDFdID0NCj4gPiArCQkJCQlJNDBFX1RSX0w0X1RZUEVf VURQOw0KPiA+ICsJCQllbHNlIGlmICh0dW5uZWxfZmlsdGVyLT50dW5uZWxfdHlwZSA9PQ0KPiBJ NDBFX1RVTk5FTF9UWVBFX1RDUCkNCj4gPiArCQkJCXBmaWx0ZXItDQo+ID5nZW5lcmFsX2ZpZWxk c1tJNDBFX0FRQ19BRERfQ0xPVURfRlZfRkxVXzBYMTBfV09SRDFdID0NCj4gPiArCQkJCQlJNDBF X1RSX0w0X1RZUEVfVENQOw0KPiA+ICsJCQllbHNlDQo+ID4gKwkJCQlwZmlsdGVyLQ0KPiA+Z2Vu ZXJhbF9maWVsZHNbSTQwRV9BUUNfQUREX0NMT1VEX0ZWX0ZMVV8wWDEwX1dPUkQxXSA9DQo+ID4g KwkJCQkJSTQwRV9UUl9MNF9UWVBFX1NDVFA7DQo+ID4gKw0KPiA+ICsJCQlwZmlsdGVyLQ0KPiA+ Z2VuZXJhbF9maWVsZHNbSTQwRV9BUUNfQUREX0NMT1VEX0ZWX0ZMVV8wWDEwX1dPUkQyXSA9DQo+ ID4gKwkJCQkodGVpZF9sZSA+PiAxNikgJiAweEZGRkY7DQo+ID4gKwkJCWJpZ19idWZmZXIgPSAx Ow0KPiA+ICsJCX0NCj4gPiArDQo+ID4gICAJCWJyZWFrOw0KPiA+ICAgCWRlZmF1bHQ6DQo+ID4g ICAJCS8qIE90aGVyIHR1bm5lbCB0eXBlcyBpcyBub3Qgc3VwcG9ydGVkLiAqLw0KPiA+IEBAIC04 NDI0LDcgKzg2MDgsMTYgQEAgaTQwZV9kZXZfY29uc2lzdGVudF90dW5uZWxfZmlsdGVyX3NldChz dHJ1Y3QNCj4gaTQwZV9wZiAqcGYsDQo+ID4gICAJZWxzZSBpZiAodHVubmVsX2ZpbHRlci0+dHVu bmVsX3R5cGUgPT0gSTQwRV9UVU5ORUxfVFlQRV9RSU5RKQ0KPiA+ICAgCQlwZmlsdGVyLT5lbGVt ZW50LmZsYWdzIHw9DQo+ID4gICAJCQlJNDBFX0FRQ19BRERfQ0xPVURfRklMVEVSXzBYMTA7DQo+ ID4gLQllbHNlIHsNCj4gPiArCWVsc2UgaWYgKHR1bm5lbF9maWx0ZXItPnR1bm5lbF90eXBlID09 IEk0MEVfVFVOTkVMX1RZUEVfVURQIHx8DQo+ID4gKwkJdHVubmVsX2ZpbHRlci0+dHVubmVsX3R5 cGUgPT0gSTQwRV9UVU5ORUxfVFlQRV9UQ1AgfHwNCj4gPiArCQl0dW5uZWxfZmlsdGVyLT50dW5u ZWxfdHlwZSA9PSBJNDBFX1RVTk5FTF9UWVBFX1NDVFApIHsNCj4gPiArCQlpZiAodHVubmVsX2Zp bHRlci0+cG9ydF90eXBlID09IEk0MEVfTDRfUE9SVF9UWVBFX1NSQykNCj4gPiArCQkJcGZpbHRl ci0+ZWxlbWVudC5mbGFncyB8PQ0KPiA+ICsJCQkJSTQwRV9BUUNfQUREX0wxX0ZJTFRFUl8wWDEx Ow0KPiA+ICsJCWVsc2UNCj4gPiArCQkJcGZpbHRlci0+ZWxlbWVudC5mbGFncyB8PQ0KPiA+ICsJ CQkJSTQwRV9BUUNfQUREX0NMT1VEX0ZJTFRFUl8wWDEwOw0KPiA+ICsJfSBlbHNlIHsNCj4gPiAg IAkJdmFsID0gaTQwZV9kZXZfZ2V0X2ZpbHRlcl90eXBlKHR1bm5lbF9maWx0ZXItPmZpbHRlcl90 eXBlLA0KPiA+ICAgCQkJCQkJJnBmaWx0ZXItPmVsZW1lbnQuZmxhZ3MpOw0KPiA+ICAgCQlpZiAo dmFsIDwgMCkgew0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2 LmggYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmgNCj4gPiBpbmRleCBlNWQwY2U1M2Yu LmI3OWFiNTg4MCAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2 LmgNCj4gPiArKysgYi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmgNCj4gPiBAQCAtNzY3 LDYgKzc2Nyw4IEBAIHN0cnVjdCBpNDBlX3Jzc19wYXR0ZXJuX2luZm8gew0KPiA+DQo+ID4gICAj ZGVmaW5lIEk0MEVfQVFDX1JFUExBQ0VfQ0xPVURfQ01EX0lOUFVUX0ZWX1RFSURfV09SRDAgNDQN Cj4gPiAgICNkZWZpbmUgSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5QVVRfRlZfVEVJRF9X T1JEMSA0NQ0KPiA+ICsjZGVmaW5lIEk0MEVfQVFDX1JFUExBQ0VfQ0xPVURfQ01EX0lOUFVUX0ZW X1NSQ19QT1JUIDI5DQo+ID4gKyNkZWZpbmUgSTQwRV9BUUNfUkVQTEFDRV9DTE9VRF9DTURfSU5Q VVRfRlZfRFNUX1BPUlQgMzANCj4gPiAgICNkZWZpbmUgSTQwRV9BUUNfQUREX0NMT1VEX1ROTF9U WVBFX01QTFNPVURQCTgNCj4gPiAgICNkZWZpbmUgSTQwRV9BUUNfQUREX0NMT1VEX1ROTF9UWVBF X01QTFNPR1JFCTkNCj4gPiAgICNkZWZpbmUgSTQwRV9BUUNfQUREX0NMT1VEX0ZJTFRFUl8wWDEw CQkweDEwDQo+ID4gQEAgLTgyOCw5ICs4MzAsMjAgQEAgZW51bSBpNDBlX3R1bm5lbF90eXBlIHsN Cj4gPiAgIAlJNDBFX1RVTk5FTF9UWVBFX0dUUFUsDQo+ID4gICAJSTQwRV9UVU5ORUxfVFlQRV9F U1BvVURQLA0KPiA+ICAgCUk0MEVfVFVOTkVMX1RZUEVfRVNQb0lQLA0KPiA+ICsJSTQwRV9UVU5O RUxfVFlQRV9VRFAsDQo+ID4gKwlJNDBFX1RVTk5FTF9UWVBFX1RDUCwNCj4gPiArCUk0MEVfVFVO TkVMX1RZUEVfU0NUUCwNCj4gPiAgIAlJNDBFX1RVTk5FTF9UWVBFX01BWCwNCj4gPiAgIH07DQo+ ID4NCj4gPiArLyoqDQo+ID4gKyAqIFBvcnQgdHlwZS4NCj4gPiArICovDQo+ID4gK2VudW0gaTQw ZV9sNF9wb3J0X3R5cGUgew0KPiA+ICsJSTQwRV9MNF9QT1JUX1RZUEVfU1JDID0gMCwNCj4gPiAr CUk0MEVfTDRfUE9SVF9UWVBFX0RTVCwNCj4gPiArfTsNCj4gPiArDQo+ID4gICAvKioNCj4gPiAg ICAqIFR1bm5lbGluZyBQYWNrZXQgZmlsdGVyIGNvbmZpZ3VyYXRpb24uDQo+ID4gICAgKi8NCj4g PiBAQCAtODUyLDYgKzg2NSw3IEBAIHN0cnVjdCBpNDBlX3R1bm5lbF9maWx0ZXJfY29uZiB7DQo+ ID4gICAJLyoqIEZsYWdzIGZyb20gRVRIX1RVTk5FTF9GSUxURVJfWFggLSBzZWUgYWJvdmUuICov DQo+ID4gICAJdWludDE2X3QgZmlsdGVyX3R5cGU7DQo+ID4gICAJZW51bSBpNDBlX3R1bm5lbF90 eXBlIHR1bm5lbF90eXBlOyAvKio8IFR1bm5lbCBUeXBlLiAqLw0KPiA+ICsJZW51bSBpNDBlX2w0 X3BvcnRfdHlwZSBwb3J0X3R5cGU7IC8qKjwgTDQgUG9ydCBUeXBlLiAqLw0KPiANCj4gDQo+IEw0 X3BvcnRfdHlwZSB3b3VsZCBiZSBiZXR0ZXI/DQoNClBhdGNoIFYyIHdpbGwgZml4IHRoaXMgcHJv YmxlbS4NCj4gDQo+IA0KPiA+ICAgCXVpbnQzMl90IHRlbmFudF9pZDsgICAgIC8qKjwgVGVuYW50 IElEIHRvIG1hdGNoLiBWTkksIEdSRSBrZXkuLi4gKi8NCj4gPiAgIAl1aW50MTZfdCBxdWV1ZV9p ZDsgICAgICAvKio8IFF1ZXVlIGFzc2lnbmVkIHRvIGlmIG1hdGNoLiAqLw0KPiA+ICAgCXVpbnQ4 X3QgaXNfdG9fdmY7ICAgICAgIC8qKjwgMCAtIHRvIFBGLCAxIC0gdG8gVkYgKi8NCj4gPiBAQCAt MTA3Myw2ICsxMDg3LDkgQEAgc3RydWN0IGk0MGVfcGYgew0KPiA+ICAgCWJvb2wgbXBsc19yZXBs YWNlX2ZsYWc7ICAvKiAxIC0gTVBMUyBmaWx0ZXIgcmVwbGFjZSBpcyBkb25lICovDQo+ID4gICAJ Ym9vbCBndHBfcmVwbGFjZV9mbGFnOyAgIC8qIDEgLSBHVFAtQy9VIGZpbHRlciByZXBsYWNlIGlz IGRvbmUgKi8NCj4gPiAgIAlib29sIHFpbnFfcmVwbGFjZV9mbGFnOyAgLyogUUlOUSBmaWx0ZXIg cmVwbGFjZSBpcyBkb25lICovDQo+ID4gKwkvKiBsNCBwb3J0IGZsYWcgKi8NCj4gPiArCWJvb2wg c3BvcnRfcmVwbGFjZV9mbGFnOyAgIC8qIHNvdXJjZSBwb3J0IHJlcGxhY2UgaXMgZG9uZSAqLw0K PiA+ICsJYm9vbCBkcG9ydF9yZXBsYWNlX2ZsYWc7ICAgLyogZGVzdCBwb3J0IHJlcGxhY2UgaXMg ZG9uZSAqLw0KPiA+ICAgCXN0cnVjdCBpNDBlX3RtX2NvbmYgdG1fY29uZjsNCj4gPiAgIAlib29s IHN1cHBvcnRfbXVsdGlfZHJpdmVyOyAvKiAxIC0gc3VwcG9ydCBtdWx0aXBsZSBkcml2ZXIgKi8N Cj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZmxvdy5jIGIvZHJp dmVycy9uZXQvaTQwZS9pNDBlX2Zsb3cuYw0KPiA+IGluZGV4IDhmOGRmNmZhZS4uYTI2OGZmM2Qy IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvbmV0L2k0MGUvaTQwZV9mbG93LmMNCj4gPiArKysg Yi9kcml2ZXJzL25ldC9pNDBlL2k0MGVfZmxvdy5jDQo+ID4gQEAgLTEyNCw2ICsxMjQsMTIgQEAg aTQwZV9mbG93X3BhcnNlX3FpbnFfcGF0dGVybihzdHJ1Y3QgcnRlX2V0aF9kZXYNCj4gKmRldiwN Cj4gPiAgIAkJCSAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IsDQo+ID4gICAJCQkg ICAgICBzdHJ1Y3QgaTQwZV90dW5uZWxfZmlsdGVyX2NvbmYgKmZpbHRlcik7DQo+ID4NCj4gPiAr c3RhdGljIGludCBpNDBlX2Zsb3dfcGFyc2VfbDRfcHJvdG9fZmlsdGVyKHN0cnVjdCBydGVfZXRo X2RldiAqZGV2LA0KPiA+ICsJCQkJICAgICAgY29uc3Qgc3RydWN0IHJ0ZV9mbG93X2F0dHIgKmF0 dHIsDQo+ID4gKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfaXRlbSBwYXR0ZXJuW10s DQo+ID4gKwkJCQkgICAgICBjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uIGFjdGlvbnNbXSwN Cj4gPiArCQkJCSAgICAgIHN0cnVjdCBydGVfZmxvd19lcnJvciAqZXJyb3IsDQo+ID4gKwkJCQkg ICAgICB1bmlvbiBpNDBlX2ZpbHRlcl90ICpmaWx0ZXIpOw0KPiA+ICAgY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X29wcyBpNDBlX2Zsb3dfb3BzID0gew0KPiA+ICAgCS52YWxpZGF0ZSA9IGk0MGVfZmxv d192YWxpZGF0ZSwNCj4gPiAgIAkuY3JlYXRlID0gaTQwZV9mbG93X2NyZWF0ZSwNCj4gPiBAQCAt MTg0NSw2ICsxODUxLDEzIEBAIHN0YXRpYyBzdHJ1Y3QgaTQwZV92YWxpZF9wYXR0ZXJuDQo+IGk0 MGVfc3VwcG9ydGVkX3BhdHRlcm5zW10gPSB7DQo+ID4gICAJLyogTDJUUHYzIG92ZXIgSVAgKi8N Cj4gPiAgIAl7IHBhdHRlcm5fZmRpcl9pcHY0X2wydHB2M29pcCwgaTQwZV9mbG93X3BhcnNlX2Zk aXJfZmlsdGVyIH0sDQo+ID4gICAJeyBwYXR0ZXJuX2ZkaXJfaXB2Nl9sMnRwdjNvaXAsIGk0MGVf Zmxvd19wYXJzZV9mZGlyX2ZpbHRlciB9LA0KPiA+ICsJLyogTDQgb3ZlciBwb3J0ICovDQo+ID4g Kwl7IHBhdHRlcm5fZmRpcl9pcHY0X3VkcCwgaTQwZV9mbG93X3BhcnNlX2w0X3Byb3RvX2ZpbHRl ciB9LA0KPiA+ICsJeyBwYXR0ZXJuX2ZkaXJfaXB2NF90Y3AsIGk0MGVfZmxvd19wYXJzZV9sNF9w cm90b19maWx0ZXIgfSwNCj4gPiArCXsgcGF0dGVybl9mZGlyX2lwdjRfc2N0cCwgaTQwZV9mbG93 X3BhcnNlX2w0X3Byb3RvX2ZpbHRlciB9LA0KPiA+ICsJeyBwYXR0ZXJuX2ZkaXJfaXB2Nl91ZHAs IGk0MGVfZmxvd19wYXJzZV9sNF9wcm90b19maWx0ZXIgfSwNCj4gPiArCXsgcGF0dGVybl9mZGly X2lwdjZfdGNwLCBpNDBlX2Zsb3dfcGFyc2VfbDRfcHJvdG9fZmlsdGVyIH0sDQo+ID4gKwl7IHBh dHRlcm5fZmRpcl9pcHY2X3NjdHAsIGk0MGVfZmxvd19wYXJzZV9sNF9wcm90b19maWx0ZXIgfSwN Cj4gPiAgIH07DQo+ID4NCj4gPiAgICNkZWZpbmUgTkVYVF9JVEVNX09GX0FDVElPTihhY3QsIGFj dGlvbnMsIGluZGV4KSAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gPiBAQCAtMzU0MSw2ICsz NTU0LDIxNiBAQCBpNDBlX2Zsb3dfcGFyc2VfdHVubmVsX2FjdGlvbihzdHJ1Y3QNCj4gcnRlX2V0 aF9kZXYgKmRldiwNCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPg0KPiA+ICtzdGF0aWMg aW50DQo+ID4gK2k0MGVfZmxvd19wYXJzZV9sNF9wcm90b19wYXR0ZXJuKGNvbnN0IHN0cnVjdCBy dGVfZmxvd19pdGVtICpwYXR0ZXJuLA0KPiA+ICsJCQkJIHN0cnVjdCBydGVfZmxvd19lcnJvciAq ZXJyb3IsDQo+ID4gKwkJCQkgc3RydWN0IGk0MGVfdHVubmVsX2ZpbHRlcl9jb25mICpmaWx0ZXIp DQo+ID4gK3sNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX3NjdHAgKnNjdHBfc3Bl YywgKnNjdHBfbWFzazsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX3RjcCAqdGNw X3NwZWMsICp0Y3BfbWFzazsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtX3VkcCAq dWRwX3NwZWMsICp1ZHBfbWFzazsNCj4gPiArCWNvbnN0IHN0cnVjdCBydGVfZmxvd19pdGVtICpp dGVtID0gcGF0dGVybjsNCj4gPiArCWVudW0gcnRlX2Zsb3dfaXRlbV90eXBlIGl0ZW1fdHlwZTsN Cj4gPiArDQo+ID4gKwlmb3IgKDsgaXRlbS0+dHlwZSAhPSBSVEVfRkxPV19JVEVNX1RZUEVfRU5E OyBpdGVtKyspIHsNCj4gPiArCQlpZiAoaXRlbS0+bGFzdCkgew0KPiA+ICsJCQlydGVfZmxvd19l cnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArCQkJCQkgICBSVEVfRkxPV19FUlJPUl9UWVBF X0lURU0sDQo+ID4gKwkJCQkJICAgaXRlbSwNCj4gPiArCQkJCQkgICAiTm90IHN1cHBvcnQgcmFu Z2UiKTsNCj4gPiArCQkJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gKwkJfQ0KPiANCj4gDQo+IEEg YmxhbmsgbGluZSB3b3VsZCBoZWxwIHNlcGFyYXRlIHRoZSByYW5nZSBhbmQgdHlwZSBjaGVja2lu Zy4NCg0KUGF0Y2ggVjIgd2lsbCBmaXggdGhpcyBwcm9ibGVtLg0KPiANCj4gDQo+ID4gKwkJaXRl bV90eXBlID0gaXRlbS0+dHlwZTsNCj4gPiArCQlzd2l0Y2ggKGl0ZW1fdHlwZSkgew0KPiA+ICsJ CWNhc2UgUlRFX0ZMT1dfSVRFTV9UWVBFX0VUSDoNCj4gPiArCQkJaWYgKGl0ZW0tPnNwZWMgfHwg aXRlbS0+bWFzaykgew0KPiA+ICsJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUws DQo+ID4gKw0KPiBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJCSAgIGl0ZW0s DQo+ID4gKwkJCQkJCSAgICJJbnZhbGlkIEVUSCBpdGVtIik7DQo+IA0KPiANCj4gVGhpcyBsaW5l IGlzIG5vIG5lZWQgdG8gYmUgc2VwYXJhdGVkIGZyb20gdGhlIGFib3ZlIGxpbmU/IFRoZSBzYW1l IGFzIGJlbG93Lg0KDQpQYXRjaCBWMiB3aWxsIGZpeCB0aGlzIHByb2JsZW0uDQo+IA0KPiANCj4g PiArCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICsJCQlicmVh azsNCj4gPiArCQljYXNlIFJURV9GTE9XX0lURU1fVFlQRV9JUFY0Og0KPiA+ICsJCQlmaWx0ZXIt PmlwX3R5cGUgPSBJNDBFX1RVTk5FTF9JUFRZUEVfSVBWNDsNCj4gPiArCQkJLyogSVB2NCBpcyB1 c2VkIHRvIGRlc2NyaWJlIHByb3RvY29sLA0KPiA+ICsJCQkgKiBzcGVjIGFuZCBtYXNrIHNob3Vs ZCBiZSBOVUxMLg0KPiA+ICsJCQkgKi8NCj4gPiArCQkJaWYgKGl0ZW0tPnNwZWMgfHwgaXRlbS0+ bWFzaykgew0KPiA+ICsJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUwsDQo+ID4g Kw0KPiBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJCSAgIGl0ZW0sDQo+ID4g KwkJCQkJCSAgICJJbnZhbGlkIElQdjQgaXRlbSIpOw0KPiA+ICsJCQkJcmV0dXJuIC1ydGVfZXJy bm87DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWNhc2UgUlRFX0ZM T1dfSVRFTV9UWVBFX0lQVjY6DQo+ID4gKwkJCWZpbHRlci0+aXBfdHlwZSA9IEk0MEVfVFVOTkVM X0lQVFlQRV9JUFY2Ow0KPiA+ICsJCQkvKiBJUHY2IGlzIHVzZWQgdG8gZGVzY3JpYmUgcHJvdG9j b2wsDQo+ID4gKwkJCSAqIHNwZWMgYW5kIG1hc2sgc2hvdWxkIGJlIE5VTEwuDQo+ID4gKwkJCSAq Lw0KPiA+ICsJCQlpZiAoaXRlbS0+c3BlYyB8fCBpdGVtLT5tYXNrKSB7DQo+ID4gKwkJCQlydGVf Zmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArDQo+IFJURV9GTE9XX0VSUk9SX1RZ UEVfSVRFTSwNCj4gPiArCQkJCQkJICAgaXRlbSwNCj4gPiArCQkJCQkJICAgIkludmFsaWQgSVB2 NiBpdGVtIik7DQo+ID4gKwkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCQkJfQ0KPiA+ICsN Cj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJY2FzZSBSVEVfRkxPV19JVEVNX1RZUEVfVURQOg0KPiA+ ICsJCQl1ZHBfc3BlYyA9IGl0ZW0tPnNwZWM7DQo+ID4gKwkJCXVkcF9tYXNrID0gaXRlbS0+bWFz azsNCj4gPiArDQo+ID4gKwkJCWlmICghdWRwX3NwZWMgfHwgIXVkcF9tYXNrKSB7DQo+ID4gKwkJ CQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArDQo+IFJURV9GTE9XX0VS Uk9SX1RZUEVfSVRFTSwNCj4gPiArCQkJCQkJICAgaXRlbSwNCj4gPiArCQkJCQkJICAgIkludmFs aWQgdWRwIGl0ZW0iKTsNCj4gPiArCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ICsJCQl9DQo+ ID4gKw0KPiA+ICsJCQlpZiAodWRwX3NwZWMtPmhkci5zcmNfcG9ydCAhPSAwICYmDQo+ID4gKwkJ CSAgICB1ZHBfc3BlYy0+aGRyLmRzdF9wb3J0ICE9IDApIHsNCj4gPiArCQkJCXJ0ZV9mbG93X2Vy cm9yX3NldChlcnJvciwgRUlOVkFMLA0KPiA+ICsNCj4gCVJURV9GTE9XX0VSUk9SX1RZUEVfSVRF TSwNCj4gPiArCQkJCQkJaXRlbSwNCj4gPiArCQkJCQkJIkludmFsaWQgdWRwIHNwZWMiKTsNCj4g PiArCQkJCXJldHVybiAtcnRlX2Vycm5vOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICsJCQlpZiAo dWRwX3NwZWMtPmhkci5zcmNfcG9ydCAhPSAwKSB7DQo+ID4gKwkJCQlmaWx0ZXItPnBvcnRfdHlw ZSA9DQo+ID4gKwkJCQkJSTQwRV9MNF9QT1JUX1RZUEVfU1JDOw0KPiA+ICsJCQkJZmlsdGVyLT50 ZW5hbnRfaWQgPQ0KPiA+ICsJCQkJcnRlX2JlX3RvX2NwdV8zMih1ZHBfc3BlYy0+aGRyLnNyY19w b3J0KTsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiArCQkJaWYgKHVkcF9zcGVjLT5oZHIuZHN0X3Bv cnQgIT0gMCkgew0KPiA+ICsJCQkJZmlsdGVyLT5wb3J0X3R5cGUgPQ0KPiA+ICsJCQkJCUk0MEVf TDRfUE9SVF9UWVBFX0RTVDsNCj4gPiArCQkJCWZpbHRlci0+dGVuYW50X2lkID0NCj4gPiArCQkJ CXJ0ZV9iZV90b19jcHVfMzIodWRwX3NwZWMtPmhkci5kc3RfcG9ydCk7DQo+ID4gKwkJCX0NCj4g PiArDQo+ID4gKwkJCWZpbHRlci0+dHVubmVsX3R5cGUgPSBJNDBFX1RVTk5FTF9UWVBFX1VEUDsN Cj4gPiArDQo+ID4gKwkJCWJyZWFrOw0KPiA+ICsJCWNhc2UgUlRFX0ZMT1dfSVRFTV9UWVBFX1RD UDoNCj4gPiArCQkJdGNwX3NwZWMgPSBpdGVtLT5zcGVjOw0KPiA+ICsJCQl0Y3BfbWFzayA9IGl0 ZW0tPm1hc2s7DQo+ID4gKw0KPiA+ICsJCQlpZiAoIXRjcF9zcGVjIHx8ICF0Y3BfbWFzaykgew0K PiA+ICsJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUwsDQo+ID4gKw0KPiBSVEVf RkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJCSAgIGl0ZW0sDQo+ID4gKwkJCQkJCSAg ICJJbnZhbGlkIHRjcCBpdGVtIik7DQo+ID4gKwkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiAr CQkJfQ0KPiA+ICsNCj4gPiArCQkJaWYgKHRjcF9zcGVjLT5oZHIuc3JjX3BvcnQgIT0gMCAmJg0K PiA+ICsJCQkgICAgdGNwX3NwZWMtPmhkci5kc3RfcG9ydCAhPSAwKSB7DQo+ID4gKwkJCQlydGVf Zmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArDQo+IAlSVEVfRkxPV19FUlJPUl9U WVBFX0lURU0sDQo+ID4gKwkJCQkJCWl0ZW0sDQo+ID4gKwkJCQkJCSJJbnZhbGlkIHRjcCBzcGVj Iik7DQo+ID4gKwkJCQlyZXR1cm4gLXJ0ZV9lcnJubzsNCj4gPiArCQkJfQ0KPiA+ICsNCj4gPiAr CQkJaWYgKHRjcF9zcGVjLT5oZHIuc3JjX3BvcnQgIT0gMCkgew0KPiA+ICsJCQkJZmlsdGVyLT5w b3J0X3R5cGUgPQ0KPiA+ICsJCQkJCUk0MEVfTDRfUE9SVF9UWVBFX1NSQzsNCj4gPiArCQkJCWZp bHRlci0+dGVuYW50X2lkID0NCj4gPiArCQkJCXJ0ZV9iZV90b19jcHVfMzIodGNwX3NwZWMtPmhk ci5zcmNfcG9ydCk7DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCWlmICh0Y3Bfc3BlYy0+aGRy LmRzdF9wb3J0ICE9IDApIHsNCj4gPiArCQkJCWZpbHRlci0+cG9ydF90eXBlID0NCj4gPiArCQkJ CQlJNDBFX0w0X1BPUlRfVFlQRV9EU1Q7DQo+ID4gKwkJCQlmaWx0ZXItPnRlbmFudF9pZCA9DQo+ ID4gKwkJCQlydGVfYmVfdG9fY3B1XzMyKHRjcF9zcGVjLT5oZHIuZHN0X3BvcnQpOw0KPiA+ICsJ CQl9DQo+ID4gKw0KPiA+ICsJCQlmaWx0ZXItPnR1bm5lbF90eXBlID0gSTQwRV9UVU5ORUxfVFlQ RV9UQ1A7DQo+ID4gKw0KPiA+ICsJCQlicmVhazsNCj4gPiArCQljYXNlIFJURV9GTE9XX0lURU1f VFlQRV9TQ1RQOg0KPiA+ICsJCQlzY3RwX3NwZWMgPSBpdGVtLT5zcGVjOw0KPiA+ICsJCQlzY3Rw X21hc2sgPSBpdGVtLT5tYXNrOw0KPiA+ICsNCj4gPiArCQkJaWYgKCFzY3RwX3NwZWMgfHwgIXNj dHBfbWFzaykgew0KPiA+ICsJCQkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUwsDQo+ ID4gKw0KPiBSVEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJCSAgIGl0ZW0sDQo+ ID4gKwkJCQkJCSAgICJJbnZhbGlkIHNjdHAgaXRlbSIpOw0KPiA+ICsJCQkJcmV0dXJuIC1ydGVf ZXJybm87DQo+ID4gKwkJCX0NCj4gPiArDQo+ID4gKwkJCWlmIChzY3RwX3NwZWMtPmhkci5zcmNf cG9ydCAhPSAwICYmDQo+ID4gKwkJCSAgICBzY3RwX3NwZWMtPmhkci5kc3RfcG9ydCAhPSAwKSB7 DQo+ID4gKwkJCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwNCj4gPiArDQo+IAlS VEVfRkxPV19FUlJPUl9UWVBFX0lURU0sDQo+ID4gKwkJCQkJCWl0ZW0sDQo+ID4gKwkJCQkJCSJJ bnZhbGlkIHNjdHAgc3BlYyIpOw0KPiA+ICsJCQkJcmV0dXJuIC1ydGVfZXJybm87DQo+ID4gKwkJ CX0NCj4gPiArDQo+ID4gKwkJCWlmIChzY3RwX3NwZWMtPmhkci5zcmNfcG9ydCAhPSAwKSB7DQo+ ID4gKwkJCQlmaWx0ZXItPnBvcnRfdHlwZSA9DQo+ID4gKwkJCQkJSTQwRV9MNF9QT1JUX1RZUEVf U1JDOw0KPiA+ICsJCQkJZmlsdGVyLT50ZW5hbnRfaWQgPQ0KPiA+ICsJCQkJCXJ0ZV9iZV90b19j cHVfMzIoc2N0cF9zcGVjLQ0KPiA+aGRyLnNyY19wb3J0KTsNCj4gPiArCQkJfQ0KPiA+ICsNCj4g PiArCQkJaWYgKHNjdHBfc3BlYy0+aGRyLmRzdF9wb3J0ICE9IDApIHsNCj4gPiArCQkJCWZpbHRl ci0+cG9ydF90eXBlID0NCj4gPiArCQkJCQlJNDBFX0w0X1BPUlRfVFlQRV9EU1Q7DQo+ID4gKwkJ CQlmaWx0ZXItPnRlbmFudF9pZCA9DQo+ID4gKwkJCQkJcnRlX2JlX3RvX2NwdV8zMihzY3RwX3Nw ZWMtDQo+ID5oZHIuZHN0X3BvcnQpOw0KPiA+ICsJCQl9DQo+ID4gKw0KPiA+ICsJCQlmaWx0ZXIt PnR1bm5lbF90eXBlID0gSTQwRV9UVU5ORUxfVFlQRV9TQ1RQOw0KPiA+ICsNCj4gPiArCQkJYnJl YWs7DQo+ID4gKwkJZGVmYXVsdDoNCj4gPiArCQkJYnJlYWs7DQo+ID4gKwkJfQ0KPiA+ICsJfQ0K PiA+ICsNCj4gDQo+IA0KPiBJIHNhdyBhIGR1cGxpY2F0ZSBwcm9jZXNzIGZvciBVRFAvVENQL1ND VFAgaW4gc3dpdGNoLCBkbyB5b3UgdGhpbmsgaXQNCj4gbmVlZCB0byBmaW5lIGEgYmV0dGVyIHdh eSB0byBjb21iaW5lIHRoZW0/DQoNClRoZSBhc3NpZ25tZW50IG9mIGl0ZW0gaXMgZGlmZmVyZW50 LCBzbyB0aGVyZSBpcyBubyB3YXkgdG8gY29tYmluZSB0aGVtLg0KPiANCj4gDQo+ID4gKwlyZXR1 cm4gMDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludA0KPiA+ICtpNDBlX2Zsb3dfcGFy c2VfbDRfcHJvdG9fZmlsdGVyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LA0KPiA+ICsJCQkgICBj b25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYXR0ciAqYXR0ciwNCj4gPiArCQkJICAgY29uc3Qgc3RydWN0 IHJ0ZV9mbG93X2l0ZW0gcGF0dGVybltdLA0KPiA+ICsJCQkgICBjb25zdCBzdHJ1Y3QgcnRlX2Zs b3dfYWN0aW9uIGFjdGlvbnNbXSwNCj4gPiArCQkJICAgc3RydWN0IHJ0ZV9mbG93X2Vycm9yICpl cnJvciwNCj4gPiArCQkJICAgdW5pb24gaTQwZV9maWx0ZXJfdCAqZmlsdGVyKQ0KPiA+ICt7DQo+ ID4gKwlzdHJ1Y3QgaTQwZV90dW5uZWxfZmlsdGVyX2NvbmYgKnR1bm5lbF9maWx0ZXIgPQ0KPiA+ ICsJCSZmaWx0ZXItPmNvbnNpc3RlbnRfdHVubmVsX2ZpbHRlcjsNCj4gPiArCWludCByZXQ7DQo+ ID4gKw0KPiA+ICsJcmV0ID0gaTQwZV9mbG93X3BhcnNlX2w0X3Byb3RvX3BhdHRlcm4ocGF0dGVy biwgZXJyb3IsIHR1bm5lbF9maWx0ZXIpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiArCQlyZXR1cm4g cmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IGk0MGVfZmxvd19wYXJzZV90dW5uZWxfYWN0aW9uKGRl diwgYWN0aW9ucywgZXJyb3IsIHR1bm5lbF9maWx0ZXIpOw0KPiA+ICsJaWYgKHJldCkNCj4gPiAr CQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCXJldCA9IGk0MGVfZmxvd19wYXJzZV9hdHRyKGF0 dHIsIGVycm9yKTsNCj4gPiArCWlmIChyZXQpDQo+ID4gKwkJcmV0dXJuIHJldDsNCj4gPiArDQo+ ID4gKwljb25zX2ZpbHRlcl90eXBlID0gUlRFX0VUSF9GSUxURVJfVFVOTkVMOw0KPiA+ICsNCj4g PiArCXJldHVybiByZXQ7DQo+ID4gK30NCj4gPiArDQo+ID4gICBzdGF0aWMgdWludDE2X3QgaTQw ZV9zdXBwb3J0ZWRfdHVubmVsX2ZpbHRlcl90eXBlc1tdID0gew0KPiA+ICAgCUVUSF9UVU5ORUxf RklMVEVSX0lNQUMgfCBFVEhfVFVOTkVMX0ZJTFRFUl9URU5JRCB8DQo+ID4gICAJRVRIX1RVTk5F TF9GSUxURVJfSVZMQU4sDQo=