Received: by 2002:a05:7412:b995:b0:f9:9502:5bb8 with SMTP id it21csp8082438rdb; Thu, 4 Jan 2024 19:21:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IE+qt50t8wj3Mj0tavbH79bXFV85SGdoT0sLJa0yQv6SpT1q0ziCUI61rsf0M/yAfV+6CxP X-Received: by 2002:a05:6512:38cd:b0:50e:7931:cb83 with SMTP id p13-20020a05651238cd00b0050e7931cb83mr671288lft.127.1704424891255; Thu, 04 Jan 2024 19:21:31 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1704424891; cv=pass; d=google.com; s=arc-20160816; b=f7EH0frqLvffeCjANbLF6DrA/3LbaG/qP3HpE3vx2fAJ8x7D/7/HKLWtS+Fo/FrYe5 lKgiCd8U/h8MLwGcrH85R65aZLBYsUxdqrQeMdroX93qZNX2IXhGtnCxaLXkQlcMNgaM sIJWJXWo/VYuIUUYUfGKggwNx+LYSXoHb8Bv0j/lZkxKqjOK3Kkt/KgXYhtOXRXNLgiq qHjNyZZTLWSXNTx9did6+RZyIQ3jFljci7kqsBb4YJFEbGblk2zzHDP5ppPoDkUQL7zZ 08shdruqDwDcuV9rwXG+CP0juWxMmSilIQ2faq3taqJN2TFF646TXfxlwrAGKEGciuXG nqAw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=mime-version:list-unsubscribe:list-subscribe:list-id:precedence :content-transfer-encoding:content-language:accept-language :in-reply-to:references:message-id:date:thread-index:thread-topic :subject:cc:to:from:dkim-signature; bh=7I+y1LoK/VwCsLFUYJ+JLOUxz7EWsfEv9DUxLpzMzBY=; fh=bdXshtPnQpuJkmpGlK/Hostb00N1Unv8bxum3uaZV9E=; b=fnY06pB3X/UKy6jvMZahiXUbtvyOcNYpO1JlgtzuZrD4DkoneZjp0f8W7G20cxWPH8 9jr9k+EhX2nTLvFAZqb9PkGQYIbvLYCHSaGQosPJcJeT/TF+GQhWFGWZQl/nnZi7FpZ4 Ss0VccFBHQ0vcUYY6fL2O6oQZR6jSKUa/uNtGRfaInW27gR5zls2aX+n1X5FdETcscKT +ZOyh2EK3FhG1neRQntL46m2O6hAOMK6Mk4KVh2OjM2Zoz9Q71U/naZoGem6to9CBcu1 6VYH2/KGn++Wz9gyOITO0/Pb0HxUowNzipn6OflbiuDzMa6RVfXZFQqNat4QF/G4/Z0q ykBg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=T69G0EiK; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel+bounces-17449-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-17449-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from am.mirrors.kernel.org (am.mirrors.kernel.org. [2604:1380:4601:e00::3]) by mx.google.com with ESMTPS id h6-20020a1709066d8600b00a233a71b898si254106ejt.76.2024.01.04.19.21.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jan 2024 19:21:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-17449-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) client-ip=2604:1380:4601:e00::3; Authentication-Results: mx.google.com; dkim=pass header.i=@nxp.com header.s=selector2 header.b=T69G0EiK; arc=pass (i=1 spf=pass spfdomain=nxp.com dkim=pass dkdomain=nxp.com dmarc=pass fromdomain=nxp.com); spf=pass (google.com: domain of linux-kernel+bounces-17449-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:4601:e00::3 as permitted sender) smtp.mailfrom="linux-kernel+bounces-17449-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 4F9541F22DE7 for ; Fri, 5 Jan 2024 03:21:30 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C41AB23D2; Fri, 5 Jan 2024 03:20:39 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=nxp.com header.i=@nxp.com header.b="T69G0EiK" X-Original-To: linux-kernel@vger.kernel.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04on2062.outbound.protection.outlook.com [40.107.6.62]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1E5E35396; Fri, 5 Jan 2024 03:20:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=nxp.com ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HIXEpj3iwZfDmJz5QUs8IGgQXxJ9rAN6GdRFQus3/V/GJLskBXJrk7n/4sC+SBisFfO8hi1u3a0WTXiBKeomUoX/wX5geohmG+F1DqqDBQyh+T2vrBtTgNR8pnPWDv1hTIuSmmc9N9vQN/4DlKMyEYUg6jV/BiSEpqzRDwoc5wfP3/e8D5SHjdP1tnN0E9UyaRFSHJacag6ZjbmFRafhWS3Ho4/HQR7ojziyCwlhdi1k56KiP7vStl8QmdOFv3OBoQU0bdoFJhzlb7RDrt26WpYT2oPxAjLxenSl79YwrzN7Mzh3Ht3NR+HwzmgYX3tbwJmNfaZnyzYoAxNdcw6Xqw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=7I+y1LoK/VwCsLFUYJ+JLOUxz7EWsfEv9DUxLpzMzBY=; b=CgpJNK0gkszdb7gxFIAEhnAtsHq3KSkLbBt8phxzzcBIX6/Sn4QATbcqGFktgXPLrHDBJKxrV5p5uz/VZGkeCLnI0kfMf+FQuStvHeiNNORsReZ/FSdILh+I96fb5eE3uGWfnrStomdF+ka1ElzGNBSNMM/NU7HaNSpFgTwj7MXYadF9v5M7yqhjajgXa7fCImbzvdLveZ6cSe14jEgvGSQr2ILUAjbGovYVLRFkir4saGhSeIeQjtybl410bzvNYtmhwwU2URTuYgx/6NwmiwGRiAaPpwGTfZvKf6KvnIPbckThMerAto4Lom6dOP6G5rSAq39Q+Tl6gyJKQ45M0g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=7I+y1LoK/VwCsLFUYJ+JLOUxz7EWsfEv9DUxLpzMzBY=; b=T69G0EiKo/ljz1d+SMeMt2hHDnwtx4iYYZnPTdema90BXLNcHzHWHT1GwSbtbQWSDkAjApzv/uL5Gc+hWpsGXl855Ph/ykXKroeHqw82mqkwBwainpmvz6sHAx8/qc4Z+Rf9C3SCkCDZYl/3Rlo82zR5nNJEkzzPgNTny6ADFuc= Received: from PAXPR04MB9448.eurprd04.prod.outlook.com (2603:10a6:102:2b1::21) by DB9PR04MB8445.eurprd04.prod.outlook.com (2603:10a6:10:2cf::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7159.16; Fri, 5 Jan 2024 03:20:28 +0000 Received: from PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::e6e0:d026:3089:17d5]) by PAXPR04MB9448.eurprd04.prod.outlook.com ([fe80::e6e0:d026:3089:17d5%5]) with mapi id 15.20.7159.013; Fri, 5 Jan 2024 03:20:28 +0000 From: Sandor Yu To: Alexander Stein , "dmitry.baryshkov@linaro.org" , "andrzej.hajda@intel.com" , "neil.armstrong@linaro.org" , Laurent Pinchart , "jonas@kwiboo.se" , "jernej.skrabec@gmail.com" , "airlied@gmail.com" , "daniel@ffwll.ch" , "robh+dt@kernel.org" , "krzysztof.kozlowski+dt@linaro.org" , "shawnguo@kernel.org" , "s.hauer@pengutronix.de" , "festevam@gmail.com" , "vkoul@kernel.org" , "dri-devel@lists.freedesktop.org" , "devicetree@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , "linux-phy@lists.infradead.org" CC: "kernel@pengutronix.de" , dl-linux-imx , Oliver Brown , "sam@ravnborg.org" Subject: RE: [EXT] Re: [PATCH v11 6/7] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Thread-Topic: [EXT] Re: [PATCH v11 6/7] phy: freescale: Add DisplayPort PHY driver for i.MX8MQ Thread-Index: AQHaAMdLMSPb+4eQNkKcuJ4bI0+pD7BN8Q0AgGRQkWA= Date: Fri, 5 Jan 2024 03:20:28 +0000 Message-ID: References: <2101977.bB369e8A3T@steina-w> In-Reply-To: <2101977.bB369e8A3T@steina-w> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAXPR04MB9448:EE_|DB9PR04MB8445:EE_ x-ms-office365-filtering-correlation-id: 775a64c3-46c7-4168-168c-08dc0d9d443e x-ld-processed: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635,ExtAddr x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +x1nP+W5MUeC/3NJF6WYyG8nWLwDvJVdvEpH00lI8PdEZAnf0yXLTEh0sWWpzF1BUmb+NmXwQ9lVnXpU1MT4Nhk49rQNJZMMhybpgX6asYYdCq5BsiMIV26AuDoh5UdN03TJie4ZX0JZAdl/8pVBuQbxzCXTAzUv6SgcH+b8rm3Fh8Bkl7eN4bEpIAeyjBK0HwtFLdosi3406VuvqhUX90rhe9fve9j3H9YHIh1EH7pO26iTBj3Y6smv9SXHTgnvEQYYE9Wosmq/yheQaw1xSNDOi8we4Ve5Dk2wBh2FxUhdUoX4w1cXIak78kv53GFQwwnaukQN1TeZEb4BpMfMaEaMIyowR2rPFGnpB7sbfcy9Dr8oWESdm62QNh5saf3Zw5soUA8WWYDVU2VBC2+C5eg5R4N+emLMyr/3Q/6PNu/mniD5d+g9bZRDvOTbKNrwW1DqxfclpKXGudmImf8KLLZzKQ5nMP+E2NjnB3qbWm5sIYMG+rJl3ko2U7oIkrXvaOT/V7eT955b268+ULau02UWhFNDb4a9V0xQ9VWBwZT7UDVDl1VK1qE+N+kjuwp6KvjcOvipo56a0rt5Pd538JKTyNK+nQRQ6J2bVhVN62wUq5f7ds2dkFxDldr5r+Cz x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR04MB9448.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(366004)(136003)(346002)(396003)(39860400002)(376002)(230922051799003)(451199024)(186009)(1800799012)(64100799003)(26005)(7696005)(45080400002)(71200400001)(6506007)(9686003)(86362001)(55016003)(66574015)(83380400001)(8676002)(4326008)(52536014)(8936002)(316002)(54906003)(7416002)(30864003)(2906002)(5660300002)(44832011)(110136005)(33656002)(966005)(478600001)(76116006)(66946007)(64756008)(66446008)(66476007)(66556008)(122000001)(38100700002)(41300700001)(921011)(38070700009)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VHF5TEx3RHhDekw5eW5XRFBSNHJ4NENDTnJ5alBzMWxRdXA0YkdydkpkNGpx?= =?utf-8?B?aUZjbEYzcEtlRzV4WXEzaDc4aEpuYkxBMlljOENIUm4wYlJxOUpTcy9sWlEr?= =?utf-8?B?cjNhVlYzMEhPSk9vRWg2R1diMGNlc3NpYkE3bDNtdWVUazJjbGZBZSswSXRa?= =?utf-8?B?aHlmcTlsZlBEQTdmNHhOZUZtV0lVVGd5ZGJOcWlvWVgySnkvYzQvTTVFdmJt?= =?utf-8?B?Qm1ISXNJSU9jMXlzOVhMcVVMNjE1VWw2L3RrV01FY3hwU2dmMUw3eWw3WmlD?= =?utf-8?B?L2psaE5KYzNDUkZ6b0ZBNlpkSVhhb3ozaGtqbkVQU0RwTm1UeTZCeUlFZklj?= =?utf-8?B?d1M2M1BrV0dia2RWdjZydDBTN2o5MVVJUmVJclNGQjMrNmhxR0FOTWVwSVRq?= =?utf-8?B?WE9LcnM2UEV2bWgvMG9CaEhhdVFMb2ZkUGlNcFVmSlJWRitkL1Ara2c0bk9v?= =?utf-8?B?L2N5Ump0dWIyTXZYK0wydDFkeTN2ckhrK0RWay95SjB1b3pJa1dnZ0NFN1o2?= =?utf-8?B?RStJWkxDVmFYU2tFQW1kUjVTcHhwUHVrRWFzYzdxcm1YWU1Xa0doMUZIYkp1?= =?utf-8?B?ZmVEd1VCSm5nQmV5OGhhU0tCbnN4L3Z2R1JlcElMVkk5OVR3OUd1Um5JRmlY?= =?utf-8?B?eHNweGlnaFVub3lMeHRMc1NJZDlvZ2VWd09ablVTQzMyNVlwbU5UR1Z0RXhp?= =?utf-8?B?c2pYTlNPTFlLUHBCZXNoTDRsNHhWcDJsTkl0alpKNHJYMW9uckI5L2JzcVRo?= =?utf-8?B?QjFibU1GU0M3YzVGTGowaGYzckxOeHhvZGsxRDdYbG1YZ1JBYlprSzNlNG9I?= =?utf-8?B?Ny8wdDdJUkduUGJVazBJVU9MbHpjTUN0UDFqT2YrWVZaY2hNNE9vN2NNU3F1?= =?utf-8?B?R2lZZWRrdHFyZEtCTEN5N2gvak1YM1B1SUtReGMxZDNTMVRxMjhMZ0RlOGhi?= =?utf-8?B?bUZteW1CdlpPOWxKS2Z2RVQvZXo5SVhmc1RxeUI5NnZUNlZnVHF5RDZma2pI?= =?utf-8?B?SXVJRS9yU29TbGNHWTg2WXgzTlQ5WHNvMWJuMG9SbzFxei91QU5DWElFeDhM?= =?utf-8?B?dGV5TkxOYXNXd3hwNHhoMXJKaW9BaU5GNW9oWC9ZRVhXU0xpQWlQV0hIdjQ1?= =?utf-8?B?MjBuSUMvM21sQWVVaTJ2WXorNlU3c25VODg2N3hGZGhzVjVZVExmTW5WWXhZ?= =?utf-8?B?a1lKRTJyTVRvOUxpN2tqR2FhRWI4OTQvYUFkT2tNY0VGcm01Zm5EN0FsWGFW?= =?utf-8?B?UkVKMWgxYVdqN2N4KzJkbmRNQjFxVzlwSXlWRE95OVBsVlNSWW5LTXY4eTcy?= =?utf-8?B?bXFqS25NQTRRTGNaUjZpNlk4dGI1c0hLYlcwNG9BV1dHQUJqOUloYnFkRm8x?= =?utf-8?B?QVRQM1doemF2TWpYWjlsV3N5dnV2QWNmcU9HZUU2S3MzajRhSS9xZk1lc0dk?= =?utf-8?B?Wm1HekhQU0xzTEM0T3BCMWM3OXE2Qm9wem0vNFdwejNKQmo2SWVoSzR0NWZ5?= =?utf-8?B?Z3llZ0pIZy9qZXBTS2hva0xBeEZBY2ZJdDhMY2pRRlR2aThrZUI4UTMzSkNy?= =?utf-8?B?TjNqNWN0T2RjUHJEZ2w1MnZQMlNUYWRydTdPR2JpWjFPU256QzJtYldKVFNw?= =?utf-8?B?a3F2VnRRZk1xR2Z1ZHdnUG4rRlRUUE0zdmxmK3hVOVRtR25sWTE5UG9sZEdz?= =?utf-8?B?Q0VRY2lqbm14MlNxRWdJM0Vnb1F2UmlraTd0NVJqZTVqU3Jnd0RHT3NuV1NU?= =?utf-8?B?R1BmUzhDRm80SVJZenN1SmIyRW9ZaU9taTV1WWVGdnBhWXkrMkgrdWVjY0F0?= =?utf-8?B?YkR5dnlBc0dSbzdPdGdRTW9kREdJRWZvakdwcFRLRTlDc2pVRll3aTJyYm15?= =?utf-8?B?c0NDNVo5RmpRakdsanRDWHhGeDVDWDVXWW9DMnFCTzdUUzNHSGg5d2RYdXV2?= =?utf-8?B?VGZCbHZVTHhOd1BFdWpYb3RFMzZMUysrWmkxZEFZQUJ5c2ZsSmdQQ0trWkdQ?= =?utf-8?B?MWthM1p5WWhuUlZuMGFzWVhQNE9vSHgzVVltdUdmN00reDl4VTdGUWtDZEp0?= =?utf-8?B?VHBseCtCZ2pmeHRBaGpUM3NBNUNINjdYZTFLUjhpazRUWHpQY2NVaTB4eVhI?= =?utf-8?Q?FUdg=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAXPR04MB9448.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 775a64c3-46c7-4168-168c-08dc0d9d443e X-MS-Exchange-CrossTenant-originalarrivaltime: 05 Jan 2024 03:20:28.5595 (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: pdoGpmc9IQAVdlJzLPIDwC0EGF+wX8hcjILgfgrtxuk7X4syM3NXu/UNetyfkuONY63KNlDSMZ7T1llQp5V+jA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR04MB8445 SGkgQWxleGFuZGVyLA0KDQpUaGFua3MgZm9yIHlvdXIgY29tbWVudHMsDQoNCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogQWxleGFuZGVyIFN0ZWluIDxhbGV4YW5kZXIuc3Rl aW5AZXcudHEtZ3JvdXAuY29tPg0KPg0KPiBIaSBTYW5kb3IsDQo+DQo+IHRoYW5rcyBmb3IgdGhl IHBhdGNoLg0KPg0KPiBBbSBEaWVuc3RhZywgMTcuIE9rdG9iZXIgMjAyMywgMDk6MDQ6MDIgQ0VT VCBzY2hyaWViIFNhbmRvciBZdToNCj4gPiBBZGQgQ2FkZW5jZSBIRFAtVFggRGlzcGxheVBvcnQg UEhZIGRyaXZlciBmb3IgaS5NWDhNUQ0KPiA+DQo+ID4gQ2FkZW5jZSBIRFAtVFggUEhZIGNvdWxk IGJlIHB1dCBpbiBlaXRoZXIgRFAgbW9kZSBvciBIRE1JIG1vZGUgYmFzZSBvbg0KPiA+IHRoZSBj b25maWd1cmF0aW9uIGNob3Nlbi4NCj4gPiBEaXNwbGF5UG9ydCBQSFkgbW9kZSBpcyBjb25maWd1 cmF0ZWQgaW4gdGhlIGRyaXZlci4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IFNhbmRvciBZdSA8 U2FuZG9yLnl1QG54cC5jb20+DQo+ID4gLS0tDQo+ID4gdjktPnYxMToNCj4gPiAgKk5vIGNoYW5n ZS4NCj4gPg0KPiA+ICBkcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZyAgICAgICAgICAgICB8 ICAxMCArDQo+ID4gIGRyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZSAgICAgICAgICAgIHwg ICAxICsNCj4gPiAgZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWRwLmMgfCA3 MjANCj4gPiArKysrKysrKysrKysrKysrKysrKysrDQo+ID4gIDMgZmlsZXMgY2hhbmdlZCwgNzMx IGluc2VydGlvbnMoKykNCj4gPiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvcGh5L2ZyZWVz Y2FsZS9waHktZnNsLWlteDhtcS1kcC5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9w aHkvZnJlZXNjYWxlL0tjb25maWcNCj4gPiBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9LY29uZmln IGluZGV4IDg1Mzk1OGZiMmMwNjMuLmMzOTcwOWZkNzAwYWMNCj4gPiAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvS2NvbmZpZw0KPiA+ICsrKyBiL2RyaXZlcnMvcGh5L2Zy ZWVzY2FsZS9LY29uZmlnDQo+ID4gQEAgLTM1LDYgKzM1LDE2IEBAIGNvbmZpZyBQSFlfRlNMX0lN WDhNX1BDSUUNCj4gPiAgICAgICAgIEVuYWJsZSB0aGlzIHRvIGFkZCBzdXBwb3J0IGZvciB0aGUg UENJRSBQSFkgYXMgZm91bmQgb24NCj4gPiAgICAgICAgIGkuTVg4TSBmYW1pbHkgb2YgU09Dcy4N Cj4gPg0KPiA+ICtjb25maWcgUEhZX0ZTTF9JTVg4TVFfRFANCj4gPiArICAgICB0cmlzdGF0ZSAi RnJlZXNjYWxlIGkuTVg4TVEgRFAgUEhZIHN1cHBvcnQiDQo+ID4gKyAgICAgZGVwZW5kcyBvbiBP RiAmJiBIQVNfSU9NRU0NCj4gPiArICAgICBkZXBlbmRzIG9uIENPTU1PTl9DTEsNCj4gPiArICAg ICBzZWxlY3QgR0VORVJJQ19QSFkNCj4gPiArICAgICBzZWxlY3QgQ0ROU19NSERQX0hFTFBFUg0K PiA+ICsgICAgIGhlbHANCj4gPiArICAgICAgIEVuYWJsZSB0aGlzIHRvIHN1cHBvcnQgdGhlIENh ZGVuY2UgSERQVFggRFAgUEhZIGRyaXZlcg0KPiA+ICsgICAgICAgb24gaS5NWDhNUSBTT0MuDQo+ ID4gKw0KPiA+ICBlbmRpZg0KPiA+DQo+ID4gIGNvbmZpZyBQSFlfRlNMX0xZTlhfMjhHDQo+ID4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9NYWtlZmlsZQ0KPiA+IGIvZHJpdmVy cy9waHkvZnJlZXNjYWxlL01ha2VmaWxlIGluZGV4IGNlZGIzMjhiYzRkMjguLjQ3ZTUyODUyMDlm YTgNCj4gPiAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUN Cj4gPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvTWFrZWZpbGUNCj4gPiBAQCAtMSw0ICsx LDUgQEANCj4gPiAgIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5DQo+ID4g K29iai0kKENPTkZJR19QSFlfRlNMX0lNWDhNUV9EUCkgICAgICAgICAgICAgICs9DQo+IHBoeS1m c2wtaW14OG1xLWRwLm8NCj4gPiAgb2JqLSQoQ09ORklHX1BIWV9GU0xfSU1YOE1RX1VTQikgICAg ICs9IHBoeS1mc2wtaW14OG1xLXVzYi5vDQo+ID4gIG9iai0kKENPTkZJR19QSFlfTUlYRUxfTFZE U19QSFkpICAgICArPSBwaHktZnNsLWlteDhxbS1sdmRzLXBoeS5vDQo+ID4gIG9iai0kKENPTkZJ R19QSFlfTUlYRUxfTUlQSV9EUEhZKSAgICArPSBwaHktZnNsLWlteDgtbWlwaS1kcGh5Lm8NCj4g PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9waHkvZnJlZXNjYWxlL3BoeS1mc2wtaW14OG1xLWRwLmMN Cj4gPiBiL2RyaXZlcnMvcGh5L2ZyZWVzY2FsZS9waHktZnNsLWlteDhtcS1kcC5jIG5ldyBmaWxl IG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwMC4uNWYwZDdkYTE2YjQyMg0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3BoeS9mcmVlc2NhbGUvcGh5LWZzbC1p bXg4bXEtZHAuYw0KPiA+IEBAIC0wLDAgKzEsNzIwIEBADQo+ID4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkNCj4gPiArLyoNCj4gPiArICogQ2FkZW5jZSBIRFAtVFgg RGlzcGxheSBQb3J0IEludGVyZmFjZSAoRFApIFBIWSBkcml2ZXINCj4gPiArICoNCj4gPiArICog Q29weXJpZ2h0IChDKSAyMDIyLCAyMDIzIE5YUCBTZW1pY29uZHVjdG9yLCBJbmMuDQo+ID4gKyAq Lw0KPiA+ICsjaW5jbHVkZSA8YXNtL3VuYWxpZ25lZC5oPg0KPiA+ICsjaW5jbHVkZSA8ZHJtL2Jy aWRnZS9jZG5zLW1oZHAtaGVscGVyLmg+ICNpbmNsdWRlIDxsaW51eC9jbGsuaD4NCj4gPiArI2lu Y2x1ZGUgPGxpbnV4L2tlcm5lbC5oPiAjaW5jbHVkZSA8bGludXgvcGh5L3BoeS5oPiAjaW5jbHVk ZQ0KPiA+ICs8bGludXgvcGxhdGZvcm1fZGV2aWNlLmg+ICNpbmNsdWRlIDxsaW51eC9pby5oPiAj aW5jbHVkZQ0KPiA+ICs8bGludXgvaW9wb2xsLmg+DQo+ID4gKw0KPiA+ICsjZGVmaW5lIEFERFJf UEhZX0FGRSAweDgwMDAwDQo+ID4gKw0KPiA+ICsvKiBQSFkgcmVnaXN0ZXJzICovDQo+ID4gKyNk ZWZpbmUgQ01OX1NTTV9CSUFTX1RNUiAgICAgICAgICAgICAgICAgICAgIDB4MDAyMg0KPiA+ICsj ZGVmaW5lIENNTl9QTExTTTBfUExMRU5fVE1SICAgICAgICAgICAgICAgICAweDAwMjkNCj4gPiAr I2RlZmluZSBDTU5fUExMU00wX1BMTFBSRV9UTVIgICAgICAgICAgICAgICAgICAgICAgICAweDAw MmENCj4gPiArI2RlZmluZSBDTU5fUExMU00wX1BMTFZSRUZfVE1SICAgICAgICAgICAgICAgICAg ICAgICAweDAwMmINCj4gPiArI2RlZmluZSBDTU5fUExMU00wX1BMTExPQ0tfVE1SICAgICAgICAg ICAgICAgICAgICAgICAweDAwMmMNCj4gPiArI2RlZmluZSBDTU5fUExMU00wX1VTRVJfREVGX0NU UkwgICAgICAgICAgICAgMHgwMDJmDQo+ID4gKyNkZWZpbmUgQ01OX1BTTV9DTEtfQ1RSTCAgICAg ICAgICAgICAgICAgICAgIDB4MDA2MQ0KPiA+ICsjZGVmaW5lIENNTl9QTEwwX1ZDT0NBTF9TVEFS VCAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA4MQ0KPiA+ICsjZGVmaW5lIENNTl9QTEwwX1ZD T0NBTF9JTklUX1RNUiAgICAgICAgICAgICAweDAwODQNCj4gPiArI2RlZmluZSBDTU5fUExMMF9W Q09DQUxfSVRFUl9UTVIgICAgICAgICAgICAgMHgwMDg1DQo+ID4gKyNkZWZpbmUgQ01OX1BMTDBf SU5URElWICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDk0DQo+ID4gKyNkZWZpbmUg Q01OX1BMTDBfRlJBQ0RJViAgICAgICAgICAgICAgICAgICAgIDB4MDA5NQ0KPiA+ICsjZGVmaW5l IENNTl9QTEwwX0hJR0hfVEhSICAgICAgICAgICAgICAgICAgICAweDAwOTYNCj4gPiArI2RlZmlu ZSBDTU5fUExMMF9EU01fRElBRyAgICAgICAgICAgICAgICAgICAgMHgwMDk3DQo+ID4gKyNkZWZp bmUgQ01OX1BMTDBfU1NfQ1RSTDIgICAgICAgICAgICAgICAgICAgIDB4MDA5OQ0KPiA+ICsjZGVm aW5lIENNTl9JQ0FMX0lOSVRfVE1SICAgICAgICAgICAgICAgICAgICAweDAwYzQNCj4gPiArI2Rl ZmluZSBDTU5fSUNBTF9JVEVSX1RNUiAgICAgICAgICAgICAgICAgICAgMHgwMGM1DQo+ID4gKyNk ZWZpbmUgQ01OX1JYQ0FMX0lOSVRfVE1SICAgICAgICAgICAgICAgICAgIDB4MDBkNA0KPiA+ICsj ZGVmaW5lIENNTl9SWENBTF9JVEVSX1RNUiAgICAgICAgICAgICAgICAgICAweDAwZDUNCj4gPiAr I2RlZmluZSBDTU5fVFhQVUNBTF9JTklUX1RNUiAgICAgICAgICAgICAgICAgMHgwMGU0DQo+ID4g KyNkZWZpbmUgQ01OX1RYUFVDQUxfSVRFUl9UTVIgICAgICAgICAgICAgICAgIDB4MDBlNQ0KPiA+ ICsjZGVmaW5lIENNTl9UWFBEQ0FMX0lOSVRfVE1SICAgICAgICAgICAgICAgICAweDAwZjQNCj4g PiArI2RlZmluZSBDTU5fVFhQRENBTF9JVEVSX1RNUiAgICAgICAgICAgICAgICAgMHgwMGY1DQo+ ID4gKyNkZWZpbmUgQ01OX0lDQUxfQURKX0lOSVRfVE1SICAgICAgICAgICAgICAgICAgICAgICAg MHgwMTAyDQo+ID4gKyNkZWZpbmUgQ01OX0lDQUxfQURKX0lURVJfVE1SICAgICAgICAgICAgICAg ICAgICAgICAgMHgwMTAzDQo+ID4gKyNkZWZpbmUgQ01OX1JYX0FESl9JTklUX1RNUiAgICAgICAg ICAgICAgICAgIDB4MDEwNg0KPiA+ICsjZGVmaW5lIENNTl9SWF9BREpfSVRFUl9UTVIgICAgICAg ICAgICAgICAgICAweDAxMDcNCj4gPiArI2RlZmluZSBDTU5fVFhQVV9BREpfSU5JVF9UTVIgICAg ICAgICAgICAgICAgICAgICAgICAweDAxMGENCj4gPiArI2RlZmluZSBDTU5fVFhQVV9BREpfSVRF Ul9UTVIgICAgICAgICAgICAgICAgICAgICAgICAweDAxMGINCj4gPiArI2RlZmluZSBDTU5fVFhQ RF9BREpfSU5JVF9UTVIgICAgICAgICAgICAgICAgICAgICAgICAweDAxMGUNCj4gPiArI2RlZmlu ZSBDTU5fVFhQRF9BREpfSVRFUl9UTVIgICAgICAgICAgICAgICAgICAgICAgICAweDAxMGYNCj4g PiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZCSF9PVlJEICAgICAgICAgICAgICAgICAgICAgICAw eDAxYzANCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX0ZCTF9PVlJEICAgICAgICAgICAgICAg ICAgICAgICAweDAxYzENCj4gPiArI2RlZmluZSBDTU5fRElBR19QTEwwX09WUkQgICAgICAgICAg ICAgICAgICAgMHgwMWMyDQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9URVNUX01PREUgICAg ICAgICAgICAgICAgICAgICAgMHgwMWM0DQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdfUExMMF9WMklf VFVORSAgICAgICAgICAgICAgICAgICAgICAgMHgwMWM1DQo+ID4gKyNkZWZpbmUgQ01OX0RJQUdf UExMMF9DUF9UVU5FICAgICAgICAgICAgICAgICAgICAgICAgMHgwMWM2DQo+ID4gKyNkZWZpbmUg Q01OX0RJQUdfUExMMF9MRl9QUk9HICAgICAgICAgICAgICAgICAgICAgICAgMHgwMWM3DQo+ID4g KyNkZWZpbmUgQ01OX0RJQUdfUExMMF9QVEFUSVNfVFVORTEgICAgICAgICAgIDB4MDFjOA0KPiA+ ICsjZGVmaW5lIENNTl9ESUFHX1BMTDBfUFRBVElTX1RVTkUyICAgICAgICAgICAweDAxYzkNCj4g PiArI2RlZmluZSBDTU5fRElBR19IU0NMS19TRUwgICAgICAgICAgICAgICAgICAgMHgwMWUwDQo+ ID4gKyNkZWZpbmUgQ01OX0RJQUdfUEVSX0NBTF9BREogICAgICAgICAgICAgICAgIDB4MDFlYw0K PiA+ICsjZGVmaW5lIENNTl9ESUFHX0NBTF9DVFJMICAgICAgICAgICAgICAgICAgICAweDAxZWQN Cj4gPiArI2RlZmluZSBDTU5fRElBR19BQ1lBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAweDAxZmYNCj4gPiArI2RlZmluZSBYQ1ZSX1BTTV9SQ1RSTCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAweDQwMDENCj4gPiArI2RlZmluZSBYQ1ZSX1BTTV9DQUxfVE1SICAgICAgICAg ICAgICAgICAgICAgMHg0MDAyDQo+ID4gKyNkZWZpbmUgWENWUl9QU01fQTBJTl9UTVIgICAgICAg ICAgICAgICAgICAgIDB4NDAwMw0KPiA+ICsjZGVmaW5lIFRYX1RYQ0NfQ0FMX1NDTFJfTVVMVF8w ICAgICAgICAgICAgICAgICAgICAgIDB4NDA0Nw0KPiA+ICsjZGVmaW5lIFRYX1RYQ0NfQ1BPU1Rf TVVMVF8wMF8wICAgICAgICAgICAgICAgICAgICAgIDB4NDA0Yw0KPiA+ICsjZGVmaW5lIFhDVlJf RElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAgIDB4NDBlMA0KPiA+ICsjZGVm aW5lIFhDVlJfRElBR19QTExEUkNfQ1RSTCAgICAgICAgICAgICAgICAgICAgICAgIDB4NDBlMA0K PiA+ICsjZGVmaW5lIFhDVlJfRElBR19IU0NMS19TRUwgICAgICAgICAgICAgICAgICAweDQwZTEN Cj4gPiArI2RlZmluZSBYQ1ZSX0RJQUdfTEFORV9GQ01fRU5fTUdOX1RNUiAgICAgICAgICAgICAg ICAweDQwZjINCj4gPiArI2RlZmluZSBUWF9QU0NfQTAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgMHg0MTAwDQo+ID4gKyNkZWZpbmUgVFhfUFNDX0ExICAgICAgICAgICAgICAgICAgICAgICAg ICAgIDB4NDEwMQ0KPiA+ICsjZGVmaW5lIFRYX1BTQ19BMiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAweDQxMDINCj4gPiArI2RlZmluZSBUWF9QU0NfQTMgICAgICAgICAgICAgICAgICAgICAg ICAgICAgMHg0MTAzDQo+ID4gKyNkZWZpbmUgVFhfUkNWREVUX0VOX1RNUiAgICAgICAgICAgICAg ICAgICAgIDB4NDEyMg0KPiA+ICsjZGVmaW5lIFRYX1JDVkRFVF9TVF9UTVIgICAgICAgICAgICAg ICAgICAgICAweDQxMjMNCj4gPiArI2RlZmluZSBUWF9ESUFHX0JHUkVGX1BSRURSVl9ERUxBWSAg ICAgICAgICAgMHg0MWU3DQo+ID4gKyNkZWZpbmUgVFhfRElBR19CR1JFRl9QUkVEUlZfREVMQVkg ICAgICAgICAgIDB4NDFlNw0KPiA+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8wICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIDB4NDFmZg0KPiA+ICsjZGVmaW5lIFRYX0RJQUdfQUNZQV8xICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDNmZg0KPiA+ICsjZGVmaW5lIFRYX0RJQUdf QUNZQV8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDVmZg0KPiA+ICsjZGVmaW5l IFRYX0RJQUdfQUNZQV8zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDdmZg0KPiA+ ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR18xICAgICAgICAgICAgICAgICAgICAweDUwMjANCj4g PiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfMiAgICAgICAgICAgICAgICAgICAgMHg1MDIxDQo+ ID4gKyNkZWZpbmUgVFhfRElHX0NUUkxfUkVHXzEgICAgICAgICAgICAgICAgICAgIDB4NTAyMw0K PiA+ICsjZGVmaW5lIFRYX0RJR19DVFJMX1JFR18yICAgICAgICAgICAgICAgICAgICAweDUwMjQN Cj4gPiArI2RlZmluZSBUWERBX0NZQV9BVVhEQV9DWUEgICAgICAgICAgICAgICAgICAgMHg1MDI1 DQo+ID4gKyNkZWZpbmUgVFhfQU5BX0NUUkxfUkVHXzMgICAgICAgICAgICAgICAgICAgIDB4NTAy Ng0KPiA+ICsjZGVmaW5lIFRYX0FOQV9DVFJMX1JFR180ICAgICAgICAgICAgICAgICAgICAweDUw MjcNCj4gPiArI2RlZmluZSBUWF9BTkFfQ1RSTF9SRUdfNSAgICAgICAgICAgICAgICAgICAgMHg1 MDI5DQo+ID4gKyNkZWZpbmUgUlhfUFNDX0EwICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4 ODAwMA0KPiA+ICsjZGVmaW5lIFJYX1BTQ19DQUwgICAgICAgICAgICAgICAgICAgICAgICAgICAw eDgwMDYNCj4gPiArI2RlZmluZSBQSFlfSERQX01PREVfQ1RSTCAgICAgICAgICAgICAgICAgICAg MHhjMDA4DQo+ID4gKyNkZWZpbmUgUEhZX0hEUF9DTEtfQ1RMICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgMHhjMDA5DQo+ID4gKyNkZWZpbmUgUEhZX1BNQV9DTU5fQ1RSTDEgICAgICAgICAg ICAgICAgICAgIDB4YzgwMA0KPiA+ICsNCj4gPiArLyogUEhZX1BNQV9DTU5fQ1RSTDEgKi8NCj4g PiArI2RlZmluZSBDTUFfUkVGX0NMS19TRUxfTUFTSyAgICAgICAgICAgICAgICAgR0VOTUFTSyg2 LCA0KQ0KPiA+ICsjZGVmaW5lIENNQV9SRUZfQ0xLX1JDVl9FTl9NQVNLICAgICAgICAgICAgICAg ICAgICAgIEJJVCgzKQ0KPiA+ICsjZGVmaW5lIENNQV9SRUZfQ0xLX1JDVl9FTiAgICAgICAgICAg ICAgICAgICAxDQo+ID4gKw0KPiA+ICsvKiBQSFlfSERQX0NMS19DVEwgKi8NCj4gPiArI2RlZmlu ZSBQTExfREFUQV9SQVRFX0NMS19ESVZfTUFTSyAgICAgICAgICAgR0VOTUFTSygxNSwgOCkNCj4g PiArI2RlZmluZSBQTExfREFUQV9SQVRFX0NMS19ESVZfSEJSICAgICAgICAgICAgMHgyNA0KPiA+ ICsjZGVmaW5lIFBMTF9EQVRBX1JBVEVfQ0xLX0RJVl9IQlIyICAgICAgICAgICAweDEyDQo+ID4g KyNkZWZpbmUgUExMX0NMS19FTl9BQ0sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklU KDMpDQo+ID4gKyNkZWZpbmUgUExMX0NMS19FTiAgICAgICAgICAgICAgICAgICAgICAgICAgIEJJ VCgyKQ0KPiA+ICsjZGVmaW5lIFBMTF9SRUFEWSAgICAgICAgICAgICAgICAgICAgICAgICAgICBC SVQoMSkNCj4gPiArI2RlZmluZSBQTExfRU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBCSVQoMCkNCj4gPiArDQo+ID4gKy8qIENNTl9ESUFHX0hTQ0xLX1NFTCAqLw0KPiA+ ICsjZGVmaW5lIEhTQ0xLMV9TRUxfTUFTSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdF Tk1BU0soNSwNCj4gNCkNCj4gPiArI2RlZmluZSBIU0NMSzBfU0VMX01BU0sgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBHRU5NQVNLKDEsDQo+IDApDQo+ID4gKyNkZWZpbmUgSFNDTEtfUExM MF9ESVYyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMQ0KPiA+ICsNCj4gPiArLyogWENW Ul9ESUFHX0hTQ0xLX1NFTCAqLw0KPiA+ICsjZGVmaW5lIEhTQ0xLX1NFTF9NT0RFM19NQVNLICAg ICAgICAgICAgICAgICBHRU5NQVNLKDEzLCAxMikNCj4gPiArI2RlZmluZSBIU0NMS19TRUxfTU9E RTNfSFNDTEsxICAgICAgICAgICAgICAgICAgICAgICAxDQo+ID4gKw0KPiA+ICsvKiBYQ1ZSX0RJ QUdfUExMRFJDX0NUUkwgKi8NCj4gPiArI2RlZmluZSBEUExMX0NMS19TRUxfTU9ERTMgICAgICAg ICAgICAgICAgICAgQklUKDE0KQ0KPiA+ICsjZGVmaW5lIERQTExfREFUQV9SQVRFX0RJVl9NT0RF M19NQVNLDQo+IEdFTk1BU0soMTMsIDEyKQ0KPiA+ICsNCj4gPiArLyogUEhZX0hEUF9NT0RFX0NU UkwgKi8NCj4gPiArI2RlZmluZSBQT1dFUl9TVEFURV9BM19BQ0sgICAgICAgICAgICAgICAgICAg QklUKDcpDQo+ID4gKyNkZWZpbmUgUE9XRVJfU1RBVEVfQTJfQUNLICAgICAgICAgICAgICAgICAg IEJJVCg2KQ0KPiA+ICsjZGVmaW5lIFBPV0VSX1NUQVRFX0ExX0FDSyAgICAgICAgICAgICAgICAg ICBCSVQoNSkNCj4gPiArI2RlZmluZSBQT1dFUl9TVEFURV9BMF9BQ0sgICAgICAgICAgICAgICAg ICAgQklUKDQpDQo+ID4gKyNkZWZpbmUgUE9XRVJfU1RBVEVfQTMgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgQklUKDMpDQo+ID4gKyNkZWZpbmUgUE9XRVJfU1RBVEVfQTIgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgQklUKDIpDQo+ID4gKyNkZWZpbmUgUE9XRVJfU1RBVEVfQTEg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKDEpDQo+ID4gKyNkZWZpbmUgUE9XRVJf U1RBVEVfQTAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQklUKDApDQo+ID4gKw0KPiA+ ICsjZGVmaW5lIFJFRl9DTEtfMjdNSFogICAgICAgICAgICAgICAgMjcwMDAwMDANCj4gPiArDQo+ ID4gK2VudW0gZHBfbGlua19yYXRlIHsNCj4gPiArICAgICBSQVRFXzFfNiA9IDE2MjAwMCwNCj4g PiArICAgICBSQVRFXzJfMSA9IDIxNjAwMCwNCj4gPiArICAgICBSQVRFXzJfNCA9IDI0MzAwMCwN Cj4gPiArICAgICBSQVRFXzJfNyA9IDI3MDAwMCwNCj4gPiArICAgICBSQVRFXzNfMiA9IDMyNDAw MCwNCj4gPiArICAgICBSQVRFXzRfMyA9IDQzMjAwMCwNCj4gPiArICAgICBSQVRFXzVfNCA9IDU0 MDAwMCwNCj4gPiArICAgICBSQVRFXzhfMSA9IDgxMDAwMCwNCj4NCj4gUkFURV84XzEgaXMgdW51 c2VkLg0KDQpPSywgd2lsbCByZW1vdmUgaXQuDQoNCj4NCj4gPiArfTsNCj4gPiArDQo+ID4gKyNk ZWZpbmUgTUFYX0xJTktfUkFURSBSQVRFXzVfNA0KPiA+ICsNCj4gPiArc3RydWN0IHBoeV9wbGxf cmVnIHsNCj4gPiArICAgICB1MTYgdmFsWzddOw0KPiA+ICsgICAgIHUzMiBhZGRyOw0KPiA+ICt9 Ow0KPiA+ICsNCj4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBwaHlfcGxsX3JlZyBwaHlfcGxsXzI3 bV9jZmdbXSA9IHsNCj4gPiArICAgICAvKiAgMS42MiAgICAyLjE2ICAgIDIuNDMgICAgMi43ICAg ICAzLjI0ICAgIDQuMzIgICAgNS40DQo+IHJlZ2lzdGVyDQo+ID4gYWRkcmVzcyAqLyArICB7eyAw eDAxMGUsIDB4MDEwZSwgMHgwMTBlLCAweDAxMGUsIDB4MDEwZSwgMHgwMTBlLA0KPiA+IDB4MDEw ZQ0KPiB9LA0KPiA+IENNTl9QTEwwX1ZDT0NBTF9JTklUX1RNUiB9LCArIHt7IDB4MDAxYiwgMHgw MDFiLCAweDAwMWIsIDB4MDAxYiwNCj4gMHgwMDFiLA0KPiA+IDB4MDAxYiwgMHgwMDFiIH0sIENN Tl9QTEwwX1ZDT0NBTF9JVEVSX1RNUiB9LCArICAgICAgIHt7IDB4MzBiOSwNCj4gMHgzMDg3LCAw eDMwOTYsDQo+ID4gMHgzMGI0LCAweDMwYjksIDB4MzA4NywgMHgzMGI0IH0sIENNTl9QTEwwX1ZD T0NBTF9TVEFSVCB9LCArICB7ew0KPiAweDAwNzcsDQo+ID4gMHgwMDlmLCAweDAwYjMsIDB4MDBj NywgMHgwMDc3LCAweDAwOWYsIDB4MDBjNyB9LCBDTU5fUExMMF9JTlRESVYgfSwgKw0KPiB7ew0K PiA+IDB4ZjlkYSwgMHhmN2NkLCAweGY2YzcsIDB4ZjVjMSwgMHhmOWRhLCAweGY3Y2QsIDB4ZjVj MSB9LA0KPiA+IENNTl9QTEwwX0ZSQUNESVYgfSwgKyAge3sgMHgwMDFlLCAweDAwMjgsIDB4MDAy ZCwgMHgwMDMyLCAweDAwMWUsDQo+IDB4MDAyOCwgMHgwMDMyIH0sDQo+ID4gQ01OX1BMTDBfSElH SF9USFIgfSwgKyAgICAgICAge3sgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCwgMHgwMDIwLA0KPiAw eDAwMjAsDQo+IDB4MDAyMCwNCj4gPiAweDAwMjAgfSwgQ01OX1BMTDBfRFNNX0RJQUcgfSwgKyAg ICAgIHt7IDB4MDAwMCwgMHgxMDAwLCAweDEwMDAsDQo+IDB4MTAwMCwNCj4gMHgwMDAwLA0KPiA+ IDB4MTAwMCwgMHgxMDAwIH0sIENNTl9QTExTTTBfVVNFUl9ERUZfQ1RSTCB9LCArICAgICAgIHt7 IDB4MDAwMCwNCj4gMHgwMDAwLCAweDAwMDAsDQo+ID4gMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwg MHgwMDAwIH0sIENNTl9ESUFHX1BMTDBfT1ZSRCB9LCArDQo+IHt7IDB4MDAwMCwNCj4gPiAweDAw MDAsIDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCwgMHgwMDAwIH0sDQo+ID4gQ01OX0RJ QUdfUExMMF9GQkhfT1ZSRCB9LA0KPiA+ICsgICAgIHt7IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAs IDB4MDAwMCwgMHgwMDAwLCAweDAwMDAsIDB4MDAwMCB9LA0KPiA+IENNTl9ESUFHX1BMTDBfRkJM X09WUkQgfSwgKyAgIHt7IDB4MDAwNiwgMHgwMDA3LCAweDAwMDcsIDB4MDAwNywNCj4gMHgwMDA2 LA0KPiA+IDB4MDAwNywgMHgwMDA3IH0sIENNTl9ESUFHX1BMTDBfVjJJX1RVTkUgfSwgKyB7eyAw eDAwNDMsIDB4MDA0MywNCj4gPiAweDAwNDMsIDB4MDA0MiwgMHgwMDQzLCAweDAwNDMsIDB4MDA0 MiB9LCBDTU5fRElBR19QTEwwX0NQX1RVTkUgfSwgKw0KPiA+IHt7DQo+IDB4MDAwOCwNCj4gPiAw eDAwMDgsIDB4MDAwOCwgMHgwMDA4LCAweDAwMDgsIDB4MDAwOCwgMHgwMDA4IH0sDQo+ID4gQ01O X0RJQUdfUExMMF9MRl9QUk9HIH0sDQo+ID4gKyAgICAge3sgMHgwMTAwLCAweDAwMDEsIDB4MDAw MSwgMHgwMDAxLCAweDAxMDAsIDB4MDAwMSwgMHgwMDAxIH0sDQo+ID4gQ01OX0RJQUdfUExMMF9Q VEFUSVNfVFVORTEgfSwgKyAgICAgICB7eyAweDAwMDcsIDB4MDAwMSwgMHgwMDAxLA0KPiAweDAw MDEsDQo+IDB4MDAwNywNCj4gPiAweDAwMDEsIDB4MDAwMSB9LCBDTU5fRElBR19QTEwwX1BUQVRJ U19UVU5FMiB9LCArICAgICB7eyAweDAwMjAsDQo+IDB4MDAyMCwNCj4gPiAweDAwMjAsIDB4MDAy MCwgMHgwMDIwLCAweDAwMjAsIDB4MDAyMCB9LCBDTU5fRElBR19QTEwwX1RFU1RfTU9ERX0sDQo+ ICsNCj4gPiB7eyAweDAwMTYsIDB4MDAxNiwgMHgwMDE2LCAweDAwMTYsIDB4MDAxNiwgMHgwMDE2 LCAweDAwMTYgfSwNCj4gPiBDTU5fUFNNX0NMS19DVFJMIH0gK307DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgY2Ruc19oZHB0eF9kcF9waHkgew0KPiA+ICsgICAgIHN0cnVjdCBjZG5zX21oZHBfYmFzZSBi YXNlOw0KPiA+ICsNCj4gPiArICAgICB2b2lkIF9faW9tZW0gKnJlZ3M7ICAgICAvKiBEUFRYIHJl Z2lzdGVycyBiYXNlICovDQo+ID4gKyAgICAgc3RydWN0IGRldmljZSAqZGV2Ow0KPiA+ICsgICAg IHN0cnVjdCBwaHkgKnBoeTsNCj4gPiArICAgICBzdHJ1Y3QgbXV0ZXggbWJveF9tdXRleDsgICAg ICAgIC8qIG11dGV4IHRvIHByb3RlY3QgbWFpbGJveCAqLw0KPiA+ICsgICAgIHN0cnVjdCBjbGsg KnJlZl9jbGssICphcGJfY2xrOw0KPiA+ICsgICAgIHUzMiByZWZfY2xrX3JhdGU7DQo+ID4gKyAg ICAgdTMyIG51bV9sYW5lczsNCj4gPiArICAgICB1MzIgbGlua19yYXRlOw0KPiA+ICsgICAgIGJv b2wgcG93ZXJfdXA7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfcGh5X3Jl Z193cml0ZShzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzINCj4gPiArYWRk ciwNCj4gPiB1MzIgdmFsKSArew0KPiA+ICsgICAgIHJldHVybiBjZG5zX21oZHBfcmVnX3dyaXRl KCZjZG5zX3BoeS0+YmFzZSwgQUREUl9QSFlfQUZFICsNCj4gKGFkZHINCj4gPiArIDw8DQo+IDIp LA0KPiA+IHZhbCk7ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdTMyIGNkbnNfcGh5X3JlZ19yZWFk KHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHksIHUzMg0KPiA+ICthZGRyKSB7DQo+ ID4gKyAgICAgdTMyIHJlZzMyOw0KPiA+ICsNCj4gPiArICAgICBjZG5zX21oZHBfcmVnX3JlYWQo JmNkbnNfcGh5LT5iYXNlLCBBRERSX1BIWV9BRkUgKyAoYWRkciA8PA0KPiAyKSwNCj4gJnJlZzMy KTsNCj4gPiArICAgICByZXR1cm4gcmVnMzI7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgbGlua19yYXRlX2luZGV4KHUzMiByYXRlKQ0KPiA+ICt7DQo+ID4gKyAgICAgc3dpdGNoIChy YXRlKSB7DQo+ID4gKyAgICAgY2FzZSBSQVRFXzFfNjoNCj4gPiArICAgICAgICAgICAgIHJldHVy biAwOw0KPiA+ICsgICAgIGNhc2UgUkFURV8yXzE6DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4g MTsNCj4gPiArICAgICBjYXNlIFJBVEVfMl80Og0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDI7 DQo+ID4gKyAgICAgY2FzZSBSQVRFXzJfNzoNCj4gPiArICAgICAgICAgICAgIHJldHVybiAzOw0K PiA+ICsgICAgIGNhc2UgUkFURV8zXzI6DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gNDsNCj4g PiArICAgICBjYXNlIFJBVEVfNF8zOg0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIDU7DQo+ID4g KyAgICAgY2FzZSBSQVRFXzVfNDoNCj4gPiArICAgICAgICAgICAgIHJldHVybiA2Ow0KPiA+ICsg ICAgIGRlZmF1bHQ6DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKyAgICAgfQ0K PiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGhkcHR4X2RwX2Nsa19lbmFibGUoc3RydWN0 IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSkgew0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2Ug KmRldiA9IGNkbnNfcGh5LT5kZXY7DQo+ID4gKyAgICAgdTMyIHJlZl9jbGtfcmF0ZTsNCj4gPiAr ICAgICBpbnQgcmV0Ow0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeS0+cmVmX2NsayA9IGRldm1f Y2xrX2dldChkZXYsICJyZWYiKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKGNkbnNfcGh5LT5yZWZf Y2xrKSkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJwaHkgcmVmIGNsb2NrIG5v dCBmb3VuZFxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihjZG5zX3BoeS0+ cmVmX2Nsayk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBjZG5zX3BoeS0+YXBiX2Ns ayA9IGRldm1fY2xrX2dldChkZXYsICJhcGIiKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKGNkbnNf cGh5LT5hcGJfY2xrKSkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihkZXYsICJwaHkgYXBi IGNsb2NrIG5vdCBmb3VuZFxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihj ZG5zX3BoeS0+YXBiX2Nsayk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICByZXQgPSBj bGtfcHJlcGFyZV9lbmFibGUoY2Ruc19waHktPnJlZl9jbGspOw0KPiA+ICsgICAgIGlmIChyZXQp IHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIkZhaWxlZCB0byBw cmVwYXJlIHJlZiBjbG9ja1xuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiA+ ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcmVmX2Nsa19yYXRlID0gY2xrX2dldF9yYXRlKGNk bnNfcGh5LT5yZWZfY2xrKTsNCj4gPiArICAgICBpZiAoIXJlZl9jbGtfcmF0ZSkgew0KPiA+ICsg ICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiRmFpbGVkIHRvIGdldCByZWYgY2xv Y2sgcmF0ZVxuIik7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGVycl9yZWZfY2xrOw0KPiA+ICsg ICAgIH0NCj4gPiArDQo+ID4gKyAgICAgaWYgKHJlZl9jbGtfcmF0ZSA9PSBSRUZfQ0xLXzI3TUha KSB7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeS0+cmVmX2Nsa19yYXRlID0gcmVmX2Nsa19y YXRlOw0KPiA+ICsgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgICAgICBkZXZfZXJyKGNkbnNf cGh5LT5kZXYsICJOb3Qgc3VwcG9ydCBSZWYgQ2xvY2sgUmF0ZSglZEh6KQ0KPiBcbiIsDQo+ID4g cmVmX2Nsa19yYXRlKTsgKyAgICAgICAgICAgICAgZ290byBlcnJfcmVmX2NsazsNCj4gPiArICAg ICB9DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGNsa19wcmVwYXJlX2VuYWJsZShjZG5zX3BoeS0+ YXBiX2Nsayk7DQo+ID4gKyAgICAgaWYgKHJldCkgew0KPiA+ICsgICAgICAgICAgICAgZGV2X2Vy cihjZG5zX3BoeS0+ZGV2LCAiRmFpbGVkIHRvIHByZXBhcmUgYXBiIGNsb2NrXG4iKTsNCj4gPiAr ICAgICAgICAgICAgIGdvdG8gZXJyX3JlZl9jbGs7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiAr ICAgICByZXR1cm4gMDsNCj4gPiArDQo+ID4gK2Vycl9yZWZfY2xrOg0KPiA+ICsgICAgIGNsa19k aXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+cmVmX2Nsayk7DQo+ID4gKyAgICAgcmV0dXJuIC1F SU5WQUw7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGhkcHR4X2RwX2Nsa19kaXNh YmxlKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpDQo+ID4gK3sNCj4gPiArICAg ICBjbGtfZGlzYWJsZV91bnByZXBhcmUoY2Ruc19waHktPnJlZl9jbGspOw0KPiA+ICsgICAgIGNs a19kaXNhYmxlX3VucHJlcGFyZShjZG5zX3BoeS0+YXBiX2Nsayk7DQo+ID4gK30NCj4gPiArDQo+ ID4gK3N0YXRpYyB2b2lkIGhkcHR4X2RwX2F1eF9jZmcoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5 ICpjZG5zX3BoeSkgew0KPiA+ICsgICAgIC8qIFBvd2VyIHVwIEF1eCAqLw0KPiA+ICsgICAgIGNk bnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhEQV9DWUFfQVVYREFfQ1lBLCAxKTsNCj4gPiAr DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9ESUdfQ1RSTF9SRUdf MSwgMHgzKTsNCj4gPiArICAgICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0RJR19DVFJMX1JFR18yLCAzNik7DQo+ID4gKyAgICAgbmRlbGF5 KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RS TF9SRUdfMiwgMHgwMTAwKTsNCj4gPiArICAgICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18yLCAweDAzMDApOw0KPiA+ ICsgICAgIG5kZWxheSgxNTApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgVFhfQU5BX0NUUkxfUkVHXzMsIDB4MDAwMCk7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwg MHgyMDA4KTsNCj4gPiArICAgICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIFRYX0FOQV9DVFJMX1JFR18xLCAweDIwMTgpOw0KPiA+ICsgICAgIG5k ZWxheSgxNTApOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5B X0NUUkxfUkVHXzEsIDB4YTAxOCk7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAg Y2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzBjKTsN Cj4gPiArICAgICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIFRYX0FOQV9DVFJMX1JFR181LCAweDAwMDApOw0KPiA+ICsgICAgIG5kZWxheSgxNTAp Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVH XzQsIDB4MTAwMSk7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlf cmVnX3dyaXRlKGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMSwgMHhhMDk4KTsNCj4gPiArICAg ICBuZGVsYXkoMTUwKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRY X0FOQV9DVFJMX1JFR18xLCAweGExOTgpOw0KPiA+ICsgICAgIG5kZWxheSgxNTApOw0KPiA+ICsg ICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgVFhfQU5BX0NUUkxfUkVHXzIsIDB4MDMw ZCk7DQo+ID4gKyAgICAgbmRlbGF5KDE1MCk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBUWF9BTkFfQ1RSTF9SRUdfMiwgMHgwMzBmKTsgfQ0KPiA+ICsNCj4gPiArLyog UE1BIGNvbW1vbiBjb25maWd1cmF0aW9uIGZvciAyN01IeiAqLyBzdGF0aWMgdm9pZA0KPiA+ICto ZHB0eF9kcF9waHlfcG1hX2Ntbl9jZmdfMjdtaHooc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5DQo+ ID4gKmNkbnNfcGh5KSArew0KPiA+ICsgICAgIHUzMiBudW1fbGFuZXMgPSBjZG5zX3BoeS0+bnVt X2xhbmVzOw0KPiA+ICsgICAgIHUxNiB2YWw7DQo+ID4gKyAgICAgaW50IGs7DQo+ID4gKw0KPiA+ ICsgICAgIC8qIEVuYWJsZSBQTUEgaW5wdXQgcmVmIGNsayhDTU5fUkVGX0NMS19SQ1ZfRU4pICov DQo+ID4gKyAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9QTUFfQ01O X0NUUkwxKTsNCj4gPiArICAgICB2YWwgJj0gfkNNQV9SRUZfQ0xLX1JDVl9FTl9NQVNLOw0KPiA+ ICsgICAgIHZhbCB8PSBGSUVMRF9QUkVQKENNQV9SRUZfQ0xLX1JDVl9FTl9NQVNLLA0KPiBDTUFf UkVGX0NMS19SQ1ZfRU4pOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwg UEhZX1BNQV9DTU5fQ1RSTDEsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIC8qIFN0YXJ0dXAgc3Rh dGUgbWFjaGluZSByZWdpc3RlcnMgKi8NCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIENNTl9TU01fQklBU19UTVIsIDB4MDA4Nyk7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBDTU5fUExMU00wX1BMTEVOX1RNUiwgMHgwMDFiKTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9QTExTTTBfUExMUFJFX1RNUiwgMHgw MDM2KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9QTExTTTBf UExMVlJFRl9UTVIsDQo+IDB4MDAxYik7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNk bnNfcGh5LCBDTU5fUExMU00wX1BMTExPQ0tfVE1SLA0KPiAweDAwNmMpOw0KPiA+ICsNCj4gPiAr ICAgICAvKiBDdXJyZW50IGNhbGlicmF0aW9uIHJlZ2lzdGVycyAqLw0KPiA+ICsgICAgIGNkbnNf cGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX0lDQUxfSU5JVF9UTVIsIDB4MDA0NCk7DQo+ID4g KyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fSUNBTF9JVEVSX1RNUiwgMHgw MDA2KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9JQ0FMX0FE Sl9JTklUX1RNUiwgMHgwMDIyKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9JQ0FMX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsNCj4gPiArDQo+ID4gKyAgICAgLyog UmVzaXN0b3IgY2FsaWJyYXRpb24gcmVnaXN0ZXJzICovDQo+ID4gKyAgICAgY2Ruc19waHlfcmVn X3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQVUNBTF9JTklUX1RNUiwgMHgwMDIyKTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBVQ0FMX0lURVJfVE1SLCAweDAw MDYpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgQ01OX1RYUFVfQURK X0lOSVRfVE1SLCAweDAwMjIpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgQ01OX1RYUFVfQURKX0lURVJfVE1SLCAweDAwMDYpOw0KPiA+ICsgICAgIGNkbnNfcGh5X3Jl Z193cml0ZShjZG5zX3BoeSwgQ01OX1RYUERDQUxfSU5JVF9UTVIsIDB4MDAyMik7DQo+ID4gKyAg ICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fVFhQRENBTF9JVEVSX1RNUiwgMHgw MDA2KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9UWFBEX0FE Sl9JTklUX1RNUiwgMHgwMDIyKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksIENNTl9UWFBEX0FESl9JVEVSX1RNUiwgMHgwMDA2KTsNCj4gPiArICAgICBjZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWENBTF9JTklUX1RNUiwgMHgwMDIyKTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWENBTF9JVEVSX1RNUiwgMHgwMDA2 KTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIENNTl9SWF9BREpfSU5J VF9UTVIsIDB4MDAyMik7DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBD TU5fUlhfQURKX0lURVJfVE1SLCAweDAwMDYpOw0KPiA+ICsNCj4gPiArICAgICBmb3IgKGsgPSAw OyBrIDwgbnVtX2xhbmVzOyBrID0gayArIDEpIHsNCj4gPiArICAgICAgICAgICAgIC8qIFBvd2Vy IHN0YXRlIG1hY2hpbmUgcmVnaXN0ZXJzICovDQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIFhDVlJfUFNNX0NBTF9UTVIgIHwgKGsNCj4gPDwNCj4gPiArIDkp LA0KPiAweDAxNmQpOw0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNf cGh5LCBYQ1ZSX1BTTV9BMElOX1RNUiB8IChrDQo+IDw8DQo+ID4gKyA5KSwNCj4gMHgwMTZkKTsN Cj4gPiArICAgICAgICAgICAgIC8qIFRyYW5zY2VpdmVyIGNvbnRyb2wgYW5kIGRpYWdub3N0aWMg cmVnaXN0ZXJzICovDQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19w aHksDQo+ID4gKyBYQ1ZSX0RJQUdfTEFORV9GQ01fRU5fTUdOX1RNUg0KPiB8IChrIDw8IDkpLA0K PiA+IDB4MDBhMik7ICsgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksDQo+ IFRYX0RJQUdfQkdSRUZfUFJFRFJWX0RFTEFZIHwgKGsgPDwNCj4gPiA5KSwgMHgwMDk3KTsgKyAg ICAgICAgICAgICAgICAvKiBUcmFuc21pdHRlciByZWNlaXZlciBkZXRlY3QgcmVnaXN0ZXJzICov DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX1JDVkRF VF9FTl9UTVIgfCAoayA8PA0KPiA+ICsgOSksDQo+IDB4MGE4Yyk7DQo+ID4gKyAgICAgICAgICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX1JDVkRFVF9TVF9UTVIgfCAoayA8PA0K PiA+ICsgOSksDQo+IDB4MDAzNik7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBjZG5z X3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8wLCAxKTsNCj4gPiArICAgICBj ZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8xLCAxKTsNCj4gPiArICAg ICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8yLCAxKTsNCj4gPiAr ICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFRYX0RJQUdfQUNZQV8zLCAxKTsgfQ0K PiA+ICsNCj4gPiArc3RhdGljIHZvaWQgaGRwdHhfZHBfcGh5X3BtYV9jbW5fcGxsMF8yN21oeihz dHJ1Y3QNCj4gY2Ruc19oZHB0eF9kcF9waHkNCj4gPiAqY2Ruc19waHkpICt7DQo+ID4gKyAgICAg dTMyIG51bV9sYW5lcyA9IGNkbnNfcGh5LT5udW1fbGFuZXM7DQo+ID4gKyAgICAgdTMyIGxpbmtf cmF0ZSA9IGNkbnNfcGh5LT5saW5rX3JhdGU7DQo+ID4gKyAgICAgdTE2IHZhbDsNCj4gPiArICAg ICBpbnQgaW5kZXgsIGksIGs7DQo+ID4gKw0KPiA+ICsgICAgIC8qIERQIFBMTCBkYXRhIHJhdGUg MC8xIGNsb2NrIGRpdmlkZXIgdmFsdWUgKi8NCj4gPiArICAgICB2YWwgPSBjZG5zX3BoeV9yZWdf cmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsNCj4gPiArICAgICB2YWwgJj0gflBMTF9E QVRBX1JBVEVfQ0xLX0RJVl9NQVNLOw0KPiA+ICsgICAgIGlmIChsaW5rX3JhdGUgPD0gUkFURV8y XzcpDQo+ID4gKyAgICAgICAgICAgICB2YWwgfD0gRklFTERfUFJFUChQTExfREFUQV9SQVRFX0NM S19ESVZfTUFTSywNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBMTF9EQVRB X1JBVEVfQ0xLX0RJVl9IQlIpOw0KPiA+ICsgICAgIGVsc2UNCj4gPiArICAgICAgICAgICAgIHZh bCB8PSBGSUVMRF9QUkVQKFBMTF9EQVRBX1JBVEVfQ0xLX0RJVl9NQVNLLA0KPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgUExMX0RBVEFfUkFURV9DTEtfRElWX0hCUjIpOw0KPiA+ ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2YWwp Ow0KPiA+ICsNCj4gPiArICAgICAvKiBIaWdoIHNwZWVkIGNsb2NrIDAvMSBkaXYgKi8NCj4gPiAr ICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgQ01OX0RJQUdfSFNDTEtfU0VM KTsNCj4gPiArICAgICB2YWwgJj0gfihIU0NMSzFfU0VMX01BU0sgfCBIU0NMSzBfU0VMX01BU0sp Ow0KPiA+ICsgICAgIGlmIChsaW5rX3JhdGUgPD0gUkFURV8yXzcpIHsNCj4gPiArICAgICAgICAg ICAgIHZhbCB8PSBGSUVMRF9QUkVQKEhTQ0xLMV9TRUxfTUFTSywgSFNDTEtfUExMMF9ESVYyKTsN Cj4gPiArICAgICAgICAgICAgIHZhbCB8PSBGSUVMRF9QUkVQKEhTQ0xLMF9TRUxfTUFTSywgSFND TEtfUExMMF9ESVYyKTsNCj4gPiArICAgICB9DQo+ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBDTU5fRElBR19IU0NMS19TRUwsIHZhbCk7DQo+ID4gKw0KPiA+ICsgICAgIGZv ciAoayA9IDA7IGsgPCBudW1fbGFuZXM7IGsrKykgew0KPiA+ICsgICAgICAgICAgICAgdmFsID0g Y2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIChYQ1ZSX0RJQUdfSFNDTEtfU0VMDQo+IHwNCj4g KGsgPDwgOSkpKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAmPSB+SFNDTEtfU0VMX01PREUzX01B U0s7DQo+ID4gKyAgICAgICAgICAgICBpZiAobGlua19yYXRlIDw9IFJBVEVfMl83KQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICB2YWwgfD0gRklFTERfUFJFUChIU0NMS19TRUxfTU9ERTNfTUFT SywNCj4gSFNDTEtfU0VMX01PREUzX0hTQ0xLMSk7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIChYQ1ZSX0RJQUdfSFNDTEtfU0VMIHwgKGsNCj4gPiArIDw8 DQo+IDkpKSwgdmFsKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIC8qIERQIFBIWSBQ TEwgMjdNSHogY29uZmlndXJhdGlvbiAqLw0KPiA+ICsgICAgIGluZGV4ID0gbGlua19yYXRlX2lu ZGV4KGxpbmtfcmF0ZSk7DQo+ID4gKyAgICAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUocGh5 X3BsbF8yN21fY2ZnKTsgaSsrKQ0KPiA+ICsgICAgICAgICAgICAgY2Ruc19waHlfcmVnX3dyaXRl KGNkbnNfcGh5LCBwaHlfcGxsXzI3bV9jZmdbaV0uYWRkciwNCj4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwaHlfcGxsXzI3bV9jZmdbaV0udmFsW2luZGV4XSk7DQo+ID4gKw0K PiA+ICsgICAgIC8qIFRyYW5zY2VpdmVyIGNvbnRyb2wgYW5kIGRpYWdub3N0aWMgcmVnaXN0ZXJz ICovDQo+ID4gKyAgICAgZm9yIChrID0gMDsgayA8IG51bV9sYW5lczsgaysrKSB7DQo+ID4gKyAg ICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwNCj4gKFhDVlJfRElB R19QTExEUkNfQ1RSTA0KPiA+ICsgfA0KPiAoayA8PCA5KSkpOw0KPiA+ICsgICAgICAgICAgICAg dmFsICY9IH4oRFBMTF9EQVRBX1JBVEVfRElWX01PREUzX01BU0sgfA0KPiBEUExMX0NMS19TRUxf TU9ERTMpOw0KPiA+ICsgICAgICAgICAgICAgaWYgKGxpbmtfcmF0ZSA8PSBSQVRFXzJfNykNCj4g PiArICAgICAgICAgICAgICAgICAgICAgdmFsIHw9DQo+IEZJRUxEX1BSRVAoRFBMTF9EQVRBX1JB VEVfRElWX01PREUzX01BU0ssDQo+IDIpOw0KPiA+ICsgICAgICAgICAgICAgZWxzZQ0KPiA+ICsg ICAgICAgICAgICAgICAgICAgICB2YWwgfD0NCj4gRklFTERfUFJFUChEUExMX0RBVEFfUkFURV9E SVZfTU9ERTNfTUFTSywNCj4gMSk7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIChYQ1ZSX0RJQUdfUExMRFJDX0NUUkwgfA0KPiAoaw0KPiA8PCA5KSksIHZh bCk7DQo+ID4gKyAgICAgfQ0KPiA+ICsNCj4gPiArICAgICBmb3IgKGsgPSAwOyBrIDwgbnVtX2xh bmVzOyBrID0gayArIDEpIHsNCj4gPiArICAgICAgICAgICAgIC8qIFBvd2VyIHN0YXRlIG1hY2hp bmUgcmVnaXN0ZXJzICovDQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ru c19waHksIChYQ1ZSX1BTTV9SQ1RSTCB8IChrIDw8DQo+ID4gKyA5KSksDQo+IDB4YmVmYyk7DQo+ ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTAg fCAoayA8PCA5KSksDQo+IDB4Njc5OSk7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdf d3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTEgfCAoayA8PCA5KSksDQo+IDB4Njc5OCk7DQo+ID4g KyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIChUWF9QU0NfQTIgfCAo ayA8PCA5KSksDQo+IDB4MDA5OCk7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3Jp dGUoY2Ruc19waHksIChUWF9QU0NfQTMgfCAoayA8PCA5KSksDQo+IDB4MDA5OCk7DQo+ID4gKyAg ICAgICAgICAgICAvKiBSZWNlaXZlciBjYWxpYnJhdGlvbiBwb3dlciBzdGF0ZSBkZWZpbml0aW9u IHJlZ2lzdGVyICovDQo+ID4gKyAgICAgICAgICAgICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChj ZG5zX3BoeSwgUlhfUFNDX0NBTCB8IChrIDw8IDkpKTsNCj4gPiArICAgICAgICAgICAgIHZhbCAm PSAweGZmYmI7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHks IChSWF9QU0NfQ0FMIHwgKGsgPDwgOSkpLA0KPiB2YWwpOw0KPiA+ICsgICAgICAgICAgICAgdmFs ID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFJYX1BTQ19BMCB8IChrIDw8IDkpKTsNCj4g PiArICAgICAgICAgICAgIHZhbCAmPSAweGZmYmI7DQo+ID4gKyAgICAgICAgICAgICBjZG5zX3Bo eV9yZWdfd3JpdGUoY2Ruc19waHksIChSWF9QU0NfQTAgfCAoayA8PCA5KSksIHZhbCk7DQo+ID4g KyAgICAgfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBoZHB0eF9kcF9waHlfcmVm X2Nsb2NrX3R5cGUoc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5DQo+ID4gKypjZG5zX3BoeSkgew0K PiA+ICsgICAgIHUzMiB2YWw7DQo+ID4gKw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LCBQSFlfUE1BX0NNTl9DVFJMMSk7DQo+ID4gKyAgICAgdmFsICY9IH5DTUFf UkVGX0NMS19TRUxfTUFTSzsNCj4gPiArICAgICAvKg0KPiA+ICsgICAgICAqIHNpbmdsZSBlbmRl ZCByZWZlcmVuY2UgY2xvY2sgKHZhbCB8PSAweDAwMzApOw0KPiA+ICsgICAgICAqIGRpZmZlcmVu dGlhbCBjbG9jayAgKHZhbCB8PSAweDAwMDApOw0KPiA+ICsgICAgICAqDQo+ID4gKyAgICAgICog Zm9yIGRpZmZlcmVudGlhbCBjbG9jayBvbiB0aGUgcmVmY2xrX3AgYW5kDQo+ID4gKyAgICAgICog cmVmY2xrX20gb2ZmIGNoaXAgcGluczogQ01OX0RJQUdfQUNZQVs4XT0xJ2IxDQo+ID4gKyAgICAg ICogY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBDTU5fRElBR19BQ1lBLCAweDAxMDApOw0K PiA+ICsgICAgICAqLw0KPiA+ICsgICAgIHZhbCB8PSBGSUVMRF9QUkVQKENNQV9SRUZfQ0xLX1NF TF9NQVNLLCAzKTsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUoY2Ruc19waHksIFBIWV9Q TUFfQ01OX0NUUkwxLCB2YWwpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IHdhaXRfZm9yX2Fj ayhzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1MzIgcmVnLA0KPiA+ICt1MzIN Cj4gPiBtYXNrLCArICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJfbXNnKQ0K PiA+ICt7DQo+ID4gKyAgICAgdTMyIHZhbCwgaTsNCj4gPiArDQo+ID4gKyAgICAgZm9yIChpID0g MDsgaSA8IDEwOyBpKyspIHsNCj4gPiArICAgICAgICAgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19y ZWFkKGNkbnNfcGh5LCByZWcpOw0KPiA+ICsgICAgICAgICAgICAgaWYgKHZhbCAmIG1hc2spDQo+ ID4gKyAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOw0KPiA+ICsgICAgICAgICAgICAgbXNs ZWVwKDIwKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIGRldl9lcnIoY2Ruc19waHkt PmRldiwgIiVzXG4iLCBlcnJfbXNnKTsNCj4gPiArICAgICByZXR1cm4gLTE7DQo+DQo+IHJldHVy biAtRVRJTUVET1VUPw0KDQpPSy4NCg0KPg0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IHdhaXRfZm9yX2Fja19jbGVhcihzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5LCB1 MzINCj4gPiArcmVnLA0KPiA+IHUzMiBtYXNrLCArICAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGNoYXIgKmVycl9tc2cpDQo+ID4gK3sNCj4gPiArICAgICB1MzIgdmFsLCBpOw0KPiA+ICsN Cj4gPiArICAgICBmb3IgKGkgPSAwOyBpIDwgMTA7IGkrKykgew0KPiA+ICsgICAgICAgICAgICAg dmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIHJlZyk7DQo+ID4gKyAgICAgICAgICAg ICBpZiAoISh2YWwgJiBtYXNrKSkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7 DQo+ID4gKyAgICAgICAgICAgICBtc2xlZXAoMjApOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4g KyAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiJXNcbiIsIGVycl9tc2cpOw0KPiA+ICsgICAg IHJldHVybiAtMTsNCj4NCj4gcmV0dXJuIC1FVElNRURPVVQ/DQoNCk9LLg0KDQo+DQo+ID4gK30N Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKHN0cnVjdCBjZG5z X2hkcHR4X2RwX3BoeSAqY2Ruc19waHkpDQo+ID4gK3sNCj4gPiArICAgICB1MzIgdmFsOw0KPiA+ ICsNCj4gPiArICAgICAvKiBFbmFibGUgSERQIFBMTOKAmXMgZm9yIGhpZ2ggc3BlZWQgY2xvY2tz ICovDQo+ID4gKyAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQoY2Ruc19waHksIFBIWV9IRFBf Q0xLX0NUTCk7DQo+ID4gKyAgICAgdmFsIHw9IFBMTF9FTjsNCj4gPiArICAgICBjZG5zX3BoeV9y ZWdfd3JpdGUoY2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsNCj4gPiArICAgICBpZiAo d2FpdF9mb3JfYWNrKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwsIFBMTF9SRUFEWSwNCj4gPiAr ICAgICAgICAgICAgICAgICAgICAgICJXYWl0IFBMTCBBY2sgZmFpbGVkIikpDQo+ID4gKyAgICAg ICAgICAgICByZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsgICAgIC8qIEVuYWJsZSBIRFAgUExM4oCZ cyBkYXRhIHJhdGUgYW5kIGZ1bGwgcmF0ZSBjbG9ja3Mgb3V0IG9mIFBNQS4gKi8NCj4gPiArICAg ICB2YWwgPSBjZG5zX3BoeV9yZWdfcmVhZChjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMKTsNCj4g PiArICAgICB2YWwgfD0gUExMX0NMS19FTjsNCj4gPiArICAgICBjZG5zX3BoeV9yZWdfd3JpdGUo Y2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCwgdmFsKTsNCj4gPiArICAgICBpZiAod2FpdF9mb3Jf YWNrKGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwsIFBMTF9DTEtfRU5fQUNLLA0KPiA+ICsgICAg ICAgICAgICAgICAgICAgICAgIldhaXQgUExMIGNsb2NrIGVuYWJsZSBBQ0sgZmFpbGVkIikpDQo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gLTE7DQo+ID4gKw0KPiA+ICsgICAgIC8qIENvbmZpZ3Vy ZSBQSFkgaW4gQTIgTW9kZSAqLw0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3Bo eSwgUEhZX0hEUF9NT0RFX0NUUkwsDQo+IFBPV0VSX1NUQVRFX0EyKTsNCj4gPiArICAgICBpZiAo d2FpdF9mb3JfYWNrKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwNCj4gUE9XRVJfU1RBVEVf QTJfQUNLLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgIldhaXQgQTIgQWNrIGZhaWxlZCIp KQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIC0xOw0KPiA+ICsNCj4gPiArICAgICAvKiBDb25m aWd1cmUgUEhZIGluIEEwIG1vZGUgKFBIWSBtdXN0IGJlIGluIHRoZSBBMCBwb3dlcg0KPiA+ICsg ICAgICAqIHN0YXRlIGluIG9yZGVyIHRvIHRyYW5zbWl0IGRhdGEpDQo+ID4gKyAgICAgICovDQo+ ID4gKyAgICAgY2Ruc19waHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwN Cj4gUE9XRVJfU1RBVEVfQTApOw0KPiA+ICsgICAgIGlmICh3YWl0X2Zvcl9hY2soY2Ruc19waHks IFBIWV9IRFBfTU9ERV9DVFJMLA0KPiBQT1dFUl9TVEFURV9BMF9BQ0ssDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAiV2FpdCBBMCBBY2sgZmFpbGVkIikpDQo+ID4gKyAgICAgICAgICAgICBy ZXR1cm4gLTE7DQo+DQo+IE1heWJlIHlvdSBzaG91bGQganVzdCByZXR1cm4gdGhlIHJldHVybiB2 YWx1ZSBvZiB3YWl0X2Zvcl9hY2soKSBpbiBlYWNoIGVycm9yDQo+IGNhc2UuDQoNCk9LLg0KDQo+ DQo+ID4gKyAgICAgY2Ruc19waHktPnBvd2VyX3VwID0gdHJ1ZTsNCj4gPiArDQo+ID4gKyAgICAg cmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGhkcHR4X2RwX3BoeV9w b3dlcl9kb3duKHN0cnVjdCBjZG5zX2hkcHR4X2RwX3BoeQ0KPiA+ICsqY2Ruc19waHkpIHsNCj4g PiArICAgICB1MTYgdmFsOw0KPiA+ICsNCj4gPiArICAgICBpZiAoIWNkbnNfcGh5LT5wb3dlcl91 cCkNCj4gPiArICAgICAgICAgICAgIHJldHVybjsNCj4gPiArDQo+ID4gKyAgICAgLyogUGxhY2Ug dGhlIFBIWSBsYW5lcyBpbiB0aGUgQTMgcG93ZXIgc3RhdGUuICovDQo+ID4gKyAgICAgY2Ruc19w aHlfcmVnX3dyaXRlKGNkbnNfcGh5LCBQSFlfSERQX01PREVfQ1RSTCwNCj4gUE9XRVJfU1RBVEVf QTMpOw0KPiA+ICsgICAgIGlmICh3YWl0X2Zvcl9hY2soY2Ruc19waHksIFBIWV9IRFBfTU9ERV9D VFJMLA0KPiBQT1dFUl9TVEFURV9BM19BQ0ssDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAi V2FpdCBBMyBBY2sgZmFpbGVkIikpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm47DQo+ID4gKw0K PiA+ICsgICAgIC8qIERpc2FibGUgSERQIFBMTOKAmXMgZGF0YSByYXRlIGFuZCBmdWxsIHJhdGUg Y2xvY2tzIG91dCBvZiBQTUEuICovDQo+ID4gKyAgICAgdmFsID0gY2Ruc19waHlfcmVnX3JlYWQo Y2Ruc19waHksIFBIWV9IRFBfQ0xLX0NUTCk7DQo+ID4gKyAgICAgdmFsICY9IH5QTExfQ0xLX0VO Ow0KPiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RM LCB2YWwpOw0KPiA+ICsgICAgIGlmICh3YWl0X2Zvcl9hY2tfY2xlYXIoY2Ruc19waHksIFBIWV9I RFBfQ0xLX0NUTCwNCj4gUExMX0NMS19FTl9BQ0ssDQo+ID4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiV2FpdCBQTEwgY2xvY2sgQWNrIGNsZWFyIGZhaWxlZCIpKQ0KPiA+ICsgICAgICAg ICAgICAgcmV0dXJuOw0KPiA+ICsNCj4gPiArICAgICAvKiBEaXNhYmxlIEhEUCBQTEzigJlzIGZv ciBoaWdoIHNwZWVkIGNsb2NrcyAqLw0KPiA+ICsgICAgIHZhbCA9IGNkbnNfcGh5X3JlZ19yZWFk KGNkbnNfcGh5LCBQSFlfSERQX0NMS19DVEwpOw0KPiA+ICsgICAgIHZhbCAmPSB+UExMX0VOOw0K PiA+ICsgICAgIGNkbnNfcGh5X3JlZ193cml0ZShjZG5zX3BoeSwgUEhZX0hEUF9DTEtfQ1RMLCB2 YWwpOw0KPiA+ICsgICAgIGlmICh3YWl0X2Zvcl9hY2tfY2xlYXIoY2Ruc19waHksIFBIWV9IRFBf Q0xLX0NUTCwgUExMX1JFQURZLA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldh aXQgUExMIEFjayBjbGVhciBmYWlsZWQiKSkNCj4gPiArICAgICAgICAgICAgIHJldHVybjsNCj4N Cj4gSSB3b3VsZCBoYXZlIGV4cGVjdGVkIGNkbnNfcGh5LT5wb3dlcl91cCA9IGZhbHNlIHNvbWV3 aGVyZSBpbiB0aGlzDQo+IGZ1bmN0aW9uLg0KPg0KDQpJIHdpbGwgYWRkZWQgaXQuDQoNCj4gPiAr fQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3BoeV9vbihzdHJ1Y3QgcGh5 ICpwaHkpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19oZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0g cGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiBoZHB0eF9kcF9w aHlfcG93ZXJfdXAoY2Ruc19waHkpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfaGRw dHhfZHBfcGh5X29mZihzdHJ1Y3QgcGh5ICpwaHkpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19o ZHB0eF9kcF9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ID4gKw0KPiA+ ICsgICAgIGhkcHR4X2RwX3BoeV9wb3dlcl9kb3duKGNkbnNfcGh5KTsNCj4gPiArDQo+ID4gKyAg ICAgcmV0dXJuIDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgY2Ruc19oZHB0eF9k cF9waHlfaW5pdChzdHJ1Y3QgcGh5ICpwaHkpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19oZHB0 eF9kcF9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ID4gKyAgICAgaW50 IHJldDsNCj4gPiArDQo+ID4gKyAgICAgaGRwdHhfZHBfcGh5X3JlZl9jbG9ja190eXBlKGNkbnNf cGh5KTsNCj4gPiArDQo+ID4gKyAgICAgLyogUEhZIHBvd2VyIHVwICovDQo+ID4gKyAgICAgcmV0 ID0gaGRwdHhfZHBfcGh5X3Bvd2VyX3VwKGNkbnNfcGh5KTsNCj4gPiArICAgICBpZiAocmV0IDwg MCkNCj4gPiArICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGhkcHR4 X2RwX2F1eF9jZmcoY2Ruc19waHkpOw0KPiA+ICsNCj4gPiArICAgICByZXR1cm4gcmV0Ow0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNkbnNfaGRwdHhfZHBfY29uZmlndXJlKHN0cnVj dCBwaHkgKnBoeSwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmlvbiBw aHlfY29uZmlndXJlX29wdHMgKm9wdHMpIHsNCj4gPiArICAgICBzdHJ1Y3QgY2Ruc19oZHB0eF9k cF9waHkgKmNkbnNfcGh5ID0gcGh5X2dldF9kcnZkYXRhKHBoeSk7DQo+ID4gKyAgICAgaW50IHJl dDsNCj4gPiArDQo+ID4gKyAgICAgY2Ruc19waHktPmxpbmtfcmF0ZSA9IG9wdHMtPmRwLmxpbmtf cmF0ZTsNCj4gPiArICAgICBjZG5zX3BoeS0+bnVtX2xhbmVzID0gb3B0cy0+ZHAubGFuZXM7DQo+ ID4gKw0KPiA+ICsgICAgIGlmIChjZG5zX3BoeS0+bGlua19yYXRlID4gTUFYX0xJTktfUkFURSkg ew0KPiA+ICsgICAgICAgICAgICAgZGV2X2VycihjZG5zX3BoeS0+ZGV2LCAiTGluayBSYXRlKCVk KSBOb3Qgc3VwcG9ydGVkXG4iLA0KPiA+IGNkbnNfcGh5LT5saW5rX3JhdGUpOyArICAgICAgICAg ICAgICAgcmV0dXJuIGZhbHNlOw0KPiA+ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgLyogRGlz YWJsZSBwaHkgY2xvY2sgaWYgUEhZIGluIHBvd2VyIHVwIHN0YXRlICovDQo+ID4gKyAgICAgaGRw dHhfZHBfcGh5X3Bvd2VyX2Rvd24oY2Ruc19waHkpOw0KPiA+ICsNCj4gPiArICAgICBpZiAoY2Ru c19waHktPnJlZl9jbGtfcmF0ZSA9PSBSRUZfQ0xLXzI3TUhaKSB7DQo+ID4gKyAgICAgICAgICAg ICBoZHB0eF9kcF9waHlfcG1hX2Ntbl9jZmdfMjdtaHooY2Ruc19waHkpOw0KPiA+ICsgICAgICAg ICAgICAgaGRwdHhfZHBfcGh5X3BtYV9jbW5fcGxsMF8yN21oeihjZG5zX3BoeSk7DQo+ID4gKyAg ICAgfSBlbHNlIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoY2Ruc19waHktPmRldiwgIk5v dCBzdXBwb3J0IHJlZiBjbG9jayByYXRlXG4iKTsNCj4gPiArICAgICB9DQo+ID4gKw0KPiA+ICsg ICAgIC8qIFBIWSBwb3dlciB1cCAqLw0KPiA+ICsgICAgIHJldCA9IGhkcHR4X2RwX3BoeV9wb3dl cl91cChjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiByZXQ7DQo+ID4gK30NCj4g PiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgcGh5X29wcyBjZG5zX2hkcHR4X2RwX3BoeV9v cHMgPSB7DQo+ID4gKyAgICAgLmluaXQgPSBjZG5zX2hkcHR4X2RwX3BoeV9pbml0LA0KPiA+ICsg ICAgIC5jb25maWd1cmUgPSBjZG5zX2hkcHR4X2RwX2NvbmZpZ3VyZSwNCj4gPiArICAgICAucG93 ZXJfb24gPSBjZG5zX2hkcHR4X2RwX3BoeV9vbiwNCj4gPiArICAgICAucG93ZXJfb2ZmID0gY2Ru c19oZHB0eF9kcF9waHlfb2ZmLA0KPiA+ICsgICAgIC5vd25lciA9IFRISVNfTU9EVUxFLA0KPiA+ ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjZG5zX2hkcHR4X2RwX3BoeV9wcm9iZShzdHJ1 Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRwdHhf ZHBfcGh5ICpjZG5zX3BoeTsNCj4gPiArICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmcGRldi0+ ZGV2Ow0KPiA+ICsgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbm9kZSA9IGRldi0+b2Zfbm9kZTsN Cj4gPiArICAgICBzdHJ1Y3QgcGh5X3Byb3ZpZGVyICpwaHlfcHJvdmlkZXI7DQo+ID4gKyAgICAg c3RydWN0IHJlc291cmNlICpyZXM7DQo+ID4gKyAgICAgc3RydWN0IHBoeSAqcGh5Ow0KPiA+ICsg ICAgIGludCByZXQ7DQo+ID4gKw0KPiA+ICsgICAgIGNkbnNfcGh5ID0gZGV2bV9remFsbG9jKGRl diwgc2l6ZW9mKCpjZG5zX3BoeSksIEdGUF9LRVJORUwpOw0KPiA+ICsgICAgIGlmICghY2Ruc19w aHkpDQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsNCj4gPiArDQo+ID4gKyAgICAg ZGV2X3NldF9kcnZkYXRhKGRldiwgY2Ruc19waHkpOw0KPiA+ICsgICAgIGNkbnNfcGh5LT5kZXYg PSBkZXY7DQo+ID4gKyAgICAgbXV0ZXhfaW5pdCgmY2Ruc19waHktPm1ib3hfbXV0ZXgpOw0KPiA+ ICsNCj4gPiArICAgICByZXMgPSBwbGF0Zm9ybV9nZXRfcmVzb3VyY2UocGRldiwgSU9SRVNPVVJD RV9NRU0sIDApOw0KPiA+ICsgICAgIGlmICghcmVzKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJu IC1FTk9ERVY7DQo+ID4gKyAgICAgY2Ruc19waHktPnJlZ3MgPSBkZXZtX2lvcmVtYXAoZGV2LCBy ZXMtPnN0YXJ0LCByZXNvdXJjZV9zaXplKHJlcykpOw0KPiA+ICsgICAgIGlmIChJU19FUlIoY2Ru c19waHktPnJlZ3MpKQ0KPiA+ICsgICAgICAgICAgICAgcmV0dXJuIFBUUl9FUlIoY2Ruc19waHkt PnJlZ3MpOw0KPiA+ICsNCj4gPiArICAgICBwaHkgPSBkZXZtX3BoeV9jcmVhdGUoZGV2LCBub2Rl LCAmY2Ruc19oZHB0eF9kcF9waHlfb3BzKTsNCj4gPiArICAgICBpZiAoSVNfRVJSKHBoeSkpDQo+ ID4gKyAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihwaHkpOw0KPiA+ICsNCj4gPiArICAgICBw aHktPmF0dHJzLm1vZGUgPSBQSFlfTU9ERV9EUDsNCj4gPiArICAgICBjZG5zX3BoeS0+cGh5ID0g cGh5Ow0KPiA+ICsgICAgIHBoeV9zZXRfZHJ2ZGF0YShwaHksIGNkbnNfcGh5KTsNCj4gPiArDQo+ ID4gKyAgICAgLyogaW5pdCBiYXNlIHN0cnVjdCBmb3IgYWNjZXNzIG1oZHAgbWFpbGJveCAqLw0K PiA+ICsgICAgIGNkbnNfcGh5LT5iYXNlLmRldiA9IGNkbnNfcGh5LT5kZXY7DQo+ID4gKyAgICAg Y2Ruc19waHktPmJhc2UucmVncyA9IGNkbnNfcGh5LT5yZWdzOw0KPiA+ICsgICAgIGNkbnNfcGh5 LT5iYXNlLm1ib3hfbXV0ZXggPSAmY2Ruc19waHktPm1ib3hfbXV0ZXg7DQo+DQo+IEhvdyBpcyB0 aGlzIG11dGV4IHN1cHBvc2VkIHRvIHdvcms/IEZyb20gdGhlIG5hbWUNCj4gY2Ruc19waHktPmJh c2UubWJveF9tdXRleCBpcyBzdXBwb3NlZCB0byBwcm90ZWN0IHRoZSBtYWlsYm94IGFjY2VzcyBp biB0aGUNCj4gY2Rucy1taGRwIGJhc2UsIHJpZ2h0Pw0KPiBCdXQgdGhpcyBtdXRleCBpcyBkaWZm ZXJlbnQsIGluaXRpYWxpemVkIHNlcGFyYXRlbHkgYW5kIHRodXMgaXMgaW5kZXBlbmRlbnQgZnJv bQ0KPiBtaGRwLT5tYm94X211dGV4IGluIGNkbnMtbWhkcDg1MDEtY29yZS5jLg0KDQpZZXMsIHRo aXMgbXV0ZXggdXNlIHRvIHByb3RlY3QgbWFpbGJveCBhY2Nlc3MgaW4gUEhZIGRyaXZlciBvbmx5 Lg0KSW4gY2Rucy1taGRwODUwMS1jb3JlLmMgZHJpdmVyLCBldmVyeSBhY2Nlc3MgUEhZIEFQSSBm dW5jdGlvbnMgYXJlIHByb3RlY3RlZCBieSBjb3JlIGRyaXZlcidzIG1ib3hfbXV0ZXguDQoNCkJl c3QgcmVnYXJkcywNClNhbmRvcg0KDQo+DQo+IEJlc3QgcmVnYXJkcywNCj4gQWxleGFuZGVyDQo+ DQo+ID4gKw0KPiA+ICsgICAgIHJldCA9IGhkcHR4X2RwX2Nsa19lbmFibGUoY2Ruc19waHkpOw0K PiA+ICsgICAgIGlmIChyZXQpIHsNCj4gPiArICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiSW5p dCBjbGsgZmFpbFxuIik7DQo+ID4gKyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPiAr ICAgICB9DQo+ID4gKw0KPiA+ICsgICAgIHBoeV9wcm92aWRlciA9IGRldm1fb2ZfcGh5X3Byb3Zp ZGVyX3JlZ2lzdGVyKGRldiwNCj4gb2ZfcGh5X3NpbXBsZV94bGF0ZSk7DQo+ID4gKyAgICAgaWYg KElTX0VSUihwaHlfcHJvdmlkZXIpKSB7DQo+ID4gKyAgICAgICAgICAgICByZXQgPSBQVFJfRVJS KHBoeV9wcm92aWRlcik7DQo+ID4gKyAgICAgICAgICAgICBnb3RvIGNsa19kaXNhYmxlOw0KPiA+ ICsgICAgIH0NCj4gPiArDQo+ID4gKyAgICAgcmV0dXJuIDA7DQo+ID4gKw0KPiA+ICtjbGtfZGlz YWJsZToNCj4gPiArICAgICBoZHB0eF9kcF9jbGtfZGlzYWJsZShjZG5zX3BoeSk7DQo+ID4gKw0K PiA+ICsgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50 IGNkbnNfaGRwdHhfZHBfcGh5X3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KSB7 DQo+ID4gKyAgICAgc3RydWN0IGNkbnNfaGRwdHhfZHBfcGh5ICpjZG5zX3BoeSA9IHBsYXRmb3Jt X2dldF9kcnZkYXRhKHBkZXYpOw0KPiA+ICsNCj4gPiArICAgICBoZHB0eF9kcF9jbGtfZGlzYWJs ZShjZG5zX3BoeSk7DQo+ID4gKw0KPiA+ICsgICAgIHJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0K PiA+ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBjZG5zX2hkcHR4X2RwX3BoeV9v Zl9tYXRjaFtdID0gew0KPiA+ICsgICAgIHsuY29tcGF0aWJsZSA9ICJmc2wsaW14OG1xLWRwLXBo eSIgfSwNCj4gPiArICAgICB7IC8qIHNlbnRpbmVsICovIH0NCj4gPiArfTsNCj4gPiArTU9EVUxF X0RFVklDRV9UQUJMRShvZiwgY2Ruc19oZHB0eF9kcF9waHlfb2ZfbWF0Y2gpOw0KPiA+ICsNCj4g PiArc3RhdGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgY2Ruc19oZHB0eF9kcF9waHlfZHJpdmVy ID0gew0KPiA+ICsgICAgIC5wcm9iZSA9IGNkbnNfaGRwdHhfZHBfcGh5X3Byb2JlLA0KPiA+ICsg ICAgIC5yZW1vdmUgPSBjZG5zX2hkcHR4X2RwX3BoeV9yZW1vdmUsDQo+ID4gKyAgICAgLmRyaXZl ciA9IHsNCj4gPiArICAgICAgICAgICAgIC5uYW1lICAgPSAiY2Rucy1oZHB0eC1kcC1waHkiLA0K PiA+ICsgICAgICAgICAgICAgLm9mX21hdGNoX3RhYmxlID0gY2Ruc19oZHB0eF9kcF9waHlfb2Zf bWF0Y2gsDQo+ID4gKyAgICAgfQ0KPiA+ICt9Ow0KPiA+ICttb2R1bGVfcGxhdGZvcm1fZHJpdmVy KGNkbnNfaGRwdHhfZHBfcGh5X2RyaXZlcik7DQo+ID4gKw0KPiA+ICtNT0RVTEVfQVVUSE9SKCJT YW5kb3IgWXUgPHNhbmRvci55dUBueHAuY29tPiIpOw0KPiA+ICtNT0RVTEVfREVTQ1JJUFRJT04o IkNhZGVuY2UgSERQLVRYIERpc3BsYXlQb3J0IFBIWSBkcml2ZXIiKTsNCj4gPiArTU9EVUxFX0xJ Q0VOU0UoIkdQTCIpOw0KPg0KPg0KPiAtLQ0KPiBUUS1TeXN0ZW1zIEdtYkggfCBNw7xobHN0cmHD n2UgMiwgR3V0IERlbGxpbmcgfCA4MjIyOSBTZWVmZWxkLCBHZXJtYW55DQo+IEFtdHNnZXJpY2h0 IE3DvG5jaGVuLCBIUkIgMTA1MDE4DQo+IEdlc2Now6RmdHNmw7xocmVyOiBEZXRsZWYgU2NobmVp ZGVyLCBSw7xkaWdlciBTdGFobCwgU3RlZmFuIFNjaG5laWRlcg0KPiBodHRwOi8vd3d3LnRxLS8N Cj4gZ3JvdXAuY29tJTJGJmRhdGE9MDUlN0MwMSU3Q1NhbmRvci55dSU0MG54cC5jb20lN0M4YzQy MDZiODNlZTkNCj4gNDlmNzNmMjEwOGRiY2YxMDcyZWElN0M2ODZlYTFkM2JjMmI0YzZmYTkyY2Q5 OWM1YzMwMTYzNSU3QzAlN0MwDQo+ICU3QzYzODMzMTQ0MTc5NjgzMzUzMSU3Q1Vua25vd24lN0NU V0ZwYkdac2IzZDhleUpXSWpvaU1DNHdMag0KPiBBd01EQWlMQ0pRSWpvaVYybHVNeklpTENKQlRp STZJazFoYVd3aUxDSlhWQ0k2TW4wJTNEJTdDMzAwMCU3QyU3DQo+IEMlN0Mmc2RhdGE9cXNjMks2 eXJCVlQxQmJCeFQyUnl5ZEQlMkJybUdLQ1RKTyUyRnFnQU9yVU1VTUUlMw0KPiBEJnJlc2VydmVk PTANCj4NCg0K