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 D71BE22152383 for ; Mon, 4 Dec 2017 07:26:41 -0800 (PST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by orsmga105.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Dec 2017 07:31:11 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.45,359,1508828400"; d="scan'208";a="9372247" Received: from orsmsx106.amr.corp.intel.com ([10.22.225.133]) by orsmga003.jf.intel.com with ESMTP; 04 Dec 2017 07:31:11 -0800 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.80]) by ORSMSX106.amr.corp.intel.com ([169.254.1.120]) with mapi id 14.03.0319.002; Mon, 4 Dec 2017 07:31:10 -0800 From: "Kinney, Michael D" To: Leif Lindholm , "Kinney, Michael D" CC: Udit Kumar , Meenakshi Aggarwal , Varun Sethi , "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//8h0cIAElKOA//+oO7A= Date: Mon, 4 Dec 2017 15:31:10 +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> <20171204123605.6ri2kxeeiqlghnp7@bivouac.eciton.net> In-Reply-To: <20171204123605.6ri2kxeeiqlghnp7@bivouac.eciton.net> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_IC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiY2VlNDE3OTEtN2U4Ny00ODg1LTk2YzYtMGQ0MGZkMjFkZmNmIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjIuNS4xOCIsIlRydXN0ZWRMYWJlbEhhc2giOiJuQkc2cTE1cFpoY2IwZTRNR0dcL3BsbHhIS1BmeVFTOUx6R0JrZzRkWFRBYnZ1ZHo5SkQwMEN5K1FmQ1p2TmFKbCJ9 dlp-product: dlpe-windows dlp-version: 11.0.0.116 dlp-reaction: no-action x-originating-ip: [10.22.254.139] 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: Mon, 04 Dec 2017 15:26:42 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGVpZiwNCg0KSSBtYXkgbWFrZSBtb3JlIHNlbnNlIHRvIGFkZCB0byBNZGVQa2cgYXMgYSBwZWVy IHRvIElvTGliLg0KVGhpcyBtaW5pbWl6ZXMgdGhlIHBhY2thZ2UgZGVwZW5kZW5jaWVzIGZvciBT aSBtb2R1bGVzLg0KDQpJIGFtIG9rIGFzIGEgd3JhcHBlciBvbiB0b3Agb2YgSW9MaWIuICBXaGF0 ZXZlciByZWR1Y2VzIA0KY29kZSBkdXBsaWNhdGlvbiBhbmQgcmVkdWNlcyBtYWludGVuYW5jZS4N Cg0KQmVzdCByZWdhcmRzLA0KDQpNaWtlDQoNCj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4gRnJvbTogTGVpZiBMaW5kaG9sbSBbbWFpbHRvOmxlaWYubGluZGhvbG1AbGluYXJvLm9yZ10N Cj4gU2VudDogTW9uZGF5LCBEZWNlbWJlciA0LCAyMDE3IDQ6MzYgQU0NCj4gVG86IEtpbm5leSwg TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gQ2M6IFVkaXQgS3VtYXIg PHVkaXQua3VtYXJAbnhwLmNvbT47IE1lZW5ha3NoaSBBZ2dhcndhbA0KPiA8bWVlbmFrc2hpLmFn Z2Fyd2FsQG54cC5jb20+OyBWYXJ1biBTZXRoaQ0KPiA8Vi5TZXRoaUBueHAuY29tPjsgZWRrMi1k ZXZlbEBsaXN0cy4wMS5vcmc7IEdhbywgTGltaW5nDQo+IDxsaW1pbmcuZ2FvQGludGVsLmNvbT47 IEFyZCBCaWVzaGV1dmVsDQo+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiBTdWJqZWN0 OiBSZTogW2VkazJdIFtQQVRDSCAxLzFdIE1kZVBrZy9Jb0xpYjogQWRkIHN1cHBvcnQNCj4gZm9y IGJpZy1lbmRpYW4gTU1JTw0KPiANCj4gTWlrZSwNCj4gDQo+IEluIHRoYXQgY2FzZSAtIGRvIHlv dSB0aGluayBpdCBzaG91bGQgYmUgYWRkZWQgdG8NCj4gTWRlTW9kdWxlUGtnPw0KPiANCj4gU2hv dWxkIGl0IGJlIGltcGxlbWVudGVkIHNpbXBseSBhcyBhIHdyYXBwZXIgb24gSW9MaWINCj4gKGRl cGVuZGluZyBvbg0KPiBpdCk/DQo+IA0KPiAvDQo+ICAgICBMZWlmDQo+IA0KPiBPbiBGcmksIERl YyAwMSwgMjAxNyBhdCAxMDo0MToyNlBNICswMDAwLCBLaW5uZXksIE1pY2hhZWwNCj4gRCB3cm90 ZToNCj4gPiBVZGl0LA0KPiA+DQo+ID4gSSBhZ3JlZSB3aXRoIHlvdXIgY29uY2Vybi4NCj4gPg0K PiA+IEkgYW0gaW4gZmF2b3Igb2YgYWRkaW5nIG5ldyBBUElzIHRoYXQgcGVyZm9ybSB0aGUNCj4g PiBieXRlIHN3YXAgb3BlcmF0aW9ucy4NCj4gPg0KPiA+IE1pa2UNCj4gPg0KPiA+ID4gLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+IEZyb206IFVkaXQgS3VtYXIgW21haWx0bzp1ZGl0 Lmt1bWFyQG54cC5jb21dDQo+ID4gPiBTZW50OiBGcmlkYXksIERlY2VtYmVyIDEsIDIwMTcgOTo1 OCBBTQ0KPiA+ID4gVG86IExlaWYgTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47 DQo+IE1lZW5ha3NoaQ0KPiA+ID4gQWdnYXJ3YWwgPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29t PjsgVmFydW4gU2V0aGkNCj4gPiA+IDxWLlNldGhpQG54cC5jb20+DQo+ID4gPiBDYzogS2lubmV5 LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4gZWRrMi0NCj4gPiA+ IGRldmVsQGxpc3RzLjAxLm9yZzsgR2FvLCBMaW1pbmcNCj4gPGxpbWluZy5nYW9AaW50ZWwuY29t PjsNCj4gPiA+IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ ID4gU3ViamVjdDogUkU6IFtlZGsyXSBbUEFUQ0ggMS8xXSBNZGVQa2cvSW9MaWI6IEFkZA0KPiBz dXBwb3J0DQo+ID4gPiBmb3IgYmlnLWVuZGlhbiBNTUlPDQo+ID4gPg0KPiA+ID4gVGhhbmtzIExl aWYsDQo+ID4gPg0KPiA+ID4gPiBJdCBtYXkgcmVxdWlyZSBhIGxpdHRsZSBiaXQgbW9yZSBvZiB1 cC1mcm9udCB3b3JrLA0KPiBidXQNCj4gPiA+IHRoZSBlbmQgcmVzdWx0IHdpbGwgYmUgYQ0KPiA+ ID4gPiBwbGF0Zm9ybSBwb3J0IHRoYXQgd29ya3Mgd2l0aCB0aGUgaW50ZW5kZWQgZWRrMg0KPiBk ZXNpZ24NCj4gPiA+IHByaW5jaXBsZXMgcmF0aGVyIHRoYW4NCj4gPiA+DQo+ID4gPiBZZXMsIHRo aXMgd2lsbCBiZSByZS1kZXNpZ24vY29kZSBmb3IgdXMsIGJyZWFraW5nIGFsbA0KPiA+ID4gc29m dHdhcmUgcGllY2VzIGludG8NCj4gPiA+IHNtYWxsZXIgYmxvY2tzIGFuZCBleHBvc2luZyBwcm90 b2NvbCBmcm9tIHRoZSBzYW1lLg0KPiA+ID4gVGhpcyBjb3VsZCBiZSBtYW5hZ2VkLg0KPiA+ID4N Cj4gPiA+IEJ1dCBob3cgZG8geW91IHNlZSwgIGlmIHRoZXJlIGlzIHN1Y2ggZGVwZW5kZW5jeSBv Tg0KPiBsaWIuDQo+ID4gPiBTYXkgYSBkcml2ZXIgd2hpY2ggaXMgaW4gQkUgbW9kZSwgYW5kIGlz IHVzaW5nDQo+IERlYnVnTGliDQo+ID4gPiAoQmFzZURlYnVnTGliU2VyaWFsUG9ydCkNCj4gPiA+ IEFuZCBEZWJ1Z0xpYiB1c2VzIFNlcmlhbFBvcnRMaWIsIHdoaWNoIGlzIGluIExFIG1vZGUNCj4g PiA+DQo+ID4gPiBUaGFua3MNCj4gPiA+IFVkaXQNCj4gPiA+DQo+ID4gPiA+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+IEZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRl dmVsLQ0KPiA+ID4gYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBPZiBMZWlmDQo+ID4g PiA+IExpbmRob2xtDQo+ID4gPiA+IFNlbnQ6IEZyaWRheSwgRGVjZW1iZXIgMDEsIDIwMTcgNDoy OCBQTQ0KPiA+ID4gPiBUbzogTWVlbmFrc2hpIEFnZ2Fyd2FsIDxtZWVuYWtzaGkuYWdnYXJ3YWxA bnhwLmNvbT4NCj4gPiA+ID4gQ2M6IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5 QGludGVsLmNvbT47DQo+ID4gPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsNCj4gPiA+ID4gR2Fv LCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgQXJkIEJpZXNoZXV2ZWwNCj4gPiA+ID4g PGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+DQo+ID4gPiA+IFN1YmplY3Q6IFJlOiBbZWRrMl0g W1BBVENIIDEvMV0gTWRlUGtnL0lvTGliOiBBZGQNCj4gPiA+IHN1cHBvcnQgZm9yIGJpZy1lbmRp YW4NCj4gPiA+ID4gTU1JTw0KPiA+ID4gPg0KPiA+ID4gPiBPbiBUaHUsIE5vdiAzMCwgMjAxNyBh dCAwNDoxNTozOEFNICswMDAwLCBNZWVuYWtzaGkNCj4gPiA+IEFnZ2Fyd2FsIHdyb3RlOg0KPiA+ ID4gPiA+IEhpIExlaWYsIE1pa2UsDQo+ID4gPiA+ID4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IE5Y UCBib2FyZHMsIGF0IHByZXNlbnQsIGhhdmUgZmV3IGNvbnRyb2xsZXJzIHdpdGgNCj4gYmlnDQo+ ID4gPiBlbmRpYW4gYW5kIG90aGVyDQo+ID4gPiA+ID4gd2l0aCBsaXR0bGUgZW5kaWFuIG1lbW9y eSBhY2Nlc3MuDQo+ID4gPiA+DQo+ID4gPiA+IFN1cmUsIHRoaXMgaXMgbm90IGEgcHJvYmxlbS4N Cj4gPiA+ID4NCj4gPiA+ID4gPiBNYXhpbXVtIGNvbnRyb2xsZXJzIGRlcGVuZCBvbiBTb2NMaWIg bGlicmFyeSBmb3INCj4gPiA+IGNsb2NrIGluZm9ybWF0aW9uIGFuZA0KPiA+ID4gPiA+IGVuZGlh bm5lc3MgZm9yIFNvY0xpYiBhbmQgY29udHJvbGxlcnMgaXMNCj4gZGlmZmVyZW50Lg0KPiA+ID4g Pg0KPiA+ID4gPiBPSywgSSBzZWUgaW4gU29jTGliIHlvdSBoYXZlIHNvbWV0aGluZyBjYWxsZWQg YSBHdXINCj4gPiA+IHRoYXQgaXMgcmVhZCBvbmNlIChhbmQgYWdhaW4NCj4gPiA+ID4gZG9lcyBh IHNwZWNpYWwgcGVyLWRldmljZSBQY2QgZGFuY2UgZm9yIHJ1bnRpbWUNCj4gPiA+IHNlbGVjdGlv biBiZXR3ZWVuDQo+ID4gPiA+IGJ5dGVzd2FwcGluZyBNbWlvIGFuZCBwbGFpbiBNbWlvKS4NCj4g PiA+ID4NCj4gPiA+ID4gPiBTbyB0aGlzIG9wdGlvbiB3aWxsIG5vdCB3b3JrIGZvciB1cywNCj4g PiA+ID4gPiAgIFlvdSB3b3VsZCB0aGVuIGp1c3QgZG8gKGluIHlvdXIgLmRzYyk6DQo+ID4gPiA+ ID4gICBQbGF0Zm9ybS9OWFAvRHJpdmVycy9XYXRjaERvZy9XYXRjaERvZ0R4ZS5pbmYgew0KPiA+ ID4gPiA+ICAgICAgIElvTGlifDxwYXRoIHRvIEJlSW9MaWIgLmluZj4NCj4gPiA+ID4gPiAgIH0N Cj4gPiA+ID4gPg0KPiA+ID4gPiA+IEJlY2F1c2UgYWxsIGxpYnJhcmllcyBpbmNsdWRlZCBieSBX YXRjaERvZyB3aWxsDQo+IHRoZW4NCj4gPiA+IGFjY2VzcyBCRSBtb2RlIE1taW8NCj4gPiA+ID4g QVBJcy4NCj4gPiA+ID4NCj4gPiA+ID4gV2hpY2ggbGlicmFyaWVzIHBlcmZvcm1pbmcgTW1pbyBh Y2Nlc3NlcyBhcmUgeW91DQo+ID4gPiBpbnRlbmRpbmcgdG8gaW5jbHVkZSBpbiB5b3VyDQo+ID4g PiA+IHdhdGNoZG9nIGRyaXZlcj8gWW91IGhhdmUgc3VibWl0dGVkIG5vbmUgYXMgcGFydCBvZg0K PiA+ID4gdGhpcyBzZXJpZXMuDQo+ID4gPiA+DQo+ID4gPiA+ID4gQW5kIGJyZWFraW5nIGNvZGUg aW50byBzZXBhcmF0ZSBtb2R1bGVzIHdpdGgNCj4gPiA+IGRpZmZlcmVudCBhY2Nlc3Mgd2lsbCBi ZQ0KPiA+ID4gPiA+IHZlcnkgZGlmZmljdWx0Lg0KPiA+ID4gPg0KPiA+ID4gPiBJdCBtYXkgcmVx dWlyZSBhIGxpdHRsZSBiaXQgbW9yZSBvZiB1cC1mcm9udCB3b3JrLA0KPiBidXQNCj4gPiA+IHRo ZSBlbmQgcmVzdWx0IHdpbGwgYmUgYQ0KPiA+ID4gPiBwbGF0Zm9ybSBwb3J0IHRoYXQgd29ya3Mg d2l0aCB0aGUgaW50ZW5kZWQgZWRrMg0KPiBkZXNpZ24NCj4gPiA+IHByaW5jaXBsZXMgcmF0aGVy IHRoYW4NCj4gPiA+ID4gYWdhaW5zdCB0aGVtLiBBbmQgdGhhdCB3aWxsIHJlZHVjZSB0aGUgb3Zl cmFsbA0KPiBlZmZvcnQNCj4gPiA+IChub3QgdG8gbWVudGlvbiBjb2RlDQo+ID4gPiA+IGR1cGxp Y2F0aW9uKS4NCj4gPiA+ID4NCj4gPiA+ID4gRnJvbSB0aGUgcGF0Y2hlcyB5b3UgaGF2ZSBzZW50 LCB0aGUgb25seSByZXF1aXJlZA0KPiA+ID4gY2hhbmdlIEkgc2VlIChpZiBhDQo+ID4gPiA+IGJ5 dGVzd2FwcGluZyBJb0xpYiB3YXMgYWRkZWQgdG8gZWRrMikgd291bGQgYmUgdG8NCj4gPiA+IGNy ZWF0ZSBhIHRpbnkgZHJpdmVyIGZvciB0aGlzDQo+ID4gPiA+ICJHdXIiIGRldmljZSB0aGF0IGlu c3RhbGxzIGEgcHJvdG9jb2wgY29udGFpbmluZyBhDQo+ID4gPiBzaW5nbGUgZnVuY3Rpb24gZm9y IHJlYWRpbmcNCj4gPiA+ID4gZnJvbSB0aGF0IGRldmljZSdzIHJlZ2lzdGVyIHNwYWNlLiBUaGF0 IGRyaXZlciBjYW4NCj4gYmUNCj4gPiA+IGJ1aWx0IGFnYWluc3QgdGhlIHN3YXBwaW5nDQo+ID4g PiA+IG9yIG5vbi1zd2FwcGluZyBJb0xpYiBhcyBhcHByb3ByaWF0ZS4NCj4gPiA+ID4NCj4gPiA+ ID4gPiBXYXRjaGRvZyBpcyBub3QgdGhlIG9ubHkgbW9kdWxlIHdoaWNoIG5lZWQgQkUNCj4gTW1p bw0KPiA+ID4gQVBJcywgd2UgaGF2ZSBNTUMNCj4gPiA+ID4gPiBhbmQgb3RoZXIgY29udHJvbGxl cnMgYWxzbyB3aXRoIHNhbWUgcmVxdWlyZW1lbnQuDQo+ID4gPiA+DQo+ID4gPiA+IEFuZCB0aGUg c2FtZSBzb2x1dGlvbnMgYXJlIHBvc3NpYmxlIGV2ZXJ5d2hlcmUuDQo+ID4gPiA+DQo+ID4gPiA+ IEJlc3QgUmVnYXJkcywNCj4gPiA+ID4NCj4gPiA+ID4gTGVpZg0KPiA+ID4gPg0KPiA+ID4gPiA+ IFdlIG5lZWQgQkUgTW1pbyBBUElzIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4NCj4gPiA+ID4gPg0K PiA+ID4gPiA+IFBsZWFzZSBzZWUgdGhlIHBvc3NpYmlsaXR5Lg0KPiA+ID4gPiA+DQo+ID4gPiA+ ID4gVGhhbmtzICYgUmVnYXJkcywNCj4gPiA+ID4gPiBNZWVuYWtzaGkNCj4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+IEZyb206IExl aWYgTGluZGhvbG0NCj4gPiA+IFttYWlsdG86bGVpZi5saW5kaG9sbUBsaW5hcm8ub3JnXQ0KPiA+ ID4gPiA+ID4gU2VudDogVGh1cnNkYXksIE5vdmVtYmVyIDMwLCAyMDE3IDE6MTkgQU0NCj4gPiA+ ID4gPiA+IFRvOiBLaW5uZXksIE1pY2hhZWwgRA0KPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQo+ID4gPiA+ID4gPiBDYzogTWVlbmFrc2hpIEFnZ2Fyd2FsDQo+ID4gPiA8bWVlbmFrc2hp LmFnZ2Fyd2FsQG54cC5jb20+OyBHYW8sIExpbWluZw0KPiA+ID4gPiA+ID4gPGxpbWluZy5nYW9A aW50ZWwuY29tPjsgZWRrMi0NCj4gZGV2ZWxAbGlzdHMuMDEub3JnOw0KPiA+ID4gQXJkIEJpZXNo ZXV2ZWwNCj4gPiA+ID4gPiA+IDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPg0KPiA+ID4gPiA+ ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMS8xXSBNZGVQa2cvSW9MaWI6DQo+IEFkZA0K PiA+ID4gc3VwcG9ydCBmb3INCj4gPiA+ID4gPiA+IGJpZy1lbmRpYW4gTU1JTw0KPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+IEkgZ3Vlc3MgdGhlcmUgaXMgbm8gc3RyaWN0IHJ1bGUgYWJvdXQgYSBk cml2ZXINCj4gb25seQ0KPiA+ID4gZGlyZWN0bHkNCj4gPiA+ID4gPiA+IGFjY2Vzc2luZyBvbmUg cGllY2Ugb2YgSFc/DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gU3RpbGwsIHRoYXQgd291bGQg YmUgb25lIHBvc3NpYmxlIHNvbHV0aW9uOg0KPiA+ID4gYnJlYWtpbmcgYWNjZXNzZXMgdG8gYQ0K PiA+ID4gPiA+ID4gc2VwYXJhdGUgSFcgaW4gbmVlZCBvZiBieXRlc3dhcHBpbmcgb3V0IGludG8N Cj4gaXRzDQo+ID4gPiBvd24gbW9kdWxlIGFuZA0KPiA+ID4gPiA+ID4gbGV0dGluZyBpdCBvdmVy cmlkZSBJb0xpYiB2ZXJzaW9uIHRoZXJlLg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IFJlZ2Fy ZHMsDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gTGVpZg0KPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+IE9uIFdlZCwgTm92IDI5LCAyMDE3IGF0IDA3OjI1OjA1UE0gKzAwMDAsDQo+IEtpbm5leSwN Cj4gPiA+IE1pY2hhZWwgRCB3cm90ZToNCj4gPiA+ID4gPiA+ID4gTGVpZiwNCj4gPiA+ID4gPiA+ ID4NCj4gPiA+ID4gPiA+ID4gSSBhZ3JlZSB0aGF0IHRoaXMgc2hvdWxkIGJlIGRlc2NyaWJlZCBh cyBieXRlDQo+ID4gPiBzd2FwcGluZy4NCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gV2hh dCBhYm91dCBhIG1vZHVsZSB0aGF0IG5lZWRzIHRvIGFjY2VzcyBIVw0KPiB3aXRoDQo+ID4gPiBh bmQgd2l0aG91dCB0aGUNCj4gPiA+ID4gPiA+ID4gYnl0ZXMgc3dhcHBlZD8gIEl0IGdldHMgbW9y ZSBjb21wbGV4IGlmIGENCj4gbW9kdWxlDQo+ID4gPiBpcyBsaW5rZWQgYWdhaW5zdA0KPiA+ID4g PiA+ID4gPiBzZXZlcmFsIGxpYnMgYW5kIHNvbWUgbGlicyBhY2Nlc3MgSFcgd2l0aA0KPiBieXRl cw0KPiA+ID4gc3dhcHBlZCBhbmQgc29tZQ0KPiA+ID4gPiA+ID4gPiBkbyBub3QuDQo+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+IFRoYW5rcywNCj4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gTWlrZQ0KPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVz c2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+ID4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazIt ZGV2ZWwtDQo+ID4gPiBib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24NCj4gPiA+ID4gPiA+ID4gPiBC ZWhhbGYgT2YgTGVpZiBMaW5kaG9sbQ0KPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IFdlZG5lc2RheSwg Tm92ZW1iZXIgMjksIDIwMTcgNDo1MSBBTQ0KPiA+ID4gPiA+ID4gPiA+IFRvOiBNZWVuYWtzaGkg QWdnYXJ3YWwNCj4gPiA+IDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47IEdhbywgTGltaW5n DQo+ID4gPiA+ID4gPiA+ID4gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+ID4gPiA+ID4gPiA+ IENjOiBLaW5uZXksIE1pY2hhZWwgRA0KPiA+ID4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29t PjsNCj4gPiA+ID4gPiA+ID4gPiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsgQXJkIEJpZXNoZXV2 ZWwNCj4gPiA+ID4gPiA+ID4gPiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz4NCj4gPiA+ID4g PiA+ID4gPiBTdWJqZWN0OiBSZTogW2VkazJdIFtQQVRDSCAxLzFdDQo+IE1kZVBrZy9Jb0xpYjoN Cj4gPiA+IEFkZCBzdXBwb3J0IGZvcg0KPiA+ID4gPiA+ID4gPiA+IGJpZy1lbmRpYW4gTU1JTw0K PiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gSGkgTWVlbmFrc2hpLA0KPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gSSBmaW5hbGx5IGdvdCBhcm91bmQgdG8gbG9va2luZyBh dCB0aGUNCj4gd2F0Y2hkb2cNCj4gPiA+IGNvZGUgKHRoYXQgdXNlcw0KPiA+ID4gPiA+ID4gPiA+ IHRoaXMgbGlicmFyeSksIGFuZCB0aGF0IGhhcyBjb252aW5jZWQgbWUNCj4gdGhlDQo+ID4gPiBi ZXN0IHNvbHV0aW9uIGlzIHRvDQo+ID4gPiA+ID4gPiA+ID4gZG8gd2hhdCBMaW1pbmcgcHJvcG9z ZWQuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBMb29raW5nIGF0IHRoaXMgc25p cHBldDoNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gK1NUQVRJQw0KPiA+ID4g PiA+ID4gPiA+ID4gK1VJTlQxNg0KPiA+ID4gPiA+ID4gPiA+ID4gK0VGSUFQSQ0KPiA+ID4gPiA+ ID4gPiA+ID4gK1dkb2dSZWFkICgNCj4gPiA+ID4gPiA+ID4gPiA+ICsgwqBJTiDCoFVJTlROIMKg IMKgIEFkZHJlc3MNCj4gPiA+ID4gPiA+ID4gPiA+ICsgwqApDQo+ID4gPiA+ID4gPiA+ID4gPiAr ew0KPiA+ID4gPiA+ID4gPiA+ID4gKyDCoGlmIChGaXhlZFBjZEdldEJvb2wNCj4gKFBjZFdkb2dC aWdFbmRpYW4pKSB7DQo+ID4gPiA+ID4gPiA+ID4gPiArIMKgIMKgcmV0dXJuIEJlTW1pb1JlYWQx NiAoQWRkcmVzcyk7DQo+ID4gPiA+ID4gPiA+ID4gPiArIMKgfSBlbHNlIHsNCj4gPiA+ID4gPiA+ ID4gPiA+ICsgwqAgwqByZXR1cm4gTW1pb1JlYWQxNihBZGRyZXNzKTsNCj4gPiA+ID4gPiA+ID4g PiA+ICsgwqB9DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBUaGlzIGlzIGFjdHVh bGx5IGEgcHJldHR5IGdvb2QNCj4gZGVtb25zdHJhdGlvbiBvZg0KPiA+ID4gdGhlIGFyZ3VtZW50 cw0KPiA+ID4gPiA+ID4gPiA+IHRoYXQgd2VyZSBtYWRlIHdpdGggcmVnYXJkcyB0byBob3cgdGhl DQo+IEJlSW9MaWINCj4gPiA+IGNvdWxkIGJlIGp1c3QNCj4gPiA+ID4gPiA+ID4gPiBhbm90aGVy IGltcGxlbWVudGF0aW9uIG9mIElvTGliLg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gWW91IHdvdWxkIHRoZW4ganVzdCBkbyAoaW4geW91ciAuZHNjKToNCj4gPiA+ID4gPiA+ID4N Cj4gPiDCoCBQbGF0Zm9ybS9OWFAvRHJpdmVycy9XYXRjaERvZy9XYXRjaERvZ0R4ZS5pbmYNCj4g PiA+IHsNCj4gPiA+ID4gPiA+ID4gPiDCoCDCoCBJb0xpYnw8cGF0aCB0byBCZUlvTGliIC5pbmY+ DQo+ID4gPiA+ID4gPiA+ID4gwqAgfQ0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g VGhpcyBjYXVzZXMgdGhlIGJpZy1lbmRpYW4gdmVyc2lvbiBvZiB0aGUNCj4gPiA+IGxpYnJhcnkg dG8gYmUgdXNlZCBmb3INCj4gPiA+ID4gPiA+ID4gPiB0aGlzIGNvbXBvbmVudC4gVGhpcyBtYWtl cyB0aGVzZQ0KPiBXZG9nPGFjY2Vzcz4NCj4gPiA+IGZ1bmN0aW9ucyBhbmQgdGhlDQo+ID4gPiA+ ID4gPiA+ID4gUGNkIHJlZHVuZGFudCwgYW5kIHRoZSByZXN0IG9mIHRoZSBjb2RlIGNhbg0KPiB1 c2UNCj4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZDE2KCkvTW1pb1dyaXRlMTYoKQ0KPiA+ID4gPiA+ ID4gPiA+IGRpcmVjdGx5Lg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gQnV0IHRo ZW4sIGl0IGlzIG5vdCByZWFsbHkgYSBiaWctZW5kaWFuIG9yDQo+ID4gPiBsaXR0ZS1lbmRpYW4g dmVyc2lvbg0KPiA+ID4gPiA+ID4gPiA+IG9mIHRoZSBsaWJyYXJ5IHdlIG5lZWQuIFdlIGFsd2F5 cyBrbm93DQo+IHdoaWNoDQo+ID4gPiBlbmRpYW5uZXNzIHdlIGFyZQ0KPiA+ID4gPiA+ID4gPiA+ IGJ1aWxkaW5nIGZvci4NCj4gPiA+ID4gPiA+ID4gPiBXaGF0IHdlIG5lZWQgaXMgYSBieXRlc3dh cHBpbmcgZmxhdm91ciBvZg0KPiA+ID4gSW9MaWIuDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiBTbyBMaW1pbmcsIHdoYXQgaWYgd2UgZG8gc29tZXRoaW5nIGxpa2UNCj4gYWRkaW5n DQo+ID4gPiBhDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+DQo+IE1kZVBrZy9MaWJyYXJ5L0Jhc2VJ b0xpYkludHJpbnNpYy9CYXNlSW9MaWJJbnRyaW5zaWNTd2ENCj4gPiA+ID4gPiA+ID4gPiBwLmlu Zg0KPiA+ID4gPiA+ID4gPiA+IC0tLQ0KPiA+ID4gPiA+ID4gPiA+IFtEZWZpbmVzXQ0KPiA+ID4g PiA+ID4gPiA+ICAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAgICAgID0NCj4gMHgwMDAxMDAx QQ0KPiA+ID4gPiA+ID4gPiA+ICAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0NCj4g PiA+ID4gPiA+ID4gPiBCYXNlSW9MaWJJbnRyaW5zaWNTd2FwDQo+ID4gPiA+ID4gPiA+ID4gICBN T0RVTEVfVU5JX0ZJTEUgICAgICAgICAgICAgICAgPQ0KPiA+ID4gPiA+ID4gPiA+IEJhc2VJb0xp YkludHJpbnNpYy51bmkNCj4gPiA+ID4gPiA+ID4gPiAgIEZJTEVfR1VJRCAgICAgICAgICAgICAg ICAgICAgICA9DQo+IGQ0YTYwZDQ0LQ0KPiA+ID4gMzY4OC00YTUwLQ0KPiA+ID4gPiA+ID4gPiA+ IGIyZDAtNWM2ZmMyNDIyNTIzDQo+ID4gPiA+ID4gPiA+ID4gICBNT0RVTEVfVFlQRSAgICAgICAg ICAgICAgICAgICAgPSBCQVNFDQo+ID4gPiA+ID4gPiA+ID4gICBWRVJTSU9OX1NUUklORyAgICAg ICAgICAgICAgICAgPSAxLjANCj4gPiA+ID4gPiA+ID4gPiAgIExJQlJBUllfQ0xBU1MgICAgICAg ICAgICAgICAgICA9IElvTGliDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPg0KPiA+ ID4gPiA+ID4gPiA+ICMNCj4gPiA+ID4gPiA+ID4gPiAjICBWQUxJRF9BUkNISVRFQ1RVUkVTICAg ICAgICAgICA9IElBMzIgWDY0DQo+IEVCQw0KPiA+ID4gSVBGIEFSTQ0KPiA+ID4gPiA+ID4gPiA+ IEFBUkNINjQNCj4gPiA+ID4gPiA+ID4gPiAjDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ ID4gPiBbU291cmNlc10NCj4gPiA+ID4gPiA+ID4gPiAgIEJhc2VJb0xpYkludHJpbnNpY0ludGVy bmFsLmgNCj4gPiA+ID4gPiA+ID4gPiAgIElvSGlnaExldmVsLmMNCj4gPiA+ID4gPiA+ID4gPiAg IElvTGliLmMNCj4gPiA+ID4gPiA+ID4gPiAgIElvTGliRWJjLmMgICAgICAgICAjIEFzc2VydHMg b24gYWxsIGkvbw0KPiBwb3J0DQo+ID4gPiBhY2Nlc3Nlcw0KPiA+ID4gPiA+ID4gPiA+ICAgSW9M aWJNbWlvQnVmZmVyLmMNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IFtQYWNrYWdl c10NCj4gPiA+ID4gPiA+ID4gPiAgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4gPiA+ID4gPiA+ID4N Cj4gPiA+ID4gPiA+ID4gPiBbTGlicmFyeUNsYXNzZXNdDQo+ID4gPiA+ID4gPiA+ID4gICBEZWJ1 Z0xpYg0KPiA+ID4gPiA+ID4gPiA+ICAgQmFzZUxpYg0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gW0J1aWxkT3B0aW9uc10NCj4gPiA+ID4gPiA+ID4gPiAgIEdDQzoqXypfKl9DQ19G TEFHUyAgPSAtRFNXQVBfQllURVMNCj4gPiA+ID4gPiA+ID4gPiAtLS0NCj4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+IEFuZCB0aGVuIGFkZA0KPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ ID4gPiA+ID4gI2lmZGVmIFNXQVBfQllURVMNCj4gPiA+ID4gPiA+ID4gPiAgIHJldHVybiBTd2Fw Qnl0ZXNYWCAoVmFsdWUpOw0KPiA+ID4gPiA+ID4gPiA+ICNlbHNlDQo+ID4gPiA+ID4gPiA+ID4g ICByZXR1cm4gVmFsdWU7DQo+ID4gPiA+ID4gPiA+ID4gI2ZpDQo+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiBmb3IgdGhlIHJlYWQgb3BlcmF0aW9ucyBhbmQNCj4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+ICNpZmRlZiBTV0FQX0JZVEVTDQo+ID4gPiA+ID4gPiA+ID4gICAq KHR5cGUpQWRkcmVzcyA9IFN3YXBCeXRlc1hYIChWYWx1ZSk7DQo+ICNlbHNlDQo+ID4gPiA+ID4g PiA+ID4gICAqKHR5cGUpQWRkcmVzcyA9IFZhbHVlOw0KPiA+ID4gPiA+ID4gPiA+ICNmaQ0KPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gZm9yIHRoZSB3cml0ZSBvcGVyYXRpb25zIGlu IElvTGliLmM/DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiAvDQo+ID4gPiA+ID4g PiA+ID4gICAgIExlaWYNCj4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+IE9uIE1vbiwg Tm92IDI3LCAyMDE3IGF0IDA2OjA2OjMzQU0gKzAwMDAsDQo+ID4gPiBNZWVuYWtzaGkgQWdnYXJ3 YWwNCj4gPiA+ID4gPiA+ID4gPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+IEhpIExlaWYsDQo+ ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gVGhpcyBpcyByZWdhcmRpbmcgQmln LUVuZGlhbiBMaWJyYXJ5DQo+IHBhdGNoDQo+ID4gPiAoW1BBVENIIHYyDQo+ID4gPiA+ID4gPiA+ ID4gMS85XQ0KPiA+ID4gPiA+ID4gPiA+ID4gUGxhdGZvcm0vTlhQOiBBZGQgc3VwcG9ydCBmb3Ig QmlnIEVuZGlhbg0KPiBNbWlvDQo+ID4gPiBBUElzKQ0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+IFdlIGhhdmUgc3RhcnRlZCB0aGlzIGRpc2N1c3Npb24gYmVmb3JlDQo+IGFu ZA0KPiA+ID4gdGhlDQo+ID4gPiA+ID4gPiA+ID4gc3VnZ2VzdGlvbiB3YXMgdG8NCj4gPiA+ID4g PiA+ID4gPiA+IGNyZWF0ZSBhIHNlcGFyYXRlIC5pbmYgZmlsZSBrZWVwaW5nIEFQSXMNCj4gbmFt ZQ0KPiA+ID4gc2FtZSBlLmcuDQo+ID4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZC9NbWlvV3JpdGUg aW4gTWRlUGtnLg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+IEJ1dCB3ZSBj YW4ndCBnbyB3aXRoIHRoaXMgYXBwcm9hY2gNCj4gKHJlYXNvbg0KPiA+ID4gbWVudGlvbmVkDQo+ ID4gPiA+ID4gPiA+ID4gYnkgVWRpdCkuDQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gU28gcGxlYXNlIHN1Z2dlc3QgaWYgd2Ugc2hvdWxkIGtlZXAgdGhpcw0KPiA+ID4gbGli cmFyeQ0KPiA+ID4gPiA+ID4gPiA+IHVuZGVyIFBsYXRmb3JtL05YUA0KPiA+ID4gPiA+ID4gPiA+ ID4gb3IgSSBzZW5kIGEgbmV3IHBhdGNoIG1vdmluZyB0aGlzIGxpYnJhcnkNCj4gaW4NCj4gPiA+ IE1kZVBrZy4NCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBCdXQgd2UgaGF2 ZSB0byBrZWVwIGEgZGlmZmVyZW50IG5hbWUgZm9yDQo+IEJpZw0KPiA+ID4gRW5kaWFuDQo+ID4g PiA+ID4gPiA+ID4gTU1JTyBBUElzLg0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4g PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiBUaGFua3MsDQo+ID4gPiA+ID4gPiA+ID4gPiBNZWVuYWtz aGkNCj4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBGcm9t OiBVZGl0IEt1bWFyDQo+ID4gPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IE1vbmRheSwgT2N0b2JlciAy MywgMjAxNyAxMjozOCBQTQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiBUbzogR2FvLCBMaW1pbmcgPGxp bWluZy5nYW9AaW50ZWwuY29tPjsNCj4gPiA+IE1lZW5ha3NoaQ0KPiA+ID4gPiA+ID4gPiA+IEFn Z2Fyd2FsDQo+ID4gPiA+ID4gPiA+ID4gPiA+IDxtZWVuYWtzaGkuYWdnYXJ3YWxAbnhwLmNvbT47 IEFyZA0KPiA+ID4gQmllc2hldXZlbA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA8YXJkLmJpZXNoZXV2 ZWxAbGluYXJvLm9yZz47IEtpbm5leSwNCj4gPiA+IE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBlZGsyLQ0KPiA+ID4gPiA+ID4gPiA+ IGRldmVsQGxpc3RzLjAxLm9yZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiBTdWJqZWN0OiBSRTogW2Vk azJdIFtQQVRDSCAxLzFdDQo+ID4gPiBNZGVQa2cvSW9MaWI6IEFkZA0KPiA+ID4gPiA+ID4gPiA+ IHN1cHBvcnQgZm9yIGJpZy1lbmRpYW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gTU1JTw0KPiA+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBIaSBNZWVuYWtzaGkvTGltaW5nLA0K PiA+ID4gPiA+ID4gPiA+ID4gPiBNeSAyIGNlbnRzLCBhcm91bmQgdGhpcy4NCj4gPiA+ID4gPiA+ ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gMSkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gSGF2 aW5nIGEgbmV3IGxpYiBmb3IgQkUgcmVhZCBtaWdodCBub3QNCj4gYmUNCj4gPiA+IGhlbHBmdWwN Cj4gPiA+ID4gPiA+ID4gPiBmb3IgdXMsIGUuZy4gYSBJUCB3aGljaCBpcyBpbg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiBCRSBtb2RlIGFjY2VzcyB0aGUgVUFSVCBmb3IgcHJpbnQgb3INCj4gc3lzdGVt DQo+ID4gPiA+ID4gPiA+ID4gcmVnaXN0ZXJzIHdoaWNoIGFyZSBpbiBMRSwgdGhlbg0KPiA+ID4g PiA+ID4gPiA+ID4gPiB3aXRoIG5ldyBMaWIsIHdlIHdpbGwgZ2V0IGFsbA0KPiByZWFkL3dyaXRl IGluDQo+ID4gPiBCRSBtb2RlDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4g PiA+IDIpDQo+ID4gPiA+ID4gPiA+ID4gPiA+IEVzcGVjaWFsbHkgZm9yIG91ciBJUHMsIHdoaWNo IGFyZQ0KPiBjaGFuZ2luZw0KPiA+ID4gZnJvbSBCRQ0KPiA+ID4gPiA+ID4gPiA+IHRvIExFIGRl cGVuZGluZyBvbg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBwbGF0Zm9ybS4NCj4gPiA+ID4gPiA+ID4g PiA+ID4gQXMgc2FpZCBiZWZvcmUsIGhhdmluZyBCRSByZWFkIGxpYiB3aXRoDQo+IEFQSQ0KPiA+ ID4gbmFtZSBvZg0KPiA+ID4gPiA+ID4gPiA+IE1taW9SZWFkMzIgZXRjLCB3aWxsIG5vdA0KPiA+ ID4gPiA+ID4gPiA+ID4gPiBoZWxwIChJIGd1ZXNzIE1lZW5ha3NoaSBhbHJlYWR5IHNlZW4NCj4g c29tZQ0KPiA+ID4gcHJvYmxlbXMNCj4gPiA+ID4gPiA+ID4gPiBhcm91bmQgdGhpcykgQWRkaW5n IGENCj4gPiA+ID4gPiA+ID4gPiA+ID4gbmV3IGxpYiB3aXRoIE1taW9SZWFkMzJCRSBBUEkgbmFt ZQ0KPiBjb3VsZA0KPiA+ID4gaGVscCwgYnV0DQo+ID4gPiA+ID4gPiA+ID4gSVAgZHJpdmVyIHdl IG5lZWQgdG8NCj4gPiA+ID4gPiA+ID4gPiA+ID4gdGFrZSBjYXJlIG9mIElQIG1vZGUgZWl0aGVy IGJ5IFBjZCBvcg0KPiA+ID4gI2RlZmluZSwgdG8NCj4gPiA+ID4gPiA+ID4gPiBzZWxlY3QgTW1p b1JlYWQzMiBvcg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBNbWlvUmVhZDMyQkUuDQo+ID4gPiA+ID4g PiA+ID4gPiA+IFRoaXMgY29uZGl0aW9uYWwgY29tcGlsZSBuZWVkcyB0byBiZQ0KPiBkb25lDQo+ ID4gPiBmb3IgYWxsDQo+ID4gPiA+ID4gPiA+ID4gSVBzICh3aGljaCB3b3JrcyBpbiBCRS9MRQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiBtb2RlIG9uIGRpZmZlcmVudCBwbGF0Zm9ybXMpLg0KPiA+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiBNeSBwcmVmZXJyZWQgd2F5IG9mIGlt cGxlbWVudGF0aW9uIHRvDQo+IHVzZQ0KPiA+ID4gb25lDQo+ID4gPiA+ID4gPiA+ID4gZnVuY3Rp b24gaW4gSVAgZHJpdmVyLCBBbmQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gYmFzZWQgb24gSVAgbW9k ZSwgZG8gdGhlIHN3aXRjaC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gTmV3IExpYiBjb3VsZCBoYXZlIGZ1bmN0aW9uIGxpa2UgYmVsb3cNCj4gPiA+ID4gPiA+ID4g PiA+ID4gTW1pb1JlYWQzMkdlbmVyaWMoSU4gIFVJTlRODQo+IEFkZHJlc3MsDQo+ID4gPiBCT09M DQo+ID4gPiA+ID4gPiA+ID4gSXNJUEJFKSB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgIFVJTlQz Mg0KPiBWYWx1ZTsNCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gICAg QVNTRVJUICgoQWRkcmVzcyAmIDMpID09IDApOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICBWYWx1 ZSA9ICoodm9sYXRpbGUgVUlOVDMyKilBZGRyZXNzOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiAgICBJ ZihJc0lQQkUpDQo+ID4gPiA+ID4gPiA+ID4gPiA+ICAgICAgVmFsdWUgPSBTd2FwQnl0ZXMzMihW YWx1ZSk7DQo+IHJldHVybg0KPiA+ID4gVmFsdWU7IH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gQW5kIElQIGRyaXZlciBjYW4gdXNlIGl0DQo+ID4gPiA+ID4gPiA+ ID4gPiA+IE1taW9SZWFkMzJHZW5lcmljKEFERFIsDQo+ID4gPiA+ID4gPiA+ID4gPiA+DQo+IEZp eGVkUGNkR2V0KFRoaXNfSVBfTW9kZV9Gb3JfVGhpc19wbGF0Zm9ybSkNCj4gPiA+ID4gPiA+ID4g PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gQ29tbWVudHMgYXJlIHdlbGNvbWUuDQo+ID4gPiA+ ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+IFJlZ2FyZHMNCj4gPiA+ID4gPiA+ID4g PiA+ID4gVWRpdA0KPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IC0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gRnJvbTogZWRr Mi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtDQo+ID4gPiA+ID4gPiA+ID4gYm91bmNlc0BsaXN0 cy4wMS5vcmddIE9uIEJlaGFsZiBPZg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEdhbywgTGltaW5n DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDE2LCAyMDE3IDg6 NDgNCj4gQU0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBUbzogTWVlbmFrc2hpIEFnZ2Fyd2FsDQo+ ID4gPiA+ID4gPiA+ID4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29tPjsgQXJkDQo+IEJpZXNo ZXV2ZWwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA8YXJkLmJpZXNoZXV2ZWxAbGluYXJvLm9yZz47 IEtpbm5leSwNCj4gPiA+IE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDxtaWNoYWVs LmQua2lubmV5QGludGVsLmNvbT47IGVkazItDQo+ID4gPiA+ID4gPiA+ID4gZGV2ZWxAbGlzdHMu MDEub3JnDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0gg MS8xXQ0KPiA+ID4gTWRlUGtnL0lvTGliOiBBZGQNCj4gPiA+ID4gPiA+ID4gPiBzdXBwb3J0IGZv cg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGJpZy1lbmRpYW4gTU1JTw0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gTWVlbmFrc2hpOg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ICAgSSBzdWdnZXN0IHRvIGludHJvZHVjZSBuZXcgSW9MaWINCj4gPiA+IGxpYnJhcnkN Cj4gPiA+ID4gPiA+ID4gPiBpbnN0YW5jZSwgbm90IHRvIGFkZCBuZXcgSW9MaWINCj4gPiA+ID4g PiA+ID4gPiA+ID4gQVBJcy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBOZXcgSW9MaWIgbGlicmFy eSBpbnN0YW5jZSB3aWxsDQo+IHBlcmZvcm0NCj4gPiA+IElPDQo+ID4gPiA+ID4gPiA+ID4gb3Bl cmF0aW9uIGFzIHRoZSBiaWcNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBlbmRpYW4uIFlvdSBjYW4g dXBkYXRlDQo+ID4gPiA+ID4gPiA+ID4gTWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2lj IGluc3RhbmNlLA0KPiBhZGQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBuZXcgc291cmNlIGZpbGUg YW5kIG5ldyBJTkYgZm9yIGl0Lg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gVUlOVDMyDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gRUZJQVBJDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gTW1pb1JlYWQzMiAoDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICBJTiAgVUlO VE4gICAgIEFkZHJlc3MNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgICkNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiB7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICBVSU5UMzINCj4gPiA+IFZhbHVlOw0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICBBU1NFUlQgKChB ZGRyZXNzICYgMykgPT0gMCk7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gICBWYWx1ZSA9ICoodm9s YXRpbGUgVUlOVDMyKilBZGRyZXNzOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ICAgcmV0dXJuIFN3 YXBCeXRlczMyKFZhbHVlKTsgfQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gVGhhbmtzDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gTGltaW5nDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPkZyb206IE1lZW5ha3NoaSBBZ2dhcndhbA0KPiA+ID4gPiA+ID4gPiA+IFttYWlsdG86 bWVlbmFrc2hpLmFnZ2Fyd2FsQG54cC5jb21dDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPlNlbnQ6 IEZyaWRheSwgT2N0b2JlciAxMywgMjAxNyAyOjA3DQo+IFBNDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPlRvOiBBcmQgQmllc2hldXZlbA0KPiA+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5vcmc+ Ow0KPiA+ID4gPiA+ID4gPiA+IEtpbm5leSwgTWljaGFlbCBEDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPjxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IGVkazItDQo+ID4gPiA+ID4gPiA+ID4g ZGV2ZWxAbGlzdHMuMDEub3JnOyBHYW8sIExpbWluZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID48 bGltaW5nLmdhb0BpbnRlbC5jb20+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPlN1YmplY3Q6IFJF OiBbZWRrMl0gW1BBVENIIDEvMV0NCj4gPiA+IE1kZVBrZy9Jb0xpYjoNCj4gPiA+ID4gPiA+ID4g PiBBZGQgc3VwcG9ydCBmb3INCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+YmlnLWVuZGlhbiBNTUlP DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID5IaSBBbGws DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+SXTigJlzIGEgcHJldHR5IG9sZCBkaXNjdXNzaW9uLCB3ZQ0KPiBo YXZlDQo+ID4gPiBsZWZ0IHRoZQ0KPiA+ID4gPiA+ID4gPiA+IHVwc3RyZWFtaW5nIG9mIE5YUA0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID5wYWNrYWdlIGluIGJldHdlZW4gYmVjYXVzZSBvZiBzb21l DQo+IG90aGVyDQo+ID4gPiB3b3JrLA0KPiA+ID4gPiA+ID4gPiA+IGJ1dCBoYXZlIHN0YXJ0ZWQg aXQNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+YWdhaW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBu b3cuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiA+SXNzdWUgIDogRmV3IE5YUCBtb2R1bGVzIHN1cHBvcnQgQmln DQo+ID4gPiBFbmRpYW4NCj4gPiA+ID4gPiA+ID4gPiBNTUlPcyBhcyB0aGVzZSBhcmUgcG9ydGVk DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPmZyb20gUG93ZXJQQy4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPlNvbHV0aW9uIHN1Z2dlc3RlZCA6IENyZWF0 ZSBhDQo+IHNlcGFyYXRlDQo+ID4gPiBsaWJyYXJ5DQo+ID4gPiA+ID4gPiA+ID4gZm9yIEJFIE1N SU8gQVBJcy4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID5TbyB3aGF0IEkgaGF2ZSBkb25lIGlzLCBJIGhhdmUN Cj4gY3JlYXRlZCBhDQo+ID4gPiA+ID4gPiA+ID4gc2VwYXJhdGUgbGlicmFyeSB0byBzdXBwb3J0 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPkJFIE1NSU8gQVBJcyBhbmQgY3VycmVudGx5IGtlZXBp bmcNCj4gaXQgdG8NCj4gPiA+IG15DQo+ID4gPiA+ID4gPiA+ID4gcGFja2FnZS4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+VGhpcyBsaWJyYXJ5IGlzIGJhc2ljYWxseSBhIHdyYXBwZXINCj4gb3Zl cg0KPiA+ID4gPiA+ID4gPiA+IGV4aXN0aW5nIE1NSU8gQVBJcy4NCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPlVJTlQzMg0KPiA+ID4gPiA+ID4gPiA+ID4g PiA+ID5FRklBUEkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+QmVNbWlvUmVhZDMyICgNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ICBJTiAgVUlOVE4gICAgIEFkZHJlc3MNCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+ICApDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPnsNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ICBVSU5UMzIgIFZhbHVlOw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+ICBWYWx1ZSA9IE1taW9SZWFkMzIoQWRkcmVzcyk7DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4gIHJldHVybiBTd2FwQnl0ZXMz MihWYWx1ZSk7IH0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID5OZWVkIHlvdXIgb3BpbmlvbiBvbiBiZWxvdyBv cHRpbm9zOg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+ MS4gV2lsbCB0aGlzIGJlIGEgZ29vZCBpZGVhIHRvIG1ha2UNCj4gdGhpcw0KPiA+ID4gbGlicmFy eQ0KPiA+ID4gPiA+ID4gPiA+IGEgcGFydCBvZiBNZGVQa2c/IE9SDQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4yLiBBZGQgYSBuZXcgZmlsZSBlLmcuIElv QmVNbWlvLmMNCj4gbGlrZQ0KPiA+ID4gPiA+ID4gPiA+IElvSGlnaExldmVsLmMgaW4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+TWRlUGtnL0xpYnJhcnkvQmFzZUlvTGliSW50cmluc2ljLw0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gQW5kIG1hZGUgdGhlc2UgQVBJcyBhIHBhcnQgb2YgSW9MaWIN Cj4gPiA+IGl0c2VsZi4gT1INCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gPjMuIEtlZXAgdGhpcyBsaWJyYXJ5IGludGVybmFsIHRvIE5YUA0KPiA+ID4gcGFj a2FnZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID5QbGVhc2UgcHJvdmlkZSB5b3VyIGlucHV0cy4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g PiA+ID4gPiA+ID5UaGFua3MgJiBSZWdhcmRzLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID5NZWVu YWtzaGkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBGcm9t OiBCaHVwZXNoIFNoYXJtYQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+IFNlbnQ6IE1vbmRheSwg T2N0b2JlciAxNywgMjAxNg0KPiAzOjI4IFBNDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gVG86 IEFyZCBCaWVzaGV1dmVsDQo+ID4gPiA+ID4gPiA+ID4gPGFyZC5iaWVzaGV1dmVsQGxpbmFyby5v cmc+OyBLaW5uZXksDQo+IE1pY2hhZWwgRA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+IDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBDYzogR2Fv LCBMaW1pbmcNCj4gPiA+IDxsaW1pbmcuZ2FvQGludGVsLmNvbT47IGVkazItDQo+ID4gPiA+ID4g PiA+ID4gZGV2ZWxAbWwwMS4wMS5vcmc7DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gTWVlbmFr c2hpIEFnZ2Fyd2FsDQo+ID4gPiA+ID4gPiA+ID4gPG1lZW5ha3NoaS5hZ2dhcndhbEBueHAuY29t Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIIDEv MV0NCj4gPiA+IE1kZVBrZy9Jb0xpYjoNCj4gPiA+ID4gPiA+ID4gPiBBZGQgc3VwcG9ydCBmb3IN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBiaWctZW5kaWFuIE1NSU8NCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+IEhpIEFyZCwNCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiA+Pg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IEZyb206IEFyZCBCaWVzaGV1 dmVsDQo+ID4gPiA+ID4gPiA+ID4gW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnXQ0K PiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gU2VudDogTW9uZGF5LCBPY3RvYmVyIDE3LCAyMDE2 DQo+IDE6MTINCj4gPiA+IFBNDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBUbzogS2lubmV5 LCBNaWNoYWVsIEQNCj4gPiA+ID4gPiA+ID4gPiA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+ DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBDYzogR2FvLCBMaW1pbmcNCj4gPiA+IDxsaW1p bmcuZ2FvQGludGVsLmNvbT47DQo+ID4gPiA+ID4gPiA+ID4gQmh1cGVzaCBTaGFybWENCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+PiA+IDxiaHVwZXNoLnNoYXJtYUBueHAuY29tPjsgZWRrMi0NCj4g PiA+ID4gPiA+ID4gPiBkZXZlbEBtbDAxLjAxLm9yZw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ ID4gU3ViamVjdDogUmU6IFtlZGsyXSBbUEFUQ0ggMS8xXQ0KPiA+ID4gPiA+ID4gPiA+IE1kZVBr Zy9Jb0xpYjogQWRkIHN1cHBvcnQgZm9yDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBiaWct IGVuZGlhbiBNTUlPDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPg0KPiA+ID4gPiA+ID4gPiA+ ID4gPiA+ID4+ID4gT24gMTcgT2N0b2JlciAyMDE2IGF0IDA1OjEwLA0KPiBLaW5uZXksDQo+ID4g PiBNaWNoYWVsDQo+ID4gPiA+ID4gPiA+ID4gRA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4g PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiB3cm90ZToNCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiA+PiA+ID4gQmh1cGVzaCwNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4NCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBhZGQgYW4NCj4g QVJNDQo+ID4gPiBzcGVjaWZpYw0KPiA+ID4gPiA+ID4gPiA+IFBDRCB0byBzZWxlY3QNCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gZW5kaWFubmVzcyBhbmQgdXBkYXRlDQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPj4gPiA+DQo+ID4gPiA+ID4gPiA+ID4NCj4gTWRlUGtnL0xpYnJhcnkvQmFz ZUlvTGliSW50cmluc2ljL0lvTGliQXJtLmMgdG8NCj4gPiA+IHVzZSB0aGF0IFBDRCBpbg0KPiA+ ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gPiBNbWlvUmVhZC9Xcml0ZSgpIEFQSXMgaW4gdGhhdA0K PiBmaWxlDQo+ID4gPiB0bw0KPiA+ID4gPiA+ID4gPiA+IHN1cHBvcnQgYm90aCBlbmRpYW4gdHlw ZXMuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiA+IFlvdSBjYW4gdXNlIHRoZSBTd2FwQnl0 ZXN4eCgpDQo+ID4gPiBmdW5jdGlvbnMNCj4gPiA+ID4gPiA+ID4gPiBmcm9tIEJhc2VMaWIoYXMN Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+IExhc3psbw0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4+ID4gPiBzdWdnZXN0ZWQpIGJhc2VkIG9uIHRoZQ0KPiBzZXR0aW5nIG9mDQo+ID4gPiB0aGlz DQo+ID4gPiA+ID4gPiA+ID4gQVJNIHNwZWNpZmljIFBDRC4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gTW9kdWxlcyB0aGF0IGxpbmsg YWdhaW5zdCB0aGlzDQo+IGxpYg0KPiA+ID4gY2FuDQo+ID4gPiA+ID4gPiA+ID4gc2VsZWN0IGVu ZGlhbm5lc3MgYnkNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gc2V0dGluZyBQQ0QgaW4g dGhlIHNjb3BlIG9mDQo+IHRoYXQNCj4gPiA+IG1vZHVsZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4g PiA+PiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gVGhlIElQRiB2ZXJzaW9uIG9m IElvTGliIHVzZXMNCj4gYW4NCj4gPiA+IElQRg0KPiA+ID4gPiA+ID4gPiA+IHNwZWNpZmljIFBD RCB0byB0cmFuc2xhdGUNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gSS9PIHBvcnQgYWNj ZXNzZXMgdG8gTU1JTw0KPiA+ID4gYWNjZXNzZXMuICBTbw0KPiA+ID4gPiA+ID4gPiA+IHRoZXJl IGlzIGFscmVhZHkgYW4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4gZXhhbXBsZSBvZiBh biBhcmNoIHNwZWNpZmljDQo+IFBDRCBpbg0KPiA+ID4gdGhpcw0KPiA+ID4gPiA+ID4gPiA+IGxp YiBpbnN0YW5jZS4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+ID4NCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiA+PiA+DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiBUaGlzIGlzIG5vdCBhIHBs YXRmb3JtIHdpZGUNCj4gdGhpbmcsDQo+ID4gPiBpdCBpcyBhDQo+ID4gPiA+ID4gPiA+ID4gcGVy LWRldmljZSBwcm9wZXJ0eQ0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gd2hldGhlciB0aGUg TU1JTyBvY2N1cnMgaW4gYmlnDQo+ID4gPiBlbmRpYW4gb3INCj4gPiA+ID4gPiA+ID4gPiBsaXR0 bGUgZW5kaWFuIG1hbm5lci4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiA+DQo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gPj4gPiBTbyBJIHRoaW5rIExpbWluZydzIHN1Z2dlc3Rpb24NCj4gbWFrZXMN Cj4gPiA+IHNlbnNlOg0KPiA+ID4gPiA+ID4gPiA+IGNyZWF0ZSBhbiBJb0xpYg0KPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ID4+ID4gaW1wbGVtZW50YXRpb24gdGhhdCBwZXJmb3JtcyB0aGUNCj4gPiA+ IGJ5dGUNCj4gPiA+ID4gPiA+ID4gPiBzd2FwcGluZywgYW5kIHNlbGVjdGl2ZWx5DQo+ID4gPiA+ ID4gPiA+ID4gPiA+ID4gPj4gPiBpbmNvcnBvcmF0ZSBpdCBpbnRvIGRyaXZlcnMgdGhhdA0KPiA+ ID4gcmVxdWlyZSBpdA0KPiA+ID4gPiA+ID4gPiA+IHVzaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gPj4gPg0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ID4+ID4gQmVNbWlvRGV2aWNlRHhlLmluZiB7 DQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiAgIDxMaWJyYXJ5Q2xhc3Nlcz4NCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiA+PiA+DQo+ID4gPiBJb0xpYnxTb21lUGtnL0xpYnJhcnkvQmlnRW5kaWFu SW9MaWIuaW5mDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gPiB9DQo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBUaGF0J3MgY29ycmVjdC4gSSB0aGlu ayBjcmVhdGluZyBhDQo+ID4gPiBzZXBhcmF0ZQ0KPiA+ID4gPiA+ID4gPiA+IElvTGliIGZvciBi eXRlLXN3YXBwaW5nDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4gbWFrZXMgc2Vuc2UuDQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gPj4NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBXZSB3aWxsIHJl d29yayB0aGUgcGF0Y2gNCj4gYWNjb3JkaW5nbHkuDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gPj4N Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiA+PiBSZWdhcmRzLA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+ ID4+IEJodXBlc2gNCj4gPiA+ID4gPiA+ID4gPiA+ID4gPg0KPiA+ID4gX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBl ZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnDQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPg0K PiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0 dHANCj4gPiA+IHMlM0ElMkYlMkZsDQo+ID4gPiA+ID4gPiBpc3QNCj4gPiA+ID4gPiA+IHMuMDEu b3JnJTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGZWRrMi0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+ ID4gPg0KPiBkZXZlbCZkYXRhPTAyJTdDMDElN0NtZWVuYWtzaGkuYWdnYXJ3YWwlNDBueHAuY29t JTdDNjk1ZTQNCj4gPiA+IDNjYmI1MQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+IGE0 NzFjZDQ0NjA4ZDUzNzYyMzBiMCU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JQ0K PiA+ID4gN0MwJTdDMA0KPiA+ID4gPiA+ID4NCj4gPiA+DQo+ICU3QzYzNjQ3NTgxNzIyMDY2MzYx MiZzZGF0YT1od1FoOGRmVWtWR3ptN3VRQjklMkZpcmV4bVlFaw0KPiA+ID4gZEVRDQo+ID4gPiA+ ID4gPiAlMkJ1OTc2MDZMJTJGSEVmZyUzRCZyZXNlcnZlZD0wDQo+ID4gPiA+ID4gPiA+ID4NCj4g X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4gPiA+ID4g PiA+ID4gPiBlZGsyLWRldmVsIG1haWxpbmcgbGlzdA0KPiA+ID4gPiA+ID4gPiA+IGVkazItZGV2 ZWxAbGlzdHMuMDEub3JnDQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPg0KPiBo dHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJsPWh0dHAN Cj4gPiA+IHMlM0ElMkYlMkZsDQo+ID4gPiA+ID4gPiBpc3QNCj4gPiA+ID4gPiA+IHMuMDEub3Jn JTJGbWFpbG1hbiUyRmxpc3RpbmZvJTJGZWRrMi0NCj4gPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4g Pg0KPiBkZXZlbCZkYXRhPTAyJTdDMDElN0NtZWVuYWtzaGkuYWdnYXJ3YWwlNDBueHAuY29tJTdD Njk1ZTQNCj4gPiA+IDNjYmI1MQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4NCj4gPiA+DQo+IGE0NzFj ZDQ0NjA4ZDUzNzYyMzBiMCU3QzY4NmVhMWQzYmMyYjRjNmZhOTJjZDk5YzVjMzAxNjM1JQ0KPiA+ ID4gN0MwJTdDMA0KPiA+ID4gPiA+ID4NCj4gPiA+DQo+ICU3QzYzNjQ3NTgxNzIyMDY2MzYxMiZz ZGF0YT1od1FoOGRmVWtWR3ptN3VRQjklMkZpcmV4bVlFaw0KPiA+ID4gZEVRDQo+ID4gPiA+ID4g PiAlMkJ1OTc2MDZMJTJGSEVmZyUzRCZyZXNlcnZlZD0wDQo+ID4gPiA+IF9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+ID4gPiA+IGVkazItZGV2ZWwgbWFp bGluZyBsaXN0DQo+ID4gPiA+IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+ID4gPiA+DQo+ID4g Pg0KPiBodHRwczovL2VtZWEwMS5zYWZlbGlua3MucHJvdGVjdGlvbi5vdXRsb29rLmNvbS8/dXJs PWh0dHANCj4gPiA+IHMlM0ElMkYlMkZsaXN0cy4wMQ0KPiA+ID4gPiAub3JnJTJGbWFpbG1hbiUy Rmxpc3RpbmZvJTJGZWRrMi0NCj4gPiA+ID4NCj4gPiA+DQo+IGRldmVsJmRhdGE9MDIlN0MwMSU3 Q3VkaXQua3VtYXIlNDBueHAuY29tJTdDZDA2MDE4MzM2YTA2NA0KPiA+ID4gOGZhOGU0NDANCj4g PiA+ID4NCj4gPiA+DQo+IDhkNTM4YWE1ZjE5JTdDNjg2ZWExZDNiYzJiNGM2ZmE5MmNkOTljNWMz MDE2MzUlN0MwJTdDMCU3Qw0KPiA+ID4gNjM2NDc3Mg0KPiA+ID4gPg0KPiA+ID4NCj4gMjY3NjEy NTMxMjQmc2RhdGE9YkFVJTJCT2lkYnpiS3c3Nk9PcTUlMkZVcGx3UWJvOGlNbkUzYWxIDQo+ID4g PiBZNHB0QVgNCj4gPiA+ID4gTVUlM0QmcmVzZXJ2ZWQ9MA0K