Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp985615iob; Fri, 13 May 2022 18:37:31 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwACiZLENQBxFlcU8+CqkzBMXAbSp/a47s1Ojby/yUIqmmArizd5JWijVojy4cpG8iEcklD X-Received: by 2002:adf:d1ec:0:b0:20c:6228:e2c8 with SMTP id g12-20020adfd1ec000000b0020c6228e2c8mr6051986wrd.328.1652492251200; Fri, 13 May 2022 18:37:31 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1652492251; cv=pass; d=google.com; s=arc-20160816; b=M3OEZ0+h+EagoIBRf2CH4CmLjcC85oBiudCSXDokngVBcAqvkFt0JjhwkiAW7TPwgc 7oQRekGQO8IHwMg4X02rMRg0V8DsOCQpyeMXeZuJg90fZiACF5YucknAKu0qrVlUkGNC Gr8LkEUQOgcJZdvZqealKBYmDBV7/2iCo2wsT9sUxa500aLhhRsfyi90jTM5md/fsLCi xsV/hCQT/QZFg1nfOZWd11a+UC1WR7Egc8/Y7akyjQ4dBBWxvCDSttt5P26rODaU/RD3 AjDYOeUXcFqpgPn85u311n4B7M/TXHh8+qmRsIeVCKfrIqmpX0LS01dBtZyq3nvybpLc 01RQ== 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=x/kTm1KbhUGBYk+dZebwB8FLsxxNy5fmXHShEVFxUGM=; b=Z68rgylj5BriS9dzM4pWTHofc9hKPU8AoexsWo7hSNi/9+U3OzO1Q7Z40FguQyqlDR 98VC4XXpK1ueBQEZ5adTdsBdZPJxhINF8bL50rqTeobkV17h5SS5+/2sDwW2kLfNl4Au Op9BAgQMWapkLtWTYTqkLu78hrAfbaMEjRCSeVw/Gn/i8l1e0k848MErDzRf4T2qCTr0 9UydS8maXDiX4bA5HVcwSptwJARaVNIV6MACscWFA9myYRXZ3MWHYw5A2YlbUIifZCTc 8hDKOMhtUNb8fcXhQLb3qwXOcwlA/7hyyYv3lz885PWzmbqOO48ez7y9jNW7TsdqOjP2 gazw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=kONOAMO2; 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 l18-20020a7bc452000000b0039452bae059si6549762wmi.55.2022.05.13.18.37.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 13 May 2022 18:37:31 -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=kONOAMO2; 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 238152A0A67; Fri, 13 May 2022 17:04:21 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1378886AbiEMJHT (ORCPT + 99 others); Fri, 13 May 2022 05:07:19 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:53890 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1378790AbiEMJHR (ORCPT ); Fri, 13 May 2022 05:07:17 -0400 Received: from APC01-PSA-obe.outbound.protection.outlook.com (mail-psaapc01on2130.outbound.protection.outlook.com [40.107.255.130]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7385E5EDCF for ; Fri, 13 May 2022 02:07:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BPOj1DQLaGp4HOvB/LFqjagqX2yP3YobtmUtE2zLdd27FzfvXIhqzIdz/KbnzvmsAvcjn2ERY9h1HHOYwXgltwVnEqFpvb+DmtXpFFiZorZAbFrvmt3Fu78G1TOLLcZsmMDQvTO3egJPD0sKjySNReDU/xK2NXU2oKQXsBiv48ATpG9zhmi7VwLnYq580OA+wtrt+uVyLQl2Npsu+45InYmW+sMEWqPy7kOj3HfwlxSsMIC3gnj9EsgIMB6MoRiPBR56XVf6kOHXFjJEbSsjR9xar1BNZmE/RVh9rynXtM9tOfzKa0J/kb7cPL6HaGNxVC861MjwT8dUbwDFZcifHg== 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=x/kTm1KbhUGBYk+dZebwB8FLsxxNy5fmXHShEVFxUGM=; b=VEepZPtMDAqMDIjPad7cyu81LKyddcT7TZekYivP/9GsAQ5nrhyXtS/dvHA1EES2d9hY4JP3MJ1U7+3wCxfwNZqsIj+RB/EU011HYsKid1dnLhn3meL9Ljhlhxu/oBH+WNr3NA8tGhMA7BQ3ki/d/tMZOMpgBakqLr6rbnDD6FFg1QMYIt+xJ7fDv73f664oAKS2wkIMWGYbarnBOW7OIH2Uc4r1qQHOaQ5CZodvBMGTnJ/fniO7HuSq7skXFd0se/mcgKKkUsAYefecpdUg27dMoIrNrwLl4LLwFBYpUq2vm5ySCFP0ZIDRwDUxnFL23M2zloS7r41/4ugsr8yaTA== 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=x/kTm1KbhUGBYk+dZebwB8FLsxxNy5fmXHShEVFxUGM=; b=kONOAMO2O5FH+zfL2ez9E41GwtNVrhysVLJFx2ZHZhEgFXcBfXwbKnlXgYl1U6wpMBbwKZYqp3BG1wJv7ysIJu9IBjM0BeHhQhwzYwvXjTynmtaT0dnJFKzi8rTQHm2jay4jbnSEHe3cg5g4YczzLCYQORgU7JOqF0Jngfg4JirSJEH0m2Afi5TzFYeVLL/DJdvaEUtHESF1AYJUdvaxq94tXdll2MlMyoj4lWalsJlVuPDRisWRTpS+KV7MfJMhsua7hQRfroGG0Nw8q2/+eInICBrHW/nLLX/NZvnpnr8WIuqtu0N3lHqU6eSRlxtOXvsfffpuNdtCwt0sQf4Vag== Received: from PSAPR06MB4805.apcprd06.prod.outlook.com (2603:1096:301:9a::13) by TY0PR06MB4942.apcprd06.prod.outlook.com (2603:1096:400:14f::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5250.13; Fri, 13 May 2022 09:07:08 +0000 Received: from PSAPR06MB4805.apcprd06.prod.outlook.com ([fe80::74d8:6b7e:cf2:b4ab]) by PSAPR06MB4805.apcprd06.prod.outlook.com ([fe80::74d8:6b7e:cf2:b4ab%6]) with mapi id 15.20.5250.014; Fri, 13 May 2022 09:07:08 +0000 From: Kuo-Hsiang Chou To: Thomas Zimmermann , "dri-devel@lists.freedesktop.org" , "linux-kernel@vger.kernel.org" CC: "airlied@redhat.com" , "airlied@linux.ie" , "daniel@ffwll.ch" , Arc Sung , Tommy Huang , Hungju Huang , 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+MK0OWy8AgAAD9HCACaRXgIAEiAzA Date: Fri, 13 May 2022 09:07:07 +0000 Message-ID: References: <872e0d4b-411a-594f-a194-428986e18c3d@suse.de> <20220428075603.20904-1-kuohsiang_chou@aspeedtech.com> <43be719f-9149-abf0-fc5a-95b8d1c6761d@suse.de> In-Reply-To: <43be719f-9149-abf0-fc5a-95b8d1c6761d@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: 3368a7a3-d2d1-490f-7cca-08da34bff4e7 x-ms-traffictypediagnostic: TY0PR06MB4942: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: 391yIbcHMxBc33eaInZQ+/liWUIoXphbw0uw73lP6kkvRK72tF+DMB9UiPPxnPWpwn4sUJ6poXSmY+hjjQTcbXOuIB0Bj/utEiOcxy6YowIXn7fKO+9XIJaaRKjKreEwFPtnRGeoFESL4TtRDgO3WMXRuMjLXWjLOHr4BSOSc514T0xdf+GaJMlrPtFNhzdPMNt0/87Lo/XWc/cpLia7ATPirE8lcZy/k0fAUclzB8sO7/JNH1/dcXSexunWf+UfgrFdrErh1otqU3PbqzGfsJlaZCm8rJSzwBzRpXaOQpGQVfwa5pfNgWvsg+O/DYx+PAv+tVtBW7ASrY78M802KdSkwX/ArBhq/iPG1Dy6BJtZbDxYVd5K+56igqiBb5CW1k3UKxvcSIFoER1s9S/3zt7sD7lLSv7+2icEGYW9MaZr3U6tfXcfHeChPixwOfJFaBtOYmX2iI7RfmvKi9EOGkrBZ0R1uh+nny+FDZkVbLqyty69wZuPeKwPrsQo+bi4Xc6ARG0FWs1+8ecU7aIK5Pg7s0v4TJHrgppZsE0ZsLd/Cd92Bw4h2dYFOKiztZHrPv5Kz7jWRt7kdRc3JINkfHci+fYjicf7AC/0zkkDpMV5nb0HIdrsFe+iie7C+GKqP4yIG8ldzK5pCu7r5OEWkojtmzrinqTq0qUOWLHNEV7E3ScQsAyixs+MMH3LMbNFgGoYvxIIoEgFQPh4Fr6ag3/mSyeufhrChEfYPtWh/en6sVwRz1H8a2ZM2l70UWLeK+OwbKKX+BLjOhSfCX6ZSR+zMcFqIGiilVz6KNcg8ZE= 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)(396003)(39840400004)(366004)(346002)(136003)(5660300002)(33656002)(55016003)(2906002)(83380400001)(122000001)(30864003)(53546011)(6506007)(7696005)(52536014)(110136005)(38100700002)(186003)(38070700005)(66574015)(8936002)(4326008)(76116006)(66556008)(8676002)(66946007)(66476007)(64756008)(9686003)(66446008)(26005)(316002)(54906003)(107886003)(508600001)(71200400001)(86362001)(579004)(559001);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?d2F2UTNpbXhHRGw3dmxVWm91ak1HOVUxcm9zbmJNbVBmTm50aEpMWXMwRjhD?= =?utf-8?B?QjBHMTQzVTN3VEV5Nk1CZllmVko0UTVLcGVjRGpzNHpWdFdoTWtHcDZlZFNW?= =?utf-8?B?T3l6Tml0dytWaDRjY2hRMUNFanhTWi9vbnBVMDU3UVhDeC8ybXMvQzA5cHNC?= =?utf-8?B?TlhjZGdpeGhTRUgyWERseC8xM1NkSi9JYlBwR210aTlyWnIyZENSM2cvbnVJ?= =?utf-8?B?T3VlNm1pczRyZUFlZkM5NjI3UW42N2NTR1NOS3ZBb05yY0h4MktwSmN5czFK?= =?utf-8?B?amxwL29uVThFc3VsRHRLOXAwcitLZzlZYnVrWnhBL3A4T2ZwK0wxd3FmVys3?= =?utf-8?B?SW5sZk5RdVBZS1Z5NXYxQ2FEdlllNXBCWHNncVV2L0RoN2RKTkFrd3piSGQx?= =?utf-8?B?QldQSkJpcW9Pd1RNRXhEamlsSTN1VHptTzV5S2ZFV2kxOXVVK1V3d0lXY1pu?= =?utf-8?B?OEw4a1Q2dUZrWm93V09PNFFyMTFneERMYlJ1Nko5ZDA1UUp1aDNFeExJMWF0?= =?utf-8?B?clA0WnoxN0N3MkNaTXhNWDl6aklqSm1sWnBGTWlDNFlhMzJQV1Z0MTRVMEE1?= =?utf-8?B?YXQvM3U2Q0dCMFUxYzVSWmF4SkE3MGJLdFJ5UjJKOGxlZHpoZ09INUNFL0hL?= =?utf-8?B?Zzdxb3dMaHNvTXdzUnp4VUR4SFM0dlRkZU5CcEo1V2RkYXhvUDNhZFRnTHJ1?= =?utf-8?B?ajZZc3UyVE9hemhIdzB0cGJBRzB2RVhSem5PY24zWVpBdzFHdGV2K1owdkFp?= =?utf-8?B?eXNUOWU3bTJPa1V0Wk9SREYrUXFQVWhEUHN6RUt0bERuTVBsVjlPaU9XNHdy?= =?utf-8?B?OG4yRzlBQTIzU3puYzlMcGp6UVFiUHNSRHZzYUEwOTQ3dy92NXBhbW83T3VU?= =?utf-8?B?UHhDK2hlVURtYVJOeTMxY3N1LzNzVklHQ1ZiQnBtczlwRGVYUTNuM2FiUjhv?= =?utf-8?B?am5RSWlVL0k1VnVIT2hkWld1S0lEVmMxQ201SDFFYU5NQWJZUm02MjlzSERK?= =?utf-8?B?alhyQXVFanZCclFrV1dFV0RkM2xJZ0NpNzQ1b3Zpb0VUV0ZXSHhOLy9BdlVp?= =?utf-8?B?NS9tYW1yWEx4YkM5bmhpcWtaT1VVNllaaHVqdFg2UkpWcHViUkdVdnl5ODll?= =?utf-8?B?a1dQeU9NN2tmVjZUa3pOQlNGMTZkRHFVRnBEN05DZXFTakNMeXM5QzEwUVo1?= =?utf-8?B?aGRxRU8rL3RjWXNzTFZ5cGh4WU8zQUw5SnkzZ0NrQ0dNRExMTHU0N0NwNWdF?= =?utf-8?B?VEJTWGtEaVM3bFpjWUV0WVlvMUVadG1oR2ZXSDh6TmR2MW1sTTE4MThBRWdV?= =?utf-8?B?dERyWDJTSkQ1N1R4M2xqdkhIdFVWR0R6ZEhqTEp3WTFwbDlrSHV3TGRPZllt?= =?utf-8?B?SXZkdXZtSzBZRlRwNWk2SFlNVG94SlVLVitzcEpXNG9mbi9rdU5RclZNV3ZT?= =?utf-8?B?OEVBbkM3SDQvdDduTjlzSnJLcncxemFkOUFYMGdhSUdRYVp6c1RxZE4xWlBq?= =?utf-8?B?elFDTlJuY0R5NEh1UHpkc0xrYzJCM0hkMSsxYnphWDIvcHlUaVEreExpY21h?= =?utf-8?B?THVlM0hCVWFPRDR4a0NiOUhoaUt1aEZ0RTdJeHplZlhTYW5rdmkrMWErSjBY?= =?utf-8?B?akpZS2hsd1RtdDVvaUtXN2hsYkFma0R0VDhBVkRrdWhVOFNPZWZHN05EeUVw?= =?utf-8?B?TmtHRDdmN1l4d0RiOTdKMnZtclhIRU04U2JpTXNjMDlQeVdMQUUzd254UkhZ?= =?utf-8?B?ampKMkVpMjg3bmNkQjNVWSsxelRvT2NyczQzRE1VMWxPNDhJV09xa2NUS0pZ?= =?utf-8?B?bk9Uek9pQ2hvKzYvZVZDSm9LTE9xOGVMdjVKNENhUFFIZXRjN2RZVVFkN0JD?= =?utf-8?B?VUNEQzFRWmNocEdPYjF6TklaRkpiTmRCWmwrNGdQaG0xejMwTzdibW9JUlh2?= =?utf-8?B?ajZKa1kvTDB1VktyOGFMeVVDMDVUUFVUM1I1eTR6a21lM0syb1dhQmp6aDVP?= =?utf-8?B?Zksxa2VYb0FwYnkrb0pYMHhCb3V5c1VmR3ZFemN0MEhjRzZVcjZVQW5pYW9H?= =?utf-8?B?NVQ2Q3Juditva00vR1JGeEMxbEFVRlZXRDRWL2V1d0hEQnljNlFJQVZxUWJQ?= =?utf-8?B?WFo1a1BtSTBFMjVBRkUzcC9leHFubFlHNHNTMWRqUG1UVTBGc1RmdXhlc09F?= =?utf-8?B?VEpDMWliS1ZCL1hQOXV1Z2s1MW9TQlg1STVsdVBwNkwvbzFsQmYzOWxTRjF5?= =?utf-8?B?amJFa2w3TlNDbDRWTnQ5anh3NXpZWHF3aktTL3FlQyt1ZHByS21YMFc3a2Mv?= =?utf-8?B?M0pWZlh1NDNWemVaZWhSUUpoRURXbEdtc2MveGg4V2hwOUIvRXNkSTQvck1w?= =?utf-8?Q?UJM2Y0GuiDvqhRZg=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: 3368a7a3-d2d1-490f-7cca-08da34bff4e7 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 May 2022 09:07:07.8243 (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: fbDZLcozx32ggJhLxjVRosuvKZMjBGzfIYOV4VGszY/BD+Rxak3Qs0L8Kq0Ts5UOMFm5wAb2nu3BKvjdKvTSvLdOumk1K+6Sx+XW/G+zt5k= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY0PR06MB4942 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 DQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBUaG9tYXMgWmltbWVybWFubiBb bWFpbHRvOnR6aW1tZXJtYW5uQHN1c2UuZGVdIA0KU2VudDogVHVlc2RheSwgTWF5IDEwLCAyMDIy IDY6NTYgUE0NClRvOiBLdW8tSHNpYW5nIENob3UgPGt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2gu Y29tPjsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgbGludXgta2VybmVsQHZnZXIu a2VybmVsLm9yZw0KU3ViamVjdDogUmU6IFtQQVRDSCB2NF0gZHJtL2FzdDogQ3JlYXRlIHRoZSBk cml2ZXIgZm9yIEFTUEVFRCBwcm9wcmlldG9yeSBEaXNwbGF5LVBvcnQNCg0KSGkNCg0KQW0gMDQu MDUuMjIgdW0gMTA6NDkgc2NocmllYiBLdW8tSHNpYW5nIENob3U6DQo+IEhpIFRob21hcywNCj4g DQo+IFRoYW5rcyBmb3IgeW91ciBlZmZvcnRzIHRvIHJldmlldyB0aGlzIHBhdGNoLg0KPiANCj4g Tm93LCBJIG9ic2VydmUgYSBjaGFuZ2UgdGhhdCBhZnRlciBEUCB1bnBsdWdnZWQgYW5kIHRoZW4g dGhlIHN5c3RlbSBpcyANCj4gdW5hYmxlIHRvIGdldCBFRElEIGZyb20gRC1zdWIgY29ubmVjdGlu Zy4NCj4gDQo+IFRoZSByZWFzb24gc2VlbXMgdGhhdCBUWHMgYXJlIG1lcmdlZCBpbnRvIHVuaW9u IHN0cnVjdHVyZSBpbiANCj4gL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5oDQo+ICDCoChh NTliMDI2NDE5ZjMzMDQwZDdkMjhiOGUzYjFjZWE2ODFiOWNlN2E3DQo+IDxodHRwczovL2NnaXQu ZnJlZWRlc2t0b3Aub3JnL2RybS9kcm0tbWlzYy9jb21taXQvP2lkPWE1OWIwMjY0MTlmMzMwNDAN Cj4gZDdkMjhiOGUzYjFjZWE2ODFiOWNlN2E3PikNCg0KSSBoYXZlIHBvc3RlZCBhIHBhdGNoIHRo YXQgZW5hYmxlcyBtdWx0aXBsZSBwYXJhbGxlbCBvdXRwdXRzLiBTZWUNCg0KIA0KPGh0dHBzOi8v bG9yZS5rZXJuZWwub3JnL2RyaS1kZXZlbC8yMDIyMDUxMDEwNTAxMC4yMDcxMi0xLXR6aW1tZXJt YW5uQHN1c2UuZGUvVC8jdT4NCg0KSWYgeW91IGhhdmUgdGhlIHRpbWUsIEknZCBhcHByZWNpYXRl IGlmIHlvdSBjb3VsZCB0ZXN0IGl0Lg0KDQpIaSBUaG9tYXMsDQpGaXJzdCwgdGhhbmtzIGZvciB5 b3VyIGVmZm9ydHMgb24gdGhpcyBwYXRjaCBvZiAiIGVuYWJsZXMgbXVsdGlwbGUgcGFyYWxsZWwg b3V0cHV0cyAiLg0KQnV0IGl0IGRvZXNuJ3Qgd29yay4gVGhlcmUgaXMgc3RpbGwgTk8gRURJRCBn b3QgZnJvbSBELXN1YiBhZnRlciBEUCB1bnBsdWdnZWQuDQoNCkJhc2Ugb24geW91ciBwYXRjaCwg SSBhbSB0cnlpbmcgdG8gZmluZCBvdXQgdGhlIHNvbHV0aW9uIGFsc28uDQpGaW5hbCwgdGhhbmtz IGZvciB5b3VyIGhlbHAgYWdhaW4hDQoNClJlZ2FyZHMsDQoJS3VvLUhzaWFuZyBDaG91DQoNCkJl c3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4gDQo+IEFub3RoZXIsIGRvIHlvdSBuZWVkIHRoZSBhc3Qy NjAwIEVWQiB0byBlYXNlIHZlcmlmaWNhdGlvbiBvbiAiZHJtL2FzdCIgPw0KPiANCj4gUmVnYXJk cywNCj4gDQo+ICDCoMKgwqDCoMKgwqDCoCBLdW8tSHNpYW5nIENob3UNCj4gDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IFRob21hcyBaaW1tZXJtYW5uIFttYWlsdG86dHpp bW1lcm1hbm5Ac3VzZS5kZV0NCj4gU2VudDogV2VkbmVzZGF5LCBNYXkgMDQsIDIwMjIgMzoyOCBQ TQ0KPiBUbzogS3VvLUhzaWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNoLmNvbT47 IA0KPiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBsaW51eC1rZXJuZWxAdmdlci5r ZXJuZWwub3JnDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjRdIGRybS9hc3Q6IENyZWF0ZSB0aGUg ZHJpdmVyIGZvciBBU1BFRUQgDQo+IHByb3ByaWV0b3J5IERpc3BsYXktUG9ydA0KPiANCj4gSGkN Cj4gDQo+IEFtIDI4LjA0LjIyIHVtIDA5OjU2IHNjaHJpZWIgS3VvSHNpYW5nIENob3U6DQo+IA0K Pj4gVjE6DQo+IA0KPj4gMS4gVGhlIE1DVSBGVyBjb250cm9saW5nIEFTUEVFRCBEUCBpcyBsb2Fk ZWQgYnkgQk1DIGJvb3QgbG9hZGVyLg0KPiANCj4+IDIuIERyaXZlciBzdGFydHMgYWZ0ZXIgQ1Jb MzoxXSA9PSAxMTFiIHRoYXQgaW5kaWNhdGVzIFR4IGlzIEFTVERQLA0KPiANCj4+wqDCoMKgwqAg YW5kIENSRDFbNV0gaGFzIGJlZW4gYXNzZXJ0ZWQgYnkgQk1WQyBib290IGxvYWRlci4NCj4gDQo+ PiAzLiBFRElEIGlzIHByaW9yaXRpemVkIGJ5IERQIG1vbml0b3IuDQo+IA0KPj4gNC4gRFAncyBF RElEIGhhcyBoaWdoIHByaW9yaXR5IHRvIGRlY2lkZSByZXNvbHV0aW9uIHN1cHBvcnRpbmcuDQo+ IA0KPj4gDQo+IA0KPj4gVjI6DQo+IA0KPj4gTW9kdWxlcyBkZXNjcmlwdGlvbjoNCj4gDQo+PiAx LiBBU1REUCAoQVNQRUVEIERpc3BsYXlQb3J0KSBpcyBjb250cm9sbGVkIGJ5IGRlZGljYXRlZA0K PiANCj4+wqDCoMKgwqAgQVNULU1DVSAoQVNQRUVEIHByb3ByaWF0YXJ5IE1DVSkuDQo+IA0KPj4g Mi4gTUNVIGlzIGxvb3BpbmcgaW4gY2hhcmdlZCBvZiBIUEQsIFJlYWQgRURJRCwgTGluayBUcmFp bmluZyB3aXRoDQo+IA0KPj7CoMKgwqDCoCBEUCBzaW5rLg0KPiANCj4+IDMuIEFTVERQIGFuZCBB U1QtTVVDIHJlc2lkZSBpbiBCTUMgKEJhc2Vib2FyZCBNYW5hZ2VtZW50IGNvbnRyb2xsZXIpDQo+ IA0KPj7CoMKgwqDCoCBhZGRyZXNzaW5nLXNwYWNlLg0KPiANCj4+IDQuIEFTUEVFRCBEUk0gZHJp dmVyIHJlcXVlc3RzIE1DVSB0byBnZXQgSFBEIGFuZCBFRElEIGJ5IENSLXNjcmF0Y2hlZA0KPiAN Cj4+wqDCoMKgwqAgcmVnaXN0ZXIuDQo+IA0KPj4gDQo+IA0KPj4gQm9vdGluZyBzZXF1ZW5jZToN Cj4gDQo+PiAxLiBDaGVjayBpZiBUWCBpcyBBU1REUMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyAN Cj4+IGFzdF9kcF9sYXVuY2goKQ0KPiANCj4+IDIuIENoZWNrIGlmIERQLU1DVSBGVyBoYXMgbG9h ZGVkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCANCj4+IC8vIGFzdF9kcF9sYXVuY2goKQ0KPiANCj4+IDMuIFJlYWQg RURJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLyANCj4+IGFzdF9kcF9yZWFkX2VkaWQoKQ0KPiAN Cj4+IDQuIFJlc29sdXRpb24gc3dpdGNowqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIA0KPj4gYXN0X2RwX1Nl dE91dHB1dCgpDQo+IA0KPj4gDQo+IA0KPj4gVjM6DQo+IA0KPj4gMS4gUmVtb3ZlIHVubmVlZGVk IHNlbWljb2xvbi4NCj4gDQo+PiAyLiBBcHBseSB0byBnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9w Lm9yZy9kcm0vZHJtLCBpbnN0ZWFkIG9mDQo+IA0KPj7CoMKgwqDCoCBnaXQ6Ly9hbm9uZ2l0LmZy ZWVkZXNrdG9wLm9yZy9kcm0vZHJtLW1pc2MNCj4gDQo+PiAzLiBSZXNvbHZlIGF1dG8gYnVpbGQg dGVzdCBXQVJOSU5HcyBvbiBWMSBwYXRjaC4NCj4gDQo+PiANCj4gDQo+PiBWNDoNCj4gDQo+PiAx LiBTeW5jIGNvZGUtYmFzZSB3aXRoIGtlcm5lbCA1LjE3X3JjNiAyLiBSZW1vdmUgdGhlIGRlZmlu ZSBvZg0KPiANCj4+IERQQ29udHJvbFBvd2VyLCBiZWNhdXNlIERQIGNoaXBzIG5lZWQgdG8gYmUN Cj4gDQo+PsKgwqDCoMKgIHBvd2VyZWQgb24gdG8gYmUgdXNlZC4NCj4gDQo+PiAzLiBSZW1vdmUg dGhlIHN3aXRjaGVzIG9mIFBIWSBhbmQgRGlzcGxheSBmcm9tIEVESUQgcHJvY2VkdXJlLg0KPiAN Cj4+IDQuIFJldmlzZSBpbmNyZWFpbmcgZGVsYXkgdG8gZml4ZWQgZGVsYXksIGJlY2F1c2UgdGhp cyB2ZXJzaW9uIGtlcm5lbA0KPiANCj4+wqDCoMKgwqAgZG9lc24ndCBkZXRlY3QgbWluaXRvciBj b25zaXN0ZW5udGx5Lg0KPiANCj4+IDUuIENyZWF0ZSBjbGVhbi11cCBjb2RlIHVzZWQgZm9yIHJl c2V0IG9mIHBvd2VyIHN0YXRlIG9uIGVycm9ycyB3aXRoDQo+IA0KPj7CoMKgwqDCoCAtRUlPIG1h bm5lci4NCj4gDQo+PiA2LiBSZXZpc2UgdGhlIERQIGRldGVjdGlvbiBieSBUWCB0eXBlIGFuZCBp dHMgRFAtRlcgc3RhdHVzIGR1cmluZw0KPiANCj4+wqDCoMKgwqAgYm9vdGluZyBhbmQgcmVzdW1l Lg0KPiANCj4+IDcuIENvcnJlY3QgdGhlIENhbWVsQ2FzZSBTdHlsZS4NCj4gDQo+PiA4LiBVc2Ug cmVnaXN0ZXIgcmVhZGluZyB3aGlsZSBuZWVkaW5nLCBhbmQgcmVtb3ZlIHRvIGhvbGQgZnVsbA0K PiANCj4+wqDCoMKgwqAgcmVnaXN0ZXIuDQo+IA0KPj4gOS4gSW5zdGVhZCBvZiAndTgnLCByZXZp c2UgdG8gJ2Jvb2wnIG9uIHN3d2l0Y2ggb2YgUEhZIGFuZCB2aWRlby4NCj4gDQo+PiAxMC5Db3Jy ZWN0IHR5cG8NCj4gDQo+PiAxMS5SZW1vdmUgdGhlIGR1cGxpY2F0ZWQgY29weSBvZiBUWCBkZWZp bml0aW9uLg0KPiANCj4+IDEyLlVzZSBFRElEX0xFTkdUSCBhcyB0aGUgY29uc3RhbnQgb2YgMTI4 Lg0KPiANCj4+IA0KPiANCj4+IFNpZ25lZC1vZmYtYnk6IEt1b0hzaWFuZyBDaG91IDxrdW9oc2lh bmdfY2hvdUBhc3BlZWR0ZWNoLmNvbSANCj4+IDxtYWlsdG86a3VvaHNpYW5nX2Nob3VAYXNwZWVk dGVjaC5jb20+Pg0KPiANCj4gUmV2aWV3ZWQtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVy bWFubkBzdXNlLmRlIA0KPiA8bWFpbHRvOnR6aW1tZXJtYW5uQHN1c2UuZGU+Pg0KPiANCj4gSSd2 ZSBtZWFud2hpbGUgYWRkZWQgeW91ciBwYXRjaCB0byBkcm0tbWlzYy1uZXh0LiBJdCBzaG91bGQg c2hvdyB1cCBpbiANCj4gb25lIG9mIHRoZSBuZXh0IGtlcm5lbCByZWxlYXNlcy7CoCBUaGFua3Mg YSBsb3QuDQo+IA0KPiBCZXN0IHJlZ2FyZHMNCj4gDQo+IFRob21hcw0KPiANCj4+IC0tLQ0KPiAN Cj4+wqDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L01ha2VmaWxlwqDCoCB8wqDCoCAyICstDQo+IA0K Pj7CoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmPCoMKgIHwgMjgyIA0KPj4rKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gDQo+PsKgwqAgZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfZHJ2LmjCoCB8IDExNSArKysrKysrKysrKysrKw0KPiANCj4+wqDCoCBkcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9tYWluLmMgfMKgwqAgNSArLQ0KPiANCj4+wqDCoCBkcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9tb2RlLmMgfCAxMjQgKysrKysrKysrKysrKystDQo+IA0KPj7CoMKgIGRyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyB8wqDCoCA0ICstDQo+IA0KPj7CoMKgIDYgZmlsZXMg Y2hhbmdlZCwgNTI0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pDQo+IA0KPj7CoMKgIGNy ZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5jDQo+IA0KPj4gDQo+ IA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4gDQo+PiBi L2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUgaW5kZXggMjFmNzExNjBiLi41YTUzY2U1MWYg MTAwNjQ0DQo+IA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZQ0KPiANCj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4gDQo+PiBAQCAtMyw2ICszLDYg QEANCj4gDQo+PsKgwqAgIyBNYWtlZmlsZSBmb3IgdGhlIGRybSBkZXZpY2UgZHJpdmVyLsKgIFRo aXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgDQo+PmZvciB0aGUNCj4gDQo+PsKgwqAgIyBEaXJl Y3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChEUkkpIGluIFhGcmVlODYgNC4xLjAgYW5kIGhp Z2hlci4NCj4gDQo+PiANCj4gDQo+PiAtYXN0LXkgOj0gYXN0X2Rydi5vIGFzdF9pMmMubyBhc3Rf bWFpbi5vIGFzdF9tbS5vIGFzdF9tb2RlLm8NCj4gDQo+PiBhc3RfcG9zdC5vIGFzdF9kcDUwMS5v DQo+IA0KPj4gK2FzdC15IDo9IGFzdF9kcnYubyBhc3RfaTJjLm8gYXN0X21haW4ubyBhc3RfbW0u byBhc3RfbW9kZS5vDQo+IA0KPj4gK2FzdF9wb3N0Lm8gYXN0X2RwNTAxLm8gYXN0X2RwLm8NCj4g DQo+PiANCj4gDQo+PsKgwqAgb2JqLSQoQ09ORklHX0RSTV9BU1QpIDo9IGFzdC5vDQo+IA0KPj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMNCj4gDQo+PiBiL2RyaXZl cnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMgbmV3IGZpbGUgbW9kZSAxMDA2NDQgaW5kZXgNCj4gDQo+ PiAwMDAwMDAwMDAuLjQ1NTFiYzhhMw0KPiANCj4+IC0tLSAvZGV2L251bGwNCj4gDQo+PiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5jDQo+IA0KPj4gQEAgLTAsMCArMSwyODIgQEAN Cj4gDQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjANCj4gDQo+PiArLy8g Q29weXJpZ2h0IChjKSAyMDIxLCBBU1BFRUQgVGVjaG5vbG9neSBJbmMuDQo+IA0KPj4gKy8vIEF1 dGhvcnM6IEt1b0hzaWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBhc3BlZWR0ZWNoLmNvbSANCj4+ ICs8bWFpbHRvOmt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tPj4NCj4gDQo+PiArDQo+IA0K Pj4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPg0KPiANCj4+ICsjaW5jbHVkZSA8bGludXgv ZGVsYXkuaD4NCj4gDQo+PiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4NCj4gDQo+PiArI2lu Y2x1ZGUgImFzdF9kcnYuaCINCj4gDQo+PiArDQo+IA0KPj4gK2ludCBhc3RfYXN0ZHBfcmVhZF9l ZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICplZGlkZGF0YSkgew0KPiANCj4+ICvCoMKg IHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoZGV2KTsNCj4gDQo+PiAr wqDCoCB1OCBpID0gMCwgaiA9IDA7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIC8qDQo+IA0KPj4g K8KgwqAgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGluZw0KPiANCj4+ICvCoMKgICog Q1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPiANCj4+ICvCoMKgICogQ1JERltiMF06IERQIEhQ RA0KPiANCj4+ICvCoMKgICogQ1JFNVtiMF06IEhvc3QgcmVhZGluZyBFRElEIHByb2Nlc3MgaXMg ZG9uZQ0KPiANCj4+ICvCoMKgICovDQo+IA0KPj4gK8KgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9y ZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsIA0KPj4gK0FTVERQX01DVV9GV19F WEVDVVRJTkcpICYmDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhf cmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERDLCANCj4+ICtBU1REUF9MSU5LX1NV Q0NFU1MpICYmDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVn X21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLCANCj4+ICtBU1REUF9IUEQpICYmDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9IT1NUX0VESURf UkVBRF9ET05FX01BU0spKSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVy cl9hc3RkcF9lZGlkX25vdF9yZWFkeTsNCj4gDQo+PiArwqDCoCB9DQo+IA0KPj4gKw0KPiANCj4+ ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1 LCAodTgpIA0KPj4gK35BU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0ssDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMCk7DQo+IA0KPj4g Kw0KPiANCj4+ICvCoMKgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7DQo+IA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIC8qDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICogQ1JFNFs3 OjBdOiBSZWFkLVBvaW50ZXIgZm9yIEVESUQgKFVuaXQ6IDRieXRlcyk7IHZhbGlkIA0KPj4gK3Jh bmdlOiAwfjY0DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+IA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweEU0LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAodTgpIA0KPj4gK35BU1REUF9FRElEX1JF QURfUE9JTlRFUl9NQVNLLCAodTgpIGkpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBq ID0gMDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+IA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgICogQ1JEN1tiMF06IHZhbGlkIGZsYWcgZm9yIEVESUQNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBDUkQ2W2IwXTogbWlycm9yIHJlYWQgcG9pbnRl ciBmb3IgRURJRA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1Rf SU9fQ1JUQ19QT1JULCANCj4+ICsweEQ3LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFTVERQX0VESURfVkFMSURfRkxBR19NQVNL KSAhPSAweDAxKSB8fA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCANCj4+ICsw eEQ2LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+PiArQVNURFBfRURJ RF9SRUFEX1BPSU5URVJfTUFTSykgIT0gaSkpIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqIERlbGF5IGFyZSBnZXR0aW5nIGxvbmdlciB3aXRoIGVhY2ggcmV0cnkuDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIDEuIFRoZSBEZWxh eXMgYXJlIG9mdGVuIDIgbG9vcHMgd2hlbiB1c2VycyByZXF1ZXN0ICJEaXNwbGF5IFNldHRpbmdz Ig0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoCDC oCBvZiByaWdodC1jbGljayBvZiBtb3VzZS4NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgICogMi4gVGhlIERlbGF5cyBhcmUgb2Z0ZW4gbG9uZ2VyIGEgbG90IHdo ZW4gc3lzdGVtIHJlc3VtZSBmcm9tIFMzL1M0Lg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIG1kZWxheShqKzEpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCAN Cj4+ICtBU1RfSU9fQ1JUQ19QT1JULCAweEQxLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX01DVV9GV19FWEVDVVRJTkcpICYm DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIA0KPj4gK0FTVF9JT19DUlRDX1BPUlQs IDB4REMsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgDQo+PiArQVNURFBfTElOS19TVUNDRVNTKSAmJg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVnX21h c2soYXN0LCANCj4+ICtBU1RfSU9fQ1JUQ19QT1JULCAweERGLCBBU1REUF9IUEQpKSkgew0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGdvdG8gZXJyX2FzdGRwX2p1bXBfb3V0X2xvb3Bfb2ZfZWRpZDsNCj4gDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBqKys7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoaiA+IDIwMCkNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGVycl9hc3RkcF9q dW1wX291dF9sb29wX29mX2VkaWQ7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4g DQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICooZWRpZGRhdGEpID0gYXN0X2dl dF9pbmRleF9yZWdfbWFzayhhc3QsIA0KPj4gK0FTVF9JT19DUlRDX1BPUlQsDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHhEOCwgDQo+PiArQVNU RFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICoo ZWRpZGRhdGEgKyAxKSA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCANCj4+ICtBU1RfSU9f Q1JUQ19QT1JULCAweEQ5LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9FRElEX1JFQURfREFUQV9N QVNLKTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0YSArIDIpID0gYXN0 X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIA0KPj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4REEsDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIA0KPj4gK0FTVERQX0VESURfUkVBRF9EQVRBX01BU0spOw0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCAqKGVkaWRkYXRhICsgMykgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgDQo+PiArQVNUX0lPX0NSVENfUE9SVCwgMHhEQiwNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+PiArQVNU RFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoaSA9PSAzMSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgLyoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICogRm9yIDEyOC1ieXRlcyBFRElEXzEuMywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICogMS4gQWRkIHRoZSB2YWx1ZSBvZiBCeXRlcy0xMjYgdG8gQnl0 ZXMtMTI3Lg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgVGhlIEJ5dGVzLTEyNyBpcyBDaGVja3N1bS4gU3VtIG9mIA0K Pj4gK2FsbCAxMjhieXRlcyBzaG91bGQNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVxdWFsIDDCoMKgwqAgKG1vZCAy NTYpLg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAyLiBN b2RpZnkgQnl0ZXMtMTI2IHRvIGJlIDAuDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUaGUgQnl0ZXMtMTI2IGluZGlj YXRlcyB0aGUgTnVtYmVyIA0KPj4gK29mIGV4dGVuc2lvbnMgdG8NCj4gDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvbGxv dy4gMCByZXByZXNlbnRzIG5vZXh0ZW5zaW9ucy4NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICovDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAqKGVkaWRkYXRhICsgMykgPSAqKGVkaWRkYXRhICsgMykgKyAqKGVkaWRkYXRh ICsgDQo+PiArMik7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqKGVkaWRkYXRhICsgMikgPSAwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+ IA0KPj4gKw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBlZGlkZGF0YSArPSA0Ow0KPiAN Cj4+ICvCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsICh1OCkgDQo+PiArfkFTVERQX0hPU1RfRURJ RF9SRUFEX0RPTkVfTUFTSywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9IT1NUX0VESURfUkVBRF9ET05FKTsNCj4gDQo+PiAr DQo+IA0KPj4gK8KgwqAgcmV0dXJuIDA7DQo+IA0KPj4gKw0KPiANCj4+ICtlcnJfYXN0ZHBfanVt cF9vdXRfbG9vcF9vZl9lZGlkOg0KPiANCj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2so YXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1OCkgDQo+PiArfkFTVERQX0hPU1RfRURJRF9SRUFE X0RPTkVfTUFTSywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCANCj4+ICtBU1REUF9IT1NUX0VESURfUkVBRF9ET05FKTsNCj4gDQo+PiArwqDCoCBy ZXR1cm4gKH4oaisyNTYpICsgMSk7DQo+IA0KPj4gKw0KPiANCj4+ICtlcnJfYXN0ZHBfZWRpZF9u b3RfcmVhZHk6DQo+IA0KPj4gK8KgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsIA0KPj4gK0FTVERQX01DVV9GV19FWEVDVVRJTkcpKSkN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICh+MHhEMSArIDEpOw0KPiANCj4+ ICvCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweERDLCANCj4+ICtBU1REUF9MSU5LX1NVQ0NFU1MpKSkNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgcmV0dXJuICh+MHhEQyArIDEpOw0KPiANCj4+ICvCoMKgIGlmICghKGFzdF9nZXRf aW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLCANCj4+ICtBU1REUF9I UEQpKSkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICh+MHhERiArIDEpOw0K PiANCj4+ICvCoMKgIGlmICghKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweEU1LCANCj4+ICtBU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0spKSkNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICh+MHhFNSArIDEpOw0KPiANCj4+ICsN Cj4gDQo+PiArwqDCoCByZXR1cm7CoMKgwqDCoMKgIDA7DQo+IA0KPj4gK30NCj4gDQo+PiArDQo+ IA0KPj4gKy8qDQo+IA0KPj4gKyAqIExhdW5jaCBBc3BlZWQgRFANCj4gDQo+PiArICovDQo+IA0K Pj4gK3ZvaWQgYXN0X2RwX2xhdW5jaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB1OCBiUG93ZXIp IHsNCj4gDQo+PiArwqDCoCB1MzIgaSA9IDAsIGogPSAwLCBXYWl0Q291bnQgPSAxOw0KPiANCj4+ ICvCoMKgIHU4IGJEUFRYID0gMDsNCj4gDQo+PiArwqDCoCB1OCBiRFBFeGVjdXRlID0gMTsNCj4g DQo+PiArDQo+IA0KPj4gK8KgwqAgc3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0b19hc3RfcHJp dmF0ZShkZXYpOw0KPiANCj4+ICvCoMKgIC8vIFMzIGNvbWUgYmFjaywgbmVlZCBtb3JlIHRpbWUg dG8gd2FpdCBCTUMgcmVhZHkuDQo+IA0KPj4gK8KgwqAgaWYgKGJQb3dlcikNCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgV2FpdENvdW50ID0gMzAwOw0KPiANCj4+ICsNCj4gDQo+PiArDQo+ IA0KPj4gK8KgwqAgLy8gV2FpdCB0b3RhbCBjb3VudCBieSBkaWZmZXJlbnQgY29uZGl0aW9uLg0K PiANCj4+ICvCoMKgIGZvciAoaiA9IDA7IGogPCBXYWl0Q291bnQ7IGorKykgew0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCBiRFBUWCA9IGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fQ1JUQ19QT1JULCANCj4+ICsweEQxLA0KPiANCj4+ICtUWF9UWVBFX01BU0spOw0KPiAN Cj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJEUFRYKQ0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gKw0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2xlZXAoMTAwKTsNCj4gDQo+PiArwqDCoCB9DQo+ IA0KPj4gKw0KPiANCj4+ICvCoMKgIC8vIDB4RSA6IEFTVERQIHdpdGggRFBNQ1UgRlcgaGFuZGxp bmcNCj4gDQo+PiArwqDCoCBpZiAoYkRQVFggPT0gQVNURFBfRFBNQ1VfVFgpIHsNCj4gDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gV2FpdCBvbmUgc2Vjb25kIHRoZW4gdGltZW91dC4NCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSA9IDA7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIA0KPj4gKzB4RDEsIENPUFJPQ0VTU09SX0xBVU5DSCkgIT0NCj4gDQo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIENPUFJPQ0VTU09SX0xBVU5DSCkg ew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaSsrOw0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gd2FpdCAxMDAgbXMN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1zbGVlcCgxMDAp Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmIChpID49IDEwKSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8gRFAgd291bGQgbm90IGJlIHJlYWR5Lg0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJEUEV4 ZWN1dGUgPSAwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+IA0KPj4gKw0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYkRQRXhlY3V0ZSkNCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hpcF90eXBlID0gQVNU X1RYX0FTVERQOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3Nl dF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHU4KSANCj4+ICt+QVNU RFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkUp Ow0KPiANCj4+ICvCoMKgIH0gZWxzZQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Qt PnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9OT05FOw0KPiANCj4+ICt9DQo+IA0KPj4gKw0KPiANCj4+ ICsNCj4gDQo+PiArDQo+IA0KPj4gK3ZvaWQgYXN0X2RwX3Bvd2VyX29uX29mZihzdHJ1Y3QgZHJt X2RldmljZSAqZGV2LCBib29sIG9uKSB7DQo+IA0KPj4gK8KgwqAgc3RydWN0IGFzdF9wcml2YXRl ICphc3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiANCj4+ICvCoMKgIC8vIFJlYWQgYW5kIFR1 cm4gb2ZmIERQIFBIWSBzbGVlcA0KPiANCj4+ICvCoMKgIHU4IGJFMyA9IGFzdF9nZXRfaW5kZXhf cmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUzLA0KPiANCj4+ICtBU1RfRFBfVklE RU9fRU5BQkxFKTsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgLy8gVHVybiBvbiBEUCBQSFkgc2xl ZXANCj4gDQo+PiArwqDCoCBpZiAoIW9uKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBi RTMgfD0gQVNUX0RQX1BIWV9TTEVFUDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgLy8gRFAgUG93 ZXIgb24vb2ZmDQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9J T19DUlRDX1BPUlQsIDB4RTMsICh1OCkNCj4gDQo+PiArfkFTVF9EUF9QSFlfU0xFRVAsIGJFMyk7 IH0NCj4gDQo+PiArDQo+IA0KPj4gKw0KPiANCj4+ICsNCj4gDQo+PiArdm9pZCBhc3RfZHBfc2V0 X29uX29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIG9uKSB7DQo+IA0KPj4gK8KgwqAg c3RydWN0IGFzdF9wcml2YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShkZXYpOw0KPiANCj4+ICvC oMKgIHU4IHZpZGVvX29uX29mZiA9IG9uOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAvLyBWaWRl byBPbi9PZmYNCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X0NSVENfUE9SVCwgMHhFMywgKHU4KQ0KPiANCj4+ICt+QVNUX0RQX1ZJREVPX0VOQUJMRSwgb24p Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAvLyBJZiBEUCBwbHVnIGluIGFuZCBsaW5rIHN1Y2Nl c3NmdWwgdGhlbiBjaGVjayB2aWRlbyBvbiAvIG9mZiANCj4+ICtzdGF0dXMNCj4gDQo+PiArwqDC oCBpZiAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REMs IA0KPj4gK0FTVERQX0xJTktfU1VDQ0VTUykgJiYNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REYsIA0K Pj4gK0FTVERQX0hQRCkpIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmlkZW9fb25f b2ZmIDw8PSA0Ow0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB3aGlsZSAoYXN0X2dldF9p bmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIA0KPj4gKzB4REYsDQo+IA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9NSVJST1JfVklERU9fRU5B QkxFKSAhPSB2aWRlb19vbl9vZmYpIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC8vIHdhaXQgMSBtcw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbWRlbGF5KDEpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9 DQo+IA0KPj4gK8KgwqAgfQ0KPiANCj4+ICt9DQo+IA0KPj4gKw0KPiANCj4+ICt2b2lkIGFzdF9k cF9zZXRfbW9kZShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdA0KPiANCj4+ICthc3RfdmJp b3NfbW9kZV9pbmZvICp2Ymlvc19tb2RlKSB7DQo+IA0KPj4gK8KgwqAgc3RydWN0IGFzdF9wcml2 YXRlICphc3QgPSB0b19hc3RfcHJpdmF0ZShjcnRjLT5kZXYpOw0KPiANCj4+ICsNCj4gDQo+PiAr wqDCoCB1MzIgdWxSZWZyZXNoUmF0ZUluZGV4Ow0KPiANCj4+ICvCoMKgIHU4IE1vZGVJZHg7DQo+ IA0KPj4gKw0KPiANCj4+ICvCoMKgIHVsUmVmcmVzaFJhdGVJbmRleCA9IHZiaW9zX21vZGUtPmVu aF90YWJsZS0+cmVmcmVzaF9yYXRlX2luZGV4IC0gDQo+PiArMTsNCj4gDQo+PiArDQo+IA0KPj4g K8KgwqAgc3dpdGNoIChjcnRjLT5tb2RlLmNydGNfaGRpc3BsYXkpIHsNCj4gDQo+PiArwqDCoCBj YXNlIDMyMDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzMy MHgyNDBfNjA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvC oMKgIGNhc2UgNDAwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNU RFBfNDAweDMwMF82MDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0K Pj4gK8KgwqAgY2FzZSA1MTI6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHgg PSBBU1REUF81MTJ4Mzg0XzYwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsN Cj4gDQo+PiArwqDCoCBjYXNlIDY0MDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9k ZUlkeCA9IChBU1REUF82NDB4NDgwXzYwICsgKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIDgwMDoN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1REUF84MDB4NjAwXzU2 ICsgKHU4KSB1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIDEwMjQ6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTAyNHg3NjhfNjAgKyAodTgpIHVsUmVmcmVzaFJhdGVJ bmRleCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKg IGNhc2UgMTE1MjoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQ XzExNTJ4ODY0Xzc1Ow0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+ PiArwqDCoCBjYXNlIDEyODA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjcnRj LT5tb2RlLmNydGNfdmRpc3BsYXkgPT0gODAwKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1REUF8xMjgweDgwMF82MF9SQiAtICh1OCkg DQo+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZWxzZcKgwqDCoMKgwqDCoMKgwqDCoCAvLyAxMDI0DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQXzEyODB4MTAyNF82MCArICh1OCkg DQo+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSAxMzYwOg0KPiANCj4+ICvCoMKgIGNhc2UgMTM2NjoN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzEzNjZ4NzY4XzYw Ow0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNl IDE0NDA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTQ0 MHg5MDBfNjBfUkIgLSAodTgpIA0KPj4gK3VsUmVmcmVzaFJhdGVJbmRleCk7DQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2UgMTYwMDoNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGNydGMtPm1vZGUuY3J0Y192ZGlzcGxheSA9PSA5 MDApDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4 ID0gKEFTVERQXzE2MDB4OTAwXzYwX1JCIC0gKHU4KSANCj4+ICt1bFJlZnJlc2hSYXRlSW5kZXgp Ow0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlwqDCoMKgwqDCoMKgwqDCoMKgIC8v MTIwMA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlk eCA9IEFTVERQXzE2MDB4MTIwMF82MDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJl YWs7DQo+IA0KPj4gK8KgwqAgY2FzZSAxNjgwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBNb2RlSWR4ID0gKEFTVERQXzE2ODB4MTA1MF82MF9SQiAtICh1OCkgDQo+PiArdWxSZWZyZXNo UmF0ZUluZGV4KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4g K8KgwqAgY2FzZSAxOTIwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY3J0Yy0+ bW9kZS5jcnRjX3ZkaXNwbGF5ID09IDEwODApDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTkyMHgxMDgwXzYwOw0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCBlbHNlwqDCoMKgwqDCoMKgwqDCoMKgIC8vMTIwMA0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IEFTVERQXzE5 MjB4MTIwMF82MDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4g K8KgwqAgZGVmYXVsdDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOw0KPiAN Cj4+ICvCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgLyoNCj4gDQo+PiArwqDCoCAqIENS RTBbNzowXTogTUlTQzAgKCgweDAwOiAxOC1icHApIG9yICgweDIwOiAyNC1icHApDQo+IA0KPj4g K8KgwqAgKiBDUkUxWzc6MF06IE1JU0MxIChkZWZhdWx0OiAweDAwKQ0KPiANCj4+ICvCoMKgICog Q1JFMls3OjBdOiB2aWRlbyBmb3JtYXQgaW5kZXggKDB4MDAgfiAweDIwIG9yIDB4NDAgfiAweDUw KQ0KPiANCj4+ICvCoMKgICovDQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhh c3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTAsICh1OCkgDQo+PiArfkFTVERQX0NMRUFSX01BU0ss DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQVNURFBfTUlTQzBfMjRicHApOw0KPiANCj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVn X21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUxLCAodTgpIA0KPj4gK35BU1REUF9DTEVB Ul9NQVNLLCBBU1REUF9NSVNDMSk7DQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTIsICh1OCkNCj4gDQo+PiArfkFTVERQX0NMRUFS X01BU0ssIE1vZGVJZHgpOyB9DQo+IA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9h c3QvYXN0X2Rydi5oDQo+IA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcnYuaCBpbmRl eCBhMTkzMTViMmYuLmZmMWFlMzE0YiAxMDA2NDQNCj4gDQo+PiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9kcnYuaA0KPiANCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Ry di5oDQo+IA0KPj4gQEAgLTcwLDYgKzcwLDcgQEAgZW51bSBhc3RfdHhfY2hpcCB7DQo+IA0KPj7C oMKgIMKgwqDCoMKgwqDCoMKgIEFTVF9UWF9OT05FLA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDC oCBBU1RfVFhfU0lMMTY0LA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBBU1RfVFhfRFA1MDEs DQo+IA0KPj4gK8KgwqAgQVNUX1RYX0FTVERQLA0KPiANCj4+wqDCoCB9Ow0KPiANCj4+IA0KPiAN Cj4+wqDCoCAjZGVmaW5lIEFTVF9EUkFNXzUxMk14MTYgMA0KPiANCj4+IEBAIC0xODQsNiArMTg1 LDEwIEBAIHN0cnVjdCBhc3RfcHJpdmF0ZSB7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7 DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfSBkcDUwMTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHN0cnVjdCBkcm1fZW5jb2RlciBlbmNvZGVyOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jb25uZWN0b3IgY29ubmVjdG9yOw0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9IGFzdGRwOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDC oCB9IG91dHB1dDsNCj4gDQo+PiANCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgYm9vbCBzdXBw b3J0X3dpZGVfc2NyZWVuOw0KPiANCj4+IEBAIC0zNTcsMTAgKzM2MiwxMTMgQEAgaW50IGFzdF9t b2RlX2NvbmZpZ19pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSANCj4+ICphc3QpOw0KPiANCj4+wqDC oCAjZGVmaW5lIEFTVF9EUDUwMV9FRElEX0RBVEHCoMKgwqAgMHhmMDIwDQo+IA0KPj4gDQo+IA0K Pj7CoMKgIC8qIERlZmluZSBmb3IgU29jIHNjcmF0Y2hlZCByZWcgKi8NCj4gDQo+PiArI2RlZmlu ZSBDT1BST0NFU1NPUl9MQVVOQ0jCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCg1KQ0KPiANCj4+ICsNCj4gDQo+PiArLyoNCj4gDQo+PiArICogRGlzcGxheSBUcmFu c21pdHRlciBUeXBlOg0KPiANCj4+ICsgKi8NCj4gDQo+PiArI2RlZmluZSBUWF9UWVBFX01BU0vC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VO TUFTSygzLCAxKQ0KPiANCj4+ICsjZGVmaW5lIE5PX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgICgwIDw8IDEpDQo+IA0KPj4gKyNkZWZpbmUgSVRFNjYxMjFfVkJJT1NfVFjCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICgxIDw8IDEpDQo+IA0KPj4gKyNkZWZpbmUg U0kxNjRfVkJJT1NfVFjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICgyIDw8IDEpDQo+IA0KPj4gKyNkZWZpbmUgQ0g3MDAzX1ZCSU9TX1RYwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDMgPDwgMSkNCj4gDQo+PiAr I2RlZmluZSBEUDUwMV9WQklPU19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoNCA8PCAxKQ0KPiANCj4+ICsjZGVmaW5lIEFOWDk4MDdfVkJJT1NfVFjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICg1IDw8IDEpDQo+IA0KPj4g KyNkZWZpbmUgVFhfRldfRU1CRURERURfRldfVFjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgKDYgPDwgMSkNCj4gDQo+PiArI2RlZmluZSBBU1REUF9EUE1DVV9UWMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoNyA8PCAxKQ0K PiANCj4+ICsNCj4gDQo+PsKgwqAgI2RlZmluZSBBU1RfVlJBTV9JTklUX1NUQVRVU19NQVNLwqDC oMKgwqDCoMKgIEdFTk1BU0soNywgNikNCj4gDQo+PsKgwqAgLy8jZGVmaW5lIEFTVF9WUkFNX0lO SVRfQllfQk1DwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg3KQ0KPiANCj4+wqDCoCAvLyNk ZWZpbmUgQVNUX1ZSQU1fSU5JVF9SRUFEWcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBC SVQoNikNCj4gDQo+PiANCj4gDQo+PiArLyogRGVmaW5lIGZvciBTb2Mgc2NyYXRjaGVkIHJlZyB1 c2VkIG9uIEFTVERQICovDQo+IA0KPj4gKyNkZWZpbmUgQVNUX0RQX1BIWV9TTEVFUMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDQpDQo+IA0KPj4gKyNkZWZpbmUg QVNUX0RQX1ZJREVPX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPiAN Cj4+ICsNCj4gDQo+PiArI2RlZmluZSBBU1RfRFBfUE9XRVJfT07CoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlDQo+IA0KPj4gKyNkZWZpbmUgQVNUX0RQX1BPV0VSX09G RsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZQ0KPiANCj4+ICsNCj4g DQo+PiArLyoNCj4gDQo+PiArICogQ1JEMVtiNV06IERQIE1DVSBGVyBpcyBleGVjdXRpbmcNCj4g DQo+PiArICogQ1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPiANCj4+ICsgKiBDUkRGW2IwXTog RFAgSFBEDQo+IA0KPj4gKyAqIENSRTVbYjBdOiBIb3N0IHJlYWRpbmcgRURJRCBwcm9jZXNzIGlz IGRvbmXCoCAqLw0KPiANCj4+ICsjZGVmaW5lIEFTVERQX01DVV9GV19FWEVDVVRJTkfCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg1KQ0KPiANCj4+ICsjZGVmaW5l IEFTVERQX0xJTktfU1VDQ0VTU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgwKQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQX0hQRMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQklUKDApDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfSE9TVF9FRElEX1JF QURfRE9ORcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMCkNCj4gDQo+PiArI2Rl ZmluZSBBU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0vCoMKgwqAgR0VOTUFTSygwLCAwKQ0K PiANCj4+ICsNCj4gDQo+PiArLyoNCj4gDQo+PiArICogQ1JCOFtiMV06IEVuYWJsZSBWU1lOQyBv ZmYNCj4gDQo+PiArICogQ1JCOFtiMF06IEVuYWJsZSBIU1lOQyBvZmYNCj4gDQo+PiArICovDQo+ IA0KPj4gKyNkZWZpbmUgQVNUX0RQTVNfVlNZTkNfT0ZGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPiANCj4+ICsjZGVm aW5lIEFTVF9EUE1TX0hTWU5DX09GRsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMCkNCj4gDQo+PiArDQo+IA0KPj4gKy8qDQo+ IA0KPj4gKyAqIENSREZbYjRdOiBNaXJyb3Igb2YgQVNUX0RQX1ZJREVPX0VOQUJMRQ0KPiANCj4+ ICsgKiBQcmVjb25kaXRpb246wqAgQS4gfkFTVF9EUF9QSFlfU0xFRVDCoCAmJg0KPiANCj4+ICsg KsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQi4gRFBfSFBE ICYmDQo+IA0KPj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBDLiBEUF9MSU5LX1NVQ0NFU1MNCj4gDQo+PiArICovDQo+IA0KPj4gKyNkZWZpbmUgQVNU RFBfTUlSUk9SX1ZJREVPX0VOQUJMRcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQo NCkNCj4gDQo+PiArDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfRURJRF9SRUFEX1BPSU5URVJfTUFT S8KgIEdFTk1BU0soNywgMCkNCj4gDQo+PiArI2RlZmluZSBBU1REUF9FRElEX1ZBTElEX0ZMQUdf TUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDAsIDApDQo+IA0KPj4g KyNkZWZpbmUgQVNURFBfRURJRF9SRUFEX0RBVEFfTUFTS8KgwqDCoMKgwqDCoMKgIEdFTk1BU0so NywgMCkNCj4gDQo+PiArDQo+IA0KPj4gKy8qDQo+IA0KPj4gKyAqIEFTVERQIHNldG1vZGUgcmVn aXN0ZXJzOg0KPiANCj4+ICsgKiBDUkUwWzc6MF06IE1JU0MwICgoMHgwMDogMTgtYnBwKSBvciAo MHgyMDogMjQtYnBwKQ0KPiANCj4+ICsgKiBDUkUxWzc6MF06IE1JU0MxIChkZWZhdWx0OiAweDAw KQ0KPiANCj4+ICsgKiBDUkUyWzc6MF06IHZpZGVvIGZvcm1hdCBpbmRleCAoMHgwMCB+IDB4MjAg b3IgMHg0MCB+IDB4NTApwqAgKi8NCj4gDQo+PiArI2RlZmluZSBBU1REUF9NSVNDMF8yNGJwcMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNSkNCj4gDQo+PiArI2RlZmlu ZSBBU1REUF9NSVNDMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAwDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfQ0xFQVJfTUFTS8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5NQVNLKDcsIDApDQo+IA0KPj4gKw0K PiANCj4+ICsvKg0KPiANCj4+ICsgKiBBU1REUCByZXNvdWx0aW9uIHRhYmxlOg0KPiANCj4+ICsg KiBFWDrCoCBBU1REUF9BX0JfQzoNCj4gDQo+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQTogUmVzb2x1dGlvbg0KPiANCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBCOiBSZWZyZXNoIFJhdGUNCj4gDQo+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgQzogTWlzYyBpbmZvcm1hdGlvbiwgc3VjaCBhcyBDVlQsIFJlZHVjZSBCbGFua2VkDQo+ IA0KPj4gKyAqLw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzY0MHg0ODBfNjDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAweDAwDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4MF83MsKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDENCj4gDQo+PiArI2RlZmluZSBBU1REUF82NDB4NDgw Xzc1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMg0KPiANCj4+ICsjZGVmaW5lIEFTVERQ XzY0MHg0ODBfODXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAzDQo+IA0KPj4gKyNkZWZp bmUgQVNURFBfODAweDYwMF81NsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDQNCj4gDQo+ PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw NQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzgwMHg2MDBfNzLCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDA2DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfODAweDYwMF83NcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MDcNCj4gDQo+PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzg1wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwOA0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzEwMjR4NzY4 XzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA5DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTAy NHg3NjhfNzDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MEENCj4gDQo+PiArI2RlZmluZSBBU1RE UF8xMDI0eDc2OF83NcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwQg0KPiANCj4+ICsjZGVmaW5l IEFTVERQXzEwMjR4NzY4Xzg1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBDDQo+IA0KPj4gKyNk ZWZpbmUgQVNURFBfMTI4MHgxMDI0XzYwwqDCoMKgwqDCoMKgwqDCoMKgIDB4MEQNCj4gDQo+PiAr I2RlZmluZSBBU1REUF8xMjgweDEwMjRfNzXCoMKgwqDCoMKgwqDCoMKgwqAgMHgwRQ0KPiANCj4+ ICsjZGVmaW5lIEFTVERQXzEyODB4MTAyNF84NcKgwqDCoMKgwqDCoMKgwqDCoCAweDBGDQo+IA0K Pj4gKyNkZWZpbmUgQVNURFBfMTYwMHgxMjAwXzYwwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTANCj4g DQo+PiArI2RlZmluZSBBU1REUF8zMjB4MjQwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxMQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzQwMHgzMDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAweDEyDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfNTEyeDM4NF82MMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MTMNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xOTIweDEyMDBfNjDC oMKgwqDCoMKgwqDCoMKgwqAgMHgxNA0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE5MjB4MTA4MF82 MMKgwqDCoMKgwqDCoMKgwqDCoCAweDE1DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTI4MHg4MDBf NjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTYNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xMjgw eDgwMF82MF9SQsKgwqDCoMKgIDB4MTcNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xNDQweDkwMF82 MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxOA0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE0NDB4 OTAwXzYwX1JCwqDCoMKgwqAgMHgxOQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE2ODB4MTA1MF82 MMKgwqDCoMKgwqDCoMKgwqDCoCAweDFBDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTY4MHgxMDUw XzYwX1JCwqDCoCAweDFCDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTYwMHg5MDBfNjDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MUMNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xNjAweDkwMF82MF9S QsKgwqDCoMKgIDB4MUQNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xMzY2eDc2OF82MMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgxRQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzExNTJ4ODY0Xzc1wqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDFGDQo+IA0KPj4gKw0KPiANCj4+wqDCoCBpbnQgYXN0X21t X2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpOw0KPiANCj4+IA0KPiANCj4+wqDCoCAvKiBh c3QgcG9zdCAqLw0KPiANCj4+IEBAIC0zODEsNCArNDg5LDExIEBAIHZvaWQgYXN0X2luaXRfM3Jk dHgoc3RydWN0IGRybV9kZXZpY2UgKmRldik7DQo+IA0KPj7CoMKgIC8qIGFzdF9pMmMuYyAqLw0K PiANCj4+IMKgwqBzdHJ1Y3QgYXN0X2kyY19jaGFuICphc3RfaTJjX2NyZWF0ZShzdHJ1Y3QgZHJt X2RldmljZSAqZGV2KTsNCj4gDQo+PiANCj4gDQo+PiArLyogYXNwZWVkIERQICovDQo+IA0KPj4g K2ludCBhc3RfYXN0ZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICplZGlk ZGF0YSk7IHZvaWQNCj4gDQo+PiArYXN0X2RwX2xhdW5jaChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LCB1OCBiUG93ZXIpOyB2b2lkDQo+IA0KPj4gK2FzdF9kcF9wb3dlcl9vbl9vZmYoc3RydWN0IGRy bV9kZXZpY2UgKmRldiwgYm9vbCBubyk7IHZvaWQNCj4gDQo+PiArYXN0X2RwX3NldF9vbl9vZmYo c3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBubyk7IHZvaWQNCj4gDQo+PiArYXN0X2RwX3Nl dF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0IGFzdF92Ymlvc19tb2RlX2luZm8N Cj4gDQo+PiArKnZiaW9zX21vZGUpOw0KPiANCj4+ICsNCj4gDQo+PsKgwqAgI2VuZGlmDQo+IA0K Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPiANCj4+IGIv ZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jIGluZGV4IDIyZTllMmQzYy4uMTExM2VlMWNi IDEwMDY0NA0KPiANCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPiAN Cj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X21haW4uYw0KPiANCj4+IEBAIC0yMzIs NyArMjMyLDcgQEAgc3RhdGljIGludCBhc3RfZGV0ZWN0X2NoaXAoc3RydWN0IGRybV9kZXZpY2Ug DQo+PiAqZGV2LCBib29sICpuZWVkX3Bvc3QpDQo+IA0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhf U0lMMTY0Ow0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCB9DQo+IA0KPj4gDQo+IA0KPj4gLcKg wqDCoCBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09IEFTVDI0MDAp KSB7DQo+IA0KPj4gK8KgwqAgaWYgKChhc3QtPmNoaXAgPT0gQVNUMjMwMCkgfHwgKGFzdC0+Y2hp cCA9PSBBU1QyNDAwKSB8fCANCj4+ICsoYXN0LT5jaGlwDQo+IA0KPj4gKz09IEFTVDI1MDApKSB7 DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPiANCj4+wqDC oCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqAqIE9uIEFTVDIzMDAgYW5kIDI0MDAs IGxvb2sgdGhlIGNvbmZpZ3VyYXRpb24gc2V0IA0KPj5ieSB0aGUgU29DIGluDQo+IA0KPj7CoMKg IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCogdGhlIFNPQyBzY3JhdGNoIHJlZ2lz dGVyICMxIGJpdHMgMTE6OCANCj4+KGludGVyZXN0aW5nbHkgbWFya2VkIEBADQo+IA0KPj4gLTI1 Niw3ICsyNTYsOCBAQCBzdGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCANCj4+IGJvb2wgKm5lZWRfcG9zdCkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNhc2UgMHgwYzoNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3QtPnR4X2NoaXBfdHlwZSA9IEFTVF9UWF9E UDUwMTsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+ PiAtwqDCoMKgIH0NCj4gDQo+PiArwqDCoCB9IGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNjAw KQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfbGF1bmNoKCZhc3QtPmJhc2Us IDApOw0KPiANCj4+IA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCAvKiBQcmludCBzdHVmZiBm b3IgZGlhZ25vc3RpYyBwdXJwb3NlcyAqLw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBzd2l0 Y2goYXN0LT50eF9jaGlwX3R5cGUpIHsNCj4gDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfbW9kZS5jDQo+IA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2Rl LmMgaW5kZXggNDViNTZiMzlhLi40NzI4ODI1YjcgMTAwNjQ0DQo+IA0KPj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jDQo+IA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfbW9kZS5jDQo+IA0KPj4gQEAgLTk4OCwyMSArOTg4LDQxIEBAIHN0YXRpYyBpbnQgYXN0 X2N1cnNvcl9wbGFuZV9pbml0KHN0cnVjdCANCj4+IGFzdF9wcml2YXRlICphc3QpDQo+IA0KPj7C oMKgIHN0YXRpYyB2b2lkIGFzdF9jcnRjX2RwbXMoc3RydWN0IGRybV9jcnRjICpjcnRjLCBpbnQg bW9kZSkNCj4gDQo+PsKgwqAgew0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgYXN0 X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGNydGMtPmRldik7DQo+IA0KPj4gK8KgwqAg dTggY2ggPSBBU1RfRFBNU19WU1lOQ19PRkYgfCBBU1RfRFBNU19IU1lOQ19PRkY7DQo+IA0KPj4g DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIC8qIFRPRE86IE1heWJlIGNvbnRyb2wgZGlzcGxh eSBzaWduYWwgZ2VuZXJhdGlvbiB3aXRoDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgKsKg wqDCoMKgwqDCoCBTeW5jIEVuYWJsZSAoYml0IENSMTcuNykuDQo+IA0KPj7CoMKgIMKgwqDCoMKg wqDCoMKgIMKgKi8NCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgc3dpdGNoIChtb2RlKSB7DQo+ IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX01PREVfRFBNU19PTjoNCj4gDQo+PiAt wqDCoMKgIGNhc2UgRFJNX01PREVfRFBNU19TVEFOREJZOg0KPiANCj4+IC3CoMKgwqAgY2FzZSBE Uk1fTU9ERV9EUE1TX1NVU1BFTkQ6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9z ZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fU0VRX1BPUlQswqAgMHgwMSwgMHhkZiwgDQo+ PiArMCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21h c2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweGI2LCAweGZjLCANCj4+ICswKTsNCj4gDQo+PsKg wqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9 PSBBU1RfVFhfRFA1MDEpDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoY3J0Yy0+ZGV2LCAx KTsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2No aXBfdHlwZSA9PSBBU1RfVFhfQVNURFApIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9wb3dlcl9vbl9vZmYoY3J0Yy0+ZGV2LCBBU1RfRFBfUE9X RVJfT04pOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0 X3dhaXRfZm9yX3ZyZXRyYWNlKGFzdCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBhc3RfZHBfc2V0X29uX29mZihjcnRjLT5kZXYsIDEpOw0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBhc3RfY3J0Y19sb2FkX2x1dChhc3QsIGNydGMpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSBEUk1fTU9ERV9E UE1TX1NUQU5EQlk6DQo+IA0KPj4gK8KgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX1NVU1BFTkQ6DQo+ IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX01PREVfRFBNU19PRkY6DQo+IA0KPj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgIGNoID0gbW9kZTsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhfRFA1MDEp DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0X3NldF9kcDUwMV92aWRlb19vdXRwdXQoY3J0Yy0+ZGV2LCAwKTsNCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqAgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gKw0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoYXN0LT50eF9jaGlwX3R5cGUgPT0gQVNUX1RYX0FTVERQ KSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBf c2V0X29uX29mZihjcnRjLT5kZXYsIDApOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgYXN0X2RwX3Bvd2VyX29uX29mZihjcnRjLT5kZXYsIEFTVF9EUF9QT1dF Ul9PRkYpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+IA0KPj4gKw0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X1NFUV9QT1JULMKgIDB4MDEsIDB4ZGYsIA0KPj4gKzB4MjApOw0KPiANCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwg MHhiNiwgMHhmYywgDQo+PiArY2gpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCB9DQo+IA0K Pj7CoMKgIH0NCj4gDQo+PiANCj4gDQo+PiBAQCAtMTAyNyw3ICsxMDQ3LDcgQEAgYXN0X2NydGNf aGVscGVyX21vZGVfdmFsaWQoc3RydWN0IGRybV9jcnRjDQo+IA0KPj4gKmNydGMsIGNvbnN0IHN0 cnVjdCBkcm1fZGlzcGxheV9tb2RlDQo+IA0KPj4gDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMTAwKSB8fCAoYXN0LT5jaGlw ID09IA0KPj5BU1QyMjAwKSB8fA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgwqDCoMKgwqAoYXN0LT5jaGlwID09IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gDQo+ PkFTVDI0MDApIHx8DQo+IA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIChhc3Qt PmNoaXAgPT0gQVNUMjUwMCkpIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKg IChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSkgew0KPiAN Cj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlm ICgobW9kZS0+aGRpc3BsYXkgPT0gMTkyMCkgJiYgDQo+Pihtb2RlLT52ZGlzcGxheSA9PSAxMDgw KSkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE1PREVfT0s7DQo+IA0KPj4gDQo+IA0KPj4gQEAg LTExMTAsNiArMTEzMCw3IEBAIGFzdF9jcnRjX2hlbHBlcl9hdG9taWNfZmx1c2goc3RydWN0IGRy bV9jcnRjIA0KPj4gKmNydGMsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBhc3Rf cHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqAgc3RydWN0IGFzdF9jcnRjX3N0YXRlICphc3RfY3J0Y19zdGF0ZSA9IA0KPj50 b19hc3RfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKTsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGFzdF9jcnRjX3N0YXRlICpvbGRfYXN0X2NydGNfc3RhdGUgPQ0KPiANCj4+IHRvX2Fz dF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgYXN0X3Zi aW9zX21vZGVfaW5mbyAqdmJpb3NfbW9kZV9pbmZvID0NCj4gDQo+PiArJmFzdF9jcnRjX3N0YXRl LT52Ymlvc19tb2RlX2luZm87DQo+IA0KPj4gDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIC8q DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgKiBUaGUgZ2FtbWEgTFVUIGhhcyB0byBiZSBy ZWxvYWRlZCBhZnRlciBjaGFuZ2luZyB0aGUgDQo+PnByaW1hcnkgQEANCj4gDQo+PiAtMTExNyw2 ICsxMTM4LDEwIEBAIGFzdF9jcnRjX2hlbHBlcl9hdG9taWNfZmx1c2goc3RydWN0IGRybV9jcnRj IA0KPj4gKmNydGMsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgKi8NCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqAgaWYgKG9sZF9hc3RfY3J0Y19zdGF0ZS0+Zm9ybWF0ICE9IGFzdF9jcnRj X3N0YXRlLT5mb3JtYXQpDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhc3RfY3J0Y19sb2FkX2x1dChhc3QsIGNydGMpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAv L1NldCBBc3BlZWQgRGlzcGxheS1Qb3J0DQo+IA0KPj4gK8KgwqAgaWYgKGFzdC0+dHhfY2hpcF90 eXBlID09IEFTVF9UWF9BU1REUCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2Rw X3NldF9tb2RlKGNydGMsIHZiaW9zX21vZGVfaW5mbyk7DQo+IA0KPj7CoMKgIH0NCj4gDQo+PiAN Cj4gDQo+PsKgwqAgc3RhdGljIHZvaWQNCj4gDQo+PiBAQCAtMTUyNyw2ICsxNTUyLDkzIEBAIHN0 YXRpYyBpbnQgYXN0X2RwNTAxX291dHB1dF9pbml0KHN0cnVjdCANCj4+IGFzdF9wcml2YXRlICph c3QpDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiANCj4+wqDCoCB9DQo+ IA0KPj4gDQo+IA0KPj4gKy8qDQo+IA0KPj4gKyAqIEFTUEVFRCBEaXNwbGF5LVBvcnQgQ29ubmVj dG9yDQo+IA0KPj4gKyAqLw0KPiANCj4+ICsNCj4gDQo+PiArc3RhdGljIGludCBhc3RfYXN0ZHBf Y29ubmVjdG9yX2hlbHBlcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3INCj4gDQo+PiAr KmNvbm5lY3Rvcikgew0KPiANCj4+ICvCoMKgIHZvaWQgKmVkaWQ7DQo+IA0KPj4gKw0KPiANCj4+ ICvCoMKgIGludCBzdWNjOw0KPiANCj4+ICvCoMKgIGludCBjb3VudDsNCj4gDQo+PiArDQo+IA0K Pj4gK8KgwqAgZWRpZCA9IGttYWxsb2MoRURJRF9MRU5HVEgsIEdGUF9LRVJORUwpOw0KPiANCj4+ ICvCoMKgIGlmICghZWRpZCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBlcnJf ZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eTsNCj4gDQo+PiArDQo+IA0KPj4gK8Kg wqAgc3VjYyA9IGFzdF9hc3RkcF9yZWFkX2VkaWQoY29ubmVjdG9yLT5kZXYsIGVkaWQpOw0KPiAN Cj4+ICvCoMKgIGlmIChzdWNjIDwgMCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290 byBlcnJfa2ZyZWU7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIGRybV9jb25uZWN0b3JfdXBkYXRl X2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsNCj4gDQo+PiArwqDCoCBjb3VudCA9IGRy bV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOw0KPiANCj4+ICvCoMKgIGtmcmVlKGVk aWQpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXR1cm4gY291bnQ7DQo+IA0KPj4gKw0KPiAN Cj4+ICtlcnJfa2ZyZWU6DQo+IA0KPj4gK8KgwqAga2ZyZWUoZWRpZCk7DQo+IA0KPj4gK2Vycl9k cm1fY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5Og0KPiANCj4+ICvCoMKgIGRybV9jb25u ZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBOVUxMKTsNCj4gDQo+PiArwqDC oCByZXR1cm4gMDsNCj4gDQo+PiArfQ0KPiANCj4+ICsNCj4gDQo+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyANCj4+ICthc3RfYXN0ZHBfY29ubmVjdG9y X2hlbHBlcl9mdW5jcyA9IHsNCj4gDQo+PiArwqDCoCAuZ2V0X21vZGVzID0gYXN0X2FzdGRwX2Nv bm5lY3Rvcl9oZWxwZXJfZ2V0X21vZGVzLA0KPiANCj4+ICt9Ow0KPiANCj4+ICsNCj4gDQo+PiAr c3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFzdF9hc3RkcF9jb25uZWN0 b3JfZnVuY3MgPSANCj4+ICt7DQo+IA0KPj4gK8KgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19oZWxw ZXJfY29ubmVjdG9yX3Jlc2V0LA0KPiANCj4+ICvCoMKgIC5maWxsX21vZGVzID0gZHJtX2hlbHBl cl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPiANCj4+ICvCoMKgIC5kZXN0cm95ID0g ZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLA0KPiANCj4+ICvCoMKgIC5hdG9taWNfZHVwbGljYXRlX3N0 YXRlID0gDQo+PiArZHJtX2F0b21pY19oZWxwZXJfY29ubmVjdG9yX2R1cGxpY2F0ZV9zdGF0ZSwN Cj4gDQo+PiArwqDCoCAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSANCj4+ICtkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4gDQo+PiArfTsNCj4gDQo+PiArDQo+IA0K Pj4gK3N0YXRpYyBpbnQgYXN0X2FzdGRwX2Nvbm5lY3Rvcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHN0cnVjdA0KPiANCj4+ICtkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpIHsNCj4gDQo+ PiArwqDCoCBpbnQgcmV0Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXQgPSBkcm1fY29ubmVj dG9yX2luaXQoZGV2LCBjb25uZWN0b3IsIA0KPj4gKyZhc3RfYXN0ZHBfY29ubmVjdG9yX2Z1bmNz LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIERSTV9NT0RFX0NPTk5FQ1RPUl9EaXNwbGF5UG9ydCk7DQo+IA0KPj4gK8KgwqAgaWYg KHJldCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gDQo+PiAr DQo+IA0KPj4gK8KgwqAgZHJtX2Nvbm5lY3Rvcl9oZWxwZXJfYWRkKGNvbm5lY3RvciwNCj4gDQo+ PiArJmFzdF9hc3RkcF9jb25uZWN0b3JfaGVscGVyX2Z1bmNzKTsNCj4gDQo+PiArDQo+IA0KPj4g K8KgwqAgY29ubmVjdG9yLT5pbnRlcmxhY2VfYWxsb3dlZCA9IDA7DQo+IA0KPj4gK8KgwqAgY29u bmVjdG9yLT5kb3VibGVzY2FuX2FsbG93ZWQgPSAwOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCBj b25uZWN0b3ItPnBvbGxlZCA9IERSTV9DT05ORUNUT1JfUE9MTF9DT05ORUNUOw0KPiANCj4+ICsN Cj4gDQo+PiArwqDCoCByZXR1cm4gMDsNCj4gDQo+PiArfQ0KPiANCj4+ICsNCj4gDQo+PiArc3Rh dGljIGludCBhc3RfYXN0ZHBfb3V0cHV0X2luaXQoc3RydWN0IGFzdF9wcml2YXRlICphc3QpIHsN Cj4gDQo+PiArwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gJmFzdC0+YmFzZTsNCj4gDQo+ PiArwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMgPSAmYXN0LT5jcnRjOw0KPiANCj4+ICvCoMKg IHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciA9ICZhc3QtPm91dHB1dC5hc3RkcC5lbmNvZGVy Ow0KPiANCj4+ICvCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmYXN0LT5v dXRwdXQuYXN0ZHAuY29ubmVjdG9yOw0KPiANCj4+ICvCoMKgIGludCByZXQ7DQo+IA0KPj4gKw0K PiANCj4+ICvCoMKgIHJldCA9IGRybV9zaW1wbGVfZW5jb2Rlcl9pbml0KGRldiwgZW5jb2Rlciwg DQo+PiArRFJNX01PREVfRU5DT0RFUl9UTURTKTsNCj4gDQo+PiArwqDCoCBpZiAocmV0KQ0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPiANCj4+ICvCoMKgIGVuY29k ZXItPnBvc3NpYmxlX2NydGNzID0gZHJtX2NydGNfbWFzayhjcnRjKTsNCj4gDQo+PiArDQo+IA0K Pj4gK8KgwqAgcmV0ID0gYXN0X2FzdGRwX2Nvbm5lY3Rvcl9pbml0KGRldiwgY29ubmVjdG9yKTsN Cj4gDQo+PiArwqDCoCBpZiAocmV0KQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXQgPSBkcm1fY29ubmVjdG9yX2F0dGFj aF9lbmNvZGVyKGNvbm5lY3RvciwgZW5jb2Rlcik7DQo+IA0KPj4gK8KgwqAgaWYgKHJldCkNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gDQo+PiArDQo+IA0KPj4g K8KgwqAgcmV0dXJuIDA7DQo+IA0KPj4gK30NCj4gDQo+PiArDQo+IA0KPj7CoMKgIC8qDQo+IA0K Pj7CoMKgwqAgKiBNb2RlIGNvbmZpZw0KPiANCj4+wqDCoMKgICovDQo+IA0KPj4gQEAgLTE1NjMs NyArMTY3NSw4IEBAIGludCBhc3RfbW9kZV9jb25maWdfaW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUg DQo+PiAqYXN0KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoGFzdC0+Y2hpcCA9 PSBBU1QyMjAwIHx8DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgwqDCoMKgYXN0LT5jaGlw ID09IEFTVDIzMDAgfHwNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgwqDCoMKgwqBhc3QtPmNo aXAgPT0gQVNUMjQwMCB8fA0KPiANCj4+IC3CoMKgwqAgwqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1Qy NTAwKSB7DQo+IA0KPj4gK8KgwqAgwqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1QyNTAwIHx8DQo+IA0K Pj4gK8KgwqAgwqDCoMKgIGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSB7DQo+IA0KPj7CoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPm1vZGVfY29uZmlnLm1heF93aWR0aCA9IDE5 MjA7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXYtPm1vZGVf Y29uZmlnLm1heF9oZWlnaHQgPSAyMDQ4Ow0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCB9IGVs c2Ugew0KPiANCj4+IEBAIC0xNTk0LDYgKzE3MDcsOSBAQCBpbnQgYXN0X21vZGVfY29uZmlnX2lu aXQoc3RydWN0IGFzdF9wcml2YXRlIA0KPj4gKmFzdCkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKg wqAgY2FzZSBBU1RfVFhfRFA1MDE6DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCByZXQgPSBhc3RfZHA1MDFfb3V0cHV0X2luaXQoYXN0KTsNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2UgQVNU X1RYX0FTVERQOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBhc3RfYXN0ZHBf b3V0cHV0X2luaXQoYXN0KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+ IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgaWYg KHJldCkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7DQo+IA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0K PiANCj4+IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jIGluZGV4IGI1ZDkyZjY1Mi4u MGFhOWNmMGZiIDEwMDY0NA0KPiANCj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bv c3QuYw0KPiANCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYw0KPiANCj4+ IEBAIC0zNzksNyArMzc5LDkgQEAgdm9pZCBhc3RfcG9zdF9ncHUoc3RydWN0IGRybV9kZXZpY2Ug KmRldikNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgYXN0X2VuYWJsZV9tbWlvKGRldik7DQo+ IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfZGVmX2V4dF9yZWcoZGV2KTsNCj4gDQo+ PiANCj4gDQo+PiAtwqDCoMKgIGlmIChhc3QtPmNvbmZpZ19tb2RlID09IGFzdF91c2VfcDJhKSB7 DQo+IA0KPj4gK8KgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSB7DQo+IA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9sYXVuY2goZGV2LCAxKTsNCj4gDQo+PiArwqDCoCB9IGVs c2UgaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsNCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkNCj4g DQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBh c3RfcG9zdF9jaGlwXzI1MDAoZGV2KTsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGVsc2UgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwIHx8IGFzdC0+Y2hpcCA9PSAN Cj4+QVNUMjQwMCkNCj4gDQo+PiANCj4gDQo+PiBiYXNlLWNvbW1pdDogYzU0YjM5YTU2NTIyNzUz OGM1MmVhZDIzNDllYjE3ZDU0YWFkZDZmNw0KPiANCj4+IC0tDQo+IA0KPj4gMi4yNy4wDQo+IA0K Pj4gDQo+IA0KPiAtLQ0KPiANCj4gVGhvbWFzIFppbW1lcm1hbm4NCj4gDQo+IEdyYXBoaWNzIERy aXZlciBEZXZlbG9wZXINCj4gDQo+IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21i SA0KPiANCj4gTWF4ZmVsZHN0ci4gNSwgOTA0MDkgTsO8cm5iZXJnLCBHZXJtYW55DQo+IA0KPiAo SFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQo+IA0KPiBHZXNjaMOkZnRzZsO8aHJlcjogSXZvIFRv dGV2DQo+IA0KDQotLQ0KVGhvbWFzIFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBEZXZlbG9w ZXINClNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSA0KTWF4ZmVsZHN0ci4gNSwg OTA0MDkgTsO8cm5iZXJnLCBHZXJtYW55DQooSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQpHZXNj aMOkZnRzZsO8aHJlcjogSXZvIFRvdGV2DQo=