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 30EEAC433F5 for ; Fri, 27 May 2022 06:02:04 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:Cc:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:In-Reply-To:References: Message-ID:Date:Subject:To:From:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=wxrTcS2S8mRLfvEZzu1ydsNoFkRq3AVki9mdh7aLuDg=; b=pLSuh3TgtOxvvh /OPsUlD4fRPR9CTcF3PqNjDj/lKNfU27Ddle6oOoXEWQf/zpyEU60T29nPadlNpJahvqqLelcabck 5rkmiqY3pfWggHbNQCdJPykirnkhbOVsp2A8N6IZMrm2+zeOCsLvSzATJ1JXVhH2fT1ZSxH/uxMun fQVz14afiAqhM9nYQeMPQmM9d+u7GD/vdE9ZnDspBs2jE7v5aVJOLH+R8zQa4xMs2EbvHmPbW96m2 uWfgMHMByzzQ3+S8eL0iQRa64KJWjjobBvHM/HU0HRXJDLRwDYZBO8DAranw0oyJw85SuEmGkuUM9 ek1fOdgeQtlD5XPGn0TA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nuT1J-00GitS-MU; Fri, 27 May 2022 06:00:21 +0000 Received: from esa.microchip.iphmx.com ([68.232.153.233]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nuT1B-00Gipt-GR for linux-arm-kernel@lists.infradead.org; Fri, 27 May 2022 06:00:19 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1653631213; x=1685167213; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=zp7kCOmf1laXyJFy5ilcYIoiXRmSV4l3pVwejbPFVjU=; b=O2F8l0fou333gDnHKQKVFImuWu3Chy+AVkVSZL5MY+82KKGk2AxZY9AJ xxfZGVzW+De1Q5dUWu1j5FP5biNgH4CiJbWeb2JEOZbNK6Q2JVA3qrcvg 30r9EueqMR4L7w2eP+XlEvXy7wbkSq7dd96eyQH7HqgR9eiuArw3AkkHa HgbXeMido9Tj+AOX2b2HExm7rC3atWj9H7PFeQ1RY3czGKEWYmajB8c1T 76Ihw6aP480n4OInJUem0z9Gp5D9M6RPfH9SRzgxwrqgTxKWONqXCOhgQ itd9QHY53dM+9FihmASuz5RibI9qQP+RzdMq6vRnW2scZnFWbIxQa7gwQ g==; X-IronPort-AV: E=Sophos;i="5.91,254,1647327600"; d="scan'208";a="175343642" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa1.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 26 May 2022 23:00:08 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex01.mchp-main.com (10.10.85.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Thu, 26 May 2022 23:00:08 -0700 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17 via Frontend Transport; Thu, 26 May 2022 23:00:08 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bo2qZ7zjUY8w0ki2RBauHzj2WSi71ykP6OvJ/oxlJOQv+jjIh0Q0A6K0gFuZRgV+5/9U4ogY2m2zrmNeHNfdSHE1INnFsAVH79uyepFQFBwSBYJFMr+FpuH54Z/V6RGL8QH/smEO3ekA+baAO++NJe7j1FPn/Ti4BfguVVR/YL2RoUaBq2WHwFOE1EuEHkFrtChyCp2DMPFJCI4tB7WTuSItQPvyqNz0fWr5VQe7hA9njAI4vZ6k4q7Q1yxsV91RnLGVewQGp7WxrzBEuTt3BxUS0v9Tn9gF3GFVOPZ7WixQV9VtwJ80oyetaY1e4mud2+yJefq8QlHXBdtQ9krjTg== 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=zp7kCOmf1laXyJFy5ilcYIoiXRmSV4l3pVwejbPFVjU=; b=OUrF4Ke5b9A9/GTlVR8RzWP5QnGufJd1sla9bOMjWn5pPPGO4zEdWKtnxUySXq60AGF1k9PSg2qRddi8LvDbVM1bnePk1tkkNERiK/eVoe30CVIUWFRxbVD/Z42aiKW5IGLDaHl870AhlNMJrlgYHdxnZNzoLEqFK4M5G6IVTT2+V/49tIs+SwA841yXNGiDR9G4jv0vyW3oh51L/sQTPT9hv1vMh9uHbsetsqn+OC+Vs31nCioGmxCodvT3LdWuVpU7XyYK0CaNjvdnuUF4c0nZ+mBrXINXHBlNBl8AZP82csPjCmvSO2IXHQXY42II3X8ywhsJ1UnlWoJgladZdg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zp7kCOmf1laXyJFy5ilcYIoiXRmSV4l3pVwejbPFVjU=; b=B6dL5ZKNnRn80hl4lchDeorzY1qU9jBdl2SQv+Ai5xULG7P/E3+GDtb+aumehiOQRwBzEh6N3aBUzqyd7YKa/zLT68aM5eXVuWyPBbNnBby9a2fB6tUEgcvrpO8Uo1N1rCjsMVxUOK9z1ugHChSkG2Heg4XM1BFZtdf3/XbzvKM= Received: from PH0PR11MB4872.namprd11.prod.outlook.com (2603:10b6:510:32::18) by CH2PR11MB4405.namprd11.prod.outlook.com (2603:10b6:610:49::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5293.13; Fri, 27 May 2022 06:00:02 +0000 Received: from PH0PR11MB4872.namprd11.prod.outlook.com ([fe80::d50e:af1b:6055:9662]) by PH0PR11MB4872.namprd11.prod.outlook.com ([fe80::d50e:af1b:6055:9662%7]) with mapi id 15.20.5293.013; Fri, 27 May 2022 06:00:02 +0000 From: To: Subject: RE: [PATCH v2 4/4] mux: lan966: Add support for flexcom mux controller Thread-Topic: [PATCH v2 4/4] mux: lan966: Add support for flexcom mux controller Thread-Index: AQHYY4HD8kPvWd0rOEOlE7g5upEelq0Wa3OAgAG+DsCAAFprgIAAuvQAgACV2gCAGIDIIA== Date: Fri, 27 May 2022 06:00:02 +0000 Message-ID: References: <20220509084920.14529-1-kavyasree.kotagiri@microchip.com> <20220509084920.14529-5-kavyasree.kotagiri@microchip.com> <59288dbf-bea2-a12e-93d2-c7c95f5568f6@axentia.se> In-Reply-To: Accept-Language: en-IN, 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=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0453492d-4dcb-4221-3a7b-08da3fa623ab x-ms-traffictypediagnostic: CH2PR11MB4405:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: +LHv7huV6Ger5VYljOjnascGCh82qAZfMwaQtto/ybRc0ov/kKYe9WAii8VcIfn1Xu+xSgdOUwIvL6Jj8AczWOwRFEL0YscbWcswBxWVE730jzgql7GJnfzWmaHWn6TKH5mbDbPGdWZTg1xuVILtZcxP08z1RrxDLwMs5wXUalUZQtZxLub/xM5aTaBkvqOlI+BVUcgkUDOG6MFSMpqMjAPYpJo9ED4IMdlM2zP8lizA1i30KVlkXi1d40bOj+YB5YV5hkKvAhxNCbWtgKHeJ9WUcH5c+v/6vYP5bVnfc4mVbLc3j9AYQQIPHjgt0YhKj+ngqoFfdWyDYKwH/FqTpmgk/vU+NDaFE7YYdvVYN4nj5A+Ofji2HKBUB+YCS+0qRezJhaW4zsWGc1uYiK+dh1UQ6J4I9Jm3DfdLkuqe/Y2uHnlUw3Btfn1B7dO4+SQ6Ah1j5KLPooT9RnaHJrm1MCfqetDUlwHRRBdf8y8SId7qQSu3nezZzjHHEXUbYlowGNFOO+dzk0xfArjjNhaYxjrVvXkNiQfwYYBzQ1iazWSm8ALDTmLrW63WxkILyUOBJ7/6C2uiycOssUEIPjYoXTu7OiVFpqkGr5kX0gMUMaLRduQdNlVZX++8WeN9PinncoknrucFT5xDxyq+3f4lU0htopiiKhpesuifU00ddDrQLwAAMgas3fY03pYMCXWQ7ROMIf1h8KN9Q06g4jJzBg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR11MB4872.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(71200400001)(83380400001)(33656002)(9686003)(2906002)(53546011)(7696005)(508600001)(6506007)(8936002)(52536014)(30864003)(5660300002)(38100700002)(186003)(107886003)(86362001)(54906003)(6916009)(122000001)(76116006)(316002)(66946007)(38070700005)(55016003)(66476007)(4326008)(66556008)(66446008)(64756008)(8676002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N2hlV3VnYktiWC95UThpTEZaZUR6NXByQU1NbFdOWlRNc2E0S0NGNEpud1hL?= =?utf-8?B?UzVxbEgya2RaUi9OeVpBWUs3S2VUS1JRY0xiVWRDRG0zZGE5cUhZM2hTVzM5?= =?utf-8?B?VXRLQnlIdWcxVm5BVGNNWjlTZkF2MjRKV0E3R2hKNGd6ZzV0c0xJV1BEcTVz?= =?utf-8?B?S0J4UGtoNHVvZzdwWlo0V3lIajVxQm91alpRa0cwaWZOemUrN0wrWDlGVEJB?= =?utf-8?B?c3g1SExuSEtMY3pzWkJvQWxEeDB3d1c0dkx0NWpzOTBXRUQ0VlNyVVBwcjJu?= =?utf-8?B?bDdPb0hTQXM3bEFpcGZweWZhK3B5TFk4VE9RMFNVMTgzK0c5L0tNcG9QOTNv?= =?utf-8?B?dmg2eDhTZDVVd0ltN1B2clJ1ZVFCejFlbGFXbnN2V1FNSlZEekNjMmxycmxy?= =?utf-8?B?NmovVTVRcDQzc1QvSktlMUpIbFpzSUdFb0F4VGRVbFVsWmdlZ1JQaDU0eTUy?= =?utf-8?B?bUZDaE5rUmxMT0lLRWlRdmVocWwzZmlML3hvVWtsQzlCUzRZM3JTRjFzYkhR?= =?utf-8?B?cTRhZ2lJZWF3eVpBY3c4ZGYxWG5rVlVoN1Nzd2hkckUrOTRJQUVzcGhhUlNh?= =?utf-8?B?SEFsMFZ2ZHM2dFp1YnJudytkSjIzYWxYTGpobDRkNmNPY2xxWm4xM0ZDS0x2?= =?utf-8?B?OUxoaW1GOCtwdmlUZ213UzRNWUlNNTZuVTBJeWJ0OG5vS2U2ckhBaWdxcE5w?= =?utf-8?B?MS9iS3BxQ1BMZlFxWis5RU1QaTFvTDhrRmhnNTQ5Vmh4R0lKUDd4RklrSFBI?= =?utf-8?B?TVpBZHFWS2lJSUxESXZYZXB2UmR0WFZsdGZlVkNYTWl3RkNacDFXQUhacUds?= =?utf-8?B?aThKNWhhSmhLa1FOSXJGMGZyWnNxTjRjeGdpNU1GSW5Yb3NRaWw1eHlNZ2Nr?= =?utf-8?B?bmRoKzErNlZWbFlBT0pXQ2RKeFRxcGVZaTNyUHVoM2FBRDhMWk5odEJ4RTJ0?= =?utf-8?B?UU1XQkZxVFlYQnlzaHZ5YWNUSFZZUU1lTWNZNWtFQi9XUGY1QUZRaWUwOG50?= =?utf-8?B?aHFLL09OVTY5TmhHUW1nRmkzeVZZK3dXR0M4VWZrajdESldxTjJLMzdTUk5I?= =?utf-8?B?dWJxWVFBakE2cEMySFNDZWFRUHRRVUhMQm1mUjdyNU95MGorVU9sQzNzYVFE?= =?utf-8?B?eHFpTXVnTjN1V3J2cFZjaGd0NzhrZ01NNG1xM0dlRWU3SlcyVUVUb2p6L0lO?= =?utf-8?B?NVR6Ui9RVGI1UVl2YVhSZXBiaTJueFNvUjlVS1B3aWZGejBmaHd0OG40VEtX?= =?utf-8?B?Ykd6ZVdoSGRhM21tRHRUMUJqWEdGMjZiQTRsMWt3N0RwV1MzVFM4VERIeXJ4?= =?utf-8?B?TUZET3l0Qm8vQ2twV3h1YjE3RzIzWkk2U0tXY1J4SXU2TXd6OVlMYWN5cHho?= =?utf-8?B?d1RVbWkxOWs4OGVKNzFPaXh3NmhJdUd6aHRKQUJnaVNaLzdMdW8zZkttNjhh?= =?utf-8?B?d016MjA4ckdCYllScUo1a0xHNHZTTFRuaUJaamt5ZXdVN05IMlh2ZTduKzZD?= =?utf-8?B?UjhBcUxLc3dnc0d2NFVaZlM0d21xYms0ZzUvMVN5ckVoRDdYMUtSSGMzWTNV?= =?utf-8?B?K004dHhOWnJtUDR2cVZUekRKcUVORU5HdFd6Uzlqdy9rTy9Vbkxwd2R1U29p?= =?utf-8?B?WmJ3WUJSWEJnOFhueXJYb3N2em44bTJRR0FHMzlEZ0ljQ3RrZWI3T1ZmSTIz?= =?utf-8?B?NXRpL3pNYzE4bHVWM2VLdDNyRGFuL3ZaNTZvblo0V1ZPSFIzSjJCVXkwTUkx?= =?utf-8?B?VTJRanJsLzJaOXBmL1JzRUsrcGxLaFNwNkRWbHh2L2FDL25OejYxM0tXWUFX?= =?utf-8?B?aVVSV0RlWFNNbFcwbnBwRW9OWUpHMHlQeTlHb0ZBMUx0ZTdZeStFSlViTG1q?= =?utf-8?B?Z0VmM0h4MHBTUHVaeWlZN2c4bXp2d1oxVUI4Zk1hUklJQUw4MTMwbzQxS0ow?= =?utf-8?B?TTYrR2czMjk2SWNEeWE3ajM2bW5mL1JwOGQxSEMyMnJYQmRYRERFN0I3WHBQ?= =?utf-8?B?d0pCOStnZ3Y2UGU1VkFCL1FsNThENzllN1dEZnhHcTlqS2pkZXVZbnRmOFJ1?= =?utf-8?B?WGplbzlOdDh3NzNjMXA3eXNJb280YUpQb1RGWVY1NFVabTB4N1E0aWV1dmZR?= =?utf-8?B?WDBRbHhOZU1wVlpWYS9rL294SnZXbTlpWm9QbHRGT1hjeFJlRG9vQmxmMDZq?= =?utf-8?B?ZzcxTVF3T3RjT0NMMGlCYmFKdm5vNTFIYy9pcmFOMitTMHFJZmhxRlJjd0Fw?= =?utf-8?B?MlN4WkIxZDVEZFBBeGZYSGw1ZnQyMDcrMm02UXNJczV2YjNsQnM0VWJ1Wm5I?= =?utf-8?B?YmErUEo0b3lYbDJLbEJZRURXc0cwU2V6UzRJVjJBV1YxNDVndGhGcU1tb3gv?= =?utf-8?Q?9ImAXEPNGXq03Wao=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR11MB4872.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0453492d-4dcb-4221-3a7b-08da3fa623ab X-MS-Exchange-CrossTenant-originalarrivaltime: 27 May 2022 06:00:02.1578 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: nxnQyn2EPpIKYDMrHHwnzPvMYawpCh7j5hoa/aMw99XGwNbq3Ea7Cp23/DS9DwOlPHC9i0Hi5v+slrxd+ElhFkOQt7fUANpCt+OrF2r7oZ70sSQ/BCPDL8Ew9h7ceBn7 X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH2PR11MB4405 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220526_230013_851761_2495CC62 X-CRM114-Status: GOOD ( 23.78 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: devicetree@vger.kernel.org, alexandre.belloni@bootlin.com, linux-kernel@vger.kernel.org, linux@armlinux.org.uk, krzysztof.kozlowski+dt@linaro.org, Manohar.Puri@microchip.com, UNGLinuxDriver@microchip.com, lee.jones@linaro.org, Claudiu.Beznea@microchip.com, linux-arm-kernel@lists.infradead.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org SGkgUGV0ZXIsDQoNClRoYW5rcyBmb3IgeW91ciBjb21tZW50cy4NCj4gSWYgeW91IGFyZSBjb250 ZW50IHdpdGgganVzdCBwcm9ncmFtbWluZyBhIGZpeGVkIHNldCBvZiB2YWx1ZXMgdG8NCj4gYSBj b3VwbGUgb2YgcmVnaXN0ZXJzIGRlcGVuZGluZyBvbiBob3cgdGhlIGJvYXJkIGlzIHdpcmVkLCBz b21lDQo+IGV4dHJhIERUIHByb3BlcnR5IG9uIHNvbWUgbm9kZSByZWxhdGVkIHRvIHRoZSBmbGV4 Y29tIHNlZW1zIGxpa2UNCj4gYSBiZXR0ZXIgZml0IHRoYW4gYSBtdXggZHJpdmVyLg0KQmFzZWQg b24geW91ciBpbnB1dHMsIEkgcGxhbm5lZCB0byBzZW5kIGEgbmV3IHBhdGNoIHdpdGggbmV3IERU IHByb3BlcnRpZXMNCmludHJvZHVjZWQgaW4gYXRtZWwtZmxleGNvbS5jIGRyaXZlciByYXRoZXIg dGhhbiBtdXggZHJpdmVyLg0KDQpUaGFua3MsDQpLYXZ5YQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+IEZyb206IFBldGVyIFJvc2luIFttYWlsdG86cGVkYUBheGVudGlhLnNlXQ0K PiBTZW50OiBXZWRuZXNkYXksIE1heSAxMSwgMjAyMiA5OjE0IFBNDQo+IFRvOiBLYXZ5YXNyZWUg S290YWdpcmkgLSBJMzA5NzggPEthdnlhc3JlZS5Lb3RhZ2lyaUBtaWNyb2NoaXAuY29tPg0KPiBD YzogZGV2aWNldHJlZUB2Z2VyLmtlcm5lbC5vcmc7IGxpbnV4LWFybS1rZXJuZWxAbGlzdHMuaW5m cmFkZWFkLm9yZzsgbGludXgtDQo+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IGxlZS5qb25lc0Bs aW5hcm8ub3JnOyBsaW51eEBhcm1saW51eC5vcmcudWs7DQo+IE1hbm9oYXIgUHVyaSAtIEkzMDQ4 OCA8TWFub2hhci5QdXJpQG1pY3JvY2hpcC5jb20+OyBVTkdMaW51eERyaXZlcg0KPiA8VU5HTGlu dXhEcml2ZXJAbWljcm9jaGlwLmNvbT47IGtyenlzenRvZi5rb3psb3dza2krZHRAbGluYXJvLm9y ZzsNCj4gTmljb2xhcyBGZXJyZSAtIE00MzIzOCA8Tmljb2xhcy5GZXJyZUBtaWNyb2NoaXAuY29t PjsNCj4gYWxleGFuZHJlLmJlbGxvbmlAYm9vdGxpbi5jb207IENsYXVkaXUgQmV6bmVhIC0gTTE4 MDYzDQo+IDxDbGF1ZGl1LkJlem5lYUBtaWNyb2NoaXAuY29tPg0KPiBTdWJqZWN0OiBSZTogW1BB VENIIHYyIDQvNF0gbXV4OiBsYW45NjY6IEFkZCBzdXBwb3J0IGZvciBmbGV4Y29tIG11eA0KPiBj b250cm9sbGVyDQo+IA0KPiBFWFRFUk5BTCBFTUFJTDogRG8gbm90IGNsaWNrIGxpbmtzIG9yIG9w ZW4gYXR0YWNobWVudHMgdW5sZXNzIHlvdSBrbm93IHRoZQ0KPiBjb250ZW50IGlzIHNhZmUNCj4g DQo+IEhpIQ0KPiANCj4gMjAyMi0wNS0xMSBhdCAxNjoyOCwgS2F2eWFzcmVlLktvdGFnaXJpQG1p Y3JvY2hpcC5jb20gd3JvdGU6DQo+ID4+IDIwMjItMDUtMTAgYXQgMTY6NTksIEthdnlhc3JlZS5L b3RhZ2lyaUBtaWNyb2NoaXAuY29tIHdyb3RlOg0KPiA+Pj4+PiBMQU45NjYgU29DIGhhdmUgNSBm bGV4Y29tcy4gRWFjaCBmbGV4Y29tIGhhcyAyIGNoaXAtc2VsZWN0cy4NCj4gPj4+Pj4gRm9yIGVh Y2ggY2hpcCBzZWxlY3Qgb2YgZWFjaCBmbGV4Y29tIHRoZXJlIGlzIGEgY29uZmlndXJhdGlvbg0K PiA+Pj4+PiByZWdpc3RlciBGTEVYQ09NX1NIQVJFRFswLTRdOlNTX01BU0tbMC0xXS4gVGhlIHdp ZHRoIG9mDQo+ID4+Pj4+IGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgaXMgMjEgYmVjYXVzZSB0aGVy ZSBhcmUgMjEgc2hhcmVkIHBpbnMNCj4gPj4+Pj4gb24gZWFjaCBvZiB3aGljaCB0aGUgY2hpcCBz ZWxlY3QgY2FuIGJlIG1hcHBlZC4gRWFjaCBiaXQgb2YgdGhlDQo+ID4+Pj4+IHJlZ2lzdGVyIHJl cHJlc2VudHMgYSBkaWZmZXJlbnQgRkxFWENPTV9TSEFSRUQgcGluLg0KPiA+Pj4+Pg0KPiA+Pj4+ PiBTaWduZWQtb2ZmLWJ5OiBLYXZ5YXNyZWUgS290YWdpcmkNCj4gPGthdnlhc3JlZS5rb3RhZ2ly aUBtaWNyb2NoaXAuY29tPg0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4gIGFyY2gvYXJtL21hY2gtYXQ5 MS9LY29uZmlnICB8ICAgMiArDQo+ID4+Pj4+ICBkcml2ZXJzL21mZC9hdG1lbC1mbGV4Y29tLmMg fCAgNTUgKysrKysrKysrKysrKysrLQ0KPiA+Pj4+PiAgZHJpdmVycy9tdXgvS2NvbmZpZyAgICAg ICAgIHwgIDEyICsrKysNCj4gPj4+Pj4gIGRyaXZlcnMvbXV4L01ha2VmaWxlICAgICAgICB8ICAg MiArDQo+ID4+Pj4+ICBkcml2ZXJzL211eC9sYW45NjYtZmx4LmMgICAgfCAxMjENCj4gPj4+PiAr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gPj4+Pj4gIDUgZmlsZXMgY2hh bmdlZCwgMTkxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4gPj4+Pj4gIGNyZWF0ZSBt b2RlIDEwMDY0NCBkcml2ZXJzL211eC9sYW45NjYtZmx4LmMNCj4gPj4+Pj4NCj4gPj4+Pj4gZGlm ZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtYXQ5MS9LY29uZmlnIGIvYXJjaC9hcm0vbWFjaC0NCj4g YXQ5MS9LY29uZmlnDQo+ID4+Pj4+IGluZGV4IDI3OTgxMDM4MTI1Ni4uMjZmYjBmNGUxYjc5IDEw MDY0NA0KPiA+Pj4+PiAtLS0gYS9hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZw0KPiA+Pj4+PiAr KysgYi9hcmNoL2FybS9tYWNoLWF0OTEvS2NvbmZpZw0KPiA+Pj4+PiBAQCAtNzQsNiArNzQsOCBA QCBjb25maWcgU09DX0xBTjk2Ng0KPiA+Pj4+PiAgICAgICBzZWxlY3QgRFdfQVBCX1RJTUVSX09G DQo+ID4+Pj4+ICAgICAgIHNlbGVjdCBBUk1fR0lDDQo+ID4+Pj4+ICAgICAgIHNlbGVjdCBNRU1P UlkNCj4gPj4+Pj4gKyAgICAgc2VsZWN0IE1VTFRJUExFWEVSDQo+ID4+Pj4+ICsgICAgIHNlbGVj dCBNVVhfTEFOOTY2DQo+ID4+Pj4+ICAgICAgIGhlbHANCj4gPj4+Pj4gICAgICAgICBUaGlzIGVu YWJsZXMgc3VwcG9ydCBmb3IgQVJNdjcgYmFzZWQgTWljcm9jaGlwIExBTjk2NiBTb0MNCj4gPj4g ZmFtaWx5Lg0KPiA+Pj4+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZmQvYXRtZWwt ZmxleGNvbS5jIGIvZHJpdmVycy9tZmQvYXRtZWwtDQo+IGZsZXhjb20uYw0KPiA+Pj4+PiBpbmRl eCA1NTllYjRkMzUyYjYuLjdjZmQwZmMzZjRmMCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvZHJpdmVy cy9tZmQvYXRtZWwtZmxleGNvbS5jDQo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvbWZkL2F0bWVsLWZs ZXhjb20uYw0KPiA+Pj4+PiBAQCAtMTcsNiArMTcsNyBAQA0KPiA+Pj4+PiAgI2luY2x1ZGUgPGxp bnV4L2lvLmg+DQo+ID4+Pj4+ICAjaW5jbHVkZSA8bGludXgvY2xrLmg+DQo+ID4+Pj4+ICAjaW5j bHVkZSA8ZHQtYmluZGluZ3MvbWZkL2F0bWVsLWZsZXhjb20uaD4NCj4gPj4+Pj4gKyNpbmNsdWRl IDxsaW51eC9tdXgvY29uc3VtZXIuaD4NCj4gPj4+Pj4NCj4gPj4+Pj4gIC8qIEkvTyByZWdpc3Rl ciBvZmZzZXRzICovDQo+ID4+Pj4+ICAjZGVmaW5lIEZMRVhfTVIgICAgICAgICAgICAgIDB4MCAg ICAgLyogTW9kZSBSZWdpc3RlciAqLw0KPiA+Pj4+PiBAQCAtMjgsNiArMjksMTAgQEANCj4gPj4+ Pj4gICNkZWZpbmUgRkxFWF9NUl9PUE1PREUob3Btb2RlKSAgICAgICAoKChvcG1vZGUpIDw8DQo+ ID4+Pj4gRkxFWF9NUl9PUE1PREVfT0ZGU0VUKSAmICBcDQo+ID4+Pj4+ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBGTEVYX01SX09QTU9ERV9NQVNLKQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAr c3RydWN0IGF0bWVsX2ZsZXhfY2FwcyB7DQo+ID4+Pj4+ICsgICAgIGJvb2wgaGFzX2ZseF9tdXg7 DQo+ID4+Pj4+ICt9Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICBzdHJ1Y3QgYXRtZWxfZmxleGNvbSB7 DQo+ID4+Pj4+ICAgICAgIHZvaWQgX19pb21lbSAqYmFzZTsNCj4gPj4+Pj4gICAgICAgdTMyIG9w bW9kZTsNCj4gPj4+Pj4gQEAgLTM3LDYgKzQyLDcgQEAgc3RydWN0IGF0bWVsX2ZsZXhjb20gew0K PiA+Pj4+PiAgc3RhdGljIGludCBhdG1lbF9mbGV4Y29tX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9k ZXZpY2UgKnBkZXYpDQo+ID4+Pj4+ICB7DQo+ID4+Pj4+ICAgICAgIHN0cnVjdCBkZXZpY2Vfbm9k ZSAqbnAgPSBwZGV2LT5kZXYub2Zfbm9kZTsNCj4gPj4+Pj4gKyAgICAgY29uc3Qgc3RydWN0IGF0 bWVsX2ZsZXhfY2FwcyAqY2FwczsNCj4gPj4+Pj4gICAgICAgc3RydWN0IHJlc291cmNlICpyZXM7 DQo+ID4+Pj4+ICAgICAgIHN0cnVjdCBhdG1lbF9mbGV4Y29tICpkZGF0YTsNCj4gPj4+Pj4gICAg ICAgaW50IGVycjsNCj4gPj4+Pj4gQEAgLTc2LDEzICs4Miw2MCBAQCBzdGF0aWMgaW50IGF0bWVs X2ZsZXhjb21fcHJvYmUoc3RydWN0DQo+ID4+Pj4gcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiA+ Pj4+PiAgICAgICAgKi8NCj4gPj4+Pj4gICAgICAgd3JpdGVsKEZMRVhfTVJfT1BNT0RFKGRkYXRh LT5vcG1vZGUpLCBkZGF0YS0+YmFzZSArDQo+ID4+IEZMRVhfTVIpOw0KPiA+Pj4+Pg0KPiA+Pj4+ PiArICAgICBjYXBzID0gb2ZfZGV2aWNlX2dldF9tYXRjaF9kYXRhKCZwZGV2LT5kZXYpOw0KPiA+ Pj4+PiArICAgICBpZiAoIWNhcHMpIHsNCj4gPj4+Pj4gKyAgICAgICAgICAgICBkZXZfZXJyKCZw ZGV2LT5kZXYsICJDb3VsZCBub3QgcmV0cmlldmUgZmxleGNvbSBjYXBzXG4iKTsNCj4gPj4+Pj4g KyAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gPj4+Pj4gKyAgICAgfQ0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgICAgIC8qIEZsZXhjb20gTXV4ICovDQo+ID4+Pj4+ICsgICAgIGlmIChjYXBz LT5oYXNfZmx4X211eCAmJiBvZl9wcm9wZXJ0eV9yZWFkX2Jvb2wobnAsICJtdXgtDQo+ID4+IGNv bnRyb2xzIikpDQo+ID4+Pj4gew0KPiA+Pj4+PiArICAgICAgICAgICAgIHN0cnVjdCBtdXhfY29u dHJvbCAqZmx4X211eDsNCj4gPj4+Pj4gKyAgICAgICAgICAgICBzdHJ1Y3Qgb2ZfcGhhbmRsZV9h cmdzIGFyZ3M7DQo+ID4+Pj4+ICsgICAgICAgICAgICAgaW50IGksIGNvdW50Ow0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgICAgICAgICAgICAgZmx4X211eCA9IGRldm1fbXV4X2NvbnRyb2xfZ2V0KCZw ZGV2LT5kZXYsIE5VTEwpOw0KPiA+Pj4+PiArICAgICAgICAgICAgIGlmIChJU19FUlIoZmx4X211 eCkpDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICByZXR1cm4gUFRSX0VSUihmbHhfbXV4 KTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgICAgICAgIGNvdW50ID0gb2ZfcHJvcGVydHlf Y291bnRfc3RyaW5ncyhucCwgIm11eC1jb250cm9sLQ0KPiBuYW1lcyIpOw0KPiA+Pj4+PiArICAg ICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7DQo+ID4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICBlcnIgPSBvZl9wYXJzZV9waGFuZGxlX3dpdGhfZml4ZWRfYXJncyhucCwg Im11eC0NCj4gPj4gY29udHJvbHMiLA0KPiA+Pj4+IDEsIGksICZhcmdzKTsNCj4gPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgIGlmIChlcnIpDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJyZWFrOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICBlcnIgPSBtdXhfY29udHJvbF9zZWxlY3QoZmx4X211eCwgYXJncy5hcmdzWzBdKTsNCj4gPj4+ Pj4gKyAgICAgICAgICAgICAgICAgICAgIGlmICghZXJyKSB7DQo+ID4+Pj4+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG11eF9jb250cm9sX2Rlc2VsZWN0KGZseF9tdXgpOw0KPiA+Pj4+ DQo+ID4+Pj4gVGhpcyBpcyBzdXNwZWN0LiBXaGVuIHlvdSBkZXNlbGVjdCB0aGUgbXV4IHlvdSBy ZWx5IG9uIHRoZSBtdXggdG8gYmUNCj4gPj4+PiBjb25maWd1cmVkIHdpdGggImFzLWlzIiBhcyB0 aGUgaWRsZSBzdGF0ZS4gQnV0IHlvdSBkbyBub3QgZG9jdW1lbnQgdGhhdC4NCj4gPj4+PiBUaGlz IGlzIGFsc28gZnJhZ2lsZSBpbiB0aGF0IHlvdSBzaWxlbnRseSByZWx5IG9uIG5vb25lIGVsc2Ug c2VsZWN0aW5nDQo+ID4+Pj4gdGhlIG11eCB0byBzb21lIHVud2FudGVkIHN0YXRlIGJlaGluZCB5 b3VyIGJhY2sgKG11eCBjb250cm9scyBhcmUNCj4gbm90DQo+ID4+Pj4gZXhjbHVzaXZlIHRoZSB3 YXkgZS5nLiBncGlvIHBpbnMgb3IgcHdtcyBhcmUpLiBUaGUgcHJvdG9jb2wgaXMgdGhhdA0KPiA+ Pj4+IG90aGVycyBtYXkgZ2V0IGEgcmVmIHRvIHRoZSBtdXggY29udHJvbCBhbmQgc2VsZWN0IGl0 IGFzIGxvbmcgYXMgbm9vbmUNCj4gPj4+PiBlbHNlIGhhcyBzZWxlY3RlZCBpdC4NCj4gPj4+Pg0K PiA+Pj4+IFRoZSBvbmx5IHNhbmUgdGhpbmcgdG8gZG8gaXMgdG8ga2VlcCB0aGUgbXV4IHNlbGVj dGVkIGZvciB0aGUgd2hvbGUNCj4gPj4+PiBkdXJhdGlvbiB3aGVuIHlvdSByZWx5IG9uIGl0IHRv IGJlIGluIHlvdXIgZGVzaXJlZCBzdGF0ZS4NCj4gPj4+Pg0KPiA+Pj4NCj4gPj4+IFllcywgbXV4 IGlzIGtlcHQgc2VsZWN0ZWQgdW50aWwgY29uZmlndXJpbmcgcmVnaXN0ZXIgaXMgZG9uZS4gUGxl YXNlIHNlZQ0KPiA+PiBiZWxvdyBsb2cgd2hlcmUNCj4gPj4+IEkgYWRkZWQgZGVidWcgcHJpbnRz IGp1c3QgZm9yIHVuZGVyc3RhbmRpbmc6DQo+ID4+PiAjIGRtZXNnIHwgZ3JlcCBLSw0KPiA+Pj4g IFsgICAgMC43Nzk4MjddIEtLOiBGdW5jOiBhdG1lbF9mbGV4Y29tX3Byb2JlICoqKioqIFtTVEFS VCBmbHggbXV4aW5nXQ0KPiA+PiAqKioqKioqKg0KPiA+Pj4gWyAgICAwLjc3OTg3NV0gS0s6IEZ1 bmM6IGF0bWVsX2ZsZXhjb21fcHJvYmUgaSA9IDAgYXJnc1swXSA9IDANCj4gPj4+IFsgICAgMC43 Nzk4OTBdIEtLOiBGdW5jOiBtdXhfY29udHJvbF9zZWxlY3QgW0VudGVyZWRdDQo+ID4+PiBbICAg IDAuNzc5OTAyXSBLSzogRnVuYzogbXV4X2xhbjk2Nnhfc2V0IFtFbnRlcmVkXSBzdGF0ZSA9IDAN Cj4gPj4+IFsgICAgMC43Nzk5NzddIEtLOiBGdW5jOiBtdXhfbGFuOTY2eF9zZXQgW1JlYWRdID0g MHgxZmZmZWYgICA8PDwtLS0tLQ0KPiBzZXR0aW5nDQo+ID4+IG11eF9sYW45NjZ4W3N0YXRlXS5z c19waW4gIjQiIHdoaWNoIGlzIHBhc3NlZCBmcm9tIGR0cw0KPiA+Pj4gWyAgICAwLjc3OTk5Ml0g S0s6IEZ1bmM6IG11eF9sYW45NjZ4X3NldCBbRXhpdF0NCj4gPj4+IFsgICAgMC43ODAwMDJdIEtL OiBGdW5jOiBtdXhfY29udHJvbF9zZWxlY3QgW0V4aXRdDQo+ID4+PiBbICAgIDAuNzgwMDExXSBL SzogRnVuYzogbXV4X2NvbnRyb2xfZGVzZWxlY3QgW0VudGVyZWRdDQo+ID4+PiBbICAgIDAuNzgw MDIxXSBLSzogRnVuYzogbXV4X2NvbnRyb2xfZGVzZWxlY3QgW0V4aXRdDQo+ID4+DQo+ID4+IFlv dSBtaXN1bmRlcnN0YW5kLiBUaGUgbXV4IGNvbnRyb2wgaXMgb25seSAic2VsZWN0ZWQiIGJldHdl ZW4gdGhlIGNhbGwNCj4gPj4gdG8gbXV4X2NvbnRyb2xfc2VsZWN0KCkgYW5kIHRoZSBmb2xsb3dp bmcgY2FsbCB0bw0KPiA+PiBtdXhfY29udHJvbF9kZXNlbGVjdCgpLg0KPiA+Pg0KPiA+PiBBZnRl ciB0aGF0LCB0aGUgbXV4IGNvbnRyb2wgaXMgImlkbGUiLiBIb3dldmVyLCBpbiB5b3VyIGNhc2Ug dGhlDQo+ID4+ICJpZGxlLXN0YXRlIiBpcyBjb25maWd1cmVkIHRvICJhcy1pcyIgKHdoaWNoIGlz IHRoZSBkZWZhdWx0KSwgc28gdGhlDQo+ID4+IG11eCBjb250cm9sIChuYXR1cmFsbHkpIHJlbWFp bnMgaW4gdGhlIHByZXZpb3VzbHkgc2VsZWN0ZWQgc3RhdGUgd2hpbGUNCj4gPj4gaWRsZS4gQnV0 IHlvdSBhcmUgbm90IGRvY3VtZW50aW5nIHRoYXQgbGltaXRhdGlvbiwgYW5kIHdpdGggdGhpcw0K PiA+PiBpbXBsZW1lbnRhdGlvbiB5b3UgKm11c3QqIGhhdmUgYSBtdXggY29udHJvbCB0aGF0IHVz ZXMgImFzLWlzIiBhcyBpdHMNCj4gPj4gaWRsZSBzdGF0ZS4gQnV0IHRoYXQgaXMgYW4gdW5leHBl Y3RlZCBhbmQgYnJva2VuIGxpbWl0YXRpb24sIGFuZCBhDQo+ID4+IG11Y2ggYmV0dGVyIHNvbHV0 aW9uIGlzIHRvIHNpbXBseSBrZWVwIHRoZSBtdXggY29udHJvbCAic2VsZWN0ZWQiIGZvcg0KPiA+ PiB0aGUgY29tcGxldGUgZHVyYXRpb24gd2hlbiB5b3UgcmVseSBvbiBpdCB0byBiZSBpbiB3aGF0 ZXZlciBzdGF0ZSB5b3UNCj4gPj4gbmVlZCBpdCB0byBiZSBpbi4NCj4gPj4NCj4gPiBJIGFtIG5l dyB0byBtdXggZHJpdmVycy4NCj4gPiBMZXQgbWUgdHJ5IHRvIGV4cGxhaW4gd2h5IEkgaGF2ZSBt dXhfY29udHJvbF9kZXNlbGVjdCBpZiB0aGVyZSBpcyBubyBlcnINCj4gZnJvbSBtdXhfY29udHJv bF9zZWxlY3QoKQ0KPiA+IEZvciBleGFtcGxlLA0KPiA+IDEuIFdoZW4gSSBoYXZlIG9uZSBvbmx5 IGNoaXAtc2VsZWN0IENTMCBmb3IgZmxleGNvbTMgdG8gYmUgbWFwcGVkIHRvDQo+IGZsZXhjb20g c2hhcmVkIHBpbiA5Og0KPiA+IEFzIHBlciBwcmV2aW91c2x5IHNoYXJlZCBsb2csIEZMRVhDT01f U0hBUkVEWzNdOlNTX01BU0tbMF0gaXMgYmVpbmcNCj4gY29uZmlndXJlZCB0byBleHBlY3RlZCB2 YWx1ZQ0KPiA+IGV2ZW4gYmVmb3JlIG11eF9jb250cm9sX2Rlc2VsZXRjKCkuDQo+ID4gMi4gV2hl biBJIGhhdmUgdG8gbWFwIHR3byBjaGlwLXNlbGVjdHMgb2YgZmx4MyAtIENTMCB0byBmbGV4Y29t IHNoYXJlZCA5DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIENTMSB0byBmbGV4Y29tIHNoYXJlZCBwaW4gNw0KPiA+IEZMRVhDT01fU0hBUkVEWzNdOlNT X01BU0tbMF0gaXMgc2V0IHRvIGV4cGVjdGVkIHZhbHVlIDB4MWZmZmVmDQo+ID4gSSBzZWUgY29u c29sZSBoYW5ncyBhdCBtdXhfY29udHJvbF9zZWxlY3QoKSBpZiBJIGRvbuKAmXQgY2FsbA0KPiBt dXhfY29udHJvbF9kZXNlbGVjdA0KPiA+IHdoaWxlIG1hcHBpbmcgc2Vjb25kIGNoaXAtc2VsZWN0 IEZMRVhDT01fU0hBUkVEWzNdOlNTX01BU0tbMV0uDQo+ID4gQWZ0ZXIgcmVhZGluZyBiZWxvdyBk ZXNjcmlwdGlvbiBmcm9tIG11eF9jb250cm9sX3NlbGVjdCgpIDoNCj4gPiAiICogT24gc3VjY2Vz c2Z1bGx5IHNlbGVjdGluZyB0aGUgbXV4LWNvbnRyb2wgc3RhdGUsIGl0IHdpbGwgYmUgbG9ja2Vk IHVudGlsDQo+ID4gICogdGhlcmUgaXMgYSBjYWxsIHRvIG11eF9jb250cm9sX2Rlc2VsZWN0KCku Ig0KPiA+IEZvbGxvd2luZyB0aGlzIGhlbHAgdGV4dCwgSSBjYWxsZWQgbXV4X2NvbnRyb2xfZGVz ZWxlY3QoKSBpZiB0aGVyZSBpcyBubyBlcnJvcg0KPiBmcm9tIG11eF9jb250cm9sX3NlbGVjdCgp DQo+ID4gYW5kIHRoZW4gaXQgd29ya2VkLiBGTEVYQ09NX1NIQVJFRFszXTpTU19NQVNLWzFdIGlz IG5vdyBzZXQgdG8NCj4gZXhwZWN0ZWQgdmFsdWUgMHgxZmZmYmYuDQo+ID4NCj4gPiBQbGVhc2Ug ZXhwbGFpbiBtZSBpZiBJIGFtIG1pc3Npbmcgc29tZXRoaW5nLg0KPiANCj4gWW91IHNob3VsZCB3 YWl0IHdpdGggdGhlIGRlc2VsZWN0IHVudGlsIHlvdSBuZWVkIHRvIGNoYW5nZSB0aGUgc3RhdGUN Cj4gb2YgdGhlIG11eC4gSS5lLiwgb24gaW5pdC9wcm9iZSB5b3Ugc2V0IHNvbWUgdmFyaWFibGUg dG8gLTEsIGxpa2Ugc286DQo+IA0KPiAgICAgICAgIHByaXYtPm11eF9lcnJvciA9IC0xOw0KPiAN Cj4gYW5kIHdoZW4geW91IGxhdGVyIG5lZWQgdG8gc2V0L2NoYW5nZSB0aGUgc3RhdGUgb2YgdGhl IG11eCwgeW91IGRvOg0KPiANCj4gICAgICAgICBpZiAoIXByaXYtPm11eF9lcnJvcikNCj4gICAg ICAgICAgICAgICAgIG11eF9jb250cm9sX2Rlc2VsZWN0KC4uLik7DQo+ICAgICAgICAgcHJpdi0+ bXV4X2Vycm9yID0gbXV4X2NvbnRyb2xfc2VsZWN0KC4uLik7DQo+IA0KPiBhbmQgdGhlbiB5b3Ug Y2xlYW51cCBhdCB0aGUgZW5kIG9mIGxpZmU6DQo+IA0KPiAgICAgICAgIGlmICghcHJpdi0+bXV4 X2Vycm9yKQ0KPiAgICAgICAgICAgICAgICAgbXV4X2NvbnRyb2xfZGVzZWxlY3QoLi4uKTsNCj4g DQo+IE9yIHNvbWV0aGluZyBsaWtlIHRoYXQuDQo+IA0KPiBUaGUgbXV4IGFwaSBpcyBvYnZpb3Vz bHkgbm90IGEgZ29vZCBmaXQgZm9yIHRoZSB1c2UgY2FzZSBvZiBsb25nDQo+IGxpdmVkIHNlbGVj dHMgbGlrZSB5b3UgYXBwZWFyIHRvIGhhdmUgaGVyZS4gVGhlIGFwaSB3YXMgZGVzaWduZWQNCj4g Zm9yIHNob3J0IGxpdmVkIHNlbGVjdHMsIGFsb25nIHRoZSBsaW5lcyBvZjoNCj4gDQo+IGludA0K PiBzb19zb21ldGhpbmcoLi4uKQ0KPiB7DQo+ICAgICAgICAgaW50IGVycjsNCj4gDQo+ICAgICAg ICAgZXJyID0gbXV4X2NvbnRyb2xfc2VsZWN0KC4uLik7DQo+ICAgICAgICAgaWYgKGVycikNCj4g ICAgICAgICAgICAgICAgIHJldHVybiBlcnI7DQo+IA0KPiAgICAgICAgIGRvX2l0KC4uLik7DQo+ IA0KPiAgICAgICAgIG11eF9jb250cm9sX2Rlc2VsZWN0KC4uLik7DQo+IH0NCj4gDQo+IA0KPiA+ DQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KPiA+Pj4+PiArICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKCZwZGV2LT5kZXYsICJGYWlsZWQgdG8gc2Vs ZWN0IEZMRVhDT00NCj4gPj4gbXV4XG4iKTsNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGVycjsNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgIH0NCj4g Pj4+Pj4gKyAgICAgICAgICAgICB9DQo+ID4+Pj4+ICsgICAgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+ PiAgICAgICBjbGtfZGlzYWJsZV91bnByZXBhcmUoZGRhdGEtPmNsayk7DQo+ID4+Pj4+DQo+ID4+ Pj4+ICAgICAgIHJldHVybiBkZXZtX29mX3BsYXRmb3JtX3BvcHVsYXRlKCZwZGV2LT5kZXYpOw0K PiA+Pj4+PiAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBhdG1lbF9m bGV4X2NhcHMgYXRtZWxfZmxleGNvbV9jYXBzID0ge307DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgYXRtZWxfZmxleF9jYXBzIGxhbjk2NnhfZmxleGNvbV9jYXBzID0g ew0KPiA+Pj4+PiArICAgICAuaGFzX2ZseF9tdXggPSB0cnVlLA0KPiA+Pj4+PiArfTsNCj4gPj4+ Pj4gKw0KPiA+Pj4+PiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvZl9kZXZpY2VfaWQgYXRtZWxfZmxl eGNvbV9vZl9tYXRjaFtdID0gew0KPiA+Pj4+PiAtICAgICB7IC5jb21wYXRpYmxlID0gImF0bWVs LHNhbWE1ZDItZmxleGNvbSIgfSwNCj4gPj4+Pj4gKyAgICAgew0KPiA+Pj4+PiArICAgICAgICAg ICAgIC5jb21wYXRpYmxlID0gImF0bWVsLHNhbWE1ZDItZmxleGNvbSIsDQo+ID4+Pj4+ICsgICAg ICAgICAgICAgLmRhdGEgPSAmYXRtZWxfZmxleGNvbV9jYXBzLA0KPiA+Pj4+PiArICAgICB9LA0K PiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgIHsNCj4gPj4+Pj4gKyAgICAgICAgICAgICAuY29tcGF0 aWJsZSA9ICJtaWNyb2NoaXAsbGFuOTY2LWZsZXhjb20iLA0KPiA+Pj4+PiArICAgICAgICAgICAg IC5kYXRhID0gJmxhbjk2NnhfZmxleGNvbV9jYXBzLA0KPiA+Pj4+PiArICAgICB9LA0KPiA+Pj4+ PiArDQo+ID4+Pj4+ICAgICAgIHsgLyogc2VudGluZWwgKi8gfQ0KPiA+Pj4+PiAgfTsNCj4gPj4+ Pj4gIE1PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIGF0bWVsX2ZsZXhjb21fb2ZfbWF0Y2gpOw0KPiA+ Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tdXgvS2NvbmZpZyBiL2RyaXZlcnMvbXV4L0tjb25m aWcNCj4gPj4+Pj4gaW5kZXggZTVjNTcxZmQyMzJjLi5lYTA5ZjQ3NGJjMmYgMTAwNjQ0DQo+ID4+ Pj4+IC0tLSBhL2RyaXZlcnMvbXV4L0tjb25maWcNCj4gPj4+Pj4gKysrIGIvZHJpdmVycy9tdXgv S2NvbmZpZw0KPiA+Pj4+PiBAQCAtNDUsNiArNDUsMTggQEAgY29uZmlnIE1VWF9HUElPDQo+ID4+ Pj4+ICAgICAgICAgVG8gY29tcGlsZSB0aGUgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBo ZXJlOiB0aGUgbW9kdWxlDQo+IHdpbGwNCj4gPj4+Pj4gICAgICAgICBiZSBjYWxsZWQgbXV4LWdw aW8uDQo+ID4+Pj4+DQo+ID4+Pj4+ICtjb25maWcgTVVYX0xBTjk2Ng0KPiA+Pj4+PiArICAgICB0 cmlzdGF0ZSAiTEFOOTY2IEZsZXhjb20gbXVsdGlwbGV4ZXIiDQo+ID4+Pj4+ICsgICAgIGRlcGVu ZHMgb24gT0YgfHwgQ09NUElMRV9URVNUDQo+ID4+Pj4+ICsgICAgIGhlbHANCj4gPj4+Pj4gKyAg ICAgTGFuOTY2IEZsZXhjb20gTXVsdGlwbGV4ZXIgY29udHJvbGxlci4NCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArICAgICBUaGUgZHJpdmVyIHN1cHBvcnRzIG1hcHBpbmcgMiBjaGlwLXNlbGVjdHMgb2Yg ZWFjaCBvZiB0aGUgbGFuOTY2DQo+ID4+Pj4+ICsgICAgIGZsZXhjb21zIHRvIDIxIGZsZXhjb20g c2hhcmVkIHBpbnMuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgVG8gY29tcGlsZSB0aGUgZHJp dmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlIHdpbGwNCj4gPj4+Pj4g KyAgICAgYmUgY2FsbGVkIG11eC1sYW45NjYuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gIGNvbmZpZyBN VVhfTU1JTw0KPiA+Pj4+PiAgICAgICB0cmlzdGF0ZSAiTU1JTy9SZWdtYXAgcmVnaXN0ZXIgYml0 ZmllbGQtY29udHJvbGxlZCBNdWx0aXBsZXhlciINCj4gPj4+Pj4gICAgICAgZGVwZW5kcyBvbiBP RiB8fCBDT01QSUxFX1RFU1QNCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXV4L01ha2Vm aWxlIGIvZHJpdmVycy9tdXgvTWFrZWZpbGUNCj4gPj4+Pj4gaW5kZXggNmU5ZmE0N2RhZjU2Li41 M2E5ODQwZDk2ZmEgMTAwNjQ0DQo+ID4+Pj4+IC0tLSBhL2RyaXZlcnMvbXV4L01ha2VmaWxlDQo+ ID4+Pj4+ICsrKyBiL2RyaXZlcnMvbXV4L01ha2VmaWxlDQo+ID4+Pj4+IEBAIC03LDEwICs3LDEy IEBAIG11eC1jb3JlLW9ianMgICAgICAgICAgICAgICAgICAgICAgIDo9IGNvcmUubw0KPiA+Pj4+ PiAgbXV4LWFkZzc5MmEtb2JqcyAgICAgICAgICAgICA6PSBhZGc3OTJhLm8NCj4gPj4+Pj4gIG11 eC1hZGdzMTQwOC1vYmpzICAgICAgICAgICAgOj0gYWRnczE0MDgubw0KPiA+Pj4+PiAgbXV4LWdw aW8tb2JqcyAgICAgICAgICAgICAgICAgICAgICAgIDo9IGdwaW8ubw0KPiA+Pj4+PiArbXV4LWxh bjk2Ni1vYmpzICAgICAgICAgICAgICAgICAgICAgIDo9IGxhbjk2Ni1mbHgubw0KPiA+Pj4+PiAg bXV4LW1taW8tb2JqcyAgICAgICAgICAgICAgICAgICAgICAgIDo9IG1taW8ubw0KPiA+Pj4+Pg0K PiA+Pj4+PiAgb2JqLSQoQ09ORklHX01VTFRJUExFWEVSKSAgICArPSBtdXgtY29yZS5vDQo+ID4+ Pj4+ICBvYmotJChDT05GSUdfTVVYX0FERzc5MkEpICAgICs9IG11eC1hZGc3OTJhLm8NCj4gPj4+ Pj4gIG9iai0kKENPTkZJR19NVVhfQURHUzE0MDgpICAgKz0gbXV4LWFkZ3MxNDA4Lm8NCj4gPj4+ Pj4gIG9iai0kKENPTkZJR19NVVhfR1BJTykgICAgICAgICAgICAgICArPSBtdXgtZ3Bpby5vDQo+ ID4+Pj4+ICtvYmotJChDT05GSUdfTVVYX0xBTjk2NikgICAgICs9IG11eC1sYW45NjYubw0KPiA+ Pj4+PiAgb2JqLSQoQ09ORklHX01VWF9NTUlPKSAgICAgICAgICAgICAgICs9IG11eC1tbWlvLm8N Cj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXV4L2xhbjk2Ni1mbHguYyBiL2RyaXZlcnMv bXV4L2xhbjk2Ni1mbHguYw0KPiA+Pj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+Pj4+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjJjN2RhYjYxNmE2YQ0KPiA+Pj4+PiAtLS0gL2Rldi9udWxsDQo+ ID4+Pj4+ICsrKyBiL2RyaXZlcnMvbXV4L2xhbjk2Ni1mbHguYw0KPiA+Pj4+PiBAQCAtMCwwICsx LDEyMSBAQA0KPiA+Pj4+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4g Pj4+Pj4gKy8qDQo+ID4+Pj4+ICsgKiBMQU45NjYgRmxleGNvbSBNVVggZHJpdmVyDQo+ID4+Pj4+ ICsgKg0KPiA+Pj4+PiArICogQ29weXJpZ2h0IChjKSAyMDIyIE1pY3JvY2hpcCBJbmMuDQo+ID4+ Pj4+ICsgKg0KPiA+Pj4+PiArICogQXV0aG9yOiBLYXZ5YXNyZWUgS290YWdpcmkgPGthdnlhc3Jl ZS5rb3RhZ2lyaUBtaWNyb2NoaXAuY29tPg0KPiA+Pj4+DQo+ID4+Pj4gTG9va3MgbGlrZSBpdCBp cyBiYXNlZCBvbiBtbWlvLmM/DQo+ID4+Pj4NCj4gPj4+IFllcywgSSB0b29rIG1taW8uYyAgZHJp dmVyIGFzIHJlZmVyZW5jZS4NCj4gPj4+DQo+ID4+DQo+ID4+IFNvLCB0aGVuIHRoZSBhYm92ZSBj b3B5cmlnaHQgYW5kIGF1dGhvcnNoaXAgaW5mbyBpcyBub3QgY29tcGxldGUuDQo+ID4+DQo+ID4+ Pj4+ICsgKi8NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiA+ Pj4+PiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+Pj4+PiArI2luY2x1ZGUgPGxpbnV4 L29mX3BsYXRmb3JtLmg+DQo+ID4+Pj4+ICsjaW5jbHVkZSA8bGludXgvcGxhdGZvcm1fZGV2aWNl Lmg+DQo+ID4+Pj4+ICsjaW5jbHVkZSA8bGludXgvcHJvcGVydHkuaD4NCj4gPj4+Pj4gKyNpbmNs dWRlIDxsaW51eC9tdXgvZHJpdmVyLmg+DQo+ID4+Pj4+ICsjaW5jbHVkZSA8bGludXgvaW8uaD4N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2RlZmluZSBGTEVYX1NIUkRfTUFTSyAgICAgICAgICAgICAg IDB4MUZGRkZGDQo+ID4+Pj4+ICsjZGVmaW5lIExBTjk2Nl9NQVhfQ1MgICAgICAgICAgICAgICAg MjENCj4gPj4+Pj4gKw0KPiA+Pj4+PiArc3RhdGljIHZvaWQgX19pb21lbSAqZmx4X3NoYXJlZF9i YXNlOw0KPiA+Pj4+DQo+ID4+Pj4gSSB3b3VsZCBtdWNoIHByZWZlciB0byBzdG9yZSB0aGUgY29t YmluZWQgYWRkcmVzcyAoYmFzZStvZmZzZXQpDQo+ID4+Pj4gaW4gdGhlIG11eCBwcml2YXRlIGRh dGEgaW5zdGVhZCBvZiBvbmx5IHN0b3JpbmcgdGhlIG9mZnNldCBhbmQNCj4gPj4+PiB0aGVuIHVu bmVjZXNzYXJpbHkgcmVseSBvbiBzb21lIHBpZWNlIG9mIGdsb2JhbCBzdGF0ZSAodGhhdA0KPiA+ Pj4+IHdpbGwgYmUgY2xvYmJlcmVkIGJ5IG90aGVyIGluc3RhbmNlcykuDQo+ID4+Pj4NCj4gPj4+ IE9rLiBJIHdpbGwgdHJ5IHRvIHNlZSBpZiB0aGlzIGlzIHJlbGV2YW50IGFuZCBjaGFuZ2UgYWNj b3JkaW5nbHkuDQo+ID4+Pg0KPiA+Pj4+PiArc3RydWN0IG11eF9sYW45NjZ4IHsNCj4gPj4+Pg0K PiA+Pj4+IFdoeSBpcyB0aGUgZmlsZSBuYW1lZCBsYW45NjYsIGJ1dCB0aGVuIGV2ZXJ5dGhpbmcg aW5zaWRlIGxhbjk2Nng/DQo+ID4+Pj4NCj4gPj4+Pj4gKyAgICAgdTMyIG9mZnNldDsNCj4gPj4+ Pj4gKyAgICAgdTMyIHNzX3BpbjsNCj4gPj4+Pj4gK307DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK3N0 YXRpYyBpbnQgbXV4X2xhbjk2Nnhfc2V0KHN0cnVjdCBtdXhfY29udHJvbCAqbXV4LCBpbnQgc3Rh dGUpDQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsgICAgIHN0cnVjdCBtdXhfbGFuOTY2eCAqbXV4X2xh bjk2NnggPSBtdXhfY2hpcF9wcml2KG11eC0+Y2hpcCk7DQo+ID4+Pj4+ICsgICAgIHUzMiB2YWw7 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgdmFsID0gfigxIDw8IG11eF9sYW45NjZ4W3N0YXRl XS5zc19waW4pICYgRkxFWF9TSFJEX01BU0s7DQo+ID4+Pj4+ICsgICAgIHdyaXRlbCh2YWwsIGZs eF9zaGFyZWRfYmFzZSArIG11eF9sYW45NjZ4W3N0YXRlXS5vZmZzZXQpOw0KPiA+Pj4+DQo+ID4+ Pj4gVGhpcyByZWFkcyBtZW1vcnkgeW91IGhhdmUgbm90IGFsbG9jYXRlZCwgaWYgeW91IHNlbGVj dCBhIHN0YXRlDQo+ID4+Pj4gb3RoZXIgdGhhbiB6ZXJvLg0KPiA+Pj4+DQo+ID4+PiBPay4gSSB3 aWxsIHJldHVybiBlcnJvciBjb25kaXRpb24gaW4gY2FzZSBvZiB0cnlpbmcgdG8gYWNjZXNzIG5v bmUgZXhpc3RpbmcNCj4gPj4gZW50cnkuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgcmV0dXJu IDA7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg bXV4X2NvbnRyb2xfb3BzIG11eF9sYW45NjZ4X29wcyA9IHsNCj4gPj4+Pj4gKyAgICAgLnNldCA9 IG11eF9sYW45NjZ4X3NldCwNCj4gPj4+Pj4gK307DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIG11eF9sYW45NjZ4X2R0X2lkc1tdID0gew0KPiA+ Pj4+PiArICAgICB7IC5jb21wYXRpYmxlID0gIm1pY3JvY2hpcCxsYW45NjYtZmx4LW11eCIsIH0s DQo+ID4+Pj4+ICsgICAgIHsgLyogc2VudGluZWwgKi8gfQ0KPiA+Pj4+PiArfTsNCj4gPj4+Pj4g K01PRFVMRV9ERVZJQ0VfVEFCTEUob2YsIG11eF9sYW45NjZ4X2R0X2lkcyk7DQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gK3N0YXRpYyBpbnQgbXV4X2xhbjk2NnhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rl dmljZSAqcGRldikNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyAgICAgc3RydWN0IGRldmljZV9ub2Rl ICpucCA9IHBkZXYtPmRldi5vZl9ub2RlOw0KPiA+Pj4+PiArICAgICBzdHJ1Y3QgZGV2aWNlICpk ZXYgPSAmcGRldi0+ZGV2Ow0KPiA+Pj4+PiArICAgICBzdHJ1Y3QgbXV4X2xhbjk2NnggKm11eF9s YW45NjZ4Ow0KPiA+Pj4+PiArICAgICBzdHJ1Y3QgbXV4X2NoaXAgKm11eF9jaGlwOw0KPiA+Pj4+ PiArICAgICBpbnQgcmV0LCBudW1fZmllbGRzLCBpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAg IHJldCA9IG9mX3Byb3BlcnR5X2NvdW50X3UzMl9lbGVtcyhucCwgIm11eC1vZmZzZXQtcGluIik7 DQo+ID4+Pj4+ICsgICAgIGlmIChyZXQgPT0gMCB8fCByZXQgJSAyKQ0KPiA+Pj4+PiArICAgICAg ICAgICAgIHJldCA9IC1FSU5WQUw7DQo+ID4+Pj4+ICsgICAgIGlmIChyZXQgPCAwKQ0KPiA+Pj4+ PiArICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LA0KPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXgtb2Zmc2V0LXBpbiBwcm9wZXJ0 eSBtaXNzaW5nIG9yIGludmFsaWQiKTsNCj4gPj4+Pj4gKyAgICAgbnVtX2ZpZWxkcyA9IHJldCAv IDI7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgbXV4X2NoaXAgPSBkZXZtX211eF9jaGlwX2Fs bG9jKGRldiwgbnVtX2ZpZWxkcywNCj4gPj4+PiBzaXplb2YoKm11eF9sYW45NjZ4KSk7DQo+ID4+ Pj4NCj4gPj4+PiBJIG1pZ2h0IGJlIHRob3JvdWdobHkgbWlzdGFrZW4gYW5kIGNvbmZ1c2VkIGJ5 IHRoZSBjb2RlLCBidXQgaXQgc2VlbXMNCj4gPj4+PiB2ZXJ5IHN0cmFuZ2UgdGhhdCBhIHN1YnNl cXVlbmN0IHNlbGVjdCBpcyBub3QgdW5kb2luZyB3aGF0IGEgcHJldmlvdXMNCj4gPj4+PiBzZWxl Y3Qgb25jZSBkaWQuIEVhY2ggc3RhdGUgc2VlbXMgdG8gd3JpdGUgdG8gaXRzIG93biByZWdpc3Rl ciBvZmZzZXQsDQo+ID4+Pj4gYW5kIHRoZXJlIGlzIG5vdGhpbmcgdGhhdCByZXN0b3JlcyB0aGUg Zmlyc3QgcmVnaXN0ZXIgb2Zmc2V0IHdpdGggeW91DQo+ID4+Pj4gc3dpdGNoIHN0YXRlcy4NCj4g Pj4+Pg0KPiA+Pj4+IENhcmUgdG8gZXhwbGFpbiBob3cgbXV4aW5nIHdvcmtzIGFuZCB3aGF0IHlv dSBhcmUgZXhwZWN0ZWQgdG8gZG8gdG8NCj4gPj4+PiBtYW5pcHVsYXRlIHRoZSBtdXg/IElzIHRo ZXJlIHNvbWUgbGluayB0byBwdWJsaWMgZG9jdW1lbnRhdGlvbj8gSSBkaWQNCj4gPj4+PiBhIHF1 aWNrIHNlYXJjaCBmb3IgbGFuOTY2IGJ1dCBjYW1lIHVwIHdpdGggbm90aGluZyByZWxldmFudC4N Cj4gPj4+Pg0KPiA+Pj4gTEFOOTY2IGhhcyA1IGZsZXhjb21zKHdoaWNoIGNhbiBiZSB1c2VkIGFz IFVTQVJUL1NQSS9JMkMgaW50ZXJmYWNlKS4NCj4gPj4+IEZMRVhDT00gaGFzIHR3byBjaGlwLXNl bGVjdCBJL08gbGluZXMgbmFtZWx5IENTMCBhbmQgQ1MxDQo+ID4+PiBpbiBTUEkgbW9kZSwgQ1RT IGFuZCBSVFMgaW4gVVNBUlQgbW9kZS4gVGhlc2UgRkxFWENPTSBwaW5zIGFyZQ0KPiA+PiBvcHRp b25hbC4NCj4gPj4+IFRoZXNlIGNoaXAtc2VsZWN0cyBjYW4gYmUgbWFwcGVkIHRvIGZsZXhjb20g c2hhcmVkIHBpbiBbMC0yMV0gd2hpY2gNCj4gY2FuDQo+ID4+IGJlDQo+ID4+PiBkb25lIGJ5IGNv bmZpZ3VyaW5nIGZsZXhjb20gbXVsdGlwbGV4ZXIgcmVnaXN0ZXIoRkxFWENPTV9TSEFSRURbMC0N Cj4gPj4gNF06U1NfTUFTS1swLTFdKQ0KPiA+Pj4gRHJpdmVyIGV4cGxhbmF0aW9uOg0KPiA+Pj4g ImZseF9zaGFyZWRfYmFzZSIgaXMgdXNlZCB0byBnZXQgYmFzZSBhZGRyZXNzIG9mIEZsZXhjb20g c2hhcmVkDQo+ID4+IG11bHRpcGxleGVyDQo+ID4+PiAibXV4LW9mZnNldC1waW4iIHByb3BlcnR5 IGlzIHVzZWQgdG8gZ2V0IGNzMC9jczEgb2Zmc2V0IGFuZCBmbGV4Y29tDQo+IHNoYXJlZA0KPiA+ PiBwaW5bMC0yMV0gb2YgYSBmbGV4Y29tLg0KPiA+Pj4gc3RhdGUgdmFsdWUgcGFzc2VkIGZyb20g YXRtZWwtZmxleGNvbSBpcyB1c2VkIHRvIGNvbmZpZ3VyZSByZXNwZWN0aXZlDQo+ID4+PiBGTEVY Q09NX1NIQVJFRFswLTRdOlNTX01BU0tbMC0xXSByZWdpc3RlciB3aXRoIG9mZnNldCBhbmQgZmxl eGNvbQ0KPiA+PiBzaGFyZWQgcGluLg0KPiA+Pg0KPiA+PiBPaywgbGV0IG1lIHRyeSB0byBpbnRl cnByZXQgdGhhdC4gWW91IHdpc2ggZW5hYmxlIGEgImZhbiBvdXQiIG9mIHRoZXNlDQo+ID4+IHR3 byBjaGlwLXNlbGVjdHMgZm9yIGFueSBvZiB0aGUgNSBmbGV4Y29tcyAoaW4gU1BJIG1vZGU/KSBz dWNoIHRoYXQNCj4gPj4gdGhlc2UgMTAgaW50ZXJuYWwgY2hpcC1zZWxlY3RzIGNhbiBiZSBjb25u ZWN0ZWQgdG8gYW55IG9mIDIxIGV4dGVybmFsDQo+ID4+IHBpbnM/DQo+ID4+DQo+ID4+IElmIHRo YXQncyBjb3JyZWN0IGFuZCBpZiB5b3Ugd2lzaCB0byBpbnRlcmZhY2Ugd2l0aCBlLmcuIDIwIGNo aXBzLA0KPiA+PiB0aGVuIGl0IHdvdWxkIGJlIHBvc3NpYmxlIHRvIGhhdmUgMjAgc3RhdGVzIGZv ciBvbmUgbXV4IGNvbnRyb2wgYW5kDQo+ID4+IHRoZW4gcmVhY2ggdGhlIDIwIGNoaXBzIHVzaW5n IG9ubHkgQ1MwIGZyb20gRkxFWENPTTAsIG9yIGl0IHdvdWxkIGJlDQo+ID4+IHBvc3NpYmxlIHRv IGhhdmUgMiBzdGF0ZXMgZm9yIDEwIG11eCBjb250cm9scywgb25lIGVhY2ggZm9yIENTMC9DUzEg b2YNCj4gPj4gYWxsIGZpdmUgZmxleGNvbXMgYW5kIGFsc28gcmVhY2ggMjAgY2hpcHMuIE9yIGFu eSB3aWxkIGNvbWJvIHlvdQ0KPiA+PiBpbWFnaW5lIGlzIHVzZWZ1bC4NCj4gPj4NCj4gPj4gSXMg dGhhdCBjb3JyZWN0bHkgdW5kZXJzdG9vZD8NCj4gPj4NCj4gPj4gQXNzdW1pbmcgc28sIHRoZW4g eW91IGNhbiBoYXZlIGEgbWF4aW11bSBvZiAxMCBtdXggY29udHJvbHMsIGFuZCBmb3INCj4gPj4g ZWFjaCBtdXggY29udHJvbCB5b3UgbmVlZCBhIHZhcmlhYmxlIG51bWJlciBvZiBsZWdpdGltYXRl IHN0YXRlcy4gRWFjaA0KPiA+PiBtdXggY29udHJvbCB3b3VsZCBhbHNvIG5lZWQgdG8ga25vdyBh dCB3aGF0IGFkZHJlc3Mvb2Zmc2V0IGl0cyBTU19NQVNLDQo+ID4+IHJlZ2lzdGVyIGlzIGF0IGFu ZCB3aGF0IHBpbnMvc3RhdGVzIGFyZSB2YWxpZC4NCj4gPj4NCj4gPj4gQnV0IHlvdXIgY29kZSBk b2VzIG5vdCBpbXBsZW1uZW50IHRoZSBhYm92ZS4gWW91IGFsbG9jYXRlIG51bV9maWVsZHMNCj4g Pj4gbXV4IGNvbnRyb2xzLCB3aGljaCBpcyB3aGF0IGNvbmZ1c2VzIHRoZSBoZWxsIG91dCBvZiBt ZS4gbnVtX2ZpZWxkcyBpcw0KPiA+PiB0aGUgbnVtYmVyIG9mIHN0YXRlcywgbm90IHRoZSBudW1i ZXIgb2YgbXV4IGNvbnRyb2xzISBBbmQgeW91IGFsc28NCj4gPj4gbmVlZCB0byBzcGVjaWZ5IGFu IGluZGl2aWR1YWwgb2Zmc2V0IGZvciBlYWNoIHN0YXRlLCBhbmQgdGhhdCBtYWtlcyBubw0KPiA+ PiBzZW5zZSBhdCBhbGwsIGF0IGxlYXN0IG5vdCB0byBtZS4NCj4gPj4NCj4gPj4gU28sIGluc3Rl YWQsIEkgdGhpbmsgeW91IHdhbnQgdG8gaGF2ZToNCj4gPj4NCj4gPj4gc3RydWN0IG11eF9sYW45 NjZ4IHsNCj4gPj4gICAgICAgICB1MzIgc3NfbWFzazsNCj4gPj4gICAgICAgICBpbnQgbnVtX3Bp bnM7DQo+ID4+ICAgICAgICAgdTMyIHNzX3BpbltdOw0KPiA+PiB9Ow0KPiA+Pg0KPiA+PiBBbmQg dGhlbiBkbzoNCj4gPj4NCj4gPj4gICAgICAgICBtdXhfY2hpcCA9IGRldm1fbXV4X2NoaXBfYWxs b2MoZGV2LCAxLCBzaXplb2YoKm11eF9sYW45NjZ4KSArDQo+ID4+IG51bV9waW5zICogc2l6ZW9m KHUzMikpOw0KPiA+Pg0KPiA+PiAob3IgaG93ZXZlciB0aGF0IHNpemUgaXMgYmVzdCBzcGVsbGVk LCBJIGhhdmVuJ3Qga2VwdCB1cCkNCj4gPj4NCj4gPj4gVGhlIHNldCBvcGVyYXRpb24gd291bGQg YmUgYWxvbmcgdGhlIGxpbmVzIG9mOg0KPiA+Pg0KPiA+PiBzdGF0aWMgaW50IG11eF9sYW45NjZ4 X3NldChzdHJ1Y3QgbXV4X2NvbnRyb2wgKm11eCwgaW50IHN0YXRlKQ0KPiA+PiB7DQo+ID4+ICAg ICAgICAgc3RydWN0IG11eF9sYW45NjZ4ICptdXhfbGFuOTY2eCA9IG11eF9jaGlwX3ByaXYobXV4 LT5jaGlwKTsNCj4gPj4gICAgICAgICB1MzIgdmFsOw0KPiA+Pg0KPiA+PiAgICAgICAgIGlmIChz dGF0ZSA8IDAgfHwgc3RhdGUgPj0gbXV4X2xhbjk2NngtPm51bV9waW5zKQ0KPiA+PiAgICAgICAg ICAgICAgICAgcmV0dXJuIC0xOw0KPiA+Pg0KPiA+PiAgICAgICAgIHZhbCA9IH4oMSA8PCBtdXhf bGFuOTY2eC0+c3NfcGluW3N0YXRlXSkgJiBGTEVYX1NIUkRfTUFTSzsNCj4gPj4gICAgICAgICB3 cml0ZWwodmFsLCBmbHhfc2hhcmVkX2Jhc2UgKyBtdXhfbGFuOTY2eC0+c3NfbWFzayk7DQo+ID4+ DQo+ID4+ICAgICAgICAgcmV0dXJuIDA7DQo+ID4+IH0NCj4gPj4NCj4gPj4gQmVjYXVzZSwgb25l IG11eCBjb250cm9sIHNob3VsZCBvbmx5IGV2ZXIgbmVlZCB0byBrbm93IGFib3V0IG9uZQ0KPiBv ZmZzZXQsDQo+ID4+IGFzIGl0IHNob3VsZCBvbmx5IGV2ZXIgd3JpdGUgdG8gaXRzIG93biBTU19N QVNLIHJlZ2lzdGVyLiBBbmQgeW91IHdpbGwNCj4gPj4gbmVlZCBzb21lIHByaXZhdGUgc3BhY2Ug c3VjaCB0aGF0IHlvdSBjYW4ga2VlcCB0cmFjayBvZiB3aGljaCBzdGF0ZXMNCj4gPj4gYXJlIGxl Z2l0Lg0KPiA+Pg0KPiA+PiBJIHdvdWxkIGFsc28gc2VwYXJhdGUgb3V0IHRoZSBTU19NQVNLIG9m ZnNldCBmcm9tIHRoZSBtdXgtb2Zmc2V0LXBpbg0KPiA+PiBwcm9wZXJ0eSBhbmQgaGF2ZSBvbmUg cHJvcGVydHkgZm9yIHRoYXQgdmFsdWUgYW5kIHRoZW4gYSBzdHJhaWdodA0KPiA+PiBhcnJheSBm b3IgdGhlIHZhbGlkIHBpbiBudW1iZXJzIGluIGFub3RoZXIgcHJvcGVydHkgKG5vIGxvbmdlciBu YW1lZA0KPiA+PiBtdXgtb2Zmc2V0LXBpbiBvZiBjb3Vyc2UpLg0KPiA+Pg0KPiA+PiBPciBzb21l dGhpbmcgbGlrZSB0aGF0IGFuZCBhc3N1bWluZyBJIHVuZGVyc3RhbmQgaG93IHRoZSBGTEVYQ09N cw0KPiB3b3JrDQo+ID4+IGFuZCB3aGF0IHlvdSB3YW50IHRvIGRvIGV0Yy4NCj4gPj4NCj4gPg0K PiA+IFRoYW5rIHlvdSBmb3IgeW91ciBjb21tZW50cw0KPiA+IEkgYWdyZWUsIEkgd2lsbCBjaGFu Z2UgbnVtYmVyIG9mIG11eCBjb250cm9scyB0byAxIGluDQo+IGRldm1fbXV4X2NoaXBfYWxsb2Mo KQ0KPiA+IEkgd291bGQgbGlrZSB0byB1c2UgbXV4LW9mZnNldC1waW4gcHJvcGVydHkgYmVjYXVz ZQ0KPiA+IGVhY2ggY2hpcC1zZWxlY3QgbXVzdCBiZSBtYXBwZWQgdG8gYSB1bmlxdWUgZmxleGNv bSBzaGFyZWQgcGluLg0KPiA+IEZvciBleGFtcGxlLA0KPiA+IG11eC1vZmZzZXQtcGluID0gPDB4 MTggOT4sIC8qIDA6IGZsZXhjb20zIENTMCBtYXBwZWQgdG8gcGluLTkgKi8NCj4gPiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgPDB4MWMgNz4sIC8qIDE6IGZsZXhjb20zIENTMSBtYXBw ZWQgdG8gcGluLTcgKi8NCj4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPDB4MjAg ND47IC8qIDI6IGZsZXhjb200IENTMCBtYXBwZWQgdG8gcGluLTQgKi99Ow0KPiA+IEkgd2FudCB0 byB1c2UgbXV4LW9mZnNldC1waW4gcHJvcGVydHkgdG8gYmUgY2xlYXIgYWJvdXQgd2hpY2ggb2Zm c2V0IGlzDQo+IG1hcHBlZCB0byB3aGljaA0KPiA+IGZsZXhjb20gc2hhcmVkIHBpbi4gSGVyZSwg MCwgMSwgMi4uIGVudHJpZXMgcmVwcmVzZW50cyBzdGF0ZSBwYXNzZWQgZnJvbQ0KPiBtdXhfY29u dHJvbF9zZWxlY3QobXV4LCBzdGF0ZSkuDQo+ID4NCj4gPiBQbGVhc2UgcHJvdmlkZSB5b3VyIGNv bW1lbnRzLg0KPiANCj4gSXQgc2VlbXMgeW91IHdhbnQgdG8ganVzdCB1c2UgdGhlIHN0YXRpYyBp bmZvIGZyb20gdGhlIGRldmljZXRyZWUNCj4gdG8gcHJvZ3JhbSB5b3VyIHJlZ2lzdGVycyBvbmNl IGFuZCBmb3IgYWxsPyBUaGF0J3Mgbm90IGEgcHJvYmxlbQ0KPiB0aGF0IGEgbXV4IGRyaXZlciBp cyBhbWluZyBhdCBzb2x2aW5nLiBNeSB0aG91Z2h0IHdhcyB0aGF0IGlmIHlvdQ0KPiBoYXZlIG9u ZSBTUEkgZGV2aWNlIHdpdGggY2hpcCBzZWxlY3Qgb24gcGluLTcsIGFub3RoZXIgd2l0aCBjaGlw LQ0KPiBzZWxlY3Qgb24gcGluLTkgYW5kIGEgdGhpcmQgb24gcGluLTQsIHRoZW4geW91IC9jb3Vs ZC8gdXNlIHRoZW0gYWxsDQo+IGZyb20gZS5nLiBmbGV4Y29tMy9DUzAgYnkgcmVwcm9ncmFtbWlu ZyB0aGF0IFNTX01BU0sgcmVnaXN0ZXINCj4gYXQgdGhlIHRpbWUgeW91IHdhbnQgdG8gYWNjZXNz IG9uZSBvZiB0aGUgdGhyZWUgY2hpcHMuIFlvdSBjb3VsZA0KPiB0aGVuIG9mIGNvdXJzZSBub3Qg YWNjZXNzIHRoZSB0aHJlZSBjaGlwcyBpbiBwYXJhbGxlbCwgYnV0IHRoZQ0KPiBtdXhpbmcgb2Yg dGhlIGFjY2Vzc2VzIHRvIHRocmVlIGNoaXBzIGxpa2UgdGhhdCBpcyB0aGUgcHJvYmxlbQ0KPiB0 aGF0IHRoZSBtdXggc3Vic3lzdGVtIGhlbHBzIHdpdGguDQo+IA0KPiBJLmUuIHByZXR0eSBtdWNo IGV4YWN0bHkgYXMgaXMgZGVzY3JpYmVkIGluDQo+IA0KPiAgICAgICAgIERvY3VtZW50YXRpb24v ZGV2aWNldHJlZS9iaW5kaW5ncy9zcGkvc3BpLW11eC55YW1sDQo+IA0KPiBidXQgd2l0aCBhIG11 eCBub2RlIGJyaW5naW5nIHlvdXIgbmV3IGRyaXZlciBpbnRvIHRoZSBwaWN0dXJlDQo+IGluc3Rl YWQgb2YgdGhlICJncGlvLW11eCIgaW4gdGhhdCBleGFtcGxlIChhbmQgdGhlICJDUy1YIiBzaWdu YWwNCj4gYW5kIHRoZSAiTXV4IiBibG9jayBpbiB0aGF0IHBpY3R1cmUgd291bGQgYmUgaW50ZXJu YWwgdG8gdGhlIFNvQykuDQo+IA0KPiBJZiB5b3UgYXJlIGNvbnRlbnQgd2l0aCBqdXN0IHByb2dy YW1taW5nIGEgZml4ZWQgc2V0IG9mIHZhbHVlcyB0bw0KPiBhIGNvdXBsZSBvZiByZWdpc3RlcnMg ZGVwZW5kaW5nIG9uIGhvdyB0aGUgYm9hcmQgaXMgd2lyZWQsIHNvbWUNCj4gZXh0cmEgRFQgcHJv cGVydHkgb24gc29tZSBub2RlIHJlbGF0ZWQgdG8gdGhlIGZsZXhjb20gc2VlbXMgbGlrZQ0KPiBh IGJldHRlciBmaXQgdGhhbiBhIG11eCBkcml2ZXIuDQo+IA0KPiBIYXZpbmcgc2FpZCB0aGF0LCB0 aGUgbXV4IHNvbHV0aW9uIGFib3ZlIHdvdWxkIHNvbHZlIHRoaXMgc3RhdGljDQo+IGNhc2UgdG9v LiBZb3Ugd291bGQganVzdCBuZWVkIHRvIGNvbmZpZ3VyZSBhIG11eCB3aXRoIG9uZSBzdGF0ZS4N Cj4gSXQgd291bGQgYmUgYSBjb3VwbGUgb2YgZXh0cmEgbm9kZXMgaW4gdGhlIGRldmljZSB0cmVl LCBidXQgaXQNCj4gd291bGQgY2VydGFpbmx5IHdvcmsgKGFuZCBhbHNvIGNvdmVyIHRoZSBtb3Jl IGNvbXBsZXggY2FzZSB3aGVuDQo+IHNvbWVvbmUgcG9wcyB1cCBhbmQgbmVlZHMgdGhhdCkuDQo+ IA0KPiBDaGVlcnMsDQo+IFBldGVyDQo+IA0KPiA+PiBDaGVlcnMsDQo+ID4+IFBldGVyDQo+ID4+ DQo+ID4+DQo+ID4+Pj4+ICsgICAgIGlmIChJU19FUlIobXV4X2NoaXApKQ0KPiA+Pj4+PiArICAg ICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgUFRSX0VSUihtdXhfY2hpcCksDQo+ ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byBhbGxv Y2F0ZSBtdXhfY2hpcHNcbiIpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgIG11eF9sYW45NjZ4 ID0gbXV4X2NoaXBfcHJpdihtdXhfY2hpcCk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgZmx4 X3NoYXJlZF9iYXNlID0NCj4gPj4gZGV2bV9wbGF0Zm9ybV9nZXRfYW5kX2lvcmVtYXBfcmVzb3Vy Y2UocGRldiwNCj4gPj4+PiAwLCBOVUxMKTsNCj4gPj4+Pj4gKyAgICAgaWYgKElTX0VSUihmbHhf c2hhcmVkX2Jhc2UpKQ0KPiA+Pj4+PiArICAgICAgICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2Jl KGRldiwgUFRSX0VSUihmbHhfc2hhcmVkX2Jhc2UpLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZ2V0IGZsZXhjb20gc2hhcmVkIGJhc2UgYWRk cmVzc1xuIik7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgZm9yIChpID0gMDsgaSA8IG51bV9m aWVsZHM7IGkrKykgew0KPiA+Pj4+PiArICAgICAgICAgICAgIHN0cnVjdCBtdXhfY29udHJvbCAq bXV4ID0gJm11eF9jaGlwLT5tdXhbaV07DQo+ID4+Pj4+ICsgICAgICAgICAgICAgdTMyIG9mZnNl dCwgc2hhcmVkX3BpbjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgICAgICAgIHJldCA9IG9m X3Byb3BlcnR5X3JlYWRfdTMyX2luZGV4KG5wLCAibXV4LW9mZnNldC1waW4iLA0KPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiBpLCAmb2Zm c2V0KTsNCj4gPj4+Pj4gKyAgICAgICAgICAgICBpZiAocmV0ID09IDApDQo+ID4+Pj4+ICsgICAg ICAgICAgICAgICAgICAgICByZXQgPSBvZl9wcm9wZXJ0eV9yZWFkX3UzMl9pbmRleChucCwgIm11 eC1vZmZzZXQtcGluIiwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDIgKiBpICsgMSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzaGFyZWRfcGluKTsNCj4g Pj4+Pj4gKyAgICAgICAgICAgICBpZiAocmV0IDwgMCkNCj4gPj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgIHJldHVybiBkZXZfZXJyX3Byb2JlKGRldiwgcmV0LA0KPiA+Pj4+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhaWxlZCB0byByZWFkIG11eC1vZmZz ZXQtcGluIHByb3BlcnR5OiAlZCIsDQo+IGkpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAg ICAgICAgaWYgKHNoYXJlZF9waW4gPj0gTEFOOTY2X01BWF9DUykNCj4gPj4+Pj4gKyAgICAgICAg ICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAg ICAgICAgbXV4X2xhbjk2NnhbaV0ub2Zmc2V0ID0gb2Zmc2V0Ow0KPiA+Pj4+PiArICAgICAgICAg ICAgIG11eF9sYW45NjZ4W2ldLnNzX3BpbiA9IHNoYXJlZF9waW47DQo+ID4+Pj4NCj4gPj4+PiBU aGlzIGNsb2JiZXJzIG1lbW9yeSB5b3UgaGF2ZSBub3QgYWxsb2NhdGVkLCBpZiBudW1fZmllbGRz ID49IDEuDQo+ID4+Pj4NCj4gPj4+PiBDaGVlcnMsDQo+ID4+Pj4gUGV0ZXINCj4gPj4+Pg0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgICAgICAgbXV4LT5zdGF0ZXMgPSBMQU45NjZfTUFYX0NT Ow0KPiA+Pj4+PiArICAgICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgbXV4X2NoaXAtPm9w cyA9ICZtdXhfbGFuOTY2eF9vcHM7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgcmV0ID0gZGV2 bV9tdXhfY2hpcF9yZWdpc3RlcihkZXYsIG11eF9jaGlwKTsNCj4gPj4+Pj4gKyAgICAgaWYgKHJl dCA8IDApDQo+ID4+Pj4+ICsgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArICAgICByZXR1cm4gMDsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArc3Rh dGljIHN0cnVjdCBwbGF0Zm9ybV9kcml2ZXIgbXV4X2xhbjk2NnhfZHJpdmVyID0gew0KPiA+Pj4+ PiArICAgICAuZHJpdmVyID0gew0KPiA+Pj4+PiArICAgICAgICAgICAgIC5uYW1lID0gImxhbjk2 Ni1tdXgiLA0KPiA+Pj4+PiArICAgICAgICAgICAgIC5vZl9tYXRjaF90YWJsZSA9IG9mX21hdGNo X3B0cihtdXhfbGFuOTY2eF9kdF9pZHMpLA0KPiA+Pj4+PiArICAgICB9LA0KPiA+Pj4+PiArICAg ICAucHJvYmUgPSBtdXhfbGFuOTY2eF9wcm9iZSwNCj4gPj4+Pj4gK307DQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gK21vZHVsZV9wbGF0Zm9ybV9kcml2ZXIobXV4X2xhbjk2NnhfZHJpdmVyKTsNCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArTU9EVUxFX0RFU0NSSVBUSU9OKCJMQU45NjYgRmxleGNvbSBtdWx0aXBs ZXhlciBkcml2ZXIiKTsNCj4gPj4+Pj4gK01PRFVMRV9BVVRIT1IoIkthdnlhc3JlZSBLb3RhZ2ly aQ0KPiA+Pj4+IDxrYXZ5YXNyZWUua290YWdpcmlAbWljcm9jaGlwLmNvbT4iKTsNCj4gPj4+Pj4g K01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4gPj4+Pj4gKw0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KbGludXgtYXJtLWtlcm5lbCBtYWlsaW5nIGxp c3QKbGludXgtYXJtLWtlcm5lbEBsaXN0cy5pbmZyYWRlYWQub3JnCmh0dHA6Ly9saXN0cy5pbmZy YWRlYWQub3JnL21haWxtYW4vbGlzdGluZm8vbGludXgtYXJtLWtlcm5lbAo=