From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) (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 1B1B281B2D for ; Mon, 9 Jan 2017 21:33:40 -0800 (PST) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga104.jf.intel.com with ESMTP; 09 Jan 2017 21:33:39 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.33,342,1477983600"; d="scan'208";a="211549557" Received: from fmsmsx105.amr.corp.intel.com ([10.18.124.203]) by fmsmga004.fm.intel.com with ESMTP; 09 Jan 2017 21:33:39 -0800 Received: from fmsmsx113.amr.corp.intel.com (10.18.116.7) by FMSMSX105.amr.corp.intel.com (10.18.124.203) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 9 Jan 2017 21:33:39 -0800 Received: from shsmsx152.ccr.corp.intel.com (10.239.6.52) by FMSMSX113.amr.corp.intel.com (10.18.116.7) with Microsoft SMTP Server (TLS) id 14.3.248.2; Mon, 9 Jan 2017 21:33:39 -0800 Received: from shsmsx102.ccr.corp.intel.com ([169.254.2.88]) by SHSMSX152.ccr.corp.intel.com ([169.254.6.132]) with mapi id 14.03.0248.002; Tue, 10 Jan 2017 13:33:37 +0800 From: "Gao, Liming" To: "'Duran, Leo'" , "Justen, Jordan L" , 'Laszlo Ersek' , "edk2-devel@lists.01.org" CC: "Singh, Brijesh" , "Fan, Jeff" , "Kinney, Michael D" , "Ma, Maurice" , "Agyeman, Prince" , "Ni, Ruiyu" , "Steele, Kelly" , "Wei, David" , "Guo, Mang" Thread-Topic: [PATCH v3 0/4] BaseIoFifoLib Thread-Index: AQHSZ52i6iwuFEC9WEmLgb48CAuxwqEq8/fQ///SGACAAEZZgIAAnhgAgAETyICAArLMAIAAQUCAgAFPfnA= Date: Tue, 10 Jan 2017 05:33:36 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CB799@shsmsx102.ccr.corp.intel.com> References: <1483652965-14357-1-git-send-email-leo.duran@amd.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CA2BD@shsmsx102.ccr.corp.intel.com> <9bf84287-cdec-b5c0-26c6-16f5cd1e453f@redhat.com> <148375017874.13659.3185969071926290103@jljusten-ivb> <4A89E2EF3DFEDB4C8BFDE51014F606A14D6CAC20@shsmsx102.ccr.corp.intel.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH v3 0/4] BaseIoFifoLib X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Jan 2017 05:33:40 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGVvOg0KICBJIHN1Z2dlc3QgdG8gYWRkIG5ldyBJb0ZpZm8gQVBJcyBpbnRvIElvTGliIGxpYnJh cnkgY2xhc3MsIG5vdCBhZGQgSW9GaWZvTGliIGNsYXNzLiBBZnRlciBhZGQgSW9GaWZvIEFQSXMg aW50byBJb0xpYiBsaWJyYXJ5IGNsYXNzLCB3ZSBoYXZlIHRvIHVwZGF0ZSBhbGwgSW9MaWIgbGli cmFyeSBpbnN0YW5jZXMgdG8gaW5jbHVkZSBJb0ZpZm8gQVBJIGltcGxlbWVudGF0aW9uLiBGb3Ig SUEzMiBhbmQgWDY0IGFyY2gsIHlvdXIgcHJvcG9zZWQgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1 c2VkLiBGb3Igb3RoZXIgYXJjaCwgbm9ybWFsIGltcGxlbWVudGF0aW9uIChyZWFkIHNhbWUgSU8g cG9ydCBpbiBvbmUgbG9vcCkgY2FuIGJlIHVzZWQuIEFuZCwgeW91IHNheSB5b3Ugd2FudCB0byBp bXBsZW1lbnQgYW5vdGhlciB2ZXJzaW9uIElvRmlmbyBBUElzLiBJZiBpdCBpcyByZXF1ZXN0ZWQs ICBJIHN1Z2dlc3QgeW91IGFkZCBuZXcgSW9MaWIgaW5zdGFuY2UuIEZvciBJb0ZpZm8gQVBJcywg eW91ciBwcm92aWRlIG5ldyBpbXBsZW1lbnRhdGlvbi4gRm9yIG90aGVyIElvIEFQSXMsIHlvdSBj YW4gY29weSB0aGUgaW1wbGVtZW50YXRpb24gZnJvbSBCYXNlSW9MaWJJbnRyaW5zaWMgbGlicmFy eSBpbnN0YW5jZSwgdGhlbiBuZXcgSW9MaWIgaW5zdGFuY2UgY2FuIHByb3ZpZGUgZnVsbCBJTyBB UElzLiBUaGF0J3MgbXkgcHJvcG9zYWwgZm9yIElvRmlmbyBBUElzLiANCiAgDQogIEJlc2lkZXMs IEkgcmFpc2Ugb25lIGdlbmVyaWMgcHJvYmxlbS4gSW4gZWRrMiBwcm9qZWN0LCBldmVyeSBsaWJy YXJ5IGluc3RhbmNlIG11c3QgcHJvdmlkZSB0aGUgZnVsbCBBUEkgaW1wbGVtZW50YXRpb24uIElm IG9uZSBsaWJyYXJ5IGluc3RhbmNlIG9ubHkgb3ZlcnJpZGVzIHNvbWUgQVBJIGltcGxlbWVudGF0 aW9uLCBpdCB3aWxsIGhhdmUgdG8gY29weSBvdGhlciBBUEkgaW1wbGVtZW50YXRpb24uIEl0IHdp bGwgYnJpbmcgdGhlIGR1cGxpY2F0ZWQgY29kZSBpbiB0aGUgZGlmZmVyZW50IGxpYnJhcnkgaW5z dGFuY2UuIEN1cnJlbnQgc2l4IElvIGxpYnJhcnkgaW5zdGFuY2VzIGFyZSBqdXN0IGEgY2FzZS4g SSB0aGluayB3ZSBjYW4gZmlndXJlIG91dCBuZXcgc29sdXRpb24gdG8gc2hhcmUgdGhlIHNhbWUg bG9naWMgYmV0d2VlbiB0aGUgZGlmZmVyZW50IGxpYnJhcnkgaW5zdGFuY2UuIElmIHRoaXMgc29s dXRpb24gaXMgcmVhZHksIHlvdSBjYW4gZWFzaWx5IGFkZCBuZXcgSW9MaWIgbGlicmFyeSBpbnN0 YW5jZSB3aXRoIHRoZSBvdmVycmlkZSBBUElzIG9ubHkuIFNvLCBJIHN1Z2dlc3QgeW91IHN1Ym1p dCBuZXcgcmVxdWVzdCB0byBzdXBwb3J0IHRoZSBsaWJyYXJ5IGluc3RhbmNlIGluaGVyaXQgZnJv bSBhbm90aGVyIGluc3RhbmNlLiANCg0KVGhhbmtzDQpMaW1pbmcNCj4tLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KPkZyb206IER1cmFuLCBMZW8gW21haWx0bzpsZW8uZHVyYW5AYW1kLmNvbV0N Cj5TZW50OiBNb25kYXksIEphbnVhcnkgMDksIDIwMTcgMTA6MjMgUE0NCj5UbzogR2FvLCBMaW1p bmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPjxqb3JkYW4ubC5q dXN0ZW5AaW50ZWwuY29tPjsgJ0xhc3psbyBFcnNlaycgPGxlcnNla0ByZWRoYXQuY29tPjsgZWRr Mi0NCj5kZXZlbEBsaXN0cy4wMS5vcmcNCj5DYzogU2luZ2gsIEJyaWplc2ggPGJyaWplc2guc2lu Z2hAYW1kLmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50ZWwuY29tPjsNCj5LaW5uZXksIE1p Y2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5jb20+OyBNYSwgTWF1cmljZQ0KPjxtYXVy aWNlLm1hQGludGVsLmNvbT47IEFneWVtYW4sIFByaW5jZSA8cHJpbmNlLmFneWVtYW5AaW50ZWwu Y29tPjsgTmksDQo+UnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFN0ZWVsZSwgS2VsbHkgPGtl bGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksDQo+RGF2aWQgPGRhdmlkLndlaUBpbnRlbC5jb20+ OyBHdW8sIE1hbmcgPG1hbmcuZ3VvQGludGVsLmNvbT4NCj5TdWJqZWN0OiBSRTogW1BBVENIIHYz IDAvNF0gQmFzZUlvRmlmb0xpYg0KPg0KPg0KPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0N Cj4+IEZyb206IEdhbywgTGltaW5nIFttYWlsdG86bGltaW5nLmdhb0BpbnRlbC5jb21dDQo+PiBT ZW50OiBTdW5kYXksIEphbnVhcnkgMDgsIDIwMTcgOToxMSBQTQ0KPj4gVG86IER1cmFuLCBMZW8g PGxlby5kdXJhbkBhbWQuY29tPjsgSnVzdGVuLCBKb3JkYW4gTA0KPj4gPGpvcmRhbi5sLmp1c3Rl bkBpbnRlbC5jb20+OyAnTGFzemxvIEVyc2VrJyA8bGVyc2VrQHJlZGhhdC5jb20+OyBlZGsyLQ0K Pj4gZGV2ZWxAbGlzdHMuMDEub3JnDQo+PiBDYzogU2luZ2gsIEJyaWplc2ggPGJyaWplc2guc2lu Z2hAYW1kLmNvbT47IEZhbiwgSmVmZiA8amVmZi5mYW5AaW50ZWwuY29tPjsNCj4+IEtpbm5leSwg TWljaGFlbCBEIDxtaWNoYWVsLmQua2lubmV5QGludGVsLmNvbT47IE1hLCBNYXVyaWNlDQo+PiA8 bWF1cmljZS5tYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UgPHByaW5jZS5hZ3llbWFuQGlu dGVsLmNvbT47DQo+PiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNvbT47IFN0ZWVsZSwgS2Vs bHkgPGtlbGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksDQo+PiBEYXZpZCA8ZGF2aWQud2VpQGlu dGVsLmNvbT47IEd1bywgTWFuZyA8bWFuZy5ndW9AaW50ZWwuY29tPg0KPj4gU3ViamVjdDogUkU6 IFtQQVRDSCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4+DQo+PiBMZW86DQo+PiAgIElvTGliIExp YnJhcnkgY2xhc3MgaXMgZGVzaWduZWQgZnJvbSB0aGUgZnVuY3Rpb25hbGl0eSwgbm90IGNvZGUN Cj4+IGltcGxlbWVudGF0aW9uLiBTbywgbWFueSBJTyBvcGVyYXRpb25zIGFyZSBpbmNsdWRlZCBp biB0aGlzIGxpYnJhcnkgY2xhc3MuIElmDQo+PiBkZXZlbG9wZXJzIHdhbnQgdG8gdXNlIElPIEFQ SSwgdGhleSBvbmx5IG5lZWQgdG8gY2hlY2sgSW9MaWIgbGlicmFyeSBjbGFzcy4NCj4+IEFmdGVy IGFkZCBuZXcgQVBJcywgd2UgbmVlZCB0byB1cGRhdGUgYWxsIElvTGliIGxpYnJhcnkgaW5zdGFu Y2VzIHRvDQo+PiBpbXBsZW1lbnQgdGhlbS4gQW5kLCBpZiBhbnkgbGlicmFyeSBBUEkgaW1wbGVt ZW50YXRpb24gaGFzIHRoZSBkaWZmZXJlbnQNCj4+IHZlcnNpb24sIHRoZSBmdWxsIGxpYnJhcnkg aW5zdGFuY2Ugd2lsbCBoYXZlIHRvIGJlIGNvcGllZCB0byBhbm90aGVyIGluc3RhbmNlLiBJDQo+ PiBrbm93IHlvdXIgY29uY2VybiBpcyB0byBkdXBsaWNhdGUgdGhlIGxpYnJhcnkgaW1wbGVtZW50 YXRpb24uIEJ1dCwgSSB0aGluaw0KPnRoaXMNCj4+IGlzIHRoZSBzZXBhcmF0ZSB0b3BpYyB0byBv cHRpbWl6ZSB0aGUgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBhbmQgcmV1c2UgdGhlDQo+PiBzYW1l IHNvdXJjZSBmaWxlLiBPdGhlciBsaWJyYXJ5IGluc3RhbmNlcyBtYXkgaGF2ZSB0aGUgc2FtZSBp c3N1ZS4gU28sIEkNCj4+IHN1Z2dlc3QgeW91IHN1Ym1pdCBidWd6aWxsYSBmb3IgdGhpcyBvcHRp bWl6YXRpb24gcmVxdWVzdC4gV2Ugd2lsbCBmaWd1cmUgb3V0DQo+PiB0aGUgc29sdXRpb24gYW5k IHJldmlldyBpdCBpbiB0aGlzIG1haWwgbGlzdC4NCj4+DQo+PiBUaGFua3MNCj4+IExpbWluZw0K PltEdXJhbiwgTGVvXQ0KPkhpIExpbWluZywNCj4NCj5JJ20gbm90IHN1cmUgSSBmb2xsb3cgd2hh dCB5b3UgbWVhbiBieSBhbiAnb3B0aW1pemF0aW9uIHJlcXVlc3QnLg0KPkF0IHByZXNlbnQgSW9M SWIgZG9lcyAqbm90KiBpbmNsdWRlIHRoZSBGaWZvIHJvdXRpbmVzIHRoYXQgSSd2ZSByZWZlcnJl ZCB0bywgc28NCj5JJ20gc2ltcGx5IHByb3Bvc2luZyB0byB3cmFwIHRoZSBGaWZvIHJvdXRpbmVz IGludG8gaW4gYSBsaWJyYXJ5Lg0KPk1vcmVvdmVyLCBhcyB5b3UganVzdCBzYWlkLCBJ4oCZbSBh bHNvIHByb3Bvc2luZyBub3QgdXNpbmcgSW9MaWIgdG8gYXZvaWQgaGF2aW5nDQo+dG8gZHVwbGlj YXRlIGFsbCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBpbiBJb0xpYi4NCj4NCj5DYW4geW91IHBsZWFz ZSBnaXZlIG1lIGEgYml0IG1vcmUgZGV0YWlsIGFzIHRvIHdoYXQgdGhlICdvcHRpbWl6YXRpb24g cmVxdWVzdCcNCj53b3VsZCBiZT8NCj4oaS5lLiwgc2hvdWxkIHRoYXQgcmVxdWVzdCByZWFkIGV4 YWN0bHkgYXMgSSd2ZSBwcm9wb3NlZCBzbyBmYXIsIHByb3Bvc2luZyB0aGUNCj5jcmVhdGlvbiBv ZiBhbiBJb0ZpZm9MaWI/KQ0KPkknbGwgc3VibWl0IEJ1Z3ppbGxhIG9uY2UgSSBiZXR0ZXIgdW5k ZXJzdGFuZCB3aGF0IG5lZWRzIHRvIGJlIGluIGl0Lg0KPg0KPlRoYW5rcywNCj5MZW8NCj4NCj4N Cj4NCj4+ID4tLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gPkZyb206IER1cmFuLCBMZW8g W21haWx0bzpsZW8uZHVyYW5AYW1kLmNvbV0NCj4+ID5TZW50OiBTdW5kYXksIEphbnVhcnkgMDgs IDIwMTcgMToxNyBBTQ0KPj4gPlRvOiBKdXN0ZW4sIEpvcmRhbiBMIDxqb3JkYW4ubC5qdXN0ZW5A aW50ZWwuY29tPjsgJ0xhc3psbyBFcnNlaycNCj4+ID48bGVyc2VrQHJlZGhhdC5jb20+OyBHYW8s IExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBlZGsyLQ0KPj4gPmRldmVsQGxpc3RzLjAx Lm9yZw0KPj4gPkNjOiBTaW5naCwgQnJpamVzaCA8YnJpamVzaC5zaW5naEBhbWQuY29tPjsgRmFu LCBKZWZmDQo+PiA+PGplZmYuZmFuQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxtaWNo YWVsLmQua2lubmV5QGludGVsLmNvbT47DQo+PiA+TWEsIE1hdXJpY2UgPG1hdXJpY2UubWFAaW50 ZWwuY29tPjsgQWd5ZW1hbiwgUHJpbmNlDQo+PiA+PHByaW5jZS5hZ3llbWFuQGludGVsLmNvbT47 IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLA0KPj4gPktlbGx5IDxrZWxs eS5zdGVlbGVAaW50ZWwuY29tPjsgV2VpLCBEYXZpZCA8ZGF2aWQud2VpQGludGVsLmNvbT47IEd1 bywNCj4+ID5NYW5nIDxtYW5nLmd1b0BpbnRlbC5jb20+DQo+PiA+U3ViamVjdDogUkU6IFtQQVRD SCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4+ID4NCj4+ID5Kb3JkYW4sIExpbWluZywgZXQgYWws DQo+PiA+DQo+PiA+SXQgdHVybnMgb3V0IHRoYXQgdGhlIHJ1bnRpbWUgZW5hYmxlbWVudCBvZiBT RVYgZmVhdHVyZSB0aGF0IEkgcmVmZXJyZWQNCj4+ID50byBjYW4gYmUgZGV0ZWN0ZWQgaW4gaGFy ZHdhcmU7IHNvIGluc3RlYWQgb2YgcmVxdWlyaW5nICdkcml2ZXInIGNvZGUNCj4+ID50byBzZXQg YSBkeW5hbWljIFBDRCwgdGhlIG92ZXJyaWRlIEZpZm8gcm91dGluZXMgY291bGQgZG8gYSBydW50 aW1lDQo+PiA+Y2hlY2sgbGlrZSB0aGlzOg0KPj4gPg0KPj4gPi8vIEluIG92ZXJyaWRlIHZlcnNp b24gb2YgdGhlIEZpZm8gbGlicmFyeQ0KPj4gPmZpZm9fZm9vKCkNCj4+ID57DQo+PiA+CUlmIChT RVZfRW5hYmxlZCgpKSB7DQo+PiA+CQkvLyBkb24ndCB1c2UgUkVQIGlucy9vdXRzDQo+PiA+CX0g ZWxzZSB7DQo+PiA+CQkvLyB1c2UgUkVQIGlucy9vdXRzDQo+PiA+CX0NCj4+ID59DQo+PiA+SW4g ZXNzZW5jZSB3ZSBhbHJlYWR5IGhhdmUgYSBoYXJkd2FyZS1iYXNlZCBkeW5hbWljIFBDRCwgc28g dGhlIGlkZWEgaXMNCj4+ID50byBsZXZlcmFnZSBpdC4NCj4+ID4NCj4+ID5BbmQgc2luY2Ugd2Un cmUgaW50ZXJlc3RlZCBpbiBvdmVycmlkaW5nIGp1c3QgdGhlIEZpZm8gcm91dGluZXMsIGl0DQo+ PiA+d291bGQgbWFrZSBiZXR0ZXIgc2Vuc2UgdG8ga2VlcCB0aGVtIGluIGEgc2VwYXJhdGUgbGli cmFyeSAoYXMgcHJvcG9zZWQNCj5pbg0KPj4gdGhlIHBhdGNoIHNldCkuDQo+PiA+TGVvLg0KPj4g Pg0KPj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+ID4+IEZyb206IEpvcmRhbiBK dXN0ZW4gW21haWx0bzpqb3JkYW4ubC5qdXN0ZW5AaW50ZWwuY29tXQ0KPj4gPj4gU2VudDogRnJp ZGF5LCBKYW51YXJ5IDA2LCAyMDE3IDY6NTAgUE0NCj4+ID4+IFRvOiBEdXJhbiwgTGVvIDxsZW8u ZHVyYW5AYW1kLmNvbT47ICdMYXN6bG8gRXJzZWsnDQo+PiA+PiA8bGVyc2VrQHJlZGhhdC5jb20+ OyBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+Ow0KPj4gPj4gZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmcNCj4+ID4+IENjOiBTaW5naCwgQnJpamVzaCA8YnJpamVzaC5zaW5naEBhbWQu Y29tPjsgRmFuLCBKZWZmDQo+PiA+PiA8amVmZi5mYW5AaW50ZWwuY29tPjsgS2lubmV5LCBNaWNo YWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsNCj4+ID4+IE1hLCBNYXVyaWNlIDxt YXVyaWNlLm1hQGludGVsLmNvbT47IEFneWVtYW4sIFByaW5jZQ0KPj4gPj4gPHByaW5jZS5hZ3ll bWFuQGludGVsLmNvbT47IE5pLCBSdWl5dSA8cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLA0K Pj4gPj4gS2VsbHkgPGtlbGx5LnN0ZWVsZUBpbnRlbC5jb20+OyBXZWksIERhdmlkIDxkYXZpZC53 ZWlAaW50ZWwuY29tPjsNCj4+ID4+IEd1bywgTWFuZyA8bWFuZy5ndW9AaW50ZWwuY29tPg0KPj4g Pj4gU3ViamVjdDogUkU6IFtQQVRDSCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4+ID4+DQo+PiA+ PiBPbiAyMDE3LTAxLTA2IDA3OjIzOjQ3LCBEdXJhbiwgTGVvIHdyb3RlOg0KPj4gPj4gPg0KPj4g Pj4gPg0KPj4gPj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+PiA+PiA+ID4gRnJv bTogTGFzemxvIEVyc2VrIFttYWlsdG86bGVyc2VrQHJlZGhhdC5jb21dDQo+PiA+PiA+ID4gU2Vu dDogRnJpZGF5LCBKYW51YXJ5IDA2LCAyMDE3IDU6MTIgQU0NCj4+ID4+ID4gPiBUbzogR2FvLCBM aW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPjsgRHVyYW4sIExlbw0KPj4gPj4gPiA+IDxsZW8u ZHVyYW5AYW1kLmNvbT47IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQo+PiA+PiA+ID4gPGVkazIt ZGV2ZWxAbWwwMS4wMS5vcmc+DQo+PiA+PiA+ID4gQ2M6IFNpbmdoLCBCcmlqZXNoIDxicmlqZXNo LnNpbmdoQGFtZC5jb20+OyBKdXN0ZW4sIEpvcmRhbiBMDQo+PiA+PiA+ID4gPGpvcmRhbi5sLmp1 c3RlbkBpbnRlbC5jb20+OyBGYW4sIEplZmYgPGplZmYuZmFuQGludGVsLmNvbT47DQo+PiA+PiA+ ID4gS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgTWEsIE1h dXJpY2UNCj4+ID4+ID4gPiA8bWF1cmljZS5tYUBpbnRlbC5jb20+OyBBZ3llbWFuLCBQcmluY2UN Cj4+ID4+IDxwcmluY2UuYWd5ZW1hbkBpbnRlbC5jb20+Ow0KPj4gPj4gPiA+IE5pLCBSdWl5dSA8 cnVpeXUubmlAaW50ZWwuY29tPjsgU3RlZWxlLCBLZWxseQ0KPj4gPj4gPiA+IDxrZWxseS5zdGVl bGVAaW50ZWwuY29tPjsgV2VpLCBEYXZpZCA8ZGF2aWQud2VpQGludGVsLmNvbT47IEd1bywNCj4+ ID4+ID4gPiBNYW5nIDxtYW5nLmd1b0BpbnRlbC5jb20+DQo+PiA+PiA+ID4gU3ViamVjdDogUmU6 IFtQQVRDSCB2MyAwLzRdIEJhc2VJb0ZpZm9MaWINCj4+ID4+ID4gPg0KPj4gPj4gPiA+IE9uIDAx LzA2LzE3IDA3OjAyLCBHYW8sIExpbWluZyB3cm90ZToNCj4+ID4+ID4gPiA+IExlbzoNCj4+ID4+ ID4gPiA+IEZpZm9JbyBpcyBvbmUgd2lkdGggdHlwZSBvZiBFRklfQ1BVX0lPX1BST1RPQ09MX1dJ RFRILiBTbywNCj5ob3cNCj4+ID4+ID4gPiA+IGFib3V0IGFkZCBuZXcgQVBJcyBpbnRvIElvTGli IHRvZ2V0aGVyIHdpdGggb3RoZXIgSW8gQVBJcz8gSWYNCj4+ID4+ID4gPiA+IHNvLCBubyBuZXcg bGlicmFyeSBjbGFzcyBpcyByZXF1aXJlZC4gUGxhdGZvcm0gRFNDIGZpbGVzIGFyZQ0KPj4gPj4g PiA+ID4gbm90IHJlcXVpcmVkIHRvIGJlIGNoYW5nZWQuDQo+PiA+PiA+ID4NCj4+ID4+ID4gPiBC dXQgdGhlbiBhbGwgb2YgdGhlIElvTGliIGluc3RhbmNlcyB3aWxsIGhhdmUgdG8gYmUgZXh0ZW5k ZWQgdG9vOg0KPj4gPj4gPiA+DQo+PiA+PiA+ID4gSW50ZWxGcmFtZXdvcmtQa2cvTGlicmFyeS9E eGVJb0xpYkNwdUlvL0R4ZUlvTGliQ3B1SW8uaW5mDQo+PiA+PiA+ID4gTWRlUGtnL0xpYnJhcnkv QmFzZUlvTGliSW50cmluc2ljL0Jhc2VJb0xpYkludHJpbnNpYy5pbmYNCj4+ID4+ID4gPiBNZGVQ a2cvTGlicmFyeS9EeGVJb0xpYkNwdUlvMi9EeGVJb0xpYkNwdUlvMi5pbmYNCj4+ID4+ID4gPiBN ZGVQa2cvTGlicmFyeS9EeGVJb0xpYkVzYWwvRHhlSW9MaWJFc2FsLmluZg0KPj4gPj4gPiA+IE1k ZVBrZy9MaWJyYXJ5L1BlaUlvTGliQ3B1SW8vUGVpSW9MaWJDcHVJby5pbmYNCj4+ID4+ID4gPiBN ZGVQa2cvTGlicmFyeS9TbW1Jb0xpYlNtbUNwdUlvMi9TbW1Jb0xpYlNtbUNwdUlvMi5pbmYNCj4+ ID4+ID4gPg0KPj4gPj4gPiA+IFRoYW5rcywNCj4+ID4+ID4gPiBMYXN6bG8NCj4+ID4+ID4gPg0K Pj4gPj4gPiBbRHVyYW4sIExlb10gQ29ycmVjdC4NCj4+ID4+ID4gQXMgSSBtZW50aW9uZWQsIG9u ZSBvZiB0aGUgcmVhc29ucyBmb3IgdGhlIG5ldyBJb0ZpZm8gbGlicmFyeSBpcyB0bw0KPj4gPj4g PiBiZSBhYmxlIHRvIG92ZXJyaWRlIGl0IHdpdGhvdXQgaGF2aW5nIHRvIGR1cGxpY2F0ZSB0aGUg Y29tcGxldGUgSW9MaWIuDQo+PiA+PiA+DQo+PiA+Pg0KPj4gPj4gSSBhZ3JlZSB3aXRoIExpbWlu ZyBhYm91dCBhZGRpbmcgdGhlIGZ1bmN0aW9ucyB0byBJb0xpYiBpbnN0ZWFkLg0KPj4gPj4NCj4+ ID4+IFBlcmhhcHMgYSBQQ0QgY291bGQgYmUgYWRkZWQgdG8gY29udHJvbCBpZiByZXAgaS9vIGlu c3RydWN0aW9ucyBhcmUNCj4+ID4+IHVzZWQuDQo+PiA+Pg0KPj4gPj4gLUpvcmRhbg0K