From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 50694D70E05 for ; Fri, 29 Nov 2024 02:30:34 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:From: References:Cc:To:Subject:Date:Message-ID:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Owner; bh=04HVV1yDfWJSDQGu1S/Z6L1BswcbXj7SpJvaA9zCcOE=; b=Uk2k3T8Rv+UilNeW71v3m1E02V MBAlhwJ4Yg23Yrlhz2G42lH4V5TLrygwGsFsO56heDFtEEQF9kn8OBr3fJ+cyRhar8OJ9iUwrFrU6 kg1wX9jR00P/UU46E6x71dR/hWqJBlx6nb+Q9NHjmno90ujb3Z7+8fj9mFeOgINbrvnz3AoomfqVJ AcM+pg42fPHUzcLecvicmb7PbpSmI7dh2PXW97BcvFzF7morlRxtejEBYWKwRONn8GUNwvJCqYH5w EZEs9YF6vfC4fbYKXKS7L6Sn7zR7YTD6tlLdqKaB4GCcg+SN9RHO5I7gz6ycIxOymBicWkvGhit14 iHyqLL3A==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tGqm9-0000000GkSF-29Nt; Fri, 29 Nov 2024 02:30:33 +0000 Received: from mail-am7eur03on2061e.outbound.protection.outlook.com ([2a01:111:f403:260e::61e] helo=EUR03-AM7-obe.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tGqm6-0000000GkPm-24fN; Fri, 29 Nov 2024 02:30:31 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kFvfAAV4fVMqLiORBB2Y3JmCGi3y/kQZu8GWMIeHpyHUQtW7yVsqxqdh9BIOmu2FAcQFdVa9Euht4FEV8eyQAI6uKdWBb0/E0ZPd41pWrW6CcQBBOaBf5wW7TtV8i38tUqYVhzPIT64yzYm59fqtn/+Nh0ukganEMfbjOhJ9EQF3MEb4qBEIRni7FOTAumRVTprEqz2MxG41yonNPdAnt1te73FZfragvgQzLdJXGQPCDbXDPm01lUDW80fK2NerohriiSwrm+QRuEZwjf7ElUCb4EjhbWIF3btU5pnJ6IzIyXKtGeuFwL1yq6Y9tNLS2weiL/MSKrS+9TEJDOBghQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=hfTd7i+cO4E51tx8OJKC/HTn9xVcdbha2RoseeLtvOk=; b=MMZNxyply2m5QH1LUffOys7prUp9Lq4GBl8zwCIfnBVC6+6uqEhx9ZX1vc0YLDJqdljlXCYpIV5/9lvK6xgPxrHSC/Q4/EiJviYP+Dg5cxKqgg5umQf9M0wbWopANA3quS8hhW2x6KNgS4yLmhurq4ck7hOq70MTX7iuOzdA7/QiD62CZe1Bjge6WPShEtA7YjC4uwR7fQnl62HXWvrTxHfE3g6XlhOEZ1R0E4mAMdqQ+hlGxfYkaPLX7lmx4xyNUwSuhNLV9QBidcXmGCU6QZ4k4ADYWBVNcuFdmFAKL/8ZdIJbPTQSBl8X/NlmwFPsaT3Zknwau2u88Rzi4BDKMA== 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=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=hfTd7i+cO4E51tx8OJKC/HTn9xVcdbha2RoseeLtvOk=; b=dalB5mR6ZUCX8kNNmxY95kQKtsacZDYmhHTQaHbsu+wV56VEMeBJg4ltgdj7rOBW+47/2IgUP1s+EhX06UnrcqmERuKm5NP+qJRVNVkdKPDTA+fMbpeH6yywmAS/aNuzclhVJpqzTHD7a++FQtCVe+DJagnlAxuPFW0GJGfdWASLnCpdgD0BuCXBAaOcxodbd3HICEEJ0VxddSXOONvHykmIOZi9mTVPtHMfDlyXph/sNKWw9e0HrmOdpOjqAYC3/SANROPI2C9k5PqOPLPxWlyG9S5b0MWAvvsmOc49BB9JLN1Web1aK6qs7qZLWuhqzIjIyjJUmLJ7KBHLpRoYYw== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from AM7PR04MB7046.eurprd04.prod.outlook.com (2603:10a6:20b:113::22) by PA1PR04MB10281.eurprd04.prod.outlook.com (2603:10a6:102:467::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8207.14; Fri, 29 Nov 2024 02:30:24 +0000 Received: from AM7PR04MB7046.eurprd04.prod.outlook.com ([fe80::d1ce:ea15:6648:6f90]) by AM7PR04MB7046.eurprd04.prod.outlook.com ([fe80::d1ce:ea15:6648:6f90%6]) with mapi id 15.20.8207.010; Fri, 29 Nov 2024 02:30:24 +0000 Message-ID: <0cf75072-389e-412d-a4de-759ec558ee7c@nxp.com> Date: Fri, 29 Nov 2024 10:30:55 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [v4,09/19] drm/imx: Add i.MX8qxp Display Controller display engine To: Sui Jingfeng , dri-devel@lists.freedesktop.org, devicetree@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, linux-phy@lists.infradead.org Cc: p.zabel@pengutronix.de, maarten.lankhorst@linux.intel.com, mripard@kernel.org, tzimmermann@suse.de, airlied@gmail.com, simona@ffwll.ch, robh@kernel.org, krzk+dt@kernel.org, conor+dt@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, glx@linutronix.de, vkoul@kernel.org, kishon@kernel.org, aisheng.dong@nxp.com, agx@sigxcpu.org, francesco@dolcini.it, frank.li@nxp.com, dmitry.baryshkov@linaro.org References: <20241125093316.2357162-10-victor.liu@nxp.com> <70094b6a-55da-4492-8980-3c2524427a7e@linux.dev> From: Liu Ying Content-Language: en-US In-Reply-To: <70094b6a-55da-4492-8980-3c2524427a7e@linux.dev> X-ClientProxiedBy: SG2PR01CA0173.apcprd01.prod.exchangelabs.com (2603:1096:4:28::29) To AM7PR04MB7046.eurprd04.prod.outlook.com (2603:10a6:20b:113::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM7PR04MB7046:EE_|PA1PR04MB10281:EE_ X-MS-Office365-Filtering-Correlation-Id: bd27ed16-1e3a-40f9-7139-08dd101dc734 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|366016|376014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?YjlxZ0JJcm5TdDUyWFlvWDJlVEpYNWMrZFYwcHU2L0tKLzRVK1NkV2dXUHRa?= =?utf-8?B?NVdCVHlOSlZFWVBlWTRJbjZGQ0dJSnhaRGlCVXdaTzFicjZHM2Y1bUlYVS9K?= =?utf-8?B?dW1KZVo4YzhxaUpXSDJmQlhiYUJlSnZRZkMzb2VMVGRjbWRjb1VHend4MC9x?= =?utf-8?B?ZVZzNUVTREYrR01maXVCNFd2ZDUxU295dnBRTVY4UGkxVitzT1FpTW1IMmhP?= =?utf-8?B?YUVONTRoaXdRS3dUSzFmYWJRM2hOUHlabWpZK0hiQ2IxUll4SmFTSG50OW53?= =?utf-8?B?L3hJS1NESDY3OFZCMDRRd1RodjMxWTFmN2pPM0YvN3lmM0JJbDI2ZTVNdXUx?= =?utf-8?B?M3dKMDBHS1l1ampXdHp4OER2NGI2WUFEdHRyZm1rNEhxd2ljNzZrdzhnd0FN?= =?utf-8?B?cXBZY3pTVUtvVWljYVdZV1ROR2hwbHJBL3NwbXNnejc0WFNOL1N4RkU3NUND?= =?utf-8?B?SGFWRE1jQXVDWWdKOHUycHU5S09pOCtJQ3Z5Uk1hNUF0UTJUemZWRGxzclhD?= =?utf-8?B?VlIvVWF3VlI1bEZmYWxQYU9OekUyNVc3bFdwTTA3cUcyR1R1a1p0Uk9jSjc0?= =?utf-8?B?Qm43Y0RiQ3BjWVpTTnhHNU1GV3hyUVBUUzRKcGczQnd1T21NMW1ONXd3Wnpw?= =?utf-8?B?N1pFVjRhN2NBYTRIcmt2UDNIYldwL0YzNWdwZ2o2bHg0dW9CZGhic1hpZzk3?= =?utf-8?B?MGhRSVNHOHFnWGo1Sldtc0g1NmFKZ2VPdUpqMzdabzNPTjZlc1liVk84c3JO?= =?utf-8?B?OUxzbXh4cEQwQWpaUS9Sc2ZFcC9MT1hVM053bnZLWDRWQzAzZW9NdjRYNXEx?= =?utf-8?B?N2tEZjRSWWEvckVwTDEzdnVVS2F1dTJPYm0rckV2bXRNVE1talIxQmZqYnkv?= =?utf-8?B?ajduWTlWSmdTaE0zUVFzQU8xd2MzaDNjZU1jUDIrMldTUk0wd1dFKzc0SUc5?= =?utf-8?B?YitoRTE5ZnJ3c3VLcjlKaVd1QlkrZmtCdmJFbExnRVhaMm5BSnppa2grSGt2?= =?utf-8?B?TlJWQ1hMQm55bjF1eElUcFJhOFVrMVZTZzdaVlhjUlNWTGNQdHBJbkhqNlhU?= =?utf-8?B?UXpWYytFR2lJeDhjSmZoaFdSTTV2WTRob0tycHpaa1RzR0FNa2piWUJJaUQr?= =?utf-8?B?dGpKbWttQ2w2RGFBd2o1elRBMHl5SEdhWEdTb2k4ZXQ5ajR0TWRqdHhLUE4v?= =?utf-8?B?aXlvQ2ZWQ0hLQTQxV3h2azNjc0xFajFucUdWY0xsNG5LOFN6VUIwMUVwQUlF?= =?utf-8?B?NjFlbE9CaHpyK0Jja3E0a1JlbDRPV0VIL2JMYUxydlhhUEFaSloyalZSaWY4?= =?utf-8?B?aldBVmMxb3RnS0tPYmdIR1c1eWMvSHlNUlorenR2ZWM3OWI1MXM5ajNjUUdm?= =?utf-8?B?R1U3T0lpTWdpd2ZEZzdyOG81OUxlMTF3MDM1YU9PbGlmQ2h1K3crWWU1NHpB?= =?utf-8?B?NmtWWTdGb0M5VGg4b3dLNGRhSlA2TmRSTzRaREFiaG9ZNlZFWklxZlYxdUpV?= =?utf-8?B?VjlMaFBBT0kxV0JUaVRpVlA1c1JOV21xdWV0MFFFSlRxb0M2RWdkOFVoYjRw?= =?utf-8?B?MHJ5dXViSFNtbk4zcWxXSHhPRHd0MHhaY2cvLzA5Uk0wNW9sVW5hb0RmTTl5?= =?utf-8?B?eHNzQXlFR2d1VFQvQkFFdlFuUzB3RGJhaDBnaW5BM1ZWaDI3djZtRjV3NG1n?= =?utf-8?B?Y1pROVdnM2k5aUlUQ3QxZmRQbmFmdWtGdzR1N3FqT0o5TWFveGdkU0JJNFNT?= =?utf-8?B?Q2NQNVZMelBQRkVxOHBLaThFdlRSNGFNV3FTQlJIc28zS28zYmdlUTh5UFU3?= =?utf-8?B?RkJiSFI3ckJJemRkRGpRdz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM7PR04MB7046.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(366016)(376014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?eHJUNG9Rc0xJUm1BUkRKbGh0OUsvSUhJN0lpNFV5VjhFZU1nOHB0ZW1ZTGla?= =?utf-8?B?MHBTRnFJRHJ3cjltQnVWV3pFcUg2alJQNEhYNWJXVURLT3lXeDVZQmN1d0dt?= =?utf-8?B?TmFEaTd6bisvS2FPMlF2RjN3RUpGY1kyN1BYSWJqR2UwSzRxYS85R0RTTnVz?= =?utf-8?B?RWhxZVJSVGR5emM2NThxL3Q3T2E3VWJVbnRRQkszWlR6YituSXM4bUNrQVll?= =?utf-8?B?ejRJRzNvak5yRWt2bzZ3UTVKN1lsTnUzcnh2UVFidnB0b2JYMTd6OVlQUEwy?= =?utf-8?B?a1NVVnE2T1hPanRIbVNLRkozT05Mb1ZnL1FZYjZoQlRmM3gxMmg5YTRqYUFl?= =?utf-8?B?MzhGUjBkcUZ2Yml3TUhsd3hEVGNTSHBBRGEyVTE2V1RaMmVtVlU1VXZGc0Vu?= =?utf-8?B?ZTlDUEhVQmhheHVVREhGcUtyZVhaaHVpRFZ2T09keG1zYVFYaGJBVmZwQ3lr?= =?utf-8?B?MTVGODFDTkJtOFpnMXZ4T2JJeStjSnY3WDk1anhOVDE3cUliOWcwWWNYQ1ZP?= =?utf-8?B?VzRJQXllVmVubnNkWGZTNVNXSHdBNTQ5S29ycEF1aTVnN2E4MUlsUFI0SStv?= =?utf-8?B?OVcxT1dFWkNWdERLYUF0emFnVGpPNndqWVZBejJUNXZwSkJmaGhXcEx6b2dH?= =?utf-8?B?UmUwTy90MzMwZU85ck9rbllYKzhLTWdPbW4wM0J4UjlnbEp1QjhMbUt6WDA0?= =?utf-8?B?My9NWWFrTWF1UjFSemptRmtpY01tM3BDVVV6NXovYU5sN3ZINWRraHZSNHAv?= =?utf-8?B?WUtmZ0ZJdG9LQ2ZaSVdEVi9NYWc1M0JieVo3WXFPSHdMU1FiZTFpays5WXpY?= =?utf-8?B?cHZLNDFoNGI3L2o5dDZraDdSbU9aZ2hGVCt4S1VaNUQrZHh2dXBZcFZSQmxn?= =?utf-8?B?S3BieC9wNjlVYmlOcjJvRWJXSzhlNW05UlFBSkx5MkFqb3VrMHpLbkNwazQ1?= =?utf-8?B?c3FGUVJ2NXU3SkJ4cjBvVlNqa21CZzl5dDBSY3BGSFppeVRSUHI1K2ZOVy94?= =?utf-8?B?dWtIMmI3dGFEVElMMDdadDJybXdiVFBRWFBFaWo3dFh6M055MDV3NGVST1hO?= =?utf-8?B?aDV5Tit6NU0vUHhsWU9Cd2o1VHd5RUFHRkNod0JxQVdJREhjQkZ4QkkrSXQr?= =?utf-8?B?NlhHSFc4UHd3WUd0TTNsZlY0VUVOWHRjTzdoN0tRRndSSHZiQ1pUcU5TcjRD?= =?utf-8?B?U3dnZHg5T2FkWG1SRkY4VzVnNy9WeXNMenljOE5FREUwdGFRNThPTWNTLzR3?= =?utf-8?B?TmVnNnh0QTNKSDEwaFhUbFpYQnptRCtDdmRhTG95aGpRaWZWTVN4YkhEY0di?= =?utf-8?B?eU9aTm9wYlduRzkvUE9FTUNLQ0Z4UDdqTUlWa1c4aEQ3dElMbysvVXpNelQ5?= =?utf-8?B?UHhkOGlpMThNS2Z0ODBCSG1nZ3ExbnFlV3crUFJFVWR2Tzgwc0dqTHF2Rm1X?= =?utf-8?B?dENsaDJmdDgwU2F0TUpyODlHV1hoNTcrWHhrdkZxME5ta0o1R2xvTmhHMEZn?= =?utf-8?B?NVd6Z0JhS1FaTXA3c0FIYXplQ1VFUFZHSDN1TWE5S2NpdDNPK0ZjUmZJVlBh?= =?utf-8?B?R2tDTC9taTJBeVRXbVRldk1MaFJHd3NLRWw0MStNUGo5Z0dxZ2ZrdlNJYnVM?= =?utf-8?B?cXhlYTRQVDBOcUNKTUUvMUU2VGQ0ODJaNFhyRzZXb0lXRjdiZjZSY084cDMy?= =?utf-8?B?M3NIT1JGTnVqT0VuVE5JM3V4b2x0M09nZHJuT3gxczYraVZwcEVRc0c1QlEz?= =?utf-8?B?MFlaeFRoL3hZM1dnY3cwcEp3MUNlRUxPc2ZaT3pndFkza3N0T1JtSEwzOGFM?= =?utf-8?B?WTZWRUZHQ2M5MUhSQXJaZWNkOUFjclQwVlZtU3U0cTEyall0MWVTb1JGRVAz?= =?utf-8?B?SStXSkV2M1hQMU5obUN5NStSWmRXM2dveVZxaWt3Rk9Da01nK09mYUZJcnBH?= =?utf-8?B?azRtZmcyb0tKbmpMMVlZS0xLZlU2RldUWGdaQ0JVSEY1aWVnc2J0Rm5jNmhv?= =?utf-8?B?ZlgybFpCb1NZNUlpVEhPNldTV3lIdTVoSHRCRnlwS3B2UU1jcHRiR1pSN1Y4?= =?utf-8?B?QmNCVCt3aHRLdFIyUFg0a09Bci8vL2QwZzR5TU9XUVlEU1hMWFo0a3ZUakp1?= =?utf-8?Q?Wm4AFElUSTIoBW9iMi74VthYq?= X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bd27ed16-1e3a-40f9-7139-08dd101dc734 X-MS-Exchange-CrossTenant-AuthSource: AM7PR04MB7046.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 29 Nov 2024 02:30:24.1849 (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: 3tQ6ruB/fD82lczm3n4Ss10QYiGBNDcF0IKZO2WdUAXksIgiB/U2j+RMoqZ2GN/9N0GcUIcens5Rr5R5LMDk1A== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA1PR04MB10281 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20241128_183030_699425_3D7B9B22 X-CRM114-Status: GOOD ( 22.08 ) X-BeenThere: linux-phy@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: Linux Phy Mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-phy" Errors-To: linux-phy-bounces+linux-phy=archiver.kernel.org@lists.infradead.org T24gMTEvMjgvMjAyNCwgU3VpIEppbmdmZW5nIHdyb3RlOgo+IEhpLAoKSGksCgo+IAo+IE9uIDIw MjQvMTEvMjUgMTc6MzMsIExpdSBZaW5nIHdyb3RlOgo+PiBpLk1YOHF4cCBEaXNwbGF5IENvbnRy b2xsZXIgZGlzcGxheSBlbmdpbmUgY29uc2lzdHMgb2YgYWxsIHByb2Nlc3NpbmcKPj4gdW5pdHMg dGhhdCBvcGVyYXRlIGluIGEgZGlzcGxheSBjbG9jayBkb21haW4uwqAgQWRkIG1pbmltYWwgZmVh dHVyZQo+PiBzdXBwb3J0IHdpdGggRnJhbWVHZW4gYW5kIFRDb24gc28gdGhhdCB0aGUgZW5naW5l IGNhbiBvdXRwdXQgZGlzcGxheQo+PiB0aW1pbmdzLgo+IAo+IFRoZSBGcmFtZSBHZW5lcmF0b3Ig aXMgdXNlZCB0byBnZW5lcmF0ZSB2aWRlbyB0aW1pbmdzIGFuZCBjb25zdGFudAo+IHZpZGVvIGNv bG9yIGltYWdlcywgdHJhZGl0aW9uYWxseSB0aGlzIGlzIHN1Yi1tb2R1bGUgb2YgQ1JUQy4gQ1JU Qwo+IGl0c2VsZiBpcyBhIG1pbmltYWwgSFcgdW5pdCwgc2hvdWxkbid0IGJlIGRpdmlkZWQgZnVy dGhlci4KCkkgdGhpbmsgd2UndmUga2luZCBvZiBhZ3JlZWQgdGhhdCBhbGwgaS5NWDhxeHAgRGlz cGxheSBDb250cm9sbGVyCmludGVybmFsIHByb2Nlc3NpbmcgdW5pdHMgYXJlIHNlcGFyYXRlZCBk ZXZpY2VzLCBpbmNsdWRpbmcgdGhlIHVuaXRzCmluIHBpeGVsIGVuZ2luZSBhbmQgZGlzcGxheSBl bmdpbmUuICBUaGlzIGlzIHJlZmxlY3RlZCBieSB0aGUgRFQKYmluZGluZ3MgYWRkZWQgYnkgcGF0 Y2ggMS04LiAKCj4gCj4gSVAgYmxvY2tzIHJlc2lkZXMgaW4gdGhlIG9uZSBkaXNwbGF5IHBpcGUg YXJlcyByZWFkeSB0byBiZSBkcml2ZQo+IG9uY2UgZGlzcGxheSBzdWJzeXN0ZW1zIG9mIGkuTVg4 cXhwIGlzIGlkZW50aWZpZWQuIFdlIHdvbid0IHN1ZmZlcgo+IGZyb20gdGhlIGRlZmVyIHByb2Jl IHByb2JsZW1zIGhlcmUuCgpJIGRvbid0IHNlZSBhbnkgcHJvYmUgZGVmZXJyYWwgcHJvYmxlbS4K Cj4gCj4gU28sIHBsZWFzZSBjb25zaWRlciB0byAqc3F1YXNoKiB0aG9zZSB0aHJlZSBkcml2ZXJz IGludG8gb25lLCB0aGUKClRoZSBkcml2ZXJzIGZvbGxvdyB0aGUgZGV2aWNlLW9yaWVudGVkIHBy b2dyYW1taW5nIG1vZGVsLCBpLmUuLAplYWNoIGRldmljZSBkb2N1bWVudGVkIHdpdGggRFQgYmlu ZGluZ3MgaGFzIGl0J3Mgb3duIGRyaXZlci4KU3F1YXNoaW5nIHRoZW0gaW50byBvbmUgZGVmZWF0 cyB0aGlzIHByb2dyYW1taW5nIG1vZGVsLgoKPiBzcGxpdCB3b3VsZCBjYXVzZSB0b28gbXVjaCBm cmFnbWVudGF0aW9uIHdoaWNoIHdpbGwgYmVjb21lIGNvbnN0cmFpbnRzCj4gZm9yIHlvdSBpbnRy b2R1Y2Ugc3VwcG9ydCBmb3IgdmFyaWFudHMuCgpUaGUgZHJpdmVycyB1c2UgdGhlIGNvbXBvbmVu dCBoZWxwZXIoY29tcG9uZW50LmMpIHRvIGJlIGFnZ3JlZ2F0ZWQKYnkgdGhlIG1hc3RlciByZWdp c3RlcmVkIGluIGRjLWRydi5jLiAgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgcHJvYmxlbQpvciBj b25zdHJhaW50cyBpZiB3ZSB1c2UgdGhlIGNvbXBvbmVudHMgdG8gc3VwcG9ydCBwb3RlbnRpYWwg dmFyaWFudHMuCgo+IAo+PiDCoCBUaGUgZGlzcGxheSBlbmdpbmUgZHJpdmVyIGFzIGEgbWFzdGVy IGJpbmRzIEZyYW1lR2VuIGFuZAo+PiBUQ29uIGRyaXZlcnMgYXMgY29tcG9uZW50cy7CoCBXaGls ZSBhdCBpdCwgdGhlIGRpc3BsYXkgZW5naW5lIGRyaXZlcgo+PiBpcyBhIGNvbXBvbmVudCB0byBi ZSBib3VuZCB3aXRoIHRoZSB1cGNvbWluZyBEUk0gZHJpdmVyLgo+Pgo+PiBTaWduZWQtb2ZmLWJ5 OiBMaXUgWWluZyA8dmljdG9yLmxpdUBueHAuY29tPgo+PiAtLS0KPj4gdjQ6Cj4+ICogVXNlIHJl Z21hcCB0byBkZWZpbmUgcmVnaXN0ZXIgbWFwIGZvciBhbGwgcmVnaXN0ZXJzLiAoRG1pdHJ5KQo+ PiAqIFVzZSByZWdtYXAgQVBJcyB0byBhY2Nlc3MgcmVnaXN0ZXJzLiAoRG1pdHJ5KQo+PiAqIElu bGluZSBzb21lIHNtYWxsIGZ1bmN0aW9ucy4gKERtaXRyeSkKPj4gKiBNb3ZlIGRjX2ZnX2Rpc3Bs YXltb2RlKCkgYW5kIGRjX2ZnX3BhbmljX2Rpc3BsYXltb2RlKCkgZnVuY3Rpb24gY2FsbHMgZnJv bQo+PiDCoMKgIEtNUyByb3V0aW5lIHRvIGluaXRpYWxpemF0aW9uIHN0YWdlLiAoRG1pdHJ5KQo+ PiAqIFVzZSBkZXZtX2t6YWxsb2MoKSB0byBkcm1tX2t6YWxsb2MoKSB0byBhbGxvY2F0ZSBkY18q IGRhdGEgc3RydXR1cmVzLgo+PiAqIERyb3AgdW5uZWNlc3NhcnkgcHJpdmF0ZSBzdHJ1Y3QgZGNf Kl9wcml2Lgo+PiAqIFNldCBzdXBwcmVzc19iaW5kX2F0dHJzIGRyaXZlciBmbGFnIHRvIHRydWUg dG8gYXZvaWQgdW5uZWNlc3Nhcnkgc3lzCj4+IMKgwqAgaW50ZXJmYWNlcyB0byBiaW5kL3VuYmlu ZCB0aGUgZHJpdmVycy4KPj4KPj4gdjM6Cj4+ICogTm8gY2hhbmdlLgo+Pgo+PiB2MjoKPj4gKiBV c2UgT0YgYWxpYXMgaWQgdG8gZ2V0IGluc3RhbmNlIGlkLgo+PiAqIEFkZCBkZXYgbWVtYmVyIHRv IHN0cnVjdCBkY190Yy4KPj4KPj4gwqAgZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnwqDCoMKg wqAgfMKgwqAgMSArCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pbXgvTWFrZWZpbGXCoMKgwqAgfMKg wqAgMSArCj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9pbXgvZGMvS2NvbmZpZ8KgIHzCoMKgIDUgKwo+ PiDCoCBkcml2ZXJzL2dwdS9kcm0vaW14L2RjL01ha2VmaWxlIHzCoMKgIDUgKwo+PiDCoCBkcml2 ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRlLmPCoCB8IDE1MyArKysrKysrKysrKysrCj4+IMKgIGRy aXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtZGUuaMKgIHzCoCA1NyArKysrKwo+PiDCoCBkcml2ZXJz L2dwdS9kcm0vaW14L2RjL2RjLWRydi5jIHzCoCAzMiArKysKPj4gwqAgZHJpdmVycy9ncHUvZHJt L2lteC9kYy9kYy1kcnYuaCB8wqAgMjQgKysKPj4gwqAgZHJpdmVycy9ncHUvZHJtL2lteC9kYy9k Yy1mZy5jwqAgfCAzNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPj4gwqAgZHJp dmVycy9ncHUvZHJtL2lteC9kYy9kYy10Yy5jwqAgfCAxMzggKysrKysrKysrKysrCj4+IMKgIDEw IGZpbGVzIGNoYW5nZWQsIDc5MCBpbnNlcnRpb25zKCspCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0 NCBkcml2ZXJzL2dwdS9kcm0vaW14L2RjL0tjb25maWcKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pbXgvZGMvTWFrZWZpbGUKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0 IGRyaXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtZGUuYwo+PiDCoCBjcmVhdGUgbW9kZSAxMDA2NDQg ZHJpdmVycy9ncHUvZHJtL2lteC9kYy9kYy1kZS5oCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRydi5jCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRydi5oCj4+IMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBk cml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWZnLmMKPj4gwqAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRy aXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtdGMuYwo+Pgo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2lteC9LY29uZmlnIGIvZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnCj4+IGluZGV4 IDAzNTM1YTE1ZGQ4Zi4uM2U4YzZlZGJjMTdjIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vaW14L0tjb25maWcKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9LY29uZmlnCj4+IEBA IC0xLDUgKzEsNiBAQAo+PiDCoCAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9u bHkKPj4gwqAgK3NvdXJjZSAiZHJpdmVycy9ncHUvZHJtL2lteC9kYy9LY29uZmlnIgo+PiDCoCBz b3VyY2UgImRyaXZlcnMvZ3B1L2RybS9pbXgvZGNzcy9LY29uZmlnIgo+PiDCoCBzb3VyY2UgImRy aXZlcnMvZ3B1L2RybS9pbXgvaXB1djMvS2NvbmZpZyIKPj4gwqAgc291cmNlICJkcml2ZXJzL2dw dS9kcm0vaW14L2xjZGMvS2NvbmZpZyIKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p bXgvTWFrZWZpbGUgYi9kcml2ZXJzL2dwdS9kcm0vaW14L01ha2VmaWxlCj4+IGluZGV4IDg2ZjM4 ZTdjNzQyMi4uYzdiMzE3NjQwZDcxIDEwMDY0NAo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaW14 L01ha2VmaWxlCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvTWFrZWZpbGUKPj4gQEAgLTEs NSArMSw2IEBACj4+IMKgICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAKPj4gwqAg K29iai0kKENPTkZJR19EUk1fSU1YOF9EQykgKz0gZGMvCj4+IMKgIG9iai0kKENPTkZJR19EUk1f SU1YX0RDU1MpICs9IGRjc3MvCj4+IMKgIG9iai0kKENPTkZJR19EUk1fSU1YKSArPSBpcHV2My8K Pj4gwqAgb2JqLSQoQ09ORklHX0RSTV9JTVhfTENEQykgKz0gbGNkYy8KPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMvS2NvbmZpZyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMv S2NvbmZpZwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjMy ZDc0NzFjNDlkMAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgv ZGMvS2NvbmZpZwo+PiBAQCAtMCwwICsxLDUgQEAKPj4gK2NvbmZpZyBEUk1fSU1YOF9EQwo+PiAr wqDCoMKgIHRyaXN0YXRlICJGcmVlc2NhbGUgaS5NWDggRGlzcGxheSBDb250cm9sbGVyIEdyYXBo aWNzIgo+PiArwqDCoMKgIGRlcGVuZHMgb24gRFJNICYmIENPTU1PTl9DTEsgJiYgT0YgJiYgKEFS Q0hfTVhDIHx8IENPTVBJTEVfVEVTVCkKPj4gK8KgwqDCoCBoZWxwCj4+ICvCoMKgwqDCoMKgIGVu YWJsZSBGcmVlc2NhbGUgaS5NWDggRGlzcGxheSBDb250cm9sbGVyKERDKSBncmFwaGljcyBzdXBw b3J0Cj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL2lteC9kYy9NYWtlZmlsZQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjU2ZGU4MmQ1M2Q0ZAo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMvTWFrZWZpbGUKPj4gQEAgLTAsMCArMSw1IEBACj4+ICsj IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wCj4+ICsKPj4gK2lteDgtZGMtZHJtLW9i anMgOj0gZGMtZGUubyBkYy1kcnYubyBkYy1mZy5vIGRjLXRjLm8KPj4gKwo+PiArb2JqLSQoQ09O RklHX0RSTV9JTVg4X0RDKSArPSBpbXg4LWRjLWRybS5vCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaW14L2RjL2RjLWRlLmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRlLmMK Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4gaW5kZXggMDAwMDAwMDAwMDAwLi42NmI4OTE4ZGMx NTYKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRl LmMKPj4gQEAgLTAsMCArMSwxNTMgQEAKPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wKwo+PiArLyoKPj4gKyAqIENvcHlyaWdodCAyMDI0IE5YUAo+PiArICovCj4+ICsKPj4g KyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2RfZGV2 aWNldGFibGUuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4KPj4gKyNpbmNsdWRlIDxs aW51eC9vZi5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L29mX3BsYXRmb3JtLmg+Cj4+ICsjaW5jbHVk ZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcG0uaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFw Lmg+Cj4+ICsKPj4gKyNpbmNsdWRlICJkYy1kZS5oIgo+PiArI2luY2x1ZGUgImRjLWRydi5oIgo+ PiArCj4+ICsjZGVmaW5lIFBPTEFSSVRZQ1RSTMKgwqDCoMKgwqDCoMKgIDB4Ywo+PiArI2RlZmlu ZcKgIFBPTEVOX0hJR0jCoMKgwqDCoMKgwqDCoCBCSVQoMikKPj4gKwo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCByZWdtYXBfcmFuZ2UgZGNfZGVfcmVnbWFwX3Jhbmdlc1tdID0gewo+PiArwqDCoMKg IHJlZ21hcF9yZWdfcmFuZ2UoUE9MQVJJVFlDVFJMLCBQT0xBUklUWUNUUkwpLAo+PiArfTsKPj4g Kwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfYWNjZXNzX3RhYmxlIGRjX2RlX3JlZ21h cF9hY2Nlc3NfdGFibGUgPSB7Cj4+ICvCoMKgwqAgLnllc19yYW5nZXMgPSBkY19kZV9yZWdtYXBf cmFuZ2VzLAo+PiArwqDCoMKgIC5uX3llc19yYW5nZXMgPSBBUlJBWV9TSVpFKGRjX2RlX3JlZ21h cF9yYW5nZXMpLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfY29u ZmlnIGRjX2RlX3RvcF9yZWdtYXBfY29uZmlnID0gewo+PiArwqDCoMKgIC5uYW1lID0gImRpc3Bs YXktZW5naW5lLXRvcCIsCj4+ICvCoMKgwqAgLnJlZ19iaXRzID0gMzIsCj4+ICvCoMKgwqAgLnJl Z19zdHJpZGUgPSA0LAo+PiArwqDCoMKgIC52YWxfYml0cyA9IDMyLAo+PiArwqDCoMKgIC5mYXN0 X2lvID0gdHJ1ZSwKPj4gK8KgwqDCoCAud3JfdGFibGUgPSAmZGNfZGVfcmVnbWFwX2FjY2Vzc190 YWJsZSwKPj4gK8KgwqDCoCAucmRfdGFibGUgPSAmZGNfZGVfcmVnbWFwX2FjY2Vzc190YWJsZSwK Pj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkY19kZWNfaW5pdChzdHJ1Y3QgZGNf ZGUgKmRlKQo+PiArewo+PiArwqDCoMKgIHJlZ21hcF93cml0ZV9iaXRzKGRlLT5yZWdfdG9wLCBQ T0xBUklUWUNUUkwsIFBPTEFSSVRZQ1RSTCwgUE9MRU5fSElHSCk7Cj4+ICt9Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgZGNfZGVfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZpY2UgKm1h c3Rlciwgdm9pZCAqZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNl ICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4+ICvCoMKgwqAgc3RydWN0IGRjX2Ry bV9kZXZpY2UgKmRjX2RybSA9IGRhdGE7Cj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpiYXNlX3Rv cDsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGNfZGUgKmRlOwo+PiArwqDCoMKgIGludCByZXQ7Cj4+ICsK Pj4gK8KgwqDCoCBkZSA9IGRldm1fa3phbGxvYyhkZXYsIHNpemVvZigqZGUpLCBHRlBfS0VSTkVM KTsKPj4gK8KgwqDCoCBpZiAoIWRlKQo+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07 Cj4+ICsKPj4gK8KgwqDCoCBiYXNlX3RvcCA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJj ZV9ieW5hbWUocGRldiwgInRvcCIpOwo+PiArwqDCoMKgIGlmIChJU19FUlIoYmFzZV90b3ApKQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIoYmFzZV90b3ApOwo+PiArCj4+ICvCoMKg wqAgZGUtPnJlZ190b3AgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCBiYXNlX3RvcCwKPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmRjX2RlX3Rv cF9yZWdtYXBfY29uZmlnKTsKPj4gK8KgwqDCoCBpZiAoSVNfRVJSKGRlLT5yZWdfdG9wKSkKPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKGRlLT5yZWdfdG9wKTsKPj4gKwo+PiArwqDC oMKgIGRlLT5pcnFfc2hkbGQgPSBwbGF0Zm9ybV9nZXRfaXJxX2J5bmFtZShwZGV2LCAic2hkbG9h ZCIpOwo+PiArwqDCoMKgIGlmIChkZS0+aXJxX3NoZGxkIDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiBkZS0+aXJxX3NoZGxkOwo+PiArCj4+ICvCoMKgwqAgZGUtPmlycV9mcmFtZWNvbXBs ZXRlID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgImZyYW1lY29tcGxldGUiKTsKPj4g K8KgwqDCoCBpZiAoZGUtPmlycV9mcmFtZWNvbXBsZXRlIDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiBkZS0+aXJxX2ZyYW1lY29tcGxldGU7Cj4+ICsKPj4gK8KgwqDCoCBkZS0+aXJxX3Nl cWNvbXBsZXRlID0gcGxhdGZvcm1fZ2V0X2lycV9ieW5hbWUocGRldiwgInNlcWNvbXBsZXRlIik7 Cj4+ICvCoMKgwqAgaWYgKGRlLT5pcnFfc2VxY29tcGxldGUgPCAwKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIGRlLT5pcnFfc2VxY29tcGxldGU7Cj4+ICsKPj4gK8KgwqDCoCBkZS0+aWQgPSBv Zl9hbGlhc19nZXRfaWQoZGV2LT5vZl9ub2RlLCAiZGMwLWRpc3BsYXktZW5naW5lIik7Cj4+ICvC oMKgwqAgaWYgKGRlLT5pZCA8IDApIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2LCAi ZmFpbGVkIHRvIGdldCBhbGlhcyBpZDogJWRcbiIsIGRlLT5pZCk7Cj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gZGUtPmlkOwo+PiArwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgIGRlLT5kZXYgPSBk ZXY7Cj4+ICsKPj4gK8KgwqDCoCBkZXZfc2V0X2RydmRhdGEoZGV2LCBkZSk7Cj4+ICsKPj4gK8Kg wqDCoCByZXQgPSBkZXZtX3BtX3J1bnRpbWVfZW5hYmxlKGRldik7Cj4+ICvCoMKgwqAgaWYgKHJl dCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7Cj4+ICsKPj4gK8KgwqDCoCBkY19kcm0t PmRlW2RlLT5pZF0gPSBkZTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgZGNfZGVfb3BzID0gewo+PiArwqDC oMKgIC5iaW5kID0gZGNfZGVfYmluZCwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZGNfZGVf cHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sKPj4gK8KgwqDCoCBpbnQg cmV0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gZGV2bV9vZl9wbGF0Zm9ybV9wb3B1bGF0ZSgmcGRl di0+ZGV2KTsKPj4gK8KgwqDCoCBpZiAocmV0IDwgMCkKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVy biByZXQ7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBjb21wb25lbnRfYWRkKCZwZGV2LT5kZXYsICZk Y19kZV9vcHMpOwo+PiArwqDCoMKgIGlmIChyZXQpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g ZGV2X2Vycl9wcm9iZSgmcGRldi0+ZGV2LCByZXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICJmYWlsZWQgdG8gYWRkIGNvbXBvbmVudFxuIik7Cj4+ICsKPj4g K8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgZGNfZGVfcmVtb3Zl KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4+ICt7Cj4+ICvCoMKgwqAgY29tcG9uZW50 X2RlbCgmcGRldi0+ZGV2LCAmZGNfZGVfb3BzKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIGludCBk Y19kZV9ydW50aW1lX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpCj4+ICt7Cj4+ICvCoMKgwqAg c3RydWN0IGRjX2RlICpkZSA9IGRldl9nZXRfZHJ2ZGF0YShkZXYpOwo+PiArCj4+ICvCoMKgwqAg ZGNfZGVjX2luaXQoZGUpOwo+PiArwqDCoMKgIGRjX2ZnX2luaXQoZGUtPmZnKTsKPj4gK8KgwqDC oCBkY190Y19pbml0KGRlLT50Yyk7Cj4+ICsKPj4gK8KgwqDCoCByZXR1cm4gMDsKPj4gK30KPj4g Kwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcG1fb3BzIGRjX2RlX3BtX29wcyA9IHsKPj4g K8KgwqDCoCBSVU5USU1FX1BNX09QUyhOVUxMLCBkY19kZV9ydW50aW1lX3Jlc3VtZSwgTlVMTCkK Pj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRjX2RlX2R0 X2lkc1tdID0gewo+PiArwqDCoMKgIHsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDhxeHAtZGMtZGlz cGxheS1lbmdpbmUiLCB9LAo+PiArwqDCoMKgIHsgLyogc2VudGluZWwgKi8gfQo+PiArfTsKPj4g K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGRjX2RlX2R0X2lkcyk7Cj4+ICsKPj4gK3N0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgZGNfZGVfZHJpdmVyID0gewo+PiArwqDCoMKgIC5wcm9iZSA9IGRjX2Rl X3Byb2JlLAo+PiArwqDCoMKgIC5yZW1vdmVfbmV3ID0gZGNfZGVfcmVtb3ZlLAo+PiArwqDCoMKg IC5kcml2ZXIgPSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCAubmFtZSA9ICJpbXg4LWRjLWRpc3BsYXkt ZW5naW5lIiwKPj4gK8KgwqDCoMKgwqDCoMKgIC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwK Pj4gK8KgwqDCoMKgwqDCoMKgIC5vZl9tYXRjaF90YWJsZSA9IGRjX2RlX2R0X2lkcywKPj4gK8Kg wqDCoMKgwqDCoMKgIC5wbSA9IHBtX3NsZWVwX3B0cigmZGNfZGVfcG1fb3BzKSwKPj4gK8KgwqDC oCB9LAo+PiArfTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtZGUu aCBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtZGUuaAo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjE3YTQ0MzYyMTE4ZQo+PiAtLS0gL2Rldi9udWxsCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtZGUuaAo+PiBAQCAtMCwwICsxLDU3IEBA Cj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgKi8KPj4gKy8qCj4+ICsg KiBDb3B5cmlnaHQgMjAyNCBOWFAKPj4gKyAqLwo+PiArCj4+ICsjaWZuZGVmIF9fRENfRElTUExB WV9FTkdJTkVfSF9fCj4+ICsjZGVmaW5lIF9fRENfRElTUExBWV9FTkdJTkVfSF9fCj4+ICsKPj4g KyNpbmNsdWRlIDxsaW51eC9jbGsuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9kZXZpY2UuaD4KPj4g KyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzLmg+ Cj4+ICsKPj4gKyNkZWZpbmUgRENfRElTUExBWVPCoMKgwqAgMgo+PiArCj4+ICtzdHJ1Y3QgZGNf Zmcgewo+PiArwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldjsKPj4gK8KgwqDCoCBzdHJ1Y3QgcmVn bWFwICpyZWc7Cj4+ICvCoMKgwqAgc3RydWN0IGNsayAqY2xrX2Rpc3A7Cj4+ICt9Owo+PiArCj4+ ICtzdHJ1Y3QgZGNfdGMgewo+PiArwqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldjsKPj4gK8KgwqDC oCBzdHJ1Y3QgcmVnbWFwICpyZWc7Cj4+ICt9Owo+PiArCj4+ICtzdHJ1Y3QgZGNfZGUgewo+PiAr wqDCoMKgIHN0cnVjdCBkZXZpY2UgKmRldjsKPj4gK8KgwqDCoCBzdHJ1Y3QgcmVnbWFwICpyZWdf dG9wOwo+PiArwqDCoMKgIHN0cnVjdCBkY19mZyAqZmc7Cj4+ICvCoMKgwqAgc3RydWN0IGRjX3Rj ICp0YzsKPj4gK8KgwqDCoCBpbnQgaXJxX3NoZGxkOwo+PiArwqDCoMKgIGludCBpcnFfZnJhbWVj b21wbGV0ZTsKPj4gK8KgwqDCoCBpbnQgaXJxX3NlcWNvbXBsZXRlOwo+PiArwqDCoMKgIGludCBp ZDsKPj4gK307Cj4+ICsKPj4gKy8qIEZyYW1lIEdlbmVyYXRvciBVbml0ICovCj4+ICt2b2lkIGRj X2ZnX2NmZ192aWRlb21vZGUoc3RydWN0IGRjX2ZnICpmZywgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm0pOwo+PiArdm9pZCBkY19mZ19lbmFibGUoc3RydWN0IGRjX2ZnICpmZyk7Cj4+ICt2b2lk IGRjX2ZnX2Rpc2FibGUoc3RydWN0IGRjX2ZnICpmZyk7Cj4+ICt2b2lkIGRjX2ZnX3NoZHRva2dl bihzdHJ1Y3QgZGNfZmcgKmZnKTsKPj4gK3UzMiBkY19mZ19nZXRfZnJhbWVfaW5kZXgoc3RydWN0 IGRjX2ZnICpmZyk7Cj4+ICt1MzIgZGNfZmdfZ2V0X2xpbmVfaW5kZXgoc3RydWN0IGRjX2ZnICpm Zyk7Cj4+ICtib29sIGRjX2ZnX3dhaXRfZm9yX2ZyYW1lX2luZGV4X21vdmluZyhzdHJ1Y3QgZGNf ZmcgKmZnKTsKPj4gK2Jvb2wgZGNfZmdfc2Vjb25kYXJ5X3JlcXVlc3RzX3RvX3JlYWRfZW1wdHlf ZmlmbyhzdHJ1Y3QgZGNfZmcgKmZnKTsKPj4gK3ZvaWQgZGNfZmdfc2Vjb25kYXJ5X2NsZWFyX2No YW5uZWxfc3RhdHVzKHN0cnVjdCBkY19mZyAqZmcpOwo+PiAraW50IGRjX2ZnX3dhaXRfZm9yX3Nl Y29uZGFyeV9zeW5jdXAoc3RydWN0IGRjX2ZnICpmZyk7Cj4+ICt2b2lkIGRjX2ZnX2VuYWJsZV9j bG9jayhzdHJ1Y3QgZGNfZmcgKmZnKTsKPj4gK3ZvaWQgZGNfZmdfZGlzYWJsZV9jbG9jayhzdHJ1 Y3QgZGNfZmcgKmZnKTsKPj4gK2VudW0gZHJtX21vZGVfc3RhdHVzIGRjX2ZnX2NoZWNrX2Nsb2Nr KHN0cnVjdCBkY19mZyAqZmcsIGludCBjbGtfa2h6KTsKPj4gK3ZvaWQgZGNfZmdfaW5pdChzdHJ1 Y3QgZGNfZmcgKmZnKTsKPj4gKwo+PiArLyogVGltaW5nIENvbnRyb2xsZXIgVW5pdCAqLwo+PiAr dm9pZCBkY190Y19pbml0KHN0cnVjdCBkY190YyAqdGMpOwo+PiArCj4+ICsjZW5kaWYgLyogX19E Q19ESVNQTEFZX0VOR0lORV9IX18gKi8KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9p bXgvZGMvZGMtZHJ2LmMgYi9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRydi5jCj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTU5MTBhODJkZDRkCj4+IC0t LSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9kYy9kYy1kcnYuYwo+PiBA QCAtMCwwICsxLDMyIEBACj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsK Pj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgMjAyNCBOWFAKPj4gKyAqLwo+PiArCj4+ICsjaW5jbHVk ZSA8bGludXgvbW9kdWxlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ Cj4+ICsKPj4gKyNpbmNsdWRlICJkYy1kcnYuaCIKPj4gKwo+PiArc3RhdGljIHN0cnVjdCBwbGF0 Zm9ybV9kcml2ZXIgKiBjb25zdCBkY19kcml2ZXJzW10gPSB7Cj4+ICvCoMKgwqAgJmRjX2RlX2Ry aXZlciwKPj4gK8KgwqDCoCAmZGNfZmdfZHJpdmVyLAo+PiArwqDCoMKgICZkY190Y19kcml2ZXIs Cj4+ICt9Owo+PiArCj4+ICtzdGF0aWMgaW50IF9faW5pdCBkY19kcm1faW5pdCh2b2lkKQo+PiAr ewo+PiArwqDCoMKgIHJldHVybiBwbGF0Zm9ybV9yZWdpc3Rlcl9kcml2ZXJzKGRjX2RyaXZlcnMs IEFSUkFZX1NJWkUoZGNfZHJpdmVycykpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgdm9pZCBfX2V4 aXQgZGNfZHJtX2V4aXQodm9pZCkKPj4gK3sKPj4gK8KgwqDCoCBwbGF0Zm9ybV91bnJlZ2lzdGVy X2RyaXZlcnMoZGNfZHJpdmVycywgQVJSQVlfU0laRShkY19kcml2ZXJzKSk7Cj4+ICt9Cj4+ICsK Pj4gK21vZHVsZV9pbml0KGRjX2RybV9pbml0KTsKPj4gK21vZHVsZV9leGl0KGRjX2RybV9leGl0 KTsKPj4gKwo+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJpLk1YOCBEaXNwbGF5IENvbnRyb2xsZXIg RFJNIERyaXZlciIpOwo+PiArTU9EVUxFX0FVVEhPUigiTGl1IFlpbmcgPHZpY3Rvci5saXVAbnhw LmNvbT4iKTsKPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9pbXgvZGMvZGMtZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWRy di5oCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZTEyOTBk OWEwYTk5Cj4+IC0tLSAvZGV2L251bGwKPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2lteC9kYy9k Yy1kcnYuaAo+PiBAQCAtMCwwICsxLDI0IEBACj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMCsgKi8KPj4gKy8qCj4+ICsgKiBDb3B5cmlnaHQgMjAyNCBOWFAKPj4gKyAqLwo+ PiArCj4+ICsjaWZuZGVmIF9fRENfRFJWX0hfXwo+PiArI2RlZmluZSBfX0RDX0RSVl9IX18KPj4g Kwo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2RldmljZS5oPgo+PiArCj4+ICsjaW5jbHVk ZSA8ZHJtL2RybV9kZXZpY2UuaD4KPj4gKwo+PiArI2luY2x1ZGUgImRjLWRlLmgiCj4+ICsKPj4g K3N0cnVjdCBkY19kcm1fZGV2aWNlIHsKPj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSBiYXNl Owo+PiArwqDCoMKgIHN0cnVjdCBkY19kZSAqZGVbRENfRElTUExBWVNdOwo+PiArfTsKPj4gKwo+ PiArZXh0ZXJuIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZGNfZGVfZHJpdmVyOwo+PiArZXh0ZXJu IHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZGNfZmdfZHJpdmVyOwo+PiArZXh0ZXJuIHN0cnVjdCBw bGF0Zm9ybV9kcml2ZXIgZGNfdGNfZHJpdmVyOwo+PiArCj4+ICsjZW5kaWYgLyogX19EQ19EUlZf SF9fICovCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWZnLmMgYi9k cml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWZnLmMKPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPj4g aW5kZXggMDAwMDAwMDAwMDAwLi5lZWJiYWZlMzlkN2YKPj4gLS0tIC9kZXYvbnVsbAo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vaW14L2RjL2RjLWZnLmMKPj4gQEAgLTAsMCArMSwzNzQgQEAKPj4g Ky8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKwo+PiArLyoKPj4gKyAqIENvcHly aWdodCAyMDI0IE5YUAo+PiArICovCj4+ICsKPj4gKyNpbmNsdWRlIDxsaW51eC9iaXRmaWVsZC5o Pgo+PiArI2luY2x1ZGUgPGxpbnV4L2JpdHMuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9jbGsuaD4K Pj4gKyNpbmNsdWRlIDxsaW51eC9jb21wb25lbnQuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9kZXZp Y2UuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9qaWZmaWVzLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgv bW9kX2RldmljZXRhYmxlLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvbW9kdWxlLmg+Cj4+ICsjaW5j bHVkZSA8bGludXgvb2YuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC9wbGF0Zm9ybV9kZXZpY2UuaD4K Pj4gKyNpbmNsdWRlIDxsaW51eC9yZWdtYXAuaD4KPj4gKyNpbmNsdWRlIDxsaW51eC91bml0cy5o Pgo+PiArCj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9tb2Rlcy5oPgo+PiArCj4+ICsjaW5jbHVkZSAi ZGMtZGUuaCIKPj4gKyNpbmNsdWRlICJkYy1kcnYuaCIKPj4gKwo+PiArI2RlZmluZSBGR1NUQ1RS TMKgwqDCoMKgwqDCoMKgIDB4OAo+PiArI2RlZmluZcKgIEZHU1lOQ01PREVfTUFTS8KgwqDCoCBH RU5NQVNLKDIsIDEpCj4+ICsjZGVmaW5lwqAgRkdTWU5DTU9ERSh4KcKgwqDCoMKgwqDCoMKgIEZJ RUxEX1BSRVAoRkdTWU5DTU9ERV9NQVNLLCAoeCkpCj4+ICsjZGVmaW5lwqAgU0hERU7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEJJVCgwKQo+PiArCj4+ICsjZGVmaW5lIEhUQ0ZHMcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHhjCj4+ICsjZGVmaW5lwqAgSFRPVEFMKHgpwqDCoMKgwqDCoMKgwqAgRklF TERfUFJFUChHRU5NQVNLKDI5LCAxNiksICgoeCkgLSAxKSkKPj4gKyNkZWZpbmXCoCBIQUNUKHgp wqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHRU5NQVNLKDEzLCAwKSwgKHgpKQo+PiArCj4+ICsj ZGVmaW5lIEhUQ0ZHMsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMAo+PiArI2RlZmluZcKgIEhT RU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgzMSkKPj4gKyNkZWZpbmXCoCBIU0JQKHgpwqDC oMKgwqDCoMKgwqAgRklFTERfUFJFUChHRU5NQVNLKDI5LCAxNiksICgoeCkgLSAxKSkKPj4gKyNk ZWZpbmXCoCBIU1lOQyh4KcKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoR0VOTUFTSygxMywgMCks ICgoeCkgLSAxKSkKPj4gKwo+PiArI2RlZmluZSBWVENGRzHCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDB4MTQKPj4gKyNkZWZpbmXCoCBWVE9UQUwoeCnCoMKgwqDCoMKgwqDCoCBGSUVMRF9QUkVQKEdF Tk1BU0soMjksIDE2KSwgKCh4KSAtIDEpKQo+PiArI2RlZmluZcKgIFZBQ1QoeCnCoMKgwqDCoMKg wqDCoCBGSUVMRF9QUkVQKEdFTk1BU0soMTMsIDApLCAoeCkpCj4+ICsKPj4gKyNkZWZpbmUgVlRD RkcywqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDE4Cj4+ICsjZGVmaW5lwqAgVlNFTsKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQklUKDMxKQo+PiArI2RlZmluZcKgIFZTQlAoeCnCoMKgwqDCoMKgwqDC oCBGSUVMRF9QUkVQKEdFTk1BU0soMjksIDE2KSwgKCh4KSAtIDEpKQo+PiArI2RlZmluZcKgIFZT WU5DKHgpwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChHRU5NQVNLKDEzLCAwKSwgKCh4KSAtIDEp KQo+PiArCj4+ICsjZGVmaW5lIFBLSUNLQ09ORklHwqDCoMKgwqDCoMKgwqAgMHgyYwo+PiArI2Rl ZmluZSBTS0lDS0NPTkZJR8KgwqDCoMKgwqDCoMKgIDB4MzAKPj4gKyNkZWZpbmXCoCBFTsKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQklUKDMxKQo+PiArI2RlZmluZcKgIFJPVyh4KcKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRklFTERfUFJFUChHRU5NQVNLKDI5LCAxNiksICh4KSkKPj4gKyNkZWZpbmXC oCBDT0woeCnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoR0VOTUFTSygxMywgMCks ICh4KSkKPj4gKwo+PiArI2RlZmluZSBQQUNGR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHg1NAo+ PiArI2RlZmluZSBTQUNGR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHg1OAo+PiArI2RlZmluZcKg IFNUQVJUWSh4KcKgwqDCoMKgwqDCoMKgIEZJRUxEX1BSRVAoR0VOTUFTSygyOSwgMTYpLCAoKHgp ICsgMSkpCj4+ICsjZGVmaW5lwqAgU1RBUlRYKHgpwqDCoMKgwqDCoMKgwqAgRklFTERfUFJFUChH RU5NQVNLKDEzLCAwKSwgKCh4KSArIDEpKQo+PiArCj4+ICsjZGVmaW5lIEZHSU5DVFJMwqDCoMKg wqDCoMKgwqAgMHg1Ywo+PiArI2RlZmluZSBGR0lOQ1RSTFBBTklDwqDCoMKgwqDCoMKgwqAgMHg2 MAo+PiArI2RlZmluZcKgIEZHRE1fTUFTS8KgwqDCoMKgwqDCoMKgIEdFTk1BU0soMiwgMCkKPj4g KyNkZWZpbmXCoCBFTlBSSU1BTFBIQcKgwqDCoMKgwqDCoMKgIEJJVCgzKQo+PiArI2RlZmluZcKg IEVOU0VDQUxQSEHCoMKgwqDCoMKgwqDCoCBCSVQoNCkKPj4gKwo+PiArI2RlZmluZSBGR0NDUsKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHg2NAo+PiArI2RlZmluZcKgIENDR1JFRU4oeCnCoMKgwqDC oMKgwqDCoCBGSUVMRF9QUkVQKEdFTk1BU0soMTksIDEwKSwgKHgpKQo+PiArCj4+ICsjZGVmaW5l IEZHRU5BQkxFwqDCoMKgwqDCoMKgwqAgMHg2OAo+PiArI2RlZmluZcKgIEZHRU7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgwKQo+PiArCj4+ICsjZGVmaW5lIEZHU0xSwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAweDZjCj4+ICsjZGVmaW5lwqAgU0hEVE9LR0VOwqDCoMKgwqDCoMKgwqAgQklUKDAp Cj4+ICsKPj4gKyNkZWZpbmUgRkdUSU1FU1RBTVDCoMKgwqDCoMKgwqDCoCAweDc0Cj4+ICsjZGVm aW5lwqAgRlJBTUVJTkRFWCh4KcKgwqDCoMKgwqDCoMKgIEZJRUxEX0dFVChHRU5NQVNLKDMxLCAx NCksICh4KSkKPj4gKyNkZWZpbmXCoCBMSU5FSU5ERVgoeCnCoMKgwqDCoMKgwqDCoCBGSUVMRF9H RVQoR0VOTUFTSygxMywgMCksICh4KSkKPj4gKwo+PiArI2RlZmluZSBGR0NIU1RBVMKgwqDCoMKg wqDCoMKgIDB4NzgKPj4gKyNkZWZpbmXCoCBTRUNTWU5DU1RBVMKgwqDCoMKgwqDCoMKgIEJJVCgy NCkKPj4gKyNkZWZpbmXCoCBTRklGT0VNUFRZwqDCoMKgwqDCoMKgwqAgQklUKDE2KQo+PiArCj4+ ICsjZGVmaW5lIEZHQ0hTVEFUQ0xSwqDCoMKgwqDCoMKgwqAgMHg3Ywo+PiArI2RlZmluZcKgIENM UlNFQ1NUQVTCoMKgwqDCoMKgwqDCoCBCSVQoMTYpCj4+ICsKPj4gK2VudW0gZGNfZmdfc3luY21v ZGUgewo+PiArwqDCoMKgIEZHX1NZTkNNT0RFX09GRizCoMKgwqAgLyogTm8gc2lkZS1ieS1zaWRl IHN5bmNocm9uaXphdGlvbi4gKi8KPj4gK307Cj4+ICsKPj4gK2VudW0gZGNfZmdfZG0gewo+PiAr wqDCoMKgIEZHX0RNX0NPTlNUQ09MID0gMHgxLMKgwqDCoCAvKiBDb25zdGFudCBDb2xvciBCYWNr Z3JvdW5kIGlzIHNob3duLiAqLwo+PiArwqDCoMKgIEZHX0RNX1NFQ19PTl9UT1AgPSAweDUswqDC oMKgIC8qIEJvdGggaW5wdXRzIG92ZXJsYWlkIHdpdGggc2Vjb25kYXJ5IG9uIHRvcC4gKi8KPj4g K307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX3JhbmdlIGRjX2ZnX3JlZ21h cF93cl9yYW5nZXNbXSA9IHsKPj4gK8KgwqDCoCByZWdtYXBfcmVnX3JhbmdlKEZHU1RDVFJMLCBW VENGRzIpLAo+PiArwqDCoMKgIHJlZ21hcF9yZWdfcmFuZ2UoUEtJQ0tDT05GSUcsIFNLSUNLQ09O RklHKSwKPj4gK8KgwqDCoCByZWdtYXBfcmVnX3JhbmdlKFBBQ0ZHLCBGR1NMUiksCj4+ICvCoMKg wqAgcmVnbWFwX3JlZ19yYW5nZShGR0NIU1RBVENMUiwgRkdDSFNUQVRDTFIpLAo+PiArfTsKPj4g Kwo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCByZWdtYXBfcmFuZ2UgZGNfZmdfcmVnbWFwX3JkX3Jh bmdlc1tdID0gewo+PiArwqDCoMKgIHJlZ21hcF9yZWdfcmFuZ2UoRkdTVENUUkwsIFZUQ0ZHMiks Cj4+ICvCoMKgwqAgcmVnbWFwX3JlZ19yYW5nZShQS0lDS0NPTkZJRywgU0tJQ0tDT05GSUcpLAo+ PiArwqDCoMKgIHJlZ21hcF9yZWdfcmFuZ2UoUEFDRkcsIEZHU0xSKSwKPj4gK8KgwqDCoCByZWdt YXBfcmVnX3JhbmdlKEZHVElNRVNUQU1QLCBGR0NIU1RBVENMUiksCj4+ICt9Owo+PiArCj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9hY2Nlc3NfdGFibGUgZGNfZmdfcmVnbWFwX3dyX3Rh YmxlID0gewo+PiArwqDCoMKgIC55ZXNfcmFuZ2VzID0gZGNfZmdfcmVnbWFwX3dyX3JhbmdlcywK Pj4gK8KgwqDCoCAubl95ZXNfcmFuZ2VzID0gQVJSQVlfU0laRShkY19mZ19yZWdtYXBfd3JfcmFu Z2VzKSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2FjY2Vzc190 YWJsZSBkY19mZ19yZWdtYXBfcmRfdGFibGUgPSB7Cj4+ICvCoMKgwqAgLnllc19yYW5nZXMgPSBk Y19mZ19yZWdtYXBfcmRfcmFuZ2VzLAo+PiArwqDCoMKgIC5uX3llc19yYW5nZXMgPSBBUlJBWV9T SVpFKGRjX2ZnX3JlZ21hcF9yZF9yYW5nZXMpLAo+PiArfTsKPj4gKwo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCByZWdtYXBfY29uZmlnIGRjX2ZnX3JlZ21hcF9jb25maWcgPSB7Cj4+ICvCoMKgwqAg Lm5hbWUgPSAiZnJhbWVnZW4iLAo+PiArwqDCoMKgIC5yZWdfYml0cyA9IDMyLAo+PiArwqDCoMKg IC5yZWdfc3RyaWRlID0gNCwKPj4gK8KgwqDCoCAudmFsX2JpdHMgPSAzMiwKPj4gK8KgwqDCoCAu ZmFzdF9pbyA9IHRydWUsCj4+ICvCoMKgwqAgLndyX3RhYmxlID0gJmRjX2ZnX3JlZ21hcF93cl90 YWJsZSwKPj4gK8KgwqDCoCAucmRfdGFibGUgPSAmZGNfZmdfcmVnbWFwX3JkX3RhYmxlLAo+PiAr fTsKPj4gKwo+PiArc3RhdGljIGlubGluZSB2b2lkIGRjX2ZnX2VuYWJsZV9zaGRlbihzdHJ1Y3Qg ZGNfZmcgKmZnKQo+PiArewo+PiArwqDCoMKgIHJlZ21hcF93cml0ZV9iaXRzKGZnLT5yZWcsIEZH U1RDVFJMLCBTSERFTiwgU0hERU4pOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW5saW5lIHZvaWQg ZGNfZmdfc3luY21vZGUoc3RydWN0IGRjX2ZnICpmZywgZW51bSBkY19mZ19zeW5jbW9kZSBtb2Rl KQo+PiArewo+PiArwqDCoMKgIHJlZ21hcF93cml0ZV9iaXRzKGZnLT5yZWcsIEZHU1RDVFJMLCBG R1NZTkNNT0RFX01BU0ssIEZHU1lOQ01PREUobW9kZSkpOwo+PiArfQo+PiArCj4+ICt2b2lkIGRj X2ZnX2NmZ192aWRlb21vZGUoc3RydWN0IGRjX2ZnICpmZywgc3RydWN0IGRybV9kaXNwbGF5X21v ZGUgKm0pCj4+ICt7Cj4+ICvCoMKgwqAgdTMyIGhhY3QsIGh0b3RhbCwgaHN5bmMsIGhzYnA7Cj4+ ICvCoMKgwqAgdTMyIHZhY3QsIHZ0b3RhbCwgdnN5bmMsIHZzYnA7Cj4+ICvCoMKgwqAgdTMyIGtp Y2tfcm93LCBraWNrX2NvbDsKPj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgaGFj dCA9IG0tPmNydGNfaGRpc3BsYXk7Cj4+ICvCoMKgwqAgaHRvdGFsID0gbS0+Y3J0Y19odG90YWw7 Cj4+ICvCoMKgwqAgaHN5bmMgPSBtLT5jcnRjX2hzeW5jX2VuZCAtIG0tPmNydGNfaHN5bmNfc3Rh cnQ7Cj4+ICvCoMKgwqAgaHNicCA9IG0tPmNydGNfaHRvdGFsIC0gbS0+Y3J0Y19oc3luY19zdGFy dDsKPj4gKwo+PiArwqDCoMKgIHZhY3QgPSBtLT5jcnRjX3ZkaXNwbGF5Owo+PiArwqDCoMKgIHZ0 b3RhbCA9IG0tPmNydGNfdnRvdGFsOwo+PiArwqDCoMKgIHZzeW5jID0gbS0+Y3J0Y192c3luY19l bmQgLSBtLT5jcnRjX3ZzeW5jX3N0YXJ0Owo+PiArwqDCoMKgIHZzYnAgPSBtLT5jcnRjX3Z0b3Rh bCAtIG0tPmNydGNfdnN5bmNfc3RhcnQ7Cj4+ICsKPj4gK8KgwqDCoCAvKiB2aWRlbyBtb2RlICov Cj4+ICvCoMKgwqAgcmVnbWFwX3dyaXRlKGZnLT5yZWcsIEhUQ0ZHMSwgSEFDVChoYWN0KcKgwqAg fCBIVE9UQUwoaHRvdGFsKSk7Cj4+ICvCoMKgwqAgcmVnbWFwX3dyaXRlKGZnLT5yZWcsIEhUQ0ZH MiwgSFNZTkMoaHN5bmMpIHwgSFNCUChoc2JwKSB8IEhTRU4pOwo+PiArwqDCoMKgIHJlZ21hcF93 cml0ZShmZy0+cmVnLCBWVENGRzEsIFZBQ1QodmFjdCnCoMKgIHwgVlRPVEFMKHZ0b3RhbCkpOwo+ PiArwqDCoMKgIHJlZ21hcF93cml0ZShmZy0+cmVnLCBWVENGRzIsIFZTWU5DKHZzeW5jKSB8IFZT QlAodnNicCkgfCBWU0VOKTsKPj4gKwo+PiArwqDCoMKgIGtpY2tfY29sID0gaGFjdCArIDE7Cj4+ ICvCoMKgwqAga2lja19yb3cgPSB2YWN0Owo+PiArCj4+ICvCoMKgwqAgLyogcGtpY2tjb25maWcg Ki8KPj4gK8KgwqDCoCByZWdtYXBfd3JpdGUoZmctPnJlZywgUEtJQ0tDT05GSUcsIENPTChraWNr X2NvbCkgfCBST1coa2lja19yb3cpIHwgRU4pOwo+PiArCj4+ICvCoMKgwqAgLyogc2tpa2NvbmZp ZyAqLwo+PiArwqDCoMKgIHJlZ21hcF93cml0ZShmZy0+cmVnLCBTS0lDS0NPTkZJRywgQ09MKGtp Y2tfY29sKSB8IFJPVyhraWNrX3JvdykgfCBFTik7Cj4+ICsKPj4gK8KgwqDCoCAvKiBwcmltYXJ5 IGFuZCBzZWNvbmRhcnkgYXJlYSBwb3NpdGlvbiBjb25maWd1cmF0aW9uICovCj4+ICvCoMKgwqAg cmVnbWFwX3dyaXRlKGZnLT5yZWcsIFBBQ0ZHLCBTVEFSVFgoMCkgfCBTVEFSVFkoMCkpOwo+PiAr wqDCoMKgIHJlZ21hcF93cml0ZShmZy0+cmVnLCBTQUNGRywgU1RBUlRYKDApIHwgU1RBUlRZKDAp KTsKPj4gKwo+PiArwqDCoMKgIC8qIGFscGhhICovCj4+ICvCoMKgwqAgcmVnbWFwX3dyaXRlX2Jp dHMoZmctPnJlZywgRkdJTkNUUkwswqDCoMKgwqDCoCBFTlBSSU1BTFBIQSB8IEVOU0VDQUxQSEEs IDApOwo+PiArwqDCoMKgIHJlZ21hcF93cml0ZV9iaXRzKGZnLT5yZWcsIEZHSU5DVFJMUEFOSUMs IEVOUFJJTUFMUEhBIHwgRU5TRUNBTFBIQSwgMCk7Cj4+ICsKPj4gK8KgwqDCoCAvKiBjb25zdGFu dCBjb2xvciBpcyBncmVlbih1c2VkIGluIHBhbmljIG1vZGUpwqAgKi8KPj4gK8KgwqDCoCByZWdt YXBfd3JpdGUoZmctPnJlZywgRkdDQ1IsIENDR1JFRU4oMHgzZmYpKTsKPj4gKwo+PiArwqDCoMKg IHJldCA9IGNsa19zZXRfcmF0ZShmZy0+Y2xrX2Rpc3AsIG0tPmNsb2NrICogSFpfUEVSX0tIWik7 Cj4+ICvCoMKgwqAgaWYgKHJldCA8IDApCj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGZnLT5k ZXYsICJmYWlsZWQgdG8gc2V0IGRpc3BsYXkgY2xvY2sgcmF0ZTogJWRcbiIsIHJldCk7Cj4+ICt9 Cj4+ICsKPj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBkY19mZ19kaXNwbGF5bW9kZShzdHJ1Y3QgZGNf ZmcgKmZnLCBlbnVtIGRjX2ZnX2RtIG1vZGUpCj4+ICt7Cj4+ICvCoMKgwqAgcmVnbWFwX3dyaXRl X2JpdHMoZmctPnJlZywgRkdJTkNUUkwsIEZHRE1fTUFTSywgbW9kZSk7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBpbmxpbmUgdm9pZCBkY19mZ19wYW5pY19kaXNwbGF5bW9kZShzdHJ1Y3QgZGNfZmcg KmZnLCBlbnVtIGRjX2ZnX2RtIG1vZGUpCj4+ICt7Cj4+ICvCoMKgwqAgcmVnbWFwX3dyaXRlX2Jp dHMoZmctPnJlZywgRkdJTkNUUkxQQU5JQywgRkdETV9NQVNLLCBtb2RlKTsKPj4gK30KPj4gKwo+ PiArdm9pZCBkY19mZ19lbmFibGUoc3RydWN0IGRjX2ZnICpmZykKPj4gK3sKPj4gK8KgwqDCoCBy ZWdtYXBfd3JpdGUoZmctPnJlZywgRkdFTkFCTEUsIEZHRU4pOwo+PiArfQo+PiArCj4+ICt2b2lk IGRjX2ZnX2Rpc2FibGUoc3RydWN0IGRjX2ZnICpmZykKPj4gK3sKPj4gK8KgwqDCoCByZWdtYXBf d3JpdGUoZmctPnJlZywgRkdFTkFCTEUsIDApOwo+PiArfQo+PiArCj4+ICt2b2lkIGRjX2ZnX3No ZHRva2dlbihzdHJ1Y3QgZGNfZmcgKmZnKQo+PiArewo+PiArwqDCoMKgIHJlZ21hcF93cml0ZShm Zy0+cmVnLCBGR1NMUiwgU0hEVE9LR0VOKTsKPj4gK30KPj4gKwo+PiArdTMyIGRjX2ZnX2dldF9m cmFtZV9pbmRleChzdHJ1Y3QgZGNfZmcgKmZnKQo+PiArewo+PiArwqDCoMKgIHUzMiB2YWw7Cj4+ ICsKPj4gK8KgwqDCoCByZWdtYXBfcmVhZChmZy0+cmVnLCBGR1RJTUVTVEFNUCwgJnZhbCk7Cj4+ ICsKPj4gK8KgwqDCoCByZXR1cm4gRlJBTUVJTkRFWCh2YWwpOwo+PiArfQo+PiArCj4+ICt1MzIg ZGNfZmdfZ2V0X2xpbmVfaW5kZXgoc3RydWN0IGRjX2ZnICpmZykKPj4gK3sKPj4gK8KgwqDCoCB1 MzIgdmFsOwo+PiArCj4+ICvCoMKgwqAgcmVnbWFwX3JlYWQoZmctPnJlZywgRkdUSU1FU1RBTVAs ICZ2YWwpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIExJTkVJTkRFWCh2YWwpOwo+PiArfQo+PiAr Cj4+ICtib29sIGRjX2ZnX3dhaXRfZm9yX2ZyYW1lX2luZGV4X21vdmluZyhzdHJ1Y3QgZGNfZmcg KmZnKQo+PiArewo+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGppZmZpZXMgKyBt c2Vjc190b19qaWZmaWVzKDEwMCk7Cj4+ICvCoMKgwqAgdTMyIGZyYW1lX2luZGV4LCBsYXN0X2Zy YW1lX2luZGV4Owo+PiArCj4+ICvCoMKgwqAgZnJhbWVfaW5kZXggPSBkY19mZ19nZXRfZnJhbWVf aW5kZXgoZmcpOwo+PiArwqDCoMKgIGRvIHsKPj4gK8KgwqDCoMKgwqDCoMKgIGxhc3RfZnJhbWVf aW5kZXggPSBmcmFtZV9pbmRleDsKPj4gK8KgwqDCoMKgwqDCoMKgIGZyYW1lX2luZGV4ID0gZGNf ZmdfZ2V0X2ZyYW1lX2luZGV4KGZnKTsKPj4gK8KgwqDCoCB9IHdoaWxlIChsYXN0X2ZyYW1lX2lu ZGV4ID09IGZyYW1lX2luZGV4ICYmCj4+ICvCoMKgwqDCoMKgwqDCoMKgIHRpbWVfYmVmb3JlKGpp ZmZpZXMsIHRpbWVvdXQpKTsKPj4gKwo+PiArwqDCoMKgIHJldHVybiBsYXN0X2ZyYW1lX2luZGV4 ICE9IGZyYW1lX2luZGV4Owo+PiArfQo+PiArCj4+ICtib29sIGRjX2ZnX3NlY29uZGFyeV9yZXF1 ZXN0c190b19yZWFkX2VtcHR5X2ZpZm8oc3RydWN0IGRjX2ZnICpmZykKPj4gK3sKPj4gK8KgwqDC oCB1MzIgdmFsOwo+PiArCj4+ICvCoMKgwqAgcmVnbWFwX3JlYWQoZmctPnJlZywgRkdDSFNUQVQs ICZ2YWwpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuICEhKHZhbCAmIFNGSUZPRU1QVFkpOwo+PiAr fQo+PiArCj4+ICt2b2lkIGRjX2ZnX3NlY29uZGFyeV9jbGVhcl9jaGFubmVsX3N0YXR1cyhzdHJ1 Y3QgZGNfZmcgKmZnKQo+PiArewo+PiArwqDCoMKgIHJlZ21hcF93cml0ZShmZy0+cmVnLCBGR0NI U1RBVENMUiwgQ0xSU0VDU1RBVCk7Cj4+ICt9Cj4+ICsKPj4gK2ludCBkY19mZ193YWl0X2Zvcl9z ZWNvbmRhcnlfc3luY3VwKHN0cnVjdCBkY19mZyAqZmcpCj4+ICt7Cj4+ICvCoMKgwqAgdW5zaWdu ZWQgaW50IHZhbDsKPj4gKwo+PiArwqDCoMKgIHJldHVybiByZWdtYXBfcmVhZF9wb2xsX3RpbWVv dXQoZmctPnJlZywgRkdDSFNUQVQsIHZhbCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHZhbCAmIFNFQ1NZTkNTVEFULCA1LCAxMDAwMDApOwo+PiArfQo+PiArCj4+ ICt2b2lkIGRjX2ZnX2VuYWJsZV9jbG9jayhzdHJ1Y3QgZGNfZmcgKmZnKQo+PiArewo+PiArwqDC oMKgIGludCByZXQ7Cj4+ICsKPj4gK8KgwqDCoCByZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoZmct PmNsa19kaXNwKTsKPj4gK8KgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDCoMKgwqAgZGV2X2Vy cihmZy0+ZGV2LCAiZmFpbGVkIHRvIGVuYWJsZSBkaXNwbGF5IGNsb2NrOiAlZFxuIiwgcmV0KTsK Pj4gK30KPj4gKwo+PiArdm9pZCBkY19mZ19kaXNhYmxlX2Nsb2NrKHN0cnVjdCBkY19mZyAqZmcp Cj4+ICt7Cj4+ICvCoMKgwqAgY2xrX2Rpc2FibGVfdW5wcmVwYXJlKGZnLT5jbGtfZGlzcCk7Cj4+ ICt9Cj4+ICsKPj4gK2VudW0gZHJtX21vZGVfc3RhdHVzIGRjX2ZnX2NoZWNrX2Nsb2NrKHN0cnVj dCBkY19mZyAqZmcsIGludCBjbGtfa2h6KQo+PiArewo+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcg cm91bmRlZF9yYXRlOwo+PiArCj4+ICvCoMKgwqAgcm91bmRlZF9yYXRlID0gY2xrX3JvdW5kX3Jh dGUoZmctPmNsa19kaXNwLCBjbGtfa2h6ICogSFpfUEVSX0tIWik7Cj4+ICsKPj4gK8KgwqDCoCBp ZiAocm91bmRlZF9yYXRlICE9IGNsa19raHogKiBIWl9QRVJfS0haKQo+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIE1PREVfTk9DTE9DSzsKPj4gKwo+PiArwqDCoMKgIHJldHVybiBNT0RFX09LOwo+ PiArfQo+PiArCj4+ICt2b2lkIGRjX2ZnX2luaXQoc3RydWN0IGRjX2ZnICpmZykKPj4gK3sKPj4g K8KgwqDCoCBkY19mZ19lbmFibGVfc2hkZW4oZmcpOwo+PiArwqDCoMKgIGRjX2ZnX3N5bmNtb2Rl KGZnLCBGR19TWU5DTU9ERV9PRkYpOwo+PiArwqDCoMKgIGRjX2ZnX2Rpc3BsYXltb2RlKGZnLCBG R19ETV9TRUNfT05fVE9QKTsKPj4gK8KgwqDCoCBkY19mZ19wYW5pY19kaXNwbGF5bW9kZShmZywg RkdfRE1fQ09OU1RDT0wpOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgaW50IGRjX2ZnX2JpbmQoc3Ry dWN0IGRldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlICptYXN0ZXIsIHZvaWQgKmRhdGEpCj4+ICt7 Cj4+ICvCoMKgwqAgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiA9IHRvX3BsYXRmb3JtX2Rl dmljZShkZXYpOwo+PiArwqDCoMKgIHN0cnVjdCBkY19kcm1fZGV2aWNlICpkY19kcm0gPSBkYXRh Owo+PiArwqDCoMKgIHZvaWQgX19pb21lbSAqYmFzZTsKPj4gK8KgwqDCoCBzdHJ1Y3QgZGNfZmcg KmZnOwo+PiArwqDCoMKgIHN0cnVjdCBkY19kZSAqZGU7Cj4+ICvCoMKgwqAgaW50IGlkOwo+PiAr Cj4+ICvCoMKgwqAgZmcgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKmZnKSwgR0ZQX0tFUk5F TCk7Cj4+ICvCoMKgwqAgaWYgKCFmZykKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PTUVN Owo+PiArCj4+ICvCoMKgwqAgYmFzZSA9IGRldm1fcGxhdGZvcm1faW9yZW1hcF9yZXNvdXJjZShw ZGV2LCAwKTsKPj4gK8KgwqDCoCBpZiAoSVNfRVJSKGJhc2UpKQo+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIFBUUl9FUlIoYmFzZSk7Cj4+ICsKPj4gK8KgwqDCoCBmZy0+cmVnID0gZGV2bV9yZWdt YXBfaW5pdF9tbWlvKGRldiwgYmFzZSwgJmRjX2ZnX3JlZ21hcF9jb25maWcpOwo+PiArwqDCoMKg IGlmIChJU19FUlIoZmctPnJlZykpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihm Zy0+cmVnKTsKPj4gKwo+PiArwqDCoMKgIGZnLT5jbGtfZGlzcCA9IGRldm1fY2xrX2dldChkZXYs IE5VTEwpOwo+PiArwqDCoMKgIGlmIChJU19FUlIoZmctPmNsa19kaXNwKSkKPj4gK8KgwqDCoMKg wqDCoMKgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihmZy0+Y2xrX2Rpc3ApLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZmFpbGVkIHRvIGdl dCBkaXNwbGF5IGNsb2NrXG4iKTsKPj4gKwo+PiArwqDCoMKgIGlkID0gb2ZfYWxpYXNfZ2V0X2lk KGRldi0+b2Zfbm9kZSwgImRjMC1mcmFtZWdlbiIpOwo+PiArwqDCoMKgIGlmIChpZCA8IDApIHsK Pj4gK8KgwqDCoMKgwqDCoMKgIGRldl9lcnIoZGV2LCAiZmFpbGVkIHRvIGdldCBhbGlhcyBpZDog JWRcbiIsIGlkKTsKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBpZDsKPj4gK8KgwqDCoCB9Cj4+ ICsKPj4gK8KgwqDCoCBmZy0+ZGV2ID0gZGV2Owo+PiArCj4+ICvCoMKgwqAgZGUgPSBkY19kcm0t PmRlW2lkXTsKPj4gK8KgwqDCoCBkZS0+ZmcgPSBmZzsKPj4gKwo+PiArwqDCoMKgIHJldHVybiAw Owo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVudF9vcHMgZGNfZmdf b3BzID0gewo+PiArwqDCoMKgIC5iaW5kID0gZGNfZmdfYmluZCwKPj4gK307Cj4+ICsKPj4gK3N0 YXRpYyBpbnQgZGNfZmdfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gK3sK Pj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gY29tcG9uZW50X2FkZCgm cGRldi0+ZGV2LCAmZGNfZmdfb3BzKTsKPj4gK8KgwqDCoCBpZiAocmV0KQo+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgcmV0LAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZmFpbGVkIHRvIGFkZCBjb21wb25lbnRc biIpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4gK3N0YXRpYyB2b2lk IGRjX2ZnX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiArewo+PiArwqDC oMKgIGNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRjX2ZnX29wcyk7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRjX2ZnX2R0X2lkc1tdID0gewo+PiAr wqDCoMKgIHsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDhxeHAtZGMtZnJhbWVnZW4iLCB9LAo+PiAr wqDCoMKgIHsgLyogc2VudGluZWwgKi8gfQo+PiArfTsKPj4gK01PRFVMRV9ERVZJQ0VfVEFCTEUo b2YsIGRjX2ZnX2R0X2lkcyk7Cj4+ICsKPj4gK3N0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgZGNfZmdf ZHJpdmVyID0gewo+PiArwqDCoMKgIC5wcm9iZSA9IGRjX2ZnX3Byb2JlLAo+PiArwqDCoMKgIC5y ZW1vdmVfbmV3ID0gZGNfZmdfcmVtb3ZlLAo+PiArwqDCoMKgIC5kcml2ZXIgPSB7Cj4+ICvCoMKg wqDCoMKgwqDCoCAubmFtZSA9ICJpbXg4LWRjLWZyYW1lZ2VuIiwKPj4gK8KgwqDCoMKgwqDCoMKg IC5zdXBwcmVzc19iaW5kX2F0dHJzID0gdHJ1ZSwKPj4gK8KgwqDCoMKgwqDCoMKgIC5vZl9tYXRj aF90YWJsZSA9IGRjX2ZnX2R0X2lkcywKPj4gK8KgwqDCoCB9LAo+PiArfTsKPj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pbXgvZGMvZGMtdGMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pbXgv ZGMvZGMtdGMuYwo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+PiBpbmRleCAwMDAwMDAwMDAwMDAu LjA1Yjg2ZjQxYWU5ZQo+PiAtLS0gL2Rldi9udWxsCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9p bXgvZGMvZGMtdGMuYwo+PiBAQCAtMCwwICsxLDEzOCBAQAo+PiArLy8gU1BEWC1MaWNlbnNlLUlk ZW50aWZpZXI6IEdQTC0yLjArCj4+ICsvKgo+PiArICogQ29weXJpZ2h0IDIwMjQgTlhQCj4+ICsg Ki8KPj4gKwo+PiArI2luY2x1ZGUgPGxpbnV4L2NvbXBvbmVudC5oPgo+PiArI2luY2x1ZGUgPGxp bnV4L21vZF9kZXZpY2V0YWJsZS5oPgo+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPgo+PiAr I2luY2x1ZGUgPGxpbnV4L29mLmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+Cj4+ICsjaW5jbHVkZSA8bGludXgvcmVnbWFwLmg+Cj4+ICsKPj4gKyNpbmNsdWRlICJkYy1k cnYuaCIKPj4gKyNpbmNsdWRlICJkYy1kZS5oIgo+PiArCj4+ICsjZGVmaW5lIFRDT05fQ1RSTMKg wqDCoCAweDQxMAo+PiArI2RlZmluZcKgIENUUkxfUlNUX1ZBTMKgwqDCoCAweDAxNDAxNDA4Cj4+ ICsKPj4gKy8qIHJlZDogTUFQQklUIDI5LTIwLCBncmVlbjogTUFQQklUIDE5LTEwLCBibHVlOiBN QVBCSVQgOS0wICovCj4+ICsjZGVmaW5lIE1BUEJJVDNfMMKgwqDCoCAweDQxOAo+PiArI2RlZmlu ZSBNQVBCSVQ3XzTCoMKgwqAgMHg0MWMKPj4gKyNkZWZpbmUgTUFQQklUMTFfOMKgwqDCoCAweDQy MAo+PiArI2RlZmluZSBNQVBCSVQxNV8xMsKgwqDCoCAweDQyNAo+PiArI2RlZmluZSBNQVBCSVQx OV8xNsKgwqDCoCAweDQyOAo+PiArI2RlZmluZSBNQVBCSVQyM18yMMKgwqDCoCAweDQyYwo+PiAr I2RlZmluZSBNQVBCSVQyN18yNMKgwqDCoCAweDQzMAo+PiArI2RlZmluZSBNQVBCSVQzMV8yOMKg wqDCoCAweDQzNAo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJlZ21hcF9yYW5nZSBkY190 Y19yZWdtYXBfcmFuZ2VzW10gPSB7Cj4+ICvCoMKgwqAgcmVnbWFwX3JlZ19yYW5nZShUQ09OX0NU UkwsIFRDT05fQ1RSTCksCj4+ICvCoMKgwqAgcmVnbWFwX3JlZ19yYW5nZShNQVBCSVQzXzAsIE1B UEJJVDMxXzI4KSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcmVnbWFwX2Fj Y2Vzc190YWJsZSBkY190Y19yZWdtYXBfYWNjZXNzX3RhYmxlID0gewo+PiArwqDCoMKgIC55ZXNf cmFuZ2VzID0gZGNfdGNfcmVnbWFwX3JhbmdlcywKPj4gK8KgwqDCoCAubl95ZXNfcmFuZ2VzID0g QVJSQVlfU0laRShkY190Y19yZWdtYXBfcmFuZ2VzKSwKPj4gK307Cj4+ICsKPj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgcmVnbWFwX2NvbmZpZyBkY190Y19yZWdtYXBfY29uZmlnID0gewo+PiArwqDC oMKgIC5uYW1lID0gInRjb24iLAo+PiArwqDCoMKgIC5yZWdfYml0cyA9IDMyLAo+PiArwqDCoMKg IC5yZWdfc3RyaWRlID0gNCwKPj4gK8KgwqDCoCAudmFsX2JpdHMgPSAzMiwKPj4gK8KgwqDCoCAu ZmFzdF9pbyA9IHRydWUsCj4+ICvCoMKgwqAgLndyX3RhYmxlID0gJmRjX3RjX3JlZ21hcF9hY2Nl c3NfdGFibGUsCj4+ICvCoMKgwqAgLnJkX3RhYmxlID0gJmRjX3RjX3JlZ21hcF9hY2Nlc3NfdGFi bGUsCj4+ICt9Owo+PiArCj4+ICsvKgo+PiArICogVGhlIHBpeGVscyByZWFjaCBUQ09OIGFyZSBh bHdheXMgaW4gMzAtYml0IEJHUiBmb3JtYXQuCj4+ICsgKiBUaGUgZmlyc3QgYnJpZGdlIGFsd2F5 cyByZWNlaXZlcyBwaXhlbHMgaW4gMzAtYml0IFJHQiBmb3JtYXQuCj4+ICsgKiBTbywgbWFwIHRo ZSBmb3JtYXQgdG8gTUVESUFfQlVTX0ZNVF9SR0IxMDEwMTBfMVgzMC4KPj4gKyAqLwo+PiArc3Rh dGljIGNvbnN0IHUzMiBkY190Y19tYXBiaXRbXSA9IHsKPj4gK8KgwqDCoCAweDE3MTYxNTE0LCAw eDFiMWExOTE4LCAweDBiMGExZDFjLCAweDBmMGUwZDBjLAo+PiArwqDCoMKgIDB4MTMxMjExMTAs IDB4MDMwMjAxMDAsIDB4MDcwNjA1MDQsIDB4MDAwMDA5MDgsCj4+ICt9Owo+PiArCj4+ICt2b2lk IGRjX3RjX2luaXQoc3RydWN0IGRjX3RjICp0YykKPj4gK3sKPj4gK8KgwqDCoCAvKiByZXNldCBU Q09OX0NUUkwgdG8gUE9SIGRlZmF1bHQgc28gdGhhdCBUQ09OIHdvcmtzIGluIGJ5cGFzcyBtb2Rl ICovCj4+ICvCoMKgwqAgcmVnbWFwX3dyaXRlKHRjLT5yZWcsIFRDT05fQ1RSTCwgQ1RSTF9SU1Rf VkFMKTsKPj4gKwo+PiArwqDCoMKgIC8qIHNldCBmb3JtYXQgKi8KPj4gK8KgwqDCoCByZWdtYXBf YnVsa193cml0ZSh0Yy0+cmVnLCBNQVBCSVQzXzAsIGRjX3RjX21hcGJpdCwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEFSUkFZX1NJWkUoZGNfdGNfbWFwYml0KSk7Cj4+ICt9Cj4+ICsK Pj4gK3N0YXRpYyBpbnQgZGNfdGNfYmluZChzdHJ1Y3QgZGV2aWNlICpkZXYsIHN0cnVjdCBkZXZp Y2UgKm1hc3Rlciwgdm9pZCAqZGF0YSkKPj4gK3sKPj4gK8KgwqDCoCBzdHJ1Y3QgcGxhdGZvcm1f ZGV2aWNlICpwZGV2ID0gdG9fcGxhdGZvcm1fZGV2aWNlKGRldik7Cj4+ICvCoMKgwqAgc3RydWN0 IGRjX2RybV9kZXZpY2UgKmRjX2RybSA9IGRhdGE7Cj4+ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpi YXNlOwo+PiArwqDCoMKgIHN0cnVjdCBkY190YyAqdGM7Cj4+ICvCoMKgwqAgc3RydWN0IGRjX2Rl ICpkZTsKPj4gK8KgwqDCoCBpbnQgaWQ7Cj4+ICsKPj4gK8KgwqDCoCB0YyA9IGRldm1fa3phbGxv YyhkZXYsIHNpemVvZigqdGMpLCBHRlBfS0VSTkVMKTsKPj4gK8KgwqDCoCBpZiAoIXRjKQo+PiAr wqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FTk9NRU07Cj4+ICsKPj4gK8KgwqDCoCBiYXNlID0gZGV2 bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291cmNlKHBkZXYsIDApOwo+PiArwqDCoMKgIGlmIChJU19F UlIoYmFzZSkpCj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihiYXNlKTsKPj4gKwo+ PiArwqDCoMKgIHRjLT5yZWcgPSBkZXZtX3JlZ21hcF9pbml0X21taW8oZGV2LCBiYXNlLCAmZGNf dGNfcmVnbWFwX2NvbmZpZyk7Cj4+ICvCoMKgwqAgaWYgKElTX0VSUih0Yy0+cmVnKSkKPj4gK8Kg wqDCoMKgwqDCoMKgIHJldHVybiBQVFJfRVJSKHRjLT5yZWcpOwo+PiArCj4+ICvCoMKgwqAgaWQg PSBvZl9hbGlhc19nZXRfaWQoZGV2LT5vZl9ub2RlLCAiZGMwLXRjb24iKTsKPj4gK8KgwqDCoCBp ZiAoaWQgPCAwKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfZXJyKGRldiwgImZhaWxlZCB0byBn ZXQgYWxpYXMgaWQ6ICVkXG4iLCBpZCk7Cj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gaWQ7Cj4+ ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgZGUgPSBkY19kcm0tPmRlW2lkXTsKPj4gK8KgwqDC oCBkZS0+dGMgPSB0YzsKPj4gK8KgwqDCoCBkZS0+dGMtPmRldiA9IGRldjsKPj4gKwo+PiArwqDC oMKgIHJldHVybiAwOwo+PiArfQo+PiArCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGNvbXBvbmVu dF9vcHMgZGNfdGNfb3BzID0gewo+PiArwqDCoMKgIC5iaW5kID0gZGNfdGNfYmluZCwKPj4gK307 Cj4+ICsKPj4gK3N0YXRpYyBpbnQgZGNfdGNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPj4gK3sKPj4gK8KgwqDCoCBpbnQgcmV0Owo+PiArCj4+ICvCoMKgwqAgcmV0ID0gY29t cG9uZW50X2FkZCgmcGRldi0+ZGV2LCAmZGNfdGNfb3BzKTsKPj4gK8KgwqDCoCBpZiAocmV0KQo+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGRldl9lcnJfcHJvYmUoJnBkZXYtPmRldiwgcmV0LAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZmFpbGVkIHRvIGFk ZCBjb21wb25lbnRcbiIpOwo+PiArCj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyB2b2lkIGRjX3RjX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ PiArewo+PiArwqDCoMKgIGNvbXBvbmVudF9kZWwoJnBkZXYtPmRldiwgJmRjX3RjX29wcyk7Cj4+ ICt9Cj4+ICsKPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGRjX3RjX2R0X2lk c1tdID0gewo+PiArwqDCoMKgIHsgLmNvbXBhdGlibGUgPSAiZnNsLGlteDhxeHAtZGMtdGNvbiIs IH0sCj4+ICvCoMKgwqAgeyAvKiBzZW50aW5lbCAqLyB9Cj4+ICt9Owo+PiArTU9EVUxFX0RFVklD RV9UQUJMRShvZiwgZGNfdGNfZHRfaWRzKTsKPj4gKwo+PiArc3RydWN0IHBsYXRmb3JtX2RyaXZl ciBkY190Y19kcml2ZXIgPSB7Cj4+ICvCoMKgwqAgLnByb2JlID0gZGNfdGNfcHJvYmUsCj4+ICvC oMKgwqAgLnJlbW92ZV9uZXcgPSBkY190Y19yZW1vdmUsCj4+ICvCoMKgwqAgLmRyaXZlciA9IHsK Pj4gK8KgwqDCoMKgwqDCoMKgIC5uYW1lID0gImlteDgtZGMtdGNvbiIsCj4+ICvCoMKgwqDCoMKg wqDCoCAuc3VwcHJlc3NfYmluZF9hdHRycyA9IHRydWUsCj4+ICvCoMKgwqDCoMKgwqDCoCAub2Zf bWF0Y2hfdGFibGUgPSBkY190Y19kdF9pZHMsCj4+ICvCoMKgwqAgfSwKPj4gK307Cj4gCgotLSAK UmVnYXJkcywKTGl1IFlpbmcKCgotLSAKbGludXgtcGh5IG1haWxpbmcgbGlzdApsaW51eC1waHlA bGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwczovL2xpc3RzLmluZnJhZGVhZC5vcmcvbWFpbG1hbi9s aXN0aW5mby9saW51eC1waHkK