From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id C50E86E83E for ; Tue, 10 Sep 2019 07:32:37 +0000 (UTC) References: <20190520101623.12466-1-petri.latvala@intel.com> <20190909105344.k6aafl4br7sirjbs@ahiler-desk1.fi.intel.com> <20190909112750.GL4019@platvala-desk.ger.corp.intel.com> From: Tomi Sarvela Message-ID: <803a06d4-73d6-01bc-c032-cd19715a2ee3@intel.com> Date: Tue, 10 Sep 2019 10:31:58 +0300 MIME-Version: 1.0 In-Reply-To: <20190909112750.GL4019@platvala-desk.ger.corp.intel.com> Content-Language: en-US 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-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Arkadiusz Hiler , igt-dev@lists.freedesktop.org, Daniel Vetter List-ID: T24gOS85LzE5IDI6MjcgUE0sIFBldHJpIExhdHZhbGEgd3JvdGU6Cj4gT24gTW9uLCBTZXAgMDks IDIwMTkgYXQgMDE6NTM6NDRQTSArMDMwMCwgQXJrYWRpdXN6IEhpbGVyIHdyb3RlOgo+PiBPbiBN b24sIE1heSAyMCwgMjAxOSBhdCAwMToxNjoyMlBNICswMzAwLCBQZXRyaSBMYXR2YWxhIHdyb3Rl Ogo+Pj4gSWYgdGhlIG5ldHdvcmsgZ29lcyBkb3duIHdoaWxlIHRlc3RpbmcsIENJIHRlbmRzIHRv IGludGVycHJldCB0aGF0IGFzCj4+PiB0aGUgZGV2aWNlIGJlaW5nIGRvd24sIGN1dHRpbmcgaXRz IHBvd2VyIGFmdGVyIGEgd2hpbGUuIFRoaXMgY2F1c2VzIGFuCj4+PiBpbmNvbXBsZXRlIHRvIGFu IGlubm9jZW50IHRlc3QsIGluY3JlYXNpbmcgbm9pc2UgaW4gdGhlIHJlc3VsdHMuCj4+Pgo+Pj4g QSBuZXcgZmxhZyB0byAtLWFib3J0LW9uLW1vbml0b3JlZC1lcnJvciwgInBpbmciLCB1c2VzIGxp Ym9waW5nIHRvCj4+PiBwaW5nIGEgaG9zdCBjb25maWd1cmVkIGluIC5pZ3RyYyB3aXRoIG9uZSBw aW5nIGFmdGVyIGVhY2ggdGVzdAo+Pj4gZXhlY3V0aW9uIGFuZCBhYm9ydHMgdGhlIHJ1biBpZiB0 aGVyZSBpcyBubyByZXBseSBpbiBhIGhhcmRjb2RlZAo+Pj4gYW1vdW50IG9mIHRpbWUuCj4+Pgo+ Pj4gdjI6Cj4+PiAgIC0gVXNlIGEgaGlnaGVyIHRpbWVvdXQKPj4+ICAgLSBBbGxvdyBob3N0bmFt ZSBjb25maWd1cmF0aW9uIGZyb20gZW52aXJvbm1lbnQKPj4+IHYzOgo+Pj4gICAtIFVzZSBydW5u ZXJfY19hcmdzIGZvciBob2xkaW5nIGMgYXJncyBmb3IgcnVubmVyCj4+PiAgIC0gSGFuZGxlIHJ1 bm5lcidzIG1lc29uIG9wdGlvbnMgaW4gcnVubmVyL21lc29uLmJ1aWxkCj4+PiAgIC0gSW5zdGVh ZCBvZiBvbmUgcGluZyB3aXRoIDIwIHNlY29uZCB0aW1lb3V0LCBwaW5nIHdpdGggMSBzZWNvbmQg dGltZW91dAo+Pj4gICAgIGZvciBhIGR1cmF0aW9uIG9mIDIwIHNlY29uZHMKPj4+Cj4+PiBTaWdu ZWQtb2ZmLWJ5OiBQZXRyaSBMYXR2YWxhIDxwZXRyaS5sYXR2YWxhQGludGVsLmNvbT4KPj4+IENj OiBBcmthZGl1c3ogSGlsZXIgPGFya2FkaXVzei5oaWxlckBpbnRlbC5jb20+Cj4+PiBDYzogTWFy dGluIFBlcmVzIDxtYXJ0aW4ucGVyZXNAbGludXguaW50ZWwuY29tPgo+Pj4gQ2M6IFRvbWkgU2Fy dmVsYSA8dG9taS5wLnNhcnZlbGFAaW50ZWwuY29tPgo+Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRh bmllbEBmZndsbC5jaD4KPj4+IC0tLQo+Pj4gICBtZXNvbl9vcHRpb25zLnR4dCAgfCAgIDYgKysK Pj4+ICAgcnVubmVyL2V4ZWN1dG9yLmMgIHwgMTUwICsrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+Pj4gICBydW5uZXIvbWVzb24uYnVpbGQgfCAgMTQgKysrKy0K Pj4+ICAgcnVubmVyL3NldHRpbmdzLmMgIHwgICA0ICsrCj4+PiAgIHJ1bm5lci9zZXR0aW5ncy5o ICB8ICAgNSArLQo+Pj4gICA1IGZpbGVzIGNoYW5nZWQsIDE3NiBpbnNlcnRpb25zKCspLCAzIGRl bGV0aW9ucygtKQo+Pj4KPj4+IGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29u X29wdGlvbnMudHh0Cj4+PiBpbmRleCA4ODhlZmU1Ni4uOTM1Zjg4M2UgMTAwNjQ0Cj4+PiAtLS0g YS9tZXNvbl9vcHRpb25zLnR4dAo+Pj4gKysrIGIvbWVzb25fb3B0aW9ucy50eHQKPj4+IEBAIC01 OCw2ICs1OCwxMiBAQCBvcHRpb24oJ2J1aWxkX3J1bm5lcicsCj4+PiAgICAgICAgICBjaG9pY2Vz IDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKPj4+ICAgICAgICAgIGRlc2NyaXB0aW9uIDog J0J1aWxkIHRlc3QgcnVubmVyJykKPj4+ICAgCj4+PiArb3B0aW9uKCd3aXRoX29waW5nJywKPj4+ ICsgICAgICAgdHlwZSA6ICdjb21ibycsCj4+PiArICAgICAgIHZhbHVlIDogJ2F1dG8nLAo+Pj4g KyAgICAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKPj4+ICsgICAgICAg ZGVzY3JpcHRpb24gOiAnQnVpbGQgaWd0X3J1bm5lciB3aXRoIGxpYm9waW5nJykKPj4+ICsKPj4+ ICAgb3B0aW9uKCd1c2VfcnBhdGgnLAo+Pj4gICAgICAgICAgdHlwZSA6ICdib29sZWFuJywKPj4+ ICAgICAgICAgIHZhbHVlIDogZmFsc2UsCj4+PiBkaWZmIC0tZ2l0IGEvcnVubmVyL2V4ZWN1dG9y LmMgYi9ydW5uZXIvZXhlY3V0b3IuYwo+Pj4gaW5kZXggN2U1ZmJlOGYuLmMwN2U1M2ZhIDEwMDY0 NAo+Pj4gLS0tIGEvcnVubmVyL2V4ZWN1dG9yLmMKPj4+ICsrKyBiL3J1bm5lci9leGVjdXRvci5j Cj4+PiBAQCAtMSw2ICsxLDEwIEBACj4+PiAgICNpbmNsdWRlIDxlcnJuby5oPgo+Pj4gICAjaW5j bHVkZSA8ZmNudGwuaD4KPj4+ICsjaW5jbHVkZSA8Z2xpYi5oPgo+Pj4gICAjaW5jbHVkZSA8bGlu dXgvd2F0Y2hkb2cuaD4KPj4+ICsjaWYgSEFWRV9PUElORwo+Pj4gKyNpbmNsdWRlIDxvcGluZy5o Pgo+Pj4gKyNlbmRpZgo+Pj4gICAjaW5jbHVkZSA8c2lnbmFsLmg+Cj4+PiAgICNpbmNsdWRlIDxz dGRpby5oPgo+Pj4gICAjaW5jbHVkZSA8c3RkbGliLmg+Cj4+PiBAQCAtMTYsNiArMjAsNyBAQAo+ Pj4gICAjaW5jbHVkZSA8dGltZS5oPgo+Pj4gICAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4+PiAgIAo+ Pj4gKyNpbmNsdWRlICJpZ3RfYXV4LmgiCj4+PiAgICNpbmNsdWRlICJpZ3RfY29yZS5oIgo+Pj4g ICAjaW5jbHVkZSAiZXhlY3V0b3IuaCIKPj4+ICAgI2luY2x1ZGUgIm91dHB1dF9zdHJpbmdzLmgi Cj4+PiBAQCAtMTA4LDYgKzExMywxNDcgQEAgc3RhdGljIHZvaWQgcGluZ193YXRjaGRvZ3Modm9p ZCkKPj4+ICAgCX0KPj4+ICAgfQo+Pj4gICAKPj4+ICsjaWYgSEFWRV9PUElORwo+Pj4gK3N0YXRp YyBwaW5nb2JqX3QgKnBpbmdvYmogPSBOVUxMOwo+Pj4gKwo+Pj4gK3N0YXRpYyBib29sIGxvYWRf cGluZ19jb25maWdfZnJvbV9maWxlKHZvaWQpCj4+PiArewo+Pj4gKwljaGFyICprZXlfZmlsZV9l bnYgPSBOVUxMOwo+Pj4gKwljaGFyICprZXlfZmlsZV9sb2MgPSBOVUxMOwo+Pj4gKwlHRXJyb3Ig KmVycm9yID0gTlVMTDsKPj4+ICsJR0tleUZpbGUgKmtleV9maWxlID0gTlVMTDsKPj4+ICsJY29u c3QgY2hhciAqcGluZ19ob3N0bmFtZTsKPj4+ICsJaW50IHJldDsKPj4+ICsKPj4+ICsJLyogRGV0 ZXJtaW5lIGlndCBjb25maWcgcGF0aCAqLwo+Pj4gKwlrZXlfZmlsZV9lbnYgPSBnZXRlbnYoIklH VF9DT05GSUdfUEFUSCIpOwo+Pj4gKwlpZiAoa2V5X2ZpbGVfZW52KSB7Cj4+PiArCQlrZXlfZmls ZV9sb2MgPSBzdHJkdXAoa2V5X2ZpbGVfZW52KTsKPj4+ICsJfSBlbHNlIHsKPj4+ICsJCWFzcHJp bnRmKCZrZXlfZmlsZV9sb2MsICIlcy8uaWd0cmMiLCBnX2dldF9ob21lX2RpcigpKTsKPj4+ICsJ fQo+Pj4gKwo+Pj4gKwkvKiBMb2FkIGlndCBjb25maWcgZmlsZSAqLwo+Pj4gKwlrZXlfZmlsZSA9 IGdfa2V5X2ZpbGVfbmV3KCk7Cj4+PiArCXJldCA9IGdfa2V5X2ZpbGVfbG9hZF9mcm9tX2ZpbGUo a2V5X2ZpbGUsIGtleV9maWxlX2xvYywKPj4+ICsJCQkJCUdfS0VZX0ZJTEVfTk9ORSwgJmVycm9y KTsKPj4+ICsJZnJlZShrZXlfZmlsZV9sb2MpOwo+Pj4gKwo+Pj4gKwlpZiAoIXJldCkgewo+Pj4g KwkJZ19lcnJvcl9mcmVlKGVycm9yKTsKPj4+ICsJCWdfa2V5X2ZpbGVfZnJlZShrZXlfZmlsZSk7 Cj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+PiArCX0KPj4+ICsKPj4+ICsJZ19jbGVhcl9lcnJvcigm ZXJyb3IpOwo+Pgo+PiBwdXQgdGhhdCBpbgo+Pgo+PiBHS2V5RmlsZSAqaWd0X29wZW5faWd0cmMo KTsKPj4KPj4gYW5kIHVzZSBpdCBpbiBpZ3RfY29yZSwgc28gd2UgaGF2ZSBvbmx5IG9uZSBpbXBs ZW1lbnRhdGlvbgo+Pgo+Pj4gKwo+Pj4gKwlwaW5nX2hvc3RuYW1lID0KPj4+ICsJCWdfa2V5X2Zp bGVfZ2V0X3N0cmluZyhrZXlfZmlsZSwgIkRVVCIsCj4+PiArCQkJCSAgICAgICJQaW5nSG9zdE5h bWUiLCAmZXJyb3IpOwo+Pj4gKwo+Pj4gKwlnX2NsZWFyX2Vycm9yKCZlcnJvcik7Cj4+PiArCWdf a2V5X2ZpbGVfZnJlZShrZXlfZmlsZSk7Cj4+PiArCj4+PiArCWlmICghcGluZ19ob3N0bmFtZSkK Pj4+ICsJCXJldHVybiBmYWxzZTsKPj4+ICsKPj4+ICsJaWYgKHBpbmdfaG9zdF9hZGQocGluZ29i aiwgcGluZ19ob3N0bmFtZSkpIHsKPj4+ICsJCWZwcmludGYoc3RkZXJyLAo+Pj4gKwkJCSJhYm9y dCBvbiBwaW5nOiBDYW5ub3QgdXNlIGhvc3RuYW1lIGZyb20gY29uZmlnIGZpbGVcbiIpOwo+Pj4g KwkJcmV0dXJuIGZhbHNlOwo+Pj4gKwl9Cj4+PiArCj4+PiArCXJldHVybiB0cnVlOwo+Pj4gK30K Pj4+ICsKPj4+ICtzdGF0aWMgYm9vbCBsb2FkX3BpbmdfY29uZmlnX2Zyb21fZW52KHZvaWQpCj4+ PiArewo+Pj4gKwljb25zdCBjaGFyICpwaW5nX2hvc3RuYW1lOwo+Pj4gKwo+Pj4gKwlwaW5nX2hv c3RuYW1lID0gZ2V0ZW52KCJJR1RfUElOR19IT1NUTkFNRSIpOwo+Pj4gKwlpZiAoIXBpbmdfaG9z dG5hbWUpCj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4+PiArCj4+PiArCWlmIChwaW5nX2hvc3RfYWRk KHBpbmdvYmosIHBpbmdfaG9zdG5hbWUpKSB7Cj4+PiArCQlmcHJpbnRmKHN0ZGVyciwKPj4+ICsJ CQkiYWJvcnQgb24gcGluZzogQ2Fubm90IHVzZSBob3N0bmFtZSBmcm9tIGVudmlyb25tZW50XG4i KTsKPj4+ICsJCXJldHVybiBmYWxzZTsKPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gdHJ1ZTsK Pj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGJvb2wgY2FuX3Bpbmcodm9pZCkKPj4+ICt7Cj4+PiAr CS8qCj4+PiArCSAqIE9uIHNvbWUgaG9zdHMsIGdldHRpbmcgbmV0d29yayBiYWNrIHVwIGFmdGVy IHN1c3BlbmQgdGFrZXMKPj4+ICsJICogdXB3YXJkcyBvZiAxMCBzZWNvbmRzLiAyMCBzZWNvbmRz IHNob3VsZCBiZSBlbm91Z2ggdG8gc2VlCj4+PiArCSAqIGlmIG5ldHdvcmsgY29tZXMgYmFjayBh dCBhbGwsIGFuZCBob3BlZnVsbHkgbm90IHRvbyBsb25nIHRvCj4+PiArCSAqIG1ha2UgZXh0ZXJu YWwgbW9uaXRvcmluZyBmcmVhayBvdXQuCj4+PiArCSAqLwo+Pj4gKwlpZ3RfdW50aWxfdGltZW91 dCgyMCkgewo+Pgo+PiBtYWtlIDIwIGEgI2RlZmluZQo+Pgo+Pj4gKwkJcGluZ29ial9pdGVyX3Qg Kml0ZXI7Cj4+PiArCj4+PiArCQlwaW5nX3NlbmQocGluZ29iaik7Cj4+PiArCj4+PiArCQlmb3Ig KGl0ZXIgPSBwaW5nX2l0ZXJhdG9yX2dldChwaW5nb2JqKTsKPj4+ICsJCSAgICAgaXRlciAhPSBO VUxMOwo+Pj4gKwkJICAgICBpdGVyID0gcGluZ19pdGVyYXRvcl9uZXh0KGl0ZXIpKSB7Cj4+PiAr CQkJZG91YmxlIGxhdGVuY3k7Cj4+PiArCQkJc2l6ZV90IGxlbiA9IHNpemVvZihsYXRlbmN5KTsK Pj4+ICsKPj4+ICsJCQlwaW5nX2l0ZXJhdG9yX2dldF9pbmZvKGl0ZXIsCj4+PiArCQkJCQkgICAg ICAgUElOR19JTkZPX0xBVEVOQ1ksCj4+PiArCQkJCQkgICAgICAgJmxhdGVuY3ksCj4+PiArCQkJ CQkgICAgICAgJmxlbik7Cj4+PiArCQkJaWYgKGxhdGVuY3kgPj0gMC4wKQo+Pj4gKwkJCQlyZXR1 cm4gdHJ1ZTsKPj4+ICsJCX0KPj4+ICsJfQo+Pj4gKwo+Pj4gKwlyZXR1cm4gZmFsc2U7Cj4+PiAr fQo+Pj4gKwo+Pj4gKyNlbmRpZgo+Pj4gKwo+Pj4gK3N0YXRpYyB2b2lkIHBpbmdfY29uZmlnKHZv aWQpCj4+PiArewo+Pj4gKyNpZiBIQVZFX09QSU5HCj4+PiArCWRvdWJsZSB0aW1lb3V0ID0gMS4w Owo+Pgo+PiBzaW5nbGVfYXR0ZW1wdF90aW1lb3V0Cj4+Cj4+PiArCj4+PiArCWlmIChwaW5nb2Jq KQo+Pj4gKwkJcmV0dXJuOwo+Pj4gKwo+Pj4gKwlwaW5nb2JqID0gcGluZ19jb25zdHJ1Y3QoKTsK Pj4+ICsKPj4+ICsJLyogVHJ5IGVudiBmaXJzdCwgdGhlbiBjb25maWcgZmlsZSAqLwo+Pj4gKwlp ZiAoIWxvYWRfcGluZ19jb25maWdfZnJvbV9lbnYoKSAmJiAhbG9hZF9waW5nX2NvbmZpZ19mcm9t X2ZpbGUoKSkgewo+Pj4gKwkJZnByaW50ZihzdGRlcnIsCj4+PiArCQkJImFib3J0IG9uIHBpbmc6 IE5vIGhvc3QgdG8gcGluZyBjb25maWd1cmVkXG4iKTsKPj4+ICsJCXBpbmdfZGVzdHJveShwaW5n b2JqKTsKPj4+ICsJCXBpbmdvYmogPSBOVUxMOwo+Pj4gKwkJcmV0dXJuOwo+Pj4gKwl9Cj4+PiAr Cj4+PiArCXBpbmdfc2V0b3B0KHBpbmdvYmosIFBJTkdfT1BUX1RJTUVPVVQsICZ0aW1lb3V0KTsK Pj4+ICsjZW5kaWYKPj4+ICt9Cj4+PiArCj4+PiArc3RhdGljIGNoYXIgKmhhbmRsZV9waW5nKHZv aWQpCj4+PiArewo+Pj4gKyNpZiBIQVZFX09QSU5HCj4+PiArCWlmIChwaW5nb2JqICYmICFjYW5f cGluZygpKSB7Cj4+PiArCQljaGFyICpyZWFzb247Cj4+PiArCj4+PiArCQlhc3ByaW50ZigmcmVh c29uLAo+Pj4gKwkJCSAiUGluZyBob3N0IGRpZCBub3QgcmVzcG9uZCB0byBwaW5nLCBuZXR3b3Jr IGRvd24iKTsKPj4+ICsJCXJldHVybiByZWFzb247Cj4+PiArCX0KPj4+ICsjZW5kaWYKPj4+ICsK Pj4+ICsJcmV0dXJuIE5VTEw7Cj4+PiArfQo+Pj4gKwo+Pj4gICBzdGF0aWMgY2hhciAqaGFuZGxl X2xvY2tkZXAodm9pZCkKPj4+ICAgewo+Pj4gICAJY29uc3QgY2hhciAqaGVhZGVyID0gIkxvY2tk ZXAgbm90IGFjdGl2ZVxuXG4vcHJvYy9sb2NrZGVwX3N0YXRzIGNvbnRlbnRzOlxuIjsKPj4+IEBA IC0xOTcsNiArMzQzLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB7Cj4+PiAgIH0gYWJvcnRfaGFu ZGxlcnNbXSA9IHsKPj4+ICAgCXsgQUJPUlRfTE9DS0RFUCwgaGFuZGxlX2xvY2tkZXAgfSwKPj4+ ICAgCXsgQUJPUlRfVEFJTlQsIGhhbmRsZV90YWludCB9LAo+Pj4gKwl7IEFCT1JUX1BJTkcsIGhh bmRsZV9waW5nIH0sCj4+PiAgIAl7IDAsIDAgfSwKPj4+ICAgfTsKPj4KPj4gU28gdGhlIGhhbmRs ZXJzIGFyZSB1c2VkIG5lZWRfdG9fYWJvcnQoKToKPj4gICAqIHdoZW4gd2Ugc3RhcnQgZXhlY3V0 aW9uCj4+ICAgKiBhZnRlciBlYWNoIHRlc3RzCj4+Cj4+IFdoYXQgd29ycmllcyBtZSBoZXJlIGFy ZSB0aGUgc3VzcGVuZCB0ZXN0cy4gWW91IGhhdmUgbWVudGlvbmVkIHRoYXQKPj4gZ2V0dGluZyBu ZXR3b3JrIHVwIGNhbiB0YWtlIHVwIHRvIDE3cywgc28gcG90ZW50aWFsbHkgd2UgYXJlIGFkZGlu Zwo+PiAxN3MgKiBudW1lcl9vZl9leGVjdXRlZF9zdXNwZW5kX3Rlc3RzIHRvIHRoZSB0b3RhbCBl eGVjdXRpb24gdGltZS4KPj4KPj4gSGF2ZSB5b3UgY2hlY2tlZCB0aGUgYWN0dWFsIGltcGFjdD8K PiAKPiBObywgbGV0J3MgdGFrZSBhIGxvb2sgYXQgdGhhdCBhZnRlciBJIHNlbmQgdjQuCj4gCj4g RXZlbiB3aXRoIHRoYXQgZXh0cmEgb3ZlcmhlYWQsIGFuIGFyZ3VtZW50IGNhbiBiZSBtYWRlIHRo YXQgZ2V0dGluZwo+IGluY29tcGxldGVzIHdpdGhvdXQgY2xlYXIgaW5kaWNhdG9ycyB3aHkgdGhl eSBoYXBwZW4gaXMgd29yc2UuCj4gCj4gCj4+IEFsc28gdGhpcyBkb2VzIG5vdCBjb3ZlciBhbnkg bmV0d29yayBpc3N1ZXMgdGhhdCBoYXBwZW4gd2hlbiBleGVjdXRpbmcKPj4gbG9uZ2VyIHRlc3Rz IC0gd2Ugc3RpbGwgY2FuIGdldCBraWxsZWQgYnkgYW55IGV4dGVybmFsIHdhdGNoZG9ncy4KPiAK PiBZZWFoLCBhbmQgd2UgZG9uJ3QgZ2V0IGVhc2lseSBtYWNoaW5lLXBhcnNlYWJsZSB0aW1pbmcg ZGF0YSBvbiBob3cKPiBsb25nIHRob3NlIHJ1bm5pbmcgdGVzdHMgd2VyZSBmaW5lIGZvci4gTm90 ZSB0byBzZWxmOiBNYWtlIHJ1bm5lciBkdW1wCj4gcGVyaW9kaWNhbCBzdGlsbC1hbGl2ZSBtYXJr cyB0byBqb3VybmFsLiBVbnJlbGF0ZWQgdG8gdGhpcyBwYXRjaAo+IHRob3VnaC4uLgo+IAo+IE5l ZWRzIHRvIGJlIHNhaWQgdGhhdCB0aGlzIHBhdGNoIHdvbid0IG1ha2UgbXVjaCBvZiBhIGRpZmZl cmVuY2UgaWYKPiB5b3Ugb25seSBsb29rIGF0IHRoZSBwYXNzcmF0ZXMgb3IgYW1vdW50IG9mIGlu Y29tcGxldGVzLiBXaGF0IHRoaXMKPiBkb2VzIGlzIGFsbG93aW5nIHVzIHRvIGNsb3NlIHRoYXQg b25lIHNpbGx5IHNlbWktY2F0Y2hhbGwgY2lidWdsb2cKPiBmaWx0ZXIgZm9yIGluY29tcGxldGVz IHdpdGhvdXQgZ29vZCBkYXRhLCBhbmQgdGh1cyBmb3JjaW5nIHByb3Blcgo+IGlzc3VlIGJpbm5p bmcuCj4gCj4+Cj4+IFdoYXQgaXMgdGhlIG1heGltdW0gcGluZyB0aW1lb3V0IG9uIHRob3NlIGV4 dGVybmFsIHdhdGNoZG9ncz8gTWF5YmUgd2UKPj4gc2hvdWxkIGdldCBzdHJpY3Qgb24gdGVzdHMn IHRpbWUgYnVkZ2V0IGZvciBCQVQvc2hhcmRzIGZpcnN0Li4uCj4gCj4gRG9uJ3Qga25vdyBhY3R1 YWxseS4gVG9taT8KClNTSCB0aW1lb3V0IChUQ1AgdGltZW91dCkgaXMgZmlyc3QsIH4yIG1pbnV0 ZXMuIFRvIG1ha2Ugc3VyZSB0aGF0IHRoZSAKZXh0ZXJuYWwgd2F0Y2hkb2cgZG9lc24ndCBtZXNz IHVwIGxpdmUgc3lzdGVtLCBpdCBvbmx5IGFjdGl2YXRlcyB3aGVuIAp0aGUgdGFyZ2V0IGlzIG9m ZmxpbmUgNiBtaW51dGVzIChwaW5nZWQgc2V2ZXJhbCB0aW1lcyBkdXJpbmcgdGhpcyB0aW1lKS4K ClRvbWkKCi0tIApJbnRlbCBGaW5sYW5kIE95IC0gQklDIDAzNTc2MDYtNCAtIFdlc3RlbmRpbmth dHUgNywgMDIxNjAgRXNwb28KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QKaWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5v cmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2