From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.100; helo=mga07.intel.com; envelope-from=michael.d.kinney@intel.com; receiver=edk2-devel@lists.01.org Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id A8B5A21A10961 for ; Fri, 1 Dec 2017 14:37:01 -0800 (PST) Received: from orsmga005.jf.intel.com ([10.7.209.41]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 01 Dec 2017 14:41:28 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,347,1508828400"; d="scan'208";a="180319467" Received: from orsmsx103.amr.corp.intel.com ([10.22.225.130]) by orsmga005.jf.intel.com with ESMTP; 01 Dec 2017 14:41:28 -0800 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.80]) by ORSMSX103.amr.corp.intel.com ([169.254.5.89]) with mapi id 14.03.0319.002; Fri, 1 Dec 2017 14:41:27 -0800 From: "Kinney, Michael D" To: Udit Kumar , Leif Lindholm , Meenakshi Aggarwal , Varun Sethi , "Kinney, Michael D" CC: "edk2-devel@lists.01.org" , "Gao, Liming" , Ard Biesheuvel Thread-Topic: [edk2] [PATCH 1/1] MdePkg/IoLib: Add support for big-endian MMIO Thread-Index: AQHSJf8g4WbKjSWeTUGVohhhcxe8iqCr++gAgAAQ+YCAADsgAIAAJeEAgjcV3KCABIjHYIAAVAOQgEHVTuCABCXCAP//5yvwgACNcQCAAI2qAIACAq4AgAB1YgD//8h0cA== Date: Fri, 1 Dec 2017 22:41:26 +0000 Message-ID: References: <4A89E2EF3DFEDB4C8BFDE51014F606A14E16B65D@SHSMSX104.ccr.corp.intel.com> <20171129125114.i3y446ds4qrkohxl@bivouac.eciton.net> <20171129194836.dqsbtbqi5budvppl@bivouac.eciton.net> <20171201105744.mlspp4gsmibbpolz@bivouac.eciton.net> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_IC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiM2EyZGQ1MGMtZGY5NS00ZjEzLWJhZmMtYmRiNTk4MjQ3NGExIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJqMVhNcTdCUU96SnhXK1wvNmtTeEZRR0RMRzRwWmJRMHVLanRxRjZUcmRGNld0OHU1MHUyM01lckV4UENcL2RjMEMifQ== dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.22.254.138] MIME-Version: 1.0 Subject: Re: [PATCH 1/1] MdePkg/IoLib: Add support for big-endian MMIO X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Dec 2017 22:37:01 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VWRpdCwNCg0KSSBhZ3JlZSB3aXRoIHlvdXIgY29uY2Vybi4NCg0KSSBhbSBpbiBmYXZvciBvZiBh ZGRpbmcgbmV3IEFQSXMgdGhhdCBwZXJmb3JtIHRoZQ0KYnl0ZSBzd2FwIG9wZXJhdGlvbnMuDQoN Ck1pa2UNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBVZGl0IEt1bWFy IFttYWlsdG86dWRpdC5rdW1hckBueHAuY29tXQ0KPiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDEs IDIwMTcgOTo1OCBBTQ0KPiBUbzogTGVpZiBMaW5kaG9sbSA8bGVpZi5saW5kaG9sbUBsaW5hcm8u b3JnPjsgTWVlbmFrc2hpDQo+IEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47 IFZhcnVuIFNldGhpDQo+IDxWLlNldGhpQG54cC5jb20+DQo+IENjOiBLaW5uZXksIE1pY2hhZWwg RCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBlZGsyLQ0KPiBkZXZlbEBsaXN0cy4wMS5v cmc7IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47DQo+IEFyZCBCaWVzaGV1dmVs IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRD SCAxLzFdIE1kZVBrZy9Jb0xpYjogQWRkIHN1cHBvcnQNCj4gZm9yIGJpZy1lbmRpYW4gTU1JTw0K PiANCj4gVGhhbmtzIExlaWYsDQo+IA0KPiA+IEl0IG1heSByZXF1aXJlIGEgbGl0dGxlIGJpdCBt b3JlIG9mIHVwLWZyb250IHdvcmssIGJ1dA0KPiB0aGUgZW5kIHJlc3VsdCB3aWxsIGJlIGENCj4g PiBwbGF0Zm9ybSBwb3J0IHRoYXQgd29ya3Mgd2l0aCB0aGUgaW50ZW5kZWQgZWRrMiBkZXNpZ24N Cj4gcHJpbmNpcGxlcyByYXRoZXIgdGhhbg0KPiANCj4gWWVzLCB0aGlzIHdpbGwgYmUgcmUtZGVz aWduL2NvZGUgZm9yIHVzLCBicmVha2luZyBhbGwNCj4gc29mdHdhcmUgcGllY2VzIGludG8NCj4g c21hbGxlciBibG9ja3MgYW5kIGV4cG9zaW5nIHByb3RvY29sIGZyb20gdGhlIHNhbWUuDQo+IFRo aXMgY291bGQgYmUgbWFuYWdlZC4NCj4gDQo+IEJ1dCBob3cgZG8geW91IHNlZSwgIGlmIHRoZXJl IGlzIHN1Y2ggZGVwZW5kZW5jeSBvTiBsaWIuDQo+IFNheSBhIGRyaXZlciB3aGljaCBpcyBpbiBC RSBtb2RlLCBhbmQgaXMgdXNpbmcgRGVidWdMaWINCj4gKEJhc2VEZWJ1Z0xpYlNlcmlhbFBvcnQp DQo+IEFuZCBEZWJ1Z0xpYiB1c2VzIFNlcmlhbFBvcnRMaWIsIHdoaWNoIGlzIGluIExFIG1vZGUN Cj4gDQo+IFRoYW5rcw0KPiBVZGl0DQo+IA0KPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtDQo+IGJvdW5jZXNAbGlz dHMuMDEub3JnXSBPbiBCZWhhbGYgT2YgTGVpZg0KPiA+IExpbmRob2xtDQo+ID4gU2VudDogRnJp ZGF5LCBEZWNlbWJlciAwMSwgMjAxNyA0OjI4IFBNDQo+ID4gVG86IE1lZW5ha3NoaSBBZ2dhcndh bCA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+DQo+ID4gQ2M6IEtpbm5leSwgTWljaGFlbCBE IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+IGVkazItZGV2ZWxAbGlzdHMuMDEub3Jn Ow0KPiA+IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IEFyZCBCaWVzaGV1dmVs DQo+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4gU3ViamVjdDogUmU6IFtlZGsy XSBbUEFUQ0ggMS8xXSBNZGVQa2cvSW9MaWI6IEFkZA0KPiBzdXBwb3J0IGZvciBiaWctZW5kaWFu DQo+ID4gTU1JTw0KPiA+DQo+ID4gT24gVGh1LCBOb3YgMzAsIDIwMTcgYXQgMDQ6MTU6MzhBTSAr MDAwMCwgTWVlbmFrc2hpDQo+IEFnZ2Fyd2FsIHdyb3RlOg0KPiA+ID4gSGkgTGVpZiwgTWlrZSwN Cj4gPiA+DQo+ID4gPg0KPiA+ID4gTlhQIGJvYXJkcywgYXQgcHJlc2VudCwgaGF2ZSBmZXcgY29u dHJvbGxlcnMgd2l0aCBiaWcNCj4gZW5kaWFuIGFuZCBvdGhlcg0KPiA+ID4gd2l0aCBsaXR0bGUg ZW5kaWFuIG1lbW9yeSBhY2Nlc3MuDQo+ID4NCj4gPiBTdXJlLCB0aGlzIGlzIG5vdCBhIHByb2Js ZW0uDQo+ID4NCj4gPiA+IE1heGltdW0gY29udHJvbGxlcnMgZGVwZW5kIG9uIFNvY0xpYiBsaWJy YXJ5IGZvcg0KPiBjbG9jayBpbmZvcm1hdGlvbiBhbmQNCj4gPiA+IGVuZGlhbm5lc3MgZm9yIFNv Y0xpYiBhbmQgY29udHJvbGxlcnMgaXMgZGlmZmVyZW50Lg0KPiA+DQo+ID4gT0ssIEkgc2VlIGlu IFNvY0xpYiB5b3UgaGF2ZSBzb21ldGhpbmcgY2FsbGVkIGEgR3VyDQo+IHRoYXQgaXMgcmVhZCBv bmNlIChhbmQgYWdhaW4NCj4gPiBkb2VzIGEgc3BlY2lhbCBwZXItZGV2aWNlIFBjZCBkYW5jZSBm b3IgcnVudGltZQ0KPiBzZWxlY3Rpb24gYmV0d2Vlbg0KPiA+IGJ5dGVzd2FwcGluZyBNbWlvIGFu ZCBwbGFpbiBNbWlvKS4NCj4gPg0KPiA+ID4gU28gdGhpcyBvcHRpb24gd2lsbCBub3Qgd29yayBm b3IgdXMsDQo+ID4gPiAgIFlvdSB3b3VsZCB0aGVuIGp1c3QgZG8gKGluIHlvdXIgLmRzYyk6DQo+ ID4gPiAgIFBsYXRmb3JtL05YUC9Ecml2ZXJzL1dhdGNoRG9nL1dhdGNoRG9nRHhlLmluZiB7DQo+ ID4gPiAgICAgICBJb0xpYnw8cGF0aCB0byBCZUlvTGliIC5pbmY+DQo+ID4gPiAgIH0NCj4gPiA+ DQo+ID4gPiBCZWNhdXNlIGFsbCBsaWJyYXJpZXMgaW5jbHVkZWQgYnkgV2F0Y2hEb2cgd2lsbCB0 aGVuDQo+IGFjY2VzcyBCRSBtb2RlIE1taW8NCj4gPiBBUElzLg0KPiA+DQo+ID4gV2hpY2ggbGli cmFyaWVzIHBlcmZvcm1pbmcgTW1pbyBhY2Nlc3NlcyBhcmUgeW91DQo+IGludGVuZGluZyB0byBp bmNsdWRlIGluIHlvdXINCj4gPiB3YXRjaGRvZyBkcml2ZXI/IFlvdSBoYXZlIHN1Ym1pdHRlZCBu b25lIGFzIHBhcnQgb2YNCj4gdGhpcyBzZXJpZXMuDQo+ID4NCj4gPiA+IEFuZCBicmVha2luZyBj b2RlIGludG8gc2VwYXJhdGUgbW9kdWxlcyB3aXRoDQo+IGRpZmZlcmVudCBhY2Nlc3Mgd2lsbCBi ZQ0KPiA+ID4gdmVyeSBkaWZmaWN1bHQuDQo+ID4NCj4gPiBJdCBtYXkgcmVxdWlyZSBhIGxpdHRs ZSBiaXQgbW9yZSBvZiB1cC1mcm9udCB3b3JrLCBidXQNCj4gdGhlIGVuZCByZXN1bHQgd2lsbCBi ZSBhDQo+ID4gcGxhdGZvcm0gcG9ydCB0aGF0IHdvcmtzIHdpdGggdGhlIGludGVuZGVkIGVkazIg ZGVzaWduDQo+IHByaW5jaXBsZXMgcmF0aGVyIHRoYW4NCj4gPiBhZ2FpbnN0IHRoZW0uIEFuZCB0 aGF0IHdpbGwgcmVkdWNlIHRoZSBvdmVyYWxsIGVmZm9ydA0KPiAobm90IHRvIG1lbnRpb24gY29k ZQ0KPiA+IGR1cGxpY2F0aW9uKS4NCj4gPg0KPiA+IEZyb20gdGhlIHBhdGNoZXMgeW91IGhhdmUg c2VudCwgdGhlIG9ubHkgcmVxdWlyZWQNCj4gY2hhbmdlIEkgc2VlIChpZiBhDQo+ID4gYnl0ZXN3 YXBwaW5nIElvTGliIHdhcyBhZGRlZCB0byBlZGsyKSB3b3VsZCBiZSB0bw0KPiBjcmVhdGUgYSB0 aW55IGRyaXZlciBmb3IgdGhpcw0KPiA+ICJHdXIiIGRldmljZSB0aGF0IGluc3RhbGxzIGEgcHJv dG9jb2wgY29udGFpbmluZyBhDQo+IHNpbmdsZSBmdW5jdGlvbiBmb3IgcmVhZGluZw0KPiA+IGZy b20gdGhhdCBkZXZpY2UncyByZWdpc3RlciBzcGFjZS4gVGhhdCBkcml2ZXIgY2FuIGJlDQo+IGJ1 aWx0IGFnYWluc3QgdGhlIHN3YXBwaW5nDQo+ID4gb3Igbm9uLXN3YXBwaW5nIElvTGliIGFzIGFw cHJvcHJpYXRlLg0KPiA+DQo+ID4gPiBXYXRjaGRvZyBpcyBub3QgdGhlIG9ubHkgbW9kdWxlIHdo aWNoIG5lZWQgQkUgTW1pbw0KPiBBUElzLCB3ZSBoYXZlIE1NQw0KPiA+ID4gYW5kIG90aGVyIGNv bnRyb2xsZXJzIGFsc28gd2l0aCBzYW1lIHJlcXVpcmVtZW50Lg0KPiA+DQo+ID4gQW5kIHRoZSBz YW1lIHNvbHV0aW9ucyBhcmUgcG9zc2libGUgZXZlcnl3aGVyZS4NCj4gPg0KPiA+IEJlc3QgUmVn YXJkcywNCj4gPg0KPiA+IExlaWYNCj4gPg0KPiA+ID4gV2UgbmVlZCBCRSBNbWlvIEFQSXMgd2l0 aCBhIGRpZmZlcmVudCBuYW1lLg0KPiA+ID4NCj4gPiA+IFBsZWFzZSBzZWUgdGhlIHBvc3NpYmls aXR5Lg0KPiA+ID4NCj4gPiA+IFRoYW5rcyAmIFJlZ2FyZHMsDQo+ID4gPiBNZWVuYWtzaGkNCj4g PiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IExl aWYgTGluZGhvbG0NCj4gW21haWx0bzpsZWlmLmxpbmRob2xtQGxpbmFyby5vcmddDQo+ID4gPiA+ IFNlbnQ6IFRodXJzZGF5LCBOb3ZlbWJlciAzMCwgMjAxNyAxOjE5IEFNDQo+ID4gPiA+IFRvOiBL aW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+DQo+ID4gPiA+IENj OiBNZWVuYWtzaGkgQWdnYXJ3YWwNCj4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPjsgR2Fv LCBMaW1pbmcNCj4gPiA+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmc7DQo+IEFyZCBCaWVzaGV1dmVsDQo+ID4gPiA+IDxhcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnPg0KPiA+ID4gPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCAxLzFdIE1kZVBrZy9J b0xpYjogQWRkDQo+IHN1cHBvcnQgZm9yDQo+ID4gPiA+IGJpZy1lbmRpYW4gTU1JTw0KPiA+ID4g Pg0KPiA+ID4gPiBJIGd1ZXNzIHRoZXJlIGlzIG5vIHN0cmljdCBydWxlIGFib3V0IGEgZHJpdmVy IG9ubHkNCj4gZGlyZWN0bHkNCj4gPiA+ID4gYWNjZXNzaW5nIG9uZSBwaWVjZSBvZiBIVz8NCj4g PiA+ID4NCj4gPiA+ID4gU3RpbGwsIHRoYXQgd291bGQgYmUgb25lIHBvc3NpYmxlIHNvbHV0aW9u Og0KPiBicmVha2luZyBhY2Nlc3NlcyB0byBhDQo+ID4gPiA+IHNlcGFyYXRlIEhXIGluIG5lZWQg b2YgYnl0ZXN3YXBwaW5nIG91dCBpbnRvIGl0cw0KPiBvd24gbW9kdWxlIGFuZA0KPiA+ID4gPiBs ZXR0aW5nIGl0IG92ZXJyaWRlIElvTGliIHZlcnNpb24gdGhlcmUuDQo+ID4gPiA+DQo+ID4gPiA+ IFJlZ2FyZHMsDQo+ID4gPiA+DQo+ID4gPiA+IExlaWYNCj4gPiA+ID4NCj4gPiA+ID4gT24gV2Vk LCBOb3YgMjksIDIwMTcgYXQgMDc6MjU6MDVQTSArMDAwMCwgS2lubmV5LA0KPiBNaWNoYWVsIEQg d3JvdGU6DQo+ID4gPiA+ID4gTGVpZiwNCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEkgYWdyZWUgdGhh dCB0aGlzIHNob3VsZCBiZSBkZXNjcmliZWQgYXMgYnl0ZQ0KPiBzd2FwcGluZy4NCj4gPiA+ID4g Pg0KPiA+ID4gPiA+IFdoYXQgYWJvdXQgYSBtb2R1bGUgdGhhdCBuZWVkcyB0byBhY2Nlc3MgSFcg d2l0aA0KPiBhbmQgd2l0aG91dCB0aGUNCj4gPiA+ID4gPiBieXRlcyBzd2FwcGVkPyAgSXQgZ2V0 cyBtb3JlIGNvbXBsZXggaWYgYSBtb2R1bGUNCj4gaXMgbGlua2VkIGFnYWluc3QNCj4gPiA+ID4g PiBzZXZlcmFsIGxpYnMgYW5kIHNvbWUgbGlicyBhY2Nlc3MgSFcgd2l0aCBieXRlcw0KPiBzd2Fw cGVkIGFuZCBzb21lDQo+ID4gPiA+ID4gZG8gbm90Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gVGhh bmtzLA0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gTWlrZQ0KPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAt LS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gRnJvbTogZWRrMi1kZXZlbCBb bWFpbHRvOmVkazItZGV2ZWwtDQo+IGJvdW5jZXNAbGlzdHMuMDEub3JnXSBPbg0KPiA+ID4gPiA+ ID4gQmVoYWxmIE9mIExlaWYgTGluZGhvbG0NCj4gPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwg Tm92ZW1iZXIgMjksIDIwMTcgNDo1MSBBTQ0KPiA+ID4gPiA+ID4gVG86IE1lZW5ha3NoaSBBZ2dh cndhbA0KPiA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+OyBHYW8sIExpbWluZw0KPiA+ID4g PiA+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gQ2M6IEtpbm5leSwgTWlj aGFlbCBEDQo+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+ID4gPiA+ID4gPiBlZGsy LWRldmVsQGxpc3RzLjAxLm9yZzsgQXJkIEJpZXNoZXV2ZWwNCj4gPiA+ID4gPiA+IDxhcmQuYmll c2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFU Q0ggMS8xXSBNZGVQa2cvSW9MaWI6DQo+IEFkZCBzdXBwb3J0IGZvcg0KPiA+ID4gPiA+ID4gYmln LWVuZGlhbiBNTUlPDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gSGkgTWVlbmFrc2hpLA0KPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEkgZmluYWxseSBnb3QgYXJvdW5kIHRvIGxvb2tpbmcgYXQg dGhlIHdhdGNoZG9nDQo+IGNvZGUgKHRoYXQgdXNlcw0KPiA+ID4gPiA+ID4gdGhpcyBsaWJyYXJ5 KSwgYW5kIHRoYXQgaGFzIGNvbnZpbmNlZCBtZSB0aGUNCj4gYmVzdCBzb2x1dGlvbiBpcyB0bw0K PiA+ID4gPiA+ID4gZG8gd2hhdCBMaW1pbmcgcHJvcG9zZWQuDQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gTG9va2luZyBhdCB0aGlzIHNuaXBwZXQ6DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiArU1RBVElDDQo+ID4gPiA+ID4gPiA+ICtVSU5UMTYNCj4gPiA+ID4gPiA+ID4gK0VGSUFQSQ0K PiA+ID4gPiA+ID4gPiArV2RvZ1JlYWQgKA0KPiA+ID4gPiA+ID4gPiArIMKgSU4gwqBVSU5UTiDC oCDCoCBBZGRyZXNzDQo+ID4gPiA+ID4gPiA+ICsgwqApDQo+ID4gPiA+ID4gPiA+ICt7DQo+ID4g PiA+ID4gPiA+ICsgwqBpZiAoRml4ZWRQY2RHZXRCb29sIChQY2RXZG9nQmlnRW5kaWFuKSkgew0K PiA+ID4gPiA+ID4gPiArIMKgIMKgcmV0dXJuIEJlTW1pb1JlYWQxNiAoQWRkcmVzcyk7DQo+ID4g PiA+ID4gPiA+ICsgwqB9IGVsc2Ugew0KPiA+ID4gPiA+ID4gPiArIMKgIMKgcmV0dXJuIE1taW9S ZWFkMTYoQWRkcmVzcyk7DQo+ID4gPiA+ID4gPiA+ICsgwqB9DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gVGhpcyBpcyBhY3R1YWxseSBhIHByZXR0eSBnb29kIGRlbW9uc3RyYXRpb24gb2YNCj4g dGhlIGFyZ3VtZW50cw0KPiA+ID4gPiA+ID4gdGhhdCB3ZXJlIG1hZGUgd2l0aCByZWdhcmRzIHRv IGhvdyB0aGUgQmVJb0xpYg0KPiBjb3VsZCBiZSBqdXN0DQo+ID4gPiA+ID4gPiBhbm90aGVyIGlt cGxlbWVudGF0aW9uIG9mIElvTGliLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFlvdSB3b3Vs ZCB0aGVuIGp1c3QgZG8gKGluIHlvdXIgLmRzYyk6DQo+ID4gPiA+ID4gPiDCoCBQbGF0Zm9ybS9O WFAvRHJpdmVycy9XYXRjaERvZy9XYXRjaERvZ0R4ZS5pbmYNCj4gew0KPiA+ID4gPiA+ID4gwqAg wqAgSW9MaWJ8PHBhdGggdG8gQmVJb0xpYiAuaW5mPg0KPiA+ID4gPiA+ID4gwqAgfQ0KPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+IFRoaXMgY2F1c2VzIHRoZSBiaWctZW5kaWFuIHZlcnNpb24gb2Yg dGhlDQo+IGxpYnJhcnkgdG8gYmUgdXNlZCBmb3INCj4gPiA+ID4gPiA+IHRoaXMgY29tcG9uZW50 LiBUaGlzIG1ha2VzIHRoZXNlIFdkb2c8YWNjZXNzPg0KPiBmdW5jdGlvbnMgYW5kIHRoZQ0KPiA+ ID4gPiA+ID4gUGNkIHJlZHVuZGFudCwgYW5kIHRoZSByZXN0IG9mIHRoZSBjb2RlIGNhbiB1c2UN Cj4gPiA+ID4gPiA+IE1taW9SZWFkMTYoKS9NbWlvV3JpdGUxNigpDQo+ID4gPiA+ID4gPiBkaXJl Y3RseS4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBCdXQgdGhlbiwgaXQgaXMgbm90IHJlYWxs eSBhIGJpZy1lbmRpYW4gb3INCj4gbGl0dGUtZW5kaWFuIHZlcnNpb24NCj4gPiA+ID4gPiA+IG9m IHRoZSBsaWJyYXJ5IHdlIG5lZWQuIFdlIGFsd2F5cyBrbm93IHdoaWNoDQo+IGVuZGlhbm5lc3Mg d2UgYXJlDQo+ID4gPiA+ID4gPiBidWlsZGluZyBmb3IuDQo+ID4gPiA+ID4gPiBXaGF0IHdlIG5l ZWQgaXMgYSBieXRlc3dhcHBpbmcgZmxhdm91ciBvZg0KPiBJb0xpYi4NCj4gPiA+ID4gPiA+DQo+ ID4gPiA+ID4gPiBTbyBMaW1pbmcsIHdoYXQgaWYgd2UgZG8gc29tZXRoaW5nIGxpa2UgYWRkaW5n DQo+IGENCj4gPiA+ID4gPiA+DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9C YXNlSW9MaWJJbnRyaW5zaWNTd2ENCj4gPiA+ID4gPiA+IHAuaW5mDQo+ID4gPiA+ID4gPiAtLS0N Cj4gPiA+ID4gPiA+IFtEZWZpbmVzXQ0KPiA+ID4gPiA+ID4gICBJTkZfVkVSU0lPTiAgICAgICAg ICAgICAgICAgICAgPSAweDAwMDEwMDFBDQo+ID4gPiA+ID4gPiAgIEJBU0VfTkFNRSAgICAgICAg ICAgICAgICAgICAgICA9DQo+ID4gPiA+ID4gPiBCYXNlSW9MaWJJbnRyaW5zaWNTd2FwDQo+ID4g PiA+ID4gPiAgIE1PRFVMRV9VTklfRklMRSAgICAgICAgICAgICAgICA9DQo+ID4gPiA+ID4gPiBC YXNlSW9MaWJJbnRyaW5zaWMudW5pDQo+ID4gPiA+ID4gPiAgIEZJTEVfR1VJRCAgICAgICAgICAg ICAgICAgICAgICA9IGQ0YTYwZDQ0LQ0KPiAzNjg4LTRhNTAtDQo+ID4gPiA+ID4gPiBiMmQwLTVj NmZjMjQyMjUyMw0KPiA+ID4gPiA+ID4gICBNT0RVTEVfVFlQRSAgICAgICAgICAgICAgICAgICAg PSBCQVNFDQo+ID4gPiA+ID4gPiAgIFZFUlNJT05fU1RSSU5HICAgICAgICAgICAgICAgICA9IDEu MA0KPiA+ID4gPiA+ID4gICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBJb0xpYg0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAjDQo+ID4gPiA+ID4gPiAjICBW QUxJRF9BUkNISVRFQ1RVUkVTICAgICAgICAgICA9IElBMzIgWDY0IEVCQw0KPiBJUEYgQVJNDQo+ ID4gPiA+ID4gPiBBQVJDSDY0DQo+ID4gPiA+ID4gPiAjDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ ID4gW1NvdXJjZXNdDQo+ID4gPiA+ID4gPiAgIEJhc2VJb0xpYkludHJpbnNpY0ludGVybmFsLmgN Cj4gPiA+ID4gPiA+ICAgSW9IaWdoTGV2ZWwuYw0KPiA+ID4gPiA+ID4gICBJb0xpYi5jDQo+ID4g PiA+ID4gPiAgIElvTGliRWJjLmMgICAgICAgICAjIEFzc2VydHMgb24gYWxsIGkvbyBwb3J0DQo+ IGFjY2Vzc2VzDQo+ID4gPiA+ID4gPiAgIElvTGliTW1pb0J1ZmZlci5jDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gW1BhY2thZ2VzXQ0KPiA+ID4gPiA+ID4gICBNZGVQa2cvTWRlUGtnLmRlYw0K PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFtMaWJyYXJ5Q2xhc3Nlc10NCj4gPiA+ID4gPiA+ICAg RGVidWdMaWINCj4gPiA+ID4gPiA+ICAgQmFzZUxpYg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IFtCdWlsZE9wdGlvbnNdDQo+ID4gPiA+ID4gPiAgIEdDQzoqXypfKl9DQ19GTEFHUyAgPSAtRFNX QVBfQllURVMNCj4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEFuZCB0 aGVuIGFkZA0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ICNpZmRlZiBTV0FQX0JZVEVTDQo+ID4g PiA+ID4gPiAgIHJldHVybiBTd2FwQnl0ZXNYWCAoVmFsdWUpOw0KPiA+ID4gPiA+ID4gI2Vsc2UN Cj4gPiA+ID4gPiA+ICAgcmV0dXJuIFZhbHVlOw0KPiA+ID4gPiA+ID4gI2ZpDQo+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gZm9yIHRoZSByZWFkIG9wZXJhdGlvbnMgYW5kDQo+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gI2lmZGVmIFNXQVBfQllURVMNCj4gPiA+ID4gPiA+ICAgKih0eXBlKUFkZHJl c3MgPSBTd2FwQnl0ZXNYWCAoVmFsdWUpOyAjZWxzZQ0KPiA+ID4gPiA+ID4gICAqKHR5cGUpQWRk cmVzcyA9IFZhbHVlOw0KPiA+ID4gPiA+ID4gI2ZpDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g Zm9yIHRoZSB3cml0ZSBvcGVyYXRpb25zIGluIElvTGliLmM/DQo+ID4gPiA+ID4gPg0KPiA+ID4g PiA+ID4gLw0KPiA+ID4gPiA+ID4gICAgIExlaWYNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBP biBNb24sIE5vdiAyNywgMjAxNyBhdCAwNjowNjozM0FNICswMDAwLA0KPiBNZWVuYWtzaGkgQWdn YXJ3YWwNCj4gPiA+ID4gPiA+IHdyb3RlOg0KPiA+ID4gPiA+ID4gPiBIaSBMZWlmLA0KPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBUaGlzIGlzIHJlZ2FyZGluZyBCaWctRW5kaWFuIExpYnJh cnkgcGF0Y2gNCj4gKFtQQVRDSCB2Mg0KPiA+ID4gPiA+ID4gMS85XQ0KPiA+ID4gPiA+ID4gPiBQ bGF0Zm9ybS9OWFA6IEFkZCBzdXBwb3J0IGZvciBCaWcgRW5kaWFuIE1taW8NCj4gQVBJcykNCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gV2UgaGF2ZSBzdGFydGVkIHRoaXMgZGlzY3Vzc2lv biBiZWZvcmUgYW5kDQo+IHRoZQ0KPiA+ID4gPiA+ID4gc3VnZ2VzdGlvbiB3YXMgdG8NCj4gPiA+ ID4gPiA+ID4gY3JlYXRlIGEgc2VwYXJhdGUgLmluZiBmaWxlIGtlZXBpbmcgQVBJcyBuYW1lDQo+ IHNhbWUgZS5nLg0KPiA+ID4gPiA+ID4gPiBNbWlvUmVhZC9NbWlvV3JpdGUgaW4gTWRlUGtnLg0K PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBCdXQgd2UgY2FuJ3QgZ28gd2l0aCB0aGlzIGFw cHJvYWNoIChyZWFzb24NCj4gbWVudGlvbmVkDQo+ID4gPiA+ID4gPiBieSBVZGl0KS4NCj4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gU28gcGxlYXNlIHN1Z2dlc3QgaWYgd2Ugc2hvdWxkIGtl ZXAgdGhpcw0KPiBsaWJyYXJ5DQo+ID4gPiA+ID4gPiB1bmRlciBQbGF0Zm9ybS9OWFANCj4gPiA+ ID4gPiA+ID4gb3IgSSBzZW5kIGEgbmV3IHBhdGNoIG1vdmluZyB0aGlzIGxpYnJhcnkgaW4NCj4g TWRlUGtnLg0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiBCdXQgd2UgaGF2ZSB0byBrZWVw IGEgZGlmZmVyZW50IG5hbWUgZm9yIEJpZw0KPiBFbmRpYW4NCj4gPiA+ID4gPiA+IE1NSU8gQVBJ cy4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gVGhhbmtzLA0K PiA+ID4gPiA+ID4gPiBNZWVuYWtzaGkNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiA+ IEZyb206IFVkaXQgS3VtYXINCj4gPiA+ID4gPiA+ID4gPiBTZW50OiBNb25kYXksIE9jdG9iZXIg MjMsIDIwMTcgMTI6MzggUE0NCj4gPiA+ID4gPiA+ID4gPiBUbzogR2FvLCBMaW1pbmcgPGxpbWlu Zy5nYW9AaW50ZWwuY29tPjsNCj4gTWVlbmFrc2hpDQo+ID4gPiA+ID4gPiBBZ2dhcndhbA0KPiA+ ID4gPiA+ID4gPiA+IDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47IEFyZA0KPiBCaWVzaGV1 dmVsDQo+ID4gPiA+ID4gPiA+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+OyBLaW5uZXks DQo+IE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+IDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNv bT47IGVkazItDQo+ID4gPiA+ID4gPiBkZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4gPiA+ID4g PiBTdWJqZWN0OiBSRTogW2VkazJdIFtQQVRDSCAxLzFdDQo+IE1kZVBrZy9Jb0xpYjogQWRkDQo+ ID4gPiA+ID4gPiBzdXBwb3J0IGZvciBiaWctZW5kaWFuDQo+ID4gPiA+ID4gPiA+ID4gTU1JTw0K PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gSGkgTWVlbmFrc2hpL0xpbWluZywNCj4g PiA+ID4gPiA+ID4gPiBNeSAyIGNlbnRzLCBhcm91bmQgdGhpcy4NCj4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+IDEpDQo+ID4gPiA+ID4gPiA+ID4gSGF2aW5nIGEgbmV3IGxpYiBmb3Ig QkUgcmVhZCBtaWdodCBub3QgYmUNCj4gaGVscGZ1bA0KPiA+ID4gPiA+ID4gZm9yIHVzLCBlLmcu IGEgSVAgd2hpY2ggaXMgaW4NCj4gPiA+ID4gPiA+ID4gPiBCRSBtb2RlIGFjY2VzcyB0aGUgVUFS VCBmb3IgcHJpbnQgb3Igc3lzdGVtDQo+ID4gPiA+ID4gPiByZWdpc3RlcnMgd2hpY2ggYXJlIGlu IExFLCB0aGVuDQo+ID4gPiA+ID4gPiA+ID4gd2l0aCBuZXcgTGliLCB3ZSB3aWxsIGdldCBhbGwg cmVhZC93cml0ZSBpbg0KPiBCRSBtb2RlDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g PiAyKQ0KPiA+ID4gPiA+ID4gPiA+IEVzcGVjaWFsbHkgZm9yIG91ciBJUHMsIHdoaWNoIGFyZSBj aGFuZ2luZw0KPiBmcm9tIEJFDQo+ID4gPiA+ID4gPiB0byBMRSBkZXBlbmRpbmcgb24NCj4gPiA+ ID4gPiA+ID4gPiBwbGF0Zm9ybS4NCj4gPiA+ID4gPiA+ID4gPiBBcyBzYWlkIGJlZm9yZSwgaGF2 aW5nIEJFIHJlYWQgbGliIHdpdGggQVBJDQo+IG5hbWUgb2YNCj4gPiA+ID4gPiA+IE1taW9SZWFk MzIgZXRjLCB3aWxsIG5vdA0KPiA+ID4gPiA+ID4gPiA+IGhlbHAgKEkgZ3Vlc3MgTWVlbmFrc2hp IGFscmVhZHkgc2VlbiBzb21lDQo+IHByb2JsZW1zDQo+ID4gPiA+ID4gPiBhcm91bmQgdGhpcykg QWRkaW5nIGENCj4gPiA+ID4gPiA+ID4gPiBuZXcgbGliIHdpdGggTW1pb1JlYWQzMkJFIEFQSSBu YW1lIGNvdWxkDQo+IGhlbHAsIGJ1dA0KPiA+ID4gPiA+ID4gSVAgZHJpdmVyIHdlIG5lZWQgdG8N Cj4gPiA+ID4gPiA+ID4gPiB0YWtlIGNhcmUgb2YgSVAgbW9kZSBlaXRoZXIgYnkgUGNkIG9yDQo+ ICNkZWZpbmUsIHRvDQo+ID4gPiA+ID4gPiBzZWxlY3QgTW1pb1JlYWQzMiBvcg0KPiA+ID4gPiA+ ID4gPiA+IE1taW9SZWFkMzJCRS4NCj4gPiA+ID4gPiA+ID4gPiBUaGlzIGNvbmRpdGlvbmFsIGNv bXBpbGUgbmVlZHMgdG8gYmUgZG9uZQ0KPiBmb3IgYWxsDQo+ID4gPiA+ID4gPiBJUHMgKHdoaWNo IHdvcmtzIGluIEJFL0xFDQo+ID4gPiA+ID4gPiA+ID4gbW9kZSBvbiBkaWZmZXJlbnQgcGxhdGZv cm1zKS4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IE15IHByZWZlcnJlZCB3YXkg b2YgaW1wbGVtZW50YXRpb24gdG8gdXNlDQo+IG9uZQ0KPiA+ID4gPiA+ID4gZnVuY3Rpb24gaW4g SVAgZHJpdmVyLCBBbmQNCj4gPiA+ID4gPiA+ID4gPiBiYXNlZCBvbiBJUCBtb2RlLCBkbyB0aGUg c3dpdGNoLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gTmV3IExpYiBjb3VsZCBo YXZlIGZ1bmN0aW9uIGxpa2UgYmVsb3cNCj4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZDMyR2VuZXJp YyhJTiAgVUlOVE4gICAgIEFkZHJlc3MsDQo+IEJPT0wNCj4gPiA+ID4gPiA+IElzSVBCRSkgew0K PiA+ID4gPiA+ID4gPiA+ICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1 ZTsNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ICAgIEFTU0VSVCAoKEFkZHJlc3Mg JiAzKSA9PSAwKTsNCj4gPiA+ID4gPiA+ID4gPiAgICBWYWx1ZSA9ICoodm9sYXRpbGUgVUlOVDMy KilBZGRyZXNzOw0KPiA+ID4gPiA+ID4gPiA+ICAgIElmKElzSVBCRSkNCj4gPiA+ID4gPiA+ID4g PiAgICAgIFZhbHVlID0gU3dhcEJ5dGVzMzIoVmFsdWUpOyAgcmV0dXJuDQo+IFZhbHVlOyB9DQo+ ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBBbmQgSVAgZHJpdmVyIGNhbiB1c2UgaXQN Cj4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZDMyR2VuZXJpYyhBRERSLA0KPiA+ID4gPiA+ID4gPiA+ IEZpeGVkUGNkR2V0KFRoaXNfSVBfTW9kZV9Gb3JfVGhpc19wbGF0Zm9ybSkNCj4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+IENvbW1lbnRzIGFyZSB3ZWxjb21lLg0KPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gUmVnYXJkcw0KPiA+ID4gPiA+ID4gPiA+IFVkaXQNCj4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gPiA+ID4gPiA+ID4gPiA+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLQ0K PiA+ID4gPiA+ID4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZg0KPiA+ID4gPiA+ ID4gPiA+ID4gR2FvLCBMaW1pbmcNCj4gPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IE1vbmRheSwgT2N0 b2JlciAxNiwgMjAxNyA4OjQ4IEFNDQo+ID4gPiA+ID4gPiA+ID4gPiBUbzogTWVlbmFrc2hpIEFn Z2Fyd2FsDQo+ID4gPiA+ID4gPiA8bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb20+OyBBcmQgQmll c2hldXZlbA0KPiA+ID4gPiA+ID4gPiA+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+OyBL aW5uZXksDQo+IE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ID4gPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPjsgZWRrMi0NCj4gPiA+ID4gPiA+IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4g PiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMS8xXQ0KPiBNZGVQa2cvSW9M aWI6IEFkZA0KPiA+ID4gPiA+ID4gc3VwcG9ydCBmb3INCj4gPiA+ID4gPiA+ID4gPiA+IGJpZy1l bmRpYW4gTU1JTw0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IE1lZW5ha3No aToNCj4gPiA+ID4gPiA+ID4gPiA+ICAgSSBzdWdnZXN0IHRvIGludHJvZHVjZSBuZXcgSW9MaWIN Cj4gbGlicmFyeQ0KPiA+ID4gPiA+ID4gaW5zdGFuY2UsIG5vdCB0byBhZGQgbmV3IElvTGliDQo+ ID4gPiA+ID4gPiA+ID4gQVBJcy4NCj4gPiA+ID4gPiA+ID4gPiA+IE5ldyBJb0xpYiBsaWJyYXJ5 IGluc3RhbmNlIHdpbGwgcGVyZm9ybQ0KPiBJTw0KPiA+ID4gPiA+ID4gb3BlcmF0aW9uIGFzIHRo ZSBiaWcNCj4gPiA+ID4gPiA+ID4gPiA+IGVuZGlhbi4gWW91IGNhbiB1cGRhdGUNCj4gPiA+ID4g PiA+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYyBpbnN0YW5jZSwgYWRkDQo+ID4g PiA+ID4gPiA+ID4gPiBuZXcgc291cmNlIGZpbGUgYW5kIG5ldyBJTkYgZm9yIGl0Lg0KPiA+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IFVJTlQzMg0KPiA+ID4gPiA+ID4gPiA+ID4g RUZJQVBJDQo+ID4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZDMyICgNCj4gPiA+ID4gPiA+ID4gPiA+ ICAgSU4gIFVJTlROICAgICBBZGRyZXNzDQo+ID4gPiA+ID4gPiA+ID4gPiAgICkNCj4gPiA+ID4g PiA+ID4gPiA+IHsNCj4gPiA+ID4gPiA+ID4gPiA+ICAgVUlOVDMyDQo+IFZhbHVlOw0KPiA+ID4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ICAgQVNTRVJUICgoQWRkcmVzcyAmIDMpID09 IDApOw0KPiA+ID4gPiA+ID4gPiA+ID4gICBWYWx1ZSA9ICoodm9sYXRpbGUgVUlOVDMyKilBZGRy ZXNzOw0KPiA+ID4gPiA+ID4gPiA+ID4gICByZXR1cm4gU3dhcEJ5dGVzMzIoVmFsdWUpOyB9DQo+ ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gVGhhbmtzDQo+ID4gPiA+ID4gPiA+ ID4gPiBMaW1pbmcNCj4gPiA+ID4gPiA+ID4gPiA+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0t LQ0KPiA+ID4gPiA+ID4gPiA+ID4gPkZyb206IE1lZW5ha3NoaSBBZ2dhcndhbA0KPiA+ID4gPiA+ ID4gW21haWx0bzptZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbV0NCj4gPiA+ID4gPiA+ID4gPiA+ ID5TZW50OiBGcmlkYXksIE9jdG9iZXIgMTMsIDIwMTcgMjowNyBQTQ0KPiA+ID4gPiA+ID4gPiA+ ID4gPlRvOiBBcmQgQmllc2hldXZlbA0KPiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47DQo+ ID4gPiA+ID4gPiBLaW5uZXksIE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ID4gPjxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT47IGVkazItDQo+ID4gPiA+ID4gPiBkZXZlbEBsaXN0cy4wMS5v cmc7IEdhbywgTGltaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+PGxpbWluZy5nYW9AaW50ZWwuY29t Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPlN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDEvMV0NCj4g TWRlUGtnL0lvTGliOg0KPiA+ID4gPiA+ID4gQWRkIHN1cHBvcnQgZm9yDQo+ID4gPiA+ID4gPiA+ ID4gPiA+YmlnLWVuZGlhbiBNTUlPDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+SGkgQWxsLA0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gPkl04oCZcyBhIHByZXR0eSBvbGQgZGlzY3Vzc2lvbiwgd2UgaGF2 ZQ0KPiBsZWZ0IHRoZQ0KPiA+ID4gPiA+ID4gdXBzdHJlYW1pbmcgb2YgTlhQDQo+ID4gPiA+ID4g PiA+ID4gPiA+cGFja2FnZSBpbiBiZXR3ZWVuIGJlY2F1c2Ugb2Ygc29tZSBvdGhlcg0KPiB3b3Jr LA0KPiA+ID4gPiA+ID4gYnV0IGhhdmUgc3RhcnRlZCBpdA0KPiA+ID4gPiA+ID4gPiA+ID4gPmFn YWluDQo+ID4gPiA+ID4gPiA+ID4gPiBub3cuDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+SXNzdWUgIDogRmV3IE5YUCBtb2R1bGVz IHN1cHBvcnQgQmlnDQo+IEVuZGlhbg0KPiA+ID4gPiA+ID4gTU1JT3MgYXMgdGhlc2UgYXJlIHBv cnRlZA0KPiA+ID4gPiA+ID4gPiA+ID4gPmZyb20gUG93ZXJQQy4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID5Tb2x1dGlvbiBzdWdnZXN0ZWQgOiBDcmVhdGUgYSBzZXBh cmF0ZQ0KPiBsaWJyYXJ5DQo+ID4gPiA+ID4gPiBmb3IgQkUgTU1JTyBBUElzLg0KPiA+ID4gPiA+ ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPlNvIHdo YXQgSSBoYXZlIGRvbmUgaXMsIEkgaGF2ZSBjcmVhdGVkIGENCj4gPiA+ID4gPiA+IHNlcGFyYXRl IGxpYnJhcnkgdG8gc3VwcG9ydA0KPiA+ID4gPiA+ID4gPiA+ID4gPkJFIE1NSU8gQVBJcyBhbmQg Y3VycmVudGx5IGtlZXBpbmcgaXQgdG8NCj4gbXkNCj4gPiA+ID4gPiA+IHBhY2thZ2UuDQo+ID4g PiA+ID4gPiA+ID4gPiA+VGhpcyBsaWJyYXJ5IGlzIGJhc2ljYWxseSBhIHdyYXBwZXIgb3Zlcg0K PiA+ID4gPiA+ID4gZXhpc3RpbmcgTU1JTyBBUElzLg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ID4gPlVJTlQzMg0KPiA+ID4gPiA+ID4gPiA+ID4gPkVGSUFQSQ0KPiA+ID4g PiA+ID4gPiA+ID4gPkJlTW1pb1JlYWQzMiAoDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBJTiAgVUlO VE4gICAgIEFkZHJlc3MNCj4gPiA+ID4gPiA+ID4gPiA+ID4gICkNCj4gPiA+ID4gPiA+ID4gPiA+ ID57DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICBVSU5UMzIgIFZhbHVlOw0KPiA+ID4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgVmFsdWUgPSBNbWlvUmVhZDMyKEFkZHJlc3MpOw0K PiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgcmV0dXJuIFN3YXBCeXRl czMyKFZhbHVlKTsgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gPk5lZWQgeW91ciBvcGluaW9uIG9uIGJlbG93IG9wdGlub3M6DQo+ ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+MS4gV2lsbCB0aGlzIGJlIGEg Z29vZCBpZGVhIHRvIG1ha2UgdGhpcw0KPiBsaWJyYXJ5DQo+ID4gPiA+ID4gPiBhIHBhcnQgb2Yg TWRlUGtnPyBPUg0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPjIuIEFk ZCBhIG5ldyBmaWxlIGUuZy4gSW9CZU1taW8uYyBsaWtlDQo+ID4gPiA+ID4gPiBJb0hpZ2hMZXZl bC5jIGluDQo+ID4gPiA+ID4gPiA+ID4gPiA+TWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmlu c2ljLw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBBbmQgbWFkZSB0aGVzZSBBUElzIGEgcGFydCBvZiBJ b0xpYg0KPiBpdHNlbGYuIE9SDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+My4gS2VlcCB0aGlzIGxpYnJhcnkgaW50ZXJuYWwgdG8gTlhQDQo+IHBhY2thZ2UuDQo+ID4g PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ UGxlYXNlIHByb3ZpZGUgeW91ciBpbnB1dHMuDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+VGhhbmtzICYgUmVnYXJkcywNCj4gPiA+ ID4gPiA+ID4gPiA+ID5NZWVuYWtzaGkNCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+ID4gPiA+ PiBGcm9tOiBCaHVwZXNoIFNoYXJtYQ0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gU2VudDogTW9uZGF5 LCBPY3RvYmVyIDE3LCAyMDE2IDM6MjggUE0NCj4gPiA+ID4gPiA+ID4gPiA+ID4+IFRvOiBBcmQg Qmllc2hldXZlbA0KPiA+ID4gPiA+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+OyBLaW5u ZXksIE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50 ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gQ2M6IEdhbywgTGltaW5nDQo+IDxsaW1pbmcu Z2FvQGludGVsLmNvbT47IGVkazItDQo+ID4gPiA+ID4gPiBkZXZlbEBtbDAxLjAxLm9yZzsNCj4g PiA+ID4gPiA+ID4gPiA+ID4+IE1lZW5ha3NoaSBBZ2dhcndhbA0KPiA+ID4gPiA+ID4gPG1lZW5h a3NoaS5hZ2dhcndhbEBueHAuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gU3ViamVjdDogUkU6 IFtlZGsyXSBbUEFUQ0ggMS8xXQ0KPiBNZGVQa2cvSW9MaWI6DQo+ID4gPiA+ID4gPiBBZGQgc3Vw cG9ydCBmb3INCj4gPiA+ID4gPiA+ID4gPiA+ID4+IGJpZy1lbmRpYW4gTU1JTw0KPiA+ID4gPiA+ ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4gPiA+ID4+IEhpIEFyZCwNCj4gPiA+ID4gPiA+ID4g PiA+ID4+DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IEZyb206IEFyZCBCaWVzaGV1dmVsDQo+ID4gPiA+ID4g PiBbbWFpbHRvOmFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmddDQo+ID4gPiA+ID4gPiA+ID4gPiA+ PiA+IFNlbnQ6IE1vbmRheSwgT2N0b2JlciAxNywgMjAxNiAxOjEyDQo+IFBNDQo+ID4gPiA+ID4g PiA+ID4gPiA+PiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPG1pY2hhZWwu ZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBDYzogR2FvLCBMaW1p bmcNCj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPiA+ID4gPiA+IEJodXBlc2ggU2hhcm1h DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IDxiaHVwZXNoLnNoYXJtYUBueHAuY29tPjsgZWRrMi0N Cj4gPiA+ID4gPiA+IGRldmVsQG1sMDEuMDEub3JnDQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IFN1 YmplY3Q6IFJlOiBbZWRrMl0gW1BBVENIIDEvMV0NCj4gPiA+ID4gPiA+IE1kZVBrZy9Jb0xpYjog QWRkIHN1cHBvcnQgZm9yDQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IGJpZy0gZW5kaWFuIE1NSU8N Cj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gT24gMTcgT2N0 b2JlciAyMDE2IGF0IDA1OjEwLCBLaW5uZXksDQo+IE1pY2hhZWwNCj4gPiA+ID4gPiA+IEQNCj4g PiA+ID4gPiA+ID4gPiA+ID4+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPiB3cm90ZToN Cj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gPiBCaHVwZXNoLA0KPiA+ID4gPiA+ID4gPiA+ID4gPj4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhZGQg YW4gQVJNDQo+IHNwZWNpZmljDQo+ID4gPiA+ID4gPiBQQ0QgdG8gc2VsZWN0DQo+ID4gPiA+ID4g PiA+ID4gPiA+PiA+ID4gZW5kaWFubmVzcyBhbmQgdXBkYXRlDQo+ID4gPiA+ID4gPiA+ID4gPiA+ PiA+ID4NCj4gPiA+ID4gPiA+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJb0xpYkludHJpbnNpYy9Jb0xp YkFybS5jIHRvDQo+IHVzZSB0aGF0IFBDRCBpbg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+IE1t aW9SZWFkL1dyaXRlKCkgQVBJcyBpbiB0aGF0IGZpbGUNCj4gdG8NCj4gPiA+ID4gPiA+IHN1cHBv cnQgYm90aCBlbmRpYW4gdHlwZXMuDQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gWW91IGNhbiB1 c2UgdGhlIFN3YXBCeXRlc3h4KCkNCj4gZnVuY3Rpb25zDQo+ID4gPiA+ID4gPiBmcm9tIEJhc2VM aWIoYXMNCj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gTGFzemxvDQo+ID4gPiA+ID4gPiA+ID4gPiA+ PiA+ID4gc3VnZ2VzdGVkKSBiYXNlZCBvbiB0aGUgc2V0dGluZyBvZg0KPiB0aGlzDQo+ID4gPiA+ ID4gPiBBUk0gc3BlY2lmaWMgUENELg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gPiA+PiA+ID4gTW9kdWxlcyB0aGF0IGxpbmsgYWdhaW5zdCB0aGlzIGxpYg0KPiBj YW4NCj4gPiA+ID4gPiA+IHNlbGVjdCBlbmRpYW5uZXNzIGJ5DQo+ID4gPiA+ID4gPiA+ID4gPiA+ PiA+ID4gc2V0dGluZyBQQ0QgaW4gdGhlIHNjb3BlIG9mIHRoYXQNCj4gbW9kdWxlLg0KPiA+ID4g PiA+ID4gPiA+ID4gPj4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gVGhlIElQRiB2ZXJz aW9uIG9mIElvTGliIHVzZXMgYW4NCj4gSVBGDQo+ID4gPiA+ID4gPiBzcGVjaWZpYyBQQ0QgdG8g dHJhbnNsYXRlDQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gSS9PIHBvcnQgYWNjZXNzZXMgdG8g TU1JTw0KPiBhY2Nlc3Nlcy4gIFNvDQo+ID4gPiA+ID4gPiB0aGVyZSBpcyBhbHJlYWR5IGFuDQo+ ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gZXhhbXBsZSBvZiBhbiBhcmNoIHNwZWNpZmljIFBDRCBp bg0KPiB0aGlzDQo+ID4gPiA+ID4gPiBsaWIgaW5zdGFuY2UuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gVGhp cyBpcyBub3QgYSBwbGF0Zm9ybSB3aWRlIHRoaW5nLA0KPiBpdCBpcyBhDQo+ID4gPiA+ID4gPiBw ZXItZGV2aWNlIHByb3BlcnR5DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IHdoZXRoZXIgdGhlIE1N SU8gb2NjdXJzIGluIGJpZw0KPiBlbmRpYW4gb3INCj4gPiA+ID4gPiA+IGxpdHRsZSBlbmRpYW4g bWFubmVyLg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBT byBJIHRoaW5rIExpbWluZydzIHN1Z2dlc3Rpb24gbWFrZXMNCj4gc2Vuc2U6DQo+ID4gPiA+ID4g PiBjcmVhdGUgYW4gSW9MaWINCj4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gaW1wbGVtZW50YXRpb24g dGhhdCBwZXJmb3JtcyB0aGUNCj4gYnl0ZQ0KPiA+ID4gPiA+ID4gc3dhcHBpbmcsIGFuZCBzZWxl Y3RpdmVseQ0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBpbmNvcnBvcmF0ZSBpdCBpbnRvIGRyaXZl cnMgdGhhdA0KPiByZXF1aXJlIGl0DQo+ID4gPiA+ID4gPiB1c2luZw0KPiA+ID4gPiA+ID4gPiA+ ID4gPj4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBCZU1taW9EZXZpY2VEeGUuaW5mIHsNCj4g PiA+ID4gPiA+ID4gPiA+ID4+ID4gICA8TGlicmFyeUNsYXNzZXM+DQo+ID4gPiA+ID4gPiA+ID4g PiA+PiA+DQo+IElvTGlifFNvbWVQa2cvTGlicmFyeS9CaWdFbmRpYW5Jb0xpYi5pbmYNCj4gPiA+ ID4gPiA+ID4gPiA+ID4+ID4gfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4g PiA+ID4+IFRoYXQncyBjb3JyZWN0LiBJIHRoaW5rIGNyZWF0aW5nIGENCj4gc2VwYXJhdGUNCj4g PiA+ID4gPiA+IElvTGliIGZvciBieXRlLXN3YXBwaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+PiBt YWtlcyBzZW5zZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4+DQo+ID4gPiA+ID4gPiA+ID4gPiA+PiBX ZSB3aWxsIHJld29yayB0aGUgcGF0Y2ggYWNjb3JkaW5nbHkuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPj4gUmVnYXJkcywNCj4gPiA+ID4gPiA+ID4gPiA+ID4+IEJo dXBlc2gNCj4gPiA+ID4gPiA+ID4gPiA+DQo+IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fDQo+ID4gPiA+ID4gPiA+ID4gPiBlZGsyLWRldmVsIG1haWxpbmcg bGlzdA0KPiA+ID4gPiA+ID4gPiA+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gPiA+ID4g PiA+ID4gPiA+DQo+ID4gPiA+DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5rcy5wcm90ZWN0aW9u Lm91dGxvb2suY29tLz91cmw9aHR0cA0KPiBzJTNBJTJGJTJGbA0KPiA+ID4gPiBpc3QNCj4gPiA+ ID4gcy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZlZGsyLQ0KPiA+ID4gPg0KPiA+DQo+ IGRldmVsJmRhdGE9MDIlN0MwMSU3Q21lZW5ha3NoaS5hZ2dhcndhbCU0MG54cC5jb20lN0M2OTVl NA0KPiAzY2JiNTENCj4gPiA+ID4NCj4gPg0KPiBhNDcxY2Q0NDYwOGQ1Mzc2MjMwYjAlN0M2ODZl YTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMwMTYzNSUNCj4gN0MwJTdDMA0KPiA+ID4gPg0KPiAlN0M2 MzY0NzU4MTcyMjA2NjM2MTImc2RhdGE9aHdRaDhkZlVrVkd6bTd1UUI5JTJGaXJleG1ZRWsNCj4g ZEVRDQo+ID4gPiA+ICUyQnU5NzYwNkwlMkZIRWZnJTNEJnJlc2VydmVkPTANCj4gPiA+ID4gPiA+ IF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gPiA+ ID4gPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ID4gPiA+ID4gZWRrMi1kZXZlbEBsaXN0 cy4wMS5vcmcNCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+IGh0dHBzOi8vZW1lYTAxLnNhZmVsaW5r cy5wcm90ZWN0aW9uLm91dGxvb2suY29tLz91cmw9aHR0cA0KPiBzJTNBJTJGJTJGbA0KPiA+ID4g PiBpc3QNCj4gPiA+ID4gcy4wMS5vcmclMkZtYWlsbWFuJTJGbGlzdGluZm8lMkZlZGsyLQ0KPiA+ ID4gPg0KPiA+DQo+IGRldmVsJmRhdGE9MDIlN0MwMSU3Q21lZW5ha3NoaS5hZ2dhcndhbCU0MG54 cC5jb20lN0M2OTVlNA0KPiAzY2JiNTENCj4gPiA+ID4NCj4gPg0KPiBhNDcxY2Q0NDYwOGQ1Mzc2 MjMwYjAlN0M2ODZlYTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMwMTYzNSUNCj4gN0MwJTdDMA0KPiA+ ID4gPg0KPiAlN0M2MzY0NzU4MTcyMjA2NjM2MTImc2RhdGE9aHdRaDhkZlVrVkd6bTd1UUI5JTJG aXJleG1ZRWsNCj4gZEVRDQo+ID4gPiA+ICUyQnU5NzYwNkwlMkZIRWZnJTNEJnJlc2VydmVkPTAN Cj4gPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+ IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQo+ID4gZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4g Pg0KPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHANCj4gcyUzQSUyRiUyRmxpc3RzLjAxDQo+ID4gLm9yZyUyRm1haWxtYW4lMkZsaXN0aW5m byUyRmVkazItDQo+ID4NCj4gZGV2ZWwmZGF0YT0wMiU3QzAxJTdDdWRpdC5rdW1hciU0MG54cC5j b20lN0NkMDYwMTgzMzZhMDY0DQo+IDhmYThlNDQwDQo+ID4NCj4gOGQ1MzhhYTVmMTklN0M2ODZl YTFkM2JjMmI0YzZmYTkyY2Q5OWM1YzMwMTYzNSU3QzAlN0MwJTdDDQo+IDYzNjQ3NzINCj4gPg0K PiAyNjc2MTI1MzEyNCZzZGF0YT1iQVUlMkJPaWRiemJLdzc2T09xNSUyRlVwbHdRYm84aU1uRTNh bEgNCj4gWTRwdEFYDQo+ID4gTVUlM0QmcmVzZXJ2ZWQ9MA0K