From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.20, mailfrom: mateusz.albecki@intel.com) Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by groups.io with SMTP; Tue, 18 Jun 2019 08:14:52 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 18 Jun 2019 08:14:50 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.63,389,1557212400"; d="scan'208";a="243018581" Received: from irsmsx110.ger.corp.intel.com ([163.33.3.25]) by orsmga001.jf.intel.com with ESMTP; 18 Jun 2019 08:14:48 -0700 Received: from irsmsx111.ger.corp.intel.com (10.108.20.4) by irsmsx110.ger.corp.intel.com (163.33.3.25) with Microsoft SMTP Server (TLS) id 14.3.439.0; Tue, 18 Jun 2019 16:14:45 +0100 Received: from irsmsx102.ger.corp.intel.com ([169.254.2.159]) by irsmsx111.ger.corp.intel.com ([169.254.2.197]) with mapi id 14.03.0439.000; Tue, 18 Jun 2019 16:14:44 +0100 From: "Albecki, Mateusz" To: "Wu, Hao A" , "devel@edk2.groups.io" , "mw@semihalf.com" Subject: Re: [PATCH 2/2] MdeModulePkg/SdMmcHcDxe: Implement revision 3 of SdMmcOverrideProtocol Thread-Topic: [PATCH 2/2] MdeModulePkg/SdMmcHcDxe: Implement revision 3 of SdMmcOverrideProtocol Thread-Index: AQHVGgBSGoSrdnB460q6qodCdK1cwKaUMaiAgAV5/kCAAM4+gIAHHQ7g Date: Tue, 18 Jun 2019 15:14:43 +0000 Message-ID: <92CF190FF2351747A47C1708F0E09C0875E6C2DB@IRSMSX102.ger.corp.intel.com> References: <20190603113346.1288-1-mateusz.albecki@intel.com> <20190603113346.1288-3-mateusz.albecki@intel.com> <92CF190FF2351747A47C1708F0E09C0875E51349@IRSMSX102.ger.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_NT x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNzViMjBlZGQtYzI2Yy00NTBhLWIwNTUtNDY0NTQyOGJmYmFlIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoiQk42NHNzVUVldVAzMlg2d1FZaVFGQ2p1Zk5SWFVCdTNqU3JRN2k0ZmFVN05Sa1MxKzIwTXdUSGFZUmhEZ1ZySyJ9 dlp-product: dlpe-windows dlp-version: 11.0.600.7 dlp-reaction: no-action x-originating-ip: [163.33.239.180] MIME-Version: 1.0 Return-Path: mateusz.albecki@intel.com Content-Language: en-US Content-Type: text/plain; charset="iso-8859-7" Content-Transfer-Encoding: base64 UmVzcG9uc2UgaW5saW5lIHRvIHRoZSBidXMgd2lkdGggc3dpdGNoIGJlZm9yZSBTV0lUQ0ggY29t bWFuZCBpbiBVSFMtSSBtb2RlLiBBcyBJIG1lbnRpb25lZCBpbiBmb3JrZWQgbWVzc2FnZSBtYXBw aW5nIFNEIGRyaXZlciBzdHJlbmd0aCB0byBlTU1DIGRyaXZlciBzdHJlbmd0aCBzZWVtcyBsaWtl IGEgYmFkIGlkZWEgcmlnaHQgbm93IGFzIEkgZG9uJ3Qga25vdyBvZiBhbnkgZU1NQyBob3N0IGNv bnRyb2xsZXIgdGhhdCB3b3VsZCBhY3R1YWxseSBmb2xsb3cgdGhpcyBtYXAgYW5kIHdvdWxkIHJl cXVpcmUgYW55IGhvc3QgcHJvZ3JhbW1pbmcuCgpUaGFua3MsCk1hdGV1c3oKCj4gLS0tLS1Pcmln aW5hbCBNZXNzYWdlLS0tLS0KPiBGcm9tOiBXdSwgSGFvIEEKPiBTZW50OiBGcmlkYXksIEp1bmUg MTQsIDIwMTkgNToxNSBBTQo+IFRvOiBBbGJlY2tpLCBNYXRldXN6IDxtYXRldXN6LmFsYmVja2lA aW50ZWwuY29tPjsgZGV2ZWxAZWRrMi5ncm91cHMuaW87Cj4gbXdAc2VtaWhhbGYuY29tCj4gU3Vi amVjdDogUkU6IFtQQVRDSCAyLzJdIE1kZU1vZHVsZVBrZy9TZE1tY0hjRHhlOiBJbXBsZW1lbnQg cmV2aXNpb24KPiAzIG9mIFNkTW1jT3ZlcnJpZGVQcm90b2NvbAo+IAo+ID4gLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0KPiA+IEZyb206IEFsYmVja2ksIE1hdGV1c3oKPiA+IFNlbnQ6IFRodXJz ZGF5LCBKdW5lIDEzLCAyMDE5IDEwOjM5IFBNCj4gPiBUbzogZGV2ZWxAZWRrMi5ncm91cHMuaW8K PiA+IENjOiBXdSwgSGFvIEEKPiA+IFN1YmplY3Q6IFJFOiBbUEFUQ0ggMi8yXSBNZGVNb2R1bGVQ a2cvU2RNbWNIY0R4ZTogSW1wbGVtZW50Cj4gcmV2aXNpb24KPiA+IDMgb2YgU2RNbWNPdmVycmlk ZVByb3RvY29sCj4gPgo+ID4gUmVzZW5kaW5nIHRvIGdyb3VwLiBJbmxpbmUgcmVwbHkgdG8gc29t ZSBvZiB0aGUgY29tbWVudHMuCj4gPgo+ID4gQXMgZm9yIHRoZSBtYXBwaW5nIGJldHdlZW4gZU1N QyBkcml2ZXIgc3RyZW5ndGggYW5kIFNEIGNvbnRyb2xsZXIKPiBkcml2ZXIKPiA+IHN0cmVuZ3Ro IHNob3VsZCB3ZSB1c2UgdGhpcyBvbmU6Cj4gPgo+ID4gU0QgY29udHJvbGxlciAtPiBlTU1DIGNh cmQKPiA+IEIgICAgICAgICAgICAgICAgICAgICAgICAtPiBUeXBlIDAKPiA+IEEgICAgICAgICAg ICAgICAgICAgICAgIC0+IFR5cGUgMQo+ID4gQyAgICAgICAgICAgICAgICAgICAgICAgLT4gVHlw ZSAyCj4gPiBEICAgICAgICAgICAgICAgICAgICAgICAtPiBUeXBlIDMKPiA+IChub25lKSAgICAg ICAgICAgIC0+IFR5cGU0Cj4gCj4gCj4gWWVzLCBJIHRoaW5rIHRoaXMgbWF0Y2hpbmcgaXMgZmlu ZS4gSW5zcGVjdGluZyB0aGUgU0QgJiBlTU1DIHNwZWNzOgo+IAo+IEZvciBTRCBQaHlzaWNhbCBM YXllciBTcGVjaWZpY2F0aW9uOgo+IERyaXZlciBUeXBlICAgICBOb21pbmFsICAgICBEcml2aW5n Cj4gICAgICAgICAgICAgICAgIEltcGVkYW5jZSAgIENhcGFiaWxpdHkKPiBBICAgICAgICAgICAg ICAgMzPZICAgICAgICAgeDEuNQo+IEIgICAgICAgICAgICAgICA1MNkgICAgICAgICB4MQo+IEMg ICAgICAgICAgICAgICA2NtkgICAgICAgICB4MC43NQo+IEQgICAgICAgICAgICAgICAxMDDZICAg ICAgICB4MC41Cj4gCj4gRm9yIEVtYmVkZGVkIE11bHRpLU1lZGlhIENhcmQgKGUuTU1DKSBFbGVj dHJpY2FsIFN0YW5kYXJkOgo+IERyaXZlciBUeXBlICAgICBOb21pbmFsICAgICBBcHByb3hpbWF0 ZWQgZHJpdmVyIGNhcGFiaWxpdHkKPiBWYWx1ZXMgICAgICAgICAgSW1wZWRhbmNlICAgY29tcGFy ZWQgdG8gVHlwZS0wCj4gMHgwICAgICAgICAgICAgIDUw2SAgICAgICAgIHgxCj4gMHgxICAgICAg ICAgICAgIDMz2SAgICAgICAgIHgxLjUKPiAweDIgICAgICAgICAgICAgNjbZICAgICAgICAgeDAu NzUKPiAweDMgICAgICAgICAgICAgMTAw2SAgICAgICAgeDAuNQo+IDB4NCAgICAgICAgICAgICA0 MNkgICAgICAgICB4MS4yCj4gCj4gVGhlIGFib3ZlIG1hcHBpbmcgaXMgY29uc2lzdGVudCB3aXRo IHJlZ2FyZCB0byB0aGUgTm9taW5hbCBJbXBlZGFuY2UgJgo+IERyaXZpbmcgQ2FwYWJpbGl0eSBw YXJhbWV0ZXJzLgo+IAo+IAo+ID4KPiA+IEFuZCBUeXBlIDQgd291bGQgYmUgaWRlbnRpZmllZCBi eSBiaXQgMzkgaW4gY2FwYWJpbGl0eSByZWdpc3RlciB3aGljaCBpcwo+ID4gY3VycmVudGx5IG1h cmtlZCBhcyByZXNlcnZlZCBpbiBTRCBjb250cm9sbGVyIHNwZWNpZmljYXRpb24uIFRoaXMgaXMg Y3VycmVudAo+ID4gY2FwYWJpbGl0eSByZWdpc3RlciBkZWZpbml0aW9uIGluIHRoZSBkcml2ZXIu Cj4gCj4gCj4gSSBhbSBub3Qgc3VyZSBpZiB0aGUgYml0MzkgaW4gdGhlIGNhcGFiaWxpdHkgcmVn aXN0ZXIgd29ya3MgZm9yIGFsbCBTRAo+IGhvc3QgY29udHJvbGxlciAoYmVjYXVzZSBpdCBpcyBu b3QgZG9jdW1lbnRlZCBpbiBzcGVjcywgYXMgZmFyIGFzIEkga25vdykuCj4gSSBzdWdnZXN0IHdl IGp1c3QgaWdub3JlIHRoZSBIQyBjYXBhYmlsaXR5IHdoZW4gc2V0dGluZyBkcml2ZXIgc3RyZW5n dGgKPiB0eXBlIDQgZm9yIGVNTUMgZGV2aWNlcy4KPiAKPiBSZXNwb25zZSB0byBvdGhlciBpbmxp bmUgY29tbWVudHMgYmVsb3c6Cj4gCj4gCj4gPgo+ID4gVGhhbmtzLAo+ID4gTWF0ZXVzego+ID4K PiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gRnJvbTogV3UsIEhhbyBBCj4g PiA+IFNlbnQ6IE1vbmRheSwgSnVuZSAxMCwgMjAxOSA1OjE5IEFNCj4gPiA+IFRvOiBBbGJlY2tp LCBNYXRldXN6IDxtYXRldXN6LmFsYmVja2lAaW50ZWwuY29tPgo+ID4gPiBTdWJqZWN0OiBSRTog W1BBVENIIDIvMl0gTWRlTW9kdWxlUGtnL1NkTW1jSGNEeGU6IEltcGxlbWVudAo+ID4gcmV2aXNp b24KPiA+ID4gMyBvZiBTZE1tY092ZXJyaWRlUHJvdG9jb2wKPiA+ID4KPiA+ID4gSGVsbG8gTWF0 ZXVzeiwKPiA+ID4KPiA+ID4gU29tZSBpbmxpbmUgY29tbWVudHMgYmVsb3c6Cj4gPiA+Cj4gPiA+ ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+ID4gPiBGcm9tOiBBbGJlY2tpLCBNYXRl dXN6Cj4gPiA+ID4gU2VudDogTW9uZGF5LCBKdW5lIDAzLCAyMDE5IDc6MzQgUE0KPiA+ID4gPiBD YzogQWxiZWNraSwgTWF0ZXVzejsgV3UsIEhhbyBBOyBBbGJlY2tpCj4gPiA+ID4gU3ViamVjdDog W1BBVENIIDIvMl0gTWRlTW9kdWxlUGtnL1NkTW1jSGNEeGU6IEltcGxlbWVudAo+IHJldmlzaW9u Cj4gPiAzCj4gPiA+ID4gb2YgU2RNbWNPdmVycmlkZVByb3RvY29sCj4gPiA+ID4KPiA+ID4gPiBJ bXBsZW1lbnQgc3VwcG9ydCBmb3IgR2V0T3BlcmF0aW5nUGFyYW10ZXJzIG5vdGlmeSBwaGFzZQo+ ID4gPiA+IGluIFNkTW1jSGNEeGUgZHJpdmVyLiBHZXRPcGVyYXRpbmdQYXJhbWV0ZXJzIG5vdGlm eSBwaGFzZQo+ID4gPiA+IGlzIHNpZ25hbGVkIGJlZm9yZSB3ZSBzdGFydCBjYXJkIGRldGVjdGlv biBhbmQgaW5pdGlhbGl6YXRpb24uCj4gPiA+ID4gQ29kZSBoYXMgYmVlbiB1cGRhdGVkIGZvciBi b3RoIGVNTUMgYW5kIFNEIGNhcmQgY29udHJvbGxlcnMgdG8KPiA+ID4gPiB0YWtlIGludG8gY29u c2lkZXJhdGlvbiB0aG9zZSBuZXcgcGFyYW1ldGVycy4gSW5pdGlhbGl6YXRpb24gcHJvY2Vzcwo+ ID4gPiA+IGhhcyBiZWVuIGRpdmlkZWQgaW50byAyIHN0ZXBzLiBJbiB0aGUgZmlyc3Qgc3RlcCB3 ZSBicmluZyB0aGUgbGluawo+ID4gPiA+IHVwIHRvIHRoZSBwb2ludCB3aGVyZSB3ZSBjYW4gZ2V0 IGNhcmQgaWRlbnRpZmljYXRpb24gZGF0YShFeHRlbmRlZAo+ID4gPiA+IENTRCBpbiBlTU1DIGNh c2UgYW5kIFNXSVRDSCBjb21tYW5kIHJlc3BvbnNlIGluIFNEIGNhcmQgY2FzZSkuCj4gVGhpcwo+ ID4gPiA+IGRhdGEgaXMgbGF0ZXIgdXNlZCBhbG9uZyB3aXRoIGNvbnRyb2xsZXIgY2FwYWJpbGl0 aWVzIGFuZCBvcGVyYXRpbmcKPiA+ID4gPiBwYXJhbWV0ZXJzIHBhc3NlZCBpbiBHZXRPcGVyYXRp bmdQYXJhbWV0ZXJzIHBoYXNlIHRvIGNob29zZQo+ID4gcHJlZmVycmVkCj4gPiA+ID4gYnVzIHNl dHRpbmdzIGluIEdldFRhcmdldEJ1c1NldHRpbmdzIGZ1bmN0aW9uLiBUaG9zZSBzZXR0aW5ncyBh cmUgbGF0ZXIKPiA+ID4gPiBvbiB0byBzdGFydCBidXMgdHJhaW5pbmcgdG8gaGlnaCBzcGVlZHMu IElmIHVzZXIgcGFzc2VzIGluY29tcGF0aWJsZQo+ID4gPiA+IHNldHRpbmcgd2l0aCBzZWxlY3Rl ZCBidXMgdGltaW5nIGRyaXZlciB3aWxsIGFzc3VtZSBpdCdzIHN0YW5kYXJkCj4gYmVoYXZpb3IK PiA+ID4gd2l0aAo+ID4gPiA+IHJlc3BlY3QgdG8gdGhhdCBzZXR0aW5nLiBGb3IgaW5zdGFuY2Ug aWYgSFM0MDAgaGFzIGJlZW4gc2VsZWN0ZWQgYXMgYQo+ID4gPiA+IHRhcmdldCBidXMgdGltaW5n IGR1ZSB0byBjYXJkIGFuZCBjb250cm9sbGVyIHN1cHBvcnQgYnVzIHdpZHRoIHNldHRpbmcKPiBv Zgo+ID4gPiA+IDQgYW5kIDEgYml0IHdvbid0IGJlIHJlc3BlY3RlZCBhbmQgOCBiaXQgc2V0dGlu ZyB3aWxsIGJlIGNob3NlbiBpbnN0ZWFkLgo+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBDYzogaGFv LmEud3VAaW50ZWwuY29tCj4gPiA+ID4gU2lnbmVkLW9mZi1ieTogQWxiZWNraSwgTWF0ZXVzeiA8 bWF0ZXVzei5hbGJlY2tpQGludGVsLmNvbT4KPiA+ID4gPiBDb250cmlidXRlZC11bmRlcjogVGlh bm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xCj4gPiA+ID4gLS0tCj4gPiA+ID4gIE1k ZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvRW1tY0RldmljZS5jICAgIHwgNTIyCj4g PiA+ID4gKysrKysrKysrKysrKysrLS0tLS0tCj4gPiA+ID4gIE1kZU1vZHVsZVBrZy9CdXMvUGNp L1NkTW1jUGNpSGNEeGUvU2REZXZpY2UuYyAgICAgIHwgMzgxCj4gPiA+ID4gKysrKysrKysrKysr LS0tCj4gPiA+ID4gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lI Y0R4ZS5jIHwgIDUyICstCj4gPiA+ID4gIE1kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNE eGUvU2RNbWNQY2lIY0R4ZS5oIHwgIDE4ICstCj4gPiA+ID4gIE1kZU1vZHVsZVBrZy9CdXMvUGNp L1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lIY2kuYyAgIHwgICA4ICstCj4gPiA+ID4gIE1kZU1vZHVs ZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lIY2kuaCAgIHwgICA4ICstCj4gPiA+ ID4gIDYgZmlsZXMgY2hhbmdlZCwgNzUwIGluc2VydGlvbnMoKyksIDIzOSBkZWxldGlvbnMoLSkK PiA+ID4gPgo+ID4gPiA+IGRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1Bj aUhjRHhlL0VtbWNEZXZpY2UuYwo+ID4gPiA+IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQ Y2lIY0R4ZS9FbW1jRGV2aWNlLmMKPiA+ID4gPiBpbmRleCBkZWFmNDQ2OGM5Li4xYTgxZjZkMjUw IDEwMDY0NAo+ID4gPiA+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUv RW1tY0RldmljZS5jCj4gPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lI Y0R4ZS9FbW1jRGV2aWNlLmMKPiA+ID4gPiBAQCAtNDQ5LDcgKzQ0OSw3IEBAIEVGSV9TVEFUVVMK PiA+ID4gPiAgRW1tY1NlbmRUdW5pbmdCbGsgKAo+ID4gPiA+ICAgIElOIEVGSV9TRF9NTUNfUEFT U19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LAo+ID4gPiA+ICAgIElOIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgU2xvdCwKPiA+ID4gPiAtICBJTiBVSU5UOCAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoCj4gPiA+ID4gKyAgSU4gVUlOVDE2ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aAo+ID4gPiA+ICAgICkKPiA+ID4gPiAgewo+ ID4gPiA+ICAgIEVGSV9TRF9NTUNfQ09NTUFORF9CTE9DSyAgICAgICAgICAgICAgU2RNbWNDbWRC bGs7Cj4gPiA+ID4gQEAgLTUwNiw3ICs1MDYsNyBAQCBFbW1jVHVuaW5nQ2xrRm9ySHMyMDAgKAo+ ID4gPiA+ICAgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgICAgICAgICAgICAgKlBjaUlvLAo+ ID4gPiA+ICAgIElOIEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MICAgICAgKlBhc3NUaHJ1 LAo+ID4gPiA+ICAgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvdCwK PiA+ID4gPiAtICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRo Cj4gPiA+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0 aAo+ID4gPiA+ICAgICkKPiA+ID4gPiAgewo+ID4gPiA+ICAgIEVGSV9TVEFUVVMgICAgICAgICAg U3RhdHVzOwo+ID4gPiA+IEBAIC01ODMsNyArNTgzLDcgQEAgRW1tY1N3aXRjaEJ1c1dpZHRoICgK PiA+ID4gPiAgICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsCj4g PiA+ID4gICAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsCj4gPiA+ ID4gICAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJc0RkciwKPiA+ID4g PiAtICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoCj4gPiA+ ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aAo+ID4g PiA+ICAgICkKPiA+ID4gPiAgewo+ID4gPiA+ICAgIEVGSV9TVEFUVVMgICAgICAgICAgU3RhdHVz Owo+ID4gPiA+IEBAIC02NDEsMTMgKzY0MSwxMyBAQCBFbW1jU3dpdGNoQnVzV2lkdGggKAo+ID4g PiA+ICAgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNhbCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9u IDYuNiBhbmQgU0QgSG9zdAo+ID4gPiA+IENvbnRyb2xsZXIKPiA+ID4gPiAgICBTaW1wbGlmaWVk IFNwZWMgMy4wIEZpZ3VyZSAzLTMgZm9yIGRldGFpbHMuCj4gPiA+ID4KPiA+ID4gPiAtICBAcGFy YW1baW5dIFBjaUlvICAgICAgICAgIEEgcG9pbnRlciB0byB0aGUgRUZJX1BDSV9JT19QUk9UT0NP TAo+IGluc3RhbmNlLgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2lu dGVyIHRvIHRoZQo+ID4gPiA+IEVGSV9TRF9NTUNfUEFTU19USFJVX1BST1RPQ09MIGluc3RhbmNl Lgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gU2xvdCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9m IHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlCj4gPiA+IGNvbW1hbmQKPiA+ID4gPiB0by4KPiA+ID4g PiAtICBAcGFyYW1baW5dIFJjYSAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVz cyB0byBiZSBhc3NpZ25lZC4KPiA+ID4gPiAtICBAcGFyYW1baW5dIEhzVGltaW5nICAgICAgIFRo ZSB2YWx1ZSB0byBiZSB3cml0dGVuIHRvIEhTX1RJTUlORyBmaWVsZAo+IG9mCj4gPiA+ID4gRVhU X0NTRCByZWdpc3Rlci4KPiA+ID4gPiAtICBAcGFyYW1baW5dIFRpbWluZyAgICAgICAgIFRoZSBi dXMgbW9kZSB0aW1pbmcgaW5kaWNhdG9yLgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gQ2xvY2tGcmVx ICAgICAgVGhlIG1heCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0LCB0aGUgdW5pdAo+IGlzCj4g PiA+ID4gTUh6Lgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gUGNpSW8gICAgICAgICAgIEEgcG9pbnRl ciB0byB0aGUgRUZJX1BDSV9JT19QUk9UT0NPTAo+ID4gaW5zdGFuY2UuCj4gPiA+ID4gKyAgQHBh cmFtW2luXSBQYXNzVGhydSAgICAgICAgQSBwb2ludGVyIHRvIHRoZQo+ID4gPiA+IEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MIGluc3RhbmNlLgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2xv dCAgICAgICAgICAgIFRoZSBzbG90IG51bWJlciBvZiB0aGUgU0QgY2FyZCB0byBzZW5kIHRoZQo+ ID4gPiA+IGNvbW1hbmQgdG8uCj4gPiA+ID4gKyAgQHBhcmFtW2luXSBSY2EgICAgICAgICAgICAg VGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJlIGFzc2lnbmVkLgo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gRHJpdmVyU3RyZW5ndGggIERyaXZlciBzdHJlbmd0aCB0byBzZXQgZm9yIHNwZWVk IG1vZGVzCj4gPiB0aGF0Cj4gPiA+ID4gc3VwcG9ydCBpdC4KPiA+ID4gPiArICBAcGFyYW1baW5d IFRpbWluZyAgICAgICAgICBUaGUgYnVzIG1vZGUgdGltaW5nIGluZGljYXRvci4KPiA+ID4KPiA+ ID4KPiA+ID4gUGxlYXNlIGhlbHAgdG8gdXBkYXRlIHRoZSBwYXJhbWV0ZXIgY29tbWVudCB0byBy ZWZsZWN0IHRoZSBuYW1lCj4gY2hhbmdlCj4gPiA+IGZyb20KPiA+ID4gJ1RpbWluZycgdG8gJ0J1 c1RpbWluZycuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4gKyAgQHBhcmFtW2luXSBDbG9ja0ZyZXEgICAg ICAgVGhlIG1heCBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0LCB0aGUgdW5pdAo+IGlzCj4gPiA+ ID4gTUh6Lgo+ID4gPiA+Cj4gPiA+ID4gICAgQHJldHZhbCBFRklfU1VDQ0VTUyAgICAgICBUaGUg b3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lgo+ID4gPiA+ICAgIEByZXR2YWwgT3RoZXJzICAg ICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4KPiA+ID4gPiBAQCAtNjU5LDggKzY1OSw4IEBA IEVtbWNTd2l0Y2hCdXNUaW1pbmcgKAo+ID4gPiA+ICAgIElOIEVGSV9TRF9NTUNfUEFTU19USFJV X1BST1RPQ09MICAgICAgKlBhc3NUaHJ1LAo+ID4gPiA+ICAgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU2xvdCwKPiA+ID4gPiAgICBJTiBVSU5UMTYgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFJjYSwKPiA+ID4gPiAtICBJTiBVSU5UOCAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEhzVGltaW5nLAo+ID4gPiA+IC0gIElOIFNEX01NQ19CVVNfTU9ERSAgICAg ICAgICAgICAgICAgICAgVGltaW5nLAo+ID4gPiA+ICsgIElOIEVES0lJX1NEX01NQ19EUklWRVJf U1RSRU5HVEggICAgICAgRHJpdmVyU3RyZW5ndGgsCj4gPiA+ID4gKyAgSU4gU0RfTU1DX0JVU19N T0RFICAgICAgICAgICAgICAgICAgICBCdXNUaW1pbmcsCj4gPiA+ID4gICAgSU4gVUlOVDMyICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9ja0ZyZXEKPiA+ID4gPiAgICApCj4gPiA+ID4g IHsKPiA+ID4gPiBAQCAtNjc4LDEyICs2NzgsMjkgQEAgRW1tY1N3aXRjaEJ1c1RpbWluZyAoCj4g PiA+ID4gICAgLy8KPiA+ID4gPiAgICBBY2Nlc3MgPSAweDAzOwo+ID4gPiA+ICAgIEluZGV4ICA9 IE9GRlNFVF9PRiAoRU1NQ19FWFRfQ1NELCBIc1RpbWluZyk7Cj4gPiA+ID4gLSAgVmFsdWUgID0g SHNUaW1pbmc7Cj4gPiA+ID4gICAgQ21kU2V0ID0gMDsKPiA+ID4gPiArICBzd2l0Y2ggKEJ1c1Rp bWluZykgewo+ID4gPiA+ICsgICAgY2FzZSBTZE1tY01tY0hzNDAwOgo+ID4gPiA+ICsgICAgICBW YWx1ZSA9IChVSU5UOCkoKERyaXZlclN0cmVuZ3RoLkVtbWMgPDwgNCkgfCAzKTsKPiA+ID4gPiAr ICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jTW1jSHMyMDA6Cj4gPiA+ID4gKyAg ICAgIFZhbHVlID0gKFVJTlQ4KSgoRHJpdmVyU3RyZW5ndGguRW1tYyA8PCA0KSB8IDIpOwo+ID4g PiA+ICsgICAgICBicmVhazsKPiA+ID4gPiArICAgIGNhc2UgU2RNbWNNbWNIc1NkcjoKPiA+ID4g PiArICAgIGNhc2UgU2RNbWNNbWNIc0RkcjoKPiA+ID4gPiArICAgICAgVmFsdWUgPSAxOwo+ID4g PiA+ICsgICAgICBicmVhazsKPiA+ID4gPiArICAgIGNhc2UgU2RNbWNNbWNMZWdhY3k6Cj4gPiA+ ID4gKyAgICAgIFZhbHVlID0gMDsKPiA+ID4gPiArICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBk ZWZhdWx0Ogo+ID4gPiA+ICsgICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRW1tY1N3aXRjaEJ1 c1RpbWluZzogVW5zdXBwb3J0ZWQKPiA+ID4gPiBCdXNUaW1pbmcoJWRcbikiLCBCdXNUaW1pbmcp KTsKPiA+ID4gPiArICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsKPiA+ID4gPiAr ICB9Cj4gPiA+ID4KPiA+ID4gPiAgICBTdGF0dXMgPSBFbW1jU3dpdGNoIChQYXNzVGhydSwgU2xv dCwgQWNjZXNzLCBJbmRleCwgVmFsdWUsIENtZFNldCk7Cj4gPiA+ID4gICAgaWYgKEVGSV9FUlJP UiAoU3RhdHVzKSkgewo+ID4gPiA+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIkVtbWNTd2l0 Y2hCdXNUaW1pbmc6IFN3aXRjaCB0bwo+ID4gaHN0aW1pbmcgJWQKPiA+ID4gPiBmYWlscyB3aXRo ICVyXG4iLCBIc1RpbWluZywgU3RhdHVzKSk7Cj4gPiA+ID4gKyAgICBERUJVRyAoKERFQlVHX0VS Uk9SLCAiRW1tY1N3aXRjaEJ1c1RpbWluZzogU3dpdGNoIHRvIGJ1cwo+ID4gPiA+IHRpbWluZyAl ZCBmYWlscyB3aXRoICVyXG4iLCBCdXNUaW1pbmcsIFN0YXR1cykpOwo+ID4gPiA+ICAgICAgcmV0 dXJuIFN0YXR1czsKPiA+ID4gPiAgICB9Cj4gPiA+ID4KPiA+ID4gPiBAQCAtNzEzLDcgKzczMCw3 IEBAIEVtbWNTd2l0Y2hCdXNUaW1pbmcgKAo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFByaXZhdGUtPkNvbnRyb2xsZXJIYW5kbGUsCj4gPiA+ID4gICAgICAgICAgICAgICAgICAg ICAgICAgICAgU2xvdCwKPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGtpaVNk TW1jU3dpdGNoQ2xvY2tGcmVxUG9zdCwKPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAg ICAmVGltaW5nCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkJ1c1RpbWluZwo+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICk7Cj4gPiA+ID4gICAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7Cj4gPiA+ID4gICAgICAgIERFQlVHICgoCj4gPiA+ID4gQEAgLTc1 NCwyNSArNzcxLDM0IEBAIEVtbWNTd2l0Y2hUb0hpZ2hTcGVlZCAoCj4gPiA+Cj4gPiA+Cj4gPiA+ IFBsZWFzZSBoZWxwIHRvIHVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVudHMgZm9yCj4gPiA+IEVt bWNTd2l0Y2hUb0hpZ2hTcGVlZCgpIGFmdGVyCj4gPiA+IHRoZSBwYXJhbWV0ZXIgY2hhbmdlcy4K PiA+ID4KPiA+ID4KPiA+ID4gPiAgICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAg ICAgICpQYXNzVGhydSwKPiA+ID4gPiAgICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNsb3QsCj4gPiA+ID4gICAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSY2EsCj4gPiA+ID4gLSAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDbG9ja0ZyZXEsCj4gPiA+ID4gLSAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBJc0RkciwKPiA+ID4gPiAtICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIEJ1c1dpZHRoCj4gPiA+ID4gKyAgSU4gRURLSUlfU0RfTU1DX0JVU19NT0RFICAgICAgICAg ICAgICAqQnVzTW9kZQo+ID4gPiA+ICAgICkKPiA+ID4gPiAgewo+ID4gPiA+ICAgIEVGSV9TVEFU VVMgICAgICAgICAgICAgIFN0YXR1czsKPiA+ID4gPiAtICBVSU5UOCAgICAgICAgICAgICAgICAg ICBIc1RpbWluZzsKPiA+ID4gPiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBIb3N0Q3RybDE7 Cj4gPiA+ID4gLSAgU0RfTU1DX0JVU19NT0RFICAgICAgICAgVGltaW5nOwo+ID4gPiA+ICAgIFNE X01NQ19IQ19QUklWQVRFX0RBVEEgICpQcml2YXRlOwo+ID4gPiA+ICsgIEJPT0xFQU4gICAgICAg ICAgICAgICAgIElzRGRyOwo+ID4gPiA+Cj4gPiA+ID4gICAgUHJpdmF0ZSA9IFNEX01NQ19IQ19Q UklWQVRFX0ZST01fVEhJUyAoUGFzc1RocnUpOwo+ID4gPiA+Cj4gPiA+ID4gLSAgU3RhdHVzID0g RW1tY1N3aXRjaEJ1c1dpZHRoIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgSXNEZHIsCj4g PiA+IEJ1c1dpZHRoKTsKPiA+ID4gPiArICBpZiAoKEJ1c01vZGUtPkJ1c1RpbWluZyAhPSBTZE1t Y01tY0hzU2RyICYmIEJ1c01vZGUtCj4gPiA+ID4gPkJ1c1RpbWluZyAhPSBTZE1tY01tY0hzRGRy KSB8fAo+ID4gPiA+ICsgICAgICBCdXNNb2RlLT5DbG9ja0ZyZXEgPiA1Mikgewo+ID4gPiA+ICsg ICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsKPiA+ID4gPiArICB9Cj4gPiA+ID4gKwo+ ID4gPiA+ICsgIGlmIChCdXNNb2RlLT5CdXNUaW1pbmcgPT0gU2RNbWNNbWNIc0Rkcikgewo+ID4g PiA+ICsgICAgSXNEZHIgPSBUUlVFOwo+ID4gPiA+ICsgIH0gZWxzZSB7Cj4gPiA+ID4gKyAgICBJ c0RkciA9IEZBTFNFOwo+ID4gPiA+ICsgIH0KPiA+ID4gPiArCj4gPiA+ID4gKyAgU3RhdHVzID0g RW1tY1N3aXRjaEJ1c1dpZHRoIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgSXNEZHIsCj4g PiA+IEJ1c01vZGUtCj4gPiA+ID4gPkJ1c1dpZHRoKTsKPiA+ID4gPiAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7Cj4gPiA+ID4gICAgICByZXR1cm4gU3RhdHVzOwo+ID4gPiA+ICAgIH0KPiA+ ID4gPiArCj4gPiA+ID4gICAgLy8KPiA+ID4gPiAtICAvLyBTZXQgdG8gSGlnaHQgU3BlZWQgdGlt aW5nCj4gPiA+ID4gKyAgLy8gU2V0IHRvIEhpZ2ggU3BlZWQgdGltaW5nCj4gPiA+ID4gICAgLy8K PiA+ID4gPiAgICBIb3N0Q3RybDEgPSBCSVQyOwo+ID4gPiA+ICAgIFN0YXR1cyA9IFNkTW1jSGNP ck1taW8gKFBjaUlvLCBTbG90LCBTRF9NTUNfSENfSE9TVF9DVFJMMSwKPiA+IHNpemVvZgo+ID4g PiA+IChIb3N0Q3RybDEpLCAmSG9zdEN0cmwxKTsKPiA+ID4gPiBAQCAtNzgwLDM3ICs4MDYsMjcg QEAgRW1tY1N3aXRjaFRvSGlnaFNwZWVkICgKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4g PiA+ID4gICAgfQo+ID4gPiA+Cj4gPiA+ID4gLSAgaWYgKElzRGRyKSB7Cj4gPiA+ID4gLSAgICBU aW1pbmcgPSBTZE1tY01tY0hzRGRyOwo+ID4gPiA+IC0gIH0gZWxzZSBpZiAoQ2xvY2tGcmVxID09 IDUyKSB7Cj4gPiA+ID4gLSAgICBUaW1pbmcgPSBTZE1tY01tY0hzU2RyOwo+ID4gPiA+IC0gIH0g ZWxzZSB7Cj4gPiA+ID4gLSAgICBUaW1pbmcgPSBTZE1tY01tY0xlZ2FjeTsKPiA+ID4gPiAtICB9 Cj4gPiA+ID4gLQo+ID4gPiA+IC0gIFN0YXR1cyA9IFNkTW1jSGNVaHNTaWduYWxpbmcgKFByaXZh dGUtPkNvbnRyb2xsZXJIYW5kbGUsIFBjaUlvLCBTbG90LAo+ID4gPiA+IFRpbWluZyk7Cj4gPiA+ ID4gKyAgU3RhdHVzID0gU2RNbWNIY1Voc1NpZ25hbGluZyAoUHJpdmF0ZS0+Q29udHJvbGxlckhh bmRsZSwgUGNpSW8sCj4gU2xvdCwKPiA+ID4gPiBCdXNNb2RlLT5CdXNUaW1pbmcpOwo+ID4gPiA+ ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7 Cj4gPiA+ID4gICAgfQo+ID4gPiA+Cj4gPiA+ID4gLSAgSHNUaW1pbmcgPSAxOwo+ID4gPiA+IC0g IFN0YXR1cyA9IEVtbWNTd2l0Y2hCdXNUaW1pbmcgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgUmNh LCBIc1RpbWluZywKPiA+ID4gVGltaW5nLAo+ID4gPiA+IENsb2NrRnJlcSk7Cj4gPiA+ID4gLQo+ ID4gPiA+IC0gIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gKyAgcmV0dXJuIEVtbWNTd2l0Y2hCdXNU aW1pbmcgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgUmNhLCBCdXNNb2RlLQo+ID4gPiA+ID5Ecml2 ZXJTdHJlbmd0aCwgQnVzTW9kZS0+QnVzVGltaW5nLCBCdXNNb2RlLT5DbG9ja0ZyZXEpOwo+ID4g PiA+ICB9Cj4gPiA+ID4KPiA+ID4gPiAgLyoqCj4gPiA+ID4gLSAgU3dpdGNoIHRvIHRoZSBIUzIw MCB0aW1pbmcgYWNjb3JkaW5nIHRvIHJlcXVlc3QuCj4gPiA+ID4gKyAgU3dpdGNoIHRvIHRoZSBI UzIwMCB0aW1pbmcuIFRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGVNTUMgYnVzIGlzCj4gPiBz dGlsbAo+ID4gPiBpbgo+ID4gPiA+IGxlZ2FjeSBtb2RlLgo+ID4gPiA+Cj4gPiA+ID4gICAgUmVm ZXIgdG8gRU1NQyBFbGVjdHJpY2FsIFN0YW5kYXJkIFNwZWMgNS4xIFNlY3Rpb24gNi42LjggYW5k IFNEIEhvc3QKPiA+ID4gPiBDb250cm9sbGVyCj4gPiA+ID4gICAgU2ltcGxpZmllZCBTcGVjIDMu MCBGaWd1cmUgMi0yOSBmb3IgZGV0YWlscy4KPiA+ID4gPgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0g UGNpSW8gICAgICAgICAgQSBwb2ludGVyIHRvIHRoZSBFRklfUENJX0lPX1BST1RPQ09MCj4gaW5z dGFuY2UuCj4gPiA+ID4gLSAgQHBhcmFtW2luXSBQYXNzVGhydSAgICAgICBBIHBvaW50ZXIgdG8g dGhlCj4gPiA+ID4gRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgaW5zdGFuY2UuCj4gPiA+ ID4gLSAgQHBhcmFtW2luXSBTbG90ICAgICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNE IGNhcmQgdG8gc2VuZCB0aGUKPiA+ID4gY29tbWFuZAo+ID4gPiA+IHRvLgo+ID4gPiA+IC0gIEBw YXJhbVtpbl0gUmNhICAgICAgICAgICAgVGhlIHJlbGF0aXZlIGRldmljZSBhZGRyZXNzIHRvIGJl IGFzc2lnbmVkLgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgVGhlIG1heCBj bG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0Lgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gQnVzV2lkdGgg ICAgICAgVGhlIGJ1cyB3aWR0aCB0byBiZSBzZXQsIGl0IGNvdWxkIGJlIDQgb3IgOC4KPiA+ID4g PiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgICBBIHBvaW50ZXIgdG8gdGhlIEVGSV9QQ0lf SU9fUFJPVE9DT0wKPiA+IGluc3RhbmNlLgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gUGFzc1RocnUg ICAgICAgIEEgcG9pbnRlciB0byB0aGUKPiA+ID4gPiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9U T0NPTCBpbnN0YW5jZS4KPiA+ID4gPiArICBAcGFyYW1baW5dIFNsb3QgICAgICAgICAgICBUaGUg c2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUKPiA+ID4gPiBjb21tYW5kIHRv Lgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgIFRoZSByZWxhdGl2ZSBkZXZp Y2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4KPiA+ID4gPiArICBAcGFyYW1baW5dIERyaXZlclN0 cmVuZ3RoICBUaGUgZHJpdmVyIHN0cmVuZ3RoIHRvIGJlIHNlbGVjdGVkLgo+ID4gPiA+ICsgIEBw YXJhbVtpbl0gQ2xvY2tGcmVxICAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRvIGJlIHNl dC4KPiA+ID4gPiArICBAcGFyYW1baW5dIEJ1c1dpZHRoICAgICAgICBUaGUgYnVzIHdpZHRoIHRv IGJlIHNldCwgaXQgY291bGQgYmUgNCBvciA4Lgo+ID4gPiA+Cj4gPiA+ID4gICAgQHJldHZhbCBF RklfU1VDQ0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lgo+ID4gPiA+ ICAgIEByZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4KPiA+ID4g PiBAQCAtODIyLDMwICs4MzgsMjUgQEAgRW1tY1N3aXRjaFRvSFMyMDAgKAo+ID4gPgo+ID4gPgo+ ID4gPiBQbGVhc2UgaGVscCB0byB1cGRhdGUgdGhlIGZ1bmN0aW9uIGNvbW1lbnRzIGZvciBFbW1j U3dpdGNoVG9IUzIwMCgpCj4gPiA+IGFmdGVyIHRoZQo+ID4gPiBwYXJhbWV0ZXIgY2hhbmdlcy4K PiA+ID4KPiA+ID4KPiA+ID4gPiAgICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAg ICAgICpQYXNzVGhydSwKPiA+ID4gPiAgICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFNsb3QsCj4gPiA+ID4gICAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBSY2EsCj4gPiA+ID4gLSAgSU4gVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBDbG9ja0ZyZXEsCj4gPiA+ID4gLSAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCdXNXaWR0aAo+ID4gPiA+ICsgIElOIEVES0lJX1NEX01NQ19CVVNfTU9ERSAgICAgICAg ICAgICAgKkJ1c01vZGUKPiA+ID4gPiAgICApCj4gPiA+ID4gIHsKPiA+ID4gPiAgICBFRklfU1RB VFVTICAgICAgICAgICAgICAgU3RhdHVzOwo+ID4gPiA+IC0gIFVJTlQ4ICAgICAgICAgICAgICAg ICAgICBIc1RpbWluZzsKPiA+ID4gPiAgICBVSU5UMTYgICAgICAgICAgICAgICAgICAgQ2xvY2tD dHJsOwo+ID4gPiA+IC0gIFNEX01NQ19CVVNfTU9ERSAgICAgICAgICBUaW1pbmc7Cj4gPiA+ID4g ICAgU0RfTU1DX0hDX1BSSVZBVEVfREFUQSAgKlByaXZhdGU7Cj4gPiA+ID4KPiA+ID4gPiAgICBQ cml2YXRlID0gU0RfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChQYXNzVGhydSk7Cj4gPiA+ID4K PiA+ID4gPiAtICBpZiAoKEJ1c1dpZHRoICE9IDQpICYmIChCdXNXaWR0aCAhPSA4KSkgewo+ID4g PiA+ICsgIGlmIChCdXNNb2RlLT5CdXNUaW1pbmcgIT0gU2RNbWNNbWNIczIwMCB8fAo+ID4gPiA+ ICsgICAgICAoQnVzTW9kZS0+QnVzV2lkdGggIT0gNCAmJiBCdXNNb2RlLT5CdXNXaWR0aCAhPSA4 KSkgewo+ID4gPiA+ICAgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsKPiA+ID4gPiAg ICB9Cj4gPiA+ID4KPiA+ID4gPiAtICBTdGF0dXMgPSBFbW1jU3dpdGNoQnVzV2lkdGggKFBjaUlv LCBQYXNzVGhydSwgU2xvdCwgUmNhLCBGQUxTRSwKPiA+ID4gQnVzV2lkdGgpOwo+ID4gPiA+ICsg IFN0YXR1cyA9IEVtbWNTd2l0Y2hCdXNXaWR0aCAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2Es IEZBTFNFLAo+ID4gPiA+IEJ1c01vZGUtPkJ1c1dpZHRoKTsKPiA+ID4gPiAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7Cj4gPiA+ID4gICAgICByZXR1cm4gU3RhdHVzOwo+ID4gPiA+ICAgIH0K PiA+ID4gPiAgICAvLwo+ID4gPiA+IC0gIC8vIFNldCB0byBIUzIwMC9TRFIxMDQgdGltaW5nCj4g PiA+ID4gLSAgLy8KPiA+ID4gPiAtICAvLwo+ID4gPiA+ICAgIC8vIFN0b3AgYnVzIGNsb2NrIGF0 IGZpcnN0Cj4gPiA+ID4gICAgLy8KPiA+ID4gPiAgICBTdGF0dXMgPSBTZE1tY0hjU3RvcENsb2Nr IChQY2lJbywgU2xvdCk7Cj4gPiA+ID4gQEAgLTg1Myw5ICs4NjQsNyBAQCBFbW1jU3dpdGNoVG9I UzIwMCAoCj4gPiA+ID4gICAgICByZXR1cm4gU3RhdHVzOwo+ID4gPiA+ICAgIH0KPiA+ID4gPgo+ ID4gPiA+IC0gIFRpbWluZyA9IFNkTW1jTW1jSHMyMDA7Cj4gPiA+ID4gLQo+ID4gPiA+IC0gIFN0 YXR1cyA9IFNkTW1jSGNVaHNTaWduYWxpbmcgKFByaXZhdGUtPkNvbnRyb2xsZXJIYW5kbGUsIFBj aUlvLCBTbG90LAo+ID4gPiA+IFRpbWluZyk7Cj4gPiA+ID4gKyAgU3RhdHVzID0gU2RNbWNIY1Vo c1NpZ25hbGluZyAoUHJpdmF0ZS0+Q29udHJvbGxlckhhbmRsZSwgUGNpSW8sCj4gU2xvdCwKPiA+ ID4gPiBCdXNNb2RlLT5CdXNUaW1pbmcpOwo+ID4gPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gICAgfQo+ID4gPiA+IEBA IC04ODEsMjggKzg5MCwyNyBAQCBFbW1jU3dpdGNoVG9IUzIwMCAoCj4gPiA+ID4gICAgQ2xvY2tD dHJsID0gQklUMjsKPiA+ID4gPiAgICBTdGF0dXMgPSBTZE1tY0hjT3JNbWlvIChQY2lJbywgU2xv dCwgU0RfTU1DX0hDX0NMT0NLX0NUUkwsCj4gPiBzaXplb2YKPiA+ID4gPiAoQ2xvY2tDdHJsKSwg JkNsb2NrQ3RybCk7Cj4gPiA+ID4KPiA+ID4gPiAtICBIc1RpbWluZyA9IDI7Cj4gPiA+ID4gLSAg U3RhdHVzID0gRW1tY1N3aXRjaEJ1c1RpbWluZyAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2Es IEhzVGltaW5nLAo+ID4gPiBUaW1pbmcsCj4gPiA+ID4gQ2xvY2tGcmVxKTsKPiA+ID4gPiArICBT dGF0dXMgPSBFbW1jU3dpdGNoQnVzVGltaW5nIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwg QnVzTW9kZS0KPiA+ID4gPiA+RHJpdmVyU3RyZW5ndGgsIEJ1c01vZGUtPkJ1c1RpbWluZywgQnVz TW9kZS0+Q2xvY2tGcmVxKTsKPiA+ID4KPiA+ID4KPiA+ID4gQWZ0ZXIgdGhlIHByb3Bvc2VkIGNo YW5nZSwgdGhlIHByZWZlcnJlZCBidXMgdGltaW5nIGFuZCBkcml2ZXIgc3RyZW5ndGgKPiA+ID4g dmFsdWUKPiA+ID4gd2lsbCBiZSBzZXQgZm9yIHRoZSBkZXZpY2UgdGhyb3VnaCB0aGUgRU1NQ19T V0lUQ0ggY29tbWFuZC4KPiA+ID4KPiA+ID4gSG93ZXZlciwgb24gdGhlIGhvc3QgY29udHJvbGxl ciBzaWRlLCBvbmx5IHRoZSBidXMgdGltaW5nIHZhbHVlIGlzIGFsc28KPiA+ID4gdXBkYXRlZAo+ ID4gPiBpbiB0aGUgSG9zdCBDb250cm9sIDIgUmVnaXN0ZXIgb2YgdGhlIFNEIEhDICh2aWEgZnVu Y3Rpb24KPiA+ID4gU2RNbWNIY1Voc1NpZ25hbGluZygpKS4KPiA+ID4gSXQgc2VlbXMgdG8gbWUg dGhhdCB0aGUgZHJpdmVyIHN0cmVuZ3RoIHZhbHVlIGRvZXMgbm90IGdldCB1cGRhdGVkIGluIHRo aXMKPiA+ID4gcmVnaXN0ZXIuCj4gPiA+Cj4gPiA+IEkgdGhpbmsgdGhlIFNEIGNhc2UgaGFzIGEg c2ltaWxhciBpc3N1ZS4KPiA+Cj4gPiBGb3IgU0QgSSBhZ3JlZSB0aGF0IHRoZXJlIGlzIGFuIGlz c3VlIGJ1dCBmb3IgZU1NQyB0aGVyZSBpcyBubyBjbGVhciBtYXBwaW5nCj4gPiBiZXR3ZWVuCj4g PiBlTU1DIGRlZmluZWQgZHJpdmVyIHN0cmVuZ3RoIHR5cGVzIGFuZCBTRCBkZWZpbmVkIGRyaXZl ciBzdHJlbmd0aCB0eXBlcy4KPiA+IFRoZSBjb250cm9sbGVyCj4gPiBJIGhhcHBlbiB0byBiZSB3 b3JraW5nIHdpdGggc2VlbXMgdG8gaWdub3JlIHRoZSB2YWx1ZXMgaW4gdGhpcyByZWdpc3Rlci4g SWYKPiB3ZQo+ID4gY2FuIGFncmVlIG9uCj4gPiBvbmUgbWFwcGluZyB0aGF0IHdpbGwgYmUgYWJs ZSB0byBzZXJ2aWNlIG1ham9yaXR5IG9mIHRoZSBlTU1DIGNvbnRyb2xsZXJzCj4gb24KPiA+IG1h cmtldCBJIGRvbid0Cj4gPiBtaW5kIGFkZGluZyB0aGF0LiBXZSBjYW4gbWF5YmUgYWRkIGRyaXZl ciBzdHJlbmd0aCBzZXR0aW5nIHRvCj4gPiBTZE1tY0hjVWhzU2lnbmFsaW5nIHNvIHRoYXQKPiA+ IHBsYXRmb3JtIGhhcyBhbiBvcHBvcnR1bml0eSB0byBjb3JyZWN0IGNvcmUgZHJpdmVyIGR1cmlu Zwo+ID4gRWRraWlTZE1tY1Voc1NpZ25hbGluZyBub3RpZnkuCj4gCj4gCj4gSG93IGFib3V0IHVz aW5nIHRoZSBtYXBwaW5nIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHRocmVhZCB0byBzZXQgdGhl IEhDMgo+IHJlZ2lzdGVyIGFuZCBpZ25vcmUgdGhpcyBzdGVwIGZvciBlTU1DIGRyaXZlciB0eXBl IDQ/Cj4gCj4gCj4gPgo+ID4gPgo+ID4gPgo+ID4gPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gICAgfQo+ID4gPiA+Cj4g PiA+ID4gLSAgU3RhdHVzID0gRW1tY1R1bmluZ0Nsa0ZvckhzMjAwIChQY2lJbywgUGFzc1RocnUs IFNsb3QsIEJ1c1dpZHRoKTsKPiA+ID4gPiArICBTdGF0dXMgPSBFbW1jVHVuaW5nQ2xrRm9ySHMy MDAgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgQnVzTW9kZS0KPiA+ID4gPiA+QnVzV2lkdGgpOwo+ ID4gPiA+Cj4gPiA+ID4gICAgcmV0dXJuIFN0YXR1czsKPiA+ID4gPiAgfQo+ID4gPiA+Cj4gPiA+ ID4gIC8qKgo+ID4gPiA+IC0gIFN3aXRjaCB0byB0aGUgSFM0MDAgdGltaW5nIGFjY29yZGluZyB0 byByZXF1ZXN0Lgo+ID4gPiA+ICsgIFN3aXRjaCB0byB0aGUgSFM0MDAgdGltaW5nLiBUaGlzIGZ1 bmN0aW9uIGFzc3VtZXMgdGhhdCBlTU1DIGJ1cyBpcwo+ID4gc3RpbGwKPiA+ID4gaW4KPiA+ID4g PiBsZWdhY3kgbW9kZS4KPiA+ID4gPgo+ID4gPiA+ICAgIFJlZmVyIHRvIEVNTUMgRWxlY3RyaWNh bCBTdGFuZGFyZCBTcGVjIDUuMSBTZWN0aW9uIDYuNi44IGFuZCBTRCBIb3N0Cj4gPiA+ID4gQ29u dHJvbGxlcgo+ID4gPiA+ICAgIFNpbXBsaWZpZWQgU3BlYyAzLjAgRmlndXJlIDItMjkgZm9yIGRl dGFpbHMuCj4gPiA+ID4KPiA+ID4gPiAtICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgIEEgcG9p bnRlciB0byB0aGUgRUZJX1BDSV9JT19QUk9UT0NPTAo+IGluc3RhbmNlLgo+ID4gPiA+IC0gIEBw YXJhbVtpbl0gUGFzc1RocnUgICAgICAgQSBwb2ludGVyIHRvIHRoZQo+ID4gPiA+IEVGSV9TRF9N TUNfUEFTU19USFJVX1BST1RPQ09MIGluc3RhbmNlLgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gU2xv dCAgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhlCj4g PiA+IGNvbW1hbmQKPiA+ID4gPiB0by4KPiA+ID4gPiAtICBAcGFyYW1baW5dIFJjYSAgICAgICAg ICAgIFRoZSByZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4KPiA+ID4gPiAt ICBAcGFyYW1baW5dIENsb2NrRnJlcSAgICAgIFRoZSBtYXggY2xvY2sgZnJlcXVlbmN5IHRvIGJl IHNldC4KPiA+ID4gPiArICBAcGFyYW1baW5dIFBjaUlvICAgICAgICAgICBBIHBvaW50ZXIgdG8g dGhlIEVGSV9QQ0lfSU9fUFJPVE9DT0wKPiA+IGluc3RhbmNlLgo+ID4gPiA+ICsgIEBwYXJhbVtp bl0gUGFzc1RocnUgICAgICAgIEEgcG9pbnRlciB0byB0aGUKPiA+ID4gPiBFRklfU0RfTU1DX1BB U1NfVEhSVV9QUk9UT0NPTCBpbnN0YW5jZS4KPiA+ID4gPiArICBAcGFyYW1baW5dIFNsb3QgICAg ICAgICAgICBUaGUgc2xvdCBudW1iZXIgb2YgdGhlIFNEIGNhcmQgdG8gc2VuZCB0aGUKPiA+ID4g PiBjb21tYW5kIHRvLgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gUmNhICAgICAgICAgICAgIFRoZSBy ZWxhdGl2ZSBkZXZpY2UgYWRkcmVzcyB0byBiZSBhc3NpZ25lZC4KPiA+ID4gPiArICBAcGFyYW1b aW5dIENsb2NrRnJlcSAgICAgICBUaGUgbWF4IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQuCj4g PiA+Cj4gPiA+Cj4gPiA+IFBsZWFzZSBoZWxwIHRvIHVwZGF0ZSB0aGUgZnVuY3Rpb24gY29tbWVu dHMgZm9yIEVtbWNTd2l0Y2hUb0hTNDAwKCkKPiA+ID4gYWZ0ZXIgdGhlCj4gPiA+IHBhcmFtZXRl ciBjaGFuZ2VzLgo+ID4gPgo+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gICAgQHJldHZhbCBFRklfU1VD Q0VTUyAgICAgICBUaGUgb3BlcmF0aW9uIGlzIGRvbmUgY29ycmVjdGx5Lgo+ID4gPiA+ICAgIEBy ZXR2YWwgT3RoZXJzICAgICAgICAgICAgVGhlIG9wZXJhdGlvbiBmYWlscy4KPiA+ID4gPiBAQCAt OTE0LDQ3ICs5MjIsMzIxIEBAIEVtbWNTd2l0Y2hUb0hTNDAwICgKPiA+ID4gPiAgICBJTiBFRklf U0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwKPiA+ID4gPiAgICBJTiBV SU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsCj4gPiA+ID4gICAgSU4gVUlO VDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsCj4gPiA+ID4gLSAgSU4gVUlOVDMy ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbG9ja0ZyZXEKPiA+ID4gPiArICBJTiBFREtJ SV9TRF9NTUNfQlVTX01PREUgICAgICAgICAgICAgICpCdXNNb2RlCj4gPiA+ID4gICAgKQo+ID4g PiA+ICB7Cj4gPiA+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgU3RhdHVzOwo+ID4g PiA+IC0gIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgIEhzVGltaW5nOwo+ID4gPiA+IC0gIFNE X01NQ19CVVNfTU9ERSAgICAgICAgICAgIFRpbWluZzsKPiA+ID4gPiAgICBTRF9NTUNfSENfUFJJ VkFURV9EQVRBICAgICAqUHJpdmF0ZTsKPiA+ID4gPiArICBFREtJSV9TRF9NTUNfQlVTX01PREUg ICAgICBIczIwMEJ1c01vZGU7Cj4gPiA+ID4gKyAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAg SHNGcmVxOwo+ID4gPiA+ICsKPiA+ID4gPiArICBpZiAoQnVzTW9kZS0+QnVzVGltaW5nICE9IFNk TW1jTW1jSHM0MDAgfHwKPiA+ID4gPiArICAgICAgQnVzTW9kZS0+QnVzV2lkdGggIT0gOCkgewo+ ID4gPiA+ICsgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BBUkFNRVRFUjsKPiA+ID4gPiArICB9Cj4g PiA+ID4KPiA+ID4gPiAgICBQcml2YXRlID0gU0RfTU1DX0hDX1BSSVZBVEVfRlJPTV9USElTIChQ YXNzVGhydSk7Cj4gPiA+ID4gKyAgSHMyMDBCdXNNb2RlLkJ1c1RpbWluZyA9IFNkTW1jTW1jSHMy MDA7Cj4gPiA+ID4gKyAgSHMyMDBCdXNNb2RlLkJ1c1dpZHRoID0gQnVzTW9kZS0+QnVzV2lkdGg7 Cj4gPiA+ID4gKyAgSHMyMDBCdXNNb2RlLkNsb2NrRnJlcSA9IEJ1c01vZGUtPkNsb2NrRnJlcTsK PiA+ID4gPiArICBIczIwMEJ1c01vZGUuRHJpdmVyU3RyZW5ndGggPSBCdXNNb2RlLT5Ecml2ZXJT dHJlbmd0aDsKPiA+ID4gPgo+ID4gPiA+IC0gIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hTMjAwIChQ Y2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgQ2xvY2tGcmVxLAo+IDgpOwo+ID4gPiA+ICsgIFN0 YXR1cyA9IEVtbWNTd2l0Y2hUb0hTMjAwIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwKPiA+ ID4gJkhzMjAwQnVzTW9kZSk7Cj4gPiA+ID4gICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgewo+ ID4gPiA+ICAgICAgcmV0dXJuIFN0YXR1czsKPiA+ID4gPiAgICB9Cj4gPiA+ID4gKwo+ID4gPiA+ ICAgIC8vCj4gPiA+ID4gLSAgLy8gU2V0IHRvIEhpZ2h0IFNwZWVkIHRpbWluZyBhbmQgc2V0IHRo ZSBjbG9jayBmcmVxdWVuY3kgdG8gYSB2YWx1ZQo+IGxlc3MKPiA+ID4gdGhhbgo+ID4gPiA+IDUy TUh6Lgo+ID4gPiA+ICsgIC8vIFNldCB0byBIaWdoIFNwZWVkIHRpbWluZyBhbmQgc2V0IHRoZSBj bG9jayBmcmVxdWVuY3kgdG8gYSB2YWx1ZSBsZXNzCj4gPiA+IHRoYW4KPiA+ID4gPiBvciBlcXVh bCB0byA1Mk1Iei4KPiA+ID4gPiArICAvLyBUaGlzIHN0ZXAgaXMgbmVjZXNzYXJ5IHRvIGJlIGFi bGUgdG8gc3dpdGNoIEJ1cyBpbnRvIDggYml0IEREUiBtb2RlCj4gPiA+IHdoaWNoCj4gPiA+ID4g aXMgdW5zdXBwb3J0ZWQgaW4gSFMyMDAuCj4gPiA+ID4gICAgLy8KPiA+ID4gPiAtICBIc1RpbWlu ZyA9IDE7Cj4gPiA+ID4gLSAgU3RhdHVzID0gRW1tY1N3aXRjaEJ1c1RpbWluZyAoUGNpSW8sIFBh c3NUaHJ1LCBTbG90LCBSY2EsIEhzVGltaW5nLAo+ID4gPiA+IFNkTW1jTW1jSHNTZHIsIDUyKTsK PiA+ID4gPiArICBTdGF0dXMgPSBTZE1tY0hjVWhzU2lnbmFsaW5nIChQcml2YXRlLT5Db250cm9s bGVySGFuZGxlLCBQY2lJbywKPiBTbG90LAo+ID4gPiA+IFNkTW1jTW1jSHNTZHIpOwo+ID4gPgo+ ID4gPgo+ID4gPiBUaGUgYWJvdmUgU2RNbWNIY1Voc1NpZ25hbGluZygpIGlzIG5ld2x5IGFkZGVk LCBpcyB0aGlzIGEgYnVnIGZvciB0aGUKPiA+IG9yaWdpbgo+ID4gPiBjb2RlPwo+ID4gPgo+ID4g PiBJIHNlYXJjaGVkIHRoZSBlTU1DIHNwZWMsIGl0IHNlZW1zIHRvIG1lIHRoZSBzcGVjIGRvZXMg bm90IGV4cGxpY2l0bHkKPiA+ID4gbWVudGlvbgo+ID4gPiB0aGUgSG9zdCBDb250cm9sIDIgUmVn aXN0ZXIgYXQgYWxsLCBJIGFtIG5vdCB2ZXJ5IHN1cmUgaWYgc3VjaCBjaGFuZ2Ugd2lsbAo+ID4g PiBicmluZyBhbnkgZWZmZWN0IHRvIGRldmljZXMuIERpZCB5b3UgaGF2ZSBhIHRyeSB3aXRob3V0 IGFkZGluZyBzdWNoCj4gY2hhbmdlPwo+ID4gPgo+ID4KPiA+IFRoaXMgaXMgYWxpZ25lZCB0byB0 aGUgYmVoYXZpb3Igb2YgRW1tY1N3aXRjaFRvSGlnaFNwZWVkIGZ1bmN0aW9uLiBNeQo+ID4gZU1N Qwo+ID4gY29udHJvbGxlciBkb2Vzbid0IG5lZWQgdGhpcyByZWdpc3RlciB0byBiZSBwcm9ncmFt bWVkIGZvciBzd2l0Y2ggdG8gaGlnaAo+ID4gc3BlZWQKPiA+IGJ1dCBjYWxsaW5nIFNkTW1jVWhz U2lnbmFsaW5nIGhlcmUgZ2l2ZXMgb3ZlcnJpZGUgcHJvdG9jb2wgYSBjaGFuY2UgdG8KPiBmaW5p c2gKPiA+IHN3aXRjaCB0byBoaWdoIHNwZWVkIGZvciBlTU1DIGNvbnRyb2xsZXJzIHRoYXQgbmVl ZCBzdWNoIHR3ZWFraW5nLgo+IAo+IAo+IEhlbGxvIE1hcmNpbiwKPiBEbyB5b3Ugc2VlIGFueSBj b25jZXJuIGZvciB0aGlzIHNwZWNpZmljIGNoYW5nZT8KPiAKPiAKPiA+Cj4gPiA+Cj4gPiA+ID4g ICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgewo+ID4gPiA+ICAgICAgcmV0dXJuIFN0YXR1czsK PiA+ID4gPiAgICB9Cj4gPiA+ID4gLSAgLy8KPiA+ID4gPiAtICAvLyBIUzQwMCBtb2RlIG11c3Qg dXNlIDggZGF0YSBsaW5lcy4KPiA+ID4gPiAtICAvLwo+ID4gPiA+IC0gIFN0YXR1cyA9IEVtbWNT d2l0Y2hCdXNXaWR0aCAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsIFRSVUUsIDgpOwo+ID4g PiA+ICsKPiA+ID4gPiArICBIc0ZyZXEgPSBCdXNNb2RlLT5DbG9ja0ZyZXEgPCA1MiA/IEJ1c01v ZGUtPkNsb2NrRnJlcSA6IDUyOwo+ID4gPiA+ICsgIFN0YXR1cyA9IEVtbWNTd2l0Y2hCdXNUaW1p bmcgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgUmNhLCBCdXNNb2RlLQo+ID4gPiA+ID5Ecml2ZXJT dHJlbmd0aCwgU2RNbWNNbWNIc1NkciwgSHNGcmVxKTsKPiA+ID4gPiAgICBpZiAoRUZJX0VSUk9S IChTdGF0dXMpKSB7Cj4gPiA+ID4gICAgICByZXR1cm4gU3RhdHVzOwo+ID4gPiA+ICAgIH0KPiA+ ID4gPgo+ID4gPiA+IC0gIFRpbWluZyA9IFNkTW1jTW1jSHM0MDA7Cj4gPiA+ID4gKyAgU3RhdHVz ID0gRW1tY1N3aXRjaEJ1c1dpZHRoIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgVFJVRSwK PiA+ID4gQnVzTW9kZS0KPiA+ID4gPiA+QnVzV2lkdGgpOwo+ID4gPiA+ICsgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsKPiA+ID4gPiArICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gKyAgfQo+ ID4gPiA+Cj4gPiA+ID4gLSAgU3RhdHVzID0gU2RNbWNIY1Voc1NpZ25hbGluZyAoUHJpdmF0ZS0+ Q29udHJvbGxlckhhbmRsZSwgUGNpSW8sIFNsb3QsCj4gPiA+ID4gVGltaW5nKTsKPiA+ID4gPiAr ICBTdGF0dXMgPSBTZE1tY0hjVWhzU2lnbmFsaW5nIChQcml2YXRlLT5Db250cm9sbGVySGFuZGxl LCBQY2lJbywKPiBTbG90LAo+ID4gPiA+IEJ1c01vZGUtPkJ1c1RpbWluZyk7Cj4gPiA+ID4gICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgewo+ID4gPiA+ICAgICAgcmV0dXJuIFN0YXR1czsKPiA+ ID4gPiAgICB9Cj4gPiA+ID4KPiA+ID4gPiAtICBIc1RpbWluZyA9IDM7Cj4gPiA+ID4gLSAgU3Rh dHVzID0gRW1tY1N3aXRjaEJ1c1RpbWluZyAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsIEhz VGltaW5nLAo+ID4gPiBUaW1pbmcsCj4gPiA+ID4gQ2xvY2tGcmVxKTsKPiA+ID4gPiArICByZXR1 cm4gRW1tY1N3aXRjaEJ1c1RpbWluZyAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsIEJ1c01v ZGUtCj4gPiA+ID4gPkRyaXZlclN0cmVuZ3RoLCBCdXNNb2RlLT5CdXNUaW1pbmcsIEJ1c01vZGUt PkNsb2NrRnJlcSk7Cj4gPiA+Cj4gPiA+Cj4gPiA+IEFmdGVyIHRoZSBwcm9wb3NlZCBjaGFuZ2Us IHRoZSBwcmVmZXJyZWQgYnVzIHRpbWluZyBhbmQgZHJpdmVyIHN0cmVuZ3RoCj4gPiA+IHZhbHVl Cj4gPiA+IHdpbGwgYmUgc2V0IGZvciB0aGUgZGV2aWNlIHRocm91Z2ggdGhlIEVNTUNfU1dJVENI IGNvbW1hbmQuCj4gPiA+Cj4gPiA+IEhvd2V2ZXIsIG9uIHRoZSBob3N0IGNvbnRyb2xsZXIgc2lk ZSwgb25seSB0aGUgYnVzIHRpbWluZyB2YWx1ZSBpcyBhbHNvCj4gPiA+IHVwZGF0ZWQKPiA+ID4g aW4gdGhlIEhvc3QgQ29udHJvbCAyIFJlZ2lzdGVyIG9mIHRoZSBTRCBIQyAodmlhIGZ1bmN0aW9u Cj4gPiA+IFNkTW1jSGNVaHNTaWduYWxpbmcoKSkuCj4gPiA+IEl0IHNlZW1zIHRvIG1lIHRoYXQg dGhlIGRyaXZlciBzdHJlbmd0aCB2YWx1ZSBkb2VzIG5vdCBnZXQgdXBkYXRlZCBpbiB0aGlzCj4g PiA+IHJlZ2lzdGVyLgo+ID4gPgo+ID4gPiBJIHRoaW5rIHRoZSBTRCBjYXNlIGhhcyBhIHNpbWls YXIgaXNzdWUuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4gK30KPiA+ID4gPgo+ID4gPiA+IC0gIHJldHVy biBTdGF0dXM7Cj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgIENoZWNrIGlmIHBhc3NlZCBCdXNUaW1p bmcgaXMgc3VwcG9ydGVkIGluIGJvdGggY29udHJvbGxlciBhbmQgY2FyZC4KPiA+ID4gPiArCj4g PiA+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgIFBvaW50ZXIgdG8gY29udHJvbGxlciBwcml2 YXRlIGRhdGEKPiA+ID4gPiArICBAcGFyYW1baW5dIFNsb3RJbmRleCAgSW5kZXggb2YgdGhlIHNs b3QgaW4gdGhlIGNvbnRyb2xsZXIKPiA+ID4gPiArICBAcGFyYW1baW5dIEV4dENzZCAgICAgUG9p bnRlciB0byB0aGUgY2FyZCdzIGV4dGVuZGVkIENTRAo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gQnVz VGltaW5nICBCdXMgdGltaW5nIHRvIGNoZWNrCj4gPiA+ID4gKwo+ID4gPiA+ICsgIEByZXR2YWwg VFJVRSAgQm90aCBjYXJkIGFuZCBjb250cm9sbGVyIHN1cHBvcnQgZ2l2ZW4gQnVzVGltaW5nCj4g PiA+ID4gKyAgQHJldHZhbCBGQUxTRSBDYXJkIG9yIGNvbnRyb2xsZXIgZG9lc24ndCBzdXBwb3J0 IGdpdmVuIEJ1c1RpbWluZwo+ID4gPiA+ICsqKi8KPiA+ID4gPiArU1RBVElDCj4gPiA+ID4gK0JP T0xFQU4KPiA+ID4gPiArSXNCdXNUaW1pbmdTdXBwb3J0ZWQgKAo+ID4gPgo+ID4gPgo+ID4gPiBI b3cgYWJvdXQgcmVuYW1pbmcgaXQgdG8gRW1tY0lzQnVzVGltaW5nU3VwcG9ydGVkKCk/Cj4gPiA+ Cj4gPiA+Cj4gPiA+ID4gKyAgSU4gU0RfTU1DX0hDX1BSSVZBVEVfREFUQSAgKlByaXZhdGUsCj4g PiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgU2xvdEluZGV4LAo+ID4gPiA+ICsg IElOIEVNTUNfRVhUX0NTRCAgICAgICAgICAgICpFeHRDc2QsCj4gPiA+ID4gKyAgSU4gU0RfTU1D X0JVU19NT0RFICAgICAgICAgQnVzVGltaW5nCj4gPiA+ID4gKyAgKQo+ID4gPiA+ICt7Cj4gPiA+ ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICBTdXBwb3J0ZWQ7Cj4gPiA+ID4gKyAgU0RfTU1DX0hD X1NMT1RfQ0FQICAqQ2FwYWJpbGl0aWVzOwo+ID4gPiA+ICsKPiA+ID4gPiArICBDYXBhYmlsaXRp ZXMgPSAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVtTbG90SW5kZXhdOwo+ID4gPiA+ICsKPiA+ID4gPiAr ICBTdXBwb3J0ZWQgPSBGQUxTRTsKPiA+ID4gPiArICBzd2l0Y2ggKEJ1c1RpbWluZykgewo+ID4g PiA+ICsgICAgY2FzZSBTZE1tY01tY0hzNDAwOgo+ID4gPiA+ICsgICAgICBpZiAoKCgoRXh0Q3Nk LT5EZXZpY2VUeXBlICYgKEJJVDYgfCBCSVQ3KSkgICE9IDApICYmIChDYXBhYmlsaXRpZXMtCj4g PiA+ID4gPkhzNDAwICE9IDApKSAmJiBDYXBhYmlsaXRpZXMtPkJ1c1dpZHRoOCkgewo+ID4gPiA+ ICsgICAgICAgIFN1cHBvcnRlZCA9IFRSVUU7Cj4gPiA+ID4gKyAgICAgIH0KPiA+ID4gPiArICAg ICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jTW1jSHMyMDA6Cj4gPiA+ID4gKyAgICAg IGlmICgoKChFeHRDc2QtPkRldmljZVR5cGUgJiAoQklUNCB8IEJJVDUpKSAgIT0gMCkgJiYgKENh cGFiaWxpdGllcy0KPiA+ID4gPiA+U2RyMTA0ICE9IDApKSkgewo+ID4gPiA+ICsgICAgICAgIFN1 cHBvcnRlZCA9IFRSVUU7Cj4gPiA+ID4gKyAgICAgIH0KPiA+ID4gPiArICAgICAgYnJlYWs7Cj4g PiA+ID4gKyAgICBjYXNlIFNkTW1jTW1jSHNEZHI6Cj4gPiA+ID4gKyAgICAgIGlmICgoKChFeHRD c2QtPkRldmljZVR5cGUgJiAoQklUMiB8IEJJVDMpKSAgIT0gMCkgJiYgKENhcGFiaWxpdGllcy0K PiA+ID4gPiA+RGRyNTAgIT0gMCkpKSB7Cj4gPiA+ID4gKyAgICAgICAgU3VwcG9ydGVkID0gVFJV RTsKPiA+ID4gPiArICAgICAgfQo+ID4gPiA+ICsgICAgICBicmVhazsKPiA+ID4gPiArICAgIGNh c2UgU2RNbWNNbWNIc1NkcjoKPiA+ID4gPiArICAgICAgaWYgKCgoKEV4dENzZC0+RGV2aWNlVHlw ZSAmIEJJVDEpICAhPSAwKSAmJiAoQ2FwYWJpbGl0aWVzLQo+ID4gPkhpZ2hTcGVlZCAhPQo+ID4g PiA+IDApKSkgewo+ID4gPiA+ICsgICAgICAgIFN1cHBvcnRlZCA9IFRSVUU7Cj4gPiA+ID4gKyAg ICAgIH0gZWxzZSBpZiAoKCgoRXh0Q3NkLT5EZXZpY2VUeXBlICYgQklUMCkgICE9IDApICYmIChD YXBhYmlsaXRpZXMtCj4gPiA+ID4gPkhpZ2hTcGVlZCAhPSAwKSkpIHsKPiA+ID4KPiA+ID4KPiA+ ID4gRm9yIHRoaXMgY2FzZSwgSSB0aGluayB0aGUgYnVzIHRpbWluZyBzaG91bGQgYmUgY2xhc3Np ZmllZCB0bwo+ID4gU2RNbWNNbWNMZWdhY3kuCj4gPiA+IFNpbmNlIHVuZGVyIHRoaXMgdGltaW5n LCB0aGUgbWF4aW11bSBmcmVxdWVuY3kgYWxsb3dlZCBpcyAyNk1oei4gSWYgc2V0Cj4gdG8KPiA+ ID4gU2RNbWNNbWNIc1NkciB0aGUgZHJpdmVyIHdpbGwgdHJ5IHRvIHNldCB0aGUgZnJlcXVlbmN5 IHRvIDUyTWh6IGxhdGVyCj4gaW4KPiA+ID4gRW1tY0dldFRhcmdldENsb2NrRnJlcSgpLgo+ID4g Pgo+ID4gPgo+ID4gPiA+ICsgICAgICAgIFN1cHBvcnRlZCA9IFRSVUU7Cj4gPiA+ID4gKyAgICAg IH0KPiA+ID4gPiArICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jTW1jTGVnYWN5 Ogo+ID4gPiA+ICsgICAgICBTdXBwb3J0ZWQgPSBUUlVFOwo+ID4gPiA+ICsgICAgICBicmVhazsK PiA+ID4gPiArICAgIGRlZmF1bHQ6Cj4gPiA+ID4gKyAgICAgIEFTU0VSVCAoRkFMU0UpOwo+ID4g PiA+ICsgIH0KPiA+ID4gPiArCj4gPiA+ID4gKyAgcmV0dXJuIFN1cHBvcnRlZDsKPiA+ID4gPiAr fQo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAgR2V0IHRoZSB0YXJnZXQgYnVzIHRp bWluZyB0byBzZXQgb24gdGhlIGxpbmsuIFRoaXMgZnVuY3Rpb24KPiA+ID4gPiArICB3aWxsIHRy eSB0byBzZWxlY3QgaGlnaGVzdCBidXMgdGltaW5nIHN1cHBvcnRlZCBieSBjYXJkLCBjb250cm9s bGVyCj4gPiA+ID4gKyAgYW5kIHRoZSBkcml2ZXIuCj4gPiA+ID4gKwo+ID4gPiA+ICsgIEBwYXJh bVtpbl0gUHJpdmF0ZSAgICBQb2ludGVyIHRvIGNvbnRyb2xsZXIgcHJpdmF0ZSBkYXRhCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSBTbG90SW5kZXggIEluZGV4IG9mIHRoZSBzbG90IGluIHRoZSBjb250 cm9sbGVyCj4gPiA+ID4gKyAgQHBhcmFtW2luXSBFeHRDc2QgICAgIFBvaW50ZXIgdG8gdGhlIGNh cmQncyBleHRlbmRlZCBDU0QKPiA+ID4gPiArCj4gPiA+ID4gKyAgQHJldHVybiAgQnVzIHRpbWlu ZyB2YWx1ZSB0aGF0IHNob3VsZCBiZSBzZXQgb24gbGluawo+ID4gPiA+ICsqKi8KPiA+ID4gPiAr U1RBVElDCj4gPiA+ID4gK1NEX01NQ19CVVNfTU9ERQo+ID4gPiA+ICtFbW1jR2V0VGFyZ2V0QnVz VGltaW5nICgKPiA+ID4gPiArICBJTiBTRF9NTUNfSENfUFJJVkFURV9EQVRBICAqUHJpdmF0ZSwK PiA+ID4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgU2xvdEluZGV4LAo+ID4gPiA+ ICsgIElOIEVNTUNfRVhUX0NTRCAgICAgICAgICAgICAqRXh0Q3NkCj4gPiA+ID4gKyAgKQo+ID4g PiA+ICt7Cj4gPiA+ID4gKyAgU0RfTU1DX0JVU19NT0RFICBCdXNUaW1pbmc7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsgIC8vCj4gPiA+ID4gKyAgLy8gV2Ugc3RhcnQgd2l0aCBoaWdoZXN0IGJ1cyB0aW1p bmcgdGhhdCB0aGlzIGRyaXZlciBjdXJyZW50bHkgc3VwcG9ydAo+ID4gYW5kCj4gPiA+ID4gKyAg Ly8gcmV0dXJuIGFzIHNvb24gYXMgd2UgZmluZCBzdXBwb3J0ZWQgdGltaW5nLgo+ID4gPiA+ICsg IC8vCj4gPiA+ID4gKyAgQnVzVGltaW5nID0gU2RNbWNNbWNIczQwMDsKPiA+ID4gPiArICB3aGls ZSAoQnVzVGltaW5nID4gU2RNbWNNbWNMZWdhY3kpIHsKPiA+ID4gPiArICAgIGlmIChJc0J1c1Rp bWluZ1N1cHBvcnRlZCAoUHJpdmF0ZSwgU2xvdEluZGV4LCBFeHRDc2QsIEJ1c1RpbWluZykpIHsK PiA+ID4gPiArICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICB9Cj4gPiA+ID4gKyAgICBCdXNUaW1p bmctLTsKPiA+ID4gPiArICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIHJldHVybiBCdXNUaW1pbmc7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgIENoZWNrIGlmIHRo ZSBwYXNzZWQgYnVzIHdpZHRoIGlzIHN1cHBvcnRlZCBieSBjb250cm9sbGVyIGFuZCBjYXJkLgo+ ID4gPiA+ICsKPiA+ID4gPiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgUG9pbnRlciB0byBjb250 cm9sbGVyIHByaXZhdGUgZGF0YQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2xvdEluZGV4ICBJbmRl eCBvZiB0aGUgc2xvdCBpbiB0aGUgY29udHJvbGxlcgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gQnVz VGltaW5nICBCdXMgdGltaW5nIHNldCBvbiB0aGUgbGluawo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g QnVzV2lkdGggICBCdXMgd2lkdGggdG8gY2hlY2sKPiA+ID4gPiArCj4gPiA+ID4gKyAgQHJldHZh bCBUUlVFICAgUGFzc2VkIGJ1cyB3aWR0aCBpcyBzdXBwb3J0ZWQgaW4gY3VycmVudCBidXMKPiA+ ID4gY29uZmlndXJhdGlvbgo+ID4gPiA+ICsgIEByZXR2YWwgRkFMU0UgIFBhc3NlZCBidXMgd2lk dGggaXMgbm90IHN1cHBvcnRlZCBpbiBjdXJyZW50IGJ1cwo+ID4gPiA+IGNvbmZpZ3VyYXRpb24K PiA+ID4gPiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ICtCT09MRUFOCj4gPiA+ID4gK0lz QnVzV2lkdGhTdXBwb3J0ZWQgKAo+ID4gPiA+ICsgIElOIFNEX01NQ19IQ19QUklWQVRFX0RBVEEg ICAqUHJpdmF0ZSwKPiA+ID4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgU2xvdElu ZGV4LAo+ID4gPiA+ICsgIElOIFNEX01NQ19CVVNfTU9ERSAgICAgICAgICBCdXNUaW1pbmcsCj4g PiA+ID4gKyAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoCj4gPiA+ID4gKyAg KQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgaWYgKEJ1c1dpZHRoID09IDggJiYgUHJpdmF0ZS0+Q2Fw YWJpbGl0eVtTbG90SW5kZXhdLkJ1c1dpZHRoOCkgewo+ID4gPiA+ICsgICAgcmV0dXJuIFRSVUU7 Cj4gPiA+ID4gKyAgfSBlbHNlIGlmIChCdXNXaWR0aCA9PSA0ICYmIEJ1c1RpbWluZyAhPSBTZE1t Y01tY0hzNDAwKSB7Cj4gPiA+ID4gKyAgICByZXR1cm4gVFJVRTsKPiA+ID4gPiArICB9IGVsc2Ug aWYgKEJ1c1dpZHRoID09IDEgJiYgKEJ1c1RpbWluZyA9PSBTZE1tY01tY0hzU2RyIHx8Cj4gPiA+ IEJ1c1RpbWluZwo+ID4gPiA+ID09IFNkTW1jTW1jTGVnYWN5KSkgewo+ID4gPiA+ICsgICAgcmV0 dXJuIFRSVUU7Cj4gPiA+ID4gKyAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICByZXR1cm4gRkFMU0U7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgIEdldCB0aGUgdGFy Z2V0IGJ1cyB3aWR0aCB0byBiZSBzZXQgb24gdGhlIGJ1cy4KPiA+ID4gPiArCj4gPiA+ID4gKyAg QHBhcmFtW2luXSBQcml2YXRlICAgIFBvaW50ZXIgdG8gY29udHJvbGxlciBwcml2YXRlIGRhdGEK PiA+ID4gPiArICBAcGFyYW1baW5dIFNsb3RJbmRleCAgSW5kZXggb2YgdGhlIHNsb3QgaW4gdGhl IGNvbnRyb2xsZXIKPiA+ID4gPiArICBAcGFyYW1baW5dIEV4dENzZCAgICAgUG9pbnRlciB0byBj YXJkJ3MgZXh0ZW5kZWQgQ1NECj4gPiA+ID4gKyAgQHBhcmFtW2luXSBCdXNUaW1pbmcgIEJ1cyB0 aW1pbmcgc2V0IG9uIHRoZSBidXMKPiA+ID4gPiArCj4gPiA+ID4gKyAgQHJldHVybiBCdXMgd2lk dGggdG8gYmUgc2V0IG9uIHRoZSBidXMKPiA+ID4gPiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4g PiA+ICtVSU5UMTYKPiA+ID4gPiArRW1tY0dldFRhcmdldEJ1c1dpZHRoICgKPiA+ID4gPiArICBJ TiBTRF9NTUNfSENfUFJJVkFURV9EQVRBICAgKlByaXZhdGUsCj4gPiA+ID4gKyAgSU4gVUlOVDgg ICAgICAgICAgICAgICAgICAgIFNsb3RJbmRleCwKPiA+ID4gPiArICBJTiBFTU1DX0VYVF9DU0Qg ICAgICAgICAgICAgKkV4dENzZCwKPiA+ID4gPiArICBJTiBTRF9NTUNfQlVTX01PREUgICAgICAg ICAgQnVzVGltaW5nCj4gPiA+ID4gKyAgKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgVUlOVDE2ICBC dXNXaWR0aDsKPiA+ID4gPiArICBVSU5UMTYgIFByZWZlcmVkQnVzV2lkdGg7Cj4gPiA+ID4gKwo+ ID4gPiA+ICsgIFByZWZlcmVkQnVzV2lkdGggPSBQcml2YXRlLQo+ID4gPiA+ID5TbG90W1Nsb3RJ bmRleF0uT3BlcmF0aW5nUGFyYW1ldGVycy5CdXNXaWR0aDsKPiA+ID4gPiArCj4gPiA+ID4gKyAg aWYgKFByZWZlcmVkQnVzV2lkdGggIT0gRURLSUlfU0RfTU1DX0JVU19XSURUSF9JR05PUkUgJiYK PiA+ID4gPiArICAgICAgSXNCdXNXaWR0aFN1cHBvcnRlZCAoUHJpdmF0ZSwgU2xvdEluZGV4LCBC dXNUaW1pbmcsCj4gPiA+ID4gUHJlZmVyZWRCdXNXaWR0aCkpIHsKPiA+ID4gPiArICAgIEJ1c1dp ZHRoID0gUHJlZmVyZWRCdXNXaWR0aDsKPiA+ID4gPiArICB9IGVsc2UgaWYgKElzQnVzV2lkdGhT dXBwb3J0ZWQgKFByaXZhdGUsIFNsb3RJbmRleCwgQnVzVGltaW5nLCA4KSkgewo+ID4gPiA+ICsg ICAgQnVzV2lkdGggPSA4Owo+ID4gPiA+ICsgIH0gZWxzZSBpZiAoSXNCdXNXaWR0aFN1cHBvcnRl ZCAoUHJpdmF0ZSwgU2xvdEluZGV4LCBCdXNUaW1pbmcsIDQpKSB7Cj4gPiA+ID4gKyAgICBCdXNX aWR0aCA9IDQ7Cj4gPiA+ID4gKyAgfSBlbHNlIGlmIChJc0J1c1dpZHRoU3VwcG9ydGVkIChQcml2 YXRlLCBTbG90SW5kZXgsIEJ1c1RpbWluZywgMSkpIHsKPiA+ID4gPiArICAgIEJ1c1dpZHRoID0g MTsKPiA+ID4gPiArICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIHJldHVybiBCdXNXaWR0aDsKPiA+ ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAgR2V0IHRoZSB0YXJnZXQg Y2xvY2sgZnJlcXVlbmN5IHRvIGJlIHNldCBvbiB0aGUgYnVzLgo+ID4gPiA+ICsKPiA+ID4gPiAr ICBAcGFyYW1baW5dIFByaXZhdGUgICAgUG9pbnRlciB0byBjb250cm9sbGVyIHByaXZhdGUgZGF0 YQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2xvdEluZGV4ICBJbmRleCBvZiB0aGUgc2xvdCBpbiB0 aGUgY29udHJvbGxlcgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gRXh0Q3NkICAgICBQb2ludGVyIHRv IGNhcmQncyBleHRlbmRlZCBDU0QKPiA+ID4gPiArICBAcGFyYW1baW5dIEJ1c1RpbWluZyAgQnVz IHRpbWluZyB0byBiZSBzZXQgb24gdGhlIGJ1cwo+ID4gPiA+ICsKPiA+ID4gPiArICBAcmV0dXJu IFZhbHVlIG9mIHRoZSBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0IG9uIGJ1cyBpbiBNSHoKPiA+ ID4gPiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ICtVSU5UMzIKPiA+ID4gPiArRW1tY0dl dFRhcmdldENsb2NrRnJlcSAoCj4gPiA+ID4gKyAgSU4gU0RfTU1DX0hDX1BSSVZBVEVfREFUQSAg ICpQcml2YXRlLAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBTbG90SW5k ZXgsCj4gPiA+ID4gKyAgSU4gRU1NQ19FWFRfQ1NEICAgICAgICAgICAgICpFeHRDc2QsCj4gPiA+ ID4gKyAgSU4gU0RfTU1DX0JVU19NT0RFICAgICAgICAgIEJ1c1RpbWluZwo+ID4gPiA+ICsgICkK PiA+ID4gPiArewo+ID4gPiA+ICsgIFVJTlQzMiBQcmVmZXJlZENsb2NrRnJlcTsKPiA+ID4gPiAr ICBVSU5UMzIgTWF4Q2xvY2tGcmVxOwo+ID4gPiA+ICsKPiA+ID4gPiArICBQcmVmZXJlZENsb2Nr RnJlcSA9IFByaXZhdGUtCj4gPiA+ID4gPlNsb3RbU2xvdEluZGV4XS5PcGVyYXRpbmdQYXJhbWV0 ZXJzLkNsb2NrRnJlcTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgc3dpdGNoIChCdXNUaW1pbmcpIHsK PiA+ID4gPiArICAgIGNhc2UgU2RNbWNNbWNIczQwMDoKPiA+ID4gPiArICAgIGNhc2UgU2RNbWNN bWNIczIwMDoKPiA+ID4gPiArICAgICAgTWF4Q2xvY2tGcmVxID0gMjAwOwo+ID4gPiA+ICsgICAg ICBicmVhazsKPiA+ID4gPiArICAgIGNhc2UgU2RNbWNNbWNIc1NkcjoKPiA+ID4gPiArICAgIGNh c2UgU2RNbWNNbWNIc0RkcjoKPiA+ID4gPiArICAgICAgTWF4Q2xvY2tGcmVxID0gNTI7Cj4gPiA+ ID4gKyAgICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgZGVmYXVsdDoKPiA+ID4gPiArICAgICAgTWF4 Q2xvY2tGcmVxID0gMjY7Cj4gPiA+ID4gKyAgICAgIGJyZWFrOwo+ID4gPiA+ICsgIH0KPiA+ID4g PiArCj4gPiA+ID4gKyAgaWYgKFByZWZlcmVkQ2xvY2tGcmVxICE9IEVES0lJX1NEX01NQ19DTE9D S19GUkVRX0lHTk9SRSAmJgo+ID4gPiA+IFByZWZlcmVkQ2xvY2tGcmVxIDwgTWF4Q2xvY2tGcmVx KSB7Cj4gPiA+ID4gKyAgICByZXR1cm4gUHJlZmVyZWRDbG9ja0ZyZXE7Cj4gPiA+ID4gKyAgfSBl bHNlIHsKPiA+ID4gPiArICAgIHJldHVybiBNYXhDbG9ja0ZyZXE7Cj4gPiA+ID4gKyAgfQo+ID4g PiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICBHZXQgdGhlIGRyaXZlciBz dHJlbmd0aCB0byBiZSBzZXQgb24gYnVzCj4gPiA+Cj4gPiA+IFBsZWFzZSBoZWxwIHRvIGFwcGVu ZCBhICcuJyBjaGFyYWN0ZXIgZm9yIHRoZSBhYm92ZSBsaW5lLgo+ID4gPiBJdCBpcyByZXF1aXJl ZCBmb3IgdGhlIGVkazIgY29kaW5nIHN0eWxlLgo+ID4gPgo+ID4gPgo+ID4gPiA+ICsKPiA+ID4g PiArICBAcGFyYW1baW5dIFByaXZhdGUgICAgUG9pbnRlciB0byBjb250cm9sbGVyIHByaXZhdGUg ZGF0YQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2xvdEluZGV4ICBJbmRleCBvZiB0aGUgc2xvdCBp biB0aGUgY29udHJvbGxlcgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gRXh0Q3NkICAgICBQb2ludGVy IHRvIGNhcmQncyBleHRlbmRlZCBDU0QKPiA+ID4gPiArICBAcGFyYW1baW5dIEJ1c1RpbWluZyAg QnVzIHRpbWluZyBzZXQgb24gdGhlIGJ1cwo+ID4gPiA+ICsKPiA+ID4gPiArICBAcmV0dXJuIFZh bHVlIG9mIHRoZSBkcml2ZXIgc3RyZW5ndGggdG8gYmUgc2V0IG9uIHRoZSBidXMKPiA+ID4gPiAr KiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ICtFREtJSV9TRF9NTUNfRFJJVkVSX1NUUkVOR1RI Cj4gPiA+ID4gK0VtbWNHZXRUYXJnZXREcml2ZXJTdHJlbmd0aCAoCj4gPiA+ID4gKyAgSU4gU0Rf TU1DX0hDX1BSSVZBVEVfREFUQSAgICpQcml2YXRlLAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAg ICAgICAgICAgICAgICBTbG90SW5kZXgsCj4gPiA+ID4gKyAgSU4gRU1NQ19FWFRfQ1NEICAgICAg ICAgICAgICpFeHRDc2QsCj4gPiA+ID4gKyAgSU4gU0RfTU1DX0JVU19NT0RFICAgICAgICAgIEJ1 c1RpbWluZwo+ID4gPiA+ICsgICkKPiA+ID4gPiArewo+ID4gPiA+ICsgIEVES0lJX1NEX01NQ19E UklWRVJfU1RSRU5HVEggIFByZWZlcmVkRHJpdmVyU3RyZW5ndGg7Cj4gPiA+ID4gKyAgRURLSUlf U0RfTU1DX0RSSVZFUl9TVFJFTkdUSCAgRHJpdmVyU3RyZW5ndGg7Cj4gPiA+ID4gKwo+ID4gPiA+ ICsgIFByZWZlcmVkRHJpdmVyU3RyZW5ndGggPSBQcml2YXRlLQo+ID4gPiA+ID5TbG90W1Nsb3RJ bmRleF0uT3BlcmF0aW5nUGFyYW1ldGVycy5Ecml2ZXJTdHJlbmd0aDsKPiA+ID4gPiArICBEcml2 ZXJTdHJlbmd0aC5FbW1jID0gRW1tY0RyaXZlclN0cmVuZ3RoVHlwZTA7Cj4gPiA+ID4gKwo+ID4g PiA+ICsgIGlmIChQcmVmZXJlZERyaXZlclN0cmVuZ3RoLkVtbWMgIT0KPiA+ID4gPiBFREtJSV9T RF9NTUNfRFJJVkVSX1NUUkVOR1RIX0lHTk9SRSAmJgo+ID4gPiA+ICsgICAgICAoRXh0Q3NkLT5E cml2ZXJTdHJlbmd0aCAmIChCSVQwIDw8Cj4gUHJlZmVyZWREcml2ZXJTdHJlbmd0aC5FbW1jKSkp Cj4gPiB7Cj4gPiA+Cj4gPiA+Cj4gPiA+IFRoZSBob3N0IGNvbnRyb2xsZXIgYWxzbyBoYXMgYSBj YXBhYmlsaXR5IGZvciBkaWZmZXJlbnQgdHlwZXMgb2YgZHJpdmVyCj4gPiBzdHJlbmd0aC4KPiA+ ID4gKENhcGFiaWxpdGllcyBSZWdpc3RlciwgYml0IDM2fjM4KQo+ID4gPgo+ID4gPiBUaGUgY2hl Y2sgc2hvdWxkIHRha2UgaXQgaW50byBjb25zaWRlcmF0aW9uIGFzIHdlbGwuCj4gPgo+ID4gRm9y IFNEIGl0IHNob3VsZC4gRm9yIGVNTUMgaXQncyBub3QgYXMgb2J2aW91cyBzaW5jZSBhcyBJIG1l bnRpb25lZCB3ZQo+IGRvbid0Cj4gPiBoYXZlIGEgbWFwcGluZyBkZWZpbmVkLgo+ID4gSWYgd2Ug YWdyZWUgb24gb25lIHdlIGNhbiBhZGQgdGhpcyBhbmQgZm9yIGFsbCBlTU1DIGNvbnRyb2xsZXJz IHRoYXQgd29uJ3QKPiA+IGZvbGxvdyBpdCBJIGd1ZXNzIHdlIGNhbgo+ID4gbGVhdmUgaXQgdG8g dGhlIHBsYXRmb3JtIGNvZGUgdG8gb3ZlcnJpZGUgY2FwYWJpbGl0aWVzLgo+IAo+IAo+IFNpbWls YXIgYXMgb25lIGNvbW1lbnQgYWJvdmUsIHRoZSBtYXBwaW5nIG9mIGVNTUMgZHJpdmVyIHR5cGUg MH4zIGxvb2tzCj4gY29uc2lzdGVudCB0byBTRCBkcml2ZXIgdHlwZSBBfkQuIEFzIGZvciBlTU1D IGRyaXZlciB0eXBlIDQsIEkgdGhpbmsganVzdAo+IGNoZWNraW5nIHRoZSBjYXBhYmlsaXR5IG9m IHRoZSBkZXZpY2UgaXMgZW5vdWdoLgo+IAo+IAo+ID4KPiA+ID4KPiA+ID4KPiA+ID4gPiArICAg IERyaXZlclN0cmVuZ3RoLkVtbWMgPSBQcmVmZXJlZERyaXZlclN0cmVuZ3RoLkVtbWM7Cj4gPiA+ ID4gKyAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICByZXR1cm4gRHJpdmVyU3RyZW5ndGg7Cj4gPiA+ ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgIEdldCB0aGUgdGFyZ2V0IHNl dHRpbmdzIGZvciB0aGUgYnVzIG1vZGUuCj4gPiA+ID4gKwo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g IFByaXZhdGUgICAgUG9pbnRlciB0byBjb250cm9sbGVyIHByaXZhdGUgZGF0YQo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gIFNsb3RJbmRleCAgSW5kZXggb2YgdGhlIHNsb3QgaW4gdGhlIGNvbnRyb2xs ZXIKPiA+ID4gPiArICBAcGFyYW1baW5dICBFeHRDc2QgICAgIFBvaW50ZXIgdG8gY2FyZCdzIGV4 dGVuZGVkIENTRAo+ID4gPiA+ICsgIEBwYXJhbVtvdXRdIEJ1c01vZGUgICAgVGFyZ2V0IGNvbmZp Z3VyYXRpb24gb2YgdGhlIGJ1cwo+ID4gPiA+ICsqKi8KPiA+ID4gPiArU1RBVElDCj4gPiA+ID4g K1ZPSUQKPiA+ID4gPiArRW1tY0dldFRhcmdldEJ1c01vZGUgKAo+ID4gPiA+ICsgIElOIFNEX01N Q19IQ19QUklWQVRFX0RBVEEgICpQcml2YXRlLAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAg ICAgICAgICAgIFNsb3RJbmRleCwKPiA+ID4gPiArICBJTiBFTU1DX0VYVF9DU0QgICAgICAgICAg ICAqRXh0Q3NkLAo+ID4gPiA+ICsgIE9VVCBFREtJSV9TRF9NTUNfQlVTX01PREUgICpCdXNNb2Rl Cj4gPiA+ID4gKyAgKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgQnVzTW9kZS0+QnVzVGltaW5nID0g RW1tY0dldFRhcmdldEJ1c1RpbWluZyAoUHJpdmF0ZSwKPiBTbG90SW5kZXgsCj4gPiA+ID4gRXh0 Q3NkKTsKPiA+ID4gPiArICBCdXNNb2RlLT5CdXNXaWR0aCA9IEVtbWNHZXRUYXJnZXRCdXNXaWR0 aCAoUHJpdmF0ZSwgU2xvdEluZGV4LAo+ID4gPiA+IEV4dENzZCwgQnVzTW9kZS0+QnVzVGltaW5n KTsKPiA+ID4gPiArICBCdXNNb2RlLT5DbG9ja0ZyZXEgPSBFbW1jR2V0VGFyZ2V0Q2xvY2tGcmVx IChQcml2YXRlLCBTbG90SW5kZXgsCj4gPiA+ID4gRXh0Q3NkLCBCdXNNb2RlLT5CdXNUaW1pbmcp Owo+ID4gPiA+ICsgIEJ1c01vZGUtPkRyaXZlclN0cmVuZ3RoID0gRW1tY0dldFRhcmdldERyaXZl clN0cmVuZ3RoIChQcml2YXRlLAo+ID4gPiA+IFNsb3RJbmRleCwgRXh0Q3NkLCBCdXNNb2RlLT5C dXNUaW1pbmcpOwo+ID4gPiA+ICB9Cj4gPiA+ID4KPiA+ID4gPiAgLyoqCj4gPiA+ID4gQEAgLTk4 MywxMCArMTI2NSw3IEBAIEVtbWNTZXRCdXNNb2RlICgKPiA+ID4gPiAgICBFRklfU1RBVFVTICAg ICAgICAgICAgICAgICAgICBTdGF0dXM7Cj4gPiA+ID4gICAgRU1NQ19DU0QgICAgICAgICAgICAg ICAgICAgICAgQ3NkOwo+ID4gPiA+ICAgIEVNTUNfRVhUX0NTRCAgICAgICAgICAgICAgICAgIEV4 dENzZDsKPiA+ID4gPiAtICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICBIc1RpbWluZzsK PiA+ID4gPiAtICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICBJc0RkcjsKPiA+ID4gPiAt ICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBDbG9ja0ZyZXE7Cj4gPiA+ID4gLSAgVUlO VDggICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGg7Cj4gPiA+ID4gKyAgRURLSUlfU0Rf TU1DX0JVU19NT0RFICAgICAgICAgQnVzTW9kZTsKPiA+ID4gPiAgICBTRF9NTUNfSENfUFJJVkFU RV9EQVRBICAgICAgICAqUHJpdmF0ZTsKPiA+ID4gPgo+ID4gPiA+ICAgIFByaXZhdGUgPSBTRF9N TUNfSENfUFJJVkFURV9GUk9NX1RISVMgKFBhc3NUaHJ1KTsKPiA+ID4gPiBAQCAtMTAwNCw4NSAr MTI4MywzMCBAQCBFbW1jU2V0QnVzTW9kZSAoCj4gPiA+ID4gICAgfQo+ID4gPiA+Cj4gPiA+ID4g ICAgQVNTRVJUIChQcml2YXRlLT5CYXNlQ2xrRnJlcVtTbG90XSAhPSAwKTsKPiA+ID4gPiArCj4g PiA+ID4gICAgLy8KPiA+ID4gPiAtICAvLyBDaGVjayBpZiB0aGUgSG9zdCBDb250cm9sbGVyIHN1 cHBvcnQgOGJpdHMgYnVzIHdpZHRoLgo+ID4gPiA+IC0gIC8vCj4gPiA+ID4gLSAgaWYgKFByaXZh dGUtPkNhcGFiaWxpdHlbU2xvdF0uQnVzV2lkdGg4ICE9IDApIHsKPiA+ID4gPiAtICAgIEJ1c1dp ZHRoID0gODsKPiA+ID4gPiAtICB9IGVsc2Ugewo+ID4gPiA+IC0gICAgQnVzV2lkdGggPSA0Owo+ ID4gPiA+IC0gIH0KPiA+ID4gPiAtICAvLwo+ID4gPiA+IC0gIC8vIEdldCBEZWl2Y2VfVHlwZSBm cm9tIEVYVF9DU0QgcmVnaXN0ZXIuCj4gPiA+ID4gKyAgLy8gR2V0IERldmljZV9UeXBlIGZyb20g RVhUX0NTRCByZWdpc3Rlci4KPiA+ID4gPiAgICAvLwo+ID4gPiA+ICAgIFN0YXR1cyA9IEVtbWNH ZXRFeHRDc2QgKFBhc3NUaHJ1LCBTbG90LCAmRXh0Q3NkKTsKPiA+ID4gPiAgICBpZiAoRUZJX0VS Uk9SIChTdGF0dXMpKSB7Cj4gPiA+ID4gICAgICBERUJVRyAoKERFQlVHX0VSUk9SLCAiRW1tY1Nl dEJ1c01vZGU6IEdldEV4dENzZCBmYWlscwo+ID4gPiB3aXRoICVyXG4iLAo+ID4gPiA+IFN0YXR1 cykpOwo+ID4gPiA+ICAgICAgcmV0dXJuIFN0YXR1czsKPiA+ID4gPiAgICB9Cj4gPiA+ID4gLSAg Ly8KPiA+ID4gPiAtICAvLyBDYWxjdWxhdGUgc3VwcG9ydGVkIGJ1cyBzcGVlZC9idXMgd2lkdGgv Y2xvY2sgZnJlcXVlbmN5Lgo+ID4gPiA+IC0gIC8vCj4gPiA+ID4gLSAgSHNUaW1pbmcgID0gMDsK PiA+ID4gPiAtICBJc0RkciAgICAgPSBGQUxTRTsKPiA+ID4gPiAtICBDbG9ja0ZyZXEgPSAwOwo+ ID4gPiA+IC0gIGlmICgoKEV4dENzZC5EZXZpY2VUeXBlICYgKEJJVDQgfCBCSVQ1KSkgICE9IDAp ICYmIChQcml2YXRlLQo+ID4gPiA+ID5DYXBhYmlsaXR5W1Nsb3RdLlNkcjEwNCAhPSAwKSkgewo+ ID4gPiA+IC0gICAgSHNUaW1pbmcgID0gMjsKPiA+ID4gPiAtICAgIElzRGRyICAgICA9IEZBTFNF Owo+ID4gPiA+IC0gICAgQ2xvY2tGcmVxID0gMjAwOwo+ID4gPiA+IC0gIH0gZWxzZSBpZiAoKChF eHRDc2QuRGV2aWNlVHlwZSAmIChCSVQyIHwgQklUMykpICAhPSAwKSAmJiAoUHJpdmF0ZS0KPiA+ ID4gPiA+Q2FwYWJpbGl0eVtTbG90XS5EZHI1MCAhPSAwKSkgewo+ID4gPiA+IC0gICAgSHNUaW1p bmcgID0gMTsKPiA+ID4gPiAtICAgIElzRGRyICAgICA9IFRSVUU7Cj4gPiA+ID4gLSAgICBDbG9j a0ZyZXEgPSA1MjsKPiA+ID4gPiAtICB9IGVsc2UgaWYgKCgoRXh0Q3NkLkRldmljZVR5cGUgJiBC SVQxKSAgIT0gMCkgJiYgKFByaXZhdGUtCj4gPiA+ID4gPkNhcGFiaWxpdHlbU2xvdF0uSGlnaFNw ZWVkICE9IDApKSB7Cj4gPiA+ID4gLSAgICBIc1RpbWluZyAgPSAxOwo+ID4gPiA+IC0gICAgSXNE ZHIgICAgID0gRkFMU0U7Cj4gPiA+ID4gLSAgICBDbG9ja0ZyZXEgPSA1MjsKPiA+ID4gPiAtICB9 IGVsc2UgaWYgKCgoRXh0Q3NkLkRldmljZVR5cGUgJiBCSVQwKSAgIT0gMCkgJiYgKFByaXZhdGUt Cj4gPiA+ID4gPkNhcGFiaWxpdHlbU2xvdF0uSGlnaFNwZWVkICE9IDApKSB7Cj4gPiA+ID4gLSAg ICBIc1RpbWluZyAgPSAxOwo+ID4gPiA+IC0gICAgSXNEZHIgICAgID0gRkFMU0U7Cj4gPiA+ID4g LSAgICBDbG9ja0ZyZXEgPSAyNjsKPiA+ID4gPiAtICB9Cj4gPiA+ID4gLSAgLy8KPiA+ID4gPiAt ICAvLyBDaGVjayBpZiBib3RoIG9mIHRoZSBkZXZpY2UgYW5kIHRoZSBob3N0IGNvbnRyb2xsZXIg c3VwcG9ydCBIUzQwMAo+ID4gRERSCj4gPiA+ID4gbW9kZS4KPiA+ID4gPiAtICAvLwo+ID4gPiA+ IC0gIGlmICgoKEV4dENzZC5EZXZpY2VUeXBlICYgKEJJVDYgfCBCSVQ3KSkgICE9IDApICYmIChQ cml2YXRlLQo+ID4gPiA+ID5DYXBhYmlsaXR5W1Nsb3RdLkhzNDAwICE9IDApKSB7Cj4gPiA+ID4g LSAgICAvLwo+ID4gPiA+IC0gICAgLy8gVGhlIGhvc3QgY29udHJvbGxlciBzdXBwb3J0cyA4Yml0 cyBidXMuCj4gPiA+ID4gLSAgICAvLwo+ID4gPiA+IC0gICAgQVNTRVJUIChCdXNXaWR0aCA9PSA4 KTsKPiA+ID4gPiAtICAgIEhzVGltaW5nICA9IDM7Cj4gPiA+ID4gLSAgICBJc0RkciAgICAgPSBU UlVFOwo+ID4gPiA+IC0gICAgQ2xvY2tGcmVxID0gMjAwOwo+ID4gPiA+IC0gIH0KPiA+ID4gPgo+ ID4gPiA+IC0gIGlmICgoQ2xvY2tGcmVxID09IDApIHx8IChIc1RpbWluZyA9PSAwKSkgewo+ID4g PiA+IC0gICAgLy8KPiA+ID4gPiAtICAgIC8vIENvbnRpbnVlIHVzaW5nIGRlZmF1bHQgc2V0dGlu Zy4KPiA+ID4gPiAtICAgIC8vCj4gPiA+ID4gLSAgICByZXR1cm4gRUZJX1NVQ0NFU1M7Cj4gPiA+ ID4gLSAgfQo+ID4gPiA+ICsgIEVtbWNHZXRUYXJnZXRCdXNNb2RlIChQcml2YXRlLCBTbG90LCAm RXh0Q3NkLCAmQnVzTW9kZSk7Cj4gPiA+ID4KPiA+ID4gPiAtICBERUJVRyAoKERFQlVHX0lORk8s ICJFbW1jU2V0QnVzTW9kZTogSHNUaW1pbmcgJWQKPiA+IENsb2NrRnJlcSAlZAo+ID4gPiA+IEJ1 c1dpZHRoICVkIERkciAlYVxuIiwgSHNUaW1pbmcsIENsb2NrRnJlcSwgQnVzV2lkdGgsIElzRGRy ID8KPiA+ID4gPiAiVFJVRSI6IkZBTFNFIikpOwo+ID4gPiA+ICsgIERFQlVHICgoREVCVUdfSU5G TywgIkVtbWNTZXRCdXNNb2RlOiBUYXJnZXQgYnVzIG1vZGU6Cj4gdGltaW5nCj4gPiA+ID4gPSAl ZCwgd2lkdGggPSAlZCwgY2xvY2sgZnJlcSA9ICVkLCBkcml2ZXIgc3RyZW5ndGggPSAlZFxuIiwK PiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNNb2RlLkJ1c1RpbWluZywgQnVz TW9kZS5CdXNXaWR0aCwKPiA+ID4gQnVzTW9kZS5DbG9ja0ZyZXEsCj4gPiA+ID4gQnVzTW9kZS5E cml2ZXJTdHJlbmd0aC5FbW1jKSk7Cj4gPiA+ID4KPiA+ID4gPiAtICBpZiAoSHNUaW1pbmcgPT0g Mykgewo+ID4gPiA+IC0gICAgLy8KPiA+ID4gPiAtICAgIC8vIEV4ZWN1dGUgSFM0MDAgdGltaW5n IHN3aXRjaCBwcm9jZWR1cmUKPiA+ID4gPiAtICAgIC8vCj4gPiA+ID4gLSAgICBTdGF0dXMgPSBF bW1jU3dpdGNoVG9IUzQwMCAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsIENsb2NrRnJlcSk7 Cj4gPiA+ID4gLSAgfSBlbHNlIGlmIChIc1RpbWluZyA9PSAyKSB7Cj4gPiA+ID4gLSAgICAvLwo+ ID4gPiA+IC0gICAgLy8gRXhlY3V0ZSBIUzIwMCB0aW1pbmcgc3dpdGNoIHByb2NlZHVyZQo+ID4g PiA+IC0gICAgLy8KPiA+ID4gPiAtICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hTMjAwIChQY2lJ bywgUGFzc1RocnUsIFNsb3QsIFJjYSwgQ2xvY2tGcmVxLAo+ID4gPiA+IEJ1c1dpZHRoKTsKPiA+ ID4gPiArICBpZiAoQnVzTW9kZS5CdXNUaW1pbmcgPT0gU2RNbWNNbWNIczQwMCkgewo+ID4gPiA+ ICsgICAgU3RhdHVzID0gRW1tY1N3aXRjaFRvSFM0MDAgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwg UmNhLAo+ICZCdXNNb2RlKTsKPiA+ID4gPiArICB9IGVsc2UgaWYgKEJ1c01vZGUuQnVzVGltaW5n ID09IFNkTW1jTW1jSHMyMDApIHsKPiA+ID4gPiArICAgIFN0YXR1cyA9IEVtbWNTd2l0Y2hUb0hT MjAwIChQY2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwKPiAmQnVzTW9kZSk7Cj4gPiA+ID4gICAg fSBlbHNlIHsKPiA+ID4gPiAtICAgIC8vCj4gPiA+ID4gLSAgICAvLyBFeGVjdXRlIEhpZ2ggU3Bl ZWQgdGltaW5nIHN3aXRjaCBwcm9jZWR1cmUKPiA+ID4gPiAtICAgIC8vCj4gPiA+ID4gLSAgICBT dGF0dXMgPSBFbW1jU3dpdGNoVG9IaWdoU3BlZWQgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgUmNh LAo+ID4gQ2xvY2tGcmVxLAo+ID4gPiA+IElzRGRyLCBCdXNXaWR0aCk7Cj4gPiA+ID4gKyAgICBT dGF0dXMgPSBFbW1jU3dpdGNoVG9IaWdoU3BlZWQgKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwgUmNh LAo+ID4gPiAmQnVzTW9kZSk7Cj4gPiA+ID4gICAgfQo+ID4gPiA+Cj4gPiA+ID4gLSAgREVCVUcg KChERUJVR19JTkZPLCAiRW1tY1NldEJ1c01vZGU6IFN3aXRjaCB0byAlYSAlclxuIiwKPiA+ID4g KEhzVGltaW5nCj4gPiA+ID4gPT0gMykgPyAiSFM0MDAiIDogKChIc1RpbWluZyA9PSAyKSA/ICJI UzIwMCIgOiAiSGlnaFNwZWVkIiksIFN0YXR1cykpOwo+ID4gPiA+ICsgIERFQlVHICgoREVCVUdf SU5GTywgIkVtbWNTZXRCdXNNb2RlOiBTd2l0Y2ggdG8gJWEgJXJcbiIsCj4gPiA+ID4gKEJ1c01v ZGUuQnVzVGltaW5nID09IFNkTW1jTW1jSHM0MDApID8gIkhTNDAwIiA6Cj4gPiA+ID4gKChCdXNN b2RlLkJ1c1RpbWluZyA9PSBTZE1tY01tY0hzMjAwKSA/ICJIUzIwMCIgOiAiSGlnaFNwZWVkIiks Cj4gPiA+ID4gU3RhdHVzKSk7Cj4gPiA+ID4KPiA+ID4gPiAgICByZXR1cm4gU3RhdHVzOwo+ID4g PiA+ICB9Cj4gPiA+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNp SGNEeGUvU2REZXZpY2UuYwo+ID4gPiA+IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lI Y0R4ZS9TZERldmljZS5jCj4gPiA+ID4gaW5kZXggMTc5MzZhNTQ5Mi4uMzZkMmI0ODdkZiAxMDA2 NDQKPiA+ID4gPiAtLS0gYS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1NkRGV2 aWNlLmMKPiA+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1Nk RGV2aWNlLmMKPiA+ID4gPiBAQCAtMzEzLDEwICszMTMsNiBAQCBTZENhcmRTZXRSY2EgKAo+ID4g PiA+ICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gIH0KPiA+ID4gPgo+ID4gPiA+IC0KPiA+ID4g PiAtCj4gPiA+ID4gLQo+ID4gPiA+IC0KPiA+ID4gPiAgLyoqCj4gPiA+ID4gICAgU2VuZCBjb21t YW5kIFNFTEVDVF9ERVNFTEVDVF9DQVJEIHRvIHRoZSBTRCBkZXZpY2UgdG8KPiA+ID4gPiBzZWxl Y3QvZGVzZWxlY3QgaXQuCj4gPiA+ID4KPiA+ID4gPiBAQCAtNDIyLDcgKzQxOCw3IEBAIFNkQ2Fy ZFNldEJ1c1dpZHRoICgKPiA+ID4gPiAgICBJTiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NP TCAgICAgICpQYXNzVGhydSwKPiA+ID4gPiAgICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFNsb3QsCj4gPiA+ID4gICAgSU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBSY2EsCj4gPiA+ID4gLSAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBCdXNXaWR0aAo+ID4gPiA+ICsgIElOIFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgQnVzV2lkdGgKPiA+ID4gPiAgICApCj4gPiA+ID4gIHsKPiA+ID4gPiAgICBFRklfU0Rf TU1DX0NPTU1BTkRfQkxPQ0sgICAgICAgICAgICAgIFNkTW1jQ21kQmxrOwo+ID4gPiA+IEBAIC00 NzYsNyArNDcyLDcgQEAgU2RDYXJkU2V0QnVzV2lkdGggKAo+ID4gPiA+ICAgIEBwYXJhbVtpbl0g IFNsb3QgICAgICAgICAgVGhlIHNsb3QgbnVtYmVyIG9mIHRoZSBTRCBjYXJkIHRvIHNlbmQgdGhl Cj4gPiA+IGNvbW1hbmQKPiA+ID4gPiB0by4KPiA+ID4gPiAgICBAcGFyYW1baW5dICBBY2Nlc3NN b2RlICAgIFRoZSB2YWx1ZSBmb3IgYWNjZXNzIG1vZGUgZ3JvdXAuCj4gPiA+Cj4gPiA+Cj4gPiA+ IFBsZWFzZSBoZWxwIHRvIHVwZGF0ZSB0aGUgcGFyYW1ldGVyIGNvbW1lbnQgdG8gcmVmbGVjdCB0 aGUgZnVuY3Rpb24KPiA+ID4gaW50ZXJmYWNlIGNoYW5nZXMuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4g ICAgQHBhcmFtW2luXSAgQ29tbWFuZFN5c3RlbSBUaGUgdmFsdWUgZm9yIGNvbW1hbmQgc2V0IGdy b3VwLgo+ID4gPiA+IC0gIEBwYXJhbVtpbl0gIERyaXZlU3RyZW5ndGggVGhlIHZhbHVlIGZvciBk cml2ZSBsZW5ndGggZ3JvdXAuCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgRHJpdmVTdHJlbmd0aCBU aGUgdmFsdWUgZm9yIGRyaXZlciBzdHJlbmd0aCBncm91cC4KPiA+ID4KPiA+ID4KPiA+ID4gUGxl YXNlIGhlbHAgdG8gdXBkYXRlIHRoZSBwYXJhbWV0ZXIgbmFtZSBpbiB0aGUgYWJvdmUgY29tbWVu dCBmcm9tCj4gPiA+ICdEcml2ZVN0cmVuZ3RoJyB0byAnRHJpdmVyU3RyZW5ndGgnLgo+ID4gPgo+ ID4gPgo+ID4gPiA+ICAgIEBwYXJhbVtpbl0gIFBvd2VyTGltaXQgICAgVGhlIHZhbHVlIGZvciBw b3dlciBsaW1pdCBncm91cC4KPiA+ID4gPiAgICBAcGFyYW1baW5dICBNb2RlICAgICAgICAgIFN3 aXRjaCBvciBjaGVjayBmdW5jdGlvbi4KPiA+ID4gPiAgICBAcGFyYW1bb3V0XSBTd2l0Y2hSZXNw ICAgIFRoZSByZXR1cm4gc3dpdGNoIGZ1bmN0aW9uIHN0YXR1cy4KPiA+ID4gPiBAQCAtNDg5LDkg KzQ4NSw5IEBAIEVGSV9TVEFUVVMKPiA+ID4gPiAgU2RDYXJkU3dpdGNoICgKPiA+ID4gPiAgICBJ TiAgICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfUFJPVE9DT0wgICpQYXNzVGhydSwKPiA+ID4gPiAg ICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsCj4gPiA+ID4gLSAg SU4gICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgICBBY2Nlc3NNb2RlLAo+ID4gPiA+ ICsgIElOICAgICBTRF9NTUNfQlVTX01PREUgICAgICAgICAgICAgICAgQnVzVGltaW5nLAo+ID4g PiA+ICAgIElOICAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFN5c3Rl bSwKPiA+ID4gPiAtICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgIERyaXZl U3RyZW5ndGgsCj4gPiA+ID4gKyAgSU4gICAgIFNEX0RSSVZFUl9TVFJFTkdUSF9UWVBFICAgICAg ICBEcml2ZXJTdHJlbmd0aCwKPiA+ID4gPiAgICBJTiAgICAgVUlOVDggICAgICAgICAgICAgICAg ICAgICAgICAgIFBvd2VyTGltaXQsCj4gPiA+ID4gICAgSU4gICAgIEJPT0xFQU4gICAgICAgICAg ICAgICAgICAgICAgICBNb2RlLAo+ID4gPiA+ICAgICAgIE9VVCBVSU5UOCAgICAgICAgICAgICAg ICAgICAgICAgICAgKlN3aXRjaFJlc3AKPiA+ID4gPiBAQCAtNTAyLDYgKzQ5OCw3IEBAIFNkQ2Fy ZFN3aXRjaCAoCj4gPiA+ID4gICAgRUZJX1NEX01NQ19QQVNTX1RIUlVfQ09NTUFORF9QQUNLRVQg ICBQYWNrZXQ7Cj4gPiA+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICAgICAgICAg ICBTdGF0dXM7Cj4gPiA+ID4gICAgVUlOVDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBNb2RlVmFsdWU7Cj4gPiA+ID4gKyAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBBY2Nlc3NNb2RlOwo+ID4gPiA+Cj4gPiA+ID4gICAgWmVyb01lbSAoJlNkTW1jQ21kQmxr LCBzaXplb2YgKFNkTW1jQ21kQmxrKSk7Cj4gPiA+ID4gICAgWmVyb01lbSAoJlNkTW1jU3RhdHVz QmxrLCBzaXplb2YgKFNkTW1jU3RhdHVzQmxrKSk7Cj4gPiA+ID4gQEAgLTUxNiw4ICs1MTMsMzEg QEAgU2RDYXJkU3dpdGNoICgKPiA+ID4gPiAgICBTZE1tY0NtZEJsay5SZXNwb25zZVR5cGUgPSBT ZE1tY1Jlc3BvbnNlVHlwZVIxOwo+ID4gPiA+Cj4gPiA+ID4gICAgTW9kZVZhbHVlID0gTW9kZSA/ IEJJVDMxIDogMDsKPiA+ID4gPiAtICBTZE1tY0NtZEJsay5Db21tYW5kQXJndW1lbnQgPSAoQWNj ZXNzTW9kZSAmIDB4RikgfAo+ID4gPiAoKFBvd2VyTGltaXQKPiA+ID4gPiAmIDB4RikgPDwgNCkg fCBcCj4gPiA+ID4gLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChEcml2ZVN0cmVu Z3RoICYgMHhGKSA8PCA4KSB8ICgoRHJpdmVTdHJlbmd0aCAmIDB4RikKPiA8PAo+ID4gPiAxMikK PiA+ID4gPiB8IFwKPiA+ID4gPiArCj4gPiA+ID4gKyAgc3dpdGNoIChCdXNUaW1pbmcpIHsKPiA+ ID4gPiArICAgIGNhc2UgU2RNbWNVaHNEZHI1MDoKPiA+ID4gPiArICAgICAgQWNjZXNzTW9kZSA9 IDB4NDsKPiA+ID4gPiArICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jVWhzU2Ry MTA0Ogo+ID4gPiA+ICsgICAgICBBY2Nlc3NNb2RlID0gMHgzOwo+ID4gPiA+ICsgICAgICBicmVh azsKPiA+ID4gPiArICAgIGNhc2UgU2RNbWNVaHNTZHI1MDoKPiA+ID4gPiArICAgICAgQWNjZXNz TW9kZSA9IDB4MjsKPiA+ID4gPiArICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1j VWhzU2RyMjU6Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jU2RIczoKPiA+ID4gPiArICAgICAgQWNj ZXNzTW9kZSA9IDB4MTsKPiA+ID4gPiArICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICBjYXNlIFNk TW1jVWhzU2RyMTI6Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jU2REczoKPiA+ID4gPiArICAgICAg QWNjZXNzTW9kZSA9IDA7Cj4gPiA+ID4gKyAgICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgZGVmYXVs dDoKPiA+ID4gPiArICAgICAgQWNjZXNzTW9kZSA9IDB4RjsKPiA+ID4gPiArICB9Cj4gPiA+ID4g Kwo+ID4gPiA+ICsgIFNkTW1jQ21kQmxrLkNvbW1hbmRBcmd1bWVudCA9IChBY2Nlc3NNb2RlICYg MHhGKSB8Cj4gPiA+ID4gKChDb21tYW5kU3lzdGVtICYgMHhGKSA8PCA0KSB8IFwKPiA+ID4gPiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKERyaXZlclN0cmVuZ3RoICYgMHhGKSA8 PCA4KSB8ICgoUG93ZXJMaW1pdCAmIDB4RikgPDwKPiA+IDEyKQo+ID4gPiB8Cj4gPiA+ID4gXAo+ ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vZGVWYWx1ZTsKPiA+ID4g Pgo+ID4gPiA+ICAgIFBhY2tldC5JbkRhdGFCdWZmZXIgICAgID0gU3dpdGNoUmVzcDsKPiA+ID4g PiBAQCAtNzE4LDcgKzczOCw3IEBAIFNkQ2FyZFN3aXRjaEJ1c1dpZHRoICgKPiA+ID4gPiAgICBJ TiBFRklfU0RfTU1DX1BBU1NfVEhSVV9QUk9UT0NPTCAgICAgICpQYXNzVGhydSwKPiA+ID4gPiAg ICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsCj4gPiA+ID4gICAg SU4gVUlOVDE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSY2EsCj4gPiA+ID4gLSAgSU4g VUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aAo+ID4gPiA+ICsgIElO IFVJTlQxNiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVzV2lkdGgKPiA+ID4gPiAgICAp Cj4gPiA+ID4gIHsKPiA+ID4gPiAgICBFRklfU1RBVFVTICAgICAgICAgIFN0YXR1czsKPiA+ID4g PiBAQCAtNzQ4LDYgKzc2OCwyNjEgQEAgU2RDYXJkU3dpdGNoQnVzV2lkdGggKAo+ID4gPiA+ICAg IHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gIH0KPiA+ID4gPgo+ID4gPiA+ICsvKioKPiA+ID4gPiAr ICBDaGVjayBpZiBwYXNzZWQgQnVzVGltaW5nIGlzIHN1cHBvcnRlZCBpbiBib3RoIGNvbnRyb2xs ZXIgYW5kIGNhcmQuCj4gPiA+ID4gKwo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAg ICAgICAgICAgICAgIFBvaW50ZXIgdG8gY29udHJvbGxlciBwcml2YXRlIGRhdGEKPiA+ID4gPiAr ICBAcGFyYW1baW5dIFNsb3RJbmRleCAgICAgICAgICAgICAgICBJbmRleCBvZiB0aGUgc2xvdCBp biB0aGUgY29udHJvbGxlcgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gQ2FyZFN1cHBvcnRlZEJ1c1Rp bWluZ3MgIEJpdG1hc2sgaW5kaWNhdGluZyB3aGljaCBidXMKPiA+ID4gPiB0aW1pbmdzIGFyZSBz dXBwb3J0ZWQgYnkgY2FyZAo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gSXNJblVoc0kgICAgICAgICAg ICAgICAgIEZsYWcgaW5kaWNhdGluZyBpZiBsaW5rIGlzIGluIFVIUy1JCj4gPiA+ID4gKwo+ID4g PiA+ICsgIEByZXR2YWwgVFJVRSAgQm90aCBjYXJkIGFuZCBjb250cm9sbGVyIHN1cHBvcnQgZ2l2 ZW4gQnVzVGltaW5nCj4gPiA+ID4gKyAgQHJldHZhbCBGQUxTRSBDYXJkIG9yIGNvbnRyb2xsZXIg ZG9lc24ndCBzdXBwb3J0IGdpdmVuIEJ1c1RpbWluZwo+ID4gPiA+ICsqKi8KPiA+ID4gPiArU1RB VElDCj4gPiA+ID4gK0JPT0xFQU4KPiA+ID4gPiArU2RJc0J1c1RpbWluZ1N1cHBvcnRlZCAoCj4g PiA+ID4gKyAgSU4gU0RfTU1DX0hDX1BSSVZBVEVfREFUQSAgICpQcml2YXRlLAo+ID4gPiA+ICsg IElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBTbG90SW5kZXgsCj4gPiA+ID4gKyAgSU4gVUlO VDggICAgICAgICAgICAgICAgICAgIENhcmRTdXBwb3J0ZWRCdXNUaW1pbmdzLAo+ID4gPiA+ICsg IElOIEJPT0xFQU4gICAgICAgICAgICAgICAgICBJc0luVWhzSSwKPiA+ID4gPiArICBJTiBTRF9N TUNfQlVTX01PREUgICAgICAgICAgQnVzVGltaW5nCj4gPiA+ID4gKyAgKQo+ID4gPiA+ICt7Cj4g PiA+ID4gKyAgU0RfTU1DX0hDX1NMT1RfQ0FQICAgICAgICAgICAqQ2FwYWJpbGl0eTsKPiA+ID4g PiArCj4gPiA+ID4gKyAgQ2FwYWJpbGl0eSA9ICZQcml2YXRlLT5DYXBhYmlsaXR5W1Nsb3RJbmRl eF07Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIGlmIChJc0luVWhzSSkgewo+ID4gPiA+ICsgICAgc3dp dGNoIChCdXNUaW1pbmcpIHsKPiA+ID4KPiA+ID4KPiA+ID4gUGxlYXNlIGhlbHAgdG8gYWRkIGEg J2RlZmF1bHQnIGhhbmRsZSBmb3IgdGhpcyAnc3dpdGNoJyBzdGF0ZW1lbnQsIHRoZQo+ID4gPiBw cm9wb3NlZAo+ID4gPiBjb2RlIHdpbGwgY2F1c2UgYSBHQ0M1IGJ1aWxkIGZhaWx1cmUuCj4gPiA+ Cj4gPiA+Cj4gPiA+ID4gKyAgICAgIGNhc2UgU2RNbWNVaHNTZHIxMDQ6Cj4gPiA+ID4gKyAgICAg ICAgaWYgKENhcGFiaWxpdHktPlNkcjEwNCAmJiAoKENhcmRTdXBwb3J0ZWRCdXNUaW1pbmdzICYg QklUMykgIT0KPiAwKSkKPiA+IHsKPiA+ID4gPiArICAgICAgICAgIHJldHVybiBUUlVFOwo+ID4g PiA+ICsgICAgICAgIH0KPiA+ID4gPiArICAgICAgICBicmVhazsKPiA+ID4gPiArICAgICAgY2Fz ZSBTZE1tY1Voc0RkcjUwOgo+ID4gPiA+ICsgICAgICAgIGlmIChDYXBhYmlsaXR5LT5EZHI1MCAm JiAoKENhcmRTdXBwb3J0ZWRCdXNUaW1pbmdzICYgQklUNCkgIT0gMCkpCj4gewo+ID4gPiA+ICsg ICAgICAgICAgcmV0dXJuIFRSVUU7Cj4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ICsgICAgICAg IGJyZWFrOwo+ID4gPiA+ICsgICAgICBjYXNlIFNkTW1jVWhzU2RyNTA6Cj4gPiA+ID4gKyAgICAg ICAgaWYgKENhcGFiaWxpdHktPlNkcjUwICYmICgoQ2FyZFN1cHBvcnRlZEJ1c1RpbWluZ3MgJiBC SVQyKSAhPSAwKSkKPiB7Cj4gPiA+ID4gKyAgICAgICAgICByZXR1cm4gVFJVRTsKPiA+ID4gPiAr ICAgICAgICB9Cj4gPiA+ID4gKyAgICAgICAgYnJlYWs7Cj4gPiA+ID4gKyAgICAgIGNhc2UgU2RN bWNVaHNTZHIyNToKPiA+ID4gPiArICAgICAgICBpZiAoKENhcmRTdXBwb3J0ZWRCdXNUaW1pbmdz ICYgQklUMSkgIT0gMCkgewo+ID4gPiA+ICsgICAgICAgICAgcmV0dXJuIFRSVUU7Cj4gPiA+ID4g KyAgICAgICAgfQo+ID4gPiA+ICsgICAgICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgICBjYXNlIFNk TW1jVWhzU2RyMTI6Cj4gPiA+ID4gKyAgICAgICAgaWYgKChDYXJkU3VwcG9ydGVkQnVzVGltaW5n cyAmIEJJVDApICE9IDApIHsKPiA+ID4gPiArICAgICAgICAgIHJldHVybiBUUlVFOwo+ID4gPiA+ ICsgICAgICAgIH0KPiA+ID4gPiArICAgICAgICBicmVhazsKPiA+ID4gPiArICAgIH0KPiA+ID4g PiArICB9IGVsc2Ugewo+ID4gPiA+ICsgICAgc3dpdGNoIChCdXNUaW1pbmcpIHsKPiA+ID4KPiA+ ID4KPiA+ID4gUGxlYXNlIGhlbHAgdG8gYWRkIGEgJ2RlZmF1bHQnIGhhbmRsZSBmb3IgdGhpcyAn c3dpdGNoJyBzdGF0ZW1lbnQsIHRoZQo+ID4gPiBwcm9wb3NlZAo+ID4gPiBjb2RlIHdpbGwgY2F1 c2UgYSBHQ0M1IGJ1aWxkIGZhaWx1cmUuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4gKyAgICAgIGNhc2Ug U2RNbWNTZEhzOgo+ID4gPiA+ICsgICAgICAgIGlmIChDYXBhYmlsaXR5LT5IaWdoU3BlZWQgJiYg KENhcmRTdXBwb3J0ZWRCdXNUaW1pbmdzICYKPiBCSVQxKSAhPQo+ID4gMCkKPiA+ID4gewo+ID4g PiA+ICsgICAgICAgICAgcmV0dXJuIFRSVUU7Cj4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ICsg ICAgICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgICBjYXNlIFNkTW1jU2REczoKPiA+ID4gPiArICAg ICAgICBpZiAoKENhcmRTdXBwb3J0ZWRCdXNUaW1pbmdzICYgQklUMCkgIT0gMCkgewo+ID4gPiA+ ICsgICAgICAgICAgcmV0dXJuIFRSVUU7Cj4gPiA+ID4gKyAgICAgICAgfQo+ID4gPiA+ICsgICAg ICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgfQo+ID4gPiA+ICsgIH0KPiA+ID4gPiArCj4gPiA+ID4g KyAgcmV0dXJuIEZBTFNFOwo+ID4gPiA+ICt9Cj4gPiA+ID4gKwo+ID4gPiA+ICsvKioKPiA+ID4g PiArICBHZXQgdGhlIHRhcmdldCBidXMgdGltaW5nIHRvIHNldCBvbiB0aGUgbGluay4gVGhpcyBm dW5jdGlvbgo+ID4gPiA+ICsgIHdpbGwgdHJ5IHRvIHNlbGVjdCBoaWdoZXN0IGJ1cyB0aW1pbmcg c3VwcG9ydGVkIGJ5IGNhcmQsIGNvbnRyb2xsZXIKPiA+ID4gPiArICBhbmQgdGhlIGRyaXZlci4K PiA+ID4gPiArCj4gPiA+ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgICAgICAgICAgICAgICAg UG9pbnRlciB0byBjb250cm9sbGVyIHByaXZhdGUgZGF0YQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0g U2xvdEluZGV4ICAgICAgICAgICAgICAgIEluZGV4IG9mIHRoZSBzbG90IGluIHRoZSBjb250cm9s bGVyCj4gPiA+ID4gKyAgQHBhcmFtW2luXSBDYXJkU3VwcG9ydGVkQnVzVGltaW5ncyAgQml0bWFz ayBpbmRpY2F0aW5nIHdoaWNoIGJ1cwo+ID4gPiA+IHRpbWluZ3MgYXJlIHN1cHBvcnRlZCBieSBj YXJkCj4gPiA+ID4gKyAgQHBhcmFtW2luXSBJc0luVWhzSSAgICAgICAgICAgICAgICAgRmxhZyBp bmRpY2F0aW5nIGlmIGxpbmsgaXMgaW4gVUhTLUkKPiA+ID4gPiArCj4gPiA+ID4gKyAgQHJldHVy biAgQnVzIHRpbWluZyB2YWx1ZSB0aGF0IHNob3VsZCBiZSBzZXQgb24gbGluawo+ID4gPiA+ICsq Ki8KPiA+ID4gPiArU1RBVElDCj4gPiA+ID4gK1NEX01NQ19CVVNfTU9ERQo+ID4gPiA+ICtTZEdl dFRhcmdldEJ1c1RpbWluZyAoCj4gPiA+ID4gKyAgSU4gU0RfTU1DX0hDX1BSSVZBVEVfREFUQSAg KlByaXZhdGUsCj4gPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgU2xvdEluZGV4 LAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgIENhcmRTdXBwb3J0ZWRCdXNU aW1pbmdzLAo+ID4gPiA+ICsgIElOIEJPT0xFQU4gICAgICAgICAgICAgICAgIElzSW5VaHNJCj4g PiA+ID4gKyAgKQo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgU0RfTU1DX0JVU19NT0RFICBCdXNUaW1p bmc7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIGlmIChJc0luVWhzSSkgewo+ID4gPiA+ICsgICAgQnVz VGltaW5nID0gU2RNbWNVaHNTZHIxMDQ7Cj4gPiA+ID4gKyAgfSBlbHNlIHsKPiA+ID4gPiArICAg IEJ1c1RpbWluZyA9IFNkTW1jU2RIczsKPiA+ID4gPiArICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICsg IHdoaWxlIChCdXNUaW1pbmcgPiBTZE1tY1NkRHMpIHsKPiA+ID4gPiArICAgIGlmIChTZElzQnVz VGltaW5nU3VwcG9ydGVkIChQcml2YXRlLCBTbG90SW5kZXgsCj4gPiA+ID4gQ2FyZFN1cHBvcnRl ZEJ1c1RpbWluZ3MsIElzSW5VaHNJLCBCdXNUaW1pbmcpKSB7Cj4gPiA+ID4gKyAgICAgIGJyZWFr Owo+ID4gPiA+ICsgICAgfQo+ID4gPiA+ICsgICAgQnVzVGltaW5nLS07Cj4gPiA+ID4gKyAgfQo+ ID4gPgo+ID4gPgo+ID4gPiBUaGUgb3JpZ2luIGxvZ2ljIGhhcyB0aGUgYmVsb3cgcHJlZmVyZW5j ZSB3aGVuIHNlbGVjdGluZyBidXMgdGltaW5nCj4gPiA+IChpZiBzdXBwb3J0ZWQpOgo+ID4gPgo+ ID4gPiBTZE1tY1Voc1NkcjEwNAo+ID4gPiBTZE1tY1Voc1NkcjUwCj4gPiA+IFNkTW1jVWhzRGRy NTAKPiA+ID4gU2RNbWNVaHNTZHIyNQo+ID4gPiBTZE1tY1Voc1NkcjEyCj4gPiA+Cj4gPiA+IFNv IHdlIG5lZWQgdG8gcmVvcmRlciB0aGUgdHlwZXMgaW4gJ1NEX01NQ19CVVNfTU9ERScgdG86Cj4g PiA+Cj4gPiA+IHR5cGVkZWYgZW51bSB7Cj4gPiA+ICAgU2RNbWNTZERzLAo+ID4gPiAgIFNkTW1j U2RIcywKPiA+ID4gICBTZE1tY1Voc1NkcjEyLAo+ID4gPiAgIFNkTW1jVWhzU2RyMjUsCj4gPiA+ ICAgU2RNbWNVaHNEZHI1MCwKPiA+ID4gICBTZE1tY1Voc1NkcjUwLAo+ID4gPiAgIFNkTW1jVWhz U2RyMTA0LAo+ID4gPiAgIC4uLgo+ID4gPiB9IFNEX01NQ19CVVNfTU9ERTsKPiA+ID4KPiA+ID4g T3RoZXJ3aXNlLCB0aGUgRGRyNTAgbW9kZSB3aWxsIG5ldmVyIGJlIHNlbGVjdGVkLgo+ID4gPgo+ ID4gPgo+ID4gPiA+ICsKPiA+ID4gPiArICByZXR1cm4gQnVzVGltaW5nOwo+ID4gPiA+ICt9Cj4g PiA+ID4gKwo+ID4gPiA+ICsvKioKPiA+ID4gPiArICBHZXQgdGhlIHRhcmdldCBidXMgd2lkdGgg dG8gYmUgc2V0IG9uIHRoZSBidXMuCj4gPiA+ID4gKwo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gUHJp dmF0ZSAgICBQb2ludGVyIHRvIGNvbnRyb2xsZXIgcHJpdmF0ZSBkYXRhCj4gPiA+ID4gKyAgQHBh cmFtW2luXSBTbG90SW5kZXggIEluZGV4IG9mIHRoZSBzbG90IGluIHRoZSBjb250cm9sbGVyCj4g PiA+ID4gKyAgQHBhcmFtW2luXSBCdXNUaW1pbmcgIEJ1cyB0aW1pbmcgc2V0IG9uIHRoZSBidXMK PiA+ID4gPiArCj4gPiA+ID4gKyAgQHJldHVybiBCdXMgd2lkdGggdG8gYmUgc2V0IG9uIHRoZSBi dXMKPiA+ID4gPiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ICtVSU5UMTYKPiA+ID4gPiAr U2RHZXRUYXJnZXRCdXNXaWR0aCAoCj4gPiA+ID4gKyAgSU4gU0RfTU1DX0hDX1BSSVZBVEVfREFU QSAgICpQcml2YXRlLAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgICBTbG90 SW5kZXgsCj4gPiA+ID4gKyAgSU4gU0RfTU1DX0JVU19NT0RFICAgICAgICAgIEJ1c1RpbWluZwo+ ID4gPiA+ICsgICkKPiA+ID4gPiArewo+ID4gPiA+ICsgIFVJTlQxNiAgQnVzV2lkdGg7Cj4gPiA+ ID4gKyAgVUlOVDE2ICBQcmVmZXJlZEJ1c1dpZHRoOwo+ID4gPiA+ICsKPiA+ID4gPiArICBQcmVm ZXJlZEJ1c1dpZHRoID0gUHJpdmF0ZS0KPiA+ID4gPiA+U2xvdFtTbG90SW5kZXhdLk9wZXJhdGlu Z1BhcmFtZXRlcnMuQnVzV2lkdGg7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIGlmIChCdXNUaW1pbmcg PT0gU2RNbWNTZERzIHx8IEJ1c1RpbWluZyA9PSBTZE1tY1NkSHMpIHsKPiA+ID4gPiArICAgIGlm IChQcmVmZXJlZEJ1c1dpZHRoICE9IEVES0lJX1NEX01NQ19CVVNfV0lEVEhfSUdOT1JFKSB7Cj4g PiA+ID4gKyAgICAgIEJ1c1dpZHRoID0gUHJlZmVyZWRCdXNXaWR0aDsKPiA+ID4KPiA+ID4KPiA+ ID4gVGhlIHN1cHBvcnRlZCBidXMgd2lkdGggaXMgZWl0aGVyIDEgb3IgNCBiaXQgZm9yIDMuM1Yg c2lnbmFsIGNhcmRzLgo+ID4gPiBJIHRoaW5rIHdlIG5lZWQgYSBtb3JlIHN0cmljdCBjaGVjayBo ZXJlLgo+ID4gPgo+ID4gPgo+ID4gPiA+ICsgICAgfSBlbHNlIHsKPiA+ID4gPiArICAgICAgQnVz V2lkdGggPSA0Owo+ID4gPiA+ICsgICAgfQo+ID4gPiA+ICsgIH0gZWxzZSB7Cj4gPiA+ID4gKyAg ICAvLwo+ID4gPiA+ICsgICAgLy8gVUhTLUkgbW9kZXMgc3VwcG9ydCBvbmx5IDQtYml0IHdpZHRo Lgo+ID4gPiA+ICsgICAgLy8gU3dpdGNoIHRvIDQtYml0IGhhcyBiZWVuIGRvbmUgYmVmb3JlIGNh bGxpbmcgdGhpcyBmdW5jdGlvbiBhbnl3YXkKPiBzbwo+ID4gPiA+ICsgICAgLy8gdGhpcyBpcyBw dXJlbHkgaW5mb3JtYXRpb25hbC4KPiA+ID4gPiArICAgIC8vCj4gPiA+ID4gKyAgICBCdXNXaWR0 aCA9IDQ7Cj4gPiA+ID4gKyAgfQo+ID4gPiA+ICsKPiA+ID4gPiArICByZXR1cm4gQnVzV2lkdGg7 Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgIEdldCB0aGUgdGFy Z2V0IGNsb2NrIGZyZXF1ZW5jeSB0byBiZSBzZXQgb24gdGhlIGJ1cy4KPiA+ID4gPiArCj4gPiA+ ID4gKyAgQHBhcmFtW2luXSBQcml2YXRlICAgIFBvaW50ZXIgdG8gY29udHJvbGxlciBwcml2YXRl IGRhdGEKPiA+ID4gPiArICBAcGFyYW1baW5dIFNsb3RJbmRleCAgSW5kZXggb2YgdGhlIHNsb3Qg aW4gdGhlIGNvbnRyb2xsZXIKPiA+ID4gPiArICBAcGFyYW1baW5dIEJ1c1RpbWluZyAgQnVzIHRp bWluZyB0byBiZSBzZXQgb24gdGhlIGJ1cwo+ID4gPiA+ICsKPiA+ID4gPiArICBAcmV0dXJuIFZh bHVlIG9mIHRoZSBjbG9jayBmcmVxdWVuY3kgdG8gYmUgc2V0IG9uIGJ1cyBpbiBNSHoKPiA+ID4g PiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ICtVSU5UMzIKPiA+ID4gPiArU2RHZXRUYXJn ZXRCdXNDbG9ja0ZyZXEgKAo+ID4gPiA+ICsgIElOIFNEX01NQ19IQ19QUklWQVRFX0RBVEEgICAq UHJpdmF0ZSwKPiA+ID4gPiArICBJTiBVSU5UOCAgICAgICAgICAgICAgICAgICAgU2xvdEluZGV4 LAo+ID4gPiA+ICsgIElOIFNEX01NQ19CVVNfTU9ERSAgICAgICAgICBCdXNUaW1pbmcKPiA+ID4g PiArICApCj4gPiA+ID4gK3sKPiA+ID4gPiArICBVSU5UMzIgUHJlZmVyZWRDbG9ja0ZyZXE7Cj4g PiA+ID4gKyAgVUlOVDMyIE1heENsb2NrRnJlcTsKPiA+ID4gPiArCj4gPiA+ID4gKyAgUHJlZmVy ZWRDbG9ja0ZyZXEgPSBQcml2YXRlLQo+ID4gPiA+ID5TbG90W1Nsb3RJbmRleF0uT3BlcmF0aW5n UGFyYW1ldGVycy5DbG9ja0ZyZXE7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIHN3aXRjaCAoQnVzVGlt aW5nKSB7Cj4gPiA+ID4gKyAgICBjYXNlIFNkTW1jVWhzU2RyMTA0Ogo+ID4gPiA+ICsgICAgICBN YXhDbG9ja0ZyZXEgPSAyMDg7Cj4gPiA+ID4gKyAgICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgY2Fz ZSBTZE1tY1Voc1NkcjUwOgo+ID4gPiA+ICsgICAgICBNYXhDbG9ja0ZyZXEgPSAxMDA7Cj4gPiA+ ID4gKyAgICAgIGJyZWFrOwo+ID4gPiA+ICsgICAgY2FzZSBTZE1tY1Voc0RkcjUwOgo+ID4gPiA+ ICsgICAgY2FzZSBTZE1tY1Voc1NkcjI1Ogo+ID4gPiA+ICsgICAgY2FzZSBTZE1tY1NkSHM6Cj4g PiA+ID4gKyAgICAgIE1heENsb2NrRnJlcSA9IDUwOwo+ID4gPiA+ICsgICAgICBicmVhazsKPiA+ ID4gPiArICAgIGNhc2UgU2RNbWNVaHNTZHIxMjoKPiA+ID4gPiArICAgIGNhc2UgU2RNbWNTZERz Ogo+ID4gPiA+ICsgICAgZGVmYXVsdDoKPiA+ID4gPiArICAgICBNYXhDbG9ja0ZyZXEgPSAyNTsK PiA+ID4KPiA+ID4KPiA+ID4gTWlub3IgY29tbWVudCwgbmVlZCBhbiBleHRyYSBzcGFjZSBmb3Ig dGhlIGFib3ZlIGxpbmUuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4gKyAgfQo+ID4gPiA+ICsKPiA+ID4g PiArICBpZiAoUHJlZmVyZWRDbG9ja0ZyZXEgIT0gRURLSUlfU0RfTU1DX0NMT0NLX0ZSRVFfSUdO T1JFICYmCj4gPiA+ID4gUHJlZmVyZWRDbG9ja0ZyZXEgPCBNYXhDbG9ja0ZyZXEpIHsKPiA+ID4g PiArICAgIHJldHVybiBQcmVmZXJlZENsb2NrRnJlcTsKPiA+ID4gPiArICB9IGVsc2Ugewo+ID4g PiA+ICsgICAgcmV0dXJuIE1heENsb2NrRnJlcTsKPiA+ID4gPiArICB9Cj4gPiA+ID4gK30KPiA+ ID4gPiArCj4gPiA+ID4gKy8qKgo+ID4gPiA+ICsgIEdldCB0aGUgZHJpdmVyIHN0cmVuZ3RoIHRv IGJlIHNldCBvbiBidXMKPiA+ID4KPiA+ID4KPiA+ID4gUGxlYXNlIGhlbHAgdG8gYXBwZW5kIGEg Jy4nIGNoYXJhY3RlciBmb3IgdGhlIGFib3ZlIGxpbmUuCj4gPiA+IEl0IGlzIHJlcXVpcmVkIGZv ciB0aGUgZWRrMiBjb2Rpbmcgc3R5bGUuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4gKwo+ID4gPiA+ICsg IEBwYXJhbVtpbl0gUHJpdmF0ZSAgICAgICAgICAgICAgICAgICAgICAgUG9pbnRlciB0byBjb250 cm9sbGVyIHByaXZhdGUgZGF0YQo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gU2xvdEluZGV4ICAgICAg ICAgICAgICAgICAgICAgSW5kZXggb2YgdGhlIHNsb3QgaW4gdGhlIGNvbnRyb2xsZXIKPiA+ID4g PiArICBAcGFyYW1baW5dIENhcmRTdXBwb3J0ZWREcml2ZXJTdHJlbmd0aHMgIEJpdG1hc2sgaW5k aWNhdGluZyB3aGljaAo+ID4gPiA+IGRyaXZlciBzdHJlbmd0aHMgYXJlIHN1cHBvcnRlZCBvbiB0 aGUgY2FyZAo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gQnVzVGltaW5nICAgICAgICAgICAgICAgICAg ICAgQnVzIHRpbWluZyBzZXQgb24gdGhlIGJ1cwo+ID4gPiA+ICsKPiA+ID4gPiArICBAcmV0dXJu IFZhbHVlIG9mIHRoZSBkcml2ZXIgc3RyZW5ndGggdG8gYmUgc2V0IG9uIHRoZSBidXMKPiA+ID4g PiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ICtFREtJSV9TRF9NTUNfRFJJVkVSX1NUUkVO R1RICj4gPiA+ID4gK1NkR2V0VGFyZ2V0RHJpdmVyU3RyZW5ndGggKAo+ID4gPiA+ICsgIElOIFNE X01NQ19IQ19QUklWQVRFX0RBVEEgICAqUHJpdmF0ZSwKPiA+ID4gPiArICBJTiBVSU5UOCAgICAg ICAgICAgICAgICAgICAgU2xvdEluZGV4LAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAg ICAgICAgICBDYXJkU3VwcG9ydGVkRHJpdmVyU3RyZW5ndGhzLAo+ID4gPiA+ICsgIElOIFNEX01N Q19CVVNfTU9ERSAgICAgICAgICBCdXNUaW1pbmcKPiA+ID4gPiArICApCj4gPiA+Cj4gPiA+Cj4g PiA+IE9uZSBxdWVzdGlvbiBoZXJlLCB0aGUgZHJpdmVyIHN0cmVuZ3RoIGNvbmZpZ3VyYXRpb24g aXMgb25seSBmb3IgVUhTLUkKPiBjYXJkcy4KPiA+ID4gRG9lcyB0aGUgY2hlY2sgb24gJ0NhcmRT dXBwb3J0ZWREcml2ZXJTdHJlbmd0aHMnIGVub3VnaCB0byBlbnN1cmUgdGhlCj4gPiA+IGFib3Zl Cj4gPiA+IHJlcXVpcmVtZW50IG9yIGEgYm9vbGVhbiBpbnB1dCBwYXJhbWV0ZXIgJ0lzSW5VaHNJ JyBpcyBuZWVkZWQgaGVyZT8KPiA+ID4KPiA+Cj4gPiBJIHRoaW5rIHdlIGNhbiBsZWF2ZSBpdCB0 byB0aGUgY29kZSB0aGF0IGFjdHVhbGx5IHNldHMgdGhlIGJ1cyBwYXJhbWV0ZXJzCj4gPiB0byBz aW1wbHkgc2tpcCBkcml2ZXIgc3RyZW5ndGggcHJvZ3JhbW1pbmcgZm9yIGxlZ2FjeSBhbmQgc2Vs ZWN0IGRyaXZlcgo+ID4gc3RyZW5ndGggaGVyZQo+ID4gYmFzZWQgb25seSBvbiBIVyBzdXBwb3J0 IGFuZCBwbGF0Zm9ybSBwcmVmZXJlbmNlLiBUaGUgYWx0ZXJuYXRpdmUgaXMgdG8KPiA+IHJldHVy bgo+ID4gU2REcml2ZXJTdHJlbmd0aElnbm9yZSBoZXJlIGFuZCBoYW5kbGUgdGhhdCBpbiBjb2Rl IHRoYXQgYWN0dWFsbHkgc2V0cwo+IGRyaXZlcgo+ID4gc3RyZW5ndGguCj4gCj4gCj4gRWl0aGVy IGFwcHJvYWNoIGlzIG9rYXkgdG8gbWUsIHNpbmNlIGJvdGggb2YgdGhlbSBuZWVkIGV4dHJhIGhh bmRsaW5nIGluCj4gU2RDYXJkU3dpdGNoKCkgJiBTZE1tY0hjVWhzU2lnbmFsaW5nKCkgd2hlbiBz ZXR0aW5nIGRyaXZlciBzdHJlbmd0aC4KPiAKPiBJIHNsaWdodGx5IHByZWZlciB0aGUgMXN0IG9w dGlvbiwgc2luY2UgdGhlIGxvZ2ljIGlzIGEgYml0IG1vcmUgc3RyYWlnaHQtCj4gZm9yd2FyZC4g Cj4gCj4gPgo+ID4gPgo+ID4gPiA+ICt7Cj4gPiA+ID4gKyAgRURLSUlfU0RfTU1DX0RSSVZFUl9T VFJFTkdUSCAgUHJlZmVyZWREcml2ZXJTdHJlbmd0aDsKPiA+ID4gPiArICBFREtJSV9TRF9NTUNf RFJJVkVSX1NUUkVOR1RIICBEcml2ZXJTdHJlbmd0aDsKPiA+ID4gPiArCj4gPiA+ID4gKyAgUHJl ZmVyZWREcml2ZXJTdHJlbmd0aCA9IFByaXZhdGUtCj4gPiA+ID4gPlNsb3RbU2xvdEluZGV4XS5P cGVyYXRpbmdQYXJhbWV0ZXJzLkRyaXZlclN0cmVuZ3RoOwo+ID4gPiA+ICsgIERyaXZlclN0cmVu Z3RoLlNkID0gU2REcml2ZXJTdHJlbmd0aFR5cGVCOwo+ID4gPiA+ICsKPiA+ID4gPiArICBpZiAo UHJlZmVyZWREcml2ZXJTdHJlbmd0aC5TZCAhPQo+ID4gPiA+IEVES0lJX1NEX01NQ19EUklWRVJf U1RSRU5HVEhfSUdOT1JFICYmCj4gPiA+ID4gKyAgICAgIChDYXJkU3VwcG9ydGVkRHJpdmVyU3Ry ZW5ndGhzICYgKEJJVDAgPDwKPiA+ID4gUHJlZmVyZWREcml2ZXJTdHJlbmd0aC5TZCkpKQo+ID4g Pgo+ID4gPgo+ID4gPiBUaGUgaG9zdCBjb250cm9sbGVyIGFsc28gaGFzIGEgY2FwYWJpbGl0eSBm b3IgZGlmZmVyZW50IHR5cGVzIG9mIGRyaXZlcgo+ID4gc3RyZW5ndGguCj4gPiA+IChDYXBhYmls aXRpZXMgUmVnaXN0ZXIsIGJpdCAzNn4zOCkKPiA+ID4KPiA+ID4gVGhlIGNoZWNrIHNob3VsZCB0 YWtlIGl0IGludG8gY29uc2lkZXJhdGlvbiBhcyB3ZWxsLgo+ID4gPgo+ID4gPgo+ID4gPiA+IHsK PiA+ID4gPiArICAgIERyaXZlclN0cmVuZ3RoLlNkID0gUHJlZmVyZWREcml2ZXJTdHJlbmd0aC5T ZDsKPiA+ID4gPiArICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIHJldHVybiBEcml2ZXJTdHJlbmd0 aDsKPiA+ID4gPiArfQo+ID4gPiA+ICsKPiA+ID4gPiArLyoqCj4gPiA+ID4gKyAgR2V0IHRoZSB0 YXJnZXQgc2V0dGluZ3MgZm9yIHRoZSBidXMgbW9kZS4KPiA+ID4gPiArCj4gPiA+ID4gKyAgQHBh cmFtW2luXSAgUHJpdmF0ZSAgICAgICAgICBQb2ludGVyIHRvIGNvbnRyb2xsZXIgcHJpdmF0ZSBk YXRhCj4gPiA+ID4gKyAgQHBhcmFtW2luXSAgU2xvdEluZGV4ICAgICAgICBJbmRleCBvZiB0aGUg c2xvdCBpbiB0aGUgY29udHJvbGxlcgo+ID4gPiA+ICsgIEBwYXJhbVtpbl0gIFN3aXRjaFF1ZXJ5 UmVzcCAgUG9pbnRlciB0byBzd2l0Y2ggcXVlcnkgcmVzcG9uc2UKPiA+ID4gPiArICBAcGFyYW1b aW5dICBJc0luVWhzSSAgICAgICAgIEZsYWcgaW5kaWNhdGluZyBpZiBsaW5rIGlzIGluIFVIUy1J IG1vZGUKPiA+ID4gPiArICBAcGFyYW1bb3V0XSBCdXNNb2RlICAgICAgICAgIFRhcmdldCBjb25m aWd1cmF0aW9uIG9mIHRoZSBidXMKPiA+ID4gPiArKiovCj4gPiA+ID4gK1NUQVRJQwo+ID4gPiA+ ICtWT0lECj4gPiA+ID4gK1NkR2V0VGFyZ2V0QnVzTW9kZSAoCj4gPiA+ID4gKyAgSU4gU0RfTU1D X0hDX1BSSVZBVEVfREFUQSAgKlByaXZhdGUsCj4gPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAg ICAgICAgICAgU2xvdEluZGV4LAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAg ICpTd2l0Y2hRdWVyeVJlc3AsCj4gPiA+ID4gKyAgSU4gQk9PTEVBTiAgICAgICAgICAgICAgICAg SXNJblVoc0ksCj4gPiA+ID4gKyAgT1VUIEVES0lJX1NEX01NQ19CVVNfTU9ERSAgKkJ1c01vZGUK PiA+ID4gPiArICApCj4gPiA+ID4gK3sKPiA+ID4gPiArICBCdXNNb2RlLT5CdXNUaW1pbmcgPSBT ZEdldFRhcmdldEJ1c1RpbWluZyAoUHJpdmF0ZSwgU2xvdEluZGV4LAo+ID4gPiA+IFN3aXRjaFF1 ZXJ5UmVzcFsxM10sIElzSW5VaHNJKTsKPiA+ID4gPiArICBCdXNNb2RlLT5CdXNXaWR0aCA9IFNk R2V0VGFyZ2V0QnVzV2lkdGggKFByaXZhdGUsIFNsb3RJbmRleCwKPiA+ID4gPiBCdXNNb2RlLT5C dXNUaW1pbmcpOwo+ID4gPiA+ICsgIEJ1c01vZGUtPkNsb2NrRnJlcSA9IFNkR2V0VGFyZ2V0QnVz Q2xvY2tGcmVxIChQcml2YXRlLCBTbG90SW5kZXgsCj4gPiA+ID4gQnVzTW9kZS0+QnVzVGltaW5n KTsKPiA+ID4gPiArICBCdXNNb2RlLT5Ecml2ZXJTdHJlbmd0aCA9IFNkR2V0VGFyZ2V0RHJpdmVy U3RyZW5ndGggKFByaXZhdGUsCj4gPiA+ID4gU2xvdEluZGV4LCBTd2l0Y2hRdWVyeVJlc3BbOV0s IEJ1c01vZGUtPkJ1c1RpbWluZyk7Cj4gPiA+ID4gK30KPiA+ID4gPiArCj4gPiA+ID4gIC8qKgo+ ID4gPiA+ICAgIFN3aXRjaCB0aGUgaGlnaCBzcGVlZCB0aW1pbmcgYWNjb3JkaW5nIHRvIHJlcXVl c3QuCj4gPiA+ID4KPiA+ID4gPiBAQCAtNzc1LDEzICsxMDUwLDEwIEBAIFNkQ2FyZFNldEJ1c01v ZGUgKAo+ID4gPiA+ICB7Cj4gPiA+ID4gICAgRUZJX1NUQVRVUyAgICAgICAgICAgICAgICAgICBT dGF0dXM7Cj4gPiA+ID4gICAgU0RfTU1DX0hDX1NMT1RfQ0FQICAgICAgICAgICAqQ2FwYWJpbGl0 eTsKPiA+ID4gPiAtICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgIENsb2NrRnJlcTsKPiA+ ID4gPiAtICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgIEJ1c1dpZHRoOwo+ID4gPiA+IC0g IFVJTlQ4ICAgICAgICAgICAgICAgICAgICAgICAgQWNjZXNzTW9kZTsKPiA+ID4gPiAgICBVSU5U OCAgICAgICAgICAgICAgICAgICAgICAgIEhvc3RDdHJsMTsKPiA+ID4gPiAgICBVSU5UOCAgICAg ICAgICAgICAgICAgICAgICAgIFN3aXRjaFJlc3BbNjRdOwo+ID4gPiA+IC0gIFNEX01NQ19CVVNf TU9ERSAgICAgICAgICAgICAgVGltaW5nOwo+ID4gPiA+ICAgIFNEX01NQ19IQ19QUklWQVRFX0RB VEEgICAgICAgKlByaXZhdGU7Cj4gPiA+ID4gKyAgRURLSUlfU0RfTU1DX0JVU19NT0RFICAgICAg ICBCdXNNb2RlOwo+ID4gPiA+Cj4gPiA+ID4gICAgUHJpdmF0ZSA9IFNEX01NQ19IQ19QUklWQVRF X0ZST01fVEhJUyAoUGFzc1RocnUpOwo+ID4gPiA+Cj4gPiA+ID4gQEAgLTc5Miw2MSArMTA2NCw0 NiBAQCBTZENhcmRTZXRCdXNNb2RlICgKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ ID4gICAgfQo+ID4gPiA+Cj4gPiA+ID4gLSAgQnVzV2lkdGggPSA0Owo+ID4gPiA+IC0KPiA+ID4g PiAtICBTdGF0dXMgPSBTZENhcmRTd2l0Y2hCdXNXaWR0aCAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90 LCBSY2EsIEJ1c1dpZHRoKTsKPiA+ID4gPiAtICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7Cj4g PiA+ID4gLSAgICByZXR1cm4gU3RhdHVzOwo+ID4gPiA+ICsgIGlmIChTMThBKSB7Cj4gPiA+ID4g KyAgICAvLwo+ID4gPiA+ICsgICAgLy8gRm9yIFVIUy1JIHNwZWVkIG1vZGVzIDQtYml0IGRhdGEg YnVzIGlzIHJlcXVpZXJlZCBzbyB3ZQo+ID4gPiA+ICsgICAgLy8gc3dpdGNoIGhlcmUgaXJyZXNw ZWN0aXZlIG9mIHBsYXRmb3JtIHByZWZlcmVuY2UuCj4gPiA+ID4gKyAgICAvLwo+ID4gPiA+ICsg ICAgU3RhdHVzID0gU2RDYXJkU3dpdGNoQnVzV2lkdGggKFBjaUlvLCBQYXNzVGhydSwgU2xvdCwg UmNhLCA0KTsKPiA+ID4gPiArICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsKPiA+ID4gPiAr ICAgICAgcmV0dXJuIFN0YXR1czsKPiA+ID4gPiArICAgIH0KPiA+ID4gPiAgICB9Cj4gPiA+ID4g Kwo+ID4gPiA+ICAgIC8vCj4gPiA+ID4gICAgLy8gR2V0IHRoZSBzdXBwb3J0ZWQgYnVzIHNwZWVk IGZyb20gU1dJVENIIGNtZCByZXR1cm4gZGF0YSBncm91cAo+ICMxLgo+ID4gPiA+ICAgIC8vCj4g PiA+ID4gLSAgU3RhdHVzID0gU2RDYXJkU3dpdGNoIChQYXNzVGhydSwgU2xvdCwgMHhGLCAweEYs IDB4RiwgMHhGLCBGQUxTRSwKPiA+ID4gPiBTd2l0Y2hSZXNwKTsKPiA+ID4gPiArICBTdGF0dXMg PSBTZENhcmRTd2l0Y2ggKFBhc3NUaHJ1LCBTbG90LCAweEZGLCAweEYsCj4gPiBTZERyaXZlclN0 cmVuZ3RoSWdub3JlLAo+ID4gPiA+IDB4RiwgRkFMU0UsIFN3aXRjaFJlc3ApOwo+ID4gPiA+ICAg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4g PiA+ID4gICAgfQo+ID4gPiA+IC0gIC8vCj4gPiA+ID4gLSAgLy8gQ2FsY3VsYXRlIHN1cHBvcnRl ZCBidXMgc3BlZWQvYnVzIHdpZHRoL2Nsb2NrIGZyZXF1ZW5jeSBieSBob3N0Cj4gPiBhbmQKPiA+ ID4gPiBkZXZpY2UgY2FwYWJpbGl0eS4KPiA+ID4gPiAtICAvLwo+ID4gPiA+IC0gIENsb2NrRnJl cSA9IDA7Cj4gPiA+ID4gLSAgaWYgKFMxOEEgJiYgKENhcGFiaWxpdHktPlNkcjEwNCAhPSAwKSAm JiAoKFN3aXRjaFJlc3BbMTNdICYgQklUMykgIT0KPiAwKSkKPiA+IHsKPiA+ID4gPiAtICAgIENs b2NrRnJlcSA9IDIwODsKPiA+ID4gPiAtICAgIEFjY2Vzc01vZGUgPSAzOwo+ID4gPiA+IC0gICAg VGltaW5nID0gU2RNbWNVaHNTZHIxMDQ7Cj4gPiA+ID4gLSAgfSBlbHNlIGlmIChTMThBICYmIChD YXBhYmlsaXR5LT5TZHI1MCAhPSAwKSAmJiAoKFN3aXRjaFJlc3BbMTNdICYKPiA+IEJJVDIpICE9 Cj4gPiA+IDApKQo+ID4gPiA+IHsKPiA+ID4gPiAtICAgIENsb2NrRnJlcSA9IDEwMDsKPiA+ID4g PiAtICAgIEFjY2Vzc01vZGUgPSAyOwo+ID4gPiA+IC0gICAgVGltaW5nID0gU2RNbWNVaHNTZHI1 MDsKPiA+ID4gPiAtICB9IGVsc2UgaWYgKFMxOEEgJiYgKENhcGFiaWxpdHktPkRkcjUwICE9IDAp ICYmICgoU3dpdGNoUmVzcFsxM10gJgo+ID4gQklUNCkgIT0KPiA+ID4gPiAwKSkgewo+ID4gPiA+ IC0gICAgQ2xvY2tGcmVxID0gNTA7Cj4gPiA+ID4gLSAgICBBY2Nlc3NNb2RlID0gNDsKPiA+ID4g PiAtICAgIFRpbWluZyA9IFNkTW1jVWhzRGRyNTA7Cj4gPiA+ID4gLSAgfSBlbHNlIGlmICgoU3dp dGNoUmVzcFsxM10gJiBCSVQxKSAhPSAwKSB7Cj4gPiA+ID4gLSAgICBDbG9ja0ZyZXEgPSA1MDsK PiA+ID4gPiAtICAgIEFjY2Vzc01vZGUgPSAxOwo+ID4gPiA+IC0gICAgVGltaW5nID0gU2RNbWNV aHNTZHIyNTsKPiA+ID4gPiAtICB9IGVsc2Ugewo+ID4gPiA+IC0gICAgQ2xvY2tGcmVxID0gMjU7 Cj4gPiA+ID4gLSAgICBBY2Nlc3NNb2RlID0gMDsKPiA+ID4gPiAtICAgIFRpbWluZyA9IFNkTW1j VWhzU2RyMTI7Cj4gPiA+ID4gKwo+ID4gPiA+ICsgIFNkR2V0VGFyZ2V0QnVzTW9kZSAoUHJpdmF0 ZSwgU2xvdCwgU3dpdGNoUmVzcCwgUzE4QSwgJkJ1c01vZGUpOwo+ID4gPiA+ICsKPiA+ID4gPiAr ICBERUJVRyAoKERFQlVHX0lORk8sICJTZENhcmRTZXRCdXNNb2RlOiBUYXJnZXQgYnVzIG1vZGU6 IGJ1cwo+ID4gPiB0aW1pbmcKPiA+ID4gPiA9ICVkLCBidXMgd2lkdGggPSAlZCwgY2xvY2sgZnJl cVtNSHpdID0gJWQsIGRyaXZlciBzdHJlbmd0aCA9ICVkXG4iLAo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgQnVzTW9kZS5CdXNUaW1pbmcsIEJ1c01vZGUuQnVzV2lkdGgsCj4gPiA+ IEJ1c01vZGUuQ2xvY2tGcmVxLAo+ID4gPiA+IEJ1c01vZGUuRHJpdmVyU3RyZW5ndGguU2QpKTsK PiA+ID4gPiArCj4gPiA+ID4gKyAgaWYgKCFTMThBKSB7Cj4gPiA+ID4gKyAgICBTdGF0dXMgPSBT ZENhcmRTd2l0Y2hCdXNXaWR0aCAoUGNpSW8sIFBhc3NUaHJ1LCBTbG90LCBSY2EsCj4gPiA+ID4g QnVzTW9kZS5CdXNXaWR0aCk7Cj4gPiA+ID4gKyAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7 Cj4gPiA+ID4gKyAgICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gKyAgICB9Cj4gPiA+ID4gICAg fQo+ID4gPgo+ID4gPgo+ID4gPiBJcyBpdCBmZWFzaWJsZSB0byBzZXQgdGhlIGJ1cyB3aWR0aCBm b3IgdGhlIDMuM1Ygc2lnbmFsZWQgY2FyZHMgJiB0aGUgVUhTLUkKPiA+ID4gY2FyZHMgdG9nZXRo ZXIgaGVyZT8gSSB0aGluayB0aGUgU2RHZXRUYXJnZXRCdXNXaWR0aCgpIGFscmVhZHkgaGFuZGxl cwo+ID4gdGhlCj4gPiA+IFVIUy1JIGNhcmRzIGNhc2Ugd2VsbCBieSBhbHdheXMgc2V0dGluZyB0 aGUgYnVzIHdpZHRoIHRvIDQuCj4gPiA+Cj4gPgo+ID4gU28gYmFzaWNhbGx5IHRvIHNraXAgaWYg KCFTMThBKSBjb25kaXRpb24gYW5kIGRvIGJ1cyB3aWR0aCBzd2l0Y2gKPiA+IHVuY29uZGl0aW9u YWxseT8KPiA+IEkgYW0gbm90IHN1cmUgaG93IHRoZSBidXMgd2lsbCByZWFjdCB0byBhZGRpdGlv bmFsIGJ1cyB3aWR0aCBzd2l0Y2ggZm9yIFVIUy1JCj4gPiBjYXNlCj4gPiBhbmQgSSBhbSBub3Qg YWJsZSB0byB0ZXN0IGl0IGxvY2FsbHkgYXMgSSBvbmx5IGhhdmUgY29udHJvbGxlciB3aXRoIGxl Z2FjeQo+IHN1cHBvcnQKPiA+IGF2YWlsYWJsZSBmb3IgdGVzdHMuCj4gPiBJIGd1ZXNzIEkgd2ls bCBnaXZlIGl0IGEgdHJ5IGFuZCB3ZSB3aWxsIHJldmVydCBpdCBpZiBpdCBjYXVzZXMgYW55IHBy b2JsZW1zLgo+IAo+IAo+IFNvcnJ5IGZvciBub3QgYmVpbmcgY2xlYXIuCj4gSSBzdWdnZXN0IHRv IGp1c3QgcmVtb3ZlIHRoZSBiZWxvdyBjb2RlczoKPiAKPiAgIGlmIChTMThBKSB7Cj4gICAgIC8v Cj4gICAgIC8vIEZvciBVSFMtSSBzcGVlZCBtb2RlcyA0LWJpdCBkYXRhIGJ1cyBpcyByZXF1aWVy ZWQgc28gd2UKPiAgICAgLy8gc3dpdGNoIGhlcmUgaXJyZXNwZWN0aXZlIG9mIHBsYXRmb3JtIHBy ZWZlcmVuY2UuCj4gICAgIC8vCj4gICAgIFN0YXR1cyA9IFNkQ2FyZFN3aXRjaEJ1c1dpZHRoIChQ Y2lJbywgUGFzc1RocnUsIFNsb3QsIFJjYSwgNCk7Cj4gICAgIGlmIChFRklfRVJST1IgKFN0YXR1 cykpIHsKPiAgICAgICByZXR1cm4gU3RhdHVzOwo+ICAgICB9Cj4gICB9Cj4gCj4gQW5kIHNldCB0 aGUgYnVzIHdpZHRoIGluIG9uZSBwbGFjZSBhZnRlciBTZEdldFRhcmdldEJ1c01vZGUoKS4KPiAo QWxzbyByZW1vdmUgdGhlICdpZicgY29uZGl0aW9uIC0gaWYgKCFTMThBKSwgZG8gaXQgdG9nZXRo ZXIgZm9yIFVIUy1JICYKPiAzLjNWIHNpZ25hbGluZyBjYXJkcy4pCj4gCj4gQmVzdCBSZWdhcmRz LAo+IEhhbyBXdQoKSSBhbSBub3Qgc3VyZSBpZiB0aGF0IHdvdWxkIHdvcmsuIE15IHVuZGVyc3Rh bmRpbmcgaXMgdGhhdCBTV0lUQ0ggY29tbWFuZCBuZWVkcyB0byBiZSBleGVjdXRlZCBvbiA0LWJp dCBtb2RlIGFzIHRoYXQgaW5jbHVkZXMgZGF0YSB0cmFuc2ZlciB3aXRoIERBVCBsYW5lcyBzbyB0 aGF0IGJ1cyB3aWR0aCBzd2l0Y2ggYmVmb3JlaGFuZCBpcyBuZWNlc3NhcnkuCgoKPiAKPiAKPiA+ Cj4gPiA+Cj4gPiA+ID4KPiA+ID4gPiAtICBTdGF0dXMgPSBTZENhcmRTd2l0Y2ggKFBhc3NUaHJ1 LCBTbG90LCBBY2Nlc3NNb2RlLCAweEYsIDB4RiwgMHhGLAo+IFRSVUUsCj4gPiA+ID4gU3dpdGNo UmVzcCk7Cj4gPiA+ID4gKyAgU3RhdHVzID0gU2RDYXJkU3dpdGNoIChQYXNzVGhydSwgU2xvdCwg QnVzTW9kZS5CdXNUaW1pbmcsIDB4RiwKPiA+ID4gPiBCdXNNb2RlLkRyaXZlclN0cmVuZ3RoLlNk LCAweEYsIFRSVUUsIFN3aXRjaFJlc3ApOwo+ID4gPgo+ID4gPgo+ID4gPiBBZnRlciB0aGUgcHJv cG9zZWQgY2hhbmdlLCB0aGUgcHJlZmVycmVkIGJ1cyB0aW1pbmcgYW5kIGRyaXZlciBzdHJlbmd0 aAo+ID4gPiB2YWx1ZQo+ID4gPiB3aWxsIGJlIHNldCBmb3IgdGhlIGRldmljZSB0aHJvdWdoIHRo ZSBTRF9TV0lUQ0ggY29tbWFuZC4KPiA+ID4KPiA+ID4gSG93ZXZlciwgb24gdGhlIGhvc3QgY29u dHJvbGxlciBzaWRlLCBvbmx5IHRoZSBidXMgdGltaW5nIHZhbHVlIGlzIGFsc28KPiA+ID4gdXBk YXRlZAo+ID4gPiBpbiB0aGUgSG9zdCBDb250cm9sIDIgUmVnaXN0ZXIgb2YgdGhlIFNEIEhDICh2 aWEgZnVuY3Rpb24KPiA+ID4gU2RNbWNIY1Voc1NpZ25hbGluZygpKS4KPiA+ID4gSXQgc2VlbXMg dG8gbWUgdGhhdCB0aGUgZHJpdmVyIHN0cmVuZ3RoIHZhbHVlIGRvZXMgbm90IGdldCB1cGRhdGVk IGluIHRoaXMKPiA+ID4gcmVnaXN0ZXIuCj4gPiA+Cj4gPiA+IEkgdGhpbmsgdGhlIGVNTUMgY2Fz ZSBoYXMgYSBzaW1pbGFyIGlzc3VlLgo+ID4gPgo+ID4gPgo+ID4gPiA+ICAgIGlmIChFRklfRVJS T1IgKFN0YXR1cykpIHsKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gICAgfQo+ ID4gPiA+Cj4gPiA+ID4gLSAgaWYgKChTd2l0Y2hSZXNwWzE2XSAmIDB4RikgIT0gQWNjZXNzTW9k ZSkgewo+ID4gPiA+IC0gICAgREVCVUcgKChERUJVR19FUlJPUiwgIlNkQ2FyZFNldEJ1c01vZGU6 IFN3aXRjaCB0bwo+ID4gPiBBY2Nlc3NNb2RlICVkCj4gPiA+ID4gQ2xvY2tGcmVxICVkIEJ1c1dp ZHRoICVkIGZhaWxzISBUaGUgU3dpdGNoIHJlc3BvbnNlIGlzIDB4JTF4XG4iLAo+ID4gPiA+IEFj Y2Vzc01vZGUsIENsb2NrRnJlcSwgQnVzV2lkdGgsIFN3aXRjaFJlc3BbMTZdICYgMHhGKSk7Cj4g PiA+ID4gLSAgICByZXR1cm4gRUZJX0RFVklDRV9FUlJPUjsKPiA+ID4gPiAtICB9Cj4gPiA+Cj4g PiA+Cj4gPiA+IFRoZSBhYm92ZSBjaGVjayBtYXkgc3RpbGwgYmUgbmVlZGVkLiBBbHNvLCB0aGUg d2hldGhlciB0aGUgdGFyZ2V0IGRyaXZlcgo+ID4gPiBzdHJlbmd0aCBpcyBzdWNjZXNzZnVsbHkg c2V0IG5lZWRzIHRvIGJlIGNoZWNrZWQgYXMgd2VsbC4KPiA+ID4KPiA+ID4gSG93IGFib3V0IGFk ZGluZyBjaGVja3MgaW4gZnVuY3Rpb24gU2RDYXJkU3dpdGNoKCkgZm9yIG1vZGUgMSBvZiB0aGUK PiA+ID4gc3dpdGNoCj4gPiA+IGNvbW1hbmQ/Cj4gPiA+Cj4gPiA+Cj4gPiA+ID4gLQo+ID4gPiA+ IC0gIERFQlVHICgoREVCVUdfSU5GTywgIlNkQ2FyZFNldEJ1c01vZGU6IFN3aXRjaCB0bwo+ID4g QWNjZXNzTW9kZSAlZAo+ID4gPiA+IENsb2NrRnJlcSAlZCBCdXNXaWR0aCAlZFxuIiwgQWNjZXNz TW9kZSwgQ2xvY2tGcmVxLCBCdXNXaWR0aCkpOwo+ID4gPiA+IC0KPiA+ID4gPiAgICAvLwo+ID4g PiA+IC0gIC8vIFNldCB0byBIaWdodCBTcGVlZCB0aW1pbmcKPiA+ID4gPiArICAvLyBTZXQgdG8g SGlnaCBTcGVlZCB0aW1pbmcKPiA+ID4gPiAgICAvLwo+ID4gPiA+IC0gIGlmIChBY2Nlc3NNb2Rl ID09IDEpIHsKPiA+ID4gPiArICBpZiAoQnVzTW9kZS5CdXNUaW1pbmcgPT0gU2RNbWNTZEhzKSB7 Cj4gPiA+ID4gICAgICBIb3N0Q3RybDEgPSBCSVQyOwo+ID4gPiA+ICAgICAgU3RhdHVzID0gU2RN bWNIY09yTW1pbyAoUGNpSW8sIFNsb3QsIFNEX01NQ19IQ19IT1NUX0NUUkwxLAo+ID4gPiBzaXpl b2YKPiA+ID4gPiAoSG9zdEN0cmwxKSwgJkhvc3RDdHJsMSk7Cj4gPiA+ID4gICAgICBpZiAoRUZJ X0VSUk9SIChTdGF0dXMpKSB7Cj4gPiA+ID4gQEAgLTg1NCwxMiArMTExMSwxMiBAQCBTZENhcmRT ZXRCdXNNb2RlICgKPiA+ID4gPiAgICAgIH0KPiA+ID4gPiAgICB9Cj4gPiA+ID4KPiA+ID4gPiAt ICBTdGF0dXMgPSBTZE1tY0hjVWhzU2lnbmFsaW5nIChQcml2YXRlLT5Db250cm9sbGVySGFuZGxl LCBQY2lJbywgU2xvdCwKPiA+ID4gPiBUaW1pbmcpOwo+ID4gPiA+ICsgIFN0YXR1cyA9IFNkTW1j SGNVaHNTaWduYWxpbmcgKFByaXZhdGUtPkNvbnRyb2xsZXJIYW5kbGUsIFBjaUlvLAo+IFNsb3Qs Cj4gPiA+ID4gQnVzTW9kZS5CdXNUaW1pbmcpOwo+ID4gPiA+ICAgIGlmIChFRklfRVJST1IgKFN0 YXR1cykpIHsKPiA+ID4gPiAgICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gICAgfQo+ID4gPiA+ Cj4gPiA+ID4gLSAgU3RhdHVzID0gU2RNbWNIY0Nsb2NrU3VwcGx5IChQY2lJbywgU2xvdCwgQ2xv Y2tGcmVxICogMTAwMCwgUHJpdmF0ZS0KPiA+ID4gPiA+QmFzZUNsa0ZyZXFbU2xvdF0sIFByaXZh dGUtPkNvbnRyb2xsZXJWZXJzaW9uW1Nsb3RdKTsKPiA+ID4gPiArICBTdGF0dXMgPSBTZE1tY0hj Q2xvY2tTdXBwbHkgKFBjaUlvLCBTbG90LCBCdXNNb2RlLkNsb2NrRnJlcSAqCj4gMTAwMCwKPiA+ ID4gPiBQcml2YXRlLT5CYXNlQ2xrRnJlcVtTbG90XSwgUHJpdmF0ZS0+Q29udHJvbGxlclZlcnNp b25bU2xvdF0pOwo+ID4gPiA+ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsKPiA+ID4gPiAg ICAgIHJldHVybiBTdGF0dXM7Cj4gPiA+ID4gICAgfQo+ID4gPiA+IEBAIC04NjksNyArMTEyNiw3 IEBAIFNkQ2FyZFNldEJ1c01vZGUgKAo+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAg IFByaXZhdGUtPkNvbnRyb2xsZXJIYW5kbGUsCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgU2xvdCwKPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICBFZGtpaVNkTW1j U3dpdGNoQ2xvY2tGcmVxUG9zdCwKPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAm VGltaW5nCj4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgJkJ1c01vZGUuQnVzVGlt aW5nCj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKPiA+ID4gPiAgICAgIGlm IChFRklfRVJST1IgKFN0YXR1cykpIHsKPiA+ID4gPiAgICAgICAgREVCVUcgKCgKPiA+ID4gPiBA QCAtODgyLDcgKzExMzksNyBAQCBTZENhcmRTZXRCdXNNb2RlICgKPiA+ID4gPiAgICAgIH0KPiA+ ID4gPiAgICB9Cj4gPiA+ID4KPiA+ID4gPiAtICBpZiAoKEFjY2Vzc01vZGUgPT0gMykgfHwgKChB Y2Nlc3NNb2RlID09IDIpICYmIChDYXBhYmlsaXR5LQo+ID4gPiA+ID5UdW5pbmdTRFI1MCAhPSAw KSkpIHsKPiA+ID4gPiArICBpZiAoKEJ1c01vZGUuQnVzVGltaW5nID09IFNkTW1jVWhzU2RyMTA0 KSB8fAo+ID4gKChCdXNNb2RlLkJ1c1RpbWluZwo+ID4gPiA+ID09IFNkTW1jVWhzU2RyNTApICYm IChDYXBhYmlsaXR5LT5UdW5pbmdTRFI1MCAhPSAwKSkpIHsKPiA+ID4gPiAgICAgIFN0YXR1cyA9 IFNkQ2FyZFR1bmluZ0Nsb2NrIChQY2lJbywgUGFzc1RocnUsIFNsb3QpOwo+ID4gPiA+ICAgICAg aWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgewo+ID4gPiA+ICAgICAgICByZXR1cm4gU3RhdHVzOwo+ ID4gPiA+IEBAIC0xMDI1LDEwICsxMjgyLDggQEAgU2RDYXJkSWRlbnRpZmljYXRpb24gKAo+ID4g PiA+ICAgIC8vICAgIChPbmUgb2Ygc3VwcG9ydCBiaXRzIGlzIHNldCB0byAxOiBTRFI1MCwgU0RS MTA0IG9yIEREUjUwIGluIHRoZQo+ID4gPiA+ICAgIC8vICAgIENhcGFiaWxpdGllcyByZWdpc3Rl ciksIHN3aXRjaCBpdHMgdm9sdGFnZSB0byAxLjhWLgo+ID4gPiA+ICAgIC8vCj4gPiA+ID4gLSAg aWYgKChQcml2YXRlLT5DYXBhYmlsaXR5W1Nsb3RdLlNkcjUwICE9IDAgfHwKPiA+ID4gPiAtICAg ICAgIFByaXZhdGUtPkNhcGFiaWxpdHlbU2xvdF0uU2RyMTA0ICE9IDAgfHwKPiA+ID4gPiAtICAg ICAgIFByaXZhdGUtPkNhcGFiaWxpdHlbU2xvdF0uRGRyNTAgIT0gMCkgJiYKPiA+ID4gPiAtICAg ICAgICgoT2NyICYgQklUMjQpICE9IDApKSB7Cj4gPiA+ID4gKyAgaWYgKChQcml2YXRlLT5DYXBh YmlsaXR5W1Nsb3RdLlNkcjUwIHx8IFByaXZhdGUtPkNhcGFiaWxpdHlbU2xvdF0uRGRyNTAKPiB8 fAo+ID4gPiA+IFByaXZhdGUtPkNhcGFiaWxpdHlbU2xvdF0uU2RyMTA0KSAmJgo+ID4gPiA+ICsg ICAgICAoKE9jciAmIEJJVDI0KSAhPSAwKSkgewo+ID4gPgo+ID4gPgo+ID4gPiBNaW5vciBjb21t ZW50LCBmb3I6Cj4gPiA+IFByaXZhdGUtPkNhcGFiaWxpdHlbU2xvdF0uU2RyNTAKPiA+ID4gUHJp dmF0ZS0+Q2FwYWJpbGl0eVtTbG90XS5EZHI1MAo+ID4gPiBQcml2YXRlLT5DYXBhYmlsaXR5W1Ns b3RdLlNkcjEwNAo+ID4gPgo+ID4gPiBUaGV5IGFyZSBvZiB0eXBlIFVJTlQzMiwgc2hvdWxkIHVz ZSBvcGVyYXRvcnMgJz09JyBvciAnIT0nIGluIGNvbmRpdGlvbgo+ID4gPiBzdGF0ZW1lbnQuIEkg dGhpbmsgdGhlIG9yaWdpbiBsb2dpYyBpcyBnb29kIGhlcmUuCj4gPiA+Cj4gPiA+Cj4gPiA+ID4g ICAgICBTdGF0dXMgPSBTZENhcmRWb2x0YWdlU3dpdGNoIChQYXNzVGhydSwgU2xvdCk7Cj4gPiA+ ID4gICAgICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7Cj4gPiA+ID4gICAgICAgIERFQlVHICgo REVCVUdfRVJST1IsICJTZENhcmRJZGVudGlmaWNhdGlvbjogRXhlY3V0aW5nCj4gPiA+ID4gU2RD YXJkVm9sdGFnZVN3aXRjaCBmYWlscyB3aXRoICVyXG4iLCBTdGF0dXMpKTsKPiA+ID4gPiBkaWZm IC0tZ2l0Cj4gYS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1NkTW1jUGNpSGNE eGUuYwo+ID4gPiA+IGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9TZE1tY1Bj aUhjRHhlLmMKPiA+ID4gPiBpbmRleCA0ODgxZWU0NGNjLi44ZjQ5OTU0YjdmIDEwMDY0NAo+ID4g PiA+IC0tLSBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lIY0R4 ZS5jCj4gPiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9TZE1t Y1BjaUhjRHhlLmMKPiA+ID4gPiBAQCAtMjgsNiArMjgsMTEgQEAgRUZJX0RSSVZFUl9CSU5ESU5H X1BST1RPQ09MCj4gPiA+ID4gZ1NkTW1jUGNpSGNEcml2ZXJCaW5kaW5nID0gewo+ID4gPiA+ICAg IE5VTEwKPiA+ID4gPiAgfTsKPiA+ID4gPgo+ID4gPiA+ICsjZGVmaW5lIFNMT1RfSU5JVF9URU1Q TEFURSB7MCwgVW5rbm93blNsb3QsIDAsIDAsIDAsIFwKPiA+ID4gPiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHtFREtJSV9TRF9NTUNfQlVTX1dJRFRIX0lHTk9SRSxcCj4gPiA+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFREtJSV9TRF9NTUNfQ0xPQ0tfRlJFUV9J R05PUkUsXAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRURLSUlfU0Rf TU1DX0RSSVZFUl9TVFJFTkdUSF9JR05PUkV9fQo+ID4gPgo+ID4gPgo+ID4gPiBQbGVhc2UgaGVs cCB0byB1cGRhdGUgdGhlIGFib3ZlIGRlZmluaXRpb24gdG86Cj4gPiA+ICNkZWZpbmUgU0xPVF9J TklUX1RFTVBMQVRFIHswLCBVbmtub3duU2xvdCwgMCwgMCwgMCwgXAo+ID4gPiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAge0VES0lJX1NEX01NQ19CVVNfV0lEVEhfSUdOT1JFLFwKPiA+ ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVES0lJX1NEX01NQ19DTE9DS19GUkVR X0lHTk9SRSxcCj4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7RURLSUlfU0Rf TU1DX0RSSVZFUl9TVFJFTkdUSF9JR05PUkV9fX0KPiA+ID4KPiA+ID4gVGhlIHByb3Bvc2VkIG9u ZSB3aWxsIGNhdXNlIEdDQzUgYnVpbGQgZmFpbHVyZS4KPiA+ID4KPiA+ID4KPiA+ID4gPiArCj4g PiA+ID4gIC8vCj4gPiA+ID4gIC8vIFRlbXBsYXRlIGZvciBTRC9NTUMgaG9zdCBjb250cm9sbGVy IHByaXZhdGUgZGF0YS4KPiA+ID4gPiAgLy8KPiA+ID4gPiBAQCAtNTAsOCArNTUsMTIgQEAgU0Rf TU1DX0hDX1BSSVZBVEVfREFUQQo+ID4gPiBnU2RNbWNQY2lIY1RlbXBsYXRlCj4gPiA+ID4gPSB7 Cj4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFF1ZXVlCj4g PiA+ID4gICAgSU5JVElBTElaRV9MSVNUX0hFQURfVkFSSUFCTEUgKGdTZE1tY1BjaUhjVGVtcGxh dGUuUXVldWUpLAo+ID4gPiA+ICAgIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBTbG90Cj4gPiA+ID4gLSAgICB7MCwgVW5rbm93blNsb3QsIDAsIDAsIDB9LCB7MCwgVW5rbm93 blNsb3QsIDAsIDAsIDB9LCB7MCwgVW5rbm93blNsb3QsCj4gMCwKPiA+IDAsCj4gPiA+ID4gMH0s Cj4gPiA+ID4gLSAgICB7MCwgVW5rbm93blNsb3QsIDAsIDAsIDB9LCB7MCwgVW5rbm93blNsb3Qs IDAsIDAsIDB9LCB7MCwgVW5rbm93blNsb3QsCj4gMCwKPiA+IDAsCj4gPiA+ID4gMH0KPiA+ID4g PiArICAgIFNMT1RfSU5JVF9URU1QTEFURSwKPiA+ID4gPiArICAgIFNMT1RfSU5JVF9URU1QTEFU RSwKPiA+ID4gPiArICAgIFNMT1RfSU5JVF9URU1QTEFURSwKPiA+ID4gPiArICAgIFNMT1RfSU5J VF9URU1QTEFURSwKPiA+ID4gPiArICAgIFNMT1RfSU5JVF9URU1QTEFURSwKPiA+ID4gPiArICAg IFNMT1RfSU5JVF9URU1QTEFURQo+ID4gPiA+ICAgIH0sCj4gPiA+ID4gICAgeyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC8vIENhcGFiaWxpdHkKPiA+ID4gPiAgICAgIHswfSwKPiA+ ID4gPiBAQCAtMzI4LDYgKzMzNyw3IEBAIFNkTW1jUGNpSGNFbnVtZXJhdGVEZXZpY2UgKAo+ID4g PiA+Cj4gPiA+ID4gICAgcmV0dXJuOwo+ID4gPiA+ICB9Cj4gPiA+ID4gKwo+ID4gPiA+ICAvKioK PiA+ID4gPiAgICBUZXN0cyB0byBzZWUgaWYgdGhpcyBkcml2ZXIgc3VwcG9ydHMgYSBnaXZlbiBj b250cm9sbGVyLiBJZiBhIGNoaWxkIGRldmljZSBpcwo+ID4gPiA+IHByb3ZpZGVkLAo+ID4gPiA+ ICAgIGl0IGZ1cnRoZXIgdGVzdHMgdG8gc2VlIGlmIHRoaXMgZHJpdmVyIHN1cHBvcnRzIGNyZWF0 aW5nIGEgaGFuZGxlIGZvciB0aGUKPiA+ID4gPiBzcGVjaWZpZWQgY2hpbGQgZGV2aWNlLgo+ID4g PiA+IEBAIC02MTksNyArNjI5LDYgQEAgU2RNbWNQY2lIY0RyaXZlckJpbmRpbmdTdGFydCAoCj4g PiA+ID4gICAgU3VwcG9ydDY0Qml0RG1hID0gVFJVRTsKPiA+ID4gPiAgICBmb3IgKFNsb3QgPSBG aXJzdEJhcjsgU2xvdCA8IChGaXJzdEJhciArIFNsb3ROdW0pOyBTbG90KyspIHsKPiA+ID4gPiAg ICAgIFByaXZhdGUtPlNsb3RbU2xvdF0uRW5hYmxlID0gVFJVRTsKPiA+ID4gPiAtCj4gPiA+ID4g ICAgICAvLwo+ID4gPiA+ICAgICAgLy8gR2V0IFNEL01NQyBQY2kgSG9zdCBDb250cm9sbGVyIFZl cnNpb24KPiA+ID4gPiAgICAgIC8vCj4gPiA+ID4gQEAgLTYzNSwxOSArNjQ0LDM0IEBAIFNkTW1j UGNpSGNEcml2ZXJCaW5kaW5nU3RhcnQgKAo+ID4gPiA+Cj4gPiA+ID4gICAgICBQcml2YXRlLT5C YXNlQ2xrRnJlcVtTbG90XSA9IFByaXZhdGUtPkNhcGFiaWxpdHlbU2xvdF0uQmFzZUNsa0ZyZXE7 Cj4gPiA+ID4KPiA+ID4gPiAtICAgIGlmIChtT3ZlcnJpZGUgIT0gTlVMTCAmJiBtT3ZlcnJpZGUt PkNhcGFiaWxpdHkgIT0gTlVMTCkgewo+ID4gPiA+IC0gICAgICBTdGF0dXMgPSBtT3ZlcnJpZGUt PkNhcGFiaWxpdHkgKAo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udHJv bGxlciwKPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb3QsCj4gPiA+ID4g LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVtTbG90XSwK PiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQcml2YXRlLT5CYXNlQ2xrRnJl cVtTbG90XQo+ID4gPiA+IC0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKPiA+ID4gPiAt ICAgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgewo+ID4gPiA+IC0gICAgICAgIERFQlVHICgo REVCVUdfV0FSTiwgIiVhOiBGYWlsZWQgdG8gb3ZlcnJpZGUgY2FwYWJpbGl0eSAtICVyXG4iLAo+ ID4gPiA+IC0gICAgICAgICAgX19GVU5DVElPTl9fLCBTdGF0dXMpKTsKPiA+ID4gPiAtICAgICAg ICBjb250aW51ZTsKPiA+ID4gPiArICAgIGlmIChtT3ZlcnJpZGUgIT0gTlVMTCkgewo+ID4gPiA+ ICsgICAgICBpZiAobU92ZXJyaWRlLT5DYXBhYmlsaXR5ICE9IE5VTEwpIHsKPiA+ID4gPiArICAg ICAgICBTdGF0dXMgPSBtT3ZlcnJpZGUtPkNhcGFiaWxpdHkgKAo+ID4gPiA+ICsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBDb250cm9sbGVyLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBTbG90LAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVtTbG90XSwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJlByaXZhdGUtPkJhc2VDbGtGcmVxW1Nsb3RdCj4gPiA+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICk7Cj4gPiA+ID4gKyAgICAgICAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgewo+ID4gPiA+ICsgICAgICAgICAgREVCVUcgKChERUJVR19XQVJOLCAiJWE6IEZh aWxlZCB0byBvdmVycmlkZSBjYXBhYmlsaXR5IC0KPiAgJXJcbiIsCj4gPiA+ID4gKyAgICAgICAg ICAgIF9fRlVOQ1RJT05fXywgU3RhdHVzKSk7Cj4gPiA+ID4gKyAgICAgICAgICBjb250aW51ZTsK PiA+ID4gPiArICAgICAgICB9Cj4gPiA+ID4gKyAgICAgIH0KPiA+ID4gPiArCj4gPiA+ID4gKyAg ICAgIGlmIChtT3ZlcnJpZGUtPk5vdGlmeVBoYXNlICE9IE5VTEwpIHsKPiA+ID4gPiArICAgICAg ICBTdGF0dXMgPSBtT3ZlcnJpZGUtPk5vdGlmeVBoYXNlICgKPiA+ID4gPiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgQ29udHJvbGxlciwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgU2xvdCwKPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg RWRraWlTZE1tY0dldE9wZXJhdGluZ1BhcmFtLAo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoVk9JRCopJlByaXZhdGUtPlNsb3RbU2xvdF0uT3BlcmF0aW5nUGFyYW1ldGVy cwo+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOwo+ID4gPiA+ICsgICAg ICAgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsKPiA+ID4gPiArICAgICAgICAgIERFQlVHICgo REVCVUdfV0FSTiwgIiVhOiBGYWlsZWQgdG8gZ2V0IG9wZXJhdGluZyBwYXJhbWV0ZXJzLAo+ID4g PiA+IHVzaW5nIGRlZmF1bHRzXG4iIF9fRlVOQ1RJT05fXykpOwo+ID4gPgo+ID4gPgo+ID4gPiBQ bGVhc2UgdXBkYXRlIHRoZSBhYm92ZSBsaW5lIHRvIChtaXNzZWQgb25lICcsJyBiZWZvcmUgJ19f RlVOQ1RJT05fXycpOgo+ID4gPiAgIERFQlVHICgoREVCVUdfV0FSTiwgIiVhOiBGYWlsZWQgdG8g Z2V0IG9wZXJhdGluZyBwYXJhbWV0ZXJzLCB1c2luZwo+ID4gPiBkZWZhdWx0c1xuIiwgX19GVU5D VElPTl9fKSk7Cj4gPiA+Cj4gPiA+IEl0IHdpbGwgY2F1c2UgR0NDNSBidWlsZCBmYWlsdXJlIGZv ciB0aGUgcHJvcG9zZWQgY2hhbmdlLgo+ID4gPgo+ID4gPgo+ID4gPiA+ICsgICAgICAgIH0KPiA+ ID4gPiAgICAgICAgfQo+ID4gPiA+ICAgICAgfQo+ID4gPiA+ICsKPiA+ID4gPiAgICAgIER1bXBD YXBhYmlsaXR5UmVnIChTbG90LCAmUHJpdmF0ZS0+Q2FwYWJpbGl0eVtTbG90XSk7Cj4gPiA+ID4g ICAgICBERUJVRyAoKAo+ID4gPiA+ICAgICAgICBERUJVR19JTkZPLAo+ID4gPiA+IGRpZmYgLS1n aXQKPiBhL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lIY0R4ZS5o Cj4gPiA+ID4gYi9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1NkTW1jUGNpSGNE eGUuaAo+ID4gPiA+IGluZGV4IDc3YmJmODNiNzYuLmI3NjhmMzk0MmYgMTAwNjQ0Cj4gPiA+ID4g LS0tIGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9TZE1tY1BjaUhjRHhlLmgK PiA+ID4gPiArKysgYi9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1NkTW1jUGNp SGNEeGUuaAo+ID4gPiA+IEBAIC03OCwxMSArNzgsMTIgQEAgdHlwZWRlZiBlbnVtIHsKPiA+ID4g PiAgfSBFRklfU0RfTU1DX1NMT1RfVFlQRTsKPiA+ID4gPgo+ID4gPiA+ICB0eXBlZGVmIHN0cnVj dCB7Cj4gPiA+ID4gLSAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZTsK PiA+ID4gPiAtICBFRklfU0RfTU1DX1NMT1RfVFlQRSAgICAgICAgICAgICAgU2xvdFR5cGU7Cj4g PiA+ID4gLSAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lZGlhUHJlc2VudDsK PiA+ID4gPiAtICBCT09MRUFOICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbGl6ZWQ7 Cj4gPiA+ID4gLSAgU0RfTU1DX0NBUkRfVFlQRSAgICAgICAgICAgICAgICAgIENhcmRUeXBlOwo+ ID4gPiA+ICsgIEJPT0xFQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlOwo+ID4g PiA+ICsgIEVGSV9TRF9NTUNfU0xPVF9UWVBFICAgICAgICAgICAgICAgU2xvdFR5cGU7Cj4gPiA+ ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVByZXNlbnQ7Cj4g PiA+ID4gKyAgQk9PTEVBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbml0aWFsaXplZDsK PiA+ID4gPiArICBTRF9NTUNfQ0FSRF9UWVBFICAgICAgICAgICAgICAgICAgIENhcmRUeXBlOwo+ ID4gPiA+ICsgIEVES0lJX1NEX01NQ19PUEVSQVRJTkdfUEFSQU1FVEVSUyAgT3BlcmF0aW5nUGFy YW1ldGVyczsKPiA+ID4gPiAgfSBTRF9NTUNfSENfU0xPVDsKPiA+ID4gPgo+ID4gPiA+ICB0eXBl ZGVmIHN0cnVjdCB7Cj4gPiA+ID4gQEAgLTEyMCw2ICsxMjEsMTMgQEAgdHlwZWRlZiBzdHJ1Y3Qg ewo+ID4gPiA+ICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJhc2VDbGtG cmVxW1NEX01NQ19IQ19NQVhfU0xPVF07Cj4gPiA+ID4gIH0gU0RfTU1DX0hDX1BSSVZBVEVfREFU QTsKPiA+ID4gPgo+ID4gPiA+ICt0eXBlZGVmIHN0cnVjdCB7Cj4gPiA+ID4gKyAgRURLSUlfU0Rf TU1DX0JVU19USU1JTkcgICAgICAgQnVzVGltaW5nOwo+ID4gPgo+ID4gPgo+ID4gPiBTaG91bGQg YmU6Cj4gPiA+IFNEX01NQ19CVVNfTU9ERSAgICAgICAgICAgICAgIEJ1c1RpbWluZzsKPiA+ID4K PiA+ID4KPiA+ID4gPiArICBVSU5UMTYgICAgICAgICAgICAgICAgICAgICAgICBCdXNXaWR0aDsK PiA+ID4gPiArICBVSU5UMzIgICAgICAgICAgICAgICAgICAgICAgICBDbG9ja0ZyZXE7Cj4gPiA+ ID4gKyAgRURLSUlfU0RfTU1DX0RSSVZFUl9TVFJFTkdUSCAgRHJpdmVyU3RyZW5ndGg7Cj4gPiA+ ID4gK30gRURLSUlfU0RfTU1DX0JVU19NT0RFOwo+ID4gPgo+ID4gPgo+ID4gPiBTaW5jZSB0aGUg YWJvdmUgc3RydWN0dXJlIGlzIGEgZHJpdmVyIGludGVybmFsIG9uZSwgSSBwcmVmZXIgZHJvcHBp bmcgdGhlCj4gPiA+IHByZWZpeCAnRURLSUlfJy4gQnV0IHVuZm9ydHVuYXRlbHksIFNEX01NQ19C VVNfTU9ERSBpcyBhbHJlYWR5IHVzZWQKPiBpbgo+ID4gPiBQcm90b2NvbC9TZE1tY092ZXJyaWRl LmgsIHNvIGhvdyBhYm91dCBTRF9NTUNfQlVTX1NFVFRJTkdTPwo+ID4gPgo+ID4gPgo+ID4gPiA+ ICsKPiA+ID4gPiAgI2RlZmluZSBTRF9NTUNfSENfVFJCX1NJRyAgICAgICAgICAgICBTSUdOQVRV UkVfMzIgKCdUJywgJ1InLCAnQicsICdUJykKPiA+ID4gPgo+ID4gPiA+ICAvLwo+ID4gPiA+IGRp ZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1NkTW1jUGNpSGNp LmMKPiA+ID4gPiBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lI Y2kuYwo+ID4gPiA+IGluZGV4IDVkMWY5NzdlNTUuLjg2M2FlM2RiMzQgMTAwNjQ0Cj4gPiA+ID4g LS0tIGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9TZE1tY1BjaUhjaS5jCj4g PiA+ID4gKysrIGIvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9TZE1tY1BjaUhj aS5jCj4gPiA+ID4gQEAgLTEyNjMsMTAgKzEyNjMsMTAgQEAgU2RNbWNIY0luaXRIb3N0ICgKPiA+ ID4gPiAgKiovCj4gPiA+ID4gIEVGSV9TVEFUVVMKPiA+ID4gPiAgU2RNbWNIY1Voc1NpZ25hbGlu ZyAoCj4gPiA+ID4gLSAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxl LAo+ID4gPiA+IC0gIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLAo+ID4gPiA+IC0g IElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwKPiA+ID4gPiAtICBJTiBTRF9NTUNfQlVT X01PREUgICAgICAgIFRpbWluZwo+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAg ICBDb250cm9sbGVySGFuZGxlLAo+ID4gPiA+ICsgIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAg ICAqUGNpSW8sCj4gPiA+ID4gKyAgSU4gVUlOVDggICAgICAgICAgICAgICAgICAgIFNsb3QsCj4g PiA+ID4gKyAgSU4gU0RfTU1DX0JVU19NT0RFICAgICAgICAgIFRpbWluZwo+ID4gPiA+ICAgICkK PiA+ID4KPiA+ID4KPiA+ID4gSSB0aGluayB0aGUgY2hhbmdlcyBtYWRlIGhlcmUgKHNwYWNlIGlu ZGVudGF0aW9uKSBjYW4gYmUgZHJvcHBlZC4KPiA+ID4KPiA+ID4KPiA+ID4gPiAgewo+ID4gPiA+ ICAgIEVGSV9TVEFUVVMgICAgICAgICAgICAgICAgIFN0YXR1czsKPiA+ID4gPiBkaWZmIC0tZ2l0 IGEvTWRlTW9kdWxlUGtnL0J1cy9QY2kvU2RNbWNQY2lIY0R4ZS9TZE1tY1BjaUhjaS5oCj4gPiA+ ID4gYi9NZGVNb2R1bGVQa2cvQnVzL1BjaS9TZE1tY1BjaUhjRHhlL1NkTW1jUGNpSGNpLmgKPiA+ ID4gPiBpbmRleCAwYjBkNDE1MjU2Li5jNGQ0YWVmNzNhIDEwMDY0NAo+ID4gPiA+IC0tLSBhL01k ZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lIY2kuaAo+ID4gPiA+ICsr KyBiL01kZU1vZHVsZVBrZy9CdXMvUGNpL1NkTW1jUGNpSGNEeGUvU2RNbWNQY2lIY2kuaAo+ID4g PiA+IEBAIC02MTEsMTAgKzYxMSwxMCBAQCBTZE1tY0hjSW5pdFRpbWVvdXRDdHJsICgKPiA+ID4g PiAgKiovCj4gPiA+ID4gIEVGSV9TVEFUVVMKPiA+ID4gPiAgU2RNbWNIY1Voc1NpZ25hbGluZyAo Cj4gPiA+ID4gLSAgSU4gRUZJX0hBTkRMRSAgICAgICAgICAgICBDb250cm9sbGVySGFuZGxlLAo+ ID4gPiA+IC0gIElOIEVGSV9QQ0lfSU9fUFJPVE9DT0wgICAgKlBjaUlvLAo+ID4gPiA+IC0gIElO IFVJTlQ4ICAgICAgICAgICAgICAgICAgU2xvdCwKPiA+ID4gPiAtICBJTiBTRF9NTUNfQlVTX01P REUgICAgICAgIFRpbWluZwo+ID4gPiA+ICsgIElOIEVGSV9IQU5ETEUgICAgICAgICAgICAgIENv bnRyb2xsZXJIYW5kbGUsCj4gPiA+ID4gKyAgSU4gRUZJX1BDSV9JT19QUk9UT0NPTCAgICAgKlBj aUlvLAo+ID4gPiA+ICsgIElOIFVJTlQ4ICAgICAgICAgICAgICAgICAgIFNsb3QsCj4gPiA+ID4g KyAgSU4gU0RfTU1DX0JVU19NT0RFICAgICAgICAgVGltaW5nCj4gPiA+Cj4gPiA+Cj4gPiA+IEkg dGhpbmsgdGhlIGNoYW5nZXMgbWFkZSBoZXJlIChzcGFjZSBpbmRlbnRhdGlvbikgY2FuIGJlIGRy b3BwZWQuCj4gPiA+Cj4gPiA+IEJlc3QgUmVnYXJkcywKPiA+ID4gSGFvIFd1Cj4gPiA+Cj4gPiA+ Cj4gPiA+ID4gICAgKTsKPiA+ID4gPgo+ID4gPiA+ICAjZW5kaWYKPiA+ID4gPiAtLQo+ID4gPiA+ IDIuMTQuMS53aW5kb3dzLjEKCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgpJbnRlbCBUZWNobm9sb2d5IFBvbGFuZCBz cC4geiBvLm8uCnVsLiBTbG93YWNraWVnbyAxNzMgfCA4MC0yOTggR2RhbnNrIHwgU2FkIFJlam9u b3d5IEdkYW5zayBQb2xub2MgfCBWSUkgV3lkemlhbCBHb3Nwb2RhcmN6eSBLcmFqb3dlZ28gUmVq ZXN0cnUgU2Fkb3dlZ28gLSBLUlMgMTAxODgyIHwgTklQIDk1Ny0wNy01Mi0zMTYgfCBLYXBpdGFs IHpha2xhZG93eSAyMDAuMDAwIFBMTi4KClRhIHdpYWRvbW9zYyB3cmF6IHogemFsYWN6bmlrYW1p IGplc3QgcHJ6ZXpuYWN6b25hIGRsYSBva3Jlc2xvbmVnbyBhZHJlc2F0YSBpIG1vemUgemF3aWVy YWMgaW5mb3JtYWNqZSBwb3VmbmUuIFcgcmF6aWUgcHJ6eXBhZGtvd2VnbyBvdHJ6eW1hbmlhIHRl aiB3aWFkb21vc2NpLCBwcm9zaW15IG8gcG93aWFkb21pZW5pZSBuYWRhd2N5IG9yYXogdHJ3YWxl IGplaiB1c3VuaWVjaWU7IGpha2lla29sd2llawpwcnplZ2xhZGFuaWUgbHViIHJvenBvd3N6ZWNo bmlhbmllIGplc3QgemFicm9uaW9uZS4KVGhpcyBlLW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBt YXkgY29udGFpbiBjb25maWRlbnRpYWwgbWF0ZXJpYWwgZm9yIHRoZSBzb2xlIHVzZSBvZiB0aGUg aW50ZW5kZWQgcmVjaXBpZW50KHMpLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBp ZW50LCBwbGVhc2UgY29udGFjdCB0aGUgc2VuZGVyIGFuZCBkZWxldGUgYWxsIGNvcGllczsgYW55 IHJldmlldyBvciBkaXN0cmlidXRpb24gYnkKb3RoZXJzIGlzIHN0cmljdGx5IHByb2hpYml0ZWQu Cg==