From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=Lgzup/U6; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: michael.a.kubacki@intel.com) Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by groups.io with SMTP; Fri, 04 Oct 2019 09:48:11 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Oct 2019 09:48:11 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.67,256,1566889200"; d="scan'208";a="392364081" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by fmsmga005.fm.intel.com with ESMTP; 04 Oct 2019 09:48:11 -0700 Received: from fmsmsx151.amr.corp.intel.com (10.18.125.4) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 4 Oct 2019 09:48:11 -0700 Received: from FMSEDG002.ED.cps.intel.com (10.1.192.134) by FMSMSX151.amr.corp.intel.com (10.18.125.4) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 4 Oct 2019 09:48:10 -0700 Received: from NAM03-CO1-obe.outbound.protection.outlook.com (104.47.40.50) by edgegateway.intel.com (192.55.55.69) with Microsoft SMTP Server (TLS) id 14.3.439.0; Fri, 4 Oct 2019 09:48:10 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=GDxsV3RAeF1wC3/Q8WRGA9e2IhEZTiZcxzYPhxcxU/ET+a5gB0uXWh2jCCZu2WOiCsNd5cnK2RXY9JHgUiYIB2UPSOilFxgGowTwNbVPupCscXHmMtDm5LyVU35KS8JUIgg+q2/0jgwZ2CJffAKe7UMU9yPQvX0AEQFNA+XihQfUCvrY3z9Jh112AkK+gB7La6MGzK4DqdmsDts4PoLSyUBA8NX4xO5h4rfZO+i9Ycmg9IMC4IOME0zM8PaxgTM3PefeNFHR/BsMOMKBDcutzJR/D7/zsBvyxyoQIgKXd9gPJXrjbu31P6TMYiMilNUiNqXxRTKhsE0+fqROKZU/lw== 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=A8UU/BtGhH7JuoOOK930AsrzwWXrRjuIRIPNU/Mzb3A=; b=MD3C/Dvfvnul697MO/vdW3nnhNF1VIyB6UEJum7U08cXi2Dro5BTWMmgVq0GrJJcVbdVGG5NvV8ievYzeY3rPeVJqLAAszNXIeJQt/JuI2cuyqZswuCcF76KoABV81RyujUDBQenLq1gyuoTLhvGTsIb4HgZql9cmQP7/HYerg5X3AqV0S4y/nROV4uayoLgwwr/XrHaB7DS/CAsY5HzSWwr3eVuaJUUKpG2Zu4XxtHhm9If4TiPjvQ9x6tLSlcYzjJKFUiZ3xobUtO/GTbF9yntUI/quDHnJMrJNv8uwXICumQ1x8cMbFBHW1XzmV9vQL29CCisH+IDcEJ4jaucpA== 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=A8UU/BtGhH7JuoOOK930AsrzwWXrRjuIRIPNU/Mzb3A=; b=Lgzup/U6ltFvctPVf9HeW11p78f2GCoPGtu/pixIjz1NzboSqHpQLLRC2UBjpGWWqG9zfx5q4cmz0KTXL/Li2hrtHHJPt3af3B/eGGMOB3jIDWbDQIMKj11aH4R9sqaSzvngGO6IOck6qUqlYTmLIoVjWLo0Ym/Chfdn9rvmxdQ= Received: from DM6PR11MB3834.namprd11.prod.outlook.com (20.179.17.87) by DM6PR11MB3081.namprd11.prod.outlook.com (20.177.218.210) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2305.17; Fri, 4 Oct 2019 16:48:08 +0000 Received: from DM6PR11MB3834.namprd11.prod.outlook.com ([fe80::59cc:8a30:6b9e:584e]) by DM6PR11MB3834.namprd11.prod.outlook.com ([fe80::59cc:8a30:6b9e:584e%3]) with mapi id 15.20.2305.023; Fri, 4 Oct 2019 16:48:08 +0000 From: "Kubacki, Michael A" To: Laszlo Ersek , "Kinney, Michael D" , "Wu, Hao A" , "devel@edk2.groups.io" CC: "Bi, Dandan" , Ard Biesheuvel , "Dong, Eric" , "Gao, Liming" , "Ni, Ray" , "Wang, Jian J" , "Yao, Jiewen" Subject: Re: [PATCH V2 7/9] MdeModulePkg/Variable: Add RT GetVariable() cache support Thread-Topic: [PATCH V2 7/9] MdeModulePkg/Variable: Add RT GetVariable() cache support Thread-Index: AQHVdZ68oSYHi0EfNkyFbThKCzvSRqdDzt8ggAV9wYCAADQ/gIAAGR6ggAB61wCAAJ/c4A== Date: Fri, 4 Oct 2019 16:48:08 +0000 Message-ID: References: <20190928014717.31372-1-michael.a.kubacki@intel.com> <20190928014717.31372-8-michael.a.kubacki@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiMmNkZWZmZWMtMDY4MC00ZDU0LWJjNDgtYzU2MTRmMTdhYTRiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoickwrMWY5YkpIcEROa1FsbytoK3E5eHRKdWV0Tm0xdmRJNUthZWZ1WnNybXVIQ0RpZ2tcL3VTbWsySEFXZTZuUEUifQ== dlp-reaction: no-action dlp-version: 11.2.0.6 authentication-results: spf=none (sender IP is ) smtp.mailfrom=michael.a.kubacki@intel.com; x-originating-ip: [134.134.136.217] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: feb9cdef-b2ad-4f71-7f65-08d748eaa2c7 x-ms-traffictypediagnostic: DM6PR11MB3081: x-ms-exchange-purlcount: 1 x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:10000; x-forefront-prvs: 018093A9B5 x-forefront-antispam-report: SFV:NSPM;SFS:(10019020)(346002)(366004)(136003)(376002)(396003)(39860400002)(189003)(199004)(13464003)(30864003)(6436002)(305945005)(7736002)(11346002)(52536014)(26005)(186003)(66446008)(64756008)(2906002)(99286004)(102836004)(446003)(486006)(71190400001)(476003)(53546011)(6506007)(5660300002)(6116002)(3846002)(71200400001)(6306002)(55016002)(76116006)(14444005)(256004)(4326008)(6246003)(107886003)(9686003)(74316002)(14454004)(229853002)(110136005)(316002)(66066001)(8676002)(81166006)(8936002)(54906003)(25786009)(478600001)(86362001)(81156014)(2501003)(76176011)(7696005)(66476007)(33656002)(66946007)(66556008)(567084001)(579004)(559001)(569006);DIR:OUT;SFP:1102;SCL:1;SRVR:DM6PR11MB3081;H:DM6PR11MB3834.namprd11.prod.outlook.com;FPR:;SPF:None;LANG:en;PTR:InfoNoRecords;MX:1;A:1; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: PKW4CQHZQK1GWOMvcjMxAvfDAquIIlKEeJAkJ68IEZcpiS9dPUgOOzRcMpwLQaZDVfhs25hu5O4qVPonFQjaSuu54dthqWv9CKTpVL1EqHy72vVicYWCq63Ptpc9dr6xRUXhOOkMoA2S739crLMQDMT9ZThnrbqzANUvGfSGs8hVSusvW/YQ73+zNWnj2EwYpAbGVcxs0zd20tY863tq84MntM1+SC9Zf8TWIltIS9jam6lEwrnSVeM+ODkd8nJio7k4/3T4nkWnaCS2s5EbupFNP149FBgzW38wi80LkcyBe7Xlnobk4e2ma5uwoK01eZba5E4zFsRNpBod7e2En8E6wiNQlQeWC1yvAF4oxVOvLWkXDfZbaiJypTnLLQH9aG32s/uC/ExRaUOPEf7kxMIis2gjQIcG0RKIzNwVYBpEyDm6A9yJeiy7AiJQkMfS2jEJv7WJSkwdgxBkSYIHuQ== MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: feb9cdef-b2ad-4f71-7f65-08d748eaa2c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 04 Oct 2019 16:48:08.4856 (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: Vqs+d59akbeRlMKULkm36KXcVou8Vcvpi58RtDFe5Sm90q6E4weL0JucC1ZNlQjeaWAiFUiaEgq2LW1Hphp42iyo/K6KtYO0lRamz6a6Sb4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR11MB3081 Return-Path: michael.a.kubacki@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PiBPbiAxMC8wNC8xOSAwMTozMSwgS3ViYWNraSwgTWljaGFlbCBBIHdyb3RlOg0KPiA+IEkgYWdy ZWUsIEkgd2lsbCBtYWtlIHRoZSBkZWZhdWx0IHRvIGVuYWJsZSB0aGUgcnVudGltZSBjYWNoZS4N Cj4gDQo+IEkndmUganVzdCBtYWRlIGEgcmVxdWVzdCBmb3IgdGhlIG9wcG9zaXRlIDopICwgYmVm b3JlIHJlYWRpbmcgdGhpcyBwYXJ0DQo+IG9mIHRoZSB0aHJlYWQuDQo+IA0KPiBMZXQgbWUgcmV2 aXNlIG15IHJlcXVlc3QgdGhlbiwgc2VlaW5nIHRoZSBhYm92ZSBwcmVmZXJlbmNlLiBGcm9tIHRo ZQ0KPiBmb2xsb3dpbmcgdGhyZWUgb3B0aW9uczoNCj4gDQo+ICgxKSBzZXQgREVDIGRlZmF1bHQg dG8gRkFMU0UsDQo+IA0KPiAoMikgc2V0IHRoZSBERUMgZGVmYXVsdCB0byBUUlVFLCBidXQgc2V0 IHRoZSBQQ0QgaW4gT3ZtZlBrZyBEU0MgZmlsZXMgdG8NCj4gRkFMU0UsDQo+IA0KPiAoMykgc2V0 IHRoZSBERUMgZGVmYXVsdCB0byBUUlVFLCBhbmQgaW5oZXJpdCBpdCBpbiBPdm1mUGtnLA0KPiAN Cj4gSSdkIGFzayBmb3IgKDIpIGluIHRoZSBzaG9ydCBvciBtaWQgdGVybSwgYW5kIGVudGVydGFp biAoMykgaW4gdGhlIGxvbmcNCj4gdGVybSAoZGVwZW5kZW50IG9uIHRoZSB1cHN0cmVhbSBrZXJu ZWwgcGF0Y2ggSSBsaW5rZWQgZWxzZXdoZXJlIGluIHRoZQ0KPiB0aHJlYWQ6DQo+IDxodHRwOi8v bWlkLm1haWwtYXJjaGl2ZS5jb20vMjAxOTEwMDMxMDA3MTIuMzEwNDUtMS0NCj4gamF2aWVybUBy ZWRoYXQuY29tPikuDQo+IA0KPiANCj4gV2l0aCB0aGUgUENEIGF2YWlsYWJsZSBpbiB0aGUgREVD IGZpbGUsIEkgYWdyZWUgdGhhdCBkb3duc3RyZWFtIE9WTUYNCj4gcGFja2FnZXMgY291bGQgZWFz aWx5IGJlIGJ1aWx0IHdpdGggdGhlIFBDRCBzZXQgdG8gRkFMU0UsIGUuZy4gb24gdGhlDQo+ICJi dWlsZCIgY29tbWFuZCBsaW5lLCByZWdhcmRsZXNzIG9mIHRoZSB1cHN0cmVhbSBPdm1mUGtnIERT QyBzZXR0aW5nLg0KPiBHaXZlbiB0aGF0LCBvcHRpb24gKDIpIG1pZ2h0IGFwcGVhciBzdXBlcmZs dW91cy4NCj4gDQo+IEhvd2V2ZXIsIEknZCBsaWtlIHVwc3RyZWFtIE92bWZQa2cncyBEU0Mgc2V0 dGluZyB0byByZWZsZWN0IHRoYXQgYXMgeWV0LA0KPiB0aGVyZSBpcyBubyBhbHRlcm5hdGl2ZSB0 byBHZXRWYXJpYWJsZSgpLCBmb3IgZXhlcmNpc2luZyB0aGUgU01NIHN0YWNrDQo+IGJ1aWx0IGlu dG8gT1ZNRiB3aXRob3V0IHNpZGUgZWZmZWN0cyB0byB0aGUgdmFyaWFibGUgc3RvcmUuIE9uY2Ug dGhlDQo+IGtlcm5lbCBwYXRjaCBpcyBtZXJnZWQgYW5kIFF1ZXJ5VmFyaWFibGVJbmZvKCkgYmVj b21lcyAqcmVjb21tZW5kYWJsZSoNCj4gYXMgYSBwcmFjdGljYWwgc3Vic3RpdHV0ZSBmb3IgR2V0 VmFyaWFibGUoKSwgd2UgY2FuIHN3aXRjaCB1cHN0cmVhbQ0KPiBPdm1mUGtnIGZyb20gb3B0aW9u ICgyKSB0byBvcHRpb24gKDMpLg0KPiANCj4gRG9lcyB0aGF0IHNvdW5kIGFjY2VwdGFibGU/DQo+ IA0KDQpJIGhhdmUgbm8gcHJvYmxlbSBzZXR0aW5nIHRoZSBQQ0QgdG8gRkFMU0UgaW4gYWxsIHRo ZSBPdm1mUGtnIERTQyBmaWxlcy4gDQoNCj4gVGhhbmtzIQ0KPiBMYXN6bG8NCj4gDQo+IA0KPiA+ DQo+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4+IEZyb206IEtpbm5leSwgTWlj aGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4gU2VudDogVGh1cnNkYXks IE9jdG9iZXIgMywgMjAxOSAzOjAxIFBNDQo+ID4+IFRvOiBLdWJhY2tpLCBNaWNoYWVsIEEgPG1p Y2hhZWwuYS5rdWJhY2tpQGludGVsLmNvbT47IFd1LCBIYW8gQQ0KPiA+PiA8aGFvLmEud3VAaW50 ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87IEtpbm5leSwgTWljaGFlbCBEDQo+ID4+IDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPj4gQ2M6IEJpLCBEYW5kYW4gPGRhbmRhbi5i aUBpbnRlbC5jb20+OyBBcmQgQmllc2hldXZlbA0KPiA+PiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJv Lm9yZz47IERvbmcsIEVyaWMgPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBMYXN6bG8NCj4gRXJzZWsN Cj4gPj4gPGxlcnNla0ByZWRoYXQuY29tPjsgR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwu Y29tPjsgTmksIFJheQ0KPiA+PiA8cmF5Lm5pQGludGVsLmNvbT47IFdhbmcsIEppYW4gSiA8amlh bi5qLndhbmdAaW50ZWwuY29tPjsgWWFvLCBKaWV3ZW4NCj4gPj4gPGppZXdlbi55YW9AaW50ZWwu Y29tPg0KPiA+PiBTdWJqZWN0OiBSRTogW1BBVENIIFYyIDcvOV0gTWRlTW9kdWxlUGtnL1Zhcmlh YmxlOiBBZGQgUlQNCj4gR2V0VmFyaWFibGUoKQ0KPiA+PiBjYWNoZSBzdXBwb3J0DQo+ID4+DQo+ ID4+IE1pY2hhZWwsDQo+ID4+DQo+ID4+IFBlcmhhcHMgdGhlIEZlYXR1cmVQQ0QgZm9yICMyIHNo b3VsZCBiZSBlbmFibGVkIGJ5IGRlZmF1bHQNCj4gPj4gc28gdGhlIHBsYXRmb3JtIERTQyBvbmx5 IG5lZWRzIHRvIHNldCB0aGlzIFBDRCBmb3Igc29tZQ0KPiA+PiB2YWxpZGF0aW9uIHRlc3RzLg0K PiA+Pg0KPiA+PiBNaWtlDQo+ID4+DQo+ID4+DQo+ID4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQ0KPiA+Pj4gRnJvbTogS3ViYWNraSwgTWljaGFlbCBBIDxtaWNoYWVsLmEua3ViYWNraUBp bnRlbC5jb20+DQo+ID4+PiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAzLCAyMDE5IDI6NTQgUE0N Cj4gPj4+IFRvOiBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT47IGRldmVsQGVkazIuZ3Jv dXBzLmlvDQo+ID4+PiBDYzogQmksIERhbmRhbiA8ZGFuZGFuLmJpQGludGVsLmNvbT47IEFyZCBC aWVzaGV1dmVsDQo+ID4+PiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47IERvbmcsIEVyaWMN Cj4gPj4+IDxlcmljLmRvbmdAaW50ZWwuY29tPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0 LmNvbT47DQo+ID4+PiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBLaW5uZXks IE1pY2hhZWwgRA0KPiA+Pj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTmksIFJheQ0K PiA+Pj4gPHJheS5uaUBpbnRlbC5jb20+OyBXYW5nLCBKaWFuIEoNCj4gPj4+IDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+OyBZYW8sIEppZXdlbg0KPiA+Pj4gPGppZXdlbi55YW9AaW50ZWwuY29tPg0K PiA+Pj4gU3ViamVjdDogUkU6IFtQQVRDSCBWMiA3LzldIE1kZU1vZHVsZVBrZy9WYXJpYWJsZTog QWRkDQo+ID4+PiBSVCBHZXRWYXJpYWJsZSgpIGNhY2hlIHN1cHBvcnQNCj4gPj4+DQo+ID4+PiAj MSAtIFRoZSBwbGFuIGlzIHRvIHJlbW92ZSB0aGUgcG9sbGluZyBlbnRpcmVseSBpbiBWMy4NCj4g Pj4+DQo+ID4+PiAjMiAtIEknZCBwcmVmZXIgdG8gdGFrZSBhIGRlZmluaXRpdmUgZGlyZWN0aW9u IGFuZA0KPiA+Pj4gcmVkdWNlIHZhbGlkYXRpb24gYW5kIG1haW50ZW5hbmNlDQo+ID4+PiAgICAg ICAgIGVmZm9ydCBidXQgeW91IGFuZCBMYXN6bG8gYm90aCByZXF1ZXN0ZWQgdGhpcyBzbw0KPiA+ Pj4gSSdsbCBhZGQgYSBGZWF0dXJlUENEIHRvIGNvbnRyb2wNCj4gPj4+ICAgICAgICAgYWN0aXZh dGlvbiBvZiB0aGUgcnVudGltZSBjYWNoZSBpbiB0aGlzIHBhdGNoDQo+ID4+PiBzZXJpZXMuIFBl cmhhcHMgdGhpcyBjYW4gYmUgcmVtb3ZlZA0KPiA+Pj4gICAgICAgICBpbiB0aGUgZnV0dXJlLg0K PiA+Pj4NCj4gPj4+ICMzIC0gV2lsbCBiZSBkb25lIGluIFYzLg0KPiA+Pj4NCj4gPj4+IE90aGVy IHJlcGxpZXMgYXJlIGlubGluZS4NCj4gPj4+DQo+ID4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdl LS0tLS0NCj4gPj4+PiBGcm9tOiBXdSwgSGFvIEEgPGhhby5hLnd1QGludGVsLmNvbT4NCj4gPj4+ PiBTZW50OiBUaHVyc2RheSwgT2N0b2JlciAzLCAyMDE5IDE6MDUgQU0NCj4gPj4+PiBUbzogS3Vi YWNraSwgTWljaGFlbCBBIDxtaWNoYWVsLmEua3ViYWNraUBpbnRlbC5jb20+Ow0KPiA+Pj4+IGRl dmVsQGVkazIuZ3JvdXBzLmlvDQo+ID4+Pj4gQ2M6IEJpLCBEYW5kYW4gPGRhbmRhbi5iaUBpbnRl bC5jb20+OyBBcmQgQmllc2hldXZlbA0KPiA+Pj4+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3Jn PjsgRG9uZywgRXJpYw0KPiA+Pj4gPGVyaWMuZG9uZ0BpbnRlbC5jb20+OyBMYXN6bG8gRXJzZWsN Cj4gPj4+PiA8bGVyc2VrQHJlZGhhdC5jb20+OyBHYW8sIExpbWluZw0KPiA+Pj4gPGxpbWluZy5n YW9AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNoYWVsDQo+ID4+Pj4gRCA8bWljaGFlbC5kLmtpbm5l eUBpbnRlbC5jb20+OyBOaSwgUmF5DQo+ID4+PiA8cmF5Lm5pQGludGVsLmNvbT47IFdhbmcsIEpp YW4gSg0KPiA+Pj4+IDxqaWFuLmoud2FuZ0BpbnRlbC5jb20+OyBZYW8sIEppZXdlbg0KPiA+Pj4g PGppZXdlbi55YW9AaW50ZWwuY29tPg0KPiA+Pj4+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggVjIgNy85 XSBNZGVNb2R1bGVQa2cvVmFyaWFibGU6IEFkZA0KPiA+Pj4gUlQgR2V0VmFyaWFibGUoKQ0KPiA+ Pj4+IGNhY2hlIHN1cHBvcnQNCj4gPj4+Pg0KPiA+Pj4+IEJlZm9yZSBhbnkgY29tbWVudCBvbiB0 aGUgcGF0Y2gsIHNpbmNlIEkgYW0gbm90DQo+ID4+PiBleHBlcmllbmNlZCBpbiB0aGUNCj4gPj4+ PiBWYXJpYWJsZQ0KPiA+Pj4+IGRyaXZlciwgSSB3b3VsZCBsaWtlIHRvIGFzayBmb3IgaGVscCBm cm9tIG90aGVyDQo+ID4+PiByZXZpZXdlcnMgdG8gbG9vayBpbnRvIHRoaXMNCj4gPj4+PiBwYXRj aCBhbmQgcHJvdmlkZSBmZWVkYmFja3MgYXMgd2VsbC4gVGhhbmtzIGluDQo+ID4+PiBhZHZhbmNl Lg0KPiA+Pj4+DQo+ID4+Pj4gV2l0aCB0aGUgYWJvdmUgZmFjdCwgc29tZSBjb21tZW50cyBwcm92 aWRlZCBiZWxvdw0KPiA+Pj4gbWF5YmUgd3JvbmcuIFNvDQo+ID4+Pj4gcGxlYXNlIGhlbHANCj4g Pj4+PiB0byBraW5kbHkgY29ycmVjdCBtZS4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gU29tZSBn ZW5lcmFsIGNvbW1lbnRzOg0KPiA+Pj4+IDEuIEkgYW0gbm90IHN1cmUgaWYgYnJpbmdpbmcgdGhl IFRpbWVyTGliIGRlcGVuZGVuY3kNCj4gPj4+IChkZWxheSBpbiBhY3F1aXJpbmcgdGhlDQo+ID4+ Pj4gICAgcnVudGltZSBjYWNoZSByZWFkIGxvY2spIHRvIHZhcmlhYmxlIGRyaXZlciAoYQ0KPiA+ Pj4gc29mdHdhcmUgZHJpdmVyIGZvciB0aGUgbW9zdA0KPiA+Pj4+ICAgIHBhcnQpIGlzIGEgZ29v ZCBpZGVhLg0KPiA+Pj4+DQo+ID4+Pj4gICAgSG9wZSBvdGhlciByZXZpZXdlcnMgY2FuIHByb3Zp ZGUgc29tZSBmZWVkYmFja3MgZm9yDQo+ID4+PiB0aGlzLiBUaGFua3MgaW4NCj4gPj4+PiBhZHZh bmNlLg0KPiA+Pj4+DQo+ID4+Pj4gMi4gSW4gbXkgb3BpbmlvbiwgSSBwcmVmZXIgYSBzd2l0Y2gg Y2FuIGJlIHByb3ZpZGVkDQo+ID4+PiBmb3IgcGxhdGZvcm0gb3duZXJzIHRvDQo+ID4+Pj4gICAg Y2hvb3NlIGJldHdlZW4gdXNpbmcgdGhlIHJ1bnRpbWUgY2FjaGUgYW5kIGdvaW5nDQo+ID4+PiB0 aHJvdWdoIFNNTSBmb3INCj4gPj4+PiBHZXRWYXJpYWJsZQ0KPiA+Pj4+ICAgIChhbmQgZm9yIEdl dE5leHRWYXJpYWJsZU5hbWUgaW4gdGhlIG5leHQgcGF0Y2ggYXMNCj4gPj4+IHdlbGwpLg0KPiA+ Pj4+DQo+ID4+Pj4gICAgSWYgcGxhdGZvcm0gb3duZXJzIGZlZWwgdW5jb21mb3J0YWJsZSB3aXRo IHVzaW5nDQo+ID4+PiB0aGUgcnVudGltZSBjYWNoZSB3aXRoDQo+ID4+Pj4gICAgcmVnYXJkIHRv IHRoZSBzZWN1cml0eSBwZXJzcGVjdGl2ZSwgdGhleSBjYW4gc3dpdGNoDQo+ID4+PiB0byB0aGUg b3JpZ2luIHNvbHV0aW9uLg0KPiA+Pj4+DQo+ID4+Pj4gMy4gUGxlYXNlIGhlbHAgdG8gcmVtb3Zl IHRoZSAnRUZJQVBJJyBrZXl3b3JkIGZvciBuZXcNCj4gPj4+IGRyaXZlciBpbnRlcm5hbA0KPiA+ Pj4+IGZ1bmN0aW9uczsNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gSW5saW5lIGNvbW1lbnRzIGJl bG93Og0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPj4+Pj4gRnJvbTogS3ViYWNraSwgTWljaGFlbCBBDQo+ID4+Pj4+IFNlbnQ6IFNhdHVyZGF5 LCBTZXB0ZW1iZXIgMjgsIDIwMTkgOTo0NyBBTQ0KPiA+Pj4+PiBUbzogZGV2ZWxAZWRrMi5ncm91 cHMuaW8NCj4gPj4+Pj4gQ2M6IEJpLCBEYW5kYW47IEFyZCBCaWVzaGV1dmVsOyBEb25nLCBFcmlj OyBMYXN6bG8NCj4gPj4+IEVyc2VrOyBHYW8sIExpbWluZzsNCj4gPj4+PiBLaW5uZXksDQo+ID4+ Pj4+IE1pY2hhZWwgRDsgTmksIFJheTsgV2FuZywgSmlhbiBKOyBXdSwgSGFvIEE7IFlhbywNCj4g Pj4+IEppZXdlbg0KPiA+Pj4+PiBTdWJqZWN0OiBbUEFUQ0ggVjIgNy85XSBNZGVNb2R1bGVQa2cv VmFyaWFibGU6IEFkZA0KPiA+Pj4gUlQgR2V0VmFyaWFibGUoKQ0KPiA+Pj4+PiBjYWNoZSBzdXBw b3J0DQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+PiBSRUY6aHR0cHM6Ly9idWd6aWxsYS50aWFub2Nv cmUub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjIwDQo+ID4+Pj4+DQo+ID4+Pj4+IFRoaXMgY2hhbmdl IHJlZHVjZXMgU01JcyBmb3IgR2V0VmFyaWFibGUgKCkgYnkNCj4gPj4+IG1haW50YWluaW5nIGEN Cj4gPj4+Pj4gVUVGSSB2YXJpYWJsZSBjYWNoZSBpbiBSdW50aW1lIERYRSBpbiBhZGRpdGlvbiB0 bw0KPiA+Pj4gdGhlIHByZS0NCj4gPj4+Pj4gZXhpc3RpbmcgY2FjaGUgaW4gU01SQU0uIFdoZW4g dGhlIFJ1bnRpbWUgU2VydmljZQ0KPiA+Pj4gR2V0VmFyaWFibGUoKQ0KPiA+Pj4+PiBpcyBpbnZv a2VkLCBhIFJ1bnRpbWUgRFhFIGNhY2hlIGlzIHVzZWQgaW5zdGVhZCBvZg0KPiA+Pj4gdHJpZ2dl cmluZyBhbg0KPiA+Pj4+PiBTTUkgdG8gVmFyaWFibGVTbW0uIFRoaXMgY2FuIGltcHJvdmUgb3Zl cmFsbCBzeXN0ZW0NCj4gPj4+IHBlcmZvcm1hbmNlDQo+ID4+Pj4+IGJ5IHNlcnZpY2luZyB2YXJp YWJsZSByZWFkIHJlcXVlc3RzIHdpdGhvdXQNCj4gPj4+IHJlbmRlenZvdXNpbmcgYWxsDQo+ID4+ Pj4+IGNvcmVzIGludG8gU01NLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBUaGUgZm9sbG93aW5nIGFyZSBp bXBvcnRhbnQgcG9pbnRzIHJlZ2FyZGluZyB0aGlzDQo+ID4+PiBjaGFuZ2UuDQo+ID4+Pj4+DQo+ ID4+Pj4+IDEuIEFsbCBvZiB0aGUgbm9uLXZvbGF0aWxlIHN0b3JhZ2UgY29udGVudHMgYXJlDQo+ ID4+PiBsb2FkZWQgaW50byB0aGUNCj4gPj4+Pj4gICAgY2FjaGUgdXBvbiBkcml2ZXIgbG9hZC4g VGhpcyBvbmUgdGltZSBsb2FkDQo+ID4+PiBvcGVyYXRpb24gZnJvbSBzdG9yYWdlDQo+ID4+Pj4+ ICAgIGlzIHByZWZlcnJlZCBhcyBvcHBvc2VkIHRvIGJ1aWxkaW5nIHRoZSBjYWNoZSBvbg0KPiA+ Pj4gZGVtYW5kLiBBbiBvbi0NCj4gPj4+Pj4gICAgZGVtYW5kIGNhY2hlIHdvdWxkIHJlcXVpcmUg YSBmYWxsYmFjayBTTUkgdG8gbG9hZA0KPiA+Pj4gZGF0YSBpbnRvIHRoZQ0KPiA+Pj4+PiAgICBj YWNoZSBhcyB2YXJpYWJsZXMgYXJlIHJlcXVlc3RlZC4NCj4gPj4+Pj4NCj4gPj4+Pj4gMi4gU2V0 VmFyaWFibGUgKCkgcmVxdWVzdHMgd2lsbCBjb250aW51ZSB0byBhbHdheXMNCj4gPj4+IHRyaWdn ZXIgYW4gU01JLg0KPiA+Pj4+PiAgICBUaGlzIG9jY3VycyByZWdhcmRsZXNzIG9mIHdoZXRoZXIg dGhlIHZhcmlhYmxlIGlzDQo+ID4+PiB2b2xhdGlsZSBvcg0KPiA+Pj4+PiAgICBub24tdm9sYXRp bGUuDQo+ID4+Pj4+DQo+ID4+Pj4+IDMuIEJvdGggdm9sYXRpbGUgYW5kIG5vbi12b2xhdGlsZSB2 YXJpYWJsZXMgYXJlDQo+ID4+PiBjYWNoZWQgaW4gYSBydW50aW1lDQo+ID4+Pj4+ICAgIGJ1ZmZl ci4gQXMgaXMgdGhlIGNhc2UgaW4gdGhlIGN1cnJlbnQgRURLIElJDQo+ID4+PiB2YXJpYWJsZSBk cml2ZXIsIHRoZXkNCj4gPj4+Pj4gICAgY29udGludWUgdG8gYmUgY2FjaGVkIGluIHNlcGFyYXRl IGJ1ZmZlcnMuDQo+ID4+Pj4+DQo+ID4+Pj4+IDQuIFRoZSBjYWNoZSBpbiBSdW50aW1lIERYRSBh bmQgU01NIGFyZSBpbnRlbmRlZCB0bw0KPiA+Pj4gYmUgZXhhY3QgY29waWVzDQo+ID4+Pj4+ICAg IG9mIG9uZSBhbm90aGVyLiBBbGwgU01NIHZhcmlhYmxlIGFjY2Vzc2VzIG9ubHkNCj4gPj4+IHJl dHVybiBkYXRhIGZyb20gdGhlDQo+ID4+Pj4+ICAgIFNNTSBjYWNoZS4gVGhlIHJ1bnRpbWUgY2Fj aGVzIGFyZSBvbmx5IHVwZGF0ZWQNCj4gPj4+IGFmdGVyIHRoZSB2YXJpYWJsZSBJL08NCj4gPj4+ Pj4gICAgb3BlcmF0aW9uIGlzIHN1Y2Nlc3NmdWwgaW4gU01NLiBUaGUgcnVudGltZQ0KPiA+Pj4g Y2FjaGVzIGFyZSBvbmx5IHVwZGF0ZWQNCj4gPj4+Pj4gICAgZnJvbSBTTU0uDQo+ID4+Pj4+DQo+ ID4+Pj4+IDUuIFN5bmNocm9uaXphdGlvbiBtZWNoYW5pc21zIGFyZSBpbiBwbGFjZSB0byBlbnN1 cmUNCj4gPj4+IHRoZSBydW50aW1lIGNhY2hlDQo+ID4+Pj4+ICAgIGNvbnRlbnQgaW50ZWdyaXR5 IHdpdGggdGhlIFNNTSBjYWNoZS4gVGhlc2UgbWF5DQo+ID4+PiByZXN1bHQgaW4gdXBkYXRlcyB0 bw0KPiA+Pj4+PiAgICBydW50aW1lIGNhY2hlIHRoYXQgYXJlIHRoZSBzYW1lIGluIGNvbnRlbnQg YnV0DQo+ID4+PiBkaWZmZXJlbnQgaW4gb2Zmc2V0IGFuZA0KPiA+Pj4+PiAgICBzaXplIGZyb20g dXBkYXRlcyB0byB0aGUgU01NIGNhY2hlLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBXaGVuIHVzaW5nIFNN TSB2YXJpYWJsZXMsIHR3byBjYWNoZXMgd2lsbCBub3cgYmUNCj4gPj4+IHByZXNlbnQuDQo+ID4+ Pj4+IDEuICJSdW50aW1lIENhY2hlIiAtIE1haW50YWluZWQgaW4NCj4gPj4+IFZhcmlhYmxlU21t UnVudGltZUR4ZS4gVXNlZCB0bw0KPiA+Pj4+PiBzZXJ2aWNlDQo+ID4+Pj4+ICAgIFJ1bnRpbWUg U2VydmljZXMgR2V0VmFyaWFibGUgKCkgYW5kDQo+ID4+PiBHZXROZXh0VmFyaWFibGVOYW1lICgp IGNhbGxlcnMuDQo+ID4+Pj4+IDIuICJTTU0gQ2FjaGUiIC0gTWFpbnRhaW5lZCBpbiBWYXJpYWJs ZVNtbSB0bw0KPiA+Pj4gc2VydmljZSBTTU0gR2V0VmFyaWFibGUNCj4gPj4+PiAoKQ0KPiA+Pj4+ PiAgICBhbmQgR2V0TmV4dFZhcmlhYmxlTmFtZSAoKSBjYWxsZXJzLg0KPiA+Pj4+PiAgICBhLiBU aGlzIGNhY2hlIGlzIHJldGFpbmVkIHNvIFNNTSBtb2R1bGVzIGRvIG5vdA0KPiA+Pj4gb3BlcmF0 ZSBvbiBkYXRhIG91dHNpZGUNCj4gPj4+Pj4gICAgICAgU01SQU0uDQo+ID4+Pj4+DQo+ID4+Pj4+ IEl0IGlzIHBvc3NpYmxlIHRvIHZpZXcgVUVGSSB2YXJpYWJsZSByZWFkIGFuZCB3cml0ZQ0KPiA+ Pj4gc3RhdGlzdGljcyBieSBzZXR0aW5nDQo+ID4+Pj4+IHRoZQ0KPiA+Pj4gZ0VmaU1kZU1vZHVs ZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFZhcmlhYmxlQ29sbGVjdFN0YXRpc3QNCj4gPj4+IGljcw0K PiA+Pj4+PiBGZWF0dXJlUGNkDQo+ID4+Pj4+IHRvIFRSVUUgYW5kIHVzaW5nIHRoZSBWYXJpYWJs ZUluZm8gVUVGSSBhcHBsaWNhdGlvbg0KPiA+Pj4gaW4gTWRlTW9kdWxlUGtnIHRvDQo+ID4+Pj4+ IGR1bXANCj4gPj4+Pj4gdmFyaWFibGUgc3RhdGlzdGljcyB0byB0aGUgY29uc29sZS4gQnkgZG9p bmcgc28sIGENCj4gPj4+IHVzZXIgY2FuIHZpZXcgdGhlIG51bWJlcg0KPiA+Pj4+PiBvZiBHZXRW YXJpYWJsZSAoKSBoaXRzIGZyb20gdGhlIFJ1bnRpbWUgRFhFIHZhcmlhYmxlDQo+ID4+PiBkcml2 ZXIgKFJ1bnRpbWUgQ2FjaGUNCj4gPj4+Pj4gaGl0cykgYW5kIHRoZSBTTU0gdmFyaWFibGUgZHJp dmVyIChTTU0gQ2FjaGUgaGl0cykuDQo+ID4+PiBTTU0gQ2FjaGUgaGl0cyBmb3INCj4gPj4+Pj4g R2V0VmFyaWFibGUgKCkgd2lsbCBvY2N1ciB3aGVuIFNNTSBtb2R1bGVzIGludm9rZQ0KPiA+Pj4g R2V0VmFyaWFibGUgKCkuDQo+ID4+Pj4+DQo+ID4+Pj4+IENjOiBEYW5kYW4gQmkgPGRhbmRhbi5i aUBpbnRlbC5jb20+DQo+ID4+Pj4+IENjOiBBcmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxA bGluYXJvLm9yZz4NCj4gPj4+Pj4gQ2M6IEVyaWMgRG9uZyA8ZXJpYy5kb25nQGludGVsLmNvbT4N Cj4gPj4+Pj4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4+Pj4+IENj OiBMaW1pbmcgR2FvIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gPj4+Pj4gQ2M6IE1pY2hhZWwg RCBLaW5uZXkgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+Pj4+PiBDYzogUmF5IE5p IDxyYXkubmlAaW50ZWwuY29tPg0KPiA+Pj4+PiBDYzogSmlhbiBKIFdhbmcgPGppYW4uai53YW5n QGludGVsLmNvbT4NCj4gPj4+Pj4gQ2M6IEhhbyBBIFd1IDxoYW8uYS53dUBpbnRlbC5jb20+DQo+ ID4+Pj4+IENjOiBKaWV3ZW4gWWFvIDxqaWV3ZW4ueWFvQGludGVsLmNvbT4NCj4gPj4+Pj4gU2ln bmVkLW9mZi1ieTogTWljaGFlbCBLdWJhY2tpDQo+ID4+PiA8bWljaGFlbC5hLmt1YmFja2lAaW50 ZWwuY29tPg0KPiA+Pj4+PiAtLS0NCj4gPj4+Pj4NCj4gPj4+IE1kZU1vZHVsZVBrZy9Vbml2ZXJz YWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVJ1bnRpDQo+ID4+PiBtZUR4ZS5pbmYNCj4g Pj4+Pj4gfCAgIDIgKw0KPiA+Pj4+Pg0KPiA+Pj4gTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJp YWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21tLmkNCj4gPj4+IG5mICAgICAgICAgICB8DQo+ID4+ Pj4gMg0KPiA+Pj4+PiArDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+IE1kZU1vZHVs ZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbVJ1DQo+ID4+PiBu dGltZUR4ZS5pDQo+ID4+Pj4+IG5mIHwgIDMxICstDQo+ID4+Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4N Cj4gPj4+IE1kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJs ZVN0YW5kDQo+ID4+PiBhbG9uZU1tLmluZg0KPiA+Pj4+PiB8ICAgMiArDQo+ID4+Pj4+ICBNZGVN b2R1bGVQa2cvSW5jbHVkZS9HdWlkL1NtbVZhcmlhYmxlQ29tbW9uLmgNCj4gPj4+IHwgIDI5ICst DQo+ID4+Pj4+DQo+ID4+PiBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVE eGUvVmFyaWFibGUuaA0KPiA+Pj4gfCAgMzkNCj4gPj4+PiArLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ ID4+PiBNZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVS dW50aQ0KPiA+Pj4gbWVDYWNoZS5oDQo+ID4+Pj4+IHwgIDQ3ICsrDQo+ID4+Pj4+DQo+ID4+PiBN ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGUuYw0KPiA+ Pj4gfCAgNDQNCj4gPj4+PiArLQ0KPiA+Pj4+Pg0KPiA+Pj4gTWRlTW9kdWxlUGtnL1VuaXZlcnNh bC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlUnVudGkNCj4gPj4+IG1lQ2FjaGUuYw0KPiA+ Pj4+PiB8IDE1MyArKysrKw0KPiA+Pj4+Pg0KPiA+Pj4gTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9W YXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21tLmMNCj4gPj4+IHwNCj4gPj4+PiAxMTQNCj4g Pj4+Pj4gKysrLQ0KPiA+Pj4+Pg0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBNZGVNb2R1bGVQa2cv VW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVTbW1SdQ0KPiA+Pj4gbnRpbWVE eGUuDQo+ID4+Pj4+IGMgICB8IDYwOCArKysrKysrKysrKysrKysrKy0tLQ0KPiA+Pj4+PiAgMTEg ZmlsZXMgY2hhbmdlZCwgOTY2IGluc2VydGlvbnMoKyksIDEwNQ0KPiA+Pj4gZGVsZXRpb25zKC0p DQo+ID4+Pj4+DQo+ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4gYS9N ZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVSdW4NCj4g Pj4+IHRpbWVEeGUuaW5mDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+IGIvTWRlTW9kdWxlUGtnL1Vu aXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlUnVuDQo+ID4+PiB0aW1lRHhlLmlu Zg0KPiA+Pj4+PiBpbmRleCAwOGE1NDkwNzg3Li5jZWVhNWQxZmY5IDEwMDY0NA0KPiA+Pj4+PiAt LS0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1Zhcmlh YmxlL1J1bnRpbWVEeGUvVmFyaWFibGVSdW4NCj4gPj4+IHRpbWVEeGUuaW5mDQo+ID4+Pj4+ICsr Kw0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFi bGUvUnVudGltZUR4ZS9WYXJpYWJsZVJ1bg0KPiA+Pj4gdGltZUR4ZS5pbmYNCj4gPj4+Pj4gQEAg LTQwLDYgKzQwLDggQEANCj4gPj4+Pj4gICAgVmFyaWFibGVOb25Wb2xhdGlsZS5oDQo+ID4+Pj4+ ICAgIFZhcmlhYmxlUGFyc2luZy5jDQo+ID4+Pj4+ICAgIFZhcmlhYmxlUGFyc2luZy5oDQo+ID4+ Pj4+ICsgIFZhcmlhYmxlUnVudGltZUNhY2hlLmMNCj4gPj4+Pj4gKyAgVmFyaWFibGVSdW50aW1l Q2FjaGUuaA0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBQZXIgbXkgdW5kZXJzdGFuZGluZywgdGhl IG1vZHVsZSBzcGVjaWZpZWQgYnkNCj4gPj4+IFZhcmlhYmxlUnVudGltZUR4ZS5pbmYNCj4gPj4+ PiBkb2VzIG5vdA0KPiA+Pj4+IGludm9sdmUgU01NL1NNSSBmb3IgdmFyaWFibGUgc2VydmljZXMg KGxpa2UNCj4gPj4+IEdldFZhcmlhYmxlKS4gSXQgbG9va3Mgd2VpcmQgdG8NCj4gPj4+PiBtZQ0K PiA+Pj4+IGZvciB0aGlzIElORiB0byBpbmNsdWRlIHRoZSBuZXdseSBpbnRyb2R1Y2VkIHJ1bnRp bWUNCj4gPj4+IGNhY2hlIGNvZGVzIChiZWxvdw0KPiA+Pj4+IHNvdXJjZQ0KPiA+Pj4+IGhlYWRl ciBmaWxlcyk6DQo+ID4+Pj4NCj4gPj4+PiBWYXJpYWJsZVJ1bnRpbWVDYWNoZS5jDQo+ID4+Pj4g VmFyaWFibGVSdW50aW1lQ2FjaGUuaA0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+DQo+ID4+PiBUaGlz IGlzIGJlY2F1c2UgVmFyaWFibGUuYyBpcyBjb21tb24gdG8gdGhlIHJ1bnRpbWUgRFhFDQo+ID4+ PiBhbmQgU01NIHZhcmlhYmxlDQo+ID4+PiBkcml2ZXIgYW5kIGl0IGNvbnRhaW5zIHRoZSBjb2Rl IHRvIHVwZGF0ZSB2YXJpYWJsZQ0KPiA+Pj4gY2FjaGVzLiBUaGUgcnVudGltZSBjYWNoZQ0KPiA+ Pj4gc3luY2hyb25pemF0aW9uIGZ1bmN0aW9uDQo+ID4+PiAoU3luY2hyb25pemVSdW50aW1lVmFy aWFibGVDYWNoZSAoKSkgd2lsbCByZXR1cm4NCj4gPj4+IGlmIHRoZSBydW50aW1lIGNhY2hlIHBv aW50ZXIgaXMgTlVMTC4NCj4gPj4+DQo+ID4+Pj4+ICAgIFByaXZpbGVnZVBvbHltb3JwaGljLmgN Cj4gPj4+Pj4gICAgTWVhc3VyZW1lbnQuYw0KPiA+Pj4+PiAgICBUY2dNb3JMb2NrRHhlLmMNCj4g Pj4+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4+Pg0KPiA+Pj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2Fs L1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVTbW0NCj4gPj4+IC5pbmYNCj4gPj4+Pj4NCj4g Pj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxl U21tDQo+ID4+PiAuaW5mDQo+ID4+Pj4+IGluZGV4IDZkYzI3MjFiODEuLmJjMzAzMzU4OGQgMTAw NjQ0DQo+ID4+Pj4+IC0tLQ0KPiA+Pj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxl L1J1bnRpbWVEeGUvVmFyaWFibGVTbW0NCj4gPj4+IC5pbmYNCj4gPj4+Pj4gKysrDQo+ID4+PiBi L01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbQ0K PiA+Pj4gLmluZg0KPiA+Pj4+PiBAQCAtNDksNiArNDksOCBAQA0KPiA+Pj4+PiAgICBWYXJpYWJs ZU5vblZvbGF0aWxlLmgNCj4gPj4+Pj4gICAgVmFyaWFibGVQYXJzaW5nLmMNCj4gPj4+Pj4gICAg VmFyaWFibGVQYXJzaW5nLmgNCj4gPj4+Pj4gKyAgVmFyaWFibGVSdW50aW1lQ2FjaGUuYw0KPiA+ Pj4+PiArICBWYXJpYWJsZVJ1bnRpbWVDYWNoZS5oDQo+ID4+Pj4+ICAgIFZhckNoZWNrLmMNCj4g Pj4+Pj4gICAgVmFyaWFibGUuaA0KPiA+Pj4+PiAgICBQcml2aWxlZ2VQb2x5bW9ycGhpYy5oDQo+ ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4gYS9NZGVNb2R1bGVQa2cv VW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVTbW0NCj4gPj4+IFJ1bnRpbWVE eA0KPiA+Pj4+PiBlLmluZg0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbQ0KPiA+Pj4gUnVudGltZUR4 DQo+ID4+Pj4+IGUuaW5mDQo+ID4+Pj4+IGluZGV4IDE0ODk0ZTZmMTMuLjcwODM3YWM2ZTAgMTAw NjQ0DQo+ID4+Pj4+IC0tLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBhL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbQ0KPiA+Pj4gUnVudGltZUR4 DQo+ID4+Pj4+IGUuaW5mDQo+ID4+Pj4+ICsrKw0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBiL01k ZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbQ0KPiA+ Pj4gUnVudGltZUR4DQo+ID4+Pj4+IGUuaW5mDQo+ID4+Pj4+IEBAIC0xMyw3ICsxMyw3IEBADQo+ ID4+Pj4+ICAjICBtYXkgbm90IGJlIG1vZGlmaWVkIHdpdGhvdXQgYXV0aG9yaXphdGlvbi4gSWYN Cj4gPj4+IHBsYXRmb3JtIGZhaWxzIHRvIHByb3RlY3QNCj4gPj4+Pj4gdGhlc2UgcmVzb3VyY2Vz LA0KPiA+Pj4+PiAgIyAgdGhlIGF1dGhlbnRpY2F0aW9uIHNlcnZpY2UgcHJvdmlkZWQgaW4gdGhp cw0KPiA+Pj4gZHJpdmVyIHdpbGwgYmUgYnJva2VuLCBhbmQgdGhlDQo+ID4+Pj4+IGJlaGF2aW9y IGlzIHVuZGVmaW5lZC4NCj4gPj4+Pj4gICMNCj4gPj4+Pj4gLSMgQ29weXJpZ2h0IChjKSAyMDEw IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiA+Pj4gcmlnaHRzIHJlc2VydmVkLjxC Uj4NCj4gPj4+Pj4gKyMgQ29weXJpZ2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRp b24uIEFsbA0KPiA+Pj4gcmlnaHRzIHJlc2VydmVkLjxCUj4NCj4gPj4+Pj4gICMgU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4+Pj4gICMNCj4gPj4+Pj4g ICMjDQo+ID4+Pj4+IEBAIC0zOSw2ICszOSwxMCBAQA0KPiA+Pj4+PiAgICBWYXJpYWJsZVNtbVJ1 bnRpbWVEeGUuYw0KPiA+Pj4+PiAgICBQcml2aWxlZ2VQb2x5bW9ycGhpYy5oDQo+ID4+Pj4+ICAg IE1lYXN1cmVtZW50LmMNCj4gPj4+Pj4gKyAgVmFyaWFibGVQYXJzaW5nLmMNCj4gPj4+Pj4gKyAg VmFyaWFibGVQYXJzaW5nLmgNCj4gPj4+Pj4gKyAgVmFyaWFibGVSdW50aW1lQ2FjaGUuYw0KPiA+ Pj4+PiArICBWYXJpYWJsZVJ1bnRpbWVDYWNoZS5oDQo+ID4+Pj4+DQo+ID4+Pj4+ICBbUGFja2Fn ZXNdDQo+ID4+Pj4+ICAgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+Pj4+IEBAIC00OSw2ICs1Myw3 IEBADQo+ID4+Pj4+ICAgIEJhc2VMaWINCj4gPj4+Pj4gICAgVWVmaUJvb3RTZXJ2aWNlc1RhYmxl TGliDQo+ID4+Pj4+ICAgIERlYnVnTGliDQo+ID4+Pj4+ICsgIFRpbWVyTGliDQo+ID4+Pj4+ICAg IFVlZmlSdW50aW1lTGliDQo+ID4+Pj4+ICAgIER4ZVNlcnZpY2VzVGFibGVMaWINCj4gPj4+Pj4g ICAgVWVmaURyaXZlckVudHJ5UG9pbnQNCj4gPj4+Pj4gQEAgLTY1LDcgKzcwLDI5IEBADQo+ID4+ Pj4+ICAgIGdFZGtpaVZhcmlhYmxlTG9ja1Byb3RvY29sR3VpZCAgICAgICAgICAgICAgICAjIw0K PiA+Pj4gUFJPRFVDRVMNCj4gPj4+Pj4gICAgZ0Vka2lpVmFyQ2hlY2tQcm90b2NvbEd1aWQgICAg ICAgICAgICAgICAgICAgICMjDQo+ID4+PiBQUk9EVUNFUw0KPiA+Pj4+Pg0KPiA+Pj4+PiArW1Bj ZF0NCj4gPj4+Pj4gKyAgZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heFZhcmlh YmxlU2l6ZQ0KPiA+Pj4gIyMNCj4gPj4+Pj4gQ09OU1VNRVMNCj4gPj4+Pj4gKw0KPiA+Pj4gZ0Vm aU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZE1heEF1dGhWYXJpYWJsZVNpemUNCj4gPj4+ PiAjIw0KPiA+Pj4+PiBDT05TVU1FUw0KPiA+Pj4+PiArDQo+ID4+PiBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkTWF4SGFyZHdhcmVFcnJvclZhcmlhYg0KPiA+Pj4gbGVTaXplDQo+ ID4+Pj4+ICMjIENPTlNVTUVTDQo+ID4+Pj4+ICsNCj4gPj4+IGdFZmlNZGVNb2R1bGVQa2dUb2tl blNwYWNlR3VpZC5QY2RWYXJpYWJsZVN0b3JlU2l6ZQ0KPiA+Pj4gIyMNCj4gPj4+Pj4gQ09OU1VN RVMNCj4gPj4+Pj4gKw0KPiA+Pj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEh3 RXJyU3RvcmFnZVNpemUNCj4gPj4+ICMjDQo+ID4+Pj4+IENPTlNVTUVTDQo+ID4+Pj4+ICsNCj4g Pj4+IGdFZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RNYXhVc2VyTnZWYXJpYWJsZVNw YWNlDQo+ID4+PiBTaXplDQo+ID4+Pj4+ICMjIENPTlNVTUVTDQo+ID4+Pj4+ICsNCj4gPj4+Pj4N Cj4gPj4+Pg0KPiA+Pj4gZ0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZEJvb3R0aW1l UmVzZXJ2ZWROdlZhcmkNCj4gPj4+IGFibGVTcGFjZQ0KPiA+Pj4+PiBTaXplICAjIyBDT05TVU1F Uw0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBOb3Qgc3VyZSBpZiB0aGUgYWJvdmUgUENEcyBhcmUg cmVhbGx5IG5lZWRlZCBieQ0KPiA+Pj4gVmFyaWFibGVTbW1SdW50aW1lRHhlLg0KPiA+Pj4+DQo+ ID4+Pj4NCj4gPj4+DQo+ID4+PiBJIHdpbGwgZG91YmxlIGNoZWNrIGFuZCByZW1vdmUgYW55IG5v dCByZXF1aXJlZC4NCj4gPj4+DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK1tGZWF0dXJlUGNkXQ0KPiA+ Pj4+PiArDQo+ID4+PiBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkVmFyaWFibGVD b2xsZWN0U3RhdGlzdA0KPiA+Pj4gaWNzDQo+ID4+Pj4gIyMNCj4gPj4+Pj4gQ09OU1VNRVMNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiAgW0d1aWRzXQ0KPiA+Pj4+PiArICAjIyBQUk9EVUNFUyAgICAgICAg ICAgICAjIyBHVUlEICMgU2lnbmF0dXJlIG9mDQo+ID4+PiBWYXJpYWJsZSBzdG9yZSBoZWFkZXIN Cj4gPj4+Pj4gKyAgIyMgQ09OU1VNRVMgICAgICAgICAgICAgIyMgR1VJRCAjIFNpZ25hdHVyZSBv Zg0KPiA+Pj4gVmFyaWFibGUgc3RvcmUgaGVhZGVyDQo+ID4+Pj4+ICsgICMjIFNPTUVUSU1FU19Q Uk9EVUNFUyAgICMjIFN5c3RlbVRhYmxlDQo+ID4+Pj4+ICsgIGdFZmlBdXRoZW50aWNhdGVkVmFy aWFibGVHdWlkDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgIyMgUFJPRFVDRVMgICAgICAgICAgICAg IyMgR1VJRCAjIFNpZ25hdHVyZSBvZg0KPiA+Pj4gVmFyaWFibGUgc3RvcmUgaGVhZGVyDQo+ID4+ Pj4+ICsgICMjIENPTlNVTUVTICAgICAgICAgICAgICMjIEdVSUQgIyBTaWduYXR1cmUgb2YNCj4g Pj4+IFZhcmlhYmxlIHN0b3JlIGhlYWRlcg0KPiA+Pj4+PiArICAjIyBTT01FVElNRVNfUFJPRFVD RVMgICAjIyBTeXN0ZW1UYWJsZQ0KPiA+Pj4+PiArICBnRWZpVmFyaWFibGVHdWlkDQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gICAgZ0VmaUV2ZW50VmlydHVhbEFkZHJlc3NDaGFuZ2VHdWlkICAgICAgICAg ICAgICMjDQo+ID4+PiBDT05TVU1FUyAjIyBFdmVudA0KPiA+Pj4+PiAgICBnRWZpRXZlbnRFeGl0 Qm9vdFNlcnZpY2VzR3VpZCAgICAgICAgICAgICAgICAgIyMNCj4gPj4+IENPTlNVTUVTICMjIEV2 ZW50DQo+ID4+Pj4+ICAgICMjIENPTlNVTUVTICMjIEdVSUQgIyBMb2NhdGUgcHJvdG9jb2wNCj4g Pj4+Pj4gQEAgLTgyLDYgKzEwOSw4IEBADQo+ID4+Pj4+ICAgICMjIFNPTUVUSU1FU19DT05TVU1F UyAgICMjIFZhcmlhYmxlOkwiZGJ0Ig0KPiA+Pj4+PiAgICBnRWZpSW1hZ2VTZWN1cml0eURhdGFi YXNlR3VpZA0KPiA+Pj4+Pg0KPiA+Pj4+PiArICBnRWRraWlQaVNtbUNvbW11bmljYXRpb25SZWdp b25UYWJsZUd1aWQgICAgICAgIyMNCj4gPj4+Pj4gU09NRVRJTUVTX0NPTlNVTUVTICMjIFN5c3Rl bVRhYmxlDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gIFtEZXBleF0NCj4gPj4+Pj4gICAgZ0VmaVNtbUNv bW11bmljYXRpb25Qcm90b2NvbEd1aWQNCj4gPj4+Pj4NCj4gPj4+Pj4gZGlmZiAtLWdpdA0KPiA+ Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVu dGltZUR4ZS9WYXJpYWJsZVN0YQ0KPiA+Pj4gbmRhbG9uZU1tLmkNCj4gPj4+Pj4gbmYNCj4gPj4+ Pj4NCj4gPj4+Pg0KPiA+Pj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRp bWVEeGUvVmFyaWFibGVTdGENCj4gPj4+IG5kYWxvbmVNbS4NCj4gPj4+Pj4gaW5mDQo+ID4+Pj4+ IGluZGV4IGNhOWQyM2NlOWYuLjk1YzUzMTBjMGIgMTAwNjQ0DQo+ID4+Pj4+IC0tLQ0KPiA+Pj4+ Pg0KPiA+Pj4+DQo+ID4+PiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGlt ZUR4ZS9WYXJpYWJsZVN0YQ0KPiA+Pj4gbmRhbG9uZU1tLmkNCj4gPj4+Pj4gbmYNCj4gPj4+Pj4g KysrDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJp YWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU3RhDQo+ID4+PiBuZGFsb25lTW0uDQo+ID4+Pj4+IGlu Zg0KPiA+Pj4+PiBAQCAtNDksNiArNDksOCBAQA0KPiA+Pj4+PiAgICBWYXJpYWJsZU5vblZvbGF0 aWxlLmgNCj4gPj4+Pj4gICAgVmFyaWFibGVQYXJzaW5nLmMNCj4gPj4+Pj4gICAgVmFyaWFibGVQ YXJzaW5nLmgNCj4gPj4+Pj4gKyAgVmFyaWFibGVSdW50aW1lQ2FjaGUuYw0KPiA+Pj4+PiArICBW YXJpYWJsZVJ1bnRpbWVDYWNoZS5oDQo+ID4+Pj4+ICAgIFZhckNoZWNrLmMNCj4gPj4+Pj4gICAg VmFyaWFibGUuaA0KPiA+Pj4+PiAgICBQcml2aWxlZ2VQb2x5bW9ycGhpYy5oDQo+ID4+Pj4+IGRp ZmYgLS1naXQNCj4gPj4+IGEvTWRlTW9kdWxlUGtnL0luY2x1ZGUvR3VpZC9TbW1WYXJpYWJsZUNv bW1vbi5oDQo+ID4+Pj4+IGIvTWRlTW9kdWxlUGtnL0luY2x1ZGUvR3VpZC9TbW1WYXJpYWJsZUNv bW1vbi5oDQo+ID4+Pj4+IGluZGV4IGM1MjdhNTk4OTEuLmNlZWY0NGRmZDIgMTAwNjQ0DQo+ID4+ Pj4+IC0tLSBhL01kZU1vZHVsZVBrZy9JbmNsdWRlL0d1aWQvU21tVmFyaWFibGVDb21tb24uaA0K PiA+Pj4+PiArKysgYi9NZGVNb2R1bGVQa2cvSW5jbHVkZS9HdWlkL1NtbVZhcmlhYmxlQ29tbW9u LmgNCj4gPj4+Pj4gQEAgLTEsNyArMSw3IEBADQo+ID4+Pj4+ICAvKiogQGZpbGUNCj4gPj4+Pj4g ICAgVGhlIGZpbGUgZGVmaW5lZCBzb21lIGNvbW1vbiBzdHJ1Y3R1cmVzIHVzZWQgZm9yDQo+ID4+ PiBjb21tdW5pY2F0aW5nDQo+ID4+Pj4+IGJldHdlZW4gU01NIHZhcmlhYmxlIG1vZHVsZSBhbmQg U01NIHZhcmlhYmxlIHdyYXBwZXINCj4gPj4+IG1vZHVsZS4NCj4gPj4+Pj4NCj4gPj4+Pj4gLUNv cHlyaWdodCAoYykgMjAxMSAtIDIwMTUsIEludGVsIENvcnBvcmF0aW9uLiBBbGwNCj4gPj4+IHJp Z2h0cyByZXNlcnZlZC48QlI+DQo+ID4+Pj4+ICtDb3B5cmlnaHQgKGMpIDIwMTEgLSAyMDE5LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsDQo+ID4+PiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4+ PiAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCj4gPj4+Pj4N Cj4gPj4+Pj4gICoqLw0KPiA+Pj4+PiBAQCAtOSw2ICs5LDcgQEAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLQ0KPiA+Pj4gQ2xhdXNlLVBhdGVudA0KPiA+Pj4+PiAgI2lmbmRlZiBfU01N X1ZBUklBQkxFX0NPTU1PTl9IXw0KPiA+Pj4+PiAgI2RlZmluZSBfU01NX1ZBUklBQkxFX0NPTU1P Tl9IXw0KPiA+Pj4+Pg0KPiA+Pj4+PiArI2luY2x1ZGUgPEd1aWQvVmFyaWFibGVGb3JtYXQuaD4N Cj4gPj4+Pj4gICNpbmNsdWRlIDxQcm90b2NvbC9WYXJDaGVjay5oPg0KPiA+Pj4+Pg0KPiA+Pj4+ PiAgI2RlZmluZSBFRklfU01NX1ZBUklBQkxFX1dSSVRFX0dVSUQgXA0KPiA+Pj4+PiBAQCAtNjYs NiArNjcsMTYgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiAgI2RlZmluZQ0KPiA+Pj4+Pg0K PiA+Pj4gU01NX1ZBUklBQkxFX0ZVTkNUSU9OX1ZBUl9DSEVDS19WQVJJQUJMRV9QUk9QRVJUWV9H RVQNCj4gPj4+IDEwDQo+ID4+Pj4+DQo+ID4+Pj4+ICAjZGVmaW5lIFNNTV9WQVJJQUJMRV9GVU5D VElPTl9HRVRfUEFZTE9BRF9TSVpFDQo+ID4+PiAxMQ0KPiA+Pj4+PiArLy8NCj4gPj4+Pj4gKy8v IFRoZSBwYXlsb2FkIGZvciB0aGlzIGZ1bmN0aW9uIGlzDQo+ID4+Pj4+DQo+ID4+Pg0KPiBTTU1f VkFSSUFCTEVfQ09NTVVOSUNBVEVfUlVOVElNRV9WQVJJQUJMRV9DQUNIRV9DT05URVhUDQo+ID4+ Pj4+ICsvLw0KPiA+Pj4+PiArI2RlZmluZQ0KPiA+Pj4+Pg0KPiA+Pj4NCj4gU01NX1ZBUklBQkxF X0ZVTkNUSU9OX0lOSVRfUlVOVElNRV9WQVJJQUJMRV9DQUNIRV9DT05URVgNCj4gPj4+IFQNCj4g Pj4+Pj4gMTINCj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2RlZmluZSBTTU1fVkFSSUFCTEVfRlVOQ1RJ T05fU1lOQ19SVU5USU1FX0NBQ0hFDQo+ID4+Pj4gMTMNCj4gPj4+Pj4gKy8vDQo+ID4+Pj4+ICsv LyBUaGUgcGF5bG9hZCBmb3IgdGhpcyBmdW5jdGlvbiBpcw0KPiA+Pj4+PiBTTU1fVkFSSUFCTEVf Q09NTVVOSUNBVEVfR0VUX1JVTlRJTUVfQ0FDSEVfSU5GTw0KPiA+Pj4+PiArLy8NCj4gPj4+Pj4g KyNkZWZpbmUNCj4gPj4+IFNNTV9WQVJJQUJMRV9GVU5DVElPTl9HRVRfUlVOVElNRV9DQUNIRV9J TkZPDQo+ID4+Pj4+IDE0DQo+ID4+Pj4+DQo+ID4+Pj4+ICAvLy8NCj4gPj4+Pj4gIC8vLyBTaXpl IG9mIFNNTSBjb21tdW5pY2F0ZSBoZWFkZXIsIHdpdGhvdXQNCj4gPj4+IGluY2x1ZGluZyB0aGUg cGF5bG9hZC4NCj4gPj4+Pj4gQEAgLTEyMCw0ICsxMzEsMjAgQEAgdHlwZWRlZiBzdHJ1Y3Qgew0K PiA+Pj4+PiAgICBVSU5UTg0KPiA+Pj4gVmFyaWFibGVQYXlsb2FkU2l6ZTsNCj4gPj4+Pj4gIH0g U01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0dFVF9QQVlMT0FEX1NJWkU7DQo+ID4+Pj4+DQo+ID4+ Pj4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAg ICpSZWFkTG9jazsNCj4gPj4+Pj4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgKlBlbmRpbmdV cGRhdGU7DQo+ID4+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICpIb2JGbHVzaENvbXBs ZXRlOw0KPiA+Pj4+PiArICBWQVJJQUJMRV9TVE9SRV9IRUFERVIgICAqUnVudGltZUhvYkNhY2hl Ow0KPiA+Pj4+PiArICBWQVJJQUJMRV9TVE9SRV9IRUFERVIgICAqUnVudGltZU52Q2FjaGU7DQo+ ID4+Pj4+ICsgIFZBUklBQkxFX1NUT1JFX0hFQURFUiAgICpSdW50aW1lVm9sYXRpbGVDYWNoZTsN Cj4gPj4+Pj4gK30NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4NCj4gPj4NCj4gU01NX1ZBUklBQkxF X0NPTU1VTklDQVRFX1JVTlRJTUVfVkFSSUFCTEVfQ0FDSEVfQ09OVEVYVDsNCj4gPj4+Pj4gKw0K PiA+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICBUb3RhbEhvYlN0b3JhZ2VTaXplOw0KPiA+Pj4+PiArICBVSU5UTiAgICAgICAgICAgICAg ICAgICBUb3RhbE52U3RvcmFnZVNpemU7DQo+ID4+Pj4+ICsgIFVJTlROICAgICAgICAgICAgICAg ICAgIFRvdGFsVm9sYXRpbGVTdG9yYWdlU2l6ZTsNCj4gPj4+Pj4gKyAgQk9PTEVBTg0KPiA+Pj4g QXV0aGVudGljYXRlZFZhcmlhYmxlVXNhZ2U7DQo+ID4+Pj4+ICt9IFNNTV9WQVJJQUJMRV9DT01N VU5JQ0FURV9HRVRfUlVOVElNRV9DQUNIRV9JTkZPOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICAjZW5k aWYgLy8gX1NNTV9WQVJJQUJMRV9DT01NT05fSF8NCj4gPj4+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4g YS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGUuaA0K PiA+Pj4+Pg0KPiA+Pj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVE eGUvVmFyaWFibGUuaA0KPiA+Pj4+PiBpbmRleCBmYjU3NGIyZTMyLi5iOTcyM2MwMjUwIDEwMDY0 NA0KPiA+Pj4+PiAtLS0NCj4gPj4+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9S dW50aW1lRHhlL1ZhcmlhYmxlLmgNCj4gPj4+Pj4gKysrDQo+ID4+PiBiL01kZU1vZHVsZVBrZy9V bml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZS5oDQo+ID4+Pj4+IEBAIC01Nyw2 ICs1NywxMiBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItDQo+ID4+PiBDbGF1c2Ut UGF0ZW50DQo+ID4+Pj4+ICAvLy8NCj4gPj4+Pj4gICNkZWZpbmUgSVNPXzYzOV8yX0VOVFJZX1NJ WkUgICAgMw0KPiA+Pj4+Pg0KPiA+Pj4+PiArLy8vDQo+ID4+Pj4+ICsvLy8gVGhlIHRpbWVvdXQg dG8gaW4gMTB1cyB1bml0cyB0byB3YWl0IGZvciB0aGUNCj4gPj4+Pj4gKy8vLyB2YXJpYWJsZSBy dW50aW1lIGNhY2hlIHJlYWQgbG9jayB0byBiZQ0KPiA+Pj4gYWNxdWlyZWQuDQo+ID4+Pj4+ICsv Ly8NCj4gPj4+Pj4gKyNkZWZpbmUgVkFSSUFCTEVfUlRfQ0FDSEVfUkVBRF9MT0NLX1RJTUVPVVQg IDIwMDAwMA0KPiA+Pj4+PiArDQo+ID4+Pj4+ICB0eXBlZGVmIGVudW0gew0KPiA+Pj4+PiAgICBW YXJpYWJsZVN0b3JlVHlwZVZvbGF0aWxlLA0KPiA+Pj4+PiAgICBWYXJpYWJsZVN0b3JlVHlwZUhv YiwNCj4gPj4+Pj4gQEAgLTY0LDYgKzcwLDIxIEBAIHR5cGVkZWYgZW51bSB7DQo+ID4+Pj4+ICAg IFZhcmlhYmxlU3RvcmVUeXBlTWF4DQo+ID4+Pj4+ICB9IFZBUklBQkxFX1NUT1JFX1RZUEU7DQo+ ID4+Pj4+DQo+ID4+Pj4+ICt0eXBlZGVmIHN0cnVjdCB7DQo+ID4+Pj4+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgIFBlbmRpbmdVcGRhdGVPZmZzZXQ7DQo+ID4+Pj4+ICsgIFVJTlQzMiAgICAg ICAgICAgICAgICAgIFBlbmRpbmdVcGRhdGVMZW5ndGg7DQo+ID4+Pj4+ICsgIFZBUklBQkxFX1NU T1JFX0hFQURFUiAgICpTdG9yZTsNCj4gPj4+Pj4gK30gVkFSSUFCTEVfUlVOVElNRV9DQUNIRTsN Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArdHlwZWRlZiBzdHJ1Y3Qgew0KPiA+Pj4+PiArICBCT09MRUFO ICAgICAgICAgICAgICAgICAqUmVhZExvY2s7DQo+ID4+Pj4+ICsgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICpQZW5kaW5nVXBkYXRlOw0KPiA+Pj4+PiArICBCT09MRUFOICAgICAgICAgICAgICAg ICAqSG9iRmx1c2hDb21wbGV0ZTsNCj4gPj4+Pj4gKyAgVkFSSUFCTEVfUlVOVElNRV9DQUNIRSAg VmFyaWFibGVSdW50aW1lSG9iQ2FjaGU7DQo+ID4+Pj4+ICsgIFZBUklBQkxFX1JVTlRJTUVfQ0FD SEUgIFZhcmlhYmxlUnVudGltZU52Q2FjaGU7DQo+ID4+Pj4+ICsgIFZBUklBQkxFX1JVTlRJTUVf Q0FDSEUNCj4gPj4+IFZhcmlhYmxlUnVudGltZVZvbGF0aWxlQ2FjaGU7DQo+ID4+Pj4+ICt9IFZB UklBQkxFX1JVTlRJTUVfQ0FDSEVfQ09OVEVYVDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiAgdHlwZWRl ZiBzdHJ1Y3Qgew0KPiA+Pj4+PiAgICBWQVJJQUJMRV9IRUFERVIgKkN1cnJQdHI7DQo+ID4+Pj4+ ICAgIC8vDQo+ID4+Pj4+IEBAIC03OSwxNCArMTAwLDE2IEBAIHR5cGVkZWYgc3RydWN0IHsNCj4g Pj4+Pj4gIH0gVkFSSUFCTEVfUE9JTlRFUl9UUkFDSzsNCj4gPj4+Pj4NCj4gPj4+Pj4gIHR5cGVk ZWYgc3RydWN0IHsNCj4gPj4+Pj4gLSAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgIEhvYlZhcmlhYmxl QmFzZTsNCj4gPj4+Pj4gLSAgRUZJX1BIWVNJQ0FMX0FERFJFU1MgIFZvbGF0aWxlVmFyaWFibGVC YXNlOw0KPiA+Pj4+PiAtICBFRklfUEhZU0lDQUxfQUREUkVTUyAgTm9uVm9sYXRpbGVWYXJpYWJs ZUJhc2U7DQo+ID4+Pj4+IC0gIEVGSV9MT0NLICAgICAgICAgICAgICBWYXJpYWJsZVNlcnZpY2Vz TG9jazsNCj4gPj4+Pj4gLSAgVUlOVDMyICAgICAgICAgICAgICAgIFJlZW50cmFudFN0YXRlOw0K PiA+Pj4+PiAtICBCT09MRUFOICAgICAgICAgICAgICAgQXV0aEZvcm1hdDsNCj4gPj4+Pj4gLSAg Qk9PTEVBTiAgICAgICAgICAgICAgIEF1dGhTdXBwb3J0Ow0KPiA+Pj4+PiAtICBCT09MRUFOICAg ICAgICAgICAgICAgRW11TnZNb2RlOw0KPiA+Pj4+PiArICBFRklfUEhZU0lDQUxfQUREUkVTUyAg ICAgICAgICAgIEhvYlZhcmlhYmxlQmFzZTsNCj4gPj4+Pj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJF U1MNCj4gPj4+IEhvYlZhcmlhYmxlQmFja3VwQmFzZTsNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4g SSBkbyBub3Qgc2VlIGFueSB1c2FnZSBvZiB0aGUgbmV3IGZpZWxkDQo+ID4+PiAiSG9iVmFyaWFi bGVCYWNrdXBCYXNlIi4NCj4gPj4+PiBDb3VsZCB5b3UgaGVscCB0byBkb3VibGUgY29uZmlybT8N Cj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pj4gWW91IGFyZSBjb3JyZWN0LiBJIHJlbW92ZWQg dXNhZ2Ugb2YgdGhpcyB2YXJpYWJsZSBiZWZvcmUNCj4gPj4+IHNlbmRpbmcgdGhlDQo+ID4+PiBw YXRjaCBzZXJpZXMgYW5kIHRoZSBnbG9iYWwgdmFyaWFibGUgaGVyZSBuZWVkcyB0byBiZQ0KPiA+ Pj4gY2xlYW5lZCB1cC4NCj4gPj4+DQo+ID4+Pj4+ICsgIEVGSV9QSFlTSUNBTF9BRERSRVNTDQo+ ID4+PiBWb2xhdGlsZVZhcmlhYmxlQmFzZTsNCj4gPj4+Pj4gKyAgRUZJX1BIWVNJQ0FMX0FERFJF U1MNCj4gPj4+IE5vblZvbGF0aWxlVmFyaWFibGVCYXNlOw0KPiA+Pj4+PiArICBWQVJJQUJMRV9S VU5USU1FX0NBQ0hFX0NPTlRFWFQNCj4gPj4+IFZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dDsN Cj4gPj4+Pj4gKyAgRUZJX0xPQ0sNCj4gPj4+IFZhcmlhYmxlU2VydmljZXNMb2NrOw0KPiA+Pj4+ PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZW50cmFudFN0YXRlOw0KPiA+ Pj4+PiArICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhGb3JtYXQ7DQo+ID4+ Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgQXV0aFN1cHBvcnQ7DQo+ID4+ Pj4+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgRW11TnZNb2RlOw0KPiA+Pj4+ PiAgfSBWQVJJQUJMRV9HTE9CQUw7DQo+ID4+Pj4+DQo+ID4+Pj4+ICB0eXBlZGVmIHN0cnVjdCB7 DQo+ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4gYS9NZGVNb2R1bGVQ a2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVSdW4NCj4gPj4+IHRpbWVD YWNoZS5oDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9W YXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlUnVuDQo+ID4+PiB0aW1lQ2FjaGUuDQo+ID4+Pj4+ IGgNCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+Pj4gaW5kZXggMDAwMDAwMDAw MC4uMDliODNlYjIxNQ0KPiA+Pj4+PiAtLS0gL2Rldi9udWxsDQo+ID4+Pj4+ICsrKw0KPiA+Pj4+ Pg0KPiA+Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGlt ZUR4ZS9WYXJpYWJsZVJ1bg0KPiA+Pj4gdGltZUNhY2hlLg0KPiA+Pj4+PiBoDQo+ID4+Pj4+IEBA IC0wLDAgKzEsNDcgQEANCj4gPj4+Pj4gKy8qKiBAZmlsZQ0KPiA+Pj4+PiArICBUaGUgY29tbW9u IHZhcmlhYmxlIHZvbGF0aWxlIHN0b3JlIHJvdXRpbmVzDQo+ID4+PiBzaGFyZWQgYnkgdGhlDQo+ ID4+Pj4gRFhFX1JVTlRJTUUNCj4gPj4+Pj4gdmFyaWFibGUNCj4gPj4+Pj4gKyAgbW9kdWxlIGFu ZCB0aGUgRFhFX1NNTSB2YXJpYWJsZSBtb2R1bGUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK0NvcHly aWdodCAoYykgMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMNCj4gPj4+IHJlc2Vy dmVkLjxCUj4NCj4gPj4+Pj4gK1NQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2Ut UGF0ZW50DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsjaWZu ZGVmIF9WQVJJQUJMRV9SVU5USU1FX0NBQ0hFX0hfDQo+ID4+Pj4+ICsjZGVmaW5lIF9WQVJJQUJM RV9SVU5USU1FX0NBQ0hFX0hfDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyNpbmNsdWRlICJWYXJpYWJs ZS5oIg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgQ29waWVzIGFueSBwZW5k aW5nIHVwZGF0ZXMgdG8gcnVudGltZSB2YXJpYWJsZQ0KPiA+Pj4gY2FjaGVzLg0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1VOU1VQUE9SVEVEICAgICAgICAgVGhlIHZvbGF0aWxl DQo+ID4+PiBzdG9yZSB0byBiZSB1cGRhdGVkIGlzIG5vdA0KPiA+Pj4+PiBpbml0aWFsaXplZCBw cm9wZXJseS4NCj4gPj4+Pj4gKyAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICAgICAgICBUaGUg dm9sYXRpbGUNCj4gPj4+IHN0b3JlIHdhcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseS4NCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICtTeW5jaHJvbml6 ZVJ1bnRpbWVWYXJpYWJsZUNhY2hlRXggKA0KPiA+Pj4+PiArICBWT0lEDQo+ID4+Pj4+ICsgICk7 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBTeW5jaHJvbml6ZXMgdGhlIHJ1 bnRpbWUgdmFyaWFibGUgY2FjaGVzIHdpdGggYWxsDQo+ID4+PiBwZW5kaW5nIHVwZGF0ZXMNCj4g Pj4+PiBvdXRzaWRlDQo+ID4+Pj4+IHJ1bnRpbWUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgRW5z dXJlcyBhbGwgY29uZGl0aW9ucyBhcmUgbWV0IHRvIG1haW50YWluDQo+ID4+PiBjb2hlcmVuY3kg Zm9yIHJ1bnRpbWUgY2FjaGUNCj4gPj4+Pj4gdXBkYXRlcy4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAr ICBAcGFyYW1baW5dIFZhcmlhYmxlUnVudGltZUNhY2hlIFZhcmlhYmxlIHJ1bnRpbWUNCj4gPj4+ IGNhY2hlIHN0cnVjdHVyZSBmb3INCj4gPj4+Pj4gdGhlIHJ1bnRpbWUgY2FjaGUgYmVpbmcgc3lu Y2hyb25pemVkLg0KPiA+Pj4+PiArICBAcGFyYW1baW5dIE9mZnNldCAgICAgICAgICAgICAgIE9m ZnNldCBpbiBieXRlcw0KPiA+Pj4gdG8gYXBwbHkgdGhlIHVwZGF0ZS4NCj4gPj4+Pj4gKyAgQHBh cmFtW2luXSBMZW5ndGggICAgICAgICAgICAgICBMZW5ndGggb2YgZGF0YSBpbg0KPiA+Pj4gYnl0 ZXMgb2YgdGhlIHVwZGF0ZS4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9VTlNV UFBPUlRFRCAgICAgICAgIFRoZSB2b2xhdGlsZQ0KPiA+Pj4gc3RvcmUgdG8gYmUgdXBkYXRlZCBp cyBub3QNCj4gPj4+Pj4gaW5pdGlhbGl6ZWQgcHJvcGVybHkuDQo+ID4+Pj4+ICsgIEByZXR2YWwg RUZJX1NVQ0NFU1MgICAgICAgICAgICAgVGhlIHZvbGF0aWxlDQo+ID4+PiBzdG9yZSB3YXMgdXBk YXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArRUZJ X1NUQVRVUw0KPiA+Pj4+PiArU3luY2hyb25pemVSdW50aW1lVmFyaWFibGVDYWNoZSAoDQo+ID4+ Pj4+ICsgIElOICBWQVJJQUJMRV9SVU5USU1FX0NBQ0hFDQo+ID4+PiAqVmFyaWFibGVSdW50aW1l Q2FjaGUsDQo+ID4+Pj4+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgIE9m ZnNldCwNCj4gPj4+Pj4gKyAgSU4gIFVJTlROICAgICAgICAgICAgICAgICAgICAgICAgICAgTGVu Z3RoDQo+ID4+Pj4+ICsgICk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyNlbmRpZg0KPiA+Pj4+PiBk aWZmIC0tZ2l0DQo+ID4+PiBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGlt ZUR4ZS9WYXJpYWJsZS5jDQo+ID4+Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwv VmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZS5jDQo+ID4+Pj4+IGluZGV4IDVkYTIzNTRhYTUu LmJiMmZhM2ZjMTkgMTAwNjQ0DQo+ID4+Pj4+IC0tLQ0KPiA+Pj4gYS9NZGVNb2R1bGVQa2cvVW5p dmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGUuYw0KPiA+Pj4+PiArKysNCj4gPj4+ IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlLmMN Cj4gPj4+Pj4gQEAgLTI1LDYgKzI1LDcgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LQ0KPiA+Pj4gQ2xhdXNlLVBhdGVudA0KPiA+Pj4+PiAgI2luY2x1ZGUgIlZhcmlhYmxlLmgiDQo+ ID4+Pj4+ICAjaW5jbHVkZSAiVmFyaWFibGVOb25Wb2xhdGlsZS5oIg0KPiA+Pj4+PiAgI2luY2x1 ZGUgIlZhcmlhYmxlUGFyc2luZy5oIg0KPiA+Pj4+PiArI2luY2x1ZGUgIlZhcmlhYmxlUnVudGlt ZUNhY2hlLmgiDQo+ID4+Pj4+DQo+ID4+Pj4+ICBWQVJJQUJMRV9NT0RVTEVfR0xPQkFMICAqbVZh cmlhYmxlTW9kdWxlR2xvYmFsOw0KPiA+Pj4+Pg0KPiA+Pj4+PiBAQCAtMzMyLDYgKzMzMywxMiBA QCBSZWNvcmRWYXJFcnJvckZsYWcgKA0KPiA+Pj4+PiAgICAgICAgLy8gVXBkYXRlIHRoZSBkYXRh IGluIE5WIGNhY2hlLg0KPiA+Pj4+PiAgICAgICAgLy8NCj4gPj4+Pj4gICAgICAgICpWYXJFcnJG bGFnID0gVGVtcEZsYWc7DQo+ID4+Pj4+ICsgICAgICBTdGF0dXMgPSAgU3luY2hyb25pemVSdW50 aW1lVmFyaWFibGVDYWNoZSAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAmbVZhcmlhYmxl TW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxlUnVu dGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQNCj4gPj4+IGltZU52Q2FjaGUsDQo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgICAoVUlOVE4pIFZhckVyckZsYWcgLSAoVUlOVE4pDQo+ID4+PiBt TnZWYXJpYWJsZUNhY2hlICsgKFVJTlROKQ0KPiA+Pj4+PiBtVmFyaWFibGVNb2R1bGVHbG9iYWwt DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuTm9uVm9sYXRpbGVWYXJpYWJsZUJhc2UsDQo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgICBzaXplb2YgKFRlbXBGbGFnKQ0KPiA+Pj4+PiArICAgICAgICAg ICAgICAgICAgKTsNCj4gPj4+Pj4gKyAgICAgIEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ ID4+Pj4+ICAgICAgfQ0KPiA+Pj4+PiAgICB9DQo+ID4+Pj4+ICB9DQo+ID4+Pj4+IEBAIC03NTUs MTIgKzc2MiwyNCBAQCBSZWNsYWltICgNCj4gPj4+Pj4NCj4gPj4+Pj4gIERvbmU6DQo+ID4+Pj4+ ICAgIGlmIChJc1ZvbGF0aWxlIHx8IG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+PiBWYXJp YWJsZUdsb2JhbC5FbXVOdk1vZGUpIHsNCj4gPj4+Pj4gKyAgICBTdGF0dXMgPSAgU3luY2hyb25p emVSdW50aW1lVmFyaWFibGVDYWNoZSAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgJm1WYXJp YWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFs LlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQNCj4gPj4+IGltZVZvbGF0 aWxlQ2FjaA0KPiA+Pj4+PiBlLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgIDAsDQo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgVmFyaWFibGVTdG9yZUhlYWRlci0+U2l6ZQ0KPiA+Pj4+PiArICAg ICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsN Cj4gPj4+Pj4gICAgICBGcmVlUG9vbCAoVmFsaWRCdWZmZXIpOw0KPiA+Pj4+PiAgICB9IGVsc2Ug ew0KPiA+Pj4+PiAgICAgIC8vDQo+ID4+Pj4+ICAgICAgLy8gRm9yIE5WIHZhcmlhYmxlIHJlY2xh aW0sIHdlIHVzZQ0KPiA+Pj4gbU52VmFyaWFibGVDYWNoZSBhcyB0aGUgYnVmZmVyLCBzbw0KPiA+ Pj4+PiBjb3B5IHRoZSBkYXRhIGJhY2suDQo+ID4+Pj4+ICAgICAgLy8NCj4gPj4+Pj4gLSAgICBD b3B5TWVtIChtTnZWYXJpYWJsZUNhY2hlLCAoVUlOVDgNCj4gPj4+ICopKFVJTlROKVZhcmlhYmxl QmFzZSwNCj4gPj4+Pj4gVmFyaWFibGVTdG9yZUhlYWRlci0+U2l6ZSk7DQo+ID4+Pj4+ICsgICAg Q29weU1lbSAobU52VmFyaWFibGVDYWNoZSwgKFVJTlQ4ICopIChVSU5UTikNCj4gPj4+IFZhcmlh YmxlQmFzZSwNCj4gPj4+Pj4gVmFyaWFibGVTdG9yZUhlYWRlci0+U2l6ZSk7DQo+ID4+Pj4+ICsg ICAgU3RhdHVzID0gIFN5bmNocm9uaXplUnVudGltZVZhcmlhYmxlQ2FjaGUgKA0KPiA+Pj4+PiAr ICAgICAgICAgICAgICAgICYobVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+ IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQN Cj4gPj4+IGltZU52Q2FjaGUpLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgIDAsDQo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgVmFyaWFibGVTdG9yZUhlYWRlci0+U2l6ZQ0KPiA+Pj4+PiArICAg ICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICsgICAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsN Cj4gPj4+Pj4gICAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICByZXR1cm4gU3RhdHVzOw0KPiA+Pj4+ PiBAQCAtMTU5Miw2ICsxNjExLDcgQEAgVXBkYXRlVmFyaWFibGUgKA0KPiA+Pj4+PiAgICBWQVJJ QUJMRV9QT0lOVEVSX1RSQUNLICAgICAgICAgICAgICAqVmFyaWFibGU7DQo+ID4+Pj4+ICAgIFZB UklBQkxFX1BPSU5URVJfVFJBQ0sgICAgICAgICAgICAgIE52VmFyaWFibGU7DQo+ID4+Pj4+ICAg IFZBUklBQkxFX1NUT1JFX0hFQURFUg0KPiA+Pj4gKlZhcmlhYmxlU3RvcmVIZWFkZXI7DQo+ID4+ Pj4+ICsgIFZBUklBQkxFX1JVTlRJTUVfQ0FDSEUNCj4gPj4+ICpWb2xhdGlsZUNhY2hlSW5zdGFu Y2U7DQo+ID4+Pj4+ICAgIFVJTlQ4DQo+ID4+PiAqQnVmZmVyRm9yTWVyZ2U7DQo+ID4+Pj4+ICAg IFVJTlRODQo+ID4+PiBNZXJnZWRCdWZTaXplOw0KPiA+Pj4+PiAgICBCT09MRUFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBEYXRhUmVhZHk7DQo+ID4+Pj4+IEBAIC0yMjM1LDYgKzIyNTUs MjEgQEAgVXBkYXRlVmFyaWFibGUgKA0KPiA+Pj4+PiAgICB9DQo+ID4+Pj4+DQo+ID4+Pj4+ICBE b25lOg0KPiA+Pj4+PiArICBpZiAoIUVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+PiArICAg IGlmIChWYXJpYWJsZS0+Vm9sYXRpbGUpIHsNCj4gPj4+Pj4gKyAgICAgIFZvbGF0aWxlQ2FjaGVJ bnN0YW5jZSA9DQo+ID4+PiAmKG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+ Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5WYXJp YWJsZVJ1bnQNCj4gPj4+IGltZVZvbGF0aWxlQ2FjaA0KPiA+Pj4+PiBlKTsNCj4gPj4+Pj4gKyAg ICB9IGVsc2Ugew0KPiA+Pj4+PiArICAgICAgVm9sYXRpbGVDYWNoZUluc3RhbmNlID0NCj4gPj4+ ICYobVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFs LlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQNCj4gPj4+IGltZU52Q2Fj aGUpOw0KPiA+Pj4+PiArICAgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgIFN0YXR1cyA9ICBT eW5jaHJvbml6ZVJ1bnRpbWVWYXJpYWJsZUNhY2hlICgNCj4gPj4+Pj4gKyAgICAgICAgICAgICAg ICBWb2xhdGlsZUNhY2hlSW5zdGFuY2UsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgMCwNCj4g Pj4+Pj4gKyAgICAgICAgICAgICAgICBWb2xhdGlsZUNhY2hlSW5zdGFuY2UtPlN0b3JlLT5TaXpl DQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgKTsNCj4gPj4+Pj4gKyAgICBBU1NFUlRfRUZJX0VS Uk9SIChTdGF0dXMpOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gICAgcmV0dXJu IFN0YXR1czsNCj4gPj4+Pj4gIH0NCj4gPj4+Pj4NCj4gPj4+Pj4gQEAgLTM0MDksNiArMzQ0NCwx MiBAQCBGbHVzaEhvYlZhcmlhYmxlVG9GbGFzaCAoDQo+ID4+Pj4+ICAgICAgICAgIEVycm9yRmxh ZyA9IFRSVUU7DQo+ID4+Pj4+ICAgICAgICB9DQo+ID4+Pj4+ICAgICAgfQ0KPiA+Pj4+PiArICAg IFN0YXR1cyA9ICBTeW5jaHJvbml6ZVJ1bnRpbWVWYXJpYWJsZUNhY2hlICgNCj4gPj4+Pj4gKyAg ICAgICAgICAgICAgICAmbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ ID4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlZhcmlhYmxl UnVudA0KPiA+Pj4gaW1lSG9iQ2FjaGUsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgMCwNCj4g Pj4+Pj4gKyAgICAgICAgICAgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ ID4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQu VmFyaWFibGVSdW50DQo+ID4+PiBpbWVIb2JDYWNoZS5TDQo+ID4+Pj4+IHRvcmUtPlNpemUNCj4g Pj4+Pj4gKyAgICAgICAgICAgICAgICApOw0KPiA+Pj4+PiArICAgIEFTU0VSVF9FRklfRVJST1Ig KFN0YXR1cyk7DQo+ID4+Pj4+ICAgICAgaWYgKEVycm9yRmxhZykgew0KPiA+Pj4+PiAgICAgICAg Ly8NCj4gPj4+Pj4gICAgICAgIC8vIFdlIHN0aWxsIGhhdmUgSE9CIHZhcmlhYmxlKHMpIG5vdCBm bHVzaGVkDQo+ID4+PiBpbiBmbGFzaC4NCj4gPj4+Pj4gQEAgLTM0MTksNiArMzQ2MCw3IEBAIEZs dXNoSG9iVmFyaWFibGVUb0ZsYXNoICgNCj4gPj4+Pj4gICAgICAgIC8vIEFsbCBIT0IgdmFyaWFi bGVzIGhhdmUgYmVlbiBmbHVzaGVkIGluDQo+ID4+PiBmbGFzaC4NCj4gPj4+Pj4gICAgICAgIC8v DQo+ID4+Pj4+ICAgICAgICBERUJVRyAoKEVGSV9EX0lORk8sICJWYXJpYWJsZSBkcml2ZXI6IGFs bCBIT0INCj4gPj4+IHZhcmlhYmxlcyBoYXZlIGJlZW4NCj4gPj4+Pj4gZmx1c2hlZCBpbiBmbGFz aC5cbiIpKTsNCj4gPj4+Pj4gKyAgICAgICoobVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+ Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5Ib2JG bHVzaENvbXANCj4gPj4+IGxldGUpID0NCj4gPj4+PiBUUlVFOw0KPiA+Pj4+PiAgICAgICAgaWYg KCFBdFJ1bnRpbWUgKCkpIHsNCj4gPj4+Pj4gICAgICAgICAgRnJlZVBvb2wgKChWT0lEICopIFZh cmlhYmxlU3RvcmVIZWFkZXIpOw0KPiA+Pj4+PiAgICAgICAgfQ0KPiA+Pj4+PiBkaWZmIC0tZ2l0 DQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJs ZS9SdW50aW1lRHhlL1ZhcmlhYmxlUnVuDQo+ID4+PiB0aW1lQ2FjaGUuYw0KPiA+Pj4+Pg0KPiA+ Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9W YXJpYWJsZVJ1bg0KPiA+Pj4gdGltZUNhY2hlLmMNCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPj4+Pj4gaW5kZXggMDAwMDAwMDAwMC4uMjY0MmQ5YjAwMA0KPiA+Pj4+PiAtLS0gL2Rl di9udWxsDQo+ID4+Pj4+ICsrKw0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBr Zy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVJ1bg0KPiA+Pj4gdGltZUNh Y2hlLmMNCj4gPj4+Pj4gQEAgLTAsMCArMSwxNTMgQEANCj4gPj4+Pj4gKy8qKiBAZmlsZQ0KPiA+ Pj4+PiArICBUaGUgY29tbW9uIHZhcmlhYmxlIHZvbGF0aWxlIHN0b3JlIHJvdXRpbmVzDQo+ID4+ PiBzaGFyZWQgYnkgdGhlDQo+ID4+Pj4gRFhFX1JVTlRJTUUNCj4gPj4+Pj4gdmFyaWFibGUNCj4g Pj4+Pj4gKyAgbW9kdWxlIGFuZCB0aGUgRFhFX1NNTSB2YXJpYWJsZSBtb2R1bGUuDQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gKyAgQ2F1dGlvbjogVGhpcyBtb2R1bGUgcmVxdWlyZXMgYWRkaXRpb25hbCBy ZXZpZXcNCj4gPj4+IHdoZW4gbW9kaWZpZWQuDQo+ID4+Pj4+ICsgIFRoaXMgZHJpdmVyIHdpbGwg aGF2ZSBleHRlcm5hbCBpbnB1dCAtIHZhcmlhYmxlDQo+ID4+PiBkYXRhLiBUaGV5IG1heSBiZSBp bnB1dCBpbg0KPiA+Pj4+PiBTTU0gbW9kZS4NCj4gPj4+Pj4gKyAgVGhpcyBleHRlcm5hbCBpbnB1 dCBtdXN0IGJlIHZhbGlkYXRlZCBjYXJlZnVsbHkNCj4gPj4+IHRvIGF2b2lkIHNlY3VyaXR5IGlz c3VlIGxpa2UNCj4gPj4+Pj4gKyAgYnVmZmVyIG92ZXJmbG93LCBpbnRlZ2VyIG92ZXJmbG93Lg0K PiA+Pj4+PiArDQo+ID4+Pj4+ICtDb3B5cmlnaHQgKGMpIDIwMTksIEludGVsIENvcnBvcmF0aW9u LiBBbGwgcmlnaHRzDQo+ID4+PiByZXNlcnZlZC48QlI+DQo+ID4+Pj4+ICtTUERYLUxpY2Vuc2Ut SWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2luY2x1ZGUgIlZhcmlhYmxlUGFyc2luZy5oIg0KPiA+Pj4+ PiArI2luY2x1ZGUgIlZhcmlhYmxlUnVudGltZUNhY2hlLmgiDQo+ID4+Pj4+ICsNCj4gPj4+Pj4g K2V4dGVybiBWQVJJQUJMRV9NT0RVTEVfR0xPQkFMDQo+ID4+PiAqbVZhcmlhYmxlTW9kdWxlR2xv YmFsOw0KPiA+Pj4+PiArZXh0ZXJuIFZBUklBQkxFX1NUT1JFX0hFQURFUiAgICAqbU52VmFyaWFi bGVDYWNoZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIENvcGllcyBhbnkg cGVuZGluZyB1cGRhdGVzIHRvIHJ1bnRpbWUgdmFyaWFibGUNCj4gPj4+IGNhY2hlcy4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9VTlNVUFBPUlRFRCAgICAgICAgIFRoZSB2b2xh dGlsZQ0KPiA+Pj4gc3RvcmUgdG8gYmUgdXBkYXRlZCBpcyBub3QNCj4gPj4+Pj4gaW5pdGlhbGl6 ZWQgcHJvcGVybHkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAg VGhlIHZvbGF0aWxlDQo+ID4+PiBzdG9yZSB3YXMgdXBkYXRlZCBzdWNjZXNzZnVsbHkuDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArRUZJX1NUQVRVUw0KPiA+Pj4+PiArU3luY2hy b25pemVSdW50aW1lVmFyaWFibGVDYWNoZUV4ICgNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gSXQg aXMgbm90IGNsZWFyIHRvIG1lIHdoeSB0aGlzIGZ1bmN0aW9uIGlzIG5hbWVkIGFzDQo+ID4+PiB0 aGUgIkV4IiB2ZXJzaW9uIG9mIGZ1bmN0aW9uDQo+ID4+Pj4gU3luY2hyb25pemVSdW50aW1lVmFy aWFibGVDYWNoZSgpLiBGb3IgbWUsIHRoaXMNCj4gPj4+IGZ1bmN0aW9uIGxvb2tzIG1vcmUgbGlr ZSBhDQo+ID4+Pj4gYmFzaWMNCj4gPj4+PiB2ZXJzaW9uLg0KPiA+Pj4+DQo+ID4+Pj4gSSB3b3Vs ZCBzdWdnZXN0IGEgbmFtZSBjaGFuZ2UgZm9yIHRoZSBmdW5jdGlvbnMNCj4gPj4+IHByb3ZpZGVk IGluIGZpbGUNCj4gPj4+PiBWYXJpYWJsZVJ1bnRpbWVDYWNoZS5jIHRvIGJldHRlciByZWZsZWN0 IHRoZWlyIHVzYWdlDQo+ID4+PiBtb2RlbC4NCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pj4g SSdsbCByZW5hbWUgaXQgaW4gVjMuDQo+ID4+Pg0KPiA+Pj4+PiArICBWT0lEDQo+ID4+Pj4+ICsg ICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gSSB3b3VsZCByZWNvbW1lbmQg dGhhdCBhdCBsZWFzdCBhIGxvY2FsIHZhcmlhYmxlDQo+ID4+PiBzaG91bGQgYmUgaW50cm9kdWNl ZCB0bw0KPiA+Pj4+IHJlZHVjZQ0KPiA+Pj4+IHRoZSBkdXBsaWNhdGlvbnMgb2Y6DQo+ID4+Pj4N Cj4gPj4+PiAibVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZh cmlhYmxlUnVudGltZUNhY2hlQ29udGV4dCINCj4gPj4+Pg0KPiA+Pj4+IGluIHRoaXMgZnVuY3Rp b24gaW4gb3JkZXIgdG8gbWFrZSBpdCBlYXNpZXIgdG8gcmVhZC4NCj4gPj4+Pg0KPiA+Pj4+DQo+ ID4+Pg0KPiA+Pj4gSSdsbCBhZGQgaXQgaW4gVjMuDQo+ID4+Pg0KPiA+Pj4+PiArICBpZiAoDQo+ ID4+Pj4+ICsgICAgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+ Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlZhcmlhYmxlUnVu dA0KPiA+Pj4gaW1lTnZDYWNoZS5TdA0KPiA+Pj4+PiBvcmUgPT0gTlVMTCB8fA0KPiA+Pj4+PiAr ICAgIG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFZhcmlh YmxlR2xvYmFsLlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQNCj4gPj4+ IGltZVZvbGF0aWxlQ2FjaA0KPiA+Pj4+PiBlLlN0b3JlID09IE5VTEwgfHwNCj4gPj4+Pj4gKyAg ICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwu VmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlBlbmRpbmdVcGRhdA0KPiA+Pj4gZSA9PSBOVUxM DQo+ID4+Pj4+ICsgICAgKSB7DQo+ID4+Pj4+ICsgICAgcmV0dXJuIEVGSV9VTlNVUFBPUlRFRDsN Cj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlmICgqKG1WYXJpYWJsZU1vZHVs ZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVD YWNoZUNvbnRleHQuUGVuZGluZ1VwZGF0DQo+ID4+PiBlKSkgew0KPiA+Pj4+PiArICAgIGlmICgN Cj4gPj4+Pj4gKyAgICAgIG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+Pg0K PiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJs ZVJ1bnQNCj4gPj4+IGltZUhvYkNhY2hlLlMNCj4gPj4+Pj4gdG9yZSAhPSBOVUxMICYmDQo+ID4+ Pj4+ICsgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwu SG9iVmFyaWFibGVCYXNlID4gMA0KPiA+Pj4+PiArICAgICAgKSB7DQo+ID4+Pj4+ICsgICAgICBD b3B5TWVtICgNCj4gPj4+Pj4gKyAgICAgICAgKFZPSUQgKikgKA0KPiA+Pj4+PiArICAgICAgICAg ICgoVUlOVDggKikgKFVJTlROKSBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+ Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuVmFy aWFibGVSdW50DQo+ID4+PiBpbWVIb2JDYWNoZS5TDQo+ID4+Pj4+IHRvcmUpICsNCj4gPj4+Pj4g KyAgICAgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+ PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuVmFyaWFibGVSdW50 DQo+ID4+PiBpbWVIb2JDYWNoZS5QDQo+ID4+Pj4+IGVuZGluZ1VwZGF0ZU9mZnNldA0KPiA+Pj4+ PiArICAgICAgICAgICksDQo+ID4+Pj4+ICsgICAgICAgIChWT0lEICopICgNCj4gPj4+Pj4gKyAg ICAgICAgICAoKFVJTlQ4ICopIChVSU5UTikgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+ Pj4gVmFyaWFibGVHbG9iYWwuSG9iVmFyaWFibGVCYXNlKSArDQo+ID4+Pj4+ICsgICAgICAgICAg bVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gVmFyaWFibGVH bG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlZhcmlhYmxlUnVudA0KPiA+Pj4gaW1l SG9iQ2FjaGUuUA0KPiA+Pj4+PiBlbmRpbmdVcGRhdGVPZmZzZXQNCj4gPj4+Pj4gKyAgICAgICAg ICApLA0KPiA+Pj4+PiArICAgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ ID4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQu VmFyaWFibGVSdW50DQo+ID4+PiBpbWVIb2JDYWNoZS5QDQo+ID4+Pj4+IGVuZGluZ1VwZGF0ZUxl bmd0aA0KPiA+Pj4+PiArICAgICAgICApOw0KPiA+Pj4+PiArICAgICAgbVZhcmlhYmxlTW9kdWxl R2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVS dW50aW1lQ2FjaGVDb250ZXh0LlZhcmlhYmxlUnVudA0KPiA+Pj4gaW1lSG9iQ2FjaGUuUA0KPiA+ Pj4+PiBlbmRpbmdVcGRhdGVMZW5ndGggPSAwOw0KPiA+Pj4+PiArICAgICAgbVZhcmlhYmxlTW9k dWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFi bGVSdW50aW1lQ2FjaGVDb250ZXh0LlZhcmlhYmxlUnVudA0KPiA+Pj4gaW1lSG9iQ2FjaGUuUA0K PiA+Pj4+PiBlbmRpbmdVcGRhdGVPZmZzZXQgPSAwOw0KPiA+Pj4+PiArICAgIH0NCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArICAgIENvcHlNZW0gKA0KPiA+Pj4+PiArICAgICAgKFZPSUQgKikgKA0KPiA+ Pj4+PiArICAgICAgICAoKFVJTlQ4ICopIChVSU5UTikgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0K PiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2Fj aGVDb250ZXh0LlZhcmlhYmxlUnVudA0KPiA+Pj4gaW1lTnZDYWNoZS5TdA0KPiA+Pj4+PiBvcmUp ICsNCj4gPj4+Pj4gKyAgICAgICAgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+ Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlZh cmlhYmxlUnVudA0KPiA+Pj4gaW1lTnZDYWNoZS5QZQ0KPiA+Pj4+PiBuZGluZ1VwZGF0ZU9mZnNl dA0KPiA+Pj4+PiArICAgICAgICApLA0KPiA+Pj4+PiArICAgICAgKFZPSUQgKikgKA0KPiA+Pj4+ PiArICAgICAgICAoKFVJTlQ4ICopIChVSU5UTikgbU52VmFyaWFibGVDYWNoZSkgKw0KPiA+Pj4+ PiArICAgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+ PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuVmFyaWFibGVSdW50 DQo+ID4+PiBpbWVOdkNhY2hlLlBlDQo+ID4+Pj4+IG5kaW5nVXBkYXRlT2Zmc2V0DQo+ID4+Pj4+ ICsgICAgICAgICksDQo+ID4+Pj4+ICsgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+ Pj4+DQo+ID4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNv bnRleHQuVmFyaWFibGVSdW50DQo+ID4+PiBpbWVOdkNhY2hlLlBlDQo+ID4+Pj4+IG5kaW5nVXBk YXRlTGVuZ3RoDQo+ID4+Pj4+ICsgICAgICApOw0KPiA+Pj4+PiArICAgIG1WYXJpYWJsZU1vZHVs ZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxl UnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQNCj4gPj4+IGltZU52Q2FjaGUuUGUNCj4g Pj4+Pj4gbmRpbmdVcGRhdGVMZW5ndGggPSAwOw0KPiA+Pj4+PiArICAgIG1WYXJpYWJsZU1vZHVs ZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxl UnVudGltZUNhY2hlQ29udGV4dC5WYXJpYWJsZVJ1bnQNCj4gPj4+IGltZU52Q2FjaGUuUGUNCj4g Pj4+Pj4gbmRpbmdVcGRhdGVPZmZzZXQgPSAwOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgQ29w eU1lbSAoDQo+ID4+Pj4+ICsgICAgICAoVk9JRCAqKSAoDQo+ID4+Pj4+ICsgICAgICAgICgoVUlO VDggKikgKFVJTlROKSBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4NCj4g Pj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuVmFyaWFibGVS dW50DQo+ID4+PiBpbWVWb2xhdGlsZUNhY2gNCj4gPj4+Pj4gZS5TdG9yZSkgKw0KPiA+Pj4+PiAr ICAgICAgICBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBW YXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuVmFyaWFibGVSdW50DQo+ ID4+PiBpbWVWb2xhdGlsZUNhY2gNCj4gPj4+Pj4gZS5QZW5kaW5nVXBkYXRlT2Zmc2V0DQo+ID4+ Pj4+ICsgICAgICApLA0KPiA+Pj4+PiArICAgICAgKFZPSUQgKikgKA0KPiA+Pj4+PiArICAgICAg ICAoKFVJTlQ4ICopIChVSU5UTikgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pj4gVmFy aWFibGVHbG9iYWwuVm9sYXRpbGVWYXJpYWJsZUJhc2UpICsNCj4gPj4+Pj4gKyAgICAgICAgbVZh cmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9i YWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlZhcmlhYmxlUnVudA0KPiA+Pj4gaW1lVm9s YXRpbGVDYWNoDQo+ID4+Pj4+IGUuUGVuZGluZ1VwZGF0ZU9mZnNldA0KPiA+Pj4+PiArICAgICAg ICApLA0KPiA+Pj4+PiArICAgICAgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+ Pj4+DQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlZh cmlhYmxlUnVudA0KPiA+Pj4gaW1lVm9sYXRpbGVDYWNoDQo+ID4+Pj4+IGUuUGVuZGluZ1VwZGF0 ZUxlbmd0aA0KPiA+Pj4+PiArICAgICAgKTsNCj4gPj4+Pj4gKyAgICBtVmFyaWFibGVNb2R1bGVH bG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1 bnRpbWVDYWNoZUNvbnRleHQuVmFyaWFibGVSdW50DQo+ID4+PiBpbWVWb2xhdGlsZUNhY2gNCj4g Pj4+Pj4gZS5QZW5kaW5nVXBkYXRlTGVuZ3RoID0gMDsNCj4gPj4+Pj4gKyAgICBtVmFyaWFibGVN b2R1bGVHbG9iYWwtDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJp YWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuVmFyaWFibGVSdW50DQo+ID4+PiBpbWVWb2xhdGlsZUNh Y2gNCj4gPj4+Pj4gZS5QZW5kaW5nVXBkYXRlT2Zmc2V0ID0gMDsNCj4gPj4+Pj4gKyAgICAqKG1W YXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJp YWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuUGVuZGluZ1VwZGF0DQo+ID4+PiBlKSA9IEZBTFNFOw0K PiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0K PiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgU3luY2hyb25p emVzIHRoZSBydW50aW1lIHZhcmlhYmxlIGNhY2hlcyB3aXRoIGFsbA0KPiA+Pj4gcGVuZGluZyB1 cGRhdGVzDQo+ID4+Pj4gb3V0c2lkZQ0KPiA+Pj4+PiBydW50aW1lLg0KPiA+Pj4+PiArDQo+ID4+ Pj4+ICsgIEVuc3VyZXMgYWxsIGNvbmRpdGlvbnMgYXJlIG1ldCB0byBtYWludGFpbg0KPiA+Pj4g Y29oZXJlbmN5IGZvciBydW50aW1lIGNhY2hlDQo+ID4+Pj4+IHVwZGF0ZXMuDQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKyAgQHBhcmFtW2luXSBWYXJpYWJsZVJ1bnRpbWVDYWNoZSBWYXJpYWJsZSBydW50 aW1lDQo+ID4+PiBjYWNoZSBzdHJ1Y3R1cmUgZm9yDQo+ID4+Pj4+IHRoZSBydW50aW1lIGNhY2hl IGJlaW5nIHN5bmNocm9uaXplZC4NCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSBPZmZzZXQgICAgICAg ICAgICAgICBPZmZzZXQgaW4gYnl0ZXMNCj4gPj4+IHRvIGFwcGx5IHRoZSB1cGRhdGUuDQo+ID4+ Pj4+ICsgIEBwYXJhbVtpbl0gTGVuZ3RoICAgICAgICAgICAgICAgTGVuZ3RoIG9mIGRhdGEgaW4N Cj4gPj4+IGJ5dGVzIG9mIHRoZSB1cGRhdGUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJldHZh bCBFRklfVU5TVVBQT1JURUQgICAgICAgICBUaGUgdm9sYXRpbGUNCj4gPj4+IHN0b3JlIHRvIGJl IHVwZGF0ZWQgaXMgbm90DQo+ID4+Pj4+IGluaXRpYWxpemVkIHByb3Blcmx5Lg0KPiA+Pj4+PiAr ICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSB2b2xhdGlsZQ0KPiA+Pj4gc3Rv cmUgd2FzIHVwZGF0ZWQgc3VjY2Vzc2Z1bGx5Lg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4g Pj4+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+Pj4gK1N5bmNocm9uaXplUnVudGltZVZhcmlhYmxlQ2Fj aGUgKA0KPiA+Pj4+PiArICBJTiAgVkFSSUFCTEVfUlVOVElNRV9DQUNIRQ0KPiA+Pj4gKlZhcmlh YmxlUnVudGltZUNhY2hlLA0KPiA+Pj4+PiArICBJTiAgVUlOVE4gICAgICAgICAgICAgICAgICAg ICAgICAgICBPZmZzZXQsDQo+ID4+Pj4+ICsgIElOICBVSU5UTiAgICAgICAgICAgICAgICAgICAg ICAgICAgIExlbmd0aA0KPiA+Pj4+PiArICApDQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsgIGlmIChW YXJpYWJsZVJ1bnRpbWVDYWNoZSA9PSBOVUxMKSB7DQo+ID4+Pj4+ICsgICAgcmV0dXJuIEVGSV9J TlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+Pj4gKyAgfSBlbHNlIGlmIChWYXJpYWJsZVJ1bnRpbWVD YWNoZS0+U3RvcmUgPT0gTlVMTCkgew0KPiA+Pj4+PiArICAgICAgLy8gUnVudGltZSBjYWNoZSBp cyBub3QgYXZhaWxhYmxlIHlldCBhdCB0aGlzDQo+ID4+PiBwb2ludCwNCj4gPj4+Pj4gKyAgICAg IC8vIFJldHVybiBFRklfU1VDQ0VTUyBpbnN0ZWFkIG9mDQo+ID4+PiBFRklfTk9UX0FWQUlMQUJM RV9ZRVQgdG8gbGV0IGl0DQo+ID4+Pj4+IHByb2dyZXNzDQo+ID4+Pj4+ICsgICAgICByZXR1cm4g RUZJX1NVQ0NFU1M7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoDQo+ ID4+Pj4+ICsgICAgbVZhcmlhYmxlTW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+IFZhcmlh YmxlR2xvYmFsLlZhcmlhYmxlUnVudGltZUNhY2hlQ29udGV4dC5QZW5kaW5nVXBkYXQNCj4gPj4+ IGUgPT0gTlVMTA0KPiA+Pj4+IHx8DQo+ID4+Pj4+ICsgICAgbVZhcmlhYmxlTW9kdWxlR2xvYmFs LQ0KPiA+Pj4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0LlJl YWRMb2NrDQo+ID4+PiA9PSBOVUxMDQo+ID4+Pj4+ICsgICAgKSB7DQo+ID4+Pj4+ICsgICAgcmV0 dXJuIEVGSV9VTlNVUFBPUlRFRDsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsg IGlmICgNCj4gPj4+Pj4gKyAgICAqKG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4g Pj4+PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuUGVuZGluZ1Vw ZGF0DQo+ID4+PiBlKSAmJg0KPiA+Pj4+PiArICAgIFZhcmlhYmxlUnVudGltZUNhY2hlLT5QZW5k aW5nVXBkYXRlTGVuZ3RoID4gMA0KPiA+Pj4+PiArICAgICkgew0KPiA+Pj4+PiArICAgIFZhcmlh YmxlUnVudGltZUNhY2hlLT5QZW5kaW5nVXBkYXRlTGVuZ3RoID0NCj4gPj4+Pj4gKyAgICAgIChV SU5UMzIpICgNCj4gPj4+Pj4gKyAgICAgICAgTUFYICgNCj4gPj4+Pj4gKyAgICAgICAgICAoVUlO VE4pIChWYXJpYWJsZVJ1bnRpbWVDYWNoZS0NCj4gPj4+PiBQZW5kaW5nVXBkYXRlT2Zmc2V0ICsN Cj4gPj4+Pj4gVmFyaWFibGVSdW50aW1lQ2FjaGUtPlBlbmRpbmdVcGRhdGVMZW5ndGgpLA0KPiA+ Pj4+PiArICAgICAgICAgIE9mZnNldCArIExlbmd0aA0KPiA+Pj4+PiArICAgICAgICApIC0gTUlO ICgoVUlOVE4pIFZhcmlhYmxlUnVudGltZUNhY2hlLQ0KPiA+Pj4+IFBlbmRpbmdVcGRhdGVPZmZz ZXQsDQo+ID4+Pj4gT2Zmc2V0KQ0KPiA+Pj4+PiArICAgICAgKTsNCj4gPj4+Pj4gKyAgICBWYXJp YWJsZVJ1bnRpbWVDYWNoZS0+UGVuZGluZ1VwZGF0ZU9mZnNldCA9DQo+ID4+Pj4+ICsgICAgICAo VUlOVDMyKSBNSU4gKChVSU5UTikgVmFyaWFibGVSdW50aW1lQ2FjaGUtDQo+ID4+Pj4+IFBlbmRp bmdVcGRhdGVPZmZzZXQsDQo+ID4+Pj4+IE9mZnNldCk7DQo+ID4+Pj4+ICsgIH0gZWxzZSB7DQo+ ID4+Pj4+ICsgICAgVmFyaWFibGVSdW50aW1lQ2FjaGUtPlBlbmRpbmdVcGRhdGVMZW5ndGggPQ0K PiA+Pj4gKFVJTlQzMikgTGVuZ3RoOw0KPiA+Pj4+PiArICAgIFZhcmlhYmxlUnVudGltZUNhY2hl LT5QZW5kaW5nVXBkYXRlT2Zmc2V0ID0NCj4gPj4+IChVSU5UMzIpIE9mZnNldDsNCj4gPj4+Pj4g KyAgfQ0KPiA+Pj4+PiArICAqKG1WYXJpYWJsZU1vZHVsZUdsb2JhbC0NCj4gPj4+Pj4NCj4gPj4+ PiBWYXJpYWJsZUdsb2JhbC5WYXJpYWJsZVJ1bnRpbWVDYWNoZUNvbnRleHQuUGVuZGluZ1VwZGF0 DQo+ID4+PiBlKSA9IFRSVUU7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgaWYgKCoobVZhcmlhYmxl TW9kdWxlR2xvYmFsLQ0KPiA+Pj4+Pg0KPiA+Pj4+IFZhcmlhYmxlR2xvYmFsLlZhcmlhYmxlUnVu dGltZUNhY2hlQ29udGV4dC5SZWFkTG9jaykgPT0NCj4gPj4+IEZBTFNFKSB7DQo+ID4+Pj4+ICsg ICAgcmV0dXJuIFN5bmNocm9uaXplUnVudGltZVZhcmlhYmxlQ2FjaGVFeCAoKTsNCj4gPj4+Pj4g KyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIHJldHVybiBFRklfU1VDQ0VTUzsNCj4gPj4+Pj4g K30NCj4gPj4+Pj4gZGlmZiAtLWdpdA0KPiA+Pj4+DQo+ID4+PiBhL01kZU1vZHVsZVBrZy9Vbml2 ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9WYXJpYWJsZVNtbQ0KPiA+Pj4gLmMNCj4gPj4+Pj4N Cj4gPj4+IGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1Zhcmlh YmxlU21tDQo+ID4+PiAuYw0KPiA+Pj4+PiBpbmRleCBjZTQwOWYyMmEzLi44ZDc2N2Y3NWFjIDEw MDY0NA0KPiA+Pj4+PiAtLS0NCj4gPj4+IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJs ZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21tDQo+ID4+PiAuYw0KPiA+Pj4+PiArKysNCj4gPj4+IGIv TWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21tDQo+ ID4+PiAuYw0KPiA+Pj4+PiBAQCAtMzEsNiArMzEsOSBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmll cjogQlNELTItDQo+ID4+PiBDbGF1c2UtUGF0ZW50DQo+ID4+Pj4+ICAjaW5jbHVkZSA8R3VpZC9T bW1WYXJpYWJsZUNvbW1vbi5oPg0KPiA+Pj4+PiAgI2luY2x1ZGUgIlZhcmlhYmxlLmgiDQo+ID4+ Pj4+ICAjaW5jbHVkZSAiVmFyaWFibGVQYXJzaW5nLmgiDQo+ID4+Pj4+ICsjaW5jbHVkZSAiVmFy aWFibGVSdW50aW1lQ2FjaGUuaCINCj4gPj4+Pj4gKw0KPiA+Pj4+PiArZXh0ZXJuIFZBUklBQkxF X1NUT1JFX0hFQURFUg0KPiA+Pj4gKm1OdlZhcmlhYmxlQ2FjaGU7DQo+ID4+Pj4+DQo+ID4+Pj4+ ICBCT09MRUFODQo+ID4+PiBtQXRSdW50aW1lICAgICAgICAgICAgICA9IEZBTFNFOw0KPiA+Pj4+ PiAgVUlOVDgNCj4gPj4+ICptVmFyaWFibGVCdWZmZXJQYXlsb2FkID0gTlVMTDsNCj4gPj4+Pj4g QEAgLTQ1MSwyNSArNDU0LDI5IEBAIFNtbVZhcmlhYmxlR2V0U3RhdGlzdGljcyAoDQo+ID4+Pj4+ ICBFRklfU1RBVFVTDQo+ID4+Pj4+ICBFRklBUEkNCj4gPj4+Pj4gIFNtbVZhcmlhYmxlSGFuZGxl ciAoDQo+ID4+Pj4+IC0gIElOICAgICBFRklfSEFORExFDQo+ID4+PiBEaXNwYXRjaEhhbmRsZSwN Cj4gPj4+Pj4gLSAgSU4gICAgIENPTlNUIFZPSUQNCj4gPj4+ICpSZWdpc3RlckNvbnRleHQsDQo+ ID4+Pj4+IC0gIElOIE9VVCBWT0lEDQo+ID4+PiAqQ29tbUJ1ZmZlciwNCj4gPj4+Pj4gLSAgSU4g T1VUIFVJTlRODQo+ID4+PiAqQ29tbUJ1ZmZlclNpemUNCj4gPj4+Pj4gKyAgSU4gICAgIEVGSV9I QU5ETEUNCj4gPj4+IERpc3BhdGNoSGFuZGxlLA0KPiA+Pj4+PiArICBJTiAgICAgQ09OU1QgVk9J RA0KPiA+Pj4gKlJlZ2lzdGVyQ29udGV4dCwNCj4gPj4+Pj4gKyAgSU4gT1VUIFZPSUQNCj4gPj4+ ICpDb21tQnVmZmVyLA0KPiA+Pj4+PiArICBJTiBPVVQgVUlOVE4NCj4gPj4+ICpDb21tQnVmZmVy U2l6ZQ0KPiA+Pj4+PiAgICApDQo+ID4+Pj4+ICB7DQo+ID4+Pj4+IC0gIEVGSV9TVEFUVVMNCj4g Pj4+IFN0YXR1czsNCj4gPj4+Pj4gLSAgU01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0hFQURFUg0K PiA+Pj4+PiAqU21tVmFyaWFibGVGdW5jdGlvbkhlYWRlcjsNCj4gPj4+Pj4gLSAgU01NX1ZBUklB QkxFX0NPTU1VTklDQVRFX0FDQ0VTU19WQVJJQUJMRQ0KPiA+Pj4+PiAqU21tVmFyaWFibGVIZWFk ZXI7DQo+ID4+Pj4+IC0gIFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9HRVRfTkVYVF9WQVJJQUJM RV9OQU1FDQo+ID4+Pj4+ICpHZXROZXh0VmFyaWFibGVOYW1lOw0KPiA+Pj4+PiAtICBTTU1fVkFS SUFCTEVfQ09NTVVOSUNBVEVfUVVFUllfVkFSSUFCTEVfSU5GTw0KPiA+Pj4+PiAqUXVlcnlWYXJp YWJsZUluZm87DQo+ID4+Pj4+IC0gIFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9HRVRfUEFZTE9B RF9TSVpFDQo+ID4+Pj4+ICpHZXRQYXlsb2FkU2l6ZTsNCj4gPj4+Pj4gLSAgVkFSSUFCTEVfSU5G T19FTlRSWQ0KPiA+Pj4gKlZhcmlhYmxlSW5mbzsNCj4gPj4+Pj4gLSAgU01NX1ZBUklBQkxFX0NP TU1VTklDQVRFX0xPQ0tfVkFSSUFCTEUNCj4gPj4+PiAqVmFyaWFibGVUb0xvY2s7DQo+ID4+Pj4+ IC0NCj4gPj4+IFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9WQVJfQ0hFQ0tfVkFSSUFCTEVfUFJP UEVSVFkNCj4gPj4+Pj4gKkNvbW1WYXJpYWJsZVByb3BlcnR5Ow0KPiA+Pj4+PiAtICBVSU5UTg0K PiA+Pj4gSW5mb1NpemU7DQo+ID4+Pj4+IC0gIFVJTlRODQo+ID4+PiBOYW1lQnVmZmVyU2l6ZTsN Cj4gPj4+Pj4gLSAgVUlOVE4NCj4gPj4+IENvbW1CdWZmZXJQYXlsb2FkU2l6ZTsNCj4gPj4+Pj4g LSAgVUlOVE4NCj4gPj4+IFRlbXBDb21tQnVmZmVyU2l6ZTsNCj4gPj4+Pj4gKyAgRUZJX1NUQVRV Uw0KPiA+Pj4gU3RhdHVzOw0KPiA+Pj4+PiArICBTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfSEVB REVSDQo+ID4+Pj4+ICpTbW1WYXJpYWJsZUZ1bmN0aW9uSGVhZGVyOw0KPiA+Pj4+PiArICBTTU1f VkFSSUFCTEVfQ09NTVVOSUNBVEVfQUNDRVNTX1ZBUklBQkxFDQo+ID4+Pj4+ICpTbW1WYXJpYWJs ZUhlYWRlcjsNCj4gPj4+Pj4gKyAgU01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0dFVF9ORVhUX1ZB UklBQkxFX05BTUUNCj4gPj4+Pj4gKkdldE5leHRWYXJpYWJsZU5hbWU7DQo+ID4+Pj4+ICsgIFNN TV9WQVJJQUJMRV9DT01NVU5JQ0FURV9RVUVSWV9WQVJJQUJMRV9JTkZPDQo+ID4+Pj4+ICpRdWVy eVZhcmlhYmxlSW5mbzsNCj4gPj4+Pj4gKyAgU01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0dFVF9Q QVlMT0FEX1NJWkUNCj4gPj4+Pj4gKkdldFBheWxvYWRTaXplOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ DQo+ID4+Pg0KPiBTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfUlVOVElNRV9WQVJJQUJMRV9DQUNI RV9DT05URVhUDQo+ID4+Pj4+ICpSdW50aW1lVmFyaWFibGVDYWNoZUNvbnRleHQ7DQo+ID4+Pj4+ ICsgIFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9HRVRfUlVOVElNRV9DQUNIRV9JTkZPDQo+ID4+ Pj4+ICpHZXRSdW50aW1lQ2FjaGVJbmZvOw0KPiA+Pj4+PiArICBTTU1fVkFSSUFCTEVfQ09NTVVO SUNBVEVfTE9DS19WQVJJQUJMRQ0KPiA+Pj4+PiAqVmFyaWFibGVUb0xvY2s7DQo+ID4+Pj4+ICsN Cj4gPj4+IFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9WQVJfQ0hFQ0tfVkFSSUFCTEVfUFJPUEVS VFkNCj4gPj4+Pj4gKkNvbW1WYXJpYWJsZVByb3BlcnR5Ow0KPiA+Pj4+PiArICBWQVJJQUJMRV9J TkZPX0VOVFJZDQo+ID4+PiAqVmFyaWFibGVJbmZvOw0KPiA+Pj4+PiArICBWQVJJQUJMRV9SVU5U SU1FX0NBQ0hFX0NPTlRFWFQNCj4gPj4+Pj4gKlZhcmlhYmxlQ2FjaGVDb250ZXh0Ow0KPiA+Pj4+ PiArICBWQVJJQUJMRV9TVE9SRV9IRUFERVINCj4gPj4+ICpWYXJpYWJsZUNhY2hlOw0KPiA+Pj4+ PiArICBVSU5UTg0KPiA+Pj4gSW5mb1NpemU7DQo+ID4+Pj4+ICsgIFVJTlRODQo+ID4+PiBOYW1l QnVmZmVyU2l6ZTsNCj4gPj4+Pj4gKyAgVUlOVE4NCj4gPj4+IENvbW1CdWZmZXJQYXlsb2FkU2l6 ZTsNCj4gPj4+Pj4gKyAgVUlOVE4NCj4gPj4+IFRlbXBDb21tQnVmZmVyU2l6ZTsNCj4gPj4+Pj4N Cj4gPj4+Pj4gICAgLy8NCj4gPj4+Pj4gICAgLy8gSWYgaW5wdXQgaXMgaW52YWxpZCwgc3RvcCBw cm9jZXNzaW5nIHRoaXMgU01JDQo+ID4+Pj4+IEBAIC03ODksNiArNzk2LDc5IEBAIFNtbVZhcmlh YmxlSGFuZGxlciAoDQo+ID4+Pj4+ICAgICAgICAgICAgICAgICAgICk7DQo+ID4+Pj4+ICAgICAg ICBDb3B5TWVtIChTbW1WYXJpYWJsZUZ1bmN0aW9uSGVhZGVyLT5EYXRhLA0KPiA+Pj4+IG1WYXJp YWJsZUJ1ZmZlclBheWxvYWQsDQo+ID4+Pj4+IENvbW1CdWZmZXJQYXlsb2FkU2l6ZSk7DQo+ID4+ Pj4+ICAgICAgICBicmVhazsNCj4gPj4+Pj4gKyAgICBjYXNlDQo+ID4+Pj4+DQo+ID4+Pj4NCj4g Pj4+DQo+IFNNTV9WQVJJQUJMRV9GVU5DVElPTl9JTklUX1JVTlRJTUVfVkFSSUFCTEVfQ0FDSEVf Q09OVEVYDQo+ID4+PiBUOg0KPiA+Pj4+PiArICAgICAgaWYgKENvbW1CdWZmZXJQYXlsb2FkU2l6 ZSA8IHNpemVvZg0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiAoU01NX1ZBUklBQkxFX0ZVTkNU SU9OX0lOSVRfUlVOVElNRV9WQVJJQUJMRV9DQUNIRV9DT05URQ0KPiA+Pj4gWFQpDQo+ID4+Pj4g KQ0KPiA+Pj4+PiB7DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+IFRoZSBhYm92ZSBjaGVjayBpcyBu b3QgY29ycmVjdCwgSSB0aGluayBpdCBzaG91bGQgYmU6DQo+ID4+Pj4NCj4gPj4+PiBpZiAoQ29t bUJ1ZmZlclBheWxvYWRTaXplIDwgc2l6ZW9mDQo+ID4+Pj4NCj4gPj4+DQo+ID4+DQo+IChTTU1f VkFSSUFCTEVfQ09NTVVOSUNBVEVfUlVOVElNRV9WQVJJQUJMRV9DQUNIRV9DT05URVhUDQo+ID4+ PiApDQo+ID4+Pj4gKSB7DQo+ID4+Pj4NCj4gPj4+PiBQbGVhc2UgaGVscCB0byBkb3VibGUgY29u ZmlybS4NCj4gPj4+PiBBbHNvLCBJIHJlY29tbWVuZCBzb21lIHNlY3VyaXR5IHRlc3RzIHNob3Vs ZCBiZQ0KPiA+Pj4gcGVyZm9ybWVkIHRvIHRoZXNlIG5ldw0KPiA+Pj4+IGNhc2VzIGluDQo+ID4+ Pj4gdGhlIHZhcmlhYmxlIFNNSSBoYW5kbGVyLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+DQo+ID4+ PiBZb3UncmUgcmlnaHQuIFRoZSB3cm9uZyBtYWNybyB3YXMgc2ltcGx5IGNvcGllZC4NCj4gPj4+ DQo+ID4+Pj4+ICsgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsDQo+ID4+PiAiSW5pdFJ1bnRp bWVWYXJpYWJsZUNhY2hlQ29udGV4dDogU01NDQo+ID4+Pj4+IGNvbW11bmljYXRpb24gYnVmZmVy IHNpemUgaW52YWxpZCFcbiIpKTsNCj4gPj4+Pj4gKyAgICAgIH0gZWxzZSBpZiAobUVuZE9mRHhl KSB7DQo+ID4+Pj4+ICsgICAgICAgIERFQlVHICgoREVCVUdfRVJST1IsDQo+ID4+PiAiSW5pdFJ1 bnRpbWVWYXJpYWJsZUNhY2hlQ29udGV4dDogQ2Fubm90DQo+ID4+Pj4+IGluaXQgY29udGV4dCBh ZnRlciBlbmQgb2YgRFhFIVxuIikpOw0KPiA+Pj4+PiArICAgICAgfSBlbHNlIHsNCj4gPj4+Pj4g KyAgICAgICAgUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0ID0NCj4gPj4+Pj4NCj4gPj4+Pg0K PiA+Pj4NCj4gPj4NCj4gKFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9SVU5USU1FX1ZBUklBQkxF X0NBQ0hFX0NPTlRFWFQNCj4gPj4+Pj4gKikgU21tVmFyaWFibGVGdW5jdGlvbkhlYWRlci0+RGF0 YTsNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gTm90IHN1cmUgb24gdGhpcyBvbmU6DQo+ID4+Pj4N Cj4gPj4+PiBEbyB5b3UgdGhpbmsgaXQgaXMgbmVjZXNzYXJ5IHRvIGNvcHkgdGhlIGNvbnRlbnRz IGluDQo+ID4+PiB0aGUgY29tbSBidWZmZXIgdG8gdGhlDQo+ID4+Pj4gcHJlLWFsbG9jYXRlZCBT TU0gdmFyaWFibGUgYnVmZmVyIHBheWxvYWQNCj4gPj4+ICdtVmFyaWFibGVCdWZmZXJQYXlsb2Fk JyB0bw0KPiA+Pj4+IGF2b2lkDQo+ID4+Pj4gVE9DVE9VIGlzc3VlPyBTaW5jZSB0aGVyZSBhcmUg c29tZSB0ZXN0cyAoc29ydCBvZiwgYQ0KPiA+Pj4gY291cGxlIG9mIEFTU0VSVHMpDQo+ID4+Pj4g YmFzZWQNCj4gPj4+PiBvbiB0aGUgY29tbSBidWZmZXIgY29udGVudC4NCj4gPj4+Pg0KPiA+Pj4+ DQo+ID4+Pg0KPiA+Pj4gSSB1bmRlcnN0YW5kIHRoZSBUT0NUT1Ugb2JzZXJ2YXRpb24uIEJ1dCBp cyB0aGlzIHN0aWxsIGENCj4gPj4+IGNvbmNlcm4gd2l0aCBhbGwgdGhlDQo+ID4+PiBjb3JlcyBy ZW5kZXp2b3VzZWQgaW4gU01NIHByaW9yIHRvIGVuZCBvZiBEWEU/DQo+ID4+Pg0KPiA+Pj4+PiAr ICAgICAgICBWYXJpYWJsZUNhY2hlQ29udGV4dCA9DQo+ID4+PiAmbVZhcmlhYmxlTW9kdWxlR2xv YmFsLQ0KPiA+Pj4+Pj4gVmFyaWFibGVHbG9iYWwuVmFyaWFibGVSdW50aW1lQ2FjaGVDb250ZXh0 Ow0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgIEFTU0VSVCAoUnVudGltZVZhcmlhYmxlQ2Fj aGVDb250ZXh0LQ0KPiA+Pj4+IFJ1bnRpbWVWb2xhdGlsZUNhY2hlICE9DQo+ID4+Pj4+IE5VTEwp Ow0KPiA+Pj4+PiArICAgICAgICBBU1NFUlQgKFJ1bnRpbWVWYXJpYWJsZUNhY2hlQ29udGV4dC0N Cj4gPj4+PiBSdW50aW1lTnZDYWNoZSAhPSBOVUxMKTsNCj4gPj4+Pj4gKyAgICAgICAgQVNTRVJU IChSdW50aW1lVmFyaWFibGVDYWNoZUNvbnRleHQtDQo+ID4+Pj4gUGVuZGluZ1VwZGF0ZSAhPSBO VUxMKTsNCj4gPj4+Pj4gKyAgICAgICAgQVNTRVJUIChSdW50aW1lVmFyaWFibGVDYWNoZUNvbnRl eHQtDQo+ID4+Pj4gUmVhZExvY2sgIT0gTlVMTCk7DQo+ID4+Pj4+ICsgICAgICAgIEFTU0VSVCAo UnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0LQ0KPiA+Pj4+IEhvYkZsdXNoQ29tcGxldGUgIT0N Cj4gPj4+PiBOVUxMKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgICBWYXJpYWJsZUNhY2hl Q29udGV4dC0NCj4gPj4+PiBWYXJpYWJsZVJ1bnRpbWVIb2JDYWNoZS5TdG9yZSAgICAgID0NCj4g Pj4+Pj4gUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0LT5SdW50aW1lSG9iQ2FjaGU7DQo+ID4+ Pj4+ICsgICAgICAgIFZhcmlhYmxlQ2FjaGVDb250ZXh0LQ0KPiA+Pj4+IFZhcmlhYmxlUnVudGlt ZVZvbGF0aWxlQ2FjaGUuU3RvcmUgPQ0KPiA+Pj4+PiBSdW50aW1lVmFyaWFibGVDYWNoZUNvbnRl eHQtPlJ1bnRpbWVWb2xhdGlsZUNhY2hlOw0KPiA+Pj4+PiArICAgICAgICBWYXJpYWJsZUNhY2hl Q29udGV4dC0NCj4gPj4+PiBWYXJpYWJsZVJ1bnRpbWVOdkNhY2hlLlN0b3JlICAgICAgID0NCj4g Pj4+Pj4gUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0LT5SdW50aW1lTnZDYWNoZTsNCj4gPj4+ Pj4gKyAgICAgICAgVmFyaWFibGVDYWNoZUNvbnRleHQtPlBlbmRpbmdVcGRhdGUNCj4gPj4+ID0N Cj4gPj4+Pj4gUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0LT5QZW5kaW5nVXBkYXRlOw0KPiA+ Pj4+PiArICAgICAgICBWYXJpYWJsZUNhY2hlQ29udGV4dC0+UmVhZExvY2sNCj4gPj4+ID0NCj4g Pj4+Pj4gUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0LT5SZWFkTG9jazsNCj4gPj4+Pj4gKyAg ICAgICAgVmFyaWFibGVDYWNoZUNvbnRleHQtPkhvYkZsdXNoQ29tcGxldGUNCj4gPj4+ID0NCj4g Pj4+Pj4gUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0LT5Ib2JGbHVzaENvbXBsZXRlOw0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgIC8vIFNldCB1cCB0aGUgaW50aWFsIHBlbmRpbmcgcmVx dWVzdCBzaW5jZQ0KPiA+Pj4gdGhlIFJUIGNhY2hlIG5lZWRzIHRvIGJlIGluDQo+ID4+Pj4+IHN5 bmMgd2l0aCBTTU0gY2FjaGUNCj4gPj4+Pj4gKyAgICAgICAgaWYgKG1WYXJpYWJsZU1vZHVsZUds b2JhbC0NCj4gPj4+PiBWYXJpYWJsZUdsb2JhbC5Ib2JWYXJpYWJsZUJhc2UgPT0gMCkgew0KPiA+ Pj4+PiArICAgICAgICAgIFZhcmlhYmxlQ2FjaGVDb250ZXh0LQ0KPiA+Pj4+Pj4gVmFyaWFibGVS dW50aW1lSG9iQ2FjaGUuUGVuZGluZ1VwZGF0ZU9mZnNldCA9IDA7DQo+ID4+Pj4+ICsgICAgICAg ICAgVmFyaWFibGVDYWNoZUNvbnRleHQtDQo+ID4+Pj4+PiBWYXJpYWJsZVJ1bnRpbWVIb2JDYWNo ZS5QZW5kaW5nVXBkYXRlTGVuZ3RoID0gMDsNCj4gPj4+Pj4gKyAgICAgICAgfSBlbHNlIHsNCj4g Pj4+Pj4gKyAgICAgICAgICBWYXJpYWJsZUNhY2hlID0gKFZBUklBQkxFX1NUT1JFX0hFQURFUiAq KQ0KPiA+Pj4gKFVJTlROKQ0KPiA+Pj4+PiBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4g VmFyaWFibGVHbG9iYWwuSG9iVmFyaWFibGVCYXNlOw0KPiA+Pj4+PiArICAgICAgICAgIFZhcmlh YmxlQ2FjaGVDb250ZXh0LQ0KPiA+Pj4+Pj4gVmFyaWFibGVSdW50aW1lSG9iQ2FjaGUuUGVuZGlu Z1VwZGF0ZU9mZnNldCA9IDA7DQo+ID4+Pj4+ICsgICAgICAgICAgVmFyaWFibGVDYWNoZUNvbnRl eHQtDQo+ID4+Pj4+PiBWYXJpYWJsZVJ1bnRpbWVIb2JDYWNoZS5QZW5kaW5nVXBkYXRlTGVuZ3Ro ID0NCj4gPj4+IChVSU5UMzIpICgoVUlOVE4pDQo+ID4+Pj4+IEdldEVuZFBvaW50ZXIgKFZhcmlh YmxlQ2FjaGUpIC0gKFVJTlROKQ0KPiA+Pj4gVmFyaWFibGVDYWNoZSk7DQo+ID4+Pj4+ICsgICAg ICAgICAgQ29weUd1aWQgKCYoVmFyaWFibGVDYWNoZUNvbnRleHQtDQo+ID4+Pj4+PiBWYXJpYWJs ZVJ1bnRpbWVIb2JDYWNoZS5TdG9yZS0+U2lnbmF0dXJlKSwNCj4gPj4+ICYoVmFyaWFibGVDYWNo ZS0NCj4gPj4+Pj4+IFNpZ25hdHVyZSkpOw0KPiA+Pj4+PiArICAgICAgICB9DQo+ID4+Pj4+ICsg ICAgICAgIFZhcmlhYmxlQ2FjaGUgPSAoVkFSSUFCTEVfU1RPUkVfSEVBREVSICAqKQ0KPiA+Pj4g KFVJTlROKQ0KPiA+Pj4+PiBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4gVmFyaWFibGVH bG9iYWwuVm9sYXRpbGVWYXJpYWJsZUJhc2U7DQo+ID4+Pj4+ICsgICAgICAgIFZhcmlhYmxlQ2Fj aGVDb250ZXh0LQ0KPiA+Pj4+Pj4gVmFyaWFibGVSdW50aW1lVm9sYXRpbGVDYWNoZS5QZW5kaW5n VXBkYXRlT2Zmc2V0DQo+ID4+PiA9IDA7DQo+ID4+Pj4+ICsgICAgICAgIFZhcmlhYmxlQ2FjaGVD b250ZXh0LQ0KPiA+Pj4+Pj4gVmFyaWFibGVSdW50aW1lVm9sYXRpbGVDYWNoZS5QZW5kaW5nVXBk YXRlTGVuZ3RoDQo+ID4+PiA9IChVSU5UMzIpDQo+ID4+Pj4gKChVSU5UTikNCj4gPj4+Pj4gR2V0 RW5kUG9pbnRlciAoVmFyaWFibGVDYWNoZSkgLSAoVUlOVE4pDQo+ID4+PiBWYXJpYWJsZUNhY2hl KTsNCj4gPj4+Pj4gKyAgICAgICAgQ29weUd1aWQgKCYoVmFyaWFibGVDYWNoZUNvbnRleHQtDQo+ ID4+Pj4+PiBWYXJpYWJsZVJ1bnRpbWVWb2xhdGlsZUNhY2hlLlN0b3JlLT5TaWduYXR1cmUpLA0K PiA+Pj4gJihWYXJpYWJsZUNhY2hlLQ0KPiA+Pj4+Pj4gU2lnbmF0dXJlKSk7DQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKyAgICAgICAgVmFyaWFibGVDYWNoZSA9IChWQVJJQUJMRV9TVE9SRV9IRUFERVIg ICopDQo+ID4+PiAoVUlOVE4pDQo+ID4+Pj4+IG1OdlZhcmlhYmxlQ2FjaGU7DQo+ID4+Pj4+ICsg ICAgICAgIFZhcmlhYmxlQ2FjaGVDb250ZXh0LQ0KPiA+Pj4+Pj4gVmFyaWFibGVSdW50aW1lTnZD YWNoZS5QZW5kaW5nVXBkYXRlT2Zmc2V0ID0gMDsNCj4gPj4+Pj4gKyAgICAgICAgVmFyaWFibGVD YWNoZUNvbnRleHQtDQo+ID4+Pj4+PiBWYXJpYWJsZVJ1bnRpbWVOdkNhY2hlLlBlbmRpbmdVcGRh dGVMZW5ndGggPQ0KPiA+Pj4gKFVJTlQzMikgKChVSU5UTikNCj4gPj4+Pj4gR2V0RW5kUG9pbnRl ciAoVmFyaWFibGVDYWNoZSkgLSAoVUlOVE4pDQo+ID4+PiBWYXJpYWJsZUNhY2hlKTsNCj4gPj4+ Pj4gKyAgICAgICAgQ29weUd1aWQgKCYoVmFyaWFibGVDYWNoZUNvbnRleHQtDQo+ID4+Pj4+IFZh cmlhYmxlUnVudGltZU52Q2FjaGUuU3RvcmUtDQo+ID4+Pj4+PiBTaWduYXR1cmUpLCAmKFZhcmlh YmxlQ2FjaGUtPlNpZ25hdHVyZSkpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgICooVmFy aWFibGVDYWNoZUNvbnRleHQtPlBlbmRpbmdVcGRhdGUpID0NCj4gPj4+IFRSVUU7DQo+ID4+Pj4+ ICsgICAgICAgICooVmFyaWFibGVDYWNoZUNvbnRleHQtPlJlYWRMb2NrKSA9IEZBTFNFOw0KPiA+ Pj4+PiArICAgICAgICAqKFZhcmlhYmxlQ2FjaGVDb250ZXh0LT5Ib2JGbHVzaENvbXBsZXRlKSA9 DQo+ID4+PiBGQUxTRTsNCj4gPj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4gKyAgICAgIFN0YXR1cyA9 IEVGSV9TVUNDRVNTOw0KPiA+Pj4+PiArICAgICAgYnJlYWs7DQo+ID4+Pj4+ICsgICAgY2FzZSBT TU1fVkFSSUFCTEVfRlVOQ1RJT05fU1lOQ19SVU5USU1FX0NBQ0hFOg0KPiA+Pj4+PiArICAgICAg U3RhdHVzID0gU3luY2hyb25pemVSdW50aW1lVmFyaWFibGVDYWNoZUV4DQo+ID4+PiAoKTsNCj4g Pj4+Pj4gKyAgICAgIGJyZWFrOw0KPiA+Pj4+PiArICAgIGNhc2UNCj4gPj4+IFNNTV9WQVJJQUJM RV9GVU5DVElPTl9HRVRfUlVOVElNRV9DQUNIRV9JTkZPOg0KPiA+Pj4+PiArICAgICAgaWYgKENv bW1CdWZmZXJQYXlsb2FkU2l6ZSA8IHNpemVvZg0KPiA+Pj4+PiAoU01NX1ZBUklBQkxFX0NPTU1V TklDQVRFX0dFVF9SVU5USU1FX0NBQ0hFX0lORk8pKSB7DQo+ID4+Pj4+ICsgICAgICAgIERFQlVH ICgoREVCVUdfRVJST1IsICJHZXRSdW50aW1lQ2FjaGVJbmZvOg0KPiA+Pj4gU01NDQo+ID4+Pj4g Y29tbXVuaWNhdGlvbg0KPiA+Pj4+PiBidWZmZXIgc2l6ZSBpbnZhbGlkIVxuIikpOw0KPiA+Pj4+ PiArICAgICAgICByZXR1cm4gRUZJX1NVQ0NFU1M7DQo+ID4+Pj4+ICsgICAgICB9DQo+ID4+Pj4+ ICsgICAgICBHZXRSdW50aW1lQ2FjaGVJbmZvID0NCj4gPj4+Pj4gKFNNTV9WQVJJQUJMRV9DT01N VU5JQ0FURV9HRVRfUlVOVElNRV9DQUNIRV9JTkZPICopDQo+ID4+Pj4+IFNtbVZhcmlhYmxlRnVu Y3Rpb25IZWFkZXItPkRhdGE7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgIGlmIChtVmFyaWFi bGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuSG9iVmFyaWFibGVCYXNlID4g MCkgew0KPiA+Pj4+PiArICAgICAgICBWYXJpYWJsZUNhY2hlID0gKFZBUklBQkxFX1NUT1JFX0hF QURFUiAqKQ0KPiA+Pj4gKFVJTlROKQ0KPiA+Pj4+PiBtVmFyaWFibGVNb2R1bGVHbG9iYWwtDQo+ ID4+Pj4gVmFyaWFibGVHbG9iYWwuSG9iVmFyaWFibGVCYXNlOw0KPiA+Pj4+PiArICAgICAgICBH ZXRSdW50aW1lQ2FjaGVJbmZvLT5Ub3RhbEhvYlN0b3JhZ2VTaXplID0NCj4gPj4+IFZhcmlhYmxl Q2FjaGUtPlNpemU7DQo+ID4+Pj4+ICsgICAgICB9IGVsc2Ugew0KPiA+Pj4+PiArICAgICAgICBH ZXRSdW50aW1lQ2FjaGVJbmZvLT5Ub3RhbEhvYlN0b3JhZ2VTaXplID0NCj4gPj4+IDA7DQo+ID4+ Pj4+ICsgICAgICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgIFZhcmlhYmxlQ2FjaGUgPSAo VkFSSUFCTEVfU1RPUkVfSEVBREVSICAqKQ0KPiA+Pj4gKFVJTlROKQ0KPiA+Pj4+PiBtVmFyaWFi bGVNb2R1bGVHbG9iYWwtDQo+ID4+Pj4gVmFyaWFibGVHbG9iYWwuVm9sYXRpbGVWYXJpYWJsZUJh c2U7DQo+ID4+Pj4+ICsgICAgICBHZXRSdW50aW1lQ2FjaGVJbmZvLT5Ub3RhbFZvbGF0aWxlU3Rv cmFnZVNpemUNCj4gPj4+ID0gVmFyaWFibGVDYWNoZS0NCj4gPj4+Pj4gU2l6ZTsNCj4gPj4+Pj4g KyAgICAgIFZhcmlhYmxlQ2FjaGUgPSAoVkFSSUFCTEVfU1RPUkVfSEVBREVSICAqKQ0KPiA+Pj4g KFVJTlROKQ0KPiA+Pj4+PiBtTnZWYXJpYWJsZUNhY2hlOw0KPiA+Pj4+PiArICAgICAgR2V0UnVu dGltZUNhY2hlSW5mby0+VG90YWxOdlN0b3JhZ2VTaXplID0NCj4gPj4+IChVSU5UTikgVmFyaWFi bGVDYWNoZS0NCj4gPj4+Pj4+IFNpemU7DQo+ID4+Pj4+ICsgICAgICBHZXRSdW50aW1lQ2FjaGVJ bmZvLQ0KPiA+Pj4+IEF1dGhlbnRpY2F0ZWRWYXJpYWJsZVVzYWdlID0NCj4gPj4+Pj4gbVZhcmlh YmxlTW9kdWxlR2xvYmFsLT5WYXJpYWJsZUdsb2JhbC5BdXRoRm9ybWF0Ow0KPiA+Pj4+PiArDQo+ ID4+Pj4+ICsgICAgICBTdGF0dXMgPSBFRklfU1VDQ0VTUzsNCj4gPj4+Pj4gKyAgICAgIGJyZWFr Ow0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICAgIGRlZmF1bHQ6DQo+ID4+Pj4+ICAgICAgICBTdGF0dXMg PSBFRklfVU5TVVBQT1JURUQ7DQo+ID4+Pj4+IGRpZmYgLS1naXQNCj4gPj4+Pj4NCj4gPj4+Pg0K PiA+Pj4gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFi bGVTbW0NCj4gPj4+IFJ1bnRpbWVEeA0KPiA+Pj4+PiBlLmMNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+ Pj4gYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL1ZhcmlhYmxlL1J1bnRpbWVEeGUvVmFyaWFibGVT bW0NCj4gPj4+IFJ1bnRpbWVEeA0KPiA+Pj4+PiBlLmMNCj4gPj4+Pj4gaW5kZXggMGExODg4ZTVl Zi4uNDZmNjk3NjVhNCAxMDA2NDQNCj4gPj4+Pj4gLS0tDQo+ID4+Pj4+DQo+ID4+Pj4NCj4gPj4+ IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9WYXJpYWJsZS9SdW50aW1lRHhlL1ZhcmlhYmxlU21t DQo+ID4+PiBSdW50aW1lRHgNCj4gPj4+Pj4gZS5jDQo+ID4+Pj4+ICsrKw0KPiA+Pj4+Pg0KPiA+ Pj4+DQo+ID4+PiBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvVmFyaWFibGUvUnVudGltZUR4ZS9W YXJpYWJsZVNtbQ0KPiA+Pj4gUnVudGltZUR4DQo+ID4+Pj4+IGUuYw0KPiA+Pj4+PiBAQCAtMTMs NyArMTMsNyBAQA0KPiA+Pj4+Pg0KPiA+Pj4+PiAgICBJbml0Q29tbXVuaWNhdGVCdWZmZXIoKSBp cyByZWFsbHkgZnVuY3Rpb24gdG8NCj4gPj4+IGNoZWNrIHRoZSB2YXJpYWJsZSBkYXRhIHNpemUu DQo+ID4+Pj4+DQo+ID4+Pj4+IC1Db3B5cmlnaHQgKGMpIDIwMTAgLSAyMDE3LCBJbnRlbCBDb3Jw b3JhdGlvbi4gQWxsDQo+ID4+PiByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KPiA+Pj4+PiArQ29weXJp Z2h0IChjKSAyMDEwIC0gMjAxOSwgSW50ZWwgQ29ycG9yYXRpb24uIEFsbA0KPiA+Pj4gcmlnaHRz IHJlc2VydmVkLjxCUj4NCj4gPj4+Pj4gIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1D bGF1c2UtUGF0ZW50DQo+ID4+Pj4+DQo+ID4+Pj4+ICAqKi8NCj4gPj4+Pj4gQEAgLTMyLDEzICsz MiwxNiBAQCBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItDQo+ID4+PiBDbGF1c2UtUGF0 ZW50DQo+ID4+Pj4+ICAjaW5jbHVkZSA8TGlicmFyeS9VZWZpUnVudGltZUxpYi5oPg0KPiA+Pj4+ PiAgI2luY2x1ZGUgPExpYnJhcnkvQmFzZU1lbW9yeUxpYi5oPg0KPiA+Pj4+PiAgI2luY2x1ZGUg PExpYnJhcnkvRGVidWdMaWIuaD4NCj4gPj4+Pj4gKyNpbmNsdWRlIDxMaWJyYXJ5L1RpbWVyTGli Lmg+DQo+ID4+Pj4+ICAjaW5jbHVkZSA8TGlicmFyeS9VZWZpTGliLmg+DQo+ID4+Pj4+ICAjaW5j bHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4+Pj4+DQo+ID4+Pj4+ICAjaW5jbHVkZSA8R3Vp ZC9FdmVudEdyb3VwLmg+DQo+ID4+Pj4+ICsjaW5jbHVkZSA8R3VpZC9QaVNtbUNvbW11bmljYXRp b25SZWdpb25UYWJsZS5oPg0KPiA+Pj4+PiAgI2luY2x1ZGUgPEd1aWQvU21tVmFyaWFibGVDb21t b24uaD4NCj4gPj4+Pj4NCj4gPj4+Pj4gICNpbmNsdWRlICJQcml2aWxlZ2VQb2x5bW9ycGhpYy5o Ig0KPiA+Pj4+PiArI2luY2x1ZGUgIlZhcmlhYmxlUGFyc2luZy5oIg0KPiA+Pj4+Pg0KPiA+Pj4+ PiAgRUZJX0hBTkRMRSAgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZQ0KPiA+Pj4gPSBOVUxM Ow0KPiA+Pj4+PiAgRUZJX1NNTV9WQVJJQUJMRV9QUk9UT0NPTCAgICAgICAqbVNtbVZhcmlhYmxl DQo+ID4+PiA9IE5VTEw7DQo+ID4+Pj4+IEBAIC00Niw4ICs0OSwxOSBAQCBFRklfRVZFTlQNCj4g Pj4+IG1WaXJ0dWFsQWRkcmVzc0NoYW5nZUV2ZW50DQo+ID4+Pj4gPQ0KPiA+Pj4+PiBOVUxMOw0K PiA+Pj4+PiAgRUZJX1NNTV9DT01NVU5JQ0FUSU9OX1BST1RPQ09MICAqbVNtbUNvbW11bmljYXRp b24NCj4gPj4+ID0NCj4gPj4+Pj4gTlVMTDsNCj4gPj4+Pj4gIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICAgICAgICAgKm1WYXJpYWJsZUJ1ZmZlcg0KPiA+Pj4gPSBOVUxMOw0KPiA+Pj4+PiAgVUlO VDgNCj4gPj4+ICptVmFyaWFibGVCdWZmZXJQaHlzaWNhbCAgICA9IE5VTEw7DQo+ID4+Pj4+ICtW QVJJQUJMRV9JTkZPX0VOVFJZICAgICAgICAgICAgICptVmFyaWFibGVJbmZvDQo+ID4+PiA9IE5V TEw7DQo+ID4+Pj4+ICtWQVJJQUJMRV9TVE9SRV9IRUFERVINCj4gPj4+ICptVmFyaWFibGVSdW50 aW1lSG9iQ2FjaGVCdWZmZXINCj4gPj4+PiA9DQo+ID4+Pj4+IE5VTEw7DQo+ID4+Pj4+ICtWQVJJ QUJMRV9TVE9SRV9IRUFERVINCj4gPj4+ICptVmFyaWFibGVSdW50aW1lTnZDYWNoZUJ1ZmZlcg0K PiA+Pj4+ID0NCj4gPj4+Pj4gTlVMTDsNCj4gPj4+Pj4gK1ZBUklBQkxFX1NUT1JFX0hFQURFUg0K PiA+Pj4gKm1WYXJpYWJsZVJ1bnRpbWVWb2xhdGlsZUNhY2hlQnVmZmVyDQo+ID4+Pj4+ID0gTlVM TDsNCj4gPj4+Pj4gIFVJTlRODQo+ID4+PiBtVmFyaWFibGVCdWZmZXJTaXplOw0KPiA+Pj4+PiAr VUlOVE4NCj4gPj4+IG1WYXJpYWJsZVJ1bnRpbWVIb2JDYWNoZUJ1ZmZlclNpemU7DQo+ID4+Pj4+ ICtVSU5UTg0KPiA+Pj4gbVZhcmlhYmxlUnVudGltZU52Q2FjaGVCdWZmZXJTaXplOw0KPiA+Pj4+ PiArVUlOVE4NCj4gPj4+IG1WYXJpYWJsZVJ1bnRpbWVWb2xhdGlsZUNhY2hlQnVmZmVyU2l6ZTsN Cj4gPj4+Pj4gIFVJTlRODQo+ID4+PiBtVmFyaWFibGVCdWZmZXJQYXlsb2FkU2l6ZTsNCj4gPj4+ Pj4gK0JPT0xFQU4NCj4gPj4+IG1WYXJpYWJsZVJ1bnRpbWVDYWNoZVBlbmRpbmdVcGRhdGU7DQo+ ID4+Pj4+ICtCT09MRUFODQo+ID4+PiBtVmFyaWFibGVSdW50aW1lQ2FjaGVSZWFkTG9jazsNCj4g Pj4+Pj4gK0JPT0xFQU4NCj4gPj4+IG1WYXJpYWJsZUF1dGhGb3JtYXQ7DQo+ID4+Pj4+ICtCT09M RUFOICAgICAgICAgICAgICAgICAgICAgICAgICBtSG9iRmx1c2hDb21wbGV0ZTsNCj4gPj4+Pj4g IEVGSV9MT0NLDQo+ID4+PiBtVmFyaWFibGVTZXJ2aWNlc0xvY2s7DQo+ID4+Pj4+ICBFREtJSV9W QVJJQUJMRV9MT0NLX1BST1RPQ09MICAgICBtVmFyaWFibGVMb2NrOw0KPiA+Pj4+PiAgRURLSUlf VkFSX0NIRUNLX1BST1RPQ09MICAgICAgICAgbVZhckNoZWNrOw0KPiA+Pj4+PiBAQCAtMTA3LDYg KzEyMSw3MyBAQCBSZWxlYXNlTG9ja09ubHlBdEJvb3RUaW1lICgNCj4gPj4+Pj4gICAgfQ0KPiA+ Pj4+PiAgfQ0KPiA+Pj4+Pg0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIFJldHVybiBUUlVFIGlm IEV4aXRCb290U2VydmljZXMgKCkgaGFzIGJlZW4NCj4gPj4+IGNhbGxlZC4NCj4gPj4+Pj4gKw0K PiA+Pj4+PiArICBAcmV0dmFsIFRSVUUgSWYgRXhpdEJvb3RTZXJ2aWNlcyAoKSBoYXMgYmVlbg0K PiA+Pj4gY2FsbGVkLg0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtCT09MRUFODQo+ID4+Pj4+ICtB dFJ1bnRpbWUgKA0KPiA+Pj4+PiArICBWT0lEDQo+ID4+Pj4+ICsgICkNCj4gPj4+Pg0KPiA+Pj4+ DQo+ID4+Pj4gSSB0aGluayB3ZSBjYW4gZWl0aGVyOg0KPiA+Pj4+IDEuIFVzZSBFZmlBdFJ1bnRp bWUoKSBmb3IgVmFyaWFibGVTbW1SdW50aW1lRHhlDQo+ID4+Pj4gMi4gTW92ZSBBdFJ1bnRpbWUo KSB0byBWYXJpYWJsZVBhcnNpbmcuYyBzbyB0aGF0IHRoZQ0KPiA+Pj4gZnVuY3Rpb24gY2FuIGJl IHNoYXJlZA0KPiA+Pj4+ICAgIHdpdGggVmFyaWFibGVSdW50aW1lRHhlICYgVmFyaWFibGVTbW1S dW50aW1lRHhlLg0KPiA+Pj4gQW5kIHRoZW4gdXBkYXRlDQo+ID4+Pj4gdGhlDQo+ID4+Pj4gICAg RWZpQXRSdW50aW1lKCkgdXNhZ2VzIHRvIEF0UnVudGltZSgpIGZvcg0KPiA+Pj4gVmFyaWFibGVT bW1SdW50aW1lRHhlLg0KPiA+Pj4+DQo+ID4+Pj4NCj4gPj4+DQo+ID4+PiAjMSB3aWxsIHdvcmsg ZmluZS4NCj4gPj4+DQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsgIHJldHVybiBFZmlBdFJ1bnRpbWUg KCk7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBJbml0 aWFsaXplIHRoZSB2YXJpYWJsZSBjYWNoZSBidWZmZXIgYXMgYW4gZW1wdHkNCj4gPj4+IHZhcmlh YmxlIHN0b3JlLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtvdXRdICAgICBWYXJpYWJs ZUNhY2hlQnVmZmVyICAgICBBIHBvaW50ZXINCj4gPj4+IHRvIHBvaW50ZXIgb2YgYSBjYWNoZQ0K PiA+Pj4+PiB2YXJpYWJsZSBzdG9yZS4NCj4gPj4+Pj4gKyAgQHBhcmFtW2luLG91dF0gIFRvdGFs VmFyaWFibGVDYWNoZVNpemUgIE9uIGlucHV0LA0KPiA+Pj4gdGhlIG1pbmltdW0gc2l6ZQ0KPiA+ Pj4+PiBuZWVkZWQgZm9yIHRoZSBVRUZJIHZhcmlhYmxlIHN0b3JlIGNhY2hlDQo+ID4+Pj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXINCj4gPj4+IHRo YXQgaXMgYWxsb2NhdGVkLiBPbiBvdXRwdXQsIHRoZSBhY3R1YWwgc2l6ZSBvZg0KPiA+Pj4+PiB0 aGUgYnVmZmVyIGFsbG9jYXRlZC4NCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIElmDQo+ID4+PiBUb3RhbFZhcmlhYmxlQ2FjaGVTaXplIGlzIHplcm8s IGEgYnVmZmVyIHdpbGwgbm90IGJlDQo+ID4+Pj4+IGFsbG9jYXRlZCBhbmQgdGhlDQo+ID4+Pj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jdGlvbg0KPiA+ Pj4gd2lsbCByZXR1cm4gd2l0aCBFRklfU1VDQ0VTUy4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBA cmV0dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgIFRoZSB2YXJpYWJsZQ0KPiA+Pj4gY2FjaGUg d2FzIGFsbG9jYXRlZCBhbmQNCj4gPj4+PiBpbml0aWFsaXplZA0KPiA+Pj4+PiBzdWNjZXNzZnVs bHkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAgQSBnaXZlbiBw b2ludGVyDQo+ID4+PiBpcyBOVUxMIG9yIGFuIGludmFsaWQNCj4gPj4+Pj4gdmFyaWFibGUgc3Rv cmUgc2l6ZSB3YXMgc3BlY2lmaWVkLg0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9PVVRfT0ZfUkVT T1VSQ0VTICAgIEluc3VmZmljaWVudA0KPiA+Pj4gcmVzb3VyY2VzIGFyZSBhdmFpbGFibGUNCj4g Pj4+PiB0bw0KPiA+Pj4+PiBhbGxvY2F0ZSB0aGUgdmFyaWFibGUgc3RvcmUgY2FjaGUgYnVmZmVy Lg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+Pj4g K0VGSUFQSQ0KPiA+Pj4+PiArSW5pdFZhcmlhYmxlQ2FjaGUgKA0KPiA+Pj4+PiArICBPVVQgICAg VkFSSUFCTEVfU1RPUkVfSEVBREVSDQo+ID4+PiAqKlZhcmlhYmxlQ2FjaGVCdWZmZXIsDQo+ID4+ Pj4+ICsgIElOIE9VVCBVSU5UTg0KPiA+Pj4gKlRvdGFsVmFyaWFibGVDYWNoZVNpemUNCj4gPj4+ Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICBWQVJJQUJMRV9TVE9SRV9IRUFERVIgICAq VmFyaWFibGVDYWNoZVN0b3JlUHRyOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlmIChUb3RhbFZh cmlhYmxlQ2FjaGVTaXplID09IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICByZXR1cm4gRUZJX0lOVkFM SURfUEFSQU1FVEVSOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsgIGlmICgqVG90YWxWYXJpYWJs ZUNhY2hlU2l6ZSA9PSAwKSB7DQo+ID4+Pj4+ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+ Pj4+PiArICB9DQo+ID4+Pj4+ICsgIGlmIChWYXJpYWJsZUNhY2hlQnVmZmVyID09IE5VTEwgfHwN Cj4gPj4+ICpUb3RhbFZhcmlhYmxlQ2FjaGVTaXplIDwgc2l6ZW9mDQo+ID4+Pj4+IChWQVJJQUJM RV9TVE9SRV9IRUFERVIpKSB7DQo+ID4+Pj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArICAqVG90YWxWYXJpYWJsZUNhY2hlU2l6ZSA9 IEFMSUdOX1ZBTFVFDQo+ID4+PiAoKlRvdGFsVmFyaWFibGVDYWNoZVNpemUsDQo+ID4+Pj4gc2l6 ZW9mDQo+ID4+Pj4+IChVSU5UMzIpKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+ PiArICAvLyBBbGxvY2F0ZSBOViBTdG9yYWdlIENhY2hlIGFuZCBpbml0aWFsaXplIGl0IHRvDQo+ ID4+PiBhbGwgMSdzIChsaWtlIGFuIGVyYXNlZCBGVikNCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4g KyAgKlZhcmlhYmxlQ2FjaGVCdWZmZXIgPSAgKFZBUklBQkxFX1NUT1JFX0hFQURFUiAqKQ0KPiA+ Pj4+PiBBbGxvY2F0ZVJ1bnRpbWVQYWdlcyAoDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX1NJWkVfVE9fUEFHRVMNCj4gPj4+ICgqVG90YWxWYXJpYWJsZUNhY2hlU2l6 ZSkNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApOw0KPiA+Pj4+PiArICBp ZiAoKlZhcmlhYmxlQ2FjaGVCdWZmZXIgPT0gTlVMTCkgew0KPiA+Pj4+PiArICAgIHJldHVybiBF RklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArICBWYXJpYWJsZUNh Y2hlU3RvcmVQdHIgPSAqVmFyaWFibGVDYWNoZUJ1ZmZlcjsNCj4gPj4+Pj4gKyAgU2V0TWVtMzIg KChWT0lEICopIFZhcmlhYmxlQ2FjaGVTdG9yZVB0ciwNCj4gPj4+ICpUb3RhbFZhcmlhYmxlQ2Fj aGVTaXplLA0KPiA+Pj4+PiAoVUlOVDMyKSAweEZGRkZGRkZGKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+ PiArICBaZXJvTWVtICgoVk9JRCAqKSBWYXJpYWJsZUNhY2hlU3RvcmVQdHIsIHNpemVvZg0KPiA+ Pj4+PiAoVkFSSUFCTEVfU1RPUkVfSEVBREVSKSk7DQo+ID4+Pj4+ICsgIFZhcmlhYmxlQ2FjaGVT dG9yZVB0ci0+U2l6ZSAgICA9IChVSU5UMzIpDQo+ID4+PiAqVG90YWxWYXJpYWJsZUNhY2hlU2l6 ZTsNCj4gPj4+Pj4gKyAgVmFyaWFibGVDYWNoZVN0b3JlUHRyLT5Gb3JtYXQgID0NCj4gPj4+IFZB UklBQkxFX1NUT1JFX0ZPUk1BVFRFRDsNCj4gPj4+Pj4gKyAgVmFyaWFibGVDYWNoZVN0b3JlUHRy LT5TdGF0ZSAgID0NCj4gPj4+IFZBUklBQkxFX1NUT1JFX0hFQUxUSFk7DQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKyAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+ Pj4+ICAvKioNCj4gPj4+Pj4gICAgSW5pdGlhbGl6ZSB0aGUgY29tbXVuaWNhdGUgYnVmZmVyIHVz aW5nIERhdGFTaXplDQo+ID4+PiBhbmQgRnVuY3Rpb24uDQo+ID4+Pj4+DQo+ID4+Pj4+IEBAIC0x NTMsNiArMjM0LDY5IEBAIEluaXRDb21tdW5pY2F0ZUJ1ZmZlciAoDQo+ID4+Pj4+ICB9DQo+ID4+ Pj4+DQo+ID4+Pj4+DQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgR2V0cyBhIFNNTSBjb21tdW5p Y2F0ZSBidWZmZXIgZnJvbSB0aGUNCj4gPj4+Pj4gRURLSUlfUElfU01NX0NPTU1VTklDQVRJT05f UkVHSU9OX1RBQkxFIGluc3RhbGxlZCBhcw0KPiA+Pj4gYW4gZW50cnkgaW4NCj4gPj4+Pj4gdGhl IFVFRkkNCj4gPj4+Pj4gKyAgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdGFibGUuIEEgZ2VuZXJpYyBT TU0NCj4gPj4+IGNvbW11bmljYXRpb24gYnVmZmVyIERYRQ0KPiA+Pj4+PiBkcml2ZXIgbWF5IGlu c3RhbGwgdGhlIHRhYmxlIG9yIGEgY3VzdG9tIHRhYmxlDQo+ID4+Pj4+ICsgIG1heSBiZSBpbnN0 YWxsZWQgYnkgYSBwbGF0Zm9ybS1zcGVjaWZpYyBkcml2ZXIuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4g KyAgVGhlIGNvbW11bmljYXRlIHNpemUgaXM6DQo+ID4+PiBTTU1fQ09NTVVOSUNBVEVfSEVBREVS X1NJWkUgKw0KPiA+Pj4+PiBTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfSEVBREVSX1NJWkUgKw0K PiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgIERhdGFTaXplLg0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgIEBwYXJhbVtpbixvdXRdICAgQ29tbUJ1ZmZlclNpemUgICBPbiBpbnB1dCwg dGhlDQo+ID4+PiBtaW5pbXVtIHNpemUgbmVlZGVkDQo+ID4+Pj4+IGZvciB0aGUgY29tbXVuaWNh dGlvbiBidWZmZXIuDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBPbiBvdXRwdXQsIHRoZQ0KPiA+Pj4gU01NIGJ1ZmZlciBzaXplIGF2YWlsYWJsZSBhdA0KPiA+ Pj4+IENvbW1CdWZmZXIuDQo+ID4+Pj4+ICsgIEBwYXJhbVtvdXRdICAgICAgQ29tbUJ1ZmZlciAg ICAgICBBIHBvaW50ZXIgdG8gYW4NCj4gPj4+IFNNTSBjb21tdW5pY2F0aW9uDQo+ID4+Pj4+IGJ1 ZmZlciBwb2ludGVyLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1Mg ICAgICAgICAgICAgICBUaGUNCj4gPj4+IGNvbW11bmljYXRpb24gYnVmZmVyIHdhcyBmb3VuZA0K PiA+Pj4+PiBzdWNjZXNzZnVsbHkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFS QU1FVEVSICAgICBBIGdpdmVuIHBvaW50ZXINCj4gPj4+IGlzIE5VTEwgb3IgdGhlDQo+ID4+Pj4+ IENvbW1CdWZmZXJTaXplIGlzIHplcm8uDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX05PVF9GT1VO RCAgICAgICAgICAgICBUaGUNCj4gPj4+Pj4gRURLSUlfUElfU01NX0NPTU1VTklDQVRJT05fUkVH SU9OX1RBQkxFIHdhcyBub3QNCj4gPj4+IGZvdW5kLg0KPiA+Pj4+PiArICBAcmV0dmFsIEVGSV9P VVRfT0ZfUkVTT1VSQ0VTICAgICAgQSB2YWxpZCBTTU0NCj4gPj4+IGNvbW11bmljYXRlIGJ1ZmZl cg0KPiA+Pj4+IGZvcg0KPiA+Pj4+PiB0aGUgcmVxdWVzdGVkIHNpemUgaXMgbm90IGF2YWlsYWJs ZS4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ ICtHZXRDb21tdW5pY2F0ZUJ1ZmZlciAoDQo+ID4+Pj4+ICsgIElOIE9VVCAgVUlOVE4gICAgICpD b21tQnVmZmVyU2l6ZSwNCj4gPj4+Pj4gKyAgT1VUICAgICBVSU5UOCAgICAgKipDb21tQnVmZmVy DQo+ID4+Pj4+ICsgICkNCj4gPj4+Pg0KPiA+Pj4+DQo+ID4+Pj4gTWlub3IgY29tbWVudDoNCj4g Pj4+Pg0KPiA+Pj4+IEkgZm91bmQgdGhhdCB0aGUgY29uc3VtZXJzIG9mIHRoZSBhYm92ZSBmdW5j dGlvbiBhcmU6DQo+ID4+Pj4gR2V0UnVudGltZUNhY2hlSW5mbygpDQo+ID4+Pj4gU2VuZFJ1bnRp bWVWYXJpYWJsZUNhY2hlQ29udGV4dFRvU21tKCkNCj4gPj4+Pg0KPiA+Pj4+IEJvdGggb2YgdGhl bSBnZXQgY2FsbGVkIHdpdGhpbiBTbW1WYXJpYWJsZVJlYWR5KCkgd2hlbg0KPiA+Pj4gdGhlIFNN TSB2YXJpYWJsZQ0KPiA+Pj4+IGRyaXZlcg0KPiA+Pj4+IGZpbmlzaGVkIGluaXRpYWxpemF0aW9u LiBJIGFtIHdvbmRlcmluZyBpZiB0aGV5IGNhbg0KPiA+Pj4gc2ltcGx5IHVzZSB0aGUgcHJlLWFs bG9jYXRlZA0KPiA+Pj4+IGNvbW0gYnVmZmVyICh2aWEgSW5pdENvbW11bmljYXRlQnVmZmVyKCkg YW5kIHVzaW5nDQo+ID4+PiAnbVZhcmlhYmxlQnVmZmVyJyksDQo+ID4+Pj4gaW5zdGVhZA0KPiA+ Pj4+IG9mIGxvb2tpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiB0YWJsZS4NCj4gPj4+Pg0KPiA+ Pj4+IEluIG15IG9waW5pb24sIHRoaXMgZnVuY3Rpb24gY2FuIGJlIGRyb3BwZWQuDQo+ID4+Pj4N Cj4gPj4+Pg0KPiA+Pj4NCj4gPj4+IEkgZGlkIHRoYXQgaW5pdGlhbGx5LiBJdCB3YXMgcmVjb21t ZW5kZWQgdG8gdXNlIHRoaXMNCj4gPj4+IG1ldGhvZC4NCj4gPj4+DQo+ID4+Pj4+ICt7DQo+ID4+ Pj4+ICsgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1czsN Cj4gPj4+Pj4gKyAgRURLSUlfUElfU01NX0NPTU1VTklDQVRJT05fUkVHSU9OX1RBQkxFDQo+ID4+ Pj4+ICpQaVNtbUNvbW11bmljYXRpb25SZWdpb25UYWJsZTsNCj4gPj4+Pj4gKyAgRUZJX01FTU9S WV9ERVNDUklQVE9SICAgICAgICAgICAgICAgICAgICAgKkVudHJ5Ow0KPiA+Pj4+PiArICBVSU5U Tg0KPiA+Pj4gRW50cnlTaXplOw0KPiA+Pj4+PiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBJbmRleDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoQ29tbUJ1 ZmZlciA9PSBOVUxMIHx8IENvbW1CdWZmZXJTaXplID09IE5VTEwNCj4gPj4+IHx8DQo+ID4+Pj4+ ICpDb21tQnVmZmVyU2l6ZSA9PSAwKSB7DQo+ID4+Pj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElE X1BBUkFNRVRFUjsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFN0YXR1cyA9 IEVmaUdldFN5c3RlbUNvbmZpZ3VyYXRpb25UYWJsZSAoDQo+ID4+Pj4+ICsNCj4gPj4+ICZnRWRr aWlQaVNtbUNvbW11bmljYXRpb25SZWdpb25UYWJsZUd1aWQsDQo+ID4+Pj4+ICsgICAgICAgICAg ICAgKFZPSUQgKiopDQo+ID4+PiAmUGlTbW1Db21tdW5pY2F0aW9uUmVnaW9uVGFibGUNCj4gPj4+ Pj4gKyAgICAgICAgICAgICApOw0KPiA+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpIHx8 DQo+ID4+PiBQaVNtbUNvbW11bmljYXRpb25SZWdpb25UYWJsZSA9PSBOVUxMKSB7DQo+ID4+Pj4+ ICsgICAgcmV0dXJuIEVGSV9OT1RfRk9VTkQ7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArICBFbnRyeSA9IChFRklfTUVNT1JZX0RFU0NSSVBUT1IgKikNCj4gPj4+PiAoUGlTbW1D b21tdW5pY2F0aW9uUmVnaW9uVGFibGUNCj4gPj4+Pj4gKyAxKTsNCj4gPj4+Pj4gKyAgRW50cnlT aXplID0gMDsNCj4gPj4+Pj4gKyAgZm9yIChJbmRleCA9IDA7IEluZGV4IDwNCj4gPj4+IFBpU21t Q29tbXVuaWNhdGlvblJlZ2lvblRhYmxlLQ0KPiA+Pj4+Pj4gTnVtYmVyT2ZFbnRyaWVzOyBJbmRl eCsrKSB7DQo+ID4+Pj4+ICsgICAgaWYgKEVudHJ5LT5UeXBlID09IEVmaUNvbnZlbnRpb25hbE1l bW9yeSkgew0KPiA+Pj4+PiArICAgICAgRW50cnlTaXplID0gRUZJX1BBR0VTX1RPX1NJWkUgKChV SU5UTikgRW50cnktDQo+ID4+Pj4gTnVtYmVyT2ZQYWdlcyk7DQo+ID4+Pj4+ICsgICAgICBpZiAo RW50cnlTaXplID49ICpDb21tQnVmZmVyU2l6ZSkgew0KPiA+Pj4+PiArICAgICAgICBicmVhazsN Cj4gPj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4gKyAgICB9DQo+ID4+Pj4+ICsgICAgRW50cnkgPSAo RUZJX01FTU9SWV9ERVNDUklQVE9SICopICgoVUlOVDggKikNCj4gPj4+IEVudHJ5ICsNCj4gPj4+ Pj4gUGlTbW1Db21tdW5pY2F0aW9uUmVnaW9uVGFibGUtPkRlc2NyaXB0b3JTaXplKTsNCj4gPj4+ Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlmIChJbmRleCA8IFBpU21tQ29tbXVuaWNh dGlvblJlZ2lvblRhYmxlLQ0KPiA+Pj4+IE51bWJlck9mRW50cmllcykgew0KPiA+Pj4+PiArICAg ICpDb21tQnVmZmVyU2l6ZSA9IEVudHJ5U2l6ZTsNCj4gPj4+Pj4gKyAgICAqQ29tbUJ1ZmZlciA9 IChVSU5UOCAqKSAoVUlOVE4pIEVudHJ5LQ0KPiA+Pj4+IFBoeXNpY2FsU3RhcnQ7DQo+ID4+Pj4+ ICsgICAgcmV0dXJuIEVGSV9TVUNDRVNTOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKyAgcmV0dXJuIEVGSV9PVVRfT0ZfUkVTT1VSQ0VTOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICAvKioNCj4gPj4+Pj4gICAgU2VuZCB0aGUgZGF0YSBpbiBjb21tdW5pY2F0ZSBi dWZmZXIgdG8gU01NLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBAQCAtNDI0LDYgKzU2OCwxNzEgQEAgRG9u ZToNCj4gPj4+Pj4gICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gIH0NCj4gPj4+Pj4NCj4gPj4+ Pj4gKy8qKg0KPiA+Pj4+PiArICBTaWduYWxzIFNNTSB0byBzeW5jaHJvbml6ZSBhbnkgcGVuZGlu ZyB2YXJpYWJsZQ0KPiA+Pj4gdXBkYXRlcyB3aXRoIHRoZQ0KPiA+Pj4+PiBydW50aW1lIGNhY2hl KHMpLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4gK1ZPSUQNCj4gPj4+Pj4gK0VG SUFQSQ0KPiA+Pj4+PiArU3luY1J1bnRpbWVDYWNoZSAoDQo+ID4+Pj4+ICsgIFZPSUQNCj4gPj4+ Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICAvLyBJbml0IHRo ZSBjb21tdW5pY2F0ZSBidWZmZXIuIFRoZSBidWZmZXIgZGF0YQ0KPiA+Pj4gc2l6ZSBpczoNCj4g Pj4+Pj4gKyAgLy8gU01NX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFICsNCj4gPj4+Pj4gU01NX1ZB UklBQkxFX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFLg0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiAr ICBJbml0Q29tbXVuaWNhdGVCdWZmZXIgKE5VTEwsIDAsDQo+ID4+Pj4+IFNNTV9WQVJJQUJMRV9G VU5DVElPTl9TWU5DX1JVTlRJTUVfQ0FDSEUpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIC8vDQo+ ID4+Pj4+ICsgIC8vIFNlbmQgZGF0YSB0byBTTU0uDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsg IFNlbmRDb21tdW5pY2F0ZUJ1ZmZlciAoMCk7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKy8qKg0KPiA+Pj4+PiArICBDaGVjayB3aGV0aGVyIGEgU01JIG11c3QgYmUgdHJpZ2dlcmVk IHRvIHJldHJpZXZlDQo+ID4+PiBwZW5kaW5nIGNhY2hlDQo+ID4+Pj4gdXBkYXRlcy4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICBJZiB0aGUgdmFyaWFibGUgSE9CIHdhcyBmaW5pc2hlZCBiZWluZyBm bHVzaGVkDQo+ID4+PiBzaW5jZSB0aGUgbGFzdCBjaGVjayBmb3IgYQ0KPiA+Pj4+PiBydW50aW1l IGNhY2hlIHVwZGF0ZSwgdGhpcyBmdW5jdGlvbg0KPiA+Pj4+PiArICB3aWxsIHByZXZlbnQgdGhl IEhPQiBjYWNoZSBmcm9tIGJlaW5nIHVzZWQgZm9yDQo+ID4+PiBmdXR1cmUgcnVudGltZSBjYWNo ZQ0KPiA+Pj4+IGhpdHMuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArVk9JRA0K PiA+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+ICtDaGVja0ZvclJ1bnRpbWVDYWNoZVN5bmMgKA0KPiA+ Pj4+PiArICBWT0lEDQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyAgaWYgKG1W YXJpYWJsZVJ1bnRpbWVDYWNoZVBlbmRpbmdVcGRhdGUpIHsNCj4gPj4+Pj4gKyAgICBTeW5jUnVu dGltZUNhY2hlICgpOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsgIEFTU0VSVCAoIW1WYXJpYWJs ZVJ1bnRpbWVDYWNoZVBlbmRpbmdVcGRhdGUpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIC8vDQo+ ID4+Pj4+ICsgIC8vIFRoZSBIT0IgdmFyaWFibGUgZGF0YSBtYXkgaGF2ZSBmaW5pc2hlZCBiZWlu Zw0KPiA+Pj4gZmx1c2hlZCBpbiB0aGUgcnVudGltZQ0KPiA+Pj4+PiBjYWNoZSBzeW5jIHVwZGF0 ZQ0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICBpZiAobUhvYkZsdXNoQ29tcGxldGUgJiYNCj4g Pj4+IG1WYXJpYWJsZVJ1bnRpbWVIb2JDYWNoZUJ1ZmZlciAhPSBOVUxMKQ0KPiA+Pj4+IHsNCj4g Pj4+Pj4gKyAgICBpZiAoIUF0UnVudGltZSAoKSkgew0KPiA+Pj4+PiArICAgICAgRnJlZVBvb2wg KG1WYXJpYWJsZVJ1bnRpbWVIb2JDYWNoZUJ1ZmZlcik7DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+ PiArICAgIG1WYXJpYWJsZVJ1bnRpbWVIb2JDYWNoZUJ1ZmZlciA9IE5VTEw7DQo+ID4+Pj4+ICsg IH0NCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIFRoaXMg Y29kZSBmaW5kcyB2YXJpYWJsZSBpbiBhIHZvbGF0aWxlIG1lbW9yeQ0KPiA+Pj4gc3RvcmUuDQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQ2F1dGlvbjogVGhpcyBmdW5jdGlvbiBtYXkgcmVjZWl2ZSB1 bnRydXN0ZWQNCj4gPj4+IGlucHV0Lg0KPiA+Pj4+PiArICBUaGUgZGF0YSBzaXplIGlzIGV4dGVy bmFsIGlucHV0LCBzbyB0aGlzIGZ1bmN0aW9uDQo+ID4+PiB3aWxsIHZhbGlkYXRlIGl0IGNhcmVm dWxseSB0bw0KPiA+Pj4+PiBhdm9pZCBidWZmZXIgb3ZlcmZsb3cuDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKyAgQHBhcmFtW2luXSAgICAgIFZhcmlhYmxlTmFtZSAgICAgICBOYW1lIG9mDQo+ID4+PiBW YXJpYWJsZSB0byBiZSBmb3VuZC4NCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSAgICAgIFZlbmRvckd1 aWQgICAgICAgICBWYXJpYWJsZQ0KPiA+Pj4gdmVuZG9yIEdVSUQuDQo+ID4+Pj4+ICsgIEBwYXJh bVtvdXRdICAgICBBdHRyaWJ1dGVzICAgICAgICAgQXR0cmlidXRlDQo+ID4+PiB2YWx1ZSBvZiB0 aGUgdmFyaWFibGUgZm91bmQuDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbiwgb3V0XSBEYXRhU2l6ZSAg ICAgICAgICAgU2l6ZSBvZiBEYXRhDQo+ID4+PiBmb3VuZC4gSWYgc2l6ZSBpcyBsZXNzIHRoYW4g dGhlDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSwg dGhpcw0KPiA+Pj4gdmFsdWUgY29udGFpbnMgdGhlIHJlcXVpcmVkIHNpemUuDQo+ID4+Pj4+ICsg IEBwYXJhbVtvdXRdICAgICBEYXRhICAgICAgICAgICAgICAgRGF0YSBwb2ludGVyLg0KPiA+Pj4+ PiArDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICAgICAgRm91bmQg dGhlDQo+ID4+PiBzcGVjaWZpZWQgdmFyaWFibGUuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX0lO VkFMSURfUEFSQU1FVEVSICAgICAgSW52YWxpZA0KPiA+Pj4gcGFyYW1ldGVyLg0KPiA+Pj4+PiAr ICBAcmV0dmFsIEVGSV9OT1RfRk9VTkQgICAgICAgICAgICAgIFRoZSBzcGVjaWZpZWQNCj4gPj4+ IHZhcmlhYmxlIGNvdWxkIG5vdCBiZQ0KPiA+Pj4+IGZvdW5kLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsqKi8NCj4gPj4+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+Pj4gK0VGSUFQSQ0KPiA+Pj4+PiArRmlu ZFZhcmlhYmxlSW5SdW50aW1lQ2FjaGUgKA0KPiA+Pj4+PiArICBJTiAgICAgIENIQVIxNg0KPiA+ Pj4gKlZhcmlhYmxlTmFtZSwNCj4gPj4+Pj4gKyAgSU4gICAgICBFRklfR1VJRA0KPiA+Pj4gKlZl bmRvckd1aWQsDQo+ID4+Pj4+ICsgIE9VVCAgICAgVUlOVDMyDQo+ID4+PiAqQXR0cmlidXRlcyBP UFRJT05BTCwNCj4gPj4+Pj4gKyAgSU4gT1VUICBVSU5UTg0KPiA+Pj4gKkRhdGFTaXplLA0KPiA+ Pj4+PiArICBPVVQgICAgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRGF0YQ0K PiA+Pj4gT1BUSU9OQUwNCj4gPj4+Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICBFRklf U1RBVFVTICAgICAgICAgICAgICBTdGF0dXM7DQo+ID4+Pj4+ICsgIFVJTlROICAgICAgICAgICAg ICAgICAgIERlbGF5SW5kZXg7DQo+ID4+Pj4+ICsgIFVJTlROICAgICAgICAgICAgICAgICAgIFRl bXBEYXRhU2l6ZTsNCj4gPj4+Pj4gKyAgVkFSSUFCTEVfUE9JTlRFUl9UUkFDSyAgUnRQdHJUcmFj azsNCj4gPj4+Pj4gKyAgVkFSSUFCTEVfU1RPUkVfVFlQRSAgICAgU3RvcmVUeXBlOw0KPiA+Pj4+ PiArICBWQVJJQUJMRV9TVE9SRV9IRUFERVINCj4gPj4+ICpWYXJpYWJsZVN0b3JlTGlzdFtWYXJp YWJsZVN0b3JlVHlwZU1heF07DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgU3RhdHVzID0gRUZJX05P VF9GT1VORDsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoVmFyaWFibGVOYW1lID09IE5VTEwg fHwgVmVuZG9yR3VpZCA9PSBOVUxMIHx8DQo+ID4+PiBEYXRhU2l6ZSA9PSBOVUxMKSB7DQo+ID4+ Pj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+Pj4gKyAgfQ0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgIGZvciAoRGVsYXlJbmRleCA9IDA7DQo+ID4+PiBtVmFyaWFibGVS dW50aW1lQ2FjaGVSZWFkTG9jayAmJiBEZWxheUluZGV4IDwNCj4gPj4+Pj4gVkFSSUFCTEVfUlRf Q0FDSEVfUkVBRF9MT0NLX1RJTUVPVVQ7IERlbGF5SW5kZXgrKykgew0KPiA+Pj4+PiArICAgIE1p Y3JvU2Vjb25kRGVsYXkgKDEwKTsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArICBpZiAoRGVsYXlJ bmRleCA8DQo+ID4+PiBWQVJJQUJMRV9SVF9DQUNIRV9SRUFEX0xPQ0tfVElNRU9VVCkgew0KPiA+ Pj4+PiArICAgIEFTU0VSVCAoIW1WYXJpYWJsZVJ1bnRpbWVDYWNoZVJlYWRMb2NrKTsNCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICAgIG1WYXJpYWJsZVJ1bnRpbWVDYWNoZVJlYWRMb2NrID0gVFJVRTsN Cj4gPj4+Pj4gKyAgICBDaGVja0ZvclJ1bnRpbWVDYWNoZVN5bmMgKCk7DQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKyAgICBpZiAoIW1WYXJpYWJsZVJ1bnRpbWVDYWNoZVBlbmRpbmdVcGRhdGUpIHsNCj4g Pj4+Pj4gKyAgICAgIC8vDQo+ID4+Pj4+ICsgICAgICAvLyAwOiBWb2xhdGlsZSwgMTogSE9CLCAy OiBOb24tVm9sYXRpbGUuDQo+ID4+Pj4+ICsgICAgICAvLyBUaGUgaW5kZXggYW5kIGF0dHJpYnV0 ZXMgbWFwcGluZyBtdXN0IGJlDQo+ID4+PiBrZXB0IGluIHRoaXMgb3JkZXIgYXMNCj4gPj4+Pj4g RmluZFZhcmlhYmxlDQo+ID4+Pj4+ICsgICAgICAvLyBtYWtlcyB1c2Ugb2YgdGhpcyBtYXBwaW5n IHRvIGltcGxlbWVudA0KPiA+Pj4gc2VhcmNoIGFsZ29yaXRobS4NCj4gPj4+Pj4gKyAgICAgIC8v DQo+ID4+Pj4+ICsgICAgICBWYXJpYWJsZVN0b3JlTGlzdFtWYXJpYWJsZVN0b3JlVHlwZVZvbGF0 aWxlXQ0KPiA+Pj4gPQ0KPiA+Pj4+PiBtVmFyaWFibGVSdW50aW1lVm9sYXRpbGVDYWNoZUJ1ZmZl cjsNCj4gPj4+Pj4gKyAgICAgIFZhcmlhYmxlU3RvcmVMaXN0W1ZhcmlhYmxlU3RvcmVUeXBlSG9i XQ0KPiA+Pj4gPQ0KPiA+Pj4+PiBtVmFyaWFibGVSdW50aW1lSG9iQ2FjaGVCdWZmZXI7DQo+ID4+ Pj4+ICsgICAgICBWYXJpYWJsZVN0b3JlTGlzdFtWYXJpYWJsZVN0b3JlVHlwZU52XQ0KPiA+Pj4g PQ0KPiA+Pj4+PiBtVmFyaWFibGVSdW50aW1lTnZDYWNoZUJ1ZmZlcjsNCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArICAgICAgZm9yIChTdG9yZVR5cGUgPSAoVkFSSUFCTEVfU1RPUkVfVFlQRSkgMDsNCj4g Pj4+IFN0b3JlVHlwZSA8DQo+ID4+Pj4+IFZhcmlhYmxlU3RvcmVUeXBlTWF4OyBTdG9yZVR5cGUr Kykgew0KPiA+Pj4+PiArICAgICAgICBpZiAoVmFyaWFibGVTdG9yZUxpc3RbU3RvcmVUeXBlXSA9 PSBOVUxMKSB7DQo+ID4+Pj4+ICsgICAgICAgICAgY29udGludWU7DQo+ID4+Pj4+ICsgICAgICAg IH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgICBSdFB0clRyYWNrLlN0YXJ0UHRyID0gR2V0 U3RhcnRQb2ludGVyDQo+ID4+PiAoVmFyaWFibGVTdG9yZUxpc3RbU3RvcmVUeXBlXSk7DQo+ID4+ Pj4+ICsgICAgICAgIFJ0UHRyVHJhY2suRW5kUHRyICAgPSBHZXRFbmRQb2ludGVyDQo+ID4+PiAo VmFyaWFibGVTdG9yZUxpc3RbU3RvcmVUeXBlXSk7DQo+ID4+Pj4+ICsgICAgICAgIFJ0UHRyVHJh Y2suVm9sYXRpbGUgPSAoQk9PTEVBTikgKFN0b3JlVHlwZQ0KPiA+Pj4gPT0NCj4gPj4+Pj4gVmFy aWFibGVTdG9yZVR5cGVWb2xhdGlsZSk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgICAgICAgU3Rh dHVzID0gRmluZFZhcmlhYmxlRXggKFZhcmlhYmxlTmFtZSwNCj4gPj4+IFZlbmRvckd1aWQsIEZB TFNFLA0KPiA+Pj4+PiAmUnRQdHJUcmFjayk7DQo+ID4+Pj4+ICsgICAgICAgIGlmICghRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgICAgICAgYnJlYWs7DQo+ID4+Pj4+ICsgICAg ICAgIH0NCj4gPj4+Pj4gKyAgICAgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgaWYgKCFF RklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICAgICAgLy8NCj4gPj4+Pj4gKyAgICAg ICAgLy8gR2V0IGRhdGEgc2l6ZQ0KPiA+Pj4+PiArICAgICAgICAvLw0KPiA+Pj4+PiArICAgICAg ICBUZW1wRGF0YVNpemUgPSBEYXRhU2l6ZU9mVmFyaWFibGUNCj4gPj4+IChSdFB0clRyYWNrLkN1 cnJQdHIpOw0KPiA+Pj4+PiArICAgICAgICBBU1NFUlQgKFRlbXBEYXRhU2l6ZSAhPSAwKTsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgICBpZiAoKkRhdGFTaXplID49IFRlbXBEYXRhU2l6ZSkg ew0KPiA+Pj4+PiArICAgICAgICAgIGlmIChEYXRhID09IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICAg ICAgICAgIFN0YXR1cyA9IEVGSV9JTlZBTElEX1BBUkFNRVRFUjsNCj4gPj4+Pj4gKyAgICAgICAg ICAgIGdvdG8gRG9uZTsNCj4gPj4+Pj4gKyAgICAgICAgICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4g KyAgICAgICAgICBDb3B5TWVtIChEYXRhLCBHZXRWYXJpYWJsZURhdGFQdHINCj4gPj4+IChSdFB0 clRyYWNrLkN1cnJQdHIpLA0KPiA+Pj4+PiBUZW1wRGF0YVNpemUpOw0KPiA+Pj4+PiArICAgICAg ICAgIGlmIChBdHRyaWJ1dGVzICE9IE5VTEwpIHsNCj4gPj4+Pj4gKyAgICAgICAgICAgICpBdHRy aWJ1dGVzID0gUnRQdHJUcmFjay5DdXJyUHRyLQ0KPiA+Pj4+IEF0dHJpYnV0ZXM7DQo+ID4+Pj4+ ICsgICAgICAgICAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgICAgKkRhdGFTaXplID0g VGVtcERhdGFTaXplOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgICAgVXBkYXRlVmFyaWFi bGVJbmZvIChWYXJpYWJsZU5hbWUsDQo+ID4+PiBWZW5kb3JHdWlkLA0KPiA+Pj4+IFJ0UHRyVHJh Y2suVm9sYXRpbGUsDQo+ID4+Pj4+IFRSVUUsIEZBTFNFLCBGQUxTRSwgVFJVRSwgJm1WYXJpYWJs ZUluZm8pOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgICAgICAgICAgU3RhdHVzID0gRUZJX1NVQ0NF U1M7DQo+ID4+Pj4+ICsgICAgICAgICAgZ290byBEb25lOw0KPiA+Pj4+PiArICAgICAgICB9IGVs c2Ugew0KPiA+Pj4+PiArICAgICAgICAgICpEYXRhU2l6ZSA9IFRlbXBEYXRhU2l6ZTsNCj4gPj4+ Pj4gKyAgICAgICAgICBTdGF0dXMgPSBFRklfQlVGRkVSX1RPT19TTUFMTDsNCj4gPj4+Pj4gKyAg ICAgICAgICBnb3RvIERvbmU7DQo+ID4+Pj4+ICsgICAgICAgIH0NCj4gPj4+Pj4gKyAgICAgIH0N Cj4gPj4+Pj4gKyAgICB9DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArRG9uZToN Cj4gPj4+Pj4gKyAgbVZhcmlhYmxlUnVudGltZUNhY2hlUmVhZExvY2sgPSBGQUxTRTsNCj4gPj4+ Pg0KPiA+Pj4+DQo+ID4+Pj4gSWYgdGltZW91dCBvY2N1cnMgd2hlbiBhY3F1aXJpbmcgdGhlIHJl YWQgbG9jaywgc2hvdWxkDQo+ID4+PiB0aGlzIGZsYWcgYmUgc2V0IHRvDQo+ID4+Pj4gRkFMU0UN Cj4gPj4+PiBpbiBzdWNoIGNhc2U/DQo+ID4+Pj4NCj4gPj4+DQo+ID4+PiBQbGVhc2Ugc2VlIHJl cGx5IHRvIHBhdGNoICM4Lg0KPiA+Pj4NCj4gPj4+PiBCZXN0IFJlZ2FyZHMsDQo+ID4+Pj4gSGFv IFd1DQo+ID4+Pj4NCj4gPj4+Pg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIHJldHVybiBTdGF0dXM7 DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gIC8qKg0KPiA+Pj4+PiAgICBUaGlzIGNv ZGUgZmluZHMgdmFyaWFibGUgaW4gc3RvcmFnZSBibG9ja3MNCj4gPj4+IChWb2xhdGlsZSBvciBO b24tVm9sYXRpbGUpLg0KPiA+Pj4+Pg0KPiA+Pj4+PiBAQCAtNDU0LDkxICs3NjMsMjEgQEAgUnVu dGltZVNlcnZpY2VHZXRWYXJpYWJsZSAoDQo+ID4+Pj4+ICAgICkNCj4gPj4+Pj4gIHsNCj4gPj4+ Pj4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzOw0K PiA+Pj4+PiAtICBVSU5UTg0KPiA+Pj4gUGF5bG9hZFNpemU7DQo+ID4+Pj4+IC0gIFNNTV9WQVJJ QUJMRV9DT01NVU5JQ0FURV9BQ0NFU1NfVkFSSUFCTEUNCj4gPj4+Pj4gKlNtbVZhcmlhYmxlSGVh ZGVyOw0KPiA+Pj4+PiAtICBVSU5UTg0KPiA+Pj4gVGVtcERhdGFTaXplOw0KPiA+Pj4+PiAtICBV SU5UTg0KPiA+Pj4gVmFyaWFibGVOYW1lU2l6ZTsNCj4gPj4+Pj4NCj4gPj4+Pj4gICAgaWYgKFZh cmlhYmxlTmFtZSA9PSBOVUxMIHx8IFZlbmRvckd1aWQgPT0gTlVMTCB8fA0KPiA+Pj4gRGF0YVNp emUgPT0gTlVMTCkgew0KPiA+Pj4+PiAgICAgIHJldHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7 DQo+ID4+Pj4+ICAgIH0NCj4gPj4+Pj4gLQ0KPiA+Pj4+PiAtICBUZW1wRGF0YVNpemUgICAgICAg ICAgPSAqRGF0YVNpemU7DQo+ID4+Pj4+IC0gIFZhcmlhYmxlTmFtZVNpemUgICAgICA9IFN0clNp emUgKFZhcmlhYmxlTmFtZSk7DQo+ID4+Pj4+IC0gIFNtbVZhcmlhYmxlSGVhZGVyICAgICA9IE5V TEw7DQo+ID4+Pj4+IC0NCj4gPj4+Pj4gLSAgLy8NCj4gPj4+Pj4gLSAgLy8gSWYgVmFyaWFibGVO YW1lIGV4Y2VlZHMgU01NIHBheWxvYWQgbGltaXQuDQo+ID4+PiBSZXR1cm4gZmFpbHVyZQ0KPiA+ Pj4+PiAtICAvLw0KPiA+Pj4+PiAtICBpZiAoVmFyaWFibGVOYW1lU2l6ZSA+IG1WYXJpYWJsZUJ1 ZmZlclBheWxvYWRTaXplDQo+ID4+PiAtIE9GRlNFVF9PRg0KPiA+Pj4+PiAoU01NX1ZBUklBQkxF X0NPTU1VTklDQVRFX0FDQ0VTU19WQVJJQUJMRSwgTmFtZSkpIHsNCj4gPj4+Pj4gLSAgICByZXR1 cm4gRUZJX0lOVkFMSURfUEFSQU1FVEVSOw0KPiA+Pj4+PiAtICB9DQo+ID4+Pj4+IC0NCj4gPj4+ Pj4gLQ0KPiA+Pj4gQWNxdWlyZUxvY2tPbmx5QXRCb290VGltZSgmbVZhcmlhYmxlU2VydmljZXNM b2NrKTsNCj4gPj4+Pj4gLQ0KPiA+Pj4+PiAtICAvLw0KPiA+Pj4+PiAtICAvLyBJbml0IHRoZSBj b21tdW5pY2F0ZSBidWZmZXIuIFRoZSBidWZmZXIgZGF0YQ0KPiA+Pj4gc2l6ZSBpczoNCj4gPj4+ Pj4gLSAgLy8gU01NX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFICsNCj4gPj4+Pj4gU01NX1ZBUklB QkxFX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFICsgUGF5bG9hZFNpemUuDQo+ID4+Pj4+IC0gIC8v DQo+ID4+Pj4+IC0gIGlmIChUZW1wRGF0YVNpemUgPiBtVmFyaWFibGVCdWZmZXJQYXlsb2FkU2l6 ZSAtDQo+ID4+PiBPRkZTRVRfT0YNCj4gPj4+Pj4gKFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9B Q0NFU1NfVkFSSUFCTEUsIE5hbWUpIC0NCj4gPj4+Pj4gVmFyaWFibGVOYW1lU2l6ZSkgew0KPiA+ Pj4+PiAtICAgIC8vDQo+ID4+Pj4+IC0gICAgLy8gSWYgb3V0cHV0IGRhdGEgYnVmZmVyIGV4Y2Vl ZCBTTU0gcGF5bG9hZA0KPiA+Pj4gbGltaXQuIFRyaW0gb3V0cHV0IGJ1ZmZlciB0bw0KPiA+Pj4+ PiBTTU0gcGF5bG9hZCBzaXplDQo+ID4+Pj4+IC0gICAgLy8NCj4gPj4+Pj4gLSAgICBUZW1wRGF0 YVNpemUgPSBtVmFyaWFibGVCdWZmZXJQYXlsb2FkU2l6ZSAtDQo+ID4+PiBPRkZTRVRfT0YNCj4g Pj4+Pj4gKFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9BQ0NFU1NfVkFSSUFCTEUsIE5hbWUpIC0N Cj4gPj4+Pj4gVmFyaWFibGVOYW1lU2l6ZTsNCj4gPj4+Pj4gLSAgfQ0KPiA+Pj4+PiAtICBQYXls b2FkU2l6ZSA9IE9GRlNFVF9PRg0KPiA+Pj4+PiAoU01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0FD Q0VTU19WQVJJQUJMRSwgTmFtZSkgKw0KPiA+Pj4+PiBWYXJpYWJsZU5hbWVTaXplICsgVGVtcERh dGFTaXplOw0KPiA+Pj4+PiAtDQo+ID4+Pj4+IC0gIFN0YXR1cyA9IEluaXRDb21tdW5pY2F0ZUJ1 ZmZlciAoKFZPSUQNCj4gPj4+ICoqKSZTbW1WYXJpYWJsZUhlYWRlciwNCj4gPj4+Pj4gUGF5bG9h ZFNpemUsIFNNTV9WQVJJQUJMRV9GVU5DVElPTl9HRVRfVkFSSUFCTEUpOw0KPiA+Pj4+PiAtICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+IC0gICAgZ290byBEb25lOw0KPiA+Pj4+ PiAtICB9DQo+ID4+Pj4+IC0gIEFTU0VSVCAoU21tVmFyaWFibGVIZWFkZXIgIT0gTlVMTCk7DQo+ ID4+Pj4+IC0NCj4gPj4+Pj4gLSAgQ29weUd1aWQgKCZTbW1WYXJpYWJsZUhlYWRlci0+R3VpZCwg VmVuZG9yR3VpZCk7DQo+ID4+Pj4+IC0gIFNtbVZhcmlhYmxlSGVhZGVyLT5EYXRhU2l6ZSAgID0g VGVtcERhdGFTaXplOw0KPiA+Pj4+PiAtICBTbW1WYXJpYWJsZUhlYWRlci0+TmFtZVNpemUgICA9 IFZhcmlhYmxlTmFtZVNpemU7DQo+ID4+Pj4+IC0gIGlmIChBdHRyaWJ1dGVzID09IE5VTEwpIHsN Cj4gPj4+Pj4gLSAgICBTbW1WYXJpYWJsZUhlYWRlci0+QXR0cmlidXRlcyA9IDA7DQo+ID4+Pj4+ IC0gIH0gZWxzZSB7DQo+ID4+Pj4+IC0gICAgU21tVmFyaWFibGVIZWFkZXItPkF0dHJpYnV0ZXMg PSAqQXR0cmlidXRlczsNCj4gPj4+Pj4gLSAgfQ0KPiA+Pj4+PiAtICBDb3B5TWVtIChTbW1WYXJp YWJsZUhlYWRlci0+TmFtZSwgVmFyaWFibGVOYW1lLA0KPiA+Pj4+PiBTbW1WYXJpYWJsZUhlYWRl ci0+TmFtZVNpemUpOw0KPiA+Pj4+PiAtDQo+ID4+Pj4+IC0gIC8vDQo+ID4+Pj4+IC0gIC8vIFNl bmQgZGF0YSB0byBTTU0uDQo+ID4+Pj4+IC0gIC8vDQo+ID4+Pj4+IC0gIFN0YXR1cyA9IFNlbmRD b21tdW5pY2F0ZUJ1ZmZlciAoUGF5bG9hZFNpemUpOw0KPiA+Pj4+PiAtDQo+ID4+Pj4+IC0gIC8v DQo+ID4+Pj4+IC0gIC8vIEdldCBkYXRhIGZyb20gU01NLg0KPiA+Pj4+PiAtICAvLw0KPiA+Pj4+ PiAtICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTIHx8IFN0YXR1cyA9PQ0KPiA+Pj4gRUZJX0JV RkZFUl9UT09fU01BTEwpIHsNCj4gPj4+Pj4gLSAgICAvLw0KPiA+Pj4+PiAtICAgIC8vIFNNTSBD b21tQnVmZmVyIERhdGFTaXplIGNhbiBiZSBhIHRyaW1lZA0KPiA+Pj4gdmFsdWUNCj4gPj4+Pj4g LSAgICAvLyBPbmx5IHVwZGF0ZSBEYXRhU2l6ZSB3aGVuIG5lZWRlZA0KPiA+Pj4+PiAtICAgIC8v DQo+ID4+Pj4+IC0gICAgKkRhdGFTaXplID0gU21tVmFyaWFibGVIZWFkZXItPkRhdGFTaXplOw0K PiA+Pj4+PiAtICB9DQo+ID4+Pj4+IC0gIGlmIChBdHRyaWJ1dGVzICE9IE5VTEwpIHsNCj4gPj4+ Pj4gLSAgICAqQXR0cmlidXRlcyA9IFNtbVZhcmlhYmxlSGVhZGVyLT5BdHRyaWJ1dGVzOw0KPiA+ Pj4+PiAtICB9DQo+ID4+Pj4+IC0NCj4gPj4+Pj4gLSAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkg ew0KPiA+Pj4+PiAtICAgIGdvdG8gRG9uZTsNCj4gPj4+Pj4gLSAgfQ0KPiA+Pj4+PiAtDQo+ID4+ Pj4+IC0gIGlmIChEYXRhICE9IE5VTEwpIHsNCj4gPj4+Pj4gLSAgICBDb3B5TWVtIChEYXRhLCAo VUlOVDggKilTbW1WYXJpYWJsZUhlYWRlci0+TmFtZQ0KPiA+Pj4gKw0KPiA+Pj4+PiBTbW1WYXJp YWJsZUhlYWRlci0+TmFtZVNpemUsIFNtbVZhcmlhYmxlSGVhZGVyLQ0KPiA+Pj4+IERhdGFTaXpl KTsNCj4gPj4+Pj4gLSAgfSBlbHNlIHsNCj4gPj4+Pj4gLSAgICBTdGF0dXMgPSBFRklfSU5WQUxJ RF9QQVJBTUVURVI7DQo+ID4+Pj4+ICsgIGlmIChWYXJpYWJsZU5hbWVbMF0gPT0gMCkgew0KPiA+ Pj4+PiArICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KPiA+Pj4+PiAgICB9DQo+ID4+Pj4+DQo+ ID4+Pj4+IC1Eb25lOg0KPiA+Pj4+PiArICBBY3F1aXJlTG9ja09ubHlBdEJvb3RUaW1lDQo+ID4+ PiAoJm1WYXJpYWJsZVNlcnZpY2VzTG9jayk7DQo+ID4+Pj4+ICsgIFN0YXR1cyA9ICBGaW5kVmFy aWFibGVJblJ1bnRpbWVDYWNoZQ0KPiA+Pj4gKFZhcmlhYmxlTmFtZSwgVmVuZG9yR3VpZCwNCj4g Pj4+Pj4gQXR0cmlidXRlcywgRGF0YVNpemUsIERhdGEpOw0KPiA+Pj4+PiAgICBSZWxlYXNlTG9j a09ubHlBdEJvb3RUaW1lDQo+ID4+PiAoJm1WYXJpYWJsZVNlcnZpY2VzTG9jayk7DQo+ID4+Pj4+ ICsNCj4gPj4+Pj4gICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gIH0NCj4gPj4+Pj4NCj4gPj4+ Pj4gLQ0KPiA+Pj4+PiAgLyoqDQo+ID4+Pj4+ICAgIFRoaXMgY29kZSBGaW5kcyB0aGUgTmV4dCBh dmFpbGFibGUgdmFyaWFibGUuDQo+ID4+Pj4+DQo+ID4+Pj4+IEBAIC04NzAsNiArMTEwOSwxNyBA QCBPblJlYWR5VG9Cb290ICgNCj4gPj4+Pj4gICAgLy8NCj4gPj4+Pj4gICAgU2VuZENvbW11bmlj YXRlQnVmZmVyICgwKTsNCj4gPj4+Pj4NCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgLy8gSW5z dGFsbCB0aGUgc3lzdGVtIGNvbmZpZ3VyYXRpb24gdGFibGUgZm9yDQo+ID4+PiB2YXJpYWJsZSBp bmZvIGRhdGEgY2FwdHVyZWQNCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgaWYgKEZlYXR1cmVQ Y2RHZXQgKFBjZFZhcmlhYmxlQ29sbGVjdFN0YXRpc3RpY3MpKQ0KPiA+Pj4gew0KPiA+Pj4+PiAr ICAgIGlmIChtVmFyaWFibGVBdXRoRm9ybWF0KSB7DQo+ID4+Pj4+ICsgICAgICBnQlMtPkluc3Rh bGxDb25maWd1cmF0aW9uVGFibGUNCj4gPj4+ICgmZ0VmaUF1dGhlbnRpY2F0ZWRWYXJpYWJsZUd1 aWQsDQo+ID4+Pj4+IG1WYXJpYWJsZUluZm8pOw0KPiA+Pj4+PiArICAgIH0gZWxzZSB7DQo+ID4+ Pj4+ICsgICAgICBnQlMtPkluc3RhbGxDb25maWd1cmF0aW9uVGFibGUNCj4gPj4+ICgmZ0VmaVZh cmlhYmxlR3VpZCwgbVZhcmlhYmxlSW5mbyk7DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+PiArICB9 DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gICAgZ0JTLT5DbG9zZUV2ZW50IChFdmVudCk7DQo+ID4+Pj4+ ICB9DQo+ID4+Pj4+DQo+ID4+Pj4+IEBAIC04OTMsNiArMTE0Myw5IEBAIFZhcmlhYmxlQWRkcmVz c0NoYW5nZUV2ZW50ICgNCj4gPj4+Pj4gIHsNCj4gPj4+Pj4gICAgRWZpQ29udmVydFBvaW50ZXIg KDB4MCwgKFZPSUQgKiopDQo+ID4+PiAmbVZhcmlhYmxlQnVmZmVyKTsNCj4gPj4+Pj4gICAgRWZp Q29udmVydFBvaW50ZXIgKDB4MCwgKFZPSUQgKiopDQo+ID4+PiAmbVNtbUNvbW11bmljYXRpb24p Ow0KPiA+Pj4+PiArICBFZmlDb252ZXJ0UG9pbnRlciAoMHgwLCAoVk9JRCAqKikNCj4gPj4+ICZt VmFyaWFibGVSdW50aW1lSG9iQ2FjaGVCdWZmZXIpOw0KPiA+Pj4+PiArICBFZmlDb252ZXJ0UG9p bnRlciAoMHgwLCAoVk9JRCAqKikNCj4gPj4+ICZtVmFyaWFibGVSdW50aW1lTnZDYWNoZUJ1ZmZl cik7DQo+ID4+Pj4+ICsgIEVmaUNvbnZlcnRQb2ludGVyICgweDAsIChWT0lEICoqKQ0KPiA+Pj4+ PiAmbVZhcmlhYmxlUnVudGltZVZvbGF0aWxlQ2FjaGVCdWZmZXIpOw0KPiA+Pj4+PiAgfQ0KPiA+ Pj4+Pg0KPiA+Pj4+PiAgLyoqDQo+ID4+Pj4+IEBAIC05NjksNiArMTIyMiwxNzMgQEAgRG9uZToN Cj4gPj4+Pj4gICAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gIH0NCj4gPj4+Pj4NCj4gPj4+Pj4g Ky8qKg0KPiA+Pj4+PiArICBUaGlzIGNvZGUgZ2V0cyBpbmZvcm1hdGlvbiBuZWVkZWQgZnJvbSBT TU0gZm9yDQo+ID4+PiBydW50aW1lIGNhY2hlDQo+ID4+Pj4+IGluaXRpYWxpemF0aW9uLg0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtvdXRdIFRvdGFsSG9iU3RvcmFnZVNpemUgICAgICAg ICBPdXRwdXQNCj4gPj4+IHBvaW50ZXIgZm9yIHRoZSB0b3RhbCBIT0INCj4gPj4+Pj4gc3RvcmFn ZSBzaXplIGluIGJ5dGVzLg0KPiA+Pj4+PiArICBAcGFyYW1bb3V0XSBUb3RhbE52U3RvcmFnZVNp emUgICAgICAgICAgT3V0cHV0DQo+ID4+PiBwb2ludGVyIGZvciB0aGUgdG90YWwgbm9uLQ0KPiA+ Pj4+PiB2b2xhdGlsZSBzdG9yYWdlIHNpemUgaW4gYnl0ZXMuDQo+ID4+Pj4+ICsgIEBwYXJhbVtv dXRdIFRvdGFsVm9sYXRpbGVTdG9yYWdlU2l6ZSAgICBPdXRwdXQNCj4gPj4+IHBvaW50ZXIgZm9y IHRoZSB0b3RhbA0KPiA+Pj4+PiB2b2xhdGlsZSBzdG9yYWdlIHNpemUgaW4gYnl0ZXMuDQo+ID4+ Pj4+ICsgIEBwYXJhbVtvdXRdIEF1dGhlbnRpY2F0ZWRWYXJpYWJsZVVzYWdlICBPdXRwdXQNCj4g Pj4+IHBvaW50ZXIgdGhhdCBpbmRpY2F0ZXMNCj4gPj4+PiBpZg0KPiA+Pj4+PiBhdXRoZW50aWNh dGVkIHZhcmlhYmxlcyBhcmUgdG8gYmUgdXNlZC4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0 dmFsIEVGSV9TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgUmV0cmlldmVkDQo+ID4+PiB0aGUg c2l6ZSBzdWNjZXNzZnVsbHkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1F VEVSDQo+ID4+PiBUb3RhbE52U3RvcmFnZVNpemUgcGFyYW1ldGVyIGlzDQo+ID4+Pj4+IE5VTEwu DQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgICAgICAgICBDb3Vs ZCBub3QNCj4gPj4+IGFsbG9jYXRlIGENCj4gPj4+PiBDb21tQnVmZmVyLg0KPiA+Pj4+PiArICBA cmV0dmFsIE90aGVycyAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bGQgbm90DQo+ID4+PiBy ZXRyaWV2ZSB0aGUgc2l6ZSBzdWNjZXNzZnVsbHkuOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsqKi8N Cj4gPj4+Pj4gK0VGSV9TVEFUVVMNCj4gPj4+Pj4gK0VGSUFQSQ0KPiA+Pj4+PiArR2V0UnVudGlt ZUNhY2hlSW5mbyAoDQo+ID4+Pj4+ICsgIE9VVCBVSU5UTg0KPiA+Pj4gKlRvdGFsSG9iU3RvcmFn ZVNpemUsDQo+ID4+Pj4+ICsgIE9VVCBVSU5UTg0KPiA+Pj4gKlRvdGFsTnZTdG9yYWdlU2l6ZSwN Cj4gPj4+Pj4gKyAgT1VUIFVJTlRODQo+ID4+PiAqVG90YWxWb2xhdGlsZVN0b3JhZ2VTaXplLA0K PiA+Pj4+PiArICBPVVQgQk9PTEVBTg0KPiA+Pj4gKkF1dGhlbnRpY2F0ZWRWYXJpYWJsZVVzYWdl DQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4gKyAgRUZJX1NUQVRVUw0KPiA+Pj4g U3RhdHVzOw0KPiA+Pj4+PiArICBTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfR0VUX1JVTlRJTUVf Q0FDSEVfSU5GTw0KPiA+Pj4+PiAqU21tR2V0UnVudGltZUNhY2hlSW5mbzsNCj4gPj4+Pj4gKyAg RUZJX1NNTV9DT01NVU5JQ0FURV9IRUFERVINCj4gPj4+Pj4gKlNtbUNvbW11bmljYXRlSGVhZGVy Ow0KPiA+Pj4+PiArICBTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfSEVBREVSDQo+ID4+Pj4+ICpT bW1WYXJpYWJsZUZ1bmN0aW9uSGVhZGVyOw0KPiA+Pj4+PiArICBVSU5UTg0KPiA+Pj4gQ29tbVNp emU7DQo+ID4+Pj4+ICsgIFVJTlRODQo+ID4+PiBDb21tQnVmZmVyU2l6ZTsNCj4gPj4+Pj4gKyAg VUlOVDgNCj4gPj4+ICpDb21tQnVmZmVyOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFNtbUdldFJ1 bnRpbWVDYWNoZUluZm8gPSBOVUxMOw0KPiA+Pj4+PiArICBDb21tQnVmZmVyID0gTlVMTDsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICBpZiAoVG90YWxIb2JTdG9yYWdlU2l6ZSA9PSBOVUxMIHx8DQo+ ID4+PiBUb3RhbE52U3RvcmFnZVNpemUgPT0gTlVMTCB8fA0KPiA+Pj4+PiBUb3RhbFZvbGF0aWxl U3RvcmFnZVNpemUgPT0gTlVMTCB8fA0KPiA+Pj4gQXV0aGVudGljYXRlZFZhcmlhYmxlVXNhZ2Ug PT0gTlVMTCkNCj4gPj4+PiB7DQo+ID4+Pj4+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFN RVRFUjsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEFjcXVpcmVMb2NrT25s eUF0Qm9vdFRpbWUNCj4gPj4+ICgmbVZhcmlhYmxlU2VydmljZXNMb2NrKTsNCj4gPj4+Pj4gKw0K PiA+Pj4+PiArICBDb21tU2l6ZSA9IFNNTV9DT01NVU5JQ0FURV9IRUFERVJfU0laRSArDQo+ID4+ Pj4+IFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9IRUFERVJfU0laRSArIHNpemVvZg0KPiA+Pj4+ PiAoU01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0dFVF9SVU5USU1FX0NBQ0hFX0lORk8pOw0KPiA+ Pj4+PiArICBDb21tQnVmZmVyU2l6ZSA9IENvbW1TaXplOw0KPiA+Pj4+PiArICBTdGF0dXMgPSBH ZXRDb21tdW5pY2F0ZUJ1ZmZlciAoJkNvbW1CdWZmZXJTaXplLA0KPiA+Pj4gJkNvbW1CdWZmZXIp Ow0KPiA+Pj4+PiArICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgZ290 byBEb25lOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsgIGlmIChDb21tQnVmZmVyID09IE5VTEwp IHsNCj4gPj4+Pj4gKyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4g KyAgICBnb3RvIERvbmU7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKyAgWmVyb01lbSAoQ29tbUJ1 ZmZlciwgQ29tbUJ1ZmZlclNpemUpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFNtbUNvbW11bmlj YXRlSGVhZGVyID0NCj4gPj4+IChFRklfU01NX0NPTU1VTklDQVRFX0hFQURFUiAqKQ0KPiA+Pj4+ PiBDb21tQnVmZmVyOw0KPiA+Pj4+PiArICBDb3B5R3VpZCAoJlNtbUNvbW11bmljYXRlSGVhZGVy LT5IZWFkZXJHdWlkLA0KPiA+Pj4+PiAmZ0VmaVNtbVZhcmlhYmxlUHJvdG9jb2xHdWlkKTsNCj4g Pj4+Pj4gKyAgU21tQ29tbXVuaWNhdGVIZWFkZXItPk1lc3NhZ2VMZW5ndGggPQ0KPiA+Pj4+PiBT TU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfSEVBREVSX1NJWkUgKyBzaXplb2YNCj4gPj4+Pj4gKFNN TV9WQVJJQUJMRV9DT01NVU5JQ0FURV9HRVRfUlVOVElNRV9DQUNIRV9JTkZPKTsNCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArICBTbW1WYXJpYWJsZUZ1bmN0aW9uSGVhZGVyID0NCj4gPj4+Pj4gKFNNTV9W QVJJQUJMRV9DT01NVU5JQ0FURV9IRUFERVIgKikNCj4gPj4+IFNtbUNvbW11bmljYXRlSGVhZGVy LQ0KPiA+Pj4+Pj4gRGF0YTsNCj4gPj4+Pj4gKyAgU21tVmFyaWFibGVGdW5jdGlvbkhlYWRlci0+ RnVuY3Rpb24gPQ0KPiA+Pj4+PiBTTU1fVkFSSUFCTEVfRlVOQ1RJT05fR0VUX1JVTlRJTUVfQ0FD SEVfSU5GTzsNCj4gPj4+Pj4gKyAgU21tR2V0UnVudGltZUNhY2hlSW5mbyA9DQo+ID4+Pj4+IChT TU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfR0VUX1JVTlRJTUVfQ0FDSEVfSU5GTyAqKQ0KPiA+Pj4+ PiBTbW1WYXJpYWJsZUZ1bmN0aW9uSGVhZGVyLT5EYXRhOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsg IC8vDQo+ID4+Pj4+ICsgIC8vIFNlbmQgZGF0YSB0byBTTU0uDQo+ID4+Pj4+ICsgIC8vDQo+ID4+ Pj4+ICsgIFN0YXR1cyA9IG1TbW1Db21tdW5pY2F0aW9uLT5Db21tdW5pY2F0ZQ0KPiA+Pj4gKG1T bW1Db21tdW5pY2F0aW9uLA0KPiA+Pj4+PiBDb21tQnVmZmVyLCAmQ29tbVNpemUpOw0KPiA+Pj4+ PiArICBBU1NFUlRfRUZJX0VSUk9SIChTdGF0dXMpOw0KPiA+Pj4+PiArICBpZiAoQ29tbVNpemUg PD0NCj4gPj4+IFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9IRUFERVJfU0laRSkgew0KPiA+Pj4+ PiArICAgIFN0YXR1cyA9IEVGSV9CQURfQlVGRkVSX1NJWkU7DQo+ID4+Pj4+ICsgICAgZ290byBE b25lOw0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgU3RhdHVzID0gU21tVmFy aWFibGVGdW5jdGlvbkhlYWRlci0+UmV0dXJuU3RhdHVzOw0KPiA+Pj4+PiArICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgZ290byBEb25lOw0KPiA+Pj4+PiArICB9DQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgLy8gR2V0IGRhdGEgZnJvbSBTTU0u DQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgICpUb3RhbEhvYlN0b3JhZ2VTaXplID0gU21tR2V0 UnVudGltZUNhY2hlSW5mby0NCj4gPj4+Pj4gVG90YWxIb2JTdG9yYWdlU2l6ZTsNCj4gPj4+Pj4g KyAgKlRvdGFsTnZTdG9yYWdlU2l6ZSA9IFNtbUdldFJ1bnRpbWVDYWNoZUluZm8tDQo+ID4+Pj4g VG90YWxOdlN0b3JhZ2VTaXplOw0KPiA+Pj4+PiArICAqVG90YWxWb2xhdGlsZVN0b3JhZ2VTaXpl ID0NCj4gPj4+IFNtbUdldFJ1bnRpbWVDYWNoZUluZm8tDQo+ID4+Pj4+PiBUb3RhbFZvbGF0aWxl U3RvcmFnZVNpemU7DQo+ID4+Pj4+ICsgICpBdXRoZW50aWNhdGVkVmFyaWFibGVVc2FnZSA9DQo+ ID4+PiBTbW1HZXRSdW50aW1lQ2FjaGVJbmZvLQ0KPiA+Pj4+Pj4gQXV0aGVudGljYXRlZFZhcmlh YmxlVXNhZ2U7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gK0RvbmU6DQo+ID4+Pj4+ICsgIFJlbGVhc2VM b2NrT25seUF0Qm9vdFRpbWUNCj4gPj4+ICgmbVZhcmlhYmxlU2VydmljZXNMb2NrKTsNCj4gPj4+ Pj4gKyAgcmV0dXJuIFN0YXR1czsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoq DQo+ID4+Pj4+ICsgIFNlbmRzIHRoZSBydW50aW1lIHZhcmlhYmxlIGNhY2hlIGNvbnRleHQNCj4g Pj4+IGluZm9ybWF0aW9uIHRvIFNNTS4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsIEVG SV9TVUNDRVNTICAgICAgICAgICAgICAgUmV0cmlldmVkIHRoZQ0KPiA+Pj4gc2l6ZSBzdWNjZXNz ZnVsbHkuDQo+ID4+Pj4+ICsgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSDQo+ID4+PiBU b3RhbE52U3RvcmFnZVNpemUgcGFyYW1ldGVyIGlzDQo+ID4+Pj4+IE5VTEwuDQo+ID4+Pj4+ICsg IEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICAgICBDb3VsZCBub3QNCj4gPj4+IGFsbG9j YXRlIGEgQ29tbUJ1ZmZlci4NCj4gPj4+Pj4gKyAgQHJldHZhbCBPdGhlcnMgICAgICAgICAgICAg ICAgICAgIENvdWxkIG5vdA0KPiA+Pj4gcmV0cmlldmUgdGhlIHNpemUgc3VjY2Vzc2Z1bGx5LjsN Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtFRklfU1RBVFVTDQo+ID4+Pj4+ICtF RklBUEkNCj4gPj4+Pj4gK1NlbmRSdW50aW1lVmFyaWFibGVDYWNoZUNvbnRleHRUb1NtbSAoDQo+ ID4+Pj4+ICsgIFZPSUQNCj4gPj4+Pj4gKyAgKQ0KPiA+Pj4+PiArew0KPiA+Pj4+PiArICBFRklf U1RBVFVTDQo+ID4+PiBTdGF0dXM7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4NCj4gPj4+DQo+IFNNTV9W QVJJQUJMRV9DT01NVU5JQ0FURV9SVU5USU1FX1ZBUklBQkxFX0NBQ0hFX0NPTlRFWFQNCj4gPj4+ Pj4gKlNtbVJ1bnRpbWVWYXJDYWNoZUNvbnRleHQ7DQo+ID4+Pj4+ICsgIEVGSV9TTU1fQ09NTVVO SUNBVEVfSEVBREVSDQo+ID4+Pj4+ICpTbW1Db21tdW5pY2F0ZUhlYWRlcjsNCj4gPj4+Pj4gKyAg U01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0hFQURFUg0KPiA+Pj4+PiAqU21tVmFyaWFibGVGdW5j dGlvbkhlYWRlcjsNCj4gPj4+Pj4gKyAgVUlOVE4NCj4gPj4+IENvbW1TaXplOw0KPiA+Pj4+PiAr ICBVSU5UTg0KPiA+Pj4gQ29tbUJ1ZmZlclNpemU7DQo+ID4+Pj4+ICsgIFVJTlQ4DQo+ID4+PiAq Q29tbUJ1ZmZlcjsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBTbW1SdW50aW1lVmFyQ2FjaGVDb250 ZXh0ID0gTlVMTDsNCj4gPj4+Pj4gKyAgQ29tbUJ1ZmZlciA9IE5VTEw7DQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKyAgQWNxdWlyZUxvY2tPbmx5QXRCb290VGltZQ0KPiA+Pj4gKCZtVmFyaWFibGVTZXJ2 aWNlc0xvY2spOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgIC8vIEluaXQg dGhlIGNvbW11bmljYXRlIGJ1ZmZlci4gVGhlIGJ1ZmZlciBkYXRhDQo+ID4+PiBzaXplIGlzOg0K PiA+Pj4+PiArICAvLyBTTU1fQ09NTVVOSUNBVEVfSEVBREVSX1NJWkUgKw0KPiA+Pj4+PiBTTU1f VkFSSUFCTEVfQ09NTVVOSUNBVEVfSEVBREVSX1NJWkUgKyBzaXplb2YNCj4gPj4+Pj4NCj4gPj4+ Pg0KPiA+Pj4NCj4gPj4NCj4gKFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9SVU5USU1FX1ZBUklB QkxFX0NBQ0hFX0NPTlRFWFQNCj4gPj4+ICkNCj4gPj4+PiA7DQo+ID4+Pj4+ICsgIC8vDQo+ID4+ Pj4+ICsgIENvbW1TaXplID0gU01NX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFICsNCj4gPj4+Pj4g U01NX1ZBUklBQkxFX0NPTU1VTklDQVRFX0hFQURFUl9TSVpFICsgc2l6ZW9mDQo+ID4+Pj4+DQo+ ID4+Pj4NCj4gPj4+DQo+ID4+DQo+IChTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfUlVOVElNRV9W QVJJQUJMRV9DQUNIRV9DT05URVhUDQo+ID4+PiApDQo+ID4+Pj4gOw0KPiA+Pj4+PiArICBDb21t QnVmZmVyU2l6ZSA9IENvbW1TaXplOw0KPiA+Pj4+PiArICBTdGF0dXMgPSBHZXRDb21tdW5pY2F0 ZUJ1ZmZlciAoJkNvbW1CdWZmZXJTaXplLA0KPiA+Pj4gJkNvbW1CdWZmZXIpOw0KPiA+Pj4+PiAr ICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgZ290byBEb25lOw0KPiA+ Pj4+PiArICB9DQo+ID4+Pj4+ICsgIGlmIChDb21tQnVmZmVyID09IE5VTEwpIHsNCj4gPj4+Pj4g KyAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCj4gPj4+Pj4gKyAgICBnb3RvIERv bmU7DQo+ID4+Pj4+ICsgIH0NCj4gPj4+Pj4gKyAgWmVyb01lbSAoQ29tbUJ1ZmZlciwgQ29tbUJ1 ZmZlclNpemUpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFNtbUNvbW11bmljYXRlSGVhZGVyID0N Cj4gPj4+IChFRklfU01NX0NPTU1VTklDQVRFX0hFQURFUiAqKQ0KPiA+Pj4+PiBDb21tQnVmZmVy Ow0KPiA+Pj4+PiArICBDb3B5R3VpZCAoJlNtbUNvbW11bmljYXRlSGVhZGVyLT5IZWFkZXJHdWlk LA0KPiA+Pj4+PiAmZ0VmaVNtbVZhcmlhYmxlUHJvdG9jb2xHdWlkKTsNCj4gPj4+Pj4gKyAgU21t Q29tbXVuaWNhdGVIZWFkZXItPk1lc3NhZ2VMZW5ndGggPQ0KPiA+Pj4+PiBTTU1fVkFSSUFCTEVf Q09NTVVOSUNBVEVfSEVBREVSX1NJWkUgKyBzaXplb2YNCj4gPj4+Pj4NCj4gPj4+Pg0KPiA+Pj4N Cj4gPj4NCj4gKFNNTV9WQVJJQUJMRV9DT01NVU5JQ0FURV9SVU5USU1FX1ZBUklBQkxFX0NBQ0hF X0NPTlRFWFQNCj4gPj4+ICkNCj4gPj4+PiA7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgU21tVmFy aWFibGVGdW5jdGlvbkhlYWRlciA9DQo+ID4+Pj4+IChTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVf SEVBREVSICopDQo+ID4+PiBTbW1Db21tdW5pY2F0ZUhlYWRlci0NCj4gPj4+Pj4+IERhdGE7DQo+ ID4+Pj4+ICsgIFNtbVZhcmlhYmxlRnVuY3Rpb25IZWFkZXItPkZ1bmN0aW9uID0NCj4gPj4+Pj4N Cj4gPj4+Pg0KPiA+Pj4NCj4gU01NX1ZBUklBQkxFX0ZVTkNUSU9OX0lOSVRfUlVOVElNRV9WQVJJ QUJMRV9DQUNIRV9DT05URVgNCj4gPj4+IFQ7DQo+ID4+Pj4+ICsgIFNtbVJ1bnRpbWVWYXJDYWNo ZUNvbnRleHQgPQ0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+Pg0KPiA+Pg0KPiAoU01NX1ZBUklBQkxF X0NPTU1VTklDQVRFX1JVTlRJTUVfVkFSSUFCTEVfQ0FDSEVfQ09OVEVYVA0KPiA+Pj4+PiAqKSBT bW1WYXJpYWJsZUZ1bmN0aW9uSGVhZGVyLT5EYXRhOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFNt bVJ1bnRpbWVWYXJDYWNoZUNvbnRleHQtPlJ1bnRpbWVIb2JDYWNoZSA9DQo+ID4+Pj4+IG1WYXJp YWJsZVJ1bnRpbWVIb2JDYWNoZUJ1ZmZlcjsNCj4gPj4+Pj4gKyAgU21tUnVudGltZVZhckNhY2hl Q29udGV4dC0+UnVudGltZVZvbGF0aWxlQ2FjaGUgPQ0KPiA+Pj4+PiBtVmFyaWFibGVSdW50aW1l Vm9sYXRpbGVDYWNoZUJ1ZmZlcjsNCj4gPj4+Pj4gKyAgU21tUnVudGltZVZhckNhY2hlQ29udGV4 dC0+UnVudGltZU52Q2FjaGUgPQ0KPiA+Pj4+PiBtVmFyaWFibGVSdW50aW1lTnZDYWNoZUJ1ZmZl cjsNCj4gPj4+Pj4gKyAgU21tUnVudGltZVZhckNhY2hlQ29udGV4dC0+UGVuZGluZ1VwZGF0ZSA9 DQo+ID4+Pj4+ICZtVmFyaWFibGVSdW50aW1lQ2FjaGVQZW5kaW5nVXBkYXRlOw0KPiA+Pj4+PiAr ICBTbW1SdW50aW1lVmFyQ2FjaGVDb250ZXh0LT5SZWFkTG9jayA9DQo+ID4+Pj4+ICZtVmFyaWFi bGVSdW50aW1lQ2FjaGVSZWFkTG9jazsNCj4gPj4+Pj4gKyAgU21tUnVudGltZVZhckNhY2hlQ29u dGV4dC0+SG9iRmx1c2hDb21wbGV0ZSA9DQo+ID4+Pj4+ICZtSG9iRmx1c2hDb21wbGV0ZTsNCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICAvLyBTZW5kIGRhdGEgdG8gU01NLg0K PiA+Pj4+PiArICAvLw0KPiA+Pj4+PiArICBTdGF0dXMgPSBtU21tQ29tbXVuaWNhdGlvbi0+Q29t bXVuaWNhdGUNCj4gPj4+IChtU21tQ29tbXVuaWNhdGlvbiwNCj4gPj4+Pj4gQ29tbUJ1ZmZlciwg JkNvbW1TaXplKTsNCj4gPj4+Pj4gKyAgQVNTRVJUX0VGSV9FUlJPUiAoU3RhdHVzKTsNCj4gPj4+ Pj4gKyAgaWYgKENvbW1TaXplIDw9DQo+ID4+PiBTTU1fVkFSSUFCTEVfQ09NTVVOSUNBVEVfSEVB REVSX1NJWkUpIHsNCj4gPj4+Pj4gKyAgICBTdGF0dXMgPSBFRklfQkFEX0JVRkZFUl9TSVpFOw0K PiA+Pj4+PiArICAgIGdvdG8gRG9uZTsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ ICsgIFN0YXR1cyA9IFNtbVZhcmlhYmxlRnVuY3Rpb25IZWFkZXItPlJldHVyblN0YXR1czsNCj4g Pj4+Pj4gKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KPiA+Pj4+PiArICAgIGdvdG8gRG9u ZTsNCj4gPj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICtEb25lOg0KPiA+Pj4+PiArICBS ZWxlYXNlTG9ja09ubHlBdEJvb3RUaW1lDQo+ID4+PiAoJm1WYXJpYWJsZVNlcnZpY2VzTG9jayk7 DQo+ID4+Pj4+ICsgIHJldHVybiBTdGF0dXM7DQo+ID4+Pj4+ICt9DQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gIC8qKg0KPiA+Pj4+PiAgICBJbml0aWFsaXplIHZhcmlhYmxlIHNlcnZpY2UgYW5kIGluc3Rh bGwgVmFyaWFibGUNCj4gPj4+IEFyY2hpdGVjdHVyYWwgcHJvdG9jb2wuDQo+ID4+Pj4+DQo+ID4+ Pj4+IEBAIC05ODUsNyArMTQwNSw3IEBAIFNtbVZhcmlhYmxlUmVhZHkgKA0KPiA+Pj4+PiAgew0K PiA+Pj4+PiAgICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0 dXM7DQo+ID4+Pj4+DQo+ID4+Pj4+IC0gIFN0YXR1cyA9IGdCUy0+TG9jYXRlUHJvdG9jb2wNCj4g Pj4+ICgmZ0VmaVNtbVZhcmlhYmxlUHJvdG9jb2xHdWlkLCBOVUxMLA0KPiA+Pj4+PiAoVk9JRCAq KikmbVNtbVZhcmlhYmxlKTsNCj4gPj4+Pj4gKyAgU3RhdHVzID0gZ0JTLT5Mb2NhdGVQcm90b2Nv bA0KPiA+Pj4gKCZnRWZpU21tVmFyaWFibGVQcm90b2NvbEd1aWQsIE5VTEwsDQo+ID4+Pj4+IChW T0lEICoqKSAmbVNtbVZhcmlhYmxlKTsNCj4gPj4+Pj4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVz KSkgew0KPiA+Pj4+PiAgICAgIHJldHVybjsNCj4gPj4+Pj4gICAgfQ0KPiA+Pj4+PiBAQCAtMTAw Nyw2ICsxNDI3LDQwIEBAIFNtbVZhcmlhYmxlUmVhZHkgKA0KPiA+Pj4+PiAgICAvLw0KPiA+Pj4+ PiAgICBtVmFyaWFibGVCdWZmZXJQaHlzaWNhbCA9IG1WYXJpYWJsZUJ1ZmZlcjsNCj4gPj4+Pj4N Cj4gPj4+Pj4gKyAgLy8NCj4gPj4+Pj4gKyAgLy8gQWxsb2NhdGUgcnVudGltZSB2YXJpYWJsZSBj YWNoZSBtZW1vcnkNCj4gPj4+IGJ1ZmZlcnMuDQo+ID4+Pj4+ICsgIC8vDQo+ID4+Pj4+ICsgIFN0 YXR1cyA9ICBHZXRSdW50aW1lQ2FjaGVJbmZvICgNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgJm1W YXJpYWJsZVJ1bnRpbWVIb2JDYWNoZUJ1ZmZlclNpemUsDQo+ID4+Pj4+ICsgICAgICAgICAgICAg ICZtVmFyaWFibGVSdW50aW1lTnZDYWNoZUJ1ZmZlclNpemUsDQo+ID4+Pj4+ICsNCj4gPj4+ICZt VmFyaWFibGVSdW50aW1lVm9sYXRpbGVDYWNoZUJ1ZmZlclNpemUsDQo+ID4+Pj4+ICsgICAgICAg ICAgICAgICZtVmFyaWFibGVBdXRoRm9ybWF0DQo+ID4+Pj4+ICsgICAgICAgICAgICAgICk7DQo+ ID4+Pj4+ICsgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgU3RhdHVz ID0gSW5pdFZhcmlhYmxlQ2FjaGUNCj4gPj4+ICgmbVZhcmlhYmxlUnVudGltZUhvYkNhY2hlQnVm ZmVyLA0KPiA+Pj4+PiAmbVZhcmlhYmxlUnVudGltZUhvYkNhY2hlQnVmZmVyU2l6ZSk7DQo+ID4+ Pj4+ICsgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICAgIFN0YXR1 cyA9IEluaXRWYXJpYWJsZUNhY2hlDQo+ID4+PiAoJm1WYXJpYWJsZVJ1bnRpbWVOdkNhY2hlQnVm ZmVyLA0KPiA+Pj4+PiAmbVZhcmlhYmxlUnVudGltZU52Q2FjaGVCdWZmZXJTaXplKTsNCj4gPj4+ Pj4gKyAgICAgIGlmICghRUZJX0VSUk9SIChTdGF0dXMpKSB7DQo+ID4+Pj4+ICsgICAgICAgIFN0 YXR1cyA9IEluaXRWYXJpYWJsZUNhY2hlDQo+ID4+PiAoJm1WYXJpYWJsZVJ1bnRpbWVWb2xhdGls ZUNhY2hlQnVmZmVyLA0KPiA+Pj4+PiAmbVZhcmlhYmxlUnVudGltZVZvbGF0aWxlQ2FjaGVCdWZm ZXJTaXplKTsNCj4gPj4+Pj4gKyAgICAgICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4g Pj4+Pj4gKyAgICAgICAgICBTdGF0dXMgPSBJbml0VmFyaWFibGVQYXJzaW5nDQo+ID4+PiAobVZh cmlhYmxlQXV0aEZvcm1hdCk7DQo+ID4+Pj4+ICsgICAgICAgICAgQVNTRVJUX0VGSV9FUlJPUiAo U3RhdHVzKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICAgICAgICAgIFN0YXR1cyA9DQo+ID4+PiBT ZW5kUnVudGltZVZhcmlhYmxlQ2FjaGVDb250ZXh0VG9TbW0gKCk7DQo+ID4+Pj4+ICsgICAgICAg ICAgaWYgKCFFRklfRVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICAgICAgICAgIFN5bmNS dW50aW1lQ2FjaGUgKCk7DQo+ID4+Pj4+ICsgICAgICAgICAgfQ0KPiA+Pj4+PiArICAgICAgICB9 DQo+ID4+Pj4+ICsgICAgICB9DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+PiArICAgIGlmIChFRklf RVJST1IgKFN0YXR1cykpIHsNCj4gPj4+Pj4gKyAgICAgIG1WYXJpYWJsZVJ1bnRpbWVIb2JDYWNo ZUJ1ZmZlciA9IE5VTEw7DQo+ID4+Pj4+ICsgICAgICBtVmFyaWFibGVSdW50aW1lTnZDYWNoZUJ1 ZmZlciA9IE5VTEw7DQo+ID4+Pj4+ICsgICAgICBtVmFyaWFibGVSdW50aW1lVm9sYXRpbGVDYWNo ZUJ1ZmZlciA9IE5VTEw7DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+PiArICB9DQo+ID4+Pj4+ICsg IEFTU0VSVF9FRklfRVJST1IgKFN0YXR1cyk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gICAgZ1JULT5H ZXRWYXJpYWJsZSAgICAgICAgID0NCj4gPj4+IFJ1bnRpbWVTZXJ2aWNlR2V0VmFyaWFibGU7DQo+ ID4+Pj4+ICAgIGdSVC0+R2V0TmV4dFZhcmlhYmxlTmFtZSA9DQo+ID4+PiBSdW50aW1lU2Vydmlj ZUdldE5leHRWYXJpYWJsZU5hbWU7DQo+ID4+Pj4+ICAgIGdSVC0+U2V0VmFyaWFibGUgICAgICAg ICA9DQo+ID4+PiBSdW50aW1lU2VydmljZVNldFZhcmlhYmxlOw0KPiA+Pj4+PiAtLQ0KPiA+Pj4+ PiAyLjE2LjIud2luZG93cy4xDQo+ID4+Pj4NCj4gPj4+DQo+ID4+DQo+ID4NCg0K