From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mx.groups.io with SMTP id smtpd.web11.4422.1610517819656902557 for ; Tue, 12 Jan 2021 22:03:39 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=gogyUJtk; spf=pass (domain: intel.com, ip: 192.55.52.115, mailfrom: ray.ni@intel.com) IronPort-SDR: VdeJI+V6P17YC7gyM8mFj40ksA8cRLT52KRQoydxjZcLZzY+LyutiqEjnbPb9WDbgd9ZKW6vqa 8fsevcaRiMVA== X-IronPort-AV: E=McAfee;i="6000,8403,9862"; a="177379259" X-IronPort-AV: E=Sophos;i="5.79,343,1602572400"; d="scan'208";a="177379259" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Jan 2021 22:03:39 -0800 IronPort-SDR: acOhkippkltpp+nQPX66pjopeZKKGocc3InctAjgsT10BrcfJZJq1n3yZqdgNF0A6CtWSWr+bK UyBlZbZ5w/ng== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,343,1602572400"; d="scan'208";a="424442269" Received: from orsmsx606.amr.corp.intel.com ([10.22.229.19]) by orsmga001.jf.intel.com with ESMTP; 12 Jan 2021 22:03:39 -0800 Received: from orsmsx608.amr.corp.intel.com (10.22.229.21) by ORSMSX606.amr.corp.intel.com (10.22.229.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 12 Jan 2021 22:03:38 -0800 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX608.amr.corp.intel.com (10.22.229.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5; Tue, 12 Jan 2021 22:03:38 -0800 Received: from ORSEDG601.ED.cps.intel.com (10.7.248.6) by orsmsx610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 12 Jan 2021 22:03:38 -0800 Received: from NAM12-BN8-obe.outbound.protection.outlook.com (104.47.55.169) by edgegateway.intel.com (134.134.137.102) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 12 Jan 2021 22:03:37 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=f/6fGXazhuz265/bu9BZjZQdcmAotZjo9XJqKWxWrOJWfLkzAXwVKj7M2dfcKkIQS1prkgx+dD0JLFjXd03DGbjwHlyhr8fFlkL3dCxUCcuLdt8C3uMQyK/AzYMbCGjGR2jIhpVTQIBGOC5fMW2acRyemOvoWq/5stYx+1y1WDot8f+or6pDeStVRkYFJIoukfM5x5x/FpS9+fTKiHIFkRJayKpkd8Effwxg+Pe6uAvTVRPgFPxqHU2rJ6+C31Z7oahTLlIaB4cUF5nOH5NqWJIc4v0801DffQnqjWW1U33sBeTME9bpysc7dMKNrPrmtdVyCfVTNqiDpFcSRHUftQ== 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-SenderADCheck; bh=Fxauo5iIk35F9AG6+LocFrNQM7+zdTwhtmvhms0tPUE=; b=oBlzDwKP9gH2UjyH4pagypmyGFkL2TziEroce4WdFEpiDyhUPruZki+bFGUlyHZOq4yHz2Hd204sHprb4me/TAC2oOKkNkQQ+ZMamDUj3wRNEABSiJhetyKSFTpSpoFX4mzvvugtQ6P4rwHfaiGYgFtNZ3BJHvXEVY1POrUaWzoARC7jFel1WFkWIBYYYtV/aMeCwW9hPEbaRskQWI2rGTGhah1hlWr7PsqAdWwvgeuVIWqDyXMYR5dCHdk8fIew0/tgEqk0e/XPhT/aq8kFZjc0YRSZNkBja4B9ilnwMsS/28yENz/wh65OsUknKfhWREUV4j9CpaSnngc8LwMGhg== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Fxauo5iIk35F9AG6+LocFrNQM7+zdTwhtmvhms0tPUE=; b=gogyUJtkWLTChfwFU+miOqY8MPfjsmL+AvJmzGSPj1GmBzWjPpkhzvd5AHNQhGI1FYKq9bU8ftRyK741afxWmqSuX3JJh61DRmotuTQPwQfpIsp0Z4c6lekKnZN6SMD+rq4PiinHEDbArkgqHpn8kk4C9yJcfOwvCw6ZplLtHuE= Received: from CO1PR11MB4930.namprd11.prod.outlook.com (2603:10b6:303:9b::11) by MWHPR11MB1344.namprd11.prod.outlook.com (2603:10b6:300:23::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3742.6; Wed, 13 Jan 2021 06:03:35 +0000 Received: from CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::d18:1234:c1d6:5936]) by CO1PR11MB4930.namprd11.prod.outlook.com ([fe80::d18:1234:c1d6:5936%7]) with mapi id 15.20.3763.010; Wed, 13 Jan 2021 06:03:35 +0000 From: "Ni, Ray" To: Laszlo Ersek , "Lou, Yun" , "devel@edk2.groups.io" CC: "Dong, Eric" , "Kumar, Rahul1" Subject: Re: [PATCH v5 2/2] UefiCpuPkg/CpuCacheInfoLib: Add new CpuCacheInfoLib. Thread-Topic: [PATCH v5 2/2] UefiCpuPkg/CpuCacheInfoLib: Add new CpuCacheInfoLib. Thread-Index: AQHW5KRwvwHrERdA90+LzfnS9qbEFKok93BwgAADjwCAAB6QoA== Date: Wed, 13 Jan 2021 06:03:35 +0000 Message-ID: References: <20210107032246.3101-1-yun.lou@intel.com> <20210107032246.3101-2-yun.lou@intel.com> <9ed7dca1-581a-9da6-3d6b-49e3fd51bd01@redhat.com> In-Reply-To: <9ed7dca1-581a-9da6-3d6b-49e3fd51bd01@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: redhat.com; dkim=none (message not signed) header.d=none;redhat.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.198.147.194] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 6d92a8b3-c9a4-4304-460b-08d8b788f6a8 x-ms-traffictypediagnostic: MWHPR11MB1344: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:451; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: K/swi5Q/6VF6Fi3HyJsGyr2fPUKUOMRg/LO0Jkjk7e2K/fzhVt32ZDCIr+bp7BWOW9sDSDhYLzG/2MTq0OePjBftZ9I+ELm7l5V4pA3ZbXkjJwWQzfcZJIO4yrNtDJkvxY4JivTBzaEz3Qn2IaXAtLpHCB46wL50hYub7/tAgjBpZLrhTSUKYimyZODt/oy8T5oDscL7pNc0ddfZgoHF4RDAaxw8HYEB9ikSBrzDtrNEAEckEZ+C2P8Yjorrl6LetZmNGDKoW8VlNQrlkl8FNAA9tRAZnJbPa2IjUUI/O8NLv/683vRMmypJwWe6OmCHmA5TTTGPec+AJQxnwSUmgBaIZfm7QVRcOoRL7WFjrwg5i2Zvgo7K5GuaxHR0+8Xzn54QlNfhdTiOm/T9Qj5+Szzh2RevAsJjgYmnFx9sdG4yS4rSRl5tqPFBX2vlMqHwzQ/lJDIpebsfpJ6kKSF9Iw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CO1PR11MB4930.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(346002)(366004)(136003)(39860400002)(396003)(376002)(66556008)(30864003)(66946007)(64756008)(107886003)(53546011)(66476007)(76116006)(33656002)(186003)(110136005)(316002)(6506007)(54906003)(71200400001)(66446008)(19627235002)(5660300002)(8676002)(478600001)(7696005)(52536014)(966005)(4326008)(86362001)(9686003)(83380400001)(2906002)(55016002)(26005)(8936002)(559001)(579004);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?YUUxSlNKbTF3L3d1NWo5aVFtbkVaNW9vTkpDeGcwYTRLYkNGOGNyLzZjOElQ?= =?utf-8?B?RFgxdFVPMHl6aTBnckRxY3dkb2JocjlaelMzYi9GVzZoYnZEOVBnR0FNV0Fz?= =?utf-8?B?a3RLZ2ZaZXhRaDZ6eDU2YkVsa3pla2VYempIa2trSDBkMGFVZ2ZaRU1FaHhz?= =?utf-8?B?d3dZLy8wSzZFQ3lXdGFkMDFqRGd6NGxRT1RRVDhEVXE2L1ZkajRLcVdzeThv?= =?utf-8?B?UXowWDcxTzN5Q2NyOFpDellRcnh6R2RoMmpWZGtTLy90WkQxZEd3eDUrdG9C?= =?utf-8?B?QzBhS1hobHlqbERkUSt5UlhVUjUvK1lESVEyQytkVEJwOGl2SFVXYm5hZVBu?= =?utf-8?B?bmJtb0dlVE93TW5NSllEd2lBQXdnWWhuN3p5L3NRaXc5VnBuQ3J6amJyTnlP?= =?utf-8?B?NU1Lb0V3VUw4cEVEUTN1cmlJOGJBT0htVk9xN2tBZVhRQXRMRkhDMjNjQmho?= =?utf-8?B?VXE1cm1yZEY2bEhEWUM0ZnBzVDNBbkVMd0ZOTlRmZHpscm9UMXhVdWR4d3VL?= =?utf-8?B?OWtDSUJMMUJLRnptL0ZPNEE3N1JJNUpOWkNvamRFYmxVTWs1bnZPZWd0YzNw?= =?utf-8?B?Nm9UOHcwRHdBR0FMcitwZFlPQk9ZanJjd21NNThEOElCNXQzTHdtRm0xUTh4?= =?utf-8?B?eFFQM0l6c29tYU9HV2orbFVhVmREVEk5M0MzVEVWc056My9Ed2NVTXZBelNP?= =?utf-8?B?eFBtMTVFVDBDNmMwekxYc1ZhblpSYTc3TmttRUZGc3JRSVlMWFBKNE1rY1V3?= =?utf-8?B?YnlaUlp0QnFVcU5zM3grakl1akFSRGVZa0wrMTUrVWhxWS9KbXRpM3c5UFJX?= =?utf-8?B?L0d3UkdqbE5QaW15c09WcnNQZjlWQ2owbUVLRmdBRHdxdmpsU3JRK1NjNjMr?= =?utf-8?B?ZzhXMnpKaDZGN2lMZ1dQWVhaNmVrOVNoelBHZmxlQm51NHRrRU5zSlhqWWxP?= =?utf-8?B?SlBGV2luMlhkbmIwT1FJaWtZOCtsWlBIRFJ0ak16RDB2eEo3RDNNV0h6eUU2?= =?utf-8?B?RUZvWXBnVUJZWnlLTjNKUG9Pd3ZrY0FLUGx6eGF5SE5RZEtySGNINXIzNy9P?= =?utf-8?B?bXJDZ0J2cy9sRkNRTkZoZHo0bVpZRUgzZExMQS9LMW1tK1AvZHJ1cEtITEpn?= =?utf-8?B?c25lZWJ4MVBUYkNFdWJwdm9OaXF5Y2lzK2xpVTRVNVlpeS9QREJ3NFRTR1NN?= =?utf-8?B?b2huS2w0emFKKzk3a2ZhNU5NaHVkVVRsOHFKZXdDYnNnenNlTi9aWWJGU2tj?= =?utf-8?B?dVErbG9DTGpyamY2NUJSSjZRbmlNQUE1UXZxSGs4QTZVdHNhYjk1alRPU3lu?= =?utf-8?Q?T5CIrM79YP5dMuWxcIPRHJXo0OAlDvRNse?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CO1PR11MB4930.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6d92a8b3-c9a4-4304-460b-08d8b788f6a8 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Jan 2021 06:03:35.3269 (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: xz/Jr6GbKtUmkhaPJi+1u9h3hfqXmnIVuY6TYDaGqfL38sLPL2z+oSWGU9pzyKyNqxvhqK8hNm2TnvzWv9BiIg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1344 Return-Path: ray.ni@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 WXVuLA0KUGxlYXNlIGNoZWNrIHRoZSBlcnJvciBAIGh0dHBzOi8vZ2l0aHViLmNvbS90aWFub2Nv cmUvZWRrMi9wdWxsLzEzMzguDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBG cm9tOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiBTZW50OiBXZWRuZXNkYXks IEphbnVhcnkgMTMsIDIwMjEgMTI6MTEgUE0NCj4gVG86IE5pLCBSYXkgPHJheS5uaUBpbnRlbC5j b20+OyBMb3UsIFl1biA8eXVuLmxvdUBpbnRlbC5jb20+Ow0KPiBkZXZlbEBlZGsyLmdyb3Vwcy5p bw0KPiBDYzogRG9uZywgRXJpYyA8ZXJpYy5kb25nQGludGVsLmNvbT47IEt1bWFyLCBSYWh1bDEN Cj4gPHJhaHVsMS5rdW1hckBpbnRlbC5jb20+DQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0ggdjUgMi8y XSBVZWZpQ3B1UGtnL0NwdUNhY2hlSW5mb0xpYjogQWRkIG5ldw0KPiBDcHVDYWNoZUluZm9MaWIu DQo+IA0KPiBIZWxsbyBSYXksDQo+IA0KPiBPbiAwMS8xMy8yMSAwNTowMSwgTmksIFJheSB3cm90 ZToNCj4gPiBMYXN6bG8sDQo+ID4gSGF2ZSB5b3UgZ2l2ZW4gQWNrZWQtYnkgb3IgUmV2aWV3ZWQt YnkgYmVmb3JlPyBJIGNhbm5vdCBmaW5kIGl0Lg0KPiANCj4gUGxlYXNlIHNlZSBvdXIgcHJldmlv dXMgZGlzY3Vzc2lvbiBoZXJlICh1bmRlciB2MSBvZiB0aGUgc2VyaWVzKToNCj4gDQo+IGh0dHBz Oi8vZWRrMi5ncm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzY3NzAwDQo+IGh0dHBzOi8vZWRrMi5n cm91cHMuaW8vZy9kZXZlbC9tZXNzYWdlLzY3NzM5DQo+IGh0dHBzOi8vZWRrMi5ncm91cHMuaW8v Zy9kZXZlbC9tZXNzYWdlLzY3NzYxDQo+IA0KPiBBY2NvcmRpbmdseSAoIkkgZGVmZXIgdGhpcyBy ZXZpZXcgdG8gdGhlIG90aGVyIFVlZmlDcHVQa2cgcmV2aWV3ZXJzIC8NCj4gbWFpbnRhaW5lcnMi KSwgSSBoYXZlIG5vdCBjb21tZW50ZWQgb24gdjIgYW5kIGxhdGVyLg0KPiANCj4gQWxzbywgSSBj YW4gc2VlIHRoYXQgU01CSU9TX1RBQkxFX1RZUEU3IGlzIG5vdyBtZW50aW9uZWQgaW4gdGhlIGNv bW1pdA0KPiBtZXNzYWdlOyB0aGFua3MgZm9yIHRoYXQuDQo+IA0KPiA+IFRoaXMgdmVyc2lvbiBp cyBnb29kIHRvIG1lLiBJIHdpbGwgY3JlYXRlIHB1bGwgcmVxdWVzdCBvbmNlIE1kZVBrZw0KPiBt YWludGFpbmVycw0KPiA+IGFuZCB5b3UgYXBwcm92ZS4NCj4gDQo+IFBsZWFzZSBnbyBhaGVhZCwg ZnJvbSBteSBzaWRlLg0KPiANCj4gVGhhbmtzIQ0KPiBMYXN6bG8NCj4gDQo+IA0KPiANCj4gPg0K PiA+IFRoYW5rcywNCj4gPiBSYXkNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+PiBGcm9tOiBMb3UsIFl1biA8eXVuLmxvdUBpbnRlbC5jb20+DQo+ID4+IFNlbnQ6IFRo dXJzZGF5LCBKYW51YXJ5IDcsIDIwMjEgMTE6MjMgQU0NCj4gPj4gVG86IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+ID4+IENjOiBMb3UsIFl1biA8eXVuLmxvdUBpbnRlbC5jb20+OyBOaSwgUmF5IDxy YXkubmlAaW50ZWwuY29tPjsgRG9uZywgRXJpYw0KPiA+PiA8ZXJpYy5kb25nQGludGVsLmNvbT47 IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+OyBLdW1hciwgUmFodWwxDQo+ID4+IDxy YWh1bDEua3VtYXJAaW50ZWwuY29tPg0KPiA+PiBTdWJqZWN0OiBbUEFUQ0ggdjUgMi8yXSBVZWZp Q3B1UGtnL0NwdUNhY2hlSW5mb0xpYjogQWRkIG5ldw0KPiA+PiBDcHVDYWNoZUluZm9MaWIuDQo+ ID4+DQo+ID4+IFJFRjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNn aT9pZD0zMTA1DQo+ID4+DQo+ID4+IFRoaXMgbmV3IGxpYnJhcnkgdXNlcyBhIHBsYXRmb3JtIGFn bm9zdGljIGFsZ29yaXRobSB0byBnZXQgQ1BVDQo+ID4+IGNhY2hlIGluZm9ybWF0aW9uLiBJdCBw cm92aWRlcyB1c2VyIHdpdGggYW4gQVBJKEdldENwdUNhY2hlSW5mbykNCj4gPj4gdG8gZ2V0IGRl dGFpbGVkIENQVSBjYWNoZSBpbmZvcm1hdGlvbiBieSBlYWNoIHBhY2thZ2UsIGVhY2ggY29yZQ0K PiA+PiB0eXBlIGluY2x1ZGVkIGluIHRoaXMgcGFja2FnZSwgYW5kIGVhY2ggY2FjaGUgbGV2ZWwg JiB0eXBlLg0KPiA+PiBUaGlzIGxpYnJhcnkgY2FuIGJlIHVzZWQgYnkgY29kZSB0aGF0IHByb2R1 Y2VzIFNNQklPU19UQUJMRV9UWVBFNw0KPiA+PiBTTUJJT1MgdGFibGUuDQo+ID4+DQo+ID4+IFNp Z25lZC1vZmYtYnk6IEphc29uIExvdSA8eXVuLmxvdUBpbnRlbC5jb20+DQo+ID4+IENjOiBSYXkg TmkgPHJheS5uaUBpbnRlbC5jb20+DQo+ID4+IENjOiBFcmljIERvbmcgPGVyaWMuZG9uZ0BpbnRl bC5jb20+DQo+ID4+IENjOiBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPg0KPiA+PiBD YzogUmFodWwgS3VtYXIgPHJhaHVsMS5rdW1hckBpbnRlbC5jb20+DQo+ID4+IC0tLQ0KPiA+PiAg VWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9DcHVDYWNoZUluZm9MaWIuYyAgICAg ICAgIHwgNDQwDQo+ID4+ICsrKysrKysrKysrKysrKysrKysrDQo+ID4+ICBVZWZpQ3B1UGtnL0xp YnJhcnkvQ3B1Q2FjaGVJbmZvTGliL0R4ZUNwdUNhY2hlSW5mb0xpYi5jICAgICAgfCAxMjANCj4g KysrKysrDQo+ID4+ICBVZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1Q2FjaGVJbmZvTGliL1BlaUNwdUNh Y2hlSW5mb0xpYi5jICAgICAgfCAxMTkNCj4gKysrKysrDQo+ID4+ICBVZWZpQ3B1UGtnL0luY2x1 ZGUvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIuaCAgICAgICAgICAgICAgICAgfCAgNzYgKysrKw0K PiA+PiAgVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9DcHVDYWNoZUluZm9MaWIu dW5pICAgICAgIHwgIDE1ICsNCj4gPj4gIFVlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9M aWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmluZiAgICB8ICA0MyArKw0KPiA+PiAgVWVmaUNwdVBrZy9M aWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9JbnRlcm5hbENwdUNhY2hlSW5mb0xpYi5oIHwgMTU5DQo+ ID4+ICsrKysrKysNCj4gPj4gIFVlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIvUGVp Q3B1Q2FjaGVJbmZvTGliLmluZiAgICB8ICA0MyArKw0KPiA+PiAgVWVmaUNwdVBrZy9VZWZpQ3B1 UGtnLmRlYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAzICsNCj4gPj4g IFVlZmlDcHVQa2cvVWVmaUNwdVBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB8ICAgNCArDQo+ID4+ICAxMCBmaWxlcyBjaGFuZ2VkLCAxMDIyIGluc2VydGlvbnMoKykN Cj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9M aWIvQ3B1Q2FjaGVJbmZvTGliLmMNCj4gPj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1Q2FjaGVJ bmZvTGliL0NwdUNhY2hlSW5mb0xpYi5jDQo+ID4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+ IGluZGV4IDAwMDAwMDAwMDAwMC4uZWM1MDZjZGE0NzFjDQo+ID4+IC0tLSAvZGV2L251bGwNCj4g Pj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9DcHVDYWNoZUluZm9M aWIuYw0KPiA+PiBAQCAtMCwwICsxLDQ0MCBAQA0KPiA+PiArLyoqIEBmaWxlDQo+ID4+DQo+ID4+ ICsgIFByb3ZpZGVzIGNhY2hlIGluZm8gZm9yIGVhY2ggcGFja2FnZSwgY29yZSB0eXBlLCBjYWNo ZSBsZXZlbCBhbmQgY2FjaGUNCj4gdHlwZS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBD b3B5cmlnaHQgKGMpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQu PEJSPg0KPiA+Pg0KPiA+PiArICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsqKi8NCj4gPj4NCj4gPj4gKw0KPiA+ Pg0KPiA+PiArI2luY2x1ZGUgIkludGVybmFsQ3B1Q2FjaGVJbmZvTGliLmgiDQo+ID4+DQo+ID4+ ICsNCj4gPj4NCj4gPj4gKy8qKg0KPiA+Pg0KPiA+PiArICBQcmludCBDcHVDYWNoZUluZm8gYXJy YXkuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luXSAgQ3B1Q2FjaGVJbmZv ICAgICAgICBQb2ludGVyIHRvIHRoZSBDcHVDYWNoZUluZm8gYXJyYXkuDQo+ID4+DQo+ID4+ICsg IEBwYXJhbVtpbl0gIENwdUNhY2hlSW5mb0NvdW50ICAgVGhlIGxlbmd0aCBvZiBDcHVDYWNoZUlu Zm8gYXJyYXkuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVk9J RA0KPiA+Pg0KPiA+PiArQ3B1Q2FjaGVJbmZvUHJpbnRDcHVDYWNoZUluZm9UYWJsZSAoDQo+ID4+ DQo+ID4+ICsgIElOIENQVV9DQUNIRV9JTkZPICAgICAgICAgKkNwdUNhY2hlSW5mbywNCj4gPj4N Cj4gPj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBDcHVDYWNoZUluZm9Db3VudA0KPiA+ Pg0KPiA+PiArICApDQo+ID4+DQo+ID4+ICt7DQo+ID4+DQo+ID4+ICsgIFVJTlROICAgICAgICAg ICAgICAgICAgICAgSW5kZXg7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgREVCVUcgKChE RUJVR19JTkZPLCAiKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0NCj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xu IikpOw0KPiA+Pg0KPiA+PiArICBERUJVRyAoKERFQlVHX0lORk8sICJ8IEluZGV4IHwgUGFja2dl ICBDb3JlVHlwZSAgQ2FjaGVMZXZlbA0KPiBDYWNoZVR5cGUNCj4gPj4gQ2FjaGVXYXlzICBDYWNo ZVNpemVpbktCICBDYWNoZUNvdW50IHxcbiIpKTsNCj4gPj4NCj4gPj4gKyAgREVCVUcgKChERUJV R19JTkZPLCAiKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tDQo+IC0tLS0NCj4gPj4gLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuIikp Ow0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IENw dUNhY2hlSW5mb0NvdW50OyBJbmRleCsrKSB7DQo+ID4+DQo+ID4+ICsgICAgREVCVUcgKChERUJV R19JTkZPLCAifCAlNHgNCj4gPj4gfCAlNHggICAgICAgJTJ4ICAgICAgICAlMnggICAgICAgICAg JTJ4ICAgICAgICU0eCAgICAgICU4eCAgICAgICAgICU0eCAgICAgfFxuIiwgSW5kZXgsDQo+ID4+ DQo+ID4+ICsgICAgICAgIENwdUNhY2hlSW5mb1tJbmRleF0uUGFja2FnZSwgQ3B1Q2FjaGVJbmZv W0luZGV4XS5Db3JlVHlwZSwNCj4gPj4gQ3B1Q2FjaGVJbmZvW0luZGV4XS5DYWNoZUxldmVsLA0K PiA+Pg0KPiA+PiArICAgICAgICBDcHVDYWNoZUluZm9bSW5kZXhdLkNhY2hlVHlwZSwgQ3B1Q2Fj aGVJbmZvW0luZGV4XS5DYWNoZVdheXMsDQo+ID4+IENwdUNhY2hlSW5mb1tJbmRleF0uQ2FjaGVT aXplaW5LQiwNCj4gPj4NCj4gPj4gKyAgICAgICAgQ3B1Q2FjaGVJbmZvW0luZGV4XS5DYWNoZUNv dW50KSk7DQo+ID4+DQo+ID4+ICsgIH0NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBERUJV RyAoKERFQlVHX0lORk8sICIrLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gLS0tLQ0KPiA+PiAtLS0tLS0tLS0tLS0tLS0tLS0t LS0rXG4iKSk7DQo+ID4+DQo+ID4+ICt9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8qKg0K PiA+Pg0KPiA+PiArICBHZXQgdGhlIHRvdGFsIG51bWJlciBvZiBwYWNrYWdlIGFuZCBwYWNrYWdl IElEIGluIHRoZSBwbGF0Zm9ybS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcGFyYW1b aW5dICAgICAgUHJvY2Vzc29ySW5mbyAgICAgICBQb2ludGVyIHRvIHRoZSBQcm9jZXNzb3JJbmZv IGFycmF5Lg0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICAgICAgTnVtYmVyT2ZQcm9jZXNzb3Jz ICBUb3RhbCBudW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzDQo+IGluDQo+ID4+IHRoZSBwbGF0 Zm9ybS4NCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luLCBvdXRdIFBhY2thZ2UgICAgICAgICAgICAg UG9pbnRlciB0byB0aGUgUGFja2FnZSBhcnJheS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiAr ICBAcmV0dmFsICBSZXR1cm4gdGhlIHRvdGFsIG51bWJlciBvZiBwYWNrYWdlIGFuZCBwYWNrYWdl IElEIGluIHRoZQ0KPiBwbGF0Zm9ybS4NCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVUlO VDMyDQo+ID4+DQo+ID4+ICtDcHVDYWNoZUluZm9HZXROdW1iZXJPZlBhY2thZ2VzICgNCj4gPj4N Cj4gPj4gKyAgSU4gQ1BVSURfUFJPQ0VTU09SX0lORk8gICAqUHJvY2Vzc29ySW5mbywNCj4gPj4N Cj4gPj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBOdW1iZXJPZlByb2Nlc3NvcnMsDQo+ ID4+DQo+ID4+ICsgIElOIE9VVCBVSU5UMzIgICAgICAgICAgICAgKlBhY2thZ2UNCj4gPj4NCj4g Pj4gKyAgKQ0KPiA+Pg0KPiA+PiArew0KPiA+Pg0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIFByb2Nlc3NvckluZGV4Ow0KPiA+Pg0KPiA+PiArICBVSU5UMzIgICAgICAgICAgICAg ICAgICAgIFBhY2thZ2VJbmRleDsNCj4gPj4NCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBQYWNrYWdlQ291bnQ7DQo+ID4+DQo+ID4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAg ICAgQ3VycmVudFBhY2thZ2U7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgUGFja2FnZUNv dW50ID0gMDsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBmb3IgKFByb2Nlc3NvckluZGV4 ID0gMDsgUHJvY2Vzc29ySW5kZXggPCBOdW1iZXJPZlByb2Nlc3NvcnM7DQo+ID4+IFByb2Nlc3Nv ckluZGV4KyspIHsNCj4gPj4NCj4gPj4gKyAgICBDdXJyZW50UGFja2FnZSA9IFByb2Nlc3Nvcklu Zm9bUHJvY2Vzc29ySW5kZXhdLlBhY2thZ2U7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAg ICAvLw0KPiA+Pg0KPiA+PiArICAgIC8vIEZvciB0aGUgcGFja2FnZSB0aGF0IGFscmVhZHkgZXhp c3RzIGluIFBhY2thZ2UgYXJyYXksIGJyZWFrIG91dCB0aGUNCj4gbG9vcC4NCj4gPj4NCj4gPj4g KyAgICAvLw0KPiA+Pg0KPiA+PiArICAgIGZvciAoUGFja2FnZUluZGV4ID0gMDsgUGFja2FnZUlu ZGV4IDwgUGFja2FnZUNvdW50OyBQYWNrYWdlSW5kZXgrKykgew0KPiA+Pg0KPiA+PiArICAgICAg aWYgKEN1cnJlbnRQYWNrYWdlID09IFBhY2thZ2VbUGFja2FnZUluZGV4XSkgew0KPiA+Pg0KPiA+ PiArICAgICAgICBicmVhazsNCj4gPj4NCj4gPj4gKyAgICAgIH0NCj4gPj4NCj4gPj4gKyAgICB9 DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgICAvLw0KPiA+Pg0KPiA+PiArICAgIC8vIEZv ciB0aGUgbmV3IHBhY2thZ2UsIHNhdmUgaXQgaW4gUGFja2FnZSBhcnJheS4NCj4gPj4NCj4gPj4g KyAgICAvLw0KPiA+Pg0KPiA+PiArICAgIGlmIChQYWNrYWdlSW5kZXggPT0gUGFja2FnZUNvdW50 KSB7DQo+ID4+DQo+ID4+ICsgICAgICBBU1NFUlQgKFBhY2thZ2VDb3VudCA8IE1BWF9OVU1fT0Zf UEFDS0FHRSk7DQo+ID4+DQo+ID4+ICsgICAgICBQYWNrYWdlW1BhY2thZ2VDb3VudCsrXSA9IEN1 cnJlbnRQYWNrYWdlOw0KPiA+Pg0KPiA+PiArICAgIH0NCj4gPj4NCj4gPj4gKyAgfQ0KPiA+Pg0K PiA+PiArDQo+ID4+DQo+ID4+ICsgIHJldHVybiBQYWNrYWdlQ291bnQ7DQo+ID4+DQo+ID4+ICt9 DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8qKg0KPiA+Pg0KPiA+PiArICBHZXQgdGhlIG51 bWJlciBvZiBDb3JlVHlwZSBvZiByZXF1ZXN0ZWQgcGFja2FnZS4NCj4gPj4NCj4gPj4gKw0KPiA+ Pg0KPiA+PiArICBAcGFyYW1baW5dICBQcm9jZXNzb3JJbmZvICAgICAgIFBvaW50ZXIgdG8gdGhl IFByb2Nlc3NvckluZm8gYXJyYXkuDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIE51bWJlck9m UHJvY2Vzc29ycyAgVG90YWwgbnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycyBpbg0KPiB0aGUN Cj4gPj4gcGxhdGZvcm0uDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIFBhY2thZ2UgICAgICAg ICAgICAgVGhlIHJlcXVlc3RlZCBwYWNrYWdlIG51bWJlci4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0K PiA+PiArICBAcmV0dmFsICBSZXR1cm4gdGhlIG51bWJlciBvZiBDb3JlVHlwZSBvZiByZXF1ZXN0 ZWQgcGFja2FnZS4NCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVUlOVE4NCj4gPj4NCj4g Pj4gK0NwdUNhY2hlSW5mb0dldE51bWJlck9mQ29yZVR5cGVQZXJQYWNrYWdlKA0KPiA+Pg0KPiA+ PiArICBJTiBDUFVJRF9QUk9DRVNTT1JfSU5GTyAgICpQcm9jZXNzb3JJbmZvLA0KPiA+Pg0KPiA+ PiArICBJTiBVSU5UTiAgICAgICAgICAgICAgICAgIE51bWJlck9mUHJvY2Vzc29ycywNCj4gPj4N Cj4gPj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBQYWNrYWdlDQo+ID4+DQo+ID4+ICsg ICkNCj4gPj4NCj4gPj4gK3sNCj4gPj4NCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICBQcm9jZXNzb3JJbmRleDsNCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgLy8gQ29y ZSBUeXBlIHZhbHVlIGNvbWVzIGZyb20gQ1BVSUQuMUFoLkVBWFszMToyNF0uDQo+ID4+DQo+ID4+ ICsgIC8vIFNvIG1heCBudW1iZXIgb2YgY29yZSB0eXBlcyBzaG91bGQgYmUgTUFYX1VJTlQ4Lg0K PiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBVSU5UOCAgICAgICAgICAgICAgICAgICAg IENvcmVUeXBlW01BWF9VSU5UOF07DQo+ID4+DQo+ID4+ICsgIFVJTlROICAgICAgICAgICAgICAg ICAgICAgQ29yZVR5cGVJbmRleDsNCj4gPj4NCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAg ICAgICBDb3JlVHlwZUNvdW50Ow0KPiA+Pg0KPiA+PiArICBVSU5UOCAgICAgICAgICAgICAgICAg ICAgIEN1cnJlbnRDb3JlVHlwZTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICAvLw0KPiA+ Pg0KPiA+PiArICAvLyBDb3JlVHlwZSBhcnJheSBpcyBlbXB0eS4NCj4gPj4NCj4gPj4gKyAgLy8N Cj4gPj4NCj4gPj4gKyAgQ29yZVR5cGVDb3VudCA9IDA7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4g Pj4gKyAgZm9yIChQcm9jZXNzb3JJbmRleCA9IDA7IFByb2Nlc3NvckluZGV4IDwgTnVtYmVyT2ZQ cm9jZXNzb3JzOw0KPiA+PiBQcm9jZXNzb3JJbmRleCsrKSB7DQo+ID4+DQo+ID4+ICsgICAgQ3Vy cmVudENvcmVUeXBlID0gUHJvY2Vzc29ySW5mb1tQcm9jZXNzb3JJbmRleF0uQ29yZVR5cGU7DQo+ ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgICBpZiAoUHJvY2Vzc29ySW5mb1tQcm9jZXNzb3JJ bmRleF0uUGFja2FnZSAhPSBQYWNrYWdlKSB7DQo+ID4+DQo+ID4+ICsgICAgICBjb250aW51ZTsN Cj4gPj4NCj4gPj4gKyAgICB9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgICAvLw0KPiA+ Pg0KPiA+PiArICAgIC8vIEZvciB0aGUgdHlwZSB0aGF0IGFscmVhZHkgZXhpc3RzIGluIENvcmVU eXBlIGFycmF5LCBicmVhayBvdXQgdGhlIGxvb3AuDQo+ID4+DQo+ID4+ICsgICAgLy8NCj4gPj4N Cj4gPj4gKyAgICBmb3IgKENvcmVUeXBlSW5kZXggPSAwOyBDb3JlVHlwZUluZGV4IDwgQ29yZVR5 cGVDb3VudDsNCj4gQ29yZVR5cGVJbmRleCsrKQ0KPiA+PiB7DQo+ID4+DQo+ID4+ICsgICAgICBp ZiAoQ3VycmVudENvcmVUeXBlID09IENvcmVUeXBlW0NvcmVUeXBlSW5kZXhdKSB7DQo+ID4+DQo+ ID4+ICsgICAgICAgIGJyZWFrOw0KPiA+Pg0KPiA+PiArICAgICAgfQ0KPiA+Pg0KPiA+PiArICAg IH0NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICAgIC8vDQo+ID4+DQo+ID4+ICsgICAgLy8g Rm9yIHRoZSBuZXcgdHlwZSwgc2F2ZSBpdCBpbiBDb3JlVHlwZSBhcnJheS4NCj4gPj4NCj4gPj4g KyAgICAvLw0KPiA+Pg0KPiA+PiArICAgIGlmIChDb3JlVHlwZUluZGV4ID09IENvcmVUeXBlQ291 bnQpIHsNCj4gPj4NCj4gPj4gKyAgICAgIEFTU0VSVCAoQ29yZVR5cGVDb3VudCA8IE1BWF9VSU5U OCk7DQo+ID4+DQo+ID4+ICsgICAgICBDb3JlVHlwZVtDb3JlVHlwZUNvdW50KytdID0gQ3VycmVu dENvcmVUeXBlOw0KPiA+Pg0KPiA+PiArICAgIH0NCj4gPj4NCj4gPj4gKyAgfQ0KPiA+Pg0KPiA+ PiArDQo+ID4+DQo+ID4+ICsgIHJldHVybiBDb3JlVHlwZUNvdW50Ow0KPiA+Pg0KPiA+PiArfQ0K PiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4gPj4NCj4gPj4gKyAgQ29sbGVjdCBjb3Jl IGFuZCBjYWNoZSBpbmZvcm1hdGlvbiBvZiBjYWxsaW5nIHByb2Nlc3NvciB2aWEgQ1BVSUQNCj4g Pj4gaW5zdHJ1Y3Rpb25zLg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0g IEJ1ZmZlciAgICAgICAgICAgICAgVGhlIHBvaW50ZXIgdG8gcHJpdmF0ZSBkYXRhIGJ1ZmZlci4N Cj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVk9JRA0KPiA+Pg0KPiA+PiArQ3B1Q2FjaGVJ bmZvQ29sbGVjdENvcmVBbmRDYWNoZURhdGEgKA0KPiA+Pg0KPiA+PiArICBJTiBPVVQgVk9JRCAg ICAgICAgICAgICAgICpCdWZmZXINCj4gPj4NCj4gPj4gKyAgKQ0KPiA+Pg0KPiA+PiArew0KPiA+ Pg0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NvckluZGV4Ow0KPiA+ Pg0KPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENwdWlkTWF4SW5wdXQ7DQo+ID4+ DQo+ID4+ICsgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgQ2FjaGVQYXJhbUxlYWZJbmRleDsN Cj4gPj4NCj4gPj4gKyAgQ1BVSURfQ0FDSEVfUEFSQU1TX0VBWCAgICBDYWNoZVBhcmFtRWF4Ow0K PiA+Pg0KPiA+PiArICBDUFVJRF9DQUNIRV9QQVJBTVNfRUJYICAgIENhY2hlUGFyYW1FYng7DQo+ ID4+DQo+ID4+ICsgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgQ2FjaGVQYXJhbUVjeDsNCj4g Pj4NCj4gPj4gKyAgQ1BVSURfTkFUSVZFX01PREVMX0lEX0FORF9DT1JFX1RZUEVfRUFYDQo+ID4+ IE5hdGl2ZU1vZGVsSWRBbmRDb3JlVHlwZUVheDsNCj4gPj4NCj4gPj4gKyAgQ09MTEVDVF9DUFVJ RF9DQUNIRV9EQVRBX0NPTlRFWFQgICpDb250ZXh0Ow0KPiA+Pg0KPiA+PiArICBDUFVJRF9DQUNI RV9EQVRBICAgICAgICAgICpDYWNoZURhdGE7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAg Q29udGV4dCA9IChDT0xMRUNUX0NQVUlEX0NBQ0hFX0RBVEFfQ09OVEVYVCAqKUJ1ZmZlcjsNCj4g Pj4NCj4gPj4gKyAgUHJvY2Vzc29ySW5kZXggPSBDcHVDYWNoZUluZm9XaG9BbUkgKENvbnRleHQt Pk1wU2VydmljZXMpOw0KPiA+Pg0KPiA+PiArICBDYWNoZURhdGEgPSAmQ29udGV4dC0NCj4gPkNh Y2hlRGF0YVtNQVhfTlVNX09GX0NBQ0hFX1BBUkFNU19MRUFGDQo+ID4+ICogUHJvY2Vzc29ySW5k ZXhdOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEFzbUNwdWlkIChDUFVJRF9TSUdOQVRV UkUsICZDcHVpZE1heElucHV0LCBOVUxMLCBOVUxMLCBOVUxMKTsNCj4gPj4NCj4gPj4gKw0KPiA+ Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICAvLyBnZXQgQ29yZVR5cGUgaWYgQ1BVSURfSFlC UklEX0lORk9STUFUSU9OIGxlYWYgaXMgc3VwcG9ydGVkLg0KPiA+Pg0KPiA+PiArICAvLw0KPiA+ Pg0KPiA+PiArICBDb250ZXh0LT5Qcm9jZXNzb3JJbmZvW1Byb2Nlc3NvckluZGV4XS5Db3JlVHlw ZSA9IDA7DQo+ID4+DQo+ID4+ICsgIGlmIChDcHVpZE1heElucHV0ID49IENQVUlEX0hZQlJJRF9J TkZPUk1BVElPTikgew0KPiA+Pg0KPiA+PiArICAgIEFzbUNwdWlkRXggKENQVUlEX0hZQlJJRF9J TkZPUk1BVElPTiwNCj4gPj4gQ1BVSURfSFlCUklEX0lORk9STUFUSU9OX1NVQl9MRUFGLA0KPiA+ PiAmTmF0aXZlTW9kZWxJZEFuZENvcmVUeXBlRWF4LlVpbnQzMiwgTlVMTCwgTlVMTCwgTlVMTCk7 DQo+ID4+DQo+ID4+ICsgICAgQ29udGV4dC0+UHJvY2Vzc29ySW5mb1tQcm9jZXNzb3JJbmRleF0u Q29yZVR5cGUgPSAoVUlOVDgpDQo+ID4+IE5hdGl2ZU1vZGVsSWRBbmRDb3JlVHlwZUVheC5CaXRz LkNvcmVUeXBlOw0KPiA+Pg0KPiA+PiArICB9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAg Ly8NCj4gPj4NCj4gPj4gKyAgLy8gY2FjaGUgaGllcmFyY2h5IHN0YXJ0cyB3aXRoIGFuIGluZGV4 IHZhbHVlIG9mIDAuDQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIENhY2hlUGFyYW1M ZWFmSW5kZXggPSAwOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIHdoaWxlIChDYWNoZVBh cmFtTGVhZkluZGV4IDwgTUFYX05VTV9PRl9DQUNIRV9QQVJBTVNfTEVBRikgew0KPiA+Pg0KPiA+ PiArICAgIEFzbUNwdWlkRXggKENQVUlEX0NBQ0hFX1BBUkFNUywgQ2FjaGVQYXJhbUxlYWZJbmRl eCwNCj4gPj4gJkNhY2hlUGFyYW1FYXguVWludDMyLCAmQ2FjaGVQYXJhbUVieC5VaW50MzIsICZD YWNoZVBhcmFtRWN4LA0KPiBOVUxMKTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICAgIGlm IChDYWNoZVBhcmFtRWF4LkJpdHMuQ2FjaGVUeXBlID09IDApIHsNCj4gPj4NCj4gPj4gKyAgICAg IGJyZWFrOw0KPiA+Pg0KPiA+PiArICAgIH0NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICAg IENhY2hlRGF0YVtDYWNoZVBhcmFtTGVhZkluZGV4XS5DYWNoZUxldmVsICAgICA9DQo+ID4+IChV SU5UOClDYWNoZVBhcmFtRWF4LkJpdHMuQ2FjaGVMZXZlbDsNCj4gPj4NCj4gPj4gKyAgICBDYWNo ZURhdGFbQ2FjaGVQYXJhbUxlYWZJbmRleF0uQ2FjaGVUeXBlICAgICAgPQ0KPiA+PiAoVUlOVDgp Q2FjaGVQYXJhbUVheC5CaXRzLkNhY2hlVHlwZTsNCj4gPj4NCj4gPj4gKyAgICBDYWNoZURhdGFb Q2FjaGVQYXJhbUxlYWZJbmRleF0uQ2FjaGVXYXlzICAgICAgPQ0KPiA+PiAoVUlOVDE2KUNhY2hl UGFyYW1FYnguQml0cy5XYXlzOw0KPiA+Pg0KPiA+PiArICAgIENhY2hlRGF0YVtDYWNoZVBhcmFt TGVhZkluZGV4XS5DYWNoZVNoYXJlQml0cyA9DQo+ID4+IChVSU5UMTYpQ2FjaGVQYXJhbUVheC5C aXRzLk1heGltdW1BZGRyZXNzYWJsZUlkc0ZvckxvZ2ljYWxQcm9jZXNzb3JzOw0KPiA+Pg0KPiA+ PiArICAgIENhY2hlRGF0YVtDYWNoZVBhcmFtTGVhZkluZGV4XS5DYWNoZVNpemVpbktCICA9DQo+ ID4+IChDYWNoZVBhcmFtRWJ4LkJpdHMuV2F5cyArIDEpICoNCj4gPj4NCj4gPj4gKyAgICAgICAg KENhY2hlUGFyYW1FYnguQml0cy5MaW5lUGFydGl0aW9ucyArIDEpICoNCj4gKENhY2hlUGFyYW1F YnguQml0cy5MaW5lU2l6ZQ0KPiA+PiArIDEpICogKENhY2hlUGFyYW1FY3ggKyAxKSAvIFNJWkVf MUtCOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgICAgQ2FjaGVQYXJhbUxlYWZJbmRleCsr Ow0KPiA+Pg0KPiA+PiArICB9DQo+ID4+DQo+ID4+ICt9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4g Pj4gKy8qKg0KPiA+Pg0KPiA+PiArICBDb2xsZWN0IENhY2hlSW5mbyBkYXRhIGZyb20gdGhlIENh Y2hlRGF0YS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICAgICAgQ2Fj aGVEYXRhICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBDYWNoZURhdGEgYXJyYXkuDQo+ID4+DQo+ ID4+ICsgIEBwYXJhbVtpbl0gICAgICBQcm9jZXNzb3JJbmZvICAgICAgIFBvaW50ZXIgdG8gdGhl IFByb2Nlc3NvckluZm8gYXJyYXkuDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gICAgICBOdW1i ZXJPZlByb2Nlc3NvcnMgIFRvdGFsIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMNCj4gaW4N Cj4gPj4gdGhlIHBsYXRmb3JtLg0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW4sIG91dF0gQ2FjaGVJ bmZvICAgICAgICAgICBQb2ludGVyIHRvIHRoZSBDYWNoZUluZm8gYXJyYXkuDQo+ID4+DQo+ID4+ ICsgIEBwYXJhbVtpbiwgb3V0XSBDYWNoZUluZm9Db3VudCAgICAgIEFzIGlucHV0LCBwb2ludCB0 byB0aGUgbGVuZ3RoIG9mDQo+IHJlc3BvbnNlDQo+ID4+IENhY2hlSW5mbyBhcnJheS4NCj4gPj4N Cj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgb3V0cHV0LCBw b2ludCB0byB0aGUgYWN0dWFsIGxlbmd0aCBvZiByZXNwb25zZQ0KPiA+PiBDYWNoZUluZm8gYXJy YXkuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHJldHZhbCAgICAgICAgIEVGSV9TVUND RVNTICAgICAgICAgICAgIEZ1bmN0aW9uIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4+DQo+ ID4+ICsgIEByZXR2YWwgICAgICAgICBFRklfT1VUX09GX1JFU09VUkNFUyAgICBSZXF1aXJlZCBy ZXNvdXJjZXMgY291bGQgbm90IGJlDQo+ID4+IGFsbG9jYXRlZC4NCj4gPj4NCj4gPj4gKyAgQHJl dHZhbCAgICAgICAgIEVGSV9CVUZGRVJfVE9PX1NNQUxMICAgIENhY2hlSW5mb0NvdW50IGlzIHRv byBzbWFsbCB0bw0KPiBob2xkDQo+ID4+IHRoZSByZXNwb25zZSBDYWNoZUluZm8NCj4gPj4NCj4g Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LiBDYWNo ZUluZm9Db3VudCBoYXMgYmVlbiB1cGRhdGVkIHdpdGggdGhlDQo+ID4+IGxlbmd0aCBuZWVkZWQN Cj4gPj4NCj4gPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRv IGNvbXBsZXRlIHRoZSByZXF1ZXN0Lg0KPiA+Pg0KPiA+PiArKiovDQo+ID4+DQo+ID4+ICtFRklf U1RBVFVTDQo+ID4+DQo+ID4+ICtDcHVDYWNoZUluZm9Db2xsZWN0Q3B1Q2FjaGVJbmZvRGF0YSAo DQo+ID4+DQo+ID4+ICsgIElOIENQVUlEX0NBQ0hFX0RBVEEgICAgICAgKkNhY2hlRGF0YSwNCj4g Pj4NCj4gPj4gKyAgSU4gQ1BVSURfUFJPQ0VTU09SX0lORk8gICAqUHJvY2Vzc29ySW5mbywNCj4g Pj4NCj4gPj4gKyAgSU4gVUlOVE4gICAgICAgICAgICAgICAgICBOdW1iZXJPZlByb2Nlc3NvcnMs DQo+ID4+DQo+ID4+ICsgIElOIE9VVCBDUFVfQ0FDSEVfSU5GTyAgICAgKkNhY2hlSW5mbywNCj4g Pj4NCj4gPj4gKyAgSU4gT1VUIFVJTlROICAgICAgICAgICAgICAqQ2FjaGVJbmZvQ291bnQNCj4g Pj4NCj4gPj4gKyAgKQ0KPiA+Pg0KPiA+PiArew0KPiA+Pg0KPiA+PiArICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgIFN0YXR1czsNCj4gPj4NCj4gPj4gKyAgVUlOVDMyICAgICAgICAgICAgICAg ICAgICBOdW1iZXJPZlBhY2thZ2U7DQo+ID4+DQo+ID4+ICsgIFVJTlQzMiAgICAgICAgICAgICAg ICAgICAgUGFja2FnZVtNQVhfTlVNX09GX1BBQ0tBR0VdOw0KPiA+Pg0KPiA+PiArICBVSU5UTiAg ICAgICAgICAgICAgICAgICAgIFBhY2thZ2VJbmRleDsNCj4gPj4NCj4gPj4gKyAgVUlOVE4gICAg ICAgICAgICAgICAgICAgICBUb3RhbE51bWJlck9mQ29yZVR5cGU7DQo+ID4+DQo+ID4+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgTWF4Q2FjaGVJbmZvQ291bnQ7DQo+ID4+DQo+ID4+ICsg IENQVV9DQUNIRV9JTkZPICAgICAgICAgICAgKkxvY2FsQ2FjaGVJbmZvOw0KPiA+Pg0KPiA+PiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIENhY2hlSW5mb0luZGV4Ow0KPiA+Pg0KPiA+PiAr ICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIExvY2FsQ2FjaGVJbmZvQ291bnQ7DQo+ID4+DQo+ ID4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgICAgSW5kZXg7DQo+ID4+DQo+ID4+ICsgIFVJ TlROICAgICAgICAgICAgICAgICAgICAgTmV4dEluZGV4Ow0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8vIEdldCBudW1iZXIgb2YgUGFja2FnZXMgYW5kIFBh Y2thZ2UgSUQuDQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIE51bWJlck9mUGFja2Fn ZSA9IENwdUNhY2hlSW5mb0dldE51bWJlck9mUGFja2FnZXMgKFByb2Nlc3NvckluZm8sDQo+ID4+ IE51bWJlck9mUHJvY2Vzc29ycywgUGFja2FnZSk7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4g KyAgLy8NCj4gPj4NCj4gPj4gKyAgLy8gR2V0IG51bWJlciBvZiBjb3JlIHR5cGVzIGZvciBlYWNo IHBhY2thZ2UgYW5kIGNvdW50IHRoZSB0b3RhbCBudW1iZXIuDQo+ID4+DQo+ID4+ICsgIC8vIEUu Zy4gSWYgUGFja2FnZTEgYW5kIFBhY2thZ2UyIGJvdGggaGF2ZSAyIGNvcmUgdHlwZXMsIHRoZSB0 b3RhbCBudW1iZXINCj4gaXMNCj4gPj4gNC4NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4g KyAgVG90YWxOdW1iZXJPZkNvcmVUeXBlID0gMDsNCj4gPj4NCj4gPj4gKyAgZm9yIChQYWNrYWdl SW5kZXggPSAwOyBQYWNrYWdlSW5kZXggPCBOdW1iZXJPZlBhY2thZ2U7DQo+IFBhY2thZ2VJbmRl eCsrKQ0KPiA+PiB7DQo+ID4+DQo+ID4+ICsgICAgVG90YWxOdW1iZXJPZkNvcmVUeXBlICs9DQo+ ID4+IENwdUNhY2hlSW5mb0dldE51bWJlck9mQ29yZVR5cGVQZXJQYWNrYWdlIChQcm9jZXNzb3JJ bmZvLA0KPiA+PiBOdW1iZXJPZlByb2Nlc3NvcnMsIFBhY2thZ2VbUGFja2FnZUluZGV4XSk7DQo+ ID4+DQo+ID4+ICsgIH0NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBNYXhDYWNoZUluZm9D b3VudCA9IFRvdGFsTnVtYmVyT2ZDb3JlVHlwZSAqDQo+ID4+IE1BWF9OVU1fT0ZfQ0FDSEVfUEFS QU1TX0xFQUY7DQo+ID4+DQo+ID4+ICsgIExvY2FsQ2FjaGVJbmZvID0gQWxsb2NhdGVQYWdlcyAo RUZJX1NJWkVfVE9fUEFHRVMNCj4gKE1heENhY2hlSW5mb0NvdW50ICoNCj4gPj4gc2l6ZW9mICgq TG9jYWxDYWNoZUluZm8pKSk7DQo+ID4+DQo+ID4+ICsgIEFTU0VSVCAoTG9jYWxDYWNoZUluZm8g IT0gTlVMTCk7DQo+ID4+DQo+ID4+ICsgIGlmIChMb2NhbENhY2hlSW5mbyA9PSBOVUxMKSB7DQo+ ID4+DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pg0KPiA+PiAr ICB9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgTG9jYWxDYWNoZUluZm9Db3VudCA9IDA7 DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwgTnVt YmVyT2ZQcm9jZXNzb3JzICoNCj4gPj4gTUFYX05VTV9PRl9DQUNIRV9QQVJBTVNfTEVBRjsgSW5k ZXgrKykgew0KPiA+Pg0KPiA+PiArICAgIGlmIChDYWNoZURhdGFbSW5kZXhdLkNhY2hlU2l6ZWlu S0IgPT0gMCkgew0KPiA+Pg0KPiA+PiArICAgICAgY29udGludWU7DQo+ID4+DQo+ID4+ICsgICAg fQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgICAgLy8NCj4gPj4NCj4gPj4gKyAgICAvLyBG b3IgdGhlIHNoYXJpbmcgY2FjaGVzLCBjbGVhciB0aGVpciBDYWNoZVNpemUuDQo+ID4+DQo+ID4+ ICsgICAgLy8NCj4gPj4NCj4gPj4gKyAgICBmb3IgKE5leHRJbmRleCA9IEluZGV4ICsgMTsgTmV4 dEluZGV4IDwgTnVtYmVyT2ZQcm9jZXNzb3JzICoNCj4gPj4gTUFYX05VTV9PRl9DQUNIRV9QQVJB TVNfTEVBRjsgTmV4dEluZGV4KyspIHsNCj4gPj4NCj4gPj4gKyAgICAgIGlmIChDYWNoZURhdGFb TmV4dEluZGV4XS5DYWNoZVNpemVpbktCID09IDApIHsNCj4gPj4NCj4gPj4gKyAgICAgICAgY29u dGludWU7DQo+ID4+DQo+ID4+ICsgICAgICB9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAg ICAgIGlmIChDYWNoZURhdGFbSW5kZXhdLkNhY2hlTGV2ZWwgPT0gQ2FjaGVEYXRhW05leHRJbmRl eF0uQ2FjaGVMZXZlbA0KPiAmJg0KPiA+Pg0KPiA+PiArICAgICAgICAgIENhY2hlRGF0YVtJbmRl eF0uQ2FjaGVUeXBlID09IENhY2hlRGF0YVtOZXh0SW5kZXhdLkNhY2hlVHlwZQ0KPiAmJg0KPiA+ Pg0KPiA+PiArICAgICAgICAgIFByb2Nlc3NvckluZm9bSW5kZXggLw0KPiBNQVhfTlVNX09GX0NB Q0hFX1BBUkFNU19MRUFGXS5QYWNrYWdlDQo+ID4+ID09IFByb2Nlc3NvckluZm9bTmV4dEluZGV4 IC8NCj4gTUFYX05VTV9PRl9DQUNIRV9QQVJBTVNfTEVBRl0uUGFja2FnZQ0KPiA+PiAmJg0KPiA+ Pg0KPiA+PiArICAgICAgICAgIFByb2Nlc3NvckluZm9bSW5kZXggLw0KPiBNQVhfTlVNX09GX0NB Q0hFX1BBUkFNU19MRUFGXS5Db3JlVHlwZQ0KPiA+PiA9PSBQcm9jZXNzb3JJbmZvW05leHRJbmRl eCAvDQo+IE1BWF9OVU1fT0ZfQ0FDSEVfUEFSQU1TX0xFQUZdLkNvcmVUeXBlDQo+ID4+ICYmDQo+ ID4+DQo+ID4+ICsgICAgICAgICAgKFByb2Nlc3NvckluZm9bSW5kZXggLyBNQVhfTlVNX09GX0NB Q0hFX1BBUkFNU19MRUFGXS5BcGljSWQNCj4gJg0KPiA+PiB+Q2FjaGVEYXRhW0luZGV4XS5DYWNo ZVNoYXJlQml0cykgPT0NCj4gPj4NCj4gPj4gKyAgICAgICAgICAoUHJvY2Vzc29ySW5mb1tOZXh0 SW5kZXggLw0KPiA+PiBNQVhfTlVNX09GX0NBQ0hFX1BBUkFNU19MRUFGXS5BcGljSWQgJg0KPiA+ PiB+Q2FjaGVEYXRhW05leHRJbmRleF0uQ2FjaGVTaGFyZUJpdHMpKSB7DQo+ID4+DQo+ID4+ICsg ICAgICAgIENhY2hlRGF0YVtOZXh0SW5kZXhdLkNhY2hlU2l6ZWluS0IgPSAwOyAvLyB1c2VzIHRo ZSBzaGFyaW5nIGNhY2hlDQo+ID4+DQo+ID4+ICsgICAgICB9DQo+ID4+DQo+ID4+ICsgICAgfQ0K PiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgICAgLy8NCj4gPj4NCj4gPj4gKyAgICAvLyBGb3Ig dGhlIGNhY2hlIHRoYXQgYWxyZWFkeSBleGlzdHMgaW4gTG9jYWxDYWNoZUluZm8sIGluY3JlYXNl IGl0cw0KPiA+PiBDYWNoZUNvdW50Lg0KPiA+Pg0KPiA+PiArICAgIC8vDQo+ID4+DQo+ID4+ICsg ICAgZm9yIChDYWNoZUluZm9JbmRleCA9IDA7IENhY2hlSW5mb0luZGV4IDwgTG9jYWxDYWNoZUlu Zm9Db3VudDsNCj4gPj4gQ2FjaGVJbmZvSW5kZXgrKykgew0KPiA+Pg0KPiA+PiArICAgICAgaWYg KExvY2FsQ2FjaGVJbmZvW0NhY2hlSW5mb0luZGV4XS5QYWNrYWdlICAgID09IFByb2Nlc3Nvcklu Zm9bSW5kZXggLw0KPiA+PiBNQVhfTlVNX09GX0NBQ0hFX1BBUkFNU19MRUFGXS5QYWNrYWdlICYm DQo+ID4+DQo+ID4+ICsgICAgICAgICAgTG9jYWxDYWNoZUluZm9bQ2FjaGVJbmZvSW5kZXhdLkNv cmVUeXBlICAgPT0gUHJvY2Vzc29ySW5mb1tJbmRleCAvDQo+ID4+IE1BWF9OVU1fT0ZfQ0FDSEVf UEFSQU1TX0xFQUZdLkNvcmVUeXBlICYmDQo+ID4+DQo+ID4+ICsgICAgICAgICAgTG9jYWxDYWNo ZUluZm9bQ2FjaGVJbmZvSW5kZXhdLkNhY2hlTGV2ZWwgPT0NCj4gPj4gQ2FjaGVEYXRhW0luZGV4 XS5DYWNoZUxldmVsICYmDQo+ID4+DQo+ID4+ICsgICAgICAgICAgTG9jYWxDYWNoZUluZm9bQ2Fj aGVJbmZvSW5kZXhdLkNhY2hlVHlwZSAgPT0NCj4gPj4gQ2FjaGVEYXRhW0luZGV4XS5DYWNoZVR5 cGUpIHsNCj4gPj4NCj4gPj4gKyAgICAgICAgTG9jYWxDYWNoZUluZm9bQ2FjaGVJbmZvSW5kZXhd LkNhY2hlQ291bnQrKzsNCj4gPj4NCj4gPj4gKyAgICAgICAgYnJlYWs7DQo+ID4+DQo+ID4+ICsg ICAgICB9DQo+ID4+DQo+ID4+ICsgICAgfQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgICAg Ly8NCj4gPj4NCj4gPj4gKyAgICAvLyBGb3IgdGhlIG5ldyBjYWNoZSB3aXRoIGRpZmZlcmVudCBQ YWNrYWdlLCBDb3JlVHlwZSwgQ2FjaGVMZXZlbCBvcg0KPiA+PiBDYWNoZVR5cGUsIGNvcHkgaXRz DQo+ID4+DQo+ID4+ICsgICAgLy8gZGF0YSBpbnRvIExvY2FsQ2FjaGVJbmZvIGJ1ZmZlci4NCj4g Pj4NCj4gPj4gKyAgICAvLw0KPiA+Pg0KPiA+PiArICAgIGlmIChDYWNoZUluZm9JbmRleCA9PSBM b2NhbENhY2hlSW5mb0NvdW50KSB7DQo+ID4+DQo+ID4+ICsgICAgICBBU1NFUlQgKExvY2FsQ2Fj aGVJbmZvQ291bnQgPCBNYXhDYWNoZUluZm9Db3VudCk7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4g Pj4gKyAgICAgIExvY2FsQ2FjaGVJbmZvW0xvY2FsQ2FjaGVJbmZvQ291bnRdLlBhY2thZ2UgICAg ICAgPQ0KPiBQcm9jZXNzb3JJbmZvW0luZGV4IC8NCj4gPj4gTUFYX05VTV9PRl9DQUNIRV9QQVJB TVNfTEVBRl0uUGFja2FnZTsNCj4gPj4NCj4gPj4gKyAgICAgIExvY2FsQ2FjaGVJbmZvW0xvY2Fs Q2FjaGVJbmZvQ291bnRdLkNvcmVUeXBlICAgICAgPQ0KPiBQcm9jZXNzb3JJbmZvW0luZGV4IC8N Cj4gPj4gTUFYX05VTV9PRl9DQUNIRV9QQVJBTVNfTEVBRl0uQ29yZVR5cGU7DQo+ID4+DQo+ID4+ ICsgICAgICBMb2NhbENhY2hlSW5mb1tMb2NhbENhY2hlSW5mb0NvdW50XS5DYWNoZUxldmVsICAg ID0NCj4gPj4gQ2FjaGVEYXRhW0luZGV4XS5DYWNoZUxldmVsOw0KPiA+Pg0KPiA+PiArICAgICAg TG9jYWxDYWNoZUluZm9bTG9jYWxDYWNoZUluZm9Db3VudF0uQ2FjaGVUeXBlICAgICA9DQo+ID4+ IENhY2hlRGF0YVtJbmRleF0uQ2FjaGVUeXBlOw0KPiA+Pg0KPiA+PiArICAgICAgTG9jYWxDYWNo ZUluZm9bTG9jYWxDYWNoZUluZm9Db3VudF0uQ2FjaGVXYXlzICAgICA9DQo+ID4+IENhY2hlRGF0 YVtJbmRleF0uQ2FjaGVXYXlzOw0KPiA+Pg0KPiA+PiArICAgICAgTG9jYWxDYWNoZUluZm9bTG9j YWxDYWNoZUluZm9Db3VudF0uQ2FjaGVTaXplaW5LQiA9DQo+ID4+IENhY2hlRGF0YVtJbmRleF0u Q2FjaGVTaXplaW5LQjsNCj4gPj4NCj4gPj4gKyAgICAgIExvY2FsQ2FjaGVJbmZvW0xvY2FsQ2Fj aGVJbmZvQ291bnRdLkNhY2hlQ291bnQgICAgPSAxOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ ICsgICAgICBMb2NhbENhY2hlSW5mb0NvdW50Kys7DQo+ID4+DQo+ID4+ICsgICAgfQ0KPiA+Pg0K PiA+PiArICB9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgaWYgKCpDYWNoZUluZm9Db3Vu dCA8IExvY2FsQ2FjaGVJbmZvQ291bnQpIHsNCj4gPj4NCj4gPj4gKyAgICBTdGF0dXMgPSBFRklf QlVGRkVSX1RPT19TTUFMTDsNCj4gPj4NCj4gPj4gKyAgfSBlbHNlIHsNCj4gPj4NCj4gPj4gKyAg ICBDb3B5TWVtIChDYWNoZUluZm8sIExvY2FsQ2FjaGVJbmZvLCBzaXplb2YgKCpDYWNoZUluZm8p ICoNCj4gPj4gTG9jYWxDYWNoZUluZm9Db3VudCk7DQo+ID4+DQo+ID4+ICsgICAgREVCVUdfQ09E RSAoDQo+ID4+DQo+ID4+ICsgICAgICBDcHVDYWNoZUluZm9QcmludENwdUNhY2hlSW5mb1RhYmxl IChDYWNoZUluZm8sDQo+IExvY2FsQ2FjaGVJbmZvQ291bnQpOw0KPiA+Pg0KPiA+PiArICAgICk7 DQo+ID4+DQo+ID4+ICsgICAgU3RhdHVzID0gRUZJX1NVQ0NFU1M7DQo+ID4+DQo+ID4+ICsgIH0N Cj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICAqQ2FjaGVJbmZvQ291bnQgPSBMb2NhbENhY2hl SW5mb0NvdW50Ow0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEZyZWVQYWdlcyAoTG9jYWxD YWNoZUluZm8sIEVGSV9TSVpFX1RPX1BBR0VTIChNYXhDYWNoZUluZm9Db3VudCAqDQo+ID4+IHNp emVvZiAoKkxvY2FsQ2FjaGVJbmZvKSkpOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIHJl dHVybiBTdGF0dXM7DQo+ID4+DQo+ID4+ICt9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8q Kg0KPiA+Pg0KPiA+PiArICBHZXQgQ3B1Q2FjaGVJbmZvIGRhdGEgYXJyYXkuDQo+ID4+DQo+ID4+ ICsNCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luLCBvdXRdIENwdUNhY2hlSW5mbyAgICAgICAgUG9p bnRlciB0byB0aGUgQ3B1Q2FjaGVJbmZvIGFycmF5Lg0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW4s IG91dF0gQ3B1Q2FjaGVJbmZvQ291bnQgICBBcyBpbnB1dCwgcG9pbnQgdG8gdGhlIGxlbmd0aCBv Zg0KPiA+PiByZXNwb25zZSBDcHVDYWNoZUluZm8gYXJyYXkuDQo+ID4+DQo+ID4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzIG91dHB1dCwgcG9pbnQgdG8gdGhlIGFj dHVhbCBsZW5ndGggb2YgcmVzcG9uc2UNCj4gPj4gQ3B1Q2FjaGVJbmZvIGFycmF5Lg0KPiA+Pg0K PiA+PiArDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwgICAgICAgICBFRklfU1VDQ0VTUyAgICAgICAg ICAgICBGdW5jdGlvbiBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+Pg0KPiA+PiArICBAcmV0 dmFsICAgICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgQ3B1Q2FjaGVJbmZvQ291bnQgaXMg TlVMTC4NCj4gPj4NCj4gPj4gKyAgQHJldHZhbCAgICAgICAgIEVGSV9JTlZBTElEX1BBUkFNRVRF UiAgIENwdUNhY2hlSW5mbyBpcyBOVUxMIHdoaWxlDQo+ID4+IENwdUNhY2hlSW5mb0NvdW50IGNv bnRhaW5zIHRoZSB2YWx1ZQ0KPiA+Pg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3JlYXRlciB0aGFuIHplcm8uDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwg ICAgICAgICBFRklfVU5TVVBQT1JURUQgICAgICAgICBQcm9jZXNzb3IgZG9lcyBub3Qgc3VwcG9y dA0KPiA+PiBDUFVJRF9DQUNIRV9QQVJBTVMgTGVhZi4NCj4gPj4NCj4gPj4gKyAgQHJldHZhbCAg ICAgICAgIEVGSV9OT1RfRk9VTkQgICAgICAgICAgIEVES0lJX1BFSV9NUF9TRVJWSUNFUzJfUFBJ IG9yDQo+ID4+IEVGSV9NUF9TRVJWSUNFU19QUk9UT0NPTCBpbnRlcmZhY2UNCj4gPj4NCj4gPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzIG5vdCBmb3VuZC4N Cj4gPj4NCj4gPj4gKyAgQHJldHZhbCAgICAgICAgIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTICAgIFJl cXVpcmVkIHJlc291cmNlcyBjb3VsZCBub3QgYmUNCj4gPj4gYWxsb2NhdGVkLg0KPiA+Pg0KPiA+ PiArICBAcmV0dmFsICAgICAgICAgRUZJX0JVRkZFUl9UT09fU01BTEwgICAgQ3B1Q2FjaGVJbmZv Q291bnQgaXMgdG9vIHNtYWxsDQo+IHRvDQo+ID4+IGhvbGQgdGhlIHJlc3BvbnNlIENwdUNhY2hl SW5mbw0KPiA+Pg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXJyYXkuIENwdUNhY2hlSW5mb0NvdW50IGhhcyBiZWVuIHVwZGF0ZWQgd2l0aA0KPiA+PiB0 aGUgbGVuZ3RoIG5lZWRlZA0KPiA+Pg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdG8gY29tcGxldGUgdGhlIHJlcXVlc3QuDQo+ID4+DQo+ID4+ICsqKi8N Cj4gPj4NCj4gPj4gK0VGSV9TVEFUVVMNCj4gPj4NCj4gPj4gK0VGSUFQSQ0KPiA+Pg0KPiA+PiAr R2V0Q3B1Q2FjaGVJbmZvICgNCj4gPj4NCj4gPj4gKyAgSU4gT1VUIENQVV9DQUNIRV9JTkZPICAg ICAqQ3B1Q2FjaGVJbmZvLA0KPiA+Pg0KPiA+PiArICBJTiBPVVQgVUlOVE4gICAgICAgICAgICAg ICpDcHVDYWNoZUluZm9Db3VudA0KPiA+Pg0KPiA+PiArICApDQo+ID4+DQo+ID4+ICt7DQo+ID4+ DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+Pg0KPiA+PiAr ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIENwdWlkTWF4SW5wdXQ7DQo+ID4+DQo+ID4+ICsg IFVJTlQzMiAgICAgICAgICAgICAgICAgICAgTnVtYmVyT2ZQcm9jZXNzb3JzOw0KPiA+Pg0KPiA+ PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIENhY2hlRGF0YUNvdW50Ow0KPiA+Pg0KPiA+ PiArICBVSU5UTiAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NvckluZGV4Ow0KPiA+Pg0KPiA+ PiArICBFRklfUFJPQ0VTU09SX0lORk9STUFUSU9OIFByb2Nlc3NvckluZm87DQo+ID4+DQo+ID4+ ICsgIENPTExFQ1RfQ1BVSURfQ0FDSEVfREFUQV9DT05URVhUICBDb250ZXh0Ow0KPiA+Pg0KPiA+ PiArDQo+ID4+DQo+ID4+ICsgIGlmIChDcHVDYWNoZUluZm9Db3VudCA9PSBOVUxMKSB7DQo+ID4+ DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4NCj4gPj4gKyAg fQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIGlmICgqQ3B1Q2FjaGVJbmZvQ291bnQgIT0g MCAmJiBDcHVDYWNoZUluZm8gPT0gTlVMTCkgew0KPiA+Pg0KPiA+PiArICAgIHJldHVybiBFRklf SU5WQUxJRF9QQVJBTUVURVI7DQo+ID4+DQo+ID4+ICsgIH0NCj4gPj4NCj4gPj4gKw0KPiA+Pg0K PiA+PiArICBBc21DcHVpZCAoQ1BVSURfU0lHTkFUVVJFLCAmQ3B1aWRNYXhJbnB1dCwgTlVMTCwg TlVMTCwgTlVMTCk7DQo+ID4+DQo+ID4+ICsgIGlmIChDcHVpZE1heElucHV0IDwgQ1BVSURfQ0FD SEVfUEFSQU1TKSB7DQo+ID4+DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4g Pj4NCj4gPj4gKyAgfQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ ICsgIC8vIEluaXRpYWxpemUgQ09MTEVDVF9DUFVJRF9DQUNIRV9EQVRBX0NPTlRFWFQuTXBTZXJ2 aWNlcy4NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgU3RhdHVzID0gQ3B1Q2FjaGVJ bmZvR2V0TXBTZXJ2aWNlcyAoJkNvbnRleHQuTXBTZXJ2aWNlcyk7DQo+ID4+DQo+ID4+ICsgIGlm IChFRklfRVJST1IoU3RhdHVzKSkgew0KPiA+Pg0KPiA+PiArICAgIHJldHVybiBTdGF0dXM7DQo+ ID4+DQo+ID4+ICsgIH0NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBOdW1iZXJPZlByb2Nl c3NvcnMgPSBDcHVDYWNoZUluZm9HZXROdW1iZXJPZlByb2Nlc3NvcnMNCj4gPj4gKENvbnRleHQu TXBTZXJ2aWNlcyk7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4g KyAgLy8gSW5pdGlhbGl6ZSBDT0xMRUNUX0NQVUlEX0NBQ0hFX0RBVEFfQ09OVEVYVC5Qcm9jZXNz b3JJbmZvLg0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBDb250ZXh0LlByb2Nlc3Nv ckluZm8gPSBBbGxvY2F0ZVBhZ2VzIChFRklfU0laRV9UT19QQUdFUw0KPiA+PiAoTnVtYmVyT2ZQ cm9jZXNzb3JzICogc2l6ZW9mICgqQ29udGV4dC5Qcm9jZXNzb3JJbmZvKSkpOw0KPiA+Pg0KPiA+ PiArICBBU1NFUlQgKENvbnRleHQuUHJvY2Vzc29ySW5mbyAhPSBOVUxMKTsNCj4gPj4NCj4gPj4g KyAgaWYgKENvbnRleHQuUHJvY2Vzc29ySW5mbyA9PSBOVUxMKSB7DQo+ID4+DQo+ID4+ICsgICAg cmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pg0KPiA+PiArICB9DQo+ID4+DQo+ID4+ ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8vIEluaXRpYWxpemUgQ09MTEVDVF9DUFVJRF9DQUNIRV9E QVRBX0NPTlRFWFQuQ2FjaGVEYXRhLg0KPiA+Pg0KPiA+PiArICAvLyBDYWNoZURhdGEgYXJyYXkg Y29uc2lzdHMgb2YgQ1BVSURfQ0FDSEVfREFUQSBkYXRhIHN0cnVjdHVyZSBmb3INCj4gZWFjaA0K PiA+PiBDcHVpZCBDYWNoZSBQYXJhbWV0ZXIgTGVhZg0KPiA+Pg0KPiA+PiArICAvLyBwZXIgbG9n aWNhbCBwcm9jZXNzb3IuIFRoZSBhcnJheSBiZWdpbiB3aXRoIGRhdGEgb2YgZWFjaCBDYWNoZQ0K PiBQYXJhbWV0ZXINCj4gPj4gTGVhZiBvZiBwcm9jZXNzb3IgMCwgZm9sbG93ZWQNCj4gPj4NCj4g Pj4gKyAgLy8gYnkgZGF0YSBvZiBlYWNoIENhY2hlIFBhcmFtZXRlciBMZWFmIG9mIHByb2Nlc3Nv ciAxIC4uLg0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBDYWNoZURhdGFDb3VudCA9 IE51bWJlck9mUHJvY2Vzc29ycyAqDQo+ID4+IE1BWF9OVU1fT0ZfQ0FDSEVfUEFSQU1TX0xFQUY7 DQo+ID4+DQo+ID4+ICsgIENvbnRleHQuQ2FjaGVEYXRhID0gQWxsb2NhdGVQYWdlcyAoRUZJX1NJ WkVfVE9fUEFHRVMNCj4gKENhY2hlRGF0YUNvdW50ICoNCj4gPj4gc2l6ZW9mICgqQ29udGV4dC5D YWNoZURhdGEpKSk7DQo+ID4+DQo+ID4+ICsgIEFTU0VSVCAoQ29udGV4dC5DYWNoZURhdGEgIT0g TlVMTCk7DQo+ID4+DQo+ID4+ICsgIGlmIChDb250ZXh0LkNhY2hlRGF0YSA9PSBOVUxMKSB7DQo+ ID4+DQo+ID4+ICsgICAgRnJlZVBhZ2VzIChDb250ZXh0LlByb2Nlc3NvckluZm8sIEVGSV9TSVpF X1RPX1BBR0VTDQo+ID4+IChOdW1iZXJPZlByb2Nlc3NvcnMgKiBzaXplb2YgKCpDb250ZXh0LlBy b2Nlc3NvckluZm8pKSk7DQo+ID4+DQo+ID4+ICsgICAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VS Q0VTOw0KPiA+Pg0KPiA+PiArICB9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgWmVyb01l bSAoQ29udGV4dC5DYWNoZURhdGEsIENhY2hlRGF0YUNvdW50ICogc2l6ZW9mDQo+ID4+ICgqQ29u dGV4dC5DYWNoZURhdGEpKTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0K PiA+PiArICAvLyBDb2xsZWN0IFBhY2thZ2UgSUQgYW5kIEFQSUMgSUQgb2YgYWxsIHByb2Nlc3Nv cnMuDQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIGZvciAoUHJvY2Vzc29ySW5kZXgg PSAwOyBQcm9jZXNzb3JJbmRleCA8IE51bWJlck9mUHJvY2Vzc29yczsNCj4gPj4gUHJvY2Vzc29y SW5kZXgrKykgew0KPiA+Pg0KPiA+PiArICAgIENwdUNhY2hlSW5mb0dldFByb2Nlc3NvckluZm8g KENvbnRleHQuTXBTZXJ2aWNlcywgUHJvY2Vzc29ySW5kZXgsDQo+ID4+ICZQcm9jZXNzb3JJbmZv KTsNCj4gPj4NCj4gPj4gKyAgICBDb250ZXh0LlByb2Nlc3NvckluZm9bUHJvY2Vzc29ySW5kZXhd LlBhY2thZ2UgPQ0KPiA+PiBQcm9jZXNzb3JJbmZvLkxvY2F0aW9uLlBhY2thZ2U7DQo+ID4+DQo+ ID4+ICsgICAgQ29udGV4dC5Qcm9jZXNzb3JJbmZvW1Byb2Nlc3NvckluZGV4XS5BcGljSWQgID0g KFVJTlQzMikNCj4gPj4gUHJvY2Vzc29ySW5mby5Qcm9jZXNzb3JJZDsNCj4gPj4NCj4gPj4gKyAg fQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8vIFdha2V1 cCBhbGwgcHJvY2Vzc29ycyBmb3IgQ2FjaGVEYXRhKGNvcmUgdHlwZSBhbmQgY2FjaGUgZGF0YSkN Cj4gY29sbGVjdGlvbi4NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgQ3B1Q2FjaGVJ bmZvU3RhcnR1cEFsbENQVXMgKENvbnRleHQuTXBTZXJ2aWNlcywNCj4gPj4gQ3B1Q2FjaGVJbmZv Q29sbGVjdENvcmVBbmRDYWNoZURhdGEsICZDb250ZXh0KTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0K PiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICAvLyBDb2xsZWN0IENwdUNhY2hlSW5mbyBkYXRhIGZy b20gQ2FjaGVEYXRhLg0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBTdGF0dXMgPSBD cHVDYWNoZUluZm9Db2xsZWN0Q3B1Q2FjaGVJbmZvRGF0YSAoQ29udGV4dC5DYWNoZURhdGEsDQo+ ID4+IENvbnRleHQuUHJvY2Vzc29ySW5mbywgTnVtYmVyT2ZQcm9jZXNzb3JzLCBDcHVDYWNoZUlu Zm8sDQo+ID4+IENwdUNhY2hlSW5mb0NvdW50KTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiAr ICBGcmVlUGFnZXMgKENvbnRleHQuQ2FjaGVEYXRhLCBFRklfU0laRV9UT19QQUdFUyAoQ2FjaGVE YXRhQ291bnQgKg0KPiA+PiBzaXplb2YgKCpDb250ZXh0LkNhY2hlRGF0YSkpKTsNCj4gPj4NCj4g Pj4gKyAgRnJlZVBhZ2VzIChDb250ZXh0LlByb2Nlc3NvckluZm8sIEVGSV9TSVpFX1RPX1BBR0VT DQo+ID4+IChOdW1iZXJPZlByb2Nlc3NvcnMgKiBzaXplb2YgKCpDb250ZXh0LlByb2Nlc3Nvcklu Zm8pKSk7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPj4N Cj4gPj4gK30NCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVD YWNoZUluZm9MaWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmMNCj4gPj4gYi9VZWZpQ3B1UGtnL0xpYnJh cnkvQ3B1Q2FjaGVJbmZvTGliL0R4ZUNwdUNhY2hlSW5mb0xpYi5jDQo+ID4+IG5ldyBmaWxlIG1v ZGUgMTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uYmI3ODhlMzYxNDZiDQo+ID4+IC0t LSAvZGV2L251bGwNCj4gPj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xp Yi9EeGVDcHVDYWNoZUluZm9MaWIuYw0KPiA+PiBAQCAtMCwwICsxLDEyMCBAQA0KPiA+PiArLyoq IEBmaWxlDQo+ID4+DQo+ID4+ICsgIFByb3ZpZGVzIGNhY2hlIGluZm8gZm9yIGVhY2ggcGFja2Fn ZSwgY29yZSB0eXBlLCBjYWNoZSBsZXZlbCBhbmQgY2FjaGUNCj4gdHlwZS4NCj4gPj4NCj4gPj4g Kw0KPiA+Pg0KPiA+PiArICBDb3B5cmlnaHQgKGMpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24uIEFs bCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pg0KPiA+PiArICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsqKi8N Cj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArI2luY2x1ZGUgPFBpRHhlLmg+DQo+ID4+DQo+ID4+ ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4+DQo+ID4+ICsjaW5jbHVkZSA8TGli cmFyeS9EZWJ1Z0xpYi5oPg0KPiA+Pg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RT ZXJ2aWNlc1RhYmxlTGliLmg+DQo+ID4+DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9DcHVDYWNo ZUluZm9MaWIuaD4NCj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxJbnRlcm5hbENwdUNhY2hlSW5mb0xp Yi5oPg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4gPj4NCj4gPj4gKyAgR2V0IEVG SV9NUF9TRVJWSUNFU19QUk9UT0NPTCBwb2ludGVyLg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ ICsgIEBwYXJhbVtvdXRdIE1wU2VydmljZXMgICAgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgd2hl cmUNCj4gPj4gRUZJX01QX1NFUlZJQ0VTX1BST1RPQ09MIGlzIHN0b3JlZA0KPiA+Pg0KPiA+PiAr DQo+ID4+DQo+ID4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgRUZJX01QX1NFUlZJQ0VT X1BST1RPQ09MIGludGVyZmFjZSBpcw0KPiA+PiByZXR1cm5lZA0KPiA+Pg0KPiA+PiArICBAcmV0 dmFsIEVGSV9OT1RfRk9VTkQgICAgIEVGSV9NUF9TRVJWSUNFU19QUk9UT0NPTCBpbnRlcmZhY2Ug aXMNCj4gbm90DQo+ID4+IGZvdW5kDQo+ID4+DQo+ID4+ICsqKi8NCj4gPj4NCj4gPj4gK0VGSV9T VEFUVVMNCj4gPj4NCj4gPj4gK0NwdUNhY2hlSW5mb0dldE1wU2VydmljZXMgKA0KPiA+Pg0KPiA+ PiArICBPVVQgTVBfU0VSVklDRVMgICAgICAgICAgICpNcFNlcnZpY2VzDQo+ID4+DQo+ID4+ICsg ICkNCj4gPj4NCj4gPj4gK3sNCj4gPj4NCj4gPj4gKyAgRUZJX1NUQVRVUyAgICAgICAgICAgICAg ICBTdGF0dXM7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgU3RhdHVzID0gZ0JTLT5Mb2Nh dGVQcm90b2NvbCAoJmdFZmlNcFNlcnZpY2VQcm90b2NvbEd1aWQsIE5VTEwsIChWT0lEDQo+ID4+ ICoqKSZNcFNlcnZpY2VzLT5Qcm90b2NvbCk7DQo+ID4+DQo+ID4+ICsgIEFTU0VSVF9FRklfRVJS T1IgKFN0YXR1cyk7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgcmV0dXJuIFN0YXR1czsN Cj4gPj4NCj4gPj4gK30NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArLyoqDQo+ID4+DQo+ID4+ ICsgIEFjdGl2YXRlIGFsbCBvZiB0aGUgbG9naWNhbCBwcm9jZXNzb3JzLg0KPiA+Pg0KPiA+PiAr DQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIE1wU2VydmljZXMgICAgICAgICAgTVBfU0VSVklD RVMgc3RydWN0dXJlLg0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICBQcm9jZWR1cmUgICAgICAg ICAgIEEgcG9pbnRlciB0byB0aGUgZnVuY3Rpb24gdG8gYmUgcnVuIG9uDQo+IGVuYWJsZWQNCj4g Pj4gbG9naWNhbCBwcm9jZXNzb3JzLg0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICBQcm9jZWR1 cmVBcmd1bWVudCAgIFRoZSBwYXJhbWV0ZXIgcGFzc2VkIGludG8gUHJvY2VkdXJlDQo+IGZvcg0K PiA+PiBhbGwgZW5hYmxlZCBsb2dpY2FsIHByb2Nlc3NvcnMuDQo+ID4+DQo+ID4+ICsqKi8NCj4g Pj4NCj4gPj4gK1ZPSUQNCj4gPj4NCj4gPj4gK0NwdUNhY2hlSW5mb1N0YXJ0dXBBbGxDUFVzICgN Cj4gPj4NCj4gPj4gKyAgSU4gTVBfU0VSVklDRVMgICAgICAgICAgICBNcFNlcnZpY2VzLA0KPiA+ Pg0KPiA+PiArICBJTiBFRklfQVBfUFJPQ0VEVVJFICAgICAgIFByb2NlZHVyZSwNCj4gPj4NCj4g Pj4gKyAgSU4gVk9JRCAgICAgICAgICAgICAgICAgICAqUHJvY2VkdXJlQXJndW1lbnQNCj4gPj4N Cj4gPj4gKyAgKQ0KPiA+Pg0KPiA+PiArew0KPiA+Pg0KPiA+PiArICBFRklfU1RBVFVTICAgICAg ICAgICAgICAgIFN0YXR1czsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBTdGF0dXMgPSBN cFNlcnZpY2VzLlByb3RvY29sLT5TdGFydHVwQWxsQVBzIChNcFNlcnZpY2VzLlByb3RvY29sLA0K PiA+PiBQcm9jZWR1cmUsIEZBTFNFLCBOVUxMLCAwLCBQcm9jZWR1cmVBcmd1bWVudCwgTlVMTCk7 DQo+ID4+DQo+ID4+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4+DQo+ID4+ICsN Cj4gPj4NCj4gPj4gKyAgUHJvY2VkdXJlIChQcm9jZWR1cmVBcmd1bWVudCk7DQo+ID4+DQo+ID4+ ICt9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8qKg0KPiA+Pg0KPiA+PiArICBHZXQgZGV0 YWlsZWQgaW5mb3JtYXRpb24gb2YgdGhlIHJlcXVlc3RlZCBsb2dpY2FsIHByb2Nlc3Nvci4NCj4g Pj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICBNcFNlcnZpY2VzICAgICAgICAg IE1QX1NFUlZJQ0VTIHN0cnVjdHVyZS4NCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luXSAgUHJvY2Vz c29yTnVtICAgICAgICBUaGUgcmVxdWVzdGVkIGxvZ2ljYWwgcHJvY2Vzc29yIG51bWJlci4NCj4g Pj4NCj4gPj4gKyAgQHBhcmFtW291dF0gUHJvY2Vzc29ySW5mbyAgICAgICBBIHBvaW50ZXIgdG8g dGhlIGJ1ZmZlciB3aGVyZSB0aGUNCj4gcHJvY2Vzc29yDQo+ID4+IGluZm9ybWF0aW9uIGlzIHN0 b3JlZA0KPiA+Pg0KPiA+PiArKiovDQo+ID4+DQo+ID4+ICtWT0lEDQo+ID4+DQo+ID4+ICtDcHVD YWNoZUluZm9HZXRQcm9jZXNzb3JJbmZvICgNCj4gPj4NCj4gPj4gKyAgSU4gTVBfU0VSVklDRVMg ICAgICAgICAgICAgICAgTXBTZXJ2aWNlcywNCj4gPj4NCj4gPj4gKyAgSU4gVUlOVE4gICAgICAg ICAgICAgICAgICAgICAgUHJvY2Vzc29yTnVtLA0KPiA+Pg0KPiA+PiArICBPVVQgRUZJX1BST0NF U1NPUl9JTkZPUk1BVElPTiAqUHJvY2Vzc29ySW5mbw0KPiA+Pg0KPiA+PiArICApDQo+ID4+DQo+ ID4+ICt7DQo+ID4+DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIFN0YXR1cyA9IE1wU2VydmljZXMuUHJvdG9jb2wt PkdldFByb2Nlc3NvckluZm8gKE1wU2VydmljZXMuUHJvdG9jb2wsDQo+ID4+IFByb2Nlc3Nvck51 bSwgUHJvY2Vzc29ySW5mbyk7DQo+ID4+DQo+ID4+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1 cyk7DQo+ID4+DQo+ID4+ICt9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8qKg0KPiA+Pg0K PiA+PiArICBHZXQgdGhlIGxvZ2ljYWwgcHJvY2Vzc29yIG51bWJlci4NCj4gPj4NCj4gPj4gKw0K PiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICBNcFNlcnZpY2VzICAgICAgICAgIE1QX1NFUlZJQ0VT IHN0cnVjdHVyZS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcmV0dmFsICBSZXR1cm4g dGhlIGxvZ2ljYWwgcHJvY2Vzc29yIG51bWJlci4NCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+ PiArVUlOVDMyDQo+ID4+DQo+ID4+ICtDcHVDYWNoZUluZm9XaG9BbUkgKA0KPiA+Pg0KPiA+PiAr ICBJTiBNUF9TRVJWSUNFUyAgICAgICAgICAgIE1wU2VydmljZXMNCj4gPj4NCj4gPj4gKyAgKQ0K PiA+Pg0KPiA+PiArew0KPiA+Pg0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0 YXR1czsNCj4gPj4NCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBQcm9jZXNzb3JO dW07DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgU3RhdHVzID0gTXBTZXJ2aWNlcy5Qcm90 b2NvbC0+V2hvQW1JIChNcFNlcnZpY2VzLlByb3RvY29sLA0KPiA+PiAmUHJvY2Vzc29yTnVtKTsN Cj4gPj4NCj4gPj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPj4NCj4gPj4gKw0K PiA+Pg0KPiA+PiArICByZXR1cm4gKFVJTlQzMilQcm9jZXNzb3JOdW07DQo+ID4+DQo+ID4+ICt9 DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8qKg0KPiA+Pg0KPiA+PiArICBHZXQgdGhlIHRv dGFsIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMgaW4gdGhlIHBsYXRmb3JtLg0KPiA+Pg0K PiA+PiArDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIE1wU2VydmljZXMgICAgICAgICAgTVBf U0VSVklDRVMgc3RydWN0dXJlLg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwg IFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGxvZ2ljYWwgcHJvY2Vzc29ycy4NCj4gPj4NCj4g Pj4gKyoqLw0KPiA+Pg0KPiA+PiArVUlOVDMyDQo+ID4+DQo+ID4+ICtDcHVDYWNoZUluZm9HZXRO dW1iZXJPZlByb2Nlc3NvcnMgKA0KPiA+Pg0KPiA+PiArICBJTiBNUF9TRVJWSUNFUyAgICAgICAg ICAgIE1wU2VydmljZXMNCj4gPj4NCj4gPj4gKyAgKQ0KPiA+Pg0KPiA+PiArew0KPiA+Pg0KPiA+ PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1czsNCj4gPj4NCj4gPj4gKyAgVUlO VE4gICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZlByb2Nlc3NvcjsNCj4gPj4NCj4gPj4gKyAg VUlOVE4gICAgICAgICAgICAgICAgICAgICBOdW1iZXJPZkVuYWJsZWRQcm9jZXNzb3I7DQo+ID4+ DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgU3RhdHVzID0gTXBTZXJ2aWNlcy5Qcm90b2NvbC0+R2V0 TnVtYmVyT2ZQcm9jZXNzb3JzDQo+ID4+IChNcFNlcnZpY2VzLlByb3RvY29sLCAmTnVtYmVyT2ZQ cm9jZXNzb3IsICZOdW1iZXJPZkVuYWJsZWRQcm9jZXNzb3IpOw0KPiA+Pg0KPiA+PiArICBBU1NF UlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIHJldHVy biAoVUlOVDMyKU51bWJlck9mUHJvY2Vzc29yOw0KPiA+Pg0KPiA+PiArfQ0KPiA+Pg0KPiA+PiBk aWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9QZWlDcHVDYWNo ZUluZm9MaWIuYw0KPiA+PiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIvUGVp Q3B1Q2FjaGVJbmZvTGliLmMNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXgg MDAwMDAwMDAwMDAwLi4wNmMxNjA0MjFiMDANCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysg Yi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1Q2FjaGVJbmZvTGliL1BlaUNwdUNhY2hlSW5mb0xpYi5j DQo+ID4+IEBAIC0wLDAgKzEsMTE5IEBADQo+ID4+ICsvKiogQGZpbGUNCj4gPj4NCj4gPj4gKyAg UHJvdmlkZXMgY2FjaGUgaW5mbyBmb3IgZWFjaCBwYWNrYWdlLCBjb3JlIHR5cGUsIGNhY2hlIGxl dmVsIGFuZCBjYWNoZQ0KPiB0eXBlLg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIENvcHly aWdodCAoYykgMjAyMCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+ DQo+ID4+DQo+ID4+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0 ZW50DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ ID4+ICsjaW5jbHVkZSA8UGlQZWkuaD4NCj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jh c2VMaWIuaD4NCj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0RlYnVnTGliLmg+DQo+ID4+ DQo+ID4+ICsjaW5jbHVkZSA8TGlicmFyeS9QZWlTZXJ2aWNlc0xpYi5oPg0KPiA+Pg0KPiA+PiAr I2luY2x1ZGUgPExpYnJhcnkvUGVpU2VydmljZXNUYWJsZVBvaW50ZXJMaWIuaD4NCj4gPj4NCj4g Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi5oPg0KPiA+Pg0KPiA+PiArI2lu Y2x1ZGUgPEludGVybmFsQ3B1Q2FjaGVJbmZvTGliLmg+DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4g Pj4gKy8qKg0KPiA+Pg0KPiA+PiArICBHZXQgRURLSUlfUEVJX01QX1NFUlZJQ0VTMl9QUEkgcG9p bnRlci4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcGFyYW1bb3V0XSBNcFNlcnZpY2Vz ICAgIEEgcG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJlDQo+ID4+IEVES0lJX1BFSV9NUF9TRVJW SUNFUzJfUFBJIGlzIHN0b3JlZA0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgRURLSUlfUEVJX01QX1NFUlZJQ0VTMl9QUEkgaW50ZXJmYWNlIGlz DQo+IHJldHVybmVkDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgICAgRURL SUlfUEVJX01QX1NFUlZJQ0VTMl9QUEkgaW50ZXJmYWNlIGlzDQo+IG5vdA0KPiA+PiBmb3VuZA0K PiA+Pg0KPiA+PiArKiovDQo+ID4+DQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+DQo+ID4+ICtDcHVD YWNoZUluZm9HZXRNcFNlcnZpY2VzICgNCj4gPj4NCj4gPj4gKyAgT1VUIE1QX1NFUlZJQ0VTICAg ICAgICAgICAqTXBTZXJ2aWNlcw0KPiA+Pg0KPiA+PiArICApDQo+ID4+DQo+ID4+ICt7DQo+ID4+ DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+Pg0KPiA+PiAr DQo+ID4+DQo+ID4+ICsgIFN0YXR1cyA9IFBlaVNlcnZpY2VzTG9jYXRlUHBpICgmZ0Vka2lpUGVp TXBTZXJ2aWNlczJQcGlHdWlkLCAwLCBOVUxMLA0KPiA+PiAoVk9JRCAqKikmTXBTZXJ2aWNlcy0+ UHBpKTsNCj4gPj4NCj4gPj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPj4NCj4g Pj4gKw0KPiA+Pg0KPiA+PiArICByZXR1cm4gU3RhdHVzOw0KPiA+Pg0KPiA+PiArfQ0KPiA+Pg0K PiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4gPj4NCj4gPj4gKyAgQWN0aXZhdGUgYWxsIG9mIHRo ZSBsb2dpY2FsIHByb2Nlc3NvcnMuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHBhcmFt W2luXSAgTXBTZXJ2aWNlcyAgICAgICAgICBNUF9TRVJWSUNFUyBzdHJ1Y3R1cmUuDQo+ID4+DQo+ ID4+ICsgIEBwYXJhbVtpbl0gIFByb2NlZHVyZSAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBm dW5jdGlvbiB0byBiZSBydW4gb24NCj4gZW5hYmxlZA0KPiA+PiBsb2dpY2FsIHByb2Nlc3NvcnMu DQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIFByb2NlZHVyZUFyZ3VtZW50ICAgVGhlIHBhcmFt ZXRlciBwYXNzZWQgaW50byBQcm9jZWR1cmUNCj4gZm9yDQo+ID4+IGFsbCBlbmFibGVkIGxvZ2lj YWwgcHJvY2Vzc29ycy4NCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVk9JRA0KPiA+Pg0K PiA+PiArQ3B1Q2FjaGVJbmZvU3RhcnR1cEFsbENQVXMgKA0KPiA+Pg0KPiA+PiArICBJTiBNUF9T RVJWSUNFUyAgICAgICAgICAgIE1wU2VydmljZXMsDQo+ID4+DQo+ID4+ICsgIElOIEVGSV9BUF9Q Uk9DRURVUkUgICAgICAgUHJvY2VkdXJlLA0KPiA+Pg0KPiA+PiArICBJTiBWT0lEICAgICAgICAg ICAgICAgICAgICpQcm9jZWR1cmVBcmd1bWVudA0KPiA+Pg0KPiA+PiArICApDQo+ID4+DQo+ID4+ ICt7DQo+ID4+DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgU3RhdHVzOw0KPiA+ Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIFN0YXR1cyA9IE1wU2VydmljZXMuUHBpLT5TdGFydHVw QWxsQ1BVcyAoTXBTZXJ2aWNlcy5QcGksIFByb2NlZHVyZSwgMCwNCj4gPj4gUHJvY2VkdXJlQXJn dW1lbnQpOw0KPiA+Pg0KPiA+PiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+Pg0K PiA+PiArfQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4gPj4NCj4gPj4gKyAgR2V0 IGRldGFpbGVkIGluZm9ybWF0aW9uIG9mIHRoZSByZXF1ZXN0ZWQgbG9naWNhbCBwcm9jZXNzb3Iu DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luXSAgTXBTZXJ2aWNlcyAgICAg ICAgICBNUF9TRVJWSUNFUyBzdHJ1Y3R1cmUuDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIFBy b2Nlc3Nvck51bSAgICAgICAgVGhlIHJlcXVlc3RlZCBsb2dpY2FsIHByb2Nlc3NvciBudW1iZXIu DQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtvdXRdIFByb2Nlc3NvckluZm8gICAgICAgQSBwb2ludGVy IHRvIHRoZSBidWZmZXIgd2hlcmUgdGhlDQo+IHByb2Nlc3Nvcg0KPiA+PiBpbmZvcm1hdGlvbiBp cyBzdG9yZWQNCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVk9JRA0KPiA+Pg0KPiA+PiAr Q3B1Q2FjaGVJbmZvR2V0UHJvY2Vzc29ySW5mbyAoDQo+ID4+DQo+ID4+ICsgIElOIE1QX1NFUlZJ Q0VTICAgICAgICAgICAgICAgIE1wU2VydmljZXMsDQo+ID4+DQo+ID4+ICsgIElOIFVJTlROICAg ICAgICAgICAgICAgICAgICAgIFByb2Nlc3Nvck51bSwNCj4gPj4NCj4gPj4gKyAgT1VUIEVGSV9Q Uk9DRVNTT1JfSU5GT1JNQVRJT04gKlByb2Nlc3NvckluZm8NCj4gPj4NCj4gPj4gKyAgKQ0KPiA+ Pg0KPiA+PiArew0KPiA+Pg0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBTdGF0dXMgPSBNcFNlcnZpY2VzLlBwaS0+ R2V0UHJvY2Vzc29ySW5mbyAoTXBTZXJ2aWNlcy5QcGksDQo+IFByb2Nlc3Nvck51bSwNCj4gPj4g UHJvY2Vzc29ySW5mbyk7DQo+ID4+DQo+ID4+ICsgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7 DQo+ID4+DQo+ID4+ICt9DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKy8qKg0KPiA+Pg0KPiA+ PiArICBHZXQgdGhlIGxvZ2ljYWwgcHJvY2Vzc29yIG51bWJlci4NCj4gPj4NCj4gPj4gKw0KPiA+ Pg0KPiA+PiArICBAcGFyYW1baW5dICBNcFNlcnZpY2VzICAgICAgICAgIE1QX1NFUlZJQ0VTIHN0 cnVjdHVyZS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcmV0dmFsICBSZXR1cm4gdGhl IGxvZ2ljYWwgcHJvY2Vzc29yIG51bWJlci4NCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiAr VUlOVDMyDQo+ID4+DQo+ID4+ICtDcHVDYWNoZUluZm9XaG9BbUkgKA0KPiA+Pg0KPiA+PiArICBJ TiBNUF9TRVJWSUNFUyAgICAgICAgICAgIE1wU2VydmljZXMNCj4gPj4NCj4gPj4gKyAgKQ0KPiA+ Pg0KPiA+PiArew0KPiA+Pg0KPiA+PiArICBFRklfU1RBVFVTICAgICAgICAgICAgICAgIFN0YXR1 czsNCj4gPj4NCj4gPj4gKyAgVUlOVE4gICAgICAgICAgICAgICAgICAgICBQcm9jZXNzb3JOdW07 DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgU3RhdHVzID0gTXBTZXJ2aWNlcy5QcGktPldo b0FtSSAoTXBTZXJ2aWNlcy5QcGksICZQcm9jZXNzb3JOdW0pOw0KPiA+Pg0KPiA+PiArICBBU1NF UlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIHJldHVy biAoVUlOVDMyKVByb2Nlc3Nvck51bTsNCj4gPj4NCj4gPj4gK30NCj4gPj4NCj4gPj4gKw0KPiA+ Pg0KPiA+PiArLyoqDQo+ID4+DQo+ID4+ICsgIEdldCB0aGUgdG90YWwgbnVtYmVyIG9mIGxvZ2lj YWwgcHJvY2Vzc29ycyBpbiB0aGUgcGxhdGZvcm0uDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4g KyAgQHBhcmFtW2luXSAgTXBTZXJ2aWNlcyAgICAgICAgICBNUF9TRVJWSUNFUyBzdHJ1Y3R1cmUu DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHJldHZhbCAgUmV0dXJuIHRoZSB0b3RhbCBu dW1iZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzLg0KPiA+Pg0KPiA+PiArKiovDQo+ID4+DQo+ID4+ ICtVSU5UMzINCj4gPj4NCj4gPj4gK0NwdUNhY2hlSW5mb0dldE51bWJlck9mUHJvY2Vzc29ycyAo DQo+ID4+DQo+ID4+ICsgIElOIE1QX1NFUlZJQ0VTICAgICAgICAgICAgTXBTZXJ2aWNlcw0KPiA+ Pg0KPiA+PiArICApDQo+ID4+DQo+ID4+ICt7DQo+ID4+DQo+ID4+ICsgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgU3RhdHVzOw0KPiA+Pg0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgIE51bWJlck9mUHJvY2Vzc29yOw0KPiA+Pg0KPiA+PiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICAgIE51bWJlck9mRW5hYmxlZFByb2Nlc3NvcjsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+ PiArICBTdGF0dXMgPSBNcFNlcnZpY2VzLlBwaS0+R2V0TnVtYmVyT2ZQcm9jZXNzb3JzIChNcFNl cnZpY2VzLlBwaSwNCj4gPj4gJk51bWJlck9mUHJvY2Vzc29yLCAmTnVtYmVyT2ZFbmFibGVkUHJv Y2Vzc29yKTsNCj4gPj4NCj4gPj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPj4N Cj4gPj4gKw0KPiA+Pg0KPiA+PiArICByZXR1cm4gKFVJTlQzMilOdW1iZXJPZlByb2Nlc3NvcjsN Cj4gPj4NCj4gPj4gK30NCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvSW5jbHVk ZS9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi5oDQo+ID4+IGIvVWVmaUNwdVBrZy9JbmNsdWRlL0xp YnJhcnkvQ3B1Q2FjaGVJbmZvTGliLmgNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4g aW5kZXggMDAwMDAwMDAwMDAwLi5hMjNiOGIxMmI1ZWUNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+ PiArKysgYi9VZWZpQ3B1UGtnL0luY2x1ZGUvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIuaA0KPiA+ PiBAQCAtMCwwICsxLDc2IEBADQo+ID4+ICsvKiogQGZpbGUNCj4gPj4NCj4gPj4gKyAgSGVhZGVy IGZpbGUgZm9yIENQVSBDYWNoZSBpbmZvIExpYnJhcnkuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4g Pj4gKyAgQ29weXJpZ2h0IChjKSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyBy ZXNlcnZlZC48QlI+DQo+ID4+DQo+ID4+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+ PiArDQo+ID4+DQo+ID4+ICsjaWZuZGVmIF9DUFVfQ0FDSEVfSU5GT19MSUJfSF8NCj4gPj4NCj4g Pj4gKyNkZWZpbmUgX0NQVV9DQUNIRV9JTkZPX0xJQl9IXw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ ID4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8v IFBhY2thZ2UgbnVtYmVyLg0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBVSU5UMzIg ICAgICAgIFBhY2thZ2U7DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8vIENvcmUg dHlwZSBvZiBsb2dpY2FsIHByb2Nlc3Nvci4NCj4gPj4NCj4gPj4gKyAgLy8gVmFsdWUgPSBDUFVJ RC4xQWg6RUFYWzMxOjI0XQ0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBVSU5UOCAg ICAgICAgIENvcmVUeXBlOw0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICAvLyBMZXZl bCBvZiB0aGUgY2FjaGUgdGhhdCB0aGlzIHBhY2thZ2UncyB0aGlzIHR5cGUgb2YgbG9naWNhbCBw cm9jZXNzb3INCj4gPj4gY29ycmVzcG9uZHMgdG8uDQo+ID4+DQo+ID4+ICsgIC8vIFZhbHVlID0g Q1BVSUQuMDRoOkVBWFswNzowNV0NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgVUlO VDggICAgICAgICBDYWNoZUxldmVsIDogMzsNCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4g KyAgLy8gVHlwZSBvZiB0aGUgY2FjaGUgdGhhdCB0aGlzIHBhY2thZ2UncyB0aGlzIHR5cGUgb2Yg bG9naWNhbCBwcm9jZXNzb3INCj4gPj4gY29ycmVzcG9uZHMgdG8uDQo+ID4+DQo+ID4+ICsgIC8v IFZhbHVlID0gQ1BVSUQuMDRoOkVBWFswNDowMF0NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4g Pj4gKyAgVUlOVDggICAgICAgICBDYWNoZVR5cGUgOiA1Ow0KPiA+Pg0KPiA+PiArICAvLw0KPiA+ Pg0KPiA+PiArICAvLyBXYXlzIG9mIGFzc29jaWF0aXZpdHkuDQo+ID4+DQo+ID4+ICsgIC8vIFZh bHVlID0gQ1BVSUQuMDRoOkVCWFszMToyMl0NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4g KyAgVUlOVDE2ICAgICAgICBDYWNoZVdheXM7DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ ICsgIC8vIFNpemUgb2Ygc2luZ2xlIGNhY2hlIHRoYXQgdGhpcyBwYWNrYWdlJ3MgdGhpcyB0eXBl IG9mIGxvZ2ljYWwgcHJvY2Vzc29yDQo+ID4+IGNvcnJlc3BvbmRzIHRvLg0KPiA+Pg0KPiA+PiAr ICAvLyBWYWx1ZSA9IChDUFVJRC4wNGg6RUJYWzMxOjIyXSArIDEpICogKENQVUlELjA0aDpFQlhb MjE6MTJdICsgMSkgKg0KPiA+Pg0KPiA+PiArICAvLyAgICAgICAgIChDUFVJRC4wNGg6RUJYWzEx OjAwXSArIDEpICogKENQVUlELjA0aDpFQ1hbMzE6MDBdICsgMSkNCj4gPj4NCj4gPj4gKyAgLy8N Cj4gPj4NCj4gPj4gKyAgVUlOVDMyICAgICAgICBDYWNoZVNpemVpbktCOw0KPiA+Pg0KPiA+PiAr ICAvLw0KPiA+Pg0KPiA+PiArICAvLyBOdW1iZXIgb2YgdGhlIGNhY2hlIHRoYXQgdGhpcyBwYWNr YWdlJ3MgdGhpcyB0eXBlIG9mIGxvZ2ljYWwgcHJvY2Vzc29yDQo+ID4+IGNvcnJlc3BvbmRzIHRv Lg0KPiA+Pg0KPiA+PiArICAvLyBIYXZlIHN1YnRyYWN0ZWQgdGhlIG51bWJlciBvZiBjYWNoZXMg dGhhdCBhcmUgc2hhcmVkLg0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBVSU5UMTYg ICAgICAgIENhY2hlQ291bnQ7DQo+ID4+DQo+ID4+ICt9IENQVV9DQUNIRV9JTkZPOw0KPiA+Pg0K PiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4gPj4NCj4gPj4gKyAgR2V0IENwdUNhY2hlSW5mbyBk YXRhIGFycmF5Lg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbiwgb3V0XSBD cHVDYWNoZUluZm8gICAgICAgIFBvaW50ZXIgdG8gdGhlIENwdUNhY2hlSW5mbyBhcnJheS4NCj4g Pj4NCj4gPj4gKyAgQHBhcmFtW2luLCBvdXRdIENwdUNhY2hlSW5mb0NvdW50ICAgQXMgaW5wdXQs IHBvaW50IHRvIHRoZSBsZW5ndGggb2YNCj4gPj4gcmVzcG9uc2UgQ3B1Q2FjaGVJbmZvIGFycmF5 Lg0KPiA+Pg0KPiA+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBv dXRwdXQsIHBvaW50IHRvIHRoZSBhY3R1YWwgbGVuZ3RoIG9mIHJlc3BvbnNlDQo+ID4+IENwdUNh Y2hlSW5mbyBhcnJheS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcmV0dmFsICAgICAg ICAgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgRnVuY3Rpb24gY29tcGxldGVkIHN1Y2Nlc3NmdWxs eS4NCj4gPj4NCj4gPj4gKyAgQHJldHZhbCAgICAgICAgIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAg IENwdUNhY2hlSW5mb0NvdW50IGlzIE5VTEwuDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwgICAgICAg ICBFRklfSU5WQUxJRF9QQVJBTUVURVIgICBDcHVDYWNoZUluZm8gaXMgTlVMTCB3aGlsZQ0KPiA+ PiBDcHVDYWNoZUluZm9Db3VudCBjb250YWlucyB0aGUgdmFsdWUNCj4gPj4NCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdyZWF0ZXIgdGhhbiB6ZXJvLg0K PiA+Pg0KPiA+PiArICBAcmV0dmFsICAgICAgICAgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgUHJv Y2Vzc29yIGRvZXMgbm90IHN1cHBvcnQNCj4gPj4gQ1BVSURfQ0FDSEVfUEFSQU1TIExlYWYuDQo+ ID4+DQo+ID4+ICsgIEByZXR2YWwgICAgICAgICBFRklfTk9UX0ZPVU5EICAgICAgICAgICBFREtJ SV9QRUlfTVBfU0VSVklDRVMyX1BQSSBvcg0KPiA+PiBFRklfTVBfU0VSVklDRVNfUFJPVE9DT0wg aW50ZXJmYWNlDQo+ID4+DQo+ID4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBpcyBub3QgZm91bmQuDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwgICAgICAgICBFRklf T1VUX09GX1JFU09VUkNFUyAgICBSZXF1aXJlZCByZXNvdXJjZXMgY291bGQgbm90IGJlDQo+ID4+ IGFsbG9jYXRlZC4NCj4gPj4NCj4gPj4gKyAgQHJldHZhbCAgICAgICAgIEVGSV9CVUZGRVJfVE9P X1NNQUxMICAgIENwdUNhY2hlSW5mb0NvdW50IGlzIHRvbyBzbWFsbA0KPiB0bw0KPiA+PiBob2xk IHRoZSByZXNwb25zZSBDcHVDYWNoZUluZm8NCj4gPj4NCj4gPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5LiBDcHVDYWNoZUluZm9Db3VudCBoYXMgYmVl biB1cGRhdGVkIHdpdGgNCj4gPj4gdGhlIGxlbmd0aCBuZWVkZWQNCj4gPj4NCj4gPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGNvbXBsZXRlIHRoZSByZXF1 ZXN0Lg0KPiA+Pg0KPiA+PiArKiovDQo+ID4+DQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+DQo+ID4+ ICtFRklBUEkNCj4gPj4NCj4gPj4gK0dldENwdUNhY2hlSW5mbyAoDQo+ID4+DQo+ID4+ICsgIElO IE9VVCBDUFVfQ0FDSEVfSU5GTyAgICAgKkNwdUNhY2hlSW5mbywNCj4gPj4NCj4gPj4gKyAgSU4g T1VUIFVJTlROICAgICAgICAgICAgICAqQ3B1Q2FjaGVJbmZvQ291bnQNCj4gPj4NCj4gPj4gKyAg KTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArI2VuZGlmDQo+ID4+DQo+ID4+IGRpZmYgLS1n aXQgYS9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1Q2FjaGVJbmZvTGliL0NwdUNhY2hlSW5mb0xpYi51 bmkNCj4gPj4gYi9VZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1Q2FjaGVJbmZvTGliL0NwdUNhY2hlSW5m b0xpYi51bmkNCj4gPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4gaW5kZXggMDAwMDAwMDAw MDAwLi4xYmM4MDFmMTVmODQNCj4gPj4gLS0tIC9kZXYvbnVsbA0KPiA+PiArKysgYi9VZWZpQ3B1 UGtnL0xpYnJhcnkvQ3B1Q2FjaGVJbmZvTGliL0NwdUNhY2hlSW5mb0xpYi51bmkNCj4gPj4gQEAg LTAsMCArMSwxNSBAQA0KPiA+PiArLy8gLyoqIEBmaWxlDQo+ID4+DQo+ID4+ICsvLyBDUFUgQ2Fj aGUgSW5mbyBMaWJyYXJ5DQo+ID4+DQo+ID4+ICsvLw0KPiA+Pg0KPiA+PiArLy8gUHJvdmlkZXMg Y2FjaGUgaW5mbyBmb3IgZWFjaCBwYWNrYWdlLCBjb3JlIHR5cGUsIGNhY2hlIGxldmVsIGFuZCBj YWNoZQ0KPiB0eXBlLg0KPiA+Pg0KPiA+PiArLy8NCj4gPj4NCj4gPj4gKy8vIENvcHlyaWdodCAo YykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ Pg0KPiA+PiArLy8NCj4gPj4NCj4gPj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0Qt Mi1DbGF1c2UtUGF0ZW50DQo+ID4+DQo+ID4+ICsvLw0KPiA+Pg0KPiA+PiArLy8gKiovDQo+ID4+ DQo+ID4+ICsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArI3N0cmluZyBTVFJfTU9EVUxFX0FC U1RSQUNUICAgICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiQ1BVIENhY2hlIEluZm8NCj4gPj4g TGlicmFyeSINCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArI3N0cmluZyBTVFJfTU9EVUxFX0RF U0NSSVBUSU9OICAgICAgICAgICNsYW5ndWFnZSBlbi1VUyAiUHJvdmlkZXMNCj4gY2FjaGUNCj4g Pj4gaW5mbyBmb3IgZWFjaCBwYWNrYWdlLCBjb3JlIHR5cGUsIGNhY2hlIGxldmVsIGFuZCBjYWNo ZSB0eXBlLiINCj4gPj4NCj4gPj4gZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVD YWNoZUluZm9MaWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmluZg0KPiA+PiBiL1VlZmlDcHVQa2cvTGli cmFyeS9DcHVDYWNoZUluZm9MaWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmluZg0KPiA+PiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiA+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjFmZDQ1MzgwYjg3MQ0KPiA+ PiAtLS0gL2Rldi9udWxsDQo+ID4+ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUlu Zm9MaWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmluZg0KPiA+PiBAQCAtMCwwICsxLDQzIEBADQo+ID4+ ICsjIyBAZmlsZQ0KPiA+Pg0KPiA+PiArIyAgQ1BVIENhY2hlIEluZm8gTGlicmFyeSBpbnN0YW5j ZSBmb3IgRFhFIGRyaXZlci4NCj4gPj4NCj4gPj4gKyMNCj4gPj4NCj4gPj4gKyMgIFByb3ZpZGVz IGNhY2hlIGluZm8gZm9yIGVhY2ggcGFja2FnZSwgY29yZSB0eXBlLCBjYWNoZSBsZXZlbCBhbmQg Y2FjaGUNCj4gdHlwZS4NCj4gPj4NCj4gPj4gKyMNCj4gPj4NCj4gPj4gKyMgIENvcHlyaWdodCAo YykgMjAyMCwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+ Pg0KPiA+PiArIw0KPiA+Pg0KPiA+PiArIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4gPj4NCj4gPj4gKyMNCj4gPj4NCj4gPj4gKyMjDQo+ID4+DQo+ID4+ ICsNCj4gPj4NCj4gPj4gK1tEZWZpbmVzXQ0KPiA+Pg0KPiA+PiArICBJTkZfVkVSU0lPTiAgICAg ICAgICAgICAgICAgICAgPSAweDAwMDEwMDA1DQo+ID4+DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAg ICAgICAgICAgICAgICAgICA9IER4ZUNwdUNhY2hlSW5mb0xpYg0KPiA+Pg0KPiA+PiArICBGSUxF X0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSBCMjVDMjg4Ri1DMzA5LTQxRjEtODMyNS0zN0U2 NERDNUVBM0QNCj4gPj4NCj4gPj4gKyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0g RFhFX0RSSVZFUg0KPiA+Pg0KPiA+PiArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAg PSAxLjANCj4gPj4NCj4gPj4gKyAgTElCUkFSWV9DTEFTUyAgICAgICAgICAgICAgICAgID0gQ3B1 Q2FjaGVJbmZvTGlifERYRV9EUklWRVINCj4gPj4gVUVGSV9BUFBMSUNBVElPTg0KPiA+Pg0KPiA+ PiArICBNT0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAgICAgPSBDcHVDYWNoZUluZm9MaWIudW5p DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK1tTb3VyY2VzXQ0KPiA+Pg0KPiA+PiArICBJbnRl cm5hbENwdUNhY2hlSW5mb0xpYi5oDQo+ID4+DQo+ID4+ICsgIENwdUNhY2hlSW5mb0xpYi5jDQo+ ID4+DQo+ID4+ICsgIER4ZUNwdUNhY2hlSW5mb0xpYi5jDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4g Pj4gK1tQYWNrYWdlc10NCj4gPj4NCj4gPj4gKyAgTWRlUGtnL01kZVBrZy5kZWMNCj4gPj4NCj4g Pj4gKyAgVWVmaUNwdVBrZy9VZWZpQ3B1UGtnLmRlYw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ ICtbTGlicmFyeUNsYXNzZXNdDQo+ID4+DQo+ID4+ICsgIEJhc2VMaWINCj4gPj4NCj4gPj4gKyAg RGVidWdMaWINCj4gPj4NCj4gPj4gKyAgQmFzZU1lbW9yeUxpYg0KPiA+Pg0KPiA+PiArICBNZW1v cnlBbGxvY2F0aW9uTGliDQo+ID4+DQo+ID4+ICsgIFVlZmlCb290U2VydmljZXNUYWJsZUxpYg0K PiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICtbUHJvdG9jb2xzXQ0KPiA+Pg0KPiA+PiArICBnRWZp TXBTZXJ2aWNlUHJvdG9jb2xHdWlkDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK1tQY2RdDQo+ ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK1tEZXBleF0NCj4gPj4NCj4gPj4gKyAgVFJVRQ0KPiA+ Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9J bnRlcm5hbENwdUNhY2hlSW5mb0xpYi5oDQo+ID4+IGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNh Y2hlSW5mb0xpYi9JbnRlcm5hbENwdUNhY2hlSW5mb0xpYi5oDQo+ID4+IG5ldyBmaWxlIG1vZGUg MTAwNjQ0DQo+ID4+IGluZGV4IDAwMDAwMDAwMDAwMC4uZGU1NmRiOWMwY2JlDQo+ID4+IC0tLSAv ZGV2L251bGwNCj4gPj4gKysrIGIvVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi9J bnRlcm5hbENwdUNhY2hlSW5mb0xpYi5oDQo+ID4+IEBAIC0wLDAgKzEsMTU5IEBADQo+ID4+ICsv KiogQGZpbGUNCj4gPj4NCj4gPj4gKyAgSW50ZXJuYWwgaGVhZGVyIGZpbGUgZm9yIENQVSBDYWNo ZSBpbmZvIExpYnJhcnkuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQ29weXJpZ2h0IChj KSAyMDIwLCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQo+ID4+ DQo+ID4+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsj aWZuZGVmIF9JTlRFUk5BTF9DUFVfQ0FDSEVfSU5GT19MSUJfSF8NCj4gPj4NCj4gPj4gKyNkZWZp bmUgX0lOVEVSTkFMX0NQVV9DQUNIRV9JTkZPX0xJQl9IXw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ ID4+ICsjaW5jbHVkZSA8UGlQZWkuaD4NCj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxSZWdpc3Rlci9D cHVpZC5oPg0KPiA+Pg0KPiA+PiArI2luY2x1ZGUgPFBwaS9NcFNlcnZpY2VzMi5oPg0KPiA+Pg0K PiA+PiArI2luY2x1ZGUgPFByb3RvY29sL01wU2VydmljZS5oPg0KPiA+Pg0KPiA+PiArI2luY2x1 ZGUgPExpYnJhcnkvQmFzZUxpYi5oPg0KPiA+Pg0KPiA+PiArI2luY2x1ZGUgPExpYnJhcnkvRGVi dWdMaWIuaD4NCj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VNZW1vcnlMaWIuaD4N Cj4gPj4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4NCj4g Pj4NCj4gPj4gKyNpbmNsdWRlIDxMaWJyYXJ5L0NwdUNhY2hlSW5mb0xpYi5oPg0KPiA+Pg0KPiA+ PiArDQo+ID4+DQo+ID4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+ DQo+ID4+ICsgIC8vIFBhY2thZ2UgSUQsIHRoZSBpbmZvcm1hdGlvbiBjb21lcyBmcm9tDQo+ID4+ DQo+ID4+ICsgIC8vIEVGSV9DUFVfUEhZU0lDQUxfTE9DQVRJT04uUGFja2FnZQ0KPiA+Pg0KPiA+ PiArICAvLw0KPiA+Pg0KPiA+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgIFBhY2thZ2U7 DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8vIEFQSUMgSUQsIHRoZSBpbmZvcm1h dGlvbiBjb21lcyBmcm9tDQo+ID4+DQo+ID4+ICsgIC8vIEVGSV9QUk9DRVNTT1JfSU5GT1JNQVRJ T04uUHJvY2Vzc29ySWQNCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgVUlOVDMyICAg ICAgICAgICAgICAgICAgICBBcGljSWQ7DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsg IC8vIENvcmUgdHlwZSBvZiBsb2dpY2FsIHByb2Nlc3Nvci4NCj4gPj4NCj4gPj4gKyAgLy8gVmFs dWUgPSBDUFVJRC4xQWg6RUFYWzMxOjI0XQ0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiAr ICBVSU5UOCAgICAgICAgICAgICAgICAgICAgIENvcmVUeXBlOw0KPiA+Pg0KPiA+PiArfSBDUFVJ RF9QUk9DRVNTT1JfSU5GTzsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArdHlwZWRlZiBzdHJ1 Y3Qgew0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICAvLyBMZXZlbCBvZiB0aGUgY2Fj aGUuDQo+ID4+DQo+ID4+ICsgIC8vIFZhbHVlID0gQ1BVSUQuMDRoOkVBWFswNzowNV0NCj4gPj4N Cj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICBDYWNo ZUxldmVsIDogMzsNCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgLy8gVHlwZSBvZiB0 aGUgY2FjaGUuDQo+ID4+DQo+ID4+ICsgIC8vIFZhbHVlID0gQ1BVSUQuMDRoOkVBWFswNDowMF0N Cj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAg ICBDYWNoZVR5cGUgOiA1Ow0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICAvLyBXYXlz IG9mIGFzc29jaWF0aXZpdHkuDQo+ID4+DQo+ID4+ICsgIC8vIFZhbHVlID0gQ1BVSUQuMDRoOkVC WFszMToyMl0NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICBDYWNoZVdheXM7DQo+ID4+DQo+ID4+ICsgIC8vDQo+ID4+DQo+ID4+ICsgIC8v IENhY2hlIHNoYXJlIGJpdHMuDQo+ID4+DQo+ID4+ICsgIC8vIFZhbHVlID0gQ1BVSUQuMDRoOkVB WFsyNToxNF0NCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4gKyAgVUlOVDE2ICAgICAgICAg ICAgICAgICAgICBDYWNoZVNoYXJlQml0czsNCj4gPj4NCj4gPj4gKyAgLy8NCj4gPj4NCj4gPj4g KyAgLy8gU2l6ZSBvZiBzaW5nbGUgY2FjaGUuDQo+ID4+DQo+ID4+ICsgIC8vIFZhbHVlID0gKENQ VUlELjA0aDpFQlhbMzE6MjJdICsgMSkgKiAoQ1BVSUQuMDRoOkVCWFsyMToxMl0gKyAxKSAqDQo+ ID4+DQo+ID4+ICsgIC8vICAgICAgICAgKENQVUlELjA0aDpFQlhbMTE6MDBdICsgMSkgKiAoQ1BV SUQuMDRoOkVDWFszMTowMF0gKyAxKQ0KPiA+Pg0KPiA+PiArICAvLw0KPiA+Pg0KPiA+PiArICBV SU5UMzIgICAgICAgICAgICAgICAgICAgIENhY2hlU2l6ZWluS0I7DQo+ID4+DQo+ID4+ICt9IENQ VUlEX0NBQ0hFX0RBVEE7DQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK3R5cGVkZWYgdW5pb24g ew0KPiA+Pg0KPiA+PiArICBFREtJSV9QRUlfTVBfU0VSVklDRVMyX1BQSSAgICAqUHBpOw0KPiA+ Pg0KPiA+PiArICBFRklfTVBfU0VSVklDRVNfUFJPVE9DT0wgICAgICAqUHJvdG9jb2w7DQo+ID4+ DQo+ID4+ICt9IE1QX1NFUlZJQ0VTOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICt0eXBlZGVm IHN0cnVjdCB7DQo+ID4+DQo+ID4+ICsgIE1QX1NFUlZJQ0VTICAgICAgICAgICAgICAgTXBTZXJ2 aWNlczsNCj4gPj4NCj4gPj4gKyAgQ1BVSURfUFJPQ0VTU09SX0lORk8gICAgICAqUHJvY2Vzc29y SW5mbzsNCj4gPj4NCj4gPj4gKyAgQ1BVSURfQ0FDSEVfREFUQSAgICAgICAgICAqQ2FjaGVEYXRh Ow0KPiA+Pg0KPiA+PiArfSBDT0xMRUNUX0NQVUlEX0NBQ0hFX0RBVEFfQ09OVEVYVDsNCj4gPj4N Cj4gPj4gKw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsvKg0KPiA+Pg0KPiA+PiArICBEZWZp bmVzIHRoZSBtYXhpbXVtIGNvdW50IG9mIERldGVybWluaXN0aWMgQ2FjaGUgUGFyYW1ldGVycyBM ZWFmIG9mDQo+IGFsbA0KPiA+PiBBUHMgYW5kIEJTUC4NCj4gPj4NCj4gPj4gKyAgVG8gc2F2ZSBi b290IHRpbWUsIHNraXAgc3RhcnRpbmcgdXAgYWxsIEFQcyB0byBjYWxjdWxhdGUgZWFjaCBBUCdz IGNvdW50IG9mDQo+ID4+IERldGVybWluaXN0aWMNCj4gPj4NCj4gPj4gKyAgQ2FjaGUgUGFyYW1l dGVycyBMZWFmLCBzbyB1c2UgYSBkZWZpbml0aW9uIGluc3RlYWQuDQo+ID4+DQo+ID4+ICsgIEFu eXdheSwgZGVmaW5pdGlvbiB2YWx1ZSB3aWxsIGJlIGNoZWNrZWQgaW4NCj4gPj4gQ3B1Q2FjaGVJ bmZvQ29sbGVjdENvcmVBbmRDYWNoZURhdGEgZnVuY3Rpb24uDQo+ID4+DQo+ID4+ICsqLw0KPiA+ Pg0KPiA+PiArI2RlZmluZSBNQVhfTlVNX09GX0NBQ0hFX1BBUkFNU19MRUFGICAgIDYNCj4gPj4N Cj4gPj4gKw0KPiA+Pg0KPiA+PiArLyoNCj4gPj4NCj4gPj4gKyAgRGVmaW5lcyB0aGUgbWF4aW11 bSBjb3VudCBvZiBwYWNrYWdlcy4NCj4gPj4NCj4gPj4gKyovDQo+ID4+DQo+ID4+ICsjZGVmaW5l IE1BWF9OVU1fT0ZfUEFDS0FHRSAgICAgICAgICAgICAgMTAwDQo+ID4+DQo+ID4+ICsNCj4gPj4N Cj4gPj4gKy8qKg0KPiA+Pg0KPiA+PiArICBHZXQgRURLSUlfUEVJX01QX1NFUlZJQ0VTMl9QUEkg b3IgRUZJX01QX1NFUlZJQ0VTX1BST1RPQ09MDQo+IHBvaW50ZXIuDQo+ID4+DQo+ID4+ICsNCj4g Pj4NCj4gPj4gKyAgQHBhcmFtW291dF0gTXBTZXJ2aWNlcyAgICBBIHBvaW50ZXIgdG8gdGhlIGJ1 ZmZlciB3aGVyZQ0KPiA+PiBFREtJSV9QRUlfTVBfU0VSVklDRVMyX1BQSSBvcg0KPiA+Pg0KPiA+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9NUF9TRVJWSUNFU19QUk9UT0NPTCBp cyBzdG9yZWQNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcmV0dmFsIEVGSV9TVUNDRVNT ICAgICAgIEVES0lJX1BFSV9NUF9TRVJWSUNFUzJfUFBJIG9yDQo+ID4+IEVGSV9NUF9TRVJWSUNF U19QUk9UT0NPTCBpbnRlcmZhY2UgaXMgcmV0dXJuZWQNCj4gPj4NCj4gPj4gKyAgQHJldHZhbCBF RklfTk9UX0ZPVU5EICAgICBFREtJSV9QRUlfTVBfU0VSVklDRVMyX1BQSSBvcg0KPiA+PiBFRklf TVBfU0VSVklDRVNfUFJPVE9DT0wgaW50ZXJmYWNlIGlzIG5vdCBmb3VuZA0KPiA+Pg0KPiA+PiAr KiovDQo+ID4+DQo+ID4+ICtFRklfU1RBVFVTDQo+ID4+DQo+ID4+ICtDcHVDYWNoZUluZm9HZXRN cFNlcnZpY2VzICgNCj4gPj4NCj4gPj4gKyAgT1VUIE1QX1NFUlZJQ0VTICAgICAgICAgICAqTXBT ZXJ2aWNlcw0KPiA+Pg0KPiA+PiArICApOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsvKioN Cj4gPj4NCj4gPj4gKyAgQWN0aXZhdGUgYWxsIG9mIHRoZSBsb2dpY2FsIHByb2Nlc3NvcnMuDQo+ ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luXSAgTXBTZXJ2aWNlcyAgICAgICAg ICBNUF9TRVJWSUNFUyBzdHJ1Y3R1cmUuDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtpbl0gIFByb2Nl ZHVyZSAgICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBmdW5jdGlvbiB0byBiZSBydW4gb24NCj4g ZW5hYmxlZA0KPiA+PiBsb2dpY2FsIHByb2Nlc3NvcnMuDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtp bl0gIFByb2NlZHVyZUFyZ3VtZW50ICAgVGhlIHBhcmFtZXRlciBwYXNzZWQgaW50byBQcm9jZWR1 cmUNCj4gZm9yDQo+ID4+IGFsbCBlbmFibGVkIGxvZ2ljYWwgcHJvY2Vzc29ycy4NCj4gPj4NCj4g Pj4gKyoqLw0KPiA+Pg0KPiA+PiArVk9JRA0KPiA+Pg0KPiA+PiArQ3B1Q2FjaGVJbmZvU3RhcnR1 cEFsbENQVXMgKA0KPiA+Pg0KPiA+PiArICBJTiBNUF9TRVJWSUNFUyAgICAgICAgICAgIE1wU2Vy dmljZXMsDQo+ID4+DQo+ID4+ICsgIElOIEVGSV9BUF9QUk9DRURVUkUgICAgICAgUHJvY2VkdXJl LA0KPiA+Pg0KPiA+PiArICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICpQcm9jZWR1cmVBcmd1 bWVudA0KPiA+Pg0KPiA+PiArICApOw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4g Pj4NCj4gPj4gKyAgR2V0IGRldGFpbGVkIGluZm9ybWF0aW9uIG9mIHRoZSByZXF1ZXN0ZWQgbG9n aWNhbCBwcm9jZXNzb3IuDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gKyAgQHBhcmFtW2luXSAg TXBTZXJ2aWNlcyAgICAgICAgICBNUF9TRVJWSUNFUyBzdHJ1Y3R1cmUuDQo+ID4+DQo+ID4+ICsg IEBwYXJhbVtpbl0gIFByb2Nlc3Nvck51bSAgICAgICAgVGhlIHJlcXVlc3RlZCBsb2dpY2FsIHBy b2Nlc3NvciBudW1iZXIuDQo+ID4+DQo+ID4+ICsgIEBwYXJhbVtvdXRdIFByb2Nlc3NvckluZm8g ICAgICAgQSBwb2ludGVyIHRvIHRoZSBidWZmZXIgd2hlcmUgdGhlDQo+IHByb2Nlc3Nvcg0KPiA+ PiBpbmZvcm1hdGlvbiBpcyBzdG9yZWQNCj4gPj4NCj4gPj4gKyoqLw0KPiA+Pg0KPiA+PiArVk9J RA0KPiA+Pg0KPiA+PiArQ3B1Q2FjaGVJbmZvR2V0UHJvY2Vzc29ySW5mbyAoDQo+ID4+DQo+ID4+ ICsgIElOIE1QX1NFUlZJQ0VTICAgICAgICAgICAgICAgIE1wU2VydmljZXMsDQo+ID4+DQo+ID4+ ICsgIElOIFVJTlROICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3Nvck51bSwNCj4gPj4NCj4g Pj4gKyAgT1VUIEVGSV9QUk9DRVNTT1JfSU5GT1JNQVRJT04gKlByb2Nlc3NvckluZm8NCj4gPj4N Cj4gPj4gKyAgKTsNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArLyoqDQo+ID4+DQo+ID4+ICsg IEdldCB0aGUgbG9naWNhbCBwcm9jZXNzb3IgbnVtYmVyLg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ ID4+ICsgIEBwYXJhbVtpbl0gIE1wU2VydmljZXMgICAgICAgICAgTVBfU0VSVklDRVMgc3RydWN0 dXJlLg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICsgIEByZXR2YWwgIFJldHVybiB0aGUgbG9n aWNhbCBwcm9jZXNzb3IgbnVtYmVyLg0KPiA+Pg0KPiA+PiArKiovDQo+ID4+DQo+ID4+ICtVSU5U MzINCj4gPj4NCj4gPj4gK0NwdUNhY2hlSW5mb1dob0FtSSAoDQo+ID4+DQo+ID4+ICsgIElOIE1Q X1NFUlZJQ0VTICAgICAgICAgICAgTXBTZXJ2aWNlcw0KPiA+Pg0KPiA+PiArICApOw0KPiA+Pg0K PiA+PiArDQo+ID4+DQo+ID4+ICsvKioNCj4gPj4NCj4gPj4gKyAgR2V0IHRoZSB0b3RhbCBudW1i ZXIgb2YgbG9naWNhbCBwcm9jZXNzb3JzIGluIHRoZSBwbGF0Zm9ybS4NCj4gPj4NCj4gPj4gKw0K PiA+Pg0KPiA+PiArICBAcGFyYW1baW5dICBNcFNlcnZpY2VzICAgICAgICAgIE1QX1NFUlZJQ0VT IHN0cnVjdHVyZS4NCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+PiArICBAcmV0dmFsICBSZXR1cm4g dGhlIHRvdGFsIG51bWJlciBvZiBsb2dpY2FsIHByb2Nlc3NvcnMuDQo+ID4+DQo+ID4+ICsqKi8N Cj4gPj4NCj4gPj4gK1VJTlQzMg0KPiA+Pg0KPiA+PiArQ3B1Q2FjaGVJbmZvR2V0TnVtYmVyT2ZQ cm9jZXNzb3JzICgNCj4gPj4NCj4gPj4gKyAgSU4gTVBfU0VSVklDRVMgICAgICAgICAgICBNcFNl cnZpY2VzDQo+ID4+DQo+ID4+ICsgICk7DQo+ID4+DQo+ID4+ICsjZW5kaWYNCj4gPj4NCj4gPj4g ZGlmZiAtLWdpdCBhL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIvUGVpQ3B1Q2Fj aGVJbmZvTGliLmluZg0KPiA+PiBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIv UGVpQ3B1Q2FjaGVJbmZvTGliLmluZg0KPiA+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+PiBp bmRleCAwMDAwMDAwMDAwMDAuLmM4YWEzM2M5NWE4Zg0KPiA+PiAtLS0gL2Rldi9udWxsDQo+ID4+ ICsrKyBiL1VlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIvUGVpQ3B1Q2FjaGVJbmZv TGliLmluZg0KPiA+PiBAQCAtMCwwICsxLDQzIEBADQo+ID4+ICsjIyBAZmlsZQ0KPiA+Pg0KPiA+ PiArIyAgQ1BVIENhY2hlIEluZm8gTGlicmFyeSBpbnN0YW5jZSBmb3IgUEVJIG1vZHVsZS4NCj4g Pj4NCj4gPj4gKyMNCj4gPj4NCj4gPj4gKyMgIFByb3ZpZGVzIGNhY2hlIGluZm8gZm9yIGVhY2gg cGFja2FnZSwgY29yZSB0eXBlLCBjYWNoZSBsZXZlbCBhbmQgY2FjaGUNCj4gdHlwZS4NCj4gPj4N Cj4gPj4gKyMNCj4gPj4NCj4gPj4gKyMgIENvcHlyaWdodCAoYykgMjAyMCwgSW50ZWwgQ29ycG9y YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pg0KPiA+PiArIw0KPiA+Pg0KPiA+ PiArIyAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4N Cj4gPj4gKyMNCj4gPj4NCj4gPj4gKyMjDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK1tEZWZp bmVzXQ0KPiA+Pg0KPiA+PiArICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAw MDEwMDA1DQo+ID4+DQo+ID4+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9IFBl aUNwdUNhY2hlSW5mb0xpYg0KPiA+Pg0KPiA+PiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAg ICAgICAgPSBDRkVFMkRCRS01M0IyLTQ5MTYtODRDQS0wQkE4M0MzRERBNkUNCj4gPj4NCj4gPj4g KyAgTU9EVUxFX1RZUEUgICAgICAgICAgICAgICAgICAgID0gUEVJTQ0KPiA+Pg0KPiA+PiArICBW RVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCj4gPj4NCj4gPj4gKyAgTElCUkFS WV9DTEFTUyAgICAgICAgICAgICAgICAgID0gQ3B1Q2FjaGVJbmZvTGlifFBFSU0NCj4gPj4NCj4g Pj4gKyAgTU9EVUxFX1VOSV9GSUxFICAgICAgICAgICAgICAgID0gQ3B1Q2FjaGVJbmZvTGliLnVu aQ0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICtbU291cmNlc10NCj4gPj4NCj4gPj4gKyAgSW50 ZXJuYWxDcHVDYWNoZUluZm9MaWIuaA0KPiA+Pg0KPiA+PiArICBDcHVDYWNoZUluZm9MaWIuYw0K PiA+Pg0KPiA+PiArICBQZWlDcHVDYWNoZUluZm9MaWIuYw0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ ID4+ICtbUGFja2FnZXNdDQo+ID4+DQo+ID4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+DQo+ ID4+ICsgIFVlZmlDcHVQa2cvVWVmaUNwdVBrZy5kZWMNCj4gPj4NCj4gPj4gKw0KPiA+Pg0KPiA+ PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+Pg0KPiA+PiArICBCYXNlTGliDQo+ID4+DQo+ID4+ICsg IERlYnVnTGliDQo+ID4+DQo+ID4+ICsgIEJhc2VNZW1vcnlMaWINCj4gPj4NCj4gPj4gKyAgTWVt b3J5QWxsb2NhdGlvbkxpYg0KPiA+Pg0KPiA+PiArICBQZWlTZXJ2aWNlc1RhYmxlUG9pbnRlckxp Yg0KPiA+Pg0KPiA+PiArDQo+ID4+DQo+ID4+ICtbUHBpc10NCj4gPj4NCj4gPj4gKyAgZ0Vka2lp UGVpTXBTZXJ2aWNlczJQcGlHdWlkDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK1tQY2RdDQo+ ID4+DQo+ID4+ICsNCj4gPj4NCj4gPj4gK1tEZXBleF0NCj4gPj4NCj4gPj4gKyAgVFJVRQ0KPiA+ Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9VZWZpQ3B1UGtnLmRlYyBiL1VlZmlDcHVQ a2cvVWVmaUNwdVBrZy5kZWMNCj4gPj4gaW5kZXggZDgzYzA4NDQ2N2IzLi5hNjM5Y2U1NDEyZTQg MTAwNjQ0DQo+ID4+IC0tLSBhL1VlZmlDcHVQa2cvVWVmaUNwdVBrZy5kZWMNCj4gPj4gKysrIGIv VWVmaUNwdVBrZy9VZWZpQ3B1UGtnLmRlYw0KPiA+PiBAQCAtNTYsNiArNTYsOSBAQCBbTGlicmFy eUNsYXNzZXMuSUEzMiwgTGlicmFyeUNsYXNzZXMuWDY0XQ0KPiA+PiAgICAjIyAgQGxpYnJhcnlj bGFzcyAgUHJvdmlkZXMgZnVuY3Rpb24gdG8gc3VwcG9ydCBWTUdFWElUIHByb2Nlc3NpbmcuDQo+ ID4+DQo+ID4+ICAgIFZtZ0V4aXRMaWJ8SW5jbHVkZS9MaWJyYXJ5L1ZtZ0V4aXRMaWIuaA0KPiA+ Pg0KPiA+Pg0KPiA+Pg0KPiA+PiArICAjIyAgQGxpYnJhcnljbGFzcyAgUHJvdmlkZXMgZnVuY3Rp b24gdG8gZ2V0IENQVSBjYWNoZSBpbmZvcm1hdGlvbi4NCj4gPj4NCj4gPj4gKyAgQ3B1Q2FjaGVJ bmZvTGlifEluY2x1ZGUvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIuaA0KPiA+Pg0KPiA+PiArDQo+ ID4+DQo+ID4+ICBbR3VpZHNdDQo+ID4+DQo+ID4+ICAgIGdVZWZpQ3B1UGtnVG9rZW5TcGFjZUd1 aWQgICAgICA9IHsgMHhhYzA1YmYzMywgMHg5OTVhLCAweDRlZDQsIHsgMHhhYSwNCj4gMHhiOCwN Cj4gPj4gMHhlZiwgMHg3YSwgMHhlOCwgMHhmLCAweDVjLCAweGIwIH19DQo+ID4+DQo+ID4+ICAg IGdNc2VnU21yYW1HdWlkICAgICAgICAgICAgICAgICA9IHsgMHg1ODAyYmNlNCwgMHhlZWVlLCAw eDRlMzMsIHsgMHhhMSwgMHgzMCwNCj4gPj4gMHhlYiwgMHhhZCwgMHgyNywgMHhmMCwgMHhlNCwg MHgzOSB9fQ0KPiA+Pg0KPiA+PiBkaWZmIC0tZ2l0IGEvVWVmaUNwdVBrZy9VZWZpQ3B1UGtnLmRz YyBiL1VlZmlDcHVQa2cvVWVmaUNwdVBrZy5kc2MNCj4gPj4gaW5kZXggYjJiNmQ3OGE3MWIwLi41 ODM0ZWFmYWEyMDAgMTAwNjQ0DQo+ID4+IC0tLSBhL1VlZmlDcHVQa2cvVWVmaUNwdVBrZy5kc2MN Cj4gPj4gKysrIGIvVWVmaUNwdVBrZy9VZWZpQ3B1UGtnLmRzYw0KPiA+PiBAQCAtNzUsNiArNzUs NyBAQCBbTGlicmFyeUNsYXNzZXMuY29tbW9uLlBFSU1dDQo+ID4+DQo+IExvY2tCb3hMaWJ8TWRl TW9kdWxlUGtnL0xpYnJhcnkvU21tTG9ja0JveExpYi9TbW1Mb2NrQm94UGVpTGliLmluZg0KPiA+ Pg0KPiA+PiAgICBNcEluaXRMaWJ8VWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9QZWlNcElu aXRMaWIuaW5mDQo+ID4+DQo+ID4+DQo+ID4+DQo+IFJlZ2lzdGVyQ3B1RmVhdHVyZXNMaWJ8VWVm aUNwdVBrZy9MaWJyYXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIvUGVpUmVnaXN0DQo+ID4+IGVy Q3B1RmVhdHVyZXNMaWIuaW5mDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gQ3B1Q2FjaGVJbmZvTGli fFVlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIvUGVpQ3B1Q2FjaGVJbmZvTGliLmlu Zg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgW0xpYnJhcnlDbGFzc2VzLklBMzIuUEVJTSwgTGli cmFyeUNsYXNzZXMuWDY0LlBFSU1dDQo+ID4+DQo+ID4+DQo+ID4+DQo+IFBlaVNlcnZpY2VzVGFi bGVQb2ludGVyTGlifE1kZVBrZy9MaWJyYXJ5L1BlaVNlcnZpY2VzVGFibGVQb2ludGVyTGliSWR0 L1BlaVMNCj4gPj4gZXJ2aWNlc1RhYmxlUG9pbnRlckxpYklkdC5pbmYNCj4gPj4NCj4gPj4gQEAg LTg2LDYgKzg3LDcgQEAgW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5EWEVfRFJJVkVSXQ0KPiA+Pg0K PiA+Pg0KPiBDcHVFeGNlcHRpb25IYW5kbGVyTGlifFVlZmlDcHVQa2cvTGlicmFyeS9DcHVFeGNl cHRpb25IYW5kbGVyTGliL0R4ZUNwdQ0KPiA+PiBFeGNlcHRpb25IYW5kbGVyTGliLmluZg0KPiA+ Pg0KPiA+PiAgICBNcEluaXRMaWJ8VWVmaUNwdVBrZy9MaWJyYXJ5L01wSW5pdExpYi9EeGVNcElu aXRMaWIuaW5mDQo+ID4+DQo+ID4+DQo+ID4+DQo+IFJlZ2lzdGVyQ3B1RmVhdHVyZXNMaWJ8VWVm aUNwdVBrZy9MaWJyYXJ5L1JlZ2lzdGVyQ3B1RmVhdHVyZXNMaWIvRHhlUmVnaXN0DQo+ID4+IGVy Q3B1RmVhdHVyZXNMaWIuaW5mDQo+ID4+DQo+ID4+ICsNCj4gPj4NCj4gQ3B1Q2FjaGVJbmZvTGli fFVlZmlDcHVQa2cvTGlicmFyeS9DcHVDYWNoZUluZm9MaWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmlu Zg0KPiA+Pg0KPiA+Pg0KPiA+Pg0KPiA+PiAgW0xpYnJhcnlDbGFzc2VzLmNvbW1vbi5EWEVfU01N X0RSSVZFUl0NCj4gPj4NCj4gPj4NCj4gPj4NCj4gU21tU2VydmljZXNUYWJsZUxpYnxNZGVQa2cv TGlicmFyeS9TbW1TZXJ2aWNlc1RhYmxlTGliL1NtbVNlcnZpY2VzVGFiDQo+ID4+IGxlTGliLmlu Zg0KPiA+Pg0KPiA+PiBAQCAtMTA5LDYgKzExMSw4IEBAIFtDb21wb25lbnRzXQ0KPiA+PiAgICBV ZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1VGltZXJMaWIvQmFzZUNwdVRpbWVyTGliLmluZg0KPiA+Pg0K PiA+PiAgICBVZWZpQ3B1UGtnL0xpYnJhcnkvQ3B1VGltZXJMaWIvRHhlQ3B1VGltZXJMaWIuaW5m DQo+ID4+DQo+ID4+ICAgIFVlZmlDcHVQa2cvTGlicmFyeS9DcHVUaW1lckxpYi9QZWlDcHVUaW1l ckxpYi5pbmYNCj4gPj4NCj4gPj4gKyAgVWVmaUNwdVBrZy9MaWJyYXJ5L0NwdUNhY2hlSW5mb0xp Yi9QZWlDcHVDYWNoZUluZm9MaWIuaW5mDQo+ID4+DQo+ID4+ICsgIFVlZmlDcHVQa2cvTGlicmFy eS9DcHVDYWNoZUluZm9MaWIvRHhlQ3B1Q2FjaGVJbmZvTGliLmluZg0KPiA+Pg0KPiA+Pg0KPiA+ Pg0KPiA+PiAgW0NvbXBvbmVudHMuSUEzMiwgQ29tcG9uZW50cy5YNjRdDQo+ID4+DQo+ID4+ICAg IFVlZmlDcHVQa2cvQ3B1RHhlL0NwdUR4ZS5pbmYNCj4gPj4NCj4gPj4gLS0NCj4gPj4gMi4yOC4w LndpbmRvd3MuMQ0KPiA+DQoNCg==