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 X-Spam-Level: X-Spam-Status: No, score=-7.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7A32FC072B5 for ; Fri, 24 May 2019 13:43:08 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 12F682184B for ; Fri, 24 May 2019 13:43:08 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (1024-bit key) header.d=darbyshire-bryant.me.uk header.i=@darbyshire-bryant.me.uk header.b="RtvAnPBw" Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2403824AbfEXNnH (ORCPT ); Fri, 24 May 2019 09:43:07 -0400 Received: from mail-eopbgr10047.outbound.protection.outlook.com ([40.107.1.47]:24398 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2391124AbfEXNnG (ORCPT ); Fri, 24 May 2019 09:43:06 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=darbyshire-bryant.me.uk; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Be6EhMgj+61XSp+0AHXIQX0FRzlE48JobIWTH4PBMhg=; b=RtvAnPBw2qPkH7Yh+9+oR4jDpyUWhAnLEsA+NI2pOpOmEBCVQpmkeomlYMezSJMF9ryaWADSc8wjvCC/sEGRTX60+1leQ1m2hGZtRCuyG7ZQ56VhtjTJlenIdcCEC1vRcoOFkUIdnUsP79S7jppUwUniPAt0LEt95W5N6nF3Ob8= Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com (10.171.106.21) by VI1PR0302MB3455.eurprd03.prod.outlook.com (52.134.14.26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1922.17; Fri, 24 May 2019 13:39:59 +0000 Received: from VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::603a:6eb9:2073:bde4]) by VI1PR0302MB2750.eurprd03.prod.outlook.com ([fe80::603a:6eb9:2073:bde4%5]) with mapi id 15.20.1900.024; Fri, 24 May 2019 13:39:59 +0000 From: Kevin 'ldir' Darbyshire-Bryant To: =?utf-8?B?VG9rZSBIw7hpbGFuZC1Kw7hyZ2Vuc2Vu?= CC: "netdev@vger.kernel.org" Subject: Re: [PATCH net-next v4] net: sched: Introduce act_ctinfo action Thread-Topic: [PATCH net-next v4] net: sched: Introduce act_ctinfo action Thread-Index: AQHVEYHliX3MrMpj2ki0m3I2E71GDqZ6FE8AgAA1CAA= Date: Fri, 24 May 2019 13:39:58 +0000 Message-ID: References: <20190523160906.44081-1-ldir@darbyshire-bryant.me.uk> <87pno8ywjx.fsf@toke.dk> In-Reply-To: <87pno8ywjx.fsf@toke.dk> Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: spf=none (sender IP is ) smtp.mailfrom=ldir@darbyshire-bryant.me.uk; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [2a02:c7f:1268:6500::dc83] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5b30df73-407b-41dc-1845-08d6e04d50bb x-microsoft-antispam: BCL:0;PCL:0;RULEID:(2390118)(7020095)(4652040)(7021145)(8989299)(4534185)(7022145)(4603075)(4627221)(201702281549075)(8990200)(7048125)(7024125)(7027125)(7023125)(5600141)(711020)(4605104)(2017052603328)(7193020);SRVR:VI1PR0302MB3455; x-ms-traffictypediagnostic: VI1PR0302MB3455: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-forefront-prvs: 0047BC5ADE x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(39830400003)(136003)(366004)(376002)(396003)(346002)(199004)(189003)(8676002)(83716004)(2616005)(476003)(8936002)(4326008)(86362001)(14454004)(76176011)(53546011)(25786009)(6506007)(71190400001)(71200400001)(64756008)(66556008)(66476007)(11346002)(33656002)(30864003)(81166006)(81156014)(66446008)(68736007)(446003)(5660300002)(36756003)(99286004)(229853002)(486006)(6246003)(46003)(6436002)(6486002)(82746002)(6916009)(102836004)(6512007)(74482002)(256004)(14444005)(508600001)(186003)(305945005)(76116006)(91956017)(66574012)(7736002)(53946003)(53936002)(66946007)(316002)(6116002)(2906002)(73956011)(559001)(579004);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0302MB3455;H:VI1PR0302MB2750.eurprd03.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;A:1;MX:1; received-spf: None (protection.outlook.com: darbyshire-bryant.me.uk does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ENpTQq6GhAFzwzPZ4mhx6CuJ1hL4vUgDYs2C/E4vulxvWmXeaj/3Z9WA2qh5xkkqYT3LiloDpAGrgSws0dT9cFLRAS0rCd8uSz4mAZvWTv3u8Hbt1MVkYYxn/YPY7GHDJo4nRJTYfKnYD9eV9qdK1pi92PQt48CU6TSG2I7HwPe39l9JiRssP+oGxKlg3PyTcMQhle/yWeXDV/VEDzeYtC2/sHALNmXJlWd2+mzOrbtbWUbKa+DeQwBK3QQBFdBhpmPK1Xb/DFyAeR1yuoMAWhUNV3zYoyjP69ijxCuutDv1wk4dh866vwe3QDU4oSHgi1598YIfBmmeZ6b3FPflO541LHNVSBer4x/iYuxd46gSoqe+QY2fd+q/cC0CfFffxyvJ6EHE+q6WvdHW4ncKNxCvvHzHUWhP2MSZDl+LmYk= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: darbyshire-bryant.me.uk X-MS-Exchange-CrossTenant-Network-Message-Id: 5b30df73-407b-41dc-1845-08d6e04d50bb X-MS-Exchange-CrossTenant-originalarrivaltime: 24 May 2019 13:39:58.8884 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 9151708b-c553-406f-8e56-694f435154a4 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0302MB3455 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org DQoNCj4gT24gMjQgTWF5IDIwMTksIGF0IDExOjMwLCBUb2tlIEjDuGlsYW5kLUrDuHJnZW5zZW4g PHRva2VAcmVkaGF0LmNvbT4gd3JvdGU6DQo+IA0KPiBIaSBLZXZpbg0KPiANCj4gSSBjb3VsZG4n dCBnZXQgJ2dpdCBhbScgdG8gYWNjZXB0IHlvdXIgZW1haWwuIE5vdCBzdXJlIGlmIGl0J3MgYmVj YXVzZQ0KPiBpdCdzIGJhc2U2NCBlbmNvZGVkLCBvciBiZWNhdXNlIGl0IGRvZXNuJ3QgYXBwbHkg Y2xlYW5seSB0byBjdXJyZW50DQo+IG5ldC1uZXh0Lg0KDQpCaXphcnJlLCBoYXZlbuKAmXQgY2hh bmdlZCB0aGUgbWV0aG9kIGJ5IHdoaWNoIEkgc2VuZCBpbiBwYXRjaGVzIHNvIGFtIGNvbmZ1c2Vk Lg0KSeKAmWxsIGJlIHNlbmRpbmcgYSB2NSBzbyBsZXTigJlzIHNlZSBpZiB0aGUgcHJvYmxlbSBw ZXJzaXN0cy4NCg0KPiANCj4gSG93ZXZlciwgSSBjb3VsZCBnZXQgaXQgdG8gYXBwbHkgYnkgbWFu dWFsbHkgY29weWluZyBvdmVyIHRoZSBkaWZmIHRvIGENCj4gLnBhdGNoIGZpbGUsIHNvIGhlcmUg YXJlIHNvbWUgY29tbWVudHM6DQo+IA0KPj4gY3RpbmZvIGlzIGEgbmV3IHRjIGZpbHRlciBhY3Rp b24gbW9kdWxlLiAgSXQgaXMgZGVzaWduZWQgdG8gcmVzdG9yZQ0KPj4gaW5mb3JtYXRpb24gY29u dGFpbmVkIGluIGNvbm50cmFjayBtYXJrcyB0byBvdGhlciBwbGFjZXMuICBBdCBwcmVzZW50IGl0 DQo+PiBjYW4gcmVzdG9yZSBEU0NQIHZhbHVlcyB0byBJUHY0LzYgZGlmZnNlcnYgZmllbGRzIGFu ZCBhbHNvIGNvcHkNCj4+IGNvbm50cmFjayBtYXJrcyB0byBza2IgbWFya3MuICBBcyBzdWNoIHRo ZSAybmQgZnVuY3Rpb24gZWZmZWN0aXZlbHkNCj4+IHJlcGxhY2VzIHRoZSBleGlzdGluZyBhY3Rf Y29ubm1hcmsgbW9kdWxlDQo+PiANCj4+IFRoZSBEU0NQIHJlc3RvcmF0aW9uIGlzIGludGVuZGVk IGZvciB1c2UgYW5kIGhhcyBiZWVuIGZvdW5kIHVzZWZ1bCBmb3INCj4+IHJlc3RvcmluZyBpbmdy ZXNzIGNsYXNzaWZpY2F0aW9ucyBiYXNlZCBvbiBlZ3Jlc3MgY2xhc3NpZmljYXRpb25zIGFjcm9z cw0KPj4gbGlua3MgdGhhdCBibGVhY2ggb3Igb3RoZXJ3aXNlIGNoYW5nZSBEU0NQLCB0eXBpY2Fs bHkgaG9tZSBJU1AgSW50ZXJuZXQNCj4+IGxpbmtzLiAgUmVzdG9yaW5nIERTQ1Agb24gaW5ncmVz cyBvbiB0aGUgV0FOIGxpbmsgYWxsb3dzIHFkaXNjcyBzdWNoIGFzDQo+PiBDQUtFIHRvIHNoYXBl IGluYm91bmQgcGFja2V0cyBhY2NvcmRpbmcgdG8gcG9saWNpZXMgdGhhdCBhcmUgZWFzaWVyIHRv DQo+PiBpbmRpY2F0ZSBvbiBlZ3Jlc3MuDQo+PiANCj4+IEluZ3Jlc3MgY2xhc3NpZmljYXRpb24g aXMgdHJhZGl0aW9uYWxseSBhIGNoYWxsZW5naW5nIHRhc2sgc2luY2UNCj4+IGlwdGFibGVzIHJ1 bGVzIGhhdmVuJ3QgeWV0IHJ1biBhbmQgdGMgZmlsdGVyL2VCUEYgcHJvZ3JhbXMgYXJlIHByZS1O QVQNCj4+IGxvb2t1cHMsIGhlbmNlIGFyZSB1bmFibGUgdG8gc2VlIGludGVybmFsIElQdjQgYWRk cmVzc2VzIGFzIHVzZWQgb24gdGhlDQo+PiB0eXBpY2FsIGhvbWUgbWFzcXVlcmFkaW5nIGdhdGV3 YXkuDQo+PiANCj4+IGN0aW5mbyB1bmRlcnN0YW5kcyB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6 DQo+PiANCj4+IGRzY3AgZHNjcG1hc2tbL3N0YXRlbWFza10NCj4gDQo+IFRoZSBzbGFzaC1zZXBh cmF0ZWQgc3ludGF4IGlzIHVzdWFsbHkgdXNlZCBmb3IgIjx2YWx1ZT4gLyA8bWFzayBhcHBsaWVk DQo+IHRvIHZhbHVlPiIsIHNvIGl0IGlzIGEgYml0IGNvbmZ1c2luZyB0aGF0IHlvdSBhcmUgdXNp bmcgdGhlIHN5bnRheCBmb3INCj4gdHdvIG1hc2tzIGhlcmUuDQoNCknigJltIHRyeWluZyBhbmQg Y2xlYXJseSBmYWlsaW5nIHRvIGdpdmUgYSBoaW50IGFzIHRvIHdoYXQgcGFyYW1ldGVycyB0aGUN Cm1vZHVsZSBleHBlY3RzIGFuZCBob3cgdGhhdCBtYXkgZW5kIHVwIGJlaW5nIGFjaGlldmVkIGZy b20gdXNlciBzcGFjZS4NCldoYXQgZXZlbnR1YWwgc3ludGF4IGlzIHVzZWQgZnJvbSB1c2VyIHNw YWNlIGlzIHZlcnkgb3Blbiwgc2luY2UgSeKAmXZlDQpub3QgeWV0IHN1Ym1pdHRlZCB0aGF0IC0g SSB3YW50ZWQgdG8gc2VlIGlmIGtlcm5lbCBzcGFjZSBzdHVmZiB3YXMNCmFjY2VwdGVkIGJlZm9y ZSBhdHRlbXB0aW5nIHRvIHN1Ym1pdCB0aGUgdXNlciBzcGFjZSBzaWRlLiAgT3BlbmluZyB1cA0K dHdvIGZyb250cyBmb3IgbWUgaXMgZ29pbmcgdG8gZW5kIGluIHBlcnNvbmFsIGRlZmVhdC4NCg0K PiANCj4+IGRzY3BtYXNrIC0gYSAzMiBiaXQgbWFzayBvZiBhdCBsZWFzdCA2IGNvbnRpZ3VvdXMg Yml0cyBhbmQgaW5kaWNhdGVzDQo+PiB3aGVyZSBjdGluZm8gd2lsbCBmaW5kIHRoZSBEU0NQIGJp dHMgc3RvcmVkIGluIHRoZSBjb25udHJhY2sgbWFyay4NCj4+IA0KPj4gc3RhdGVtYXNrIC0gYSAz MiBiaXQgbWFzayBvZiAodXN1YWxseSkgMSBiaXQgbGVuZ3RoLCBvdXRzaWRlIHRoZSBhcmVhDQo+ PiBzcGVjaWZpZWQgYnkgZHNjcG1hc2suICBUaGlzIHJlcHJlc2VudHMgYSBjb25kaXRpb25hbCBv cGVyYXRpb24gZmxhZw0KPj4gd2hlcmVieSB0aGUgRFNDUCBpcyBvbmx5IHJlc3RvcmVkIGlmIHRo ZSBmbGFnIGlzIHNldC4gIFRoaXMgaXMgdXNlZnVsIHRvDQo+PiBpbXBsZW1lbnQgYSAnb25lIHNo b3QnIGlwdGFibGVzIGJhc2VkIGNsYXNzaWZpY2F0aW9uIHdoZXJlIHRoZQ0KPj4gJ2NvbXBsaWNh dGVkJyBpcHRhYmxlcyBydWxlcyBhcmUgb25seSBydW4gb25jZSB0byBjbGFzc2lmeSB0aGUNCj4+ IGNvbm5lY3Rpb24gb24gaW5pdGlhbCAoZWdyZXNzKSBwYWNrZXQgYW5kIHN1YnNlcXVlbnQgcGFj a2V0cyBhcmUgYWxsDQo+PiBtYXJrZWQvcmVzdG9yZWQgd2l0aCB0aGUgc2FtZSBEU0NQLiAgQSBt YXNrIG9mIHplcm8gZGlzYWJsZXMgdGhlDQo+PiBjb25kaXRpb25hbCBiZWhhdmlvdXIgaWUuIHRo ZSBjb25udHJhY2sgbWFyayBEU0NQIGJpdHMgYXJlIGFsd2F5cw0KPj4gcmVzdG9yZWQgdG8gdGhl IGlwIGRpZmZzZXJ2IGZpZWxkIChhc3N1bWluZyB0aGUgY29ubnRyYWNrIGVudHJ5IGlzIGZvdW5k DQo+PiAmIHRoZSBza2IgaXMgYW4gaXB2NC9pcHY2IHR5cGUpDQo+PiANCj4+IG1hcmsgW21hc2td DQo+IA0KPiBBbHNvLCBpdCB0b29rIG1lIGEgc2Vjb25kIHJlYWRpbmcgdG8gcmVhbGlzZSB0aGF0 IHRoZSAnZHNjcG1hc2snIGFuZA0KPiAnc3RhdGVtYXNrJyByZWZlciBiYWNrIHRvIHRoZSB0d28g cGFyYW1ldGVyIGFscmVhZHkgbWVudGlvbmVkIGFib3ZlLCBhbmQNCj4gdGhhdCAnbWFyayBbbWFz a10nIHdlcmUgdGhlIGJlZ2lubmluZyBvZiB0d28gbmV3IG9uZXMuIE1heWJlIGp1c3QgbG9zZQ0K PiB0aGUgc3ludGF4IGhlcmUgYW5kIGp1c3QgZGVzY3JpYmUgdGhlIHBhcmFtZXRlciB2YWx1ZXM/ DQo+IA0KPj4gbWFyayAtIGVuYWJsZXMgY29weWluZyB0aGUgY29ubnRyYWNrIGNvbm5tYXJrIHZh bHVlIHRvIHRoZSBza2IgbWFyaw0KDQoNCj4gDQo+IE1heWJlIG1ha2UgaXQgZXhwbGljaXQgdGhh dCB0aGlzIGlzIHRoZSBiaXQgdGhhdCBpcyBlcXVpdmFsZW50IHRvIHRoZQ0KPiBleGlzdGluZyBh Y3RfY29ubm1hcms/IEFsc28sIG1heWJlIHJlbmFtZSB0aGlzIHRvICdtYXJrc2tiJyBvcg0KPiBz b21ldGhpbmcsIHRvIG1ha2UgaXQgZXhwbGljaXQgdGhhdCBpdCBvcGVyYXRlcyBvbiB0aGUgc2ti ICh0aGVyZSBhcmUgYW4NCj4gYXdmdWwgbG90IG9mICdtYXJrcycgYW5kICdtYXNrcycgaW4gdGhp cyBkZXNjcmlwdGlvbiA7KSkuDQoNCkFnYWluIGl04oCZcyBiZWVuIGEgbW92aW5nIGdvYWxwb3N0 IGV4ZXJjaXNlIOKAnGNhbiB5b3UganVzdCBhZGQgdGhlDQpjb25udHJhY2sgZnVuY3Rpb25hbGl0 eSBpbuKAnSwgd2hpY2ggSeKAmXZlIGRvbmUuICBUaGUgdGhpbmdzIGRpc2N1c3NlZCBzbw0KZmFy IGhlcmUgSSBwZXJjZWl2ZSBhcyBtb3N0bHkg4oCYdXNlciBzcGFjZeKAmSBzeW50YXguDQoNCj4g DQo+PiBtYXNrIC0gYSAzMiBiaXQgbWFzayBhcHBsaWVkIHRvIHRoZSBtYXJrIHRvIG1hc2sgb3V0 IGJpdCB1bndhbnRlZCBmb3INCj4+IHJlc3RvcmF0aW9uLiAgVGhlIENBS0UgcWRpc2MgZm9yIGV4 YW1wbGUgdW5kZXJzdGFuZHMgYm90aCBEU0NQIGFuZCAndGluJw0KPj4gY2xhc3NpZmljYXRpb24g c3RvcmVkIHRoZSBtYXJrLCB0aHVzIGFjdF9jdGluZm8gbWF5IGJlIHVzZWQgdG8gcmVzdG9yZQ0K Pj4gYm90aCBhc3BlY3RzIG9mIGNsYXNzaWZpY2F0aW9uIGZvciBDQUtFIGluIG9uZSBhY3Rpb24u ICBBIGRlZmF1bHQgbWFzaw0KPj4gb2YgMHhmZmZmZmZmZiBpcyBhcHBsaWVkIGlmIG5vdCBzcGVj aWZpZWQuDQo+IA0KPiBOb3Qgc3VyZSBJIHVuZGVyc3RhbmQgdGhpcyBkZXNjcmlwdGlvbi4gV2hh dCBleGFjdGx5IGlzIHRoZSB1c2UgY2FzZQ0KPiBoZXJlPw0KDQpUaGUgcG9pbnQgSeKAmW0gdHJ5 aW5nIHRvIG1ha2UgaXMgdGhhdCB0aGUgbWFyayBzdG9yZWQgaW4gdGhlIGZpcmV3YWxsIG1hcmsN Cm1heSBjb250YWluIG1vcmUgdGhhbiBvbmUgcGFyYW1ldGVyLiAgSXQgY291bGQgY29udGFpbiBi b3RoIHRoZSBEU0NQIHZhbHVlDQpzb21ld2hlcmUgaW4gdGhlIGJpdGZpZWxkIGFuZCBzb21lIG90 aGVyIHN0dWZmIGVsc2V3aGVyZSBpbiB0aGUgYml0ZmllbGQuDQpSZXN0b3JpbmcgdGhlIHdob2xl IGZpcmV3YWxsIG1hcmsgdG8gdGhlIHNrYiBtYXJrIG1heSBvciBtYXkgbm90IGJlIGRlc2lyYWJs ZS4NCldlIG1heSBub3Qgd2lzaCB0byBwYXNzIG9uIHRoZSBEU0NQIGNvZGVkIHN0dWZmIGludG8g dGhlIHNrYiBtYXJrLiAgV2UgbWF5DQp3aXNoIHRvIG1hc2sgb3V0IG90aGVyIGJpdHMgdG9vLiAg SeKAmW0gYXdhcmUgdGhhdCBDQUtFIGZvciBleGFtcGxlIGNhbiB1c2UgYml0cw0KZnJvbSB0aGUg c2tiIG1hcmsgYW5kIGluZGVlZCBtYXkgYmUgY29uZmlndXJlZCB0byBhcHBseSBhIG1hc2sgaXRz ZWxmIGJ1dCBvdGhlcg0KYXBwbGljYXRpb25zL3VzZSBjYXNlcyBtYXkgbm90IGJlIHNvIGx1Y2t5 Lg0KDQpJdOKAmXMgd2h5IEkgdHJpZWQgdG8gYXBwbHkgc29tZSBhc2NpaSBhcnQgdG8gbWFrZSB0 aGluZ3MgY2xlYXJlci4gIElzIGl0IHN0aWxsDQpub3QgY2xlYXI/DQoNCj4gDQo+IA0KPj4gem9u ZSAtIGNvbm50cmFjayB6b25lDQo+PiANCj4+IGNvbnRyb2wgLSBhY3Rpb24gcmVsYXRlZCBjb250 cm9sIChyZWNsYXNzaWZ5IHwgcGlwZSB8IGRyb3AgfCBjb250aW51ZSB8DQo+PiBvayB8IGdvdG8g Y2hhaW4gPENIQUlOX0lOREVYPikNCj4+IA0KPj4gZS5nLiBkc2NwIDB4ZmMwMDAwMDAvMHgwMTAw MDAwMA0KPj4gDQo+PiB8LS0tLTB4RkMtLS0tY29ubnRyYWNrIG1hcmstLS0tMDAwMDAwLS0tfA0K Pj4gfCBCaXRzIDMxLTI2IHwgYml0IDI1IHwgYml0MjQgfH5+fiBCaXQgMHwNCj4+IHwgRFNDUCAg ICAgICB8IHVudXNlZCB8IGZsYWcgIHx1bnVzZWQgICB8DQo+PiB8LS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0weDAxLS0tMDAwMDAwLS0tfA0KPj4gICAgICB8ICAgICAgICAgICAgICAgICAgIHwNCj4+ ICAgICAgfCAgICAgICAgICAgICAgICAgICB8DQo+PiAgICAgIC0tLXwgICAgICAgICAgICAgQ29u ZGl0aW9uYWwgZmxhZw0KPj4gICAgICAgICB2ICAgICAgICAgICAgIG9ubHkgcmVzdG9yZSBpZiBz ZXQNCj4+IHwtaXAgZGlmZnNlcnYtfA0KPj4gfCA2IGJpdHMgICAgICB8DQo+PiB8LS0tLS0tLS0t LS0tLXwNCj4+IA0KPj4gZS5nLiBtYXJrIDB4MDBmZmZmZmYNCj4+IA0KPj4gfC0tLS0weDAwLS0t LWNvbm50cmFjayBtYXJrLS0tLWZmZmZmZi0tLXwNCj4+IHwgQml0cyAzMS0yNCB8ICAgICAgICAg ICAgICAgICAgICAgICAgICB8DQo+PiB8IERTQ1AgJiBmbGFnfCAgICAgICAgICAgICAgICAgICAg ICAgICAgfA0KPj4gfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCj4+ IAkJCXwNCj4+IAkJCXwNCj4+IAkJCXYNCj4+IHwtLS0tLS0tLS0tLS1za2IgbWFyay0tLS0tLS0t LS0tLS0tLS0tLS18DQo+PiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fA0KPj4gfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCj4+IHwtLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQo+PiANCj4+IFNpZ25lZC1vZmYt Ynk6IEtldmluIERhcmJ5c2hpcmUtQnJ5YW50IDxsZGlyQGRhcmJ5c2hpcmUtYnJ5YW50Lm1lLnVr Pg0KPj4gLS0tDQo+PiB2MiAtIGFkZCBlcXVpdmFsZW50IGNvbm5tYXJrIGZ1bmN0aW9uYWxpdHkg d2l0aCBhbiBlbmhhbmNlbWVudA0KPj4gICAgIHRvIGFjY2VwdCBhIG1hc2sNCj4+ICAgICBwYXNz IHN0YXRpc3RpY3MgZm9yIGVhY2ggc3ViLWZ1bmN0aW9uIGFzIGluZGl2aWR1YWwgbmV0bGluaw0K Pj4gICAgIGF0dHJpYnV0ZXMgYW5kIHN0b3AgKGFiKXVzaW5nIG92ZXJsaW1pdHMsIGRyb3BzDQo+ PiAgICAgdXBkYXRlIHRoZSB0ZXN0aW5nIGNvbmZpZyBjb3JyZWN0bHkNCj4+IHYzIC0gZml4IGEg bGljZW5zaW5nIHNpbGx5ICYgdGlkeSB1cCBHUEwgYm9pbGVycGxhdGUNCj4+IHY0IC0gZHJvcCBz dHJheSBjb3B5IHBhc3RlIGlubGluZQ0KPj4gICAgIHJldmVyc2UgY2hyaXN0bWFzIHRyZWUgbG9j YWwgdmFycw0KPj4gDQo+PiBpbmNsdWRlL25ldC90Y19hY3QvdGNfY3RpbmZvLmggICAgICAgICAg ICB8ICAyOCArKw0KPj4gaW5jbHVkZS91YXBpL2xpbnV4L3BrdF9jbHMuaCAgICAgICAgICAgICAg fCAgIDEgKw0KPj4gaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19jdGluZm8uaCAgICAgfCAg NDMgKysrDQo+PiBuZXQvc2NoZWQvS2NvbmZpZyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAx NyArDQo+PiBuZXQvc2NoZWQvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMSAr DQo+PiBuZXQvc2NoZWQvYWN0X2N0aW5mby5jICAgICAgICAgICAgICAgICAgICB8IDQwMiArKysr KysrKysrKysrKysrKysrKysrDQo+PiB0b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5n L2NvbmZpZyB8ICAgMSArDQo+PiA3IGZpbGVzIGNoYW5nZWQsIDQ5MyBpbnNlcnRpb25zKCspDQo+ PiBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9uZXQvdGNfYWN0L3RjX2N0aW5mby5oDQo+PiBj cmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19jdGluZm8uaA0K Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldC9zY2hlZC9hY3RfY3RpbmZvLmMNCj4+IA0KPj4gZGlm ZiAtLWdpdCBhL2luY2x1ZGUvbmV0L3RjX2FjdC90Y19jdGluZm8uaCBiL2luY2x1ZGUvbmV0L3Rj X2FjdC90Y19jdGluZm8uaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uODczMzQxMjBkY2I2DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9pbmNsdWRl L25ldC90Y19hY3QvdGNfY3RpbmZvLmgNCj4+IEBAIC0wLDAgKzEsMjggQEANCj4+ICsvKiBTUERY LUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPj4gKyNpZm5kZWYgX19ORVRfVENfQ1RJ TkZPX0gNCj4+ICsjZGVmaW5lIF9fTkVUX1RDX0NUSU5GT19IDQo+PiArDQo+PiArI2luY2x1ZGUg PG5ldC9hY3RfYXBpLmg+DQo+PiArDQo+PiArc3RydWN0IHRjZl9jdGluZm9fcGFyYW1zIHsNCj4+ ICsJc3RydWN0IG5ldCAqbmV0Ow0KPj4gKwl1MzIgZHNjcG1hc2s7DQo+PiArCXUzMiBkc2Nwc3Rh dGVtYXNrOw0KPj4gKwl1MzIgbWFya21hc2s7DQo+PiArCXUxNiB6b25lOw0KPj4gKwl1OCBtb2Rl Ow0KPj4gKwl1OCBkc2NwbWFza3NoaWZ0Ow0KPj4gKwlzdHJ1Y3QgcmN1X2hlYWQgcmN1Ow0KPj4g K307DQo+PiArDQo+PiArc3RydWN0IHRjZl9jdGluZm8gew0KPj4gKwlzdHJ1Y3QgdGNfYWN0aW9u IGNvbW1vbjsNCj4+ICsJc3RydWN0IHRjZl9jdGluZm9fcGFyYW1zIF9fcmN1ICpwYXJhbXM7DQo+ PiArCXU2NCBzdGF0c19kc2NwX3NldDsNCj4+ICsJdTY0IHN0YXRzX2RzY3BfZXJyb3I7DQo+PiAr CXU2NCBzdGF0c19tYXJrX3NldDsNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgdG9fY3RpbmZv KGEpICgoc3RydWN0IHRjZl9jdGluZm8gKilhKQ0KPj4gKw0KPj4gKyNlbmRpZiAvKiBfX05FVF9U Q19DVElORk9fSCAqLw0KPj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xz LmggYi9pbmNsdWRlL3VhcGkvbGludXgvcGt0X2Nscy5oDQo+PiBpbmRleCA1MWEwNDk2Zjc4ZWEu LmE5MzY4MGZjNGJmYSAxMDA2NDQNCj4+IC0tLSBhL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xz LmgNCj4+ICsrKyBiL2luY2x1ZGUvdWFwaS9saW51eC9wa3RfY2xzLmgNCj4+IEBAIC0xMDUsNiAr MTA1LDcgQEAgZW51bSB0Y2FfaWQgew0KPj4gCVRDQV9JRF9JRkUgPSBUQ0FfQUNUX0lGRSwNCj4+ IAlUQ0FfSURfU0FNUExFID0gVENBX0FDVF9TQU1QTEUsDQo+PiAJLyogb3RoZXIgYWN0aW9ucyBn byBoZXJlICovDQo+PiArCVRDQV9JRF9DVElORk8sDQo+PiAJX19UQ0FfSURfTUFYID0gMjU1DQo+ PiB9Ow0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19j dGluZm8uaCBiL2luY2x1ZGUvdWFwaS9saW51eC90Y19hY3QvdGNfY3RpbmZvLmgNCj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjhkMjU0YjgyMTUxYw0KPj4g LS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L3RjX2FjdC90Y19jdGlu Zm8uaA0KPj4gQEAgLTAsMCArMSw0MyBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovDQo+PiArI2lmbmRlZiBfX1VBUElf VENfQ1RJTkZPX0gNCj4+ICsjZGVmaW5lIF9fVUFQSV9UQ19DVElORk9fSA0KPj4gKw0KPj4gKyNp bmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9wa3RfY2xzLmg+DQo+ PiArDQo+PiArc3RydWN0IHRjX2N0aW5mbyB7DQo+PiArCXRjX2dlbjsNCj4+ICt9Ow0KPj4gKw0K Pj4gK3N0cnVjdCB0Y19jdGluZm9fZHNjcCB7DQo+PiArCV9fdTMyIG1hc2s7DQo+PiArCV9fdTMy IHN0YXRlbWFzazsNCj4+ICt9Ow0KPj4gDQo+PiArc3RydWN0IHRjX2N0aW5mb19zdGF0c19kc2Nw IHsNCj4+ICsJX191NjQgc2V0Ow0KPj4gKwlfX3U2NCBlcnJvcjsNCj4+ICt9Ow0KPiANCj4gV2h5 IHRoZXNlIHR3byBzdHJ1Y3RzLCB3aGVuIGV2ZXJ5dGhpbmcgZWxzZSBnZXRzIHRoZWlyIG93biBu ZXRsaW5rIFRMVnM/DQoNCkJlY2F1c2UgSeKAmW0gdHJ5aW5nIHRvIGNvbXBhcnRtZW50YWxpc2Ug dGhlIGluZGl2aWR1YWwgc3ViLWZ1bmN0aW9ucyB0byB0aGVpcg0Kb3duIGFyZWEuICBBbmQgYmVj YXVzZSBvdGhlciBhY3RfKiBjb2RlIEnigJl2ZSBsb29rZWQgYXQgaW4gdGhlIHByb2Nlc3Mgb2Yg DQpjb3B5L2hhY2svcGFzdGluZyB0aGlzIHRvZ2V0aGVyIGRvZXMgc2ltaWxhciB0aGluZ3MuICBX aGVyZSB0aGVyZSBpcyBtb3JlIHRoYW4NCm9uZSBwYXJhbWV0ZXIgaW52b2x2ZWQgd2l0aCBhIHN1 Yi1mdW5jdGlvbiBJIGhhdmUgcHV0IHRob3NlIHBhcmFtZXRlcnMgaW50bw0KYSBzdHJ1Y3R1cmUu DQoNCg0KPiANCj4+ICsNCj4+ICtlbnVtIHsNCj4+ICsJVENBX0NUSU5GT19VTlNQRUMsDQo+PiAr CVRDQV9DVElORk9fQUNULA0KPj4gKwlUQ0FfQ1RJTkZPX1pPTkUsDQo+PiArCVRDQV9DVElORk9f RFNDUF9QQVJNUywNCj4+ICsJVENBX0NUSU5GT19NQVJLX01BU0ssDQo+PiArCVRDQV9DVElORk9f TU9ERV9EU0NQLA0KPj4gKwlUQ0FfQ1RJTkZPX01PREVfTUFSSywNCj4+ICsJVENBX0NUSU5GT19T VEFUU19EU0NQLA0KPj4gKwlUQ0FfQ1RJTkZPX1NUQVRTX01BUkssDQo+PiArCVRDQV9DVElORk9f VE0sDQo+PiArCVRDQV9DVElORk9fUEFELA0KPj4gKwlfX1RDQV9DVElORk9fTUFYDQo+PiArfTsN Cj4+ICsjZGVmaW5lIFRDQV9DVElORk9fTUFYIChfX1RDQV9DVElORk9fTUFYIC0gMSkNCj4+ICsN Cj4+ICtlbnVtIHsNCj4+ICsJQ1RJTkZPX01PREVfU0VURFNDUAk9IEJJVCgwKSwNCj4+ICsJQ1RJ TkZPX01PREVfU0VUTUFSSwk9IEJJVCgxKQ0KPj4gK307DQo+PiArDQo+PiArI2VuZGlmDQo+PiBk aWZmIC0tZ2l0IGEvbmV0L3NjaGVkL0tjb25maWcgYi9uZXQvc2NoZWQvS2NvbmZpZw0KPj4gaW5k ZXggNWMwMmFkOTdlZjIzLi5mNTc3M2VmZmNmZGMgMTAwNjQ0DQo+PiAtLS0gYS9uZXQvc2NoZWQv S2NvbmZpZw0KPj4gKysrIGIvbmV0L3NjaGVkL0tjb25maWcNCj4+IEBAIC04NzYsNiArODc2LDIz IEBAIGNvbmZpZyBORVRfQUNUX0NPTk5NQVJLDQo+PiAJICBUbyBjb21waWxlIHRoaXMgY29kZSBh cyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlDQo+PiAJICBtb2R1bGUgd2lsbCBiZSBjYWxs ZWQgYWN0X2Nvbm5tYXJrLg0KPj4gDQo+PiArY29uZmlnIE5FVF9BQ1RfQ1RJTkZPDQo+PiArICAg ICAgICB0cmlzdGF0ZSAiTmV0ZmlsdGVyIENvbm5lY3Rpb24gTWFyayBBY3Rpb25zIg0KPj4gKyAg ICAgICAgZGVwZW5kcyBvbiBORVRfQ0xTX0FDVCAmJiBORVRGSUxURVIgJiYgSVBfTkZfSVBUQUJM RVMNCj4+ICsgICAgICAgIGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLICYmIE5GX0NPTk5UUkFDS19N QVJLDQo+PiArICAgICAgICBoZWxwDQo+PiArCSAgU2F5IFkgaGVyZSB0byBhbGxvdyB0cmFuc2Zl ciBvZiBhIGNvbm5tYXJrIHN0b3JlZCBpbmZvcm1hdGlvbi4NCj4+ICsJICBDdXJyZW50IGFjdGlv bnMgdHJhbnNmZXIgY29ubm1hcmsgc3RvcmVkIERTQ1AgaW50bw0KPj4gKwkgIGlwdjQvdjYgZGlm ZnNlcnYgYW5kL29yIHRvIHRyYW5zZmVyIGNvbm5tYXJrIHRvIHBhY2tldA0KPj4gKwkgIG1hcmsu ICBCb3RoIGFyZSB1c2VmdWwgZm9yIHJlc3RvcmluZyBlZ3Jlc3MgYmFzZWQgbWFya3MNCj4+ICsJ ICBiYWNrIG9udG8gaW5ncmVzcyBjb25uZWN0aW9ucyBmb3IgcWRpc2MgcHJpb3JpdHkgbWFwcGlu Zw0KPj4gKwkgIHB1cnBvc2VzLg0KPj4gKw0KPj4gKwkgIElmIHVuc3VyZSwgc2F5IE4uDQo+PiAr DQo+PiArCSAgVG8gY29tcGlsZSB0aGlzIGNvZGUgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6 IHRoZQ0KPj4gKwkgIG1vZHVsZSB3aWxsIGJlIGNhbGxlZCBhY3RfY3RpbmZvLg0KPj4gKw0KPj4g Y29uZmlnIE5FVF9BQ1RfU0tCTU9EDQo+PiAgICAgICAgIHRyaXN0YXRlICJza2IgZGF0YSBtb2Rp ZmljYXRpb24gYWN0aW9uIg0KPj4gICAgICAgICBkZXBlbmRzIG9uIE5FVF9DTFNfQUNUDQo+PiBk aWZmIC0tZ2l0IGEvbmV0L3NjaGVkL01ha2VmaWxlIGIvbmV0L3NjaGVkL01ha2VmaWxlDQo+PiBp bmRleCA4YTQwNDMxZDdiNWMuLmQ1NGJmY2JkNzk4MSAxMDA2NDQNCj4+IC0tLSBhL25ldC9zY2hl ZC9NYWtlZmlsZQ0KPj4gKysrIGIvbmV0L3NjaGVkL01ha2VmaWxlDQo+PiBAQCAtMjEsNiArMjEs NyBAQCBvYmotJChDT05GSUdfTkVUX0FDVF9DU1VNKQkrPSBhY3RfY3N1bS5vDQo+PiBvYmotJChD T05GSUdfTkVUX0FDVF9WTEFOKQkrPSBhY3Rfdmxhbi5vDQo+PiBvYmotJChDT05GSUdfTkVUX0FD VF9CUEYpCSs9IGFjdF9icGYubw0KPj4gb2JqLSQoQ09ORklHX05FVF9BQ1RfQ09OTk1BUkspCSs9 IGFjdF9jb25ubWFyay5vDQo+PiArb2JqLSQoQ09ORklHX05FVF9BQ1RfQ1RJTkZPKQkrPSBhY3Rf Y3RpbmZvLm8NCj4+IG9iai0kKENPTkZJR19ORVRfQUNUX1NLQk1PRCkJKz0gYWN0X3NrYm1vZC5v DQo+PiBvYmotJChDT05GSUdfTkVUX0FDVF9JRkUpCSs9IGFjdF9pZmUubw0KPj4gb2JqLSQoQ09O RklHX05FVF9JRkVfU0tCTUFSSykJKz0gYWN0X21ldGFfbWFyay5vDQo+PiBkaWZmIC0tZ2l0IGEv bmV0L3NjaGVkL2FjdF9jdGluZm8uYyBiL25ldC9zY2hlZC9hY3RfY3RpbmZvLmMNCj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjkzZjk4ZDYyYTk2Mg0KPj4g LS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvbmV0L3NjaGVkL2FjdF9jdGluZm8uYw0KPj4gQEAgLTAs MCArMSw0MDIgQEANCj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsNCj4+ ICsvKiBuZXQvc2NoZWQvYWN0X2N0aW5mby5jICBuZXRmaWx0ZXIgY3RpbmZvIGNvbm5tYXJrIGFj dGlvbnMNCj4+ICsgKg0KPj4gKyAqIENvcHlyaWdodCAoYykgMjAxOSBLZXZpbiBEYXJieXNoaXJl LUJyeWFudCA8bGRpckBkYXJieXNoaXJlLWJyeWFudC5tZS51az4NCj4+ICsgKi8NCj4+ICsNCj4+ ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L2luaXQuaD4N Cj4+ICsjaW5jbHVkZSA8bGludXgva2VybmVsLmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3NrYnVm Zi5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4NCj4+ICsjaW5jbHVkZSA8bGlu dXgvcGt0X2Nscy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9pcC5oPg0KPj4gKyNpbmNsdWRlIDxs aW51eC9pcHY2Lmg+DQo+PiArI2luY2x1ZGUgPG5ldC9uZXRsaW5rLmg+DQo+PiArI2luY2x1ZGUg PG5ldC9wa3Rfc2NoZWQuaD4NCj4+ICsjaW5jbHVkZSA8bmV0L2FjdF9hcGkuaD4NCj4+ICsjaW5j bHVkZSA8bmV0L3BrdF9jbHMuaD4NCj4+ICsjaW5jbHVkZSA8dWFwaS9saW51eC90Y19hY3QvdGNf Y3RpbmZvLmg+DQo+PiArI2luY2x1ZGUgPG5ldC90Y19hY3QvdGNfY3RpbmZvLmg+DQo+PiArDQo+ PiArI2luY2x1ZGUgPG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrLmg+DQo+PiArI2luY2x1ZGUg PG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuaD4NCj4+ICsjaW5jbHVkZSA8bmV0L25l dGZpbHRlci9uZl9jb25udHJhY2tfZWNhY2hlLmg+DQo+PiArI2luY2x1ZGUgPG5ldC9uZXRmaWx0 ZXIvbmZfY29ubnRyYWNrX3pvbmVzLmg+DQo+PiArDQo+PiArc3RhdGljIHVuc2lnbmVkIGludCBj dGluZm9fbmV0X2lkOw0KPj4gK3N0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29wcyBhY3RfY3RpbmZv X29wczsNCj4+ICsNCj4+ICtzdGF0aWMgdm9pZCB0Y2ZfY3RpbmZvX2RzY3Bfc2V0KHN0cnVjdCBu Zl9jb25uICpjdCwgc3RydWN0IHRjZl9jdGluZm8gKmNhLA0KPj4gKwkJCQlzdHJ1Y3QgdGNmX2N0 aW5mb19wYXJhbXMgKmNwLA0KPj4gKwkJCQlzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgd2xlbiwg aW50IHByb3RvKQ0KPj4gK3sNCj4+ICsJdTggZHNjcCwgbmV3ZHNjcDsNCj4+ICsNCj4+ICsJbmV3 ZHNjcCA9ICgoKGN0LT5tYXJrICYgY3AtPmRzY3BtYXNrKSA+PiBjcC0+ZHNjcG1hc2tzaGlmdCkg PDwgMikgJg0KPj4gKwkJICAgICB+SU5FVF9FQ05fTUFTSzsNCj4+ICsNCj4+ICsJc3dpdGNoIChw cm90bykgew0KPj4gKwljYXNlIE5GUFJPVE9fSVBWNDoNCj4+ICsJCWRzY3AgPSBpcHY0X2dldF9k c2ZpZWxkKGlwX2hkcihza2IpKSAmIH5JTkVUX0VDTl9NQVNLOw0KPj4gKwkJaWYgKGRzY3AgIT0g bmV3ZHNjcCkgew0KPj4gKwkJCWlmIChsaWtlbHkoIXNrYl90cnlfbWFrZV93cml0YWJsZShza2Is IHdsZW4pKSkgew0KPj4gKwkJCQlpcHY0X2NoYW5nZV9kc2ZpZWxkKGlwX2hkcihza2IpLA0KPj4g KwkJCQkJCSAgICBJTkVUX0VDTl9NQVNLLA0KPj4gKwkJCQkJCSAgICBuZXdkc2NwKTsNCj4+ICsJ CQkJY2EtPnN0YXRzX2RzY3Bfc2V0Kys7DQo+PiArCQkJfSBlbHNlIHsNCj4+ICsJCQkJY2EtPnN0 YXRzX2RzY3BfZXJyb3IrKzsNCj4+ICsJCQl9DQo+PiArCQl9DQo+PiArCQlicmVhazsNCj4+ICsJ Y2FzZSBORlBST1RPX0lQVjY6DQo+PiArCQlkc2NwID0gaXB2Nl9nZXRfZHNmaWVsZChpcHY2X2hk cihza2IpKSAmIH5JTkVUX0VDTl9NQVNLOw0KPj4gKwkJaWYgKGRzY3AgIT0gbmV3ZHNjcCkgew0K Pj4gKwkJCWlmIChsaWtlbHkoIXNrYl90cnlfbWFrZV93cml0YWJsZShza2IsIHdsZW4pKSkgew0K Pj4gKwkJCQlpcHY2X2NoYW5nZV9kc2ZpZWxkKGlwdjZfaGRyKHNrYiksDQo+PiArCQkJCQkJICAg IElORVRfRUNOX01BU0ssDQo+PiArCQkJCQkJICAgIG5ld2RzY3ApOw0KPj4gKwkJCQljYS0+c3Rh dHNfZHNjcF9zZXQrKzsNCj4+ICsJCQl9IGVsc2Ugew0KPj4gKwkJCQljYS0+c3RhdHNfZHNjcF9l cnJvcisrOw0KPj4gKwkJCX0NCj4+ICsJCX0NCj4+ICsJCWJyZWFrOw0KPj4gKwlkZWZhdWx0Og0K Pj4gKwkJYnJlYWs7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgdGNmX2N0 aW5mb19tYXJrX3NldChzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCB0Y2ZfY3RpbmZvICpjYSwN Cj4+ICsJCQkJc3RydWN0IHRjZl9jdGluZm9fcGFyYW1zICpjcCwNCj4+ICsJCQkJc3RydWN0IHNr X2J1ZmYgKnNrYikNCj4+ICt7DQo+PiArCWNhLT5zdGF0c19tYXJrX3NldCsrOw0KPj4gKwlza2It Pm1hcmsgPSBjdC0+bWFyayAmIGNwLT5tYXJrbWFzazsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGlj IGludCB0Y2ZfY3RpbmZvX2FjdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBjb25zdCBzdHJ1Y3QgdGNf YWN0aW9uICphLA0KPj4gKwkJCSAgc3RydWN0IHRjZl9yZXN1bHQgKnJlcykNCj4+ICt7DQo+PiAr CWNvbnN0IHN0cnVjdCBuZl9jb25udHJhY2tfdHVwbGVfaGFzaCAqdGhhc2ggPSBOVUxMOw0KPj4g KwlzdHJ1Y3QgdGNmX2N0aW5mbyAqY2EgPSB0b19jdGluZm8oYSk7DQo+PiArCXN0cnVjdCBuZl9j b25udHJhY2tfdHVwbGUgdHVwbGU7DQo+PiArCXN0cnVjdCBuZl9jb25udHJhY2tfem9uZSB6b25l Ow0KPj4gKwllbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbzsNCj4+ICsJc3RydWN0IHRjZl9j dGluZm9fcGFyYW1zICpjcDsNCj4+ICsJc3RydWN0IG5mX2Nvbm4gKmN0Ow0KPj4gKwlpbnQgcHJv dG8sIHdsZW47DQo+PiArCWludCBhY3Rpb247DQo+PiArDQo+PiArCWNwID0gcmN1X2RlcmVmZXJl bmNlX2JoKGNhLT5wYXJhbXMpOw0KPj4gKw0KPj4gKwl0Y2ZfbGFzdHVzZV91cGRhdGUoJmNhLT50 Y2ZfdG0pOw0KPj4gKwlic3RhdHNfdXBkYXRlKCZjYS0+dGNmX2JzdGF0cywgc2tiKTsNCj4+ICsJ YWN0aW9uID0gUkVBRF9PTkNFKGNhLT50Y2ZfYWN0aW9uKTsNCj4+ICsNCj4+ICsJd2xlbiA9IHNr Yl9uZXR3b3JrX29mZnNldChza2IpOw0KPj4gKwlpZiAodGNfc2tiX3Byb3RvY29sKHNrYikgPT0g aHRvbnMoRVRIX1BfSVApKSB7DQo+PiArCQl3bGVuICs9IHNpemVvZihzdHJ1Y3QgaXBoZHIpOw0K Pj4gKwkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgd2xlbikpDQo+PiArCQkJZ290byBvdXQ7DQo+ PiArDQo+PiArCQlwcm90byA9IE5GUFJPVE9fSVBWNDsNCj4+ICsJfSBlbHNlIGlmICh0Y19za2Jf cHJvdG9jb2woc2tiKSA9PSBodG9ucyhFVEhfUF9JUFY2KSkgew0KPj4gKwkJd2xlbiArPSBzaXpl b2Yoc3RydWN0IGlwdjZoZHIpOw0KPj4gKwkJaWYgKCFwc2tiX21heV9wdWxsKHNrYiwgd2xlbikp DQo+PiArCQkJZ290byBvdXQ7DQo+PiArDQo+PiArCQlwcm90byA9IE5GUFJPVE9fSVBWNjsNCj4+ ICsJfSBlbHNlIHsNCj4+ICsJCWdvdG8gb3V0Ow0KPj4gKwl9DQo+PiArDQo+PiArCWN0ID0gbmZf Y3RfZ2V0KHNrYiwgJmN0aW5mbyk7DQo+PiArCWlmICghY3QpIHsgLyogbG9vayBoYXJkZXIsIHVz dWFsbHkgaW5ncmVzcyAqLw0KPj4gKwkJaWYgKCFuZl9jdF9nZXRfdHVwbGVwcihza2IsIHNrYl9u ZXR3b3JrX29mZnNldChza2IpLA0KPj4gKwkJCQkgICAgICAgcHJvdG8sIGNwLT5uZXQsICZ0dXBs ZSkpDQo+PiArCQkJZ290byBvdXQ7DQo+PiArCQl6b25lLmlkID0gY3AtPnpvbmU7DQo+PiArCQl6 b25lLmRpciA9IE5GX0NUX0RFRkFVTFRfWk9ORV9ESVI7DQo+PiArDQo+PiArCQl0aGFzaCA9IG5m X2Nvbm50cmFja19maW5kX2dldChjcC0+bmV0LCAmem9uZSwgJnR1cGxlKTsNCj4+ICsJCWlmICgh dGhhc2gpDQo+PiArCQkJZ290byBvdXQ7DQo+PiArDQo+PiArCQljdCA9IG5mX2N0X3R1cGxlaGFz aF90b19jdHJhY2sodGhhc2gpOw0KPj4gKwl9DQo+PiArDQo+PiArCWlmIChjcC0+bW9kZSAmIENU SU5GT19NT0RFX1NFVERTQ1ApDQo+PiArCQlpZiAoIWNwLT5kc2Nwc3RhdGVtYXNrIHx8IChjdC0+ bWFyayAmIGNwLT5kc2Nwc3RhdGVtYXNrKSkNCj4+ICsJCQl0Y2ZfY3RpbmZvX2RzY3Bfc2V0KGN0 LCBjYSwgY3AsIHNrYiwgd2xlbiwgcHJvdG8pOw0KPj4gKw0KPj4gKwlpZiAoY3AtPm1vZGUgJiBD VElORk9fTU9ERV9TRVRNQVJLKQ0KPj4gKwkJdGNmX2N0aW5mb19tYXJrX3NldChjdCwgY2EsIGNw LCBza2IpOw0KPj4gKw0KPj4gKwlpZiAodGhhc2gpDQo+PiArCQluZl9jdF9wdXQoY3QpOw0KPj4g K291dDoNCj4+ICsJcmV0dXJuIGFjdGlvbjsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBubGFfcG9saWN5IGN0aW5mb19wb2xpY3lbVENBX0NUSU5GT19NQVggKyAxXSA9IHsN Cj4+ICsJW1RDQV9DVElORk9fQUNUXSA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNfY3RpbmZv KSB9LA0KPj4gKwlbVENBX0NUSU5GT19aT05FXSA9IHsgLnR5cGUgPSBOTEFfVTE2IH0sDQo+PiAr CVtUQ0FfQ1RJTkZPX01PREVfRFNDUF0gPSB7IC50eXBlID0gTkxBX0ZMQUcgfSwNCj4+ICsJW1RD QV9DVElORk9fTU9ERV9NQVJLXSA9IHsgLnR5cGUgPSBOTEFfRkxBRyB9LA0KPj4gKwlbVENBX0NU SU5GT19EU0NQX1BBUk1TXSA9IHsgLmxlbiA9IHNpemVvZihzdHJ1Y3QgdGNfY3RpbmZvX2RzY3Ap DQo+PiB9LA0KPiANCj4gVGhpbmsgeW91J3JlIG1pc3Npbmcgc29tZSBwYXJhbWV0ZXJzIGhlcmU/ IEF0IGxlYXN0DQo+IFRDQV9DVElORk9fTUFSS19NQVNLLg0KDQpHb29kIGNhdGNoLiAgVGhhdCBv bmUgaXMgbWlzc2luZywgdGhlIG90aGVycyBhcmUgbm90IGFzIHRob3NlIGFyZSBnb2luZyBmcm9t IGtlcm5lbA0KdG8gdXNlciBzcGFjZS4gIFNvIG9uIHRoZSBiYXNpcyBJIGhhdmUgdG8gZG8gYSB2 NSwgZG9lcyBhbnlvbmUgb2JqZWN0IGlmIEkgbWFrZSB0aGUNCnBvbGljeSBvcmRlciBtYXRjaCB0 aGUgZW51bSBvcmRlciBpbiBpbmNsdWRlL3VhcGkvbGludXgvdGNfYWN0L3RjX2N0aW5mby5oPyAg RG8gSQ0KbmVlZCB0byBiZSB3YXJ5IG9mIENocmlzdG1hcyB0cmVlcyBvciBzcGFjaW5nIG9yIOKA pj8NCg0KPiANCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgdGNmX2N0aW5mb19pbml0KHN0 cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5sYXR0ciAqbmxhLA0KPj4gKwkJCSAgIHN0cnVjdCBubGF0 dHIgKmVzdCwgc3RydWN0IHRjX2FjdGlvbiAqKmEsDQo+PiArCQkJICAgaW50IG92ciwgaW50IGJp bmQsIGJvb2wgcnRubF9oZWxkLA0KPj4gKwkJCSAgIHN0cnVjdCB0Y2ZfcHJvdG8gKnRwLA0KPj4g KwkJCSAgIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaykNCj4+ICt7DQo+PiArCXN0cnVj dCB0Y19hY3Rpb25fbmV0ICp0biA9IG5ldF9nZW5lcmljKG5ldCwgY3RpbmZvX25ldF9pZCk7DQo+ PiArCXN0cnVjdCBubGF0dHIgKnRiW1RDQV9DVElORk9fTUFYICsgMV07DQo+PiArCXN0cnVjdCB0 Y2ZfY3RpbmZvX3BhcmFtcyAqY3BfbmV3Ow0KPj4gKwlzdHJ1Y3QgdGNmX2NoYWluICpnb3RvX2No ID0gTlVMTDsNCj4+ICsJc3RydWN0IHRjX2N0aW5mb19kc2NwICpkc2NwcGFybTsNCj4+ICsJc3Ry dWN0IHRjZl9jdGluZm8gKmNpOw0KPj4gKwlzdHJ1Y3QgdGNfY3RpbmZvICphY3RwYXJtOw0KPj4g KwlpbnQgcmV0ID0gMCwgZXJyLCBpOw0KPj4gKw0KPj4gKwlpZiAoIW5sYSkNCj4+ICsJCXJldHVy biAtRUlOVkFMOw0KPj4gKw0KPj4gKwllcnIgPSBubGFfcGFyc2VfbmVzdGVkKHRiLCBUQ0FfQ1RJ TkZPX01BWCwgbmxhLCBjdGluZm9fcG9saWN5LCBOVUxMKTsNCj4+ICsJaWYgKGVyciA8IDApDQo+ PiArCQlyZXR1cm4gZXJyOw0KPj4gKw0KPj4gKwlpZiAoIXRiW1RDQV9DVElORk9fQUNUXSkNCj4+ ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKwlpZiAodGJbVENBX0NUSU5GT19NT0RFX0RT Q1BdICYmICF0YltUQ0FfQ1RJTkZPX0RTQ1BfUEFSTVNdKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7 DQo+PiArDQo+PiArCWFjdHBhcm0gPSBubGFfZGF0YSh0YltUQ0FfQ1RJTkZPX0FDVF0pOw0KPj4g Kwlkc2NwcGFybSA9IG5sYV9kYXRhKHRiW1RDQV9DVElORk9fRFNDUF9QQVJNU10pOw0KPj4gKw0K Pj4gKwlpZiAoZHNjcHBhcm0pIHsNCj4+ICsJCS8qIG5lZWQgYXQgbGVhc3QgY29udGlndW91cyA2 IGJpdCBtYXNrICovDQo+PiArCQlpID0gZHNjcHBhcm0tPm1hc2sgPyBfX2Zmcyhkc2NwcGFybS0+ bWFzaykgOiAwOw0KPj4gKwkJaWYgKCgweDNmICYgKGRzY3BwYXJtLT5tYXNrID4+IGkpKSAhPSAw eDNmKQ0KPj4gKwkJCXJldHVybiAtRUlOVkFMOw0KPiANCj4gU2hvdWxkIHRoaXMgYmUgZW5mb3Jj ZWQgdG8gYmUgZXhhY3RseSA2IGJpdHM/IEFueXRoaW5nIGFib3ZlIHRoYXQgaXMNCj4gZ29pbmcg dG8gYmUgZGlzY2FyZGVkIGFueXdheeKApg0KDQpJIGRvbuKAmXQga25vdy4gIE1pZ2h0IHNvbWVv bmUgd2FudCB0byBleHRlbmQgdGhpcyBmdW5jdGlvbiBpbiB0aGUgZnV0dXJlDQphbmQgZG8gc29t ZXRoaW5nIHVuZm9yZXNlZW4gYW5kIHB1dHRpbmcgYSBoYXJkIGxpbWl0IG5vdyBicmVha3MgdGhh dCBhbmQNCmJhY2t3YXJkIGNvbXBhdGliaWxpdHk/ICBJZiBkaWZmZXJlbmNlIGJldHdlZW4gYWNj ZXB0ZWQgb3Igbm90IGNsZWFybHkNCknigJlsbCBjaGFuZ2UgaXQgdG8gc29tZXRoaW5nIGxpa2UN Cg0KaWYgKCh+MCAmIChkc2NwcGFybS0+bWFzayA+PiBpKSkgIT0gMHgzZikNCg0KYnV0IEnigJlt IHNvbWV3aGF0IOKAmG1laOKAmSBhYm91dCBpdCBhbmQgZmluZGl0IGhhcmQgdG8gZm9ybSBhbiBv cGluaW9uIG9uZSB3YXkNCm9yIHRoZSBvdGhlcg0KDQoNCj4gDQo+PiArCQkvKiBtYXNrICYgc3Rh dGVtYXNrIG11c3Qgbm90IG92ZXJsYXAgKi8NCj4+ICsJCWlmIChkc2NwcGFybS0+bWFzayAmIGRz Y3BwYXJtLT5zdGF0ZW1hc2spDQo+PiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCX0NCj4+ICsN Cj4+ICsJLyogZG9uZSB0aGUgdmFsaWRhdGlvbjpub3cgdG8gdGhlIGFjdHVhbCBhY3Rpb24gYWxs b2NhdGlvbiAqLw0KPj4gKwllcnIgPSB0Y2ZfaWRyX2NoZWNrX2FsbG9jKHRuLCAmYWN0cGFybS0+ aW5kZXgsIGEsIGJpbmQpOw0KPj4gKwlpZiAoIWVycikgew0KPj4gKwkJcmV0ID0gdGNmX2lkcl9j cmVhdGUodG4sIGFjdHBhcm0tPmluZGV4LCBlc3QsIGEsDQo+PiArCQkJCSAgICAgJmFjdF9jdGlu Zm9fb3BzLCBiaW5kLCBmYWxzZSk7DQo+PiArCQlpZiAocmV0KSB7DQo+PiArCQkJdGNmX2lkcl9j bGVhbnVwKHRuLCBhY3RwYXJtLT5pbmRleCk7DQo+PiArCQkJcmV0dXJuIHJldDsNCj4+ICsJCX0N Cj4+ICsJfSBlbHNlIGlmIChlcnIgPiAwKSB7DQo+PiArCQlpZiAoYmluZCkgLyogZG9uJ3Qgb3Zl cnJpZGUgZGVmYXVsdHMgKi8NCj4+ICsJCQlyZXR1cm4gMDsNCj4+ICsJCWlmICghb3ZyKSB7DQo+ PiArCQkJdGNmX2lkcl9yZWxlYXNlKCphLCBiaW5kKTsNCj4+ICsJCQlyZXR1cm4gLUVFWElTVDsN Cj4+ICsJCX0NCj4+ICsJfSBlbHNlIHsNCj4+ICsJCXJldHVybiBlcnI7DQo+PiArCX0NCj4+ICsN Cj4+ICsJZXJyID0gdGNmX2FjdGlvbl9jaGVja19jdHJsYWN0KGFjdHBhcm0tPmFjdGlvbiwgdHAs ICZnb3RvX2NoLCBleHRhY2spOw0KPj4gKwlpZiAoZXJyIDwgMCkNCj4+ICsJCWdvdG8gcmVsZWFz ZV9pZHI7DQo+PiArDQo+PiArCWNpID0gdG9fY3RpbmZvKCphKTsNCj4+ICsNCj4+ICsJY3BfbmV3 ID0ga3phbGxvYyhzaXplb2YoKmNwX25ldyksIEdGUF9LRVJORUwpOw0KPj4gKwlpZiAodW5saWtl bHkoIWNwX25ldykpIHsNCj4+ICsJCWVyciA9IC1FTk9NRU07DQo+PiArCQlnb3RvIHB1dF9jaGFp bjsNCj4+ICsJfQ0KPj4gKw0KPj4gKwljcF9uZXctPm5ldCA9IG5ldDsNCj4+ICsJY3BfbmV3LT56 b25lID0gdGJbVENBX0NUSU5GT19aT05FXSA/DQo+PiArCQkJbmxhX2dldF91MTYodGJbVENBX0NU SU5GT19aT05FXSkgOiAwOw0KPj4gKwlpZiAoZHNjcHBhcm0pIHsNCj4+ICsJCWNwX25ldy0+ZHNj cG1hc2sgPSBkc2NwcGFybS0+bWFzazsNCj4+ICsJCWNwX25ldy0+ZHNjcG1hc2tzaGlmdCA9IGNw X25ldy0+ZHNjcG1hc2sgPw0KPj4gKwkJCQlfX2ZmcyhjcF9uZXctPmRzY3BtYXNrKSA6IDA7DQo+ PiArCQljcF9uZXctPmRzY3BzdGF0ZW1hc2sgPSBkc2NwcGFybS0+c3RhdGVtYXNrOw0KPj4gKwl9 DQo+PiArCWNwX25ldy0+bWFya21hc2sgPSB0YltUQ0FfQ1RJTkZPX01BUktfTUFTS10gPw0KPj4g KwkJCW5sYV9nZXRfdTMyKHRiW1RDQV9DVElORk9fTUFSS19NQVNLXSkgOiB+MDsNCj4+ICsNCj4+ ICsJaWYgKHRiW1RDQV9DVElORk9fTU9ERV9EU0NQXSkNCj4+ICsJCWNwX25ldy0+bW9kZSB8PSBD VElORk9fTU9ERV9TRVREU0NQOw0KPj4gKwllbHNlDQo+PiArCQljcF9uZXctPm1vZGUgJj0gfkNU SU5GT19NT0RFX1NFVERTQ1A7DQo+PiArDQo+PiArCWlmICh0YltUQ0FfQ1RJTkZPX01PREVfTUFS S10pDQo+PiArCQljcF9uZXctPm1vZGUgfD0gQ1RJTkZPX01PREVfU0VUTUFSSzsNCj4+ICsJZWxz ZQ0KPj4gKwkJY3BfbmV3LT5tb2RlICY9IH5DVElORk9fTU9ERV9TRVRNQVJLOw0KPj4gKw0KPj4g KwlzcGluX2xvY2tfYmgoJmNpLT50Y2ZfbG9jayk7DQo+PiArCWdvdG9fY2ggPSB0Y2ZfYWN0aW9u X3NldF9jdHJsYWN0KCphLCBhY3RwYXJtLT5hY3Rpb24sIGdvdG9fY2gpOw0KPj4gKwlyY3Vfc3dh cF9wcm90ZWN0ZWQoY2ktPnBhcmFtcywgY3BfbmV3LA0KPj4gKwkJCSAgIGxvY2tkZXBfaXNfaGVs ZCgmY2ktPnRjZl9sb2NrKSk7DQo+PiArCXNwaW5fdW5sb2NrX2JoKCZjaS0+dGNmX2xvY2spOw0K Pj4gKw0KPj4gKwlpZiAoZ290b19jaCkNCj4+ICsJCXRjZl9jaGFpbl9wdXRfYnlfYWN0KGdvdG9f Y2gpOw0KPj4gKwlpZiAoY3BfbmV3KQ0KPj4gKwkJa2ZyZWVfcmN1KGNwX25ldywgcmN1KTsNCj4+ ICsNCj4+ICsJaWYgKHJldCA9PSBBQ1RfUF9DUkVBVEVEKQ0KPj4gKwkJdGNmX2lkcl9pbnNlcnQo dG4sICphKTsNCj4+ICsNCj4+ICsJcmV0dXJuIHJldDsNCj4+ICsNCj4+ICtwdXRfY2hhaW46DQo+ PiArCWlmIChnb3RvX2NoKQ0KPj4gKwkJdGNmX2NoYWluX3B1dF9ieV9hY3QoZ290b19jaCk7DQo+ PiArcmVsZWFzZV9pZHI6DQo+PiArCXRjZl9pZHJfcmVsZWFzZSgqYSwgYmluZCk7DQo+PiArCXJl dHVybiBlcnI7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgdGNmX2N0aW5mb19kdW1wKHN0 cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB0Y19hY3Rpb24gKmEsDQo+PiArCQkJICAgaW50IGJp bmQsIGludCByZWYpDQo+PiArew0KPj4gKwlzdHJ1Y3QgdGNmX2N0aW5mbyAqY2kgPSB0b19jdGlu Zm8oYSk7DQo+PiArCXN0cnVjdCB0Y19jdGluZm8gb3B0ID0gew0KPj4gKwkJLnJlZmNudCAgPSBy ZWZjb3VudF9yZWFkKCZjaS0+dGNmX3JlZmNudCkgLSByZWYsDQo+PiArCQkuYmluZGNudCA9IGF0 b21pY19yZWFkKCZjaS0+dGNmX2JpbmRjbnQpIC0gYmluZCwNCj4+ICsJCS5pbmRleCAgID0gY2kt PnRjZl9pbmRleCwNCj4+ICsJfTsNCj4+ICsJdW5zaWduZWQgY2hhciAqYiA9IHNrYl90YWlsX3Bv aW50ZXIoc2tiKTsNCj4+ICsJc3RydWN0IHRjX2N0aW5mb19zdGF0c19kc2NwIGRzY3BzdGF0czsN Cj4+ICsJc3RydWN0IHRjX2N0aW5mb19kc2NwIGRzY3BwYXJtOw0KPj4gKwlzdHJ1Y3QgdGNmX2N0 aW5mb19wYXJhbXMgKmNwOw0KPj4gKwlzdHJ1Y3QgdGNmX3QgdDsNCj4+ICsNCj4+ICsJc3Bpbl9s b2NrX2JoKCZjaS0+dGNmX2xvY2spOw0KPj4gKwljcCA9IHJjdV9kZXJlZmVyZW5jZV9wcm90ZWN0 ZWQoY2ktPnBhcmFtcywNCj4+ICsJCQkJICAgICAgIGxvY2tkZXBfaXNfaGVsZCgmY2ktPnRjZl9s b2NrKSk7DQo+PiArCW9wdC5hY3Rpb24gPSBjaS0+dGNmX2FjdGlvbjsNCj4+ICsNCj4+ICsJaWYg KG5sYV9wdXQoc2tiLCBUQ0FfQ1RJTkZPX0FDVCwgc2l6ZW9mKG9wdCksICZvcHQpKQ0KPj4gKwkJ Z290byBubGFfcHV0X2ZhaWx1cmU7DQo+PiArDQo+PiArCWlmIChjcC0+bW9kZSAmIENUSU5GT19N T0RFX1NFVERTQ1ApIHsNCj4+ICsJCWRzY3BwYXJtLm1hc2sgPSBjcC0+ZHNjcG1hc2s7DQo+PiAr CQlkc2NwcGFybS5zdGF0ZW1hc2sgPSBjcC0+ZHNjcHN0YXRlbWFzazsNCj4+ICsJCWlmIChubGFf cHV0KHNrYiwgVENBX0NUSU5GT19EU0NQX1BBUk1TLCBzaXplb2YoZHNjcHBhcm0pLA0KPj4gKwkJ CSAgICAmZHNjcHBhcm0pKQ0KPj4gKwkJCWdvdG8gbmxhX3B1dF9mYWlsdXJlOw0KPj4gKw0KPj4g KwkJaWYgKG5sYV9wdXRfZmxhZyhza2IsIFRDQV9DVElORk9fTU9ERV9EU0NQKSkNCj4+ICsJCQln b3RvIG5sYV9wdXRfZmFpbHVyZTsNCj4+ICsNCj4+ICsJCWRzY3BzdGF0cy5zZXQgPSBjaS0+c3Rh dHNfZHNjcF9zZXQ7DQo+PiArCQlkc2Nwc3RhdHMuZXJyb3IgPSBjaS0+c3RhdHNfZHNjcF9lcnJv cjsNCj4+ICsJCWlmIChubGFfcHV0KHNrYiwgVENBX0NUSU5GT19TVEFUU19EU0NQLCBzaXplb2Yo ZHNjcHN0YXRzKSwNCj4+ICsJCQkgICAgJmRzY3BzdGF0cykpDQo+PiArCQkJZ290byBubGFfcHV0 X2ZhaWx1cmU7DQo+PiArCX0NCj4+ICsNCj4+ICsJaWYgKGNwLT5tb2RlICYgQ1RJTkZPX01PREVf U0VUTUFSSykgew0KPj4gKwkJaWYgKG5sYV9wdXRfdTMyKHNrYiwgVENBX0NUSU5GT19NQVJLX01B U0ssIGNwLT5tYXJrbWFzaykpDQo+PiArCQkJZ290byBubGFfcHV0X2ZhaWx1cmU7DQo+PiArDQo+ PiArCQlpZiAobmxhX3B1dF9mbGFnKHNrYiwgVENBX0NUSU5GT19NT0RFX01BUkspKQ0KPj4gKwkJ CWdvdG8gbmxhX3B1dF9mYWlsdXJlOw0KPj4gKw0KPj4gKwkJaWYgKG5sYV9wdXRfdTY0XzY0Yml0 KHNrYiwgVENBX0NUSU5GT19TVEFUU19NQVJLLA0KPj4gKwkJCQkgICAgICBjaS0+c3RhdHNfbWFy a19zZXQsIFRDQV9DVElORk9fUEFEKSkNCj4+ICsJCQlnb3RvIG5sYV9wdXRfZmFpbHVyZTsNCj4+ ICsJfQ0KPj4gKw0KPj4gKwlpZiAoY3AtPnpvbmUpIHsNCj4+ICsJCWlmIChubGFfcHV0X3UxNihz a2IsIFRDQV9DVElORk9fWk9ORSwgY3AtPnpvbmUpKQ0KPj4gKwkJCWdvdG8gbmxhX3B1dF9mYWls dXJlOw0KPj4gKwl9DQo+PiArDQo+PiArCXRjZl90bV9kdW1wKCZ0LCAmY2ktPnRjZl90bSk7DQo+ PiArCWlmIChubGFfcHV0XzY0Yml0KHNrYiwgVENBX0NUSU5GT19UTSwgc2l6ZW9mKHQpLCAmdCwg VENBX0NUSU5GT19QQUQpKQ0KPj4gKwkJZ290byBubGFfcHV0X2ZhaWx1cmU7DQo+PiArDQo+PiAr CXNwaW5fdW5sb2NrX2JoKCZjaS0+dGNmX2xvY2spOw0KPj4gKwlyZXR1cm4gc2tiLT5sZW47DQo+ PiArDQo+PiArbmxhX3B1dF9mYWlsdXJlOg0KPj4gKwlzcGluX3VubG9ja19iaCgmY2ktPnRjZl9s b2NrKTsNCj4+ICsJbmxtc2dfdHJpbShza2IsIGIpOw0KPj4gKwlyZXR1cm4gLTE7DQo+PiArfQ0K Pj4gKw0KPj4gK3N0YXRpYyBpbnQgdGNmX2N0aW5mb193YWxrZXIoc3RydWN0IG5ldCAqbmV0LCBz dHJ1Y3Qgc2tfYnVmZiAqc2tiLA0KPj4gKwkJCSAgICAgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sg KmNiLCBpbnQgdHlwZSwNCj4+ICsJCQkgICAgIGNvbnN0IHN0cnVjdCB0Y19hY3Rpb25fb3BzICpv cHMsDQo+PiArCQkJICAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spDQo+PiArew0K Pj4gKwlzdHJ1Y3QgdGNfYWN0aW9uX25ldCAqdG4gPSBuZXRfZ2VuZXJpYyhuZXQsIGN0aW5mb19u ZXRfaWQpOw0KPj4gKw0KPj4gKwlyZXR1cm4gdGNmX2dlbmVyaWNfd2Fsa2VyKHRuLCBza2IsIGNi LCB0eXBlLCBvcHMsIGV4dGFjayk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgdGNmX2N0 aW5mb19zZWFyY2goc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGNfYWN0aW9uICoqYSwgdTMyIGlu ZGV4KQ0KPj4gK3sNCj4+ICsJc3RydWN0IHRjX2FjdGlvbl9uZXQgKnRuID0gbmV0X2dlbmVyaWMo bmV0LCBjdGluZm9fbmV0X2lkKTsNCj4+ICsNCj4+ICsJcmV0dXJuIHRjZl9pZHJfc2VhcmNoKHRu LCBhLCBpbmRleCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgdGNfYWN0aW9uX29w cyBhY3RfY3RpbmZvX29wcyA9IHsNCj4+ICsJLmtpbmQJCT0JImN0aW5mbyIsDQo+PiArCS5pZAkJ PQlUQ0FfSURfQ1RJTkZPLA0KPj4gKwkub3duZXIJCT0JVEhJU19NT0RVTEUsDQo+PiArCS5hY3QJ CT0JdGNmX2N0aW5mb19hY3QsDQo+PiArCS5kdW1wCQk9CXRjZl9jdGluZm9fZHVtcCwNCj4+ICsJ LmluaXQJCT0JdGNmX2N0aW5mb19pbml0LA0KPj4gKwkud2FsawkJPQl0Y2ZfY3RpbmZvX3dhbGtl ciwNCj4+ICsJLmxvb2t1cAkJPQl0Y2ZfY3RpbmZvX3NlYXJjaCwNCj4gDQo+IEFmdGVyIGFwcGx5 aW5nIHRoZSBwYXRjaCwgdGhlID0gZG9lc24ndCBhbGlnbiBmb3IgdGhpcyBsaW5lIGZvciBtZeKA pg0KDQpJ4oCZdmUgbG9va2VkIGluIHZpIGFuZCBhIHN0cmFpZ2h0Zm9yd2FyZCBjYXQgYW5kIGl0 IGFsbCBsaW5lcyB1cCBmb3IgbWUuDQpDYW7igJl0IGZpbmQgYW55IHN0cmF5IHdoaXRlc3BhY2Uu ICBEb27igJl0IGtub3cgd2hhdCBJ4oCZbSBkb2luZyB3cm9uZy4NCg0KPiANCj4+ICsJLnNpemUJ CT0Jc2l6ZW9mKHN0cnVjdCB0Y2ZfY3RpbmZvKSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBf X25ldF9pbml0IGludCBjdGluZm9faW5pdF9uZXQoc3RydWN0IG5ldCAqbmV0KQ0KPj4gK3sNCj4+ ICsJc3RydWN0IHRjX2FjdGlvbl9uZXQgKnRuID0gbmV0X2dlbmVyaWMobmV0LCBjdGluZm9fbmV0 X2lkKTsNCj4+ICsNCj4+ICsJcmV0dXJuIHRjX2FjdGlvbl9uZXRfaW5pdCh0biwgJmFjdF9jdGlu Zm9fb3BzKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgX19uZXRfZXhpdCBjdGluZm9f ZXhpdF9uZXQoc3RydWN0IGxpc3RfaGVhZCAqbmV0X2xpc3QpDQo+PiArew0KPj4gKwl0Y19hY3Rp b25fbmV0X2V4aXQobmV0X2xpc3QsIGN0aW5mb19uZXRfaWQpOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgc3RydWN0IHBlcm5ldF9vcGVyYXRpb25zIGN0aW5mb19uZXRfb3BzID0gew0KPj4gKwku aW5pdCA9IGN0aW5mb19pbml0X25ldCwNCj4+ICsJLmV4aXRfYmF0Y2ggPSBjdGluZm9fZXhpdF9u ZXQsDQo+PiArCS5pZCAgID0gJmN0aW5mb19uZXRfaWQsDQo+PiArCS5zaXplID0gc2l6ZW9mKHN0 cnVjdCB0Y19hY3Rpb25fbmV0KSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgX19pbml0 IGN0aW5mb19pbml0X21vZHVsZSh2b2lkKQ0KPj4gK3sNCj4+ICsJcmV0dXJuIHRjZl9yZWdpc3Rl cl9hY3Rpb24oJmFjdF9jdGluZm9fb3BzLCAmY3RpbmZvX25ldF9vcHMpOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgdm9pZCBfX2V4aXQgY3RpbmZvX2NsZWFudXBfbW9kdWxlKHZvaWQpDQo+PiAr ew0KPj4gKwl0Y2ZfdW5yZWdpc3Rlcl9hY3Rpb24oJmFjdF9jdGluZm9fb3BzLCAmY3RpbmZvX25l dF9vcHMpOw0KPj4gK30NCj4+ICsNCj4+ICttb2R1bGVfaW5pdChjdGluZm9faW5pdF9tb2R1bGUp Ow0KPj4gK21vZHVsZV9leGl0KGN0aW5mb19jbGVhbnVwX21vZHVsZSk7DQo+PiArTU9EVUxFX0FV VEhPUigiS2V2aW4gRGFyYnlzaGlyZS1CcnlhbnQgPGxkaXJAZGFyYnlzaGlyZS1icnlhbnQubWUu dWs+Iik7DQo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJDb25uZWN0aW9uIHRyYWNraW5nIG1hcmsg YWN0aW9ucyIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4+IGRpZmYgLS1naXQgYS90 b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2NvbmZpZyBiL3Rvb2xzL3Rlc3Rpbmcv c2VsZnRlc3RzL3RjLXRlc3RpbmcvY29uZmlnDQo+PiBpbmRleCAyMDMzMDIwNjU0NTguLmIyMzVl ZmQ1NTM2NyAxMDA2NDQNCj4+IC0tLSBhL3Rvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL3RjLXRlc3Rp bmcvY29uZmlnDQo+PiArKysgYi90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy90Yy10ZXN0aW5nL2Nv bmZpZw0KPj4gQEAgLTM4LDYgKzM4LDcgQEAgQ09ORklHX05FVF9BQ1RfQ1NVTT1tDQo+PiBDT05G SUdfTkVUX0FDVF9WTEFOPW0NCj4+IENPTkZJR19ORVRfQUNUX0JQRj1tDQo+PiBDT05GSUdfTkVU X0FDVF9DT05OTUFSSz1tDQo+PiArQ09ORklHX05FVF9BQ1RfQ1RJTkZPPW0NCj4+IENPTkZJR19O RVRfQUNUX1NLQk1PRD1tDQo+PiBDT05GSUdfTkVUX0FDVF9JRkU9bQ0KPj4gQ09ORklHX05FVF9B Q1RfVFVOTkVMX0tFWT1tDQo+PiAtLSANCj4+IDIuMjAuMSAoQXBwbGUgR2l0LTExNykNCg0K