From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mx.groups.io; dkim=missing; spf=pass (domain: intel.com, ip: 134.134.136.31, mailfrom: bob.c.feng@intel.com) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by groups.io with SMTP; Wed, 08 May 2019 21:02:21 -0700 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 08 May 2019 21:02:20 -0700 X-ExtLoop1: 1 Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga005.fm.intel.com with ESMTP; 08 May 2019 21:02:20 -0700 Received: from fmsmsx154.amr.corp.intel.com (10.18.116.70) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 8 May 2019 21:02:20 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by FMSMSX154.amr.corp.intel.com (10.18.116.70) with Microsoft SMTP Server (TLS) id 14.3.408.0; Wed, 8 May 2019 21:02:19 -0700 Received: from shsmsx101.ccr.corp.intel.com ([169.254.1.129]) by SHSMSX104.ccr.corp.intel.com ([169.254.5.33]) with mapi id 14.03.0415.000; Thu, 9 May 2019 12:02:18 +0800 From: "Bob Feng" To: Laszlo Ersek , Leif Lindholm , "Fan, ZhijuX" CC: Andrew Fish , "devel@edk2.groups.io" , "Gao, Liming" , "Kinney, Michael D" Subject: Re: [edk2-devel] [PATCH V2] BaseTools:improve code to support C files with .C suffixes Thread-Topic: [edk2-devel] [PATCH V2] BaseTools:improve code to support C files with .C suffixes Thread-Index: AQHVBUIMV+gbpQJN5ky6EbLcEhxg/aZgatcAgAAeGYCAABPngIAAgREAgAD23dA= Date: Thu, 9 May 2019 04:02:17 +0000 Message-ID: <08650203BA1BD64D8AD9B6D5D74A85D160109277@SHSMSX101.ccr.corp.intel.com> References: <5C1A24BA-648D-4A3F-AE88-034073AB5C13@apple.com> <20190507144002.gq3rdtappd3rupmd@bivouac.eciton.net> <55FC6AA1-43B5-4557-8A17-0E3B00E3EE9A@apple.com> <20190508090926.4r4e6jqlg45yg6yp@bivouac.eciton.net> <20190508120823.urob54m7tojotq7n@bivouac.eciton.net> In-Reply-To: Accept-Language: zh-CN, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.239.127.40] MIME-Version: 1.0 Return-Path: bob.c.feng@intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SSBhZ3JlZSB3aXRoIHlvdXIgcG9pbnQuIEknbGwgbm90IHB1c2ggdGhpcyBwYXRjaCB0byBlZGsy IG1hc3Rlci4NCg0KU28gZmFyIEkndmUgc2VlbiB0aGVyZSBpcyBvbmx5IG9uZSBmaWxlIHdpdGgg ZXh0ZW5zaW9uICIuQyIgaW4gb25lIHBsYXRmb3JtIHBhY2thZ2UuIEkndmUgYXNrZWQgdGhlIG93 bmVyIHRvIGNoYW5nZSBpdCB0byBsb3dlciBjYXNlICIuYyIuDQoNCkkgZW50ZXIgYW4gQlo6IGh0 dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc5MCB0byBjbGVh biB1cCB0aGUgIi5DIiBzdXBwb3J0IGluIEJhc2VUb29scy4NCg0KVGhhbmtzLA0KQm9iDQoNCi0t LS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQpGcm9tOiBMYXN6bG8gRXJzZWsgW21haWx0bzpsZXJz ZWtAcmVkaGF0LmNvbV0gDQpTZW50OiBUaHVyc2RheSwgTWF5IDksIDIwMTkgMzo1MCBBTQ0KVG86 IExlaWYgTGluZGhvbG0gPGxlaWYubGluZGhvbG1AbGluYXJvLm9yZz47IEZhbiwgWmhpanVYIDx6 aGlqdXguZmFuQGludGVsLmNvbT4NCkNjOiBBbmRyZXcgRmlzaCA8YWZpc2hAYXBwbGUuY29tPjsg ZGV2ZWxAZWRrMi5ncm91cHMuaW87IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT47 IEZlbmcsIEJvYiBDIDxib2IuYy5mZW5nQGludGVsLmNvbT47IEtpbm5leSwgTWljaGFlbCBEIDxt aWNoYWVsLmQua2lubmV5QGludGVsLmNvbT4NClN1YmplY3Q6IFJlOiBbZWRrMi1kZXZlbF0gW1BB VENIIFYyXSBCYXNlVG9vbHM6aW1wcm92ZSBjb2RlIHRvIHN1cHBvcnQgQyBmaWxlcyB3aXRoIC5D IHN1ZmZpeGVzDQoNCk9uIDA1LzA4LzE5IDE0OjA4LCBMZWlmIExpbmRob2xtIHdyb3RlOg0KPiBI aSBGYW4gWmhpanUsDQo+IA0KPiBJIHVuZGVyc3RhbmQgeW91ciByZWFzb25pbmcsIGJ1dCB0aGF0 IHN0cmVuZ3RoZW5zIG15IHZpZXcgdGhhdCB3ZSANCj4gc2hvdWxkIGxlYXZlIHRoaXMgY2hhbmdl IG91dC4NCj4gDQo+IEFjdHVhbGx5LCBjb3VsZCB3ZSBjb25zaWRlciAqZHJvcHBpbmcqIHN1cHBv cnQgZm9yIC5DIGZpbGVzIA0KPiBhbHRvZ2V0aGVyLCBzaW5jZSB3ZSBhcmUgc3RyaXZpbmcgdG8g c3VwcG9ydCBtdWx0aXBsZSB0b29sY2hhaW5zLCBhbmQgDQo+IHRoZSB0d28gbWFqb3IgZmFtaWxp ZXMgb2YgdG9vbGNoYWlucyB3ZSB1c2UgY29uc2lkZXIgLkMgZmlsZXMgdG8gYmUgDQo+IGZ1bmRh bWVudGFsbHkgZGlmZmVyZW50IHRoaW5ncz8NCj4gDQo+IEFuZHJldywgTGFzemxvLCBNaWtlPw0K DQpJIGFncmVlIC0tIG9uIGFueSBjYXNlLXNlbnNpdGl2ZSBmaWxlc3lzdGVtLCB0aGUgIi5DIiBz dWZmaXggaW1wbGllcyB0aGUNCkMrKyBsYW5ndWFnZS4gKE1pbmltYWxseSBmb3IgZ2NjLCBub3Qg c3VyZSBhYm91dCB0aGUgcmVzdC4pDQoNCkluIHRoZSBmaXJzdCBwbGFjZSwgd2Ugc2hvdWxkIG5l dmVyICpoYXZlKiBhIGZpbGUgaW4gdGhlIGVkazIgdHJlZSB0aGF0IGVuZHMgd2l0aCB0aGUgdXBw ZXItY2FzZSAiLkMiIHN1ZmZpeCwgZHVlIHRvIHRoZSBhYm92ZS4gKEMrKyBpcyBub3QgYSBzdXBw b3J0ZWQgbGFuZ3VhZ2UgaW4gZWRrMi4pIEFuZCBzbyB3ZSBkb24ndCBuZWVkIGFueSBCYXNlVG9v bHMgc3VwcG9ydCBmb3IgIi5DIiBlaXRoZXIuDQoNCklmIGFuIGV4dGVybmFsIHBsYXRmb3JtIG9m IFBhY2thZ2VzIHRyZWUgY29udGFpbnMgIi5DIiBmaWxlcywgdGhlbiB0aG9zZSBmaWxlcyBzaG91 bGQgYmUgcmVuYW1lZCB0byAiLmMiLCBpbiBteSBvcGluaW9uLiAoU29vbmVyIG9yIGxhdGVyIHNv bWVvbmUgd2lsbCB0cnkgdG8gYnVpbGQgdGhhdCB0cmVlIHdpdGggZ2NjIG9yIGNsYW5nLCBhbmQg dGhlbiBzdHVmZiB3aWxsIGJyZWFrDQpoYXJkLikNCg0KSnVzdCBteSAyIGNlbnRzLCBzaW5jZSBJ IHdhcyBhc2tlZC4NCg0KVGhhbmtzDQpMYXN6bG8NCg0KPiANCj4gQmVzdCBSZWdhcmRzLA0KPiAN Cj4gTGVpZg0KPiANCj4gT24gV2VkLCBNYXkgMDgsIDIwMTkgYXQgMTA6NTc6MDlBTSArMDAwMCwg RmFuLCBaaGlqdVggd3JvdGU6DQo+PiBIaSBMZWlmLA0KPj4NCj4+IFRoaXMgcGF0Y2ggaXMgZ29p bmcgdG8gZml4IHRoZSBidWcgaW4gY29tbWl0IDA1MjE3ZDIxMGUuDQo+PiB0aGlzIHBhdGNoIGFu ZCBjb21taXQgMDUyMTdkMjEwZSBpcyBqdXN0IGZvciBNU1ZDLiBJdCBkb2Vzbid0IGhhdmUgYW55 IGVmZmVjdCBvbiBHQ0MuDQo+PiB0aGlzIHBhdGNoIGRvZXMgbm90IGltcGx5IHRvIGNvbXBpbGUg LkMgYXMgQyBpbnN0ZWFkIG9mIEMrKy4NCj4+IFdlIGp1c3QgZm91bmQgb3V0IHRoYXQgdGhleSBi dWlsZCBicmVhayBiZWNhdXNlIHRoZS5DIGZpbGUgd2FzIGluIHRoZSANCj4+IHNvdXJjZSBmaWxl LCBCdXQgdGhlIE1TVkMgY29tcGlsZXIgYWxsb3dzLkMgZmlsZXMsU28gSSBmaXhlZCB0aGlzIGJ1 ZyB0byBDaGFuZ2UgdGhlIG9yaWdpbmFsIGxvZ2ljIHRvIHN1cHBvcnQuQyBmaWxlcy4NCj4+DQo+ Pg0KPj4gQW55IHF1ZXN0aW9uLCBwbGVhc2UgbGV0IG1lIGtub3cuIFRoYW5rcy4NCj4+DQo+PiBC ZXN0IFJlZ2FyZHMNCj4+IEZhbiBaaGlqdQ0KPj4NCj4+DQo+Pg0KPj4NCj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPj4+IEZyb206IExlaWYgTGluZGhvbG0gW21haWx0bzpsZWlmLmxp bmRob2xtQGxpbmFyby5vcmddDQo+Pj4gU2VudDogV2VkbmVzZGF5LCBNYXkgOCwgMjAxOSA1OjA5 IFBNDQo+Pj4gVG86IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+DQo+Pj4gQ2M6IGRldmVs QGVkazIuZ3JvdXBzLmlvOyBGYW4sIFpoaWp1WCA8emhpanV4LmZhbkBpbnRlbC5jb20+OyBHYW8s IA0KPj4+IExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5jb20+OyBGZW5nLCBCb2IgQyA8Ym9iLmMu ZmVuZ0BpbnRlbC5jb20+DQo+Pj4gU3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjJd IEJhc2VUb29sczppbXByb3ZlIGNvZGUgdG8gDQo+Pj4gc3VwcG9ydCBDIGZpbGVzIHdpdGggLkMg c3VmZml4ZXMNCj4+Pg0KPj4+IE9uIFR1ZSwgTWF5IDA3LCAyMDE5IGF0IDA3OjAxOjI2UE0gLTA3 MDAsIEFuZHJldyBGaXNoIHdyb3RlOg0KPj4+Pg0KPj4+Pg0KPj4+Pj4gT24gTWF5IDcsIDIwMTks IGF0IDc6NDAgQU0sIExlaWYgTGluZGhvbG0gDQo+Pj4+PiA8bGVpZi5saW5kaG9sbUBsaW5hcm8u b3JnPg0KPj4+IHdyb3RlOg0KPj4+Pj4NCj4+Pj4+IEhpIEZhbiBaaGlqdSwNCj4+Pj4+DQo+Pj4+ PiBCdXQgd2hlcmUgZG9lcyB0aGUgc3RyaW5nIGNvbWUgZnJvbSB0aGF0IGNvbnRhaW5zIGEgLkMg c3VmZml4Pw0KPj4+Pj4gSXMgdGhlIHRvb2wgaW50ZXJuYWxseSBjb252ZXJ0aW5nIHRoaW5ncyB0 byB1cHBlcmNhc2UsIG9yIGlzIHNvbWUgDQo+Pj4+PiBzb3VyY2UgZmlsZSBpbiB0aGUgYnVpbGQg aW5jb3JyZWN0bHkgbmFtZWQ/DQo+Pj4+Pg0KPj4+Pg0KPj4+PiBMZWlmLA0KPj4+Pg0KPj4+PiBP dXIgYnVpbGQgc3lzdGVtIGRlZmluZXMgLkMgYXMgY29ycmVjdCEgSSB0aGluayBpdCBoYXMgYmVl biB0aGF0IA0KPj4+PiB3YXkgYSB2ZXJ5DQo+Pj4gbG9uZyB0aW1lLg0KPj4+DQo+Pj4gLkMgaXMg dmFsaWQsIGJ1dCBhdCBsZWFzdCBmb3IgR0NDIGl0IGlzIGVxdWl2YWxlbnQgdG8gYWxsIG9mIHRo ZSANCj4+PiBvdGhlciBub24tLmMgb3B0aW9ucyAtIGkuZS4sIGludGVycHJldCBhcyBjKysuIFdo aWNoIGlzIHdoeSBJIGFtIA0KPj4+IHdvbmRlcmluZyBhYm91dCB0aGUgY2FzZSB0aGF0IGVuZHMg dXAgd2l0aCB0aGUgYnVpbGQgc3lzdGVtIGludGVybmFsbHkgcHJvY2Vzc2luZyB0aGlzLg0KPj4+ DQo+Pj4gSWYgaXQgaXMgY2hhbmdlZCB0byBwZXJtaXR0aW5nIC5DIGZpbGVzIHRvIGJlIGNvbXBp bGVkIGFzIEMgaW5zdGVhZCANCj4+PiBvZg0KPj4+IEMrKyAod2hpY2ggdGhlIHBhdGNoIHNlZW1z IHRvIGltcGx5KSwgdGhhdCBzb3VuZHMgaW5jb3JyZWN0IHRvIG1lLg0KPj4+DQo+Pj4gLw0KPj4+ ICAgICBMZWlmDQo+Pj4NCj4+Pj4NCj4+PiBodHRwczovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2Vk azIvYmxvYi9tYXN0ZXIvQmFzZVRvb2xzL0NvbmYvYnVpbGRfcg0KPj4+IHVsDQo+Pj4+IGUudGVt cGxhdGUjTDEwOQ0KPj4+Pg0KPj4+PiBbQy1Db2RlLUZpbGVdDQo+Pj4+ICAgICA8SW5wdXRGaWxl Pg0KPj4+PiAgICAgICAgID8uYw0KPj4+PiAgICAgICAgID8uQw0KPj4+PiAgICAgICAgID8uY2MN Cj4+Pj4gICAgICAgICA/LkNDDQo+Pj4+ICAgICAgICAgPy5jcHANCj4+Pj4gICAgICAgICA/LkNw cA0KPj4+PiAgICAgICAgID8uQ1BQDQo+Pj4+DQo+Pj4+IFRoYW5rcywNCj4+Pj4NCj4+Pj4gQW5k cmV3IEZpc2gNCj4+Pj4NCj4+Pj4NCj4+Pj4+IEkgYW0gYXNraW5nIGJlY2F1c2UgaXQgaXMgbm90 IGNsZWFyIHRvIG1lIHdoZXRoZXIgdGhlIHBhdGNoIA0KPj4+Pj4gcmVzb2x2ZXMgYSBwcm9ibGVt IG9yIGhpZGVzIG9uZS4NCj4+Pj4+DQo+Pj4+PiBCZXN0IFJlZ2FyZHMsDQo+Pj4+Pg0KPj4+Pj4g TGVpZg0KPj4+Pj4NCj4+Pj4+IE9uIFR1ZSwgTWF5IDA3LCAyMDE5IGF0IDAzOjA1OjAyQU0gKzAw MDAsIEZhbiwgWmhpanVYIHdyb3RlOg0KPj4+Pj4+IFRoaXMgcHJvYmxlbSBoYXMgbm90aGluZyB0 byBkbyB3aXRoIHRoZSBmaWxlIHN5c3RlbSwgV2UganVzdCB1c2UgDQo+Pj4+Pj4gdGhlIGZpbGVu YW1lIGFzIGEgc3RyaW5nIHRvIGNvbXBhcmUgd2l0aCBvdGhlciBzdHJpbmdzIE91ciANCj4+Pj4+ PiB1bml0dGVzdCB0ZXN0ZWQgbWlucGxhdGZvcm0sIE92bWYuIFRoaXMgcHJvYmxlbSB3YXMgZm91 bmQgd2hlbiANCj4+Pj4+PiBidWlsZGluZyBhIHBsYXRmb3JtIGluc2lkZSBJbnRlbC4NCj4+Pj4+ PiBXZSd2ZSB0ZXN0ZWQgaXQgb24gTGludXggYW5kIFdpbmRvd3MuDQo+Pj4+Pj4NCj4+Pj4+PiBB bnkgcXVlc3Rpb24sIHBsZWFzZSBsZXQgbWUga25vdy4gVGhhbmtzLg0KPj4+Pj4+DQo+Pj4+Pj4g QmVzdCBSZWdhcmRzDQo+Pj4+Pj4gRmFuIFpoaWp1DQo+Pj4+Pj4NCj4+Pj4+PiAtLS0tLU9yaWdp bmFsIE1lc3NhZ2UtLS0tLQ0KPj4+Pj4+IEZyb206IGFmaXNoQGFwcGxlLmNvbSBbbWFpbHRvOmFm aXNoQGFwcGxlLmNvbV0NCj4+Pj4+PiBTZW50OiBUdWVzZGF5LCBNYXkgNywgMjAxOSAxMDozMSBB TQ0KPj4+Pj4+IFRvOiBkZXZlbEBlZGsyLmdyb3Vwcy5pbzsgRmFuLCBaaGlqdVggPHpoaWp1eC5m YW5AaW50ZWwuY29tPg0KPj4+Pj4+IENjOiBHYW8sIExpbWluZyA8bGltaW5nLmdhb0BpbnRlbC5j b20+OyBGZW5nLCBCb2IgQyANCj4+Pj4+PiA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+DQo+Pj4+Pj4g U3ViamVjdDogUmU6IFtlZGsyLWRldmVsXSBbUEFUQ0ggVjJdIEJhc2VUb29sczppbXByb3ZlIGNv ZGUgdG8gDQo+Pj4+Pj4gc3VwcG9ydCBDIGZpbGVzIHdpdGggLkMgc3VmZml4ZXMNCj4+Pj4+Pg0K Pj4+Pj4+IFRoaXMgYnJpbmdzIHVwIGEgcXVlc3Rpb24/IERvIHdlIHRlc3RzIG9uIGEgZmlsZSBz eXN0ZW0gdGhhdCBpcyANCj4+Pj4+PiBjYXNlDQo+Pj4gc2Vuc2l0aXZlPyBJcyB0aGlzIGp1c3Qg bGFjayBvZiBhIHRlc3QgY2FzZT8NCj4+Pj4+Pg0KPj4+Pj4+IFRoYW5rcywNCj4+Pj4+Pg0KPj4+ Pj4+IEFuZHJldyBGaXNoDQo+Pj4+Pj4NCj4+Pj4+Pj4gT24gTWF5IDYsIDIwMTksIGF0IDc6MjIg UE0sIEZhbiwgWmhpanVYIDx6aGlqdXguZmFuQGludGVsLmNvbT4gd3JvdGU6DQo+Pj4+Pj4+DQo+ Pj4+Pj4+IEJaOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTE3NzMNCj4+Pj4+Pj4NCj4+Pj4+Pj4gQnVpbGQgYnJlYWsgaWYgQyBmaWxlIHN1ZmZpeGVzIG9m IG5hbWVkIC5DIGluc3RlYWQgb2YgLmMgQ29kZSANCj4+Pj4+Pj4gbm90IHJlY29nbml6ZSBmaWxl bmFtZXMgd2l0aCAuQyBzdWZmaXhlcy4NCj4+Pj4+Pj4NCj4+Pj4+Pj4gVGhpcyBwYXRjaCBhZGRz IGNvZGUgdG8gU3VwcG9ydCBib3RoIC5jIGZpbGUgYW5kIC5DIGZpbGUNCj4+Pj4+Pj4NCj4+Pj4+ Pj4gQ2M6IEJvYiBGZW5nIDxib2IuYy5mZW5nQGludGVsLmNvbT4NCj4+Pj4+Pj4gQ2M6IExpbWlu ZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPj4+Pj4+PiBTaWduZWQtb2ZmLWJ5OiBaaGlq dS5GYW4gPHpoaWp1eC5mYW5AaW50ZWwuY29tPg0KPj4+Pj4+PiAtLS0NCj4+Pj4+Pj4gQmFzZVRv b2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5IHwgMyArKy0NCj4+Pj4+Pj4gMSBm aWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQ0KPj4+Pj4+Pg0KPj4+ Pj4+PiBkaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtl LnB5DQo+Pj4+Pj4+IGIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9HZW5NYWtlLnB5 DQo+Pj4+Pj4+IGluZGV4IDBlMGY5ZmQ5YjAuLjg1OGRkZWRmOGUgMTAwNjQ0DQo+Pj4+Pj4+IC0t LSBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vR2VuTWFrZS5weQ0KPj4+Pj4+PiAr KysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9BdXRvR2VuL0dlbk1ha2UucHkNCj4+Pj4+Pj4g QEAgLTEwMzUsNyArMTAzNSw4IEBAIGNsZWFubGliOg0KPj4+Pj4+PiAgICAgICAgICAgICAgICAg ICAgICAgIENtZFRhcmdldERpY3RbQ21kU2lnbl0gPSAiJXMgJXMiICUNCj4+PiAoQ21kVGFyZ2V0 RGljdFtDbWRTaWduXSwgU2luZ2xlQ29tbWFuZExpc3RbLTFdKQ0KPj4+Pj4+PiAgICAgICAgICAg ICAgICAgICAgSW5kZXggPSBDb21tYW5kTGlzdC5pbmRleChJdGVtKQ0KPj4+Pj4+PiAgICAgICAg ICAgICAgICAgICAgQ29tbWFuZExpc3QucG9wKEluZGV4KQ0KPj4+Pj4+PiAtICAgICAgICAgICAg ICAgICAgICBpZiBTaW5nbGVDb21tYW5kTGlzdFstMV0uZW5kc3dpdGgoIiVzJXMuYyIgJSAoVEFC X1NMQVNILA0KPj4+IENtZFN1bURpY3RbQ21kU2lnbi5sc3RyaXAoJy9GbycpLnJzcGxpdChUQUJf U0xBU0gsIDEpWzBdXSkpOg0KPj4+Pj4+PiArICAgICAgICAgICAgICAgICAgICBpZiBTaW5nbGVD b21tYW5kTGlzdFstMV0uZW5kc3dpdGgoIiVzJXMuYyIgDQo+Pj4+Pj4+ICsgJQ0KPj4+IChUQUJf U0xBU0gsIENtZFN1bURpY3RbVC5UYXJnZXQuU3ViRGlyXSkpIG9yIFwNCj4+Pj4+Pj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICANCj4+Pj4+Pj4gKyBTaW5nbGVDb21tYW5kTGlzdFstMV0u ZW5kc3dpdGgoIiVzJXMuQyIgJQ0KPj4+IChUQUJfU0xBU0gsIENtZFN1bURpY3RbVC5UYXJnZXQu U3ViRGlyXSkpOg0KPj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIENwcGxpc3QgPSBDbWRD cHBEaWN0W1QuVGFyZ2V0LlN1YkRpcl0NCj4+Pj4+Pj4gICAgICAgICAgICAgICAgICAgICAgICBD cHBsaXN0Lmluc2VydCgwLCAnJChPQkpMSVNUXyVkKTogDQo+Pj4+Pj4+ICQoQ09NTU9OX0RFUFMp JyAlDQo+Pj4gbGlzdChzZWxmLk9ialRhcmdldERpY3Qua2V5cygpKS5pbmRleChULlRhcmdldC5T dWJEaXIpKQ0KPj4+Pj4+PiAgICAgICAgICAgICAgICAgICAgICAgIFQuQ29tbWFuZHNbSW5kZXhd ID0gJyVzXG5cdCVzJyAlICgnDQo+Pj4+Pj4+IFxcXG5cdCcuam9pbihDcHBsaXN0KSwgQ21kVGFy Z2V0RGljdFtDbWRTaWduXSkNCj4+Pj4+Pj4gLS0NCj4+Pj4+Pj4gMi4xNC4xLndpbmRvd3MuMQ0K Pj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+Pg0KPj4+Pj4+PiA8d2lubWFpbC5kYXQ+ DQo+Pj4+Pj4NCj4+Pj4+Pg0KPj4+Pj4+DQo+Pj4+Pj4NCj4+Pj4+DQo+Pj4+PiANCj4+Pj4NCg0K