Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp4632908iob; Sun, 8 May 2022 19:59:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzLmkq8KhQ6NBipvQzslbsdI4rneVfZSGET/QgUAYbNbvMsL7B+eYPzm9T9iZl4EVojw+VV X-Received: by 2002:a63:ec56:0:b0:3c6:bf87:927a with SMTP id r22-20020a63ec56000000b003c6bf87927amr2573062pgj.50.1652065171452; Sun, 08 May 2022 19:59:31 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1652065171; cv=pass; d=google.com; s=arc-20160816; b=Hh+3OEL3soV9noviigo7Crf3jCUuIId3Uyp4/haflDASQUyFH1rbIwN8SMQ3FzFkQL OkvSZvmmBzsDAaiuZKR4aZivuivDCLzqDRgX5USxjXHZYnyLlQw4x8MhXDMA4ETk4Kta A4M2VyHYjPcvD9NOAg2cNlIzdIfWZJg8IWVxLw53RseUMjH5VxSPvxvp2YpkPEkpx0Vw iK1PPutfEQqTsZO0ArCoGD/rQgQ6HW39kdDZe3TZsXKLuRHXxQSeANxRDUSF2zOlb3fS mmIibMJP+55BFG8YZO73qEPdTpRSBSNQ2BGkKbxUhPOujHUe6TIcYCgjy+PhMa+bJddX N6VQ== 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=+kDXOifyE4BvfPaEhfl9oSb/MYfUaePH4ggYbUvK+/g=; b=eEwMIYgVsic9LwRC+Iy4AJfD0pSs9cw9gGUZ2NGDh2IFQglY64MbbG5ZnxWOtT/XEd yJb3jBpmlgZ1NGuCNd2CKz1sEeqpzFK+stAQuuIROeHOOjFbKiOLeLE9FP7CVLg/r7U0 CSlHAaCQjKr0mfBxfhf3NHOBwhSNhsMskslwU+GifmrsCZViUDy/mE21oIiqshAXHakr NPVeDF35wGeI+HGdUchd4pA+ntSIt6gnjM9MEuYWssjRaRbQD/z+DY/ddfzic/7Lmi+R nNTHLAGUFqqD4UtJRJkKiauk6e6R3p8y2aMFX0vH82r4iW6t6HSAumqLAwr1Calbm+br 8o+g== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=0vX7tP1z; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id u17-20020a170902e21100b0015892288d6asi8411480plb.386.2022.05.08.19.59.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 08 May 2022 19:59:30 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=0vX7tP1z; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 958F3852E3; Sun, 8 May 2022 19:59:13 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S239765AbiEECpC (ORCPT + 99 others); Wed, 4 May 2022 22:45:02 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:52134 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S239771AbiEECo7 (ORCPT ); Wed, 4 May 2022 22:44:59 -0400 Received: from APC01-TYZ-obe.outbound.protection.outlook.com (mail-tyzapc01on2108.outbound.protection.outlook.com [40.107.117.108]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3FC904B863 for ; Wed, 4 May 2022 19:41:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TTWtGU1oLJJCzFI06hGMqUmE6cKh3ERcrtUUyuJfWx5EIXcPK6P6auGnizcafS2i/KrYYpj43V65zcN7pRX49xvVjvGRGpZCnA0Jcueg5ZqdmLWeM3YpZJ89SkurGDprp10UzScS6tXnuM2NbwTvPJtuglPwZmQI8uykoIOEbHru4GEd1/uLc06HQvAFieYORzHsE4whWO9MSEEXzmyGVjSnEDL2Lmm1UH3Js+Bc2ZLJFwOD371+RkoGtJ//rPnh8WsMs2RW6sZrgt8vMttwfuR/usRSEAlt2zgfS86R3Kok2SL4TJPjglWyEFK/LusmkXKGLatDNr9brMpvzb88VQ== 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=+kDXOifyE4BvfPaEhfl9oSb/MYfUaePH4ggYbUvK+/g=; b=DCGfr6nAlucL1CjBHq42iy44QKfo7WxxdFrIdMlVDMU/vilio6lR3yHyvj7HNBPe4XZb2LY/JgChBLLWn4N9ndncOtVZPV2fhd6/Gk4uTJiCVSNPF5m+2MAilMAksIDmgFYyPBXIMlvZYYZQ8u5Enicwd2YukHY0G4mGlA3E8WR+8G5rHlXskieQFdpPKVc3U/CV3R4JAQEmBUCT/8d+cBLWgRWVY+xVf6cIl5ck2ISfjiQLqvbkfc4mXY6MDSiXtE373ZSEXyrl5iHARH7C8zsJPYIPYTY/ziyctXJH6GQFreQZqMDTnzfT+y0CAS4Cl8rX10SFBYWmH+xzxb9gtQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=aspeedtech.com; dmarc=pass action=none header.from=aspeedtech.com; dkim=pass header.d=aspeedtech.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=aspeedtech.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+kDXOifyE4BvfPaEhfl9oSb/MYfUaePH4ggYbUvK+/g=; b=0vX7tP1z2RYK3wdGEXhfD5LxcF1Jqb3e9o+/Uw/xIh73k3fO5ILm0ejBFxRgeMO2jIpLOsbTxoGMxykzs0PR8M+GdATGNo/rMBsxHMroQg9Oxp1CS8h/++fS9h0lzygoh4R+pzEVlkq2eL0oi49Tzbd1eUJYss7w85xhNAoAjA+APycHkjsJqvG5im8ptYpI6QIrUdvV8i8IYVfz8fD/QnQhx/1/bYWIG1ZKXavVWpZ51inXX+jYM7QB4zm4neuhJvswjTP7HKiH7HtgDZn8Q/fyygM2JBjBPm8UCivDY9jvleqgDnbFR/aPE5Oc/DTinIBpk7+2OJgDC6In3dJBbA== Received: from PSAPR06MB4805.apcprd06.prod.outlook.com (2603:1096:301:9a::13) by HK0PR06MB2178.apcprd06.prod.outlook.com (2603:1096:203:4b::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5206.13; Thu, 5 May 2022 02:41:11 +0000 Received: from PSAPR06MB4805.apcprd06.prod.outlook.com ([fe80::a42e:36cd:2398:4736]) by PSAPR06MB4805.apcprd06.prod.outlook.com ([fe80::a42e:36cd:2398:4736%8]) with mapi id 15.20.5206.027; Thu, 5 May 2022 02:41:11 +0000 From: Kuo-Hsiang Chou To: Thomas Zimmermann , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" CC: Hungju Huang , "airlied@linux.ie" , Tommy Huang , "airlied@redhat.com" , Arc Sung , Luke Chen Subject: RE: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port Thread-Topic: [PATCH v4] drm/ast: Create the driver for ASPEED proprietory Display-Port Thread-Index: AQHYWtVytCPVW6iG1EuQZcf+/Es+MK0OWy8AgAAD9HCAACBYgIABB5YA Date: Thu, 5 May 2022 02:41:11 +0000 Message-ID: References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> <68670a17-e882-18a2-200f-af00b52e9708@suse.de> In-Reply-To: <68670a17-e882-18a2-200f-af00b52e9708@suse.de> Accept-Language: en-US Content-Language: zh-TW X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=aspeedtech.com; x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: daf91db1-c39f-4a84-5933-08da2e40b722 x-ms-traffictypediagnostic: HK0PR06MB2178:EE_ x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: ZDH1WMjh6cZZ4HpZNr1bTpbRtD5ECB36X3xgqYtdhcR67KZ2Doz/mSR0XCXtnk+dehvABVhMAgF0PFR0m2vLS27QT2vSki/8ltyX5OLBDuFAwfYCfYQTb58GEmJ217QXo1cEPLnywFG4mkOooTdwBF8uRnIl39mTixCTkgGOSGQNTvIsyvMlPlBr4YwQFUQWte285WcndZoKQ9uyXcxCXTGzb8QldwYmLiGogUwvkIXVofK6l7z9hDqFrUtFg/GWxB/t9fYgMkz0vBXL3Mz0L0QsapET45pinfDldkD8Nydv87ER/C4JZTPRlG5VkvJ58FBJ0ryoJV08p04mIgDQj7bWTe0CN0fC8qxUhRLjVZhsQZX5P7OU6cr0U1uglTfUG9fM3a4/QbIwy/wkq4StHjzTEEG6/RCPy3BhF4wd4bBavB570BPqUI7Ge9CSTUlpLqsc+5svlZuTjekoFEA2hHf8ZWlJqvVZxK4uasPI1AT6hYuk2VwUM5GIAiQCJPRtzuF2fwg/KtrwP0u0zUdNmAdIHky/CvHcNOxeBqwHHk2b+GgXlueygyGN4nTD3vLeoPfUs0CmcgUHqIemO7M34Naa1L/NfwyufpbDz+1IAzagg/+T/xt69erxA4wtUfRkAZu9A+1WuR+zVPtuQWfEOOZTginTT8yjjWU0abxt9k9aLIDrKVO+7YCS/xn2831lNWyNjH293kRCTRFghrh8xw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PSAPR06MB4805.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(376002)(366004)(396003)(346002)(136003)(39840400004)(66946007)(66476007)(66556008)(66574015)(316002)(186003)(8676002)(4326008)(66446008)(64756008)(76116006)(9686003)(26005)(71200400001)(33656002)(53546011)(55016003)(6506007)(54906003)(110136005)(107886003)(7696005)(86362001)(52536014)(5660300002)(8936002)(38070700005)(508600001)(38100700002)(83380400001)(2906002)(30864003)(122000001)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YzhPT3JrelRPb3hnNWY3VFpGQ2ZQWjdwb2FGNnYydE91ZkxvYWpNOEZKdWlN?= =?utf-8?B?YVJzTllVZXBsKzN4UWlWQW9NSE9vZVIxRVkyYmFOUUdnUEt5eVlWajIwcGdC?= =?utf-8?B?eS85cno5QXR1SUdFU09NSk1hUm5Fek1PVC84aXgra24rRVMydk55SmFJUlZX?= =?utf-8?B?VGpXaVVGUXFCcDMxSk9NcmROTjAxcktyMGptZWs4OEx2amc1bUpVbnJxVnUv?= =?utf-8?B?Q2JFbnFoT3B4NEIydlB4VUdFa0FKakxaUmVPZ3Bkc3NvcGpKMXBQV3I0N0V0?= =?utf-8?B?RGhiMThBZm5KTG5JOTBTSDYyOVAxc21xNzZFSnJrMXJScktrSjIwVklCRWVC?= =?utf-8?B?UGZBbkdQVmVDWWxJYldDT3VZUllReSt3cUJwOUFXZHNtaGN5bDkyb3Y3Znc1?= =?utf-8?B?c2N4ckF1TXYxdzlpc2dWWFJEYlhTT2V0RTRhVkVEdUlpTEhhTkt1SGx1NW1i?= =?utf-8?B?WHRkZWZtbEw0d2NTWEpDQW1ZZmtURTMySlhSMlBSV0VHZDRKOHBzTFN6OTQ5?= =?utf-8?B?ZEtTYi9XVnFPMjNZMkowZ0tZMnRTcVVEWXUzY1EzbFdkK0taUmw3UEJXOVY0?= =?utf-8?B?aVA5dnhRVnB6NzlSZlV0NFNacDVTQ1RQQmhHb1FEb2E2dlcrU2owSlExU0NK?= =?utf-8?B?VlU5M0RNdDFmZHdkRUxtMm45V2l1c0llc2tQbzB4cjBaWGNKejJXUzVTcm1h?= =?utf-8?B?K210T0RiV1J4eFJRYnpNd2tTbHBWYXA4RFlhYlJuMzNzRXhYTVo0Z1J3NTE4?= =?utf-8?B?OHhTa1p2L0pVNmNDY0pGR0dadmNHendyL0w3Y2VQRStENDhpTXpwbG5uODZk?= =?utf-8?B?b08wTmcrUzBLNVBWKzJER3JQOHBZS3hacXl6OWtmM255RHhXa0FaT1Q0eEx5?= =?utf-8?B?T0hDWWIyZ2JyQUZBTWZaYVhsRlpEOG45VWpZZ04ySlh4SGl1cG9RNHl5azY0?= =?utf-8?B?eDY5TmxKY2ljbTJIRW9FVUx2RWY4bDZwcGJma3RuaGNXV2NHRWc4STI1Mmd1?= =?utf-8?B?VjE2ZHppL0xZSHFvVXkzSTNmOEd3YjY1aWZmeHpxTkJEaXJrQXpvb25scm5S?= =?utf-8?B?djM3cWg3VGhBUXhXVEZHTXdrNmEwZW5ISXI3anVPOVg3R0tlYjB1dC9KU2hB?= =?utf-8?B?Z1RnVktMNnZYSW1IbXJvZHRKVnV4d0duZlFpcWVuaU40OVZSK3F6UWRHRXVw?= =?utf-8?B?d1lrNEVNSFZsQ2ZXVVNCai9rUDNiT3N0ckZwWjZQc05HMm8yVUNoR2ViMm9t?= =?utf-8?B?UEVpRWRoM01DVkJydTluaGJXOW1zbXdHWGJuQXhTZWhxb3FReE8yMmxBK0NC?= =?utf-8?B?WmNaclh1U252OHg5SGJGU05PZVBkYnhIRWQ2dHVaV2dOdHB3WVBBVWN6UHdL?= =?utf-8?B?OXdTeWEwS0htZng3UFNZNmxNK1VsUVZyc3IwU1Z0bG1vd1YrQjNuZXcyeVRH?= =?utf-8?B?ZEUzWFA0aUY5dGpiM3BrSXZTUzVBYm5VZnJMUkVub0tyTnFrbzhEOUEwV0hY?= =?utf-8?B?Qkl1ZGtvQUZUUkZCRC9paGtTMHErVHpVTEZFL21pU05mSlQwRWljWHpqeTRu?= =?utf-8?B?a2xDR01MWGV6dGZlWGh0SEVMbmxzNjlQaHY4bkNrNDBkV2JSejNDWHd3QitN?= =?utf-8?B?ekdKaXBUdytZdHhrN1k3RUxtSWpYdzR2N2NHTG5xK3R5T21ZWUZoT1kwYmlW?= =?utf-8?B?TmNwNUszR2FZRmQ1ZkNpTXBIaXhseU1LU0FSc2xkS2ErSTVEUVRQR1VWTnBt?= =?utf-8?B?THQvanN2MHJ5c2xKMEUrV2lCTm9mYTltRWhNS0hyNkJiYzlUZHJBeVhRVko3?= =?utf-8?B?SFhHZ1l3VlNsQllnOHl3aVlxaXNCbit0V2JnZnNRMzZlaVhFVDVmQUxoMGhr?= =?utf-8?B?OW1VaG13bjkxYzN2bSt4ZHhlVlVObDJ6YkRXei9LOEpKMUNucU5nRElZVFA3?= =?utf-8?B?MUtKT1p6cXdCWEFHRnhCak9HM3V4M0dhUU9YZ2RSQVBZaUZqdG5hcUtSdWxY?= =?utf-8?B?QUwwcktYUCsyUDhCTXoycUJBeWJxZHJHa0JDVko5Z243WDU5WFRUM2V5a29R?= =?utf-8?B?RFViY2U5ZW9DWWRZVjR3L2lFcEkvSUIrZXllam5RUU51SmZSK2Y3dTU2elFp?= =?utf-8?B?bTV6Z2ZMRmhUOHQ0Um85WG9mZHpxS3UxWSsxeURoMVo1QlZ5cGUvNDZiN1Iw?= =?utf-8?B?QzJVN1JDMzhUUm9Gd09YMkxLbTZqNHdTeVcrN0ZaVE9IR3E5UHRaNFkvVi9T?= =?utf-8?B?T2xEaXFVbmYvNlgxMmVOeDVtWEZiM2RwL2ZTZWJhL090WFZzMDlFZU5Ba3hJ?= =?utf-8?B?Qm5HN0F1Vk15YlVndnVPNDVFYi9iblhGeUJHejRZVVlocnBmdUxHcFRjdzFM?= =?utf-8?Q?v/JEI6j9uxT/eTxU=3D?= Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: aspeedtech.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: PSAPR06MB4805.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: daf91db1-c39f-4a84-5933-08da2e40b722 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 May 2022 02:41:11.1143 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 43d4aa98-e35b-4575-8939-080e90d5a249 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: CFhzUM/5IUYvOD//y/8pStI84wyQYUmSZL9u0JaFHD7LC+S3QRJThs+ljST06f1iPIxxVjMVW/9y4K7gN2ZcwMFeLF50NFMk4DfEMLVVaXk= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0PR06MB2178 X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS, MAILING_LIST_MULTI,RDNS_NONE,SPF_HELO_NONE,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org SGkgTHVrZSwNCg0KUGxlYXNlIGhlbHAgb24gdGhlIEVWQiByZXF1ZXN0IHRoYXQgRFJNIHJldmll d2VyLCBUaG9tYXMsIG5lZWRzIG9uZSBBU1QyNjAwIEVWQiB0byBlYXNlIERpc3BsYXktUG9ydCB2 ZXJpZmljYXRpb24gb24gQVNQRUVEIERSTSBkaXZlci4gDQpUaGFua3MNCg0KUmVnYXJkcywNCglL dW8tSHNpYW5nIENob3UNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFRob21h cyBaaW1tZXJtYW5uIFttYWlsdG86dHppbW1lcm1hbm5Ac3VzZS5kZV0gDQpTZW50OiBXZWRuZXNk YXksIE1heSAwNCwgMjAyMiA1OjM4IFBNDQpUbzogS3VvLUhzaWFuZyBDaG91IDxrdW9oc2lhbmdf Y2hvdUBhc3BlZWR0ZWNoLmNvbT47IGRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGxp bnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNClN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIGRybS9h c3Q6IENyZWF0ZSB0aGUgZHJpdmVyIGZvciBBU1BFRUQgcHJvcHJpZXRvcnkgRGlzcGxheS1Qb3J0 DQoNCkhpIFRob21hcywNCg0KSGkNCg0KQW0gMDQuMDUuMjIgdW0gMTA6NDkgc2NocmllYiBLdW8t SHNpYW5nIENob3U6DQo+IEhpIFRob21hcywNCj4gDQo+IFRoYW5rcyBmb3IgeW91ciBlZmZvcnRz IHRvIHJldmlldyB0aGlzIHBhdGNoLg0KPiANCj4gTm93LCBJIG9ic2VydmUgYSBjaGFuZ2UgdGhh dCBhZnRlciBEUCB1bnBsdWdnZWQgYW5kIHRoZW4gdGhlIHN5c3RlbSBpcyANCj4gdW5hYmxlIHRv IGdldCBFRElEIGZyb20gRC1zdWIgY29ubmVjdGluZy4NCj4gDQo+IFRoZSByZWFzb24gc2VlbXMg dGhhdCBUWHMgYXJlIG1lcmdlZCBpbnRvIHVuaW9uIHN0cnVjdHVyZSBpbiANCj4gL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X2Rydi5oDQo+ICDCoChhNTliMDI2NDE5ZjMzMDQwZDdkMjhiOGUzYjFj ZWE2ODFiOWNlN2E3DQo+IDxodHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlz Yy9jb21taXQvP2lkPWE1OWIwMjY0MTlmMzMwNDANCj4gZDdkMjhiOGUzYjFjZWE2ODFiOWNlN2E3 PikNCg0KVGhlIHRlc3Qgc3lzdGVtIGhhcyBhIERQIGFuZCBhIFZHQSBhZGFwdGVyPyAgV2UgbmVl ZCBjcmVhdGUgdHdvIHNlcGFyYXRlIGNvbm5lY3RvcnMgYW5kIGVuY29kZXJzIGluIHRoYXQgY2Fz ZS4gIEknbGwgdHJ5IHRvIHByb3ZpZGUgYSBwYXRjaCBpbiB0aGUgbmV4dCBkYXlzLg0KDQpZZXMs IHRoZSBzYW1lIGNvbnRlbnQgYXJlIGRpc3BsYXllZCAoYXMgbWlycm9yIG1vZGUpIG9uIERQIGFu ZCBWR0EgbW9uaXRvciBhcyBzYW1lIHRpbWUuDQoNCkluIHByZXZpb3VzIGRybS9hc3QgdmVyc2lv biwgdGhlIEVESUQgcmVhZCBmcm9tIERQIGlzIGZpcnN0IHByaW9yaXR5IGZvciByZXNvbHV0aW9u IHZhbGlkYXRpb24uDQpJZiBEUCBpcyBkZXRlY3RlZCBhcyB1bi1jb25uZWN0ZWQsIGFuZCB0aGVu IHJlYWRpbmcgRURJRCBmcm9tIFZHQSBpcyB1c2VkIGZvciB0aGUgc2Vjb25kIHJ1biBvZiByZXNv bHV0aW9uIHZhbGlkYXRpb24uDQpGaW5hbGx5LCBpZiBib3RoIERQIGFuZCBWR0EgYXJlIGRldGVj dGVkIGFzIHVuLWNvbm5lY3RlZCwgb25seSAxMDI0Kjc2OCBhbmQgODAwKjYwMCBhcmUgYWJsZSB0 byBiZSBzZWxlY3RlZCBhcyBkZWZhdWx0IHJlc29sdXRpb24uDQoNCj4gDQo+IEFub3RoZXIsIGRv IHlvdSBuZWVkIHRoZSBhc3QyNjAwIEVWQiB0byBlYXNlIHZlcmlmaWNhdGlvbiBvbiAiZHJtL2Fz dCIgPw0KDQpUaGUgRVZCIGlzIGFuIGV2YWx1YXRpb24gYm9hcmQ/IA0KWWVzLiB0aGUgRVZCIGlz IGRldmVsb3BlZCB0byBjbGFyaWZ5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGN1c3RvbSdzIENS Qi4NClRoZSBFVkIgaXMgY29ubmVjdCB0byBIb3N0IGJ5IFBDSS1lIDEtTGFuZSBhZGFwdGVyLg0K DQpJJ2QgYmUgaGFwcHkgdG8gaGF2ZSBvbmUgb2YgdGhlc2UuIEhvdyBjYW4gSSBnZXQgb25lPw0K SSBmb3J3YXJkIHRoZSByZXF1ZXN0IHRvIEFTUEVFRCBWUCBhYm91dCBFVkIgZGVsaXZlcnkgdG8g eW91Lg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+IA0KPiBSZWdhcmRzLA0KPiANCj4gIMKg wqDCoMKgwqDCoMKgIEt1by1Ic2lhbmcgQ2hvdQ0KPiANCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gRnJvbTogVGhvbWFzIFppbW1lcm1hbm4gW21haWx0bzp0emltbWVybWFubkBzdXNl LmRlXQ0KPiBTZW50OiBXZWRuZXNkYXksIE1heSAwNCwgMjAyMiAzOjI4IFBNDQo+IFRvOiBLdW8t SHNpYW5nIENob3UgPGt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tPjsgDQo+IGRyaS1kZXZl bEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4g U3ViamVjdDogUmU6IFtQQVRDSCB2NF0gZHJtL2FzdDogQ3JlYXRlIHRoZSBkcml2ZXIgZm9yIEFT UEVFRCANCj4gcHJvcHJpZXRvcnkgRGlzcGxheS1Qb3J0DQo+IA0KPiBIaQ0KPiANCj4gQW0gMjgu MDQuMjIgdW0gMDk6NTYgc2NocmllYiBLdW9Ic2lhbmcgQ2hvdToNCj4gDQo+PiBWMToNCj4gDQo+ PiAxLiBUaGUgTUNVIEZXIGNvbnRyb2xpbmcgQVNQRUVEIERQIGlzIGxvYWRlZCBieSBCTUMgYm9v dCBsb2FkZXIuDQo+IA0KPj4gMi4gRHJpdmVyIHN0YXJ0cyBhZnRlciBDUlszOjFdID09IDExMWIg dGhhdCBpbmRpY2F0ZXMgVHggaXMgQVNURFAsDQo+IA0KPj7CoMKgwqDCoCBhbmQgQ1JEMVs1XSBo YXMgYmVlbiBhc3NlcnRlZCBieSBCTVZDIGJvb3QgbG9hZGVyLg0KPiANCj4+IDMuIEVESUQgaXMg cHJpb3JpdGl6ZWQgYnkgRFAgbW9uaXRvci4NCj4gDQo+PiA0LiBEUCdzIEVESUQgaGFzIGhpZ2gg cHJpb3JpdHkgdG8gZGVjaWRlIHJlc29sdXRpb24gc3VwcG9ydGluZy4NCj4gDQo+PiANCj4gDQo+ PiBWMjoNCj4gDQo+PiBNb2R1bGVzIGRlc2NyaXB0aW9uOg0KPiANCj4+IDEuIEFTVERQIChBU1BF RUQgRGlzcGxheVBvcnQpIGlzIGNvbnRyb2xsZWQgYnkgZGVkaWNhdGVkDQo+IA0KPj7CoMKgwqDC oCBBU1QtTUNVIChBU1BFRUQgcHJvcHJpYXRhcnkgTUNVKS4NCj4gDQo+PiAyLiBNQ1UgaXMgbG9v cGluZyBpbiBjaGFyZ2VkIG9mIEhQRCwgUmVhZCBFRElELCBMaW5rIFRyYWluaW5nIHdpdGgNCj4g DQo+PsKgwqDCoMKgIERQIHNpbmsuDQo+IA0KPj4gMy4gQVNURFAgYW5kIEFTVC1NVUMgcmVzaWRl IGluIEJNQyAoQmFzZWJvYXJkIE1hbmFnZW1lbnQgY29udHJvbGxlcikNCj4gDQo+PsKgwqDCoMKg IGFkZHJlc3Npbmctc3BhY2UuDQo+IA0KPj4gNC4gQVNQRUVEIERSTSBkcml2ZXIgcmVxdWVzdHMg TUNVIHRvIGdldCBIUEQgYW5kIEVESUQgYnkgQ1Itc2NyYXRjaGVkDQo+IA0KPj7CoMKgwqDCoCBy ZWdpc3Rlci4NCj4gDQo+PiANCj4gDQo+PiBCb290aW5nIHNlcXVlbmNlOg0KPiANCj4+IDEuIENo ZWNrIGlmIFRYIGlzIEFTVERQwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIA0KPj4gYXN0X2RwX2xh dW5jaCgpDQo+IA0KPj4gMi4gQ2hlY2sgaWYgRFAtTUNVIEZXIGhhcyBsb2FkZWTCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIA0KPj4gLy8gYXN0X2RwX2xhdW5jaCgpDQo+IA0KPj4gMy4gUmVhZCBFRElEwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8vIA0KPj4gYXN0X2RwX3JlYWRfZWRpZCgpDQo+IA0KPj4gNC4gUmVzb2x1 dGlvbiBzd2l0Y2jCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gDQo+PiBhc3RfZHBfU2V0T3V0cHV0KCkNCj4g DQo+PiANCj4gDQo+PiBWMzoNCj4gDQo+PiAxLiBSZW1vdmUgdW5uZWVkZWQgc2VtaWNvbG9uLg0K PiANCj4+IDIuIEFwcGx5IHRvIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0s IGluc3RlYWQgb2YNCj4gDQo+PsKgwqDCoMKgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3Jn L2RybS9kcm0tbWlzYw0KPiANCj4+IDMuIFJlc29sdmUgYXV0byBidWlsZCB0ZXN0IFdBUk5JTkdz IG9uIFYxIHBhdGNoLg0KPiANCj4+IA0KPiANCj4+IFY0Og0KPiANCj4+IDEuIFN5bmMgY29kZS1i YXNlIHdpdGgga2VybmVsIDUuMTdfcmM2IDIuIFJlbW92ZSB0aGUgZGVmaW5lIG9mDQo+IA0KPj4g RFBDb250cm9sUG93ZXIsIGJlY2F1c2UgRFAgY2hpcHMgbmVlZCB0byBiZQ0KPiANCj4+wqDCoMKg wqAgcG93ZXJlZCBvbiB0byBiZSB1c2VkLg0KPiANCj4+IDMuIFJlbW92ZSB0aGUgc3dpdGNoZXMg b2YgUEhZIGFuZCBEaXNwbGF5IGZyb20gRURJRCBwcm9jZWR1cmUuDQo+IA0KPj4gNC4gUmV2aXNl IGluY3JlYWluZyBkZWxheSB0byBmaXhlZCBkZWxheSwgYmVjYXVzZSB0aGlzIHZlcnNpb24ga2Vy bmVsDQo+IA0KPj7CoMKgwqDCoCBkb2Vzbid0IGRldGVjdCBtaW5pdG9yIGNvbnNpc3Rlbm50bHku DQo+IA0KPj4gNS4gQ3JlYXRlIGNsZWFuLXVwIGNvZGUgdXNlZCBmb3IgcmVzZXQgb2YgcG93ZXIg c3RhdGUgb24gZXJyb3JzIHdpdGgNCj4gDQo+PsKgwqDCoMKgIC1FSU8gbWFubmVyLg0KPiANCj4+ IDYuIFJldmlzZSB0aGUgRFAgZGV0ZWN0aW9uIGJ5IFRYIHR5cGUgYW5kIGl0cyBEUC1GVyBzdGF0 dXMgZHVyaW5nDQo+IA0KPj7CoMKgwqDCoCBib290aW5nIGFuZCByZXN1bWUuDQo+IA0KPj4gNy4g Q29ycmVjdCB0aGUgQ2FtZWxDYXNlIFN0eWxlLg0KPiANCj4+IDguIFVzZSByZWdpc3RlciByZWFk aW5nIHdoaWxlIG5lZWRpbmcsIGFuZCByZW1vdmUgdG8gaG9sZCBmdWxsDQo+IA0KPj7CoMKgwqDC oCByZWdpc3Rlci4NCj4gDQo+PiA5LiBJbnN0ZWFkIG9mICd1OCcsIHJldmlzZSB0byAnYm9vbCcg b24gc3d3aXRjaCBvZiBQSFkgYW5kIHZpZGVvLg0KPiANCj4+IDEwLkNvcnJlY3QgdHlwbw0KPiAN Cj4+IDExLlJlbW92ZSB0aGUgZHVwbGljYXRlZCBjb3B5IG9mIFRYIGRlZmluaXRpb24uDQo+IA0K Pj4gMTIuVXNlIEVESURfTEVOR1RIIGFzIHRoZSBjb25zdGFudCBvZiAxMjguDQo+IA0KPj4gDQo+ IA0KPj4gU2lnbmVkLW9mZi1ieTogS3VvSHNpYW5nIENob3UgPGt1b2hzaWFuZ19jaG91QGFzcGVl ZHRlY2guY29tIA0KPj4gPG1haWx0bzprdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNoLmNvbT4+DQo+ IA0KPiBSZXZpZXdlZC1ieTogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGUg DQo+IDxtYWlsdG86dHppbW1lcm1hbm5Ac3VzZS5kZT4+DQo+IA0KPiBJJ3ZlIG1lYW53aGlsZSBh ZGRlZCB5b3VyIHBhdGNoIHRvIGRybS1taXNjLW5leHQuIEl0IHNob3VsZCBzaG93IHVwIGluIA0K PiBvbmUgb2YgdGhlIG5leHQga2VybmVsIHJlbGVhc2VzLsKgIFRoYW5rcyBhIGxvdC4NCj4gDQo+ IEJlc3QgcmVnYXJkcw0KPiANCj4gVGhvbWFzDQo+IA0KPj4gLS0tDQo+IA0KPj7CoMKgIGRyaXZl cnMvZ3B1L2RybS9hc3QvTWFrZWZpbGXCoMKgIHzCoMKgIDIgKy0NCj4gDQo+PsKgwqAgZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfZHAuY8KgwqAgfCAyODIgDQo+PisrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKw0KPiANCj4+wqDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaMKg IHwgMTE1ICsrKysrKysrKysrKysrDQo+IA0KPj7CoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21haW4uYyB8wqDCoCA1ICstDQo+IA0KPj7CoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21v ZGUuYyB8IDEyNCArKysrKysrKysrKysrKy0NCj4gDQo+PsKgwqAgZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfcG9zdC5jIHzCoMKgIDQgKy0NCj4gDQo+PsKgwqAgNiBmaWxlcyBjaGFuZ2VkLCA1MjQg aW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkNCj4gDQo+PsKgwqAgY3JlYXRlIG1vZGUgMTAw NjQ0IGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMNCj4gDQo+PiANCj4gDQo+PiBkaWZmIC0t Z2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPiANCj4+IGIvZHJpdmVycy9ncHUv ZHJtL2FzdC9NYWtlZmlsZSBpbmRleCAyMWY3MTE2MGIuLjVhNTNjZTUxZiAxMDA2NDQNCj4gDQo+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlDQo+IA0KPj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPiANCj4+IEBAIC0zLDYgKzMsNiBAQA0KPiANCj4+wqDC oCAjIE1ha2VmaWxlIGZvciB0aGUgZHJtIGRldmljZSBkcml2ZXIuwqAgVGhpcyBkcml2ZXIgcHJv dmlkZXMgc3VwcG9ydCANCj4+Zm9yIHRoZQ0KPiANCj4+wqDCoCAjIERpcmVjdCBSZW5kZXJpbmcg SW5mcmFzdHJ1Y3R1cmUgKERSSSkgaW4gWEZyZWU4NiA0LjEuMCBhbmQgaGlnaGVyLg0KPiANCj4+ IA0KPiANCj4+IC1hc3QteSA6PSBhc3RfZHJ2Lm8gYXN0X2kyYy5vIGFzdF9tYWluLm8gYXN0X21t Lm8gYXN0X21vZGUubw0KPiANCj4+IGFzdF9wb3N0Lm8gYXN0X2RwNTAxLm8NCj4gDQo+PiArYXN0 LXkgOj0gYXN0X2Rydi5vIGFzdF9pMmMubyBhc3RfbWFpbi5vIGFzdF9tbS5vIGFzdF9tb2RlLm8N Cj4gDQo+PiArYXN0X3Bvc3QubyBhc3RfZHA1MDEubyBhc3RfZHAubw0KPiANCj4+IA0KPiANCj4+ wqDCoCBvYmotJChDT05GSUdfRFJNX0FTVCkgOj0gYXN0Lm8NCj4gDQo+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHAuYw0KPiANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfZHAuYyBuZXcgZmlsZSBtb2RlIDEwMDY0NCBpbmRleA0KPiANCj4+IDAwMDAwMDAwMC4u NDU1MWJjOGEzDQo+IA0KPj4gLS0tIC9kZXYvbnVsbA0KPiANCj4+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9hc3QvYXN0X2RwLmMNCj4gDQo+PiBAQCAtMCwwICsxLDI4MiBAQA0KPiANCj4+ICsvLyBT UERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPiANCj4+ICsvLyBDb3B5cmlnaHQgKGMp IDIwMjEsIEFTUEVFRCBUZWNobm9sb2d5IEluYy4NCj4gDQo+PiArLy8gQXV0aG9yczogS3VvSHNp YW5nIENob3UgPGt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tIA0KPj4gKzxtYWlsdG86a3Vv aHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20+Pg0KPiANCj4+ICsNCj4gDQo+PiArI2luY2x1ZGUg PGxpbnV4L2Zpcm13YXJlLmg+DQo+IA0KPj4gKyNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiAN Cj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wcmludC5oPg0KPiANCj4+ICsjaW5jbHVkZSAiYXN0X2Ry di5oIg0KPiANCj4+ICsNCj4gDQo+PiAraW50IGFzdF9hc3RkcF9yZWFkX2VkaWQoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgdTggKmVkaWRkYXRhKSB7DQo+IA0KPj4gK8KgwqAgc3RydWN0IGFzdF9w cml2YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiANCj4+ICvCoMKgIHU4IGkgPSAw LCBqID0gMDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgLyoNCj4gDQo+PiArwqDCoCAqIENSRDFb YjVdOiBEUCBNQ1UgRlcgaXMgZXhlY3V0aW5nDQo+IA0KPj4gK8KgwqAgKiBDUkRDW2IwXTogRFAg bGluayBzdWNjZXNzDQo+IA0KPj4gK8KgwqAgKiBDUkRGW2IwXTogRFAgSFBEDQo+IA0KPj4gK8Kg wqAgKiBDUkU1W2IwXTogSG9zdCByZWFkaW5nIEVESUQgcHJvY2VzcyBpcyBkb25lDQo+IA0KPj4g K8KgwqAgKi8NCj4gDQo+PiArwqDCoCBpZiAoIShhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwg QVNUX0lPX0NSVENfUE9SVCwgMHhEMSwgDQo+PiArQVNURFBfTUNVX0ZXX0VYRUNVVElORykgJiYN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4REMsIA0KPj4gK0FTVERQX0xJTktfU1VDQ0VTUykgJiYNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4REYsIA0KPj4gK0FTVERQX0hQRCkgJiYNCj4gDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIDB4RTUsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFT SykpKSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2FzdGRwX2VkaWRf bm90X3JlYWR5Ow0KPiANCj4+ICvCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgYXN0X3Nl dF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsICh1OCkgDQo+PiAr fkFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAwKTsNCj4gDQo+PiArDQo+IA0KPj4gK8Kg wqAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgLyoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBDUkU0Wzc6MF06IFJlYWQtUG9p bnRlciBmb3IgRURJRCAoVW5pdDogNGJ5dGVzKTsgdmFsaWQgDQo+PiArcmFuZ2U6IDB+NjQNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTQsDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICh1OCkgDQo+PiArfkFTVERQX0VESURfUkVBRF9QT0lOVEVSX01B U0ssICh1OCkgaSk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGogPSAwOw0KPiANCj4+ ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgKiBDUkQ3W2IwXTogdmFsaWQgZmxhZyBmb3IgRURJRA0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCAqIENSRDZbYjBdOiBtaXJyb3IgcmVhZCBwb2ludGVyIGZvciBFRElEDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIHdoaWxlICgoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQs IA0KPj4gKzB4RDcsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQVNURFBfRURJRF9WQUxJRF9GTEFHX01BU0spICE9IDB4MDEpIHx8 DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoYXN0X2dldF9p bmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIA0KPj4gKzB4RDYsDQo+IA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9FRElEX1JFQURfUE9JTlRF Ul9NQVNLKSAhPSBpKSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLyoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog RGVsYXkgYXJlIGdldHRpbmcgbG9uZ2VyIHdpdGggZWFjaCByZXRyeS4NCj4gDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogMS4gVGhlIERlbGF5cyBhcmUgb2Z0ZW4g MiBsb29wcyB3aGVuIHVzZXJzIHJlcXVlc3QgIkRpc3BsYXkgU2V0dGluZ3MiDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKgIMKgIG9mIHJpZ2h0LWNs aWNrIG9mIG1vdXNlLg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKiAyLiBUaGUgRGVsYXlzIGFyZSBvZnRlbiBsb25nZXIgYSBsb3Qgd2hlbiBzeXN0ZW0gcmVz dW1lIGZyb20gUzMvUzQuDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqLw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbWRl bGF5KGorMSk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIA0KPj4gK0FTVF9JT19D UlRDX1BPUlQsIDB4RDEsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgDQo+PiArQVNURFBfTUNVX0ZXX0VYRUNVVElORykgJiYNCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZ2V0 X2luZGV4X3JlZ19tYXNrKGFzdCwgDQo+PiArQVNUX0lPX0NSVENfUE9SVCwgMHhEQywNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1RE UF9MSU5LX1NVQ0NFU1MpICYmDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIA0KPj4g K0FTVF9JT19DUlRDX1BPUlQsIDB4REYsIEFTVERQX0hQRCkpKSB7DQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJfYXN0 ZHBfanVtcF9vdXRfbG9vcF9vZl9lZGlkOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGorKzsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGlmIChqID4gMjAwKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZXJyX2FzdGRwX2p1bXBfb3V0X2xvb3Bf b2ZfZWRpZDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiANCj4+ICsNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0YSkgPSBhc3RfZ2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgDQo+PiArQVNUX0lPX0NSVENfUE9SVCwNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweEQ4LCANCj4+ICtBU1REUF9FRElEX1JFQURf REFUQV9NQVNLKTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0YSArIDEp ID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIA0KPj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4 RDksDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX0VESURfUkVBRF9EQVRBX01BU0spOw0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAqKGVkaWRkYXRhICsgMikgPSBhc3RfZ2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgDQo+PiArQVNUX0lPX0NSVENfUE9SVCwgMHhEQSwNCj4gDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+ PiArQVNURFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgICooZWRpZGRhdGEgKyAzKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCANCj4+ICtB U1RfSU9fQ1JUQ19QT1JULCAweERCLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9FRElEX1JFQURf REFUQV9NQVNLKTsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChp ID09IDMxKSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAv Kg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBGb3IgMTI4 LWJ5dGVzIEVESURfMS4zLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKiAxLiBBZGQgdGhlIHZhbHVlIG9mIEJ5dGVzLTEyNiB0byBCeXRlcy0xMjcuDQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBUaGUgQnl0ZXMtMTI3IGlzIENoZWNrc3VtLiBTdW0gb2YgDQo+PiArYWxsIDEyOGJ5 dGVzIHNob3VsZA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXF1YWwgMMKgwqDCoCAobW9kIDI1NikuDQo+IA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIDIuIE1vZGlmeSBCeXRlcy0x MjYgdG8gYmUgMC4NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZSBCeXRlcy0xMjYgaW5kaWNhdGVzIHRoZSBOdW1i ZXIgDQo+PiArb2YgZXh0ZW5zaW9ucyB0bw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZm9sbG93LiAwIHJlcHJlc2Vu dHMgbm9leHRlbnNpb25zLg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgKi8NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICoo ZWRpZGRhdGEgKyAzKSA9ICooZWRpZGRhdGEgKyAzKSArICooZWRpZGRhdGEgKyANCj4+ICsyKTsN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICooZWRpZGRhdGEg KyAyKSA9IDA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArDQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVkaWRkYXRhICs9IDQ7DQo+IA0KPj4gK8KgwqAgfQ0K PiANCj4+ICsNCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X0NSVENfUE9SVCwgMHhFNSwgKHU4KSANCj4+ICt+QVNURFBfSE9TVF9FRElEX1JFQURfRE9ORV9N QVNLLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IA0KPj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkUpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDC oCByZXR1cm4gMDsNCj4gDQo+PiArDQo+IA0KPj4gK2Vycl9hc3RkcF9qdW1wX291dF9sb29wX29m X2VkaWQ6DQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19D UlRDX1BPUlQsIDB4RTUsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKHU4KSANCj4+ICt+QVNURFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4g K0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkUpOw0KPiANCj4+ICvCoMKgIHJldHVybiAofihqKzI1 NikgKyAxKTsNCj4gDQo+PiArDQo+IA0KPj4gK2Vycl9hc3RkcF9lZGlkX25vdF9yZWFkeToNCj4g DQo+PiArwqDCoCBpZiAoIShhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENf UE9SVCwgMHhEMSwgDQo+PiArQVNURFBfTUNVX0ZXX0VYRUNVVElORykpKQ0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKH4weEQxICsgMSk7DQo+IA0KPj4gK8KgwqAgaWYgKCEo YXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REMsIA0KPj4g K0FTVERQX0xJTktfU1VDQ0VTUykpKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gKH4weERDICsgMSk7DQo+IA0KPj4gK8KgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REYsIA0KPj4gK0FTVERQX0hQRCkpKQ0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKH4weERGICsgMSk7DQo+IA0KPj4gK8KgwqAg aWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUs IA0KPj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSykpKQ0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gKH4weEU1ICsgMSk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKg IHJldHVybsKgwqDCoMKgwqAgMDsNCj4gDQo+PiArfQ0KPiANCj4+ICsNCj4gDQo+PiArLyoNCj4g DQo+PiArICogTGF1bmNoIEFzcGVlZCBEUA0KPiANCj4+ICsgKi8NCj4gDQo+PiArdm9pZCBhc3Rf ZHBfbGF1bmNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IGJQb3dlcikgew0KPiANCj4+ICvC oMKgIHUzMiBpID0gMCwgaiA9IDAsIFdhaXRDb3VudCA9IDE7DQo+IA0KPj4gK8KgwqAgdTggYkRQ VFggPSAwOw0KPiANCj4+ICvCoMKgIHU4IGJEUEV4ZWN1dGUgPSAxOw0KPiANCj4+ICsNCj4gDQo+ PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+ IA0KPj4gK8KgwqAgLy8gUzMgY29tZSBiYWNrLCBuZWVkIG1vcmUgdGltZSB0byB3YWl0IEJNQyBy ZWFkeS4NCj4gDQo+PiArwqDCoCBpZiAoYlBvd2VyKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBXYWl0Q291bnQgPSAzMDA7DQo+IA0KPj4gKw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAv LyBXYWl0IHRvdGFsIGNvdW50IGJ5IGRpZmZlcmVudCBjb25kaXRpb24uDQo+IA0KPj4gK8KgwqAg Zm9yIChqID0gMDsgaiA8IFdhaXRDb3VudDsgaisrKSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGJEUFRYID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIA0KPj4gKzB4RDEsDQo+IA0KPj4gK1RYX1RZUEVfTUFTSyk7DQo+IA0KPj4gKw0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYkRQVFgpDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIG1zbGVlcCgxMDApOw0KPiANCj4+ICvCoMKgIH0NCj4gDQo+PiArDQo+IA0K Pj4gK8KgwqAgLy8gMHhFIDogQVNURFAgd2l0aCBEUE1DVSBGVyBoYW5kbGluZw0KPiANCj4+ICvC oMKgIGlmIChiRFBUWCA9PSBBU1REUF9EUE1DVV9UWCkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCAvLyBXYWl0IG9uZSBzZWNvbmQgdGhlbiB0aW1lb3V0Lg0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCBpID0gMDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIHdoaWxlIChhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg DQo+PiArMHhEMSwgQ09QUk9DRVNTT1JfTEFVTkNIKSAhPQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ09QUk9DRVNTT1JfTEFVTkNIKSB7DQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpKys7DQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyB3YWl0IDEwMCBtcw0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXNsZWVwKDEwMCk7DQo+IA0KPj4gKw0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGkgPj0gMTAp IHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAvLyBEUCB3b3VsZCBub3QgYmUgcmVhZHkuDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYkRQRXhlY3V0ZSA9IDA7DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGlmIChiRFBFeGVjdXRlKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhfQVNURFA7DQo+ IA0KPj4gKw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodTgpIA0KPj4gK35BU1REUF9IT1NUX0VESURf UkVBRF9ET05FX01BU0ssDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgDQo+PiArQVNURFBfSE9TVF9FRElEX1JFQURfRE9ORSk7DQo+IA0KPj4gK8Kg wqAgfSBlbHNlDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hpcF90eXBl ID0gQVNUX1RYX05PTkU7DQo+IA0KPj4gK30NCj4gDQo+PiArDQo+IA0KPj4gKw0KPiANCj4+ICsN Cj4gDQo+PiArdm9pZCBhc3RfZHBfcG93ZXJfb25fb2ZmKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IGJvb2wgb24pIHsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRvX2Fz dF9wcml2YXRlKGRldik7DQo+IA0KPj4gK8KgwqAgLy8gUmVhZCBhbmQgVHVybiBvZmYgRFAgUEhZ IHNsZWVwDQo+IA0KPj4gK8KgwqAgdTggYkUzID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RTMsDQo+IA0KPj4gK0FTVF9EUF9WSURFT19FTkFCTEUpOw0K PiANCj4+ICsNCj4gDQo+PiArwqDCoCAvLyBUdXJuIG9uIERQIFBIWSBzbGVlcA0KPiANCj4+ICvC oMKgIGlmICghb24pDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJFMyB8PSBBU1RfRFBf UEhZX1NMRUVQOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAvLyBEUCBQb3dlciBvbi9vZmYNCj4g DQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhFMywgKHU4KQ0KPiANCj4+ICt+QVNUX0RQX1BIWV9TTEVFUCwgYkUzKTsgfQ0KPiANCj4+ICsN Cj4gDQo+PiArDQo+IA0KPj4gKw0KPiANCj4+ICt2b2lkIGFzdF9kcF9zZXRfb25fb2ZmKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsIGJvb2wgb24pIHsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgYXN0X3By aXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGRldik7DQo+IA0KPj4gK8KgwqAgdTggdmlkZW9f b25fb2ZmID0gb247DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIC8vIFZpZGVvIE9uL09mZg0KPiAN Cj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAw eEUzLCAodTgpDQo+IA0KPj4gK35BU1RfRFBfVklERU9fRU5BQkxFLCBvbik7DQo+IA0KPj4gKw0K PiANCj4+ICvCoMKgIC8vIElmIERQIHBsdWcgaW4gYW5kIGxpbmsgc3VjY2Vzc2Z1bCB0aGVuIGNo ZWNrIHZpZGVvIG9uIC8gb2ZmIA0KPj4gK3N0YXR1cw0KPiANCj4+ICvCoMKgIGlmIChhc3RfZ2V0 X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhEQywgDQo+PiArQVNURFBf TElOS19TVUNDRVNTKSAmJg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZ2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhERiwgDQo+PiArQVNURFBfSFBE KSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB2aWRlb19vbl9vZmYgPDw9IDQ7DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlIChhc3RfZ2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgDQo+PiArMHhERiwNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX01JUlJPUl9WSURFT19FTkFCTEUpICE9IHZpZGVv X29uX29mZikgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ly8gd2FpdCAxIG1zDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBtZGVsYXkoMSk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArwqDC oCB9DQo+IA0KPj4gK30NCj4gDQo+PiArDQo+IA0KPj4gK3ZvaWQgYXN0X2RwX3NldF9tb2RlKHN0 cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0DQo+IA0KPj4gK2FzdF92Ymlvc19tb2RlX2luZm8g KnZiaW9zX21vZGUpIHsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCA9IHRv X2FzdF9wcml2YXRlKGNydGMtPmRldik7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIHUzMiB1bFJl ZnJlc2hSYXRlSW5kZXg7DQo+IA0KPj4gK8KgwqAgdTggTW9kZUlkeDsNCj4gDQo+PiArDQo+IA0K Pj4gK8KgwqAgdWxSZWZyZXNoUmF0ZUluZGV4ID0gdmJpb3NfbW9kZS0+ZW5oX3RhYmxlLT5yZWZy ZXNoX3JhdGVfaW5kZXggLSANCj4+ICsxOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCBzd2l0Y2gg KGNydGMtPm1vZGUuY3J0Y19oZGlzcGxheSkgew0KPiANCj4+ICvCoMKgIGNhc2UgMzIwOg0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMzIweDI0MF82MDsNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSA0MDA6 DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSBBU1REUF80MDB4MzAwXzYw Ow0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNl IDUxMjoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzUxMngz ODRfNjA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKg IGNhc2UgNjQwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQ XzY0MHg0ODBfNjAgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2UgODAwOg0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQXzgwMHg2MDBfNTYgKyAodTgpIHVsUmVm cmVzaFJhdGVJbmRleCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiAN Cj4+ICvCoMKgIGNhc2UgMTAyNDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlk eCA9IChBU1REUF8xMDI0eDc2OF82MCArICh1OCkgdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSAxMTUyOg0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTE1Mng4NjRfNzU7 DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2Ug MTI4MDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNydGMtPm1vZGUuY3J0Y192 ZGlzcGxheSA9PSA4MDApDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBNb2RlSWR4ID0gKEFTVERQXzEyODB4ODAwXzYwX1JCIC0gKHU4KSANCj4+ICt1bFJlZnJl c2hSYXRlSW5kZXgpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlwqDCoMKgwqDC oMKgwqDCoMKgIC8vIDEwMjQNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTI4MHgxMDI0XzYwICsgKHU4KSANCj4+ICt1bFJlZnJl c2hSYXRlSW5kZXgpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+ PiArwqDCoCBjYXNlIDEzNjA6DQo+IA0KPj4gK8KgwqAgY2FzZSAxMzY2Og0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTM2Nng3NjhfNjA7DQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2UgMTQ0MDoNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1REUF8xNDQweDkwMF82MF9SQiAt ICh1OCkgDQo+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSAxNjAwOg0KPiANCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBpZiAoY3J0Yy0+bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDkwMCkNCj4gDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTYw MHg5MDBfNjBfUkIgLSAodTgpIA0KPj4gK3VsUmVmcmVzaFJhdGVJbmRleCk7DQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGVsc2XCoMKgwqDCoMKgwqDCoMKgwqAgLy8xMjAwDQo+IA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTYw MHgxMjAwXzYwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiAr wqDCoCBjYXNlIDE2ODA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSAo QVNURFBfMTY4MHgxMDUwXzYwX1JCIC0gKHU4KSANCj4+ICt1bFJlZnJlc2hSYXRlSW5kZXgpOw0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIDE5 MjA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjcnRjLT5tb2RlLmNydGNfdmRp c3BsYXkgPT0gMTA4MCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIE1vZGVJZHggPSBBU1REUF8xOTIweDEwODBfNjA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGVsc2XCoMKgwqDCoMKgwqDCoMKgwqAgLy8xMjAwDQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTkyMHgxMjAwXzYwOw0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBkZWZhdWx0 Og0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+IA0KPj4gK8KgwqAgfQ0K PiANCj4+ICsNCj4gDQo+PiArwqDCoCAvKg0KPiANCj4+ICvCoMKgICogQ1JFMFs3OjBdOiBNSVND MCAoKDB4MDA6IDE4LWJwcCkgb3IgKDB4MjA6IDI0LWJwcCkNCj4gDQo+PiArwqDCoCAqIENSRTFb NzowXTogTUlTQzEgKGRlZmF1bHQ6IDB4MDApDQo+IA0KPj4gK8KgwqAgKiBDUkUyWzc6MF06IHZp ZGVvIGZvcm1hdCBpbmRleCAoMHgwMCB+IDB4MjAgb3IgMHg0MCB+IDB4NTApDQo+IA0KPj4gK8Kg wqAgKi8NCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NS VENfUE9SVCwgMHhFMCwgKHU4KSANCj4+ICt+QVNURFBfQ0xFQVJfTUFTSywNCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBU1REUF9N SVNDMF8yNGJwcCk7DQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4RTEsICh1OCkgDQo+PiArfkFTVERQX0NMRUFSX01BU0ssIEFTVERQ X01JU0MxKTsNCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X0NSVENfUE9SVCwgMHhFMiwgKHU4KQ0KPiANCj4+ICt+QVNURFBfQ0xFQVJfTUFTSywgTW9kZUlk eCk7IH0NCj4gDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgN Cj4gDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oIGluZGV4IGExOTMxNWIyZi4u ZmYxYWUzMTRiIDEwMDY0NA0KPiANCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry di5oDQo+IA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgNCj4gDQo+PiBA QCAtNzAsNiArNzAsNyBAQCBlbnVtIGFzdF90eF9jaGlwIHsNCj4gDQo+PsKgwqAgwqDCoMKgwqDC oMKgwqAgQVNUX1RYX05PTkUsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIEFTVF9UWF9TSUwx NjQsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIEFTVF9UWF9EUDUwMSwNCj4gDQo+PiArwqDC oCBBU1RfVFhfQVNURFAsDQo+IA0KPj7CoMKgIH07DQo+IA0KPj4gDQo+IA0KPj7CoMKgICNkZWZp bmUgQVNUX0RSQU1fNTEyTXgxNiAwDQo+IA0KPj4gQEAgLTE4NCw2ICsxODUsMTAgQEAgc3RydWN0 IGFzdF9wcml2YXRlIHsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2VuY29kZXIgZW5jb2RlcjsNCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJt X2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB9IGRwNTAxOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qgew0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9l bmNvZGVyIGVuY29kZXI7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIH0gYXN0ZHA7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0gb3V0cHV0Ow0K PiANCj4+IA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBib29sIHN1cHBvcnRfd2lkZV9zY3Jl ZW47DQo+IA0KPj4gQEAgLTM1NywxMCArMzYyLDExMyBAQCBpbnQgYXN0X21vZGVfY29uZmlnX2lu aXQoc3RydWN0IGFzdF9wcml2YXRlIA0KPj4gKmFzdCk7DQo+IA0KPj7CoMKgICNkZWZpbmUgQVNU X0RQNTAxX0VESURfREFUQcKgwqDCoCAweGYwMjANCj4gDQo+PiANCj4gDQo+PsKgwqAgLyogRGVm aW5lIGZvciBTb2Mgc2NyYXRjaGVkIHJlZyAqLw0KPiANCj4+ICsjZGVmaW5lIENPUFJPQ0VTU09S X0xBVU5DSMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDUpDQo+ IA0KPj4gKw0KPiANCj4+ICsvKg0KPiANCj4+ICsgKiBEaXNwbGF5IFRyYW5zbWl0dGVyIFR5cGU6 DQo+IA0KPj4gKyAqLw0KPiANCj4+ICsjZGVmaW5lIFRYX1RZUEVfTUFTS8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDMsIDEpDQo+ IA0KPj4gKyNkZWZpbmUgTk9fVFjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDAgPDwgMSkN Cj4gDQo+PiArI2RlZmluZSBJVEU2NjEyMV9WQklPU19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgMSkNCj4gDQo+PiArI2RlZmluZSBTSTE2NF9WQklPU19U WMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDIg PDwgMSkNCj4gDQo+PiArI2RlZmluZSBDSDcwMDNfVkJJT1NfVFjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMyA8PCAxKQ0KPiANCj4+ICsjZGVmaW5lIERQNTAx X1ZCSU9TX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICg0IDw8IDEpDQo+IA0KPj4gKyNkZWZpbmUgQU5YOTgwN19WQklPU19UWMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDUgPDwgMSkNCj4gDQo+PiArI2RlZmluZSBUWF9G V19FTUJFRERFRF9GV19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoNiA8PCAxKQ0K PiANCj4+ICsjZGVmaW5lIEFTVERQX0RQTUNVX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICg3IDw8IDEpDQo+IA0KPj4gKw0KPiAN Cj4+wqDCoCAjZGVmaW5lIEFTVF9WUkFNX0lOSVRfU1RBVFVTX01BU0vCoMKgwqDCoMKgwqAgR0VO TUFTSyg3LCA2KQ0KPiANCj4+wqDCoCAvLyNkZWZpbmUgQVNUX1ZSQU1fSU5JVF9CWV9CTUPCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDcpDQo+IA0KPj7CoMKgIC8vI2RlZmluZSBBU1RfVlJB TV9JTklUX1JFQURZwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg2KQ0KPiANCj4+ IA0KPiANCj4+ICsvKiBEZWZpbmUgZm9yIFNvYyBzY3JhdGNoZWQgcmVnIHVzZWQgb24gQVNURFAg Ki8NCj4gDQo+PiArI2RlZmluZSBBU1RfRFBfUEhZX1NMRUVQwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNCkNCj4gDQo+PiArI2RlZmluZSBBU1RfRFBfVklERU9f RU5BQkxFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDApDQo+IA0KPj4gKw0KPiANCj4+ ICsjZGVmaW5lIEFTVF9EUF9QT1dFUl9PTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHRydWUNCj4gDQo+PiArI2RlZmluZSBBU1RfRFBfUE9XRVJfT0ZGwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlDQo+IA0KPj4gKw0KPiANCj4+ICsvKg0KPiAN Cj4+ICsgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGluZw0KPiANCj4+ICsgKiBDUkRD W2IwXTogRFAgbGluayBzdWNjZXNzDQo+IA0KPj4gKyAqIENSREZbYjBdOiBEUCBIUEQNCj4gDQo+ PiArICogQ1JFNVtiMF06IEhvc3QgcmVhZGluZyBFRElEIHByb2Nlc3MgaXMgZG9uZcKgICovDQo+ IA0KPj4gKyNkZWZpbmUgQVNURFBfTUNVX0ZXX0VYRUNVVElOR8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDUpDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfTElOS19T VUNDRVNTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QklUKDApDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfSFBEwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBCSVQoMCkNCj4gDQo+PiArI2RlZmluZSBBU1REUF9IT1NUX0VESURfUkVBRF9ET05FwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQX0hP U1RfRURJRF9SRUFEX0RPTkVfTUFTS8KgwqDCoCBHRU5NQVNLKDAsIDApDQo+IA0KPj4gKw0KPiAN Cj4+ICsvKg0KPiANCj4+ICsgKiBDUkI4W2IxXTogRW5hYmxlIFZTWU5DIG9mZg0KPiANCj4+ICsg KiBDUkI4W2IwXTogRW5hYmxlIEhTWU5DIG9mZg0KPiANCj4+ICsgKi8NCj4gDQo+PiArI2RlZmlu ZSBBU1RfRFBNU19WU1lOQ19PRkbCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDEpDQo+IA0KPj4gKyNkZWZpbmUgQVNUX0RQTVNf SFNZTkNfT0ZGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgwKQ0KPiANCj4+ICsNCj4gDQo+PiArLyoNCj4gDQo+PiArICogQ1JE RltiNF06IE1pcnJvciBvZiBBU1RfRFBfVklERU9fRU5BQkxFDQo+IA0KPj4gKyAqIFByZWNvbmRp dGlvbjrCoCBBLiB+QVNUX0RQX1BIWV9TTEVFUMKgICYmDQo+IA0KPj4gKyAqwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCLiBEUF9IUEQgJiYNCj4gDQo+PiAr ICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEMuIERQX0xJ TktfU1VDQ0VTUw0KPiANCj4+ICsgKi8NCj4gDQo+PiArI2RlZmluZSBBU1REUF9NSVJST1JfVklE RU9fRU5BQkxFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg0KQ0KPiANCj4+ICsN Cj4gDQo+PiArI2RlZmluZSBBU1REUF9FRElEX1JFQURfUE9JTlRFUl9NQVNLwqAgR0VOTUFTSyg3 LCAwKQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQX0VESURfVkFMSURfRkxBR19NQVNLwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMCwgMCkNCj4gDQo+PiArI2RlZmluZSBBU1RE UF9FRElEX1JFQURfREFUQV9NQVNLwqDCoMKgwqDCoMKgwqAgR0VOTUFTSyg3LCAwKQ0KPiANCj4+ ICsNCj4gDQo+PiArLyoNCj4gDQo+PiArICogQVNURFAgc2V0bW9kZSByZWdpc3RlcnM6DQo+IA0K Pj4gKyAqIENSRTBbNzowXTogTUlTQzAgKCgweDAwOiAxOC1icHApIG9yICgweDIwOiAyNC1icHAp DQo+IA0KPj4gKyAqIENSRTFbNzowXTogTUlTQzEgKGRlZmF1bHQ6IDB4MDApDQo+IA0KPj4gKyAq IENSRTJbNzowXTogdmlkZW8gZm9ybWF0IGluZGV4ICgweDAwIH4gMHgyMCBvciAweDQwIH4gMHg1 MCnCoCAqLw0KPiANCj4+ICsjZGVmaW5lIEFTVERQX01JU0MwXzI0YnBwwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg1KQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQX01JU0Mx wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIDANCj4gDQo+PiArI2RlZmluZSBBU1REUF9DTEVBUl9NQVNLwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soNywgMCkNCj4gDQo+PiArDQo+IA0KPj4gKy8qDQo+ IA0KPj4gKyAqIEFTVERQIHJlc291bHRpb24gdGFibGU6DQo+IA0KPj4gKyAqIEVYOsKgIEFTVERQ X0FfQl9DOg0KPiANCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBBOiBSZXNv bHV0aW9uDQo+IA0KPj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEI6IFJlZnJl c2ggUmF0ZQ0KPiANCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDOiBNaXNj IGluZm9ybWF0aW9uLCBzdWNoIGFzIENWVCwgUmVkdWNlIEJsYW5rZWQNCj4gDQo+PiArICovDQo+ IA0KPj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4MF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IDB4MDANCj4gDQo+PiArI2RlZmluZSBBU1REUF82NDB4NDgwXzcywqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgwMQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzY0MHg0ODBfNzXCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAweDAyDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4MF84NcKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDMNCj4gDQo+PiArI2RlZmluZSBBU1REUF84MDB4 NjAwXzU2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNA0KPiANCj4+ICsjZGVmaW5lIEFT VERQXzgwMHg2MDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA1DQo+IA0KPj4gKyNk ZWZpbmUgQVNURFBfODAweDYwMF83MsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDYNCj4g DQo+PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzc1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgwNw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzgwMHg2MDBfODXCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAweDA4DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTAyNHg3NjhfNjDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MDkNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xMDI0eDc2OF83MMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgwQQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzEwMjR4NzY4Xzc1 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBCDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTAyNHg3 NjhfODXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MEMNCj4gDQo+PiArI2RlZmluZSBBU1REUF8x MjgweDEwMjRfNjDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwRA0KPiANCj4+ICsjZGVmaW5lIEFTVERQ XzEyODB4MTAyNF83NcKgwqDCoMKgwqDCoMKgwqDCoCAweDBFDQo+IA0KPj4gKyNkZWZpbmUgQVNU RFBfMTI4MHgxMDI0Xzg1wqDCoMKgwqDCoMKgwqDCoMKgIDB4MEYNCj4gDQo+PiArI2RlZmluZSBB U1REUF8xNjAweDEyMDBfNjDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMA0KPiANCj4+ICsjZGVmaW5l IEFTVERQXzMyMHgyNDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDExDQo+IA0KPj4g KyNkZWZpbmUgQVNURFBfNDAweDMwMF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTIN Cj4gDQo+PiArI2RlZmluZSBBU1REUF81MTJ4Mzg0XzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgxMw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE5MjB4MTIwMF82MMKgwqDCoMKgwqDCoMKg wqDCoCAweDE0DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTkyMHgxMDgwXzYwwqDCoMKgwqDCoMKg wqDCoMKgIDB4MTUNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xMjgweDgwMF82MMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgMHgxNg0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzEyODB4ODAwXzYwX1JCwqDC oMKgwqAgMHgxNw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE0NDB4OTAwXzYwwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAweDE4DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTQ0MHg5MDBfNjBfUkLCoMKg wqDCoCAweDE5DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTY4MHgxMDUwXzYwwqDCoMKgwqDCoMKg wqDCoMKgIDB4MUENCj4gDQo+PiArI2RlZmluZSBBU1REUF8xNjgweDEwNTBfNjBfUkLCoMKgIDB4 MUINCj4gDQo+PiArI2RlZmluZSBBU1REUF8xNjAweDkwMF82MMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgMHgxQw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE2MDB4OTAwXzYwX1JCwqDCoMKgwqAgMHgx RA0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzEzNjZ4NzY4XzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAweDFFDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTE1Mng4NjRfNzXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MUYNCj4gDQo+PiArDQo+IA0KPj7CoMKgIGludCBhc3RfbW1faW5pdChzdHJ1Y3Qg YXN0X3ByaXZhdGUgKmFzdCk7DQo+IA0KPj4gDQo+IA0KPj7CoMKgIC8qIGFzdCBwb3N0ICovDQo+ IA0KPj4gQEAgLTM4MSw0ICs0ODksMTEgQEAgdm9pZCBhc3RfaW5pdF8zcmR0eChzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsNCj4gDQo+PsKgwqAgLyogYXN0X2kyYy5jICovDQo+IA0KPj4gwqDCoHN0 cnVjdCBhc3RfaTJjX2NoYW4gKmFzdF9pMmNfY3JlYXRlKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYp Ow0KPiANCj4+IA0KPiANCj4+ICsvKiBhc3BlZWQgRFAgKi8NCj4gDQo+PiAraW50IGFzdF9hc3Rk cF9yZWFkX2VkaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTggKmVkaWRkYXRhKTsgdm9pZA0K PiANCj4+ICthc3RfZHBfbGF1bmNoKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4IGJQb3dlcik7 IHZvaWQNCj4gDQo+PiArYXN0X2RwX3Bvd2VyX29uX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCBib29sIG5vKTsgdm9pZA0KPiANCj4+ICthc3RfZHBfc2V0X29uX29mZihzdHJ1Y3QgZHJtX2Rl dmljZSAqZGV2LCBib29sIG5vKTsgdm9pZA0KPiANCj4+ICthc3RfZHBfc2V0X21vZGUoc3RydWN0 IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgYXN0X3ZiaW9zX21vZGVfaW5mbw0KPiANCj4+ICsqdmJp b3NfbW9kZSk7DQo+IA0KPj4gKw0KPiANCj4+wqDCoCAjZW5kaWYNCj4gDQo+PiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IA0KPj4gYi9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9tYWluLmMgaW5kZXggMjJlOWUyZDNjLi4xMTEzZWUxY2IgMTAwNjQ0DQo+IA0K Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IA0KPj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IA0KPj4gQEAgLTIzMiw3ICsyMzIsNyBAQCBz dGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2RldmljZSANCj4+ICpkZXYsIGJv b2wgKm5lZWRfcG9zdCkNCj4gDQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhc3QtPnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9TSUwxNjQ7DQo+IA0K Pj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiANCj4gDQo+PiAtwqDCoMKgIGlmICgoYXN0 LT5jaGlwID09IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gQVNUMjQwMCkpIHsNCj4gDQo+PiAr wqDCoCBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDAp IHx8IA0KPj4gKyhhc3QtPmNoaXANCj4gDQo+PiArPT0gQVNUMjUwMCkpIHsNCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCDCoCogT24gQVNUMjMwMCBhbmQgMjQwMCwgbG9vayB0aGUgY29u ZmlndXJhdGlvbiBzZXQgDQo+PmJ5IHRoZSBTb0MgaW4NCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIMKgKiB0aGUgU09DIHNjcmF0Y2ggcmVnaXN0ZXIgIzEgYml0cyAx MTo4IA0KPj4oaW50ZXJlc3RpbmdseSBtYXJrZWQgQEANCj4gDQo+PiAtMjU2LDcgKzI1Niw4IEBA IHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIA0KPj4g Ym9vbCAqbmVlZF9wb3N0KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY2FzZSAweDBjOg0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hpcF90eXBlID0gQVNUX1RYX0RQNTAxOw0KPiANCj4+ wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiANCj4+IC3CoMKgwqAgfQ0K PiANCj4+ICvCoMKgIH0gZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDI2MDApDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9sYXVuY2goJmFzdC0+YmFzZSwgMCk7DQo+IA0KPj4g DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIC8qIFByaW50IHN0dWZmIGZvciBkaWFnbm9zdGlj IHB1cnBvc2VzICovDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHN3aXRjaChhc3QtPnR4X2No aXBfdHlwZSkgew0KPiANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9t b2RlLmMNCj4gDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21vZGUuYyBpbmRleCA0NWI1 NmIzOWEuLjQ3Mjg4MjViNyAxMDA2NDQNCj4gDQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0 L2FzdF9tb2RlLmMNCj4gDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMN Cj4gDQo+PiBAQCAtOTg4LDIxICs5ODgsNDEgQEAgc3RhdGljIGludCBhc3RfY3Vyc29yX3BsYW5l X2luaXQoc3RydWN0IA0KPj4gYXN0X3ByaXZhdGUgKmFzdCkNCj4gDQo+PsKgwqAgc3RhdGljIHZv aWQgYXN0X2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIGludCBtb2RlKQ0KPiANCj4+ wqDCoCB7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0 ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4gDQo+PiArwqDCoCB1OCBjaCA9IEFTVF9E UE1TX1ZTWU5DX09GRiB8IEFTVF9EUE1TX0hTWU5DX09GRjsNCj4gDQo+PiANCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqAgLyogVE9ETzogTWF5YmUgY29udHJvbCBkaXNwbGF5IHNpZ25hbCBnZW5l cmF0aW9uIHdpdGgNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgwqAqwqDCoMKgwqDCoMKgIFN5 bmMgRW5hYmxlIChiaXQgQ1IxNy43KS4NCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgwqAqLw0K PiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKG1vZGUpIHsNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX09OOg0KPiANCj4+IC3CoMKgwqAgY2FzZSBE Uk1fTU9ERV9EUE1TX1NUQU5EQlk6DQo+IA0KPj4gLcKgwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNf U1VTUEVORDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWdf bWFzayhhc3QsIEFTVF9JT19TRVFfUE9SVCzCoCAweDAxLCAweGRmLCANCj4+ICswKTsNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4YjYsIDB4ZmMsIA0KPj4gKzApOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFTVF9UWF9EUDUw MSkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhc3Rfc2V0X2RwNTAxX3ZpZGVvX291dHB1dChjcnRjLT5kZXYsIDEpOw0KPiANCj4+ICsN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFT VF9UWF9BU1REUCkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0X2RwX3Bvd2VyX29uX29mZihjcnRjLT5kZXYsIEFTVF9EUF9QT1dFUl9PTik7DQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfd2FpdF9mb3JfdnJl dHJhY2UoYXN0KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGFzdF9kcF9zZXRfb25fb2ZmKGNydGMtPmRldiwgMSk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9jcnRj X2xvYWRfbHV0KGFzdCwgY3J0Yyk7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNfU1RBTkRCWToN Cj4gDQo+PiArwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX09GRjoNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgY2ggPSBtb2RlOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFTVF9UWF9EUDUwMSkNCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2Rw NTAxX3ZpZGVvX291dHB1dChjcnRjLT5kZXYsIDApOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDC oCDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfQVNURFApIHsNCj4gDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9zZXRfb25fb2ZmKGNy dGMtPmRldiwgMCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhc3RfZHBfcG93ZXJfb25fb2ZmKGNydGMtPmRldiwgQVNUX0RQX1BPV0VSX09GRik7DQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fU0VRX1BPUlQswqAg MHgwMSwgMHhkZiwgDQo+PiArMHgyMCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFz dF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGI2LCAweGZjLCAN Cj4+ICtjaCk7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PsKgwqAgfQ0KPiAN Cj4+IA0KPiANCj4+IEBAIC0xMDI3LDcgKzEwNDcsNyBAQCBhc3RfY3J0Y19oZWxwZXJfbW9kZV92 YWxpZChzdHJ1Y3QgZHJtX2NydGMNCj4gDQo+PiAqY3J0YywgY29uc3Qgc3RydWN0IGRybV9kaXNw bGF5X21vZGUNCj4gDQo+PiANCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGlmICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8IChhc3QtPmNoaXAgPT0gDQo+PkFTVDIy MDApIHx8DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqDC oChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hpcCA9PSANCj4+QVNUMjQwMCkgfHwN Cj4gDQo+PiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgKGFzdC0+Y2hpcCA9PSBBU1Qy NTAwKSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoMKgwqAgKGFzdC0+Y2hpcCA9 PSBBU1QyNTAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI2MDApKSB7DQo+IA0KPj7CoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKChtb2RlLT5oZGlz cGxheSA9PSAxOTIwKSAmJiANCj4+KG1vZGUtPnZkaXNwbGF5ID09IDEwODApKQ0KPiANCj4+wqDC oCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXR1cm4gTU9ERV9PSzsNCj4gDQo+PiANCj4gDQo+PiBAQCAtMTExMCw2ICsxMTMw LDcgQEAgYXN0X2NydGNfaGVscGVyX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgDQo+PiAq Y3J0YywNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGFzdF9wcml2YXRlICphc3Qg PSB0b19hc3RfcHJpdmF0ZShjcnRjLT5kZXYpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgYXN0X2NydGNfc3RhdGUgKmFzdF9jcnRjX3N0YXRlID0gDQo+PnRvX2FzdF9jcnRjX3N0 YXRlKGNydGNfc3RhdGUpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYXN0X2Ny dGNfc3RhdGUgKm9sZF9hc3RfY3J0Y19zdGF0ZSA9DQo+IA0KPj4gdG9fYXN0X2NydGNfc3RhdGUo b2xkX2NydGNfc3RhdGUpOw0KPiANCj4+ICvCoMKgIHN0cnVjdCBhc3RfdmJpb3NfbW9kZV9pbmZv ICp2Ymlvc19tb2RlX2luZm8gPQ0KPiANCj4+ICsmYXN0X2NydGNfc3RhdGUtPnZiaW9zX21vZGVf aW5mbzsNCj4gDQo+PiANCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgLyoNCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqAgwqAqIFRoZSBnYW1tYSBMVVQgaGFzIHRvIGJlIHJlbG9hZGVkIGFmdGVy IGNoYW5naW5nIHRoZSANCj4+cHJpbWFyeSBAQA0KPiANCj4+IC0xMTE3LDYgKzExMzgsMTAgQEAg YXN0X2NydGNfaGVscGVyX2F0b21pY19mbHVzaChzdHJ1Y3QgZHJtX2NydGMgDQo+PiAqY3J0YywN Cj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgwqAqLw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDC oCBpZiAob2xkX2FzdF9jcnRjX3N0YXRlLT5mb3JtYXQgIT0gYXN0X2NydGNfc3RhdGUtPmZvcm1h dCkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9jcnRjX2xv YWRfbHV0KGFzdCwgY3J0Yyk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIC8vU2V0IEFzcGVlZCBE aXNwbGF5LVBvcnQNCj4gDQo+PiArwqDCoCBpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RY X0FTVERQKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfc2V0X21vZGUoY3J0 YywgdmJpb3NfbW9kZV9pbmZvKTsNCj4gDQo+PsKgwqAgfQ0KPiANCj4+IA0KPiANCj4+wqDCoCBz dGF0aWMgdm9pZA0KPiANCj4+IEBAIC0xNTI3LDYgKzE1NTIsOTMgQEAgc3RhdGljIGludCBhc3Rf ZHA1MDFfb3V0cHV0X2luaXQoc3RydWN0IA0KPj4gYXN0X3ByaXZhdGUgKmFzdCkNCj4gDQo+PsKg wqAgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+IA0KPj7CoMKgIH0NCj4gDQo+PiANCj4gDQo+ PiArLyoNCj4gDQo+PiArICogQVNQRUVEIERpc3BsYXktUG9ydCBDb25uZWN0b3INCj4gDQo+PiAr ICovDQo+IA0KPj4gKw0KPiANCj4+ICtzdGF0aWMgaW50IGFzdF9hc3RkcF9jb25uZWN0b3JfaGVs cGVyX2dldF9tb2RlcyhzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcg0KPiANCj4+ICsqY29ubmVjdG9yKSB7 DQo+IA0KPj4gK8KgwqAgdm9pZCAqZWRpZDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgaW50IHN1 Y2M7DQo+IA0KPj4gK8KgwqAgaW50IGNvdW50Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCBlZGlk ID0ga21hbGxvYyhFRElEX0xFTkdUSCwgR0ZQX0tFUk5FTCk7DQo+IA0KPj4gK8KgwqAgaWYgKCFl ZGlkKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9kcm1fY29ubmVjdG9y X3VwZGF0ZV9lZGlkX3Byb3BlcnR5Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCBzdWNjID0gYXN0 X2FzdGRwX3JlYWRfZWRpZChjb25uZWN0b3ItPmRldiwgZWRpZCk7DQo+IA0KPj4gK8KgwqAgaWYg KHN1Y2MgPCAwKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9rZnJlZTsN Cj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0 eShjb25uZWN0b3IsIGVkaWQpOw0KPiANCj4+ICvCoMKgIGNvdW50ID0gZHJtX2FkZF9lZGlkX21v ZGVzKGNvbm5lY3RvciwgZWRpZCk7DQo+IA0KPj4gK8KgwqAga2ZyZWUoZWRpZCk7DQo+IA0KPj4g Kw0KPiANCj4+ICvCoMKgIHJldHVybiBjb3VudDsNCj4gDQo+PiArDQo+IA0KPj4gK2Vycl9rZnJl ZToNCj4gDQo+PiArwqDCoCBrZnJlZShlZGlkKTsNCj4gDQo+PiArZXJyX2RybV9jb25uZWN0b3Jf dXBkYXRlX2VkaWRfcHJvcGVydHk6DQo+IA0KPj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVf ZWRpZF9wcm9wZXJ0eShjb25uZWN0b3IsIE5VTEwpOw0KPiANCj4+ICvCoMKgIHJldHVybiAwOw0K PiANCj4+ICt9DQo+IA0KPj4gKw0KPiANCj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25u ZWN0b3JfaGVscGVyX2Z1bmNzIA0KPj4gK2FzdF9hc3RkcF9jb25uZWN0b3JfaGVscGVyX2Z1bmNz ID0gew0KPiANCj4+ICvCoMKgIC5nZXRfbW9kZXMgPSBhc3RfYXN0ZHBfY29ubmVjdG9yX2hlbHBl cl9nZXRfbW9kZXMsDQo+IA0KPj4gK307DQo+IA0KPj4gKw0KPiANCj4+ICtzdGF0aWMgY29uc3Qg c3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgYXN0X2FzdGRwX2Nvbm5lY3Rvcl9mdW5jcyA9IA0K Pj4gK3sNCj4gDQo+PiArwqDCoCAucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3Jf cmVzZXQsDQo+IA0KPj4gK8KgwqAgLmZpbGxfbW9kZXMgPSBkcm1faGVscGVyX3Byb2JlX3Npbmds ZV9jb25uZWN0b3JfbW9kZXMsDQo+IA0KPj4gK8KgwqAgLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9y X2NsZWFudXAsDQo+IA0KPj4gK8KgwqAgLmF0b21pY19kdXBsaWNhdGVfc3RhdGUgPSANCj4+ICtk cm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRlLA0KPiANCj4+ICvCoMKg IC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IA0KPj4gK2RybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rv cl9kZXN0cm95X3N0YXRlLA0KPiANCj4+ICt9Ow0KPiANCj4+ICsNCj4gDQo+PiArc3RhdGljIGlu dCBhc3RfYXN0ZHBfY29ubmVjdG9yX2luaXQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0 DQo+IA0KPj4gK2RybV9jb25uZWN0b3IgKmNvbm5lY3Rvcikgew0KPiANCj4+ICvCoMKgIGludCBy ZXQ7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIHJldCA9IGRybV9jb25uZWN0b3JfaW5pdChkZXYs IGNvbm5lY3RvciwgDQo+PiArJmFzdF9hc3RkcF9jb25uZWN0b3JfZnVuY3MsDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX01P REVfQ09OTkVDVE9SX0Rpc3BsYXlQb3J0KTsNCj4gDQo+PiArwqDCoCBpZiAocmV0KQ0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDC oCBkcm1fY29ubmVjdG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLA0KPiANCj4+ICsmYXN0X2FzdGRw X2Nvbm5lY3Rvcl9oZWxwZXJfZnVuY3MpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCBjb25uZWN0 b3ItPmludGVybGFjZV9hbGxvd2VkID0gMDsNCj4gDQo+PiArwqDCoCBjb25uZWN0b3ItPmRvdWJs ZXNjYW5fYWxsb3dlZCA9IDA7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIGNvbm5lY3Rvci0+cG9s bGVkID0gRFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1Q7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKg IHJldHVybiAwOw0KPiANCj4+ICt9DQo+IA0KPj4gKw0KPiANCj4+ICtzdGF0aWMgaW50IGFzdF9h c3RkcF9vdXRwdXRfaW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCkgew0KPiANCj4+ICvCoMKg IHN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSAmYXN0LT5iYXNlOw0KPiANCj4+ICvCoMKgIHN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9ICZhc3QtPmNydGM7DQo+IA0KPj4gK8KgwqAgc3RydWN0IGRybV9l bmNvZGVyICplbmNvZGVyID0gJmFzdC0+b3V0cHV0LmFzdGRwLmVuY29kZXI7DQo+IA0KPj4gK8Kg wqAgc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciA9ICZhc3QtPm91dHB1dC5hc3RkcC5j b25uZWN0b3I7DQo+IA0KPj4gK8KgwqAgaW50IHJldDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAg cmV0ID0gZHJtX3NpbXBsZV9lbmNvZGVyX2luaXQoZGV2LCBlbmNvZGVyLCANCj4+ICtEUk1fTU9E RV9FTkNPREVSX1RNRFMpOw0KPiANCj4+ICvCoMKgIGlmIChyZXQpDQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+IA0KPj4gK8KgwqAgZW5jb2Rlci0+cG9zc2libGVf Y3J0Y3MgPSBkcm1fY3J0Y19tYXNrKGNydGMpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXQg PSBhc3RfYXN0ZHBfY29ubmVjdG9yX2luaXQoZGV2LCBjb25uZWN0b3IpOw0KPiANCj4+ICvCoMKg IGlmIChyZXQpDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+IA0K Pj4gKw0KPiANCj4+ICvCoMKgIHJldCA9IGRybV9jb25uZWN0b3JfYXR0YWNoX2VuY29kZXIoY29u bmVjdG9yLCBlbmNvZGVyKTsNCj4gDQo+PiArwqDCoCBpZiAocmV0KQ0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXR1cm4g MDsNCj4gDQo+PiArfQ0KPiANCj4+ICsNCj4gDQo+PsKgwqAgLyoNCj4gDQo+PsKgwqDCoCAqIE1v ZGUgY29uZmlnDQo+IA0KPj7CoMKgwqAgKi8NCj4gDQo+PiBAQCAtMTU2Myw3ICsxNjc1LDggQEAg aW50IGFzdF9tb2RlX2NvbmZpZ19pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSANCj4+ICphc3QpDQo+ IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgYXN0LT5jaGlwID09IEFTVDIyMDAgfHwN Cj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqBhc3QtPmNoaXAgPT0gQVNUMjMwMCB8 fA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoGFzdC0+Y2hpcCA9PSBBU1QyNDAw IHx8DQo+IA0KPj4gLcKgwqDCoCDCoMKgwqAgYXN0LT5jaGlwID09IEFTVDI1MDApIHsNCj4gDQo+ PiArwqDCoCDCoMKgwqAgYXN0LT5jaGlwID09IEFTVDI1MDAgfHwNCj4gDQo+PiArwqDCoCDCoMKg wqAgYXN0LT5jaGlwID09IEFTVDI2MDApIHsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIGRldi0+bW9kZV9jb25maWcubWF4X3dpZHRoID0gMTkyMDsNCj4gDQo+PsKg wqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRldi0+bW9kZV9jb25maWcubWF4X2hl aWdodCA9IDIwNDg7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0gZWxzZSB7DQo+IA0KPj4g QEAgLTE1OTQsNiArMTcwNyw5IEBAIGludCBhc3RfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgYXN0 X3ByaXZhdGUgDQo+PiAqYXN0KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBjYXNlIEFTVF9U WF9EUDUwMToNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9 IGFzdF9kcDUwMV9vdXRwdXRfaW5pdChhc3QpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSBBU1RfVFhfQVNURFA6DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IGFzdF9hc3RkcF9vdXRwdXRfaW5pdChh c3QpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqAgfQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPiANCj4+ wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gDQo+PiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+IA0KPj4gYi9kcml2 ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMgaW5kZXggYjVkOTJmNjUyLi4wYWE5Y2YwZmIgMTAw NjQ0DQo+IA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+IA0KPj4g KysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+IA0KPj4gQEAgLTM3OSw3ICsz NzksOSBAQCB2b2lkIGFzdF9wb3N0X2dwdShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQ0KPiANCj4+ wqDCoCDCoMKgwqDCoMKgwqDCoCBhc3RfZW5hYmxlX21taW8oZGV2KTsNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqAgYXN0X3NldF9kZWZfZXh0X3JlZyhkZXYpOw0KPiANCj4+IA0KPiANCj4+IC3C oMKgwqAgaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsNCj4gDQo+PiArwqDC oCBpZiAoYXN0LT5jaGlwID09IEFTVDI2MDApIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0X2RwX2xhdW5jaChkZXYsIDEpOw0KPiANCj4+ICvCoMKgIH0gZWxzZSBpZiAoYXN0LT5j b25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgew0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNTAwKQ0KPiANCj4+wqDCoCDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9wb3N0X2NoaXBf MjUwMChkZXYpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZWxz ZSBpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09IA0KPj5BU1QyNDAwKQ0K PiANCj4+IA0KPiANCj4+IGJhc2UtY29tbWl0OiBjNTRiMzlhNTY1MjI3NTM4YzUyZWFkMjM0OWVi MTdkNTRhYWRkNmY3DQo+IA0KPj4gLS0NCj4gDQo+PiAyLjI3LjANCj4gDQo+PiANCj4gDQo+IC0t DQo+IA0KPiBUaG9tYXMgWmltbWVybWFubg0KPiANCj4gR3JhcGhpY3MgRHJpdmVyIERldmVsb3Bl cg0KPiANCj4gU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQo+IA0KPiBNYXhm ZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkNCj4gDQo+IChIUkIgMzY4MDksIEFH IE7DvHJuYmVyZykNCj4gDQo+IEdlc2Now6RmdHNmw7xocmVyOiBJdm8gVG90ZXYNCj4gDQoNCi0t DQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVsb3Blcg0KU1VTRSBTb2Z0 d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpNYXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJl cmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFHIE7DvHJuYmVyZykNCkdlc2Now6RmdHNmw7xocmVy OiBJdm8gVG90ZXYNCg==