From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=134.134.136.126; helo=mga18.intel.com; envelope-from=liming.gao@intel.com; receiver=edk2-devel@lists.01.org Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) (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 BC654211B1F9E for ; Sun, 13 Jan 2019 23:22:21 -0800 (PST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga002.jf.intel.com ([10.7.209.21]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 13 Jan 2019 23:22:21 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.56,476,1539673200"; d="scan'208";a="125825974" Received: from fmsmsx104.amr.corp.intel.com ([10.18.124.202]) by orsmga002.jf.intel.com with ESMTP; 13 Jan 2019 23:22:21 -0800 Received: from fmsmsx116.amr.corp.intel.com (10.18.116.20) by fmsmsx104.amr.corp.intel.com (10.18.124.202) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 13 Jan 2019 23:22:20 -0800 Received: from shsmsx101.ccr.corp.intel.com (10.239.4.153) by fmsmsx116.amr.corp.intel.com (10.18.116.20) with Microsoft SMTP Server (TLS) id 14.3.408.0; Sun, 13 Jan 2019 23:22:20 -0800 Received: from shsmsx152.ccr.corp.intel.com ([169.254.6.44]) by SHSMSX101.ccr.corp.intel.com ([169.254.1.196]) with mapi id 14.03.0415.000; Mon, 14 Jan 2019 15:22:17 +0800 From: "Gao, Liming" To: "Feng, Bob C" , Ard Biesheuvel CC: "edk2-devel@lists.01.org" , "Carsey, Jaben" Thread-Topic: [edk2] [Patch] BaseTools: Enable component override functionality Thread-Index: AQHUqVbQMrFVadgdMkS7KfQHQc+BYaWuF98w//+8LYCAAIbgYP//fNgAgAACJQCAAIbbwA== Date: Mon, 14 Jan 2019 07:22:16 +0000 Message-ID: <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B1219@SHSMSX152.ccr.corp.intel.com> References: <20190111023851.9172-1-bob.c.feng@intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B0FD1@SHSMSX152.ccr.corp.intel.com> <4A89E2EF3DFEDB4C8BFDE51014F606A14E3B11BA@SHSMSX152.ccr.corp.intel.com> <08650203BA1BD64D8AD9B6D5D74A85D16005839F@SHSMSX101.ccr.corp.intel.com> In-Reply-To: <08650203BA1BD64D8AD9B6D5D74A85D16005839F@SHSMSX101.ccr.corp.intel.com> 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] BaseTools: Enable component override functionality 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: Mon, 14 Jan 2019 07:22:22 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 QXJkOg0KICBDb3VsZCB5b3UgbGV0IG1lIGtub3cgd2hpY2ggcGxhdGZvcm0gZG8geW91IHVzZT8g V2Ugd2lsbCB2ZXJpZnkgaXQgZm9yIHRoZSBiYXNlIHRvb2xzIGNoYW5nZS4gDQoNClRoYW5rcw0K TGltaW5nDQo+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBGZW5nLCBCb2IgQw0K PlNlbnQ6IE1vbmRheSwgSmFudWFyeSAxNCwgMjAxOSAzOjE5IFBNDQo+VG86IEFyZCBCaWVzaGV1 dmVsIDxhcmQuYmllc2hldXZlbEBsaW5hcm8ub3JnPjsgR2FvLCBMaW1pbmcNCj48bGltaW5nLmdh b0BpbnRlbC5jb20+DQo+Q2M6IGVkazItZGV2ZWxAbGlzdHMuMDEub3JnOyBDYXJzZXksIEphYmVu IDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJFOiBbZWRrMl0gW1BhdGNoXSBC YXNlVG9vbHM6IEVuYWJsZSBjb21wb25lbnQgb3ZlcnJpZGUNCj5mdW5jdGlvbmFsaXR5DQo+DQo+ U29ycnkgZm9yIGJyZWFrIHlvdXIgYnVpbGQuDQo+DQo+WWVzLiBJJ2xsIGRvdWJsZSB0ZXN0IHRo ZSBjb2RlIGJlZm9yZSBwdXNoaW5nIGl0IG5leHQgdGltZS4NCj4NCj4tQm9iDQo+DQo+LS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCj5Gcm9tOiBBcmQgQmllc2hldXZlbCBbbWFpbHRvOmFyZC5i aWVzaGV1dmVsQGxpbmFyby5vcmddDQo+U2VudDogTW9uZGF5LCBKYW51YXJ5IDE0LCAyMDE5IDM6 MTEgUE0NCj5UbzogR2FvLCBMaW1pbmcgPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPkNjOiBGZW5n LCBCb2IgQyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZzsg Q2Fyc2V5LA0KPkphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPg0KPlN1YmplY3Q6IFJlOiBb ZWRrMl0gW1BhdGNoXSBCYXNlVG9vbHM6IEVuYWJsZSBjb21wb25lbnQgb3ZlcnJpZGUNCj5mdW5j dGlvbmFsaXR5DQo+DQo+T24gTW9uLCAxNCBKYW4gMjAxOSBhdCAwODowMSwgR2FvLCBMaW1pbmcg PGxpbWluZy5nYW9AaW50ZWwuY29tPiB3cm90ZToNCj4+DQo+PiBBcmQ6DQo+PiAgIFNvcnJ5IGZv ciB0aGlzIGJyZWFrLCBCb2IganVzdCBzZW50IGhvdCBmaXggZm9yIHRoaXMgaXNzdWUgaW4NCj5o dHRwczovL2xpc3RzLjAxLm9yZy9waXBlcm1haWwvZWRrMi1kZXZlbC8yMDE5LUphbnVhcnkvMDM0 OTQ3Lmh0bWwuIENvdWxkDQo+eW91IHZlcmlmeSBpdD8NCj4+ICAgSW4gZmFjdCwgaXQgaXMgY2F1 c2VkIGJ5IHByZXZpb3VzIHBhdGNoIHRvIHJlbW92ZSBFREsgc3VwcG9ydCBpbiBCYXNlVG9vbHMN Cj5QeXRob24gY29kZS4NCj4+DQo+DQo+T0ssIHRoYXQgcGF0Y2ggZml4ZXMgaXQgZm9yIG1lLg0K Pg0KPkJ1dCBtYXkgSSBraW5kbHkgc3VnZ2VzdCB0aGF0IEJvYiB0ZXN0cyBoaXMgY29kZSBiZWZv cmUgcHVzaGluZyBpdD8gVGhhbmtzLg0KPg0KPg0KPj4gPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0t LS0tDQo+PiA+RnJvbTogQXJkIEJpZXNoZXV2ZWwgW21haWx0bzphcmQuYmllc2hldXZlbEBsaW5h cm8ub3JnXQ0KPj4gPlNlbnQ6IE1vbmRheSwgSmFudWFyeSAxNCwgMjAxOSAyOjU4IFBNDQo+PiA+ VG86IEdhbywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4NCj4+ID5DYzogRmVuZywgQm9i IEMgPGJvYi5jLmZlbmdAaW50ZWwuY29tPjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc7DQo+PiA+ Q2Fyc2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT4NCj4+ID5TdWJqZWN0OiBSZTog W2VkazJdIFtQYXRjaF0gQmFzZVRvb2xzOiBFbmFibGUgY29tcG9uZW50IG92ZXJyaWRlDQo+PiA+ ZnVuY3Rpb25hbGl0eQ0KPj4gPg0KPj4gPk9uIE1vbiwgMTQgSmFuIDIwMTkgYXQgMDQ6MDAsIEdh bywgTGltaW5nIDxsaW1pbmcuZ2FvQGludGVsLmNvbT4gd3JvdGU6DQo+PiA+Pg0KPj4gPj4gUmV2 aWV3ZWQtYnk6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPj4gPj4NCj4+ID4N Cj4+ID5UaGlzIHBhdGNoIGJyZWFrcyB0aGUgYnVpbGQgb24gQUFyY2g2NC9HR0M6DQo+PiA+DQo+ PiA+KFB5dGhvbiAyLjcuMTMgb24gbGludXgyKSBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwg bGFzdCk6DQo+PiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10 aWFub2NvcmUtZWRrMi0NCj4+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9CaW5XcmFwcGVy cy9Qb3NpeExpa2UvLi4vLi4vU291cmNlL1B5dGhvDQo+bi8NCj4+ID5iDQo+PiA+dWlsZC9idWls ZC5weSIsPg0KPj4gPmxpbmUgMjQwMywgaW4gTWFpbg0KPj4gPiAgICBNeUJ1aWxkLkxhdW5jaCgp DQo+PiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2Nv cmUtZWRrMi0NCj4+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9CaW5XcmFwcGVycy9Qb3Np eExpa2UvLi4vLi4vU291cmNlL1B5dGhvDQo+bi8NCj4+ID5iDQo+PiA+dWlsZC9idWlsZC5weSIs Pg0KPj4gPmxpbmUgMjEzNywgaW4gTGF1bmNoDQo+PiA+ICAgIHNlbGYuX011bHRpVGhyZWFkQnVp bGRQbGF0Zm9ybSgpDQo+PiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWct dmlydC10aWFub2NvcmUtZWRrMi0NCj4+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9CaW5X cmFwcGVycy9Qb3NpeExpa2UvLi4vLi4vU291cmNlL1B5dGhvDQo+bi8NCj4+ID5iDQo+PiA+dWls ZC9idWlsZC5weSIsPg0KPj4gPmxpbmUgMTkxNywgaW4gX011bHRpVGhyZWFkQnVpbGRQbGF0Zm9y bQ0KPj4gPiAgICBzZWxmLlByb2dyZXNzDQo+PiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8u b3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj4+ID51cHN0cmVhbS93cy9lZGsyL0Jh c2VUb29scy9Tb3VyY2UvUHl0aG9uL0F1dG9HZW4vQXV0b0dlbi5weSIsPg0KPj4gPmxpbmUgMjM5 LCBpbiBfX2luaXRfXw0KPj4gPiAgICBzZWxmLl9Jbml0V29ya2VyKFdvcmtzcGFjZSwgTWV0YUZp bGUsIFRhcmdldCwgVG9vbGNoYWluLCBBcmNoLA0KPj4gPiphcmdzLCAqKmt3YXJncykNCj4+ID4g IEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5vcmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1lZGsy LQ0KPj4gPnVwc3RyZWFtL3dzL2VkazIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vQXV0b0dlbi9B dXRvR2VuLnB5Iiw+DQo+PiA+bGluZSA0MDMsIGluIF9Jbml0V29ya2VyDQo+PiA+ICAgIFBsYXRm b3JtUGNkcyA9IFBsYXRmb3JtLlBjZHMNCj4+ID4gIEZpbGUgIjxodHRwczovL2NpLmxpbmFyby5v cmcvam9iL2xlZy12aXJ0LXRpYW5vY29yZS1lZGsyLQ0KPj4gPnVwc3RyZWFtL3dzL2VkazIvQmFz ZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1aWxkRGF0YS5wDQo+eSIsPg0KPj4g PmxpbmUgMTE5NCwgaW4gUGNkcw0KPj4gPiAgICBzZWxmLl9QY2RzID0gc2VsZi5VcGRhdGVTdHJ1 Y3R1cmVkUGNkcyhNT0RFTF9QQ0RfVFlQRV9MSVNULA0KPj4gPnNlbGYuX1BjZHMpDQo+PiA+ICBG aWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0N Cj4+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9E c2NCdWlsZERhdGEucA0KPnkiLD4NCj4+ID5saW5lIDE0ODYsIGluIFVwZGF0ZVN0cnVjdHVyZWRQ Y2RzDQo+PiA+ICAgIGZvciBQY2QgaW4gc2VsZi5EZWNQY2RzOg0KPj4gPiAgRmlsZSAiPGh0dHBz Oi8vY2kubGluYXJvLm9yZy9qb2IvbGVnLXZpcnQtdGlhbm9jb3JlLWVkazItDQo+PiA+dXBzdHJl YW0vd3MvZWRrMi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNjQnVpbGREYXRh LnANCj55Iiw+DQo+PiA+bGluZSAzMTgzLCBpbiBEZWNQY2RzDQo+PiA+ICAgIHNlbGYuX0RlY1Bj ZHMsIHNlbGYuX0d1aWREaWN0ID0gR2V0RGVjbGFyZWRQY2Qoc2VsZiwgc2VsZi5fQmRiLA0KPj4g PnNlbGYuX0FyY2gsIHNlbGYuX1RhcmdldCwgc2VsZi5fVG9vbGNoYWluLCBQa2dTZXQpDQo+PiA+ ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRr Mi0NCj4+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFj ZS9Xb3Jrc3BhY2VDbw0KPm1tDQo+PiA+b24ucHkiLD4NCj4+ID5saW5lIDYyLCBpbiBHZXREZWNs YXJlZFBjZA0KPj4gPiAgICBQa2dMaXN0ID0gR2V0UGFja2FnZUxpc3QoUGxhdGZvcm0sIEJ1aWxk RGF0YWJhc2UsIEFyY2gsIFRhcmdldCwNCj4+ID5Ub29sY2hhaW4pDQo+PiA+ICBGaWxlICI8aHR0 cHM6Ly9jaS5saW5hcm8ub3JnL2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj4+ID51cHN0 cmVhbS93cy9lZGsyL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Xb3Jrc3BhY2VD bw0KPm1tDQo+PiA+b24ucHkiLD4NCj4+ID5saW5lIDQ0LCBpbiBHZXRQYWNrYWdlTGlzdA0KPj4g PiAgICBmb3IgTW9kdWxlRmlsZSBpbiBQbGF0Zm9ybS5Nb2R1bGVzOg0KPj4gPiAgRmlsZSAiPGh0 dHBzOi8vY2kubGluYXJvLm9yZy9qb2IvbGVnLXZpcnQtdGlhbm9jb3JlLWVkazItDQo+PiA+dXBz dHJlYW0vd3MvZWRrMi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvRHNjQnVpbGRE YXRhLnANCj55Iiw+DQo+PiA+bGluZSA3MjgsIGluIE1vZHVsZXMNCj4+ID4gICAgc2VsZi5PdmVy cmlkZUR1cGxpY2F0ZU1vZHVsZSgpDQo+PiA+ICBGaWxlICI8aHR0cHM6Ly9jaS5saW5hcm8ub3Jn L2pvYi9sZWctdmlydC10aWFub2NvcmUtZWRrMi0NCj4+ID51cHN0cmVhbS93cy9lZGsyL0Jhc2VU b29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucA0KPnkiLD4NCj4+ID5s aW5lIDcxMiwgaW4gT3ZlcnJpZGVEdXBsaWNhdGVNb2R1bGUNCj4+ID4gICAgTWFjcm9zWyJFREtf U09VUkNFIl0gPSBHbG9iYWxEYXRhLmdFY3BTb3VyY2UNCj4+ID5BdHRyaWJ1dGVFcnJvcjogJ21v ZHVsZScgb2JqZWN0IGhhcyBubyBhdHRyaWJ1dGUgJ2dFY3BTb3VyY2UnDQo+PiA+DQo+PiA+DQo+ PiA+DQo+PiA+PiA+LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4+ID4+ID5Gcm9tOiBGZW5n LCBCb2IgQw0KPj4gPj4gPlNlbnQ6IEZyaWRheSwgSmFudWFyeSAxMSwgMjAxOSAxMDozOSBBTQ0K Pj4gPj4gPlRvOiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPj4gPj4gPkNjOiBGZW5nLCBCb2Ig QyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+OyBHYW8sIExpbWluZw0KPj4gPj4gPjxsaW1pbmcuZ2Fv QGludGVsLmNvbT47IENhcnNleSwgSmFiZW4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+DQo+PiA+ PiA+U3ViamVjdDogW1BhdGNoXSBCYXNlVG9vbHM6IEVuYWJsZSBjb21wb25lbnQgb3ZlcnJpZGUN Cj4+ID4+ID5mdW5jdGlvbmFsaXR5DQo+PiA+PiA+DQo+PiA+PiA+aHR0cHM6Ly9idWd6aWxsYS50 aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQ5DQo+PiA+PiA+VGhpcyBwYXRjaCBlbmFi bGUgYnVpbGQgdG9vbHMgdG8gcmVjb2duaXplIHRoYXQgd2hlbiB0d28gZ2l2ZW4NCj4+ID4+ID5m aWxlcyBoYXZlIHRoZSBzYW1lIEdVSUQsIGZpbGUgcGF0aCBhbmQgQVJDSCBpbiBEc2MsIFRoZSBs YXRlcg0KPj4gPj4gPm9uZSdzIGRlZmluaXRpb24gd2lsbCBiZSB1c2VkLg0KPj4gPj4gPg0KPj4g Pj4gPkNvbnRyaWJ1dGVkLXVuZGVyOiBUaWFub0NvcmUgQ29udHJpYnV0aW9uIEFncmVlbWVudCAx LjENCj4+ID4+ID5TaWduZWQtb2ZmLWJ5OiBCb2IgRmVuZyA8Ym9iLmMuZmVuZ0BpbnRlbC5jb20+ DQo+PiA+PiA+Q2M6IExpbWluZyBHYW8gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPj4gPj4gPkNj OiBDYXJzZXkgSmFiZW4gPGphYmVuLmNhcnNleUBpbnRlbC5jb20+DQo+PiA+PiA+LS0tDQo+PiA+ PiA+IC4uLi9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9Ec2NCdWlsZERhdGEucHkgICB8IDI0ICsr KysrKysrKysrKy0tLQ0KPi0tLQ0KPj4gPi0NCj4+ID4+ID4gLi4uL1NvdXJjZS9QeXRob24vV29y a3NwYWNlL01ldGFGaWxlUGFyc2VyLnB5IHwgIDUgKysrKw0KPj4gPj4gPiAuLi4vU291cmNlL1B5 dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVUYWJsZS5weSAgfCAgNyArKysrLS0NCj4+ID4+ID4gMyBm aWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkNCj4+ID4+ID4N Cj4+ID4+ID5kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0Rz Y0J1aWxkRGF0YS5weQ0KPj4gPj4gPmIvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNl L0RzY0J1aWxkRGF0YS5weQ0KPj4gPj4gPmluZGV4IDdlODJlOGU5MzQuLmY5ODA1ZjU4ZjUgMTAw NjQ0DQo+PiA+PiA+LS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL0RzY0J1 aWxkRGF0YS5weQ0KPj4gPj4gPisrKyBiL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFj ZS9Ec2NCdWlsZERhdGEucHkNCj4+ID4+ID5AQCAtNzA0LDM2ICs3MDQsNDQgQEAgY2xhc3MgRHNj QnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFzc09iamVjdCk6DQo+PiA+PiA+ICAgICAgICAgICAg IGlmIFRBQl9ERUZBVUxUX1NUT1JFU19ERUZBVUxUIG5vdCBpbiBzZWxmLkRlZmF1bHRTdG9yZXM6 DQo+PiA+PiA+ICAgICAgICAgICAgICAgICBzZWxmLkRlZmF1bHRTdG9yZXNbVEFCX0RFRkFVTFRf U1RPUkVTX0RFRkFVTFRdID0NCj4+ID4+ID4oMCwNCj4+ID4+ID5UQUJfREVGQVVMVF9TVE9SRVNf REVGQVVMVCkNCj4+ID4+ID4gICAgICAgICAgICAgR2xvYmFsRGF0YS5nRGVmYXVsdFN0b3JlcyA9 IHNvcnRlZChzZWxmLkRlZmF1bHRTdG9yZXMua2V5cygpKQ0KPj4gPj4gPiAgICAgICAgIHJldHVy biBzZWxmLkRlZmF1bHRTdG9yZXMNCj4+ID4+ID4NCj4+ID4+ID4rICAgIGRlZiBPdmVycmlkZUR1 cGxpY2F0ZU1vZHVsZShzZWxmKToNCj4+ID4+ID4rICAgICAgICBSZWNvcmRMaXN0ID0gc2VsZi5f UmF3RGF0YVtNT0RFTF9NRVRBX0RBVEFfQ09NUE9ORU5ULA0KPj4gPj4gPnNlbGYuX0FyY2hdDQo+ PiA+PiA+KyAgICAgICAgTWFjcm9zID0gc2VsZi5fTWFjcm9zDQo+PiA+PiA+KyAgICAgICAgTWFj cm9zWyJFREtfU09VUkNFIl0gPSBHbG9iYWxEYXRhLmdFY3BTb3VyY2UNCj4+ID4+ID4rICAgICAg ICBDb21wb25lbnRzID0ge30NCj4+ID4+ID4rICAgICAgICBmb3IgUmVjb3JkIGluIFJlY29yZExp c3Q6DQo+PiA+PiA+KyAgICAgICAgICAgIE1vZHVsZUlkID0gUmVjb3JkWzZdDQo+PiA+PiA+KyAg ICAgICAgICAgIGZpbGVfZ3VpZCA9IHNlbGYuX1Jhd0RhdGFbTU9ERUxfTUVUQV9EQVRBX0hFQURF UiwNCj4+ID5zZWxmLl9BcmNoLA0KPj4gPj4gPk5vbmUsIE1vZHVsZUlkXQ0KPj4gPj4gPisgICAg ICAgICAgICBmaWxlX2d1aWRfc3RyID0gZmlsZV9ndWlkWzBdWzJdIGlmIGZpbGVfZ3VpZCBlbHNl ICJOVUxMIg0KPj4gPj4gPisgICAgICAgICAgICBNb2R1bGVGaWxlID0gUGF0aENsYXNzKE5vcm1Q YXRoKFJlY29yZFswXSwgTWFjcm9zKSwNCj4+ID4+ID5HbG9iYWxEYXRhLmdXb3Jrc3BhY2UsIEFy Y2g9c2VsZi5fQXJjaCkNCj4+ID4+ID4rICAgICAgICAgICAgaWYgc2VsZi5fQXJjaCAhPSBUQUJf QVJDSF9DT01NT04gYW5kDQo+PiA+PiA+KGZpbGVfZ3VpZF9zdHIsc3RyKE1vZHVsZUZpbGUpKSBp biBDb21wb25lbnRzOg0KPj4gPj4gPisNCj4+ID4+ID5zZWxmLl9SYXdEYXRhLkRpc2FibGVPdmVy cmlkZUNvbXBvbmVudChDb21wb25lbnRzWyhmaWxlX2d1aWRfc3RyLA0KPnMNCj4+ID4+ID50cg0K Pj4gPihNDQo+PiA+PiA+b2R1bGVGaWxlKSldKQ0KPj4gPj4gPisgICAgICAgICAgICBDb21wb25l bnRzWyhmaWxlX2d1aWRfc3RyLHN0cihNb2R1bGVGaWxlKSldID0gTW9kdWxlSWQNCj4+ID4+ID4r ICAgICAgICBzZWxmLl9SYXdEYXRhLl9Qb3N0UHJvY2Vzc2VkID0gRmFsc2UNCj4+ID4+ID4gICAg ICMjIFJldHJpZXZlIFtDb21wb25lbnRzXSBzZWN0aW9uIGluZm9ybWF0aW9uDQo+PiA+PiA+ICAg ICBAcHJvcGVydHkNCj4+ID4+ID4gICAgIGRlZiBNb2R1bGVzKHNlbGYpOg0KPj4gPj4gPiAgICAg ICAgIGlmIHNlbGYuX01vZHVsZXMgaXMgbm90IE5vbmU6DQo+PiA+PiA+ICAgICAgICAgICAgIHJl dHVybiBzZWxmLl9Nb2R1bGVzDQo+PiA+PiA+LQ0KPj4gPj4gPisgICAgICAgIHNlbGYuT3ZlcnJp ZGVEdXBsaWNhdGVNb2R1bGUoKQ0KPj4gPj4gPiAgICAgICAgIHNlbGYuX01vZHVsZXMgPSBPcmRl cmVkRGljdCgpDQo+PiA+PiA+ICAgICAgICAgUmVjb3JkTGlzdCA9IHNlbGYuX1Jhd0RhdGFbTU9E RUxfTUVUQV9EQVRBX0NPTVBPTkVOVCwNCj4+ID4+ID5zZWxmLl9BcmNoXQ0KPj4gPj4gPiAgICAg ICAgIE1hY3JvcyA9IHNlbGYuX01hY3Jvcw0KPj4gPj4gPiAgICAgICAgIE1hY3Jvc1siRURLX1NP VVJDRSJdID0gR2xvYmFsRGF0YS5nRWNwU291cmNlDQo+PiA+PiA+ICAgICAgICAgZm9yIFJlY29y ZCBpbiBSZWNvcmRMaXN0Og0KPj4gPj4gPi0gICAgICAgICAgICBEdXBsaWNhdGVkRmlsZSA9IEZh bHNlDQo+PiA+PiA+LQ0KPj4gPj4gPiAgICAgICAgICAgICBNb2R1bGVGaWxlID0gUGF0aENsYXNz KE5vcm1QYXRoKFJlY29yZFswXSwgTWFjcm9zKSwNCj4+ID4+ID5HbG9iYWxEYXRhLmdXb3Jrc3Bh Y2UsIEFyY2g9c2VsZi5fQXJjaCkNCj4+ID4+ID4gICAgICAgICAgICAgTW9kdWxlSWQgPSBSZWNv cmRbNl0NCj4+ID4+ID4gICAgICAgICAgICAgTGluZU5vID0gUmVjb3JkWzddDQo+PiA+PiA+DQo+ PiA+PiA+ICAgICAgICAgICAgICMgY2hlY2sgdGhlIGZpbGUgdmFsaWRhdGlvbg0KPj4gPj4gPiAg ICAgICAgICAgICBFcnJvckNvZGUsIEVycm9ySW5mbyA9IE1vZHVsZUZpbGUuVmFsaWRhdGUoJy5p bmYnKQ0KPj4gPj4gPiAgICAgICAgICAgICBpZiBFcnJvckNvZGUgIT0gMDoNCj4+ID4+ID4gICAg ICAgICAgICAgICAgIEVka0xvZ2dlci5lcnJvcignYnVpbGQnLCBFcnJvckNvZGUsDQo+PiA+PiA+ IEZpbGU9c2VsZi5NZXRhRmlsZSwNCj4+ID5MaW5lPUxpbmVObywNCj4+ID4+ID4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBFeHRyYURhdGE9RXJyb3JJbmZvKQ0KPj4gPj4gPi0gICAg ICAgICAgICAjIENoZWNrIGR1cGxpY2F0aW9uDQo+PiA+PiA+LSAgICAgICAgICAgICMgSWYgYXJj aCBpcyBDT01NT04sIG5vIGR1cGxpY2F0ZSBtb2R1bGUgaXMgY2hlY2tlZCBzaW5jZSBhbGwNCj4+ ID5tb2R1bGVzDQo+PiA+PiA+aW4gYWxsIGNvbXBvbmVudCBzZWN0aW9ucyBhcmUgc2VsZWN0ZWQN Cj4+ID4+ID4tICAgICAgICAgICAgaWYgc2VsZi5fQXJjaCAhPSBUQUJfQVJDSF9DT01NT04gYW5k IE1vZHVsZUZpbGUgaW4NCj4+ID5zZWxmLl9Nb2R1bGVzOg0KPj4gPj4gPi0gICAgICAgICAgICAg ICAgRHVwbGljYXRlZEZpbGUgPSBUcnVlDQo+PiA+PiA+DQo+PiA+PiA+ICAgICAgICAgICAgIE1v ZHVsZSA9IE1vZHVsZUJ1aWxkQ2xhc3NPYmplY3QoKQ0KPj4gPj4gPiAgICAgICAgICAgICBNb2R1 bGUuTWV0YUZpbGUgPSBNb2R1bGVGaWxlDQo+PiA+PiA+DQo+PiA+PiA+ICAgICAgICAgICAgICMg Z2V0IG1vZHVsZSBwcml2YXRlIGxpYnJhcnkgaW5zdGFuY2UgQEAgLTc5MiwxMg0KPj4gPj4gPis4 MDAsMTAgQEAgY2xhc3MgRHNjQnVpbGREYXRhKFBsYXRmb3JtQnVpbGRDbGFzc09iamVjdCk6DQo+ PiA+PiA+ICAgICAgICAgICAgICAgICBlbHNlOg0KPj4gPj4gPiAgICAgICAgICAgICAgICAgICAg IE9wdGlvblN0cmluZyA9IE1vZHVsZS5CdWlsZE9wdGlvbnNbVG9vbENoYWluRmFtaWx5LA0KPlRv b2xDaGFpbl0NCj4+ID4+ID4gICAgICAgICAgICAgICAgICAgICBNb2R1bGUuQnVpbGRPcHRpb25z W1Rvb2xDaGFpbkZhbWlseSwNCj4+ID4+ID5Ub29sQ2hhaW5dID0NCj4+ID5PcHRpb25TdHJpbmcg Kw0KPj4gPj4gPiIgIiArIE9wdGlvbg0KPj4gPj4gPg0KPj4gPj4gPiAgICAgICAgICAgICBSZWNv cmRMaXN0ID0gc2VsZi5fUmF3RGF0YVtNT0RFTF9NRVRBX0RBVEFfSEVBREVSLA0KPj4gPnNlbGYu X0FyY2gsDQo+PiA+PiA+Tm9uZSwgTW9kdWxlSWRdDQo+PiA+PiA+LSAgICAgICAgICAgIGlmIER1 cGxpY2F0ZWRGaWxlIGFuZCBub3QgUmVjb3JkTGlzdDoNCj4+ID4+ID4tICAgICAgICAgICAgICAg IEVka0xvZ2dlci5lcnJvcignYnVpbGQnLCBGSUxFX0RVUExJQ0FURUQsIEZpbGU9c2VsZi5NZXRh RmlsZSwNCj4+ID4+ID5FeHRyYURhdGE9c3RyKE1vZHVsZUZpbGUpLCBMaW5lPUxpbmVObykNCj4+ ID4+ID4gICAgICAgICAgICAgaWYgUmVjb3JkTGlzdDoNCj4+ID4+ID4gICAgICAgICAgICAgICAg IGlmIGxlbihSZWNvcmRMaXN0KSAhPSAxOg0KPj4gPj4gPiAgICAgICAgICAgICAgICAgICAgIEVk a0xvZ2dlci5lcnJvcignYnVpbGQnLCBPUFRJT05fVU5LTk9XTiwNCj4+ID4+ID4nT25seSBGSUxF X0dVSUQNCj4+ID5jYW4NCj4+ID4+ID5iZSBsaXN0ZWQgaW4gPERlZmluZXM+IHNlY3Rpb24uJywN Cj4+ID4+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZT1zZWxmLk1l dGFGaWxlLA0KPj4gPj4gPkV4dHJhRGF0YT1zdHIoTW9kdWxlRmlsZSksDQo+PiA+TGluZT1MaW5l Tm8pDQo+PiA+PiA+ICAgICAgICAgICAgICAgICBNb2R1bGVGaWxlID0gUHJvY2Vzc0R1cGxpY2F0 ZWRJbmYoTW9kdWxlRmlsZSwNCj4+ID4+ID5SZWNvcmRMaXN0WzBdWzJdLA0KPj4gPj4gPkdsb2Jh bERhdGEuZ1dvcmtzcGFjZSkNCj4+ID4+ID5kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9Q eXRob24vV29ya3NwYWNlL01ldGFGaWxlUGFyc2VyLnB5DQo+PiA+PiA+Yi9CYXNlVG9vbHMvU291 cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVQYXJzZXIucHkNCj4+ID4+ID5pbmRleCAwMzIy MjA4MTNiLi5hNTJlOTIyOWRmIDEwMDY0NA0KPj4gPj4gPi0tLSBhL0Jhc2VUb29scy9Tb3VyY2Uv UHl0aG9uL1dvcmtzcGFjZS9NZXRhRmlsZVBhcnNlci5weQ0KPj4gPj4gPisrKyBiL0Jhc2VUb29s cy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRhRmlsZVBhcnNlci5weQ0KPj4gPj4gPkBAIC0x NzExLDEwICsxNzExLDE1IEBAIGNsYXNzIERzY1BhcnNlcihNZXRhRmlsZVBhcnNlcik6DQo+PiA+ PiA+DQo+PiA+PiA+ICAgICBkZWYgX19Qcm9jZXNzQnVpbGRPcHRpb24oc2VsZik6DQo+PiA+PiA+ ICAgICAgICAgc2VsZi5fVmFsdWVMaXN0ID0gW1JlcGxhY2VNYWNybyhWYWx1ZSwgc2VsZi5fTWFj cm9zLA0KPlJhaXNlRXJyb3I9RmFsc2UpDQo+PiA+PiA+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGZvciBWYWx1ZSBpbiBzZWxmLl9WYWx1ZUxpc3RdDQo+PiA+PiA+DQo+PiA+PiA+KyAgICBk ZWYgRGlzYWJsZU92ZXJyaWRlQ29tcG9uZW50KHNlbGYsbW9kdWxlX2lkKToNCj4+ID4+ID4rICAg ICAgICBmb3Igb3JpX2lkIGluIHNlbGYuX0lkTWFwcGluZzoNCj4+ID4+ID4rICAgICAgICAgICAg aWYgc2VsZi5fSWRNYXBwaW5nW29yaV9pZF0gPT0gbW9kdWxlX2lkOg0KPj4gPj4gPisgICAgICAg ICAgICAgICAgc2VsZi5fUmF3VGFibGUuRGlzYWJsZUNvbXBvbmVudChvcmlfaWQpDQo+PiA+PiA+ Kw0KPj4gPj4gPiAgICAgX1NlY3Rpb25QYXJzZXIgPSB7DQo+PiA+PiA+ICAgICAgICAgTU9ERUxf TUVUQV9EQVRBX0hFQURFUiAgICAgICAgICAgICAgICAgICAgICAgICAgOiAgIF9EZWZpbmVQYXJz ZXIsDQo+PiA+PiA+ICAgICAgICAgTU9ERUxfRUZJX1NLVV9JRCAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgOiAgIF9Ta3VJZFBhcnNlciwNCj4+ID4+ID4gICAgICAgICBNT0RFTF9FRklf REVGQVVMVF9TVE9SRVMgICAgICAgICAgICAgICAgICAgICAgICA6ICAgX0RlZmF1bHRTdG9yZXNQ YXJzZXIsDQo+PiA+PiA+ICAgICAgICAgTU9ERUxfRUZJX0xJQlJBUllfSU5TVEFOQ0UgICAgICAg ICAgICAgICAgICAgICAgOg0KPl9MaWJyYXJ5SW5zdGFuY2VQYXJzZXIsDQo+PiA+PiA+ZGlmZiAt LWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvUHl0aG9uL1dvcmtzcGFjZS9NZXRhRmlsZVRhYmxlLnB5 DQo+PiA+PiA+Yi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVUYWJs ZS5weQ0KPj4gPj4gPmluZGV4IDAwNGU5NDk0YzMuLjgyM2E4N2UwNTcgMTAwNjQ0DQo+PiA+PiA+ LS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9QeXRob24vV29ya3NwYWNlL01ldGFGaWxlVGFibGUucHkN Cj4+ID4+ID4rKysgYi9CYXNlVG9vbHMvU291cmNlL1B5dGhvbi9Xb3Jrc3BhY2UvTWV0YUZpbGVU YWJsZS5weQ0KPj4gPj4gPkBAIC03NCwxMSArNzQsMTEgQEAgY2xhc3MgTWV0YUZpbGVUYWJsZSgp Og0KPj4gPj4gPg0KPj4gPj4gPiAgICAgZGVmIFNldEVuZEZsYWcoc2VsZik6DQo+PiA+PiA+ICAg ICAgICAgc2VsZi5DdXJyZW50Q29udGVudC5hcHBlbmQoc2VsZi5fRFVNTVlfKQ0KPj4gPj4gPg0K Pj4gPj4gPiAgICAgZGVmIEdldEFsbChzZWxmKToNCj4+ID4+ID4tICAgICAgICByZXR1cm4gW2l0 ZW0gZm9yIGl0ZW0gaW4gc2VsZi5DdXJyZW50Q29udGVudCBpZiBpdGVtWzBdID49IDAgXQ0KPj4g Pj4gPisgICAgICAgIHJldHVybiBbaXRlbSBmb3IgaXRlbSBpbiBzZWxmLkN1cnJlbnRDb250ZW50 IGlmIGl0ZW1bMF0NCj4+ID4+ID4rID49IDAgYW5kIGl0ZW1bLQ0KPj4gPj4gPjFdPj0wXQ0KPj4g Pj4gPg0KPj4gPj4gPiAjIyBQeXRob24gY2xhc3MgcmVwcmVzZW50YXRpb24gb2YgdGFibGUgc3Rv cmluZyBtb2R1bGUgZGF0YQ0KPj4gPj4gPmNsYXNzIE1vZHVsZVRhYmxlKE1ldGFGaWxlVGFibGUp Og0KPj4gPj4gPiAgICAgX0NPTFVNTl8gPSAnJycNCj4+ID4+ID4gICAgICAgICBJRCBSRUFMIFBS SU1BUlkgS0VZLA0KPj4gPj4gPkBAIC0zNzEsMTEgKzM3MSwxMCBAQCBjbGFzcyBQbGF0Zm9ybVRh YmxlKE1ldGFGaWxlVGFibGUpOg0KPj4gPj4gPiAgICAgIw0KPj4gPj4gPiAgICAgZGVmIFF1ZXJ5 KHNlbGYsIE1vZGVsLCBTY29wZTE9Tm9uZSwgU2NvcGUyPU5vbmUsDQo+PiA+PiA+QmVsb25nc1Rv SXRlbT1Ob25lLCBGcm9tSXRlbT1Ob25lKToNCj4+ID4+ID4NCj4+ID4+ID4gICAgICAgICBRdWVy eVRhYiA9IHNlbGYuQ3VycmVudENvbnRlbnQNCj4+ID4+ID4gICAgICAgICByZXN1bHQgPSBbaXRl bSBmb3IgaXRlbSBpbiBRdWVyeVRhYiBpZiBpdGVtWzFdID09IE1vZGVsDQo+PiA+PiA+YW5kIGl0 ZW1bLTFdPjAgXQ0KPj4gPj4gPi0NCj4+ID4+ID4gICAgICAgICBpZiBTY29wZTEgaXMgbm90IE5v bmUgYW5kIFNjb3BlMSAhPSBUQUJfQVJDSF9DT01NT046DQo+PiA+PiA+ICAgICAgICAgICAgIFNj MSA9IHNldChbJ0NPTU1PTiddKQ0KPj4gPj4gPiAgICAgICAgICAgICBTYzEuYWRkKFNjb3BlMSkN Cj4+ID4+ID4gICAgICAgICAgICAgcmVzdWx0ID0gW2l0ZW0gZm9yIGl0ZW0gaW4gcmVzdWx0IGlm IGl0ZW1bNV0gaW4gU2MxXQ0KPj4gPj4gPiAgICAgICAgIFNjMiA9IHNldCggWydDT01NT04nLCdE RUZBVUxUJ10pIEBAIC0zOTUsMTAgKzM5NCwxNCBAQA0KPj4gPj4gPmNsYXNzIFBsYXRmb3JtVGFi bGUoTWV0YUZpbGVUYWJsZSk6DQo+PiA+PiA+ICAgICAgICAgICAgIHJlc3VsdCA9IFtpdGVtIGZv ciBpdGVtIGluIHJlc3VsdCBpZiBpdGVtWzldID09DQo+PiA+PiA+RnJvbUl0ZW1dDQo+PiA+PiA+ DQo+PiA+PiA+ICAgICAgICAgcmVzdWx0ID0gWyBbclsyXSxyWzNdLHJbNF0scls1XSxyWzZdLHJb N10sclswXSxyWzldXSBmb3IgciBpbiByZXN1bHQgXQ0KPj4gPj4gPiAgICAgICAgIHJldHVybiBy ZXN1bHQNCj4+ID4+ID4NCj4+ID4+ID4rICAgIGRlZiBEaXNhYmxlQ29tcG9uZW50KHNlbGYsY29t cF9pZCk6DQo+PiA+PiA+KyAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5DdXJyZW50Q29udGVudDoN Cj4+ID4+ID4rICAgICAgICAgICAgaWYgaXRlbVswXSA9PSBjb21wX2lkIG9yIGl0ZW1bOF0gPT0g Y29tcF9pZDoNCj4+ID4+ID4rICAgICAgICAgICAgICAgIGl0ZW1bLTFdID0gLTENCj4+ID4+ID4N Cj4+ID4+ID4gIyMgRmFjdG9yeSBjbGFzcyB0byBwcm9kdWNlIGRpZmZlcmVudCBzdG9yYWdlIGZv ciBkaWZmZXJlbnQgdHlwZQ0KPj4gPj4gPiBvZiBtZXRhLQ0KPj4gPmZpbGUNCj4+ID4+ID4gY2xh c3MgTWV0YUZpbGVTdG9yYWdlKG9iamVjdCk6DQo+PiA+PiA+ICAgICBfRklMRV9UQUJMRV8gPSB7 DQo+PiA+PiA+ICAgICAgICAgTU9ERUxfRklMRV9JTkYgICAgICA6ICAgTW9kdWxlVGFibGUsDQo+ PiA+PiA+LS0NCj4+ID4+ID4yLjE5LjEud2luZG93cy4xDQo+PiA+Pg0KPj4gPj4gX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCj4+ID4+IGVkazItZGV2ZWwg bWFpbGluZyBsaXN0DQo+PiA+PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPj4gPj4gaHR0cHM6 Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsyLWRldmVsDQo=