Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1071300pxb; Tue, 17 Aug 2021 03:09:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyefVhNvc0Wo5I2vUBFRJJl1S1zoVqW5h/V0IlR4X1Ymk61T6ATIDLnrvrLxFLtSoQviDlW X-Received: by 2002:a05:6402:278b:: with SMTP id b11mr3197864ede.339.1629194944199; Tue, 17 Aug 2021 03:09:04 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1629194944; cv=pass; d=google.com; s=arc-20160816; b=NvGUEbYsVTXsajYKIdIt1Gkkx6wlU1cD9rrBB7MOblY1kLhtA6qepsuEkfHHK9hrBb h/Ojcp/Zr/BP7tue8llxUZgv+5yuTg49esloz8jqHdBxIg9d2OyfzPyaJJkVxPfccQRP L69xoilLzqvJadxZJQ5owsGtlYVA8c4vcShBD7TgZXtoNp3mSBaItFxRCYfVI2vQUzxc Wyz4Utnux4PLUgIsp1C4TT+atVM2uTkckNNbfX9zMmqScsH4FScXeClbPSL4HqA3Co20 2YrwLeHXTF38fqJRVcMaEvv2EGCSiO1CW5emRbOGpbQGBcZZ0SRCcwhU8IMi1z+wi2m4 0/dQ== 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:cc:to:from:dkim-signature; bh=ePIRCWJE+33h62dS7MNQY5uFhYaX2+f6iQqz6GfIqhM=; b=0Kk7Mj6QtoCAZS1Dc0GxHuasbVL1G5MrNJ1shPROrgwN3Me/rapBzLnOICn+728DpL sUrpUAGXUX4A4Ya7sR/LSPxcBYSkSQ1a17gsd5/dY6dN+ZHZfXvLcsmZ5EHa7t2FELrd disZLB6vTBF8bLpkpV9p8iknukrM1qWKI8JqqhiQE5T5/YcCBm2gBCNhiXovH2nCt+l5 sQCgtNTKPPhwQ5Ylf43yvEX5vbCODqo8kgy4gIaGSwRuaCyIrzMUaiobZLyay+BMxo88 jdVoUP7YED952fL69jzN23yJr8h1Tl+Li2eHUzgWHgwbQ82JOIOiIf9NNQ6tkD88GJQe Ql3A== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@marvell.onmicrosoft.com header.s=selector1-marvell-onmicrosoft-com header.b="ZfOElvd/"; 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 by17si1965270edb.481.2021.08.17.03.08.41; Tue, 17 Aug 2021 03:09:04 -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="ZfOElvd/"; 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 S239342AbhHQKHs (ORCPT + 99 others); Tue, 17 Aug 2021 06:07:48 -0400 Received: from mx0a-0016f401.pphosted.com ([67.231.148.174]:50266 "EHLO mx0b-0016f401.pphosted.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S239388AbhHQKFp (ORCPT ); Tue, 17 Aug 2021 06:05:45 -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 17H2la5v006735; Tue, 17 Aug 2021 03:04:26 -0700 Received: from nam10-dm6-obe.outbound.protection.outlook.com (mail-dm6nam10lp2105.outbound.protection.outlook.com [104.47.58.105]) by mx0a-0016f401.pphosted.com with ESMTP id 3ag4n0sf35-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 17 Aug 2021 03:04:26 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LQT2tdq1HCNeZ+F1/i09sc7jASQgtmHax2m578w2o/2FntRWDmFKKU+5lvz0kVSazdVqNzJt8ZN4fFA26xL8qR8eyTLbLWEbr+bj7KymfxP8bDydN78w705gIvFHWR4ao6qVhWzaQfjV75a5ovjxaSzv3UvvC1Y6xE9hzGxVgEMqdsewaTUZzu/01FEo5tcyEAfz2giu47ULMq8Fq2ttb3gBTrZLERkpn9pjIzDaIoWwVmDb2IJiHLWXNd0W9z1HFj0VlPppwZFVzkrfRK/iluhjiD5aqz+k+dad6aHSEc0eiIhYV9ju4NxWDYTzS3hg+4ttId5mp63WnlkWuh8ekg== 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=ePIRCWJE+33h62dS7MNQY5uFhYaX2+f6iQqz6GfIqhM=; b=O/2DVRhmHyDlnjrzkLJIjHId4aCrFilPlXfcBRTZ63f6CXpa+dV68X/OatQ6dOiKR3fq6fS0DPe3DooT++AQKV8L1t2dTorZAl8X4Oe6m6TrPsbBSRdLYqFIcFwXzFgTX0mQEnc1UrmrKizqtU2nQgtsNk1mRzBU87ipvNTe0SwBHslGqpZHtCVspkTlEJgxWFfR7al6vjtdK37PgRD81H1EYPKg65ibfelKstvMsAVk5okpuSwp7r++Y1kSwF6WxbgL+7N1UoomaCw7Qs5QDmKxNMWW8XmJotmFx8luJL2K13vieP26quwy3kSa70icjWOzubD2VXNqVlvNDEFXKg== 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=ePIRCWJE+33h62dS7MNQY5uFhYaX2+f6iQqz6GfIqhM=; b=ZfOElvd/Ve0ySSU/BoPTp2lF2qhmBmhG3d6sMQXZoJ1+fTEvavxSqgCF/xIa0hQgn3Af0sWLDliBKB9jcYxWQHy9nAgoslHGex+ZoCMLhu6y0dYzDWA3iXRJnIdqp1SE5HlG8O9BcVc6Mhk1zfzpFH1KXVC1NQw6qEQAMrZkNQI= Received: from CY4PR1801MB2070.namprd18.prod.outlook.com (2603:10b6:910:7e::28) by CY4PR1801MB1943.namprd18.prod.outlook.com (2603:10b6:910:76::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4415.13; Tue, 17 Aug 2021 10:04:24 +0000 Received: from CY4PR1801MB2070.namprd18.prod.outlook.com ([fe80::5e4:5ddb:27aa:f57e]) by CY4PR1801MB2070.namprd18.prod.outlook.com ([fe80::5e4:5ddb:27aa:f57e%5]) with mapi id 15.20.4415.024; Tue, 17 Aug 2021 10:04:24 +0000 From: Bhaskara Budiredla To: kajoljain , "will@kernel.org" , "mark.rutland@arm.com" , "robh+dt@kernel.org" , Sunil Kovvuri Goutham CC: "linux-arm-kernel@lists.infradead.org" , "devicetree@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [EXT] Re: [PATCH 1/2] drivers: perf: Add LLC-TAD perf counter support Thread-Topic: [EXT] Re: [PATCH 1/2] drivers: perf: Add LLC-TAD perf counter support Thread-Index: AQHXj6FnCd79LQssv0+PzThXdmo1jatzCHMAgAR2HNA= Date: Tue, 17 Aug 2021 10:04:23 +0000 Message-ID: References: <20210812174209.1970-1-bbudiredla@marvell.com> <20210812174209.1970-2-bbudiredla@marvell.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linux.ibm.com; dkim=none (message not signed) header.d=none;linux.ibm.com; dmarc=none action=none header.from=marvell.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 93e9cba8-ce25-4093-1051-08d9616663ff x-ms-traffictypediagnostic: CY4PR1801MB1943: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2803; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: iU4spg7W/KJ4v4EajQddE0y/mmWyhUKJ9Bl4uE3SzFtSa1CfHpVVGrWhNggxZS/N+xQ8Cz+hvk0BquEo2l8wvq99OJAO7MZ5v1Ta1PWttj4XLoBr+mkcenh2NvnY0x1dYfLNcoWK3tAsQ2VlocsgTob73ULYs/74tJFS2BjKFWlU0YkYQZEp6Wv8Kn/pADfrXjtvCG03RwZpCviX4p13NNWXjuKB/5ijfKNDmxa9uEcll9lshzWsXkDPG+PEaMX0V3rtYAAS+uR0Pcj7rDgQJRdl5QBJh3M4wYqmSulDBi8ZEq98cyZ2abTlkcte0wTtVKlj8zfjochOAtgSSpY/psJUV4H56vBOdMagqhBxOei8/6PmiqZMRs390V94Jbqu/tpMGEgdJh6uLIyOB/WCitG1YBnT0Jnf/KjIUrBHaNg7QuGPczJpksn0NA+/2pu74p9TUzmcroM3vys1OqkAzjcKLjho2ZrNy+sQG7ByE5/h1AUt9qxPo9yl46jEl8jHo9LZUz/Qsd1fvDpH1OA1adVsaTVstOBNqMgH9kSl0wQGiaISzB5JWt9/WCH18EVujqk6lhYgX+RGZT++RHsPIInSeKZnszElP7UlEt1fEhh+wW/5ONkaEG0WWc2Y7c1KFEaj2JTWr2w5z77YVLZ61P1PDRaMsr3o99D33OQBd6zlr86tvB3iPQKjcXPFUT7FtWsZLvaA+POlq9Dfu9yAHZbjW+mnTySyosUwr8/H0zw= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CY4PR1801MB2070.namprd18.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(136003)(376002)(39860400002)(346002)(366004)(38100700002)(6506007)(4326008)(30864003)(478600001)(33656002)(122000001)(186003)(54906003)(26005)(52536014)(83380400001)(110136005)(71200400001)(76116006)(7696005)(6636002)(9686003)(8936002)(66946007)(66476007)(66556008)(64756008)(86362001)(66446008)(5660300002)(55016002)(316002)(38070700005)(2906002)(8676002)(2004002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?dUV0SEdadmxKanpXcTMxbUF1eERkUS9EVmxuSnB1eDRuMXRuU1VsVWF2V1RS?= =?utf-8?B?R3RZbUNjZUtaOWx2U0JMNHROcUhxYUwxdmkzTndaQyttWWl3NTRNREZVYkxG?= =?utf-8?B?T2R2d3Z4YzExbGZ1Q2ZTOW96VldVMnN2aDNnajVGaFpVM1YwVGZPY0RiTkkw?= =?utf-8?B?aVdtQUJaWUMvYWJRbUNYTEV5SE1RUXNuVVUvTjJBRVNMdTZHMmtQWHlKRWR4?= =?utf-8?B?dGdTZkVYZS9yaVQ3K2FXYld2dkhRbFFSZGR5NmE3eHRYUUVNZU1UakFUMGEv?= =?utf-8?B?b2w5TDZIbmVaelExSTFkam9hN0tJNDRjRElnVDFIYjdaWjRPSzl4MHdOb0o2?= =?utf-8?B?STV4b2Zmdi84T1RnWnJCR3lEZGdxQmVHYTZFR1hFZ21HMnRtMEdPRjl3NUVu?= =?utf-8?B?eTdUWjQ5dERoVk5lVmg3UFJENTdUajhjbEFzTjJ6TmM4Z1hDT292N3ZHM2h2?= =?utf-8?B?S3VSa3F6ME9WYytHT1ZRcGI5K3JBSkIrYUplalFZS0xneVVXTEs2cWdzSFIz?= =?utf-8?B?Qk1JN3A2OTJvbnd6bHFqTjVMVmhiM1BKSjZ0RDh4SlFKVEJUTkdUMW9kMVFw?= =?utf-8?B?akpjNFlEMzRicGdjQ0M1ZUF5LzEyVkw3cnJVbjBzYVNlcmJ2bGRyVDRjOXVj?= =?utf-8?B?TlBBeTRueDdBT3FXblp4RDZTdmsyV3daUXhjNGNEWk5TaXVmZVN5K0J6b1FN?= =?utf-8?B?YmJxYXU5ZEFIMUlQdDNrMlRlSTVDTFc4V21iVmJLNEx3WlBlZ0dKM1VEV21B?= =?utf-8?B?WDF5QjhPMThmRzZ5Zmc3c1Rzb21QZGtiZHdUaWUzenNwbGkrVmM3dFpHKzNu?= =?utf-8?B?SVRwT2tuTnNzdDYyaGoxVHlLd1ZmbkVIZXh5SHhiY1kwTElNNC9jRVU3SkJM?= =?utf-8?B?cGNDMzRHQUVla000REw0MVptWWNValI5cnRrUEMwL3VKaWJPcFZ5WTUxMk5q?= =?utf-8?B?N2NNcGtpbFBLNDl1YmxZMjVtM2lZMDJOMXVVbk1WTmZpUE9kUExuYmovMGh1?= =?utf-8?B?d25WOXVZREZjWEt0cUh2MWdONktpSUZFbFYwTWI4K1dGNHB5Qy9aK1pEQVlK?= =?utf-8?B?SHBEeDBRaVA1L20yMEJOSVRvK3R3Y3o3S3R2Zy84dDlTNXIvc0x0Rml3bC95?= =?utf-8?B?bW44ZDVHRFdObjVmSFB5VnRGU3Y0TEU3WVdwNWZLTHBsbk5LWmV0SzRDNEYz?= =?utf-8?B?cFk1dVV2dkd1V0NmNjhtNTBHcG1JYWRhQ1FSTXlXMzRTVWl5OVBEalEwZGh6?= =?utf-8?B?cUxIZG9vRWEyVDJGMnd2aEdoMmlkTElDcEJSWjFFTnRucGRHcWxGTlprVHNG?= =?utf-8?B?NEZPYnJjL1dJcFVhOXpwd3FZS3NReFRDQUhub29jUlVqQXhxM3ppcDNXRHlj?= =?utf-8?B?TFQyd2RvNVFQTVJ6Y2tPZHZ5L0tPdkx3d0hRRWFDNlMzZm9lWDlrd2ovYTkx?= =?utf-8?B?Nnh6ZjlqUVd1eExkV0hhWk4rR2h5T2thL211aUhMQm1KenFUajNyZmluUlQy?= =?utf-8?B?MFpjbjduZmh4bHZGMk5uMnJ2RVBwYndOeGs5STYzeG96Z2tSOFZkZHUrWlU4?= =?utf-8?B?ekg5eHMxSndBQlExWnZ3ZGJUUWFFT2RnMko4bTZ3eEdBNVJZSE00ajl2a0Zx?= =?utf-8?B?aXZUVFVwb1VDNFpNd2IwSXNUNkVTajZZODFrOE83VEExc2llb1g1bU1GUGpE?= =?utf-8?B?R2xobnNjZ3pWT3k5LzBDdUNuUkp1MmZPVGRIUExkMWRoWlpZS3NvWUhnVkZK?= =?utf-8?Q?tVOrX5+CCtLxDP9tbEqdDZ+Rx29Yw9G/BcbEUUO?= 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: CY4PR1801MB2070.namprd18.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 93e9cba8-ce25-4093-1051-08d9616663ff X-MS-Exchange-CrossTenant-originalarrivaltime: 17 Aug 2021 10:04:23.9975 (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: WkPmPVDcT9xTToYvmuCUmiKwi6NN9iEFUUFBC9hNl8L+/6tPioXGfG7qnebUtvVldEqTiZhmD1BcrpThukY8ag== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR1801MB1943 X-Proofpoint-GUID: FDSjaTIr2XsW3rdFJfkfJ0rC5oFUrRUg X-Proofpoint-ORIG-GUID: FDSjaTIr2XsW3rdFJfkfJ0rC5oFUrRUg 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-17_03,2021-08-16_02,2020-04-07_01 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org VGhhbmtzIEtham9sIGZvciBwb2ludGluZyB0byBtZW1vcnkgbGVhay4NCkkgd2lsbCBmaXggaXQg aW4gdGhlIG5leHQgdmVyc2lvbi4NCg0KVGhhbmtzLA0KQmhhc2thcmENCg0KPi0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+RnJvbToga2Fqb2xqYWluIDxramFpbkBsaW51eC5pYm0uY29tPg0K PlNlbnQ6IFNhdHVyZGF5LCBBdWd1c3QgMTQsIDIwMjEgNzoyNCBQTQ0KPlRvOiBCaGFza2FyYSBC dWRpcmVkbGEgPGJidWRpcmVkbGFAbWFydmVsbC5jb20+OyB3aWxsQGtlcm5lbC5vcmc7DQo+bWFy ay5ydXRsYW5kQGFybS5jb207IHJvYmgrZHRAa2VybmVsLm9yZzsgU3VuaWwgS292dnVyaSBHb3V0 aGFtDQo+PHNnb3V0aGFtQG1hcnZlbGwuY29tPg0KPkNjOiBsaW51eC1hcm0ta2VybmVsQGxpc3Rz LmluZnJhZGVhZC5vcmc7IGRldmljZXRyZWVAdmdlci5rZXJuZWwub3JnOyBsaW51eC0NCj5rZXJu ZWxAdmdlci5rZXJuZWwub3JnDQo+U3ViamVjdDogW0VYVF0gUmU6IFtQQVRDSCAxLzJdIGRyaXZl cnM6IHBlcmY6IEFkZCBMTEMtVEFEIHBlcmYgY291bnRlciBzdXBwb3J0DQo+DQo+RXh0ZXJuYWwg RW1haWwNCj4NCj4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+DQo+DQo+T24gOC8xMi8yMSAxMToxMiBQTSwgQmhh c2thcmEgQnVkaXJlZGxhIHdyb3RlOg0KPj4gVGhpcyBkcml2ZXIgYWRkcyBzdXBwb3J0IGZvciBM YXN0LWxldmVsIGNhY2hlIHRhZy1hbmQtZGF0YSB1bml0DQo+PiAoTExDLVRBRCkgUE1VIHRoYXQg aXMgZmVhdHVyZWQgaW4gc29tZSBvZiB0aGUgTWFydmVsbCdzIENOMTBLDQo+PiBpbmZyYXN0cnVj dHVyZSBzaWxpY29ucy4NCj4+DQo+PiBUaGUgTExDIGlzIGRpdmlkZWQgaW50byAyTiBzbGljZXMg ZGlzdHJpYnV0ZWQgYWNyb3NzIE4gTWVzaCB0aWxlcyBpbiBhDQo+PiBzaW5nbGUtc29ja2V0IGNv bmZpZ3VyYXRpb24uIFRoZSBkcml2ZXIgYWx3YXlzIGNvbmZpZ3VyZXMgdGhlIHNhbWUNCj4+IGNv dW50ZXIgZm9yIGFsbCBvZiB0aGUgVEFEcy4gVGhlIHVzZXIgd291bGQgZW5kIHVwIGVmZmVjdGl2 ZWx5DQo+PiByZXNlcnZpbmcgb25lIG9mIGVpZ2h0IGNvdW50ZXJzIGluIGV2ZXJ5IFRBRCB0byBs b29rIGFjcm9zcyBhbGwgVEFEcy4NCj4+IFRoZSBvY2N1cnJlbmNlcyBvZiBldmVudHMgYXJlIGFn Z3JlZ2F0ZWQgYW5kIHByZXNlbnRlZCB0byB0aGUgdXNlciBhdA0KPj4gdGhlIGVuZCBvZiBhbiBh cHBsaWNhdGlvbiBydW4uIFRoZSBkcml2ZXIgZG9lcyBub3QgcHJvdmlkZSBhIHdheSBmb3INCj4+ IHRoZSB1c2VyIHRvIHBhcnRpdGlvbiBUQURzIHNvIHRoYXQgZGlmZmVyZW50IFRBRHMgYXJlIHVz ZWQgZm9yDQo+PiBkaWZmZXJlbnQgYXBwbGljYXRpb25zLg0KPj4NCj4+IFRoZSBldmVudCBjb3Vu dGVycyBhcmUgemVyb2VkIG9uIHN0YXJ0IGV2ZW50IGNvdW50aW5nIHRvIGF2b2lkIGFueQ0KPj4g cm9sbG92ZXIgaXNzdWVzLiBUQUQgcGVyZiBjb3VudGVycyBhcmUgNjQtYml0LCBzbyBpdCdzIG5v dCBjdXJyZW50bHkNCj4+IHBvc3NpYmxlIHRvIG92ZXJmbG93IGV2ZW50IGNvdW50ZXJzIGF0IGN1 cnJlbnQgbWVzaCBhbmQgY29yZQ0KPj4gZnJlcXVlbmNpZXMuDQo+Pg0KPj4gVG8gbWVhc3VyZSB0 YWQgcG11IGV2ZW50cyB1c2UgcGVyZiB0b29sIHN0YXQgY29tbWFuZC4gRm9yIGluc3RhbmNlOg0K Pj4NCj4+IHBlcmYgc3RhdCAtZSB0YWRfZGF0X21zaF9pbl9kc3MsdGFkX3JlcV9tc2hfb3V0X2Fu eSA8YXBwbGljYXRpb24+IHBlcmYNCj4+IHN0YXQgLWUgdGFkX2FsbG9jX2FueSx0YWRfaGl0X2Fu eSx0YWRfdGFnX3JkIDxhcHBsaWNhdGlvbj4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5OiBCaGFza2Fy YSBCdWRpcmVkbGEgPGJidWRpcmVkbGFAbWFydmVsbC5jb20+DQo+PiAtLS0NCj4+ICBkcml2ZXJz L3BlcmYvS2NvbmZpZyAgICAgICAgICAgICAgICAgfCAgIDcgKw0KPj4gIGRyaXZlcnMvcGVyZi9N YWtlZmlsZSAgICAgICAgICAgICAgICB8ICAgMSArDQo+PiAgZHJpdmVycy9wZXJmL21hcnZlbGxf Y24xMGtfdGFkX3BtdS5jIHwgNDI5DQo+PiArKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4+ ICAzIGZpbGVzIGNoYW5nZWQsIDQzNyBpbnNlcnRpb25zKCspDQo+PiAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvcGVyZi9tYXJ2ZWxsX2NuMTBrX3RhZF9wbXUuYw0KPj4NCj4+IGRpZmYgLS1n aXQgYS9kcml2ZXJzL3BlcmYvS2NvbmZpZyBiL2RyaXZlcnMvcGVyZi9LY29uZmlnIGluZGV4DQo+ PiA3NzUyMmU1ZWZlMTEuLjczZGNhMTFmODA4MCAxMDA2NDQNCj4+IC0tLSBhL2RyaXZlcnMvcGVy Zi9LY29uZmlnDQo+PiArKysgYi9kcml2ZXJzL3BlcmYvS2NvbmZpZw0KPj4gQEAgLTEzNyw2ICsx MzcsMTMgQEAgY29uZmlnIEFSTV9ETUM2MjBfUE1VDQo+PiAgCSAgU3VwcG9ydCBmb3IgUE1VIGV2 ZW50cyBtb25pdG9yaW5nIG9uIHRoZSBBUk0gRE1DLTYyMCBtZW1vcnkNCj4+ICAJICBjb250cm9s bGVyLg0KPj4NCj4+ICtjb25maWcgTUFSVkVMTF9DTjEwS19UQURfUE1VDQo+PiArCXRyaXN0YXRl ICJNYXJ2ZWxsIENOMTBLIExMQy1UQUQgUE1VIg0KPj4gKwlkZXBlbmRzIG9uIEFSTTY0DQo+PiAr CWhlbHANCj4+ICsJICBQcm92aWRlcyBzdXBwb3J0IGZvciBMYXN0LUxldmVsIGNhY2hlIFRhZy1h bmQtZGF0YSBVbml0cyAoTExDLVRBRCkNCj4+ICsJICBwZXJmb3JtYW5jZSBtb25pdG9ycyBvbiBD TjEwSyBmYW1pbHkgc2lsaWNvbnMuDQo+PiArDQo+PiAgc291cmNlICJkcml2ZXJzL3BlcmYvaGlz aWxpY29uL0tjb25maWciDQo+Pg0KPj4gIGVuZG1lbnUNCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3BlcmYvTWFrZWZpbGUgYi9kcml2ZXJzL3BlcmYvTWFrZWZpbGUgaW5kZXgNCj4+IDUyNjBiMTE2 YzdkYS4uMmRiNTQxOGQ1YjBhIDEwMDY0NA0KPj4gLS0tIGEvZHJpdmVycy9wZXJmL01ha2VmaWxl DQo+PiArKysgYi9kcml2ZXJzL3BlcmYvTWFrZWZpbGUNCj4+IEBAIC0xNCwzICsxNCw0IEBAIG9i ai0kKENPTkZJR19USFVOREVSWDJfUE1VKSArPQ0KPnRodW5kZXJ4Ml9wbXUubw0KPj4gIG9iai0k KENPTkZJR19YR0VORV9QTVUpICs9IHhnZW5lX3BtdS5vDQo+PiAgb2JqLSQoQ09ORklHX0FSTV9T UEVfUE1VKSArPSBhcm1fc3BlX3BtdS5vDQo+PiAgb2JqLSQoQ09ORklHX0FSTV9ETUM2MjBfUE1V KSArPSBhcm1fZG1jNjIwX3BtdS5vDQo+PiArb2JqLSQoQ09ORklHX01BUlZFTExfQ04xMEtfVEFE X1BNVSkgKz0gbWFydmVsbF9jbjEwa190YWRfcG11Lm8NCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L3BlcmYvbWFydmVsbF9jbjEwa190YWRfcG11LmMNCj4+IGIvZHJpdmVycy9wZXJmL21hcnZlbGxf Y24xMGtfdGFkX3BtdS5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAw MDAwMDAwLi5mZWM4YjkwZDUyZDINCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2RyaXZlcnMv cGVyZi9tYXJ2ZWxsX2NuMTBrX3RhZF9wbXUuYw0KPj4gQEAgLTAsMCArMSw0MjkgQEANCj4+ICsv LyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4gKy8qIE1hcnZlbGwgQ04xMEsg TExDLVRBRCBwZXJmIGRyaXZlcg0KPj4gKyAqDQo+PiArICogQ29weXJpZ2h0IChDKSAyMDIxIE1h cnZlbGwuDQo+PiArICoNCj4+ICsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91 IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+PiArbW9kaWZ5DQo+PiArICogaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMN Cj4+ICsgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4NCj4+ICsg Ki8NCj4+ICsNCj4+ICsjZGVmaW5lIHByX2ZtdChmbXQpICJ0YWRfcG11OiAiIGZtdA0KPj4gKw0K Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvb2YuaD4N Cj4+ICsjaW5jbHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9v Zl9kZXZpY2UuaD4NCj4+ICsjaW5jbHVkZSA8bGludXgvY3B1aG90cGx1Zy5oPg0KPj4gKyNpbmNs dWRlIDxsaW51eC9wZXJmX2V2ZW50Lmg+DQo+PiArI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rl dmljZS5oPg0KPj4gKyNpbmNsdWRlIDxsaW51eC9hcm0tc21jY2MuaD4NCj4+ICsNCj4+ICsjZGVm aW5lIFRBRF9QRkNfT0ZGU0VUCQkweDA4MDANCj4+ICsjZGVmaW5lIFRBRF9QRkMoY291bnRlcikJ KFRBRF9QRkNfT0ZGU0VUIHwgKGNvdW50ZXIgPDwgMykpDQo+PiArI2RlZmluZSBUQURfUFJGX09G RlNFVAkJMHgwOTAwDQo+PiArI2RlZmluZSBUQURfUFJGKGNvdW50ZXIpCShUQURfUFJGX09GRlNF VCB8IChjb3VudGVyIDw8IDMpKQ0KPj4gKyNkZWZpbmUgVEFEX1BSRl9DTlRTRUxfTUFTSwkweEZG DQo+PiArI2RlZmluZSBUQURfTUFYX0NPVU5URVJTCTgNCj4+ICsNCj4+ICsjZGVmaW5lIHRvX3Rh ZF9wbXUocCkgKGNvbnRhaW5lcl9vZihwLCBzdHJ1Y3QgdGFkX3BtdSwgcG11KSkNCj4+ICsNCj4+ ICtzdHJ1Y3QgdGFkX3JlZ2lvbiB7DQo+PiArCXZvaWQgX19pb21lbQkqYmFzZTsNCj4+ICt9Ow0K Pj4gKw0KPj4gK3N0cnVjdCB0YWRfcG11IHsNCj4+ICsJc3RydWN0IHBtdSBwbXU7DQo+PiArCXN0 cnVjdCB0YWRfcmVnaW9uICpyZWdpb25zOw0KPj4gKwl1MzIgcmVnaW9uX2NudDsNCj4+ICsJdW5z aWduZWQgaW50IGNwdTsNCj4+ICsJc3RydWN0IGhsaXN0X25vZGUgbm9kZTsNCj4+ICsJc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50c1tUQURfTUFYX0NPVU5URVJTXTsNCj4+ICsJREVDTEFSRV9CSVRN QVAoY291bnRlcnNfbWFwLCBUQURfTUFYX0NPVU5URVJTKTsgfTsNCj4+ICsNCj4+ICtzdGF0aWMg aW50IHRhZF9wbXVfY3B1aHBfc3RhdGU7DQo+PiArDQo+PiArc3RhdGljIHZvaWQgdGFkX3BtdV9l dmVudF9jb3VudGVyX3JlYWQoc3RydWN0IHBlcmZfZXZlbnQgKmV2ZW50KSB7DQo+PiArCXN0cnVj dCB0YWRfcG11ICp0YWRfcG11ID0gdG9fdGFkX3BtdShldmVudC0+cG11KTsNCj4+ICsJc3RydWN0 IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+PiArCXUzMiBjb3VudGVyX2lkeCA9 IGh3Yy0+aWR4Ow0KPj4gKwl1NjQgZGVsdGEsIHByZXYsIG5ldzsNCj4+ICsJaW50IGk7DQo+PiAr DQo+PiArCWRvIHsNCj4+ICsJCXByZXYgPSBsb2NhbDY0X3JlYWQoJmh3Yy0+cHJldl9jb3VudCk7 DQo+PiArCQlmb3IgKGkgPSAwLCBuZXcgPSAwOyBpIDwgdGFkX3BtdS0+cmVnaW9uX2NudDsgaSsr KQ0KPj4gKwkJCW5ldyArPSByZWFkcSh0YWRfcG11LT5yZWdpb25zW2ldLmJhc2UgKw0KPj4gKwkJ CQkgICAgIFRBRF9QRkMoY291bnRlcl9pZHgpKTsNCj4+ICsJfSB3aGlsZSAobG9jYWw2NF9jbXB4 Y2hnKCZod2MtPnByZXZfY291bnQsIHByZXYsIG5ldykgIT0gcHJldik7DQo+PiArDQo+PiArCWRl bHRhID0gKG5ldyAtIHByZXYpICYgR0VOTUFTS19VTEwoNjMsIDApOw0KPj4gKwlsb2NhbDY0X2Fk ZChkZWx0YSwgJmV2ZW50LT5jb3VudCk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHRh ZF9wbXVfZXZlbnRfY291bnRlcl9zdG9wKHN0cnVjdCBwZXJmX2V2ZW50ICpldmVudCwgaW50DQo+ PiArZmxhZ3MpIHsNCj4+ICsJc3RydWN0IHRhZF9wbXUgKnRhZF9wbXUgPSB0b190YWRfcG11KGV2 ZW50LT5wbXUpOw0KPj4gKwlzdHJ1Y3QgaHdfcGVyZl9ldmVudCAqaHdjID0gJmV2ZW50LT5odzsN Cj4+ICsJdTMyIGNvdW50ZXJfaWR4ID0gaHdjLT5pZHg7DQo+PiArCWludCBpOw0KPj4gKw0KPj4g KwkvKiBUQUQoKV9QRkMoKSBzdG9wIGNvdW50aW5nIG9uIHRoZSB3cml0ZQ0KPj4gKwkgKiB3aGlj aCBzZXRzIFRBRCgpX1BSRigpW0NOVFNFTF0gPT0gMA0KPj4gKwkgKi8NCj4+ICsJZm9yIChpID0g MDsgaSA8IHRhZF9wbXUtPnJlZ2lvbl9jbnQ7IGkrKykNCj4+ICsJCXdyaXRlcV9yZWxheGVkKDAs IHRhZF9wbXUtPnJlZ2lvbnNbaV0uYmFzZSArDQo+PiArCQkJICAgICAgIFRBRF9QUkYoY291bnRl cl9pZHgpKTsNCj4+ICsNCj4+ICsJdGFkX3BtdV9ldmVudF9jb3VudGVyX3JlYWQoZXZlbnQpOw0K Pj4gKwlod2MtPnN0YXRlIHw9IFBFUkZfSEVTX1NUT1BQRUQgfCBQRVJGX0hFU19VUFRPREFURTsg fQ0KPj4gKw0KPj4gK3N0YXRpYyB2b2lkIHRhZF9wbXVfZXZlbnRfY291bnRlcl9zdGFydChzdHJ1 Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludA0KPj4gK2ZsYWdzKSB7DQo+PiArCXN0cnVjdCB0YWRf cG11ICp0YWRfcG11ID0gdG9fdGFkX3BtdShldmVudC0+cG11KTsNCj4+ICsJc3RydWN0IGh3X3Bl cmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+PiArCXUzMiBldmVudF9pZHggPSBldmVudC0+ YXR0ci5jb25maWc7DQo+PiArCXUzMiBjb3VudGVyX2lkeCA9IGh3Yy0+aWR4Ow0KPj4gKwl1NjQg cmVnX3ZhbDsNCj4+ICsJaW50IGk7DQo+PiArDQo+PiArCWh3Yy0+c3RhdGUgPSAwOw0KPj4gKw0K Pj4gKwkvKiBUeXBpY2FsbHkgVEFEX1BGQygpIGFyZSB6ZXJvZWQgdG8gc3RhcnQgY291bnRpbmcg Ki8NCj4+ICsJZm9yIChpID0gMDsgaSA8IHRhZF9wbXUtPnJlZ2lvbl9jbnQ7IGkrKykNCj4+ICsJ CXdyaXRlcV9yZWxheGVkKDAsIHRhZF9wbXUtPnJlZ2lvbnNbaV0uYmFzZSArDQo+PiArCQkJICAg ICAgIFRBRF9QRkMoY291bnRlcl9pZHgpKTsNCj4+ICsNCj4+ICsJLyogVEFEKClfUEZDKCkgc3Rh cnQgY291bnRpbmcgb24gdGhlIHdyaXRlDQo+PiArCSAqIHdoaWNoIHNldHMgVEFEKClfUFJGKClb Q05UU0VMXSAhPSAwDQo+PiArCSAqLw0KPj4gKwlmb3IgKGkgPSAwOyBpIDwgdGFkX3BtdS0+cmVn aW9uX2NudDsgaSsrKSB7DQo+PiArCQlyZWdfdmFsID0gcmVhZHFfcmVsYXhlZCh0YWRfcG11LT5y ZWdpb25zW2ldLmJhc2UgKw0KPj4gKwkJCQkJVEFEX1BSRihjb3VudGVyX2lkeCkpOw0KPj4gKwkJ cmVnX3ZhbCB8PSAoZXZlbnRfaWR4ICYgMHhGRik7DQo+PiArCQl3cml0ZXFfcmVsYXhlZChyZWdf dmFsLAl0YWRfcG11LT5yZWdpb25zW2ldLmJhc2UgKw0KPj4gKwkJCSAgICAgICBUQURfUFJGKGNv dW50ZXJfaWR4KSk7DQo+PiArCX0NCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZvaWQgdGFkX3Bt dV9ldmVudF9jb3VudGVyX2RlbChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQsIGludA0KPj4gK2Zs YWdzKSB7DQo+PiArCXN0cnVjdCB0YWRfcG11ICp0YWRfcG11ID0gdG9fdGFkX3BtdShldmVudC0+ cG11KTsNCj4+ICsJc3RydWN0IGh3X3BlcmZfZXZlbnQgKmh3YyA9ICZldmVudC0+aHc7DQo+PiAr CWludCBpZHggPSBod2MtPmlkeDsNCj4+ICsNCj4+ICsJdGFkX3BtdV9ldmVudF9jb3VudGVyX3N0 b3AoZXZlbnQsIGZsYWdzIHwgUEVSRl9FRl9VUERBVEUpOw0KPj4gKwl0YWRfcG11LT5ldmVudHNb aWR4XSA9IE5VTEw7DQo+PiArCWNsZWFyX2JpdChpZHgsIHRhZF9wbXUtPmNvdW50ZXJzX21hcCk7 IH0NCj4+ICsNCj4+ICtzdGF0aWMgaW50IHRhZF9wbXVfZXZlbnRfY291bnRlcl9hZGQoc3RydWN0 IHBlcmZfZXZlbnQgKmV2ZW50LCBpbnQNCj4+ICtmbGFncykgew0KPj4gKwlzdHJ1Y3QgdGFkX3Bt dSAqdGFkX3BtdSA9IHRvX3RhZF9wbXUoZXZlbnQtPnBtdSk7DQo+PiArCXN0cnVjdCBod19wZXJm X2V2ZW50ICpod2MgPSAmZXZlbnQtPmh3Ow0KPj4gKwlpbnQgaWR4Ow0KPj4gKw0KPj4gKwkvKiBH ZXQgYSBmcmVlIGNvdW50ZXIgZm9yIHRoaXMgZXZlbnQgKi8NCj4+ICsJaWR4ID0gZmluZF9maXJz dF96ZXJvX2JpdCh0YWRfcG11LT5jb3VudGVyc19tYXAsDQo+VEFEX01BWF9DT1VOVEVSUyk7DQo+ PiArCWlmIChpZHggPT0gVEFEX01BWF9DT1VOVEVSUykNCj4+ICsJCXJldHVybiAtRUFHQUlOOw0K Pj4gKw0KPj4gKwlzZXRfYml0KGlkeCwgdGFkX3BtdS0+Y291bnRlcnNfbWFwKTsNCj4+ICsNCj4+ ICsJaHdjLT5pZHggPSBpZHg7DQo+PiArCWh3Yy0+c3RhdGUgPSBQRVJGX0hFU19TVE9QUEVEOw0K Pj4gKwl0YWRfcG11LT5ldmVudHNbaWR4XSA9IGV2ZW50Ow0KPj4gKw0KPj4gKwlpZiAoZmxhZ3Mg JiBQRVJGX0VGX1NUQVJUKQ0KPj4gKwkJdGFkX3BtdV9ldmVudF9jb3VudGVyX3N0YXJ0KGV2ZW50 LCBmbGFncyk7DQo+PiArDQo+PiArCXJldHVybiAwOw0KPj4gK30NCj4+ICsNCj4+ICtzdGF0aWMg aW50IHRhZF9wbXVfZXZlbnRfaW5pdChzdHJ1Y3QgcGVyZl9ldmVudCAqZXZlbnQpIHsNCj4+ICsJ c3RydWN0IHRhZF9wbXUgKnRhZF9wbXUgPSB0b190YWRfcG11KGV2ZW50LT5wbXUpOw0KPj4gKw0K Pj4gKwlpZiAoIWV2ZW50LT5hdHRyLmRpc2FibGVkKQ0KPj4gKwkJcmV0dXJuIC1FSU5WQUw7DQo+ PiArDQo+PiArCWlmIChldmVudC0+YXR0ci50eXBlICE9IGV2ZW50LT5wbXUtPnR5cGUpDQo+PiAr CQlyZXR1cm4gLUVOT0VOVDsNCj4+ICsNCj4+ICsJaWYgKGV2ZW50LT5zdGF0ZSAhPSBQRVJGX0VW RU5UX1NUQVRFX09GRikNCj4+ICsJCXJldHVybiAtRUlOVkFMOw0KPj4gKw0KPj4gKwlldmVudC0+ Y3B1ID0gdGFkX3BtdS0+Y3B1Ow0KPj4gKwlldmVudC0+aHcuaWR4ID0gLTE7DQo+PiArCWV2ZW50 LT5ody5jb25maWdfYmFzZSA9IGV2ZW50LT5hdHRyLmNvbmZpZzsNCj4+ICsNCj4+ICsJcmV0dXJu IDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBzc2l6ZV90IHRhZF9wbXVfZXZlbnRfc2hvdyhz dHJ1Y3QgZGV2aWNlICpkZXYsDQo+PiArCQkJCXN0cnVjdCBkZXZpY2VfYXR0cmlidXRlICphdHRy LCBjaGFyICpwYWdlKSB7DQo+PiArCXN0cnVjdCBwZXJmX3BtdV9ldmVudHNfYXR0ciAqcG11X2F0 dHI7DQo+PiArDQo+PiArCXBtdV9hdHRyID0gY29udGFpbmVyX29mKGF0dHIsIHN0cnVjdCBwZXJm X3BtdV9ldmVudHNfYXR0ciwgYXR0cik7DQo+PiArCXJldHVybiBzcHJpbnRmKHBhZ2UsICJldmVu dD0weCUwMmxseFxuIiwgcG11X2F0dHItPmlkKTsgfQ0KPj4gKw0KPj4gKyNkZWZpbmUgVEFEX1BN VV9FVkVOVF9BVFRSKG5hbWUsIGNvbmZpZykJCQlcDQo+PiArCVBNVV9FVkVOVF9BVFRSX0lEKG5h bWUsIHRhZF9wbXVfZXZlbnRfc2hvdywgY29uZmlnKQ0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3Qg YXR0cmlidXRlICp0YWRfcG11X2V2ZW50X2F0dHJzW10gPSB7DQo+PiArCVRBRF9QTVVfRVZFTlRf QVRUUih0YWRfbm9uZSwgMHgwKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9yZXFfbXNo X2luX2FueSwgMHgxKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9yZXFfbXNoX2luX21u LCAweDIpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX3JlcV9tc2hfaW5fZXhsbW4sIDB4 MyksDQo+PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcnNwX21zaF9pbl9hbnksIDB4NCksDQo+ PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcnNwX21zaF9pbl9tbiwgMHg1KSwNCj4+ICsJVEFE X1BNVV9FVkVOVF9BVFRSKHRhZF9yc3BfbXNoX2luX2V4bG1uLCAweDYpLA0KPj4gKwlUQURfUE1V X0VWRU5UX0FUVFIodGFkX3JzcF9tc2hfaW5fZHNzLCAweDcpLA0KPj4gKwlUQURfUE1VX0VWRU5U X0FUVFIodGFkX3JzcF9tc2hfaW5fcmV0cnlfZHNzLCAweDgpLA0KPj4gKwlUQURfUE1VX0VWRU5U X0FUVFIodGFkX2RhdF9tc2hfaW5fYW55LCAweDkpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIo dGFkX2RhdF9tc2hfaW5fZHNzLCAweGEpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX3Jl cV9tc2hfb3V0X2FueSwgMHhiKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9yZXFfbXNo X291dF9kc3NfcmQsIDB4YyksDQo+PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcmVxX21zaF9v dXRfZHNzX3dyLCAweGQpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX3JlcV9tc2hfb3V0 X2V2aWN0LCAweGUpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX3JzcF9tc2hfb3V0X2Fu eSwgMHhmKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9yc3BfbXNoX291dF9yZXRyeV9l eGxtbiwgMHgxMCksDQo+PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfcnNwX21zaF9vdXRfcmV0 cnlfbW4sIDB4MTEpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX3JzcF9tc2hfb3V0X2V4 bG1uLCAweDEyKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9yc3BfbXNoX291dF9tbiwg MHgxMyksDQo+PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfc25wX21zaF9vdXRfYW55LCAweDE0 KSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9zbnBfbXNoX291dF9tbiwgMHgxNSksDQo+ PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfc25wX21zaF9vdXRfZXhsbW4sIDB4MTYpLA0KPj4g KwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX2RhdF9tc2hfb3V0X2FueSwgMHgxNyksDQo+PiArCVRB RF9QTVVfRVZFTlRfQVRUUih0YWRfZGF0X21zaF9vdXRfZmlsbCwgMHgxOCksDQo+PiArCVRBRF9Q TVVfRVZFTlRfQVRUUih0YWRfZGF0X21zaF9vdXRfZHNzLCAweDE5KSwNCj4+ICsJVEFEX1BNVV9F VkVOVF9BVFRSKHRhZF9hbGxvY19kdGcsIDB4MWEpLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIo dGFkX2FsbG9jX2x0ZywgMHgxYiksDQo+PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfYWxsb2Nf YW55LCAweDFjKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9oaXRfZHRnLCAweDFkKSwN Cj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRSKHRhZF9oaXRfbHRnLCAweDFlKSwNCj4+ICsJVEFEX1BN VV9FVkVOVF9BVFRSKHRhZF9oaXRfYW55LCAweDFmKSwNCj4+ICsJVEFEX1BNVV9FVkVOVF9BVFRS KHRhZF90YWdfcmQsIDB4MjApLA0KPj4gKwlUQURfUE1VX0VWRU5UX0FUVFIodGFkX2RhdF9yZCwg MHgyMSksDQo+PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfZGF0X3JkX2J5cCwgMHgyMiksDQo+ PiArCVRBRF9QTVVfRVZFTlRfQVRUUih0YWRfaWZiX29jYywgMHgyMyksDQo+PiArCVRBRF9QTVVf RVZFTlRfQVRUUih0YWRfcmVxX29jYywgMHgyNCksDQo+PiArCU5VTEwsDQo+PiArfTsNCj4+ICsN Cj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGF0dHJpYnV0ZV9ncm91cCB0YWRfcG11X2V2ZW50c19h dHRyX2dyb3VwID0gew0KPj4gKwkubmFtZSA9ICJldmVudHMiLA0KPj4gKwkuYXR0cnMgPSB0YWRf cG11X2V2ZW50X2F0dHJzLA0KPj4gK307DQo+PiArDQo+PiArUE1VX0ZPUk1BVF9BVFRSKGV2ZW50 LCAiY29uZmlnOjAtNyIpOw0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlICp0YWRf cG11X2Zvcm1hdF9hdHRyc1tdID0gew0KPj4gKwkmZm9ybWF0X2F0dHJfZXZlbnQuYXR0ciwNCj4+ ICsJTlVMTCwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBzdHJ1Y3QgYXR0cmlidXRlX2dyb3Vw IHRhZF9wbXVfZm9ybWF0X2F0dHJfZ3JvdXAgPSB7DQo+PiArCS5uYW1lID0gImZvcm1hdCIsDQo+ PiArCS5hdHRycyA9IHRhZF9wbXVfZm9ybWF0X2F0dHJzLA0KPj4gK307DQo+PiArDQo+PiArc3Rh dGljIHNzaXplX3QgdGFkX3BtdV9jcHVtYXNrX3Nob3coc3RydWN0IGRldmljZSAqZGV2LA0KPj4g KwkJCQlzdHJ1Y3QgZGV2aWNlX2F0dHJpYnV0ZSAqYXR0ciwgY2hhciAqYnVmKSB7DQo+PiArCXN0 cnVjdCB0YWRfcG11ICp0YWRfcG11ID0gdG9fdGFkX3BtdShkZXZfZ2V0X2RydmRhdGEoZGV2KSk7 DQo+PiArDQo+PiArCXJldHVybiBjcHVtYXBfcHJpbnRfdG9fcGFnZWJ1Zih0cnVlLCBidWYsIGNw dW1hc2tfb2YodGFkX3BtdS0NCj4+Y3B1KSk7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBERVZJ Q0VfQVRUUihjcHVtYXNrLCAwNDQ0LCB0YWRfcG11X2NwdW1hc2tfc2hvdywgTlVMTCk7DQo+PiAr DQo+PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGUgKnRhZF9wbXVfY3B1bWFza19hdHRyc1tdID0g ew0KPj4gKwkmZGV2X2F0dHJfY3B1bWFzay5hdHRyLA0KPj4gKwlOVUxMLA0KPj4gK307DQo+PiAr DQo+PiArc3RhdGljIHN0cnVjdCBhdHRyaWJ1dGVfZ3JvdXAgdGFkX3BtdV9jcHVtYXNrX2F0dHJf Z3JvdXAgPSB7DQo+PiArCS5hdHRycyA9IHRhZF9wbXVfY3B1bWFza19hdHRycywNCj4+ICt9Ow0K Pj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgYXR0cmlidXRlX2dyb3VwICp0YWRfcG11X2F0 dHJfZ3JvdXBzW10gPSB7DQo+PiArCSZ0YWRfcG11X2V2ZW50c19hdHRyX2dyb3VwLA0KPj4gKwkm dGFkX3BtdV9mb3JtYXRfYXR0cl9ncm91cCwNCj4+ICsJJnRhZF9wbXVfY3B1bWFza19hdHRyX2dy b3VwLA0KPj4gKwlOVUxMLA0KPj4gK307DQo+PiArDQo+PiArc3RhdGljIGludCB0YWRfcG11X3By b2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpIHsNCj4+ICsJc3RydWN0IGRldmljZV9u b2RlICpub2RlID0gcGRldi0+ZGV2Lm9mX25vZGU7DQo+PiArCXN0cnVjdCB0YWRfcmVnaW9uICpy ZWdpb25zOw0KPj4gKwlzdHJ1Y3QgdGFkX3BtdSAqdGFkX3BtdTsNCj4+ICsJc3RydWN0IHJlc291 cmNlICpyZXM7DQo+PiArCXUzMiB0YWRfcG11X3BhZ2Vfc2l6ZTsNCj4+ICsJdTMyIHRhZF9wYWdl X3NpemU7DQo+PiArCXUzMiB0YWRfY250Ow0KPj4gKwlpbnQgaSwgcmV0Ow0KPj4gKwljaGFyICpu YW1lOw0KPj4gKw0KPj4gKwl0YWRfcG11ID0gZGV2bV9remFsbG9jKCZwZGV2LT5kZXYsIHNpemVv ZigqdGFkX3BtdSksDQo+R0ZQX0tFUk5FTCk7DQo+PiArCWlmICghdGFkX3BtdSkNCj4+ICsJCXJl dHVybiAtRU5PTUVNOw0KPj4gKw0KPj4gKwlwbGF0Zm9ybV9zZXRfZHJ2ZGF0YShwZGV2LCB0YWRf cG11KTsNCj4+ICsNCj4+ICsJcmVzID0gcGxhdGZvcm1fZ2V0X3Jlc291cmNlKHBkZXYsIElPUkVT T1VSQ0VfTUVNLCAwKTsNCj4+ICsJaWYgKCFyZXMpIHsNCj4+ICsJCWRldl9lcnIoJnBkZXYtPmRl diwgIk1lbSByZXNvdXJjZSBub3QgZm91bmRcbiIpOw0KPj4gKwkJcmV0dXJuIC1FTk9ERVY7DQo+ PiArCX0NCj4+ICsNCj4+ICsJcmV0ID0gb2ZfcHJvcGVydHlfcmVhZF91MzIobm9kZSwgInRhZC1w YWdlLXNpemUiLCAmdGFkX3BhZ2Vfc2l6ZSk7DQo+PiArCWlmIChyZXQpIHsNCj4+ICsJCWRldl9l cnIoJnBkZXYtPmRldiwgIkNhbid0IGZpbmQgdGFkLXBhZ2Utc2l6ZSBwcm9wZXJ0eVxuIik7DQo+ PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwl9DQo+PiArDQo+PiArCXJldCA9IG9mX3Byb3BlcnR5X3Jl YWRfdTMyKG5vZGUsICJ0YWQtcG11LXBhZ2Utc2l6ZSIsDQo+PiArCQkJCSAgICZ0YWRfcG11X3Bh Z2Vfc2l6ZSk7DQo+PiArCWlmIChyZXQpIHsNCj4+ICsJCWRldl9lcnIoJnBkZXYtPmRldiwgIkNh bid0IGZpbmQgdGFkLXBtdS1wYWdlLXNpemUNCj5wcm9wZXJ0eVxuIik7DQo+PiArCQlyZXR1cm4g cmV0Ow0KPj4gKwl9DQo+PiArDQo+PiArCXJldCA9IG9mX3Byb3BlcnR5X3JlYWRfdTMyKG5vZGUs ICJ0YWQtY250IiwgJnRhZF9jbnQpOw0KPj4gKwlpZiAocmV0KSB7DQo+PiArCQlkZXZfZXJyKCZw ZGV2LT5kZXYsICJDYW4ndCBmaW5kIHRhZC1jbnQgcHJvcGVydHlcbiIpOw0KPj4gKwkJcmV0dXJu IHJldDsNCj4+ICsJfQ0KPj4gKw0KPj4gKwlyZWdpb25zID0gZGV2bV9rY2FsbG9jKCZwZGV2LT5k ZXYsIHRhZF9jbnQsDQo+PiArCQkJICAgICAgIHNpemVvZigqcmVnaW9ucyksIEdGUF9LRVJORUwp Ow0KPj4gKwlpZiAoIXJlZ2lvbnMpDQo+PiArCQlyZXR1cm4gLUVOT01FTTsNCj4+ICsNCj4+ICsJ LyogaW9yZW1hcCB0aGUgZGlzdHJpYnV0ZWQgVEFEIHBtdSByZWdpb25zICovDQo+PiArCWZvciAo aSA9IDA7IGkgPCB0YWRfY250ICYmIHJlcy0+c3RhcnQgPCByZXMtPmVuZDsgaSsrKSB7DQo+PiAr CQlyZWdpb25zW2ldLmJhc2UgPSBkZXZtX2lvcmVtYXAoJnBkZXYtPmRldiwNCj4+ICsJCQkJCSAg ICAgICByZXMtPnN0YXJ0LA0KPj4gKwkJCQkJICAgICAgIHRhZF9wbXVfcGFnZV9zaXplKTsNCj4+ ICsJCWlmIChJU19FUlIocmVnaW9uc1tpXS5iYXNlKSkgew0KPj4gKwkJCWRldl9lcnIoJnBkZXYt PmRldiwgIlRBRCVkIGlvcmVtYXAgZmFpbFxuIiwgaSk7DQo+PiArCQkJcmV0dXJuIC1FTk9NRU07 DQo+PiArCQl9DQo+PiArCQlyZXMtPnN0YXJ0ICs9IHRhZF9wYWdlX3NpemU7DQo+PiArCX0NCj4+ ICsNCj4+ICsJdGFkX3BtdS0+cmVnaW9ucyA9IHJlZ2lvbnM7DQo+PiArCXRhZF9wbXUtPnJlZ2lv bl9jbnQgPSB0YWRfY250Ow0KPj4gKw0KPj4gKwl0YWRfcG11LT5wbXUgPSAoc3RydWN0IHBtdSkg ew0KPj4gKw0KPj4gKwkJLm1vZHVsZQkJPSBUSElTX01PRFVMRSwNCj4+ICsJCS5hdHRyX2dyb3Vw cwk9IHRhZF9wbXVfYXR0cl9ncm91cHMsDQo+PiArCQkuY2FwYWJpbGl0aWVzCT0gUEVSRl9QTVVf Q0FQX05PX0VYQ0xVREUgfA0KPj4gKwkJCQkgIFBFUkZfUE1VX0NBUF9OT19JTlRFUlJVUFQsDQo+ PiArCQkudGFza19jdHhfbnIJPSBwZXJmX2ludmFsaWRfY29udGV4dCwNCj4+ICsNCj4+ICsJCS5l dmVudF9pbml0CT0gdGFkX3BtdV9ldmVudF9pbml0LA0KPj4gKwkJLmFkZAkJPSB0YWRfcG11X2V2 ZW50X2NvdW50ZXJfYWRkLA0KPj4gKwkJLmRlbAkJPSB0YWRfcG11X2V2ZW50X2NvdW50ZXJfZGVs LA0KPj4gKwkJLnN0YXJ0CQk9IHRhZF9wbXVfZXZlbnRfY291bnRlcl9zdGFydCwNCj4+ICsJCS5z dG9wCQk9IHRhZF9wbXVfZXZlbnRfY291bnRlcl9zdG9wLA0KPj4gKwkJLnJlYWQJCT0gdGFkX3Bt dV9ldmVudF9jb3VudGVyX3JlYWQsDQo+PiArCX07DQo+PiArDQo+PiArCXRhZF9wbXUtPmNwdSA9 IHJhd19zbXBfcHJvY2Vzc29yX2lkKCk7DQo+PiArDQo+DQo+SGkgQmhhc2thcmEsDQo+ICAgSSB0 aGluayB0aGVyZSBpcyBzb21lIG1lbW9yeSBsZWFrcyBpbiB0aGlzIGZ1bmN0aW9uLiBJbmNhc2Ug Y3B1b3RwbHVnIGNvZGUNCj5mYWlscywgZG9uJ3Qgd2UgbmVlZCB0byBmcmVlIG1vbW9yeSBhbGxv Y2F0ZWQgdG8gYHRhZF9wbXVgPw0KPg0KPlRoYW5rcywNCj5LYWpvbCBKYWluDQo+DQo+DQo+PiAr CS8qIFJlZ2lzdGVyIHBtdSBpbnN0YW5jZSBmb3IgY3B1IGhvdHBsdWcgKi8NCj4+ICsJcmV0ID0g Y3B1aHBfc3RhdGVfYWRkX2luc3RhbmNlX25vY2FsbHModGFkX3BtdV9jcHVocF9zdGF0ZSwNCj4+ ICsJCQkJCSAgICAgICAmdGFkX3BtdS0+bm9kZSk7DQo+PiArCWlmIChyZXQpIHsNCj4+ICsJCWRl dl9lcnIoJnBkZXYtPmRldiwgIkVycm9yICVkIHJlZ2lzdGVyaW5nIGhvdHBsdWdcbiIsIHJldCk7 DQo+PiArCQlyZXR1cm4gcmV0Ow0KPj4gKwl9DQo+PiArDQo+PiArCW5hbWUgPSAidGFkIjsNCj4+ ICsJcmV0ID0gcGVyZl9wbXVfcmVnaXN0ZXIoJnRhZF9wbXUtPnBtdSwgbmFtZSwgLTEpOw0KPj4g KwlpZiAocmV0KQ0KPj4gKw0KPgljcHVocF9zdGF0ZV9yZW1vdmVfaW5zdGFuY2Vfbm9jYWxscyh0 YWRfcG11X2NwdWhwX3N0YXRlLA0KPj4gKwkJCQkJCSAgICAmdGFkX3BtdS0+bm9kZSk7DQo+PiAr DQo+PiArCXJldHVybiByZXQ7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgdGFkX3BtdV9y ZW1vdmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikgew0KPj4gKwlzdHJ1Y3QgdGFkX3Bt dSAqcG11ID0gcGxhdGZvcm1fZ2V0X2RydmRhdGEocGRldik7DQo+PiArDQo+PiArCWNwdWhwX3N0 YXRlX3JlbW92ZV9pbnN0YW5jZV9ub2NhbGxzKHRhZF9wbXVfY3B1aHBfc3RhdGUsDQo+PiArCQkJ CQkJJnBtdS0+bm9kZSk7DQo+PiArCXBlcmZfcG11X3VucmVnaXN0ZXIoJnBtdS0+cG11KTsNCj4+ ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qg b2ZfZGV2aWNlX2lkIHRhZF9wbXVfb2ZfbWF0Y2hbXSA9IHsNCj4+ICsJeyAuY29tcGF0aWJsZSA9 ICJtYXJ2ZWxsLGNuMTBrLXRhZC1wbXUiLCB9LA0KPj4gKwl7fSwNCj4+ICt9Ow0KPj4gKw0KPj4g K3N0YXRpYyBzdHJ1Y3QgcGxhdGZvcm1fZHJpdmVyIHRhZF9wbXVfZHJpdmVyID0gew0KPj4gKwku ZHJpdmVyICAgICAgICAgPSB7DQo+PiArCQkubmFtZSAgID0gImNuMTBrX3RhZF9wbXUiLA0KPj4g KwkJLm9mX21hdGNoX3RhYmxlID0gb2ZfbWF0Y2hfcHRyKHRhZF9wbXVfb2ZfbWF0Y2gpLA0KPj4g KwkJLnN1cHByZXNzX2JpbmRfYXR0cnMgPSB0cnVlLA0KPj4gKwl9LA0KPj4gKwkucHJvYmUgICAg ICAgICAgPSB0YWRfcG11X3Byb2JlLA0KPj4gKwkucmVtb3ZlICAgICAgICAgPSB0YWRfcG11X3Jl bW92ZSwNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgdGFkX3BtdV9vZmZsaW5lX2NwdSh1 bnNpZ25lZCBpbnQgY3B1LCBzdHJ1Y3QgaGxpc3Rfbm9kZQ0KPj4gKypub2RlKSB7DQo+PiArCXN0 cnVjdCB0YWRfcG11ICpwbXUgPSBobGlzdF9lbnRyeV9zYWZlKG5vZGUsIHN0cnVjdCB0YWRfcG11 LCBub2RlKTsNCj4+ICsJdW5zaWduZWQgaW50IHRhcmdldDsNCj4+ICsNCj4+ICsJaWYgKGNwdSAh PSBwbXUtPmNwdSkNCj4+ICsJCXJldHVybiAwOw0KPj4gKw0KPj4gKwl0YXJnZXQgPSBjcHVtYXNr X2FueV9idXQoY3B1X29ubGluZV9tYXNrLCBjcHUpOw0KPj4gKwlpZiAodGFyZ2V0ID49IG5yX2Nw dV9pZHMpDQo+PiArCQlyZXR1cm4gMDsNCj4+ICsNCj4+ICsJcGVyZl9wbXVfbWlncmF0ZV9jb250 ZXh0KCZwbXUtPnBtdSwgY3B1LCB0YXJnZXQpOw0KPj4gKwlwbXUtPmNwdSA9IHRhcmdldDsNCj4+ ICsNCj4+ICsJcmV0dXJuIDA7DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBpbnQgX19pbml0IHRh ZF9wbXVfaW5pdCh2b2lkKQ0KPj4gK3sNCj4+ICsJaW50IHJldDsNCj4+ICsNCj4+ICsJcmV0ID0g Y3B1aHBfc2V0dXBfc3RhdGVfbXVsdGkoQ1BVSFBfQVBfT05MSU5FX0RZTiwNCj4+ICsJCQkJICAg ICAgInBlcmYvY24xMGsvdGFkcG11Om9ubGluZSIsDQo+PiArCQkJCSAgICAgIE5VTEwsDQo+PiAr CQkJCSAgICAgIHRhZF9wbXVfb2ZmbGluZV9jcHUpOw0KPg0KPj4gKwlpZiAocmV0IDwgMCkNCj4+ ICsJCXJldHVybiByZXQ7DQo+PiArCXRhZF9wbXVfY3B1aHBfc3RhdGUgPSByZXQ7DQo+PiArCXJl dHVybiBwbGF0Zm9ybV9kcml2ZXJfcmVnaXN0ZXIoJnRhZF9wbXVfZHJpdmVyKTsNCj4+ICt9DQo+ PiArDQo+PiArc3RhdGljIHZvaWQgX19leGl0IHRhZF9wbXVfZXhpdCh2b2lkKSB7DQo+PiArCXBs YXRmb3JtX2RyaXZlcl91bnJlZ2lzdGVyKCZ0YWRfcG11X2RyaXZlcik7DQo+PiArCWNwdWhwX3Jl bW92ZV9tdWx0aV9zdGF0ZSh0YWRfcG11X2NwdWhwX3N0YXRlKTsNCj4+ICt9DQo+PiArDQo+PiAr bW9kdWxlX2luaXQodGFkX3BtdV9pbml0KTsNCj4+ICttb2R1bGVfZXhpdCh0YWRfcG11X2V4aXQp Ow0KPj4gKw0KPj4gK01PRFVMRV9ERVNDUklQVElPTigiTWFydmVsbCBDTjEwSyBMTEMtVEFEIFBl cmYgZHJpdmVyIik7DQo+PiArTU9EVUxFX0FVVEhPUigiQmhhc2thcmEgQnVkaXJlZGxhIDxiYnVk aXJlZGxhQG1hcnZlbGwuY29tPiIpOw0KPj4gK01PRFVMRV9MSUNFTlNFKCJHUEwgdjIiKTsNCj4+ DQo=