From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 36C9EC43217 for ; Thu, 20 Oct 2022 09:10:23 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229664AbiJTJKU (ORCPT ); Thu, 20 Oct 2022 05:10:20 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50828 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229751AbiJTJKQ (ORCPT ); Thu, 20 Oct 2022 05:10:16 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.153.233]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8D0AEA8359; Thu, 20 Oct 2022 02:10:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1666257007; x=1697793007; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=k/TG6BC7A6D4tKLlDjzRKDhkpK1HZayJXpCC1owJWnM=; b=cFqZPHgKA7ehxj5jIuHiKUYhEMFZwG+n+WvPuLh74l1SD6mLdWunt2gk DeJN7a56UIa/NsvgpoI35cq6MWWA3j5UNbP6Sq5wpltVqEwKSfNCmWSPD TCmht9w5ShOLIZcSoiHJzhyoJGczxbavuWWhJhptTca/3Fh4uUJ4EGHSb NMc5cu5Hbyxk5fR/masOr9zMdW1dXxj38FSj6rZ1Eja6ecx7NIco0cMiQ LjISkJuC7+bowaNv7nTQBtrAqGGoZbWT2XJbHjBnK1qUdamygcZw+VCJp k9gL5SEpIdhGRSnUsSTN/tXzmi+BRaDukyToL+8c6hg8AjDLaIsJ+4gOa Q==; X-IronPort-AV: E=Sophos;i="5.95,198,1661842800"; d="scan'208";a="196270292" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Oct 2022 02:10:05 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Thu, 20 Oct 2022 02:10:06 -0700 Received: from den-dk-m31857.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Thu, 20 Oct 2022 02:10:03 -0700 Message-ID: <200aaa2a6e0957b88a80f3b3db08c52462e2abbc.camel@microchip.com> Subject: Re: [PATCH net-next v2 5/9] net: microchip: sparx5: Adding port keyset config and callback interface From: Steen Hegelund To: Casper Andersson CC: "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , , Randy Dunlap , Russell King , "Wan Jiabing" , Nathan Huckleberry , , , Date: Thu, 20 Oct 2022 11:10:02 +0200 In-Reply-To: <20221020073325.hr33d5mck7vlwxh6@wse-c0155> References: <20221019114215.620969-1-steen.hegelund@microchip.com> <20221019114215.620969-6-steen.hegelund@microchip.com> <20221020073325.hr33d5mck7vlwxh6@wse-c0155> Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 User-Agent: Evolution 3.44.4 MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgQ2FzcGVyLAoKT24gVGh1LCAyMDIyLTEwLTIwIGF0IDA5OjMzICswMjAwLCBDYXNwZXIgQW5k ZXJzc29uIHdyb3RlOgo+IEVYVEVSTkFMIEVNQUlMOiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3Bl biBhdHRhY2htZW50cyB1bmxlc3MgeW91IGtub3cgdGhlIGNvbnRlbnQgaXMgc2FmZQo+IAo+IEhp IFN0ZWVuLAo+IAo+IE9uIDIwMjItMTAtMTkgMTM6NDIsIFN0ZWVuIEhlZ2VsdW5kIHdyb3RlOgo+ ID4gVGhpcyBwcm92aWRlcyBhIGRlZmF1bHQgcG9ydCBrZXlzZXQgY29uZmlndXJhdGlvbiBmb3Ig dGhlIFNwYXJ4NSBJUzIgVkNBUAo+ID4gd2hlcmUgYWxsIHBvcnRzIGFuZCBhbGwgbG9va3VwcyBp biBJUzIgdXNlIHRoZSBzYW1lIGtleXNldCAoTUFDX0VUWVBFKSBmb3IKPiA+IGFsbCB0eXBlcyBv ZiB0cmFmZmljLgo+ID4gCj4gPiBUaGlzIG1lYW5zIHRoYXQgbm8gbWF0dGVyIHdoYXQgZnJhbWUg dHlwZSBpcyByZWNlaXZlZCBvbiBhbnkgZnJvbnQgcG9ydCBpdAo+ID4gd2lsbCBnZW5lcmF0ZSB0 aGUgTUFDX0VUWVBFIGtleXNldCBpbiB0aGUgSVMgVkNBUCBhbmQgYW55IHJ1bGUgaW4gdGhlIElT Mgo+ID4gVkNBUCB0aGF0IHVzZXMgdGhpcyBrZXlzZXQgd2lsbCBiZSBtYXRjaGVkIGFnYWluc3Qg dGhlIGtleXMgaW4gdGhlCj4gPiBNQUNfRVRZUEUga2V5c2V0Lgo+ID4gCj4gPiBUaGUgY2FsbGJh Y2sgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIFZDQVAgQVBJIGlzIHBvcHVsYXRlZCB3aXRoIFNwYXJ4 NQo+ID4gc3BlY2lmaWMgaGFuZGxlciBmdW5jdGlvbnMgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBh Y3R1YWwgcmVhZGluZyBhbmQKPiA+IHdyaXRpbmcgdG8gZGF0YSB0byB0aGUgU3Bhcng1IElTMiBW Q0FQIGluc3RhbmNlLgo+ID4gCj4gPiBBIGZldyBmdW5jdGlvbnMgYXJlIGFsc28gYWRkZWQgdG8g dGhlIFZDQVAgQVBJIHRvIHN1cHBvcnQgYWRkaXRpb24gb2YgcnVsZQo+ID4gZmllbGRzIHN1Y2gg YXMgdGhlIGluZ3Jlc3MgcG9ydCBtYXNrIGFuZCB0aGUgbG9va3VwIGJpdC4KPiA+IAo+ID4gVGhl IElTMiBWQ0FQIGluIFNwYXJ4NSBpcyByZWFsbHkgZGl2aWRlZCBpbiB0d28gaW5zdGFuY2VzIHdp dGggbG9va3VwIDAKPiA+IGFuZCAxIGluIHRoZSBmaXJzdCBpbnN0YW5jZSBhbmQgbG9va3VwIDIg YW5kIDMgaW4gdGhlIHNlY29uZCBpbnN0YW5jZS4KPiA+IFRoZSBsb29rdXAgYml0IHNlbGVjdHMg bG9va3VwIDAgb3IgMyBpbiB0aGUgcmVzcGVjdGl2ZSBpbnN0YW5jZSB3aGVuIGl0IGlzCj4gPiBz ZXQuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFN0ZWVuIEhlZ2VsdW5kIDxzdGVlbi5oZWdlbHVu ZEBtaWNyb2NoaXAuY29tPgo+ID4gLS0tCj4gPiDCoC4uLi9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4 NV92Y2FwX2ltcGwuY8KgwqDCoMKgwqDCoCB8IDM0NSArKysrKysrKysrKysrKysrKysKPiA+IMKg Li4uL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jwqDCoMKgIHzCoCA4MSAr KysrCj4gPiDCoC4uLi9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaCB8 wqDCoCA1ICsKPiA+IMKgMyBmaWxlcyBjaGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKQo+ID4gCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFy eDVfdmNhcF9pbXBsLmMKPiA+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4 NS9zcGFyeDVfdmNhcF9pbXBsLmMKPiA+IGluZGV4IDVlYzAwNWU2MzZhYS4uZGJkMmMyYzRkMzQ2 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9z cGFyeDVfdmNhcF9pbXBsLmMKPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hp cC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jCj4gPiBAQCAtMjIsNiArMjIsNTQgQEAKPiA+IAo+ ID4gwqAjZGVmaW5lIFNQQVJYNV9JUzJfTE9PS1VQUyA0Cj4gPiAKPiA+ICsvKiBJUzIgcG9ydCBr ZXlzZXQgc2VsZWN0aW9uIGNvbnRyb2wgKi8KPiA+ICsKPiA+ICsvKiBJUzIgbm9uLWV0aGVybmV0 IHRyYWZmaWMgdHlwZSBrZXlzZXQgZ2VuZXJhdGlvbiAqLwo+ID4gK2VudW0gdmNhcF9pczJfcG9y dF9zZWxfbm9uZXRoIHsKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19OT05FVEhfTUFDX0VUWVBF LAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX05PTkVUSF9DVVNUT01fMSwKPiA+ICvCoMKgwqDC oCBWQ0FQX0lTMl9QU19OT05FVEhfQ1VTVE9NXzIsCj4gPiArwqDCoMKgwqAgVkNBUF9JUzJfUFNf Tk9ORVRIX05PX0xPT0tVUAo+ID4gK307Cj4gPiArCj4gPiArLyogSVMyIElQdjQgdW5pY2FzdCB0 cmFmZmljIHR5cGUga2V5c2V0IGdlbmVyYXRpb24gKi8KPiA+ICtlbnVtIHZjYXBfaXMyX3BvcnRf c2VsX2lwdjRfdWMgewo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRfVUNfTUFDX0VUWVBF LAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRfVUNfSVA0X1RDUF9VRFBfT1RIRVIsCj4g PiArwqDCoMKgwqAgVkNBUF9JUzJfUFNfSVBWNF9VQ19JUF83VFVQTEUsCj4gPiArfTsKPiA+ICsK PiA+ICsvKiBJUzIgSVB2NCBtdWx0aWNhc3QgdHJhZmZpYyB0eXBlIGtleXNldCBnZW5lcmF0aW9u ICovCj4gPiArZW51bSB2Y2FwX2lzMl9wb3J0X3NlbF9pcHY0X21jIHsKPiA+ICvCoMKgwqDCoCBW Q0FQX0lTMl9QU19JUFY0X01DX01BQ19FVFlQRSwKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19J UFY0X01DX0lQNF9UQ1BfVURQX09USEVSLAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRf TUNfSVBfN1RVUExFLAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRfTUNfSVA0X1ZJRCwK PiA+ICt9Owo+ID4gKwo+ID4gKy8qIElTMiBJUHY2IHVuaWNhc3QgdHJhZmZpYyB0eXBlIGtleXNl dCBnZW5lcmF0aW9uICovCj4gPiArZW51bSB2Y2FwX2lzMl9wb3J0X3NlbF9pcHY2X3VjIHsKPiA+ ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19JUFY2X1VDX01BQ19FVFlQRSwKPiA+ICvCoMKgwqDCoCBW Q0FQX0lTMl9QU19JUFY2X1VDX0lQXzdUVVBMRSwKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19J UFY2X1VDX0lQNl9TVEQsCj4gPiArwqDCoMKgwqAgVkNBUF9JUzJfUFNfSVBWNl9VQ19JUDRfVENQ X1VEUF9PVEhFUiwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIElTMiBJUHY2IG11bHRpY2FzdCB0cmFm ZmljIHR5cGUga2V5c2V0IGdlbmVyYXRpb24gKi8KPiA+ICtlbnVtIHZjYXBfaXMyX3BvcnRfc2Vs X2lwdjZfbWMgewo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjZfTUNfTUFDX0VUWVBFLAo+ ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjZfTUNfSVBfN1RVUExFLAo+ID4gK8KgwqDCoMKg IFZDQVBfSVMyX1BTX0lQVjZfTUNfSVA2X1ZJRCwKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19J UFY2X01DX0lQNl9TVEQsCj4gPiArwqDCoMKgwqAgVkNBUF9JUzJfUFNfSVBWNl9NQ19JUDRfVENQ X1VEUF9PVEhFUiwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIElTMiBBUlAgdHJhZmZpYyB0eXBlIGtl eXNldCBnZW5lcmF0aW9uICovCj4gPiArZW51bSB2Y2FwX2lzMl9wb3J0X3NlbF9hcnAgewo+ID4g K8KgwqDCoMKgIFZDQVBfSVMyX1BTX0FSUF9NQUNfRVRZUEUsCj4gPiArwqDCoMKgwqAgVkNBUF9J UzJfUFNfQVJQX0FSUCwKPiA+ICt9Owo+ID4gKwo+ID4gwqBzdGF0aWMgc3RydWN0IHNwYXJ4NV92 Y2FwX2luc3Qgewo+ID4gwqDCoMKgwqDCoCBlbnVtIHZjYXBfdHlwZSB2dHlwZTsgLyogdHlwZSBv ZiB2Y2FwICovCj4gPiDCoMKgwqDCoMKgIGludCB2aW5zdDsgLyogaW5zdGFuY2UgbnVtYmVyIHdp dGhpbiB0aGUgc2FtZSB0eXBlICovCj4gPiBAQCAtNTgsNiArMTA2LDI5NiBAQCBzdGF0aWMgc3Ry dWN0IHNwYXJ4NV92Y2FwX2luc3Qgewo+ID4gwqDCoMKgwqDCoCB9LAo+ID4gwqB9Owo+ID4gCj4g PiArLyogQXdhaXQgdGhlIHN1cGVyIFZDQVAgY29tcGxldGlvbiBvZiB0aGUgY3VycmVudCBvcGVy YXRpb24gKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF93YWl0X3N1cGVyX3VwZGF0ZShz dHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpCj4gPiArewo+ID4gK8KgwqDCoMKgIHUzMiB2YWx1ZTsKPiA+ ICsKPiA+ICvCoMKgwqDCoCByZWFkX3BvbGxfdGltZW91dChzcHg1X3JkLCB2YWx1ZSwKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhVkNBUF9TVVBFUl9D VFJMX1VQREFURV9TSE9UX0dFVCh2YWx1ZSksIDUwMCwgMTAwMDAsCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsc2UsIHNwYXJ4NSwgVkNBUF9TVVBF Ul9DVFJMKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogSW5pdGlhbGl6aW5nIGEgVkNBUCBhZGRyZXNz IHJhbmdlOiBvbmx5IElTMiBmb3Igbm93ICovCj4gPiArc3RhdGljIHZvaWQgX3NwYXJ4NV92Y2Fw X3JhbmdlX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZj YXBfYWRtaW4gKmFkbWluLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGFkZHIsIHUzMiBjb3VudCkKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgdTMyIHNpemUgPSBjb3VudCAtIDE7Cj4gPiArCj4gPiArwqDCoMKgwqAg c3B4NV93cihWQ0FQX1NVUEVSX0NGR19NVl9OVU1fUE9TX1NFVCgwKSB8Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ0ZHX01WX1NJWkVfU0VUKHNpemUpLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGFyeDUsIFZDQVBfU1VQRVJfQ0ZHKTsKPiA+ICvCoMKg wqDCoCBzcHg1X3dyKFZDQVBfU1VQRVJfQ1RSTF9VUERBVEVfQ01EX1NFVChWQ0FQX0NNRF9JTklU SUFMSVpFKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9V UERBVEVfRU5UUllfRElTX1NFVCgwKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZD QVBfU1VQRVJfQ1RSTF9VUERBVEVfQUNUSU9OX0RJU19TRVQoMCkgfAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBWQ0FQX1NVUEVSX0NUUkxfVVBEQVRFX0NOVF9ESVNfU0VUKDApIHwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkNBUF9TVVBFUl9DVFJMX1VQREFURV9BRERSX1NF VChhZGRyKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9D TEVBUl9DQUNIRV9TRVQodHJ1ZSkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQ0FQ X1NVUEVSX0NUUkxfVVBEQVRFX1NIT1RfU0VUKHRydWUpLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzcGFyeDUsIFZDQVBfU1VQRVJfQ1RSTCk7Cj4gPiArwqDCoMKgwqAgc3Bhcng1X3Zj YXBfd2FpdF9zdXBlcl91cGRhdGUoc3Bhcng1KTsKPiA+ICt9Cj4gPiArCj4gPiArLyogSW5pdGlh bGl6aW5nIFZDQVAgcnVsZSBkYXRhIGFyZWEgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNh cF9ibG9ja19pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmNh cF9hZG1pbiAqYWRtaW4pCj4gPiArewo+ID4gK8KgwqDCoMKgIF9zcGFyeDVfdmNhcF9yYW5nZV9p bml0KHNwYXJ4NSwgYWRtaW4sIGFkbWluLT5maXJzdF92YWxpZF9hZGRyLAo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFkbWluLT5s YXN0X3ZhbGlkX2FkZHIgLQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZG1pbi0+Zmlyc3RfdmFsaWRf YWRkcik7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEdldCB0aGUga2V5c2V0IG5hbWUgZnJvbSB0aGUg c3Bhcng1IFZDQVAgbW9kZWwgKi8KPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqc3Bhcng1X3ZjYXBf a2V5c2V0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGVudW0gdmNhcF9rZXlmaWVsZF9zZXQga2V5c2V0KQo+ID4gK3sKPiA+ICvCoMKgwqDC oCBzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZGV2KTsKPiA+ICsKPiA+ ICvCoMKgwqDCoCByZXR1cm4gcG9ydC0+c3Bhcng1LT52Y2FwX2N0cmwtPnN0YXRzLT5rZXlmaWVs ZF9zZXRfbmFtZXNba2V5c2V0XTsKPiA+ICt9Cj4gPiArCj4gPiArLyogQ2hlY2sgaWYgdGhpcyBp cyB0aGUgZmlyc3QgbG9va3VwIG9mIElTMiAqLwo+ID4gK3N0YXRpYyBib29sIHNwYXJ4NV92Y2Fw X2lzMl9pc19maXJzdF9jaGFpbihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQo+ID4gK3sKPiA+ICvC oMKgwqDCoCByZXR1cm4gKHJ1bGUtPnZjYXBfY2hhaW5faWQgPj0gU1BBUlg1X1ZDQVBfQ0lEX0lT Ml9MMCAmJgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBydWxlLT52Y2FwX2NoYWluX2lk IDwgU1BBUlg1X1ZDQVBfQ0lEX0lTMl9MMSkgfHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKChydWxlLT52Y2FwX2NoYWluX2lkID49IFNQQVJYNV9WQ0FQX0NJRF9JUzJfTDIgJiYKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ1bGUtPnZjYXBfY2hhaW5faWQgPCBTUEFS WDVfVkNBUF9DSURfSVMyX0wzKSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIFNldCB0aGUgbmFycm93 IHJhbmdlIGluZ3Jlc3MgcG9ydCBtYXNrIG9uIGEgcnVsZSAqLwo+ID4gK3N0YXRpYyB2b2lkIHNw YXJ4NV92Y2FwX2FkZF9yYW5nZV9wb3J0X21hc2soc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmRl dik7Cj4gPiArwqDCoMKgwqAgdTMyIHBvcnRfbWFzazsKPiA+ICvCoMKgwqDCoCB1MzIgcmFuZ2U7 Cj4gPiArCj4gPiArwqDCoMKgwqAgcmFuZ2UgPSBwb3J0LT5wb3J0bm8gLyBCSVRTX1BFUl9UWVBF KHUzMik7Cj4gPiArwqDCoMKgwqAgLyogUG9ydCBiaXQgc2V0IHRvIG1hdGNoLWFueSAqLwo+ID4g K8KgwqDCoMKgIHBvcnRfbWFzayA9IH5CSVQocG9ydC0+cG9ydG5vICUgQklUU19QRVJfVFlQRSh1 MzIpKTsKPiA+ICvCoMKgwqDCoCB2Y2FwX3J1bGVfYWRkX2tleV91MzIocnVsZSwgVkNBUF9LRl9J Rl9JR1JfUE9SVF9NQVNLX1NFTCwgMCwgMHhmKTsKPiA+ICvCoMKgwqDCoCB2Y2FwX3J1bGVfYWRk X2tleV91MzIocnVsZSwgVkNBUF9LRl9JRl9JR1JfUE9SVF9NQVNLX1JORywgcmFuZ2UsIDB4Zik7 Cj4gPiArwqDCoMKgwqAgdmNhcF9ydWxlX2FkZF9rZXlfdTMyKHJ1bGUsIFZDQVBfS0ZfSUZfSUdS X1BPUlRfTUFTSywgMCwgcG9ydF9tYXNrKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogU2V0IHRoZSB3 aWRlIHJhbmdlIGluZ3Jlc3MgcG9ydCBtYXNrIG9uIGEgcnVsZSAqLwo+ID4gK3N0YXRpYyB2b2lk IHNwYXJ4NV92Y2FwX2FkZF93aWRlX3BvcnRfbWFzayhzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmRl dik7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHZjYXBfdTcyX2tleSBwb3J0X21hc2s7Cj4gPiArwqDC oMKgwqAgdTMyIHJhbmdlOwo+ID4gKwo+ID4gK8KgwqDCoMKgIC8qIFBvcnQgYml0IHNldCB0byBt YXRjaC1hbnkgKi8KPiA+ICvCoMKgwqDCoCBtZW1zZXQocG9ydF9tYXNrLnZhbHVlLCAwLCBzaXpl b2YocG9ydF9tYXNrLnZhbHVlKSk7Cj4gPiArwqDCoMKgwqAgbWVtc2V0KHBvcnRfbWFzay5tYXNr LCAweGZmLCBzaXplb2YocG9ydF9tYXNrLm1hc2spKTsKPiA+ICvCoMKgwqDCoCByYW5nZSA9IHBv cnQtPnBvcnRubyAvIEJJVFNfUEVSX0JZVEU7Cj4gPiArwqDCoMKgwqAgcG9ydF9tYXNrLm1hc2tb cmFuZ2VdID0gfkJJVChwb3J0LT5wb3J0bm8gJSBCSVRTX1BFUl9CWVRFKTsKPiA+ICvCoMKgwqDC oCB2Y2FwX3J1bGVfYWRkX2tleV91NzIocnVsZSwgVkNBUF9LRl9JRl9JR1JfUE9SVF9NQVNLLCAm cG9ydF9tYXNrKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogQVBJIGNhbGxiYWNrIHVzZWQgZm9yIHZh bGlkYXRpbmcgYSBmaWVsZCBrZXlzZXQgKGNoZWNrIHRoZSBwb3J0IGtleXNldHMpICovCj4gPiAr c3RhdGljIGVudW0gdmNhcF9rZXlmaWVsZF9zZXQKPiA+ICtzcGFyeDVfdmNhcF92YWxpZGF0ZV9r ZXlzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHZjYXBfcnVsZSAqcnVsZSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfa2V5c2V0X2xpc3QgKmtzbGlzdCwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTE2IGwzX3Byb3Rv KQo+ID4gK3sKPiA+ICvCoMKgwqDCoCBpZiAoIWtzbGlzdCB8fCBrc2xpc3QtPmNudCA9PSAwKQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gVkNBUF9LRlNfTk9fVkFMVUU7Cj4g PiArwqDCoMKgwqAgLyogZm9yIG5vdyBqdXN0IHJldHVybiB3aGF0ZXZlciB0aGUgQVBJIHN1Z2dl c3RzICovCj4gPiArwqDCoMKgwqAgcmV0dXJuIGtzbGlzdC0+a2V5c2V0c1swXTsKPiA+ICt9Cj4g PiArCj4gPiArLyogQVBJIGNhbGxiYWNrIHVzZWQgZm9yIGFkZGluZyBkZWZhdWx0IGZpZWxkcyB0 byBhIHJ1bGUgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9hZGRfZGVmYXVsdF9maWVs ZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB2Y2FwX2FkbWluICphZG1pbiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHZjYXBfcnVsZSAqcnVsZSkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgY29uc3Qgc3RydWN0IHZjYXBf ZmllbGQgKmZpZWxkOwo+ID4gKwo+ID4gK8KgwqDCoMKgIGZpZWxkID0gdmNhcF9sb29rdXBfa2V5 ZmllbGQocnVsZSwgVkNBUF9LRl9JRl9JR1JfUE9SVF9NQVNLKTsKPiA+ICvCoMKgwqDCoCBpZiAo ZmllbGQgJiYgZmllbGQtPndpZHRoID09IFNQWDVfUE9SVFMpCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2FkZF93aWRlX3BvcnRfbWFzayhydWxlLCBuZGV2KTsKPiA+ ICvCoMKgwqDCoCBlbHNlIGlmIChmaWVsZCAmJiBmaWVsZC0+d2lkdGggPT0gQklUU19QRVJfVFlQ RSh1MzIpKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGFyeDVfdmNhcF9hZGRfcmFu Z2VfcG9ydF9tYXNrKHJ1bGUsIG5kZXYpOwo+ID4gK8KgwqDCoMKgIGVsc2UKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIlczolZDogJXM6IGNvdWxkIG5vdCBhZGQgYW4gaW5n cmVzcyBwb3J0IG1hc2sgZm9yOiAlc1xuIiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgX19MSU5FX18sIG5ldGRldl9uYW1lKG5kZXYpLAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2tleXNl dF9uYW1lKG5kZXYsIHJ1bGUtPmtleXNldCkpOwo+ID4gK8KgwqDCoMKgIC8qIGFkZCB0aGUgbG9v a3VwIGJpdCAqLwo+ID4gK8KgwqDCoMKgIGlmIChzcGFyeDVfdmNhcF9pczJfaXNfZmlyc3RfY2hh aW4ocnVsZSkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjYXBfcnVsZV9hZGRfa2V5 X2JpdChydWxlLCBWQ0FQX0tGX0xPT0tVUF9GSVJTVF9JUywgVkNBUF9CSVRfMSk7Cj4gPiArwqDC oMKgwqAgZWxzZQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2FwX3J1bGVfYWRkX2tl eV9iaXQocnVsZSwgVkNBUF9LRl9MT09LVVBfRklSU1RfSVMsIFZDQVBfQklUXzApOwo+ID4gK30K PiA+ICsKPiA+ICsvKiBBUEkgY2FsbGJhY2sgdXNlZCBmb3IgZXJhc2luZyB0aGUgdmNhcCBjYWNo ZSBhcmVhIChub3QgdGhlIHJlZ2lzdGVyIGFyZWEpICovCj4gPiArc3RhdGljIHZvaWQgc3Bhcng1 X3ZjYXBfY2FjaGVfZXJhc2Uoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKQo+ID4gK3sKPiA+ICvC oMKgwqDCoCBtZW1zZXQoYWRtaW4tPmNhY2hlLmtleXN0cmVhbSwgMCwgU1RSRUFNU0laRSk7Cj4g PiArwqDCoMKgwqAgbWVtc2V0KGFkbWluLT5jYWNoZS5tYXNrc3RyZWFtLCAwLCBTVFJFQU1TSVpF KTsKPiA+ICvCoMKgwqDCoCBtZW1zZXQoYWRtaW4tPmNhY2hlLmFjdGlvbnN0cmVhbSwgMCwgU1RS RUFNU0laRSk7Cj4gPiArwqDCoMKgwqAgbWVtc2V0KCZhZG1pbi0+Y2FjaGUuY291bnRlciwgMCwg c2l6ZW9mKGFkbWluLT5jYWNoZS5jb3VudGVyKSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEFQSSBj YWxsYmFjayB1c2VkIGZvciB3cml0aW5nIHRvIHRoZSBWQ0FQIGNhY2hlICovCj4gPiArc3RhdGlj IHZvaWQgc3Bhcng1X3ZjYXBfY2FjaGVfd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHZj YXBfc2VsZWN0aW9uIHNlbCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzdGFydCwKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUz MiBjb3VudCkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0ID0g bmV0ZGV2X3ByaXYobmRldik7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NSAqc3Bhcng1ID0g cG9ydC0+c3Bhcng1Owo+ID4gK8KgwqDCoMKgIHUzMiAqa2V5c3RyLCAqbXNrc3RyLCAqYWN0c3Ry Owo+ID4gK8KgwqDCoMKgIGludCBpZHg7Cj4gPiArCj4gPiArwqDCoMKgwqAga2V5c3RyID0gJmFk bWluLT5jYWNoZS5rZXlzdHJlYW1bc3RhcnRdOwo+ID4gK8KgwqDCoMKgIG1za3N0ciA9ICZhZG1p bi0+Y2FjaGUubWFza3N0cmVhbVtzdGFydF07Cj4gPiArwqDCoMKgwqAgYWN0c3RyID0gJmFkbWlu LT5jYWNoZS5hY3Rpb25zdHJlYW1bc3RhcnRdOwo+ID4gK8KgwqDCoMKgIHN3aXRjaCAoc2VsKSB7 Cj4gPiArwqDCoMKgwqAgY2FzZSBWQ0FQX1NFTF9FTlRSWToKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpZHggPSAwOyBpZHggPCBjb3VudDsgKytpZHgpIHsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEF2b2lkICdtYXRjaC1vZmYnIGJ5 IHNldHRpbmcgdmFsdWUgJiBtYXNrICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzcHg1X3dyKGtleXN0cltpZHhdICYgbXNrc3RyW2lkeF0sIHNwYXJ4NSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBWQ0FQX1NVUEVSX1ZDQVBfRU5UUllfREFUKGlkeCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3B4NV93cih+bXNrc3RyW2lkeF0sIHNwYXJ4NSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBWQ0FQX1NVUEVSX1ZDQVBfTUFTS19EQVQoaWR4KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiArwqDC oMKgwqAgY2FzZSBWQ0FQX1NFTF9BQ1RJT046Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoaWR4ID0gMDsgaWR4IDwgY291bnQ7ICsraWR4KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3B4NV93cihhY3RzdHJbaWR4XSwgc3Bhcng1LAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFZDQVBfU1VQRVJfVkNBUF9BQ1RJT05fREFUKGlkeCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoCBjYXNlIFZDQVBfU0VMX0FMTDoKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIlczolZDogY2Fubm90IHdyaXRlIGFsbCBzdHJl YW1zIGF0IG9uY2VcbiIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgX19mdW5jX18sIF9fTElORV9fKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4gPiArwqDCoMKgwqAgZGVmYXVsdDoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4gPiArwqDCoMKgwqAgfQo+ID4gK30KPiA+ICsKPiA+ICsvKiBBUEkgY2FsbGJhY2sg dXNlZCBmb3IgcmVhZGluZyBmcm9tIHRoZSBWQ0FQIGludG8gdGhlIFZDQVAgY2FjaGUgKi8KPiA+ ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9jYWNoZV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpu ZGV2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVt IHZjYXBfc2VsZWN0aW9uIHNlbCwgdTMyIHN0YXJ0LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjb3VudCkKPiA+ ICt7Cj4gPiArwqDCoMKgwqAgLyogdGhpcyB3aWxsIGJlIGFkZGVkIGxhdGVyICovCj4gPiArfQo+ ID4gKwo+ID4gKy8qIEFQSSBjYWxsYmFjayB1c2VkIGZvciBpbml0aWFsaXppbmcgYSBWQ0FQIGFk ZHJlc3MgcmFuZ2UgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9yYW5nZV9pbml0KHN0 cnVjdCBuZXRfZGV2aWNlICpuZGV2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1p biwgdTMyIGFkZHIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvdW50KQo+ID4gK3sKPiA+ICvCoMKgwqDCoCBz dHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZGV2KTsKPiA+ICvCoMKgwqDC oCBzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LT5zcGFyeDU7Cj4gPiArCj4gPiArwqDCoMKg wqAgX3NwYXJ4NV92Y2FwX3JhbmdlX2luaXQoc3Bhcng1LCBhZG1pbiwgYWRkciwgY291bnQpOwo+ ID4gK30KPiA+ICsKPiA+ICsvKiBBUEkgY2FsbGJhY2sgdXNlZCBmb3IgdXBkYXRpbmcgdGhlIFZD QVAgY2FjaGUgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF91cGRhdGUoc3RydWN0IG5l dF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgZW51bSB2Y2FwX2Nv bW1hbmQgY21kLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbnVtIHZjYXBfc2VsZWN0aW9uIHNlbCwgdTMyIGFkZHIpCj4gPiArewo+ ID4gK8KgwqDCoMKgIHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5kZXYp Owo+ID4gK8KgwqDCoMKgIHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtPnNwYXJ4NTsKPiA+ ICvCoMKgwqDCoCBib29sIGNsZWFyOwo+ID4gKwo+ID4gK8KgwqDCoMKgIGNsZWFyID0gKGNtZCA9 PSBWQ0FQX0NNRF9JTklUSUFMSVpFKTsKPiA+ICvCoMKgwqDCoCBzcHg1X3dyKFZDQVBfU1VQRVJf Q0ZHX01WX05VTV9QT1NfU0VUKDApIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkNB UF9TVVBFUl9DRkdfTVZfU0laRV9TRVQoMCksIHNwYXJ4NSwgVkNBUF9TVVBFUl9DRkcpOwo+ID4g K8KgwqDCoMKgIHNweDVfd3IoVkNBUF9TVVBFUl9DVFJMX1VQREFURV9DTURfU0VUKGNtZCkgfAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQ0FQX1NVUEVSX0NUUkxfVVBEQVRFX0VOVFJZ X0RJU19TRVQoKFZDQVBfU0VMX0VOVFJZICYgc2VsKSA9PSAwKSB8Cj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9VUERBVEVfQUNUSU9OX0RJU19TRVQoKFZDQVBf U0VMX0FDVElPTiAmIHNlbCkgPT0gMCkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBW Q0FQX1NVUEVSX0NUUkxfVVBEQVRFX0NOVF9ESVNfU0VUKChWQ0FQX1NFTF9DT1VOVEVSICYgc2Vs KSA9PSAwKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9V UERBVEVfQUREUl9TRVQoYWRkcikgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQ0FQ X1NVUEVSX0NUUkxfQ0xFQVJfQ0FDSEVfU0VUKGNsZWFyKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9VUERBVEVfU0hPVF9TRVQodHJ1ZSksCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NSwgVkNBUF9TVVBFUl9DVFJMKTsKPiA+ICvCoMKg wqDCoCBzcGFyeDVfdmNhcF93YWl0X3N1cGVyX3VwZGF0ZShzcGFyeDUpOwo+ID4gK30KPiA+ICsK PiA+ICsvKiBBUEkgY2FsbGJhY2sgdXNlZCBmb3IgbW92aW5nIGEgYmxvY2sgb2YgcnVsZXMgaW4g dGhlIFZDQVAgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9tb3ZlKHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGFkZHIsIGludCBvZmZz ZXQsIGludCBjb3VudCkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgLyogdGhpcyB3aWxsIGJlIGFkZGVk IGxhdGVyICovCj4gPiArfQo+ID4gKwo+ID4gKy8qIFByb3ZpZGUgcG9ydCBpbmZvcm1hdGlvbiB2 aWEgYSBjYWxsYmFjayBpbnRlcmZhY2UgKi8KPiA+ICtzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X2lu Zm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdmNhcF90eXBlIHZ0eXBlLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgKCpwZiko dm9pZCAqb3V0LCBpbnQgYXJnLCBjb25zdCBjaGFyICpmbXQsIC4uLiksCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKm91dCwgaW50IGFy ZykKPiA+ICt7Cj4gPiArwqDCoMKgwqAgLyogdGhpcyB3aWxsIGJlIGFkZGVkIGxhdGVyICovCj4g PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEFQSSBjYWxsYmFjayBv cGVyYXRpb25zOiBvbmx5IElTMiBpcyBzdXBwb3J0ZWQgZm9yIG5vdyAqLwo+ID4gK3N0YXRpYyBz dHJ1Y3QgdmNhcF9vcGVyYXRpb25zIHNwYXJ4NV92Y2FwX29wcyA9IHsKPiA+ICvCoMKgwqDCoCAu dmFsaWRhdGVfa2V5c2V0ID0gc3Bhcng1X3ZjYXBfdmFsaWRhdGVfa2V5c2V0LAo+ID4gK8KgwqDC oMKgIC5hZGRfZGVmYXVsdF9maWVsZHMgPSBzcGFyeDVfdmNhcF9hZGRfZGVmYXVsdF9maWVsZHMs Cj4gPiArwqDCoMKgwqAgLmNhY2hlX2VyYXNlID0gc3Bhcng1X3ZjYXBfY2FjaGVfZXJhc2UsCj4g PiArwqDCoMKgwqAgLmNhY2hlX3dyaXRlID0gc3Bhcng1X3ZjYXBfY2FjaGVfd3JpdGUsCj4gPiAr wqDCoMKgwqAgLmNhY2hlX3JlYWQgPSBzcGFyeDVfdmNhcF9jYWNoZV9yZWFkLAo+ID4gK8KgwqDC oMKgIC5pbml0ID0gc3Bhcng1X3ZjYXBfcmFuZ2VfaW5pdCwKPiA+ICvCoMKgwqDCoCAudXBkYXRl ID0gc3Bhcng1X3ZjYXBfdXBkYXRlLAo+ID4gK8KgwqDCoMKgIC5tb3ZlID0gc3Bhcng1X3ZjYXBf bW92ZSwKPiA+ICvCoMKgwqDCoCAucG9ydF9pbmZvID0gc3Bhcng1X3BvcnRfaW5mbywKPiA+ICt9 Owo+ID4gKwo+ID4gKy8qIEVuYWJsZSBsb29rdXBzIHBlciBwb3J0IGFuZCBzZXQgdGhlIGtleXNl dCBnZW5lcmF0aW9uOiBvbmx5IElTMiBmb3Igbm93ICovCj4gPiArc3RhdGljIHZvaWQgc3Bhcng1 X3ZjYXBfcG9ydF9rZXlfc2VsZWN0aW9uKHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKQo+ID4gK3sKPiA+ICvC oMKgwqDCoCBpbnQgcG9ydG5vLCBsb29rdXA7Cj4gPiArwqDCoMKgwqAgdTMyIGtleXNlbDsKPiA+ ICsKPiA+ICvCoMKgwqDCoCAvKiBlbmFibGUgYWxsIDQgbG9va3VwcyBvbiBhbGwgcG9ydHMgKi8K PiA+ICvCoMKgwqDCoCBmb3IgKHBvcnRubyA9IDA7IHBvcnRubyA8IFNQWDVfUE9SVFM7ICsrcG9y dG5vKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcHg1X3dyKEFOQV9BQ0xfVkNBUF9T Ml9DRkdfU0VDX0VOQV9TRVQoMHhmKSwgc3Bhcng1LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQU5BX0FDTF9WQ0FQX1MyX0NGRyhwb3J0bm8pKTsKPiA+ICsK PiA+ICvCoMKgwqDCoCAvKiBhbGwgdHJhZmZpYyB0eXBlcyBnZW5lcmF0ZSB0aGUgTUFDX0VUWVBF IGtleXNldCBmb3Igbm93IGluIGFsbAo+ID4gK8KgwqDCoMKgwqAgKiBsb29rdXBzIG9uIGFsbCBw b3J0cwo+ID4gK8KgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoCBrZXlzZWwgPSBBTkFfQUNMX1ZD QVBfUzJfS0VZX1NFTF9LRVlfU0VMX0VOQV9TRVQodHJ1ZSkgfAo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBTkFfQUNMX1ZDQVBfUzJfS0VZX1NFTF9OT05fRVRIX0tFWV9TRUxfU0VUKFZD QVBfSVMyX1BTX05PTkVUSF9NQUNfRVRZUEUpIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQU5BX0FDTF9WQ0FQX1MyX0tFWV9TRUxfSVA0X01DX0tFWV9TRUxfU0VUKFZDQVBfSVMyX1BT X0lQVjRfTUNfTUFDX0VUWVBFKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFOQV9B Q0xfVkNBUF9TMl9LRVlfU0VMX0lQNF9VQ19LRVlfU0VMX1NFVChWQ0FQX0lTMl9QU19JUFY0X1VD X01BQ19FVFlQRSkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTkFfQUNMX1ZDQVBf UzJfS0VZX1NFTF9JUDZfTUNfS0VZX1NFTF9TRVQoVkNBUF9JUzJfUFNfSVBWNl9NQ19NQUNfRVRZ UEUpIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU5BX0FDTF9WQ0FQX1MyX0tFWV9T RUxfSVA2X1VDX0tFWV9TRUxfU0VUKFZDQVBfSVMyX1BTX0lQVjZfVUNfTUFDX0VUWVBFKSB8Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFOQV9BQ0xfVkNBUF9TMl9LRVlfU0VMX0FSUF9L RVlfU0VMX1NFVChWQ0FQX0lTMl9QU19BUlBfTUFDX0VUWVBFKTsKPiA+ICvCoMKgwqDCoCBmb3Ig KGxvb2t1cCA9IDA7IGxvb2t1cCA8IGFkbWluLT5sb29rdXBzOyArK2xvb2t1cCkgewo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKHBvcnRubyA9IDA7IHBvcnRubyA8IFNQWDVfUE9S VFM7ICsrcG9ydG5vKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzcHg1X3dyKGtleXNlbCwgc3Bhcng1LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFOQV9BQ0xfVkNBUF9TMl9LRVlfU0VM KHBvcnRubywgbG9va3VwKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+ICvC oMKgwqDCoCB9Cj4gPiArfQo+ID4gKwo+ID4gKy8qIERpc2FibGUgbG9va3VwcyBwZXIgcG9ydCBh bmQgc2V0IHRoZSBrZXlzZXQgZ2VuZXJhdGlvbjogb25seSBJUzIgZm9yIG5vdyAqLwo+ID4gK3N0 YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX3BvcnRfa2V5X2Rlc2VsZWN0aW9uKHN0cnVjdCBzcGFyeDUg KnNwYXJ4NSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWlu ICphZG1pbikKPiA+ICt7Cj4gPiArwqDCoMKgwqAgaW50IHBvcnRubzsKPiA+ICsKPiA+ICvCoMKg wqDCoCBmb3IgKHBvcnRubyA9IDA7IHBvcnRubyA8IFNQWDVfUE9SVFM7ICsrcG9ydG5vKQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcHg1X3JtdyhBTkFfQUNMX1ZDQVBfUzJfQ0ZHX1NF Q19FTkFfU0VUKDApLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBBTkFfQUNMX1ZDQVBfUzJfQ0ZHX1NFQ19FTkEsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU5BX0FDTF9WQ0FQX1MyX0NGRyhwb3J0bm8pKTsKPiA+ ICt9Cj4gPiArCj4gPiDCoHN0YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoc3RydWN0 IHZjYXBfYWRtaW4gKmFkbWluKQo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgIGlmICghYWRtaW4pCj4g PiBAQCAtMTM4LDYgKzQ3Niw3IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUg KnNwYXJ4NSkKPiA+IMKgwqDCoMKgwqDCoCAqwqDCoCAtIExpc3RzIG9mIHJ1bGVzCj4gPiDCoMKg wqDCoMKgwqAgKsKgwqAgLSBBZGRyZXNzIGluZm9ybWF0aW9uCj4gPiDCoMKgwqDCoMKgwqAgKsKg wqAgLSBJbml0aWFsaXplIFZDQVAgYmxvY2tzCj4gPiArwqDCoMKgwqDCoCAqwqDCoCAtIENvbmZp Z3VyZSBwb3J0IGtleXNldHMKPiA+IMKgwqDCoMKgwqDCoCAqLwo+ID4gwqDCoMKgwqDCoCBjdHJs ID0ga3phbGxvYyhzaXplb2YoKmN0cmwpLCBHRlBfS0VSTkVMKTsKPiA+IMKgwqDCoMKgwqAgaWYg KCFjdHJsKQo+ID4gQEAgLTE0Nyw2ICs0ODYsOCBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1 Y3Qgc3Bhcng1ICpzcGFyeDUpCj4gPiDCoMKgwqDCoMKgIC8qIHNlbGVjdCB0aGUgc3Bhcng1IFZD QVAgbW9kZWwgKi8KPiA+IMKgwqDCoMKgwqAgY3RybC0+dmNhcHMgPSBzcGFyeDVfdmNhcHM7Cj4g PiDCoMKgwqDCoMKgIGN0cmwtPnN0YXRzID0gJnNwYXJ4NV92Y2FwX3N0YXRzOwo+ID4gK8KgwqDC oMKgIC8qIFNldHVwIGNhbGxiYWNrcyB0byBhbGxvdyB0aGUgQVBJIHRvIHVzZSB0aGUgVkNBUCBI VyAqLwo+ID4gK8KgwqDCoMKgIGN0cmwtPm9wcyA9ICZzcGFyeDVfdmNhcF9vcHM7Cj4gPiAKPiA+ IMKgwqDCoMKgwqAgSU5JVF9MSVNUX0hFQUQoJmN0cmwtPmxpc3QpOwo+ID4gwqDCoMKgwqDCoCBm b3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUoc3Bhcng1X3ZjYXBfaW5zdF9jZmcpOyArK2lk eCkgewo+ID4gQEAgLTE1OSw2ICs1MDAsOSBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qg c3Bhcng1ICpzcGFyeDUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIGVycjsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2Jsb2NrX2FsbG9jKHNwYXJ4NSwg YWRtaW4sIGNmZyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2Js b2NrX2luaXQoc3Bhcng1LCBhZG1pbik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChjZmctPnZpbnN0ID09IDApCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzcGFyeDVfdmNhcF9wb3J0X2tleV9zZWxlY3Rpb24oc3Bhcng1LCBhZG1pbik7Cj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X2FkZF90YWlsKCZhZG1pbi0+bGlzdCwg JmN0cmwtPmxpc3QpOwo+ID4gwqDCoMKgwqDCoCB9Cj4gPiAKPiA+IEBAIC0xNzQsNiArNTE4LDcg QEAgdm9pZCBzcGFyeDVfdmNhcF9kZXN0cm95KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSkKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPiA+IAo+ID4gwqDCoMKgwqDCoCBsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWRtaW4sIGFkbWluX25leHQsICZjdHJsLT5saXN0LCBsaXN0 KSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX3BvcnRfa2V5X2Rl c2VsZWN0aW9uKHNwYXJ4NSwgYWRtaW4pOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bGlzdF9kZWwoJmFkbWluLT5saXN0KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNw YXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pOwo+ID4gwqDCoMKgwqDCoCB9Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYwo+ID4g Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jCj4gPiBpbmRl eCBhYTZiNDUxZDc5YTYuLmQ5MjlkMmQwMGI2YyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKPiA+ICsrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKPiA+IEBAIC0yMSw2ICsyMSwxNyBA QCBzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsIHsKPiA+IMKgwqDCoMKgwqAgdTMyIGFkZHI7IC8q IGFkZHJlc3MgaW4gdGhlIFZDQVAgYXQgaW5zZXJ0aW9uICovCj4gPiDCoH07Cj4gPiAKPiA+ICsv KiBSZXR1cm4gdGhlIGxpc3Qgb2Yga2V5ZmllbGRzIGZvciB0aGUga2V5c2V0ICovCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICp2Y2FwX2tleWZpZWxkcyhzdHJ1Y3QgdmNhcF9j b250cm9sICp2Y3RybCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHZj YXBfdHlwZSB2dCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHZjYXBf a2V5ZmllbGRfc2V0IGtleXNldCkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgLyogQ2hlY2sgdGhhdCB0 aGUga2V5c2V0IGV4aXN0cyBpbiB0aGUgdmNhcCBrZXlzZXQgbGlzdCAqLwo+ID4gK8KgwqDCoMKg IGlmIChrZXlzZXQgPj0gdmN0cmwtPnZjYXBzW3Z0XS5rZXlmaWVsZF9zZXRfc2l6ZSkKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiArwqDCoMKgwqAgcmV0dXJu IHZjdHJsLT52Y2Fwc1t2dF0ua2V5ZmllbGRfc2V0X21hcFtrZXlzZXRdOwo+ID4gK30KPiA+ICsK PiA+IMKgLyogVXBkYXRlIHRoZSBrZXlzZXQgZm9yIHRoZSBydWxlICovCj4gPiDCoGludCB2Y2Fw X3NldF9ydWxlX3NldF9rZXlzZXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSB2Y2FwX2tl eWZpZWxkX3NldCBrZXlzZXQpCj4gPiBAQCAtMjI3LDYgKzIzOCwyNCBAQCBpbnQgdmNhcF9kZWxf cnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYs IHUzMgo+ID4gaWQpCj4gPiDCoH0KPiA+IMKgRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9kZWxfcnVs ZSk7Cj4gPiAKPiA+ICsvKiBGaW5kIGluZm9ybWF0aW9uIG9uIGEga2V5IGZpZWxkIGluIGEgcnVs ZSAqLwo+ID4gK2NvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICp2Y2FwX2xvb2t1cF9rZXlmaWVsZChz dHJ1Y3QgdmNhcF9ydWxlICpydWxlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl bnVtIHZjYXBfa2V5X2ZpZWxkIGtleSkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHZjYXBf cnVsZV9pbnRlcm5hbCAqcmkgPSAoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqKXJ1bGU7Cj4g PiArwqDCoMKgwqAgZW51bSB2Y2FwX2tleWZpZWxkX3NldCBrZXlzZXQgPSBydWxlLT5rZXlzZXQ7 Cj4gPiArwqDCoMKgwqAgZW51bSB2Y2FwX3R5cGUgdnQgPSByaS0+YWRtaW4tPnZ0eXBlOwo+ID4g K8KgwqDCoMKgIGNvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICpmaWVsZHM7Cj4gPiArCj4gPiArwqDC oMKgwqAgaWYgKGtleXNldCA9PSBWQ0FQX0tGU19OT19WQUxVRSkKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiArwqDCoMKgwqAgZmllbGRzID0gdmNhcF9rZXlm aWVsZHMocmktPnZjdHJsLCB2dCwga2V5c2V0KTsKPiA+ICvCoMKgwqDCoCBpZiAoIWZpZWxkcykK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiArwqDCoMKgwqAg cmV0dXJuICZmaWVsZHNba2V5XTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9s b29rdXBfa2V5ZmllbGQpOwo+ID4gKwo+ID4gwqBzdGF0aWMgdm9pZCB2Y2FwX2NvcHlfZnJvbV9j bGllbnRfa2V5ZmllbGQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2NsaWVudF9rZXlmaWVsZCAqZmllbGQsCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmNhcF9jbGllbnRfa2V5ZmllbGRfZGF0YSAqZGF0YSkK PiA+IEBAIC0yNTMsNiArMjgyLDQ3IEBAIHN0YXRpYyBpbnQgdmNhcF9ydWxlX2FkZF9rZXkoc3Ry dWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4gPiDCoH0KPiA+ IAo+ID4gK3N0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfa2V5X2JpdHNpemUoc3RydWN0IHZjYXBf dTFfa2V5ICp1MSwgZW51bSB2Y2FwX2JpdCB2YWwpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN3aXRj aCAodmFsKSB7Cj4gPiArwqDCoMKgwqAgY2FzZSBWQ0FQX0JJVF8wOgo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MS0+dmFsdWUgPSAwOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1MS0+bWFzayA9IDE7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4g K8KgwqDCoMKgIGNhc2UgVkNBUF9CSVRfMToKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTEtPnZhbHVlID0gMTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTEtPm1hc2sgPSAx Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoCBjYXNl IFZDQVBfQklUX0FOWToKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTEtPnZhbHVlID0g MDsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTEtPm1hc2sgPSAwOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoCB9Cj4gPiArfQo+ID4gKwo+ ID4gKy8qIEFkZCBhIGJpdCBrZXkgd2l0aCB2YWx1ZSBhbmQgbWFzayB0byB0aGUgcnVsZSAqLwo+ ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV9iaXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51 bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZW51bSB2Y2FwX2JpdCB2YWwpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN0 cnVjdCB2Y2FwX2NsaWVudF9rZXlmaWVsZF9kYXRhIGRhdGE7Cj4gPiArCj4gPiArwqDCoMKgwqAg dmNhcF9ydWxlX3NldF9rZXlfYml0c2l6ZSgmZGF0YS51MSwgdmFsKTsKPiA+ICvCoMKgwqDCoCBy ZXR1cm4gdmNhcF9ydWxlX2FkZF9rZXkocnVsZSwga2V5LCBWQ0FQX0ZJRUxEX0JJVCwgJmRhdGEp Owo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV9iaXQpOwo+ ID4gKwo+ID4gKy8qIEFkZCBhIDMyIGJpdCBrZXkgZmllbGQgd2l0aCB2YWx1ZSBhbmQgbWFzayB0 byB0aGUgcnVsZSAqLwo+ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV91MzIoc3RydWN0IHZjYXBf cnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHZhbHVlLCB1MzIgbWFzaykKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgc3RydWN0IHZjYXBfY2xpZW50X2tleWZpZWxkX2RhdGEgZGF0YTsKPiA+ ICsKPiA+ICvCoMKgwqDCoCBkYXRhLnUzMi52YWx1ZSA9IHZhbHVlOwo+ID4gK8KgwqDCoMKgIGRh dGEudTMyLm1hc2sgPSBtYXNrOwo+ID4gK8KgwqDCoMKgIHJldHVybiB2Y2FwX3J1bGVfYWRkX2tl eShydWxlLCBrZXksIFZDQVBfRklFTERfVTMyLCAmZGF0YSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3UzMik7Cj4gPiArCj4gPiDCoC8qIEFkZCBhIDQ4 IGJpdCBrZXkgd2l0aCB2YWx1ZSBhbmQgbWFzayB0byB0aGUgcnVsZSAqLwo+ID4gwqBpbnQgdmNh cF9ydWxlX2FkZF9rZXlfdTQ4KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlf ZmllbGQga2V5LAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgdmNhcF91NDhfa2V5ICpmaWVsZHZhbCkKPiA+IEBAIC0yNjQsNiArMzM0LDE3 IEBAIGludCB2Y2FwX3J1bGVfYWRkX2tleV91NDgoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51 bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiDCoH0KPiA+IMKgRVhQT1JUX1NZTUJPTF9HUEwodmNh cF9ydWxlX2FkZF9rZXlfdTQ4KTsKPiA+IAo+ID4gKy8qIEFkZCBhIDcyIGJpdCBrZXkgd2l0aCB2 YWx1ZSBhbmQgbWFzayB0byB0aGUgcnVsZSAqLwo+ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV91 NzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBf dTcyX2tleSAqZmllbGR2YWwpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN0cnVjdCB2Y2FwX2NsaWVu dF9rZXlmaWVsZF9kYXRhIGRhdGE7Cj4gPiArCj4gPiArwqDCoMKgwqAgbWVtY3B5KCZkYXRhLnU3 MiwgZmllbGR2YWwsIHNpemVvZihkYXRhLnU3MikpOwo+ID4gK8KgwqDCoMKgIHJldHVybiB2Y2Fw X3J1bGVfYWRkX2tleShydWxlLCBrZXksIFZDQVBfRklFTERfVTcyLCAmZGF0YSk7Cj4gPiArfQo+ ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3U3Mik7Cj4gPiArCj4gPiDC oHN0YXRpYyB2b2lkIHZjYXBfY29weV9mcm9tX2NsaWVudF9hY3Rpb25maWVsZChzdHJ1Y3QgdmNh cF9ydWxlICpydWxlLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZj YXBfY2xpZW50X2FjdGlvbmZpZWxkICpmaWVsZCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCB2Y2FwX2NsaWVudF9hY3Rpb25maWVsZF9kYXRhICpkYXRhKQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2Ns aWVudC5oCj4gPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBp X2NsaWVudC5oCj4gPiBpbmRleCAyYzRmZDlkMDIyZjkuLmIwYTJlYWU4MWRiZSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVu dC5oCj4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2Fw aV9jbGllbnQuaAo+ID4gQEAgLTE3Myw2ICsxNzMsOCBAQCBpbnQgdmNhcF9ydWxlX2FkZF9rZXlf dTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgdmFsdWUs IHUzMiBtYXNrKTsKPiA+IMKgaW50IHZjYXBfcnVsZV9hZGRfa2V5X3U0OChzdHJ1Y3QgdmNhcF9y dWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfdTQ4X2tleSAqZmllbGR2 YWwpOwo+ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV91NzIoc3RydWN0IHZjYXBfcnVsZSAqcnVs ZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfdTcyX2tleSAqZmllbGR2YWwpOwo+ID4g wqBpbnQgdmNhcF9ydWxlX2FkZF9hY3Rpb25fYml0KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVu dW0gdmNhcF9hY3Rpb25fZmllbGQgYWN0aW9uLCBlbnVtIHZjYXBfYml0IHZhbCk7Cj4gPiDCoGlu dCB2Y2FwX3J1bGVfYWRkX2FjdGlvbl91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IEBA IC0xODEsNiArMTgzLDkgQEAgaW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3UzMihzdHJ1Y3QgdmNh cF9ydWxlICpydWxlLAo+ID4gwqAvKiBWQ0FQIGxvb2t1cCBvcGVyYXRpb25zICovCj4gPiDCoC8q IExvb2t1cCBhIHZjYXAgaW5zdGFuY2UgdXNpbmcgY2hhaW4gaWQgKi8KPiA+IMKgc3RydWN0IHZj YXBfYWRtaW4gKnZjYXBfZmluZF9hZG1pbihzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgaW50 IGNpZCk7Cj4gPiArLyogRmluZCBpbmZvcm1hdGlvbiBvbiBhIGtleSBmaWVsZCBpbiBhIHJ1bGUg Ki8KPiA+ICtjb25zdCBzdHJ1Y3QgdmNhcF9maWVsZCAqdmNhcF9sb29rdXBfa2V5ZmllbGQoc3Ry dWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51 bSB2Y2FwX2tleV9maWVsZCBrZXkpOwo+ID4gwqAvKiBGaW5kIGEgcnVsZSBpZCB3aXRoIGEgcHJv dmlkZWQgY29va2llICovCj4gPiDCoGludCB2Y2FwX2xvb2t1cF9ydWxlX2J5X2Nvb2tpZShzdHJ1 Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTY0IGNvb2tpZSk7Cj4gPiAKPiA+IC0tCj4gPiAyLjM4 LjEKPiA+IAo+IAo+IFRlc3RlZCBvbiBNaWNyb2NoaXAgUENCMTM1IHN3aXRjaC4KPiAKPiBUZXN0 ZWQtYnk6IENhc3BlciBBbmRlcnNzb24gPGNhc3Blci5jYXNhbkBnbWFpbC5jb20+Cj4gUmV2aWV3 ZWQtYnk6IENhc3BlciBBbmRlcnNzb24gPGNhc3Blci5jYXNhbkBnbWFpbC5jb20+Cj4gCgpHcmVh dCB0aGF0IHlvdSBkaWQgYSB0ZXN0IHJvdW5kIHRoaXMgZWFybHkuCgpCUgpTdGVlbgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id F1455C4332F for ; Thu, 20 Oct 2022 09:14:10 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:References:In-Reply-To: Date:CC:To:From:Subject:Message-ID:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=XaZNlWY/L6Po80HeVUWcXzcH8mowZHUeX/KR7QQEaMw=; b=TUpx4EelhHWqxA tziyMpSY2QywkXprrjmCS7lY5GgYqGNlgSoZ5J3OIrQgUAczkF3Ep0WJjTiOeji1KnlHSHDhNGMuy bXbT/G287rqd9Zb2v5zLMpK1WIjZyKBcBZ9APG8OutppxT2J1h8aXRaeTgPCtWRFW37YkJgTTPvJF 93rTTxWn6GijZgP4sp83pSFSt/W0HmLQRetxzZ/2zpiB69flW3HFNGwevtjOQTgsf8xxmzVc0ug3R ZfEfkW8Nj5COim+3n04pQ5XoGTDeug7ZkaH6hjVD77GJdR2RZKDC1vJICvE8tZ/gD2cgW0cqKjzKx /Xu107lcIeZBGVbe2HsQ==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1olRbL-00Clpm-GW; Thu, 20 Oct 2022 09:12:32 +0000 Received: from esa.microchip.iphmx.com ([68.232.153.233]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1olRZ0-00Ck5E-MC for linux-arm-kernel@lists.infradead.org; Thu, 20 Oct 2022 09:10:14 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1666257006; x=1697793006; h=message-id:subject:from:to:cc:date:in-reply-to: references:content-transfer-encoding:mime-version; bh=k/TG6BC7A6D4tKLlDjzRKDhkpK1HZayJXpCC1owJWnM=; b=R0ZOq9CYWAfTfKuDZPZQk/GMlTuwom0GX/dP5k69tYjMg44iS3eVb8Dg l8TyVXrqXiDdYgp0471RFmnVZJPl0Vv8z/f31HxhxXKT9yCglcICvIuEM o6LXeEk9CM2rxhQ9ygWI6uB4/RUeo+JXTNTx4531lBZkUKeRk5QbigMii gSgCF6khiS0g2mTbLKcW381Yt61ho8p9RKOCydJwkqEFRx5LbXoWBbgNT GjlDFoWGVY0r/AUMd85biuQSY6f2z6NgHL6EsfVn34GUyOlEjY5n2Ozp9 TOHJ+IRs20bLRFrR4XHx81Ob0CysdrH+T6VTUYzyAYuH37VYUSS4puX7S w==; X-IronPort-AV: E=Sophos;i="5.95,198,1661842800"; d="scan'208";a="196270292" Received: from unknown (HELO email.microchip.com) ([170.129.1.10]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 20 Oct 2022 02:10:05 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex03.mchp-main.com (10.10.85.151) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.12; Thu, 20 Oct 2022 02:10:06 -0700 Received: from den-dk-m31857.microchip.com (10.10.115.15) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server id 15.1.2507.12 via Frontend Transport; Thu, 20 Oct 2022 02:10:03 -0700 Message-ID: <200aaa2a6e0957b88a80f3b3db08c52462e2abbc.camel@microchip.com> Subject: Re: [PATCH net-next v2 5/9] net: microchip: sparx5: Adding port keyset config and callback interface From: Steen Hegelund To: Casper Andersson CC: "David S . Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , , Randy Dunlap , Russell King , "Wan Jiabing" , Nathan Huckleberry , , , Date: Thu, 20 Oct 2022 11:10:02 +0200 In-Reply-To: <20221020073325.hr33d5mck7vlwxh6@wse-c0155> References: <20221019114215.620969-1-steen.hegelund@microchip.com> <20221019114215.620969-6-steen.hegelund@microchip.com> <20221020073325.hr33d5mck7vlwxh6@wse-c0155> User-Agent: Evolution 3.44.4 MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20221020_021006_797391_70D758AF X-CRM114-Status: GOOD ( 32.84 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgQ2FzcGVyLAoKT24gVGh1LCAyMDIyLTEwLTIwIGF0IDA5OjMzICswMjAwLCBDYXNwZXIgQW5k ZXJzc29uIHdyb3RlOgo+IEVYVEVSTkFMIEVNQUlMOiBEbyBub3QgY2xpY2sgbGlua3Mgb3Igb3Bl biBhdHRhY2htZW50cyB1bmxlc3MgeW91IGtub3cgdGhlIGNvbnRlbnQgaXMgc2FmZQo+IAo+IEhp IFN0ZWVuLAo+IAo+IE9uIDIwMjItMTAtMTkgMTM6NDIsIFN0ZWVuIEhlZ2VsdW5kIHdyb3RlOgo+ ID4gVGhpcyBwcm92aWRlcyBhIGRlZmF1bHQgcG9ydCBrZXlzZXQgY29uZmlndXJhdGlvbiBmb3Ig dGhlIFNwYXJ4NSBJUzIgVkNBUAo+ID4gd2hlcmUgYWxsIHBvcnRzIGFuZCBhbGwgbG9va3VwcyBp biBJUzIgdXNlIHRoZSBzYW1lIGtleXNldCAoTUFDX0VUWVBFKSBmb3IKPiA+IGFsbCB0eXBlcyBv ZiB0cmFmZmljLgo+ID4gCj4gPiBUaGlzIG1lYW5zIHRoYXQgbm8gbWF0dGVyIHdoYXQgZnJhbWUg dHlwZSBpcyByZWNlaXZlZCBvbiBhbnkgZnJvbnQgcG9ydCBpdAo+ID4gd2lsbCBnZW5lcmF0ZSB0 aGUgTUFDX0VUWVBFIGtleXNldCBpbiB0aGUgSVMgVkNBUCBhbmQgYW55IHJ1bGUgaW4gdGhlIElT Mgo+ID4gVkNBUCB0aGF0IHVzZXMgdGhpcyBrZXlzZXQgd2lsbCBiZSBtYXRjaGVkIGFnYWluc3Qg dGhlIGtleXMgaW4gdGhlCj4gPiBNQUNfRVRZUEUga2V5c2V0Lgo+ID4gCj4gPiBUaGUgY2FsbGJh Y2sgaW50ZXJmYWNlIHVzZWQgYnkgdGhlIFZDQVAgQVBJIGlzIHBvcHVsYXRlZCB3aXRoIFNwYXJ4 NQo+ID4gc3BlY2lmaWMgaGFuZGxlciBmdW5jdGlvbnMgdGhhdCB0YWtlcyBjYXJlIG9mIHRoZSBh Y3R1YWwgcmVhZGluZyBhbmQKPiA+IHdyaXRpbmcgdG8gZGF0YSB0byB0aGUgU3Bhcng1IElTMiBW Q0FQIGluc3RhbmNlLgo+ID4gCj4gPiBBIGZldyBmdW5jdGlvbnMgYXJlIGFsc28gYWRkZWQgdG8g dGhlIFZDQVAgQVBJIHRvIHN1cHBvcnQgYWRkaXRpb24gb2YgcnVsZQo+ID4gZmllbGRzIHN1Y2gg YXMgdGhlIGluZ3Jlc3MgcG9ydCBtYXNrIGFuZCB0aGUgbG9va3VwIGJpdC4KPiA+IAo+ID4gVGhl IElTMiBWQ0FQIGluIFNwYXJ4NSBpcyByZWFsbHkgZGl2aWRlZCBpbiB0d28gaW5zdGFuY2VzIHdp dGggbG9va3VwIDAKPiA+IGFuZCAxIGluIHRoZSBmaXJzdCBpbnN0YW5jZSBhbmQgbG9va3VwIDIg YW5kIDMgaW4gdGhlIHNlY29uZCBpbnN0YW5jZS4KPiA+IFRoZSBsb29rdXAgYml0IHNlbGVjdHMg bG9va3VwIDAgb3IgMyBpbiB0aGUgcmVzcGVjdGl2ZSBpbnN0YW5jZSB3aGVuIGl0IGlzCj4gPiBz ZXQuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IFN0ZWVuIEhlZ2VsdW5kIDxzdGVlbi5oZWdlbHVu ZEBtaWNyb2NoaXAuY29tPgo+ID4gLS0tCj4gPiDCoC4uLi9taWNyb2NoaXAvc3Bhcng1L3NwYXJ4 NV92Y2FwX2ltcGwuY8KgwqDCoMKgwqDCoCB8IDM0NSArKysrKysrKysrKysrKysrKysKPiA+IMKg Li4uL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jwqDCoMKgIHzCoCA4MSAr KysrCj4gPiDCoC4uLi9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaV9jbGllbnQuaCB8 wqDCoCA1ICsKPiA+IMKgMyBmaWxlcyBjaGFuZ2VkLCA0MzEgaW5zZXJ0aW9ucygrKQo+ID4gCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9zcGFy eDVfdmNhcF9pbXBsLmMKPiA+IGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4 NS9zcGFyeDVfdmNhcF9pbXBsLmMKPiA+IGluZGV4IDVlYzAwNWU2MzZhYS4uZGJkMmMyYzRkMzQ2 IDEwMDY0NAo+ID4gLS0tIGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3NwYXJ4NS9z cGFyeDVfdmNhcF9pbXBsLmMKPiA+ICsrKyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hp cC9zcGFyeDUvc3Bhcng1X3ZjYXBfaW1wbC5jCj4gPiBAQCAtMjIsNiArMjIsNTQgQEAKPiA+IAo+ ID4gwqAjZGVmaW5lIFNQQVJYNV9JUzJfTE9PS1VQUyA0Cj4gPiAKPiA+ICsvKiBJUzIgcG9ydCBr ZXlzZXQgc2VsZWN0aW9uIGNvbnRyb2wgKi8KPiA+ICsKPiA+ICsvKiBJUzIgbm9uLWV0aGVybmV0 IHRyYWZmaWMgdHlwZSBrZXlzZXQgZ2VuZXJhdGlvbiAqLwo+ID4gK2VudW0gdmNhcF9pczJfcG9y dF9zZWxfbm9uZXRoIHsKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19OT05FVEhfTUFDX0VUWVBF LAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX05PTkVUSF9DVVNUT01fMSwKPiA+ICvCoMKgwqDC oCBWQ0FQX0lTMl9QU19OT05FVEhfQ1VTVE9NXzIsCj4gPiArwqDCoMKgwqAgVkNBUF9JUzJfUFNf Tk9ORVRIX05PX0xPT0tVUAo+ID4gK307Cj4gPiArCj4gPiArLyogSVMyIElQdjQgdW5pY2FzdCB0 cmFmZmljIHR5cGUga2V5c2V0IGdlbmVyYXRpb24gKi8KPiA+ICtlbnVtIHZjYXBfaXMyX3BvcnRf c2VsX2lwdjRfdWMgewo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRfVUNfTUFDX0VUWVBF LAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRfVUNfSVA0X1RDUF9VRFBfT1RIRVIsCj4g PiArwqDCoMKgwqAgVkNBUF9JUzJfUFNfSVBWNF9VQ19JUF83VFVQTEUsCj4gPiArfTsKPiA+ICsK PiA+ICsvKiBJUzIgSVB2NCBtdWx0aWNhc3QgdHJhZmZpYyB0eXBlIGtleXNldCBnZW5lcmF0aW9u ICovCj4gPiArZW51bSB2Y2FwX2lzMl9wb3J0X3NlbF9pcHY0X21jIHsKPiA+ICvCoMKgwqDCoCBW Q0FQX0lTMl9QU19JUFY0X01DX01BQ19FVFlQRSwKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19J UFY0X01DX0lQNF9UQ1BfVURQX09USEVSLAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRf TUNfSVBfN1RVUExFLAo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjRfTUNfSVA0X1ZJRCwK PiA+ICt9Owo+ID4gKwo+ID4gKy8qIElTMiBJUHY2IHVuaWNhc3QgdHJhZmZpYyB0eXBlIGtleXNl dCBnZW5lcmF0aW9uICovCj4gPiArZW51bSB2Y2FwX2lzMl9wb3J0X3NlbF9pcHY2X3VjIHsKPiA+ ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19JUFY2X1VDX01BQ19FVFlQRSwKPiA+ICvCoMKgwqDCoCBW Q0FQX0lTMl9QU19JUFY2X1VDX0lQXzdUVVBMRSwKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19J UFY2X1VDX0lQNl9TVEQsCj4gPiArwqDCoMKgwqAgVkNBUF9JUzJfUFNfSVBWNl9VQ19JUDRfVENQ X1VEUF9PVEhFUiwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIElTMiBJUHY2IG11bHRpY2FzdCB0cmFm ZmljIHR5cGUga2V5c2V0IGdlbmVyYXRpb24gKi8KPiA+ICtlbnVtIHZjYXBfaXMyX3BvcnRfc2Vs X2lwdjZfbWMgewo+ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjZfTUNfTUFDX0VUWVBFLAo+ ID4gK8KgwqDCoMKgIFZDQVBfSVMyX1BTX0lQVjZfTUNfSVBfN1RVUExFLAo+ID4gK8KgwqDCoMKg IFZDQVBfSVMyX1BTX0lQVjZfTUNfSVA2X1ZJRCwKPiA+ICvCoMKgwqDCoCBWQ0FQX0lTMl9QU19J UFY2X01DX0lQNl9TVEQsCj4gPiArwqDCoMKgwqAgVkNBUF9JUzJfUFNfSVBWNl9NQ19JUDRfVENQ X1VEUF9PVEhFUiwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qIElTMiBBUlAgdHJhZmZpYyB0eXBlIGtl eXNldCBnZW5lcmF0aW9uICovCj4gPiArZW51bSB2Y2FwX2lzMl9wb3J0X3NlbF9hcnAgewo+ID4g K8KgwqDCoMKgIFZDQVBfSVMyX1BTX0FSUF9NQUNfRVRZUEUsCj4gPiArwqDCoMKgwqAgVkNBUF9J UzJfUFNfQVJQX0FSUCwKPiA+ICt9Owo+ID4gKwo+ID4gwqBzdGF0aWMgc3RydWN0IHNwYXJ4NV92 Y2FwX2luc3Qgewo+ID4gwqDCoMKgwqDCoCBlbnVtIHZjYXBfdHlwZSB2dHlwZTsgLyogdHlwZSBv ZiB2Y2FwICovCj4gPiDCoMKgwqDCoMKgIGludCB2aW5zdDsgLyogaW5zdGFuY2UgbnVtYmVyIHdp dGhpbiB0aGUgc2FtZSB0eXBlICovCj4gPiBAQCAtNTgsNiArMTA2LDI5NiBAQCBzdGF0aWMgc3Ry dWN0IHNwYXJ4NV92Y2FwX2luc3Qgewo+ID4gwqDCoMKgwqDCoCB9LAo+ID4gwqB9Owo+ID4gCj4g PiArLyogQXdhaXQgdGhlIHN1cGVyIFZDQVAgY29tcGxldGlvbiBvZiB0aGUgY3VycmVudCBvcGVy YXRpb24gKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF93YWl0X3N1cGVyX3VwZGF0ZShz dHJ1Y3Qgc3Bhcng1ICpzcGFyeDUpCj4gPiArewo+ID4gK8KgwqDCoMKgIHUzMiB2YWx1ZTsKPiA+ ICsKPiA+ICvCoMKgwqDCoCByZWFkX3BvbGxfdGltZW91dChzcHg1X3JkLCB2YWx1ZSwKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAhVkNBUF9TVVBFUl9D VFJMX1VQREFURV9TSE9UX0dFVCh2YWx1ZSksIDUwMCwgMTAwMDAsCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmFsc2UsIHNwYXJ4NSwgVkNBUF9TVVBF Ul9DVFJMKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogSW5pdGlhbGl6aW5nIGEgVkNBUCBhZGRyZXNz IHJhbmdlOiBvbmx5IElTMiBmb3Igbm93ICovCj4gPiArc3RhdGljIHZvaWQgX3NwYXJ4NV92Y2Fw X3JhbmdlX2luaXQoc3RydWN0IHNwYXJ4NSAqc3Bhcng1LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZj YXBfYWRtaW4gKmFkbWluLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGFkZHIsIHUzMiBjb3VudCkKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgdTMyIHNpemUgPSBjb3VudCAtIDE7Cj4gPiArCj4gPiArwqDCoMKgwqAg c3B4NV93cihWQ0FQX1NVUEVSX0NGR19NVl9OVU1fUE9TX1NFVCgwKSB8Cj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ0ZHX01WX1NJWkVfU0VUKHNpemUpLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGFyeDUsIFZDQVBfU1VQRVJfQ0ZHKTsKPiA+ICvCoMKg wqDCoCBzcHg1X3dyKFZDQVBfU1VQRVJfQ1RSTF9VUERBVEVfQ01EX1NFVChWQ0FQX0NNRF9JTklU SUFMSVpFKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9V UERBVEVfRU5UUllfRElTX1NFVCgwKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZD QVBfU1VQRVJfQ1RSTF9VUERBVEVfQUNUSU9OX0RJU19TRVQoMCkgfAo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBWQ0FQX1NVUEVSX0NUUkxfVVBEQVRFX0NOVF9ESVNfU0VUKDApIHwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkNBUF9TVVBFUl9DVFJMX1VQREFURV9BRERSX1NF VChhZGRyKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9D TEVBUl9DQUNIRV9TRVQodHJ1ZSkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQ0FQ X1NVUEVSX0NUUkxfVVBEQVRFX1NIT1RfU0VUKHRydWUpLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzcGFyeDUsIFZDQVBfU1VQRVJfQ1RSTCk7Cj4gPiArwqDCoMKgwqAgc3Bhcng1X3Zj YXBfd2FpdF9zdXBlcl91cGRhdGUoc3Bhcng1KTsKPiA+ICt9Cj4gPiArCj4gPiArLyogSW5pdGlh bGl6aW5nIFZDQVAgcnVsZSBkYXRhIGFyZWEgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNh cF9ibG9ja19pbml0KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmNh cF9hZG1pbiAqYWRtaW4pCj4gPiArewo+ID4gK8KgwqDCoMKgIF9zcGFyeDVfdmNhcF9yYW5nZV9p bml0KHNwYXJ4NSwgYWRtaW4sIGFkbWluLT5maXJzdF92YWxpZF9hZGRyLAo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFkbWluLT5s YXN0X3ZhbGlkX2FkZHIgLQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZG1pbi0+Zmlyc3RfdmFsaWRf YWRkcik7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEdldCB0aGUga2V5c2V0IG5hbWUgZnJvbSB0aGUg c3Bhcng1IFZDQVAgbW9kZWwgKi8KPiA+ICtzdGF0aWMgY29uc3QgY2hhciAqc3Bhcng1X3ZjYXBf a2V5c2V0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIGVudW0gdmNhcF9rZXlmaWVsZF9zZXQga2V5c2V0KQo+ID4gK3sKPiA+ICvCoMKgwqDC oCBzdHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZGV2KTsKPiA+ICsKPiA+ ICvCoMKgwqDCoCByZXR1cm4gcG9ydC0+c3Bhcng1LT52Y2FwX2N0cmwtPnN0YXRzLT5rZXlmaWVs ZF9zZXRfbmFtZXNba2V5c2V0XTsKPiA+ICt9Cj4gPiArCj4gPiArLyogQ2hlY2sgaWYgdGhpcyBp cyB0aGUgZmlyc3QgbG9va3VwIG9mIElTMiAqLwo+ID4gK3N0YXRpYyBib29sIHNwYXJ4NV92Y2Fw X2lzMl9pc19maXJzdF9jaGFpbihzdHJ1Y3QgdmNhcF9ydWxlICpydWxlKQo+ID4gK3sKPiA+ICvC oMKgwqDCoCByZXR1cm4gKHJ1bGUtPnZjYXBfY2hhaW5faWQgPj0gU1BBUlg1X1ZDQVBfQ0lEX0lT Ml9MMCAmJgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBydWxlLT52Y2FwX2NoYWluX2lk IDwgU1BBUlg1X1ZDQVBfQ0lEX0lTMl9MMSkgfHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKChydWxlLT52Y2FwX2NoYWluX2lkID49IFNQQVJYNV9WQ0FQX0NJRF9JUzJfTDIgJiYKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJ1bGUtPnZjYXBfY2hhaW5faWQgPCBTUEFS WDVfVkNBUF9DSURfSVMyX0wzKSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIFNldCB0aGUgbmFycm93 IHJhbmdlIGluZ3Jlc3MgcG9ydCBtYXNrIG9uIGEgcnVsZSAqLwo+ID4gK3N0YXRpYyB2b2lkIHNw YXJ4NV92Y2FwX2FkZF9yYW5nZV9wb3J0X21hc2soc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmRl dik7Cj4gPiArwqDCoMKgwqAgdTMyIHBvcnRfbWFzazsKPiA+ICvCoMKgwqDCoCB1MzIgcmFuZ2U7 Cj4gPiArCj4gPiArwqDCoMKgwqAgcmFuZ2UgPSBwb3J0LT5wb3J0bm8gLyBCSVRTX1BFUl9UWVBF KHUzMik7Cj4gPiArwqDCoMKgwqAgLyogUG9ydCBiaXQgc2V0IHRvIG1hdGNoLWFueSAqLwo+ID4g K8KgwqDCoMKgIHBvcnRfbWFzayA9IH5CSVQocG9ydC0+cG9ydG5vICUgQklUU19QRVJfVFlQRSh1 MzIpKTsKPiA+ICvCoMKgwqDCoCB2Y2FwX3J1bGVfYWRkX2tleV91MzIocnVsZSwgVkNBUF9LRl9J Rl9JR1JfUE9SVF9NQVNLX1NFTCwgMCwgMHhmKTsKPiA+ICvCoMKgwqDCoCB2Y2FwX3J1bGVfYWRk X2tleV91MzIocnVsZSwgVkNBUF9LRl9JRl9JR1JfUE9SVF9NQVNLX1JORywgcmFuZ2UsIDB4Zik7 Cj4gPiArwqDCoMKgwqAgdmNhcF9ydWxlX2FkZF9rZXlfdTMyKHJ1bGUsIFZDQVBfS0ZfSUZfSUdS X1BPUlRfTUFTSywgMCwgcG9ydF9tYXNrKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogU2V0IHRoZSB3 aWRlIHJhbmdlIGluZ3Jlc3MgcG9ydCBtYXNrIG9uIGEgcnVsZSAqLwo+ID4gK3N0YXRpYyB2b2lk IHNwYXJ4NV92Y2FwX2FkZF93aWRlX3BvcnRfbWFzayhzdHJ1Y3QgdmNhcF9ydWxlICpydWxlLAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldikKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0ID0gbmV0ZGV2X3ByaXYobmRl dik7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHZjYXBfdTcyX2tleSBwb3J0X21hc2s7Cj4gPiArwqDC oMKgwqAgdTMyIHJhbmdlOwo+ID4gKwo+ID4gK8KgwqDCoMKgIC8qIFBvcnQgYml0IHNldCB0byBt YXRjaC1hbnkgKi8KPiA+ICvCoMKgwqDCoCBtZW1zZXQocG9ydF9tYXNrLnZhbHVlLCAwLCBzaXpl b2YocG9ydF9tYXNrLnZhbHVlKSk7Cj4gPiArwqDCoMKgwqAgbWVtc2V0KHBvcnRfbWFzay5tYXNr LCAweGZmLCBzaXplb2YocG9ydF9tYXNrLm1hc2spKTsKPiA+ICvCoMKgwqDCoCByYW5nZSA9IHBv cnQtPnBvcnRubyAvIEJJVFNfUEVSX0JZVEU7Cj4gPiArwqDCoMKgwqAgcG9ydF9tYXNrLm1hc2tb cmFuZ2VdID0gfkJJVChwb3J0LT5wb3J0bm8gJSBCSVRTX1BFUl9CWVRFKTsKPiA+ICvCoMKgwqDC oCB2Y2FwX3J1bGVfYWRkX2tleV91NzIocnVsZSwgVkNBUF9LRl9JRl9JR1JfUE9SVF9NQVNLLCAm cG9ydF9tYXNrKTsKPiA+ICt9Cj4gPiArCj4gPiArLyogQVBJIGNhbGxiYWNrIHVzZWQgZm9yIHZh bGlkYXRpbmcgYSBmaWVsZCBrZXlzZXQgKGNoZWNrIHRoZSBwb3J0IGtleXNldHMpICovCj4gPiAr c3RhdGljIGVudW0gdmNhcF9rZXlmaWVsZF9zZXQKPiA+ICtzcGFyeDVfdmNhcF92YWxpZGF0ZV9r ZXlzZXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwKPiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHZjYXBfcnVsZSAqcnVsZSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfa2V5c2V0X2xpc3QgKmtzbGlzdCwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTE2IGwzX3Byb3Rv KQo+ID4gK3sKPiA+ICvCoMKgwqDCoCBpZiAoIWtzbGlzdCB8fCBrc2xpc3QtPmNudCA9PSAwKQo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gVkNBUF9LRlNfTk9fVkFMVUU7Cj4g PiArwqDCoMKgwqAgLyogZm9yIG5vdyBqdXN0IHJldHVybiB3aGF0ZXZlciB0aGUgQVBJIHN1Z2dl c3RzICovCj4gPiArwqDCoMKgwqAgcmV0dXJuIGtzbGlzdC0+a2V5c2V0c1swXTsKPiA+ICt9Cj4g PiArCj4gPiArLyogQVBJIGNhbGxiYWNrIHVzZWQgZm9yIGFkZGluZyBkZWZhdWx0IGZpZWxkcyB0 byBhIHJ1bGUgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9hZGRfZGVmYXVsdF9maWVs ZHMoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCB2Y2FwX2FkbWluICphZG1pbiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0 IHZjYXBfcnVsZSAqcnVsZSkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgY29uc3Qgc3RydWN0IHZjYXBf ZmllbGQgKmZpZWxkOwo+ID4gKwo+ID4gK8KgwqDCoMKgIGZpZWxkID0gdmNhcF9sb29rdXBfa2V5 ZmllbGQocnVsZSwgVkNBUF9LRl9JRl9JR1JfUE9SVF9NQVNLKTsKPiA+ICvCoMKgwqDCoCBpZiAo ZmllbGQgJiYgZmllbGQtPndpZHRoID09IFNQWDVfUE9SVFMpCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2FkZF93aWRlX3BvcnRfbWFzayhydWxlLCBuZGV2KTsKPiA+ ICvCoMKgwqDCoCBlbHNlIGlmIChmaWVsZCAmJiBmaWVsZC0+d2lkdGggPT0gQklUU19QRVJfVFlQ RSh1MzIpKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGFyeDVfdmNhcF9hZGRfcmFu Z2VfcG9ydF9tYXNrKHJ1bGUsIG5kZXYpOwo+ID4gK8KgwqDCoMKgIGVsc2UKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIlczolZDogJXM6IGNvdWxkIG5vdCBhZGQgYW4gaW5n cmVzcyBwb3J0IG1hc2sgZm9yOiAlc1xuIiwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBfX2Z1bmNfXywgX19MSU5FX18sIG5ldGRldl9uYW1lKG5kZXYpLAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2tleXNl dF9uYW1lKG5kZXYsIHJ1bGUtPmtleXNldCkpOwo+ID4gK8KgwqDCoMKgIC8qIGFkZCB0aGUgbG9v a3VwIGJpdCAqLwo+ID4gK8KgwqDCoMKgIGlmIChzcGFyeDVfdmNhcF9pczJfaXNfZmlyc3RfY2hh aW4ocnVsZSkpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZjYXBfcnVsZV9hZGRfa2V5 X2JpdChydWxlLCBWQ0FQX0tGX0xPT0tVUF9GSVJTVF9JUywgVkNBUF9CSVRfMSk7Cj4gPiArwqDC oMKgwqAgZWxzZQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2Y2FwX3J1bGVfYWRkX2tl eV9iaXQocnVsZSwgVkNBUF9LRl9MT09LVVBfRklSU1RfSVMsIFZDQVBfQklUXzApOwo+ID4gK30K PiA+ICsKPiA+ICsvKiBBUEkgY2FsbGJhY2sgdXNlZCBmb3IgZXJhc2luZyB0aGUgdmNhcCBjYWNo ZSBhcmVhIChub3QgdGhlIHJlZ2lzdGVyIGFyZWEpICovCj4gPiArc3RhdGljIHZvaWQgc3Bhcng1 X3ZjYXBfY2FjaGVfZXJhc2Uoc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKQo+ID4gK3sKPiA+ICvC oMKgwqDCoCBtZW1zZXQoYWRtaW4tPmNhY2hlLmtleXN0cmVhbSwgMCwgU1RSRUFNU0laRSk7Cj4g PiArwqDCoMKgwqAgbWVtc2V0KGFkbWluLT5jYWNoZS5tYXNrc3RyZWFtLCAwLCBTVFJFQU1TSVpF KTsKPiA+ICvCoMKgwqDCoCBtZW1zZXQoYWRtaW4tPmNhY2hlLmFjdGlvbnN0cmVhbSwgMCwgU1RS RUFNU0laRSk7Cj4gPiArwqDCoMKgwqAgbWVtc2V0KCZhZG1pbi0+Y2FjaGUuY291bnRlciwgMCwg c2l6ZW9mKGFkbWluLT5jYWNoZS5jb3VudGVyKSk7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEFQSSBj YWxsYmFjayB1c2VkIGZvciB3cml0aW5nIHRvIHRoZSBWQ0FQIGNhY2hlICovCj4gPiArc3RhdGlj IHZvaWQgc3Bhcng1X3ZjYXBfY2FjaGVfd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHZj YXBfc2VsZWN0aW9uIHNlbCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBzdGFydCwKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUz MiBjb3VudCkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NV9wb3J0ICpwb3J0ID0g bmV0ZGV2X3ByaXYobmRldik7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHNwYXJ4NSAqc3Bhcng1ID0g cG9ydC0+c3Bhcng1Owo+ID4gK8KgwqDCoMKgIHUzMiAqa2V5c3RyLCAqbXNrc3RyLCAqYWN0c3Ry Owo+ID4gK8KgwqDCoMKgIGludCBpZHg7Cj4gPiArCj4gPiArwqDCoMKgwqAga2V5c3RyID0gJmFk bWluLT5jYWNoZS5rZXlzdHJlYW1bc3RhcnRdOwo+ID4gK8KgwqDCoMKgIG1za3N0ciA9ICZhZG1p bi0+Y2FjaGUubWFza3N0cmVhbVtzdGFydF07Cj4gPiArwqDCoMKgwqAgYWN0c3RyID0gJmFkbWlu LT5jYWNoZS5hY3Rpb25zdHJlYW1bc3RhcnRdOwo+ID4gK8KgwqDCoMKgIHN3aXRjaCAoc2VsKSB7 Cj4gPiArwqDCoMKgwqAgY2FzZSBWQ0FQX1NFTF9FTlRSWToKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZm9yIChpZHggPSAwOyBpZHggPCBjb3VudDsgKytpZHgpIHsKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIEF2b2lkICdtYXRjaC1vZmYnIGJ5 IHNldHRpbmcgdmFsdWUgJiBtYXNrICovCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzcHg1X3dyKGtleXN0cltpZHhdICYgbXNrc3RyW2lkeF0sIHNwYXJ4NSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBWQ0FQX1NVUEVSX1ZDQVBfRU5UUllfREFUKGlkeCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3B4NV93cih+bXNrc3RyW2lkeF0sIHNwYXJ4NSwK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBWQ0FQX1NVUEVSX1ZDQVBfTUFTS19EQVQoaWR4KSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4gPiArwqDC oMKgwqAgY2FzZSBWQ0FQX1NFTF9BQ1RJT046Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZvciAoaWR4ID0gMDsgaWR4IDwgY291bnQ7ICsraWR4KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3B4NV93cihhY3RzdHJbaWR4XSwgc3Bhcng1LAo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IFZDQVBfU1VQRVJfVkNBUF9BQ1RJT05fREFUKGlkeCkpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoCBjYXNlIFZDQVBfU0VMX0FMTDoKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcHJfZXJyKCIlczolZDogY2Fubm90IHdyaXRlIGFsbCBzdHJl YW1zIGF0IG9uY2VcbiIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgX19mdW5jX18sIF9fTElORV9fKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7Cj4gPiArwqDCoMKgwqAgZGVmYXVsdDoKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7Cj4gPiArwqDCoMKgwqAgfQo+ID4gK30KPiA+ICsKPiA+ICsvKiBBUEkgY2FsbGJhY2sg dXNlZCBmb3IgcmVhZGluZyBmcm9tIHRoZSBWQ0FQIGludG8gdGhlIFZDQVAgY2FjaGUgKi8KPiA+ ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9jYWNoZV9yZWFkKHN0cnVjdCBuZXRfZGV2aWNlICpu ZGV2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVt IHZjYXBfc2VsZWN0aW9uIHNlbCwgdTMyIHN0YXJ0LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHUzMiBjb3VudCkKPiA+ ICt7Cj4gPiArwqDCoMKgwqAgLyogdGhpcyB3aWxsIGJlIGFkZGVkIGxhdGVyICovCj4gPiArfQo+ ID4gKwo+ID4gKy8qIEFQSSBjYWxsYmFjayB1c2VkIGZvciBpbml0aWFsaXppbmcgYSBWQ0FQIGFk ZHJlc3MgcmFuZ2UgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9yYW5nZV9pbml0KHN0 cnVjdCBuZXRfZGV2aWNlICpuZGV2LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1p biwgdTMyIGFkZHIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGNvdW50KQo+ID4gK3sKPiA+ICvCoMKgwqDCoCBz dHJ1Y3Qgc3Bhcng1X3BvcnQgKnBvcnQgPSBuZXRkZXZfcHJpdihuZGV2KTsKPiA+ICvCoMKgwqDC oCBzdHJ1Y3Qgc3Bhcng1ICpzcGFyeDUgPSBwb3J0LT5zcGFyeDU7Cj4gPiArCj4gPiArwqDCoMKg wqAgX3NwYXJ4NV92Y2FwX3JhbmdlX2luaXQoc3Bhcng1LCBhZG1pbiwgYWRkciwgY291bnQpOwo+ ID4gK30KPiA+ICsKPiA+ICsvKiBBUEkgY2FsbGJhY2sgdXNlZCBmb3IgdXBkYXRpbmcgdGhlIFZD QVAgY2FjaGUgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF91cGRhdGUoc3RydWN0IG5l dF9kZXZpY2UgKm5kZXYsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWluICphZG1pbiwgZW51bSB2Y2FwX2Nv bW1hbmQgY21kLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBlbnVtIHZjYXBfc2VsZWN0aW9uIHNlbCwgdTMyIGFkZHIpCj4gPiArewo+ ID4gK8KgwqDCoMKgIHN0cnVjdCBzcGFyeDVfcG9ydCAqcG9ydCA9IG5ldGRldl9wcml2KG5kZXYp Owo+ID4gK8KgwqDCoMKgIHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSA9IHBvcnQtPnNwYXJ4NTsKPiA+ ICvCoMKgwqDCoCBib29sIGNsZWFyOwo+ID4gKwo+ID4gK8KgwqDCoMKgIGNsZWFyID0gKGNtZCA9 PSBWQ0FQX0NNRF9JTklUSUFMSVpFKTsKPiA+ICvCoMKgwqDCoCBzcHg1X3dyKFZDQVBfU1VQRVJf Q0ZHX01WX05VTV9QT1NfU0VUKDApIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgVkNB UF9TVVBFUl9DRkdfTVZfU0laRV9TRVQoMCksIHNwYXJ4NSwgVkNBUF9TVVBFUl9DRkcpOwo+ID4g K8KgwqDCoMKgIHNweDVfd3IoVkNBUF9TVVBFUl9DVFJMX1VQREFURV9DTURfU0VUKGNtZCkgfAo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQ0FQX1NVUEVSX0NUUkxfVVBEQVRFX0VOVFJZ X0RJU19TRVQoKFZDQVBfU0VMX0VOVFJZICYgc2VsKSA9PSAwKSB8Cj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9VUERBVEVfQUNUSU9OX0RJU19TRVQoKFZDQVBf U0VMX0FDVElPTiAmIHNlbCkgPT0gMCkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBW Q0FQX1NVUEVSX0NUUkxfVVBEQVRFX0NOVF9ESVNfU0VUKChWQ0FQX1NFTF9DT1VOVEVSICYgc2Vs KSA9PSAwKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9V UERBVEVfQUREUl9TRVQoYWRkcikgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBWQ0FQ X1NVUEVSX0NUUkxfQ0xFQVJfQ0FDSEVfU0VUKGNsZWFyKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIFZDQVBfU1VQRVJfQ1RSTF9VUERBVEVfU0hPVF9TRVQodHJ1ZSksCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NSwgVkNBUF9TVVBFUl9DVFJMKTsKPiA+ICvCoMKg wqDCoCBzcGFyeDVfdmNhcF93YWl0X3N1cGVyX3VwZGF0ZShzcGFyeDUpOwo+ID4gK30KPiA+ICsK PiA+ICsvKiBBUEkgY2FsbGJhY2sgdXNlZCBmb3IgbW92aW5nIGEgYmxvY2sgb2YgcnVsZXMgaW4g dGhlIFZDQVAgKi8KPiA+ICtzdGF0aWMgdm9pZCBzcGFyeDVfdmNhcF9tb3ZlKHN0cnVjdCBuZXRf ZGV2aWNlICpuZGV2LCBzdHJ1Y3QgdmNhcF9hZG1pbiAqYWRtaW4sCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIGFkZHIsIGludCBvZmZz ZXQsIGludCBjb3VudCkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgLyogdGhpcyB3aWxsIGJlIGFkZGVk IGxhdGVyICovCj4gPiArfQo+ID4gKwo+ID4gKy8qIFByb3ZpZGUgcG9ydCBpbmZvcm1hdGlvbiB2 aWEgYSBjYWxsYmFjayBpbnRlcmZhY2UgKi8KPiA+ICtzdGF0aWMgaW50IHNwYXJ4NV9wb3J0X2lu Zm8oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIGVudW0gdmNhcF90eXBlIHZ0eXBlLAo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgKCpwZiko dm9pZCAqb3V0LCBpbnQgYXJnLCBjb25zdCBjaGFyICpmbXQsIC4uLiksCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHZvaWQgKm91dCwgaW50IGFy ZykKPiA+ICt7Cj4gPiArwqDCoMKgwqAgLyogdGhpcyB3aWxsIGJlIGFkZGVkIGxhdGVyICovCj4g PiArwqDCoMKgwqAgcmV0dXJuIDA7Cj4gPiArfQo+ID4gKwo+ID4gKy8qIEFQSSBjYWxsYmFjayBv cGVyYXRpb25zOiBvbmx5IElTMiBpcyBzdXBwb3J0ZWQgZm9yIG5vdyAqLwo+ID4gK3N0YXRpYyBz dHJ1Y3QgdmNhcF9vcGVyYXRpb25zIHNwYXJ4NV92Y2FwX29wcyA9IHsKPiA+ICvCoMKgwqDCoCAu dmFsaWRhdGVfa2V5c2V0ID0gc3Bhcng1X3ZjYXBfdmFsaWRhdGVfa2V5c2V0LAo+ID4gK8KgwqDC oMKgIC5hZGRfZGVmYXVsdF9maWVsZHMgPSBzcGFyeDVfdmNhcF9hZGRfZGVmYXVsdF9maWVsZHMs Cj4gPiArwqDCoMKgwqAgLmNhY2hlX2VyYXNlID0gc3Bhcng1X3ZjYXBfY2FjaGVfZXJhc2UsCj4g PiArwqDCoMKgwqAgLmNhY2hlX3dyaXRlID0gc3Bhcng1X3ZjYXBfY2FjaGVfd3JpdGUsCj4gPiAr wqDCoMKgwqAgLmNhY2hlX3JlYWQgPSBzcGFyeDVfdmNhcF9jYWNoZV9yZWFkLAo+ID4gK8KgwqDC oMKgIC5pbml0ID0gc3Bhcng1X3ZjYXBfcmFuZ2VfaW5pdCwKPiA+ICvCoMKgwqDCoCAudXBkYXRl ID0gc3Bhcng1X3ZjYXBfdXBkYXRlLAo+ID4gK8KgwqDCoMKgIC5tb3ZlID0gc3Bhcng1X3ZjYXBf bW92ZSwKPiA+ICvCoMKgwqDCoCAucG9ydF9pbmZvID0gc3Bhcng1X3BvcnRfaW5mbywKPiA+ICt9 Owo+ID4gKwo+ID4gKy8qIEVuYWJsZSBsb29rdXBzIHBlciBwb3J0IGFuZCBzZXQgdGhlIGtleXNl dCBnZW5lcmF0aW9uOiBvbmx5IElTMiBmb3Igbm93ICovCj4gPiArc3RhdGljIHZvaWQgc3Bhcng1 X3ZjYXBfcG9ydF9rZXlfc2VsZWN0aW9uKHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfYWRtaW4gKmFkbWluKQo+ID4gK3sKPiA+ICvC oMKgwqDCoCBpbnQgcG9ydG5vLCBsb29rdXA7Cj4gPiArwqDCoMKgwqAgdTMyIGtleXNlbDsKPiA+ ICsKPiA+ICvCoMKgwqDCoCAvKiBlbmFibGUgYWxsIDQgbG9va3VwcyBvbiBhbGwgcG9ydHMgKi8K PiA+ICvCoMKgwqDCoCBmb3IgKHBvcnRubyA9IDA7IHBvcnRubyA8IFNQWDVfUE9SVFM7ICsrcG9y dG5vKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcHg1X3dyKEFOQV9BQ0xfVkNBUF9T Ml9DRkdfU0VDX0VOQV9TRVQoMHhmKSwgc3Bhcng1LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQU5BX0FDTF9WQ0FQX1MyX0NGRyhwb3J0bm8pKTsKPiA+ICsK PiA+ICvCoMKgwqDCoCAvKiBhbGwgdHJhZmZpYyB0eXBlcyBnZW5lcmF0ZSB0aGUgTUFDX0VUWVBF IGtleXNldCBmb3Igbm93IGluIGFsbAo+ID4gK8KgwqDCoMKgwqAgKiBsb29rdXBzIG9uIGFsbCBw b3J0cwo+ID4gK8KgwqDCoMKgwqAgKi8KPiA+ICvCoMKgwqDCoCBrZXlzZWwgPSBBTkFfQUNMX1ZD QVBfUzJfS0VZX1NFTF9LRVlfU0VMX0VOQV9TRVQodHJ1ZSkgfAo+ID4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBTkFfQUNMX1ZDQVBfUzJfS0VZX1NFTF9OT05fRVRIX0tFWV9TRUxfU0VUKFZD QVBfSVMyX1BTX05PTkVUSF9NQUNfRVRZUEUpIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQU5BX0FDTF9WQ0FQX1MyX0tFWV9TRUxfSVA0X01DX0tFWV9TRUxfU0VUKFZDQVBfSVMyX1BT X0lQVjRfTUNfTUFDX0VUWVBFKSB8Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFOQV9B Q0xfVkNBUF9TMl9LRVlfU0VMX0lQNF9VQ19LRVlfU0VMX1NFVChWQ0FQX0lTMl9QU19JUFY0X1VD X01BQ19FVFlQRSkgfAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBTkFfQUNMX1ZDQVBf UzJfS0VZX1NFTF9JUDZfTUNfS0VZX1NFTF9TRVQoVkNBUF9JUzJfUFNfSVBWNl9NQ19NQUNfRVRZ UEUpIHwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU5BX0FDTF9WQ0FQX1MyX0tFWV9T RUxfSVA2X1VDX0tFWV9TRUxfU0VUKFZDQVBfSVMyX1BTX0lQVjZfVUNfTUFDX0VUWVBFKSB8Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFOQV9BQ0xfVkNBUF9TMl9LRVlfU0VMX0FSUF9L RVlfU0VMX1NFVChWQ0FQX0lTMl9QU19BUlBfTUFDX0VUWVBFKTsKPiA+ICvCoMKgwqDCoCBmb3Ig KGxvb2t1cCA9IDA7IGxvb2t1cCA8IGFkbWluLT5sb29rdXBzOyArK2xvb2t1cCkgewo+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmb3IgKHBvcnRubyA9IDA7IHBvcnRubyA8IFNQWDVfUE9S VFM7ICsrcG9ydG5vKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzcHg1X3dyKGtleXNlbCwgc3Bhcng1LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFOQV9BQ0xfVkNBUF9TMl9LRVlfU0VM KHBvcnRubywgbG9va3VwKSk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+ICvC oMKgwqDCoCB9Cj4gPiArfQo+ID4gKwo+ID4gKy8qIERpc2FibGUgbG9va3VwcyBwZXIgcG9ydCBh bmQgc2V0IHRoZSBrZXlzZXQgZ2VuZXJhdGlvbjogb25seSBJUzIgZm9yIG5vdyAqLwo+ID4gK3N0 YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX3BvcnRfa2V5X2Rlc2VsZWN0aW9uKHN0cnVjdCBzcGFyeDUg KnNwYXJ4NSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2FkbWlu ICphZG1pbikKPiA+ICt7Cj4gPiArwqDCoMKgwqAgaW50IHBvcnRubzsKPiA+ICsKPiA+ICvCoMKg wqDCoCBmb3IgKHBvcnRubyA9IDA7IHBvcnRubyA8IFNQWDVfUE9SVFM7ICsrcG9ydG5vKQo+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcHg1X3JtdyhBTkFfQUNMX1ZDQVBfUzJfQ0ZHX1NF Q19FTkFfU0VUKDApLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBBTkFfQUNMX1ZDQVBfUzJfQ0ZHX1NFQ19FTkEsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQU5BX0FDTF9WQ0FQX1MyX0NGRyhwb3J0bm8pKTsKPiA+ ICt9Cj4gPiArCj4gPiDCoHN0YXRpYyB2b2lkIHNwYXJ4NV92Y2FwX2FkbWluX2ZyZWUoc3RydWN0 IHZjYXBfYWRtaW4gKmFkbWluKQo+ID4gwqB7Cj4gPiDCoMKgwqDCoMKgIGlmICghYWRtaW4pCj4g PiBAQCAtMTM4LDYgKzQ3Niw3IEBAIGludCBzcGFyeDVfdmNhcF9pbml0KHN0cnVjdCBzcGFyeDUg KnNwYXJ4NSkKPiA+IMKgwqDCoMKgwqDCoCAqwqDCoCAtIExpc3RzIG9mIHJ1bGVzCj4gPiDCoMKg wqDCoMKgwqAgKsKgwqAgLSBBZGRyZXNzIGluZm9ybWF0aW9uCj4gPiDCoMKgwqDCoMKgwqAgKsKg wqAgLSBJbml0aWFsaXplIFZDQVAgYmxvY2tzCj4gPiArwqDCoMKgwqDCoCAqwqDCoCAtIENvbmZp Z3VyZSBwb3J0IGtleXNldHMKPiA+IMKgwqDCoMKgwqDCoCAqLwo+ID4gwqDCoMKgwqDCoCBjdHJs ID0ga3phbGxvYyhzaXplb2YoKmN0cmwpLCBHRlBfS0VSTkVMKTsKPiA+IMKgwqDCoMKgwqAgaWYg KCFjdHJsKQo+ID4gQEAgLTE0Nyw2ICs0ODYsOCBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1 Y3Qgc3Bhcng1ICpzcGFyeDUpCj4gPiDCoMKgwqDCoMKgIC8qIHNlbGVjdCB0aGUgc3Bhcng1IFZD QVAgbW9kZWwgKi8KPiA+IMKgwqDCoMKgwqAgY3RybC0+dmNhcHMgPSBzcGFyeDVfdmNhcHM7Cj4g PiDCoMKgwqDCoMKgIGN0cmwtPnN0YXRzID0gJnNwYXJ4NV92Y2FwX3N0YXRzOwo+ID4gK8KgwqDC oMKgIC8qIFNldHVwIGNhbGxiYWNrcyB0byBhbGxvdyB0aGUgQVBJIHRvIHVzZSB0aGUgVkNBUCBI VyAqLwo+ID4gK8KgwqDCoMKgIGN0cmwtPm9wcyA9ICZzcGFyeDVfdmNhcF9vcHM7Cj4gPiAKPiA+ IMKgwqDCoMKgwqAgSU5JVF9MSVNUX0hFQUQoJmN0cmwtPmxpc3QpOwo+ID4gwqDCoMKgwqDCoCBm b3IgKGlkeCA9IDA7IGlkeCA8IEFSUkFZX1NJWkUoc3Bhcng1X3ZjYXBfaW5zdF9jZmcpOyArK2lk eCkgewo+ID4gQEAgLTE1OSw2ICs1MDAsOSBAQCBpbnQgc3Bhcng1X3ZjYXBfaW5pdChzdHJ1Y3Qg c3Bhcng1ICpzcGFyeDUpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIGVycjsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2Jsb2NrX2FsbG9jKHNwYXJ4NSwg YWRtaW4sIGNmZyk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX2Js b2NrX2luaXQoc3Bhcng1LCBhZG1pbik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChjZmctPnZpbnN0ID09IDApCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzcGFyeDVfdmNhcF9wb3J0X2tleV9zZWxlY3Rpb24oc3Bhcng1LCBhZG1pbik7Cj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsaXN0X2FkZF90YWlsKCZhZG1pbi0+bGlzdCwg JmN0cmwtPmxpc3QpOwo+ID4gwqDCoMKgwqDCoCB9Cj4gPiAKPiA+IEBAIC0xNzQsNiArNTE4LDcg QEAgdm9pZCBzcGFyeDVfdmNhcF9kZXN0cm95KHN0cnVjdCBzcGFyeDUgKnNwYXJ4NSkKPiA+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsKPiA+IAo+ID4gwqDCoMKgwqDCoCBsaXN0 X2Zvcl9lYWNoX2VudHJ5X3NhZmUoYWRtaW4sIGFkbWluX25leHQsICZjdHJsLT5saXN0LCBsaXN0 KSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNwYXJ4NV92Y2FwX3BvcnRfa2V5X2Rl c2VsZWN0aW9uKHNwYXJ4NSwgYWRtaW4pOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg bGlzdF9kZWwoJmFkbWluLT5saXN0KTsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNw YXJ4NV92Y2FwX2FkbWluX2ZyZWUoYWRtaW4pOwo+ID4gwqDCoMKgwqDCoCB9Cj4gPiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvbWljcm9jaGlwL3ZjYXAvdmNhcF9hcGkuYwo+ID4g Yi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2FwaS5jCj4gPiBpbmRl eCBhYTZiNDUxZDc5YTYuLmQ5MjlkMmQwMGI2YyAxMDA2NDQKPiA+IC0tLSBhL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKPiA+ICsrKyBiL2RyaXZlcnMvbmV0 L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpLmMKPiA+IEBAIC0yMSw2ICsyMSwxNyBA QCBzdHJ1Y3QgdmNhcF9ydWxlX2ludGVybmFsIHsKPiA+IMKgwqDCoMKgwqAgdTMyIGFkZHI7IC8q IGFkZHJlc3MgaW4gdGhlIFZDQVAgYXQgaW5zZXJ0aW9uICovCj4gPiDCoH07Cj4gPiAKPiA+ICsv KiBSZXR1cm4gdGhlIGxpc3Qgb2Yga2V5ZmllbGRzIGZvciB0aGUga2V5c2V0ICovCj4gPiArc3Rh dGljIGNvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICp2Y2FwX2tleWZpZWxkcyhzdHJ1Y3QgdmNhcF9j b250cm9sICp2Y3RybCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHZj YXBfdHlwZSB2dCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIHZjYXBf a2V5ZmllbGRfc2V0IGtleXNldCkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgLyogQ2hlY2sgdGhhdCB0 aGUga2V5c2V0IGV4aXN0cyBpbiB0aGUgdmNhcCBrZXlzZXQgbGlzdCAqLwo+ID4gK8KgwqDCoMKg IGlmIChrZXlzZXQgPj0gdmN0cmwtPnZjYXBzW3Z0XS5rZXlmaWVsZF9zZXRfc2l6ZSkKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiArwqDCoMKgwqAgcmV0dXJu IHZjdHJsLT52Y2Fwc1t2dF0ua2V5ZmllbGRfc2V0X21hcFtrZXlzZXRdOwo+ID4gK30KPiA+ICsK PiA+IMKgLyogVXBkYXRlIHRoZSBrZXlzZXQgZm9yIHRoZSBydWxlICovCj4gPiDCoGludCB2Y2Fw X3NldF9ydWxlX3NldF9rZXlzZXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSB2Y2FwX2tl eWZpZWxkX3NldCBrZXlzZXQpCj4gPiBAQCAtMjI3LDYgKzIzOCwyNCBAQCBpbnQgdmNhcF9kZWxf cnVsZShzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYs IHUzMgo+ID4gaWQpCj4gPiDCoH0KPiA+IMKgRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9kZWxfcnVs ZSk7Cj4gPiAKPiA+ICsvKiBGaW5kIGluZm9ybWF0aW9uIG9uIGEga2V5IGZpZWxkIGluIGEgcnVs ZSAqLwo+ID4gK2NvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICp2Y2FwX2xvb2t1cF9rZXlmaWVsZChz dHJ1Y3QgdmNhcF9ydWxlICpydWxlLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBl bnVtIHZjYXBfa2V5X2ZpZWxkIGtleSkKPiA+ICt7Cj4gPiArwqDCoMKgwqAgc3RydWN0IHZjYXBf cnVsZV9pbnRlcm5hbCAqcmkgPSAoc3RydWN0IHZjYXBfcnVsZV9pbnRlcm5hbCAqKXJ1bGU7Cj4g PiArwqDCoMKgwqAgZW51bSB2Y2FwX2tleWZpZWxkX3NldCBrZXlzZXQgPSBydWxlLT5rZXlzZXQ7 Cj4gPiArwqDCoMKgwqAgZW51bSB2Y2FwX3R5cGUgdnQgPSByaS0+YWRtaW4tPnZ0eXBlOwo+ID4g K8KgwqDCoMKgIGNvbnN0IHN0cnVjdCB2Y2FwX2ZpZWxkICpmaWVsZHM7Cj4gPiArCj4gPiArwqDC oMKgwqAgaWYgKGtleXNldCA9PSBWQ0FQX0tGU19OT19WQUxVRSkKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiArwqDCoMKgwqAgZmllbGRzID0gdmNhcF9rZXlm aWVsZHMocmktPnZjdHJsLCB2dCwga2V5c2V0KTsKPiA+ICvCoMKgwqDCoCBpZiAoIWZpZWxkcykK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7Cj4gPiArwqDCoMKgwqAg cmV0dXJuICZmaWVsZHNba2V5XTsKPiA+ICt9Cj4gPiArRVhQT1JUX1NZTUJPTF9HUEwodmNhcF9s b29rdXBfa2V5ZmllbGQpOwo+ID4gKwo+ID4gwqBzdGF0aWMgdm9pZCB2Y2FwX2NvcHlfZnJvbV9j bGllbnRfa2V5ZmllbGQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCB2Y2FwX2NsaWVudF9rZXlmaWVsZCAqZmllbGQsCj4gPiDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgdmNhcF9jbGllbnRfa2V5ZmllbGRfZGF0YSAqZGF0YSkK PiA+IEBAIC0yNTMsNiArMjgyLDQ3IEBAIHN0YXRpYyBpbnQgdmNhcF9ydWxlX2FkZF9rZXkoc3Ry dWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IMKgwqDCoMKgwqAgcmV0dXJuIDA7Cj4gPiDCoH0KPiA+ IAo+ID4gK3N0YXRpYyB2b2lkIHZjYXBfcnVsZV9zZXRfa2V5X2JpdHNpemUoc3RydWN0IHZjYXBf dTFfa2V5ICp1MSwgZW51bSB2Y2FwX2JpdCB2YWwpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN3aXRj aCAodmFsKSB7Cj4gPiArwqDCoMKgwqAgY2FzZSBWQ0FQX0JJVF8wOgo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1MS0+dmFsdWUgPSAwOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1MS0+bWFzayA9IDE7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOwo+ID4g K8KgwqDCoMKgIGNhc2UgVkNBUF9CSVRfMToKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dTEtPnZhbHVlID0gMTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTEtPm1hc2sgPSAx Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoCBjYXNl IFZDQVBfQklUX0FOWToKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTEtPnZhbHVlID0g MDsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTEtPm1hc2sgPSAwOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsKPiA+ICvCoMKgwqDCoCB9Cj4gPiArfQo+ID4gKwo+ ID4gKy8qIEFkZCBhIGJpdCBrZXkgd2l0aCB2YWx1ZSBhbmQgbWFzayB0byB0aGUgcnVsZSAqLwo+ ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV9iaXQoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51 bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZW51bSB2Y2FwX2JpdCB2YWwpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN0 cnVjdCB2Y2FwX2NsaWVudF9rZXlmaWVsZF9kYXRhIGRhdGE7Cj4gPiArCj4gPiArwqDCoMKgwqAg dmNhcF9ydWxlX3NldF9rZXlfYml0c2l6ZSgmZGF0YS51MSwgdmFsKTsKPiA+ICvCoMKgwqDCoCBy ZXR1cm4gdmNhcF9ydWxlX2FkZF9rZXkocnVsZSwga2V5LCBWQ0FQX0ZJRUxEX0JJVCwgJmRhdGEp Owo+ID4gK30KPiA+ICtFWFBPUlRfU1lNQk9MX0dQTCh2Y2FwX3J1bGVfYWRkX2tleV9iaXQpOwo+ ID4gKwo+ID4gKy8qIEFkZCBhIDMyIGJpdCBrZXkgZmllbGQgd2l0aCB2YWx1ZSBhbmQgbWFzayB0 byB0aGUgcnVsZSAqLwo+ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV91MzIoc3RydWN0IHZjYXBf cnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTMyIHZhbHVlLCB1MzIgbWFzaykKPiA+ICt7 Cj4gPiArwqDCoMKgwqAgc3RydWN0IHZjYXBfY2xpZW50X2tleWZpZWxkX2RhdGEgZGF0YTsKPiA+ ICsKPiA+ICvCoMKgwqDCoCBkYXRhLnUzMi52YWx1ZSA9IHZhbHVlOwo+ID4gK8KgwqDCoMKgIGRh dGEudTMyLm1hc2sgPSBtYXNrOwo+ID4gK8KgwqDCoMKgIHJldHVybiB2Y2FwX3J1bGVfYWRkX2tl eShydWxlLCBrZXksIFZDQVBfRklFTERfVTMyLCAmZGF0YSk7Cj4gPiArfQo+ID4gK0VYUE9SVF9T WU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3UzMik7Cj4gPiArCj4gPiDCoC8qIEFkZCBhIDQ4 IGJpdCBrZXkgd2l0aCB2YWx1ZSBhbmQgbWFzayB0byB0aGUgcnVsZSAqLwo+ID4gwqBpbnQgdmNh cF9ydWxlX2FkZF9rZXlfdTQ4KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlf ZmllbGQga2V5LAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgdmNhcF91NDhfa2V5ICpmaWVsZHZhbCkKPiA+IEBAIC0yNjQsNiArMzM0LDE3 IEBAIGludCB2Y2FwX3J1bGVfYWRkX2tleV91NDgoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51 bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiDCoH0KPiA+IMKgRVhQT1JUX1NZTUJPTF9HUEwodmNh cF9ydWxlX2FkZF9rZXlfdTQ4KTsKPiA+IAo+ID4gKy8qIEFkZCBhIDcyIGJpdCBrZXkgd2l0aCB2 YWx1ZSBhbmQgbWFzayB0byB0aGUgcnVsZSAqLwo+ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV91 NzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBf dTcyX2tleSAqZmllbGR2YWwpCj4gPiArewo+ID4gK8KgwqDCoMKgIHN0cnVjdCB2Y2FwX2NsaWVu dF9rZXlmaWVsZF9kYXRhIGRhdGE7Cj4gPiArCj4gPiArwqDCoMKgwqAgbWVtY3B5KCZkYXRhLnU3 MiwgZmllbGR2YWwsIHNpemVvZihkYXRhLnU3MikpOwo+ID4gK8KgwqDCoMKgIHJldHVybiB2Y2Fw X3J1bGVfYWRkX2tleShydWxlLCBrZXksIFZDQVBfRklFTERfVTcyLCAmZGF0YSk7Cj4gPiArfQo+ ID4gK0VYUE9SVF9TWU1CT0xfR1BMKHZjYXBfcnVsZV9hZGRfa2V5X3U3Mik7Cj4gPiArCj4gPiDC oHN0YXRpYyB2b2lkIHZjYXBfY29weV9mcm9tX2NsaWVudF9hY3Rpb25maWVsZChzdHJ1Y3QgdmNh cF9ydWxlICpydWxlLAo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZj YXBfY2xpZW50X2FjdGlvbmZpZWxkICpmaWVsZCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCB2Y2FwX2NsaWVudF9hY3Rpb25maWVsZF9kYXRhICpkYXRhKQo+ID4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2Ns aWVudC5oCj4gPiBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBp X2NsaWVudC5oCj4gPiBpbmRleCAyYzRmZDlkMDIyZjkuLmIwYTJlYWU4MWRiZSAxMDA2NDQKPiA+ IC0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L21pY3JvY2hpcC92Y2FwL3ZjYXBfYXBpX2NsaWVu dC5oCj4gPiArKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9taWNyb2NoaXAvdmNhcC92Y2FwX2Fw aV9jbGllbnQuaAo+ID4gQEAgLTE3Myw2ICsxNzMsOCBAQCBpbnQgdmNhcF9ydWxlX2FkZF9rZXlf dTMyKHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsIGVudW0gdmNhcF9rZXlfZmllbGQga2V5LAo+ID4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1MzIgdmFsdWUs IHUzMiBtYXNrKTsKPiA+IMKgaW50IHZjYXBfcnVsZV9hZGRfa2V5X3U0OChzdHJ1Y3QgdmNhcF9y dWxlICpydWxlLCBlbnVtIHZjYXBfa2V5X2ZpZWxkIGtleSwKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfdTQ4X2tleSAqZmllbGR2 YWwpOwo+ID4gK2ludCB2Y2FwX3J1bGVfYWRkX2tleV91NzIoc3RydWN0IHZjYXBfcnVsZSAqcnVs ZSwgZW51bSB2Y2FwX2tleV9maWVsZCBrZXksCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHZjYXBfdTcyX2tleSAqZmllbGR2YWwpOwo+ID4g wqBpbnQgdmNhcF9ydWxlX2FkZF9hY3Rpb25fYml0KHN0cnVjdCB2Y2FwX3J1bGUgKnJ1bGUsCj4g PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVu dW0gdmNhcF9hY3Rpb25fZmllbGQgYWN0aW9uLCBlbnVtIHZjYXBfYml0IHZhbCk7Cj4gPiDCoGlu dCB2Y2FwX3J1bGVfYWRkX2FjdGlvbl91MzIoc3RydWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+IEBA IC0xODEsNiArMTgzLDkgQEAgaW50IHZjYXBfcnVsZV9hZGRfYWN0aW9uX3UzMihzdHJ1Y3QgdmNh cF9ydWxlICpydWxlLAo+ID4gwqAvKiBWQ0FQIGxvb2t1cCBvcGVyYXRpb25zICovCj4gPiDCoC8q IExvb2t1cCBhIHZjYXAgaW5zdGFuY2UgdXNpbmcgY2hhaW4gaWQgKi8KPiA+IMKgc3RydWN0IHZj YXBfYWRtaW4gKnZjYXBfZmluZF9hZG1pbihzdHJ1Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgaW50 IGNpZCk7Cj4gPiArLyogRmluZCBpbmZvcm1hdGlvbiBvbiBhIGtleSBmaWVsZCBpbiBhIHJ1bGUg Ki8KPiA+ICtjb25zdCBzdHJ1Y3QgdmNhcF9maWVsZCAqdmNhcF9sb29rdXBfa2V5ZmllbGQoc3Ry dWN0IHZjYXBfcnVsZSAqcnVsZSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51 bSB2Y2FwX2tleV9maWVsZCBrZXkpOwo+ID4gwqAvKiBGaW5kIGEgcnVsZSBpZCB3aXRoIGEgcHJv dmlkZWQgY29va2llICovCj4gPiDCoGludCB2Y2FwX2xvb2t1cF9ydWxlX2J5X2Nvb2tpZShzdHJ1 Y3QgdmNhcF9jb250cm9sICp2Y3RybCwgdTY0IGNvb2tpZSk7Cj4gPiAKPiA+IC0tCj4gPiAyLjM4 LjEKPiA+IAo+IAo+IFRlc3RlZCBvbiBNaWNyb2NoaXAgUENCMTM1IHN3aXRjaC4KPiAKPiBUZXN0 ZWQtYnk6IENhc3BlciBBbmRlcnNzb24gPGNhc3Blci5jYXNhbkBnbWFpbC5jb20+Cj4gUmV2aWV3 ZWQtYnk6IENhc3BlciBBbmRlcnNzb24gPGNhc3Blci5jYXNhbkBnbWFpbC5jb20+Cj4gCgpHcmVh dCB0aGF0IHlvdSBkaWQgYSB0ZXN0IHJvdW5kIHRoaXMgZWFybHkuCgpCUgpTdGVlbgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpsaW51eC1hcm0ta2VybmVs IG1haWxpbmcgbGlzdApsaW51eC1hcm0ta2VybmVsQGxpc3RzLmluZnJhZGVhZC5vcmcKaHR0cDov L2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9saXN0aW5mby9saW51eC1hcm0ta2VybmVsCg==