From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: Re: [PATCH v4] drm/i915: Restore context and pd for ringbuffer submission after reset Date: Tue, 07 Feb 2017 17:54:10 +0200 Message-ID: <877f52ro7x.fsf@gaia.fi.intel.com> References: <20170207095824.619-1-chris@chris-wilson.co.uk> <20170207152437.4252-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 mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id E12BF6E71B for ; Tue, 7 Feb 2017 15:55:08 +0000 (UTC) In-Reply-To: <20170207152437.4252-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+IHdyaXRlczoKCj4gRm9sbG93 aW5nIGEgcmVzZXQsIHRoZSBjb250ZXh0IGFuZCBwYWdlIGRpcmVjdG9yeSByZWdpc3RlcnMgYXJl IGxvc3QuCj4gSG93ZXZlciwgdGhlIHF1ZXVlIG9mIHJlcXVlc3RzIHRoYXQgd2UgcmVzdWJtaXQg YWZ0ZXIgdGhlIHJlc2V0IG1heQo+IGRlcGVuZCB1cG9uIHRoZW0gLSB0aGUgcmVnaXN0ZXJzIGFy ZSByZXN0b3JlZCBmcm9tIGEgY29udGV4dCBpbWFnZSwgYnV0Cj4gdGhhdCByZXN0b3JlIG1heSBi ZSBpbmhpYml0ZWQgYW5kIG1heSBzaW1wbHkgYmUgYWJzZW50IGZyb20gdGhlIHJlcXVlc3QKPiBp ZiBpdCB3YXMgaW4gdGhlIG1pZGRsZSBvZiBhIHNlcXVlbmNlIHVzaW5nIHRoZSBzYW1lIGNvbnRl eHQuIElmIHdlCj4gcHJpbWUgdGhlIENDSUQvUEQgcmVnaXN0ZXJzIHdpdGggdGhlIGZpcnN0IHJl cXVlc3QgaW4gdGhlIHF1ZXVlIChldmVuCj4gZm9yIHRoZSBodW5nIHJlcXVlc3QpLCB3ZSBwcmV2 ZW50IGludmFsaWQgbWVtb3J5IGFjY2VzcyBmb3IgdGhlCj4gZm9sbG93aW5nIHJlcXVlc3RzIChh bmQgY29udGludWFsbHkgaHVuZyBlbmdpbmVzKS4KPgo+IHYyOiBNYWdpYyBCSVQoOCksIHJlc2Vy dmVkIGZvciBmdXR1cmUgdXNlIGJ1dCBzdGlsbCBhcHBlYXJzIHVudXNlZC4KPiB2MzogU29tZSBj b21tZW50YXJ5IG9uIGhhbmRsaW5nIGlubm9jZW50IHZzIGd1aWx0eSByZXF1ZXN0cwo+IHY0OiBB ZGQgYSB3YWl0IGZvciBQRF9CQVNFIGZldGNoLiBUaGUgcmVsb2FkIGFwcGVhcnMgdG8gYmUgaW5z dGFudCBvbiBteQo+IEl2eWJyaWRnZSwgYnV0IHRoaXMgYml0IHByb2JhYmx5IGV4aXN0cyBmb3Ig YSByZWFzb24uCj4KPiBGaXhlczogODIxZWQ3ZGY2ZTJhICgiZHJtL2k5MTU6IFVwZGF0ZSByZXNl dCBwYXRoIHRvIGZpeCBpbmNvbXBsZXRlIHJlcXVlc3RzIikKPiBTaWduZWQtb2ZmLWJ5OiBDaHJp cyBXaWxzb24gPGNocmlzQGNocmlzLXdpbHNvbi5jby51az4KPiBDYzogVHZydGtvIFVyc3VsaW4g PHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPiBDYzogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9w cGFsYUBpbnRlbC5jb20+CgpSZXZpZXdlZC1ieTogTWlrYSBLdW9wcGFsYSA8bWlrYS5rdW9wcGFs YUBpbnRlbC5jb20+Cgo+IC0tLQo+ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAg ICAgICAgfCAxOCArKysrLS0tLS0tCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfcmVnLmgg ICAgICAgICB8ICA2ICsrLS0KPiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMgICAg ICAgIHwgMTYgKysrKysrKystCj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3JpbmdidWZm ZXIuYyB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQo+ICA0IGZpbGVzIGNo YW5nZWQsIDgxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQo+Cj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9p OTE1X2dlbS5jCj4gaW5kZXggOGE1MTBjN2Y2ODI4Li5iNzYzMmJiYmFmZDggMTAwNjQ0Cj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtLmMKPiBAQCAtMjc0MywyMSArMjc0MywxNyBAQCBzdGF0aWMgdm9pZCBp OTE1X2dlbV9yZXNldF9lbmdpbmUoc3RydWN0IGludGVsX2VuZ2luZV9jcyAqZW5naW5lKQo+ICAJ CWVuZ2luZS0+aXJxX3NlcW5vX2JhcnJpZXIoZW5naW5lKTsKPiAgCj4gIAlyZXF1ZXN0ID0gaTkx NV9nZW1fZmluZF9hY3RpdmVfcmVxdWVzdChlbmdpbmUpOwo+IC0JaWYgKCFyZXF1ZXN0KQo+IC0J CXJldHVybjsKPiAtCj4gLQlpZiAoIWk5MTVfZ2VtX3Jlc2V0X3JlcXVlc3QocmVxdWVzdCkpCj4g LQkJcmV0dXJuOwo+ICsJaWYgKHJlcXVlc3QgJiYgaTkxNV9nZW1fcmVzZXRfcmVxdWVzdChyZXF1 ZXN0KSkgewo+ICsJCURSTV9ERUJVR19EUklWRVIoInJlc2V0dGluZyAlcyB0byByZXN0YXJ0IGZy b20gdGFpbCBvZiByZXF1ZXN0IDB4JXhcbiIsCj4gKwkJCQkgZW5naW5lLT5uYW1lLCByZXF1ZXN0 LT5nbG9iYWxfc2Vxbm8pOwo+ICAKPiAtCURSTV9ERUJVR19EUklWRVIoInJlc2V0dGluZyAlcyB0 byByZXN0YXJ0IGZyb20gdGFpbCBvZiByZXF1ZXN0IDB4JXhcbiIsCj4gLQkJCSBlbmdpbmUtPm5h bWUsIHJlcXVlc3QtPmdsb2JhbF9zZXFubyk7Cj4gKwkJLyogSWYgdGhpcyBjb250ZXh0IGlzIG5v dyBiYW5uZWQsIHNraXAgYWxsIHBlbmRpbmcgcmVxdWVzdHMuICovCj4gKwkJaWYgKGk5MTVfZ2Vt X2NvbnRleHRfaXNfYmFubmVkKHJlcXVlc3QtPmN0eCkpCj4gKwkJCWVuZ2luZV9za2lwX2NvbnRl eHQocmVxdWVzdCk7Cj4gKwl9Cj4gIAo+ICAJLyogU2V0dXAgdGhlIENTIHRvIHJlc3VtZSBmcm9t IHRoZSBicmVhZGNydW1iIG9mIHRoZSBodW5nIHJlcXVlc3QgKi8KPiAgCWVuZ2luZS0+cmVzZXRf aHcoZW5naW5lLCByZXF1ZXN0KTsKPiAtCj4gLQkvKiBJZiB0aGlzIGNvbnRleHQgaXMgbm93IGJh bm5lZCwgc2tpcCBhbGwgb2YgaXRzIHBlbmRpbmcgcmVxdWVzdHMuICovCj4gLQlpZiAoaTkxNV9n ZW1fY29udGV4dF9pc19iYW5uZWQocmVxdWVzdC0+Y3R4KSkKPiAtCQllbmdpbmVfc2tpcF9jb250 ZXh0KHJlcXVlc3QpOwo+ICB9Cj4gIAo+ICB2b2lkIGk5MTVfZ2VtX3Jlc2V0X2ZpbmlzaChzdHJ1 Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYpCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X3JlZy5oCj4g aW5kZXggNWJmMzZiZGM1OTI2Li40YTU5MDkxYzAxNTIgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9yZWcuaAo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf cmVnLmgKPiBAQCAtMzMyMyw4ICszMzIzLDEwIEBAIGVudW0gc2tsX2Rpc3BfcG93ZXJfd2VsbHMg ewo+ICAvKgo+ICAgKiBMb2dpY2FsIENvbnRleHQgcmVncwo+ICAgKi8KPiAtI2RlZmluZSBDQ0lE CQkJX01NSU8oMHgyMTgwKQo+IC0jZGVmaW5lICAgQ0NJRF9FTgkJKDE8PDApCj4gKyNkZWZpbmUg Q0NJRAkJCQlfTU1JTygweDIxODApCj4gKyNkZWZpbmUgICBDQ0lEX0VOCQkJQklUKDApCj4gKyNk ZWZpbmUgICBDQ0lEX0VYVEVOREVEX1NUQVRFX1JFU1RPUkUJQklUKDIpCj4gKyNkZWZpbmUgICBD Q0lEX0VYVEVOREVEX1NUQVRFX1NBVkUJQklUKDMpCj4gIC8qCj4gICAqIE5vdGVzIG9uIFNOQi9J VkIvVkxWIGNvbnRleHQgc2l6ZToKPiAgICogLSBQb3dlciBjb250ZXh0IGlzIHNhdmVkIGVsc2V3 aGVyZSAoTExDIG9yIHN0b2xlbikKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfbHJjLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9scmMuYwo+IGluZGV4IGRm OGU2Zjc0ZGM3ZS4uZTQyOTkwYjU2ZmE4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9p OTE1L2ludGVsX2xyYy5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHJjLmMK PiBAQCAtMTM1Miw3ICsxMzUyLDIwIEBAIHN0YXRpYyB2b2lkIHJlc2V0X2NvbW1vbl9yaW5nKHN0 cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCQkJICAgICAgc3RydWN0IGRybV9pOTE1 X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICB7Cj4gIAlzdHJ1Y3QgZXhlY2xpc3RfcG9ydCAqcG9y dCA9IGVuZ2luZS0+ZXhlY2xpc3RfcG9ydDsKPiAtCXN0cnVjdCBpbnRlbF9jb250ZXh0ICpjZSA9 ICZyZXF1ZXN0LT5jdHgtPmVuZ2luZVtlbmdpbmUtPmlkXTsKPiArCXN0cnVjdCBpbnRlbF9jb250 ZXh0ICpjZTsKPiArCj4gKwkvKiBJZiB0aGUgcmVxdWVzdCB3YXMgaW5ub2NlbnQsIHdlIGxlYXZl IHRoZSByZXF1ZXN0IGluIHRoZSBFTFNQCj4gKwkgKiBhbmQgd2lsbCB0cnkgdG8gcmVwbGF5IGl0 IG9uIHJlc3RhcnRpbmcuIFRoZSBjb250ZXh0IGltYWdlIG1heQo+ICsJICogaGF2ZSBiZWVuIGNv cnJ1cHRlZCBieSB0aGUgcmVzZXQsIGluIHdoaWNoIGNhc2Ugd2UgbWF5IGhhdmUKPiArCSAqIHRv IHNlcnZpY2UgYSBuZXcgR1BVIGhhbmcsIGJ1dCBtb3JlIGxpa2VseSB3ZSBjYW4gY29udGludWUg b24KPiArCSAqIHdpdGhvdXQgaW1wYWN0Lgo+ICsJICoKPiArCSAqIElmIHRoZSByZXF1ZXN0IHdh cyBndWlsdHksIHdlIHByZXN1bWUgdGhlIGNvbnRleHQgaXMgY29ycnVwdAo+ICsJICogYW5kIGhh dmUgdG8gYXQgbGVhc3QgcmVzdG9yZSB0aGUgUklORyByZWdpc3RlciBpbiB0aGUgY29udGV4dAo+ ICsJICogaW1hZ2UgYmFjayB0byB0aGUgZXhwZWN0ZWQgdmFsdWVzIHRvIHNraXAgb3ZlciB0aGUg Z3VpbHR5IHJlcXVlc3QuCj4gKwkgKi8KPiArCWlmICghcmVxdWVzdCB8fCByZXF1ZXN0LT5mZW5j ZS5lcnJvciAhPSAtRUlPKQo+ICsJCXJldHVybjsKPiAgCj4gIAkvKiBXZSB3YW50IGEgc2ltcGxl IGNvbnRleHQgKyByaW5nIHRvIGV4ZWN1dGUgdGhlIGJyZWFkY3J1bWIgdXBkYXRlLgo+ICAJICog V2UgY2Fubm90IHJlbHkgb24gdGhlIGNvbnRleHQgYmVpbmcgaW50YWN0IGFjcm9zcyB0aGUgR1BV IGhhbmcsCj4gQEAgLTEzNjEsNiArMTM3NCw3IEBAIHN0YXRpYyB2b2lkIHJlc2V0X2NvbW1vbl9y aW5nKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCSAqIGZ1dHVyZSByZXF1ZXN0 IHdpbGwgYmUgYWZ0ZXIgdXNlcnNwYWNlIGhhcyBoYWQgdGhlIG9wcG9ydHVuaXR5Cj4gIAkgKiB0 byByZWNyZWF0ZSBpdHMgb3duIHN0YXRlLgo+ICAJICovCj4gKwljZSA9ICZyZXF1ZXN0LT5jdHgt PmVuZ2luZVtlbmdpbmUtPmlkXTsKPiAgCWV4ZWNsaXN0c19pbml0X3JlZ19zdGF0ZShjZS0+bHJj X3JlZ19zdGF0ZSwKPiAgCQkJCSByZXF1ZXN0LT5jdHgsIGVuZ2luZSwgY2UtPnJpbmcpOwo+ICAK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jIGIv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1ZmZlci5jCj4gaW5kZXggMzgzMDgzZWYy MjEwLi5kM2QxZTY0ZjI0OTggMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50 ZWxfcmluZ2J1ZmZlci5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfcmluZ2J1 ZmZlci5jCj4gQEAgLTU5OSwxMCArNTk5LDYyIEBAIHN0YXRpYyBpbnQgaW5pdF9yaW5nX2NvbW1v bihzdHJ1Y3QgaW50ZWxfZW5naW5lX2NzICplbmdpbmUpCj4gIHN0YXRpYyB2b2lkIHJlc2V0X3Jp bmdfY29tbW9uKHN0cnVjdCBpbnRlbF9lbmdpbmVfY3MgKmVuZ2luZSwKPiAgCQkJICAgICAgc3Ry dWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpyZXF1ZXN0KQo+ICB7Cj4gLQlzdHJ1Y3QgaW50ZWxf cmluZyAqcmluZyA9IHJlcXVlc3QtPnJpbmc7Cj4gKwkvKiBUcnkgdG8gcmVzdG9yZSB0aGUgbG9n aWNhbCBHUFUgc3RhdGUgdG8gbWF0Y2ggdGhlIGNvbnRpbnVhdGlvbgo+ICsJICogb2YgdGhlIHJl cXVlc3QgcXVldWUuIElmIHdlIHNraXAgdGhlIGNvbnRleHQvUEQgcmVzdG9yZSwgdGhlbgo+ICsJ ICogdGhlIG5leHQgcmVxdWVzdCBtYXkgdHJ5IHRvIGV4ZWN1dGUgYXNzdW1pbmcgdGhhdCBpdHMg Y29udGV4dAo+ICsJICogaXMgdmFsaWQgYW5kIGxvYWRlZCBvbiB0aGUgR1BVIGFuZCBzbyBtYXkg dHJ5IHRvIGFjY2VzcyBpbnZhbGlkCj4gKwkgKiBtZW1vcnksIHByb21wdGluZyByZXBlYXRlZCBH UFUgaGFuZ3MuCj4gKwkgKgo+ICsJICogSWYgdGhlIHJlcXVlc3Qgd2FzIGd1aWx0eSwgd2Ugc3Rp bGwgcmVzdG9yZSB0aGUgbG9naWNhbCBzdGF0ZQo+ICsJICogaW4gY2FzZSB0aGUgbmV4dCByZXF1 ZXN0IHJlcXVpcmVzIGl0IChlLmcuIHRoZSBhbGlhc2luZyBwcGd0dCksCj4gKwkgKiBidXQgc2tp cCBvdmVyIHRoZSBodW5nIGJhdGNoLgo+ICsJICoKPiArCSAqIElmIHRoZSByZXF1ZXN0IHdhcyBp bm5vY2VudCwgd2UgdHJ5IHRvIHJlcGxheSB0aGUgcmVxdWVzdCB3aXRoCj4gKwkgKiB0aGUgcmVz dG9yZWQgY29udGV4dC4KPiArCSAqLwo+ICsJaWYgKHJlcXVlc3QpIHsKPiArCQlzdHJ1Y3QgZHJt X2k5MTVfcHJpdmF0ZSAqZGV2X3ByaXYgPSByZXF1ZXN0LT5pOTE1Owo+ICsJCXN0cnVjdCBpbnRl bF9jb250ZXh0ICpjZSA9ICZyZXF1ZXN0LT5jdHgtPmVuZ2luZVtlbmdpbmUtPmlkXTsKPiArCQlz dHJ1Y3QgaTkxNV9od19wcGd0dCAqcHBndHQ7Cj4gKwo+ICsJCS8qIEZJWE1FIGNvbnNpZGVyIGdl bjggcmVzZXQgKi8KPiArCj4gKwkJaWYgKGNlLT5zdGF0ZSkgewo+ICsJCQlJOTE1X1dSSVRFKEND SUQsCj4gKwkJCQkgICBpOTE1X2dndHRfb2Zmc2V0KGNlLT5zdGF0ZSkgfAo+ICsJCQkJICAgQklU KDgpIC8qIG11c3QgYmUgc2V0ISAqLyB8Cj4gKwkJCQkgICBDQ0lEX0VYVEVOREVEX1NUQVRFX1NB VkUgfAo+ICsJCQkJICAgQ0NJRF9FWFRFTkRFRF9TVEFURV9SRVNUT1JFIHwKPiArCQkJCSAgIEND SURfRU4pOwo+ICsJCX0KPiAgCj4gLQlyaW5nLT5oZWFkID0gcmVxdWVzdC0+cG9zdGZpeDsKPiAt CXJpbmctPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4gKwkJcHBndHQgPSByZXF1ZXN0LT5jdHgt PnBwZ3R0ID86IGVuZ2luZS0+aTkxNS0+bW0uYWxpYXNpbmdfcHBndHQ7Cj4gKwkJaWYgKHBwZ3R0 KSB7Cj4gKwkJCXUzMiBwZF9vZmZzZXQgPSBwcGd0dC0+cGQuYmFzZS5nZ3R0X29mZnNldCA8PCAx MDsKPiArCj4gKwkJCUk5MTVfV1JJVEUoUklOR19QUF9ESVJfRENMVihlbmdpbmUpLCBQUF9ESVJf RENMVl8yRyk7Cj4gKwkJCUk5MTVfV1JJVEUoUklOR19QUF9ESVJfQkFTRShlbmdpbmUpLCBwZF9v ZmZzZXQpOwo+ICsKPiArCQkJLyogV2FpdCBmb3IgdGhlIFBEIHJlbG9hZCB0byBjb21wbGV0ZSAq Lwo+ICsJCQlpZiAoaW50ZWxfd2FpdF9mb3JfcmVnaXN0ZXIoZGV2X3ByaXYsCj4gKwkJCQkJCSAg ICBSSU5HX1BQX0RJUl9CQVNFKGVuZ2luZSksCj4gKwkJCQkJCSAgICBCSVQoMCksIDAsCj4gKwkJ CQkJCSAgICAxMCkpCj4gKwkJCQlEUk1fRVJST1IoIldhaXQgZm9yIHJlbG9hZCBvZiBwcGd0dCBw YWdlLWRpcmVjdG9yeSB0aW1lZCBvdXRcbiIpOwo+ICsKPiArCQkJcHBndHQtPnBkX2RpcnR5X3Jp bmdzICY9IH5pbnRlbF9lbmdpbmVfZmxhZyhlbmdpbmUpOwo+ICsJCX0KPiArCj4gKwkJLyogSWYg dGhlIHJxIGh1bmcsIGp1bXAgdG8gaXRzIGJyZWFkY3J1bWIgYW5kIHNraXAgdGhlIGJhdGNoICov Cj4gKwkJaWYgKHJlcXVlc3QtPmZlbmNlLmVycm9yID09IC1FSU8pIHsKPiArCQkJc3RydWN0IGlu dGVsX3JpbmcgKnJpbmcgPSByZXF1ZXN0LT5yaW5nOwo+ICsKPiArCQkJcmluZy0+aGVhZCA9IHJl cXVlc3QtPnBvc3RmaXg7Cj4gKwkJCXJpbmctPmxhc3RfcmV0aXJlZF9oZWFkID0gLTE7Cj4gKwkJ fQo+ICsJfSBlbHNlIHsKPiArCQllbmdpbmUtPmxlZ2FjeV9hY3RpdmVfY29udGV4dCA9IE5VTEw7 Cj4gKwl9Cj4gIH0KPiAgCj4gIHN0YXRpYyBpbnQgaW50ZWxfcmluZ193b3JrYXJvdW5kc19lbWl0 KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdCAqcmVxKQo+IC0tIAo+IDIuMTEuMAo+Cj4gX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPiBJbnRlbC1nZngg bWFpbGluZyBsaXN0Cj4gSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8v bGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5n IGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVk ZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=