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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 238E0C433EF for ; Wed, 30 Mar 2022 14:37:17 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S241812AbiC3OjA (ORCPT ); Wed, 30 Mar 2022 10:39:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59872 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1343962AbiC3Oi6 (ORCPT ); Wed, 30 Mar 2022 10:38:58 -0400 Received: from esa.microchip.iphmx.com (esa.microchip.iphmx.com [68.232.154.123]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 373F541FB4; Wed, 30 Mar 2022 07:37:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=microchip.com; i=@microchip.com; q=dns/txt; s=mchp; t=1648651032; x=1680187032; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=JHZxjYCg0U7J27WOkK2X/8UNrEkcfG5BN/4A24fT3wI=; b=qBvb5CtdmZG6MtfJ8R6+fmKnCy/VolJX68d2+Fp7tw1OdXbXj1bPp7nx wvLw6tr0ZnlDqoHXHwjjD/WvethYKDZ3ZDXPXf7BJi7Z42BJIAtvfCliv mNO4hetLO0Aul9zwNH1ADfinsezrLEmgk3epTxAsAQunpNN5U01rFLVgc FbqwbGiC76j/VG4AJu0YRnKRGlfenWMiOSMJlr8+X2GW75E6k5yl997HK ggxyaK8J/6J450yf5JJEE5gSICyKSiPlx7mskm8Ordduokx3iq3ljjCkM 2INHYQVP/X53W3ggYDWw3wjLGhR97JWRDhM2KbDH5Tb/82oEZ1BPlFmG7 A==; X-IronPort-AV: E=Sophos;i="5.90,222,1643698800"; d="scan'208";a="150914881" Received: from smtpout.microchip.com (HELO email.microchip.com) ([198.175.253.82]) by esa4.microchip.iphmx.com with ESMTP/TLS/AES256-SHA256; 30 Mar 2022 07:37:11 -0700 Received: from chn-vm-ex03.mchp-main.com (10.10.85.151) by chn-vm-ex02.mchp-main.com (10.10.85.144) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17; Wed, 30 Mar 2022 07:37:11 -0700 Received: from NAM02-DM3-obe.outbound.protection.outlook.com (10.10.215.89) by email.microchip.com (10.10.87.152) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.17 via Frontend Transport; Wed, 30 Mar 2022 07:37:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Z9RwrEGz9ofoFzFdKRz+CXmgxRnAYmQ/iy8HwjXxG/UV4FlR71jFGN5cGcQUf55s931Gcph1KP8YPTfheauckQdj+L6hDbLC7Chn8U2l7kRhBj/sB3nIyRlHs3sDPKsQvDnWJZmjB8k4CHTmUk8QMBtdJfUGTl7r+2nGJtnemPs3wN28J9v2q0UUePk8gZ2NJfuf2ZGqvWhcjsWlI+a8PIDswRLpWNUb4LC5p4W1fkREM9jijXaDbnDWDFksfYylN6O31h5bJ4u9QDLubiY7ZIdPb86vyv0aoJaS+KWaz7d1vyIWnkAyQD5E0/cxi+sWrmnu/d7ypOMsi0XPlurOSw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=JHZxjYCg0U7J27WOkK2X/8UNrEkcfG5BN/4A24fT3wI=; b=Rk2y7mDorOdjUy04nWaEdwlooEIcdRvNfKpG9aKxjEgjj+vEzupO4MpyhPBXrB51MhkG6H1R3g4+GooDeyqfNgBMa9d9VlO49D4kFRb7ikjdioQk+uNMlRtGBlrQO0BVfUnxYPtd6+ctOY4ozO51QUYKVwSgbOjMJuMSwsogLXv1xGjFEfsW/E7m5sFjOfw4AZWB2QAsWHcp1twfE+b1bYzVKgiNnhtJ+UNx8+E5Bqj1hNKfyYdJRwNtR4E7oy33d42/yTYgJvY9hwMbC6zTpMzpT2rRUqS5EqTcN7lnHp+9xhE/NPHseBNDxZOHk2KblK3yBx5+eK6A0VDaGTUPTw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=microchip.com; dmarc=pass action=none header.from=microchip.com; dkim=pass header.d=microchip.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=microchiptechnology.onmicrosoft.com; s=selector2-microchiptechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=JHZxjYCg0U7J27WOkK2X/8UNrEkcfG5BN/4A24fT3wI=; b=DL3re6b1yUYi3L3HxwGueQHbXZAAV0nGfBhSbg1xAaHnt8iIDVziSZdZdv4zS68xg5Cqui304j+09HKkLMSVojZQVzyeLgNJnhUupsM0sJf8/Iw9//fmsgaIS7izD2JtMS/aP3nzd0j935nHVRuDjHRoqRijxpS5+e92f7ogoRw= Received: from CO1PR11MB5154.namprd11.prod.outlook.com (2603:10b6:303:95::7) by DM5PR11MB1514.namprd11.prod.outlook.com (2603:10b6:4:7::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5123.18; Wed, 30 Mar 2022 14:37:05 +0000 Received: from CO1PR11MB5154.namprd11.prod.outlook.com ([fe80::dc95:437b:6564:f220]) by CO1PR11MB5154.namprd11.prod.outlook.com ([fe80::dc95:437b:6564:f220%7]) with mapi id 15.20.5102.023; Wed, 30 Mar 2022 14:37:05 +0000 From: To: CC: , , , , , , , , , Subject: Re: [PATCH v8 1/2] fpga: microchip-spi: add Microchip MPF FPGA manager Thread-Topic: [PATCH v8 1/2] fpga: microchip-spi: add Microchip MPF FPGA manager Thread-Index: AQHYPiQYBSo2vamJ3kSTtBtrK+3xyazYCtwA Date: Wed, 30 Mar 2022 14:37:05 +0000 Message-ID: <7fcde9aa-c086-33e1-1619-04663bfeff85@microchip.com> References: <20220322191552.13156-1-i.bornyakov@metrotek.ru> <20220322191552.13156-2-i.bornyakov@metrotek.ru> In-Reply-To: <20220322191552.13156-2-i.bornyakov@metrotek.ru> Accept-Language: en-IE, en-US Content-Language: en-IE X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=microchip.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 4fd2f723-fef2-48d9-df47-08da125ac324 x-ms-traffictypediagnostic: DM5PR11MB1514:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BI5YxX7NlYkSEOQ8K4yVDmcgjGmmTEv57GL8869dV7jTJJn0adCp8u2Jf8L1rmo0gUSFPZVTgNs8pSg9EkTnECRs2MFRwME0u6tMKt7znh1sgUZEku3ZHi6kyUZHPvyWuSWFiTRpQm1pfwK6lf7JEwFXhluJyWkl+ueuBHAg8ehTVK6P9U/wctqIQMEfd84BFw0EiNUKMtThafKqVSPLphalozCOQrIscUg/xqbKriSa0qDTguWWoE3+ll5zf7SQ1mSDxkFOBd03CmV/VmrAkvSTRkVw/JCZSes8Q0mfgamZrUTox0Cv3qMAPBYDXLk/wKKYhLcMwJ4Z3iYM/dlCZe3+DFQ71mtwBFFQrdvIkmkq2WaQhsVOV8fFNVyAtIC2xy1pB6klnPQHv/bLTV8uj7gPbGgVSJOSQ+HSLMLVGrFpGygOFhNOybHHcEfMSfUWK4rF1F8p/4ksxRhC8ZyiZPpoHMxcuDK4YxyWr0A0AhqSGM9hUskXqcpaT8yyTiZiNMc9aYOlPMBWm0zjSSz/OmiGmNY4BzzAlVVEnPg4pCgsAEhGO4asPQzGhjbzp8qvwqurpodfavU70JhY5aPpqP1eN09p2SNG1vw+4EqfpgumUQpT/Kpd9LnRsFkTqI/wU22jod4mb+r16pkOxDH7lYwiWqEcoSGSMY8ibISY8A48yOYXxCwhZ1tz+VS87PqsXfKgSqu2GQBdri2PE68NQUoq+1BSZJWS5SwG/mzOQXBlNz7HTTapMLTJo54agH7Deyz6D5hk1RGaNVpV1ysemA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB5154.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(2616005)(26005)(186003)(107886003)(38070700005)(6916009)(83380400001)(66446008)(66556008)(66946007)(53546011)(8936002)(64756008)(6506007)(66476007)(54906003)(4326008)(30864003)(8676002)(76116006)(31696002)(86362001)(38100700002)(508600001)(122000001)(31686004)(316002)(91956017)(6486002)(5660300002)(71200400001)(2906002)(6512007)(7416002)(36756003)(43740500002)(45980500001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?N0tyaytZRksrZmVOSjdyM214cXd3UncwMmFTZjdXVTNXa1RPbjF6SzZNYXBO?= =?utf-8?B?UTF4M1ByWDZ2eXNHT05Db1VqWEZxc0locHhweHlaVGxlWlpNS0o2U3lFbGRD?= =?utf-8?B?TXMvSXNlSXBPSTBPaG9Mdk1RSWJINlNkeFlPNkh4V1d2QUpxNDlHMW9OUTNL?= =?utf-8?B?VkNKdHZDOWU5UFRiYXorck8xQ1NWWXNJeHoxWktjUkJJdzNzZHRZaUZFNE1w?= =?utf-8?B?ZDJ5SzVURTFnMDE0WHJLMGxvNTJTVUN2NENEYTVZUHRjeldwYnIveEJtZlhs?= =?utf-8?B?UDdaK2ROeUs3cGhjZEpVVXh1VHFUdGtsV0ZQVWxDandwYm8wVmZBT1ZMQjN0?= =?utf-8?B?a1QzK2ZzNERUQ2s0T2pzamQ4OUVpbEFKMnB1V3JZbEJaSnh4dEdlYk43aGw0?= =?utf-8?B?dDFsSXFLbGFBejhGdVdsVGZiM0kxVjArY0Q5UEE5UGhpMDRjMFp1STAyUXVp?= =?utf-8?B?KzlGSWpTUVNoQU56ZTFuTmxWdHpMQlZrNml0TUlUU3dWU1pQT3lvUFUvajk3?= =?utf-8?B?Z2lzWGdoYkR5clcvMWExNEVzdEZYOFBHRytCaXFSUVlFKy9JWmlLYzJQR2xW?= =?utf-8?B?UUY0QnU1YzBDWkduNGZzWFYyaURwQThLaFdGZmplUzhvNExHUTMyZmxWRkcz?= =?utf-8?B?dVJWUkFWT0dCOWdBcTVwV2xwWERmdTNTN1dDY1MxYm9WZys3ZG9GYmw1OVZR?= =?utf-8?B?V25FMWFkdEVBWkoycWNLVk9EeGlDamdoU2Z1d1NoQ1g3c3gyYnBYZWVOUElH?= =?utf-8?B?Q0JyUThyb3pmWWlsM1pUcEpaVjNzWUY0dGxFYmd6S2xnclYxQTlJS0d5YUF3?= =?utf-8?B?eklITU1zelUvZ1EycGNLVGFqTnVlNklYOXJBeG9DRklleWpyenRqRlZGWCtL?= =?utf-8?B?UzhUYlZ0V1g4eUpUa0pndDN2TExmTTZJN3NZMHJaSE56Z0REajFtczZyVmcy?= =?utf-8?B?dVprUGlFUnovUUpSdFhxMnJlYm9taXNsaHY4c01QK2pueHIzNzl1K3NXVlFx?= =?utf-8?B?b2RENWVRU0dZSytnbENQOGxXSVA0Ulk2SjZvTEIwVDM2Rm5uOUVuWm9FVHJa?= =?utf-8?B?RlJCeWl6MmJhbGJFcEhlcTFuZSt6ZWZjV2l4czB1UHhaOThOcFJZOFNqYWJn?= =?utf-8?B?dnB5ZTJCTjA5VTVISjVGcFF4SGpaY3h6cUdoUmdBL0RUeEVvM3l4dS9qazVL?= =?utf-8?B?NXJkTnNsYndCdVRYb1ZLMCtsaXRIZUpYdnN2YU43ZDZTL3BlT0lsTWJNSHhF?= =?utf-8?B?bWtPRnBmY2Z2clhSZEZCcVlXcWxzZjFSUHNWUVFveHZJc2ZiWDB4QTZjTXNC?= =?utf-8?B?bWh2VmRmZmtvNFFKTmdYdG9SdlN0NnlXUHdPU29zQ0RzVExmUDlFeTB1S1RZ?= =?utf-8?B?cjJvZDNYTGFmcFJaZUJQa1FRSzhvOEJ0bHY4c1JDY3ByTTA5Y0hMWnlhSGUv?= =?utf-8?B?NEVSclNxUE84SFF3c1QvbEFhZnpFc0kwT0lPTGVZUDhUK3Y2blZNN05rZXNY?= =?utf-8?B?VlBGWk1DMDJ5cW1rTjUwNzJyWTZQcm1CdWNrM0tObXRsQjdhSS9odTBBRmg2?= =?utf-8?B?YWRIL2pTdy9FSDhUem84ZHpkOXUyRFh4bmlXQ0diY3dwTFh2UStsTWU3bDF4?= =?utf-8?B?VE1TOGdtTkpqdmNCa3h3bSt2bXdWekNVRFBTbTNQS1ExdXVKRUlCaWlZdFR1?= =?utf-8?B?MEJiWjAzbCtRaEtlNWIwcCtjMHlhU2hUQi9DOFIzb09xVS9BQjBIYy9pQXJL?= =?utf-8?B?WW51ZFBQcHVTYUkxZEJjOFBNclg2Y09OY3ZxVzdRUlVPMktKbk1TK25JcU5U?= =?utf-8?B?UEJ5bzFHSWNUOEJsQkxLYlpmcUdhTmVPKzkxcUJvTW5uY1llTjNCb1hGdVRy?= =?utf-8?B?WTdwT1FoRU40TEtMUVo2bE1DeXVBYk54b2pLdXI2bFZXL3JyR2dGQ1kwVkJG?= =?utf-8?B?aUFXQ2dNditHS3NwdWcvb3JEVTZuM0hKMU5Qc2Q2b3lLL1hQZFpPWk5ETm4z?= =?utf-8?B?amRWcW50dTJzUVJSMlQrOHJ5Y3FKL3ZhVisyZ1h2RVVmQnRMMC8vcmJON292?= =?utf-8?B?RzBDb0NtYWY3ZTU2ejdQSitTZ1RIenl4Z2hNZ1E3dVRpTVFWdUlMUnMybVds?= =?utf-8?B?Q2NXejM2czVualFJbFF0YlFScFhmRDV3S05PdERWbmNOeVFDNUJwMU0zdHBK?= =?utf-8?B?YWpuYU5VM2hKU1NiODdHbngxVkVnd05VRWNTMWRLRGVpSkExcXF2TjdvQ2ov?= =?utf-8?B?em5OcVYySkNBUzFYQnNKSUd4N050TVFLcWR4U2tPU3ZTR3dhM1lMR2MzdTdC?= =?utf-8?B?djRmbU5QTExyVW9HNHZWZFdvVFJlb2NidDBCYTg1NEpVc1ptWDJDQT09?= Content-Type: text/plain; charset="utf-8" Content-ID: <23D3F212BA4B344C8C8911FB91E4285A@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB5154.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4fd2f723-fef2-48d9-df47-08da125ac324 X-MS-Exchange-CrossTenant-originalarrivaltime: 30 Mar 2022 14:37:05.5270 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 3f4057f3-b418-4d4e-ba84-d55b4e897d88 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: bEwgWDQHmqYI94zEHavUTGua6T+y8Gbd9jjbS/ogJZIkh6CtE4/4gqEVulPSl5MJhYDY9b+NSFvdtxbRsjmwlvDlK/CT57a9X+vPpNQ9Lug= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR11MB1514 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGV5IEl2YW4sDQpCZWVuIHRlc3RpbmcgdGhpcyBhbmQgZ2VuZXJhdGVkIGEgY291cGxlIHF1ZXN0 aW9ucy4NCkkndmUgcHV0IHRoZW0gaW5saW5lIHdoZXJlIHRoZXkgd2VyZSByZWxldmFudC4NClRo YW5rcywNCkNvbm9yLg0KDQpPbiAyMi8wMy8yMDIyIDE5OjE1LCBJdmFuIEJvcm55YWtvdiB3cm90 ZToNCj4gRVhURVJOQUwgRU1BSUw6IERvIG5vdCBjbGljayBsaW5rcyBvciBvcGVuIGF0dGFjaG1l bnRzIHVubGVzcyB5b3Uga25vdyB0aGUgY29udGVudCBpcyBzYWZlDQo+IA0KPiBBZGQgc3VwcG9y dCB0byB0aGUgRlBHQSBtYW5hZ2VyIGZvciBwcm9ncmFtbWluZyBNaWNyb2NoaXAgUG9sYXJmaXJl DQo+IEZQR0FzIG92ZXIgc2xhdmUgU1BJIGludGVyZmFjZSB3aXRoIC5kYXQgZm9ybWF0dGVkIGJp dHNyZWFtIGltYWdlLg0KPiANCj4gU2lnbmVkLW9mZi1ieTogSXZhbiBCb3JueWFrb3YgPGkuYm9y bnlha292QG1ldHJvdGVrLnJ1Pg0KPiAtLS0NCj4gICBkcml2ZXJzL2ZwZ2EvS2NvbmZpZyAgICAg ICAgIHwgIDEwICsNCj4gICBkcml2ZXJzL2ZwZ2EvTWFrZWZpbGUgICAgICAgIHwgICAxICsNCj4g ICBkcml2ZXJzL2ZwZ2EvbWljcm9jaGlwLXNwaS5jIHwgNDQ4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrDQo+ICAgMyBmaWxlcyBjaGFuZ2VkLCA0NTkgaW5zZXJ0aW9ucygrKQ0K PiAgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2ZwZ2EvbWljcm9jaGlwLXNwaS5jDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9mcGdhL0tjb25maWcgYi9kcml2ZXJzL2ZwZ2EvS2NvbmZp Zw0KPiBpbmRleCAyNjAyNWRiYWIzNTMuLjc5MWVjZjQ4NTAzYSAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9mcGdhL0tjb25maWcNCj4gKysrIGIvZHJpdmVycy9mcGdhL0tjb25maWcNCj4gQEAgLTI0 OCw0ICsyNDgsMTQgQEAgY29uZmlnIEZQR0FfTUdSX1ZFUlNBTF9GUEdBDQo+ICAgICAgICAgICAg Y29uZmlndXJlIHRoZSBwcm9ncmFtbWFibGUgbG9naWMoUEwpLg0KPiANCj4gICAgICAgICAgICBU byBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuDQo+ICsNCj4gK2NvbmZp ZyBGUEdBX01HUl9NSUNST0NISVBfU1BJDQo+ICsgICAgICAgdHJpc3RhdGUgIk1pY3JvY2hpcCBQ b2xhcmZpcmUgU1BJIEZQR0EgbWFuYWdlciINCj4gKyAgICAgICBkZXBlbmRzIG9uIFNQSQ0KPiAr ICAgICAgIHNlbGVjdCBDUkNfQ0NJVFQNCj4gKyAgICAgICBoZWxwDQo+ICsgICAgICAgICBGUEdB IG1hbmFnZXIgZHJpdmVyIHN1cHBvcnQgZm9yIE1pY3JvY2hpcCBQb2xhcmZpcmUgRlBHQXMNCj4g KyAgICAgICAgIHByb2dyYW1taW5nIG92ZXIgc2xhdmUgU1BJIGludGVyZmFjZSB3aXRoIC5kYXQg Zm9ybWF0dGVkDQo+ICsgICAgICAgICBiaXRzdHJlYW0gaW1hZ2UuDQo+ICsNCj4gICBlbmRpZiAj IEZQR0ENCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZnBnYS9NYWtlZmlsZSBiL2RyaXZlcnMvZnBn YS9NYWtlZmlsZQ0KPiBpbmRleCA0ZGE1MjczOTQ4ZGYuLmZjYjM4OWNhNDg3MyAxMDA2NDQNCj4g LS0tIGEvZHJpdmVycy9mcGdhL01ha2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvZnBnYS9NYWtlZmls ZQ0KPiBAQCAtMTksNiArMTksNyBAQCBvYmotJChDT05GSUdfRlBHQV9NR1JfWElMSU5YX1NQSSkg ICAgICs9IHhpbGlueC1zcGkubw0KPiAgIG9iai0kKENPTkZJR19GUEdBX01HUl9aWU5RX0ZQR0Ep ICAgICAgICs9IHp5bnEtZnBnYS5vDQo+ICAgb2JqLSQoQ09ORklHX0ZQR0FfTUdSX1pZTlFNUF9G UEdBKSAgICAgKz0genlucW1wLWZwZ2Eubw0KPiAgIG9iai0kKENPTkZJR19GUEdBX01HUl9WRVJT QUxfRlBHQSkgICAgICArPSB2ZXJzYWwtZnBnYS5vDQo+ICtvYmotJChDT05GSUdfRlBHQV9NR1Jf TUlDUk9DSElQX1NQSSkgICArPSBtaWNyb2NoaXAtc3BpLm8NCj4gICBvYmotJChDT05GSUdfQUxU RVJBX1BSX0lQX0NPUkUpICAgICAgICAgKz0gYWx0ZXJhLXByLWlwLWNvcmUubw0KPiAgIG9iai0k KENPTkZJR19BTFRFUkFfUFJfSVBfQ09SRV9QTEFUKSAgICArPSBhbHRlcmEtcHItaXAtY29yZS1w bGF0Lm8NCj4gDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2ZwZ2EvbWljcm9jaGlwLXNwaS5jIGIv ZHJpdmVycy9mcGdhL21pY3JvY2hpcC1zcGkuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBp bmRleCAwMDAwMDAwMDAwMDAuLjVlNzk2NzdjMjlmNA0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2RyaXZlcnMvZnBnYS9taWNyb2NoaXAtc3BpLmMNCj4gQEAgLTAsMCArMSw0NDggQEANCj4gKy8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICsvKg0KPiArICogTWljcm9jaGlw IFBvbGFyZmlyZSBGUEdBIHByb2dyYW1taW5nIG92ZXIgc2xhdmUgU1BJIGludGVyZmFjZS4NCj4g KyAqLw0KPiArDQo+ICsjaW5jbHVkZSA8bGludXgvY3JjLWNjaXR0Lmg+DQo+ICsjaW5jbHVkZSA8 bGludXgvZGVsYXkuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9mcGdhL2ZwZ2EtbWdyLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvbW9kdWxlLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+ DQo+ICsjaW5jbHVkZSA8bGludXgvc3BpL3NwaS5oPg0KPiArDQo+ICsjZGVmaW5lICAgICAgICBN UEZfU1BJX0lTQ19FTkFCTEUgICAgICAweDBCDQo+ICsjZGVmaW5lICAgICAgICBNUEZfU1BJX0lT Q19ESVNBQkxFICAgICAweDBDDQo+ICsjZGVmaW5lICAgICAgICBNUEZfU1BJX1JFQURfU1RBVFVT ICAgICAweDAwDQo+ICsjZGVmaW5lICAgICAgICBNUEZfU1BJX1JFQURfREFUQSAgICAgICAweDAx DQo+ICsjZGVmaW5lICAgICAgICBNUEZfU1BJX0ZSQU1FX0lOSVQgICAgICAweEFFDQo+ICsjZGVm aW5lICAgICAgICBNUEZfU1BJX0ZSQU1FICAgICAgICAgICAweEVFDQo+ICsjZGVmaW5lICAgICAg ICBNUEZfU1BJX1BSR19NT0RFICAgICAgICAweDAxDQo+ICsjZGVmaW5lICAgICAgICBNUEZfU1BJ X1JFTEVBU0UgICAgICAgICAweDIzDQo+ICsNCj4gKyNkZWZpbmUgICAgICAgIE1QRl9TUElfRlJB TUVfU0laRSAgICAgIDE2DQo+ICsNCj4gKyNkZWZpbmUgICAgICAgIE1QRl9IRUFERVJfU0laRV9P RkZTRVQgIDI0DQo+ICsjZGVmaW5lICAgICAgICBNUEZfREFUQV9TSVpFX09GRlNFVCAgICA1NQ0K PiArDQo+ICsjZGVmaW5lICAgICAgICBNUEZfTE9PS1VQX1RBQkxFX1JFQ09SRF9TSVpFICAgICAg ICAgICAgOQ0KPiArI2RlZmluZSAgICAgICAgTVBGX0xPT0tVUF9UQUJMRV9CTE9DS19JRF9PRkZT RVQgICAgICAgIDANCj4gKyNkZWZpbmUgICAgICAgIE1QRl9MT09LVVBfVEFCTEVfQkxPQ0tfU1RB UlRfT0ZGU0VUICAgICAxDQo+ICsNCj4gKyNkZWZpbmUgICAgICAgIE1QRl9DT01QT05FTlRTX1NJ WkVfSUQgIDUNCj4gKyNkZWZpbmUgICAgICAgIE1QRl9CSVRTVFJFQU1fSUQgICAgICAgIDgNCj4g Kw0KPiArI2RlZmluZSAgICAgICAgTVBGX0JJVFNfUEVSX0NPTVBPTkVOVF9TSVpFICAgICAyMg0K PiArDQo+ICsjZGVmaW5lICAgICAgICBNUEZfU1RBVFVTX1BPTExfVElNRU9VVCAxMDAwDQo+ICsj ZGVmaW5lICAgICAgICBNUEZfU1RBVFVTX0JVU1kgICAgICAgICBCSVQoMCkNCj4gKyNkZWZpbmUg ICAgICAgIE1QRl9TVEFUVVNfUkVBRFkgICAgICAgIEJJVCgxKQ0KPiArDQo+ICtzdHJ1Y3QgbXBm X3ByaXYgew0KPiArICAgICAgIHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7DQo+ICsgICAgICAgYm9v bCBwcm9ncmFtX21vZGU7DQo+ICt9Ow0KPiArDQo+ICtzdGF0aWMgZW51bSBmcGdhX21ncl9zdGF0 ZXMgbXBmX29wc19zdGF0ZShzdHJ1Y3QgZnBnYV9tYW5hZ2VyICptZ3IpDQo+ICt7DQo+ICsgICAg ICAgc3RydWN0IG1wZl9wcml2ICpwcml2ID0gbWdyLT5wcml2Ow0KPiArICAgICAgIHN0cnVjdCBz cGlfZGV2aWNlICpzcGk7DQo+ICsgICAgICAgYm9vbCBwcm9ncmFtX21vZGU7DQo+ICsgICAgICAg c3NpemVfdCBzdGF0dXM7DQo+ICsNCj4gKyAgICAgICBwcm9ncmFtX21vZGUgPSBwcml2LT5wcm9n cmFtX21vZGU7DQo+ICsgICAgICAgc3BpID0gcHJpdi0+c3BpOw0KPiArDQo+ICsgICAgICAgc3Rh dHVzID0gc3BpX3c4cjgoc3BpLCBNUEZfU1BJX1JFQURfU1RBVFVTKTsNCj4gKw0KPiArICAgICAg IGlmICghcHJvZ3JhbV9tb2RlICYmICFzdGF0dXMpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4g RlBHQV9NR1JfU1RBVEVfT1BFUkFUSU5HOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIEZQR0FfTUdS X1NUQVRFX1VOS05PV047DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBpbnQgcG9sbF9zdGF0dXNfbm90 X2J1c3koc3RydWN0IHNwaV9kZXZpY2UgKnNwaSwgdTggbWFzaykNCj4gK3sNCj4gKyAgICAgICBz c2l6ZV90IHN0YXR1cywgdGltZW91dCA9IE1QRl9TVEFUVVNfUE9MTF9USU1FT1VUOw0KPiArDQo+ ICsgICAgICAgd2hpbGUgKHRpbWVvdXQtLSkgew0KPiArICAgICAgICAgICAgICAgc3RhdHVzID0g c3BpX3c4cjgoc3BpLCBNUEZfU1BJX1JFQURfU1RBVFVTKTs+ICsgICAgICAgICAgICAgICBpZiAo c3RhdHVzIDwgMCkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4g Kw0KPiArICAgICAgICAgICAgICAgaWYgKCEoc3RhdHVzICYgTVBGX1NUQVRVU19CVVNZKSAmJiAo IW1hc2sgfHwgKHN0YXR1cyAmIG1hc2spKSkNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0 dXJuIHN0YXR1czsNCj4gKw0KPiArICAgICAgICAgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIw MDApOw0KPiArICAgICAgIH0NCj4gKw0KPiArICAgICAgIHJldHVybiAtRUJVU1k7DQo+ICt9DQo+ ICsNCj4gK3N0YXRpYyBpbnQgbXBmX3NwaV93cml0ZShzdHJ1Y3Qgc3BpX2RldmljZSAqc3BpLCBj b25zdCB2b2lkICpidWYsIHNpemVfdCBidWZfc2l6ZSkNCj4gK3sNCj4gKyAgICAgICBpbnQgc3Rh dHVzID0gcG9sbF9zdGF0dXNfbm90X2J1c3koc3BpLCAwKTsNCj4gKw0KPiArICAgICAgIGlmIChz dGF0dXMgPCAwKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsNCj4gKw0KPiArICAg ICAgIHJldHVybiBzcGlfd3JpdGUoc3BpLCBidWYsIGJ1Zl9zaXplKTsNCj4gK30NCj4gKw0KPiAr c3RhdGljIGludCBtcGZfc3BpX3dyaXRlX3RoZW5fcmVhZChzdHJ1Y3Qgc3BpX2RldmljZSAqc3Bp LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnR4YnVm LCBzaXplX3QgdHhidWZfc2l6ZSwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICB2b2lkICpyeGJ1Ziwgc2l6ZV90IHJ4YnVmX3NpemUpDQo+ICt7DQo+ICsgICAgICAgY29uc3Qg dTggcmVhZF9jb21tYW5kW10gPSB7IE1QRl9TUElfUkVBRF9EQVRBIH07DQo+ICsgICAgICAgaW50 IHJldDsNCj4gKw0KPiArICAgICAgIHJldCA9IG1wZl9zcGlfd3JpdGUoc3BpLCB0eGJ1ZiwgdHhi dWZfc2l6ZSk7DQo+ICsgICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiBy ZXQ7DQo+ICsNCj4gKyAgICAgICByZXQgPSBwb2xsX3N0YXR1c19ub3RfYnVzeShzcGksIE1QRl9T VEFUVVNfUkVBRFkpOw0KPiArICAgICAgIGlmIChyZXQgPCAwKQ0KPiArICAgICAgICAgICAgICAg cmV0dXJuIHJldDsNCj4gKw0KPiArICAgICAgIHJldHVybiBzcGlfd3JpdGVfdGhlbl9yZWFkKHNw aSwgcmVhZF9jb21tYW5kLCBzaXplb2YocmVhZF9jb21tYW5kKSwNCj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICByeGJ1ZiwgcnhidWZfc2l6ZSk7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyBpbnQgbXBmX29wc193cml0ZV9pbml0KHN0cnVjdCBmcGdhX21hbmFnZXIgKm1nciwNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGZwZ2FfaW1hZ2VfaW5mbyAqaW5m bywgY29uc3QgY2hhciAqYnVmLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXpl X3QgY291bnQpDQo+ICt7DQo+ICsgICAgICAgY29uc3QgdTggcHJvZ3JhbV9tb2RlW10gPSB7IE1Q Rl9TUElfRlJBTUVfSU5JVCwgTVBGX1NQSV9QUkdfTU9ERSB9Ow0KPiArICAgICAgIGNvbnN0IHU4 IGlzY19lbl9jb21tYW5kW10gPSB7IE1QRl9TUElfSVNDX0VOQUJMRSB9Ow0KPiArICAgICAgIHN0 cnVjdCBtcGZfcHJpdiAqcHJpdiA9IG1nci0+cHJpdjsNCj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNl ICpkZXYgPSAmbWdyLT5kZXY7DQo+ICsgICAgICAgc3RydWN0IHNwaV9kZXZpY2UgKnNwaTsNCj4g KyAgICAgICB1MzIgaXNjX3JldDsNCj4gKyAgICAgICBpbnQgcmV0Ow0KPiArDQo+ICsgICAgICAg aWYgKGluZm8tPmZsYWdzICYgRlBHQV9NR1JfUEFSVElBTF9SRUNPTkZJRykgew0KPiArICAgICAg ICAgICAgICAgZGV2X2VycihkZXYsICJQYXJ0aWFsIHJlY29uZmlndXJhdGlvbiBpcyBub3Qgc3Vw cG9ydGVkXG4iKTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRU9QTk9UU1VQUDsNCj4gKyAg ICAgICB9DQo+ICsNCj4gKyAgICAgICBzcGkgPSBwcml2LT5zcGk7DQo+ICsNCj4gKyAgICAgICBy ZXQgPSBtcGZfc3BpX3dyaXRlX3RoZW5fcmVhZChzcGksIGlzY19lbl9jb21tYW5kLCBzaXplb2Yo aXNjX2VuX2NvbW1hbmQpLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZpc2NfcmV0LCBzaXplb2YoaXNjX3JldCkpOw0KPiArICAgICAgIGlmIChyZXQgfHwgaXNjX3Jl dCkgew0KPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZW5hYmxlIElT QzogJWRcbiIsIHJldCA/IDogaXNjX3JldCk7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVG QVVMVDsNCj4gKyAgICAgICB9DQoNClNvLCBteSB0ZXN0IGJvYXJkIGZvciB0aGlzIGhhcyBoYWQg YSBQb2xhckZpcmUgU29DLCBub3QgYSBzdGFuZGFyZA0KUG9sYXJGaXJlLiBJIHJhbiBpbnRvIHNv bWUgcHJvYmxlbXMgd2l0aCB0aGUgSVNDIGVuYWJsZSBjb2RlLCBkdWUgdG8NCmEgc2VxdWVuY2Ug ZXJyb3IuIEFmdGVyIHNlbmRpbmcgdGhlIFNQSV9JU0NfRU5BQkxFLCB5b3UgdGhlbiBkbyBhDQpw b2xsX3N0YXR1c19ub3RfYnVzeSB0byBob2xkIHVudGlsIHlvdSBzZWUgYSBTVEFUVVNfUkVBRFku DQpwb2xsX3N0YXR1c19ub3RfYnVzeSBkb2VzIGEgdzhyOCB0byByZXF1ZXN0IGFuZCB0aGVuIHJl YWQgdGhlIHN0YXR1cywNCmFuZCB5b3UgZXhwZWN0IGEgc2VxdWVuY2UgYXMgYmVsb3c6DQoNCm9w OiAgICAgdyAgICAgICB3ICAgciAgIHcgICByDQpNOgkweEIJMHgwCTB4MA0KUzogICAJCSAgICAw eDEJICAgIDB4Mg0KDQpJIGNvdWxkIG5vdCBnZXQgcGFzdCB0aGlzIGNoZWNrICYgaXQgd291bGQg anVzdCBwb2xsIHVudGlsIHRoZQ0KdGltZW91dC4gV2hhdCBJIHNhdyBvbiBhIHByb3RvY29sIGFu YWx5c2VyIHdhcyBtb3JlIGxpa2Ugc286DQoNCm9wOiAgICAgdyAgICAgICB3ICAgciAgICB3ICAg cg0KTToJMHhCCTB4MCAgICAgIDB4MA0KUzogICAJCTB4MSAweDAgIDB4MiAweDANCg0KU28gdGhl IHJlYWQgaW4gdGhhdCB3OHI4IHdvdWxkIGFsd2F5cyBnZXQgYSB6ZXJvIGJhY2sgYW5kIHRoZW4g dGltZSBvdXQuDQpDaGFuZ2luZyB0aGUgcG9sbCBmdW5jdGlvbiAoanVzdCBmb3IgaXNjKSB0byBv bmx5IHJlYWQgZ2F2ZToNCg0Kb3A6ICAgICB3ICAgICAgIHIgICAgICAgcg0KTToJMHhCCTB4MAkw eDANClM6ICAgCQkweDEJMHgyDQoNCkZvciB0aGUgY29kZSBhZnRlciB0aGUgSVNDIGVuYWJsZSwg SSByZXZlcnRlZCB0byB5b3VyIGltcGxlbWVudGF0aW9uDQpvZiB0aGUgcG9sbCBmdW5jdGlvbiAm IHRoZSByZXN0IG9mIHRoZSBwcm9ncmFtbWluZyBzZXF1ZW5jZSByYW4uDQoNCkkgc3Bva2UgdG8g dGhlIGd1eXMgdGhhdCB3cm90ZSB0aGUgSFcgYWJvdXQgdGhpcywgYW5kIHRoZXkgc2FpZCB0aGF0 DQpyZWFkaW5nIHRoZSBzdGF0dXMgYmFjayAqYXMqIHRoZSAweDAgdGhlIHBvbGwgY29tbWFuZCBp cyBjbG9ja2VkIGluIGlzDQp0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyLg0KVGhleSBhbHNvIHNhaWQg dGhhdCBNUEYgc2hvdWxkIHdvcmsgaWRlbnRpY2FsbHkgdG8gYW4gTVBGUyBhbmQgSSB3YXMgdW5h YmxlDQp0byBmaW5kIGEgZG9jdW1lbnRlZCBkaWZmZXJlbmNlIGJldHdlZW4gTVBGIGFuZCBNUEZT IG90aGVyIHRoYW4gdGhlIGVudm0sDQp3aGljaCBpcyBhbiBvcHRpb25hbCBjb21wb25lbnQgYW55 d2F5Lg0KDQpCdXQgSSBjYW4gb25seSBhc3N1bWUgdGhhdCB3aGF0IHlvdSB3ZXJlIGRvaW5nIHdv cmtlZCBmb3IgeW91LCBzbyBpZg0KeW91IGNvdWxkIHBvc3NpYmx5IHNoYXJlIHNvbWUgd2F2ZWZv cm1zIG9mIHRoZSB3cml0ZV9pbml0IHNlcXVlbmNlDQp0aGF0J2QgYmUgZ3JlYXQuIE9yIGlmIHRo ZXJlIGlzIHNvbWV0aGluZyB0aGF0IHlvdSB0aGluayBJIGFtDQpvdmVybG9va2luZywgcGxlYXNl IGxldCBtZSBrbm93Lg0KDQo+ICsNCj4gKyAgICAgICByZXQgPSBtcGZfc3BpX3dyaXRlKHNwaSwg cHJvZ3JhbV9tb2RlLCBzaXplb2YocHJvZ3JhbV9tb2RlKSk7DQo+ICsgICAgICAgaWYgKHJldCkg ew0KPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZW50ZXIgcHJvZ3Jh bSBtb2RlOiAlZFxuIiwgcmV0KTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsg ICAgICAgfQ0KPiArDQo+ICsgICAgICAgcHJpdi0+cHJvZ3JhbV9tb2RlID0gdHJ1ZTsNCj4gKw0K PiArICAgICAgIHJldHVybiAwOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgaW50IGdldF9zZ3RfZGF0 YShzdHJ1Y3Qgc2dfdGFibGUgKnNndCwgc2l6ZV90IG9mZnNldCwgdm9pZCAqZGF0YSwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRhdGFfc2l6ZSkNCj4gK3sNCj4gKyAgICAgICBz dHJ1Y3Qgc2dfbWFwcGluZ19pdGVyIG1pdGVyOw0KPiArICAgICAgIHNpemVfdCByZW1haW5kZXI7 DQo+ICsNCj4gKyAgICAgICBzZ19taXRlcl9zdGFydCgmbWl0ZXIsIHNndC0+c2dsLCBzZ3QtPm5l bnRzLCBTR19NSVRFUl9GUk9NX1NHKTsNCj4gKyAgICAgICB3aGlsZSAoc2dfbWl0ZXJfbmV4dCgm bWl0ZXIpKSB7DQo+ICsgICAgICAgICAgICAgICBpZiAob2Zmc2V0IDwgbWl0ZXIubGVuZ3RoKQ0K PiArICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4gKw0KPiArICAgICAgICAgICAgICAg b2Zmc2V0IC09IG1pdGVyLmxlbmd0aDsNCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICBpZiAo IW1pdGVyLmFkZHIpIHsNCj4gKyAgICAgICAgICAgICAgIHNnX21pdGVyX3N0b3AoJm1pdGVyKTsN Cj4gKyAgICAgICAgICAgICAgIHJldHVybiAtRUZBVUxUOw0KPiArICAgICAgIH0NCj4gKw0KPiAr ICAgICAgIHJlbWFpbmRlciA9IG1heCgoc3NpemVfdCkwLCAoc3NpemVfdClvZmZzZXQgKyAoc3Np emVfdClkYXRhX3NpemUgLQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAoc3NpemVfdCltaXRl ci5sZW5ndGgpOw0KPiArDQo+ICsgICAgICAgbWVtY3B5KGRhdGEsIG1pdGVyLmFkZHIgKyBvZmZz ZXQsIGRhdGFfc2l6ZSAtIHJlbWFpbmRlcik7DQo+ICsNCj4gKyAgICAgICB3aGlsZSAocmVtYWlu ZGVyICYmIHNnX21pdGVyX25leHQoJm1pdGVyKSkgew0KPiArICAgICAgICAgICAgICAgbWVtY3B5 KGRhdGEgKyBkYXRhX3NpemUgLSByZW1haW5kZXIsIG1pdGVyLmFkZHIsDQo+ICsgICAgICAgICAg ICAgICAgICAgICAgbWluKHJlbWFpbmRlciwgbWl0ZXIubGVuZ3RoKSk7DQo+ICsgICAgICAgICAg ICAgICByZW1haW5kZXIgPSBtYXgoKHNzaXplX3QpMCwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoc3NpemVfdClyZW1haW5kZXIgLSAoc3NpemVfdCltaXRlci5sZW5ndGgpOw0K PiArICAgICAgIH0NCj4gKyAgICAgICBzZ19taXRlcl9zdG9wKCZtaXRlcik7DQo+ICsNCj4gKyAg ICAgICBpZiAocmVtYWluZGVyKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIC1FRkFVTFQ7DQo+ ICsNCj4gKyAgICAgICByZXR1cm4gMDsNCj4gK30NCj4gKw0KPiArc3RhdGljIHNzaXplX3QgbG9v a3VwX2Jsb2NrX3N0YXJ0KHN0cnVjdCBzZ190YWJsZSAqc2d0LCBpbnQgaWQpDQo+ICt7DQo+ICsg ICAgICAgc2l6ZV90IGJsb2NrX3N0YXJ0X29mZnNldCwgYmxvY2tfaWRfb2Zmc2V0LCBpOw0KPiAr ICAgICAgIHU4IGhlYWRlcl9zaXplLCBibG9ja3NfbnVtLCBibG9ja19pZDsNCj4gKyAgICAgICB1 MzIgYmxvY2tfc3RhcnQ7DQo+ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIHJldCA9 IGdldF9zZ3RfZGF0YShzZ3QsIE1QRl9IRUFERVJfU0laRV9PRkZTRVQsICZoZWFkZXJfc2l6ZSwN Cj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGhlYWRlcl9zaXplKSk7DQo+ICsg ICAgICAgaWYgKHJldCkNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsNCj4gKyAg ICAgICByZXQgPSBnZXRfc2d0X2RhdGEoc2d0LCBoZWFkZXJfc2l6ZSAtIDEsICZibG9ja3NfbnVt LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYmxvY2tzX251bSkpOw0KPiAr ICAgICAgIGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsg ICAgICAgZm9yIChpID0gMDsgaSA8IGJsb2Nrc19udW07IGkrKykgew0KPiArICAgICAgICAgICAg ICAgYmxvY2tfaWRfb2Zmc2V0ID0gaGVhZGVyX3NpemUgKw0KPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgaSAqIE1QRl9MT09LVVBfVEFCTEVfUkVDT1JEX1NJWkUgKw0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVBGX0xPT0tVUF9UQUJMRV9CTE9DS19JRF9P RkZTRVQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAgIHJldCA9IGdldF9zZ3RfZGF0YShzZ3QsIGJs b2NrX2lkX29mZnNldCwgJmJsb2NrX2lkLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZihibG9ja19pZCkpOw0KPiArICAgICAgICAgICAgICAgaWYgKHJldCkNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4gKw0KPiArICAgICAgICAgICAg ICAgaWYgKGJsb2NrX2lkID09IGlkKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGJsb2Nr X3N0YXJ0X29mZnNldCA9IGhlYWRlcl9zaXplICsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgaSAqIE1QRl9MT09LVVBfVEFCTEVfUkVDT1JEX1NJWkUgKw0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNUEZfTE9PS1VQ X1RBQkxFX0JMT0NLX1NUQVJUX09GRlNFVDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAg ICByZXQgPSBnZXRfc2d0X2RhdGEoc2d0LCBibG9ja19zdGFydF9vZmZzZXQsICZibG9ja19zdGFy dCwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihi bG9ja19zdGFydCkpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0KQ0KPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsNCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgcmV0dXJuIGxlMzJfdG9fY3B1KGJsb2NrX3N0YXJ0KTsNCj4gKyAgICAg ICAgICAgICAgIH0NCj4gKyAgICAgICB9DQo+ICsNCj4gKyAgICAgICByZXR1cm4gLUVGQVVMVDsN Cj4gK30NCj4gKw0KPiArc3RhdGljIHNzaXplX3QgcGFyc2VfYml0c3RyZWFtX3NpemUoc3RydWN0 IHNnX3RhYmxlICpzZ3QpDQo+ICt7DQo+ICsgICAgICAgc2l6ZV90IGNvbXBvbmVudF9zaXplX2J5 dGVfbnVtLCBjb21wb25lbnRfc2l6ZV9ieXRlX29mZiwNCj4gKyAgICAgICAgICAgICAgaSwgYml0 c3RyZWFtX3NpemUgPSAwOw0KPiArICAgICAgIHNzaXplX3QgY29tcG9uZW50c19zaXplX3N0YXJ0 Ow0KPiArICAgICAgIHUxNiBjb21wb25lbnRzX251bTsNCj4gKyAgICAgICB1MzIgY29tcG9uZW50 X3NpemU7DQo+ICsgICAgICAgaW50IHJldDsNCj4gKw0KPiArICAgICAgIHJldCA9IGdldF9zZ3Rf ZGF0YShzZ3QsIE1QRl9EQVRBX1NJWkVfT0ZGU0VULCAmY29tcG9uZW50c19udW0sDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihjb21wb25lbnRzX251bSkpOw0KPiArICAgICAg IGlmIChyZXQpDQo+ICsgICAgICAgICAgICAgICByZXR1cm4gcmV0Ow0KPiArDQo+ICsgICAgICAg Y29tcG9uZW50c19udW0gPSBsZTE2X3RvX2NwdShjb21wb25lbnRzX251bSk7DQoNCk5vdCBleHBl Y3RpbmcgeW91IHRvIGRvIHRoaXMgYXQgYWxsIHNpbmNlIHlvdSBkb24ndCBoYXZlIG9uZSwgYnV0 IHRoaXMNCndpbGwgbmVlZCB0byBiZSBleHRlbmRlZCBmb3IgcG9sYXJmaXJlIHNvYyBzaW5jZSBj b21wb25lbnRzXyogZG9lc24ndA0KaW5jbHVkZSB0aGUgZW52bSB3aGljaCBoYXMgaXRzIG93biBw YXJhbWV0ZXIuDQoNCj4gKw0KPiArICAgICAgIGNvbXBvbmVudHNfc2l6ZV9zdGFydCA9IGxvb2t1 cF9ibG9ja19zdGFydChzZ3QsIE1QRl9DT01QT05FTlRTX1NJWkVfSUQpOw0KPiArICAgICAgIGlm IChjb21wb25lbnRzX3NpemVfc3RhcnQgPCAwKQ0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGNv bXBvbmVudHNfc2l6ZV9zdGFydDsNCj4gKw0KPiArICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb21w b25lbnRzX251bTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICBjb21wb25lbnRfc2l6ZV9ieXRl X251bSA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIChpICogTVBGX0JJVFNfUEVSX0NPTVBP TkVOVF9TSVpFKSAvIEJJVFNfUEVSX0JZVEU7DQo+ICsgICAgICAgICAgICAgICBjb21wb25lbnRf c2l6ZV9ieXRlX29mZiA9DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIChpICogTVBGX0JJVFNf UEVSX0NPTVBPTkVOVF9TSVpFKSAlIEJJVFNfUEVSX0JZVEU7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIHJldCA9IGdldF9zZ3RfZGF0YShzZ3QsIGNvbXBvbmVudHNfc2l6ZV9zdGFydCArDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50X3NpemVfYnl0ZV9udW0s DQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNvbXBvbmVudF9zaXplLCBz aXplb2YoY29tcG9uZW50X3NpemUpKTsNCj4gKyAgICAgICAgICAgICAgIGlmIChyZXQpDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsNCj4gKyAgICAgICAgICAgICAg IGNvbXBvbmVudF9zaXplID0gbGUzMl90b19jcHUoY29tcG9uZW50X3NpemUpOw0KPiArICAgICAg ICAgICAgICAgY29tcG9uZW50X3NpemUgPj49IGNvbXBvbmVudF9zaXplX2J5dGVfb2ZmOw0KPiAr ICAgICAgICAgICAgICAgY29tcG9uZW50X3NpemUgJj0gR0VOTUFTSyhNUEZfQklUU19QRVJfQ09N UE9ORU5UX1NJWkUgLSAxLCAwKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgYml0c3RyZWFtX3Np emUgKz0gY29tcG9uZW50X3NpemU7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgcmV0dXJu IGJpdHN0cmVhbV9zaXplOw0KPiArfQ0KPiArDQo+ICtzdGF0aWMgdTE2IGNyY19jY2l0dF9zZyhz dHJ1Y3Qgc2dfdGFibGUgKnNndCkNCj4gK3sNCj4gKyAgICAgICBzdHJ1Y3Qgc2dfbWFwcGluZ19p dGVyIG1pdGVyOw0KPiArICAgICAgIHUxNiBjcmMgPSAwOw0KPiArDQo+ICsgICAgICAgc2dfbWl0 ZXJfc3RhcnQoJm1pdGVyLCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgU0dfTUlURVJfRlJPTV9TRyk7 DQo+ICsgICAgICAgd2hpbGUgKHNnX21pdGVyX25leHQoJm1pdGVyKSkNCj4gKyAgICAgICAgICAg ICAgIGNyYyA9IGNyY19jY2l0dChjcmMsIG1pdGVyLmFkZHIsIG1pdGVyLmxlbmd0aCk7DQo+ICsg ICAgICAgc2dfbWl0ZXJfc3RvcCgmbWl0ZXIpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIGNyYzsN Cj4gK30NCj4gKw0KPiArc3RhdGljIGludCBtcGZfb3BzX3dyaXRlX3NnKHN0cnVjdCBmcGdhX21h bmFnZXIgKm1nciwgc3RydWN0IHNnX3RhYmxlICpzZ3QpDQo+ICt7DQo+ICsgICAgICAgdTggdG1w X2J1ZltNUEZfU1BJX0ZSQU1FX1NJWkUgKyAxXSA9IHsgTVBGX1NQSV9GUkFNRSwgfTsNCj4gKyAg ICAgICBzc2l6ZV90IGJpdHN0cmVhbV9zdGFydCwgYml0c3RyZWFtX3NpemU7DQo+ICsgICAgICAg c3RydWN0IG1wZl9wcml2ICpwcml2ID0gbWdyLT5wcml2Ow0KPiArICAgICAgIHN0cnVjdCBkZXZp Y2UgKmRldiA9ICZtZ3ItPmRldjsNCj4gKyAgICAgICBzdHJ1Y3Qgc2dfbWFwcGluZ19pdGVyIG1p dGVyOw0KPiArICAgICAgIHN0cnVjdCBzcGlfZGV2aWNlICpzcGk7DQo+ICsgICAgICAgc2l6ZV90 IHJlbWFpbmRlcjsNCj4gKyAgICAgICBpbnQgcmV0LCBpOw0KPiArDQo+ICsgICAgICAgaWYgKGNy Y19jY2l0dF9zZyhzZ3QpKSB7DQo+ICsgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwgIkNSQyBl cnJvclxuIik7DQo+ICsgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsNCj4gKyAgICAgICB9 DQo+ICsNCj4gKyAgICAgICBiaXRzdHJlYW1fc3RhcnQgPSBsb29rdXBfYmxvY2tfc3RhcnQoc2d0 LCBNUEZfQklUU1RSRUFNX0lEKTsNCj4gKyAgICAgICBpZiAoYml0c3RyZWFtX3N0YXJ0IDwgMCkg ew0KPiArICAgICAgICAgICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gZmluZCBiaXRzdHJl YW0gc3RhcnQgJXpkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICBiaXRzdHJlYW1fc3Rh cnQpOw0KPiArICAgICAgICAgICAgICAgcmV0dXJuIGJpdHN0cmVhbV9zdGFydDsNCj4gKyAgICAg ICB9DQo+ICsNCj4gKyAgICAgICBiaXRzdHJlYW1fc2l6ZSA9IHBhcnNlX2JpdHN0cmVhbV9zaXpl KHNndCk7DQo+ICsgICAgICAgaWYgKGJpdHN0cmVhbV9zaXplIDwgMCkgew0KPiArICAgICAgICAg ICAgICAgZGV2X2VycihkZXYsICJGYWlsZWQgdG8gcGFyc2UgYml0c3RyZWFtIHNpemUgJXpkXG4i LA0KPiArICAgICAgICAgICAgICAgICAgICAgICBiaXRzdHJlYW1fc2l6ZSk7DQo+ICsgICAgICAg ICAgICAgICByZXR1cm4gYml0c3RyZWFtX3NpemU7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAg ICAgc3BpID0gcHJpdi0+c3BpOw0KPiArDQo+ICsgICAgICAgc2dfbWl0ZXJfc3RhcnQoJm1pdGVy LCBzZ3QtPnNnbCwgc2d0LT5uZW50cywgU0dfTUlURVJfRlJPTV9TRyk7PiArICAgICAgIGZvciAo aSA9IDA7IGkgPCBiaXRzdHJlYW1fc2l6ZTsgaSsrKSB7DQo+ICsgICAgICAgICAgICAgICBkbyB7 DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIGlmIChiaXRzdHJlYW1fc3RhcnQgPCBtaXRlci5s ZW5ndGgpDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ICsNCj4g KyAgICAgICAgICAgICAgICAgICAgICAgYml0c3RyZWFtX3N0YXJ0IC09IG1pdGVyLmxlbmd0aDsN Cj4gKyAgICAgICAgICAgICAgIH0gd2hpbGUgKHNnX21pdGVyX25leHQoJm1pdGVyKSk7DQo+ICsN Cj4gKyAgICAgICAgICAgICAgIHJlbWFpbmRlciA9IG1heCgoc3NpemVfdCkwLCBiaXRzdHJlYW1f c3RhcnQgKw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzc2l6ZV90KU1QRl9T UElfRlJBTUVfU0laRSAtDQo+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNzaXpl X3QpbWl0ZXIubGVuZ3RoKTsNCj4gKw0KPiArICAgICAgICAgICAgICAgbWVtY3B5KHRtcF9idWYg KyAxLCBtaXRlci5hZGRyICsgYml0c3RyZWFtX3N0YXJ0LA0KPiArICAgICAgICAgICAgICAgICAg ICAgIE1QRl9TUElfRlJBTUVfU0laRSAtIHJlbWFpbmRlcik7DQo+ICsNCj4gKyAgICAgICAgICAg ICAgIHdoaWxlIChyZW1haW5kZXIpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgYml0c3Ry ZWFtX3N0YXJ0IC09IG1pdGVyLmxlbmd0aDsNCj4gKw0KPiArICAgICAgICAgICAgICAgICAgICAg ICBpZiAoc2dfbWl0ZXJfbmV4dCgmbWl0ZXIpKSB7DQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWVtY3B5KHRtcF9idWYgKyAxICsgTVBGX1NQSV9GUkFNRV9TSVpFIC0NCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluZGVyLCBtaXRlci5hZGRy LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW4ocmVtYWluZGVy LCBtaXRlci5sZW5ndGgpKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1h aW5kZXIgPSBtYXgoKHNzaXplX3QpMCwgKHNzaXplX3QpcmVtYWluZGVyIC0NCj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNzaXplX3QpbWl0ZXIubGVu Z3RoKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBkZXZfZXJyKGRldiwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJCaXRzdHJlYW0gb3V0cnVucyBmaXJtd2FyZSBpbWFnZS4gRnJh bWUgJWQgb2YgJXpkXG4iLA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaSwgYml0c3RyZWFtX3NpemUpOw0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNnX21pdGVyX3N0b3AoJm1pdGVyKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gLUVGQVVMVDsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgfQ0KPiArICAgICAg ICAgICAgICAgfQ0KPiArDQo+ICsgICAgICAgICAgICAgICBiaXRzdHJlYW1fc3RhcnQgKz0gTVBG X1NQSV9GUkFNRV9TSVpFOw0KPiArDQo+ICsgICAgICAgICAgICAgICByZXQgPSBtcGZfc3BpX3dy aXRlKHNwaSwgdG1wX2J1Ziwgc2l6ZW9mKHRtcF9idWYpKTsNCj4gKyAgICAgICAgICAgICAgIGlm IChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgZGV2X2VycihkZXYsDQo+ICsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byB3cml0ZSBiaXRzdHJlYW0gZnJh bWUgbnVtYmVyICVkIG9mICV6ZFxuIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBpLCBiaXRzdHJlYW1fc2l6ZSk7DQo+ICsgICAgICAgICAgICAgICAgICAgICAgIHNnX21pdGVy X3N0b3AoJm1pdGVyKTsNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJldDsNCj4g KyAgICAgICAgICAgICAgIH0NCj4gKyAgICAgICB9DQo+ICsgICAgICAgc2dfbWl0ZXJfc3RvcCgm bWl0ZXIpOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBp bnQgbXBmX29wc193cml0ZV9jb21wbGV0ZShzdHJ1Y3QgZnBnYV9tYW5hZ2VyICptZ3IsDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnBnYV9pbWFnZV9pbmZvICpp bmZvKQ0KPiArew0KPiArICAgICAgIGNvbnN0IHU4IGlzY19kaXNfY29tbWFuZFtdID0geyBNUEZf U1BJX0lTQ19ESVNBQkxFIH07DQo+ICsgICAgICAgY29uc3QgdTggcmVsZWFzZV9jb21tYW5kW10g PSB7IE1QRl9TUElfUkVMRUFTRSB9Ow0KPiArICAgICAgIHN0cnVjdCBtcGZfcHJpdiAqcHJpdiA9 IG1nci0+cHJpdjsNCj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmbWdyLT5kZXY7DQo+ ICsgICAgICAgc3RydWN0IHNwaV9kZXZpY2UgKnNwaTsNCj4gKyAgICAgICBpbnQgcmV0Ow0KPiAr DQo+ICsgICAgICAgc3BpID0gcHJpdi0+c3BpOw0KPiArDQo+ICsgICAgICAgcmV0ID0gbXBmX3Nw aV93cml0ZShzcGksIGlzY19kaXNfY29tbWFuZCwgc2l6ZW9mKGlzY19kaXNfY29tbWFuZCkpOw0K PiArICAgICAgIGlmIChyZXQpIHsNCj4gKyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFp bGVkIHRvIGRpc2FibGUgSVNDOiAlZFxuIiwgcmV0KTsNCj4gKyAgICAgICAgICAgICAgIHJldHVy biByZXQ7DQo+ICsgICAgICAgfQ0KPiArDQo+ICsgICAgICAgdXNsZWVwX3JhbmdlKDEwMDAsIDIw MDApOw0KPiArDQo+ICsgICAgICAgcmV0ID0gbXBmX3NwaV93cml0ZShzcGksIHJlbGVhc2VfY29t bWFuZCwgc2l6ZW9mKHJlbGVhc2VfY29tbWFuZCkpOw0KPiArICAgICAgIGlmIChyZXQpIHsNCj4g KyAgICAgICAgICAgICAgIGRldl9lcnIoZGV2LCAiRmFpbGVkIHRvIGV4aXQgcHJvZ3JhbSBtb2Rl OiAlZFxuIiwgcmV0KTsNCj4gKyAgICAgICAgICAgICAgIHJldHVybiByZXQ7DQo+ICsgICAgICAg fQ0KDQpXaGlsZSBJIHdhcyBkZWJ1Z2dpbmcgdGhlIHNlcXVlbmNlIGlzc3VlLCBpdCBnb3QgdG8g dGhpcyBzdGFnZSBvZiB0aGUNCnRyYW5zZmVyIHNldmVyYWwgdGltZXMsIGJ1dCBoYWRuJ3QgYWN0 dWFsbHkgcHJvZ3JhbW1lZCB0aGUgZGV2aWNlLg0KSXQgc2VlbXMgdGhhdCBwb2xsX3N0YXR1c19u b3RfYnVzeSBjb3ZlcnMgY2hlY2tpbmcgRVJSL1ZJT0xBVElPTiBmcm9tDQpwb2xsaW5nIHRoZSBz dGF0dXMsIGJ1dCBhZ2FpbiB0aGF0IGNoZWNrIGlzIGF2b2lkZWQgZHVlIHRvIHRoZQ0Kc2VxdWVu Y2UgaXNzdWVzIEkgbWVudGlvbmVkIGFib3ZlLg0KDQpJdCBtaWdodCBiZSBuaWNlIHRvIGNoZWNr IHRoZSBkZXZpY2UgY2VydGlmaWNhdGUsIGJ1dCBJIGFtIG5vdCBzdXJlDQppZiB0aGF0IGZpdHMg dGhlIGZsb3cgZm9yIGZwZ2EgbWFuYWdlcnMuDQoNCj4gKw0KPiArICAgICAgIHByaXYtPnByb2dy YW1fbW9kZSA9IGZhbHNlOw0KPiArDQo+ICsgICAgICAgcmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4g K3N0YXRpYyBjb25zdCBzdHJ1Y3QgZnBnYV9tYW5hZ2VyX29wcyBtcGZfb3BzID0gew0KPiArICAg ICAgIC5zdGF0ZSA9IG1wZl9vcHNfc3RhdGUsDQo+ICsgICAgICAgLndyaXRlX2luaXQgPSBtcGZf b3BzX3dyaXRlX2luaXQsDQo+ICsgICAgICAgLndyaXRlX3NnID0gbXBmX29wc193cml0ZV9zZywN Cj4gKyAgICAgICAud3JpdGVfY29tcGxldGUgPSBtcGZfb3BzX3dyaXRlX2NvbXBsZXRlLA0KPiAr fTsNCj4gKw0KPiArc3RhdGljIGludCBtcGZfcHJvYmUoc3RydWN0IHNwaV9kZXZpY2UgKnNwaSkN Cj4gK3sNCj4gKyAgICAgICBzdHJ1Y3QgZGV2aWNlICpkZXYgPSAmc3BpLT5kZXY7DQo+ICsgICAg ICAgc3RydWN0IGZwZ2FfbWFuYWdlciAqbWdyOw0KPiArICAgICAgIHN0cnVjdCBtcGZfcHJpdiAq cHJpdjsNCj4gKw0KPiArICAgICAgIHByaXYgPSBkZXZtX2t6YWxsb2MoZGV2LCBzaXplb2YoKnBy aXYpLCBHRlBfS0VSTkVMKTsNCj4gKyAgICAgICBpZiAoIXByaXYpDQo+ICsgICAgICAgICAgICAg ICByZXR1cm4gLUVOT01FTTsNCj4gKw0KPiArICAgICAgIHByaXYtPnNwaSA9IHNwaTsNCj4gKw0K PiArICAgICAgIG1nciA9IGRldm1fZnBnYV9tZ3JfcmVnaXN0ZXIoZGV2LCAiTWljcm9jaGlwIFBv bGFyZmlyZSBTUEkgRlBHQSBNYW5hZ2VyIiwNCj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICZtcGZfb3BzLCBwcml2KTsNCj4gKw0KPiArICAgICAgIHJldHVybiBQVFJfRVJS X09SX1pFUk8obWdyKTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGNvbnN0IHN0cnVjdCBzcGlfZGV2 aWNlX2lkIG1wZl9zcGlfaWRzW10gPSB7DQo+ICsgICAgICAgeyAubmFtZSA9ICJtcGYtc3BpLWZw Z2EtbWdyIiwgfSwNCj4gKyAgICAgICB7fSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxF KHNwaSwgbXBmX3NwaV9pZHMpOw0KPiArDQo+ICsjaWYgSVNfRU5BQkxFRChDT05GSUdfT0YpDQo+ ICtzdGF0aWMgY29uc3Qgc3RydWN0IG9mX2RldmljZV9pZCBtcGZfb2ZfaWRzW10gPSB7DQo+ICsg ICAgICAgeyAuY29tcGF0aWJsZSA9ICJtaWNyb2NoaXAsbXBmLXNwaS1mcGdhLW1nciIgfSwNCj4g KyAgICAgICB7fSwNCj4gK307DQo+ICtNT0RVTEVfREVWSUNFX1RBQkxFKG9mLCBtcGZfb2ZfaWRz KTsNCj4gKyNlbmRpZiAvKiBJU19FTkFCTEVEKENPTkZJR19PRikgKi8NCj4gKw0KPiArc3RhdGlj IHN0cnVjdCBzcGlfZHJpdmVyIG1wZl9kcml2ZXIgPSB7DQo+ICsgICAgICAgLnByb2JlID0gbXBm X3Byb2JlLA0KPiArICAgICAgIC5pZF90YWJsZSA9IG1wZl9zcGlfaWRzLA0KPiArICAgICAgIC5k cml2ZXIgPSB7DQo+ICsgICAgICAgICAgICAgICAubmFtZSA9ICJtaWNyb2NoaXBfbXBmX3NwaV9m cGdhX21nciIsDQo+ICsgICAgICAgICAgICAgICAub2ZfbWF0Y2hfdGFibGUgPSBvZl9tYXRjaF9w dHIobXBmX29mX2lkcyksDQo+ICsgICAgICAgfSwNCj4gK307DQo+ICsNCj4gK21vZHVsZV9zcGlf ZHJpdmVyKG1wZl9kcml2ZXIpOw0KPiArDQo+ICtNT0RVTEVfREVTQ1JJUFRJT04oIk1pY3JvY2hp cCBQb2xhcmZpcmUgU1BJIEZQR0EgTWFuYWdlciIpOw0KPiArTU9EVUxFX0xJQ0VOU0UoIkdQTCIp Ow0KPiAtLQ0KPiAyLjM0LjENCj4gDQo+IA0K