From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5300DA0543; Thu, 22 Sep 2022 21:03:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1AEC240156; Thu, 22 Sep 2022 21:03:31 +0200 (CEST) Received: from mga06.intel.com (mga06b.intel.com [134.134.136.31]) by mails.dpdk.org (Postfix) with ESMTP id 75D53400D7 for ; Thu, 22 Sep 2022 21:03:28 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1663873408; x=1695409408; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-transfer-encoding:mime-version; bh=q2x9XjqFqnSD7fUmolM5YFkothed54P5UgrYfxSBNiY=; b=bs8r+erfZoGSo5U4NHfbyLG4iiGIvN3Y1vSyE8maWau9btVuNaNi2ZdP WTxtQfCLdKx8JAHUpwSsMNN4TG2drZFNbdQLQhcNMss4d4Q7E+SFRYMIQ drPEEpBXZIguHgk8uwQhQGJdnQHrbz5iY6VGXQ2NGRTxwzZk0qYYFcYy7 8jvuCwxr+qicx/5zuVss803ZVwmwK017zrRw74S7vpQrroysdfec8HEW0 uVoct6lOqNIeW6mZIZcUiciGkhixYJ9C48BKlade2hE+oXXGKn8Bkrx6H IBey//Z4Jv/zYcUH5ZFVubIxMYjOiV5a6tFsCQDAaZrvVBEoUOGby534N w==; X-IronPort-AV: E=McAfee;i="6500,9779,10478"; a="362199205" X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="362199205" Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 22 Sep 2022 11:51:43 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.93,337,1654585200"; d="scan'208";a="619916845" Received: from orsmsx601.amr.corp.intel.com ([10.22.229.14]) by orsmga002.jf.intel.com with ESMTP; 22 Sep 2022 11:51:43 -0700 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 11:51:42 -0700 Received: from orsmsx601.amr.corp.intel.com (10.22.229.14) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Thu, 22 Sep 2022 11:51:42 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx601.amr.corp.intel.com (10.22.229.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Thu, 22 Sep 2022 11:51:42 -0700 Received: from NAM10-BN7-obe.outbound.protection.outlook.com (104.47.70.104) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Thu, 22 Sep 2022 11:51:41 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TxixETITUvFjBc5/zkwj+7a1qGKouY1miGmNDqmyqHeqcqOHvPgLhmhGysw7aKqsuwRgT5Gj8PEcfs0RI62caJ+8rj/U/+L2B7c1YcFx8dUJEBseiVpSu2GIOoR/0zc0AjgbDdat0s8HcqQgfgtZtAnPEpEha6kvnsyX0ryr8bF2NBdfhw3jxi00rBQYIjClxqncGH+EQZ8E/r/MuwtrHAmAPwKc233JtF6hQ6w5ZfteyaaFR9I+WtN6e7P6I2L/7TMMNECH9+xL5Ysu/FczXHuC5hlkOLRUxb6hQDX1HJvEibEPmAKFfk78FL4K10d57LVWyMmH1U42UN0C1bkAOg== 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=q2x9XjqFqnSD7fUmolM5YFkothed54P5UgrYfxSBNiY=; b=m01pTkb27EK0QQ/i3B0IW+/A+SddIIGmXp3Q4xJJh1uSEgZeN2DU8nc1dq0q4nxTDyXkwXJtK229aJYzjEwakOM3YuXU97p6sR/m5p0AjAVPawd0xPBFLeq3RTTZruQUWN8VKfHKtz6E62Hy476XILuAFx5s7dxqjTvENmdD73NedCed4Cx2g/uVylzwFQnJVj2f8wBNUDqVUGwHNbXRfQZ1euErzInCj8bJ7bGC1yym9a1GkuClPMujFfZv1A6PoRq0CNxCKp9XoZD6FSCeQYjqZvSnsVmp9tA4aJ4DOZVqN5RyGNW/VLiXsG5RNXebiAcdpUSm2nLbTlqofiiWpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BY5PR11MB4451.namprd11.prod.outlook.com (2603:10b6:a03:1cb::30) by SA0PR11MB4528.namprd11.prod.outlook.com (2603:10b6:806:99::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.19; Thu, 22 Sep 2022 18:51:39 +0000 Received: from BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::e6be:3feb:17fd:bdcf]) by BY5PR11MB4451.namprd11.prod.outlook.com ([fe80::e6be:3feb:17fd:bdcf%7]) with mapi id 15.20.5654.018; Thu, 22 Sep 2022 18:51:39 +0000 From: "Chautru, Nicolas" To: Maxime Coquelin , "dev@dpdk.org" , "thomas@monjalon.net" CC: "trix@redhat.com" , "mdr@ashroe.eu" , "Richardson, Bruce" , "hemant.agrawal@nxp.com" , "david.marchand@redhat.com" , "stephen@networkplumber.org" , "Vargas, Hernan" Subject: RE: [PATCH v4 07/14] baseband/acc: add queue configuration for ACC200 Thread-Topic: [PATCH v4 07/14] baseband/acc: add queue configuration for ACC200 Thread-Index: AQHYzho13ZN97hjAhUqKiV1Fpklq7K3rg2uAgABILpA= Date: Thu, 22 Sep 2022 18:51:39 +0000 Message-ID: References: <1663806460-45162-1-git-send-email-nicolas.chautru@intel.com> <1663806460-45162-8-git-send-email-nicolas.chautru@intel.com> <5e70241f-0e2d-6d9c-5c11-13ded5604beb@redhat.com> In-Reply-To: <5e70241f-0e2d-6d9c-5c11-13ded5604beb@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.500.17 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR11MB4451:EE_|SA0PR11MB4528:EE_ x-ms-office365-filtering-correlation-id: 28596437-6b93-4250-f4cf-08da9ccb7bdb x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ty9W5R6Fu7kADFZXp0MDNixjrBmoSNixzIqZtaHf7oHi3pqID8FvvzyNDWYFxh0fphWA6vh6lkuJXZ1E5hKTPtAgNKF3xRYvlBvNUmTbcKiDKum72TkJxBLKDDFuCu4g/X8FAHiVGVyl0sOSc/zn7t6KM/o7FWqYysk8WmWd9do1ryBBhqKJvAGoExSM5xRtnTfecX868ivf0MPZE5Vryqn2Sb2fPG1++xjvVsp/Ho6Qgy6ZtOxIUM+Uuwy8+OzMxyrfjFeFEIinpsebhBmWQ3WwcrH+vjWEplfqOOrt82nGCdUGvAacEXFWFUT9Oci/d1HDr7tDMdsTRZzlMyOEfbpJDrnHHdtw9gQ1p7HD8jY8asv86hDyYYT1Xl7Oi4lLqIX9FI11a5nDVtWEO0f8QEIBJeFzJwH3T+rFq7Mf9HmItymq6H1EJ9UbXCKouOw0INM22IgltUFYH1u5vqMdSBxcmrTlZUqE/uJmTFYfyc8dB6jItRa8KpsyYkRT1qBCaUqrPbNISV2iK389QK4YZaSTKTniS4M86XwWdwoCa/epDAHaTFn9jxietSGSgH94pZhnbxXsFKHU6vKByLChW762LwG/SXhbZniVBDS81puIORgvt3pMUyTJR0skyz1NOyb8zim4KlpR4BJ2Z9ZoGpGPIEBM/ELOGESAwngaZVnbOrrF8mB4Cv4B5sZlTxTcf9/SbOWU4muq/KB5o3hJ2bGDZZeSu9scxBk76plPgvlW8G7yLwer8uTNMyuJTKwYPRmHO79OIQFCmrOtFZ4i+A== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BY5PR11MB4451.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(366004)(136003)(396003)(39860400002)(346002)(376002)(451199015)(2906002)(38100700002)(38070700005)(86362001)(33656002)(82960400001)(122000001)(66446008)(7696005)(6506007)(4326008)(107886003)(9686003)(26005)(53546011)(54906003)(110136005)(316002)(41300700001)(478600001)(71200400001)(55016003)(52536014)(64756008)(30864003)(8936002)(5660300002)(8676002)(66476007)(186003)(66556008)(83380400001)(76116006)(66946007)(579004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YmJzUU9XOGZzb2dldlNhL2lGTEtkUDFOUDdOSSswWTZyWFRvRzNMQWs3dFdQ?= =?utf-8?B?YkV2RlZUSXYxd2pMTHN1TFVtbCt5NUh2OHV0VjVLcnl6NUVmYitvRTE1QzVN?= =?utf-8?B?MEFyTURweUdpWk1MV0MxZmlDdlEzQzRsNnQ0bFQ4UWlvTzBVQjkzOVB3NW8w?= =?utf-8?B?Y2R3cGwySmtJNVd0anRzbk96OFBQMThVQUMySHB4WEZyV1RGWnJqQnJzUVhB?= =?utf-8?B?S01FYlZsVnVJL1JWQzIwYzJoak5FL3haQWY4M0F2NlpvM2Q3WHFXUzJpSWdr?= =?utf-8?B?S2RxK3RqMEJablgxWnRHRFMrbjFJT1U1cVVFU2ZzeHVvOGpPRHdVZEpDRnZ3?= =?utf-8?B?UVM5SUtPeGhRbDBCbWpyU2N6T2VvUnhleU9CUllvbWQreTJTeFFLWDdxaXRR?= =?utf-8?B?ZDNXZmFZZlBBWGF3VjVyalc5eS9odUtnbEtrWHd5TWlUc3dRRzJYSThOd2Rp?= =?utf-8?B?d0M4VWFFRmpDTDdVeUlkdlpoNStvL0gzWm5rV3lFdzJkYXFwekZRcUJRb25i?= =?utf-8?B?YzBqS1FNdzQyUGkxM2lObjhUT25FNDgwR3I4QWx3cUtWSlcySXFSSG9KaTVE?= =?utf-8?B?MUphUUtKcUFHRXNZbmp6YytEV2x1OEhUNzZoRGxQaXBGbmowVTVJUFZpWnFP?= =?utf-8?B?VEROc29UbkZqK3lKaFJRZ2UzVmpJWWt6UVgxdXlqZW5yNlFsTWtEU2FqMnBQ?= =?utf-8?B?USsxTzMrZDRyRXExMjEvMUlxVElUUGo0RDFwMTY5TVlwYVd6Y1Z5YmVYeHYr?= =?utf-8?B?ZEJ3UjVMRG95UitySGNlQTJCZHl0WVI3ZjROb2tpUkxvR3I5NFZxaVJSMHp4?= =?utf-8?B?Rm1PZVBDK1lKMnBNUmR5UjBQaDhHVVFPc2lmNE10QTZ1WWJ5QTRycTBzUGFy?= =?utf-8?B?eFphbnpHSDZUNFFFRU9FQnBOcDQvaTdwOEZFNVFoTEdNdjZtU0p1SC94UUk1?= =?utf-8?B?TmZrdHJjWkx6aGl6Q29MeERQRzZXR2RFZDBmcGx5VnFOTGhKc21xbWFuRFpk?= =?utf-8?B?Zlo2c2svOTJmWEVxcXlEVlgrWUtRWFdZVTdyYUxrVTZXN3FPNGRscGVvdElo?= =?utf-8?B?RVI4OFI5dHMwVFUxUXNpL2pQeXdNc3VVaWoxUXRYcEdHdVhUTjJiWEI4RU9X?= =?utf-8?B?by8vMTlNeVdDQURIbVRBOGhFTHEzeUFiZ24vRjcxSVduZnZQOTJXTTE4VGQv?= =?utf-8?B?Tm1nK1VwUGFvL0swTWJMaTNxWXdhaGRGS3N0QUZYTncrV1NCL1FXR1NMYVhv?= =?utf-8?B?ek41SExIUG1VUTRONFMxbzFUd0VrbGVOeE9zU3lsRFBlb2tNYXRCb3RHcXpr?= =?utf-8?B?U3lJNDN6ekVPVWVXYWpoNjk0ZWY4S2t0d0lnNk9iVFh0RUVFTzhJMnpZdnRz?= =?utf-8?B?SElIVXZrOVBIR2pVOXlrUmwwcGQ4TE12bzY5SG15KzFMQVY3dmQ0T0w5bmpw?= =?utf-8?B?cjZqaE8vQjRJSWhsdmhHZjRoMDlxMnhvL0IxMko2czErOWViR0M3aUx3NEhM?= =?utf-8?B?c1YvVUkxVk1ZZTE0WTJVbVQ2dXRJbzdKZXhaSWVVVkhMN1FGQnhJSG5QbVNw?= =?utf-8?B?RXk0VTE3M1ZjOTM2Tm02eG1uR3NkcDIxSGFXUVpsbkdkT3l3dTNvdXpDSmlQ?= =?utf-8?B?SWRweXBjZUZEYXh0bDE3TkMwaExpSWVJSzJ4YUhibVpZV0Q2N0RIZ2VHNFZN?= =?utf-8?B?ck8vNFVvN2F3L3haVnByMmljczg5Vk9DeEhSZVJvRWk1WEZRc3F0NHpnZVZO?= =?utf-8?B?aGlXQnNPbUFvM0pTT3FQMHJxeFA1RXNTSGcxZHhpR2YrRHpnUGp3Q1ZFTENV?= =?utf-8?B?NDE4eStPeFFpZ0xYZDlXaWpGSXdKcW11blR3VGVSRHN3VW9FeDBTeFh4UllF?= =?utf-8?B?NTNSdXI1SHJaL21zcG9YSURST2FwV0RCaWZ3RFV3MStmdFZlL3Q2U3BTNWdw?= =?utf-8?B?cURsVFE5c0paLzkzQmlqc0J6ZjVqQWdCUGtHUlByczBwcjRKbWc1dTBHeFg5?= =?utf-8?B?b1dzUWxtdDhvdXpJUndsVVB5WHZ0RmxlS3dPSlZWbUFtN0lGZHFDU3J3ZEZx?= =?utf-8?B?RE9SVHJjNHRNeGZucllkTDhaQ2trZitMeWJnZWQxc1FDbVBnUVJZVmp6UE9L?= =?utf-8?Q?FULZ0WpU85At8E8D7LfKqjAXk?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR11MB4451.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 28596437-6b93-4250-f4cf-08da9ccb7bdb X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Sep 2022 18:51:39.6497 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: l/eBlw6bsnZ1WHs+EWMtF3j0fUGKol9b9XQvJqsqUNDhNriUb9csQSRjKZYclcLwNVQkE8GbE6LI41WLWM2GXv5haiZpa1Lltt1zdd/qkLA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4528 X-OriginatorOrg: intel.com X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgTWF4aW1lLCANCldpbGwgdXBkYXRlIHRoaXMgaW4gdGhlIG5ldyB2ZXJzaW9uLiBUaGFua3Mu IA0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1heGltZSBDb3F1ZWxp biA8bWF4aW1lLmNvcXVlbGluQHJlZGhhdC5jb20+DQo+IFNlbnQ6IFRodXJzZGF5LCBTZXB0ZW1i ZXIgMjIsIDIwMjIgNzozMCBBTQ0KPiBUbzogQ2hhdXRydSwgTmljb2xhcyA8bmljb2xhcy5jaGF1 dHJ1QGludGVsLmNvbT47IGRldkBkcGRrLm9yZzsNCj4gdGhvbWFzQG1vbmphbG9uLm5ldA0KPiBD YzogdHJpeEByZWRoYXQuY29tOyBtZHJAYXNocm9lLmV1OyBSaWNoYXJkc29uLCBCcnVjZQ0KPiA8 YnJ1Y2UucmljaGFyZHNvbkBpbnRlbC5jb20+OyBoZW1hbnQuYWdyYXdhbEBueHAuY29tOw0KPiBk YXZpZC5tYXJjaGFuZEByZWRoYXQuY29tOyBzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZzsgVmFy Z2FzLA0KPiBIZXJuYW4gPGhlcm5hbi52YXJnYXNAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTog W1BBVENIIHY0IDA3LzE0XSBiYXNlYmFuZC9hY2M6IGFkZCBxdWV1ZSBjb25maWd1cmF0aW9uIGZv cg0KPiBBQ0MyMDANCj4gDQo+IA0KPiANCj4gT24gOS8yMi8yMiAwMjoyNywgTmljIENoYXV0cnUg d3JvdGU6DQo+ID4gQWRkaW5nIGZ1bmN0aW9uIHRvIGNyZWF0ZSBhbmQgY29uZmlndXJlIHF1ZXVl cyBmb3IgdGhlIGRldmljZS4NCj4gPg0KPiA+IFNpZ25lZC1vZmYtYnk6IE5pYyBDaGF1dHJ1IDxu aWNvbGFzLmNoYXV0cnVAaW50ZWwuY29tPg0KPiA+IC0tLQ0KPiA+ICAgZHJpdmVycy9iYXNlYmFu ZC9hY2MvcnRlX2FjYzIwMF9wbWQuYyB8IDM3Mw0KPiArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKystDQo+ID4gICAxIGZpbGUgY2hhbmdlZCwgMzcyIGluc2VydGlvbnMoKyksIDEgZGVs ZXRpb24oLSkNCj4gPg0KPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2Jhc2ViYW5kL2FjYy9ydGVf YWNjMjAwX3BtZC5jDQo+ID4gYi9kcml2ZXJzL2Jhc2ViYW5kL2FjYy9ydGVfYWNjMjAwX3BtZC5j DQo+ID4gaW5kZXggNDM0MTVlYi4uMzU1Y2Y4ZSAxMDA2NDQNCj4gPiAtLS0gYS9kcml2ZXJzL2Jh c2ViYW5kL2FjYy9ydGVfYWNjMjAwX3BtZC5jDQo+ID4gKysrIGIvZHJpdmVycy9iYXNlYmFuZC9h Y2MvcnRlX2FjYzIwMF9wbWQuYw0KPiA+IEBAIC0yMjAsMTYgKzIyMCwzODMgQEANCj4gPiAgIAkJ CWFjY19jb25mLT5xX2ZmdC5hcV9kZXB0aF9sb2cyKTsNCj4gPiAgIH0NCj4gPg0KPiA+ICsvKiBB bGxvY2F0ZSA2NE1CIG1lbW9yeSB1c2VkIGZvciBhbGwgc29mdHdhcmUgcmluZ3MgKi8gc3RhdGlj IGludA0KPiA+ICthY2MyMDBfc2V0dXBfcXVldWVzKHN0cnVjdCBydGVfYmJkZXYgKmRldiwgdWlu dDE2X3QgbnVtX3F1ZXVlcywgaW50DQo+ID4gK3NvY2tldF9pZCkgew0KPiA+ICsJdWludDMyX3Qg cGh5c19sb3csIHBoeXNfaGlnaCwgdmFsdWU7DQo+ID4gKwlzdHJ1Y3QgYWNjX2RldmljZSAqZCA9 IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKwljb25zdCBzdHJ1Y3QgYWNjMjAwX3JlZ2lz dHJ5X2FkZHIgKnJlZ19hZGRyOw0KPiA+ICsNCj4gPiArCWlmIChkLT5wZl9kZXZpY2UgJiYgIWQt PmFjY19jb25mLnBmX21vZGVfZW4pIHsNCj4gPiArCQlydGVfYmJkZXZfbG9nKE5PVElDRSwNCj4g PiArCQkJCSIlcyBoYXMgUEYgbW9kZSBkaXNhYmxlZC4gVGhpcyBQRiBjYW4ndCBiZQ0KPiB1c2Vk LiIsDQo+ID4gKwkJCQlkZXYtPmRhdGEtPm5hbWUpOw0KPiA+ICsJCXJldHVybiAtRU5PREVWOw0K PiA+ICsJfQ0KPiA+ICsJaWYgKCFkLT5wZl9kZXZpY2UgJiYgZC0+YWNjX2NvbmYucGZfbW9kZV9l bikgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coTk9USUNFLA0KPiA+ICsJCQkJIiVzIGhhcyBQRiBt b2RlIGVuYWJsZWQuIFRoaXMgVkYgY2FuJ3QgYmUNCj4gdXNlZC4iLA0KPiA+ICsJCQkJZGV2LT5k YXRhLT5uYW1lKTsNCj4gPiArCQlyZXR1cm4gLUVOT0RFVjsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwlhbGxvY19zd19yaW5nc19taW5fbWVtKGRldiwgZCwgbnVtX3F1ZXVlcywgc29ja2V0X2lkKTsN Cj4gPiArDQo+ID4gKwkvKiBJZiBtaW5pbWFsIG1lbW9yeSBzcGFjZSBhcHByb2FjaCBmYWlsZWQs IHRoZW4gYWxsb2NhdGUNCj4gPiArCSAqIHRoZSAyICogNjRNQiBibG9jayBmb3IgdGhlIHN3IHJp bmdzDQo+ID4gKwkgKi8NCj4gPiArCWlmIChkLT5zd19yaW5ncyA9PSBOVUxMKQ0KPiA+ICsJCWFs bG9jXzJ4NjRtYl9zd19yaW5nc19tZW0oZGV2LCBkLCBzb2NrZXRfaWQpOw0KPiA+ICsNCj4gPiAr CWlmIChkLT5zd19yaW5ncyA9PSBOVUxMKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhOT1RJQ0Us DQo+ID4gKwkJCQkiRmFpbHVyZSBhbGxvY2F0aW5nIHN3X3JpbmdzIG1lbW9yeSIpOw0KPiA+ICsJ CXJldHVybiAtRU5PREVWOw0KPiANCj4gLUVOT01FTTsNCg0KT0sNCg0KPiANCj4gPiArCX0NCj4g PiArDQo+ID4gKwkvKiBDb25maWd1cmUgQUNDMjAwIHdpdGggdGhlIGJhc2UgYWRkcmVzcyBmb3Ig RE1BIGRlc2NyaXB0b3IgcmluZ3MNCj4gPiArCSAqIFNhbWUgZGVzY3JpcHRvciByaW5ncyB1c2Vk IGZvciBVTCBhbmQgREwgRE1BIEVuZ2luZXMNCj4gPiArCSAqIE5vdGUgOiBBc3N1bWluZyBvbmx5 IFZGMCBidW5kbGUgaXMgdXNlZCBmb3IgUEYgbW9kZQ0KPiA+ICsJICovDQo+ID4gKwlwaHlzX2hp Z2ggPSAodWludDMyX3QpKGQtPnN3X3JpbmdzX2lvdmEgPj4gMzIpOw0KPiA+ICsJcGh5c19sb3cg ID0gKHVpbnQzMl90KShkLT5zd19yaW5nc19pb3ZhICYgfihBQ0NfU0laRV82NE1CWVRFLQ0KPiAx KSk7DQo+ID4gKw0KPiA+ICsJLyogQ2hvb3NlIGNvcnJlY3QgcmVnaXN0cnkgYWRkcmVzc2VzIGZv ciB0aGUgZGV2aWNlIHR5cGUgKi8NCj4gPiArCWlmIChkLT5wZl9kZXZpY2UpDQo+ID4gKwkJcmVn X2FkZHIgPSAmcGZfcmVnX2FkZHI7DQo+ID4gKwllbHNlDQo+ID4gKwkJcmVnX2FkZHIgPSAmdmZf cmVnX2FkZHI7DQo+ID4gKw0KPiA+ICsJLyogUmVhZCB0aGUgcG9wdWxhdGVkIGNmZyBmcm9tIEFD QzIwMCByZWdpc3RlcnMgKi8NCj4gPiArCWZldGNoX2FjYzIwMF9jb25maWcoZGV2KTsNCj4gPiAr DQo+ID4gKwkvKiBTdGFydCBQbW9uICovDQo+ID4gKwlmb3IgKHZhbHVlID0gMDsgdmFsdWUgPD0g MjsgdmFsdWUrKykgew0KPiA+ICsJCWFjY19yZWdfd3JpdGUoZCwgcmVnX2FkZHItPnBtb25fY3Ry bF9hLCB2YWx1ZSk7DQo+ID4gKwkJYWNjX3JlZ193cml0ZShkLCByZWdfYWRkci0+cG1vbl9jdHJs X2IsIHZhbHVlKTsNCj4gPiArCQlhY2NfcmVnX3dyaXRlKGQsIHJlZ19hZGRyLT5wbW9uX2N0cmxf YywgdmFsdWUpOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIFJlbGVhc2UgQVhJIGZyb20gUEYg Ki8NCj4gPiArCWlmIChkLT5wZl9kZXZpY2UpDQo+ID4gKwkJYWNjX3JlZ193cml0ZShkLCBIV1Bm RG1hQXhpQ29udHJvbCwgMSk7DQo+ID4gKw0KPiA+ICsJYWNjX3JlZ193cml0ZShkLCByZWdfYWRk ci0+ZG1hX3JpbmdfdWw1Z19oaSwgcGh5c19oaWdoKTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwg cmVnX2FkZHItPmRtYV9yaW5nX3VsNWdfbG8sIHBoeXNfbG93KTsNCj4gPiArCWFjY19yZWdfd3Jp dGUoZCwgcmVnX2FkZHItPmRtYV9yaW5nX2RsNWdfaGksIHBoeXNfaGlnaCk7DQo+ID4gKwlhY2Nf cmVnX3dyaXRlKGQsIHJlZ19hZGRyLT5kbWFfcmluZ19kbDVnX2xvLCBwaHlzX2xvdyk7DQo+ID4g KwlhY2NfcmVnX3dyaXRlKGQsIHJlZ19hZGRyLT5kbWFfcmluZ191bDRnX2hpLCBwaHlzX2hpZ2gp Ow0KPiA+ICsJYWNjX3JlZ193cml0ZShkLCByZWdfYWRkci0+ZG1hX3JpbmdfdWw0Z19sbywgcGh5 c19sb3cpOw0KPiA+ICsJYWNjX3JlZ193cml0ZShkLCByZWdfYWRkci0+ZG1hX3JpbmdfZGw0Z19o aSwgcGh5c19oaWdoKTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2FkZHItPmRtYV9yaW5n X2RsNGdfbG8sIHBoeXNfbG93KTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2FkZHItPmRt YV9yaW5nX2ZmdF9oaSwgcGh5c19oaWdoKTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2Fk ZHItPmRtYV9yaW5nX2ZmdF9sbywgcGh5c19sb3cpOw0KPiA+ICsJLyoNCj4gPiArCSAqIENvbmZp Z3VyZSBSaW5nIFNpemUgdG8gdGhlIG1heCBxdWV1ZSByaW5nIHNpemUNCj4gPiArCSAqICh1c2Vk IGZvciB3cmFwcGluZyBwdXJwb3NlKQ0KPiA+ICsJICovDQo+ID4gKwl2YWx1ZSA9IGxvZzJfYmFz aWMoZC0+c3dfcmluZ19zaXplIC8gNjQpOw0KPiANCj4gV2hhdCBpcyB0aGUgNjQgdmFsdWUgbWVh bmluZz8gVGhlIHNpemUgb2YgYSBkZXNjcmlwdG9yPw0KPiBJZiBzbywgeW91IHNob3VsZCBlaXRo ZXIgdXNlIHNpemVvZigpIG9yIGEgZGVmaW5lZCB2YWx1ZS4NCg0KT0ssIGFkZGluZyBkZWZpbmVk IHZhbHVlIGZvciB0aGUgbWFnaWMgbnVtYmVyLg0KDQo+IA0KPiA+ICsJYWNjX3JlZ193cml0ZShk LCByZWdfYWRkci0+cmluZ19zaXplLCB2YWx1ZSk7DQo+ID4gKw0KPiA+ICsJLyogQ29uZmlndXJl IHRhaWwgcG9pbnRlciBmb3IgdXNlIHdoZW4gU0RPTkUgZW5hYmxlZCAqLw0KPiA+ICsJaWYgKGQt PnRhaWxfcHRycyA9PSBOVUxMKQ0KPiA+ICsJCWQtPnRhaWxfcHRycyA9IHJ0ZV96bWFsbG9jX3Nv Y2tldCgNCj4gPiArCQkJCWRldi0+ZGV2aWNlLT5kcml2ZXItPm5hbWUsDQo+ID4gKwkJCQlBQ0My MDBfTlVNX1FHUlBTICogQUNDMjAwX05VTV9BUVMNCj4gKiBzaXplb2YodWludDMyX3QpLA0KPiA+ ICsJCQkJUlRFX0NBQ0hFX0xJTkVfU0laRSwgc29ja2V0X2lkKTsNCj4gPiArCWlmIChkLT50YWls X3B0cnMgPT0gTlVMTCkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLCAiRmFpbGVkIHRvIGFs bG9jYXRlIHRhaWwgcHRyIGZvciAlczoldSIsDQo+ID4gKwkJCQlkZXYtPmRldmljZS0+ZHJpdmVy LT5uYW1lLA0KPiA+ICsJCQkJZGV2LT5kYXRhLT5kZXZfaWQpOw0KPiA+ICsJCXJ0ZV9mcmVlKGQt PnN3X3JpbmdzKTsNCj4gWW91IG5lZWQgdG8gc2UgdG8gTlVMTCwgb3IgeW91J2xsIGhhdmUgYSB1 c2UgYWZ0ZXIgZnJlZSBsb29raW5nIGF0IGhvdyBpdCBpcw0KPiBhbGxvY2F0ZWQuDQo+IA0KPiAJ CXJldCA9IC1FTk9NRU07DQo+IAkJZ290byBmcmVlX3N3X3JpbmdzOw0KDQpPSyBmb3IgdGhlIG92 ZXJhbGwgZXJyb3IgcGF0aCBjaGFuZ2UuIFRoYW5rcw0KDQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07 DQo+ID4gKwl9DQo+ID4gKwlkLT50YWlsX3B0cl9pb3ZhID0gcnRlX21hbGxvY192aXJ0MmlvdmEo ZC0+dGFpbF9wdHJzKTsNCj4gPiArDQo+ID4gKwlwaHlzX2hpZ2ggPSAodWludDMyX3QpKGQtPnRh aWxfcHRyX2lvdmEgPj4gMzIpOw0KPiA+ICsJcGh5c19sb3cgID0gKHVpbnQzMl90KShkLT50YWls X3B0cl9pb3ZhKTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2FkZHItPnRhaWxfcHRyc191 bDVnX2hpLCBwaHlzX2hpZ2gpOw0KPiA+ICsJYWNjX3JlZ193cml0ZShkLCByZWdfYWRkci0+dGFp bF9wdHJzX3VsNWdfbG8sIHBoeXNfbG93KTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2Fk ZHItPnRhaWxfcHRyc19kbDVnX2hpLCBwaHlzX2hpZ2gpOw0KPiA+ICsJYWNjX3JlZ193cml0ZShk LCByZWdfYWRkci0+dGFpbF9wdHJzX2RsNWdfbG8sIHBoeXNfbG93KTsNCj4gPiArCWFjY19yZWdf d3JpdGUoZCwgcmVnX2FkZHItPnRhaWxfcHRyc191bDRnX2hpLCBwaHlzX2hpZ2gpOw0KPiA+ICsJ YWNjX3JlZ193cml0ZShkLCByZWdfYWRkci0+dGFpbF9wdHJzX3VsNGdfbG8sIHBoeXNfbG93KTsN Cj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2FkZHItPnRhaWxfcHRyc19kbDRnX2hpLCBwaHlz X2hpZ2gpOw0KPiA+ICsJYWNjX3JlZ193cml0ZShkLCByZWdfYWRkci0+dGFpbF9wdHJzX2RsNGdf bG8sIHBoeXNfbG93KTsNCj4gPiArCWFjY19yZWdfd3JpdGUoZCwgcmVnX2FkZHItPnRhaWxfcHRy c19mZnRfaGksIHBoeXNfaGlnaCk7DQo+ID4gKwlhY2NfcmVnX3dyaXRlKGQsIHJlZ19hZGRyLT50 YWlsX3B0cnNfZmZ0X2xvLCBwaHlzX2xvdyk7DQo+ID4gKw0KPiA+ICsJaWYgKGQtPmhhcnFfbGF5 b3V0ID09IE5VTEwpDQo+ID4gKwkJZC0+aGFycV9sYXlvdXQgPSBydGVfem1hbGxvY19zb2NrZXQo IkhBUlEgTGF5b3V0IiwNCj4gPiArCQkJCUFDQ19IQVJRX0xBWU9VVCAqIHNpemVvZigqZC0NCj4g PmhhcnFfbGF5b3V0KSwNCj4gPiArCQkJCVJURV9DQUNIRV9MSU5FX1NJWkUsIGRldi0+ZGF0YS0N Cj4gPnNvY2tldF9pZCk7DQo+ID4gKwlpZiAoZC0+aGFycV9sYXlvdXQgPT0gTlVMTCkgew0KPiA+ ICsJCXJ0ZV9iYmRldl9sb2coRVJSLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGhhcnFfbGF5b3V0IGZv cg0KPiAlczoldSIsDQo+ID4gKwkJCQlkZXYtPmRldmljZS0+ZHJpdmVyLT5uYW1lLA0KPiA+ICsJ CQkJZGV2LT5kYXRhLT5kZXZfaWQpOw0KPiA+ICsJCXJ0ZV9mcmVlKGQtPnN3X3JpbmdzKTsNCj4g U2FtZSBjb21tZW50IGFzIGFib3ZlLCBhbmQgeW91IGFsc28gbWlzcyB0byBmcmVlIHRhaWxfcHRy cy4NCj4gTWF5YmUgaXQgd291bGQgYmUgYmV0dGVyIHRvIGhhdmUgYW4gZXJyb3IgcGF0aCwgc2Vl IGJlbG93Og0KPiANCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiArCX0NCj4gPiArDQo+ID4g KwkvKiBNYXJrIGFzIGNvbmZpZ3VyZWQgcHJvcGVybHkgKi8NCj4gPiArCWQtPmNvbmZpZ3VyZWQg PSB0cnVlOw0KPiA+ICsNCj4gPiArCXJ0ZV9iYmRldl9sb2dfZGVidWcoDQo+ID4gKwkJCSJBQ0My MDAgKCVzKSBjb25maWd1cmVkICBzd19yaW5ncyA9ICVwLA0KPiBzd19yaW5nc19pb3ZhID0gJSMi DQo+ID4gKwkJCVBSSXg2NCwgZGV2LT5kYXRhLT5uYW1lLCBkLT5zd19yaW5ncywgZC0NCj4gPnN3 X3JpbmdzX2lvdmEpOw0KPiA+ICsNCj4gPiArCXJldHVybiAwOw0KPiANCj4gZnJlZV90YWlsX3B0 cnM6DQo+IAlydGVfZnJlZShkLT50YWlsX3B0cnMpOw0KPiAJZC0+dGFpbF9wdHJzID0gTlVMTDsN Cj4gZnJlZV9zd19yaW5nczoNCj4gCXJ0ZV9mcmVlKGQtPnN3X3JpbmdzKTsNCj4gCWQtPnN3X3Jp bmdzID0gTlVMTDsNCj4gDQo+IAlyZXR1cm4gcmV0Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyog RnJlZSBtZW1vcnkgdXNlZCBmb3Igc29mdHdhcmUgcmluZ3MgKi8NCj4gPiAgIHN0YXRpYyBpbnQN Cj4gPiAgIGFjYzIwMF9kZXZfY2xvc2Uoc3RydWN0IHJ0ZV9iYmRldiAqZGV2KQ0KPiA+ICAgew0K PiA+IC0JUlRFX1NFVF9VU0VEKGRldik7DQo+ID4gKwlzdHJ1Y3QgYWNjX2RldmljZSAqZCA9IGRl di0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKwlpZiAoZC0+c3dfcmluZ3NfYmFzZSAhPSBOVUxM KSB7DQo+IA0KPiBJc24ndCBkLT5zd19yaW5ncyB0aGF0IGlzIGFsbG9jYXRlZCBpbiB0aGlzIHBh dGNoPw0KDQpObyB0aGlzIGlzIHN3X3JpbmdzX2Jhc2Ugb24gcHVycG9zZS4gVGhlIHN3X3Jpbmdz IHBvaW50ZXJzIG1heSBoYXZlIGJlZW4gcmVhbGlnbmVkLCB3aGlsZSB0aGUgc3dfcmluZ3NfYmFz ZSBrZWVwcyB0cmFjayBvZiB0aGUgb3JpZ2luYWwgbWFsbG9jLiANCg0KPiANCj4gQWxzbywgdGhl IE5VTEwgY2hlY2sgaXMgbm90IG5lY2Vzc2FyeSwgcnRlX2ZyZWUoKSB0YWtlcyBjYXJlIG9mIGl0 Lg0KPiANCj4gPiArCQlydGVfZnJlZShkLT50YWlsX3B0cnMpOw0KPiA+ICsJCXJ0ZV9mcmVlKGQt PnN3X3JpbmdzX2Jhc2UpOw0KPiA+ICsJCXJ0ZV9mcmVlKGQtPmhhcnFfbGF5b3V0KTsNCj4gPiAr CQlkLT5zd19yaW5nc19iYXNlID0gTlVMTDsNCj4gPiArCQlkLT50YWlsX3B0cnMgPSBOVUxMOw0K PiA+ICsJCWQtPmhhcnFfbGF5b3V0ID0gTlVMTDsNCj4gPiArCX0NCj4gPiAgIAkvKiBFbnN1cmUg YWxsIGluIGZsaWdodCBIVyB0cmFuc2FjdGlvbnMgYXJlIGNvbXBsZXRlZCAqLw0KPiA+ICAgCXVz bGVlcChBQ0NfTE9OR19XQUlUKTsNCj4gPiAgIAlyZXR1cm4gMDsNCj4gPiAgIH0NCj4gPg0KPiA+ ICsvKioNCj4gPiArICogUmVwb3J0IGEgQUNDMjAwIHF1ZXVlIGluZGV4IHdoaWNoIGlzIGZyZWUN Cj4gPiArICogUmV0dXJuIDAgdG8gMTZrIGZvciBhIHZhbGlkIHF1ZXVlX2lkeCBvciAtMSB3aGVu IG5vIHF1ZXVlIGlzDQo+ID4gK2F2YWlsYWJsZQ0KPiA+ICsgKiBOb3RlIDogT25seSBzdXBwb3J0 aW5nIFZGMCBCdW5kbGUgZm9yIFBGIG1vZGUgICovIHN0YXRpYyBpbnQNCj4gPiArYWNjMjAwX2Zp bmRfZnJlZV9xdWV1ZV9pZHgoc3RydWN0IHJ0ZV9iYmRldiAqZGV2LA0KPiA+ICsJCWNvbnN0IHN0 cnVjdCBydGVfYmJkZXZfcXVldWVfY29uZiAqY29uZikgew0KPiA+ICsJc3RydWN0IGFjY19kZXZp Y2UgKmQgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJaW50IG9wXzJfYWNjWzZdID0g ezAsIFVMXzRHLCBETF80RywgVUxfNUcsIERMXzVHLCBGRlR9Ow0KPiA+ICsJaW50IGFjYyA9IG9w XzJfYWNjW2NvbmYtPm9wX3R5cGVdOw0KPiA+ICsJc3RydWN0IHJ0ZV9hY2NfcXVldWVfdG9wb2xv Z3kgKnF0b3AgPSBOVUxMOw0KPiA+ICsNCj4gPiArCXF0b3BGcm9tQWNjKCZxdG9wLCBhY2MsICYo ZC0+YWNjX2NvbmYpKTsNCj4gPiArCWlmIChxdG9wID09IE5VTEwpDQo+ID4gKwkJcmV0dXJuIC0x Ow0KPiA+ICsJLyogSWRlbnRpZnkgbWF0Y2hpbmcgUUdyb3VwIEluZGV4IHdoaWNoIGFyZSBzb3J0 ZWQgaW4gcHJpb3JpdHkgb3JkZXINCj4gKi8NCj4gPiArCXVpbnQxNl90IGdyb3VwX2lkeCA9IHF0 b3AtPmZpcnN0X3Fncm91cF9pbmRleDsNCj4gDQo+IERvbid0IG1peCBkZWNsYXJhdGlvbnMgJiBj b2RlLg0KDQpPSw0KDQo+IA0KPiA+ICsJZ3JvdXBfaWR4ICs9IGNvbmYtPnByaW9yaXR5Ow0KPiA+ ICsJaWYgKGdyb3VwX2lkeCA+PSBBQ0MyMDBfTlVNX1FHUlBTIHx8DQo+ID4gKwkJCWNvbmYtPnBy aW9yaXR5ID49IHF0b3AtPm51bV9xZ3JvdXBzKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhJTkZP LCAiSW52YWxpZCBQcmlvcml0eSBvbiAlcywgcHJpb3JpdHkgJXUiLA0KPiA+ICsJCQkJZGV2LT5k YXRhLT5uYW1lLCBjb25mLT5wcmlvcml0eSk7DQo+ID4gKwkJcmV0dXJuIC0xOw0KPiA+ICsJfQ0K PiA+ICsJLyogRmluZCBhIGZyZWUgQVFfaWR4ICAqLw0KPiA+ICsJdWludDY0X3QgYXFfaWR4Ow0K PiANCj4gRG9uJ3QgbWl4IGRlY2xhcmF0aW9ucyAmIGNvZGUuDQoNCk9LDQoNCj4gDQo+ID4gKwlm b3IgKGFxX2lkeCA9IDA7IGFxX2lkeCA8IHF0b3AtPm51bV9hcXNfcGVyX2dyb3VwczsgYXFfaWR4 KyspIHsNCj4gPiArCQlpZiAoKChkLT5xX2Fzc2lnbmVkX2JpdF9tYXBbZ3JvdXBfaWR4XSA+PiBh cV9pZHgpICYgMHgxKSA9PQ0KPiAwKSB7DQo+ID4gKwkJCS8qIE1hcmsgdGhlIFF1ZXVlIGFzIGFz c2lnbmVkICovDQo+ID4gKwkJCWQtPnFfYXNzaWduZWRfYml0X21hcFtncm91cF9pZHhdIHw9ICgx IDw8IGFxX2lkeCk7DQo+ID4gKwkJCS8qIFJlcG9ydCB0aGUgQVEgSW5kZXggKi8NCj4gPiArCQkJ cmV0dXJuIChncm91cF9pZHggPDwgQUNDMjAwX0dSUF9JRF9TSElGVCkgKw0KPiBhcV9pZHg7DQo+ ID4gKwkJfQ0KPiA+ICsJfQ0KPiA+ICsJcnRlX2JiZGV2X2xvZyhJTkZPLCAiRmFpbGVkIHRvIGZp bmQgZnJlZSBxdWV1ZSBvbiAlcywgcHJpb3JpdHkgJXUiLA0KPiA+ICsJCQlkZXYtPmRhdGEtPm5h bWUsIGNvbmYtPnByaW9yaXR5KTsNCj4gPiArCXJldHVybiAtMTsNCj4gPiArfQ0KPiA+ICsNCj4g PiArLyogU2V0dXAgQUNDMjAwIHF1ZXVlICovDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArYWNjMjAw X3F1ZXVlX3NldHVwKHN0cnVjdCBydGVfYmJkZXYgKmRldiwgdWludDE2X3QgcXVldWVfaWQsDQo+ ID4gKwkJY29uc3Qgc3RydWN0IHJ0ZV9iYmRldl9xdWV1ZV9jb25mICpjb25mKSB7DQo+ID4gKwlz dHJ1Y3QgYWNjX2RldmljZSAqZCA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7DQo+ID4gKwlzdHJ1 Y3QgYWNjX3F1ZXVlICpxOw0KPiA+ICsJaW50MTZfdCBxX2lkeDsNCj4gPiArDQo+ID4gKwlpZiAo ZCA9PSBOVUxMKSB7DQo+ID4gKwkJcnRlX2JiZGV2X2xvZyhFUlIsICJVbmRlZmluZWQgZGV2aWNl Iik7DQo+ID4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ID4gKwl9DQo+ID4gKwkvKiBBbGxvY2F0ZSB0 aGUgcXVldWUgZGF0YSBzdHJ1Y3R1cmUuICovDQo+ID4gKwlxID0gcnRlX3ptYWxsb2Nfc29ja2V0 KGRldi0+ZGV2aWNlLT5kcml2ZXItPm5hbWUsIHNpemVvZigqcSksDQo+ID4gKwkJCVJURV9DQUNI RV9MSU5FX1NJWkUsIGNvbmYtPnNvY2tldCk7DQo+ID4gKwlpZiAocSA9PSBOVUxMKSB7DQo+ID4g KwkJcnRlX2JiZGV2X2xvZyhFUlIsICJGYWlsZWQgdG8gYWxsb2NhdGUgcXVldWUgbWVtb3J5Iik7 DQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcS0+ZCA9IGQ7 DQo+ID4gKwlxLT5yaW5nX2FkZHIgPSBSVEVfUFRSX0FERChkLT5zd19yaW5ncywgKGQtPnN3X3Jp bmdfc2l6ZSAqDQo+IHF1ZXVlX2lkKSk7DQo+ID4gKwlxLT5yaW5nX2FkZHJfaW92YSA9IGQtPnN3 X3JpbmdzX2lvdmEgKyAoZC0+c3dfcmluZ19zaXplICoNCj4gcXVldWVfaWQpOw0KPiA+ICsNCj4g PiArCS8qIFByZXBhcmUgdGhlIFJpbmcgd2l0aCBkZWZhdWx0IGRlc2NyaXB0b3IgZm9ybWF0ICov DQo+ID4gKwl1bmlvbiBhY2NfZG1hX2Rlc2MgKmRlc2MgPSBOVUxMOw0KPiA+ICsJdW5zaWduZWQg aW50IGRlc2NfaWR4LCBiX2lkeDsNCj4gPiArCWludCBmY3dfbGVuID0gKGNvbmYtPm9wX3R5cGUg PT0gUlRFX0JCREVWX09QX0xEUENfRU5DID8NCj4gPiArCQlBQ0NfRkNXX0xFX0JMRU4gOiAoY29u Zi0+b3BfdHlwZSA9PQ0KPiBSVEVfQkJERVZfT1BfVFVSQk9fREVDID8NCj4gPiArCQlBQ0NfRkNX X1REX0JMRU4gOiAoY29uZi0+b3BfdHlwZSA9PQ0KPiBSVEVfQkJERVZfT1BfTERQQ19ERUMgPw0K PiA+ICsJCUFDQ19GQ1dfTERfQkxFTiA6IEFDQ19GQ1dfRkZUX0JMRU4pKSk7DQo+ID4gKw0KPiA+ ICsJZm9yIChkZXNjX2lkeCA9IDA7IGRlc2NfaWR4IDwgZC0+c3dfcmluZ19tYXhfZGVwdGg7IGRl c2NfaWR4KyspIHsNCj4gPiArCQlkZXNjID0gcS0+cmluZ19hZGRyICsgZGVzY19pZHg7DQo+ID4g KwkJZGVzYy0+cmVxLndvcmQwID0gQUNDX0RNQV9ERVNDX1RZUEU7DQo+ID4gKwkJZGVzYy0+cmVx LndvcmQxID0gMDsgLyoqPCBUaW1lc3RhbXAgKi8NCj4gPiArCQlkZXNjLT5yZXEud29yZDIgPSAw Ow0KPiA+ICsJCWRlc2MtPnJlcS53b3JkMyA9IDA7DQo+ID4gKwkJdWludDY0X3QgZmN3X29mZnNl dCA9IChkZXNjX2lkeCA8PCA4KSArDQo+IEFDQ19ERVNDX0ZDV19PRkZTRVQ7DQo+ID4gKwkJZGVz Yy0+cmVxLmRhdGFfcHRyc1swXS5hZGRyZXNzID0gcS0+cmluZ19hZGRyX2lvdmEgKw0KPiBmY3df b2Zmc2V0Ow0KPiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNbMF0uYmxlbiA9IGZjd19sZW47DQo+ ID4gKwkJZGVzYy0+cmVxLmRhdGFfcHRyc1swXS5ibGtpZCA9IEFDQ19ETUFfQkxLSURfRkNXOw0K PiA+ICsJCWRlc2MtPnJlcS5kYXRhX3B0cnNbMF0ubGFzdCA9IDA7DQo+ID4gKwkJZGVzYy0+cmVx LmRhdGFfcHRyc1swXS5kbWFfZXh0ID0gMDsNCj4gPiArCQlmb3IgKGJfaWR4ID0gMTsgYl9pZHgg PCBBQ0NfRE1BX01BWF9OVU1fUE9JTlRFUlMgLSAxOw0KPiA+ICsJCQkJYl9pZHgrKykgew0KPiA+ ICsJCQlkZXNjLT5yZXEuZGF0YV9wdHJzW2JfaWR4XS5ibGtpZCA9DQo+IEFDQ19ETUFfQkxLSURf SU47DQo+ID4gKwkJCWRlc2MtPnJlcS5kYXRhX3B0cnNbYl9pZHhdLmxhc3QgPSAxOw0KPiA+ICsJ CQlkZXNjLT5yZXEuZGF0YV9wdHJzW2JfaWR4XS5kbWFfZXh0ID0gMDsNCj4gPiArCQkJYl9pZHgr KzsNCj4gPiArCQkJZGVzYy0+cmVxLmRhdGFfcHRyc1tiX2lkeF0uYmxraWQgPQ0KPiA+ICsJCQkJ CUFDQ19ETUFfQkxLSURfT1VUX0VOQzsNCj4gPiArCQkJZGVzYy0+cmVxLmRhdGFfcHRyc1tiX2lk eF0ubGFzdCA9IDE7DQo+ID4gKwkJCWRlc2MtPnJlcS5kYXRhX3B0cnNbYl9pZHhdLmRtYV9leHQg PSAwOw0KPiA+ICsJCX0NCj4gPiArCQkvKiBQcmVzZXQgc29tZSBmaWVsZHMgb2YgTERQQyBGQ1cg Ki8NCj4gPiArCQlkZXNjLT5yZXEuZmN3X2xkLkZDV3ZlcnNpb24gPSBBQ0NfRkNXX1ZFUjsNCj4g PiArCQlkZXNjLT5yZXEuZmN3X2xkLmdhaW5faSA9IDE7DQo+ID4gKwkJZGVzYy0+cmVxLmZjd19s ZC5nYWluX2ggPSAxOw0KPiA+ICsJfQ0KPiA+ICsNCj4gPiArCXEtPmxiX2luID0gcnRlX3ptYWxs b2Nfc29ja2V0KGRldi0+ZGV2aWNlLT5kcml2ZXItPm5hbWUsDQo+ID4gKwkJCVJURV9DQUNIRV9M SU5FX1NJWkUsDQo+ID4gKwkJCVJURV9DQUNIRV9MSU5FX1NJWkUsIGNvbmYtPnNvY2tldCk7DQo+ ID4gKwlpZiAocS0+bGJfaW4gPT0gTlVMTCkgew0KPiA+ICsJCXJ0ZV9iYmRldl9sb2coRVJSLCAi RmFpbGVkIHRvIGFsbG9jYXRlIGxiX2luIG1lbW9yeSIpOw0KPiA+ICsJCXJ0ZV9mcmVlKHEpOw0K PiANCj4gUGxlYXNlIGludHJvZHVjZSBhIHByb3BlciBlcnJvciBwYXRoIGFzIEkgZ2F2ZSBleGFt cGxlIGZvcg0KPiBhY2MyMDBfc2V0dXBfcXVldWVzKCkuDQoNCkZhaXIgZW5vdWdoLCB0aGFua3Mu IA0KDQo+IA0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsJfQ0KPiA+ICsJcS0+bGJfaW5f YWRkcl9pb3ZhID0gcnRlX21hbGxvY192aXJ0MmlvdmEocS0+bGJfaW4pOw0KPiA+ICsJcS0+bGJf b3V0ID0gcnRlX3ptYWxsb2Nfc29ja2V0KGRldi0+ZGV2aWNlLT5kcml2ZXItPm5hbWUsDQo+ID4g KwkJCVJURV9DQUNIRV9MSU5FX1NJWkUsDQo+ID4gKwkJCVJURV9DQUNIRV9MSU5FX1NJWkUsIGNv bmYtPnNvY2tldCk7DQo+ID4gKwlpZiAocS0+bGJfb3V0ID09IE5VTEwpIHsNCj4gPiArCQlydGVf YmJkZXZfbG9nKEVSUiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBsYl9vdXQgbWVtb3J5Iik7DQo+ID4g KwkJcnRlX2ZyZWUocS0+bGJfaW4pOw0KPiA+ICsJCXJ0ZV9mcmVlKHEpOw0KPiA+ICsJCXJldHVy biAtRU5PTUVNOw0KPiA+ICsJfQ0KPiA+ICsJcS0+bGJfb3V0X2FkZHJfaW92YSA9IHJ0ZV9tYWxs b2NfdmlydDJpb3ZhKHEtPmxiX291dCk7DQo+ID4gKwlxLT5jb21wYW5pb25fcmluZ19hZGRyID0g cnRlX3ptYWxsb2Nfc29ja2V0KGRldi0+ZGV2aWNlLT5kcml2ZXItDQo+ID5uYW1lLA0KPiA+ICsJ CQlkLT5zd19yaW5nX21heF9kZXB0aCAqIHNpemVvZigqcS0NCj4gPmNvbXBhbmlvbl9yaW5nX2Fk ZHIpLA0KPiA+ICsJCQlSVEVfQ0FDSEVfTElORV9TSVpFLCBjb25mLT5zb2NrZXQpOw0KPiA+ICsJ aWYgKHEtPmNvbXBhbmlvbl9yaW5nX2FkZHIgPT0gTlVMTCkgew0KPiA+ICsJCXJ0ZV9iYmRldl9s b2coRVJSLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGNvbXBhbmlvbl9yaW5nDQo+IG1lbW9yeSIpOw0K PiA+ICsJCXJ0ZV9mcmVlKHEtPmxiX2luKTsNCj4gPiArCQlydGVfZnJlZShxLT5sYl9vdXQpOw0K PiA+ICsJCXJ0ZV9mcmVlKHEpOw0KPiA+ICsJCXJldHVybiAtRU5PTUVNOw0KPiA+ICsJfQ0KPiA+ ICsNCj4gPiArCS8qDQo+ID4gKwkgKiBTb2Z0d2FyZSBxdWV1ZSByaW5nIHdyYXBzIHN5bmNocm9u b3VzbHkgd2l0aCB0aGUgSFcgd2hlbiBpdA0KPiByZWFjaGVzDQo+ID4gKwkgKiB0aGUgYm91bmRh cnkgb2YgdGhlIG1heGltdW0gYWxsb2NhdGVkIHF1ZXVlIHNpemUsIG5vIG1hdHRlcg0KPiB3aGF0 IHRoZQ0KPiA+ICsJICogc3cgcXVldWUgc2l6ZSBpcy4gVGhpcyB3cmFwcGluZyBpcyBndWFyZGVk IGJ5IHNldHRpbmcgdGhlDQo+IHdyYXBfbWFzaw0KPiA+ICsJICogdG8gcmVwcmVzZW50IHRoZSBt YXhpbXVtIHF1ZXVlIHNpemUgYXMgYWxsb2NhdGVkIGF0IHRoZSB0aW1lDQo+IHdoZW4NCj4gPiAr CSAqIHRoZSBkZXZpY2UgaGFzIGJlZW4gc2V0dXAgKGluIGNvbmZpZ3VyZSgpKS4NCj4gPiArCSAq DQo+ID4gKwkgKiBUaGUgcXVldWUgZGVwdGggaXMgc2V0IHRvIHRoZSBxdWV1ZSBzaXplIHZhbHVl IChjb25mLT5xdWV1ZV9zaXplKS4NCj4gPiArCSAqIFRoaXMgbGltaXRzIHRoZSBvY2N1cGFuY3kg b2YgdGhlIHF1ZXVlIGF0IGFueSBwb2ludCBvZiB0aW1lLCBzbyB0aGF0DQo+ID4gKwkgKiB0aGUg cXVldWUgZG9lcyBub3QgZ2V0IHN3YW1wZWQgd2l0aCBlbnF1ZXVlIHJlcXVlc3RzLg0KPiA+ICsJ ICovDQo+ID4gKwlxLT5zd19yaW5nX2RlcHRoID0gY29uZi0+cXVldWVfc2l6ZTsNCj4gPiArCXEt PnN3X3Jpbmdfd3JhcF9tYXNrID0gZC0+c3dfcmluZ19tYXhfZGVwdGggLSAxOw0KPiA+ICsNCj4g PiArCXEtPm9wX3R5cGUgPSBjb25mLT5vcF90eXBlOw0KPiA+ICsNCj4gPiArCXFfaWR4ID0gYWNj MjAwX2ZpbmRfZnJlZV9xdWV1ZV9pZHgoZGV2LCBjb25mKTsNCj4gPiArCWlmIChxX2lkeCA9PSAt MSkgew0KPiA+ICsJCXJ0ZV9mcmVlKHEtPmNvbXBhbmlvbl9yaW5nX2FkZHIpOw0KPiA+ICsJCXJ0 ZV9mcmVlKHEtPmxiX2luKTsNCj4gPiArCQlydGVfZnJlZShxLT5sYl9vdXQpOw0KPiA+ICsJCXJ0 ZV9mcmVlKHEpOw0KPiA+ICsJCXJldHVybiAtMTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlxLT5x Z3JwX2lkID0gKHFfaWR4ID4+IEFDQzIwMF9HUlBfSURfU0hJRlQpICYgMHhGOw0KPiA+ICsJcS0+ dmZfaWQgPSAocV9pZHggPj4gQUNDMjAwX1ZGX0lEX1NISUZUKSAgJiAweDNGOw0KPiA+ICsJcS0+ YXFfaWQgPSBxX2lkeCAmIDB4RjsNCj4gPiArCXEtPmFxX2RlcHRoID0gMDsNCj4gPiArCWlmIChj b25mLT5vcF90eXBlID09ICBSVEVfQkJERVZfT1BfVFVSQk9fREVDKQ0KPiA+ICsJCXEtPmFxX2Rl cHRoID0gKDEgPDwgZC0+YWNjX2NvbmYucV91bF80Zy5hcV9kZXB0aF9sb2cyKTsNCj4gPiArCWVs c2UgaWYgKGNvbmYtPm9wX3R5cGUgPT0gIFJURV9CQkRFVl9PUF9UVVJCT19FTkMpDQo+ID4gKwkJ cS0+YXFfZGVwdGggPSAoMSA8PCBkLT5hY2NfY29uZi5xX2RsXzRnLmFxX2RlcHRoX2xvZzIpOw0K PiA+ICsJZWxzZSBpZiAoY29uZi0+b3BfdHlwZSA9PSAgUlRFX0JCREVWX09QX0xEUENfREVDKQ0K PiA+ICsJCXEtPmFxX2RlcHRoID0gKDEgPDwgZC0+YWNjX2NvbmYucV91bF81Zy5hcV9kZXB0aF9s b2cyKTsNCj4gPiArCWVsc2UgaWYgKGNvbmYtPm9wX3R5cGUgPT0gIFJURV9CQkRFVl9PUF9MRFBD X0VOQykNCj4gPiArCQlxLT5hcV9kZXB0aCA9ICgxIDw8IGQtPmFjY19jb25mLnFfZGxfNWcuYXFf ZGVwdGhfbG9nMik7DQo+ID4gKwllbHNlIGlmIChjb25mLT5vcF90eXBlID09ICBSVEVfQkJERVZf T1BfRkZUKQ0KPiA+ICsJCXEtPmFxX2RlcHRoID0gKDEgPDwgZC0+YWNjX2NvbmYucV9mZnQuYXFf ZGVwdGhfbG9nMik7DQo+ID4gKw0KPiA+ICsJcS0+bW1pb19yZWdfZW5xdWV1ZSA9IFJURV9QVFJf QUREKGQtPm1taW9fYmFzZSwNCj4gPiArCQkJcXVldWVfb2Zmc2V0KGQtPnBmX2RldmljZSwNCj4g PiArCQkJCQlxLT52Zl9pZCwgcS0+cWdycF9pZCwgcS0+YXFfaWQpKTsNCj4gPiArDQo+ID4gKwly dGVfYmJkZXZfbG9nX2RlYnVnKA0KPiA+ICsJCQkiU2V0dXAgZGV2JXUgcSV1OiBxZ3JwX2lkPSV1 LCB2Zl9pZD0ldSwNCj4gYXFfaWQ9JXUsIGFxX2RlcHRoPSV1LCBtbWlvX3JlZ19lbnF1ZXVlPSVw IGJhc2UgJXBcbiIsDQo+ID4gKwkJCWRldi0+ZGF0YS0+ZGV2X2lkLCBxdWV1ZV9pZCwgcS0+cWdy cF9pZCwgcS0+dmZfaWQsDQo+ID4gKwkJCXEtPmFxX2lkLCBxLT5hcV9kZXB0aCwgcS0+bW1pb19y ZWdfZW5xdWV1ZSwNCj4gPiArCQkJZC0+bW1pb19iYXNlKTsNCj4gPiArDQo+ID4gKwlkZXYtPmRh dGEtPnF1ZXVlc1txdWV1ZV9pZF0ucXVldWVfcHJpdmF0ZSA9IHE7DQo+ID4gKwlyZXR1cm4gMDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArDQo+ID4gK3N0YXRpYyBpbnQNCj4gPiArYWNjX3F1ZXVlX3N0 b3Aoc3RydWN0IHJ0ZV9iYmRldiAqZGV2LCB1aW50MTZfdCBxdWV1ZV9pZCkgew0KPiA+ICsJc3Ry dWN0IGFjY19xdWV1ZSAqcTsNCj4gPiArCXEgPSBkZXYtPmRhdGEtPnF1ZXVlc1txdWV1ZV9pZF0u cXVldWVfcHJpdmF0ZTsNCj4gPiArCXJ0ZV9iYmRldl9sb2coSU5GTywgIlF1ZXVlIFN0b3AgJWQg SC9UL0QgJWQgJWQgJXggT3BUeXBlICVkIiwNCj4gPiArCQkJcXVldWVfaWQsIHEtPnN3X3Jpbmdf aGVhZCwgcS0+c3dfcmluZ190YWlsLA0KPiA+ICsJCQlxLT5zd19yaW5nX2RlcHRoLCBxLT5vcF90 eXBlKTsNCj4gPiArCS8qIGlnbm9yZSBhbGwgb3BlcmF0aW9ucyBpbiBmbGlnaHQgYW5kIGNsZWFy IGNvdW50ZXJzICovDQo+ID4gKwlxLT5zd19yaW5nX3RhaWwgPSBxLT5zd19yaW5nX2hlYWQ7DQo+ ID4gKwlxLT5hcV9lbnF1ZXVlZCA9IDA7DQo+ID4gKwlxLT5hcV9kZXF1ZXVlZCA9IDA7DQo+ID4g KwlkZXYtPmRhdGEtPnF1ZXVlc1txdWV1ZV9pZF0ucXVldWVfc3RhdHMuZW5xdWV1ZWRfY291bnQg PSAwOw0KPiA+ICsJZGV2LT5kYXRhLT5xdWV1ZXNbcXVldWVfaWRdLnF1ZXVlX3N0YXRzLmRlcXVl dWVkX2NvdW50ID0gMDsNCj4gPiArCWRldi0+ZGF0YS0+cXVldWVzW3F1ZXVlX2lkXS5xdWV1ZV9z dGF0cy5lbnF1ZXVlX2Vycl9jb3VudCA9IDA7DQo+ID4gKwlkZXYtPmRhdGEtPnF1ZXVlc1txdWV1 ZV9pZF0ucXVldWVfc3RhdHMuZGVxdWV1ZV9lcnJfY291bnQgPSAwOw0KPiA+ICsJZGV2LT5kYXRh LT5xdWV1ZXNbcXVldWVfaWRdLnF1ZXVlX3N0YXRzLmVucXVldWVfd2Fybl9jb3VudCA9DQo+IDA7 DQo+ID4gKwlkZXYtPmRhdGEtPnF1ZXVlc1txdWV1ZV9pZF0ucXVldWVfc3RhdHMuZGVxdWV1ZV93 YXJuX2NvdW50ID0NCj4gMDsNCj4gPiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICsv KiBSZWxlYXNlIEFDQzIwMCBxdWV1ZSAqLw0KPiA+ICtzdGF0aWMgaW50DQo+ID4gK2FjYzIwMF9x dWV1ZV9yZWxlYXNlKHN0cnVjdCBydGVfYmJkZXYgKmRldiwgdWludDE2X3QgcV9pZCkgew0KPiA+ ICsJc3RydWN0IGFjY19kZXZpY2UgKmQgPSBkZXYtPmRhdGEtPmRldl9wcml2YXRlOw0KPiA+ICsJ c3RydWN0IGFjY19xdWV1ZSAqcSA9IGRldi0+ZGF0YS0+cXVldWVzW3FfaWRdLnF1ZXVlX3ByaXZh dGU7DQo+ID4gKw0KPiA+ICsJaWYgKHEgIT0gTlVMTCkgew0KPiA+ICsJCS8qIE1hcmsgdGhlIFF1 ZXVlIGFzIHVuLWFzc2lnbmVkICovDQo+ID4gKwkJZC0+cV9hc3NpZ25lZF9iaXRfbWFwW3EtPnFn cnBfaWRdICY9ICgweEZGRkZGRkZGRkZGRkZGRkYNCj4gLQ0KPiANCj4gcy8weEZGRkZGRkZGRkZG RkZGRkYvfjBVTEwvDQo+IA0KDQpPSw0KDQo+ID4gKwkJCQkodWludDY0X3QpICgxIDw8IHEtPmFx X2lkKSk7DQo+IA0KPiBPciBiZXR0ZXI6DQo+IA0KPiBkLT5xX2Fzc2lnbmVkX2JpdF9tYXBbcS0+ cWdycF9pZF0gJj0gIH4oMSA8PCBxLT5hcV9pZCk7DQo+IA0KPiA+ICsJCXJ0ZV9mcmVlKHEtPmNv bXBhbmlvbl9yaW5nX2FkZHIpOw0KPiA+ICsJCXJ0ZV9mcmVlKHEtPmxiX2luKTsNCj4gPiArCQly dGVfZnJlZShxLT5sYl9vdXQpOw0KPiA+ICsJCXJ0ZV9mcmVlKHEpOw0KPiA+ICsJCWRldi0+ZGF0 YS0+cXVldWVzW3FfaWRdLnF1ZXVlX3ByaXZhdGUgPSBOVUxMOw0KPiA+ICsJfQ0KPiA+ICsNCj4g PiArCXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICAgLyogR2V0IEFDQzIwMCBkZXZpY2Ug aW5mbyAqLw0KPiA+ICAgc3RhdGljIHZvaWQNCj4gPiAgIGFjYzIwMF9kZXZfaW5mb19nZXQoc3Ry dWN0IHJ0ZV9iYmRldiAqZGV2LCBAQCAtMjc5LDggKzY0NiwxMiBAQA0KPiA+ICAgfQ0KPiA+DQo+ ID4gICBzdGF0aWMgY29uc3Qgc3RydWN0IHJ0ZV9iYmRldl9vcHMgYWNjMjAwX2JiZGV2X29wcyA9 IHsNCj4gPiArCS5zZXR1cF9xdWV1ZXMgPSBhY2MyMDBfc2V0dXBfcXVldWVzLA0KPiA+ICAgCS5j bG9zZSA9IGFjYzIwMF9kZXZfY2xvc2UsDQo+ID4gICAJLmluZm9fZ2V0ID0gYWNjMjAwX2Rldl9p bmZvX2dldCwNCj4gPiArCS5xdWV1ZV9zZXR1cCA9IGFjYzIwMF9xdWV1ZV9zZXR1cCwNCj4gPiAr CS5xdWV1ZV9yZWxlYXNlID0gYWNjMjAwX3F1ZXVlX3JlbGVhc2UsDQo+ID4gKwkucXVldWVfc3Rv cCA9IGFjY19xdWV1ZV9zdG9wLA0KPiA+ICAgfTsNCj4gPg0KPiA+ICAgLyogQUNDMjAwIFBDSSBQ RiBhZGRyZXNzIG1hcCAqLw0KDQo=