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 1A47378003C for ; Tue, 26 Sep 2023 22:06:43 +0000 (UTC) DKIM-Signature: a=rsa-sha256; bh=rYblPMfX6X6g+gSq4khGMugeWOve8y8nasMAedC779o=; c=relaxed/simple; d=groups.io; h=ARC-Seal:ARC-Message-Signature:ARC-Authentication-Results:From:To:CC:Subject:Thread-Topic:Thread-Index:Date:Message-ID:References:In-Reply-To:Accept-Language:MIME-Version:Precedence:List-Subscribe:List-Help:Sender:List-Id:Mailing-List:Delivered-To:Reply-To:List-Unsubscribe-Post:List-Unsubscribe:Content-Language:Content-Type:Content-Transfer-Encoding; s=20140610; t=1695766002; v=1; b=vOmzkTEDlaOhrwr0UAadF0EV5SimHIcg6c60IVJA02q590MGYsUcE29Qn2Uoc2ZosJSGUJWL euGon3WC2R/quLMnp6HlDqAQcsVyLYcfL03V8UFBuwnpxJioCUgqfFKGKsNmE7LSVVk+keqT98f UkEv8C6AWVRLmAY5a6UuEi2s= X-Received: by 127.0.0.2 with SMTP id br7BYY7687511x033ZttiwTv; Tue, 26 Sep 2023 15:06:42 -0700 X-Received: from mgamail.intel.com (mgamail.intel.com [134.134.136.65]) by mx.groups.io with SMTP id smtpd.web10.4070.1695766001333572168 for ; Tue, 26 Sep 2023 15:06:41 -0700 X-IronPort-AV: E=McAfee;i="6600,9927,10845"; a="385531769" X-IronPort-AV: E=Sophos;i="6.03,179,1694761200"; d="scan'208";a="385531769" X-Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga103.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Sep 2023 15:06:40 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6600,9927,10845"; a="1079884518" X-IronPort-AV: E=Sophos;i="6.03,179,1694761200"; d="scan'208";a="1079884518" X-Received: from fmsmsx603.amr.corp.intel.com ([10.18.126.83]) by fmsmga005.fm.intel.com with ESMTP/TLS/AES256-GCM-SHA384; 26 Sep 2023 15:06:40 -0700 X-Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) 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.32; Tue, 26 Sep 2023 15:06:39 -0700 X-Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32; Tue, 26 Sep 2023 15:06:39 -0700 X-Received: from fmsedg602.ED.cps.intel.com (10.1.192.136) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.32 via Frontend Transport; Tue, 26 Sep 2023 15:06:39 -0700 X-Received: from NAM11-BN8-obe.outbound.protection.outlook.com (104.47.58.169) by edgegateway.intel.com (192.55.55.71) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2507.32; Tue, 26 Sep 2023 15:06:25 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dCcoPHWqMUZqldfGjd1JoUYvfjsvA2y2uVwllQjt0nxPqFt0qOzjJUhBkBBka8ExcTvhVxxSYFnCiYnaOzybvuMS9xW4sAPLGGpku0gfz4uC4hTjad5Saam6wf+nxZ2IfN4HlFnIhfX0j1ve0U7OZtWaFS8znZYWW8eMJknrC+x7reAc4Xo81v8y1mYuUoT5oInPwFROhVK5rRnmBcH0oZMPWbv/jyywdCOPzxxCvhmnhIQoQBokEOcunnbUWDTeTuGEatKYSPrku1iYLFfFKdrJzcGU4YMfBnyoTr0tXTKUBiusHNa25qW8+xaqDRdxkb1h/LTS5cVdITtpZ5t0lQ== 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=HuL0yXNMP7NnYT4QIaa1ytn7HGvsTVHEZGEX3pIVk+o=; b=F3XTPb+HrDKGQTrHlmClyyIEwSVRbNApZv4z3klodJcPEOSkFvCZxJ7c/dUx+o+2fYrPRtvB2m7t/HuNg3nPU+CyMpqz06j4HaKOWQ/Tbu9FeDNU3y7iEldeRO65Y9uUv4BI9wo5zdcGrO5GUP94xjnu4tfJCOw9BMwn/bbPbLtkC3KY6pD24229+cEwpuEpQ2zUbdofK1Oq/iKWCnbftWFLqJ7afsB/VEgQ0io1Fc+qm2qjAa5hQef8weFxGxdU7ka5VeKiLcEFB50Ggd3aoVQUZypMQQ2H1xwHnBCegjzG7Z2AJ0I0Lm/EAVAOimHxH2ykV881otOxInunt4OcVw== 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 SA2PR11MB4938.namprd11.prod.outlook.com (2603:10b6:806:fb::14) by DM4PR11MB7760.namprd11.prod.outlook.com (2603:10b6:8:100::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:06:23 +0000 X-Received: from SA2PR11MB4938.namprd11.prod.outlook.com ([fe80::ca3:8eed:9332:b6e0]) by SA2PR11MB4938.namprd11.prod.outlook.com ([fe80::ca3:8eed:9332:b6e0%6]) with mapi id 15.20.6813.017; Tue, 26 Sep 2023 22:06:23 +0000 From: "Michael D Kinney" To: "Desimone, Nathaniel L" , "devel@edk2.groups.io" CC: Andrew Fish , "Ni, Ray" , "Chiu, Chasel" , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH v1] EmulatorPkg: Fix Source Level Debug on Windows Thread-Topic: [PATCH v1] EmulatorPkg: Fix Source Level Debug on Windows Thread-Index: AQHZ7acXLHA+4eW5jkeRufIXz2NvSLAtje2wgAAFmzCAAA/OkIAAB/BAgAACFoA= Date: Tue, 26 Sep 2023 22:06:23 +0000 Message-ID: References: <20230922224923.1978-1-nathaniel.l.desimone@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SA2PR11MB4938:EE_|DM4PR11MB7760:EE_ x-ms-office365-filtering-correlation-id: ef9eabeb-a751-471c-6024-08dbbedcd229 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam-message-info: cUBZiq1DMyo8ugRuQi56er/hJjein3a9kDY4yHLgT0xSgnTPqdUuPbhA13+RrWhBdIUZybpYSd6ySnXRsulfU8JWmfXvs0AcH4+7R5lQoDm01kqeqIrGNvTrlxk3Gyyunn7wcljh/e9bxLZzT6vAladLxBZw9k+enP2/CzFALicDIaPjP+UVgzb6cX/3usai+t8seT7ZwUtelHDCVZIpM6N4KR2RH3lO/QPT/dK5FIaLa7kZRHihHiqCGpiTvtGi7HYC8WZqroKrOzdhgH4KfNkWfo04kFn2gQKok79HU/Pr2fAyjHzRQKTQCCna7mncafOWMhEqK5qgXD8fZHAz5eh+skwrGAhr/s01CHGInCra4UK5IQHCy/m9uhT2/NCJ+MWfjWzisRvrSCKxl4jX36azmz7V/keaMdInEEMxMZn6x4Mrgwz1njReszAQTakA0hP3IVhG76p/P5GuHaRSocsljKb1keRLO3SXfniAV7ptcrqTJrZ3E4y311u7fihucH6G8y3w2Mi9lJWARKlcXBmi8GAFRR4jIqZJKYjdhQd0zEC95U5ZtonzwLt234a/2c+71DDG2V/qOmAUNDCSGz1IUftLJVpmM44JjYx8zRa+q17qjSEKztq27Xy2FxSx x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?NWJhVE5aRkZvcjhHZm9LTzZEbFBvQWdRM1V6Z3R3aTNRaWdxbkpVQlpmMTRU?= =?utf-8?B?RkZyZkx2TVdQYkgxUG0wREdzcnJZanZrQUc3NFFWRzZ2SXY2d2hUL0Vpa255?= =?utf-8?B?WERGZ3pIeVBxVzlYYVYwVnZxcy9MYmdLbWt0dml6VnFXTTViTng0dXVuakcr?= =?utf-8?B?bUdXRXBBaUpzQVNQZUZhRDJNdGFwSTJHS0twNEhvaWpLWUtEUlc4Q0g3TmZH?= =?utf-8?B?ZmFYdy9hVnpNemYvemM0enFwQlB6S3BNcGl4MGFPZW8vN2JsS2d5RWNiYmpS?= =?utf-8?B?UFFDRS82amhna0dBKzdwVEdhVnhib2xYNncrU3B2V3lOZ0tKU1lSUHFwV0ow?= =?utf-8?B?VWxVcURxQjdKZ1VGeVFmTHJLNGN5MWs5aHVXL0hUd0ZZcVFMQjB4VVJyVERB?= =?utf-8?B?NTJ0UnAvMkJGcnNhM2llSkd4MlVmN24vSERra1hyeTVkeGV0dXFSYXFiWFpS?= =?utf-8?B?TGNFODJOSERxWVBqbFhIVWhmMTFLZFc2ZHl4STlLOXRxbHBiVW5ESElHdFdn?= =?utf-8?B?SkprbFZBN2wyckNKSlBtNjd5cTNGWDFyd0Uzbmtuakd5VzJWd01sUTdOUHpO?= =?utf-8?B?azVhTDFEM1o0MStST3doekxqQ0ZiaWdQYWFYWnNKY3FaREU0UkF0eWFDUUxp?= =?utf-8?B?WTlPakNIQk85UFk3RUp1UFJTRlkwb2MxaUoxT3RHWkRaQk5maTdOYzBVVEVG?= =?utf-8?B?RDRxMktKNEVZcmY5b2hoZkcyU0t6djI0cHM0S2M5S0dYcDN2bmlBaEd0RW1s?= =?utf-8?B?cG9FK1pua3ZraG1iM21RZWI1bXYrNjdWSGRqYUw2K3RPdDE2VzRVWFF5RGVF?= =?utf-8?B?RGR0TkFXTTh2RDV0dmZYb01saFdBSXp3cFJmamIxSVlHYWo0Rm9GN01ORmU5?= =?utf-8?B?Uno1dkFwMlNzOSs0UEhGdWtXZ25NS3F1M0t0bUQ3TzFxN0VwcUw0dEFkYTJF?= =?utf-8?B?UkxGbk1JakZGV1ZIeTJiVGhacFkxY2Fzem16U1lCSXQ4L3RRYjErejVGc01q?= =?utf-8?B?WW9COU95dm9hR0VvQVNaa1FUUkNPVFRuN2ZaMmszMitzL0JVaElRWUNPOWla?= =?utf-8?B?Q0xRWXZhME4yTHZVYm1PNVFpc2FkTURiUyt0UG53N0FKcHppeHVJRUQ4YXRM?= =?utf-8?B?aTFEY0lqaG9TeG94cGxTZGFDYmorWDNYdm1tNUFjbHBqT1NhaGZQdGVjNEZ2?= =?utf-8?B?VllMZ3JDRkFQb3JMQzZCZmYxR0dybk5rVnBzTGMyemdibktnK3ZvWk9vbUJ2?= =?utf-8?B?cXZWazR6WUd3Vk1aR0NOdmdESGU2cWc5SlZIdUNmdlIxZHBTUVpvUmFWRkNp?= =?utf-8?B?eVQ0eEZoZVpLQ0NXbk43RlNPZFVaQVV4UTRDb21JbHljeXNRNWdBd1QrMDds?= =?utf-8?B?YnNDT084N3oweFZHYUFKQStPSXFab05BTUdmWlQ2eU1nWTFNMllsallGSnBz?= =?utf-8?B?RWNYY1RlYk1aN0JMem92MncxdnFpMS8zMkR3WjErQ0xOVWdJRGs3V2NBcTVG?= =?utf-8?B?MjFmUmMwLzJwVkJMRnJoOGxLRjcyRE5uc05iQXpVZlB1c254dVFBSkVsb09r?= =?utf-8?B?ZlU1azYwOGs0ZVVKQnNac0M1YUpCUUxEL0oxUGozMlhScXk1QzhPMzRxNHZF?= =?utf-8?B?TGplTHlpbXpYVm93amVtSkpiZHZVTFdXc1ozZ2ZBTUZaNzlCK2VSS2RaK0kx?= =?utf-8?B?ZEpWa1ZqNVd6RGdvRWpmVGlJZ2pTSUVCYWRxV3VRNmE4TlhzOTZRWllpcWFp?= =?utf-8?B?NlF6Z2s5djVtdExyNVVtcmp1S0NjZlJJUEhiRVMzcUtDYkc2ZFZYNFNGV2J5?= =?utf-8?B?RThtckFjUy9OL09aY09hN0JwSDRlT1BTL2c3dDRwWldLaXFkZEc1ODE5aFhF?= =?utf-8?B?VWZGcFZqZHNOaCttTk15ZlBoVTkraGdCUkNWT2JUSTVhWVhYTGt6M3FIcHpD?= =?utf-8?B?S0JqSWorZDBUWlFrM0xHV2l1R2pIM2FwSS9Kbnh1bE1IYkhKYzA2SkZQNitm?= =?utf-8?B?MzFRd1Zxc3BUeWM5R2RiSUlQRTVYQTd5elNyaWpTSWJRMzFucVVwN3ZSODdH?= =?utf-8?B?ZFdiWHVGbDkzOTNaVnVkbjZlMi9WNnNwb1VSMG0yQ1FUdFhOWnFtNFladWFo?= =?utf-8?Q?LFyZabZnZapb1MQZtU2CisT7K?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SA2PR11MB4938.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef9eabeb-a751-471c-6024-08dbbedcd229 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2023 22:06:23.0897 (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: YxKaxu8/pGbTHalRfdBFuLWLABlCmNX6a4VHtkp622SlN4Vn9CdzJwig+EqcUasNIPuwrf2bjtF1kva0ZoE7YqvCHu1hk7C0UnIa/8ziIvw= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR11MB7760 X-OriginatorOrg: intel.com Precedence: Bulk 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 List-Unsubscribe: X-Gm-Message-State: uB97czUEH0xoWa6y1d1tzbDWx7686176AA= 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=vOmzkTED; arc=reject ("signature check failed: fail, {[1] = sig:microsoft.com:dns request to arcselector9901._domainkey.microsoft.com failed: no records with this name}"); 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 SGkgTmF0ZSwNCg0KUmV2aWV3ZWQtYnk6IE1pY2hhZWwgRCBLaW5uZXkgPG1pY2hhZWwuZC5raW5u ZXlAaW50ZWwuY29tPg0KDQpUaGF0IG1ha2VzIGNvbXBsZXRlIHNlbnNlIG5vdyBvbiB0aGUgdXNl IGNhc2Ugd2hlbiBidWlsZGluZyANCmRyaXZlcnMgb3IgYXBwcyBvdXRzaWRlIEVtdWxhdG9yUGtn IERTQyBmaWxlIGFuZCB3YW50aW5nDQp0byBzdXBwb3J0IHNvdXJjZSBsZXZlbCBkZWJ1Zy4gIElu IHRoZSBwYXN0LCBJIGhhdmUgaGFkIHRvDQphZGQgY29tcG9uZW50cyB0byBFbXVsYXRvclBrZyBE U0MgZmlsZS4NCg0KVGhhbmsgeW91IGZvciBhZGRpbmcgZmVhdHVyZSB0byBzdXBwb3J0IHNvdXJj ZSBsZXZlbCBkZWJ1Zw0Kb2YgY29tcG9uZW50cyBidWlsdCBvdXRzaWRlIEVtdWxhdG9yUGtnLg0K DQpUaGFua3MsDQoNCk1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9t OiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRlc2ltb25lQGludGVsLmNvbT4N Cj4gU2VudDogVHVlc2RheSwgU2VwdGVtYmVyIDI2LCAyMDIzIDI6NTUgUE0NCj4gVG86IEtpbm5l eSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+IGRldmVsQGVkazIu Z3JvdXBzLmlvDQo+IENjOiBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPjsgTmksIFJheSA8 cmF5Lm5pQGludGVsLmNvbT47IENoaXUsDQo+IENoYXNlbCA8Y2hhc2VsLmNoaXVAaW50ZWwuY29t Pg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYxXSBFbXVsYXRvclBrZzogRml4IFNvdXJjZSBMZXZl bCBEZWJ1ZyBvbiBXaW5kb3dzDQo+IA0KPiBIaSBNaWtlLA0KPiANCj4gWWVzLCB3ZSBjYW4gZGVs ZXRlIHRob3NlIGxpbmVzIG5vdyDwn5iKLiBJIGhhdmUgdGhvc2UgbGluZXMgY29tbWVudGVkDQo+ IG91dCBpbiBteSBjb3B5IG9mIEVtdWxhdG9yUGtnLiBJIGZvdW5kIHRoaXMgYmVjYXVzZSBJIGhh dmUgYmVlbiB0cnlpbmcNCj4gdG8gdXNlIEVtdWxhdG9yUGtnIHRvIHNvdXJjZSBsZXZlbCBkZWJ1 ZyBkcml2ZXJzIHRoYXQgSSBidWlsdA0KPiBzZXBhcmF0ZWx5IHZpYSBvbmUgb2YgdGhlIGVkazIt cGxhdGZvcm0gYnVpbGRzLg0KPiANCj4gVGhhbmtzLA0KPiBOYXRlDQo+IA0KPiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtp bm5leUBpbnRlbC5jb20+DQo+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAyNiwgMjAyMyAyOjI5 IFBNDQo+IFRvOiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhhbmllbC5sLmRlc2ltb25lQGlu dGVsLmNvbT47DQo+IGRldmVsQGVkazIuZ3JvdXBzLmlvDQo+IENjOiBBbmRyZXcgRmlzaCA8YWZp c2hAYXBwbGUuY29tPjsgTmksIFJheSA8cmF5Lm5pQGludGVsLmNvbT47IENoaXUsDQo+IENoYXNl bCA8Y2hhc2VsLmNoaXVAaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsIEQNCj4gPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSRTogW1BBVENIIHYxXSBFbXVsYXRvclBr ZzogRml4IFNvdXJjZSBMZXZlbCBEZWJ1ZyBvbiBXaW5kb3dzDQo+IA0KPiBJIGhhdmUgVlMgQ29k ZSBvbiBXaW5kb3dzIHdvcmtpbmcgdG9kYXkgdXNpbmcgdGhlIFBEQiBiYXNlZCBzeW1ib2wNCj4g ZmlsZS4NCj4gDQo+IFRoZSBmb2xsb3dpbmcgbGluZXMgaW4gdGhlIEVtdWxhdG9yUGtnIERTQyBm aWxlIGZvcmNlIDRLQiBhbGlnbm1lbnQNCj4gYW5kIHRoZSBETEwgZXhwb3J0IG9mIHRoZSBJbml0 aWFsaXplRHJpdmVyIHN5bWJvbA0KPiANCj4gaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9l ZGsyL2Jsb2IvYmYwYmRhY2RkNmY2Y2RkMmU5YWM1ZGIxNGI2ZGFmMQ0KPiA5YTVhNWJkNTcvRW11 bGF0b3JQa2cvRW11bGF0b3JQa2cuZHNjI0w0OTcNCj4gDQo+ICAgTVNGVDoqXypfKl9ETElOS19G TEFHUyAgICAgPSAvQUxJR046NDA5NiAvRklMRUFMSUdOOjQwOTYNCj4gL1NVQlNZU1RFTTpDT05T T0xFDQo+ICAgTVNGVDpERUJVR18qXypfRExJTktfRkxBR1MgPQ0KPiAvRVhQT1JUOkluaXRpYWxp emVEcml2ZXI9JChJTUFHRV9FTlRSWV9QT0lOVCkgL0JBU0U6MHgxMDAwMA0KPiAgIE1TRlQ6Tk9P UFRfKl8qX0RMSU5LX0ZMQUdTID0NCj4gL0VYUE9SVDpJbml0aWFsaXplRHJpdmVyPSQoSU1BR0Vf RU5UUllfUE9JTlQpIC9CQVNFOjB4MTAwMDANCj4gDQo+IA0KPiBJIHRoaW5rIHRoaXMgaXMgd2h5 IGl0IGlzIHdvcmtpbmcgZm9yIG1lIHdpdGhvdXQgdGhpcyBjaGFuZ2UuDQo+IA0KPiBBcmUgeW91 IHN1Z2dlc3RpbmcgdGhhdCB3aXRoIHRoaXMgY2hhbmdlIHRoZXNlIGNhbiBiZSByZW1vdmVkPw0K PiANCj4gTWlrZQ0KPiANCj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206 IERlc2ltb25lLCBOYXRoYW5pZWwgTCA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0K PiA+IFNlbnQ6IFR1ZXNkYXksIFNlcHRlbWJlciAyNiwgMjAyMyAxOjMyIFBNDQo+ID4gVG86IEtp bm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+ID4gZGV2ZWxA ZWRrMi5ncm91cHMuaW8NCj4gPiBDYzogQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbT47IE5p LCBSYXkgPHJheS5uaUBpbnRlbC5jb20+OyBDaGl1LA0KPiA+IENoYXNlbCA8Y2hhc2VsLmNoaXVA aW50ZWwuY29tPg0KPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggdjFdIEVtdWxhdG9yUGtnOiBGaXgg U291cmNlIExldmVsIERlYnVnIG9uDQo+IFdpbmRvd3MNCj4gPg0KPiA+IEhpIE1pa2UsDQo+ID4N Cj4gPiBTb3VyY2UgbGV2ZWwgZGVidWcgd2l0aCBWUyBDb2RlIGRvZXMgaW5kZWVkIHdvcmsgdG9k YXkgd2l0aCBnZGIgb3INCj4gPiBsbGRiLiBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgVmlzdWFsIFN0 dWRpbyBXaW5kb3dzIGRlYnVnZ2VyIHdvcmsgYXMNCj4gPiB3ZWxsLg0KPiA+DQo+ID4gWW91IGFy ZSBjb3JyZWN0IHRoYXQgaWYgdGhlIHNhbWUgRExMIGlzIGxvYWRlZCBtb3JlIHRoYW4gb25jZSB0 aGF0DQo+ID4gdGhpcyBtZXRob2QgY2Fubm90IHBlcmZvcm0gc291cmNlIGxldmVsIGRlYnVnIG9u IHRoZSBzZWNvbmQNCj4gaW5zdGFuY2U7DQo+ID4gYnV0IHRoaXMgY2hhbmdlIHdvbid0IGJyZWFr IHRoYXQgc2NlbmFyaW8gZWl0aGVyLiBJZiB0aGUgc2FtZSBETEwNCj4gPiBvY2N1cnMgdHdpY2Us IHRoZW4gd2Ugd2lsbCB1c2UgdGhlIFBFL0NPRkYgaW1hZ2UgbG9hZGVkIGJ5IGVpdGhlcg0KPiB0 aGUNCj4gPiBQRUkgY29yZSBvciBEWEUgY29yZSBpbnN0ZWFkIG9mIHRoZSBvbmUgbG9hZGVkIGJ5 IFdpbmRvd3MuIFRoaXMNCj4gbWVhbnMNCj4gPiB0aGF0IHRoZSBzZWNvbmQgaW5zdGFuY2Ugb2Yg dGhlIERMTCB3aWxsIG5vdCBiZSBzb3VyY2UgbGV2ZWwgZGVidWctDQo+ID4gYWJsZSBieSBWaXN1 YWwgU3R1ZGlvOyBidXQgUEktc3BlYyBjb21wbGlhbmNlIGlzIG1haW50YWluZWQuIFRoaXMNCj4g PiBiZWhhdmlvciBpcyB1bmNoYW5nZWQgZnJvbSB0aGUgb3JpZ2luYWwgY29kZS4NCj4gPg0KPiA+ IFllcywgdGhpcyBjb2RlIGVuYWJsZXMgUEUvQ09GRiBpbWFnZXMgdGhhdCBkbyBub3QgaGF2ZSBz ZWN0aW9ucyB0aGF0DQo+ID4gYXJlIDRLQiBhbGlnbmVkLiBJdCB3aWxsIHNldHVwIHBhZ2UgcHJv dGVjdGlvbiBmb3IgdXNlciBtb2RlLg0KPiBXaXRob3V0DQo+ID4gdGhpcyBjaGFuZ2UgeW91IG11 c3QgdHVybiBvZmYgdGhlIE5YIGJpdCB3aGVuIHVzaW5nIHRoZSBWaXN1YWwNCj4gU3R1ZGlvDQo+ ID4gV2luZG93cyBkZWJ1Z2dlci4NCj4gPg0KPiA+IFRoYW5rcywNCj4gPiBOYXRlDQo+ID4NCj4g PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiBTZW50OiBUdWVzZGF5LCBTZXB0ZW1i ZXIgMjYsIDIwMjMgMTowOCBQTQ0KPiA+IFRvOiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhh bmllbC5sLmRlc2ltb25lQGludGVsLmNvbT47DQo+ID4gZGV2ZWxAZWRrMi5ncm91cHMuaW8NCj4g PiBDYzogQW5kcmV3IEZpc2ggPGFmaXNoQGFwcGxlLmNvbT47IE5pLCBSYXkgPHJheS5uaUBpbnRl bC5jb20+OyBDaGl1LA0KPiA+IENoYXNlbCA8Y2hhc2VsLmNoaXVAaW50ZWwuY29tPjsgS2lubmV5 LCBNaWNoYWVsIEQNCj4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gU3ViamVj dDogUkU6IFtQQVRDSCB2MV0gRW11bGF0b3JQa2c6IEZpeCBTb3VyY2UgTGV2ZWwgRGVidWcgb24N Cj4gV2luZG93cw0KPiA+DQo+ID4gSGkgTmF0ZSwNCj4gPg0KPiA+IEkgYW0gYWJsZSB0byBkbyBz b3VyY2UgbGV2ZWwgZGVidWcgb2YgRW11bGF0b3JQa2cgdXNpbmcgVlMgQ29kZQ0KPiB0b2RheS4N Cj4gPg0KPiA+IFdoYXQgc2NlbmFyaW9zIGFyZSBicm9rZW4/DQo+ID4NCj4gPiBJIGRvIGtub3cg dGhhdCB0aGUgRExMIGJhc2VkIGFwcHJvYWNoIHdvdWxkIG9ubHkgYWxsb3cgYSBzaW5nbGUNCj4g PiBpbnN0YW5jZSBvZiB0aGUgbW9kdWxlIHRvIGJlIGxvYWRlZCBhbmQgZGVidWdnZWQuICBJZiwg Zm9yIGV4YW1wbGUsDQo+IGENCj4gPiBkcml2ZXIgaXMgbG9hZGVkIG1vcmUgdGhhbiBvbmNlIGZy b20gdGhlIFVFRkkgU2hlbGwgaW4gdGhlDQo+IEVtdWxhdG9yUGtnDQo+ID4gZW52LCB0aGUgMm5k IGRyaXZlciB3b3VsZCB1c2UgdGhlIGZpcnN0IERMTCB3aGljaCBkb2VzIG5vdCBtYXRjaCB0aGUN Cj4gPiBQSSBzcGVjIGJlaGF2aW9yLg0KPiA+DQo+ID4gSXQgYWxzbyBhcHBlYXJzIHRoYXQgdGhp cyBjaGFuZ2UgY2FuIHN1cHBvcnQgUEUvQ09GRiBpbWFnZXMgdGhhdCBkbw0KPiA+IG5vdCBoYXZl IHNlY3Rpb25zIHRoYXQgYXJlIDRLQiBhbGlnbmVkIGFuZCBoYW5kbGVzIHRoZSBwYWdlDQo+IHBy b3RlY3Rpb24NCj4gPiBzZXR0aW5ncyBmb3IgdGhlIHVzZXIgbW9kZSBhcHBsaWNhdGlvbiBlbnYu ICBJcyB0aGF0IGNvcnJlY3Q/DQo+ID4NCj4gPiBNaWtlDQo+ID4NCj4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiBGcm9tOiBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgPG5hdGhh bmllbC5sLmRlc2ltb25lQGludGVsLmNvbT4NCj4gPiA+IFNlbnQ6IEZyaWRheSwgU2VwdGVtYmVy IDIyLCAyMDIzIDM6NDkgUE0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbw0KPiA+ID4g Q2M6IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+OyBOaSwgUmF5IDxyYXkubmlAaW50ZWwu Y29tPjsNCj4gPiBLaW5uZXksDQo+ID4gPiBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPjsgQ2hpdSwgQ2hhc2VsDQo+ID4gPiA8Y2hhc2VsLmNoaXVAaW50ZWwuY29tPg0KPiA+ ID4gU3ViamVjdDogW1BBVENIIHYxXSBFbXVsYXRvclBrZzogRml4IFNvdXJjZSBMZXZlbCBEZWJ1 ZyBvbiBXaW5kb3dzDQo+ID4gPg0KPiA+ID4gVGhlIFZpc3VhbCBTdHVkaW8gV2luZG93cyBkZWJ1 Z2dlciB3aWxsIG9ubHkgbG9hZCBzeW1ib2xzIGZvcg0KPiA+IFBFL0NPRkYNCj4gPiA+IGltYWdl cyB0aGF0IFdpbmRvd3MgaXMgYXdhcmUgb2YuIFRoZXJlZm9yZSwgdG8gZW5hYmxlIHNvdXJjZSBs ZXZlbA0KPiA+ID4gZGVidWdnaW5nLCBhbGwgUEVJL0RYRSBtb2R1bGVzIG11c3QgYmUgbG9hZGVk IHZpYSBMb2FkTGlicmFyeSgpIG9yDQo+ID4gPiBMb2FkTGlicmFyeUV4KCkgYW5kIHRoZSB0aGUg aW5zdGFuY2UgaW4gbWVtb3J5IGNyZWF0ZWQgYnkNCj4gPiA+IExvYWRMaWJyYXJ5KCkgbXVzdCBi ZSB0aGUgb25lIHRoYXQgaXMgYWN0dWFsbHkgZXhlY3V0ZWQuDQo+ID4gPg0KPiA+ID4gVGhlIGN1 cnJlbnQgc291cmNlIGxldmVsIGRlYnVnIGltcGxlbWVudGF0aW9uIGluIEVtdWxhdG9yUGtnIGZv cg0KPiA+ID4gV2luZG93cyBpcyBpbmhlcml0ZWQgZnJvbSB0aGUgb2xkIE50MzJQa2cuIFRoaXMg aW1wbGVtZW50YXRpb24NCj4gbWFrZXMNCj4gPiA+IHRoZSBhc3N1bXB0aW9uIHRoYXQgYWxsIFBF SS9EWEUgbW9kdWxlcyBoYXZlIGEgRExMIGV4cG9ydCB0YWJsZXMNCj4gPiB3aXRoDQo+ID4gPiBh IHN5bWJvbCBuYW1lZCBJbml0aWFsaXplRHJpdmVyLiBUaGVyZWZvcmUsIHRoaXMgc291cmNlIGxl dmVsDQo+IGRlYnVnDQo+ID4gPiBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyBhbGwgbW9kdWxlcyB0 byBiZSBsaW5rZWQgaW4gYSBub24tUEkgc3BlYw0KPiA+ID4gZGVmaW5lZCBtYW5uZXIuIFN1cHBv cnQgZm9yIGFkZGluZyB0aGUgSW5pdGlhbGl6ZURyaXZlciBzeW1ib2wgd2FzDQo+ID4gPiByZW1v dmVkIGluIEVtdWxhdG9yUGtnLCB3aGljaCBicm9rZSBzb3VyY2UgbGV2ZWwgZGVidWdnaW5nLg0K PiA+ID4NCj4gPiA+IFRvIGZpeCB0aGlzLCB0aGUgc291cmNlIGxldmVsIGRlYnVnZ2luZyBpbXBs ZW1lbnRhdGlvbiBoYXMgYmVlbg0KPiA+ID4gbW9kaWZpZWQgdG8gdXNlIHRoZSBQRS9DT0ZGIGVu dHJ5IHBvaW50IGRpcmVjdGx5LiBUaGlzIGJyaW5ncyB0aGUNCj4gPiA+IGltcGxlbWVudGF0aW9u IGludG8gY29tcGxpYW5jZSB3aXRoIHRoZSBQSSBzcGVjIGFuZCBzaG91bGQgd29yaw0KPiB3aXRo DQo+ID4gPiBhbnkgUEVJTS9EWEUgZHJpdmVyLg0KPiA+ID4gSW1wbGVtZW50aW5nIHRoaXMgcmVx dWlyZXMgcGFyc2luZyB0aGUgaW4tbWVtb3J5IGluc3RhbmNlIG9mIHRoZQ0KPiA+ID4gUEUvQ09G RiBpbWFnZSBjcmVhdGVkIGJ5IFdpbmRvd3MgdG8gZmluZCB0aGUgZW50cnlwb2ludCBhbmQgc2lu Y2UNCj4gPiA+IFBFSU1zL0RYRSBkcml2ZXJzIGFyZSBub3QgZ2FydW50ZWVkIHRvIGhhdmUgNEtC IGFsaWduZWQgc2VjdGlvbnMsDQo+IGl0DQo+ID4gPiBhbHNvIHJlcXVpcmVzIGV4cGxpY2l0IGNv bmZpZ3VyYXRpb24gb2YgdGhlIHBhZ2UgdGFibGUgdXNpbmcNCj4gPiA+IFZpcnR1YWxQcm90ZWN0 KCkuDQo+ID4gPg0KPiA+ID4gV2l0aCB0aGlzIGZpeCwgdGhlIGRlYnVnZ2luZyBleHBlcmllbmNl IGlzIG5vdyBzbyBnb29kIGl0IGlzDQo+ID4gPiB1bnByZWNlZGVudGVkIQ0KPiA+ID4gSW4gVmlz dWFsIFN0dWRpbyBDb2RlLCBhZGQgdGhlIGZvbGxvd2luZyB0byBsYXVuY2guanNvbjoNCj4gPiA+ DQo+ID4gPiB7DQo+ID4gPiAgICJ2ZXJzaW9uIjogIjAuMi4wIiwNCj4gPiA+ICAgImNvbmZpZ3Vy YXRpb25zIjogWw0KPiA+ID4gICAgIHsNCj4gPiA+ICAgICAgICJuYW1lIjogIkVtdWxhdG9yUGtn IExhdW5jaCIsDQo+ID4gPiAgICAgICAidHlwZSI6ICJjcHB2c2RiZyIsDQo+ID4gPiAgICAgICAi cmVxdWVzdCI6ICJsYXVuY2giLA0KPiA+ID4gICAgICAgInByb2dyYW0iOg0KPiA+ID4NCj4gPg0K PiAiJHt3b3Jrc3BhY2VGb2xkZXJ9LzxwYXRoX3RvX2J1aWxkPi9CdWlsZC9FbXVsYXRvclg2NC9E RUJVR188dG9vbF9jaGFpDQo+ID4gPiBuPi9YNjQvV2luSG9zdCIsDQo+ID4gPiAgICAgICAiYXJn cyI6IFtdLA0KPiA+ID4gICAgICAgInN0b3BBdEVudHJ5IjogZmFsc2UsDQo+ID4gPiAgICAgICAi Y3dkIjoNCj4gPiA+DQo+ID4NCj4gIiR7d29ya3NwYWNlRm9sZGVyfS88cGF0aF90b19idWlsZD4v QnVpbGQvRW11bGF0b3JYNjQvREVCVUdfPHRvb2xfY2hhaQ0KPiA+ID4gbj4vWDY0LyIsDQo+ID4g PiAgICAgICAiZW52aXJvbm1lbnQiOiBbXSwNCj4gPiA+ICAgICAgICJjb25zb2xlIjogZmFsc2Us DQo+ID4gPiAgICAgfQ0KPiA+ID4gICBdDQo+ID4gPiB9DQo+ID4gPg0KPiA+ID4gTWFrZSBtb2Rp ZmljYXRpb25zIHRvIHRoZSBhYm92ZSB0ZW1wbGF0ZSBhcyBuZXNzZXNhcnkgYW5kIGJ1aWxkDQo+ ID4gPiBFbXVsYXRvclBrZy4NCj4gPiA+IE5vdywganVzdCBhZGQgYnJlYWtwb2ludHMgZGlyZWN0 bHkgaW4gVmlzdWFsIFN0dWRpbyBDb2RlIHRoZSB3YXkNCj4geW91DQo+ID4gPiB3b3VsZCB3aXRo IGFueSBvdGhlciBzb2Z0d2FyZSBwcm9qZWN0LiBXaGVuIHlvdSBzdGFydCB0aGUNCj4gZGVidWdn ZXIsDQo+ID4gaXQNCj4gPiA+IHdpbGwgaGFsdCBhdCB0aGUgYnJlYWtwb2ludCBhdXRvbWF0aWNh bGx5IHdpdGhvdXQgYW55IGV4dHJhDQo+ID4gPiBjb25maWd1cmF0aW9uIHJlcXVpcmVkLg0KPiA+ ID4NCj4gPiA+IENjOiBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPg0KPiA+ID4gQ2M6IFJh eSBOaSA8cmF5Lm5pQGludGVsLmNvbT4NCj4gPiA+IENjOiBNaWNoYWVsIEQgS2lubmV5IDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+IENjOiBDaGFzZWwgQ2hpdSA8Y2hhc2VsLmNo aXVAaW50ZWwuY29tPg0KPiA+ID4gU2lnbmVkLW9mZi1ieTogTmF0ZSBEZVNpbW9uZSA8bmF0aGFu aWVsLmwuZGVzaW1vbmVAaW50ZWwuY29tPg0KPiA+ID4gLS0tDQo+ID4gPiAgRW11bGF0b3JQa2cv V2luL0hvc3QvV2luSG9zdC5jIHwgMjA2DQo+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysr LQ0KPiA+IC0tDQo+ID4gPiAtDQo+ID4gPiAgMSBmaWxlIGNoYW5nZWQsIDE4MiBpbnNlcnRpb25z KCspLCAyNCBkZWxldGlvbnMoLSkNCj4gPiA+DQo+ID4gPiBkaWZmIC0tZ2l0IGEvRW11bGF0b3JQ a2cvV2luL0hvc3QvV2luSG9zdC5jDQo+ID4gPiBiL0VtdWxhdG9yUGtnL1dpbi9Ib3N0L1dpbkhv c3QuYyBpbmRleCAxOTNhOTQ3ZmJkLi5lNDE0ZGE2YzU1DQo+IDEwMDY0NA0KPiA+ID4gLS0tIGEv RW11bGF0b3JQa2cvV2luL0hvc3QvV2luSG9zdC5jDQo+ID4gPiArKysgYi9FbXVsYXRvclBrZy9X aW4vSG9zdC9XaW5Ib3N0LmMNCj4gPiA+IEBAIC04LDcgKzgsNyBAQA0KPiA+ID4gICAgVGhpcyBj b2RlIHByb2R1Y2VzIDEyOCBLIG9mIHRlbXBvcmFyeSBtZW1vcnkgZm9yIHRoZSBTRUMgc3RhY2sN Cj4gYnkNCj4gPiA+IGRpcmVjdGx5DQo+ID4gPiAgICBhbGxvY2F0ZSBtZW1vcnkgc3BhY2Ugd2l0 aCBSZWFkV3JpdGUgYW5kIEV4ZWN1dGUgYXR0cmlidXRlLg0KPiA+ID4NCj4gPiA+IC1Db3B5cmln aHQgKGMpIDIwMDYgLSAyMDIyLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ID4g cmVzZXJ2ZWQuPEJSPg0KPiA+ID4gK0NvcHlyaWdodCAoYykgMjAwNiAtIDIwMjMsIEludGVsIENv cnBvcmF0aW9uLiBBbGwgcmlnaHRzDQo+ID4gPiByZXNlcnZlZC48QlI+DQo+ID4gPiAgKEMpIENv cHlyaWdodCAyMDE2LTIwMjAgSGV3bGV0dCBQYWNrYXJkIEVudGVycHJpc2UgRGV2ZWxvcG1lbnQN Cj4gPiBMUDxCUj4NCj4gPiA+ICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudCAgKiovIEBAIC05NzcsNw0KPiArOTc3LDcNCj4gPiBAQA0KPiA+ID4gQWRkTW9kSGFu ZGxlICgNCj4gPiA+ICAgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IG1QZGJOYW1lTW9kSGFuZGxl QXJyYXlTaXplOyBJbmRleCsrLA0KPiA+ID4gQXJyYXkrKykgew0KPiA+ID4gICAgICBpZiAoQXJy YXktPlBkYlBvaW50ZXIgPT0gTlVMTCkgew0KPiA+ID4gICAgICAgIC8vDQo+ID4gPiAtICAgICAg Ly8gTWFrZSBhIGNvcHkgb2YgdGhlIHN0aXJuZyBhbmQgc3RvcmUgdGhlIE1vZEhhbmRsZQ0KPiA+ ID4gKyAgICAgIC8vIE1ha2UgYSBjb3B5IG9mIHRoZSBzdHJpbmcgYW5kIHN0b3JlIHRoZSBNb2RI YW5kbGUNCj4gPiA+ICAgICAgICAvLw0KPiA+ID4gICAgICAgIEhhbmRsZSAgICAgICAgICAgID0g R2V0UHJvY2Vzc0hlYXAgKCk7DQo+ID4gPiAgICAgICAgU2l6ZSAgICAgICAgICAgICAgPSBBc2Np aVN0ckxlbiAoSW1hZ2VDb250ZXh0LT5QZGJQb2ludGVyKQ0KPiArDQo+ID4gMTsNCj4gPiA+IEBA IC0xMDU2LDI2ICsxMDU2LDQ1IEBAIFJlbW92ZU1vZEhhbmRsZSAoDQo+ID4gPiAgICByZXR1cm4g TlVMTDsNCj4gPiA+ICB9DQo+ID4gPg0KPiA+ID4gK3R5cGVkZWYgc3RydWN0IHsNCj4gPiA+ICsg IFVJTlROICAgQmFzZTsNCj4gPiA+ICsgIFVJTlQzMiAgU2l6ZTsNCj4gPiA+ICsgIFVJTlQzMiAg RmxhZ3M7DQo+ID4gPiArfSBJTUFHRV9TRUNUSU9OX0RBVEE7DQo+ID4gPiArDQo+ID4gPiAgVk9J RA0KPiA+ID4gIEVGSUFQSQ0KPiA+ID4gIFBlQ29mZkxvYWRlclJlbG9jYXRlSW1hZ2VFeHRyYUFj dGlvbiAoDQo+ID4gPiAgICBJTiBPVVQgUEVfQ09GRl9MT0FERVJfSU1BR0VfQ09OVEVYVCAgKklt YWdlQ29udGV4dA0KPiA+ID4gICAgKQ0KPiA+ID4gIHsNCj4gPiA+IC0gIEVGSV9TVEFUVVMgIFN0 YXR1czsNCj4gPiA+IC0gIFZPSUQgICAgICAgICpEbGxFbnRyeVBvaW50Ow0KPiA+ID4gLSAgQ0hB UjE2ICAgICAgKkRsbEZpbGVOYW1lOw0KPiA+ID4gLSAgSE1PRFVMRSAgICAgTGlicmFyeTsNCj4g PiA+IC0gIFVJTlROICAgICAgIEluZGV4Ow0KPiA+ID4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAg ICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ID4gKyAgVk9JRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKkRsbEVudHJ5UG9pbnQ7DQo+ID4gPiArICBDSEFSMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqRGxsRmlsZU5hbWU7DQo+ID4gPiArICBITU9EVUxFICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5Ow0KPiA+ID4gKyAgVUlOVE4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4gPiArICBQRV9DT0ZGX0xPQURFUl9JTUFHRV9D T05URVhUICAgICAgICBQZUNvZmZJbWFnZUNvbnRleHQ7DQo+ID4gPiArICBFRklfSU1BR0VfT1BU SU9OQUxfSEVBREVSX1BUUl9VTklPTiBIZHI7DQo+ID4gPiArICBFRklfSU1BR0VfU0VDVElPTl9I RUFERVIgICAgICAgICAgICAqRmlyc3RTZWN0aW9uOw0KPiA+ID4gKyAgRUZJX0lNQUdFX1NFQ1RJ T05fSEVBREVSICAgICAgICAgICAgKlNlY3Rpb247DQo+ID4gPiArICBJTUFHRV9TRUNUSU9OX0RB VEEgICAgICAgICAgICAgICAgICAqU2VjdGlvbkRhdGE7DQo+ID4gPiArICBVSU5UTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZlNlY3Rpb25zOw0KPiA+ID4gKyAgVUlOVE4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmFzZTsNCj4gPiA+ICsgIFVJTlROICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIEVuZDsNCj4gPiA+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFJlZ2lvbkJhc2U7DQo+ID4gPiArICBVSU5UTiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZWdpb25TaXplOw0KPiA+ID4gKyAgVUlOVDMyICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgRmxhZ3M7DQo+ID4gPiArICBEV09SRCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBOZXdQcm90ZWN0aW9uOw0KPiA+ID4gKyAgRFdPUkQgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgT2xkUHJvdGVjdGlvbjsNCj4gPiA+DQo+ID4gPiAgICBBU1NF UlQgKEltYWdlQ29udGV4dCAhPSBOVUxMKTsNCj4gPiA+ICAgIC8vDQo+ID4gPiAtICAvLyBJZiB3 ZSBsb2FkIG91ciBvd24gUEUgQ09GRiBpbWFnZXMgdGhlIFdpbmRvd3MgZGVidWdnZXIgY2FuDQo+ IG5vdA0KPiA+ID4gc291cmNlDQo+ID4gPiAtICAvLyAgbGV2ZWwgZGVidWcgb3VyIGNvZGUuIElm IGEgdmFsaWQgUERCIHBvaW50ZXIgZXhpc3RzIHVzZSBpdA0KPiB0bw0KPiA+ID4gbG9hZA0KPiA+ ID4gLSAgLy8gIHRoZSAqLmRsbCBmaWxlIGFzIGEgbGlicmFyeSB1c2luZyBXaW5kb3dzKiBBUElz LiBUaGlzDQo+IGFsbG93cw0KPiA+ID4gLSAgLy8gIHNvdXJjZSBsZXZlbCBkZWJ1Zy4gVGhlIGlt YWdlIGlzIHN0aWxsIGxvYWRlZCBhbmQgcmVsb2NhdGVkDQo+ID4gPiAtICAvLyAgaW4gdGhlIEZy YW1ld29yayBtZW1vcnkgc3BhY2UgbGlrZSBvbiBhIHJlYWwgc3lzdGVtIChieSB0aGUNCj4gPiA+ IGNvZGUgYWJvdmUpLA0KPiA+ID4gLSAgLy8gIGJ1dCB0aGUgZW50cnkgcG9pbnQgcG9pbnRzIGlu dG8gdGhlIERMTCBsb2FkZWQgYnkgdGhlIGNvZGUNCj4gPiA+IGJlbG93Lg0KPiA+ID4gKyAgLy8g SWYgd2UgbG9hZCBvdXIgb3duIFBFL0NPRkYgaW1hZ2VzIHRoZSBXaW5kb3dzIGRlYnVnZ2VyIGNh bg0KPiBub3QNCj4gPiA+IHNvdXJjZQ0KPiA+ID4gKyAgLy8gbGV2ZWwgZGVidWcgb3VyIGNvZGUu IElmIGEgdmFsaWQgUERCIHBvaW50ZXIgZXhpc3RzIHVzZSBpdA0KPiB0bw0KPiA+ID4gbG9hZA0K PiA+ID4gKyAgLy8gdGhlICouZGxsIGZpbGUgYXMgYSBsaWJyYXJ5IHVzaW5nIFdpbmRvd3MqIEFQ SXMuIFRoaXMgYWxsb3dzDQo+ID4gLy8NCj4gPiA+ICsgc291cmNlIGxldmVsIGRlYnVnLiBUaGUg aW1hZ2UgaXMgc3RpbGwgbG9hZGVkIGFuZCByZWxvY2F0ZWQgIC8vDQo+IGluDQo+ID4gPiArIHRo ZSBGcmFtZXdvcmsgbWVtb3J5IHNwYWNlIGxpa2Ugb24gYSByZWFsIHN5c3RlbSAoYnkgdGhlIGNv ZGUNCj4gPiA+IGFib3ZlKSwNCj4gPiA+ICsgIC8vIGJ1dCB0aGUgZW50cnkgcG9pbnQgcG9pbnRz IGludG8gdGhlIERMTCBsb2FkZWQgYnkgdGhlIGNvZGUNCj4gPiA+IGJlbG93Lg0KPiA+ID4gICAg Ly8NCj4gPiA+DQo+ID4gPiAgICBEbGxFbnRyeVBvaW50ID0gTlVMTDsNCj4gPiA+IEBAIC0xMTA2 LDI3ICsxMTI1LDE2NiBAQCBQZUNvZmZMb2FkZXJSZWxvY2F0ZUltYWdlRXh0cmFBY3Rpb24gKA0K PiA+ID4gICAgICB9DQo+ID4gPg0KPiA+ID4gICAgICAvLw0KPiA+ID4gLSAgICAvLyBSZXBsYWNl IC5QREIgd2l0aCAuRExMIG9uIHRoZSBmaWxlbmFtZQ0KPiA+ID4gKyAgICAvLyBSZXBsYWNlIC5Q REIgd2l0aCAuRExMIGluIHRoZSBmaWxlbmFtZQ0KPiA+ID4gICAgICAvLw0KPiA+ID4gICAgICBE bGxGaWxlTmFtZVtJbmRleCAtIDNdID0gJ0QnOw0KPiA+ID4gICAgICBEbGxGaWxlTmFtZVtJbmRl eCAtIDJdID0gJ0wnOw0KPiA+ID4gICAgICBEbGxGaWxlTmFtZVtJbmRleCAtIDFdID0gJ0wnOw0K PiA+ID4NCj4gPiA+ICAgICAgLy8NCj4gPiA+IC0gICAgLy8gTG9hZCB0aGUgLkRMTCBmaWxlIGlu dG8gdGhlIHVzZXIgcHJvY2VzcydzIGFkZHJlc3Mgc3BhY2UNCj4gZm9yDQo+ID4gPiBzb3VyY2UN Cj4gPiA+IC0gICAgLy8gbGV2ZWwgZGVidWcNCj4gPiA+ICsgICAgLy8gTG9hZCB0aGUgLkRMTCBm aWxlIGludG8gdGhlIHByb2Nlc3MncyBhZGRyZXNzIHNwYWNlIGZvcg0KPiA+IHNvdXJjZQ0KPiA+ ID4gbGV2ZWwNCj4gPiA+ICsgICAgLy8gZGVidWcuDQo+ID4gPiArICAgIC8vDQo+ID4gPiArICAg IC8vIEVGSSBtb2R1bGVzIHVzZSB0aGUgUEUzMiBlbnRyeSBwb2ludCBmb3IgYSBkaWZmZXJlbnQN Cj4gcHVycG9zZQ0KPiA+ID4gdGhhbg0KPiA+ID4gKyAgICAvLyBXaW5kb3dzLiBGb3IgV2luZG93 cyBETExzLCB0aGUgUEUgZW50cnkgcG9pbnQgaXMgdXNlZCBmb3INCj4gPiB0aGUNCj4gPiA+IERs bE1haW4oKQ0KPiA+ID4gKyAgICAvLyBmdW5jdGlvbi4gRGxsTWFpbigpIGhhcyBhIHZlcnkgc3Bl Y2lmaWMgcHVycG9zZTsgaXQNCj4gPiA+IGluaXRpYWxpemVzIHJ1bnRpbWUNCj4gPiA+ICsgICAg Ly8gbGlicmFyaWVzLCBpbnN0YW5jZSBkYXRhLCBhbmQgdGhyZWFkIGxvY2FsIHN0b3JhZ2UuDQo+ ID4gPiBMb2FkTGlicmFyeSgpLw0KPiA+ID4gKyAgICAvLyBMb2FkTGlicmFyeUV4KCkgd2lsbCBy dW4gdGhlIFBFMzIgZW50cnkgcG9pbnQgYW5kIGFzc3VtZQ0KPiBpdA0KPiA+IHRvDQo+ID4gPiBi ZSBhDQo+ID4gPiArICAgIC8vIERsbE1haW4oKSBpbXBsZW1lbnRhdGlvbiBieSBkZWZhdWx0LiBC eSBwYXNzaW5nIHRoZQ0KPiA+ID4gKyAgICAvLyBET05UX1JFU09MVkVfRExMX1JFRkVSRU5DRVMg YXJndW1lbnQgdG8gTG9hZExpYnJhcnlFeCgpLA0KPiB0aGUNCj4gPiA+IGV4ZWN1dGlvbg0KPiA+ ID4gKyAgICAvLyBvZiB0aGUgZW50cnkgcG9pbnQgYXMgYSBEbGxNYWluKCkgZnVuY3Rpb24gd2ls bCBiZQ0KPiA+IHN1cHByZXNzZWQuDQo+ID4gPiBUaGlzDQo+ID4gPiArICAgIC8vIGFsc28gcHJl dmVudHMgb3RoZXIgbW9kdWxlcyB0aGF0IGFyZSByZWZlcmVuY2VkIGJ5IHRoZSBETEwNCj4gPiA+ IGZyb20gYmVpbmcNCj4gPiA+ICsgICAgLy8gbG9hZGVkLiBXZSB1c2UgTG9hZExpYnJhcnlFeCgp IHRvIGNyZWF0ZSBhIGNvcHkgb2YgdGhlDQo+IFBFMzINCj4gPiA+ICsgICAgLy8gaW1hZ2UgdGhh dCB0aGUgT1MgKGFuZCB0aGVyZWZvcmUgdGhlIGRlYnVnZ2VyKSBpcyBhd2FyZQ0KPiBvZi4NCj4g PiA+ICsgICAgLy8gU291cmNlIGxldmVsIGRlYnVnZ2luZyBpcyB0aGUgb25seSByZWFzb24gdG8g ZG8gdGhpcy4NCj4gPiA+ICAgICAgLy8NCj4gPiA+ICAgICAgTGlicmFyeSA9IExvYWRMaWJyYXJ5 RXggKERsbEZpbGVOYW1lLCBOVUxMLA0KPiA+ID4gRE9OVF9SRVNPTFZFX0RMTF9SRUZFUkVOQ0VT KTsNCj4gPiA+ICAgICAgaWYgKExpYnJhcnkgIT0gTlVMTCkgew0KPiA+ID4gICAgICAgIC8vDQo+ ID4gPiAtICAgICAgLy8gSW5pdGlhbGl6ZURyaXZlciBpcyB0aGUgZW50cnkgcG9pbnQgd2UgcHV0 IGluIGFsbCBvdXINCj4gRUZJDQo+ID4gPiBETEwncy4gVGhlDQo+ID4gPiAtICAgICAgLy8gRE9O VF9SRVNPTFZFX0RMTF9SRUZFUkVOQ0VTIGFyZ3VtZW50IHRvIExvYWRMSWJyYXJ5RXgoKQ0KPiA+ ID4gc3VwcHJlc3NlcyB0aGUNCj4gPiA+IC0gICAgICAvLyBub3JtYWwgRExMIGVudHJ5IHBvaW50 IG9mIERsbE1haW4sIGFuZCBwcmV2ZW50cyBvdGhlcg0KPiA+ID4gbW9kdWxlcyB0aGF0IGFyZQ0K PiA+ID4gLSAgICAgIC8vIHJlZmVyZW5jZWQgaW4gc2lkZSB0aGUgRGxsRmlsZU5hbWUgZnJvbSBi ZWluZyBsb2FkZWQuDQo+ID4gVGhlcmUNCj4gPiA+IGlzIG5vIGVycm9yDQo+ID4gPiAtICAgICAg Ly8gY2hlY2tpbmcgYXMgdGhlIHdlIGNhbiBwb2ludCB0byB0aGUgUEUzMiBpbWFnZSBsb2FkZWQg YnkNCj4gPiA+IFRpYW5vLiBUaGlzDQo+ID4gPiAtICAgICAgLy8gc3RlcCBpcyBvbmx5IG5lZWRl ZCBmb3Igc291cmNlIGxldmVsIGRlYnVnZ2luZw0KPiA+ID4gKyAgICAgIC8vIFBhcnNlIHRoZSBQ RTMyIGltYWdlIGxvYWRlZCBieSB0aGUgT1MgYW5kIGZpbmQgdGhlIGVudHJ5DQo+ID4gPiBwb2lu dA0KPiA+ID4gICAgICAgIC8vDQo+ID4gPiAtICAgICAgRGxsRW50cnlQb2ludCA9IChWT0lEICop KFVJTlROKUdldFByb2NBZGRyZXNzIChMaWJyYXJ5LA0KPiA+ID4gIkluaXRpYWxpemVEcml2ZXIi KTsNCj4gPiA+ICsgICAgICBaZXJvTWVtICgmUGVDb2ZmSW1hZ2VDb250ZXh0LCBzaXplb2YgKFBl Q29mZkltYWdlQ29udGV4dCkpOw0KPiA+ID4gKyAgICAgIFBlQ29mZkltYWdlQ29udGV4dC5IYW5k bGUgPSBMaWJyYXJ5Ow0KPiA+ID4gKyAgICAgIFBlQ29mZkltYWdlQ29udGV4dC5JbWFnZVJlYWQg PQ0KPiA+IFBlQ29mZkxvYWRlckltYWdlUmVhZEZyb21NZW1vcnk7DQo+ID4gPiArICAgICAgU3Rh dHVzID0gUGVDb2ZmTG9hZGVyR2V0SW1hZ2VJbmZvICgmUGVDb2ZmSW1hZ2VDb250ZXh0KTsNCj4g PiA+ICsgICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8IChQZUNvZmZJbWFnZUNvbnRleHQu SW1hZ2VFcnJvciAhPQ0KPiA+ID4gSU1BR0VfRVJST1JfU1VDQ0VTUykpIHsNCj4gPiA+ICsgICAg ICAgIFNlY1ByaW50ICgiRExMIGlzIG5vdCBhIHZhbGlkIFBFL0NPRkYgaW1hZ2UuXG5cciIpOw0K PiA+ID4gKyAgICAgICAgRnJlZUxpYnJhcnkgKExpYnJhcnkpOw0KPiA+ID4gKyAgICAgICAgTGli cmFyeSA9IE5VTEw7DQo+ID4gPiArICAgICAgfSBlbHNlIHsNCj4gPiA+ICsgICAgICAgIEhkci5Q ZTMyID0gKEVGSV9JTUFHRV9OVF9IRUFERVJTMzIgKikoKFVJTlROKUxpYnJhcnkgKw0KPiA+ID4g KFVJTlROKVBlQ29mZkltYWdlQ29udGV4dC5QZUNvZmZIZWFkZXJPZmZzZXQpOw0KPiA+ID4gKyAg ICAgICAgaWYgKEhkci5QZTMyLT5PcHRpb25hbEhlYWRlci5NYWdpYyA9PQ0KPiA+ID4gRUZJX0lN QUdFX05UX09QVElPTkFMX0hEUjMyX01BR0lDKSB7DQo+ID4gPiArICAgICAgICAgIC8vDQo+ID4g PiArICAgICAgICAgIC8vIFVzZSBQRTMyIG9mZnNldA0KPiA+ID4gKyAgICAgICAgICAvLw0KPiA+ ID4gKyAgICAgICAgICBEbGxFbnRyeVBvaW50ID0gKFZPSUQgKikgKChVSU5UTilMaWJyYXJ5ICsN Cj4gPiAoVUlOVE4pSGRyLlBlMzItDQo+ID4gPiA+T3B0aW9uYWxIZWFkZXIuQWRkcmVzc09mRW50 cnlQb2ludCk7DQo+ID4gPiArICAgICAgICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgICAgICAvLw0K PiA+ID4gKyAgICAgICAgICAvLyBVc2UgUEUzMisgb2Zmc2V0DQo+ID4gPiArICAgICAgICAgIC8v DQo+ID4gPiArICAgICAgICAgIERsbEVudHJ5UG9pbnQgPSAoVk9JRCAqKSAoKFVJTlROKUxpYnJh cnkgKw0KPiA+ID4gKFVJTlROKUhkci5QZTMyUGx1cy0+T3B0aW9uYWxIZWFkZXIuQWRkcmVzc09m RW50cnlQb2ludCk7DQo+ID4gPiArICAgICAgICB9DQo+ID4gPiArICAgICAgICAvLw0KPiA+ID4g KyAgICAgICAgLy8gTm93IHdlIG5lZWQgdG8gY29uZmlndXJlIG1lbW9yeSBhY2Nlc3MgZm9yIHRo ZSBjb3B5IG9mDQo+ID4gdGhlDQo+ID4gPiBQRTMyIGltYWdlDQo+ID4gPiArICAgICAgICAvLyBs b2FkZWQgYnkgdGhlIE9TLg0KPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ICsgICAgICAgIC8vIE1v c3QgV2luZG93cyBETExzIGFyZSBsaW5rZWQgd2l0aCBzZWN0aW9ucyA0S0IgYWxpZ25lZA0KPiA+ IGJ1dA0KPiA+ID4gRUZJDQo+ID4gPiArICAgICAgICAvLyBtb2R1bGVzIGFyZSBub3QgdG8gcmVk dWNlIHNpemUuIEJlY2F1c2Ugb2YgdGhpcyB3ZQ0KPiBuZWVkDQo+ID4gdG8NCj4gPiA+IGNvbXB1 dGUNCj4gPiA+ICsgICAgICAgIC8vIHRoZSB1bmlvbiBvZiBtZW1vcnkgYWNjZXNzIGF0dHJpYnV0 ZXMgYW5kIGV4cGxpY2l0bHkNCj4gPiA+IGNvbmZpZ3VyZQ0KPiA+ID4gKyAgICAgICAgLy8gZWFj aCBwYWdlLg0KPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ICsgICAgICAgIEZpcnN0U2VjdGlvbiA9 IChFRklfSU1BR0VfU0VDVElPTl9IRUFERVIgKikoDQo+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAoVUlOVE4pTGlicmFyeSArDQo+ID4gPiArDQo+ID4g PiBQZUNvZmZJbWFnZUNvbnRleHQuUGVDb2ZmSGVhZGVyT2Zmc2V0ICsNCj4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZiAoVUlOVDMyKSArDQo+ ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YN Cj4gPiA+IChFRklfSU1BR0VfRklMRV9IRUFERVIpICsNCj4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhkci5QZTMyLQ0KPiA+ID4gPkZpbGVIZWFkZXIu U2l6ZU9mT3B0aW9uYWxIZWFkZXINCj4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICk7DQo+ID4gPiArICAgICAgICBOdW1iZXJPZlNlY3Rpb25zID0gKFVJ TlROKShIZHIuUGUzMi0NCj4gPiA+ID5GaWxlSGVhZGVyLk51bWJlck9mU2VjdGlvbnMpOw0KPiA+ ID4gKyAgICAgICAgU2VjdGlvbiA9IEZpcnN0U2VjdGlvbjsNCj4gPiA+ICsgICAgICAgIFNlY3Rp b25EYXRhID0gbWFsbG9jIChOdW1iZXJPZlNlY3Rpb25zICogc2l6ZW9mDQo+ID4gPiAoSU1BR0Vf U0VDVElPTl9EQVRBKSk7DQo+ID4gPiArICAgICAgICBpZiAoU2VjdGlvbkRhdGEgPT0gTlVMTCkg ew0KPiA+ID4gKyAgICAgICAgICBGcmVlTGlicmFyeSAoTGlicmFyeSk7DQo+ID4gPiArICAgICAg ICAgIExpYnJhcnkgPSBOVUxMOw0KPiA+ID4gKyAgICAgICAgICBEbGxFbnRyeVBvaW50ID0gTlVM TDsNCj4gPiA+ICsgICAgICAgIH0NCj4gPiA+ICsgICAgICAgIFplcm9NZW0gKFNlY3Rpb25EYXRh LCBOdW1iZXJPZlNlY3Rpb25zICogc2l6ZW9mDQo+ID4gPiAoSU1BR0VfU0VDVElPTl9EQVRBKSk7 DQo+ID4gPiArICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgLy8gRXh0cmFjdCB0aGUgc2VjdGlv biBkYXRhIGZyb20gdGhlIFBFMzIgaW1hZ2UNCj4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiArICAg ICAgICBmb3IgKEluZGV4ID0gMDsgSW5kZXggPCBOdW1iZXJPZlNlY3Rpb25zOyBJbmRleCsrKSB7 DQo+ID4gPiArICAgICAgICAgIFNlY3Rpb25EYXRhW0luZGV4XS5CYXNlID0gKFVJTlROKUxpYnJh cnkgKyBTZWN0aW9uLQ0KPiA+ID4gPlZpcnR1YWxBZGRyZXNzOw0KPiA+ID4gKyAgICAgICAgICBT ZWN0aW9uRGF0YVtJbmRleF0uU2l6ZSA9IFNlY3Rpb24tPk1pc2MuVmlydHVhbFNpemU7DQo+ID4g PiArICAgICAgICAgIGlmIChTZWN0aW9uRGF0YVtJbmRleF0uU2l6ZSA9PSAwKSB7DQo+ID4gPiAr ICAgICAgICAgICAgU2VjdGlvbkRhdGFbSW5kZXhdLlNpemUgPSBTZWN0aW9uLT5TaXplT2ZSYXdE YXRhOw0KPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiArICAgICAgICAgIFNlY3Rpb25EYXRhW0lu ZGV4XS5GbGFncyA9IChTZWN0aW9uLT5DaGFyYWN0ZXJpc3RpY3MgJg0KPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEVGSV9JTUFHRV9TQ05fTUVNX0VYRUNVVEUN Cj4gfA0KPiA+ID4gRUZJX0lNQUdFX1NDTl9NRU1fV1JJVEUpKTsNCj4gPiA+ICsgICAgICAgICAg U2VjdGlvbiArPSAxOw0KPiA+ID4gKyAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgLy8NCj4gPiA+ ICsgICAgICAgIC8vIExvb3Agb3ZlciBldmVyeSBEV09SRCBpbiBtZW1vcnkgYW5kIGNvbXB1dGUg dGhlIHVuaW9uDQo+IG9mDQo+ID4gPiB0aGUgbWVtb3J5DQo+ID4gPiArICAgICAgICAvLyBhY2Nl c3MgYml0cy4NCj4gPiA+ICsgICAgICAgIC8vDQo+ID4gPiArICAgICAgICBFbmQgPSAoVUlOVE4p TGlicmFyeSArDQo+IChVSU5UTilQZUNvZmZJbWFnZUNvbnRleHQuSW1hZ2VTaXplOw0KPiA+ID4g KyAgICAgICAgUmVnaW9uQmFzZSA9IChVSU5UTilMaWJyYXJ5Ow0KPiA+ID4gKyAgICAgICAgUmVn aW9uU2l6ZSA9IDA7DQo+ID4gPiArICAgICAgICBGbGFncyA9IDA7DQo+ID4gPiArICAgICAgICBm b3IgKEJhc2UgPSAoVUlOVE4pTGlicmFyeSArIHNpemVvZiAoVUlOVDMyKTsgQmFzZSA8IEVuZDsN Cj4gPiA+IEJhc2UgKz0gc2l6ZW9mIChVSU5UMzIpKSB7DQo+ID4gPiArICAgICAgICAgIGZvciAo SW5kZXggPSAwOyBJbmRleCA8IE51bWJlck9mU2VjdGlvbnM7IEluZGV4KyspIHsNCj4gPiA+ICsg ICAgICAgICAgICBpZiAoU2VjdGlvbkRhdGFbSW5kZXhdLkJhc2UgPD0gQmFzZSAmJg0KPiA+ID4g KyAgICAgICAgICAgICAgICAoU2VjdGlvbkRhdGFbSW5kZXhdLkJhc2UgKw0KPiBTZWN0aW9uRGF0 YVtJbmRleF0uU2l6ZSkNCj4gPiA+DQo+ID4gPiBCYXNlKSB7DQo+ID4gPiArICAgICAgICAgICAg ICBGbGFncyB8PSBTZWN0aW9uRGF0YVtJbmRleF0uRmxhZ3M7DQo+ID4gPiArICAgICAgICAgICAg fQ0KPiA+ID4gKyAgICAgICAgICB9DQo+ID4gPiArICAgICAgICAgIC8vDQo+ID4gPiArICAgICAg ICAgIC8vIFdoZW4gYSBuZXcgcGFnZSBpcyByZWFjaGVkIGNvbmZpZ3VyZSB0aGUgbWVtb3J5DQo+ IGFjY2Vzcw0KPiA+ID4gZm9yIHRoZQ0KPiA+ID4gKyAgICAgICAgICAvLyBwcmV2aW91cyBwYWdl Lg0KPiA+ID4gKyAgICAgICAgICAvLw0KPiA+ID4gKyAgICAgICAgICBpZiAoQmFzZSAlIFNJWkVf NEtCID09IDApIHsNCj4gPiA+ICsgICAgICAgICAgICBSZWdpb25TaXplICs9IFNJWkVfNEtCOw0K PiA+ID4gKyAgICAgICAgICAgIGlmICgoRmxhZ3MgJiBFRklfSU1BR0VfU0NOX01FTV9XUklURSkg PT0NCj4gPiA+IEVGSV9JTUFHRV9TQ05fTUVNX1dSSVRFKSB7DQo+ID4gPiArICAgICAgICAgICAg ICBpZiAoKEZsYWdzICYgRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSkgPT0NCj4gPiA+IEVGSV9J TUFHRV9TQ05fTUVNX0VYRUNVVEUpIHsNCj4gPiA+ICsgICAgICAgICAgICAgICAgTmV3UHJvdGVj dGlvbiA9IFBBR0VfRVhFQ1VURV9SRUFEV1JJVEU7DQo+ID4gPiArICAgICAgICAgICAgICB9IGVs c2Ugew0KPiA+ID4gKyAgICAgICAgICAgICAgICBOZXdQcm90ZWN0aW9uID0gUEFHRV9SRUFEV1JJ VEU7DQo+ID4gPiArICAgICAgICAgICAgICB9DQo+ID4gPiArICAgICAgICAgICAgfSBlbHNlIHsN Cj4gPiA+ICsgICAgICAgICAgICAgIGlmICgoRmxhZ3MgJiBFRklfSU1BR0VfU0NOX01FTV9FWEVD VVRFKSA9PQ0KPiA+ID4gRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSkgew0KPiA+ID4gKyAgICAg ICAgICAgICAgICBOZXdQcm90ZWN0aW9uID0gUEFHRV9FWEVDVVRFX1JFQUQ7DQo+ID4gPiArICAg ICAgICAgICAgICB9IGVsc2Ugew0KPiA+ID4gKyAgICAgICAgICAgICAgICBOZXdQcm90ZWN0aW9u ID0gUEFHRV9SRUFET05MWTsNCj4gPiA+ICsgICAgICAgICAgICAgIH0NCj4gPiA+ICsgICAgICAg ICAgICB9DQo+ID4gPiArICAgICAgICAgICAgaWYgKCFWaXJ0dWFsUHJvdGVjdCAoKExQVk9JRClS ZWdpb25CYXNlLCAoU0laRV9UKQ0KPiA+ID4gUmVnaW9uU2l6ZSwgTmV3UHJvdGVjdGlvbiwgJk9s ZFByb3RlY3Rpb24pKSB7DQo+ID4gPiArICAgICAgICAgICAgICBTZWNQcmludCAoIlNldHRpbmcg UEUzMiBTZWN0aW9uIEFjY2Vzcw0KPiBGYWlsZWRcblxyIik7DQo+ID4gPiArICAgICAgICAgICAg ICBGcmVlTGlicmFyeSAoTGlicmFyeSk7DQo+ID4gPiArICAgICAgICAgICAgICBmcmVlIChTZWN0 aW9uRGF0YSk7DQo+ID4gPiArICAgICAgICAgICAgICBMaWJyYXJ5ID0gTlVMTDsNCj4gPiA+ICsg ICAgICAgICAgICAgIERsbEVudHJ5UG9pbnQgPSBOVUxMOw0KPiA+ID4gKyAgICAgICAgICAgICAg YnJlYWs7DQo+ID4gPiArICAgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgICAgIEZsYWdzID0g MDsNCj4gPiA+ICsgICAgICAgICAgICBSZWdpb25CYXNlID0gQmFzZTsNCj4gPiA+ICsgICAgICAg ICAgICBSZWdpb25TaXplID0gMDsNCj4gPiA+ICsgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAg fQ0KPiA+ID4gKyAgICAgICAgZnJlZSAoU2VjdGlvbkRhdGEpOw0KPiA+ID4gKyAgICAgICAgLy8N Cj4gPiA+ICsgICAgICAgIC8vIENvbmZpZ3VyZSB0aGUgbGFzdCBwYXJ0aWFsIHBhZ2UNCj4gPiA+ ICsgICAgICAgIC8vDQo+ID4gPiArICAgICAgICBpZiAoTGlicmFyeSAhPSBOVUxMICYmIChFbmQg LSBSZWdpb25CYXNlKSA+IDApIHsNCj4gPiA+ICsgICAgICAgICAgaWYgKChGbGFncyAmIEVGSV9J TUFHRV9TQ05fTUVNX1dSSVRFKSA9PQ0KPiA+ID4gRUZJX0lNQUdFX1NDTl9NRU1fV1JJVEUpIHsN Cj4gPiA+ICsgICAgICAgICAgICBpZiAoKEZsYWdzICYgRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VU RSkgPT0NCj4gPiA+IEVGSV9JTUFHRV9TQ05fTUVNX0VYRUNVVEUpIHsNCj4gPiA+ICsgICAgICAg ICAgICAgIE5ld1Byb3RlY3Rpb24gPSBQQUdFX0VYRUNVVEVfUkVBRFdSSVRFOw0KPiA+ID4gKyAg ICAgICAgICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgICAgICAgICBOZXdQcm90ZWN0aW9uID0g UEFHRV9SRUFEV1JJVEU7DQo+ID4gPiArICAgICAgICAgICAgfQ0KPiA+ID4gKyAgICAgICAgICB9 IGVsc2Ugew0KPiA+ID4gKyAgICAgICAgICAgIGlmICgoRmxhZ3MgJiBFRklfSU1BR0VfU0NOX01F TV9FWEVDVVRFKSA9PQ0KPiA+ID4gRUZJX0lNQUdFX1NDTl9NRU1fRVhFQ1VURSkgew0KPiA+ID4g KyAgICAgICAgICAgICAgTmV3UHJvdGVjdGlvbiA9IFBBR0VfRVhFQ1VURV9SRUFEOw0KPiA+ID4g KyAgICAgICAgICAgIH0gZWxzZSB7DQo+ID4gPiArICAgICAgICAgICAgICBOZXdQcm90ZWN0aW9u ID0gUEFHRV9SRUFET05MWTsNCj4gPiA+ICsgICAgICAgICAgICB9DQo+ID4gPiArICAgICAgICAg IH0NCj4gPiA+ICsgICAgICAgICAgaWYgKCFWaXJ0dWFsUHJvdGVjdCAoKExQVk9JRClSZWdpb25C YXNlLCAoU0laRV9UKSAoRW5kDQo+IC0NCj4gPiA+IFJlZ2lvbkJhc2UpLCBOZXdQcm90ZWN0aW9u LCAmT2xkUHJvdGVjdGlvbikpIHsNCj4gPiA+ICsgICAgICAgICAgICBTZWNQcmludCAoIlNldHRp bmcgUEUzMiBTZWN0aW9uIEFjY2VzcyBGYWlsZWRcblxyIik7DQo+ID4gPiArICAgICAgICAgICAg RnJlZUxpYnJhcnkgKExpYnJhcnkpOw0KPiA+ID4gKyAgICAgICAgICAgIExpYnJhcnkgPSBOVUxM Ow0KPiA+ID4gKyAgICAgICAgICAgIERsbEVudHJ5UG9pbnQgPSBOVUxMOw0KPiA+ID4gKyAgICAg ICAgICB9DQo+ID4gPiArICAgICAgICB9DQo+ID4gPiArICAgICAgfQ0KPiA+ID4gICAgICB9DQo+ ID4gPg0KPiA+ID4gICAgICBpZiAoKExpYnJhcnkgIT0gTlVMTCkgJiYgKERsbEVudHJ5UG9pbnQg IT0gTlVMTCkpIHsgQEAgLQ0KPiAxMTQyLDcNCj4gPiA+ICsxMzAwLDcgQEAgUGVDb2ZmTG9hZGVy UmVsb2NhdGVJbWFnZUV4dHJhQWN0aW9uICgNCj4gPiA+ICAgICAgICAgIC8vIFRoaXMgRExMIGlz IG5vdCBhbHJlYWR5IGxvYWRlZCwgc28gc291cmNlIGxldmVsDQo+ID4gZGVidWdnaW5nDQo+ID4g PiBpcyBzdXBwb3J0ZWQuDQo+ID4gPiAgICAgICAgICAvLw0KPiA+ID4gICAgICAgICAgSW1hZ2VD b250ZXh0LT5FbnRyeVBvaW50ID0NCj4gPiA+IChFRklfUEhZU0lDQUxfQUREUkVTUykoVUlOVE4p RGxsRW50cnlQb2ludDsNCj4gPiA+IC0gICAgICAgIFNlY1ByaW50ICgiTG9hZExpYnJhcnlFeCAo XG5cciAgJVMsXG5cciAgTlVMTCwNCj4gPiA+IERPTlRfUkVTT0xWRV9ETExfUkVGRVJFTkNFUylc blxyIiwgRGxsRmlsZU5hbWUpOw0KPiA+ID4gKyAgICAgICAgU2VjUHJpbnQgKCJMb2FkTGlicmFy eUV4IChcblxyICAlUyxcblxyICBOVUxMLA0KPiA+ID4gRE9OVF9SRVNPTFZFX0RMTF9SRUZFUkVO Q0VTKSBAIDB4JVhcblxyIiwgRGxsRmlsZU5hbWUsIChpbnQpDQo+IChVSU5UTikNCj4gPiA+IExp YnJhcnkpOw0KPiA+ID4gICAgICAgIH0NCj4gPiA+ICAgICAgfSBlbHNlIHsNCj4gPiA+ICAgICAg ICBTZWNQcmludCAoIldBUk5JTkc6IE5vIHNvdXJjZSBsZXZlbCBkZWJ1ZyAlUy4gXG5cciIsDQo+ ID4gPiBEbGxGaWxlTmFtZSk7DQo+ID4gPiAtLQ0KPiA+ID4gMi4zOS4yLndpbmRvd3MuMQ0KDQoN CgotPS09LT0tPS09LT0tPS09LT0tPS09LQpHcm91cHMuaW8gTGlua3M6IFlvdSByZWNlaXZlIGFs bCBtZXNzYWdlcyBzZW50IHRvIHRoaXMgZ3JvdXAuClZpZXcvUmVwbHkgT25saW5lICgjMTA5MDk2 KTogaHR0cHM6Ly9lZGsyLmdyb3Vwcy5pby9nL2RldmVsL21lc3NhZ2UvMTA5MDk2Ck11dGUgVGhp cyBUb3BpYzogaHR0cHM6Ly9ncm91cHMuaW8vbXQvMTAxNTMxNTYwLzc2ODYxNzYKR3JvdXAgT3du ZXI6IGRldmVsK293bmVyQGVkazIuZ3JvdXBzLmlvClVuc3Vic2NyaWJlOiBodHRwczovL2VkazIu Z3JvdXBzLmlvL2cvZGV2ZWwvbGVhdmUvMTIzNjcxMTEvNzY4NjE3Ni8xOTEzNDU2MjEyL3h5enp5 IFtyZWJlY2NhQG9wZW5mdy5pb10KLT0tPS09LT0tPS09LT0tPS09LT0tPS0KCg0K