Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp500888pxb; Thu, 19 Aug 2021 04:54:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJySA8Y6PBX8joAiSLyoZ5e6SKTHS4MS3WC71KgYJaNrdYRilv83Ta5CqXOsBwtXmrJ4pLiR X-Received: by 2002:aa7:c643:: with SMTP id z3mr3393453edr.73.1629374088867; Thu, 19 Aug 2021 04:54:48 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1629374088; cv=pass; d=google.com; s=arc-20160816; b=p+L+2PvbTj56SP6ZGw43UjY2LuM4GQEmkORKAeCvHS2rTRzxS9MnbHPHo/zJYNx3zR jBBMOrLoGyu5IGRxKMvh4fbLIQw334AerIzbmjUTdfV3RTtebXkjCsq49k5RW2S/N3oU eeeCR6M4mhn1hB+8XFL0qyqFtyBNY673yPste8dX7G2gLSdmDkgbI/XqNZvYDGrFvctu YJsLf3L9oafNWIcYK81VOjEjXHQ9bXoU5hBuae1gy2uUgfD8gd37nlxStHx3A5vep631 lK2tswqQUWiqUyelx78QgVL/IFQxIhSFANHCapoeW81RTUp95SNkxn/Yk7d+vWjYM367 itjw== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:content-transfer-encoding :content-language:accept-language:in-reply-to:references:message-id :date:thread-index:thread-topic:subject:to:from:dkim-signature; bh=d5iGYhKhMXBwEuJSrvezNv5DWLx6MmD3LR6du0zQ8P0=; b=tffav8QN9V0jHfY9ybbEujwlpP1OpxNsXRyqd2aX+7GwRWjWtqpD3NYtLktsh03sLS g9TmtIkL08x1rviUvSXWnQdr/zRgQQPF4puT7T8SsCnr3leJgejYFnZ8yh9WGz1LIhud Ao3xoWQIJuwVOrmbKjiT11endY5Fg7o1kpzdSt8ouo6+VSpWBX8xUqtumGdAgDMI8zxE rCetrxeFybSVyQiN5akwCxFaGBlbnmvwxXEPm1bwz/qcPGLriIf8iFHDSrbydWr76b/Y 7UZXSxRQMHPTIz4mgSgcbCCer7xnTNTiNUV0GiSXw73m4T/N/UhBURw9lN0HcIRTDxa3 4yzg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector1-marvell-onmicrosoft-com header.b=mRq3i5Zo; arc=pass (i=1 spf=pass spfdomain=marvell.com dkim=pass dkdomain=marvell.com dmarc=pass fromdomain=marvell.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id d3si3086464ejt.22.2021.08.19.04.54.20; Thu, 19 Aug 2021 04:54:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector1-marvell-onmicrosoft-com header.b=mRq3i5Zo; arc=pass (i=1 spf=pass spfdomain=marvell.com dkim=pass dkdomain=marvell.com dmarc=pass fromdomain=marvell.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=REJECT dis=NONE) header.from=marvell.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S238656AbhHSLwy (ORCPT + 99 others); Thu, 19 Aug 2021 07:52:54 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:54238 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S238449AbhHSLwx (ORCPT ); Thu, 19 Aug 2021 07:52:53 -0400 Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.0.43) with SMTP id 17J1G7S7026803; Thu, 19 Aug 2021 04:52:03 -0700 Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2170.outbound.protection.outlook.com [104.47.59.170]) by mx0a-0016f401.pphosted.com with ESMTP id 3ahdg2t1wx-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 19 Aug 2021 04:52:02 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=R4LTSkZq3yjYKApRHvKhJmEVt3IQ3g/+YNBEU48JVCgeFT5QUeSsV3eI4E5+WsYdDNI4OJHqZ2FehH2jlx7oetIn0EZjIvmXVsMowjAPaJOCZr90VR5DyzXmSRkTwWVGiUkvvPD75uYhmcj9TwMMz/sM+n7Njg9i0rREqZPvXvpoZpJ3rFF0pKNdZuY+/6VLOKktJ/XEeiyw6AUmJ+8eEONpOdgVu5wjt7RmRbheRVTb+9NvRT8sOE/z7a+X/hO5w6NaxlFxPbxGfJHXDXbRx9Y/a87wmjFTpF0r3+I8a8xHNHt1jCWY1MTYEth7X5BVSTpTX4S0sFGRqrEwMTO/gg== 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=d5iGYhKhMXBwEuJSrvezNv5DWLx6MmD3LR6du0zQ8P0=; b=Py19fcYgvaVpjtLw3qSRtMCPHTYVciGDPR7Ds8oxSmIrzagbyT0pJik67hcohayJOd++AJuw5fVmKGECKlnafR0MgUC7NIWdfmeqEviUytYg+ms+YTiX7hlz5qCjFdOzTIdnfTAI/Hj58YFJyglJB9Dy2fVoy0x+qiizspkYGCwP6XLgwNYvWfyBBqgrY42vfgAVZ0ts7uZjQFmKAWXfKdBdnLxEyBznWCWBVgalPhzb5i2VpGVKpjJkKqBLxHxpuqgb2VixvS0OyYF15QRRAI99Ng4z0lR7aP1RF9R8seXHOPwuyaMfuWcUnQRKKT6iMr/0/OAeOgAriZAWFFSaxA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=marvell.com; dmarc=pass action=none header.from=marvell.com; dkim=pass header.d=marvell.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector1-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d5iGYhKhMXBwEuJSrvezNv5DWLx6MmD3LR6du0zQ8P0=; b=mRq3i5ZoM6WXf7gv5xU3ykw94IktpUJ1fn88RlGCcxkVxOOK6l25OOIPSTXRqlhyeFHCPjRGBgz9jjPiCovwYbS21BlExsrNaEDRBOE2u1hBUX6iWeeH6FT/oDdiaXfDu56AdGxJo8NbOYmrmH9d2J+kiHiqFxeVFXYmT84U950= Received: from CO6PR18MB4465.namprd18.prod.outlook.com (2603:10b6:303:13b::10) by CO1PR18MB4572.namprd18.prod.outlook.com (2603:10b6:303:ff::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4436.19; Thu, 19 Aug 2021 11:52:00 +0000 Received: from CO6PR18MB4465.namprd18.prod.outlook.com ([fe80::5f0:c8ed:ffa3:223c]) by CO6PR18MB4465.namprd18.prod.outlook.com ([fe80::5f0:c8ed:ffa3:223c%3]) with mapi id 15.20.4415.024; Thu, 19 Aug 2021 11:52:00 +0000 From: Bharat Bhushan To: John Garry , "will@kernel.org" , "mark.rutland@arm.com" , "robh+dt@kernel.org" , "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [EXT] Re: [PATCH v2 2/4] perf/marvell: CN10k DDR performance monitor support Thread-Topic: [EXT] Re: [PATCH v2 2/4] perf/marvell: CN10k DDR performance monitor support Thread-Index: AQHXjcwsjrNmfkiCJEWBK71HCx0M/6t5VCEAgAFC19A= Date: Thu, 19 Aug 2021 11:52:00 +0000 Message-ID: References: <20210810094307.29595-1-bbhushan2@marvell.com> <20210810094307.29595-3-bbhushan2@marvell.com> In-Reply-To: Accept-Language: en-IN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: huawei.com; dkim=none (message not signed) header.d=none;huawei.com; dmarc=none action=none header.from=marvell.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2182bada-1169-47d8-ccc4-08d96307c0f5 x-ms-traffictypediagnostic: CO1PR18MB4572: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:5797; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: d0ZNtBV6jaI8Fufeez65fnVq6Ta5yG13UBQymAGkOTwv7fpA1gcFPVihbVkiNuZnbiHmGHFwZ24XoTIJUz6PBkERaHcX6Q81iB25Xjv+nAsZmuWZam2rqRO2Ni3+z14eXoClKeO9XtwiJXDslx9Uvv9eDbv54NEsYzPKK2l+50z1gBl4SnV9rPD22gIPfmxgAojFBXUjgfjR4FIuRF1DRqsfFrfKaMNljlAJ2NAOA7i3w6tCQEohNHuJSLmmyrRtA6OWnRdG9lq718hqBWDRR6wqxigM+0XKawbPDX30BKmQwGRTV+O0X5JU1iGX4f3n9AAdIHj8NYmnPxTzC99SnTmP7BRVnM24amPt+eHM9GkBw/7SJb4yRhQ/cI4W+b1HtEqcHaELS+9556HdGUfR3pnrQ4qOqV6q99g46lqbIMmZg976RyWTNEcqRKDlgAPnYR+iNPHMu9en1Cdldf8wnQA/Hlc4KB8tbL7ZDxpGaq+xDwrvbErMP7xleRM63aGBAyXlEFzsseIHT4hB4CAoJ+dWj6E8FRkIohYJVOLw6u/MvJ9yNLCbDraBIyoAvwStSPPL1VoTLb3iEeRcitY0y8rWCemgF9tC3CoM02OJXTyugYXE4t8InZ93AVbXWBEvyhkFNVhYsnzkE2QZJAfNCyihZzoHcjmAvGeh0dbvQ7p/uTIg0J8v7ya4KDciraWZX0x6IYax2yYCo+TjNVHSyw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO6PR18MB4465.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(136003)(366004)(396003)(346002)(376002)(39860400002)(64756008)(52536014)(2906002)(86362001)(66556008)(66446008)(66476007)(66946007)(38070700005)(71200400001)(8936002)(122000001)(7696005)(110136005)(8676002)(30864003)(316002)(76116006)(33656002)(38100700002)(5660300002)(9686003)(478600001)(186003)(83380400001)(6506007)(26005)(53546011)(55016002)(559001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QW0zNjJqeUdxZEx6VHdxbnNESnNFeHBBWTlnZ3RMSGRWZFRpeXgzekI1dHFO?= =?utf-8?B?MndMMDdDdGZQTDNGUFQ5eldOdDhvdGFQZzJDTm5NWFk3N2o5WWZQeFo3ak1i?= =?utf-8?B?M3JtaHZqV3NheTI0M0xFamR2ZlMvZzYwdDZFVnVyWWZUUEEwOXZOcHVjdjgy?= =?utf-8?B?bUFlZGxnck5YMVEweWl4ellGdXNiYXpldFQ5OXYxeTBaU1RYVlhVcnRzRXN5?= =?utf-8?B?c3c2aXVMVmhKbXhEalRzWmR3dURXbUJkN3dXUS9iV294YVY2c255VDV1Sita?= =?utf-8?B?Umk5Z1gwWFJCbk43akNhcldESjBRU3Zhb21jaVkxUEV5MVJyN3A1QVM2ek5y?= =?utf-8?B?UzkzbHpPTzl0emFkZGxsMlNkcFcwdlpDVnRKM04vWnQyOG0rNWdyNTFtRFpU?= =?utf-8?B?V3gwRnhCa1M1dTBTRFQzeVpKOGxoTDdMdjJ3RGp1NFAyMFhWQzlqTkhuUEx3?= =?utf-8?B?TTFXQVJVTVFqL3FoRWZQTHVWTVhacTQ0dmRUajlxWWVKZ0RpdVpYWEo2Nm9X?= =?utf-8?B?bUdpdTV3b2tYbHMrVXBYUC83V1VyU0FzVW9rclpuQWJCUVJZR2p5anBZT1Jw?= =?utf-8?B?d0ZLa3JNZGhGUWVyMmJNMURGZjF1VGlpWVEwaTJ3d2FIZWR5QnZnR1dFK0Vz?= =?utf-8?B?OWE1QVRWLzlhamlpYjlXNzc2MTdUaFZySkNvalYrcHBqRnkwZm14aXRIVmlB?= =?utf-8?B?K2FhU2dlRmJDRzVzOXFJQzFWM01Za1lhU3pPQVdyTExwRWwyaWJTZlpYY2Iw?= =?utf-8?B?Z1VNcmxVc1Q2Kzd0T3pJSytqRUE1aW1URFhoem1GckxmMG5rdHdQZ1BFS1Vp?= =?utf-8?B?VlpWL2gxL2JDd1ludVYvWnd5UERvMDA0V1ljNHFvS3p5cVRFbFRTWE9QbUw3?= =?utf-8?B?a0t4NVRTdW5FYnVIWHZlN2VLd0dUTU5NWGZGTFpvenF3cVJsUlMyRlplRHVW?= =?utf-8?B?dFV1MWJDV0lIV1gwcXZkZzYwTjhVZWNQU0hPa3pXT3A1MW9QQXlCUzRZSis4?= =?utf-8?B?MzNTQzFESTNvOHR3Q0gzU1NJZnZLbzYyVGluV29WdnRNMEc0UklvakNVUzRC?= =?utf-8?B?VWduL05KWU9lQ3JJRHYrTXJzaFl1QjN5Z3V0TGwwdFpTUzZKdE9Xckp3UWM0?= =?utf-8?B?UmpBc2JUZVhBWTdEaFpGc0J1dzhTaHI5Y1dxZVZheTJFejlyTHlpQWlyMXM3?= =?utf-8?B?NWJHUUlLV2x6Ym5iWS9pUmhYZG9TTzdkRm1DeExKZEtKNzN0aXJ0azhMdWRh?= =?utf-8?B?bmRNaWkyai8vQUMxUFBsT2JEd0JPeGVGbGxpckF0UUl3eGRpMmJoU3k3bmZm?= =?utf-8?B?MkwrQkplSW9idkxmVlpHbDd4UFNJanRkTFh1MXhrKzBveUttTjNFNWE1c3Vj?= =?utf-8?B?bzIrRkFQNExkd3IzSjBtaGNEZjN2K09Ka09MVGJ2YTNIWStzbHJTaWJHM1do?= =?utf-8?B?Vk1ZMFo0WlJiNmk1QWdyOW01OG1lRnU0VlMzL3NtekFJQThURVJpNWFVTXJW?= =?utf-8?B?RW1HSzR4bzZwU2JrWnArZ0krdFkwU3lUdXBpcWlKNncwUGhpYW90d0l6NUZs?= =?utf-8?B?ZjZ4aTRQenQ2S1hwdkMxQ3Fwd2JodGZmODVVejdRUHhHbTZkRHlNbUhIK1RT?= =?utf-8?B?NWl6UThVZUJUS1FDRWFxUm4rWmoybG5Dejdjc1Q3WEJkVmQ2NjhBWThyYWtp?= =?utf-8?B?eHJCWDVJNG5jcHU4TC90Z3VYem9zTW43dDE2S00xVHhXWW1nUTEwQS81WmZx?= =?utf-8?Q?jPIonL8GhPQfYWNKJBjzNKQTJCAB/7U5MUdV/06?= x-ms-exchange-transport-forked: True Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: marvell.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO6PR18MB4465.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2182bada-1169-47d8-ccc4-08d96307c0f5 X-MS-Exchange-CrossTenant-originalarrivaltime: 19 Aug 2021 11:52:00.0800 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: hA3tA4RagYkIVurQVwq9NTtIuduwpGg0+iRXXUn3Qa/7kISGUFrQLUhktjiW5ZpeKqJLz3SGZ9BzCoufDalQXg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR18MB4572 X-Proofpoint-GUID: GyeUujv0lTwAV0o77PKnODGbCIFoDSbU X-Proofpoint-ORIG-GUID: GyeUujv0lTwAV0o77PKnODGbCIFoDSbU X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.182.1,Aquarius:18.0.790,Hydra:6.0.391,FMLib:17.0.607.475 definitions=2021-08-19_06,2021-08-17_02,2020-04-07_01 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org UGxlYXNlIHNlZSBpbmxpbmUNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBKb2huIEdhcnJ5IDxqb2huLmdhcnJ5QGh1YXdlaS5jb20+DQo+IFNlbnQ6IFdlZG5lc2RheSwg QXVndXN0IDE4LCAyMDIxIDc6MTkgUE0NCj4gVG86IEJoYXJhdCBCaHVzaGFuIDxiYmh1c2hhbjJA bWFydmVsbC5jb20+OyB3aWxsQGtlcm5lbC5vcmc7DQo+IG1hcmsucnV0bGFuZEBhcm0uY29tOyBy b2JoK2R0QGtlcm5lbC5vcmc7IGxpbnV4LWFybS0NCj4ga2VybmVsQGxpc3RzLmluZnJhZGVhZC5v cmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC0NCj4ga2VybmVsQHZnZXIua2Vy bmVsLm9yZw0KPiBTdWJqZWN0OiBbRVhUXSBSZTogW1BBVENIIHYyIDIvNF0gcGVyZi9tYXJ2ZWxs OiBDTjEwayBERFIgcGVyZm9ybWFuY2UgbW9uaXRvcg0KPiBzdXBwb3J0DQo+IA0KPiBFeHRlcm5h bCBFbWFpbA0KPiANCj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiBPbiAxMC8wOC8yMDIxIDEwOjQzLCBCaGFy YXQgQmh1c2hhbiB3cm90ZToNCj4gPiBNYXJ2ZWxsIENOMTBrIERSQU0gU3Vic3lzdGVtIChEU1Mp IHN1cHBvcnRzIGVpZ2h0DQo+ID4gZXZlbnQgY291bnRlcnMgZm9yIG1vbml0b3JpbmcgcGVyZm9y bWFuY2UgYW5kIHNvZnR3YXJlDQo+ID4gY2FuIHByb2dyYW0gZWFjaCBjb3VudGVyIHRvIG1vbml0 b3IgYW55IG9mIHRoZSBkZWZpbmVkDQo+ID4gcGVyZm9ybWFuY2UgZXZlbnQuIFBlcmZvcm1hbmNl IGV2ZW50cyBhcmUgZm9yIGludGVyZmFjZQ0KPiA+IGJldHdlZW4gdGhlIEREUiBjb250cm9sbGVy IGFuZCB0aGUgUEhZLCBpbnRlcmZhY2UgYmV0d2Vlbg0KPiA+IHRoZSBERFIgQ29udHJvbGxlciBh bmQgdGhlIENISSBpbnRlcmNvbm5lY3QsIG9yIHdpdGhpbg0KPiA+IHRoZSBERFIgQ29udHJvbGxl ci4gQWRkaXRpb25hbGx5IERTUyBhbHNvIHN1cHBvcnRzIHR3bw0KPiA+IGZpeGVkIHBlcmZvcm1h bmNlIGV2ZW50IGNvdW50ZXJzLCBvbmUgZm9yIG51bWJlciBvZg0KPiA+IGRkciByZWFkcyBhbmQg b3RoZXIgZm9yIGRkciB3cml0ZXMuDQo+ID4NCj4gPiBUaGlzIHBhdGNoIGFkZCBiYXNpYyBzdXBw b3J0IGZvciB0aGVzZSBwZXJmb3JtYW5jZQ0KPiA+IG1vbml0b3JpbmcgZXZlbnRzIG9uIENOMTBr Lg0KPiANCj4gcGxlYXNlIHVzZSBmdWxsIDc1IGNoYXIgd2lkdGgNCg0KT2ssDQoNCj4gDQo+ID4N Cj4gPiBTaWduZWQtb2ZmLWJ5OiBCaGFyYXQgQmh1c2hhbiA8YmJodXNoYW4yQG1hcnZlbGwuY29t Pg0KPiA+IC0tLQ0KPiA+IHYxLT52MjoNCj4gPiAgIC0gd3JpdGVxL3JlYWRxIGNoYW5nZWQgdG8g cmVzcGVjdGl2ZSByZWxheGVkIHZlcnNpb24NCj4gPiAgIC0gVXNpbmcgUE1VX0VWRU5UX0FUVFJf SUQNCj4gPg0KPiA+ICAgZHJpdmVycy9wZXJmL0tjb25maWcgICAgICAgICAgICAgICAgIHwgICA3 ICsNCj4gPiAgIGRyaXZlcnMvcGVyZi9NYWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArDQo+ ID4gICBkcml2ZXJzL3BlcmYvbWFydmVsbF9jbjEwa19kZHJfcG11LmMgfCA2MDYgKysrKysrKysr KysrKysrKysrKysrKysrKysrDQo+ID4gICAzIGZpbGVzIGNoYW5nZWQsIDYxNCBpbnNlcnRpb25z KCspDQo+ID4gICBjcmVhdGUgbW9kZSAxMDA2NDQgZHJpdmVycy9wZXJmL21hcnZlbGxfY24xMGtf ZGRyX3BtdS5jDQo+ID4NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL0tjb25maWcgYi9k cml2ZXJzL3BlcmYvS2NvbmZpZw0KPiA+IGluZGV4IDc3NTIyZTVlZmUxMS4uNDFhODBhNGI4ZDI5 IDEwMDY0NA0KPiA+IC0tLSBhL2RyaXZlcnMvcGVyZi9LY29uZmlnDQo+ID4gKysrIGIvZHJpdmVy cy9wZXJmL0tjb25maWcNCj4gPiBAQCAtMTM5LDQgKzEzOSwxMSBAQCBjb25maWcgQVJNX0RNQzYy MF9QTVUNCj4gPg0KPiA+ICAgc291cmNlICJkcml2ZXJzL3BlcmYvaGlzaWxpY29uL0tjb25maWci DQo+ID4NCj4gPiArY29uZmlnIE1BUlZFTExfQ04xMEtfRERSX1BNVQ0KPiA+ICsJdHJpc3RhdGUg IkVuYWJsZSBNQVJWRUxMIENOMTBLIERSQU0gU3Vic3lzdGVtKERTUykgUE1VIFN1cHBvcnQiDQo+ ID4gKwlkZXBlbmRzIG9uIEFSTTY0DQo+IA0KPiBJcyB0aGVyZSBhbnl0aGluZyB0byBzdG9wIHVz aW5nIGFkZGluZyBDT01QSUxFX1RFU1QgYXMgYSBkZXBlbmRlbmN5Pw0KPiBUaGlzIHJlYWxseSBo ZWxwcyBidWlsZCBjb3ZlcmFnZSB0ZXN0aW5nIGZvciBvdGhlciBhcmNocw0KDQpKdXN0IGtlZXBp bmcgc2FtZSBhcyBvdGhlciBkcml2ZXJzDQoNCj4gDQo+ID4gKwloZWxwDQo+ID4gKwkgIEVuYWJs ZSBwZXJmIHN1cHBvcnQgZm9yIE1hcnZlbGwgRERSIFBlcmZvcm1hbmNlIG1vbml0b3JpbmcNCj4g PiArCSAgZXZlbnQgb24gQ04xMEsgcGxhdGZvcm0uDQo+ID4gKw0KPiA+ICAgZW5kbWVudQ0KPiA+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL3BlcmYvTWFrZWZpbGUgYi9kcml2ZXJzL3BlcmYvTWFrZWZp bGUNCj4gPiBpbmRleCA1MjYwYjExNmM3ZGEuLmVlMTEyNjIxOWQ4ZCAxMDA2NDQNCj4gPiAtLS0g YS9kcml2ZXJzL3BlcmYvTWFrZWZpbGUNCj4gPiArKysgYi9kcml2ZXJzL3BlcmYvTWFrZWZpbGUN Cj4gPiBAQCAtMTQsMyArMTQsNCBAQCBvYmotJChDT05GSUdfVEhVTkRFUlgyX1BNVSkgKz0gdGh1 bmRlcngyX3BtdS5vDQo+ID4gICBvYmotJChDT05GSUdfWEdFTkVfUE1VKSArPSB4Z2VuZV9wbXUu bw0KPiA+ICAgb2JqLSQoQ09ORklHX0FSTV9TUEVfUE1VKSArPSBhcm1fc3BlX3BtdS5vDQo+ID4g ICBvYmotJChDT05GSUdfQVJNX0RNQzYyMF9QTVUpICs9IGFybV9kbWM2MjBfcG11Lm8NCj4gPiAr b2JqLSQoQ09ORklHX01BUlZFTExfQ04xMEtfRERSX1BNVSkgKz0gbWFydmVsbF9jbjEwa19kZHJf cG11Lm8NCj4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9wZXJmL21hcnZlbGxfY24xMGtfZGRyX3Bt dS5jDQo+IGIvZHJpdmVycy9wZXJmL21hcnZlbGxfY24xMGtfZGRyX3BtdS5jDQo+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjhmOWUzZDFmY2Q4ZA0KPiA+ IC0tLSAvZGV2L251bGwNCj4gPiArKysgYi9kcml2ZXJzL3BlcmYvbWFydmVsbF9jbjEwa19kZHJf cG11LmMNCj4gPiBAQCAtMCwwICsxLDYwNiBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogR1BMLTIuMA0KPiA+ICsvKiBNYXJ2ZWxsIENOMTBLIERSQU0gU3Vic3lzdGVtIChEU1Mp IFBlcmZvcm1hbmNlIE1vbml0b3IgRHJpdmVyDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAo QykgMjAyMSBNYXJ2ZWxsLg0KPiA+ICsgKi8NCj4gPiArDQo+ID4gKyNpbmNsdWRlIDxsaW51eC9p bml0Lmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9vZi5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvb2ZfYWRkcmVzcy5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4g KyNpbmNsdWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+DQo+ID4gKw0KPiA+ICsvKiBQZXJmb3JtYW5j ZSBDb3VudGVycyBPcGVyYXRpbmcgTW9kZSBDb250cm9sIFJlZ2lzdGVycyAqLw0KPiA+ICsjZGVm aW5lIEREUkNfUEVSRl9DTlRfT1BfTU9ERV9DVFJMCTB4ODAyMA0KPiA+ICsjZGVmaW5lIE9QX01P REVfQ1RSTF9WQUxfTUFOTlVBTAkweDENCj4gPiArDQo+ID4gKy8qIFBlcmZvcm1hbmNlIENvdW50 ZXJzIFN0YXJ0IE9wZXJhdGlvbiBDb250cm9sIFJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIERE UkNfUEVSRl9DTlRfU1RBUlRfT1BfQ1RSTAkweDgwMjgNCj4gPiArI2RlZmluZSBTVEFSVF9PUF9D VFJMX1ZBTF9TVEFSVAkJMHgxVUxMDQo+ID4gKyNkZWZpbmUgU1RBUlRfT1BfQ1RSTF9WQUxfQUNU SVZFCTB4Mg0KPiA+ICsNCj4gPiArLyogUGVyZm9ybWFuY2UgQ291bnRlcnMgRW5kIE9wZXJhdGlv biBDb250cm9sIFJlZ2lzdGVycyAqLw0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfRU5EX09Q X0NUUkwJMHg4MDMwDQo+ID4gKyNkZWZpbmUgRU5EX09QX0NUUkxfVkFMX0VORAkJMHgxVUxMDQo+ ID4gKw0KPiA+ICsvKiBQZXJmb3JtYW5jZSBDb3VudGVycyBFbmQgU3RhdHVzIFJlZ2lzdGVycyAq Lw0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfRU5EX1NUQVRVUwkJMHg4MDM4DQo+ID4gKyNk ZWZpbmUgRU5EX1NUQVRVU19WQUxfRU5EX1RJTUVSX01PREVfRU5ECTB4MQ0KPiA+ICsNCj4gPiAr LyogUGVyZm9ybWFuY2UgQ291bnRlcnMgQ29uZmlndXJhdGlvbiBSZWdpc3RlcnMgKi8NCj4gPiAr I2RlZmluZSBERFJDX1BFUkZfQ0ZHX0JBU0UJCTB4ODA0MA0KPiA+ICsNCj4gPiArLyogOCBHZW5l cmljIGV2ZW50IGNvdW50ZXIgKyAyIGZpeGVkIGV2ZW50IGNvdW50ZXJzICovDQo+ID4gKyNkZWZp bmUgRERSQ19QRVJGX05VTV9HRU5fQ09VTlRFUlMJOA0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9O VU1fRklYX0NPVU5URVJTCTINCj4gPiArI2RlZmluZSBERFJDX1BFUkZfUkVBRF9DT1VOVEVSX0lE WA0KPiAJRERSQ19QRVJGX05VTV9HRU5fQ09VTlRFUlMNCj4gPiArI2RlZmluZSBERFJDX1BFUkZf V1JJVEVfQ09VTlRFUl9JRFgNCj4gCShERFJDX1BFUkZfTlVNX0dFTl9DT1VOVEVSUyArIDEpDQo+ ID4gKyNkZWZpbmUgRERSQ19QRVJGX05VTV9DT1VOVEVSUw0KPiAJKEREUkNfUEVSRl9OVU1fR0VO X0NPVU5URVJTICsgXA0KPiA+ICsJCQkJCSBERFJDX1BFUkZfTlVNX0ZJWF9DT1VOVEVSUykNCj4g PiArDQo+ID4gKy8qIEdlbmVyaWMgZXZlbnQgY291bnRlciByZWdpc3RlcnMgKi8NCj4gPiArI2Rl ZmluZSBERFJDX1BFUkZfQ0ZHKG4pCQkoRERSQ19QRVJGX0NGR19CQVNFICsgOCAqIChuKSkNCj4g PiArI2RlZmluZSBFVkVOVF9FTkFCTEUJCQlCSVRfVUxMKDYzKQ0KPiA+ICsNCj4gPiArLyogVHdv IGRlZGljYXRlZCBldmVudCBjb3VudGVycyBmb3IgRERSIHJlYWRzIGFuZCB3cml0ZXMgKi8NCj4g PiArI2RlZmluZSBFVkVOVF9ERFJfUkVBRFMJCQkxMDENCj4gPiArI2RlZmluZSBFVkVOVF9ERFJf V1JJVEVTCQkxMDANCj4gPiArDQo+ID4gKy8qDQo+ID4gKyAqIHByb2dyYW1tYWJsZSBldmVudHMg SURzIGluIHByb2dyYW1tYWJsZSBldmVudCBjb3VudGVycy4NCj4gPiArICogRE8gTk9UIGNoYW5n ZSB0aGVzZSBldmVudC1pZCBudW1iZXJzLCB0aGV5IGFyZSB1c2VkIHRvDQo+ID4gKyAqIHByb2dy YW0gZXZlbnQgYml0bWFwIGluIGgvdy4NCj4gPiArICovDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1Bf SVNfWlFMQVRDSAkJCTU1DQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfWlFTVEFSVAkJCTU0DQo+ ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfVENSX01SUgkJCTUzDQo+ID4gKyNkZWZpbmUgRVZFTlRf T1BfSVNfRFFTT1NDX01SUgkJCTUyDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfRFFTT1NDX01Q QwkJCTUxDQo+ID4gKyNkZWZpbmUgRVZFTlRfVklTSUJMRV9XSU5fTElNSVRfUkVBQ0hFRF9XUgk1 MA0KPiA+ICsjZGVmaW5lIEVWRU5UX1ZJU0lCTEVfV0lOX0xJTUlUX1JFQUNIRURfUkQJNDkNCj4g PiArI2RlZmluZSBFVkVOVF9CU01fU1RBUlZBVElPTgkJCTQ4DQo+ID4gKyNkZWZpbmUgRVZFTlRf QlNNX0FMTE9DCQkJCTQ3DQo+ID4gKyNkZWZpbmUgRVZFTlRfTFBSX1JFUV9XSVRIX05PQ1JFRElU CQk0Ng0KPiA+ICsjZGVmaW5lIEVWRU5UX0hQUl9SRVFfV0lUSF9OT0NSRURJVAkJNDUNCj4gPiAr I2RlZmluZSBFVkVOVF9PUF9JU19aUUNTCQkJNDQNCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19a UUNMCQkJNDMNCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19MT0FEX01PREUJCQk0Mg0KPiA+ICsj ZGVmaW5lIEVWRU5UX09QX0lTX1NQRUNfUkVGCQkJNDENCj4gPiArI2RlZmluZSBFVkVOVF9PUF9J U19DUklUX1JFRgkJCTQwDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfUkVGUkVTSAkJCTM5DQo+ ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfRU5URVJfTVBTTQkJCTM1DQo+ID4gKyNkZWZpbmUgRVZF TlRfT1BfSVNfRU5URVJfUE9XRVJET1dOCQkzMQ0KPiA+ICsjZGVmaW5lIEVWRU5UX09QX0lTX0VO VEVSX1NFTEZSRUYJCTI3DQo+ID4gKyNkZWZpbmUgRVZFTlRfV0FXX0hBWkFSRAkJCTI2DQo+ID4g KyNkZWZpbmUgRVZFTlRfUkFXX0hBWkFSRAkJCTI1DQo+ID4gKyNkZWZpbmUgRVZFTlRfV0FSX0hB WkFSRAkJCTI0DQo+ID4gKyNkZWZpbmUgRVZFTlRfV1JJVEVfQ09NQklORQkJCTIzDQo+ID4gKyNk ZWZpbmUgRVZFTlRfUkRXUl9UUkFOU0lUSU9OUwkJCTIyDQo+ID4gKyNkZWZpbmUgRVZFTlRfUFJF Q0hBUkdFX0ZPUl9PVEhFUgkJMjENCj4gPiArI2RlZmluZSBFVkVOVF9QUkVDSEFSR0VfRk9SX1JE V1IJCTIwDQo+ID4gKyNkZWZpbmUgRVZFTlRfT1BfSVNfUFJFQ0hBUkdFCQkJMTkNCj4gPiArI2Rl ZmluZSBFVkVOVF9PUF9JU19NV1IJCQkJMTgNCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19XUgkJ CQkxNw0KPiA+ICsjZGVmaW5lIEVWRU5UX09QX0lTX1JECQkJCTE2DQo+ID4gKyNkZWZpbmUgRVZF TlRfT1BfSVNfUkRfQUNUSVZBVEUJCQkxNQ0KPiA+ICsjZGVmaW5lIEVWRU5UX09QX0lTX1JEX09S X1dSCQkJMTQNCj4gPiArI2RlZmluZSBFVkVOVF9PUF9JU19BQ1RJVkFURQkJCTEzDQo+ID4gKyNk ZWZpbmUgRVZFTlRfV1JfWEFDVF9XSEVOX0NSSVRJQ0FMCQkxMg0KPiA+ICsjZGVmaW5lIEVWRU5U X0xQUl9YQUNUX1dIRU5fQ1JJVElDQUwJCTExDQo+ID4gKyNkZWZpbmUgRVZFTlRfSFBSX1hBQ1Rf V0hFTl9DUklUSUNBTAkJMTANCj4gPiArI2RlZmluZSBFVkVOVF9ERklfUkRfREFUQV9DWUNMRVMJ CTkNCj4gPiArI2RlZmluZSBFVkVOVF9ERklfV1JfREFUQV9DWUNMRVMJCTgNCj4gPiArI2RlZmlu ZSBFVkVOVF9BQ1RfQllQQVNTCQkJNw0KPiA+ICsjZGVmaW5lIEVWRU5UX1JFQURfQllQQVNTCQkJ Ng0KPiA+ICsjZGVmaW5lIEVWRU5UX0hJRl9ISV9QUklfUkQJCQk1DQo+ID4gKyNkZWZpbmUgRVZF TlRfSElGX1JNVwkJCQk0DQo+ID4gKyNkZWZpbmUgRVZFTlRfSElGX1JECQkJCTMNCj4gPiArI2Rl ZmluZSBFVkVOVF9ISUZfV1IJCQkJMg0KPiA+ICsjZGVmaW5lIEVWRU5UX0hJRl9SRF9PUl9XUgkJ CTENCj4gPiArDQo+ID4gKy8qIEV2ZW50IGNvdW50ZXIgdmFsdWUgcmVnaXN0ZXJzICovDQo+ID4g KyNkZWZpbmUgRERSQ19QRVJGX0NOVF9WQUxVRV9CQVNFCQkweDgwODANCj4gPiArI2RlZmluZSBE RFJDX1BFUkZfQ05UX1ZBTFVFKG4pCShERFJDX1BFUkZfQ05UX1ZBTFVFX0JBU0UgKyA4ICogKG4p KQ0KPiA+ICsNCj4gPiArLyogRml4ZWQgZXZlbnQgY291bnRlciBlbmFibGUvZGlzYWJsZSByZWdp c3RlciAqLw0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfRlJFRVJVTl9FTgkweDgwQzANCj4g PiArI2RlZmluZSBERFJDX1BFUkZfRlJFRVJVTl9XUklURV9FTgkweDENCj4gPiArI2RlZmluZSBE RFJDX1BFUkZfRlJFRVJVTl9SRUFEX0VOCTB4Mg0KPiA+ICsNCj4gPiArLyogRml4ZWQgZXZlbnQg Y291bnRlciBjb250cm9sIHJlZ2lzdGVyICovDQo+ID4gKyNkZWZpbmUgRERSQ19QRVJGX0NOVF9G UkVFUlVOX0NUUkwJMHg4MEM4DQo+ID4gKyNkZWZpbmUgRERSQ19GUkVFUlVOX1dSSVRFX0NOVF9D TFIJMHgxDQo+ID4gKyNkZWZpbmUgRERSQ19GUkVFUlVOX1JFQURfQ05UX0NMUgkweDINCj4gPiAr DQo+ID4gKy8qIEZpeGVkIGV2ZW50IGNvdW50ZXIgdmFsdWUgcmVnaXN0ZXIgKi8NCj4gPiArI2Rl ZmluZSBERFJDX1BFUkZfQ05UX1ZBTFVFX1dSX09QCTB4ODBEMA0KPiA+ICsjZGVmaW5lIEREUkNf UEVSRl9DTlRfVkFMVUVfUkRfT1AJMHg4MEQ4DQo+ID4gKyNkZWZpbmUgRERSQ19QRVJGX0NOVF9W QUxVRV9PVkVSRkxPVwlCSVRfVUxMKDQ4KQ0KPiA+ICsjZGVmaW5lIEREUkNfUEVSRl9DTlRfTUFY X1ZBTFVFCQlHRU5NQVNLX1VMTCg0OCwgMCkNCj4gDQo+IEkgYXNzdW1lIGFsbCB0aGVzZSBtYWNy b3MgYXJlIHVzZWQuLi4NCg0KWWVzLCBkbyB5b3Ugc2VlIGFueSB1bnVzZWQ/DQoNCj4gDQo+ID4g Kw0KPiA+ICtzdHJ1Y3QgY24xMGtfZGRyX3BtdSB7DQo+ID4gKwlzdHJ1Y3QgcG11IHBtdTsNCj4g PiArCWludCBpZDsNCj4gPiArCXZvaWQgX19pb21lbSAqYmFzZTsNCj4gPiArCXVuc2lnbmVkIGlu dCBjcHU7DQo+ID4gKwlzdHJ1Y3QJZGV2aWNlICpkZXY7DQo+ID4gKwlpbnQgYWN0aXZlX2V2ZW50 czsNCj4gPiArCXN0cnVjdCBwZXJmX2V2ZW50ICpldmVudHNbRERSQ19QRVJGX05VTV9DT1VOVEVS U107DQo+ID4gK307DQo+ID4gKw0KPiA+ICsjZGVmaW5lIHRvX2NuMTBrX2Rkcl9wbXUocCkJY29u dGFpbmVyX29mKHAsIHN0cnVjdCBjbjEwa19kZHJfcG11LA0KPiBwbXUpDQo+ID4gKw0KPiA+ICtz dGF0aWMgc3NpemVfdCBjbjEwa19kZHJfcG11X2V2ZW50X3Nob3coc3RydWN0IGRldmljZSAqZGV2 LA0KPiA+ICsJCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRyLA0KPiA+ICsJCQkJCWNo YXIgKnBhZ2UpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBwZXJmX3BtdV9ldmVudHNfYXR0ciAqcG11 X2F0dHI7DQo+ID4gKw0KPiA+ICsJcG11X2F0dHIgPSBjb250YWluZXJfb2YoYXR0ciwgc3RydWN0 IHBlcmZfcG11X2V2ZW50c19hdHRyLCBhdHRyKTsNCj4gPiArCXJldHVybiBzcHJpbnRmKHBhZ2Us ICJldmVudD0weCUwMmxseFxuIiwgcG11X2F0dHItPmlkKTsNCj4gDQo+IGlzbid0IHN5c2ZzX2Vt aXQoKSBwcmVmZXJyZWQgbm93PyBOZWVkIHRvIGNoZWNrLg0KDQpZZXMsIFRoYW5rcyBmb3IgcG9p bnRpbmcuDQoNCj4gDQo+ID4gK30NCj4gPiArDQo+ID4gKyNkZWZpbmUgQ04xMEtfRERSX1BNVV9F VkVOVF9BVFRSKF9uYW1lLCBfaWQpDQo+IAkgICAgIFwNCj4gPiArCVBNVV9FVkVOVF9BVFRSX0lE KF9uYW1lLCBjbjEwa19kZHJfcG11X2V2ZW50X3Nob3csIF9pZCkNCj4gPiArDQo+ID4gK3N0YXRp YyBzdHJ1Y3QgYXR0cmlidXRlICpjbjEwa19kZHJfcGVyZl9ldmVudHNfYXR0cnNbXSA9IHsNCj4g PiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfaGlmX3JkX29yX3dyX2FjY2VzcywNCj4g RVZFTlRfSElGX1JEX09SX1dSKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJf aGlmX3dyX2FjY2VzcywgRVZFTlRfSElGX1dSKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRf QVRUUihkZHJfaGlmX3JkX2FjY2VzcywgRVZFTlRfSElGX1JEKSwNCj4gPiArCUNOMTBLX0REUl9Q TVVfRVZFTlRfQVRUUihkZHJfaGlmX3Jtd19hY2Nlc3MsDQo+IEVWRU5UX0hJRl9STVcpLA0KPiA+ ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9oaWZfcHJpX3JkYWNjZXNzLA0KPiBFVkVO VF9ISUZfSElfUFJJX1JEKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfcmRf YnlwYXNzX2FjY2VzcywNCj4gRVZFTlRfUkVBRF9CWVBBU1MpLA0KPiA+ICsJQ04xMEtfRERSX1BN VV9FVkVOVF9BVFRSKGRkcl9hY3RfYnlwYXNzX2FjY2VzcywNCj4gRVZFTlRfQUNUX0JZUEFTUyks DQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2RpZl93cl9kYXRhX2FjY2VzcywN Cj4gRVZFTlRfREZJX1dSX0RBVEFfQ1lDTEVTKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRf QVRUUihkZHJfZGlmX3JkX2RhdGFfYWNjZXNzLA0KPiBFVkVOVF9ERklfUkRfREFUQV9DWUNMRVMp LA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9ocHJpX3NjaGVkX3JkX2NyaXRf YWNjZXNzLA0KPiA+ICsJCQkJCUVWRU5UX0hQUl9YQUNUX1dIRU5fQ1JJVElDQUwpLA0KPiA+ICsJ Q04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9scHJpX3NjaGVkX3JkX2NyaXRfYWNjZXNzLA0K PiA+ICsJCQkJCUVWRU5UX0xQUl9YQUNUX1dIRU5fQ1JJVElDQUwpLA0KPiA+ICsJQ04xMEtfRERS X1BNVV9FVkVOVF9BVFRSKGRkcl93cl90cnhuX2NyaXRfYWNjZXNzLA0KPiA+ICsJCQkJCUVWRU5U X1dSX1hBQ1RfV0hFTl9DUklUSUNBTCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIo ZGRyX2NhbV9hY3RpdmVfYWNjZXNzLA0KPiBFVkVOVF9PUF9JU19BQ1RJVkFURSksDQo+ID4gKwlD TjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2NhbV9yZF9vcl93cl9hY2Nlc3MsDQo+IEVWRU5U X09QX0lTX1JEX09SX1dSKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfY2Ft X3JkX2FjdGl2ZV9hY2Nlc3MsDQo+IEVWRU5UX09QX0lTX1JEX0FDVElWQVRFKSwNCj4gPiArCUNO MTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfY2FtX3JlYWQsIEVWRU5UX09QX0lTX1JEKSwNCj4g PiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfY2FtX3dyaXRlLCBFVkVOVF9PUF9JU19X UiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2NhbV9td3IsIEVWRU5UX09Q X0lTX01XUiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX3ByZWNoYXJnZSwN Cj4gRVZFTlRfT1BfSVNfUFJFQ0hBUkdFKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRU UihkZHJfcHJlY2hhcmdlX2Zvcl9yZHdyLA0KPiBFVkVOVF9QUkVDSEFSR0VfRk9SX1JEV1IpLA0K PiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9wcmVjaGFyZ2VfZm9yX290aGVyLA0K PiA+ICsJCQkJCUVWRU5UX1BSRUNIQVJHRV9GT1JfT1RIRVIpLA0KPiA+ICsJQ04xMEtfRERSX1BN VV9FVkVOVF9BVFRSKGRkcl9yZHdyX3RyYW5zaXRpb25zLA0KPiBFVkVOVF9SRFdSX1RSQU5TSVRJ T05TKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfd3JpdGVfY29tYmluZSwN Cj4gRVZFTlRfV1JJVEVfQ09NQklORSksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIo ZGRyX3dhcl9oYXphcmQsDQo+IEVWRU5UX1dBUl9IQVpBUkQpLA0KPiA+ICsJQ04xMEtfRERSX1BN VV9FVkVOVF9BVFRSKGRkcl9yYXdfaGF6YXJkLA0KPiBFVkVOVF9SQVdfSEFaQVJEKSwNCj4gPiAr CUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfd2F3X2hhemFyZCwNCj4gRVZFTlRfV0FXX0hB WkFSRCksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2VudGVyX3NlbGZyZWYs DQo+IEVWRU5UX09QX0lTX0VOVEVSX1NFTEZSRUYpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVO VF9BVFRSKGRkcl9lbnRlcl9wb3dlcmRvd24sDQo+IEVWRU5UX09QX0lTX0VOVEVSX1BPV0VSRE9X TiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2VudGVyX21wc20sDQo+IEVW RU5UX09QX0lTX0VOVEVSX01QU00pLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRk cl9yZWZyZXNoLCBFVkVOVF9PUF9JU19SRUZSRVNIKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZF TlRfQVRUUihkZHJfY3JpdF9yZWYsIEVWRU5UX09QX0lTX0NSSVRfUkVGKSwNCj4gPiArCUNOMTBL X0REUl9QTVVfRVZFTlRfQVRUUihkZHJfc3BlY19yZWYsIEVWRU5UX09QX0lTX1NQRUNfUkVGKSwN Cj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfbG9hZF9tb2RlLA0KPiBFVkVOVF9P UF9JU19MT0FEX01PREUpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl96cWNs LCBFVkVOVF9PUF9JU19aUUNMKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJf Y2FtX3dyX2FjY2VzcywNCj4gRVZFTlRfT1BfSVNfWlFDUyksDQo+ID4gKwlDTjEwS19ERFJfUE1V X0VWRU5UX0FUVFIoZGRyX2hwcl9yZXFfd2l0aF9ub2NyZWRpdCwNCj4gPiArCQkJCQlFVkVOVF9I UFJfUkVRX1dJVEhfTk9DUkVESVQpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRk cl9scHJfcmVxX3dpdGhfbm9jcmVkaXQsDQo+ID4gKwkJCQkJRVZFTlRfTFBSX1JFUV9XSVRIX05P Q1JFRElUKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfYnNtX2FsbG9jLCBF VkVOVF9CU01fQUxMT0MpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRkcl9ic21f c3RhcnZhdGlvbiwNCj4gRVZFTlRfQlNNX1NUQVJWQVRJT04pLA0KPiA+ICsJQ04xMEtfRERSX1BN VV9FVkVOVF9BVFRSKGRkcl93aW5fbGltaXRfcmVhY2hlZF9yZCwNCj4gPiArDQo+IAlFVkVOVF9W SVNJQkxFX1dJTl9MSU1JVF9SRUFDSEVEX1JEKSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRf QVRUUihkZHJfd2luX2xpbWl0X3JlYWNoZWRfd3IsDQo+ID4gKw0KPiAJRVZFTlRfVklTSUJMRV9X SU5fTElNSVRfUkVBQ0hFRF9XUiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRy X2Rxc29zY19tcGMsDQo+IEVWRU5UX09QX0lTX0RRU09TQ19NUEMpLA0KPiA+ICsJQ04xMEtfRERS X1BNVV9FVkVOVF9BVFRSKGRkcl9kcXNvc2NfbXJyLA0KPiBFVkVOVF9PUF9JU19EUVNPU0NfTVJS KSwNCj4gPiArCUNOMTBLX0REUl9QTVVfRVZFTlRfQVRUUihkZHJfdGNyX21yciwgRVZFTlRfT1Bf SVNfVENSX01SUiksDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX3pxc3RhcnQs IEVWRU5UX09QX0lTX1pRU1RBUlQpLA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9BVFRSKGRk cl96cWxhdGNoLCBFVkVOVF9PUF9JU19aUUxBVENIKSwNCj4gPiArCS8qIEZyZWUgcnVuIGV2ZW50 IGNvdW50ZXJzICovDQo+ID4gKwlDTjEwS19ERFJfUE1VX0VWRU5UX0FUVFIoZGRyX2Rkcl9yZWFk cywgRVZFTlRfRERSX1JFQURTKSwNCj4gDQo+IGlmIHlvdSB3YW50IHBlcmYgdG9vbCB0byBzdXBw b3J0IGFsaWFzZXMgLyBtZXRyaWNzIGZvciB0aGVzZSB0aGVuIGEgaHcNCj4gaWRlbnRpZmVyIHN5 c2ZzIGZpbGUgaXMgcmVxdWlyZWQsIGxpa2UgdGhlIGZyZWVzY2FsZSBpbXg4IGRkciBwbXUgZHJp dmVyDQo+IGhhcywgYXMgSSBhc3N1bWUgdGhhdCB0aGlzIFBNVSBpcyBub3QgdGlnaHRseSBjb3Vw bGVkIGFsd2F5cyB0byBhDQo+IHNwZWNpZmljIENQVQ0KDQpBcyBvZiBub3cgd2UgZG8gbm90IGhh dmUgZGRyIHBtdSB2ZXJzaW9uaW5nLg0KDQo+IA0KPiA+ICsJQ04xMEtfRERSX1BNVV9FVkVOVF9B VFRSKGRkcl9kZHJfd3JpdGVzLCBFVkVOVF9ERFJfV1JJVEVTKSwNCj4gPiArCU5VTEwsDQo+IA0K PiBubyBuZWVkIGZvciAnLCcgd2hlbiB0aGUgYXJyYXkgaXMgbm90IGdvaW5nIHRvIGJlIGV4cGFu ZGVkDQoNCk9oIHllcywNCg0KPiANCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlX2dyb3VwIGNuMTBrX2Rkcl9wZXJmX2V2ZW50c19hdHRyX2dyb3VwID0gew0KPiA+ ICsJLm5hbWUgPSAiZXZlbnRzIiwNCj4gPiArCS5hdHRycyA9IGNuMTBrX2Rkcl9wZXJmX2V2ZW50 c19hdHRycywNCj4gPiArfTsNCj4gPiArDQo+ID4gK1BNVV9GT1JNQVRfQVRUUihldmVudCwgImNv bmZpZzowLTgiKTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICpjbjEwa19k ZHJfcGVyZl9mb3JtYXRfYXR0cnNbXSA9IHsNCj4gPiArCSZmb3JtYXRfYXR0cl9ldmVudC5hdHRy LA0KPiA+ICsJTlVMTCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmli dXRlX2dyb3VwIGNuMTBrX2Rkcl9wZXJmX2Zvcm1hdF9hdHRyX2dyb3VwID0gew0KPiA+ICsJLm5h bWUgPSAiZm9ybWF0IiwNCj4gPiArCS5hdHRycyA9IGNuMTBrX2Rkcl9wZXJmX2Zvcm1hdF9hdHRy cywNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyBzc2l6ZV90IGNuMTBrX2Rkcl9wZXJmX2Nw dW1hc2tfc2hvdyhzdHJ1Y3QgZGV2aWNlICpkZXYsDQo+ID4gKwkJCQkJICAgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgKmF0dHIsDQo+ID4gKwkJCQkJICAgY2hhciAqYnVmKQ0KPiA+ICt7DQo+ID4g KwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gZGV2X2dldF9kcnZkYXRhKGRldik7DQo+ID4g Kw0KPiA+ICsJcmV0dXJuIGNwdW1hcF9wcmludF90b19wYWdlYnVmKHRydWUsIGJ1ZiwgY3B1bWFz a19vZihwbXUtPmNwdSkpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGRldmlj ZV9hdHRyaWJ1dGUgY24xMGtfZGRyX3BlcmZfY3B1bWFza19hdHRyID0NCj4gPiArCV9fQVRUUihj cHVtYXNrLCAwNDQ0LCBjbjEwa19kZHJfcGVyZl9jcHVtYXNrX3Nob3csIE5VTEwpOw0KPiA+ICsN Cj4gPiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKmNuMTBrX2Rkcl9wZXJmX2NwdW1hc2tfYXR0 cnNbXSA9IHsNCj4gPiArCSZjbjEwa19kZHJfcGVyZl9jcHVtYXNrX2F0dHIuYXR0ciwNCj4gPiAr CU5VTEwsDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3RydWN0IGF0dHJpYnV0ZV9ncm91 cCBjbjEwa19kZHJfcGVyZl9jcHVtYXNrX2F0dHJfZ3JvdXAgPSB7DQo+ID4gKwkuYXR0cnMgPSBj bjEwa19kZHJfcGVyZl9jcHVtYXNrX2F0dHJzLA0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArc3RhdGlj IGNvbnN0IHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgKmNuMTBrX2F0dHJfZ3JvdXBzW10gPSB7DQo+ ID4gKwkmY24xMGtfZGRyX3BlcmZfZXZlbnRzX2F0dHJfZ3JvdXAsDQo+ID4gKwkmY24xMGtfZGRy X3BlcmZfZm9ybWF0X2F0dHJfZ3JvdXAsDQo+ID4gKwkmY24xMGtfZGRyX3BlcmZfY3B1bWFza19h dHRyX2dyb3VwLA0KPiA+ICsJTlVMTCwNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0YXRpYyB1aW50 NjRfdCBkZHJfcGVyZl9nZXRfZXZlbnRfYml0bWFwKGludCBldmVudGlkKQ0KPiANCj4gRG9uJ3Qg d2UgdXNlIHU2NCBpbiBrZXJuZWwgbGFuZCBhcyBwcmVmZXJlbmNlPw0KDQpJIGFtIG5vdCBhd2Fy ZSBvZiBhbnkgZ3VpZGFuY2Ugb3IgcnVsZSwgYm90aCBhcmUgYmVpbmcgdXNlZC4NCkkgZW5kIHVw IHVzaW5nIHVpbnQ2NF90IGFuZCB1NjQgYm90aCwgd2lsbCB1c2Ugb25lIG9ubHkgd2l0aCBuZXh0 IHZlcnNpb24uIA0KDQo+IA0KPiA+ICt7DQo+ID4gKwl1aW50NjRfdCBldmVudF9iaXRtYXAgPSAw Ow0KPiA+ICsNCj4gPiArCXN3aXRjaCAoZXZlbnRpZCkgew0KPiA+ICsJY2FzZSBFVkVOVF9ISUZf UkRfT1JfV1IgLi4uIEVWRU5UX1dBV19IQVpBUkQ6DQo+ID4gKwljYXNlIEVWRU5UX09QX0lTX1JF RlJFU0ggLi4uIEVWRU5UX09QX0lTX1pRTEFUQ0g6DQo+ID4gKwkJZXZlbnRfYml0bWFwID0gKDFV TEwgPDwgKGV2ZW50aWQgLSAxKSk7DQo+ID4gKwkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJY2FzZSBF VkVOVF9PUF9JU19FTlRFUl9TRUxGUkVGOg0KPiA+ICsJY2FzZSBFVkVOVF9PUF9JU19FTlRFUl9Q T1dFUkRPV046DQo+ID4gKwljYXNlIEVWRU5UX09QX0lTX0VOVEVSX01QU006DQo+ID4gKwkJZXZl bnRfYml0bWFwID0gKDB4RlVMTCA8PCAoZXZlbnRpZCAtIDEpKTsNCj4gPiArCQlicmVhazsNCj4g PiArCWRlZmF1bHQ6DQo+ID4gKwkJcHJfZXJyKCIlcyBJbnZhbGlkIGV2ZW50aWQgJWRcbiIsIF9f ZnVuY19fLCBldmVudGlkKTsNCj4gDQo+IHNob3VsZG4ndCB0aGlzIGdlbmVyYXRlIGEgcHJvcGVy IGVycm9yIHRvIGl0cyBvbmx5IGNhbGxlciAod2hpY2ggY2FuDQo+IGFjdHVhbGx5IGVycm9yKT8N Cg0KQWNrLCBjdXJyZW50bHkgaXQganVzdCB0aHJvdWdoIGVycm9yIGJ1dCBkb2VzIG5vdCBlcnJv ciBvdXQuDQoNCj4gDQo+ID4gKwkJYnJlYWs7DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJu IGV2ZW50X2JpdG1hcDsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjbjEwa19kZHJf cGVyZl9hbGxvY19jb3VudGVyKHN0cnVjdCBjbjEwa19kZHJfcG11ICpwbXUsDQo+ID4gKwkJCQkJ c3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQ0KPiA+ICt7DQo+ID4gKwl1aW50OF90IGNvbmZpZyA9 IGV2ZW50LT5hdHRyLmNvbmZpZzsNCj4gPiArCWludCBpOw0KPiA+ICsNCj4gPiArCS8qIEREUiBy ZWFkIGZyZWUtcnVuIGNvdW50ZXIgaW5kZXggKi8NCj4gPiArCWlmIChjb25maWcgPT0gRVZFTlRf RERSX1JFQURTKSB7DQo+ID4gKwkJcG11LT5ldmVudHNbRERSQ19QRVJGX1JFQURfQ09VTlRFUl9J RFhdID0gZXZlbnQ7DQo+ID4gKwkJcmV0dXJuIEREUkNfUEVSRl9SRUFEX0NPVU5URVJfSURYOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCS8qIEREUiB3cml0ZSBmcmVlLXJ1biBjb3VudGVyIGluZGV4 ICovDQo+ID4gKwlpZiAoY29uZmlnID09IEVWRU5UX0REUl9XUklURVMpIHsNCj4gPiArCQlwbXUt PmV2ZW50c1tERFJDX1BFUkZfV1JJVEVfQ09VTlRFUl9JRFhdID0gZXZlbnQ7DQo+ID4gKwkJcmV0 dXJuIEREUkNfUEVSRl9XUklURV9DT1VOVEVSX0lEWDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkv KiBBbGxvY2F0ZSBERFIgZ2VuZXJpYyBjb3VudGVycyAqLw0KPiA+ICsJZm9yIChpID0gMDsgaSA8 IEREUkNfUEVSRl9OVU1fR0VOX0NPVU5URVJTOyBpKyspIHsNCj4gPiArCQlpZiAocG11LT5ldmVu dHNbaV0gPT0gTlVMTCkgew0KPiA+ICsJCQlwbXUtPmV2ZW50c1tpXSA9IGV2ZW50Ow0KPiA+ICsJ CQlyZXR1cm4gaTsNCj4gPiArCQl9DQo+ID4gKwl9DQo+ID4gKw0KPiA+ICsJcmV0dXJuIC1FTk9F TlQ7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNuMTBrX2Rkcl9wZXJmX2ZyZWVf Y291bnRlcihzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11LCBpbnQNCj4gY291bnRlcikNCj4gPiAr ew0KPiA+ICsJcG11LT5ldmVudHNbY291bnRlcl0gPSBOVUxMOw0KPiA+ICt9DQo+ID4gKw0KPiA+ ICtzdGF0aWMgaW50IGNuMTBrX2Rkcl9wZXJmX2V2ZW50X2luaXQoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gdG9fY24x MGtfZGRyX3BtdShldmVudC0+cG11KTsNCj4gPiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2Mg PSAmZXZlbnQtPmh3Ow0KPiA+ICsNCj4gPiArCWlmIChldmVudC0+YXR0ci50eXBlICE9IGV2ZW50 LT5wbXUtPnR5cGUpDQo+ID4gKwkJcmV0dXJuIC1FTk9FTlQ7DQo+ID4gKw0KPiA+ICsJaWYgKGlz X3NhbXBsaW5nX2V2ZW50KGV2ZW50KSkgew0KPiA+ICsJCWRldl9pbmZvKHBtdS0+ZGV2LCAiU2Ft cGxpbmcgbm90IHN1cHBvcnRlZCFcbiIpOw0KPiA+ICsJCXJldHVybiAtRU9QTk9UU1VQUDsNCj4g PiArCX0NCj4gPiArDQo+ID4gKwlpZiAoZXZlbnQtPmNwdSA8IDApIHsNCj4gPiArCQlkZXZfd2Fy bihwbXUtPmRldiwgIkNhbid0IHByb3ZpZGUgcGVyLXRhc2sgZGF0YSFcbiIpOw0KPiA+ICsJCXJl dHVybiAtRU9QTk9UU1VQUDsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwkvKiAgV2UgbXVzdCBOT1Qg Y3JlYXRlIGdyb3VwcyBjb250YWluaW5nIG1peGVkIFBNVXMgKi8NCj4gPiArCWlmIChldmVudC0+ Z3JvdXBfbGVhZGVyLT5wbXUgIT0gZXZlbnQtPnBtdSAmJg0KPiA+ICsJCQkhaXNfc29mdHdhcmVf ZXZlbnQoZXZlbnQtPmdyb3VwX2xlYWRlcikpDQo+IA0KPiBwYXkgYXR0ZW50aW9uIHRvIGluZGVu dGF0aW9uDQoNCkFjY2VwdGVkLCBub3Qgc3VyZSBob3cgdGhpcyBnb3QgaW4uDQoNCj4gDQo+ID4g KwkJcmV0dXJuIC1FSU5WQUw7DQo+ID4gKw0KPiA+ICsJLyogU2V0IG93bmVyc2hpcCBvZiBldmVu dCB0byBvbmUgQ1BVLCBzYW1lIGV2ZW50IGNhbiBub3QgYmUgb2JzZXJ2ZWQNCj4gPiArCSAqIG9u IG11bHRpcGxlIGNwdXMgYXQgc2FtZSB0aW1lLg0KPiA+ICsJICovDQo+ID4gKwlldmVudC0+Y3B1 ID0gcG11LT5jcHU7DQo+ID4gKwlod2MtPmlkeCA9IC0xOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNuMTBrX2Rkcl9wZXJmX2NvdW50ZXJfZW5hYmxl KHN0cnVjdCBjbjEwa19kZHJfcG11ICpwbXUsDQo+ID4gKwkJCQkJICBpbnQgY291bnRlciwgYm9v bCBlbmFibGUpDQo+ID4gK3sNCj4gPiArCXVpbnQzMl90IHJlZzsNCj4gPiArCXVpbnQ2NF90IHZh bDsNCj4gPiArDQo+ID4gKwlpZiAoY291bnRlciA+IEREUkNfUEVSRl9OVU1fQ09VTlRFUlMpIHsN Cj4gDQo+IGlzIHRoaXMgcGFyYW5vaWE/DQoNCldlIGNhbiBub3QgcHJvZ3JhbSBpZiBjb3VudGVy IGJ5IGFueSBtZWFucyBpcyBvdXQgb3IgcmFuZ2UuDQoNCj4gDQo+ID4gKwkJcHJfZXJyKCJFcnJv cjogdW5zdXBwb3J0ZWQgY291bnRlciAlZFxuIiwgY291bnRlcik7DQo+ID4gKwkJcmV0dXJuOw0K PiA+ICsJfQ0KPiA+ICsNCj4gPiArCWlmIChjb3VudGVyIDwgRERSQ19QRVJGX05VTV9HRU5fQ09V TlRFUlMpIHsNCj4gPiArCQlyZWcgPSBERFJDX1BFUkZfQ0ZHKGNvdW50ZXIpOw0KPiA+ICsJCXZh bCA9IHJlYWRxX3JlbGF4ZWQocG11LT5iYXNlICsgcmVnKTsNCj4gPiArDQo+ID4gKwkJaWYgKGVu YWJsZSkNCj4gPiArCQkJdmFsIHw9IEVWRU5UX0VOQUJMRTsNCj4gPiArCQllbHNlDQo+ID4gKwkJ CXZhbCAmPSB+RVZFTlRfRU5BQkxFOw0KPiA+ICsNCj4gPiArCQl3cml0ZXFfcmVsYXhlZCh2YWws IHBtdS0+YmFzZSArIHJlZyk7DQo+ID4gKwl9IGVsc2Ugew0KPiA+ICsJCXZhbCA9IHJlYWRxX3Jl bGF4ZWQocG11LT5iYXNlICsNCj4gRERSQ19QRVJGX0NOVF9GUkVFUlVOX0VOKTsNCj4gPiArCQlp ZiAoZW5hYmxlKSB7DQo+ID4gKwkJCWlmIChjb3VudGVyID09IEREUkNfUEVSRl9SRUFEX0NPVU5U RVJfSURYKQ0KPiA+ICsJCQkJdmFsIHw9IEREUkNfUEVSRl9GUkVFUlVOX1JFQURfRU47DQo+ID4g KwkJCWVsc2UNCj4gPiArCQkJCXZhbCB8PSBERFJDX1BFUkZfRlJFRVJVTl9XUklURV9FTjsNCj4g PiArCQl9IGVsc2Ugew0KPiA+ICsJCQlpZiAoY291bnRlciA9PSBERFJDX1BFUkZfUkVBRF9DT1VO VEVSX0lEWCkNCj4gPiArCQkJCXZhbCAmPSB+RERSQ19QRVJGX0ZSRUVSVU5fUkVBRF9FTjsNCj4g PiArCQkJZWxzZQ0KPiA+ICsJCQkJdmFsICY9IH5ERFJDX1BFUkZfRlJFRVJVTl9XUklURV9FTjsN Cj4gPiArCQl9DQo+ID4gKwkJd3JpdGVxX3JlbGF4ZWQodmFsLCBwbXUtPmJhc2UgKw0KPiBERFJD X1BFUkZfQ05UX0ZSRUVSVU5fRU4pOw0KPiA+ICsJfQ0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0 aWMgdWludDY0X3QgY24xMGtfZGRyX3BlcmZfcmVhZF9jb3VudGVyKHN0cnVjdCBjbjEwa19kZHJf cG11ICpwbXUsDQo+ID4gKwkJCQkJICAgIGludCBjb3VudGVyKQ0KPiA+ICt7DQo+ID4gKwl1aW50 NjRfdCB2YWw7DQo+ID4gKw0KPiA+ICsJaWYgKGNvdW50ZXIgPT0gRERSQ19QRVJGX1JFQURfQ09V TlRFUl9JRFgpDQo+ID4gKwkJcmV0dXJuIHJlYWRxX3JlbGF4ZWQocG11LT5iYXNlICsNCj4gRERS Q19QRVJGX0NOVF9WQUxVRV9SRF9PUCk7DQo+ID4gKw0KPiA+ICsJaWYgKGNvdW50ZXIgPT0gRERS Q19QRVJGX1dSSVRFX0NPVU5URVJfSURYKQ0KPiA+ICsJCXJldHVybiByZWFkcV9yZWxheGVkKHBt dS0+YmFzZSArDQo+IEREUkNfUEVSRl9DTlRfVkFMVUVfV1JfT1ApOw0KPiA+ICsNCj4gPiArCXZh bCA9IHJlYWRxX3JlbGF4ZWQocG11LT5iYXNlICsgRERSQ19QRVJGX0NOVF9WQUxVRShjb3VudGVy KSk7DQo+ID4gKwlyZXR1cm4gdmFsOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBj bjEwa19kZHJfcGVyZl9ldmVudF91cGRhdGUoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KQ0KPiA+ ICt7DQo+ID4gKwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gdG9fY24xMGtfZGRyX3BtdShl dmVudC0+cG11KTsNCj4gPiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3 Ow0KPiA+ICsJdWludDY0X3QgcHJldl9jb3VudCwgbmV3X2NvdW50LCBtYXNrOw0KPiA+ICsNCj4g PiArCWRvIHsNCj4gPiArCQlwcmV2X2NvdW50ID0gbG9jYWw2NF9yZWFkKCZod2MtPnByZXZfY291 bnQpOw0KPiA+ICsJCW5ld19jb3VudCA9IGNuMTBrX2Rkcl9wZXJmX3JlYWRfY291bnRlcihwbXUs IGh3Yy0+aWR4KTsNCj4gPiArCX0gd2hpbGUgKGxvY2FsNjRfeGNoZygmaHdjLT5wcmV2X2NvdW50 LCBuZXdfY291bnQpICE9IHByZXZfY291bnQpOw0KPiA+ICsNCj4gPiArCW1hc2sgPSBERFJDX1BF UkZfQ05UX01BWF9WQUxVRTsNCj4gPiArDQo+ID4gKwlsb2NhbDY0X2FkZCgobmV3X2NvdW50IC0g cHJldl9jb3VudCkgJiBtYXNrLCAmZXZlbnQtPmNvdW50KTsNCj4gPiArfQ0KPiA+ICsNCj4gPiAr c3RhdGljIHZvaWQgY24xMGtfZGRyX3BlcmZfZXZlbnRfc3RhcnQoc3RydWN0IHBlcmZfZXZlbnQg KmV2ZW50LCBpbnQgZmxhZ3MpDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBjbjEwa19kZHJfcG11ICpw bXUgPSB0b19jbjEwa19kZHJfcG11KGV2ZW50LT5wbXUpOw0KPiA+ICsJc3RydWN0IGh3X3BlcmZf ZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+ID4gKwlpbnQgY291bnRlciA9IGh3Yy0+aWR4Ow0K PiA+ICsNCj4gPiArCWxvY2FsNjRfc2V0KCZod2MtPnByZXZfY291bnQsIDApOw0KPiA+ICsNCj4g PiArCWNuMTBrX2Rkcl9wZXJmX2NvdW50ZXJfZW5hYmxlKHBtdSwgY291bnRlciwgdHJ1ZSk7DQo+ ID4gKw0KPiA+ICsJaHdjLT5zdGF0ZSA9IDA7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyBp bnQgY24xMGtfZGRyX3BlcmZfZXZlbnRfYWRkKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50 IGZsYWdzKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gdG9fY24x MGtfZGRyX3BtdShldmVudC0+cG11KTsNCj4gPiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2Mg PSAmZXZlbnQtPmh3Ow0KPiA+ICsJdWludDhfdCBjb25maWcgPSBldmVudC0+YXR0ci5jb25maWc7 DQo+ID4gKwl1aW50MzJfdCByZWdfb2Zmc2V0Ow0KPiA+ICsJdWludDY0X3QgdmFsOw0KPiA+ICsJ aW50IGNvdW50ZXI7DQo+ID4gKw0KPiA+ICsJY291bnRlciA9IGNuMTBrX2Rkcl9wZXJmX2FsbG9j X2NvdW50ZXIocG11LCBldmVudCk7DQo+ID4gKwlpZiAoY291bnRlciA8IDApIHsNCj4gPiArCQlk ZXZfZGJnKHBtdS0+ZGV2LCAiVGhlcmUgYXJlIG5vdCBlbm91Z2ggY291bnRlcnNcbiIpOw0KPiAN Cj4gaG1tbSAuLiBJJ2QgYmUgaW5jbGluZWQgdG8gc2F5IHRoYXQgdGhlcmUgYXJlIG5vdCBlbm91 Z2ggYXZhaWxhYmxlLiBBbmQNCj4gaXMgZGV2X2RiZygpIHJlYWxseSBhbnkgdXNlPw0KDQpNYXli ZSB3ZSBjYW4gcmVtb3ZlIHRoZSBlcnJvciBwcmludCBub3csIGFuZCByZXR1cm4gDQoNCj4gDQo+ ID4gKwkJcmV0dXJuIC1FT1BOT1RTVVBQOw0KPiANCj4gaXMgdGhhdCB0aGUgYmVzdCBlcnJvciBj b2RlPw0KDQpMb29rcyBsaWtlIHdlIHNob3VsZCBsZXQgaXQgdHJ5IGFnYWluIGxhdGVyICAiLUVB R0FJTiINCg0KPiANCj4gPiArCX0NCj4gPiArDQo+ID4gKwlwbXUtPmFjdGl2ZV9ldmVudHMrKzsN Cj4gPiArCWh3Yy0+aWR4ID0gY291bnRlcjsNCj4gPiArDQo+ID4gKwlpZiAoY291bnRlciA8IERE UkNfUEVSRl9OVU1fR0VOX0NPVU5URVJTKSB7DQo+ID4gKwkJLyogR2VuZXJpYyBjb3VudGVycywg Y29uZmlndXJlIGV2ZW50IGlkICovDQo+ID4gKwkJcmVnX29mZnNldCA9IEREUkNfUEVSRl9DRkco Y291bnRlcik7DQo+ID4gKwkJdmFsID0gZGRyX3BlcmZfZ2V0X2V2ZW50X2JpdG1hcChjb25maWcp Ow0KPiA+ICsJCXdyaXRlcV9yZWxheGVkKHZhbCwgcG11LT5iYXNlICsgcmVnX29mZnNldCk7DQo+ ID4gKwl9IGVsc2Ugew0KPiA+ICsJCS8qIGZpeGVkIGV2ZW50IGNvdW50ZXIsIGNsZWFyIGNvdW50 ZXIgdmFsdWUgKi8NCj4gPiArCQlpZiAoY291bnRlciA9PSBERFJDX1BFUkZfUkVBRF9DT1VOVEVS X0lEWCkNCj4gPiArCQkJdmFsID0gRERSQ19GUkVFUlVOX1JFQURfQ05UX0NMUjsNCj4gPiArCQll bHNlDQo+ID4gKwkJCXZhbCA9IEREUkNfRlJFRVJVTl9XUklURV9DTlRfQ0xSOw0KPiA+ICsNCj4g PiArCQl3cml0ZXFfcmVsYXhlZCh2YWwsIHBtdS0+YmFzZSArDQo+IEREUkNfUEVSRl9DTlRfRlJF RVJVTl9DVFJMKTsNCj4gPiArCX0NCj4gPiArDQo+ID4gKwlod2MtPnN0YXRlIHw9IFBFUkZfSEVT X1NUT1BQRUQ7DQo+ID4gKw0KPiA+ICsJaWYgKGZsYWdzICYgUEVSRl9FRl9TVEFSVCkNCj4gPiAr CQljbjEwa19kZHJfcGVyZl9ldmVudF9zdGFydChldmVudCwgZmxhZ3MpOw0KPiA+ICsNCj4gPiAr CXJldHVybiAwOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjbjEwa19kZHJfcGVy Zl9ldmVudF9zdG9wKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQ0KPiA+ICt7 DQo+ID4gKwlzdHJ1Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gdG9fY24xMGtfZGRyX3BtdShldmVu dC0+cG11KTsNCj4gPiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3Ow0K PiA+ICsJaW50IGNvdW50ZXIgPSBod2MtPmlkeDsNCj4gPiArDQo+ID4gKwljbjEwa19kZHJfcGVy Zl9jb3VudGVyX2VuYWJsZShwbXUsIGNvdW50ZXIsIGZhbHNlKTsNCj4gPiArDQo+ID4gKwlpZiAo ZmxhZ3MgJiBQRVJGX0VGX1VQREFURSkNCj4gPiArCQljbjEwa19kZHJfcGVyZl9ldmVudF91cGRh dGUoZXZlbnQpOw0KPiA+ICsNCj4gPiArCWh3Yy0+c3RhdGUgfD0gUEVSRl9IRVNfU1RPUFBFRDsN Cj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgY24xMGtfZGRyX3BlcmZfZXZlbnRfZGVs KHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50IGZsYWdzKQ0KPiA+ICt7DQo+ID4gKwlzdHJ1 Y3QgY24xMGtfZGRyX3BtdSAqcG11ID0gdG9fY24xMGtfZGRyX3BtdShldmVudC0+cG11KTsNCj4g PiArCXN0cnVjdCBod19wZXJmX2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3Ow0KPiA+ICsJaW50IGNv dW50ZXIgPSBod2MtPmlkeDsNCj4gPiArDQo+ID4gKwljbjEwa19kZHJfcGVyZl9ldmVudF9zdG9w KGV2ZW50LCBQRVJGX0VGX1VQREFURSk7DQo+ID4gKw0KPiA+ICsJY24xMGtfZGRyX3BlcmZfZnJl ZV9jb3VudGVyKHBtdSwgY291bnRlcik7DQo+ID4gKwlwbXUtPmFjdGl2ZV9ldmVudHMtLTsNCj4g PiArCWh3Yy0+aWR4ID0gLTE7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNuMTBr X2Rkcl9wZXJmX3BtdV9lbmFibGUoc3RydWN0IHBtdSAqcG11KQ0KPiA+ICt7DQo+ID4gKwlzdHJ1 Y3QgY24xMGtfZGRyX3BtdSAqZGRyX3BtdSA9IHRvX2NuMTBrX2Rkcl9wbXUocG11KTsNCj4gPiAr DQo+ID4gKwl3cml0ZXFfcmVsYXhlZChTVEFSVF9PUF9DVFJMX1ZBTF9TVEFSVCwgZGRyX3BtdS0+ YmFzZSArDQo+ID4gKwkJICAgICAgIEREUkNfUEVSRl9DTlRfU1RBUlRfT1BfQ1RSTCk7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGNuMTBrX2Rkcl9wZXJmX3BtdV9kaXNhYmxlKHN0 cnVjdCBwbXUgKnBtdSkNCj4gPiArew0KPiA+ICsJc3RydWN0IGNuMTBrX2Rkcl9wbXUgKmRkcl9w bXUgPSB0b19jbjEwa19kZHJfcG11KHBtdSk7DQo+ID4gKw0KPiA+ICsJd3JpdGVxX3JlbGF4ZWQo RU5EX09QX0NUUkxfVkFMX0VORCwgZGRyX3BtdS0+YmFzZSArDQo+ID4gKwkJICAgICAgIEREUkNf UEVSRl9DTlRfRU5EX09QX0NUUkwpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGNu MTBrX2Rkcl9wZXJmX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ID4gK3sN Cj4gPiArCXN0cnVjdCBjbjEwa19kZHJfcG11ICpkZHJfcG11Ow0KPiA+ICsJc3RydWN0IHJlc291 cmNlICpyZXM7DQo+ID4gKwl2b2lkIF9faW9tZW0gKmJhc2U7DQo+ID4gKwlzdGF0aWMgaW50IGlu ZGV4Ow0KPiA+ICsJY2hhciAqbmFtZTsNCj4gPiArCWludCByZXQ7DQo+ID4gKw0KPiA+ICsJZGRy X3BtdSA9IGRldm1fa3phbGxvYygmcGRldi0+ZGV2LCBzaXplb2YoKmRkcl9wbXUpLCBHRlBfS0VS TkVMKTsNCj4gPiArCWlmICghZGRyX3BtdSkNCj4gPiArCQlyZXR1cm4gLUVOT01FTTsNCj4gPiAr DQo+ID4gKwlkZHJfcG11LT5kZXYgPSAmcGRldi0+ZGV2Ow0KPiA+ICsJcGxhdGZvcm1fc2V0X2Ry dmRhdGEocGRldiwgZGRyX3BtdSk7DQo+ID4gKw0KPiA+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jl c291cmNlKHBkZXYsIElPUkVTT1VSQ0VfTUVNLCAwKTsNCj4gPiArCWJhc2UgPSBkZXZtX2lvcmVt YXBfcmVzb3VyY2UoJnBkZXYtPmRldiwgcmVzKTsNCj4gPiArCWlmIChJU19FUlIoYmFzZSkpDQo+ ID4gKwkJcmV0dXJuIFBUUl9FUlIoYmFzZSk7DQo+IA0KPiBjYW4geW91IHVzZSBkZXZtX3BsYXRm b3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZSgpPyBJIHRoaW5rIHRoYXQgdGhlcmUNCj4gaXMg c29tZSBoZWxwZXIgdGhhdCBkb2VzIGJvdGggdGhlc2Ugc3RlcHMNCg0KWWVzLCBkZXZtX3BsYXRm b3JtX2dldF9hbmRfaW9yZW1hcF9yZXNvdXJjZSgpIGRvZXMgYm90aC4NCiANCg0KPiANCj4gPiAr DQo+ID4gKwlkZHJfcG11LT5iYXNlID0gYmFzZTsNCj4gPiArDQo+ID4gKwkvKiBTZXR1cCB0aGUg UE1VIGNvdW50ZXIgdG8gd29yayBpbiBtYW5udWFsIG1vZGUgKi8NCj4gDQo+IG1hbnVhbA0KPiAN Cj4gPiArCXdyaXRlcV9yZWxheGVkKE9QX01PREVfQ1RSTF9WQUxfTUFOTlVBTCwgZGRyX3BtdS0+ YmFzZSArDQo+ID4gKwkJICAgICAgIEREUkNfUEVSRl9DTlRfT1BfTU9ERV9DVFJMKTsNCj4gPiAr DQo+ID4gKwlkZHJfcG11LT5wbXUgPSAoc3RydWN0IHBtdSkgew0KPiA+ICsJCS5tb2R1bGUJICAg ICAgPSBUSElTX01PRFVMRSwNCj4gPiArCQkuY2FwYWJpbGl0aWVzID0gUEVSRl9QTVVfQ0FQX05P X0VYQ0xVREUsDQo+ID4gKwkJLnRhc2tfY3R4X25yID0gcGVyZl9pbnZhbGlkX2NvbnRleHQsDQo+ ID4gKwkJLmF0dHJfZ3JvdXBzID0gY24xMGtfYXR0cl9ncm91cHMsDQo+ID4gKwkJLmV2ZW50X2lu aXQgID0gY24xMGtfZGRyX3BlcmZfZXZlbnRfaW5pdCwNCj4gPiArCQkuYWRkCSAgICAgPSBjbjEw a19kZHJfcGVyZl9ldmVudF9hZGQsDQo+ID4gKwkJLmRlbAkgICAgID0gY24xMGtfZGRyX3BlcmZf ZXZlbnRfZGVsLA0KPiA+ICsJCS5zdGFydAkgICAgID0gY24xMGtfZGRyX3BlcmZfZXZlbnRfc3Rh cnQsDQo+ID4gKwkJLnN0b3AJICAgICA9IGNuMTBrX2Rkcl9wZXJmX2V2ZW50X3N0b3AsDQo+ID4g KwkJLnJlYWQJICAgICA9IGNuMTBrX2Rkcl9wZXJmX2V2ZW50X3VwZGF0ZSwNCj4gPiArCQkucG11 X2VuYWJsZSAgPSBjbjEwa19kZHJfcGVyZl9wbXVfZW5hYmxlLA0KPiA+ICsJCS5wbXVfZGlzYWJs ZSA9IGNuMTBrX2Rkcl9wZXJmX3BtdV9kaXNhYmxlLA0KPiA+ICsJfTsNCj4gPiArDQo+ID4gKwkv KiBDaG9vc2UgdGhpcyBjcHUgdG8gY29sbGVjdCBwZXJmIGRhdGEgKi8NCj4gPiArCWRkcl9wbXUt PmNwdSA9IHJhd19zbXBfcHJvY2Vzc29yX2lkKCk7DQo+ID4gKw0KPiA+ICsJbmFtZSA9IGRldm1f a2FzcHJpbnRmKGRkcl9wbXUtPmRldiwgR0ZQX0tFUk5FTCwNCj4gIm1ydmxfZGRyX3BtdUAlbGx4 IiwNCj4gDQo+IG1vc3RseSBfJWxseCB3b3VsZCBiZSB1c2VkIGVsc2V3aGVyZSwgYW5kIEkgYW0g bm90IHN1cmUgaG93IHBlcmYgdG9vbA0KPiBsaWtlcyBAIGF0IGFsbA0KDQpXaWxsIGJlIGNvbnNp c3RlbnQgd2l0aCBvdGhlciwNCg0KPiANCj4gPiArCQkJICAgICAgcmVzLT5zdGFydCk7DQo+ID4g KwlpZiAoIW5hbWUpDQo+ID4gKwkJcmV0dXJuIC1FTk9NRU07DQo+ID4gKw0KPiA+ICsJcmV0ID0g cGVyZl9wbXVfcmVnaXN0ZXIoJmRkcl9wbXUtPnBtdSwgbmFtZSwgLTEpOw0KPiA+ICsJaWYgKHJl dCkNCj4gPiArCQlyZXR1cm4gcmV0Ow0KPiA+ICsNCj4gPiArCWRkcl9wbXUtPmlkID0gaW5kZXgr KzsNCj4gDQo+IHdoZXJlIGlzIHRoaXMgdXNlZD8NCg0KSnVzdCBiZWxvdyB0byBrZWVwIGNvdW50 IG9mIG51bWJlciBvZiBpbnN0YW5jZS4NCg0KVGhhbmtzIGZvciByZXZpZXcsIHdpbGwgZG8gcmVx dWlyZWQgY2hhbmdlcyBpbiBuZXh0IHZlcnNpb24uDQoNClRoYW5rcw0KLUJoYXJhdA0KPiANCj4g PiArCXByX2luZm8oIkNOMTBLIEREUiBQTVUgRHJpdmVyIGZvciBkZHJjQCVsbHggLSBpZC0lZFxu IiwNCj4gPiArCQlyZXMtPnN0YXJ0LCBkZHJfcG11LT5pZCk7DQo+ID4gKwlyZXR1cm4gMDsNCj4g PiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIGludCBjbjEwa19kZHJfcGVyZl9yZW1vdmUoc3RydWN0 IHBsYXRmb3JtX2RldmljZSAqcGRldikNCj4gPiArew0KPiA+ICsJc3RydWN0IGNuMTBrX2Rkcl9w bXUgKmRkcl9wbXUgPSBwbGF0Zm9ybV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4gPiArDQo+ID4gKwlw ZXJmX3BtdV91bnJlZ2lzdGVyKCZkZHJfcG11LT5wbXUpOw0KPiA+ICsJcmV0dXJuIDA7DQo+ID4g K30NCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgb2ZfZGV2aWNlX2lkIGNuMTBrX2Rk cl9wbXVfb2ZfbWF0Y2hbXSA9IHsNCj4gPiArCXsgLmNvbXBhdGlibGUgPSAibWFydmVsbCxjbjEw ay1kZHItcG11IiwgfSwNCj4gPiArCXsgfSwNCj4gPiArfTsNCj4gPiArTU9EVUxFX0RFVklDRV9U QUJMRShvZiwgY24xMGtfZGRyX3BtdV9vZl9tYXRjaCk7DQo+ID4gKw0KPiA+ICtzdGF0aWMgc3Ry dWN0IHBsYXRmb3JtX2RyaXZlciBjbjEwa19kZHJfcG11X2RyaXZlciA9IHsNCj4gPiArCS5kcml2 ZXIJPSB7DQo+ID4gKwkJLm5hbWUgICA9ICJjbjEway1kZHItcG11IiwNCj4gPiArCQkub2ZfbWF0 Y2hfdGFibGUgPSBjbjEwa19kZHJfcG11X29mX21hdGNoLA0KPiA+ICsJCS5zdXBwcmVzc19iaW5k X2F0dHJzID0gdHJ1ZSwNCj4gPiArCX0sDQo+ID4gKwkucHJvYmUJCT0gY24xMGtfZGRyX3BlcmZf cHJvYmUsDQo+ID4gKwkucmVtb3ZlCQk9IGNuMTBrX2Rkcl9wZXJmX3JlbW92ZSwNCj4gPiArfTsN Cj4gPiArDQo+ID4gK3N0YXRpYyBpbnQgX19pbml0IGNuMTBrX2Rkcl9wbXVfaW5pdCh2b2lkKQ0K PiA+ICt7DQo+ID4gKwlyZXR1cm4gcGxhdGZvcm1fZHJpdmVyX3JlZ2lzdGVyKCZjbjEwa19kZHJf cG11X2RyaXZlcik7DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIF9fZXhpdCBjbjEw a19kZHJfcG11X2V4aXQodm9pZCkNCj4gPiArew0KPiA+ICsJcGxhdGZvcm1fZHJpdmVyX3VucmVn aXN0ZXIoJmNuMTBrX2Rkcl9wbXVfZHJpdmVyKTsNCj4gPiArfQ0KPiA+ICsNCj4gPiArbW9kdWxl X2luaXQoY24xMGtfZGRyX3BtdV9pbml0KTsNCj4gPiArbW9kdWxlX2V4aXQoY24xMGtfZGRyX3Bt dV9leGl0KTsNCj4gPiArDQo+ID4gK01PRFVMRV9BVVRIT1IoIkJoYXJhdCBCaHVzaGFuIDxiYmh1 c2hhbjJAbWFydmVsbC5jb20+Iik7DQo+ID4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4g Pg0KDQo=