Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp3564727pxb; Mon, 30 Aug 2021 05:33:54 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxSXvdzgsLQjXOWq/2WjMGr/weUpLcFlmxgMsl4F9cmkXK4/rxztjFYFfwR2T33EUORReg+ X-Received: by 2002:a92:db0c:: with SMTP id b12mr15684563iln.171.1630326834652; Mon, 30 Aug 2021 05:33:54 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1630326834; cv=pass; d=google.com; s=arc-20160816; b=OLcD+6YKKZ1S6cXti6RRHB3my3BJ8/L0UIGXet1iMqfmXV7i1xvmZiQvsEnEo3EP8W XsbQ1aT7DwA/Kv/KlxmyRsfHXUze/KlKoh3mwJpyi3mk60UrAqmydZsCV7D/fL2NEaXK lLvDiKZK56lFT5o7w9EKfa9DqNf6f5NCwnvNiBaoA2UxwaqgzztPozK/wWtXVQbFY0es 76CFwGBnxitD8rJOw/+3hzz5YS1f73Gv48IEf/nW23RDu9wfsbssrXl5qgVlQayE5E2p el5R/cLTGCnCShZagfd+kCsbhhCjXLDblFpuoQWcvj1MeBRO3a3rSEBVaMdEsLogelWc tGiA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-id:user-agent:content-language:accept-language:in-reply-to :references:message-id:date:thread-index:thread-topic:subject:cc:to :from:dkim-signature:ironport-sdr:dkim-signature; bh=vZ+c9+y9MB+KzQhfDnZJxQlr8hGk/a6/z/Cr6dDyxNM=; b=FuC+Bhy8QCfqVM2GowtK6xGakN/luvwHB9cV4KLLPxkoHPteWwfhEwMiLVB0C9fzG7 N7YYXn+FRluBjjsYhrmYa1C5QI1eKqJQtCpJapgv468szpJ4AVrFCMkvVhvaS7RCZkIg hgI9kZOkjlIsrutF/2lz8y/8bZ4ZqYj+RM7vs0+9ydijqed4KmHK7nmXXc883uF7wwfX JO5u28+JhkdtVEciQrEMwBNbwdC7Ls3cWa2Dpk+2AqbHkdPGtnses3SrSzdUJECB43z8 ltruUWIXr8uhvzsQ16EBPOacIdBFe07LWkG9RZ1UtO5uP/11eRcot9M6q+1vmFGA1JpU fnXQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b="bP7A1iY/"; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=gr5hZ63t; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d3si16362300jak.6.2021.08.30.05.33.43; Mon, 30 Aug 2021 05:33:54 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=fail header.i=@microchip.com header.s=mchp header.b="bP7A1iY/"; dkim=pass header.i=@microchiptechnology.onmicrosoft.com header.s=selector2-microchiptechnology-onmicrosoft-com header.b=gr5hZ63t; arc=pass (i=1 spf=pass spfdomain=microchip.com dkim=pass dkdomain=microchip.com dmarc=pass fromdomain=microchip.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=microchip.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233581AbhH3Mcq (ORCPT + 99 others); Mon, 30 Aug 2021 08:32:46 -0400 Received: from esa.microchip.iphmx.com ([68.232.154.123]:26373 "EHLO esa.microchip.iphmx.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231550AbhH3Mco (ORCPT ); Mon, 30 Aug 2021 08:32:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1630326710; x=1661862710; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=vZ+c9+y9MB+KzQhfDnZJxQlr8hGk/a6/z/Cr6dDyxNM=; b=bP7A1iY/bgx9WBqjPWqZxHH3i15qn3npGKMXM0WZl5XT/HFn8wH6zlhG eieSYLliaA+tqOeH+pY+wv5tr0g7CEAfnZkwo40ON+7JeDpx1likDF/84 HrnocWkLDQqokvFAExW1dqBNP3pqjwCwOMwMl6F8bnCnmlbBy1m4c7pOC 5HZ9cwFLRLW1Rz6XLq74Zu3H+CUL68k5BDvGpoApqkLvAZQF1bT68/vvy e+kuSsuWPjfI449dtmo9Wvg4VtrEKwGD4sx1/rzKiyDJJx6+ej7c04/l8 zI9ojbjeOMFfqAbqoEqt1sALg0VAxQS51wuZBqBSVm6pSFDaekTj7agRr Q==; IronPort-SDR: pqyp4ZInBM5eYNOu6XTkrh3ovzNmWP9Ff4ymmDr5qMQV55m+1mOD4tugP7yP3EHAbM6CqJHwXa ytRw4Z/T4XdnkwMT7nIqtSekPQEHkwmXD6vJ8OlIl6PsZL2OFgFcNF8FlB1AnFgnjhJAp6bOPR vzrFvmXKqkcLDrqUHIDkz2SPj5/QMFwgAJrZ9MOBNSBVVkDrEbzl51tewHjy3IpBHti5PKBCBs Vcq94NdT9qy7+7RbyLTC+oDcnXiUlJmL9qQxAoxUFnPE2/FPIIO8x6p0djdKQwIj5m6rwgU73T F3diDV06PtSk4U0OZIWf5UjL X-IronPort-AV: E=Sophos;i="5.84,363,1620716400"; d="scan'208";a="67572885" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa6.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 30 Aug 2021 05:31:49 -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; Mon, 30 Aug 2021 05:31:49 -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; Mon, 30 Aug 2021 05:31:49 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cEoOAlAg/MFD1PRk37dm9VTSUUwf9iR0vHfwEDMAeClyHYNV4TpAV+HKRSgK17o2pnAbhEToe3UxMoiRBDCHQ5lBIJqFsKOo7UKlRq2Nb9ELMocXgj9QwGcHGrFzzhvK0Qx9PzMWvLEJw+tNv1A4390d0jZiwjGuY5UDiJAEHwEewc6uIRTnoERzuEkJewW91bYg5Ii8C/kJkTok7P4N0CCPSggm+WaUqISXTew7J1P7H/AghragWim7en55EcBJCIEItvkkHubiHh3LQ4iVwWZm4SWCUoO4eE5mCcRBwn7JBK6k3nCCdZbNYTXq9koc0X51enMiFyTwb5Q2lOi7Vw== 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=vZ+c9+y9MB+KzQhfDnZJxQlr8hGk/a6/z/Cr6dDyxNM=; b=TwvoY655BpflsgcpSoSRo1H6oZ2tqsf4zhXCv9JW3krBalqjlIottx8M1V83H9sppJsqsy5FIs98OJU6FXEHN7R6gnwlY2+BgPXozyPxvPFzezP6j1tgqJKIAwr7nlPjZHEbHQiliMSUwJGDqjtsjXrOvZQ0Cy9k+1aFVVrpayN2N27lo/QDWg852BUrSj6Hpj9UBpZTNNVhqIVFqeW2sIuqmPo0nIbFwUV8W1+pMEU3YIZ8aBLQ2qbNcrlJF9eDL9bd/xWyIQW6aNYvi7NAT0WYbtW3ENNbw6sG5cFrK/2r0jeLtZUX5lRYQICN7Be7iY63/f7fAuROmre+spP1AQ== 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=vZ+c9+y9MB+KzQhfDnZJxQlr8hGk/a6/z/Cr6dDyxNM=; b=gr5hZ63ty0P1VFM8hCB17k8WvUNvPS/lHt+p4WHiAdjhzuSCm2gS3dn9P9kQ+ynz8naYBHlV7u4oh7zuZaRbchrOnJo2FMbJ2/w+uxCqeNOSx76T41AwaHUb9gb5zdlY1HAmTrSOLiDikzU3n8ACF/xH9NVIS/xeYuUihfM9Lmw= Received: from BN9PR11MB5514.namprd11.prod.outlook.com (2603:10b6:408:103::7) by BN7PR11MB2739.namprd11.prod.outlook.com (2603:10b6:406:a9::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.23; Mon, 30 Aug 2021 12:31:46 +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.4457.024; Mon, 30 Aug 2021 12:31:46 +0000 From: To: , , , CC: , , , Subject: Re: [PATCH v2 04/10] iio: adc: at91-sama5d2_adc: convert to platform specific data structures Thread-Topic: [PATCH v2 04/10] iio: adc: at91-sama5d2_adc: convert to platform specific data structures Thread-Index: AQHXmN79y/+WwTOYukqvhzygQCSEmquMBEGA Date: Mon, 30 Aug 2021 12:31:46 +0000 Message-ID: <1688eb0e-5ea1-3bcc-3af0-7ba4c4601306@microchip.com> References: <20210824115441.681253-1-eugen.hristev@microchip.com> <20210824115441.681253-5-eugen.hristev@microchip.com> In-Reply-To: <20210824115441.681253-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: 6e5c20ca-2880-4fe0-017a-08d96bb221d9 x-ms-traffictypediagnostic: BN7PR11MB2739: 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: jXUpA9+nUyFWj7xteFKRusf2wKEhmTq34R6vBnslP07DQh393C/+TPWTU/9fHAnp5W59x3kjm0U0DdVNLiqY3bto5f3lJnLTAJLLVAGsrCgDgdyyYyn+MEDIiQaqyhalCS4CTOCarwq9/MaVAn8X7vxyd15EZuyOZ6i4b5GZlizzD+/lP1u3rln0X7KH+3hlEaDXnVtprkVEOXKwxdTNVZQmTIL7W5gtRk/GcKPJ7hNjeXkvR2FKYRHYbCGfNLJc1RSHifQ9KUC4yLfj+K5IpG6/WpsEIb5AMratqG1Sr2V4JxhNNkN5WWoKmkIfkO0/mytAXbZnjziorBT3neV2xnhL7p7GmWRvOT5UWOTUzzWYB86AbdppgSbWgsHvVIDRyymKOg2nUwnu3AIGm5OMcDxlqd9lUJ+AnQ9hlKdxk2hHx7/7B/fmB7GoFY8XRO04Dn35ITkg8OJx56z5E1KOjmwRcUaF0u7PDI/90RqUqg2RbooFPu58csTmksH6qfwJA0zgcOQ7lIxUYj9LmVS9q/ejLw41u5bKxheKil3LsAwG0wcx5ev+VPGtyAaXjoCW6Eh4yslKB4qcGgYenoFLn4nVsnQJXtg1wRux3LiMYrPtgaJYlWZwiiyudCurnBcrV0yeQ0EGEDA6WMkYBZlhVu+Cs//gaMbf9QPPxfttS21GSOu16I3b0u4y/BSN7TG0TE+COhxdCwaTQPL5YQrqKj7Kh7cWMZp88qrKA4krm7K35IPZlzGgiohkJPhQHN78NqwGnWT4VzYmT/9xBKt5e33Q408VBoVIv+qxRTtEASk= 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:(366004)(316002)(6512007)(53546011)(186003)(110136005)(30864003)(26005)(31696002)(8936002)(5660300002)(91956017)(76116006)(6506007)(71200400001)(8676002)(54906003)(36756003)(4326008)(66446008)(64756008)(107886003)(2616005)(83380400001)(6636002)(66946007)(86362001)(38070700005)(66476007)(6486002)(66556008)(2906002)(122000001)(38100700002)(31686004)(508600001)(43740500002)(45980500001)(559001)(579004)(309714004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?cEhIYXNTS1VwK0lCb0djd01sQTFGSEkrdmNyKzRWRGFPWGg5UWhGT3NpY1JU?= =?utf-8?B?UXNMRUxQajJXbE5UR2FvU1NkNDBCVm9rT2l3TUF0SUdobWtNYmozYW13TG1D?= =?utf-8?B?RVN5UFoxdjRUQlB3L1FjY0hqVkw4ZVBsNDhZWlhMRnR5Wmk4NjBBUTBCS0xx?= =?utf-8?B?ZXlrTVNNL0xHei9Xb3hkSE9oZ24zNjVmU1VqVlU5Y0dKR3plSnFOa1FiWkdl?= =?utf-8?B?dTFzeHN0MnZQL0dlZHU1M04rOUpYS3phNkdkZHk1Rnk5M2N0WHlEZXNQN3A2?= =?utf-8?B?K0E2TE96QTZTUG4zaFhFdHpXK21DWGJMYWRZNGRVNTdxbHlWZzVsTE52ejd6?= =?utf-8?B?TUp3M3BjemlVYWlZdHlON0VZOUxjUmZteC9iV3V4dkZIKzhMN25LcEkyYUlC?= =?utf-8?B?Z1RSUW9Oc1l2bGRkYmczWXd1Q0liTkwyNWFJNWY4cDRPc1p5QnM2OWwzb2Rv?= =?utf-8?B?VTN4d1RyZkk3VWxSZlB0NDhKMkpUQk1nUDU5WEtPZ0xjV25OZGl5VXJ2Z1lp?= =?utf-8?B?UWdVSnMxQW95RjJUa3NFcUZrMHFmWHBwRitjcFBDWlNxclBVRTA4QkxGVnBs?= =?utf-8?B?MDZQQTBWYXRxM1Y3bG8zbnRBdW9Vdmtoby9WdnBScTd5WC9JUE55djhOU01B?= =?utf-8?B?VzNqdlJXalhwa1Y1QklhQ1dxY3F1YWtYcExFTXNtMWxKaDBYcTk5QVA4emZn?= =?utf-8?B?RS9lczJ2bk5rc1VDWklVYk1wNkN2Qlp6bE1YVDAyQjQxWml2c05YNFpyT3Fn?= =?utf-8?B?YnRCM3BzK1RRSjRjRUcwUTVUVFhBNjhHOWI0ZTJMM3JmcUFGamR0eHdQVXBS?= =?utf-8?B?VDk5YlJFSVlTbHczeFFZdXBwN1REUmt1dFVmZzQ2dWpWSVJlMEVDWnZ2dFZv?= =?utf-8?B?UkY4eEdqZGsyK3J0MFlYczJ5U3IwS3MrRnB0c1BQUVhaZWNyenVJU2o2YWJE?= =?utf-8?B?UGI5dkwvdVZNSlhlMjNWT3RHOUcxVFZTdk5FUFNaZVNwRUk5d05MUnBPV0ZC?= =?utf-8?B?cFFLSUNIYzJ6cm5xWjl4dWpCZEhLWUUyb2xMTkxJVWRXU0phL0pnT25DTk9i?= =?utf-8?B?elNNOHFDOURrbFRwTVhTY0p1TGtPd3hJQ2tvUzdZNnlKajlYcUxFT2tMSlZu?= =?utf-8?B?bmprYW5MV2lvSmtqc0VrdjZtT3liRi9LRFcrbS9TcXlQSUNBTWJ4ZjAwQkJV?= =?utf-8?B?ZUpDSkc2bG5uODhvb0RDZERWeUVhRTBuTEF0dk5aMFZScThMb3FmK2JtTkwx?= =?utf-8?B?U3pzYVZFL3RtYi9IQ3hyc0w5K0ZpQmRLVStIL3d5bDBXUFE2T1ZZSVVGTytB?= =?utf-8?B?T1lLU3EzZCt3ZU1hajVyUjhZWWkzYmR5Sk1KTUFYZ0xOTUNZVGs4TXdLa2I0?= =?utf-8?B?aDFsMGpES01TVG5FNk9WdFpCQVV3OXZSUWFaa0x2ZTE4U2RTeWxUWkR5b0Jj?= =?utf-8?B?eEswTnB2Z0hZYmFKWjU3Sjh1UkUxSjY1QjIzNk0xMnRQenJySTVaeWs5b0Vv?= =?utf-8?B?NUNlZ0RBRy9yQUllQWRVVkZEYUVldUxFZlc5dGpmQXAvTHNWZXg3ODdsdk1u?= =?utf-8?B?a0Y2SWQvNGxTT2VnNXRuK0RGNmt4T1B5S29LNnh3YUZFM3VXbGNBZTJEZlpX?= =?utf-8?B?YTdKWUFSVFUwTld1L1FrNkxJOXRVN2pjaGY5MGQ4UXpVaVNWS0lFSGVTMDBk?= =?utf-8?B?TFBvSnk2S1FqVERqa3pweGxCeE0rYjNKaTRNRzhNQ3M5K2lPRGZ0d3dwREo0?= =?utf-8?Q?+aXaOLzgTjKH82wlcU=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <091BC084DF4CA24F8E57906FBED46F09@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: 6e5c20ca-2880-4fe0-017a-08d96bb221d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Aug 2021 12:31:46.4104 (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: pXeoKlndM2KJcUsajqBecpmK+J+y9sD0K3rVm3La87AmceZDq+htF1BFO+Xbm6WNiVMJR96wgqPVsFjv54SUs63fELi8Bajt+Df3IXaYsMI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR11MB2739 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org T24gOC8yNC8yMSAyOjU0IFBNLCBFdWdlbiBIcmlzdGV2IHdyb3RlOg0KPiBDb252ZXJ0IHRoZSBk cml2ZXIgdG8gcGxhdGZvcm0gc3BlY2lmaWMgc3RydWN0dXJlcy4gVGhpcyBtZWFuczoNCj4gLSBj cmVhdGUgYSByZWdpc3RlciBsYXlvdXQgc3RydWN0IHRoYXQgd2lsbCBob2xkIG9mZnNldHMgZm9y IHJlZ2lzdGVycw0KPiAtIGNyZWF0ZSBhIHBsYXRmb3JtIHN0cnVjdCB0aGF0IHdpbGwgaG9sZCBw bGF0Zm9ybSBpbmZvcm1hdGlvbiAobnVtYmVyIG9mDQo+IGNoYW5uZWxzLCBpbmRleGVzIGZvciBk aWZmZXJlbnQgY2hhbm5lbHMgYW5kIHBvaW50ZXIgdG8gbGF5b3V0IHN0cnVjdCkNCj4gLSBjb252 ZXJ0IHNwZWNpZmljIG1hY3JvcyB0aGF0IGFyZSBwbGF0Zm9ybSBkZXBlbmRlbnQgaW50byBwbGF0 Zm9ybSB2YXJpYWJsZXMNCj4gDQo+IFRoaXMgc3RlcCBpcyBpbiBmYWN0IGEgbm8tb3AsIGJ1dCBh bGxvd3MgdGhlIGRyaXZlciB0byBiZSBtb3JlIGZsZXhpYmxlDQo+IGFuZCBmb3IgZnV0dXJlIGVu aGFuY2VtZW50IGluY2x1ZGluZyBhZGRpbmcgbmV3IHBsYXRmb3JtcyB0aGF0IGFyZSBwYXJ0bHkN Cj4gY29tcGF0aWJsZSB3aXRoIHRoZSBjdXJyZW50IGRyaXZlciBhbmQgZGlmZmVyIHNsaWdodGx5 IGluIHJlZ2lzdGVyIGxheW91dA0KPiBvciBjYXBhYmlsaXRpZXMgZm9yIGV4YW1wbGUuDQo+IA0K PiBTaWduZWQtb2ZmLWJ5OiBFdWdlbiBIcmlzdGV2IDxldWdlbi5ocmlzdGV2QG1pY3JvY2hpcC5j b20+DQo+IC0tLQ0KPiAgIGRyaXZlcnMvaWlvL2FkYy9hdDkxLXNhbWE1ZDJfYWRjLmMgfCA0MTAg KysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0NCj4gICAxIGZpbGUgY2hhbmdlZCwgMjQ3IGlu c2VydGlvbnMoKyksIDE2MyBkZWxldGlvbnMoLSkNCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2lpby9hZGMvYXQ5MS1zYW1hNWQyX2FkYy5jIGIvZHJpdmVycy9paW8vYWRjL2F0OTEtc2FtYTVk Ml9hZGMuYw0KPiBpbmRleCA5ZDcxZGNmZmNmOTMuLjhlZGUxOGI4ZDc4OSAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9paW8vYWRjL2F0OTEtc2FtYTVkMl9hZGMuYw0KPiArKysgYi9kcml2ZXJzL2lp by9hZGMvYXQ5MS1zYW1hNWQyX2FkYy5jDQo+IEBAIC0yNyw4ICsyNyw5IEBADQo+ICAgI2luY2x1 ZGUgPGxpbnV4L3BpbmN0cmwvY29uc3VtZXIuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvcmVndWxh dG9yL2NvbnN1bWVyLmg+DQo+ICAgDQo+ICtzdHJ1Y3QgYXQ5MV9hZGNfcmVnX2xheW91dCB7DQo+ ICAgLyogQ29udHJvbCBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ1IJCTB4 MDANCj4gKwl1MTYJCQkJQ1I7DQo+ICAgLyogU29mdHdhcmUgUmVzZXQgKi8NCj4gICAjZGVmaW5l CUFUOTFfU0FNQTVEMl9DUl9TV1JTVAkJQklUKDApDQo+ICAgLyogU3RhcnQgQ29udmVyc2lvbiAq Lw0KPiBAQCAtMzksNyArNDAsNyBAQA0KPiAgICNkZWZpbmUJQVQ5MV9TQU1BNUQyX0NSX0NNUFJT VAkJQklUKDQpDQo+ICAgDQo+ICAgLyogTW9kZSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkx X1NBTUE1RDJfTVIJCTB4MDQNCj4gKwl1MTYJCQkJTVI7DQo+ICAgLyogVHJpZ2dlciBTZWxlY3Rp b24gKi8NCj4gICAjZGVmaW5lCUFUOTFfU0FNQTVEMl9NUl9UUkdTRUwodikJKCh2KSA8PCAxKQ0K PiAgIC8qIEFEVFJHICovDQo+IEBAIC04MiwxOSArODMsMTkgQEANCj4gICAjZGVmaW5lCUFUOTFf U0FNQTVEMl9NUl9VU0VRCQlCSVQoMzEpDQo+ICAgDQo+ICAgLyogQ2hhbm5lbCBTZXF1ZW5jZSBS ZWdpc3RlciAxICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9TRVFSMQkweDA4DQo+ICsJdTE2 CQkJCVNFUVIxOw0KPiAgIC8qIENoYW5uZWwgU2VxdWVuY2UgUmVnaXN0ZXIgMiAqLw0KPiAtI2Rl ZmluZSBBVDkxX1NBTUE1RDJfU0VRUjIJMHgwYw0KPiArCXUxNgkJCQlTRVFSMjsNCj4gICAvKiBD aGFubmVsIEVuYWJsZSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ0hFUgkw eDEwDQo+ICsJdTE2CQkJCUNIRVI7DQo+ICAgLyogQ2hhbm5lbCBEaXNhYmxlIFJlZ2lzdGVyICov DQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9DSERSCTB4MTQNCj4gKwl1MTYJCQkJQ0hEUjsNCj4g ICAvKiBDaGFubmVsIFN0YXR1cyBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJf Q0hTUgkweDE4DQo+ICsJdTE2CQkJCUNIU1I7DQo+ICAgLyogTGFzdCBDb252ZXJ0ZWQgRGF0YSBS ZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfTENEUgkweDIwDQo+ICsJdTE2CQkJ CUxDRFI7DQo+ICAgLyogSW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBB VDkxX1NBTUE1RDJfSUVSCTB4MjQNCj4gKwl1MTYJCQkJSUVSOw0KPiAgIC8qIEludGVycnVwdCBF bmFibGUgUmVnaXN0ZXIgLSBUUyBYIG1lYXN1cmVtZW50IHJlYWR5ICovDQo+ICAgI2RlZmluZSBB VDkxX1NBTUE1RDJfSUVSX1hSRFkgICBCSVQoMjApDQo+ICAgLyogSW50ZXJydXB0IEVuYWJsZSBS ZWdpc3RlciAtIFRTIFkgbWVhc3VyZW1lbnQgcmVhZHkgKi8NCj4gQEAgLTEwOSwyMiArMTEwLDIz IEBADQo+ICAgI2RlZmluZSBBVDkxX1NBTUE1RDJfSUVSX1BFTiAgICBCSVQoMjkpDQo+ICAgLyog SW50ZXJydXB0IEVuYWJsZSBSZWdpc3RlciAtIE5vIHBlbiBkZXRlY3QgKi8NCj4gICAjZGVmaW5l IEFUOTFfU0FNQTVEMl9JRVJfTk9QRU4gIEJJVCgzMCkNCj4gKw0KPiAgIC8qIEludGVycnVwdCBE aXNhYmxlIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9JRFIJMHgyOA0KPiAr CXUxNgkJCQlJRFI7DQo+ICAgLyogSW50ZXJydXB0IE1hc2sgUmVnaXN0ZXIgKi8NCj4gLSNkZWZp bmUgQVQ5MV9TQU1BNUQyX0lNUgkweDJjDQo+ICsJdTE2CQkJCUlNUjsNCj4gICAvKiBJbnRlcnJ1 cHQgU3RhdHVzIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9JU1IJMHgzMA0K PiArCXUxNgkJCQlJU1I7DQo+ICAgLyogSW50ZXJydXB0IFN0YXR1cyBSZWdpc3RlciAtIFBlbiB0 b3VjaGluZyBzZW5zZSBzdGF0dXMgKi8NCj4gICAjZGVmaW5lIEFUOTFfU0FNQTVEMl9JU1JfUEVO UyAgIEJJVCgzMSkNCj4gICAvKiBMYXN0IENoYW5uZWwgVHJpZ2dlciBNb2RlIFJlZ2lzdGVyICov DQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9MQ1RNUgkweDM0DQo+ICsJdTE2CQkJCUxDVE1SOw0K PiAgIC8qIExhc3QgQ2hhbm5lbCBDb21wYXJlIFdpbmRvdyBSZWdpc3RlciAqLw0KPiAtI2RlZmlu ZSBBVDkxX1NBTUE1RDJfTENDV1IJMHgzOA0KPiArCXUxNgkJCQlMQ0NXUjsNCj4gICAvKiBPdmVy cnVuIFN0YXR1cyBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfT1ZFUgkweDNj DQo+ICsJdTE2CQkJCU9WRVI7DQo+ICAgLyogRXh0ZW5kZWQgTW9kZSBSZWdpc3RlciAqLw0KPiAt I2RlZmluZSBBVDkxX1NBTUE1RDJfRU1SCTB4NDANCj4gKwl1MTYJCQkJRU1SOw0KPiAgIC8qIEV4 dGVuZGVkIE1vZGUgUmVnaXN0ZXIgLSBPdmVyc2FtcGxpbmcgcmF0ZSAqLw0KPiAgICNkZWZpbmUg QVQ5MV9TQU1BNUQyX0VNUl9PU1IoVikJCQkoKFYpIDw8IDE2KQ0KPiAgICNkZWZpbmUgQVQ5MV9T QU1BNUQyX0VNUl9PU1JfTUFTSwkJR0VOTUFTSygxNywgMTYpDQo+IEBAIC0xMzQsMjIgKzEzNiwy MiBAQA0KPiAgIA0KPiAgIC8qIEV4dGVuZGVkIE1vZGUgUmVnaXN0ZXIgLSBBdmVyYWdpbmcgb24g c2luZ2xlIHRyaWdnZXIgZXZlbnQgKi8NCj4gICAjZGVmaW5lIEFUOTFfU0FNQTVEMl9FTVJfQVNU RShWKQkJKChWKSA8PCAyMCkNCj4gKw0KPiAgIC8qIENvbXBhcmUgV2luZG93IFJlZ2lzdGVyICov DQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9DV1IJMHg0NA0KPiArCXUxNgkJCQlDV1I7DQo+ICAg LyogQ2hhbm5lbCBHYWluIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9DR1IJ MHg0OA0KPiAtDQo+ICsJdTE2CQkJCUNHUjsNCj4gICAvKiBDaGFubmVsIE9mZnNldCBSZWdpc3Rl ciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ09SCTB4NGMNCj4gKwl1MTYJCQkJQ09SOw0K PiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX0NPUl9ESUZGX09GRlNFVAkxNg0KPiAgIA0KPiAgIC8q IEFuYWxvZyBDb250cm9sIFJlZ2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9BQ1IJ MHg5NA0KPiArCXUxNgkJCQlBQ1I7DQo+ICAgLyogQW5hbG9nIENvbnRyb2wgUmVnaXN0ZXIgLSBQ ZW4gZGV0ZWN0IHNlbnNpdGl2aXR5IG1hc2sgKi8NCj4gICAjZGVmaW5lIEFUOTFfU0FNQTVEMl9B Q1JfUEVOREVUU0VOU19NQVNLICAgICAgICBHRU5NQVNLKDEsIDApDQo+ICAgDQo+ICAgLyogVG91 Y2hzY3JlZW4gTW9kZSBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfVFNNUgkw eGIwDQo+ICsJdTE2CQkJCVRTTVI7DQo+ICAgLyogVG91Y2hzY3JlZW4gTW9kZSBSZWdpc3RlciAt IE5vIHRvdWNoIG1vZGUgKi8NCj4gICAjZGVmaW5lIEFUOTFfU0FNQTVEMl9UU01SX1RTTU9ERV9O T05FICAgICAgICAgICAwDQo+ICAgLyogVG91Y2hzY3JlZW4gTW9kZSBSZWdpc3RlciAtIDQgd2ly ZSBzY3JlZW4sIG5vIHByZXNzdXJlIG1lYXN1cmVtZW50ICovDQo+IEBAIC0xNzgsMTMgKzE4MCwx MyBAQA0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RTTVJfUEVOREVUX0VOQSAgICAgICAgICAg IEJJVCgyNCkNCj4gICANCj4gICAvKiBUb3VjaHNjcmVlbiBYIFBvc2l0aW9uIFJlZ2lzdGVyICov DQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9YUE9TUgkweGI0DQo+ICsJdTE2CQkJCVhQT1NSOw0K PiAgIC8qIFRvdWNoc2NyZWVuIFkgUG9zaXRpb24gUmVnaXN0ZXIgKi8NCj4gLSNkZWZpbmUgQVQ5 MV9TQU1BNUQyX1lQT1NSCTB4YjgNCj4gKwl1MTYJCQkJWVBPU1I7DQo+ICAgLyogVG91Y2hzY3Jl ZW4gUHJlc3N1cmUgUmVnaXN0ZXIgKi8NCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX1BSRVNTUgkw eGJjDQo+ICsJdTE2CQkJCVBSRVNTUjsNCj4gICAvKiBUcmlnZ2VyIFJlZ2lzdGVyICovDQo+IC0j ZGVmaW5lIEFUOTFfU0FNQTVEMl9UUkdSCTB4YzANCj4gKwl1MTYJCQkJVFJHUjsNCj4gICAvKiBN YXNrIGZvciBUUkdNT0QgZmllbGQgb2YgVFJHUiByZWdpc3RlciAqLw0KPiAgICNkZWZpbmUgQVQ5 MV9TQU1BNUQyX1RSR1JfVFJHTU9EX01BU0sgR0VOTUFTSygyLCAwKQ0KPiAgIC8qIE5vIHRyaWdn ZXIsIG9ubHkgc29mdHdhcmUgdHJpZ2dlciBjYW4gc3RhcnQgY29udmVyc2lvbnMgKi8NCj4gQEAg LTIwMywzMCArMjA1LDUyIEBADQo+ICAgI2RlZmluZSBBVDkxX1NBTUE1RDJfVFJHUl9UUkdQRVIo eCkgICAgICAgICAgICAgKCh4KSA8PCAxNikNCj4gICANCj4gICAvKiBDb3JyZWN0aW9uIFNlbGVj dCBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ09TUgkweGQwDQo+ICsJdTE2 CQkJCUNPU1I7DQo+ICAgLyogQ29ycmVjdGlvbiBWYWx1ZSBSZWdpc3RlciAqLw0KPiAtI2RlZmlu ZSBBVDkxX1NBTUE1RDJfQ1ZSCTB4ZDQNCj4gKwl1MTYJCQkJQ1ZSOw0KPiAgIC8qIENoYW5uZWwg RXJyb3IgQ29ycmVjdGlvbiBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfQ0VD UgkweGQ4DQo+ICsJdTE2CQkJCUNFQ1I7DQo+ICAgLyogV3JpdGUgUHJvdGVjdGlvbiBNb2RlIFJl Z2lzdGVyICovDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9XUE1SCTB4ZTQNCj4gKwl1MTYJCQkJ V1BNUjsNCj4gICAvKiBXcml0ZSBQcm90ZWN0aW9uIFN0YXR1cyBSZWdpc3RlciAqLw0KPiAtI2Rl ZmluZSBBVDkxX1NBTUE1RDJfV1BTUgkweGU4DQo+ICsJdTE2CQkJCVdQU1I7DQo+ICAgLyogVmVy c2lvbiBSZWdpc3RlciAqLw0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfVkVSU0lPTgkweGZjDQo+ IC0NCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX0hXX1RSSUdfQ05UIDMNCj4gLSNkZWZpbmUgQVQ5 MV9TQU1BNUQyX1NJTkdMRV9DSEFOX0NOVCAxMg0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfRElG Rl9DSEFOX0NOVCA2DQo+IC0NCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RJTUVTVEFNUF9DSEFO X0lEWCAoQVQ5MV9TQU1BNUQyX1NJTkdMRV9DSEFOX0NOVCArIFwNCj4gLQkJCQkJIEFUOTFfU0FN QTVEMl9ESUZGX0NIQU5fQ05UICsgMSkNCj4gKwl1MTYJCQkJVkVSU0lPTjsNCj4gK307DQo+ICAg DQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9UT1VDSF9YX0NIQU5fSURYIChBVDkxX1NBTUE1RDJf U0lOR0xFX0NIQU5fQ05UICsgXA0KPiAtCQkJCQkgQVQ5MV9TQU1BNUQyX0RJRkZfQ0hBTl9DTlQg KiAyKQ0KDQpIaSBKb25hdGhhbiwNCg0KV2hpbGUgd2UgYXJlIGhlcmUsIHJlZ2FyZGluZyB0aGUg YWJvdmUgbGluZSwgSSBjYW5ub3QgdGVsbCB3aHkgZGlkIEkgDQptdWx0aXBseSBieSB0d28gdGhl IGRpZmZlcmVudGlhbCBjaGFubmVsIGNvdW50LiBUaGlzIG1ha2VzIHNvbWUgZ2FwcyBpbiANCnRo ZSBudW1iZXIgb2YgY2hhbm5lbHMgd2hlbiB3ZSBwdXQgdGhlbSBhbGwgaW4gdGhlIHNhbWUgdGFi bGUuDQoNCkkgZGlkIG5vdCBjaGFuZ2UgdGhpcyBhcyBpdCB3b3VsZCBicmVhayB0aGUgQUJJIHJl Z2FyZGluZyB0aGUgYmluZGluZ3MgDQpmb3IgdGhlIHRvdWNoc2NyZWVuICNhZGMtY2VsbHMgcGhh bmRsZSByZWZlcmVuY2VzLg0KDQpIb3dldmVyLCBJIGFtIHRoaW5raW5nIGlmIHRoZXJlIHdhcyBh IHJlYXNvbiBmb3IgaXQgb3IgaXQgd2FzIGEgc2xpcCANCndoZW4gSSBpbml0aWFsbHkgd3JvdGUg dGhpcy4NCg0KRG8geW91IHRoaW5rIHRoZXJlIGlzIGFueSByZWFzb24gdG8gY2hhbmdlIGl0IGFu ZCB0aWdodGVuIHRoZSBob2xlcyBpbiANCnRoZSBpbmRleGVzIGxpc3QgPw0KDQoNCkV1Z2VuDQoN Cj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RPVUNIX1lfQ0hBTl9JRFggICAoQVQ5MV9TQU1BNUQy X1RPVUNIX1hfQ0hBTl9JRFggKyAxKQ0KPiAtI2RlZmluZSBBVDkxX1NBTUE1RDJfVE9VQ0hfUF9D SEFOX0lEWCAgIChBVDkxX1NBTUE1RDJfVE9VQ0hfWV9DSEFOX0lEWCArIDEpDQo+IC0jZGVmaW5l IEFUOTFfU0FNQTVEMl9NQVhfQ0hBTl9JRFgJQVQ5MV9TQU1BNUQyX1RPVUNIX1BfQ0hBTl9JRFgN Cj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXQ5MV9hZGNfcmVnX2xheW91dCBzYW1hNWQyX2xheW91 dCA9IHsNCj4gKwkuQ1IgPQkJCTB4MDAsDQo+ICsJLk1SID0JCQkweDA0LA0KPiArCS5TRVFSMSA9 CQkweDA4LA0KPiArCS5TRVFSMiA9CQkweDBjLA0KPiArCS5DSEVSID0JCQkweDEwLA0KPiArCS5D SERSID0JCQkweDE0LA0KPiArCS5DSFNSID0JCQkweDE4LA0KPiArCS5MQ0RSID0JCQkweDIwLA0K PiArCS5JRVIgPQkJCTB4MjQsDQo+ICsJLklEUiA9CQkJMHgyOCwNCj4gKwkuSU1SID0JCQkweDJj LA0KPiArCS5JU1IgPQkJCTB4MzAsDQo+ICsJLkxDVE1SID0JCTB4MzQsDQo+ICsJLkxDQ1dSID0J CTB4MzgsDQo+ICsJLk9WRVIgPQkJCTB4M2MsDQo+ICsJLkVNUiA9CQkJMHg0MCwNCj4gKwkuQ1dS ID0JCQkweDQ0LA0KPiArCS5DR1IgPQkJCTB4NDgsDQo+ICsJLkNPUiA9CQkJMHg0YywNCj4gKwku QUNSID0JCQkweDk0LA0KPiArCS5UU01SID0JCQkweGIwLA0KPiArCS5YUE9TUiA9CQkweGI0LA0K PiArCS5ZUE9TUiA9CQkweGI4LA0KPiArCS5QUkVTU1IgPQkJMHhiYywNCj4gKwkuVFJHUiA9CQkJ MHhjMCwNCj4gKwkuQ09TUiA9CQkJMHhkMCwNCj4gKwkuQ1ZSID0JCQkweGQ0LA0KPiArCS5DRUNS ID0JCQkweGQ4LA0KPiArCS5XUE1SID0JCQkweGU0LA0KPiArCS5XUFNSID0JCQkweGU4LA0KPiAr CS5WRVJTSU9OID0JCTB4ZmMsDQo+ICt9Ow0KPiAgIA0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQy X1RPVUNIX1NBTVBMRV9QRVJJT0RfVVMgICAgICAgICAgMjAwMCAgICAvKiAybXMgKi8NCj4gICAj ZGVmaW5lIEFUOTFfU0FNQTVEMl9UT1VDSF9QRU5fREVURUNUX0RFQk9VTkNFX1VTICAgIDIwMA0K PiBAQCAtMjM1LDE4ICsyNTksNiBAQA0KPiAgIA0KPiAgICNkZWZpbmUgQVQ5MV9TQU1BNUQyX01B WF9QT1NfQklUUwkJCTEyDQo+ICAgDQo+IC0vKg0KPiAtICogTWF4aW11bSBudW1iZXIgb2YgYnl0 ZXMgdG8gaG9sZCBjb252ZXJzaW9uIGZyb20gYWxsIGNoYW5uZWxzDQo+IC0gKiB3aXRob3V0IHRo ZSB0aW1lc3RhbXAuDQo+IC0gKi8NCj4gLSNkZWZpbmUgQVQ5MV9CVUZGRVJfTUFYX0NPTlZFUlNJ T05fQllURVMgKChBVDkxX1NBTUE1RDJfU0lOR0xFX0NIQU5fQ05UICsgXA0KPiAtCQkJCQkgQVQ5 MV9TQU1BNUQyX0RJRkZfQ0hBTl9DTlQpICogMikNCj4gLQ0KPiAtLyogVGhpcyB0b3RhbCBtdXN0 IGFsc28gaW5jbHVkZSB0aGUgdGltZXN0YW1wICovDQo+IC0jZGVmaW5lIEFUOTFfQlVGRkVSX01B WF9CWVRFUyAoQVQ5MV9CVUZGRVJfTUFYX0NPTlZFUlNJT05fQllURVMgKyA4KQ0KPiAtDQo+IC0j ZGVmaW5lIEFUOTFfQlVGRkVSX01BWF9IV09SRFMgKEFUOTFfQlVGRkVSX01BWF9CWVRFUyAvIDIp DQo+IC0NCj4gICAjZGVmaW5lIEFUOTFfSFdGSUZPX01BWF9TSVpFX1NUUgkiMTI4Ig0KPiAgICNk ZWZpbmUgQVQ5MV9IV0ZJRk9fTUFYX1NJWkUJCTEyOA0KPiAgIA0KPiBAQCAtMjU1LDEyICsyNjcs MTIgQEANCj4gICAjZGVmaW5lIEFUOTFfT1NSXzRTQU1QTEVTCQk0DQo+ICAgI2RlZmluZSBBVDkx X09TUl8xNlNBTVBMRVMJCTE2DQo+ICAgDQo+IC0jZGVmaW5lIEFUOTFfU0FNQTVEMl9DSEFOX1NJ TkdMRShudW0sIGFkZHIpCQkJCVwNCj4gKyNkZWZpbmUgQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xF KGluZGV4LCBudW0sIGFkZHIpCQkJXA0KPiAgIAl7CQkJCQkJCQlcDQo+ICAgCQkudHlwZSA9IElJ T19WT0xUQUdFLAkJCQkJXA0KPiAgIAkJLmNoYW5uZWwgPSBudW0sCQkJCQkJXA0KPiAgIAkJLmFk ZHJlc3MgPSBhZGRyLAkJCQkJXA0KPiAtCQkuc2Nhbl9pbmRleCA9IG51bSwJCQkJCVwNCj4gKwkJ LnNjYW5faW5kZXggPSBpbmRleCwJCQkJCVwNCj4gICAJCS5zY2FuX3R5cGUgPSB7CQkJCQkJXA0K PiAgIAkJCS5zaWduID0gJ3UnLAkJCQkJXA0KPiAgIAkJCS5yZWFsYml0cyA9IDE0LAkJCQkJXA0K PiBAQCAtMjc0LDE0ICsyODYsMTQgQEANCj4gICAJCS5pbmRleGVkID0gMSwJCQkJCQlcDQo+ICAg CX0NCj4gICANCj4gLSNkZWZpbmUgQVQ5MV9TQU1BNUQyX0NIQU5fRElGRihudW0sIG51bTIsIGFk ZHIpCQkJCVwNCj4gKyNkZWZpbmUgQVQ5MV9TQU1BNUQyX0NIQU5fRElGRihpbmRleCwgbnVtLCBu dW0yLCBhZGRyKQkJCVwNCj4gICAJewkJCQkJCQkJXA0KPiAgIAkJLnR5cGUgPSBJSU9fVk9MVEFH RSwJCQkJCVwNCj4gICAJCS5kaWZmZXJlbnRpYWwgPSAxLAkJCQkJXA0KPiAgIAkJLmNoYW5uZWwg PSBudW0sCQkJCQkJXA0KPiAgIAkJLmNoYW5uZWwyID0gbnVtMiwJCQkJCVwNCj4gICAJCS5hZGRy ZXNzID0gYWRkciwJCQkJCVwNCj4gLQkJLnNjYW5faW5kZXggPSBudW0gKyBBVDkxX1NBTUE1RDJf U0lOR0xFX0NIQU5fQ05ULAlcDQo+ICsJCS5zY2FuX2luZGV4ID0gaW5kZXgsCQkJCQlcDQo+ICAg CQkuc2Nhbl90eXBlID0gewkJCQkJCVwNCj4gICAJCQkuc2lnbiA9ICdzJywJCQkJCVwNCj4gICAJ CQkucmVhbGJpdHMgPSAxNCwJCQkJCVwNCj4gQEAgLTMyOCwxMyArMzQwLDQ4IEBADQo+ICAgCQku ZGF0YXNoZWV0X25hbWUgPSBuYW1lLAkJCQkJXA0KPiAgIAl9DQo+ICAgDQo+IC0jZGVmaW5lIGF0 OTFfYWRjX3JlYWRsKHN0LCByZWcpCQlyZWFkbF9yZWxheGVkKHN0LT5iYXNlICsgcmVnKQ0KPiAt I2RlZmluZSBhdDkxX2FkY193cml0ZWwoc3QsIHJlZywgdmFsKQl3cml0ZWxfcmVsYXhlZCh2YWws IHN0LT5iYXNlICsgcmVnKQ0KPiArI2RlZmluZSBhdDkxX2FkY19yZWFkbChzdCwgcmVnKQkJCQkJ CVwNCj4gKwlyZWFkbF9yZWxheGVkKChzdCktPmJhc2UgKyAoc3QpLT5zb2NfaW5mby5wbGF0Zm9y bS0+bGF5b3V0LT5yZWcpDQo+ICsjZGVmaW5lIGF0OTFfYWRjX3JlYWRfY2hhbihzdCwgcmVnKQkJ CQkJXA0KPiArCXJlYWRsX3JlbGF4ZWQoKHN0KS0+YmFzZSArIHJlZykNCj4gKyNkZWZpbmUgYXQ5 MV9hZGNfd3JpdGVsKHN0LCByZWcsIHZhbCkJCQkJCVwNCj4gKwl3cml0ZWxfcmVsYXhlZCh2YWws IChzdCktPmJhc2UgKyAoc3QpLT5zb2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0LT5yZWcpDQo+ICsN Cj4gKy8qKg0KPiArICogc3RydWN0IGF0OTFfYWRjX3BsYXRmb3JtIC0gYXQ5MS1zYW1hNWQyIHBs YXRmb3JtIGluZm9ybWF0aW9uIHN0cnVjdA0KPiArICogQGxheW91dDoJCXBvaW50ZXIgdG8gdGhl IHJlZyBsYXlvdXQgc3RydWN0DQo+ICsgKiBAYWRjX2NoYW5uZWxzOglwb2ludGVyIHRvIGFuIGFy cmF5IG9mIGNoYW5uZWxzIGZvciByZWdpc3RlcmluZyBpbg0KPiArICoJCQl0aGUgaWlvIHN1YnN5 c3RlbQ0KPiArICogQG5yX2NoYW5uZWxzOgludW1iZXIgb2YgcGh5c2ljYWwgY2hhbm5lbHMgYXZh aWxhYmxlDQo+ICsgKiBAdG91Y2hfY2hhbl94OglpbmRleCBvZiB0aGUgdG91Y2hzY3JlZW4gWCBj aGFubmVsDQo+ICsgKiBAdG91Y2hfY2hhbl95OglpbmRleCBvZiB0aGUgdG91Y2hzY3JlZW4gWSBj aGFubmVsDQo+ICsgKiBAdG91Y2hfY2hhbl9wOglpbmRleCBvZiB0aGUgdG91Y2hzY3JlZW4gUCBj aGFubmVsDQo+ICsgKiBAbWF4X2NoYW5uZWxzOgludW1iZXIgb2YgdG90YWwgY2hhbm5lbHMNCj4g KyAqIEBod190cmlnX2NudDoJbnVtYmVyIG9mIHBvc3NpYmxlIGhhcmR3YXJlIHRyaWdnZXJzDQo+ ICsgKi8NCj4gK3N0cnVjdCBhdDkxX2FkY19wbGF0Zm9ybSB7DQo+ICsJY29uc3Qgc3RydWN0IGF0 OTFfYWRjX3JlZ19sYXlvdXQJKmxheW91dDsNCj4gKwljb25zdCBzdHJ1Y3QgaWlvX2NoYW5fc3Bl YwkJKCphZGNfY2hhbm5lbHMpW107DQo+ICsJdW5zaWduZWQgaW50CQkJCW5yX2NoYW5uZWxzOw0K PiArCXVuc2lnbmVkIGludAkJCQl0b3VjaF9jaGFuX3g7DQo+ICsJdW5zaWduZWQgaW50CQkJCXRv dWNoX2NoYW5feTsNCj4gKwl1bnNpZ25lZCBpbnQJCQkJdG91Y2hfY2hhbl9wOw0KPiArCXVuc2ln bmVkIGludAkJCQltYXhfY2hhbm5lbHM7DQo+ICsJdW5zaWduZWQgaW50CQkJCWh3X3RyaWdfY250 Ow0KPiArfTsNCj4gICANCj4gKy8qKg0KPiArICogc3RydWN0IGF0OTFfYWRjX3NvY19pbmZvIC0g YXQ5MS1zYW1hNWQyIHNvYyBpbmZvcm1hdGlvbiBzdHJ1Y3QNCj4gKyAqIEBzdGFydHVwX3RpbWU6 CWRldmljZSBzdGFydHVwIHRpbWUNCj4gKyAqIEBtaW5fc2FtcGxlX3JhdGU6CW1pbmltdW0gc2Ft cGxlIHJhdGUgaW4gSHoNCj4gKyAqIEBtYXhfc2FtcGxlX3JhdGU6CW1heGltdW0gc2FtcGxlIHJh dGUgaW4gSHoNCj4gKyAqIEBwbGF0Zm9ybToJCXBvaW50ZXIgdG8gdGhlIHBsYXRmb3JtIHN0cnVj dHVyZQ0KPiArICovDQo+ICAgc3RydWN0IGF0OTFfYWRjX3NvY19pbmZvIHsNCj4gICAJdW5zaWdu ZWQJCQlzdGFydHVwX3RpbWU7DQo+ICAgCXVuc2lnbmVkCQkJbWluX3NhbXBsZV9yYXRlOw0KPiAg IAl1bnNpZ25lZAkJCW1heF9zYW1wbGVfcmF0ZTsNCj4gKwljb25zdCBzdHJ1Y3QgYXQ5MV9hZGNf cGxhdGZvcm0JKnBsYXRmb3JtOw0KPiAgIH07DQo+ICAgDQo+ICAgc3RydWN0IGF0OTFfYWRjX3Ry aWdnZXIgew0KPiBAQCAtMzgyLDYgKzQyOSwxNSBAQCBzdHJ1Y3QgYXQ5MV9hZGNfdG91Y2ggew0K PiAgIAlzdHJ1Y3Qgd29ya19zdHJ1Y3QJCXdvcmtxOw0KPiAgIH07DQo+ICAgDQo+ICsvKg0KPiAr ICogQnVmZmVyIHNpemUgcmVxdWlyZW1lbnRzOg0KPiArICogTm8gY2hhbm5lbHMgKiBieXRlc19w ZXJfY2hhbm5lbCgyKSArIHRpbWVzdGFtcCBieXRlcyAoOCkNCj4gKyAqIERpdmlkZWQgYnkgMiBi ZWNhdXNlIHdlIG5lZWQgaGFsZiB3b3Jkcy4NCj4gKyAqIFdlIGFzc3VtZSAzMiBjaGFubmVscyBm b3Igbm93LCBoYXMgdG8gYmUgaW5jcmVhc2VkIGlmIG5lZWRlZC4NCj4gKyAqIE5vYm9keSBtaW5k cyBhIGJ1ZmZlciBiZWluZyB0b28gYmlnLg0KPiArICovDQo+ICsjZGVmaW5lIEFUOTFfQlVGRkVS X01BWF9IV09SRFMgKCgzMiAqIDIgKyA4KSAvIDIpDQo+ICsNCj4gICBzdHJ1Y3QgYXQ5MV9hZGNf c3RhdGUgew0KPiAgIAl2b2lkIF9faW9tZW0JCQkqYmFzZTsNCj4gICAJaW50CQkJCWlycTsNCj4g QEAgLTQzNywyOSArNDkzLDQ5IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXQ5MV9hZGNfdHJpZ2dl ciBhdDkxX2FkY190cmlnZ2VyX2xpc3RbXSA9IHsNCj4gICAJfSwNCj4gICB9Ow0KPiAgIA0KPiAt c3RhdGljIGNvbnN0IHN0cnVjdCBpaW9fY2hhbl9zcGVjIGF0OTFfYWRjX2NoYW5uZWxzW10gPSB7 DQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDAsIDB4NTApLA0KPiAtCUFUOTFfU0FNQTVE Ml9DSEFOX1NJTkdMRSgxLCAweDU0KSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoMiwg MHg1OCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDMsIDB4NWMpLA0KPiAtCUFUOTFf U0FNQTVEMl9DSEFOX1NJTkdMRSg0LCAweDYwKSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5H TEUoNSwgMHg2NCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDYsIDB4NjgpLA0KPiAt CUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSg3LCAweDZjKSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hB Tl9TSU5HTEUoOCwgMHg3MCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDksIDB4NzQp LA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSgxMCwgMHg3OCksDQo+IC0JQVQ5MV9TQU1B NUQyX0NIQU5fU0lOR0xFKDExLCAweDdjKSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDAs IDEsIDB4NTApLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoMiwgMywgMHg1OCksDQo+IC0J QVQ5MV9TQU1BNUQyX0NIQU5fRElGRig0LCA1LCAweDYwKSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hB Tl9ESUZGKDYsIDcsIDB4NjgpLA0KPiAtCUFUOTFfU0FNQTVEMl9DSEFOX0RJRkYoOCwgOSwgMHg3 MCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fRElGRigxMCwgMTEsIDB4NzgpLA0KPiAtCUlJT19D SEFOX1NPRlRfVElNRVNUQU1QKEFUOTFfU0FNQTVEMl9USU1FU1RBTVBfQ0hBTl9JRFgpLA0KPiAt CUFUOTFfU0FNQTVEMl9DSEFOX1RPVUNIKEFUOTFfU0FNQTVEMl9UT1VDSF9YX0NIQU5fSURYLCAi eCIsIElJT19NT0RfWCksDQo+IC0JQVQ5MV9TQU1BNUQyX0NIQU5fVE9VQ0goQVQ5MV9TQU1BNUQy X1RPVUNIX1lfQ0hBTl9JRFgsICJ5IiwgSUlPX01PRF9ZKSwNCj4gLQlBVDkxX1NBTUE1RDJfQ0hB Tl9QUkVTU1VSRShBVDkxX1NBTUE1RDJfVE9VQ0hfUF9DSEFOX0lEWCwgInByZXNzdXJlIiksDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGlpb19jaGFuX3NwZWMgYXQ5MV9zYW1hNWQyX2FkY19jaGFu bmVsc1tdID0gew0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSgwLCAwLCAweDUwKSwNCj4g KwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoMSwgMSwgMHg1NCksDQo+ICsJQVQ5MV9TQU1BNUQy X0NIQU5fU0lOR0xFKDIsIDIsIDB4NTgpLA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSgz LCAzLCAweDVjKSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUoNCwgNCwgMHg2MCksDQo+ ICsJQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDUsIDUsIDB4NjQpLA0KPiArCUFUOTFfU0FNQTVE Ml9DSEFOX1NJTkdMRSg2LCA2LCAweDY4KSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5HTEUo NywgNywgMHg2YyksDQo+ICsJQVQ5MV9TQU1BNUQyX0NIQU5fU0lOR0xFKDgsIDgsIDB4NzApLA0K PiArCUFUOTFfU0FNQTVEMl9DSEFOX1NJTkdMRSg5LCA5LCAweDc0KSwNCj4gKwlBVDkxX1NBTUE1 RDJfQ0hBTl9TSU5HTEUoMTAsIDEwLCAweDc4KSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9TSU5H TEUoMTEsIDExLCAweDdjKSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDEyLCAwLCAxLCAw eDUwKSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDEzLCAyLCAzLCAweDU4KSwNCj4gKwlB VDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDE0LCA0LCA1LCAweDYwKSwNCj4gKwlBVDkxX1NBTUE1RDJf Q0hBTl9ESUZGKDE1LCA2LCA3LCAweDY4KSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDE2 LCA4LCA5LCAweDcwKSwNCj4gKwlBVDkxX1NBTUE1RDJfQ0hBTl9ESUZGKDE3LCAxMCwgMTEsIDB4 NzgpLA0KPiArCUlJT19DSEFOX1NPRlRfVElNRVNUQU1QKDE4KSwNCj4gKwlBVDkxX1NBTUE1RDJf Q0hBTl9UT1VDSCgxOSwgIngiLCBJSU9fTU9EX1gpLA0KPiArCUFUOTFfU0FNQTVEMl9DSEFOX1RP VUNIKDIwLCAieSIsIElJT19NT0RfWSksDQo+ICsJQVQ5MV9TQU1BNUQyX0NIQU5fUFJFU1NVUkUo MjEsICJwcmVzc3VyZSIpLA0KPiArfTsNCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdDkx X2FkY19wbGF0Zm9ybSBzYW1hNWQyX3BsYXRmb3JtID0gew0KPiArCS5sYXlvdXQgPSAmc2FtYTVk Ml9sYXlvdXQsDQo+ICsJLmFkY19jaGFubmVscyA9ICZhdDkxX3NhbWE1ZDJfYWRjX2NoYW5uZWxz LA0KPiArI2RlZmluZSBBVDkxX1NBTUE1RDJfU0lOR0xFX0NIQU5fQ05UIDEyDQo+ICsjZGVmaW5l IEFUOTFfU0FNQTVEMl9ESUZGX0NIQU5fQ05UIDYNCj4gKwkubnJfY2hhbm5lbHMgPSBBVDkxX1NB TUE1RDJfU0lOR0xFX0NIQU5fQ05UICsNCj4gKwkJICAgICAgIEFUOTFfU0FNQTVEMl9ESUZGX0NI QU5fQ05ULA0KPiArI2RlZmluZSBBVDkxX1NBTUE1RDJfVE9VQ0hfWF9DSEFOX0lEWAkoQVQ5MV9T QU1BNUQyX1NJTkdMRV9DSEFOX0NOVCArIFwNCj4gKwkJCQkJQVQ5MV9TQU1BNUQyX0RJRkZfQ0hB Tl9DTlQgKiAyKQ0KPiArCS50b3VjaF9jaGFuX3ggPSBBVDkxX1NBTUE1RDJfVE9VQ0hfWF9DSEFO X0lEWCwNCj4gKyNkZWZpbmUgQVQ5MV9TQU1BNUQyX1RPVUNIX1lfQ0hBTl9JRFgJKEFUOTFfU0FN QTVEMl9UT1VDSF9YX0NIQU5fSURYICsgMSkNCj4gKwkudG91Y2hfY2hhbl95ID0gQVQ5MV9TQU1B NUQyX1RPVUNIX1lfQ0hBTl9JRFgsDQo+ICsjZGVmaW5lIEFUOTFfU0FNQTVEMl9UT1VDSF9QX0NI QU5fSURYCShBVDkxX1NBTUE1RDJfVE9VQ0hfWV9DSEFOX0lEWCArIDEpDQo+ICsJLnRvdWNoX2No YW5fcCA9IEFUOTFfU0FNQTVEMl9UT1VDSF9QX0NIQU5fSURYLA0KPiArI2RlZmluZSBBVDkxX1NB TUE1RDJfTUFYX0NIQU5fSURYCUFUOTFfU0FNQTVEMl9UT1VDSF9QX0NIQU5fSURYDQo+ICsJLm1h eF9jaGFubmVscyA9IEFSUkFZX1NJWkUoYXQ5MV9zYW1hNWQyX2FkY19jaGFubmVscyksDQo+ICsj ZGVmaW5lIEFUOTFfU0FNQTVEMl9IV19UUklHX0NOVAkzDQo+ICsJLmh3X3RyaWdfY250ID0gQVQ5 MV9TQU1BNUQyX0hXX1RSSUdfQ05ULA0KPiAgIH07DQo+ICAgDQo+ICAgc3RhdGljIGludCBhdDkx X2FkY19jaGFuX3hsYXRlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsIGludCBjaGFuKQ0KPiBA QCAtNDkzLDYgKzU2OSw3IEBAIHN0YXRpYyB1bnNpZ25lZCBpbnQgYXQ5MV9hZGNfYWN0aXZlX3Nj YW5fbWFza190b19yZWcoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikNCj4gICB7DQo+ICAgCXUz MiBtYXNrID0gMDsNCj4gICAJdTggYml0Ow0KPiArCXN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3Qg PSBpaW9fcHJpdihpbmRpb19kZXYpOw0KPiAgIA0KPiAgIAlmb3JfZWFjaF9zZXRfYml0KGJpdCwg aW5kaW9fZGV2LT5hY3RpdmVfc2Nhbl9tYXNrLA0KPiAgIAkJCSBpbmRpb19kZXYtPm51bV9jaGFu bmVscykgew0KPiBAQCAtNTAxLDEzICs1NzgsMTMgQEAgc3RhdGljIHVuc2lnbmVkIGludCBhdDkx X2FkY19hY3RpdmVfc2Nhbl9tYXNrX3RvX3JlZyhzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0K PiAgIAkJbWFzayB8PSBCSVQoY2hhbi0+Y2hhbm5lbCk7DQo+ICAgCX0NCj4gICANCj4gLQlyZXR1 cm4gbWFzayAmIEdFTk1BU0soMTEsIDApOw0KPiArCXJldHVybiBtYXNrICYgR0VOTUFTSyhzdC0+ c29jX2luZm8ucGxhdGZvcm0tPm5yX2NoYW5uZWxzLCAwKTsNCj4gICB9DQo+ICAgDQo+ICAgc3Rh dGljIHZvaWQgYXQ5MV9hZGNfY29uZmlnX2VtcihzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0KQ0K PiAgIHsNCj4gICAJLyogY29uZmlndXJlIHRoZSBleHRlbmRlZCBtb2RlIHJlZ2lzdGVyICovDQo+ IC0JdW5zaWduZWQgaW50IGVtciA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfRU1S KTsNCj4gKwl1bnNpZ25lZCBpbnQgZW1yID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEVNUik7DQo+ICAg DQo+ICAgCS8qIHNlbGVjdCBvdmVyc2FtcGxpbmcgcGVyIHNpbmdsZSB0cmlnZ2VyIGV2ZW50ICov DQo+ICAgCWVtciB8PSBBVDkxX1NBTUE1RDJfRU1SX0FTVEUoMSk7DQo+IEBAIC01MzEsNyArNjA4 LDcgQEAgc3RhdGljIHZvaWQgYXQ5MV9hZGNfY29uZmlnX2VtcihzdHJ1Y3QgYXQ5MV9hZGNfc3Rh dGUgKnN0KQ0KPiAgIAkJYnJlYWs7DQo+ICAgCX0NCj4gICANCj4gLQlhdDkxX2FkY193cml0ZWwo c3QsIEFUOTFfU0FNQTVEMl9FTVIsIGVtcik7DQo+ICsJYXQ5MV9hZGNfd3JpdGVsKHN0LCBFTVIs IGVtcik7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgYXQ5MV9hZGNfYWRqdXN0X3ZhbF9v c3Ioc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCwgaW50ICp2YWwpDQo+IEBAIC01ODQsOSArNjYx LDkgQEAgc3RhdGljIGludCBhdDkxX2FkY19jb25maWd1cmVfdG91Y2goc3RydWN0IGF0OTFfYWRj X3N0YXRlICpzdCwgYm9vbCBzdGF0ZSkNCj4gICANCj4gICAJaWYgKCFzdGF0ZSkgew0KPiAgIAkJ LyogZGlzYWJsaW5nIHRvdWNoIElSUXMgYW5kIHNldHRpbmcgbW9kZSB0byBubyB0b3VjaCBlbmFi bGVkICovDQo+IC0JCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0lEUiwNCj4gKwkJ YXQ5MV9hZGNfd3JpdGVsKHN0LCBJRFIsDQo+ICAgCQkJCUFUOTFfU0FNQTVEMl9JRVJfUEVOIHwg QVQ5MV9TQU1BNUQyX0lFUl9OT1BFTik7DQo+IC0JCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9T QU1BNUQyX1RTTVIsIDApOw0KPiArCQlhdDkxX2FkY193cml0ZWwoc3QsIFRTTVIsIDApOw0KPiAg IAkJcmV0dXJuIDA7DQo+ICAgCX0NCj4gICAJLyoNCj4gQEAgLTYxMiwxOSArNjg5LDE5IEBAIHN0 YXRpYyBpbnQgYXQ5MV9hZGNfY29uZmlndXJlX3RvdWNoKHN0cnVjdCBhdDkxX2FkY19zdGF0ZSAq c3QsIGJvb2wgc3RhdGUpDQo+ICAgCXRzbXIgfD0gQVQ5MV9TQU1BNUQyX1RTTVJfUEVOREVUX0VO QTsNCj4gICAJdHNtciB8PSBBVDkxX1NBTUE1RDJfVFNNUl9UU0ZSRVEoMikgJiBBVDkxX1NBTUE1 RDJfVFNNUl9UU0ZSRVFfTUFTSzsNCj4gICANCj4gLQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFf U0FNQTVEMl9UU01SLCB0c21yKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIFRTTVIsIHRzbXIp Ow0KPiAgIA0KPiAtCWFjciA9ICBhdDkxX2FkY19yZWFkbChzdCwgQVQ5MV9TQU1BNUQyX0FDUik7 DQo+ICsJYWNyID0gIGF0OTFfYWRjX3JlYWRsKHN0LCBBQ1IpOw0KPiAgIAlhY3IgJj0gfkFUOTFf U0FNQTVEMl9BQ1JfUEVOREVUU0VOU19NQVNLOw0KPiAgIAlhY3IgfD0gMHgwMiAmIEFUOTFfU0FN QTVEMl9BQ1JfUEVOREVUU0VOU19NQVNLOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9T QU1BNUQyX0FDUiwgYWNyKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIEFDUiwgYWNyKTsNCj4g ICANCj4gICAJLyogU2FtcGxlIFBlcmlvZCBUaW1lID0gKFRSR1BFUiArIDEpIC8gQURDQ2xvY2sg Ki8NCj4gICAJc3QtPnRvdWNoX3N0LnNhbXBsZV9wZXJpb2RfdmFsID0NCj4gICAJCQkJIHJvdW5k X3VwKChBVDkxX1NBTUE1RDJfVE9VQ0hfU0FNUExFX1BFUklPRF9VUyAqDQo+ICAgCQkJCSBjbGtf a2h6IC8gMTAwMCkgLSAxLCAxKTsNCj4gICAJLyogZW5hYmxlIHBlbiBkZXRlY3QgSVJRICovDQo+ IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfSUVSLCBBVDkxX1NBTUE1RDJfSUVS X1BFTik7DQo+ICsJYXQ5MV9hZGNfd3JpdGVsKHN0LCBJRVIsIEFUOTFfU0FNQTVEMl9JRVJfUEVO KTsNCj4gICANCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiBAQCAtNjQwLDcgKzcxNywxMSBAQCBz dGF0aWMgdTE2IGF0OTFfYWRjX3RvdWNoX3BvcyhzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0LCBp bnQgcmVnKQ0KPiAgIAkgKiBtYXggPSAyXkFUOTFfU0FNQTVEMl9NQVhfUE9TX0JJVFMgLSAxDQo+ ICAgCSAqLw0KPiAgIAkvKiBmaXJzdCBoYWxmIG9mIHJlZ2lzdGVyIGlzIHRoZSB4IG9yIHksIHNl Y29uZCBoYWxmIGlzIHRoZSBzY2FsZSAqLw0KPiAtCXZhbCA9IGF0OTFfYWRjX3JlYWRsKHN0LCBy ZWcpOw0KPiArCWlmIChyZWcgPT0gc3QtPnNvY19pbmZvLnBsYXRmb3JtLT5sYXlvdXQtPlhQT1NS KQ0KPiArCQl2YWwgPSBhdDkxX2FkY19yZWFkbChzdCwgWFBPU1IpOw0KPiArCWVsc2UgaWYgKHJl ZyA9PSBzdC0+c29jX2luZm8ucGxhdGZvcm0tPmxheW91dC0+WVBPU1IpDQo+ICsJCXZhbCA9IGF0 OTFfYWRjX3JlYWRsKHN0LCBZUE9TUik7DQo+ICsNCj4gICAJaWYgKCF2YWwpDQo+ICAgCQlkZXZf ZGJnKCZzdC0+aW5kaW9fZGV2LT5kZXYsICJwb3MgaXMgMFxuIik7DQo+ICAgDQo+IEBAIC02NTgs MTMgKzczOSwxMyBAQCBzdGF0aWMgdTE2IGF0OTFfYWRjX3RvdWNoX3BvcyhzdHJ1Y3QgYXQ5MV9h ZGNfc3RhdGUgKnN0LCBpbnQgcmVnKQ0KPiAgIA0KPiAgIHN0YXRpYyB1MTYgYXQ5MV9hZGNfdG91 Y2hfeF9wb3Moc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCkNCj4gICB7DQo+IC0Jc3QtPnRvdWNo X3N0LnhfcG9zID0gYXQ5MV9hZGNfdG91Y2hfcG9zKHN0LCBBVDkxX1NBTUE1RDJfWFBPU1IpOw0K PiArCXN0LT50b3VjaF9zdC54X3BvcyA9IGF0OTFfYWRjX3RvdWNoX3BvcyhzdCwgc3QtPnNvY19p bmZvLnBsYXRmb3JtLT5sYXlvdXQtPlhQT1NSKTsNCj4gICAJcmV0dXJuIHN0LT50b3VjaF9zdC54 X3BvczsNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHUxNiBhdDkxX2FkY190b3VjaF95X3Bvcyhz dHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0KQ0KPiAgIHsNCj4gLQlyZXR1cm4gYXQ5MV9hZGNfdG91 Y2hfcG9zKHN0LCBBVDkxX1NBTUE1RDJfWVBPU1IpOw0KPiArCXJldHVybiBhdDkxX2FkY190b3Vj aF9wb3Moc3QsIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0LT5ZUE9TUik7DQo+ICAgfQ0K PiAgIA0KPiAgIHN0YXRpYyB1MTYgYXQ5MV9hZGNfdG91Y2hfcHJlc3N1cmUoc3RydWN0IGF0OTFf YWRjX3N0YXRlICpzdCkNCj4gQEAgLTY3Niw3ICs3NTcsNyBAQCBzdGF0aWMgdTE2IGF0OTFfYWRj X3RvdWNoX3ByZXNzdXJlKHN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QpDQo+ICAgCXUzMiBmYWN0 b3IgPSAxMDAwOw0KPiAgIA0KPiAgIAkvKiBjYWxjdWxhdGUgdGhlIHByZXNzdXJlICovDQo+IC0J dmFsID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVEMl9QUkVTU1IpOw0KPiArCXZhbCA9 IGF0OTFfYWRjX3JlYWRsKHN0LCBQUkVTU1IpOw0KPiAgIAl6MSA9IHZhbCAmIEFUOTFfU0FNQTVE Ml9YWVpfTUFTSzsNCj4gICAJejIgPSAodmFsID4+IDE2KSAmIEFUOTFfU0FNQTVEMl9YWVpfTUFT SzsNCj4gICANCj4gQEAgLTcwMCw5ICs3ODEsOSBAQCBzdGF0aWMgaW50IGF0OTFfYWRjX3JlYWRf cG9zaXRpb24oc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCwgaW50IGNoYW4sIHUxNiAqdmFsKQ0K PiAgIAkqdmFsID0gMDsNCj4gICAJaWYgKCFzdC0+dG91Y2hfc3QudG91Y2hpbmcpDQo+ICAgCQly ZXR1cm4gLUVOT0RBVEE7DQo+IC0JaWYgKGNoYW4gPT0gQVQ5MV9TQU1BNUQyX1RPVUNIX1hfQ0hB Tl9JRFgpDQo+ICsJaWYgKGNoYW4gPT0gc3QtPnNvY19pbmZvLnBsYXRmb3JtLT50b3VjaF9jaGFu X3gpDQo+ICAgCQkqdmFsID0gYXQ5MV9hZGNfdG91Y2hfeF9wb3Moc3QpOw0KPiAtCWVsc2UgaWYg KGNoYW4gPT0gQVQ5MV9TQU1BNUQyX1RPVUNIX1lfQ0hBTl9JRFgpDQo+ICsJZWxzZSBpZiAoY2hh biA9PSBzdC0+c29jX2luZm8ucGxhdGZvcm0tPnRvdWNoX2NoYW5feSkNCj4gICAJCSp2YWwgPSBh dDkxX2FkY190b3VjaF95X3BvcyhzdCk7DQo+ICAgCWVsc2UNCj4gICAJCXJldHVybiAtRU5PREFU QTsNCj4gQEAgLTcxNSw3ICs3OTYsNyBAQCBzdGF0aWMgaW50IGF0OTFfYWRjX3JlYWRfcHJlc3N1 cmUoc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCwgaW50IGNoYW4sIHUxNiAqdmFsKQ0KPiAgIAkq dmFsID0gMDsNCj4gICAJaWYgKCFzdC0+dG91Y2hfc3QudG91Y2hpbmcpDQo+ICAgCQlyZXR1cm4g LUVOT0RBVEE7DQo+IC0JaWYgKGNoYW4gPT0gQVQ5MV9TQU1BNUQyX1RPVUNIX1BfQ0hBTl9JRFgp DQo+ICsJaWYgKGNoYW4gPT0gc3QtPnNvY19pbmZvLnBsYXRmb3JtLT50b3VjaF9jaGFuX3kpDQo+ ICAgCQkqdmFsID0gYXQ5MV9hZGNfdG91Y2hfcHJlc3N1cmUoc3QpOw0KPiAgIAllbHNlDQo+ICAg CQlyZXR1cm4gLUVOT0RBVEE7DQo+IEBAIC03MjcsNyArODA4LDcgQEAgc3RhdGljIGludCBhdDkx X2FkY19jb25maWd1cmVfdHJpZ2dlcihzdHJ1Y3QgaWlvX3RyaWdnZXIgKnRyaWcsIGJvb2wgc3Rh dGUpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW8gPSBpaW9fdHJpZ2dlcl9nZXRf ZHJ2ZGF0YSh0cmlnKTsNCj4gICAJc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2 KGluZGlvKTsNCj4gLQl1MzIgc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVE Ml9UUkdSKTsNCj4gKwl1MzIgc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIFRSR1IpOw0KPiAg IA0KPiAgIAkvKiBjbGVhciBUUkdNT0QgKi8NCj4gICAJc3RhdHVzICY9IH5BVDkxX1NBTUE1RDJf VFJHUl9UUkdNT0RfTUFTSzsNCj4gQEAgLTczNiw3ICs4MTcsNyBAQCBzdGF0aWMgaW50IGF0OTFf YWRjX2NvbmZpZ3VyZV90cmlnZ2VyKHN0cnVjdCBpaW9fdHJpZ2dlciAqdHJpZywgYm9vbCBzdGF0 ZSkNCj4gICAJCXN0YXR1cyB8PSBzdC0+c2VsZWN0ZWRfdHJpZy0+dHJnbW9kX3ZhbHVlOw0KPiAg IA0KPiAgIAkvKiBzZXQvdW5zZXQgaHcgdHJpZ2dlciAqLw0KPiAtCWF0OTFfYWRjX3dyaXRlbChz dCwgQVQ5MV9TQU1BNUQyX1RSR1IsIHN0YXR1cyk7DQo+ICsJYXQ5MV9hZGNfd3JpdGVsKHN0LCBU UkdSLCBzdGF0dXMpOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+IEBAIC03NTMsNyAr ODM0LDcgQEAgc3RhdGljIHZvaWQgYXQ5MV9hZGNfcmVlbmFibGVfdHJpZ2dlcihzdHJ1Y3QgaWlv X3RyaWdnZXIgKnRyaWcpDQo+ICAgCWVuYWJsZV9pcnEoc3QtPmlycSk7DQo+ICAgDQo+ICAgCS8q IE5lZWRlZCB0byBBQ0sgdGhlIERSRFkgaW50ZXJydXB0aW9uICovDQo+IC0JYXQ5MV9hZGNfcmVh ZGwoc3QsIEFUOTFfU0FNQTVEMl9MQ0RSKTsNCj4gKwlhdDkxX2FkY19yZWFkbChzdCwgTENEUik7 DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaWlvX3RyaWdnZXJfb3BzIGF0 OTFfYWRjX3RyaWdnZXJfb3BzID0gew0KPiBAQCAtODQ4LDcgKzkyOSw3IEBAIHN0YXRpYyBpbnQg YXQ5MV9hZGNfZG1hX3N0YXJ0KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ICAgCX0NCj4g ICANCj4gICAJLyogZW5hYmxlIGdlbmVyYWwgb3ZlcnJ1biBlcnJvciBzaWduYWxpbmcgKi8NCj4g LQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRVIsIEFUOTFfU0FNQTVEMl9JRVJf R09WUkUpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgSUVSLCBBVDkxX1NBTUE1RDJfSUVSX0dP VlJFKTsNCj4gICAJLyogSXNzdWUgcGVuZGluZyBETUEgcmVxdWVzdHMgKi8NCj4gICAJZG1hX2Fz eW5jX2lzc3VlX3BlbmRpbmcoc3QtPmRtYV9zdC5kbWFfY2hhbik7DQo+ICAgDQo+IEBAIC04Nzgs NyArOTU5LDcgQEAgc3RhdGljIGJvb2wgYXQ5MV9hZGNfY3VycmVudF9jaGFuX2lzX3RvdWNoKHN0 cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ICAgDQo+ICAgCXJldHVybiAhIWJpdG1hcF9zdWJz ZXQoaW5kaW9fZGV2LT5hY3RpdmVfc2Nhbl9tYXNrLA0KPiAgIAkJCSAgICAgICAmc3QtPnRvdWNo X3N0LmNoYW5uZWxzX2JpdG1hc2ssDQo+IC0JCQkgICAgICAgQVQ5MV9TQU1BNUQyX01BWF9DSEFO X0lEWCArIDEpOw0KPiArCQkJICAgICAgIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bWF4X2NoYW5u ZWxzICsgMSk7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgYXQ5MV9hZGNfYnVmZmVyX3By ZXBhcmUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikNCj4gQEAgLTkxNSw3ICs5OTYsNyBAQCBz dGF0aWMgaW50IGF0OTFfYWRjX2J1ZmZlcl9wcmVwYXJlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19k ZXYpDQo+ICAgCQkgICAgY2hhbi0+dHlwZSA9PSBJSU9fUFJFU1NVUkUpDQo+ICAgCQkJY29udGlu dWU7DQo+ICAgDQo+IC0JCWNvciA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfQ09S KTsNCj4gKwkJY29yID0gYXQ5MV9hZGNfcmVhZGwoc3QsIENPUik7DQo+ICAgDQo+ICAgCQlpZiAo Y2hhbi0+ZGlmZmVyZW50aWFsKQ0KPiAgIAkJCWNvciB8PSAoQklUKGNoYW4tPmNoYW5uZWwpIHwg QklUKGNoYW4tPmNoYW5uZWwyKSkgPDwNCj4gQEAgLTkyNCwxMyArMTAwNSwxMyBAQCBzdGF0aWMg aW50IGF0OTFfYWRjX2J1ZmZlcl9wcmVwYXJlKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ ICAgCQkJY29yICY9IH4oQklUKGNoYW4tPmNoYW5uZWwpIDw8DQo+ICAgCQkJICAgICAgIEFUOTFf U0FNQTVEMl9DT1JfRElGRl9PRkZTRVQpOw0KPiAgIA0KPiAtCQlhdDkxX2FkY193cml0ZWwoc3Qs IEFUOTFfU0FNQTVEMl9DT1IsIGNvcik7DQo+ICsJCWF0OTFfYWRjX3dyaXRlbChzdCwgQ09SLCBj b3IpOw0KPiAgIA0KPiAtCQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9DSEVSLCBC SVQoY2hhbi0+Y2hhbm5lbCkpOw0KPiArCQlhdDkxX2FkY193cml0ZWwoc3QsIENIRVIsIEJJVChj aGFuLT5jaGFubmVsKSk7DQo+ICAgCX0NCj4gICANCj4gICAJaWYgKGF0OTFfYWRjX2J1ZmZlcl9j aGVja191c2VfaXJxKGluZGlvX2Rldiwgc3QpKQ0KPiAtCQlhdDkxX2FkY193cml0ZWwoc3QsIEFU OTFfU0FNQTVEMl9JRVIsIEFUOTFfU0FNQTVEMl9JRVJfRFJEWSk7DQo+ICsJCWF0OTFfYWRjX3dy aXRlbChzdCwgSUVSLCBBVDkxX1NBTUE1RDJfSUVSX0RSRFkpOw0KPiAgIA0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+IEBAIC05NjYsMTcgKzEwNDcsMTcgQEAgc3RhdGljIGludCBhdDkxX2FkY19i dWZmZXJfcG9zdGRpc2FibGUoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldikNCj4gICAJCSAgICBj aGFuLT50eXBlID09IElJT19QUkVTU1VSRSkNCj4gICAJCQljb250aW51ZTsNCj4gICANCj4gLQkJ YXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfQ0hEUiwgQklUKGNoYW4tPmNoYW5uZWwp KTsNCj4gKwkJYXQ5MV9hZGNfd3JpdGVsKHN0LCBDSERSLCBCSVQoY2hhbi0+Y2hhbm5lbCkpOw0K PiAgIA0KPiAgIAkJaWYgKHN0LT5kbWFfc3QuZG1hX2NoYW4pDQo+IC0JCQlhdDkxX2FkY19yZWFk bChzdCwgY2hhbi0+YWRkcmVzcyk7DQo+ICsJCQlhdDkxX2FkY19yZWFkX2NoYW4oc3QsIGNoYW4t PmFkZHJlc3MpOw0KPiAgIAl9DQo+ICAgDQo+ICAgCWlmIChhdDkxX2FkY19idWZmZXJfY2hlY2tf dXNlX2lycShpbmRpb19kZXYsIHN0KSkNCj4gLQkJYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NB TUE1RDJfSURSLCBBVDkxX1NBTUE1RDJfSUVSX0RSRFkpOw0KPiArCQlhdDkxX2FkY193cml0ZWwo c3QsIElEUiwgQVQ5MV9TQU1BNUQyX0lFUl9EUkRZKTsNCj4gICANCj4gICAJLyogcmVhZCBvdmVy ZmxvdyByZWdpc3RlciB0byBjbGVhciBwb3NzaWJsZSBvdmVyZmxvdyBzdGF0dXMgKi8NCj4gLQlh dDkxX2FkY19yZWFkbChzdCwgQVQ5MV9TQU1BNUQyX09WRVIpOw0KPiArCWF0OTFfYWRjX3JlYWRs KHN0LCBPVkVSKTsNCj4gICANCj4gICAJLyogaWYgd2UgYXJlIHVzaW5nIERNQSB3ZSBtdXN0IGNs ZWFyIHJlZ2lzdGVycyBhbmQgZW5kIERNQSAqLw0KPiAgIAlpZiAoc3QtPmRtYV9zdC5kbWFfY2hh bikNCj4gQEAgLTEwMjQsNyArMTEwNSw3IEBAIHN0YXRpYyB2b2lkIGF0OTFfYWRjX3RyaWdnZXJf aGFuZGxlcl9ub2RtYShzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2LA0KPiAgIAkgKiBDaGVjayBp ZiB0aGUgY29udmVyc2lvbiBpcyByZWFkeS4gSWYgbm90LCB3YWl0IGEgbGl0dGxlIGJpdCwgYW5k DQo+ICAgCSAqIGluIGNhc2Ugb2YgdGltZW91dCBleGl0IHdpdGggYW4gZXJyb3IuDQo+ICAgCSAq Lw0KPiAtCXdoaWxlICgoYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FNQTVEMl9JU1IpICYgbWFz aykgIT0gbWFzayAmJg0KPiArCXdoaWxlICgoYXQ5MV9hZGNfcmVhZGwoc3QsIElTUikgJiBtYXNr KSAhPSBtYXNrICYmDQo+ICAgCSAgICAgICB0aW1lb3V0KSB7DQo+ICAgCQl1c2xlZXBfcmFuZ2Uo NTAsIDEwMCk7DQo+ICAgCQl0aW1lb3V0LS07DQo+IEBAIC0xMDUyLDcgKzExMzMsNyBAQCBzdGF0 aWMgdm9pZCBhdDkxX2FkY190cmlnZ2VyX2hhbmRsZXJfbm9kbWEoc3RydWN0IGlpb19kZXYgKmlu ZGlvX2RldiwNCj4gICAJCSAqIFRodXMsIGVtaXQgYSB3YXJuaW5nLg0KPiAgIAkJICovDQo+ICAg CQlpZiAoY2hhbi0+dHlwZSA9PSBJSU9fVk9MVEFHRSkgew0KPiAtCQkJdmFsID0gYXQ5MV9hZGNf cmVhZGwoc3QsIGNoYW4tPmFkZHJlc3MpOw0KPiArCQkJdmFsID0gYXQ5MV9hZGNfcmVhZF9jaGFu KHN0LCBjaGFuLT5hZGRyZXNzKTsNCj4gICAJCQlhdDkxX2FkY19hZGp1c3RfdmFsX29zcihzdCwg JnZhbCk7DQo+ICAgCQkJc3QtPmJ1ZmZlcltpXSA9IHZhbDsNCj4gICAJCX0gZWxzZSB7DQo+IEBA IC0xMDczLDcgKzExNTQsNyBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY190cmlnZ2VyX2hhbmRsZXJf ZG1hKHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYpDQo+ICAgCXM2NCBpbnRlcnZhbDsNCj4gICAJ aW50IHNhbXBsZV9pbmRleCA9IDAsIHNhbXBsZV9jb3VudCwgc2FtcGxlX3NpemU7DQo+ICAgDQo+ IC0JdTMyIHN0YXR1cyA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfSVNSKTsNCj4g Kwl1MzIgc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIElTUik7DQo+ICAgCS8qIGlmIHdlIHJl YWNoZWQgdGhpcyBwb2ludCwgd2UgY2Fubm90IHNhbXBsZSBmYXN0ZXIgKi8NCj4gICAJaWYgKHN0 YXR1cyAmIEFUOTFfU0FNQTVEMl9JRVJfR09WUkUpDQo+ICAgCQlwcl9pbmZvX3JhdGVsaW1pdGVk KCIlczogY29udmVyc2lvbiBvdmVycnVuIGRldGVjdGVkXG4iLA0KPiBAQCAtMTEyNSw3ICsxMjA2 LDcgQEAgc3RhdGljIGlycXJldHVybl90IGF0OTFfYWRjX3RyaWdnZXJfaGFuZGxlcihpbnQgaXJx LCB2b2lkICpwKQ0KPiAgIAkgKiBhY3R1YWxseSBwb2xsaW5nIHRoZSB0cmlnZ2VyIG5vdy4NCj4g ICAJICovDQo+ICAgCWlmIChpaW9fdHJpZ2dlcl92YWxpZGF0ZV9vd25fZGV2aWNlKGluZGlvX2Rl di0+dHJpZywgaW5kaW9fZGV2KSkNCj4gLQkJYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1 RDJfQ1IsIEFUOTFfU0FNQTVEMl9DUl9TVEFSVCk7DQo+ICsJCWF0OTFfYWRjX3dyaXRlbChzdCwg Q1IsIEFUOTFfU0FNQTVEMl9DUl9TVEFSVCk7DQo+ICAgDQo+ICAgCWlmIChzdC0+ZG1hX3N0LmRt YV9jaGFuKQ0KPiAgIAkJYXQ5MV9hZGNfdHJpZ2dlcl9oYW5kbGVyX2RtYShpbmRpb19kZXYpOw0K PiBAQCAtMTE3MiwxMSArMTI1MywxMSBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY19zZXR1cF9zYW1w X2ZyZXEoc3RydWN0IGlpb19kZXYgKmluZGlvX2RldiwgdW5zaWduZWQgZnJlcSkNCj4gICAJc3Rh cnR1cCA9IGF0OTFfYWRjX3N0YXJ0dXBfdGltZShzdC0+c29jX2luZm8uc3RhcnR1cF90aW1lLA0K PiAgIAkJCQkJZnJlcSAvIDEwMDApOw0KPiAgIA0KPiAtCW1yID0gYXQ5MV9hZGNfcmVhZGwoc3Qs IEFUOTFfU0FNQTVEMl9NUik7DQo+ICsJbXIgPSBhdDkxX2FkY19yZWFkbChzdCwgTVIpOw0KPiAg IAltciAmPSB+KEFUOTFfU0FNQTVEMl9NUl9TVEFSVFVQX01BU0sgfCBBVDkxX1NBTUE1RDJfTVJf UFJFU0NBTF9NQVNLKTsNCj4gICAJbXIgfD0gQVQ5MV9TQU1BNUQyX01SX1NUQVJUVVAoc3RhcnR1 cCk7DQo+ICAgCW1yIHw9IEFUOTFfU0FNQTVEMl9NUl9QUkVTQ0FMKHByZXNjYWwpOw0KPiAtCWF0 OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX01SLCBtcik7DQo+ICsJYXQ5MV9hZGNfd3Jp dGVsKHN0LCBNUiwgbXIpOw0KPiAgIA0KPiAgIAlkZXZfZGJnKCZpbmRpb19kZXYtPmRldiwgImZy ZXE6ICV1LCBzdGFydHVwOiAldSwgcHJlc2NhbDogJXVcbiIsDQo+ICAgCQlmcmVxLCBzdGFydHVw LCBwcmVzY2FsKTsNCj4gQEAgLTExOTYsNyArMTI3Nyw3IEBAIHN0YXRpYyB2b2lkIGF0OTFfYWRj X3RvdWNoX2RhdGFfaGFuZGxlcihzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIAlpbnQg aSA9IDA7DQo+ICAgDQo+ICAgCWZvcl9lYWNoX3NldF9iaXQoYml0LCBpbmRpb19kZXYtPmFjdGl2 ZV9zY2FuX21hc2ssDQo+IC0JCQkgQVQ5MV9TQU1BNUQyX01BWF9DSEFOX0lEWCArIDEpIHsNCj4g KwkJCSBzdC0+c29jX2luZm8ucGxhdGZvcm0tPm1heF9jaGFubmVscyArIDEpIHsNCj4gICAJCXN0 cnVjdCBpaW9fY2hhbl9zcGVjIGNvbnN0ICpjaGFuID0NCj4gICAJCQkJCSBhdDkxX2FkY19jaGFu X2dldChpbmRpb19kZXYsIGJpdCk7DQo+ICAgDQo+IEBAIC0xMjIyLDEyICsxMzAzLDExIEBAIHN0 YXRpYyB2b2lkIGF0OTFfYWRjX3RvdWNoX2RhdGFfaGFuZGxlcihzdHJ1Y3QgaWlvX2RldiAqaW5k aW9fZGV2KQ0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIGF0OTFfYWRjX3Blbl9kZXRlY3RfaW50ZXJy dXB0KHN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QpDQo+ICAgew0KPiAtCWF0OTFfYWRjX3dyaXRl bChzdCwgQVQ5MV9TQU1BNUQyX0lEUiwgQVQ5MV9TQU1BNUQyX0lFUl9QRU4pOw0KPiAtCWF0OTFf YWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0lFUiwgQVQ5MV9TQU1BNUQyX0lFUl9OT1BFTiB8 DQo+ICsJYXQ5MV9hZGNfd3JpdGVsKHN0LCBJRFIsIEFUOTFfU0FNQTVEMl9JRVJfUEVOKTsNCj4g KwlhdDkxX2FkY193cml0ZWwoc3QsIElFUiwgQVQ5MV9TQU1BNUQyX0lFUl9OT1BFTiB8DQo+ICAg CQkJQVQ5MV9TQU1BNUQyX0lFUl9YUkRZIHwgQVQ5MV9TQU1BNUQyX0lFUl9ZUkRZIHwNCj4gICAJ CQlBVDkxX1NBTUE1RDJfSUVSX1BSRFkpOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9T QU1BNUQyX1RSR1IsDQo+IC0JCQlBVDkxX1NBTUE1RDJfVFJHUl9UUkdNT0RfUEVSSU9ESUMgfA0K PiArCWF0OTFfYWRjX3dyaXRlbChzdCwgVFJHUiwgQVQ5MV9TQU1BNUQyX1RSR1JfVFJHTU9EX1BF UklPRElDIHwNCj4gICAJCQlBVDkxX1NBTUE1RDJfVFJHUl9UUkdQRVIoc3QtPnRvdWNoX3N0LnNh bXBsZV9wZXJpb2RfdmFsKSk7DQo+ICAgCXN0LT50b3VjaF9zdC50b3VjaGluZyA9IHRydWU7DQo+ ICAgfQ0KPiBAQCAtMTIzNiwxNiArMTMxNiwxNSBAQCBzdGF0aWMgdm9pZCBhdDkxX2FkY19ub19w ZW5fZGV0ZWN0X2ludGVycnVwdChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIHsNCj4g ICAJc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ICAg DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfVFJHUiwNCj4gLQkJCUFUOTFf U0FNQTVEMl9UUkdSX1RSR01PRF9OT19UUklHR0VSKTsNCj4gLQlhdDkxX2FkY193cml0ZWwoc3Qs IEFUOTFfU0FNQTVEMl9JRFIsIEFUOTFfU0FNQTVEMl9JRVJfTk9QRU4gfA0KPiArCWF0OTFfYWRj X3dyaXRlbChzdCwgVFJHUiwgQVQ5MV9TQU1BNUQyX1RSR1JfVFJHTU9EX05PX1RSSUdHRVIpOw0K PiArCWF0OTFfYWRjX3dyaXRlbChzdCwgSURSLCBBVDkxX1NBTUE1RDJfSUVSX05PUEVOIHwNCj4g ICAJCQlBVDkxX1NBTUE1RDJfSUVSX1hSRFkgfCBBVDkxX1NBTUE1RDJfSUVSX1lSRFkgfA0KPiAg IAkJCUFUOTFfU0FNQTVEMl9JRVJfUFJEWSk7DQo+ICAgCXN0LT50b3VjaF9zdC50b3VjaGluZyA9 IGZhbHNlOw0KPiAgIA0KPiAgIAlhdDkxX2FkY190b3VjaF9kYXRhX2hhbmRsZXIoaW5kaW9fZGV2 KTsNCj4gICANCj4gLQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FNQTVEMl9JRVIsIEFUOTFf U0FNQTVEMl9JRVJfUEVOKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIElFUiwgQVQ5MV9TQU1B NUQyX0lFUl9QRU4pOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBhdDkxX2FkY193b3Jr cV9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29ya3EpDQo+IEBAIC0xMjYzLDggKzEzNDIs OCBAQCBzdGF0aWMgaXJxcmV0dXJuX3QgYXQ5MV9hZGNfaW50ZXJydXB0KGludCBpcnEsIHZvaWQg KnByaXZhdGUpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW8gPSBwcml2YXRlOw0K PiAgIAlzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW8pOw0KPiAtCXUz MiBzdGF0dXMgPSBhdDkxX2FkY19yZWFkbChzdCwgQVQ5MV9TQU1BNUQyX0lTUik7DQo+IC0JdTMy IGltciA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NBTUE1RDJfSU1SKTsNCj4gKwl1MzIgc3Rh dHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIElTUik7DQo+ICsJdTMyIGltciA9IGF0OTFfYWRjX3Jl YWRsKHN0LCBJTVIpOw0KPiAgIAl1MzIgcmR5X21hc2sgPSBBVDkxX1NBTUE1RDJfSUVSX1hSRFkg fCBBVDkxX1NBTUE1RDJfSUVSX1lSRFkgfA0KPiAgIAkJCUFUOTFfU0FNQTVEMl9JRVJfUFJEWTsN Cj4gICANCj4gQEAgLTEyODUsOSArMTM2NCw5IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBhdDkxX2Fk Y19pbnRlcnJ1cHQoaW50IGlycSwgdm9pZCAqcHJpdmF0ZSkNCj4gICAJCSAqIHRvdWNoaW5nLCBi dXQgdGhlIG1lYXN1cmVtZW50cyBhcmUgbm90IHJlYWR5IHlldC4NCj4gICAJCSAqIHJlYWQgYW5k IGlnbm9yZS4NCj4gICAJCSAqLw0KPiAtCQlzdGF0dXMgPSBhdDkxX2FkY19yZWFkbChzdCwgQVQ5 MV9TQU1BNUQyX1hQT1NSKTsNCj4gLQkJc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFf U0FNQTVEMl9ZUE9TUik7DQo+IC0JCXN0YXR1cyA9IGF0OTFfYWRjX3JlYWRsKHN0LCBBVDkxX1NB TUE1RDJfUFJFU1NSKTsNCj4gKwkJc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIFhQT1NSKTsN Cj4gKwkJc3RhdHVzID0gYXQ5MV9hZGNfcmVhZGwoc3QsIFlQT1NSKTsNCj4gKwkJc3RhdHVzID0g YXQ5MV9hZGNfcmVhZGwoc3QsIFBSRVNTUik7DQo+ICAgCX0gZWxzZSBpZiAoaWlvX2J1ZmZlcl9l bmFibGVkKGluZGlvKSAmJg0KPiAgIAkJICAgKHN0YXR1cyAmIEFUOTFfU0FNQTVEMl9JRVJfRFJE WSkpIHsNCj4gICAJCS8qIHRyaWdnZXJlZCBidWZmZXIgd2l0aG91dCBETUEgKi8NCj4gQEAgLTEy OTksNyArMTM3OCw3IEBAIHN0YXRpYyBpcnFyZXR1cm5fdCBhdDkxX2FkY19pbnRlcnJ1cHQoaW50 IGlycSwgdm9pZCAqcHJpdmF0ZSkNCj4gICAJCVdBUk4odHJ1ZSwgIlVuZXhwZWN0ZWQgaXJxIG9j Y3VycmVkXG4iKTsNCj4gICAJfSBlbHNlIGlmICghaWlvX2J1ZmZlcl9lbmFibGVkKGluZGlvKSkg ew0KPiAgIAkJLyogc29mdHdhcmUgcmVxdWVzdGVkIGNvbnZlcnNpb24gKi8NCj4gLQkJc3QtPmNv bnZlcnNpb25fdmFsdWUgPSBhdDkxX2FkY19yZWFkbChzdCwgc3QtPmNoYW4tPmFkZHJlc3MpOw0K PiArCQlzdC0+Y29udmVyc2lvbl92YWx1ZSA9IGF0OTFfYWRjX3JlYWRfY2hhbihzdCwgc3QtPmNo YW4tPmFkZHJlc3MpOw0KPiAgIAkJc3QtPmNvbnZlcnNpb25fZG9uZSA9IHRydWU7DQo+ICAgCQl3 YWtlX3VwX2ludGVycnVwdGlibGUoJnN0LT53cV9kYXRhX2F2YWlsYWJsZSk7DQo+ICAgCX0NCj4g QEAgLTEzNjAsMTAgKzE0MzksMTAgQEAgc3RhdGljIGludCBhdDkxX2FkY19yZWFkX2luZm9fcmF3 KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsDQo+ICAgCQljb3IgPSAoQklUKGNoYW4tPmNoYW5u ZWwpIHwgQklUKGNoYW4tPmNoYW5uZWwyKSkgPDwNCj4gICAJCSAgICAgIEFUOTFfU0FNQTVEMl9D T1JfRElGRl9PRkZTRVQ7DQo+ICAgDQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1 RDJfQ09SLCBjb3IpOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0NIRVIs IEJJVChjaGFuLT5jaGFubmVsKSk7DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1 RDJfSUVSLCBCSVQoY2hhbi0+Y2hhbm5lbCkpOw0KPiAtCWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5 MV9TQU1BNUQyX0NSLCBBVDkxX1NBTUE1RDJfQ1JfU1RBUlQpOw0KPiArCWF0OTFfYWRjX3dyaXRl bChzdCwgQ09SLCBjb3IpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgQ0hFUiwgQklUKGNoYW4t PmNoYW5uZWwpKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIElFUiwgQklUKGNoYW4tPmNoYW5u ZWwpKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIENSLCBBVDkxX1NBTUE1RDJfQ1JfU1RBUlQp Ow0KPiAgIA0KPiAgIAlyZXQgPSB3YWl0X2V2ZW50X2ludGVycnVwdGlibGVfdGltZW91dChzdC0+ d3FfZGF0YV9hdmFpbGFibGUsDQo+ICAgCQkJCQkgICAgICAgc3QtPmNvbnZlcnNpb25fZG9uZSwN Cj4gQEAgLTEzNzksMTEgKzE0NTgsMTEgQEAgc3RhdGljIGludCBhdDkxX2FkY19yZWFkX2luZm9f cmF3KHN0cnVjdCBpaW9fZGV2ICppbmRpb19kZXYsDQo+ICAgCQlzdC0+Y29udmVyc2lvbl9kb25l ID0gZmFsc2U7DQo+ICAgCX0NCj4gICANCj4gLQlhdDkxX2FkY193cml0ZWwoc3QsIEFUOTFfU0FN QTVEMl9JRFIsIEJJVChjaGFuLT5jaGFubmVsKSk7DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBB VDkxX1NBTUE1RDJfQ0hEUiwgQklUKGNoYW4tPmNoYW5uZWwpKTsNCj4gKwlhdDkxX2FkY193cml0 ZWwoc3QsIElEUiwgQklUKGNoYW4tPmNoYW5uZWwpKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3Qs IENIRFIsIEJJVChjaGFuLT5jaGFubmVsKSk7DQo+ICAgDQo+ICAgCS8qIE5lZWRlZCB0byBBQ0sg dGhlIERSRFkgaW50ZXJydXB0aW9uICovDQo+IC0JYXQ5MV9hZGNfcmVhZGwoc3QsIEFUOTFfU0FN QTVEMl9MQ0RSKTsNCj4gKwlhdDkxX2FkY19yZWFkbChzdCwgTENEUik7DQo+ICAgDQo+ICAgCW11 dGV4X3VubG9jaygmc3QtPmxvY2spOw0KPiAgIA0KPiBAQCAtMTQ1NSwxNCArMTUzNCwxNSBAQCBz dGF0aWMgdm9pZCBhdDkxX2FkY19kbWFfaW5pdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2 KQ0KPiAgIAlzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEo cGRldik7DQo+ICAgCXN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRpb19k ZXYpOw0KPiAgIAlzdHJ1Y3QgZG1hX3NsYXZlX2NvbmZpZyBjb25maWcgPSB7MH07DQo+ICsJLyog d2UgaGF2ZSAyIGJ5dGVzIGZvciBlYWNoIGNoYW5uZWwgKi8NCj4gKwl1bnNpZ25lZCBpbnQgc2Ft cGxlX3NpemUgPSBzdC0+c29jX2luZm8ucGxhdGZvcm0tPm5yX2NoYW5uZWxzICogMjsNCj4gICAJ LyoNCj4gICAJICogV2UgbWFrZSB0aGUgYnVmZmVyIGRvdWJsZSB0aGUgc2l6ZSBvZiB0aGUgZmlm bywNCj4gICAJICogc3VjaCB0aGF0IERNQSB1c2VzIG9uZSBoYWxmIG9mIHRoZSBidWZmZXIgKGZ1 bGwgZmlmbyBzaXplKQ0KPiAgIAkgKiBhbmQgdGhlIHNvZnR3YXJlIHVzZXMgdGhlIG90aGVyIGhh bGYgdG8gcmVhZC93cml0ZS4NCj4gICAJICovDQo+ICAgCXVuc2lnbmVkIGludCBwYWdlcyA9IERJ Vl9ST1VORF9VUChBVDkxX0hXRklGT19NQVhfU0laRSAqDQo+IC0JCQkJCSAgQVQ5MV9CVUZGRVJf TUFYX0NPTlZFUlNJT05fQllURVMgKiAyLA0KPiAtCQkJCQkgIFBBR0VfU0laRSk7DQo+ICsJCQkJ CSAgc2FtcGxlX3NpemUgKiAyLCBQQUdFX1NJWkUpOw0KPiAgIA0KPiAgIAlpZiAoc3QtPmRtYV9z dC5kbWFfY2hhbikNCj4gICAJCXJldHVybjsNCj4gQEAgLTE0ODYsNyArMTU2Niw3IEBAIHN0YXRp YyB2b2lkIGF0OTFfYWRjX2RtYV9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ ICAgCS8qIENvbmZpZ3VyZSBETUEgY2hhbm5lbCB0byByZWFkIGRhdGEgcmVnaXN0ZXIgKi8NCj4g ICAJY29uZmlnLmRpcmVjdGlvbiA9IERNQV9ERVZfVE9fTUVNOw0KPiAgIAljb25maWcuc3JjX2Fk ZHIgPSAocGh5c19hZGRyX3QpKHN0LT5kbWFfc3QucGh5c19hZGRyDQo+IC0JCQkgICsgQVQ5MV9T QU1BNUQyX0xDRFIpOw0KPiArCQkJICArIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0LT5M Q0RSKTsNCj4gICAJY29uZmlnLnNyY19hZGRyX3dpZHRoID0gRE1BX1NMQVZFX0JVU1dJRFRIXzJf QllURVM7DQo+ICAgCWNvbmZpZy5zcmNfbWF4YnVyc3QgPSAxOw0KPiAgIAljb25maWcuZHN0X21h eGJ1cnN0ID0gMTsNCj4gQEAgLTE1MTUsOSArMTU5NSwxMCBAQCBzdGF0aWMgdm9pZCBhdDkxX2Fk Y19kbWFfZGlzYWJsZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIHsNCj4gICAJ c3RydWN0IGlpb19kZXYgKmluZGlvX2RldiA9IHBsYXRmb3JtX2dldF9kcnZkYXRhKHBkZXYpOw0K PiAgIAlzdHJ1Y3QgYXQ5MV9hZGNfc3RhdGUgKnN0ID0gaWlvX3ByaXYoaW5kaW9fZGV2KTsNCj4g KwkvKiB3ZSBoYXZlIDIgYnl0ZXMgZm9yIGVhY2ggY2hhbm5lbCAqLw0KPiArCXVuc2lnbmVkIGlu dCBzYW1wbGVfc2l6ZSA9IHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bnJfY2hhbm5lbHMgKiAyOw0K PiAgIAl1bnNpZ25lZCBpbnQgcGFnZXMgPSBESVZfUk9VTkRfVVAoQVQ5MV9IV0ZJRk9fTUFYX1NJ WkUgKg0KPiAtCQkJCQkgIEFUOTFfQlVGRkVSX01BWF9DT05WRVJTSU9OX0JZVEVTICogMiwNCj4g LQkJCQkJICBQQUdFX1NJWkUpOw0KPiArCQkJCQkgIHNhbXBsZV9zaXplICogMiwgUEFHRV9TSVpF KTsNCj4gICANCj4gICAJLyogaWYgd2UgYXJlIG5vdCB1c2luZyBETUEsIGp1c3QgcmV0dXJuICov DQo+ICAgCWlmICghc3QtPmRtYV9zdC5kbWFfY2hhbikNCj4gQEAgLTE1NzgsMTQgKzE2NTksMTQg QEAgc3RhdGljIGludCBhdDkxX2FkY191cGRhdGVfc2Nhbl9tb2RlKHN0cnVjdCBpaW9fZGV2ICpp bmRpb19kZXYsDQo+ICAgCXN0cnVjdCBhdDkxX2FkY19zdGF0ZSAqc3QgPSBpaW9fcHJpdihpbmRp b19kZXYpOw0KPiAgIA0KPiAgIAlpZiAoYml0bWFwX3N1YnNldChzY2FuX21hc2ssICZzdC0+dG91 Y2hfc3QuY2hhbm5lbHNfYml0bWFzaywNCj4gLQkJCSAgQVQ5MV9TQU1BNUQyX01BWF9DSEFOX0lE WCArIDEpKQ0KPiArCQkJICBzdC0+c29jX2luZm8ucGxhdGZvcm0tPm1heF9jaGFubmVscyArIDEp KQ0KPiAgIAkJcmV0dXJuIDA7DQo+ICAgCS8qDQo+ICAgCSAqIGlmIHRoZSBuZXcgYml0bWFwIGlz IGEgY29tYmluYXRpb24gb2YgdG91Y2hzY3JlZW4gYW5kIHJlZ3VsYXINCj4gICAJICogY2hhbm5l bHMsIHRoZW4gd2UgYXJlIG5vdCBmaW5lDQo+ICAgCSAqLw0KPiAgIAlpZiAoYml0bWFwX2ludGVy c2VjdHMoJnN0LT50b3VjaF9zdC5jaGFubmVsc19iaXRtYXNrLCBzY2FuX21hc2ssDQo+IC0JCQkg ICAgICBBVDkxX1NBTUE1RDJfTUFYX0NIQU5fSURYICsgMSkpDQo+ICsJCQkgICAgICBzdC0+c29j X2luZm8ucGxhdGZvcm0tPm1heF9jaGFubmVscyArIDEpKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7 DQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gQEAgLTE1OTQsMTMgKzE2NzUsMTMgQEAgc3RhdGlj IHZvaWQgYXQ5MV9hZGNfaHdfaW5pdChzdHJ1Y3QgaWlvX2RldiAqaW5kaW9fZGV2KQ0KPiAgIHsN Cj4gICAJc3RydWN0IGF0OTFfYWRjX3N0YXRlICpzdCA9IGlpb19wcml2KGluZGlvX2Rldik7DQo+ ICAgDQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfQ1IsIEFUOTFfU0FNQTVE Ml9DUl9TV1JTVCk7DQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBBVDkxX1NBTUE1RDJfSURSLCAw eGZmZmZmZmZmKTsNCj4gKwlhdDkxX2FkY193cml0ZWwoc3QsIENSLCBBVDkxX1NBTUE1RDJfQ1Jf U1dSU1QpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgSURSLCAweGZmZmZmZmZmKTsNCj4gICAJ LyoNCj4gICAJICogVHJhbnNmZXIgZmllbGQgbXVzdCBiZSBzZXQgdG8gMiBhY2NvcmRpbmcgdG8g dGhlIGRhdGFzaGVldCBhbmQNCj4gICAJICogYWxsb3dzIGRpZmZlcmVudCBhbmFsb2cgc2V0dGlu Z3MgZm9yIGVhY2ggY2hhbm5lbC4NCj4gICAJICovDQo+IC0JYXQ5MV9hZGNfd3JpdGVsKHN0LCBB VDkxX1NBTUE1RDJfTVIsDQo+ICsJYXQ5MV9hZGNfd3JpdGVsKHN0LCBNUiwNCj4gICAJCQlBVDkx X1NBTUE1RDJfTVJfVFJBTlNGRVIoMikgfCBBVDkxX1NBTUE1RDJfTVJfQU5BQ0gpOw0KPiAgIA0K PiAgIAlhdDkxX2FkY19zZXR1cF9zYW1wX2ZyZXEoaW5kaW9fZGV2LCBzdC0+c29jX2luZm8ubWlu X3NhbXBsZV9yYXRlKTsNCj4gQEAgLTE3MTYsMjEgKzE3OTcsMjMgQEAgc3RhdGljIGludCBhdDkx X2FkY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIAlpZiAoIWluZGlv X2RldikNCj4gICAJCXJldHVybiAtRU5PTUVNOw0KPiAgIA0KPiArCXN0ID0gaWlvX3ByaXYoaW5k aW9fZGV2KTsNCj4gKwlzdC0+aW5kaW9fZGV2ID0gaW5kaW9fZGV2Ow0KPiArDQo+ICsJc3QtPnNv Y19pbmZvLnBsYXRmb3JtID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpOw0K PiArDQo+ICAgCWluZGlvX2Rldi0+bmFtZSA9IGRldl9uYW1lKCZwZGV2LT5kZXYpOw0KPiAgIAlp bmRpb19kZXYtPm1vZGVzID0gSU5ESU9fRElSRUNUX01PREUgfCBJTkRJT19CVUZGRVJfU09GVFdB UkU7DQo+ICAgCWluZGlvX2Rldi0+aW5mbyA9ICZhdDkxX2FkY19pbmZvOw0KPiAtCWluZGlvX2Rl di0+Y2hhbm5lbHMgPSBhdDkxX2FkY19jaGFubmVsczsNCj4gLQlpbmRpb19kZXYtPm51bV9jaGFu bmVscyA9IEFSUkFZX1NJWkUoYXQ5MV9hZGNfY2hhbm5lbHMpOw0KPiAtDQo+IC0Jc3QgPSBpaW9f cHJpdihpbmRpb19kZXYpOw0KPiAtCXN0LT5pbmRpb19kZXYgPSBpbmRpb19kZXY7DQo+ICsJaW5k aW9fZGV2LT5jaGFubmVscyA9ICpzdC0+c29jX2luZm8ucGxhdGZvcm0tPmFkY19jaGFubmVsczsN Cj4gKwlpbmRpb19kZXYtPm51bV9jaGFubmVscyA9IHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+bWF4 X2NoYW5uZWxzOw0KPiAgIA0KPiAgIAliaXRtYXBfc2V0KCZzdC0+dG91Y2hfc3QuY2hhbm5lbHNf Yml0bWFzaywNCj4gLQkJICAgQVQ5MV9TQU1BNUQyX1RPVUNIX1hfQ0hBTl9JRFgsIDEpOw0KPiAr CQkgICBzdC0+c29jX2luZm8ucGxhdGZvcm0tPnRvdWNoX2NoYW5feCwgMSk7DQo+ICAgCWJpdG1h cF9zZXQoJnN0LT50b3VjaF9zdC5jaGFubmVsc19iaXRtYXNrLA0KPiAtCQkgICBBVDkxX1NBTUE1 RDJfVE9VQ0hfWV9DSEFOX0lEWCwgMSk7DQo+ICsJCSAgIHN0LT5zb2NfaW5mby5wbGF0Zm9ybS0+ dG91Y2hfY2hhbl95LCAxKTsNCj4gICAJYml0bWFwX3NldCgmc3QtPnRvdWNoX3N0LmNoYW5uZWxz X2JpdG1hc2ssDQo+IC0JCSAgIEFUOTFfU0FNQTVEMl9UT1VDSF9QX0NIQU5fSURYLCAxKTsNCj4g KwkJICAgc3QtPnNvY19pbmZvLnBsYXRmb3JtLT50b3VjaF9jaGFuX3AsIDEpOw0KPiAgIA0KPiAg IAlzdC0+b3ZlcnNhbXBsaW5nX3JhdGlvID0gQVQ5MV9PU1JfMVNBTVBMRVM7DQo+ICAgDQo+IEBA IC0xNzcwLDcgKzE4NTMsNyBAQCBzdGF0aWMgaW50IGF0OTFfYWRjX3Byb2JlKHN0cnVjdCBwbGF0 Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAgCXN0LT5zZWxlY3RlZF90cmlnID0gTlVMTDsNCj4gICAN Cj4gICAJLyogZmluZCB0aGUgcmlnaHQgdHJpZ2dlciwgb3Igbm8gdHJpZ2dlciBhdCBhbGwgKi8N Cj4gLQlmb3IgKGkgPSAwOyBpIDwgQVQ5MV9TQU1BNUQyX0hXX1RSSUdfQ05UICsgMTsgaSsrKQ0K PiArCWZvciAoaSA9IDA7IGkgPCBzdC0+c29jX2luZm8ucGxhdGZvcm0tPmh3X3RyaWdfY250ICsg MTsgaSsrKQ0KPiAgIAkJaWYgKGF0OTFfYWRjX3RyaWdnZXJfbGlzdFtpXS5lZGdlX3R5cGUgPT0g ZWRnZV90eXBlKSB7DQo+ICAgCQkJc3QtPnNlbGVjdGVkX3RyaWcgPSAmYXQ5MV9hZGNfdHJpZ2dl cl9saXN0W2ldOw0KPiAgIAkJCWJyZWFrOw0KPiBAQCAtMTg1NSw3ICsxOTM4LDcgQEAgc3RhdGlj IGludCBhdDkxX2FkY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgIAkJ CSBzdC0+c2VsZWN0ZWRfdHJpZy0+bmFtZSk7DQo+ICAgDQo+ICAgCWRldl9pbmZvKCZwZGV2LT5k ZXYsICJ2ZXJzaW9uOiAleFxuIiwNCj4gLQkJIHJlYWRsX3JlbGF4ZWQoc3QtPmJhc2UgKyBBVDkx X1NBTUE1RDJfVkVSU0lPTikpOw0KPiArCQkgcmVhZGxfcmVsYXhlZChzdC0+YmFzZSArIHN0LT5z b2NfaW5mby5wbGF0Zm9ybS0+bGF5b3V0LT5WRVJTSU9OKSk7DQo+ICAgDQo+ICAgCXJldHVybiAw Ow0KPiAgIA0KPiBAQCAtMTg5OCw3ICsxOTgxLDcgQEAgc3RhdGljIF9fbWF5YmVfdW51c2VkIGlu dCBhdDkxX2FkY19zdXNwZW5kKHN0cnVjdCBkZXZpY2UgKmRldikNCj4gICAJICogYW5kIGNhbiBi ZSB1c2VkIGJ5IGZvciBvdGhlciBkZXZpY2VzLg0KPiAgIAkgKiBPdGhlcndpc2UsIEFEQyB3aWxs IGhvZyB0aGVtIGFuZCB3ZSBjYW4ndCBnbyB0byBzdXNwZW5kIG1vZGUuDQo+ICAgCSAqLw0KPiAt CWF0OTFfYWRjX3dyaXRlbChzdCwgQVQ5MV9TQU1BNUQyX0NSLCBBVDkxX1NBTUE1RDJfQ1JfU1dS U1QpOw0KPiArCWF0OTFfYWRjX3dyaXRlbChzdCwgQ1IsIEFUOTFfU0FNQTVEMl9DUl9TV1JTVCk7 DQo+ICAgDQo+ICAgCWNsa19kaXNhYmxlX3VucHJlcGFyZShzdC0+cGVyX2Nsayk7DQo+ICAgCXJl Z3VsYXRvcl9kaXNhYmxlKHN0LT52cmVmKTsNCj4gQEAgLTE5NTgsNiArMjA0MSw3IEBAIHN0YXRp YyBTSU1QTEVfREVWX1BNX09QUyhhdDkxX2FkY19wbV9vcHMsIGF0OTFfYWRjX3N1c3BlbmQsIGF0 OTFfYWRjX3Jlc3VtZSk7DQo+ICAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXQ5 MV9hZGNfZHRfbWF0Y2hbXSA9IHsNCj4gICAJew0KPiAgIAkJLmNvbXBhdGlibGUgPSAiYXRtZWws c2FtYTVkMi1hZGMiLA0KPiArCQkuZGF0YSA9IChjb25zdCB2b2lkICopJnNhbWE1ZDJfcGxhdGZv cm0sDQo+ICAgCX0sIHsNCj4gICAJCS8qIHNlbnRpbmVsICovDQo+ICAgCX0NCj4gDQoNCg==