From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.88; helo=mga01.intel.com; envelope-from=zhichao.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) (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 450A021959CB2 for ; Thu, 21 Mar 2019 03:15:14 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga101.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 21 Mar 2019 03:15:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.60,252,1549958400"; d="scan'208";a="309091456" Received: from fmsmsx108.amr.corp.intel.com ([10.18.124.206]) by orsmga005.jf.intel.com with ESMTP; 21 Mar 2019 03:15:13 -0700 Received: from fmsmsx123.amr.corp.intel.com (10.18.125.38) by FMSMSX108.amr.corp.intel.com (10.18.124.206) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 21 Mar 2019 03:15:12 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx123.amr.corp.intel.com (10.18.125.38) with Microsoft SMTP Server (TLS) id 14.3.408.0; Thu, 21 Mar 2019 03:15:12 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.158]) by shsmsx102.ccr.corp.intel.com ([169.254.2.163]) with mapi id 14.03.0415.000; Thu, 21 Mar 2019 18:15:10 +0800 From: "Gao, Zhichao" To: Laszlo Ersek , "edk2-devel@lists.01.org" CC: "Justen, Jordan L" , Michael Turner , Bret Barkelew , "Gao, Liming" Thread-Topic: [edk2] [PATCH V3 09/17] OvmfPkg/PlatformDebugLibIoPort: Add new APIs Thread-Index: AQHU3mg5khjPRGSq3EOxw2lHtbrTQKYUOTOAgAGlr/A= Date: Thu, 21 Mar 2019 10:15:10 +0000 Message-ID: <3CE959C139B4C44DBEA1810E3AA6F9000B7B104B@SHSMSX101.ccr.corp.intel.com> References: <20190319152549.16104-1-zhichao.gao@intel.com> <20190319152549.16104-10-zhichao.gao@intel.com> <9b493f8e-0712-9e2f-c548-016bf3135959@redhat.com> In-Reply-To: <9b493f8e-0712-9e2f-c548-016bf3135959@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiYzJmNjViZDMtMmUyOS00ZmY1LTkyMjEtMjM4MjFkMGU2M2NiIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX05UIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE3LjEwLjE4MDQuNDkiLCJUcnVzdGVkTGFiZWxIYXNoIjoidk5JeWtuVkg3Q2F0MDhNWTB1S1ZSQ25tZ1VrSGR2U0liOVZGbm9GMngrUlc4NWNxbU9ZUk41SjZwWDlsNWdqbyJ9 x-ctpclassification: CTP_NT dlp-product: dlpe-windows dlp-version: 11.0.400.15 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [PATCH V3 09/17] OvmfPkg/PlatformDebugLibIoPort: Add new APIs X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 21 Mar 2019 10:15:14 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 VGhhbmtzIGZvciB5b3VyIHJlbWluZGVyLiANCkkgZm9yZ290IHRvIGFkZCBhbGwgQ0NzIHRvIGNv dmVyIGxldHRlci4gSSB3b3VsZCBiZSBjYXJlZnVsIG5leHQgdGltZS4NCg0KVGhhbmtzLA0KWmhp Y2hhbw0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBFcnNl ayBbbWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBUaHVyc2RheSwgTWFyY2ggMjEs IDIwMTkgMTI6NTggQU0NCj4gVG86IEdhbywgWmhpY2hhbyA8emhpY2hhby5nYW9AaW50ZWwuY29t PjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmcNCj4gQ2M6IEp1c3RlbiwgSm9yZGFuIEwgPGpvcmRh bi5sLmp1c3RlbkBpbnRlbC5jb20+OyBNaWNoYWVsIFR1cm5lcg0KPiA8TWljaGFlbC5UdXJuZXJA bWljcm9zb2Z0LmNvbT47IEJyZXQgQmFya2VsZXcNCj4gPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0 LmNvbT47IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4gU3ViamVjdDogUmU6 IFtlZGsyXSBbUEFUQ0ggVjMgMDkvMTddIE92bWZQa2cvUGxhdGZvcm1EZWJ1Z0xpYklvUG9ydDoN Cj4gQWRkIG5ldyBBUElzDQo+IA0KPiBPbiAwMy8xOS8xOSAxNjoyNSwgWmhpY2hhbyBHYW8gd3Jv dGU6DQo+ID4gUkVGOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dp P2lkPTEzOTUNCj4gPg0KPiA+IEFkZCBuZXcgQVBJcycgaW1wbGVtZW50YXRpb24gKERlYnVnVlBy aW50LCBEZWJ1Z0JQcmludCkgaW4gdGhlDQo+ID4gRGVidWdMaWIgaW5zdGFuY2UuIFRoZXNlIEFQ SXMgd291bGQgZXhwb3NlIHByaW50IHJvdXRpbmVzIHdpdGggVmFMaXN0DQo+ID4gcGFyYW1ldGVy IGFuZCBCYXNlTGlzdCBwYXJhbWV0ZXIuDQo+ID4NCj4gPiBDb250cmlidXRlZC11bmRlcjogVGlh bm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQgMS4xDQo+ID4gU2lnbmVkLW9mZi1ieTogWmhp Y2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4NCj4gPiBDYzogSm9yZGFuIEp1c3RlbiA8 am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4NCj4gPiBDYzogTGFzemxvIEVyc2VrIDxsZXJzZWtA cmVkaGF0LmNvbT4NCj4gPiBDYzogQXJkIEJpZXNoZXV2ZWwgPGFyZC5iaWVzaGV1dmVsQGxpbmFy by5vcmc+DQo+ID4gQ2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiA+IENj OiBTZWFuIEJyb2dhbiA8c2Vhbi5icm9nYW5AbWljcm9zb2Z0LmNvbT4NCj4gPiBDYzogTWljaGFl bCBUdXJuZXIgPE1pY2hhZWwuVHVybmVyQG1pY3Jvc29mdC5jb20+DQo+ID4gQ2M6IEJyZXQgQmFy a2VsZXcgPEJyZXQuQmFya2VsZXdAbWljcm9zb2Z0LmNvbT4NCj4gPiAtLS0NCj4gPiAgT3ZtZlBr Zy9MaWJyYXJ5L1BsYXRmb3JtRGVidWdMaWJJb1BvcnQvRGVidWdMaWIuYyB8IDEwNg0KPiA+ICsr KysrKysrKysrKysrKysrKysrKy0NCj4gPiAgMSBmaWxlIGNoYW5nZWQsIDEwMSBpbnNlcnRpb25z KCspLCA1IGRlbGV0aW9ucygtKQ0KPiA+DQo+ID4gZGlmZiAtLWdpdCBhL092bWZQa2cvTGlicmFy eS9QbGF0Zm9ybURlYnVnTGliSW9Qb3J0L0RlYnVnTGliLmMNCj4gPiBiL092bWZQa2cvTGlicmFy eS9QbGF0Zm9ybURlYnVnTGliSW9Qb3J0L0RlYnVnTGliLmMNCj4gPiBpbmRleCAzNmNkZTU0OTc2 Li5jZGEzNWZhZjY2IDEwMDY0NA0KPiA+IC0tLSBhL092bWZQa2cvTGlicmFyeS9QbGF0Zm9ybURl YnVnTGliSW9Qb3J0L0RlYnVnTGliLmMNCj4gPiArKysgYi9Pdm1mUGtnL0xpYnJhcnkvUGxhdGZv cm1EZWJ1Z0xpYklvUG9ydC9EZWJ1Z0xpYi5jDQo+ID4gQEAgLTIsNyArMiw3IEBADQo+ID4gICAg QmFzZSBEZWJ1ZyBsaWJyYXJ5IGluc3RhbmNlIGZvciBRRU1VIGRlYnVnIHBvcnQuDQo+ID4gICAg SXQgdXNlcyBQcmludExpYiB0byBzZW5kIGRlYnVnIG1lc3NhZ2VzIHRvIGEgZml4ZWQgSS9PIHBv cnQuDQo+ID4NCj4gPiAtICBDb3B5cmlnaHQgKGMpIDIwMDYgLSAyMDE1LCBJbnRlbCBDb3Jwb3Jh dGlvbi4gQWxsIHJpZ2h0cw0KPiA+IHJlc2VydmVkLjxCUj4NCj4gPiArICBDb3B5cmlnaHQgKGMp IDIwMDYgLSAyMDE5LCBJbnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cw0KPiA+ICsgcmVzZXJ2 ZWQuPEJSPg0KPiA+ICAgIENvcHlyaWdodCAoYykgMjAxMiwgUmVkIEhhdCwgSW5jLjxCUj4NCj4g PiAgICBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzDQo+ID4gICAg YXJlIGxpY2Vuc2VkIGFuZCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRp dGlvbnMgb2YNCj4gPiB0aGUgQlNEIExpY2Vuc2UgQEAgLTI5LDYgKzI5LDEyIEBAICAvLyAgI2Rl ZmluZQ0KPiA+IE1BWF9ERUJVR19NRVNTQUdFX0xFTkdUSCAgMHgxMDANCj4gPg0KPiA+ICsvLw0K PiA+ICsvLyBWQV9MSVNUIGNhbiBub3QgaW5pdGlhbGl6ZSB0byBOVUxMIGZvciBhbGwgY29tcGls ZXIsIHNvIHdlIHVzZQ0KPiA+ICt0aGlzIHRvIC8vIGluZGljYXRlIGEgbnVsbCBWQV9MSVNUIC8v DQo+ID4gK1ZBX0xJU1QgICAgIG1WYUxpc3ROdWxsOw0KPiA+ICsNCj4gPiAgLyoqDQo+ID4gICAg UHJpbnRzIGEgZGVidWcgbWVzc2FnZSB0byB0aGUgZGVidWcgb3V0cHV0IGRldmljZSBpZiB0aGUg c3BlY2lmaWVkIGVycm9yDQo+IGxldmVsIGlzIGVuYWJsZWQuDQo+ID4NCj4gPiBAQCAtNTEsOSAr NTcsNDEgQEAgRGVidWdQcmludCAoDQo+ID4gICAgSU4gIENPTlNUIENIQVI4ICAqRm9ybWF0LA0K PiA+ICAgIC4uLg0KPiA+ICAgICkNCj4gPiArew0KPiA+ICsgIFZBX0xJU1QgICAgICAgICBNYXJr ZXI7DQo+ID4gKw0KPiA+ICsgIFZBX1NUQVJUIChNYXJrZXIsIEZvcm1hdCk7DQo+ID4gKyAgRGVi dWdWUHJpbnQgKEVycm9yTGV2ZWwsIEZvcm1hdCwgTWFya2VyKTsNCj4gPiArICBWQV9FTkQgKE1h cmtlcik7DQo+ID4gK30NCj4gPiArDQo+ID4gKw0KPiA+ICsvKioNCj4gPiArICBQcmludHMgYSBk ZWJ1ZyBtZXNzYWdlIHRvIHRoZSBkZWJ1ZyBvdXRwdXQgZGV2aWNlIGlmIHRoZSBzcGVjaWZpZWQN Cj4gPiArICBlcnJvciBsZXZlbCBpcyBlbmFibGVkIGJhc2Ugb24gTnVsbC10ZXJtaW5hdGVkIGZv cm1hdCBzdHJpbmcgYW5kIGENCj4gPiArICBWQV9MSVNUIGFyZ3VtZW50IGxpc3Qgb3IgYSBCQVNF X0xJU1QgYXJndW1lbnQgbGlzdC4NCj4gPiArDQo+ID4gKyAgSWYgYW55IGJpdCBpbiBFcnJvckxl dmVsIGlzIGFsc28gc2V0IGluIERlYnVnUHJpbnRFcnJvckxldmVsTGliDQo+ID4gKyBmdW5jdGlv biAgR2V0RGVidWdQcmludEVycm9yTGV2ZWwgKCksIHRoZW4gcHJpbnQgdGhlIG1lc3NhZ2UNCj4g PiArIHNwZWNpZmllZCBieSBGb3JtYXQgYW5kICB0aGUgYXNzb2NpYXRlZCB2YXJpYWJsZSBhcmd1 bWVudCBsaXN0IHRvIHRoZQ0KPiBkZWJ1ZyBvdXRwdXQgZGV2aWNlLg0KPiA+ICsNCj4gPiArICBJ ZiBGb3JtYXQgaXMgTlVMTCwgdGhlbiBBU1NFUlQoKS4NCj4gPiArDQo+ID4gKyAgQHBhcmFtICBF cnJvckxldmVsICAgICAgVGhlIGVycm9yIGxldmVsIG9mIHRoZSBkZWJ1ZyBtZXNzYWdlLg0KPiA+ ICsgIEBwYXJhbSAgRm9ybWF0ICAgICAgICAgIEZvcm1hdCBzdHJpbmcgZm9yIHRoZSBkZWJ1ZyBt ZXNzYWdlIHRvIHByaW50Lg0KPiA+ICsgIEBwYXJhbSAgVmFMaXN0TWFya2VyICAgIFZBX0xJU1Qg bWFya2VyIGZvciB0aGUgdmFyaWFibGUgYXJndW1lbnQgbGlzdC4NCj4gPiArICBAcGFyYW0gIEJh c2VMaXN0TWFya2VyICBCQVNFX0xJU1QgbWFya2VyIGZvciB0aGUgdmFyaWFibGUgYXJndW1lbnQN Cj4gbGlzdC4NCj4gPiArDQo+ID4gKyoqLw0KPiA+ICtWT0lEDQo+ID4gK0RlYnVnUHJpbnRNYXJr ZXIgKA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgIEVycm9yTGV2ZWwsDQo+ID4gKyAgSU4gIENP TlNUIENIQVI4ICAgKkZvcm1hdCwNCj4gPiArICBJTiAgVkFfTElTVCAgICAgICBWYUxpc3RNYXJr ZXIsDQo+ID4gKyAgSU4gIEJBU0VfTElTVCAgICAgQmFzZUxpc3RNYXJrZXINCj4gPiArICApDQo+ ID4gIHsNCj4gPiAgICBDSEFSOCAgICBCdWZmZXJbTUFYX0RFQlVHX01FU1NBR0VfTEVOR1RIXTsN Cj4gPiAtICBWQV9MSVNUICBNYXJrZXI7DQo+ID4gICAgVUlOVE4gICAgTGVuZ3RoOw0KPiA+DQo+ ID4gICAgLy8NCj4gPiBAQCAtNzIsOSArMTEwLDExIEBAIERlYnVnUHJpbnQgKA0KPiA+ICAgIC8v DQo+ID4gICAgLy8gQ29udmVydCB0aGUgREVCVUcoKSBtZXNzYWdlIHRvIGFuIEFTQ0lJIFN0cmlu Zw0KPiA+ICAgIC8vDQo+ID4gLSAgVkFfU1RBUlQgKE1hcmtlciwgRm9ybWF0KTsNCj4gPiAtICBM ZW5ndGggPSBBc2NpaVZTUHJpbnQgKEJ1ZmZlciwgc2l6ZW9mIChCdWZmZXIpLCBGb3JtYXQsIE1h cmtlcik7DQo+ID4gLSAgVkFfRU5EIChNYXJrZXIpOw0KPiA+ICsgIGlmIChCYXNlTGlzdE1hcmtl ciA9PSBOVUxMKSB7DQo+ID4gKyAgICBMZW5ndGggPSBBc2NpaVZTUHJpbnQgKEJ1ZmZlciwgc2l6 ZW9mIChCdWZmZXIpLCBGb3JtYXQsDQo+ID4gKyBWYUxpc3RNYXJrZXIpOyAgfSBlbHNlIHsNCj4g PiArICAgIExlbmd0aCA9IEFzY2lpQlNQcmludCAoQnVmZmVyLCBzaXplb2YgKEJ1ZmZlciksIEZv cm1hdCwNCj4gPiArIEJhc2VMaXN0TWFya2VyKTsgIH0NCj4gPg0KPiA+ICAgIC8vDQo+ID4gICAg Ly8gU2VuZCB0aGUgcHJpbnQgc3RyaW5nIHRvIHRoZSBkZWJ1ZyBJL08gcG9ydCBAQCAtODMsNiAr MTIzLDYyIEBADQo+ID4gRGVidWdQcmludCAoICB9DQo+ID4NCj4gPg0KPiA+ICsvKioNCj4gPiAr ICBQcmludHMgYSBkZWJ1ZyBtZXNzYWdlIHRvIHRoZSBkZWJ1ZyBvdXRwdXQgZGV2aWNlIGlmIHRo ZSBzcGVjaWZpZWQNCj4gPiArICBlcnJvciBsZXZlbCBpcyBlbmFibGVkLg0KPiA+ICsNCj4gPiAr ICBJZiBhbnkgYml0IGluIEVycm9yTGV2ZWwgaXMgYWxzbyBzZXQgaW4gRGVidWdQcmludEVycm9y TGV2ZWxMaWINCj4gPiArIGZ1bmN0aW9uICBHZXREZWJ1Z1ByaW50RXJyb3JMZXZlbCAoKSwgdGhl biBwcmludCB0aGUgbWVzc2FnZQ0KPiA+ICsgc3BlY2lmaWVkIGJ5IEZvcm1hdCBhbmQgIHRoZSBh c3NvY2lhdGVkIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QgdG8gdGhlDQo+IGRlYnVnIG91dHB1dCBk ZXZpY2UuDQo+ID4gKw0KPiA+ICsgIElmIEZvcm1hdCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0K PiA+ICsNCj4gPiArICBAcGFyYW0gIEVycm9yTGV2ZWwgICAgVGhlIGVycm9yIGxldmVsIG9mIHRo ZSBkZWJ1ZyBtZXNzYWdlLg0KPiA+ICsgIEBwYXJhbSAgRm9ybWF0ICAgICAgICBGb3JtYXQgc3Ry aW5nIGZvciB0aGUgZGVidWcgbWVzc2FnZSB0byBwcmludC4NCj4gPiArICBAcGFyYW0gIFZhTGlz dE1hcmtlciAgVkFfTElTVCBtYXJrZXIgZm9yIHRoZSB2YXJpYWJsZSBhcmd1bWVudCBsaXN0Lg0K PiA+ICsNCj4gPiArKiovDQo+ID4gK1ZPSUQNCj4gPiArRUZJQVBJDQo+ID4gK0RlYnVnVlByaW50 ICgNCj4gPiArICBJTiAgVUlOVE4gICAgICAgICBFcnJvckxldmVsLA0KPiA+ICsgIElOICBDT05T VCBDSEFSOCAgICpGb3JtYXQsDQo+ID4gKyAgSU4gIFZBX0xJU1QgICAgICAgVmFMaXN0TWFya2Vy DQo+ID4gKyAgKQ0KPiA+ICt7DQo+ID4gKyAgRGVidWdQcmludE1hcmtlciAoRXJyb3JMZXZlbCwg Rm9ybWF0LCBWYUxpc3RNYXJrZXIsIE5VTEwpOyB9DQo+ID4gKw0KPiA+ICsNCj4gPiArLyoqDQo+ ID4gKyAgUHJpbnRzIGEgZGVidWcgbWVzc2FnZSB0byB0aGUgZGVidWcgb3V0cHV0IGRldmljZSBp ZiB0aGUgc3BlY2lmaWVkDQo+ID4gKyAgZXJyb3IgbGV2ZWwgaXMgZW5hYmxlZC4NCj4gPiArICBU aGlzIGZ1bmN0aW9uIHVzZSBCQVNFX0xJU1Qgd2hpY2ggd291bGQgcHJvdmlkZSBhIG1vcmUgY29t cGF0aWJsZQ0KPiA+ICsgIHNlcnZpY2UgdGhhbiBWQV9MSVNULg0KPiA+ICsNCj4gPiArICBJZiBh bnkgYml0IGluIEVycm9yTGV2ZWwgaXMgYWxzbyBzZXQgaW4gRGVidWdQcmludEVycm9yTGV2ZWxM aWINCj4gPiArIGZ1bmN0aW9uICBHZXREZWJ1Z1ByaW50RXJyb3JMZXZlbCAoKSwgdGhlbiBwcmlu dCB0aGUgbWVzc2FnZQ0KPiA+ICsgc3BlY2lmaWVkIGJ5IEZvcm1hdCBhbmQgIHRoZSBhc3NvY2lh dGVkIHZhcmlhYmxlIGFyZ3VtZW50IGxpc3QgdG8gdGhlDQo+IGRlYnVnIG91dHB1dCBkZXZpY2Uu DQo+ID4gKw0KPiA+ICsgIElmIEZvcm1hdCBpcyBOVUxMLCB0aGVuIEFTU0VSVCgpLg0KPiA+ICsN Cj4gPiArICBAcGFyYW0gIEVycm9yTGV2ZWwgICAgICBUaGUgZXJyb3IgbGV2ZWwgb2YgdGhlIGRl YnVnIG1lc3NhZ2UuDQo+ID4gKyAgQHBhcmFtICBGb3JtYXQgICAgICAgICAgRm9ybWF0IHN0cmlu ZyBmb3IgdGhlIGRlYnVnIG1lc3NhZ2UgdG8gcHJpbnQuDQo+ID4gKyAgQHBhcmFtICBCYXNlTGlz dE1hcmtlciAgQkFTRV9MSVNUIG1hcmtlciBmb3IgdGhlIHZhcmlhYmxlIGFyZ3VtZW50DQo+IGxp c3QuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtFRklBUEkNCj4gPiArRGVidWdC UHJpbnQgKA0KPiA+ICsgIElOICBVSU5UTiAgICAgICAgIEVycm9yTGV2ZWwsDQo+ID4gKyAgSU4g IENPTlNUIENIQVI4ICAgKkZvcm1hdCwNCj4gPiArICBJTiAgQkFTRV9MSVNUICAgICBCYXNlTGlz dE1hcmtlcg0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIERlYnVnUHJpbnRNYXJrZXIgKEVycm9y TGV2ZWwsIEZvcm1hdCwgbVZhTGlzdE51bGwsIEJhc2VMaXN0TWFya2VyKTsNCj4gPiArfQ0KPiA+ ICsNCj4gPiArDQo+ID4gIC8qKg0KPiA+ICAgIFByaW50cyBhbiBhc3NlcnQgbWVzc2FnZSBjb250 YWluaW5nIGEgZmlsZW5hbWUsIGxpbmUgbnVtYmVyLCBhbmQNCj4gZGVzY3JpcHRpb24uDQo+ID4g ICAgVGhpcyBtYXkgYmUgZm9sbG93ZWQgYnkgYSBicmVha3BvaW50IG9yIGEgZGVhZCBsb29wLg0K PiA+DQo+IA0KPiBJIGNvdWxkbid0IGZpbmQgdGhlIHdpbGwgdG8gcmV2aWV3IHRoZSBjb21tZW50 cywgYnV0IHRoZSBjb2RlIGxvb2tzIHNhbmUgdG8NCj4gbWUuDQo+IA0KPiBBY2tlZC1ieTogTGFz emxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4NCj4gDQo+IEluIHRoZSBmdXR1cmUsIGZvciBh bnkgZ2l2ZW4gcGVyc29uIENDJ2Qgb24gYXQgbGVhc3Qgb25lIHBhdGNoIGluIHRoZSBzZXJpZXMs DQo+IHBsZWFzZSBtYWtlIHN1cmUgdGhlIHBlcnNvbiBpcyBhbHNvIENDJ2Qgb24gdGhlIGNvdmVy IGxldHRlci4NCj4gVmVyc2lvbiAzIG9mIHRoaXMgcGF0Y2ggaXMgdmVyeSBkaWZmZXJlbnQgZnJv bSB2ZXJzaW9uIDIsIGJ1dCBJIGhhZCB0byBjb25zdHJ1Y3QNCj4gdGhlIHJlYXNvbiBteXNlbGYg cmV0cm8tYWN0aXZlbHkgKGxvb2sgdXAgdGhlIHYzIGJsdXJiIGluIG15IGxpc3QgZm9sZGVyLCBy ZWFkDQo+IHRoZSBzdW1tYXJ5LCBnbyBiYWNrIHRvIHYyLCBmaW5kIEFuZHJldydzIGNvbW1lbnRz KS4NCj4gVGhpcyBjb3VsZCBoYXZlIGJlZW4gaGVscGVkIGF0IGxlYXN0IGEgbGl0dGxlIGlmIEkg aGFkIGJlZW4gQ0MnZCBvbiB0aGUNCj4gdjMgYmx1cmIuDQo+IA0KPiBUaGFua3MNCj4gTGFzemxv DQo=