From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 50419A0543; Thu, 22 Sep 2022 11:41:44 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id EB8AE40156; Thu, 22 Sep 2022 11:41:43 +0200 (CEST) Received: from mailgw02.pantheon.sk (mailgw01.pantheon.sk [46.229.239.26]) by mails.dpdk.org (Postfix) with ESMTP id 545E3400D7 for ; Thu, 22 Sep 2022 11:41:42 +0200 (CEST) Received: from mailgw02.pantheon.sk (localhost.localdomain [127.0.0.1]) by mailgw02.pantheon.sk (Proxmox) with ESMTP id 13D6D183546; Thu, 22 Sep 2022 11:41:42 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=pantheon.tech; h=cc:cc:content-transfer-encoding:content-type:content-type :date:from:from:in-reply-to:message-id:mime-version:references :reply-to:subject:subject:to:to; s=dkim; bh=FonE4LFY1pDbtTN6+GAJ VFngUlB3K907B8TVXv9uvuM=; b=FmD74+VOugCG4nZEMeDlX+ZM2DO4JO1msCT1 zPT4nD4HvCowK4tBX3V4/Tnsskb+C06amsypjbSMRepRIEJR3VGgSY5fu0smgKnx A8Cj+co9ZCErOyRRBsjYK3htF1E9mCSaDrlGRDMjCD63fkBxcIJ5RVCGSdW8ToQM 8YXL/XHn9RHfzfcosKb1Qs/ZRZ4jDxkUJio/xqnDW/02rinrK9cs6+kyor485mj1 5U27D7BwJvqARhnxYm4q1vSPSeKow9nWZVRLvCuINsB2QmYGh8p6JfQTVVctXX12 HUKvVhf5+ouflgl9dvzetwuH9HnoFmoo5JlR6cbgdefyyoJFWg== From: =?utf-8?B?SnVyYWogTGlua2XFoQ==?= To: Stanislaw Kardach CC: "thomas@monjalon.net" , "david.marchand@redhat.com" , "ronan.randles@intel.com" , "Honnappa.Nagarahalli@arm.com" , "ohilyard@iol.unh.edu" , "lijuan.tu@intel.com" , "dev@dpdk.org" Subject: RE: [PATCH v4 4/9] dts: add ssh pexpect library Thread-Topic: [PATCH v4 4/9] dts: add ssh pexpect library Thread-Index: AQHYoznJckIj0tYmjEujEyO7igXj6K3e1JgAgAypPJA= Date: Thu, 22 Sep 2022 09:41:40 +0000 Message-ID: <7f360965ca2c47b29e2413e3207234db@pantheon.tech> References: <20220728100044.1318484-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-1-juraj.linkes@pantheon.tech> <20220729105550.1382664-5-juraj.linkes@pantheon.tech> <20220914094222.vprahs3kfhnsklyh@toster> In-Reply-To: <20220914094222.vprahs3kfhnsklyh@toster> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.101.4.10] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org SGkgU3RhbmlzbGF3LA0KDQpOZWl0aGVyIG9mIHRoZSBjdXJyZW50IERUUyBtYWludGFpbmVyIG5v ciBtZSBhcmUgdGhlIGF1dGhvciBvZiB0aGUgY29kZSwgc28gd2UgY2FuIG9ubHkgc3BlY3VsYXRl IGFzIHRvIHdoeSBjZXJ0YWluIHBhcnRzIHdlcmUgaW1wbGVtZW50ZWQgdGhlIHdheSB0aGV5IGFy ZS4NCg0KV2UndmUgdGhvdWdodCBhIGxvdCBhYm91dCByZXBsYWNpbmcgcGV4cGVjdCB3aXRoIHNv bWV0aGluZyBlbHNlLCBzdWNoIGFzIEZhYnJpYy4gRmFicmljIGlzIHN1cHBvc2VkbHkgZmFzdGVy LCB3aGljaCBpcyB0aGUgYmlnZ2VzdCBkcmF3IGFuZCBpbnN0ZWFkIG9mIGZpeGluZy9yZXdvcmtp bmcgcGV4cGVjdCBjb2RlLCBpdCBtYWtlcyBzZW5zZSB0byBzd2l0Y2ggb3VyIGZvY3VzIG9uIEZh YnJpYy4gRm9yIHRoaXMgUG9DIHZlcnNpb24gdGhvdWdoLCB3ZSdkIGxpa2UgdG8gc3RheSB3aXRo IHRoaXMgcGV4cGVjdCBjb2RlIGFuZCB3b3JrIG9uIG90aGVyIGFwcG9hY2hlcyBpbiB0aGUgbmV4 dCByZWxlYXNlIGN5Y2xlLiBUaGUgY29kZSBpcyB3ZWxsIHRlc3RlZCBzbyB0aGVyZSdzIG5vdCBt dWNoIHBvaW50IGluIHBva2luZyBpbiBpdCBpZiBpdCdzIHRvIGJlIHJlcGxhY2VkLg0KDQpXaXRo IHRoYXQgc2FpZCwgc29tZSBtb3JlIGNvbW1lbnRzIGlubGluZS4NCg0KPiA+ICtjbGFzcyBTU0hQ ZXhwZWN0Og0KPiA+ICsgICAgdXNlcm5hbWU6IHN0cg0KPiA+ICsgICAgcGFzc3dvcmQ6IHN0cg0K PiA+ICsgICAgbm9kZTogc3RyDQo+ID4gKyAgICBsb2dnZXI6IERUU0xPRw0KPiA+ICsgICAgbWFn aWNfcHJvbXB0OiBzdHINCj4gPiArDQo+ID4gKyAgICBkZWYgX19pbml0X18oDQo+ID4gKyAgICAg ICAgc2VsZiwNCj4gPiArICAgICAgICBub2RlOiBzdHIsDQo+ID4gKyAgICAgICAgdXNlcm5hbWU6 IHN0ciwNCj4gPiArICAgICAgICBwYXNzd29yZDogT3B0aW9uYWxbc3RyXSwNCj4gPiArICAgICAg ICBsb2dnZXI6IERUU0xPRywNCj4gPiArICAgICk6DQo+ID4gKyAgICAgICAgc2VsZi5tYWdpY19w cm9tcHQgPSAiTUFHSUMgUFJPTVBUIg0KPiBXaHkgaXMgdGhpcyBuZWNlc3Nhcnk/IHB4c3NoIGlz IGFscmVhZHkgc2V0dGluZyB0YXJnZXQgcHJvbXB0IHRvDQo+IHB4c3NoLlVOSVFVRV9QUk9NUFQg aW4gdGhlIHNlc3Npb24gY29uc3RydWN0b3IsIHRvIGJlIHNwZWNpZmljOg0KPiANCj4gICBzZWxm LlVOSVFVRV9QUk9NUFQgPSByIlxbUEVYUEVDVFxdW1wkXCNdICINCj4gICBzZWxmLlBST01QVCA9 IHNlbGYuVU5JUVVFX1BST01QVA0KPiANCj4gQWxzbyBzZXNzaW9uLmxvZ2luKCkgd2lsbCBjaGFu Z2UgdGFyZ2V0IHByb21wdCB0byB0aGF0LCBleGFjdGx5IGZvciB0aGUgcmVhc29uIG9mDQo+IGFj aGlldmluZyBhIHVuaXF1ZSBwcm9tcHQgdGhhdCBjYW4gYmUgZWFzaWx5IG1hdGNoZWQgYnkgcHhz c2guDQo+IA0KPiBTbyBpZiAiTUFHSUMgUFJPTVBUIGlzIHRoZSBwcm9tcHQgdGhhdCB5b3UnZCBs aWtlIHRvIGhhdmUgb24gdGhlIHJlbW90ZSBob3N0LA0KPiB0aGVuIHRoZSBmb2xsb3dpbmcgc2hv dWxkIGJlIHJ1biBhZnRlciBvcGVuaW5nIHRoZSBzZXNzaW9uOg0KPiANCg0KSSBiZWxpZXZlIHRo aXMgaXMgaGVyZSB0byBoYXZlIGEgcHJvbXB0IHRoYXQgd29uJ3QgYmUgbWF0Y2hlZCBhbnl3aGVy ZSwgdG8gaW5kdWNlIGEgdGltZW91dCBhIGNvbGxlY3QgYWxsIGRhdGEgdXAgdG8gdGhhdCBwb2lu dC4NCg0KPiAgIHNlbGYuc2Vzc2lvbi5QUk9NUFQgPSBzZWxmLm1hZ2ljX3Byb21wdA0KPiAgIGlm IG5vdCBzZWxmLnNlc3Npb24uc2V0X3VuaXF1ZV9wcm9tcHQoKToNCj4gICAgIGRvX3NvbWVfZXJy b3JfaGFuZGxpbmcoKQ0KPiANCj4gT3RoZXJ3aXNlIGl0J3MgdW5uZWNlc3NhcnkuDQo+ID4gKyAg ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXINCj4gPiArDQo+ID4gKyAgICAgICAgc2VsZi5ub2Rl ID0gbm9kZQ0KPiA+ICsgICAgICAgIHNlbGYudXNlcm5hbWUgPSB1c2VybmFtZQ0KPiA+ICsgICAg ICAgIHNlbGYucGFzc3dvcmQgPSBwYXNzd29yZCBvciAiIg0KPiA+ICsgICAgICAgIHNlbGYubG9n Z2VyLmluZm8oZiJzc2gge3NlbGYudXNlcm5hbWV9QHtzZWxmLm5vZGV9IikNCj4gPiArDQo+ID4g KyAgICAgICAgc2VsZi5fY29ubmVjdF9ob3N0KCkNCj4gPiArDQo+ID4gKyAgICBkZWYgX2Nvbm5l Y3RfaG9zdChzZWxmKSAtPiBOb25lOg0KPiA+ICsgICAgICAgICIiIg0KPiA+ICsgICAgICAgIENy ZWF0ZSBjb25uZWN0aW9uIHRvIGFzc2lnbmVkIG5vZGUuDQo+ID4gKyAgICAgICAgIiIiDQo+ID4g KyAgICAgICAgcmV0cnlfdGltZXMgPSAxMA0KPiA+ICsgICAgICAgIHRyeToNCj4gPiArICAgICAg ICAgICAgaWYgIjoiIGluIHNlbGYubm9kZToNCj4gPiArICAgICAgICAgICAgICAgIHdoaWxlIHJl dHJ5X3RpbWVzOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYuaXAgPSBzZWxmLm5vZGUu c3BsaXQoIjoiKVswXQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYucG9ydCA9IGludChz ZWxmLm5vZGUuc3BsaXQoIjoiKVsxXSkNCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLnNl c3Npb24gPSBweHNzaC5weHNzaChlbmNvZGluZz0idXRmLTgiKQ0KPiA+ICsgICAgICAgICAgICAg ICAgICAgIHRyeToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXNzaW9uLmxv Z2luKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pcCwNCj4gPiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUsDQo+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzZWxmLnBhc3N3b3JkLA0KPiA+ICsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgb3JpZ2luYWxfcHJvbXB0PSJbJCM+XSIsDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwb3J0PXNlbGYucG9ydCwNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGxvZ2luX3RpbWVvdXQ9MjAsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBw YXNzd29yZF9yZWdleD1yIig/aSkoPzpwYXNzd29yZDopfCg/OnBhc3NwaHJhc2UgZm9yDQo+IGtl eSl8KD9pKShwYXNzd29yZCBmb3IgLis6KSIsDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgICAg ICkNCj4gPiArICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6DQo+ID4g KyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KGUpDQo+ID4gKyAgICAgICAgICAgICAgICAg ICAgICAgIHRpbWUuc2xlZXAoMikNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlf dGltZXMgLT0gMQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgicmV0cnkgJWQg dGltZXMgY29ubmVjdGluZy4uLiIgJSAoMTAgLSByZXRyeV90aW1lcykpDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsNCj4g PiArICAgICAgICAgICAgICAgIGVsc2U6DQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmFpc2Ug RXhjZXB0aW9uKCJjb25uZWN0IHRvICVzOiVzIGZhaWxlZCIgJSAoc2VsZi5pcCwgc2VsZi5wb3J0 KSkNCj4gPiArICAgICAgICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgICAgIHNlbGYuc2Vz c2lvbiA9IHB4c3NoLnB4c3NoKGVuY29kaW5nPSJ1dGYtOCIpDQo+ID4gKyAgICAgICAgICAgICAg ICBzZWxmLnNlc3Npb24ubG9naW4oDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ub2Rl LA0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHNlbGYudXNlcm5hbWUsDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgc2VsZi5wYXNzd29yZCwNCj4gPiArICAgICAgICAgICAgICAgICAgICBvcmln aW5hbF9wcm9tcHQ9IlskIz5dIiwNCj4gPiArICAgICAgICAgICAgICAgICAgICBwYXNzd29yZF9y ZWdleD1yIig/aSkoPzpwYXNzd29yZDopfCg/OnBhc3NwaHJhc2UgZm9yDQo+IGtleSl8KD9pKShw YXNzd29yZCBmb3IgLis6KSIsDQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4gKyAgICAgICAg ICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKGYiQ29ubmVjdGlvbiB0byB7c2VsZi5ub2RlfSBzdWNj ZWVkZWQiKQ0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJzdHR5IC1lY2hvIiwg IiMiKQ0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlbmRfZXhwZWN0KCJzdHR5IGNvbHVtbnMgMTAw MCIsICIjIikNCj4gVGhpcyB3b3JrcyBvbmx5IGJ5IGNoYW5jZSBhbmQgbWFrZXMgaGFja3MgaW4g Z2V0X291dHB1dF9iZWZvcmUoKSBuZWNlc3NhcnkuDQo+IEFmdGVyIHNvbWUgdGVzdGluZyBpdCBz ZWVtcyB0aGF0IHB4c3NoIGlzIG1hdGNoaW5nIEFORCBjaG9tcGluZyB0aGUNCj4gc2Vzc2lvbi5Q Uk9NUFQgd2hlbiBzZXNzaW9uLnByb21wdCgpIGlzIGNhbGxlZC4gR2l2ZW4gdGhlIFVOSVFVRV9Q Uk9NUFQsDQo+IHRoZSByb290IHVzZXIgcHJvbXB0IHdpbGwgYmUgIltQRVhQRUNUXSMiIHNvIHRo aXMNCj4gc2VuZF9leHBlY3QoKSB3aWxsIGNob21wICMgYW5kIGxlYXZlICJbUEVYUEVDVF0iIGFz IHBhcnQgb2YgdGhlIG91dHB1dC4NCj4gDQo+IEdpdmVuIHRoYXQgdGhlIHR3byBhYm92ZSBsaW5l cyBkbyBub3QgcmVxdWlyZSBhbnkgc3BlY2lhbCBvdXRwdXQgSSB0aGluaw0KPiBzZWxmLnNlbmRf Y29tbWFuZCgpIHNob3VsZCBiZSB1c2VkIGhlcmUuDQoNClNpbmNlIHdlIHdhbnQgdG8gbW92ZSBh d2F5IGZvcm0gdXNpbmcgcm9vdCwgd2UnZCBuZWVkIHRvIGFkZHJlc3MgdGhpcywgYnV0IHRoaXMg d291bGQgYmUgYmV0dGVyIGxlZnQgdG8gdGhlIEZhYnJpYyBpbXBsZW1lbnRhdGlvbiBhbmQgc3Rh eSB3aXRoIHRoZSByb290IHJlcXVpcmVtZW50IGZvciBub3cuDQoNCj4gPiArICAgICAgICBleGNl cHQgRXhjZXB0aW9uIGFzIGU6DQo+ID4gKyAgICAgICAgICAgIHByaW50KFJFRChzdHIoZSkpKQ0K PiA+ICsgICAgICAgICAgICBpZiBnZXRhdHRyKHNlbGYsICJwb3J0IiwgTm9uZSk6DQo+ID4gKyAg ICAgICAgICAgICAgICBzdWdnZXN0aW9uID0gKA0KPiA+ICsgICAgICAgICAgICAgICAgICAgICJc blN1Z2dlc3Npb246IENoZWNrIGlmIHRoZSBmaXJld2FsbCBvbiBbICVzIF0gIiAlIHNlbGYuaXAN Cj4gPiArICAgICAgICAgICAgICAgICAgICArICJpcyBzdG9wcGVkXG4iDQo+ID4gKyAgICAgICAg ICAgICAgICApDQo+ID4gKyAgICAgICAgICAgICAgICBwcmludChHUkVFTihzdWdnZXN0aW9uKSkN Cj4gPiArDQo+ID4gKyAgICAgICAgICAgIHJhaXNlIFNTSENvbm5lY3Rpb25FeGNlcHRpb24oc2Vs Zi5ub2RlKQ0KPiA+ICsNCj4gPiArICAgIGRlZiBzZW5kX2V4cGVjdF9iYXNlKHNlbGYsIGNvbW1h bmQ6IHN0ciwgZXhwZWN0ZWQ6IHN0ciwgdGltZW91dDogZmxvYXQpIC0+DQo+IHN0cjoNCj4gPiAr ICAgICAgICBzZWxmLmNsZWFuX3Nlc3Npb24oKQ0KPiA+ICsgICAgICAgIHNlbGYuc2Vzc2lvbi5Q Uk9NUFQgPSBleHBlY3RlZA0KPiA+ICsgICAgICAgIHNlbGYuX19zZW5kbGluZShjb21tYW5kKQ0K PiA+ICsgICAgICAgIHNlbGYuX19wcm9tcHQoY29tbWFuZCwgdGltZW91dCkNCj4gPiArDQo+ID4g KyAgICAgICAgYmVmb3JlID0gc2VsZi5nZXRfb3V0cHV0X2JlZm9yZSgpDQo+IFByb21wdCBzaG91 bGQgYmUgcmV2ZXJ0ZWQgdG8gd2hhdGV2ZXIgaXQgd2FzIGJlZm9yZSBsZWF2aW5nIHRoaXMgZnVu Y3Rpb24uDQoNClNlZW1zIHJlYXNvbmFibGUuIEkgZ3Vlc3MgaXQgd2Fzbid0IG5lZWRlZCBiZWNh dXNlIG9mIHRoZSByZXF1aXJlbWVudCB0byB1c2Ugcm9vdC4gQWRkaW5nIHRoaXMgc2VlbXMgaW5u b2NlbnQgZW5vdWdoLg0KDQo+ID4gKyAgICAgICAgcmV0dXJuIGJlZm9yZQ0KPiA+ICsNCj4gPiAr ICAgIGRlZiBzZW5kX2V4cGVjdCgNCj4gPiArICAgICAgICBzZWxmLCBjb21tYW5kOiBzdHIsIGV4 cGVjdGVkOiBzdHIsIHRpbWVvdXQ6IGZsb2F0ID0gMTUsIHZlcmlmeTogYm9vbCA9IEZhbHNlDQo+ ID4gKyAgICApIC0+IHN0ciB8IGludDoNCj4gPiArDQo+ID4gKyAgICAgICAgdHJ5Og0KPiA+ICsg ICAgICAgICAgICByZXQgPSBzZWxmLnNlbmRfZXhwZWN0X2Jhc2UoY29tbWFuZCwgZXhwZWN0ZWQs IHRpbWVvdXQpDQo+ID4gKyAgICAgICAgICAgIGlmIHZlcmlmeToNCj4gPiArICAgICAgICAgICAg ICAgIHJldF9zdGF0dXMgPSBzZWxmLnNlbmRfZXhwZWN0X2Jhc2UoImVjaG8gJD8iLA0KPiA+ICsg ZXhwZWN0ZWQsIHRpbWVvdXQpDQo+ICJlY2hvICQ/IiB3aWxsIG9ubHkgcHJpbnQgdGhlIHJldHVy biBjb2RlLiBIb3cgaXMgaXQgc3VwcG9zZWQgdG8gbWF0Y2gNCj4gImV4cGVjdGVkIj8gSWYgImV4 cGVjdGVkIiBpcyBhIHJldHVybiBjb2RlIHRoZW4gdGhlIGZpcnN0IGNvbW1hbmQncyBvdXRwdXQN Cj4gcHJvYmFibHkgd29uJ3QgbWF0Y2guDQo+IEkgdGhpbmsgc2VuZF9jb21tYW5kKCkgc2hvdWxk IGJlIHVzZWQgaGVyZS4NCg0KRXhwZWN0ZWQgaXMgdGhlIHByb21wdCB0byBleHBlY3QsICIjIiBp biBtb3N0IGNhc2VzLg0KDQo+ID4gKyAgICAgICAgICAgICAgICBpZiBub3QgaW50KHJldF9zdGF0 dXMpOg0KPiA+ICsgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXQNCj4gVGhlIGNvbmRpdGlv biBhYm92ZSBzZWVtcyBsaWtlIGEgQy1pc20gdXNlZCBpbiBweXRob24gd2hpY2ggYWdhaW4gd29y a3MgYnkNCj4gbWlzdGFrZS4gUmV0dXJuIGNvZGUgMCB3aWxsIGNvbnZlcnQgdG8gaW50ZWdlciAw IHdoaWNoIHdpbGwgYmUgcHJvbW90ZWQgdG8gYQ0KPiBib29sZWFuIEZhbHNlLiBJdCB3b3VsZCBi ZSBtb3JlIHJlYWRhYmxlIHRvIGNoYW5nZSB0aGlzIGJsb2NrIHRvOg0KPiAgIHJpID0gaW50KHJl dF9zdGF0dXMpDQo+ICAgaWYgcmkgIT0gMDoNCj4gICAgICMgZXJyb3IgcHJpbnRzDQo+ICAgcmV0 dXJuIHJpDQoNClRoaXMgaXMgY29tbW9uIGluIFB5dGhvbiwgYnV0IHJlYWxseSBvbmx5IHVzYWJs ZSBpZiB5b3Uga25vdyB0aGUgb2JqZWN0IHR5cGUuIEluIHRoaXMgY2FzZSBpdCdzIGFsd2F5cyBp bnRlZ2VyIGFuZCBpdCdzIHBlcmZlY3RseSBmaW5lIHRvIHVzZSBpdCB0aGlzIHdheSAoMCA9IEZh bHNlLCBhbnl0aGluZyBlbHNlID0gMSksIGJ1dCBJIGFncmVlIHRoYXQgdGhlIGRvdWJsZSBuZWdh dGl2ZSBkb2Vzbid0IGhlbHAgd2l0aCByZWFkaWJpbGl0eS4gSW4gYW55IGNhc2UsIHRoaXMgaXMg YSBtaW5vciB0aGluZyBhIEkgdGhlcmUncyBub3QgbXVjaCBvZiBhIHJlYXNvbiB0byBjaGFuZ2Ug aXQgaWYgd2UncmUgdG8gcmVwbGFjZSBpdCB3aXRoIEZhYnJpYy4NCg0KPiA+ICsgICAgICAgICAg ICAgICAgZWxzZToNCj4gPiArICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigi Q29tbWFuZDogJXMgZmFpbHVyZSEiICUgY29tbWFuZCkNCj4gPiArICAgICAgICAgICAgICAgICAg ICBzZWxmLmxvZ2dlci5lcnJvcihyZXQpDQo+ID4gKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu IGludChyZXRfc3RhdHVzKQ0KPiA+ICsgICAgICAgICAgICBlbHNlOg0KPiA+ICsgICAgICAgICAg ICAgICAgcmV0dXJuIHJldA0KPiA+ICsgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4g PiArICAgICAgICAgICAgcHJpbnQoDQo+ID4gKyAgICAgICAgICAgICAgICBSRUQoDQo+ID4gKyAg ICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbiBoYXBwZW5lZCBpbiBbJXNdIGFuZCBvdXRwdXQg aXMgWyVzXSINCj4gPiArICAgICAgICAgICAgICAgICAgICAlIChjb21tYW5kLCBzZWxmLmdldF9v dXRwdXRfYmVmb3JlKCkpDQo+ID4gKyAgICAgICAgICAgICAgICApDQo+ID4gKyAgICAgICAgICAg ICkNCj4gPiArICAgICAgICAgICAgcmFpc2UgZQ0KPiA+ICsNCj4gPiArICAgIGRlZiBzZW5kX2Nv bW1hbmQoc2VsZiwgY29tbWFuZDogc3RyLCB0aW1lb3V0OiBmbG9hdCA9IDEpIC0+IHN0cjoNCj4g PiArICAgICAgICB0cnk6DQo+ID4gKyAgICAgICAgICAgIHNlbGYuY2xlYW5fc2Vzc2lvbigpDQo+ ID4gKyAgICAgICAgICAgIHNlbGYuX19zZW5kbGluZShjb21tYW5kKQ0KPiA+ICsgICAgICAgIGV4 Y2VwdCBFeGNlcHRpb24gYXMgZToNCj4gPiArICAgICAgICAgICAgcmFpc2UgZQ0KPiA+ICsNCj4g PiArICAgICAgICBvdXRwdXQgPSBzZWxmLmdldF9zZXNzaW9uX2JlZm9yZSh0aW1lb3V0PXRpbWVv dXQpDQo+ID4gKyAgICAgICAgc2VsZi5zZXNzaW9uLlBST01QVCA9IHNlbGYuc2Vzc2lvbi5VTklR VUVfUFJPTVBUDQo+ID4gKyAgICAgICAgc2VsZi5zZXNzaW9uLnByb21wdCgwLjEpDQo+IFRoaXMg aXMgd3Jvbmc6DQo+IDEuIHNlbGYuZ2V0X3Nlc3Npb25fYmVmb3JlKCkgd2lsbCByZXR1cm4gb3V0 cHV0IG9mIHRoZSBjb21tYW5kIGJ1dCBzaW5jZQ0KPiAgICBpdCBjaGFuZ2VkIHRoZSBleHBlY3Rl ZCAobm90IHJlYWwhKSBwcm9tcHQgdG8gc2VsZi5tYWdpY19wcm9tcHQsIHRoYXQNCj4gICAgd29u J3QgYmUgbWF0Y2hlZCBzbyB0aGUgb3V0cHV0IHdpbGwgY29udGFpbiB0aGUgcHJvbXB0IHNldCBi eSBweHNzaA0KPiAgICAoVU5JUVVFX1BST01QVCkuDQo+IDIuIFRoZW4gcHJvbXB0IGlzIHJlc2V0 IHRvIFVOSVFVRV9QUk9NUFQgYnV0IGFuZCBwcm9tcHQoKSBpcyBjYWxsZWQgYnV0DQo+ICAgIHRo YXQgd2lsbCBvbmx5IGNsZWFuIHVwIHRoZSBweHNzaCBidWZmZXIuIElmIGdldF9zZXNzaW9uX2Jl Zm9yZSgpIHdhcw0KPiAgICBub3QgY2hhbmdpbmcgdGhlIHNlc3Npb24uUFJPTVBUIGZyb20gVU5J UVVFX1BST01QVCB0byBtYWdpY19wcm9tcHQsDQo+ICAgIHRoZSBzZWNvbmQgcHJvbXB0KCkgY2Fs bCB3b3VsZCBiZSB1bm5lY2Vzc2FyeS4NCj4gPiArDQo+ID4gKyAgICAgICAgcmV0dXJuIG91dHB1 dA0KPiA+ICsNCj4gPiArICAgIGRlZiBjbGVhbl9zZXNzaW9uKHNlbGYpIC0+IE5vbmU6DQo+ID4g KyAgICAgICAgc2VsZi5nZXRfc2Vzc2lvbl9iZWZvcmUodGltZW91dD0wLjAxKQ0KPiBXaGF0IGlm IHJlbW90ZSBob3N0IGlzIHNsb3cgZm9yIGFueSByZWFzb24/IFdlJ2xsIHRpbWVvdXQgaGVyZS4g SXQgc2VlbXMgdGhhdA0KPiBzdWNoIGEgc21hbGwgdGltZW91dCB2YWx1ZSB3YXMgdXNlZCBiZWNh dXNlIGNsZWFuX3Nlc3Npb24oKSBpcyB1c2VkIGluIGV2ZXJ5DQo+IHNlbmRfY29tbWFuZCgpIGNh bGwuDQo+IENvbWUgdG8gdGhpbmsgb2YgaXQsIHdoeSBpcyB0aGlzIGNhbGwgbmVjZXNzYXJ5IHdo ZW4gd2UgaGF2ZSBzZWxmLl9fZmx1c2goKT8NCg0KSSB0aGluayB0aGUgdGltZW91dCBpcyBkZWxp YmVyYXRlLiBNb3JlIGJlbG93Lg0KDQo+ID4gKw0KPiA+ICsgICAgZGVmIGdldF9zZXNzaW9uX2Jl Zm9yZShzZWxmLCB0aW1lb3V0OiBmbG9hdCA9IDE1KSAtPiBzdHI6DQo+ID4gKyAgICAgICAgIiIi DQo+ID4gKyAgICAgICAgR2V0IGFsbCBvdXRwdXQgYmVmb3JlIHRpbWVvdXQNCj4gPiArICAgICAg ICAiIiINCj4gPiArICAgICAgICBzZWxmLnNlc3Npb24uUFJPTVBUID0gc2VsZi5tYWdpY19wcm9t cHQNCj4gVGhpcyBsaW5lIGhhcyBubyBlZmZlY3QuIFJlbW90ZSBwcm9tcHQgd2FzIG5ldmVyIHNl dCB0byBzZWxmLm1hZ2ljX3Byb21wdC4NCg0KSSB0aGluayB0aGlzIGlzIHRvIGVuc3VyZSB0aGF0 IHdlIGhpdCB0aGUgdGltZW91dC4NCg0KPiA+ICsgICAgICAgIHRyeToNCj4gPiArICAgICAgICAg ICAgc2VsZi5zZXNzaW9uLnByb21wdCh0aW1lb3V0KQ0KPiA+ICsgICAgICAgIGV4Y2VwdCBFeGNl cHRpb24gYXMgZToNCj4gPiArICAgICAgICAgICAgcGFzcw0KPiA+ICsNCj4gPiArICAgICAgICBi ZWZvcmUgPSBzZWxmLmdldF9vdXRwdXRfYWxsKCkNCj4gPiArICAgICAgICBzZWxmLl9fZmx1c2go KQ0KPiA+ICsNCj4gPiArICAgICAgICByZXR1cm4gYmVmb3JlDQo+ID4gKw0KPiA+ICsgICAgZGVm IF9fZmx1c2goc2VsZikgLT4gTm9uZToNCj4gPiArICAgICAgICAiIiINCj4gPiArICAgICAgICBD bGVhciBhbGwgc2Vzc2lvbiBidWZmZXINCj4gPiArICAgICAgICAiIiINCj4gPiArICAgICAgICBz ZWxmLnNlc3Npb24uYnVmZmVyID0gIiINCj4gPiArICAgICAgICBzZWxmLnNlc3Npb24uYmVmb3Jl ID0gIiINCj4gPiArDQo+ID4gKyAgICBkZWYgX19wcm9tcHQoc2VsZiwgY29tbWFuZDogc3RyLCB0 aW1lb3V0OiBmbG9hdCkgLT4gTm9uZToNCj4gPiArICAgICAgICBpZiBub3Qgc2VsZi5zZXNzaW9u LnByb21wdCh0aW1lb3V0KToNCj4gPiArICAgICAgICAgICAgcmFpc2UgVGltZW91dEV4Y2VwdGlv bihjb21tYW5kLCBzZWxmLmdldF9vdXRwdXRfYWxsKCkpDQo+ID4gKyBmcm9tIE5vbmUNCj4gPiAr DQo+ID4gKyAgICBkZWYgX19zZW5kbGluZShzZWxmLCBjb21tYW5kOiBzdHIpIC0+IE5vbmU6DQo+ ID4gKyAgICAgICAgaWYgbm90IHNlbGYuaXNhbGl2ZSgpOg0KPiA+ICsgICAgICAgICAgICByYWlz ZSBTU0hTZXNzaW9uRGVhZEV4Y2VwdGlvbihzZWxmLm5vZGUpDQo+ID4gKyAgICAgICAgaWYgbGVu KGNvbW1hbmQpID09IDIgYW5kIGNvbW1hbmQuc3RhcnRzd2l0aCgiXiIpOg0KPiA+ICsgICAgICAg ICAgICBzZWxmLnNlc3Npb24uc2VuZGNvbnRyb2woY29tbWFuZFsxXSkNCj4gPiArICAgICAgICBl bHNlOg0KPiA+ICsgICAgICAgICAgICBzZWxmLnNlc3Npb24uc2VuZGxpbmUoY29tbWFuZCkNCj4g PiArDQo+ID4gKyAgICBkZWYgZ2V0X291dHB1dF9iZWZvcmUoc2VsZikgLT4gc3RyOg0KPiBUaGUg bmFtZSBpcyBtaXNzbGVhZGluZy4gSW4gcHhzc2ggdGVybXMgImJlZm9yZSIgbWVhbnMgYWxsIHRo ZSBsaW5lcyBiZWZvcmUgdGhlDQo+IG1hdGNoZWQgZXhwZWN0KCkvcHJvbXB0KCkuIEhlcmUgaXQg cmV0dXJucyB0aGUgbGFzdCBsaW5lIG9mIHRoZSBvdXRwdXQuIFBlcmhhcHMNCj4gZ2V0X2xhc3Rf b3V0cHV0X2xpbmUoKSBpcyBiZXR0ZXI/DQoNCkkgdGhvdWdodCBzbyB0b28sIGJ1dCB0aGlzIGFj dHVhbGx5IHJldHVybnMgYWxsIGxpbmVzIGV4Y2VwdCB0aGUgbGFzdDoNCidhLmIuYy5kJy5yc3Bs aXQoJy4nLCAxKVswXQ0KJ2EuYi5jJw0KDQo+ID4gKyAgICAgICAgaWYgbm90IHNlbGYuaXNhbGl2 ZSgpOg0KPiA+ICsgICAgICAgICAgICByYWlzZSBTU0hTZXNzaW9uRGVhZEV4Y2VwdGlvbihzZWxm Lm5vZGUpDQo+ID4gKyAgICAgICAgYmVmb3JlOiBsaXN0W3N0cl0gPSBzZWxmLnNlc3Npb24uYmVm b3JlLnJzcGxpdCgiXHJcbiIsIDEpDQo+ID4gKyAgICAgICAgaWYgYmVmb3JlWzBdID09ICJbUEVY UEVDVF0iOg0KPiA+ICsgICAgICAgICAgICBiZWZvcmVbMF0gPSAiIg0KPiBVbm5lY2Vzc2FyeSBp ZiBwcm9tcHQgd2FzIGhhbmRsZWQgaW4gcHJvcGVyIHdheSBhcyBtZW50aW9uZWQgYWJvdmUuDQo+ ID4gKw0KPiA+ICsgICAgICAgIHJldHVybiBiZWZvcmVbMF0NCj4gPiArDQo+ID4gKyAgICBkZWYg Z2V0X291dHB1dF9hbGwoc2VsZikgLT4gc3RyOg0KPiA+ICsgICAgICAgIG91dHB1dDogc3RyID0g c2VsZi5zZXNzaW9uLmJlZm9yZQ0KPiA+ICsgICAgICAgIG91dHB1dC5yZXBsYWNlKCJbUEVYUEVD VF0iLCAiIikNCj4gRGl0dG8uIElmIHNlc3Npb24uUFJPTVBUIHdhcyByZXN0b3JlZCBwcm9wZXJs eSwgdGhpcyBmdW5jdGlvbiB3b3VsZCBub3QgYmUNCj4gbmVjZXNzYXJ5IGF0IGFsbC4NCj4gPiAr ICAgICAgICByZXR1cm4gb3V0cHV0DQo+ID4gKw0KPiA+ICsgICAgZGVmIGNsb3NlKHNlbGYsIGZv cmNlOiBib29sID0gRmFsc2UpIC0+IE5vbmU6DQo+ID4gKyAgICAgICAgaWYgZm9yY2UgaXMgVHJ1 ZToNCj4gPiArICAgICAgICAgICAgc2VsZi5zZXNzaW9uLmNsb3NlKCkNCj4gPiArICAgICAgICBl bHNlOg0KPiA+ICsgICAgICAgICAgICBpZiBzZWxmLmlzYWxpdmUoKToNCj4gPiArICAgICAgICAg ICAgICAgIHNlbGYuc2Vzc2lvbi5sb2dvdXQoKQ0KPiA+ICsNCj4gPiArICAgIGRlZiBpc2FsaXZl KHNlbGYpIC0+IGJvb2w6DQo+ID4gKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vzc2lvbi5pc2FsaXZl KCkNCj4gPiBkaWZmIC0tZ2l0IGEvZHRzL2ZyYW1ld29yay91dGlscy5weSBiL2R0cy9mcmFtZXdv cmsvdXRpbHMucHkgbmV3IGZpbGUNCj4gPiBtb2RlIDEwMDY0NCBpbmRleCAwMDAwMDAwMDAwLi5k Yjg3MzQ5ODI3DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKyBiL2R0cy9mcmFtZXdvcmsvdXRp bHMucHkNCj4gPiBAQCAtMCwwICsxLDEyIEBADQo+ID4gKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZp ZXI6IEJTRC0zLUNsYXVzZSAjIENvcHlyaWdodChjKSAyMDEwLTIwMTQNCj4gPiArSW50ZWwgQ29y cG9yYXRpb24gIyBDb3B5cmlnaHQoYykgMjAyMiBQQU5USEVPTi50ZWNoIHMuci5vLg0KPiA+ICsj IENvcHlyaWdodChjKSAyMDIyIFVuaXZlcnNpdHkgb2YgTmV3IEhhbXBzaGlyZSAjDQo+ID4gKw0K PiA+ICtkZWYgUkVEKHRleHQ6IHN0cikgLT4gc3RyOg0KPiA+ICsgICAgcmV0dXJuIGYiXHUwMDFC WzMxOzFte3N0cih0ZXh0KX1cdTAwMUJbMG0iDQo+ID4gKw0KPiA+ICsNCj4gPiArZGVmIEdSRUVO KHRleHQ6IHN0cikgLT4gc3RyOg0KPiA+ICsgICAgcmV0dXJuIGYiXHUwMDFCWzMyOzFte3N0cih0 ZXh0KX1cdTAwMUJbMG0iDQo+ID4gLS0NCj4gPiAyLjMwLjINCj4gPg0KPiANCj4gLS0NCj4gQmVz dCBSZWdhcmRzLA0KPiBTdGFuaXNsYXcgS2FyZGFjaA0KDQo=