From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 192.55.52.136, mailfrom: tien.hock.loh@intel.com) Received: from mga12.intel.com (mga12.intel.com [192.55.52.136]) by groups.io with SMTP; Wed, 24 Apr 2019 00:04:31 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga003.fm.intel.com ([10.253.24.29]) by fmsmga106.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 24 Apr 2019 00:04:31 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,388,1549958400"; d="scan'208";a="151890419" Received: from kmsmsx151.gar.corp.intel.com ([172.21.73.86]) by FMSMGA003.fm.intel.com with ESMTP; 24 Apr 2019 00:04:30 -0700 Received: from pgsmsx110.gar.corp.intel.com ([169.254.13.159]) by KMSMSX151.gar.corp.intel.com ([169.254.10.147]) with mapi id 14.03.0415.000; Wed, 24 Apr 2019 14:58:28 +0800 From: tien.hock.loh@intel.com To: "Kinney, Michael D" , "Wu, Hao A" , "devel@edk2.groups.io" , "thloh85@gmail.com" CC: "Wang, Jian J" Subject: Re: [edk2-devel] [PATCH 1/1] MdeModulePkg: BaseSerialPortLib16550: Add Mmio32 support Thread-Topic: [edk2-devel] [PATCH 1/1] MdeModulePkg: BaseSerialPortLib16550: Add Mmio32 support Thread-Index: AQHU+kql5voTHrrZzU28cJMyWMPSFqZKHnoAgAAHRYD//gvFAA== Date: Wed, 24 Apr 2019 06:58:27 +0000 Message-ID: References: <1556075112-185791-1-git-send-email-tien.hock.loh@intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.226.242.120] MIME-Version: 1.0 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <5BC127E03189D040A5873EC1B96CA41D@intel.com> Content-Transfer-Encoding: base64 SGkgTWlrZSwgSGFvLA0KDQpSZXBsaWVzIGlubGluZWQuDQoNCk9uIFdlZCwgMjAxOS0wNC0yNCBh dCAwMzo0NSArMDAwMCwgTWljaGFlbCBEIEtpbm5leSB3cm90ZToNCj4gT25lIGlzc3VlIEkgc2Vl IGlzIHVzaW5nIGEgRmVhdHVyZUZsYWcgUENELg0KPiBUaGVzZSBQQ0RzIGNhbiBvbmx5IGJlIFRS VUUgb3IgRkFMU0UsIHNvIHRoZXkgY2FuIG5vdCBiZQ0KPiBleHRlbmRlZCBsYXRlci4gIEEgRml4 ZWRBdEJ1aWxkIFBDRCBvZiB0eXBlIEJPT0wgaGFzIHRoZSANCj4gc2FtZSBpc3N1ZS4NCj4gDQo+ IEl0IHdvdWxkIGJlIGJldHRlciB0byB1c2UgYSBVSU5UeCBGaXhlZEF0QnVpbGQgUENELCBhbmQg DQo+IGRlZmluZSBhIGJpdCBvciBhIHZhbHVlIGZvciAzMi1iaXQgYWNjZXNzLiAgVGhhdCB3YXks IGlmDQo+IHRoZXJlIGlzIGEgZGV2aWNlIHRoYXQgcmVxdWlyZXMgMTYtYml0IGFjY2VzcywgaXQg Y2FuIGJlDQo+IGFkZGVkIGluIHRoZSBzYW1lIFBDRC4NCj4gDQpPSyBub3RlZC4gSSdsbCB1cGRh dGUgd2l0aCBVSU5UOCwgYW5kIHNldCAweDAgdG8gZGVmYXVsdCA4Yml0cyBhbmQgMHgxDQp0byAz MiBiaXRzIGFjY2Vzcw0KDQo+IEFsc28sIHNob3VsZCB0aGUgbmV3IFBDRCBiZSBsaW1pdGVkIHRv IE1NSU8/ICBJdCBjb3VsZCBiZQ0KPiBhbiBhY2Nlc3Mgd2lkdGggUENEIHRoYXQgY291bGQgYmUg YXBwbGllZCB0byBJL08gb3IgTU1JTw0KPiBBY2Nlc3MuDQo+IA0KSSdtIG5vdCBzdXJlIGlmIHRo aXMgc2hvdWxkIGFmZmVjdCB0aGUgSS9PLiBJIHdvdWxkIHNlcGFyYXRlIHRoZSBJL08NCmFjY2Vz cyB3aXRoIE1NSU8gYWNjZXNzIHdpdGggZGlmZmVyZW50IFBDRCwgSSdsbCBza2lwIHRoaXMgZm9y IG5vdyBhcyBJDQpkb24ndCBoYXZlIHBsYXRmb3JtIHRoYXQgdXNlcyBJL08gc3BhY2UsIHRodXMg SSdtIHVuYWJsZSB0byB0ZXN0IHRoZQ0KY2hhbmdlcy4gDQoNCj4gTWlrZQ0KPiANCj4gPiAtLS0t LU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+IEZyb206IGRldmVsQGVkazIuZ3JvdXBzLmlvIFtt YWlsdG86ZGV2ZWxAZWRrMi5ncm91cHMuaW9dDQo+ID4gT24gQmVoYWxmIE9mIFd1LCBIYW8gQQ0K PiA+IFNlbnQ6IFR1ZXNkYXksIEFwcmlsIDIzLCAyMDE5IDg6MjAgUE0NCj4gPiBUbzogTG9oLCBU aWVuIEhvY2sgPHRpZW4uaG9jay5sb2hAaW50ZWwuY29tPjsNCj4gPiBkZXZlbEBlZGsyLmdyb3Vw cy5pbzsgdGhsb2g4NUBnbWFpbC5jb20NCj4gPiBDYzogV2FuZywgSmlhbiBKIDxqaWFuLmoud2Fu Z0BpbnRlbC5jb20+DQo+ID4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggMS8xXSBN ZGVNb2R1bGVQa2c6DQo+ID4gQmFzZVNlcmlhbFBvcnRMaWIxNjU1MDogQWRkIE1taW8zMiBzdXBw b3J0DQo+ID4gDQo+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTog TG9oLCBUaWVuIEhvY2sNCj4gPiA+IFNlbnQ6IFdlZG5lc2RheSwgQXByaWwgMjQsIDIwMTkgMTE6 MDUgQU0NCj4gPiA+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgdGhsb2g4NUBnbWFpbC5jb20N Cj4gPiA+IENjOiBMb2gsIFRpZW4gSG9jazsgV2FuZywgSmlhbiBKOyBXdSwgSGFvIEENCj4gPiA+ IFN1YmplY3Q6IFtQQVRDSCAxLzFdIE1kZU1vZHVsZVBrZzoNCj4gPiANCj4gPiBCYXNlU2VyaWFs UG9ydExpYjE2NTUwOiBBZGQgTW1pbzMyDQo+ID4gPiBzdXBwb3J0DQo+ID4gPiANCj4gPiA+IEZy b206ICJUaWVuIEhvY2ssIExvaCIgPHRpZW4uaG9jay5sb2hAaW50ZWwuY29tPg0KPiA+ID4gDQo+ ID4gPiBTb21lIGJ1c3NlcyBkb2Vzbid0IGFsbG93IDggYml0IE1NSU8gcmVhZC93cml0ZSwgdGhp cw0KPiA+IA0KPiA+IGFkZHMgc3VwcG9ydCBmb3INCj4gPiA+IDMyIGJpdHMgcmVhZC93cml0ZQ0K PiA+IA0KPiA+IEhlbGxvIFRpZW4gSG9jaywNCj4gPiANCj4gPiBZb3VyIFYyIHBhdGNoIHNlZW1z IHRvIGJlIGJhc2VkIG9uIHlvdXIgVjEgcGF0Y2guDQo+ID4gDQo+ID4gQ291bGQgeW91IGhlbHAg dG8gdXBkYXRlIHRoZSBWMiBwYXRjaCB0byBiYXNlIG9uIHRoZSB0aXANCj4gPiBvZiB0aGUgZWRr Mg0KPiA+IG1hc3RlciBicmFuY2g/IFRoYW5rcy4NCj4gPiANCj4gPiBPbmUgZWFzeSB3YXkgdG8g ZG8gdGhpcyBpcyB0byBzcXVhc2ggdGhlIDIgY29tbWl0cyBpbnRvDQo+ID4gb25lLg0KPiA+IA0K WWVzIHNvcnJ5IEkgd2Fzbid0IGF3YXJlIEknbSBtYWtpbmcgcGF0Y2ggb24gdG9wIG9mIGEgcGF0 Y2guIA0KPiA+IA0KPiA+IFNvbWUgbWlub3IgY29tbWVudHM6DQo+ID4gQS4gUGxlYXNlIGhlbHAg dG8gdXBkYXRlIHRoZSBjb3B5cmlnaHQgeWVhciBmb3IgdGhlDQo+ID4gZmlsZXM6DQo+ID4gICAg QmFzZVNlcmlhbFBvcnRMaWIxNjU1MC5jDQo+ID4gICAgQmFzZVNlcmlhbFBvcnRMaWIxNjU1MC5p bmYNCj4gPiANCk9LIG5vdGVkLiBJJ2xsIHVwZGF0ZSB0aGUgY29weXJpZ2h0IHllYXIuDQoNCj4g PiBCLiBGb3IgQmFzZVNlcmlhbFBvcnRMaWIxNjU1MC5pbmYsIG1heWJlOg0KPiA+IA0KPiA+IGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTZXJpYWxNbWlvMzJCaXRBY2Nlc3MNCj4g PiAjIyBTT01FVElNRVNfQ09OU1VNRVMNCj4gPiANCk9LIG5vdGVkLg0KDQo+ID4gaXMgbW9yZSBh cHByb3ByaWF0ZSBoZXJlLg0KPiA+IA0KPiA+IEJlc3QgUmVnYXJkcywNCj4gPiBIYW8gV3UNCj4g PiANCj4gPiA+IA0KPiA+ID4gU2lnbmVkLW9mZi1ieTogIlRpZW4gSG9jaywgTG9oIg0KPiA+IA0K PiA+IDx0aWVuLmhvY2subG9oQGludGVsLmNvbT4NCj4gPiA+IENjOiBKaWFuIEogV2FuZyA8amlh bi5qLndhbmdAaW50ZWwuY29tPg0KPiA+ID4gQ2M6IEhhbyBXdSA8aGFvLmEud3VAaW50ZWwuY29t Pg0KPiA+ID4gDQo+ID4gPiAtLQ0KPiA+ID4gdjI6DQo+ID4gPiAtIFVwZGF0ZXMgdGhlIFBjZCBu YW1lIHRvIFBjZFNlcmlhbE1taW8zMkJpdEFjY2VzcyBhbmQNCj4gPiANCj4gPiBhY2Nlc3MgMzIg Yml0cw0KPiA+ID4gcmVnaXN0ZXIgaWYgUGNkU2VyaWFsVXNlTW1pbyBhbmQNCj4gPiANCj4gPiBQ Y2RTZXJpYWxNbWlvMzJCaXRBY2Nlc3MgaXMgc2V0DQo+ID4gPiAtLS0NCj4gPiA+ICAuLi4vQmFz ZVNlcmlhbFBvcnRMaWIxNjU1MC9CYXNlU2VyaWFsUG9ydExpYjE2NTUwLmMNCj4gPiA+IDE2ICsr KysrKysrLS0tLS0tLS0NCj4gPiA+ICAuLi4vQmFzZVNlcmlhbFBvcnRMaWIxNjU1MC9CYXNlU2Vy aWFsUG9ydExpYjE2NTUwLmluZg0KPiA+ID4gIDIgKy0NCj4gPiA+ICBNZGVNb2R1bGVQa2cvTWRl TW9kdWxlUGtnLmRlYw0KPiA+ID4gMTIgKysrKysrKy0tLS0tDQo+ID4gPiAgMyBmaWxlcyBjaGFu Z2VkLCAxNiBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkNCj4gPiA+IA0KPiA+ID4gZGlm ZiAtLWdpdA0KPiA+ID4gDQo+ID4gDQo+ID4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9CYXNlU2Vy aWFsUG9ydExpYjE2NTUwL0Jhc2VTZXJpYWxQDQo+ID4gb3J0TGliMTY1NTAuYw0KPiA+ID4gDQo+ ID4gDQo+ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9CYXNlU2VyaWFsUG9ydExpYjE2NTUwL0Jh c2VTZXJpYWxQDQo+ID4gb3J0TGliMTY1NTAuYw0KPiA+ID4gaW5kZXggYjI0MmIyMy4uZjkwZmI1 NSAxMDA2NDQNCj4gPiA+IC0tLQ0KPiA+IA0KPiA+IGEvTWRlTW9kdWxlUGtnL0xpYnJhcnkvQmFz ZVNlcmlhbFBvcnRMaWIxNjU1MC9CYXNlU2VyaWFsUA0KPiA+IG9ydExpYjE2NTUwLmMNCj4gPiA+ ICsrKw0KPiA+ID4gDQo+ID4gDQo+ID4gYi9NZGVNb2R1bGVQa2cvTGlicmFyeS9CYXNlU2VyaWFs UG9ydExpYjE2NTUwL0Jhc2VTZXJpYWxQDQo+ID4gb3J0TGliMTY1NTAuYw0KPiA+ID4gQEAgLTc2 LDEwICs3NiwxMCBAQCBTZXJpYWxQb3J0UmVhZFJlZ2lzdGVyICgNCj4gPiA+ICAgIFVJTlROICBP ZmZzZXQNCj4gPiA+ICAgICkNCj4gPiA+ICB7DQo+ID4gPiAtICBpZiAoUGNkR2V0Qm9vbCAoUGNk U2VyaWFsVXNlTW1pbzMyKSkgew0KPiA+ID4gLSAgICByZXR1cm4gKFVJTlQ4KSBNbWlvUmVhZDMy IChCYXNlICsgT2Zmc2V0ICoNCj4gPiANCj4gPiBQY2RHZXQzMg0KPiA+ID4gKFBjZFNlcmlhbFJl Z2lzdGVyU3RyaWRlKSk7DQo+ID4gPiAtICB9DQo+ID4gPiAtICBlbHNlIGlmIChQY2RHZXRCb29s IChQY2RTZXJpYWxVc2VNbWlvKSkgew0KPiA+ID4gKyAgaWYgKFBjZEdldEJvb2wgKFBjZFNlcmlh bFVzZU1taW8pKSB7DQo+ID4gPiArICAgIGlmIChQY2RHZXRCb29sIChQY2RTZXJpYWxNbWlvMzJC aXRBY2Nlc3MpKSB7DQo+ID4gPiArICAgICAgcmV0dXJuIChVSU5UOCkgTW1pb1JlYWQzMiAoQmFz ZSArIE9mZnNldCAqDQo+ID4gDQo+ID4gUGNkR2V0MzINCj4gPiA+IChQY2RTZXJpYWxSZWdpc3Rl clN0cmlkZSkpOw0KPiA+ID4gKyAgICB9DQo+ID4gPiAgICAgIHJldHVybiBNbWlvUmVhZDggKEJh c2UgKyBPZmZzZXQgKiBQY2RHZXQzMg0KPiA+IA0KPiA+IChQY2RTZXJpYWxSZWdpc3RlclN0cmlk ZSkpOw0KPiA+ID4gICAgfSBlbHNlIHsNCj4gPiA+ICAgICAgcmV0dXJuIElvUmVhZDggKEJhc2Ug KyBPZmZzZXQgKiBQY2RHZXQzMg0KPiA+IA0KPiA+IChQY2RTZXJpYWxSZWdpc3RlclN0cmlkZSkp Ow0KPiA+ID4gQEAgLTEwNiwxMCArMTA2LDEwIEBAIFNlcmlhbFBvcnRXcml0ZVJlZ2lzdGVyICgN Cj4gPiA+ICAgIFVJTlQ4ICBWYWx1ZQ0KPiA+ID4gICAgKQ0KPiA+ID4gIHsNCj4gPiA+IC0gIGlm IChQY2RHZXRCb29sIChQY2RTZXJpYWxVc2VNbWlvMzIpKSB7DQo+ID4gPiAtICAgIHJldHVybiBN bWlvV3JpdGUzMiAoQmFzZSArIE9mZnNldCAqIFBjZEdldDMyDQo+ID4gDQo+ID4gKFBjZFNlcmlh bFJlZ2lzdGVyU3RyaWRlKSwNCj4gPiA+IChVSU5UOClWYWx1ZSk7DQo+ID4gPiAtICB9DQo+ID4g PiAtICBlbHNlIGlmIChQY2RHZXRCb29sIChQY2RTZXJpYWxVc2VNbWlvKSkgew0KPiA+ID4gKyAg aWYgKFBjZEdldEJvb2wgKFBjZFNlcmlhbFVzZU1taW8pKSB7DQo+ID4gPiArICAgIGlmIChQY2RH ZXRCb29sIChQY2RTZXJpYWxNbWlvMzJCaXRBY2Nlc3MpKSB7DQo+ID4gPiArICAgICAgcmV0dXJu IChVSU5UOCkgTW1pb1dyaXRlMzIgKEJhc2UgKyBPZmZzZXQgKg0KPiA+IA0KPiA+IFBjZEdldDMy DQo+ID4gPiAoUGNkU2VyaWFsUmVnaXN0ZXJTdHJpZGUpLCAoVUlOVDgpVmFsdWUpOw0KPiA+ID4g KyAgICB9DQo+ID4gPiAgICAgIHJldHVybiBNbWlvV3JpdGU4IChCYXNlICsgT2Zmc2V0ICogUGNk R2V0MzINCj4gPiANCj4gPiAoUGNkU2VyaWFsUmVnaXN0ZXJTdHJpZGUpLA0KPiA+ID4gVmFsdWUp Ow0KPiA+ID4gICAgfSBlbHNlIHsNCj4gPiA+ICAgICAgcmV0dXJuIElvV3JpdGU4IChCYXNlICsg T2Zmc2V0ICogUGNkR2V0MzINCj4gPiANCj4gPiAoUGNkU2VyaWFsUmVnaXN0ZXJTdHJpZGUpLCBW YWx1ZSk7DQo+ID4gPiBkaWZmIC0tZ2l0DQo+ID4gPiANCj4gPiANCj4gPiBhL01kZU1vZHVsZVBr Zy9MaWJyYXJ5L0Jhc2VTZXJpYWxQb3J0TGliMTY1NTAvQmFzZVNlcmlhbFANCj4gPiBvcnRMaWIx NjU1MC5pbmYNCj4gPiA+IA0KPiA+IA0KPiA+IGIvTWRlTW9kdWxlUGtnL0xpYnJhcnkvQmFzZVNl cmlhbFBvcnRMaWIxNjU1MC9CYXNlU2VyaWFsUA0KPiA+IG9ydExpYjE2NTUwLmluZg0KPiA+ID4g aW5kZXggNTc1NzI4YS4uYzAzZDkwZCAxMDA2NDQNCj4gPiA+IC0tLQ0KPiA+ID4gDQo+ID4gDQo+ ID4gYS9NZGVNb2R1bGVQa2cvTGlicmFyeS9CYXNlU2VyaWFsUG9ydExpYjE2NTUwL0Jhc2VTZXJp YWxQDQo+ID4gb3J0TGliMTY1NTAuaW5mDQo+ID4gPiArKysNCj4gPiA+IA0KPiA+IA0KPiA+IGIv TWRlTW9kdWxlUGtnL0xpYnJhcnkvQmFzZVNlcmlhbFBvcnRMaWIxNjU1MC9CYXNlU2VyaWFsUA0K PiA+IG9ydExpYjE2NTUwLmluZg0KPiA+ID4gQEAgLTI5LDcgKzI5LDcgQEANCj4gPiA+ICAgIEJh c2VTZXJpYWxQb3J0TGliMTY1NTAuYw0KPiA+ID4gDQo+ID4gPiAgW1BjZF0NCj4gPiA+IC0gIGdF ZmlNZGVNb2R1bGVQa2dUb2tlblNwYWNlR3VpZC5QY2RTZXJpYWxVc2VNbWlvMzINCj4gPiANCj4g PiAjIw0KPiA+ID4gQ09OU1VNRVMNCj4gPiA+ICsNCj4gPiANCj4gPiBnRWZpTWRlTW9kdWxlUGtn VG9rZW5TcGFjZUd1aWQuUGNkU2VyaWFsTW1pbzMyQml0QWNjZXNzDQo+ID4gIyMNCj4gPiA+IENP TlNVTUVTDQo+ID4gPiAgICBnRWZpTWRlTW9kdWxlUGtnVG9rZW5TcGFjZUd1aWQuUGNkU2VyaWFs VXNlTW1pbw0KPiA+IA0KPiA+ICMjDQo+ID4gPiBDT05TVU1FUw0KPiA+ID4gDQo+ID4gDQo+ID4g Z0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNlcmlhbFVzZUhhcmR3YXJlRmxvd0Nv DQo+ID4gbnRyb2wgICMjDQo+ID4gPiBDT05TVU1FUw0KPiA+ID4gICAgZ0VmaU1kZU1vZHVsZVBr Z1Rva2VuU3BhY2VHdWlkLlBjZFNlcmlhbERldGVjdENhYmxlDQo+ID4gDQo+ID4gIyMNCj4gPiA+ IFNPTUVUSU1FU19DT05TVU1FUw0KPiA+ID4gZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9NZGVN b2R1bGVQa2cuZGVjDQo+ID4gPiBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ID4g PiBpbmRleCA0ZTUzNjI1Li5mODY4ODUwIDEwMDY0NA0KPiA+ID4gLS0tIGEvTWRlTW9kdWxlUGtn L01kZU1vZHVsZVBrZy5kZWMNCj4gPiA+ICsrKyBiL01kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cu ZGVjDQo+ID4gPiBAQCAtMTE3MCwxMSArMTE3MCwxMyBAQA0KPiA+ID4gICAgIyBAUHJvbXB0IFNl cmlhbCBwb3J0IHJlZ2lzdGVycyB1c2UgTU1JTy4NCj4gPiA+IA0KPiA+ID4gDQo+ID4gDQo+ID4g Z0VmaU1kZU1vZHVsZVBrZ1Rva2VuU3BhY2VHdWlkLlBjZFNlcmlhbFVzZU1taW98RkFMU0V8Qk9P DQo+ID4gTEVBTnwweDAwDQo+ID4gPiAwMjAwMDANCj4gPiA+IA0KPiA+ID4gLSAgIyMgSW5kaWNh dGVzIHRoZSAxNjU1MCBzZXJpYWwgcG9ydCByZWdpc3RlcnMgYXJlIGluDQo+ID4gDQo+ID4gTU1J TyAzMiBiaXQgc3BhY2UsIG9yIGluDQo+ID4gPiBJL08gc3BhY2UuIERlZmF1bHQgaXMgSS9PIHNw YWNlLjxCUj48QlI+DQo+ID4gPiAtICAjICAgVFJVRSAgLSAxNjU1MCBzZXJpYWwgcG9ydCByZWdp c3RlcnMgYXJlIGluIE1NSU8NCj4gPiANCj4gPiAzMiBiaXQgc3BhY2UuPEJSPg0KPiA+ID4gLSAg IyAgIEZBTFNFIC0gMTY1NTAgc2VyaWFsIHBvcnQgcmVnaXN0ZXJzIGFyZSBpbiBJL08NCj4gPiAN Cj4gPiBzcGFjZS48QlI+DQo+ID4gPiAtICAjIEBQcm9tcHQgU2VyaWFsIHBvcnQgcmVnaXN0ZXJz IHVzZSBNTUlPLg0KPiA+ID4gLQ0KPiA+ID4gDQo+ID4gDQo+ID4gZ0VmaU1kZU1vZHVsZVBrZ1Rv a2VuU3BhY2VHdWlkLlBjZFNlcmlhbFVzZU1taW8zMnxGQUxTRXxCDQo+ID4gT09MRUFOfDB4DQo+ ID4gPiAwMDAyMDAwNw0KPiA+ID4gKyAgIyMgSW5kaWNhdGVzIHRoZSBhY2Nlc3MgbW9kZSBmb3Ig MTY1NTAgc2VyaWFsIHBvcnQNCj4gPiANCj4gPiByZWdpc3RlcnMgd2hlbiB0aGV5IGFyZSBpbg0K PiA+ID4gTU1JTyBzcGFjZS4NCj4gPiA+ICsgICMgVGhlIFBDRCBpcyBvbmx5IHZhbGlkIGlmIFBj ZFNlcmlhbFVzZU1taW8gaXMgc2V0DQo+ID4gDQo+ID4gdG8gVFJVRS4NCj4gPiA+ICsgICMgRGVm YXVsdCBpcyA4LWJpdCBhY2Nlc3MgbW9kZS48QlI+PEJSPg0KPiA+ID4gKyAgIyAgIFRSVUUgIC0g MTY1NTAgc2VyaWFsIHBvcnQgTU1JTyByZWdpc3RlcnMgYXJlDQo+ID4gDQo+ID4gYWNjZXNzZWQg aW4gMzItYml0DQo+ID4gPiB3aWR0aC48QlI+DQo+ID4gPiArICAjICAgRkFMU0UgLSAxNjU1MCBz ZXJpYWwgcG9ydCBNTUlPIHJlZ2lzdGVycyBhcmUNCj4gPiANCj4gPiBhY2Nlc3NlZCBpbiA4LWJp dCB3aWR0aC48QlI+DQo+ID4gPiArICAjIEBQcm9tcHQgU2VyaWFsIHBvcnQgTU1JTyByZWdpc3Rl cnMgYWNjZXNzIG1vZGUuDQo+ID4gPiArDQo+ID4gPiANCj4gPiANCj4gPiBnRWZpTWRlTW9kdWxl UGtnVG9rZW5TcGFjZUd1aWQuUGNkU2VyaWFsTW1pbzMyQml0QWNjZXNzfEYNCj4gPiBBTFNFfEJP T0xFDQo+ID4gPiBBTnwweDAwMDIwMDA3DQo+ID4gPiANCj4gPiA+ICAgICMjIEluZGljYXRlcyBp ZiB0aGUgMTY1NTAgc2VyaWFsIHBvcnQgaGFyZHdhcmUgZmxvdw0KPiA+IA0KPiA+IGNvbnRyb2wg d2lsbCBiZSBlbmFibGVkLg0KPiA+ID4gRGVmYXVsdCBpcyBGQUxTRS48QlI+PEJSPg0KPiA+ID4g ICAgIyAgIFRSVUUgIC0gMTY1NTAgc2VyaWFsIHBvcnQgaGFyZHdhcmUgZmxvdyBjb250cm9sDQo+ ID4gDQo+ID4gd2lsbCBiZSBlbmFibGVkLjxCUj4NCj4gPiA+IC0tDQo+ID4gPiAyLjIuMg0KPiA+ IA0KPiA+IA0KPiA+IA0KPiANCj4gDQo+IA0KPiANCg==