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 lists.xenproject.org (lists.xenproject.org [192.237.175.120]) (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 886CDC61CE8 for ; Thu, 12 Jun 2025 12:03:52 +0000 (UTC) Received: from list by lists.xenproject.org with outflank-mailman.1012952.1391495 (Exim 4.92) (envelope-from ) id 1uPgei-00076a-Vf; Thu, 12 Jun 2025 12:03:40 +0000 X-Outflank-Mailman: Message body and most headers restored to incoming version Received: by outflank-mailman (output) from mailman id 1012952.1391495; Thu, 12 Jun 2025 12:03:40 +0000 Received: from localhost ([127.0.0.1] helo=lists.xenproject.org) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uPgei-00076T-Su; Thu, 12 Jun 2025 12:03:40 +0000 Received: by outflank-mailman (input) for mailman id 1012952; Thu, 12 Jun 2025 12:03:39 +0000 Received: from se1-gles-flk1-in.inumbo.com ([94.247.172.50] helo=se1-gles-flk1.inumbo.com) by lists.xenproject.org with esmtp (Exim 4.92) (envelope-from ) id 1uPgeh-0006fe-6d for xen-devel@lists.xenproject.org; Thu, 12 Jun 2025 12:03:39 +0000 Received: from AS8PR03CU001.outbound.protection.outlook.com (mail-westeuropeazlp170120005.outbound.protection.outlook.com [2a01:111:f403:c201::5]) by se1-gles-flk1.inumbo.com (Halon) with ESMTPS id 44d49454-4785-11f0-b894-0df219b8e170; Thu, 12 Jun 2025 14:03:36 +0200 (CEST) Received: from PAVPR03MB8946.eurprd03.prod.outlook.com (2603:10a6:102:32e::21) by AM9PR03MB7489.eurprd03.prod.outlook.com (2603:10a6:20b:272::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8835.19; Thu, 12 Jun 2025 12:03:33 +0000 Received: from PAVPR03MB8946.eurprd03.prod.outlook.com ([fe80::f12d:7394:bbe3:dfc]) by PAVPR03MB8946.eurprd03.prod.outlook.com ([fe80::f12d:7394:bbe3:dfc%4]) with mapi id 15.20.8769.029; Thu, 12 Jun 2025 12:03:33 +0000 X-BeenThere: xen-devel@lists.xenproject.org List-Id: Xen developer discussion List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Precedence: list Sender: "Xen-devel" X-Inumbo-ID: 44d49454-4785-11f0-b894-0df219b8e170 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VNkWARBg/t7M2GXXmZqPBdmiCbdsOqcjMNSvp6l8ypUdu273N1VdXMRnXZ4yDARqmoCsPF9AgN+Vbdz8USs5p4r5X43+dQuhTwR3LCfGfWTJpRJICxzmd7hlxOojrrU0PeYpYQuMu6D6JjoAOJ2EkXCwgGmL48DFQJ/LlCxJtRLUV/Phtiwra85GOl88mwvgLCV96ItJFcpoupg1bzRg3xUROEaSPXTdVIa1dwuSQ3LfHDXkTvYfg/0EW/Kh1ylbaOoVqui6WXgisGn5vgt1vgOi9nEQaVhu990lg6tumeLYyxE70gAzr7M3Hxe8/kMW1oh9yt0IrSPrjh5cnzQNYg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=tqj7cBELGmJEtuaO6rAUAr8/XSzJseXqbAqHVX/DlUo=; b=IxMGmtuRkq2HUbQFrVzXaVxC1Tuscs7QjzjxfoNnjAoCkqjuEq7q4/6qyIImwpmpPsR6t04BCvxA1u8ARuRJSwV+sL9eVMZomoL+iz3WOc8CyjvR0W7IZSXgWShOdbQcLs5/vmjm23M8VE6Cdv02xWooPGhuJcfPyXGhRaIrybFGLJhFa8MCMf8OfvpAOa7GUUn/2Ot3gik/C25H06AZRI+BEvLGQjnnc75PlismxJVZvdlXXh73A+wiwPRha4dArOFcepxdjJ/nncHNtFVR/wBIAnmhxl4MMsWrvEDtonu/s5+PEIC8y4ld6ApD9GVAdwAQQCnc8UiPXgcDF6PrRQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=epam.com; dmarc=pass action=none header.from=epam.com; dkim=pass header.d=epam.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=epam.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=tqj7cBELGmJEtuaO6rAUAr8/XSzJseXqbAqHVX/DlUo=; b=bGl9ne4HlFw5GU/4GcIBX5Qol/edXCuv+NX+9HCWSo+uRrBc7t9+/sD4AwI25Q/w9FBOc5GyHYYqkUgMpbTmvpBncaV9L09oRwTpGW4q++jFfSzzBjhrKrUT+ypqcnyfpMchM/LOkeIWMgDIR1/TSyVTTTyGMUkTIFNdiAIXCSMZGsmUKU3a2mJL3uO2lWJ5AYLu5+GgmFk0FJpeuPgBru2+op+G/tpm13xGUCy2Xavexk3nJawtBOOfKU2839Lk3KvilbEMyusl7zcdcv2+cyBnGpt2N8t5ww5ecZ6XG77EB2oE6Uo4lBUw/vbSMZqLP4bzRChKOAmprkb2za5oaQ== From: Oleksii Moisieiev To: Stefano Stabellini CC: "xen-devel@lists.xenproject.org" , Andrew Cooper , Anthony PERARD , Bertrand Marquis , Jan Beulich , Juergen Gross , Julien Grall , Michal Orzel , =?utf-8?B?Um9nZXIgUGF1IE1vbm7DqQ==?= , Volodymyr Babchuk , Grygorii Strashko Subject: Re: [RFC PATCH v4 6/8] xen/arm: scmi: introduce SCI SCMI SMC multi-agent driver Thread-Topic: [RFC PATCH v4 6/8] xen/arm: scmi: introduce SCI SCMI SMC multi-agent driver Thread-Index: AQHbyNXPHUV4T01ZEEC9Uxm0LaLKHbPgqpIAgB7nygA= Date: Thu, 12 Jun 2025 12:03:33 +0000 Message-ID: <6080ff71-2634-4269-8a63-fdafdf03f01b@epam.com> References: <318044ae12f13b6b297b3f5fda577a1a6cd143da.1747669845.git.oleksii_moisieiev@epam.com> In-Reply-To: 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=epam.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: PAVPR03MB8946:EE_|AM9PR03MB7489:EE_ x-ms-office365-filtering-correlation-id: a2ac08c3-ff9e-4d88-6922-08dda9a92759 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|7416014|366016|38070700018; x-microsoft-antispam-message-info: =?utf-8?B?WTJuaGU0VzJ4RkZPY1dPVE5waGZsZ3dWYWxyNnUwWS9mRWhDTlRvaHVub2M4?= =?utf-8?B?VVpQTm5JTEY1R2RnSjdEMU1MQkk1L1hIVjhUYy9jSzBzV2YzdHdmVlFHRFVH?= =?utf-8?B?Ky9Qdm42QkFDYktRdnJ2S3ZCbnZ3NjNLOUVZN0p0RFBoNHcxRlFyU0VucE0r?= =?utf-8?B?ZWVIMGR6aDlqVzVXc1hNcUtVdkZmdFlKQXVDNTVsKzRJNkNOdnZOTEhGOWZO?= =?utf-8?B?RUI4cEJoc2JEY3dlNEFmeFEvNnp6c0lqdTJYZkxPMWplckxCRGYwclY4YitN?= =?utf-8?B?cGI0ZGVUajAyTkhmMk9BcjJYbEZ2TVZ0NVhtMkZvMHU2d0xzem9yY2FDUC81?= =?utf-8?B?djZYOWwyOXFQY05kRzgrMzh5ZjUxRklwTDl2bVBUNTNROWlEdHBzaU5SUW1n?= =?utf-8?B?TUdoS2djb0h6azhoeVNVVzdraHljNDB5QWVpK0hSd2tTaEJ0T3R2ckltMWt5?= =?utf-8?B?QUJQMlZRYVNXeUJ5c3UzWHZSVnUyaEQ0VEdkSHU2WHliSnFKQVNoYm9XZGd0?= =?utf-8?B?Vkp6RndyKzY4MHB5YmsrT3I5OUQyS09yK1I4VWhHOCt0YllYU01oeFowY2NW?= =?utf-8?B?R3VNMURIY2JMSE1wR21MY2VMSDFwemJ4eThET29RVWJqR2RQcG12bmNuaGsr?= =?utf-8?B?bHhmVTVXVGIwZWpKQTFLRGJ0b1NWbXhta21YUHF0cytFQ1U5MFZsU1orNXRj?= =?utf-8?B?Z3VzMWREN3hUeFEzVG1DNXhoTVdrbjhPWW5ibEc1N3R0STJtMXVkZXdxU3Vl?= =?utf-8?B?M0lScWh1Sm1OVGIzUHI5TUx6L1pDNHZodVJGeDluZGlHdlIvZU1yRTFrUTdQ?= =?utf-8?B?NlE5TDdOREZLV2FUdGJ4QUd1U0NmN09LWHl5RVNaSVN1WHV3d3RSTWFSL0Fw?= =?utf-8?B?Y2g2VVE0eHVRdjJQeUdUUVZwQ0M2UDB6K09TSmJFNnh0U2QzM09CUUtXMWRh?= =?utf-8?B?bGpqdHJWZEVaQjRoUDZDOXJYRnBEa1FBdGkrNEZtNlY3d2tMZmNUY3V3Y29H?= =?utf-8?B?WDNjdEZrT1hGeWxkc3VkNXlubjkyUVZ2MUNuUXRGenFaNlVQM0J3eE93amVM?= =?utf-8?B?cTdjNklQOW9naHljVlcyblFmdUV6Smdzbk1wVnc5cjB4S29sa21CL21RZG16?= =?utf-8?B?UkpNTU1YT3piRW82VHVWVWdUbnJiODJzY2c2RmxlK0RUamJuUmdnOElyTnhG?= =?utf-8?B?TXU4R3I0S1p6bXJOQ1VaWW1Kb0hIRjBseE1RWUVHcW9memUvV01ZYzNRdVJp?= =?utf-8?B?SGxTcVBhUXNNcUpZSk1yYXlOTjBhMEU0Q003WHBCamtmaS82ZUhTQkh3Ulpu?= =?utf-8?B?WSsrUUg2d2s2Wlh2VldjM0l3N2E4VW9TN0RMWTBLN1hRY2dDQllvMm5HWndk?= =?utf-8?B?c2pzV256Qkc0RmtycmFpdy8zNEVoSjlZRkZHTklqZzRXVXVScXFOQnRZcCtG?= =?utf-8?B?OEVQWXdNOTJobXI3U3VsQlk3MmplaTlqU2EwelN2TkNGWEp6RVpQSjZqWkgv?= =?utf-8?B?OXMwOTk5RFZZZmtOcDdJcksxS3owRmc5TnExWDJqNU8vRUwyb2hDdGJ4bHZu?= =?utf-8?B?WDROam1LT2hxU3lsQnpxYU01QUxlSlEzRnRHWldzRWJXN2RKQzVIUTR4cmpu?= =?utf-8?B?MEVtOHJZZ2tJSTE2UGFkNEZOL2Vpcm5FKytDZ0hOdll4VFNiRWJpKzZXV3JG?= =?utf-8?B?UkhsRVBkM0s1VzcvS0EydjBiVUNoeXYvMXdtQk5DeVZxOWhMb3BtNU9GUXhN?= =?utf-8?B?WFV6TzkvN1lWZUZCaUhNR2lUWmVpVWl4Q1JSclExWHlsUFVWR0RHY3Q1V0U0?= =?utf-8?B?cXRsbnNkVStkdHNoMjQrYnZLcU44Nno3cDJXbXgvK2ZlR3FXU1B5ZENDTTNl?= =?utf-8?B?d1dUSDQwdUFNN2p1RExHMlNHUkJxZWx4Q1BIbitFWVVLVXhLWHI2UlhSV2ZQ?= =?utf-8?Q?dOQCaGc2CjU=3D?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAVPR03MB8946.eurprd03.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(7416014)(366016)(38070700018);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VDlvajlqZVgxMWtXc2hUc1psVG1UdE9JYjh5VnhmMmwvZ1l5VzF6RVluWjJJ?= =?utf-8?B?WDlsYmI3SktDMi9lN3pkSHVzYTlmOHpHQjh0RkxOU1REL1VHdWJ3WE1tL2dM?= =?utf-8?B?aFlkbjMrRnAzNUNBZm9UbnZFaUIvL0hnWFBXdUNVVkZ4UGJzOGJweEhLM2dp?= =?utf-8?B?UjJZS0lEVkZjVUNsYVdjTWF4L09pQkNHUkF0dFhxcDRoaXlqdmkwWWp1dG1n?= =?utf-8?B?SlhZSzFPN05vREVBNFpTTXpFbUtBSjRubFQ0SDcxM1c4MlhWOFBFUHI0NE1B?= =?utf-8?B?YUEvVzNackl2cWs3T2NFUnh5dDdHbFVBbHhLTzJxZnBHdE4vS1VQYmR3MUFJ?= =?utf-8?B?TUJtZHZYYWo2VmJucWhuT0gyckhaekxJeFJZVzQ2aTEwWlB3UkVjSEFkQnVz?= =?utf-8?B?YVJaRDVmOEJOamJ5QjVnaUFhRUZFWFZjZGgvTUhObnk5WSt0cmVIS2d3b0tz?= =?utf-8?B?SlJCUXdEUFk5V1BNOE5DblpJWWtkL1lURXliL3cwd29CcFEvYTNSamhkNFNj?= =?utf-8?B?NFVtSE1aa3hZdlBiMnM3Z1dzSTU1NnJMSFFXdVM4dDdMaVE0T25VQ3RzK3l2?= =?utf-8?B?Ui9aS2xHRDFnNmZCY25nUGxMcUNPdnFOcmZwbURXZ25MKzkxeHZKSzVKOGRw?= =?utf-8?B?YTJlbUtIWmdCMG80QnllRnJkK0k0T3hDYk44bWFJaEdaeDIrbTQ0WE9LM2Fa?= =?utf-8?B?cWRiS1RKdmYvcXZLSTRnRC9wSnpDbUEvbzloMllieUdwaXR5K3ZGWTIvdUdp?= =?utf-8?B?ZXlZZ1oxTlFWRVBtR1dpUUVRcDg1aFRDNDhMV2hXVG9BcXkxT3J5VytOTnZy?= =?utf-8?B?Y0xkQmgxSGdQaXlpeXYzdjN3U1Ezd2Uwckg3ZUJaWDdEN09uNUI4a3J3dytM?= =?utf-8?B?YVVmRDJDNW1md1E5bjcyQ21pc3FpUnpxNWFMYjNqZ0NpOW1Zcmw2c20zdCs0?= =?utf-8?B?cXhMNDlOeHRPazFXdGk0SHdCZjNpV2wvRDgvWHZyNmNDOEV4aWFzOEhxaThm?= =?utf-8?B?RVlOaHQxU0ZIMFBIZkdMc0NJR0FWODRjWmt5N1ZHNlppbW1KbmNXN3RRU05q?= =?utf-8?B?WFpLQTJQdkovMmFzS2Q2c2E4dkpSVjhWbWpuOWhjMSt6cVJaeU8wVS8rWlBZ?= =?utf-8?B?T3dtb0ZYTXN6dFQvamg4NEFUWVpWMDVkdjJHdGx5cXNyU1c5UDVoNitsdnVi?= =?utf-8?B?Ylp4S3BvR0ZobURZeGV4ZU0rTWJwWFJSRXlzOW5rQTFERklGS3Rrdlh6b3V3?= =?utf-8?B?aGh1bmpHZGFrQUlKek9DY0t6c3NNSGVmYzlLSGVFbkx1YktZaWRVTVc2QnZt?= =?utf-8?B?TGFiZzRoVVlwUC9iQWJNTXQvOW5iSWpUdk8rYnFESHBiVHp6ZGhBaVJWM0lI?= =?utf-8?B?b1lnWVo3b25uVG94NU1nZTdPWm1LQVVtY3JyOGVEMHJQYU5FZC9od09xR0cw?= =?utf-8?B?NWJjcnJSdXVpVXpPOHlyNTFQaEl0ZEczd0VQejlYaVZZSFlXN1BvVm5UT2FM?= =?utf-8?B?WHhzREVUbVY2eGxYYkRlTklMdmpJZCs4V2ZMVTFtQ0gvcmZrUGNaZUpaZGdz?= =?utf-8?B?TVFvdzU2S3grdm93eUNhcWxnMkRkaWEyaW5zZzVJTkk4YVAwYjZyQkdBck0z?= =?utf-8?B?U0NCa1hZaDViL0IzKzkxelJselZtQWtYa3RpZnlydWczWEkrNWNyWWR1bkY0?= =?utf-8?B?WXV4Wlh5aVUvZXZjUTZvR3hPNmw1bDUrR01mblI3YW84eWJmSElJOE9NNE01?= =?utf-8?B?MTB5UldFTEZDcEt1UHFBMTg5RXdOR3hVQ3JDdUxnZURldWVHUmFVN2pDdGk2?= =?utf-8?B?VithV2pSM3NiSGdqT0dmRXZrOU1WVkJTOUhHL1g5VDlXNU5NM0VrK2drMnpl?= =?utf-8?B?eDFMVVV3WEdEYUxZaE9WTFJiUERYWW54c2ozbiszTVF0VytzMGNsWGZnYlda?= =?utf-8?B?SCtDK3B0ODRxdWg1elcrVVpVWTBwTGJYOUMrVVQzMFEvRmFtbDBoNFhMRmJZ?= =?utf-8?B?emdYbFVRNDlRdCszcUpiNXB4RFFWUGlIdUxUU2FvbDZyM0FqbWVQQU5uMFhV?= =?utf-8?B?dFdHYytVdHBidGRQSjFueVk5eXprMTJZR2ltYkp5a08xMVI5b2d5R05STVZm?= =?utf-8?B?R2J0VkdqeHhyd1d2cE9JdjFVaGRXUVZUUFJPdHNhNGRFUUVlcko3WjB4dDJr?= =?utf-8?B?dFE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <314C559258CA9947BE993E57C4ACD24D@eurprd03.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: epam.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PAVPR03MB8946.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a2ac08c3-ff9e-4d88-6922-08dda9a92759 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2025 12:03:33.0617 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b41b72d0-4e9f-4c26-8a69-f949f367c91d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: awbPxrtT97qhSL7jj72RqYXXFZwrleXMMusGR3NYwzhYXVu0um7YKkwbWSsHqAQH8+fULD6LpWRmac6Hre60T7ky/kUdj9lwukX3ZGAqYbs= X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR03MB7489 SGkgU3RlZmFubywNCg0KSSdtIHZlcnkgc29ycnkgZm9yIGEgbG9uZyBzaWxlbmNlLiBQbGVhc2Ug c2VlIG15IGFuc3dlcnMgYmVsb3c6DQoNCg0KT24gMjMvMDUvMjAyNSAyMzowNiwgU3RlZmFubyBT dGFiZWxsaW5pIHdyb3RlOg0KPiBPbmUgcXVlc3Rpb24gZm9yIEJlcnRyYW5kIGJlbG93DQo+DQo+ DQo+IE9uIE1vbiwgMTkgTWF5IDIwMjUsIE9sZWtzaWkgTW9pc2llaWV2IHdyb3RlOg0KPj4gVGhp cyBwYXRjaCBpbnRyb2R1Y2VzIFNDSSBkcml2ZXIgdG8gc3VwcG9ydCBmb3IgQVJNIEVMMyBUcnVz dGVkIEZpcm13YXJlLUENCj4+IChURi1BKSB3aGljaCBwcm92aWRlcyBTQ01JIGludGVyZmFjZSB3 aXRoIG11bHRpLWFnbmV0IHN1cHBvcnQsIGFzIHNob3duDQo+PiBiZWxvdy4NCj4+DQo+PiAgICAr LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+PiAgICB8ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+PiAgICB8IEVMMyBURi1BIFND TUkgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQo+PiAgICArLS0tLS0tLSstLSstLS0tLS0t Ky0tKy0tLS0tLS0rLS0rLS0tLS0tLSsrDQo+PiAgICB8c2htZW0wIHwgIHxzaG1lbTEgfCAgfHNo bWVtMiB8ICB8c2htZW1YIHwNCj4+ICAgICstLS0tLSstKyAgKy0tLSstLS0rICArLS0rLS0tLSsg ICstLS0rLS0tKw0KPj4gc21jLWlkMCB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0K Pj4gYWdlbnQwICB8ICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4gICAgKy0tLS0t di0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tKw0KPj4gICAgfCAgICAgICAgICAg ICAgfCAgICAgICAgIHwgICAgICAgICAgIHwgICAgfA0KPj4gICAgfCAgICAgICAgICAgICAgfCAg ICAgICAgIHwgICAgICAgICAgIHwgICAgfA0KPj4gICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tKw0KPj4gICAgICAgICAgIHNtYy1pZDEgfCAgc21jLWlkMnwgICAg c21jLWlkWHwNCj4+ICAgICAgICAgICBhZ2VudDEgIHwgIGFnZW50MiB8ICAgIGFnZW50WCB8DQo+ PiAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgfA0KPj4gICAgICAgICAg ICAgICstLS0tdi0tLSsgICstLXYtLS0tLSsgICstLXYtLS0tLSsNCj4+ICAgICAgICAgICAgICB8 ICAgICAgICB8ICB8ICAgICAgICB8ICB8ICAgICAgICB8DQo+PiAgICAgICAgICAgICAgfCBEb20w ICAgfCAgfCBEb20xICAgfCAgfCBEb21YICAgfA0KPj4gICAgICAgICAgICAgIHwgICAgICAgIHwg IHwgICAgICAgIHwgIHwgICAgICAgIHwNCj4+ICAgICAgICAgICAgICB8ICAgICAgICB8ICB8ICAg ICAgICB8ICB8ICAgICAgICB8DQo+PiAgICAgICAgICAgICAgKy0tLS0tLS0tKyAgKy0tLS0tLS0t KyAgKy0tLS0tLS0tKw0KPj4NCj4+IFRoZSBFTDMgU0NNSSBtdWx0aS1hZ2VudCBmaXJtd2FyZSBl eHBlY3RlZCB0byBwcm92aWRlIFNDTUkgU01DL0hWQyBzaGFyZWQNCj4+IG1lbW9yeSB0cmFuc3Bv cnQgZm9yIGV2ZXJ5IEFnZW50IGluIHRoZSBzeXN0ZW0uDQo+Pg0KPj4gVGhlIFNDTUkgQWdlbnQg dHJhbnNwb3J0IGNoYW5uZWwgZGVmaW5lZCBieSBwYWlyOg0KPj4gICAtIHNtYy1pZDogU01DL0hW QyBpZCB1c2VkIGZvciBEb29yYmVsbA0KPj4gICAtIHNobWVtOiBzaGFyZWQgbWVtb3J5IGZvciBt ZXNzYWdlcyB0cmFuc2ZlciwgWGVuIHBhZ2UgYWxpZ25lZCwNCj4+ICAgcDJtX21taW9fZGlyZWN0 X25jLg0KPj4NCj4+IFRoZSBmb2xsd29pbmcgU0NNSSBBZ2VudHMgZXhwZWN0ZWQgdG8gYmUgZGVm aW5lZCBieSBTQ01JIEZXIHRvIGVuYWJsZSBTQ01JDQo+PiBtdWx0aS1hZ2VudCBmdW5jdGlvbmFs aXR5IHVuZGVyIFhlbjoNCj4+IC0gWGVuIG1hbmVnZW1lbnQgYWdlbnQ6IHRydXN0ZWQgYWdlbnRz IHRoYXQgYWNjZXNzZXMgdG8gdGhlIEJhc2UgUHJvdG9jb2wNCj4+IGNvbW1hbmRzIHRvIGNvbmZp Z3VyZSBhZ2VudCBzcGVjaWZpYyBwZXJtaXNzaW9ucw0KPj4gLSBPU1BNIFZNIGFnZW50czogbm9u LXRydXN0ZWQgYWdlbnQsIG9uZSBmb3IgZWFjaCBHdWVzdCBkb21haW4gd2hpY2ggaXMNCj4+ICAg IGFsbG93ZWQgZGlyZWN0IEhXIGFjY2Vzcy4gQXQgbGVhc3Qgb25lIE9TUE0gVk0gYWdlbnQgaGFz IHRvIGJlIHByb3ZpZGVkDQo+PiAgICBieSBGVyBpZiBIVyBpcyBoYW5kbGVkIG9ubHkgYnkgRG9t MCBvciBEcml2ZXIgRG9tYWluLg0KPj4NCj4+IFRoZSBFTDMgU0NNSSBGVyBleHBlY3RlZCB0byBp bXBsZW1lbnQgZm9sbG93aW5nIEJhc2UgcHJvdG9jb2wgbWVzc2FnZXM6DQo+PiAtIEJBU0VfRElT Q09WRVJfQUdFTlQNCj4+IC0gQkFTRV9SRVNFVF9BR0VOVF9DT05GSUdVUkFUSU9OIChvcHRpb25h bCkNCj4+IC0gQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05TIChvcHRpb25hbCkNCj4+DQo+PiBU aGUgU0NJIFNDTUkgU01DIG11bHRpLWFnZW50IGRyaXZlciBpbXBsZW1lbnRzIGZvbGxvd2luZyBm dW5jdGlvbmFsaXR5Og0KPj4gLSBJdCdzIGluaXRpYWxpemVkIGJhc2VkIG9uIHRoZSBIb3N0IERU IFNDTUkgbm9kZSAob25seSBvbmUgU0NNSSBpbnRlcmZhY2UNCj4+IGlzIHN1cHBvcnRlZCkgd2hp Y2ggZGVzY3JpYmVzIFhlbiBtYW5hZ2VtZW50IGFnZW50IFNDTUkgaW50ZXJmYWNlLg0KPj4NCj4+ IHNjbWlfc2htXzAgOiBzcmFtQDQ3ZmYwMDAwIHsNCj4+ICAgICAgY29tcGF0aWJsZSA9ICJhcm0s c2NtaS1zaG1lbSI7DQo+PiAgICAgIHJlZyA9IDwweDAgMHg0N2ZmMDAwMCAweDAgMHgxMDAwPjsN Cj4+IH07DQo+PiBmaXJtd2FyZSB7DQo+PiAgICAgIHNjbWk6IHNjbWkgew0KPj4gICAgICAgICAg Y29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zbWMiOw0KPj4gICAgICAgICAgYXJtLCBzbWMgLSBpZCA9 IDwweDgyMDAwMDAyPjsgLy8gWGVuIG1hbmVnZW1lbnQgYWdlbnQgc21jLWlkDQo+IHNvbWUgZXh0 cmEgc3BhY2VzLCBpdCBtaWdodCBiZSBhIGNvcHkvcGFzdGUgZXJyb3INCisNCj4+ICAgICAgICAg IFwjYWRkcmVzcy1jZWxscyA9IDwgMT47DQo+PiAgICAgICAgICBcI3NpemUtY2VsbHMgPSA8IDA+ Ow0KPj4gICAgICAgICAgXCNhY2Nlc3MtY29udHJvbGxlciAtIGNlbGxzID0gPCAxPjsNCj4+ICAg ICAgICAgIHNobWVtID0gPCZzY21pX3NobV8wPjsgLy8gWGVuIG1hbmVnZW1lbnQgYWdlbnQgc2ht ZW0NCj4+DQo+PiAgICAgICAgICBwcm90b2NvbEBYew0KPj4gICAgICAgICAgfTsNCj4+ICAgICAg fTsNCj4+IH07DQo+Pg0KPj4gLSBJdCBvYnRhaW5zIFhlbiBzcGVjaWZpYyBTQ01JIEFnZW50J3Mg Y29uZmlndXJhdGlvbiBmcm9tIHRoZSBIb3N0IERULA0KPj4gcHJvYmVzIEFnZW50cyBhbmQgYnVp bGQgU0NNSSBBZ2VudHMgbGlzdDsgVGhlIEFnZW50cyBjb25maWd1cmF0aW9uIGlzIHRha2VuIGZy b206DQo+Pg0KPj4gY2hvc2VuIHsNCj4+ICAgIHhlbixzY21pLXNlY29uZGFyeS1hZ2VudHMgPSA8 DQo+PiAgICAgICAgICAgICAgMSAweDgyMDAwMDAzICZzY21pX3NobV8xDQo+PiAgICAgICAgICAg ICAgMiAweDgyMDAwMDA0ICZzY21pX3NobV8yDQo+PiAgICAgICAgICAgICAgMyAweDgyMDAwMDA1 ICZzY21pX3NobV8zDQo+PiAgICAgICAgICAgICAgNCAweDgyMDAwMDA2ICZzY21pX3NobV80PjsN Cj4+IH0NCj4+DQo+PiAvew0KPj4gICAgICBzY21pX3NobV8xOiBzcmFtQDQ3ZmYxMDAwIHsNCj4+ ICAgICAgICAgICAgICBjb21wYXRpYmxlID0gImFybSxzY21pLXNobWVtIjsNCj4+ICAgICAgICAg ICAgICByZWcgPSA8MHgwIDB4NDdmZjEwMDAgMHgwIDB4MTAwMD47DQo+PiAgICAgIH07DQo+PiAg ICAgIHNjbWlfc2htXzI6IHNyYW1ANDdmZjIwMDAgew0KPj4gICAgICAgICAgICAgIGNvbXBhdGli bGUgPSAiYXJtLHNjbWktc2htZW0iOw0KPj4gICAgICAgICAgICAgIHJlZyA9IDwweDAgMHg0N2Zm MjAwMCAweDAgMHgxMDAwPjsNCj4+ICAgICAgfTsNCj4+ICAgICAgc2NtaV9zaG1fMzogc3JhbUA0 N2ZmMzAwMCB7DQo+PiAgICAgICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7 DQo+PiAgICAgICAgICAgICAgcmVnID0gPDB4MCAweDQ3ZmYzMDAwIDB4MCAweDEwMDA+Ow0KPj4g ICAgICB9Ow0KPj4gfQ0KPj4gICAgd2hlcmUgZmlyc3QgaXRlbSBpcyAiYWdlbnRfaWQiLCBzZWNv bmQgLSAiYXJtLHNtYy1pZCIsIGFuZCB0aGlyZCAtICJhcm0sc2NtaS1zaG1lbSIgZm9yDQo+PiAg ICB0aGlzIGFnZW50X2lkLg0KPj4NCj4+ICAgIE5vdGUgdGhhdCBYZW4gaXMgdGhlIG9ubHkgb25l IGVudHJ5IGluIHRoZSBzeXN0ZW0gd2hpY2ggbmVlZCB0byBrbm93DQo+PiAgICBhYm91dCBTQ01J IG11bHRpLWFnZW50IHN1cHBvcnQuDQo+Pg0KPj4gLSBJdCBpbXBsZW1lbnRzIHRoZSBTQ0kgc3Vi c3lzdGVtIGludGVyZmFjZSByZXF1aXJlZCBmb3IgY29uZmlndXJpbmcgYW5kDQo+PiBlbmFibGlu ZyBTQ01JIGZ1bmN0aW9uYWxpdHkgZm9yIERvbTAvaHdkb20gYW5kIEd1ZXN0IGRvbWFpbnMuIFRv IGVuYWJsZQ0KPj4gU0NNSSBmdW5jdGlvbmFsaXR5IGZvciBkb21haW4gaXQgaGFzIHRvIGJlIGNv bmZpZ3VyZWQgd2l0aCB1bmlxdWUgc3VwcG9ydGVkDQo+PiBTQ01JIEFnZW50X2lkIGFuZCB1c2Ug Y29ycmVzcG9uZGluZyBTQ01JIFNNQy9IVkMgc2hhcmVkIG1lbW9yeSB0cmFuc3BvcnQNCj4+IFtz bWMtaWQsIHNobWVtXSBkZWZpbmVkIGZvciB0aGlzIFNDTUkgQWdlbnRfaWQuDQo+PiAtIE9uY2Ug WGVuIGRvbWFpbiBpcyBjb25maWd1cmVkIGl0IGNhbiBjb21tdW5pY2F0ZSB3aXRoIEVMMyBTQ01J IEZXOg0KPj4gICAgLS0gemVyby1jb3B5LCB0aGUgZ3Vlc3QgZG9tYWluIHB1dHMgU0NNSSBtZXNz YWdlIGluIHNobWVtOw0KPj4gICAgLS0gdGhlIGd1ZXN0IHRyaWdnZXJzIFNNQy9IVkMgZXhjZXB0 aW9uIHdpdGggc21jLWlkIChkb29yYmVsbCk7DQo+PiAgICAtLSB0aGUgWGVuIGRyaXZlciBjYXRj aGVzIGV4Y2VwdGlvbiwgZG8gY2hlY2tzIGFuZCBzeW5jaHJvbm91c2x5IGZvcndhcmRzDQo+PiAg ICBpdCB0byBFTDMgRlcuDQo+PiAtIHRoZSBYZW4gZHJpdmVyIHNlbmRzIEJBU0VfUkVTRVRfQUdF TlRfQ09ORklHVVJBVElPTiBtZXNzYWdlIHRvIFhlbg0KPj4gICAgbWFuYWdlbWVudCBhZ2VudCBj aGFubmVsIG9uIGRvbWFpbiBkZXN0cm95IGV2ZW50LiBUaGlzIGFsbG93cyB0byByZXNldA0KPj4g ICAgcmVzb3VyY2VzIHVzZWQgYnkgZG9tYWluIGFuZCBzbyBpbXBsZW1lbnQgdXNlLWNhc2UgbGlr ZSBkb21haW4gcmVib290Lg0KPj4NCj4+IERvbTAgRW5hYmxlIFNDTUkgU01DOg0KPj4gICAtIHBh c3MgZG9tMF9zY21pX2FnZW50X2lkPTxhZ2VudF9pZD4gaW4gWGVuIGNvbW1hbmQgbGluZS4gaWYg bm90IHByb3ZpZGVkDQo+PiAgICAgU0NNSSB3aWxsIGJlIGRpc2FibGVkIGZvciBEb20wIGFuZCBh bGwgU0NNSSBub2RlcyByZW1vdmVkIGZyb20gRG9tMCBEVC4NCj4+ICAgICBUaGUgZHJpdmVyIHVw ZGF0ZXMgRG9tMCBEVCBTQ01JIG5vZGUgImFybSxzbWMtaWQiIHZhbHVlIGFuZCBmaXggdXAgc2ht ZW0NCj4+ICAgICBub2RlIGFjY29yZGluZyB0byBhc3NpZ25lZCBhZ2VudF9pZC4NCj4+DQo+PiBH dWVzdCBkb21haW5zIGVuYWJsZSBTQ01JIFNNQzoNCj4+ICAgLSB4bC5jZmc6IGFkZCBjb25maWd1 cmF0aW9uIG9wdGlvbiBhcyBiZWxvdw0KPj4NCj4+ICAgICBhcm1fc2NpID0gInR5cGU9c2NtaV9z bWNfbXVsdGlhZ2VudCxhZ2VudF9pZD0yIg0KPj4NCj4+ICAgLSB4bC5jZmc6IGVuYWJsZSBhY2Nl c3MgdG8gdGhlICJhcm0sc2NtaS1zaG1lbSIgd2hpY2ggc2hvdWxkIGNvcnJlc3BvbmQgYXNzaWdu ZWQgYWdlbnRfaWQgZm9yDQo+PiAgICAgdGhlIGRvbWFpbiwgZm9yIGV4YW1wbGU6DQo+Pg0KPj4g aW9tZW0gPSBbDQo+PiAgICAgICI0N2ZmMiwxQDIyMDAxIiwNCj4+IF0NCj4gTG9va2luZyBhdCB0 aGUgY29kZSBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucywgaXQgbG9va3MgbGlrZSBpdCBp cw0KPiBwb3NzaWJsZSB0byBtYXAgYSBzY21pLXNobWVtIGNoYW5uZWwgYXQgYSBkaWZmZXJlbnQg YWRkcmVzcyBmb3IgdGhlDQo+IGd1ZXN0LiBJdCBzZWVtcyBsaWtlIGl0IHdvdWxkIHdvcmsuIElz IHRoYXQgY29ycmVjdD8NCj4NClllcyBpdCB3aWxsLiBpbiBvdXIgY2FzZSBhZGRyZXNzIDIyMDAx MDAwIHNob3VsZCBiZSB0aGUgc2F2ZSBhcw0Kc3JhbUAyMjAwMTAwMCBpbiB0aGUgZG9tYWluIGRl dmljZS10cmVlLg0KPj4gICAtIERUOiBhZGQgU0NNSSBub2RlcyB0byB0aGUgRHJpdmVyIGRvbWFp biBwYXJ0aWFsIGRldmljZSB0cmVlIGFzIGluIHRoZQ0KPj4gICBiZWxvdyBleGFtcGxlLiBUaGUg ImFybSxzbWMtaWQiIHNob3VsZCBjb3JyZXNwb25kIGFzc2lnbmVkIGFnZW50X2lkIGZvciB0aGUg ZG9tYWluOg0KPj4NCj4+IHBhc3N0aHJvdWdoIHsNCj4+ICAgICBzY21pX3NobV8wOiBzcmFtQDIy MDAxMDAwIHsNCj4+ICAgICAgICAgY29tcGF0aWJsZSA9ICJhcm0sc2NtaS1zaG1lbSI7DQo+PiAg ICAgICAgIHJlZyA9IDwweDAgMHgyMjAwMTAwMCAweDAgMHgxMDAwPjsNCj4+ICAgICB9Ow0KPj4N Cj4+ICAgICBmaXJtd2FyZSB7DQo+PiAgICAgICAgICBjb21wYXRpYmxlID0gInNpbXBsZS1idXMi Ow0KPj4gICAgICAgICAgICAgIHNjbWk6IHNjbWkgew0KPj4gICAgICAgICAgICAgICAgICBjb21w YXRpYmxlID0gImFybSxzY21pLXNtYyI7DQo+PiAgICAgICAgICAgICAgICAgIGFybSxzbWMtaWQg PSA8MHg4MjAwMDAwND47DQo+PiAgICAgICAgICAgICAgICAgIHNobWVtID0gPCZzY21pX3NobV8w PjsNCj4+ICAgICAgICAgICAgICAgICAgLi4uDQo+PiAgICAgICAgICAgICAgfQ0KPj4gICAgICB9 DQo+PiB9DQo+Pg0KPj4gU0NNSSAiNC4yLjEuMSBEZXZpY2Ugc3BlY2lmaWMgYWNjZXNzIGNvbnRy b2wiDQo+Pg0KPj4gVGhlIFhFTiBTQ0kgU0NNSSBTTUMgbXVsdGktYWdlbnQgZHJpdmVyIHBlcmZv cm1zICJhY2Nlc3MtY29udHJvbGxlciIgcHJvdmlkZXIgZnVuY3Rpb24NCj4+IGluIGNhc2UgRUwz IFNDTUkgRlcgaW1wbGVtZW50cyBTQ01JICI0LjIuMS4xIERldmljZSBzcGVjaWZpYyBhY2Nlc3Mg Y29udHJvbCIgYW5kIHByb3ZpZGVzIHRoZQ0KPj4gQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05T IGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBkZXZpY2VzIHRoYXQgYW4gYWdlbnRzIGhhdmUgYWNj ZXNzIHRvLg0KPj4gVGhlIERUIFNDTUkgbm9kZSBzaG91bGQgIiNhY2Nlc3MtY29udHJvbGxlci1j ZWxscz08MT4iIHByb3BlcnR5IGFuZCBEVCBkZXZpY2VzIHNob3VsZCBiZSBib3VuZA0KPj4gdG8g dGhlIFhlbiBTQ01JLg0KPj4NCj4+ICZpMmMxIHsNCj4+ICAgICAgYWNjZXNzLWNvbnRyb2xsZXJz ID0gPCZzY21pIDA+Ow0KPj4gfTsNCj4+DQo+PiBUaGUgRG9tMCBhbmQgZG9tMGxlc3MgZG9tYWlu cyBEVCBkZXZpY2VzIHdpbGwgYmUgcHJvY2Vzc2VkIGF1dG9tYXRpY2FsbHkgdGhyb3VnaA0KPj4g c2NpX2Fzc2lnbl9kdF9kZXZpY2UoKSBjYWxsLCBidXQgdG8gYXNzaWduIFNDTUkgZGV2aWNlcyBm cm9tIHRvb2xzdGFjayB0aGUgeGwuY2ZnOiJkdGRldiIgcHJvcGVydHkNCj4+IHNoZWxsIGJlIHVz ZWQ6DQo+Pg0KPj4gZHRkZXYgPSBbDQo+PiAgICAgICIvc29jL2kyY0BlNjUwODAwMCIsDQo+PiBd DQo+Pg0KPj4geGwuY2ZnOmR0ZGV2IHdpbGwgY29udGFpbiBhbGwgbm9kZXMgd2hpY2ggYXJlIHVu ZGVyIFNDTUkgbWFuYWdlbWVudCAobm90IG9ubHkgdGhvc2Ugd2hpY2ggYXJlIGJlaGluZCBJT01N VSkuDQo+Pg0KPj4gWzFdaHR0cHM6Ly93ZWIuZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9r ZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL0RvY3VtZW50YXRpb24vZGV2aWNldHJl ZS9iaW5kaW5ncy9maXJtd2FyZS9hcm0sc2NtaS55YW1sDQo+PiBbMl1odHRwczovL3dlYi5naXQu a2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L3Ry ZWUvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2FjY2Vzcy1jb250cm9sbGVycy9h Y2Nlc3MtY29udHJvbGxlcnMueWFtbA0KPj4gU2lnbmVkLW9mZi1ieTogT2xla3NpaSBNb2lzaWVp ZXY8b2xla3NpaV9tb2lzaWVpZXZAZXBhbS5jb20+DQo+PiBTaWduZWQtb2ZmLWJ5OiBHcnlnb3Jp aSBTdHJhc2hrbzxncnlnb3JpaV9zdHJhc2hrb0BlcGFtLmNvbT4NCj4gVGhhbmtzIGZvciB0aGUg bG9uZyBleHBsYW5hdGlvbiwgZ3JlYXQgd29yayEgSSBhbSByZWFsbHkgbG9va2luZyBmb3J3YXJk DQo+IHRvIGhhdmUgdGhpcyBmZWF0dXJlIGluIHRoZSB0cmVlIHNvb24uDQo+DQo+DQo+PiAtLS0N Cj4+DQo+PiBDaGFuZ2VzIGluIHY0Og0KPj4gLSB0b29sc3RhY2sgY29tbWVudHMgZnJvbSBBbnRo b255IFBFUkFSRA0KPj4gLSBhZGRlZCBkb20wbGVzcyBzdXBwb3J0DQo+PiAtIGFkZGVkIGRvYyBm b3IgInhlbixzY21pLXNlY29uZGFyeS1hZ2VudHMiDQo+Pg0KPj4gICBkb2NzL21hbi94bC5jZmcu NS5wb2QuaW4gICAgICAgICAgICAgICAgICAgIHwgIDEzICsNCj4+ICAgZG9jcy9taXNjL2FybS9k ZXZpY2UtdHJlZS9ib290aW5nLnR4dCAgICAgICB8ICA2MCArKw0KPj4gICBkb2NzL21pc2MveGVu LWNvbW1hbmQtbGluZS5wYW5kb2MgICAgICAgICAgIHwgICA5ICsNCj4+ICAgdG9vbHMvbGlicy9s aWdodC9saWJ4bF9hcm0uYyAgICAgICAgICAgICAgICB8ICAgNCArDQo+PiAgIHRvb2xzL2xpYnMv bGlnaHQvbGlieGxfdHlwZXMuaWRsICAgICAgICAgICAgfCAgIDQgKy0NCj4+ICAgdG9vbHMveGwv eGxfcGFyc2UuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArDQo+PiAgIHhlbi9hcmNo L2FybS9kb20wbGVzcy1idWlsZC5jICAgICAgICAgICAgICAgfCAgMTEgKw0KPj4gICB4ZW4vYXJj aC9hcm0vZG9tYWluX2J1aWxkLmMgICAgICAgICAgICAgICAgIHwgICAzICstDQo+PiAgIHhlbi9h cmNoL2FybS9maXJtd2FyZS9LY29uZmlnICAgICAgICAgICAgICAgfCAgMTEgKw0KPj4gICB4ZW4v YXJjaC9hcm0vZmlybXdhcmUvTWFrZWZpbGUgICAgICAgICAgICAgIHwgICAxICsNCj4+ICAgeGVu L2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktcHJvdG8uaCAgICAgICAgICB8IDE2NCArKysrDQo+PiAg IHhlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXNobWVtLmMgICAgICAgICAgfCAxNzMgKysrKw0K Pj4gICB4ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS1zaG1lbS5oICAgICAgICAgIHwgIDQ1ICsN Cj4+ICAgeGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc21jLW11bHRpYWdlbnQuYyB8IDg2MCAr KysrKysrKysrKysrKysrKysrKw0KPj4gICB4ZW4vaW5jbHVkZS9wdWJsaWMvYXJjaC1hcm0uaCAg ICAgICAgICAgICAgIHwgICAzICsNCj4+ICAgMTUgZmlsZXMgY2hhbmdlZCwgMTM3MSBpbnNlcnRp b25zKCspLCAyIGRlbGV0aW9ucygtKQ0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2FyY2gv YXJtL2Zpcm13YXJlL3NjbWktcHJvdG8uaA0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2Fy Y2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uYw0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQgeGVu L2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uaA0KPj4gICBjcmVhdGUgbW9kZSAxMDA2NDQg eGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc21jLW11bHRpYWdlbnQuYw0KPj4NCj4+IGRpZmYg LS1naXQgYS9kb2NzL21hbi94bC5jZmcuNS5wb2QuaW4gYi9kb2NzL21hbi94bC5jZmcuNS5wb2Qu aW4NCj4+IGluZGV4IDFjY2Y1MGI4ZWEuLjMwMmM0NmQ4YmMgMTAwNjQ0DQo+PiAtLS0gYS9kb2Nz L21hbi94bC5jZmcuNS5wb2QuaW4NCj4+ICsrKyBiL2RvY3MvbWFuL3hsLmNmZy41LnBvZC5pbg0K Pj4gQEAgLTMxMjIsOCArMzEyMiwyMSBAQCBzaW5nbGUgU0NNSSBPU1BNIGFnZW50IHN1cHBvcnQu DQo+PiAgIFNob3VsZCBiZSB1c2VkIHRvZ2V0aGVyIHdpdGggQjxkb20wX3NjbWlfc21jX3Bhc3N0 aHJvdWdoPiBYZW4gY29tbWFuZCBsaW5lDQo+PiAgIG9wdGlvbi4NCj4+DQo+PiArPWl0ZW0gQjxz Y21pX3NtY19tdWx0aWFnZW50Pg0KPj4gKw0KPj4gK0VuYWJsZXMgQVJNIFNDTUkgU01DIG11bHRp LWFnZW50IHN1cHBvcnQgZm9yIHRoZSBndWVzdCBieSBlbmFibGluZyBTQ01JIG92ZXINCj4+ICtT TUMgY2FsbHMgZm9yd2FyZGluZyBmcm9tIGRvbWFpbiB0byB0aGUgRUwzIGZpcm13YXJlIChsaWtl IFRydXN0ZWQgRmlybXdhcmUtQSkNCj4+ICt3aXRoIGEgbXVsdGkgU0NNSSBPU1BNIGFnZW50IHN1 cHBvcnQuIFRoZSBTQ01JIEI8YWdlbnRfaWQ+IHNob3VsZCBiZQ0KPj4gK3NwZWNpZmllZCBmb3Ig dGhlIGd1ZXN0Lg0KPj4gKw0KPj4gICA9YmFjaw0KPj4NCj4+ICs9aXRlbSBCPGFnZW50X2lkPU5V TUJFUj4NCj4+ICsNCj4+ICtTcGVjaWZpZXMgYSBub24temVybyBBUk0gU0NJIGFnZW50IGlkIGZv ciB0aGUgZ3Vlc3QuIFRoaXMgb3B0aW9uIGlzIG1hbmRhdG9yeQ0KPj4gK2lmIHRoZSBTQ01JIFNN QyBzdXBwb3J0IGlzIGVuYWJsZWQgZm9yIHRoZSBndWVzdC4gVGhlIGFnZW50IGlkcyBvZiBkb21h aW5zDQo+PiArZXhpc3Rpbmcgb24gYSBzaW5nbGUgaG9zdCBtdXN0IGJlIHVuaXF1ZSBhbmQgaW4g dGhlIHJhbmdlIFsxLi4yNTVdLg0KPj4gKw0KPj4gICA9YmFjaw0KPj4NCj4+ICAgPWJhY2sNCj4+ IGRpZmYgLS1naXQgYS9kb2NzL21pc2MvYXJtL2RldmljZS10cmVlL2Jvb3RpbmcudHh0IGIvZG9j cy9taXNjL2FybS9kZXZpY2UtdHJlZS9ib290aW5nLnR4dA0KPj4gaW5kZXggODk0M2MwNDE3My4u Yzg5MjNhYjhiMiAxMDA2NDQNCj4+IC0tLSBhL2RvY3MvbWlzYy9hcm0vZGV2aWNlLXRyZWUvYm9v dGluZy50eHQNCj4+ICsrKyBiL2RvY3MvbWlzYy9hcm0vZGV2aWNlLXRyZWUvYm9vdGluZy50eHQN Cj4+IEBAIC0yOTYsNiArMjk2LDIwIEBAIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOg0K Pj4gICAgICAgU2hvdWxkIGJlIHVzZWQgdG9nZXRoZXIgd2l0aCBkb20wX3NjbWlfc21jX3Bhc3N0 aHJvdWdoIFhlbiBjb21tYW5kIGxpbmUNCj4+ICAgICAgIG9wdGlvbi4NCj4+DQo+PiArICAgIC0g InNjbWlfc21jX211bHRpYWdlbnQiDQo+PiArDQo+PiArICAgIEVuYWJsZXMgQVJNIFNDTUkgU01D IG11bHRpLWFnZW50IHN1cHBvcnQgZm9yIHRoZSBndWVzdCBieSBlbmFibGluZyBTQ01JIG92ZXIN Cj4+ICsgICAgU01DIGNhbGxzIGZvcndhcmRpbmcgZnJvbSBkb21haW4gdG8gdGhlIEVMMyBmaXJt d2FyZSAobGlrZSBBUk0NCj4+ICsgICAgVHJ1c3RlZCBGaXJtd2FyZS1BKSB3aXRoIGEgbXVsdGkg U0NNSSBPU1BNIGFnZW50IHN1cHBvcnQuDQo+PiArICAgIFRoZSBTQ01JIGFnZW50X2lkIHNob3Vs ZCBiZSBzcGVjaWZpZWQgZm9yIHRoZSBndWVzdCB3aXRoICJ4ZW4sc2NpX2FnZW50X2lkIg0KPj4g KyAgICBwcm9wZXJ0eS4NCj4+ICsNCj4+ICstICJ4ZW4sc2NpX2FnZW50X2lkIg0KPj4gKw0KPj4g KyAgICBTcGVjaWZpZXMgYSBub24temVybyBBUk0gU0NJIGFnZW50IGlkIGZvciB0aGUgZ3Vlc3Qu IFRoaXMgb3B0aW9uIGlzDQo+PiArICAgIG1hbmRhdG9yeSBpZiB0aGUgU0NNSSBTTUMgInNjbWlf c21jX211bHRpYWdlbnQiIHN1cHBvcnQgaXMgZW5hYmxlZCBmb3INCj4+ICsgICAgdGhlIGd1ZXN0 LiBUaGUgYWdlbnQgaWRzIG9mIGd1ZXN0IG11c3QgYmUgdW5pcXVlIGFuZCBpbiB0aGUgcmFuZ2Ug WzEuLjI1NV0uDQo+PiArDQo+PiAgIFVuZGVyIHRoZSAieGVuLGRvbWFpbiIgY29tcGF0aWJsZSBu b2RlLCBvbmUgb3IgbW9yZSBzdWItbm9kZXMgYXJlIHByZXNlbnQNCj4+ICAgZm9yIHRoZSBEb21V IGtlcm5lbCBhbmQgcmFtZGlzay4NCj4+DQo+PiBAQCAtNzY0LDMgKzc3OCw0OSBAQCBUaGUgYXV0 b21hdGljYWxseSBhbGxvY2F0ZWQgc3RhdGljIHNoYXJlZCBtZW1vcnkgd2lsbCBnZXQgbWFwcGVk IGF0DQo+PiAgIDB4ODAwMDAwMDAgaW4gRG9tVTEgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVzcyBzcGFj ZSwgYW5kIGF0IDB4OTAwMDAwMDAgaW4gRG9tVTINCj4+ICAgZ3Vlc3QgcGh5c2ljYWwgYWRkcmVz cyBzcGFjZS4gRG9tVTEgaXMgZXhwbGljaXRseSBkZWZpbmVkIGFzIHRoZSBvd25lciBkb21haW4s DQo+PiAgIGFuZCBEb21VMiBpcyB0aGUgYm9ycm93ZXIgZG9tYWluLg0KPj4gKw0KPj4gK1NDTUkg U01DIG11bHRpLWFnZW50IHN1cHBvcnQNCj4+ICs9PT09PT09PT09PT09PT09PT09PT09PT09PT09 DQo+PiArDQo+PiArRm9yIGVuYWJsaW5nIHRoZSBBUk0gU0NNSSBTTUMgbXVsdGktYWdlbnQgc3Vw cG9ydCAoZW5hYmxlZCBieSBDT05GSUdfU0NNSV9TTUNfTUEpDQo+PiArdGhlIFhlbiBzcGVjaWZp YyBTQ01JIEFnZW50J3MgY29uZmlndXJhdGlvbiBzaGVsbCBiZSBwcm92aWRlZCBpbiB0aGUgSG9z dCBEVA0KPj4gK2FjY29yZGluZyB0byB0aGUgU0NNSSBjb21wbGlhbnQgRUwzIEZpcm13YXJlIHNw ZWNpZmljYXRpb24gd2l0aA0KPj4gK0FSTSBTTUMvSFZDIHRyYW5zcG9ydCB1c2luZyBwcm9wZXJ0 eSAieGVuLHNjbWktc2Vjb25kYXJ5LWFnZW50cyIgdW5kZXINCj4+ICt0aGUgdG9wLWxldmVsICJj aG9zZW4iIG5vZGU6DQo+PiArDQo+PiArLSB4ZW4sc2NtaS1zZWNvbmRhcnktYWdlbnRzDQo+PiAr DQo+PiArICAgIERlZmluZXMgYSBzZXQgb2YgU0NNSSBhZ2VudHMgY29uZmlndXJhdGlvbiBzdXBw b3J0ZWQgYnkgU0NNSSBFTDMgRlcgYW5kDQo+PiArICAgIGF2YWlsYWJsZSBmb3IgWGVuLiBFYWNo IEFnZW50IGRlZmluZWQgYXMgdHJpcGxlIGNvbnNpc3Rpbmcgb2Y6DQo+PiArICAgIFNDTUkgYWdl bnRfaWQsDQo+PiArICAgIFNNQy9IVkMgZnVuY3Rpb25faWQgYXNzaWduZWQgZm9yIHRoZSBhZ2Vu dCB0cmFuc3BvcnQgKCJhcm0sc21jLWlkIiksDQo+PiArICAgIHBoYW5kbGUgdG8gU0NNSSBTSE0g YXNzaWduZWQgZm9yIHRoZSBhZ2VudCB0cmFuc3BvcnQgKCJhcm0sc2NtaS1zaG1lbSIpLg0KPj4g Kw0KPj4gK0FzIGFuIGV4YW1wbGU6DQo+PiArDQo+PiArY2hvc2VuIHsNCj4+ICsgICAgeGVuLHNj bWktc2Vjb25kYXJ5LWFnZW50cyA9IDwNCj4+ICsgICAgICAgIDEgMHg4MjAwMDAwMyAmc2NtaV9z aG1fMQ0KPj4gKyAgICAgICAgMiAweDgyMDAwMDA0ICZzY21pX3NobV8yDQo+PiArICAgICAgICAz IDB4ODIwMDAwMDUgJnNjbWlfc2htXzMNCj4+ICsgICAgICAgIDQgMHg4MjAwMDAwNiAmc2NtaV9z aG1fND47DQo+PiArfQ0KPiBOSVQ6IGl0IHNob3VsZCBiZSB9Ow0KKw0KPiBMb29raW5nIGF0IHNj bWlfcHJvYmUsIGNvbGxlY3RfYWdlbnRzLCBhbmQgdGhlIGZvbGxvd2luZyBTQ01JDQo+IFNDTUlf QkFTRV9ESVNDT1ZFUl9BR0VOVCByZXF1ZXN0LCBJIHdvbmRlcjogZG8gd2UgYWN0dWFsbHkgbmVl ZCB0aGlzDQo+IGluZm9ybWF0aW9uPw0KPg0KPiBJdCBsb29rcyBsaWtlIHdlIGNhbiBkaXNjb3Zl ciB0aGUgYWdlbmRfaWRzIGZvciBldmVyeSBjaGFubmVsLCBJIGd1ZXNzDQo+IHdoYXQgd2UgbmVl ZCB0byBrbm93IGlzIHRoZSBzaG1lbSBsb2NhdGlvbiBmb3IgZXZlcnkgY2hhbm5lbD8gQnV0IHRo ZQ0KPiBmdWxsIGxpc3Qgb2Ygc2htZW0gY2hhbm5lbCBpcyBhdmFpbGFibGUgYmVsb3cgdGhhbmtz IHRvIHRoZSBzY21pLXNobWVtDQo+IG5vZGVzLg0KPg0KPiBTbywgd2UgaGF2ZSB0aGUgbGlzdCBv ZiBzY21pLXNobWVtIGFueXdheSwgYW5kIHdlIGNhbiBwcm9iZSB0aGUNCj4gYWdlbnRfaWQuIFRo ZSBvbmx5IHBhcmFtZXRlciBsZWZ0IGlzIHRoZSBzbWNfaWQvZnVuY19pZC4NCj4NCj4gT3IgbWF5 YmUgc21jX2lkL2Z1bmNfaWQgY2FuIGJlIGNhbGN1bGF0ZWQgZnJvbSBhZ2VudF9pZD8NCj4NCj4g SSBhbSBhc2tpbmcgbW9zdGx5IGJlY2F1c2UgaWYgYSB1c2VyIGlzIHN1cHBvc2VkIHRvIGFkZCB0 aGlzDQo+IHhlbixzY21pLXNlY29uZGFyeS1hZ2VudHMgcHJvcGVydHksIHdoZXJlIGFyZSB0aGV5 IHN1cHBvc2VkIHRvIGZpbmQgdGhlDQo+IHNtY19pZC9mdW5jX2lkIGluZm9ybWF0aW9uPw0KPg0K PiBJdCBpcyBpbXBvcnRhbnQgdGhhdCB3ZSB3cml0ZSBkb3duIGluIHRoaXMgZG9jdW1lbnQgaG93 IHRoZSB1c2VyIGlzDQo+IGV4cGVjdGVkIHRvIGZpbmQgb3V0IHdoYXQgMSBpcyAweDgyMDAwMDAz IHdoaWNoIGlzIHNjbWlfc2htXzEuDQoNClRoYXQncyBhIHZlcnkgZ29vZCBxdWVzdGlvbiEgVGhl IGlzc3VlIGhlcmUgaXMgdGhhdCB0aGVyZSBhcmUgbm8NCg0KZXhwbGljaXQgcmVxdWlyZW1lbnRz IGRlZmluaW5nIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBhZ2VudF9pZCBhbmQNCmZ1bmNfaWQu DQoNCg0KRm9yIGV4YW1wbGUsIGluIEFSTS1URiwgZGlmZmVyZW50IGltcGxlbWVudGF0aW9ucyBj YW4gdXNlIGRpZmZlcmVudA0KZnVuY19pZHMuDQoNClRvIHByb3ZpZGUgYmV0dGVyIGZsZXhpYmls aXR5LCB3ZSBkZWNpZGVkIHRvIHNlcGFyYXRlIGFnZW50X2lkIGZyb20gZnVuY19pZC4NCg0KDQpD dXJyZW50bHksIHRoZSBTQ01JX0JBU0VfRElTQ09WRVJfQUdFTlQgY2FsbHMgZnJvbSB0aGUgcHJv YmUgYXJlIGludGVuZGVkIHRvDQoNCnZlcmlmeSB0aGF0IGFsbCByZWdpc3RlcmVkIGFnZW50cyBh cmUgcHJlc2VudCBhbmQgdGhhdCB0aGUgY29uZmlndXJhdGlvbg0KaXMgY29ycmVjdC4NCg0KSG93 ZXZlciwgSSB1bmRlcnN0YW5kIHRoYXQgdGhpcyBhZGRpdGlvbmFsIHZhbGlkYXRpb24gY291bGQg YmUgb3B0aW9uYWwNCnRvIHNhdmUgdHJhZmZpYy4NCg0KDQpUbyBhZGRyZXNzIHRoaXMsIEnigJlt IGNvbnNpZGVyaW5nIGFkZGluZyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBzdWNoIGFzDQoNCkNP TkZJR19TQ01JX0FHRU5UX1ZBTElEQVRJT04sIHdoaWNoIGNhbiBiZSBkaXNhYmxlZCB0byByZWR1 Y2UgYm9vdCB0aW1lDQppZiB0aGlzDQoNCnZhbGlkYXRpb24gaXMgbm90IG5lY2Vzc2FyeSBmb3Ig Y2VydGFpbiB1c2UgY2FzZXMuDQoNCg0KTGFzdGx5LCBJ4oCZbGwgYmUgdXBkYXRpbmcgdGhlIGRv Y3VtZW50IHRvIGluY2x1ZGUgY2xlYXJlciBpbmZvcm1hdGlvbg0KYWJvdXQgdGhlDQoNCnJlbGF0 aW9uc2hpcCBiZXR3ZWVuIGZ1bmNfaWQgYW5kIGFnZW50X2lkIGluIHRoZSB1cGNvbWluZyB2NS4N Cg0KDQoNCj4+ICsvew0KPj4gKyAgICAgICAgc2NtaV9zaG1fMTogc3JhbUA0N2ZmMTAwMCB7DQo+ PiArICAgICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2htZW0iOw0KPj4gKyAg ICAgICAgICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjEwMDAgMHgwIDB4MTAwMD47DQo+PiArICAg ICAgICB9Ow0KPj4gKyAgICAgICAgc2NtaV9zaG1fMjogc3JhbUA0N2ZmMjAwMCB7DQo+PiArICAg ICAgICAgICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2htZW0iOw0KPj4gKyAgICAgICAg ICAgICAgICByZWcgPSA8MHgwIDB4NDdmZjIwMDAgMHgwIDB4MTAwMD47DQo+PiArICAgICAgICB9 Ow0KPj4gKyAgICAgICAgc2NtaV9zaG1fMzogc3JhbUA0N2ZmMzAwMCB7DQo+PiArICAgICAgICAg ICAgICAgIGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2htZW0iOw0KPj4gKyAgICAgICAgICAgICAg ICByZWcgPSA8MHgwIDB4NDdmZjMwMDAgMHgwIDB4MTAwMD47DQo+PiArICAgICAgICB9Ow0KPj4g KyAgICAgICAgc2NtaV9zaG1fMzogc3JhbUA0N2ZmNDAwMCB7DQo+PiArICAgICAgICAgICAgICAg IGNvbXBhdGlibGUgPSAiYXJtLHNjbWktc2htZW0iOw0KPj4gKyAgICAgICAgICAgICAgICByZWcg PSA8MHgwIDB4NDdmZjQwMDAgMHgwIDB4MTAwMD47DQo+PiArICAgICAgICB9Ow0KPiBBcmUgdGhl c2Ugc2NtaV9zaG1fMSAtIHNjbWlfc2htXzMgdW5kZXIgdGhlIHRvcCBsZXZlbCBkZXZpY2UgdHJl ZSBub2RlPw0KPiBPciBhcmUgdW5kZXIgL2Zpcm13YXJlPyBPciBhcmUgdGhleSB1bmRlciAvY2hv c2VuPw0KPg0KPiBJIHRha2UgdGhleSBhcmUgdW5kZXIgdGhlIHRvcCBsZXZlbCBub2RlIHRvZ2V0 aGVyIHdpdGggc2NtaV9zaG1fMD8NCj4NCj4gQ2FuIHlvdSBwbGVhc2UgYWxzbyBjbGFyaWZ5IGlu IHRoZSBkb2N1bWVudCBhcyB3ZWxsPw0KPg0KPg0KYWxsIHRoZXNlIG5vZGVzIGFyZSBvbiB0aGUg dG9wIGxldmVsIG9mIHRoZSBkZXZpY2UtdHJlZS4gQnV0IHRoZXJlIGlzIG5vDQpzcGVjaWZpYyBw bGFjZSBmb3IgdGhlbS4NCg0KVGhleSBjb3VsZCBiZSBzdWJub2RlcyB0byBzb21lIG1lbW9yeS1y ZWdpb24gZm9yIGV4YW1wbGUuIEkgd2lsbCBjbGFyaWZ5DQp0aGlzLg0KDQo+PiArfQ0KPj4gZGlm ZiAtLWdpdCBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYyBiL2RvY3MvbWlzYy94 ZW4tY29tbWFuZC1saW5lLnBhbmRvYw0KPj4gaW5kZXggOGU1MGY2YjdjNy4uYmMzYzY0ZDZlYyAx MDA2NDQNCj4+IC0tLSBhL2RvY3MvbWlzYy94ZW4tY29tbWFuZC1saW5lLnBhbmRvYw0KPj4gKysr IGIvZG9jcy9taXNjL3hlbi1jb21tYW5kLWxpbmUucGFuZG9jDQo+PiBAQCAtMTA5MSw2ICsxMDkx LDE1IEBAIHdoaWNoIHNlcnZlcyBhcyBEcml2ZXIgZG9tYWluLiBUaGUgU0NNSSB3aWxsIGJlIGRp c2FibGVkIGZvciBEb20wL2h3ZG9tIGFuZA0KPj4gICBTQ01JIG5vZGVzIHJlbW92ZWQgZnJvbSBE b20wL2h3ZG9tIGRldmljZSB0cmVlLg0KPj4gICAoZm9yIGV4YW1wbGUsIHRoaW4gRG9tMCB3aXRo IERyaXZlciBkb21haW4gdXNlLWNhc2UpLg0KPj4NCj4+ICsjIyMgZG9tMF9zY21pX2FnZW50X2lk IChBUk0pDQo+PiArPiBgPSA8aW50ZWdlcj5gDQo+PiArDQo+PiArVGhlIG9wdGlvbiBpcyBhdmFp bGFibGUgd2hlbiBgQ09ORklHX1NDTUlfU01DX01BYCBpcyBjb21waWxlZCBpbiwgYW5kIGFsbG93 cyB0bw0KPj4gK2VuYWJsZSBTQ01JIGZ1bmN0aW9uYWxpdHkgZm9yIERvbTAgYnkgc3BlY2lmeWlu ZyBhIG5vbi16ZXJvIEFSTSBTQ01JIGFnZW50IGlkLg0KPj4gK1RoZSBTQ01JIHdpbGwgYmUgZGlz YWJsZWQgZm9yIERvbTAgaWYgdGhpcyBvcHRpb24gaXMgbm90IHNwZWNpZmllZA0KPj4gKyhmb3Ig ZXhhbXBsZSwgdGhpbiBEb20wIG9yIGRvbTBsZXNzIHVzZS1jYXNlcykuDQo+PiArVGhlIGFnZW50 IGlkcyBvZiBkb21haW5zIGV4aXN0aW5nIG9uIGEgc2luZ2xlIGhvc3QgbXVzdCBiZSB1bmlxdWUu DQo+PiArDQo+PiAgICMjIyBkdHVhcnQgKEFSTSkNCj4+ICAgPiBgPSBwYXRoIFs6b3B0aW9uc11g DQo+Pg0KPj4gZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfYXJtLmMgYi90b29s cy9saWJzL2xpZ2h0L2xpYnhsX2FybS5jDQo+PiBpbmRleCAyOGJhOWViNzg3Li43NzEyZjUzY2Q0 IDEwMDY0NA0KPj4gLS0tIGEvdG9vbHMvbGlicy9saWdodC9saWJ4bF9hcm0uYw0KPj4gKysrIGIv dG9vbHMvbGlicy9saWdodC9saWJ4bF9hcm0uYw0KPj4gQEAgLTIyOSw2ICsyMjksMTAgQEAgaW50 IGxpYnhsX19hcmNoX2RvbWFpbl9wcmVwYXJlX2NvbmZpZyhsaWJ4bF9fZ2MgKmdjLA0KPj4gICAg ICAgY2FzZSBMSUJYTF9BUk1fU0NJX1RZUEVfU0NNSV9TTUM6DQo+PiAgICAgICAgICAgY29uZmln LT5hcmNoLmFybV9zY2lfdHlwZSA9IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NNSV9TTUM7 DQo+PiAgICAgICAgICAgYnJlYWs7DQo+PiArICAgIGNhc2UgTElCWExfQVJNX1NDSV9UWVBFX1ND TUlfU01DX01VTFRJQUdFTlQ6DQo+PiArICAgICAgICBjb25maWctPmFyY2guYXJtX3NjaV90eXBl ID0gWEVOX0RPTUNUTF9DT05GSUdfQVJNX1NDSV9TQ01JX1NNQ19NQTsNCj4+ICsgICAgICAgIGNv bmZpZy0+YXJjaC5hcm1fc2NpX2FnZW50X2lkID0gZF9jb25maWctPmJfaW5mby5hcmNoX2FybS5h cm1fc2NpLmFnZW50X2lkOw0KPj4gKyAgICAgICAgYnJlYWs7DQo+PiAgICAgICBkZWZhdWx0Og0K Pj4gICAgICAgICAgIExPRyhFUlJPUiwgIlVua25vd24gQVJNX1NDSSB0eXBlICVkIiwNCj4+ICAg ICAgICAgICAgICAgZF9jb25maWctPmJfaW5mby5hcmNoX2FybS5hcm1fc2NpLnR5cGUpOw0KPj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL2xpYnMvbGlnaHQvbGlieGxfdHlwZXMuaWRsIGIvdG9vbHMvbGli cy9saWdodC9saWJ4bF90eXBlcy5pZGwNCj4+IGluZGV4IGFhMjE5MGFiNWIuLjExZTMxY2U3ODYg MTAwNjQ0DQo+PiAtLS0gYS90b29scy9saWJzL2xpZ2h0L2xpYnhsX3R5cGVzLmlkbA0KPj4gKysr IGIvdG9vbHMvbGlicy9saWdodC9saWJ4bF90eXBlcy5pZGwNCj4+IEBAIC01NTMsMTEgKzU1Mywx MyBAQCBsaWJ4bF9zdmVfdHlwZSA9IEVudW1lcmF0aW9uKCJzdmVfdHlwZSIsIFsNCj4+DQo+PiAg IGxpYnhsX2FybV9zY2lfdHlwZSA9IEVudW1lcmF0aW9uKCJhcm1fc2NpX3R5cGUiLCBbDQo+PiAg ICAgICAoMCwgIm5vbmUiKSwNCj4+IC0gICAgKDEsICJzY21pX3NtYyIpDQo+PiArICAgICgxLCAi c2NtaV9zbWMiKSwNCj4+ICsgICAgKDIsICJzY21pX3NtY19tdWx0aWFnZW50IikNCj4+ICAgICAg IF0sIGluaXRfdmFsID0gIkxJQlhMX0FSTV9TQ0lfVFlQRV9OT05FIikNCj4+DQo+PiAgIGxpYnhs X2FybV9zY2kgPSBTdHJ1Y3QoImFybV9zY2kiLCBbDQo+PiAgICAgICAoInR5cGUiLCBsaWJ4bF9h cm1fc2NpX3R5cGUpLA0KPj4gKyAgICAoImFnZW50X2lkIiwgdWludDgpDQo+PiAgICAgICBdKQ0K Pj4NCj4+ICAgbGlieGxfcmRtX3Jlc2VydmUgPSBTdHJ1Y3QoInJkbV9yZXNlcnZlIiwgWw0KPj4g ZGlmZiAtLWdpdCBhL3Rvb2xzL3hsL3hsX3BhcnNlLmMgYi90b29scy94bC94bF9wYXJzZS5jDQo+ PiBpbmRleCBiZDIyYmU5ZDMzLi44MWFhMzc5N2UzIDEwMDY0NA0KPj4gLS0tIGEvdG9vbHMveGwv eGxfcGFyc2UuYw0KPj4gKysrIGIvdG9vbHMveGwveGxfcGFyc2UuYw0KPj4gQEAgLTEzMDYsNiAr MTMwNiwxOCBAQCBzdGF0aWMgaW50IHBhcnNlX2FybV9zY2lfY29uZmlnKFhMVV9Db25maWcgKmNm ZywgbGlieGxfYXJtX3NjaSAqYXJtX3NjaSwNCj4+ICAgICAgICAgICAgICAgfQ0KPj4gICAgICAg ICAgIH0NCj4+DQo+PiArICAgICAgICBpZiAoTUFUQ0hfT1BUSU9OKCJhZ2VudF9pZCIsIHB0ciwg b3BhcmcpKSB7DQo+PiArICAgICAgICAgICAgdW5zaWduZWQgbG9uZyB2YWwgPSBwYXJzZV91bG9u ZyhvcGFyZyk7DQo+PiArDQo+PiArICAgICAgICAgICAgaWYgKCF2YWwgfHwgdmFsID4gMjU1KSB7 DQo+PiArICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQW4gaW52YWxpZCBBUk1fU0NJ IGFnZW50X2lkIHNwZWNpZmllZCAoJWx1KS4gVmFsaWQgcmFuZ2UgWzEuLjI1NV1cbiIsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgdmFsKTsNCj4+ICsgICAgICAgICAgICAgICAgcmV0ID0g RVJST1JfSU5WQUw7DQo+PiArICAgICAgICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7DQo+PiAr ICAgICAgICAgICAgfQ0KPj4gKyAgICAgICAgICAgIGFybV9zY2ktPmFnZW50X2lkID0gdmFsOw0K Pj4gKyAgICAgICAgfQ0KPj4gKw0KPj4gICAgICAgICAgIHB0ciA9IHN0cnRvayhOVUxMLCAiLCIp Ow0KPj4gICAgICAgfQ0KPj4NCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZG9tMGxlc3Mt YnVpbGQuYyBiL3hlbi9hcmNoL2FybS9kb20wbGVzcy1idWlsZC5jDQo+PiBpbmRleCAwYTAwZjAz YTI1Li40M2QyMWViODg5IDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL2RvbTBsZXNzLWJ1 aWxkLmMNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9kb20wbGVzcy1idWlsZC5jDQo+PiBAQCAtODM1 LDYgKzgzNSwxNyBAQCBpbnQgX19pbml0IGRvbXVfZHRfc2NpX3BhcnNlKHN0cnVjdCBkdF9kZXZp Y2Vfbm9kZSAqbm9kZSwNCj4+ICAgICAgICAgICBkX2NmZy0+YXJjaC5hcm1fc2NpX3R5cGUgPSBY RU5fRE9NQ1RMX0NPTkZJR19BUk1fU0NJX05PTkU7DQo+PiAgICAgICBlbHNlIGlmICggIXN0cmNt cChzY2lfdHlwZSwgInNjbWlfc21jIikgKQ0KPj4gICAgICAgICAgIGRfY2ZnLT5hcmNoLmFybV9z Y2lfdHlwZSA9IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NNSV9TTUM7DQo+PiArICAgIGVs c2UgaWYgKCAhc3RyY21wKHNjaV90eXBlLCAic2NtaV9zbWNfbXVsdGlhZ2VudCIpICkNCj4+ICsg ICAgew0KPj4gKyAgICAgICAgdWludDMyX3QgYWdlbnRfaWQgPSAwOw0KPj4gKw0KPj4gKyAgICAg ICAgaWYgKCAhZHRfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgInhlbixzY2lfYWdlbnRfaWQiLCAm YWdlbnRfaWQpIHx8DQo+PiArICAgICAgICAgICAgICFhZ2VudF9pZCApDQo+IHNob3VsZG4ndCB3 ZSBjaGVjayB0aGF0IGFnZW50X2lkIDw9IDI1NSA/DQoNCkkgc2VlIG5vIGxpbWl0YXRpb24gYWJv dXQgbWF4IGFnZW50X2lkIGluIERFTjAwNTZFIGRvY3VtZW50LCBpdCdzIHVpbnQzMl90Lg0KDQo+ PiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArDQo+PiArICAgICAgICBkX2NmZy0+ YXJjaC5hcm1fc2NpX3R5cGUgPSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fU0NJX1NDTUlfU01DX01B Ow0KPj4gKyAgICAgICAgZF9jZmctPmFyY2guYXJtX3NjaV9hZ2VudF9pZCA9IGFnZW50X2lkOw0K Pj4gKyAgICB9DQo+PiAgICAgICBlbHNlDQo+PiAgICAgICB7DQo+PiAgICAgICAgICAgcHJpbnRr KFhFTkxPR19FUlIgInhlbixzY2lfdHlwZSBpbiBub3QgdmFsaWQgKCVzKSBmb3IgZG9tYWluICVz XG4iLA0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYyBiL3hlbi9h cmNoL2FybS9kb21haW5fYnVpbGQuYw0KPj4gaW5kZXggMzZkMjhiNTJhNC4uMGM5Mjc0YTJiMyAx MDA2NDQNCj4+IC0tLSBhL3hlbi9hcmNoL2FybS9kb21haW5fYnVpbGQuYw0KPj4gKysrIGIveGVu L2FyY2gvYXJtL2RvbWFpbl9idWlsZC5jDQo+PiBAQCAtNjE2LDcgKzYxNiw4IEBAIHN0YXRpYyBp bnQgX19pbml0IHdyaXRlX3Byb3BlcnRpZXMoc3RydWN0IGRvbWFpbiAqZCwgc3RydWN0IGtlcm5l bF9pbmZvICpraW5mbywNCj4+ICAgICAgICAgICAgICAgICAgICBkdF9wcm9wZXJ0eV9uYW1lX2lz X2VxdWFsKHByb3AsICJsaW51eCx1ZWZpLW1tYXAtc3RhcnQiKSB8fA0KPj4gICAgICAgICAgICAg ICAgICAgIGR0X3Byb3BlcnR5X25hbWVfaXNfZXF1YWwocHJvcCwgImxpbnV4LHVlZmktbW1hcC1z aXplIikgfHwNCj4+ICAgICAgICAgICAgICAgICAgICBkdF9wcm9wZXJ0eV9uYW1lX2lzX2VxdWFs KHByb3AsICJsaW51eCx1ZWZpLW1tYXAtZGVzYy1zaXplIikgfHwNCj4+IC0gICAgICAgICAgICAg ICAgIGR0X3Byb3BlcnR5X25hbWVfaXNfZXF1YWwocHJvcCwgImxpbnV4LHVlZmktbW1hcC1kZXNj LXZlciIpKQ0KPj4gKyAgICAgICAgICAgICAgICAgZHRfcHJvcGVydHlfbmFtZV9pc19lcXVhbChw cm9wLCAibGludXgsdWVmaS1tbWFwLWRlc2MtdmVyIikgfHwNCj4+ICsgICAgICAgICAgICAgICAg IGR0X3Byb3BlcnR5X25hbWVfaXNfZXF1YWwocHJvcCwgInhlbixzY21pLXNlY29uZGFyeS1hZ2Vu dHMiKSApDQo+PiAgICAgICAgICAgICAgICAgICBjb250aW51ZTsNCj4+DQo+PiAgICAgICAgICAg ICAgIGlmICggZHRfcHJvcGVydHlfbmFtZV9pc19lcXVhbChwcm9wLCAieGVuLGRvbTAtYm9vdGFy Z3MiKSApIGRpZmYgLS1naXQgYS94ZW4vYXJjaC9hcm0vZmlybXdhcmUvS2NvbmZpZw0KPj4gYi94 ZW4vYXJjaC9hcm0vZmlybXdhcmUvS2NvbmZpZyBpbmRleCA1YzVmMDg4MGM0Li42YjA1MWM4YWRh IDEwMDY0NA0KPj4gLS0tIGEveGVuL2FyY2gvYXJtL2Zpcm13YXJlL0tjb25maWcgKysrDQo+PiBi L3hlbi9hcmNoL2FybS9maXJtd2FyZS9LY29uZmlnIEBAIC0yOSw2ICsyOSwxNyBAQCBjb25maWcg U0NNSV9TTUMNCj4+IGRyaXZlciBkb21haW4uIFVzZSB3aXRoIEVMMyBmaXJtd2FyZSB3aGljaCBz dXBwb3J0cyBvbmx5IHNpbmdsZSBTQ01JDQo+PiBPU1BNIGFnZW50LiArY29uZmlnIFNDTUlfU01D X01BICsgYm9vbCAiRW5hYmxlIEFSTSBTQ01JIFNNQyBtdWx0aS1hZ2VudCBkcml2ZXIiDQo+PiAr ICAgIHNlbGVjdCBBUk1fU0NJDQo+PiArICAgIGhlbHANCj4+ICsgICAgICBFbmFibGVzIFNDTUkg U01DL0hWQyBtdWx0aS1hZ2VudCBpbiBYRU4gdG8gcGFzcyBTQ01JIHJlcXVlc3RzIGZyb20gRG9t YWlucw0KPj4gKyAgICAgIHRvIEVMMyBmaXJtd2FyZSAoVEYtQSkgd2hpY2ggc3VwcG9ydHMgbXVs dGktYWdlbnQgZmVhdHVyZS4NCj4+ICsgICAgICBUaGlzIGZlYXR1cmUgYWxsb3dzIHRvIGVuYWJs ZSBTQ01JIHBlciBEb21haW4gdXNpbmcgdW5pcXVlIFNDTUkgYWdlbnRfaWQsDQo+PiArICAgICAg c28gRG9tYWluIGlzIGlkZW50aWZpZWQgYnkgRUwzIGZpcm13YXJlIGFzIGFuIFNDTUkgQWdlbnQg YW5kIGNhbiBhY2Nlc3MNCj4+ICsgICAgICBhbGxvd2VkIHBsYXRmb3JtIHJlc291cmNlcyB0aHJv dWdoIGRlZGljYXRlZCBTTUMvSFZDIFNoYXJlZCBtZW1vcnkgYmFzZWQNCj4+ICsgICAgICB0cmFu c3BvcnQuDQo+PiArDQo+PiAgIGVuZGNob2ljZQ0KPj4NCj4+ICAgZW5kbWVudQ0KPj4gZGlmZiAt LWdpdCBhL3hlbi9hcmNoL2FybS9maXJtd2FyZS9NYWtlZmlsZSBiL3hlbi9hcmNoL2FybS9maXJt d2FyZS9NYWtlZmlsZQ0KPj4gaW5kZXggNzFiZGVmYzI0YS4uMzc5MjdlNjkwZSAxMDA2NDQNCj4+ IC0tLSBhL3hlbi9hcmNoL2FybS9maXJtd2FyZS9NYWtlZmlsZQ0KPj4gKysrIGIveGVuL2FyY2gv YXJtL2Zpcm13YXJlL01ha2VmaWxlDQo+PiBAQCAtMSwyICsxLDMgQEANCj4+ICAgb2JqLSQoQ09O RklHX0FSTV9TQ0kpICs9IHNjaS5vDQo+PiAgIG9iai0kKENPTkZJR19TQ01JX1NNQykgKz0gc2Nt aS1zbWMubw0KPj4gK29iai0kKENPTkZJR19TQ01JX1NNQ19NQSkgKz0gc2NtaS1zaG1lbS5vIHNj bWktc21jLW11bHRpYWdlbnQubw0KPj4gZGlmZiAtLWdpdCBhL3hlbi9hcmNoL2FybS9maXJtd2Fy ZS9zY21pLXByb3RvLmggYi94ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS1wcm90by5oDQo+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMC4uM2Y0YjljNWQ2Yg0KPj4g LS0tIC9kZXYvbnVsbA0KPj4gKysrIGIveGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktcHJvdG8u aA0KPj4gQEAgLTAsMCArMSwxNjQgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjog R1BMLTIuMC1vbmx5ICovDQo+PiArLyoNCj4+ICsgKiBBcm0gU3lzdGVtIENvbnRyb2wgYW5kIE1h bmFnZW1lbnQgSW50ZXJmYWNlIGRlZmluaXRpb25zDQo+PiArICogVmVyc2lvbiAzLjAgKERFTjAw NTZDKQ0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChjKSAyMDI0IEVQQU0gU3lzdGVtcw0KPj4g KyAqLw0KPj4gKw0KPj4gKyNpZm5kZWYgWEVOX0FSQ0hfQVJNX1NDSV9TQ01JX1BST1RPX0hfDQo+ PiArI2RlZmluZSBYRU5fQVJDSF9BUk1fU0NJX1NDTUlfUFJPVE9fSF8NCj4gTklUOiBBUk1fRklS TVdBUkVfU0NNSV9QUk9UT19IDQorDQo+PiArI2luY2x1ZGUgPHhlbi9zdGRpbnQuaD4NCj4+ICsN Cj4+ICsjZGVmaW5lIFNDTUlfU0hPUlRfTkFNRV9NQVhfU0laRSAxNg0KPj4gKw0KPj4gKy8qIFND TUkgc3RhdHVzIGNvZGVzLiBTZWUgc2VjdGlvbiA0LjEuNCAqLw0KPj4gKyNkZWZpbmUgU0NNSV9T VUNDRVNTICAgICAgICAgICAgICAwDQo+PiArI2RlZmluZSBTQ01JX05PVF9TVVBQT1JURUQgICAg ICAoLTEpDQo+PiArI2RlZmluZSBTQ01JX0lOVkFMSURfUEFSQU1FVEVSUyAoLTIpDQo+PiArI2Rl ZmluZSBTQ01JX0RFTklFRCAgICAgICAgICAgICAoLTMpDQo+PiArI2RlZmluZSBTQ01JX05PVF9G T1VORCAgICAgICAgICAoLTQpDQo+PiArI2RlZmluZSBTQ01JX09VVF9PRl9SQU5HRSAgICAgICAo LTUpDQo+PiArI2RlZmluZSBTQ01JX0JVU1kgICAgICAgICAgICAgICAoLTYpDQo+PiArI2RlZmlu ZSBTQ01JX0NPTU1TX0VSUk9SICAgICAgICAoLTcpDQo+PiArI2RlZmluZSBTQ01JX0dFTkVSSUNf RVJST1IgICAgICAoLTgpDQo+PiArI2RlZmluZSBTQ01JX0hBUkRXQVJFX0VSUk9SICAgICAoLTkp DQo+PiArI2RlZmluZSBTQ01JX1BST1RPQ09MX0VSUk9SICAgICAoLTEwKQ0KPj4gKw0KPj4gKy8q IFByb3RvY29sIElEcyAqLw0KPj4gKyNkZWZpbmUgU0NNSV9CQVNFX1BST1RPQ09MIDB4MTANCj4+ ICsNCj4+ICsvKiBCYXNlIHByb3RvY29sIG1lc3NhZ2UgSURzICovDQo+PiArI2RlZmluZSBTQ01J X0JBU0VfUFJPVE9DT0xfVkVSU0lPTiAgICAgICAgICAgIDB4MA0KPj4gKyNkZWZpbmUgU0NNSV9C QVNFX1BST1RPQ09MX0FUVElCVVRFUyAgICAgICAgICAweDENCj4+ICsjZGVmaW5lIFNDTUlfQkFT RV9QUk9UT0NPTF9NRVNTQUdFX0FUVFJJQlVURVMgMHgyDQo+PiArI2RlZmluZSBTQ01JX0JBU0Vf RElTQ09WRVJfQUdFTlQgICAgICAgICAgICAgIDB4Nw0KPj4gKyNkZWZpbmUgU0NNSV9CQVNFX1NF VF9ERVZJQ0VfUEVSTUlTU0lPTlMgICAgICAweDkNCj4+ICsjZGVmaW5lIFNDTUlfQkFTRV9SRVNF VF9BR0VOVF9DT05GSUdVUkFUSU9OICAgMHhCDQo+PiArDQo+PiArdHlwZWRlZiBzdHJ1Y3Qgc2Nt aV9tc2dfaGVhZGVyIHsNCj4+ICsgICAgdWludDhfdCBpZDsNCj4+ICsgICAgdWludDhfdCB0eXBl Ow0KPj4gKyAgICB1aW50OF90IHByb3RvY29sOw0KPj4gKyAgICB1aW50MzJfdCBzdGF0dXM7DQo+ PiArfSBzY21pX21zZ19oZWFkZXJfdDsNCj4+ICsNCj4+ICsvKiBUYWJsZSAyIE1lc3NhZ2UgaGVh ZGVyIGZvcm1hdCAqLw0KPj4gKyNkZWZpbmUgU0NNSV9IRFJfSUQgICAgR0VOTUFTSyg3LCAwKQ0K Pj4gKyNkZWZpbmUgU0NNSV9IRFJfVFlQRSAgR0VOTUFTSyg5LCA4KQ0KPj4gKyNkZWZpbmUgU0NN SV9IRFJfUFJPVE8gR0VOTUFTSygxNywgMTApDQo+PiArDQo+PiArI2RlZmluZSBTQ01JX0ZJRUxE X0dFVChfbWFzaywgX3JlZykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4+ICsgICAgKCh0eXBlb2YoX21hc2spKSgoKF9yZWcpICYgKF9tYXNrKSkgPj4gKGZm czY0KF9tYXNrKSAtIDEpKSkNCj4+ICsjZGVmaW5lIFNDTUlfRklFTERfUFJFUChfbWFzaywgX3Zh bCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPj4gKyAgICAo KCh0eXBlb2YoX21hc2spKShfdmFsKSA8PCAoZmZzNjQoX21hc2spIC0gMSkpICYgKF9tYXNrKSkN Cj4+ICsNCj4+ICtzdGF0aWMgaW5saW5lIHVpbnQzMl90IHBhY2tfc2NtaV9oZWFkZXIoc2NtaV9t c2dfaGVhZGVyX3QgKmhkcikNCj4+ICt7DQo+PiArICAgIHJldHVybiBTQ01JX0ZJRUxEX1BSRVAo U0NNSV9IRFJfSUQsIGhkci0+aWQpIHwNCj4+ICsgICAgICAgICAgIFNDTUlfRklFTERfUFJFUChT Q01JX0hEUl9UWVBFLCBoZHItPnR5cGUpIHwNCj4+ICsgICAgICAgICAgIFNDTUlfRklFTERfUFJF UChTQ01JX0hEUl9QUk9UTywgaGRyLT5wcm90b2NvbCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRp YyBpbmxpbmUgdm9pZCB1bnBhY2tfc2NtaV9oZWFkZXIodWludDMyX3QgbXNnX2hkciwgc2NtaV9t c2dfaGVhZGVyX3QgKmhkcikNCj4+ICt7DQo+PiArICAgIGhkci0+aWQgPSBTQ01JX0ZJRUxEX0dF VChTQ01JX0hEUl9JRCwgbXNnX2hkcik7DQo+PiArICAgIGhkci0+dHlwZSA9IFNDTUlfRklFTERf R0VUKFNDTUlfSERSX1RZUEUsIG1zZ19oZHIpOw0KPj4gKyAgICBoZHItPnByb3RvY29sID0gU0NN SV9GSUVMRF9HRVQoU0NNSV9IRFJfUFJPVE8sIG1zZ19oZHIpOw0KPj4gK30NCj4+ICsNCj4+ICtz dGF0aWMgaW5saW5lIGludCBzY21pX3RvX3hlbl9lcnJubyhpbnQgc2NtaV9zdGF0dXMpDQo+PiAr ew0KPj4gKyAgICBpZiAoIHNjbWlfc3RhdHVzID09IFNDTUlfU1VDQ0VTUyApDQo+PiArICAgICAg ICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgc3dpdGNoICggc2NtaV9zdGF0dXMgKQ0KPj4gKyAg ICB7DQo+PiArICAgIGNhc2UgU0NNSV9OT1RfU1VQUE9SVEVEOg0KPj4gKyAgICAgICAgcmV0dXJu IC1FT1BOT1RTVVBQOw0KPj4gKyAgICBjYXNlIFNDTUlfSU5WQUxJRF9QQVJBTUVURVJTOg0KPj4g KyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIGNhc2UgU0NNSV9ERU5JRUQ6DQo+PiAr ICAgICAgICByZXR1cm4gLUVBQ0NFUzsNCj4+ICsgICAgY2FzZSBTQ01JX05PVF9GT1VORDoNCj4+ ICsgICAgICAgIHJldHVybiAtRU5PRU5UOw0KPj4gKyAgICBjYXNlIFNDTUlfT1VUX09GX1JBTkdF Og0KPj4gKyAgICAgICAgcmV0dXJuIC1FUkFOR0U7DQo+PiArICAgIGNhc2UgU0NNSV9CVVNZOg0K Pj4gKyAgICAgICAgcmV0dXJuIC1FQlVTWTsNCj4+ICsgICAgY2FzZSBTQ01JX0NPTU1TX0VSUk9S Og0KPj4gKyAgICAgICAgcmV0dXJuIC1FTk9UQ09OTjsNCj4+ICsgICAgY2FzZSBTQ01JX0dFTkVS SUNfRVJST1I6DQo+PiArICAgICAgICByZXR1cm4gLUVJTzsNCj4+ICsgICAgY2FzZSBTQ01JX0hB UkRXQVJFX0VSUk9SOg0KPj4gKyAgICAgICAgcmV0dXJuIC1FTlhJTzsNCj4+ICsgICAgY2FzZSBT Q01JX1BST1RPQ09MX0VSUk9SOg0KPj4gKyAgICAgICAgcmV0dXJuIC1FQkFETVNHOw0KPj4gKyAg ICBkZWZhdWx0Og0KPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIH0NCj4+ICt9 DQo+PiArDQo+PiArLyogUFJPVE9DT0xfVkVSU0lPTiAqLw0KPj4gKyNkZWZpbmUgU0NNSV9WRVJT SU9OX01JTk9SIEdFTk1BU0soMTUsIDApDQo+PiArI2RlZmluZSBTQ01JX1ZFUlNJT05fTUFKT1Ig R0VOTUFTSygzMSwgMTYpDQo+PiArDQo+PiArc3RydWN0IHNjbWlfbXNnX3Byb3RfdmVyc2lvbl9w MmEgew0KPj4gKyAgICB1aW50MzJfdCB2ZXJzaW9uOw0KPj4gK30gX19wYWNrZWQ7DQo+PiArDQo+ PiArLyogQkFTRSBQUk9UT0NPTF9BVFRSSUJVVEVTICovDQo+PiArI2RlZmluZSBTQ01JX0JBU0Vf QVRUUl9OVU1fUFJPVE8gR0VOTUFTSyg3LCAwKQ0KPj4gKyNkZWZpbmUgU0NNSV9CQVNFX0FUVFJf TlVNX0FHRU5UIEdFTk1BU0soMTUsIDgpDQo+PiArDQo+PiArc3RydWN0IHNjbWlfbXNnX2Jhc2Vf YXR0cmlidXRlc19wMmEgew0KPj4gKyAgICB1aW50MzJfdCBhdHRyaWJ1dGVzOw0KPj4gK30gX19w YWNrZWQ7DQo+PiArDQo+PiArLyoNCj4+ICsgKiBCQVNFX0RJU0NPVkVSX0FHRU5UDQo+PiArICov DQo+PiArI2RlZmluZSBTQ01JX0JBU0VfQUdFTlRfSURfT1dOIDB4RkZGRkZGRkYNCj4+ICsNCj4+ ICtzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9kaXNjb3Zlcl9hZ2VudF9hMnAgew0KPj4gKyAgICB1aW50 MzJfdCBhZ2VudF9pZDsNCj4+ICt9IF9fcGFja2VkOw0KPj4gKw0KPj4gK3N0cnVjdCBzY21pX21z Z19iYXNlX2Rpc2NvdmVyX2FnZW50X3AyYSB7DQo+PiArICAgIHVpbnQzMl90IGFnZW50X2lkOw0K Pj4gKyAgICBjaGFyIG5hbWVbU0NNSV9TSE9SVF9OQU1FX01BWF9TSVpFXTsNCj4+ICt9IF9fcGFj a2VkOw0KPj4gKw0KPj4gKy8qDQo+PiArICogQkFTRV9TRVRfREVWSUNFX1BFUk1JU1NJT05TDQo+ PiArICovDQo+PiArI2RlZmluZSBTQ01JX0JBU0VfREVWSUNFX0FDQ0VTU19BTExPVyAgICAgICAg ICAgQklUKDAsIFVMKQ0KPj4gKw0KPj4gK3N0cnVjdCBzY21pX21zZ19iYXNlX3NldF9kZXZpY2Vf cGVybWlzc2lvbnNfYTJwIHsNCj4+ICsgICAgdWludDMyX3QgYWdlbnRfaWQ7DQo+PiArICAgIHVp bnQzMl90IGRldmljZV9pZDsNCj4+ICsgICAgdWludDMyX3QgZmxhZ3M7DQo+PiArfSBfX3BhY2tl ZDsNCj4+ICsNCj4+ICsvKg0KPj4gKyAqIEJBU0VfUkVTRVRfQUdFTlRfQ09ORklHVVJBVElPTg0K Pj4gKyAqLw0KPj4gKyNkZWZpbmUgU0NNSV9CQVNFX0FHRU5UX1BFUk1JU1NJT05TX1JFU0VUICAg ICAgIEJJVCgwLCBVTCkNCj4+ICsNCj4+ICtzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9yZXNldF9hZ2Vu dF9jZmdfYTJwIHsNCj4+ICsgICAgdWludDMyX3QgYWdlbnRfaWQ7DQo+PiArICAgIHVpbnQzMl90 IGZsYWdzOw0KPj4gK30gX19wYWNrZWQ7DQo+PiArDQo+PiArI2VuZGlmIC8qIFhFTl9BUkNIX0FS TV9TQ0lfU0NNSV9QUk9UT19IXyAqLw0KPj4gKw0KPj4gKy8qDQo+PiArICogTG9jYWwgdmFyaWFi bGVzOg0KPj4gKyAqIG1vZGU6IEMNCj4+ICsgKiBjLWZpbGUtc3R5bGU6ICJCU0QiDQo+PiArICog Yy1iYXNpYy1vZmZzZXQ6IDQNCj4+ICsgKiB0YWItd2lkdGg6IDQNCj4+ICsgKiBpbmRlbnQtdGFi cy1tb2RlOiBuaWwNCj4+ICsgKiBFbmQ6DQo+PiArICovDQo+PiBkaWZmIC0tZ2l0IGEveGVuL2Fy Y2gvYXJtL2Zpcm13YXJlL3NjbWktc2htZW0uYyBiL3hlbi9hcmNoL2FybS9maXJtd2FyZS9zY21p LXNobWVtLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwLi5k ZDYxM2VlMGI1DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi94ZW4vYXJjaC9hcm0vZmlybXdh cmUvc2NtaS1zaG1lbS5jDQo+PiBAQCAtMCwwICsxLDE3MyBAQA0KPj4gKy8qIFNQRFgtTGljZW5z ZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkgKi8NCj4+ICsvKg0KPj4gKyAqIFNDSSBTQ01JIG11 bHRpLWFnZW50IGRyaXZlciwgdXNpbmcgU01DL0hWQyBzaG1lbSBhcyB0cmFuc3BvcnQuDQo+PiAr ICoNCj4+ICsgKiBPbGVrc2lpIE1vaXNpZWlldjxvbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbT4N Cj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjUgRVBBTSBTeXN0ZW1zDQo+PiArICovDQo+PiArLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seSAqLw0KPj4gKw0KPj4gKyNpbmNs dWRlIDxhc20vaW8uaD4NCj4+ICsjaW5jbHVkZSA8eGVuL2Vyci5oPg0KPj4gKw0KPj4gKyNpbmNs dWRlICJzY21pLXByb3RvLmgiDQo+PiArI2luY2x1ZGUgInNjbWktc2htZW0uaCINCj4gVGhpcyBj b2RlIGlzIHdyaXR0ZW4gbW9yZSBnZW5lcmljYWxseSB0aGFuIHRoZSBkZXNjcmlwdGlvbiBpbXBs aWVzLiBJZg0KPiB3ZSBvbmx5IHdhbnQgdG8gbWFrZSBTTUMgY2FsbHMgdG8gVEYtQSBvbiBFTDMg YW5kIGV4Y2hhbmdlIGRhdGEgd2l0aCBpdA0KPiBvdmVyIHNoYXJlZCBtZW1vcnksIHRoZW4gSSB0 aGluazoNCj4gLSB3ZSBkb24ndCBuZWVkIHRoZSBfX2lvbWVtIHRhZywgYXMgdGhlcmUgaXMgbm8g TU1JTw0KPiAtIHdlIG9ubHkgbmVlZCBhIERNQiwgbm90IGEgRFNCIChyZWFkbCBhbmQgd3JpdGVs IGltcGx5IERTQiwgdXNlIG9ubHkNCj4gICAgcmVhZGxfcmVsYXhlZCBhbmQgd3JpdGVsX3JlbGF4 ZWQpDQo+DQo+IE9uIHRoZSBvdGhlciBoYW5kLCBpZiB3ZSBhbHNvIHdhbnQgdG8gaGFuZGxlIHRo ZSBjYXNlIHdoZXJlIHRoZSBTQ01JDQo+IHNlcnZlciBjb3VsZCBiZSBvbiBhIHNlcGFyYXRlIGNv LXByb2Nlc3NvciwgdGhlbiB3aGF0IHRoaXMgY29kZSBpcyBkb2luZw0KPiBpcyBub3Qgc3VmZmlj aWVudCBiZWNhdXNlIHdlIGFsc28gbmVlZCBhIGRjYWNoZSBmbHVzaCwgaW4gYWRkaXRpb24gdG8N Cj4gdGhlIERTQi4NCj4NCj4gQmVydHJhbmQsIGNhbiB5b3UgZG91YmxlLWNoZWNrPw0KPg0KPg0K Pj4gKy8qDQo+PiArICogQ29weSBkYXRhIGZyb20gSU8gbWVtb3J5IHNwYWNlIHRvICJyZWFsIiBt ZW1vcnkgc3BhY2UuDQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgX19tZW1jcHlfZnJvbWlvKHZv aWQgKnRvLCBjb25zdCB2b2xhdGlsZSB2b2lkIF9faW9tZW0gKmZyb20sDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb3VudCkNCj4+ICt7DQo+PiArICAgIHdoaWxlICgg Y291bnQgJiYgIUlTX0FMSUdORUQoKHVuc2lnbmVkIGxvbmcpZnJvbSwgNCkgKQ0KPj4gKyAgICB7 DQo+PiArICAgICAgICAqKHU4ICopdG8gPSByZWFkYl9yZWxheGVkKGZyb20pOw0KPj4gKyAgICAg ICAgZnJvbSsrOw0KPj4gKyAgICAgICAgdG8rKzsNCj4+ICsgICAgICAgIGNvdW50LS07DQo+PiAr ICAgIH0NCj4+ICsNCj4+ICsgICAgd2hpbGUgKCBjb3VudCA+PSA0ICkNCj4+ICsgICAgew0KPj4g KyAgICAgICAgKih1MzIgKil0byA9IHJlYWRsX3JlbGF4ZWQoZnJvbSk7DQo+PiArICAgICAgICBm cm9tICs9IDQ7DQo+PiArICAgICAgICB0byArPSA0Ow0KPj4gKyAgICAgICAgY291bnQgLT0gNDsN Cj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICB3aGlsZSAoIGNvdW50ICkNCj4+ICsgICAgew0KPj4g KyAgICAgICAgKih1OCAqKXRvID0gcmVhZGJfcmVsYXhlZChmcm9tKTsNCj4+ICsgICAgICAgIGZy b20rKzsNCj4+ICsgICAgICAgIHRvKys7DQo+PiArICAgICAgICBjb3VudC0tOw0KPj4gKyAgICB9 DQo+PiArfQ0KPj4gKw0KPj4gKy8qDQo+PiArICogQ29weSBkYXRhIGZyb20gInJlYWwiIG1lbW9y eSBzcGFjZSB0byBJTyBtZW1vcnkgc3BhY2UuDQo+PiArICovDQo+PiArc3RhdGljIHZvaWQgX19t ZW1jcHlfdG9pbyh2b2xhdGlsZSB2b2lkIF9faW9tZW0gKnRvLCBjb25zdCB2b2lkICpmcm9tLA0K Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvdW50KQ0KPj4gK3sNCj4+ICsg ICAgd2hpbGUgKCBjb3VudCAmJiAhSVNfQUxJR05FRCgodW5zaWduZWQgbG9uZyl0bywgNCkgKQ0K Pj4gKyAgICB7DQo+PiArICAgICAgICB3cml0ZWJfcmVsYXhlZCgqKHU4ICopZnJvbSwgdG8pOw0K Pj4gKyAgICAgICAgZnJvbSsrOw0KPj4gKyAgICAgICAgdG8rKzsNCj4+ICsgICAgICAgIGNvdW50 LS07DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgd2hpbGUgKCBjb3VudCA+PSA0ICkNCj4+ICsg ICAgew0KPj4gKyAgICAgICAgd3JpdGVsX3JlbGF4ZWQoKih1MzIgKilmcm9tLCB0byk7DQo+PiAr ICAgICAgICBmcm9tICs9IDQ7DQo+PiArICAgICAgICB0byArPSA0Ow0KPj4gKyAgICAgICAgY291 bnQgLT0gNDsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICB3aGlsZSAoIGNvdW50ICkNCj4+ICsg ICAgew0KPj4gKyAgICAgICAgd3JpdGViX3JlbGF4ZWQoKih1OCAqKWZyb20sIHRvKTsNCj4+ICsg ICAgICAgIGZyb20rKzsNCj4+ICsgICAgICAgIHRvKys7DQo+PiArICAgICAgICBjb3VudC0tOw0K Pj4gKyAgICB9DQo+PiArfQ0KPiBJIGRvbid0IHVuZGVyc3RhbmQgd2h5IHdlIG5lZWQgX19tZW1j cHlfZnJvbWlvIGFuZCBfX21lbWNweV90b2lvOiBjYW4ndA0KPiB3ZSB1c2UgYSBzaW1wbGUgbWVt Y3B5Pw0KDQpUaGlzIGFwcHJvYWNoIHdhcyB1c2VkIGJlY2F1c2Ugd2UncmUgdHJ5aW5nIHRvIGFj Y2VzcyBzaGFyZWQgbWVtb3J5DQpiZXR3ZWVuIHR3byBpbmRlcGVuZGVudCBzeXN0ZW1zOg0KDQpB cm0tVEYgYW5kIFhlbiBpbiBvdXIgY2FzZSB3aGljaCBwbGFjZXMgc29tZSBjaHVua3Mgb2YgZGF0 YSB0byB0aGUgc2FtZQ0KbWVtb3J5LiBBbmQsIGFjY29yZGluZyB0byB0aGUgWzBdDQoNCmBgYA0K DQpTb21lIGRldmljZXMgKHN1Y2ggYXMgZnJhbWVidWZmZXJzKSB3b3VsZCBsaWtlIHRvIHVzZSBs YXJnZXIgdHJhbnNmZXJzIHRoYW4NCjggYnl0ZXMgYXQgYSB0aW1lLiBGb3IgdGhlc2UgZGV2aWNl cywgdGhlIG1lbWNweV90b2lvKCksDQptZW1jcHlfZnJvbWlvKCkgYW5kIG1lbXNldF9pbygpIGZ1 bmN0aW9ucyBhcmUNCnByb3ZpZGVkLiBEbyBub3QgdXNlIG1lbXNldCBvciBtZW1jcHkgb24gSU8g YWRkcmVzc2VzOyB0aGV5IGFyZSBub3QNCmd1YXJhbnRlZWQgdG8gY29weSBkYXRhIGluIG9yZGVy Lg0KDQpgYGANCg0KQWxzbywgdGhlIHNhbWUgYXBwcm9hY2ggd2FzIHVzZWQgYnkgQXJtIHRlYW0g d2hlbiBpbnRyb2R1Y2luZyBzY21pDQpkcml2ZXIgdG8gdGhlIExpbnV4IGtlcm5lbCBbMV0NCg0K DQpbMF06IGh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvZG9jL0RvY3VtZW50YXRpb24vZHJpdmVyLWFw aS9kZXZpY2UtaW8ucnN0DQoNClsxXTpodHRwczovL2dpdC5pbGlhbmEuZnlpL2xpbnV4L3BhdGNo Lz9pZD1kNTE0MWYzN2M0MmUwYjgzMzg2M2YxNTdhYzRjZWUyMDNiMmJhM2QyDQoNCj4+ICtzdGF0 aWMgaW5saW5lIGludA0KPj4gK3NobWVtX2NoYW5uZWxfaXNfZnJlZShjb25zdCB2b2xhdGlsZSBz dHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtIF9faW9tZW0gKnNobWVtKQ0KPj4gK3sNCj4+ICsgICAgcmV0 dXJuIChyZWFkbCgmc2htZW0tPmNoYW5uZWxfc3RhdHVzKSAmDQo+PiArICAgICAgICAgICAgU0NN SV9TSE1FTV9DSEFOX1NUQVRfQ0hBTk5FTF9GUkVFKSA/IDAgOiAtRUJVU1k7DQo+PiArfQ0KPj4g Kw0KPj4gK2ludCBzaG1lbV9wdXRfbWVzc2FnZSh2b2xhdGlsZSBzdHJ1Y3Qgc2NtaV9zaGFyZWRf bWVtIF9faW9tZW0gKnNobWVtLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICBzY21pX21zZ19o ZWFkZXJfdCAqaGRyLCB2b2lkICpkYXRhLCBpbnQgbGVuKQ0KPj4gK3sNCj4+ICsgICAgaW50IHJl dDsNCj4+ICsNCj4+ICsgICAgaWYgKCAobGVuICsgc2l6ZW9mKHNobWVtLT5tc2dfaGVhZGVyKSkg PiBTQ01JX1NITUVNX01BUFBFRF9TSVpFICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgcHJpbnRr KFhFTkxPR19FUlIgInNjbWk6IFdyb25nIHNpemUgb2Ygc21jIG1lc3NhZ2UuIERhdGEgaXMgaW52 YWxpZFxuIik7DQo+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgfQ0KPj4gKw0K Pj4gKyAgICByZXQgPSBzaG1lbV9jaGFubmVsX2lzX2ZyZWUoc2htZW0pOw0KPj4gKyAgICBpZiAo IHJldCApDQo+PiArICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKw0KPj4gKyAgICB3cml0ZWxfcmVs YXhlZCgweDAsICZzaG1lbS0+Y2hhbm5lbF9zdGF0dXMpOw0KPj4gKyAgICAvKiBXcml0aW5nIDB4 MCByaWdodCBub3csIGJ1dCAic2htZW0iX0ZMQUdfSU5UUl9FTkFCTEVEIGNhbiBiZSBzZXQgKi8N Cj4+ICsgICAgd3JpdGVsX3JlbGF4ZWQoMHgwLCAmc2htZW0tPmZsYWdzKTsNCj4+ICsgICAgd3Jp dGVsX3JlbGF4ZWQoc2l6ZW9mKHNobWVtLT5tc2dfaGVhZGVyKSArIGxlbiwgJnNobWVtLT5sZW5n dGgpOw0KPj4gKyAgICB3cml0ZWwocGFja19zY21pX2hlYWRlcihoZHIpLCAmc2htZW0tPm1zZ19o ZWFkZXIpOw0KPj4gKw0KPj4gKyAgICBpZiAoIGxlbiA+IDAgJiYgZGF0YSApDQo+PiArICAgICAg ICBfX21lbWNweV90b2lvKHNobWVtLT5tc2dfcGF5bG9hZCwgZGF0YSwgbGVuKTsNCj4+ICsNCj4+ ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBzaG1lbV9nZXRfcmVzcG9uc2Uo Y29uc3Qgdm9sYXRpbGUgc3RydWN0IHNjbWlfc2hhcmVkX21lbSBfX2lvbWVtICpzaG1lbSwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgIHNjbWlfbXNnX2hlYWRlcl90ICpoZHIsIHZvaWQgKmRh dGEsIGludCBsZW4pDQo+PiArew0KPj4gKyAgICBpbnQgcmVjdl9sZW47DQo+PiArICAgIGludCBy ZXQ7DQo+PiArICAgIGludCBwYWQgPSBzaXplb2YoaGRyLT5zdGF0dXMpOw0KPj4gKw0KPj4gKyAg ICBpZiAoIGxlbiA+PSBTQ01JX1NITUVNX01BUFBFRF9TSVpFIC0gc2l6ZW9mKHNobWVtKSApDQo+ PiArICAgIHsNCj4+ICsgICAgICAgIHByaW50ayhYRU5MT0dfRVJSDQo+PiArICAgICAgICAgICAg ICAgInNjbWk6IFdyb25nIHNpemUgb2YgaW5wdXQgc21jIG1lc3NhZ2UuIERhdGEgbWF5IGJlIGlu dmFsaWRcbiIpOw0KPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIH0NCj4+ICsN Cj4+ICsgICAgcmV0ID0gc2htZW1fY2hhbm5lbF9pc19mcmVlKHNobWVtKTsNCj4+ICsgICAgaWYg KCByZXQgKQ0KPj4gKyAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsgICAgcmVjdl9sZW4g PSByZWFkbCgmc2htZW0tPmxlbmd0aCkgLSBzaXplb2Yoc2htZW0tPm1zZ19oZWFkZXIpOw0KPj4g Kw0KPj4gKyAgICBpZiAoIHJlY3ZfbGVuIDwgMCApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHBy aW50ayhYRU5MT0dfRVJSDQo+PiArICAgICAgICAgICAgICAgInNjbWk6IFdyb25nIHNpemUgb2Yg c21jIG1lc3NhZ2UuIERhdGEgbWF5IGJlIGludmFsaWRcbiIpOw0KPj4gKyAgICAgICAgcmV0dXJu IC1FSU5WQUw7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgdW5wYWNrX3NjbWlfaGVhZGVyKHJl YWRsKCZzaG1lbS0+bXNnX2hlYWRlciksIGhkcik7DQo+PiArDQo+PiArICAgIGhkci0+c3RhdHVz ID0gcmVhZGwoJnNobWVtLT5tc2dfcGF5bG9hZCk7DQo+PiArICAgIHJlY3ZfbGVuID0gcmVjdl9s ZW4gPiBwYWQgPyByZWN2X2xlbiAtIHBhZCA6IDA7DQo+PiArDQo+PiArICAgIHJldCA9IHNjbWlf dG9feGVuX2Vycm5vKGhkci0+c3RhdHVzKTsNCj4+ICsgICAgaWYgKCByZXQgKQ0KPj4gKyAgICB7 DQo+PiArICAgICAgICBwcmludGsoWEVOTE9HX0RFQlVHICJzY21pOiBFcnJvciByZWNlaXZlZDog JWRcbiIsIHJldCk7DQo+PiArICAgICAgICByZXR1cm4gcmV0Ow0KPj4gKyAgICB9DQo+PiArDQo+ PiArICAgIGlmICggcmVjdl9sZW4gPiBsZW4gKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBwcmlu dGsoWEVOTE9HX0VSUg0KPj4gKyAgICAgICAgICAgICAgICJzY21pOiBOb3QgZW5vdWdoIGJ1ZmZl ciBmb3IgbWVzc2FnZSAlZCwgZXhwZWN0aW5nICVkXG4iLA0KPj4gKyAgICAgICAgICAgICAgIHJl Y3ZfbGVuLCBsZW4pOw0KPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIH0NCj4+ ICsNCj4+ICsgICAgaWYgKCByZWN2X2xlbiA+IDAgKQ0KPj4gKyAgICAgICAgX19tZW1jcHlfZnJv bWlvKGRhdGEsIHNobWVtLT5tc2dfcGF5bG9hZCArIHBhZCwgcmVjdl9sZW4pOw0KPj4gKw0KPj4g KyAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiArDQo+PiArLyoNCj4+ICsgKiBMb2NhbCB2YXJpYWJs ZXM6DQo+PiArICogbW9kZTogQw0KPj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCINCj4+ICsgKiBj LWJhc2ljLW9mZnNldDogNA0KPj4gKyAqIHRhYi13aWR0aDogNA0KPj4gKyAqIGluZGVudC10YWJz LW1vZGU6IG5pbA0KPj4gKyAqIEVuZDoNCj4+ICsgKi8NCj4+IGRpZmYgLS1naXQgYS94ZW4vYXJj aC9hcm0vZmlybXdhcmUvc2NtaS1zaG1lbS5oIGIveGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWkt c2htZW0uaA0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAuLjJm OGUyM2ZmNzYNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL3hlbi9hcmNoL2FybS9maXJtd2Fy ZS9zY21pLXNobWVtLmgNCj4+IEBAIC0wLDAgKzEsNDUgQEANCj4+ICsvKiBTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQo+PiArLyoNCj4+ICsgKiBBcm0gU3lzdGVtIENv bnRyb2wgYW5kIE1hbmFnZW1lbnQgSW50ZXJmYWNlIGRlZmluaXRpb25zDQo+PiArICogVmVyc2lv biAzLjAgKERFTjAwNTZDKQ0KPj4gKyAqIFNoYXJlZCBNZW1vcnkgYmFzZWQgVHJhbnNwb3J0DQo+ PiArICoNCj4+ICsgKiBDb3B5cmlnaHQgKGMpIDIwMjQgRVBBTSBTeXN0ZW1zDQo+PiArICovDQo+ PiArDQo+PiArI2lmbmRlZiBYRU5fQVJDSF9BUk1fU0NJX1NDTUlfU0hNRU1fSF8NCj4+ICsjZGVm aW5lIFhFTl9BUkNIX0FSTV9TQ0lfU0NNSV9TSE1FTV9IXw0KPiBOSVQ6IEFSTV9GSVJNV0FSRV9T Q01JX1NITUVNX0gNCj4NCisNCj4+ICsjaW5jbHVkZSA8eGVuL3N0ZGludC5oPg0KPj4gKw0KPj4g KyNkZWZpbmUgU0NNSV9TSE1FTV9DSEFOX1NUQVRfQ0hBTk5FTF9GUkVFICBCSVQoMCwgVUwpDQo+ PiArI2RlZmluZSBTQ01JX1NITUVNX0NIQU5fU1RBVF9DSEFOTkVMX0VSUk9SIEJJVCgxLCBVTCkN Cj4+ICsNCj4+ICtzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtIHsNCj4+ICsgICAgdWludDMyX3QgcmVz ZXJ2ZWQ7DQo+PiArICAgIHVpbnQzMl90IGNoYW5uZWxfc3RhdHVzOw0KPj4gKyAgICB1aW50MzJf dCByZXNlcnZlZDFbMl07DQo+PiArICAgIHVpbnQzMl90IGZsYWdzOw0KPj4gKyAgICB1aW50MzJf dCBsZW5ndGg7DQo+PiArICAgIHVpbnQzMl90IG1zZ19oZWFkZXI7DQo+PiArICAgIHVpbnQ4X3Qg bXNnX3BheWxvYWRbXTsNCj4+ICt9Ow0KPj4gKw0KPj4gKyNkZWZpbmUgU0NNSV9TSE1FTV9NQVBQ RURfU0laRSBQQUdFX1NJWkUNCj4+ICsNCj4+ICtpbnQgc2htZW1fcHV0X21lc3NhZ2Uodm9sYXRp bGUgc3RydWN0IHNjbWlfc2hhcmVkX21lbSBfX2lvbWVtICpzaG1lbSwNCj4+ICsgICAgICAgICAg ICAgICAgICAgICAgc2NtaV9tc2dfaGVhZGVyX3QgKmhkciwgdm9pZCAqZGF0YSwgaW50IGxlbik7 DQo+PiArDQo+PiAraW50IHNobWVtX2dldF9yZXNwb25zZShjb25zdCB2b2xhdGlsZSBzdHJ1Y3Qg c2NtaV9zaGFyZWRfbWVtIF9faW9tZW0gKnNobWVtLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgc2NtaV9tc2dfaGVhZGVyX3QgKmhkciwgdm9pZCAqZGF0YSwgaW50IGxlbik7DQo+PiArI2Vu ZGlmIC8qIFhFTl9BUkNIX0FSTV9TQ0lfU0NNSV9TSE1FTV9IXyAqLw0KPj4gKw0KPj4gKy8qDQo+ PiArICogTG9jYWwgdmFyaWFibGVzOg0KPj4gKyAqIG1vZGU6IEMNCj4+ICsgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiDQo+PiArICogYy1iYXNpYy1vZmZzZXQ6IDQNCj4+ICsgKiB0YWItd2lkdGg6IDQN Cj4+ICsgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwNCj4+ICsgKiBFbmQ6DQo+PiArICovDQo+PiBk aWZmIC0tZ2l0IGEveGVuL2FyY2gvYXJtL2Zpcm13YXJlL3NjbWktc21jLW11bHRpYWdlbnQuYyBi L3hlbi9hcmNoL2FybS9maXJtd2FyZS9zY21pLXNtYy1tdWx0aWFnZW50LmMNCj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwLi5lMDIzYmNhM2ExDQo+PiAtLS0gL2Rl di9udWxsDQo+PiArKysgYi94ZW4vYXJjaC9hcm0vZmlybXdhcmUvc2NtaS1zbWMtbXVsdGlhZ2Vu dC5jDQo+PiBAQCAtMCwwICsxLDg2MCBAQA0KPj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBHUEwtMi4wLW9ubHkgKi8NCj4+ICsvKg0KPj4gKyAqIFNDSSBTQ01JIG11bHRpLWFnZW50IGRy aXZlciwgdXNpbmcgU01DL0hWQyBzaG1lbSBhcyB0cmFuc3BvcnQuDQo+PiArICoNCj4+ICsgKiBP bGVrc2lpIE1vaXNpZWlldjxvbGVrc2lpX21vaXNpZWlldkBlcGFtLmNvbT4NCj4+ICsgKiBDb3B5 cmlnaHQgKGMpIDIwMjUgRVBBTSBTeXN0ZW1zDQo+PiArICovDQo+PiArDQo+PiArI2luY2x1ZGUg PHhlbi9hY3BpLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPHhlbi9kZXZpY2VfdHJlZS5oPg0KPj4g KyNpbmNsdWRlIDx4ZW4vaW5pdC5oPg0KPj4gKyNpbmNsdWRlIDx4ZW4vaW9jYXAuaD4NCj4+ICsj aW5jbHVkZSA8eGVuL2Vyci5oPg0KPj4gKyNpbmNsdWRlIDx4ZW4vbGliZmR0L2xpYmZkdC5oPg0K Pj4gKyNpbmNsdWRlIDx4ZW4vcGFyYW0uaD4NCj4+ICsjaW5jbHVkZSA8eGVuL3NjaGVkLmg+DQo+ PiArI2luY2x1ZGUgPHhlbi92bWFwLmg+DQo+PiArDQo+PiArI2luY2x1ZGUgPGFzbS9maXJtd2Fy ZS9zY2kuaD4NCj4+ICsjaW5jbHVkZSA8YXNtL3NtY2NjLmg+DQo+PiArDQo+PiArI2luY2x1ZGUg InNjbWktcHJvdG8uaCINCj4+ICsjaW5jbHVkZSAic2NtaS1zaG1lbS5oIg0KPj4gKw0KPj4gKyNk ZWZpbmUgU0NNSV9BR0VOVF9JRF9JTlZBTElEIDB4RkYNCj4+ICsNCj4+ICtzdGF0aWMgdWludDhf dCBfX2luaXRkYXRhIG9wdF9kb20wX3NjbWlfYWdlbnRfaWQgPSBTQ01JX0FHRU5UX0lEX0lOVkFM SUQ7DQo+PiAraW50ZWdlcl9wYXJhbSgiZG9tMF9zY21pX2FnZW50X2lkIiwgb3B0X2RvbTBfc2Nt aV9hZ2VudF9pZCk7DQo+PiArDQo+PiArI2RlZmluZSBTQ01JX1NFQ09OREFSWV9BR0VOVFMgInhl bixzY21pLXNlY29uZGFyeS1hZ2VudHMiDQo+PiArDQo+PiArI2RlZmluZSBIWVBfQ0hBTk5FTCAw eDANCj4+ICsNCj4+ICtzdHJ1Y3Qgc2NtaV9jaGFubmVsIHsNCj4+ICsgICAgdWludDMyX3QgYWdl bnRfaWQ7DQo+PiArICAgIHVpbnQzMl90IGZ1bmNfaWQ7DQo+PiArICAgIGRvbWlkX3QgZG9tYWlu X2lkOw0KPj4gKyAgICB1aW50NjRfdCBwYWRkcjsNCj4+ICsgICAgdWludDY0X3QgbGVuOw0KPj4g KyAgICBzdHJ1Y3Qgc2NtaV9zaGFyZWRfbWVtIF9faW9tZW0gKnNobWVtOw0KPj4gKyAgICBzcGlu bG9ja190IGxvY2s7DQo+PiArICAgIHN0cnVjdCBsaXN0X2hlYWQgbGlzdDsNCj4+ICt9Ow0KPj4g Kw0KPj4gK3N0cnVjdCBzY21pX2RhdGEgew0KPj4gKyAgICBzdHJ1Y3QgbGlzdF9oZWFkIGNoYW5u ZWxfbGlzdDsNCj4+ICsgICAgc3BpbmxvY2tfdCBjaGFubmVsX2xpc3RfbG9jazsNCj4+ICsgICAg dWludDMyX3QgZnVuY19pZDsNCj4+ICsgICAgYm9vbCBpbml0aWFsaXplZDsNCj4+ICsgICAgdWlu dDMyX3Qgc2htZW1fcGhhbmRsZTsNCj4+ICsgICAgc3RydWN0IGR0X2RldmljZV9ub2RlICpkdF9k ZXY7DQo+PiArfTsNCj4+ICsNCj4+ICtzdGF0aWMgc3RydWN0IHNjbWlfZGF0YSBzY21pX2RhdGE7 DQo+PiArDQo+PiArc3RhdGljIGludCBzZW5kX3NtY19tZXNzYWdlKHN0cnVjdCBzY21pX2NoYW5u ZWwgKmNoYW5faW5mbywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NtaV9tc2df aGVhZGVyX3QgKmhkciwgdm9pZCAqZGF0YSwgaW50IGxlbikNCj4+ICt7DQo+PiArICAgIHN0cnVj dCBhcm1fc21jY2NfcmVzIHJlc3A7DQo+PiArICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgIHJl dCA9IHNobWVtX3B1dF9tZXNzYWdlKGNoYW5faW5mby0+c2htZW0sIGhkciwgZGF0YSwgbGVuKTsN Cj4+ICsgICAgaWYgKCByZXQgKQ0KPj4gKyAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsg ICAgYXJtX3NtY2NjXzFfMV9zbWMoY2hhbl9pbmZvLT5mdW5jX2lkLCAwLCAwLCAwLCAwLCAwLCAw LCAwLCAmcmVzcCk7DQo+PiArDQo+PiArICAgIGlmICggcmVzcC5hMCApDQo+PiArICAgICAgICBy ZXR1cm4gLUVPUE5PVFNVUFA7DQo+IFdoeSBpZiByZXBvLmEwICE9IDAgdGhlbiB3ZSBhc3N1bWUg LUVPUE5PVFNVUFA/IElzIHRoaXMgcGFydCBvZiB0aGUgU0NNSQ0KPiBzcGVjaWZpY2F0aW9uPw0K DQpQbGVhc2Ugc2VlIDcuMSBvZiBbMV0uIFRoZSBmb2xsb3dpbmcgY29kZXMgYXJlIHN1cHBvcnRl ZCA6DQoNCjAgZm9yIHN1Y2Nlc3MNCg0KLTEgYXMgbm90X3N1cHBvcnRlZA0KDQotMiBhcyBub3Rf cmVxdWlyZWQNCg0KLTMgYXMgaW52YWxpZF9wYXJhbWV0ZXIuDQoNCkZvciBhbGwgbm9uLXplcm8g cmVzdWx0cyB3ZSBhc3N1bWUgdGhhdCB0aGlzIGNhbGwgaXMgbm90IHN1cHBvcnRlZCBieQ0Kc3lz dGVtIG9yIGhhcyBkaWZmZXJlbnQgcmV2aXNpb24NCg0Kd2hpY2ggd2UgYWxzbyBkb2Vzbid0IHN1 cHBvcnQuDQoNClsxXSBERU4wMDI4DQpodHRwczovL2RvY3VtZW50YXRpb24tc2VydmljZS5hcm0u Y29tL3N0YXRpYy81ZjhlZGFlZmY4NmUxNjUxNWNkYmU0YzYNCj4+ICsgICAgcmV0dXJuIDA7DQo+ PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgZG9fc21jX3hmZXIoc3RydWN0IHNjbWlfY2hhbm5l bCAqY2hhbl9pbmZvLCBzY21pX21zZ19oZWFkZXJfdCAqaGRyLA0KPj4gKyAgICAgICAgICAgICAg ICAgICAgICAgdm9pZCAqdHhfZGF0YSwgaW50IHR4X3NpemUsIHZvaWQgKnJ4X2RhdGEsIGludCBy eF9zaXplKQ0KPj4gK3sNCj4+ICsgICAgaW50IHJldCA9IDA7DQo+PiArDQo+PiArICAgIEFTU0VS VChjaGFuX2luZm8gJiYgY2hhbl9pbmZvLT5zaG1lbSk7DQo+PiArDQo+PiArICAgIGlmICggIWhk ciApDQo+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgc3Bpbl9sb2Nr KCZjaGFuX2luZm8tPmxvY2spOw0KPj4gKw0KPj4gKyAgICBwcmludGsoWEVOTE9HX0RFQlVHDQo+ PiArICAgICAgICAgICAic2NtaTogYWdlbnRfaWQgPSAlZCBtc2dfaWQgPSAleCB0eXBlID0gJWQs IHByb3RvID0gJXhcbiIsDQo+PiArICAgICAgICAgICBjaGFuX2luZm8tPmFnZW50X2lkLCBoZHIt PmlkLCBoZHItPnR5cGUsIGhkci0+cHJvdG9jb2wpOw0KPj4gKw0KPj4gKyAgICByZXQgPSBzZW5k X3NtY19tZXNzYWdlKGNoYW5faW5mbywgaGRyLCB0eF9kYXRhLCB0eF9zaXplKTsNCj4+ICsgICAg aWYgKCByZXQgKQ0KPj4gKyAgICAgICAgZ290byBjbGVhbjsNCj4+ICsNCj4+ICsgICAgcmV0ID0g c2htZW1fZ2V0X3Jlc3BvbnNlKGNoYW5faW5mby0+c2htZW0sIGhkciwgcnhfZGF0YSwgcnhfc2l6 ZSk7DQo+PiArDQo+PiArY2xlYW46DQo+PiArICAgIHByaW50ayhYRU5MT0dfREVCVUcNCj4+ICsg ICAgICAgICAgICJzY21pOiBnZXQgc21jIHJlc3BvbnNlIGFnZW50X2lkID0gJWQgbXNnX2lkID0g JXggcHJvdG8gPSAleCByZXM9JWRcbiIsDQo+PiArICAgICAgICAgICBjaGFuX2luZm8tPmFnZW50 X2lkLCBoZHItPmlkLCBoZHItPnByb3RvY29sLCByZXQpOw0KPj4gKw0KPj4gKyAgICBzcGluX3Vu bG9jaygmY2hhbl9pbmZvLT5sb2NrKTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIHJldDsNCj4+ICt9 DQo+PiArDQo+PiArc3RhdGljIHN0cnVjdCBzY21pX2NoYW5uZWwgKmdldF9jaGFubmVsX2J5X2lk KHVpbnQzMl90IGFnZW50X2lkKQ0KPj4gK3sNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAq Y3VycjsNCj4+ICsgICAgYm9vbCBmb3VuZCA9IGZhbHNlOw0KPj4gKw0KPj4gKyAgICBzcGluX2xv Y2soJnNjbWlfZGF0YS5jaGFubmVsX2xpc3RfbG9jayk7DQo+PiArICAgIGxpc3RfZm9yX2VhY2hf ZW50cnkoY3VyciwgJnNjbWlfZGF0YS5jaGFubmVsX2xpc3QsIGxpc3QpDQo+PiArICAgIHsNCj4+ ICsgICAgICAgIGlmICggY3Vyci0+YWdlbnRfaWQgPT0gYWdlbnRfaWQgKQ0KPj4gKyAgICAgICAg ew0KPj4gKyAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsNCj4+ICsgICAgICAgICAgICBicmVhazsN Cj4+ICsgICAgICAgIH0NCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBzcGluX3VubG9jaygmc2Nt aV9kYXRhLmNoYW5uZWxfbGlzdF9sb2NrKTsNCj4+ICsgICAgaWYgKCBmb3VuZCApDQo+PiArICAg ICAgICByZXR1cm4gY3VycjsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIE5VTEw7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBzdHJ1Y3Qgc2NtaV9jaGFubmVsICphY3F1aXJlX3NjbWlfY2hhbm5lbChz dHJ1Y3QgZG9tYWluICpkLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1aW50MzJfdCBhZ2VudF9pZCkNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBz Y21pX2NoYW5uZWwgKmN1cnI7DQo+PiArICAgIHN0cnVjdCBzY21pX2NoYW5uZWwgKnJldCA9IEVS Ul9QVFIoLUVOT0VOVCk7DQo+PiArDQo+PiArICAgIHNwaW5fbG9jaygmc2NtaV9kYXRhLmNoYW5u ZWxfbGlzdF9sb2NrKTsNCj4+ICsgICAgbGlzdF9mb3JfZWFjaF9lbnRyeShjdXJyLCAmc2NtaV9k YXRhLmNoYW5uZWxfbGlzdCwgbGlzdCkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgaWYgKCBjdXJy LT5hZ2VudF9pZCA9PSBhZ2VudF9pZCApDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAg aWYgKCBjdXJyLT5kb21haW5faWQgIT0gRE9NSURfSU5WQUxJRCApDQo+PiArICAgICAgICAgICAg ew0KPj4gKyAgICAgICAgICAgICAgICByZXQgPSBFUlJfUFRSKC1FRVhJU1QpOw0KPj4gKyAgICAg ICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICB9DQo+PiArDQo+PiArICAgICAgICAg ICAgY3Vyci0+ZG9tYWluX2lkID0gZC0+ZG9tYWluX2lkOw0KPj4gKyAgICAgICAgICAgIHJldCA9 IGN1cnI7DQo+PiArICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICB9DQo+PiArICAgIH0N Cj4+ICsNCj4+ICsgICAgc3Bpbl91bmxvY2soJnNjbWlfZGF0YS5jaGFubmVsX2xpc3RfbG9jayk7 DQo+PiArDQo+PiArICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lk IHJlbGlucXVpc2hfc2NtaV9jaGFubmVsKHN0cnVjdCBzY21pX2NoYW5uZWwgKmNoYW5uZWwpDQo+ PiArew0KPj4gKyAgICBBU1NFUlQoY2hhbm5lbCAhPSBOVUxMKTsNCj4+ICsNCj4+ICsgICAgc3Bp bl9sb2NrKCZzY21pX2RhdGEuY2hhbm5lbF9saXN0X2xvY2spOw0KPj4gKyAgICBjaGFubmVsLT5k b21haW5faWQgPSBET01JRF9JTlZBTElEOw0KPj4gKyAgICBzcGluX3VubG9jaygmc2NtaV9kYXRh LmNoYW5uZWxfbGlzdF9sb2NrKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBtYXBfY2hh bm5lbF9tZW1vcnkoc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbCkNCj4+ICt7DQo+PiArICAg IEFTU0VSVChjaGFubmVsICYmIGNoYW5uZWwtPnBhZGRyKTsNCj4+ICsgICAgY2hhbm5lbC0+c2ht ZW0gPSBpb3JlbWFwX25vY2FjaGUoY2hhbm5lbC0+cGFkZHIsIFNDTUlfU0hNRU1fTUFQUEVEX1NJ WkUpOw0KPiBpb3JlbWFwIGlzIGZvciBNTUlPLCBpZiB0aGVzZSBzaGFyZWQgbWVtb3J5IGNoYW5u ZWxzIGFyZSBvbiBERFIsIHRoZW4gaXQNCj4gd291bGQgbm90IGJlIHRoZSByaWdodCBjYWxsLiBB cmUgdGhlICJhcm0sc2NtaS1zaG1lbSIgYWRkcmVzcyByYW5nZXMNCj4gcGFydCBvZiB0aGUgbWVt b3J5IG5vZGUgcmFuZ2VzPyBPciBhcmUgdGhleSBjb21wbGV0ZWx5IHNlcGFyYXRlPw0KPg0KPiBB bHNvLCB3aHkgbm9jYWNoZT8gV291bGRuJ3Qgd2Ugd2FudCBpb3JlbWFwX2NhY2hlPw0KPg0KQ3Vy cmVudGx5LCB0aGV5IGFyZSBzZXBhcmF0ZSBub2RlcyBidXQgY291bGQgcG90ZW50aWFsbHkgYmUg cGFydCBvZiB0aGUNCiJtZW1vcnktcmVnaW9uIi4NCg0KIEZyb20gd2hhdCBJIHNlZSBpbiB0aGUg TGludXgga2VybmVsLCBkZXZtX2lvcmVtYXAgaXMgYmVpbmcgdXNlZCB0byBtYXANCnRoZSBtZW1v cnkuDQoNCkNvdWxkIHRoZXJlIGJlIHNvbWV0aGluZyBtb3JlIHRvIHRoaXMgYXBwcm9hY2g/DQoN ClswXTpodHRwczovL2dpdC5pbGlhbmEuZnlpL2xpbnV4L3BhdGNoLz9pZD0xZGM2NTU4MDYyZGFk ZmFiZDJmYjNiZDg4NWZhNmU5MmVjNzE5NmYyDQoNCj4+ICsgICAgaWYgKCAhY2hhbm5lbC0+c2ht ZW0gKQ0KPj4gKyAgICAgICAgcmV0dXJuIC1FTk9NRU07DQo+PiArDQo+PiArICAgIGNoYW5uZWwt PnNobWVtLT5jaGFubmVsX3N0YXR1cyA9IFNDTUlfU0hNRU1fQ0hBTl9TVEFUX0NIQU5ORUxfRlJF RTsNCj4+ICsgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAic2NtaTogR290IHNobWVtICVseCBhZnRl ciB2bWFwICVwXG4iLCBjaGFubmVsLT5wYWRkciwNCj4+ICsgICAgICAgICAgIGNoYW5uZWwtPnNo bWVtKTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2 b2lkIHVubWFwX2NoYW5uZWxfbWVtb3J5KHN0cnVjdCBzY21pX2NoYW5uZWwgKmNoYW5uZWwpDQo+ PiArew0KPj4gKyAgICBBU1NFUlQoY2hhbm5lbCAmJiBjaGFubmVsLT5zaG1lbSk7DQo+PiArICAg IGlvdW5tYXAoY2hhbm5lbC0+c2htZW0pOw0KPj4gKyAgICBjaGFubmVsLT5zaG1lbSA9IE5VTEw7 DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3Qgc2NtaV9jaGFubmVsICpzbWNfY3JlYXRl X2NoYW5uZWwodWludDMyX3QgYWdlbnRfaWQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmdW5jX2lkLCB1aW50NjRfdCBhZGRyKQ0K Pj4gK3sNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbDsNCj4+ICsNCj4+ICsg ICAgY2hhbm5lbCA9IGdldF9jaGFubmVsX2J5X2lkKGFnZW50X2lkKTsNCj4+ICsgICAgaWYgKCBj aGFubmVsICkNCj4+ICsgICAgICAgIHJldHVybiBFUlJfUFRSKEVFWElTVCk7DQo+PiArDQo+PiAr ICAgIGNoYW5uZWwgPSB4bWFsbG9jKHN0cnVjdCBzY21pX2NoYW5uZWwpOw0KPj4gKyAgICBpZiAo ICFjaGFubmVsICkNCj4+ICsgICAgICAgIHJldHVybiBFUlJfUFRSKEVOT01FTSk7DQo+PiArDQo+ PiArICAgIHNwaW5fbG9ja19pbml0KCZjaGFubmVsLT5sb2NrKTsNCj4+ICsgICAgY2hhbm5lbC0+ YWdlbnRfaWQgPSBhZ2VudF9pZDsNCj4+ICsgICAgY2hhbm5lbC0+ZnVuY19pZCA9IGZ1bmNfaWQ7 DQo+PiArICAgIGNoYW5uZWwtPmRvbWFpbl9pZCA9IERPTUlEX0lOVkFMSUQ7DQo+PiArICAgIGNo YW5uZWwtPnNobWVtID0gTlVMTDsNCj4+ICsgICAgY2hhbm5lbC0+cGFkZHIgPSBhZGRyOw0KPj4g KyAgICBsaXN0X2FkZF90YWlsKCZjaGFubmVsLT5saXN0LCAmc2NtaV9kYXRhLmNoYW5uZWxfbGlz dCk7DQo+PiArICAgIHJldHVybiBjaGFubmVsOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgdm9p ZCBmcmVlX2NoYW5uZWxfbGlzdCh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hh bm5lbCAqY3VyciwgKl9jdXJyOw0KPj4gKw0KPj4gKyAgICBsaXN0X2Zvcl9lYWNoX2VudHJ5X3Nh ZmUoY3VyciwgX2N1cnIsICZzY21pX2RhdGEuY2hhbm5lbF9saXN0LCBsaXN0KQ0KPj4gKyAgICB7 DQo+PiArICAgICAgICBsaXN0X2RlbCgmY3Vyci0+bGlzdCk7DQo+PiArICAgICAgICB4ZnJlZShj dXJyKTsNCj4+ICsgICAgfQ0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgaW50IF9faW5pdA0KPj4g K3NjbWlfZHRfcmVhZF9oeXBfY2hhbm5lbF9hZGRyKHN0cnVjdCBkdF9kZXZpY2Vfbm9kZSAqc2Nt aV9ub2RlLCB1NjQgKmFkZHIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdTY0 ICpzaXplKQ0KPj4gK3sNCj4+ICsgICAgc3RydWN0IGR0X2RldmljZV9ub2RlICpzaG1lbV9ub2Rl Ow0KPj4gKyAgICBjb25zdCBfX2JlMzIgKnByb3A7DQo+PiArDQo+PiArICAgIHByb3AgPSBkdF9n ZXRfcHJvcGVydHkoc2NtaV9ub2RlLCAic2htZW0iLCBOVUxMKTsNCj4+ICsgICAgaWYgKCAhcHJv cCApDQo+PiArICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4+ICsgICAgc2htZW1fbm9k ZSA9IGR0X2ZpbmRfbm9kZV9ieV9waGFuZGxlKGJlMzJfdG9fY3B1cChwcm9wKSk7DQo+PiArICAg IGlmICggSVNfRVJSX09SX05VTEwoc2htZW1fbm9kZSkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAg ICBwcmludGsoWEVOTE9HX0VSUg0KPj4gKyAgICAgICAgICAgICAgICJzY21pOiBEZXZpY2UgdHJl ZSBlcnJvciwgY2FuJ3QgcGFyc2UgcmVzZXJ2ZWQgbWVtb3J5ICVsZFxuIiwNCj4+ICsgICAgICAg ICAgICAgICBQVFJfRVJSKHNobWVtX25vZGUpKTsNCj4+ICsgICAgICAgIHJldHVybiBQVFJfRVJS KHNobWVtX25vZGUpOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHJldHVybiBkdF9kZXZpY2Vf Z2V0X2FkZHJlc3Moc2htZW1fbm9kZSwgMCwgYWRkciwgc2l6ZSk7DQo+PiArfQ0KPj4gKw0KPj4g Ky8qDQo+PiArICogSGFuZGxlIERvbTAgU0NNSSBzcGVjaWZpYyBEVCBub2Rlcw0KPj4gKyAqDQo+ PiArICogTWFrZSBhIGRlY2lzaW9uIG9uIGNvcHlpbmcgU0NNSSBzcGVjaWZpYyBub2RlcyBpbnRv IERvbTAgZGV2aWNlIHRyZWUuDQo+PiArICogRm9yIFNDTUkgbXVsdGktYWdlbnQgY2FzZToNCj4+ ICsgKiAtIHNobWVtIG5vZGVzIHdpbGwgbm90IGJlIGNvcGllZCBhbmQgZ2VuZXJhdGVkIGluc3Rl YWQgaWYgU0NNSQ0KPj4gKyAqICAgaXMgZW5hYmxlZCBmb3IgRG9tMA0KPj4gKyAqIC0gc2NtaSBu b2RlIHdpbGwgYmUgY29waWVkIGlmIFNDTUkgaXMgZW5hYmxlZCBmb3IgRG9tMA0KPj4gKyAqLw0K Pj4gK3N0YXRpYyBib29sIHNjbWlfZHRfaGFuZGxlX25vZGUoc3RydWN0IGRvbWFpbiAqZCwgc3Ry dWN0IGR0X2RldmljZV9ub2RlICpub2RlKQ0KPj4gK3sNCj4+ICsgICAgc3RhdGljIGNvbnN0IHN0 cnVjdCBkdF9kZXZpY2VfbWF0Y2ggc2tpcF9tYXRjaGVzW10gX19pbml0Y29uc3QgPSB7DQo+PiAr ICAgICAgICBEVF9NQVRDSF9DT01QQVRJQkxFKCJhcm0sc2NtaS1zaG1lbSIpLA0KPj4gKyAgICAg ICAgeyAvKiBzZW50aW5lbCAqLyB9LA0KPj4gKyAgICB9Ow0KPj4gKyAgICBzdGF0aWMgY29uc3Qg c3RydWN0IGR0X2RldmljZV9tYXRjaCBzY21pX21hdGNoZXNbXSBfX2luaXRjb25zdCA9IHsNCj4+ ICsgICAgICAgIERUX01BVENIX1BBVEgoIi9maXJtd2FyZS9zY21pIiksDQo+PiArICAgICAgICB7 IC8qIHNlbnRpbmVsICovIH0sDQo+PiArICAgIH07DQo+PiArDQo+PiArICAgIGlmICggIXNjbWlf ZGF0YS5pbml0aWFsaXplZCApDQo+PiArICAgICAgICByZXR1cm4gZmFsc2U7DQo+PiArDQo+PiAr ICAgIC8qIGFsd2F5cyBkcm9wIHNobWVtICovDQo+PiArICAgIGlmICggZHRfbWF0Y2hfbm9kZShz a2lwX21hdGNoZXMsIG5vZGUpICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgZHRfZHByaW50aygi ICBTa2lwIHNjbWkgc2htZW1cbiIpOw0KPj4gKyAgICAgICAgcmV0dXJuIHRydWU7DQo+PiArICAg IH0NCj4+ICsNCj4+ICsgICAgLyogZHJvcCBzY21pIGlmIG5vdCBlbmFibGVkICovDQo+PiArICAg IGlmICggZHRfbWF0Y2hfbm9kZShzY21pX21hdGNoZXMsIG5vZGUpICYmICFzY2lfZG9tYWluX2lz X2VuYWJsZWQoZCkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBkdF9kcHJpbnRrKCIgIFNraXAg c2NtaSBub2RlXG4iKTsNCj4+ICsgICAgICAgIHJldHVybiB0cnVlOw0KPj4gKyAgICB9DQo+PiAr DQo+PiArICAgIHJldHVybiBmYWxzZTsNCj4+ICt9DQo+PiArDQo+PiArLyoNCj4+ICsgKiBGaW5h bGl6ZSBEb20wIFNDTUkgc3BlY2lmaWMgRFQgbm9kZXMNCj4+ICsgKg0KPj4gKyAqIGlmIFNDTUkg aXMgZW5hYmxlZCBmb3IgRG9tMDoNCj4+ICsgKiAtIGdlbmVyYXRlIHNobWVtIG5vZGUNCj4+ICsg KiAtIG1hcCBTQ01JIHNobWVtIE1NSU8gaW50byBEb20wDQo+PiArICovDQo+PiArc3RhdGljIGlu dCBzY21pX2R0X2ZpbmFsaXplKHN0cnVjdCBkb21haW4gKmQsIHZvaWQgKmZkdCkNCj4+ICt7DQo+ PiArICAgIF9fYmUzMiByZWdbR1VFU1RfUk9PVF9BRERSRVNTX0NFTExTICsgR1VFU1RfUk9PVF9T SVpFX0NFTExTXTsNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbDsNCj4+ICsg ICAgaW50IG5vZGVvZmZzZXQ7DQo+PiArICAgIF9fYmUzMiAqY2VsbHM7DQo+PiArICAgIF9fYmUz MiB2YWw7DQo+PiArICAgIGNoYXIgYnVmWzY0XTsNCj4+ICsgICAgaW50IHJlcywgcmM7DQo+PiAr DQo+PiArICAgIGlmICggIXNjaV9kb21haW5faXNfZW5hYmxlZChkKSApDQo+PiArICAgICAgICBy ZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgY2hhbm5lbCA9IGQtPmFyY2guc2NpX2RhdGE7DQo+PiAr DQo+PiArICAgIC8qDQo+PiArICAgICAqIFJlcGxhY2UgImFybSxzbWMtaWQiIHdpdGggcHJvcGVy IHZhbHVlIGFzc2lnbmVkIGZvciBEb20wIFNDTUkgY2hhbm5lbA0KPj4gKyAgICAgKi8NCj4+ICsg ICAgbm9kZW9mZnNldCA9IGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlKGZkdCwgLTEsICJh cm0sc2NtaS1zbWMiKTsNCj4+ICsgICAgaWYgKCBub2Rlb2Zmc2V0IDwgMCApDQo+PiArICAgICAg ICByZXR1cm4gLUVOT0RFVjsNCj4+ICsNCj4+ICsgICAgY2VsbHMgPSAoX19iZTMyICopJnZhbDsN Cj4+ICsgICAgZHRfc2V0X2NlbGwoJmNlbGxzLCAxLCBjaGFubmVsLT5mdW5jX2lkKTsNCj4+ICsg ICAgcmVzID0gZmR0X3NldHByb3BfaW5wbGFjZShmZHQsIG5vZGVvZmZzZXQsICJhcm0sc21jLWlk IiwgJnZhbCwgc2l6ZW9mKHZhbCkpOw0KPj4gKyAgICBpZiAoIHJlcyApDQo+PiArICAgICAgICBy ZXR1cm4gLUVJTlZBTDsNCj4+ICsNCj4gQXJlIHlvdSBzdXJlIGl0IGlzIHdvcnRoIHRvIGdvIHRo cm91Z2ggYWxsIHRoaXMgdHJvdWJsZSB0byBtb2RpZnkgRkRUIGluDQo+IHBsYWNlIHdoZW4gd2Ug Y291bGQgc2ltcGx5IGdlbmVyYXRlIHRoZSBEVCBub2RlIGZyb20gc2NyYXRjaCBsaWtlIHdlIGRv DQo+IGZvciBleGFtcGxlIGZvciB0aGUgR0lDPyBUaGlzIHNlZW1zIHRvIGJlIG1vcmUgZXJyb3Ig cHJvbmUgYXMgd2VsbC4gSXMNCj4gZ2VuZXJhdGluZyBpdCBmcm9tIHNjcmF0Y2ggaXMgcmVhbGx5 IGRpZmZpY3VsdD8gSWYgaXQgaXMgZGlmZmljdWx0IHRoZW4gT0suDQo+DQpJbiB0aGUgbGFzdCBw YXRjaCBbMF0gb2YgdGhlIHNlcmllcywgdGhlcmUgaXMgYSBwcm9wb3NhbCB0byBzZXBhcmF0ZQ0K DQogIHRoZSBYZW4gcHJpdmlsZWdlZCBhZ2VudCBmcm9tIHRoZSBEb20wIGFnZW50LiBUaGlzIGVs aW1pbmF0ZXMgdGhlDQoNCm5lZWQgdG8gbW9kaWZ5IHRoZSBYZW4gRGV2aWNlIFRyZWUgQmxvYiAo RFRCKSwgd2hpY2ggaXMgYSBwb3NpdGl2ZQ0KaW1wcm92ZW1lbnQNCg0Kc2luY2UgdGhlIERvbTAg YWdlbnQgbm9kZSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIGRldmljZSB0cmVlLg0KDQpIb3dl dmVyLCB0aGUgaXNzdWUgd2l0aCBTQ01JIG5vZGUgZ2VuZXJhdGlvbiBsaWVzIGluIHRoZSBuZWVk IHRvIGhhbmRsZQ0KDQp0aGUgbGlzdCBvZiBwcm90b2NvbHMgdGhhdCBhcmUgc3VwcG9ydGVkIGFj cm9zcyB0aGUgc3lzdGVtLg0KDQpJZiB3ZSB3YW50IHRvIGdlbmVyYXRlIHRoZSBTQ01JIG5vZGUg Zm9yIERvbTAsIHdlIG5lZWQgdG86DQoNCkNvcHkgdGhlc2UgcHJvdG9jb2xzIGZyb20gYSBjZW50 cmFsaXplZCBvciBwcmVkZWZpbmVkIHNvdXJjZS4NClNldCB0aGUgY29ycmVjdCBwaGFuZGxlIGZv ciBlYWNoIHN1Ym5vZGUgd2l0aGluIHRoZSBTQ01JIG5vZGUsIGVuc3VyaW5nDQoNCmFjY3VyYXRl IHJlcHJlc2VudGF0aW9uIGFuZCBmdW5jdGlvbmFsaXR5Lg0KVGhpcyBleHRyYSBzdGVwIG9mIG1h bmFnaW5nIHRoZSBwcm90b2NvbHMgYW5kIHBoYW5kbGVzIGFkZHMNCg0KY29tcGxleGl0eSBidXQg aXMgbmVjZXNzYXJ5IGZvciBlbnN1cmluZyBwcm9wZXIgc3VwcG9ydCBmb3IgRG9tMC4NCg0KWzBd DQpodHRwczovL2xpc3RzLnhlbnByb2plY3Qub3JnL2FyY2hpdmVzL2h0bWwveGVuLWRldmVsLzIw MjUtMDUvbXNnMDEwNDEuaHRtbA0KDQo+PiArICAgIC8qDQo+PiArICAgICAqIEFsbCBTQ01JIHNo bWVtIG5vZGVzIHNob3VsZCBiZSByZW1vdmVkIGZyb20gRG9tMCBEVCBhdCB0aGlzIHBvaW50LCBz bw0KPj4gKyAgICAgKiB0aGUgc2htZW0gbm9kZSBmb3IgRG9tMCBuZWVkIHRvIGJlIGdlbmVyYXRl ZCBmcm9tIFNDTUkgY2hhbm5lbCBhc3NpZ25lZA0KPj4gKyAgICAgKiB0byBEb20wLg0KPj4gKyAg ICAgKiBUaGUgb3JpZ2luYWwgU0NNSSBzaG1lbSBub2RlIGZyb20gcGxhdGZvcm0gRFQgaXMgdXNl ZCBieSBYZW4gU0NNSSBkcml2ZXINCj4+ICsgICAgICogaXRzZWxmIGFzIHByaXZpbGVnZWQgY2hh bm5lbCAoYWdlbnRfaWQ9MCkgdG8gbWFuYWdlIG90aGVyIFNDTUkNCj4+ICsgICAgICogYWdlbnRz IChkb21haW5zKS4NCj4+ICsgICAgICovDQo+PiArICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1 ZiksICJzY21pLXNobWVtQCVseCIsIGNoYW5uZWwtPnBhZGRyKTsNCj4+ICsNCj4+ICsgICAgcmVz ID0gZmR0X2JlZ2luX25vZGUoZmR0LCBidWYpOw0KPj4gKyAgICBpZiAoIHJlcyApDQo+PiArICAg ICAgICByZXR1cm4gcmVzOw0KPj4gKw0KPj4gKyAgICByZXMgPSBmZHRfcHJvcGVydHlfc3RyaW5n KGZkdCwgImNvbXBhdGlibGUiLCAiYXJtLHNjbWktc2htZW0iKTsNCj4+ICsgICAgaWYgKCByZXMg KQ0KPj4gKyAgICAgICAgcmV0dXJuIHJlczsNCj4+ICsNCj4+ICsgICAgY2VsbHMgPSAmcmVnWzBd Ow0KPj4gKw0KPj4gKyAgICBkdF9jaGlsZF9zZXRfcmFuZ2UoJmNlbGxzLCBHVUVTVF9ST09UX0FE RFJFU1NfQ0VMTFMsIEdVRVNUX1JPT1RfU0laRV9DRUxMUywNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgIGNoYW5uZWwtPnBhZGRyLCBTQ01JX1NITUVNX01BUFBFRF9TSVpFKTsNCj4+ICsNCj4+ ICsgICAgcmVzID0gZmR0X3Byb3BlcnR5KGZkdCwgInJlZyIsIHJlZywgc2l6ZW9mKHJlZykpOw0K Pj4gKyAgICBpZiAoIHJlcyApDQo+PiArICAgICAgICByZXR1cm4gcmVzOw0KPj4gKw0KPj4gKyAg ICByZXMgPSBmZHRfcHJvcGVydHlfY2VsbChmZHQsICJwaGFuZGxlIiwgc2NtaV9kYXRhLnNobWVt X3BoYW5kbGUpOw0KPj4gKyAgICBpZiAoIHJlcyApDQo+PiArICAgICAgICByZXR1cm4gcmVzOw0K Pj4gKw0KPj4gKyAgICByZXMgPSBmZHRfZW5kX25vZGUoZmR0KTsNCj4+ICsgICAgaWYgKCByZXMg KQ0KPj4gKyAgICAgICAgcmV0dXJuIHJlczsNCj4+ICsNCj4+ICsgICAgLyoNCj4+ICsgICAgICog TWFwIFNDTUkgc2htZW0gaW50byBEb20wIGhlcmUgYXMgc2htZW0gbm9kZXMgYXJlIGV4Y2x1ZGVk IGZyb20NCj4+ICsgICAgICogZ2VuZXJpYyBEb20wIERUIHByb2Nlc3NpbmcNCj4+ICsgICAgICov DQo+PiArICAgIHJlcyA9IGlvbWVtX3Blcm1pdF9hY2Nlc3MoZCwgcGFkZHJfdG9fcGZuKGNoYW5u ZWwtPnBhZGRyKSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19w Zm4oY2hhbm5lbC0+cGFkZHIgKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBTQ01JX1NITUVNX01BUFBFRF9TSVpFIC0gMSkpOw0KPj4gKyAgICBpZiAoIHJl cyApDQo+PiArICAgICAgICByZXR1cm4gcmVzOw0KPj4gKw0KPj4gKyAgICByZXMgPSBtYXBfcmVn aW9uc19wMm10KGQsIGdhZGRyX3RvX2dmbihjaGFubmVsLT5wYWRkciksDQo+PiArICAgICAgICAg ICAgICAgICAgICAgICAgICAgUEZOX1VQKFNDTUlfU0hNRU1fTUFQUEVEX1NJWkUpLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIG1hZGRyX3RvX21mbihjaGFubmVsLT5wYWRkciksIHAy bV9tbWlvX2RpcmVjdF9uYyk7DQo+PiArICAgIGlmICggcmVzICkNCj4+ICsgICAgew0KPj4gKyAg ICAgICAgcmMgPSBpb21lbV9kZW55X2FjY2VzcyhkLCBwYWRkcl90b19wZm4oY2hhbm5lbC0+cGFk ZHIpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19wZm4oY2hh bm5lbC0+cGFkZHIgKw0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgU0NNSV9TSE1FTV9NQVBQRURfU0laRSAtIDEpKTsNCj4+ICsgICAgICAgIGlmICggcmMg KQ0KPj4gKyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJzY21pOiBVbmFibGUgdG8gZGVu eSBpb21lbSBhY2Nlc3MgLCBlcnIgPSAlZFxuIiwNCj4+ICsgICAgICAgICAgICAgICAgICAgcmMp Ow0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHJldHVybiByZXM7DQo+PiArfQ0KPj4gKw0KPj4g K3N0YXRpYyBpbnQgc2NtaV9hc3NpZ25fZGV2aWNlKHVpbnQzMl90IGFnZW50X2lkLCB1aW50MzJf dCBkZXZpY2VfaWQsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg ZmxhZ3MpDQo+PiArew0KPj4gKyAgICBzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9zZXRfZGV2aWNlX3Bl cm1pc3Npb25zX2EycCB0eDsNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbDsN Cj4+ICsgICAgc2NtaV9tc2dfaGVhZGVyX3QgaGRyOw0KPj4gKyAgICBpbnQgcmV0Ow0KPj4gKw0K Pj4gKyAgICBjaGFubmVsID0gZ2V0X2NoYW5uZWxfYnlfaWQoSFlQX0NIQU5ORUwpOw0KPj4gKyAg ICBpZiAoICFjaGFubmVsICkNCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4g KyAgICBoZHIuaWQgPSBTQ01JX0JBU0VfU0VUX0RFVklDRV9QRVJNSVNTSU9OUzsNCj4+ICsgICAg aGRyLnR5cGUgPSAwOw0KPj4gKyAgICBoZHIucHJvdG9jb2wgPSBTQ01JX0JBU0VfUFJPVE9DT0w7 DQo+PiArDQo+PiArICAgIHR4LmFnZW50X2lkID0gYWdlbnRfaWQ7DQo+PiArICAgIHR4LmRldmlj ZV9pZCA9IGRldmljZV9pZDsNCj4+ICsgICAgdHguZmxhZ3MgPSBmbGFnczsNCj4+ICsNCj4+ICsg ICAgcmV0ID0gZG9fc21jX3hmZXIoY2hhbm5lbCwgJmhkciwgJnR4LCBzaXplb2YodHgpLCBOVUxM LCAwKTsNCj4+ICsgICAgaWYgKCByZXQgPT0gLUVPUE5PVFNVUFAgKQ0KPj4gKyAgICAgICAgcmV0 dXJuIDA7DQo+IElzIGl0IGFjdHVhbGx5IE9LIHRvIHByZXRlbmQgdGhhdCBldmVyeXRoaW5nIHdv cmtlZCBpZiB0aGUgcmV0dXJuIGlzDQo+IC1FT1BOT1RTVVBQPyBJIG1lYW4gdGhhdCBpbiB0aGlz IGNhc2UgY2FuIHdlIGFzc3VtZSB0aGF0IHRoZSBkZXZpY2UgaXMNCj4gYWN0dWFsbHkgYXNzaWdu ZWQgYW55d2F5PyBXb3VsZG4ndCBmb2xsb3cgdXAgU0NNSSBvcGVyYXRpb25zIG9uIHRoaXMNCj4g ZGV2aWNlIGZhaWw/DQo+DQpJIHRoaW5rIHlvdSByaWdodC4gV2lsbCBmaXggaW4gdjUNCj4+ICsg ICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIGludCBzY21pX2R0X2Fzc2ln bl9kZXZpY2Uoc3RydWN0IGRvbWFpbiAqZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzdHJ1Y3QgZHRfcGhhbmRsZV9hcmdzICphY19zcGVjKQ0KPj4gK3sNCj4+ICsgICAg c3RydWN0IHNjbWlfY2hhbm5lbCAqYWdlbnRfY2hhbm5lbDsNCj4+ICsgICAgdWludDMyX3Qgc2Nt aV9kZXZpY2VfaWQgPSBhY19zcGVjLT5hcmdzWzBdOw0KPj4gKyAgICBpbnQgcmV0Ow0KPj4gKw0K Pj4gKyAgICBpZiAoICFkLT5hcmNoLnNjaV9kYXRhICkNCj4+ICsgICAgICAgIHJldHVybiAwOw0K Pj4gKw0KPj4gKyAgICAvKiBUaGUgYWNjZXNzLWNvbnRyb2xsZXJzIGlzIHNwZWNpZmllZCBmb3Ig RFQgZGV2LCBidXQgaXQncyBub3QgYSBTQ01JICovDQo+PiArICAgIGlmICggYWNfc3BlYy0+bnAg IT0gc2NtaV9kYXRhLmR0X2RldiApDQo+PiArICAgICAgICByZXR1cm4gMDsNCj4gSSB3b25kZXIg aWYgdGhpcyBzaG91bGQgYmUgYW4gZXJyb3INCj4NCldlIGRvbuKAmXQgZXhwZWN0IHRoZSBEVCBu b2RlIGFjY2Vzcy1jb250cm9sbGVyIHRvIHJlbHkgc29sZWx5IG9uIFNDTUkuDQpUaGVyZWZvcmUs DQoNCmlmIGEgRFQgbm9kZSBoYXMgYW4gYWNjZXNzLWNvbnRyb2xsZXIgYnV0IGl04oCZcyBub3Qg YXNzb2NpYXRlZCB3aXRoIFNDTUksDQp3ZSBzaG91bGQgc2ltcGx5DQoNCmlnbm9yZSB0aGF0IG5v ZGUgd2l0aG91dCByYWlzaW5nIGFuIGVycm9yLg0KDQoNClRoYXTigJlzIG15IHVuZGVyc3RhbmRp bmcgb2YgdGhlIHNpdHVhdGlvbi4NCg0KDQo+PiArICAgIGFnZW50X2NoYW5uZWwgPSBkLT5hcmNo LnNjaV9kYXRhOw0KPj4gKw0KPj4gKyAgICBzcGluX2xvY2soJmFnZW50X2NoYW5uZWwtPmxvY2sp Ow0KPj4gKw0KPj4gKyAgICByZXQgPSBzY21pX2Fzc2lnbl9kZXZpY2UoYWdlbnRfY2hhbm5lbC0+ YWdlbnRfaWQsIHNjbWlfZGV2aWNlX2lkLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgU0NNSV9CQVNFX0RFVklDRV9BQ0NFU1NfQUxMT1cpOw0KPj4gKyAgICBpZiAoIHJldCApDQo+ PiArICAgIHsNCj4+ICsgICAgICAgIHByaW50ayhYRU5MT0dfRVJSDQo+PiArICAgICAgICAgICAg ICAgInNjbWk6IGNvdWxkIG5vdCBhc3NpZ24gZGV2IGZvciAlcGQgYWdlbnQ6JWQgZGV2X2lkOiV1 ICglZCkiLA0KPj4gKyAgICAgICAgICAgICAgIGQsIGFnZW50X2NoYW5uZWwtPmFnZW50X2lkLCBz Y21pX2RldmljZV9pZCwgcmV0KTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBzcGluX3VubG9j aygmYWdlbnRfY2hhbm5lbC0+bG9jayk7DQo+PiArICAgIHJldHVybiByZXQ7DQo+PiArfQ0KPj4g Kw0KPj4gK3N0YXRpYyBfX2luaXQgaW50IGNvbGxlY3RfYWdlbnRzKHN0cnVjdCBkdF9kZXZpY2Vf bm9kZSAqc2NtaV9ub2RlKQ0KPj4gK3sNCj4+ICsgICAgY29uc3Qgc3RydWN0IGR0X2RldmljZV9u b2RlICpjaG9zZW5fbm9kZTsNCj4+ICsgICAgY29uc3QgX19iZTMyICpwcm9wOw0KPj4gKyAgICB1 aW50MzJfdCBsZW4sIGk7DQo+PiArDQo+PiArICAgIGNob3Nlbl9ub2RlID0gZHRfZmluZF9ub2Rl X2J5X3BhdGgoIi9jaG9zZW4iKTsNCj4+ICsgICAgaWYgKCAhY2hvc2VuX25vZGUgKQ0KPj4gKyAg ICB7DQo+PiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAic2NtaTogY2hvc2VuIG5vZGUgbm90 IGZvdW5kXG4iKTsNCj4+ICsgICAgICAgIHJldHVybiAtRU5PRU5UOw0KPj4gKyAgICB9DQo+PiAr DQo+PiArICAgIHByb3AgPSBkdF9nZXRfcHJvcGVydHkoY2hvc2VuX25vZGUsIFNDTUlfU0VDT05E QVJZX0FHRU5UUywgJmxlbik7DQo+PiArICAgIGlmICggIXByb3AgKQ0KPj4gKyAgICB7DQo+PiAr ICAgICAgICBwcmludGsoWEVOTE9HX1dBUk5JTkcgInNjbWk6IE5vICVzIHByb3BlcnR5IGZvdW5k XG4iLA0KPj4gKyAgICAgICAgICAgICAgIFNDTUlfU0VDT05EQVJZX0FHRU5UUyk7DQo+PiArICAg ICAgICByZXR1cm4gLUVOT0RFVjsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBpZiAoIGxlbiAl ICgzICogc2l6ZW9mKHVpbnQzMl90KSkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBwcmludGso WEVOTE9HX0VSUiAic2NtaTogSW52YWxpZCBsZW5ndGggb2YgJXMgcHJvcGVydHk6ICVkXG4iLA0K Pj4gKyAgICAgICAgICAgICAgIFNDTUlfU0VDT05EQVJZX0FHRU5UUywgbGVuKTsNCj4+ICsgICAg ICAgIHJldHVybiAtRUlOVkFMOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGZvciAoIGkgPSAw OyBpIDwgbGVuIC8gKDMgKiBzaXplb2YodWludDMyX3QpKTsgaSsrICkNCj4+ICsgICAgew0KPj4g KyAgICAgICAgdWludDMyX3QgYWdlbnRfaWQgPSBiZTMyX3RvX2NwdSgqcHJvcCsrKTsNCj4+ICsg ICAgICAgIHVpbnQzMl90IHNtY19pZCA9IGJlMzJfdG9fY3B1KCpwcm9wKyspOw0KPj4gKyAgICAg ICAgdWludDMyX3Qgc2htZW1fcGhhbmRsZSA9IGJlMzJfdG9fY3B1KCpwcm9wKyspOw0KPj4gKyAg ICAgICAgc3RydWN0IGR0X2RldmljZV9ub2RlICpub2RlID0gZHRfZmluZF9ub2RlX2J5X3BoYW5k bGUoc2htZW1fcGhhbmRsZSk7DQo+PiArICAgICAgICB1NjQgYWRkciwgc2l6ZTsNCj4+ICsgICAg ICAgIGludCByZXQ7DQo+PiArDQo+PiArICAgICAgICBpZiAoICFub2RlICkNCj4+ICsgICAgICAg IHsNCj4+ICsgICAgICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAic2NtaTogQ291bGQgbm90IGZp bmQgc2htZW0gbm9kZSBmb3IgYWdlbnQgJWRcbiIsDQo+PiArICAgICAgICAgICAgICAgICAgIGFn ZW50X2lkKTsNCj4+ICsgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4+ICsgICAgICAgIH0N Cj4+ICsNCj4+ICsgICAgICAgIHJldCA9IGR0X2RldmljZV9nZXRfYWRkcmVzcyhub2RlLCAwLCAm YWRkciwgJnNpemUpOw0KPj4gKyAgICAgICAgaWYgKCByZXQgKQ0KPj4gKyAgICAgICAgew0KPj4g KyAgICAgICAgICAgIHByaW50ayhYRU5MT0dfRVJSDQo+PiArICAgICAgICAgICAgICAgICAgICJz Y21pOiBDb3VsZCBub3QgcmVhZCBzaG1lbSBhZGRyZXNzIGZvciBhZ2VudCAlZDogJWQiLA0KPj4g KyAgICAgICAgICAgICAgICAgICBhZ2VudF9pZCwgcmV0KTsNCj4+ICsgICAgICAgICAgICByZXR1 cm4gcmV0Ow0KPj4gKyAgICAgICAgfQ0KPj4gKw0KPj4gKyAgICAgICAgaWYgKCAhSVNfQUxJR05F RChzaXplLCBTQ01JX1NITUVNX01BUFBFRF9TSVpFKSApDQo+PiArICAgICAgICB7DQo+PiArICAg ICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgInNjbWk6IHNobWVtIG1lbW9yeSBpcyBub3QgYWxp Z25lZFxuIik7DQo+PiArICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgICAgICB9 DQo+PiArDQo+PiArICAgICAgICByZXQgPSBQVFJfUkVUKHNtY19jcmVhdGVfY2hhbm5lbChhZ2Vu dF9pZCwgc21jX2lkLCBhZGRyKSk7DQo+PiArICAgICAgICBpZiAoIHJldCApDQo+PiArICAgICAg ICB7DQo+PiArICAgICAgICAgICAgcHJpbnRrKFhFTkxPR19FUlIgInNjbWk6IENvdWxkIG5vdCBj cmVhdGUgY2hhbm5lbCBmb3IgYWdlbnQgJWQ6ICVkIiwNCj4+ICsgICAgICAgICAgICAgICAgICAg YWdlbnRfaWQsIHJldCk7DQo+PiArICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsgICAgICAg IH0NCj4+ICsNCj4+ICsgICAgICAgIHByaW50ayhYRU5MT0dfREVCVUcgInNjbWk6IEFnZW50ICVk IFNNQyAlWCBhZGRyICVseFxuIiwgYWdlbnRfaWQsDQo+PiArICAgICAgICAgICAgICAgc21jX2lk LCBhZGRyKTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiAr DQo+PiArc3RhdGljIGludCBzY21pX2RvbWFpbl9pbml0KHN0cnVjdCBkb21haW4gKmQsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB4ZW5fZG9tY3RsX2NyZWF0ZWRvbWFp biAqY29uZmlnKQ0KPj4gK3sNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbDsN Cj4+ICsgICAgaW50IHJldDsNCj4+ICsNCj4+ICsgICAgaWYgKCAhc2NtaV9kYXRhLmluaXRpYWxp emVkICkNCj4+ICsgICAgICAgIHJldHVybiAwOw0KPj4gKw0KPj4gKyAgICAvKg0KPj4gKyAgICAg KiBTcGVjaWFsIGNhc2UgZm9yIERvbTAgLSB0aGUgU0NNSSBzdXBwb3J0IGlzIGVuYWJsZWQgYmFz aW5nIG9uDQo+PiArICAgICAqICJkb20wX3NjaV9hZ2VudF9pZCIgWGVuIGNvbW1hbmQgbGluZSBw YXJhbWV0ZXINCj4+ICsgICAgICovDQo+PiArICAgIGlmICggaXNfaGFyZHdhcmVfZG9tYWluKGQp ICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgaWYgKCBvcHRfZG9tMF9zY21pX2FnZW50X2lkICE9 IFNDTUlfQUdFTlRfSURfSU5WQUxJRCApDQo+PiArICAgICAgICB7DQo+PiArICAgICAgICAgICAg Y29uZmlnLT5hcmNoLmFybV9zY2lfdHlwZSA9IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NN SV9TTUNfTUE7DQo+PiArICAgICAgICAgICAgY29uZmlnLT5hcmNoLmFybV9zY2lfYWdlbnRfaWQg PSBvcHRfZG9tMF9zY21pX2FnZW50X2lkOw0KPj4gKyAgICAgICAgfQ0KPj4gKyAgICAgICAgZWxz ZQ0KPj4gKyAgICAgICAgICAgIGNvbmZpZy0+YXJjaC5hcm1fc2NpX3R5cGUgPSBYRU5fRE9NQ1RM X0NPTkZJR19BUk1fU0NJX05PTkU7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgaWYgKCBjb25m aWctPmFyY2guYXJtX3NjaV90eXBlID09IFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfTk9ORSAp DQo+PiArICAgICAgICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgY2hhbm5lbCA9IGFjcXVpcmVf c2NtaV9jaGFubmVsKGQsIGNvbmZpZy0+YXJjaC5hcm1fc2NpX2FnZW50X2lkKTsNCj4+ICsgICAg aWYgKCBJU19FUlIoY2hhbm5lbCkgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBwcmludGsoWEVO TE9HX0VSUg0KPj4gKyAgICAgICAgICAgICAgICJzY21pOiBGYWlsZWQgdG8gYWNxdWlyZSBTQ01J IGNoYW5uZWwgZm9yIGFnZW50X2lkICV1OiAlbGRcbiIsDQo+PiArICAgICAgICAgICAgICAgY29u ZmlnLT5hcmNoLmFybV9zY2lfYWdlbnRfaWQsIFBUUl9FUlIoY2hhbm5lbCkpOw0KPj4gKyAgICAg ICAgcmV0dXJuIFBUUl9FUlIoY2hhbm5lbCk7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgcHJp bnRrKFhFTkxPR19JTkZPDQo+PiArICAgICAgICAgICAic2NtaTogQWNxdWlyZSBjaGFubmVsIGlk ID0gMHgleCwgZG9tYWluX2lkID0gJWQgcGFkZHIgPSAweCVseFxuIiwNCj4+ICsgICAgICAgICAg IGNoYW5uZWwtPmFnZW50X2lkLCBjaGFubmVsLT5kb21haW5faWQsIGNoYW5uZWwtPnBhZGRyKTsN Cj4+ICsNCj4+ICsgICAgLyoNCj4+ICsgICAgICogRG9tMCAoaWYgcHJlc2VudCkgbmVlZHMgdG8g aGF2ZSBhbiBhY2Nlc3MgdG8gdGhlIGd1ZXN0IG1lbW9yeSByYW5nZQ0KPj4gKyAgICAgKiB0byBz YXRpc2Z5IGlvbWVtX2FjY2Vzc19wZXJtaXR0ZWQoKSBjaGVjayBpbiBYRU5fRE9NQ1RMX2lvbWVt X3Blcm1pc3Npb24NCj4+ICsgICAgICogZG9tY3RsLg0KPiBJZGVhbGx5IHRoaXMgc2hvdWxkIG5v dCBiZSBuZWVkZWQgYnV0IEkgdW5kZXJzdGFuZCB3ZSBkb24ndCBoYXZlIGFuDQo+IGVhc3kgc29s dXRpb24sIEkgdGhpbmsgd2UgY2FuIGdvIGFoZWFkIHdpdGggdGhpcyBmb3Igbm93Lg0KPg0KPj4g KyAgICAgKi8NCj4+ICsgICAgaWYgKCBoYXJkd2FyZV9kb21haW4gJiYgIWlzX2hhcmR3YXJlX2Rv bWFpbihkKSApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHJldCA9IGlvbWVtX3Blcm1pdF9hY2Nl c3MoaGFyZHdhcmVfZG9tYWluLCBwYWRkcl90b19wZm4oY2hhbm5lbC0+cGFkZHIpLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWRkcl90b19wZm4oY2hhbm5lbC0+cGFk ZHIgKyBQQUdFX1NJWkUgLSAxKSk7DQo+PiArICAgICAgICBpZiAoIHJldCApDQo+PiArICAgICAg ICAgICAgZ290byBlcnJvcjsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBkLT5hcmNoLnNjaV9k YXRhID0gY2hhbm5lbDsNCj4+ICsgICAgZC0+YXJjaC5zY2lfZW5hYmxlZCA9IHRydWU7DQo+PiAr DQo+PiArICAgIHJldHVybiAwOw0KPj4gKw0KPj4gK2Vycm9yOg0KPj4gKyAgICByZWxpbnF1aXNo X3NjbWlfY2hhbm5lbChjaGFubmVsKTsNCj4+ICsgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiAr DQo+PiAraW50IHNjbWlfZG9tYWluX3Nhbml0aXNlX2NvbmZpZyhzdHJ1Y3QgeGVuX2RvbWN0bF9j cmVhdGVkb21haW4gKmNvbmZpZykNCj4+ICt7DQo+PiArICAgIGlmICggY29uZmlnLT5hcmNoLmFy bV9zY2lfdHlwZSAhPSBYRU5fRE9NQ1RMX0NPTkZJR19BUk1fU0NJX05PTkUgJiYNCj4+ICsgICAg ICAgICBjb25maWctPmFyY2guYXJtX3NjaV90eXBlICE9IFhFTl9ET01DVExfQ09ORklHX0FSTV9T Q0lfU0NNSV9TTUNfTUEgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICBkcHJpbnRrKFhFTkxPR19J TkZPLCAic2NtaTogVW5zdXBwb3J0ZWQgQVJNX1NDSSB0eXBlXG4iKTsNCj4+ICsgICAgICAgIHJl dHVybiAtRUlOVkFMOw0KPj4gKyAgICB9DQo+PiArICAgIGVsc2UgaWYgKCBjb25maWctPmFyY2gu YXJtX3NjaV90eXBlID09DQo+PiArICAgICAgICAgICAgICBYRU5fRE9NQ1RMX0NPTkZJR19BUk1f U0NJX1NDTUlfU01DX01BICYmDQo+PiArICAgICAgICAgICAgICBjb25maWctPmFyY2guYXJtX3Nj aV9hZ2VudF9pZCA9PSAwICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgZHByaW50ayhYRU5MT0df SU5GTywNCj4+ICsgICAgICAgICAgICAgICAgInNjbWk6IEEgemVybyBBUk0gU0NNSSBhZ2VudF9p ZCBpcyBub3Qgc3VwcG9ydGVkXG4iKTsNCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4g KyAgICB9DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW50IHNjbWlfcmVsaW5xdWlzaF9yZXNvdXJjZXMoc3RydWN0IGRvbWFpbiAqZCkNCj4+ICt7DQo+ PiArICAgIGludCByZXQ7DQo+PiArICAgIHN0cnVjdCBzY21pX2NoYW5uZWwgKmNoYW5uZWwsICph Z2VudF9jaGFubmVsOw0KPj4gKyAgICBzY21pX21zZ19oZWFkZXJfdCBoZHI7DQo+PiArICAgIHN0 cnVjdCBzY21pX21zZ19iYXNlX3Jlc2V0X2FnZW50X2NmZ19hMnAgdHg7DQo+PiArDQo+PiArICAg IGlmICggIWQtPmFyY2guc2NpX2RhdGEgKQ0KPj4gKyAgICAgICAgcmV0dXJuIDA7DQo+PiArDQo+ PiArICAgIGFnZW50X2NoYW5uZWwgPSBkLT5hcmNoLnNjaV9kYXRhOw0KPj4gKw0KPj4gKyAgICBz cGluX2xvY2soJmFnZW50X2NoYW5uZWwtPmxvY2spOw0KPj4gKyAgICB0eC5hZ2VudF9pZCA9IGFn ZW50X2NoYW5uZWwtPmFnZW50X2lkOw0KPj4gKyAgICBzcGluX3VubG9jaygmYWdlbnRfY2hhbm5l bC0+bG9jayk7DQo+PiArDQo+PiArICAgIGNoYW5uZWwgPSBnZXRfY2hhbm5lbF9ieV9pZChIWVBf Q0hBTk5FTCk7DQo+PiArICAgIGlmICggIWNoYW5uZWwgKQ0KPj4gKyAgICB7DQo+PiArICAgICAg ICBwcmludGsoWEVOTE9HX0VSUg0KPj4gKyAgICAgICAgICAgICAgICJzY21pOiBVbmFibGUgdG8g Z2V0IEh5cGVydmlzb3Igc2NtaSBjaGFubmVsIGZvciBkb21haW4gJWRcbiIsDQo+PiArICAgICAg ICAgICAgICAgZC0+ZG9tYWluX2lkKTsNCj4+ICsgICAgICAgIHJldHVybiAtRUlOVkFMOw0KPj4g KyAgICB9DQo+PiArDQo+PiArICAgIGhkci5pZCA9IFNDTUlfQkFTRV9SRVNFVF9BR0VOVF9DT05G SUdVUkFUSU9OOw0KPj4gKyAgICBoZHIudHlwZSA9IDA7DQo+PiArICAgIGhkci5wcm90b2NvbCA9 IFNDTUlfQkFTRV9QUk9UT0NPTDsNCj4+ICsNCj4+ICsgICAgdHguZmxhZ3MgPSAwOw0KPj4gKw0K Pj4gKyAgICByZXQgPSBkb19zbWNfeGZlcihjaGFubmVsLCAmaGRyLCAmdHgsIHNpemVvZih0eCks IE5VTEwsIDApOw0KPj4gKyAgICBpZiAoIHJldCA9PSAtRU9QTk9UU1VQUCApDQo+PiArICAgICAg ICByZXR1cm4gMDsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIHJldDsNCj4+ICt9DQo+PiArDQo+PiAr c3RhdGljIHZvaWQgc2NtaV9kb21haW5fZGVzdHJveShzdHJ1Y3QgZG9tYWluICpkKQ0KPj4gK3sN Cj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hhbm5lbDsNCj4+ICsNCj4+ICsgICAgaWYg KCAhZC0+YXJjaC5zY2lfZGF0YSApDQo+PiArICAgICAgICByZXR1cm47DQo+PiArDQo+PiArICAg IGNoYW5uZWwgPSBkLT5hcmNoLnNjaV9kYXRhOw0KPj4gKyAgICBzcGluX2xvY2soJmNoYW5uZWwt PmxvY2spOw0KPj4gKw0KPj4gKyAgICByZWxpbnF1aXNoX3NjbWlfY2hhbm5lbChjaGFubmVsKTsN Cj4+ICsgICAgcHJpbnRrKFhFTkxPR19ERUJVRyAic2NtaTogRnJlZSBkb21haW4gJWRcbiIsIGQt PmRvbWFpbl9pZCk7DQo+PiArDQo+PiArICAgIGQtPmFyY2guc2NpX2RhdGEgPSBOVUxMOw0KPj4g KyAgICBkLT5hcmNoLnNjaV9lbmFibGVkID0gdHJ1ZTsNCj4+ICsNCj4+ICsgICAgc3Bpbl91bmxv Y2soJmNoYW5uZWwtPmxvY2spOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgYm9vbCBzY21pX2hh bmRsZV9jYWxsKHN0cnVjdCBjcHVfdXNlcl9yZWdzICpyZWdzKQ0KPj4gK3sNCj4+ICsgICAgdWlu dDMyX3QgZmlkID0gKHVpbnQzMl90KWdldF91c2VyX3JlZyhyZWdzLCAwKTsNCj4+ICsgICAgc3Ry dWN0IHNjbWlfY2hhbm5lbCAqYWdlbnRfY2hhbm5lbDsNCj4+ICsgICAgc3RydWN0IGRvbWFpbiAq ZCA9IGN1cnJlbnQtPmRvbWFpbjsNCj4+ICsgICAgc3RydWN0IGFybV9zbWNjY19yZXMgcmVzcDsN Cj4+ICsgICAgYm9vbCByZXMgPSBmYWxzZTsNCj4+ICsNCj4+ICsgICAgaWYgKCAhc2NpX2RvbWFp bl9pc19lbmFibGVkKGQpICkNCj4+ICsgICAgICAgIHJldHVybiBmYWxzZTsNCj4+ICsNCj4+ICsg ICAgYWdlbnRfY2hhbm5lbCA9IGQtPmFyY2guc2NpX2RhdGE7DQo+PiArICAgIHNwaW5fbG9jaygm YWdlbnRfY2hhbm5lbC0+bG9jayk7DQo+PiArDQo+PiArICAgIGlmICggYWdlbnRfY2hhbm5lbC0+ ZnVuY19pZCAhPSBmaWQgKQ0KPj4gKyAgICB7DQo+PiArICAgICAgICByZXMgPSBmYWxzZTsNCj4+ ICsgICAgICAgIGdvdG8gdW5sb2NrOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIGFybV9zbWNj Y18xXzFfc21jKGZpZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgZ2V0X3VzZXJfcmVnKHJl Z3MsIDEpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICBnZXRfdXNlcl9yZWcocmVncywgMiks DQo+PiArICAgICAgICAgICAgICAgICAgICAgIGdldF91c2VyX3JlZyhyZWdzLCAzKSwNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgZ2V0X3VzZXJfcmVnKHJlZ3MsIDQpLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICBnZXRfdXNlcl9yZWcocmVncywgNSksDQo+PiArICAgICAgICAgICAgICAg ICAgICAgIGdldF91c2VyX3JlZyhyZWdzLCA2KSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAg Z2V0X3VzZXJfcmVnKHJlZ3MsIDcpLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAmcmVzcCk7 DQo+PiArDQo+PiArICAgIHNldF91c2VyX3JlZyhyZWdzLCAwLCByZXNwLmEwKTsNCj4+ICsgICAg c2V0X3VzZXJfcmVnKHJlZ3MsIDEsIHJlc3AuYTEpOw0KPj4gKyAgICBzZXRfdXNlcl9yZWcocmVn cywgMiwgcmVzcC5hMik7DQo+PiArICAgIHNldF91c2VyX3JlZyhyZWdzLCAzLCByZXNwLmEzKTsN Cj4+ICsgICAgcmVzID0gdHJ1ZTsNCj4+ICt1bmxvY2s6DQo+PiArICAgIHNwaW5fdW5sb2NrKCZh Z2VudF9jaGFubmVsLT5sb2NrKTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIHJlczsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBzY2lfbWVkaWF0b3Jfb3BzIHNjbWlfb3BzID0g ew0KPj4gKyAgICAuZG9tYWluX2luaXQgPSBzY21pX2RvbWFpbl9pbml0LA0KPj4gKyAgICAuZG9t YWluX2Rlc3Ryb3kgPSBzY21pX2RvbWFpbl9kZXN0cm95LA0KPj4gKyAgICAucmVsaW5xdWlzaF9y ZXNvdXJjZXMgPSBzY21pX3JlbGlucXVpc2hfcmVzb3VyY2VzLA0KPj4gKyAgICAuaGFuZGxlX2Nh bGwgPSBzY21pX2hhbmRsZV9jYWxsLA0KPj4gKyAgICAuZG9tMF9kdF9oYW5kbGVfbm9kZSA9IHNj bWlfZHRfaGFuZGxlX25vZGUsDQo+PiArICAgIC5kb20wX2R0X2ZpbmFsaXplID0gc2NtaV9kdF9m aW5hbGl6ZSwNCj4+ICsgICAgLmRvbWFpbl9zYW5pdGlzZV9jb25maWcgPSBzY21pX2RvbWFpbl9z YW5pdGlzZV9jb25maWcsDQo+PiArICAgIC5hc3NpZ25fZHRfZGV2aWNlID0gc2NtaV9kdF9hc3Np Z25fZGV2aWNlLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCBfX2luaXQgc2NtaV9jaGVj a19zbWNjY192ZXIodm9pZCkNCj4+ICt7DQo+PiArICAgIGlmICggc21jY2NfdmVyIDwgQVJNX1NN Q0NDX1ZFUlNJT05fMV8xICkNCj4+ICsgICAgew0KPj4gKyAgICAgICAgcHJpbnRrKFhFTkxPR19X QVJOSU5HDQo+PiArICAgICAgICAgICAgICAgInNjbWk6IE5vIFNNQ0NDIDEuMSBzdXBwb3J0LCBT Q01JIGNhbGxzIGZvcndhcmRpbmcgZGlzYWJsZWRcbiIpOw0KPj4gKyAgICAgICAgcmV0dXJuIC1F Tk9TWVM7DQo+PiArICAgIH0NCj4+ICsNCj4+ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0K Pj4gK3N0YXRpYyBfX2luaXQgaW50IHNjbWlfcHJvYmUoc3RydWN0IGR0X2RldmljZV9ub2RlICpz Y21pX25vZGUsIGNvbnN0IHZvaWQgKmRhdGEpDQo+PiArew0KPj4gKyAgICB1NjQgYWRkciwgc2l6 ZTsNCj4+ICsgICAgaW50IHJldCwgaTsNCj4+ICsgICAgc3RydWN0IHNjbWlfY2hhbm5lbCAqY2hh bm5lbCwgKmFnZW50X2NoYW5uZWw7DQo+PiArICAgIGludCBuX2FnZW50czsNCj4+ICsgICAgc2Nt aV9tc2dfaGVhZGVyX3QgaGRyOw0KPj4gKyAgICBzdHJ1Y3Qgc2NtaV9tc2dfYmFzZV9hdHRyaWJ1 dGVzX3AyYSByeDsNCj4+ICsNCj4+ICsgICAgQVNTRVJUKHNjbWlfbm9kZSAhPSBOVUxMKTsNCj4+ ICsNCj4+ICsgICAgSU5JVF9MSVNUX0hFQUQoJnNjbWlfZGF0YS5jaGFubmVsX2xpc3QpOw0KPj4g KyAgICBzcGluX2xvY2tfaW5pdCgmc2NtaV9kYXRhLmNoYW5uZWxfbGlzdF9sb2NrKTsNCj4+ICsN Cj4+ICsgICAgaWYgKCAhYWNwaV9kaXNhYmxlZCApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHBy aW50ayhYRU5MT0dfV0FSTklORyAic2NtaTogaXMgbm90IHN1cHBvcnRlZCB3aGVuIHVzaW5nIEFD UElcbiIpOw0KPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIH0NCj4+ICsNCj4+ ICsgICAgcmV0ID0gc2NtaV9jaGVja19zbWNjY192ZXIoKTsNCj4+ICsgICAgaWYgKCByZXQgKQ0K Pj4gKyAgICAgICAgcmV0dXJuIHJldDsNCj4+ICsNCj4+ICsgICAgaWYgKCAhZHRfcHJvcGVydHlf cmVhZF91MzIoc2NtaV9ub2RlLCAiYXJtLHNtYy1pZCIsICZzY21pX2RhdGEuZnVuY19pZCkgKQ0K Pj4gKyAgICB7DQo+PiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAic2NtaTogdW5hYmxlIHRv IHJlYWQgc21jLWlkIGZyb20gRFRcbiIpOw0KPj4gKyAgICAgICAgcmV0dXJuIC1FTk9FTlQ7DQo+ PiArICAgIH0NCj4+ICsNCj4+ICsgICAgLyogc2F2ZSBzaG1lbSBwaGFuZGxlIGFuZCByZS11c2Ug aXQgZnJvIERvbTAgRFQgc2htZW0gbm9kZSAqLw0KPj4gKyAgICBpZiAoICFkdF9wcm9wZXJ0eV9y ZWFkX3UzMihzY21pX25vZGUsICJzaG1lbSIsICZzY21pX2RhdGEuc2htZW1fcGhhbmRsZSkgKQ0K Pj4gKyAgICB7DQo+PiArICAgICAgICBwcmludGsoWEVOTE9HX0VSUiAic2NtaTogdW5hYmxlIHRv IHJlYWQgc2htZW0gcGhhbmRsZSBmcm9tIERUXG4iKTsNCj4+ICsgICAgICAgIHJldHVybiAtRU5P RU5UOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHJldCA9IHNjbWlfZHRfcmVhZF9oeXBfY2hh bm5lbF9hZGRyKHNjbWlfbm9kZSwgJmFkZHIsICZzaXplKTsNCj4+ICsgICAgaWYgKCBJU19FUlJf VkFMVUUocmV0KSApDQo+PiArICAgICAgICByZXR1cm4gLUVOT0VOVDsNCj4+ICsNCj4+ICsgICAg aWYgKCAhSVNfQUxJR05FRChzaXplLCBTQ01JX1NITUVNX01BUFBFRF9TSVpFKSApDQo+PiArICAg IHsNCj4+ICsgICAgICAgIHByaW50ayhYRU5MT0dfRVJSICJzY21pOiBzaG1lbSBtZW1vcnkgaXMg bm90IGFsaWduZWRcbiIpOw0KPj4gKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7DQo+PiArICAgIH0N Cj4+ICsNCj4+ICsgICAgc2NtaV9kYXRhLmR0X2RldiA9IHNjbWlfbm9kZTsNCj4+ICsNCj4+ICsg ICAgY2hhbm5lbCA9IHNtY19jcmVhdGVfY2hhbm5lbChIWVBfQ0hBTk5FTCwgc2NtaV9kYXRhLmZ1 bmNfaWQsIGFkZHIpOw0KPj4gKyAgICBpZiAoIElTX0VSUihjaGFubmVsKSApDQo+PiArICAgICAg ICBnb3RvIG91dDsNCj4+ICsNCj4+ICsgICAgcmV0ID0gbWFwX2NoYW5uZWxfbWVtb3J5KGNoYW5u ZWwpOw0KPj4gKyAgICBpZiAoIHJldCApDQo+PiArICAgICAgICBnb3RvIG91dDsNCj4+ICsNCj4+ ICsgICAgY2hhbm5lbC0+ZG9tYWluX2lkID0gRE9NSURfWEVOOw0KPj4gKw0KPj4gKyAgICBoZHIu aWQgPSBTQ01JX0JBU0VfUFJPVE9DT0xfQVRUSUJVVEVTOw0KPj4gKyAgICBoZHIudHlwZSA9IDA7 DQo+PiArICAgIGhkci5wcm90b2NvbCA9IFNDTUlfQkFTRV9QUk9UT0NPTDsNCj4+ICsNCj4+ICsg ICAgcmV0ID0gZG9fc21jX3hmZXIoY2hhbm5lbCwgJmhkciwgTlVMTCwgMCwgJnJ4LCBzaXplb2Yo cngpKTsNCj4+ICsgICAgaWYgKCByZXQgKQ0KPj4gKyAgICAgICAgZ290byBlcnJvcjsNCj4+ICsN Cj4+ICsgICAgbl9hZ2VudHMgPSBTQ01JX0ZJRUxEX0dFVChTQ01JX0JBU0VfQVRUUl9OVU1fQUdF TlQsIHJ4LmF0dHJpYnV0ZXMpOw0KPj4gKyAgICBwcmludGsoWEVOTE9HX0RFQlVHICJzY21pOiBH b3QgYWdlbnQgY291bnQgJWRcbiIsIG5fYWdlbnRzKTsNCj4+ICsNCj4+ICsgICAgcmV0ID0gY29s bGVjdF9hZ2VudHMoc2NtaV9ub2RlKTsNCj4+ICsgICAgaWYgKCByZXQgKQ0KPj4gKyAgICAgICAg Z290byBlcnJvcjsNCj4+ICsNCj4+ICsgICAgaSA9IDE7DQo+PiArDQo+PiArICAgIGxpc3RfZm9y X2VhY2hfZW50cnkoYWdlbnRfY2hhbm5lbCwgJnNjbWlfZGF0YS5jaGFubmVsX2xpc3QsIGxpc3Qp DQo+PiArICAgIHsNCj4+ICsgICAgICAgIHN0cnVjdCBzY21pX21zZ19iYXNlX2Rpc2NvdmVyX2Fn ZW50X3AyYSBkYV9yeDsNCj4+ICsgICAgICAgIHN0cnVjdCBzY21pX21zZ19iYXNlX2Rpc2NvdmVy X2FnZW50X2EycCBkYV90eDsNCj4+ICsNCj4+ICsgICAgICAgIHJldCA9IG1hcF9jaGFubmVsX21l bW9yeShhZ2VudF9jaGFubmVsKTsNCj4+ICsgICAgICAgIGlmICggcmV0ICkNCj4+ICsgICAgICAg ICAgICBnb3RvIGVycm9yOw0KPj4gKw0KPj4gKyAgICAgICAgaGRyLmlkID0gU0NNSV9CQVNFX0RJ U0NPVkVSX0FHRU5UOw0KPj4gKyAgICAgICAgaGRyLnR5cGUgPSAwOw0KPj4gKyAgICAgICAgaGRy LnByb3RvY29sID0gU0NNSV9CQVNFX1BST1RPQ09MOw0KPj4gKw0KPj4gKyAgICAgICAgZGFfdHgu YWdlbnRfaWQgPSBhZ2VudF9jaGFubmVsLT5hZ2VudF9pZDsNCj4+ICsNCj4+ICsgICAgICAgIHJl dCA9IGRvX3NtY194ZmVyKGFnZW50X2NoYW5uZWwsICZoZHIsICZkYV90eCwgc2l6ZW9mKGRhX3R4 KSwgJmRhX3J4LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGRhX3J4KSk7 DQo+PiArICAgICAgICBpZiAoIGFnZW50X2NoYW5uZWwtPmRvbWFpbl9pZCAhPSBET01JRF9YRU4g KQ0KPj4gKyAgICAgICAgICAgIHVubWFwX2NoYW5uZWxfbWVtb3J5KGFnZW50X2NoYW5uZWwpOw0K Pj4gKyAgICAgICAgaWYgKCByZXQgKQ0KPj4gKyAgICAgICAgICAgIGdvdG8gZXJyb3I7DQo+PiAr DQo+PiArICAgICAgICBwcmludGsoWEVOTE9HX0RFQlVHICJpZD0weCV4IG5hbWU9JXNcbiIsIGRh X3J4LmFnZW50X2lkLCBkYV9yeC5uYW1lKTsNCj4+ICsNCj4+ICsgICAgICAgIGFnZW50X2NoYW5u ZWwtPmFnZW50X2lkID0gZGFfcnguYWdlbnRfaWQ7DQo+IEl0IGlzIE9LIHRvIHNldCBhZ2VudF9j aGFubmVsLT5hZ2VudF9pZCB0byB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhlDQo+IFNDTUkgc2Vy dmVyLCBidXQgaWYgd2UgYXJlIGFsc28gdGFraW5nIHRoZSBhZ2VudF9jaGFubmVsLT5hZ2VudF9p ZCB2YWx1ZQ0KPiBmcm9tIHRoZSB1c2VyIHZpYSBkZXZpY2UgdHJlZSwgc2hvdWxkbid0IHdlIHRo cm93IGFuIGVycm9yIGlmIHRoZXJlIGlzIGENCj4gbWlzbWF0Y2g/DQo+DQo+IE9yIGV2ZW4gYmV0 dGVyOiBjYW4gd2UgYXZvaWQgdGFraW5nIHRoZSB2YWx1ZSB2aWEgZGV2aWNlIHRyZWUgdG8gbWFr ZSBpdA0KPiBlYXNpZXIgdG8gY29uZmlndXJlPw0KPg0KSSBwbGFuIHRvIGRyb3AgdGhlIGxhc3Qg bGluZSwgYXMgdGhlcmXigJlzIG5vIG5lZWQgdG8gb3ZlcndyaXRlIGFnZW50X2lkLg0KDQpIb3dl dmVyLCB3ZSBjYW5ub3QgYXZvaWQgb2J0YWluaW5nIGFnZW50X2lkIGZyb20gdGhlIGRldmljZSB0 cmVlIGJlY2F1c2UsDQoNCmFjY29yZGluZyB0byBzZWN0aW9uIDQuMi4yLjkgWzBdLCBhbiBhZ2Vu dCBjYW4gb25seSBiZSBkaXNjb3ZlcmVkIGJ5IGl0cw0KYWdlbnRfaWQgaW4NCg0KYSBwcml2aWxl Z2VkIGRvbWFpbi4gQWx0ZXJuYXRpdmVseSwgZWFjaCBhZ2VudCBjYW4gb2J0YWluIGl0cyBvd24g SUQgYnkNCnByb3ZpZGluZw0KDQoweEZGRkZGRkZGIGFzIGFnZW50X2lkIGFuZCB1c2luZyBpdHMg b3duIGNoYW5uZWwuDQoNClswXSBERU4wMDU2RSBieSBBUk0NCg0KPj4gKyAgICAgICAgaWYgKCBp ID4gbl9hZ2VudHMgKQ0KPj4gKyAgICAgICAgICAgIGJyZWFrOw0KPj4gKw0KPj4gKyAgICAgICAg aSsrOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICAgIHJldCA9IHNjaV9yZWdpc3Rlcigmc2NtaV9v cHMpOw0KPj4gKyAgICBpZiAoIHJldCApDQo+PiArICAgIHsNCj4+ICsgICAgICAgIHByaW50ayhY RU5MT0dfRVJSICJTQ01JOiBtZWRpYXRvciBhbHJlYWR5IHJlZ2lzdGVyZWQgKHJldCA9ICVkKVxu IiwNCj4+ICsgICAgICAgICAgICAgICByZXQpOw0KPj4gKyAgICAgICAgcmV0dXJuIHJldDsNCj4+ ICsgICAgfQ0KPj4gKw0KPj4gKyAgICBzY21pX2RhdGEuaW5pdGlhbGl6ZWQgPSB0cnVlOw0KPj4g KyAgICBnb3RvIG91dDsNCj4+ICsNCj4+ICtlcnJvcjoNCj4+ICsgICAgdW5tYXBfY2hhbm5lbF9t ZW1vcnkoY2hhbm5lbCk7DQo+PiArICAgIGZyZWVfY2hhbm5lbF9saXN0KCk7DQo+PiArb3V0Og0K Pj4gKyAgICByZXR1cm4gcmV0Ow0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGR0X2RldmljZV9tYXRjaCBzY21pX3NtY19tYXRjaFtdIF9faW5pdGNvbnN0ID0gew0KPj4gKyAg ICBEVF9NQVRDSF9DT01QQVRJQkxFKCJhcm0sc2NtaS1zbWMiKSwNCj4+ICsgICAgeyAvKiBzZW50 aW5lbCAqLyB9LA0KPj4gK307DQo+PiArDQo+PiArRFRfREVWSUNFX1NUQVJUKHNjbWlfc21jX21h LCAiU0NNSSBTTUMgTUVESUFUT1IiLCBERVZJQ0VfRklSTVdBUkUpDQo+PiArICAgICAgICAuZHRf bWF0Y2ggPSBzY21pX3NtY19tYXRjaCwNCj4+ICsgICAgICAgIC5pbml0ID0gc2NtaV9wcm9iZSwN Cj4+ICtEVF9ERVZJQ0VfRU5EDQo+PiArDQo+PiArLyoNCj4+ICsgKiBMb2NhbCB2YXJpYWJsZXM6 DQo+PiArICogbW9kZTogQw0KPj4gKyAqIGMtZmlsZS1zdHlsZTogIkJTRCINCj4+ICsgKiBjLWJh c2ljLW9mZnNldDogNA0KPj4gKyAqIHRhYi13aWR0aDogNA0KPj4gKyAqIGluZGVudC10YWJzLW1v ZGU6IG5pbA0KPj4gKyAqIEVuZDoNCj4+ICsgKi8NCj4+IGRpZmYgLS1naXQgYS94ZW4vaW5jbHVk ZS9wdWJsaWMvYXJjaC1hcm0uaCBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5oDQo+PiBp bmRleCAwOTViMWEyM2UzLi4zMGU0NmRlNmQ3IDEwMDY0NA0KPj4gLS0tIGEveGVuL2luY2x1ZGUv cHVibGljL2FyY2gtYXJtLmgNCj4+ICsrKyBiL3hlbi9pbmNsdWRlL3B1YmxpYy9hcmNoLWFybS5o DQo+PiBAQCAtMzI5LDYgKzMyOSw3IEBAIERFRklORV9YRU5fR1VFU1RfSEFORExFKHZjcHVfZ3Vl c3RfY29udGV4dF90KTsNCj4+DQo+PiAgICNkZWZpbmUgWEVOX0RPTUNUTF9DT05GSUdfQVJNX1ND SV9OT05FICAgICAgMA0KPj4gICAjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NN SV9TTUMgIDENCj4+ICsjZGVmaW5lIFhFTl9ET01DVExfQ09ORklHX0FSTV9TQ0lfU0NNSV9TTUNf TUEgIDINCj4+DQo+PiAgIHN0cnVjdCB4ZW5fYXJjaF9kb21haW5jb25maWcgew0KPj4gICAgICAg LyogSU4vT1VUICovDQo+PiBAQCAtMzU1LDYgKzM1Niw4IEBAIHN0cnVjdCB4ZW5fYXJjaF9kb21h aW5jb25maWcgew0KPj4gICAgICAgdWludDMyX3QgY2xvY2tfZnJlcXVlbmN5Ow0KPj4gICAgICAg LyogSU4gKi8NCj4+ICAgICAgIHVpbnQ4X3QgYXJtX3NjaV90eXBlOw0KPj4gKyAgICAvKiBJTiAq Lw0KPj4gKyAgICB1aW50OF90IGFybV9zY2lfYWdlbnRfaWQ7DQo+PiAgIH07DQo+PiAgICNlbmRp ZiAvKiBfX1hFTl9fIHx8IF9fWEVOX1RPT0xTX18gKi8NCj4+DQo+PiAtLQ0KPj4gMi4zNC4xDQo+ Pg0K