From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail02.groups.io (mail02.groups.io [66.175.222.108]) by spool.mail.gandi.net (Postfix) with ESMTPS id 3B79194075F for ; Thu, 20 Jul 2023 00:48:31 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=IfxkSrezCm3n1hjQZvVBNW0G+aIyaS7GMmnHiPAyiLI=; c=relaxed/simple; d=groups.io; h=X-Received:X-Received:X-IronPort-AV:X-IronPort-AV:X-Received:X-ExtLoop1:X-IronPort-AV:X-IronPort-AV:X-Received:X-Received:X-Received:X-Received:X-Received:ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:X-Received:X-Received:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:X-MS-Has-Attach:X-MS-TNEF-Correlator:x-ms-publictraffictype:x-ms-traffictypediagnostic:x-ms-office365-filtering-correlation-id:x-ms-exchange-senderadcheck:x-ms-exchange-antispam-relay:x-microsoft-antispam-message-info:x-ms-exchange-antispam-messagedata-chunkcount:x-ms-exchange-antispam-messagedata-0:MIME-Version:X-MS-Exchange-CrossTenant-AuthAs:X-MS-Exchange-CrossTenant-AuthSource:X-MS-Exchange-CrossTenant-Network-Message-Id:X-MS-Exchange-CrossTenant-originalarrivaltime:X-MS-Exchange-CrossTenant-fromentityheader:X-MS-Exchange-CrossTenant-id:X-MS-Exchange-CrossTenant-mailboxtype:X-MS-Exchange-CrossTenant-userprincipalname:X-MS-Exchange-Transport-CrossTe nantHeadersStamped:X-OriginatorOrg:Precedence:List-Unsubscribe:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:X-Gm-Message-State:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1689814109; v=1; b=dTA27bXSOgZXBkWAcVZJdTA67lBBOZqhvZfA6h1wN6qnlvn+AGXRDoFokRmMirj4s80Setss 3EJXbGmM2Jv46b3M8e0zfra9PgqMviRIWnrHfFcP2XuHHcQbf+sFndRDXjKl5KqxSnfC4IQ/In9 YzRjrX2e/VXuQ8Cr/sggYCH0= X-Received: by 127.0.0.2 with SMTP id QDyQYY7687511xDkRw1jUOpE; Wed, 19 Jul 2023 17:48:29 -0700 X-Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web10.2946.1689814108811305743 for ; Wed, 19 Jul 2023 17:48:29 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10776"; a="397473403" X-IronPort-AV: E=Sophos;i="6.01,216,1684825200"; d="scan'208";a="397473403" X-Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 19 Jul 2023 17:48:16 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10776"; a="789602349" X-IronPort-AV: E=Sophos;i="6.01,216,1684825200"; d="scan'208";a="789602349" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga008.fm.intel.com with ESMTP; 19 Jul 2023 17:48:16 -0700 X-Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx603.amr.corp.intel.com (10.18.126.83) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 19 Jul 2023 17:48:16 -0700 X-Received: from fmsmsx612.amr.corp.intel.com (10.18.126.92) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27; Wed, 19 Jul 2023 17:48:16 -0700 X-Received: from fmsedg601.ED.cps.intel.com (10.1.192.135) by fmsmsx612.amr.corp.intel.com (10.18.126.92) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.27 via Frontend Transport; Wed, 19 Jul 2023 17:48:16 -0700 X-Received: from NAM11-CO1-obe.outbound.protection.outlook.com (104.47.56.172) 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.27; Wed, 19 Jul 2023 17:48:15 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dIhfPpvyu8P0XZHrEHXcQv0FmHSt7t8drU/mxuimXRrI+G8zLXR+Agi4Yq70D4+ZKwbnqPVWqsJGBUWzurqfLEgPQawCQxI6dFI7+3oHVdlR+sFreXbH38KCFDl5ZUlCzFMm1Q4vLlp6v8RNxJoaAIsRZpm0dmhFYeLu3KedeMjg7/2WlUduNF5ivrJxiVpIp60tLYa1A/W8BhRA4lixd9I9Lul2ytvdkZSNChCZvSnt7EYq/+6kCBXxqjMYxpcZHnJiulwpu2SykPtPbzFVrJlAxAu/meAjeH/O0BnJjVxV1PbJmTPeV86WxHX5Iwp0FSmqCq/JiG/lqqtSMp8J2A== 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=nFxv29F4zRJRPx+wWqdZ2PaWpGnM5icOa9Om+Js+UfE=; b=Vzbu7ai2n3ndt5zI8/PsFXG2RzwAwjvOdNPBLcxO1BA/NVtremhKVyDOZLp+1oCXOJUKioeratLffW1kg47CILIjz9JiV5pSjC+AYyFZcgPPI2krchZIxr+rxIVYAaoT/Ns5X8OHa/RwhXyBNRhmRgT6IMutRKDqej4qHlMGt0rrVNiguzPo5HlCFuxQmLm3P+FwZTAmdhWjqJi6tdf6F/AmR4Na1TYNNOt/nJtkXkkCjyxKyjkWu271TQDvdq/qfB80tAq3bpJm1P5sczHJOWuyPvorJ6ucF5WYgtDMrN8s8+5zwEn0UF4uwzNTGW7avJTBjNY6egclwXX+ZMwWag== 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 X-Received: from CO1PR11MB4929.namprd11.prod.outlook.com (2603:10b6:303:6d::19) by PH7PR11MB7432.namprd11.prod.outlook.com (2603:10b6:510:272::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6609.24; Thu, 20 Jul 2023 00:48:13 +0000 X-Received: from CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::9c86:9394:6bb1:2e83]) by CO1PR11MB4929.namprd11.prod.outlook.com ([fe80::9c86:9394:6bb1:2e83%5]) with mapi id 15.20.6609.024; Thu, 20 Jul 2023 00:48:13 +0000 From: "Michael D Kinney" To: Michael Kubacki , "devel@edk2.groups.io" , "kuqin12@gmail.com" CC: Sean Brogan , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v3 1/1] UnitTestFrameworkPkg: UnitTestPersistenceLib: Save Unit Test Cache Option Thread-Topic: [edk2-devel] [PATCH v3 1/1] UnitTestFrameworkPkg: UnitTestPersistenceLib: Save Unit Test Cache Option Thread-Index: AQHZq36/I3Uyh9JHqkep8yjNsjxSr6+j9kIAgB36UrA= Date: Thu, 20 Jul 2023 00:48:12 +0000 Message-ID: References: <20230630181430.2128-1-kuqin12@gmail.com> <20230630181430.2128-2-kuqin12@gmail.com> <06c10e6c-bca1-4266-1c77-e73127077c97@linux.microsoft.com> In-Reply-To: <06c10e6c-bca1-4266-1c77-e73127077c97@linux.microsoft.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CO1PR11MB4929:EE_|PH7PR11MB7432:EE_ x-ms-office365-filtering-correlation-id: 90e74e01-8486-4c39-4fc4-08db88baff3d x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: VrUD+863GA04XoGOao69Uw+ZKHpQ210/hNMWJAdja+IsBXV4e+55azyEe3MTJagxZ0PTtZjxaPGiYqqVo0XKQP4Q8eQp+NMlq3zV0YUVJ//Ye/tgPbKVhmIS3F6AkaFObc6FwfXhJo8ax1DZT5itNxSqqggmAUo7/t3BAjQRh89apHaI311m0glILryFkhC2CwjA93kXc6CoxKzy4VeOlp/6tEyQ9Yjc7qy9QwtbVulolB2r7pvl6pVNS78QjlDUIX1TOT0LqbLXPQToGLpmlsJ7QG8pMqPYOOtZ1NbX94E5/dWLVqNMarO5aMfwJ1P9MlVEw1xo3YNRgsyPJJJ5osabyuf5CFxHHQBRhq6Bj5YWwtA4V+VmIJ8i7vr0qhiUYP+XaokeMH2uJIquqz+aZ7+LjwfXrUEcID39IgH7fqeYqbfPDH7+0HJ+MDa/qBWeVcuMTjfrXdyqu0ZbxoH4xJJsKPL4BIzDp37kgkx/WxAC8OFYx7THqht0mg8UEyeCK9W6B0y2HTqD8SdpA24XvKnCHvYQEpiiDrR+8byUhKth9C5HzrVKMxNRbN87Cehjv0HaU4v7SG4YFmQsnfwoA9gPMHiiprkcQpxwD2AYGGM= x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?YUQwci8vLzlpUWRQYlFsUzdOZ1NhSGJSZHEwVkRGSWZoS2Z0S1VmbGloMnRH?= =?utf-8?B?UGk4UzRSQ2NuV0pTRXcwbS92SHhLWGpnMkxYaEJsWWxadG1nOGpMSDhJdFQ1?= =?utf-8?B?Ykd4WGh1VDZSWTRMcW9DT1MrM0laRTByU1orOUwrRWRoVHU1bjd1bUNNU3V0?= =?utf-8?B?V1Q1OU50WVFHQ3dibjlETjlNdlNaMlF3azNuT3E5WHRtVU9JSC9kTmFzaFgv?= =?utf-8?B?T2NJVHo2WGg3SUhQRTUwWjVqN3ZnRHhZWlZ0cEdCV2NQMTJyRDVoOGlwQU9D?= =?utf-8?B?ZFRjUGNSZGkyVnQ2MDZMNDVMOVV6eUQ1UWM2d0VFVWZzVTYyeEdxRkZ6OEZL?= =?utf-8?B?WVk0ejJkWE1sRFBlcllNa2xTSmEyTVIrS09Xcm9uVWhvTThhKzBTY2pUelhC?= =?utf-8?B?eXJuRzREemZuVzZzdXRWTWR0UzZSU05ORjJXSFVmakNyZnhJY0Jqa2tmOXVi?= =?utf-8?B?cXRtWU1HUkQ2YWZPamFEdDVXTEhPNGRkdWZiK2cxaE8vYk9QRHVuT09xcnB0?= =?utf-8?B?dVg5RTdnVlVFeWdjd05GNWNVcnBZbmwrRThzSnh1OTEvTThZTGsyM1JqNXhN?= =?utf-8?B?cE5ZRWZnT1dxTjlKdVZVRUI3MXZaVlFlTHVzaktLakxpeWdzM0diL05wcWtP?= =?utf-8?B?Y0lNVENnUlJrTXhuQTNlcUlRRlpCM3ZBMmlzZTM0d0hmTHlWR29uSitJeFN3?= =?utf-8?B?U0duK0YwVnNjN3hVUGMycFU1UGRRZkNJZ21CdnFwYW5zZlZLU2xhU09iR1lt?= =?utf-8?B?N09hMmxCalJUSkFJNFoxcGJiVUtWTmdEZi9tendRK3hDSUpQQUs0SHdQcGY3?= =?utf-8?B?aXdrMk04MmszODFJT3FUc0FIVDRmSmw5Ym5ScTlEanRmS2hYN1BaVnByOEEz?= =?utf-8?B?c2hKc2c3T1dLZUhVV1hZbEZLRzJmaVRTRWJiSlNMSk03dXhyZXhkSnJTQnNG?= =?utf-8?B?SEsxL3l5S1BXS3oxQS8ycEVONzV3cnFRMXVJR3VkRUpiMWg4NkYramxyTWZh?= =?utf-8?B?TEJWRnZuWThBYXE1R2ZOY3lrOTV2L2lpZFJ5dG9iM0lUYTFrUHpmR0FPUTlL?= =?utf-8?B?b2h2a2QwcCtodFhZSXkrelA3Ykc0c2lkbGtkZi9na21uR0NGNDJvRGhXVENO?= =?utf-8?B?SXNxSnJnNSt6eVNNdjZRY1gwU3B5c3hrZFVoZjZiN0FnQ1lFZ1kva1ZTTHpv?= =?utf-8?B?QmhIVjl1Y3NnQ2c4bzdWK1JLYWs3dWxnajQ2c1lGUTV2d0h2c1FuNVBySk9F?= =?utf-8?B?NTRjb2g2UkcyNlF0QTlleVBKN0MyQngwYUl5c0o0c2Y3dlNaeklFaUJEd3Fu?= =?utf-8?B?d2tUZytzZFR2TC9PNHE0ZmJvalJoMi9kN2FjZHZleFVlUlhXYkxNRkxpam4r?= =?utf-8?B?TmViRDFjTC84T0creEhncVN2bGhOYnBxTHlFUXM4a0J2T1YvOXdHdXp3bmM3?= =?utf-8?B?K2hseTl3UUorWTg2THZDRDB5SjN3eWt6V2lkdktpSXhNNlBmWU51SkRhRklD?= =?utf-8?B?RUJ5Q2tFY0xyYTIrMmxPckNWNEJ3M0liV2JHMWZOcWJnV2kwS2RUTTVHdmFP?= =?utf-8?B?S2FkVmcxVUU2SmZBeVNyZ1RGTmRiTFVTVXBMS2VRc0JHdXNzU3AzRzZ4aVpx?= =?utf-8?B?QW1mUGhLemxuNjQ5aFhRR0ovUjk5UkZnK2h1M2U3cEZCUkVTNHdnN3Q3TUx6?= =?utf-8?B?RHBNd3pPZEtyaGZzbnlaYmdnS3ZkOUx1VytTYkVmb2RTd3pkYjBrZ0IxSlZ4?= =?utf-8?B?Qi9kQ2lXNVE4T2FTMFIzNDFSQlFiVm5xRC9MZGdGWXRnZldvVnk0bGpXczA5?= =?utf-8?B?cm1TbjVPejB0Q0diRFFFOWJDUGIwZE1EbWdpeHNpdXVkSjBEZ0t1SGx1aXBG?= =?utf-8?B?R2tOK1lVSktkTGNWVU12R3BCMk42ZXpDY1ZEQmdoTUxOMDlUTk8wU1daTmpU?= =?utf-8?B?bm84cDlaYzBqcU1kSUpQUTlzelkvdlpGMEE5WDF0ZEtmaTRIeGRBdlB0Y2du?= =?utf-8?B?Z1ZJc1d1TVdZVWtUQnJieXhkekdsOHVISW1XL0lQcEtLcm9CN09JdjFBREZZ?= =?utf-8?B?cDFRUU5obXVEL0I5cnlqbmtOZ1liU0puRWliZDJiZk9NNUxBbElNaVdockNV?= =?utf-8?B?ZUNDKzl6bm1xQlNWcDRTNUErNmprMmNLRjN3OExKcURscnBJTFVmUWNiNEZq?= =?utf-8?B?R1E9PQ==?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4929.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90e74e01-8486-4c39-4fc4-08db88baff3d X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jul 2023 00:48:13.0273 (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: Z4WZYSBHuPNvMU1Tj82rTRBapjx8RjNy2RUt8h32sDUf7hNTQ1fg3qpO9genwi+kBpqu3b8OEfDujS02cV/ZBdPLVyoHjVN905iaL5zSq5M= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB7432 X-OriginatorOrg: intel.com Precedence: Bulk List-Unsubscribe: List-Subscribe: List-Help: Sender: devel@edk2.groups.io List-Id: Mailing-List: list devel@edk2.groups.io; contact devel+owner@edk2.groups.io Reply-To: devel@edk2.groups.io,michael.d.kinney@intel.com List-Unsubscribe-Post: List-Unsubscribe=One-Click X-Gm-Message-State: CftXNsf0Gsr927H40L2RlQwOx7686176AA= Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-GND-Status: LEGIT Authentication-Results: spool.mail.gandi.net; dkim=pass header.d=groups.io header.s=20140610 header.b=dTA27bXS; dmarc=fail reason="SPF not aligned (relaxed), DKIM not aligned (relaxed)" header.from=intel.com (policy=none); spf=pass (spool.mail.gandi.net: domain of bounce@groups.io designates 66.175.222.108 as permitted sender) smtp.mailfrom=bounce@groups.io UmV2aWV3ZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t Pg0KDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gRnJvbTogTWljaGFlbCBLdWJh Y2tpIDxtaWt1YmFja0BsaW51eC5taWNyb3NvZnQuY29tPg0KPiBTZW50OiBGcmlkYXksIEp1bmUg MzAsIDIwMjMgNDowMCBQTQ0KPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW87IGt1cWluMTJAZ21h aWwuY29tDQo+IENjOiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5AbWljcm9zb2Z0LmNvbT47IEtp bm5leSwgTWljaGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gU3ViamVj dDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggdjMgMS8xXSBVbml0VGVzdEZyYW1ld29ya1BrZzoN Cj4gVW5pdFRlc3RQZXJzaXN0ZW5jZUxpYjogU2F2ZSBVbml0IFRlc3QgQ2FjaGUgT3B0aW9uDQo+ IA0KPiBSZXZpZXdlZC1ieTogTWljaGFlbCBLdWJhY2tpIDxtaWNoYWVsLmt1YmFja2lAbWljcm9z b2Z0LmNvbT4NCj4gDQo+IEkgaGF2ZW4ndCBzZWVuIE1pa2UgS2lubmV5IGFja25vd2xlZGdlIHRo ZSBjaGFuZ2VzIG1hZGUgaW4gcmVzcG9uc2UgdG8NCj4gaGlzIHYxIHJlcXVlc3Qgc28gd2UnbGwg bmVlZCB0byBnZXQgdGhhdCBiZWZvcmUgbWVyZ2luZyB0aGUgcGF0Y2guDQo+IA0KPiBUaGFua3Ms DQo+IE1pY2hhZWwNCj4gDQo+IE9uIDYvMzAvMjAyMyAyOjE0IFBNLCBLdW4gUWluIHdyb3RlOg0K PiA+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD00 NDY3DQo+ID4NCj4gPiBDdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFVuaXRUZXN0RnJhbWV3b3Jr UGtnIGZvciBzaGVsbC1iYXNlZCB1bml0DQo+IHRlc3QNCj4gPiB3aWxsIHNhdmUgdGhlIHVuaXQg dGVzdCBjYWNoZSB0byB0aGUgc2FtZSB2b2x1bWUgYXMgdGhlIHRlc3QNCj4gYXBwbGljYXRpb24N Cj4gPiBpdHNlbGYuIFRoaXMgd29ya3MgYXMgbG9uZyBhcyB0aGUgdGVzdCBhcHBsaWNhdGlvbiBp cyBvbiBhIHdyaXRhYmxlDQo+ID4gdm9sdW1lLCBzdWNoIGFzIFVTQiBvciBFRkkgcGFydGl0aW9u Lg0KPiA+DQo+ID4gSW5zdGVhZCBvZiBzYXZpbmcgdGhlIGZpbGVzIHRvIHRoZSBzYW1lIGZpbGUg c3lzdGVtIG9mIHVuaXQgdGVzdA0KPiA+IGFwcGxpY2F0aW9uLCB0aGlzIGNoYW5nZSB3aWxsIHNh dmUgdGhlIGNhY2hlIGZpbGUgdG8gdGhlIHBhdGggd2hlcmUNCj4gdGhlDQo+ID4gdXNlciByYW4g dGhpcyB0ZXN0IGFwcGxpY2F0aW9uLg0KPiA+DQo+ID4gVGhpcyBjaGFuZ2UgdGhlbiBhZGRlZCBh biBpbnB1dCBhcmd1bWVudCB0byBhbGxvdyB1c2VyIHRvIHNwZWNpZnkNCj4gd2hlcmUNCj4gPiB0 byBzYXZlIHN1Y2ggY2FjaGUgZmlsZSB0aHJvdWdoIGAtLUNhY2hlUGF0aGAgc2hlbGwgYXJndW1l bnQgdG8gYWxsb3cNCj4gPiBldmVuIG1vcmUgZmxleGliaWxpdHkuDQo+ID4NCj4gPiBUaGlzIGNo YW5nZSB3YXMgdGVzdGVkIG9uIHByb3ByaWV0YXJ5IHBoeXNpY2FsIGhhcmR3YXJlIHBsYXRmb3Jt cyBhbmQNCj4gPiBRRU1VIGJhc2VkIHZpcnR1YWwgcGxhdGZvcm0uDQo+ID4NCj4gPiBDYzogU2Vh biBCcm9nYW4gPHNlYW4uYnJvZ2FuQG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IE1pY2hhZWwgS3Vi YWNraSA8bWlrdWJhY2tAbGludXgubWljcm9zb2Z0LmNvbT4NCj4gPiBDYzogTWljaGFlbCBEIEtp bm5leSA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4NCj4gPiBTaWduZWQtb2ZmLWJ5 OiBLdW4gUWluIDxrdXFpbjEyQGdtYWlsLmNvbT4NCj4gPiAtLS0NCj4gPg0KPiA+IE5vdGVzOg0K PiA+ICAgICAgdjI6DQo+ID4gICAgICAtIEFkZGluZyBpbnB1dCBhcmd1bWVudCBbTWlrZSBLaW5u ZXldDQo+ID4gICAgICB2MzoNCj4gPiAgICAgIC0gTm8gcmV2aWV3LCBubyBjaGFuZ2UNCj4gPg0K PiA+DQo+IFVuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZXJzaXN0ZW5jZUxp YlNpbXBsZUZpbGVTeXN0ZW0vVW5pdA0KPiBUZXN0UGVyc2lzdGVuY2VMaWJTaW1wbGVGaWxlU3lz dGVtLmMgfCAyMzIgKysrKysrKysrKysrKy0tLS0tLS0NCj4gPiAgIDEgZmlsZSBjaGFuZ2VkLCAx NTcgaW5zZXJ0aW9ucygrKSwgNzUgZGVsZXRpb25zKC0pDQo+ID4NCj4gPiBkaWZmIC0tZ2l0DQo+ IGEvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVzdFBlcnNpc3RlbmNlTGliU2lt cGxlRmlsZVN5c3RlbS9Vbg0KPiBpdFRlc3RQZXJzaXN0ZW5jZUxpYlNpbXBsZUZpbGVTeXN0ZW0u Yw0KPiBiL1VuaXRUZXN0RnJhbWV3b3JrUGtnL0xpYnJhcnkvVW5pdFRlc3RQZXJzaXN0ZW5jZUxp YlNpbXBsZUZpbGVTeXN0ZW0vVW4NCj4gaXRUZXN0UGVyc2lzdGVuY2VMaWJTaW1wbGVGaWxlU3lz dGVtLmMNCj4gPiBpbmRleCBiNTk5OTE2ODNmNDguLjhmN2YwMzY0NmNkNSAxMDA2NDQNCj4gPiAt LS0NCj4gYS9Vbml0VGVzdEZyYW1ld29ya1BrZy9MaWJyYXJ5L1VuaXRUZXN0UGVyc2lzdGVuY2VM aWJTaW1wbGVGaWxlU3lzdGVtL1VuDQo+IGl0VGVzdFBlcnNpc3RlbmNlTGliU2ltcGxlRmlsZVN5 c3RlbS5jDQo+ID4gKysrDQo+IGIvVW5pdFRlc3RGcmFtZXdvcmtQa2cvTGlicmFyeS9Vbml0VGVz dFBlcnNpc3RlbmNlTGliU2ltcGxlRmlsZVN5c3RlbS9Vbg0KPiBpdFRlc3RQZXJzaXN0ZW5jZUxp YlNpbXBsZUZpbGVTeXN0ZW0uYw0KPiA+IEBAIC0xNiwxMyArMTYsMTYgQEANCj4gPiAgICNpbmNs dWRlIDxMaWJyYXJ5L1VlZmlCb290U2VydmljZXNUYWJsZUxpYi5oPg0KPiA+DQo+ID4gICAjaW5j bHVkZSA8TGlicmFyeS9EZXZpY2VQYXRoTGliLmg+DQo+ID4NCj4gPiAgICNpbmNsdWRlIDxMaWJy YXJ5L1NoZWxsTGliLmg+DQo+ID4NCj4gPiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0K PiA+DQo+ID4gICAjaW5jbHVkZSA8UHJvdG9jb2wvTG9hZGVkSW1hZ2UuaD4NCj4gPg0KPiA+ICAg I2luY2x1ZGUgPFVuaXRUZXN0RnJhbWV3b3JrVHlwZXMuaD4NCj4gPg0KPiA+DQo+ID4NCj4gPiAg ICNkZWZpbmUgQ0FDSEVfRklMRV9TVUZGSVggIEwiX0NhY2hlLmRhdCINCj4gPg0KPiA+DQo+ID4N Cj4gPiArQ0hBUjE2ICAqbUNhY2hlUGF0aCA9IE5VTEw7DQo+ID4NCj4gPiArDQo+ID4NCj4gPiAg IC8qKg0KPiA+DQo+ID4gLSAgR2VuZXJhdGUgdGhlIGRldmljZSBwYXRoIHRvIHRoZSBjYWNoZSBm aWxlLg0KPiA+DQo+ID4gKyAgR2VuZXJhdGUgdGhlIGZpbGUgbmFtZSBhbmQgcGF0aCB0byB0aGUg Y2FjaGUgZmlsZS4NCj4gPg0KPiA+DQo+ID4NCj4gPiAgICAgQHBhcmFtW2luXSAgRnJhbWV3b3Jr SGFuZGxlICBBIHBvaW50ZXIgdG8gdGhlIGZyYW1ld29yayB0aGF0IGlzDQo+IGJlaW5nIHBlcnNp c3RlZC4NCj4gPg0KPiA+DQo+ID4NCj4gPiBAQCAtMzEsOCArMzQsOCBAQA0KPiA+DQo+ID4NCj4g PiAgICoqLw0KPiA+DQo+ID4gICBTVEFUSUMNCj4gPg0KPiA+IC1FRklfREVWSUNFX1BBVEhfUFJP VE9DT0wgKg0KPiA+DQo+ID4gLUdldENhY2hlRmlsZURldmljZVBhdGggKA0KPiA+DQo+ID4gK0NI QVIxNiAqDQo+ID4NCj4gPiArR2V0Q2FjaGVGaWxlTmFtZSAoDQo+ID4NCj4gPiAgICAgSU4gVU5J VF9URVNUX0ZSQU1FV09SS19IQU5ETEUgIEZyYW1ld29ya0hhbmRsZQ0KPiA+DQo+ID4gICAgICkN Cj4gPg0KPiA+ICAgew0KPiA+DQo+ID4gQEAgLTQ0LDEzICs0NywxMSBAQCBHZXRDYWNoZUZpbGVE ZXZpY2VQYXRoICgNCj4gPiAgICAgQ0hBUjE2ICAgICAgICAgICAgICAgICAgICAgKlRlc3ROYW1l Ow0KPiA+DQo+ID4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgIERpcmVjdG9yeVNsYXNo T2Zmc2V0Ow0KPiA+DQo+ID4gICAgIFVJTlROICAgICAgICAgICAgICAgICAgICAgIENhY2hlRmls ZVBhdGhMZW5ndGg7DQo+ID4NCj4gPiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICAqQ2Fj aGVGaWxlRGV2aWNlUGF0aDsNCj4gPg0KPiA+DQo+ID4NCj4gPiAtICBGcmFtZXdvcmsgICAgICAg ICAgID0gKFVOSVRfVEVTVF9GUkFNRVdPUksgKilGcmFtZXdvcmtIYW5kbGU7DQo+ID4NCj4gPiAt ICBBcHBQYXRoICAgICAgICAgICAgID0gTlVMTDsNCj4gPg0KPiA+IC0gIENhY2hlRmlsZVBhdGgg ICAgICAgPSBOVUxMOw0KPiA+DQo+ID4gLSAgVGVzdE5hbWUgICAgICAgICAgICA9IE5VTEw7DQo+ ID4NCj4gPiAtICBDYWNoZUZpbGVEZXZpY2VQYXRoID0gTlVMTDsNCj4gPg0KPiA+ICsgIEZyYW1l d29yayAgICAgPSAoVU5JVF9URVNUX0ZSQU1FV09SSyAqKUZyYW1ld29ya0hhbmRsZTsNCj4gPg0K PiA+ICsgIEFwcFBhdGggICAgICAgPSBOVUxMOw0KPiA+DQo+ID4gKyAgQ2FjaGVGaWxlUGF0aCA9 IE5VTEw7DQo+ID4NCj4gPiArICBUZXN0TmFtZSAgICAgID0gTlVMTDsNCj4gPg0KPiA+DQo+ID4N Cj4gPiAgICAgLy8NCj4gPg0KPiA+ICAgICAvLyBGaXJzdCwgd2UgbmVlZCB0byBnZXQgc29tZSBp bmZvcm1hdGlvbiBmcm9tIHRoZSBsb2FkZWQgaW1hZ2UuDQo+ID4NCj4gPiBAQCAtODUsMzUgKzg2 LDYyIEBAIEdldENhY2hlRmlsZURldmljZVBhdGggKA0KPiA+ICAgICAvLyBQYXRoQ2xlYW5VcERp cmVjdG9yaWVzIChGaWxlTmFtZUNvcHkpOw0KPiA+DQo+ID4gICAgIC8vICAgICBpZiAoUGF0aFJl bW92ZUxhc3RJdGVtIChGaWxlTmFtZUNvcHkpKSB7DQo+ID4NCj4gPiAgICAgLy8NCj4gPg0KPiA+ IC0gIEFwcFBhdGggICAgICAgICAgICAgID0gQ29udmVydERldmljZVBhdGhUb1RleHQgKExvYWRl ZEltYWdlLQ0KPiA+RmlsZVBhdGgsIFRSVUUsIFRSVUUpOyAvLyBOT1RFOiBUaGlzIG11c3QgYmUg ZnJlZWQuDQo+ID4NCj4gPiAtICBEaXJlY3RvcnlTbGFzaE9mZnNldCA9IFN0ckxlbiAoQXBwUGF0 aCk7DQo+ID4NCj4gPiAtICAvLw0KPiA+DQo+ID4gLSAgLy8gTWFrZSBzdXJlIHdlIGRpZG4ndCBn ZXQgYW55IHdlaXJkIGRhdGEuDQo+ID4NCj4gPiAtICAvLw0KPiA+DQo+ID4gLSAgaWYgKERpcmVj dG9yeVNsYXNoT2Zmc2V0ID09IDApIHsNCj4gPg0KPiA+IC0gICAgREVCVUcgKChERUJVR19FUlJP UiwgIiVhIC0gV2VpcmQgMC1sZW5ndGggc3RyaW5nIHdoZW4gcHJvY2Vzc2luZw0KPiBhcHAgcGF0 aC5cbiIsIF9fZnVuY19fKSk7DQo+ID4NCj4gPiAtICAgIGdvdG8gRXhpdDsNCj4gPg0KPiA+IC0g IH0NCj4gPg0KPiA+ICsgIGlmIChtQ2FjaGVQYXRoID09IE5VTEwpIHsNCj4gPg0KPiA+ICsgICAg QXBwUGF0aCA9IENvbnZlcnREZXZpY2VQYXRoVG9UZXh0IChMb2FkZWRJbWFnZS0+RmlsZVBhdGgs IFRSVUUsDQo+IFRSVUUpOyAvLyBOT1RFOiBUaGlzIG11c3QgYmUgZnJlZWQuDQo+ID4NCj4gPiAr ICAgIGlmIChBcHBQYXRoID09IE5VTEwpIHsNCj4gPg0KPiA+ICsgICAgICBnb3RvIEV4aXQ7DQo+ ID4NCj4gPiArICAgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiAtICAvLw0KPiA+DQo+ID4gLSAgLy8g Tm93IHRoYXQgd2Uga25vdyB3ZSBoYXZlIGEgZGVjZW50IHN0cmluZywgbGV0J3MgdGFrZSBhIGRl ZXBlcg0KPiBsb29rLg0KPiA+DQo+ID4gLSAgLy8NCj4gPg0KPiA+IC0gIGRvIHsNCj4gPg0KPiA+ IC0gICAgaWYgKEFwcFBhdGhbRGlyZWN0b3J5U2xhc2hPZmZzZXRdID09IEwnXFwnKSB7DQo+ID4N Cj4gPiAtICAgICAgYnJlYWs7DQo+ID4NCj4gPiArICAgIERpcmVjdG9yeVNsYXNoT2Zmc2V0ID0g U3RyTGVuIChBcHBQYXRoKTsNCj4gPg0KPiA+ICsgICAgLy8NCj4gPg0KPiA+ICsgICAgLy8gTWFr ZSBzdXJlIHdlIGRpZG4ndCBnZXQgYW55IHdlaXJkIGRhdGEuDQo+ID4NCj4gPiArICAgIC8vDQo+ ID4NCj4gPiArICAgIGlmIChEaXJlY3RvcnlTbGFzaE9mZnNldCA9PSAwKSB7DQo+ID4NCj4gPiAr ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhIC0gV2VpcmQgMC1sZW5ndGggc3RyaW5nIHdo ZW4NCj4gcHJvY2Vzc2luZyBhcHAgcGF0aC5cbiIsIF9fZnVuY19fKSk7DQo+ID4NCj4gPiArICAg ICAgZ290byBFeGl0Ow0KPiA+DQo+ID4gICAgICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+IC0gICAg RGlyZWN0b3J5U2xhc2hPZmZzZXQtLTsNCj4gPg0KPiA+IC0gIH0gd2hpbGUgKERpcmVjdG9yeVNs YXNoT2Zmc2V0ID4gMCk7DQo+ID4NCj4gPiArICAgIC8vDQo+ID4NCj4gPiArICAgIC8vIE5vdyB0 aGF0IHdlIGtub3cgd2UgaGF2ZSBhIGRlY2VudCBzdHJpbmcsIGxldCdzIHRha2UgYSBkZWVwZXIN Cj4gbG9vay4NCj4gPg0KPiA+ICsgICAgLy8NCj4gPg0KPiA+ICsgICAgZG8gew0KPiA+DQo+ID4g KyAgICAgIGlmIChBcHBQYXRoW0RpcmVjdG9yeVNsYXNoT2Zmc2V0XSA9PSBMJ1xcJykgew0KPiA+ DQo+ID4gKyAgICAgICAgYnJlYWs7DQo+ID4NCj4gPiArICAgICAgfQ0KPiA+DQo+ID4gKw0KPiA+ DQo+ID4gKyAgICAgIERpcmVjdG9yeVNsYXNoT2Zmc2V0LS07DQo+ID4NCj4gPiArICAgIH0gd2hp bGUgKERpcmVjdG9yeVNsYXNoT2Zmc2V0ID4gMCk7DQo+ID4NCj4gPg0KPiA+DQo+ID4gLSAgLy8N Cj4gPg0KPiA+IC0gIC8vIEFmdGVyIHRoYXQgbGl0dGxlIG1hbmV1dmVyLCBEaXJlY3RvcnlTbGFz aE9mZnNldCBzaG91bGQgYmUNCj4gcG9pbnRpbmcgYXQgdGhlIGxhc3QgJ1wnIGluIEFwcFN0cmlu Zy4NCj4gPg0KPiA+IC0gIC8vIFRoYXQgd291bGQgYmUgdGhlIHBhdGggdG8gdGhlIHBhcmVudCBk aXJlY3RvcnkgdGhhdCB0aGUgdGVzdCBhcHANCj4gaXMgZXhlY3V0aW5nIGZyb20uDQo+ID4NCj4g PiAtICAvLyBMZXQncyBjaGVjayBhbmQgbWFrZSBzdXJlIHRoYXQncyByaWdodC4NCj4gPg0KPiA+ IC0gIC8vDQo+ID4NCj4gPiAtICBpZiAoQXBwUGF0aFtEaXJlY3RvcnlTbGFzaE9mZnNldF0gIT0g TCdcXCcpIHsNCj4gPg0KPiA+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIiVhIC0gQ291bGQg bm90IGZpbmQgYSBzaW5nbGUgZGlyZWN0b3J5DQo+IHNlcGFyYXRvciBpbiBhcHAgcGF0aC5cbiIs IF9fZnVuY19fKSk7DQo+ID4NCj4gPiAtICAgIGdvdG8gRXhpdDsNCj4gPg0KPiA+ICsgICAgLy8N Cj4gPg0KPiA+ICsgICAgLy8gQWZ0ZXIgdGhhdCBsaXR0bGUgbWFuZXV2ZXIsIERpcmVjdG9yeVNs YXNoT2Zmc2V0IHNob3VsZCBiZQ0KPiBwb2ludGluZyBhdCB0aGUgbGFzdCAnXCcgaW4gQXBwU3Ry aW5nLg0KPiA+DQo+ID4gKyAgICAvLyBUaGF0IHdvdWxkIGJlIHRoZSBwYXRoIHRvIHRoZSBwYXJl bnQgZGlyZWN0b3J5IHRoYXQgdGhlIHRlc3QNCj4gYXBwIGlzIGV4ZWN1dGluZyBmcm9tLg0KPiA+ DQo+ID4gKyAgICAvLyBMZXQncyBjaGVjayBhbmQgbWFrZSBzdXJlIHRoYXQncyByaWdodC4NCj4g Pg0KPiA+ICsgICAgLy8NCj4gPg0KPiA+ICsgICAgaWYgKEFwcFBhdGhbRGlyZWN0b3J5U2xhc2hP ZmZzZXRdICE9IEwnXFwnKSB7DQo+ID4NCj4gPiArICAgICAgREVCVUcgKChERUJVR19FUlJPUiwg IiVhIC0gQ291bGQgbm90IGZpbmQgYSBzaW5nbGUgZGlyZWN0b3J5DQo+IHNlcGFyYXRvciBpbiBh cHAgcGF0aC5cbiIsIF9fZnVuY19fKSk7DQo+ID4NCj4gPiArICAgICAgZ290byBFeGl0Ow0KPiA+ DQo+ID4gKyAgICB9DQo+ID4NCj4gPiArICB9IGVsc2Ugew0KPiA+DQo+ID4gKyAgICBBcHBQYXRo ID0gRnVsbHlRdWFsaWZ5UGF0aCAobUNhY2hlUGF0aCk7IC8vIE5PVEU6IFRoaXMgbXVzdCBiZQ0K PiBmcmVlZC4NCj4gPg0KPiA+ICsgICAgaWYgKEFwcFBhdGggPT0gTlVMTCkgew0KPiA+DQo+ID4g KyAgICAgIGdvdG8gRXhpdDsNCj4gPg0KPiA+ICsgICAgfQ0KPiA+DQo+ID4gKw0KPiA+DQo+ID4g KyAgICBEaXJlY3RvcnlTbGFzaE9mZnNldCA9IFN0ckxlbiAoQXBwUGF0aCk7DQo+ID4NCj4gPiAr DQo+ID4NCj4gPiArICAgIGlmIChBcHBQYXRoW0RpcmVjdG9yeVNsYXNoT2Zmc2V0IC0gMV0gIT0g TCdcXCcpIHsNCj4gPg0KPiA+ICsgICAgICAvLyBTZXQgdGhlIHNsYXNoIGlmIHVzZXIgZGlkIG5v dCBzcGVjaWZ5IGl0IG9uIHRoZSBuZXdseQ0KPiBhbGxvY2F0ZWQgcG9vbA0KPiA+DQo+ID4gKyAg ICAgIEFwcFBhdGggPSBSZWFsbG9jYXRlUG9vbCAoDQo+ID4NCj4gPiArICAgICAgICAgICAgICAg ICAgKERpcmVjdG9yeVNsYXNoT2Zmc2V0ICsgMSkgKiBzaXplb2YgKENIQVIxNiksDQo+ID4NCj4g PiArICAgICAgICAgICAgICAgICAgKERpcmVjdG9yeVNsYXNoT2Zmc2V0ICsgMikgKiBzaXplb2Yg KENIQVIxNiksDQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgQXBwUGF0aA0KPiA+DQo+ID4g KyAgICAgICAgICAgICAgICAgICk7DQo+ID4NCj4gPiArICAgICAgQXBwUGF0aFtEaXJlY3RvcnlT bGFzaE9mZnNldF0gICAgID0gTCdcXCc7DQo+ID4NCj4gPiArICAgICAgQXBwUGF0aFtEaXJlY3Rv cnlTbGFzaE9mZnNldCArIDFdID0gTCdcMCc7DQo+ID4NCj4gPiArICAgIH0gZWxzZSB7DQo+ID4N Cj4gPiArICAgICAgLy8gT3RoZXJ3aXNlIHRoZSB1c2VyIGlucHV0IGlzIGdvb2QgZW5vdWdoIHRv IGdvLCBtb3N0bHkNCj4gPg0KPiA+ICsgICAgICBEaXJlY3RvcnlTbGFzaE9mZnNldC0tOw0KPiA+ DQo+ID4gKyAgICB9DQo+ID4NCj4gPiAgICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+ICAgICAvLw0K PiA+DQo+ID4gQEAgLTEzNSwxMSArMTYzLDYgQEAgR2V0Q2FjaGVGaWxlRGV2aWNlUGF0aCAoDQo+ ID4gICAgIFN0ckNhdFMgKENhY2hlRmlsZVBhdGgsIENhY2hlRmlsZVBhdGhMZW5ndGgsIFRlc3RO YW1lKTsNCj4gLy8gQ29weSB0aGUgYmFzZSBuYW1lIGZvciB0aGUgdGVzdCBjYWNoZS4NCj4gPg0K PiA+ICAgICBTdHJDYXRTIChDYWNoZUZpbGVQYXRoLCBDYWNoZUZpbGVQYXRoTGVuZ3RoLCBDQUNI RV9GSUxFX1NVRkZJWCk7DQo+IC8vIENvcHkgdGhlIGZpbGUgc3VmZml4Lg0KPiA+DQo+ID4NCj4g Pg0KPiA+IC0gIC8vDQo+ID4NCj4gPiAtICAvLyBGaW5hbGx5LCB0cnkgdG8gY3JlYXRlIHRoZSBk ZXZpY2UgcGF0aCBmb3IgdGhlIHRoaW5nIHRoaW5nLg0KPiA+DQo+ID4gLSAgLy8NCj4gPg0KPiA+ IC0gIENhY2hlRmlsZURldmljZVBhdGggPSBGaWxlRGV2aWNlUGF0aCAoTG9hZGVkSW1hZ2UtPkRl dmljZUhhbmRsZSwNCj4gQ2FjaGVGaWxlUGF0aCk7DQo+ID4NCj4gPiAtDQo+ID4NCj4gPiAgIEV4 aXQ6DQo+ID4NCj4gPiAgICAgLy8NCj4gPg0KPiA+ICAgICAvLyBGcmVlIGFsbG9jYXRlZCBidWZm ZXJzLg0KPiA+DQo+ID4gQEAgLTE0OCwxNSArMTcxLDExIEBAIEV4aXQ6DQo+ID4gICAgICAgRnJl ZVBvb2wgKEFwcFBhdGgpOw0KPiA+DQo+ID4gICAgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiAtICBp ZiAoQ2FjaGVGaWxlUGF0aCAhPSBOVUxMKSB7DQo+ID4NCj4gPiAtICAgIEZyZWVQb29sIChDYWNo ZUZpbGVQYXRoKTsNCj4gPg0KPiA+IC0gIH0NCj4gPg0KPiA+IC0NCj4gPg0KPiA+ICAgICBpZiAo VGVzdE5hbWUgIT0gTlVMTCkgew0KPiA+DQo+ID4gICAgICAgRnJlZVBvb2wgKFRlc3ROYW1lKTsN Cj4gPg0KPiA+ICAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gLSAgcmV0dXJuIENhY2hlRmlsZURl dmljZVBhdGg7DQo+ID4NCj4gPiArICByZXR1cm4gQ2FjaGVGaWxlUGF0aDsNCj4gPg0KPiA+ICAg fQ0KPiA+DQo+ID4NCj4gPg0KPiA+ICAgLyoqDQo+ID4NCj4gPiBAQCAtMTc1LDIxICsxOTQsMjQg QEAgRG9lc0NhY2hlRXhpc3QgKA0KPiA+ICAgICBJTiBVTklUX1RFU1RfRlJBTUVXT1JLX0hBTkRM RSAgRnJhbWV3b3JrSGFuZGxlDQo+ID4NCj4gPiAgICAgKQ0KPiA+DQo+ID4gICB7DQo+ID4NCj4g PiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaWxlRGV2aWNlUGF0aDsNCj4gPg0KPiA+ IC0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+DQo+ID4gLSAgU0hFTExf RklMRV9IQU5ETEUgICAgICAgICBGaWxlSGFuZGxlOw0KPiA+DQo+ID4gKyAgQ0hBUjE2ICAgICAg ICAgICAgICpGaWxlTmFtZTsNCj4gPg0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAgICBTdGF0dXM7 DQo+ID4NCj4gPiArICBTSEVMTF9GSUxFX0hBTkRMRSAgRmlsZUhhbmRsZTsNCj4gPg0KPiA+DQo+ ID4NCj4gPiAgICAgLy8NCj4gPg0KPiA+ICAgICAvLyBOT1RFOiBUaGlzIGRldnBhdGggaXMgYWxs b2NhdGVkIGFuZCBtdXN0IGJlIGZyZWVkLg0KPiA+DQo+ID4gICAgIC8vDQo+ID4NCj4gPiAtICBG aWxlRGV2aWNlUGF0aCA9IEdldENhY2hlRmlsZURldmljZVBhdGggKEZyYW1ld29ya0hhbmRsZSk7 DQo+ID4NCj4gPiArICBGaWxlTmFtZSA9IEdldENhY2hlRmlsZU5hbWUgKEZyYW1ld29ya0hhbmRs ZSk7DQo+ID4NCj4gPiArICBpZiAoRmlsZU5hbWUgPT0gTlVMTCkgew0KPiA+DQo+ID4gKyAgICBy ZXR1cm4gRkFMU0U7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4gICAgIC8vDQo+ ID4NCj4gPiAgICAgLy8gQ2hlY2sgdG8gc2VlIHdoZXRoZXIgdGhlIGZpbGUgZXhpc3RzLiAgSWYg dGhlIGZpbGUgY2FuIGJlDQo+IG9wZW5lZCBmb3INCj4gPg0KPiA+ICAgICAvLyByZWFkaW5nLCBp dCBleGlzdHMuICBPdGhlcndpc2UsIHByb2JhYmx5IG5vdC4NCj4gPg0KPiA+ICAgICAvLw0KPiA+ DQo+ID4gLSAgU3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5RGV2aWNlUGF0aCAoDQo+ID4NCj4gPiAt ICAgICAgICAgICAgICZGaWxlRGV2aWNlUGF0aCwNCj4gPg0KPiA+ICsgIFN0YXR1cyA9IFNoZWxs T3BlbkZpbGVCeU5hbWUgKA0KPiA+DQo+ID4gKyAgICAgICAgICAgICBGaWxlTmFtZSwNCj4gPg0K PiA+ICAgICAgICAgICAgICAgICZGaWxlSGFuZGxlLA0KPiA+DQo+ID4gICAgICAgICAgICAgICAg RUZJX0ZJTEVfTU9ERV9SRUFELA0KPiA+DQo+ID4gICAgICAgICAgICAgICAgMA0KPiA+DQo+ID4g QEAgLTE5OCw4ICsyMjAsOCBAQCBEb2VzQ2FjaGVFeGlzdCAoDQo+ID4gICAgICAgU2hlbGxDbG9z ZUZpbGUgKCZGaWxlSGFuZGxlKTsNCj4gPg0KPiA+ICAgICB9DQo+ID4NCj4gPg0KPiA+DQo+ID4g LSAgaWYgKEZpbGVEZXZpY2VQYXRoICE9IE5VTEwpIHsNCj4gPg0KPiA+IC0gICAgRnJlZVBvb2wg KEZpbGVEZXZpY2VQYXRoKTsNCj4gPg0KPiA+ICsgIGlmIChGaWxlTmFtZSAhPSBOVUxMKSB7DQo+ ID4NCj4gPiArICAgIEZyZWVQb29sIChGaWxlTmFtZSk7DQo+ID4NCj4gPiAgICAgfQ0KPiA+DQo+ ID4NCj4gPg0KPiA+ICAgICBERUJVRyAoKERFQlVHX1ZFUkJPU0UsICIlYSAtIFJldHVybmluZyAl ZFxuIiwgX19mdW5jX18sICFFRklfRVJST1INCj4gKFN0YXR1cykpKTsNCj4gPg0KPiA+IEBAIC0y MjksMTAgKzI1MSwxMCBAQCBTYXZlVW5pdFRlc3RDYWNoZSAoDQo+ID4gICAgIElOIFVJTlROICAg ICAgICAgICAgICAgICAgICAgICBTYXZlU3RhdGVTaXplDQo+ID4NCj4gPiAgICAgKQ0KPiA+DQo+ ID4gICB7DQo+ID4NCj4gPiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaWxlRGV2aWNl UGF0aDsNCj4gPg0KPiA+IC0gIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ DQo+ID4gLSAgU0hFTExfRklMRV9IQU5ETEUgICAgICAgICBGaWxlSGFuZGxlOw0KPiA+DQo+ID4g LSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBXcml0ZUNvdW50Ow0KPiA+DQo+ID4gKyAgQ0hB UjE2ICAgICAgICAgICAgICpGaWxlTmFtZTsNCj4gPg0KPiA+ICsgIEVGSV9TVEFUVVMgICAgICAg ICBTdGF0dXM7DQo+ID4NCj4gPiArICBTSEVMTF9GSUxFX0hBTkRMRSAgRmlsZUhhbmRsZTsNCj4g Pg0KPiA+ICsgIFVJTlROICAgICAgICAgICAgICBXcml0ZUNvdW50Ow0KPiA+DQo+ID4NCj4gPg0K PiA+ICAgICAvLw0KPiA+DQo+ID4gICAgIC8vIENoZWNrIHRoZSBpbnB1dHMgZm9yIHNhbml0eS4N Cj4gPg0KPiA+IEBAIC0yNDUsMTMgKzI2NywxNiBAQCBTYXZlVW5pdFRlc3RDYWNoZSAoDQo+ID4g ICAgIC8vIERldGVybWluZSB0aGUgcGF0aCBmb3IgdGhlIGNhY2hlIGZpbGUuDQo+ID4NCj4gPiAg ICAgLy8gTk9URTogVGhpcyBkZXZwYXRoIGlzIGFsbG9jYXRlZCBhbmQgbXVzdCBiZSBmcmVlZC4N Cj4gPg0KPiA+ICAgICAvLw0KPiA+DQo+ID4gLSAgRmlsZURldmljZVBhdGggPSBHZXRDYWNoZUZp bGVEZXZpY2VQYXRoIChGcmFtZXdvcmtIYW5kbGUpOw0KPiA+DQo+ID4gKyAgRmlsZU5hbWUgPSBH ZXRDYWNoZUZpbGVOYW1lIChGcmFtZXdvcmtIYW5kbGUpOw0KPiA+DQo+ID4gKyAgaWYgKEZpbGVO YW1lID09IE5VTEwpIHsNCj4gPg0KPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRF UjsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+DQo+ID4NCj4gPiAgICAgLy8NCj4gPg0KPiA+ICAg ICAvLyBGaXJzdCBsZXRzIG9wZW4gdGhlIGZpbGUgaWYgaXQgZXhpc3RzIHNvIHdlIGNhbiBkZWxl dGUNCj4gaXQuLi5UaGlzIGlzIHRoZSB3b3JrIGFyb3VuZCBmb3IgdHJ1bmNhdGlvbg0KPiA+DQo+ ID4gICAgIC8vDQo+ID4NCj4gPiAtICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlEZXZpY2VQYXRo ICgNCj4gPg0KPiA+IC0gICAgICAgICAgICAgJkZpbGVEZXZpY2VQYXRoLA0KPiA+DQo+ID4gKyAg U3RhdHVzID0gU2hlbGxPcGVuRmlsZUJ5TmFtZSAoDQo+ID4NCj4gPiArICAgICAgICAgICAgIEZp bGVOYW1lLA0KPiA+DQo+ID4gICAgICAgICAgICAgICAgJkZpbGVIYW5kbGUsDQo+ID4NCj4gPiAg ICAgICAgICAgICAgICAoRUZJX0ZJTEVfTU9ERV9SRUFEIHwgRUZJX0ZJTEVfTU9ERV9XUklURSks DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAwDQo+ID4NCj4gPiBAQCAtMjcwLDggKzI5NSw4IEBA IFNhdmVVbml0VGVzdENhY2hlICgNCj4gPiAgICAgLy8NCj4gPg0KPiA+ICAgICAvLyBOb3cgdGhh dCB3ZSBrbm93IHRoZSBwYXRoIHRvIHRoZSBmaWxlLi4uIGxldCdzIG9wZW4gaXQgZm9yDQo+IHdy aXRpbmcuDQo+ID4NCj4gPiAgICAgLy8NCj4gPg0KPiA+IC0gIFN0YXR1cyA9IFNoZWxsT3BlbkZp bGVCeURldmljZVBhdGggKA0KPiA+DQo+ID4gLSAgICAgICAgICAgICAmRmlsZURldmljZVBhdGgs DQo+ID4NCj4gPiArICBTdGF0dXMgPSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gPg0KPiA+ICsg ICAgICAgICAgICAgRmlsZU5hbWUsDQo+ID4NCj4gPiAgICAgICAgICAgICAgICAmRmlsZUhhbmRs ZSwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgIChFRklfRklMRV9NT0RFX1JFQUQgfCBFRklfRklM RV9NT0RFX1dSSVRFIHwNCj4gRUZJX0ZJTEVfTU9ERV9DUkVBVEUpLA0KPiA+DQo+ID4gICAgICAg ICAgICAgICAgMA0KPiA+DQo+ID4gQEAgLTMwNCw4ICszMjksOCBAQCBTYXZlVW5pdFRlc3RDYWNo ZSAoDQo+ID4gICAgIFNoZWxsQ2xvc2VGaWxlICgmRmlsZUhhbmRsZSk7DQo+ID4NCj4gPg0KPiA+ DQo+ID4gICBFeGl0Og0KPiA+DQo+ID4gLSAgaWYgKEZpbGVEZXZpY2VQYXRoICE9IE5VTEwpIHsN Cj4gPg0KPiA+IC0gICAgRnJlZVBvb2wgKEZpbGVEZXZpY2VQYXRoKTsNCj4gPg0KPiA+ICsgIGlm IChGaWxlTmFtZSAhPSBOVUxMKSB7DQo+ID4NCj4gPiArICAgIEZyZWVQb29sIChGaWxlTmFtZSk7 DQo+ID4NCj4gPiAgICAgfQ0KPiA+DQo+ID4NCj4gPg0KPiA+ICAgICByZXR1cm4gU3RhdHVzOw0K PiA+DQo+ID4gQEAgLTMzNCwxMyArMzU5LDEzIEBAIExvYWRVbml0VGVzdENhY2hlICgNCj4gPiAg ICAgT1VUIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAqU2F2ZVN0YXRlU2l6ZQ0KPiA+DQo+ ID4gICAgICkNCj4gPg0KPiA+ICAgew0KPiA+DQo+ID4gLSAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICBTdGF0dXM7DQo+ID4NCj4gPiAtICBFRklfREVWSUNFX1BBVEhfUFJPVE9DT0wgICpGaWxl RGV2aWNlUGF0aDsNCj4gPg0KPiA+IC0gIFNIRUxMX0ZJTEVfSEFORExFICAgICAgICAgRmlsZUhh bmRsZTsNCj4gPg0KPiA+IC0gIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgSXNGaWxlT3BlbmVk Ow0KPiA+DQo+ID4gLSAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICBMYXJnZUZpbGVTaXplOw0K PiA+DQo+ID4gLSAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBGaWxlU2l6ZTsNCj4gPg0KPiA+ IC0gIFZPSUQgICAgICAgICAgICAgICAgICAgICAgKkJ1ZmZlcjsNCj4gPg0KPiA+ICsgIEVGSV9T VEFUVVMgICAgICAgICBTdGF0dXM7DQo+ID4NCj4gPiArICBDSEFSMTYgICAgICAgICAgICAgKkZp bGVOYW1lOw0KPiA+DQo+ID4gKyAgU0hFTExfRklMRV9IQU5ETEUgIEZpbGVIYW5kbGU7DQo+ID4N Cj4gPiArICBCT09MRUFOICAgICAgICAgICAgSXNGaWxlT3BlbmVkOw0KPiA+DQo+ID4gKyAgVUlO VDY0ICAgICAgICAgICAgIExhcmdlRmlsZVNpemU7DQo+ID4NCj4gPiArICBVSU5UTiAgICAgICAg ICAgICAgRmlsZVNpemU7DQo+ID4NCj4gPiArICBWT0lEICAgICAgICAgICAgICAgKkJ1ZmZlcjsN Cj4gPg0KPiA+DQo+ID4NCj4gPiAgICAgSXNGaWxlT3BlbmVkID0gRkFMU0U7DQo+ID4NCj4gPiAg ICAgQnVmZmVyICAgICAgID0gTlVMTDsNCj4gPg0KPiA+IEBAIC0zNTYsMTMgKzM4MSwxNiBAQCBM b2FkVW5pdFRlc3RDYWNoZSAoDQo+ID4gICAgIC8vIERldGVybWluZSB0aGUgcGF0aCBmb3IgdGhl IGNhY2hlIGZpbGUuDQo+ID4NCj4gPiAgICAgLy8gTk9URTogVGhpcyBkZXZwYXRoIGlzIGFsbG9j YXRlZCBhbmQgbXVzdCBiZSBmcmVlZC4NCj4gPg0KPiA+ICAgICAvLw0KPiA+DQo+ID4gLSAgRmls ZURldmljZVBhdGggPSBHZXRDYWNoZUZpbGVEZXZpY2VQYXRoIChGcmFtZXdvcmtIYW5kbGUpOw0K PiA+DQo+ID4gKyAgRmlsZU5hbWUgPSBHZXRDYWNoZUZpbGVOYW1lIChGcmFtZXdvcmtIYW5kbGUp Ow0KPiA+DQo+ID4gKyAgaWYgKEZpbGVOYW1lID09IE5VTEwpIHsNCj4gPg0KPiA+ICsgICAgcmV0 dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPg0KPiA+ICsgIH0NCj4gPg0KPiA+DQo+ID4N Cj4gPiAgICAgLy8NCj4gPg0KPiA+ICAgICAvLyBOb3cgdGhhdCB3ZSBrbm93IHRoZSBwYXRoIHRv IHRoZSBmaWxlLi4uIGxldCdzIG9wZW4gaXQgZm9yDQo+IHdyaXRpbmcuDQo+ID4NCj4gPiAgICAg Ly8NCj4gPg0KPiA+IC0gIFN0YXR1cyA9IFNoZWxsT3BlbkZpbGVCeURldmljZVBhdGggKA0KPiA+ DQo+ID4gLSAgICAgICAgICAgICAmRmlsZURldmljZVBhdGgsDQo+ID4NCj4gPiArICBTdGF0dXMg PSBTaGVsbE9wZW5GaWxlQnlOYW1lICgNCj4gPg0KPiA+ICsgICAgICAgICAgICAgRmlsZU5hbWUs DQo+ID4NCj4gPiAgICAgICAgICAgICAgICAmRmlsZUhhbmRsZSwNCj4gPg0KPiA+ICAgICAgICAg ICAgICAgIEVGSV9GSUxFX01PREVfUkVBRCwNCj4gPg0KPiA+ICAgICAgICAgICAgICAgIDANCj4g Pg0KPiA+IEBAIC00MDcsOCArNDM1LDggQEAgRXhpdDoNCj4gPiAgICAgLy8NCj4gPg0KPiA+ICAg ICAvLyBGcmVlIGFsbG9jYXRlZCBidWZmZXJzDQo+ID4NCj4gPiAgICAgLy8NCj4gPg0KPiA+IC0g IGlmIChGaWxlRGV2aWNlUGF0aCAhPSBOVUxMKSB7DQo+ID4NCj4gPiAtICAgIEZyZWVQb29sIChG aWxlRGV2aWNlUGF0aCk7DQo+ID4NCj4gPiArICBpZiAoRmlsZU5hbWUgIT0gTlVMTCkgew0KPiA+ DQo+ID4gKyAgICBGcmVlUG9vbCAoRmlsZU5hbWUpOw0KPiA+DQo+ID4gICAgIH0NCj4gPg0KPiA+ DQo+ID4NCj4gPiAgICAgaWYgKElzRmlsZU9wZW5lZCkgew0KPiA+DQo+ID4gQEAgLTQyNiwzICs0 NTQsNTcgQEAgRXhpdDoNCj4gPiAgICAgKlNhdmVEYXRhID0gQnVmZmVyOw0KPiA+DQo+ID4gICAg IHJldHVybiBTdGF0dXM7DQo+ID4NCj4gPiAgIH0NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsvKioN Cj4gPg0KPiA+ICsgIFNoZWxsIGJhc2VkIFVuaXRUZXN0UGVyc2lzdGVuY2VMaWIgbGlicmFyeSBj b25zdHJ1Y3Rvci4NCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIEltYWdlSGFu ZGxlICBUaGUgZmlybXdhcmUgYWxsb2NhdGVkIGhhbmRsZSBmb3IgdGhlIEVGSQ0KPiBpbWFnZS4N Cj4gPg0KPiA+ICsgIEBwYXJhbVtpbl0gIFN5c3RlbVRhYmxlICBBIHBvaW50ZXIgdG8gdGhlIEVG SSBTeXN0ZW0gVGFibGUuDQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBAcmV0dmFsIEVGSV9TVUND RVNTICAgICAgVGhlIGNvbnN0cnVjdG9yIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseS4NCj4gPg0KPiA+ ICsgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICBFcnJvciBjb2RlcyByZXR1cm5lZCBmcm9tIGdC Uy0NCj4gPkhhbmRsZVByb3RvY29sLg0KPiA+DQo+ID4gKyAqKi8NCj4gPg0KPiA+ICtFRklfU1RB VFVTDQo+ID4NCj4gPiArRUZJQVBJDQo+ID4NCj4gPiArVW5pdFRlc3RQZXJzaXN0ZW5jZUxpYkNv bnN0cnVjdG9yICgNCj4gPg0KPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgIEltYWdlSGFuZGxl LA0KPiA+DQo+ID4gKyAgSU4gRUZJX1NZU1RFTV9UQUJMRSAgKlN5c3RlbVRhYmxlDQo+ID4NCj4g PiArICApDQo+ID4NCj4gPiArew0KPiA+DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgIEluZGV4Ow0KPiA+DQo+ID4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAg IEFyZ2M7DQo+ID4NCj4gPiArICBDSEFSMTYgICAgICAgICAgICAgICAgICAgICAgICAgKipBcmd2 Ow0KPiA+DQo+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsNCj4g Pg0KPiA+ICsgIEVGSV9TSEVMTF9QQVJBTUVURVJTX1BST1RPQ09MICAqU2hlbGxQYXJhbWV0ZXJz Ow0KPiA+DQo+ID4gKw0KPiA+DQo+ID4gKyAgU3RhdHVzID0gZ0JTLT5IYW5kbGVQcm90b2NvbCAo DQo+ID4NCj4gPiArICAgICAgICAgICAgICAgICAgZ0ltYWdlSGFuZGxlLA0KPiA+DQo+ID4gKyAg ICAgICAgICAgICAgICAgICZnRWZpU2hlbGxQYXJhbWV0ZXJzUHJvdG9jb2xHdWlkLA0KPiA+DQo+ ID4gKyAgICAgICAgICAgICAgICAgIChWT0lEICoqKSZTaGVsbFBhcmFtZXRlcnMNCj4gPg0KPiA+ ICsgICAgICAgICAgICAgICAgICApOw0KPiA+DQo+ID4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+DQo+ID4gKyAgICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+DQo+ID4g KyAgICBnb3RvIERvbmU7DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArICBB cmdjID0gU2hlbGxQYXJhbWV0ZXJzLT5BcmdjOw0KPiA+DQo+ID4gKyAgQXJndiA9IFNoZWxsUGFy YW1ldGVycy0+QXJndjsNCj4gPg0KPiA+ICsNCj4gPg0KPiA+ICsgIFN0YXR1cyA9IEVGSV9TVUND RVNTOw0KPiA+DQo+ID4gKyAgaWYgKChBcmdjID4gMSkgJiYgKEFyZ3YgIT0gTlVMTCkpIHsNCj4g Pg0KPiA+ICsgICAgLy8gVGhpcyBtaWdodCBiZSBvdXIgY3VlLCBjaGVjayBmb3Igd2hldGhlciB3 ZSBuZWVkIHRvIGRvDQo+IGFueXRoaW5nDQo+ID4NCj4gPiArICAgIGZvciAoSW5kZXggPSAxOyBJ bmRleCA8IEFyZ2M7IEluZGV4KyspIHsNCj4gPg0KPiA+ICsgICAgICBpZiAoU3RyQ21wIChBcmd2 W0luZGV4XSwgTCItLUNhY2hlUGF0aCIpID09IDApIHsNCj4gPg0KPiA+ICsgICAgICAgIC8vIE5l ZWQgdG8gdXBkYXRlIHRoZSBwb3RlbnRpYWwgY2FjaGUgcGF0aCB0byBkZXNpZ25hdGVkIHBhdGgN Cj4gPg0KPiA+ICsgICAgICAgIGlmIChJbmRleCA8IEFyZ2MgLSAxKSB7DQo+ID4NCj4gPiArICAg ICAgICAgIG1DYWNoZVBhdGggPSBBcmd2W0luZGV4ICsgMV07DQo+ID4NCj4gPiArICAgICAgICB9 IGVsc2Ugew0KPiA+DQo+ID4gKyAgICAgICAgICBQcmludCAoTCIgIC0tQ2FjaGVQYXRoIDxQYXRo IG9mIHdoZXJlIHRvIHNhdmUgdW5pdCB0ZXN0DQo+IGNhY2hlIGZpbGVzLCBpLmUuIEZTMDpUZXN0 Rm9sZGVyPlxuIik7DQo+ID4NCj4gPiArICAgICAgICB9DQo+ID4NCj4gPiArICAgICAgfQ0KPiA+ DQo+ID4gKyAgICB9DQo+ID4NCj4gPiArICB9DQo+ID4NCj4gPiArDQo+ID4NCj4gPiArRG9uZToN Cj4gPg0KPiA+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4NCj4gPiArfQ0KPiA+DQoNCgotPS09LT0t PS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFsbCBtZXNzYWdl cyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTA3MDc3KTogaHR0cHM6 Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTA3MDc3Ck11dGUgVGhpcyBUb3BpYzog aHR0cHM6Ly9ncm91cHMuaW8vbXQvOTk4Nzg2ODIvNzY4NjE3NgpHcm91cCBPd25lcjogZGV2ZWwr b3duZXJAZWRrMi5ncm91cHMuaW8KVW5zdWJzY3JpYmU6IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8v Zy9kZXZlbC9sZWF2ZS8xMjM2NzExMS83Njg2MTc2LzE5MTM0NTYyMTIveHl6enkgW3JlYmVjY2FA b3BlbmZ3LmlvXQotPS09LT0tPS09LT0tPS09LT0tPS09LQoKDQo=