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=-16.3 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,NICE_REPLY_A,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_AGENT_SANE_1 autolearn=unavailable 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 DD695C432BE for ; Wed, 1 Sep 2021 14:31:28 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B9A2D600CD for ; Wed, 1 Sep 2021 14:31:28 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239187AbhIAOcY (ORCPT ); Wed, 1 Sep 2021 10:32:24 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:6379 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233814AbhIAOcX (ORCPT ); Wed, 1 Sep 2021 10:32:23 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1630506687; x=1662042687; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=wBs7aC5W4d80jmnICDdEaHd8WR1JdifBoxC4XaNYXFs=; b=Rr8XVEXys5rBqB12TQOcbDV+qmGbhLRsfHo2RSzPOVn8oTeNTED9EHGK vuK9ojJJZxrbSyyUlzrEE4ON6cZ1xqejPhYjhIud0ZUR1JVPpwft2tMbq OkiCGFR7Ad0iHy3+dDoqDzZKg2Sjlq1pvqf2M4OXPBiw48qLEoNAHNOkQ IxH/B1erTjCyil2k1Iun5pfmgVegF7OOxs4VyMBP4aN7SUHydzLdStlq3 VZBH9Shxue2rBGK/nCx/4e5unfmxMQQdjaVwTTX9z/y5dOIBcdeJDNwuY l4P99Hr+R0ZFljypSWd3ZmdgdcvFkHcuxGmVNkLnnjd7vJ5No1FujWsTr Q==; IronPort-SDR: 4iHnUXHMPxmjIG91dNeFx0Td8GTxFeTVxGyShDxW5sccxniM3GPX/r1FzdQ3l62m9dPd3Vua8/ Foj4geYWlRxWJdV7csJgMvnLfgFevNEBjj2jprPV8pjLICk3rAbl7OfB9IRd41fHsPDaUlzBBM I+4kS22FoefunnPhXDm1FBUplZ/2EibIDPekF0WIc3npvEnmiXYt0mMx4Subyoi5mSbT458krk Cfh4Tf9xk1oHSby1r+mI0tvz3xkFdXwZli0ZEpZDuxVMqaE/arWl8pfx1zU8zVWbP+ZRgls7jz Haz25BVP6fQdQQ/6+KhiT7PS X-IronPort-AV: E=Sophos;i="5.84,369,1620716400"; d="scan'208";a="67874579" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 01 Sep 2021 07:31:25 -0700 Received: from chn-vm-ex01.mchp-main.com (10.10.85.143) by chn-vm-ex04.mchp-main.com (10.10.85.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14; Wed, 1 Sep 2021 07:31:25 -0700 Received: from NAM11-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2176.14 via Frontend Transport; Wed, 1 Sep 2021 07:31:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=n6ettYu8vm6kFlCgJbb26Wgg1GuDd9E/Br4ITfGgtaXXDiz2IKYW10O+WaNZi4TCGQBt4Z2H7kN+ljlXgvuDtgJom+4nZO/K/C0V/SnTszEmEaQFqueFytTQtNiAkOmcUkkg1BDvauSPPr/bqP0zMLQrtg/CMMsM4nkzKMPMTeAQeHqUXKANKh47ntr7KI8W2eHDol+bJtY2qMOhigZ1K1oVatzNgqUm9LaDnkrZYd0JeHXGg1Tg/WpOMl7dQbTHp8GksrjGyejrysYqn34f9UntxHHB0je3YzBqM0/2o0vNlYYE856NWlM+n1VZvKfy+SxVqGV77YNPX6qmdr9F3Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wBs7aC5W4d80jmnICDdEaHd8WR1JdifBoxC4XaNYXFs=; b=XcDONrR+MNA2FnPyTOx2XAV/23q14VJTZby0C14q9c0Nd2611ykn8SbAfVPq0N9qIXALXQNlvs6XNCXJLQi3CCv/DPQj8hO4lPKayui5LNKZOibSqOEttlFoR16DPeuE9DXzOfq8aQYrw5OeAoDfKRAH4DnTSLzM11H+q7sYdga+EmoOrtKfvWT8MGANT76jqAkgMyfDCzWcoi5+Jt5McDi8hZX0cQC2NETqEPtkuUQgM249qS4hzRA1GoDfH5zhJsnn4MnBj4cFNW53KCzT6SZ5FG9uplDUGbcN0U9SMR70CDN41CuiAArj+0Mv3zdjIlKDF9a6ln+JTqaOUQNxyw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wBs7aC5W4d80jmnICDdEaHd8WR1JdifBoxC4XaNYXFs=; b=WO2i3ZO9ndgA3+B9QbmJWCNTUFDa/So82rLljwHieJlsXxyWNWJHvA9FXtzXWWvkBnHI++jbi/mtXOCidkPzQj7P+rntpnkGfKAgckj1N3igCyxa0f95jIpScThRn4LwltXsimJAI8UQg5pMCRlXTzZTPQPEDamwKdkc+hqkmn8= Received: from BN9PR11MB5514.namprd11.prod.outlook.com (2603:10b6:408:103::7) by BN6PR11MB1443.namprd11.prod.outlook.com (2603:10b6:405:8::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.23; Wed, 1 Sep 2021 14:31:22 +0000 Received: from BN9PR11MB5514.namprd11.prod.outlook.com ([fe80::c5c0:630e:5d91:342b]) by BN9PR11MB5514.namprd11.prod.outlook.com ([fe80::c5c0:630e:5d91:342b%6]) with mapi id 15.20.4478.017; Wed, 1 Sep 2021 14:31:22 +0000 From: To: , , , CC: , , , Subject: Re: [PATCH v3 04/10] iio: adc: at91-sama5d2_adc: convert to platform specific data structures Thread-Topic: [PATCH v3 04/10] iio: adc: at91-sama5d2_adc: convert to platform specific data structures Thread-Index: AQHXny1NGp92pqOo4Uu6CtH/aybWlauPPbaA Date: Wed, 1 Sep 2021 14:31:22 +0000 Message-ID: References: <20210901123013.329792-1-eugen.hristev@microchip.com> <20210901123013.329792-5-eugen.hristev@microchip.com> In-Reply-To: <20210901123013.329792-5-eugen.hristev@microchip.com> Accept-Language: en-US, ro-RO Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.8.0 authentication-results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 67a368a7-acfd-487f-4bad-08d96d552bce x-ms-traffictypediagnostic: BN6PR11MB1443: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: v73BU8s4BqIZXcOBX00uLugeK7PtEvKb+Dk89+/ATKz5C9B2rSrD7tiNfzKrRrWofas427qngn2xS9s3lPDV2jUGoUpV+saRIFCw9p0g27gKwu8C2Fv8FWKvkPu30JO4GBFMifzOMgiTQRJYUbh7oqzY/+6LLJPmK6jFcCqHTfuNsa6eLmOlXHisXUgxsUbC1Yiufge+ZlQ1QUm6VnheOw8H7sUtodEedYBnNSQv8iJUqsVEAejTrF/GSDaOi8fdUvWs01E488HAxmhyfAlYgd7Aa5GsbgsvaLKlJKxbjof4kWpHgdU+vhg0FWnK/HQ76eM5yS6Xvm+dC//+wO5w9l86gJlWBotAZKzrnxXVkH/xq0wJutkuzQoo4gEr51GlzSc4NjsK92MDItWSpRNzsWJjlF1+x6mVY3K30yzlcSQiX+oN9Hdyo50IfzMWex3asMG6rfth0lJJSQKnIz5Ti9AalKnf5Z3kHrpKq+4og+jxWKSweJLtWAOgZQak9RvwW0Orwm/m2bwFHmOhHZHp1A2i/ZRPwtac/4s6p4YWZFOk1C7p3f0HGfWc/4QH9BYAaakG/dJ1nfcdcmRDEupEbXT1Fzb6vcwCzu16MSP80JMv/XhyyMPagZiLMK+Zdzdi0CbfqfgcHJqGpw911AuTKpO8P2RiyFrh7lxw9Lj2x1DwciZiHUvGrcmsLx7MiUepj1wdhwG+oUJCN7o0Y/7xiDMRkgIZ0TOYT4do/AyHT7CcDUgxtZJtlv/GSdDN3HONIiu1MtxFKDTFm+ytfgJPjskQqn9xzvr5jK1FqwIJWu0= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BN9PR11MB5514.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(136003)(39860400002)(376002)(366004)(346002)(396003)(4326008)(91956017)(76116006)(2906002)(71200400001)(38070700005)(122000001)(38100700002)(478600001)(6512007)(30864003)(6506007)(36756003)(53546011)(86362001)(186003)(66946007)(66446008)(66556008)(31696002)(8936002)(6486002)(2616005)(8676002)(316002)(26005)(5660300002)(31686004)(107886003)(6636002)(64756008)(66476007)(110136005)(83380400001)(54906003)(45980500001)(43740500002)(579004)(559001)(309714004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d3YxZmtyZFZrUGZNTFh3UDJ2bzgxRXM1ZnUra3BPUVhmQVhlZjFGdVQ3dG9V?= =?utf-8?B?ZDFqRy8rM1B5Qys5V1I4aHM5MWtTdXJPT3FEcFc3azhmZlFYRitBRHBFbFlB?= =?utf-8?B?U1VwbVlGYUlpcHpjU0pxYndxZ1RyMW1HQzVIdURZRy9mRXZkdXYrOE9ldjdI?= =?utf-8?B?NHRiRVZoRUVnNFpZL1ZCSldWNlRlQWxDL2R4UU1XK0hFVFE3TllEczJud1BF?= =?utf-8?B?bmF0TmZmSlZJM1lUN0JGcDhjT0NocmY3RmhFY3p3WEhhMmNIaGsyTkl2THlo?= =?utf-8?B?NEpmOVMxVFRNUUZrNjNoVDZiUEg2cHlKUHllSWY3dW85VDhXd25RUUhzdTR0?= =?utf-8?B?Wnh2MWxYeU9BbE1reitsR0JLRUw5bENZaDRFM1JOYVhvdjBVNHgrVjRneTdi?= =?utf-8?B?cnFYNmJtdWN3aG9qR1VVZkVxUWNUd1RxRXdiRGROUE8yY29kOFBoTysrQ0Uy?= =?utf-8?B?T3JoRlZKY1FZTXcxVUNDWWpIaExsRW45QjlLNWpUOUZYWm9rY3hCcHhxcDkx?= =?utf-8?B?YzlqNC9ueVFxOUdaanNHMDBKb09nbUZoSk9EMlpzeC9HVXdLMGN0WFEvN1ZV?= =?utf-8?B?TTZzUDZKS2RGMW9TRkE3dStYaDJEdGxTVHhJWEozYys1ejBnRkJYMXN2YjJG?= =?utf-8?B?ZXNNTmZQOVRYcjd4L0RBSUtYbTdya0pmQjE4V3VWK2xjNkVtMnBRNkJlVEV0?= =?utf-8?B?K1R4dFZJNzk4S1FTdWJiZGRmZXQxNDJQdEhHWE5PQkZZa2VFd09zbjhmcWJ6?= =?utf-8?B?enozQlFMZVVmUlhvT1BjcXMrdkdIUnovVTJid3ViVUljYTJMK0ZMODJBWE9Z?= =?utf-8?B?MWcxbmtsOVp1Tkd3SnBsMFR4ZitTdW15T2FJTktHWFpSOGFrUUZLY25sZThF?= =?utf-8?B?WEFpVzM4UC9Sd2loaE5pdllZRHVlZlFhSjI4UEJIWFJrNWp3cWNjMTlicjNm?= =?utf-8?B?N0xhQU1RVU1XYzBzOWlsb1dDWDNZaElhTWJSd3B0akFEK0VyM0luK0NyUUo5?= =?utf-8?B?bG1JdTlFSXpZZWZxRU13RHhpa2ZkYmlwQjFrVFk0SElMUFBHV3dpZTZuN2Vj?= =?utf-8?B?bDVyK0IrU2ZMbDBRUUJpaW5BTXp2SWxxVzZwT21jN3RHaExZdXRkNEFyS1I4?= =?utf-8?B?d0c0WXlWMG1VQzNSdnJzWkwrdUpmUUM5bVJLQUQ3U2RKMUxIcjU3MGNvZFpY?= =?utf-8?B?QjJsdmxCWTVlQzVPeGRJVDBUVnc4bkxUT0JBeGwxc2NtamNsdWh4ejMrV1BF?= =?utf-8?B?aUE0ckJaZ3VmN3p0T0RLR1M5akd4V0FTbk1rVGVIR1NpL05lSmFtdzJLdXdL?= =?utf-8?B?L1VPbVluTjhQa0pXbGtmcmd4OGkvTTgzQkVJZFJ1RzQ3dzZmMTgwK1N2NjQ1?= =?utf-8?B?WG4wZVM0RFJwY0UyOC8vMXBacGp2MDJZSFVWRzcyUmRwNzloNUd0WmU2SXZ5?= =?utf-8?B?Q0wxTUI4MFR0SG0vNitIblh0SDVVbDhNaHh0TkIxU1BvM1B2dmM1NXZoWXdr?= =?utf-8?B?ZXhZMXJUVDBwMUhPSGJ3NXNCRnBFOXlYNXBZQVZ1MDRPTFJETEc3UkQwSUN4?= =?utf-8?B?b0thKzNtV1orRHJUSEYvcFBGQlh4QW1jbHgrY2lycVRKYnBPSExURkQwVVp4?= =?utf-8?B?VUpyeEN5NDlJT3E1ZEZzdUNGbDFEL0ZRK0M3d1NlQ2FiSE03MVg1dXdTRHR2?= =?utf-8?B?dnN4a013V2lZSy91Q0FXQVZyb3NvakNUVnVuWVIxaisrZnM0b2s3UUttUWxF?= =?utf-8?Q?m+Rc+JRD0daw03Dq1M=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <8B89B1A4CC5E28498186AC67C186BB4A@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5514.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 67a368a7-acfd-487f-4bad-08d96d552bce X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Sep 2021 14:31:22.2770 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: V4WWK+FKlkRBDk3N0UOVpubc7+0glMIYqWx16HymSMDzNOUsc+biVzGNH5Y/j7BLUdx745brxXp7V1co6sF6PjPhqbIsnEUMMUyDx9TzNrY= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR11MB1443 Precedence: bulk List-ID: X-Mailing-List: linux-iio@vger.kernel.org T24gOS8xLzIxIDM6MzAgUE0sIEV1Z2VuIEhyaXN0ZXYgd3JvdGU6DQo+IENvbnZlcnQgdGhlIGRy aXZlciB0byBwbGF0Zm9ybSBzcGVjaWZpYyBzdHJ1Y3R1cmVzLiBUaGlzIG1lYW5zOg0KPiAtIGNy ZWF0ZSBhIHJlZ2lzdGVyIGxheW91dCBzdHJ1Y3QgdGhhdCB3aWxsIGhvbGQgb2Zmc2V0cyBmb3Ig cmVnaXN0ZXJzDQo+IC0gY3JlYXRlIGEgcGxhdGZvcm0gc3RydWN0IHRoYXQgd2lsbCBob2xkIHBs YXRmb3JtIGluZm9ybWF0aW9uIChudW1iZXIgb2YNCj4gY2hhbm5lbHMsIGluZGV4ZXMgZm9yIGRp ZmZlcmVudCBjaGFubmVscyBhbmQgcG9pbnRlciB0byBsYXlvdXQgc3RydWN0KQ0KPiAtIGNvbnZl cnQgc3BlY2lmaWMgbWFjcm9zIHRoYXQgYXJlIHBsYXRmb3JtIGRlcGVuZGVudCBpbnRvIHBsYXRm b3JtIHZhcmlhYmxlcw0KPiANCj4gVGhpcyBzdGVwIGlzIGluIGZhY3QgYSBuby1vcCwgYnV0IGFs bG93cyB0aGUgZHJpdmVyIHRvIGJlIG1vcmUgZmxleGlibGUNCj4gYW5kIGZvciBmdXR1cmUgZW5o YW5jZW1lbnQgaW5jbHVkaW5nIGFkZGluZyBuZXcgcGxhdGZvcm1zIHRoYXQgYXJlIHBhcnRseQ0K PiBjb21wYXRpYmxlIHdpdGggdGhlIGN1cnJlbnQgZHJpdmVyIGFuZCBkaWZmZXIgc2xpZ2h0bHkg aW4gcmVnaXN0ZXIgbGF5b3V0DQo+IG9yIGNhcGFiaWxpdGllcyBmb3IgZXhhbXBsZS4NCj4gDQo+ IFNpZ25lZC1vZmYtYnk6IEV1Z2VuIEhyaXN0ZXYgPGV1Z2VuLmhyaXN0ZXZAbWljcm9jaGlwLmNv bT4NCj4gLS0tDQo+IENoYW5nZXMgaW4gdjM6DQo+IC0gZml4ZWQgcm9ib3QgcmVwb3J0ZWQgd2Fy bmluZyBhdCB1bmluaXRpYWxpemVkICd2YWwnIHZhcmlhYmxlDQo+IC0gYWRkZWQgbWF4X2luZGV4 IGluIHBsYXRmb3JtIHN0cnVjdCB0byBob2xkIG1heGltdW0gaW5kZXggaW4gdGhlIGNoYW5uZWxz IGxpc3QNCj4gLSBmaXhlZCB0aGUgaW5kZXhlcyBmb3IgZGlmZmVyZW50aWFsLCB0aW1lc3RhbXAs IGFuZCB0b3VjaHNjcmVlbiBjaGFubmVscw0KPiAodmVyc2lvbiAyIGJyb2tlIHRoaXMgY29tcGFy ZWQgdG8gY3VycmVudCBkcml2ZXIgQUJJICkNCj4gDQo+IA0KPiAgIGRyaXZlcnMvaWlvL2FkYy9h dDkxLXNhbWE1ZDJfYWRjLmMgfCA0MTcgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCj4g ICAxIGZpbGUgY2hhbmdlZCwgMjUzIGluc2VydGlvbnMoKyksIDE2NCBkZWxldGlvbnMoLSkNCj4g DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2lpby9hZGMvYXQ5MS1zYW1hNWQyX2FkYy5jIGIvZHJp dmVycy9paW8vYWRjL2F0OTEtc2FtYTVkMl9hZGMuYw0KPiBpbmRleCA5ZDcxZGNmZmNmOTMuLmQ4 MWUxNmYxM2IzYiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9paW8vYWRjL2F0OTEtc2FtYTVkMl9h ZGMuYw0KPiArKysgYi9kcml2ZXJzL2lpby9hZGMvYXQ5MS1zYW1hNWQyX2FkYy5jDQo+IEBAIC0y Nyw4ICsyNyw5IEBADQo+ICAgI2luY2x1ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4NCj4g ICAjaW5jbHVkZSA8bGludXgvcmVndWxhdG9yL2NvbnN1bWVyLmg+DQo+ICAgDQo+ICtzdHJ1Y3Qg YXQ5MV9hZGNfcmVnX2xheW91dCB7DQo+ICAgLyogQ29udHJvbCBSZWdpc3RlciAqLw0KPiAtI2Rl ZmluZSBBVDkxX1NBTUE1RDJfQ1IJCTB4MDANCj4gKwl1MTYJCQkJQ1I7DQo+ICAgLyogU29mdHdh cmUgUmVzZXQgKi8NCj4gICAjZGVmaW5lCUFUOTFfU0FNQTVEMl9DUl9TV1JTVAkJQklUKDApDQo+ ICAgLyogU3RhcnQgQ29udmVyc2lvbiAqLw0KPiBAQCAtMzksNyArNDAsNyBAQA0KPiAgICNkZWZp bmUJQVQ5MV9TQU1BNUQyX0NSX0NNUFJTVAkJQklUKDQpDQo+ICAgDQo+ICAgLyogTW9kZSBSZWdp c3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfTVIJCTB4MDQNCj4gKwl1MTYJCQkJTVI7 DQo+ICAgLyogVHJpZ2dlciBTZWxlY3Rpb24gKi8NCj4gICAjZGVmaW5lCUFUOTFfU0FNQTVEMl9N Ul9UUkdTRUwodikJKCh2KSA8PCAxKQ0KPiAgIC8qIEFEVFJHICovDQo+IEBAIC04MiwxOSArODMs MTkgQEANCj4gICAjZGVmaW5lCUFUOTFfU0FNQTVEMl9NUl9VU0VRCQlCSVQoMzEpDQo+ICAgDQo+ ICAgLyogQ2hhbm5lbCBTZXF1ZW5jZSBSZWdpc3RlciAxICovDQo+IC0jZGVmaW5lIEFUOTFfU0FN QTVEMl9TRVFSMQkweDA4DQo+ICsJdTE2CQkJCVNFUVIxOw0KPiAgIC8qIENoYW5uZWwgU2VxdWVu Y2UgUmVnaXN0ZXIgMiAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfU0VRUjIJMHgwYw0KPiAr CXUxNgkJCQlTRVFSMjsNCj4gICAvKiBDaGFubmVsIEVuYWJsZSBSZWdpc3RlciAqLw0KPiAtI2Rl ZmluZSBBVDkxX1NBTUE1RDJfQ0hFUgkweDEwDQo+ICsJdTE2CQkJCUNIRVI7DQo+ICAgLyogQ2hh bm5lbCBEaXNhYmxlIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9DSERSCTB4 MTQNCj4gKwl1MTYJCQkJQ0hEUjsNCj4gICAvKiBDaGFubmVsIFN0YXR1cyBSZWdpc3RlciAqLw0K PiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ0hTUgkweDE4DQo+ICsJdTE2CQkJCUNIU1I7DQo+ICAg LyogTGFzdCBDb252ZXJ0ZWQgRGF0YSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1 RDJfTENEUgkweDIwDQo+ICsJdTE2CQkJCUxDRFI7DQo+ICAgLyogSW50ZXJydXB0IEVuYWJsZSBS ZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfSUVSCTB4MjQNCj4gKwl1MTYJCQkJ SUVSOw0KPiAgIC8qIEludGVycnVwdCBFbmFibGUgUmVnaXN0ZXIgLSBUUyBYIG1lYXN1cmVtZW50 IHJlYWR5ICovDQo+ICAgI2RlZmluZSBBVDkxX1NBTUE1RDJfSUVSX1hSRFkgICBCSVQoMjApDQo+ ICAgLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAtIFRTIFkgbWVhc3VyZW1lbnQgcmVhZHkg Ki8NCj4gQEAgLTEwOSwyMiArMTEwLDIzIEBADQo+ICAgI2RlZmluZSBBVDkxX1NBTUE1RDJfSUVS X1BFTiAgICBCSVQoMjkpDQo+ICAgLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAtIE5vIHBl biBkZXRlY3QgKi8NCj4gICAjZGVmaW5lIEFUOTFfU0FNQTVEMl9JRVJfTk9QRU4gIEJJVCgzMCkN Cj4gKw0KPiAgIC8qIEludGVycnVwdCBEaXNhYmxlIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFU OTFfU0FNQTVEMl9JRFIJMHgyOA0KPiArCXUxNgkJCQlJRFI7DQo+ICAgLyogSW50ZXJydXB0IE1h c2sgUmVnaXN0ZXIgKi8NCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX0lNUgkweDJjDQo+ICsJdTE2 CQkJCUlNUjsNCj4gICAvKiBJbnRlcnJ1cHQgU3RhdHVzIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5l IEFUOTFfU0FNQTVEMl9JU1IJMHgzMA0KPiArCXUxNgkJCQlJU1I7DQo+ICAgLyogSW50ZXJydXB0 IFN0YXR1cyBSZWdpc3RlciAtIFBlbiB0b3VjaGluZyBzZW5zZSBzdGF0dXMgKi8NCj4gICAjZGVm aW5lIEFUOTFfU0FNQTVEMl9JU1JfUEVOUyAgIEJJVCgzMSkNCj4gICAvKiBMYXN0IENoYW5uZWwg VHJpZ2dlciBNb2RlIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9MQ1RNUgkw eDM0DQo+ICsJdTE2CQkJCUxDVE1SOw0KPiAgIC8qIExhc3QgQ2hhbm5lbCBDb21wYXJlIFdpbmRv dyBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfTENDV1IJMHgzOA0KPiArCXUx NgkJCQlMQ0NXUjsNCj4gICAvKiBPdmVycnVuIFN0YXR1cyBSZWdpc3RlciAqLw0KPiAtI2RlZmlu ZSBBVDkxX1NBTUE1RDJfT1ZFUgkweDNjDQo+ICsJdTE2CQkJCU9WRVI7DQo+ICAgLyogRXh0ZW5k ZWQgTW9kZSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfRU1SCTB4NDANCj4g Kwl1MTYJCQkJRU1SOw0KPiAgIC8qIEV4dGVuZGVkIE1vZGUgUmVnaXN0ZXIgLSBPdmVyc2FtcGxp bmcgcmF0ZSAqLw0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX0VNUl9PU1IoVikJCQkoKFYpIDw8 IDE2KQ0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX0VNUl9PU1JfTUFTSwkJR0VOTUFTSygxNywg MTYpDQo+IEBAIC0xMzQsMjIgKzEzNiwyMiBAQA0KPiAgIA0KPiAgIC8qIEV4dGVuZGVkIE1vZGUg UmVnaXN0ZXIgLSBBdmVyYWdpbmcgb24gc2luZ2xlIHRyaWdnZXIgZXZlbnQgKi8NCj4gICAjZGVm aW5lIEFUOTFfU0FNQTVEMl9FTVJfQVNURShWKQkJKChWKSA8PCAyMCkNCj4gKw0KPiAgIC8qIENv bXBhcmUgV2luZG93IFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9DV1IJMHg0 NA0KPiArCXUxNgkJCQlDV1I7DQo+ICAgLyogQ2hhbm5lbCBHYWluIFJlZ2lzdGVyICovDQo+IC0j ZGVmaW5lIEFUOTFfU0FNQTVEMl9DR1IJMHg0OA0KPiAtDQo+ICsJdTE2CQkJCUNHUjsNCj4gICAv KiBDaGFubmVsIE9mZnNldCBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ09S CTB4NGMNCj4gKwl1MTYJCQkJQ09SOw0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX0NPUl9ESUZG X09GRlNFVAkxNg0KPiAgIA0KPiAgIC8qIEFuYWxvZyBDb250cm9sIFJlZ2lzdGVyICovDQo+IC0j ZGVmaW5lIEFUOTFfU0FNQTVEMl9BQ1IJMHg5NA0KPiArCXUxNgkJCQlBQ1I7DQo+ICAgLyogQW5h bG9nIENvbnRyb2wgUmVnaXN0ZXIgLSBQZW4gZGV0ZWN0IHNlbnNpdGl2aXR5IG1hc2sgKi8NCj4g ICAjZGVmaW5lIEFUOTFfU0FNQTVEMl9BQ1JfUEVOREVUU0VOU19NQVNLICAgICAgICBHRU5NQVNL KDEsIDApDQo+ICAgDQo+ICAgLyogVG91Y2hzY3JlZW4gTW9kZSBSZWdpc3RlciAqLw0KPiAtI2Rl ZmluZSBBVDkxX1NBTUE1RDJfVFNNUgkweGIwDQo+ICsJdTE2CQkJCVRTTVI7DQo+ICAgLyogVG91 Y2hzY3JlZW4gTW9kZSBSZWdpc3RlciAtIE5vIHRvdWNoIG1vZGUgKi8NCj4gICAjZGVmaW5lIEFU OTFfU0FNQTVEMl9UU01SX1RTTU9ERV9OT05FICAgICAgICAgICAwDQo+ICAgLyogVG91Y2hzY3Jl ZW4gTW9kZSBSZWdpc3RlciAtIDQgd2lyZSBzY3JlZW4sIG5vIHByZXNzdXJlIG1lYXN1cmVtZW50 ICovDQo+IEBAIC0xNzgsMTMgKzE4MCwxMyBAQA0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RT TVJfUEVOREVUX0VOQSAgICAgICAgICAgIEJJVCgyNCkNCj4gICANCj4gICAvKiBUb3VjaHNjcmVl biBYIFBvc2l0aW9uIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9YUE9TUgkw eGI0DQo+ICsJdTE2CQkJCVhQT1NSOw0KPiAgIC8qIFRvdWNoc2NyZWVuIFkgUG9zaXRpb24gUmVn aXN0ZXIgKi8NCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX1lQT1NSCTB4YjgNCj4gKwl1MTYJCQkJ WVBPU1I7DQo+ICAgLyogVG91Y2hzY3JlZW4gUHJlc3N1cmUgUmVnaXN0ZXIgKi8NCj4gLSNkZWZp bmUgQVQ5MV9TQU1BNUQyX1BSRVNTUgkweGJjDQo+ICsJdTE2CQkJCVBSRVNTUjsNCj4gICAvKiBU cmlnZ2VyIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9UUkdSCTB4YzANCj4g Kwl1MTYJCQkJVFJHUjsNCj4gICAvKiBNYXNrIGZvciBUUkdNT0QgZmllbGQgb2YgVFJHUiByZWdp c3RlciAqLw0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RSR1JfVFJHTU9EX01BU0sgR0VOTUFT SygyLCAwKQ0KPiAgIC8qIE5vIHRyaWdnZXIsIG9ubHkgc29mdHdhcmUgdHJpZ2dlciBjYW4gc3Rh cnQgY29udmVyc2lvbnMgKi8NCj4gQEAgLTIwMywzMCArMjA1LDUyIEBADQo+ICAgI2RlZmluZSBB VDkxX1NBTUE1RDJfVFJHUl9UUkdQRVIoeCkgICAgICAgICAgICAgKCh4KSA8PCAxNikNCj4gICAN Cj4gICAvKiBDb3JyZWN0aW9uIFNlbGVjdCBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NB TUE1RDJfQ09TUgkweGQwDQo+ICsJdTE2CQkJCUNPU1I7DQo+ICAgLyogQ29ycmVjdGlvbiBWYWx1 ZSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ1ZSCTB4ZDQNCj4gKwl1MTYJ CQkJQ1ZSOw0KPiAgIC8qIENoYW5uZWwgRXJyb3IgQ29ycmVjdGlvbiBSZWdpc3RlciAqLw0KPiAt I2RlZmluZSBBVDkxX1NBTUE1RDJfQ0VDUgkweGQ4DQo+ICsJdTE2CQkJCUNFQ1I7DQo+ICAgLyog V3JpdGUgUHJvdGVjdGlvbiBNb2RlIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVE Ml9XUE1SCTB4ZTQNCj4gKwl1MTYJCQkJV1BNUjsNCj4gICAvKiBXcml0ZSBQcm90ZWN0aW9uIFN0 YXR1cyBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfV1BTUgkweGU4DQo+ICsJ dTE2CQkJCVdQU1I7DQo+ICAgLyogVmVyc2lvbiBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkx X1NBTUE1RDJfVkVSU0lPTgkweGZjDQo+IC0NCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX0hXX1RS SUdfQ05UIDMNCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX1NJTkdMRV9DSEFOX0NOVCAxMg0KPiAt I2RlZmluZSBBVDkxX1NBTUE1RDJfRElGRl9DSEFOX0NOVCA2DQo+IC0NCj4gLSNkZWZpbmUgQVQ5 MV9TQU1BNUQyX1RJTUVTVEFNUF9DSEFOX0lEWCAoQVQ5MV9TQU1BNUQyX1NJTkdMRV9DSEFOX0NO VCArIFwNCj4gLQkJCQkJIEFUOTFfU0FNQTVEMl9ESUZGX0NIQU5fQ05UICsgMSkNCj4gKwl1MTYJ CQkJVkVSU0lPTjsNCj4gK307DQo+ICAgDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9UT1VDSF9Y X0NIQU5fSURYIChBVDkxX1NBTUE1RDJfU0lOR0xFX0NIQU5fQ05UICsgXA0KPiAtCQkJCQkgQVQ5 MV9TQU1BNUQyX0RJRkZfQ0hBTl9DTlQgKiAyKQ0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfVE9V Q0hfWV9DSEFOX0lEWCAgIChBVDkxX1NBTUE1RDJfVE9VQ0hfWF9DSEFOX0lEWCArIDEpDQo+IC0j ZGVmaW5lIEFUOTFfU0FNQTVEMl9UT1VDSF9QX0NIQU5fSURYICAgKEFUOTFfU0FNQTVEMl9UT1VD SF9ZX0NIQU5fSURYICsgMSkNCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX01BWF9DSEFOX0lEWAlB VDkxX1NBTUE1RDJfVE9VQ0hfUF9DSEFOX0lEWA0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdDkx X2FkY19yZWdfbGF5b3V0IHNhbWE1ZDJfbGF5b3V0ID0gew0KPiArCS5DUiA9CQkJMHgwMCwNCj4g KwkuTVIgPQkJCTB4MDQsDQo+ICsJLlNFUVIxID0JCTB4MDgsDQo+ICsJLlNFUVIyID0JCTB4MGMs DQo+ICsJLkNIRVIgPQkJCTB4MTAsDQo+ICsJLkNIRFIgPQkJCTB4MTQsDQo+ICsJLkNIU1IgPQkJ CTB4MTgsDQo+ICsJLkxDRFIgPQkJCTB4MjAsDQo+ICsJLklFUiA9CQkJMHgyNCwNCj4gKwkuSURS ID0JCQkweDI4LA0KPiArCS5JTVIgPQkJCTB4MmMsDQo+ICsJLklTUiA9CQkJMHgzMCwNCj4gKwku TENUTVIgPQkJMHgzNCwNCj4gKwkuTENDV1IgPQkJMHgzOCwNCj4gKwkuT1ZFUiA9CQkJMHgzYywN Cj4gKwkuRU1SID0JCQkweDQwLA0KPiArCS5DV1IgPQkJCTB4NDQsDQo+ICsJLkNHUiA9CQkJMHg0 OCwNCj4gKwkuQ09SID0JCQkweDRjLA0KPiArCS5BQ1IgPQkJCTB4OTQsDQo+ICsJLlRTTVIgPQkJ CTB4YjAsDQo+ICsJLlhQT1NSID0JCTB4YjQsDQo+ICsJLllQT1NSID0JCTB4YjgsDQo+ICsJLlBS RVNTUiA9CQkweGJjLA0KPiArCS5UUkdSID0JCQkweGMwLA0KPiArCS5DT1NSID0JCQkweGQwLA0K PiArCS5DVlIgPQkJCTB4ZDQsDQo+ICsJLkNFQ1IgPQkJCTB4ZDgsDQo+ICsJLldQTVIgPQkJCTB4 ZTQsDQo+ICsJLldQU1IgPQkJCTB4ZTgsDQo+ICsJLlZFUlNJT04gPQkJMHhmYywNCj4gK307DQo+ ICAgDQo+ICAgI2RlZmluZSBBVDkxX1NBTUE1RDJfVE9VQ0hfU0FNUExFX1BFUklPRF9VUyAgICAg ICAgICAyMDAwICAgIC8qIDJtcyAqLw0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RPVUNIX1BF Tl9ERVRFQ1RfREVCT1VOQ0VfVVMgICAgMjAwDQo+IEBAIC0yMzUsMTggKzI1OSw2IEBADQo+ICAg DQo+ICAgI2RlZmluZSBBVDkxX1NBTUE1RDJfTUFYX1BPU19CSVRTCQkJMTINCj4gICANCj4gLS8q DQo+IC0gKiBNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byBob2xkIGNvbnZlcnNpb24gZnJvbSBh bGwgY2hhbm5lbHMNCj4gLSAqIHdpdGhvdXQgdGhlIHRpbWVzdGFtcC4NCj4gLSAqLw0KPiAtI2Rl ZmluZSBBVDkxX0JVRkZFUl9NQVhfQ09OVkVSU0lPTl9CWVRFUyAoKEFUOTFfU0FNQTVEMl9TSU5H TEVfQ0hBTl9DTlQgKyBcDQo+IC0JCQkJCSBBVDkxX1NBTUE1RDJfRElGRl9DSEFOX0NOVCkgKiAy KQ0KPiAtDQo+IC0vKiBUaGlzIHRvdGFsIG11c3QgYWxzbyBpbmNsdWRlIHRoZSB0aW1lc3RhbXAg Ki8NCj4gLSNkZWZpbmUgQVQ5MV9CVUZGRVJfTUFYX0JZVEVTIChBVDkxX0JVRkZFUl9NQVhfQ09O VkVSU0lPTl9CWVRFUyArIDgpDQo+IC0NCj4gLSNkZWZpbmUgQVQ5MV9CVUZGRVJfTUFYX0hXT1JE UyAoQVQ5MV9CVUZGRVJfTUFYX0JZVEVTIC8gMikNCj4gLQ0KPiAgICNkZWZpbmUgQVQ5MV9IV0ZJ Rk9fTUFYX1NJWkVfU1RSCSIxMjgiDQo+ICAgI2RlZmluZSBBVDkxX0hXRklGT19NQVhfU0laRQkJ MTI4DQo+ICAgDQo+IEBAIC0yNTUsMTIgKzI2NywxMiBAQA0KPiAgICNkZWZpbmUgQVQ5MV9PU1Jf NFNBTVBMRVMJCTQNCj4gICAjZGVmaW5lIEFUOTFfT1NSXzE2U0FNUExFUwkJMTYNCj4gICANCj4g LSNkZWZpbmUgQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKG51bSwgYWRkcikJCQkJXA0KPiArI2Rl ZmluZSBBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoaW5kZXgsIG51bSwgYWRkcikJCQlcDQo+ICAg CXsJCQkJCQkJCVwNCj4gICAJCS50eXBlID0gSUlPX1ZPTFRBR0UsCQkJCQlcDQo+ICAgCQkuY2hh bm5lbCA9IG51bSwJCQkJCQlcDQo+ICAgCQkuYWRkcmVzcyA9IGFkZHIsCQkJCQlcDQo+IC0JCS5z Y2FuX2luZGV4ID0gbnVtLAkJCQkJXA0KPiArCQkuc2Nhbl9pbmRleCA9IGluZGV4LAkJCQkJXA0K PiAgIAkJLnNjYW5fdHlwZSA9IHsJCQkJCQlcDQo+ICAgCQkJLnNpZ24gPSAndScsCQkJCQlcDQo+ ICAgCQkJLnJlYWxiaXRzID0gMTQsCQkJCQlcDQo+IEBAIC0yNzQsMTQgKzI4NiwxNCBAQA0KPiAg IAkJLmluZGV4ZWQgPSAxLAkJCQkJCVwNCj4gICAJfQ0KPiAgIA0KPiAtI2RlZmluZSBBVDkxX1NB TUE1RDJfQ0hBTl9ESUZGKG51bSwgbnVtMiwgYWRkcikJCQkJXA0KPiArI2RlZmluZSBBVDkxX1NB TUE1RDJfQ0hBTl9ESUZGKGluZGV4LCBudW0sIG51bTIsIGFkZHIpCQkJXA0KPiAgIAl7CQkJCQkJ CQlcDQo+ICAgCQkudHlwZSA9IElJT19WT0xUQUdFLAkJCQkJXA0KPiAgIAkJLmRpZmZlcmVudGlh bCA9IDEsCQkJCQlcDQo+ICAgCQkuY2hhbm5lbCA9IG51bSwJCQkJCQlcDQo+ICAgCQkuY2hhbm5l bDIgPSBudW0yLAkJCQkJXA0KPiAgIAkJLmFkZHJlc3MgPSBhZGRyLAkJCQkJXA0KPiAtCQkuc2Nh bl9pbmRleCA9IG51bSArIEFUOTFfU0FNQTVEMl9TSU5HTEVfQ0hBTl9DTlQsCVwNCj4gKwkJLnNj YW5faW5kZXggPSBpbmRleCwJCQkJCVwNCj4gICAJCS5zY2FuX3R5cGUgPSB7CQkJCQkJXA0KPiAg IAkJCS5zaWduID0gJ3MnLAkJCQkJXA0KPiAgIAkJCS5yZWFsYml0cyA9IDE0LAkJCQkJXA0KPiBA QCAtMzI4LDEzICszNDAsNTEgQEANCj4gICAJCS5kYXRhc2hlZXRfbmFtZSA9IG5hbWUsCQkJCQlc DQo+ICAgCX0NCj4gICANCj4gLSNkZWZpbmUgYXQ5MV9hZGNfcmVhZGwoc3QsIHJlZykJCXJlYWRs X3JlbGF4ZWQoc3QtPmJhc2UgKyByZWcpDQo+IC0jZGVmaW5lIGF0OTFfYWRjX3dyaXRlbChzdCwg cmVnLCB2YWwpCXdyaXRlbF9yZWxheGVkKHZhbCwgc3QtPmJhc2UgKyByZWcpDQo+ICsjZGVmaW5l IGF0OTFfYWRjX3JlYWRsKHN0LCByZWcpCQkJCQkJXA0KPiArCXJlYWRsX3JlbGF4ZWQoKHN0KS0+ YmFzZSArIChzdCktPnNvY19pbmZvLnBsYXRmb3JtLT5sYXlvdXQtPnJlZykNCj4gKyNkZWZpbmUg YXQ5MV9hZGNfcmVhZF9jaGFuKHN0LCByZWcpCQkJCQlcDQo+ICsJcmVhZGxfcmVsYXhlZCgoc3Qp LT5iYXNlICsgcmVnKQ0KPiArI2RlZmluZSBhdDkxX2FkY193cml0ZWwoc3QsIHJlZywgdmFsKQkJ CQkJXA0KPiArCXdyaXRlbF9yZWxheGVkKHZhbCwgKHN0KS0+YmFzZSArIChzdCktPnNvY19pbmZv LnBsYXRmb3JtLT5sYXlvdXQtPnJlZykNCj4gKw0KPiArLyoqDQo+ICsgKiBzdHJ1Y3QgYXQ5MV9h ZGNfcGxhdGZvcm0gLSBhdDkxLXNhbWE1ZDIgcGxhdGZvcm0gaW5mb3JtYXRpb24gc3RydWN0DQo+ ICsgKiBAbGF5b3V0OgkJcG9pbnRlciB0byB0aGUgcmVnIGxheW91dCBzdHJ1Y3QNCj4gKyAqIEBh ZGNfY2hhbm5lbHM6CXBvaW50ZXIgdG8gYW4gYXJyYXkgb2YgY2hhbm5lbHMgZm9yIHJlZ2lzdGVy aW5nIGluDQo+ICsgKgkJCXRoZSBpaW8gc3Vic3lzdGVtDQo+ICsgKiBAbnJfY2hhbm5lbHM6CW51 bWJlciBvZiBwaHlzaWNhbCBjaGFubmVscyBhdmFpbGFibGUNCj4gKyAqIEB0b3VjaF9jaGFuX3g6 CWluZGV4IG9mIHRoZSB0b3VjaHNjcmVlbiBYIGNoYW5uZWwNCj4gKyAqIEB0b3VjaF9jaGFuX3k6 CWluZGV4IG9mIHRoZSB0b3VjaHNjcmVlbiBZIGNoYW5uZWwNCj4gKyAqIEB0b3VjaF9jaGFuX3A6 CWluZGV4IG9mIHRoZSB0b3VjaHNjcmVlbiBQIGNoYW5uZWwNCj4gKyAqIEBtYXhfY2hhbm5lbHM6 CW51bWJlciBvZiB0b3RhbCBjaGFubmVscw0KPiArICogQG1heF9pbmRleDoJCWhpZ2hlc3QgY2hh bm5lbCBpbmRleCAoaGlnaGVzdCBpbmRleCBtYXkgYmUgaGlnaGVyDQo+ICsgKgkJCXRoYW4gdGhl IHRvdGFsIGNoYW5uZWwgbnVtYmVyKQ0KPiArICogQGh3X3RyaWdfY250OgludW1iZXIgb2YgcG9z c2libGUgaGFyZHdhcmUgdHJpZ2dlcnMNCj4gKyAqLw0KPiArc3RydWN0IGF0OTFfYWRjX3BsYXRm b3JtIHsNCj4gKwljb25zdCBzdHJ1Y3QgYXQ5MV9hZGNfcmVnX2xheW91dAkqbGF5b3V0Ow0KPiAr CWNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjCQkoKmFkY19jaGFubmVscylbXTsNCj4gKwl1bnNp Z25lZCBpbnQJCQkJbnJfY2hhbm5lbHM7DQo+ICsJdW5zaWduZWQgaW50CQkJCXRvdWNoX2NoYW5f eDsNCj4gKwl1bnNpZ25lZCBpbnQJCQkJdG91Y2hfY2hhbl95Ow0KPiArCXVuc2lnbmVkIGludAkJ CQl0b3VjaF9jaGFuX3A7DQo+ICsJdW5zaWduZWQgaW50CQkJCW1heF9jaGFubmVsczsNCj4gKwl1 bnNpZ25lZCBpbnQJCQkJbWF4X2luZGV4Ow0KPiArCXVuc2lnbmVkIGludAkJCQlod190cmlnX2Nu dDsNCj4gK307DQo+ICAgDQo+ICsvKioNCj4gKyAqIHN0cnVjdCBhdDkxX2FkY19zb2NfaW5mbyAt IGF0OTEtc2FtYTVkMiBzb2MgaW5mb3JtYXRpb24gc3RydWN0DQo+ICsgKiBAc3RhcnR1cF90aW1l OglkZXZpY2Ugc3RhcnR1cCB0aW1lDQo+ICsgKiBAbWluX3NhbXBsZV9yYXRlOgltaW5pbXVtIHNh bXBsZSByYXRlIGluIEh6DQo+ICsgKiBAbWF4X3NhbXBsZV9yYXRlOgltYXhpbXVtIHNhbXBsZSBy YXRlIGluIEh6DQo+ICsgKiBAcGxhdGZvcm06CQlwb2ludGVyIHRvIHRoZSBwbGF0Zm9ybSBzdHJ1 Y3R1cmUNCj4gKyAqLw0KPiAgIHN0cnVjdCBhdDkxX2FkY19zb2NfaW5mbyB7DQo+ICAgCXVuc2ln bmVkCQkJc3RhcnR1cF90aW1lOw0KPiAgIAl1bnNpZ25lZAkJCW1pbl9zYW1wbGVfcmF0ZTsNCj4g ICAJdW5zaWduZWQJCQltYXhfc2FtcGxlX3JhdGU7DQo+ICsJY29uc3Qgc3RydWN0IGF0OTFfYWRj X3BsYXRmb3JtCSpwbGF0Zm9ybTsNCj4gICB9Ow0KPiAgIA0KPiAgIHN0cnVjdCBhdDkxX2FkY190 cmlnZ2VyIHsNCj4gQEAgLTM4Miw2ICs0MzIsMTUgQEAgc3RydWN0IGF0OTFfYWRjX3RvdWNoIHsN Cj4gICAJc3RydWN0IHdvcmtfc3RydWN0CQl3b3JrcTsNCj4gICB9Ow0KPiAgIA0KPiArLyoNCj4g KyAqIEJ1ZmZlciBzaXplIHJlcXVpcmVtZW50czoNCj4gKyAqIE5vIGNoYW5uZWxzICogYnl0ZXNf cGVyX2NoYW5uZWwoMikgKyB0aW1lc3RhbXAgYnl0ZXMgKDgpDQo+ICsgKiBEaXZpZGVkIGJ5IDIg YmVjYXVzZSB3ZSBuZWVkIGhhbGYgd29yZHMuDQo+ICsgKiBXZSBhc3N1bWUgMzIgY2hhbm5lbHMg Zm9yIG5vdywgaGFzIHRvIGJlIGluY3JlYXNlZCBpZiBuZWVkZWQuDQo+ICsgKiBOb2JvZHkgbWlu ZHMgYSBidWZmZXIgYmVpbmcgdG9vIGJpZy4NCj4gKyAqLw0KPiArI2RlZmluZSBBVDkxX0JVRkZF Ul9NQVhfSFdPUkRTICgoMzIgKiAyICsgOCkgLyAyKQ0KPiArDQo+ICAgc3RydWN0IGF0OTFfYWRj X3N0YXRlIHsNCj4gICAJdm9pZCBfX2lvbWVtCQkJKmJhc2U7DQo+ICAgCWludAkJCQlpcnE7DQo+ IEBAIC00MzcsMjkgKzQ5Niw1MSBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGF0OTFfYWRjX3RyaWdn ZXIgYXQ5MV9hZGNfdHJpZ2dlcl9saXN0W10gPSB7DQo+ICAgCX0sDQo+ICAgfTsNCj4gICANCj4g LXN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3BlYyBhdDkxX2FkY19jaGFubmVsc1tdID0g ew0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSgwLCAweDUwKSwNCj4gLQlBVDkxX1NBTUE1 RDJfQ0hBTl9TSU5HTEUoMSwgMHg1NCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDIs IDB4NTgpLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSgzLCAweDVjKSwNCj4gLQlBVDkx X1NBTUE1RDJfQ0hBTl9TSU5HTEUoNCwgMHg2MCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fU0lO R0xFKDUsIDB4NjQpLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSg2LCAweDY4KSwNCj4g LQlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoNywgMHg2YyksDQo+IC0JQVQ5MV9TQU1BNUQyX0NI QU5fU0lOR0xFKDgsIDB4NzApLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSg5LCAweDc0 KSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoMTAsIDB4NzgpLA0KPiAtCUFUOTFfU0FN QTVEMl9DSEFOX1NJTkdMRSgxMSwgMHg3YyksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fRElGRigw LCAxLCAweDUwKSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDIsIDMsIDB4NTgpLA0KPiAt CUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoNCwgNSwgMHg2MCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NI QU5fRElGRig2LCA3LCAweDY4KSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDgsIDksIDB4 NzApLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoMTAsIDExLCAweDc4KSwNCj4gLQlJSU9f Q0hBTl9TT0ZUX1RJTUVTVEFNUChBVDkxX1NBTUE1RDJfVElNRVNUQU1QX0NIQU5fSURYKSwNCj4g LQlBVDkxX1NBTUE1RDJfQ0hBTl9UT1VDSChBVDkxX1NBTUE1RDJfVE9VQ0hfWF9DSEFOX0lEWCwg IngiLCBJSU9fTU9EX1gpLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX1RPVUNIKEFUOTFfU0FNQTVE Ml9UT1VDSF9ZX0NIQU5fSURYLCAieSIsIElJT19NT0RfWSksDQo+IC0JQVQ5MV9TQU1BNUQyX0NI QU5fUFJFU1NVUkUoQVQ5MV9TQU1BNUQyX1RPVUNIX1BfQ0hBTl9JRFgsICJwcmVzc3VyZSIpLA0K PiArc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGF0OTFfc2FtYTVkMl9hZGNfY2hh bm5lbHNbXSA9IHsNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoMCwgMCwgMHg1MCksDQo+ ICsJQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDEsIDEsIDB4NTQpLA0KPiArCUFUOTFfU0FNQTVE Ml9DSEFOX1NJTkdMRSgyLCAyLCAweDU4KSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUo MywgMywgMHg1YyksDQo+ICsJQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDQsIDQsIDB4NjApLA0K PiArCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSg1LCA1LCAweDY0KSwNCj4gKwlBVDkxX1NBTUE1 RDJfQ0hBTl9TSU5HTEUoNiwgNiwgMHg2OCksDQo+ICsJQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xF KDcsIDcsIDB4NmMpLA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSg4LCA4LCAweDcwKSwN Cj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoOSwgOSwgMHg3NCksDQo+ICsJQVQ5MV9TQU1B NUQyX0NIQU5fU0lOR0xFKDEwLCAxMCwgMHg3OCksDQo+ICsJQVQ5MV9TQU1BNUQyX0NIQU5fU0lO R0xFKDExLCAxMSwgMHg3YyksDQo+ICsJLyogb3JpZ2luYWwgQUJJIGhhcyB0aGUgZGlmZmVyZW50 aWFsIGNoYW5uZWxzIHdpdGggYSBnYXAgaW4gYmV0d2VlbiAqLw0KPiArCUFUOTFfU0FNQTVEMl9D SEFOX0RJRkYoMTIsIDAsIDEsIDB4NTApLA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoMTQs IDIsIDMsIDB4NTgpLA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoMTYsIDQsIDUsIDB4NjAp LA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoMTgsIDYsIDcsIDB4NjgpLA0KPiArCUFUOTFf U0FNQTVEMl9DSEFOX0RJRkYoMjAsIDgsIDksIDB4NzApLA0KPiArCUFUOTFfU0FNQTVEMl9DSEFO X0RJRkYoMjIsIDEwLCAxMSwgMHg3OCksDQo+ICsJSUlPX0NIQU5fU09GVF9USU1FU1RBTVAoMjMp LA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX1RPVUNIKDI0LCAieCIsIElJT19NT0RfWCksDQo+ICsJ QVQ5MV9TQU1BNUQyX0NIQU5fVE9VQ0goMjUsICJ5IiwgSUlPX01PRF9ZKSwNCj4gKwlBVDkxX1NB TUE1RDJfQ0hBTl9QUkVTU1VSRSgyNiwgInByZXNzdXJlIiksDQo+ICt9Ow0KPiArDQo+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IGF0OTFfYWRjX3BsYXRmb3JtIHNhbWE1ZDJfcGxhdGZvcm0gPSB7DQo+ ICsJLmxheW91dCA9ICZzYW1hNWQyX2xheW91dCwNCj4gKwkuYWRjX2NoYW5uZWxzID0gJmF0OTFf c2FtYTVkMl9hZGNfY2hhbm5lbHMsDQo+ICsjZGVmaW5lIEFUOTFfU0FNQTVEMl9TSU5HTEVfQ0hB Tl9DTlQgMTINCj4gKyNkZWZpbmUgQVQ5MV9TQU1BNUQyX0RJRkZfQ0hBTl9DTlQgNg0KPiArCS5u cl9jaGFubmVscyA9IEFUOTFfU0FNQTVEMl9TSU5HTEVfQ0hBTl9DTlQgKw0KPiArCQkgICAgICAg QVQ5MV9TQU1BNUQyX0RJRkZfQ0hBTl9DTlQsDQo+ICsjZGVmaW5lIEFUOTFfU0FNQTVEMl9UT1VD SF9YX0NIQU5fSURYCShBVDkxX1NBTUE1RDJfU0lOR0xFX0NIQU5fQ05UICsgXA0KPiArCQkJCQlB VDkxX1NBTUE1RDJfRElGRl9DSEFOX0NOVCAqIDIpDQo+ICsJLnRvdWNoX2NoYW5feCA9IEFUOTFf U0FNQTVEMl9UT1VDSF9YX0NIQU5fSURYLA0KPiArI2RlZmluZSBBVDkxX1NBTUE1RDJfVE9VQ0hf WV9DSEFOX0lEWAkoQVQ5MV9TQU1BNUQyX1RPVUNIX1hfQ0hBTl9JRFggKyAxKQ0KPiArCS50b3Vj aF9jaGFuX3kgPSBBVDkxX1NBTUE1RDJfVE9VQ0hfWV9DSEFOX0lEWCwNCj4gKyNkZWZpbmUgQVQ5 MV9TQU1BNUQyX1RPVUNIX1BfQ0hBTl9JRFgJKEFUOTFfU0FNQTVEMl9UT1VDSF9ZX0NIQU5fSURY ICsgMSkNCj4gKwkudG91Y2hfY2hhbl9wID0gQVQ5MV9TQU1BNUQyX1RPVUNIX1BfQ0hBTl9JRFgs DQo+ICsjZGVmaW5lIEFUOTFfU0FNQTVEMl9NQVhfQ0hBTl9JRFgJQVQ5MV9TQU1BNUQyX1RPVUNI X1BfQ0hBTl9JRFgNCj4gKwkubWF4X2NoYW5uZWxzID0gQVJSQVlfU0laRShhdDkxX3NhbWE1ZDJf YWRjX2NoYW5uZWxzKSwNCj4gKwkubWF4X2luZGV4ID0gQVQ5MV9TQU1BNUQyX01BWF9DSEFOX0lE WCwNCj4gKyNkZWZpbmUgQVQ5MV9TQU1BNUQyX0hXX1RSSUdfQ05UCTMNCj4gKwkuaHdfdHJpZ19j bnQgPSBBVDkxX1NBTUE1RDJfSFdfVFJJR19DTlQsDQo+ICAgfTsNCj4gICANCj4gICBzdGF0aWMg aW50IGF0OTFfYWRjX2NoYW5feGxhdGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwgaW50IGNo YW4pDQo+IEBAIC00OTMsNiArNTc0LDcgQEAgc3RhdGljIHVuc2lnbmVkIGludCBhdDkxX2FkY19h Y3RpdmVfc2Nhbl9tYXNrX3RvX3JlZyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIHsN Cj4gICAJdTMyIG1hc2sgPSAwOw0KPiAgIAl1OCBiaXQ7DQo+ICsJc3RydWN0IGF0OTFfYWRjX3N0 YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICAgDQo+ICAgCWZvcl9lYWNoX3NldF9i aXQoYml0LCBpbmRpb19kZXYtPmFjdGl2ZV9zY2FuX21hc2ssDQo+ICAgCQkJIGluZGlvX2Rldi0+ bnVtX2NoYW5uZWxzKSB7DQo+IEBAIC01MDEsMTMgKzU4MywxMyBAQCBzdGF0aWMgdW5zaWduZWQg aW50IGF0OTFfYWRjX2FjdGl2ZV9zY2FuX21hc2tfdG9fcmVnKHN0cnVjdCBpaW9fZGV2ICppbmRp b19kZXYpDQo+ICAgCQltYXNrIHw9IEJJVChjaGFuLT5jaGFubmVsKTsNCj4gICAJfQ0KPiAgIA0K PiAtCXJldHVybiBtYXNrICYgR0VOTUFTSygxMSwgMCk7DQo+ICsJcmV0dXJuIG1hc2sgJiBHRU5N QVNLKHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bnJfY2hhbm5lbHMsIDApOw0KPiAgIH0NCj4gICAN Cj4gICBzdGF0aWMgdm9pZCBhdDkxX2FkY19jb25maWdfZW1yKHN0cnVjdCBhdDkxX2FkY19zdGF0 ZSAqc3QpDQo+ICAgew0KPiAgIAkvKiBjb25maWd1cmUgdGhlIGV4dGVuZGVkIG1vZGUgcmVnaXN0 ZXIgKi8NCj4gLQl1bnNpZ25lZCBpbnQgZW1yID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FN QTVEMl9FTVIpOw0KPiArCXVuc2lnbmVkIGludCBlbXIgPSBhdDkxX2FkY19yZWFkbChzdCwgRU1S KTsNCj4gICANCj4gICAJLyogc2VsZWN0IG92ZXJzYW1wbGluZyBwZXIgc2luZ2xlIHRyaWdnZXIg ZXZlbnQgKi8NCj4gICAJZW1yIHw9IEFUOTFfU0FNQTVEMl9FTVJfQVNURSgxKTsNCj4gQEAgLTUz MSw3ICs2MTMsNyBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY19jb25maWdfZW1yKHN0cnVjdCBhdDkx X2FkY19zdGF0ZSAqc3QpDQo+ICAgCQlicmVhazsNCj4gICAJfQ0KPiAgIA0KPiAtCWF0OTFfYWRj X3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0VNUiwgZW1yKTsNCj4gKwlhdDkxX2FkY193cml0ZWwo c3QsIEVNUiwgZW1yKTsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIGludCBhdDkxX2FkY19hZGp1 c3RfdmFsX29zcihzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0LCBpbnQgKnZhbCkNCj4gQEAgLTU4 NCw5ICs2NjYsOSBAQCBzdGF0aWMgaW50IGF0OTFfYWRjX2NvbmZpZ3VyZV90b3VjaChzdHJ1Y3Qg YXQ5MV9hZGNfc3RhdGUgKnN0LCBib29sIHN0YXRlKQ0KPiAgIA0KPiAgIAlpZiAoIXN0YXRlKSB7 DQo+ICAgCQkvKiBkaXNhYmxpbmcgdG91Y2ggSVJRcyBhbmQgc2V0dGluZyBtb2RlIHRvIG5vIHRv dWNoIGVuYWJsZWQgKi8NCj4gLQkJYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfSURS LA0KPiArCQlhdDkxX2FkY193cml0ZWwoc3QsIElEUiwNCj4gICAJCQkJQVQ5MV9TQU1BNUQyX0lF Ul9QRU4gfCBBVDkxX1NBTUE1RDJfSUVSX05PUEVOKTsNCj4gLQkJYXQ5MV9hZGNfd3JpdGVsKHN0 LCBBVDkxX1NBTUE1RDJfVFNNUiwgMCk7DQo+ICsJCWF0OTFfYWRjX3dyaXRlbChzdCwgVFNNUiwg MCk7DQo+ICAgCQlyZXR1cm4gMDsNCj4gICAJfQ0KPiAgIAkvKg0KPiBAQCAtNjEyLDI2ICs2OTQs MjYgQEAgc3RhdGljIGludCBhdDkxX2FkY19jb25maWd1cmVfdG91Y2goc3RydWN0IGF0OTFfYWRj X3N0YXRlICpzdCwgYm9vbCBzdGF0ZSkNCj4gICAJdHNtciB8PSBBVDkxX1NBTUE1RDJfVFNNUl9Q RU5ERVRfRU5BOw0KPiAgIAl0c21yIHw9IEFUOTFfU0FNQTVEMl9UU01SX1RTRlJFUSgyKSAmIEFU OTFfU0FNQTVEMl9UU01SX1RTRlJFUV9NQVNLOw0KPiAgIA0KPiAtCWF0OTFfYWRjX3dyaXRlbChz dCwgQVQ5MV9TQU1BNUQyX1RTTVIsIHRzbXIpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgVFNN UiwgdHNtcik7DQo+ICAgDQo+IC0JYWNyID0gIGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1 RDJfQUNSKTsNCj4gKwlhY3IgPSAgYXQ5MV9hZGNfcmVhZGwoc3QsIEFDUik7DQo+ICAgCWFjciAm PSB+QVQ5MV9TQU1BNUQyX0FDUl9QRU5ERVRTRU5TX01BU0s7DQo+ICAgCWFjciB8PSAweDAyICYg QVQ5MV9TQU1BNUQyX0FDUl9QRU5ERVRTRU5TX01BU0s7DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0 LCBBVDkxX1NBTUE1RDJfQUNSLCBhY3IpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgQUNSLCBh Y3IpOw0KPiAgIA0KPiAgIAkvKiBTYW1wbGUgUGVyaW9kIFRpbWUgPSAoVFJHUEVSICsgMSkgLyBB RENDbG9jayAqLw0KPiAgIAlzdC0+dG91Y2hfc3Quc2FtcGxlX3BlcmlvZF92YWwgPQ0KPiAgIAkJ CQkgcm91bmRfdXAoKEFUOTFfU0FNQTVEMl9UT1VDSF9TQU1QTEVfUEVSSU9EX1VTICoNCj4gICAJ CQkJIGNsa19raHogLyAxMDAwKSAtIDEsIDEpOw0KPiAgIAkvKiBlbmFibGUgcGVuIGRldGVjdCBJ UlEgKi8NCj4gLQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRVIsIEFUOTFfU0FN QTVEMl9JRVJfUEVOKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIElFUiwgQVQ5MV9TQU1BNUQy X0lFUl9QRU4pOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGlj IHUxNiBhdDkxX2FkY190b3VjaF9wb3Moc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCwgaW50IHJl ZykNCj4gICB7DQo+IC0JdTMyIHZhbDsNCj4gKwl1MzIgdmFsID0gMDsNCj4gICAJdTMyIHNjYWxl LCByZXN1bHQsIHBvczsNCj4gICANCj4gICAJLyoNCj4gQEAgLTY0MCw3ICs3MjIsMTEgQEAgc3Rh dGljIHUxNiBhdDkxX2FkY190b3VjaF9wb3Moc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCwgaW50 IHJlZykNCj4gICAJICogbWF4ID0gMl5BVDkxX1NBTUE1RDJfTUFYX1BPU19CSVRTIC0gMQ0KPiAg IAkgKi8NCj4gICAJLyogZmlyc3QgaGFsZiBvZiByZWdpc3RlciBpcyB0aGUgeCBvciB5LCBzZWNv bmQgaGFsZiBpcyB0aGUgc2NhbGUgKi8NCj4gLQl2YWwgPSBhdDkxX2FkY19yZWFkbChzdCwgcmVn KTsNCj4gKwlpZiAocmVnID09IHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0LT5YUE9TUikN Cj4gKwkJdmFsID0gYXQ5MV9hZGNfcmVhZGwoc3QsIFhQT1NSKTsNCj4gKwllbHNlIGlmIChyZWcg PT0gc3QtPnNvY19pbmZvLnBsYXRmb3JtLT5sYXlvdXQtPllQT1NSKQ0KPiArCQl2YWwgPSBhdDkx X2FkY19yZWFkbChzdCwgWVBPU1IpOw0KPiArDQo+ICAgCWlmICghdmFsKQ0KPiAgIAkJZGV2X2Ri Zygmc3QtPmluZGlvX2Rldi0+ZGV2LCAicG9zIGlzIDBcbiIpOw0KPiAgIA0KPiBAQCAtNjU4LDEz ICs3NDQsMTMgQEAgc3RhdGljIHUxNiBhdDkxX2FkY190b3VjaF9wb3Moc3RydWN0IGF0OTFfYWRj X3N0YXRlICpzdCwgaW50IHJlZykNCj4gICANCj4gICBzdGF0aWMgdTE2IGF0OTFfYWRjX3RvdWNo X3hfcG9zKHN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QpDQo+ICAgew0KPiAtCXN0LT50b3VjaF9z dC54X3BvcyA9IGF0OTFfYWRjX3RvdWNoX3BvcyhzdCwgQVQ5MV9TQU1BNUQyX1hQT1NSKTsNCj4g KwlzdC0+dG91Y2hfc3QueF9wb3MgPSBhdDkxX2FkY190b3VjaF9wb3Moc3QsIHN0LT5zb2NfaW5m by5wbGF0Zm9ybS0+bGF5b3V0LT5YUE9TUik7DQo+ICAgCXJldHVybiBzdC0+dG91Y2hfc3QueF9w b3M7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB1MTYgYXQ5MV9hZGNfdG91Y2hfeV9wb3Moc3Ry dWN0IGF0OTFfYWRjX3N0YXRlICpzdCkNCj4gICB7DQo+IC0JcmV0dXJuIGF0OTFfYWRjX3RvdWNo X3BvcyhzdCwgQVQ5MV9TQU1BNUQyX1lQT1NSKTsNCj4gKwlyZXR1cm4gYXQ5MV9hZGNfdG91Y2hf cG9zKHN0LCBzdC0+c29jX2luZm8ucGxhdGZvcm0tPmxheW91dC0+WVBPU1IpOw0KPiAgIH0NCj4g ICANCj4gICBzdGF0aWMgdTE2IGF0OTFfYWRjX3RvdWNoX3ByZXNzdXJlKHN0cnVjdCBhdDkxX2Fk Y19zdGF0ZSAqc3QpDQo+IEBAIC02NzYsNyArNzYyLDcgQEAgc3RhdGljIHUxNiBhdDkxX2FkY190 b3VjaF9wcmVzc3VyZShzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0KQ0KPiAgIAl1MzIgZmFjdG9y ID0gMTAwMDsNCj4gICANCj4gICAJLyogY2FsY3VsYXRlIHRoZSBwcmVzc3VyZSAqLw0KPiAtCXZh bCA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfUFJFU1NSKTsNCj4gKwl2YWwgPSBh dDkxX2FkY19yZWFkbChzdCwgUFJFU1NSKTsNCj4gICAJejEgPSB2YWwgJiBBVDkxX1NBTUE1RDJf WFlaX01BU0s7DQo+ICAgCXoyID0gKHZhbCA+PiAxNikgJiBBVDkxX1NBTUE1RDJfWFlaX01BU0s7 DQo+ICAgDQo+IEBAIC03MDAsOSArNzg2LDkgQEAgc3RhdGljIGludCBhdDkxX2FkY19yZWFkX3Bv c2l0aW9uKHN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QsIGludCBjaGFuLCB1MTYgKnZhbCkNCj4g ICAJKnZhbCA9IDA7DQo+ICAgCWlmICghc3QtPnRvdWNoX3N0LnRvdWNoaW5nKQ0KPiAgIAkJcmV0 dXJuIC1FTk9EQVRBOw0KPiAtCWlmIChjaGFuID09IEFUOTFfU0FNQTVEMl9UT1VDSF9YX0NIQU5f SURYKQ0KPiArCWlmIChjaGFuID09IHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+dG91Y2hfY2hhbl94 KQ0KPiAgIAkJKnZhbCA9IGF0OTFfYWRjX3RvdWNoX3hfcG9zKHN0KTsNCj4gLQllbHNlIGlmIChj aGFuID09IEFUOTFfU0FNQTVEMl9UT1VDSF9ZX0NIQU5fSURYKQ0KPiArCWVsc2UgaWYgKGNoYW4g PT0gc3QtPnNvY19pbmZvLnBsYXRmb3JtLT50b3VjaF9jaGFuX3kpDQo+ICAgCQkqdmFsID0gYXQ5 MV9hZGNfdG91Y2hfeV9wb3Moc3QpOw0KPiAgIAllbHNlDQo+ICAgCQlyZXR1cm4gLUVOT0RBVEE7 DQo+IEBAIC03MTUsNyArODAxLDcgQEAgc3RhdGljIGludCBhdDkxX2FkY19yZWFkX3ByZXNzdXJl KHN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QsIGludCBjaGFuLCB1MTYgKnZhbCkNCj4gICAJKnZh bCA9IDA7DQo+ICAgCWlmICghc3QtPnRvdWNoX3N0LnRvdWNoaW5nKQ0KPiAgIAkJcmV0dXJuIC1F Tk9EQVRBOw0KPiAtCWlmIChjaGFuID09IEFUOTFfU0FNQTVEMl9UT1VDSF9QX0NIQU5fSURYKQ0K PiArCWlmIChjaGFuID09IHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+dG91Y2hfY2hhbl95KQ0KDQpD b3VsZCB5b3UgcGxlYXNlIHRpZHkgdXAgaGVyZSBiZWZvcmUgYXBwbHlpbmcsIHRoZXJlIGlzIGEg c2xpcCBvbiBteSANCnNpZGUsIGl0IHNob3VsZCBiZSB0aGUgcHJlc3N1cmUgY2hhbm5lbCA6DQoJ aWYgKGNoYW4gPT0gc3QtPnNvY19pbmZvLnBsYXRmb3JtLT50b3VjaF9jaGFuX3ApDQoNCihub3Qg dGhlIFkgY2hhbm5lbCApDQoNClRoYW5rcyBhbmQgc29ycnkgIQ0KDQoNCj4gICAJCSp2YWwgPSBh dDkxX2FkY190b3VjaF9wcmVzc3VyZShzdCk7DQo+ICAgCWVsc2UNCj4gICAJCXJldHVybiAtRU5P REFUQTsNCj4gQEAgLTcyNyw3ICs4MTMsNyBAQCBzdGF0aWMgaW50IGF0OTFfYWRjX2NvbmZpZ3Vy ZV90cmlnZ2VyKHN0cnVjdCBpaW9fdHJpZ2dlciAqdHJpZywgYm9vbCBzdGF0ZSkNCj4gICB7DQo+ ICAgCXN0cnVjdCBpaW9fZGV2ICppbmRpbyA9IGlpb190cmlnZ2VyX2dldF9kcnZkYXRhKHRyaWcp Ow0KPiAgIAlzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW8pOw0KPiAt CXUzMiBzdGF0dXMgPSBhdDkxX2FkY19yZWFkbChzdCwgQVQ5MV9TQU1BNUQyX1RSR1IpOw0KPiAr CXUzMiBzdGF0dXMgPSBhdDkxX2FkY19yZWFkbChzdCwgVFJHUik7DQo+ICAgDQo+ICAgCS8qIGNs ZWFyIFRSR01PRCAqLw0KPiAgIAlzdGF0dXMgJj0gfkFUOTFfU0FNQTVEMl9UUkdSX1RSR01PRF9N QVNLOw0KPiBAQCAtNzM2LDcgKzgyMiw3IEBAIHN0YXRpYyBpbnQgYXQ5MV9hZGNfY29uZmlndXJl X3RyaWdnZXIoc3RydWN0IGlpb190cmlnZ2VyICp0cmlnLCBib29sIHN0YXRlKQ0KPiAgIAkJc3Rh dHVzIHw9IHN0LT5zZWxlY3RlZF90cmlnLT50cmdtb2RfdmFsdWU7DQo+ICAgDQo+ICAgCS8qIHNl dC91bnNldCBodyB0cmlnZ2VyICovDQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1 RDJfVFJHUiwgc3RhdHVzKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIFRSR1IsIHN0YXR1cyk7 DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gQEAgLTc1Myw3ICs4MzksNyBAQCBzdGF0 aWMgdm9pZCBhdDkxX2FkY19yZWVuYWJsZV90cmlnZ2VyKHN0cnVjdCBpaW9fdHJpZ2dlciAqdHJp ZykNCj4gICAJZW5hYmxlX2lycShzdC0+aXJxKTsNCj4gICANCj4gICAJLyogTmVlZGVkIHRvIEFD SyB0aGUgRFJEWSBpbnRlcnJ1cHRpb24gKi8NCj4gLQlhdDkxX2FkY19yZWFkbChzdCwgQVQ5MV9T QU1BNUQyX0xDRFIpOw0KPiArCWF0OTFfYWRjX3JlYWRsKHN0LCBMQ0RSKTsNCj4gICB9DQo+ICAg DQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fdHJpZ2dlcl9vcHMgYXQ5MV9hZGNfdHJpZ2dl cl9vcHMgPSB7DQo+IEBAIC04NDgsNyArOTM0LDcgQEAgc3RhdGljIGludCBhdDkxX2FkY19kbWFf c3RhcnQoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikNCj4gICAJfQ0KPiAgIA0KPiAgIAkvKiBl bmFibGUgZ2VuZXJhbCBvdmVycnVuIGVycm9yIHNpZ25hbGluZyAqLw0KPiAtCWF0OTFfYWRjX3dy aXRlbChzdCwgQVQ5MV9TQU1BNUQyX0lFUiwgQVQ5MV9TQU1BNUQyX0lFUl9HT1ZSRSk7DQo+ICsJ YXQ5MV9hZGNfd3JpdGVsKHN0LCBJRVIsIEFUOTFfU0FNQTVEMl9JRVJfR09WUkUpOw0KPiAgIAkv KiBJc3N1ZSBwZW5kaW5nIERNQSByZXF1ZXN0cyAqLw0KPiAgIAlkbWFfYXN5bmNfaXNzdWVfcGVu ZGluZyhzdC0+ZG1hX3N0LmRtYV9jaGFuKTsNCj4gICANCj4gQEAgLTg3OCw3ICs5NjQsNyBAQCBz dGF0aWMgYm9vbCBhdDkxX2FkY19jdXJyZW50X2NoYW5faXNfdG91Y2goc3RydWN0IGlpb19kZXYg KmluZGlvX2RldikNCj4gICANCj4gICAJcmV0dXJuICEhYml0bWFwX3N1YnNldChpbmRpb19kZXYt PmFjdGl2ZV9zY2FuX21hc2ssDQo+ICAgCQkJICAgICAgICZzdC0+dG91Y2hfc3QuY2hhbm5lbHNf Yml0bWFzaywNCj4gLQkJCSAgICAgICBBVDkxX1NBTUE1RDJfTUFYX0NIQU5fSURYICsgMSk7DQo+ ICsJCQkgICAgICAgc3QtPnNvY19pbmZvLnBsYXRmb3JtLT5tYXhfaW5kZXggKyAxKTsNCj4gICB9 DQo+ICAgDQo+ICAgc3RhdGljIGludCBhdDkxX2FkY19idWZmZXJfcHJlcGFyZShzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2KQ0KPiBAQCAtOTE1LDcgKzEwMDEsNyBAQCBzdGF0aWMgaW50IGF0OTFf YWRjX2J1ZmZlcl9wcmVwYXJlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ICAgCQkgICAg Y2hhbi0+dHlwZSA9PSBJSU9fUFJFU1NVUkUpDQo+ICAgCQkJY29udGludWU7DQo+ICAgDQo+IC0J CWNvciA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfQ09SKTsNCj4gKwkJY29yID0g YXQ5MV9hZGNfcmVhZGwoc3QsIENPUik7DQo+ICAgDQo+ICAgCQlpZiAoY2hhbi0+ZGlmZmVyZW50 aWFsKQ0KPiAgIAkJCWNvciB8PSAoQklUKGNoYW4tPmNoYW5uZWwpIHwgQklUKGNoYW4tPmNoYW5u ZWwyKSkgPDwNCj4gQEAgLTkyNCwxMyArMTAxMCwxMyBAQCBzdGF0aWMgaW50IGF0OTFfYWRjX2J1 ZmZlcl9wcmVwYXJlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ICAgCQkJY29yICY9IH4o QklUKGNoYW4tPmNoYW5uZWwpIDw8DQo+ICAgCQkJICAgICAgIEFUOTFfU0FNQTVEMl9DT1JfRElG Rl9PRkZTRVQpOw0KPiAgIA0KPiAtCQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9D T1IsIGNvcik7DQo+ICsJCWF0OTFfYWRjX3dyaXRlbChzdCwgQ09SLCBjb3IpOw0KPiAgIA0KPiAt CQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9DSEVSLCBCSVQoY2hhbi0+Y2hhbm5l bCkpOw0KPiArCQlhdDkxX2FkY193cml0ZWwoc3QsIENIRVIsIEJJVChjaGFuLT5jaGFubmVsKSk7 DQo+ICAgCX0NCj4gICANCj4gICAJaWYgKGF0OTFfYWRjX2J1ZmZlcl9jaGVja191c2VfaXJxKGlu ZGlvX2Rldiwgc3QpKQ0KPiAtCQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRVIs IEFUOTFfU0FNQTVEMl9JRVJfRFJEWSk7DQo+ICsJCWF0OTFfYWRjX3dyaXRlbChzdCwgSUVSLCBB VDkxX1NBTUE1RDJfSUVSX0RSRFkpOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+IEBA IC05NjYsMTcgKzEwNTIsMTcgQEAgc3RhdGljIGludCBhdDkxX2FkY19idWZmZXJfcG9zdGRpc2Fi bGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikNCj4gICAJCSAgICBjaGFuLT50eXBlID09IElJ T19QUkVTU1VSRSkNCj4gICAJCQljb250aW51ZTsNCj4gICANCj4gLQkJYXQ5MV9hZGNfd3JpdGVs KHN0LCBBVDkxX1NBTUE1RDJfQ0hEUiwgQklUKGNoYW4tPmNoYW5uZWwpKTsNCj4gKwkJYXQ5MV9h ZGNfd3JpdGVsKHN0LCBDSERSLCBCSVQoY2hhbi0+Y2hhbm5lbCkpOw0KPiAgIA0KPiAgIAkJaWYg KHN0LT5kbWFfc3QuZG1hX2NoYW4pDQo+IC0JCQlhdDkxX2FkY19yZWFkbChzdCwgY2hhbi0+YWRk cmVzcyk7DQo+ICsJCQlhdDkxX2FkY19yZWFkX2NoYW4oc3QsIGNoYW4tPmFkZHJlc3MpOw0KPiAg IAl9DQo+ICAgDQo+ICAgCWlmIChhdDkxX2FkY19idWZmZXJfY2hlY2tfdXNlX2lycShpbmRpb19k ZXYsIHN0KSkNCj4gLQkJYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfSURSLCBBVDkx X1NBTUE1RDJfSUVSX0RSRFkpOw0KPiArCQlhdDkxX2FkY193cml0ZWwoc3QsIElEUiwgQVQ5MV9T QU1BNUQyX0lFUl9EUkRZKTsNCj4gICANCj4gICAJLyogcmVhZCBvdmVyZmxvdyByZWdpc3RlciB0 byBjbGVhciBwb3NzaWJsZSBvdmVyZmxvdyBzdGF0dXMgKi8NCj4gLQlhdDkxX2FkY19yZWFkbChz dCwgQVQ5MV9TQU1BNUQyX09WRVIpOw0KPiArCWF0OTFfYWRjX3JlYWRsKHN0LCBPVkVSKTsNCj4g ICANCj4gICAJLyogaWYgd2UgYXJlIHVzaW5nIERNQSB3ZSBtdXN0IGNsZWFyIHJlZ2lzdGVycyBh bmQgZW5kIERNQSAqLw0KPiAgIAlpZiAoc3QtPmRtYV9zdC5kbWFfY2hhbikNCj4gQEAgLTEwMjQs NyArMTExMCw3IEBAIHN0YXRpYyB2b2lkIGF0OTFfYWRjX3RyaWdnZXJfaGFuZGxlcl9ub2RtYShz dHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiAgIAkgKiBDaGVjayBpZiB0aGUgY29udmVyc2lv biBpcyByZWFkeS4gSWYgbm90LCB3YWl0IGEgbGl0dGxlIGJpdCwgYW5kDQo+ICAgCSAqIGluIGNh c2Ugb2YgdGltZW91dCBleGl0IHdpdGggYW4gZXJyb3IuDQo+ICAgCSAqLw0KPiAtCXdoaWxlICgo YXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVEMl9JU1IpICYgbWFzaykgIT0gbWFzayAmJg0K PiArCXdoaWxlICgoYXQ5MV9hZGNfcmVhZGwoc3QsIElTUikgJiBtYXNrKSAhPSBtYXNrICYmDQo+ ICAgCSAgICAgICB0aW1lb3V0KSB7DQo+ICAgCQl1c2xlZXBfcmFuZ2UoNTAsIDEwMCk7DQo+ICAg CQl0aW1lb3V0LS07DQo+IEBAIC0xMDUyLDcgKzExMzgsNyBAQCBzdGF0aWMgdm9pZCBhdDkxX2Fk Y190cmlnZ2VyX2hhbmRsZXJfbm9kbWEoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwNCj4gICAJ CSAqIFRodXMsIGVtaXQgYSB3YXJuaW5nLg0KPiAgIAkJICovDQo+ICAgCQlpZiAoY2hhbi0+dHlw ZSA9PSBJSU9fVk9MVEFHRSkgew0KPiAtCQkJdmFsID0gYXQ5MV9hZGNfcmVhZGwoc3QsIGNoYW4t PmFkZHJlc3MpOw0KPiArCQkJdmFsID0gYXQ5MV9hZGNfcmVhZF9jaGFuKHN0LCBjaGFuLT5hZGRy ZXNzKTsNCj4gICAJCQlhdDkxX2FkY19hZGp1c3RfdmFsX29zcihzdCwgJnZhbCk7DQo+ICAgCQkJ c3QtPmJ1ZmZlcltpXSA9IHZhbDsNCj4gICAJCX0gZWxzZSB7DQo+IEBAIC0xMDczLDcgKzExNTks NyBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY190cmlnZ2VyX2hhbmRsZXJfZG1hKHN0cnVjdCBpaW9f ZGV2ICppbmRpb19kZXYpDQo+ICAgCXM2NCBpbnRlcnZhbDsNCj4gICAJaW50IHNhbXBsZV9pbmRl eCA9IDAsIHNhbXBsZV9jb3VudCwgc2FtcGxlX3NpemU7DQo+ICAgDQo+IC0JdTMyIHN0YXR1cyA9 IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfSVNSKTsNCj4gKwl1MzIgc3RhdHVzID0g YXQ5MV9hZGNfcmVhZGwoc3QsIElTUik7DQo+ICAgCS8qIGlmIHdlIHJlYWNoZWQgdGhpcyBwb2lu dCwgd2UgY2Fubm90IHNhbXBsZSBmYXN0ZXIgKi8NCj4gICAJaWYgKHN0YXR1cyAmIEFUOTFfU0FN QTVEMl9JRVJfR09WUkUpDQo+ICAgCQlwcl9pbmZvX3JhdGVsaW1pdGVkKCIlczogY29udmVyc2lv biBvdmVycnVuIGRldGVjdGVkXG4iLA0KPiBAQCAtMTEyNSw3ICsxMjExLDcgQEAgc3RhdGljIGly cXJldHVybl90IGF0OTFfYWRjX3RyaWdnZXJfaGFuZGxlcihpbnQgaXJxLCB2b2lkICpwKQ0KPiAg IAkgKiBhY3R1YWxseSBwb2xsaW5nIHRoZSB0cmlnZ2VyIG5vdy4NCj4gICAJICovDQo+ICAgCWlm IChpaW9fdHJpZ2dlcl92YWxpZGF0ZV9vd25fZGV2aWNlKGluZGlvX2Rldi0+dHJpZywgaW5kaW9f ZGV2KSkNCj4gLQkJYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfQ1IsIEFUOTFfU0FN QTVEMl9DUl9TVEFSVCk7DQo+ICsJCWF0OTFfYWRjX3dyaXRlbChzdCwgQ1IsIEFUOTFfU0FNQTVE Ml9DUl9TVEFSVCk7DQo+ICAgDQo+ICAgCWlmIChzdC0+ZG1hX3N0LmRtYV9jaGFuKQ0KPiAgIAkJ YXQ5MV9hZGNfdHJpZ2dlcl9oYW5kbGVyX2RtYShpbmRpb19kZXYpOw0KPiBAQCAtMTE3MiwxMSAr MTI1OCwxMSBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY19zZXR1cF9zYW1wX2ZyZXEoc3RydWN0IGlp b19kZXYgKmluZGlvX2RldiwgdW5zaWduZWQgZnJlcSkNCj4gICAJc3RhcnR1cCA9IGF0OTFfYWRj X3N0YXJ0dXBfdGltZShzdC0+c29jX2luZm8uc3RhcnR1cF90aW1lLA0KPiAgIAkJCQkJZnJlcSAv IDEwMDApOw0KPiAgIA0KPiAtCW1yID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVEMl9N Uik7DQo+ICsJbXIgPSBhdDkxX2FkY19yZWFkbChzdCwgTVIpOw0KPiAgIAltciAmPSB+KEFUOTFf U0FNQTVEMl9NUl9TVEFSVFVQX01BU0sgfCBBVDkxX1NBTUE1RDJfTVJfUFJFU0NBTF9NQVNLKTsN Cj4gICAJbXIgfD0gQVQ5MV9TQU1BNUQyX01SX1NUQVJUVVAoc3RhcnR1cCk7DQo+ICAgCW1yIHw9 IEFUOTFfU0FNQTVEMl9NUl9QUkVTQ0FMKHByZXNjYWwpOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChz dCwgQVQ5MV9TQU1BNUQyX01SLCBtcik7DQo+ICsJYXQ5MV9hZGNfd3JpdGVsKHN0LCBNUiwgbXIp Ow0KPiAgIA0KPiAgIAlkZXZfZGJnKCZpbmRpb19kZXYtPmRldiwgImZyZXE6ICV1LCBzdGFydHVw OiAldSwgcHJlc2NhbDogJXVcbiIsDQo+ICAgCQlmcmVxLCBzdGFydHVwLCBwcmVzY2FsKTsNCj4g QEAgLTExOTYsNyArMTI4Miw3IEBAIHN0YXRpYyB2b2lkIGF0OTFfYWRjX3RvdWNoX2RhdGFfaGFu ZGxlcihzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIAlpbnQgaSA9IDA7DQo+ICAgDQo+ ICAgCWZvcl9lYWNoX3NldF9iaXQoYml0LCBpbmRpb19kZXYtPmFjdGl2ZV9zY2FuX21hc2ssDQo+ IC0JCQkgQVQ5MV9TQU1BNUQyX01BWF9DSEFOX0lEWCArIDEpIHsNCj4gKwkJCSBzdC0+c29jX2lu Zm8ucGxhdGZvcm0tPm1heF9pbmRleCArIDEpIHsNCj4gICAJCXN0cnVjdCBpaW9fY2hhbl9zcGVj IGNvbnN0ICpjaGFuID0NCj4gICAJCQkJCSBhdDkxX2FkY19jaGFuX2dldChpbmRpb19kZXYsIGJp dCk7DQo+ICAgDQo+IEBAIC0xMjIyLDEyICsxMzA4LDExIEBAIHN0YXRpYyB2b2lkIGF0OTFfYWRj X3RvdWNoX2RhdGFfaGFuZGxlcihzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIA0KPiAg IHN0YXRpYyB2b2lkIGF0OTFfYWRjX3Blbl9kZXRlY3RfaW50ZXJydXB0KHN0cnVjdCBhdDkxX2Fk Y19zdGF0ZSAqc3QpDQo+ICAgew0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQy X0lEUiwgQVQ5MV9TQU1BNUQyX0lFUl9QRU4pOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5 MV9TQU1BNUQyX0lFUiwgQVQ5MV9TQU1BNUQyX0lFUl9OT1BFTiB8DQo+ICsJYXQ5MV9hZGNfd3Jp dGVsKHN0LCBJRFIsIEFUOTFfU0FNQTVEMl9JRVJfUEVOKTsNCj4gKwlhdDkxX2FkY193cml0ZWwo c3QsIElFUiwgQVQ5MV9TQU1BNUQyX0lFUl9OT1BFTiB8DQo+ICAgCQkJQVQ5MV9TQU1BNUQyX0lF Ul9YUkRZIHwgQVQ5MV9TQU1BNUQyX0lFUl9ZUkRZIHwNCj4gICAJCQlBVDkxX1NBTUE1RDJfSUVS X1BSRFkpOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX1RSR1IsDQo+IC0J CQlBVDkxX1NBTUE1RDJfVFJHUl9UUkdNT0RfUEVSSU9ESUMgfA0KPiArCWF0OTFfYWRjX3dyaXRl bChzdCwgVFJHUiwgQVQ5MV9TQU1BNUQyX1RSR1JfVFJHTU9EX1BFUklPRElDIHwNCj4gICAJCQlB VDkxX1NBTUE1RDJfVFJHUl9UUkdQRVIoc3QtPnRvdWNoX3N0LnNhbXBsZV9wZXJpb2RfdmFsKSk7 DQo+ICAgCXN0LT50b3VjaF9zdC50b3VjaGluZyA9IHRydWU7DQo+ICAgfQ0KPiBAQCAtMTIzNiwx NiArMTMyMSwxNSBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY19ub19wZW5fZGV0ZWN0X2ludGVycnVw dChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIHsNCj4gICAJc3RydWN0IGF0OTFfYWRj X3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICAgDQo+IC0JYXQ5MV9hZGNfd3Jp dGVsKHN0LCBBVDkxX1NBTUE1RDJfVFJHUiwNCj4gLQkJCUFUOTFfU0FNQTVEMl9UUkdSX1RSR01P RF9OT19UUklHR0VSKTsNCj4gLQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRFIs IEFUOTFfU0FNQTVEMl9JRVJfTk9QRU4gfA0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgVFJHUiwg QVQ5MV9TQU1BNUQyX1RSR1JfVFJHTU9EX05PX1RSSUdHRVIpOw0KPiArCWF0OTFfYWRjX3dyaXRl bChzdCwgSURSLCBBVDkxX1NBTUE1RDJfSUVSX05PUEVOIHwNCj4gICAJCQlBVDkxX1NBTUE1RDJf SUVSX1hSRFkgfCBBVDkxX1NBTUE1RDJfSUVSX1lSRFkgfA0KPiAgIAkJCUFUOTFfU0FNQTVEMl9J RVJfUFJEWSk7DQo+ICAgCXN0LT50b3VjaF9zdC50b3VjaGluZyA9IGZhbHNlOw0KPiAgIA0KPiAg IAlhdDkxX2FkY190b3VjaF9kYXRhX2hhbmRsZXIoaW5kaW9fZGV2KTsNCj4gICANCj4gLQlhdDkx X2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRVIsIEFUOTFfU0FNQTVEMl9JRVJfUEVOKTsN Cj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIElFUiwgQVQ5MV9TQU1BNUQyX0lFUl9QRU4pOw0KPiAg IH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBhdDkxX2FkY193b3JrcV9oYW5kbGVyKHN0cnVjdCB3 b3JrX3N0cnVjdCAqd29ya3EpDQo+IEBAIC0xMjYzLDggKzEzNDcsOCBAQCBzdGF0aWMgaXJxcmV0 dXJuX3QgYXQ5MV9hZGNfaW50ZXJydXB0KGludCBpcnEsIHZvaWQgKnByaXZhdGUpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW8gPSBwcml2YXRlOw0KPiAgIAlzdHJ1Y3QgYXQ5MV9h ZGNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW8pOw0KPiAtCXUzMiBzdGF0dXMgPSBhdDkxX2Fk Y19yZWFkbChzdCwgQVQ5MV9TQU1BNUQyX0lTUik7DQo+IC0JdTMyIGltciA9IGF0OTFfYWRjX3Jl YWRsKHN0LCBBVDkxX1NBTUE1RDJfSU1SKTsNCj4gKwl1MzIgc3RhdHVzID0gYXQ5MV9hZGNfcmVh ZGwoc3QsIElTUik7DQo+ICsJdTMyIGltciA9IGF0OTFfYWRjX3JlYWRsKHN0LCBJTVIpOw0KPiAg IAl1MzIgcmR5X21hc2sgPSBBVDkxX1NBTUE1RDJfSUVSX1hSRFkgfCBBVDkxX1NBTUE1RDJfSUVS X1lSRFkgfA0KPiAgIAkJCUFUOTFfU0FNQTVEMl9JRVJfUFJEWTsNCj4gICANCj4gQEAgLTEyODUs OSArMTM2OSw5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBhdDkxX2FkY19pbnRlcnJ1cHQoaW50IGly cSwgdm9pZCAqcHJpdmF0ZSkNCj4gICAJCSAqIHRvdWNoaW5nLCBidXQgdGhlIG1lYXN1cmVtZW50 cyBhcmUgbm90IHJlYWR5IHlldC4NCj4gICAJCSAqIHJlYWQgYW5kIGlnbm9yZS4NCj4gICAJCSAq Lw0KPiAtCQlzdGF0dXMgPSBhdDkxX2FkY19yZWFkbChzdCwgQVQ5MV9TQU1BNUQyX1hQT1NSKTsN Cj4gLQkJc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVEMl9ZUE9TUik7DQo+ IC0JCXN0YXR1cyA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfUFJFU1NSKTsNCj4g KwkJc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIFhQT1NSKTsNCj4gKwkJc3RhdHVzID0gYXQ5 MV9hZGNfcmVhZGwoc3QsIFlQT1NSKTsNCj4gKwkJc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3Qs IFBSRVNTUik7DQo+ICAgCX0gZWxzZSBpZiAoaWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvKSAmJg0K PiAgIAkJICAgKHN0YXR1cyAmIEFUOTFfU0FNQTVEMl9JRVJfRFJEWSkpIHsNCj4gICAJCS8qIHRy aWdnZXJlZCBidWZmZXIgd2l0aG91dCBETUEgKi8NCj4gQEAgLTEyOTksNyArMTM4Myw3IEBAIHN0 YXRpYyBpcnFyZXR1cm5fdCBhdDkxX2FkY19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqcHJpdmF0 ZSkNCj4gICAJCVdBUk4odHJ1ZSwgIlVuZXhwZWN0ZWQgaXJxIG9jY3VycmVkXG4iKTsNCj4gICAJ fSBlbHNlIGlmICghaWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvKSkgew0KPiAgIAkJLyogc29mdHdh cmUgcmVxdWVzdGVkIGNvbnZlcnNpb24gKi8NCj4gLQkJc3QtPmNvbnZlcnNpb25fdmFsdWUgPSBh dDkxX2FkY19yZWFkbChzdCwgc3QtPmNoYW4tPmFkZHJlc3MpOw0KPiArCQlzdC0+Y29udmVyc2lv bl92YWx1ZSA9IGF0OTFfYWRjX3JlYWRfY2hhbihzdCwgc3QtPmNoYW4tPmFkZHJlc3MpOw0KPiAg IAkJc3QtPmNvbnZlcnNpb25fZG9uZSA9IHRydWU7DQo+ICAgCQl3YWtlX3VwX2ludGVycnVwdGli bGUoJnN0LT53cV9kYXRhX2F2YWlsYWJsZSk7DQo+ICAgCX0NCj4gQEAgLTEzNjAsMTAgKzE0NDQs MTAgQEAgc3RhdGljIGludCBhdDkxX2FkY19yZWFkX2luZm9fcmF3KHN0cnVjdCBpaW9fZGV2ICpp bmRpb19kZXYsDQo+ICAgCQljb3IgPSAoQklUKGNoYW4tPmNoYW5uZWwpIHwgQklUKGNoYW4tPmNo YW5uZWwyKSkgPDwNCj4gICAJCSAgICAgIEFUOTFfU0FNQTVEMl9DT1JfRElGRl9PRkZTRVQ7DQo+ ICAgDQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfQ09SLCBjb3IpOw0KPiAt CWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0NIRVIsIEJJVChjaGFuLT5jaGFubmVs KSk7DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfSUVSLCBCSVQoY2hhbi0+ Y2hhbm5lbCkpOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0NSLCBBVDkx X1NBTUE1RDJfQ1JfU1RBUlQpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgQ09SLCBjb3IpOw0K PiArCWF0OTFfYWRjX3dyaXRlbChzdCwgQ0hFUiwgQklUKGNoYW4tPmNoYW5uZWwpKTsNCj4gKwlh dDkxX2FkY193cml0ZWwoc3QsIElFUiwgQklUKGNoYW4tPmNoYW5uZWwpKTsNCj4gKwlhdDkxX2Fk Y193cml0ZWwoc3QsIENSLCBBVDkxX1NBTUE1RDJfQ1JfU1RBUlQpOw0KPiAgIA0KPiAgIAlyZXQg PSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChzdC0+d3FfZGF0YV9hdmFpbGFibGUs DQo+ICAgCQkJCQkgICAgICAgc3QtPmNvbnZlcnNpb25fZG9uZSwNCj4gQEAgLTEzNzksMTEgKzE0 NjMsMTEgQEAgc3RhdGljIGludCBhdDkxX2FkY19yZWFkX2luZm9fcmF3KHN0cnVjdCBpaW9fZGV2 ICppbmRpb19kZXYsDQo+ICAgCQlzdC0+Y29udmVyc2lvbl9kb25lID0gZmFsc2U7DQo+ICAgCX0N Cj4gICANCj4gLQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRFIsIEJJVChjaGFu LT5jaGFubmVsKSk7DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfQ0hEUiwg QklUKGNoYW4tPmNoYW5uZWwpKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIElEUiwgQklUKGNo YW4tPmNoYW5uZWwpKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIENIRFIsIEJJVChjaGFuLT5j aGFubmVsKSk7DQo+ICAgDQo+ICAgCS8qIE5lZWRlZCB0byBBQ0sgdGhlIERSRFkgaW50ZXJydXB0 aW9uICovDQo+IC0JYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVEMl9MQ0RSKTsNCj4gKwlh dDkxX2FkY19yZWFkbChzdCwgTENEUik7DQo+ICAgDQo+ICAgCW11dGV4X3VubG9jaygmc3QtPmxv Y2spOw0KPiAgIA0KPiBAQCAtMTQ1NSwxNCArMTUzOSwxNSBAQCBzdGF0aWMgdm9pZCBhdDkxX2Fk Y19kbWFfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIAlzdHJ1Y3QgaWlv X2RldiAqaW5kaW9fZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+ICAgCXN0cnVj dCBhdDkxX2FkY19zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiAgIAlzdHJ1Y3Qg ZG1hX3NsYXZlX2NvbmZpZyBjb25maWcgPSB7MH07DQo+ICsJLyogd2UgaGF2ZSAyIGJ5dGVzIGZv ciBlYWNoIGNoYW5uZWwgKi8NCj4gKwl1bnNpZ25lZCBpbnQgc2FtcGxlX3NpemUgPSBzdC0+c29j X2luZm8ucGxhdGZvcm0tPm5yX2NoYW5uZWxzICogMjsNCj4gICAJLyoNCj4gICAJICogV2UgbWFr ZSB0aGUgYnVmZmVyIGRvdWJsZSB0aGUgc2l6ZSBvZiB0aGUgZmlmbywNCj4gICAJICogc3VjaCB0 aGF0IERNQSB1c2VzIG9uZSBoYWxmIG9mIHRoZSBidWZmZXIgKGZ1bGwgZmlmbyBzaXplKQ0KPiAg IAkgKiBhbmQgdGhlIHNvZnR3YXJlIHVzZXMgdGhlIG90aGVyIGhhbGYgdG8gcmVhZC93cml0ZS4N Cj4gICAJICovDQo+ICAgCXVuc2lnbmVkIGludCBwYWdlcyA9IERJVl9ST1VORF9VUChBVDkxX0hX RklGT19NQVhfU0laRSAqDQo+IC0JCQkJCSAgQVQ5MV9CVUZGRVJfTUFYX0NPTlZFUlNJT05fQllU RVMgKiAyLA0KPiAtCQkJCQkgIFBBR0VfU0laRSk7DQo+ICsJCQkJCSAgc2FtcGxlX3NpemUgKiAy LCBQQUdFX1NJWkUpOw0KPiAgIA0KPiAgIAlpZiAoc3QtPmRtYV9zdC5kbWFfY2hhbikNCj4gICAJ CXJldHVybjsNCj4gQEAgLTE0ODYsNyArMTU3MSw3IEBAIHN0YXRpYyB2b2lkIGF0OTFfYWRjX2Rt YV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAgCS8qIENvbmZpZ3VyZSBE TUEgY2hhbm5lbCB0byByZWFkIGRhdGEgcmVnaXN0ZXIgKi8NCj4gICAJY29uZmlnLmRpcmVjdGlv biA9IERNQV9ERVZfVE9fTUVNOw0KPiAgIAljb25maWcuc3JjX2FkZHIgPSAocGh5c19hZGRyX3Qp KHN0LT5kbWFfc3QucGh5c19hZGRyDQo+IC0JCQkgICsgQVQ5MV9TQU1BNUQyX0xDRFIpOw0KPiAr CQkJICArIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0LT5MQ0RSKTsNCj4gICAJY29uZmln LnNyY19hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzJfQllURVM7DQo+ICAgCWNvbmZp Zy5zcmNfbWF4YnVyc3QgPSAxOw0KPiAgIAljb25maWcuZHN0X21heGJ1cnN0ID0gMTsNCj4gQEAg LTE1MTUsOSArMTYwMCwxMCBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY19kbWFfZGlzYWJsZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIHsNCj4gICAJc3RydWN0IGlpb19kZXYgKmlu ZGlvX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0KPiAgIAlzdHJ1Y3QgYXQ5MV9h ZGNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gKwkvKiB3ZSBoYXZlIDIgYnl0 ZXMgZm9yIGVhY2ggY2hhbm5lbCAqLw0KPiArCXVuc2lnbmVkIGludCBzYW1wbGVfc2l6ZSA9IHN0 LT5zb2NfaW5mby5wbGF0Zm9ybS0+bnJfY2hhbm5lbHMgKiAyOw0KPiAgIAl1bnNpZ25lZCBpbnQg cGFnZXMgPSBESVZfUk9VTkRfVVAoQVQ5MV9IV0ZJRk9fTUFYX1NJWkUgKg0KPiAtCQkJCQkgIEFU OTFfQlVGRkVSX01BWF9DT05WRVJTSU9OX0JZVEVTICogMiwNCj4gLQkJCQkJICBQQUdFX1NJWkUp Ow0KPiArCQkJCQkgIHNhbXBsZV9zaXplICogMiwgUEFHRV9TSVpFKTsNCj4gICANCj4gICAJLyog aWYgd2UgYXJlIG5vdCB1c2luZyBETUEsIGp1c3QgcmV0dXJuICovDQo+ICAgCWlmICghc3QtPmRt YV9zdC5kbWFfY2hhbikNCj4gQEAgLTE1NzgsMTQgKzE2NjQsMTQgQEAgc3RhdGljIGludCBhdDkx X2FkY191cGRhdGVfc2Nhbl9tb2RlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsDQo+ICAgCXN0 cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiAgIA0KPiAg IAlpZiAoYml0bWFwX3N1YnNldChzY2FuX21hc2ssICZzdC0+dG91Y2hfc3QuY2hhbm5lbHNfYml0 bWFzaywNCj4gLQkJCSAgQVQ5MV9TQU1BNUQyX01BWF9DSEFOX0lEWCArIDEpKQ0KPiArCQkJICBz dC0+c29jX2luZm8ucGxhdGZvcm0tPm1heF9pbmRleCArIDEpKQ0KPiAgIAkJcmV0dXJuIDA7DQo+ ICAgCS8qDQo+ICAgCSAqIGlmIHRoZSBuZXcgYml0bWFwIGlzIGEgY29tYmluYXRpb24gb2YgdG91 Y2hzY3JlZW4gYW5kIHJlZ3VsYXINCj4gICAJICogY2hhbm5lbHMsIHRoZW4gd2UgYXJlIG5vdCBm aW5lDQo+ICAgCSAqLw0KPiAgIAlpZiAoYml0bWFwX2ludGVyc2VjdHMoJnN0LT50b3VjaF9zdC5j aGFubmVsc19iaXRtYXNrLCBzY2FuX21hc2ssDQo+IC0JCQkgICAgICBBVDkxX1NBTUE1RDJfTUFY X0NIQU5fSURYICsgMSkpDQo+ICsJCQkgICAgICBzdC0+c29jX2luZm8ucGxhdGZvcm0tPm1heF9p bmRleCArIDEpKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgCXJldHVybiAwOw0KPiAgIH0N Cj4gQEAgLTE1OTQsMTMgKzE2ODAsMTMgQEAgc3RhdGljIHZvaWQgYXQ5MV9hZGNfaHdfaW5pdChz dHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIHsNCj4gICAJc3RydWN0IGF0OTFfYWRjX3N0 YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICAgDQo+IC0JYXQ5MV9hZGNfd3JpdGVs KHN0LCBBVDkxX1NBTUE1RDJfQ1IsIEFUOTFfU0FNQTVEMl9DUl9TV1JTVCk7DQo+IC0JYXQ5MV9h ZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfSURSLCAweGZmZmZmZmZmKTsNCj4gKwlhdDkxX2Fk Y193cml0ZWwoc3QsIENSLCBBVDkxX1NBTUE1RDJfQ1JfU1dSU1QpOw0KPiArCWF0OTFfYWRjX3dy aXRlbChzdCwgSURSLCAweGZmZmZmZmZmKTsNCj4gICAJLyoNCj4gICAJICogVHJhbnNmZXIgZmll bGQgbXVzdCBiZSBzZXQgdG8gMiBhY2NvcmRpbmcgdG8gdGhlIGRhdGFzaGVldCBhbmQNCj4gICAJ ICogYWxsb3dzIGRpZmZlcmVudCBhbmFsb2cgc2V0dGluZ3MgZm9yIGVhY2ggY2hhbm5lbC4NCj4g ICAJICovDQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfTVIsDQo+ICsJYXQ5 MV9hZGNfd3JpdGVsKHN0LCBNUiwNCj4gICAJCQlBVDkxX1NBTUE1RDJfTVJfVFJBTlNGRVIoMikg fCBBVDkxX1NBTUE1RDJfTVJfQU5BQ0gpOw0KPiAgIA0KPiAgIAlhdDkxX2FkY19zZXR1cF9zYW1w X2ZyZXEoaW5kaW9fZGV2LCBzdC0+c29jX2luZm8ubWluX3NhbXBsZV9yYXRlKTsNCj4gQEAgLTE3 MTYsMjEgKzE4MDIsMjMgQEAgc3RhdGljIGludCBhdDkxX2FkY19wcm9iZShzdHJ1Y3QgcGxhdGZv cm1fZGV2aWNlICpwZGV2KQ0KPiAgIAlpZiAoIWluZGlvX2RldikNCj4gICAJCXJldHVybiAtRU5P TUVNOw0KPiAgIA0KPiArCXN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4gKwlzdC0+aW5kaW9f ZGV2ID0gaW5kaW9fZGV2Ow0KPiArDQo+ICsJc3QtPnNvY19pbmZvLnBsYXRmb3JtID0gb2ZfZGV2 aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpOw0KPiArDQo+ICAgCWluZGlvX2Rldi0+bmFt ZSA9IGRldl9uYW1lKCZwZGV2LT5kZXYpOw0KPiAgIAlpbmRpb19kZXYtPm1vZGVzID0gSU5ESU9f RElSRUNUX01PREUgfCBJTkRJT19CVUZGRVJfU09GVFdBUkU7DQo+ICAgCWluZGlvX2Rldi0+aW5m byA9ICZhdDkxX2FkY19pbmZvOw0KPiAtCWluZGlvX2Rldi0+Y2hhbm5lbHMgPSBhdDkxX2FkY19j aGFubmVsczsNCj4gLQlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXQ5MV9h ZGNfY2hhbm5lbHMpOw0KPiAtDQo+IC0Jc3QgPSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiAtCXN0 LT5pbmRpb19kZXYgPSBpbmRpb19kZXY7DQo+ICsJaW5kaW9fZGV2LT5jaGFubmVscyA9ICpzdC0+ c29jX2luZm8ucGxhdGZvcm0tPmFkY19jaGFubmVsczsNCj4gKwlpbmRpb19kZXYtPm51bV9jaGFu bmVscyA9IHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bWF4X2NoYW5uZWxzOw0KPiAgIA0KPiAgIAli aXRtYXBfc2V0KCZzdC0+dG91Y2hfc3QuY2hhbm5lbHNfYml0bWFzaywNCj4gLQkJICAgQVQ5MV9T QU1BNUQyX1RPVUNIX1hfQ0hBTl9JRFgsIDEpOw0KPiArCQkgICBzdC0+c29jX2luZm8ucGxhdGZv cm0tPnRvdWNoX2NoYW5feCwgMSk7DQo+ICAgCWJpdG1hcF9zZXQoJnN0LT50b3VjaF9zdC5jaGFu bmVsc19iaXRtYXNrLA0KPiAtCQkgICBBVDkxX1NBTUE1RDJfVE9VQ0hfWV9DSEFOX0lEWCwgMSk7 DQo+ICsJCSAgIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+dG91Y2hfY2hhbl95LCAxKTsNCj4gICAJ Yml0bWFwX3NldCgmc3QtPnRvdWNoX3N0LmNoYW5uZWxzX2JpdG1hc2ssDQo+IC0JCSAgIEFUOTFf U0FNQTVEMl9UT1VDSF9QX0NIQU5fSURYLCAxKTsNCj4gKwkJICAgc3QtPnNvY19pbmZvLnBsYXRm b3JtLT50b3VjaF9jaGFuX3AsIDEpOw0KPiAgIA0KPiAgIAlzdC0+b3ZlcnNhbXBsaW5nX3JhdGlv ID0gQVQ5MV9PU1JfMVNBTVBMRVM7DQo+ICAgDQo+IEBAIC0xNzcwLDcgKzE4NTgsNyBAQCBzdGF0 aWMgaW50IGF0OTFfYWRjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAg CXN0LT5zZWxlY3RlZF90cmlnID0gTlVMTDsNCj4gICANCj4gICAJLyogZmluZCB0aGUgcmlnaHQg dHJpZ2dlciwgb3Igbm8gdHJpZ2dlciBhdCBhbGwgKi8NCj4gLQlmb3IgKGkgPSAwOyBpIDwgQVQ5 MV9TQU1BNUQyX0hXX1RSSUdfQ05UICsgMTsgaSsrKQ0KPiArCWZvciAoaSA9IDA7IGkgPCBzdC0+ c29jX2luZm8ucGxhdGZvcm0tPmh3X3RyaWdfY250ICsgMTsgaSsrKQ0KPiAgIAkJaWYgKGF0OTFf YWRjX3RyaWdnZXJfbGlzdFtpXS5lZGdlX3R5cGUgPT0gZWRnZV90eXBlKSB7DQo+ICAgCQkJc3Qt PnNlbGVjdGVkX3RyaWcgPSAmYXQ5MV9hZGNfdHJpZ2dlcl9saXN0W2ldOw0KPiAgIAkJCWJyZWFr Ow0KPiBAQCAtMTg1NSw3ICsxOTQzLDcgQEAgc3RhdGljIGludCBhdDkxX2FkY19wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIAkJCSBzdC0+c2VsZWN0ZWRfdHJpZy0+bmFt ZSk7DQo+ICAgDQo+ICAgCWRldl9pbmZvKCZwZGV2LT5kZXYsICJ2ZXJzaW9uOiAleFxuIiwNCj4g LQkJIHJlYWRsX3JlbGF4ZWQoc3QtPmJhc2UgKyBBVDkxX1NBTUE1RDJfVkVSU0lPTikpOw0KPiAr CQkgcmVhZGxfcmVsYXhlZChzdC0+YmFzZSArIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0 LT5WRVJTSU9OKSk7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIA0KPiBAQCAtMTg5OCw3ICsx OTg2LDcgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGludCBhdDkxX2FkY19zdXNwZW5kKHN0cnVj dCBkZXZpY2UgKmRldikNCj4gICAJICogYW5kIGNhbiBiZSB1c2VkIGJ5IGZvciBvdGhlciBkZXZp Y2VzLg0KPiAgIAkgKiBPdGhlcndpc2UsIEFEQyB3aWxsIGhvZyB0aGVtIGFuZCB3ZSBjYW4ndCBn byB0byBzdXNwZW5kIG1vZGUuDQo+ICAgCSAqLw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5 MV9TQU1BNUQyX0NSLCBBVDkxX1NBTUE1RDJfQ1JfU1dSU1QpOw0KPiArCWF0OTFfYWRjX3dyaXRl bChzdCwgQ1IsIEFUOTFfU0FNQTVEMl9DUl9TV1JTVCk7DQo+ICAgDQo+ICAgCWNsa19kaXNhYmxl X3VucHJlcGFyZShzdC0+cGVyX2Nsayk7DQo+ICAgCXJlZ3VsYXRvcl9kaXNhYmxlKHN0LT52cmVm KTsNCj4gQEAgLTE5NTgsNiArMjA0Niw3IEBAIHN0YXRpYyBTSU1QTEVfREVWX1BNX09QUyhhdDkx X2FkY19wbV9vcHMsIGF0OTFfYWRjX3N1c3BlbmQsIGF0OTFfYWRjX3Jlc3VtZSk7DQo+ICAgc3Rh dGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXQ5MV9hZGNfZHRfbWF0Y2hbXSA9IHsNCj4g ICAJew0KPiAgIAkJLmNvbXBhdGlibGUgPSAiYXRtZWwsc2FtYTVkMi1hZGMiLA0KPiArCQkuZGF0 YSA9IChjb25zdCB2b2lkICopJnNhbWE1ZDJfcGxhdGZvcm0sDQo+ICAgCX0sIHsNCj4gICAJCS8q IHNlbnRpbmVsICovDQo+ICAgCX0NCj4gDQoNCg==