Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp2385373iob; Fri, 6 May 2022 01:15:45 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEAvORRfNAkN/ks3nQxtzYkrP5WriC7s2JoLydumm016QndFwphBb0KjIIkwlrlw/TvjYw X-Received: by 2002:a17:902:d48a:b0:15e:a142:a9e8 with SMTP id c10-20020a170902d48a00b0015ea142a9e8mr2506087plg.129.1651824945128; Fri, 06 May 2022 01:15:45 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1651824945; cv=pass; d=google.com; s=arc-20160816; b=x9vteZyLLTzPbxnAzxvYXVsXM7nXTi083F2s9Rl2kFbbIkA36GX9w3Bx7JBz9125t+ +BChTjahk1NT9039V8ayI0x8TiorW19s5qpLLDtcsUrsJRGQIRPmKyExgRuEPSncp4Cq f83hghIrfK7+Hwr31gpFMF35f1yE5FHrPrDBhSEEbYLsf8ePXlEH+KOZuqTgMGAJVdCL xjqhp/Qw1fauhF1EFi2mjjeXK4Zpzwwm7C4twmtInRxrPsIOkUsuvjz1I6jSPbSWIOYU uYVFZEvccgdA0sAYbMHWJW1jkojM0Ibch31uZpiWsqhyV8TAyiAa9wu9LJTrSlCePXfQ KP2A== 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=K15hARMJULrjeo9Q3sNFFVXwwK0PL8sY1f2Y+m51jFo=; b=P5+tMaTaeIgF+rMtfT6SNn/W7S2fFI9IeVhUNzT9NejbVtWDcD6KcAdhrnfsgMpJ1I PbACZwlRPD1gXBsPzeizwU/n5rU/kRBL5nOlPhxwsb/yVeC7YNgH2KIllSbURLRN3g0T 1xsXBCTz1d6EgBmAarV116I/Oz39heY6zsoBxsk8iH7oG4fU9r7pBbDVnaXgTNUFAqIl 9Hx3TAedakWhi1mbDQeOsqkYZHiBH9fjJal6Hi+BliPIvnst3pBrzQ1y1UpayPqMJdqt C304plgLmY9AHhJdTSf0iCApVcSUvq4oX6HicBUXv9xNid6baDaKdgghzjoji9KAWGiv 3Ucw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=GcrIOFKY; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id s24-20020a639258000000b003c5eccad2d4si4095183pgn.578.2022.05.06.01.15.27; Fri, 06 May 2022 01:15:43 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@aspeedtech.com header.s=selector1 header.b=GcrIOFKY; arc=pass (i=1 spf=pass spfdomain=aspeedtech.com dkim=pass dkdomain=aspeedtech.com dmarc=pass fromdomain=aspeedtech.com); spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S237139AbiEECzX (ORCPT + 99 others); Wed, 4 May 2022 22:55:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59508 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229892AbiEECzW (ORCPT ); Wed, 4 May 2022 22:55:22 -0400 Received: from APC01-SG2-obe.outbound.protection.outlook.com (mail-sgaapc01on2116.outbound.protection.outlook.com [40.107.215.116]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 043884DF41 for ; Wed, 4 May 2022 19:51:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E4W0/3fW+FLNqHqEAPer8SDiQdVC5/4zwfMnG+jUXexw1obPBUZlM4bdJCDfhHZs/8ad8angxlh3ssxEeksxeQeGscsh682JJdA3JrjdaGTc2nj8rjlQmrfy1cEojCM5kh41VZLvOCbs6TQJoDlGQV9yG2L0yJrsIWOmNAUDHAbub0i+JHsbkUZFmHEIxrxGQ0TJHXsMJ+bmlRF1odOVHHQob1wZEJblqvgLbXxtzFk6RsJRfyZFmCudxKDTg2OU+6a+BtFEBEJaVHrslNnfds6eWQY343whl4MXTBCiKMoWItcHaJOAFO235WkP0kVCY7PJvGWcmwaXryWNvvx4uw== 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=K15hARMJULrjeo9Q3sNFFVXwwK0PL8sY1f2Y+m51jFo=; b=HVjn51Zb0v8mB93+ZlnxjXqiBUEVJlWKe2cy0jGeAXPWc1ykJLUTvSUgRpBSnr9cmdQpjJtmrKjJjHyhigTzc9jrjOHyomD1R5ZK36fw7bjL8uHm0725spBWaBxSQ3Z03bfLtBCpFNi4fGCGRdVlb0AVPC3pA1ka8OtzKKlyRhkXIKXdpNllYpW+ZDwcjtWvWuV4+h9hT/pSkOEnvy8D9e2I7f0wAbIer//s71to6TOTTlyXnxwrO3/vAdTqW/CN7eeptti1cAYxcdl+cIul84h0RDKrhhABN4HJefcrkOwtqoTNeOCgYOorpfBd4mUZgpIsyZxZSS69dbdS8inEYQ== 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=K15hARMJULrjeo9Q3sNFFVXwwK0PL8sY1f2Y+m51jFo=; b=GcrIOFKYIIubKMQgXEQvL2A98MQLIU5VWfwZTUMgs89mSgfwonzIogJji9SWIZUocAANGBzS2TWfzHyiwWNwmiDYIOaYJemT/JE7E6+I/KbE94DgPjQXDtS7XFJTl6kmXeQvE/HehpTJ6spPIccwrwcEF3OswZTfaii06GccFC2ULmcUMCw/M0pbPD9idI1HdcZYNoPwNSxnl2vOczeH2TTyL4oneq9fhg7/4tv5d1gK8LYhrhbtk6g2UDuTmW7eyFX8pBRdBZjF/UjmsH3VAq8zHFPuVc8cUsHtwNTxt+7/QXePn6tc7MnFcZixDhsoWmtOYti4dKbWgy19o90pUA== Received: from TYAPR06MB2256.apcprd06.prod.outlook.com (2603:1096:404:17::13) by HK0PR06MB2740.apcprd06.prod.outlook.com (2603:1096:203:56::17) 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:51:35 +0000 Received: from TYAPR06MB2256.apcprd06.prod.outlook.com ([fe80::39ab:6b41:7d35:13f2]) by TYAPR06MB2256.apcprd06.prod.outlook.com ([fe80::39ab:6b41:7d35:13f2%3]) with mapi id 15.20.5206.025; Thu, 5 May 2022 02:51:35 +0000 From: Luke Chen To: Kuo-Hsiang Chou , 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 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: AQHYX4hzVqbKJ61wJUaYsolscB+CJ60OaKCAgAANdYCAAR4DgIAAApRg Date: Thu, 5 May 2022 02:51:35 +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: 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: 3f550eaf-74c6-4e1f-aebb-08da2e422b51 x-ms-traffictypediagnostic: HK0PR06MB2740: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: AaRkOWGlJwB2Vu4NAYDGdxtV5JprOIb6U0/TQcUWeSH8yVCKr+4NZIOoD2l0d9TY/YNkQpD/6YZjmbTupAiLCW+Y5zj9S6AlSTqu+wfWbS5qEX5azPOpzRtTo09h1uoGEvihefJPRr2wpXDjv+z1hyB3pcw1qyMWblQ1GhmIFbeV241zmMs6CToksRb4J8lklKT+i6Xy+1M0vh5YFZ6mPGhifTxbQkLvpULxJDZOTMz6mu4eE9j/2M8ItUNW4eiWyw7J9Qtn5RMzZ6ei9QP7nTuawR7VjjQ84PfzGcPoGnXZcuVl9RO4s8eHMgD5Hy+e5h8pv9+/PHxFGHsVl7kp6fQyVkXC8ncbJIAmKDmLykq4FU0mvHawTieJac+wSohAyF/4Hm87Ihyv+Rd7zZgt35Xq2JIwV3GX8YNoXc6JtmudvIhTEsMPJRQt1LVt9otxRoKkHspla6uyMo1zQ0+fIU2XD0VnNm9hELFMFDp7o//AoGp825/yBEQz02oISTfqTL5tEOgjfydYxO25yhgABmhJs6usZJody/OFNUYraQto2jVppo2znpTNdVovTgXfvfOkYe7g8E4BSjJRHL+V/+D9vp3rRZsDMoxuYL3sASruamKRX7wYlY7qk6EnN0NeP83fTYwBWNwuvoIeogswg62w04jndEd/RkP2WjEGF3VxEXn5Paobawrcb7sdwXPRm5aP8heXKV8kxa+3/AttVA== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR06MB2256.apcprd06.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(26005)(9686003)(122000001)(186003)(107886003)(33656002)(66446008)(66476007)(66556008)(5660300002)(2906002)(55016003)(4326008)(110136005)(54906003)(8676002)(76116006)(66946007)(64756008)(30864003)(8936002)(316002)(52536014)(38070700005)(83380400001)(6506007)(508600001)(38100700002)(53546011)(86362001)(71200400001)(7696005)(66574015)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?SzZUdnd3eXc2Sm1ZRk0wWlZ3YWRyd2R0dHBGb3E5dGNtTFVMelhUK2xBOGtj?= =?utf-8?B?MHEvKzZmbEdxc0NFSGplV0RrUEhZS1lzRit0dlMxWjFoRjJMckN3Y2Vhd296?= =?utf-8?B?QzFUMmJFalRoVHJWNE0rRXpqa00wU3dPRkhqODF1WWlzeUxjSjVnQ05jWjNS?= =?utf-8?B?aktzUWZLMkY4aWtpSURHam5JdXBtU0lxRkQ0MEJtVGM5a3JaaHQ5NWFPVlNC?= =?utf-8?B?cVovRFE3c3EwMkdvVEZQZm1oakNDTDBHZ3JOQ0cvWTlWUjZQcjl6ZE82aDND?= =?utf-8?B?bkZKWFhsb0JYeVRPWHd5c1pFbG80SzYwdW1FajBFSG92SjE3OVc1WU9RTVd6?= =?utf-8?B?aldmdHd0UzQ5VXgvMVdoK2tTL0kwSjZwN1Y5Wi81VHl2OFdMZlJGMVpGMW1V?= =?utf-8?B?TlRONkhrUVFVMlhUTWIwT21ZS2lJbGZXTVQ0QU15bk9mcHVFWFN3Mk5HTlNL?= =?utf-8?B?WWJpQ0c0eHJua0RPaXBnbURIUjU1Z2RYbkJHd3lnZnhuVXN6dFRHa2lCSlJm?= =?utf-8?B?Z25sNVpkVm10ODJUOTE5dkNSZnJKYlZERkl6TWFyRmJDeThtR0dBSlBtV0Jt?= =?utf-8?B?bUZDcklCd1NIYkh6SDR0enoyMXpLQXJvNWQ3RWsrbi9xT3pxbGVCNDBuMjg0?= =?utf-8?B?VTN6UUdvSndySnRlZUNjT2JVUXFOU2pjTEFYTGs5VzU0WXNsTzRIMUZpWGYw?= =?utf-8?B?NElQT3pmRnI1djdPMFJsZEY0Vlk4dlJkU1FUMkNLdjFVTkIyaFdZWnhlcnBk?= =?utf-8?B?M0l6N0hoU1gyVXYvQlhTYklLZHpXazNtNWVmVmRSTFM1SjNENy9yL0lJZDAv?= =?utf-8?B?ekNXUU16RnhvSndBMENhSjBmckZPUzdwMDlSWlBvbXF3YTBoSnJJOGUvc253?= =?utf-8?B?ZHZPdUxzMHJjY0IzMitJNWJNYzhpVk40WmRua1JYa2lLVEtsL3NFSy9vWnhL?= =?utf-8?B?WnBLQ21sYkZPei9EdXZXM0U0ZFNuV0R5YVpBRytEcFhwbEF0NXB3RmNwQmRI?= =?utf-8?B?emJ3dTAyekJiWERqcG4vYTNEZmRLQ3dJWWIvazF5N1ZyVjJDY1lvT25tb2FK?= =?utf-8?B?cWZFNEtWZHpUY1RRVm1vVUozMmZMZ1U4N2tXcU5yaFRhdGFUM2VHV1hlYU55?= =?utf-8?B?QXk2MTFwZmwvenBicTNRT3I5VTRRRTBoUHFOYTd3SXZudnR2UUhrVE5EZUZR?= =?utf-8?B?L2VxTGJOS1dITlZTK1I3UXRyTVpIaDR1WUJHanRuOTZtMGlpT05LOHpxOXpJ?= =?utf-8?B?T0lyUGliRWZMdzMzdVZEZ25OMFZ4V1Z1aHJ0U0lhNHVHUHUwUFBBbmcyZldq?= =?utf-8?B?Qnp4V09KNlFDWHhpaE9Fblkwai9LbUFyTndsd2NweThVTzRIS2RLdnNZM2I4?= =?utf-8?B?Yks2d2lnS2lqL1NOWUFsWmRCM2txTmRMZzlCVnhEZ1dyUTBNYXpCQytVNFRo?= =?utf-8?B?dXZWcjBla0hzZ29Sdk1jSitEMzhIbThERi9NMTArMTk2ay9VVlA2S1I4VG92?= =?utf-8?B?T0d6RjJCaGx5QnkrR1JiTjZhWE1FaldUb3FWZzZqZlFqZXVtRXljbjdxYTFk?= =?utf-8?B?cEVqanBoSnlzaGZEdHJTR201eUZtT1I1d2lqWjZtdlYvZ01pN0hMWTZTSUVN?= =?utf-8?B?bGM4akQ0YmhBN1Y2V2syMUZDT0g2Y0FpaDk2YWE1ZU5RZWhRNDJwMUcxd2JZ?= =?utf-8?B?REtzVGc4ZTJDSmU0MFo5Z2pLUkRpdVdlaDJ2aUdQeDdENDEySHlZZFBKSkdD?= =?utf-8?B?aC9sUVRmUk05eEpMR1U3aExGSzNEdjVFaWV4Z3BtU05CNXNzZWlYZlZsWXJt?= =?utf-8?B?U0k0cC9hUkN5bWRHRXIxMUlmZzdzVXhjSFFGTmlRdERQM0xBa0JJZHg3d2RL?= =?utf-8?B?SGRORnU0T2ptcHBlc2lWNm93cDBCMFRQU3hGRGh4UTRtOWlib09IcGl3MzRt?= =?utf-8?B?dUFLZWZ3WG5LNmo4NkticEJEbi9zaUZ1NEpqS2NQeDg2dDhzWHRZakhYTWpY?= =?utf-8?B?WjNKc3o0OGVHNnFaWkhKQ1o3UUtzOGlCbzF6UjVoUnlrSktKcVV0QUZpb2lI?= =?utf-8?B?c3hRR1liaFVxQjEyU3pYZnR0RDZOamtWTCtxVWkyUFhZNjZpaG14bTNQNDQw?= =?utf-8?B?SjdFL0twUTZQQnhzNEZaVlJvbm1TTXZSeXV4WVNuQzJNREFncllLME9KdEF5?= =?utf-8?B?RGdPcTF4U1pXNkFpQk9TMjlUOUtyRGtCNVNkU2ZaczlBdDZGMFlDQkk4QVBY?= =?utf-8?B?bDk1cWI3UEJhWlQ2bHZOUGh5Z3UyWUFmY3piUVk0cE9LckZuUS9Xd0c3U0da?= =?utf-8?B?UUpBZXFNaWJoZTcxWXcvTi91R1VadkJEajVyTHZjcGVvVitnckd5djkrMUF3?= =?utf-8?Q?u/HPvQueXLSITtPw=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: TYAPR06MB2256.apcprd06.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3f550eaf-74c6-4e1f-aebb-08da2e422b51 X-MS-Exchange-CrossTenant-originalarrivaltime: 05 May 2022 02:51:35.5526 (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: CBfiqFsCTw8Kl/KTer9lCMFHBxffe4as+zCAxwhPBVnEKXC3+Q+GU2CgrPBfrAoNSI2ny7rCRbQ6dhZJnkjamqHcKos2rYCKXYF9ZQx2D3s= X-MS-Exchange-Transport-CrossTenantHeadersStamped: HK0PR06MB2740 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,T_SCC_BODY_TEXT_LINE autolearn=ham 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 SGkgVGhvbWFzDQpOaWNlIHRvIGUtbWVldCB5b3UgdmlhIHRoaXMgZW1haWwuDQpJIGFtIHByZXBh cmluZyAxcGNzIEFTVDI2MDAgZGVtbyBib2FyZCBmb3IgeW91Lg0KDQpJcyBpdCBvayBmb3IgeW91 IHRvIHNpZ24gTkRBIHdpdGggQVNQRUVELCB0aGVuIEkgY2FuIHJlbGVhc2UgdGhlIGRlbW8gYm9h cmQgYW5kIGFsbCBBU1QyNjAwIHRlY2huaWNhbCBkb2MgdG8geW91Pw0KVGhhbmtzLg0KDQoNCkJl c3Qgd2lzaGVzDQoNCkx1a2UgQ2hlbg0KKE8pIDogKzg4Ni0zLTU3NTExODUNCihNKSA6ICs4ODYt OTM1LTU5Mi04OTINCjRGLCBOby4xLFNlYy4gMyxHb25nZGFvIDV0aCBSb2FkLCBFYXN0IERpc3Qu LA0KSHNpbmNodSBDaXR5LCAzMDA2OSxUYWl3YW4sUi5PLkMuDQoNCg0KLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCkZyb206IEt1by1Ic2lhbmcgQ2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVk dGVjaC5jb20+IA0KU2VudDogVGh1cnNkYXksIE1heSA1LCAyMDIyIDEwOjQxIEFNDQpUbzogVGhv bWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+OyBkcmktZGV2ZWxAbGlzdHMuZnJl ZWRlc2t0b3Aub3JnOyBsaW51eC1rZXJuZWxAdmdlci5rZXJuZWwub3JnDQpDYzogSHVuZ2p1IEh1 YW5nIDxodW5nanVfaHVhbmdAYXNwZWVkdGVjaC5jb20+OyBhaXJsaWVkQGxpbnV4LmllOyBUb21t eSBIdWFuZyA8dG9tbXlfaHVhbmdAYXNwZWVkdGVjaC5jb20+OyBhaXJsaWVkQHJlZGhhdC5jb207 IEFyYyBTdW5nIDxhcmNfc3VuZ0Bhc3BlZWR0ZWNoLmNvbT47IEx1a2UgQ2hlbiA8bHVrZV9jaGVu QGFzcGVlZHRlY2guY29tPg0KU3ViamVjdDogUkU6IFtQQVRDSCB2NF0gZHJtL2FzdDogQ3JlYXRl IHRoZSBkcml2ZXIgZm9yIEFTUEVFRCBwcm9wcmlldG9yeSBEaXNwbGF5LVBvcnQNCg0KSGkgTHVr ZSwNCg0KUGxlYXNlIGhlbHAgb24gdGhlIEVWQiByZXF1ZXN0IHRoYXQgRFJNIHJldmlld2VyLCBU aG9tYXMsIG5lZWRzIG9uZSBBU1QyNjAwIEVWQiB0byBlYXNlIERpc3BsYXktUG9ydCB2ZXJpZmlj YXRpb24gb24gQVNQRUVEIERSTSBkaXZlci4gDQpUaGFua3MNCg0KUmVnYXJkcywNCglLdW8tSHNp YW5nIENob3UNCg0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFRob21hcyBaaW1t ZXJtYW5uIFttYWlsdG86dHppbW1lcm1hbm5Ac3VzZS5kZV0NClNlbnQ6IFdlZG5lc2RheSwgTWF5 IDA0LCAyMDIyIDU6MzggUE0NClRvOiBLdW8tSHNpYW5nIENob3UgPGt1b2hzaWFuZ19jaG91QGFz cGVlZHRlY2guY29tPjsgZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgbGludXgta2Vy bmVsQHZnZXIua2VybmVsLm9yZw0KU3ViamVjdDogUmU6IFtQQVRDSCB2NF0gZHJtL2FzdDogQ3Jl YXRlIHRoZSBkcml2ZXIgZm9yIEFTUEVFRCBwcm9wcmlldG9yeSBEaXNwbGF5LVBvcnQNCg0KSGkg VGhvbWFzLA0KDQpIaQ0KDQpBbSAwNC4wNS4yMiB1bSAxMDo0OSBzY2hyaWViIEt1by1Ic2lhbmcg Q2hvdToNCj4gSGkgVGhvbWFzLA0KPiANCj4gVGhhbmtzIGZvciB5b3VyIGVmZm9ydHMgdG8gcmV2 aWV3IHRoaXMgcGF0Y2guDQo+IA0KPiBOb3csIEkgb2JzZXJ2ZSBhIGNoYW5nZSB0aGF0IGFmdGVy IERQIHVucGx1Z2dlZCBhbmQgdGhlbiB0aGUgc3lzdGVtIGlzIA0KPiB1bmFibGUgdG8gZ2V0IEVE SUQgZnJvbSBELXN1YiBjb25uZWN0aW5nLg0KPiANCj4gVGhlIHJlYXNvbiBzZWVtcyB0aGF0IFRY cyBhcmUgbWVyZ2VkIGludG8gdW5pb24gc3RydWN0dXJlIGluIA0KPiAvZHJpdmVycy9ncHUvZHJt L2FzdC9hc3RfZHJ2LmgNCj4gIMKgKGE1OWIwMjY0MTlmMzMwNDBkN2QyOGI4ZTNiMWNlYTY4MWI5 Y2U3YTcNCj4gPGh0dHBzOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybS1taXNjL2NvbW1p dC8/aWQ9YTU5YjAyNjQxOWYzMzA0MA0KPiBkN2QyOGI4ZTNiMWNlYTY4MWI5Y2U3YTc+KQ0KDQpU aGUgdGVzdCBzeXN0ZW0gaGFzIGEgRFAgYW5kIGEgVkdBIGFkYXB0ZXI/ICBXZSBuZWVkIGNyZWF0 ZSB0d28gc2VwYXJhdGUgY29ubmVjdG9ycyBhbmQgZW5jb2RlcnMgaW4gdGhhdCBjYXNlLiAgSSds bCB0cnkgdG8gcHJvdmlkZSBhIHBhdGNoIGluIHRoZSBuZXh0IGRheXMuDQoNClllcywgdGhlIHNh bWUgY29udGVudCBhcmUgZGlzcGxheWVkIChhcyBtaXJyb3IgbW9kZSkgb24gRFAgYW5kIFZHQSBt b25pdG9yIGFzIHNhbWUgdGltZS4NCg0KSW4gcHJldmlvdXMgZHJtL2FzdCB2ZXJzaW9uLCB0aGUg RURJRCByZWFkIGZyb20gRFAgaXMgZmlyc3QgcHJpb3JpdHkgZm9yIHJlc29sdXRpb24gdmFsaWRh dGlvbi4NCklmIERQIGlzIGRldGVjdGVkIGFzIHVuLWNvbm5lY3RlZCwgYW5kIHRoZW4gcmVhZGlu ZyBFRElEIGZyb20gVkdBIGlzIHVzZWQgZm9yIHRoZSBzZWNvbmQgcnVuIG9mIHJlc29sdXRpb24g dmFsaWRhdGlvbi4NCkZpbmFsbHksIGlmIGJvdGggRFAgYW5kIFZHQSBhcmUgZGV0ZWN0ZWQgYXMg dW4tY29ubmVjdGVkLCBvbmx5IDEwMjQqNzY4IGFuZCA4MDAqNjAwIGFyZSBhYmxlIHRvIGJlIHNl bGVjdGVkIGFzIGRlZmF1bHQgcmVzb2x1dGlvbi4NCg0KPiANCj4gQW5vdGhlciwgZG8geW91IG5l ZWQgdGhlIGFzdDI2MDAgRVZCIHRvIGVhc2UgdmVyaWZpY2F0aW9uIG9uICJkcm0vYXN0IiA/DQoN ClRoZSBFVkIgaXMgYW4gZXZhbHVhdGlvbiBib2FyZD8gDQpZZXMuIHRoZSBFVkIgaXMgZGV2ZWxv cGVkIHRvIGNsYXJpZnkgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gY3VzdG9tJ3MgQ1JCLg0KVGhl IEVWQiBpcyBjb25uZWN0IHRvIEhvc3QgYnkgUENJLWUgMS1MYW5lIGFkYXB0ZXIuDQoNCkknZCBi ZSBoYXBweSB0byBoYXZlIG9uZSBvZiB0aGVzZS4gSG93IGNhbiBJIGdldCBvbmU/DQpJIGZvcndh cmQgdGhlIHJlcXVlc3QgdG8gQVNQRUVEIFZQIGFib3V0IEVWQiBkZWxpdmVyeSB0byB5b3UuDQoN CkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4gDQo+IFJlZ2FyZHMsDQo+IA0KPiAgwqDCoMKgwqDC oMKgwqAgS3VvLUhzaWFuZyBDaG91DQo+IA0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0K PiBGcm9tOiBUaG9tYXMgWmltbWVybWFubiBbbWFpbHRvOnR6aW1tZXJtYW5uQHN1c2UuZGVdDQo+ IFNlbnQ6IFdlZG5lc2RheSwgTWF5IDA0LCAyMDIyIDM6MjggUE0NCj4gVG86IEt1by1Ic2lhbmcg Q2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20+OyANCj4gZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZzsgbGludXgta2VybmVsQHZnZXIua2VybmVsLm9yZw0KPiBTdWJqZWN0 OiBSZTogW1BBVENIIHY0XSBkcm0vYXN0OiBDcmVhdGUgdGhlIGRyaXZlciBmb3IgQVNQRUVEIA0K PiBwcm9wcmlldG9yeSBEaXNwbGF5LVBvcnQNCj4gDQo+IEhpDQo+IA0KPiBBbSAyOC4wNC4yMiB1 bSAwOTo1NiBzY2hyaWViIEt1b0hzaWFuZyBDaG91Og0KPiANCj4+IFYxOg0KPiANCj4+IDEuIFRo ZSBNQ1UgRlcgY29udHJvbGluZyBBU1BFRUQgRFAgaXMgbG9hZGVkIGJ5IEJNQyBib290IGxvYWRl ci4NCj4gDQo+PiAyLiBEcml2ZXIgc3RhcnRzIGFmdGVyIENSWzM6MV0gPT0gMTExYiB0aGF0IGlu ZGljYXRlcyBUeCBpcyBBU1REUCwNCj4gDQo+PsKgwqDCoMKgIGFuZCBDUkQxWzVdIGhhcyBiZWVu IGFzc2VydGVkIGJ5IEJNVkMgYm9vdCBsb2FkZXIuDQo+IA0KPj4gMy4gRURJRCBpcyBwcmlvcml0 aXplZCBieSBEUCBtb25pdG9yLg0KPiANCj4+IDQuIERQJ3MgRURJRCBoYXMgaGlnaCBwcmlvcml0 eSB0byBkZWNpZGUgcmVzb2x1dGlvbiBzdXBwb3J0aW5nLg0KPiANCj4+IA0KPiANCj4+IFYyOg0K PiANCj4+IE1vZHVsZXMgZGVzY3JpcHRpb246DQo+IA0KPj4gMS4gQVNURFAgKEFTUEVFRCBEaXNw bGF5UG9ydCkgaXMgY29udHJvbGxlZCBieSBkZWRpY2F0ZWQNCj4gDQo+PsKgwqDCoMKgIEFTVC1N Q1UgKEFTUEVFRCBwcm9wcmlhdGFyeSBNQ1UpLg0KPiANCj4+IDIuIE1DVSBpcyBsb29waW5nIGlu IGNoYXJnZWQgb2YgSFBELCBSZWFkIEVESUQsIExpbmsgVHJhaW5pbmcgd2l0aA0KPiANCj4+wqDC oMKgwqAgRFAgc2luay4NCj4gDQo+PiAzLiBBU1REUCBhbmQgQVNULU1VQyByZXNpZGUgaW4gQk1D IChCYXNlYm9hcmQgTWFuYWdlbWVudCBjb250cm9sbGVyKQ0KPiANCj4+wqDCoMKgwqAgYWRkcmVz c2luZy1zcGFjZS4NCj4gDQo+PiA0LiBBU1BFRUQgRFJNIGRyaXZlciByZXF1ZXN0cyBNQ1UgdG8g Z2V0IEhQRCBhbmQgRURJRCBieSBDUi1zY3JhdGNoZWQNCj4gDQo+PsKgwqDCoMKgIHJlZ2lzdGVy Lg0KPiANCj4+IA0KPiANCj4+IEJvb3Rpbmcgc2VxdWVuY2U6DQo+IA0KPj4gMS4gQ2hlY2sgaWYg VFggaXMgQVNURFDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLy8NCj4+IGFzdF9kcF9sYXVuY2goKQ0K PiANCj4+IDIuIENoZWNrIGlmIERQLU1DVSBGVyBoYXMgbG9hZGVkIC8vIGFzdF9kcF9sYXVuY2go KQ0KPiANCj4+IDMuIFJlYWQgRURJRMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvLw0KPj4gYXN0X2Rw X3JlYWRfZWRpZCgpDQo+IA0KPj4gNC4gUmVzb2x1dGlvbiBzd2l0Y2jCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ly8NCj4+IGFzdF9kcF9TZXRPdXRwdXQoKQ0KPiANCj4+IA0KPiANCj4+IFYzOg0KPiANCj4+IDEu IFJlbW92ZSB1bm5lZWRlZCBzZW1pY29sb24uDQo+IA0KPj4gMi4gQXBwbHkgdG8gZ2l0Oi8vYW5v bmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybSwgaW5zdGVhZCBvZg0KPiANCj4+wqDCoMKgwqAg Z2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvZHJtL2RybS1taXNjDQo+IA0KPj4gMy4gUmVz b2x2ZSBhdXRvIGJ1aWxkIHRlc3QgV0FSTklOR3Mgb24gVjEgcGF0Y2guDQo+IA0KPj4gDQo+IA0K Pj4gVjQ6DQo+IA0KPj4gMS4gU3luYyBjb2RlLWJhc2Ugd2l0aCBrZXJuZWwgNS4xN19yYzYgMi4g UmVtb3ZlIHRoZSBkZWZpbmUgb2YNCj4gDQo+PiBEUENvbnRyb2xQb3dlciwgYmVjYXVzZSBEUCBj aGlwcyBuZWVkIHRvIGJlDQo+IA0KPj7CoMKgwqDCoCBwb3dlcmVkIG9uIHRvIGJlIHVzZWQuDQo+ IA0KPj4gMy4gUmVtb3ZlIHRoZSBzd2l0Y2hlcyBvZiBQSFkgYW5kIERpc3BsYXkgZnJvbSBFRElE IHByb2NlZHVyZS4NCj4gDQo+PiA0LiBSZXZpc2UgaW5jcmVhaW5nIGRlbGF5IHRvIGZpeGVkIGRl bGF5LCBiZWNhdXNlIHRoaXMgdmVyc2lvbiBrZXJuZWwNCj4gDQo+PsKgwqDCoMKgIGRvZXNuJ3Qg ZGV0ZWN0IG1pbml0b3IgY29uc2lzdGVubnRseS4NCj4gDQo+PiA1LiBDcmVhdGUgY2xlYW4tdXAg Y29kZSB1c2VkIGZvciByZXNldCBvZiBwb3dlciBzdGF0ZSBvbiBlcnJvcnMgd2l0aA0KPiANCj4+ wqDCoMKgwqAgLUVJTyBtYW5uZXIuDQo+IA0KPj4gNi4gUmV2aXNlIHRoZSBEUCBkZXRlY3Rpb24g YnkgVFggdHlwZSBhbmQgaXRzIERQLUZXIHN0YXR1cyBkdXJpbmcNCj4gDQo+PsKgwqDCoMKgIGJv b3RpbmcgYW5kIHJlc3VtZS4NCj4gDQo+PiA3LiBDb3JyZWN0IHRoZSBDYW1lbENhc2UgU3R5bGUu DQo+IA0KPj4gOC4gVXNlIHJlZ2lzdGVyIHJlYWRpbmcgd2hpbGUgbmVlZGluZywgYW5kIHJlbW92 ZSB0byBob2xkIGZ1bGwNCj4gDQo+PsKgwqDCoMKgIHJlZ2lzdGVyLg0KPiANCj4+IDkuIEluc3Rl YWQgb2YgJ3U4JywgcmV2aXNlIHRvICdib29sJyBvbiBzd3dpdGNoIG9mIFBIWSBhbmQgdmlkZW8u DQo+IA0KPj4gMTAuQ29ycmVjdCB0eXBvDQo+IA0KPj4gMTEuUmVtb3ZlIHRoZSBkdXBsaWNhdGVk IGNvcHkgb2YgVFggZGVmaW5pdGlvbi4NCj4gDQo+PiAxMi5Vc2UgRURJRF9MRU5HVEggYXMgdGhl IGNvbnN0YW50IG9mIDEyOC4NCj4gDQo+PiANCj4gDQo+PiBTaWduZWQtb2ZmLWJ5OiBLdW9Ic2lh bmcgQ2hvdSA8a3VvaHNpYW5nX2Nob3VAYXNwZWVkdGVjaC5jb20gDQo+PiA8bWFpbHRvOmt1b2hz aWFuZ19jaG91QGFzcGVlZHRlY2guY29tPj4NCj4gDQo+IFJldmlld2VkLWJ5OiBUaG9tYXMgWmlt bWVybWFubiA8dHppbW1lcm1hbm5Ac3VzZS5kZSANCj4gPG1haWx0bzp0emltbWVybWFubkBzdXNl LmRlPj4NCj4gDQo+IEkndmUgbWVhbndoaWxlIGFkZGVkIHlvdXIgcGF0Y2ggdG8gZHJtLW1pc2Mt bmV4dC4gSXQgc2hvdWxkIHNob3cgdXAgaW4gDQo+IG9uZSBvZiB0aGUgbmV4dCBrZXJuZWwgcmVs ZWFzZXMuwqAgVGhhbmtzIGEgbG90Lg0KPiANCj4gQmVzdCByZWdhcmRzDQo+IA0KPiBUaG9tYXMN Cj4gDQo+PiAtLS0NCj4gDQo+PsKgwqAgZHJpdmVycy9ncHUvZHJtL2FzdC9NYWtlZmlsZcKgwqAg fMKgwqAgMiArLQ0KPiANCj4+wqDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5jwqDCoCB8 IDI4Mg0KPj4rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysNCj4gDQo+PsKgwqAgZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmjCoCB8IDExNSArKysrKysrKysrKysrKw0KPiANCj4+ wqDCoCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMgfMKgwqAgNSArLQ0KPiANCj4+wqDC oCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMgfCAxMjQgKysrKysrKysrKysrKystDQo+ IA0KPj7CoMKgIGRyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X3Bvc3QuYyB8wqDCoCA0ICstDQo+IA0K Pj7CoMKgIDYgZmlsZXMgY2hhbmdlZCwgNTI0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0p DQo+IA0KPj7CoMKgIGNyZWF0ZSBtb2RlIDEwMDY0NCBkcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9k cC5jDQo+IA0KPj4gDQo+IA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFr ZWZpbGUNCj4gDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUgaW5kZXggMjFmNzEx NjBiLi41YTUzY2U1MWYgMTAwNjQ0DQo+IA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9N YWtlZmlsZQ0KPiANCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvTWFrZWZpbGUNCj4gDQo+ PiBAQCAtMyw2ICszLDYgQEANCj4gDQo+PsKgwqAgIyBNYWtlZmlsZSBmb3IgdGhlIGRybSBkZXZp Y2UgZHJpdmVyLsKgIFRoaXMgZHJpdmVyIHByb3ZpZGVzIHN1cHBvcnQgDQo+PmZvciB0aGUNCj4g DQo+PsKgwqAgIyBEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlIChEUkkpIGluIFhGcmVl ODYgNC4xLjAgYW5kIGhpZ2hlci4NCj4gDQo+PiANCj4gDQo+PiAtYXN0LXkgOj0gYXN0X2Rydi5v IGFzdF9pMmMubyBhc3RfbWFpbi5vIGFzdF9tbS5vIGFzdF9tb2RlLm8NCj4gDQo+PiBhc3RfcG9z dC5vIGFzdF9kcDUwMS5vDQo+IA0KPj4gK2FzdC15IDo9IGFzdF9kcnYubyBhc3RfaTJjLm8gYXN0 X21haW4ubyBhc3RfbW0ubyBhc3RfbW9kZS5vDQo+IA0KPj4gK2FzdF9wb3N0Lm8gYXN0X2RwNTAx Lm8gYXN0X2RwLm8NCj4gDQo+PiANCj4gDQo+PsKgwqAgb2JqLSQoQ09ORklHX0RSTV9BU1QpIDo9 IGFzdC5vDQo+IA0KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMN Cj4gDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2RwLmMgbmV3IGZpbGUgbW9kZSAxMDA2 NDQgaW5kZXgNCj4gDQo+PiAwMDAwMDAwMDAuLjQ1NTFiYzhhMw0KPiANCj4+IC0tLSAvZGV2L251 bGwNCj4gDQo+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9kcC5jDQo+IA0KPj4gQEAg LTAsMCArMSwyODIgQEANCj4gDQo+PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0y LjANCj4gDQo+PiArLy8gQ29weXJpZ2h0IChjKSAyMDIxLCBBU1BFRUQgVGVjaG5vbG9neSBJbmMu DQo+IA0KPj4gKy8vIEF1dGhvcnM6IEt1b0hzaWFuZyBDaG91IDxrdW9oc2lhbmdfY2hvdUBhc3Bl ZWR0ZWNoLmNvbSANCj4+ICs8bWFpbHRvOmt1b2hzaWFuZ19jaG91QGFzcGVlZHRlY2guY29tPj4N Cj4gDQo+PiArDQo+IA0KPj4gKyNpbmNsdWRlIDxsaW51eC9maXJtd2FyZS5oPg0KPiANCj4+ICsj aW5jbHVkZSA8bGludXgvZGVsYXkuaD4NCj4gDQo+PiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQu aD4NCj4gDQo+PiArI2luY2x1ZGUgImFzdF9kcnYuaCINCj4gDQo+PiArDQo+IA0KPj4gK2ludCBh c3RfYXN0ZHBfcmVhZF9lZGlkKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHU4ICplZGlkZGF0YSkg ew0KPiANCj4+ICvCoMKgIHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUo ZGV2KTsNCj4gDQo+PiArwqDCoCB1OCBpID0gMCwgaiA9IDA7DQo+IA0KPj4gKw0KPiANCj4+ICvC oMKgIC8qDQo+IA0KPj4gK8KgwqAgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGluZw0K PiANCj4+ICvCoMKgICogQ1JEQ1tiMF06IERQIGxpbmsgc3VjY2Vzcw0KPiANCj4+ICvCoMKgICog Q1JERltiMF06IERQIEhQRA0KPiANCj4+ICvCoMKgICogQ1JFNVtiMF06IEhvc3QgcmVhZGluZyBF RElEIHByb2Nlc3MgaXMgZG9uZQ0KPiANCj4+ICvCoMKgICovDQo+IA0KPj4gK8KgwqAgaWYgKCEo YXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RDEsDQo+PiAr QVNURFBfTUNVX0ZXX0VYRUNVVElORykgJiYNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg YXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4REMsDQo+PiAr QVNURFBfTElOS19TVUNDRVNTKSAmJg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rf Z2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhERiwNCj4+ICtBU1RE UF9IUEQpICYmDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9nZXRfaW5kZXhfcmVn X21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPiANCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1RE UF9IT1NUX0VESURfUkVBRF9ET05FX01BU0spKSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBnb3RvIGVycl9hc3RkcF9lZGlkX25vdF9yZWFkeTsNCj4gDQo+PiArwqDCoCB9DQo+IA0K Pj4gKw0KPiANCj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JU Q19QT1JULCAweEU1LCAodTgpIA0KPj4gK35BU1REUF9IT1NUX0VESURfUkVBRF9ET05FX01BU0ss DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgw MCk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIGZvciAoaSA9IDA7IGkgPCAzMjsgaSsrKSB7DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgICogQ1JFNFs3OjBdOiBSZWFkLVBvaW50ZXIgZm9yIEVESUQgKFVuaXQ6IDRieXRlcyk7IHZh bGlkDQo+PiArcmFuZ2U6IDB+NjQNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4RTQsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1OCkgDQo+PiArfkFT VERQX0VESURfUkVBRF9QT0lOVEVSX01BU0ssICh1OCkgaSk7DQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGogPSAwOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg LyoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBDUkQ3W2IwXTogdmFsaWQgZmxhZyBm b3IgRURJRA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIENSRDZbYjBdOiBtaXJyb3Ig cmVhZCBwb2ludGVyIGZvciBFRElEDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlICgoYXN0X2dldF9pbmRleF9yZWdfbWFz ayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIA0KPj4gKzB4RDcsDQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQVNURFBfRURJRF9WQUxJ RF9GTEFHX01BU0spICE9IDB4MDEpIHx8DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BP UlQsIA0KPj4gKzB4RDYsDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ ICtBU1REUF9FRElEX1JFQURfUE9JTlRFUl9NQVNLKSAhPSBpKSkgew0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLyoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICogRGVsYXkgYXJlIGdldHRpbmcgbG9uZ2VyIHdpdGggZWFj aCByZXRyeS4NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICog MS4gVGhlIERlbGF5cyBhcmUgb2Z0ZW4gMiBsb29wcyB3aGVuIHVzZXJzIHJlcXVlc3QgIkRpc3Bs YXkgU2V0dGluZ3MiDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqwqDCoMKgIMKgIG9mIHJpZ2h0LWNsaWNrIG9mIG1vdXNlLg0KPiANCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAyLiBUaGUgRGVsYXlzIGFyZSBvZnRlbiBsb25n ZXIgYSBsb3Qgd2hlbiBzeXN0ZW0gcmVzdW1lIGZyb20gUzMvUzQuDQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbWRlbGF5KGorMSk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdf bWFzayhhc3QsIA0KPj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4RDEsDQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+PiArQVNURFBfTUNVX0ZXX0VY RUNVVElORykgJiYNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgDQo+PiArQVNUX0lP X0NSVENfUE9SVCwgMHhEQywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9MSU5LX1NVQ0NFU1MpICYmDQo+IA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2dldF9p bmRleF9yZWdfbWFzayhhc3QsIA0KPj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4REYsIEFTVERQX0hQ RCkpKSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZ290byBlcnJfYXN0ZHBfanVtcF9vdXRfbG9vcF9vZl9lZGlkOw0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiANCj4+ICsNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGorKzsNCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChqID4gMjAwKQ0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8g ZXJyX2FzdGRwX2p1bXBfb3V0X2xvb3Bfb2ZfZWRpZDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQ0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgKihlZGlkZGF0 YSkgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgDQo+PiArQVNUX0lPX0NSVENfUE9SVCwN Cj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweEQ4 LCANCj4+ICtBU1REUF9FRElEX1JFQURfREFUQV9NQVNLKTsNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgKihlZGlkZGF0YSArIDEpID0gYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIA0K Pj4gK0FTVF9JT19DUlRDX1BPUlQsIDB4RDksDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX0VESURf UkVBRF9EQVRBX01BU0spOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCAqKGVkaWRkYXRh ICsgMikgPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgDQo+PiArQVNUX0lPX0NSVENfUE9S VCwgMHhEQSwNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgDQo+PiArQVNURFBfRURJRF9SRUFEX0RBVEFfTUFTSyk7DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgICooZWRpZGRhdGEgKyAzKSA9IGFzdF9nZXRfaW5k ZXhfcmVnX21hc2soYXN0LCANCj4+ICtBU1RfSU9fQ1JUQ19QT1JULCAweERCLA0KPiANCj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCANCj4+ICtBU1REUF9FRElEX1JFQURfREFUQV9NQVNLKTsNCj4gDQo+PiArDQo+IA0KPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgIGlmIChpID09IDMxKSB7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKiBGb3IgMTI4LWJ5dGVzIEVESURfMS4zLA0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiAxLiBBZGQgdGhlIHZhbHVlIG9mIEJ5dGVz LTEyNiB0byBCeXRlcy0xMjcuDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBUaGUgQnl0ZXMtMTI3IGlzIENoZWNrc3Vt LiBTdW0gb2YgDQo+PiArYWxsIDEyOGJ5dGVzIHNob3VsZA0KPiANCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZXF1YWwgMMKg wqDCoCAobW9kIDI1NikuDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAqIDIuIE1vZGlmeSBCeXRlcy0xMjYgdG8gYmUgMC4NCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFRoZSBCeXRl cy0xMjYgaW5kaWNhdGVzIHRoZSBOdW1iZXIgDQo+PiArb2YgZXh0ZW5zaW9ucyB0bw0KPiANCj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKsKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgZm9sbG93LiAwIHJlcHJlc2VudHMgbm9leHRlbnNpb25zLg0KPiANCj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICooZWRpZGRhdGEgKyAzKSA9ICooZWRpZGRhdGEgKyAzKSAr ICooZWRpZGRhdGEgKyANCj4+ICsyKTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICooZWRpZGRhdGEgKyAyKSA9IDA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVkaWRkYXRh ICs9IDQ7DQo+IA0KPj4gK8KgwqAgfQ0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2lu ZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFNSwgKHU4KSANCj4+ICt+QVNU RFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkUp Ow0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXR1cm4gMDsNCj4gDQo+PiArDQo+IA0KPj4gK2Vy cl9hc3RkcF9qdW1wX291dF9sb29wX29mX2VkaWQ6DQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRl eF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTUsDQo+IA0KPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKHU4KSANCj4+ICt+QVNURFBfSE9T VF9FRElEX1JFQURfRE9ORV9NQVNLLA0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX0hPU1RfRURJRF9SRUFEX0RPTkUpOw0KPiAN Cj4+ICvCoMKgIHJldHVybiAofihqKzI1NikgKyAxKTsNCj4gDQo+PiArDQo+IA0KPj4gK2Vycl9h c3RkcF9lZGlkX25vdF9yZWFkeToNCj4gDQo+PiArwqDCoCBpZiAoIShhc3RfZ2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhEMSwNCj4+ICtBU1REUF9NQ1VfRldfRVhF Q1VUSU5HKSkpDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAofjB4RDEgKyAx KTsNCj4gDQo+PiArwqDCoCBpZiAoIShhc3RfZ2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lP X0NSVENfUE9SVCwgMHhEQywNCj4+ICtBU1REUF9MSU5LX1NVQ0NFU1MpKSkNCj4gDQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuICh+MHhEQyArIDEpOw0KPiANCj4+ICvCoMKgIGlmICgh KGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweERGLA0KPj4g K0FTVERQX0hQRCkpKQ0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gKH4weERG ICsgMSk7DQo+IA0KPj4gK8KgwqAgaWYgKCEoYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFT VF9JT19DUlRDX1BPUlQsIDB4RTUsDQo+PiArQVNURFBfSE9TVF9FRElEX1JFQURfRE9ORV9NQVNL KSkpDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAofjB4RTUgKyAxKTsNCj4g DQo+PiArDQo+IA0KPj4gK8KgwqAgcmV0dXJuwqDCoMKgwqDCoCAwOw0KPiANCj4+ICt9DQo+IA0K Pj4gKw0KPiANCj4+ICsvKg0KPiANCj4+ICsgKiBMYXVuY2ggQXNwZWVkIERQDQo+IA0KPj4gKyAq Lw0KPiANCj4+ICt2b2lkIGFzdF9kcF9sYXVuY2goc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTgg YlBvd2VyKSB7DQo+IA0KPj4gK8KgwqAgdTMyIGkgPSAwLCBqID0gMCwgV2FpdENvdW50ID0gMTsN Cj4gDQo+PiArwqDCoCB1OCBiRFBUWCA9IDA7DQo+IA0KPj4gK8KgwqAgdTggYkRQRXhlY3V0ZSA9 IDE7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9f YXN0X3ByaXZhdGUoZGV2KTsNCj4gDQo+PiArwqDCoCAvLyBTMyBjb21lIGJhY2ssIG5lZWQgbW9y ZSB0aW1lIHRvIHdhaXQgQk1DIHJlYWR5Lg0KPiANCj4+ICvCoMKgIGlmIChiUG93ZXIpDQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIFdhaXRDb3VudCA9IDMwMDsNCj4gDQo+PiArDQo+IA0K Pj4gKw0KPiANCj4+ICvCoMKgIC8vIFdhaXQgdG90YWwgY291bnQgYnkgZGlmZmVyZW50IGNvbmRp dGlvbi4NCj4gDQo+PiArwqDCoCBmb3IgKGogPSAwOyBqIDwgV2FpdENvdW50OyBqKyspIHsNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYkRQVFggPSBhc3RfZ2V0X2luZGV4X3JlZ19tYXNr KGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgDQo+PiArMHhEMSwNCj4gDQo+PiArVFhfVFlQRV9NQVNL KTsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChiRFBUWCkNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXNsZWVwKDEwMCk7DQo+IA0KPj4gK8Kg wqAgfQ0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAvLyAweEUgOiBBU1REUCB3aXRoIERQTUNVIEZX IGhhbmRsaW5nDQo+IA0KPj4gK8KgwqAgaWYgKGJEUFRYID09IEFTVERQX0RQTUNVX1RYKSB7DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIFdhaXQgb25lIHNlY29uZCB0aGVuIHRpbWVv dXQuDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGkgPSAwOw0KPiANCj4+ICsNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgd2hpbGUgKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0 LCBBU1RfSU9fQ1JUQ19QT1JULCANCj4+ICsweEQxLCBDT1BST0NFU1NPUl9MQVVOQ0gpICE9DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBDT1BST0NFU1NPUl9M QVVOQ0gpIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGkr KzsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIHdhaXQg MTAwIG1zDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtc2xl ZXAoMTAwKTsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoaSA+PSAxMCkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8vIERQIHdvdWxkIG5vdCBiZSByZWFkeS4NCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBiRFBFeGVjdXRlID0gMDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPiAN Cj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGJEUEV4ZWN1dGUpDQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3QtPnR4X2NoaXBfdHlw ZSA9IEFTVF9UWF9BU1REUDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg IGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JULCAweEU1LA0KPiAN Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICh1OCkgDQo+ PiArfkFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTSywNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCANCj4+ICtBU1REUF9IT1NUX0VESURfUkVB RF9ET05FKTsNCj4gDQo+PiArwqDCoCB9IGVsc2UNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgYXN0LT50eF9jaGlwX3R5cGUgPSBBU1RfVFhfTk9ORTsNCj4gDQo+PiArfQ0KPiANCj4+ICsN Cj4gDQo+PiArDQo+IA0KPj4gKw0KPiANCj4+ICt2b2lkIGFzdF9kcF9wb3dlcl9vbl9vZmYoc3Ry dWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBvbikgew0KPiANCj4+ICvCoMKgIHN0cnVjdCBhc3Rf cHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoZGV2KTsNCj4gDQo+PiArwqDCoCAvLyBSZWFk IGFuZCBUdXJuIG9mZiBEUCBQSFkgc2xlZXANCj4gDQo+PiArwqDCoCB1OCBiRTMgPSBhc3RfZ2V0 X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMywNCj4gDQo+PiArQVNU X0RQX1ZJREVPX0VOQUJMRSk7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIC8vIFR1cm4gb24gRFAg UEhZIHNsZWVwDQo+IA0KPj4gK8KgwqAgaWYgKCFvbikNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqAgYkUzIHw9IEFTVF9EUF9QSFlfU0xFRVA7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIC8v IERQIFBvd2VyIG9uL29mZg0KPiANCj4+ICvCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0 LCBBU1RfSU9fQ1JUQ19QT1JULCAweEUzLCAodTgpDQo+IA0KPj4gK35BU1RfRFBfUEhZX1NMRUVQ LCBiRTMpOyB9DQo+IA0KPj4gKw0KPiANCj4+ICsNCj4gDQo+PiArDQo+IA0KPj4gK3ZvaWQgYXN0 X2RwX3NldF9vbl9vZmYoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgYm9vbCBvbikgew0KPiANCj4+ ICvCoMKgIHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoZGV2KTsNCj4g DQo+PiArwqDCoCB1OCB2aWRlb19vbl9vZmYgPSBvbjsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAg Ly8gVmlkZW8gT24vT2ZmDQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3Qs IEFTVF9JT19DUlRDX1BPUlQsIDB4RTMsICh1OCkNCj4gDQo+PiArfkFTVF9EUF9WSURFT19FTkFC TEUsIG9uKTsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgLy8gSWYgRFAgcGx1ZyBpbiBhbmQgbGlu ayBzdWNjZXNzZnVsIHRoZW4gY2hlY2sgdmlkZW8gb24gLyBvZmYgDQo+PiArc3RhdHVzDQo+IA0K Pj4gK8KgwqAgaWYgKGFzdF9nZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19QT1JU LCAweERDLA0KPj4gK0FTVERQX0xJTktfU1VDQ0VTUykgJiYNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqAgYXN0X2dldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4 REYsDQo+PiArQVNURFBfSFBEKSkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB2aWRl b19vbl9vZmYgPDw9IDQ7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHdoaWxlIChhc3Rf Z2V0X2luZGV4X3JlZ19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgDQo+PiArMHhERiwNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIA0KPj4gK0FTVERQX01JUlJPUl9WSURF T19FTkFCTEUpICE9IHZpZGVvX29uX29mZikgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLy8gd2FpdCAxIG1zDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBtZGVsYXkoMSk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgIH0NCj4gDQo+PiArwqDCoCB9DQo+IA0KPj4gK30NCj4gDQo+PiArDQo+IA0KPj4gK3ZvaWQg YXN0X2RwX3NldF9tb2RlKHN0cnVjdCBkcm1fY3J0YyAqY3J0Yywgc3RydWN0DQo+IA0KPj4gK2Fz dF92Ymlvc19tb2RlX2luZm8gKnZiaW9zX21vZGUpIHsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgYXN0 X3ByaXZhdGUgKmFzdCA9IHRvX2FzdF9wcml2YXRlKGNydGMtPmRldik7DQo+IA0KPj4gKw0KPiAN Cj4+ICvCoMKgIHUzMiB1bFJlZnJlc2hSYXRlSW5kZXg7DQo+IA0KPj4gK8KgwqAgdTggTW9kZUlk eDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgdWxSZWZyZXNoUmF0ZUluZGV4ID0gdmJpb3NfbW9k ZS0+ZW5oX3RhYmxlLT5yZWZyZXNoX3JhdGVfaW5kZXggLSANCj4+ICsxOw0KPiANCj4+ICsNCj4g DQo+PiArwqDCoCBzd2l0Y2ggKGNydGMtPm1vZGUuY3J0Y19oZGlzcGxheSkgew0KPiANCj4+ICvC oMKgIGNhc2UgMzIwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNU RFBfMzIweDI0MF82MDsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0K Pj4gK8KgwqAgY2FzZSA0MDA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHgg PSBBU1REUF80MDB4MzAwXzYwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsN Cj4gDQo+PiArwqDCoCBjYXNlIDUxMjoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9k ZUlkeCA9IEFTVERQXzUxMngzODRfNjA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJy ZWFrOw0KPiANCj4+ICvCoMKgIGNhc2UgNjQwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBNb2RlSWR4ID0gKEFTVERQXzY0MHg0ODBfNjAgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7 DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2Ug ODAwOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQXzgwMHg2 MDBfNTYgKyAodTgpIHVsUmVmcmVzaFJhdGVJbmRleCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKgIGNhc2UgMTAyNDoNCj4gDQo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1REUF8xMDI0eDc2OF82MCArICh1OCkgdWxSZWZyZXNo UmF0ZUluZGV4KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4g K8KgwqAgY2FzZSAxMTUyOg0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0g QVNURFBfMTE1Mng4NjRfNzU7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0K PiANCj4+ICvCoMKgIGNhc2UgMTI4MDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYg KGNydGMtPm1vZGUuY3J0Y192ZGlzcGxheSA9PSA4MDApDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gKEFTVERQXzEyODB4ODAwXzYwX1JCIC0g KHU4KSANCj4+ICt1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBlbHNlwqDCoMKgwqDCoMKgwqDCoMKgIC8vIDEwMjQNCj4gDQo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTI4MHgxMDI0XzYwICsg KHU4KSANCj4+ICt1bFJlZnJlc2hSYXRlSW5kZXgpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIDEzNjA6DQo+IA0KPj4gK8KgwqAgY2FzZSAx MzY2Og0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNURFBfMTM2Nng3 NjhfNjA7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPiANCj4+ICvCoMKg IGNhc2UgMTQ0MDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgTW9kZUlkeCA9IChBU1RE UF8xNDQweDkwMF82MF9SQiAtICh1OCkgDQo+PiArdWxSZWZyZXNoUmF0ZUluZGV4KTsNCj4gDQo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSAxNjAwOg0K PiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoY3J0Yy0+bW9kZS5jcnRjX3ZkaXNwbGF5 ID09IDkwMCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1v ZGVJZHggPSAoQVNURFBfMTYwMHg5MDBfNjBfUkIgLSAodTgpIA0KPj4gK3VsUmVmcmVzaFJhdGVJ bmRleCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2XCoMKgwqDCoMKgwqDCoMKg wqAgLy8xMjAwDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBN b2RlSWR4ID0gQVNURFBfMTYwMHgxMjAwXzYwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIDE2ODA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIE1vZGVJZHggPSAoQVNURFBfMTY4MHgxMDUwXzYwX1JCIC0gKHU4KSANCj4+ICt1bFJl ZnJlc2hSYXRlSW5kZXgpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4g DQo+PiArwqDCoCBjYXNlIDE5MjA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChj cnRjLT5tb2RlLmNydGNfdmRpc3BsYXkgPT0gMTA4MCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIE1vZGVJZHggPSBBU1REUF8xOTIweDEwODBfNjA7DQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGVsc2XCoMKgwqDCoMKgwqDCoMKgwqAgLy8xMjAwDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBNb2RlSWR4ID0gQVNU RFBfMTkyMHgxMjAwXzYwOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4g DQo+PiArwqDCoCBkZWZhdWx0Og0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm47 DQo+IA0KPj4gK8KgwqAgfQ0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCAvKg0KPiANCj4+ICvCoMKg ICogQ1JFMFs3OjBdOiBNSVNDMCAoKDB4MDA6IDE4LWJwcCkgb3IgKDB4MjA6IDI0LWJwcCkNCj4g DQo+PiArwqDCoCAqIENSRTFbNzowXTogTUlTQzEgKGRlZmF1bHQ6IDB4MDApDQo+IA0KPj4gK8Kg wqAgKiBDUkUyWzc6MF06IHZpZGVvIGZvcm1hdCBpbmRleCAoMHgwMCB+IDB4MjAgb3IgMHg0MCB+ IDB4NTApDQo+IA0KPj4gK8KgwqAgKi8NCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3JlZ19t YXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMCwgKHU4KSANCj4+ICt+QVNURFBfQ0xFQVJf TUFTSywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBU1REUF9NSVNDMF8yNGJwcCk7DQo+IA0KPj4gK8KgwqAgYXN0X3NldF9pbmRl eF9yZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4RTEsICh1OCkgDQo+PiArfkFTVERQ X0NMRUFSX01BU0ssIEFTVERQX01JU0MxKTsNCj4gDQo+PiArwqDCoCBhc3Rfc2V0X2luZGV4X3Jl Z19tYXNrKGFzdCwgQVNUX0lPX0NSVENfUE9SVCwgMHhFMiwgKHU4KQ0KPiANCj4+ICt+QVNURFBf Q0xFQVJfTUFTSywgTW9kZUlkeCk7IH0NCj4gDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2FzdC9hc3RfZHJ2LmgNCj4gDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0X2Rydi5o IGluZGV4IGExOTMxNWIyZi4uZmYxYWUzMTRiIDEwMDY0NA0KPiANCj4+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS9hc3QvYXN0X2Rydi5oDQo+IA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9h c3RfZHJ2LmgNCj4gDQo+PiBAQCAtNzAsNiArNzAsNyBAQCBlbnVtIGFzdF90eF9jaGlwIHsNCj4g DQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgQVNUX1RYX05PTkUsDQo+IA0KPj7CoMKgIMKgwqDCoMKg wqDCoMKgIEFTVF9UWF9TSUwxNjQsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIEFTVF9UWF9E UDUwMSwNCj4gDQo+PiArwqDCoCBBU1RfVFhfQVNURFAsDQo+IA0KPj7CoMKgIH07DQo+IA0KPj4g DQo+IA0KPj7CoMKgICNkZWZpbmUgQVNUX0RSQU1fNTEyTXgxNiAwDQo+IA0KPj4gQEAgLTE4NCw2 ICsxODUsMTAgQEAgc3RydWN0IGFzdF9wcml2YXRlIHsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2VuY29kZXIgZW5j b2RlcjsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+IA0KPj7CoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9IGRwNTAxOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3Qgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciBjb25uZWN0b3I7DQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0gYXN0ZHA7DQo+IA0KPj7CoMKgIMKgwqDCoMKg wqDCoMKgIH0gb3V0cHV0Ow0KPiANCj4+IA0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBib29s IHN1cHBvcnRfd2lkZV9zY3JlZW47DQo+IA0KPj4gQEAgLTM1NywxMCArMzYyLDExMyBAQCBpbnQg YXN0X21vZGVfY29uZmlnX2luaXQoc3RydWN0IGFzdF9wcml2YXRlIA0KPj4gKmFzdCk7DQo+IA0K Pj7CoMKgICNkZWZpbmUgQVNUX0RQNTAxX0VESURfREFUQcKgwqDCoCAweGYwMjANCj4gDQo+PiAN Cj4gDQo+PsKgwqAgLyogRGVmaW5lIGZvciBTb2Mgc2NyYXRjaGVkIHJlZyAqLw0KPiANCj4+ICsj ZGVmaW5lIENPUFJPQ0VTU09SX0xBVU5DSMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgQklUKDUpDQo+IA0KPj4gKw0KPiANCj4+ICsvKg0KPiANCj4+ICsgKiBEaXNwbGF5 IFRyYW5zbWl0dGVyIFR5cGU6DQo+IA0KPj4gKyAqLw0KPiANCj4+ICsjZGVmaW5lIFRYX1RZUEVf TUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBHRU5NQVNLKDMsIDEpDQo+IA0KPj4gKyNkZWZpbmUgTk9fVFjCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgKDAgPDwgMSkNCj4gDQo+PiArI2RlZmluZSBJVEU2NjEyMV9WQklPU19UWMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgMSkNCj4gDQo+PiArI2Rl ZmluZSBTSTE2NF9WQklPU19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKDIgPDwgMSkNCj4gDQo+PiArI2RlZmluZSBDSDcwMDNfVkJJT1NfVFjC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoMyA8PCAxKQ0KPiAN Cj4+ICsjZGVmaW5lIERQNTAxX1ZCSU9TX1RYwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICg0IDw8IDEpDQo+IA0KPj4gKyNkZWZpbmUgQU5YOTgwN19WQklP U19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKDUgPDwgMSkNCj4g DQo+PiArI2RlZmluZSBUWF9GV19FTUJFRERFRF9GV19UWMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCAoNiA8PCAxKQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQX0RQTUNVX1RYwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICg3IDw8 IDEpDQo+IA0KPj4gKw0KPiANCj4+wqDCoCAjZGVmaW5lIEFTVF9WUkFNX0lOSVRfU1RBVFVTX01B U0vCoMKgwqDCoMKgwqAgR0VOTUFTSyg3LCA2KQ0KPiANCj4+wqDCoCAvLyNkZWZpbmUgQVNUX1ZS QU1fSU5JVF9CWV9CTUPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDcpDQo+IA0KPj7CoMKg IC8vI2RlZmluZSBBU1RfVlJBTV9JTklUX1JFQURZwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIEJJVCg2KQ0KPiANCj4+IA0KPiANCj4+ICsvKiBEZWZpbmUgZm9yIFNvYyBzY3JhdGNoZWQg cmVnIHVzZWQgb24gQVNURFAgKi8NCj4gDQo+PiArI2RlZmluZSBBU1RfRFBfUEhZX1NMRUVQwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoNCkNCj4gDQo+PiArI2Rl ZmluZSBBU1RfRFBfVklERU9fRU5BQkxFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDAp DQo+IA0KPj4gKw0KPiANCj4+ICsjZGVmaW5lIEFTVF9EUF9QT1dFUl9PTsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRydWUNCj4gDQo+PiArI2RlZmluZSBBU1RfRFBfUE9X RVJfT0ZGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlDQo+IA0KPj4g Kw0KPiANCj4+ICsvKg0KPiANCj4+ICsgKiBDUkQxW2I1XTogRFAgTUNVIEZXIGlzIGV4ZWN1dGlu Zw0KPiANCj4+ICsgKiBDUkRDW2IwXTogRFAgbGluayBzdWNjZXNzDQo+IA0KPj4gKyAqIENSREZb YjBdOiBEUCBIUEQNCj4gDQo+PiArICogQ1JFNVtiMF06IEhvc3QgcmVhZGluZyBFRElEIHByb2Nl c3MgaXMgZG9uZcKgICovDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfTUNVX0ZXX0VYRUNVVElOR8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDUpDQo+IA0KPj4gKyNk ZWZpbmUgQVNURFBfTElOS19TVUNDRVNTwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQklUKDApDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfSFBEwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMCkNCj4gDQo+PiArI2RlZmluZSBBU1REUF9IT1NUX0VE SURfUkVBRF9ET05FwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPiANCj4+ ICsjZGVmaW5lIEFTVERQX0hPU1RfRURJRF9SRUFEX0RPTkVfTUFTS8KgwqDCoCBHRU5NQVNLKDAs IDApDQo+IA0KPj4gKw0KPiANCj4+ICsvKg0KPiANCj4+ICsgKiBDUkI4W2IxXTogRW5hYmxlIFZT WU5DIG9mZg0KPiANCj4+ICsgKiBDUkI4W2IwXTogRW5hYmxlIEhTWU5DIG9mZg0KPiANCj4+ICsg Ki8NCj4gDQo+PiArI2RlZmluZSBBU1RfRFBNU19WU1lOQ19PRkbCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDEpDQo+IA0KPj4g KyNkZWZpbmUgQVNUX0RQTVNfSFNZTkNfT0ZGwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPiANCj4+ICsNCj4gDQo+PiAr LyoNCj4gDQo+PiArICogQ1JERltiNF06IE1pcnJvciBvZiBBU1RfRFBfVklERU9fRU5BQkxFDQo+ IA0KPj4gKyAqIFByZWNvbmRpdGlvbjrCoCBBLiB+QVNUX0RQX1BIWV9TTEVFUMKgICYmDQo+IA0K Pj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCLiBE UF9IUEQgJiYNCj4gDQo+PiArICrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEMuIERQX0xJTktfU1VDQ0VTUw0KPiANCj4+ICsgKi8NCj4gDQo+PiArI2RlZmlu ZSBBU1REUF9NSVJST1JfVklERU9fRU5BQkxFwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEJJVCg0KQ0KPiANCj4+ICsNCj4gDQo+PiArI2RlZmluZSBBU1REUF9FRElEX1JFQURfUE9JTlRF Ul9NQVNLwqAgR0VOTUFTSyg3LCAwKQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQX0VESURfVkFMSURf RkxBR19NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soMCwgMCkNCj4g DQo+PiArI2RlZmluZSBBU1REUF9FRElEX1JFQURfREFUQV9NQVNLwqDCoMKgwqDCoMKgwqAgR0VO TUFTSyg3LCAwKQ0KPiANCj4+ICsNCj4gDQo+PiArLyoNCj4gDQo+PiArICogQVNURFAgc2V0bW9k ZSByZWdpc3RlcnM6DQo+IA0KPj4gKyAqIENSRTBbNzowXTogTUlTQzAgKCgweDAwOiAxOC1icHAp IG9yICgweDIwOiAyNC1icHApDQo+IA0KPj4gKyAqIENSRTFbNzowXTogTUlTQzEgKGRlZmF1bHQ6 IDB4MDApDQo+IA0KPj4gKyAqIENSRTJbNzowXTogdmlkZW8gZm9ybWF0IGluZGV4ICgweDAwIH4g MHgyMCBvciAweDQwIH4gMHg1MCnCoCAqLw0KPiANCj4+ICsjZGVmaW5lIEFTVERQX01JU0MwXzI0 YnBwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg1KQ0KPiANCj4+ICsj ZGVmaW5lIEFTVERQX01JU0MxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDANCj4gDQo+PiArI2RlZmluZSBBU1REUF9DTEVBUl9NQVNL wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0soNywgMCkNCj4gDQo+ PiArDQo+IA0KPj4gKy8qDQo+IA0KPj4gKyAqIEFTVERQIHJlc291bHRpb24gdGFibGU6DQo+IA0K Pj4gKyAqIEVYOsKgIEFTVERQX0FfQl9DOg0KPiANCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBBOiBSZXNvbHV0aW9uDQo+IA0KPj4gKyAqwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEI6IFJlZnJlc2ggUmF0ZQ0KPiANCj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBDOiBNaXNjIGluZm9ybWF0aW9uLCBzdWNoIGFzIENWVCwgUmVkdWNlIEJsYW5r ZWQNCj4gDQo+PiArICovDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfNjQweDQ4MF82MMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIDB4MDANCj4gDQo+PiArI2RlZmluZSBBU1REUF82NDB4NDgwXzcy wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwMQ0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzY0 MHg0ODBfNzXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDAyDQo+IA0KPj4gKyNkZWZpbmUg QVNURFBfNjQweDQ4MF84NcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDMNCj4gDQo+PiAr I2RlZmluZSBBU1REUF84MDB4NjAwXzU2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNA0K PiANCj4+ICsjZGVmaW5lIEFTVERQXzgwMHg2MDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAweDA1DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfODAweDYwMF83MsKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIDB4MDYNCj4gDQo+PiArI2RlZmluZSBBU1REUF84MDB4NjAwXzc1wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgMHgwNw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzgwMHg2MDBfODXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDA4DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTAy NHg3NjhfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDkNCj4gDQo+PiArI2RlZmluZSBBU1RE UF8xMDI0eDc2OF83MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwQQ0KPiANCj4+ICsjZGVmaW5l IEFTVERQXzEwMjR4NzY4Xzc1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDBCDQo+IA0KPj4gKyNk ZWZpbmUgQVNURFBfMTAyNHg3NjhfODXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MEMNCj4gDQo+ PiArI2RlZmluZSBBU1REUF8xMjgweDEwMjRfNjDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwRA0KPiAN Cj4+ICsjZGVmaW5lIEFTVERQXzEyODB4MTAyNF83NcKgwqDCoMKgwqDCoMKgwqDCoCAweDBFDQo+ IA0KPj4gKyNkZWZpbmUgQVNURFBfMTI4MHgxMDI0Xzg1wqDCoMKgwqDCoMKgwqDCoMKgIDB4MEYN Cj4gDQo+PiArI2RlZmluZSBBU1REUF8xNjAweDEyMDBfNjDCoMKgwqDCoMKgwqDCoMKgwqAgMHgx MA0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzMyMHgyNDBfNjDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDExDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfNDAweDMwMF82MMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIDB4MTINCj4gDQo+PiArI2RlZmluZSBBU1REUF81MTJ4Mzg0XzYwwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxMw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE5MjB4MTIw MF82MMKgwqDCoMKgwqDCoMKgwqDCoCAweDE0DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTkyMHgx MDgwXzYwwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTUNCj4gDQo+PiArI2RlZmluZSBBU1REUF8xMjgw eDgwMF82MMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNg0KPiANCj4+ICsjZGVmaW5lIEFTVERQ XzEyODB4ODAwXzYwX1JCwqDCoMKgwqAgMHgxNw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE0NDB4 OTAwXzYwwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDE4DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBf MTQ0MHg5MDBfNjBfUkLCoMKgwqDCoCAweDE5DQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTY4MHgx MDUwXzYwwqDCoMKgwqDCoMKgwqDCoMKgIDB4MUENCj4gDQo+PiArI2RlZmluZSBBU1REUF8xNjgw eDEwNTBfNjBfUkLCoMKgIDB4MUINCj4gDQo+PiArI2RlZmluZSBBU1REUF8xNjAweDkwMF82MMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxQw0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzE2MDB4OTAw XzYwX1JCwqDCoMKgwqAgMHgxRA0KPiANCj4+ICsjZGVmaW5lIEFTVERQXzEzNjZ4NzY4XzYwwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAweDFFDQo+IA0KPj4gKyNkZWZpbmUgQVNURFBfMTE1Mng4NjRf NzXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MUYNCj4gDQo+PiArDQo+IA0KPj7CoMKgIGludCBh c3RfbW1faW5pdChzdHJ1Y3QgYXN0X3ByaXZhdGUgKmFzdCk7DQo+IA0KPj4gDQo+IA0KPj7CoMKg IC8qIGFzdCBwb3N0ICovDQo+IA0KPj4gQEAgLTM4MSw0ICs0ODksMTEgQEAgdm9pZCBhc3RfaW5p dF8zcmR0eChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KTsNCj4gDQo+PsKgwqAgLyogYXN0X2kyYy5j ICovDQo+IA0KPj4gwqDCoHN0cnVjdCBhc3RfaTJjX2NoYW4gKmFzdF9pMmNfY3JlYXRlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYpOw0KPiANCj4+IA0KPiANCj4+ICsvKiBhc3BlZWQgRFAgKi8NCj4g DQo+PiAraW50IGFzdF9hc3RkcF9yZWFkX2VkaWQoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdTgg KmVkaWRkYXRhKTsgdm9pZA0KPiANCj4+ICthc3RfZHBfbGF1bmNoKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsIHU4IGJQb3dlcik7IHZvaWQNCj4gDQo+PiArYXN0X2RwX3Bvd2VyX29uX29mZihzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIG5vKTsgdm9pZA0KPiANCj4+ICthc3RfZHBfc2V0X29u X29mZihzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCBib29sIG5vKTsgdm9pZA0KPiANCj4+ICthc3Rf ZHBfc2V0X21vZGUoc3RydWN0IGRybV9jcnRjICpjcnRjLCBzdHJ1Y3QgYXN0X3ZiaW9zX21vZGVf aW5mbw0KPiANCj4+ICsqdmJpb3NfbW9kZSk7DQo+IA0KPj4gKw0KPiANCj4+wqDCoCAjZW5kaWYN Cj4gDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IA0K Pj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tYWluLmMgaW5kZXggMjJlOWUyZDNjLi4xMTEz ZWUxY2IgMTAwNjQ0DQo+IA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5j DQo+IA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbWFpbi5jDQo+IA0KPj4gQEAg LTIzMiw3ICsyMzIsNyBAQCBzdGF0aWMgaW50IGFzdF9kZXRlY3RfY2hpcChzdHJ1Y3QgZHJtX2Rl dmljZSANCj4+ICpkZXYsIGJvb2wgKm5lZWRfcG9zdCkNCj4gDQo+PiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3QtPnR4X2NoaXBfdHlwZSA9IEFT VF9UWF9TSUwxNjQ7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiANCj4gDQo+ PiAtwqDCoMKgIGlmICgoYXN0LT5jaGlwID09IEFTVDIzMDApIHx8IChhc3QtPmNoaXAgPT0gQVNU MjQwMCkpIHsNCj4gDQo+PiArwqDCoCBpZiAoKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0 LT5jaGlwID09IEFTVDI0MDApIHx8IA0KPj4gKyhhc3QtPmNoaXANCj4gDQo+PiArPT0gQVNUMjUw MCkpIHsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qDQo+IA0K Pj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCDCoCogT24gQVNUMjMwMCBhbmQg MjQwMCwgbG9vayB0aGUgY29uZmlndXJhdGlvbiBzZXQgDQo+PmJ5IHRoZSBTb0MgaW4NCj4gDQo+ PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIMKgKiB0aGUgU09DIHNjcmF0Y2gg cmVnaXN0ZXIgIzEgYml0cyAxMTo4IA0KPj4oaW50ZXJlc3RpbmdseSBtYXJrZWQgQEANCj4gDQo+ PiAtMjU2LDcgKzI1Niw4IEBAIHN0YXRpYyBpbnQgYXN0X2RldGVjdF9jaGlwKHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYsIA0KPj4gYm9vbCAqbmVlZF9wb3N0KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSAweDBjOg0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdC0+dHhfY2hpcF90eXBlID0gQVNU X1RYX0RQNTAxOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0K PiANCj4+IC3CoMKgwqAgfQ0KPiANCj4+ICvCoMKgIH0gZWxzZSBpZiAoYXN0LT5jaGlwID09IEFT VDI2MDApDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9sYXVuY2goJmFzdC0+ YmFzZSwgMCk7DQo+IA0KPj4gDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIC8qIFByaW50IHN0 dWZmIGZvciBkaWFnbm9zdGljIHB1cnBvc2VzICovDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKg IHN3aXRjaChhc3QtPnR4X2NoaXBfdHlwZSkgew0KPiANCj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMNCj4gDQo+PiBiL2RyaXZlcnMvZ3B1L2RybS9hc3QvYXN0 X21vZGUuYyBpbmRleCA0NWI1NmIzOWEuLjQ3Mjg4MjViNyAxMDA2NDQNCj4gDQo+PiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMNCj4gDQo+PiArKysgYi9kcml2ZXJzL2dwdS9k cm0vYXN0L2FzdF9tb2RlLmMNCj4gDQo+PiBAQCAtOTg4LDIxICs5ODgsNDEgQEAgc3RhdGljIGlu dCBhc3RfY3Vyc29yX3BsYW5lX2luaXQoc3RydWN0IA0KPj4gYXN0X3ByaXZhdGUgKmFzdCkNCj4g DQo+PsKgwqAgc3RhdGljIHZvaWQgYXN0X2NydGNfZHBtcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMs IGludCBtb2RlKQ0KPiANCj4+wqDCoCB7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHN0cnVj dCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4gDQo+PiAr wqDCoCB1OCBjaCA9IEFTVF9EUE1TX1ZTWU5DX09GRiB8IEFTVF9EUE1TX0hTWU5DX09GRjsNCj4g DQo+PiANCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgLyogVE9ETzogTWF5YmUgY29udHJvbCBk aXNwbGF5IHNpZ25hbCBnZW5lcmF0aW9uIHdpdGgNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAg wqAqwqDCoMKgwqDCoMKgIFN5bmMgRW5hYmxlIChiaXQgQ1IxNy43KS4NCj4gDQo+PsKgwqAgwqDC oMKgwqDCoMKgwqAgwqAqLw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBzd2l0Y2ggKG1vZGUp IHsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX09OOg0KPiAN Cj4+IC3CoMKgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX1NUQU5EQlk6DQo+IA0KPj4gLcKgwqDCoCBj YXNlIERSTV9NT0RFX0RQTVNfU1VTUEVORDoNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg YXN0X3NldF9pbmRleF9yZWdfbWFzayhhc3QsIEFTVF9JT19TRVFfUE9SVCzCoCAweDAxLCAweGRm LCANCj4+ICswKTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9pbmRleF9y ZWdfbWFzayhhc3QsIEFTVF9JT19DUlRDX1BPUlQsIDB4YjYsIDB4ZmMsIA0KPj4gKzApOw0KPiAN Cj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+dHhfY2hpcF90 eXBlID09IEFTVF9UWF9EUDUwMSkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhc3Rfc2V0X2RwNTAxX3ZpZGVvX291dHB1dChjcnRjLT5k ZXYsIDEpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+ dHhfY2hpcF90eXBlID09IEFTVF9UWF9BU1REUCkgew0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0X2RwX3Bvd2VyX29uX29mZihjcnRjLT5kZXYsIEFTVF9E UF9QT1dFUl9PTik7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhc3Rfd2FpdF9mb3JfdnJldHJhY2UoYXN0KTsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9kcF9zZXRfb25fb2ZmKGNydGMtPmRldiwgMSk7DQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArDQo+IA0KPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgIGFzdF9jcnRjX2xvYWRfbHV0KGFzdCwgY3J0Yyk7DQo+IA0KPj7CoMKgIMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArwqDCoCBjYXNlIERSTV9N T0RFX0RQTVNfU1RBTkRCWToNCj4gDQo+PiArwqDCoCBjYXNlIERSTV9NT0RFX0RQTVNfU1VTUEVO RDoNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fTU9ERV9EUE1TX09GRjoNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2ggPSBtb2RlOw0KPiANCj4+wqDCoCDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+dHhfY2hpcF90eXBlID09IEFTVF9UWF9E UDUwMSkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBhc3Rfc2V0X2RwNTAxX3ZpZGVvX291dHB1dChjcnRjLT5kZXYsIDApOw0KPiANCj4+ wqDCoCDCoMKgwqDCoMKgwqDCoCDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4gDQo+PiArDQo+IA0K Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChhc3QtPnR4X2NoaXBfdHlwZSA9PSBBU1RfVFhf QVNURFApIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFz dF9kcF9zZXRfb25fb2ZmKGNydGMtPmRldiwgMCk7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBhc3RfZHBfcG93ZXJfb25fb2ZmKGNydGMtPmRldiwgQVNUX0RQ X1BPV0VSX09GRik7DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4gDQo+PiArDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBB U1RfSU9fU0VRX1BPUlQswqAgMHgwMSwgMHhkZiwgDQo+PiArMHgyMCk7DQo+IA0KPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIGFzdF9zZXRfaW5kZXhfcmVnX21hc2soYXN0LCBBU1RfSU9fQ1JUQ19Q T1JULCAweGI2LCAweGZjLCANCj4+ICtjaCk7DQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIH0N Cj4gDQo+PsKgwqAgfQ0KPiANCj4+IA0KPiANCj4+IEBAIC0xMDI3LDcgKzEwNDcsNyBAQCBhc3Rf Y3J0Y19oZWxwZXJfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2NydGMNCj4gDQo+PiAqY3J0YywgY29u c3Qgc3RydWN0IGRybV9kaXNwbGF5X21vZGUNCj4gDQo+PiANCj4gDQo+PsKgwqAgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICgoYXN0LT5jaGlwID09IEFTVDIxMDApIHx8IChhc3Qt PmNoaXAgPT0NCj4+QVNUMjIwMCkgfHwNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIMKgwqDCoMKgKGFzdC0+Y2hpcCA9PSBBU1QyMzAwKSB8fCAoYXN0LT5jaGlwID09 DQo+PkFTVDI0MDApIHx8DQo+IA0KPj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDCoMKgIChh c3QtPmNoaXAgPT0gQVNUMjUwMCkpIHsNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgwqDC oMKgIChhc3QtPmNoaXAgPT0gQVNUMjUwMCkgfHwgKGFzdC0+Y2hpcCA9PSBBU1QyNjAwKSkgew0K PiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGlmICgobW9kZS0+aGRpc3BsYXkgPT0gMTkyMCkgJiYgDQo+Pihtb2RlLT52ZGlzcGxheSA9PSAx MDgwKSkNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIE1PREVfT0s7DQo+IA0KPj4gDQo+IA0KPj4g QEAgLTExMTAsNiArMTEzMCw3IEBAIGFzdF9jcnRjX2hlbHBlcl9hdG9taWNfZmx1c2goc3RydWN0 IGRybV9jcnRjIA0KPj4gKmNydGMsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBh c3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUoY3J0Yy0+ZGV2KTsNCj4gDQo+PsKgwqAg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGFzdF9jcnRjX3N0YXRlICphc3RfY3J0Y19zdGF0ZSA9IA0K Pj50b19hc3RfY3J0Y19zdGF0ZShjcnRjX3N0YXRlKTsNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGFzdF9jcnRjX3N0YXRlICpvbGRfYXN0X2NydGNfc3RhdGUgPQ0KPiANCj4+IHRv X2FzdF9jcnRjX3N0YXRlKG9sZF9jcnRjX3N0YXRlKTsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgYXN0 X3ZiaW9zX21vZGVfaW5mbyAqdmJpb3NfbW9kZV9pbmZvID0NCj4gDQo+PiArJmFzdF9jcnRjX3N0 YXRlLT52Ymlvc19tb2RlX2luZm87DQo+IA0KPj4gDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKg IC8qDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgKiBUaGUgZ2FtbWEgTFVUIGhhcyB0byBi ZSByZWxvYWRlZCBhZnRlciBjaGFuZ2luZyB0aGUgDQo+PnByaW1hcnkgQEANCj4gDQo+PiAtMTEx Nyw2ICsxMTM4LDEwIEBAIGFzdF9jcnRjX2hlbHBlcl9hdG9taWNfZmx1c2goc3RydWN0IGRybV9j cnRjIA0KPj4gKmNydGMsDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIMKgKi8NCj4gDQo+PsKg wqAgwqDCoMKgwqDCoMKgwqAgaWYgKG9sZF9hc3RfY3J0Y19zdGF0ZS0+Zm9ybWF0ICE9IGFzdF9j cnRjX3N0YXRlLT5mb3JtYXQpDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBhc3RfY3J0Y19sb2FkX2x1dChhc3QsIGNydGMpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDC oCAvL1NldCBBc3BlZWQgRGlzcGxheS1Qb3J0DQo+IA0KPj4gK8KgwqAgaWYgKGFzdC0+dHhfY2hp cF90eXBlID09IEFTVF9UWF9BU1REUCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXN0 X2RwX3NldF9tb2RlKGNydGMsIHZiaW9zX21vZGVfaW5mbyk7DQo+IA0KPj7CoMKgIH0NCj4gDQo+ PiANCj4gDQo+PsKgwqAgc3RhdGljIHZvaWQNCj4gDQo+PiBAQCAtMTUyNyw2ICsxNTUyLDkzIEBA IHN0YXRpYyBpbnQgYXN0X2RwNTAxX291dHB1dF9pbml0KHN0cnVjdCANCj4+IGFzdF9wcml2YXRl ICphc3QpDQo+IA0KPj7CoMKgIMKgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPiANCj4+wqDCoCB9 DQo+IA0KPj4gDQo+IA0KPj4gKy8qDQo+IA0KPj4gKyAqIEFTUEVFRCBEaXNwbGF5LVBvcnQgQ29u bmVjdG9yDQo+IA0KPj4gKyAqLw0KPiANCj4+ICsNCj4gDQo+PiArc3RhdGljIGludCBhc3RfYXN0 ZHBfY29ubmVjdG9yX2hlbHBlcl9nZXRfbW9kZXMoc3RydWN0IGRybV9jb25uZWN0b3INCj4gDQo+ PiArKmNvbm5lY3Rvcikgew0KPiANCj4+ICvCoMKgIHZvaWQgKmVkaWQ7DQo+IA0KPj4gKw0KPiAN Cj4+ICvCoMKgIGludCBzdWNjOw0KPiANCj4+ICvCoMKgIGludCBjb3VudDsNCj4gDQo+PiArDQo+ IA0KPj4gK8KgwqAgZWRpZCA9IGttYWxsb2MoRURJRF9MRU5HVEgsIEdGUF9LRVJORUwpOw0KPiAN Cj4+ICvCoMKgIGlmICghZWRpZCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBl cnJfZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eTsNCj4gDQo+PiArDQo+IA0KPj4g K8KgwqAgc3VjYyA9IGFzdF9hc3RkcF9yZWFkX2VkaWQoY29ubmVjdG9yLT5kZXYsIGVkaWQpOw0K PiANCj4+ICvCoMKgIGlmIChzdWNjIDwgMCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg Z290byBlcnJfa2ZyZWU7DQo+IA0KPj4gKw0KPiANCj4+ICvCoMKgIGRybV9jb25uZWN0b3JfdXBk YXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBlZGlkKTsNCj4gDQo+PiArwqDCoCBjb3VudCA9 IGRybV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOw0KPiANCj4+ICvCoMKgIGtmcmVl KGVkaWQpOw0KPiANCj4+ICsNCj4gDQo+PiArwqDCoCByZXR1cm4gY291bnQ7DQo+IA0KPj4gKw0K PiANCj4+ICtlcnJfa2ZyZWU6DQo+IA0KPj4gK8KgwqAga2ZyZWUoZWRpZCk7DQo+IA0KPj4gK2Vy cl9kcm1fY29ubmVjdG9yX3VwZGF0ZV9lZGlkX3Byb3BlcnR5Og0KPiANCj4+ICvCoMKgIGRybV9j b25uZWN0b3JfdXBkYXRlX2VkaWRfcHJvcGVydHkoY29ubmVjdG9yLCBOVUxMKTsNCj4gDQo+PiAr wqDCoCByZXR1cm4gMDsNCj4gDQo+PiArfQ0KPiANCj4+ICsNCj4gDQo+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fY29ubmVjdG9yX2hlbHBlcl9mdW5jcyANCj4+ICthc3RfYXN0ZHBfY29ubmVj dG9yX2hlbHBlcl9mdW5jcyA9IHsNCj4gDQo+PiArwqDCoCAuZ2V0X21vZGVzID0gYXN0X2FzdGRw X2Nvbm5lY3Rvcl9oZWxwZXJfZ2V0X21vZGVzLA0KPiANCj4+ICt9Ow0KPiANCj4+ICsNCj4gDQo+ PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fY29ubmVjdG9yX2Z1bmNzIGFzdF9hc3RkcF9jb25u ZWN0b3JfZnVuY3MgPSANCj4+ICt7DQo+IA0KPj4gK8KgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPiANCj4+ICvCoMKgIC5maWxsX21vZGVzID0gZHJtX2hl bHBlcl9wcm9iZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPiANCj4+ICvCoMKgIC5kZXN0cm95 ID0gZHJtX2Nvbm5lY3Rvcl9jbGVhbnVwLA0KPiANCj4+ICvCoMKgIC5hdG9taWNfZHVwbGljYXRl X3N0YXRlID0NCj4+ICtkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0YXRl LA0KPiANCj4+ICvCoMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9DQo+PiArZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+IA0KPj4gK307DQo+IA0KPj4gKw0KPiAN Cj4+ICtzdGF0aWMgaW50IGFzdF9hc3RkcF9jb25uZWN0b3JfaW5pdChzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2LCBzdHJ1Y3QNCj4gDQo+PiArZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yKSB7DQo+IA0K Pj4gK8KgwqAgaW50IHJldDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgcmV0ID0gZHJtX2Nvbm5l Y3Rvcl9pbml0KGRldiwgY29ubmVjdG9yLCANCj4+ICsmYXN0X2FzdGRwX2Nvbm5lY3Rvcl9mdW5j cywNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBEUk1fTU9ERV9DT05ORUNUT1JfRGlzcGxheVBvcnQpOw0KPiANCj4+ICvCoMKgIGlm IChyZXQpDQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+IA0KPj4g Kw0KPiANCj4+ICvCoMKgIGRybV9jb25uZWN0b3JfaGVscGVyX2FkZChjb25uZWN0b3IsDQo+IA0K Pj4gKyZhc3RfYXN0ZHBfY29ubmVjdG9yX2hlbHBlcl9mdW5jcyk7DQo+IA0KPj4gKw0KPiANCj4+ ICvCoMKgIGNvbm5lY3Rvci0+aW50ZXJsYWNlX2FsbG93ZWQgPSAwOw0KPiANCj4+ICvCoMKgIGNv bm5lY3Rvci0+ZG91Ymxlc2Nhbl9hbGxvd2VkID0gMDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAg Y29ubmVjdG9yLT5wb2xsZWQgPSBEUk1fQ09OTkVDVE9SX1BPTExfQ09OTkVDVDsNCj4gDQo+PiAr DQo+IA0KPj4gK8KgwqAgcmV0dXJuIDA7DQo+IA0KPj4gK30NCj4gDQo+PiArDQo+IA0KPj4gK3N0 YXRpYyBpbnQgYXN0X2FzdGRwX291dHB1dF9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KSB7 DQo+IA0KPj4gK8KgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRldiA9ICZhc3QtPmJhc2U7DQo+IA0K Pj4gK8KgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjID0gJmFzdC0+Y3J0YzsNCj4gDQo+PiArwqDC oCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmYXN0LT5vdXRwdXQuYXN0ZHAuZW5jb2Rl cjsNCj4gDQo+PiArwqDCoCBzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yID0gJmFzdC0+ b3V0cHV0LmFzdGRwLmNvbm5lY3RvcjsNCj4gDQo+PiArwqDCoCBpbnQgcmV0Ow0KPiANCj4+ICsN Cj4gDQo+PiArwqDCoCByZXQgPSBkcm1fc2ltcGxlX2VuY29kZXJfaW5pdChkZXYsIGVuY29kZXIs IA0KPj4gK0RSTV9NT0RFX0VOQ09ERVJfVE1EUyk7DQo+IA0KPj4gK8KgwqAgaWYgKHJldCkNCj4g DQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4gDQo+PiArwqDCoCBlbmNv ZGVyLT5wb3NzaWJsZV9jcnRjcyA9IGRybV9jcnRjX21hc2soY3J0Yyk7DQo+IA0KPj4gKw0KPiAN Cj4+ICvCoMKgIHJldCA9IGFzdF9hc3RkcF9jb25uZWN0b3JfaW5pdChkZXYsIGNvbm5lY3Rvcik7 DQo+IA0KPj4gK8KgwqAgaWYgKHJldCkNCj4gDQo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsNCj4gDQo+PiArDQo+IA0KPj4gK8KgwqAgcmV0ID0gZHJtX2Nvbm5lY3Rvcl9hdHRh Y2hfZW5jb2Rlcihjb25uZWN0b3IsIGVuY29kZXIpOw0KPiANCj4+ICvCoMKgIGlmIChyZXQpDQo+ IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+IA0KPj4gKw0KPiANCj4+ ICvCoMKgIHJldHVybiAwOw0KPiANCj4+ICt9DQo+IA0KPj4gKw0KPiANCj4+wqDCoCAvKg0KPiAN Cj4+wqDCoMKgICogTW9kZSBjb25maWcNCj4gDQo+PsKgwqDCoCAqLw0KPiANCj4+IEBAIC0xNTYz LDcgKzE2NzUsOCBAQCBpbnQgYXN0X21vZGVfY29uZmlnX2luaXQoc3RydWN0IGFzdF9wcml2YXRl 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 aXQoc3RydWN0IGFzdF9wcml2YXRlDQo+PiAqYXN0KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDC oCBjYXNlIEFTVF9UWF9EUDUwMToNCj4gDQo+PsKgwqAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHJldCA9IGFzdF9kcDUwMV9vdXRwdXRfaW5pdChhc3QpOw0KPiANCj4+wqDCoCDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYnJlYWs7DQo+IA0KPj4gK8KgwqAgY2FzZSBBU1Rf VFhfQVNURFA6DQo+IA0KPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHJldCA9IGFzdF9hc3RkcF9v dXRwdXRfaW5pdChhc3QpOw0KPiANCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBicmVhazsNCj4g DQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgfQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBpZiAo cmV0KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJl dDsNCj4gDQo+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+ IA0KPj4gYi9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9wb3N0LmMgaW5kZXggYjVkOTJmNjUyLi4w YWE5Y2YwZmIgMTAwNjQ0DQo+IA0KPj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9z dC5jDQo+IA0KPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfcG9zdC5jDQo+IA0KPj4g QEAgLTM3OSw3ICszNzksOSBAQCB2b2lkIGFzdF9wb3N0X2dwdShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2KQ0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoCBhc3RfZW5hYmxlX21taW8oZGV2KTsNCj4g DQo+PsKgwqAgwqDCoMKgwqDCoMKgwqAgYXN0X3NldF9kZWZfZXh0X3JlZyhkZXYpOw0KPiANCj4+ IA0KPiANCj4+IC3CoMKgwqAgaWYgKGFzdC0+Y29uZmlnX21vZGUgPT0gYXN0X3VzZV9wMmEpIHsN Cj4gDQo+PiArwqDCoCBpZiAoYXN0LT5jaGlwID09IEFTVDI2MDApIHsNCj4gDQo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqAgYXN0X2RwX2xhdW5jaChkZXYsIDEpOw0KPiANCj4+ICvCoMKgIH0gZWxz ZSBpZiAoYXN0LT5jb25maWdfbW9kZSA9PSBhc3RfdXNlX3AyYSkgew0KPiANCj4+wqDCoCDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKGFzdC0+Y2hpcCA9PSBBU1QyNTAwKQ0KPiAN Cj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGFz dF9wb3N0X2NoaXBfMjUwMChkZXYpOw0KPiANCj4+wqDCoCDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZWxzZSBpZiAoYXN0LT5jaGlwID09IEFTVDIzMDAgfHwgYXN0LT5jaGlwID09DQo+ PkFTVDI0MDApDQo+IA0KPj4gDQo+IA0KPj4gYmFzZS1jb21taXQ6IGM1NGIzOWE1NjUyMjc1Mzhj NTJlYWQyMzQ5ZWIxN2Q1NGFhZGQ2ZjcNCj4gDQo+PiAtLQ0KPiANCj4+IDIuMjcuMA0KPiANCj4+ IA0KPiANCj4gLS0NCj4gDQo+IFRob21hcyBaaW1tZXJtYW5uDQo+IA0KPiBHcmFwaGljcyBEcml2 ZXIgRGV2ZWxvcGVyDQo+IA0KPiBTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgN Cj4gDQo+IE1heGZlbGRzdHIuIDUsIDkwNDA5IE7DvHJuYmVyZywgR2VybWFueQ0KPiANCj4gKEhS QiAzNjgwOSwgQUcgTsO8cm5iZXJnKQ0KPiANCj4gR2VzY2jDpGZ0c2bDvGhyZXI6IEl2byBUb3Rl dg0KPiANCg0KLS0NClRob21hcyBaaW1tZXJtYW5uDQpHcmFwaGljcyBEcml2ZXIgRGV2ZWxvcGVy DQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgNCk1heGZlbGRzdHIuIDUsIDkw NDA5IE7DvHJuYmVyZywgR2VybWFueQ0KKEhSQiAzNjgwOSwgQUcgTsO8cm5iZXJnKQ0KR2VzY2jD pGZ0c2bDvGhyZXI6IEl2byBUb3Rldg0K