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 phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 07855D62057 for ; Tue, 19 Nov 2024 09:35:27 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 847268952D; Tue, 19 Nov 2024 10:35:26 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=phytec.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=phytecmesstechnikgmbh.onmicrosoft.com header.i=@phytecmesstechnikgmbh.onmicrosoft.com header.b="EL3MLQin"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id E073E8952D; Tue, 19 Nov 2024 10:35:24 +0100 (CET) Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02on20726.outbound.protection.outlook.com [IPv6:2a01:111:f403:2608::726]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id 2CD3C8931D for ; Tue, 19 Nov 2024 10:35:22 +0100 (CET) Authentication-Results: phobos.denx.de; dmarc=none (p=none dis=none) header.from=phytec.de Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=C.Stoidner@phytec.de ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=AoSibkRmRbv5qCIrXwgzW2ITg5f/rG/BWz+CTORhis9XYMTHlkLC10gnnhLEwRhHML4/Mf9BOSipYBpeuIsBQEVPSo52nFUA87RiqQZABaE69nq+LhtPDMC+NI+nWobQr25dbdXXykZyCUIju0fBDg1IXQ+TlxLz2vwpb7IJnjNEyQqAFTdO3EH71MH+PihHTrTzxBGQe6ojv7eB7rQdbFJCv/iLD/3nxaaMmqIyTrNYdbLm7oyT9TAETG5gEBqaHn6js6uE1fmNg/fSgbvaXQl+42Vx/ElMTUMSSIN51kOOdQMNPlnfPTP6mfSPqMamBLZtvvcx/lEVeIRt/tUqxw== 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=NmF2bKPhVJDFdhkiU2tc8iO3UQX1qCylBABK5EDG12c=; b=oUayuqeqsGt572ICUWr3pfxTdA11TLFbxzSoyqjemmy/bgPOt8qtuZM+6UZKumOUdVuP7lcw/TLdEmEIwjeZbvtwOIjoY0Ow2t1EVwIoOQhinmvGFMCM5skuhLwVxIwcdHEdWOErSx/T8mY3YZkccOKniHBl4n2hDDO6IoXlLLwvV+4/W5PbSADiOvOmfaNKZoNmDADJ6oGPV9VVd4QLAkl2bcLgmdyew+M4ZGrWRsDPJ2/G/13ANKTlUxTf5mfq6GAshxOCODIBCKXwxd/08FhE1SY0YjkJYegm950G0SL8vslfghIlNaHYA7CwFiFDY6mczZXwPlBlJZr6COMS2A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=softfail (sender ip is 91.26.50.189) smtp.rcpttodomain=lists.denx.de smtp.mailfrom=phytec.de; dmarc=none action=none header.from=phytec.de; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=phytecmesstechnikgmbh.onmicrosoft.com; s=selector1-phytecmesstechnikgmbh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=NmF2bKPhVJDFdhkiU2tc8iO3UQX1qCylBABK5EDG12c=; b=EL3MLQin2U2XeD7gLLOivwxEH5bIsy7KRouB61XX80pBD9QiSc+84lw5y44YNvfoYBhXpOK9MEZ1e748wzK/d3VOR/5bjdYUCVJemM0anwJ4Id0hOQBg4lzrqidyLtJBfRTw4JjubtfiExh08JhH3JU5dM8iuKiBQCcwLl6ypA0= Received: from AS9PR05CA0189.eurprd05.prod.outlook.com (2603:10a6:20b:495::9) by PRAP195MB1458.EURP195.PROD.OUTLOOK.COM (2603:10a6:102:29f::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.22; Tue, 19 Nov 2024 09:35:19 +0000 Received: from AM1PEPF000252DB.eurprd07.prod.outlook.com (2603:10a6:20b:495:cafe::c6) by AS9PR05CA0189.outlook.office365.com (2603:10a6:20b:495::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8158.24 via Frontend Transport; Tue, 19 Nov 2024 09:35:19 +0000 X-MS-Exchange-Authentication-Results: spf=softfail (sender IP is 91.26.50.189) smtp.mailfrom=phytec.de; dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=phytec.de; Received-SPF: SoftFail (protection.outlook.com: domain of transitioning phytec.de discourages use of 91.26.50.189 as permitted sender) Received: from Diagnostix.phytec.de (91.26.50.189) by AM1PEPF000252DB.mail.protection.outlook.com (10.167.16.53) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.8158.14 via Frontend Transport; Tue, 19 Nov 2024 09:35:19 +0000 Received: from Florix.phytec.de (172.25.0.13) by Diagnostix.phytec.de (172.25.0.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.6; Tue, 19 Nov 2024 10:35:19 +0100 Received: from Florix.phytec.de ([fe80::a802:84f9:c56c:4c6d]) by florix.phytec.de ([fe80::a802:84f9:c56c:4c6d%5]) with mapi id 15.01.2507.006; Tue, 19 Nov 2024 10:35:19 +0100 From: Christoph Stoidner To: PHYTEC Upstream , "u-boot@lists.denx.de" , Primoz Fiser CC: "uboot-imx@nxp.com" Subject: Re: [PATCH v2 2/3] board: phytec: imx93: Add eeprom-based hardware introspection Thread-Topic: [PATCH v2 2/3] board: phytec: imx93: Add eeprom-based hardware introspection Thread-Index: AQHbNeU4q5bCcuoD+UGXrAKl1foggLK2ZGkAgAfruQA= Date: Tue, 19 Nov 2024 09:35:19 +0000 Message-ID: <0aed5cea12faa44bca108d41f8cdcb9bb0379415.camel@phytec.de> References: <20241113160037.65679-1-c.stoidner@phytec.de> <20241113160037.65679-3-c.stoidner@phytec.de> In-Reply-To: Accept-Language: de-DE, en-US Content-Language: de-DE X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [172.25.0.11] Content-Type: text/plain; charset="utf-8" Content-ID: <63BF80164AF88C4994697D55E4E9312A@phytec.de> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM1PEPF000252DB:EE_|PRAP195MB1458:EE_ X-MS-Office365-Filtering-Correlation-Id: 7faa332f-1438-473e-ff2f-08dd087d7bc4 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|36860700013|1800799024|376014|82310400026; X-Microsoft-Antispam-Message-Info: =?utf-8?B?Q3E0YmExNXh3RXBGc1k4MXQ5djRvTENVNzdGTkN4c1hDNlJCZHl5emJjajBx?= =?utf-8?B?UlFxakFSSzBjdEEzY2djSVBzazE2UzNCU2MxMjNxUVUwY0V6Tk0wSlh1T3R0?= =?utf-8?B?SU9vOEJTZ0xjbFpSU0FoT2Nnd055Tm5Tc2VkYm9aN0lJNjBBczBVK2Z1K2I1?= =?utf-8?B?enlyN2FXYXNhcUttZVJsTjZGbU1BaXVnbWl6RlNkZnl3MTVxZXgva3pnd0dW?= =?utf-8?B?WDIxTDNmcW1WTFZrK0ZXdmZpUTB1cEJqVnl5ODQyQnlOSk1MVmsyN294Qkd1?= =?utf-8?B?RGdTRkh4L3Y1K0lNaGJ1bytHTGVZNUQxSWR2T2xYaklTVmxwb01ENlZBZlVi?= =?utf-8?B?WE5aL2JYMWRvcFZGUGVaclRuRkt1TUlQcDBwd285UWxrWEdsT2k0OU1qQVJO?= =?utf-8?B?QVNHTnhSQ0pYbHZaekVqcmV3clhkYm5IVHFUTUxtOEg5SkEveDRyV3U5TGRj?= =?utf-8?B?NENaQllZSkt4TDJUQTFrUDBvRHpxK3hxbnBpY0NsUVd1MXp6WTM4cXJ2WDA0?= =?utf-8?B?VEFhclZmNHRQWXI0N3U4SlFQS0ZWaDZERDF4T2lBWWxKL3RTRS93ME05cE5F?= =?utf-8?B?WW9IUmg2S01OS1B5aFV1SGNNVk5zVTFRcVVrUGJZYTN0dDNBUkJmR1FEVG95?= =?utf-8?B?RXNTT2RoQ1RHazBpUkRLRTROeEx5bUd2eEFVdVlEa3Znenl0Y3NCZmwxeGxF?= =?utf-8?B?b29JTS9QVWJ4ZmlzNUZVN3ZHTXV3d2pFSm56cmZGN1RzNFNsOVJHSUdQcVkr?= =?utf-8?B?d3V2bURzNHhmMVdrTlUrZTJhT2s3YjdHMXFWWFh6NmFJYklLTTA2VUEwMlB2?= =?utf-8?B?U0hZb05aMi9mU29SWEpPbmVEdWl4UWVwWDNReTNWRkVmVEF0KzFiekhCN1Zr?= =?utf-8?B?dy9oRzROUVE2ZktOUUFmSml3ZTVZZiswMVozQ0lzQmhRZStNc296dEZGcHdH?= =?utf-8?B?OGc1VEMwMG56RTRnOWl6Yzg0QjlHZHNrSGM3SW92NmdzZUltUWJJb2ZiWVBj?= =?utf-8?B?Z1dpTUh3ODFhR1JhVWx4OStYYWFrUFdyU0d5YkFKK1dCKy96RGxPUEdNenJB?= =?utf-8?B?bUFVU1gzWmVXQ0JXaHd2ZWpmK1h2OWxFeWJ4QlhlODZaUFVHUHlEN2hqU0pN?= =?utf-8?B?ZGxFZjl6cXBsNStHUDhtL2xTcTc0VWJTcms1eUsxUEpwTTFFTEppY2tRblBQ?= =?utf-8?B?NFpIQ0lRNGpsL2dFUjJBRFJOOUZ2N2ZnQTYyZmJMbUd1cnFSRExFOHZNclN0?= =?utf-8?B?MGc1bGtTWmlpUHVBZEdkaUZxdFVIR29tNmdRWXNwK3Z5R2VUYVduZnJoQ3N1?= =?utf-8?B?RGkxNjIzc01MazI2QmtadXNabGtEam1sV2k3cXcyQnJ6bVl4bkIyU2F6WVRQ?= =?utf-8?B?emR3SVVlUmRsRzd0WTAzMEYvTDRLV3RqMUwwUzByeGF3NTJVbUcrSmZFOXlm?= =?utf-8?B?eEpzaHRsRVJNVlQvdTRpOG01YTcrSzRBSW5yWlRROWdZL3V5WmRjQ1c5UWFz?= =?utf-8?B?NTBualNoelNNZlVKY2R6V1JFUHhBczNKdHZFckZrZUFNQmxVYzhtaVJ3OGZH?= =?utf-8?B?NnJFaHFyZmgxYjhTWFdlUmkrdkJlTXg4WmM4TE1TNmN4YVg1N1JtSjhCOWdR?= =?utf-8?B?ekordzBxTzJmQkxmeGg1R1k3ZU93VVAxK3RJL1gycTlXQ0NSTklxd1h6SVZG?= =?utf-8?B?ajNyaTFuL2pURlcreWJsWFlKdzNrSUZjbitYZjNIZlpvT1M0YkMxWkpvNWpk?= =?utf-8?B?YVZnNVM4WmliUlVFRWRUSE1sdG5ZcEpZUlFtemc2RkpWNUF4K1F0YnhqUEd2?= =?utf-8?Q?R2OP6VchIm4b7a6cUxBthha380xRtqLIROxSk=3D?= X-Forefront-Antispam-Report: CIP:91.26.50.189; CTRY:DE; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:Diagnostix.phytec.de; PTR:InfoDomainNonexistent; CAT:NONE; SFS:(13230040)(36860700013)(1800799024)(376014)(82310400026); DIR:OUT; SFP:1102; X-OriginatorOrg: phytec.de X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Nov 2024 09:35:19.6294 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 7faa332f-1438-473e-ff2f-08dd087d7bc4 X-MS-Exchange-CrossTenant-Id: e609157c-80e2-446d-9be3-9c99c2399d29 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=e609157c-80e2-446d-9be3-9c99c2399d29; Ip=[91.26.50.189]; Helo=[Diagnostix.phytec.de] X-MS-Exchange-CrossTenant-AuthSource: AM1PEPF000252DB.eurprd07.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PRAP195MB1458 X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.8 at phobos.denx.de X-Virus-Status: Clean T24gRG8sIDIwMjQtMTEtMTQgYXQgMDk6MzcgKzAxMDAsIFByaW1veiBGaXNlciB3cm90ZToKPiBI aSBDaHJpc3RvcGgsCj4gCj4gT24gMTMuIDExLiAyNCAxNzowMCwgQ2hyaXN0b3BoIFN0b2lkbmVy IHdyb3RlOgo+ID4gVGhlIHBoeUNPUkUtaS5NWCA5MyBpcyBhdmFpbGFibGUgaW4gdmFyaW91cyB2 YXJpYW50cy4gUmVsZXZhbnQKPiA+IHZhcmlhbnQKPiA+IG9wdGlvbnMgZm9yIHRoZSBzcGwvdS1i b290IGFyZToKPiA+IC0gd2l0aCBvciB3aXRob3V0IEhTNDAwIHN1cHBvcnQgZm9yIHRoZSBlTU1D Cj4gPiAtIHdpdGggMUdCIHJhbSBjaGlwLCBvciAyR0IgcmFtIGNoaXAKPiA+IAo+ID4gVGhlIHBo eUNPUkUncyBlZXByb20gY29udGFpbnMgYWxsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBleGlzdGlu Zwo+ID4gdmFyaWFudAo+ID4gb3B0aW9ucy4gQWRkIGV2YWx1YXRpb24gb2YgdGhlIGVlcHJvbSBk YXRhIHRvIHRoZSBzcGwvdS1ib290IHRvCj4gPiBlbmFibGUvZGlzYWJsZSBIUzQwMCBhbmQgdG8g c2VsZWN0IHRoZSBhcHByb3ByaWF0ZSByYW0KPiA+IGNvbmZpZ3VyYXRpb24gYXQKPiA+IHN0YXJ0 dXAuCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IENocmlzdG9waCBTdG9pZG5lciA8Yy5zdG9pZG5l ckBwaHl0ZWMuZGU+Cj4gPiAtLS0KPiA+IENjOiBNYXRoaWV1IE90aGFjZWhlIDxtLm90aGFjZWhl QGdtYWlsLmNvbT4KPiA+IENjOiBDaHJpc3RvcGggU3RvaWRuZXIgPGMuc3RvaWRuZXJAcGh5dGVj LmRlPgo+ID4gQ2M6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgo+ID4gQ2M6IEZhYmlv IEVzdGV2YW0gPGZlc3RldmFtQGdtYWlsLmNvbT4KPiA+IENjOiAiTlhQIGkuTVggVS1Cb290IFRl YW0iIDx1Ym9vdC1pbXhAbnhwLmNvbT4KPiA+IENjOiBUb20gUmluaSA8dHJpbmlAa29uc3Vsa28u Y29tPgo+ID4gQ2M6IFlhbm5pYyBNb29nIDx5Lm1vb2dAcGh5dGVjLmRlPgo+ID4gQ2M6IFByaW1v eiBGaXNlciA8cHJpbW96LmZpc2VyQG5vcmlrLmNvbT4KPiA+IENjOiBBbmRyZWogUGljZWogPGFu ZHJlai5waWNlakBub3Jpay5jb20+Cj4gPiBDYzogV2FkaW0gRWdvcm92IDx3LmVnb3JvdkBwaHl0 ZWMuZGU+Cj4gPiAtLS0KPiA+IENoYW5nZXMgaW4gdjI6Cj4gPiAtIGVuY2Fwc3VsYXRlIGhhbmRs aW5nIG9mIGZlYXR1cmUgZmxhZyBWT0xUQUdFIGludG8gb3duIGZ1bmN0aW9uCj4gPiAtIG1vdmUg ZGVmaW5pdGlvbiBvZiBlbnVtIHBoeXRlY19pbXg5M19kZHJfZWVwcm9tX2NvZGUgaW50byBoZWFk ZXIKPiA+IGZpbGUKPiA+IAo+ID4gwqBhcmNoL2FybS9kdHMvaW14OTMtcGh5Ym9hcmQtc2VnaW4t dS1ib290LmR0c2kgfMKgIDE5ICsrKwo+ID4gwqBhcmNoL2FybS9tYWNoLWlteC9pbXg5L0tjb25m aWfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMiArCj4gPiDCoGFyY2gvYXJt L21hY2gtaW14L2lteDkvc29jLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgIDIgKy0KPiA+IMKgYm9hcmQvcGh5dGVjL2NvbW1vbi9LY29uZmlnwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDggKysKPiA+IMKgYm9hcmQvcGh5dGVjL2NvbW1v bi9NYWtlZmlsZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgMSArCj4g PiDCoGJvYXJkL3BoeXRlYy9jb21tb24vaW14OTNfc29tX2RldGVjdGlvbi5jwqDCoMKgwqAgfCAx MTEKPiA+ICsrKysrKysrKysrKysrKysrKwo+ID4gwqBib2FyZC9waHl0ZWMvY29tbW9uL2lteDkz X3NvbV9kZXRlY3Rpb24uaMKgwqDCoMKgIHzCoCA1MSArKysrKysrKwo+ID4gwqBib2FyZC9waHl0 ZWMvcGh5Y29yZV9pbXg5My9LY29uZmlnwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgMjggKysr KysKPiA+IMKgYm9hcmQvcGh5dGVjL3BoeWNvcmVfaW14OTMvTUFJTlRBSU5FUlPCoMKgwqDCoMKg wqDCoCB8wqDCoCA1ICstCj4gPiDCoGJvYXJkL3BoeXRlYy9waHljb3JlX2lteDkzL3BoeWNvcmUt aW14OTMuY8KgwqDCoCB8wqAgNTEgKysrKysrKysKPiA+IMKgYm9hcmQvcGh5dGVjL3BoeWNvcmVf aW14OTMvc3BsLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgNDggKysrKysrKysKPiA+ IMKgMTEgZmlsZXMgY2hhbmdlZCwgMzI0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCj4g PiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBib2FyZC9waHl0ZWMvY29tbW9uL2lteDkzX3NvbV9kZXRl Y3Rpb24uYwo+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgYm9hcmQvcGh5dGVjL2NvbW1vbi9pbXg5 M19zb21fZGV0ZWN0aW9uLmgKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2R0cy9pbXg5 My1waHlib2FyZC1zZWdpbi11LWJvb3QuZHRzaQo+ID4gYi9hcmNoL2FybS9kdHMvaW14OTMtcGh5 Ym9hcmQtc2VnaW4tdS1ib290LmR0c2kKPiA+IGluZGV4IDY4OTdjOTFmNGQuLjI1Yzc3OGJiMDcg MTAwNjQ0Cj4gPiAtLS0gYS9hcmNoL2FybS9kdHMvaW14OTMtcGh5Ym9hcmQtc2VnaW4tdS1ib290 LmR0c2kKPiA+ICsrKyBiL2FyY2gvYXJtL2R0cy9pbXg5My1waHlib2FyZC1zZWdpbi11LWJvb3Qu ZHRzaQo+ID4gQEAgLTMwNSw0ICszMDUsMjMgQEAKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH07Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH07Cj4gPiDCoMKgwqDCoMKgwqDCoMKgfTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDC oGVlcHJvbUA1MCB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm9vdHBoLXBy ZS1yYW07Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgYm9vdHBoLXNvbWUtcmFt Owo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbXBhdGlibGUgPSAiYXRtZWws MjRjMzIiOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZyA9IDwweDUwPjsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBwYWdlc2l6ZSA9IDwzMj47Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdmNjLXN1cHBseSA9IDwmYnVjazQ+Owo+ID4g K8KgwqDCoMKgwqDCoMKgfTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGVlcHJvbWlkQDU4IHsK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBib290cGgtcHJlLXJhbTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBib290cGgtc29tZS1yYW07Cj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29tcGF0aWJsZSA9ICJhdG1lbCwyNGMzMiI7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcGFnZXNpemUgPSA8MzI+Owo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlZyA9IDwweDU4PjsKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzaXplID0gPDMyPjsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqB2Y2Mtc3VwcGx5ID0gPCZidWNrND47Cj4gPiArwqDCoMKgwqDCoMKgwqB9Owo+ID4g wqB9Owo+ID4gZGlmZiAtLWdpdCBhL2FyY2gvYXJtL21hY2gtaW14L2lteDkvS2NvbmZpZyBiL2Fy Y2gvYXJtL21hY2gtCj4gPiBpbXgvaW14OS9LY29uZmlnCj4gPiBpbmRleCA1YzEwNTQxMzhmLi4y NDY1ZTMxZDczIDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9hcm0vbWFjaC1pbXgvaW14OS9LY29uZmln Cj4gPiArKysgYi9hcmNoL2FybS9tYWNoLWlteC9pbXg5L0tjb25maWcKPiA+IEBAIC00NSw2ICs0 NSw4IEBAIGNvbmZpZyBUQVJHRVRfUEhZQ09SRV9JTVg5Mwo+ID4gwqDCoMKgwqDCoMKgwqDCoGJv b2wgInBoeWNvcmVfaW14OTMiCj4gPiDCoMKgwqDCoMKgwqDCoMKgc2VsZWN0IElNWDkzCj4gPiDC oMKgwqDCoMKgwqDCoMKgc2VsZWN0IElNWDlfTFBERFI0WAo+ID4gK8KgwqDCoMKgwqDCoMKgc2Vs ZWN0IE9GX0JPQVJEX0ZJWFVQCj4gPiArwqDCoMKgwqDCoMKgwqBzZWxlY3QgT0ZfQk9BUkRfU0VU VVAKPiA+IMKgCj4gPiDCoGVuZGNob2ljZQo+ID4gwqAKPiA+IGRpZmYgLS1naXQgYS9hcmNoL2Fy bS9tYWNoLWlteC9pbXg5L3NvYy5jIGIvYXJjaC9hcm0vbWFjaC0KPiA+IGlteC9pbXg5L3NvYy5j Cj4gPiBpbmRleCA3YzI4ZmEzOWUxLi4yMzczNTRmNTA3IDEwMDY0NAo+ID4gLS0tIGEvYXJjaC9h cm0vbWFjaC1pbXgvaW14OS9zb2MuYwo+ID4gKysrIGIvYXJjaC9hcm0vbWFjaC1pbXgvaW14OS9z b2MuYwo+ID4gQEAgLTYyOCw3ICs2MjgsNyBAQCBzdGF0aWMgaW50IGxvd19kcml2ZV9mcmVxX3Vw ZGF0ZSh2b2lkICpibG9iKQo+ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gwqB9Cj4g PiDCoAo+ID4gLSNpZmRlZiBDT05GSUdfT0ZfQk9BUkRfRklYVVAKPiA+ICsjaWYgZGVmaW5lZChD T05GSUdfT0ZfQk9BUkRfRklYVVApICYmCj4gPiAhZGVmaW5lZChDT05GSUdfVEFSR0VUX1BIWUNP UkVfSU1YOTMpCj4gPiDCoCNpZm5kZWYgQ09ORklHX1hQTF9CVUlMRAo+ID4gwqBpbnQgYm9hcmRf Zml4X2ZkdCh2b2lkICpmZHQpCj4gPiDCoHsKPiA+IGRpZmYgLS1naXQgYS9ib2FyZC9waHl0ZWMv Y29tbW9uL0tjb25maWcKPiA+IGIvYm9hcmQvcGh5dGVjL2NvbW1vbi9LY29uZmlnCj4gPiBpbmRl eCBmMzk0YWNlNzg2Li5iYzU1MTE3MDdhIDEwMDY0NAo+ID4gLS0tIGEvYm9hcmQvcGh5dGVjL2Nv bW1vbi9LY29uZmlnCj4gPiArKysgYi9ib2FyZC9waHl0ZWMvY29tbW9uL0tjb25maWcKPiA+IEBA IC0xOSw2ICsxOSwxNCBAQCBjb25maWcgUEhZVEVDX0lNWDhNX1NPTV9ERVRFQ1RJT04KPiA+IMKg wqDCoMKgwqDCoMKgwqDCoCBTdXBwb3J0IG9mIEkyQyBFRVBST00gYmFzZWQgU29NIGRldGVjdGlv bi4gU3VwcG9ydGVkCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqAgZm9yIFBIWVRFQyBpLk1YOE1NL2ku TVg4TVAgYm9hcmRzCj4gPiDCoAo+ID4gK2NvbmZpZyBQSFlURUNfSU1YOTNfU09NX0RFVEVDVElP Tgo+ID4gK8KgwqDCoMKgwqDCoMKgYm9vbCAiU3VwcG9ydCBTb00gZGV0ZWN0aW9uIGZvciBpLk1Y OTMgUEhZVEVDIHBsYXRmb3JtcyIKPiA+ICvCoMKgwqDCoMKgwqDCoGRlcGVuZHMgb24gQVJDSF9J TVg5ICYmIFBIWVRFQ19TT01fREVURUNUSU9OCj4gPiArwqDCoMKgwqDCoMKgwqBkZWZhdWx0IHkK PiA+ICvCoMKgwqDCoMKgwqDCoGhlbHAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgIFN1cHBvcnQgb2Yg STJDIEVFUFJPTSBiYXNlZCBTb00gZGV0ZWN0aW9uLiBTdXBwb3J0ZWQKPiA+ICvCoMKgwqDCoMKg wqDCoMKgIGZvciBQSFlURUMgaS5NWDkzIGJhc2VkIGJvYXJkcwo+ID4gKwo+ID4gwqBjb25maWcg UEhZVEVDX0FNNjJfU09NX0RFVEVDVElPTgo+ID4gwqDCoMKgwqDCoMKgwqDCoGJvb2wgIlN1cHBv cnQgU29NIGRldGVjdGlvbiBmb3IgQU02MnggUEhZVEVDIHBsYXRmb3JtcyIKPiA+IMKgwqDCoMKg wqDCoMKgwqBkZXBlbmRzIG9uIChUQVJHRVRfUEhZQ09SRV9BTTYyWF9BNTMgfHwKPiA+IFRBUkdF VF9QSFlDT1JFX0FNNjJYX1I1KSAmJiBcCj4gPiBkaWZmIC0tZ2l0IGEvYm9hcmQvcGh5dGVjL2Nv bW1vbi9NYWtlZmlsZQo+ID4gYi9ib2FyZC9waHl0ZWMvY29tbW9uL01ha2VmaWxlCj4gPiBpbmRl eCBjZDc4Zjc2ODZmLi44MTI2ZjczNTZlIDEwMDY0NAo+ID4gLS0tIGEvYm9hcmQvcGh5dGVjL2Nv bW1vbi9NYWtlZmlsZQo+ID4gKysrIGIvYm9hcmQvcGh5dGVjL2NvbW1vbi9NYWtlZmlsZQo+ID4g QEAgLTEwLDMgKzEwLDQgQEAgZW5kaWYKPiA+IMKgb2JqLXkgKz0gcGh5dGVjX3NvbV9kZXRlY3Rp b24ubyBwaHl0ZWNfc29tX2RldGVjdGlvbl9ibG9ja3Mubwo+ID4gwqBvYmotJChDT05GSUdfQVJD SF9LMykgKz0gYW02X3NvbV9kZXRlY3Rpb24ubyBrMy8KPiA+IMKgb2JqLSQoQ09ORklHX0FSQ0hf SU1YOE0pICs9IGlteDhtX3NvbV9kZXRlY3Rpb24ubwo+ID4gK29iai0kKENPTkZJR19BUkNIX0lN WDkpICs9IGlteDkzX3NvbV9kZXRlY3Rpb24ubwo+ID4gZGlmZiAtLWdpdCBhL2JvYXJkL3BoeXRl Yy9jb21tb24vaW14OTNfc29tX2RldGVjdGlvbi5jCj4gPiBiL2JvYXJkL3BoeXRlYy9jb21tb24v aW14OTNfc29tX2RldGVjdGlvbi5jCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXgg MDAwMDAwMDAwMC4uYTI4Y2RmNmI1MQo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvYm9hcmQv cGh5dGVjL2NvbW1vbi9pbXg5M19zb21fZGV0ZWN0aW9uLmMKPiA+IEBAIC0wLDAgKzEsMTExIEBA Cj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb3ItbGF0ZXIKPiA+ICsv Kgo+ID4gKyAqIENvcHlyaWdodCAoQykgMjAyNCBQSFlURUMgTWVzc3RlY2huaWsgR21iSAo+ID4g KyAqIEF1dGhvcjogUHJpbW96IEZpc2VyIDxwcmltb3ouZmlzZXJAbm9yaWsuY29tPgo+ID4gKyAq Lwo+ID4gKwo+ID4gKyNpbmNsdWRlIDxhc20vYXJjaC9zeXNfcHJvdG8uaD4KPiA+ICsjaW5jbHVk ZSA8ZG0vZGV2aWNlLmg+Cj4gPiArI2luY2x1ZGUgPGRtL3VjbGFzcy5oPgo+ID4gKyNpbmNsdWRl IDxpMmMuaD4KPiA+ICsjaW5jbHVkZSA8dS1ib290L2NyYy5oPgo+ID4gKwo+ID4gKyNpbmNsdWRl ICJpbXg5M19zb21fZGV0ZWN0aW9uLmgiCj4gPiArCj4gPiArZXh0ZXJuIHN0cnVjdCBwaHl0ZWNf ZWVwcm9tX2RhdGEgZWVwcm9tX2RhdGE7Cj4gPiArCj4gPiArI2lmIElTX0VOQUJMRUQoQ09ORklH X1BIWVRFQ19JTVg5M19TT01fREVURUNUSU9OKQo+ID4gKwo+ID4gKy8qIENoZWNrIGlmIHRoZSBT b00gaXMgYWN0dWFsbHkgb25lIG9mIHRoZSBmb2xsb3dpbmcgcHJvZHVjdHM6Cj4gPiArICogLSBp Lk1YOTMKPiA+ICsgKgo+ID4gKyAqIFJldHVybnMgMCBpbiBjYXNlIGl0J3MgYSBrbm93biBTb00u IE90aGVyd2lzZSwgcmV0dXJucyAxLgo+ID4gKyAqLwo+ID4gK3U4IF9fbWF5YmVfdW51c2VkIHBo eXRlY19pbXg5M19kZXRlY3Qoc3RydWN0IHBoeXRlY19lZXByb21fZGF0YQo+ID4gKmRhdGEpCj4g PiArewo+ID4gK8KgwqDCoMKgwqDCoMKgdTggc29tOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKg aWYgKCFkYXRhKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEgPSAmZWVw cm9tX2RhdGE7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAvKiBFYXJseSBBUEkgcmV2aXNpb25z IGFyZSBub3Qgc3VwcG9ydGVkICovCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoIWRhdGEtPnZhbGlk IHx8IGRhdGEtPnBheWxvYWQuYXBpX3JldiA8Cj4gPiBQSFlURUNfQVBJX1JFVjIpCj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIDE7Cj4gPiArCj4gPiArwqDCoMKgwqDC oMKgwqBzb20gPSBkYXRhLT5wYXlsb2FkLmRhdGEuZGF0YV9hcGkyLnNvbV9ubzsKPiA+ICvCoMKg wqDCoMKgwqDCoGRlYnVnKCIlczogc29tIGlkOiAldVxuIiwgX19mdW5jX18sIHNvbSk7Cj4gPiAr Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoc29tID09IFBIWVRFQ19JTVg5M19TT00gJiYgaXNfaW14 OTMoKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoHByX2VycigiJXM6IFNvTSBJRCBkb2VzIG5vdCBtYXRjaC4gV3Jv bmcgRUVQUk9NIGRhdGE/XG4iLAo+ID4gX19mdW5jX18pOwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0 dXJuIDE7Cj4gPiArfQo+ID4gKwo+ID4gKy8qCj4gPiArICogRmlsdGVyIFBIWVRFQyBpLk1YOTMg U29NIG9wdGlvbnMgYnkgb3B0aW9uIGluZGV4Cj4gPiArICoKPiA+ICsgKiBSZXR1cm5zOgo+ID4g KyAqwqAgLSBvcHRpb24gdmFsdWUKPiA+ICsgKsKgIC0gUEhZVEVDX0VFUFJPTV9JTlZBTCB3aGVu IHRoZSBkYXRhIGlzIGludmFsaWQKPiA+ICsgKgo+ID4gKyAqLwo+ID4gK3U4IF9fbWF5YmVfdW51 c2VkIHBoeXRlY19pbXg5M19nZXRfb3B0KHN0cnVjdCBwaHl0ZWNfZWVwcm9tX2RhdGEKPiA+ICpk YXRhLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0KPiA+IHBoeXRlY19pbXg5M19vcHRpb25f aW5kZXggaWR4KQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoGNoYXIgKm9wdDsKPiA+ICvCoMKg wqDCoMKgwqDCoHU4IG9wdF9pZDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICghZGF0YSkK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBkYXRhID0gJmVlcHJvbV9kYXRhOwo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKCFkYXRhLT52YWxpZCB8fCBkYXRhLT5wYXlsb2Fk LmFwaV9yZXYgPAo+ID4gUEhZVEVDX0FQSV9SRVYyKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoHJldHVybiBQSFlURUNfRUVQUk9NX0lOVkFMOwo+ID4gKwo+ID4gK8KgwqDCoMKg wqDCoMKgb3B0ID0gcGh5dGVjX2dldF9vcHQoZGF0YSk7Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAo b3B0KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG9wdF9pZCA9IFBIWVRFQ19H RVRfT1BUSU9OKG9wdFtpZHhdKTsKPiA+ICvCoMKgwqDCoMKgwqDCoGVsc2UKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvcHRfaWQgPSBQSFlURUNfRUVQUk9NX0lOVkFMOwo+ID4g Kwo+ID4gK8KgwqDCoMKgwqDCoMKgZGVidWcoIiVzOiBvcHRbJWRdIGlkOiAldVxuIiwgX19mdW5j X18sIGlkeCwgb3B0X2lkKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBvcHRfaWQ7Cj4gPiAr fQo+ID4gKwo+ID4gKy8qCj4gPiArICogRmlsdGVyIFBIWVRFQyBpLk1YOTMgU29NIHZvbHRhZ2UK PiA+ICsgKgo+ID4gKyAqIFJldHVybnM6Cj4gPiArICrCoCAtIFBIWVRFQ19JTVg5M19WT0xUQUdF XzFWOCBvciBQSFlURUNfSU1YOTNfVk9MVEFHRV8zVjgKPiAKPiB0eXBvIGhlcmU6Cj4gCj4gcy9Q SFlURUNfSU1YOTNfVk9MVEFHRV8zVjgvUEhZVEVDX0lNWDkzX1ZPTFRBR0VfM1YzCj4gCj4gT3Ro ZXJ3aXNlIExHVE0uCgpJIHdpbGwgc2VuZCBhIHYzIGZvciBpdC4KClRoYW5rcwoKPiAKPiA+ICsg KsKgIC0gUEhZVEVDX0VFUFJPTV9JTlZBTCB3aGVuIHRoZSBkYXRhIGlzIGludmFsaWQKPiA+ICsg Kgo+ID4gKyAqLwo+ID4gK2VudW0gcGh5dGVjX2lteDkzX3ZvbHRhZ2UgX19tYXliZV91bnVzZWQK PiA+IHBoeXRlY19pbXg5M19nZXRfdm9sdGFnZShzdHJ1Y3QgcGh5dGVjX2VlcHJvbV9kYXRhICpk YXRhKQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKgwqDCoHU4IG9wdGlvbiA9IHBoeXRlY19pbXg5M19n ZXRfb3B0KGRhdGEsCj4gPiBQSFlURUNfSU1YOTNfT1BUX0ZFQVQpOwo+ID4gKwo+ID4gK8KgwqDC oMKgwqDCoMKgaWYgKG9wdGlvbiA9PSBQSFlURUNfRUVQUk9NX0lOVkFMKQo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHVybiBQSFlURUNfSU1YOTNfVk9MVEFHRV9JTlZBTElE Owo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIChvcHRpb24gJiAweDAxKSA/IFBIWVRFQ19JTVg5 M19WT0xUQUdFXzFWOCA6Cj4gPiBQSFlURUNfSU1YOTNfVk9MVEFHRV8zVjM7Cj4gPiArfQo+ID4g Kwo+ID4gKyNlbHNlCj4gPiArCj4gPiAraW5saW5lIHU4IF9fbWF5YmVfdW51c2VkIHBoeXRlY19p bXg5M19kZXRlY3Qoc3RydWN0Cj4gPiBwaHl0ZWNfZWVwcm9tX2RhdGEgKmRhdGEpCj4gPiArewo+ ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuIDE7Cj4gPiArfQo+ID4gKwo+ID4gK2lubGluZSB1OCBf X21heWJlX3VudXNlZCBwaHl0ZWNfaW14OTNfZ2V0X29wdChzdHJ1Y3QKPiA+IHBoeXRlY19lZXBy b21fZGF0YSAqZGF0YSwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0K PiA+IHBoeXRlY19pbXg5M19vcHRpb25faW5kZXggaWR4KQo+ID4gK3sKPiA+ICvCoMKgwqDCoMKg wqDCoHJldHVybiBQSFlURUNfRUVQUk9NX0lOVkFMOwo+ID4gK30KPiA+ICsKPiA+ICtpbmxpbmUg ZW51bSBwaHl0ZWNfaW14OTNfdm9sdGFnZSBfX21heWJlX3VudXNlZAo+ID4gcGh5dGVjX2lteDkz X2dldF92b2x0YWdlCj4gPiArwqDCoMKgwqDCoMKgwqAoc3RydWN0IHBoeXRlY19lZXByb21fZGF0 YSAqZGF0YSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm4gUEhZVEVDX0VFUFJPTV9J TlZBTDsKPiA+ICt9Cj4gPiArCj4gPiArI2VuZGlmIC8qIElTX0VOQUJMRUQoQ09ORklHX1BIWVRF Q19JTVg5M19TT01fREVURUNUSU9OKSAqLwo+ID4gZGlmZiAtLWdpdCBhL2JvYXJkL3BoeXRlYy9j b21tb24vaW14OTNfc29tX2RldGVjdGlvbi5oCj4gPiBiL2JvYXJkL3BoeXRlYy9jb21tb24vaW14 OTNfc29tX2RldGVjdGlvbi5oCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NAo+ID4gaW5kZXggMDAw MDAwMDAwMC4uNmQzZDkyODNkOAo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvYm9hcmQvcGh5 dGVjL2NvbW1vbi9pbXg5M19zb21fZGV0ZWN0aW9uLmgKPiA+IEBAIC0wLDAgKzEsNTEgQEAKPiA+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vci1sYXRlciAqLwo+ID4gKy8q Cj4gPiArICogQ29weXJpZ2h0IChDKSAyMDI0IFBIWVRFQyBNZXNzdGVjaG5payBHbWJICj4gPiAr ICogQXV0aG9yOiBQcmltb3ogRmlzZXIgPHByaW1vei5maXNlckBub3Jpay5jb20+Cj4gPiArICov Cj4gPiArCj4gPiArI2lmbmRlZiBfUEhZVEVDX0lNWDkzX1NPTV9ERVRFQ1RJT05fSAo+ID4gKyNk ZWZpbmUgX1BIWVRFQ19JTVg5M19TT01fREVURUNUSU9OX0gKPiA+ICsKPiA+ICsjaW5jbHVkZSAi cGh5dGVjX3NvbV9kZXRlY3Rpb24uaCIKPiA+ICsKPiA+ICsjZGVmaW5lIFBIWVRFQ19JTVg5M19T T03CoMKgwqDCoMKgwqDCoDc3Cj4gPiArCj4gPiArZW51bSBwaHl0ZWNfaW14OTNfb3B0aW9uX2lu ZGV4IHsKPiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19PUFRfRERSID0gMCwKPiA+ICvC oMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19PUFRfRU1NQywKPiA+ICvCoMKgwqDCoMKgwqDCoFBI WVRFQ19JTVg5M19PUFRfQ1BVLAo+ID4gK8KgwqDCoMKgwqDCoMKgUEhZVEVDX0lNWDkzX09QVF9G UkVRLAo+ID4gK8KgwqDCoMKgwqDCoMKgUEhZVEVDX0lNWDkzX09QVF9OUFUsCj4gPiArwqDCoMKg wqDCoMKgwqBQSFlURUNfSU1YOTNfT1BUX0RJU1AsCj4gPiArwqDCoMKgwqDCoMKgwqBQSFlURUNf SU1YOTNfT1BUX0VUSCwKPiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19PUFRfRkVBVCwK PiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19PUFRfVEVNUCwKPiA+ICvCoMKgwqDCoMKg wqDCoFBIWVRFQ19JTVg5M19PUFRfQk9PVCwKPiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5 M19PUFRfTEVELAo+ID4gK8KgwqDCoMKgwqDCoMKgUEhZVEVDX0lNWDkzX09QVF9FRVBST00sCj4g PiArfTsKPiA+ICsKPiA+ICtlbnVtIHBoeXRlY19pbXg5M192b2x0YWdlIHsKPiA+ICvCoMKgwqDC oMKgwqDCoFBIWVRFQ19JTVg5M19WT0xUQUdFX0lOVkFMSUQgPSBQSFlURUNfRUVQUk9NX0lOVkFM LAo+ID4gK8KgwqDCoMKgwqDCoMKgUEhZVEVDX0lNWDkzX1ZPTFRBR0VfM1YzID0gMCwKPiA+ICvC oMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19WT0xUQUdFXzFWOCwKPiA+ICt9Owo+ID4gKwo+ID4g K2VudW0gcGh5dGVjX2lteDkzX2Rkcl9lZXByb21fY29kZSB7Cj4gPiArwqDCoMKgwqDCoMKgwqBQ SFlURUNfSU1YOTNfRERSX0lOVkFMSUQgPSBQSFlURUNfRUVQUk9NX0lOVkFMLAo+ID4gK8KgwqDC oMKgwqDCoMKgUEhZVEVDX0lNWDkzX0xQRERSNFhfNTEyTUIgPSAwLAo+ID4gK8KgwqDCoMKgwqDC oMKgUEhZVEVDX0lNWDkzX0xQRERSNFhfMUdCID0gMSwKPiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRF Q19JTVg5M19MUEREUjRYXzJHQiA9IDIsCj4gPiArwqDCoMKgwqDCoMKgwqBQSFlURUNfSU1YOTNf TFBERFI0XzUxMk1CID0gMywKPiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19MUEREUjRf MUdCID0gNCwKPiA+ICvCoMKgwqDCoMKgwqDCoFBIWVRFQ19JTVg5M19MUEREUjRfMkdCID0gNSwK PiA+ICt9Owo+ID4gKwo+ID4gK3U4IF9fbWF5YmVfdW51c2VkIHBoeXRlY19pbXg5M19kZXRlY3Qo c3RydWN0IHBoeXRlY19lZXByb21fZGF0YQo+ID4gKmRhdGEpOwo+ID4gK3U4IF9fbWF5YmVfdW51 c2VkIHBoeXRlY19pbXg5M19nZXRfb3B0KHN0cnVjdCBwaHl0ZWNfZWVwcm9tX2RhdGEKPiA+ICpk YXRhLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0KPiA+IHBoeXRlY19pbXg5M19vcHRpb25f aW5kZXggaWR4KTsKPiA+ICtlbnVtIHBoeXRlY19pbXg5M192b2x0YWdlIF9fbWF5YmVfdW51c2Vk IHBoeXRlY19pbXg5M19nZXRfdm9sdGFnZQo+ID4gK8KgwqDCoMKgwqDCoMKgKHN0cnVjdCBwaHl0 ZWNfZWVwcm9tX2RhdGEgKmRhdGEpOwo+ID4gKwo+ID4gKyNlbmRpZiAvKiBfUEhZVEVDX0lNWDkz X1NPTV9ERVRFQ1RJT05fSCAqLwo+ID4gZGlmZiAtLWdpdCBhL2JvYXJkL3BoeXRlYy9waHljb3Jl X2lteDkzL0tjb25maWcKPiA+IGIvYm9hcmQvcGh5dGVjL3BoeWNvcmVfaW14OTMvS2NvbmZpZwo+ ID4gaW5kZXggYTcwMTA0Y2I3OS4uMDlmMjZlODllMyAxMDA2NDQKPiA+IC0tLSBhL2JvYXJkL3Bo eXRlYy9waHljb3JlX2lteDkzL0tjb25maWcKPiA+ICsrKyBiL2JvYXJkL3BoeXRlYy9waHljb3Jl X2lteDkzL0tjb25maWcKPiA+IEBAIC0xMCw0ICsxMCwzMiBAQCBjb25maWcgU1lTX1ZFTkRPUgo+ ID4gwqBjb25maWcgU1lTX0NPTkZJR19OQU1FCj4gPiDCoMKgwqDCoMKgwqDCoMKgZGVmYXVsdCAi cGh5Y29yZV9pbXg5MyIKPiA+IMKgCj4gPiArY29uZmlnIFBIWUNPUkVfSU1YOTNfUkFNX1RZUEVf RklYCj4gPiArwqDCoMKgwqDCoMKgwqBib29sICJTZXQgcGh5Q09SRS1pLk1YOTMgUkFNIHR5cGUg YW5kIHNpemUgZml4IGluc3RlYWQgb2YKPiA+IGRldGVjdGluZyIKPiA+ICvCoMKgwqDCoMKgwqDC oGRlZmF1bHQgZmFsc2UKPiA+ICvCoMKgwqDCoMKgwqDCoGhlbHAKPiA+ICvCoMKgwqDCoMKgwqDC oMKgIFJBTSB0eXBlIGFuZCBzaXplIGlzIGJlaW5nIGF1dG9tYXRpY2FsbHkgZGV0ZWN0ZWQgd2l0 aAo+ID4gdGhlIGhlbHAKPiA+ICvCoMKgwqDCoMKgwqDCoMKgIG9mIHRoZSBQSFlURUMgRUVQUk9N IGludHJvc3BlY3Rpb24gZGF0YS4KPiA+ICvCoMKgwqDCoMKgwqDCoMKgIFNldCBSQU0gdHlwZSB0 byBhIGZpeCB2YWx1ZSBpbnN0ZWFkLgo+ID4gKwo+ID4gK2Nob2ljZQo+ID4gK8KgwqDCoMKgwqDC oMKgcHJvbXB0ICJwaHlDT1JFLWkuTVg5MyBSQU0gdHlwZSIKPiA+ICvCoMKgwqDCoMKgwqDCoGRl cGVuZHMgb24gUEhZQ09SRV9JTVg5M19SQU1fVFlQRV9GSVgKPiA+ICvCoMKgwqDCoMKgwqDCoGRl ZmF1bHQgUEhZQ09SRV9JTVg5M19SQU1fVFlQRV9MUEREUjRYXzFHQgo+ID4gKwo+ID4gK2NvbmZp ZyBQSFlDT1JFX0lNWDkzX1JBTV9UWVBFX0xQRERSNFhfMUdCCj4gPiArwqDCoMKgwqDCoMKgwqBi b29sICJMUEREUjRYIDFHQiBSQU0iCj4gPiArwqDCoMKgwqDCoMKgwqBoZWxwCj4gPiArwqDCoMKg wqDCoMKgwqDCoCBTZXQgUkFNIHR5cGUgZml4ZWQgdG8gTFBERFI0WCBhbmQgUkFNIHNpemUgZml4 ZWQgdG8gMUdCCj4gPiArwqDCoMKgwqDCoMKgwqDCoCBmb3IgcGh5Q09SRS1pLk1YOTMuCj4gPiAr Cj4gPiArY29uZmlnIFBIWUNPUkVfSU1YOTNfUkFNX1RZUEVfTFBERFI0WF8yR0IKPiA+ICvCoMKg wqDCoMKgwqDCoGJvb2wgIkxQRERSNFggMkdCIFJBTSIKPiA+ICvCoMKgwqDCoMKgwqDCoGhlbHAK PiA+ICvCoMKgwqDCoMKgwqDCoMKgIFNldCBSQU0gdHlwZSBmaXhlZCB0byBMUEREUjRYIGFuZCBS QU0gc2l6ZSBmaXhlZCB0byAyR0IKPiA+ICvCoMKgwqDCoMKgwqDCoMKgIGZvciBwaHlDT1JFLWku TVg5My4KPiA+ICsKPiA+ICtlbmRjaG9pY2UKPiA+ICsKPiA+ICtzb3VyY2UgImJvYXJkL3BoeXRl Yy9jb21tb24vS2NvbmZpZyIKPiA+IMKgZW5kaWYKPiA+IGRpZmYgLS1naXQgYS9ib2FyZC9waHl0 ZWMvcGh5Y29yZV9pbXg5My9NQUlOVEFJTkVSUwo+ID4gYi9ib2FyZC9waHl0ZWMvcGh5Y29yZV9p bXg5My9NQUlOVEFJTkVSUwo+ID4gaW5kZXggOWU5MWEyOWRjMy4uY2VhODE3ZmZkYyAxMDA2NDQK PiA+IC0tLSBhL2JvYXJkL3BoeXRlYy9waHljb3JlX2lteDkzL01BSU5UQUlORVJTCj4gPiArKysg Yi9ib2FyZC9waHl0ZWMvcGh5Y29yZV9pbXg5My9NQUlOVEFJTkVSUwo+ID4gQEAgLTEsMTAgKzEs MTMgQEAKPiA+IMKgcGh5Q09SRS1pLk1YOTMKPiA+IC1NOsKgwqDCoMKgwqBNYXRoaWV1IE90aGFj ZWhlIDxtLm90aGFjZWhlQGdtYWlsLmNvbT4KPiA+ICtNOsKgwqDCoMKgwqAgTWF0aGlldSBPdGhh Y2VoZSA8bS5vdGhhY2VoZUBnbWFpbC5jb20+Cj4gPiArUjrCoMKgwqDCoMKgIENocmlzdG9waCBT dG9pZG5lciA8Yy5zdG9pZG5lckBwaHl0ZWMuZGU+Cj4gPiDCoFc6wqDCoMKgwqDCoCBodHRwczov L3d3dy5waHl0ZWMuZXUvZW4vcHJvZHVrdGUvc3lzdGVtLW9uLQo+ID4gbW9kdWxlcy9waHljb3Jl LWlteC05MS05My8KPiA+IMKgUzrCoMKgwqDCoMKgIE1haW50YWluZWQKPiA+IMKgRjrCoMKgwqDC oMKgIGFyY2gvYXJtL2R0cy9pbXg5My1waHlib2FyZC1zZWdpbi5kdHMKPiA+IMKgRjrCoMKgwqDC oMKgIGFyY2gvYXJtL2R0cy9pbXg5My1waHljb3JlLXNvbS5kdHNpCj4gPiDCoEY6wqDCoMKgwqDC oCBhcmNoL2FybS9kdHMvaW14OTMtcGh5Ym9hcmQtc2VnaW4tdS1ib290LmR0c2kKPiA+IMKgRjrC oMKgwqDCoMKgIGJvYXJkL3BoeXRlYy9waHljb3JlX2lteDkzLwo+ID4gK0Y6wqDCoMKgwqDCoCBi b2FyZC9waHl0ZWMvY29tbW9uL2lteDkzX3NvbV9kZXRlY3Rpb24uYwo+ID4gK0Y6wqDCoMKgwqDC oCBib2FyZC9waHl0ZWMvY29tbW9uL2lteDkzX3NvbV9kZXRlY3Rpb24uaAo+ID4gwqBGOsKgwqDC oMKgwqAgY29uZmlncy9pbXg5My1waHlib2FyZC1zZWdpbl9kZWZjb25maWcKPiA+IMKgRjrCoMKg wqDCoMKgIGluY2x1ZGUvY29uZmlncy9waHljb3JlX2lteDkzLmgKPiA+IGRpZmYgLS1naXQgYS9i b2FyZC9waHl0ZWMvcGh5Y29yZV9pbXg5My9waHljb3JlLWlteDkzLmMKPiA+IGIvYm9hcmQvcGh5 dGVjL3BoeWNvcmVfaW14OTMvcGh5Y29yZS1pbXg5My5jCj4gPiBpbmRleCAwODVjOGUxOTVhLi5h NTU3OTVlMDYwIDEwMDY0NAo+ID4gLS0tIGEvYm9hcmQvcGh5dGVjL3BoeWNvcmVfaW14OTMvcGh5 Y29yZS1pbXg5My5jCj4gPiArKysgYi9ib2FyZC9waHl0ZWMvcGh5Y29yZV9pbXg5My9waHljb3Jl LWlteDkzLmMKPiA+IEBAIC0zLDYgKzMsNyBAQAo+ID4gwqAgKiBDb3B5cmlnaHQgKEMpIDIwMjMg UEhZVEVDIE1lc3N0ZWNobmlrIEdtYkgKPiA+IMKgICogQXV0aG9yOiBDaHJpc3RvcGggU3RvaWRu ZXIgPGMuc3RvaWRuZXJAcGh5dGVjLmRlPgo+ID4gwqAgKiBDb3B5cmlnaHQgKEMpIDIwMjQgTWF0 aGlldSBPdGhhY2VoZSA8bS5vdGhhY2VoZUBnbWFpbC5jb20+Cj4gPiArICogQ29weXJpZ2h0IChD KSAyMDI0IFBIWVRFQyBNZXNzdGVjaG5payBHbWJICj4gPiDCoCAqLwo+ID4gwqAKPiA+IMKgI2lu Y2x1ZGUgPGFzbS9hcmNoLWlteDkvY2NtX3JlZ3MuaD4KPiA+IEBAIC0xMiwxMSArMTMsMjEgQEAK PiA+IMKgI2luY2x1ZGUgPGFzbS9nbG9iYWxfZGF0YS5oPgo+ID4gwqAjaW5jbHVkZSA8YXNtL21h Y2gtaW14L2Jvb3RfbW9kZS5oPgo+ID4gwqAjaW5jbHVkZSA8ZW52Lmg+Cj4gPiArI2luY2x1ZGUg PGZkdF9zdXBwb3J0Lmg+Cj4gPiArCj4gPiArI2luY2x1ZGUgIi4uL2NvbW1vbi9pbXg5M19zb21f ZGV0ZWN0aW9uLmgiCj4gPiDCoAo+ID4gwqBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKPiA+IMKg Cj4gPiArI2RlZmluZSBFRVBST01fQUREUsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHg1MAo+ID4g Kwo+ID4gwqBpbnQgYm9hcmRfaW5pdCh2b2lkKQo+ID4gwqB7Cj4gPiArwqDCoMKgwqDCoMKgwqBp bnQgcmV0ID0gcGh5dGVjX2VlcHJvbV9kYXRhX3NldHVwKE5VTEwsIDIsIEVFUFJPTV9BRERSKTsK PiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChyZXQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgcHJpbnRmKCIlczogRUVQUk9NIGRhdGEgaW5pdCBmYWlsZWRcbiIsIF9fZnVu Y19fKTsKPiA+ICsKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gMDsKPiA+IMKgfQo+ID4gwqAK PiA+IEBAIC00MCwzICs1MSw0MyBAQCBpbnQgYm9hcmRfbGF0ZV9pbml0KHZvaWQpCj4gPiDCoAo+ ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gwqB9Cj4gPiArCj4gPiArc3RhdGljIHZv aWQgZW1tY19maXh1cCh2b2lkICpibG9iLCBzdHJ1Y3QgcGh5dGVjX2VlcHJvbV9kYXRhCj4gPiAq ZGF0YSkKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBlbnVtIHBoeXRlY19pbXg5M192b2x0YWdl IHZvbHRhZ2UgPQo+ID4gcGh5dGVjX2lteDkzX2dldF92b2x0YWdlKGRhdGEpOwo+ID4gK8KgwqDC oMKgwqDCoMKgaW50IG9mZnNldDsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICh2b2x0YWdl ID09IFBIWVRFQ19JTVg5M19WT0xUQUdFX0lOVkFMSUQpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBlcnI7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAodm9sdGFn ZSA9PSBQSFlURUNfSU1YOTNfVk9MVEFHRV8xVjgpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBvZmZzZXQgPSBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0X3JlZyhibG9iLAo+ ID4gImZzbCxpbXg5My11c2RoYyIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDQyODUwMDAwKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBpZiAob2Zmc2V0KQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBmZHRfZGVscHJvcChibG9iLCBvZmZzZXQsICJuby0xLTgtdiIpOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBlcnI7Cj4gPiArwqDCoMKgwqDC oMKgwqB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqByZXR1cm47Cj4gPiArZXJyOgo+ID4gK8Kg wqDCoMKgwqDCoMKgcHJpbnRmKCJDb3VsZCBub3QgZGV0ZWN0IGVNTUMgVkRELUlPLiBGYWxsIGJh Y2sgdG8KPiA+IGRlZmF1bHQuXG4iKTsKPiA+ICt9Cj4gPiArCj4gPiAraW50IGJvYXJkX2ZpeF9m ZHQodm9pZCAqYmxvYikKPiA+ICt7Cj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgcGh5dGVjX2Vl cHJvbV9kYXRhIGRhdGE7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBwaHl0ZWNfZWVwcm9tX2Rh dGFfc2V0dXAoJmRhdGEsIDIsIEVFUFJPTV9BRERSKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDC oGVtbWNfZml4dXAoYmxvYiwgJmRhdGEpOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IDA7Cj4gPiArfQo+ID4gKwo+ID4gK2ludCBmdF9ib2FyZF9zZXR1cCh2b2lkICpibG9iLCBzdHJ1 Y3QgYmRfaW5mbyAqYmQpCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgZW1tY19maXh1cChibG9i LCBOVUxMKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiAwOwo+ID4gK30KPiA+IGRp ZmYgLS1naXQgYS9ib2FyZC9waHl0ZWMvcGh5Y29yZV9pbXg5My9zcGwuYwo+ID4gYi9ib2FyZC9w aHl0ZWMvcGh5Y29yZV9pbXg5My9zcGwuYwo+ID4gaW5kZXggMTdhODczNmM3My4uYTRkMmFhYWMz MiAxMDA2NDQKPiA+IC0tLSBhL2JvYXJkL3BoeXRlYy9waHljb3JlX2lteDkzL3NwbC5jCj4gPiAr KysgYi9ib2FyZC9waHl0ZWMvcGh5Y29yZV9pbXg5My9zcGwuYwo+ID4gQEAgLTMsNiArMyw3IEBA Cj4gPiDCoCAqIENvcHlyaWdodCAoQykgMjAyMyBQSFlURUMgTWVzc3RlY2huaWsgR21iSAo+ID4g wqAgKiBBdXRob3I6IENocmlzdG9waCBTdG9pZG5lciA8Yy5zdG9pZG5lckBwaHl0ZWMuZGU+Cj4g PiDCoCAqIENvcHlyaWdodCAoQykgMjAyNCBNYXRoaWV1IE90aGFjZWhlIDxtLm90aGFjZWhlQGdt YWlsLmNvbT4KPiA+ICsgKiBDb3B5cmlnaHQgKEMpIDIwMjQgUEhZVEVDIE1lc3N0ZWNobmlrIEdt YkgKPiA+IMKgICovCj4gPiDCoAo+ID4gwqAjaW5jbHVkZSA8YXNtL2FyY2gvY2xvY2suaD4KPiA+ IEBAIC0yMCw2ICsyMSw4IEBACj4gPiDCoCNpbmNsdWRlIDxwb3dlci9wY2E5NDUwLmg+Cj4gPiDC oCNpbmNsdWRlIDxzcGwuaD4KPiA+IMKgCj4gPiArI2luY2x1ZGUgIi4uL2NvbW1vbi9pbXg5M19z b21fZGV0ZWN0aW9uLmgiCj4gPiArCj4gPiDCoERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOwo+ID4g wqAKPiA+IMKgLyoKPiA+IEBAIC0yNyw2ICszMCwxMyBAQCBERUNMQVJFX0dMT0JBTF9EQVRBX1BU UjsKPiA+IMKgICogd2hlbiBwY2E5NDUxYSBzdXBwb3J0IGlzIGFkZGVkLgo+ID4gwqAgKi8KPiA+ IMKgI2RlZmluZSBQQ0E5NDUwX1JFR19QV1JDVFJMX1RPRkZfREVCwqDCoMKgIEJJVCg1KQo+ID4g KyNkZWZpbmUgRUVQUk9NX0FERFLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4NTAKPiA+ICsKPiA+ ICsvKgo+ID4gKyAqIFByb3RvdHlwZXMgb2YgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgcmFtIGNv bmZpZyBmaWxlCj4gPiArICovCj4gPiArdm9pZCBzZXRfZHJhbV90aW1pbmdzXzJnYl9scGRkcjR4 KHZvaWQpOwo+ID4gK3ZvaWQgc2V0X2RyYW1fdGltaW5nc18xZ2JfbHBkZHI0eF85MDBtaHoodm9p ZCk7Cj4gPiDCoAo+ID4gwqBpbnQgc3BsX2JvYXJkX2Jvb3RfZGV2aWNlKGVudW0gYm9vdF9kZXZp Y2UgYm9vdF9kZXZfc3BsKQo+ID4gwqB7Cj4gPiBAQCAtNDYsNiArNTYsNDQgQEAgdm9pZCBzcGxf Ym9hcmRfaW5pdCh2b2lkKQo+ID4gwqAKPiA+IMKgdm9pZCBzcGxfZHJhbV9pbml0KHZvaWQpCj4g PiDCoHsKPiA+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gPiArwqDCoMKgwqDCoMKgwqBlbnVt IHBoeXRlY19pbXg5M19kZHJfZWVwcm9tX2NvZGUgZGRyX29wdCA9Cj4gPiBQSFlURUNfSU1YOTNf RERSX0lOVkFMSUQ7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAvKiBOT1RFOiBJbiBTUEwgbHBp MmMzIGlzIG1hcHBlZCB0byBidXMgMCAqLwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gcGh5dGVj X2VlcHJvbV9kYXRhX3NldHVwKE5VTEwsIDAsIEVFUFJPTV9BRERSKTsKPiA+ICvCoMKgwqDCoMKg wqDCoGlmIChyZXQgJiYgIUlTX0VOQUJMRUQoQ09ORklHX1BIWUNPUkVfSU1YOTNfUkFNX1RZUEVf RklYKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dDsKPiA+ICsK PiA+ICvCoMKgwqDCoMKgwqDCoHJldCA9IHBoeXRlY19pbXg5M19kZXRlY3QoTlVMTCk7Cj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoIXJldCkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBwaHl0ZWNfcHJpbnRfc29tX2luZm8oTlVMTCk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBp ZiAoSVNfRU5BQkxFRChDT05GSUdfUEhZQ09SRV9JTVg5M19SQU1fVFlQRV9GSVgpKSB7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYKPiA+IChJU19FTkFCTEVEKENPTkZJR19Q SFlDT1JFX0lNWDkzX1JBTV9UWVBFX0xQRERSNFhfMUdCKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZGRyX29wdCA9IFBIWVRFQ19JTVg5M19MUERE UjRYXzFHQjsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlIGlmCj4gPiAo SVNfRU5BQkxFRChDT05GSUdfUEhZQ09SRV9JTVg5M19SQU1fVFlQRV9MUEREUjRYXzJHQikpCj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRkcl9vcHQg PSBQSFlURUNfSU1YOTNfTFBERFI0WF8yR0I7Cj4gPiArwqDCoMKgwqDCoMKgwqB9IGVsc2Ugewo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRkcl9vcHQgPSBwaHl0ZWNfaW14OTNf Z2V0X29wdChOVUxMLAo+ID4gUEhZVEVDX0lNWDkzX09QVF9ERFIpOwo+ID4gK8KgwqDCoMKgwqDC oMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgc3dpdGNoIChkZHJfb3B0KSB7Cj4gPiArwqDC oMKgwqDCoMKgwqBjYXNlIFBIWVRFQ19JTVg5M19MUEREUjRYXzFHQjoKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoaXNfdm9sdGFnZV9tb2RlKFZPTFRfTE9XX0RSSVZFKSkK PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc2V0X2Ry YW1fdGltaW5nc18xZ2JfbHBkZHI0eF85MDBtaHooKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBicmVhazsKPiA+ICvCoMKgwqDCoMKgwqDCoGNhc2UgUEhZVEVDX0lNWDkzX0xQ RERSNFhfMkdCOgo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNldF9kcmFtX3Rp bWluZ3NfMmdiX2xwZGRyNHgoKTsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBi cmVhazsKPiA+ICvCoMKgwqDCoMKgwqDCoGRlZmF1bHQ6Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgZ290byBvdXQ7Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDC oMKgwqBkZHJfaW5pdCgmZHJhbV90aW1pbmcpOwo+ID4gK8KgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ ID4gK291dDoKPiA+ICvCoMKgwqDCoMKgwqDCoHB1dHMoIkNvdWxkIG5vdCBkZXRlY3QgY29ycmVj dCBSQU0gdHlwZSBhbmQgc2l6ZS4gRmFsbCBiYWNrCj4gPiB0byBkZWZhdWx0LlxuIik7Cj4gPiAr wqDCoMKgwqDCoMKgwqBpZiAoaXNfdm9sdGFnZV9tb2RlKFZPTFRfTE9XX0RSSVZFKSkKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBzZXRfZHJhbV90aW1pbmdzXzFnYl9scGRkcjR4 XzkwMG1oeigpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGRkcl9pbml0KCZkcmFtX3RpbWluZyk7Cj4g PiDCoH0KPiA+IMKgCj4gCg==