Received: by 2002:a05:6359:c8b:b0:c7:702f:21d4 with SMTP id go11csp4710124rwb; Tue, 20 Sep 2022 19:13:24 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7fZ3gEdMvII4+KmNQ6vjtnHQLD2PAOwKYaQEh+ahcwvYAyzFsirtjHmeSNWsZVW/TlJ7ZV X-Received: by 2002:a17:902:ac98:b0:176:9e76:a930 with SMTP id h24-20020a170902ac9800b001769e76a930mr2468113plr.15.1663726404051; Tue, 20 Sep 2022 19:13:24 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1663726404; cv=pass; d=google.com; s=arc-20160816; b=Eanbrn0N2K5jbXlHhTN666ky6IT5djr2PyWE+p03G7w2eGrkUK+9PxJ6GLtzy698BM GGS+8Id+CeVf9tjqsa/g6WXVotMF9hVlGsuZQwTqkBDKzCKW4fW+1DEFn0KvpoRy+U2X Fhl3FaWJ1P+2ARwoZBjl84//HAXGGsanuj8cY0dUazsdQl+oWk2YP7dngUrPybYNGW7n MtjupUp+0Ls5qP5gF1e3tY355uFA2+uILgVZ+iqLUexfQv8af9U41+w3cHI94zqEZS1T AfF5L0e/bkpFZ6fJLSVMWVKdaJES49B3DVSeM9StPpf6IJHmg8YhVwouWEkUt/vLmJyw EuLA== 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-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:cc:to:from:dkim-signature; bh=ZtZQpIFhkCwzjYCNlX6DHqJu9Qwsix1P8Etf6imUXL8=; b=art3PnNRg0kHwtsENppX/Nk+8PPhA6MXSmeRqNmfJEWiQX3J4/9+VF10TzXIrGm17d 02Qvm19Dw3yWCo3HiY3CbkaCdLfEzkiprLb/JxtFgbMSRrXshgoD4f43FICERMxcwTK3 2Hk7GdTOhnkrzJLgwCzT9GWpe6fdb7y+WWYE5ya9vDeEwyE3erbGPPPkrQWFTVr5tTzD QaINdMVV2zY7m8s39QnWdaqMjZ3H+/sIkrbV5eaa2kw9dPsZpap3j0HXWRs1/m5jQO3h 7Mwcv2gCymPfeNikAX/Mu2iogwA8uMDCF6mVRUCtek0f2Mx7VbWx04ZfQqsnXC9MfVV8 ZNPw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b="Wq/oxa25"; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id lp18-20020a17090b4a9200b001f311d42a69si1615340pjb.41.2022.09.20.19.13.10; Tue, 20 Sep 2022 19:13:24 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b="Wq/oxa25"; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231561AbiIUBue (ORCPT + 99 others); Tue, 20 Sep 2022 21:50:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43420 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229649AbiIUBua (ORCPT ); Tue, 20 Sep 2022 21:50:30 -0400 Received: from EUR02-AM5-obe.outbound.protection.outlook.com (mail-eopbgr00040.outbound.protection.outlook.com [40.107.0.40]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2BE05419A9; Tue, 20 Sep 2022 18:50:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Iiw9zbeBiBOt0vFduO7XPIJaSypjk9F+q3xmlgscX7ayVEB5nHENEy40TA/1Z6zsXPT+YdDuE8V3LLmr1UmE/RgwO1ElixTl+Tq9XpB8VJaUGMPZkmzx1qb204vQ0KOayQcCcSQvY7iEpB5IY2SdoTDvAc0d07FgahZcV+lJmr14dBuzjceUgf3DvGsPIQmQODFfdHFVOIwvUJ8WsI5bG2qmgMwL+h56otU2BqP6u7OGuMBmbTLauA0RGh+xm2HABCSFktwpjqsqIFht1BHN5iDxreVTA+gaEe/qGHP+nLWiKIEVW5lkCt5VCMkltIv+ykv45uJzMuQ5jmVWhiHsrw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=ZtZQpIFhkCwzjYCNlX6DHqJu9Qwsix1P8Etf6imUXL8=; b=jkmTK4Sx2/DguP8K5EHJZdz7IW5O7hvVtLJ4oya9KQo8U0h/p1N1Zuw6Fd/msucaMAkP5jSIfF154cBcmA/Lta3QT5h04zahOzI/RI8N91qkNMoz+WPotOAUeDAjze/3YcscUmoZKhcBCeGJKnRraqp7o3w7spHLonrwa8EhfLSkvPDqqle/ziMImvBQaXw4mcB3XSx1OPMwjOW6oHebdysPl9KvtubVAL2NbkrltlkYZqoNEhqDBW1QeGlrG0sz63u/GH7D13EJ/Ut+BN3WgNd1rbQ1+zWDj/HkneiHrPSBdoDN0iZ79QjsBYT+PTgwyc/8sTxhjk7X2PUKpvRydg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=ZtZQpIFhkCwzjYCNlX6DHqJu9Qwsix1P8Etf6imUXL8=; b=Wq/oxa25L1pbR//lB2DqFpb1V6s9SyfPy/GkXstsBOtsBUVe8+dZdtrvh1psFGP1vMmekqLnUdGSraV+pa403gDMqB9wQgEeQQGrxIrI/qvsYG03fjFWswr13cwrAGzTK9xsRlwXU+teblNvyDWOPEZ+4oOKlF8TdVQ5CGOxd7I= Received: from AM6PR04MB6341.eurprd04.prod.outlook.com (2603:10a6:20b:d8::14) by DBBPR04MB8043.eurprd04.prod.outlook.com (2603:10a6:10:1e7::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.21; Wed, 21 Sep 2022 01:50:25 +0000 Received: from AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::4550:e439:2389:be53]) by AM6PR04MB6341.eurprd04.prod.outlook.com ([fe80::4550:e439:2389:be53%5]) with mapi id 15.20.5632.024; Wed, 21 Sep 2022 01:50:24 +0000 From: Ming Qian To: "Mirela Rabulea (OSS)" , "mchehab@kernel.org" , "hverkuil-cisco@xs4all.nl" CC: "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "kernel@pengutronix.de" , "festevam@gmail.com" , "X.H. Bao" , dl-linux-imx , "linux-media@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" Subject: RE: [PATCH 1/2] media: imx-jpeg: Implement g_selection and s_selection Thread-Topic: [PATCH 1/2] media: imx-jpeg: Implement g_selection and s_selection Thread-Index: AQHYpZBoktn97qzfvk2rk2e6Z54KUq3pMw0AgAA39JA= Date: Wed, 21 Sep 2022 01:50:24 +0000 Message-ID: References: <4dc6db09e35ee1cfd05d548607f8a79ab5bb0ec4.1659349092.git.ming.qian@nxp.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: AM6PR04MB6341:EE_|DBBPR04MB8043:EE_ x-ms-office365-filtering-correlation-id: ac91da9b-cc35-4680-ef43-08da9b73a6d4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: WJXGEEm6k3LXBekg+fik3LxNWamC8D3poBt+qDLAte6gs4H2FZ5e54V8QrqZa9k1MCuXtUYgD+7mV9UH0XrTEP5MqfSDcumpVl3Y55qTxP5wlAMIb8mRRuU0cVuey0DUPjc4aBn/DIRiXoVku4kZ/GdFmUZdhvwrNIvdE/r0LBEARCXn5YinD7d8a1pWOdcpNSUW7OfYsFOK7jXBgh6I69jtlP1We2gNfrNWgw/x/0RIa0tY41XD43GyhoabSixzmGPzBX528pqupTBKonIuN5BirT7GAd3R4v1BiP/GSQ0k9claXMqAatAPPM9R5HiR+5rrn9oqsnmWxQdKfjbReZ3a/kGGQaFaso37Va7Y3TOU1eXM4KAxwlwL5E7rdXRb3WVbzLT9EKBGppZk9qHt5YhOPHgBsfa4UyZpsGcpbRzoJPde3d20Nnb0PJvxBPMgEPizjl/ibJRRL0nDW0dsottPUj2hXNYnB22wO7hkCHRv9vNWsfwOg8Oy72Y+s15CNwrqAHD55SbDxNryV0atS4IOXfybDpdxi6ugNocKVTBg/hFvy6J3x96qk24QXshQ7JIFWCAPRkcREyn2a188sQSFAallDH7qfaproSjQyOvlhm325JoUBbQrOrNw6trKeuQS+RPbIqcJ3c06luEL+ByqfO0o/FK5hqF+hDC67Mr4ccwox7p5a/QTvYM3Zz2OEdZLImcP5o5cLpR08MCRSC3ggQ1wuRCJ9NX2RwfHHEIAmUDO8uRNmD4x70qTR7UPy0AfBgISEOHM61mfR/vMU01hK9Cm5w+PsJRF4Brmrd4= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR04MB6341.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(136003)(39860400002)(376002)(396003)(346002)(451199015)(38100700002)(8676002)(71200400001)(41300700001)(33656002)(316002)(30864003)(110136005)(7416002)(54906003)(86362001)(44832011)(83380400001)(478600001)(2906002)(55016003)(9686003)(26005)(122000001)(7696005)(6506007)(5660300002)(38070700005)(64756008)(66556008)(66446008)(8936002)(186003)(66476007)(52536014)(4326008)(66946007)(76116006)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZUlFSFB6OThCRlh1Tk1USXJNb2Ixd0RlVkpIZlB6dTBMZ2JtV2VJdm82UVFX?= =?utf-8?B?TitkK3JBQ2RYeUZ4NVFId1JmYjNMaUlEdTNxL3BrcFNsZnVqS2Z5SWFOUWVN?= =?utf-8?B?VG91akN4MTYxdmRUbkZTZmlodjRhUFppRjhQRXFVQUp4aXNhUUNnSk9BSFBT?= =?utf-8?B?Vk01UUdxMWlTaVRXdGZORW43ZHZEQi9CQmZSbXZmVjJsclpiaWZQRnZYSEFJ?= =?utf-8?B?LzFSM1pxSVNxS1J2cHd5V1dZMDJHTGlCc2NoTENaNWlBT2UxcWtqeDJhQ2hZ?= =?utf-8?B?YVhMM0pEd1pCdzl3Tk9mMEg0NHcwOGpDRmJvck5kYjIrcGM1elVVcGFtbStE?= =?utf-8?B?UVZsWGxZclA0MlphckR1MnZFZHY5STdDTFY1RG9aMW10N3laSHZOVWFSeWp4?= =?utf-8?B?LzFpSHNDTklTSXFPRFpaT2RaREYxYTRiaWx6MDk3WFg3SnRIQ3hTQU1xd1dC?= =?utf-8?B?RnZXTUNwRUt6RjBCN0d4WjNaR2tIRnpQdUMvM1liNU9tWXBPWXF6YUFIcFpM?= =?utf-8?B?UEZSY3ArWko4OUMyK1MxaWtQbVpHYXNhYmZQbkNZODk1UzBUeHhTN0QrSlBB?= =?utf-8?B?TkRvR2w4NjBNQzZwTXU2emlIM2Z3cVVNbGR3MkVaZ2FuUTFJNFRWN2JlNGRC?= =?utf-8?B?b05ieE9rWGJRUkJsR09CcTNyb2ZxSmp4UGhkYkdYYVFGcGpOWHR2dXVRSVc3?= =?utf-8?B?WndTUThUMTJWSDlHNFMydDN4WFY2N0ZENm1EUFRZVkhiZU9KN25MVFZLRmpH?= =?utf-8?B?WG11Wk1SbnJ3a3ZQcTdvem1CbURJVTl6dDlWL0dtZXhHMEZqbjZMUytNcGNt?= =?utf-8?B?am1OeUVqVmF6NHMybC9WdUhzVUphWXAwREFyWnpNdzEydHlHLzV2T0JHVkE2?= =?utf-8?B?TzAzaUI5ek1odTgycEpaRlhxNzViUVJVWGZZOXJkaVlweDhOK0xlbGFsWGRS?= =?utf-8?B?YXFVZDVvY1RiUmNWUUQ3amtsR2RTeHkvNnRDZjNwTG9iQmNOZHloWkhWOVJL?= =?utf-8?B?eExmZmJLVURWWHVIZTdLbG4vc0NxMHlGenJMelZnaFE0WENpeVg5b29QRFFT?= =?utf-8?B?ZElzNUVWaHN2blB0UU53SERtYk8vaUZsSUdpOXdNc0tPazA3ak0vN2FzU1E5?= =?utf-8?B?and0d240bFplcEsrenQvWlI4SE5PZTVaV2I1Y3c5Q1B6OGFicnRKUHdJeCtl?= =?utf-8?B?c0RGd3pYczBqMlJ3bk4xVjhIUzcwc3FHazhRaU5JY3NWSDFtYXdsRWQzQzUz?= =?utf-8?B?UkV1aFFZU3p1T3ZlY3VBQU80eCtTa1RET0xxSFArY1Zkd3I2Mk1YeWdsQWVO?= =?utf-8?B?d1QvTGZMQW00RnFITVFZSkVKelZXNEs5MGpSVkpjMlZJaEpzSGVnbHBXMHRn?= =?utf-8?B?SzVndHFPL0xUWmFSN0JLblh4ZUR2TWlvV2JUZCtvMDMyZUNEU3ZrSDJyYW80?= =?utf-8?B?eVlqeEl3WnVqcjJMS09RdmFXSmFDK0RuemEybXc0MnYxWWtkS2NmVnNmeGtz?= =?utf-8?B?cUpoZjJVQm9DVElxdm5FclpVNUJjenJyYTBTNDZFallpQzhLbTZkRk9RQ3ND?= =?utf-8?B?UWhCak5hdlU0MERzM3FGMElpVFB4K0dFU3VxZUQwaG9qYTlJSlJucUwxdUdK?= =?utf-8?B?L2owZ1pOSmd3SCtMNS9LaHA2MVVOVndvUzd4WmJRaUt0SmhiME5yMkpYWXNJ?= =?utf-8?B?ZElzUzE0d1VDdTBGS1lUcE1iMU54dnp1N01kd1h4UHQ4RTlyT0Z1SkZQUS9y?= =?utf-8?B?WWErNDJLTkZaK2wwb1Z3T2l4T0lISWdXMDg5d1RralBzajJxSGlDWWJGY2Nx?= =?utf-8?B?WHZWYi8zdkFBMHkxZUJoVitRSlp2blpiYXErbmNhRWhabWZpeGIwUVpqSjlT?= =?utf-8?B?YVpOV0d6Q3JlTy9WS1BYbGx0RitwRFdFM0pyTm9OZXYxdUkwbWtEaUtzMzdS?= =?utf-8?B?SEw5TDFHeXJidFhiNVdNZW1qTXpJbGVCVEFITks1VTRFaDduaHp4ZlFJdWg3?= =?utf-8?B?K1JTdUptMnMwZ041NFEycEJIaG1SYUMzdXQyUVlteEJlWVFjWkRqcDFPeFRu?= =?utf-8?B?RFBIR1hib1hwbmtJc2k3bEtoekZSaEZHYzBtOC93Z2loUjNySVZ5OExhdGI2?= =?utf-8?Q?BJg0=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB6341.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac91da9b-cc35-4680-ef43-08da9b73a6d4 X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Sep 2022 01:50:24.8707 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: EFG6W+y7QXTX/z/vkXcyyJBFGzDqaxBUWlLARWsTh67CgCcD5Mqp5FkHW1DOnPfgZSDWlgbV72QSHNRbf4fDrg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR04MB8043 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_PDS_OTHER_BAD_TLD autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PkhpIE1pbmcsDQo+DQo+T24gMDEuMDguMjAyMiAxMzoyOSwgTWluZyBRaWFuIHdyb3RlOg0KPj4g VGhlIGNvZGVjIGNhbiBzdXBwb3J0IGFueSBpbWFnZSBzaXplIFd4SCwgd2l0aCBhcmJpdHJhcnkg VyAoaW1hZ2UNCj4+IHdpZHRoKSBhbmQgSCAoaW1hZ2UgaGVpZ2h0KSBkaW1lbnNpb25zLg0KPj4N Cj4+IEJ1dCBpdCByZXF1aXJlcyBidWZmZXIgYWxpZ25tZW50LA0KPj4gc28gZHJpdmVyIGNhbiBy ZXBvcnQgdGhlIGFsaWduZWQgcmVzb2x1dGlvbiB0aHJvdWdoIHRoZSBnX2ZtdCwgYW5kDQo+PiBy ZXBvcnQgdGhlIGFjdHVhbCByZXNvbHV0aW9uIHRocm91Z2ggdGhlIGdfc2VsZWN0aW9uLg0KPj4N Cj4+IEZvciBlbmNvZGVyLCBpdCBldmVuIHN1cHBvcnQgdG8gZW5jb2RlIGEgc21hbGxlciBqcGVn IHRoYW4gdGhlDQo+PiBvcmlnaW5hbCBwaWN0dXJlIHRocm91Z2ggc19zZWxlY3Rpb24gYXBpLg0K Pg0KPlBsZWFzZSBhZGQgYSBtZW50aW9uIGhlcmUgdGhhdCAiRm9yIHRoZSBkZWNvZGVyLCB3ZSBk byBub3Qgc3VwcG9ydCBjcm9wcGluZw0KPmEgcG9ydGlvbiBzbWFsbGVyIHRoYW4gdGhlIG9yaWdp bmFsIHBpY3R1cmUsIGR1ZSB0byBoYXJkd2FyZSBsaW1pdGF0aW9ucw0KPih3cmFwcGVyIHNpZGUp LiINCj4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBNaW5nIFFpYW4gPG1pbmcucWlhbkBueHAuY29t Pg0KPj4gLS0tDQo+PiAgIC4uLi9tZWRpYS9wbGF0Zm9ybS9ueHAvaW14LWpwZWcvbXhjLWpwZWcu YyAgICB8IDMyNyArKysrKysrKysrKy0tLS0tLS0NCj4+ICAgLi4uL21lZGlhL3BsYXRmb3JtL254 cC9pbXgtanBlZy9teGMtanBlZy5oICAgIHwgICAxICsNCj4+ICAgMiBmaWxlcyBjaGFuZ2VkLCAy MDggaW5zZXJ0aW9ucygrKSwgMTIwIGRlbGV0aW9ucygtKQ0KPj4NCj4+IGRpZmYgLS1naXQgYS9k cml2ZXJzL21lZGlhL3BsYXRmb3JtL254cC9pbXgtanBlZy9teGMtanBlZy5jDQo+PiBiL2RyaXZl cnMvbWVkaWEvcGxhdGZvcm0vbnhwL2lteC1qcGVnL214Yy1qcGVnLmMNCj4+IGluZGV4IGVjMTMz OTRiZGRkZC4uODlmNDMyYjhjNmRmIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9ueHAvaW14LWpwZWcvbXhjLWpwZWcuYw0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0 Zm9ybS9ueHAvaW14LWpwZWcvbXhjLWpwZWcuYw0KPj4gQEAgLTkyNCw4ICs5MjQsOCBAQCBzdGF0 aWMgdm9pZCBteGNfanBlZ19jb25maWdfZW5jX2Rlc2Moc3RydWN0DQo+dmIyX2J1ZmZlciAqb3V0 X2J1ZiwNCj4+ICAgCWpwZWctPnNsb3RfZGF0YVtzbG90XS5jZmdfc3RyZWFtX3NpemUgPQ0KPj4g ICAJCQlteGNfanBlZ19zZXR1cF9jZmdfc3RyZWFtKGNmZ19zdHJlYW1fdmFkZHIsDQo+PiAgIAkJ CQkJCSAgcV9kYXRhLT5mbXQtPmZvdXJjYywNCj4+IC0JCQkJCQkgIHFfZGF0YS0+dywNCj4+IC0J CQkJCQkgIHFfZGF0YS0+aCk7DQo+PiArCQkJCQkJICBxX2RhdGEtPmNyb3Aud2lkdGgsDQo+PiAr CQkJCQkJICBxX2RhdGEtPmNyb3AuaGVpZ2h0KTsNCj4+DQo+PiAgIAkvKiBjaGFpbiB0aGUgY29u ZmlnIGRlc2NyaXB0b3Igd2l0aCB0aGUgZW5jb2RpbmcgZGVzY3JpcHRvciAqLw0KPj4gICAJY2Zn X2Rlc2MtPm5leHRfZGVzY3B0X3B0ciA9IGRlc2NfaGFuZGxlIHwgTVhDX05YVF9ERVNDUFRfRU47 DQo+QEANCj4+IC05NDIsMTEgKzk0MiwxMyBAQCBzdGF0aWMgdm9pZCBteGNfanBlZ19jb25maWdf ZW5jX2Rlc2Moc3RydWN0DQo+dmIyX2J1ZmZlciAqb3V0X2J1ZiwNCj4+ICAgCWRlc2MtPm5leHRf ZGVzY3B0X3B0ciA9IDA7IC8qIGVuZCBvZiBjaGFpbiAqLw0KPj4NCj4+ICAgCS8qIHVzZSBhZGp1 c3RlZCByZXNvbHV0aW9uIGZvciBDQVNUIElQIGpvYiAqLw0KPj4gLQl3ID0gcV9kYXRhLT53X2Fk anVzdGVkOw0KPj4gLQloID0gcV9kYXRhLT5oX2FkanVzdGVkOw0KPj4gKwl3ID0gcV9kYXRhLT5j cm9wLndpZHRoOw0KPj4gKwloID0gcV9kYXRhLT5jcm9wLmhlaWdodDsNCj4+ICsJdjRsX2JvdW5k X2FsaWduX2ltYWdlKCZ3LCB3LCBNWENfSlBFR19NQVhfV0lEVEgsIHFfZGF0YS0NCj4+Zm10LT5o X2FsaWduLA0KPj4gKwkJCSAgICAgICZoLCBoLCBNWENfSlBFR19NQVhfSEVJR0hULCBxX2RhdGEt PmZtdC0NCj4+dl9hbGlnbiwgMCk7DQo+PiAgIAlteGNfanBlZ19zZXRfcmVzKGRlc2MsIHcsIGgp Ow0KPj4gLQlteGNfanBlZ19zZXRfbGluZV9waXRjaChkZXNjLCB3ICogKHFfZGF0YS0+Zm10LT5k ZXB0aCAvIDgpKTsNCj4+IC0JbXhjX2pwZWdfc2V0X2J1ZnNpemUoZGVzYywgZGVzYy0+bGluZV9w aXRjaCAqIGgpOw0KPj4gKwlteGNfanBlZ19zZXRfbGluZV9waXRjaChkZXNjLCBxX2RhdGEtPmJ5 dGVzcGVybGluZVswXSk7DQo+PiArCW14Y19qcGVnX3NldF9idWZzaXplKGRlc2MsIHFfZGF0YS0+ c2l6ZWltYWdlWzBdKTsNCj4+ICAgCWltZ19mbXQgPSBteGNfanBlZ19mb3VyY2NfdG9faW1nZm10 KHFfZGF0YS0+Zm10LT5mb3VyY2MpOw0KPj4gICAJaWYgKGltZ19mbXQgPT0gTVhDX0pQRUdfSU5W QUxJRCkNCj4+ICAgCQlkZXZfZXJyKGpwZWctPmRldiwgIk5vIHZhbGlkIGltYWdlIGZvcm1hdCBk ZXRlY3RlZFxuIik7IEBADQo+LTk5NSw2DQo+PiArOTk3LDEwIEBAIHN0YXRpYyBib29sIG14Y19q cGVnX3NvdXJjZV9jaGFuZ2Uoc3RydWN0IG14Y19qcGVnX2N0eCAqY3R4LA0KPj4gICAJCXFfZGF0 YV9jYXAtPmZtdCA9IGpwZWdfc3JjX2J1Zi0+Zm10Ow0KPj4gICAJCXFfZGF0YV9jYXAtPndfYWRq dXN0ZWQgPSBxX2RhdGFfY2FwLT53Ow0KPj4gICAJCXFfZGF0YV9jYXAtPmhfYWRqdXN0ZWQgPSBx X2RhdGFfY2FwLT5oOw0KPj4gKwkJcV9kYXRhX2NhcC0+Y3JvcC5sZWZ0ID0gMDsNCj4+ICsJCXFf ZGF0YV9jYXAtPmNyb3AudG9wID0gMDsNCj4+ICsJCXFfZGF0YV9jYXAtPmNyb3Aud2lkdGggPSBq cGVnX3NyY19idWYtPnc7DQo+PiArCQlxX2RhdGFfY2FwLT5jcm9wLmhlaWdodCA9IGpwZWdfc3Jj X2J1Zi0+aDsNCj4+DQo+PiAgIAkJLyoNCj4+ICAgCQkgKiBhbGlnbiB1cCB0aGUgcmVzb2x1dGlv biBmb3IgQ0FTVCBJUCwgQEAgLTEwMDcsNyArMTAxMyw3DQo+QEANCj4+IHN0YXRpYyBib29sIG14 Y19qcGVnX3NvdXJjZV9jaGFuZ2Uoc3RydWN0IG14Y19qcGVnX2N0eCAqY3R4LA0KPj4gICAJCQkJ ICAgICAgJnFfZGF0YV9jYXAtPmhfYWRqdXN0ZWQsDQo+PiAgIAkJCQkgICAgICBxX2RhdGFfY2Fw LT5oX2FkanVzdGVkLCAvKiBhZGp1c3QgdXAgKi8NCj4+ICAgCQkJCSAgICAgIE1YQ19KUEVHX01B WF9IRUlHSFQsDQo+PiAtCQkJCSAgICAgIDAsDQo+PiArCQkJCSAgICAgIHFfZGF0YV9jYXAtPmZt dC0+dl9hbGlnbiwNCj4+ICAgCQkJCSAgICAgIDApOw0KPj4NCj4+ICAgCQkvKiBzZXR1cCBieXRl c3BlcmxpbmUvc2l6ZWltYWdlIGZvciBjYXB0dXJlIHF1ZXVlICovIEBAIC0NCj4xMDE2LDYNCj4+ ICsxMDIyLDcgQEAgc3RhdGljIGJvb2wgbXhjX2pwZWdfc291cmNlX2NoYW5nZShzdHJ1Y3QgbXhj X2pwZWdfY3R4ICpjdHgsDQo+PiAgIAkJbm90aWZ5X3NyY19jaGcoY3R4KTsNCj4+ICAgCQljdHgt PnNvdXJjZV9jaGFuZ2UgPSAxOw0KPj4gICAJfQ0KPj4gKw0KPj4gICAJcmV0dXJuIGN0eC0+c291 cmNlX2NoYW5nZSA/IHRydWUgOiBmYWxzZTsNCj4+ICAgfQ0KPj4NCj4+IEBAIC0xMjAxLDMwICsx MjA4LDE4IEBAIHN0YXRpYyBpbnQgbXhjX2pwZWdfcXVldWVfc2V0dXAoc3RydWN0DQo+dmIyX3F1 ZXVlICpxLA0KPj4gICB7DQo+PiAgIAlzdHJ1Y3QgbXhjX2pwZWdfY3R4ICpjdHggPSB2YjJfZ2V0 X2Rydl9wcml2KHEpOw0KPj4gICAJc3RydWN0IG14Y19qcGVnX3FfZGF0YSAqcV9kYXRhID0gTlVM TDsNCj4+IC0Jc3RydWN0IG14Y19qcGVnX3FfZGF0YSB0bXBfcTsNCj4+ICAgCWludCBpOw0KPj4N Cj4+ICAgCXFfZGF0YSA9IG14Y19qcGVnX2dldF9xX2RhdGEoY3R4LCBxLT50eXBlKTsNCj4+ICAg CWlmICghcV9kYXRhKQ0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4NCj4+IC0JdG1wX3EuZm10 ID0gcV9kYXRhLT5mbXQ7DQo+PiAtCXRtcF9xLncgPSBxX2RhdGEtPndfYWRqdXN0ZWQ7DQo+PiAt CXRtcF9xLmggPSBxX2RhdGEtPmhfYWRqdXN0ZWQ7DQo+PiAtCWZvciAoaSA9IDA7IGkgPCBNWENf SlBFR19NQVhfUExBTkVTOyBpKyspIHsNCj4+IC0JCXRtcF9xLmJ5dGVzcGVybGluZVtpXSA9IHFf ZGF0YS0+Ynl0ZXNwZXJsaW5lW2ldOw0KPj4gLQkJdG1wX3Euc2l6ZWltYWdlW2ldID0gcV9kYXRh LT5zaXplaW1hZ2VbaV07DQo+PiAtCX0NCj4+IC0JbXhjX2pwZWdfc2l6ZWltYWdlKCZ0bXBfcSk7 DQo+PiAtCWZvciAoaSA9IDA7IGkgPCBNWENfSlBFR19NQVhfUExBTkVTOyBpKyspDQo+PiAtCQl0 bXBfcS5zaXplaW1hZ2VbaV0gPSBtYXgodG1wX3Euc2l6ZWltYWdlW2ldLCBxX2RhdGEtDQo+PnNp emVpbWFnZVtpXSk7DQo+PiAtDQo+DQo+VGhpcyBpcyBhbiB1bmRvIGZyb20gcGF0Y2ggIkFsaWdu IHVwd2FyZHMgYnVmZmVyIHNpemUiLCBzbyBwbGVhc2UgYWRkIGENCj4iRml4ZXM6Li4uIiBmb3Ig aXQgaW4gdGhlIGNvbW1pdCBkZXNjcmlwdGlvbi4NCj4NCj4+ICAgCS8qIEhhbmRsZSBDUkVBVEVf QlVGUyBzaXR1YXRpb24gLSAqbnBsYW5lcyAhPSAwICovDQo+PiAgIAlpZiAoKm5wbGFuZXMpIHsN Cj4+ICAgCQlpZiAoKm5wbGFuZXMgIT0gcV9kYXRhLT5mbXQtPmNvbHBsYW5lcykNCj4+ICAgCQkJ cmV0dXJuIC1FSU5WQUw7DQo+PiAgIAkJZm9yIChpID0gMDsgaSA8ICpucGxhbmVzOyBpKyspIHsN Cj4+IC0JCQlpZiAoc2l6ZXNbaV0gPCB0bXBfcS5zaXplaW1hZ2VbaV0pDQo+PiArCQkJaWYgKHNp emVzW2ldIDwgcV9kYXRhLT5zaXplaW1hZ2VbaV0pDQo+PiAgIAkJCQlyZXR1cm4gLUVJTlZBTDsN Cj4+ICAgCQl9DQo+PiAgIAkJcmV0dXJuIDA7DQo+PiBAQCAtMTIzMyw3ICsxMjI4LDcgQEAgc3Rh dGljIGludCBteGNfanBlZ19xdWV1ZV9zZXR1cChzdHJ1Y3QNCj52YjJfcXVldWUgKnEsDQo+PiAg IAkvKiBIYW5kbGUgUkVRQlVGUyBzaXR1YXRpb24gKi8NCj4+ICAgCSpucGxhbmVzID0gcV9kYXRh LT5mbXQtPmNvbHBsYW5lczsNCj4+ICAgCWZvciAoaSA9IDA7IGkgPCAqbnBsYW5lczsgaSsrKQ0K Pj4gLQkJc2l6ZXNbaV0gPSB0bXBfcS5zaXplaW1hZ2VbaV07DQo+PiArCQlzaXplc1tpXSA9IHFf ZGF0YS0+c2l6ZWltYWdlW2ldOw0KPj4NCj4+ICAgCXJldHVybiAwOw0KPj4gICB9DQo+PiBAQCAt MTM2NiwxNyArMTM2MSwxNyBAQCBzdGF0aWMgdm9pZCBteGNfanBlZ19ieXRlc3BlcmxpbmUoc3Ry dWN0DQo+bXhjX2pwZWdfcV9kYXRhICpxLCB1MzIgcHJlY2lzaW9uKQ0KPj4gICAJCSAqIGFwcGxp ZXMgdG8gdGhlIGZpcnN0IHBsYW5lIGFuZCBpcyBkaXZpZGVkIGJ5IHRoZSBzYW1lIGZhY3Rvcg0K Pj4gICAJCSAqIGFzIHRoZSB3aWR0aCBmaWVsZCBmb3IgdGhlIG90aGVyIHBsYW5lcw0KPj4gICAJ CSAqLw0KPj4gLQkJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gcS0+dyAqIERJVl9ST1VORF9VUChwcmVj aXNpb24sIDgpOw0KPj4gKwkJcS0+Ynl0ZXNwZXJsaW5lWzBdID0gcS0+d19hZGp1c3RlZCAqDQo+ RElWX1JPVU5EX1VQKHByZWNpc2lvbiwgOCk7DQo+PiAgIAkJcS0+Ynl0ZXNwZXJsaW5lWzFdID0g cS0+Ynl0ZXNwZXJsaW5lWzBdOw0KPj4gICAJfSBlbHNlIGlmIChxLT5mbXQtPnN1YnNhbXBsaW5n ID09DQo+VjRMMl9KUEVHX0NIUk9NQV9TVUJTQU1QTElOR180MjIpIHsNCj4+IC0JCXEtPmJ5dGVz cGVybGluZVswXSA9IHEtPncgKiBESVZfUk9VTkRfVVAocHJlY2lzaW9uLCA4KSAqIDI7DQo+PiAr CQlxLT5ieXRlc3BlcmxpbmVbMF0gPSBxLT53X2FkanVzdGVkICoNCj5ESVZfUk9VTkRfVVAocHJl Y2lzaW9uLCA4KSAqDQo+PiArMjsNCj4+ICAgCQlxLT5ieXRlc3BlcmxpbmVbMV0gPSAwOw0KPj4g ICAJfSBlbHNlIGlmIChxLT5mbXQtPnN1YnNhbXBsaW5nID09DQo+VjRMMl9KUEVHX0NIUk9NQV9T VUJTQU1QTElOR180NDQpIHsNCj4+IC0JCXEtPmJ5dGVzcGVybGluZVswXSA9IHEtPncgKiBESVZf Uk9VTkRfVVAocHJlY2lzaW9uLCA4KSAqIHEtDQo+PmZtdC0+bmM7DQo+PiArCQlxLT5ieXRlc3Bl cmxpbmVbMF0gPSBxLT53X2FkanVzdGVkICoNCj5ESVZfUk9VTkRfVVAocHJlY2lzaW9uLCA4KSAq DQo+PiArcS0+Zm10LT5uYzsNCj4+ICAgCQlxLT5ieXRlc3BlcmxpbmVbMV0gPSAwOw0KPj4gICAJ fSBlbHNlIHsNCj4+ICAgCQkvKiBncmF5c2NhbGUgKi8NCj4+IC0JCXEtPmJ5dGVzcGVybGluZVsw XSA9IHEtPncgKiBESVZfUk9VTkRfVVAocHJlY2lzaW9uLCA4KTsNCj4+ICsJCXEtPmJ5dGVzcGVy bGluZVswXSA9IHEtPndfYWRqdXN0ZWQgKg0KPkRJVl9ST1VORF9VUChwcmVjaXNpb24sIDgpOw0K Pj4gICAJCXEtPmJ5dGVzcGVybGluZVsxXSA9IDA7DQo+PiAgIAl9DQo+PiAgIH0NCj4+IEBAIC0x Mzk1LDcgKzEzOTAsNyBAQCBzdGF0aWMgdm9pZCBteGNfanBlZ19zaXplaW1hZ2Uoc3RydWN0DQo+ bXhjX2pwZWdfcV9kYXRhICpxKQ0KPj4gICAJCS8qIGpwZWcgc3RyZWFtIHNpemUgbXVzdCBiZSBt dWx0aXBsZSBvZiAxSyAqLw0KPj4gICAJCXEtPnNpemVpbWFnZVswXSA9IEFMSUdOKHEtPnNpemVp bWFnZVswXSwgMTAyNCk7DQo+PiAgIAl9IGVsc2Ugew0KPj4gLQkJcS0+c2l6ZWltYWdlWzBdID0g cS0+Ynl0ZXNwZXJsaW5lWzBdICogcS0+aDsNCj4+ICsJCXEtPnNpemVpbWFnZVswXSA9IHEtPmJ5 dGVzcGVybGluZVswXSAqIHEtPmhfYWRqdXN0ZWQ7DQo+PiAgIAkJcS0+c2l6ZWltYWdlWzFdID0g MDsNCj4+ICAgCQlpZiAocS0+Zm10LT5mb3VyY2MgPT0gVjRMMl9QSVhfRk1UX05WMTJNKQ0KPj4g ICAJCQlxLT5zaXplaW1hZ2VbMV0gPSBxLT5zaXplaW1hZ2VbMF0gLyAyOyBAQCAtMTYxOSw2DQo+ KzE2MTQsMTAgQEANCj4+IHN0YXRpYyB2b2lkIG14Y19qcGVnX3NldF9kZWZhdWx0X3BhcmFtcyhz dHJ1Y3QgbXhjX2pwZWdfY3R4ICpjdHgpDQo+PiAgIAkJcVtpXS0+aCA9IE1YQ19KUEVHX0RFRkFV TFRfSEVJR0hUOw0KPj4gICAJCXFbaV0tPndfYWRqdXN0ZWQgPSBNWENfSlBFR19ERUZBVUxUX1dJ RFRIOw0KPj4gICAJCXFbaV0tPmhfYWRqdXN0ZWQgPSBNWENfSlBFR19ERUZBVUxUX0hFSUdIVDsN Cj4+ICsJCXFbaV0tPmNyb3AubGVmdCA9IDA7DQo+PiArCQlxW2ldLT5jcm9wLnRvcCA9IDA7DQo+ PiArCQlxW2ldLT5jcm9wLndpZHRoID0gTVhDX0pQRUdfREVGQVVMVF9XSURUSDsNCj4+ICsJCXFb aV0tPmNyb3AuaGVpZ2h0ID0gTVhDX0pQRUdfREVGQVVMVF9IRUlHSFQ7DQo+PiAgIAkJbXhjX2pw ZWdfYnl0ZXNwZXJsaW5lKHFbaV0sIHFbaV0tPmZtdC0+cHJlY2lzaW9uKTsNCj4+ICAgCQlteGNf anBlZ19zaXplaW1hZ2UocVtpXSk7DQo+PiAgIAl9DQo+PiBAQCAtMTc4Niw1NSArMTc4NSw4NCBA QCBzdGF0aWMgaW50IG14Y19qcGVnX2VudW1fZm10X3ZpZF9vdXQoc3RydWN0DQo+ZmlsZSAqZmls ZSwgdm9pZCAqcHJpdiwNCj4+ICAgCXJldHVybiAwOw0KPj4gICB9DQo+Pg0KPj4gLXN0YXRpYyBp bnQgbXhjX2pwZWdfdHJ5X2ZtdChzdHJ1Y3QgdjRsMl9mb3JtYXQgKmYsIGNvbnN0IHN0cnVjdA0K Pm14Y19qcGVnX2ZtdCAqZm10LA0KPj4gLQkJCSAgICBzdHJ1Y3QgbXhjX2pwZWdfY3R4ICpjdHgs IGludCBxX3R5cGUpDQo+PiArc3RhdGljIHUzMiBteGNfanBlZ19nZXRfZm10X3R5cGUoc3RydWN0 IG14Y19qcGVnX2N0eCAqY3R4LCB1MzIgdHlwZSkNCj4+ICt7DQo+PiArCWlmIChjdHgtPm14Y19q cGVnLT5tb2RlID09IE1YQ19KUEVHX0RFQ09ERSkNCj4+ICsJCXJldHVybiBWNEwyX1RZUEVfSVNf T1VUUFVUKHR5cGUpID8NCj5NWENfSlBFR19GTVRfVFlQRV9FTkMgOiBNWENfSlBFR19GTVRfVFlQ RV9SQVc7DQo+PiArCWVsc2UNCj4+ICsJCXJldHVybiBWNEwyX1RZUEVfSVNfQ0FQVFVSRSh0eXBl KSA/DQo+TVhDX0pQRUdfRk1UX1RZUEVfRU5DIDoNCj4+ICtNWENfSlBFR19GTVRfVFlQRV9SQVc7 IH0NCj4+ICsNCj4+ICtzdGF0aWMgdTMyIG14Y19qcGVnX2dldF9kZWZhdWx0X2ZvdXJjYyhzdHJ1 Y3QgbXhjX2pwZWdfY3R4ICpjdHgsIHUzMg0KPj4gK3R5cGUpDQo+PiAgIHsNCj4+ICsJaWYgKGN0 eC0+bXhjX2pwZWctPm1vZGUgPT0gTVhDX0pQRUdfREVDT0RFKQ0KPj4gKwkJcmV0dXJuIFY0TDJf VFlQRV9JU19PVVRQVVQodHlwZSkgPyBWNEwyX1BJWF9GTVRfSlBFRyA6DQo+TVhDX0pQRUdfREVG QVVMVF9QRk1UOw0KPj4gKwllbHNlDQo+PiArCQlyZXR1cm4gVjRMMl9UWVBFX0lTX0NBUFRVUkUo dHlwZSkgPyBWNEwyX1BJWF9GTVRfSlBFRyA6DQo+PiArTVhDX0pQRUdfREVGQVVMVF9QRk1UOyB9 DQo+PiArDQo+PiArc3RhdGljIGludCBteGNfanBlZ190cnlfZm10KHN0cnVjdCB2NGwyX2Zvcm1h dCAqZiwNCj4+ICsJCQkgICAgc3RydWN0IG14Y19qcGVnX2N0eCAqY3R4LCBzdHJ1Y3QgbXhjX2pw ZWdfcV9kYXRhDQo+KnFfZGF0YSkgew0KPj4gKwljb25zdCBzdHJ1Y3QgbXhjX2pwZWdfZm10ICpm bXQ7DQo+PiAgIAlzdHJ1Y3QgdjRsMl9waXhfZm9ybWF0X21wbGFuZSAqcGl4X21wID0gJmYtPmZt dC5waXhfbXA7DQo+PiAgIAlzdHJ1Y3QgdjRsMl9wbGFuZV9waXhfZm9ybWF0ICpwZm10Ow0KPj4g Kwl1MzIgZm91cmNjID0gZi0+Zm10LnBpeF9tcC5waXhlbGZvcm1hdDsNCj4+ICAgCXUzMiB3ID0g KHBpeF9tcC0+d2lkdGggPCBNWENfSlBFR19NQVhfV0lEVEgpID8NCj4+ICAgCQkgcGl4X21wLT53 aWR0aCA6IE1YQ19KUEVHX01BWF9XSURUSDsNCj4+ICAgCXUzMiBoID0gKHBpeF9tcC0+aGVpZ2h0 IDwgTVhDX0pQRUdfTUFYX0hFSUdIVCkgPw0KPj4gICAJCSBwaXhfbXAtPmhlaWdodCA6IE1YQ19K UEVHX01BWF9IRUlHSFQ7DQo+PiAgIAlpbnQgaTsNCj4+IC0Jc3RydWN0IG14Y19qcGVnX3FfZGF0 YSB0bXBfcTsNCj4+ICsNCj4+ICsJZm10ID0gbXhjX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBmb3Vy Y2MpOw0KPj4gKwlpZiAoIWZtdCB8fCBmbXQtPmZsYWdzICE9IG14Y19qcGVnX2dldF9mbXRfdHlw ZShjdHgsIGYtPnR5cGUpKSB7DQo+PiArCQlkZXZfd2FybihjdHgtPm14Y19qcGVnLT5kZXYsICJG b3JtYXQgbm90DQo+c3VwcG9ydGVkOiAlYyVjJWMlYywgdXNlIHRoZSBkZWZhdWx0LlxuIiwNCj4+ ICsJCQkgKGZvdXJjYyAmIDB4ZmYpLA0KPj4gKwkJCSAoZm91cmNjID4+ICA4KSAmIDB4ZmYsDQo+ PiArCQkJIChmb3VyY2MgPj4gMTYpICYgMHhmZiwNCj4+ICsJCQkgKGZvdXJjYyA+PiAyNCkgJiAw eGZmKTsNCj4+ICsJCWZvdXJjYyA9IG14Y19qcGVnX2dldF9kZWZhdWx0X2ZvdXJjYyhjdHgsIGYt PnR5cGUpOw0KPj4gKwkJZm10ID0gbXhjX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBmb3VyY2MpOw0K Pj4gKwkJaWYgKCFmbXQpDQo+PiArCQkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCQlmLT5mbXQucGl4 X21wLnBpeGVsZm9ybWF0ID0gZm91cmNjOw0KPj4gKwl9DQo+PiArCXFfZGF0YS0+Zm10ID0gZm10 Ow0KPj4NCj4+ICAgCW1lbXNldChwaXhfbXAtPnJlc2VydmVkLCAwLCBzaXplb2YocGl4X21wLT5y ZXNlcnZlZCkpOw0KPj4gICAJcGl4X21wLT5maWVsZCA9IFY0TDJfRklFTERfTk9ORTsNCj4+ICAg CXBpeF9tcC0+bnVtX3BsYW5lcyA9IGZtdC0+Y29scGxhbmVzOw0KPj4gICAJcGl4X21wLT5waXhl bGZvcm1hdCA9IGZtdC0+Zm91cmNjOw0KPj4NCj4+IC0JcGl4X21wLT53aWR0aCA9IHc7DQo+PiAt CXBpeF9tcC0+aGVpZ2h0ID0gaDsNCj4+IC0JdjRsX2JvdW5kX2FsaWduX2ltYWdlKCZ3LA0KPj4g KwlxX2RhdGEtPncgPSB3Ow0KPj4gKwlxX2RhdGEtPmggPSBoOw0KPj4gKwlxX2RhdGEtPndfYWRq dXN0ZWQgPSB3Ow0KPj4gKwlxX2RhdGEtPmhfYWRqdXN0ZWQgPSBoOw0KPj4gKwl2NGxfYm91bmRf YWxpZ25faW1hZ2UoJnFfZGF0YS0+d19hZGp1c3RlZCwNCj4+ICAgCQkJICAgICAgdywgLyogYWRq dXN0IHVwd2FyZHMqLw0KPj4gICAJCQkgICAgICBNWENfSlBFR19NQVhfV0lEVEgsDQo+PiAgIAkJ CSAgICAgIGZtdC0+aF9hbGlnbiwNCj4+IC0JCQkgICAgICAmaCwNCj4+ICsJCQkgICAgICAmcV9k YXRhLT5oX2FkanVzdGVkLA0KPj4gICAJCQkgICAgICBoLCAvKiBhZGp1c3QgdXB3YXJkcyovDQo+ PiAgIAkJCSAgICAgIE1YQ19KUEVHX01BWF9IRUlHSFQsDQo+PiAtCQkJICAgICAgMCwNCj4+ICsJ CQkgICAgICBmbXQtPnZfYWxpZ24sDQo+PiAgIAkJCSAgICAgIDApOw0KPj4gLQ0KPj4gLQkvKiBn ZXQgdXNlciBpbnB1dCBpbnRvIHRoZSB0bXBfcSAqLw0KPj4gLQl0bXBfcS53ID0gdzsNCj4+IC0J dG1wX3EuaCA9IGg7DQo+PiAtCXRtcF9xLmZtdCA9IGZtdDsNCj4+ICAgCWZvciAoaSA9IDA7IGkg PCBwaXhfbXAtPm51bV9wbGFuZXM7IGkrKykgew0KPj4gICAJCXBmbXQgPSAmcGl4X21wLT5wbGFu ZV9mbXRbaV07DQo+PiAtCQl0bXBfcS5ieXRlc3BlcmxpbmVbaV0gPSBwZm10LT5ieXRlc3Blcmxp bmU7DQo+PiAtCQl0bXBfcS5zaXplaW1hZ2VbaV0gPSBwZm10LT5zaXplaW1hZ2U7DQo+PiArCQlx X2RhdGEtPmJ5dGVzcGVybGluZVtpXSA9IHBmbXQtPmJ5dGVzcGVybGluZTsNCj4+ICsJCXFfZGF0 YS0+c2l6ZWltYWdlW2ldID0gcGZtdC0+c2l6ZWltYWdlOw0KPj4gICAJfQ0KPj4NCj4+IC0JLyog Y2FsY3VsYXRlIGJ5dGVzcGVybGluZSAmIHNpemVpbWFnZSBpbnRvIHRoZSB0bXBfcSAqLw0KPj4g LQlteGNfanBlZ19ieXRlc3BlcmxpbmUoJnRtcF9xLCBmbXQtPnByZWNpc2lvbik7DQo+PiAtCW14 Y19qcGVnX3NpemVpbWFnZSgmdG1wX3EpOw0KPj4gKwkvKiBjYWxjdWxhdGUgYnl0ZXNwZXJsaW5l ICYgc2l6ZWltYWdlICovDQo+PiArCW14Y19qcGVnX2J5dGVzcGVybGluZShxX2RhdGEsIGZtdC0+ cHJlY2lzaW9uKTsNCj4+ICsJbXhjX2pwZWdfc2l6ZWltYWdlKHFfZGF0YSk7DQo+Pg0KPj4gICAJ LyogYWRqdXN0IHVzZXIgZm9ybWF0IGFjY29yZGluZyB0byBvdXIgY2FsY3VsYXRpb25zICovDQo+ PiAgIAlmb3IgKGkgPSAwOyBpIDwgcGl4X21wLT5udW1fcGxhbmVzOyBpKyspIHsNCj4+ICAgCQlw Zm10ID0gJnBpeF9tcC0+cGxhbmVfZm10W2ldOw0KPj4gICAJCW1lbXNldChwZm10LT5yZXNlcnZl ZCwgMCwgc2l6ZW9mKHBmbXQtPnJlc2VydmVkKSk7DQo+PiAtCQlwZm10LT5ieXRlc3BlcmxpbmUg PSB0bXBfcS5ieXRlc3BlcmxpbmVbaV07DQo+PiAtCQlwZm10LT5zaXplaW1hZ2UgPSB0bXBfcS5z aXplaW1hZ2VbaV07DQo+PiArCQlwZm10LT5ieXRlc3BlcmxpbmUgPSBxX2RhdGEtPmJ5dGVzcGVy bGluZVtpXTsNCj4+ICsJCXBmbXQtPnNpemVpbWFnZSA9IHFfZGF0YS0+c2l6ZWltYWdlW2ldOw0K Pj4gICAJfQ0KPj4NCj4+ICAgCS8qIGZpeCBjb2xvcnNwYWNlIGluZm9ybWF0aW9uIHRvIHNSR0Ig Zm9yIGJvdGggb3V0cHV0ICYgY2FwdHVyZSAqLw0KPj4gQEAgLTE4NDgsNiArMTg3NiwxNiBAQCBz dGF0aWMgaW50IG14Y19qcGVnX3RyeV9mbXQoc3RydWN0IHY0bDJfZm9ybWF0ICpmLA0KPmNvbnN0 IHN0cnVjdCBteGNfanBlZ19mbXQgKmZtDQo+PiAgIAkgKi8NCj4+ICAgCXBpeF9tcC0+cXVhbnRp emF0aW9uID0gVjRMMl9RVUFOVElaQVRJT05fRlVMTF9SQU5HRTsNCj4+DQo+PiArCWlmIChmbXQt PmZsYWdzID09IE1YQ19KUEVHX0ZNVF9UWVBFX1JBVykgew0KPj4gKwkJcV9kYXRhLT5jcm9wLmxl ZnQgPSAwOw0KPj4gKwkJcV9kYXRhLT5jcm9wLnRvcCA9IDA7DQo+PiArCQlxX2RhdGEtPmNyb3Au d2lkdGggPSBxX2RhdGEtPnc7DQo+PiArCQlxX2RhdGEtPmNyb3AuaGVpZ2h0ID0gcV9kYXRhLT5o Ow0KPj4gKwl9DQo+PiArDQo+PiArCXBpeF9tcC0+d2lkdGggPSBxX2RhdGEtPndfYWRqdXN0ZWQ7 DQo+PiArCXBpeF9tcC0+aGVpZ2h0ID0gcV9kYXRhLT5oX2FkanVzdGVkOw0KPj4gKw0KPj4gICAJ cmV0dXJuIDA7DQo+PiAgIH0NCj4+DQo+PiBAQCAtMTg1NywyOSArMTg5NSwxNCBAQCBzdGF0aWMg aW50IG14Y19qcGVnX3RyeV9mbXRfdmlkX2NhcChzdHJ1Y3QgZmlsZQ0KPipmaWxlLCB2b2lkICpw cml2LA0KPj4gICAJc3RydWN0IG14Y19qcGVnX2N0eCAqY3R4ID0gbXhjX2pwZWdfZmhfdG9fY3R4 KHByaXYpOw0KPj4gICAJc3RydWN0IG14Y19qcGVnX2RldiAqanBlZyA9IGN0eC0+bXhjX2pwZWc7 DQo+PiAgIAlzdHJ1Y3QgZGV2aWNlICpkZXYgPSBqcGVnLT5kZXY7DQo+PiAtCWNvbnN0IHN0cnVj dCBteGNfanBlZ19mbXQgKmZtdDsNCj4+IC0JdTMyIGZvdXJjYyA9IGYtPmZtdC5waXhfbXAucGl4 ZWxmb3JtYXQ7DQo+PiAtDQo+PiAtCWludCBxX3R5cGUgPSAoanBlZy0+bW9kZSA9PSBNWENfSlBF R19ERUNPREUpID8NCj4+IC0JCSAgICAgTVhDX0pQRUdfRk1UX1RZUEVfUkFXIDogTVhDX0pQRUdf Rk1UX1RZUEVfRU5DOw0KPj4gKwlzdHJ1Y3QgbXhjX2pwZWdfcV9kYXRhIHRtcF9xOw0KPj4NCj4+ ICAgCWlmICghVjRMMl9UWVBFX0lTX01VTFRJUExBTkFSKGYtPnR5cGUpKSB7DQo+PiAgIAkJZGV2 X2VycihkZXYsICJUUllfRk1UIHdpdGggSW52YWxpZCB0eXBlOiAlZFxuIiwgZi0+dHlwZSk7DQo+ PiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+PiAgIAl9DQo+Pg0KPj4gLQlmbXQgPSBteGNfanBlZ19m aW5kX2Zvcm1hdChjdHgsIGZvdXJjYyk7DQo+PiAtCWlmICghZm10IHx8IGZtdC0+ZmxhZ3MgIT0g cV90eXBlKSB7DQo+PiAtCQlkZXZfd2FybihkZXYsICJGb3JtYXQgbm90IHN1cHBvcnRlZDogJWMl YyVjJWMsIHVzZSB0aGUNCj5kZWZhdWx0LlxuIiwNCj4+IC0JCQkgKGZvdXJjYyAmIDB4ZmYpLA0K Pj4gLQkJCSAoZm91cmNjID4+ICA4KSAmIDB4ZmYsDQo+PiAtCQkJIChmb3VyY2MgPj4gMTYpICYg MHhmZiwNCj4+IC0JCQkgKGZvdXJjYyA+PiAyNCkgJiAweGZmKTsNCj4+IC0JCWYtPmZtdC5waXhf bXAucGl4ZWxmb3JtYXQgPSAoanBlZy0+bW9kZSA9PQ0KPk1YQ19KUEVHX0RFQ09ERSkgPw0KPj4g LQkJCQlNWENfSlBFR19ERUZBVUxUX1BGTVQgOg0KPlY0TDJfUElYX0ZNVF9KUEVHOw0KPj4gLQkJ Zm10ID0gbXhjX2pwZWdfZmluZF9mb3JtYXQoY3R4LCBmLT5mbXQucGl4X21wLnBpeGVsZm9ybWF0 KTsNCj4+IC0JfQ0KPj4gLQlyZXR1cm4gbXhjX2pwZWdfdHJ5X2ZtdChmLCBmbXQsIGN0eCwgcV90 eXBlKTsNCj4+ICsJcmV0dXJuIG14Y19qcGVnX3RyeV9mbXQoZiwgY3R4LCAmdG1wX3EpOw0KPj4g ICB9DQo+Pg0KPj4gICBzdGF0aWMgaW50IG14Y19qcGVnX3RyeV9mbXRfdmlkX291dChzdHJ1Y3Qg ZmlsZSAqZmlsZSwgdm9pZCAqcHJpdiwNCj4+IEBAIC0xODg4LDg4ICsxOTExLDU1IEBAIHN0YXRp YyBpbnQgbXhjX2pwZWdfdHJ5X2ZtdF92aWRfb3V0KHN0cnVjdCBmaWxlDQo+KmZpbGUsIHZvaWQg KnByaXYsDQo+PiAgIAlzdHJ1Y3QgbXhjX2pwZWdfY3R4ICpjdHggPSBteGNfanBlZ19maF90b19j dHgocHJpdik7DQo+PiAgIAlzdHJ1Y3QgbXhjX2pwZWdfZGV2ICpqcGVnID0gY3R4LT5teGNfanBl ZzsNCj4+ICAgCXN0cnVjdCBkZXZpY2UgKmRldiA9IGpwZWctPmRldjsNCj4+IC0JY29uc3Qgc3Ry dWN0IG14Y19qcGVnX2ZtdCAqZm10Ow0KPj4gLQl1MzIgZm91cmNjID0gZi0+Zm10LnBpeF9tcC5w aXhlbGZvcm1hdDsNCj4+IC0NCj4+IC0JaW50IHFfdHlwZSA9IChqcGVnLT5tb2RlID09IE1YQ19K UEVHX0VOQ09ERSkgPw0KPj4gLQkJICAgICBNWENfSlBFR19GTVRfVFlQRV9SQVcgOiBNWENfSlBF R19GTVRfVFlQRV9FTkM7DQo+PiArCXN0cnVjdCBteGNfanBlZ19xX2RhdGEgdG1wX3E7DQo+Pg0K Pj4gICAJaWYgKCFWNEwyX1RZUEVfSVNfTVVMVElQTEFOQVIoZi0+dHlwZSkpIHsNCj4+ICAgCQlk ZXZfZXJyKGRldiwgIlRSWV9GTVQgd2l0aCBJbnZhbGlkIHR5cGU6ICVkXG4iLCBmLT50eXBlKTsN Cj4+ICAgCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICAgCX0NCj4+DQo+PiAtCWZtdCA9IG14Y19qcGVn X2ZpbmRfZm9ybWF0KGN0eCwgZm91cmNjKTsNCj4+IC0JaWYgKCFmbXQgfHwgZm10LT5mbGFncyAh PSBxX3R5cGUpIHsNCj4+IC0JCWRldl93YXJuKGRldiwgIkZvcm1hdCBub3Qgc3VwcG9ydGVkOiAl YyVjJWMlYywgdXNlIHRoZQ0KPmRlZmF1bHQuXG4iLA0KPj4gLQkJCSAoZm91cmNjICYgMHhmZiks DQo+PiAtCQkJIChmb3VyY2MgPj4gIDgpICYgMHhmZiwNCj4+IC0JCQkgKGZvdXJjYyA+PiAxNikg JiAweGZmLA0KPj4gLQkJCSAoZm91cmNjID4+IDI0KSAmIDB4ZmYpOw0KPj4gLQkJZi0+Zm10LnBp eF9tcC5waXhlbGZvcm1hdCA9IChqcGVnLT5tb2RlID09DQo+TVhDX0pQRUdfRU5DT0RFKSA/DQo+ PiAtCQkJCU1YQ19KUEVHX0RFRkFVTFRfUEZNVCA6DQo+VjRMMl9QSVhfRk1UX0pQRUc7DQo+PiAt CQlmbXQgPSBteGNfanBlZ19maW5kX2Zvcm1hdChjdHgsIGYtPmZtdC5waXhfbXAucGl4ZWxmb3Jt YXQpOw0KPj4gLQl9DQo+PiAtCXJldHVybiBteGNfanBlZ190cnlfZm10KGYsIGZtdCwgY3R4LCBx X3R5cGUpOw0KPj4gKwlyZXR1cm4gbXhjX2pwZWdfdHJ5X2ZtdChmLCBjdHgsICZ0bXBfcSk7IH0N Cj4NCj5Mb3RzIG9mIGNoYW5nZXMgaGVyZSwgbG9va3MgY2xlYW5lciBsaWtlIHRoaXMsIGxlc3Mg Y29kZSBkdXBsaWNhdGlvbi4NCj5SZWdyZXNzaW9uIHRlc3RzIGxvb2sgb2ssIGhvcGUgd2UgZGlk IG5vdCBtaXNzIGFueXRoaW5nLg0KPg0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIG14Y19qcGVnX3Nf cGFyc2VkX2ZtdChzdHJ1Y3QgbXhjX2pwZWdfY3R4ICpjdHgsIHN0cnVjdA0KPj4gK3Y0bDJfZm9y bWF0ICpmKSB7DQo+PiArCXN0cnVjdCB2NGwyX3BpeF9mb3JtYXRfbXBsYW5lICpwaXhfbXAgPSAm Zi0+Zm10LnBpeF9tcDsNCj4+ICsJc3RydWN0IG14Y19qcGVnX3FfZGF0YSAqcV9kYXRhX2NhcDsN Cj4+ICsNCj4+ICsJaWYgKGN0eC0+bXhjX2pwZWctPm1vZGUgIT0gTVhDX0pQRUdfREVDT0RFDQo+ fHwgIVY0TDJfVFlQRV9JU19DQVBUVVJFKGYtPnR5cGUpKQ0KPj4gKwkJcmV0dXJuOw0KPj4gKwlp ZiAoIWN0eC0+aGVhZGVyX3BhcnNlZCkNCj4+ICsJCXJldHVybjsNCj4+ICsNCj4+ICsJcV9kYXRh X2NhcCA9IG14Y19qcGVnX2dldF9xX2RhdGEoY3R4LCBmLT50eXBlKTsNCj4+ICsJcGl4X21wLT5w aXhlbGZvcm1hdCA9IHBpeF9tcC0+cGl4ZWxmb3JtYXQ7DQo+DQo+V2hhdCdzIHRoZSBwdXJwb3Nl IG9mIHRoZSBhYm92ZSBsaW5lPyBXYXMgaXQgbWVhbnQgdG8gYmUgcV9kYXRhX2NhcC0+Zm10LQ0K Pj5mb3VyY2M/DQoNCkl0J3MgcmVkdW5kYW50IGluIHRoaXMgcGF0Y2gsDQphbmQgaW4gdGhlIHNl Y29uZCBwYXRjaCBvZiB0aGlzIHBhdGNoIHNldCwNCml0IHdpbGwgYmUgY2hhbmdlZCB0bzoNCnBp eF9tcC0+cGl4ZWxmb3JtYXQgPSBteGNfanBlZ190cnlfZm91cmNjKGN0eCwgcGl4X21wLT5waXhl bGZvcm1hdCk7DQoNCj4NCj4+ICsJcGl4X21wLT53aWR0aCA9IHFfZGF0YV9jYXAtPnc7DQo+PiAr CXBpeF9tcC0+aGVpZ2h0ID0gcV9kYXRhX2NhcC0+aDsNCj4+ICAgfQ0KPj4NCj4+ICAgc3RhdGlj IGludCBteGNfanBlZ19zX2ZtdChzdHJ1Y3QgbXhjX2pwZWdfY3R4ICpjdHgsDQo+PiAgIAkJCSAg c3RydWN0IHY0bDJfZm9ybWF0ICpmKQ0KPj4gICB7DQo+PiAgIAlzdHJ1Y3QgdmIyX3F1ZXVlICp2 cTsNCj4+IC0Jc3RydWN0IG14Y19qcGVnX3FfZGF0YSAqcV9kYXRhID0gTlVMTDsNCj4+IC0Jc3Ry dWN0IHY0bDJfcGl4X2Zvcm1hdF9tcGxhbmUgKnBpeF9tcCA9ICZmLT5mbXQucGl4X21wOw0KPj4g ICAJc3RydWN0IG14Y19qcGVnX2RldiAqanBlZyA9IGN0eC0+bXhjX2pwZWc7DQo+PiAtCWludCBp Ow0KPj4NCj4+ICAgCXZxID0gdjRsMl9tMm1fZ2V0X3ZxKGN0eC0+ZmgubTJtX2N0eCwgZi0+dHlw ZSk7DQo+PiAgIAlpZiAoIXZxKQ0KPj4gICAJCXJldHVybiAtRUlOVkFMOw0KPj4NCj4+IC0JcV9k YXRhID0gbXhjX2pwZWdfZ2V0X3FfZGF0YShjdHgsIGYtPnR5cGUpOw0KPj4gLQ0KPj4gICAJaWYg KHZiMl9pc19idXN5KHZxKSkgew0KPj4gICAJCXY0bDJfZXJyKCZqcGVnLT52NGwyX2RldiwgInF1 ZXVlIGJ1c3lcbiIpOw0KPj4gICAJCXJldHVybiAtRUJVU1k7DQo+PiAgIAl9DQo+Pg0KPj4gLQlx X2RhdGEtPmZtdCA9IG14Y19qcGVnX2ZpbmRfZm9ybWF0KGN0eCwgcGl4X21wLT5waXhlbGZvcm1h dCk7DQo+PiAtCXFfZGF0YS0+dyA9IHBpeF9tcC0+d2lkdGg7DQo+PiAtCXFfZGF0YS0+aCA9IHBp eF9tcC0+aGVpZ2h0Ow0KPj4gLQ0KPj4gLQlxX2RhdGEtPndfYWRqdXN0ZWQgPSBxX2RhdGEtPnc7 DQo+PiAtCXFfZGF0YS0+aF9hZGp1c3RlZCA9IHFfZGF0YS0+aDsNCj4+IC0JLyoNCj4+IC0JICog YWxpZ24gdXAgdGhlIHJlc29sdXRpb24gZm9yIENBU1QgSVAsDQo+PiAtCSAqIGJ1dCBsZWF2ZSB0 aGUgYnVmZmVyIHJlc29sdXRpb24gdW5jaGFuZ2VkDQo+PiAtCSAqLw0KPj4gLQl2NGxfYm91bmRf YWxpZ25faW1hZ2UoJnFfZGF0YS0+d19hZGp1c3RlZCwNCj4+IC0JCQkgICAgICBxX2RhdGEtPndf YWRqdXN0ZWQsICAvKiBhZGp1c3QgdXB3YXJkcyAqLw0KPj4gLQkJCSAgICAgIE1YQ19KUEVHX01B WF9XSURUSCwNCj4+IC0JCQkgICAgICBxX2RhdGEtPmZtdC0+aF9hbGlnbiwNCj4+IC0JCQkgICAg ICAmcV9kYXRhLT5oX2FkanVzdGVkLA0KPj4gLQkJCSAgICAgIHFfZGF0YS0+aF9hZGp1c3RlZCwg LyogYWRqdXN0IHVwd2FyZHMgKi8NCj4+IC0JCQkgICAgICBNWENfSlBFR19NQVhfSEVJR0hULA0K Pj4gLQkJCSAgICAgIHFfZGF0YS0+Zm10LT52X2FsaWduLA0KPj4gLQkJCSAgICAgIDApOw0KPj4g LQ0KPj4gLQlmb3IgKGkgPSAwOyBpIDwgcGl4X21wLT5udW1fcGxhbmVzOyBpKyspIHsNCj4+IC0J CXFfZGF0YS0+Ynl0ZXNwZXJsaW5lW2ldID0gcGl4X21wLT5wbGFuZV9mbXRbaV0uYnl0ZXNwZXJs aW5lOw0KPj4gLQkJcV9kYXRhLT5zaXplaW1hZ2VbaV0gPSBwaXhfbXAtPnBsYW5lX2ZtdFtpXS5z aXplaW1hZ2U7DQo+PiAtCX0NCj4+ICsJbXhjX2pwZWdfc19wYXJzZWRfZm10KGN0eCwgZik7DQo+ Pg0KPj4gLQlyZXR1cm4gMDsNCj4+ICsJcmV0dXJuIG14Y19qcGVnX3RyeV9mbXQoZiwgY3R4LCBt eGNfanBlZ19nZXRfcV9kYXRhKGN0eCwgZi0+dHlwZSkpOw0KPj4gICB9DQo+Pg0KPj4gICBzdGF0 aWMgaW50IG14Y19qcGVnX3NfZm10X3ZpZF9jYXAoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnBy aXYsDQo+PiAgIAkJCQkgIHN0cnVjdCB2NGwyX2Zvcm1hdCAqZikNCj4+ICAgew0KPj4gLQlpbnQg cmV0Ow0KPj4gLQ0KPj4gLQlyZXQgPSBteGNfanBlZ190cnlfZm10X3ZpZF9jYXAoZmlsZSwgcHJp diwgZik7DQo+PiAtCWlmIChyZXQpDQo+PiAtCQlyZXR1cm4gcmV0Ow0KPj4gLQ0KPj4gICAJcmV0 dXJuIG14Y19qcGVnX3NfZm10KG14Y19qcGVnX2ZoX3RvX2N0eChwcml2KSwgZik7DQo+PiAgIH0N Cj4+DQo+PiBAQCAtMTk4MywxMCArMTk3Myw2IEBAIHN0YXRpYyBpbnQgbXhjX2pwZWdfc19mbXRf dmlkX291dChzdHJ1Y3QgZmlsZSAqZmlsZSwNCj52b2lkICpwcml2LA0KPj4gICAJZW51bSB2NGwy X2J1Zl90eXBlIGNhcF90eXBlID0NCj5WNEwyX0JVRl9UWVBFX1ZJREVPX0NBUFRVUkVfTVBMQU5F Ow0KPj4gICAJc3RydWN0IHY0bDJfZm9ybWF0IGZjOw0KPj4NCj4+IC0JcmV0ID0gbXhjX2pwZWdf dHJ5X2ZtdF92aWRfb3V0KGZpbGUsIHByaXYsIGYpOw0KPj4gLQlpZiAocmV0KQ0KPj4gLQkJcmV0 dXJuIHJldDsNCj4+IC0NCj4+ICAgCXJldCA9IG14Y19qcGVnX3NfZm10KG14Y19qcGVnX2ZoX3Rv X2N0eChwcml2KSwgZik7DQo+PiAgIAlpZiAocmV0KQ0KPj4gICAJCXJldHVybiByZXQ7DQo+PiBA QCAtMjAzMiw2ICsyMDE4LDEwIEBAIHN0YXRpYyBpbnQgbXhjX2pwZWdfZ19mbXRfdmlkKHN0cnVj dCBmaWxlICpmaWxlLA0KPnZvaWQgKnByaXYsDQo+PiAgIAlwaXhfbXAtPndpZHRoID0gcV9kYXRh LT53Ow0KPj4gICAJcGl4X21wLT5oZWlnaHQgPSBxX2RhdGEtPmg7DQo+PiAgIAlwaXhfbXAtPmZp ZWxkID0gVjRMMl9GSUVMRF9OT05FOw0KPj4gKwlpZiAocV9kYXRhLT5mbXQtPmZsYWdzID09IE1Y Q19KUEVHX0ZNVF9UWVBFX1JBVykgew0KPj4gKwkJcGl4X21wLT53aWR0aCA9IHFfZGF0YS0+d19h ZGp1c3RlZDsNCj4+ICsJCXBpeF9tcC0+aGVpZ2h0ID0gcV9kYXRhLT5oX2FkanVzdGVkOw0KPj4g Kwl9DQo+Pg0KPj4gICAJLyogZml4IGNvbG9yc3BhY2UgaW5mb3JtYXRpb24gdG8gc1JHQiBmb3Ig Ym90aCBvdXRwdXQgJiBjYXB0dXJlICovDQo+PiAgIAlwaXhfbXAtPmNvbG9yc3BhY2UgPSBWNEwy X0NPTE9SU1BBQ0VfU1JHQjsgQEAgLTIwNDgsNg0KPisyMDM4LDEwMCBAQA0KPj4gc3RhdGljIGlu dCBteGNfanBlZ19nX2ZtdF92aWQoc3RydWN0IGZpbGUgKmZpbGUsIHZvaWQgKnByaXYsDQo+PiAg IAlyZXR1cm4gMDsNCj4+ICAgfQ0KPj4NCj4+ICtzdGF0aWMgaW50IG14Y19qcGVnX2RlY19nX3Nl bGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsDQo+PiArc3RydWN0IHY0bDJfc2Vs ZWN0aW9uICpzKSB7DQo+PiArCXN0cnVjdCBteGNfanBlZ19jdHggKmN0eCA9IG14Y19qcGVnX2Zo X3RvX2N0eChmaCk7DQo+PiArCXN0cnVjdCBteGNfanBlZ19xX2RhdGEgKnFfZGF0YV9jYXA7DQo+ PiArDQo+PiArCWlmIChzLT50eXBlICE9IFY0TDJfQlVGX1RZUEVfVklERU9fQ0FQVFVSRSAmJiBz LT50eXBlICE9DQo+VjRMMl9CVUZfVFlQRV9WSURFT19DQVBUVVJFX01QTEFORSkNCj4+ICsJCXJl dHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKwlxX2RhdGFfY2FwID0gbXhjX2pwZWdfZ2V0X3FfZGF0 YShjdHgsIHMtPnR5cGUpOw0KPj4gKw0KPj4gKwlzd2l0Y2ggKHMtPnRhcmdldCkgew0KPg0KPkFj b3JkaW5nIHRvOg0KPmh0dHBzOi8vbGludXh0di5vcmcvZG93bmxvYWRzL3Y0bC1kdmItYXBpcy91 c2Vyc3BhY2UtYXBpL3Y0bC9kZXYtDQo+ZGVjb2Rlci5odG1sP2hpZ2hsaWdodD12NGwyX3NlbF90 Z3RfY29tcG9zZV9wYWRkZWQNCj4NCj5UaGUgZm9sbG93aW5nIHNlbGVjdGlvbiB0YXJnZXRzIGFy ZSBzdXBwb3J0ZWQgb24gQ0FQVFVSRToNCj4NCj5WNEwyX1NFTF9UR1RfQ1JPUF9CT1VORFMgLSBj b3JyZXNwb25kcyB0byB0aGUgY29kZWQgcmVzb2x1dGlvbiBvZiB0aGUNCj5zdHJlYW0uDQo+DQo+ VjRMMl9TRUxfVEdUX0NST1BfREVGQVVMVCAtIHRoZSByZWN0YW5nbGUgY292ZXJpbmcgdGhlIHBh cnQgb2YgdGhlDQo+Q0FQVFVSRSBidWZmZXIgdGhhdCBjb250YWlucyBtZWFuaW5nZnVsIHBpY3R1 cmUgZGF0YSAodmlzaWJsZSBhcmVhKTsgd2lkdGgNCj5hbmQgaGVpZ2h0IHdpbGwgYmUgZXF1YWwg dG8gdGhlIHZpc2libGUgcmVzb2x1dGlvbiBvZiB0aGUgc3RyZWFtLg0KPg0KPlY0TDJfU0VMX1RH VF9DUk9QIC0gdGhlIHJlY3RhbmdsZSB3aXRoaW4gdGhlIGNvZGVkIHJlc29sdXRpb24gdG8gYmUg b3V0cHV0DQo+dG8gQ0FQVFVSRTsgZGVmYXVsdHMgdG8gVjRMMl9TRUxfVEdUX0NST1BfREVGQVVM VDsgcmVhZC1vbmx5IG9uDQo+aGFyZHdhcmUgd2l0aG91dCBhZGRpdGlvbmFsIGNvbXBvc2Uvc2Nh bGluZyBjYXBhYmlsaXRpZXMuDQo+DQoNClRoZXNlIHRocmVlIHRhcmdldHMgYXJlIGNvcnJlc3Bv bmRzIHRvIHRoZSBjb2RlZCByZXNvbHV0aW9uIG9mIHRoZSBzdHJlYW0sDQpUaGV5IGFyZSBjYWxs ZWQgb24gb3V0cHV0IHF1ZXVlLA0KQW5kIHRoZSBqcGVnIGNvZGVjIGRvbid0IHN1cHBvcnQgYW55 IGNyb3AgZm9yIHRoZSBjb2RlZCBzdHJlYW0sDQphbmQgdGhleSB3aWxsIGJlIGFsd2F5cyBlcXVh bCB0byB0aGUgcmVzb2x1dGlvbiBzZXQgYnkgU19GTVQoKSBvbiBvdXRwdXQgcXVldWUsDQpTbyBJ IGRvbid0IHRoaW5rIGl0J3MgbmVjZXNzYXJ5IHRvIGltcGxlbWVudCB0aGVtLg0KDQoNCj4+ICsJ Y2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRToNCj4+ICsJY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9T RV9ERUZBVUxUOg0KPj4gKwljYXNlIFY0TDJfU0VMX1RHVF9DT01QT1NFX1BBRERFRDoNCj4NCj5W NEwyX1NFTF9UR1RfQ09NUE9TRV9QQURERUQgc2hvdWxkIGFsc28gY29udGFpbiBwYWRkaW5ncywg c28gbW92ZSBpdA0KPmJlbG93LCBhcyBkaXNjdXNzZWQgaW50ZXJuYWxseS4NCj4NCj5SZWdhcmRz LA0KPk1pcmVsYQ0KPg0KPj4gKwkJcy0+ciA9IHFfZGF0YV9jYXAtPmNyb3A7DQo+PiArCQlicmVh azsNCj4+ICsJY2FzZSBWNEwyX1NFTF9UR1RfQ09NUE9TRV9CT1VORFM6DQo+PiArCQlzLT5yLmxl ZnQgPSAwOw0KPj4gKwkJcy0+ci50b3AgPSAwOw0KPj4gKwkJcy0+ci53aWR0aCA9IHFfZGF0YV9j YXAtPndfYWRqdXN0ZWQ7DQo+PiArCQlzLT5yLmhlaWdodCA9IHFfZGF0YV9jYXAtPmhfYWRqdXN0 ZWQ7DQo+PiArCQlicmVhazsNCj4+ICsJZGVmYXVsdDoNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0K Pj4gKwl9DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50 IG14Y19qcGVnX2VuY19nX3NlbGVjdGlvbihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsDQo+ PiArc3RydWN0IHY0bDJfc2VsZWN0aW9uICpzKSB7DQo+PiArCXN0cnVjdCBteGNfanBlZ19jdHgg KmN0eCA9IG14Y19qcGVnX2ZoX3RvX2N0eChmaCk7DQo+PiArCXN0cnVjdCBteGNfanBlZ19xX2Rh dGEgKnFfZGF0YV9vdXQ7DQo+PiArDQo+PiArCWlmIChzLT50eXBlICE9IFY0TDJfQlVGX1RZUEVf VklERU9fT1VUUFVUICYmIHMtPnR5cGUgIT0NCj5WNEwyX0JVRl9UWVBFX1ZJREVPX09VVFBVVF9N UExBTkUpDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJcV9kYXRhX291dCA9IG14 Y19qcGVnX2dldF9xX2RhdGEoY3R4LCBzLT50eXBlKTsNCj4+ICsNCj4+ICsJc3dpdGNoIChzLT50 YXJnZXQpIHsNCj4+ICsJY2FzZSBWNEwyX1NFTF9UR1RfQ1JPUF9ERUZBVUxUOg0KPj4gKwljYXNl IFY0TDJfU0VMX1RHVF9DUk9QX0JPVU5EUzoNCj4+ICsJCXMtPnIubGVmdCA9IDA7DQo+PiArCQlz LT5yLnRvcCA9IDA7DQo+PiArCQlzLT5yLndpZHRoID0gcV9kYXRhX291dC0+dzsNCj4+ICsJCXMt PnIuaGVpZ2h0ID0gcV9kYXRhX291dC0+aDsNCj4+ICsJCWJyZWFrOw0KPj4gKwljYXNlIFY0TDJf U0VMX1RHVF9DUk9QOg0KPj4gKwkJcy0+ciA9IHFfZGF0YV9vdXQtPmNyb3A7DQo+PiArCQlicmVh azsNCj4+ICsJZGVmYXVsdDoNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwl9DQo+PiArDQo+ PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IG14Y19qcGVnX2dfc2Vs ZWN0aW9uKHN0cnVjdCBmaWxlICpmaWxlLCB2b2lkICpmaCwgc3RydWN0DQo+PiArdjRsMl9zZWxl Y3Rpb24gKnMpIHsNCj4+ICsJc3RydWN0IG14Y19qcGVnX2N0eCAqY3R4ID0gbXhjX2pwZWdfZmhf dG9fY3R4KGZoKTsNCj4+ICsNCj4+ICsJaWYgKGN0eC0+bXhjX2pwZWctPm1vZGUgPT0gTVhDX0pQ RUdfREVDT0RFKQ0KPj4gKwkJcmV0dXJuIG14Y19qcGVnX2RlY19nX3NlbGVjdGlvbihmaWxlLCBm aCwgcyk7DQo+PiArCWVsc2UNCj4+ICsJCXJldHVybiBteGNfanBlZ19lbmNfZ19zZWxlY3Rpb24o ZmlsZSwgZmgsIHMpOyB9DQo+PiArDQo+PiArc3RhdGljIGludCBteGNfanBlZ19zX3NlbGVjdGlv bihzdHJ1Y3QgZmlsZSAqZmlsZSwgdm9pZCAqZmgsIHN0cnVjdA0KPj4gK3Y0bDJfc2VsZWN0aW9u ICpzKSB7DQo+PiArCXN0cnVjdCBteGNfanBlZ19jdHggKmN0eCA9IG14Y19qcGVnX2ZoX3RvX2N0 eChmaCk7DQo+PiArCXN0cnVjdCBteGNfanBlZ19xX2RhdGEgKnFfZGF0YV9vdXQ7DQo+PiArDQo+ PiArCWlmIChjdHgtPm14Y19qcGVnLT5tb2RlICE9IE1YQ19KUEVHX0VOQ09ERSkNCj4+ICsJCXJl dHVybiAtRU5PVFRZOw0KPj4gKw0KPj4gKwlpZiAocy0+dHlwZSAhPSBWNEwyX0JVRl9UWVBFX1ZJ REVPX09VVFBVVCAmJiBzLT50eXBlICE9DQo+VjRMMl9CVUZfVFlQRV9WSURFT19PVVRQVVRfTVBM QU5FKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+PiArCWlmIChzLT50YXJnZXQgIT0gVjRMMl9T RUxfVEdUX0NST1ApDQo+PiArCQlyZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsJcV9kYXRhX291 dCA9IG14Y19qcGVnX2dldF9xX2RhdGEoY3R4LCBzLT50eXBlKTsNCj4+ICsJaWYgKHMtPnIubGVm dCB8fCBzLT5yLnRvcCkNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKwlpZiAocy0+ci53aWR0 aCA+IHFfZGF0YV9vdXQtPncgfHwgcy0+ci5oZWlnaHQgPiBxX2RhdGFfb3V0LT5oKQ0KPj4gKwkJ cmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArCXFfZGF0YV9vdXQtPmNyb3AubGVmdCA9IDA7DQo+ PiArCXFfZGF0YV9vdXQtPmNyb3AudG9wID0gMDsNCj4+ICsJcV9kYXRhX291dC0+Y3JvcC53aWR0 aCA9IHMtPnIud2lkdGg7DQo+PiArCXFfZGF0YV9vdXQtPmNyb3AuaGVpZ2h0ID0gcy0+ci5oZWln aHQ7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICAgc3RhdGljIGludCBt eGNfanBlZ19zdWJzY3JpYmVfZXZlbnQoc3RydWN0IHY0bDJfZmggKmZoLA0KPj4gICAJCQkJICAg IGNvbnN0IHN0cnVjdCB2NGwyX2V2ZW50X3N1YnNjcmlwdGlvbiAqc3ViKQ0KPj4gICB7DQo+PiBA QCAtMjA3Nyw2ICsyMTYxLDkgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB2NGwyX2lvY3RsX29wcw0K Pm14Y19qcGVnX2lvY3RsX29wcyA9IHsNCj4+ICAgCS52aWRpb2NfZ19mbXRfdmlkX2NhcF9tcGxh bmUJPSBteGNfanBlZ19nX2ZtdF92aWQsDQo+PiAgIAkudmlkaW9jX2dfZm10X3ZpZF9vdXRfbXBs YW5lCT0gbXhjX2pwZWdfZ19mbXRfdmlkLA0KPj4NCj4+ICsJLnZpZGlvY19nX3NlbGVjdGlvbgkJ PSBteGNfanBlZ19nX3NlbGVjdGlvbiwNCj4+ICsJLnZpZGlvY19zX3NlbGVjdGlvbgkJPSBteGNf anBlZ19zX3NlbGVjdGlvbiwNCj4+ICsNCj4+ICAgCS52aWRpb2Nfc3Vic2NyaWJlX2V2ZW50CQk9 IG14Y19qcGVnX3N1YnNjcmliZV9ldmVudCwNCj4+ICAgCS52aWRpb2NfdW5zdWJzY3JpYmVfZXZl bnQJPSB2NGwyX2V2ZW50X3Vuc3Vic2NyaWJlLA0KPj4NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L21lZGlhL3BsYXRmb3JtL254cC9pbXgtanBlZy9teGMtanBlZy5oDQo+PiBiL2RyaXZlcnMvbWVk aWEvcGxhdGZvcm0vbnhwL2lteC1qcGVnL214Yy1qcGVnLmgNCj4+IGluZGV4IDgxMDRlZTRhM2I3 YS4uZjc1ZGZjODlmZjZkIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9u eHAvaW14LWpwZWcvbXhjLWpwZWcuaA0KPj4gKysrIGIvZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9u eHAvaW14LWpwZWcvbXhjLWpwZWcuaA0KPj4gQEAgLTg0LDYgKzg0LDcgQEAgc3RydWN0IG14Y19q cGVnX3FfZGF0YSB7DQo+PiAgIAlpbnQJCQkJaDsNCj4+ICAgCWludAkJCQloX2FkanVzdGVkOw0K Pj4gICAJdW5zaWduZWQgaW50CQkJc2VxdWVuY2U7DQo+PiArCXN0cnVjdCB2NGwyX3JlY3QJCWNy b3A7DQo+PiAgIH07DQo+Pg0KPj4gICBzdHJ1Y3QgbXhjX2pwZWdfY3R4IHsNCg==