From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) (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 7A9AE21A16E4A for ; Mon, 5 Jun 2017 01:02:28 -0700 (PDT) Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jun 2017 01:03:33 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.39,300,1493708400"; d="scan'208";a="95622433" Received: from fmsmsx107.amr.corp.intel.com ([10.18.124.205]) by orsmga002.jf.intel.com with ESMTP; 05 Jun 2017 01:02:19 -0700 Received: from fmsmsx111.amr.corp.intel.com (10.18.116.5) by fmsmsx107.amr.corp.intel.com (10.18.124.205) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 5 Jun 2017 01:02:19 -0700 Received: from shsmsx102.ccr.corp.intel.com (10.239.4.154) by fmsmsx111.amr.corp.intel.com (10.18.116.5) with Microsoft SMTP Server (TLS) id 14.3.319.2; Mon, 5 Jun 2017 01:02:18 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.116]) by shsmsx102.ccr.corp.intel.com ([169.254.2.146]) with mapi id 14.03.0319.002; Mon, 5 Jun 2017 16:02:15 +0800 From: "Fu, Siyuan" To: "Wu, Jiaxin" , "edk2-devel@lists.01.org" CC: "Ye, Ting" Thread-Topic: [Patch 2/2] MdeModulePkg/UefiPxeBcDxe: Refine the PXE boot displayed information Thread-Index: AQHS0s4pJfhls4o5tEicyaOzIUU+AaIV/nCQ Date: Mon, 5 Jun 2017 08:02:15 +0000 Message-ID: References: <1495438575-9900-1-git-send-email-jiaxin.wu@intel.com> <1495438575-9900-3-git-send-email-jiaxin.wu@intel.com> In-Reply-To: <1495438575-9900-3-git-send-email-jiaxin.wu@intel.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ctpclassification: CTP_IC x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiOGJlMzRiYzYtY2Q0Yy00M2I2LWJhZGMtZDhlYzVhMmY1MDg4IiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE1LjkuNi42IiwiVHJ1c3RlZExhYmVsSGFzaCI6InNiY0JSVWNWS2JHbjdsbXdMNHNRc0dTbWJVaXdBMWVcLzlsa1NCaEo5VmFvPSJ9 dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Subject: Re: [Patch 2/2] MdeModulePkg/UefiPxeBcDxe: Refine the PXE boot displayed information 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, 05 Jun 2017 08:02:28 -0000 Content-Language: en-US Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 UmV2aWV3ZWQtYnk6IEZ1IFNpeXVhbiA8c2l5dWFuLmZ1QGludGVsLmNvbT4NCg0KDQotLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogV3UsIEppYXhpbiANClNlbnQ6IDIwMTfE6jXUwjIy yNUgMTU6MzYNClRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KQ2M6IFllLCBUaW5nIDx0aW5n LnllQGludGVsLmNvbT47IEZ1LCBTaXl1YW4gPHNpeXVhbi5mdUBpbnRlbC5jb20+OyBXdSwgSmlh eGluIDxqaWF4aW4ud3VAaW50ZWwuY29tPg0KU3ViamVjdDogW1BhdGNoIDIvMl0gTWRlTW9kdWxl UGtnL1VlZmlQeGVCY0R4ZTogUmVmaW5lIHRoZSBQWEUgYm9vdCBkaXNwbGF5ZWQgaW5mb3JtYXRp b24NCg0KVGhpcyBwYXRoIGlzIHRvIHJlZmluZSB0aGUgUFhFIGJvb3QgZGlzcGxheWVkIGluZm9y bWF0aW9uIHNvIGFzIHRvIGluIGxpbmUgd2l0aCBOZXR3b3JrUGtnL1VlZmlQeGVCY0R4ZSBkcml2 ZXIuDQoNCkNjOiBZZSBUaW5nIDx0aW5nLnllQGludGVsLmNvbT4NCkNjOiBGdSBTaXl1YW4gPHNp eXVhbi5mdUBpbnRlbC5jb20+DQpDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1 dGlvbiBBZ3JlZW1lbnQgMS4wDQpTaWduZWQtb2ZmLWJ5OiBXdSBKaWF4aW4gPGppYXhpbi53dUBp bnRlbC5jb20+DQotLS0NCiAuLi4vVW5pdmVyc2FsL05ldHdvcmsvVWVmaVB4ZUJjRHhlL1B4ZUJj SW1wbC5jICAgICB8IDE4ICsrKysrKysrKysrKysrKysrKw0KIC4uLi9Vbml2ZXJzYWwvTmV0d29y ay9VZWZpUHhlQmNEeGUvUHhlQmNTdXBwb3J0LmMgIHwgMjIgKysrKysrKysrKysrKysrKysrKysr LSAgLi4uL1VuaXZlcnNhbC9OZXR3b3JrL1VlZmlQeGVCY0R4ZS9QeGVCY1N1cHBvcnQuaCAgfCAx NiArKysrKysrKysrKysrKystDQogMyBmaWxlcyBjaGFuZ2VkLCA1NCBpbnNlcnRpb25zKCspLCAy IGRlbGV0aW9ucygtKQ0KDQpkaWZmIC0tZ2l0IGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9OZXR3 b3JrL1VlZmlQeGVCY0R4ZS9QeGVCY0ltcGwuYyBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0 d29yay9VZWZpUHhlQmNEeGUvUHhlQmNJbXBsLmMNCmluZGV4IDI1OTU2OGUuLjZkNGYzM2YgMTAw NjQ0DQotLS0gYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdvcmsvVWVmaVB4ZUJjRHhlL1B4 ZUJjSW1wbC5jDQorKysgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdvcmsvVWVmaVB4ZUJj RHhlL1B4ZUJjSW1wbC5jDQpAQCAtMzM2LDEwICszMzYsMTIgQEAgRWZpUHhlQmNTdGFydCAoDQog ICAgIC8vIElQdjYgaXMgbm90IHN1cHBvcnRlZCBub3cuDQogICAgIC8vDQogICAgIHJldHVybiBF RklfVU5TVVBQT1JURUQ7DQogICB9DQogDQorICBBc2NpaVByaW50ICgiXG4+PlN0YXJ0IFBYRSBv dmVyIElQdjQiKTsNCisNCiAgIC8vDQogICAvLyBDb25maWd1cmUgdGhlIHVkcDQgaW5zdGFuY2Ug dG8gbGV0IGl0IHJlY2VpdmUgZGF0YQ0KICAgLy8NCiAgIFN0YXR1cyA9IFByaXZhdGUtPlVkcDRS ZWFkLT5Db25maWd1cmUgKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcml2YXRl LT5VZHA0UmVhZCwgQEAgLTY2NSwxMCArNjY3LDE1IEBAIEVmaVB4ZUJjRGhjcCAoDQogICAvLyBD aGVjayB0aGUgc2VsZWN0ZWQgb2ZmZXIgdG8gc2VlIHdoZXRoZXIgQklOTCBpcyByZXF1aXJlZCwg aWYgbm8gb3IgQklOTCBpcw0KICAgLy8gZmluaXNoZWQsIHNldCB0aGUgdmFyaW91cyBNb2RlIG1l bWJlcnMuDQogICAvLw0KICAgU3RhdHVzID0gUHhlQmNDaGVja1NlbGVjdGVkT2ZmZXIgKFByaXZh dGUpOw0KIA0KKyAgQXNjaWlQcmludCAoIlxuICBTdGF0aW9uIElQIGFkZHJlc3MgaXMgIik7DQor DQorICBQeGVCY1Nob3dJcDRBZGRyICgmUHJpdmF0ZS0+U3RhdGlvbklwLnY0KTsgIEFzY2lpUHJp bnQgKCJcbiIpOw0KKw0KIE9OX0VYSVQ6DQogICBpZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQog ICAgIERoY3A0LT5TdG9wIChEaGNwNCk7DQogICAgIERoY3A0LT5Db25maWd1cmUgKERoY3A0LCBO VUxMKTsNCiAgIH0gZWxzZSB7DQpAQCAtMjczOCwxMCArMjc0NSwxOCBAQCBEaXNjb3ZlckJvb3RG aWxlICgNCiAgICAgICAgICAgICAgICAgICAgICAgKTsNCiAgIH0NCiANCiAgIFByaXZhdGUtPkZp bGVTaXplID0gKFVJTlROKSAqQnVmZmVyU2l6ZTsNCiANCisgIC8vDQorICAvLyBEaXNwbGF5IGFs bCB0aGUgaW5mb3JtYXRpb246IGJvb3Qgc2VydmVyIGFkZHJlc3MsIGJvb3QgZmlsZSBuYW1lIGFu ZCBib290IGZpbGUgc2l6ZS4NCisgIC8vDQorICBBc2NpaVByaW50ICgiXG4gIFNlcnZlciBJUCBh ZGRyZXNzIGlzICIpOyAgUHhlQmNTaG93SXA0QWRkciANCisgKCZQcml2YXRlLT5TZXJ2ZXJJcC52 NCk7ICBBc2NpaVByaW50ICgiXG4gIE5CUCBmaWxlbmFtZSBpcyAlYSIsIA0KKyBQcml2YXRlLT5C b290RmlsZU5hbWUpOyAgQXNjaWlQcmludCAoIlxuICBOQlAgZmlsZXNpemUgaXMgJWQgQnl0ZXMi LCANCisgUHJpdmF0ZS0+RmlsZVNpemUpOw0KKw0KICAgcmV0dXJuIFN0YXR1czsNCiB9DQogDQog LyoqDQogICBDYXVzZXMgdGhlIGRyaXZlciB0byBsb2FkIGEgc3BlY2lmaWVkIGZpbGUuDQpAQCAt Mjg1MywxMCArMjg2OCwxMSBAQCBFZmlQeGVMb2FkRmlsZSAoDQogICAgIFN0YXR1cyAgICAgID0g RGlzY292ZXJCb290RmlsZSAoUHJpdmF0ZSwgJlRtcEJ1ZlNpemUsIEJ1ZmZlcik7DQogDQogICAg IGlmIChzaXplb2YgKFVJTlROKSA8IHNpemVvZiAoVUlOVDY0KSAmJiAoVG1wQnVmU2l6ZSA+IDB4 RkZGRkZGRkYpKSB7DQogICAgICAgU3RhdHVzID0gRUZJX0RFVklDRV9FUlJPUjsNCiAgICAgfSBl bHNlIGlmIChUbXBCdWZTaXplID4gMCAmJiAqQnVmZmVyU2l6ZSA+PSAoVUlOVE4pIFRtcEJ1ZlNp emUgJiYgQnVmZmVyICE9IE5VTEwpIHsNCisgICAgICBBc2NpaVByaW50ICgiXG4gRG93bmxvYWRp bmcgTkJQIGZpbGUuLi5cbiIpOw0KICAgICAgICpCdWZmZXJTaXplID0gKFVJTlROKSBUbXBCdWZT aXplOw0KICAgICAgIFN0YXR1cyA9IFB4ZUJjLT5NdGZ0cCAoDQogICAgICAgICAgICAgICAgICAg ICAgICAgUHhlQmMsDQogICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1BYRV9CQVNFX0NPREVf VEZUUF9SRUFEX0ZJTEUsDQogICAgICAgICAgICAgICAgICAgICAgICAgQnVmZmVyLA0KQEAgLTI4 NzcsMTAgKzI4OTMsMTEgQEAgRWZpUHhlTG9hZEZpbGUgKA0KICAgICBTdGF0dXMgICAgICA9IEVG SV9CVUZGRVJfVE9PX1NNQUxMOw0KICAgfSBlbHNlIHsNCiAgICAgLy8NCiAgICAgLy8gRG93bmxv YWQgdGhlIGZpbGUuDQogICAgIC8vDQorICAgIEFzY2lpUHJpbnQgKCJcbiBEb3dubG9hZGluZyBO QlAgZmlsZS4uLlxuIik7DQogICAgIFRtcEJ1ZlNpemUgPSAoVUlOVDY0KSAoKkJ1ZmZlclNpemUp Ow0KICAgICBTdGF0dXMgPSBQeGVCYy0+TXRmdHAgKA0KICAgICAgICAgICAgICAgICAgICAgICBQ eGVCYywNCiAgICAgICAgICAgICAgICAgICAgICAgRUZJX1BYRV9CQVNFX0NPREVfVEZUUF9SRUFE X0ZJTEUsDQogICAgICAgICAgICAgICAgICAgICAgIEJ1ZmZlciwNCkBAIC0yOTExLDEwICsyOTI4 LDExIEBAIEVmaVB4ZUxvYWRGaWxlICgNCiANCiAgIC8vDQogICAvLyBDaGVjayBkb3dubG9hZCBz dGF0dXMNCiAgIC8vDQogICBpZiAoU3RhdHVzID09IEVGSV9TVUNDRVNTKSB7DQorICAgIEFzY2lp UHJpbnQgKCJcbiAgTkJQIGZpbGUgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHkuXG4iKTsNCiAgICAg Ly8NCiAgICAgLy8gVGhlIERIQ1A0IGNhbiBoYXZlIG9ubHkgb25lIGNvbmZpZ3VyZWQgY2hpbGQg aW5zdGFuY2Ugc28gd2UgbmVlZCB0byBzdG9wDQogICAgIC8vIHJlc2V0IHRoZSBESENQNCBjaGls ZCBiZWZvcmUgd2UgcmV0dXJuLiBPdGhlcndpc2UgdGhlIG90aGVyIHByb2dyYW1zIHdoaWNoIA0K ICAgICAvLyBhbHNvIG5lZWQgdG8gdXNlIERIQ1A0IHdpbGwgYmUgaW1wYWN0ZWQuDQogICAgIC8v IFRoZSBmdW5jdGlvbmFsaXR5IG9mIFBYRSBCYXNlIENvZGUgcHJvdG9jb2wgd2lsbCBub3QgYmUg c3RvcHBlZCwgZGlmZiAtLWdpdCBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9VZWZp UHhlQmNEeGUvUHhlQmNTdXBwb3J0LmMgYi9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdvcmsv VWVmaVB4ZUJjRHhlL1B4ZUJjU3VwcG9ydC5jDQppbmRleCAwNzc5MDU2Li5jMWNhYmNhIDEwMDY0 NA0KLS0tIGEvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9OZXR3b3JrL1VlZmlQeGVCY0R4ZS9QeGVC Y1N1cHBvcnQuYw0KKysrIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9OZXR3b3JrL1VlZmlQeGVC Y0R4ZS9QeGVCY1N1cHBvcnQuYw0KQEAgLTEsOSArMSw5IEBADQogLyoqIEBmaWxlDQogICBTdXBw b3J0IHJvdXRpbmVzIGZvciBQeGVCYy4NCiANCi1Db3B5cmlnaHQgKGMpIDIwMDcgLSAyMDE2LCBJ bnRlbCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC48QlI+DQorQ29weXJpZ2h0IChj KSAyMDA3IC0gMjAxNywgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJS Pg0KIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29tcGFueWluZyBtYXRlcmlhbHMgIGFyZSBsaWNl bnNlZCBhbmQgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9m IHRoZSBCU0QgTGljZW5zZSAgd2hpY2ggYWNjb21wYW5pZXMgdGhpcyBkaXN0cmlidXRpb24uICBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZCBhdCAgaHR0cDovL29wZW5z b3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNlLnBocA0KIA0KQEAgLTExMiwxMCArMTEyLDMw IEBAIFB4ZUJjQ29uZmlndXJlVWRwV3JpdGVJbnN0YW5jZSAoDQogICB9DQogDQogICByZXR1cm4g U3RhdHVzOw0KIH0NCiANCisvKioNCisgIFRoaXMgZnVuY3Rpb24gaXMgdG8gZGlzcGxheSB0aGUg SVB2NCBhZGRyZXNzLg0KKw0KKyAgQHBhcmFtW2luXSAgSXAgICAgICAgIFRoZSBwb2ludGVyIHRv IHRoZSBJUHY0IGFkZHJlc3MuDQorDQorKiovDQorVk9JRA0KK1B4ZUJjU2hvd0lwNEFkZHIgKA0K KyAgSU4gRUZJX0lQdjRfQUREUkVTUyAgICpJcA0KKyAgKQ0KK3sNCisgIFVJTlROICAgICAgICAg ICAgICAgICBJbmRleDsNCisNCisgIGZvciAoSW5kZXggPSAwOyBJbmRleCA8IDQ7IEluZGV4Kysp IHsNCisgICAgQXNjaWlQcmludCAoIiVkIiwgSXAtPkFkZHJbSW5kZXhdKTsNCisgICAgaWYgKElu ZGV4IDwgMykgew0KKyAgICAgIEFzY2lpUHJpbnQgKCIuIik7DQorICAgIH0NCisgIH0NCit9DQog DQogLyoqDQogICBDb252ZXJ0IG51bWJlciB0byBBU0NJSSB2YWx1ZS4NCiANCiAgIEBwYXJhbSAg TnVtYmVyICAgICAgICAgICAgICBOdW1lcmljIHZhbHVlIHRvIGNvbnZlcnQgdG8gZGVjaW1hbCBB U0NJSSB2YWx1ZS4NCmRpZmYgLS1naXQgYS9NZGVNb2R1bGVQa2cvVW5pdmVyc2FsL05ldHdvcmsv VWVmaVB4ZUJjRHhlL1B4ZUJjU3VwcG9ydC5oIGIvTWRlTW9kdWxlUGtnL1VuaXZlcnNhbC9OZXR3 b3JrL1VlZmlQeGVCY0R4ZS9QeGVCY1N1cHBvcnQuaA0KaW5kZXggMTZhYzA1ZS4uNTllOWIzMiAx MDA2NDQNCi0tLSBhL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9VZWZpUHhlQmNEeGUv UHhlQmNTdXBwb3J0LmgNCisrKyBiL01kZU1vZHVsZVBrZy9Vbml2ZXJzYWwvTmV0d29yay9VZWZp UHhlQmNEeGUvUHhlQmNTdXBwb3J0LmgNCkBAIC0xLDggKzEsOCBAQA0KIC8qKiBAZmlsZQ0KICAg U3VwcG9ydCByb3V0aW5lcyBmb3IgUHhlQmMuDQotQ29weXJpZ2h0IChjKSAyMDA3IC0gMjAxNiwg SW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuPEJSPg0KK0NvcHlyaWdodCAo YykgMjAwNyAtIDIwMTcsIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLjxC Uj4NCiBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzICBhcmUgbGlj ZW5zZWQgYW5kIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBv ZiB0aGUgQlNEIExpY2Vuc2UgIHdoaWNoIGFjY29tcGFuaWVzIHRoaXMgZGlzdHJpYnV0aW9uLiAg VGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQgYXQgIGh0dHA6Ly9vcGVu c291cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCiANCkBAIC02NSwxMCArNjUsMjQg QEAgUHhlQmNDb25maWd1cmVVZHBXcml0ZUluc3RhbmNlICgNCiAgIElOIEVGSV9JUHY0X0FERFJF U1MgICAqR2F0ZXdheSwNCiAgIElOIE9VVCBVSU5UMTYgICAgICAgICAqU3JjUG9ydCwNCiAgIElO ICAgICBVSU5UOCAgICAgICAgICBUdGwsDQogICBJTiAgICAgVUlOVDggICAgICAgICAgVG9TDQog ICApOw0KKw0KKw0KKy8qKg0KKyAgVGhpcyBmdW5jdGlvbiBpcyB0byBkaXNwbGF5IHRoZSBJUHY0 IGFkZHJlc3MuDQorDQorICBAcGFyYW1baW5dICBJcCAgICAgICAgVGhlIHBvaW50ZXIgdG8gdGhl IElQdjQgYWRkcmVzcy4NCisNCisqKi8NCitWT0lEDQorUHhlQmNTaG93SXA0QWRkciAoDQorICBJ TiBFRklfSVB2NF9BRERSRVNTICAgKklwDQorICApOw0KKyAgDQorDQogLyoqDQogICBDb252ZXJ0 IG51bWJlciB0byBBU0NJSSB2YWx1ZS4NCiANCiAgIEBwYXJhbSAgTnVtYmVyICAgICAgICAgICAg ICBOdW1lcmljIHZhbHVlIHRvIGNvbnZlcnQgdG8gZGVjaW1hbCBBU0NJSSB2YWx1ZS4NCiAgIEBw YXJhbSAgQnVmZmVyICAgICAgICAgICAgICBCdWZmZXIgdG8gcGxhY2UgQVNDSUkgdmVyc2lvbiBv ZiB0aGUgTnVtYmVyLg0KLS0NCjEuOS41Lm1zeXNnaXQuMQ0KDQo=