From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-11.9 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, MSGID_FROM_MTA_HEADER,NICE_REPLY_A,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 907DDC433E6 for ; Fri, 28 Aug 2020 08:24:00 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 4399E20C56 for ; Fri, 28 Aug 2020 08:24:00 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=amdcloud.onmicrosoft.com header.i=@amdcloud.onmicrosoft.com header.b="jeTs0D7E" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4399E20C56 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=amd.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=amd-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E7E4689ECB; Fri, 28 Aug 2020 08:23:59 +0000 (UTC) Received: from NAM12-BN8-obe.outbound.protection.outlook.com (mail-bn8nam12on2081.outbound.protection.outlook.com [40.107.237.81]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1F87189ECB for ; Fri, 28 Aug 2020 08:23:58 +0000 (UTC) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=J2qe/AFq92lHr503Icod19rNkjbE8OAmExNWtpuloKPhoaRR4/GOV4z/e1FNJ94ku5Xtl/+DRpNIPHIJ8VyyZ+tDd7CAWZhTbHlvLrhIH8z1u1MmHXNjgUjpnQ58aEhe0zZ5TWaGe4xF+e+Lk/QuNYayxibuqYWxzwUZJgnQ04xrBd0+4Ne4YACffcAVn6kAxTHFtP2Mpalc5n2RMX1ZWNPMJV8LiAKR/88YSKUsOk+4azke/85fBHqP0TtRWybFYX7PUyQ/1NsrthK9f2jYl1GghEcIztoL7B+E7Eu6GmEXjfAAdWB7dNnTecW50BAo5HGkkTrB+FeRq6WMgh7DyQ== 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=iyQdYguadNKlSis68HKEWcswAKU+bnTTZWw7aFils0c=; b=UjYGwaV0/1gnoxDnlvp+HlNzFxxbFr3GZavWyifvGmjFgzDO+7TgoFjhHdt1Pr+gdRCDdkJypSc1f8EyE/Ase7afmd7eHEMxmT/as+S4Kp/5Y+EtUCPfV84CrnpEZLXVRgoxqpO5+du1LGHfMOh0Yy+r1Cx+kuz/Q5giifLFcEIo4+8NL/NpZ9A2ArAwxFLGelZoMmwJG7S8zXhYNlcmx/aFvKFdLOV4C5UG2oUma4mLN980asL76OXH7mxhqTNUPGa0rSd2d2uHwIpAdj33lfG76DOJJxUXfV1skKBphei+Y/zzOcdf58ZtkdBX+x95SvUXfn+njIbgKW/DfQLxLw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=amd.com; dmarc=pass action=none header.from=amd.com; dkim=pass header.d=amd.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amdcloud.onmicrosoft.com; s=selector2-amdcloud-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iyQdYguadNKlSis68HKEWcswAKU+bnTTZWw7aFils0c=; b=jeTs0D7Ejp4IbELwJ3hojlI6xvf/djZZ6aF3qyeNeiyBB/mmh2r0DYmhIVXAG8s9C/7YHN7NJG/3oflOo4V2S4vXVOxzMYpj5jCffWTew4vPT8JyLXCzVKYFq7HC75oUYGSiAssQfqp+Q7ZerNntxD/J5MxHUzHM7MwXf5a83AQ= Authentication-Results: lists.freedesktop.org; dkim=none (message not signed) header.d=none; lists.freedesktop.org; dmarc=none action=none header.from=amd.com; Received: from MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) by BL0PR12MB2452.namprd12.prod.outlook.com (2603:10b6:207:3f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.21; Fri, 28 Aug 2020 08:23:52 +0000 Received: from MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::a16e:8812:b4c0:918d]) by MN2PR12MB3775.namprd12.prod.outlook.com ([fe80::a16e:8812:b4c0:918d%6]) with mapi id 15.20.3283.030; Fri, 28 Aug 2020 08:23:52 +0000 Subject: Re: [PATCH v2] drm/amdgpu: add support for user trap handlers To: Samuel Pitoiset , amd-gfx@lists.freedesktop.org References: <20200824114916.11808-1-samuel.pitoiset@gmail.com> <20200825140708.1334-1-samuel.pitoiset@gmail.com> From: =?UTF-8?Q?Christian_K=c3=b6nig?= Message-ID: Date: Fri, 28 Aug 2020 10:23:47 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.10.0 In-Reply-To: Content-Language: en-US X-ClientProxiedBy: AM0PR03CA0005.eurprd03.prod.outlook.com (2603:10a6:208:14::18) To MN2PR12MB3775.namprd12.prod.outlook.com (2603:10b6:208:159::19) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2a02:908:1252:fb60:be8a:bd56:1f94:86e7] (2a02:908:1252:fb60:be8a:bd56:1f94:86e7) by AM0PR03CA0005.eurprd03.prod.outlook.com (2603:10a6:208:14::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3326.19 via Frontend Transport; Fri, 28 Aug 2020 08:23:51 +0000 X-Originating-IP: [2a02:908:1252:fb60:be8a:bd56:1f94:86e7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: 3f466aa0-a1e1-4afe-21d4-08d84b2bb278 X-MS-TrafficTypeDiagnostic: BL0PR12MB2452: X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nnsjys1L00IxntqvKl9Kh8HUwCZRP8kWfuSMDn6C7zhI7WbIQuLj45Y1vpYh9VNftrZNhPX1MQUFaDRkaG4M29buMQw4LRNwY43nT5FMIOkUXtwk5OARCm+OD2Twwq3ej8jMMmTI0OaluGMWQSWo0t/9etV+uHLbNFFTmZHwDVTeIicZW/Sc5ZSxw5Z8Xn7m3cEZYoL1JXbHjJ1XaxDIjVty9mMIea6+V/JydjRsH3vHmhrjYFg/PFrKLUneaKxUnUDWOyNEOCAzVYDaHhDhH58u3O6/Glr6uNnIxoCQ0+yLVI1HqBAOSLlnjFLtcgk594C533/wiwWflm0Bk1BMezarcrF+HxgmYN3S6BS81hvDWzWCGObKIcaz5v9rYHU99IgUAoyisOReoLJLj1cvjQ== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR12MB3775.namprd12.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(396003)(39860400002)(136003)(346002)(376002)(16526019)(86362001)(66946007)(30864003)(53546011)(52116002)(8936002)(5660300002)(478600001)(31686004)(186003)(6486002)(36756003)(6666004)(66574015)(2906002)(31696002)(83380400001)(66476007)(66556008)(2616005)(316002)(8676002)(43740500002)(309714004); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: FAxXdjuNFKEFmUtn9Ape1BTQdVe91O+sbE1kle0JsdZKGB8WNf/W/382mT/pXDzttZakhiqYSm/4lv/Hx4W5DI6m9//gKhYYDWOVuevf1Yo6NWB3uTCqO2UF662VTIt58suuutk0o2cXIY0BdUvDP99E0CpQskueJ1lkEPwHXwnYmNEVGZtKWvJx4H/PwDqpdy56nTanTVxvavfZiUX16Xixd87iLGlT1qbS0js1W2inzHOhiSP4HwFsFuQ+Rcg3eb+vUFOlLLNPjpOSoNXzfzw15FawAjB38RA7bKvsQi9688ph55sZsbVSwTbWk/T8sEtCXnn6Ge3+R3RVMN6ydsGeGZ2mlMIa1MhE9BT1pcabaIcV8sVB4RdDBBSjOuDYqMOPaT5OiN358Ru4nS7FOvUh4psyT5LNiHexhYxlRriRYz9GQkxAPobPJqSOp77ha1pVpWm837MswFJ6eDdgBpI0zqdrVFpaoNmowZEDlDr7ZcZ4DNF8GwufuaGeNmlbRDiAXEetyNxJsH54Of3ruelNBobhIzOe2gIMyMNflovfZuQgxHazlyYDGUI3wdokhnmajqSCA75I8dEcYyKNJIdCkM4QeRwP3yIAnQqEWLpCZ3vbNtGe5lPPiVIBoQSpuidVNE+C2PghsLTx7xhHoTC2unxni5ND5KWsiaAtymA7hFrmQwRh4xnXqR5WPMQGh29YCcTlEza1q0ZezEtyPA== X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f466aa0-a1e1-4afe-21d4-08d84b2bb278 X-MS-Exchange-CrossTenant-AuthSource: MN2PR12MB3775.namprd12.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Aug 2020 08:23:52.4848 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: dk0hKpHt71Oz6+lA+YqpZiR3R77GUoXvc4wze65mttBRNaeaBRgYitaBi2hmyJBk X-MS-Exchange-Transport-CrossTenantHeadersStamped: BL0PR12MB2452 X-BeenThere: amd-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: amd-gfx-bounces@lists.freedesktop.org Sender: "amd-gfx" QW0gMjguMDguMjAgdW0gMTA6MTQgc2NocmllYiBTYW11ZWwgUGl0b2lzZXQ6Cj4KPiBPbiA4LzI4 LzIwIDk6NTcgQU0sIENocmlzdGlhbiBLw7ZuaWcgd3JvdGU6Cj4+IEFtIDI1LjA4LjIwIHVtIDE2 OjA3IHNjaHJpZWIgU2FtdWVsIFBpdG9pc2V0Ogo+Pj4gQSB0cmFwIGhhbmRsZXIgY2FuIGJlIHVz ZWQgYnkgdXNlcnNwYWNlIHRvIGNhdGNoIHNoYWRlciBleGNlcHRpb25zCj4+PiBsaWtlIGRpdmlk ZSBieSB6ZXJvLCBtZW1vcnkgdmlvbGF0aW9ucyBldGMuCj4+Pgo+Pj4gT24gR0ZYNi1HRlg4LCB0 aGUgcmVnaXN0ZXJzIHVzZWQgdG8gY29uZmlndXJlIFRCQS9UTUEgYXJlbid0Cj4+PiBwcml2aWxl Z2VkIGFuZCBjYW4gYmUgY29uZmlndXJlZCBmcm9tIHVzZXJwYWNlLgo+Pj4KPj4+IE9uIEdGWDkr IHRoZXkgYXJlIHBlciBWTUlEIGFuZCBwcml2aWxlZ2VkLCBvbmx5IHRoZSBLTUQgY2FuCj4+PiBj b25maWd1cmUgdGhlbS4gQXQgdGhlIG1vbWVudCwgd2UgZG9uJ3Qga25vdyBob3cgdG8gc2V0IHRo ZW0KPj4+IHZpYSB0aGUgQ1AsIHNvIHRoZXkgYXJlIG9ubHkgZW1pdHRlZCBpZiBhIFZNSUQgaXMg cmVzZXJ2ZWQuCj4+Pgo+Pj4gVGhpcyBpbnRyb2R1Y2VzIGEgbmV3IENTIGNodW5rIHRoYXQgY2Fu IGJlIHVzZWQgdG8gc2V0IHRoZQo+Pj4gVEJBL1RNQSB2aXJ0dWFsIGFkZHJlc3MgYXQgc3VibWl0 IHRpbWUuCj4+Pgo+Pj4gVE9ETzoKPj4+IC0gcmViYXNlIG9uIHRvcCBvZiBhbWQtc3RhZ2luZy1k cm0tbmV4dCAodGhpcyBicmFuY2ggY3VycmVudGx5Cj4+PiBoYW5ncyBteSBHUFUgYXQgYm9vdCkK Pj4KPj4gUGxlYXNlIHNwbGl0IHRoYXQgdXAgaW50byBtdWx0aXBsZSBwYXRjaGVzLiBUaGUgZmly c3Qgb25lIGFkZGluZyB0aGUgCj4+IGdlbmVyYWwgaW5mcmFzdHJ1Y3R1cmUgYW5kIHRoZSBmb2xs b3dpbmcgb25lIHRoZSBpbXBsZW1lbnRhdGlvbiBmb3IgCj4+IGdmeDkgYW5kIGdmeDEwLgo+IFNv dW5kcyBnb29kLgo+Pgo+PiBBbmQgbWF5YmUgZXZlbiBzdXBwb3J0IHRoaXMgZm9yIGdmeDYtOCBl dmVuIGlmIGl0IGlzIG5vdCBuZWNlc3Nhcnk/IAo+PiBMb29rcyB0cml2aWFsIHRvIGltcGxlbWVu dCBhbmQgd291bGQgZ2l2ZSB1c2Vyc3BhY2UgYSBtb3JlIHVuaWZvcm0gCj4+IGhhbmRsaW5nIGZv ciB0aGlzLgo+IHYxIGFkZGVkIGdmeDYtOCBzdXBwb3J0IGJ1dCBJIHJlbW92ZWQgaXQgaW4gdjIg YXMgcmVxdWVzdGVkIGJ5IEFsZXggCj4gYmVjYXVzZSBpdCdzIHVzZWxlc3MgYW5kIG1pZ2h0IGJl IGJldHRlciBmb3IgcHJlZW1wdGlvbi4KPj4KPj4gQSBmZXcgbW9yZSBjb21tZW50cyBiZWxvdy4K Pj4KPj4+Cj4+PiBTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgUGl0b2lzZXQgPHNhbXVlbC5waXRvaXNl dEBnbWFpbC5jb20+Cj4+PiAtLS0KPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2Ft ZGdwdV9jcy5jwqDCoCB8IDMxIAo+Pj4gKysrKysrKysrKysrKysrKysrKysrKysrCj4+PiDCoCBk cml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmPCoCB8wqAgMyArKy0KPj4+IMKg IGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9pZHMuaMKgIHzCoCA0ICsrKwo+Pj4g wqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5owqAgfMKgIDQgKysrCj4+ PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oIHzCoCA0ICsrKwo+ Pj4gwqAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmPCoMKgIHwgMjAgKysr KysrKysrKysrKy0tCj4+PiDCoCBkcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAu Y8KgwqAgfCAyMCArKysrKysrKysrKysrKysKPj4+IMKgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1k Z3B1L2dmeF92OV8wLmPCoMKgwqAgfCAxOSArKysrKysrKysrKysrKysKPj4+IMKgIGluY2x1ZGUv dWFwaS9kcm0vYW1kZ3B1X2RybS5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqAgOCArKysrKysK Pj4+IMKgIDkgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0p Cj4+Pgo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9j cy5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4gaW5k ZXggYTUxMmNjYmM0ZGVhLi42Y2E1YzQ5MTJlM2EgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfY3MuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Ft ZC9hbWRncHUvYW1kZ3B1X2NzLmMKPj4+IEBAIC0xMDQsNiArMTA0LDE5IEBAIHN0YXRpYyBpbnQg YW1kZ3B1X2NzX2JvX2hhbmRsZXNfY2h1bmsoc3RydWN0IAo+Pj4gYW1kZ3B1X2NzX3BhcnNlciAq cCwKPj4+IMKgwqDCoMKgwqAgcmV0dXJuIHI7Cj4+PiDCoCB9Cj4+PiDCoCArc3RhdGljIGludCBh bWRncHVfY3NfdXNlcl90cmFwX2NodW5rKHN0cnVjdCBhbWRncHVfY3NfcGFyc2VyICpwLAo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9hbWRn cHVfY3NfY2h1bmtfdHJhcCAqZGF0YSwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVpbnQ2NF90ICp0YmFfYWRkciwgdWludDY0X3QgKnRtYV9hZGRyKQo+Pj4g K3sKPj4+ICvCoMKgwqAgaWYgKCFkYXRhLT50YmFfYWRkciB8fCAhZGF0YS0+dG1hX2FkZHIpCj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIC1FSU5WQUw7Cj4+PiArCj4+PiArwqDCoMKgICp0YmFf YWRkciA9IGRhdGEtPnRiYV9hZGRyOwo+Pj4gK8KgwqDCoCAqdG1hX2FkZHIgPSBkYXRhLT50bWFf YWRkcjsKPj4+ICsKPj4+ICvCoMKgwqAgcmV0dXJuIDA7Cj4+PiArfQo+Pj4gKwo+Pj4gwqAgc3Rh dGljIGludCBhbWRncHVfY3NfcGFyc2VyX2luaXQoc3RydWN0IGFtZGdwdV9jc19wYXJzZXIgKnAs IHVuaW9uIAo+Pj4gZHJtX2FtZGdwdV9jcyAqY3MpCj4+PiDCoCB7Cj4+PiDCoMKgwqDCoMKgIHN0 cnVjdCBhbWRncHVfZnByaXYgKmZwcml2ID0gcC0+ZmlscC0+ZHJpdmVyX3ByaXY7Cj4+PiBAQCAt MTEyLDYgKzEyNSw3IEBAIHN0YXRpYyBpbnQgYW1kZ3B1X2NzX3BhcnNlcl9pbml0KHN0cnVjdCAK Pj4+IGFtZGdwdV9jc19wYXJzZXIgKnAsIHVuaW9uIGRybV9hbWRncHVfY3MKPj4+IMKgwqDCoMKg wqAgdWludDY0X3QgKmNodW5rX2FycmF5Owo+Pj4gwqDCoMKgwqDCoCB1bnNpZ25lZCBzaXplLCBu dW1faWJzID0gMDsKPj4+IMKgwqDCoMKgwqAgdWludDMyX3QgdWZfb2Zmc2V0ID0gMDsKPj4+ICvC oMKgwqAgdWludDY0X3QgdGJhX2FkZHIgPSAwLCB0bWFfYWRkciA9IDA7Cj4+PiDCoMKgwqDCoMKg IGludCBpOwo+Pj4gwqDCoMKgwqDCoCBpbnQgcmV0Owo+Pj4gwqAgQEAgLTIxNCw2ICsyMjgsMTkg QEAgc3RhdGljIGludCBhbWRncHVfY3NfcGFyc2VyX2luaXQoc3RydWN0IAo+Pj4gYW1kZ3B1X2Nz X3BhcnNlciAqcCwgdW5pb24gZHJtX2FtZGdwdV9jcwo+Pj4gwqAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgYnJlYWs7Cj4+PiDCoCArwqDCoMKgwqDCoMKgwqAgY2FzZSBBTURHUFVfQ0hVTktf SURfVFJBUDoKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemUgPSBzaXplb2Yoc3RydWN0 IGRybV9hbWRncHVfY3NfY2h1bmtfdHJhcCk7Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBp ZiAocC0+Y2h1bmtzW2ldLmxlbmd0aF9kdyAqIHNpemVvZih1aW50MzJfdCkgPCBzaXplKSB7Cj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IC1FSU5WQUw7Cj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZnJlZV9wYXJ0aWFsX2tkYXRhOwo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQo+Pj4gKwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0ID0gYW1kZ3B1X2NzX3VzZXJfdHJhcF9jaHVuayhwLCBwLT5jaHVua3NbaV0ua2RhdGEs Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICZ0YmFfYWRkciwgJnRtYV9hZGRyKTsKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm IChyZXQpCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZnJlZV9wYXJ0 aWFsX2tkYXRhOwo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7Cj4+PiArCj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBBTURHUFVfQ0hVTktfSURfREVQRU5ERU5DSUVTOgo+Pj4g wqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgQU1ER1BVX0NIVU5LX0lEX1NZTkNPQkpfSU46Cj4+PiDC oMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBBTURHUFVfQ0hVTktfSURfU1lOQ09CSl9PVVQ6Cj4+PiBA QCAtMjM5LDYgKzI2NiwxMCBAQCBzdGF0aWMgaW50IGFtZGdwdV9jc19wYXJzZXJfaW5pdChzdHJ1 Y3QgCj4+PiBhbWRncHVfY3NfcGFyc2VyICpwLCB1bmlvbiBkcm1fYW1kZ3B1X2NzCj4+PiDCoCDC oMKgwqDCoMKgIGlmIChwLT51Zl9lbnRyeS50di5ibykKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCBw LT5qb2ItPnVmX2FkZHIgPSB1Zl9vZmZzZXQ7Cj4+PiArCj4+PiArwqDCoMKgIHAtPmpvYi0+dGJh X2FkZHIgPSB0YmFfYWRkcjsKPj4+ICvCoMKgwqAgcC0+am9iLT50bWFfYWRkciA9IHRtYV9hZGRy Owo+Pj4gKwo+Pj4gwqDCoMKgwqDCoCBrZnJlZShjaHVua19hcnJheSk7Cj4+PiDCoCDCoMKgwqDC oMKgIC8qIFVzZSB0aGlzIG9wcG9ydHVuaXR5IHRvIGZpbGwgaW4gdGFzayBpbmZvIGZvciB0aGUg dm0gKi8KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVf ZHJ2LmMgCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4g aW5kZXggMjYxMjdjN2QyZjMyLi4xZTcwMzExOWU0YzIgMTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfZHJ2LmMKPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9kcnYuYwo+Pj4gQEAgLTg4LDkgKzg4LDEwIEBACj4+PiDCoMKg ICogLSAzLjM3LjAgLSBMMiBpcyBpbnZhbGlkYXRlZCBiZWZvcmUgU0RNQSBJQnMsIG5lZWRlZCBm b3IgCj4+PiBjb3JyZWN0bmVzcwo+Pj4gwqDCoCAqIC0gMy4zOC4wIC0gQWRkIEFNREdQVV9JQl9G TEFHX0VNSVRfTUVNX1NZTkMKPj4+IMKgwqAgKiAtIDMuMzkuMCAtIERNQUJVRiBpbXBsaWNpdCBz eW5jIGRvZXMgYSBmdWxsIHBpcGVsaW5lIHN5bmMKPj4+ICsgKiAtIDMuNDAuMCAtIEFkZCBBTURH UFVfQ0hVTktfSURfVFJBUAo+Pj4gwqDCoCAqLwo+Pj4gwqAgI2RlZmluZSBLTVNfRFJJVkVSX01B Sk9SwqDCoMKgIDMKPj4+IC0jZGVmaW5lIEtNU19EUklWRVJfTUlOT1LCoMKgwqAgMzkKPj4+ICsj ZGVmaW5lIEtNU19EUklWRVJfTUlOT1LCoMKgwqAgNDAKPj4+IMKgICNkZWZpbmUgS01TX0RSSVZF Ul9QQVRDSExFVkVMwqDCoMKgIDAKPj4+IMKgIMKgIGludCBhbWRncHVfdnJhbV9saW1pdCA9IDA7 Cj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5o IAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfaWRzLmgKPj4+IGluZGV4 IDhlNTgzMjViYmNhMi4uZmQwZDU2NzI0YjRkIDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2lkcy5oCj4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHVfaWRzLmgKPj4+IEBAIC01OCw2ICs1OCwxMCBAQCBzdHJ1Y3QgYW1kZ3B1 X3ZtaWQgewo+Pj4gwqDCoMKgwqDCoCB1aW50MzJfdMKgwqDCoMKgwqDCoMKgIG9hX2Jhc2U7Cj4+ PiDCoMKgwqDCoMKgIHVpbnQzMl90wqDCoMKgwqDCoMKgwqAgb2Ffc2l6ZTsKPj4+IMKgICvCoMKg wqAgLyogdXNlciB0cmFwICovCj4+PiArwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdGJh X2FkZHI7Cj4+PiArwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdG1hX2FkZHI7Cj4+PiAr Cj4+PiDCoMKgwqDCoMKgIHVuc2lnbmVkwqDCoMKgwqDCoMKgwqAgcGFzaWQ7Cj4+PiDCoMKgwqDC oMKgIHN0cnVjdCBkbWFfZmVuY2XCoMKgwqAgKnBhc2lkX21hcHBpbmc7Cj4+PiDCoCB9Owo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9qb2IuaCAKPj4+ IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2pvYi5oCj4+PiBpbmRleCA4MWNh YWM5Yjk1OGEuLmI4ZWQ1YjEzZWE0NCAxMDA2NDQKPj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9h bWQvYW1kZ3B1L2FtZGdwdV9qb2IuaAo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRn cHUvYW1kZ3B1X2pvYi5oCj4+PiBAQCAtNjIsNiArNjIsMTAgQEAgc3RydWN0IGFtZGdwdV9qb2Ig ewo+Pj4gwqDCoMKgwqDCoCAvKiB1c2VyIGZlbmNlIGhhbmRsaW5nICovCj4+PiDCoMKgwqDCoMKg IHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdWZfYWRkcjsKPj4+IMKgwqDCoMKgwqAgdWludDY0X3TC oMKgwqDCoMKgwqDCoCB1Zl9zZXF1ZW5jZTsKPj4+ICsKPj4+ICvCoMKgwqAgLyogdXNlciB0cmFw IGhhbmRsaW5nICovCj4+PiArwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdGJhX2FkZHI7 Cj4+PiArwqDCoMKgIHVpbnQ2NF90wqDCoMKgwqDCoMKgwqAgdG1hX2FkZHI7Cj4+PiDCoCB9Owo+ Pj4gwqAgwqAgaW50IGFtZGdwdV9qb2JfYWxsb2Moc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYs IHVuc2lnbmVkIG51bV9pYnMsCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvYW1kZ3B1X3JpbmcuaCAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1k Z3B1X3JpbmcuaAo+Pj4gaW5kZXggZGE4NzFkODRiNzQyLi4xZjE2NWE2Mjk1ZDkgMTAwNjQ0Cj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9hbWRncHVfcmluZy5oCj4+PiBAQCAtMTk3LDYg KzE5Nyw5IEBAIHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyB7Cj4+PiDCoMKgwqDCoMKgIHZvaWQg KCpzb2Z0X3JlY292ZXJ5KShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJpbmcsIHVuc2lnbmVkIHZtaWQp Owo+Pj4gwqDCoMKgwqDCoCBpbnQgKCpwcmVlbXB0X2liKShzdHJ1Y3QgYW1kZ3B1X3JpbmcgKnJp bmcpOwo+Pj4gwqDCoMKgwqDCoCB2b2lkICgqZW1pdF9tZW1fc3luYykoc3RydWN0IGFtZGdwdV9y aW5nICpyaW5nKTsKPj4+ICvCoMKgwqAgdm9pZCAoKmVtaXRfdHJhcF9oYW5kbGVyKShzdHJ1Y3Qg YW1kZ3B1X3JpbmcgKnJpbmcsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCB1aW50MzJfdCB2bWlkLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dWludDY0X3QgdGJhX2FkZHIsIHVpbnQ2NF90IHRtYV9hZGRyKTsKPj4+IMKgIH07Cj4+PiDCoCDC oCBzdHJ1Y3QgYW1kZ3B1X3Jpbmcgewo+Pj4gQEAgLTI2NSw2ICsyNjgsNyBAQCBzdHJ1Y3QgYW1k Z3B1X3Jpbmcgewo+Pj4gwqAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3ZtX2ZsdXNoKHIsIHZt aWQsIGFkZHIpIAo+Pj4gKHIpLT5mdW5jcy0+ZW1pdF92bV9mbHVzaCgociksICh2bWlkKSwgKGFk ZHIpKQo+Pj4gwqAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2ZlbmNlKHIsIGFkZHIsIHNlcSwg ZmxhZ3MpIAo+Pj4gKHIpLT5mdW5jcy0+ZW1pdF9mZW5jZSgociksIChhZGRyKSwgKHNlcSksIChm bGFncykpCj4+PiDCoCAjZGVmaW5lIGFtZGdwdV9yaW5nX2VtaXRfZ2RzX3N3aXRjaChyLCB2LCBk YiwgZHMsIHdiLCB3cywgYWIsIGFzKSAKPj4+IChyKS0+ZnVuY3MtPmVtaXRfZ2RzX3N3aXRjaCgo ciksICh2KSwgKGRiKSwgKGRzKSwgKHdiKSwgKHdzKSwgKGFiKSwgCj4+PiAoYXMpKQo+Pj4gKyNk ZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF90cmFwX2hhbmRsZXIociwgdiwgdGJhLCB0bWEpIAo+Pj4g KHIpLT5mdW5jcy0+ZW1pdF90cmFwX2hhbmRsZXIoKHIpLCAodiksICh0YmEpLCAodG1hKSkKPj4+ IMKgICNkZWZpbmUgYW1kZ3B1X3JpbmdfZW1pdF9oZHBfZmx1c2gocikgKHIpLT5mdW5jcy0+ZW1p dF9oZHBfZmx1c2goKHIpKQo+Pj4gwqAgI2RlZmluZSBhbWRncHVfcmluZ19lbWl0X3N3aXRjaF9i dWZmZXIocikgCj4+PiAociktPmZ1bmNzLT5lbWl0X3N3aXRjaF9idWZmZXIoKHIpKQo+Pj4gwqAg I2RlZmluZSBhbWRncHVfcmluZ19lbWl0X2NudHhjbnRsKHIsIGQpIAo+Pj4gKHIpLT5mdW5jcy0+ ZW1pdF9jbnR4Y250bCgociksIChkKSkKPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v YW1kL2FtZGdwdS9hbWRncHVfdm0uYyAKPj4+IGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X3ZtLmMKPj4+IGluZGV4IDcxZTAwNWNmMjk1Mi4uNmI2MTliYjAzNzc3IDEwMDY0NAo+ Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3ZtLmMKPj4+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV92bS5jCj4+PiBAQCAtMTA3OSwxNSAr MTA3OSwyMiBAQCBpbnQgYW1kZ3B1X3ZtX2ZsdXNoKHN0cnVjdCBhbWRncHVfcmluZyAKPj4+ICpy aW5nLCBzdHJ1Y3QgYW1kZ3B1X2pvYiAqam9iLAo+Pj4gwqDCoMKgwqDCoCBib29sIHZtX2ZsdXNo X25lZWRlZCA9IGpvYi0+dm1fbmVlZHNfZmx1c2g7Cj4+PiDCoMKgwqDCoMKgIHN0cnVjdCBkbWFf ZmVuY2UgKmZlbmNlID0gTlVMTDsKPj4+IMKgwqDCoMKgwqAgYm9vbCBwYXNpZF9tYXBwaW5nX25l ZWRlZCA9IGZhbHNlOwo+Pj4gK8KgwqDCoCBib29sIHRyYXBfaGFuZGxlcl9uZWVkZWQgPSBmYWxz ZTsKPj4+IMKgwqDCoMKgwqAgdW5zaWduZWQgcGF0Y2hfb2Zmc2V0ID0gMDsKPj4+IMKgwqDCoMKg wqAgYm9vbCB1cGRhdGVfc3BtX3ZtaWRfbmVlZGVkID0gKGpvYi0+dm0gJiYgCj4+PiAoam9iLT52 bS0+cmVzZXJ2ZWRfdm1pZFt2bWh1Yl0gIT0gTlVMTCkpOwo+Pj4gwqDCoMKgwqDCoCBpbnQgcjsK Pj4+IMKgIC3CoMKgwqAgaWYgKHVwZGF0ZV9zcG1fdm1pZF9uZWVkZWQgJiYgCj4+PiBhZGV2LT5n ZngucmxjLmZ1bmNzLT51cGRhdGVfc3BtX3ZtaWQpCj4+PiArwqDCoMKgIGlmICh1cGRhdGVfc3Bt X3ZtaWRfbmVlZGVkICYmIAo+Pj4gYWRldi0+Z2Z4LnJsYy5mdW5jcy0+dXBkYXRlX3NwbV92bWlk KSB7Cj4+PiDCoMKgwqDCoMKgwqDCoMKgwqAgYWRldi0+Z2Z4LnJsYy5mdW5jcy0+dXBkYXRlX3Nw bV92bWlkKGFkZXYsIGpvYi0+dm1pZCk7Cj4+PiDCoCArwqDCoMKgwqDCoMKgwqAgdHJhcF9oYW5k bGVyX25lZWRlZCA9IHJpbmctPmZ1bmNzLT5lbWl0X3RyYXBfaGFuZGxlciAmJiAoCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZC0+dGJhX2FkZHIgIT0gam9iLT50YmFfYWRkciB8fAo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWQtPnRtYV9hZGRyICE9IGpvYi0+dG1hX2FkZHIpOwo+ Pgo+PiBUaGF0J3MgcHJvYmFibHkgbm90IHN1Y2ggYSBnb29kIGlkZWEgc2luY2UgaXQgbWFrZXMg dGhlIHRyYXAgaGFuZGxlciAKPj4gZGVwZW5kIG9uIHRoZSBWTUlEIHJlc2VydmF0aW9uLgo+Pgo+ Pj4gK8KgwqDCoCB9Cj4+PiArCj4+PiDCoMKgwqDCoMKgIGlmIChhbWRncHVfdm1pZF9oYWRfZ3B1 X3Jlc2V0KGFkZXYsIGlkKSkgewo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGdkc19zd2l0Y2hfbmVl ZGVkID0gdHJ1ZTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB0cmFwX2hhbmRsZXJfbmVlZGVkID0gdHJ1 ZTsKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCB2bV9mbHVzaF9uZWVkZWQgPSB0cnVlOwo+Pj4gwqDC oMKgwqDCoMKgwqDCoMKgIHBhc2lkX21hcHBpbmdfbmVlZGVkID0gdHJ1ZTsKPj4+IMKgwqDCoMKg wqAgfQo+Pj4gQEAgLTEwOTksMTIgKzExMDYsMTQgQEAgaW50IGFtZGdwdV92bV9mbHVzaChzdHJ1 Y3QgYW1kZ3B1X3JpbmcgCj4+PiAqcmluZywgc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwKPj4+IMKg wqDCoMKgwqAgbXV0ZXhfdW5sb2NrKCZpZF9tZ3ItPmxvY2spOwo+Pj4gwqAgwqDCoMKgwqDCoCBn ZHNfc3dpdGNoX25lZWRlZCAmPSAhIXJpbmctPmZ1bmNzLT5lbWl0X2dkc19zd2l0Y2g7Cj4+PiAr wqDCoMKgIHRyYXBfaGFuZGxlcl9uZWVkZWQgJj0gISFyaW5nLT5mdW5jcy0+ZW1pdF90cmFwX2hh bmRsZXI7Cj4+PiDCoMKgwqDCoMKgIHZtX2ZsdXNoX25lZWRlZCAmPSAhIXJpbmctPmZ1bmNzLT5l bWl0X3ZtX2ZsdXNoICYmCj4+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqb2ItPnZtX3Bk X2FkZHIgIT0gQU1ER1BVX0JPX0lOVkFMSURfT0ZGU0VUOwo+Pj4gwqDCoMKgwqDCoCBwYXNpZF9t YXBwaW5nX25lZWRlZCAmPSAKPj4+IGFkZXYtPmdtYy5nbWNfZnVuY3MtPmVtaXRfcGFzaWRfbWFw cGluZyAmJgo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIHJpbmctPmZ1bmNzLT5lbWl0X3dyZWc7Cj4+ PiDCoCAtwqDCoMKgIGlmICghdm1fZmx1c2hfbmVlZGVkICYmICFnZHNfc3dpdGNoX25lZWRlZCAm JiAhbmVlZF9waXBlX3N5bmMpCj4+PiArwqDCoMKgIGlmICghdm1fZmx1c2hfbmVlZGVkICYmICFn ZHNfc3dpdGNoX25lZWRlZCAmJgo+Pj4gK8KgwqDCoMKgwqDCoMKgICF0cmFwX2hhbmRsZXJfbmVl ZGVkICYmICFuZWVkX3BpcGVfc3luYykKPj4+IMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gMDsK Pj4+IMKgIMKgwqDCoMKgwqAgaWYgKHJpbmctPmZ1bmNzLT5pbml0X2NvbmRfZXhlYykKPj4+IEBA IC0xMTU4LDYgKzExNjcsMTMgQEAgaW50IGFtZGdwdV92bV9mbHVzaChzdHJ1Y3QgYW1kZ3B1X3Jp bmcgKnJpbmcsIAo+Pj4gc3RydWN0IGFtZGdwdV9qb2IgKmpvYiwKPj4+IMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGpvYi0+b2Ffc2l6ZSk7Cj4+PiDC oMKgwqDCoMKgIH0KPj4+IMKgICvCoMKgwqAgaWYgKHJpbmctPmZ1bmNzLT5lbWl0X3RyYXBfaGFu ZGxlciAmJiB0cmFwX2hhbmRsZXJfbmVlZGVkKSB7Cj4+PiArwqDCoMKgwqDCoMKgwqAgaWQtPnRi YV9hZGRyID0gam9iLT50YmFfYWRkcjsKPj4+ICvCoMKgwqDCoMKgwqDCoCBpZC0+dG1hX2FkZHIg PSBqb2ItPnRtYV9hZGRyOwo+Pj4gK8KgwqDCoMKgwqDCoMKgIGFtZGdwdV9yaW5nX2VtaXRfdHJh cF9oYW5kbGVyKHJpbmcsIGpvYi0+dm1pZCwgam9iLT50YmFfYWRkciwKPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqb2ItPnRtYV9hZGRyKTsK Pj4+ICvCoMKgwqAgfQo+Pj4gKwo+Pgo+PiBXZWxsIHRoYXQgZG9lc24ndCBzZWVtIHRvIG1ha2Ug c2Vuc2UgYXQgYWxsIGhlcmUuCj4+Cj4+PiDCoMKgwqDCoMKgIGlmIChyaW5nLT5mdW5jcy0+cGF0 Y2hfY29uZF9leGVjKQo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKgIGFtZGdwdV9yaW5nX3BhdGNoX2Nv bmRfZXhlYyhyaW5nLCBwYXRjaF9vZmZzZXQpOwo+Pj4gwqAgZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92MTBfMC5jIAo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9nZnhfdjEwXzAuYwo+Pj4gaW5kZXggNjU5OTdmZmFlZDQ1Li5mODY0YjIxNzU4OWYg MTAwNjQ0Cj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYW1kL2FtZGdwdS9nZnhfdjEwXzAuYwo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4X3YxMF8wLmMKPj4+IEBAIC03 MTQxLDYgKzcxNDEsMjQgQEAgc3RhdGljIHZvaWQgCj4+PiBnZnhfdjEwXzBfcmluZ19lbWl0X2dk c19zd2l0Y2goc3RydWN0IGFtZGdwdV9yaW5nICpyaW5nLAo+Pj4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgxIDw8IChvYV9zaXplICsgb2FfYmFzZSkpIC0gKDEg PDwgb2FfYmFzZSkpOwo+Pj4gwqAgfQo+Pj4gwqAgK3N0YXRpYyB2b2lkIGdmeF92MTBfMF9yaW5n X2VtaXRfdHJhcF9oYW5kbGVyKHN0cnVjdCBhbWRncHVfcmluZyAKPj4+ICpyaW5nLAo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdWludDMyX3Qgdm1p ZCwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVp bnQ2NF90IHRiYV9hZGRyLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgdWludDY0X3QgdG1hX2FkZHIpCj4+PiArewo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg YW1kZ3B1X2RldmljZSAqYWRldiA9IHJpbmctPmFkZXY7Cj4+PiArCj4+PiArwqDCoMKgIG11dGV4 X2xvY2soJmFkZXYtPnNyYm1fbXV0ZXgpOwo+Pj4gK8KgwqDCoCBudl9ncmJtX3NlbGVjdChhZGV2 LCAwLCAwLCAwLCB2bWlkKTsKPj4+ICvCoMKgwqAgV1JFRzMyX1NPQzE1X1JMQyhHQywgMCwgbW1T UV9TSEFERVJfVEJBX0xPLCAKPj4+IGxvd2VyXzMyX2JpdHModGJhX2FkZHIgPj4gOCkpOwo+Pj4g K8KgwqDCoCBXUkVHMzJfU09DMTVfUkxDKEdDLCAwLCBtbVNRX1NIQURFUl9UQkFfSEksIAo+Pj4g dXBwZXJfMzJfYml0cyh0YmFfYWRkciA+PiA4KSB8Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDEgPDwgU1FfU0hBREVSX1RCQV9ISV9fVFJBUF9FTl9fU0hJRlQpOwo+Pj4gK8Kg wqDCoCBXUkVHMzJfU09DMTVfUkxDKEdDLCAwLCBtbVNRX1NIQURFUl9UTUFfTE8sIAo+Pj4gbG93 ZXJfMzJfYml0cyh0bWFfYWRkciA+PiA4KSk7Cj4+PiArwqDCoMKgIFdSRUczMl9TT0MxNV9STEMo R0MsIDAsIG1tU1FfU0hBREVSX1RNQV9ISSwgCj4+PiB1cHBlcl8zMl9iaXRzKHRtYV9hZGRyID4+ IDgpKTsKPj4+ICvCoMKgwqAgbnZfZ3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Cj4+PiAr wqDCoMKgIG11dGV4X3VubG9jaygmYWRldi0+c3JibV9tdXRleCk7Cj4+Cj4+IFRoaXMgaXMgbm90 IGVtaXR0aW5nIHRoZSB0cmFwIGhhbmRsZXIgdXBkYXRlIHRvIHRoZSByaW5nLCBidXQgd3JpdGlu ZyAKPj4gaXQgZGlyZWN0bHkgdG8gdGhlIHJlZ2lzdGVycy4KPgo+IFRoaXMgdXNlcyBkaXJlY3Qg ZHJpdmVyIGFjY2VzcyBiZWNhdXNlIHdlIGRvbid0IGtub3cgaG93IHRvIGVtaXQgdGhlbSAKPiB2 aWEgQ1AuIFRoaXMgaXMgYWxzbyB3aHkgaXQncyBvbmx5IGVtaXR0ZWQgaWYgYSBWTUlEIGlzIHJl c2VydmVkLgo+Cj4gSSB0aGluayBBbGV4IGlzIGhhdmluZyBhIGRpc2N1c3Npb24gd2l0aCB0aGUg Q1AgdGVhbSBhYm91dCB0aGF0LgoKQWghIE9rIGluIHRoaXMgY2FzZSBwbGVhc2Uga2VlcCB0aGUg cGF0Y2ggb24gaG9sZCB1bnRpbCB0aGlzIGlzIGNsZWFyZWQuCgpCdXQgZXZlbiB3aGVuIHRoZSBW TUlEIGlzIHJlc2VydmVkIHRoaXMgY291bGQgY2F1c2UgYmlnIHByb2JsZW1zIGlmIAp1c2Vyc3Bh Y2UgZGVjaWRlcyB0byBjaGFuZ2UgdGhlIHRyYXAgYWRkcmVzc2VzIG9uIHRoZSBmbHkuCgpTbyB3 ZSBjYW4ndCByZWFsbHkgZG8gaXQgbGlrZSB0aGlzIHdpdGhvdXQgd2FpdGluZyBmb3IgdGhlIGhh cmR3YXJlIHRvIApiZSBpZGxlIGFuZCBjYXVzaW5nIG1hc3NpdmUgcGVyZm9ybWFuY2UgbG9zcy4K ClJlZ2FyZHMsCkNocmlzdGlhbi4KCj4KPj4KPj4gUmVnYXJkcywKPj4gQ2hyaXN0aWFuLgo+Pgo+ Pj4gK30KPj4+ICsKPj4+IMKgIHN0YXRpYyBpbnQgZ2Z4X3YxMF8wX2Vhcmx5X2luaXQodm9pZCAq aGFuZGxlKQo+Pj4gwqAgewo+Pj4gwqDCoMKgwqDCoCBzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRl diA9IChzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqKWhhbmRsZTsKPj4+IEBAIC04NTMwLDYgKzg1NDgs NyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5nX2Z1bmNzIAo+Pj4gZ2Z4X3YxMF8w X3JpbmdfZnVuY3NfZ2Z4ID0gewo+Pj4gwqDCoMKgwqDCoCAuZW1pdF9yZWdfd3JpdGVfcmVnX3dh aXQgPSAKPj4+IGdmeF92MTBfMF9yaW5nX2VtaXRfcmVnX3dyaXRlX3JlZ193YWl0LAo+Pj4gwqDC oMKgwqDCoCAuc29mdF9yZWNvdmVyeSA9IGdmeF92MTBfMF9yaW5nX3NvZnRfcmVjb3ZlcnksCj4+ PiDCoMKgwqDCoMKgIC5lbWl0X21lbV9zeW5jID0gZ2Z4X3YxMF8wX2VtaXRfbWVtX3N5bmMsCj4+ PiArwqDCoMKgIC5lbWl0X3RyYXBfaGFuZGxlciA9IGdmeF92MTBfMF9yaW5nX2VtaXRfdHJhcF9o YW5kbGVyLAo+Pj4gwqAgfTsKPj4+IMKgIMKgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3Jp bmdfZnVuY3MgCj4+PiBnZnhfdjEwXzBfcmluZ19mdW5jc19jb21wdXRlID0gewo+Pj4gQEAgLTg1 NjYsNiArODU4NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MgCj4+ PiBnZnhfdjEwXzBfcmluZ19mdW5jc19jb21wdXRlID0gewo+Pj4gwqDCoMKgwqDCoCAuZW1pdF9y ZWdfd2FpdCA9IGdmeF92MTBfMF9yaW5nX2VtaXRfcmVnX3dhaXQsCj4+PiDCoMKgwqDCoMKgIC5l bWl0X3JlZ193cml0ZV9yZWdfd2FpdCA9IAo+Pj4gZ2Z4X3YxMF8wX3JpbmdfZW1pdF9yZWdfd3Jp dGVfcmVnX3dhaXQsCj4+PiDCoMKgwqDCoMKgIC5lbWl0X21lbV9zeW5jID0gZ2Z4X3YxMF8wX2Vt aXRfbWVtX3N5bmMsCj4+PiArwqDCoMKgIC5lbWl0X3RyYXBfaGFuZGxlciA9IGdmeF92MTBfMF9y aW5nX2VtaXRfdHJhcF9oYW5kbGVyLAo+Pj4gwqAgfTsKPj4+IMKgIMKgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgYW1kZ3B1X3JpbmdfZnVuY3MgZ2Z4X3YxMF8wX3JpbmdfZnVuY3Nfa2lxID0gewo+Pj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMgCj4+PiBi L2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2dmeF92OV8wLmMKPj4+IGluZGV4IGNiOWQ2MGE0 ZTA1ZS4uNGZjMDBmMTk2MDg1IDEwMDY0NAo+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FtZC9h bWRncHUvZ2Z4X3Y5XzAuYwo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvZ2Z4 X3Y5XzAuYwo+Pj4gQEAgLTQxNjIsNiArNDE2MiwyMyBAQCBzdGF0aWMgdm9pZCAKPj4+IGdmeF92 OV8wX3JpbmdfZW1pdF9nZHNfc3dpdGNoKHN0cnVjdCBhbWRncHVfcmluZyAqcmluZywKPj4+IMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgKG9hX3NpemUgKyBv YV9iYXNlKSkgLSAoMSA8PCBvYV9iYXNlKSk7Cj4+PiDCoCB9Cj4+PiDCoCArc3RhdGljIHZvaWQg Z2Z4X3Y5XzBfcmluZ19lbWl0X3RyYXBfaGFuZGxlcihzdHJ1Y3QgYW1kZ3B1X3JpbmcgCj4+PiAq cmluZywKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHVpbnQzMl90IHZtaWQsCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCB1aW50NjRfdCB0YmFfYWRkciwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVpbnQ2NF90IHRtYV9hZGRyKQo+Pj4gK3sKPj4+ICvC oMKgwqAgc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYgPSByaW5nLT5hZGV2Owo+Pj4gKwo+Pj4g K8KgwqDCoCBtdXRleF9sb2NrKCZhZGV2LT5zcmJtX211dGV4KTsKPj4+ICvCoMKgwqAgc29jMTVf Z3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgdm1pZCk7Cj4+PiArwqDCoMKgIFdSRUczMl9TT0Mx NV9STEMoR0MsIDAsIG1tU1FfU0hBREVSX1RCQV9MTywgCj4+PiBsb3dlcl8zMl9iaXRzKHRiYV9h ZGRyID4+IDgpKTsKPj4+ICvCoMKgwqAgV1JFRzMyX1NPQzE1X1JMQyhHQywgMCwgbW1TUV9TSEFE RVJfVEJBX0hJLCAKPj4+IHVwcGVyXzMyX2JpdHModGJhX2FkZHIgPj4gOCkpOwo+Pj4gK8KgwqDC oCBXUkVHMzJfU09DMTVfUkxDKEdDLCAwLCBtbVNRX1NIQURFUl9UTUFfTE8sIAo+Pj4gbG93ZXJf MzJfYml0cyh0bWFfYWRkciA+PiA4KSk7Cj4+PiArwqDCoMKgIFdSRUczMl9TT0MxNV9STEMoR0Ms IDAsIG1tU1FfU0hBREVSX1RNQV9ISSwgCj4+PiB1cHBlcl8zMl9iaXRzKHRtYV9hZGRyID4+IDgp KTsKPj4+ICvCoMKgwqAgc29jMTVfZ3JibV9zZWxlY3QoYWRldiwgMCwgMCwgMCwgMCk7Cj4+PiAr wqDCoMKgIG11dGV4X3VubG9jaygmYWRldi0+c3JibV9tdXRleCk7Cj4+PiArfQo+Pj4gKwo+Pj4g wqAgc3RhdGljIGNvbnN0IHUzMiB2Z3ByX2luaXRfY29tcHV0ZV9zaGFkZXJbXSA9Cj4+PiDCoCB7 Cj4+PiDCoMKgwqDCoMKgIDB4YjA3YzAwMDAsIDB4YmU4MDAwZmYsCj4+PiBAQCAtNjcyMCw2ICs2 NzM3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyAKPj4+IGdmeF92 OV8wX3JpbmdfZnVuY3NfZ2Z4ID0gewo+Pj4gwqDCoMKgwqDCoCAuZW1pdF9yZWdfd3JpdGVfcmVn X3dhaXQgPSBnZnhfdjlfMF9yaW5nX2VtaXRfcmVnX3dyaXRlX3JlZ193YWl0LAo+Pj4gwqDCoMKg wqDCoCAuc29mdF9yZWNvdmVyeSA9IGdmeF92OV8wX3Jpbmdfc29mdF9yZWNvdmVyeSwKPj4+IMKg wqDCoMKgwqAgLmVtaXRfbWVtX3N5bmMgPSBnZnhfdjlfMF9lbWl0X21lbV9zeW5jLAo+Pj4gK8Kg wqDCoCAuZW1pdF90cmFwX2hhbmRsZXIgPSBnZnhfdjlfMF9yaW5nX2VtaXRfdHJhcF9oYW5kbGVy LAo+Pj4gwqAgfTsKPj4+IMKgIMKgIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYW1kZ3B1X3JpbmdfZnVu Y3MgCj4+PiBnZnhfdjlfMF9yaW5nX2Z1bmNzX2NvbXB1dGUgPSB7Cj4+PiBAQCAtNjc1Niw2ICs2 Nzc0LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBhbWRncHVfcmluZ19mdW5jcyAKPj4+IGdmeF92 OV8wX3JpbmdfZnVuY3NfY29tcHV0ZSA9IHsKPj4+IMKgwqDCoMKgwqAgLmVtaXRfcmVnX3dhaXQg PSBnZnhfdjlfMF9yaW5nX2VtaXRfcmVnX3dhaXQsCj4+PiDCoMKgwqDCoMKgIC5lbWl0X3JlZ193 cml0ZV9yZWdfd2FpdCA9IGdmeF92OV8wX3JpbmdfZW1pdF9yZWdfd3JpdGVfcmVnX3dhaXQsCj4+ PiDCoMKgwqDCoMKgIC5lbWl0X21lbV9zeW5jID0gZ2Z4X3Y5XzBfZW1pdF9tZW1fc3luYywKPj4+ ICvCoMKgwqAgLmVtaXRfdHJhcF9oYW5kbGVyID0gZ2Z4X3Y5XzBfcmluZ19lbWl0X3RyYXBfaGFu ZGxlciwKPj4+IMKgIH07Cj4+PiDCoCDCoCBzdGF0aWMgY29uc3Qgc3RydWN0IGFtZGdwdV9yaW5n X2Z1bmNzIGdmeF92OV8wX3JpbmdfZnVuY3Nfa2lxID0gewo+Pj4gZGlmZiAtLWdpdCBhL2luY2x1 ZGUvdWFwaS9kcm0vYW1kZ3B1X2RybS5oIAo+Pj4gYi9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9k cm0uaAo+Pj4gaW5kZXggMzIxODU3NmUxMDlkLi43ZWFlMjY0YWRiNWQgMTAwNjQ0Cj4+PiAtLS0g YS9pbmNsdWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaAo+Pj4gKysrIGIvaW5jbHVkZS91YXBpL2Ry bS9hbWRncHVfZHJtLmgKPj4+IEBAIC01NTEsNiArNTUxLDcgQEAgc3RydWN0IGRybV9hbWRncHVf Z2VtX3ZhIHsKPj4+IMKgICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX1NDSEVEVUxFRF9ERVBFTkRF TkNJRVPCoMKgwqAgMHgwNwo+Pj4gwqAgI2RlZmluZSBBTURHUFVfQ0hVTktfSURfU1lOQ09CSl9U SU1FTElORV9XQUlUwqDCoMKgIDB4MDgKPj4+IMKgICNkZWZpbmUgQU1ER1BVX0NIVU5LX0lEX1NZ TkNPQkpfVElNRUxJTkVfU0lHTkFMwqAgMHgwOQo+Pj4gKyNkZWZpbmUgQU1ER1BVX0NIVU5LX0lE X1RSQVDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MGEKPj4+IMKgIMKgIHN0cnVjdCBkcm1fYW1k Z3B1X2NzX2NodW5rIHsKPj4+IMKgwqDCoMKgwqAgX191MzLCoMKgwqDCoMKgwqDCoCBjaHVua19p ZDsKPj4+IEBAIC02NDUsNiArNjQ2LDEzIEBAIHN0cnVjdCBkcm1fYW1kZ3B1X2NzX2NodW5rX3N5 bmNvYmogewo+Pj4gwqDCoMKgwqDCoMKgwqDCoCBfX3U2NCBwb2ludDsKPj4+IMKgIH07Cj4+PiDC oCArc3RydWN0IGRybV9hbWRncHVfY3NfY2h1bmtfdHJhcCB7Cj4+PiArwqDCoMKgIC8qKiBUcmFw IEJhc2UgQWRkcmVzcyAqLwo+Pj4gK8KgwqDCoMKgwqDCoCBfX3U2NCB0YmFfYWRkcjsKPj4+ICvC oMKgwqAgLyoqIFRyYXAgTWVtb3J5IEFkZHJlc3MgKi8KPj4+ICvCoMKgwqDCoMKgwqAgX191NjQg dG1hX2FkZHI7Cj4+PiArfTsKPj4+ICsKPj4+IMKgICNkZWZpbmUgQU1ER1BVX0ZFTkNFX1RPX0hB TkRMRV9HRVRfU1lOQ09CSsKgwqDCoCAwCj4+PiDCoCAjZGVmaW5lIEFNREdQVV9GRU5DRV9UT19I QU5ETEVfR0VUX1NZTkNPQkpfRkTCoMKgwqAgMQo+Pj4gwqAgI2RlZmluZSBBTURHUFVfRkVOQ0Vf VE9fSEFORExFX0dFVF9TWU5DX0ZJTEVfRkTCoMKgwqAgMgo+PgoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==