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 CFF55E77188 for ; Tue, 14 Jan 2025 12:43:20 +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-Type: Content-Transfer-Encoding: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=G+61Xqq+Grjt4WoCGd4fmC3h1gYZ/Hc6EOL9x3lt4GY=; b=bbcB0CMVdA74F5Cs6tQB6YLgQe bHukPQvFtGb7d0ZuH34Svuy7nsEVeTm36n0te5jjSZDnH+MoVd3WSyG5G918x+7zyTnr08jEkgBTq 4qyuKWKYqx+Zhl8CKravT+ha+ujAQGNTUz392/lfx8PUrH1gn104f3XUL8vOulQgcgDGS3aTslX6b /0fya0NHgzxTqz/jk5rlLLaMzHkahrgWfLOe+NxkJiVBue5i6ftNC/1nqP99zSOqgLlQkeqjS+EW3 dGSCLNUJjLyR2GPLNQCuhw9UuitF8d4CMQq3C5+jlnpmwkr7ktPapffmZh7RZR0u7bjXaAqdCr+dG A/joEnYA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.98 #2 (Red Hat Linux)) id 1tXgGJ-00000008RDr-2Yxg; Tue, 14 Jan 2025 12:43:15 +0000 Received: from mail-eastasiaazlp170100000.outbound.protection.outlook.com ([2a01:111:f403:c400::] helo=HK2PR02CU002.outbound.protection.outlook.com) by bombadil.infradead.org with esmtps (Exim 4.98 #2 (Red Hat Linux)) id 1tXgF2-00000008QyH-30hi; Tue, 14 Jan 2025 12:41:58 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nKREVpWlMmubI/LSzBx9QkPeW3UViRRUNpYO843C2Q8ya2heKGdG2nVG4Yi78aHoCLUDyI+fv69hFesZQqy1bKtDGVp6MneHnp/SNKodEsH/z68Unz6oi2Mgax9mW4/qCFKZkdUYYHfSSshXZVY9k6ZMcd1zJFKR38LGdK1k2KGsTiwXVMsbyjM6KYQhw42swYS9KTknjk/kliLO6qIKgT1LCGB4HItYhuXCZ0Yv+sDTih1lXz0Gu6ol77sOAv10QPfIh/ufPcA/PnotZn3L7nkWsQnITm3dqf7B1dJtob2/8IO6N1jaB2jF3RB6sAFl73GeGlul26uJxSBIpboN4g== 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=e6M+Aq3iD1iSZwtU7ci0QHqNGElyK7JiLBPkduGAzfw=; b=OTZISEWn6mPK0i5VNN621JLcrcPSHxiqKVk3NEJZXEOZ9RUV3WUAvnY7G8H4FIXkM/eGvHkM1ace1z7ZOZMVREL6ya2PkTx5SMedQ+agQMqjVLVCu/hhofnvG5AZzknn85CYSzV0ovUmJFnbgVo8ukIEHvx8xPj0KSYku+55f1hE//vLUoH24J6B5Dc9y8d8nCqVgC9TlCcL4ZhFKOEa9LiLjGwa2rn19Zaul9kn3ek9ZZrV9nBsxrnUcnEgz2c0iKXmL0BP8NRtRYmN+64Huh6ROjPJlUBNAj+2i8T1EVAyN4NZASXzgwMGQLC6WwDf6DXMRr2CFQuzghj3hHKm9w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amlogic.com; dmarc=pass action=none header.from=amlogic.com; dkim=pass header.d=amlogic.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amlogic.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=e6M+Aq3iD1iSZwtU7ci0QHqNGElyK7JiLBPkduGAzfw=; b=nKab9X285hh3e87prpOmniOL2n4dSuhSVgo+L/RE6Qe6PrFS5Gzb54GjRaZvm008axmvDwaUsbDSrqOCRDT2VC+u0H6HbcdnBPRi4rSoeYAvmi+EGH4q7U2Mj8G482aza0kzhM8IqNbNvEqroYwXADGcaMpEzF6zfQicioRlUCkUWpSi/zu9TJVxgmBHJvuWzQxmwJSmR6KxS31u6mSvJrEofG1TKeMVuWz5IHEeKjYS9mDtXnN1EIxSWa/1o7GtkWpnE0Pym5KPmzG/80vXOXR9XcOTDRzAnQe5UPQgAMzKq5O5auYPgC9DW0mfMmiRhs8KmB/ogTDZj89b0Sk9kQ== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=amlogic.com; Received: from PUZPR03MB7135.apcprd03.prod.outlook.com (2603:1096:301:113::15) by SI6PR03MB8707.apcprd03.prod.outlook.com (2603:1096:4:253::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8335.18; Tue, 14 Jan 2025 12:41:50 +0000 Received: from PUZPR03MB7135.apcprd03.prod.outlook.com ([fe80::ecac:a387:36d8:144d]) by PUZPR03MB7135.apcprd03.prod.outlook.com ([fe80::ecac:a387:36d8:144d%3]) with mapi id 15.20.8335.017; Tue, 14 Jan 2025 12:41:50 +0000 Message-ID: <31ce586b-a7d9-4f69-8ca4-4f98cfbeee1d@amlogic.com> Date: Tue, 14 Jan 2025 20:41:35 +0800 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 2/3] ASoC: meson: s4:support for the on-chip audio To: Jerome Brunet Cc: jiebing chen via B4 Relay , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai , Neil Armstrong , Kevin Hilman , Martin Blumenstingl , linux-sound@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-amlogic@lists.infradead.org References: <20250113-audio_drvier-v1-0-8c14770f38a0@amlogic.com> <20250113-audio_drvier-v1-2-8c14770f38a0@amlogic.com> <1jwmey9451.fsf@starbuckisacylon.baylibre.com> <1jh6617hwf.fsf@starbuckisacylon.baylibre.com> From: Jiebing Chen In-Reply-To: <1jh6617hwf.fsf@starbuckisacylon.baylibre.com> X-ClientProxiedBy: SG2PR01CA0182.apcprd01.prod.exchangelabs.com (2603:1096:4:189::20) To PUZPR03MB7135.apcprd03.prod.outlook.com (2603:1096:301:113::15) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: PUZPR03MB7135:EE_|SI6PR03MB8707:EE_ X-MS-Office365-Filtering-Correlation-Id: e5b4172e-79ec-4530-1837-08dd3498d128 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|366016|376014|1800799024|7416014; X-Microsoft-Antispam-Message-Info: =?utf-8?B?dWQ2OTM3LzNmU0xPUHNHZ0VRTUhDMlQxUXhWRkNqNzhlbTlLWTZXM3NBYnJN?= =?utf-8?B?MWZpN3dkbDhyN1BLWHlKQ28rZERncXFYZ3dCS3FTN1grOXp6VWtObC91bUV3?= =?utf-8?B?M3BNbkRSN0FDZXBiQm9PTUJueDR6NWYwOEs3SVdBa0dEbll3NzBkSGRVV1Bi?= =?utf-8?B?MXNaWm1CaDFrbDJlelkvVHMyVVd0dGV1cjNsbEpzdmJyUlpsNmEzeWlXREE4?= =?utf-8?B?TS9BZS9CWVhrYzFyU1hSOUUrQXNxUjN3dHNBUjRUeEluQXNUTW8xbW9PSVFN?= =?utf-8?B?SjVyekxrTmUrcU1abFBuRjdyRWtGVndjN1pieGdJdUZmYkhvQVhyREkyREYw?= =?utf-8?B?M0NRU2FYdTRYODdRcUkrbCtEVmVWWkFPWFljaTZmNm5ZazJabWVVNWhOQW9X?= =?utf-8?B?QUVocUpua1NXS1R0Z0FsS3hKUGNDbzd2MnQzb0Yxb3M5cHNtMlR6eHlheTdp?= =?utf-8?B?bnI0Tnc2UjNhVVBXb2NzZFV4Qlg4clpyT0xWQUpjNXVHVzFYK1p5SHU2SFRn?= =?utf-8?B?MmljYWZjd0JCZDNJTHFVZGpzb1BySTZlY0ZsNlBzeXJuVDBic0FYOVZteTdG?= =?utf-8?B?RjFuUERISERCdnVnMjRBT3l3NHZabkM0ajBmbytoUVlXUnZTOGFkalpOWGEy?= =?utf-8?B?Z3lQQjhqbHlGYmlnWW1iejlOYjBoay9FZUtDdUpxbVhxUEZ2UHhDUzFaRkxH?= =?utf-8?B?ZVUzY3pvK1dRWHZsYkRrbzhPU2NpQ255MjYwYmdlK3crQkR2cERGRFZMYklM?= =?utf-8?B?ZThZQW5QSHFpd00zaEcxN21pZGtGQkJnRDhieVpVQWE2UFdDWG1lR295SCt3?= =?utf-8?B?aWhmdHIrNjFBYjl6bTEvUXkzSlJ3NXcxd041M3hCcTQ5K2ZlSWhqV0xCQW1n?= =?utf-8?B?dzV5VENoN0x5WEVUYjJOcE16YytPKzNMS0xIS2QxMDJqL0ZXWVVacnBQdG11?= =?utf-8?B?Zy9pbmQ0OWZRb2dVV3NLV09XYkl5Y3lEQU9UdE5mMWtNSm5wNVFyTTZqWWdZ?= =?utf-8?B?cTdES3B6QVppVzNiQTVWanUyNGlqNjliTlRDWFp6MXhFRkQzUHhnUlpSb1FZ?= =?utf-8?B?WDluV0dWdnFnTXREM2NHM0xOajdOcjRGbm5ieGRMamdyeU1Qdys0dXFzN3BY?= =?utf-8?B?SE9MZHBRU2ZBOWwzZXRCT2c4ajBaVEx1bm9uVXFXZkI4clZuZk1DdVdGYzhW?= =?utf-8?B?SzBOanpWR2VrTEJrVVRDVFowT3pCUkt3MWtENnFHSzh4c09WekY3OG1QakVX?= =?utf-8?B?am1ZdTlhQStGemtlQTUyeVE3TGNMTDlsUUU3RUorSHVrM1VuNC9zbzB3cVNL?= =?utf-8?B?Wmord3pRN3R3MXhJTllNbC9DOVQ4cUlWeWZKS04wampNMXcxckJTODE5L0ky?= =?utf-8?B?U0lySjFLQ3BlMzBicFpjaXBiZUpxaHNQZnMxdUN1YWJiTUFLQjkrTG5iNWpl?= =?utf-8?B?eXgzajNOM3Y1TWJzRThuNW5zdFBYSkhGbmVMTEhNeUx1SXQwNE1FSlp6RDhU?= =?utf-8?B?bjVadHVTaDE4TkFjZTB4c3UrRXpNQ0ZBWndBM0tuM2lzcXZ1amxXWURDQWg0?= =?utf-8?B?RlhBeXZUbjhWbWoxRW1RcWR1ZTFpZXloRU9vc1F0RWFZNUlaMElRcEl6aDJT?= =?utf-8?B?bHNJTmVhSFJsUW43STYvbWhhU0lXZGRJZ0UwaTZWd0FMN01Bc094U0p6UDVx?= =?utf-8?B?V0RmZ0tDZm5VNmJVU2RET0RFcjY4MFA1U2F2Qnk2NDJMTmRXRFNSc0c2UGsy?= =?utf-8?B?aTI3aDVTN1N3ZW1kNEduOFh4UzdSTmpqL2hLandXTTU0UE56d1ZsMDZUTVFC?= =?utf-8?B?bFdwOTVPRFF3V2tqa0d1Zz09?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PUZPR03MB7135.apcprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(366016)(376014)(1800799024)(7416014);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?OUltU2hGZjVqa2dTcEtaVEFiRHNXVUdlNTRYbkRxV1hKRmkzV1J6d0RrRHhY?= =?utf-8?B?R00vK2pNcmFpTFVYbVJCZGNHa2RXR2Zodi9ERVJIQUY1NUNZSE5tbWRoSHFC?= =?utf-8?B?Z1g0cGh0YU12Qk1pWlpaUFA3VlZob3BoY2lwamI1V0lCNnZoNjdHQUV6Q3BZ?= =?utf-8?B?Vyt1WUdkNGxXU1RLbWtvMlFxK1ZrbkkrSERrblZQTXo0VXpBMUVCNkV2VEFN?= =?utf-8?B?TmYzTEVBbk9VKzdqeXhNVEc3cXc1bjlTbHkxSllMVVIrNEtwT1k0TVhGSDBv?= =?utf-8?B?YkhOdjdpcW9ycmpoTzB2dzRpc3VoMDBPQVhCbWcyZkVIa2xZUHUvcWVnbC9C?= =?utf-8?B?QkRoVFplM211QzdZc1BKWDBHdTdFbG8xMEd3TWRnUVArNkd5MG9KZHhOQkVj?= =?utf-8?B?bVZha1dHU3VZM0JBSFhrWVlkdzhjUU51ZWdjd3hVWXBXWE1ocEQvdEJmMnl0?= =?utf-8?B?K295MXMzSFltazdhYi94K29WOEJVc1dMR0N6ZWthMk53elM3N3hEUFpZK2RE?= =?utf-8?B?R0k4aE1tMlFVTnUvWG83d29oNEN4K3doamw5RnMySWhvb1NEd2NrSmg3ZGNo?= =?utf-8?B?dk5MYTkvb29NcHJhdkI3UDZSL2k2bDJPOEVaZEtUNEc2WVlJYnRqb0k0SjE1?= =?utf-8?B?emhaNTBVbUk2Y0xwdmlKVlZ3UXVEZHltWGNESHZxVHpiK05Rbnp5RldiWmw1?= =?utf-8?B?c0hSY2t2ZjYwbzMwcDZGby9HVUtxMXpZbXJ4eGVLV0VSTEpsV2FrWnlacHZy?= =?utf-8?B?QWUzSnlNVEhDZnppVUczNWtkUlJXNU10MnR4dzAwRDVVQmF3ZGFSSUNiSGpQ?= =?utf-8?B?TnJVYklHVUs5QnpoMjlEZkhBWEkvZE15cWtmN2hZWm5hWGgwci9aVmZDa21E?= =?utf-8?B?R3ZuWmRPWWhqVEpvQ1lJME1Zck1nTDh1MWRSYStNZlpGMWswWHNVR1drTXIy?= =?utf-8?B?Y1FJSWNzUzJNdEFXNnVWN0dWa1Q3VnZPZmpnTWd2eHZFUEZLeEdSaTM2d0Fp?= =?utf-8?B?QlQ2UUNidm5WTTZ2VVRMRkRtZkk4am1iYjRhU1k2Z3ZEWGx2RXFmZjQwZkpx?= =?utf-8?B?Tmt2aHo1dlkva09UWUNpdzlXeTBHeVlGdmZPam00U1RiWHhYKzBpZ3BxSFd5?= =?utf-8?B?MnVXUW11ejRISy80cEUzcE51SlBEMU9NQTNZbW9mVXRTK25ZK01naU1xL251?= =?utf-8?B?VzlIMXFRT05KemR6VzZrakhacTZXU01qRjR3Y09NekVKbnpuYjRoQTZWN2V0?= =?utf-8?B?TWpnOXU0UVBGblY5NXloaVA5aW9BVzBWM1lWbmx6OFZRVTJPemF6dmgwc3px?= =?utf-8?B?MHF0RVdsOGxUL2hIRFgyUXhIcXRXTFJTZ0ZnUDZrd3pKcGF3MGtnY2dFVENm?= =?utf-8?B?YXRFQzN3eXZxdHVyMlFPUWFPN25JR05LMUJmOEQ3aEMzd3pPYVBxYjBqV2dF?= =?utf-8?B?ME9oc1YxTWxHcDFDQy9CQXJtNDdGVE9GMkFRVHozNzNBMUNmcjFtOGtTdW1a?= =?utf-8?B?N3pwMk5sdWVxeVliaWtwUm5aMS9UaVpHOWtMZzhlNWRaRUtMYkpTNjN0enVB?= =?utf-8?B?WHRyUDdsNW8xSFpGMy9jMmxoM1B5YVNxUlRDamQ5TEdTdnF3M2MwNVZ0R2pG?= =?utf-8?B?Y3FKMGV2TTRGbVNHeEw1azNxRWYyME8xaTFQaXpaYkc5MExJWUpqNVhXMjlF?= =?utf-8?B?VDVIVEd6aW9qRTB1VWgydzFLbzNscGM1SHRaMlJqWHJFMzgvbG1FOHVQR25R?= =?utf-8?B?M0xmSVBOUklHRlJtRjZYbVlZajdsaXBwTFY2ZHZRWE9JRFh5NUtkTUpkdi9S?= =?utf-8?B?d1g2aTZ6cm92NDBCd2JMOG5GV3hqdllta21taHNiclRta2N2RDBZZUJRMWZk?= =?utf-8?B?OHk1dW1USVZNRDdmL0VSQkpKV1RIcFBjM3Y0RitHbmdqYklpc1hFTkE2WlFG?= =?utf-8?B?ZVVFVHJuR3lCRXVhaitqUmFvSlpnZVJuaUxnZm54N1pUVHArbnZZanpEQWxu?= =?utf-8?B?azc1YmpzOEtkbklsMTN1TTRreS9mLzFqZ1VtYzIwZVgwS3dyUFpuQVN0NFhJ?= =?utf-8?B?aG5Gd3hHd01sZ3ZNdXRqZVdLdzY3SVFZMGg2K1Y5QkNuMTMzTmlCTUtDOVRZ?= =?utf-8?B?bmJNOCt3MWY1SVNhMDkwTG5HSTNGODdXWU5uV0RaK21vQm9Vbk5MVXJXdVNJ?= =?utf-8?B?cEE9PQ==?= X-OriginatorOrg: amlogic.com X-MS-Exchange-CrossTenant-Network-Message-Id: e5b4172e-79ec-4530-1837-08dd3498d128 X-MS-Exchange-CrossTenant-AuthSource: PUZPR03MB7135.apcprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jan 2025 12:41:50.7004 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 0df2add9-25ca-4b3a-acb4-c99ddf0b1114 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: rC64f7SNku7Jc+RSqW9tHVxcA29FdSHtQbktpihh0CVJ2EYHJfAF/YPoXnu3hy5KOj5JaWSENirF2n5MexFoB2ie80hVHPqZV1ASOp24eEk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SI6PR03MB8707 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20250114_044156_920727_5BA05E4B X-CRM114-Status: GOOD ( 28.60 ) X-BeenThere: linux-amlogic@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "linux-amlogic" Errors-To: linux-amlogic-bounces+linux-amlogic=archiver.kernel.org@lists.infradead.org CuWcqCAyMDI1LzEvMTQgMTk6MjksIEplcm9tZSBCcnVuZXQg5YaZ6YGTOgo+IFsgRVhURVJOQUwg RU1BSUwgXQo+Cj4gT24gVHVlIDE0IEphbiAyMDI1IGF0IDE2OjE2LCBKaWViaW5nIENoZW4gPGpp ZWJpbmcuY2hlbkBhbWxvZ2ljLmNvbT4gd3JvdGU6Cj4KPj4+PiArc3RhdGljIGNvbnN0IGNoYXIg KiBjb25zdCBzNF90ZG1vdXRfc2VsX3RleHRzW10gPSB7Cj4+Pj4gKyAgICAgIlRETV9EMCIsICJU RE1fRDEiLCAiVERNX0QyIiwgIlRETV9EMyIsICJURE1fRDQiLCAiVERNX0Q1IiwgIlRETV9ENiIs ICJURE1fRDciLAo+Pj4+ICsgICAgICJURE1fRDgiLCAiVERNX0Q5IiwgIlRETV9EMTAiLCAiVERN X0QxMSIsICJURE1fRDEyIiwgIlRETV9EMTMiLCAiVERNX0QxNCIsICJURE1fRDE1IiwKPj4+PiAr ICAgICAiVERNX0QxNiIsICJURE1fRDE3IiwgIlRETV9EMTgiLCAiVERNX0QxOSIsICJURE1fRDIw IiwgIlRETV9EMjEiLCAiVERNX0QyMiIsICJURE1fRDIzIiwKPj4+PiArICAgICAiVERNX0QyNCIs ICJURE1fRDI1IiwgIlRETV9EMjYiLCAiVERNX0QyNyIsICJURE1fRDI4IiwgIlRETV9EMjkiLCAi VERNX0QzMCIsICJURE1fRDMxIgo+Pj4+ICt9Owo+Pj4gVGhpcyB0aGluZyBkb2VzIG5vdCBiZWxv bmcgaW4gQVNvQy4gVGhpcyBpcyBjbGVhcmx5IHlldCBhbm90aGVyIGxheWVyIG9mCj4+PiBwaW5j dHJsLiBQbGVhc2UgZGVhbCB3aXRoIGl0IHRoZXJlLgo+PiBUaGFua3MgZm9yIHlvdXIgc3VnZ2Vz dGlvbiwgYWRkIGF1ZGlvIHBpbmN0cmwgZHJpdmVyIHRvIGNvbnRyb2wgdGhlIHdoaWNoIHRkbV9k eCBwaW4gY2FuIG1hcCB0aGUgd2hpY2ggdGRtIGxhbmVfeAo+PiBmb3IgZXhhbXBsZQo+PiAgICAg ICAgdGRtX2Q2X3BpbiB7Cj4+ICAgICAgICAgICAgICAgIG11eCB7Cj4+ICAgICAgICAgICAgICAg ICAgICAgICAgZ3JvdXBzID0gInRkbV9kNiI7Cj4+ICAgICAgICAgICAgICAgICAgICAgICAgZnVu Y3Rpb24gPSAidGRtb3V0Yl9sYW5lMCI7Cj4+ICAgICAgICAgICAgICAgIH07Cj4+ICAgICAgICB9 Cj4+IHRkbV9kNiBwaW4gbWFwIHRoZSB0ZG1vdXRiIGxhbmUgMCwgcmlnaHQgPwo+IHBvc3NpYmx5 Cj4KPj4+PiArCj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gdGRtb3V0X3NlbF9l bnVtID0KPj4+PiArICAgICBTT0NfRU5VTV9TSU5HTEUoU05EX1NPQ19OT1BNLCAwLCBBUlJBWV9T SVpFKHM0X3RkbW91dF9zZWxfdGV4dHMpLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICBzNF90 ZG1vdXRfc2VsX3RleHRzKTsKPj4+PiArCj4gWy4uLl0KPgo+Pj4+IGRpZmYgLS1naXQgYS9zb3Vu ZC9zb2MvbWVzb24vczQtdG9jb2RlYy1jb250cm9sLmMgYi9zb3VuZC9zb2MvbWVzb24vczQtdG9j b2RlYy1jb250cm9sLmMKPj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+Pj4+IGluZGV4IDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU1ZDgyNGZhZTBlYmE1NDVkMzhk YzM2ZTI1NjZlN2NlZTU5MGU3ZjUKPj4+PiAtLS0gL2Rldi9udWxsCj4+Pj4gKysrIGIvc291bmQv c29jL21lc29uL3M0LXRvY29kZWMtY29udHJvbC5jCj4+PiBUaGVyZSBpcyBhbHJlYWR5IGEgdG8t YWNvZGVjIGRyaXZlciBhIG5vdCByZWFzb24gaGFzIGJlZW4gcHJvdmlkZWQgYXMgdG8gd2h5IGEK Pj4+IGNvbXBsZXRseSBuZXcgZHJpdmVyIGlzIHJlcXVpcmVkLgo+Pj4KPj4+IFBsZWFzZSBoYXZl IGxvb2sgYXQgdGhlIGV4aXN0aW5nIGRyaXZlciBhbmQgZG8gdHJ5IHRvIHVzZSBpdC4KPj4+IElm IHlvdSBuZWVkIHRvIGRvIHRoaW5ncyBzbyBkaWZmZXJlbnRseSwgY2xlYXIganVzdGlmaWNhdGlv biBhcmUgbmVjZXNzYXJ5Lgo+PiBmb3IgZzEyYS10b2Fjb2RlYy5jLCB3ZSBmaW5kIHRoZSB0b2Nv ZGVjIGNsb2NrIHNvdXJjZSBjYW4ndCBnZXQgdGhlIGNsb2NrCj4+IGlkIGZyb20gdGhlIHRkbSBC ZSBkZXZpY2UsCj4gVGhpcyBpcyBjbGVhcmx5IGRvY3VtZW50ZWQgbGltaXRhdGlvbiBvZiB0aGUg Y3VycmVudCB0by1hY29kZWMgZHJpdmVyOgo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3Nj bS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL3NvdW5kL3NvYy9tZXNv bi9nMTJhLXRvYWNvZGVjLmM/aD12Ni4xMy1yYzcjbjkxCj4KPiBXaGlsZSBpdCBpcyBhIGxpbWl0 YXRpb24sIGl0IGlzIGEgbWFuYWdlYWJsZSBvbmUgY29uc2lkZXJpbmcgdGhlIGFtb3VudAo+IG9m IG1hc3RlciBjbG9ja3MgYXZhaWxhYmxlIGFuZCB0aGUgZmFjdCB0aGUgbWFzdGVyIHNob3VsZCBi ZSBtYW51YWxseQo+IGFzc2luZ2VkIHRvIHRoZSBvdXRwdXQgcGFkLCB3aGljaCB5b3UgZGlkIG5v dCBkby4KPgo+IFNlZSB0aGUgdTIwMDoKPiBodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20v bGludXgva2VybmVsL2dpdC90b3J2YWxkcy9saW51eC5naXQvdHJlZS9hcmNoL2FybTY0L2Jvb3Qv ZHRzL2FtbG9naWMvbWVzb24tZzEyYS11MjAwLmR0cz9oPXY2LjEzLXJjNyNuNTY5Cj4KPiBZb3Ug YXJlIG1vcmUgdGhhbiB3ZWxjb21lIHRvIGhlbHAgZml4IHRoaXMgbGltaXRhdGlvbiBpbiB0aGUg Y3VycmVudAo+IGRyaXZlciBidXQganVzdCBhZGRpbmcgYSBmb3JrIGlzIG5vdCBPSwo+Cj4gSSB3 b3VsZCBzdWdnZXN0IHRvIHN0YXJ0IHdpdGggd2hhdCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlIGFu ZCBtb3ZlIG9uIHRvCj4gZml4aW5nIHRoaXMgYXMgYSAybmQgc3RlcCwgaWYgeW91IHdhbnQgdG8u Cj4KPj4gYW5kIHNldCBpdCBieSB0aGUga2NvbnRyb2wgZnJvbSB1c2VyLCAgRm9yIGRpZmZlcmVu dCBzb2MgY2hpcHMsIFRoZQo+PiBrY29udHJvbCB2YWx1ZSBtYXliZSBkaWZmZXJlbnQsIFRoZSBr Y29udHJvbCBjb25maWd1cmF0aW9uIGRvZXNuJ3QgbG9vawo+PiB2ZXJ5IGZyaWVuZGx5IGZvciB1 c2VyCj4+Cj4+IHNvIHdlIHVzZSBkYXBtIHJvdXRlIHBhdGggdG8gbWFuYWdlIGl0LAo+PiBmZShm ZGRyKS0+YmUodGRtKS0+KHRvY29kZWMpLT4oY29kZWMpLCAgYW5kIHVzZSB0aGUgYXV4LWRldnMg dG8gcmVnaXN0ZXIsCj4+IGFuZCBzb3VuZCBjYXJkIG9ubHkgaW5jbHVkZSB0aGUKPj4KPj4gc291 bmQtZGFpID0gPCZ0ZG1pZl9hPgo+Pgo+PiBjb2RlYy0wIHsKPj4gICAgICAgICAgICAgICAgICBz b3VuZC1kYWkgPSA8JmFjb2RlYz47Cj4+ICAgfTsKPj4KPj4gYW5kIG5vdCBpbmNsdWRlCj4+Cj4+ IGNvZGVjLTEgewo+PiAgICAgICAgICAgICAgICAgIHNvdW5kLWRhaSA9IDwmdG9hY29kZWM+Owo+ PiAgIH07Cj4+Cj4+IHdoZW4gdGRtIHdvcmssIG9ubHkgY29ubmVjdCB0aGUgdG9jb2RlYyBwYXRo Cj4+Cj4+ICAgIlRETV9BIFBsYXliYWNrIiAtPiJUT0FDT0RFQyBURE1BIi0+IlRPQUNPREVDIElO UFVUIFNSQyIKPj4KPj4gaXRlcmF0ZSBpdCBmaW5kIHRoZSBiZSBkZXZpY2UgLGFuZCBnZXQgdGhl IHN0cnVjdCBheGdfdGRtX3N0cmVhbSwgc28gd2UgY2FuCj4+IGdldCB0aGUgdGRtIGNsb2NrIGlk Cj4+Cj4+IFRha2UgaW50byBhY2NvdW50IGJlaGF2aW9yYWwgZGlmZmVyZW5jZXMsIHdlIGFkZCBu ZXcgdG9jb2RlYyBkcml2ZXIKPj4gZm9yIHM0Cj4gU3RpbGwgbm90IHNlZWluZyBzdWZmaWNpZW50 IHJlYXNvbiB0byBtYWtlIGFub3RoZXIgZHJpdmVyLgppdCBpcyBhIGdvb2QgaWRlYSwgaSB3aWxs IGFkZCB0aGUgY2hhbmdlIGZvciBzNCBiYXNlIG9uIGcxMmEtdG9hY29kZWMuYwo+Cj4+Pj4gQEAg LTAsMCArMSwzNzYgQEAKPj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IChHUEwtMi4w LW9ubHkgT1IgTUlUKQo+Pj4+ICsvKgo+Pj4+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjMgQW1sb2dp YywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkCj4+Pj4gKyAqLwo+Pj4+ICsKPj4+PiArI2luY2x1 ZGUgPGxpbnV4L21vZHVsZS5oPgo+Pj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfcGxhdGZvcm0uaD4K Pj4+PiArI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPgo+Pj4+ICsjaW5jbHVkZSA8c291bmQvc29j Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxzb3VuZC9zb2MtZGFpLmg+Cj4+Pj4gKyNpbmNsdWRlIDxsaW51 eC9pbml0Lmg+Cj4+Pj4gKyNpbmNsdWRlIDxsaW51eC9rZXJuZWwuaD4KPj4+PiArI2luY2x1ZGU8 bGludXgva3N0cnRveC5oPgo+Pj4+ICsjaW5jbHVkZSA8bGludXgvY2xrLXByb3ZpZGVyLmg+Cj4+ Pj4gKyNpbmNsdWRlIDxsaW51eC9yZXNldC5oPgo+Pj4+ICsjaW5jbHVkZSAiYXhnLXRkbS5oIgo+ Pj4+ICsKPj4+PiArI2RlZmluZSBUT0FDT0RFQ19DVFJMMCAgICAgICAgICAgICAgICAgICAgICAg MHgwCj4+Pj4gKwo+Pj4+ICsjZGVmaW5lIENUUkwwX0VOQUJMRV9TSElGVCAgICAgICAgICAgMzEK Pj4+PiArI2RlZmluZSBDVFJMMF9CQ0xLX0VOQUJMRV9TSElGVCAgICAgICAgICAgICAgMzAKPj4+ PiArI2RlZmluZSBDVFJMMF9NQ0xLX0VOQUJMRV9TSElGVCAgICAgICAgICAgICAgMjkKPj4+PiAr I2RlZmluZSBDVFJMMF9CTEtfQ0FQX0lOVl9TSElGVCAgICAgICAgICAgICAgOQo+Pj4+ICsKPj4+ PiArI2RlZmluZSBURE1fSUZBQ0UgMAo+Pj4+ICsjZGVmaW5lIFRETV9BX1BBRCAwCj4+Pj4gKyNk ZWZpbmUgVERNX0JfUEFEIDEKPj4+PiArI2RlZmluZSBURE1fQ19QQUQgMgo+Pj4+ICsKPj4+PiAr c3RydWN0IHRvYWNvZGVjIHsKPj4+PiArICAgICBzdHJ1Y3QgcmVnbWFwX2ZpZWxkICpmaWVsZF9k YXRfc2VsOwo+Pj4+ICsgICAgIHN0cnVjdCByZWdtYXBfZmllbGQgKmZpZWxkX2xyY2xrX3NlbDsK Pj4+PiArICAgICBzdHJ1Y3QgcmVnbWFwX2ZpZWxkICpmaWVsZF9iY2xrX3NlbDsKPj4+PiArICAg ICBzdHJ1Y3QgcmVnbWFwX2ZpZWxkICpmaWVsZF9tY2xrX3NlbDsKPj4+PiArfTsKPj4+PiArCj4+ Pj4gK3N0cnVjdCB0b2Fjb2RlY19tYXRjaF9kYXRhIHsKPj4+PiArICAgICBjb25zdCBzdHJ1Y3Qg c25kX3NvY19jb21wb25lbnRfZHJpdmVyICpjb21wb25lbnRfZHJ2Owo+Pj4+ICsgICAgIGNvbnN0 IHN0cnVjdCByZWdfZmllbGQgZmllbGRfZGF0X3NlbDsKPj4+PiArICAgICBjb25zdCBzdHJ1Y3Qg cmVnX2ZpZWxkIGZpZWxkX2xyY2xrX3NlbDsKPj4+PiArICAgICBjb25zdCBzdHJ1Y3QgcmVnX2Zp ZWxkIGZpZWxkX2JjbGtfc2VsOwo+Pj4+ICsgICAgIGNvbnN0IHN0cnVjdCByZWdfZmllbGQgZmll bGRfbWNsa19zZWw7Cj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHJl Z21hcF9jb25maWcgdG9jb2RlY19yZWdtYXBfY2ZnID0gewo+Pj4+ICsgICAgIC5yZWdfYml0cyAg ICAgICA9IDMyLAo+Pj4+ICsgICAgIC52YWxfYml0cyAgICAgICA9IDMyLAo+Pj4+ICsgICAgIC5y ZWdfc3RyaWRlICAgICA9IDQsCj4+Pj4gKyAgICAgLm1heF9yZWdpc3RlciAgID0gMHgxLAo+Pj4+ ICt9Owo+Pj4+ICsKPj4+PiArI2RlZmluZSBTNF9MQU5FX09GRlNFVCA4Cj4+Pj4gKwo+Pj4+ICtz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHM0X3RvY29kZWNfbGFuZV9zZWxfdGV4dHNbXSA9IHsK Pj4+PiArICAgICAiTGFuZTAiLCAiTGFuZTEiLCAiTGFuZTIiLCAiTGFuZTMiLCAiTGFuZTQiLCAi TGFuZTUiLCAiTGFuZTYiLCAiTGFuZTciCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IHNvY19lbnVtIHM0X3RvY29kZWNfbGFuZV9zZWxfZW51bSA9Cj4+Pj4gKyAgICAg U09DX0VOVU1fU0lOR0xFKFNORF9TT0NfTk9QTSwgMCwgQVJSQVlfU0laRShzNF90b2NvZGVjX2xh bmVfc2VsX3RleHRzKSwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgczRfdG9jb2RlY19sYW5l X3NlbF90ZXh0cyk7Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHNuZF9rY29udHJv bF9uZXcgczRfdG9jb2RlY19sYW5lX3NlbCA9Cj4+Pj4gKyAgICAgU09DX0RBUE1fRU5VTSgiVE9D T0RFQyBMQU5FIFNFTCIsIHM0X3RvY29kZWNfbGFuZV9zZWxfZW51bSk7Cj4+Pj4gKwo+Pj4+ICtz dGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHM0X3RvY29kZWNfc3JjX3NlbF90ZXh0c1tdID0gewo+ Pj4+ICsgICAgICJURE1BIiwgIlRETUIiLCAiVERNQyIKPj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgc29jX2VudW0gczRfdG9jb2RlY19zcmNfc2VsX2VudW0gPQo+Pj4+ ICsgICAgIFNPQ19FTlVNX1NJTkdMRShTTkRfU09DX05PUE0sIDAsIEFSUkFZX1NJWkUoczRfdG9j b2RlY19zcmNfc2VsX3RleHRzKSwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgczRfdG9jb2Rl Y19zcmNfc2VsX3RleHRzKTsKPj4+PiArCj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2tj b250cm9sX25ldyBzNF90b2NvZGVjX3NyY19zZWwgPQo+Pj4+ICsgICAgIFNPQ19EQVBNX0VOVU0o IlRPQ09ERUMgU0VMIiwgczRfdG9jb2RlY19zcmNfc2VsX2VudW0pOwo+Pj4+ICsKPj4+PiArc3Rh dGljIGNvbnN0IHN0cnVjdCBzbmRfa2NvbnRyb2xfbmV3IHM0X3RvYWNvZGVjX291dF9lbmFibGUg PQo+Pj4+ICsgICAgIFNPQ19EQVBNX1NJTkdMRV9BVVRPRElTQUJMRSgiU3dpdGNoIiwgVE9BQ09E RUNfQ1RSTDAsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENUUkwwX0VO QUJMRV9TSElGVCwgMSwgMCk7Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFp ICp0b2NvZGVjX3RkbV9nZXRfYWhlYWRfYmUoc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgKncp Cj4+Pj4gK3sKPj4+PiArICAgICBzdHJ1Y3Qgc25kX3NvY19kYXBtX3BhdGggKnA7Cj4+Pj4gKyAg ICAgc3RydWN0IHNuZF9zb2NfZGFpICpiZTsKPj4+PiArCj4+Pj4gKyAgICAgc25kX3NvY19kYXBt X3dpZGdldF9mb3JfZWFjaF9zb3VyY2VfcGF0aCh3LCBwKSB7Cj4+Pj4gKyAgICAgICAgICAgICBp ZiAoIXAtPmNvbm5lY3QpCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4+ ICsgICAgICAgICAgICAgaWYgKHAtPnNvdXJjZS0+aWQgPT0gc25kX3NvY19kYXBtX2RhaV9pbikK Pj4+PiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzdHJ1Y3Qgc25kX3NvY19kYWkgKilw LT5zb3VyY2UtPnByaXY7Cj4+Pj4gKyAgICAgICAgICAgICBiZSA9IHRvY29kZWNfdGRtX2dldF9h aGVhZF9iZShwLT5zb3VyY2UpOwo+Pj4+ICsgICAgICAgICAgICAgaWYgKGJlICYmIGJlLT5pZCA9 PSBURE1fSUZBQ0UpCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiZTsKPj4+PiAr ICAgICB9Cj4+Pj4gKyAgICAgcmV0dXJuIE5VTEw7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRp YyB1bnNpZ25lZCBpbnQgYW1sX3NpbXBsZV9zdHJ0b3VsbChjb25zdCBjaGFyICpjcCkKPj4+PiAr ewo+Pj4+ICsgICAgIHVuc2lnbmVkIGludCByZXN1bHQgPSAwOwo+Pj4+ICsgICAgIHVuc2lnbmVk IGludCB2YWx1ZSA9IDA7Cj4+Pj4gKyAgICAgdW5zaWduZWQgaW50IGxlbiA9IHN0cmxlbihjcCk7 Cj4+Pj4gKwo+Pj4+ICsgICAgIHdoaWxlIChsZW4gIT0gMCkgewo+Pj4+ICsgICAgICAgICAgICAg bGVuLS07Cj4+Pj4gKyAgICAgICAgICAgICB2YWx1ZSA9IGlzZGlnaXQoKmNwKTsKPj4+PiArICAg ICAgICAgICAgIGlmICh2YWx1ZSkgewo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9 ICpjcCAtICcwJzsKPj4+PiArICAgICAgICAgICAgIH0gZWxzZSB7Cj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgIGNwKys7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwo+Pj4+ ICsgICAgICAgICAgICAgfQo+Pj4+ICsgICAgICAgICAgICAgY3ArKzsKPj4+PiArICAgICAgICAg ICAgIHJlc3VsdCA9IHJlc3VsdCAqIDEwICsgdmFsdWU7Cj4+Pj4gKyAgICAgfQo+Pj4+ICsgICAg IHJldHVybiByZXN1bHQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQgYW1sX2dldF9j bGtfaWQoY29uc3QgY2hhciAqbmFtZSkKPj4+PiArewo+Pj4+ICsgICAgIGludCBjbGtfaWQgPSAw Owo+Pj4+ICsKPj4+PiArICAgICBpZiAoc3Ryc3RyKG5hbWUsICJtc3RfYSIpKQo+Pj4+ICsgICAg ICAgICAgICAgY2xrX2lkID0gMDsKPj4+PiArICAgICBlbHNlIGlmIChzdHJzdHIobmFtZSwgIm1z dF9iIikpCj4+Pj4gKyAgICAgICAgICAgICBjbGtfaWQgPSAxOwo+Pj4+ICsgICAgIGVsc2UgaWYg KHN0cnN0cihuYW1lLCAibXN0X2MiKSkKPj4+PiArICAgICAgICAgICAgIGNsa19pZCA9IDI7Cj4+ Pj4gKyAgICAgZWxzZSBpZiAoc3Ryc3RyKG5hbWUsICJtc3RfZCIpKQo+Pj4+ICsgICAgICAgICAg ICAgY2xrX2lkID0gMzsKPj4+PiArICAgICBlbHNlIGlmIChzdHJzdHIobmFtZSwgIm1zdF9lIikp Cj4+Pj4gKyAgICAgICAgICAgICBjbGtfaWQgPSA0Owo+Pj4+ICsgICAgIGVsc2UgaWYgKHN0cnN0 cihuYW1lLCAibXN0X2YiKSkKPj4+PiArICAgICAgICAgICAgIGNsa19pZCA9IDU7Cj4+Pj4gKwo+ Pj4+ICsgICAgIHJldHVybiBjbGtfaWQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQg YW1sX3RvY29kZWNfc2VsX3NldChzdHJ1Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdykKPj4+PiAr ewo+Pj4+ICsgICAgIHN0cnVjdCBzbmRfc29jX2RhaSAqYmU7Cj4+Pj4gKyAgICAgc3RydWN0IGF4 Z190ZG1fc3RyZWFtICpzdHJlYW07Cj4+Pj4gKyAgICAgc3RydWN0IGF4Z190ZG1faWZhY2UgKmlm YWNlOwo+Pj4+ICsgICAgIHN0cnVjdCBzbmRfc29jX2NvbXBvbmVudCAqY29tcG9uZW50ID0gc25k X3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsKPj4+PiArICAgICBzdHJ1Y3QgdG9hY29k ZWMgKnByaXYgPSBzbmRfc29jX2NvbXBvbmVudF9nZXRfZHJ2ZGF0YShjb21wb25lbnQpOwo+Pj4+ ICsgICAgIHVuc2lnbmVkIGludCB0ZG1faWQgPSBURE1fQV9QQUQ7Cj4+Pj4gKyAgICAgY29uc3Qg Y2hhciAqZGFpX3dpZGdldF9uYW1lOwo+Pj4+ICsgICAgIHN0cnVjdCBzbmRfc29jX2RhcG1fcGF0 aCAqcDsKPj4+PiArICAgICB1bnNpZ25lZCBpbnQgbGFuZSA9IDA7Cj4+Pj4gKyAgICAgdW5zaWdu ZWQgaW50IHZhbCA9IDA7Cj4+Pj4gKyAgICAgc3RydWN0IGNsayAqc2NsaywgKm1jbGs7Cj4+Pj4g KyAgICAgY2hhciAqY2xrX25hbWU7Cj4+Pj4gKyAgICAgaW50IG1jbGtfaWQsIHNjbGtfaWQ7Cj4+ Pj4gKwo+Pj4+ICsgICAgIGJlID0gdG9jb2RlY190ZG1fZ2V0X2FoZWFkX2JlKHcpOwo+Pj4+ICsg ICAgIGlmICghYmUpIHsKPj4+PiArICAgICAgICAgICAgIGRldl9lcnIoY29tcG9uZW50LT5kZXYs ICIlcyBub3QgZmluZCB0aGUgYmVcbiIsIF9fZnVuY19fKTsKPj4+PiArICAgICAgICAgICAgIHJl dHVybiAtRUlOVkFMOwo+Pj4+ICsgICAgIH0KPj4+PiArICAgICBzdHJlYW0gPSBzbmRfc29jX2Rh aV9kbWFfZGF0YV9nZXRfcGxheWJhY2soYmUpOwo+Pj4+ICsgICAgIGlmICghc3RyZWFtKSB7Cj4+ Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKGNvbXBvbmVudC0+ZGV2LCAiJXMgbm90IGZpbmQgdGhl IHN0cmVhbVxuIiwgX19mdW5jX18pOwo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7 Cj4+Pj4gKyAgICAgfQo+Pj4+ICsgICAgIC8qd2UgbGlrZSB0byB1c2UgZGFpIGlkLCBidXQgaXQg aXMgZml4ZWQgdmFsKi8KPj4+PiArICAgICBkYWlfd2lkZ2V0X25hbWUgPSBiZS0+c3RyZWFtW1NO RFJWX1BDTV9TVFJFQU1fUExBWUJBQ0tdLndpZGdldC0+bmFtZTsKPj4+PiArICAgICBpZiAoc3Ry c3RyKGRhaV93aWRnZXRfbmFtZSwgIlRETV9BIikpCj4+Pj4gKyAgICAgICAgICAgICB0ZG1faWQg PSBURE1fQV9QQUQ7Cj4+Pj4gKyAgICAgZWxzZSBpZiAoc3Ryc3RyKGRhaV93aWRnZXRfbmFtZSwg IlRETV9CIikpCj4+Pj4gKyAgICAgICAgICAgICB0ZG1faWQgPSBURE1fQl9QQUQ7Cj4+Pj4gKyAg ICAgZWxzZSBpZiAoc3Ryc3RyKGRhaV93aWRnZXRfbmFtZSwgIlRETV9DIikpCj4+Pj4gKyAgICAg ICAgICAgICB0ZG1faWQgPSBURE1fQ19QQUQ7Cj4+Pj4gKyAgICAgc25kX3NvY19kYXBtX3dpZGdl dF9mb3JfZWFjaF9zb3VyY2VfcGF0aCh3LCBwKSB7Cj4+Pj4gKyAgICAgICAgICAgICBpZiAocC0+ Y29ubmVjdCAmJiBwLT5uYW1lKSB7Cj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIGxhbmUgPSBh bWxfc2ltcGxlX3N0cnRvdWxsKHAtPm5hbWUpOwo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB2 YWwgPSBsYW5lICsgdGRtX2lkICogUzRfTEFORV9PRkZTRVQ7Cj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIHJlZ21hcF9maWVsZF93cml0ZShwcml2LT5maWVsZF9kYXRfc2VsLCB2YWwpOwo+Pj4+ ICsgICAgICAgICAgICAgfQo+Pj4+ICsgICAgIH0KPj4+PiArICAgICBpZmFjZSA9IHN0cmVhbS0+ aWZhY2U7Cj4+Pj4gKyAgICAgbWNsayA9IGlmYWNlLT5tY2xrOwo+Pj4+ICsgICAgIHNjbGsgPSBp ZmFjZS0+c2NsazsKPj4+PiArICAgICBtY2xrX2lkID0gYW1sX2dldF9jbGtfaWQoX19jbGtfZ2V0 X25hbWUobWNsaykpOwo+Pj4+ICsgICAgIHNjbGtfaWQgPSBhbWxfZ2V0X2Nsa19pZChfX2Nsa19n ZXRfbmFtZShzY2xrKSk7Cj4+Pj4gKyAgICAgcmVnbWFwX2ZpZWxkX3dyaXRlKHByaXYtPmZpZWxk X21jbGtfc2VsLCBtY2xrX2lkKTsKPj4+PiArICAgICByZWdtYXBfZmllbGRfd3JpdGUocHJpdi0+ ZmllbGRfYmNsa19zZWwsIHNjbGtfaWQpOwo+Pj4+ICsgICAgIHJlZ21hcF9maWVsZF93cml0ZShw cml2LT5maWVsZF9scmNsa19zZWwsIHNjbGtfaWQpOwo+Pj4+ICsKPj4+PiArICAgICByZXR1cm4g MDsKPj4+PiArfQo+Pj4+ICsKPj4+PiArc3RhdGljIGludCB0b2NvZGVjX3NlbF9ldmVudChzdHJ1 Y3Qgc25kX3NvY19kYXBtX3dpZGdldCAqdywKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICBzdHJ1Y3Qgc25kX2tjb250cm9sICpjb250cm9sLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgIGludCBldmVudCkKPj4+PiArewo+Pj4+ICsgICAgIHN0cnVjdCBzbmRfc29jX2NvbXBv bmVudCAqY29tcG9uZW50ID0gc25kX3NvY19kYXBtX3RvX2NvbXBvbmVudCh3LT5kYXBtKTsKPj4+ PiArICAgICBpbnQgcmV0ID0gMDsKPj4+PiArCj4+Pj4gKyAgICAgc3dpdGNoIChldmVudCkgewo+ Pj4+ICsgICAgIGNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTVU6Cj4+Pj4gKyAgICAgICAgICAgICBy ZXQgPSBhbWxfdG9jb2RlY19zZWxfc2V0KHcpOwo+Pj4+ICsgICAgICAgICAgICAgYnJlYWs7Cj4+ Pj4gKwo+Pj4+ICsgICAgIGNhc2UgU05EX1NPQ19EQVBNX1BSRV9QTUQ6Cj4+Pj4gKyAgICAgICAg ICAgICBicmVhazsKPj4+PiArCj4+Pj4gKyAgICAgZGVmYXVsdDoKPj4+PiArICAgICAgICAgICAg IGRldl9lcnIoY29tcG9uZW50LT5kZXYsICJVbmV4cGVjdGVkIGV2ZW50ICVkXG4iLCBldmVudCk7 Cj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKPj4+PiArICAgICB9Cj4+Pj4gKwo+ Pj4+ICsgICAgIHJldHVybiByZXQ7Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBpbnQgdG9j b2RlY19jbGtfZW5hYmxlKHN0cnVjdCBzbmRfc29jX2RhcG1fd2lkZ2V0ICp3LAo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc25kX2tjb250cm9sICpjb250cm9sLAo+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXZlbnQpCj4+Pj4gK3sKPj4+PiArICAg ICBpbnQgcmV0ID0gMDsKPj4+PiArICAgICB1bnNpZ25lZCBpbnQgbWFzayA9IDAsIHZhbCA9IDA7 Cj4+Pj4gKyAgICAgc3RydWN0IHNuZF9zb2NfY29tcG9uZW50ICpjb21wb25lbnQgPSBzbmRfc29j X2RhcG1fdG9fY29tcG9uZW50KHctPmRhcG0pOwo+Pj4+ICsKPj4+PiArICAgICBzbmRfc29jX2Nv bXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRPQUNPREVDX0NUUkwwLAo+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEgPDwgQ1RSTDBfQkxLX0NBUF9JTlZfU0hJ RlQsIDEgPDwgQ1RSTDBfQkxLX0NBUF9JTlZfU0hJRlQpOwo+Pj4+ICsgICAgIHN3aXRjaCAoZXZl bnQpIHsKPj4+PiArICAgICBjYXNlIFNORF9TT0NfREFQTV9QUkVfUE1VOgo+Pj4+ICsgICAgICAg ICAgICAgbWFzayA9IDEgPDwgQ1RSTDBfTUNMS19FTkFCTEVfU0hJRlQgfCAxIDw8IENUUkwwX0JD TEtfRU5BQkxFX1NISUZUOwo+Pj4+ICsgICAgICAgICAgICAgdmFsID0gMSA8PCBDVFJMMF9NQ0xL X0VOQUJMRV9TSElGVCB8IDEgPDwgQ1RSTDBfQkNMS19FTkFCTEVfU0hJRlQ7Cj4+Pj4gKyAgICAg ICAgICAgICBzbmRfc29jX2NvbXBvbmVudF91cGRhdGVfYml0cyhjb21wb25lbnQsIFRPQUNPREVD X0NUUkwwLCBtYXNrLCB2YWwpOwo+Pj4+ICsgICAgICAgICAgICAgYnJlYWs7Cj4+Pj4gKyAgICAg Y2FzZSBTTkRfU09DX0RBUE1fUFJFX1BNRDoKPj4+PiArICAgICAgICAgICAgIG1hc2sgPSAxIDw8 IENUUkwwX01DTEtfRU5BQkxFX1NISUZUIHwgMSA8PCBDVFJMMF9CQ0xLX0VOQUJMRV9TSElGVDsK Pj4+PiArICAgICAgICAgICAgIHZhbCA9IDAgPDwgQ1RSTDBfTUNMS19FTkFCTEVfU0hJRlQgfCAw IDw8IENUUkwwX0JDTEtfRU5BQkxFX1NISUZUOwo+Pj4+ICsgICAgICAgICAgICAgc25kX3NvY19j b21wb25lbnRfdXBkYXRlX2JpdHMoY29tcG9uZW50LCBUT0FDT0RFQ19DVFJMMCwgbWFzaywgdmFs KTsKPj4+PiArICAgICAgICAgICAgIGJyZWFrOwo+Pj4+ICsgICAgIGRlZmF1bHQ6Cj4+Pj4gKyAg ICAgICAgICAgICBkZXZfZXJyKGNvbXBvbmVudC0+ZGV2LCAiVW5leHBlY3RlZCBldmVudCAlZFxu IiwgZXZlbnQpOwo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7Cj4+Pj4gKyAgICAg fQo+Pj4+ICsKPj4+PiArICAgICByZXR1cm4gcmV0Owo+Pj4+ICt9Cj4+Pj4gKwo+Pj4+ICtzdGF0 aWMgY29uc3Qgc3RydWN0IHNuZF9zb2NfZGFwbV93aWRnZXQgczRfdG9hY29kZWNfd2lkZ2V0c1td ID0gewo+Pj4+ICsgICAgIFNORF9TT0NfREFQTV9NVVhfRSgiTGFuZSBTUkMiLCBTTkRfU09DX05P UE0sIDAsIDAsCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICZzNF90b2NvZGVjX2xhbmVf c2VsLCB0b2NvZGVjX3NlbF9ldmVudCwKPj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgKFNO RF9TT0NfREFQTV9QUkVfUE1VIHwgU05EX1NPQ19EQVBNX1BSRV9QTUQpKSwKPj4+PiArICAgICBT TkRfU09DX0RBUE1fTVVYKCJJTlBVVCBTUkMiLCBTTkRfU09DX05PUE0sIDAsIDAsICZzNF90b2Nv ZGVjX3NyY19zZWwpLAo+Pj4+ICsgICAgIFNORF9TT0NfREFQTV9TV0lUQ0hfRSgiT1VUIEVOIiwg U05EX1NPQ19OT1BNLCAwLCAwLAo+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAmczRf dG9hY29kZWNfb3V0X2VuYWJsZSwgdG9jb2RlY19jbGtfZW5hYmxlLAo+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChTTkRfU09DX0RBUE1fUFJFX1BNVSB8IFNORF9TT0NfREFQTV9Q UkVfUE1EKSksCj4+Pj4gKyAgICAgU05EX1NPQ19EQVBNX0FJRl9JTigiVERNQSIsIE5VTEwsIDAs IFNORF9TT0NfTk9QTSwgMCwgMCksCj4+Pj4gKyAgICAgU05EX1NPQ19EQVBNX0FJRl9JTigiVERN QiIsIE5VTEwsIDAsIFNORF9TT0NfTk9QTSwgMCwgMCksCj4+Pj4gKyAgICAgU05EX1NPQ19EQVBN X0FJRl9JTigiVERNQyIsIE5VTEwsIDAsIFNORF9TT0NfTk9QTSwgMCwgMCksCj4+Pj4gKyAgICAg U05EX1NPQ19EQVBNX09VVF9EUlYoIkxhbmUwIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAw KSwKPj4+PiArICAgICBTTkRfU09DX0RBUE1fT1VUX0RSVigiTGFuZTEiLCBTTkRfU09DX05PUE0s IDAsIDAsIE5VTEwsIDApLAo+Pj4+ICsgICAgIFNORF9TT0NfREFQTV9PVVRfRFJWKCJMYW5lMiIs IFNORF9TT0NfTk9QTSwgMCwgMCwgTlVMTCwgMCksCj4+Pj4gKyAgICAgU05EX1NPQ19EQVBNX09V VF9EUlYoIkxhbmUzIiwgU05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKPj4+PiArICAgICBT TkRfU09DX0RBUE1fT1VUX0RSVigiTGFuZTQiLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDAp LAo+Pj4+ICsgICAgIFNORF9TT0NfREFQTV9PVVRfRFJWKCJMYW5lNSIsIFNORF9TT0NfTk9QTSwg MCwgMCwgTlVMTCwgMCksCj4+Pj4gKyAgICAgU05EX1NPQ19EQVBNX09VVF9EUlYoIkxhbmU2Iiwg U05EX1NPQ19OT1BNLCAwLCAwLCBOVUxMLCAwKSwKPj4+PiArICAgICBTTkRfU09DX0RBUE1fT1VU X0RSVigiTGFuZTciLCBTTkRfU09DX05PUE0sIDAsIDAsIE5VTEwsIDApLAo+Pj4+ICsgICAgIFNO RF9TT0NfREFQTV9PVVRQVVQoIlRETV9UT19BQ09ERUMiKSwKPj4+PiArfTsKPj4+PiArCj4+Pj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX3NvY19kYXBtX3JvdXRlIHM0X3RvY29kZWNfZGFwbV9y b3V0ZXNbXSA9IHsKPj4+PiArICAgICB7ICJJTlBVVCBTUkMiLCAiVERNQSIsICJURE1BIn0sCj4+ Pj4gKyAgICAgeyAiSU5QVVQgU1JDIiwgIlRETUIiLCAiVERNQiJ9LAo+Pj4+ICsgICAgIHsgIklO UFVUIFNSQyIsICJURE1DIiwgIlRETUMifSwKPj4+PiArICAgICB7ICJMYW5lMCIsIE5VTEwsICJJ TlBVVCBTUkMiIH0sCj4+Pj4gKyAgICAgeyAiTGFuZTEiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+ Pj4gKyAgICAgeyAiTGFuZTIiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+Pj4gKyAgICAgeyAiTGFu ZTMiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+Pj4gKyAgICAgeyAiTGFuZTQiLCBOVUxMLCAiSU5Q VVQgU1JDIn0sCj4+Pj4gKyAgICAgeyAiTGFuZTUiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+Pj4g KyAgICAgeyAiTGFuZTYiLCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+Pj4gKyAgICAgeyAiTGFuZTci LCBOVUxMLCAiSU5QVVQgU1JDIn0sCj4+Pj4gKyAgICAgeyAiTGFuZSBTUkMiLCAiTGFuZTAiLCAi TGFuZTAifSwKPj4+PiArICAgICB7ICJMYW5lIFNSQyIsICJMYW5lMSIsICJMYW5lMSJ9LAo+Pj4+ ICsgICAgIHsgIkxhbmUgU1JDIiwgIkxhbmUyIiwgIkxhbmUyIn0sCj4+Pj4gKyAgICAgeyAiTGFu ZSBTUkMiLCAiTGFuZTMiLCAiTGFuZTMifSwKPj4+PiArICAgICB7ICJMYW5lIFNSQyIsICJMYW5l NCIsICJMYW5lNCJ9LAo+Pj4+ICsgICAgIHsgIkxhbmUgU1JDIiwgIkxhbmU1IiwgIkxhbmU1In0s Cj4+Pj4gKyAgICAgeyAiTGFuZSBTUkMiLCAiTGFuZTYiLCAiTGFuZTYifSwKPj4+PiArICAgICB7 ICJMYW5lIFNSQyIsICJMYW5lNyIsICJMYW5lNyJ9LAo+Pj4+ICsgICAgIHsgIk9VVCBFTiIsICJT d2l0Y2giLCAiTGFuZSBTUkMifSwKPj4+PiArICAgICB7ICJURE1fVE9fQUNPREVDIiwgTlVMTCwg Ik9VVCBFTiJ9LAo+Pj4+ICsKPj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX3NvY19jb21wb25lbnRfZHJpdmVyIHM0X3RvY29kZWNfY29tcG9uZW50X2RydiA9IHsK Pj4+PiArICAgICAuZGFwbV93aWRnZXRzICAgICAgICAgICA9IHM0X3RvYWNvZGVjX3dpZGdldHMs Cj4+Pj4gKyAgICAgLm51bV9kYXBtX3dpZGdldHMgICAgICAgPSBBUlJBWV9TSVpFKHM0X3RvYWNv ZGVjX3dpZGdldHMpLAo+Pj4+ICsgICAgIC5kYXBtX3JvdXRlcyAgICAgICAgICAgID0gczRfdG9j b2RlY19kYXBtX3JvdXRlcywKPj4+PiArICAgICAubnVtX2RhcG1fcm91dGVzICAgICAgICA9IEFS UkFZX1NJWkUoczRfdG9jb2RlY19kYXBtX3JvdXRlcyksCj4+Pj4gK307Cj4+Pj4gKwo+Pj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IHRvYWNvZGVjX21hdGNoX2RhdGEgczRfdG9hY29kZWNfbWF0Y2hf ZGF0YSA9IHsKPj4+PiArICAgICAuY29tcG9uZW50X2RydiAgPSAmczRfdG9jb2RlY19jb21wb25l bnRfZHJ2LAo+Pj4+ICsgICAgIC5maWVsZF9kYXRfc2VsICA9IFJFR19GSUVMRChUT0FDT0RFQ19D VFJMMCwgMTYsIDIwKSwKPj4+PiArICAgICAuZmllbGRfbHJjbGtfc2VsID0gUkVHX0ZJRUxEKFRP QUNPREVDX0NUUkwwLCAxMiwgMTQpLAo+Pj4+ICsgICAgIC5maWVsZF9iY2xrX3NlbCA9IFJFR19G SUVMRChUT0FDT0RFQ19DVFJMMCwgNCwgNiksCj4+Pj4gKyAgICAgLmZpZWxkX21jbGtfc2VsID0g UkVHX0ZJRUxEKFRPQUNPREVDX0NUUkwwLCAwLCAyKSwKPj4+PiArfTsKPj4+PiArCj4+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIHM0X3RvY29kZWNfb2ZfbWF0Y2hbXSA9IHsK Pj4+PiArICAgICB7Cj4+Pj4gKyAgICAgICAgICAgICAuY29tcGF0aWJsZSA9ICJhbWxvZ2ljLHM0 LXRvY29kZWMiLAo+Pj4+ICsgICAgICAgICAgICAgLmRhdGEgPSAmczRfdG9hY29kZWNfbWF0Y2hf ZGF0YSwKPj4+PiArICAgICB9LCB7fQo+Pj4+ICt9Owo+Pj4+ICsKPj4+PiArTU9EVUxFX0RFVklD RV9UQUJMRShvZiwgczRfdG9jb2RlY19vZl9tYXRjaCk7Cj4+Pj4gKwo+Pj4+ICtzdGF0aWMgaW50 IHRvY29kZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4+PiArewo+Pj4+ ICsgICAgIGNvbnN0IHN0cnVjdCB0b2Fjb2RlY19tYXRjaF9kYXRhICpkYXRhOwo+Pj4+ICsgICAg IHN0cnVjdCBkZXZpY2UgKmRldiA9ICZwZGV2LT5kZXY7Cj4+Pj4gKyAgICAgc3RydWN0IHRvYWNv ZGVjICpwcml2Owo+Pj4+ICsgICAgIHZvaWQgX19pb21lbSAqcmVnczsKPj4+PiArICAgICBzdHJ1 Y3QgcmVnbWFwICptYXA7Cj4+Pj4gKyAgICAgaW50IHJldDsKPj4+PiArCj4+Pj4gKyAgICAgZGF0 YSA9IGRldmljZV9nZXRfbWF0Y2hfZGF0YShkZXYpOwo+Pj4+ICsgICAgIGlmICghZGF0YSkKPj4+ PiArICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgLUVOT0RFViwgImZhaWxl ZCB0byBtYXRjaCBkZXZpY2VcbiIpOwo+Pj4+ICsgICAgIHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2 LCBzaXplb2YoKnByaXYpLCBHRlBfS0VSTkVMKTsKPj4+PiArICAgICBpZiAoIXByaXYpCj4+Pj4g KyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKPj4+PiArCj4+Pj4gKyAgICAgcGxhdGZvcm1f c2V0X2RydmRhdGEocGRldiwgcHJpdik7Cj4+Pj4gKwo+Pj4+ICsgICAgIHJldCA9IGRldmljZV9y ZXNldChkZXYpOwo+Pj4+ICsgICAgIGlmIChyZXQpCj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4g cmV0Owo+Pj4+ICsKPj4+PiArICAgICByZWdzID0gZGV2bV9wbGF0Zm9ybV9pb3JlbWFwX3Jlc291 cmNlKHBkZXYsIDApOwo+Pj4+ICsgICAgIGlmIChJU19FUlIocmVncykpCj4+Pj4gKyAgICAgICAg ICAgICByZXR1cm4gUFRSX0VSUihyZWdzKTsKPj4+PiArCj4+Pj4gKyAgICAgbWFwID0gZGV2bV9y ZWdtYXBfaW5pdF9tbWlvKGRldiwgcmVncywgJnRvY29kZWNfcmVnbWFwX2NmZyk7Cj4+Pj4gKyAg ICAgaWYgKElTX0VSUihtYXApKQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIGRldl9lcnJfcHJv YmUoZGV2LCBQVFJfRVJSKG1hcCksICJmYWlsZWQgdG8gaW5pdCByZWdtYXBcbiIpOwo+Pj4+ICsK Pj4+PiArICAgICBwcml2LT5maWVsZF9kYXRfc2VsID0gZGV2bV9yZWdtYXBfZmllbGRfYWxsb2Mo ZGV2LCBtYXAsIGRhdGEtPmZpZWxkX2RhdF9zZWwpOwo+Pj4+ICsgICAgIGlmIChJU19FUlIocHJp di0+ZmllbGRfZGF0X3NlbCkpCj4+Pj4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwcml2 LT5maWVsZF9kYXRfc2VsKTsKPj4+PiArCj4+Pj4gKyAgICAgcHJpdi0+ZmllbGRfbHJjbGtfc2Vs ID0gZGV2bV9yZWdtYXBfZmllbGRfYWxsb2MoZGV2LCBtYXAsIGRhdGEtPmZpZWxkX2xyY2xrX3Nl bCk7Cj4+Pj4gKyAgICAgaWYgKElTX0VSUihwcml2LT5maWVsZF9scmNsa19zZWwpKQo+Pj4+ICsg ICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIocHJpdi0+ZmllbGRfbHJjbGtfc2VsKTsKPj4+PiAr Cj4+Pj4gKyAgICAgcHJpdi0+ZmllbGRfYmNsa19zZWwgPSBkZXZtX3JlZ21hcF9maWVsZF9hbGxv YyhkZXYsIG1hcCwgZGF0YS0+ZmllbGRfYmNsa19zZWwpOwo+Pj4+ICsgICAgIGlmIChJU19FUlIo cHJpdi0+ZmllbGRfYmNsa19zZWwpKQo+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIo cHJpdi0+ZmllbGRfYmNsa19zZWwpOwo+Pj4+ICsKPj4+PiArICAgICBwcml2LT5maWVsZF9tY2xr X3NlbCA9IGRldm1fcmVnbWFwX2ZpZWxkX2FsbG9jKGRldiwgbWFwLCBkYXRhLT5maWVsZF9tY2xr X3NlbCk7Cj4+Pj4gKyAgICAgaWYgKElTX0VSUihwcml2LT5maWVsZF9tY2xrX3NlbCkpCj4+Pj4g KyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwcml2LT5maWVsZF9tY2xrX3NlbCk7Cj4+Pj4g Kwo+Pj4+ICsgICAgIHJldHVybiBkZXZtX3NuZF9zb2NfcmVnaXN0ZXJfY29tcG9uZW50KGRldiwK Pj4+PiArICAgICAgICAgICAgICAgICAgICAgZGF0YS0+Y29tcG9uZW50X2RydiwgTlVMTCwgMCk7 Cj4+Pj4gK30KPj4+PiArCj4+Pj4gK3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRvY29k ZWNfcGRydiA9IHsKPj4+PiArICAgICAucHJvYmUgPSB0b2NvZGVjX3Byb2JlLAo+Pj4+ICsgICAg IC5kcml2ZXIgPSB7Cj4+Pj4gKyAgICAgICAgICAgICAubmFtZSA9ICJzNC10b2NvZGVjIiwKPj4+ PiArICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IHM0X3RvY29kZWNfb2ZfbWF0Y2gsCj4+ Pj4gKyAgICAgfSwKPj4+PiArfTsKPj4+PiArCj4+Pj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIo dG9jb2RlY19wZHJ2KTsKPj4+PiArCj4+Pj4gK01PRFVMRV9ERVNDUklQVElPTigiQW1sb2dpYyB0 byBjb2RlYyBkcml2ZXIiKTsKPj4+PiArTU9EVUxFX0FVVEhPUigiamllYmluZy5jaGVuQGFtbG9n aWMuY29tIik7Cj4+Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsKPj4+PiBkaWZmIC0tZ2l0IGEv c291bmQvc29jL21lc29uL3Q5MDE1LmMgYi9zb3VuZC9zb2MvbWVzb24vdDkwMTUuYwo+Pj4+IGlu ZGV4IDU3MWY2NTc4OGM1OTIwNTBhYmRjYTI2NGY1NjU2ZDRkMWE5ZDk5ZjYuLjJkYjFjZDE4Y2Yy Y2VhNTA3ZjNkNzI4MjA1NGUwM2Q5NTM1ODY2NDggMTAwNjQ0Cj4+Pj4gLS0tIGEvc291bmQvc29j L21lc29uL3Q5MDE1LmMKPj4+PiArKysgYi9zb3VuZC9zb2MvbWVzb24vdDkwMTUuYwo+Pj4+IEBA IC04OSwxMCArODksNyBAQCBzdGF0aWMgc3RydWN0IHNuZF9zb2NfZGFpX2RyaXZlciB0OTAxNV9k YWkgPSB7Cj4+Pj4gICAgICAgICAgICAgICAgIC5jaGFubmVsc19taW4gPSAxLAo+Pj4+ICAgICAg ICAgICAgICAgICAuY2hhbm5lbHNfbWF4ID0gMiwKPj4+PiAgICAgICAgICAgICAgICAgLnJhdGVz ID0gU05EUlZfUENNX1JBVEVfODAwMF85NjAwMCwKPj4+PiAtICAgICAgICAgICAgIC5mb3JtYXRz ID0gKFNORFJWX1BDTV9GTVRCSVRfUzggfAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg U05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg U05EUlZfUENNX0ZNVEJJVF9TMjBfTEUgfAo+Pj4+IC0gICAgICAgICAgICAgICAgICAgICAgICAg U05EUlZfUENNX0ZNVEJJVF9TMjRfTEUpLAo+Pj4+ICsgICAgICAgICAgICAgLmZvcm1hdHMgPSAo U05EUlZfUENNX0ZNVEJJVF9TMTZfTEUgfCBTTkRSVl9QQ01fRk1UQklUX1MzMl9MRSksCj4+PiBB Z2FpbiwgbWl4ZWQgdXAgY2hhbmdlcyB3aXRoIHplcm8ganVzdGlmaWNhdGlvbi4KPj4+Cj4+PiBU aGlzIGRyb3BzIFM4IGFuZCBTMTYgZm9ybWF0IHN1cHBvcnQgZm9yIHRoZSBleGlzdGluZyBTb0Nz IChzdWNoIGFzIEdYTCkKPj4+IHdoaWNoIGlzIGtub3duIHRvIHdvcmsgYW5kIGFkZCBTMzIgc3Vw cG9ydCBvbiBhbiBIVyBkb2N1bWVudGVkIGFzIDI0Yml0cwo+Pj4gb25seS4gQ2FuIHlvdSBleHBs YWluID8KPj4+Cj4+Pj4gICAgICAgICB9LAo+Pj4+ICAgICAgICAgLm9wcyA9ICZ0OTAxNV9kYWlf b3BzLAo+Pj4+ICAgIH07Cj4+PiAtLQo+Pj4gSmVyb21lCj4gLS0KPiBKZXJvbWUKCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmxpbnV4LWFtbG9naWMgbWFp bGluZyBsaXN0CmxpbnV4LWFtbG9naWNAbGlzdHMuaW5mcmFkZWFkLm9yZwpodHRwOi8vbGlzdHMu aW5mcmFkZWFkLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2xpbnV4LWFtbG9naWMK