From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH 1/2] drm/i915/selftests: Exercise resetting during non-user payloads Date: Fri, 15 Feb 2019 17:18:08 +0200 Message-ID: <878syhytan.fsf@gaia.fi.intel.com> References: <20190215102732.15520-1-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8A5576EB9A for ; Fri, 15 Feb 2019 15:18:25 +0000 (UTC) In-Reply-To: <20190215102732.15520-1-chris@chris-wilson.co.uk> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Chris Wilson , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Q2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxzb24uY28udWs+IHdyaXRlczoKCj4gSW4gc2Vs ZnRlc3RzL2xpdmVfaGFuZ2NoZWNrLCB3ZSBoYXZlIGEgbG90IG9mIHRlc3RzIGZvciByZXNldHRp bmcgc2ltcGxlCj4gc3Bpbm5lcnMsIGJ1dCBub3RoaW5nIHF1aXRlIHByZXBhcmVkIHVzIGZvciBo b3cgdGhlIEdQVSByZWFjdGVkIHRvCj4gdHJpZ2dlcmluZyBhIHJlc2V0IG91dHNpZGUgb2YgdGhl IHNhZmUgc3Bpbm5lci4gVGhlc2UgdHdvIHN1YnRlc3RzIGZpbGwKPiB0aGUgcmluZyB3aXRoIHBs YWluIG9sZCBlbXB0eSwgbm9uLXNwaW5uaW5nIHJlcXVlc3RzLCBhbmQgdGhlbiB0cmlnZ2Vycwo+ IGEgcmVzZXQuIFdpdGhvdXQgYSB1c2VyLXBheWxvYWQgdG8gYmxhbWUsIHRoZXNlIHJlcXVlc3Rz IHdpbGwgZXhlcmNpc2UKPiB0aGUgJ25vbi1zdGFydGVkJyBwYXRocyBhbmQgbW9zdGx5IGJlIHJl cGxheWVkIHZlcmJhdGltLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0Bj aHJpcy13aWxzb24uY28udWs+Cj4gQ2M6IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAaW50 ZWwuY29tPgo+IC0tLQo+ICAuLi4vZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hl Y2suYyAgfCAyMTcgKysrKysrKysrKysrKysrKysrCj4gIDEgZmlsZSBjaGFuZ2VkLCAyMTcgaW5z ZXJ0aW9ucygrKQo+Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0 cy9pbnRlbF9oYW5nY2hlY2suYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRl bF9oYW5nY2hlY2suYwo+IGluZGV4IDkyNDc1NTk2ZmY0MC4uZjc1Y2I1NmZmOGFkIDEwMDY0NAo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L3NlbGZ0ZXN0cy9pbnRlbF9oYW5nY2hlY2suYwo+ IEBAIC00MTUsNiArNDE1LDIyMSBAQCBzdGF0aWMgYm9vbCB3YWl0X2Zvcl9pZGxlKHN0cnVjdCBp bnRlbF9lbmdpbmVfY3MgKmVuZ2luZSkKPiAgCXJldHVybiB3YWl0X2ZvcihpbnRlbF9lbmdpbmVf aXNfaWRsZShlbmdpbmUpLCBJR1RfSURMRV9USU1FT1VUKSA9PSAwOwo+ICB9Cj4gIAo+ICtzdGF0 aWMgaW50IGlndF9yZXNldF9ub3Aodm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVf cHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZTsK PiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwl1bnNpZ25lZCBpbnQgcmVzZXRf Y291bnQsIGNvdW50Owo+ICsJZW51bSBpbnRlbF9lbmdpbmVfaWQgaWQ7Cj4gKwlpbnRlbF93YWtl cmVmX3Qgd2FrZXJlZjsKPiArCXN0cnVjdCBkcm1fZmlsZSAqZmlsZTsKPiArCUlHVF9USU1FT1VU KGVuZF90aW1lKTsKPiArCWludCBlcnIgPSAwOwo+ICsKPiArCS8qIENoZWNrIHRoYXQgd2UgY2Fu IHJlc2V0IGR1cmluZyBub24tdXNlciBwb3J0aW9ucyBvZiByZXF1ZXN0cyAqLwo+ICsKPiArCWZp bGUgPSBtb2NrX2ZpbGUoaTkxNSk7Cj4gKwlpZiAoSVNfRVJSKGZpbGUpKQo+ICsJCXJldHVybiBQ VFJfRVJSKGZpbGUpOwo+ICsKPiArCW11dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgp Owo+ICsJY3R4ID0gbGl2ZV9jb250ZXh0KGk5MTUsIGZpbGUpOwo+ICsJbXV0ZXhfdW5sb2NrKCZp OTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCWlmIChJU19FUlIoY3R4KSkgewo+ICsJCWVyciA9 IFBUUl9FUlIoY3R4KTsKPiArCQlnb3RvIG91dDsKPiArCX0KPiArCj4gKwl3YWtlcmVmID0gaW50 ZWxfcnVudGltZV9wbV9nZXQoaTkxNSk7Cj4gKwo+ICsJcmVzZXRfY291bnQgPSBpOTE1X3Jlc2V0 X2NvdW50KCZpOTE1LT5ncHVfZXJyb3IpOwo+ICsJY291bnQgPSAwOwo+ICsJZG8gewo+ICsJCW11 dGV4X2xvY2soJmk5MTUtPmRybS5zdHJ1Y3RfbXV0ZXgpOwo+ICsJCWZvcl9lYWNoX2VuZ2luZShl bmdpbmUsIGk5MTUsIGlkKSB7Cj4gKwkJCWludCBpOwo+ICsKPiArCQkJZm9yIChpID0gMDsgaSA8 IDE2OyBpKyspIHsKPiArCQkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICsKPiArCQkJCXJx ID0gaTkxNV9yZXF1ZXN0X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiArCQkJCWlmIChJU19FUlIocnEp KSB7Cj4gKwkJCQkJZXJyID0gUFRSX0VSUihycSk7Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQl9Cj4g Kwo+ICsJCQkJaTkxNV9yZXF1ZXN0X2FkZChycSk7Cj4gKwkJCX0KPiArCQl9Cj4gKwkJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwkJaWd0X2dsb2JhbF9yZXNl dF9sb2NrKGk5MTUpOwo+ICsJCWk5MTVfcmVzZXQoaTkxNSwgQUxMX0VOR0lORVMsIE5VTEwpOwo+ ICsJCWlndF9nbG9iYWxfcmVzZXRfdW5sb2NrKGk5MTUpOwo+ICsJCWlmIChpOTE1X3Rlcm1pbmFs bHlfd2VkZ2VkKCZpOTE1LT5ncHVfZXJyb3IpKSB7Cj4gKwkJCWVyciA9IC1FSU87Cj4gKwkJCWJy ZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKGk5MTVfcmVzZXRfY291bnQoJmk5MTUtPmdwdV9lcnJv cikgIT0KPiArCQkgICAgcmVzZXRfY291bnQgKyArK2NvdW50KSB7Cj4gKwkJCXByX2VycigiRnVs bCBHUFUgcmVzZXQgbm90IHJlY29yZGVkIVxuIik7Cj4gKwkJCWVyciA9IC1FSU5WQUw7Cj4gKwkJ CWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJaWYgKCFpOTE1X3Jlc2V0X2ZsdXNoKGk5MTUpKSB7Cj4g KwkJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0KPiArCQkJCWRybV9pbmZvX3ByaW50ZXIoaTkxNS0+ ZHJtLmRldik7Cj4gKwo+ICsJCQlwcl9lcnIoIiVzIGZhaWxlZCB0byBpZGxlIGFmdGVyIHJlc2V0 XG4iLAo+ICsJCQkgICAgICAgZW5naW5lLT5uYW1lKTsKPiArCQkJaW50ZWxfZW5naW5lX2R1bXAo ZW5naW5lLCAmcCwKPiArCQkJCQkgICIlc1xuIiwgZW5naW5lLT5uYW1lKTsKPiArCj4gKwkJCWVy ciA9IC1FSU87Cj4gKwkJCWJyZWFrOwo+ICsJCX0KPiArCj4gKwkJZXJyID0gaWd0X2ZsdXNoX3Rl c3QoaTkxNSwgMCk7Cj4gKwkJaWYgKGVycikKPiArCQkJYnJlYWs7Cj4gKwl9IHdoaWxlICh0aW1l X2JlZm9yZShqaWZmaWVzLCBlbmRfdGltZSkpOwo+ICsJcHJfaW5mbygiJXM6ICVkIHJlc2V0c1xu IiwgX19mdW5jX18sIGNvdW50KTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0 X211dGV4KTsKPiArCWVyciA9IGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQp Owo+ICsJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlpbnRl bF9ydW50aW1lX3BtX3B1dChpOTE1LCB3YWtlcmVmKTsKPiArCj4gK291dDoKPiArCW1vY2tfZmls ZV9mcmVlKGk5MTUsIGZpbGUpOwo+ICsJaWYgKGk5MTVfdGVybWluYWxseV93ZWRnZWQoJmk5MTUt PmdwdV9lcnJvcikpCj4gKwkJZXJyID0gLUVJTzsKPiArCXJldHVybiBlcnI7Cj4gK30KPiArCj4g K3N0YXRpYyBpbnQgaWd0X3Jlc2V0X25vcF9lbmdpbmUodm9pZCAqYXJnKQo+ICt7Cj4gKwlzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGFyZzsKPiArCXN0cnVjdCBpbnRlbF9lbmdpbmVf Y3MgKmVuZ2luZTsKPiArCXN0cnVjdCBpOTE1X2dlbV9jb250ZXh0ICpjdHg7Cj4gKwllbnVtIGlu dGVsX2VuZ2luZV9pZCBpZDsKPiArCWludGVsX3dha2VyZWZfdCB3YWtlcmVmOwo+ICsJc3RydWN0 IGRybV9maWxlICpmaWxlOwo+ICsJaW50IGVyciA9IDA7CgplcnIgPSAwIGZvciB0aGUgZ2NjIGFz IGl0IHNlZW1zIHVubmVjZXNzYXJ5LiBSZWdhcmRsZXNzCkkgZGlkbid0IHNwb3QgYW55dGhpbmcg b3V0IG9mIHBsYWNlIGluIHRoaXMgcGF0Y2guIAoKVGhlIGFtb3VudCBvZiAxNiByZXF1ZXN0cyBm ZWVscyBsb3cgYXMgYSBudW1iZXIgYnV0CndlIHNob3VsZCBoYXZlIHBsZW50eSBvZiB0aW1lIHRv IGhpdCB0aGUgYnV0dG9uIGR1cmluZy4KCk5pY2UgYWRkaXRpb24gdG8gcmVzZXQgdGVzdHMuIEFu ZCBhcyB5b3UgbWVudGlvbmVkCndlIHNob3VsZCBoYXZlIHBsZW50eSBvZiByZXNldHMgZ29pbmcg aW4gb24gaWRsZSBlbmdpbmVzCm9uIG90aGVyIHRlc3RzLiBOb3QgdGhhdCBzb21lb25lIHdvdWxk IG9iamVjdCBvbmUgZXhwbGljaXQKdGVzdCBpbnRvIHRoaXMgZmlsZSA6KQoKUmV2aWV3ZWQtYnk6 IE1pa2EgS3VvcHBhbGEgPG1pa2Eua3VvcHBhbGFAbGludXguaW50ZWwuY29tPgoKCj4gKwo+ICsJ LyogQ2hlY2sgdGhhdCB3ZSBjYW4gZW5naW5lLXJlc2V0IGR1cmluZyBub24tdXNlciBwb3J0aW9u cyAqLwo+ICsKPiArCWlmICghaW50ZWxfaGFzX3Jlc2V0X2VuZ2luZShpOTE1KSkKPiArCQlyZXR1 cm4gMDsKPiArCj4gKwlmaWxlID0gbW9ja19maWxlKGk5MTUpOwo+ICsJaWYgKElTX0VSUihmaWxl KSkKPiArCQlyZXR1cm4gUFRSX0VSUihmaWxlKTsKPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5k cm0uc3RydWN0X211dGV4KTsKPiArCWN0eCA9IGxpdmVfY29udGV4dChpOTE1LCBmaWxlKTsKPiAr CW11dGV4X3VubG9jaygmaTkxNS0+ZHJtLnN0cnVjdF9tdXRleCk7Cj4gKwlpZiAoSVNfRVJSKGN0 eCkpIHsKPiArCQllcnIgPSBQVFJfRVJSKGN0eCk7Cj4gKwkJZ290byBvdXQ7Cj4gKwl9Cj4gKwo+ ICsJd2FrZXJlZiA9IGludGVsX3J1bnRpbWVfcG1fZ2V0KGk5MTUpOwo+ICsJZm9yX2VhY2hfZW5n aW5lKGVuZ2luZSwgaTkxNSwgaWQpIHsKPiArCQl1bnNpZ25lZCBpbnQgcmVzZXRfY291bnQsIHJl c2V0X2VuZ2luZV9jb3VudDsKPiArCQl1bnNpZ25lZCBpbnQgY291bnQ7Cj4gKwkJSUdUX1RJTUVP VVQoZW5kX3RpbWUpOwo+ICsKPiArCQlyZXNldF9jb3VudCA9IGk5MTVfcmVzZXRfY291bnQoJmk5 MTUtPmdwdV9lcnJvcik7Cj4gKwkJcmVzZXRfZW5naW5lX2NvdW50ID0gaTkxNV9yZXNldF9lbmdp bmVfY291bnQoJmk5MTUtPmdwdV9lcnJvciwKPiArCQkJCQkJCSAgICAgZW5naW5lKTsKPiArCQlj b3VudCA9IDA7Cj4gKwo+ICsJCXNldF9iaXQoSTkxNV9SRVNFVF9FTkdJTkUgKyBpZCwgJmk5MTUt PmdwdV9lcnJvci5mbGFncyk7Cj4gKwkJZG8gewo+ICsJCQlpbnQgaTsKPiArCj4gKwkJCWlmICgh d2FpdF9mb3JfaWRsZShlbmdpbmUpKSB7Cj4gKwkJCQlwcl9lcnIoIiVzIGZhaWxlZCB0byBpZGxl IGJlZm9yZSByZXNldFxuIiwKPiArCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwo+ICsJCQkJZXJy ID0gLUVJTzsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwo+ICsJCQltdXRleF9sb2NrKCZpOTE1 LT5kcm0uc3RydWN0X211dGV4KTsKPiArCQkJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspIHsKPiAr CQkJCXN0cnVjdCBpOTE1X3JlcXVlc3QgKnJxOwo+ICsKPiArCQkJCXJxID0gaTkxNV9yZXF1ZXN0 X2FsbG9jKGVuZ2luZSwgY3R4KTsKPiArCQkJCWlmIChJU19FUlIocnEpKSB7Cj4gKwkJCQkJZXJy ID0gUFRSX0VSUihycSk7Cj4gKwkJCQkJYnJlYWs7Cj4gKwkJCQl9Cj4gKwo+ICsJCQkJaTkxNV9y ZXF1ZXN0X2FkZChycSk7Cj4gKwkJCX0KPiArCQkJbXV0ZXhfdW5sb2NrKCZpOTE1LT5kcm0uc3Ry dWN0X211dGV4KTsKPiArCj4gKwkJCWVyciA9IGk5MTVfcmVzZXRfZW5naW5lKGVuZ2luZSwgTlVM TCk7Cj4gKwkJCWlmIChlcnIpIHsKPiArCQkJCXByX2VycigiaTkxNV9yZXNldF9lbmdpbmUgZmFp bGVkXG4iKTsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoaTkxNV9yZXNldF9j b3VudCgmaTkxNS0+Z3B1X2Vycm9yKSAhPSByZXNldF9jb3VudCkgewo+ICsJCQkJcHJfZXJyKCJG dWxsIEdQVSByZXNldCByZWNvcmRlZCEgKGVuZ2luZSByZXNldCBleHBlY3RlZClcbiIpOwo+ICsJ CQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAoaTkx NV9yZXNldF9lbmdpbmVfY291bnQoJmk5MTUtPmdwdV9lcnJvciwgZW5naW5lKSAhPQo+ICsJCQkg ICAgcmVzZXRfZW5naW5lX2NvdW50ICsgKytjb3VudCkgewo+ICsJCQkJcHJfZXJyKCIlcyBlbmdp bmUgcmVzZXQgbm90IHJlY29yZGVkIVxuIiwKPiArCQkJCSAgICAgICBlbmdpbmUtPm5hbWUpOwo+ ICsJCQkJZXJyID0gLUVJTlZBTDsKPiArCQkJCWJyZWFrOwo+ICsJCQl9Cj4gKwo+ICsJCQlpZiAo IWk5MTVfcmVzZXRfZmx1c2goaTkxNSkpIHsKPiArCQkJCXN0cnVjdCBkcm1fcHJpbnRlciBwID0K PiArCQkJCQlkcm1faW5mb19wcmludGVyKGk5MTUtPmRybS5kZXYpOwo+ICsKPiArCQkJCXByX2Vy cigiJXMgZmFpbGVkIHRvIGlkbGUgYWZ0ZXIgcmVzZXRcbiIsCj4gKwkJCQkgICAgICAgZW5naW5l LT5uYW1lKTsKPiArCQkJCWludGVsX2VuZ2luZV9kdW1wKGVuZ2luZSwgJnAsCj4gKwkJCQkJCSAg IiVzXG4iLCBlbmdpbmUtPm5hbWUpOwo+ICsKPiArCQkJCWVyciA9IC1FSU87Cj4gKwkJCQlicmVh azsKPiArCQkJfQo+ICsJCX0gd2hpbGUgKHRpbWVfYmVmb3JlKGppZmZpZXMsIGVuZF90aW1lKSk7 Cj4gKwkJY2xlYXJfYml0KEk5MTVfUkVTRVRfRU5HSU5FICsgaWQsICZpOTE1LT5ncHVfZXJyb3Iu ZmxhZ3MpOwo+ICsJCXByX2luZm8oIiVzKCVzKTogJWQgcmVzZXRzXG4iLCBfX2Z1bmNfXywgZW5n aW5lLT5uYW1lLCBjb3VudCk7Cj4gKwo+ICsJCWlmIChlcnIpCj4gKwkJCWJyZWFrOwo+ICsKPiAr CQllcnIgPSBpZ3RfZmx1c2hfdGVzdChpOTE1LCAwKTsKPiArCQlpZiAoZXJyKQo+ICsJCQlicmVh azsKPiArCX0KPiArCj4gKwltdXRleF9sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiAr CWVyciA9IGlndF9mbHVzaF90ZXN0KGk5MTUsIEk5MTVfV0FJVF9MT0NLRUQpOwo+ICsJbXV0ZXhf dW5sb2NrKCZpOTE1LT5kcm0uc3RydWN0X211dGV4KTsKPiArCj4gKwlpbnRlbF9ydW50aW1lX3Bt X3B1dChpOTE1LCB3YWtlcmVmKTsKPiArb3V0Ogo+ICsJbW9ja19maWxlX2ZyZWUoaTkxNSwgZmls ZSk7Cj4gKwlpZiAoaTkxNV90ZXJtaW5hbGx5X3dlZGdlZCgmaTkxNS0+Z3B1X2Vycm9yKSkKPiAr CQllcnIgPSAtRUlPOwo+ICsJcmV0dXJuIGVycjsKPiArfQo+ICsKPiAgc3RhdGljIGludCBfX2ln dF9yZXNldF9lbmdpbmUoc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUsIGJvb2wgYWN0aXZl KQo+ICB7Cj4gIAlzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmU7Cj4gQEAgLTE2NDcsNiAr MTg2Miw4IEBAIGludCBpbnRlbF9oYW5nY2hlY2tfbGl2ZV9zZWxmdGVzdHMoc3RydWN0IGRybV9p OTE1X3ByaXZhdGUgKmk5MTUpCj4gIAkJU1VCVEVTVChpZ3RfZ2xvYmFsX3Jlc2V0KSwgLyogYXR0 ZW1wdCB0byByZWNvdmVyIEdQVSBmaXJzdCAqLwo+ICAJCVNVQlRFU1QoaWd0X3dlZGdlZF9yZXNl dCksCj4gIAkJU1VCVEVTVChpZ3RfaGFuZ19zYW5pdHljaGVjayksCj4gKwkJU1VCVEVTVChpZ3Rf cmVzZXRfbm9wKSwKPiArCQlTVUJURVNUKGlndF9yZXNldF9ub3BfZW5naW5lKSwKPiAgCQlTVUJU RVNUKGlndF9yZXNldF9pZGxlX2VuZ2luZSksCj4gIAkJU1VCVEVTVChpZ3RfcmVzZXRfYWN0aXZl X2VuZ2luZSksCj4gIAkJU1VCVEVTVChpZ3RfcmVzZXRfZW5naW5lcyksCj4gLS0gCj4gMi4yMC4x Cj4KPiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwo+IElu dGVsLWdmeCBtYWlsaW5nIGxpc3QKPiBJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4g aHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4