From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail05.groups.io (mail05.groups.io [45.79.224.7]) by spool.mail.gandi.net (Postfix) with ESMTPS id AC54CD802E7 for ; Thu, 23 May 2024 15:40:06 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=iCV5frrebi/pcl06oyPYfOahSK6jlIyzkblnLbLpPcQ=; c=relaxed/simple; d=groups.io; h=Received-SPF:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:user-agent:Authentication-Results-Original:nodisclaimer:MIME-Version:Original-Authentication-Results:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Resent-Date:Resent-From:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-ID:Content-Transfer-Encoding; s=20240206; t=1716478804; v=1; b=451zTJ6P9jDie4mzTA188tfRmuE0sEUswBgvvAbkFkSw/BBd/l21gi9Zp397eHfs5kVCmGxE drQMZ6wdKoqycSyZ3ZYj1tIQEK5Yp0R33xdvtU1vNF1oHCFFzlSDhjJ/B0A+zCl6OdU1dc5F42D QGrU3WaTvD0bjbf+NA4a64r13Z26JynE3bVDywC2ZEzwtwRnMi7MUZoyIvNCfZnYXen3PMYE/zr 8yKAPpEe9Y8I7ZMnUN+zse5uA9uUcfeix/GJOurMhUo2wJSYMjmX2e3saj76JAZnM8xx9xq5jxP hFTLmB8BfYh0nFu2pjwG3x13dVKVGTkoK0r38u4q6+oBQ== X-Received: by 127.0.0.2 with SMTP id JxdzYY7687511xodq8jHYeTB; Thu, 23 May 2024 08:40:04 -0700 X-Received: from EUR03-AM7-obe.outbound.protection.outlook.com (EUR03-AM7-obe.outbound.protection.outlook.com [40.107.105.43]) by mx.groups.io with SMTP id smtpd.web11.1898.1716478802926868680 for ; Thu, 23 May 2024 08:40:03 -0700 X-Received: from DU2PR04CA0358.eurprd04.prod.outlook.com (2603:10a6:10:2b4::31) by GV2PR08MB8341.eurprd08.prod.outlook.com (2603:10a6:150:bb::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7611.22; Thu, 23 May 2024 15:39:59 +0000 X-Received: from DB5PEPF00014B8C.eurprd02.prod.outlook.com (2603:10a6:10:2b4:cafe::f8) by DU2PR04CA0358.outlook.office365.com (2603:10a6:10:2b4::31) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7611.22 via Frontend Transport; Thu, 23 May 2024 15:39:59 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=arm.com;dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; pr=C X-Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5PEPF00014B8C.mail.protection.outlook.com (10.167.8.200) with Microsoft SMTP Server (version=TLS1_3, cipher=TLS_AES_256_GCM_SHA384) id 15.20.7611.14 via Frontend Transport; Thu, 23 May 2024 15:39:58 +0000 X-Received: ("Tessian outbound 57d5075de207:v327"); Thu, 23 May 2024 15:39:58 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 4e0f9211739164df X-CR-MTA-TID: 64aa7808 X-Received: from 1d28c4644335.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 9EAA190E-3F6E-4229-B136-FDB9EB2F744F.1; Thu, 23 May 2024 15:39:52 +0000 X-Received: from EUR05-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1d28c4644335.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 23 May 2024 15:39:52 +0000 X-Received: from PAXPR08MB6813.eurprd08.prod.outlook.com (2603:10a6:102:15f::10) by PA6PR08MB10815.eurprd08.prod.outlook.com (2603:10a6:102:3d8::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7611.22; Thu, 23 May 2024 15:39:48 +0000 X-Received: from PAXPR08MB6813.eurprd08.prod.outlook.com ([fe80::610b:f3fd:2372:5c2]) by PAXPR08MB6813.eurprd08.prod.outlook.com ([fe80::610b:f3fd:2372:5c2%5]) with mapi id 15.20.7611.016; Thu, 23 May 2024 15:39:48 +0000 From: "Sami Mujawar" To: Sahil Kaushal , "devel@edk2.groups.io" CC: Ard Biesheuvel , =?utf-8?B?TGVpZiBMaW5kaG9sbSDCoA==?= , nd Subject: Re: [edk2-devel] [edk2-platforms][PATCH V3 01/17] Platform/ARM/NorFlashDxe: Move DiskIo related functions out of NorFlash.c Thread-Topic: [edk2-platforms][PATCH V3 01/17] Platform/ARM/NorFlashDxe: Move DiskIo related functions out of NorFlash.c Thread-Index: AQHarP/QjdAI2V49UES9uqJbb97ouLGlBaWA Date: Thu, 23 May 2024 15:39:48 +0000 Message-ID: <8B77F23E-09E1-4389-9229-22DE88285D15@arm.com> References: <20240523105511.13189-1-Sahil.Kaushal@arm.com> <20240523105511.13189-2-Sahil.Kaushal@arm.com> In-Reply-To: <20240523105511.13189-2-Sahil.Kaushal@arm.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.85.24051214 Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; x-ms-traffictypediagnostic: PAXPR08MB6813:EE_|PA6PR08MB10815:EE_|DB5PEPF00014B8C:EE_|GV2PR08MB8341:EE_ X-MS-Office365-Filtering-Correlation-Id: ab5de8ae-a90a-4d48-a441-08dc7b3e9a6c x-checkrecipientrouted: true nodisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0;ARA:13230031|1800799015|376005|366007|38070700009; X-Microsoft-Antispam-Message-Info-Original: =?utf-8?B?cWxKcG43VzY0VXMxT2ZQdEozUmZkMnJWQ3RMZ3FHTk1wcG9kajBFSWRSZkRP?= =?utf-8?B?WkNaWWJCQStqTFg0TmxFVWV0WVp5eHY4MGFoQTg5dWgrMm9SYnIzWVlvVk9o?= =?utf-8?B?dW93bmFpekVXUm5lSmZ0eG5najBEWERsdzFCQzAzMXphUGtOTG9vN2hRNXBk?= =?utf-8?B?ZGdnT1NtV0toSlUzRHAwUGVRVThJMnpST1dURysyTzRmd1VGWHBxNWtjYUla?= =?utf-8?B?dWkrb2ZibTM0WXJiRTlQdGxHSE5ySEJYUFoycW5lblMwc2pRV3dhQlFnbnRz?= =?utf-8?B?L2pjTGgxRzVXeUlqL1VpeThlaGRrN1czZVR3b2kraWkwbEo1S1kyMUJBTi9m?= =?utf-8?B?WWFkMnNRZVhXRWIwTDBhNDhqcEhHS0FZNTZrSXdRRG05YVRCeVhCRHMraEc1?= =?utf-8?B?bXdoWHE1dHl6eVhlclYvVnBnM2tqM2RHZFBKeFh3NEY2R0E0aXRDL0ZUd2NZ?= =?utf-8?B?OG9wVkIrZHV4WkR4SHh2VTE5MVYwTmxGUTVvdnhsbi9OWTBkUXlwM0RQV2dp?= =?utf-8?B?M2I0MTlTOUpIc0lJYW13TGpEY2JoWVlQMUdyVHlKbDh0ZktqNUZxSTUzNGhW?= =?utf-8?B?dlp0WTVDUW1wdTZZMkFJOHdxVGV4ZHd0THJZdG9UeFJzbExXUjNQQW9KUkF6?= =?utf-8?B?L0NQeEtSajFhWWttRTB5T2xMYkZhcEdxck5jVW15UW5PZnhJOTBWYUdNem8z?= =?utf-8?B?UGJBcm9MZUVtazNYUTRVRjYvdGVDZGVDMXYvb0VjVjhLSWZocGg1bGNpVGgx?= =?utf-8?B?VFZLRVFoNzkyY3d4a2xHSnpCMUNMc3ltUHU5ZUtYaFJLVUphL1luTmR1cEw0?= =?utf-8?B?djluUkJyVlg3OW1TUzdhZUJ0cTVRQ0F3Q3JFcXhrWGp1QkdQODlQb3VRVmNZ?= =?utf-8?B?emNHSWxVNWZwZmhtMFhVOEhkcFU3NThPczdJd3lxamJGWE0wZ0MrTHkxNDV0?= =?utf-8?B?d2VrME5rMWRpTVcxVTJZNkNZSkdHaEl2dytYbVo1em9RYUt5cFExUjhKUEtu?= =?utf-8?B?OHBUZUtkM2ZaaVBsNjlTY2drUGRDaVlZc0w4VXNvQzJGOVQrVTJBVlJDMU5a?= =?utf-8?B?cXF5cHFLellSVFBzc0JLRXBxVkdoMUhYK3VjMUFGRWdPaTRRRjd0aUtSaTVM?= =?utf-8?B?bjNTSWNWTkQ1YjB4M0FYMVNhbFRuYi80aUJSdkZTSVo5NWZCSzZjVVVpaWRm?= =?utf-8?B?K0N0UWtoK3o3K2xRWitvMmkvdDNvUkJOTnRuUmhUN1B6dzRIbVhENDJ3ZWZM?= =?utf-8?B?eENOSkNLcnJ2aWJPTDhrWlVwQlcyeU94UWZJUFZlNHlzY0xQcmMrMXJOaTdZ?= =?utf-8?B?algwMnA2cE9XY2h1TlNIRGFjVWVIaEliWGJXbGNnVWFTWTAwODM1eXo0ZDBi?= =?utf-8?B?Wk9YbnRQSWlIRlUwYmNpRWZvSW5keDJBOHMyMmwyRXNMQ1o0Z05ZK0VRVnVY?= =?utf-8?B?b3U2cDFKb0ZYaVQyaGJnYUlML0pDREgxdmgyUGtlUCtNc2dORUhieXpmaFRK?= =?utf-8?B?RHJVa3RWMUh0ME9KVG84QlYzMXhrVWM2UWRHVk5yZlJJdmtuTHpzZXByWHJu?= =?utf-8?B?L1R0VlYxN2IyU3NUNEJ2b3dZLzdTcE9CRklKYm1FOXJnRzVkaUFrd2NCTDFB?= =?utf-8?B?QWVka1NyTnhaTC80WmN4Ny9FTlRvZ25VVytuL1RicW54cHYraTcrOU52dlJS?= =?utf-8?B?dmtUVmhpZ1Y1S2NhWHhpWENxYUo4UEc5M1oxUHF0cUxobkRmdjExdTdyd1ZK?= =?utf-8?B?VlVxZHhTRUtxY2x3SkJsN0pwRE12TXVvdkNuRk53UU0zekVZbkgwczhJZ0di?= =?utf-8?B?RTZIK2grK29YNXMxQTJ1UT09?= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PAXPR08MB6813.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(1800799015)(376005)(366007)(38070700009);DIR:OUT;SFP:1101; MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA6PR08MB10815 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5PEPF00014B8C.eurprd02.prod.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 10c5e379-9df5-4294-2458-08dc7b3e9406 X-Microsoft-Antispam-Message-Info: =?utf-8?B?VThUMGtpYWcrRmovRDNsQXZwM3drd2pOVmo5MVcvcGpLK3hMTXNXUFBYVEJ6?= =?utf-8?B?MXo5YkRSeEFyUFBLMEFGZVRiWDlrWk1BL3hrSmxCWEpXc04vZmQzSnhGVUpS?= =?utf-8?B?alR0RytqcU5OZkdibVRPRENhdFBqVmVQRWZBTnZ4cHJ2aFFMZFBDVFNBKyto?= =?utf-8?B?Z012UklYSVplWjIwekNWTnl4dnJhdWdKNEJ5cUpUSk1JeHNrQzlER2x6N244?= =?utf-8?B?b1FGbnZUQlh2TXFyZzV3c3kxN3lxK3Y3YkVaMGt3NGk3Slc4ZkdKdlJIQjha?= =?utf-8?B?MmFsc0YvcnR1d1JYaStZOWpzZS8zWkZNMmhaYnVXMW52UVBJQndvTDBoNkZ1?= =?utf-8?B?cVI3a2g5OWV3eVF5eHZlU2tvaEZpdkw0eERwL0FNQzZFMnFzWGpyaFoydUFK?= =?utf-8?B?bmU2VVFtb1FtejhCZ2lnaVdYNnc5S25xdDl3OFl2cHkvZGdQc0RsQ1U1NlB6?= =?utf-8?B?S3pLNXZzTlkwdks5WkhkMVhkWkQwRHNPVFgwRUJ5K2c5azRJL3U0VnBXVFhZ?= =?utf-8?B?VTkxUXR6YWl6Rjlsd2NUanRHb0ZyMmkrUFhtVEVXaFNKd0tnZkVzQ3U5RU9y?= =?utf-8?B?UjQ0TXVtV20xSmp3ZDlJK1UwaStzbERUSXFDM2hlWjJZejgyeFA1ZzhqWlFS?= =?utf-8?B?WkVhanN6cDNRdU9ZS1ZVMHRQQS9Ld2VNdmJVWms2a0hNS3d1QjdLRG0wdEVQ?= =?utf-8?B?REFUUWhyUTZSVXorR1diRUo4eXNkekk4Tll6T3puSFZOUFFsVjFpdy81RU1L?= =?utf-8?B?eHVyNVFOWlVEVy9SWWZXcHZQZExwTzkwUkI3aUZmL2NQM0lIT3RuY3R6RHpF?= =?utf-8?B?MTl6aVVLWjZieUV5OHcveVJhRDdyK1c4Q2I5cnZFdldUMGx6MEgwNjdxRm1B?= =?utf-8?B?MXB2anRaeCtOZ2ErTUpFalJhc1ZxRjI0b24yNUdvN0ZXT3BvOEljNDJnMTUv?= =?utf-8?B?UkpKYzV3djBzVHVLMmxUTmgyaGZzWUFjeVF1Vzl4djA0aXQ1MEg5aVlNQndv?= =?utf-8?B?eWliZnNuaGpmWkJvMkh6N0dXZHdjeHdFQmlHRVpqZG1zRGl6UjdSVTF2RTI3?= =?utf-8?B?cXZtSEZTcjVjMlQ0ckxjZ2duTFRKL1FOSWd3eXY4LzNYQ0lUVHFXcE9XaHpU?= =?utf-8?B?d1lVVkJibXNjdG9RYmhKL0pXbmF4ZjQxaE9CTk9RSUxOS25aNVZDYmYzRU9j?= =?utf-8?B?aTBKaEN1MVloVTRrZnkxTnFHK3lscTJZNFdYMStsT2tFdXkyU2pDcURzOGxr?= =?utf-8?B?b1JwWllCWjhscWprRkRvcFQ1ckFhMTdrUlBNbHFwcG83YzNXVGlxRy9pN3pt?= =?utf-8?B?ejhwTnFQYXZ0c25SYk9yK3V1T21uUWM4OEMzWm1zNFM5WUthTW55SDJLQThX?= =?utf-8?B?cXJYaFJWSGRRYXVUN0Q1aUdaVEFaUTk1S3BibUFjV0lQc2JVdG9kMGJHbG0w?= =?utf-8?B?cjFheU0vT0l5ZVBqUVRPQTA2azM5eDJEdkxQN09GeXJZODdMMExyTjltUHAx?= =?utf-8?B?Y1lJYnZnbzNJTDh2MlRjYUY1NElmbmpMRm1IRjVJU3FTdVV2SGRkQ1c4azJF?= =?utf-8?B?c2s5RW9GUDUzNGhlQTY3Q0tpUUFxSWlWU2xqQ3pEQk83b1BYa0NFVjljdW16?= =?utf-8?B?NC96amE1QkQzaDVCMVJQUFhhK1dhcSsyL3F6OHB3Skk5RHR6aFBJTnR3Rkdx?= =?utf-8?B?YjRQL3NIdlVBRXZQeFYxQmtIMlB0eDFESG1wT0FnZUc5cmQwL1JHZUtHVUZT?= =?utf-8?B?OXBmdnNLY1QzTUFKbU82OE1MK25HdHJqY1ROYzBmTXdVb2FGb0xRVGNWTzV1?= =?utf-8?B?ckYvMWthdzhWSGQvaXhoSzZsSGJZak9uYnpRZ2dYNTV5K3YzRHd0a1BIWTdM?= =?utf-8?Q?JqpeltzU7vja1?= X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 May 2024 15:39:58.8611 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: ab5de8ae-a90a-4d48-a441-08dc7b3e9a6c X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5PEPF00014B8C.eurprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR08MB8341 Precedence: Bulk List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Resent-Date: Thu, 23 May 2024 08:40:03 -0700 Resent-From: sami.mujawar@arm.com Reply-To: devel@edk2.groups.io,sami.mujawar@arm.com List-Unsubscribe-Post: List-Unsubscribe=One-Click List-Unsubscribe: X-Gm-Message-State: wN0LqZpwUVCApSGv2ejG2sKSx7686176AA= Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20240206 header.b=451zTJ6P; spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 45.79.224.7 as permitted sender) smtp.mailfrom=bounce@groups.io; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=arm.com (policy=none) SGkgU2FoaWwsDQoNCkkgY2Fubm90IGFwcGx5IHlvdXIgcGF0Y2hlcyBjbGVhbmx5LiBDYW4geW91 IHNoYXJlIGEgZ2l0aHViIGJyYW5jaCB3aXRoIHlvdXIgcGF0Y2hlcywgcGxlYXNlPw0KDQpSZWdh cmRzLA0KDQpTYW1pIE11amF3YXINCg0K77u/T24gMjMvMDUvMjAyNCwgMTE6NTYsICJTYWhpbCBL YXVzaGFsIiA8U2FoaWwuS2F1c2hhbEBhcm0uY29tIDxtYWlsdG86U2FoaWwuS2F1c2hhbEBhcm0u Y29tPj4gd3JvdGU6DQoNCg0KRnJvbTogc2FoaWwgPHNhaGlsQGFybS5jb20gPG1haWx0bzpzYWhp bEBhcm0uY29tPj4NCg0KDQpNb3ZpbmcgdGhlc2UgZnVuY3Rpb25zIGZyb20gTm9yRmxhc2guYyB0 byBOb3JGbGFzaEJsb2NrSW9EeGUuYyBhcw0KdGhleSBhcmUgbm90IGRlcGVuZGVudCBvbiBhbnkg cGFydGljdWxhciBmbGFzaCBpbXBsZW1lbnRhdGlvbi4NCg0KDQpTaWduZWQtb2ZmLWJ5OiBzYWhp bCA8c2FoaWxAYXJtLmNvbSA8bWFpbHRvOnNhaGlsQGFybS5jb20+Pg0KLS0tDQpQbGF0Zm9ybS9B Uk0vRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaC5jIHwgMTI5IC0tLS0tLS0tLS0tLS0tLS0t LS0tDQpQbGF0Zm9ybS9BUk0vRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaEJsb2NrSW9EeGUu YyB8IDEyOSArKysrKysrKysrKysrKysrKysrKw0KMiBmaWxlcyBjaGFuZ2VkLCAxMjkgaW5zZXJ0 aW9ucygrKSwgMTI5IGRlbGV0aW9ucygtKQ0KDQoNCmRpZmYgLS1naXQgYS9QbGF0Zm9ybS9BUk0v RHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaC5jIGIvUGxhdGZvcm0vQVJNL0RyaXZlcnMvTm9y Rmxhc2hEeGUvTm9yRmxhc2guYw0KaW5kZXggMWI0MzEwNzNlZTkzLi42MDg1NGVmMmE3ZDAgMTAw NjQ0DQotLS0gYS9QbGF0Zm9ybS9BUk0vRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaC5jDQor KysgYi9QbGF0Zm9ybS9BUk0vRHJpdmVycy9Ob3JGbGFzaER4ZS9Ob3JGbGFzaC5jDQpAQCAtODA3 LDEzNSArODA3LDYgQEAgTm9yRmxhc2hXcml0ZVNpbmdsZUJsb2NrICgNCnJldHVybiBFRklfU1VD Q0VTUzsNCg0KDQp9DQoNCg0KDQoNCg0KDQotLyoNCg0KDQotIEFsdGhvdWdoIERpc2tJb0R4ZSB3 aWxsIGF1dG9tYXRpY2FsbHkgaW5zdGFsbCB0aGUgRGlza0lPIHByb3RvY29sIHdoZW5ldmVyDQoN Cg0KLSB3ZSBpbnN0YWxsIHRoZSBCbG9ja0lPIHByb3RvY29sLCBpdHMgaW1wbGVtZW50YXRpb24g aXMgc3ViLW9wdGltYWwgYXMgaXQgcmVhZHMNCg0KDQotIGFuZCB3cml0ZXMgZW50aXJlIGJsb2Nr cyB1c2luZyB0aGUgQmxvY2tJTyBwcm90b2NvbC4gSW4gZmFjdCB3ZSBjYW4gYWNjZXNzDQoNCg0K LSBOT1IgZmxhc2ggd2l0aCBhIGZpbmVyIGdyYW51bGFyaXR5IHRoYW4gdGhhdCwgc28gd2UgY2Fu IGltcHJvdmUgcGVyZm9ybWFuY2UNCg0KDQotIGJ5IGRpcmVjdGx5IHByb2R1Y2luZyB0aGUgRGlz a0lPIHByb3RvY29sLg0KDQoNCi0qLw0KDQoNCi0NCg0KDQotLyoqDQoNCg0KLSBSZWFkIEJ1ZmZl clNpemUgYnl0ZXMgZnJvbSBPZmZzZXQgaW50byBCdWZmZXIuDQoNCg0KLQ0KDQoNCi0gQHBhcmFt IFRoaXMgUHJvdG9jb2wgaW5zdGFuY2UgcG9pbnRlci4NCg0KDQotIEBwYXJhbSBNZWRpYUlkIElk IG9mIHRoZSBtZWRpYSwgY2hhbmdlcyBldmVyeSB0aW1lIHRoZSBtZWRpYSBpcyByZXBsYWNlZC4N Cg0KDQotIEBwYXJhbSBPZmZzZXQgVGhlIHN0YXJ0aW5nIGJ5dGUgb2Zmc2V0IHRvIHJlYWQgZnJv bQ0KDQoNCi0gQHBhcmFtIEJ1ZmZlclNpemUgU2l6ZSBvZiBCdWZmZXINCg0KDQotIEBwYXJhbSBC dWZmZXIgQnVmZmVyIGNvbnRhaW5pbmcgcmVhZCBkYXRhDQoNCg0KLQ0KDQoNCi0gQHJldHZhbCBF RklfU1VDQ0VTUyBUaGUgZGF0YSB3YXMgcmVhZCBjb3JyZWN0bHkgZnJvbSB0aGUgZGV2aWNlLg0K DQoNCi0gQHJldHZhbCBFRklfREVWSUNFX0VSUk9SIFRoZSBkZXZpY2UgcmVwb3J0ZWQgYW4gZXJy b3Igd2hpbGUgcGVyZm9ybWluZyB0aGUgcmVhZC4NCg0KDQotIEByZXR2YWwgRUZJX05PX01FRElB IFRoZXJlIGlzIG5vIG1lZGlhIGluIHRoZSBkZXZpY2UuDQoNCg0KLSBAcmV0dmFsIEVGSV9NRURJ QV9DSEFOR0VEIFRoZSBNZWRpYUlkIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IGRldmljZS4N Cg0KDQotIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSByZWFkIHJlcXVlc3QgY29u dGFpbnMgZGV2aWNlIGFkZHJlc3NlcyB0aGF0IGFyZSBub3QNCg0KDQotIHZhbGlkIGZvciB0aGUg ZGV2aWNlLg0KDQoNCi0NCg0KDQotKiovDQoNCg0KLUVGSV9TVEFUVVMNCg0KDQotRUZJQVBJDQoN Cg0KLU5vckZsYXNoRGlza0lvUmVhZERpc2sgKA0KDQoNCi0gSU4gRUZJX0RJU0tfSU9fUFJPVE9D T0wgKlRoaXMsDQoNCg0KLSBJTiBVSU5UMzIgTWVkaWFJZCwNCg0KDQotIElOIFVJTlQ2NCBEaXNr T2Zmc2V0LA0KDQoNCi0gSU4gVUlOVE4gQnVmZmVyU2l6ZSwNCg0KDQotIE9VVCBWT0lEICpCdWZm ZXINCg0KDQotICkNCg0KDQotew0KDQoNCi0gTk9SX0ZMQVNIX0lOU1RBTkNFICpJbnN0YW5jZTsN Cg0KDQotIFVJTlQzMiBCbG9ja1NpemU7DQoNCg0KLSBVSU5UMzIgQmxvY2tPZmZzZXQ7DQoNCg0K LSBFRklfTEJBIExiYTsNCg0KDQotDQoNCg0KLSBJbnN0YW5jZSA9IElOU1RBTkNFX0ZST01fRElT S0lPX1RISVMgKFRoaXMpOw0KDQoNCi0NCg0KDQotIGlmIChNZWRpYUlkICE9IEluc3RhbmNlLT5N ZWRpYS5NZWRpYUlkKSB7DQoNCg0KLSByZXR1cm4gRUZJX01FRElBX0NIQU5HRUQ7DQoNCg0KLSB9 DQoNCg0KLQ0KDQoNCi0gQmxvY2tTaXplID0gSW5zdGFuY2UtPk1lZGlhLkJsb2NrU2l6ZTsNCg0K DQotIExiYSA9IChFRklfTEJBKURpdlU2NHgzMlJlbWFpbmRlciAoRGlza09mZnNldCwgQmxvY2tT aXplLCAmQmxvY2tPZmZzZXQpOw0KDQoNCi0NCg0KDQotIHJldHVybiBOb3JGbGFzaFJlYWQgKElu c3RhbmNlLCBMYmEsIEJsb2NrT2Zmc2V0LCBCdWZmZXJTaXplLCBCdWZmZXIpOw0KDQoNCi19DQoN Cg0KLQ0KDQoNCi0vKioNCg0KDQotIFdyaXRlcyBhIHNwZWNpZmllZCBudW1iZXIgb2YgYnl0ZXMg dG8gYSBkZXZpY2UuDQoNCg0KLQ0KDQoNCi0gQHBhcmFtIFRoaXMgSW5kaWNhdGVzIGEgcG9pbnRl ciB0byB0aGUgY2FsbGluZyBjb250ZXh0Lg0KDQoNCi0gQHBhcmFtIE1lZGlhSWQgSUQgb2YgdGhl IG1lZGl1bSB0byBiZSB3cml0dGVuLg0KDQoNCi0gQHBhcmFtIE9mZnNldCBUaGUgc3RhcnRpbmcg Ynl0ZSBvZmZzZXQgb24gdGhlIGxvZ2ljYWwgYmxvY2sgSS9PIGRldmljZSB0byB3cml0ZS4NCg0K DQotIEBwYXJhbSBCdWZmZXJTaXplIFRoZSBzaXplIGluIGJ5dGVzIG9mIEJ1ZmZlci4gVGhlIG51 bWJlciBvZiBieXRlcyB0byB3cml0ZSB0byB0aGUgZGV2aWNlLg0KDQoNCi0gQHBhcmFtIEJ1ZmZl ciBBIHBvaW50ZXIgdG8gdGhlIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkYXRhIHRvIGJlIHdyaXR0 ZW4uDQoNCg0KLQ0KDQoNCi0gQHJldHZhbCBFRklfU1VDQ0VTUyBUaGUgZGF0YSB3YXMgd3JpdHRl biBjb3JyZWN0bHkgdG8gdGhlIGRldmljZS4NCg0KDQotIEByZXR2YWwgRUZJX1dSSVRFX1BST1RF Q1RFRCBUaGUgZGV2aWNlIGNhbiBub3QgYmUgd3JpdHRlbiB0by4NCg0KDQotIEByZXR2YWwgRUZJ X0RFVklDRV9FUlJPUiBUaGUgZGV2aWNlIHJlcG9ydGVkIGFuIGVycm9yIHdoaWxlIHBlcmZvcm1p bmcgdGhlIHdyaXRlLg0KDQoNCi0gQHJldHZhbCBFRklfTk9fTUVESUEgVGhlcmUgaXMgbm8gbWVk aWEgaW4gdGhlIGRldmljZS4NCg0KDQotIEByZXR2YWwgRUZJX01FRElBX0NIQU5HRUQgVGhlIE1l ZGlhSWQgZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgZGV2aWNlLg0KDQoNCi0gQHJldHZhbCBF RklfSU5WQUxJRF9QQVJBTUVURVIgVGhlIHdyaXRlIHJlcXVlc3QgY29udGFpbnMgZGV2aWNlIGFk ZHJlc3NlcyB0aGF0IGFyZSBub3QNCg0KDQotIHZhbGlkIGZvciB0aGUgZGV2aWNlLg0KDQoNCi0N Cg0KDQotKiovDQoNCg0KLUVGSV9TVEFUVVMNCg0KDQotRUZJQVBJDQoNCg0KLU5vckZsYXNoRGlz a0lvV3JpdGVEaXNrICgNCg0KDQotIElOIEVGSV9ESVNLX0lPX1BST1RPQ09MICpUaGlzLA0KDQoN Ci0gSU4gVUlOVDMyIE1lZGlhSWQsDQoNCg0KLSBJTiBVSU5UNjQgRGlza09mZnNldCwNCg0KDQot IElOIFVJTlROIEJ1ZmZlclNpemUsDQoNCg0KLSBJTiBWT0lEICpCdWZmZXINCg0KDQotICkNCg0K DQotew0KDQoNCi0gTk9SX0ZMQVNIX0lOU1RBTkNFICpJbnN0YW5jZTsNCg0KDQotIFVJTlQzMiBC bG9ja1NpemU7DQoNCg0KLSBVSU5UMzIgQmxvY2tPZmZzZXQ7DQoNCg0KLSBFRklfTEJBIExiYTsN Cg0KDQotIFVJTlROIFJlbWFpbmluZ0J5dGVzOw0KDQoNCi0gVUlOVE4gV3JpdGVTaXplOw0KDQoN Ci0gRUZJX1NUQVRVUyBTdGF0dXM7DQoNCg0KLQ0KDQoNCi0gSW5zdGFuY2UgPSBJTlNUQU5DRV9G Uk9NX0RJU0tJT19USElTIChUaGlzKTsNCg0KDQotDQoNCg0KLSBpZiAoTWVkaWFJZCAhPSBJbnN0 YW5jZS0+TWVkaWEuTWVkaWFJZCkgew0KDQoNCi0gcmV0dXJuIEVGSV9NRURJQV9DSEFOR0VEOw0K DQoNCi0gfQ0KDQoNCi0NCg0KDQotIEJsb2NrU2l6ZSA9IEluc3RhbmNlLT5NZWRpYS5CbG9ja1Np emU7DQoNCg0KLSBMYmEgPSAoRUZJX0xCQSlEaXZVNjR4MzJSZW1haW5kZXIgKERpc2tPZmZzZXQs IEJsb2NrU2l6ZSwgJkJsb2NrT2Zmc2V0KTsNCg0KDQotDQoNCg0KLSBSZW1haW5pbmdCeXRlcyA9 IEJ1ZmZlclNpemU7DQoNCg0KLQ0KDQoNCi0gLy8gV3JpdGUgZWl0aGVyIGFsbCB0aGUgcmVtYWlu aW5nIGJ5dGVzLCBvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYnJpbmcNCg0KDQotIC8vIHVz IHVwIHRvIGEgYmxvY2sgYm91bmRhcnksIHdoaWNoZXZlciBpcyBsZXNzLg0KDQoNCi0gLy8gKERp c2tPZmZzZXQgfCAoQmxvY2tTaXplIC0gMSkpICsgMSkgcm91bmRzIERpc2tPZmZzZXQgdXAgdG8g dGhlIG5leHQNCg0KDQotIC8vIGJsb2NrIGJvdW5kYXJ5IChldmVuIGlmIGl0IGlzIGFscmVhZHkg b24gb25lKS4NCg0KDQotIFdyaXRlU2l6ZSA9IE1JTiAoUmVtYWluaW5nQnl0ZXMsICgoRGlza09m ZnNldCB8IChCbG9ja1NpemUgLSAxKSkgKyAxKSAtIERpc2tPZmZzZXQpOw0KDQoNCi0NCg0KDQot IGRvIHsNCg0KDQotIGlmIChXcml0ZVNpemUgPT0gQmxvY2tTaXplKSB7DQoNCg0KLSAvLyBXcml0 ZSBhIGZ1bGwgYmxvY2sNCg0KDQotIFN0YXR1cyA9IE5vckZsYXNoV3JpdGVGdWxsQmxvY2sgKElu c3RhbmNlLCBMYmEsIEJ1ZmZlciwgQmxvY2tTaXplIC8gc2l6ZW9mIChVSU5UMzIpKTsNCg0KDQot IH0gZWxzZSB7DQoNCg0KLSAvLyBXcml0ZSBhIHBhcnRpYWwgYmxvY2sNCg0KDQotIFN0YXR1cyA9 IE5vckZsYXNoV3JpdGVTaW5nbGVCbG9jayAoSW5zdGFuY2UsIExiYSwgQmxvY2tPZmZzZXQsICZX cml0ZVNpemUsIEJ1ZmZlcik7DQoNCg0KLSB9DQoNCg0KLQ0KDQoNCi0gaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KDQoNCi0gcmV0dXJuIFN0YXR1czsNCg0KDQotIH0NCg0KDQotDQoNCg0KLSAv LyBOb3cgY29udGludWUgd3JpdGluZyBlaXRoZXIgYWxsIHRoZSByZW1haW5pbmcgYnl0ZXMgb3Ig c2luZ2xlIGJsb2Nrcy4NCg0KDQotIFJlbWFpbmluZ0J5dGVzIC09IFdyaXRlU2l6ZTsNCg0KDQot IEJ1ZmZlciA9IChVSU5UOCAqKUJ1ZmZlciArIFdyaXRlU2l6ZTsNCg0KDQotIExiYSsrOw0KDQoN Ci0gQmxvY2tPZmZzZXQgPSAwOw0KDQoNCi0gV3JpdGVTaXplID0gTUlOIChSZW1haW5pbmdCeXRl cywgQmxvY2tTaXplKTsNCg0KDQotIH0gd2hpbGUgKFJlbWFpbmluZ0J5dGVzKTsNCg0KDQotDQoN Cg0KLSByZXR1cm4gU3RhdHVzOw0KDQoNCi19DQoNCg0KLQ0KDQoNCkVGSV9TVEFUVVMNCg0KDQpO b3JGbGFzaFJlc2V0ICgNCg0KDQpJTiBOT1JfRkxBU0hfSU5TVEFOQ0UgKkluc3RhbmNlDQoNCg0K ZGlmZiAtLWdpdCBhL1BsYXRmb3JtL0FSTS9Ecml2ZXJzL05vckZsYXNoRHhlL05vckZsYXNoQmxv Y2tJb0R4ZS5jIGIvUGxhdGZvcm0vQVJNL0RyaXZlcnMvTm9yRmxhc2hEeGUvTm9yRmxhc2hCbG9j a0lvRHhlLmMNCmluZGV4IDlkNDczMmM2OTA1YS4uOWI4Yzc2YTE3MWQ0IDEwMDY0NA0KLS0tIGEv UGxhdGZvcm0vQVJNL0RyaXZlcnMvTm9yRmxhc2hEeGUvTm9yRmxhc2hCbG9ja0lvRHhlLmMNCisr KyBiL1BsYXRmb3JtL0FSTS9Ecml2ZXJzL05vckZsYXNoRHhlL05vckZsYXNoQmxvY2tJb0R4ZS5j DQpAQCAtMTIxLDMgKzEyMSwxMzIgQEAgTm9yRmxhc2hCbG9ja0lvRmx1c2hCbG9ja3MgKA0KLy8g Tm90aGluZyB0byBkbyBzbyBqdXN0IHJldHVybiB3aXRob3V0IGVycm9yDQoNCg0KcmV0dXJuIEVG SV9TVUNDRVNTOw0KDQoNCn0NCg0KDQorDQoNCg0KKy8qDQoNCg0KKyBBbHRob3VnaCBEaXNrSW9E eGUgd2lsbCBhdXRvbWF0aWNhbGx5IGluc3RhbGwgdGhlIERpc2tJTyBwcm90b2NvbCB3aGVuZXZl cg0KDQoNCisgd2UgaW5zdGFsbCB0aGUgQmxvY2tJTyBwcm90b2NvbCwgaXRzIGltcGxlbWVudGF0 aW9uIGlzIHN1Yi1vcHRpbWFsIGFzIGl0IHJlYWRzDQoNCg0KKyBhbmQgd3JpdGVzIGVudGlyZSBi bG9ja3MgdXNpbmcgdGhlIEJsb2NrSU8gcHJvdG9jb2wuIEluIGZhY3Qgd2UgY2FuIGFjY2Vzcw0K DQoNCisgTk9SIGZsYXNoIHdpdGggYSBmaW5lciBncmFudWxhcml0eSB0aGFuIHRoYXQsIHNvIHdl IGNhbiBpbXByb3ZlIHBlcmZvcm1hbmNlDQoNCg0KKyBieSBkaXJlY3RseSBwcm9kdWNpbmcgdGhl IERpc2tJTyBwcm90b2NvbC4NCg0KDQorKi8NCg0KDQorDQoNCg0KKy8qKg0KDQoNCisgUmVhZCBC dWZmZXJTaXplIGJ5dGVzIGZyb20gT2Zmc2V0IGludG8gQnVmZmVyLg0KDQoNCisNCg0KDQorIEBw YXJhbSBUaGlzIFByb3RvY29sIGluc3RhbmNlIHBvaW50ZXIuDQoNCg0KKyBAcGFyYW0gTWVkaWFJ ZCBJZCBvZiB0aGUgbWVkaWEsIGNoYW5nZXMgZXZlcnkgdGltZSB0aGUgbWVkaWEgaXMgcmVwbGFj ZWQuDQoNCg0KKyBAcGFyYW0gT2Zmc2V0IFRoZSBzdGFydGluZyBieXRlIG9mZnNldCB0byByZWFk IGZyb20NCg0KDQorIEBwYXJhbSBCdWZmZXJTaXplIFNpemUgb2YgQnVmZmVyDQoNCg0KKyBAcGFy YW0gQnVmZmVyIEJ1ZmZlciBjb250YWluaW5nIHJlYWQgZGF0YQ0KDQoNCisNCg0KDQorIEByZXR2 YWwgRUZJX1NVQ0NFU1MgVGhlIGRhdGEgd2FzIHJlYWQgY29ycmVjdGx5IGZyb20gdGhlIGRldmlj ZS4NCg0KDQorIEByZXR2YWwgRUZJX0RFVklDRV9FUlJPUiBUaGUgZGV2aWNlIHJlcG9ydGVkIGFu IGVycm9yIHdoaWxlIHBlcmZvcm1pbmcgdGhlIHJlYWQuDQoNCg0KKyBAcmV0dmFsIEVGSV9OT19N RURJQSBUaGVyZSBpcyBubyBtZWRpYSBpbiB0aGUgZGV2aWNlLg0KDQoNCisgQHJldHZhbCBFRklf TUVESUFfQ0hBTkdFRCBUaGUgTWVkaWFJZCBkb2VzIG5vdCBtYXRjaCB0aGUgY3VycmVudCBkZXZp Y2UuDQoNCg0KKyBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiBUaGUgcmVhZCByZXF1ZXN0 IGNvbnRhaW5zIGRldmljZSBhZGRyZXNzZXMgdGhhdCBhcmUgbm90DQoNCg0KKyB2YWxpZCBmb3Ig dGhlIGRldmljZS4NCg0KDQorDQoNCg0KKyoqLw0KDQoNCitFRklfU1RBVFVTDQoNCg0KK0VGSUFQ SQ0KDQoNCitOb3JGbGFzaERpc2tJb1JlYWREaXNrICgNCg0KDQorIElOIEVGSV9ESVNLX0lPX1BS T1RPQ09MICpUaGlzLA0KDQoNCisgSU4gVUlOVDMyIE1lZGlhSWQsDQoNCg0KKyBJTiBVSU5UNjQg RGlza09mZnNldCwNCg0KDQorIElOIFVJTlROIEJ1ZmZlclNpemUsDQoNCg0KKyBPVVQgVk9JRCAq QnVmZmVyDQoNCg0KKyApDQoNCg0KK3sNCg0KDQorIE5PUl9GTEFTSF9JTlNUQU5DRSAqSW5zdGFu Y2U7DQoNCg0KKyBVSU5UMzIgQmxvY2tTaXplOw0KDQoNCisgVUlOVDMyIEJsb2NrT2Zmc2V0Ow0K DQoNCisgRUZJX0xCQSBMYmE7DQoNCg0KKw0KDQoNCisgSW5zdGFuY2UgPSBJTlNUQU5DRV9GUk9N X0RJU0tJT19USElTIChUaGlzKTsNCg0KDQorDQoNCg0KKyBpZiAoTWVkaWFJZCAhPSBJbnN0YW5j ZS0+TWVkaWEuTWVkaWFJZCkgew0KDQoNCisgcmV0dXJuIEVGSV9NRURJQV9DSEFOR0VEOw0KDQoN CisgfQ0KDQoNCisNCg0KDQorIEJsb2NrU2l6ZSA9IEluc3RhbmNlLT5NZWRpYS5CbG9ja1NpemU7 DQoNCg0KKyBMYmEgPSAoRUZJX0xCQSlEaXZVNjR4MzJSZW1haW5kZXIgKERpc2tPZmZzZXQsIEJs b2NrU2l6ZSwgJkJsb2NrT2Zmc2V0KTsNCg0KDQorDQoNCg0KKyByZXR1cm4gTm9yRmxhc2hSZWFk IChJbnN0YW5jZSwgTGJhLCBCbG9ja09mZnNldCwgQnVmZmVyU2l6ZSwgQnVmZmVyKTsNCg0KDQor fQ0KDQoNCisNCg0KDQorLyoqDQoNCg0KKyBXcml0ZXMgYSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5 dGVzIHRvIGEgZGV2aWNlLg0KDQoNCisNCg0KDQorIEBwYXJhbSBUaGlzIEluZGljYXRlcyBhIHBv aW50ZXIgdG8gdGhlIGNhbGxpbmcgY29udGV4dC4NCg0KDQorIEBwYXJhbSBNZWRpYUlkIElEIG9m IHRoZSBtZWRpdW0gdG8gYmUgd3JpdHRlbi4NCg0KDQorIEBwYXJhbSBPZmZzZXQgVGhlIHN0YXJ0 aW5nIGJ5dGUgb2Zmc2V0IG9uIHRoZSBsb2dpY2FsIGJsb2NrIEkvTyBkZXZpY2UgdG8gd3JpdGUu DQoNCg0KKyBAcGFyYW0gQnVmZmVyU2l6ZSBUaGUgc2l6ZSBpbiBieXRlcyBvZiBCdWZmZXIuIFRo ZSBudW1iZXIgb2YgYnl0ZXMgdG8gd3JpdGUgdG8gdGhlIGRldmljZS4NCg0KDQorIEBwYXJhbSBC dWZmZXIgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgY29udGFpbmluZyB0aGUgZGF0YSB0byBiZSB3 cml0dGVuLg0KDQoNCisNCg0KDQorIEByZXR2YWwgRUZJX1NVQ0NFU1MgVGhlIGRhdGEgd2FzIHdy aXR0ZW4gY29ycmVjdGx5IHRvIHRoZSBkZXZpY2UuDQoNCg0KKyBAcmV0dmFsIEVGSV9XUklURV9Q Uk9URUNURUQgVGhlIGRldmljZSBjYW4gbm90IGJlIHdyaXR0ZW4gdG8uDQoNCg0KKyBAcmV0dmFs IEVGSV9ERVZJQ0VfRVJST1IgVGhlIGRldmljZSByZXBvcnRlZCBhbiBlcnJvciB3aGlsZSBwZXJm b3JtaW5nIHRoZSB3cml0ZS4NCg0KDQorIEByZXR2YWwgRUZJX05PX01FRElBIFRoZXJlIGlzIG5v IG1lZGlhIGluIHRoZSBkZXZpY2UuDQoNCg0KKyBAcmV0dmFsIEVGSV9NRURJQV9DSEFOR0VEIFRo ZSBNZWRpYUlkIGRvZXMgbm90IG1hdGNoIHRoZSBjdXJyZW50IGRldmljZS4NCg0KDQorIEByZXR2 YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSIFRoZSB3cml0ZSByZXF1ZXN0IGNvbnRhaW5zIGRldmlj ZSBhZGRyZXNzZXMgdGhhdCBhcmUgbm90DQoNCg0KKyB2YWxpZCBmb3IgdGhlIGRldmljZS4NCg0K DQorDQoNCg0KKyoqLw0KDQoNCitFRklfU1RBVFVTDQoNCg0KK0VGSUFQSQ0KDQoNCitOb3JGbGFz aERpc2tJb1dyaXRlRGlzayAoDQoNCg0KKyBJTiBFRklfRElTS19JT19QUk9UT0NPTCAqVGhpcywN Cg0KDQorIElOIFVJTlQzMiBNZWRpYUlkLA0KDQoNCisgSU4gVUlOVDY0IERpc2tPZmZzZXQsDQoN Cg0KKyBJTiBVSU5UTiBCdWZmZXJTaXplLA0KDQoNCisgSU4gVk9JRCAqQnVmZmVyDQoNCg0KKyAp DQoNCg0KK3sNCg0KDQorIE5PUl9GTEFTSF9JTlNUQU5DRSAqSW5zdGFuY2U7DQoNCg0KKyBVSU5U MzIgQmxvY2tTaXplOw0KDQoNCisgVUlOVDMyIEJsb2NrT2Zmc2V0Ow0KDQoNCisgRUZJX0xCQSBM YmE7DQoNCg0KKyBVSU5UTiBSZW1haW5pbmdCeXRlczsNCg0KDQorIFVJTlROIFdyaXRlU2l6ZTsN Cg0KDQorIEVGSV9TVEFUVVMgU3RhdHVzOw0KDQoNCisNCg0KDQorIEluc3RhbmNlID0gSU5TVEFO Q0VfRlJPTV9ESVNLSU9fVEhJUyAoVGhpcyk7DQoNCg0KKw0KDQoNCisgaWYgKE1lZGlhSWQgIT0g SW5zdGFuY2UtPk1lZGlhLk1lZGlhSWQpIHsNCg0KDQorIHJldHVybiBFRklfTUVESUFfQ0hBTkdF RDsNCg0KDQorIH0NCg0KDQorDQoNCg0KKyBCbG9ja1NpemUgPSBJbnN0YW5jZS0+TWVkaWEuQmxv Y2tTaXplOw0KDQoNCisgTGJhID0gKEVGSV9MQkEpRGl2VTY0eDMyUmVtYWluZGVyIChEaXNrT2Zm c2V0LCBCbG9ja1NpemUsICZCbG9ja09mZnNldCk7DQoNCg0KKw0KDQoNCisgUmVtYWluaW5nQnl0 ZXMgPSBCdWZmZXJTaXplOw0KDQoNCisNCg0KDQorIC8vIFdyaXRlIGVpdGhlciBhbGwgdGhlIHJl bWFpbmluZyBieXRlcywgb3IgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGJyaW5nDQoNCg0KKyAv LyB1cyB1cCB0byBhIGJsb2NrIGJvdW5kYXJ5LCB3aGljaGV2ZXIgaXMgbGVzcy4NCg0KDQorIC8v IChEaXNrT2Zmc2V0IHwgKEJsb2NrU2l6ZSAtIDEpKSArIDEpIHJvdW5kcyBEaXNrT2Zmc2V0IHVw IHRvIHRoZSBuZXh0DQoNCg0KKyAvLyBibG9jayBib3VuZGFyeSAoZXZlbiBpZiBpdCBpcyBhbHJl YWR5IG9uIG9uZSkuDQoNCg0KKyBXcml0ZVNpemUgPSBNSU4gKFJlbWFpbmluZ0J5dGVzLCAoKERp c2tPZmZzZXQgfCAoQmxvY2tTaXplIC0gMSkpICsgMSkgLSBEaXNrT2Zmc2V0KTsNCg0KDQorDQoN Cg0KKyBkbyB7DQoNCg0KKyBpZiAoV3JpdGVTaXplID09IEJsb2NrU2l6ZSkgew0KDQoNCisgLy8g V3JpdGUgYSBmdWxsIGJsb2NrDQoNCg0KKyBTdGF0dXMgPSBOb3JGbGFzaFdyaXRlRnVsbEJsb2Nr IChJbnN0YW5jZSwgTGJhLCBCdWZmZXIsIEJsb2NrU2l6ZSAvIHNpemVvZiAoVUlOVDMyKSk7DQoN Cg0KKyB9IGVsc2Ugew0KDQoNCisgLy8gV3JpdGUgYSBwYXJ0aWFsIGJsb2NrDQoNCg0KKyBTdGF0 dXMgPSBOb3JGbGFzaFdyaXRlU2luZ2xlQmxvY2sgKEluc3RhbmNlLCBMYmEsIEJsb2NrT2Zmc2V0 LCAmV3JpdGVTaXplLCBCdWZmZXIpOw0KDQoNCisgfQ0KDQoNCisNCg0KDQorIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsNCg0KDQorIHJldHVybiBTdGF0dXM7DQoNCg0KKyB9DQoNCg0KKw0KDQoN CisgLy8gTm93IGNvbnRpbnVlIHdyaXRpbmcgZWl0aGVyIGFsbCB0aGUgcmVtYWluaW5nIGJ5dGVz IG9yIHNpbmdsZSBibG9ja3MuDQoNCg0KKyBSZW1haW5pbmdCeXRlcyAtPSBXcml0ZVNpemU7DQoN Cg0KKyBCdWZmZXIgPSAoVUlOVDggKilCdWZmZXIgKyBXcml0ZVNpemU7DQoNCg0KKyBMYmErKzsN Cg0KDQorIEJsb2NrT2Zmc2V0ID0gMDsNCg0KDQorIFdyaXRlU2l6ZSA9IE1JTiAoUmVtYWluaW5n Qnl0ZXMsIEJsb2NrU2l6ZSk7DQoNCg0KKyB9IHdoaWxlIChSZW1haW5pbmdCeXRlcyk7DQoNCg0K Kw0KDQoNCisgcmV0dXJuIFN0YXR1czsNCg0KDQorfQ0KDQoNCi0tIA0KMi4yNS4xDQoNCg0KDQoN Cg0KDQoKLT0tPS09LT0tPS09LT0tPS09LT0tPS0KR3JvdXBzLmlvIExpbmtzOiBZb3UgcmVjZWl2 ZSBhbGwgbWVzc2FnZXMgc2VudCB0byB0aGlzIGdyb3VwLgpWaWV3L1JlcGx5IE9ubGluZSAoIzEx OTE2NSk6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzExOTE2NQpNdXRl IFRoaXMgVG9waWM6IGh0dHBzOi8vZ3JvdXBzLmlvL210LzEwNjI2MDEzOC83Njg2MTc2Ckdyb3Vw IE93bmVyOiBkZXZlbCtvd25lckBlZGsyLmdyb3Vwcy5pbwpVbnN1YnNjcmliZTogaHR0cHM6Ly9l ZGsyLmdyb3Vwcy5pby9nL2RldmVsL3Vuc3ViIFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09LT0t PS09LT0tPS09LT0tPS0KCg0K