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 X-Spam-Level: X-Spam-Status: No, score=-15.7 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER, INCLUDES_PATCH,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A31E0C4338F for ; Tue, 24 Aug 2021 08:11:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 726D561101 for ; Tue, 24 Aug 2021 08:11:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 726D561101 Authentication-Results: mail.kernel.org; dmarc=fail (p=quarantine dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 386E789D53; Tue, 24 Aug 2021 08:11:19 +0000 (UTC) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2049.outbound.protection.outlook.com [40.107.93.49]) by gabe.freedesktop.org (Postfix) with ESMTPS id 5379089E2A for ; Tue, 24 Aug 2021 08:11:17 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IOdqS9DNxmoa2GM7dYWKDViaTtC1VOIL4EDkwoVAufOIKLg8F1hmu7yWVJgIPLdMFpfZyAU+lEm0F2tiQ68KqJsatgqErWudceP4vOX/BbSCuUvLom/T4UR8T/7uoSf0CYxAQe81xmxD6BnesBezODngs73muDjHxjTEuwNE8SU83haXuGTZPqr7kfVsTfTv4AYXIhs9r630j6jZhaHJxIXzIEZZIitQHBXjFBrCkcKSSFo5jGJNvkZmpmd/L43VSYKO/BdcQPKjsJgzUflw7MfEjF5YMe2ClXqmX3Ha5Ojc/y5KBP1kgFgPitTPVfJCPNQSG7xAVdvEEGe30Jdm7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9z46w43p6Md+tPoJUVwGjSq8bdMjRd0Lrv+L1vPlOIY=; b=JU+0nR9SYuv1I37GQrBnqP0HqFUZNOiwkEhjdcTgf4mqGhyD+3CrODsBb+kbgtokl2TZKAuBBcn+oBM3h8bUtwgESqZ85343nzId8q0AA1ufbNfkeoJRGqH7cWE2hjk9nftTRz0YKSs53G0tCa+uxrBwNqskU7KuCtJqH+/xIeECtl0aLkPQU7GxOMuTc7IRIIWNGZ37e/qtGWafziO5RIZMtTg8pY2Dl02d3faCAdD+u5o1AxGV8GNJZeH/Tubiwvrz4ru8Vw3GqE8BynT277VRtzBdQjR9lyAgfg0+OsjvhQwAmMu2sqgcpYjOkNo6vWcomRwoEApSRSXOsitOGQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9z46w43p6Md+tPoJUVwGjSq8bdMjRd0Lrv+L1vPlOIY=; b=4fd4uOaS+v/dr9KsRAjyo5EJICjbFYyRY21ZAZjJxitPteDuSgr54+e3soY3n17mMqWHCWfqYypN/td4ElLiEPEDQXq8n+9Z9t3TQ8XTbeN5Z+DaD78MO/sFJyrgmvLNE4BUDZne7phd89wmQDEmFvSkoiodl5o5swo5Bu6IrNw= Received: from SN1PR12MB2382.namprd12.prod.outlook.com (2603:10b6:802:2e::30) by SN6PR12MB2669.namprd12.prod.outlook.com (2603:10b6:805:70::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4457.17; Tue, 24 Aug 2021 07:56:51 +0000 Received: from SN1PR12MB2382.namprd12.prod.outlook.com ([fe80::9449:ffb:5eb0:1179]) by SN1PR12MB2382.namprd12.prod.outlook.com ([fe80::9449:ffb:5eb0:1179%7]) with mapi id 15.20.4436.024; Tue, 24 Aug 2021 07:56:50 +0000 From: "Greathouse, Joseph" To: "Lazar, Lijo" , "Kuehling, Felix" , "amd-gfx@lists.freedesktop.org" Subject: RE: [PATCH 1/3] drm/amdkfd: Allocate SDMA engines more fairly Thread-Topic: [PATCH 1/3] drm/amdkfd: Allocate SDMA engines more fairly Thread-Index: AQHXlYTZrJvI9uxqlkWyMSyOZrAWxquAsFMAgACmaACAAMGjgIAAAN4ggAAttYCAAAFA0A== Date: Tue, 24 Aug 2021 07:56:50 +0000 Message-ID: References: <20210820053245.340945-1-Joseph.Greathouse@amd.com> <6f77bb91-4ee1-3aaf-3ed8-cbccfdbcc0e5@amd.com> <6ef290ca-e79f-c2a2-539e-b5d2a5eb9b02@amd.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: amd.com; dkim=none (message not signed) header.d=none;amd.com; dmarc=none action=none header.from=amd.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4e995af8-1619-45fe-f97c-08d966d4bb24 x-ms-traffictypediagnostic: SN6PR12MB2669: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:8882; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: OUn5/NcmVCNYldMZsppIz4TbNRJDNR42Gzxv8jDkdOD3L4DfPBRiPKtmARbziy2JsZOY3mkM3mI7kjM+DErX3OctJYP8ey5+Jz3Cb/BdW5SRTFUfYK4zF3hhHMmMZH/qSASNH70TZ5ZzY4gGXdoFaRVFsQYH7mnptaddkrOQ0XKnvqt/Yp+4xv1sKNoIsf60sK3omOCAqU/9mIWbjpkB36uxVwPDUD2HNKjC910nTTxUouxeWuFjxYoLVNDyRc/WsMHKiMeMkk/VLhQbltJzn5Kp2rN6E1ZWZechsUC37Q18wooRk1t/hVM7g75BY0DPhaGs9dDc4dClxMZsS/tvQRQ2Xguc3P1wrhWlqzrlN9dbZ9Qj2fy9/eZhBGAL+IyUcTneiZcAUOena/R4wGx/MdcSGRAFmiz9Kk1HYbdsPKtw+4XcUffFWxo3/WNDQzvODPsDq0N+HvrC4HVRfzn2y9tRxGLeAqdoncXrucHSF4v7as3zImaMDVMY6NtQv4sGvSZEvweMiu6GpWA9MPyYa0EtnKx1F6YqHiBChHFWxwAqyw85Zbz4hlWQ+uiujbI5bYrIrNojnnz8iwvD1jM+lA6YwEu2n+ZlFUW3Hj5LMOUaf3VG2+lkZ8eG4g2R1Smm3kgeFUJfkfi01qIcdF4fqZHd7+5OS3J/28yvjPsHRGbU9zg4a/PKtTYqENOkE5Q0gMaCATHGLBn2jdqJ8BeABA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN1PR12MB2382.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(376002)(39860400002)(346002)(136003)(366004)(8676002)(33656002)(86362001)(38100700002)(122000001)(83380400001)(478600001)(9686003)(55016002)(8936002)(71200400001)(66556008)(66476007)(64756008)(110136005)(30864003)(7696005)(316002)(52536014)(5660300002)(76116006)(66446008)(38070700005)(186003)(53546011)(6506007)(66946007)(2906002)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?bVpDUithVjFRbjlqQW9SL05IbUFSblF2VWVldzFxenRFN3gxK1lxYWZTcGNF?= =?utf-8?B?OElMdzIvRlFUZTYwVHc1aWdSMnM1TGEvai9GWkJPS1RTeFVRaGJnSVlaL3pv?= =?utf-8?B?MVdEa3JRQUllTEFrdmdWYkZkWDJvREpPUXpMWE1YamlFdkEwV1JDQmRuMHhZ?= =?utf-8?B?U3lmY2cvSDdXekNiRHFOc28wRkxKWHY5cWs2NmZMZWdFbUc2YWdoVnNhUFFU?= =?utf-8?B?T0VQRGJIaFkrRFU3d0tjcjlCWGlJclhpYkJtV2dWdVZBamgrS1hQUThiT2w0?= =?utf-8?B?ZkxUMzJGdG02TzNIZnV0R2NSZ3dERy9uY1dsU2UrQ2IxZmFEK0l5ZUpXc0lW?= =?utf-8?B?NU4zTmFGMGV2WkxQeTRHVFJSSEJ1ZGg3dWVZVmpodFdlTEtzSHlNMVQ1MDds?= =?utf-8?B?KytlemdwYmRUQld5Zno2MXhUdXBZcHh3Q2hUKzYveCtyaGdqVDZFdlBOUGMv?= =?utf-8?B?UHRBL3ovRXJMUnJaZEpsQmhNckV3Tytsc3hyNHB2eExRRXlGaE42NVMvOUZV?= =?utf-8?B?UXNUZGJHRVFKZnczSjlFWHZhQkxYajE1cVpyQTBIQVpMS3Myek1SMU9DbkUy?= =?utf-8?B?ZEIwQjF5UzIrQVBTNmNkWHlUTUdKeWVXdDN5ajREOEl4blhSMGVHckhBTnFP?= =?utf-8?B?Z25qWVlKNWIyNWg0Y2VQL1VyaGFzN0o2cXF2UWRlaW5OTnlOV0NYSUYrSm4w?= =?utf-8?B?T3hFbWtHZklLSnlHTi9Wdk1SYjFjV2FtNDNpS0RrT2ZHYmFaTU1MYjlGVE5P?= =?utf-8?B?TTZPa1UwdGdMSEVZWW9VVG5MWVlZbE9DRGVmeFBGTm5OYjlZcmZTU1FCNWxy?= =?utf-8?B?ditmazE5bkoyV3NQYlFrUW84clBwaWpweVVwbis5djYwZXZmS1pzVmNDMjl6?= =?utf-8?B?VlE0QjluL0NZN0tPZEdVUkhKSXJEMERDSEk1RlJFZXVtSXhjTWpBMERFWHhS?= =?utf-8?B?bk4wRUxmOFFlcU10YVR6WnIrM1FIL2ZNWTh1SFpaTHh5RGh0MVczbUlhTXZM?= =?utf-8?B?a2hrVlRzQVoySmg0eDdJZHcyaG9zOWFNbmFZWGcxTEdoVmhibjRkTi84K1B3?= =?utf-8?B?SU1aTGpZMGJBdDJJMFpDdCtwL3M2VmxqNWlsQmN3NmZpUlhMc2VIaUlzQ25j?= =?utf-8?B?a2N4bW1YbnpSSFFYdi82Q25xSit3OUFOWHdxNEsvUTF4YUI2NjBjYlU3ZXEv?= =?utf-8?B?NWdtL29pT3UwYzQzSXdkeG1sWlVURGhnc1NnTU1sR3poTGQ0QnZadkIrT2hy?= =?utf-8?B?RnBiYXp4K0FoR0JFeGM0aHZ5MG1aZVR0YkMyUW1SV2R4Vm1wbGx1WXEzZERv?= =?utf-8?B?MExKRlFXZWdzOW5CaWthSXdEMHl0YWx2TFVDMWxibGNRMHVoeHovajhwRkRz?= =?utf-8?B?ZDk4L1Fja2ZxajRsaDRxU0d1ODlGWEFBaTFCaGozclVjUzVpVGRoMGk1Qlh1?= =?utf-8?B?cWhXNFhjYjZMMXFYR25zdHkvQnNLeXQ1Q0VXZEFmdU5FRXB2S2hqcVRFbGE5?= =?utf-8?B?ajk1SnptVCtSSEVMVFlpNGZ5T2R3aEdPSnl5UlJ5SUg3azRxK1ppK1F0Mi9n?= =?utf-8?B?T3pmTHNydklHWnZmbkJUN25PR2FtbGRwVVhRVVpmblh5ZjZsUjdnbGlnVUtX?= =?utf-8?B?Sm5CYytMZ2NkRHl6N243OU1yNFk3U1BlT3UvTC9DTG13bXZNNGpsVXNOV2Zu?= =?utf-8?B?U0hCSnZsWWt2ODdjanYwTFcvZm1NUkJhcjF0QVhwYnh0NkNQU1B5cENDSjdB?= =?utf-8?B?djVRdEx2aEhucnJQMUpnZ1BoSFozcjhRT1Z3Yk01R1lMdndrdXM0ZlB4WXhL?= =?utf-8?B?OXZkVFhmRDZxSFd2NlNqTEx6OUhRRXVtcEFQWnZYRzBzRWR2S2dObjZlakEw?= =?utf-8?Q?SqEGIP417Jhm4?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN1PR12MB2382.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4e995af8-1619-45fe-f97c-08d966d4bb24 X-MS-Exchange-CrossTenant-originalarrivaltime: 24 Aug 2021 07:56:50.7269 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 2AF4vRLWaY1tqELrhfoDGntAiTGs8+NQsp+Xm6/Xf40nJpIylBb2wkamOpG+bjeHenyHd2uLQwsv8Nm7y6bjlw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN6PR12MB2669 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBMYXphciwgTGlqbyA8TGlqby5M YXphckBhbWQuY29tPg0KPiBTZW50OiBUdWVzZGF5LCBBdWd1c3QgMjQsIDIwMjEgMjoyNCBBTQ0K PiBUbzogR3JlYXRob3VzZSwgSm9zZXBoIDxKb3NlcGguR3JlYXRob3VzZUBhbWQuY29tPjsgS3Vl aGxpbmcsIEZlbGl4IDxGZWxpeC5LdWVobGluZ0BhbWQuY29tPjsgYW1kLQ0KPiBnZnhAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggMS8zXSBkcm0vYW1ka2ZkOiBB bGxvY2F0ZSBTRE1BIGVuZ2luZXMgbW9yZSBmYWlybHkNCj4gDQo+IA0KPiANCj4gT24gOC8yNC8y MDIxIDEyOjE5IFBNLCBHcmVhdGhvdXNlLCBKb3NlcGggd3JvdGU6DQo+ID4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IExhemFyLCBMaWpvIDxMaWpvLkxhemFyQGFtZC5j b20+DQo+ID4+IFNlbnQ6IE1vbmRheSwgQXVndXN0IDIzLCAyMDIxIDExOjM3IFBNDQo+ID4+IFRv OiBLdWVobGluZywgRmVsaXggPEZlbGl4Lkt1ZWhsaW5nQGFtZC5jb20+OyBHcmVhdGhvdXNlLCBK b3NlcGggPEpvc2VwaC5HcmVhdGhvdXNlQGFtZC5jb20+OyBhbWQtDQo+ID4+IGdmeEBsaXN0cy5m cmVlZGVza3RvcC5vcmcNCj4gPj4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzNdIGRybS9hbWRrZmQ6 IEFsbG9jYXRlIFNETUEgZW5naW5lcyBtb3JlIGZhaXJseQ0KPiA+Pg0KPiA+PiBPbiA4LzIzLzIw MjEgMTA6MzQgUE0sIEZlbGl4IEt1ZWhsaW5nIHdyb3RlOg0KPiA+Pj4gQW0gMjAyMS0wOC0yMyB1 bSAzOjA4IGEubS4gc2NocmllYiBMYXphciwgTGlqbzoNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4g T24gOC8yMC8yMDIxIDExOjAyIEFNLCBKb3NlcGggR3JlYXRob3VzZSB3cm90ZToNCj4gPj4+Pj4g R2l2ZSBldmVyeSBwcm9jZXNzIGF0IG1vc3Qgb25lIHF1ZXVlIGZyb20gZWFjaCBTRE1BIGVuZ2lu ZS4NCj4gPj4+Pj4gUHJldmlvdXNseSwgd2UgYWxsb2NhdGVkIGFsbCBTRE1BIGVuZ2luZXMgYW5k IHF1ZXVlcyBvbiBhIGZpcnN0LQ0KPiA+Pj4+PiBjb21lLWZpcnN0LXNlcnZlIGJhc2lzLiBUaGlz IG1lYW50IHRoYXQgaXQgd2FzIHBvc3NpYmxlIGZvciB0d28NCj4gPj4+Pj4gcHJvY2Vzc2VzIHJh Y2luZyBvbiB0aGVpciBhbGxvY2F0aW9uIHJlcXVlc3RzIHRvIGVhY2ggZW5kIHVwIHdpdGgNCj4g Pj4+Pj4gdHdvIHF1ZXVlcyBvbiB0aGUgc2FtZSBTRE1BIGVuZ2luZS4gVGhhdCBjb3VsZCBzZXJp YWxpemUgdGhlDQo+ID4+Pj4+IHBlcmZvcm1hbmNlIG9mIGNvbW1hbmRzIHRvIGRpZmZlcmVudCBx dWV1ZXMuDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgbmV3IG1lY2hhbmlzbSBhbGxvd3MgZWFjaCBw cm9jZXNzIGF0IG1vc3QgYSBzaW5nbGUgcXVldWUNCj4gPj4+Pj4gb24gZWFjaCBTRE1BIGVuZ2lu ZS4gUHJvY2Vzc2VzIHdpbGwgY2hlY2sgZm9yIHF1ZXVlIGF2YWlsYWJpbGl0eSBvbg0KPiA+Pj4+ PiBTRE1BIGVuZ2luZSAwLCB0aGVuIDEsIHRoZW4gMiwgZXRjLiBhbmQgb25seSBhbGxvY2F0ZSBv biB0aGF0DQo+ID4+Pj4+IGVuZ2luZSBpZiB0aGVyZSBpcyBhbiBhdmFpbGFibGUgcXVldWUgc2xv dC4gSWYgdGhlcmUgYXJlIG5vDQo+ID4+Pj4+IHF1ZXVlIHNsb3RzIGF2YWlsYWJsZSAob3IgaWYg dGhpcyBwcm9jZXNzIGhhcyBhbHJlYWR5IGFsbG9jYXRlZA0KPiA+Pj4+PiBhIHF1ZXVlIG9uIHRo aXMgZW5naW5lKSwgaXQgbW92ZXMgb24gYW5kIHRyaWVzIHRoZSBuZXh0IGVuZ2luZS4NCj4gPj4+ Pj4NCj4gPj4+Pj4gVGhlIEFsZGViYXJhbiBjaGlwIGhhcyBhIHNtYWxsIHF1aXJrIHRoYXQgU0RN QTAgc2hvdWxkIG9ubHkgYmUNCj4gPj4+Pj4gdXNlZCBieSB0aGUgdmVyeSBmaXJzdCBhbGxvY2F0 aW9uIGZyb20gZWFjaCBwcm9jZXNzLiBJdCBpcyBPSyB0bw0KPiA+Pj4+PiB1c2UgYW55IG90aGVy IFNETUEgZW5naW5lIGF0IGFueSB0aW1lLCBidXQgYWZ0ZXIgdGhlIGZpcnN0IFNETUENCj4gPj4+ Pj4gYWxsb2NhdGlvbiByZXF1ZXN0IGZyb20gYSBwcm9jZXNzLCB0aGUgcmVzdWx0aW5nIGVuZ2lu ZSBtdXN0DQo+ID4+Pj4+IGJlIGZyb20gU0RNQTEgb3IgYWJvdmUuIFRoaXMgcGF0Y2ggaGFuZGxl cyB0aGlzIGNhc2UgYXMgd2VsbC4NCj4gPj4+Pj4NCj4gPj4+Pj4gU2lnbmVkLW9mZi1ieTogSm9z ZXBoIEdyZWF0aG91c2UgPEpvc2VwaC5HcmVhdGhvdXNlQGFtZC5jb20+DQo+ID4+Pj4+IC0tLQ0K PiA+Pj4+PiAgIMKgIC4uLi9kcm0vYW1kL2FtZGtmZC9rZmRfZGV2aWNlX3F1ZXVlX21hbmFnZXIu YyB8IDEzNSArKysrKysrKysrKysrLS0tLS0NCj4gPj4+Pj4gICDCoCBkcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfcHJpdi5owqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsNCj4gPj4+Pj4g ICDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jwqDCoMKgwqDCoCB8 wqDCoCAzICsNCj4gPj4+Pj4gICDCoCAzIGZpbGVzIGNoYW5nZWQsIDEwNyBpbnNlcnRpb25zKCsp LCAzMyBkZWxldGlvbnMoLSkNCj4gPj4+Pj4NCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5jDQo+ID4+Pj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX2RldmljZV9xdWV1ZV9tYW5hZ2VyLmMNCj4g Pj4+Pj4gaW5kZXggZjhmY2U5ZDA1ZjUwLi44NmJkYjc2NWYzNTAgMTAwNjQ0DQo+ID4+Pj4+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVldWVfbWFuYWdlci5j DQo+ID4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1ka2ZkL2tmZF9kZXZpY2VfcXVl dWVfbWFuYWdlci5jDQo+ID4+Pj4+IEBAIC01MiwxMiArNTIsMTQgQEAgc3RhdGljIGludCB1bm1h cF9xdWV1ZXNfY3BzY2goc3RydWN0DQo+ID4+Pj4+IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0s DQo+ID4+Pj4+ICAgwqAgc3RhdGljIGludCBtYXBfcXVldWVzX2Nwc2NoKHN0cnVjdCBkZXZpY2Vf cXVldWVfbWFuYWdlciAqZHFtKTsNCj4gPj4+Pj4gICDCoCDCoCBzdGF0aWMgdm9pZCBkZWFsbG9j YXRlX3NkbWFfcXVldWUoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+ID4+Pj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IHFjbV9wcm9jZXNzX2Rldmlj ZSAqcXBkLA0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3Ry dWN0IHF1ZXVlICpxKTsNCj4gPj4+Pj4gICDCoCDCoCBzdGF0aWMgaW5saW5lIHZvaWQgZGVhbGxv Y2F0ZV9ocWQoc3RydWN0IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sDQo+ID4+Pj4+ICAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcXVldWUgKnEpOw0KPiA+Pj4+ PiAgIMKgIHN0YXRpYyBpbnQgYWxsb2NhdGVfaHFkKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdl ciAqZHFtLCBzdHJ1Y3QNCj4gPj4+Pj4gcXVldWUgKnEpOw0KPiA+Pj4+PiAgIMKgIHN0YXRpYyBp bnQgYWxsb2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwN Cj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcWNtX3Byb2Nl c3NfZGV2aWNlICpxcGQsDQo+ID4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgcXVldWUgKnEpOw0KPiA+Pj4+PiAgIMKgIHN0YXRpYyB2b2lkIGtmZF9wcm9j ZXNzX2h3X2V4Y2VwdGlvbihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspOw0KPiA+Pj4+PiAgIMKg IEBAIC0zNDksNyArMzUxLDcgQEAgc3RhdGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1 Y3QNCj4gPj4+Pj4gZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4gPj4+Pj4gICDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBxLT5waXBlLCBxLT5xdWV1ZSk7DQo+ID4+Pj4+ICAgwqDCoMKg wqDCoCB9IGVsc2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1B IHx8DQo+ID4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIHEtPnByb3BlcnRpZXMudHlwZSA9PSBL RkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpIHsNCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHJldHZh bCA9IGFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IHJldHZhbCA9IGFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxcGQsIHEpOw0KPiA+Pj4+PiAgIMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0dmFsKQ0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGdvdG8gZGVhbGxvY2F0ZV92bWlkOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKg wqDCoCBkcW0tPmFzaWNfb3BzLmluaXRfc2RtYV92bShkcW0sIHEsIHFwZCk7DQo+ID4+Pj4+IEBA IC00MTAsNyArNDEyLDcgQEAgc3RhdGljIGludCBjcmVhdGVfcXVldWVfbm9jcHNjaChzdHJ1Y3QN Cj4gPj4+Pj4gZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4gPj4+Pj4gICDCoMKgwqDCoMKg wqDCoMKgwqAgZGVhbGxvY2F0ZV9ocWQoZHFtLCBxKTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIGVs c2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BIHx8DQo+ID4+ Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVf VFlQRV9TRE1BX1hHTUkpDQo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBkZWFsbG9jYXRlX3NkbWFf cXVldWUoZHFtLCBxKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGRlYWxsb2NhdGVfc2RtYV9x dWV1ZShkcW0sIHFwZCwgcSk7DQo+ID4+Pj4+ICAgwqAgZGVhbGxvY2F0ZV92bWlkOg0KPiA+Pj4+ PiAgIMKgwqDCoMKgwqAgaWYgKGxpc3RfZW1wdHkoJnFwZC0+cXVldWVzX2xpc3QpKQ0KPiA+Pj4+ PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBkZWFsbG9jYXRlX3ZtaWQoZHFtLCBxcGQsIHEpOw0KPiA+ Pj4+PiBAQCAtNDc1LDkgKzQ3Nyw5IEBAIHN0YXRpYyBpbnQgZGVzdHJveV9xdWV1ZV9ub2Nwc2No X2xvY2tlZChzdHJ1Y3QNCj4gPj4+Pj4gZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwNCj4gPj4+ Pj4gICDCoMKgwqDCoMKgIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVf Q09NUFVURSkNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgZGVhbGxvY2F0ZV9ocWQoZHFt LCBxKTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIGVsc2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9 PSBLRkRfUVVFVUVfVFlQRV9TRE1BKQ0KPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqAgZGVhbGxvY2F0 ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBkZWFsbG9jYXRl X3NkbWFfcXVldWUoZHFtLCBxcGQsIHEpOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqAgZWxzZSBpZiAo cS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkNCj4gPj4+Pj4g LcKgwqDCoMKgwqDCoMKgIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShkcW0sIHEpOw0KPiA+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcXBkLCBxKTsNCj4gPj4+ Pj4gICDCoMKgwqDCoMKgIGVsc2Ugew0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBwcl9k ZWJ1ZygicS0+cHJvcGVydGllcy50eXBlICVkIGlzIGludmFsaWRcbiIsDQo+ID4+Pj4+ICAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBxLT5wcm9wZXJ0aWVzLnR5cGUpOw0KPiA+ Pj4+PiBAQCAtMTAzOSw0MiArMTA0MSw5MyBAQCBzdGF0aWMgdm9pZCBwcmVfcmVzZXQoc3RydWN0 DQo+ID4+Pj4+IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0pDQo+ID4+Pj4+ICAgwqDCoMKgwqDC oCBkcW1fdW5sb2NrKGRxbSk7DQo+ID4+Pj4+ICAgwqAgfQ0KPiA+Pj4+PiAgIMKgICtzdGF0aWMg dWludDY0X3Qgc2RtYV9lbmdpbmVfbWFzayhpbnQgZW5naW5lLCBpbnQgbnVtX2VuZ2luZXMpDQo+ ID4+Pj4NCj4gPj4+PiBMb29rcyBtb3JlIGxpa2UgdGhlIHF1ZXVlIG1hc2sgZm9yIGFuIGVuZ2lu ZSwgdGhlIG5hbWUgZG9lc24ndCBtYWtlIGl0DQo+ID4+Pj4gY2xlYXIuDQo+ID4+Pj4NCj4gPj4+ Pj4gK3sNCj4gPj4+Pj4gK8KgwqDCoCB1aW50NjRfdCBtYXNrID0gMDsNCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArwqDCoMKgIGVuZ2luZSAlPSBudW1fZW5naW5lczsNCj4gPj4+Pj4gK8KgwqDCoCB3aGls ZSAoZW5naW5lIDwgKHNpemVvZih1aW50NjRfdCkqOCkpIHsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oMKgIG1hc2sgfD0gMVVMTCA8PCBlbmdpbmU7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBlbmdp bmUgKz0gbnVtX2VuZ2luZXM7DQo+ID4+Pj4+ICvCoMKgwqAgfQ0KPiA+Pj4+PiArwqDCoMKgIHJl dHVybiBtYXNrOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAgwqAgc3RhdGljIGlu dCBhbGxvY2F0ZV9zZG1hX3F1ZXVlKHN0cnVjdCBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0K PiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBxY21fcHJvY2Vz c19kZXZpY2UgKnFwZCwNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBxdWV1ZSAqcSkNCj4gPj4+Pj4gICDCoCB7DQo+ID4+Pj4+IC3CoMKgwqAgaW50 IGJpdDsNCj4gPj4+Pj4gK8KgwqDCoCB1aW50NjRfdCBhdmFpbGFibGVfcXVldWVfYml0bWFwOw0K PiA+Pj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBiaXQsIGVuZ2luZSwgbnVtX2VuZ2luZXM7DQo+ ID4+Pj4+ICvCoMKgwqAgYm9vbCBmb3VuZF9zZG1hID0gZmFsc2U7DQo+ID4+Pj4+ICAgwqAgwqDC oMKgwqDCoCBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUEpIHsN Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChkcW0tPnNkbWFfYml0bWFwID09IDApIHsNCj4g Pj4+Pg0KPiA+Pj4+IFRoaXMgaXMgc3RpbGwgYSB2YWxpZCBvcHRpbWl6YXRpb24gYW5kIG5vIG5l ZWQgdG8gbG9vcCB0aHJvdWdoIGlmDQo+ID4+Pj4gbm90aGluZyBpcyBhdmFpbGFibGUgYW55d2F5 LiBWYWxpZCBmb3IgWEdNSSBsb29wIGFsc28uDQo+ID4+Pj4NCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oMKgIG51bV9lbmdpbmVzID0gZ2V0X251bV9zZG1hX2VuZ2luZXMoZHFtKTsNCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgIGZvcl9lYWNoX3NldF9iaXQoZW5naW5lLCAmKHFwZC0+c2RtYV9lbmdpbmVf Yml0bWFwKSwNCj4gPj4+Pj4gbnVtX2VuZ2luZXMpIHsNCj4gPj4+Pg0KPiA+Pj4+IFByb2JhYmx5 IGEgbmFpdmUgcXVlc3Rpb24gLQ0KPiA+Pj4+DQo+ID4+Pj4gVGhlb3JldGljYWxseSB0aGVyZSBh cmUgOCBxdWV1ZXMgcGVyIGVuZ2luZSBhcyBwZXIgdGhlIG1hc2sgY29kZS4gSW4NCj4gPj4+PiB0 aGUgYmVsb3cgY29kZSwgdGhlcmUgaXMgYW4gYXNzdW1wdGlvbiB0aGF0IGEgcHJvY2VzcyB3aWxs IHVzZSBhdCBiZXN0DQo+ID4+Pj4gbnVtYmVyIG9mIHF1ZXVlcz1tYXggbnVtIG9mIHNkbWEgZW5n aW5lcyBvciB4Z21pIGVuZ2luZXMNCj4gPj4+PiBzaW11bHRhbmVvdXNseS4gSXMgdGhhdCB0cnVl IGFsd2F5cz8gRm9yIGV4OiB0aGVyZSBhcmUgMiBzZG1hIGVuZ2luZXMNCj4gPj4+PiBhbmQgNCBx dWV1ZXMgcGVyIGVuZ2luZS4gQ2FuJ3QgbXVsdGlwbGUgdGhyZWFkcyBvZiBhIHByb2Nlc3MgaW5p dGlhdGUNCj4gPj4+PiBtdWx0aXBsZSBzZG1hIHRyYW5zYWN0aW9ucyA+IG51bWJlciBvZiBzZG1h IGVuZ2luZXMgYXZhaWxhYmxlPyBUaGlzDQo+ID4+Pj4gY29kZSBsaW1pdHMgdGhhdCwgYnV0IEkg ZG9uJ3Qga25vdyBpZiB0aGF0IGlzIGEgcG9zc2libGUgY2FzZS4NCj4gPj4+DQo+ID4+PiBXaGVu IHlvdSB1c2UgbXVsdGlwbGUgU0RNQSBxdWV1ZXMgb24gdGhlIHNhbWUgZW5naW5lLCB0aGUgd29y ayBmcm9tIHRoZQ0KPiA+Pj4gcXVldWVzIGdldHMgc2VyaWFsaXplZC4gWW91IGNhbiBlaXRoZXIg bGV0IHRoZSBTRE1BIGVuZ2luZSBzZXJpYWxpemUNCj4gPj4+IHdvcmsgZnJvbSBtdWx0aXBsZSBx dWV1ZXMsIG9yIGxldCBST0NyIHNlcmlhbGl6ZSB3b3JrIGZyb20gbXVsdGlwbGUNCj4gPj4+IHRo cmVhZHMgb24gdGhlIHNhbWUgU0RNQSBxdWV1ZS4gVGhlcmUgaXMgbm8gb2J2aW91cyBiZW5lZml0 IHRvIGxldCB0aGUNCj4gPj4+IFNETUEgZW5naW5lIGRvIGl0LiBCdXQgdGhlcmUgaXMgYSBkcmF3 YmFjazogRmV3ZXIgcHJvY2Vzc2VzIGdldCB0byB1c2UgU0RNQS4NCj4gPj4+DQo+ID4+DQo+ID4+ IFRoZSBmYWN0IHRoYXQgdGhlcmUgZXhpc3RzIG11bHRpcGxlIHF1ZXVlcyBhbmQgdGhlcmUgaXMg bm8gc3VjaA0KPiA+PiBhc3N1bXB0aW9uIG1hZGUgaW4gZXhpc3RpbmcgbG9naWMgKHByaW9yIHRv IHRoZSBwYXRjaCkgdGVsbHMgdGhhdCB0aGVyZQ0KPiA+PiBpcyBpbmRlZWQgc29tZSBhZHZhbnRh Z2Ugb2YgbWFraW5nIHVzZSBvZiBoYXJkd2FyZSBxdWV1ZXMuIEZvciBleDoNCj4gPj4gc3dpdGNo aW5nIHRvIGRpZmZlcmVudCByaW5nIGJ1ZmZlciBtYXkgbm90IG5lZWQgY29udGV4dCBzYXZlL3Jl c3VibWlzc2lvbi4NCj4gPj4NCj4gPj4gSnVzdCBsaWtlIGRpZmZlcmVudCBwcm9jZXNzZXMsIGRp ZmZlcmVudCB0aHJlYWRzIG9mIHNhbWUgcHJvY2VzcyBtYXkNCj4gPj4gdGFrZSBhZHZhbnRhZ2Ug b2YgbXVsdGlwbGUgcXVldWVzLiBNb3JlIGludGVyZXN0ZWQgdG8gc2VlIHRoZSBpbXBhY3QgaW4N Cj4gPj4gY2FzZXMgd2hlcmUgdGhlIGZvY3VzIGlzIG9uIHNpbmdsZSBwcm9jZXNzIGV4OiBpbXBh Y3Qgb24gcnVubmluZyBzb21lDQo+ID4+IGJlbmNobWFya3Mgb3IgaW4gSFBDIHdoZXJlIGVudGly ZSBoYXJkd2FyZSBpcyBkZWRpY2F0ZWQgZm9yIGEgc3BlY2lmaWMNCj4gPj4gY29tcHV0ZSBwdXJw b3NlLg0KPiA+DQo+ID4gRWFjaCBlbmdpbmUgaGFzIG11bHRpcGxlIHVzZXItbW9kZSBxdWV1ZXMg YmVjYXVzZSB3ZSBleHBlY3QgdG8gc2VlIG11bHRpcGxlIHByb2Nlc3NlcyBzaGFyaW5nIHRoZSBk ZXZpY2UgYXQgdGhlIHNhbWUgdGltZS4gVGhlDQo+IGludGVybmFsIGRhdGFzaGVldHMgZnJvbSB0 aGUgaGFyZHdhcmUgdGVhbSBzdHJvbmdseSBzdWdnZXN0IHVzaW5nIG9uZSB1c2VyLW1vZGUgcXVl dWUgcGVyIGVuZ2luZSBwZXIgcHJvY2Vzcy4NCj4gPg0KPiA+IFdpdGggdGhhdCBpbiBtaW5kLCB0 aGUgUk9DciB1c2VyLW1vZGUgcnVudGltZSBhdHRlbXB0cyB0byBjcmVhdGUsIGF0IG1vc3QsIG9u ZSBxdWV1ZSBwZXIgU0RNQSBlbmdpbmUgd2l0aGluIGVhY2ggcHJvY2Vzcy4gRm9yDQo+IGluc3Rh bmNlLCBST0NyIGNyZWF0ZXMgb25lIHF1ZXVlIGZvciBILT5EIHRyYW5zZmVycyBhbmQgb25lIHF1 ZXVlIGZvciBELT5IIHRyYW5zZmVycy4gV2Ugd2FudCB0aGVzZSBxdWV1ZXMgdG8gYmUgb24gZGlm ZmVyZW50DQo+IGVuZ2luZXMgc28gdGhhdCB3ZSBjYW4gZ2V0IGZ1bGwtZHVwbGV4IFBDSWUgdHJh bnNmZXJzLiBJZiBib3RoIHF1ZXVlcyBhcmUgb24gdGhlIHNhbWUgZW5naW5lLCB0aGUgZW5naW5l IHdpbGwgc2VyaWFsaXplIHRoZSB0cmFuc2ZlcnMNCj4gKGJlY2F1c2UgaXQgY2FuIG9ubHkgd29y ayBvbiBvbmUgY29tbWFuZCBhdCBhIHRpbWUpLCBhbmQgd2Ugd2lsbCBnZXQgaGFsZi1kdXBsZXgu DQo+ID4NCj4gPiBUaGUgcXVldWUgYWxsb2NhdGlvbiBhbGdvcml0aG0gdGhhdCB0aGlzIHBhdGNo IHJlcGxhY2VzIGNvdWxkIGFjY2lkZW50YWxseSB5aWVsZCB0d28gcXVldWVzIG9uIHRoZSBzYW1l IGVuZ2luZS4gSWYgUHJvY2VzcyBBDQo+IGFsbG9jYXRlcyBpdHMgZmlyc3QgcXVldWUsIGl0IHdv dWxkIHJlY2VpdmUgc2RtYTBfcXVldWUwLiBQcm9jZXNzIEIgY291bGQgdGhlbiBhbGxvY2F0ZSBp dHMgZmlyc3QgcXVldWUsIGFuZCBnZXQgc2RtYTFfcXVldWUwLiBUaGVuDQo+IFByb2Nlc3MgQSBj b3VsZCBhbGxvY2F0ZSBpdHMgc2Vjb25kIHF1ZXVlIGFuZCBnZXQgc2RtYTBfcXVldWUxLiBUaGlz IHdvdWxkIHlpZWxkIHVuZGVzaXJhYmxlIGFuZCB1bmV4cGVjdGVkIHNlcmlhbGl6YXRpb24gYmV0 d2Vlbg0KPiBILT5EIGFuZCBELT5IIHRyYW5zZmVycyBpbiBQcm9jZXNzIEEuIEluIGFkZGl0aW9u LCBJIGJlbGlldmUgdGhlIG9sZCBhbGdvcml0aG0gd291bGQgYWxsb3cgYW4gdW5jb29wZXJhdGl2 ZSBwcm9jZXNzIHRvIGFsbG9jYXRlIGFsbA0KPiBTRE1BIHF1ZXVlcyB0byBpdHNlbGYuIExvb2tp bmcgYXQgdGhlIGdpdCBoaXN0b3J5LCBJIGJlbGlldmUgdGhlIG9sZCBhbGxvY2F0b3IgaXMgYmFz aWNhbGx5IHRoZSBzYW1lIGFzIHRoZSBpbml0aWFsIEtGRCBTRE1BIGFsbG9jYXRvciBidWlsdA0K PiBmb3IgS2F2ZXJpLiBJJ20gY29uZmlkZW50IHdlJ3ZlIGxlYXJuZWQgbW9yZSBhYm91dCBob3cg bXVsdGlwbGUgcHJvY2Vzc2VzIHNob3VsZCBzaGFyZSBvdXIgR1BVcyBzaW5jZSB0aGVuLiA6KQ0K PiA+DQo+ID4gVG8geW91ciBsYXN0IHBvaW50OiBldmVuIGlmIHdlIGhhdmUgZGlmZmVyZW50IHRo cmVhZHMgaW4gdGhlIHNhbWUgcHJvY2VzcyBzdWJtaXR0aW5nIHRyYW5zZmVyIHJlcXVlc3RzLCB0 aGUgUk9DciBydW50aW1lIHdpdGhpbiB0aGUNCj4gcHJvY2VzcyB3aWxsIHN1Ym1pdCBhbGwgbGlr ZSB0cmFuc2ZlcnMgKGUuZy4gYWxsIEgtPkQgdHJhbnNmZXJzKSBpbnRvIHRoZSBzYW1lIHF1ZXVl LiBTdWJtaXR0aW5nIHRob3NlIHNhbWUgY29tbWFuZHMgaW50byBkaWZmZXJlbnQNCj4gcXVldWVz IG9uIHRoZSBzYW1lIGVuZ2luZSB3aWxsIG5vdCB5aWVsZCBhbnkgY2xlYXIgcGVyZm9ybWFuY2Ug YmVuZWZpdCBzaW5jZSB0aGUgZW5naW5lIHdpbGwgc2VyaWFsaXplIHRoZSBjb21tYW5kcy4gIEFu ZCBpdCB3aWxsIGxpa2VseQ0KPiB5aWVsZCBzb21lIHBlcmZvcm1hbmNlIGxvc3MgZHVlIHRvIHF1 ZXVlLXN3aXRjaGluZyBvdmVyaGVhZHMgaW4gdGhlIGVuZ2luZS4gSSB0aGluayB0aGlzIHBhdGNo IHlpZWxkcyBhIG1vcmUgZmFpciBhbGxvY2F0aW9uDQo+IG1lY2hhbmlzbSAoZS5nLiwgbm8gcHJv Y2VzcyBjYW4gc3RhcnZlIG91dCBvdGhlciBwcm9jZXNzZXMgYnkgdGFraW5nIGFsbCB0aGUgcXVl dWVzIG9uIGFsbCBlbmdpbmVzKSwgYW5kIGl0IGFsc28gbW9yZSBjbG9zZWx5IG1hdGNoDQo+IHdo YXQgdXNlci1zcGFjZSBleHBlY3RzIChlLmcuLCBkaWZmZXJlbnQgU0RNQSBxdWV1ZXMgY2FuIHJ1 biBjb21tYW5kcyBpbiBwYXJhbGxlbCkuDQo+ID4NCj4gDQo+IFRoYW5rcyBKb2UgZm9yIHByb3Zp ZGluZyBtb3JlIGluZm8gcmVsYXRlZCB0byBST0NyLg0KPiANCj4gT25lIG90aGVyIHRoaW5nIGlz IC0gc2VlbXMgdGhlIHByb2Nlc3Mgd2lsbCBrZWVwIHdhaXRpbmcgZm9yIHRoZSBzZWNvbmQNCj4g cXVldWUgKGFzc3VtaW5nIGZpcnN0IGlzIHN0aWxsIGluIHVzZSkgdG8gYmUgYWxsb3RlZCBhbHdh eXMgb24gYQ0KPiBzZXBhcmF0ZSBlbmdpbmUuIEluIHRoZSBleGFtcGxlIGNpdGVkIGFib3ZlLCBk byB5b3UgZXhwZWN0IGEgY2FzZSB3aGVyZQ0KPiBzZG1hMSBxdWV1ZXMgYXJlIGFsbCBmdWxsIGFu ZCBQcm9jZXNzIEEgaGFzIHRvIHdhaXQgdGlsbCBhIHNkbWExIHF1ZXVlDQo+IGlzIGZyZWUgZXZl biB0aG91Z2ggdGhlcmUgaXMgYSBmcmVlIHF1ZXVlIGF2YWlsYWJsZSBpbiBzZG1hMCAoYnkgdmly dHVlDQo+IG9mIGxvbmcvc2hvcnQgam9icyBzdWJtaXR0ZWQgZWFybGllciBieSBvdGhlciBwcm9j ZXNzZXMpLiBJcyB0aGF0DQo+IHNpdHVhdGlvbiBtYW5hZ2VkIGJ5IFJPQ3I/IE9yLCBhcyB3b3Jz dCBjYXNlIGFsbG9jYXRlIG9uIHNkbWEwIGl0c2VsZiBpZg0KPiBub3RoaW5nIGlzIGF2YWlsYWJs ZSBvbiBvdGhlciBlbmdpbmVzPyBSYXRoZXIgdGhhbiBnb2luZyBpbiBhbnkgb3JkZXIsDQo+IG1h eWJlIGFub3RoZXIgd2F5IGlzIHRvIG9yZGVyIGVuZ2luZXMgYmFzZWQgb24gbWF4IGZyZWUgcXVl dWVzIGFuZCBnaXZlDQo+IHByZWZlcmVuY2UgdG8gdGhlIGZpcnN0IGVuZ2luZSBub3QgYWN0aXZl bHkgdXNlZCBieSB0aGUgcHJvY2Vzcy4NCg0KSSB0aGluayB0aGVyZSBhcmUgYSBmZXcgcGFydHMg dG8gdGhpcyBhbnN3ZXI6DQoNClVzZXItc3BhY2UgaGFzIGFsd2F5cyBiZWVuIHJlc3BvbnNpYmxl IGZvciBoYW5kbGluZyBhbiBhbGxvY2F0aW9uIGZhaWx1cmUgYW5kIGZhbGxpbmcgYmFjayBpbiBz b21lIGNhcGFjaXR5LCBldmVuIGJlZm9yZSB0aGlzIHBhdGNoLiBJZiB0aGUgcHJvY2VzcyByZWNl aXZlcyBhIE5BSyBhbmQgaGFzIG5vIFNETUEgcXVldWVzLCBpdCBtYXkgbmVlZCB0byBmYWxsIGJh Y2sgdG8gYSBibGl0IGNvcHkta2VybmVsIHN1Ym1pdHRlZCB0byBhIGNvbXB1dGUgcXVldWUuIFJP Q3IgZG9lcyB0aGlzIHRvZGF5Lg0KDQpBbm90aGVyIGV4YW1wbGUgb2Ygd2hlbiB0aGlzIGFsbG9j YXRvciBjb3VsZCBOQUsgaXMgKGZvciBleGFtcGxlKSBpZiB0aGlzIHByb2Nlc3MgdHJpZXMgdG8g YWxsb2NhdGUgYSAybmQgUENJZSBxdWV1ZSwgaXQgYWxyZWFkeSBoYXMgYSBxdWV1ZSBvbiBTRE1B MCwgYW5kIFNETUExIGlzIGZ1bGwuIFVzZXItc3BhY2UgY291bGQgYWxzbyB1c2UgYSBibGl0IGtl cm5lbCB0byBoYW5kbGUgdGhpcywgaWYgaXQgd2FudHMgdHJhbnNmZXJzIHRvIHJ1biBpbiBwYXJh bGxlbCAob25lIGRpcmVjdGlvbiBpbiBTRE1BLCBvbmUgd2l0aCBhIGJsaXQpLiBPciBpdCBjb3Vs ZCBkZWNpZGUgdG8gc2VyaWFsaXplIGFsbCB0cmFuc2ZlcnMgY29tbWFuZHMgaW50byB0aGUgc2lu Z2xlIHF1ZXVlIGl0IGFscmVhZHkgaGFzLg0KDQpBIHRoaXJkIHNpdHVhdGlvbiB3b3VsZCBiZSBp ZiBQcm9jZXNzIEEgaW5pdGlhbGx5IHJlcXVlc3RzIGEgcXVldWUgd2hpbGUgU0RNQTAgaXMgZnVs bCwgc28gaXRzIGZpcnN0IHF1ZXVlIGlzIGFsbG9jYXRlZCBvbiBTRE1BMS4gTGF0ZXIsIGFub3Ro ZXIgcHJvY2VzcyBlbmRzIGFuZCBvbmUgb2YgdGhlIFNETUEwIHF1ZXVlcyBpcyBmcmVlZC4gSWYg dGhlIFByb2Nlc3MgQSB0aGVuIHJlcXVlc3RzIGEgc2Vjb25kIFNETUEgcXVldWUsIGl0IHdpbGwg cmVjZWl2ZSBpdCBvbiBTRE1BMC4gKEV4Y2VwdCBvbiBBbGRlYmFyYW4sIGR1ZSB0byB0aGUgaGFy ZHdhcmUgcXVpcmsgbWVudGlvbmVkIGluIHRoZSBjb21taXQgbWVzc2FnZS4gT24gQWxkZWJhcmFu LCB5b3Ugd291bGQgZW5kIHVwIGluIHRoZSBzaXR1YXRpb24gZnJvbSB0aGUgcGFyYWdyYXBoIGFi b3ZlLCB3aXRoIG9uZSBTRE1BMSBxdWV1ZSkuDQoNCkluIG5vbmUgb2YgdGhlc2UgY2FzZXMgd291 bGQgd2UgZXhwZWN0IHVzZXItc3BhY2UgdG8gd2FpdCB1bnRpbCBhIHF1ZXVlIGlzIGZyZWUgYW5k IGtlZXAgdHJ5aW5nIHRvIGFsbG9jYXRlLiBGb3IgYWxsIG9uZSBwcm9jZXNzIGtub3dzLCBzdWNo IGFuIGFsbG9jYXRpb24gbWF5IG5ldmVyIHN1Y2NlZWQuIEltYWdpbmUsIGZvciBpbnN0YW5jZSwg OCBvdGhlciBwcm9jZXNzZXMgdGhhdCBydW4gcGVycGV0dWFsbHkgYW5kIG5ldmVyIHJlbGlucXVp c2ggdGhlaXIgcXVldWUgYWxsb2NhdGlvbnMuIFRoaXMgU0RNQSBhbGxvY2F0aW9ucyBhcmUgbm90 IHRpbWUtc2xpY2VkIG9uIHRvZGF5J3MgR1BVcy4NCg0KQXMgZm9yIHRoZSAicmF0aGVyIHRoYW4g Z29pbmcgaW4gYW55IG9yZGVyIiBzdWdnZXN0aW9uLCB0aGUgM3JkIHBhdGNoIGluIHRoaXMgc2Vy aWVzIGF0dGVtcHRzIHRvIGFkZHJlc3MgdGhpcyBjb25jZXJuIHdpdGhvdXQgYWRkaW5nIGEgbG90 IG9mIGV4dHJhIGNvZGUgY29tcGxleGl0eS4gSSB3b3JyeSB0aGF0IG9yZGVyaW5nIGVuZ2luZXMg YmFzZWQgb24gbWF4IGZyZWUgcXVldWVzOiBhKSB3b3VsZCByZXF1aXJpbmcgbW9yZSBjb21wbGV4 aXR5IHRoYW4gdGhlIGN1cnJlbnQgYml0bWFwLWJhc2VkIGZyZWUtcXVldWUgbGlzdCwgYW5kIGIp IGRvZXNuJ3QgYWxsb3cgdXMgdG8gZWFzaWx5IGhhbmRsZSB0aGUgQWxkZWJhcmFuIHF1aXJrIG1l bnRpb25lZCBhYm92ZSwgd2hpY2ggc3BlY2lmaWNhbGx5IGRlYWxzIHdpdGggU0RNQTAuDQoNClRo YW5rcyBhZ2FpbiwNCi1Kb2UNCg0KPiANCj4gVGhhbmtzLA0KPiBMaWpvDQo+IA0KPiA+IEFuZCB0 aGFua3MgZm9yIHRoZSBjb2RlIHN1Z2dlc3Rpb25zIHVwIGFib3ZlLCBJIHdpbGwgbWFrZSB0aG9z ZSBjaGFuZ2VzIGFzIHJlcXVlc3RlZC4NCj4gPg0KPiA+IFRoYW5rcyENCj4gPiAtSm9lDQo+ID4N Cj4gPj4gVGhhbmtzLA0KPiA+PiBMaWpvDQo+ID4+DQo+ID4+PiBSZWdhcmRzLA0KPiA+Pj4gICDC oCBGZWxpeA0KPiA+Pj4NCj4gPj4+DQo+ID4+Pj4NCj4gPj4+PiBUaGFua3MsDQo+ID4+Pj4gTGlq bw0KPiA+Pj4+DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIERvIG5vdCByZXVz ZSBTRE1BMCBmb3IgYW55IHN1YnNlcXVlbnQgU0RNQSBxdWV1ZQ0KPiA+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogcmVxdWVzdHMgb24gQWxkZWJhcmFuLiBJZiBTRE1BMCdzIHF1ZXVl cyBhcmUgYWxsDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBmdWxsLCB0aGVu IHRoaXMgcHJvY2VzcyBzaG91bGQgbmV2ZXIgdXNlIFNETUEwDQo+ID4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBmb3IgYW55IGZ1cnRoZXIgcmVxdWVzdHMNCj4gPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAoZHFtLT5kZXYtPmRldmljZV9pbmZvLT5hc2ljX2ZhbWlseSA9PSBDSElQX0FMREVCQVJBTiAm Jg0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW5naW5l ID09IDApDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcXBkLT5zZG1h X2VuZ2luZV9iaXRtYXAgJj0gfigxVUxMIDw8IGVuZ2luZSk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZhaWxhYmxlX3F1ZXVlX2JpdG1hcCA9IHNkbWFfZW5n aW5lX21hc2soZW5naW5lLA0KPiA+Pj4+PiBudW1fZW5naW5lcyk7DQo+ID4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGF2YWlsYWJsZV9xdWV1ZV9iaXRtYXAgJj0gZHFtLT5zZG1hX2JpdG1h cDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoIWF2YWls YWJsZV9xdWV1ZV9iaXRtYXApDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY29udGludWU7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIFRha2UgdGhl IHNlbGVjdGVkIGVuZ2luZSBvZmYgdGhlIGxpc3Qgc28gd2Ugd2lsbCBub3QNCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIGFsbG9jYXRlIHR3byBxdWV1ZXMgb250byB0aGUgc2Ft ZSBlbmdpbmUNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiA+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBxcGQtPnNkbWFfZW5naW5lX2JpdG1hcCAmPSB+KDFVTEwg PDwgZW5naW5lKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm91bmRfc2RtYSA9 IHRydWU7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYml0ID0g X19mZnM2NChhdmFpbGFibGVfcXVldWVfYml0bWFwKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZHFtLT5zZG1hX2JpdG1hcCAmPSB+KDFVTEwgPDwgYml0KTsNCj4gPj4+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcS0+c2RtYV9pZCA9IGJpdDsNCj4gPj4+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcS0+cHJvcGVydGllcy5zZG1hX2VuZ2luZV9pZCA9IHEtPnNkbWFfaWQg JSBudW1fZW5naW5lczsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcS0+cHJvcGVy dGllcy5zZG1hX3F1ZXVlX2lkID0gcS0+c2RtYV9pZCAvIG51bV9lbmdpbmVzOw0KPiA+Pj4+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIH0N Cj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghZm91bmRfc2RtYSkgew0KPiA+Pj4+PiAgIMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiTm8gbW9yZSBTRE1BIHF1ZXVlIHRvIGFs bG9jYXRlXG4iKTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4g LUVOT01FTTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiA+Pj4+PiAtDQo+ID4+ Pj4+IC3CoMKgwqDCoMKgwqDCoCBiaXQgPSBfX2ZmczY0KGRxbS0+c2RtYV9iaXRtYXApOw0KPiA+ Pj4+PiAtwqDCoMKgwqDCoMKgwqAgZHFtLT5zZG1hX2JpdG1hcCAmPSB+KDFVTEwgPDwgYml0KTsN Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHEtPnNkbWFfaWQgPSBiaXQ7DQo+ID4+Pj4+IC3CoMKg wqDCoMKgwqDCoCBxLT5wcm9wZXJ0aWVzLnNkbWFfZW5naW5lX2lkID0gcS0+c2RtYV9pZCAlDQo+ ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2V0X251bV9zZG1hX2VuZ2lu ZXMoZHFtKTsNCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIHEtPnByb3BlcnRpZXMuc2RtYV9xdWV1 ZV9pZCA9IHEtPnNkbWFfaWQgLw0KPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdldF9udW1fc2RtYV9lbmdpbmVzKGRxbSk7DQo+ID4+Pj4+ICAgwqDCoMKgwqDCoCB9IGVs c2UgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BX1hHTUkpIHsN Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGlmIChkcW0tPnhnbWlfc2RtYV9iaXRtYXAgPT0gMCkg ew0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgbnVtX2VuZ2luZXMgPSBnZXRfbnVtX3hnbWlfc2Rt YV9lbmdpbmVzKGRxbSk7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoCBmb3JfZWFjaF9zZXRfYml0 KGVuZ2luZSwgJihxcGQtPnhnbWlfc2RtYV9lbmdpbmVfYml0bWFwKSwNCj4gPj4+Pj4gbnVtX2Vu Z2luZXMpIHsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZhaWxhYmxlX3F1ZXVl X2JpdG1hcCA9IHNkbWFfZW5naW5lX21hc2soZW5naW5lLA0KPiA+Pj4+PiBudW1fZW5naW5lcyk7 DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2YWlsYWJsZV9xdWV1ZV9iaXRtYXAg Jj0gZHFtLT54Z21pX3NkbWFfYml0bWFwOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGlmICghYXZhaWxhYmxlX3F1ZXVlX2JpdG1hcCkNCj4gPj4+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLyogVGFrZSB0aGUgc2VsZWN0ZWQgZW5naW5lIG9mZiB0aGUgbGlzdCBzbyB3 ZSB3aWxsIG5vdA0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYWxsb2NhdGUg dHdvIHF1ZXVlcyBvbnRvIHRoZSBzYW1lIGVuZ2luZQ0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICovDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHFwZC0+eGdtaV9z ZG1hX2VuZ2luZV9iaXRtYXAgJj0gfigxVUxMIDw8IGVuZ2luZSk7DQo+ID4+Pj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGZvdW5kX3NkbWEgPSB0cnVlOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJpdCA9IF9fZmZzNjQoYXZhaWxhYmxlX3F1ZXVlX2JpdG1h cCk7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRxbS0+eGdtaV9zZG1hX2JpdG1h cCAmPSB+KDFVTEwgPDwgYml0KTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcS0+ c2RtYV9pZCA9IGJpdDsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyogc2RtYV9l bmdpbmVfaWQgaXMgc2RtYSBpZCBpbmNsdWRpbmcNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqIGJvdGggUENJZS1vcHRpbWl6ZWQgU0RNQXMgYW5kIFhHTUktDQo+ID4+Pj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBvcHRpbWl6ZWQgU0RNQXMuIFRoZSBjYWxjdWxhdGlv biBiZWxvdw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYXNzdW1lcyB0aGUg Zmlyc3QgTiBlbmdpbmVzIGFyZSBhbHdheXMNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIFBDSWUtb3B0aW1pemVkIG9uZXMNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBxLT5wcm9wZXJ0aWVzLnNk bWFfZW5naW5lX2lkID0gZ2V0X251bV9zZG1hX2VuZ2luZXMoZHFtKSArDQo+ID4+Pj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcS0+c2RtYV9pZCAlIGdldF9udW1feGdtaV9zZG1h X2VuZ2luZXMoZHFtKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcS0+cHJvcGVy dGllcy5zZG1hX3F1ZXVlX2lkID0gcS0+c2RtYV9pZCAvDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2V0X251bV94Z21pX3NkbWFfZW5naW5lcyhkcW0pOw0KPiA+Pj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKg IH0NCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghZm91bmRfc2RtYSkgew0KPiA+Pj4+PiAg IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHByX2VycigiTm8gbW9yZSBYR01JIFNETUEgcXVl dWUgdG8gYWxsb2NhdGVcbiIpOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiAtRU5PTUVNOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ID4+Pj4+ IC3CoMKgwqDCoMKgwqDCoCBiaXQgPSBfX2ZmczY0KGRxbS0+eGdtaV9zZG1hX2JpdG1hcCk7DQo+ ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBkcW0tPnhnbWlfc2RtYV9iaXRtYXAgJj0gfigxVUxMIDw8 IGJpdCk7DQo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCBxLT5zZG1hX2lkID0gYml0Ow0KPiA+Pj4+ PiAtwqDCoMKgwqDCoMKgwqAgLyogc2RtYV9lbmdpbmVfaWQgaXMgc2RtYSBpZCBpbmNsdWRpbmcN Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAgKiBib3RoIFBDSWUtb3B0aW1pemVkIFNETUFzIGFu ZCBYR01JLQ0KPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoCAqIG9wdGltaXplZCBTRE1Bcy4gVGhl IGNhbGN1bGF0aW9uIGJlbG93DQo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgICogYXNzdW1lcyB0 aGUgZmlyc3QgTiBlbmdpbmVzIGFyZSBhbHdheXMNCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqAg KiBQQ0llLW9wdGltaXplZCBvbmVzDQo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgICovDQo+ID4+ Pj4+IC3CoMKgwqDCoMKgwqDCoCBxLT5wcm9wZXJ0aWVzLnNkbWFfZW5naW5lX2lkID0gZ2V0X251 bV9zZG1hX2VuZ2luZXMoZHFtKSArDQo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcS0+c2RtYV9pZCAlIGdldF9udW1feGdtaV9zZG1hX2VuZ2luZXMoZHFtKTsNCj4gPj4+ Pj4gLcKgwqDCoMKgwqDCoMKgIHEtPnByb3BlcnRpZXMuc2RtYV9xdWV1ZV9pZCA9IHEtPnNkbWFf aWQgLw0KPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdldF9udW1feGdt aV9zZG1hX2VuZ2luZXMoZHFtKTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4gICDC oCDCoMKgwqDCoMKgIHByX2RlYnVnKCJTRE1BIGVuZ2luZSBpZDogJWRcbiIsIHEtPnByb3BlcnRp ZXMuc2RtYV9lbmdpbmVfaWQpOw0KPiA+Pj4+PiBAQCAtMTA4NCwxNiArMTEzNywzMiBAQCBzdGF0 aWMgaW50IGFsbG9jYXRlX3NkbWFfcXVldWUoc3RydWN0DQo+ID4+Pj4+IGRldmljZV9xdWV1ZV9t YW5hZ2VyICpkcW0sDQo+ID4+Pj4+ICAgwqAgfQ0KPiA+Pj4+PiAgIMKgIMKgIHN0YXRpYyB2b2lk IGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShzdHJ1Y3QgZGV2aWNlX3F1ZXVlX21hbmFnZXIgKmRxbSwN Cj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgcWNtX3Byb2Nl c3NfZGV2aWNlICpxcGQsDQo+ID4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgcXVldWUgKnEpDQo+ID4+Pj4+ICAgwqAgew0KPiA+Pj4+PiArwqDCoMKgIHVp bnQzMl90IGVuZ2luZSA9IHEtPnByb3BlcnRpZXMuc2RtYV9lbmdpbmVfaWQ7DQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gICDCoMKgwqDCoMKgIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVF X1RZUEVfU0RNQSkgew0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocS0+c2RtYV9p ZCA+PSBnZXRfbnVtX3NkbWFfcXVldWVzKGRxbSkpDQo+ID4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcmV0dXJuOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBkcW0tPnNk bWFfYml0bWFwIHw9ICgxVUxMIDw8IHEtPnNkbWFfaWQpOw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKg wqAgLyogRG9uJ3QgZ2l2ZSBTRE1BMCBiYWNrIHRvIGJlIHJlYWxsb2NhdGVkIG9uIEFsZGViYXJh bi4NCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBJdCBpcyBvbmx5IE9LIHRvIHVzZSB0aGlz IGVuZ2luZSBmcm9tIHRoZSBmaXJzdCBhbGxvY2F0aW9uDQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oMKgICogd2l0aGluIGEgcHJvY2Vzcy4NCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8NCj4g Pj4+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmICghKGRxbS0+ZGV2LT5kZXZpY2VfaW5mby0+YXNpY19m YW1pbHkgPT0gQ0hJUF9BTERFQkFSQU4gJiYNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGVuZ2luZSA9PSAwKSkNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcXBkLT5zZG1hX2VuZ2luZV9iaXRtYXAgfD0gKDFVTEwgPDwgZW5naW5lKTsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqAgfSBlbHNlIGlmIChxLT5wcm9wZXJ0aWVzLnR5 cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQo+ID4+Pj4+ICAgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChxLT5zZG1hX2lkID49IGdldF9udW1feGdtaV9zZG1hX3F1ZXVlcyhkcW0pKQ0K PiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybjsNCj4gPj4+Pj4gICDC oMKgwqDCoMKgwqDCoMKgwqAgZHFtLT54Z21pX3NkbWFfYml0bWFwIHw9ICgxVUxMIDw8IHEtPnNk bWFfaWQpOw0KPiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgLyogZW5naW5lIElEIGluIHRoZSBxdWV1 ZSBwcm9wZXJ0aWVzIGlzIHRoZSBnbG9iYWwgZW5naW5lIElELg0KPiA+Pj4+PiArwqDCoMKgwqDC oMKgwqDCoCAqIFRoZSBYR01JIGVuZ2luZSBiaXRtYXAgaWdub3JlcyB0aGUgUENJZS1vcHRpbWl6 ZWQgZW5naW5lcy4NCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKi8NCj4gPj4+Pj4gK8KgwqDC oMKgwqDCoMKgIGVuZ2luZSAtPSBnZXRfbnVtX3NkbWFfZW5naW5lcyhkcW0pOw0KPiA+Pj4+PiAr wqDCoMKgwqDCoMKgwqAgcXBkLT54Z21pX3NkbWFfZW5naW5lX2JpdG1hcCB8PSAoMVVMTCA8PCBl bmdpbmUpOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqAgfQ0KPiA+Pj4+PiAgIMKgIH0NCj4gPj4+Pj4g ICDCoCBAQCAtMTMwMyw3ICsxMzcyLDcgQEAgc3RhdGljIGludCBjcmVhdGVfcXVldWVfY3BzY2go c3RydWN0DQo+ID4+Pj4+IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0sIHN0cnVjdCBxdWV1ZSAq cSwNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIGlmIChxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FV RVVFX1RZUEVfU0RNQSB8fA0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoCBxLT5wcm9wZXJ0 aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQo+ID4+Pj4+ICAgwqDCoMKg wqDCoMKgwqDCoMKgIGRxbV9sb2NrKGRxbSk7DQo+ID4+Pj4+IC3CoMKgwqDCoMKgwqDCoCByZXR2 YWwgPSBhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDC oCByZXR2YWwgPSBhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcXBkLCBxKTsNCj4gPj4+Pj4gICDC oMKgwqDCoMKgwqDCoMKgwqAgZHFtX3VubG9jayhkcW0pOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAocmV0dmFsKQ0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gb3V0Ow0KPiA+Pj4+PiBAQCAtMTM2NSw3ICsxNDM0LDcgQEAgc3RhdGljIGludCBjcmVh dGVfcXVldWVfY3BzY2goc3RydWN0DQo+ID4+Pj4+IGRldmljZV9xdWV1ZV9tYW5hZ2VyICpkcW0s IHN0cnVjdCBxdWV1ZSAqcSwNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIGlmIChxLT5wcm9wZXJ0aWVz LnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQSB8fA0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKg wqDCoCBxLT5wcm9wZXJ0aWVzLnR5cGUgPT0gS0ZEX1FVRVVFX1RZUEVfU0RNQV9YR01JKSB7DQo+ ID4+Pj4+ICAgwqDCoMKgwqDCoMKgwqDCoMKgIGRxbV9sb2NrKGRxbSk7DQo+ID4+Pj4+IC3CoMKg wqDCoMKgwqDCoCBkZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4gPj4+Pj4gK8KgwqDC oMKgwqDCoMKgIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShkcW0sIHFwZCwgcSk7DQo+ID4+Pj4+ICAg wqDCoMKgwqDCoMKgwqDCoMKgIGRxbV91bmxvY2soZHFtKTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKg IH0NCj4gPj4+Pj4gICDCoCBvdXQ6DQo+ID4+Pj4+IEBAIC0xNTM2LDcgKzE2MDUsNyBAQCBzdGF0 aWMgaW50IGRlc3Ryb3lfcXVldWVfY3BzY2goc3RydWN0DQo+ID4+Pj4+IGRldmljZV9xdWV1ZV9t YW5hZ2VyICpkcW0sDQo+ID4+Pj4+ICAgwqAgwqDCoMKgwqDCoCBpZiAoKHEtPnByb3BlcnRpZXMu dHlwZSA9PSBLRkRfUVVFVUVfVFlQRV9TRE1BKSB8fA0KPiA+Pj4+PiAgIMKgwqDCoMKgwqDCoMKg wqDCoCAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9UWVBFX1NETUFfWEdNSSkpIHsN Cj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgIGRlYWxsb2NhdGVfc2RtYV9xdWV1ZShkcW0sIHEpOw0K PiA+Pj4+PiArwqDCoMKgwqDCoMKgwqAgZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcXBkLCBx KTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgcGRkLT5zZG1hX3Bhc3RfYWN0aXZpdHlf Y291bnRlciArPSBzZG1hX3ZhbDsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIH0NCj4gPj4+Pj4gICDC oCBAQCAtMTc1MSw5ICsxODIwLDkgQEAgc3RhdGljIGludCBwcm9jZXNzX3Rlcm1pbmF0aW9uX2Nw c2NoKHN0cnVjdA0KPiA+Pj4+PiBkZXZpY2VfcXVldWVfbWFuYWdlciAqZHFtLA0KPiA+Pj4+PiAg IMKgwqDCoMKgwqAgLyogQ2xlYXIgYWxsIHVzZXIgbW9kZSBxdWV1ZXMgKi8NCj4gPj4+Pj4gICDC oMKgwqDCoMKgIGxpc3RfZm9yX2VhY2hfZW50cnkocSwgJnFwZC0+cXVldWVzX2xpc3QsIGxpc3Qp IHsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHEtPnByb3BlcnRpZXMudHlwZSA9 PSBLRkRfUVVFVUVfVFlQRV9TRE1BKQ0KPiA+Pj4+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk ZWFsbG9jYXRlX3NkbWFfcXVldWUoZHFtLCBxKTsNCj4gPj4+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZGVhbGxvY2F0ZV9zZG1hX3F1ZXVlKGRxbSwgcXBkLCBxKTsNCj4gPj4+Pj4gICDCoMKg wqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAocS0+cHJvcGVydGllcy50eXBlID09IEtGRF9RVUVVRV9U WVBFX1NETUFfWEdNSSkNCj4gPj4+Pj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGVhbGxvY2F0 ZV9zZG1hX3F1ZXVlKGRxbSwgcSk7DQo+ID4+Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRl YWxsb2NhdGVfc2RtYV9xdWV1ZShkcW0sIHFwZCwgcSk7DQo+ID4+Pj4+ICAgwqAgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChxLT5wcm9wZXJ0aWVzLmlzX2FjdGl2ZSkgew0KPiA+Pj4+PiAgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlY3JlbWVudF9xdWV1ZV9jb3VudChkcW0sIHEtPnByb3Bl cnRpZXMudHlwZSk7DQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2Ft ZGtmZC9rZmRfcHJpdi5oDQo+ID4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X3ByaXYuaA0KPiA+Pj4+PiBpbmRleCBhYjgzYjBkZTZiMjIuLmMzOGVlYmM5ZGI0ZCAxMDA2NDQN Cj4gPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2ZkX3ByaXYuaA0KPiA+ Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRfcHJpdi5oDQo+ID4+Pj4+ IEBAIC01NzYsNiArNTc2LDggQEAgc3RydWN0IHFjbV9wcm9jZXNzX2RldmljZSB7DQo+ID4+Pj4+ ICAgwqDCoMKgwqDCoCBzdHJ1Y3QgbGlzdF9oZWFkIHByaXZfcXVldWVfbGlzdDsNCj4gPj4+Pj4g ICDCoCDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBxdWV1ZV9jb3VudDsNCj4gPj4+Pj4gK8KgwqDC oCB1bnNpZ25lZCBsb25nIHNkbWFfZW5naW5lX2JpdG1hcDsNCj4gPj4+Pj4gK8KgwqDCoCB1bnNp Z25lZCBsb25nIHhnbWlfc2RtYV9lbmdpbmVfYml0bWFwOw0KPiA+Pj4+PiAgIMKgwqDCoMKgwqAg dW5zaWduZWQgaW50IHZtaWQ7DQo+ID4+Pj4+ICAgwqDCoMKgwqDCoCBib29sIGlzX2RlYnVnOw0K PiA+Pj4+PiAgIMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGV2aWN0ZWQ7IC8qIGV2aWN0aW9uIGNv dW50ZXIsIDA9YWN0aXZlICovDQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGtmZC9rZmRfcHJvY2Vzcy5jDQo+ID4+Pj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRrZmQva2ZkX3Byb2Nlc3MuYw0KPiA+Pj4+PiBpbmRleCAyMWVjOGExOGNhZDIuLjEzYzg1NjI0 YmY3ZCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRrZmQva2Zk X3Byb2Nlc3MuYw0KPiA+Pj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGtmZC9rZmRf cHJvY2Vzcy5jDQo+ID4+Pj4+IEBAIC0xNDIyLDYgKzE0MjIsNyBAQCBzdHJ1Y3Qga2ZkX3Byb2Nl c3NfZGV2aWNlDQo+ID4+Pj4+ICprZmRfY3JlYXRlX3Byb2Nlc3NfZGV2aWNlX2RhdGEoc3RydWN0 IGtmZF9kZXYgKmRldiwNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBrZmRfcHJvY2VzcyAqcCkNCj4gPj4+ Pj4gICDCoCB7DQo+ID4+Pj4+ICAgwqDCoMKgwqDCoCBzdHJ1Y3Qga2ZkX3Byb2Nlc3NfZGV2aWNl ICpwZGQgPSBOVUxMOw0KPiA+Pj4+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBrZmRfZGV2aWNlX2lu Zm8gKmRldl9pbmZvID0NCj4gPj4+Pj4gZGV2LT5kcW0tPmRldi0+ZGV2aWNlX2luZm87DQo+ID4+ Pj4+ICAgwqAgwqDCoMKgwqDCoCBpZiAoV0FSTl9PTl9PTkNFKHAtPm5fcGRkcyA+PSBNQVhfR1BV X0lOU1RBTkNFKSkNCj4gPj4+Pj4gICDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE5VTEw7DQo+ ID4+Pj4+IEBAIC0xNDQ2LDYgKzE0NDcsOCBAQCBzdHJ1Y3Qga2ZkX3Byb2Nlc3NfZGV2aWNlDQo+ ID4+Pj4+ICprZmRfY3JlYXRlX3Byb2Nlc3NfZGV2aWNlX2RhdGEoc3RydWN0IGtmZF9kZXYgKmRl diwNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIHBkZC0+cXBkLnBxbSA9ICZwLT5wcW07DQo+ID4+Pj4+ ICAgwqDCoMKgwqDCoCBwZGQtPnFwZC5ldmljdGVkID0gMDsNCj4gPj4+Pj4gICDCoMKgwqDCoMKg IHBkZC0+cXBkLm1hcHBlZF9nd3NfcXVldWUgPSBmYWxzZTsNCj4gPj4+Pj4gK8KgwqDCoCBwZGQt PnFwZC5zZG1hX2VuZ2luZV9iaXRtYXAgPQ0KPiA+Pj4+PiBCSVRfVUxMKGRldl9pbmZvLT5udW1f c2RtYV9lbmdpbmVzKSAtIDE7DQo+ID4+Pj4+ICvCoMKgwqAgcGRkLT5xcGQueGdtaV9zZG1hX2Vu Z2luZV9iaXRtYXAgPQ0KPiA+Pj4+PiBCSVRfVUxMKGRldl9pbmZvLT5udW1feGdtaV9zZG1hX2Vu Z2luZXMpIC0gMTsNCj4gPj4+Pj4gICDCoMKgwqDCoMKgIHBkZC0+cHJvY2VzcyA9IHA7DQo+ID4+ Pj4+ICAgwqDCoMKgwqDCoCBwZGQtPmJvdW5kID0gUEREX1VOQk9VTkQ7DQo+ID4+Pj4+ICAgwqDC oMKgwqDCoCBwZGQtPmFscmVhZHlfZGVxdWV1ZWQgPSBmYWxzZTsNCj4gPj4+Pj4NCg==