From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 8F9EF48902 for ; Thu, 21 Dec 2023 11:38:49 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5051868D0CF; Thu, 21 Dec 2023 13:38:48 +0200 (EET) Received: from mgamail.intel.com (mgamail.intel.com [192.55.52.136]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 512E868CBCB for ; Thu, 21 Dec 2023 13:38:40 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1703158725; x=1734694725; h=from:to:subject:date:message-id:references:in-reply-to: content-transfer-encoding:mime-version; bh=iDsfZ7cfPKJm8WspPch4Or094WH6Vrjn9FzWkEy124Y=; b=ce6hiOBZbL3ZkPJKFeP9f5aDQlkNG4hwrw2kT033CntZR2ztaLV96i/S QhSvPo1Lphc7XhUB2x6GSUw69nlUKYktUsFAbBrORzsntv3AV4oH7h6KE SSFNPZd9K5tYlr8OPNqO3lkMC36IDELhpONNEZelRj6ExZD1HhP473l1J NLVHrc03uorr2ahA/TJ/sz4k5XSySrjOtU5QNWaXi7unvk5FOO5pWhbC6 c+cFvo3S1x5Rg7jAOFh5VvfTVEu5V44XvrYSn5Ijx4OP/CV2NW5uuCLb4 haX4/81eyprZ9V0Er8MdSfSIEX4HIkT1rpsmzPX0ipmNe5zWzrFXrTZzg w==; X-IronPort-AV: E=McAfee;i="6600,9927,10930"; a="375450272" X-IronPort-AV: E=Sophos;i="6.04,293,1695711600"; d="scan'208";a="375450272" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 21 Dec 2023 03:38:37 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10930"; a="810940389" X-IronPort-AV: E=Sophos;i="6.04,293,1695711600"; d="scan'208";a="810940389" Received: from fmsmsx602.amr.corp.intel.com ([10.18.126.82]) by orsmga001.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 21 Dec 2023 03:38:37 -0800 Received: from fmsmsx611.amr.corp.intel.com (10.18.126.91) by fmsmsx602.amr.corp.intel.com (10.18.126.82) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Thu, 21 Dec 2023 03:38:36 -0800 Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx611.amr.corp.intel.com (10.18.126.91) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Thu, 21 Dec 2023 03:38:36 -0800 Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.169) by edgegateway.intel.com (192.55.55.70) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Thu, 21 Dec 2023 03:38:35 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hA/nYwrcYdn+6f9v2Hy7vc63jC4pyfw3xrR1+RHToenBflmW+VwRP+Lz0VcFfi6H0HGCX0oZM50OXqzKjLFR1Kp6aHzwV2FP/jlhlA3ljAobu3RcWsCC+mfQfXZBoDEJ+Jieoh+Bk/3HWb8mFQsn1hXn3WquyltgulsluIZWJMri56IzNCh0ukKS/mk107BWkp7iu3hmW8lPwmw/RE383EKiSKdtCaE1Tg38gJdvCrZaSxJF9zf8i2PVvhOz1oy+UkpyM3KvdZCPR2GxYRcfnCbfj+4DXpzr7Z8ijBfN6XKcXr5eelwuP9wPrIAxdP8cjHFrPla52r6Ic+knpgljRg== 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=iDsfZ7cfPKJm8WspPch4Or094WH6Vrjn9FzWkEy124Y=; b=LzzVGxXB8NdIfceh7y1TkgJ+mi1DnwsrOpDXaxjUsSm044SGP44c3gzwkQN8D4u/F7LP6YhrLDc0fEijg9aaC/7p2FDbraswSKH723G5oMsZTLdFM4O4RIw9paldlD6Y08et90BDIPTvbAMdpDQBovIwIBQb8K8z3/MPV758cmkavwY0FDBAXk7FVt62AnSvBMcRsxBvhW9NlaudF5qjfc7WEilsQcoIIqFhoTPa1frcJ0Osb+e+u0vPAOgmbegJfhUXr54dET28r3fAsj1fbt2eLbEmghhASQPmHF9IBh3wABGex66/2D0QqRylgxYidrrQjmsiRODqmYuIv8TMYQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN6PR11MB2990.namprd11.prod.outlook.com (2603:10b6:805:cf::21) by SA1PR11MB6686.namprd11.prod.outlook.com (2603:10b6:806:259::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.21; Thu, 21 Dec 2023 11:38:32 +0000 Received: from SN6PR11MB2990.namprd11.prod.outlook.com ([fe80::ad9a:2554:d386:75e5]) by SN6PR11MB2990.namprd11.prod.outlook.com ([fe80::ad9a:2554:d386:75e5%3]) with mapi id 15.20.7113.016; Thu, 21 Dec 2023 11:38:32 +0000 From: "Wu, Tong1" To: FFmpeg development discussions and patches Thread-Topic: [FFmpeg-devel] [PATCH v12 1/9] libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 Thread-Index: AQHaJ0d5UDPgvnQp/kKzlySAm9lPBrCuqDuAgATZKoCAAAhxAIAAKTqw Date: Thu, 21 Dec 2023 11:38:32 +0000 Message-ID: References: <20231205065034.1621-1-tong1.wu@intel.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN6PR11MB2990:EE_|SA1PR11MB6686:EE_ x-ms-office365-filtering-correlation-id: 61cd95d2-1c16-4e92-dcfd-08dc02195c0b x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: vesHcA+Gk5rnb7TN2pEkuVHnYCRQk3fliL1EuM5pVgQQs4Lz0g1Yy9V0p3+JoSMQMjo1FaDVH4jP4/nm4UPbKe9225NZMzZTaTdxrL5ZEsVVNb3wtzouw/XgDcGFJNkmu2pOmwlgR4YxaBwD8/Dkn51dKxsuZzu+KiYmcQ7PzrZ55Dd0diKeItBf54JNnBTt1IUaHfPrQpktCmcHDziCGYo24jaRZykv3KD/zOI8XFNYhf13E+wRcEjrzxa/3MwfL0eBaGZdEECy12P/PQu8YTErQJg70w7Gr6B3lQ2+S4ccEoroTt/4wDJ8cXpTxb81QF+NN4s4J1+nIoenOaV/2/uUtGPEB7dcbFBDMU5vlDLSjuI7tP0A1qPjQJ7ViBGdBKPpfNayW8pW3zhUKYjFIurVBSMj1zjk8ci+msM/x7k1+THZZKsyivEsWB3q2ymlbpABmV/t/RwwGA1nJVR6mdhExZKtTuJyGSFFoUiu4woZ0piSmImFrBbyCUOWGgF5hbkK4oyX3ceQWe2GhO4UP4McfjFdws9sCWeW7GyV4gajk4Ztsf0jF7cLcj71roIOX89BmwtYtmtO0cRNPyB1voc7TCSBldypHouJ++qu2tossl8buqPUAU+BpLbuImG+1iyOpTETIF4ZjV9lxA/CQdf9tct2epCVoogFW6jKxv8Mm2eEhv4Zz+VjdA6Zu4UZohSHhwP4lsg+ewKAk+ULs0kT5IASVsgZU1pTuzZ6UKI= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN6PR11MB2990.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(366004)(376002)(39860400002)(396003)(136003)(346002)(230922051799003)(230273577357003)(230173577357003)(64100799003)(1800799012)(186009)(451199024)(5660300002)(6506007)(9686003)(30864003)(8936002)(8676002)(19627235002)(45080400002)(26005)(33656002)(52536014)(38070700009)(83380400001)(2906002)(76116006)(66946007)(66556008)(66476007)(66446008)(64756008)(316002)(6916009)(966005)(4001150100001)(71200400001)(55016003)(7696005)(66899024)(86362001)(478600001)(122000001)(38100700002)(41300700001)(82960400001)(2004002)(559001)(579004)(309714004); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?b2lVWTdyTEdWeXVMWG9xZGpxV3RTWkl6NWlxc3htWTdxY0NUcVdoNjRoTHF1?= =?utf-8?B?L2tUNmJ1NVNiVy82UVdDRDArSkY2Y2RyUm81WmhtQVBPTnRONGg1cFNnVGt2?= =?utf-8?B?M3RNdGNLTkQxOHRqWWxuQk1SdS9OMEdMbGthMzdOUWM5S2dZb21aT2tQbXFv?= =?utf-8?B?Q0s1RXhua0ZyOUVtWGJVYVdlaXJQZUQ5NGUrbVhJL01RYysyalBYSnNtMU12?= =?utf-8?B?dGFKRUJ3S3lOUjNDNnA2ZUM1bWhrZ0pFanh5dUZqTHh6YmVaNkVqWVUyNThh?= =?utf-8?B?bkd4RTIrOUM0VllTWVdwOU9WM2xuNXU2R2tGcnE5ZVlSSXBHdXQrN1FPcGVM?= =?utf-8?B?RU9lSERZVlFvWmFkZ0hCQVdJWTIyYmVndTBSV05BTUg1bHlFUWJrZXI0d0hT?= =?utf-8?B?eWtyWjkrQ01hd0ltMWd5ejlxUk1FWldlMWozMnJWRDc4VVRxaXlDYllGTWx5?= =?utf-8?B?SFdmYXFjdVNJRS9iL3pDSDMvektoRlJUeUMwYkZ1cE5kekVsYkE4VEh3eTMy?= =?utf-8?B?YlJnejdTMzloOUM1bGFkVFdkazc2VCt5U1dYSmdYNHpaRFlxb1A1bkNsaVMv?= =?utf-8?B?VFF4L1RqVUVzUzRWVk5uSVFFWTB4WTArbGw5Ymp1enByUWZKWE5USm8zZFRP?= =?utf-8?B?LzRheG1NVnozWmpkYzMzdkNHYXJSUDJPenFNNWgzSmc2RHAyYzF4M0p5QSsr?= =?utf-8?B?NkpxNUxablRhZ3FxOEl6MmdTb2lrSUZIMGpkTkk4bU9GbkxyTGRqWktnL1lu?= =?utf-8?B?TWpGcklqdE4vaDlOSWtYVkY3d0dYOG9TbnkxajBNSWtTL0RpWkUweFhUR3Vq?= =?utf-8?B?dGx4alczdnJWRUpPNE91UGlxMVl0M01xU0JObkE5TkpOSDhIQXAzU3JweVpo?= =?utf-8?B?WW1UekphTmIzenJhOWIwby9mZ09ObzlQR05hbURaWjNGS1V5YkY5SkpWMTdO?= =?utf-8?B?Q3pkZWVCeUNDbUtJUXVhdWxZczZQNVBlYWk3NDBZOVI0WHBrQWxRMEtnWDY3?= =?utf-8?B?d1lEakJTWm9WZlFUdW9VbHZUemtvRElZMWpscTVqWUxteWRJOWdOLzd3Y0dr?= =?utf-8?B?eGVUdjJheFRKa1AyWHZqdGRhMGsxcVlBd2l4ZGpUbk5hMnFQNUoxSGFLc2RB?= =?utf-8?B?YnlkeXMrNEt1cnlwY3Q2MlpkamhsVDBoL3ZBWHA2NEVJVnBhTnpWOHp3TzhQ?= =?utf-8?B?WEV0aktDcFFNVjArbmpleFlCRmxNNDIyYlZnSU5UdWlVSG5BblNTZ2ZWZFU0?= =?utf-8?B?eUwxMEVCalRlZXFURlV2cDBjZHRPbUtuWFpvOGp3RXVpeHQyTkdaZjE0Y0xi?= =?utf-8?B?TE9GNGxZUFNrYzgydFBvSkpEbEt4VmFMSGF1UEZTcVUwV0h6c0N0dDcrTk5L?= =?utf-8?B?ZnQrVExRdU1pVkZjSS83M1BBcE1WL0JjMFJ3SjRHOTJvNjVRbWhUQmppelRw?= =?utf-8?B?aDFlOG5MYzVsNEg5VFdqSWxpaWtvQXljenVaNWYxM1ZKcCtGakJNQTI1cTBx?= =?utf-8?B?Q1BSMWNaL3RIaEtKa0pVNDBtbkFORDNmZTUxYXdGSUwva3U4NjJHVGlsdERC?= =?utf-8?B?U0t0dFJtT2l4a3U2bmgxVkF6U3hHVXBJZklSaWcwWU5EU2dCbFFQT3hQQjFQ?= =?utf-8?B?L2RCb1NvQWlPdlRWWFBJMGorZnREREtVdWtIYUVFbjNQN0pydHJBNXRRQmV6?= =?utf-8?B?cjdiTld6YWtyVFRnMHFCa2NBWGNGUDdXMElTa2xrS2VlSUg3QmFrT094YVp3?= =?utf-8?B?WGFWcVhNNVh4QnFXSVErR2pLNGFZUG5lY0l3Y1pxaFRsV2toTlByM2xINklu?= =?utf-8?B?a2l4V2JjWkpGcnBxOW5TejVrR3pWektuMTJWclA0UkovM1Z6YWd1SUxJYldk?= =?utf-8?B?UzRoNlMrdm8wVDZXS0Z1dDlLaXdXbHQyM3BEYnRoSDlLSHc5aVBVNjQ4TXl6?= =?utf-8?B?eWkyOXRMR0toK0J2dEdHQ1paeHVIVFMwaXZaSGdjVHFoZmdnSThxMHkrRlZk?= =?utf-8?B?aFB1MnVHdUdaQStMR2twVFBGY2JJR1hXbzZ5cWlUQ0paNG1sMHJTbFFNR3li?= =?utf-8?B?T3NIdzJWcERIRldlZmd3K1liRE1uQStMU1RnbTFzWVU5eEc2ekxaWW1XWWZF?= =?utf-8?Q?CAHQ=3D?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2990.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 61cd95d2-1c16-4e92-dcfd-08dc02195c0b X-MS-Exchange-CrossTenant-originalarrivaltime: 21 Dec 2023 11:38:32.1210 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: ixPxm1LZ88632khkdU3ecCoxKVNenfpTpWE+Q3UGYQgi7yLrxEq014rvypzF93CgUktqhZJh9JdrIFEMreX4Cg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA1PR11MB6686 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH v12 1/9] libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: PlRoZXJlIGFyZSBzdGlsbCBubyBwdWJsaWMgZXh0ZXJuYWwgQVBJIHVzZXJzIHRvIGFjdHVhbGx5 IHRlc3QgdGhlIEFQSSwNCj53aGljaCBpcyBjb25jZXJuaW5nLiBJdCB0b29rIG1vbnRocyBmb3Ig dGhlIFZ1bGthbiBBUEkgdG8gYmUgcG9ydGFibGUNCj5lbm91Z2ggdG8gd29yayB3aXRoIHRoZSBt YWpvciBWdWxrYW4gdXNlcnMgb3V0IHRoZXJlLiBHcmFudGVkLCBWdWxrYW4NCj5pcyBzcGVjaWFs Lg0KPg0KPklzIHRoZXJlIGFueSBwdWJsaWMgdGVzdCBjb2RlIG91dCB0aGVyZT8gSWYgbm90LCBJ J2QgcHJlZmVyIHRoZSBBUEkgdG8gYmUNCj5kZWNsYXJlZCBhcyBleHBlcmltZW50YWwgZm9yIG5v dywgc28gd2UgY2FuIG1ha2UgY2hhbmdlcyBpZiBuZWVkZWQuDQo+DQoNCkFjdHVhbGx5IHRoZXJl IGhhdmUgYWxyZWFkeSBiZWVuIGEgbnVtYmVyIG9mIGRpc2N1c3Npb25zIG9uIHRoaXMgYmVmb3Jl IGZvciBWTEMgYW5kIE1QVi4NCmh0dHBzOi8vY29kZS52aWRlb2xhbi5vcmcvdmlkZW9sYW4vdmxj Ly0vaXNzdWVzLzI4MzYwDQpodHRwczovL2dpdGh1Yi5jb20vbXB2LXBsYXllci9tcHYvaXNzdWVz LzEyMDcxDQoNClNvbWUgaGF2ZSB0cmllZCBieSB0aGVtc2VsdmVzIGFuZCBpdCdzIHdvcmtpbmcg d2VsbC4gU2luY2UgaXQgY2Fubm90IGJlIG9mZmljaWFsIGFuZCBwdWJsaWMgYmVmb3JlIGl0IGxh bmRzIGluIEZGbXBlZywgSSBiZWxpZXZlIGl0J3MgcHJvYmFibHkgdmVyeSBzb29uIHRvIGhhdmUg ZDNkMTIgaHdkZWMgc3VwcG9ydCBmb3IgdGhlbS4NCg0KVGhhbmtzLA0KVG9uZw0KDQoNCj5EZWMg MjEsIDIwMjMsIDA5OjMxIGJ5IGhhaWhhby54aWFuZy1hdC1pbnRlbC5jb21AZmZtcGVnLm9yZzoN Cj4NCj4+IE9uIE1hLCAyMDIzLTEyLTE4IGF0IDA2OjI4ICswMDAwLCBYaWFuZywgSGFpaGFvIHdy b3RlOg0KPj4NCj4+PiBPbiBEaSwgMjAyMy0xMi0wNSBhdCAxNDo0NiArMDgwMCwgVG9uZyBXdSB3 cm90ZToNCj4+PiA+IEZyb206IFd1IEppYW5odWEgPHRvcXN4d0BvdXRsb29rLmNvbT4NCj4+PiA+ DQo+Pj4gPiBTaWduZWQtb2ZmLWJ5OiBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+DQo+ Pj4gPiBTaWduZWQtb2ZmLWJ5OiBUb25nIFd1IDx0b25nMS53dUBpbnRlbC5jb20+DQo+Pj4gPiAt LS0NCj4+PiA+DQo+Pj4gPiBDb21wYXJlZCB0byB2MTEsIHYxMiBzZXQgdGhlIGluaXRpYWwgdmFs dWUgdG8gMCBmb3IgdGhlIGZlbmNlIHZhbHVlLA0KPj4+ID4gZml4aW5nIGEgcG90ZW50aWFsIGR5 bmFtaWMgcG9vbCBzeW5jIGlzc3VlLiBIZW5jZSByZW1vdmVkIHRoZSBub24gemVybw0KPj4+ID4g aW5pdGlhbF9wb29sX3NpemUgZm9yDQo+Pj4gPiBkM2QxMnZhIGRlY29kZXIuDQo+Pj4gPg0KPj4+ ID4gU29tZSBvdGhlciBtaW5vciBlcnJvciBtZXNzYWdlIGNoYW5nZXMuDQo+Pj4gPg0KPj4+ID4N Cj4+PiA+DQo+Pj4gPiDCoGNvbmZpZ3VyZcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqAgNSArDQo+Pj4gPiDCoGRvYy9BUEljaGFu Z2VzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg IDUgKw0KPj4+ID4gwqBsaWJhdnV0aWwvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHzCoMKgIDMgKw0KPj4+ID4gwqBsaWJhdnV0aWwvaHdjb250ZXh0LmPC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQgKw0KPj4+ID4gwqBsaWJh dnV0aWwvaHdjb250ZXh0LmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKg IDEgKw0KPj4+ID4gwqBsaWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmEuY8KgwqDCoMKgwqDCoMKg wqDCoCB8IDcwMyArKysrKysrKysrKysrKysrKysrKysrKysrDQo+Pj4gPiDCoGxpYmF2dXRpbC9o d2NvbnRleHRfZDNkMTJ2YS5owqDCoMKgwqDCoMKgwqDCoMKgIHwgMTM0ICsrKysrDQo+Pj4gPiDC oGxpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YV9pbnRlcm5hbC5oIHzCoCA1OSArKysNCj4+PiA+ IMKgbGliYXZ1dGlsL2h3Y29udGV4dF9pbnRlcm5hbC5owqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAx ICsNCj4+PiA+IMKgbGliYXZ1dGlsL3BpeGRlc2MuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHzCoMKgIDQgKw0KPj4+ID4gwqBsaWJhdnV0aWwvcGl4Zm10LmjCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDcgKw0KPj4+ID4gwqBsaWJh dnV0aWwvdGVzdHMvaHdkZXZpY2UuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCAyICsN Cj4+PiA+IMKgbGliYXZ1dGlsL3ZlcnNpb24uaMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHzCoMKgIDIgKy0NCj4+PiA+IMKgMTMgZmlsZXMgY2hhbmdlZCwgOTI5IGluc2Vy dGlvbnMoKyksIDEgZGVsZXRpb24oLSkNCj4+PiA+IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmF2 dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5jDQo+Pj4gPiDCoGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWJh dnV0aWwvaHdjb250ZXh0X2QzZDEydmEuaA0KPj4+ID4gwqBjcmVhdGUgbW9kZSAxMDA2NDQgbGli YXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhX2ludGVybmFsLmgNCj4+PiA+DQo+Pj4gPiBkaWZmIC0t Z2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlDQo+Pj4gPiBpbmRleCBkNzdjMDUzMjI2Li4xYTM0 M2FjNmI5IDEwMDc1NQ0KPj4+ID4gLS0tIGEvY29uZmlndXJlDQo+Pj4gPiArKysgYi9jb25maWd1 cmUNCj4+PiA+IEBAIC0zMzYsNiArMzM2LDcgQEAgRXh0ZXJuYWwgbGlicmFyeSBzdXBwb3J0Og0K Pj4+ID4gwqDCoCAtLWRpc2FibGUtY3VkYS1sbHZtwqDCoMKgwqDCoCBkaXNhYmxlIENVREEgY29t cGlsYXRpb24gdXNpbmcgY2xhbmcNCj4+PiA+IFthdXRvZGV0ZWN0XQ0KPj4+ID4gwqDCoCAtLWRp c2FibGUtY3V2aWTCoMKgwqDCoMKgwqDCoMKgwqAgZGlzYWJsZSBOdmlkaWEgQ1VWSUQgc3VwcG9y dCBbYXV0b2RldGVjdF0NCj4+PiA+IMKgwqAgLS1kaXNhYmxlLWQzZDExdmHCoMKgwqDCoMKgwqDC oCBkaXNhYmxlIE1pY3Jvc29mdCBEaXJlY3QzRCAxMSB2aWRlbyBhY2NlbGVyYXRpb24NCj4+PiA+ IGNvZGUgW2F1dG9kZXRlY3RdDQo+Pj4gPiArwqAgLS1kaXNhYmxlLWQzZDEydmHCoMKgwqDCoMKg wqDCoCBkaXNhYmxlIE1pY3Jvc29mdCBEaXJlY3QzRCAxMiB2aWRlbyBhY2NlbGVyYXRpb24NCj4+ PiA+IGNvZGUgW2F1dG9kZXRlY3RdDQo+Pj4gPiDCoMKgIC0tZGlzYWJsZS1keHZhMsKgwqDCoMKg wqDCoMKgwqDCoCBkaXNhYmxlIE1pY3Jvc29mdCBEaXJlY3RYIDkgdmlkZW8gYWNjZWxlcmF0aW9u DQo+Pj4gPiBjb2RlIFthdXRvZGV0ZWN0XQ0KPj4+ID4gwqDCoCAtLWRpc2FibGUtZmZudmNvZGVj wqDCoMKgwqDCoCBkaXNhYmxlIGR5bmFtaWNhbGx5IGxpbmtlZCBOdmlkaWEgY29kZQ0KPj4+ID4g W2F1dG9kZXRlY3RdDQo+Pj4gPiDCoMKgIC0tZW5hYmxlLWxpYmRybcKgwqDCoMKgwqDCoMKgwqDC oCBlbmFibGUgRFJNIGNvZGUgKExpbnV4KSBbbm9dDQo+Pj4gPiBAQCAtMTkyNiw2ICsxOTI3LDcg QEAgSFdBQ0NFTF9BVVRPREVURUNUX0xJQlJBUllfTElTVD0iDQo+Pj4gPiDCoMKgwqDCoCBjdWRh X2xsdm0NCj4+PiA+IMKgwqDCoMKgIGN1dmlkDQo+Pj4gPiDCoMKgwqDCoCBkM2QxMXZhDQo+Pj4g PiArwqDCoMKgIGQzZDEydmENCj4+PiA+IMKgwqDCoMKgIGR4dmEyDQo+Pj4gPiDCoMKgwqDCoCBm Zm52Y29kZWMNCj4+PiA+IMKgwqDCoMKgIG52ZGVjDQo+Pj4gPiBAQCAtMzA0OCw2ICszMDUwLDcg QEAgY3J5c3RhbGhkX2RlcHM9ImxpYmNyeXN0YWxoZF9saWJjcnlzdGFsaGRfaWZfaCINCj4+PiA+ IMKgY3VkYV9kZXBzPSJmZm52Y29kZWMiDQo+Pj4gPiDCoGN1dmlkX2RlcHM9ImZmbnZjb2RlYyIN Cj4+PiA+IMKgZDNkMTF2YV9kZXBzPSJkeHZhX2ggSUQzRDExVmlkZW9EZWNvZGVyIElEM0QxMVZp ZGVvQ29udGV4dCINCj4+PiA+ICtkM2QxMnZhX2RlcHM9ImR4dmFfaCBJRDNEMTJEZXZpY2UgSUQz RDEyVmlkZW9EZWNvZGVyIg0KPj4+ID4gwqBkeHZhMl9kZXBzPSJkeHZhMmFwaV9oIERYVkEyX0Nv bmZpZ1BpY3R1cmVEZWNvZGUgb2xlMzIgdXNlcjMyIg0KPj4+ID4gwqBmZm52Y29kZWNfZGVwc19h bnk9ImxpYmRsIExvYWRMaWJyYXJ5Ig0KPj4+ID4gwqBtZWRpYWNvZGVjX2RlcHM9ImFuZHJvaWQi DQo+Pj4gPiBAQCAtNjU3NSw2ICs2NTc4LDggQEAgY2hlY2tfdHlwZSAid2luZG93cy5oIGR4Z2kx XzIuaCINCj4iSURYR0lPdXRwdXQxIg0KPj4+ID4gwqBjaGVja190eXBlICJ3aW5kb3dzLmggZHhn aTFfNS5oIiAiSURYR0lPdXRwdXQ1Ig0KPj4+ID4gwqBjaGVja190eXBlICJ3aW5kb3dzLmggZDNk MTEuaCIgIklEM0QxMVZpZGVvRGVjb2RlciINCj4+PiA+IMKgY2hlY2tfdHlwZSAid2luZG93cy5o IGQzZDExLmgiICJJRDNEMTFWaWRlb0NvbnRleHQiDQo+Pj4gPiArY2hlY2tfdHlwZSAid2luZG93 cy5oIGQzZDEyLmgiICJJRDNEMTJEZXZpY2UiDQo+Pj4gPiArY2hlY2tfdHlwZSAid2luZG93cy5o IGQzZDEydmlkZW8uaCIgIklEM0QxMlZpZGVvRGVjb2RlciINCj4+PiA+IMKgY2hlY2tfdHlwZSAi d2luZG93cy5oIiAiRFBJX0FXQVJFTkVTU19DT05URVhUIiAtDQo+RF9XSU4zMl9XSU5OVD0weDBB MDANCj4+PiA+IMKgY2hlY2tfdHlwZSAiZDNkOS5oIGR4dmEyYXBpLmgiIERYVkEyX0NvbmZpZ1Bp Y3R1cmVEZWNvZGUgLQ0KPj4+ID4gRF9XSU4zMl9XSU5OVD0weDA2MDINCj4+PiA+IMKgY2hlY2tf ZnVuY19oZWFkZXJzIG1mYXBpLmggTUZDcmVhdGVBbGlnbmVkTWVtb3J5QnVmZmVyIC1sbWZwbGF0 DQo+Pj4gPiBkaWZmIC0tZ2l0IGEvZG9jL0FQSWNoYW5nZXMgYi9kb2MvQVBJY2hhbmdlcw0KPj4+ ID4gaW5kZXggNGEyZGMxYzQ0Zi4uMDQzNTkyNmQ4MCAxMDA2NDQNCj4+PiA+IC0tLSBhL2RvYy9B UEljaGFuZ2VzDQo+Pj4gPiArKysgYi9kb2MvQVBJY2hhbmdlcw0KPj4+ID4gQEAgLTIsNiArMiwx MSBAQCBUaGUgbGFzdCB2ZXJzaW9uIGluY3JlYXNlcyBvZiBhbGwgbGlicmFyaWVzIHdlcmUgb24N Cj4yMDIzLQ0KPj4+ID4gMDItDQo+Pj4gPiAwOQ0KPj4+ID4NCj4+PiA+IMKgQVBJIGNoYW5nZXMs IG1vc3QgcmVjZW50IGZpcnN0Og0KPj4+ID4NCj4+PiA+ICsyMDIzLTExLTA3IC0geHh4eHh4eHh4 eCAtIGxhdnUgNTguMzMuMTAwIC0gcGl4Zm10LmggaHdjb250ZXh0LmgNCj4+PiA+IGh3Y29udGV4 dF9kM2QxMnZhLmgNCj4+PiA+ICvCoCBBZGQgQVZfSFdERVZJQ0VfVFlQRV9EM0QxMlZBIGFuZCBB Vl9QSVhfRk1UX0QzRDEyLg0KPj4+ID4gK8KgIEFkZCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0LCBB VkQzRDEyVkFTeW5jQ29udGV4dCwNCj5BVkQzRDEyVkFGcmFtZSBhbmQNCj4+PiA+ICvCoCBBVkQz RDEyVkFGcmFtZXNDb250ZXh0Lg0KPj4+ID4gKw0KPj4+ID4gwqAyMDIzLTExLTA4IC0gYjgyOTU3 YTY2YTcgLSBsYXZ1IDU4LjMyLjEwMCAtIGNoYW5uZWxfbGF5b3V0LmgNCj4+PiA+IMKgwqAgQWRk IEFWX0NIX0xBWU9VVF83UE9JTlQyUE9JTlQzIGFuZA0KPkFWX0NIQU5ORUxfTEFZT1VUXzdQT0lO VDJQT0lOVDMuDQo+Pj4gPiDCoMKgIEFkZCBBVl9DSF9MQVlPVVRfOVBPSU5UMVBPSU5UNF9CQUNL IGFuZA0KPj4+ID4gQVZfQ0hBTk5FTF9MQVlPVVRfOVBPSU5UMVBPSU5UNF9CQUNLLg0KPj4+ID4g ZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9NYWtlZmlsZSBiL2xpYmF2dXRpbC9NYWtlZmlsZQ0KPj4+ ID4gaW5kZXggNDcxMWY4Y2RlOC4uNmE4NTY2ZjFkOSAxMDA2NDQNCj4+PiA+IC0tLSBhL2xpYmF2 dXRpbC9NYWtlZmlsZQ0KPj4+ID4gKysrIGIvbGliYXZ1dGlsL01ha2VmaWxlDQo+Pj4gPiBAQCAt NDIsNiArNDIsNyBAQCBIRUFERVJTID0NCj4+PiA+IGFkbGVyMzIuaMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgIGh3Y29udGV4dC5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBcDQo+Pj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod2NvbnRleHRfY3VkYS5owqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3 Y29udGV4dF9kM2QxMXZhLmjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoCBod2NvbnRleHRfZDNkMTJ2YS5owqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFwNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3Y29udGV4dF9kcm0uaMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIFwNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgIGh3Y29udGV4dF9keHZhMi5owqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+ Pj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod2NvbnRleHRfcXN2LmjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+Pj4gPiBAQCAtMTkwLDYgKzE5MSw3IEBAIE9CSlMgPQ0K Pj4+ID4gYWRsZXIzMi5vwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgXA0KPj4+ID4NCj4+PiA+IMKgT0JKUy0kKENPTkZJR19DVURBKcKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gaHdjb250ZXh0X2N1ZGEubw0KPj4+ ID4gwqBPQkpTLSQoQ09ORklHX0QzRDExVkEpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCArPSBod2NvbnRleHRfZDNkMTF2YS5vDQo+Pj4gPiArT0JKUy0kKENPTkZJR19EM0QxMlZB KcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gaHdjb250ZXh0X2QzZDEydmEu bw0KPj4+ID4gwqBPQkpTLSQoQ09ORklHX0RYVkEyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICs9IGh3Y29udGV4dF9keHZhMi5vDQo+Pj4gPiDCoE9CSlMtJChDT05GSUdf TElCRFJNKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArPSBod2NvbnRleHRf ZHJtLm8NCj4+PiA+IMKgT0JKUy0kKENPTkZJR19NQUNPU19LUEVSRinCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCArPSBtYWNvc19rcGVyZi5vDQo+Pj4gPiBAQCAtMjEzLDYgKzIxNSw3IEBAIFNL SVBIRUFERVJTLSQoSEFWRV9DVURBX0gpwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9DQo+Pj4g PiBod2NvbnRleHRfY3VkYS5oDQo+Pj4gPiDCoFNLSVBIRUFERVJTLSQoQ09ORklHX0NVREEpwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICs9IGh3Y29udGV4dF9jdWRhX2ludGVybmFsLmjCoMKgwqDC oCBcDQo+Pj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3VkYV9jaGVjay5oDQo+Pj4g PiDCoFNLSVBIRUFERVJTLSQoQ09ORklHX0QzRDExVkEpwqDCoMKgwqDCoMKgwqDCoMKgICs9IGh3 Y29udGV4dF9kM2QxMXZhLmgNCj4+PiA+ICtTS0lQSEVBREVSUy0kKENPTkZJR19EM0QxMlZBKcKg wqDCoMKgwqDCoMKgwqDCoCArPSBod2NvbnRleHRfZDNkMTJ2YS5oDQo+Pj4gPiDCoFNLSVBIRUFE RVJTLSQoQ09ORklHX0RYVkEyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gaHdjb250ZXh0X2R4 dmEyLmgNCj4+PiA+IMKgU0tJUEhFQURFUlMtJChDT05GSUdfUVNWKcKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgICs9IGh3Y29udGV4dF9xc3YuaA0KPj4+ID4gwqBTS0lQSEVBREVSUy0kKENPTkZJ R19PUEVOQ0wpwqDCoMKgwqDCoMKgwqDCoMKgwqAgKz0gaHdjb250ZXh0X29wZW5jbC5oDQo+Pj4g PiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dC5jIGIvbGliYXZ1dGlsL2h3Y29udGV4 dC5jDQo+Pj4gPiBpbmRleCAzNjUwZDQ2NTNhLi5lMjNiYWQyMzBmIDEwMDY0NA0KPj4+ID4gLS0t IGEvbGliYXZ1dGlsL2h3Y29udGV4dC5jDQo+Pj4gPiArKysgYi9saWJhdnV0aWwvaHdjb250ZXh0 LmMNCj4+PiA+IEBAIC0zNiw2ICszNiw5IEBAIHN0YXRpYyBjb25zdCBIV0NvbnRleHRUeXBlICog Y29uc3QgaHdfdGFibGVbXSA9IHsNCj4+PiA+IMKgI2lmIENPTkZJR19EM0QxMVZBDQo+Pj4gPiDC oMKgwqDCoCAmZmZfaHdjb250ZXh0X3R5cGVfZDNkMTF2YSwNCj4+PiA+IMKgI2VuZGlmDQo+Pj4g PiArI2lmIENPTkZJR19EM0QxMlZBDQo+Pj4gPiArwqDCoMKgICZmZl9od2NvbnRleHRfdHlwZV9k M2QxMnZhLA0KPj4+ID4gKyNlbmRpZg0KPj4+ID4gwqAjaWYgQ09ORklHX0xJQkRSTQ0KPj4+ID4g wqDCoMKgwqAgJmZmX2h3Y29udGV4dF90eXBlX2RybSwNCj4+PiA+IMKgI2VuZGlmDQo+Pj4gPiBA QCAtNzEsNiArNzQsNyBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaHdfdHlwZV9uYW1lc1td ID0gew0KPj4+ID4gwqDCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfRFJNXcKgwqDCoCA9ICJkcm0i LA0KPj4+ID4gwqDCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfRFhWQTJdwqAgPSAiZHh2YTIiLA0K Pj4+ID4gwqDCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfRDNEMTFWQV0gPSAiZDNkMTF2YSIsDQo+ Pj4gPiArwqDCoMKgIFtBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkFdID0gImQzZDEydmEiLA0KPj4+ ID4gwqDCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfT1BFTkNMXSA9ICJvcGVuY2wiLA0KPj4+ID4g wqDCoMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfUVNWXcKgwqDCoCA9ICJxc3YiLA0KPj4+ID4gwqDC oMKgwqAgW0FWX0hXREVWSUNFX1RZUEVfVkFBUEldwqAgPSAidmFhcGkiLA0KPj4+ID4gZGlmZiAt LWdpdCBhL2xpYmF2dXRpbC9od2NvbnRleHQuaCBiL2xpYmF2dXRpbC9od2NvbnRleHQuaA0KPj4+ ID4gaW5kZXggN2ZmMDhjODYwOC4uMmIzMzcyMWE5NyAxMDA2NDQNCj4+PiA+IC0tLSBhL2xpYmF2 dXRpbC9od2NvbnRleHQuaA0KPj4+ID4gKysrIGIvbGliYXZ1dGlsL2h3Y29udGV4dC5oDQo+Pj4g PiBAQCAtMzcsNiArMzcsNyBAQCBlbnVtIEFWSFdEZXZpY2VUeXBlIHsNCj4+PiA+IMKgwqDCoMKg IEFWX0hXREVWSUNFX1RZUEVfT1BFTkNMLA0KPj4+ID4gwqDCoMKgwqAgQVZfSFdERVZJQ0VfVFlQ RV9NRURJQUNPREVDLA0KPj4+ID4gwqDCoMKgwqAgQVZfSFdERVZJQ0VfVFlQRV9WVUxLQU4sDQo+ Pj4gPiArwqDCoMKgIEFWX0hXREVWSUNFX1RZUEVfRDNEMTJWQSwNCj4+PiA+IMKgfTsNCj4+PiA+ DQo+Pj4gPiDCoHR5cGVkZWYgc3RydWN0IEFWSFdEZXZpY2VJbnRlcm5hbCBBVkhXRGV2aWNlSW50 ZXJuYWw7DQo+Pj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMN Cj5iL2xpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5jDQo+Pj4gPiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPj4+ID4gaW5kZXggMDAwMDAwMDAwMC4uMTYwMGQ5NGNiMA0KPj4+ID4gLS0tIC9kZXYv bnVsbA0KPj4+ID4gKysrIGIvbGliYXZ1dGlsL2h3Y29udGV4dF9kM2QxMnZhLmMNCj4+PiA+IEBA IC0wLDAgKzEsNzAzIEBADQo+Pj4gPiArLyoNCj4+PiA+ICsgKiBEaXJlY3QzRCAxMiBIVyBhY2Nl bGVyYXRpb24uDQo+Pj4gPiArICoNCj4+PiA+ICsgKiBjb3B5cmlnaHQgKGMpIDIwMjItMjAyMyBX dSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+DQo+Pj4gPiArICoNCj4+PiA+ICsgKiBUaGlz IGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQo+Pj4gPiArICoNCj4+PiA+ICsgKiBGRm1wZWcgaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+Pj4gPiArICog bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1Ymxp Yw0KPj4+ID4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlcg0KPj4+ID4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBv ciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPj4+ID4gKyAqDQo+Pj4gPiAr ICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsDQo+Pj4gPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YNCj4+PiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuwqAgU2VlIHRoZQ0KPkdOVQ0KPj4+ID4gKyAqIExl c3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+Pj4gPiArICoN Cj4+PiA+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVz c2VyIEdlbmVyYWwgUHVibGljDQo+Pj4gPiArICogTGljZW5zZSBhbG9uZyB3aXRoIEZGbXBlZzsg aWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KPj4+ID4gKyAqIEZvdW5kYXRpb24s IEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAt DQo+MTMwMQ0KPj4+ID4gVVNBDQo+Pj4gPiArICovDQo+Pj4gPiArDQo+Pj4gPiArI2luY2x1ZGUg ImNvbmZpZy5oIg0KPj4+ID4gKyNpbmNsdWRlICJjb21tb24uaCINCj4+PiA+ICsjaW5jbHVkZSAi aHdjb250ZXh0LmgiDQo+Pj4gPiArI2luY2x1ZGUgImh3Y29udGV4dF9pbnRlcm5hbC5oIg0KPj4+ ID4gKyNpbmNsdWRlICJod2NvbnRleHRfZDNkMTJ2YV9pbnRlcm5hbC5oIg0KPj4+ID4gKyNpbmNs dWRlICJod2NvbnRleHRfZDNkMTJ2YS5oIg0KPj4+ID4gKyNpbmNsdWRlICJpbWd1dGlscy5oIg0K Pj4+ID4gKyNpbmNsdWRlICJwaXhkZXNjLmgiDQo+Pj4gPiArI2luY2x1ZGUgInBpeGZtdC5oIg0K Pj4+ID4gKyNpbmNsdWRlICJ0aHJlYWQuaCINCj4+PiA+ICsjaW5jbHVkZSAiY29tcGF0L3czMmRs ZmNuLmgiDQo+Pj4gPiArI2luY2x1ZGUgPGR4Z2kxXzMuaD4NCj4+PiA+ICsNCj4+PiA+ICt0eXBl ZGVmIEhSRVNVTFQoV0lOQVBJICpQRk5fQ1JFQVRFX0RYR0lfRkFDVE9SWTIpKFVJTlQgRmxhZ3Ms DQo+UkVGSUlEIHJpaWQsDQo+Pj4gPiB2b2lkICoqcHBGYWN0b3J5KTsNCj4+PiA+ICsNCj4+PiA+ ICt0eXBlZGVmIHN0cnVjdCBEM0QxMlZBRnJhbWVzQ29udGV4dCB7DQo+Pj4gPiArwqDCoMKgIElE M0QxMlJlc291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqc3RhZ2luZ19kb3dubG9hZF9idWZm ZXI7DQo+Pj4gPiArwqDCoMKgIElEM0QxMlJlc291cmNlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAq c3RhZ2luZ191cGxvYWRfYnVmZmVyOw0KPj4+ID4gK8KgwqDCoCBJRDNEMTJDb21tYW5kUXVldWXC oMKgwqDCoMKgwqDCoCAqY29tbWFuZF9xdWV1ZTsNCj4+PiA+ICvCoMKgwqAgSUQzRDEyQ29tbWFu ZEFsbG9jYXRvcsKgwqDCoCAqY29tbWFuZF9hbGxvY2F0b3I7DQo+Pj4gPiArwqDCoMKgIElEM0Qx MkdyYXBoaWNzQ29tbWFuZExpc3QgKmNvbW1hbmRfbGlzdDsNCj4+PiA+ICvCoMKgwqAgQVZEM0Qx MlZBU3luY0NvbnRleHTCoMKgwqDCoMKgwqAgc3luY19jdHg7DQo+Pj4gPiArwqDCoMKgIFVJTlTC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsdW1hX2NvbXBvbmVu dF9zaXplOw0KPj4+ID4gK30gRDNEMTJWQUZyYW1lc0NvbnRleHQ7DQo+Pj4gPiArDQo+Pj4gPiAr dHlwZWRlZiBzdHJ1Y3QgRDNEMTJWQURldmljZVByaXYgew0KPj4+ID4gK8KgwqDCoCBIQU5ETEXC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGQzZDEybGliOw0K Pj4+ID4gK8KgwqDCoCBIQU5ETEXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGR4Z2lsaWI7DQo+Pj4gPiArwqDCoMKgIFBGTl9DUkVBVEVfRFhHSV9GQUNUT1JZ MsKgwqDCoMKgwqAgY3JlYXRlX2R4Z2lfZmFjdG9yeTI7DQo+Pj4gPiArwqDCoMKgIFBGTl9EM0Qx Ml9DUkVBVEVfREVWSUNFwqDCoMKgwqDCoMKgIGNyZWF0ZV9kZXZpY2U7DQo+Pj4gPiArwqDCoMKg IFBGTl9EM0QxMl9HRVRfREVCVUdfSU5URVJGQUNFIGdldF9kZWJ1Z19pbnRlcmZhY2U7DQo+Pj4g PiArfSBEM0QxMlZBRGV2aWNlUHJpdjsNCj4+PiA+ICsNCj4+PiA+ICtzdGF0aWMgY29uc3Qgc3Ry dWN0IHsNCj4+PiA+ICvCoMKgwqAgRFhHSV9GT1JNQVQgZDNkX2Zvcm1hdDsNCj4+PiA+ICvCoMKg wqAgZW51bSBBVlBpeGVsRm9ybWF0IHBpeF9mbXQ7DQo+Pj4gPiArfSBzdXBwb3J0ZWRfZm9ybWF0 c1tdID0gew0KPj4+ID4gK8KgwqDCoCB7IERYR0lfRk9STUFUX05WMTIsIEFWX1BJWF9GTVRfTlYx MiB9LA0KPj4+ID4gK8KgwqDCoCB7IERYR0lfRk9STUFUX1AwMTAsIEFWX1BJWF9GTVRfUDAxMCB9 LA0KPj4+ID4gK307DQo+Pj4gPiArDQo+Pj4gPiArc3RhdGljIHZvaWQgZDNkMTJ2YV9kZWZhdWx0 X2xvY2sodm9pZCAqY3R4KQ0KPj4+ID4gK3sNCj4+PiA+ICvCoMKgwqAgV2FpdEZvclNpbmdsZU9i amVjdEV4KGN0eCwgSU5GSU5JVEUsIEZBTFNFKTsNCj4+PiA+ICt9DQo+Pj4gPiArDQo+Pj4gPiAr c3RhdGljIHZvaWQgZDNkMTJ2YV9kZWZhdWx0X3VubG9jayh2b2lkICpjdHgpDQo+Pj4gPiArew0K Pj4+ID4gK8KgwqDCoCBSZWxlYXNlTXV0ZXgoY3R4KTsNCj4+PiA+ICt9DQo+Pj4gPiArDQo+Pj4g PiArRFhHSV9GT1JNQVQgYXZfZDNkMTJ2YV9tYXBfc3dfdG9faHdfZm9ybWF0KGVudW0NCj5BVlBp eGVsRm9ybWF0IHBpeF9mbXQpDQo+Pj4gPiArew0KPj4+ID4gK8KgwqDCoCBzd2l0Y2ggKHBpeF9m bXQpIHsNCj4+PiA+ICvCoMKgwqAgY2FzZSBBVl9QSVhfRk1UX05WMTI6cmV0dXJuIERYR0lfRk9S TUFUX05WMTI7DQo+Pj4gPiArwqDCoMKgIGNhc2UgQVZfUElYX0ZNVF9QMDEwOnJldHVybiBEWEdJ X0ZPUk1BVF9QMDEwOw0KPj4+ID4gK8KgwqDCoCBkZWZhdWx0OsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gRFhHSV9GT1JNQVRfVU5LTk9XTjsNCj4+PiA+ICvCoMKgwqAgfQ0KPj4+ID4g K30NCj4+PiA+ICsNCj4+PiA+ICtzdGF0aWMgaW50IGQzZDEydmFfZmVuY2VfY29tcGxldGlvbihB VkQzRDEyVkFTeW5jQ29udGV4dA0KPipwc3luY19jdHgpDQo+Pj4gPiArew0KPj4+ID4gK8KgwqDC oCB1aW50NjRfdCBjb21wbGV0aW9uID0gSUQzRDEyRmVuY2VfR2V0Q29tcGxldGVkVmFsdWUocHN5 bmNfY3R4LQ0KPj5mZW5jZSk7DQo+Pj4gPiArwqDCoMKgIGlmIChjb21wbGV0aW9uIDwgcHN5bmNf Y3R4LT5mZW5jZV92YWx1ZSkgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGlmIChGQUlMRUQoSUQz RDEyRmVuY2VfU2V0RXZlbnRPbkNvbXBsZXRpb24ocHN5bmNfY3R4LT5mZW5jZSwNCj4+PiA+IHBz eW5jX2N0eC0+ZmVuY2VfdmFsdWUsIHBzeW5jX2N0eC0+ZXZlbnQpKSkNCj4+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SKEVJTlZBTCk7DQo+Pj4gPiArDQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqAgV2FpdEZvclNpbmdsZU9iamVjdEV4KHBzeW5jX2N0eC0+ZXZlbnQsIElO RklOSVRFLCBGQUxTRSk7DQo+Pj4gPiArwqDCoMKgIH0NCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAg cmV0dXJuIDA7DQo+Pj4gPiArfQ0KPj4+ID4gKw0KPj4+ID4gK3N0YXRpYyBpbmxpbmUgaW50IGQz ZDEydmFfd2FpdF9xdWV1ZV9pZGxlKEFWRDNEMTJWQVN5bmNDb250ZXh0DQo+KnBzeW5jX2N0eCwN Cj4+PiA+IElEM0QxMkNvbW1hbmRRdWV1ZSAqY29tbWFuZF9xdWV1ZSkNCj4+PiA+ICt7DQo+Pj4g PiArwqDCoMKgIERYX0NIRUNLKElEM0QxMkNvbW1hbmRRdWV1ZV9TaWduYWwoY29tbWFuZF9xdWV1 ZSwNCj5wc3luY19jdHgtPmZlbmNlLA0KPj4+ID4gKytwc3luY19jdHgtPmZlbmNlX3ZhbHVlKSk7 DQo+Pj4gPiArwqDCoMKgIHJldHVybiBkM2QxMnZhX2ZlbmNlX2NvbXBsZXRpb24ocHN5bmNfY3R4 KTsNCj4+PiA+ICsNCj4+PiA+ICtmYWlsOg0KPj4+ID4gK8KgwqDCoCByZXR1cm4gQVZFUlJPUihF SU5WQUwpOw0KPj4+ID4gK30NCj4+PiA+ICsNCj4+PiA+ICtzdGF0aWMgaW50IGQzZDEydmFfY3Jl YXRlX3N0YWdpbmdfYnVmZmVyX3Jlc291cmNlKEFWSFdGcmFtZXNDb250ZXh0DQo+KmN0eCwNCj4+ PiA+IEQzRDEyX1JFU09VUkNFX1NUQVRFUyBzdGF0ZXMsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgSUQzRDEyUmVzb3VyY2UNCj4+PiA+ICoqcHBSZXNv dXJjZSwgaW50IGRvd25sb2FkKQ0KPj4+ID4gK3sNCj4+PiA+ICvCoMKgwqAgQVZEM0QxMlZBRGV2 aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0gY3R4LT5kZXZpY2VfY3R4LT5od2N0eDsNCj4+PiA+ ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0NvbnRleHTCoMKgICpzwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7DQo+Pj4gPiArwqDCoMKgIEQzRDEyX0hFQVBfUFJPUEVS VElFUyBwcm9wcyA9IHsgLlR5cGUgPSBkb3dubG9hZCA/DQo+Pj4gPiBEM0QxMl9IRUFQX1RZUEVf UkVBREJBQ0sgOiBEM0QxMl9IRUFQX1RZUEVfVVBMT0FEIH07DQo+Pj4gPiArwqDCoMKgIEQzRDEy X1JFU09VUkNFX0RFU0MgZGVzYyA9IHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuRGltZW5zaW9u wqDCoMKgwqDCoMKgwqDCoMKgID0gRDNEMTJfUkVTT1VSQ0VfRElNRU5TSU9OX0JVRkZFUiwNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCAuQWxpZ25tZW50wqDCoMKgwqDCoMKgwqDCoMKgID0gMCwNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCAuV2lkdGjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IHMt Pmx1bWFfY29tcG9uZW50X3NpemUgKyAocy0NCj4+PiA+ID4gbHVtYV9jb21wb25lbnRfc2l6ZSA+ PiAxKSwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuSGVpZ2h0wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgID0gMSwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuRGVwdGhPckFycmF5U2l6ZcKgwqAgPSAx LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5NaXBMZXZlbHPCoMKgwqDCoMKgwqDCoMKgwqAgPSAx LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5Gb3JtYXTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg PSBEWEdJX0ZPUk1BVF9VTktOT1dOLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5TYW1wbGVEZXNj wqDCoMKgwqDCoMKgwqDCoCA9IHsgLkNvdW50ID0gMSwgLlF1YWxpdHkgPSAwIH0sDQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqAgLkxheW91dMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1RF WFRVUkVfTEFZT1VUX1JPV19NQUpPUiwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuRmxhZ3PCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1JFU09VUkNFX0ZMQUdfTk9ORSwNCj4+PiA+ ICvCoMKgwqAgfTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgaWYgKEZBSUxFRChJRDNEMTJEZXZp Y2VfQ3JlYXRlQ29tbWl0dGVkUmVzb3VyY2UoZGV2aWNlX2h3Y3R4LQ0KPj5kZXZpY2UsDQo+Pj4g PiAmcHJvcHMsIEQzRDEyX0hFQVBfRkxBR19OT05FLCAmZGVzYywNCj4+PiA+ICvCoMKgwqDCoMKg wqDCoCBzdGF0ZXMsIE5VTEwsICZJSURfSUQzRDEyUmVzb3VyY2UsICh2b2lkICoqKXBwUmVzb3Vy Y2UpKSkgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwg IkNvdWxkIG5vdCBjcmVhdGUgdGhlIHN0YWdpbmcgYnVmZmVyDQo+Pj4gPiByZXNvdXJjZVxuIik7 DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEFWRVJST1JfVU5LTk9XTjsNCj4+PiA+ICvC oMKgwqAgfQ0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiA+ICt9DQo+Pj4g PiArDQo+Pj4gPiArc3RhdGljIGludCBkM2QxMnZhX2NyZWF0ZV9oZWxwZXJfb2JqZWN0cyhBVkhX RnJhbWVzQ29udGV4dCAqY3R4KQ0KPj4+ID4gK3sNCj4+PiA+ICvCoMKgwqAgQVZEM0QxMlZBRGV2 aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0gY3R4LT5kZXZpY2VfY3R4LT5od2N0eDsNCj4+PiA+ ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4ID0gY3R4LT5od2N0 eDsNCj4+PiA+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0NvbnRleHTCoMKgICpzwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKg IEQzRDEyX0NPTU1BTkRfUVVFVUVfREVTQyBxdWV1ZV9kZXNjID0gew0KPj4+ID4gK8KgwqDCoMKg wqDCoMKgIC5UeXBlwqDCoMKgwqAgPSBEM0QxMl9DT01NQU5EX0xJU1RfVFlQRV9DT1BZLA0KPj4+ ID4gK8KgwqDCoMKgwqDCoMKgIC5Qcmlvcml0eSA9IDAsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAg Lk5vZGVNYXNrID0gMCwNCj4+PiA+ICvCoMKgwqAgfTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAg cy0+bHVtYV9jb21wb25lbnRfc2l6ZSA9IEZGQUxJR04oY3R4LT53aWR0aCAqIChmcmFtZXNfaHdj dHgtDQo+PmZvcm1hdCA9PQ0KPj4+ID4gRFhHSV9GT1JNQVRfUDAxMCA/IDIgOiAxKSwNCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgRDNEMTJfVEVYVFVSRV9EQVRBX1BJVENIX0FMSUdOTUVOVCkgKg0K Pj4+ID4gY3R4LT5oZWlnaHQ7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIERYX0NIRUNLKElEM0Qx MkRldmljZV9DcmVhdGVGZW5jZShkZXZpY2VfaHdjdHgtPmRldmljZSwgMCwNCj4+PiA+IEQzRDEy X0ZFTkNFX0ZMQUdfTk9ORSwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmSUlEX0lEM0QxMkZl bmNlLCAodm9pZCAqKikmcy0NCj4+PiA+ID4gc3luY19jdHguZmVuY2UpKTsNCj4+PiA+ICsNCj4+ PiA+ICvCoMKgwqAgcy0+c3luY19jdHguZXZlbnQgPSBDcmVhdGVFdmVudChOVUxMLCBGQUxTRSwg RkFMU0UsIE5VTEwpOw0KPj4+ID4gK8KgwqDCoCBpZiAoIXMtPnN5bmNfY3R4LmV2ZW50KQ0KPj4+ ID4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgRFhf Q0hFQ0soSUQzRDEyRGV2aWNlX0NyZWF0ZUNvbW1hbmRRdWV1ZShkZXZpY2VfaHdjdHgtDQo+PmRl dmljZSwNCj4+PiA+ICZxdWV1ZV9kZXNjLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAmSUlEX0lEM0QxMkNvbW1hbmRRdWV1ZSwgKHZvaWQgKiopJnMtPmNvbW1hbmRfcXVldWUpKTsN Cj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX0NyZWF0ZUNvbW1h bmRBbGxvY2F0b3IoZGV2aWNlX2h3Y3R4LQ0KPj5kZXZpY2UsDQo+Pj4gPiBxdWV1ZV9kZXNjLlR5 cGUsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZJSURfSUQzRDEyQ29tbWFuZEFs bG9jYXRvciwgKHZvaWQgKiopJnMtDQo+PmNvbW1hbmRfYWxsb2NhdG9yKSk7DQo+Pj4gPiArDQo+ Pj4gPiArwqDCoMKgIERYX0NIRUNLKElEM0QxMkRldmljZV9DcmVhdGVDb21tYW5kTGlzdChkZXZp Y2VfaHdjdHgtPmRldmljZSwNCj4wLA0KPj4+ID4gcXVldWVfZGVzYy5UeXBlLA0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzLT5jb21tYW5kX2FsbG9jYXRvciwgTlVMTCwNCj4mSUlE X0lEM0QxMkdyYXBoaWNzQ29tbWFuZExpc3QsDQo+Pj4gPiAodm9pZCAqKikmcy0+Y29tbWFuZF9s aXN0KSk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIERYX0NIRUNLKElEM0QxMkdyYXBoaWNzQ29t bWFuZExpc3RfQ2xvc2Uocy0+Y29tbWFuZF9saXN0KSk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKg IElEM0QxMkNvbW1hbmRRdWV1ZV9FeGVjdXRlQ29tbWFuZExpc3RzKHMtPmNvbW1hbmRfcXVldWUs DQo+MSwNCj4+PiA+IChJRDNEMTJDb21tYW5kTGlzdCAqKikmcy0+Y29tbWFuZF9saXN0KTsNCj4+ PiA+ICsNCj4+PiA+ICvCoMKgwqAgcmV0dXJuIGQzZDEydmFfd2FpdF9xdWV1ZV9pZGxlKCZzLT5z eW5jX2N0eCwgcy0+Y29tbWFuZF9xdWV1ZSk7DQo+Pj4gPiArDQo+Pj4gPiArZmFpbDoNCj4+PiA+ ICvCoMKgwqAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4+PiA+ICt9DQo+Pj4gPiArDQo+Pj4g PiArc3RhdGljIHZvaWQgZDNkMTJ2YV9mcmFtZXNfdW5pbml0KEFWSFdGcmFtZXNDb250ZXh0ICpj dHgpDQo+Pj4gPiArew0KPj4+ID4gK8KgwqDCoCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0ICpmcmFt ZXNfaHdjdHggPSBjdHgtPmh3Y3R4Ow0KPj4+ID4gK8KgwqDCoCBEM0QxMlZBRnJhbWVzQ29udGV4 dMKgwqAgKnPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gY3R4LT5pbnRlcm5hbC0+cHJpdjsNCj4+ PiA+ICsNCj4+PiA+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0Uocy0+c3luY19jdHguZmVu Y2UpOw0KPj4+ID4gK8KgwqDCoCBpZiAocy0+c3luY19jdHguZXZlbnQpDQo+Pj4gPiArwqDCoMKg wqDCoMKgwqAgQ2xvc2VIYW5kbGUocy0+c3luY19jdHguZXZlbnQpOw0KPj4+ID4gKw0KPj4+ID4g K8KgwqDCoCBEM0QxMl9PQkpFQ1RfUkVMRUFTRShzLT5zdGFnaW5nX2Rvd25sb2FkX2J1ZmZlcik7 DQo+Pj4gPiArwqDCoMKgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHMtPnN0YWdpbmdfdXBsb2FkX2J1 ZmZlcik7DQo+Pj4gPiArwqDCoMKgIEQzRDEyX09CSkVDVF9SRUxFQVNFKHMtPmNvbW1hbmRfYWxs b2NhdG9yKTsNCj4+PiA+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0Uocy0+Y29tbWFuZF9s aXN0KTsNCj4+PiA+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0Uocy0+Y29tbWFuZF9xdWV1 ZSk7DQo+Pj4gPiArfQ0KPj4+ID4gKw0KPj4+ID4gK3N0YXRpYyBpbnQgZDNkMTJ2YV9mcmFtZXNf Z2V0X2NvbnN0cmFpbnRzKEFWSFdEZXZpY2VDb250ZXh0ICpjdHgsDQo+Y29uc3QNCj4+PiA+IHZv aWQNCj4+PiA+ICpod2NvbmZpZywgQVZIV0ZyYW1lc0NvbnN0cmFpbnRzICpjb25zdHJhaW50cykN Cj4+PiA+ICt7DQo+Pj4gPiArwqDCoMKgIEhSRVNVTFQgaHI7DQo+Pj4gPiArwqDCoMKgIGludCBu Yl9zd19mb3JtYXRzID0gMDsNCj4+PiA+ICvCoMKgwqAgQVZEM0QxMlZBRGV2aWNlQ29udGV4dCAq ZGV2aWNlX2h3Y3R4ID0gY3R4LT5od2N0eDsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgY29uc3Ry YWludHMtPnZhbGlkX3N3X2Zvcm1hdHMgPQ0KPj4+ID4gYXZfbWFsbG9jX2FycmF5KEZGX0FSUkFZ X0VMRU1TKHN1cHBvcnRlZF9mb3JtYXRzKSArIDEsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNpemVvZigqY29uc3RyYWludHMtDQo+Pj4gPiA+ IHZhbGlkX3N3X2Zvcm1hdHMpKTsNCj4+PiA+ICvCoMKgwqAgaWYgKCFjb25zdHJhaW50cy0+dmFs aWRfc3dfZm9ybWF0cykNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUihFTk9N RU0pOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBmb3IgKGludCBpID0gMDsgaSA8IEZGX0FSUkFZ X0VMRU1TKHN1cHBvcnRlZF9mb3JtYXRzKTsgaSsrKSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAg RDNEMTJfRkVBVFVSRV9EQVRBX0ZPUk1BVF9TVVBQT1JUIGZvcm1hdF9zdXBwb3J0ID0gew0KPj4+ ID4gc3VwcG9ydGVkX2Zvcm1hdHNbaV0uZDNkX2Zvcm1hdCB9Ow0KPj4+ID4gK8KgwqDCoMKgwqDC oMKgIGhyID0gSUQzRDEyRGV2aWNlX0NoZWNrRmVhdHVyZVN1cHBvcnQoZGV2aWNlX2h3Y3R4LT5k ZXZpY2UsDQo+Pj4gPiBEM0QxMl9GRUFUVVJFX0ZPUk1BVF9TVVBQT1JULCAmZm9ybWF0X3N1cHBv cnQsDQo+c2l6ZW9mKGZvcm1hdF9zdXBwb3J0KSk7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgaWYg KFNVQ0NFRURFRChocikgJiYgKGZvcm1hdF9zdXBwb3J0LlN1cHBvcnQxICYNCj4+PiA+IEQzRDEy X0ZPUk1BVF9TVVBQT1JUMV9URVhUVVJFMkQpKQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY29uc3RyYWludHMtPnZhbGlkX3N3X2Zvcm1hdHNbbmJfc3dfZm9ybWF0cysrXSA9DQo+Pj4g PiBzdXBwb3J0ZWRfZm9ybWF0c1tpXS5waXhfZm10Ow0KPj4+ID4gK8KgwqDCoCB9DQo+Pj4gPiAr wqDCoMKgIGNvbnN0cmFpbnRzLT52YWxpZF9zd19mb3JtYXRzW25iX3N3X2Zvcm1hdHNdID0gQVZf UElYX0ZNVF9OT05FOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBjb25zdHJhaW50cy0+dmFsaWRf aHdfZm9ybWF0cyA9IGF2X21hbGxvY19hcnJheSgyLA0KPnNpemVvZigqY29uc3RyYWludHMtDQo+ Pj4gPiA+IHZhbGlkX2h3X2Zvcm1hdHMpKTsNCj4+PiA+ICvCoMKgwqAgaWYgKCFjb25zdHJhaW50 cy0+dmFsaWRfaHdfZm9ybWF0cykNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJP UihFTk9NRU0pOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBjb25zdHJhaW50cy0+dmFsaWRfaHdf Zm9ybWF0c1swXSA9IEFWX1BJWF9GTVRfRDNEMTI7DQo+Pj4gPiArwqDCoMKgIGNvbnN0cmFpbnRz LT52YWxpZF9od19mb3JtYXRzWzFdID0gQVZfUElYX0ZNVF9OT05FOw0KPj4+ID4gKw0KPj4+ID4g K8KgwqDCoCByZXR1cm4gMDsNCj4+PiA+ICt9DQo+Pj4gPiArDQo+Pj4gPiArc3RhdGljIHZvaWQg ZnJlZV90ZXh0dXJlKHZvaWQgKm9wYXF1ZSwgdWludDhfdCAqZGF0YSkNCj4+PiA+ICt7DQo+Pj4g PiArwqDCoMKgIEFWRDNEMTJWQUZyYW1lICpmcmFtZSA9IChBVkQzRDEyVkFGcmFtZSAqKWRhdGE7 DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGZyYW1lLT50ZXh0 dXJlKTsNCj4+PiA+ICvCoMKgwqAgRDNEMTJfT0JKRUNUX1JFTEVBU0UoZnJhbWUtPnN5bmNfY3R4 LmZlbmNlKTsNCj4+PiA+ICvCoMKgwqAgaWYgKGZyYW1lLT5zeW5jX2N0eC5ldmVudCkNCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoCBDbG9zZUhhbmRsZShmcmFtZS0+c3luY19jdHguZXZlbnQpOw0KPj4+ ID4gKw0KPj4+ID4gK8KgwqDCoCBhdl9mcmVlcCgmZGF0YSk7DQo+Pj4gPiArfQ0KPj4+ID4gKw0K Pj4+ID4gK3N0YXRpYyBBVkJ1ZmZlclJlZiAqZDNkMTJ2YV9wb29sX2FsbG9jKHZvaWQgKm9wYXF1 ZSwgc2l6ZV90IHNpemUpDQo+Pj4gPiArew0KPj4+ID4gK8KgwqDCoCBBVkhXRnJhbWVzQ29udGV4 dMKgwqDCoMKgwqAgKmN0eMKgwqDCoMKgwqDCoMKgwqDCoCA9IChBVkhXRnJhbWVzQ29udGV4dCAq KW9wYXF1ZTsNCj4+PiA+ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqaHdjdHjCoMKg wqDCoMKgwqDCoCA9IGN0eC0+aHdjdHg7DQo+Pj4gPiArwqDCoMKgIEFWRDNEMTJWQURldmljZUNv bnRleHQgKmRldmljZV9od2N0eCA9IGN0eC0+ZGV2aWNlX2N0eC0+aHdjdHg7DQo+Pj4gPiArDQo+ Pj4gPiArwqDCoMKgIEFWQnVmZmVyUmVmICpidWY7DQo+Pj4gPiArwqDCoMKgIEFWRDNEMTJWQUZy YW1lICpmcmFtZTsNCj4+PiA+ICvCoMKgwqAgRDNEMTJfSEVBUF9QUk9QRVJUSUVTIHByb3BzID0g eyAuVHlwZSA9DQo+RDNEMTJfSEVBUF9UWVBFX0RFRkFVTFQgfTsNCj4+PiA+ICvCoMKgwqAgRDNE MTJfUkVTT1VSQ0VfREVTQyBkZXNjID0gew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5EaW1lbnNp b27CoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1JFU09VUkNFX0RJTUVOU0lPTl9URVhUVVJFMkQsDQo+ Pj4gPiArwqDCoMKgwqDCoMKgwqAgLkFsaWdubWVudMKgwqDCoMKgwqDCoMKgID0gMCwNCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoCAuV2lkdGjCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gY3R4LT53aWR0 aCwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuSGVpZ2h0wqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBj dHgtPmhlaWdodCwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuRGVwdGhPckFycmF5U2l6ZSA9IDEs DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgLk1pcExldmVsc8KgwqDCoMKgwqDCoMKgID0gMSwNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCAuRm9ybWF0wqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBod2N0eC0+ Zm9ybWF0LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5TYW1wbGVEZXNjwqDCoMKgwqDCoMKgID0g ey5Db3VudCA9IDEsIC5RdWFsaXR5ID0gMCB9LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5MYXlv dXTCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEyX1RFWFRVUkVfTEFZT1VUX1VOS05PV04sDQo+ Pj4gPiArwqDCoMKgwqDCoMKgwqAgLkZsYWdzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IEQzRDEy X1JFU09VUkNFX0ZMQUdfTk9ORSwNCj4+PiA+ICvCoMKgwqAgfTsNCj4+PiA+ICsNCj4+PiA+ICvC oMKgwqAgZnJhbWUgPSBhdl9tYWxsb2N6KHNpemVvZihBVkQzRDEyVkFGcmFtZSkpOw0KPj4+ID4g K8KgwqDCoCBpZiAoIWZyYW1lKQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOw0K Pj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBpZiAoRkFJTEVEKElEM0QxMkRldmljZV9DcmVhdGVDb21t aXR0ZWRSZXNvdXJjZShkZXZpY2VfaHdjdHgtDQo+PmRldmljZSwNCj4+PiA+ICZwcm9wcywgRDNE MTJfSEVBUF9GTEFHX05PTkUsICZkZXNjLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIEQzRDEyX1JF U09VUkNFX1NUQVRFX0NPTU1PTiwgTlVMTCwgJklJRF9JRDNEMTJSZXNvdXJjZSwNCj4odm9pZA0K Pj4+ID4gKiopJmZyYW1lLT50ZXh0dXJlKSkpIHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBhdl9s b2coY3R4LCBBVl9MT0dfRVJST1IsICJDb3VsZCBub3QgY3JlYXRlIHRoZSB0ZXh0dXJlXG4iKTsN Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7DQo+Pj4gPiArwqDCoMKgIH0NCj4+PiA+ ICsNCj4+PiA+ICvCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX0NyZWF0ZUZlbmNlKGRldmlj ZV9od2N0eC0+ZGV2aWNlLCAwLA0KPj4+ID4gRDNEMTJfRkVOQ0VfRkxBR19OT05FLA0KPj4+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICZJSURfSUQzRDEyRmVuY2UsICh2b2lkICoqKSZmcmFtZS0NCj4+ PiA+ID4gc3luY19jdHguZmVuY2UpKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgZnJhbWUtPnN5 bmNfY3R4LmV2ZW50ID0gQ3JlYXRlRXZlbnQoTlVMTCwgRkFMU0UsIEZBTFNFLCBOVUxMKTsNCj4+ PiA+ICvCoMKgwqAgaWYgKCFmcmFtZS0+c3luY19jdHguZXZlbnQpDQo+Pj4gPiArwqDCoMKgwqDC oMKgwqAgZ290byBmYWlsOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBidWYgPSBhdl9idWZmZXJf Y3JlYXRlKCh1aW50OF90ICopZnJhbWUsIHNpemVvZihmcmFtZSksIGZyZWVfdGV4dHVyZSwNCj4+ PiA+IE5VTEwsIDApOw0KPj4+ID4gK8KgwqDCoCBpZiAoIWJ1ZikNCj4+PiA+ICvCoMKgwqDCoMKg wqDCoCBnb3RvIGZhaWw7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIHJldHVybiBidWY7DQo+Pj4g PiArDQo+Pj4gPiArZmFpbDoNCj4+PiA+ICvCoMKgwqAgZnJlZV90ZXh0dXJlKE5VTEwsICh1aW50 OF90ICopZnJhbWUpOw0KPj4+ID4gK8KgwqDCoCByZXR1cm4gTlVMTDsNCj4+PiA+ICt9DQo+Pj4g PiArDQo+Pj4gPiArc3RhdGljIGludCBkM2QxMnZhX2ZyYW1lc19pbml0KEFWSFdGcmFtZXNDb250 ZXh0ICpjdHgpDQo+Pj4gPiArew0KPj4+ID4gK8KgwqDCoCBBVkQzRDEyVkFGcmFtZXNDb250ZXh0 ICpod2N0eMKgwqDCoMKgwqDCoMKgID0gY3R4LT5od2N0eDsNCj4+PiA+ICvCoMKgwqAgQVZEM0Qx MlZBRGV2aWNlQ29udGV4dCAqZGV2aWNlX2h3Y3R4ID0gY3R4LT5kZXZpY2VfY3R4LT5od2N0eDsN Cj4+PiA+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0NvbnRleHTCoMKgICpzwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7DQo+Pj4gPiArwqDCoMKgIGludCBpOw0KPj4+ ID4gKw0KPj4+ID4gK8KgwqDCoCBmb3IgKGkgPSAwOyBpIDwgRkZfQVJSQVlfRUxFTVMoc3VwcG9y dGVkX2Zvcm1hdHMpOyBpKyspIHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBpZiAoY3R4LT5zd19m b3JtYXQgPT0gc3VwcG9ydGVkX2Zvcm1hdHNbaV0ucGl4X2ZtdCkgew0KPj4+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKGh3Y3R4LT5mb3JtYXQgIT0gRFhHSV9GT1JNQVRfVU5LTk9XTiAm Jg0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBod2N0eC0+Zm9ybWF0ICE9 IHN1cHBvcnRlZF9mb3JtYXRzW2ldLmQzZF9mb3JtYXQpDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19XQVJOSU5HLCAiSW5jb21wYXRpYmxl IERYR0kgZm9ybWF0DQo+Pj4gPiBwcm92aWRlZCBieSB1c2VyLCB3aWxsIGJlIG92ZXJpZGVkXG4i KTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGh3Y3R4LT5mb3JtYXQgPSBzdXBwb3J0 ZWRfZm9ybWF0c1tpXS5kM2RfZm9ybWF0Ow0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg YnJlYWs7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ID4gK8KgwqDCoCB9DQo+Pj4gPiAr wqDCoMKgIGlmIChpID09IEZGX0FSUkFZX0VMRU1TKHN1cHBvcnRlZF9mb3JtYXRzKSkgew0KPj4+ ID4gK8KgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19FUlJPUiwgIlVuc3VwcG9ydGVk IHBpeGVsIGZvcm1hdDogJXNcbiIsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBhdl9nZXRfcGl4X2ZtdF9uYW1lKGN0eC0+c3dfZm9ybWF0KSk7DQo+Pj4gPiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4+PiA+ICvCoMKgwqAgfQ0KPj4+ID4gKw0K Pj4+ID4gK8KgwqDCoCBjdHgtPmludGVybmFsLT5wb29sX2ludGVybmFsID0NCj4+PiA+IGF2X2J1 ZmZlcl9wb29sX2luaXQyKHNpemVvZihBVkQzRDEyVkFGcmFtZSksDQo+Pj4gPiArwqDCoMKgwqDC oMKgwqAgY3R4LCBkM2QxMnZhX3Bvb2xfYWxsb2MsIE5VTEwpOw0KPj4+ID4gKw0KPj4+ID4gK8Kg wqDCoCBpZiAoIWN0eC0+aW50ZXJuYWwtPnBvb2xfaW50ZXJuYWwpDQo+Pj4gPiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuIEFWRVJST1IoRU5PTUVNKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgcmV0 dXJuIDA7DQo+Pj4gPiArfQ0KPj4+ID4gKw0KPj4+ID4gK3N0YXRpYyBpbnQgZDNkMTJ2YV9nZXRf YnVmZmVyKEFWSFdGcmFtZXNDb250ZXh0ICpjdHgsIEFWRnJhbWUNCj4qZnJhbWUpDQo+Pj4gPiAr ew0KPj4+ID4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBmcmFtZS0+ YnVmWzBdID0gYXZfYnVmZmVyX3Bvb2xfZ2V0KGN0eC0+cG9vbCk7DQo+Pj4gPiArwqDCoMKgIGlm ICghZnJhbWUtPmJ1ZlswXSkNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gQVZFUlJPUihF Tk9NRU0pOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCByZXQgPSBhdl9pbWFnZV9maWxsX2FycmF5 cyhmcmFtZS0+ZGF0YSwgZnJhbWUtPmxpbmVzaXplLCBOVUxMLA0KPj4+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjdHgtPnN3 X2Zvcm1hdCwgY3R4LT53aWR0aCwgY3R4LT5oZWlnaHQsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEQzRDEyX1RFWFRV UkVfREFUQV9QSVRDSF9BTElHTk1FTlQpOw0KPj4+ID4gK8KgwqDCoCBpZiAocmV0IDwgMCkNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBm cmFtZS0+ZGF0YVswXSA9IGZyYW1lLT5idWZbMF0tPmRhdGE7DQo+Pj4gPiArwqDCoMKgIGZyYW1l LT5mb3JtYXTCoCA9IEFWX1BJWF9GTVRfRDNEMTI7DQo+Pj4gPiArwqDCoMKgIGZyYW1lLT53aWR0 aMKgwqAgPSBjdHgtPndpZHRoOw0KPj4+ID4gK8KgwqDCoCBmcmFtZS0+aGVpZ2h0wqAgPSBjdHgt PmhlaWdodDsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgcmV0dXJuIDA7DQo+Pj4gPiArfQ0KPj4+ ID4gKw0KPj4+ID4gK3N0YXRpYyBpbnQgZDNkMTJ2YV90cmFuc2Zlcl9nZXRfZm9ybWF0cyhBVkhX RnJhbWVzQ29udGV4dCAqY3R4LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbnVtIEFW SFdGcmFtZVRyYW5zZmVyRGlyZWN0aW9uDQo+Pj4gPiBkaXIsDQo+Pj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGVudW0gQVZQaXhlbEZvcm1hdCAqKmZvcm1hdHMpDQo+Pj4gPiArew0KPj4+ID4g K8KgwqDCoCBEM0QxMlZBRnJhbWVzQ29udGV4dCAqcyA9IGN0eC0+aW50ZXJuYWwtPnByaXY7DQo+ Pj4gPiArwqDCoMKgIGVudW0gQVZQaXhlbEZvcm1hdCAqZm10czsNCj4+PiA+ICsNCj4+PiA+ICvC oMKgwqAgZm10cyA9IGF2X21hbGxvY19hcnJheSgyLCBzaXplb2YoKmZtdHMpKTsNCj4+PiA+ICvC oMKgwqAgaWYgKCFmbXRzKQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVSUk9SKEVO T01FTSk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIGZtdHNbMF0gPSBjdHgtPnN3X2Zvcm1hdDsN Cj4+PiA+ICvCoMKgwqAgZm10c1sxXSA9IEFWX1BJWF9GTVRfTk9ORTsNCj4+PiA+ICsNCj4+PiA+ ICvCoMKgwqAgKmZvcm1hdHMgPSBmbXRzOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCByZXR1cm4g MDsNCj4+PiA+ICt9DQo+Pj4gPiArDQo+Pj4gPiArc3RhdGljIGludCBkM2QxMnZhX3RyYW5zZmVy X2RhdGEoQVZIV0ZyYW1lc0NvbnRleHQgKmN0eCwgQVZGcmFtZQ0KPipkc3QsDQo+Pj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBjb25zdCBBVkZyYW1lICpzcmMpDQo+Pj4gPiArew0KPj4+ID4gK8KgwqDCoCBBVkQzRDEy VkFEZXZpY2VDb250ZXh0ICpod2N0eMKgwqDCoMKgwqDCoMKgID0gY3R4LT5kZXZpY2VfY3R4LT5o d2N0eDsNCj4+PiA+ICvCoMKgwqAgQVZEM0QxMlZBRnJhbWVzQ29udGV4dCAqZnJhbWVzX2h3Y3R4 ID0gY3R4LT5od2N0eDsNCj4+PiA+ICvCoMKgwqAgRDNEMTJWQUZyYW1lc0NvbnRleHTCoMKgICpz wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9IGN0eC0+aW50ZXJuYWwtPnByaXY7DQo+Pj4gPiArDQo+ Pj4gPiArwqDCoMKgIGludCByZXQ7DQo+Pj4gPiArwqDCoMKgIGludCBkb3dubG9hZCA9IHNyYy0+ Zm9ybWF0ID09IEFWX1BJWF9GTVRfRDNEMTI7DQo+Pj4gPiArwqDCoMKgIGNvbnN0IEFWRnJhbWUg KmZyYW1lID0gZG93bmxvYWQgPyBzcmMgOiBkc3Q7DQo+Pj4gPiArwqDCoMKgIGNvbnN0IEFWRnJh bWUgKm90aGVyID0gZG93bmxvYWQgPyBkc3QgOiBzcmM7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKg IEFWRDNEMTJWQUZyYW1lICpmID0gKEFWRDNEMTJWQUZyYW1lICopZnJhbWUtPmRhdGFbMF07DQo+ Pj4gPiArwqDCoMKgIElEM0QxMlJlc291cmNlICp0ZXh0dXJlID0gKElEM0QxMlJlc291cmNlICop Zi0+dGV4dHVyZTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgdWludDhfdCAqbWFwcGVkX2RhdGE7 DQo+Pj4gPiArwqDCoMKgIHVpbnQ4X3QgKmRhdGFbNF07DQo+Pj4gPiArwqDCoMKgIGludCBsaW5l c2l6ZXNbNF07DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIEQzRDEyX1RFWFRVUkVfQ09QWV9MT0NB VElPTiBzdGFnaW5nX3lfbG9jYXRpb27CoCA9IHsgMCB9Ow0KPj4+ID4gK8KgwqDCoCBEM0QxMl9U RVhUVVJFX0NPUFlfTE9DQVRJT04gc3RhZ2luZ191dl9sb2NhdGlvbiA9IHsgMCB9Ow0KPj4+ID4g Kw0KPj4+ID4gK8KgwqDCoCBEM0QxMl9URVhUVVJFX0NPUFlfTE9DQVRJT04gdGV4dHVyZV95X2xv Y2F0aW9uID0gew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5wUmVzb3VyY2XCoMKgwqDCoMKgwqDC oCA9IHRleHR1cmUsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgLlR5cGXCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgPSBEM0QxMl9URVhUVVJFX0NPUFlfVFlQRV9TVUJSRVNPVVJDRV9JTkRFWCwNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCAuU3VicmVzb3VyY2VJbmRleCA9IDAsDQo+Pj4gPiArwqDCoMKg IH07DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIEQzRDEyX1RFWFRVUkVfQ09QWV9MT0NBVElPTiB0 ZXh0dXJlX3V2X2xvY2F0aW9uID0gew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5wUmVzb3VyY2XC oMKgwqDCoMKgwqDCoCA9IHRleHR1cmUsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgLlR5cGXCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgPSBEM0QxMl9URVhUVVJFX0NPUFlfVFlQRV9TVUJSRVNPVVJD RV9JTkRFWCwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuU3VicmVzb3VyY2VJbmRleCA9IDEsDQo+ Pj4gPiArwqDCoMKgIH07DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIEQzRDEyX1JFU09VUkNFX0JB UlJJRVIgYmFycmllciA9IHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCAuVHlwZcKgID0gRDNEMTJf UkVTT1VSQ0VfQkFSUklFUl9UWVBFX1RSQU5TSVRJT04sDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAg LkZsYWdzID0gRDNEMTJfUkVTT1VSQ0VfQkFSUklFUl9GTEFHX05PTkUsDQo+Pj4gPiArwqDCoMKg wqDCoMKgwqAgLlRyYW5zaXRpb24gPSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAu cFJlc291cmNlwqDCoCA9IHRleHR1cmUsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAu U3RhdGVCZWZvcmUgPSBEM0QxMl9SRVNPVVJDRV9TVEFURV9DT01NT04sDQo+Pj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAuU3RhdGVBZnRlcsKgID0gZG93bmxvYWQgPw0KPkQzRDEyX1JFU09V UkNFX1NUQVRFX0NPUFlfU09VUkNFIDoNCj4+PiA+IEQzRDEyX1JFU09VUkNFX1NUQVRFX0NPUFlf REVTVCwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5TdWJyZXNvdXJjZSA9IEQzRDEy X1JFU09VUkNFX0JBUlJJRVJfQUxMX1NVQlJFU09VUkNFUywNCj4+PiA+ICvCoMKgwqDCoMKgwqDC oCB9LA0KPj4+ID4gK8KgwqDCoCB9Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBpZiAoZnJhbWUt Pmh3X2ZyYW1lc19jdHgtPmRhdGEgIT0gKHVpbnQ4X3QgKiljdHggfHwgb3RoZXItPmZvcm1hdCAh PQ0KPj4+ID4gY3R4LQ0KPj4+ID4gPiBzd19mb3JtYXQpDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIEFWRVJST1IoRUlOVkFMKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgaHdjdHgtPmxv Y2soaHdjdHgtPmxvY2tfY3R4KTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgaWYgKCFzLT5jb21t YW5kX3F1ZXVlKSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZDNkMTJ2YV9jcmVhdGVf aGVscGVyX29iamVjdHMoY3R4KTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkN Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGdvdG8gZmFpbDsNCj4+PiA+ICvCoMKgwqAg fQ0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKykNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCBsaW5lc2l6ZXNbaV0gPSBGRkFMSUdOKGZyYW1lLT53aWR0aCAq IChmcmFtZXNfaHdjdHgtPmZvcm1hdCA9PQ0KPj4+ID4gRFhHSV9GT1JNQVRfUDAxMCA/IDIgOiAx KSwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgRDNEMTJfVEVYVFVSRV9EQVRBX1BJVENIX0FMSUdOTUVOVCk7DQo+Pj4g PiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgc3RhZ2luZ195X2xvY2F0aW9uID0gKEQzRDEyX1RF WFRVUkVfQ09QWV9MT0NBVElPTikgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLlR5 cGXCoMKgwqDCoMKgID0gRDNEMTJfVEVYVFVSRV9DT1BZX1RZUEVfUExBQ0VEX0ZPT1RQUklOVCwN Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5QbGFjZWRGb290cHJpbnQgPSB7DQo+Pj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5PZmZzZXQgPSAwLA0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuRm9vdHByaW50ID0gew0KPj4+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5Gb3JtYXTCoMKgID0gZnJhbWVzX2h3 Y3R4LT5mb3JtYXQgPT0gRFhHSV9GT1JNQVRfUDAxMCA/DQo+Pj4gPiArDQo+Pj4gPiBEWEdJX0ZP Uk1BVF9SMTZfVU5PUk0NCj4+PiA+IDogRFhHSV9GT1JNQVRfUjhfVU5PUk0sDQo+Pj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLldpZHRowqDCoMKgID0gY3R4LT53 aWR0aCwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuSGVp Z2h0wqDCoCA9IGN0eC0+aGVpZ2h0LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIC5EZXB0aMKgwqDCoCA9IDEsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgLlJvd1BpdGNoID0gbGluZXNpemVzWzBdLA0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfSwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCB9Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDC oMKgwqDCoMKgIHN0YWdpbmdfdXZfbG9jYXRpb24gPSAoRDNEMTJfVEVYVFVSRV9DT1BZX0xPQ0FU SU9OKSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAuVHlwZcKgwqDCoMKgwqAgPSBE M0QxMl9URVhUVVJFX0NPUFlfVFlQRV9QTEFDRURfRk9PVFBSSU5ULA0KPj4+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgLlBsYWNlZEZvb3RwcmludCA9IHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLk9mZnNldCA9IHMtPmx1bWFfY29tcG9uZW50X3NpemUsDQo+Pj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5Gb290cHJpbnQgPSB7DQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLkZvcm1hdMKgwqAgPSBmcmFt ZXNfaHdjdHgtPmZvcm1hdCA9PSBEWEdJX0ZPUk1BVF9QMDEwID8NCj4+PiA+ICsNCj4+PiA+IERY R0lfRk9STUFUX1IxNkcxNl9VTk9STSA6IERYR0lfRk9STUFUX1I4RzhfVU5PUk0sDQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLldpZHRowqDCoMKgID0gY3R4 LT53aWR0aMKgID4+IDEsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgLkhlaWdodMKgwqAgPSBjdHgtPmhlaWdodCA+PiAxLA0KPj4+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC5EZXB0aMKgwqDCoCA9IDEsDQo+Pj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgLlJvd1BpdGNoID0gbGluZXNpemVz WzBdLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9LA0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgfSwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCB9Ow0KPj4+ID4g Kw0KPj4+ID4gK8KgwqDCoCBEWF9DSEVDSyhJRDNEMTJDb21tYW5kQWxsb2NhdG9yX1Jlc2V0KHMt PmNvbW1hbmRfYWxsb2NhdG9yKSk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIERYX0NIRUNLKElE M0QxMkdyYXBoaWNzQ29tbWFuZExpc3RfUmVzZXQocy0+Y29tbWFuZF9saXN0LCBzLQ0KPj4+ID4g PiBjb21tYW5kX2FsbG9jYXRvciwgTlVMTCkpOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBpZiAo ZG93bmxvYWQpIHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBpZiAoIXMtPnN0YWdpbmdfZG93bmxv YWRfYnVmZmVyKSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkM2QxMnZh X2NyZWF0ZV9zdGFnaW5nX2J1ZmZlcl9yZXNvdXJjZShjdHgsDQo+Pj4gPiBEM0QxMl9SRVNPVVJD RV9TVEFURV9DT1BZX0RFU1QsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmcy0NCj4+PiA+ID4gc3RhZ2luZ19kb3dubG9hZF9i dWZmZXIsIDEpOw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDApIHsN Cj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOw0KPj4+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+PiA+ ICsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBzdGFnaW5nX3lfbG9jYXRpb24ucFJlc291cmNlID0g c3RhZ2luZ191dl9sb2NhdGlvbi5wUmVzb3VyY2UgPSBzLQ0KPj4+ID4gPiBzdGFnaW5nX2Rvd25s b2FkX2J1ZmZlcjsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBJRDNEMTJHcmFwaGlj c0NvbW1hbmRMaXN0X1Jlc291cmNlQmFycmllcihzLT5jb21tYW5kX2xpc3QsIDEsDQo+Pj4gPiAm YmFycmllcik7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEyR3JhcGhpY3ND b21tYW5kTGlzdF9Db3B5VGV4dHVyZVJlZ2lvbihzLQ0KPj5jb21tYW5kX2xpc3QsDQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzdGFnaW5nX3lf bG9jYXRpb24sIDAsDQo+Pj4gPiAwLCAwLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdGV4dHVyZV95X2xvY2F0aW9uLA0KPj4+ID4gTlVMTCk7 DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEyR3JhcGhpY3NDb21tYW5kTGlz dF9Db3B5VGV4dHVyZVJlZ2lvbihzLQ0KPj5jb21tYW5kX2xpc3QsDQo+Pj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZzdGFnaW5nX3V2X2xvY2F0aW9u LA0KPj4+ID4gMCwNCj4+PiA+IDAsIDAsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgICZ0ZXh0dXJlX3V2X2xvY2F0aW9uLA0KPj4+ID4gTlVMTCk7 DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgYmFycmllci5UcmFuc2l0aW9uLlN0YXRl QmVmb3JlID0gYmFycmllci5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXI7DQo+Pj4gPiArwqDCoMKgwqDC oMKgwqAgYmFycmllci5UcmFuc2l0aW9uLlN0YXRlQWZ0ZXLCoCA9IEQzRDEyX1JFU09VUkNFX1NU QVRFX0NPTU1PTjsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBJRDNEMTJHcmFwaGljc0NvbW1hbmRM aXN0X1Jlc291cmNlQmFycmllcihzLT5jb21tYW5kX2xpc3QsIDEsDQo+Pj4gPiAmYmFycmllcik7 DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyR3JhcGhpY3ND b21tYW5kTGlzdF9DbG9zZShzLT5jb21tYW5kX2xpc3QpKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKg wqDCoMKgwqDCoCBEWF9DSEVDSyhJRDNEMTJDb21tYW5kUXVldWVfV2FpdChzLT5jb21tYW5kX3F1 ZXVlLCBmLQ0KPj4+ID4gPnN5bmNfY3R4LmZlbmNlLA0KPj4+ID4gZi0+c3luY19jdHguZmVuY2Vf dmFsdWUpKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBJRDNEMTJDb21tYW5kUXVl dWVfRXhlY3V0ZUNvbW1hbmRMaXN0cyhzLQ0KPj5jb21tYW5kX3F1ZXVlLCAxLA0KPj4+ID4gKElE M0QxMkNvbW1hbmRMaXN0ICoqKSZzLT5jb21tYW5kX2xpc3QpOw0KPj4+ID4gKw0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgIHJldCA9IGQzZDEydmFfd2FpdF9xdWV1ZV9pZGxlKCZzLT5zeW5jX2N0eCwg cy0NCj4+Y29tbWFuZF9xdWV1ZSk7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgaWYgKHJldCA8IDAp DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7DQo+Pj4gPiArDQo+Pj4g PiArwqDCoMKgwqDCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyUmVzb3VyY2VfTWFwKHMtPnN0YWdpbmdf ZG93bmxvYWRfYnVmZmVyLCAwLA0KPk5VTEwsDQo+Pj4gPiAodm9pZCAqKikmbWFwcGVkX2RhdGEp KTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBhdl9pbWFnZV9maWxsX3BvaW50ZXJzKGRhdGEsIGN0 eC0+c3dfZm9ybWF0LCBjdHgtPmhlaWdodCwNCj4+PiA+IG1hcHBlZF9kYXRhLCBsaW5lc2l6ZXMp Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGF2X2ltYWdlX2NvcHkoZHN0LT5kYXRh LCBkc3QtPmxpbmVzaXplLCBkYXRhLCBsaW5lc2l6ZXMsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGN0eC0+c3dfZm9ybWF0LCBjdHgtPndpZHRoLCBj dHgtPmhlaWdodCk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEyUmVzb3Vy Y2VfVW5tYXAocy0+c3RhZ2luZ19kb3dubG9hZF9idWZmZXIsIDAsIE5VTEwpOw0KPj4+ID4gK8Kg wqDCoCB9IGVsc2Ugew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGlmICghcy0+c3RhZ2luZ191cGxv YWRfYnVmZmVyKSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXQgPSBkM2QxMnZh X2NyZWF0ZV9zdGFnaW5nX2J1ZmZlcl9yZXNvdXJjZShjdHgsDQo+Pj4gPiBEM0QxMl9SRVNPVVJD RV9TVEFURV9HRU5FUklDX1JFQUQsDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnMtDQo+Pj4gPiA+IHN0YWdpbmdfdXBsb2FkX2J1 ZmZlciwgMCk7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkgew0K Pj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBnb3RvIGZhaWw7DQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ID4g Kw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIHN0YWdpbmdfeV9sb2NhdGlvbi5wUmVzb3VyY2UgPSBz dGFnaW5nX3V2X2xvY2F0aW9uLnBSZXNvdXJjZSA9IHMtDQo+Pj4gPiA+IHN0YWdpbmdfdXBsb2Fk X2J1ZmZlcjsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBEWF9DSEVDSyhJRDNEMTJS ZXNvdXJjZV9NYXAocy0+c3RhZ2luZ191cGxvYWRfYnVmZmVyLCAwLA0KPk5VTEwsDQo+Pj4gPiAo dm9pZA0KPj4+ID4gKiopJm1hcHBlZF9kYXRhKSk7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgYXZf aW1hZ2VfZmlsbF9wb2ludGVycyhkYXRhLCBjdHgtPnN3X2Zvcm1hdCwgY3R4LT5oZWlnaHQsDQo+ Pj4gPiBtYXBwZWRfZGF0YSwgbGluZXNpemVzKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqDCoMKg wqDCoCBhdl9pbWFnZV9jb3B5KGRhdGEsIGxpbmVzaXplcywgc3JjLT5kYXRhLCBzcmMtPmxpbmVz aXplLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBj dHgtPnN3X2Zvcm1hdCwgY3R4LT53aWR0aCwgY3R4LT5oZWlnaHQpOw0KPj4+ID4gKw0KPj4+ID4g K8KgwqDCoMKgwqDCoMKgIElEM0QxMlJlc291cmNlX1VubWFwKHMtPnN0YWdpbmdfdXBsb2FkX2J1 ZmZlciwgMCwgTlVMTCk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgSUQzRDEyR3Jh cGhpY3NDb21tYW5kTGlzdF9SZXNvdXJjZUJhcnJpZXIocy0+Y29tbWFuZF9saXN0LCAxLA0KPj4+ ID4gJmJhcnJpZXIpOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIElEM0QxMkdyYXBo aWNzQ29tbWFuZExpc3RfQ29weVRleHR1cmVSZWdpb24ocy0NCj4+Y29tbWFuZF9saXN0LA0KPj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdGV4dHVy ZV95X2xvY2F0aW9uLCAwLA0KPj4+ID4gMCwgMCwNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJnN0YWdpbmdfeV9sb2NhdGlvbiwNCj4+PiA+IE5V TEwpOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIElEM0QxMkdyYXBoaWNzQ29tbWFu ZExpc3RfQ29weVRleHR1cmVSZWdpb24ocy0NCj4+Y29tbWFuZF9saXN0LA0KPj4+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmdGV4dHVyZV91dl9sb2Nh dGlvbiwNCj4+PiA+IDAsDQo+Pj4gPiAwLCAwLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAmc3RhZ2luZ191dl9sb2NhdGlvbiwNCj4+PiA+IE5V TEwpOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGJhcnJpZXIuVHJhbnNpdGlvbi5T dGF0ZUJlZm9yZSA9IGJhcnJpZXIuVHJhbnNpdGlvbi5TdGF0ZUFmdGVyOw0KPj4+ID4gK8KgwqDC oMKgwqDCoMKgIGJhcnJpZXIuVHJhbnNpdGlvbi5TdGF0ZUFmdGVyID0gRDNEMTJfUkVTT1VSQ0Vf U1RBVEVfQ09NTU9OOw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIElEM0QxMkdyYXBoaWNzQ29tbWFu ZExpc3RfUmVzb3VyY2VCYXJyaWVyKHMtPmNvbW1hbmRfbGlzdCwgMSwNCj4+PiA+ICZiYXJyaWVy KTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBEWF9DSEVDSyhJRDNEMTJHcmFwaGlj c0NvbW1hbmRMaXN0X0Nsb3NlKHMtPmNvbW1hbmRfbGlzdCkpOw0KPj4+ID4gKw0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgIElEM0QxMkNvbW1hbmRRdWV1ZV9FeGVjdXRlQ29tbWFuZExpc3RzKHMtDQo+ PmNvbW1hbmRfcXVldWUsIDEsDQo+Pj4gPiAoSUQzRDEyQ29tbWFuZExpc3QgKiopJnMtPmNvbW1h bmRfbGlzdCk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gZDNkMTJ2YV93 YWl0X3F1ZXVlX2lkbGUoJnMtPnN5bmNfY3R4LCBzLQ0KPj5jb21tYW5kX3F1ZXVlKTsNCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0IDwgMCkNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGdvdG8gZmFpbDsNCj4+PiA+ICvCoMKgwqAgfQ0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBo d2N0eC0+dW5sb2NrKGh3Y3R4LT5sb2NrX2N0eCk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIHJl dHVybiAwOw0KPj4+ID4gKw0KPj4+ID4gK2ZhaWw6DQo+Pj4gPiArwqDCoMKgIGh3Y3R4LT51bmxv Y2soaHdjdHgtPmxvY2tfY3R4KTsNCj4+PiA+ICvCoMKgwqAgcmV0dXJuIEFWRVJST1IoRUlOVkFM KTsNCj4+PiA+ICt9DQo+Pj4gPiArDQo+Pj4gPiArc3RhdGljIGludCBkM2QxMnZhX2xvYWRfZnVu Y3Rpb25zKEFWSFdEZXZpY2VDb250ZXh0ICpod2RldikNCj4+PiA+ICt7DQo+Pj4gPiArwqDCoMKg IEQzRDEyVkFEZXZpY2VQcml2ICpwcml2ID0gaHdkZXYtPmludGVybmFsLT5wcml2Ow0KPj4+ID4g Kw0KPj4+ID4gKyNpZiAhSEFWRV9VV1ANCj4+PiA+ICvCoMKgwqAgcHJpdi0+ZDNkMTJsaWIgPSBk bG9wZW4oImQzZDEyLmRsbCIsIDApOw0KPj4+ID4gK8KgwqDCoCBwcml2LT5keGdpbGliwqAgPSBk bG9wZW4oImR4Z2kuZGxsIiwgMCk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIGlmICghcHJpdi0+ ZDNkMTJsaWIgfHwgIXByaXYtPmR4Z2lsaWIpDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgZ290byBm YWlsOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBwcml2LT5jcmVhdGVfZGV2aWNlID0NCj4oUEZO X0QzRDEyX0NSRUFURV9ERVZJQ0UpR2V0UHJvY0FkZHJlc3MocHJpdi0NCj4+PiA+ID4gZDNkMTJs aWIsICJEM0QxMkNyZWF0ZURldmljZSIpOw0KPj4+ID4gK8KgwqDCoCBpZiAoIXByaXYtPmNyZWF0 ZV9kZXZpY2UpDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOw0KPj4+ID4gKw0KPj4+ ID4gK8KgwqDCoCBwcml2LT5jcmVhdGVfZHhnaV9mYWN0b3J5MiA9DQo+Pj4gPiAoUEZOX0NSRUFU RV9EWEdJX0ZBQ1RPUlkyKUdldFByb2NBZGRyZXNzKHByaXYtPmR4Z2lsaWIsDQo+Pj4gPiAiQ3Jl YXRlRFhHSUZhY3RvcnkyIik7DQo+Pj4gPiArwqDCoMKgIGlmICghcHJpdi0+Y3JlYXRlX2R4Z2lf ZmFjdG9yeTIpDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgZ290byBmYWlsOw0KPj4+ID4gKw0KPj4+ ID4gK8KgwqDCoCBwcml2LT5nZXRfZGVidWdfaW50ZXJmYWNlwqAgPQ0KPj4+ID4gKFBGTl9EM0Qx Ml9HRVRfREVCVUdfSU5URVJGQUNFKUdldFByb2NBZGRyZXNzKHByaXYtPmQzZDEybGliLA0KPj4+ ID4gIkQzRDEyR2V0RGVidWdJbnRlcmZhY2UiKTsNCj4+PiA+ICsjZWxzZQ0KPj4+ID4gK8KgwqDC oCBwcml2LT5jcmVhdGVfZGV2aWNlwqDCoMKgwqDCoMKgwqAgPSAoUEZOX0QzRDEyX0NSRUFURV9E RVZJQ0UpDQo+Pj4gPiBEM0QxMkNyZWF0ZURldmljZTsNCj4+PiA+ICvCoMKgwqAgcHJpdi0+Y3Jl YXRlX2R4Z2lfZmFjdG9yeTIgPSAoUEZOX0NSRUFURV9EWEdJX0ZBQ1RPUlkyKQ0KPj4+ID4gQ3Jl YXRlRFhHSUZhY3RvcnkyOw0KPj4+ID4gK8KgwqDCoCBwcml2LT5nZXRfZGVidWdfaW50ZXJmYWNl wqAgPSAoUEZOX0QzRDEyX0dFVF9ERUJVR19JTlRFUkZBQ0UpDQo+Pj4gPiBEM0QxMkdldERlYnVn SW50ZXJmYWNlOw0KPj4+ID4gKyNlbmRpZg0KPj4+ID4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiA+ ICsNCj4+PiA+ICtmYWlsOg0KPj4+ID4gK8KgwqDCoCBhdl9sb2coaHdkZXYsIEFWX0xPR19FUlJP UiwgIkZhaWxlZCB0byBsb2FkIEQzRDEyIGxpYnJhcnkgb3IgaXRzDQo+Pj4gPiBmdW5jdGlvbnNc biIpOw0KPj4+ID4gK8KgwqDCoCByZXR1cm4gQVZFUlJPUl9VTktOT1dOOw0KPj4+ID4gK30NCj4+ PiA+ICsNCj4+PiA+ICtzdGF0aWMgdm9pZCBkM2QxMnZhX2RldmljZV9mcmVlKEFWSFdEZXZpY2VD b250ZXh0ICpod2RldikNCj4+PiA+ICt7DQo+Pj4gPiArwqDCoMKgIEFWRDNEMTJWQURldmljZUNv bnRleHQgKmN0eMKgID0gaHdkZXYtPmh3Y3R4Ow0KPj4+ID4gK8KgwqDCoCBEM0QxMlZBRGV2aWNl UHJpdsKgwqDCoMKgwqAgKnByaXYgPSBod2Rldi0+aW50ZXJuYWwtPnByaXY7DQo+Pj4gPiArDQo+ Pj4gPiArwqDCoMKgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGN0eC0+ZGV2aWNlKTsNCj4+PiA+ICsN Cj4+PiA+ICvCoMKgwqAgaWYgKHByaXYtPmQzZDEybGliKQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKg IGRsY2xvc2UocHJpdi0+ZDNkMTJsaWIpOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBpZiAocHJp di0+ZHhnaWxpYikNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBkbGNsb3NlKHByaXYtPmR4Z2lsaWIp Ow0KPj4+ID4gK30NCj4+PiA+ICsNCj4+PiA+ICtzdGF0aWMgaW50IGQzZDEydmFfZGV2aWNlX2lu aXQoQVZIV0RldmljZUNvbnRleHQgKmh3ZGV2KQ0KPj4+ID4gK3sNCj4+PiA+ICvCoMKgwqAgQVZE M0QxMlZBRGV2aWNlQ29udGV4dCAqY3R4ID0gaHdkZXYtPmh3Y3R4Ow0KPj4+ID4gKw0KPj4+ID4g K8KgwqDCoCBpZiAoIWN0eC0+bG9jaykgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGN0eC0+bG9j a19jdHggPSBDcmVhdGVNdXRleChOVUxMLCAwLCBOVUxMKTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDC oCBpZiAoY3R4LT5sb2NrX2N0eCA9PSBJTlZBTElEX0hBTkRMRV9WQUxVRSkgew0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKE5VTEwsIEFWX0xPR19FUlJPUiwgIkZhaWxlZCB0 byBjcmVhdGUgYSBtdXRleFxuIik7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1 cm4gQVZFUlJPUihFSU5WQUwpOw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+PiA+ICvCoMKg wqDCoMKgwqDCoCBjdHgtPmxvY2vCoMKgID0gZDNkMTJ2YV9kZWZhdWx0X2xvY2s7DQo+Pj4gPiAr wqDCoMKgwqDCoMKgwqAgY3R4LT51bmxvY2sgPSBkM2QxMnZhX2RlZmF1bHRfdW5sb2NrOw0KPj4+ ID4gK8KgwqDCoCB9DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIGlmICghY3R4LT52aWRlb19kZXZp Y2UpDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgRFhfQ0hFQ0soSUQzRDEyRGV2aWNlX1F1ZXJ5SW50 ZXJmYWNlKGN0eC0+ZGV2aWNlLA0KPj4+ID4gJklJRF9JRDNEMTJWaWRlb0RldmljZSwgKHZvaWQg KiopJmN0eC0+dmlkZW9fZGV2aWNlKSk7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIHJldHVybiAw Ow0KPj4+ID4gKw0KPj4+ID4gK2ZhaWw6DQo+Pj4gPiArwqDCoMKgIHJldHVybiBBVkVSUk9SKEVJ TlZBTCk7DQo+Pj4gPiArfQ0KPj4+ID4gKw0KPj4+ID4gK3N0YXRpYyB2b2lkIGQzZDEydmFfZGV2 aWNlX3VuaW5pdChBVkhXRGV2aWNlQ29udGV4dCAqaHdkZXYpDQo+Pj4gPiArew0KPj4+ID4gK8Kg wqDCoCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpkZXZpY2VfaHdjdHggPSBod2Rldi0+aHdjdHg7 DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIEQzRDEyX09CSkVDVF9SRUxFQVNFKGRldmljZV9od2N0 eC0+dmlkZW9fZGV2aWNlKTsNCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgaWYgKGRldmljZV9od2N0 eC0+bG9jayA9PSBkM2QxMnZhX2RlZmF1bHRfbG9jaykgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKg IENsb3NlSGFuZGxlKGRldmljZV9od2N0eC0+bG9ja19jdHgpOw0KPj4+ID4gK8KgwqDCoMKgwqDC oMKgIGRldmljZV9od2N0eC0+bG9ja19jdHggPSBJTlZBTElEX0hBTkRMRV9WQUxVRTsNCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoCBkZXZpY2VfaHdjdHgtPmxvY2sgPSBOVUxMOw0KPj4+ID4gK8KgwqDC oCB9DQo+Pj4gPiArfQ0KPj4+ID4gKw0KPj4+ID4gK3N0YXRpYyBpbnQgZDNkMTJ2YV9kZXZpY2Vf Y3JlYXRlKEFWSFdEZXZpY2VDb250ZXh0ICpod2RldiwgY29uc3QNCj5jaGFyDQo+Pj4gPiAqZGV2 aWNlLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgQVZEaWN0aW9uYXJ5ICpvcHRzLCBpbnQgZmxhZ3MpDQo+Pj4g PiArew0KPj4+ID4gK8KgwqDCoCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0ICpjdHjCoCA9IGh3ZGV2 LT5od2N0eDsNCj4+PiA+ICvCoMKgwqAgRDNEMTJWQURldmljZVByaXbCoMKgwqDCoMKgICpwcml2 ID0gaHdkZXYtPmludGVybmFsLT5wcml2Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBIUkVTVUxU IGhyOw0KPj4+ID4gK8KgwqDCoCBVSU5UIGNyZWF0ZV9mbGFncyA9IDA7DQo+Pj4gPiArwqDCoMKg IElEWEdJQWRhcHRlciAqcEFkYXB0ZXIgPSBOVUxMOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBp bnQgcmV0Ow0KPj4+ID4gK8KgwqDCoCBpbnQgaXNfZGVidWcgPSAhIWF2X2RpY3RfZ2V0KG9wdHMs ICJkZWJ1ZyIsIE5VTEwsIDApOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBod2Rldi0+ZnJlZSA9 IGQzZDEydmFfZGV2aWNlX2ZyZWU7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIHJldCA9IGQzZDEy dmFfbG9hZF9mdW5jdGlvbnMoaHdkZXYpOw0KPj4+ID4gK8KgwqDCoCBpZiAocmV0IDwgMCkNCj4+ PiA+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCBp ZiAoaXNfZGVidWcpIHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBJRDNEMTJEZWJ1ZyAqcERlYnVn Ow0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGlmIChwcml2LT5nZXRfZGVidWdfaW50ZXJmYWNlICYm IFNVQ0NFRURFRChwcml2LQ0KPj4+ID4gPiBnZXRfZGVidWdfaW50ZXJmYWNlKCZJSURfSUQzRDEy RGVidWcsICh2b2lkICoqKSZwRGVidWcpKSkgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY3JlYXRlX2ZsYWdzIHw9IERYR0lfQ1JFQVRFX0ZBQ1RPUllfREVCVUc7DQo+Pj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBJRDNEMTJEZWJ1Z19FbmFibGVEZWJ1Z0xheWVyKHBEZWJ1Zyk7 DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEM0QxMl9PQkpFQ1RfUkVMRUFTRShwRGVi dWcpOw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXZfbG9nKGh3ZGV2LCBBVl9MT0df SU5GTywgIkQzRDEyIGRlYnVnIGxheWVyIGlzIGVuYWJsZWQhXG4iKTsNCj4+PiA+ICvCoMKgwqDC oMKgwqDCoCB9DQo+Pj4gPiArwqDCoMKgIH0NCj4+PiA+ICsNCj4+PiA+ICvCoMKgwqAgaWYgKCFj dHgtPmRldmljZSkgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIElEWEdJRmFjdG9yeTIgKnBEWEdJ RmFjdG9yeSA9IE5VTEw7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgaHIgPSBwcml2 LT5jcmVhdGVfZHhnaV9mYWN0b3J5MihjcmVhdGVfZmxhZ3MsICZJSURfSURYR0lGYWN0b3J5MiwN Cj4+PiA+ICh2b2lkICoqKSZwRFhHSUZhY3RvcnkpOw0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIGlm IChTVUNDRUVERUQoaHIpKSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbnQgYWRh cHRlciA9IGRldmljZSA/IGF0b2koZGV2aWNlKSA6IDA7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpZiAoRkFJTEVEKElEWEdJRmFjdG9yeTJfRW51bUFkYXB0ZXJzKHBEWEdJRmFjdG9y eSwgYWRhcHRlciwNCj4+PiA+ICZwQWRhcHRlcikpKQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBwQWRhcHRlciA9IE5VTEw7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBJRFhHSUZhY3RvcnkyX1JlbGVhc2UocERYR0lGYWN0b3J5KTsNCj4+PiA+ICvCoMKgwqDC oMKgwqDCoCB9DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgaWYgKHBBZGFwdGVyKSB7 DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEWEdJX0FEQVBURVJfREVTQyBkZXNjOw0K Pj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaHIgPSBJRFhHSUFkYXB0ZXIyX0dldERlc2Mo cEFkYXB0ZXIsICZkZXNjKTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmICghRkFJ TEVEKGhyKSkgew0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhdl9sb2co Y3R4LCBBVl9MT0dfSU5GTywgIlVzaW5nIGRldmljZSAlMDR4OiUwNHggKCVscykuXG4iLA0KPj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc2MuVmVu ZG9ySWQsIGRlc2MuRGV2aWNlSWQsIGRlc2MuRGVzY3JpcHRpb24pOw0KPj4+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqAgfQ0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+PiA+ICsNCj4+PiA+ ICvCoMKgwqDCoMKgwqDCoCBociA9IHByaXYtPmNyZWF0ZV9kZXZpY2UoKElVbmtub3duICopcEFk YXB0ZXIsDQo+Pj4gPiBEM0RfRkVBVFVSRV9MRVZFTF8xMl8wLCAmSUlEX0lEM0QxMkRldmljZSwg KHZvaWQgKiopJmN0eC0+ZGV2aWNlKTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoCBEM0QxMl9PQkpF Q1RfUkVMRUFTRShwQWRhcHRlcik7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgaWYgKEZBSUxFRCho cikpIHsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGF2X2xvZyhjdHgsIEFWX0xPR19F UlJPUiwgIkZhaWxlZCB0byBjcmVhdGUgRGlyZWN0IDNEIDEyIGRldmljZQ0KPj4+ID4gKCVseClc biIsIChsb25nKWhyKTsNCj4+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBBVkVS Uk9SX1VOS05PV047DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ID4gK8KgwqDCoCB9DQo+ Pj4gPiArDQo+Pj4gPiArwqDCoMKgIHJldHVybiAwOw0KPj4+ID4gK30NCj4+PiA+ICsNCj4+PiA+ ICtjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBlX2QzZDEydmEgPSB7DQo+Pj4g PiArwqDCoMKgIC50eXBlwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gQVZf SFdERVZJQ0VfVFlQRV9EM0QxMlZBLA0KPj4+ID4gK8KgwqDCoCAubmFtZcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCA9ICJEM0QxMlZBIiwNCj4+PiA+ICsNCj4+PiA+ICvCoMKg wqAgLmRldmljZV9od2N0eF9zaXplwqDCoMKgwqDCoCA9IHNpemVvZihBVkQzRDEyVkFEZXZpY2VD b250ZXh0KSwNCj4+PiA+ICvCoMKgwqAgLmRldmljZV9wcml2X3NpemXCoMKgwqDCoMKgwqAgPSBz aXplb2YoRDNEMTJWQURldmljZVByaXYpLA0KPj4+ID4gK8KgwqDCoCAuZnJhbWVzX2h3Y3R4X3Np emXCoMKgwqDCoMKgID0gc2l6ZW9mKEFWRDNEMTJWQUZyYW1lc0NvbnRleHQpLA0KPj4+ID4gK8Kg wqDCoCAuZnJhbWVzX3ByaXZfc2l6ZcKgwqDCoMKgwqDCoCA9IHNpemVvZihEM0QxMlZBRnJhbWVz Q29udGV4dCksDQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIC5kZXZpY2VfY3JlYXRlwqDCoMKgwqDC oMKgwqDCoMKgID0gZDNkMTJ2YV9kZXZpY2VfY3JlYXRlLA0KPj4+ID4gK8KgwqDCoCAuZGV2aWNl X2luaXTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0gZDNkMTJ2YV9kZXZpY2VfaW5pdCwNCj4+PiA+ ICvCoMKgwqAgLmRldmljZV91bmluaXTCoMKgwqDCoMKgwqDCoMKgwqAgPSBkM2QxMnZhX2Rldmlj ZV91bmluaXQsDQo+Pj4gPiArwqDCoMKgIC5mcmFtZXNfZ2V0X2NvbnN0cmFpbnRzID0gZDNkMTJ2 YV9mcmFtZXNfZ2V0X2NvbnN0cmFpbnRzLA0KPj4+ID4gK8KgwqDCoCAuZnJhbWVzX2luaXTCoMKg wqDCoMKgwqDCoMKgwqDCoMKgID0gZDNkMTJ2YV9mcmFtZXNfaW5pdCwNCj4+PiA+ICvCoMKgwqAg LmZyYW1lc191bmluaXTCoMKgwqDCoMKgwqDCoMKgwqAgPSBkM2QxMnZhX2ZyYW1lc191bmluaXQs DQo+Pj4gPiArwqDCoMKgIC5mcmFtZXNfZ2V0X2J1ZmZlcsKgwqDCoMKgwqAgPSBkM2QxMnZhX2dl dF9idWZmZXIsDQo+Pj4gPiArwqDCoMKgIC50cmFuc2Zlcl9nZXRfZm9ybWF0c8KgwqAgPSBkM2Qx MnZhX3RyYW5zZmVyX2dldF9mb3JtYXRzLA0KPj4+ID4gK8KgwqDCoCAudHJhbnNmZXJfZGF0YV90 b8KgwqDCoMKgwqDCoCA9IGQzZDEydmFfdHJhbnNmZXJfZGF0YSwNCj4+PiA+ICvCoMKgwqAgLnRy YW5zZmVyX2RhdGFfZnJvbcKgwqDCoMKgID0gZDNkMTJ2YV90cmFuc2Zlcl9kYXRhLA0KPj4+ID4g Kw0KPj4+ID4gK8KgwqDCoCAucGl4X2ZtdHPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgID0g KGNvbnN0IGVudW0gQVZQaXhlbEZvcm1hdFtdKXsNCj4+PiA+IEFWX1BJWF9GTVRfRDNEMTIsDQo+ Pj4gPiBBVl9QSVhfRk1UX05PTkUgfSwNCj4+PiA+ICt9Ow0KPj4+ID4gZGlmZiAtLWdpdCBhL2xp YmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YS5oDQo+Yi9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEy dmEuaA0KPj4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiA+IGluZGV4IDAwMDAwMDAwMDAu LmZmMDZlNmYyZWYNCj4+PiA+IC0tLSAvZGV2L251bGwNCj4+PiA+ICsrKyBiL2xpYmF2dXRpbC9o d2NvbnRleHRfZDNkMTJ2YS5oDQo+Pj4gPiBAQCAtMCwwICsxLDEzNCBAQA0KPj4+ID4gKy8qDQo+ Pj4gPiArICogRGlyZWN0M0QgMTIgSFcgYWNjZWxlcmF0aW9uLg0KPj4+ID4gKyAqDQo+Pj4gPiAr ICogY29weXJpZ2h0IChjKSAyMDIyLTIwMjMgV3UgSmlhbmh1YSA8dG9xc3h3QG91dGxvb2suY29t Pg0KPj4+ID4gKyAqDQo+Pj4gPiArICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgRkZtcGVnLg0KPj4+ ID4gKyAqDQo+Pj4gPiArICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0 cmlidXRlIGl0IGFuZC9vcg0KPj4+ID4gKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMNCj4+PiA+ICsgKiBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCj4+PiA+ICsgKiB2 ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4NCj4+PiA+ICsgKg0KPj4+ID4gKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLA0KPj4+ID4gKyAqIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mDQo+Pj4gPiAr ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLsKg IFNlZSB0aGUNCj5HTlUNCj4+PiA+ICsgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLg0KPj4+ID4gKyAqDQo+Pj4gPiArICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYw0KPj4+ID4gKyAq IExpY2Vuc2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUNCj4+PiA+ICsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp ZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLQ0KPjEzMDENCj4+PiA+IFVTQQ0KPj4+ID4gKyAq Lw0KPj4+ID4gKw0KPj4+ID4gKyNpZm5kZWYgQVZVVElMX0hXQ09OVEVYVF9EM0QxMlZBX0gNCj4+ PiA+ICsjZGVmaW5lIEFWVVRJTF9IV0NPTlRFWFRfRDNEMTJWQV9IDQo+Pj4gPiArDQo+Pj4gPiAr LyoqDQo+Pj4gPiArICogQGZpbGUNCj4+PiA+ICsgKiBBbiBBUEktc3BlY2lmaWMgaGVhZGVyIGZv ciBBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkEuDQo+Pj4gPiArICoNCj4+PiA+ICsgKiBBVkhXRnJh bWVzQ29udGV4dC5wb29sIG11c3QgY29udGFpbiBBVkJ1ZmZlclJlZnMgd2hvc2UNCj4+PiA+ICsg KiBkYXRhIHBvaW50ZXIgcG9pbnRzIHRvIGFuIEFWRDNEMTJWQUZyYW1lIHN0cnVjdC4NCj4+PiA+ ICsgKi8NCj4+PiA+ICsjaW5jbHVkZSA8c3RkaW50Lmg+DQo+Pj4gPiArI2luY2x1ZGUgPGluaXRn dWlkLmg+DQo+Pj4gPiArI2luY2x1ZGUgPGQzZDEyLmg+DQo+Pj4gPiArI2luY2x1ZGUgPGQzZDEy c2RrbGF5ZXJzLmg+DQo+Pj4gPiArI2luY2x1ZGUgPGQzZDEydmlkZW8uaD4NCj4+PiA+ICsNCj4+ PiA+ICsvKioNCj4+PiA+ICsgKiBAYnJpZWYgVGhpcyBzdHJ1Y3QgaXMgYWxsb2NhdGVkIGFzIEFW SFdEZXZpY2VDb250ZXh0Lmh3Y3R4DQo+Pj4gPiArICoNCj4+PiA+ICsgKi8NCj4+PiA+ICt0eXBl ZGVmIHN0cnVjdCBBVkQzRDEyVkFEZXZpY2VDb250ZXh0IHsNCj4+PiA+ICvCoMKgwqAgLyoqDQo+ Pj4gPiArwqDCoMKgwqAgKiBEZXZpY2UgdXNlZCBmb3Igb2JqZWN0cyBjcmVhdGlvbiBhbmQgYWNj ZXNzLiBUaGlzIGNhbiBhbHNvIGJlDQo+Pj4gPiArwqDCoMKgwqAgKiB1c2VkIHRvIHNldCB0aGUg bGliYXZjb2RlYyBkZWNvZGluZyBkZXZpY2UuDQo+Pj4gPiArwqDCoMKgwqAgKg0KPj4+ID4gK8Kg wqDCoMKgICogQ2FuIGJlIHNldCBieSB0aGUgdXNlci4gVGhpcyBpcyB0aGUgb25seSBtYW5kYXRv cnkgZmllbGQgLSB0aGUgb3RoZXINCj4+PiA+ICvCoMKgwqDCoCAqIGRldmljZSBjb250ZXh0IGZp ZWxkcyBhcmUgc2V0IGZyb20gdGhpcyBhbmQgYXJlIGF2YWlsYWJsZSBmb3INCj4+PiA+IGNvbnZl bmllbmNlLg0KPj4+ID4gK8KgwqDCoMKgICoNCj4+PiA+ICvCoMKgwqDCoCAqIERlYWxsb2NhdGlu ZyB0aGUgQVZIV0RldmljZUNvbnRleHQgd2lsbCBhbHdheXMgcmVsZWFzZSB0aGlzDQo+Pj4gPiBp bnRlcmZhY2UsDQo+Pj4gPiArwqDCoMKgwqAgKiBhbmQgaXQgZG9lcyBub3QgbWF0dGVyIHdoZXRo ZXIgaXQgd2FzIHVzZXItYWxsb2NhdGVkLg0KPj4+ID4gK8KgwqDCoMKgICovDQo+Pj4gPiArwqDC oMKgIElEM0QxMkRldmljZSAqZGV2aWNlOw0KPj4+ID4gKw0KPj4+ID4gK8KgwqDCoCAvKioNCj4+ PiA+ICvCoMKgwqDCoCAqIElmIHVuc2V0LCB0aGlzIHdpbGwgYmUgc2V0IGZyb20gdGhlIGRldmlj ZSBmaWVsZCBvbiBpbml0Lg0KPj4+ID4gK8KgwqDCoMKgICoNCj4+PiA+ICvCoMKgwqDCoCAqIERl YWxsb2NhdGluZyB0aGUgQVZIV0RldmljZUNvbnRleHQgd2lsbCBhbHdheXMgcmVsZWFzZSB0aGlz DQo+Pj4gPiBpbnRlcmZhY2UsDQo+Pj4gPiArwqDCoMKgwqAgKiBhbmQgaXQgZG9lcyBub3QgbWF0 dGVyIHdoZXRoZXIgaXQgd2FzIHVzZXItYWxsb2NhdGVkLg0KPj4+ID4gK8KgwqDCoMKgICovDQo+ Pj4gPiArwqDCoMKgIElEM0QxMlZpZGVvRGV2aWNlICp2aWRlb19kZXZpY2U7DQo+Pj4gPiArDQo+ Pj4gPiArwqDCoMKgIC8qKg0KPj4+ID4gK8KgwqDCoMKgICogQ2FsbGJhY2tzIGZvciBsb2NraW5n LiBUaGV5IHByb3RlY3QgYWNjZXNzIHRvIHRoZSBpbnRlcm5hbCBzdGFnaW5nDQo+Pj4gPiArwqDC oMKgwqAgKiB0ZXh0dXJlIChmb3IgYXZfaHdmcmFtZV90cmFuc2Zlcl9kYXRhKCkgY2FsbHMpLiBU aGV5IGRvIE5PVCBwcm90ZWN0DQo+Pj4gPiArwqDCoMKgwqAgKiBhY2Nlc3MgdG8gaHdjb250ZXh0 IG9yIGRlY29kZXIgc3RhdGUgaW4gZ2VuZXJhbC4NCj4+PiA+ICvCoMKgwqDCoCAqDQo+Pj4gPiAr wqDCoMKgwqAgKiBJZiB1bnNldCBvbiBpbml0LCB0aGUgaHdjb250ZXh0IGltcGxlbWVudGF0aW9u IHdpbGwgc2V0IHRoZW0gdG8gdXNlDQo+Pj4gPiBhbg0KPj4+ID4gK8KgwqDCoMKgICogaW50ZXJu YWwgbXV0ZXguDQo+Pj4gPiArwqDCoMKgwqAgKg0KPj4+ID4gK8KgwqDCoMKgICogVGhlIHVuZGVy bHlpbmcgbG9jayBtdXN0IGJlIHJlY3Vyc2l2ZS4gbG9ja19jdHggaXMgZm9yIGZyZWUgdXNlIGJ5 DQo+Pj4gPiB0aGUNCj4+PiA+ICvCoMKgwqDCoCAqIGxvY2tpbmcgaW1wbGVtZW50YXRpb24uDQo+ Pj4gPiArwqDCoMKgwqAgKi8NCj4+PiA+ICvCoMKgwqAgdm9pZCAoKmxvY2spKHZvaWQgKmxvY2tf Y3R4KTsNCj4+PiA+ICvCoMKgwqAgdm9pZCAoKnVubG9jaykodm9pZCAqbG9ja19jdHgpOw0KPj4+ ID4gK8KgwqDCoCB2b2lkICpsb2NrX2N0eDsNCj4+PiA+ICt9IEFWRDNEMTJWQURldmljZUNvbnRl eHQ7DQo+Pj4gPiArDQo+Pj4gPiArLyoqDQo+Pj4gPiArICogQGJyaWVmIFRoaXMgc3RydWN0IGlz IHVzZWQgdG8gc3luYyBkM2QxMiBleGVjdXRpb24NCj4+PiA+ICsgKg0KPj4+ID4gKyAqLw0KPj4+ ID4gK3R5cGVkZWYgc3RydWN0IEFWRDNEMTJWQVN5bmNDb250ZXh0IHsNCj4+PiA+ICvCoMKgwqAg LyoqDQo+Pj4gPiArwqDCoMKgwqAgKiBEM0QxMiBmZW5jZSBvYmplY3QNCj4+PiA+ICvCoMKgwqDC oCAqLw0KPj4+ID4gK8KgwqDCoCBJRDNEMTJGZW5jZSAqZmVuY2U7DQo+Pj4gPiArDQo+Pj4gPiAr wqDCoMKgIC8qKg0KPj4+ID4gK8KgwqDCoMKgICogQSBoYW5kbGUgdG8gdGhlIGV2ZW50IG9iamVj dCB0aGF0J3MgcmFpc2VkIHdoZW4gdGhlIGZlbmNlDQo+Pj4gPiArwqDCoMKgwqAgKiByZWFjaGVz IGEgY2VydGFpbiB2YWx1ZS4NCj4+PiA+ICvCoMKgwqDCoCAqLw0KPj4+ID4gK8KgwqDCoCBIQU5E TEUgZXZlbnQ7DQo+Pj4gPiArDQo+Pj4gPiArwqDCoMKgIC8qKg0KPj4+ID4gK8KgwqDCoMKgICog VGhlIGZlbmNlIHZhbHVlIHVzZWQgZm9yIHN5bmMNCj4+PiA+ICvCoMKgwqDCoCAqLw0KPj4+ID4g K8KgwqDCoCB1aW50NjRfdCBmZW5jZV92YWx1ZTsNCj4+PiA+ICt9IEFWRDNEMTJWQVN5bmNDb250 ZXh0Ow0KPj4+ID4gKw0KPj4+ID4gKy8qKg0KPj4+ID4gKyAqIEBicmllZiBEM0QxMlZBIGZyYW1l IGRlc2NyaXB0b3IgZm9yIHBvb2wgYWxsb2NhdGlvbi4NCj4+PiA+ICsgKg0KPj4+ID4gKyAqLw0K Pj4+ID4gK3R5cGVkZWYgc3RydWN0IEFWRDNEMTJWQUZyYW1lIHsNCj4+PiA+ICvCoMKgwqAgLyoq DQo+Pj4gPiArwqDCoMKgwqAgKiBUaGUgdGV4dHVyZSBpbiB3aGljaCB0aGUgZnJhbWUgaXMgbG9j YXRlZC4gVGhlIHJlZmVyZW5jZSBjb3VudCBpcw0KPj4+ID4gK8KgwqDCoMKgICogbWFuYWdlZCBi eSB0aGUgQVZCdWZmZXJSZWYsIGFuZCBkZXN0cm95aW5nIHRoZSByZWZlcmVuY2Ugd2lsbA0KPj4+ ID4gcmVsZWFzZQ0KPj4+ID4gK8KgwqDCoMKgICogdGhlIGludGVyZmFjZS4NCj4+PiA+ICvCoMKg wqDCoCAqLw0KPj4+ID4gK8KgwqDCoCBJRDNEMTJSZXNvdXJjZSAqdGV4dHVyZTsNCj4+PiA+ICsN Cj4+PiA+ICvCoMKgwqAgLyoqDQo+Pj4gPiArwqDCoMKgwqAgKiBUaGUgc3luYyBjb250ZXh0IGZv ciB0aGUgdGV4dHVyZQ0KPj4+ID4gK8KgwqDCoMKgICoNCj4+PiA+ICvCoMKgwqDCoCAqIEBzZWU6 DQo+Pj4gPiBodHRwczovL2xlYXJuLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93aW4zMi9t ZWRmb3VuZC9kaXJlY3QzZC0NCj4xMi12aWRlby1vdmVydmlldyNkaXJlY3R4LTEyLWZlbmNlcw0K Pj4+ID4gK8KgwqDCoMKgICovDQo+Pj4gPiArwqDCoMKgIEFWRDNEMTJWQVN5bmNDb250ZXh0IHN5 bmNfY3R4Ow0KPj4+ID4gK30gQVZEM0QxMlZBRnJhbWU7DQo+Pj4gPiArDQo+Pj4gPiArLyoqDQo+ Pj4gPiArICogQGJyaWVmIFRoaXMgc3RydWN0IGlzIGFsbG9jYXRlZCBhcyBBVkhXRnJhbWVzQ29u dGV4dC5od2N0eA0KPj4+ID4gKyAqDQo+Pj4gPiArICovDQo+Pj4gPiArdHlwZWRlZiBzdHJ1Y3Qg QVZEM0QxMlZBRnJhbWVzQ29udGV4dCB7DQo+Pj4gPiArwqDCoMKgIC8qKg0KPj4+ID4gK8KgwqDC oMKgICogRFhHSV9GT1JNQVQgZm9ybWF0LiBNVVNUIGJlIGNvbXBhdGlibGUgd2l0aCB0aGUgcGl4 ZWwgZm9ybWF0Lg0KPj4+ID4gK8KgwqDCoMKgICogSWYgdW5zZXQsIHdpbGwgYmUgYXV0b21hdGlj YWxseSBzZXQuDQo+Pj4gPiArwqDCoMKgwqAgKi8NCj4+PiA+ICvCoMKgwqAgRFhHSV9GT1JNQVQg Zm9ybWF0Ow0KPj4+ID4gK30gQVZEM0QxMlZBRnJhbWVzQ29udGV4dDsNCj4+PiA+ICsNCj4+PiA+ ICsjZW5kaWYgLyogQVZVVElMX0hXQ09OVEVYVF9EM0QxMlZBX0ggKi8NCj4+PiA+IGRpZmYgLS1n aXQgYS9saWJhdnV0aWwvaHdjb250ZXh0X2QzZDEydmFfaW50ZXJuYWwuaA0KPj4+ID4gYi9saWJh dnV0aWwvaHdjb250ZXh0X2QzZDEydmFfaW50ZXJuYWwuaA0KPj4+ID4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4+PiA+IGluZGV4IDAwMDAwMDAwMDAuLmJmZDg5YjM1NDUNCj4+PiA+IC0tLSAvZGV2 L251bGwNCj4+PiA+ICsrKyBiL2xpYmF2dXRpbC9od2NvbnRleHRfZDNkMTJ2YV9pbnRlcm5hbC5o DQo+Pj4gPiBAQCAtMCwwICsxLDU5IEBADQo+Pj4gPiArLyoNCj4+PiA+ICsgKiBEaXJlY3QzRCAx MiBIVyBhY2NlbGVyYXRpb24uDQo+Pj4gPiArICoNCj4+PiA+ICsgKiBjb3B5cmlnaHQgKGMpIDIw MjItMjAyMyBXdSBKaWFuaHVhIDx0b3FzeHdAb3V0bG9vay5jb20+DQo+Pj4gPiArICoNCj4+PiA+ ICsgKiBUaGlzIGZpbGUgaXMgcGFydCBvZiBGRm1wZWcuDQo+Pj4gPiArICoNCj4+PiA+ICsgKiBG Rm1wZWcgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQo+ Pj4gPiArICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5l cmFsIFB1YmxpYw0KPj4+ID4gKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcg0KPj4+ID4gKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBM aWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLg0KPj4+ID4gKyAq DQo+Pj4gPiArICogRkZtcGVnIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsDQo+Pj4gPiArICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YNCj4+PiA+ICsgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuwqAgU2VlIHRoZQ0KPkdOVQ0KPj4+ ID4gKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQo+ Pj4gPiArICoNCj4+PiA+ICsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljDQo+Pj4gPiArICogTGljZW5zZSBhbG9uZyB3aXRo IEZGbXBlZzsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQ0KPj4+ID4gKyAqIEZv dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3Rvbiwg TUEgMDIxMTAtDQo+MTMwMQ0KPj4+ID4gVVNBDQo+Pj4gPiArICovDQo+Pj4gPiArDQo+Pj4gPiAr I2lmbmRlZiBBVlVUSUxfSFdDT05URVhUX0QzRDEyVkFfSU5URVJOQUxfSA0KPj4+ID4gKyNkZWZp bmUgQVZVVElMX0hXQ09OVEVYVF9EM0QxMlZBX0lOVEVSTkFMX0gNCj4+PiA+ICsNCj4+PiA+ICsv KioNCj4+PiA+ICsgKiBAZGVmIENPQkpNQUNST1MNCj4+PiA+ICsgKg0KPj4+ID4gKyAqIEBicmll ZiBFbmFibGUgQyBzdHlsZSBpbnRlcmZhY2UgZm9yIEQzRDEyDQo+Pj4gPiArICovDQo+Pj4gPiAr I2lmbmRlZiBDT0JKTUFDUk9TDQo+Pj4gPiArI2RlZmluZSBDT0JKTUFDUk9TDQo+Pj4gPiArI2Vu ZGlmDQo+Pj4gPiArDQo+Pj4gPiArLyoqDQo+Pj4gPiArICogQGRlZiBEWF9DSEVDSw0KPj4+ID4g KyAqDQo+Pj4gPiArICogQGJyaWVmIEEgY2hlY2sgbWFjcm8gdXNlZCBieSBEM0QxMiBmdW5jdGlv bnMgaGlnaGx5IGZyZXF1ZW50bHkNCj4+PiA+ICsgKi8NCj4+PiA+ICsjZGVmaW5lIERYX0NIRUNL KGhyKcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgXA0KPj4+ID4gK8KgwqDCoCBkbyB7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+ Pj4gPiArwqDCoMKgwqDCoMKgwqAgaWYgKEZBSUxFRChocikpwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBnb3RvIGZhaWw7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIFwNCj4+PiA+ICvCoMKgwqAgfSB3aGlsZSAoMCkNCj4+PiA+ICsNCj4+ PiA+ICsvKioNCj4+PiA+ICsgKiBAZGVmIEQzRDEyX09CSkVDVF9SRUxFQVNFDQo+Pj4gPiArICoN Cj4+PiA+ICsgKiBAYnJpZWYgQSByZWxlYXNlIG1hY3JvIHVzZWQgYnkgRDNEMTIgb2JqZWN0cyBo aWdobHkgZnJlcXVlbnRseQ0KPj4+ID4gKyAqLw0KPj4+ID4gKyNkZWZpbmUgRDNEMTJfT0JKRUNU X1JFTEVBU0UocEludGVyZmFjZSnCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+Pj4gPiAr wqDCoMKgIGRvIHvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4+ID4gK8Kg wqDCoMKgwqDCoMKgIGlmIChwSW50ZXJmYWNlKSB7wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgSVVua25vd25fUmVsZWFzZSgoSVVua25vd24gKilwSW50ZXJmYWNlKTsgXA0KPj4+ID4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcEludGVyZmFjZSA9IE5VTEw7wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBcDQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAg fcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXA0KPj4+ID4gK8KgwqDCoCB9IHdoaWxl ICgwKQ0KPj4+ID4gKw0KPj4+ID4gKyNlbmRpZiAvKiBBVlVUSUxfSFdDT05URVhUX0QzRDEyVkFf SU5URVJOQUxfSCAqLw0KPj4+ID4gXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlDQo+Pj4gPiBk aWZmIC0tZ2l0IGEvbGliYXZ1dGlsL2h3Y29udGV4dF9pbnRlcm5hbC5oIGIvbGliYXZ1dGlsL2h3 Y29udGV4dF9pbnRlcm5hbC5oDQo+Pj4gPiBpbmRleCBlNjI2NjQ5NGFjLi40ZGY1MTZlZTZhIDEw MDY0NA0KPj4+ID4gLS0tIGEvbGliYXZ1dGlsL2h3Y29udGV4dF9pbnRlcm5hbC5oDQo+Pj4gPiAr KysgYi9saWJhdnV0aWwvaHdjb250ZXh0X2ludGVybmFsLmgNCj4+PiA+IEBAIC0xNjUsNiArMTY1 LDcgQEAgaW50IGZmX2h3ZnJhbWVfbWFwX3JlcGxhY2UoQVZGcmFtZSAqZHN0LCBjb25zdA0KPkFW RnJhbWUNCj4+PiA+ICpzcmMpOw0KPj4+ID4NCj4+PiA+IMKgZXh0ZXJuIGNvbnN0IEhXQ29udGV4 dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfY3VkYTsNCj4+PiA+IMKgZXh0ZXJuIGNvbnN0IEhXQ29u dGV4dFR5cGUgZmZfaHdjb250ZXh0X3R5cGVfZDNkMTF2YTsNCj4+PiA+ICtleHRlcm4gY29uc3Qg SFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9kM2QxMnZhOw0KPj4+ID4gwqBleHRlcm4g Y29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9kcm07DQo+Pj4gPiDCoGV4dGVy biBjb25zdCBIV0NvbnRleHRUeXBlIGZmX2h3Y29udGV4dF90eXBlX2R4dmEyOw0KPj4+ID4gwqBl eHRlcm4gY29uc3QgSFdDb250ZXh0VHlwZSBmZl9od2NvbnRleHRfdHlwZV9vcGVuY2w7DQo+Pj4g PiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGlsL3BpeGRlc2MuYyBiL2xpYmF2dXRpbC9waXhkZXNjLmMN Cj4+PiA+IGluZGV4IDRlNGE2M2UyODcuLjBkYjQxNjc5MzQgMTAwNjQ0DQo+Pj4gPiAtLS0gYS9s aWJhdnV0aWwvcGl4ZGVzYy5jDQo+Pj4gPiArKysgYi9saWJhdnV0aWwvcGl4ZGVzYy5jDQo+Pj4g PiBAQCAtMjMxMSw2ICsyMzExLDEwIEBAIHN0YXRpYyBjb25zdCBBVlBpeEZtdERlc2NyaXB0b3IN Cj4+PiA+IGF2X3BpeF9mbXRfZGVzY3JpcHRvcnNbQVZfUElYX0ZNVF9OQl0gPSB7DQo+Pj4gPiDC oMKgwqDCoMKgwqDCoMKgIC5uYW1lID0gImQzZDExIiwNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqAg LmZsYWdzID0gQVZfUElYX0ZNVF9GTEFHX0hXQUNDRUwsDQo+Pj4gPiDCoMKgwqDCoCB9LA0KPj4+ ID4gK8KgwqDCoCBbQVZfUElYX0ZNVF9EM0QxMl0gPSB7DQo+Pj4gPiArwqDCoMKgwqDCoMKgwqAg Lm5hbWUgPSAiZDNkMTIiLA0KPj4+ID4gK8KgwqDCoMKgwqDCoMKgIC5mbGFncyA9IEFWX1BJWF9G TVRfRkxBR19IV0FDQ0VMLA0KPj4+ID4gK8KgwqDCoCB9LA0KPj4+ID4gwqDCoMKgwqAgW0FWX1BJ WF9GTVRfR0JSUEYzMkJFXSA9IHsNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqAgLm5hbWUgPSAiZ2Jy cGYzMmJlIiwNCj4+PiA+IMKgwqDCoMKgwqDCoMKgwqAgLm5iX2NvbXBvbmVudHMgPSAzLA0KPj4+ ID4gZGlmZiAtLWdpdCBhL2xpYmF2dXRpbC9waXhmbXQuaCBiL2xpYmF2dXRpbC9waXhmbXQuaA0K Pj4+ID4gaW5kZXggYTI2YzcyZDU2Yi4uNThmOWFkMjhiZCAxMDA2NDQNCj4+PiA+IC0tLSBhL2xp YmF2dXRpbC9waXhmbXQuaA0KPj4+ID4gKysrIGIvbGliYXZ1dGlsL3BpeGZtdC5oDQo+Pj4gPiBA QCAtNDI5LDYgKzQyOSwxMyBAQCBlbnVtIEFWUGl4ZWxGb3JtYXQgew0KPj4+ID4gwqDCoMKgwqAg QVZfUElYX0ZNVF9HQlJBUDE0QkUswqAgLy8vPCBwbGFuYXIgR0JSIDQ6NDo0OjQgNTZicHAsIGJp Zy1lbmRpYW4NCj4+PiA+IMKgwqDCoMKgIEFWX1BJWF9GTVRfR0JSQVAxNExFLMKgIC8vLzwgcGxh bmFyIEdCUiA0OjQ6NDo0IDU2YnBwLCBsaXR0bGUtZW5kaWFuDQo+Pj4gPg0KPj4+ID4gK8KgwqDC oCAvKioNCj4+PiA+ICvCoMKgwqDCoCAqIEhhcmR3YXJlIHN1cmZhY2VzIGZvciBEaXJlY3QzRCAx Mi4NCj4+PiA+ICvCoMKgwqDCoCAqDQo+Pj4gPiArwqDCoMKgwqAgKiBkYXRhWzBdIHBvaW50cyB0 byBhbiBBVkQzRDEyVkFGcmFtZQ0KPj4+ID4gK8KgwqDCoMKgICovDQo+Pj4gPiArwqDCoMKgIEFW X1BJWF9GTVRfRDNEMTIsDQo+Pj4gPiArDQo+Pj4gPiDCoMKgwqDCoCBBVl9QSVhfRk1UX05CwqDC oMKgwqDCoMKgwqDCoCAvLy88IG51bWJlciBvZiBwaXhlbCBmb3JtYXRzLCBETyBOT1QgVVNFIFRI SVMgaWYNCj4+PiA+IHlvdSB3YW50IHRvIGxpbmsgd2l0aCBzaGFyZWQgbGliYXYqIGJlY2F1c2Ug dGhlIG51bWJlciBvZiBmb3JtYXRzIG1pZ2h0DQo+Pj4gPiBkaWZmZXINCj4+PiA+IGJldHdlZW4g dmVyc2lvbnMNCj4+PiA+IMKgfTsNCj4+PiA+DQo+Pj4gPiBkaWZmIC0tZ2l0IGEvbGliYXZ1dGls L3Rlc3RzL2h3ZGV2aWNlLmMgYi9saWJhdnV0aWwvdGVzdHMvaHdkZXZpY2UuYw0KPj4+ID4gaW5k ZXggYzU3NTg2NjEzYS4uOWQ3OTY0ZjllZSAxMDA2NDQNCj4+PiA+IC0tLSBhL2xpYmF2dXRpbC90 ZXN0cy9od2RldmljZS5jDQo+Pj4gPiArKysgYi9saWJhdnV0aWwvdGVzdHMvaHdkZXZpY2UuYw0K Pj4+ID4gQEAgLTEzNyw2ICsxMzcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHsNCj4+PiA+IMKg wqDCoMKgwqDCoCB7ICIwIiwgIjEiLCAiMiIgfSB9LA0KPj4+ID4gwqDCoMKgwqAgeyBBVl9IV0RF VklDRV9UWVBFX0QzRDExVkEsDQo+Pj4gPiDCoMKgwqDCoMKgwqAgeyAiMCIsICIxIiwgIjIiIH0g fSwNCj4+PiA+ICvCoMKgwqAgeyBBVl9IV0RFVklDRV9UWVBFX0QzRDEyVkEsDQo+Pj4gPiArwqDC oMKgwqDCoCB7ICIwIiwgIjEiLCAiMiIgfSB9LA0KPj4+ID4gwqDCoMKgwqAgeyBBVl9IV0RFVklD RV9UWVBFX09QRU5DTCwNCj4+PiA+IMKgwqDCoMKgwqDCoCB7ICIwLjAiLCAiMC4xIiwgIjEuMCIs ICIxLjEiIH0gfSwNCj4+PiA+IMKgwqDCoMKgIHsgQVZfSFdERVZJQ0VfVFlQRV9WQUFQSSwNCj4+ PiA+IGRpZmYgLS1naXQgYS9saWJhdnV0aWwvdmVyc2lvbi5oIGIvbGliYXZ1dGlsL3ZlcnNpb24u aA0KPj4+ID4gaW5kZXggYzVmYTdjMzY5Mi4uMDY4NDk5NmJmMiAxMDA2NDQNCj4+PiA+IC0tLSBh L2xpYmF2dXRpbC92ZXJzaW9uLmgNCj4+PiA+ICsrKyBiL2xpYmF2dXRpbC92ZXJzaW9uLmgNCj4+ PiA+IEBAIC03OSw3ICs3OSw3IEBADQo+Pj4gPiDCoCAqLw0KPj4+ID4NCj4+PiA+IMKgI2RlZmlu ZSBMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUsKgIDU4DQo+Pj4gPiAtI2RlZmluZSBMSUJBVlVUSUxf VkVSU0lPTl9NSU5PUsKgIDMyDQo+Pj4gPiArI2RlZmluZSBMSUJBVlVUSUxfVkVSU0lPTl9NSU5P UsKgIDMzDQo+Pj4gPiDCoCNkZWZpbmUgTElCQVZVVElMX1ZFUlNJT05fTUlDUk8gMTAwDQo+Pj4g Pg0KPj4+ID4gwqAjZGVmaW5lDQo+TElCQVZVVElMX1ZFUlNJT05fSU5UwqDCoCBBVl9WRVJTSU9O X0lOVChMSUJBVlVUSUxfVkVSU0lPTl9NQUpPUiwgXA0KPj4+DQo+Pj4NCj4+PiB2MTIgTEdUTSwg YW5kIHdvcmtzIHdlbGwgaW4gbXkgdGVzdGluZy4gSSdsbCBtZXJnZSB2MTIgaWYgdGhlcmUgYXJl IG5vDQo+Pj4gb2JqZWN0aW9ucyAvIGNvbW1lbnRzLg0KPj4+DQo+Pg0KPj4gRml4ZWQgY29uZmxp Y3RzIGluIENoYW5nZWxvZyAvIHZlcnNpb24uaCAvIEFQSUNoYW5nZSBhbmQgcHVzaGVkLg0KPj4N Cj4+IFRoYW5rcw0KPj4gSGFpaGFvDQo+Pg0KPj4NCj4+IF9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fDQo+PiBmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0DQo+ PiBmZm1wZWctZGV2ZWxAZmZtcGVnLm9yZw0KPj4gaHR0cHM6Ly9mZm1wZWcub3JnL21haWxtYW4v bGlzdGluZm8vZmZtcGVnLWRldmVsDQo+Pg0KPj4gVG8gdW5zdWJzY3JpYmUsIHZpc2l0IGxpbmsg YWJvdmUsIG9yIGVtYWlsDQo+PiBmZm1wZWctZGV2ZWwtcmVxdWVzdEBmZm1wZWcub3JnIHdpdGgg c3ViamVjdCAidW5zdWJzY3JpYmUiLg0KPj4NCj4NCj5fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXw0KPmZmbXBlZy1kZXZlbCBtYWlsaW5nIGxpc3QNCj5mZm1w ZWctZGV2ZWxAZmZtcGVnLm9yZw0KPmh0dHBzOi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZv L2ZmbXBlZy1kZXZlbA0KPg0KPlRvIHVuc3Vic2NyaWJlLCB2aXNpdCBsaW5rIGFib3ZlLCBvciBl bWFpbA0KPmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBlZy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1 YnNjcmliZSIuDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f XwpmZm1wZWctZGV2ZWwgbWFpbGluZyBsaXN0CmZmbXBlZy1kZXZlbEBmZm1wZWcub3JnCmh0dHBz Oi8vZmZtcGVnLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ZmbXBlZy1kZXZlbAoKVG8gdW5zdWJzY3Jp YmUsIHZpc2l0IGxpbmsgYWJvdmUsIG9yIGVtYWlsCmZmbXBlZy1kZXZlbC1yZXF1ZXN0QGZmbXBl Zy5vcmcgd2l0aCBzdWJqZWN0ICJ1bnN1YnNjcmliZSIuCg==