From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 2257989AFF for ; Mon, 9 Sep 2019 11:27:53 +0000 (UTC) Date: Mon, 9 Sep 2019 14:27:50 +0300 From: Petri Latvala Message-ID: <20190909112750.GL4019@platvala-desk.ger.corp.intel.com> References: <20190520101623.12466-1-petri.latvala@intel.com> <20190909105344.k6aafl4br7sirjbs@ahiler-desk1.fi.intel.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20190909105344.k6aafl4br7sirjbs@ahiler-desk1.fi.intel.com> Subject: Re: [igt-dev] [i-g-t, v3, 1/2] runner: Add support for aborting on network failure List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Arkadiusz Hiler Cc: igt-dev@lists.freedesktop.org, Tomi Sarvela , Daniel Vetter List-ID: T24gTW9uLCBTZXAgMDksIDIwMTkgYXQgMDE6NTM6NDRQTSArMDMwMCwgQXJrYWRpdXN6IEhpbGVy IHdyb3RlOgo+IE9uIE1vbiwgTWF5IDIwLCAyMDE5IGF0IDAxOjE2OjIyUE0gKzAzMDAsIFBldHJp IExhdHZhbGEgd3JvdGU6Cj4gPiBJZiB0aGUgbmV0d29yayBnb2VzIGRvd24gd2hpbGUgdGVzdGlu ZywgQ0kgdGVuZHMgdG8gaW50ZXJwcmV0IHRoYXQgYXMKPiA+IHRoZSBkZXZpY2UgYmVpbmcgZG93 biwgY3V0dGluZyBpdHMgcG93ZXIgYWZ0ZXIgYSB3aGlsZS4gVGhpcyBjYXVzZXMgYW4KPiA+IGlu Y29tcGxldGUgdG8gYW4gaW5ub2NlbnQgdGVzdCwgaW5jcmVhc2luZyBub2lzZSBpbiB0aGUgcmVz dWx0cy4KPiA+IAo+ID4gQSBuZXcgZmxhZyB0byAtLWFib3J0LW9uLW1vbml0b3JlZC1lcnJvciwg InBpbmciLCB1c2VzIGxpYm9waW5nIHRvCj4gPiBwaW5nIGEgaG9zdCBjb25maWd1cmVkIGluIC5p Z3RyYyB3aXRoIG9uZSBwaW5nIGFmdGVyIGVhY2ggdGVzdAo+ID4gZXhlY3V0aW9uIGFuZCBhYm9y dHMgdGhlIHJ1biBpZiB0aGVyZSBpcyBubyByZXBseSBpbiBhIGhhcmRjb2RlZAo+ID4gYW1vdW50 IG9mIHRpbWUuCj4gPiAKPiA+IHYyOgo+ID4gIC0gVXNlIGEgaGlnaGVyIHRpbWVvdXQKPiA+ICAt IEFsbG93IGhvc3RuYW1lIGNvbmZpZ3VyYXRpb24gZnJvbSBlbnZpcm9ubWVudAo+ID4gdjM6Cj4g PiAgLSBVc2UgcnVubmVyX2NfYXJncyBmb3IgaG9sZGluZyBjIGFyZ3MgZm9yIHJ1bm5lcgo+ID4g IC0gSGFuZGxlIHJ1bm5lcidzIG1lc29uIG9wdGlvbnMgaW4gcnVubmVyL21lc29uLmJ1aWxkCj4g PiAgLSBJbnN0ZWFkIG9mIG9uZSBwaW5nIHdpdGggMjAgc2Vjb25kIHRpbWVvdXQsIHBpbmcgd2l0 aCAxIHNlY29uZCB0aW1lb3V0Cj4gPiAgICBmb3IgYSBkdXJhdGlvbiBvZiAyMCBzZWNvbmRzCj4g PiAKPiA+IFNpZ25lZC1vZmYtYnk6IFBldHJpIExhdHZhbGEgPHBldHJpLmxhdHZhbGFAaW50ZWwu Y29tPgo+ID4gQ2M6IEFya2FkaXVzeiBIaWxlciA8YXJrYWRpdXN6LmhpbGVyQGludGVsLmNvbT4K PiA+IENjOiBNYXJ0aW4gUGVyZXMgPG1hcnRpbi5wZXJlc0BsaW51eC5pbnRlbC5jb20+Cj4gPiBD YzogVG9taSBTYXJ2ZWxhIDx0b21pLnAuc2FydmVsYUBpbnRlbC5jb20+Cj4gPiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4gLS0tCj4gPiAgbWVzb25fb3B0aW9ucy50eHQg IHwgICA2ICsrCj4gPiAgcnVubmVyL2V4ZWN1dG9yLmMgIHwgMTUwICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4gIHJ1bm5lci9tZXNvbi5idWlsZCB8ICAx NCArKysrLQo+ID4gIHJ1bm5lci9zZXR0aW5ncy5jICB8ICAgNCArKwo+ID4gIHJ1bm5lci9zZXR0 aW5ncy5oICB8ICAgNSArLQo+ID4gIDUgZmlsZXMgY2hhbmdlZCwgMTc2IGluc2VydGlvbnMoKyks IDMgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBi L21lc29uX29wdGlvbnMudHh0Cj4gPiBpbmRleCA4ODhlZmU1Ni4uOTM1Zjg4M2UgMTAwNjQ0Cj4g PiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAo+ID4gKysrIGIvbWVzb25fb3B0aW9ucy50eHQKPiA+ IEBAIC01OCw2ICs1OCwxMiBAQCBvcHRpb24oJ2J1aWxkX3J1bm5lcicsCj4gPiAgICAgICAgIGNo b2ljZXMgOiBbJ2F1dG8nLCAndHJ1ZScsICdmYWxzZSddLAo+ID4gICAgICAgICBkZXNjcmlwdGlv biA6ICdCdWlsZCB0ZXN0IHJ1bm5lcicpCj4gPiAgCj4gPiArb3B0aW9uKCd3aXRoX29waW5nJywK PiA+ICsgICAgICAgdHlwZSA6ICdjb21ibycsCj4gPiArICAgICAgIHZhbHVlIDogJ2F1dG8nLAo+ ID4gKyAgICAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKPiA+ICsgICAg ICAgZGVzY3JpcHRpb24gOiAnQnVpbGQgaWd0X3J1bm5lciB3aXRoIGxpYm9waW5nJykKPiA+ICsK PiA+ICBvcHRpb24oJ3VzZV9ycGF0aCcsCj4gPiAgICAgICAgIHR5cGUgOiAnYm9vbGVhbicsCj4g PiAgICAgICAgIHZhbHVlIDogZmFsc2UsCj4gPiBkaWZmIC0tZ2l0IGEvcnVubmVyL2V4ZWN1dG9y LmMgYi9ydW5uZXIvZXhlY3V0b3IuYwo+ID4gaW5kZXggN2U1ZmJlOGYuLmMwN2U1M2ZhIDEwMDY0 NAo+ID4gLS0tIGEvcnVubmVyL2V4ZWN1dG9yLmMKPiA+ICsrKyBiL3J1bm5lci9leGVjdXRvci5j Cj4gPiBAQCAtMSw2ICsxLDEwIEBACj4gPiAgI2luY2x1ZGUgPGVycm5vLmg+Cj4gPiAgI2luY2x1 ZGUgPGZjbnRsLmg+Cj4gPiArI2luY2x1ZGUgPGdsaWIuaD4KPiA+ICAjaW5jbHVkZSA8bGludXgv d2F0Y2hkb2cuaD4KPiA+ICsjaWYgSEFWRV9PUElORwo+ID4gKyNpbmNsdWRlIDxvcGluZy5oPgo+ ID4gKyNlbmRpZgo+ID4gICNpbmNsdWRlIDxzaWduYWwuaD4KPiA+ICAjaW5jbHVkZSA8c3RkaW8u aD4KPiA+ICAjaW5jbHVkZSA8c3RkbGliLmg+Cj4gPiBAQCAtMTYsNiArMjAsNyBAQAo+ID4gICNp bmNsdWRlIDx0aW1lLmg+Cj4gPiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ID4gIAo+ID4gKyNpbmNs dWRlICJpZ3RfYXV4LmgiCj4gPiAgI2luY2x1ZGUgImlndF9jb3JlLmgiCj4gPiAgI2luY2x1ZGUg ImV4ZWN1dG9yLmgiCj4gPiAgI2luY2x1ZGUgIm91dHB1dF9zdHJpbmdzLmgiCj4gPiBAQCAtMTA4 LDYgKzExMywxNDcgQEAgc3RhdGljIHZvaWQgcGluZ193YXRjaGRvZ3Modm9pZCkKPiA+ICAJfQo+ ID4gIH0KPiA+ICAKPiA+ICsjaWYgSEFWRV9PUElORwo+ID4gK3N0YXRpYyBwaW5nb2JqX3QgKnBp bmdvYmogPSBOVUxMOwo+ID4gKwo+ID4gK3N0YXRpYyBib29sIGxvYWRfcGluZ19jb25maWdfZnJv bV9maWxlKHZvaWQpCj4gPiArewo+ID4gKwljaGFyICprZXlfZmlsZV9lbnYgPSBOVUxMOwo+ID4g KwljaGFyICprZXlfZmlsZV9sb2MgPSBOVUxMOwo+ID4gKwlHRXJyb3IgKmVycm9yID0gTlVMTDsK PiA+ICsJR0tleUZpbGUgKmtleV9maWxlID0gTlVMTDsKPiA+ICsJY29uc3QgY2hhciAqcGluZ19o b3N0bmFtZTsKPiA+ICsJaW50IHJldDsKPiA+ICsKPiA+ICsJLyogRGV0ZXJtaW5lIGlndCBjb25m aWcgcGF0aCAqLwo+ID4gKwlrZXlfZmlsZV9lbnYgPSBnZXRlbnYoIklHVF9DT05GSUdfUEFUSCIp Owo+ID4gKwlpZiAoa2V5X2ZpbGVfZW52KSB7Cj4gPiArCQlrZXlfZmlsZV9sb2MgPSBzdHJkdXAo a2V5X2ZpbGVfZW52KTsKPiA+ICsJfSBlbHNlIHsKPiA+ICsJCWFzcHJpbnRmKCZrZXlfZmlsZV9s b2MsICIlcy8uaWd0cmMiLCBnX2dldF9ob21lX2RpcigpKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwkv KiBMb2FkIGlndCBjb25maWcgZmlsZSAqLwo+ID4gKwlrZXlfZmlsZSA9IGdfa2V5X2ZpbGVfbmV3 KCk7Cj4gPiArCXJldCA9IGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUoa2V5X2ZpbGUsIGtleV9m aWxlX2xvYywKPiA+ICsJCQkJCUdfS0VZX0ZJTEVfTk9ORSwgJmVycm9yKTsKPiA+ICsJZnJlZShr ZXlfZmlsZV9sb2MpOwo+ID4gKwo+ID4gKwlpZiAoIXJldCkgewo+ID4gKwkJZ19lcnJvcl9mcmVl KGVycm9yKTsKPiA+ICsJCWdfa2V5X2ZpbGVfZnJlZShrZXlfZmlsZSk7Cj4gPiArCQlyZXR1cm4g ZmFsc2U7Cj4gPiArCX0KPiA+ICsKPiA+ICsJZ19jbGVhcl9lcnJvcigmZXJyb3IpOwo+IAo+IHB1 dCB0aGF0IGluCj4gCj4gR0tleUZpbGUgKmlndF9vcGVuX2lndHJjKCk7Cj4gCj4gYW5kIHVzZSBp dCBpbiBpZ3RfY29yZSwgc28gd2UgaGF2ZSBvbmx5IG9uZSBpbXBsZW1lbnRhdGlvbgo+IAo+ID4g Kwo+ID4gKwlwaW5nX2hvc3RuYW1lID0KPiA+ICsJCWdfa2V5X2ZpbGVfZ2V0X3N0cmluZyhrZXlf ZmlsZSwgIkRVVCIsCj4gPiArCQkJCSAgICAgICJQaW5nSG9zdE5hbWUiLCAmZXJyb3IpOwo+ID4g Kwo+ID4gKwlnX2NsZWFyX2Vycm9yKCZlcnJvcik7Cj4gPiArCWdfa2V5X2ZpbGVfZnJlZShrZXlf ZmlsZSk7Cj4gPiArCj4gPiArCWlmICghcGluZ19ob3N0bmFtZSkKPiA+ICsJCXJldHVybiBmYWxz ZTsKPiA+ICsKPiA+ICsJaWYgKHBpbmdfaG9zdF9hZGQocGluZ29iaiwgcGluZ19ob3N0bmFtZSkp IHsKPiA+ICsJCWZwcmludGYoc3RkZXJyLAo+ID4gKwkJCSJhYm9ydCBvbiBwaW5nOiBDYW5ub3Qg dXNlIGhvc3RuYW1lIGZyb20gY29uZmlnIGZpbGVcbiIpOwo+ID4gKwkJcmV0dXJuIGZhbHNlOwo+ ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiB0cnVlOwo+ID4gK30KPiA+ICsKPiA+ICtzdGF0aWMg Ym9vbCBsb2FkX3BpbmdfY29uZmlnX2Zyb21fZW52KHZvaWQpCj4gPiArewo+ID4gKwljb25zdCBj aGFyICpwaW5nX2hvc3RuYW1lOwo+ID4gKwo+ID4gKwlwaW5nX2hvc3RuYW1lID0gZ2V0ZW52KCJJ R1RfUElOR19IT1NUTkFNRSIpOwo+ID4gKwlpZiAoIXBpbmdfaG9zdG5hbWUpCj4gPiArCQlyZXR1 cm4gZmFsc2U7Cj4gPiArCj4gPiArCWlmIChwaW5nX2hvc3RfYWRkKHBpbmdvYmosIHBpbmdfaG9z dG5hbWUpKSB7Cj4gPiArCQlmcHJpbnRmKHN0ZGVyciwKPiA+ICsJCQkiYWJvcnQgb24gcGluZzog Q2Fubm90IHVzZSBob3N0bmFtZSBmcm9tIGVudmlyb25tZW50XG4iKTsKPiA+ICsJCXJldHVybiBm YWxzZTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlyZXR1cm4gdHJ1ZTsKPiA+ICt9Cj4gPiArCj4gPiAr c3RhdGljIGJvb2wgY2FuX3Bpbmcodm9pZCkKPiA+ICt7Cj4gPiArCS8qCj4gPiArCSAqIE9uIHNv bWUgaG9zdHMsIGdldHRpbmcgbmV0d29yayBiYWNrIHVwIGFmdGVyIHN1c3BlbmQgdGFrZXMKPiA+ ICsJICogdXB3YXJkcyBvZiAxMCBzZWNvbmRzLiAyMCBzZWNvbmRzIHNob3VsZCBiZSBlbm91Z2gg dG8gc2VlCj4gPiArCSAqIGlmIG5ldHdvcmsgY29tZXMgYmFjayBhdCBhbGwsIGFuZCBob3BlZnVs bHkgbm90IHRvbyBsb25nIHRvCj4gPiArCSAqIG1ha2UgZXh0ZXJuYWwgbW9uaXRvcmluZyBmcmVh ayBvdXQuCj4gPiArCSAqLwo+ID4gKwlpZ3RfdW50aWxfdGltZW91dCgyMCkgewo+IAo+IG1ha2Ug MjAgYSAjZGVmaW5lCj4gCj4gPiArCQlwaW5nb2JqX2l0ZXJfdCAqaXRlcjsKPiA+ICsKPiA+ICsJ CXBpbmdfc2VuZChwaW5nb2JqKTsKPiA+ICsKPiA+ICsJCWZvciAoaXRlciA9IHBpbmdfaXRlcmF0 b3JfZ2V0KHBpbmdvYmopOwo+ID4gKwkJICAgICBpdGVyICE9IE5VTEw7Cj4gPiArCQkgICAgIGl0 ZXIgPSBwaW5nX2l0ZXJhdG9yX25leHQoaXRlcikpIHsKPiA+ICsJCQlkb3VibGUgbGF0ZW5jeTsK PiA+ICsJCQlzaXplX3QgbGVuID0gc2l6ZW9mKGxhdGVuY3kpOwo+ID4gKwo+ID4gKwkJCXBpbmdf aXRlcmF0b3JfZ2V0X2luZm8oaXRlciwKPiA+ICsJCQkJCSAgICAgICBQSU5HX0lORk9fTEFURU5D WSwKPiA+ICsJCQkJCSAgICAgICAmbGF0ZW5jeSwKPiA+ICsJCQkJCSAgICAgICAmbGVuKTsKPiA+ ICsJCQlpZiAobGF0ZW5jeSA+PSAwLjApCj4gPiArCQkJCXJldHVybiB0cnVlOwo+ID4gKwkJfQo+ ID4gKwl9Cj4gPiArCj4gPiArCXJldHVybiBmYWxzZTsKPiA+ICt9Cj4gPiArCj4gPiArI2VuZGlm Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgcGluZ19jb25maWcodm9pZCkKPiA+ICt7Cj4gPiArI2lm IEhBVkVfT1BJTkcKPiA+ICsJZG91YmxlIHRpbWVvdXQgPSAxLjA7Cj4gCj4gc2luZ2xlX2F0dGVt cHRfdGltZW91dAo+IAo+ID4gKwo+ID4gKwlpZiAocGluZ29iaikKPiA+ICsJCXJldHVybjsKPiA+ ICsKPiA+ICsJcGluZ29iaiA9IHBpbmdfY29uc3RydWN0KCk7Cj4gPiArCj4gPiArCS8qIFRyeSBl bnYgZmlyc3QsIHRoZW4gY29uZmlnIGZpbGUgKi8KPiA+ICsJaWYgKCFsb2FkX3BpbmdfY29uZmln X2Zyb21fZW52KCkgJiYgIWxvYWRfcGluZ19jb25maWdfZnJvbV9maWxlKCkpIHsKPiA+ICsJCWZw cmludGYoc3RkZXJyLAo+ID4gKwkJCSJhYm9ydCBvbiBwaW5nOiBObyBob3N0IHRvIHBpbmcgY29u ZmlndXJlZFxuIik7Cj4gPiArCQlwaW5nX2Rlc3Ryb3kocGluZ29iaik7Cj4gPiArCQlwaW5nb2Jq ID0gTlVMTDsKPiA+ICsJCXJldHVybjsKPiA+ICsJfQo+ID4gKwo+ID4gKwlwaW5nX3NldG9wdChw aW5nb2JqLCBQSU5HX09QVF9USU1FT1VULCAmdGltZW91dCk7Cj4gPiArI2VuZGlmCj4gPiArfQo+ ID4gKwo+ID4gK3N0YXRpYyBjaGFyICpoYW5kbGVfcGluZyh2b2lkKQo+ID4gK3sKPiA+ICsjaWYg SEFWRV9PUElORwo+ID4gKwlpZiAocGluZ29iaiAmJiAhY2FuX3BpbmcoKSkgewo+ID4gKwkJY2hh ciAqcmVhc29uOwo+ID4gKwo+ID4gKwkJYXNwcmludGYoJnJlYXNvbiwKPiA+ICsJCQkgIlBpbmcg aG9zdCBkaWQgbm90IHJlc3BvbmQgdG8gcGluZywgbmV0d29yayBkb3duIik7Cj4gPiArCQlyZXR1 cm4gcmVhc29uOwo+ID4gKwl9Cj4gPiArI2VuZGlmCj4gPiArCj4gPiArCXJldHVybiBOVUxMOwo+ ID4gK30KPiA+ICsKPiA+ICBzdGF0aWMgY2hhciAqaGFuZGxlX2xvY2tkZXAodm9pZCkKPiA+ICB7 Cj4gPiAgCWNvbnN0IGNoYXIgKmhlYWRlciA9ICJMb2NrZGVwIG5vdCBhY3RpdmVcblxuL3Byb2Mv bG9ja2RlcF9zdGF0cyBjb250ZW50czpcbiI7Cj4gPiBAQCAtMTk3LDYgKzM0Myw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgewo+ID4gIH0gYWJvcnRfaGFuZGxlcnNbXSA9IHsKPiA+ICAJeyBBQk9S VF9MT0NLREVQLCBoYW5kbGVfbG9ja2RlcCB9LAo+ID4gIAl7IEFCT1JUX1RBSU5ULCBoYW5kbGVf dGFpbnQgfSwKPiA+ICsJeyBBQk9SVF9QSU5HLCBoYW5kbGVfcGluZyB9LAo+ID4gIAl7IDAsIDAg fSwKPiA+ICB9Owo+IAo+IFNvIHRoZSBoYW5kbGVycyBhcmUgdXNlZCBuZWVkX3RvX2Fib3J0KCk6 Cj4gICogd2hlbiB3ZSBzdGFydCBleGVjdXRpb24KPiAgKiBhZnRlciBlYWNoIHRlc3RzCj4gCj4g V2hhdCB3b3JyaWVzIG1lIGhlcmUgYXJlIHRoZSBzdXNwZW5kIHRlc3RzLiBZb3UgaGF2ZSBtZW50 aW9uZWQgdGhhdAo+IGdldHRpbmcgbmV0d29yayB1cCBjYW4gdGFrZSB1cCB0byAxN3MsIHNvIHBv dGVudGlhbGx5IHdlIGFyZSBhZGRpbmcKPiAxN3MgKiBudW1lcl9vZl9leGVjdXRlZF9zdXNwZW5k X3Rlc3RzIHRvIHRoZSB0b3RhbCBleGVjdXRpb24gdGltZS4KPiAKPiBIYXZlIHlvdSBjaGVja2Vk IHRoZSBhY3R1YWwgaW1wYWN0PwoKTm8sIGxldCdzIHRha2UgYSBsb29rIGF0IHRoYXQgYWZ0ZXIg SSBzZW5kIHY0LgoKRXZlbiB3aXRoIHRoYXQgZXh0cmEgb3ZlcmhlYWQsIGFuIGFyZ3VtZW50IGNh biBiZSBtYWRlIHRoYXQgZ2V0dGluZwppbmNvbXBsZXRlcyB3aXRob3V0IGNsZWFyIGluZGljYXRv cnMgd2h5IHRoZXkgaGFwcGVuIGlzIHdvcnNlLgoKCj4gQWxzbyB0aGlzIGRvZXMgbm90IGNvdmVy IGFueSBuZXR3b3JrIGlzc3VlcyB0aGF0IGhhcHBlbiB3aGVuIGV4ZWN1dGluZwo+IGxvbmdlciB0 ZXN0cyAtIHdlIHN0aWxsIGNhbiBnZXQga2lsbGVkIGJ5IGFueSBleHRlcm5hbCB3YXRjaGRvZ3Mu CgpZZWFoLCBhbmQgd2UgZG9uJ3QgZ2V0IGVhc2lseSBtYWNoaW5lLXBhcnNlYWJsZSB0aW1pbmcg ZGF0YSBvbiBob3cKbG9uZyB0aG9zZSBydW5uaW5nIHRlc3RzIHdlcmUgZmluZSBmb3IuIE5vdGUg dG8gc2VsZjogTWFrZSBydW5uZXIgZHVtcApwZXJpb2RpY2FsIHN0aWxsLWFsaXZlIG1hcmtzIHRv IGpvdXJuYWwuIFVucmVsYXRlZCB0byB0aGlzIHBhdGNoCnRob3VnaC4uLgoKTmVlZHMgdG8gYmUg c2FpZCB0aGF0IHRoaXMgcGF0Y2ggd29uJ3QgbWFrZSBtdWNoIG9mIGEgZGlmZmVyZW5jZSBpZgp5 b3Ugb25seSBsb29rIGF0IHRoZSBwYXNzcmF0ZXMgb3IgYW1vdW50IG9mIGluY29tcGxldGVzLiBX aGF0IHRoaXMKZG9lcyBpcyBhbGxvd2luZyB1cyB0byBjbG9zZSB0aGF0IG9uZSBzaWxseSBzZW1p LWNhdGNoYWxsIGNpYnVnbG9nCmZpbHRlciBmb3IgaW5jb21wbGV0ZXMgd2l0aG91dCBnb29kIGRh dGEsIGFuZCB0aHVzIGZvcmNpbmcgcHJvcGVyCmlzc3VlIGJpbm5pbmcuCgo+IAo+IFdoYXQgaXMg dGhlIG1heGltdW0gcGluZyB0aW1lb3V0IG9uIHRob3NlIGV4dGVybmFsIHdhdGNoZG9ncz8gTWF5 YmUgd2UKPiBzaG91bGQgZ2V0IHN0cmljdCBvbiB0ZXN0cycgdGltZSBidWRnZXQgZm9yIEJBVC9z aGFyZHMgZmlyc3QuLi4KCkRvbid0IGtub3cgYWN0dWFsbHkuIFRvbWk/CgoKLS0gClBldHJpIExh dHZhbGEKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0 LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9s aXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2