From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 739FAC54E5D for ; Mon, 18 Mar 2024 10:16:27 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 358E510EF02; Mon, 18 Mar 2024 10:16:27 +0000 (UTC) Authentication-Results: gabe.freedesktop.org; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.b="GT/giFVz"; dkim-atps=neutral Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.16]) by gabe.freedesktop.org (Postfix) with ESMTPS id E1D2610EF02 for ; Mon, 18 Mar 2024 10:16:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1710756986; x=1742292986; h=from:to:cc:subject:date:message-id:references: in-reply-to:content-id:content-transfer-encoding: mime-version; bh=7IWyFbdQ/XncFPz9ft7qmGFFSp1v+IJX5DUhugXB4Gw=; b=GT/giFVznRZ26ZtAP736dv7KUq20A9nyxjuDFIJSZqdWiGIIMTxv9dGz mKXc1d7ltnNNu2Vut/X9X7RvcrmZ1JNw3ugCVFeMDr97zM4IpRYrxZrzo xoITvjYTkJtIu32DPhqzx11G1b4XNwzLEkvLGF5fbUpZ/WXIEO+nC+toi mADHyenvfqxp3fhfq+Jf+IM4+0bc3eVK/rw7PAD4TTLP6TaLUm3IwfCym LdkQZUzE1U1UXvK/tJTaXqxHvMayPDBnVcy/ouc0S6HtU9j4Xdgyc3AmJ LR5gW7YIrRvNp5KgnVrCh5Ho8X2Qb7luVVjdYP4C00zMDlDSJuM5EE0TJ A==; X-IronPort-AV: E=McAfee;i="6600,9927,11016"; a="5693237" X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="5693237" Received: from orviesa002.jf.intel.com ([10.64.159.142]) by orvoesa108.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 18 Mar 2024 03:16:26 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.07,134,1708416000"; d="scan'208";a="44349517" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by orviesa002.jf.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 18 Mar 2024 03:16:26 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 18 Mar 2024 03:16:25 -0700 Received: from orsmsx602.amr.corp.intel.com (10.22.229.15) by ORSMSX611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35; Mon, 18 Mar 2024 03:16:24 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.35 via Frontend Transport; Mon, 18 Mar 2024 03:16:24 -0700 Received: from NAM10-MW2-obe.outbound.protection.outlook.com (104.47.55.101) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.35; Mon, 18 Mar 2024 03:16:24 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WhQHw1MwUEE+dpzrPLdm75CvQJnIV2bTO8PKFuIXKOnOIQVZ/Hi++Vm/K+8iKY1GeUanpP56biTCKwJAMnD25lB0bF9I2IVVmBQWEdgmrw+X0OgbosQ87ou4Fhl6wIiEUPytTzwx9+wcPp9Jc2TO6qybPEoF54nphxSdAwDaI/zgWYNaZiRzU8hmTwxmNQHiEldlfgADv1/tB2CFlPKSbFzzR/6V1Oy281HoclEOnLA+TdGYXAx7501w7SzS0n2pvRmAOjjRDeVEbOqimiu9Jz7NJ4I4G+dh8Pn2SB0mKlyZYVkmHximgkdECVJUN4O/rV6Q8GEe9N0jaIDDuapUzA== 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=7IWyFbdQ/XncFPz9ft7qmGFFSp1v+IJX5DUhugXB4Gw=; b=Yru58DlCuNP9EfcTR2Nr1Ixtlr8B75abwRUy2AgmSCQO66GDQE1L/U5qU0EqwQryKooPBGB/y+oJ8O4hsyWNqvG5W+u7ZbBkZPIy+jWdwelWFeSe58zvOM0hr5U4ACgBOk2HdX3IxjEQu59tOXkPOfU3QOag3VtG3IA2RGuq1k6AoeSaa5i3a7LwkJYXAeGTcr/3CnpHKu5HOoTtDBaRo9M9a4oUpu04nhnN8yq3B0U+qiF97TK1pgzh+PspaKCPfeeWOR3ug87n67nkMtb7vA1cEQHqwGb7hqX4qs6IQBbqSWGse3em0RhvGW/i0x3DMoYImrhVA9zYhHbno9bDFg== 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 CY8PR11MB7730.namprd11.prod.outlook.com (2603:10b6:930:74::13) by SJ2PR11MB7546.namprd11.prod.outlook.com (2603:10b6:a03:4cc::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.12; Mon, 18 Mar 2024 10:16:22 +0000 Received: from CY8PR11MB7730.namprd11.prod.outlook.com ([fe80::504e:40d9:e81f:2af3]) by CY8PR11MB7730.namprd11.prod.outlook.com ([fe80::504e:40d9:e81f:2af3%5]) with mapi id 15.20.7409.010; Mon, 18 Mar 2024 10:16:22 +0000 From: "Hellstrom, Thomas" To: "Brost, Matthew" , "Zeng, Oak" CC: "intel-xe@lists.freedesktop.org" , "Welty, Brian" , "airlied@gmail.com" , "Ghimiray, Himal Prasad" Subject: Re: [PATCH 1/5] drm/xe/svm: Remap and provide memmap backing for GPU vram Thread-Topic: [PATCH 1/5] drm/xe/svm: Remap and provide memmap backing for GPU vram Thread-Index: AQHadb8L5hBB0ksrv0CrNebgI/PvdLE3e6GAgAAU2QCAACYlgIABQZQAgABOHACAAA51AIAAQXkAgAO46QA= Date: Mon, 18 Mar 2024 10:16:22 +0000 Message-ID: References: <20240314033553.1379444-1-oak.zeng@intel.com> <20240314033553.1379444-2-oak.zeng@intel.com> In-Reply-To: Accept-Language: en-GB, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.50.3 (3.50.3-1.fc39) 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: CY8PR11MB7730:EE_|SJ2PR11MB7546:EE_ x-ms-office365-filtering-correlation-id: 68f0e522-880a-4222-41cc-08dc473475e0 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: n94q8oZ/E/OuC++3W7THuA68A2yUTFzQfBlfhgzGR41Z6HZuXTNs1G3UxcPx6ZDliv5fEsIPNBoOtKmHcAOgOuJGnhortMxGOHWu624TEFj8027x43iA+Y4O67P0H0AZ2+V4Mz6afH8psL1xOlaVOK6Jvyd5FxokYoTxvwp9ZTFgNzy2CQ9gaYMzv95FnwSLJSyhSDQCg+zXbnTatnpvvRh6FFHm0s/J8PfjHMYHjQQ63RjeUZZWK6mMWXJA9AOH6RiSLdpOekpYB12ta7TJr1P9HQgIbgxLRBWvI5Sc2CJDjpGri+wnRwIX1jiZPGVBBZFWX6b3MtwW2IKnL5eQ7wFZHKZW9ESmmGVgstISverjYiL6gaK2YxS1HjzifmyiiodHPTGfHRZ3yG9w2fKTCuNJiSjk8//bFAeekK1dvIgTXeIgtwKYfqYNmn9L+Gcut7+va/2W45paU5ZrMp6q32gtg4Ja+/njKTt2yAn3vvYePxbs//7rSFUU5vf5mc85LB07Q6Z8/uVG1vukKWG5a5lVU7uxfyZ19wz8Qe6Lexz5L9QnDrvhZ3z4WmOGxTiDJlCQxe2NwIi4Ku/jSRxvb9u6jzk57RLqtnltUog9ThTEOZhgG0mQ5wkSDe3eGMjeq8+eJ1FjHpf7aMAdG214VtSMtoeG8ffRGOzFQvqiDCM= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY8PR11MB7730.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230031)(376005)(1800799015)(366007)(38070700009); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?S3crcXArZFM0VDM4aHA0amxNT3k2bk41bFh3VkFGL1ZkU3pxTEh4SzNUdEVn?= =?utf-8?B?VDhJM3JlTkR3aDlkdWJHZmVWUFlOZzJ0cmtnUkhJb25LbkpVL3ZmR2RmOCtm?= =?utf-8?B?T1Q4OTBnMklockJWdzNTaEhkUDBza2FVeGc5VnAzYTVkTVEraXJVMTI5akQ1?= =?utf-8?B?L0FtVm1hdGlLUnZuQ3RVREZteDVrbnYvbXdPSWk2Z09oMTlYNEp2UjRZb1p5?= =?utf-8?B?ZTZaMFpTbXhuSnUxSERBak1UQ2RtMkJzZVdJL1FyaHpMTkh0NnFFMVdZdkRi?= =?utf-8?B?VitaOE9rUVhKUEJwNm9pVEtPMWVUWHVoSzJwZ3JVQmwyd1hjL1diRGhCRjhz?= =?utf-8?B?dUxJV1Y0OGRaUUlRRHVwbmRPU1ZVS0xVd2p0WTkxQXlycTk1RnYydkZSMTIy?= =?utf-8?B?TVhCcGQ4N1FFb0ZyOGJ5KzAybnpMNFB3dUM3YUdaUHpYQUJXbEYwL0h2LzQr?= =?utf-8?B?aGptN2lLaHlCYmc2akx4RjJGZGNqVmY1N2dQdHUzQVdPTTVIRi9DOFZlRS9G?= =?utf-8?B?ckUvOUpNalUrdDMxOERkRlJYTk02d0kwKzNmUVVVQmRIK0VlclNEMkU3NUlO?= =?utf-8?B?eVRxUXVSMHRpSVR6VkFOYWRYVGpPc2RIRmxwd1VlcmJPNWZINElNM0VhSXUz?= =?utf-8?B?RWM2ZmRVL2sxVFA4YWtNSnBjUUZOdmFwc0dIaWRoaWwvWXhPWTZOV3ZrbzdF?= =?utf-8?B?UDVqYm5nZldjWVBDZzgwc2FnWFRWcEtuSUVab2lzQlliYnZ2cXd2cmNEc3VZ?= =?utf-8?B?MDRycDVwaHpUOGVCY29oMjMrbTNpYS9DNDlxRkE1QnBLeTV0WFd5TUNhS1RS?= =?utf-8?B?aEEzc2lzR0VLMHNDOGMrT3JtTTJyY0RqNTBzZDhXT2N0QUE1cE5kY1VXeVhF?= =?utf-8?B?QzRmR0cwelhZTmJjNFRrdVdIb3M5ZVY1bU85bHBvSHIxcjZCQkxwdXd1TWJt?= =?utf-8?B?S0Q3ZXVPcElNRTh0OS81NXV6ZG9BT293MXlNV1VIVXYwZWliSHhHekxlcjBs?= =?utf-8?B?QWVUbmJNOFhVWWRpczBTY0hVcUpkK0w2YXJ5NUl3TldZTG5NZ2pnUkN2WVc3?= =?utf-8?B?R2ZqUll3M0U5WEtvM3MzOFdOdWhWWFI2Rkllc29LYkJteFBsS0ZJejd4TUc4?= =?utf-8?B?cHRSbHRWTmVzaDYxRHRHd1IrOHZ4YnE1TFlNUXFIRUNqNVh3Y2NwUzkvSkJS?= =?utf-8?B?WTQ0aTltQUNsR3hQSGF2Vnd0bWdNWWxoZkdTeXJxb211eFVpbWRVM2wxRi9o?= =?utf-8?B?N2w3REhLa1VaVFVWTWR4OGVGNngvVmdKd2lPYWUrVnVna2gzYXNCSWs4UWw2?= =?utf-8?B?NnlMeWhWVkxKbmdOelZoTU13K2F3WndBbllLdUplK21qNGdtOFY2M3JkcGNP?= =?utf-8?B?K1dIK0RXVitKa3pRWFIzU0EyVk9JR1BhTEd0ZERJd1NueWVQM1pqVEtodUtv?= =?utf-8?B?eFgyWjFleldTWVBCbFdGaG5CL3pKbXFITjhkcUI4SFVSYUZwTkphREd3UlY0?= =?utf-8?B?QS9raC81bnJKMGZZSHAyZWl0NGtwbjlILzdrMnRUMlEweFRta040SzhqVjh5?= =?utf-8?B?U0NwNlRZSTZHZUpwK3ptS21BTVRqTUNmZThIc1ZKcUwwQTdOQ0liR3huTWhz?= =?utf-8?B?K09CUWFRblI1ZkNxWGcxeTVwUDJFcExiOFFvSlRoZnRCKzBGQUt0TUV2ZklS?= =?utf-8?B?WWhhNUUydS9rNEp1cmJSeUlUaEZvQVBxMDB5cWhIR010Ky9jS1ZrSXovcU84?= =?utf-8?B?MEkvcEc2UmZLeGtsZmVMbGNwRmlLaTYreUtJM2RqcktQV2tTdnJIYy9lWUhE?= =?utf-8?B?cHNSSEJOYXh4U2ZPZndia3JjWjlrNUVNNEpZTFNzYTVTMC8xV3FEWEUxOEZi?= =?utf-8?B?TDhqSUFmc1JvcVVSTnVDVDM2UEFLZnRqTy83ak5IdjQyQitybUZ3WVhnYjFV?= =?utf-8?B?ejJpeldpNUpCZXpnNUp3anMySXRYamF2cTd4NG1mbXRYVDc0bW9Tc1VtdlNT?= =?utf-8?B?cGdkTzJTOXpiQWVRN3BSK21IT1ZGbnhHYk11Z2ZqVHlsV1kvc2pYSU5pellQ?= =?utf-8?B?cVZkc25aVS9vdnZVeTdlUDg3V2xjc0Mvek0zVElRR0l2UFNEclhOUFFaRmk4?= =?utf-8?B?anNvRW9tbGNIOTQvUWIzdzlXbXlCRlorTi91M0pVUzdpa2xXU0hpbUI2U1R4?= =?utf-8?Q?Qqn6krUOVoK0DOu4kWshvKBSv+8AcEqLvsnQO6x3raty?= Content-Type: text/plain; charset="utf-8" Content-ID: <786ECDA7012F3C49BE0E3F53D8C13280@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY8PR11MB7730.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68f0e522-880a-4222-41cc-08dc473475e0 X-MS-Exchange-CrossTenant-originalarrivaltime: 18 Mar 2024 10:16:22.1217 (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: BBgd6jUWsqBYiV5L2KnVlu3/zmvCkN5KD+oGFCBDnm5n+K6ps0psCNMeDOmRnaPWWG4xGHD4pwZHbc7r+MNRvEIZTRFkK3THxC0nx4NF37Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SJ2PR11MB7546 X-OriginatorOrg: intel.com X-BeenThere: intel-xe@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel Xe graphics driver List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-xe-bounces@lists.freedesktop.org Sender: "Intel-xe" T24gU2F0LCAyMDI0LTAzLTE2IGF0IDAxOjI1ICswMDAwLCBNYXR0aGV3IEJyb3N0IHdyb3RlOg0K PiBPbiBGcmksIE1hciAxNSwgMjAyNCBhdCAwMzozMToyNFBNIC0wNjAwLCBaZW5nLCBPYWsgd3Jv dGU6DQo+ID4gDQo+ID4gDQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4g RnJvbTogQnJvc3QsIE1hdHRoZXcgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPg0KPiA+ID4gU2Vu dDogRnJpZGF5LCBNYXJjaCAxNSwgMjAyNCA0OjQwIFBNDQo+ID4gPiBUbzogWmVuZywgT2FrIDxv YWsuemVuZ0BpbnRlbC5jb20+DQo+ID4gPiBDYzogaW50ZWwteGVAbGlzdHMuZnJlZWRlc2t0b3Au b3JnOyBIZWxsc3Ryb20sIFRob21hcw0KPiA+ID4gPHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29t PjsgYWlybGllZEBnbWFpbC5jb207IFdlbHR5LCBCcmlhbg0KPiA+ID4gPGJyaWFuLndlbHR5QGlu dGVsLmNvbT47IEdoaW1pcmF5LCBIaW1hbCBQcmFzYWQNCj4gPiA+IDxoaW1hbC5wcmFzYWQuZ2hp bWlyYXlAaW50ZWwuY29tPg0KPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVdIGRybS94ZS9z dm06IFJlbWFwIGFuZCBwcm92aWRlIG1lbW1hcA0KPiA+ID4gYmFja2luZyBmb3INCj4gPiA+IEdQ VSB2cmFtDQo+ID4gPiANCj4gPiA+IE9uIEZyaSwgTWFyIDE1LCAyMDI0IGF0IDEwOjAwOjA2QU0g LTA2MDAsIFplbmcsIE9hayB3cm90ZToNCj4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiA+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJvbTogQnJvc3QsIE1hdHRoZXcg PG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPg0KPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBNYXJj aCAxNCwgMjAyNCA0OjQ5IFBNDQo+ID4gPiA+ID4gVG86IFplbmcsIE9hayA8b2FrLnplbmdAaW50 ZWwuY29tPg0KPiA+ID4gPiA+IENjOiBpbnRlbC14ZUBsaXN0cy5mcmVlZGVza3RvcC5vcmc7IEhl bGxzdHJvbSwgVGhvbWFzDQo+ID4gPiA+ID4gPHRob21hcy5oZWxsc3Ryb21AaW50ZWwuY29tPjsg YWlybGllZEBnbWFpbC5jb207IFdlbHR5LCBCcmlhbg0KPiA+ID4gPiA+IDxicmlhbi53ZWx0eUBp bnRlbC5jb20+OyBHaGltaXJheSwgSGltYWwgUHJhc2FkDQo+ID4gPiA+ID4gPGhpbWFsLnByYXNh ZC5naGltaXJheUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVd IGRybS94ZS9zdm06IFJlbWFwIGFuZCBwcm92aWRlIG1lbW1hcA0KPiA+ID4gPiA+IGJhY2tpbmcN Cj4gPiA+IGZvcg0KPiA+ID4gPiA+IEdQVSB2cmFtDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gT24g VGh1LCBNYXIgMTQsIDIwMjQgYXQgMTI6MzI6MzZQTSAtMDYwMCwgWmVuZywgT2FrIHdyb3RlOg0K PiA+ID4gPiA+ID4gSGkgTWF0dCwNCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiBGcm9tOiBCcm9zdCwgTWF0dGhldyA8 bWF0dGhldy5icm9zdEBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBN YXJjaCAxNCwgMjAyNCAxOjE4IFBNDQo+ID4gPiA+ID4gPiA+IFRvOiBaZW5nLCBPYWsgPG9hay56 ZW5nQGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gQ2M6IGludGVsLXhlQGxpc3RzLmZyZWVkZXNr dG9wLm9yZzsgSGVsbHN0cm9tLCBUaG9tYXMNCj4gPiA+ID4gPiA+ID4gPHRob21hcy5oZWxsc3Ry b21AaW50ZWwuY29tPjsgYWlybGllZEBnbWFpbC5jb207IFdlbHR5LA0KPiA+ID4gPiA+ID4gPiBC cmlhbg0KPiA+ID4gPiA+ID4gPiA8YnJpYW4ud2VsdHlAaW50ZWwuY29tPjsgR2hpbWlyYXksIEhp bWFsIFByYXNhZA0KPiA+ID4gPiA+ID4gPiA8aGltYWwucHJhc2FkLmdoaW1pcmF5QGludGVsLmNv bT4NCj4gPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtQQVRDSCAxLzVdIGRybS94ZS9zdm06IFJl bWFwIGFuZCBwcm92aWRlDQo+ID4gPiA+ID4gPiA+IG1lbW1hcA0KPiA+ID4gYmFja2luZw0KPiA+ ID4gPiA+IGZvcg0KPiA+ID4gPiA+ID4gPiBHUFUgdnJhbQ0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+ID4gT24gV2VkLCBNYXIgMTMsIDIwMjQgYXQgMTE6MzU6NDlQTSAtMDQwMCwgT2FrIFpl bmcgd3JvdGU6DQo+ID4gPiA+ID4gPiA+ID4gTWVtb3J5IHJlbWFwIEdQVSB2cmFtIHVzaW5nIGRl dm1fbWVtcmVtYXBfcGFnZXMsIHNvDQo+ID4gPiA+ID4gPiA+ID4gZWFjaA0KPiA+ID4gR1BVDQo+ ID4gPiA+ID4gdnJhbQ0KPiA+ID4gPiA+ID4gPiA+IHBhZ2UgaXMgYmFja2VkIGJ5IGEgc3RydWN0 IHBhZ2UuDQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gVGhvc2Ugc3RydWN0IHBh Z2VzIGFyZSBjcmVhdGVkIHRvIGFsbG93IGhtbSBtaWdyYXRlDQo+ID4gPiA+ID4gPiA+ID4gYnVm ZmVyIGIvdA0KPiA+ID4gPiA+ID4gPiA+IEdQVSB2cmFtIGFuZCBDUFUgc3lzdGVtIG1lbW9yeSB1 c2luZyBleGlzdGluZyBMaW51eA0KPiA+ID4gPiA+ID4gPiA+IG1pZ3JhdGlvbg0KPiA+ID4gPiA+ ID4gPiA+IG1lY2hhbmlzbSAoaS5lLiwgbWlncmF0aW5nIGIvdCBDUFUgc3lzdGVtIG1lbW9yeSBh bmQNCj4gPiA+ID4gPiA+ID4gPiBoYXJkIGRpc2spLg0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gPiA+IFRoaXMgaXMgcHJlcGFyZSB3b3JrIHRvIGVuYWJsZSBzdm0gKHNoYXJlZCB2aXJ0 dWFsDQo+ID4gPiA+ID4gPiA+ID4gbWVtb3J5KSB0aHJvdWdoDQo+ID4gPiA+ID4gPiA+ID4gTGlu dXgga2VybmVsIGhtbSBmcmFtZXdvcmsuIFRoZSBtZW1vcnkgcmVtYXAncyBwYWdlIG1hcA0KPiA+ ID4gPiA+ID4gPiA+IHR5cGUgaXMNCj4gPiA+IHNldA0KPiA+ID4gPiA+ID4gPiA+IHRvIE1FTU9S WV9ERVZJQ0VfUFJJVkFURSBmb3Igbm93LiBUaGlzIG1lYW5zIGV2ZW4NCj4gPiA+ID4gPiA+ID4g PiB0aG91Z2ggZWFjaA0KPiA+ID4gR1BVDQo+ID4gPiA+ID4gPiA+ID4gdnJhbSBwYWdlIGdldCBh IHN0cnVjdCBwYWdlIGFuZCBjYW4gYmUgbWFwcGVkIGluIENQVQ0KPiA+ID4gPiA+ID4gPiA+IHBh Z2UgdGFibGUsDQo+ID4gPiA+ID4gPiA+ID4gYnV0IHN1Y2ggcGFnZXMgYXJlIHRyZWF0ZWQgYXMg R1BVJ3MgcHJpdmF0ZSByZXNvdXJjZSwNCj4gPiA+ID4gPiA+ID4gPiBzbyBDUFUgY2FuJ3QNCj4g PiA+ID4gPiA+ID4gPiBhY2Nlc3MgdGhlbS4gSWYgQ1BVIGFjY2VzcyBzdWNoIHBhZ2UsIGEgcGFn ZSBmYXVsdCBpcw0KPiA+ID4gPiA+ID4gPiA+IHRyaWdnZXJlZA0KPiA+ID4gPiA+ID4gPiA+IGFu ZCBwYWdlIHdpbGwgYmUgbWlncmF0ZSB0byBzeXN0ZW0gbWVtb3J5Lg0KPiA+ID4gPiA+ID4gPiA+ IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gSXMgdGhpcyByZWFsbHkgdHJ1ZT8gV2Ug Y2FuIG1hcCBWUkFNIEJPcyB0byB0aGUgQ1BVDQo+ID4gPiA+ID4gPiA+IHdpdGhvdXQgaGF2aW5n DQo+ID4gPiA+ID4gPiA+IG1pZ2FydGUgYmFjayBhbmQgZm9ydGguIEFkbWl0dGVkbHkgSSBkb24n dCBrbm93IHRoZSBpbm5lcg0KPiA+ID4gPiA+ID4gPiB3b3JraW5ncyBvZg0KPiA+ID4gPiA+ID4g PiBob3cgdGhpcyB3b3JrcyBidXQgaW4gSUdUcyB3ZSBkbyB0aGlzIGFsbCB0aGUgdGltZS4NCj4g PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IMKgIDU0wqDCoMKgwqDCoMKgwqDCoCBiYXRjaF9i byA9IHhlX2JvX2NyZWF0ZShmZCwgdm0sIGJhdGNoX3NpemUsDQo+ID4gPiA+ID4gPiA+IMKgIDU1 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB2cmFtX2lmX3Bvc3NpYmxlKGZkLA0KPiA+ID4gPiA+ID4gPiAwKSwNCj4gPiA+ID4g PiA+ID4gwqAgNTYNCj4gPiA+IERSTV9YRV9HRU1fQ1JFQVRFX0ZMQUdfTkVFRFNfVklTSUJMRV9W UkFNKTsNCj4gPiA+ID4gPiA+ID4gwqAgNTfCoMKgwqDCoMKgwqDCoMKgIGJhdGNoX21hcCA9IHhl X2JvX21hcChmZCwgYmF0Y2hfYm8sDQo+ID4gPiA+ID4gPiA+IGJhdGNoX3NpemUpOw0KPiA+ID4g PiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gVGhlIEJPIGlzIGNyZWF0ZWQgaW4gVlJBTSBhbmQgdGhl biBtYXBwZWQgdG8gdGhlIENQVS4NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IEkgZG9u J3QgdGhpbmsgdGhlcmUgaXMgYW4gZXhwZWN0YXRpb24gb2YgY29oZXJlbmNlIHJhdGhlcg0KPiA+ ID4gPiA+ID4gPiBjYWNoaW5nIG1vZGUNCj4gPiA+ID4gPiA+ID4gYW5kIGV4Y2x1c2l2ZSBhY2Nl c3Mgb2YgdGhlIG1lbW9yeSBiYXNlZCBvbg0KPiA+ID4gPiA+ID4gPiBzeW5jaHJvbml6YXRpb24u DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBlLmcuDQo+ID4gPiA+ID4gPiA+IFVzZXIg d3JpdGUgQkIvZGF0YSB2aWEgQ1BVIHRvIEdQVSBtZW1vcnkNCj4gPiA+ID4gPiA+ID4gVXNlciBj YWxscyBleGVjDQo+ID4gPiA+ID4gPiA+IEdQVSByZWFkIC8gd3JpdGUgbWVtb3J5DQo+ID4gPiA+ ID4gPiA+IFVzZXIgd2FpdCBvbiBzeW5jIGluZGljYXRpbmcgZXhlYyBkb25lDQo+ID4gPiA+ID4g PiA+IFVzZXIgcmVhZHMgcmVzdWx0DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBBbGwg b2YgdGhpcyB3b3JrcyB3aXRob3V0IG1pZ3JhdGlvbi4gQXJlIHdlIG5vdCBwbGFuaW5nDQo+ID4g PiA+ID4gPiA+IHN1cHBvcnRpbmcgZmxvdw0KPiA+ID4gPiA+ID4gPiB3aXRoIFNWTT8NCj4gPiA+ ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IEFmYWlrIHRoaXMgbWlncmF0aW9uIGRhbmNlIHJlYWxs eSBvbmx5IG5lZWRzIHRvIGJlIGRvbmUNCj4gPiA+ID4gPiA+ID4gaWYgdGhlIENQVSBhbmQNCj4g PiA+ID4gPiA+ID4gR1BVIGFyZSB1c2luZyBhdG9taWNzIG9uIGEgc2hhcmVkIG1lbW9yeSByZWdp b24gYW5kIHRoZQ0KPiA+ID4gPiA+ID4gPiBHUFUgZGV2aWNlDQo+ID4gPiA+ID4gPiA+IGRvZXNu J3Qgc3VwcG9ydCBhIGNvaGVyZW50IG1lbW9yeSBwcm90b2NvbCAoZS5nLiBQVkMpLg0KPiA+ID4g PiA+ID4gDQo+ID4gPiA+ID4gPiBBbGwgeW91IHNhaWQgaXMgdHJ1ZS4gT24gbWFueSBvZiBvdXIg SFcsIENQVSBjYW4gYWN0dWFsbHkNCj4gPiA+ID4gPiA+IGFjY2VzcyBkZXZpY2UNCj4gPiA+IG1l bW9yeSwNCj4gPiA+ID4gPiBjYWNoZSBjb2hlcmVudGx5IG9yIG5vdC4NCj4gPiA+ID4gPiA+IA0K PiA+ID4gPiA+ID4gVGhlIHByb2JsZW0gaXMsIHRoaXMgaXMgbm90IHRydWUgZm9yIGFsbCBHUFUg dmVuZG9ycy4gRm9yDQo+ID4gPiA+ID4gPiBleGFtcGxlLCBvbiBzb21lDQo+ID4gPiBIVw0KPiA+ ID4gPiA+IGZyb20gc29tZSB2ZW5kb3IsIENQVSBjYW4gb25seSBhY2Nlc3MgcGFydGlhbGx5IG9m IGRldmljZQ0KPiA+ID4gPiA+IG1lbW9yeS4gVGhlIHNvDQo+ID4gPiBjYWxsZWQNCj4gPiA+ID4g PiBzbWFsbCBiYXIgY29uY2VwdC4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gU28gd2hlbiBI TU0gaXMgZGVmaW5lZCwgc3VjaCBmYWN0b3JzIHdlcmUgY29uc2lkZXJlZCwgYW5kDQo+ID4gPiA+ ID4gTUVNT1JZX0RFVklDRV9QUklWQVRFIGlzIGRlZmluZWQuIFdpdGggdGhpcyBkZWZpbml0aW9u LCBDUFUNCj4gPiA+ID4gPiBjYW4ndCBhY2Nlc3MNCj4gPiA+ID4gPiBkZXZpY2UgbWVtb3J5Lg0K PiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBTbyB5b3UgY2FuIHRoaW5rIGl0IGlzIGEgbGltaXRh dGlvbiBvZiBITU0uDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiANCj4gPiA+ID4gPiBJcyBpdCB0 aG91Z2g/IEkgc2VlIG90aGVyIHR5cGUgTUVNT1JZX0RFVklDRV9GU19EQVgsDQo+ID4gPiA+ID4g TUVNT1JZX0RFVklDRV9HRU5FUklDLCBhbmQgTUVNT1JZX0RFVklDRV9QQ0lfUDJQRE1BLiBGcm9t IG15DQo+ID4gPiA+ID4gbGltaXRlZA0KPiA+ID4gPiA+IHVuZGVyc3RhbmRpbmcgaXQgbG9va3Mg dG8gbWUgbGlrZSBvbmUgb2YgdGhvc2UgbW9kZXMgd291bGQNCj4gPiA+ID4gPiBzdXBwb3J0IG15 DQo+ID4gPiA+ID4gZXhhbXBsZS4NCj4gPiA+ID4gDQo+ID4gPiA+IA0KPiA+ID4gPiBObywgYWJv dmUgYXJlIGZvciBvdGhlciBwdXJwb3Nlcy4gSE1NIG9ubHkgc3VwcG9ydA0KPiA+ID4gPiBERVZJ Q0VfUFJJVkFURSBhbmQNCj4gPiA+IERFVklDRV9DT0hFUkVOVC4NCj4gPiA+ID4gDQo+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiBOb3RlIHRoaXMgaXMgb25seSBwYXJ0IDEgb2Ygb3VyIHN5c3RlbSBh bGxvY2F0b3Igd29yay4gV2UNCj4gPiA+ID4gPiA+IGRvIHBsYW4gdG8gc3VwcG9ydA0KPiA+ID4g PiA+IERFVklDRV9DT0hFUkVOVCBmb3Igb3VyIG5ld2VyIGRldmljZSwgc2VlIGJlbG93LiBXaXRo IHRoaXMNCj4gPiA+ID4gPiBvcHRpb24sIHdlDQo+ID4gPiBkb24ndA0KPiA+ID4gPiA+IGhhdmUg dW5uZWNlc3NhcnkgbWlncmF0aW9uIGJhY2sgYW5kIGZvcnRoLg0KPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiBZb3UgY2FuIHRoaW5rIHRoaXMgaXMganVzdCB3b3JrIG91dCBhbGwgdGhlIGNvZGUg cGF0aC4gOTAlDQo+ID4gPiA+ID4gPiBvZiB0aGUgZHJpdmVyIGNvZGUNCj4gPiA+IGZvcg0KPiA+ ID4gPiA+IERFVklDRV9QUklWQVRFIGFuZCBERVZJQ0VfQ09IRVJFTlQgd2lsbCBiZSBzYW1lLiBP dXIgcmVhbCB1c2UNCj4gPiA+ID4gPiBvZiBzeXN0ZW0NCj4gPiA+ID4gPiBhbGxvY2F0b3Igd2ls bCBiZSBERVZJQ0VfQ09IRVJFTlQgbW9kZS4gV2hpbGUgREVWSUNFX1BSSVZBVEUNCj4gPiA+ID4g PiBtb2RlDQo+ID4gPiBhbGxvdyB1cw0KPiA+ID4gPiA+IHRvIGV4ZXJjaXNlIHRoZSBjb2RlIG9u IG9sZCBIVy4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gTWFrZSBzZW5zZT8NCj4gPiA+ID4g PiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IEkgZ3Vlc3MgaWYgd2Ugd2FudCB0aGUgc3lzdGVt IGFsbG9jYXRvciB0byBhbHdheXMgY29oZXJlbnQsDQo+ID4gPiA+ID4gdGhlbiB5ZXMgeW91DQo+ ID4gPiA+ID4gbmVlZCB0aGlzIGR5bmFtaWMgbWlncmF0aW9uIHdpdGggZmF1bHRpbmcgb24gZWl0 aGVyIHNpZGUuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gSSB3YXMgdGhpbmtpbmcgdGhlIHN5c3Rl bSBhbGxvY2F0b3Igd291bGQgYmUgYmVoYXZlIGxpa2UgbXkNCj4gPiA+ID4gPiBleGFtcGxlDQo+ ID4gPiA+ID4gYWJvdmUgd2l0aCBtYWR2aXNlIGRpY3RhdGluZyB0aGUgY29oZXJlbmNlIHJ1bGVz Lg0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+IE1heWJlIEkgbWlzc2VkIHRoaXMgaW4gc3lzdGVtIGFs bG9jYXRvciBkZXNpZ24gYnV0IG15IGZlZWxpbmcNCj4gPiA+ID4gPiBpcyB3ZQ0KPiA+ID4gPiA+ IHNob3VsZG4ndCBhcmJpdHJhcmlseSBlbmZvcmNlIGNvaGVyZW5jZSBhcyB0aGF0IGNvdWxkIGxl YWQgdG8NCj4gPiA+ID4gPiBwb29yDQo+ID4gPiA+ID4gcGVyZm9ybWFuY2UgZHVlIHRvIGNvbnN0 YW50IG1pZ3JhdGlvbi4NCj4gPiA+ID4gDQo+ID4gPiA+IFN5c3RlbSBhbGxvY2F0b3IgaXRzZWxm IGRvZXNuJ3QgZW5mb3JjZSBjb2hlcmVuY2UuIENvaGVyZW5jZSBpcw0KPiA+ID4gPiBidWlsdCBp biB1c2VyDQo+ID4gPiBwcm9ncmFtbWluZyBtb2RlbC4gU28gc3lzdGVtIGFsbG9jYXRvciBhbGxv dyBib3RoIEdQVSBhbmQgQ1BVDQo+ID4gPiBhY2Nlc3Mgc3lzdGVtDQo+ID4gPiBhbGxvY2F0ZWQg cG9pbnRlcnMsIGJ1dCBpdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGd1YXJhbnRlZSB0aGUgZGF0YQ0K PiA+ID4gYWNjZXNzZWQgZnJvbQ0KPiA+ID4gQ1BVL0dQVSBpcyBjb2hlcmVudC4gSXQgaXMgdXNl ciBwcm9ncmFtJ3MgcmVzcG9uc2liaWxpdHkgdG8NCj4gPiA+IG1haW50YWluIGRhdGENCj4gPiA+ IGNvaGVyZW5jZS4NCj4gPiA+ID4gDQo+ID4gPiA+IERhdGEgbWlncmF0aW9uIGluIGRyaXZlciBp cyBvcHRpb25hbCwgZGVwZW5kaW5nIG9uIHBsYXRmb3JtDQo+ID4gPiA+IGNhcGFiaWxpdHksIHVz ZXINCj4gPiA+IHByZWZlcmVuY2UsIGNvcnJlY3RuZXNzIGFuZCBwZXJmb3JtYW5jZSBjb25zaWRl cmF0aW9uLiBEcml2ZXINCj4gPiA+IGludGVybmFsIGRhdGENCj4gPiA+IG1pZ3JhdGlvbiBvZiBj b3Vyc2Ugc2hvdWxkbid0IGJyZWFrIGRhdGEgY29oZXJlbmNlLg0KPiA+ID4gPiANCj4gPiA+ID4g T2YgY291cnNlIGRpZmZlcmVudCB2ZW5kb3IgY2FuIGhhdmUgZGlmZmVyZW50IGRhdGEgY29oZXJl bmNlDQo+ID4gPiA+IHNjaGVtZS4gRm9yDQo+ID4gPiBleGFtcGxlLCBpdCBpcyBjb21wbGV0ZWx5 IGRlc2lnbmVyJ3MgZmxleGliaWxpdHkgdG8gYnVpbGQgbW9kZWwNCj4gPiA+IHRoYXQgaXMgSFcg YXV0b21hdGljDQo+ID4gPiBkYXRhIGNvaGVyZW5jZSBvciBzb2Z0d2FyZSBleHBsaWNpdCBkYXRh IGNvaGVyZW5jZS4gT24gb3VyDQo+ID4gPiBwbGF0Zm9ybSwgd2UgYWxsb3cNCj4gPiA+IHVzZXIg cHJvZ3JhbSB0byBzZWxlY3QgZGlmZmVyZW50IGNvaGVyZW5jZSBtb2RlIGJ5IHNldHRpbmcNCj4g PiA+IHBhdF9pbmRleCBmb3IgZ3B1DQo+ID4gPiBhbmQgY3B1X2NhY2hpbmcgbW9kZSBmb3IgQ1BV LiBTbyB3ZSBoYXZlIGNvbXBsZXRlbHkgZ2l2ZSB0aGUNCj4gPiA+IGZsZXhpYmlsaXR5IHRvIHVz ZXINCj4gPiA+IHByb2dyYW0uIE5vdGhpbmcgb2YgdGhpcyBjb250cmFjdCBpcyBjaGFuZ2VkIGlu IHN5c3RlbSBhbGxvY2F0b3INCj4gPiA+IGRlc2lnbi4NCj4gPiA+ID4gDQo+ID4gPiA+IEdvaW5n IGJhY2sgdG8gdGhlIHF1ZXN0aW9uIG9mIHdoYXQgbWVtb3J5IHR5cGUgd2Ugc2hvdWxkIHVzZSB0 bw0KPiA+ID4gPiByZWdpc3RlciBvdXINCj4gPiA+IHZyYW0gdG8gY29yZSBtbS4gSE1NIGN1cnJl bnRseSBzdXBwb3J0IHR3byB0eXBlczogUFJJVkFURSBhbmQNCj4gPiA+IENPSEVSRU5ULg0KPiA+ ID4gVGhlIGNvaGVyZW50IHR5cGUgcmVxdWlyZXMgc29tZSBIVyBhbmQgQklPUyBzdXBwb3J0IHdo aWNoIHdlDQo+ID4gPiBkb24ndCBoYXZlDQo+ID4gPiByaWdodCBub3cuIFNvIHRoZSBvbmx5IGF2 YWlsYWJsZSBpcyBQUklWQVRFLiBXZSBoYXZlIG5vdCBvdGhlcg0KPiA+ID4gb3B0aW9uIHJpZ2h0 IG5vdy4NCj4gPiA+IEFzIHNhaWQsIHdlIHBsYW4gdG8gc3VwcG9ydCBjb2hlcmVudCB0eXBlIHdo ZXJlIHdlIGNhbiBhdm9pZA0KPiA+ID4gdW5uZWNlc3NhcnkgZGF0YQ0KPiA+ID4gbWlncmF0aW9u LiBCdXQgdGhhdCBpcyBzdGFnZSAyLg0KPiA+ID4gPiANCj4gPiA+IA0KPiA+ID4gVGhhbmtzIGZv ciB0aGUgZXhwbGFpbmF0aW9uLiBBZnRlciByZWFkaW5nIHlvdXIgcmVwbGllcywgdGhlIEhNTQ0K PiA+ID4gZG9jLA0KPiA+ID4gYW5kIGxvb2tpbmcgYXQgY29kZSB0aGlzIGFsbCBtYWtlcyBzZW5z ZS4NCj4gPiA+IA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiA+IEZvciBHUFUgZGV2aWNlIHdoaWNoIHN1cHBvcnRzIGNvaGVyZW50IG1lbW9y eSBwcm90b2NvbA0KPiA+ID4gPiA+ID4gPiA+IGIvdCBDUFUgYW5kDQo+ID4gPiA+ID4gPiA+ID4g R1BVIChzdWNoIGFzIENYTCBhbmQgQ0FQSSBwcm90b2NvbCksIHdlIGNhbiByZW1hcA0KPiA+ID4g PiA+ID4gPiA+IGRldmljZSBtZW1vcnkgYXMNCj4gPiA+ID4gPiA+ID4gPiBNRU1PUllfREVWSUNF X0NPSEVSRU5ULiBUaGlzIGlzIFRCRC4NCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4g PiBTaWduZWQtb2ZmLWJ5OiBPYWsgWmVuZyA8b2FrLnplbmdAaW50ZWwuY29tPg0KPiA+ID4gPiA+ ID4gPiA+IENvLWRldmVsb3BlZC1ieTogTmlyYW5qYW5hIFZpc2h3YW5hdGhhcHVyYQ0KPiA+ID4g PiA+ID4gPiA8bmlyYW5qYW5hLnZpc2h3YW5hdGhhcHVyYUBpbnRlbC5jb20+DQo+ID4gPiA+ID4g PiA+ID4gU2lnbmVkLW9mZi1ieTogTmlyYW5qYW5hIFZpc2h3YW5hdGhhcHVyYQ0KPiA+ID4gPiA+ ID4gPiA8bmlyYW5qYW5hLnZpc2h3YW5hdGhhcHVyYUBpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ ID4gQ2M6IE1hdHRoZXcgQnJvc3QgPG1hdHRoZXcuYnJvc3RAaW50ZWwuY29tPg0KPiA+ID4gPiA+ ID4gPiA+IENjOiBUaG9tYXMgSGVsbHN0csO2bSA8dGhvbWFzLmhlbGxzdHJvbUBpbnRlbC5jb20+ DQo+ID4gPiA+ID4gPiA+ID4gQ2M6IEJyaWFuIFdlbHR5IDxicmlhbi53ZWx0eUBpbnRlbC5jb20+ DQo+ID4gPiA+ID4gPiA+ID4gLS0tDQo+ID4gPiA+ID4gPiA+ID4gwqBkcml2ZXJzL2dwdS9kcm0v eGUvTWFrZWZpbGXCoMKgwqDCoMKgwqDCoMKgwqAgfMKgIDMgKy0NCj4gPiA+ID4gPiA+ID4gPiDC oGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9kZXZpY2VfdHlwZXMuaCB8wqAgOSArKysNCj4gPiA+ID4g PiA+ID4gPiDCoGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9tbWlvLmPCoMKgwqDCoMKgwqDCoMKgIHzC oCA4ICsrKw0KPiA+ID4gPiA+ID4gPiA+IMKgZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bS5owqDC oMKgwqDCoMKgwqDCoMKgIHwgMTQgKysrKysNCj4gPiA+ID4gPiA+ID4gPiDCoGRyaXZlcnMvZ3B1 L2RybS94ZS94ZV9zdm1fZGV2bWVtLmPCoMKgIHwgOTENCj4gPiA+ID4gPiA+ID4gKysrKysrKysr KysrKysrKysrKysrKysrKysrKw0KPiA+ID4gPiA+ID4gPiA+IMKgNSBmaWxlcyBjaGFuZ2VkLCAx MjQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPiA+ID4gPiA+ID4gPiA+IMKgY3JlYXRl IG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdm0uaA0KPiA+ID4gPiA+ID4gPiA+ IMKgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdm1fZGV2bWVtLmMN Cj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL3hlL01ha2VmaWxlDQo+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0K PiA+ID4gPiA+ID4gPiA+IGluZGV4IGM1MzEyMTA2OTVkYi4uODQwNDY3MDgwZTU5IDEwMDY0NA0K PiA+ID4gPiA+ID4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiA+ID4g PiA+ID4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS9NYWtlZmlsZQ0KPiA+ID4gPiA+ID4g PiA+IEBAIC0xNDIsNyArMTQyLDggQEAgeGUteSArPSB4ZV9iYi5vIFwNCj4gPiA+ID4gPiA+ID4g PiDCoAl4ZV92cmFtX2ZyZXEubyBcDQo+ID4gPiA+ID4gPiA+ID4gwqAJeGVfd2FpdF91c2VyX2Zl bmNlLm8gXA0KPiA+ID4gPiA+ID4gPiA+IMKgCXhlX3dhLm8gXA0KPiA+ID4gPiA+ID4gPiA+IC0J eGVfd29wY20ubw0KPiA+ID4gPiA+ID4gPiA+ICsJeGVfd29wY20ubyBcDQo+ID4gPiA+ID4gPiA+ ID4gKwl4ZV9zdm1fZGV2bWVtLm8NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IFRoZXNl IHNob3VsZCBiZSBpbiBhbHBoYWJldGljYWwgb3JkZXIuDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4g PiA+IFdpbGwgZml4DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gPiA+IMKgIyBncmFwaGljcyBoYXJkd2FyZSBtb25pdG9yaW5nIChIV01PTikgc3VwcG9ydA0K PiA+ID4gPiA+ID4gPiA+IMKgeGUtJChDT05GSUdfSFdNT04pICs9IHhlX2h3bW9uLm8NCj4gPiA+ ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBl cy5oDQo+ID4gPiA+ID4gPiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBlcy5o DQo+ID4gPiA+ID4gPiA+ID4gaW5kZXggOTc4NWVlZjJlNWE0Li5mMjdjM2JlZThjZTcgMTAwNjQ0 DQo+ID4gPiA+ID4gPiA+ID4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90eXBl cy5oDQo+ID4gPiA+ID4gPiA+ID4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX2RldmljZV90 eXBlcy5oDQo+ID4gPiA+ID4gPiA+ID4gQEAgLTk5LDYgKzk5LDE1IEBAIHN0cnVjdCB4ZV9tZW1f cmVnaW9uIHsNCj4gPiA+ID4gPiA+ID4gPiDCoAlyZXNvdXJjZV9zaXplX3QgYWN0dWFsX3BoeXNp Y2FsX3NpemU7DQo+ID4gPiA+ID4gPiA+ID4gwqAJLyoqIEBtYXBwaW5nOiBwb2ludGVyIHRvIFZS QU0gbWFwcGFibGUgc3BhY2UNCj4gPiA+ID4gPiA+ID4gPiAqLw0KPiA+ID4gPiA+ID4gPiA+IMKg CXZvaWQgX19pb21lbSAqbWFwcGluZzsNCj4gPiA+ID4gPiA+ID4gPiArCS8qKiBAcGFnZW1hcDog VXNlZCB0byByZW1hcCBkZXZpY2UgbWVtb3J5IGFzDQo+ID4gPiA+ID4gPiA+ID4gWk9ORV9ERVZJ Q0UNCj4gPiA+ICovDQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoCBzdHJ1Y3QgZGV2X3BhZ2VtYXAg cGFnZW1hcDsNCj4gPiA+ID4gPiA+ID4gPiArwqDCoMKgIC8qKg0KPiA+ID4gPiA+ID4gPiA+ICvC oMKgwqDCoCAqIEBocGFfYmFzZTogYmFzZSBob3N0IHBoeXNpY2FsIGFkZHJlc3MNCj4gPiA+ID4g PiA+ID4gPiArwqDCoMKgwqAgKg0KPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqDCoCAqIFRoaXMgaXMg Z2VuZXJhdGVkIHdoZW4gcmVtYXAgZGV2aWNlIG1lbW9yeSBhcw0KPiA+ID4gPiA+ID4gPiA+IFpP TkVfREVWSUNFDQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoMKgICovDQo+ID4gPiA+ID4gPiA+ID4g K8KgwqDCoCByZXNvdXJjZV9zaXplX3QgaHBhX2Jhc2U7DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gPiBXZWlyZCBpbmRlbnRhdGlvbi4gVGhpcyBnb2VzIGZvciB0aGUgZW50aXJlIHNlcmll cywgbG9vaw0KPiA+ID4gPiA+ID4gPiBhdCBjaGVja3BhdGNoLg0KPiA+ID4gPiA+ID4gDQo+ID4g PiA+ID4gPiBXaWxsIGZpeA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4g PiA+ID4gPiA+ID4gwqB9Ow0KPiA+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+IMKgLyoq DQo+ID4gPiA+ID4gPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9tbWlv LmMNCj4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9tbWlvLmMNCj4gPiA+ID4gPiA+ ID4gPiBpbmRleCBlM2RiM2ExNzg3NjAuLjBkNzk1Mzk0YmM0YyAxMDA2NDQNCj4gPiA+ID4gPiA+ ID4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfbW1pby5jDQo+ID4gPiA+ID4gPiA+ID4g KysrIGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX21taW8uYw0KPiA+ID4gPiA+ID4gPiA+IEBAIC0y Miw2ICsyMiw3IEBADQo+ID4gPiA+ID4gPiA+ID4gwqAjaW5jbHVkZSAieGVfbW9kdWxlLmgiDQo+ ID4gPiA+ID4gPiA+ID4gwqAjaW5jbHVkZSAieGVfc3Jpb3YuaCINCj4gPiA+ID4gPiA+ID4gPiDC oCNpbmNsdWRlICJ4ZV90aWxlLmgiDQo+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJ4ZV9zdm0u aCINCj4gPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiDCoCNkZWZpbmUNCj4gPiA+ID4g PiA+ID4gPiBYRUhQX01UQ0ZHX0FERFIJCVhFX1JFRygweDEwMTgwMCkNCj4gPiA+ID4gPiA+ID4g PiDCoCNkZWZpbmUgVElMRV9DT1VOVAkJUkVHX0dFTk1BU0soMTUsIDgpDQo+ID4gPiA+ID4gPiA+ ID4gQEAgLTI4Niw2ICsyODcsNyBAQCBpbnQgeGVfbW1pb19wcm9iZV92cmFtKHN0cnVjdA0KPiA+ ID4gPiA+ID4gPiA+IHhlX2RldmljZSAqeGUpDQo+ID4gPiA+ID4gPiA+ID4gwqAJCX0NCj4gPiA+ ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiDCoAkJaW9fc2l6ZSAtPSBtaW5fdCh1NjQsIHRp bGVfc2l6ZSwNCj4gPiA+ID4gPiA+ID4gPiBpb19zaXplKTsNCj4gPiA+ID4gPiA+ID4gPiArCQl4 ZV9zdm1fZGV2bV9hZGQodGlsZSwgJnRpbGUtDQo+ID4gPiA+ID4gPiA+ID4gPm1lbS52cmFtKTsN Cj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IERvIHdlIHdhbnQgdG8gZG8gdGhpcyBwcm9i ZSBmb3IgYWxsIGRldmljZXMgd2l0aCBWUkFNIG9yDQo+ID4gPiA+ID4gPiA+IG9ubHkgYSBzdWJz ZXQ/DQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IEFsbA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+ IENhbiB5b3UgZXhwbGFpbiB3aHk/DQo+ID4gPiA+IA0KPiA+ID4gPiBJdCBpcyBuYXR1cmFsIGZv ciBtZSB0byBhZGQgYWxsIGRldmljZSBtZW1vcnkgdG8gaG1tLiBJbiBobW0NCj4gPiA+ID4gZGVz aWduLCBkZXZpY2UNCj4gPiA+IG1lbW9yeSBpcyB1c2VkIGFzIGEgc3BlY2lhbCBzd2FwIG91dCBm b3Igc3lzdGVtIG1lbW9yeS4gSSB3b3VsZA0KPiA+ID4gYXNrIHdoeSB3ZQ0KPiA+ID4gb25seSB3 YW50IHRvIGFkZCBhIHN1YnNldCBvZiB2cmFtPyBCeSBhIHN1YnNldCwgZG8geW91IG1lYW4gb25s eQ0KPiA+ID4gdnJhbSBvZiBvbmUNCj4gPiA+IHRpbGUgaW5zdGVhZCBvZiBhbGwgdGlsZXM/DQo+ ID4gPiA+IA0KPiA+ID4gDQo+ID4gPiBJIHRoaW5rIHdlIHRhbGtpbmcgYWJvdXQgZGlmZmVyZW50 IHRoaW5ncywgbXkgYmFkIG9uIHdvcmRpbmcgaW4NCj4gPiA+IHRoZQ0KPiA+ID4gb3JpZ2luYWwg cXVlc3Rpb24uDQo+ID4gPiANCj4gPiA+IExldCBtZSBhc2sgYWdhaW4gLSBzaG91bGQgYmUgY2Fs bGluZyB4ZV9zdm1fZGV2bV9hZGQgb24gYWxsDQo+ID4gPiAqcGxhdGZvcm1zKg0KPiA+ID4gdGhh dCBoYXZlIFZSQU0uIGkuZS4gU2hvdWxkIHdlIGRvIHRoaXMgb24gUFZDIGJ1dCBub3QgREcyPw0K PiA+IA0KPiA+IA0KPiA+IE9oLCBJIHNlZS4gR29vZCBxdWVzdGlvbi4gT24gaTkxNSwgdGhpcyBm ZWF0dXJlIHdhcyBvbmx5IHRlc3RlZCBvbg0KPiA+IFBWQy4gV2UgZG9uJ3QgaGF2ZSBhIHBsYW4g dG8gZW5hYmxlIGl0IG9uIG9sZGVyIHBsYXRmb3JtIHRoYW4gUFZDLiANCj4gPiANCj4gPiBMZXQg bWUgYWRkIGEgY2hlY2sgaGVyZSwgb25seSBlbmFibGVkIGl0IG9uIHBsYXRmb3JtIG5ld2VyIHRo YW4gUFZDDQo+ID4gDQo+IA0KPiBQcm9iYWJseSBhY3R1YWxseSBjaGVjayAneGUtPmluZm8uaGFz X3VzbScuDQo+IA0KPiBXZSBtaWdodCB3YW50IHRvIHJlbmFtZSBmaWVsZCB0b28gYW5kIGRyb3Ag dGhlICd1c20nIG5vbWVuY2xhdHVyZSBidXQNCj4gdGhhdCBjYW4gYmUgZG9uZSBsYXRlci4NCg0K UGVyaGFwcyAiaGFzX3JlY292ZXJhYmxlX3BhZ2VmYXVsdHMiIG9yIHNvbWUgZm9yIG9mIGFiYnJl dmlhdGlvbi4NCg0KQW5vdGhlciBxdWVzdGlvbiB3IHIgdCB0aGlzIGlzIHdoZXRoZXIgd2Ugc2hv dWxkIGRvIHRoaXMNCnVuY29uZGl0aW9uYWxseSBldmVuIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBv cnQgaXQuIEFkZGluZyBhIHN0cnVjdF9wYWdlDQpwZXIgVlJBTSBwYWdlIHdvdWxkIHBvdGVudGlh bGx5IGNvbnN1bWUgYSBzaWduaWZpY2FudCBhbW91bnQgb2Ygc3lzdGVtDQptZW1vcnkuDQoNCi9U aG9tYXMNCg0KDQoNCj4gDQo+IE1hdHQNCj4gDQo+ID4gT2FrIA0KPiA+IA0KPiA+ID4gDQo+ID4g PiBNYXR0DQo+ID4gPiANCj4gPiA+ID4gT2FrDQo+ID4gPiA+IA0KPiA+ID4gPiANCj4gPiA+ID4g PiANCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gwqAJfQ0KPiA+ID4gPiA+ID4gPiA+ IA0KPiA+ID4gPiA+ID4gPiA+IMKgCXhlLT5tZW0udnJhbS5hY3R1YWxfcGh5c2ljYWxfc2l6ZSA9 DQo+ID4gPiA+ID4gPiA+ID4gdG90YWxfc2l6ZTsNCj4gPiA+ID4gPiA+ID4gPiBAQCAtMzU0LDEw ICszNTYsMTYgQEAgdm9pZCB4ZV9tbWlvX3Byb2JlX3RpbGVzKHN0cnVjdA0KPiA+ID4gPiA+ID4g PiA+IHhlX2RldmljZQ0KPiA+ID4gKnhlKQ0KPiA+ID4gPiA+ID4gPiA+IMKgc3RhdGljIHZvaWQg bW1pb19maW5pKHN0cnVjdCBkcm1fZGV2aWNlICpkcm0sIHZvaWQNCj4gPiA+ID4gPiA+ID4gPiAq YXJnKQ0KPiA+ID4gPiA+ID4gPiA+IMKgew0KPiA+ID4gPiA+ID4gPiA+IMKgCXN0cnVjdCB4ZV9k ZXZpY2UgKnhlID0gYXJnOw0KPiA+ID4gPiA+ID4gPiA+ICvCoMKgwqAgc3RydWN0IHhlX3RpbGUg KnRpbGU7DQo+ID4gPiA+ID4gPiA+ID4gK8KgwqDCoCB1OCBpZDsNCj4gPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gPiDCoAlwY2lfaW91bm1hcCh0b19wY2lfZGV2KHhlLT5kcm0uZGV2KSwg eGUtDQo+ID4gPiA+ID4gPiA+ID4gPm1taW8ucmVncyk7DQo+ID4gPiA+ID4gPiA+ID4gwqAJaWYg KHhlLT5tZW0udnJhbS5tYXBwaW5nKQ0KPiA+ID4gPiA+ID4gPiA+IMKgCQlpb3VubWFwKHhlLT5t ZW0udnJhbS5tYXBwaW5nKTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKwlm b3JfZWFjaF90aWxlKHRpbGUsIHhlLCBpZCkNCj4gPiA+ID4gPiA+ID4gPiArCQl4ZV9zdm1fZGV2 bV9yZW1vdmUoeGUsICZ0aWxlLQ0KPiA+ID4gPiA+ID4gPiA+ID5tZW0udnJhbSk7DQo+ID4gPiA+ ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBhYm92ZSBleGlz dGluZyBjb2RlLiBUeXBpY2FsIG9uDQo+ID4gPiA+ID4gPiA+IGZpbmkgdG8gZG8NCj4gPiA+ID4g PiA+ID4gdGhpbmdzIGluIHJldmVyc2Ugb3JkZXIgZnJvbSBpbml0Lg0KPiA+ID4gPiA+ID4gDQo+ ID4gPiA+ID4gPiBXaWxsIGZpeA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArDQo+ ID4gPiA+ID4gPiA+ID4gwqB9DQo+ID4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gwqBz dGF0aWMgaW50IHhlX3ZlcmlmeV9sbWVtX3JlYWR5KHN0cnVjdCB4ZV9kZXZpY2UgKnhlKQ0KPiA+ ID4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmgNCj4g PiA+IGIvZHJpdmVycy9ncHUvZHJtL3hlL3hlX3N2bS5oDQo+ID4gPiA+ID4gPiA+ID4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gPiA+ID4gPiA+ID4gPiBpbmRleCAwMDAwMDAwMDAwMDAuLjA5Zjlh ZmIwZTdkNA0KPiA+ID4gPiA+ID4gPiA+IC0tLSAvZGV2L251bGwNCj4gPiA+ID4gPiA+ID4gPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0veGUveGVfc3ZtLmgNCj4gPiA+ID4gPiA+ID4gPiBAQCAtMCww ICsxLDE0IEBADQo+ID4gPiA+ID4gPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBN SVQNCj4gPiA+ID4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiA+ID4gPiArICogQ29weXJpZ2h0IMKp IDIwMjMgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IDIw MjQ/DQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IFRoaXMgcGF0Y2ggd2FzIGFjdHVhbGx5IHdy aXR0ZW4gMjAyMw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArICovDQo+ID4gPiA+ ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICsjaWZuZGVmIF9fWEVfU1ZNX0gNCj4gPiA+ID4g PiA+ID4gPiArI2RlZmluZSBfX1hFX1NWTV9IDQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ ID4gPiA+ICsjaW5jbHVkZSAieGVfZGV2aWNlX3R5cGVzLmgiDQo+ID4gPiA+ID4gPiA+IA0KPiA+ ID4gPiA+ID4gPiBJIGRvbid0IHRoaW5rIHlvdSBuZWVkIHRvIGluY2x1ZGUgdGhpcy4gUmF0aGVy IGp1c3QNCj4gPiA+ID4gPiA+ID4gZm9yd2FyZCBkZWNsIHN0cnVjdHMNCj4gPiA+ID4gPiA+ID4g dXNlZCBoZXJlLg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBXaWxsIGZpeA0KPiA+ID4gPiA+ ID4gPiANCj4gPiA+ID4gPiA+ID4gZS5nLg0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4g c3RydWN0IHhlX2RldmljZTsNCj4gPiA+ID4gPiA+ID4gc3RydWN0IHhlX21lbV9yZWdpb247DQo+ ID4gPiA+ID4gPiA+IHN0cnVjdCB4ZV90aWxlOw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gK2ludCB4ZV9zdm1fZGV2bV9hZGQoc3RydWN0IHhlX3Rp bGUgKnRpbGUsIHN0cnVjdA0KPiA+ID4gPiA+ID4gPiA+IHhlX21lbV9yZWdpb24NCj4gPiA+ICpt ZW0pOw0KPiA+ID4gPiA+ID4gPiA+ICt2b2lkIHhlX3N2bV9kZXZtX3JlbW92ZShzdHJ1Y3QgeGVf ZGV2aWNlICp4ZSwgc3RydWN0DQo+ID4gPiB4ZV9tZW1fcmVnaW9uDQo+ID4gPiA+ID4gPiA+ICpt ZW0pOw0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gVGhlIGFyZ3VtZW50cyBoZXJlIGFy ZSBpbmNvbmdydWVudCBoZXJlLiBUeXBpY2FsbHkgd2UNCj4gPiA+ID4gPiA+ID4gd2FudCB0aGVz ZSB0bw0KPiA+ID4gPiA+ID4gPiBtYXRjaC4NCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gV2ls bCBmaXgNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ ICsjZW5kaWYNCj4gPiA+ID4gPiA+ID4gPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hl L3hlX3N2bV9kZXZtZW0uYw0KPiA+ID4gPiA+ID4gPiBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9z dm1fZGV2bWVtLmMNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IEluY29uZ3J1ZW50IGJl dHdlZW4geGVfc3ZtLmggYW5kIHhlX3N2bV9kZXZtZW0uYy4NCj4gPiA+ID4gPiA+IA0KPiA+ID4g PiA+ID4gRGlkIHlvdSBtZWFuIG1lbSB2cyBtcj8gaWYgeWVzLCB3aWxsIGZpeA0KPiA+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gPiBBZ2FpbiB0aGVzZSB0d28NCj4gPiA+ID4gPiA+ID4gc2hvdWxkDQo+ ID4gPiA+ID4gPiA+IG1hdGNoLg0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiBuZXcg ZmlsZSBtb2RlIDEwMDY0NA0KPiA+ID4gPiA+ID4gPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4uNjNi N2ExOTYxY2M2DQo+ID4gPiA+ID4gPiA+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ID4gPiA+ID4gPiA+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS94ZS94ZV9zdm1fZGV2bWVtLmMNCj4gPiA+ID4gPiA+ID4g PiBAQCAtMCwwICsxLDkxIEBADQo+ID4gPiA+ID4gPiA+ID4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBNSVQNCj4gPiA+ID4gPiA+ID4gPiArLyoNCj4gPiA+ID4gPiA+ID4gPiArICogQ29w eXJpZ2h0IMKpIDIwMjMgSW50ZWwgQ29ycG9yYXRpb24NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gPiA+IDIwMjQ/DQo+ID4gPiA+ID4gPiBJdCBpcyBmcm9tIDIwMjMNCj4gPiA+ID4gPiA+ID4g DQo+ID4gPiA+ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4g PiArI2luY2x1ZGUgPGxpbnV4L21tX3R5cGVzLmg+DQo+ID4gPiA+ID4gPiA+ID4gKyNpbmNsdWRl IDxsaW51eC9zY2hlZC9tbS5oPg0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAr I2luY2x1ZGUgInhlX2RldmljZV90eXBlcy5oIg0KPiA+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSAi eGVfdHJhY2UuaCINCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IHhlX3RyYWNlLmggYXBw ZWFycyB0byBiZSB1bnVzZWQuDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IFdpbGwgZml4DQo+ ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ICsjaW5jbHVkZSAieGVfc3ZtLmgiDQo+ID4g PiA+ID4gPiA+ID4gKw0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdGlj IHZtX2ZhdWx0X3QgeGVfZGV2bV9taWdyYXRlX3RvX3JhbShzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4g PiB2bV9mYXVsdCAqdm1mKQ0KPiA+ID4gPiA+ID4gPiA+ICt7DQo+ID4gPiA+ID4gPiA+ID4gKwly ZXR1cm4gMDsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4g PiA+ID4gPiArc3RhdGljIHZvaWQgeGVfZGV2bV9wYWdlX2ZyZWUoc3RydWN0IHBhZ2UgKnBhZ2Up DQo+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ID4gPiA+ ICsNCj4gPiA+ID4gPiA+ID4gPiArc3RhdGljIGNvbnN0IHN0cnVjdCBkZXZfcGFnZW1hcF9vcHMN Cj4gPiA+ID4gPiA+ID4gPiB4ZV9kZXZtX3BhZ2VtYXBfb3BzID0gew0KPiA+ID4gPiA+ID4gPiA+ ICsJLnBhZ2VfZnJlZSA9IHhlX2Rldm1fcGFnZV9mcmVlLA0KPiA+ID4gPiA+ID4gPiA+ICsJLm1p Z3JhdGVfdG9fcmFtID0geGVfZGV2bV9taWdyYXRlX3RvX3JhbSwNCj4gPiA+ID4gPiA+ID4gPiAr fTsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiBBc3N1 bWUgdGhlc2UgYXJlIHBsYWNlaG9sZGVycyB0aGF0IHdpbGwgYmUgcG9wdWxhdGVkDQo+ID4gPiA+ ID4gPiA+IGxhdGVyPw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IGNv cnJyZWN0DQo+ID4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiA+ICsvKioNCj4gPiA+ID4gPiA+ ID4gPiArICogeGVfc3ZtX2Rldm1fYWRkOiBSZW1hcCBhbmQgcHJvdmlkZSBtZW1tYXAgYmFja2lu Zw0KPiA+ID4gPiA+ID4gPiA+IGZvcg0KPiA+ID4gZGV2aWNlDQo+ID4gPiA+ID4gPiA+IG1lbW9y eQ0KPiA+ID4gPiA+ID4gPiA+ICsgKiBAdGlsZTogdGlsZSB0aGF0IHRoZSBtZW1vcnkgcmVnaW9u IGJsb25ncyB0bw0KPiA+ID4gPiA+ID4gPiA+ICsgKiBAbXI6IG1lbW9yeSByZWdpb24gdG8gcmVt YXANCj4gPiA+ID4gPiA+ID4gPiArICoNCj4gPiA+ID4gPiA+ID4gPiArICogVGhpcyByZW1hcCBk ZXZpY2UgbWVtb3J5IHRvIGhvc3QgcGh5c2ljYWwgYWRkcmVzcw0KPiA+ID4gPiA+ID4gPiA+IHNw YWNlIGFuZCBjcmVhdGUNCj4gPiA+ID4gPiA+ID4gPiArICogc3RydWN0IHBhZ2UgdG8gYmFjayBk ZXZpY2UgbWVtb3J5DQo+ID4gPiA+ID4gPiA+ID4gKyAqDQo+ID4gPiA+ID4gPiA+ID4gKyAqIFJl dHVybjogMCBvbiBzdWNjZXNzIHN0YW5kYXJkIGVycm9yIGNvZGUgb3RoZXJ3aXNlDQo+ID4gPiA+ ID4gPiA+ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiA+ICtpbnQgeGVfc3ZtX2Rldm1fYWRkKHN0cnVj dCB4ZV90aWxlICp0aWxlLCBzdHJ1Y3QNCj4gPiA+ID4gPiA+ID4gPiB4ZV9tZW1fcmVnaW9uICpt cikNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IEhlcmUgSSBzZWUgdGhlIHhlX21lbV9y ZWdpb24gaXMgZnJvbSB0aWxlLT5tZW0udnJhbSwNCj4gPiA+ID4gPiA+ID4gd29uZGVyaW5nIHJh dGhlcg0KPiA+ID4gPiA+ID4gPiB0aGFuIHVzaW5nIHRoZSB0aWxlLT5tZW0udnJhbSB3ZSBzaG91 bGQgdXNlIHhlLT5tZW0udnJhbQ0KPiA+ID4gPiA+ID4gPiB3aGVuDQo+ID4gPiBlbmFibGluZw0K PiA+ID4gPiA+ID4gPiBzdm0/IElzbid0IHRoZSBpZGVhIGJlaGluZCBzdm0gdGhlIGVudGlyZSBt ZW1vcnkgaXMgMQ0KPiA+ID4gPiA+ID4gPiB2aWV3Pw0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4g PiBTdGlsbCBuZWVkIHRvIHVzZSB0aWxlLiBUaGUgcmVhc29uIGlzLCBtZW1vcnkgb2YgZGlmZmVy ZW50DQo+ID4gPiA+ID4gPiB0aWxlIGNhbiBoYXZlDQo+ID4gPiBkaWZmZXJlbnQNCj4gPiA+ID4g PiBjaGFyYWN0ZXJpc3RpY3MsIHN1Y2ggYXMgbGF0ZW5jeS4gU28gd2Ugd2FudCB0byBkaWZmZXJl bnRpYXRlDQo+ID4gPiA+ID4gbWVtb3J5IGIvdCB0aWxlcw0KPiA+ID4gYWxzbw0KPiA+ID4gPiA+ IGluIHN2bS4gSSBuZWVkIHRvIGNoYW5nZSBiZWxvdyAiIG1yLT5wYWdlbWFwLm93bmVyID0gdGls ZS0NCj4gPiA+ID4gPiA+eGUtPmRybS5kZXYgIi4NCj4gPiA+IHRoZQ0KPiA+ID4gPiA+IG93bmVy IHNob3VsZCBhbHNvIGJlIHRpbGUuIFRoaXMgaXMgdGhlIHdheSBobW0gZGlmZmVyZW50aWF0ZQ0K PiA+ID4gPiA+IG1lbW9yeSBvZg0KPiA+ID4gZGlmZmVyZW50DQo+ID4gPiA+ID4gdGlsZS4NCj4g PiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gV2l0aCBzdm0gaXQgaXMgMSB2aWV3LCBmcm9tIHZpcnR1 YWwgYWRkcmVzcyBzcGFjZQ0KPiA+ID4gPiA+ID4gcGVyc3BlY3RpdmUgYW5kIGZyb20NCj4gPiA+ IHBoeXNpY2FsDQo+ID4gPiA+ID4gc3RydWN0IHBhZ2UgcGVyc3BlY3RpdmUuIFlvdSBjYW4gdGhp bmsgb2YgYWxsIHRoZSB0aWxlJ3MgdnJhbQ0KPiA+ID4gPiA+IGlzIHN0YWNrZWQgdG9nZXRoZXIN Cj4gPiA+IHRvDQo+ID4gPiA+ID4gZm9ybSBhIHVuaWZpZWQgdmlldyB0b2dldGhlciB3aXRoIHN5 c3RlbSBtZW1vcnkuIFRoaXMgZG9lc24ndA0KPiA+ID4gPiA+IHByb2hpYml0IHVzDQo+ID4gPiBm cm9tDQo+ID4gPiA+ID4gZGlmZmVyZW50aWF0ZSBtZW1vcnkgZnJvbSBkaWZmZXJlbnQgdGlsZS4g VGhpcw0KPiA+ID4gPiA+IGRpZmZlcmVudGlhdGlvbiBhbGxvdyB1cyB0bw0KPiA+ID4gb3B0aW1p emUNCj4gPiA+ID4gPiBwZXJmb3JtYW5jZSwgaS5lLiwgd2UgY2FuIHdpc2VseSBwbGFjZSBtZW1v cnkgaW4gc3BlY2lmaWMNCj4gPiA+ID4gPiB0aWxlLiBJZiB3ZSBkb24ndA0KPiA+ID4gPiA+IGRp ZmZlcmVudGlhdGUsIHRoaXMgaXMgbm90IHBvc3NpYmxlLg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ ID4gDQo+ID4gPiA+ID4gT2sgbWFrZXMgc2Vuc2UuDQo+ID4gPiA+ID4gDQo+ID4gPiA+ID4gTWF0 dA0KPiA+ID4gPiA+IA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gSSBzdXBwb3NlIGlm IHdlIGRvIHRoYXQgd2UgYWxzbyBvbmx5IHVzZSAxIFRUTSBWUkFNDQo+ID4gPiA+ID4gPiA+IG1h bmFnZXIgLyBidWRkeQ0KPiA+ID4gPiA+ID4gPiBhbGxvY2F0b3IgdG9vLiBJIHRob3VnaHQgSSBz YXcgc29tZSBwYXRjaGVzIGZseWluZyBhcm91bmQNCj4gPiA+ID4gPiA+ID4gZm9yIHRoYXQgdG9v Lg0KPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiBUdG0gdnJhbSBtYW5hZ2VyIGlzIG5vdCBpbiB0 aGUgcGljdHVyZS4gV2UgZGVsaWJlcmF0ZWx5DQo+ID4gPiA+ID4gPiBhdm9pZGVkIGl0IHBlcg0K PiA+ID4gcHJldmlvdXMNCj4gPiA+ID4gPiBkaXNjdXNzaW9uDQo+ID4gPiA+ID4gPiANCj4gPiA+ ID4gPiA+IFllcyBzYW1lIGJ1ZGR5IGFsbG9jYXRvci4gSXQgaXMgaW4gbXkgcHJldmlvdXMgUE9D Og0KPiA+ID4gaHR0cHM6Ly9sb3JlLmtlcm5lbC5vcmcvZHJpLQ0KPiA+ID4gPiA+IGRldmVsLzIw MjQwMTE3MjIxMjIzLjE4NTQwLTEyLW9hay56ZW5nQGludGVsLmNvbS8uIEkgZGlkbid0DQo+ID4g PiA+ID4gcHV0IHRob3NlDQo+ID4gPiBwYXRjaGVzDQo+ID4gPiA+ID4gaW4gdGhpcyBzZXJpZXMg YmVjYXVzZSBJIHdhbnQgdG8gbWVyZ2UgdGhpcyBzbWFsbCBwYXRjaGVzDQo+ID4gPiA+ID4gc2Vw YXJhdGVseS4NCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+ID4gK3sNCj4gPiA+ID4gPiA+ ID4gPiArCXN0cnVjdCBkZXZpY2UgKmRldiA9ICZ0b19wY2lfZGV2KHRpbGUtPnhlLQ0KPiA+ID4g PiA+ID4gPiA+ID5kcm0uZGV2KS0+ZGV2Ow0KPiA+ID4gPiA+ID4gPiA+ICsJc3RydWN0IHJlc291 cmNlICpyZXM7DQo+ID4gPiA+ID4gPiA+ID4gKwl2b2lkICphZGRyOw0KPiA+ID4gPiA+ID4gPiA+ ICsJaW50IHJldDsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKwlyZXMgPSBk ZXZtX3JlcXVlc3RfZnJlZV9tZW1fcmVnaW9uKGRldiwNCj4gPiA+ID4gPiA+ID4gPiAmaW9tZW1f cmVzb3VyY2UsDQo+ID4gPiA+ID4gPiA+ID4gKwkJCQkJwqDCoCBtci0NCj4gPiA+ID4gPiA+ID4g PiA+dXNhYmxlX3NpemUpOw0KPiA+ID4gPiA+ID4gPiA+ICsJaWYgKElTX0VSUihyZXMpKSB7DQo+ ID4gPiA+ID4gPiA+ID4gKwkJcmV0ID0gUFRSX0VSUihyZXMpOw0KPiA+ID4gPiA+ID4gPiA+ICsJ CXJldHVybiByZXQ7DQo+ID4gPiA+ID4gPiA+ID4gKwl9DQo+ID4gPiA+ID4gPiA+ID4gKw0KPiA+ ID4gPiA+ID4gPiA+ICsJbXItPnBhZ2VtYXAudHlwZSA9IE1FTU9SWV9ERVZJQ0VfUFJJVkFURTsN Cj4gPiA+ID4gPiA+ID4gPiArCW1yLT5wYWdlbWFwLnJhbmdlLnN0YXJ0ID0gcmVzLT5zdGFydDsN Cj4gPiA+ID4gPiA+ID4gPiArCW1yLT5wYWdlbWFwLnJhbmdlLmVuZCA9IHJlcy0+ZW5kOw0KPiA+ ID4gPiA+ID4gPiA+ICsJbXItPnBhZ2VtYXAubnJfcmFuZ2UgPSAxOw0KPiA+ID4gPiA+ID4gPiA+ ICsJbXItPnBhZ2VtYXAub3BzID0gJnhlX2Rldm1fcGFnZW1hcF9vcHM7DQo+ID4gPiA+ID4gPiA+ ID4gKwltci0+cGFnZW1hcC5vd25lciA9IHRpbGUtPnhlLT5kcm0uZGV2Ow0KPiA+ID4gPiA+ID4g PiA+ICsJYWRkciA9IGRldm1fbWVtcmVtYXBfcGFnZXMoZGV2LCAmbXItPnBhZ2VtYXApOw0KPiA+ ID4gPiA+ID4gPiA+ICsJaWYgKElTX0VSUihhZGRyKSkgew0KPiA+ID4gPiA+ID4gPiA+ICsJCWRl dm1fcmVsZWFzZV9tZW1fcmVnaW9uKGRldiwgcmVzLQ0KPiA+ID4gPiA+ID4gPiA+ID5zdGFydCwN Cj4gPiA+IHJlc291cmNlX3NpemUocmVzKSk7DQo+ID4gPiA+ID4gPiA+ID4gKwkJcmV0ID0gUFRS X0VSUihhZGRyKTsNCj4gPiA+ID4gPiA+ID4gPiArCQlkcm1fZXJyKCZ0aWxlLT54ZS0+ZHJtLCAi RmFpbGVkIHRvDQo+ID4gPiA+ID4gPiA+ID4gcmVtYXAgdGlsZSAlZA0KPiA+ID4gbWVtb3J5LA0K PiA+ID4gPiA+ID4gPiBlcnJubyAlZFxuIiwNCj4gPiA+ID4gPiA+ID4gPiArCQkJCXRpbGUtPmlk LCByZXQpOw0KPiA+ID4gPiA+ID4gPiA+ICsJCXJldHVybiByZXQ7DQo+ID4gPiA+ID4gPiA+ID4g Kwl9DQo+ID4gPiA+ID4gPiA+ID4gKwltci0+aHBhX2Jhc2UgPSByZXMtPnN0YXJ0Ow0KPiA+ID4g PiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArCWRybV9pbmZvKCZ0aWxlLT54ZS0+ZHJtLCAi QWRkZWQgdGlsZSAlZCBtZW1vcnkNCj4gPiA+ID4gPiA+ID4gPiBbJWxseC0lbGx4XSB0bw0KPiA+ ID4gZGV2bSwNCj4gPiA+ID4gPiA+ID4gcmVtYXBwZWQgdG8gJXByXG4iLA0KPiA+ID4gPiA+ID4g PiA+ICsJCQl0aWxlLT5pZCwgbXItPmlvX3N0YXJ0LCBtci0NCj4gPiA+ID4gPiA+ID4gPiA+aW9f c3RhcnQgKyBtci0NCj4gPiA+ID4gdXNhYmxlX3NpemUsDQo+ID4gPiA+ID4gPiA+IHJlcyk7DQo+ ID4gPiA+ID4gPiA+ID4gKwlyZXR1cm4gMDsNCj4gPiA+ID4gPiA+ID4gPiArfQ0KPiA+ID4gPiA+ ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiArLyoqDQo+ID4gPiA+ID4gPiA+ID4gKyAqIHhlX3N2 bV9kZXZtX3JlbW92ZTogVW5tYXAgZGV2aWNlIG1lbW9yeSBhbmQgZnJlZQ0KPiA+ID4gPiA+ID4g PiA+IHJlc291cmNlcw0KPiA+ID4gPiA+ID4gPiA+ICsgKiBAeGU6IHhlIGRldmljZQ0KPiA+ID4g PiA+ID4gPiA+ICsgKiBAbXI6IG1lbW9yeSByZWdpb24gdG8gcmVtb3ZlDQo+ID4gPiA+ID4gPiA+ ID4gKyAqLw0KPiA+ID4gPiA+ID4gPiA+ICt2b2lkIHhlX3N2bV9kZXZtX3JlbW92ZShzdHJ1Y3Qg eGVfZGV2aWNlICp4ZSwgc3RydWN0DQo+ID4gPiB4ZV9tZW1fcmVnaW9uDQo+ID4gPiA+ID4gPiA+ ICptcikNCj4gPiA+ID4gPiA+ID4gPiArew0KPiA+ID4gPiA+ID4gPiA+ICsJLypGSVhNRTogYmVs b3cgY2F1c2UgYSBrZXJuZWwgaGFuZ2UgZHVyaW5nDQo+ID4gPiA+ID4gPiA+ID4gbW9kdWVsIHJl bW92ZSovDQo+ID4gPiA+ID4gPiA+ID4gKyNpZiAwDQo+ID4gPiA+ID4gPiA+ID4gKwlzdHJ1Y3Qg ZGV2aWNlICpkZXYgPSAmdG9fcGNpX2Rldih4ZS0+ZHJtLmRldiktDQo+ID4gPiA+ID4gPiA+ID4g PmRldjsNCj4gPiA+ID4gPiA+ID4gPiArDQo+ID4gPiA+ID4gPiA+ID4gKwlpZiAobXItPmhwYV9i YXNlKSB7DQo+ID4gPiA+ID4gPiA+ID4gKwkJZGV2bV9tZW11bm1hcF9wYWdlcyhkZXYsICZtci0N Cj4gPiA+ID4gPiA+ID4gPiA+cGFnZW1hcCk7DQo+ID4gPiA+ID4gPiA+ID4gKwkJZGV2bV9yZWxl YXNlX21lbV9yZWdpb24oZGV2LCBtci0NCj4gPiA+ID4gcGFnZW1hcC5yYW5nZS5zdGFydCwNCj4g PiA+ID4gPiA+ID4gPiArCQkJbXItPnBhZ2VtYXAucmFuZ2UuZW5kIC0gbXItDQo+ID4gPiA+IHBh Z2VtYXAucmFuZ2Uuc3RhcnQgKzEpOw0KPiA+ID4gPiA+ID4gPiA+ICsJfQ0KPiA+ID4gPiA+ID4g PiA+ICsjZW5kaWYNCj4gPiA+ID4gPiA+ID4gDQo+ID4gPiA+ID4gPiA+IFRoaXMgd291bGQgbmVl ZCB0byBiZSBmaXhlZCB0b28uDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IA0KPiA+ID4gPiA+ ID4gWWVzLi4uDQo+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+IE9haw0KPiA+ID4gPiA+ID4gPiAN Cj4gPiA+ID4gPiA+ID4gTWF0dA0KPiA+ID4gPiA+ID4gPiANCj4gPiA+ID4gPiA+ID4gPiArfQ0K PiA+ID4gPiA+ID4gPiA+ICsNCj4gPiA+ID4gPiA+ID4gPiAtLQ0KPiA+ID4gPiA+ID4gPiA+IDIu MjYuMw0KPiA+ID4gPiA+ID4gPiA+IA0KDQo=