Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1334391pxb; Wed, 3 Nov 2021 23:53:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzJ5quGKKLb3FibdU5j3fi74V074yKPcRedcZP5CC/Jnf9MoLAe9cRGeP6sw6k2Oj7Flrxz X-Received: by 2002:a92:3642:: with SMTP id d2mr33878650ilf.91.1636008829114; Wed, 03 Nov 2021 23:53:49 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1636008829; cv=pass; d=google.com; s=arc-20160816; b=Q1JCr64E4m74fsiF9ck8j8emP5RCWpB4o7/wAk5dCvH9Gaw6rBmqJxkkDN1GwLpMeb FOQLQ/qBOZl8tYB3v+c7UTTqKaDxKi7Hkmf+UcB4NiLMiuJxMYrcL+oiRreMPwWGbseq OuAA2iyOqLOIcfOzaVt2xkaKVp1sw5q/ACQEoYTgZJbwAw+G+qKBH46NcGAGE7P2vb19 2kKBKLFARu5lZzZV7lXoDUUL5qND6SjaN1GW7L2oVnCiWfjzHPwbnZGOXoqPTse8wvXq AZ2J+f0qCI6UktEBYHvWKEJRIJhHXlggGB4SsYm6EFdK9eXS+zB6kA1terzKS7hoBxLp 9QqA== 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=GIcLm3TeCAhSHMTt+Z9KqzB2bFNtSryRcm7I5ZeOlu4=; b=SVqW0jpu/9CS20+2z210DE5w+DVert0wQGSDC5JCqdPu/eOrU3he6fxTJH2brj4X6V p9vAZv8W5nEm7OgbfKcUwTrfmfyTimMwgyh6b8V5Uo2/sh3CxSKMQH7Bz+7FlV68ZUsC NYIsm7d3Rnhqm/kNf1mq+U7/ySomHikX8jFZSlNfvYXTD1Ryl5BYZ5wqR+g9Dvz+TAcq MyfIyEPomIRQfadMFr7/u8FGTdYHP0Sc2s/Qeka0Rz76FkChUHGqB66UfMavMNY9OiYN n+xg0ISAU358VcMn3lirGWZ1JQcNlPoLDaoZjJO9AkW015hKjHdWf1/6qABPODkp6lhG zgAQ== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@towerbridgetechnology.onmicrosoft.com header.s=selector2-towerbridgetechnology-onmicrosoft-com header.b="EFxUMN/C"; arc=pass (i=1 spf=pass spfdomain=bayhubtech.com dkim=pass dkdomain=bayhubtech.com dmarc=pass fromdomain=bayhubtech.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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id t14si500061jag.43.2021.11.03.23.53.36; Wed, 03 Nov 2021 23:53:49 -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=@towerbridgetechnology.onmicrosoft.com header.s=selector2-towerbridgetechnology-onmicrosoft-com header.b="EFxUMN/C"; arc=pass (i=1 spf=pass spfdomain=bayhubtech.com dkim=pass dkdomain=bayhubtech.com dmarc=pass fromdomain=bayhubtech.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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230390AbhKDGyY (ORCPT + 99 others); Thu, 4 Nov 2021 02:54:24 -0400 Received: from mail-mw2nam10on2138.outbound.protection.outlook.com ([40.107.94.138]:47713 "EHLO NAM10-MW2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S230087AbhKDGyV (ORCPT ); Thu, 4 Nov 2021 02:54:21 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GTZoNiZaQnr7UK61vReftj5K8ZJvnS6fXxnIxV68cXnBUNkha8Abja7huOiGRO6DOxWjqNR3hirpxaEae3+RWRzQVP1DGXo9Rc3TzRydbnLIgy62heGBQzKtvGlA9U+g8r077+OhhhX4yEQzKGrk/nQiROQPatWe2VOSbbv2RuBKcLG0Lk8sFUlq2GwGuFyyi9oLOXbZ1UWCKBZU3uaXtjwezgcc5U8m3X5zv7oPprMuJty5T1tdcJh0/fSOFOGb7vpuIITncCOYFG7/WFPzSPZ48qTeFzHBXhrAaDI7vbF2HrL4uPkp46Fw2M3jRRAkTqSOS9gfEdOwyxYD1jRDtA== 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=GIcLm3TeCAhSHMTt+Z9KqzB2bFNtSryRcm7I5ZeOlu4=; b=nO1lDYiWtjiLSjqXdvnmU/FvcFfjM+Q8TnTZvqwcWKmAC9j7vFbQmYyHcTMN2NHYLfiNxJGvwVAmgc5DiK3w42a/zqEeOldhxS9FkF14zLm/dim5t4xmTh4ZhfVYZWdOjlIgOgRb91gPqOaKuJkrnCUk79Yy9xjOEmDSra5tlLIWLfoZeobwsFhU63WXN/VnSJEJoxUmeXfkbQDe2F+rDYFWvlM/F1lPBUPRvH+TLhFMFxemfxqsfNC7y6wQV8YErExeXmVNUrhtCvYjTrrTWdnuVKf7USbJgAIkyRjegeJbLvWTVhqK9H8Q5WkS7Ju1TE9W+Fijruzch4DQ2S+ltw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=bayhubtech.com; dmarc=pass action=none header.from=bayhubtech.com; dkim=pass header.d=bayhubtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=towerbridgetechnology.onmicrosoft.com; s=selector2-towerbridgetechnology-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GIcLm3TeCAhSHMTt+Z9KqzB2bFNtSryRcm7I5ZeOlu4=; b=EFxUMN/CTKOWfEpHpfKShylALC1ngVIUSXbDo7KqnNEq8RHdT/0T4fWd1R3L0/YJYKXxKx+C0RHuwOZUe4Y6D4hhbtcMoUfOj9Ix70d633CYGxT617ArNdKSXe1mYVw/UEYiSNJi+HMA51C31c7nyliAFFBPqKGIrgLk1SNO0KM= Received: from PH0PR16MB4248.namprd16.prod.outlook.com (2603:10b6:510:4c::16) by PH0PR16MB4053.namprd16.prod.outlook.com (2603:10b6:510:5d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4669.11; Thu, 4 Nov 2021 06:51:39 +0000 Received: from PH0PR16MB4248.namprd16.prod.outlook.com ([fe80::18e6:e8c0:ec12:8726]) by PH0PR16MB4248.namprd16.prod.outlook.com ([fe80::18e6:e8c0:ec12:8726%9]) with mapi id 15.20.4669.011; Thu, 4 Nov 2021 06:51:39 +0000 From: "Chevron Li (WH)" To: Bjorn Andersson CC: "agross@kernel.org" , "linux-arm-msm@vger.kernel.org" , "linux-kernel@vger.kernel.org" , "Shaper Liu (WH)" , "XiaoGuang Yu (WH)" , "Shirley Her(SC)" Subject: =?gb2312?B?u9i4tDogW1BBVENIIFYxIDEvMV1tbWM6c2RoY2ktYmF5aHViOmZpeCBRdWFs?= =?gb2312?Q?comm_sd_host_845_SD_card_compatibility_issue?= Thread-Topic: [PATCH V1 1/1]mmc:sdhci-bayhub:fix Qualcomm sd host 845 SD card compatibility issue Thread-Index: AQHXg9gpHl9njd3k+kKHKpSWWi5CaKt82IGAgA8p+3CAZ4WqIA== Date: Thu, 4 Nov 2021 06:51:39 +0000 Message-ID: References: <20210728174357.21400-1-chevron.li@bayhubtech.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: linaro.org; dkim=none (message not signed) header.d=none;linaro.org; dmarc=none action=none header.from=bayhubtech.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2781e91a-5953-4718-9817-08d99f5f8db7 x-ms-traffictypediagnostic: PH0PR16MB4053: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yAtJC8VwapkqGfWW/4ERv6rODwTvGjCKYl0t1FnhUFDbFwqmblgf7MR2A37tk22RcP0OF67NkUAzywWuCopb5yiGjpQs+HOvL9LuIgRGqGalui+fkhyha2TwyCSxvD2Mhzs+YU/NahAvxNbwbbAWS8bdRTqIpBLp7dl3TZ2n/v/KdGPdj2NeadGbC8EanrwYyfi77kubua2BZOTIhbJWFazBoaTuXpIfkiEKqoFIPtRBnmL1Jf1Y/rzioUlr7rjj4hmhsp5FacHYCGq+M7K3wYtfRCiyBNYWycRLkxQAKR+34uiPCUgC6E6EJ/83e4OXBKj+zYy5Nu1B5I6u3lIBFqrmvhM6lYTD9LnbEntk/r06+JtWsfsgR8zLAfHcI7zAykWH1eaJuAwEUBW3pduH0idJEokPI7LbWucWAJdW27YmgthO1tpsnid65QZ1WC1191c2dW5jL2a2Or4EXh2TQ9hReHgUyOLL0NH4F8jPf/1ZxMR+leIO1J5XoY71O8d2L/NyqPGQOAezjaPfkKrHCMH3tym4wMk71udR3mD+S+NXSi04mvHm6xJU961M1GzkHpqEpNVy2GZlWF+PWLnhV5hX636SaFuQeGKd6VKbDu4rPJgzadMlBwpUrh4Hfk/3curlo6pj+kylL8WGHmVtCMGPKgjM2roVRvqLh8gV5rVpUe4Knk1AAnhkDwvwmzXk28PyJDj2NXWJI7LCwrYTns0c6HGSXoevkMNxuF+ovTU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR16MB4248.namprd16.prod.outlook.com;PTR:;CAT:NONE;SFS:(39830400003)(346002)(396003)(136003)(376002)(366004)(38070700005)(86362001)(9686003)(26005)(55016002)(122000001)(186003)(38100700002)(54906003)(33656002)(8936002)(52536014)(316002)(7696005)(71200400001)(6506007)(64756008)(66446008)(508600001)(107886003)(66946007)(6916009)(76116006)(83380400001)(5660300002)(224303003)(4326008)(66476007)(66556008)(2906002)(30864003)(2004002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?gb2312?B?Sm9jNGRDdzR0RXIwUTUzSG1rdmtXeXh2TXZLTkczSXlmR3hRME9zckFEaHVO?= =?gb2312?B?eUhSbG5wMVNRdlc0dGZZdksweXlIVVZiTGlXRzIzcUtQOGVYTzRMYThXdW5V?= =?gb2312?B?bzdzOWFTRGhvYXN1dUlrTzhsM3FiNk5rNVNGeTl3Y1dYd1N4ZGdtcm5TQ25N?= =?gb2312?B?dytJWnhtVFBsUzZBNUFxUUlzQSsrRzBMdGZQWEZma1NCa2ZRVGhDTFd4VHhi?= =?gb2312?B?aEtvWmloVTErQVA1SG5NYVFmb1RsdHpDeFdxUTBhdldjNytqV2VJbUU0Z3lD?= =?gb2312?B?VDZhdmZZZlM4Nm80WHVxejZLaHZzZXNSU3R3MDRuUnhCTVVhbUxPMlU0Qi9S?= =?gb2312?B?UVFvcEtqemh3VnpSOWVUYkYram9OUFlwQVUrSk51ODVkRk5DblFDV0JxRWhP?= =?gb2312?B?Q1NvdWtTNXFxU1diV295N3NlNm80bkNHMjdiQTBTU3VSVTVsWVgvdXo1R012?= =?gb2312?B?bE9IcU5pWndkSWtZaTZ2YzR4MjF2MlVETm8zMU9ZQm9sdXhxaS9TUFhMNXJH?= =?gb2312?B?SjhvYWRzNFAvNVJudmcvUkxjRFFHbURhcXNoUlhKQVh3V01kRE5SQm5YVUlh?= =?gb2312?B?SWs1RWFvbjQrd3VGOTR4aXhTQ2JFOVRBQW1TRFFZM1ZLcWIwYXpjM1djdGlD?= =?gb2312?B?c29MaG1XenFYM3JxQk1QUmpXWTdERHdDS3phUVpwY2xXL0thV2JzU2VvOTI5?= =?gb2312?B?REVBcitaNDdGQ1lBT0lnTUNsNjFzTERqeUpxck4zSTZLdi83ZFpyZ2Z6eU9I?= =?gb2312?B?Yjd3SkpseXRGQjFlL2E2R3RaRFF3d3o4Snc3QmFqWkdOZ2ZQRFNuKzNENENz?= =?gb2312?B?RGxRY2Fua2xkQ0IxSWhXWlgxMC8xWGpoTmlYVUQxbVl0TWVsRFZkS0pFaHFx?= =?gb2312?B?OHVUaDRRMXE4VU1RNFBWRDk5WXIwVmxabG5uMzI2bklWR3ZHeUVCc3FxSXd5?= =?gb2312?B?VndUSXRUcjgvZm4vUUFiWnhNaWdPTzk5SUVHMEZuVTF1ZFJySDJlWjVlWk8v?= =?gb2312?B?RjNoT09CRmM1NkpuV3I4SFRjaTdCVDU0UkFIbHFpclBUSkwxRUQxZnBxQ2dF?= =?gb2312?B?N0gzSmdXYkhiMFVUOTEwUkdOT29IYjJoMVVBbXRhTGJneGxhbGh4a2cza3NV?= =?gb2312?B?VXlrWGhiSUZwYytrVHl4UXBCc2F5bmFqU0JDblc3bWlpVVArTWxqRmtXSUVl?= =?gb2312?B?ZFU4NGhuQm1QN1YxTUd1cUxlc05tbmRIYzJTeCtrd2FFbkpHYjNqcUpseUN2?= =?gb2312?B?SzZYQUpUQitsTE9ieVB5NmJhMU9maWpNdjRPcG1VaTJSTWFlb0Z3NHZmYzhS?= =?gb2312?B?YWV4L2hvcWVJTnpOTCs5WG5JSlQyMmZqaHRxbi9aencyb0p5Y0FrdVltNy9O?= =?gb2312?B?czVCMVBQU0xNMHNqVWNmc3JHVzdSL2lsUGNCcTBvOHdEcWVkZmlLTlZrVzE2?= =?gb2312?B?THd3MU5sUWkwWVBGY3VIblRJYXEzbFhFQXMreVk5eWp4dHdaNlN1RHJxNnpP?= =?gb2312?B?MEFRRkUxZi9lUldDV1JqT0d0WFpIZ3hpbHZEMmt2eVdoZXdrQnh3SnExN01Z?= =?gb2312?B?TEJENnhmUDNrRmxrUG1IajFNVEdDT2FkR1oxejhOVFc2R1NyTUtYSHliaktN?= =?gb2312?B?QzdvbEFVb3cyc0dmQ2NjZUc0K0NxNmFOQkJqeWxZTGlaSzJsOUJLaUVJdlE3?= =?gb2312?B?djZGemk1SmxrOEZHMTRtQlNRUFc0V04vVFVTZ3gxSVV0NXJUZHZHT1ptQ3lB?= =?gb2312?B?Z1JnRnFKY2RnSXowVkFUWDM0RkZUTW1EWWZ4cUwyaXhUenMyWVMzV2pMeGk0?= =?gb2312?B?a3VLc0s4N3Q2N3M5Y245TjFIL2Fta2d6enN6RCs0eEQwaU12SHA0NGxRZmpW?= =?gb2312?B?ZHk4dDRVRndPZU41eTQxZ2hMdGNLaDExQXF0ekowdHJaQVB5THRFcDhwVmpR?= =?gb2312?B?cG9uMXgrc3diM2IvOWtZY1dEek5xVGkrSG9iYS9vYWhRbWZsZ3BwSWpyVGNv?= =?gb2312?B?VE1lc0t4QnMzOUVTeTE0M0xIR0lWSWtJVm90VlU3alNCMmJDc3VKUjNEVEcw?= =?gb2312?B?am55SDJMOFdya0d5T1BQYUpRcHNhbG5Wc2M4cnh1VG14TFFOQW1qcEd3OGNz?= =?gb2312?B?QWliSE1ETjg1MThqN1o1TXFHUEcwVkhrK1VhbXN0QUVrL1UxQkJuQ3pkbU1q?= =?gb2312?B?cXJMRE1NOWo5MkpkTDljOVFSeXh0TUorTjFybnR4S0QxVEhxcWRXNWwvWTBj?= =?gb2312?B?MkZwRlU1VVlpOHhaMDMxcTVHSnhBPT0=?= Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: bayhubtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PH0PR16MB4248.namprd16.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2781e91a-5953-4718-9817-08d99f5f8db7 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Nov 2021 06:51:39.6431 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 0a7aae2b-8f2e-44df-ba2f-42de7f93c642 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: HsPL4HtKyVQI4SRJdhyLLf7IUiAsuZBnh2fU92fWeI1h++KaiMyeE3wg0IpKY1/nQ+1P/nc2cPTh/8xBWk8SlNSDFtlKG38yvv9yRS45N70= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR16MB4053 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGksIEJqb3JuLA0KDQpFeGN1c2UgbWUuDQpIYXZlIHlvdSBjaGVja2VkIG91ciBmZWVkYmFjayB5 ZXQ/DQpJZiB0aGVyZSBhcmUgb3RoZXIgcG9pbnRzIG5lZWQgdG8gYmUgbm90aWNlZCBhdCBWMiBi ZXNpZGVzIHlvdXIgYWR2aWNlPw0KDQpMb29rIGZvcndhcmQgdG8geW91ciByZXBseS4NCg0KQlIs DQpDaGV2cm9uDQoNCi0tLS0t08q8/tStvP4tLS0tLQ0Kt6K8/sjLOiBDaGV2cm9uIExpIChXSCkg DQq3osvNyrG85DogTW9uZGF5LCBBdWd1c3QgMzAsIDIwMjEgMjA6MTUNCsrVvP7IyzogQmpvcm4g QW5kZXJzc29uIDxiam9ybi5hbmRlcnNzb25AbGluYXJvLm9yZz4NCrOty806IGFncm9zc0BrZXJu ZWwub3JnOyBsaW51eC1hcm0tbXNtQHZnZXIua2VybmVsLm9yZzsgbGludXgta2VybmVsQHZnZXIu a2VybmVsLm9yZzsgU2hhcGVyIExpdSAoV0gpIDxzaGFwZXIubGl1QGJheWh1YnRlY2guY29tPjsg WGlhb2d1YW5nIFl1IChXSCkgPHhpYW9ndWFuZy55dUBiYXlodWJ0ZWNoLmNvbT47IFNoaXJsZXkg SGVyIChTQykgPHNoaXJsZXkuaGVyQGJheWh1YnRlY2guY29tPg0K1vfM4jogu9i4tDogW1BBVENI IFYxIDEvMV1tbWM6c2RoY2ktYmF5aHViOmZpeCBRdWFsY29tbSBzZCBob3N0IDg0NSBTRCBjYXJk IGNvbXBhdGliaWxpdHkgaXNzdWUNCg0KSGksIEJqb3JuLA0KDQpUaGFua3MgZm9yIHlvdXIgZ2Vu ZXJvdXMgYWR2aWNlLg0KSSBoYXZlIGFuc3dlcmVkIHlvdXIgcXVlc3Rpb25zIGVtYmVkZGVkLg0K SWYgdGhlcmUgYXJlIG5vIHByb2JsZW0sIEkgd2lsbCBjb21lIG91dCB0aGUgVjIgYXMgeW91ciBh ZHZpY2UuDQoNClRoYW5rIHlvdSBmb3IgeW91ciBwYXRpZW50IGFnYWluIQ0KDQpCUiwNCkNoZXZy b24gDQoNCj4gLS0tLS3Tyrz+1K28/i0tLS0tDQo+ILeivP7IyzogQmpvcm4gQW5kZXJzc29uIDxi am9ybi5hbmRlcnNzb25AbGluYXJvLm9yZz4NCj4gt6LLzcqxvOQ6IFNhdHVyZGF5LCBBdWd1c3Qg MjEsIDIwMjEgMjoyMQ0KPiDK1bz+yMs6IENoZXZyb24gTGkgKFdIKSA8Y2hldnJvbi5saUBiYXlo dWJ0ZWNoLmNvbT4NCj4gs63LzTogYWdyb3NzQGtlcm5lbC5vcmc7IGxpbnV4LWFybS1tc21Admdl ci5rZXJuZWwub3JnOyBsaW51eC0gDQo+IGtlcm5lbEB2Z2VyLmtlcm5lbC5vcmc7IFNoYXBlciBM aXUgKFdIKSA8c2hhcGVyLmxpdUBiYXlodWJ0ZWNoLmNvbT47IA0KPiBYaWFvZ3VhbmcgWXUgKFdI KSA8eGlhb2d1YW5nLnl1QGJheWh1YnRlY2guY29tPjsgU2hpcmxleSBIZXIgKFNDKSANCj4gPHNo aXJsZXkuaGVyQGJheWh1YnRlY2guY29tPg0KPiDW98ziOiBSZTogW1BBVENIIFYxIDEvMV1tbWM6 c2RoY2ktYmF5aHViOmZpeCBRdWFsY29tbSBzZCBob3N0IDg0NSBTRCANCj4gY2FyZCBjb21wYXRp YmlsaXR5IGlzc3VlDQo+IA0KPiBPbiBXZWQgMjggSnVsIDEwOjQzIFBEVCAyMDIxLCBjaGV2cm9u IHdyb3RlOg0KPiANCj4gPiBJbXByb3ZlIHRoZSBzaWduYWwgaW50ZWdyaXR5IGZvciBsb25nIFNE IGJ1cyB0cmFjZSBieSB1c2luZyANCj4gPiA4NDUrQkgyMDEgU0QgaG9zdCByZWRyaXZlciBjaGlw DQo+ID4NCj4gDQo+IFRoaXMgaXMgYSBsYXJnZSBwYXRjaCB3aXRoIGEgdmVyeSBzaG9ydCBjb21t aXQgbWVzc2FnZSwgd2hpY2ggbGlrZWx5IA0KPiBpcyB0aGUgcmVhc29uIHdoeSB5b3UndmUgbm90 IGdvdHRlbiBhbnkgcmV2aWV3cy4NCj4gDQpZZXMsIEknbSBhIGZyZXNobWFuIGZvciB0aGUgcGF0 Y2ggc3VibWlzc2lvbi4gVGhhbmtzIGZvciB5b3VyIHBhdGllbnQgcmV2aWV3IQ0KDQo+IFdoYXQg aXMgdGhpcyBoYXJkd2FyZT8gVGhlIGNvbW1pdCBtZXNzYWdlIGdpdmVzIG1lIGEgZmVlbGluZyB0 aGF0IHRoZQ0KPiBCSDIwMSBpcyBhbiBleHRlcm5hbCByZWRyaXZlciB0aGF0IGhhcyBiZWVuIHBh aXJlZCB3aXRoIHRoZSBTRE04NDUgDQo+IHNvbWV0aW1lcz8NCj4gDQpUaGUgaGFyZHdhcmUgaXMg R0dDKGNoaXAgbmFtZSksIGFuZCB0aGlzIHByb2plY3QgbmFtZSBpcyBCSDIwMS4gDQpHR0MgaXMg YSBTRCBidXMgc2lnbmFsIHJlLXRpbWluZyBJQyB0aGF0IGhhcyBiZWVuIHBhaXJlZCB3aXRoIHRo ZSBTRE04NDUgc29tZXRpbWVzLg0KDQo+IFBsZWFzZSBkZXNjcmliZSBwcm9wZXJseSBob3cgdGhl IGhhcmR3YXJlIHNldHVwIGxvb2tzIGxpa2UuDQo+IA0KQXNzaWduIHJlc291cmNlIGZvciBHR0Mg Y2hpcCBkdXJpbmcgUXVhbGNvbW0gaG9zdCBwcm9iZToNCjEuIEdHQyBzdHJ1Y3R1cmUgaW5pdGlh bGl6YXRpb24NCjIuIEdHQyBHUElPIHJlc291cmNlIGFwcGx5DQozLiBJbXBsZW1lbnQgR0dDIGNo aXAgc3BlY2lhbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiB3aXRoICJob3N0LT5tbWNfaG9zdF9v cHMuaW5pdF9jYXJkIiBjYWxsYmFjay4NCjQuIFJlbG9hZCBob3N0LT5tbWMtPmRldGVjdCB3aXRo IEdHQyBjaGlwIHNwZWNpYWwgaW5pdGlhdGlvbiBmbG93Lg0KICAgIEdHQyBjaGlwIHNwZWNpYWwg aW5pdGlhdGlvbiBmbG93IG1hdGNoIHdpdGggU0Qgc3BlYywgYnV0IG5vdCBtYXRjaCB3aXRoIGN1 cnJlbnQgU0QgaW5pdGlhbGl6YXRpb24gZmxvdyBvZiBMaW51eC4NCiAgICBJdCdzIG5vdCBuZWNl c3NhcnkgaWYgd2UgY2FuIHBhdGNoIHRoZSBjb2RlIGF0IHNkLmMuDQo1LiBSZWxvYWQgdGhlIGhv c3QtPm1tY19ob3N0X29wcy5leGVjdXRlX3R1bmluZyB3aXRoIEdHQyBjaGlwIHNwZWNpYWwgdHVu aW5nIGZsb3cuDQoNClRoZSBrZXkgcG9pbnRzIGFyZSBpbml0aWFsaXplZCBHR0MgY2hpcCBkdXJp bmcgU0QgaW5pdGlhbGl6YXRpb24gYW5kIHVzZSBHR0Mgc3BlY2lhbCB0dW5pbmcgZmxvdyB0byBy ZS10aW1pbmcgU0QgYnVzIHNpZ25hbC4NCg0KPiANCj4gSSBkaWQgc2tpbSB0aHJvdWdoIHRoZSBw YXRjaCB0cnlpbmcgdG8gZmlndXJlIG91dCB3aGF0IHlvdSdyZSBkb2luZyANCj4gYW5kIGdhdmUg eW91IHNvbWUgZmVlZGJhY2sgYmVsb3csIGJ1dCB0aGlzIGlzIGZhciBmcm9tIGEgY29tcGxldGUg cmV2aWV3Lg0KPiBBbmQgbWFueSBvZiB0aGUgdGhpbmdzIEkgcG9pbnQgb3V0IHJlcGVhdHMgdGhy b3VnaG91dCB0aGUgcGF0Y2guDQo+IA0KPiBJIHRoaW5rIHRoZSBmaXJzdCBzdGVwIGlzIHRvIGZp Z3VyZSBvdXQgd2hhdCB0aGlzIGlzIGFuZCBpZiB5b3VyIA0KPiBkZXNpZ24gaXMgdGhlIHJpZ2h0 IG9uZS4uLg0KPiANClllcywgYWJzb2x1dGVseSBhZ3JlZSwgdGhhbmtzIGZvciB5b3VyIHBhdGll bnQgYWdhaW4uDQpUaGUgZnVuY3Rpb24gb2YgdGhlIHBhdGNoIGlzIGFscmVhZHkgdmVyaWZpZWQg b24gQ2hyb21lIE9TLCBhbmQgR29vZ2xlIHJlcXVlc3QgdXMgdG8gc3VibWl0IHRoZSBwYXRjaCB0 byBMaW51eC4NCg0KPiA+IFNpZ25lZC1vZmYtYnk6IGNoZXZyb24ubGkgPGNoZXZyb24ubGlAYmF5 aHVidGVjaC5jb20+DQo+IA0KPiBJcyB5b3VyIG5hbWUgcmVhbGx5IGNoZXZyb24ubGk/IFBlcmhh cHMgQ2hldnJvbiBMaT8NCj4gDQpZZXMsIHRoYW5rcyBmb3IgeW91ciBhZHZpY2UuDQoNCj4gPiAt LS0NCj4gPiBjaGFuZ2UgaW4gVjE6DQo+IA0KPiBJJ20gbm90IGFibGUgdG8gZmluZCB2MCwgY2Fu IHlvdSBwb2ludCBtZSB0byBpdCwgYmVjYXVzZSBJIHdvdWxkIGxpa2UgDQo+IHRvIHVuZGVyc3Rh bmQgd2h5IHRoZXNlIGNoYW5nZXMgd2FzIG1hZGU6DQo+IA0KU29ycnkgdG8gY29uZnVzZSB5b3Us IHRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHZlcnNpb24sIHlvdSBjYW4gdGhpbmsgaXQgYXMgVjAu DQoNCj4gPiAxLiBjb3B5IFF1YWxjb21tIGRyaXZlciBiYXNlIGZyb20gc2RoY2ktbXNtLmMgdG8g c2RoY2ktYmF5aHViLmMNCj4gDQo+IFdoeSBkbyB3ZSBuZWVkIHRvIGR1cGxpY2F0ZSBhbGwgdGhp cyBjb2RlLg0KPiANCjEuIEdHQyBpcyBhIFNEIGJ1cyBzaWduYWwgcmUtdGltaW5nIElDLCBoYXMg bm8gdmVuZG9yIElELCAgYW5kIG5lZWQgdG8gd29yayB3aXRoIHNkIGhvc3QgSUMgdG9nZXRoZXIu DQoyLiBRdWFsY29tbSBlbmdpbmVlciBkb2VzbqGvdCBhbGxvdyB1cyB0byBhZGQgY29kZSBpbnRv IHRoZWlyIHNvdXJjZSBjb2RlIGZpbGUuDQozLiBXZSB3aWxsIHJlbW92ZSB0aGUgdW51c2VkIGNv ZGUgb2YgUXVhbGNvbW0gbmV4dCB2ZXJzaW9uLg0KNC4gV2UgYWxzbyBjb3B5IHNvbWUgY29kZXMg ZnJvbSBjb3JlIGZvbGRlciB0byBpbXBsZW1lbnQgR0dDIGNoaXAgaW5pdGlhbGl6YXRpb24uIEl0 IG1hdGNoZXMgd2l0aCBTRCBob3N0IHNwZWMsIGJ1dCBkb26hr3QgbWF0Y2ggd2l0aCBjdXJyZW50 IHNkIGluaXRpYWxhemF0aW9uIGZsb3cuDQpLZXkgcG9pbnRzIGFzIGJlbG93Og0KICA0LjEgQnVz IHdpZHRoIHN3aXRjaCBzaG91bGQgYXQgZnJvbnQgb2YgdHJhbnNmZXIgbW9kZSBzd2l0Y2ggZHVy aW5nIG1vZGUgc3dpdGNoIHN0YWdlDQogIDQuMiBBQ01ENDIgc2hvdWxkIGJlIGFkZGVkIGJldHdl ZW4gQnVzIHdpZHRoIHN3aXRjaCBhbmQgdHJhbnNmZXIgbW9kZSBzd2l0Y2gNCiAgNC4zIElmIGFi b3ZlIHR3byBwb2ludHMgY2FuIGJlIHBhdGNoZWQgdG8gc2QuYyBkaXJlY3RseSwgd2UgY2FuIGRl Y3JlYXNlIG11Y2ggcmVkdW5kYW50IGNvZGUuDQoNCj4gPiAyLiBpbXBsZW1lbnQgdGhlIEJIMjAx IGNoaXAgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYXQgDQo+ID4gc2RoY2ktYmF5aHViLmMNCj4g DQo+IFN1Ym1pdHRpbmcgdGhpcyBhcyBhIGxhcmdlICJjb3B5IHNkaGNpLW1zbSBhbmQgaW1wbGVt ZW50IEJIMjAxIiBtYWtlcyANCj4gaXQgaW1wb3NzaWJsZSB0byBmaWd1cmUgb3V0IHdoYXQgdGhl IEJIMjAxIHNwZWNpZmljIHBpZWNlcyAodGhhdCBuZWVkcyANCj4gdGhlDQo+IHJldmlldykgYXJl Lg0KPiANCklmIHdlIG5lZWQgdG8gc3VibWl0IEJIMjAxIGNoaXAgaW5pdGlhbGl6YXRpb24gZnVu Y3Rpb24gd2l0aCBhbiBpbmRlcGVuZGVudCBwYXRjaD8NCklmIHllcywgSSB3aWxsIGRvIGl0IGF0 IG5leHQgdmVyc2lvbi4NCg0KPiA+IDMuIGltcGxlbWVudCB0aGUgQkgyMDEgY2hpcCBwb3dlciBj b250cm9sIGZ1bmN0aW9uIGF0IHNkaGNpLWJheWh1Yi5jIA0KPiA+IDQuIGltcGxlbWVudCB0aGUg QkgyMDEgY2hpcCB0dW5pbmcgZnVuY3Rpb24gYXQgc2RoY2ktYmF5aHViLmMgNS4NCj4gPiByZS1p bXBsZW1lbnQgbW1jX3Jlc2NhbiB0byBtYXRjaCBCSDIwMSBtb2RlIHN3aXRjaCBmbG93IGF0IA0K PiA+IHNkaGNpLWJheWh1Yi5jDQo+IA0KPiBJZiB0aGlzIGlzIGFuIGV4dGVybmFsIHJlZHJpdmVy LCBjYW4gdGhpcyBiZSBwYWlyZWQgd2l0aCBhbnkgb3RoZXIgDQo+IFNESENJIGNvbnRyb2xsZXI/ DQo+IA0KMS4gR0dDIGlzIGEgU0QgYnVzIHNpZ25hbCByZS10aW1pbmcgSUMsIGNhbiB3b3JrIHdp dGggYW55IG90aGVyIHN0YW5kYXJkIFNESENJIGNvbnRyb2xsZXIgdG8gaW1wcm92ZSBTRCBzaWdu YWwgU0kgYW5kIFRpbWluZywgc3BlY2lhbGx5IHVzZWQgYXQgaGlnaC1zcGVlZCBTRCBtb2RlKGV4 LiBTRFIxMDQpIGFuZCBsb25nIHdpcmVzIG9mIFNEIHNpZ25hbHMuIA0KMi4gV2UgY29vcGVyYXRl ZCB3aXRoIEludGVsL1F1YWxjb21tL01USy9TUFJEIHNkIGhvc3QgYWxyZWFkeS4NCg0KPiA+IC0t LQ0KPiA+IC0tLQ0KPiBbLi5dDQo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbW1jL2hvc3Qvc2Ro Y2ktYmF5aHViLmMgDQo+ID4gYi9kcml2ZXJzL21tYy9ob3N0L3NkaGNpLWJheWh1Yi5jIG5ldyBm aWxlIG1vZGUgMTAwNjQ0IGluZGV4DQo+ID4gMDAwMDAwMDAwMDAwLi43NTAyOTQ3MGJkMjINCj4g PiAtLS0gL2Rldi9udWxsDQo+ID4gKysrIGIvZHJpdmVycy9tbWMvaG9zdC9zZGhjaS1iYXlodWIu Yw0KPiA+IEBAIC0wLDAgKzEsNjU2MyBAQA0KPiA+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogR1BMLTIuMC1vbmx5DQo+ID4gKy8qDQo+ID4gKyAqIEJheWh1YiBUZWNobm9sb2dpZXMsIElu Yy4gQkgyMDEgU0RIQ0kgYnJpZGdlIElDIGZvcg0KPiA+ICsgKiBWRU5ET1IgU0RIQ0kgcGxhdGZv cm0gZHJpdmVyIHNvdXJjZSBmaWxlDQo+ID4gKyAqDQo+ID4gKyAqIENvcHlyaWdodCAoYykgMjAx Mi0yMDE4LCBUaGUgTGludXggRm91bmRhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiAr ICoNCj4gPiArICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vciANCj4gPiArbW9kaWZ5DQo+ID4gKyAqIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIA0KPiA+ICthbmQN Cj4gPiArICogb25seSB2ZXJzaW9uIDIgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24uDQo+ID4gKyAqDQo+ID4gKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRl ZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPiA+ICsgKiBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KPiA+ ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlDQo+ID4gKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuDQo+IA0KPiBUaGUgU1BEWCBoZWFkZXIgY292ZXJzIHRoaXMsIHNvIGRvbid0IHJlcGVh dCB0aGUgbGljZW5zZSB0ZXh0IGhlcmUuDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNl Lg0KDQo+ID4gKyAqLw0KPiA+ICsNCj4gPiArI2luY2x1ZGUgPGxpbnV4L21vZHVsZS5oPg0KPiA+ ICsjaW5jbHVkZSA8bGludXgvb2ZfZGV2aWNlLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9kZWxh eS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvbW1jL21tYy5oPg0KPiA+ICsjaW5jbHVkZSA8bGlu dXgvcG1fcnVudGltZS5oPg0KPiA+ICsjaW5jbHVkZSA8bGludXgvcG1fb3BwLmg+DQo+ID4gKyNp bmNsdWRlIDxsaW51eC9zbGFiLmg+DQo+ID4gKyNpbmNsdWRlIDxsaW51eC9pb3BvbGwuaD4NCj4g PiArI2luY2x1ZGUgPGxpbnV4L3JlZ3VsYXRvci9jb25zdW1lci5oPiAjaW5jbHVkZSANCj4gPiAr PGxpbnV4L2ludGVyY29ubmVjdC5oPiAjaW5jbHVkZSA8bGludXgvcGluY3RybC9jb25zdW1lci5o PiAjaW5jbHVkZSANCj4gPiArPGxpbnV4L21tYy9ob3N0Lmg+ICNpbmNsdWRlIDxsaW51eC9tbWMv Y2FyZC5oPiAjaW5jbHVkZSANCj4gPiArPGxpbnV4L21tYy9zZC5oPiAjaW5jbHVkZSA8bGludXgv aW8uaD4gI2luY2x1ZGUgPGxpbnV4L29mX2dwaW8uaD4NCj4gPiArDQo+ID4gKyNpbmNsdWRlICJz ZGhjaS1wbHRmbS5oIg0KPiA+ICsjaW5jbHVkZSAiY3FoY2kuaCINCj4gPiArI2luY2x1ZGUgIi4u L2NvcmUvY29yZS5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vY29yZS9zZF9vcHMuaCINCj4gPiArI2lu Y2x1ZGUgIi4uL2NvcmUvc2Rpb19vcHMuaCINCj4gPiArI2luY2x1ZGUgIi4uL2NvcmUvbW1jX29w cy5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vY29yZS9zZC5oIg0KPiA+ICsjaW5jbHVkZSAiLi4vY29y ZS9idXMuaCINCj4gPiArI2luY2x1ZGUgIi4uL2NvcmUvaG9zdC5oIg0KPiA+ICsjaW5jbHVkZSAi Li4vY29yZS9jYXJkLmgiDQo+ID4gKyNpbmNsdWRlICIuLi9jb3JlL3B3cnNlcS5oIg0KPiA+ICsN Cj4gPiArI2RlZmluZSBUUlVFCTENCj4gPiArI2RlZmluZSBGQUxTRQkwDQo+IA0KPiBVc2UgInRy dWUiIGFuZCAiZmFsc2UiLi4uDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLg0KDQo+ ID4gKw0KPiA+ICsjZGVmaW5lCVNEX0ZOQ19BTV9TRFI1MAkJMHgyDQo+ID4gKyNkZWZpbmUJU0Rf Rk5DX0FNX1NEUjEwNAkweDMNCj4gPiArI2RlZmluZSBCSVRfUEFTU19NQVNLICAoMHg3ZmYpDQo+ ID4gKyNkZWZpbmUgU0RSMTA0X01BTlVBTF9JTkpFQ1QgMHgzZmYNCj4gPiArI2RlZmluZSBTRFI1 MF9NQU5VQUxfSU5KRUNUICAweDc3Zg0KPiA+ICsNCj4gWy4uXQ0KPiA+ICsjZGVmaW5lIFRVTklO R19QSEFTRV9TSVpFCTExDQo+ID4gKyNkZWZpbmUgR0dDX0NGR19EQVRBIHsweDA3MDAwMDAwLCAw eDA3MzY0MDIyLCAweDAxMDE1NDEyLA0KPiAweDAxMDYyNDAwLFwNCj4gPiArCTB4MTA0MDAwNzYs IDB4MDAwMjU0MzIsIDB4MDEwNDYwNzYsIDB4NjIwMTEwMDAsXA0KPiA+ICsJMHgzMDUwMzEwNiwg MHg2NDE0MTcxMSwgMHgxMDA1NzUxMywgMHgwMDMzNjIwMCxcDQo+ID4gKwkweDAwMDIwMDA2LCAw eDQwMDAwNDAwLCAweDEyMjAwMzEwLCAweDNBMzE0MTc3fQ0KPiA+ICsNCj4gPiArc3RydWN0IGdn Y19idXNfbW9kZV9jZmdfdCB7DQo+IA0KPiBEb2VzICJfdCIgc2F5IHRoaXMgaXMgYSBzdHJ1Y3Q/ IE5vIG5lZWQgZm9yIHRoYXQgYXMgInN0cnVjdCBnZ2MuLi4iDQo+IGFscmVhZHkgc2F5cyAiaXQn cyBhIHN0cnVjdCIuDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLg0KDQo+ID4gKwl1 MzIgdHhfc2VsYl90YltUVU5JTkdfUEhBU0VfU0laRV07DQo+ID4gKwl1MzIgYWxsX3NlbGJfdGJb VFVOSU5HX1BIQVNFX1NJWkVdOw0KPiA+ICsJdTMyIHR4X3NlbGJfZmFpbGVkX2hpc3Rvcnk7DQo+ ID4gKwlpbnQgYnVzX21vZGU7DQo+ID4gKwlpbnQgZGVmYXVsdF9zZWxhOw0KPiA+ICsJaW50IGRl ZmF1bHRfc2VsYjsNCj4gPiArCXUzMiBkZWZhdWx0X2RlbGF5Y29kZTsNCj4gPiArCXUzMiBkbGxf dm9sdGFnZV91bmxvY2tfY250WzRdOw0KPiA+ICsJdTMyIG1heF9kZWxheWNvZGU7DQo+ID4gKwl1 MzIgbWluX2RlbGF5Y29kZTsNCj4gPiArCXUzMiBkZWxheWNvZGVfbmFycm93ZG93bl9pbmRleDsN Cj4gPiArCXUzMiBmYWlsX3BoYXNlOw0KPiA+ICt9Ow0KPiA+ICsNCj4gPiArZW51bSB0dW5pbmdf c3RhdF9ldCB7DQo+IA0KPiBEb2VzICJfZXQiIG1ha2UgdGhpcyBhbiBlbnVtPw0KWWVzLCB3aWxs IG1vZGlmeSBhdCBuZXh0IHZlcnNpb24uDQoNCj4gDQo+ID4gKwlOT19UVU5JTkcgPSAwLA0KPiA+ ICsJT1VUUFVUX1BBU1NfVFlQRSA9IDEsDQo+ID4gKwlTRVRfUEhBU0VfRkFJTF9UWVBFID0gMiwN Cj4gPiArCVRVTklOR19GQUlMX1RZUEUgPSAzLA0KPiA+ICsJUkVBRF9TVEFUVVNfRkFJTF9UWVBF ID0gNCwNCj4gPiArCVRVTklOR19DTUQ3X1RJTUVPVVQgPSA1LA0KPiA+ICsJUkVUVU5JTkdfQ0FT RSA9IDYsDQo+ID4gK307DQo+ID4gKw0KPiA+ICsNCj4gPiArc3RydWN0IHRfZ2dfcmVnX3N0cnQg ew0KPiANCj4gV2hhdCBpcyBhICJ0IGdnIHJlZyBzdHJ0Ij8NCj4gDQpJdCBtZWFucyBHR0MgcmVn aXN0ZXIgc3RydWN0dXJlLCB1c2UgdGhlIHNwZWNpYWwgc3RydWN0dXJlIHRvIGNvbmZpZ3VyZSBH R0MgcmVnaXN0ZXJzLg0KDQo+ID4gKwl1MzIgb2ZzOw0KPiA+ICsJdTMyIG1hc2s7DQo+ID4gKwl1 MzIgdmFsdWU7DQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1Y3QgcmxfYml0X2xjdCB7DQo+ID4g Kwl1OCBiaXRzOw0KPiA+ICsJdTggcmxfYml0czsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0cnVj dCBjaGtfdHlwZV90IHsNCj4gDQo+IFRoaXMgb25seSB0aW1lIHRoaXMgaXMgdXNlZCwgaXQncyB0 aGVyZSB0byBwYXNzIDMgYm9vbHMgaW50byBhIGZ1bmN0aW9uLg0KPiBKdXN0IHVzZSBmdW5jdGlv biBhcmd1bWVudHMuDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLg0KDQo+ID4gKwl1 OCByaWdodF92YWxpZDoxOw0KPiA+ICsJdTggZmlyc3RfdmFsaWQ6MTsNCj4gPiArCXU4IHJlY29y ZF92YWxpZDoxOw0KPiA+ICsJdTggcmVzZXJ2ZWQ6NTsNCj4gPiArfTsNCj4gPiArDQo+ID4gK3N0 YXRpYyBjb25zdCBjaGFyICpjb25zdCBvcF9kYmdfc3RyW10gPSB7DQo+ID4gKwkibm8gdHVuaW5n IiwNCj4gPiArCSJwYXNzIiwNCj4gPiArCSJzZXRfcGhhc2VfZmFpbCIsDQo+ID4gKwkidHVuaW5n IGZhaWwiLA0KPiA+ICsJInJlYWQgc3RhdHVzIGZhaWwiLA0KPiA+ICsJInR1bmluZyBDTUQ3IHRp bWVvdXQiLA0KPiA+ICsJInJldHVuaW5nIGNhc2UiDQo+ID4gK307DQo+ID4gKw0KPiA+ICtzdHJ1 Y3QgZ2djX3BsYXRmb3JtX3Qgew0KPiANCj4gV2hhdCBpcyB0aGlzICJnZ2MiIGFuZCB3aGF0ICJw bGF0Zm9ybSIgZG9lcyB0aGlzIHJlcHJlc2VudD8NCj4gDQpHR0MgaXMgdGhlIGNoaXAgSUMgbmFt ZSBmb3IgQkgyMDEgcHJvamVjdCwgcGxhdGZvcm0gbWVhbnMgdGhlIElDIHJlbGF0ZWQgbWF5YmUg Y2FuIHVzZSBob3N0IHRvIHJlcGxhY2UgaXQuDQoNCj4gPiArCXN0cnVjdCBnZ2NfYnVzX21vZGVf Y2ZnX3Qgc2RyNTA7DQo+ID4gKwlzdHJ1Y3QgZ2djX2J1c19tb2RlX2NmZ190IHNkcjEwNDsNCj4g PiArCXN0cnVjdCBnZ2NfYnVzX21vZGVfY2ZnX3QgKmN1cl9idXNfbW9kZTsNCj4gPiArDQo+ID4g KwlzdHJ1Y3QgdF9nZ19yZWdfc3RydCBwaGFfc3Rhc19yeF9sb3czMjsNCj4gPiArCXN0cnVjdCB0 X2dnX3JlZ19zdHJ0IHBoYV9zdGFzX3J4X2hpZ2gzMjsNCj4gPiArCXN0cnVjdCB0X2dnX3JlZ19z dHJ0IHBoYV9zdGFzX3R4X2xvdzMyOw0KPiA+ICsJc3RydWN0IHRfZ2dfcmVnX3N0cnQgcGhhX3N0 YXNfdHhfaGlnaDMyOw0KPiA+ICsJc3RydWN0IHRfZ2dfcmVnX3N0cnQgZGxsX3NlbGFfYWZ0ZXJf bWFzazsNCj4gPiArCXN0cnVjdCB0X2dnX3JlZ19zdHJ0IGRsbF9zZWxiX2FmdGVyX21hc2s7DQo+ ID4gKw0KPiA+ICsJc3RydWN0IHRfZ2dfcmVnX3N0cnQgZGxsX2RlbGF5XzEwMG1fYmFja3VwOw0K PiA+ICsJc3RydWN0IHRfZ2dfcmVnX3N0cnQgZGxsX2RlbGF5XzIwMG1fYmFja3VwOw0KPiA+ICsN Cj4gPiArCXN0cnVjdCB0X2dnX3JlZ19zdHJ0IGRsbF9zZWxhXzEwMG1fY2ZnOw0KPiA+ICsJc3Ry dWN0IHRfZ2dfcmVnX3N0cnQgZGxsX3NlbGFfMjAwbV9jZmc7DQo+ID4gKwlzdHJ1Y3QgdF9nZ19y ZWdfc3RydCBkbGxfc2VsYl8xMDBtX2NmZzsNCj4gPiArCXN0cnVjdCB0X2dnX3JlZ19zdHJ0IGRs bF9zZWxiXzIwMG1fY2ZnOw0KPiA+ICsJc3RydWN0IHRfZ2dfcmVnX3N0cnQgZGxsX3NlbGJfMTAw bV9jZmdfZW47DQo+ID4gKwlzdHJ1Y3QgdF9nZ19yZWdfc3RydCBkbGxfc2VsYl8yMDBtX2NmZ19l bjsNCj4gPiArCXN0cnVjdCB0X2dnX3JlZ19zdHJ0IGludGVybmxfdHVuaW5nX2VuXzEwMG07DQo+ ID4gKwlzdHJ1Y3QgdF9nZ19yZWdfc3RydCBpbnRlcm5sX3R1bmluZ19lbl8yMDBtOw0KPiA+ICsJ c3RydWN0IHRfZ2dfcmVnX3N0cnQgY21kMTlfY250X2NmZzsNCj4gPiArDQo+ID4gKwlzdHJ1Y3Qg dF9nZ19yZWdfc3RydCBpbmplY3RfZmFpbHVyZV9mb3JfdHVuaW5nX2VuYWJsZV9jZmc7DQo+ID4g KwlzdHJ1Y3QgdF9nZ19yZWdfc3RydCBpbmplY3RfZmFpbHVyZV9mb3JfMjAwbV90dW5pbmdfY2Zn Ow0KPiA+ICsJc3RydWN0IHRfZ2dfcmVnX3N0cnQgaW5qZWN0X2ZhaWx1cmVfZm9yXzEwMG1fdHVu aW5nX2NmZzsNCj4gPiArDQo+ID4gKwlpbnQgZGVmX3NlbGFfMTAwbTsNCj4gPiArCWludCBkZWZf c2VsYV8yMDBtOw0KPiA+ICsJaW50IGRlZl9zZWxiXzEwMG07DQo+ID4gKwlpbnQgZGVmX3NlbGJf MjAwbTsNCj4gPiArDQo+ID4gKwl1MzIgX2dnX3JlZ19jdXJbMTZdOw0KPiA+ICsJdTggX2N1cl9y ZWFkX2J1Zls1MTJdOw0KPiANCj4gV2h5IGRvZXMgdGhlc2UgaGF2ZSBhICdfJyBwcmVmaXg/DQo+ IA0KSXQncyBubyBuZWVkLCB3aWxsIG1vZGlmeSBhdCBuZXh0IHZlcnNpb24uDQoNCj4gPiArDQo+ ID4gKwlib29sIGRsbF91bmxvY2tfcmVpbml0X2ZsZzsNCj4gPiArCXU4IGRyaXZlcl9zdHJlbmd0 aF9yZWluaXRfZmxnOw0KPiA+ICsJYm9vbCB0dW5pbmdfY21kN190aW1lb3V0X3JlaW5pdF9mbGc7 DQo+ID4gKwl1MzIgdHVuaW5nX2NtZDdfdGltZW91dF9yZWluaXRfY250Ow0KPiA+ICsJdTMyIGdn Y19jdXJfc2VsYTsNCj4gPiArCWJvb2wgc2VseF90dW5pbmdfZG9uZV9mbGFnOw0KPiA+ICsJdTMy IGdnY19jbWRfdHhfc2VsYl9mYWlsZWRfcmFuZ2U7DQo+ID4gKwlpbnQgZ2djX3N3X3NlbGJfdHVu aW5nX2ZpcnN0X3NlbGI7DQo+ID4gKwllbnVtIHR1bmluZ19zdGF0X2V0IGdnY19zZWxhX3R1bmlu Z19yZXN1bHRbMTFdOw0KPiA+ICsJaW50IGRsbF92b2x0YWdlX3NjYW5fbWFwWzRdOw0KPiA+ICsJ aW50IGN1cl9kbGxfdm9sdGFnZV9pZHg7DQo+ID4gKwlpbnQgc2RyNTBfbm90dW5pbmdfc2VsYV9p bmplY3RfZmxhZzsNCj4gPiArCWludCBzZHI1MF9ub3R1bmluZ19jcmNfZXJyb3JfZmxhZzsNCj4g PiArCXUzMiBzZHI1MF9ub3R1bmluZ19zZWxhX3J4X2luamVjdDsNCj4gPiArCXUzMiBiaDIwMV9z ZHI1MF9zZWxhX3N3X2luamVjdDsNCj4gPiArCXUzMiBiaDIwMV9zZHI1MF9zZWxiX2h3X2luamVj dDsNCj4gPiArCXUzMiBiaDIwMV9zZHIxMDRfc2VsYl9od19pbmplY3Q7DQo+ID4gKwl1MzIgYmgy MDFfZHJpdmVfc3RyZW5ndGg7DQo+ID4gKwlib29sIHR1bmluZ19pbl9wcm9ncmVzczsNCj4gPiAr CWludCBiaDIwMV91c2VkOw0KPiA+ICsJaW50IHB3cl9ncGlvOyAvKiBFeHRlcm5hbCBwb3dlciBl bmFibGUgcGluIGZvciBSZWRyaXZlciBJQyAqLw0KPiA+ICsJaW50IGRldF9ncGlvOw0KPiA+ICt9 Ow0KPiBbLi5dDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RoY2lfbXNtX2JheWh1Yl9vZmZz ZXQNCj4gc2RoY2lfbXNtX2JheWh1Yl92NV9vZmZzZXQgPSB7DQo+ID4gKwkuY29yZV9tY2lfZGF0 YV9jbnQgPSAweDM1YywNCj4gPiArCS5jb3JlX21jaV9zdGF0dXMgPSAweDMyNCwNCj4gPiArCS5j b3JlX21jaV9maWZvX2NudCA9IDB4MzA4LA0KPiA+ICsJLmNvcmVfbWNpX3ZlcnNpb24gPSAweDMx OCwNCj4gPiArCS5jb3JlX2dlbmVyaWNzID0gMHgzMjAsDQo+ID4gKwkuY29yZV90ZXN0YnVzX2Nv bmZpZyA9IDB4MzJjLA0KPiA+ICsJLmNvcmVfdGVzdGJ1c19zZWwyX2JpdCA9IDMsDQo+ID4gKwku Y29yZV90ZXN0YnVzX2VuYSA9ICgxIDw8IDMxKSwNCj4gPiArCS5jb3JlX3Rlc3RidXNfc2VsMiA9 ICgxIDw8IDMpLA0KPiA+ICsJLmNvcmVfcHdyY3RsX3N0YXR1cyA9IDB4MjQwLA0KPiA+ICsJLmNv cmVfcHdyY3RsX21hc2sgPSAweDI0NCwNCj4gPiArCS5jb3JlX3B3cmN0bF9jbGVhciA9IDB4MjQ4 LA0KPiA+ICsJLmNvcmVfcHdyY3RsX2N0bCA9IDB4MjRjLA0KPiA+ICsJLmNvcmVfc2RjY19kZWJ1 Z19yZWcgPSAweDM1OCwNCj4gPiArCS5jb3JlX2RsbF9jb25maWcgPSAweDIwMCwNCj4gPiArCS5j b3JlX2RsbF9zdGF0dXMgPSAweDIwOCwNCj4gPiArCS5jb3JlX3ZlbmRvcl9zcGVjID0gMHgyMGMs DQo+ID4gKwkuY29yZV92ZW5kb3Jfc3BlY19hZG1hX2Vycl9hZGRyMCA9IDB4MjE0LA0KPiA+ICsJ LmNvcmVfdmVuZG9yX3NwZWNfYWRtYV9lcnJfYWRkcjEgPSAweDIxOCwNCj4gPiArCS5jb3JlX3Zl bmRvcl9zcGVjX2Z1bmMyID0gMHgyMTAsDQo+ID4gKwkuY29yZV92ZW5kb3Jfc3BlY19jYXBhYmls aXRpZXMwID0gMHgyMWMsDQo+ID4gKwkuY29yZV9kZHJfMjAwX2NmZyA9IDB4MjI0LA0KPiA+ICsJ LmNvcmVfdmVuZG9yX3NwZWMzID0gMHgyNTAsDQo+ID4gKwkuY29yZV9kbGxfY29uZmlnXzIgPSAw eDI1NCwNCj4gPiArCS5jb3JlX2RsbF9jb25maWdfMyA9IDB4MjU4LA0KPiA+ICsJLmNvcmVfZGRy X2NvbmZpZyA9IDB4MjVjLA0KPiA+ICsJLmNvcmVfZGxsX3Vzcl9jdGwgPSAweDM4OCwNCj4gPiAr fTsNCj4gPiArDQo+ID4gK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2RoY2lfbXNtX2JheWh1Yl9vZmZz ZXQgDQo+ID4gK3NkaGNpX21zbV9iYXlodWJfbWNpX29mZnNldCA9IHsNCj4gDQo+IFRoaXMgaXMg dW51c2VkIGFuZCBhcyBzdWNoIHlvdSBkb24ndCBuZWVkIHRoZSBzZGhjaV9tc21fYmF5aHViX29m ZnNldCANCj4gZWl0aGVyLg0KPiANClllcywgd2lsbCBtb2RpZnkgYXQgbmV4dCB2ZXJzaW9uLg0K DQo+ID4gKwkuY29yZV9oY19tb2RlID0gMHg3OCwNCj4gPiArCS5jb3JlX21jaV9kYXRhX2NudCA9 IDB4MzAsDQo+ID4gKwkuY29yZV9tY2lfc3RhdHVzID0gMHgzNCwNCj4gPiArCS5jb3JlX21jaV9m aWZvX2NudCA9IDB4NDQsDQo+ID4gKwkuY29yZV9tY2lfdmVyc2lvbiA9IDB4MDUwLA0KPiA+ICsJ LmNvcmVfZ2VuZXJpY3MgPSAweDcwLA0KPiA+ICsJLmNvcmVfdGVzdGJ1c19jb25maWcgPSAweDBj YywNCj4gPiArCS5jb3JlX3Rlc3RidXNfc2VsMl9iaXQgPSA0LA0KPiA+ICsJLmNvcmVfdGVzdGJ1 c19lbmEgPSAoMSA8PCAzKSwNCj4gPiArCS5jb3JlX3Rlc3RidXNfc2VsMiA9ICgxIDw8IDQpLA0K PiA+ICsJLmNvcmVfcHdyY3RsX3N0YXR1cyA9IDB4ZGMsDQo+ID4gKwkuY29yZV9wd3JjdGxfbWFz ayA9IDB4ZTAsDQo+ID4gKwkuY29yZV9wd3JjdGxfY2xlYXIgPSAweGU0LA0KPiA+ICsJLmNvcmVf cHdyY3RsX2N0bCA9IDB4ZTgsDQo+ID4gKwkuY29yZV9zZGNjX2RlYnVnX3JlZyA9IDB4MTI0LA0K PiA+ICsJLmNvcmVfZGxsX2NvbmZpZyA9IDB4MTAwLA0KPiA+ICsJLmNvcmVfZGxsX3N0YXR1cyA9 IDB4MTA4LA0KPiA+ICsJLmNvcmVfdmVuZG9yX3NwZWMgPSAweDEwYywNCj4gPiArCS5jb3JlX3Zl bmRvcl9zcGVjX2FkbWFfZXJyX2FkZHIwID0gMHgxMTQsDQo+ID4gKwkuY29yZV92ZW5kb3Jfc3Bl Y19hZG1hX2Vycl9hZGRyMSA9IDB4MTE4LA0KPiA+ICsJLmNvcmVfdmVuZG9yX3NwZWNfZnVuYzIg PSAweDExMCwNCj4gPiArCS5jb3JlX3ZlbmRvcl9zcGVjX2NhcGFiaWxpdGllczAgPSAweDExYywN Cj4gPiArCS5jb3JlX2Rkcl8yMDBfY2ZnID0gMHgxODQsDQo+ID4gKwkuY29yZV92ZW5kb3Jfc3Bl YzMgPSAweDFiMCwNCj4gPiArCS5jb3JlX2RsbF9jb25maWdfMiA9IDB4MWI0LA0KPiA+ICsJLmNv cmVfZGRyX2NvbmZpZ19vbGQgPSAweDFiOCwNCj4gPiArCS5jb3JlX2Rkcl9jb25maWcgPSAweDFi YywNCj4gPiArfTsNCj4gPiArDQo+IFsuLl0NCj4gPiArc3RhdGljIGNvbnN0IHVuc2lnbmVkIGlu dCBmcmVxc1tdID0geyA0MDAwMDAsIDMwMDAwMCwgMjAwMDAwLCANCj4gPiArMTAwMDAwIH07DQo+ ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBjZmdfYml0XzJfYnQoaW50IG1heF9iaXQsIGludCB0YXIs IGludCAqYnl0LCBpbnQgKmJpdCkgew0KPiA+ICsJc3RydWN0IHJsX2JpdF9sY3QgY2ZnX2JpdF9t YXBbNl0gPSB7DQo+ID4gKwkJezAsIDZ9LAl7MSwgNX0sCXsyLCA0fSwNCj4gPiArCQl7MywgMn0s CXs0LCAxfSwJezUsIDB9LA0KPiA+ICsJfTsNCj4gDQo+IFNvIHlvdSBoYXZlIGFuIGFycmF5IG9m IHR1cGxlcywgd2hlcmUgdGhlIGZpcnN0IGVudHJ5IGluIHRoZSB0dXBsZSBpcyANCj4gdGhlIGlu ZGV4IGluIHRoZSBhcnJheT8gQW5kIHRoZW4geW91IG9ubHkgdXNlIHJsX2JpdHMgYW55d2F5cy4u Lg0KPiANCj4gSG93IGFib3V0Og0KPiAJdTggYml0X21hcFs2XSA9IHsgNiwgNSwgNCwgMiwgMSwg MCB9DQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLg0KDQo+ID4gKw0KPiA+ICsJKmJ5 dCA9IChtYXhfYml0IC0gdGFyKSAvIDY7DQo+ID4gKwkqYml0ID0gY2ZnX2JpdF9tYXBbKG1heF9i aXQgLSB0YXIpICUgNl0ucmxfYml0czsgfQ0KPiA+ICsNCj4gPiArc3RhdGljIHUzMiBjZmdfcmVh ZF9iaXRzX29mc19tYXNrKHU4ICpjZmcsIHN0cnVjdCB0X2dnX3JlZ19zdHJ0IA0KPiA+ICsqYnRz KSB7DQo+ID4gKwl1MzIgcnYgPSAwOw0KPiA+ICsJdTMyIG1zayA9IGJ0cy0+bWFzazsNCj4gPiAr CWludCBieXQgPSAwLCBiaXQgPSAwOw0KPiA+ICsJaW50IGkgPSAwOw0KPiA+ICsNCj4gPiArCWRv IHsNCj4gPiArCQljZmdfYml0XzJfYnQoTUFYX0NGR19CSVRfVkFMLCBidHMtPm9mcyArIGksICZi eXQsICZiaXQpOw0KPiANCj4gU28gImJ0IiBpcyBzaG9ydCBmb3IgImJ5dGUiIGFuZCAiYnRzIiBp cyAiYnl0ZXMiPw0KWWVzLCB3aWxsIHVzZSBmdWxsIG5hbWUgYXQgbmV4dCB2ZXJzaW9uLg0KDQo+ IA0KPiA+ICsJCWlmIChjZmdbYnl0XSAmICgxIDw8IGJpdCkpDQo+ID4gKwkJCXJ2IHw9IDEgPDwg aTsNCj4gPiArDQo+ID4gKwkJaSsrOw0KPiA+ICsJCW1zayA+Pj0gMTsNCj4gPiArCQlpZiAobXNr ID09IDApDQo+ID4gKwkJCWJyZWFrOw0KPiANCj4gVGhlcmUncyBubyBjYXNlIHdoZXJlIG1hc2sg aXMgMCAoYW5kIEkgZG9uJ3Qgc2VlIHdoeSBpdCB3b3VsZCBiZSksIHNvDQo+IA0KPiAJd2hpbGUg KG1zaykgew0KPiAJCS4uLjsNCj4gCQltc2sgPj49IDE7DQo+IAl9DQo+IA0KPiBTZWVtcyBjbGVh bmVyDQo+IA0KPiANCj4gQnV0IGFsbCBvZiB0aGlzIHdvdWxkIGJlbmVmaXQgZnJvbSBiZXR0ZXIg bmFtaW5nIGFuZCBwcm9iYWJseSBzb21lIA0KPiBjb21tZW50cyBkZXNjcmliaW5nIHRoZSBhY3R1 YWwgZm9ybWF0L3N0cnVjdHVyZSBvZiB0aGVzZSBiaXRzIGFuZCBieXRlcy4NCj4gDQpZZXMsIHRo YW5rcyBmb3IgeW91ciBhZHZpY2UuDQoNCj4gPiArCX0gd2hpbGUgKDEpOw0KPiA+ICsJcmV0dXJu IHJ2Ow0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBnZXRfZGVmYXVsdF9zZXR0aW5n KHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1OCAqZGF0YSkgew0KPiA+ICsJc3RydWN0IHNkaGNp X3BsdGZtX2hvc3QgKnBsdGZtX2hvc3QgPSBzZGhjaV9wcml2KGhvc3QpOw0KPiA+ICsJc3RydWN0 IHNkaGNpX21zbV9iYXlodWJfaG9zdCAqdmVuZG9yX2hvc3QgPSANCj4gPiArc2RoY2lfcGx0Zm1f cHJpdihwbHRmbV9ob3N0KTsNCj4gPiArDQo+ID4gKwl2ZW5kb3JfaG9zdC0+Z2djLmRlZl9zZWxh XzEwMG0gPQ0KPiA+ICsJCWNmZ19yZWFkX2JpdHNfb2ZzX21hc2soZGF0YSwgJnZlbmRvcl9ob3N0 LQ0KPiA+Z2djLmRsbF9zZWxhXzEwMG1fY2ZnKTsNCj4gPiArCXZlbmRvcl9ob3N0LT5nZ2MuZGVm X3NlbGFfMjAwbSA9DQo+ID4gKwkJY2ZnX3JlYWRfYml0c19vZnNfbWFzayhkYXRhLCAmdmVuZG9y X2hvc3QtDQo+ID5nZ2MuZGxsX3NlbGFfMjAwbV9jZmcpOw0KPiA+ICsJdmVuZG9yX2hvc3QtPmdn Yy5kZWZfc2VsYl8xMDBtID0NCj4gPiArCQljZmdfcmVhZF9iaXRzX29mc19tYXNrKGRhdGEsICZ2 ZW5kb3JfaG9zdC0NCj4gPmdnYy5kbGxfc2VsYV8xMDBtX2NmZyk7DQo+ID4gKwl2ZW5kb3JfaG9z dC0+Z2djLmRlZl9zZWxiXzIwMG0gPQ0KPiA+ICsJCWNmZ19yZWFkX2JpdHNfb2ZzX21hc2soZGF0 YSwgJnZlbmRvcl9ob3N0LQ0KPiA+Z2djLmRsbF9zZWxhXzIwMG1fY2ZnKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArc3RhdGljIHZvaWQgY2ZnX3dyaXRlX2JpdHNfb2ZzX21hc2sodTggKmNmZywNCj4g PiArCQlzdHJ1Y3QgdF9nZ19yZWdfc3RydCAqYnRzLCB1MzIgd192YWx1ZSkgew0KPiA+ICsJdTMy IHd2ID0gd192YWx1ZSAmIGJ0cy0+bWFzazsNCj4gPiArCXUzMiBtc2sgPSBidHMtPm1hc2s7DQo+ ID4gKwlpbnQgYnl0ID0gMCwgYml0ID0gMDsNCj4gPiArCWludCBpID0gMDsNCj4gPiArDQo+ID4g KwlkbyB7DQo+ID4gKwkJY2ZnX2JpdF8yX2J0KE1BWF9DRkdfQklUX1ZBTCwgYnRzLT5vZnMgKyBp LCAmYnl0LCAmYml0KTsNCj4gPiArCQlpZiAod3YgJiAxKQ0KPiA+ICsJCQljZmdbYnl0XSB8PSAo dTgpICgxIDw8IGJpdCk7DQo+ID4gKwkJZWxzZQ0KPiA+ICsJCQljZmdbYnl0XSAmPSAodTgpICh+ KDEgPDwgYml0KSk7DQo+ID4gKw0KPiA+ICsJCWkrKzsNCj4gPiArCQl3diA+Pj0gMTsNCj4gPiAr CQltc2sgPj49IDE7DQo+ID4gKwkJaWYgKG1zayA9PSAwKQ0KPiA+ICsJCQlicmVhazsNCj4gPiAr CX0gd2hpbGUgKDEpOw0KPiA+ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCByYW1fYml0XzJf YnQoaW50IHRhciwgaW50ICpieXQsIGludCAqYml0KQ0KPiANCj4gU28gdGhlICJyYW0iIHZhcmlh bnQgaXMganVzdCBhIHJlZ3VsYXIgYml0bWFwIHdpdGggOCBiaXRzIHBlciBieXRlPw0KPiBpbmNs dWRlL2xpbnV4L2JpdG1hcC5oIGdpdmVzIHlvdXIgYW4gaW50ZXJmYWNlIGZvciBkZWFsaW5nIHdp dGggdGhvc2UuDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLiBJIHdpbGwgY2hlY2sg aXQuDQoNCj4gPiArew0KPiA+ICsJKmJ5dCA9IHRhciAvIDg7DQo+ID4gKwkqYml0ID0gdGFyICUg ODsNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgc2V0X2dnX3JlZ19jdXJfdmFsKHN0 cnVjdCBnZ2NfcGxhdGZvcm1fdCAgKmdnYywNCj4gPiArCXU4ICpkYXRhLCB1OCBsZW4pDQo+ID4g K3sNCj4gPiArCW1lbWNweSgmZ2djLT5fZ2dfcmVnX2N1clswXSwgZGF0YSwgbGVuKTsgfQ0KPiA+ ICsNCj4gPiArc3RhdGljIHZvaWQgZ2V0X2dnX3JlZ19jdXJfdmFsKHN0cnVjdCBnZ2NfcGxhdGZv cm1fdCAgKmdnYywNCj4gPiArCXU4ICpkYXRhLCB1OCBsZW4pDQo+ID4gK3sNCj4gPiArCW1lbWNw eShkYXRhLCAmZ2djLT5fZ2dfcmVnX2N1clswXSwgbGVuKTsgfQ0KPiA+ICsNCj4gPiArc3RhdGlj IHZvaWQgZ2V0X2dnX3JlZ19kZWYoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QsIHU4ICpkYXRhKSB7 DQo+ID4gKwl1MzIgZ2dfc3dfZGVmWzE2XSA9IEdHQ19DRkdfREFUQTsNCj4gPiArDQo+ID4gKwlt ZW1jcHkoZGF0YSwgKHU4ICopJihnZ19zd19kZWZbMF0pLCBzaXplb2YoZ2dfc3dfZGVmKSk7DQo+ IA0KPiAodTggKikmKGdnX3N3X2RlZlswXSkuLi4gVGhlIGFkZHJlc3Mgb2YgdGhlIGZpcnN0IGVs ZW1lbnQsIHR5cGUgY2FzdGVkIA0KPiB0byBhICh1OCopLCB0aGVuIHBhc3NlZCB0byBhIHZvaWQg Kj8NCj4gDQo+IElzbid0IHRoYXQgdGhlIHNhbWUgdGhpbmcgYXMganVzdCB0eXBpbmcgImdnX3N3 X2RlZiI/DQo+IA0KPiANCj4gQnV0IHdoeSBpcyBHR0NfQ0ZHX0RBVEEgYSBkZWZpbmUgYW5kIG5v dCBqdXN0IGEgc3RhdGljIGNvbnN0IHUzMiANCj4gYXJyYXksIGluIHdoaWNoIGNhc2UgeW91IGNh biByZXBsYWNlIHRoaXMgZnVuY3Rpb24gd2l0aCBqdXN0IGEgc2ltcGxlIA0KPiBtZW1jcHkgaW4g Z2djX2NoaXBfaW5pdCgpLg0KPiANClllcywgdGhhbmtzIGZvciB5b3VyIGFkdmljZS4gSSB3aWxs IGNoZWNrIGl0Lg0KDQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB1MzIgcmVhZF9yYW1fYml0 c19vZnNfbWFzayh1OCAqY2ZnLCBzdHJ1Y3QgdF9nZ19yZWdfc3RydCANCj4gPiArKmJ0cykgew0K PiA+ICsJdTMyIHJ2ID0gMDsNCj4gPiArCXUzMiBtc2sgPSBidHMtPm1hc2s7DQo+ID4gKwlpbnQg Ynl0ID0gMCwgYml0ID0gMDsNCj4gPiArCWludCBpID0gMDsNCj4gPiArDQo+ID4gKwlkbyB7DQo+ ID4gKwkJcmFtX2JpdF8yX2J0KGJ0cy0+b2ZzICsgaSwgJmJ5dCwgJmJpdCk7DQo+ID4gKwkJaWYg KGNmZ1tieXRdICYgKDEgPDwgYml0KSkNCj4gPiArCQkJcnYgfD0gMSA8PCBpOw0KPiA+ICsNCj4g PiArCQlpKys7DQo+ID4gKwkJbXNrID4+PSAxOw0KPiA+ICsJCWlmIChtc2sgPT0gMCkNCj4gPiAr CQkJYnJlYWs7DQo+ID4gKw0KPiA+ICsJfSB3aGlsZSAoMSk7DQo+ID4gKwlyZXR1cm4gcnY7DQo+ ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lkIGdnY19kbGxfdm9sdGFnZV9pbml0KHN0cnVj dCBzZGhjaV9ob3N0ICpob3N0KSB7DQo+ID4gKwlpbnQgaSA9IDA7DQo+ID4gKwlzdHJ1Y3Qgc2Ro Y2lfcGx0Zm1faG9zdCAqcGx0Zm1faG9zdCA9IHNkaGNpX3ByaXYoaG9zdCk7DQo+ID4gKwlzdHJ1 Y3Qgc2RoY2lfbXNtX2JheWh1Yl9ob3N0ICp2ZW5kb3JfaG9zdCA9DQo+ID4gKwkJCQkJCXNkaGNp X3BsdGZtX3ByaXYocGx0Zm1faG9zdCk7DQo+ID4gKw0KPiA+ICsJZm9yIChpID0gMDsgaSA8IDQ7 IGkrKykgew0KPiA+ICsJCXZlbmRvcl9ob3N0LT5nZ2MuZGxsX3ZvbHRhZ2Vfc2Nhbl9tYXBbaV0g PSAwOw0KPiA+ICsJCXZlbmRvcl9ob3N0LT5nZ2Muc2RyNTAuZGxsX3ZvbHRhZ2VfdW5sb2NrX2Nu dFtpXSA9IDA7DQo+ID4gKwkJdmVuZG9yX2hvc3QtPmdnYy5zZHIxMDQuZGxsX3ZvbHRhZ2VfdW5s b2NrX2NudFtpXSA9IDA7DQo+ID4gKwl9DQo+ID4gK30NCj4gPiArDQo+ID4gK3N0YXRpYyB2b2lk IGdnY19jaGlwX2luaXQoc3RydWN0IHNkaGNpX2hvc3QgKmhvc3QpIHsNCj4gPiArCXU4IGRhdGFb NTEyXSA9IHsgMCB9Ow0KPiA+ICsJc3RydWN0IHNkaGNpX3BsdGZtX2hvc3QgKnBsdGZtX2hvc3Qg PSBzZGhjaV9wcml2KGhvc3QpOw0KPiA+ICsJc3RydWN0IHNkaGNpX21zbV9iYXlodWJfaG9zdCAq dmVuZG9yX2hvc3QgPQ0KPiA+ICsJCQkJCQlzZGhjaV9wbHRmbV9wcml2KHBsdGZtX2hvc3QpOw0K PiA+ICsNCj4gPiArCWdldF9nZ19yZWdfZGVmKGhvc3QsIGRhdGEpOw0KPiA+ICsJZ2V0X2RlZmF1 bHRfc2V0dGluZyhob3N0LCBkYXRhKTsNCj4gPiArCXNldF9nZ19yZWdfY3VyX3ZhbCgmdmVuZG9y X2hvc3QtPmdnYywgZGF0YSwgNjQpOyB9DQo+ID4gKw0KPiA+ICtzdGF0aWMgaW50IGRyaXZlcl9z ZW5kX2NvbW1hbmQ3KHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0KSB7DQo+ID4gKwlpbnQgcmV0ID0g MDsNCj4gPiArCWludCBlcnI7DQo+ID4gKwlzdHJ1Y3QgbW1jX2hvc3QgKm1tYyA9IGhvc3QtPm1t YzsNCj4gPiArCXN0cnVjdCBtbWNfY29tbWFuZCBjbWQgPSB7MH07DQo+ID4gKw0KPiA+ICsJY21k Lm9wY29kZSA9IE1NQ19TRUxFQ1RfQ0FSRDsNCj4gPiArCWNtZC5hcmcgPSAwOw0KPiA+ICsJY21k LmZsYWdzID0gTU1DX1JTUF9OT05FIHwgTU1DX0NNRF9BQzsNCj4gPiArCWVyciA9IG1tY193YWl0 X2Zvcl9jbWQobW1jLCAmY21kLCAzKTsNCj4gPiArCWlmIChlcnIpDQo+ID4gKwkJcmV0ID0gMDsN Cj4gPiArCWVsc2UNCj4gPiArCQlyZXQgPSAxOw0KPiA+ICsNCj4gPiArCXJldHVybiByZXQ7DQo+ IA0KPiByZXR1cm4gbW1jX3dhaXRfZm9yX2NtZCgpIHNlZW1zIG1vcmUgcmVhc29uYWJsZSwgYnV0 IHlvdSBkb24ndCBjaGVjayANCj4gdGhlIHJldHVybiB2YWx1ZSBpbiBhbnkgb2ZmIHRoZSBjYWxs IHNpdGVzLi4uDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLiBJIHdpbGwgY2hlY2sg aXQuDQoNCj4gPiArfQ0KPiA+ICsNCj4gPiArc3RhdGljIHZvaWQgZHJpdmVyX3NlbmRfY29tbWFu ZDI0KHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LA0KPiA+ICsJCXUzMiAqY2ZnX2RhdGEsIGludCBk YXRhX2xlbikNCj4gPiArew0KPiA+ICsJc3RydWN0IG1tY19ob3N0ICptbWMgPSBob3N0LT5tbWM7 DQo+ID4gKwlzdHJ1Y3QgbW1jX3JlcXVlc3QgbXJxID0gezB9Ow0KPiA+ICsJc3RydWN0IG1tY19j b21tYW5kIGNtZCA9IHsgMCB9Ow0KPiA+ICsJc3RydWN0IG1tY19kYXRhIGRhdGEgPSB7IDAgfTsN Cj4gPiArCXN0cnVjdCBzY2F0dGVybGlzdCBzZzsNCj4gPiArCXU4ICpkYXRhMSA9IGt6YWxsb2Mo UEFHRV9TSVpFLCBHRlBfS0VSTkVMKTsNCj4gDQo+IFRoaXMgYWxsb2NhdGlvbiBuZWVkcyBhIE5V TEwgY2hlY2suDQo+IA0KWWVzLCB0aGFua3MgZm9yIHlvdXIgYWR2aWNlLg0KDQo+ID4gKw0KPiA+ ICsJbWVtY3B5KGRhdGExLCAodTggKikmKGNmZ19kYXRhWzBdKSwgZGF0YV9sZW4pOw0KPiA+ICsJ c2dfaW5pdF9vbmUoJnNnLCBkYXRhMSwgNTEyKTsNCj4gPiArDQo+ID4gKwljbWQub3Bjb2RlID0g TU1DX1dSSVRFX0JMT0NLOw0KPiA+ICsJY21kLmFyZyA9IDA7DQo+ID4gKwljbWQuZmxhZ3MgPSBN TUNfUlNQX1IxIHwgTU1DX0NNRF9BRFRDOw0KPiA+ICsJZGF0YS5ibGtzeiA9IDUxMjsNCj4gPiAr CWRhdGEuYmxvY2tzID0gMTsNCj4gPiArCWRhdGEuZmxhZ3MgPSBNTUNfREFUQV9XUklURTsNCj4g PiArCWRhdGEudGltZW91dF9ucyA9IDEwMDAgKiAxMDAwICogMTAwMDsNCj4gPiArCWRhdGEuc2cg PSAmc2c7DQo+ID4gKwlkYXRhLnNnX2xlbiA9IDE7DQo+ID4gKwltcnEuY21kID0gJmNtZDsNCj4g PiArCW1ycS5kYXRhID0gJmRhdGE7DQo+ID4gKwltcnEuc3RvcCA9IE5VTEw7DQo+ID4gKw0KPiA+ ICsJbW1jX3dhaXRfZm9yX3JlcShtbWMsICZtcnEpOw0KPiA+ICsJa2ZyZWUoZGF0YTEpOw0KPiA+ ICt9DQo+ID4gKw0KPiA+ICtzdGF0aWMgdm9pZCBiaHRfdXBkYXRlX2NmZyhzdHJ1Y3QgbW1jX2hv c3QgKm1tY19ob3N0LA0KPiA+ICsJc3RydWN0IG1tY19jYXJkICpjYXJkLCB1MzIgKmNmZ19kYXRh LCBpbnQgZGF0YV9sZW4pIHsNCj4gPiArCWludCByZXQgPSAwOw0KPiANCj4gVGhpcyBpcyB1bnVz ZWQuDQo+IA0KWWVzLCB3aWxsIHJlbW92ZSBpdCBuZXh0IHZlcnNpb24uDQoNCj4gPiArCXN0cnVj dCBzZGhjaV9ob3N0ICpob3N0Ow0KPiA+ICsNCj4gPiArCWhvc3QgPSBtbWNfcHJpdihtbWNfaG9z dCk7DQo+ID4gKwltbWNfc2V0X2J1c193aWR0aChtbWNfaG9zdCwgTU1DX0JVU19XSURUSF80KTsN Cj4gPiArCWlmIChob3N0LT5vcHMtPnJlc2V0KQ0KPiA+ICsJCWhvc3QtPm9wcy0+cmVzZXQoaG9z dCwNCj4gU0RIQ0lfUkVTRVRfQ01EfFNESENJX1JFU0VUX0RBVEEpOw0KPiA+ICsNCj4gPiArCWRy aXZlcl9zZW5kX2NvbW1hbmQ3KGhvc3QpOw0KPiA+ICsJZHJpdmVyX3NlbmRfY29tbWFuZDI0KGhv c3QsIGNmZ19kYXRhLCBkYXRhX2xlbik7DQo+ID4gKwlkcml2ZXJfc2VuZF9jb21tYW5kNyhob3N0 KTsNCj4gPiArDQo+ID4gKwltbWNfc2V0X2J1c193aWR0aChtbWNfaG9zdCwgTU1DX0JVU19XSURU SF8xKTsgfQ0KPiA+ICsNCj4gPiArDQo+IFsuLl0NCj4gPiArc3RhdGljIHZvaWQgYmh0X2xvYWRf aHdfaW5qZWN0KHN0cnVjdCBtbWNfaG9zdCAqbW1jX2hvc3QsDQo+ID4gKwlzdHJ1Y3QgbW1jX2Nh cmQgKmNhcmQsIHUzMiAqY2ZnX2RhdGEsIGludCBkYXRhX2xlbiwNCj4gPiArCXUzMiBzZWwyMDAs IHUzMiBzZWwxMDApDQo+ID4gK3sNCj4gPiArCXN0cnVjdCBzZGhjaV9ob3N0ICpob3N0ID0gbW1j X3ByaXYobW1jX2hvc3QpOw0KPiA+ICsJc3RydWN0IHNkaGNpX3BsdGZtX2hvc3QgKnBsdGZtX2hv c3QgPSBzZGhjaV9wcml2KGhvc3QpOw0KPiA+ICsJc3RydWN0IHNkaGNpX21zbV9iYXlodWJfaG9z dCAqdmVuZG9yX2hvc3QgPQ0KPiA+ICsJCQkJCQlzZGhjaV9wbHRmbV9wcml2KHBsdGZtX2hvc3Qp Ow0KPiA+ICsJdTMyIGdnX2h3X2lualsxNl0gPSBHR0NfQ0ZHX0RBVEE7DQo+ID4gKw0KPiA+ICsJ Z2dfaHdfaW5qWzFdID0gMHg3MzY0MDMyOw0KPiA+ICsNCj4gPiArCWlmICh2ZW5kb3JfaG9zdC0+ Z2djLmJoMjAxX3NkcjEwNF9zZWxiX2h3X2luamVjdCkNCj4gPiArCQlnZ19od19pbmpbMTFdID0g dmVuZG9yX2hvc3QtDQo+ID5nZ2MuYmgyMDFfc2RyMTA0X3NlbGJfaHdfaW5qZWN0Ow0KPiA+ICsJ ZWxzZQ0KPiA+ICsJCWdnX2h3X2lualsxMV0gPSAweDU3MzM2MjAwOw0KPiANCj4gTWFrZSB0aGlz IHRoZSBkZWZhdWx0IHZhbHVlIG9mIGJoMjAxX3NkcjUwX3NlbGJfaHdfaW5qZWN0IGFuZCB5b3Ug DQo+IGRvbid0IG5lZWQgdG8gbWFrZSB0aGVzZSBjb25kaXRpb25hbHMgdGhyb3VnaG91dCB0aGUg Y29kZS4NCj4gDQpZZXMsIHRoYW5rcyBmb3IgeW91ciBhZHZpY2UuDQoNCj4gPiArDQo+ID4gKwlp ZiAodmVuZG9yX2hvc3QtPmdnYy5iaDIwMV9zZHI1MF9zZWxiX2h3X2luamVjdCkNCj4gPiArCQln Z19od19pbmpbMTJdID0gdmVuZG9yX2hvc3QtDQo+ID5nZ2MuYmgyMDFfc2RyNTBfc2VsYl9od19p bmplY3Q7DQo+ID4gKwllbHNlDQo+ID4gKwkJZ2dfaHdfaW5qWzEyXSA9IDB4MDA3MjU3Nzc7DQo+ ID4gKw0KPiA+ICsJaWYgKHZlbmRvcl9ob3N0LT5nZ2MuYmgyMDFfZHJpdmVfc3RyZW5ndGgpDQo+ ID4gKwkJZ2dfaHdfaW5qWzE1XSA9IHZlbmRvcl9ob3N0LT5nZ2MuYmgyMDFfZHJpdmVfc3RyZW5n dGg7DQo+ID4gKw0KPiA+ICsJYmh0X3VwZGF0ZV9jZmcobW1jX2hvc3QsIGNhcmQsIGdnX2h3X2lu aiwgZGF0YV9sZW4pOyB9DQo+ID4gKw0KPiBbLi5dDQo+ID4gK3N0YXRpYyB2b2lkIHNkaGNpX21z bV9iYXlodWJfd3JpdGViKHN0cnVjdCBzZGhjaV9ob3N0ICpob3N0LCB1OCANCj4gPiArdmFsLCBp bnQgcmVnKSB7DQo+ID4gKwl1MzIgcmVxX3R5cGUgPSAwOw0KPiANCj4gRG9uJ3QgaW5pdGlhbGl6 ZSB2YXJpYWJsZXMgd2hlbiB0aGUgbmV4dCBvcGVyYXRpb24gb24gdGhhdCB2YXJpYWJsZSBpcyAN Cj4gYW4gYXNzaWdubWVudC4NCj4gDQpZZXMsIHRoYW5rcyBmb3IgeW91ciBhZHZpY2UuDQoNCj4g PiArDQo+ID4gKwlyZXFfdHlwZSA9IF9fc2RoY2lfbXNtX2JheWh1Yl9jaGVja193cml0ZShob3N0 LCB2YWwsIHJlZyk7DQo+ID4gKw0KPiA+ICsJd3JpdGViX3JlbGF4ZWQodmFsLCBob3N0LT5pb2Fk ZHIgKyByZWcpOw0KPiA+ICsNCj4gPiArCWlmIChyZXFfdHlwZSkNCj4gPiArCQlzZGhjaV9tc21f YmF5aHViX2NoZWNrX3Bvd2VyX3N0YXR1cyhob3N0LCByZXFfdHlwZSk7IH0NCj4gWy4uXQ0KPiA+ ICtzdGF0aWMgaW50IHNkaGNpX21zbV9iYXlodWJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2Rldmlj ZSAqcGRldikgew0KPiBbLi5dDQo+ID4gKwlpZiAob2ZfZmluZF9wcm9wZXJ0eShub2RlLCAidXNl LWJheWh1Yi1iaDIwMSIsIE5VTEwpKSB7DQo+IA0KPiBXaHkgd291bGQgc29tZW9uZSB1c2UgdGhl IGJheWh1YiBjb21wYXRpYmxlLCBidXQgbm90IGhhdmUgdGhlIGJoMjAxPw0KPiANCj4gSXNuJ3Qg dGhpcyBhIGxlZnRvdmVyIGZyb20gYSBwcmV2aW91cyB2ZXJzaW9uIHdoZXJlIHRoaXMgd2FzIGEg cGF0Y2ggDQo+IG9udG9wIG9mIHNkaGNpLW1zbT8NCj4gDQpZZXMsIHlvdSBhcmUgcmlnaHQsIHdp bGwgbW9kaWZ5IGl0IGF0IG5leHQgdmVyc2lvbi4NCg0KPiA+ICsJCXNkaGNpX2JoMjAxX3BhcnNl KG1zbV9iYXlodWJfaG9zdC0+bW1jKTsNCj4gPiArCQlJTklUX0RFTEFZRURfV09SSygmaG9zdC0+ bW1jLT5kZXRlY3QsDQo+IG1tY19yZXNjYW5fYmF5aHViKTsNCj4gPiArCX0gZWxzZQ0KPiA+ICsJ CW1zbV9iYXlodWJfaG9zdC0+Z2djLmJoMjAxX3VzZWQgPSAwOw0KPiA+ICsNCj4gDQo+IFJlZ2Fy ZHMsDQo+IEJqb3JuDQo=