From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 08/11] drm/i915: Track active vma requests Date: Thu, 17 Dec 2015 12:26:28 +0000 Message-ID: <5672A9F4.4000801@linux.intel.com> References: <1450093012-14955-1-git-send-email-chris@chris-wilson.co.uk> <1450093012-14955-8-git-send-email-chris@chris-wilson.co.uk> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTP id EB5EF6E119 for ; Thu, 17 Dec 2015 04:26:37 -0800 (PST) In-Reply-To: <1450093012-14955-8-git-send-email-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 CkhpLAoKT24gMTQvMTIvMTUgMTE6MzYsIENocmlzIFdpbHNvbiB3cm90ZToKPiBIb29rIHRoZSB2 bWEgaXRzZWxmIGludG8gdGhlIGk5MTVfZ2VtX3JlcXVlc3RfcmV0aXJlKCkgc28gdGhhdCB3ZSBj YW4KPiBhY2N1cmF0ZWx5IHRyYWNrIHdoZW4gYSBzb2xpdGFyeSB2bWEgaXMgaW5hY3RpdmUgKGFz IG9wcG9zZWQgdG8gaGF2aW5nCgpzL3NvbGl0YXJ5L2luZGl2aWR1YWwvID8KCj4gdG8gd2FpdCBm b3IgdGhlIGVudGlyZSBvYmplY3QgdG8gYmUgaWRsZSkuIFRoaXMgaW1wcm92ZXMgdGhlIGludGVy YWN0aW9uCj4gd2hlbiB1c2luZyBtdWx0aXBsZSBjb250ZXh0cyAod2l0aCBmdWxsLXBwZ3R0KSBh bmQgZWxpbWluYXRlcyBzb21lCj4gZnJlcXVlbnQgbGlzdCB3YWxraW5nLgoKV2hhdCBsaXN0IHdh bGtpbmcgYXJlIHlvdSByZWZlcnJpbmcgdG8/IE1heWJlIGNsYXJpZnkgaW4gdGhlIGNvbW1pdCBt ZXNzYWdlLgoKQW55d2F5LCBsb29rcyBzdXJwcmlzaW5nbHkgc2ltcGxlLiBBbG1vc3Qgc3VzcGlj aW91c2x5IHNpbXBsZSwgYnV0IEkgCmNhbid0IGZhdWx0IGl0OgoKUmV2aWV3ZWQtYnk6IFR2cnRr byBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+CgpSZWdhcmRzLAoKVHZydGtvCgo+ Cj4gQSBzaWRlLWVmZmVjdCBpcyB0aGF0IHdlIGdldCBhbiBhY3RpdmUgdm1hIHJlZmVyZW5jZSBm b3IgZnJlZS4gVGhlCj4gY29uc2VxdWVuY2Ugb2YgdGhpcyBpcyBzaG93biBpbiB0aGUgbmV4dCBw YXRjaC4uLgo+Cj4gU2lnbmVkLW9mZi1ieTogQ2hyaXMgV2lsc29uIDxjaHJpc0BjaHJpcy13aWxz b24uY28udWs+Cj4gLS0tCj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAg ICAgICAgfCAgMiArLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAg ICAgIHwgMzYgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9leGVjYnVmZmVyLmMgfCAgMiArKwo+ICAgZHJpdmVycy9ncHUvZHJt L2k5MTUvaTkxNV9nZW1fZ3R0LmMgICAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysKPiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oICAgICAgICB8ICA1ICsrKysrCj4gICA1 IGZpbGVzIGNoYW5nZWQsIDQ3IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPiBpbmRleCAxNzllM2M1YzUwMjIuLjRkZjRlYmJk NTZkNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTM1Niw3ICsz NTYsNyBAQCBzdGF0aWMgaW50IHBlcl9maWxlX3N0YXRzKGludCBpZCwgdm9pZCAqcHRyLCB2b2lk ICpkYXRhKQo+ICAgCQkJCWNvbnRpbnVlOwo+ICAgCQl9Cj4KPiAtCQlpZiAob2JqLT5hY3RpdmUp IC8qIFhYWCBwZXItdm1hIHN0YXRpc3RpYyAqLwo+ICsJCWlmICh2bWEtPmFjdGl2ZSkKPiAgIAkJ CXN0YXRzLT5hY3RpdmUgKz0gdm1hLT5ub2RlLnNpemU7Cj4gICAJCWVsc2UKPiAgIAkJCXN0YXRz LT5pbmFjdGl2ZSArPSB2bWEtPm5vZGUuc2l6ZTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9nZW0uYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmMKPiBp bmRleCA4YTgyNGM1ZDUzNDguLjFkMjFjNWI3OTIxNSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbS5jCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9n ZW0uYwo+IEBAIC0yMDQwLDcgKzIwNDAsNiBAQCBpOTE1X2dlbV9vYmplY3RfcmV0aXJlX19yZWFk KHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdF9hY3RpdmUgKmFjdGl2ZSwKPiAgIAlpbnQgcmlu ZyA9IHJlcXVlc3QtPmVuZ2luZS0+aWQ7Cj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iaiA9Cj4gICAJCWNvbnRhaW5lcl9vZihhY3RpdmUsIHN0cnVjdCBkcm1faTkxNV9nZW1fb2Jq ZWN0LCBsYXN0X3JlYWRbcmluZ10pOwo+IC0Jc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4KPiAgIAlS UV9CVUdfT04oKG9iai0+ZmxhZ3MgJiAoMSA8PCAocmluZyArIEk5MTVfQk9fQUNUSVZFX1NISUZU KSkpID09IDApOwo+Cj4gQEAgLTIwNTIsMTIgKzIwNTEsOSBAQCBpOTE1X2dlbV9vYmplY3RfcmV0 aXJlX19yZWFkKHN0cnVjdCBkcm1faTkxNV9nZW1fcmVxdWVzdF9hY3RpdmUgKmFjdGl2ZSwKPiAg IAkgKiBzbyB0aGF0IHdlIGRvbid0IHN0ZWFsIGZyb20gcmVjZW50bHkgdXNlZCBidXQgaW5hY3Rp dmUgb2JqZWN0cwo+ICAgCSAqICh1bmxlc3Mgd2UgYXJlIGZvcmNlZCB0byBvZmMhKQo+ICAgCSAq Lwo+IC0JbGlzdF9tb3ZlX3RhaWwoJm9iai0+Z2xvYmFsX2xpc3QsICZyZXF1ZXN0LT5pOTE1LT5t bS5ib3VuZF9saXN0KTsKPiAtCj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1h X2xpc3QsIG9ial9saW5rKSB7Cj4gLQkJaWYgKCFsaXN0X2VtcHR5KCZ2bWEtPnZtX2xpbmspKQo+ IC0JCQlsaXN0X21vdmVfdGFpbCgmdm1hLT52bV9saW5rLCAmdm1hLT52bS0+aW5hY3RpdmVfbGlz dCk7Cj4gLQl9Cj4gKwlpZiAoIWxpc3RfZW1wdHkoJm9iai0+dm1hX2xpc3QpKQo+ICsJCWxpc3Rf bW92ZV90YWlsKCZvYmotPmdsb2JhbF9saXN0LAo+ICsJCQkgICAgICAgJnJlcXVlc3QtPmk5MTUt Pm1tLmJvdW5kX2xpc3QpOwo+Cj4gICAJZHJtX2dlbV9vYmplY3RfdW5yZWZlcmVuY2UoJm9iai0+ YmFzZSk7Cj4gICB9Cj4gQEAgLTI1NjcsNyArMjU2MywxOSBAQCBzdGF0aWMgaW50IF9faTkxNV92 bWFfdW5iaW5kKHN0cnVjdCBpOTE1X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4gICB7Cj4gICAJc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiA9IHZtYS0+b2JqOwo+ICAgCXN0cnVjdCBkcm1f aTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IG9iai0+YmFzZS5kZXYtPmRldl9wcml2YXRlOwo+IC0J aW50IHJldDsKPiArCWludCByZXQsIGk7Cj4gKwo+ICsJLyogRmlyc3Qgd2FpdCB1cG9uIGFueSBh Y3Rpdml0eSBhcyByZXRpcmluZyB0aGUgcmVxdWVzdCBtYXkKPiArCSAqIGhhdmUgc2lkZS1lZmZl Y3RzIHN1Y2ggYXMgdW5waW5uaW5nIG9yIGV2ZW4gdW5iaW5kaW5nIHRoaXMgdm1hLgo+ICsJICov Cj4gKwlpZiAodm1hLT5hY3RpdmUgJiYgd2FpdCkgewo+ICsJCWZvciAoaSA9IDA7IGkgPCBBUlJB WV9TSVpFKHZtYS0+bGFzdF9yZWFkKTsgaSsrKSB7Cj4gKwkJCXJldCA9IGk5MTVfd2FpdF9yZXF1 ZXN0KHZtYS0+bGFzdF9yZWFkW2ldLnJlcXVlc3QpOwo+ICsJCQlpZiAocmV0KQo+ICsJCQkJcmV0 dXJuIHJldDsKPiArCQl9Cj4gKwkJUlFfQlVHX09OKHZtYS0+YWN0aXZlKTsKPiArCX0KPgo+ICAg CWlmIChsaXN0X2VtcHR5KCZ2bWEtPm9ial9saW5rKSkKPiAgIAkJcmV0dXJuIDA7Cj4gQEAgLTI1 ODIsMTIgKzI1OTAsNiBAQCBzdGF0aWMgaW50IF9faTkxNV92bWFfdW5iaW5kKHN0cnVjdCBpOTE1 X3ZtYSAqdm1hLCBib29sIHdhaXQpCj4KPiAgIAlCVUdfT04ob2JqLT5wYWdlcyA9PSBOVUxMKTsK Pgo+IC0JaWYgKHdhaXQpIHsKPiAtCQlyZXQgPSBpOTE1X2dlbV9vYmplY3Rfd2FpdF9yZW5kZXJp bmcob2JqLCBmYWxzZSk7Cj4gLQkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiAtCX0KPiAt Cj4gICAJaWYgKHZtYS0+aXNfZ2d0dCAmJiB2bWEtPmdndHRfdmlldy50eXBlID09IEk5MTVfR0dU VF9WSUVXX05PUk1BTCkgewo+ICAgCQlpOTE1X2dlbV9vYmplY3RfZmluaXNoX2d0dChvYmopOwo+ Cj4gQEAgLTMwMjMsOSArMzAyNSw4IEBAIGk5MTVfZ2VtX29iamVjdF9zZXRfdG9fZ3R0X2RvbWFp bihzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLCBib29sIHdyaXRlKQo+Cj4gICAJLyog QW5kIGJ1bXAgdGhlIExSVSBmb3IgdGhpcyBhY2Nlc3MgKi8KPiAgIAl2bWEgPSBpOTE1X2dlbV9v YmpfdG9fZ2d0dChvYmopOwo+IC0JaWYgKHZtYSAmJiBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZt YS0+bm9kZSkgJiYgIW9iai0+YWN0aXZlKQo+IC0JCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xp bmssCj4gLQkJCSAgICAgICAmdG9faTkxNShvYmotPmJhc2UuZGV2KS0+Z3R0LmJhc2UuaW5hY3Rp dmVfbGlzdCk7Cj4gKwlpZiAodm1hICYmIGRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2Rl KSAmJiAhdm1hLT5hY3RpdmUpCj4gKwkJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywgJnZt YS0+dm0tPmluYWN0aXZlX2xpc3QpOwo+Cj4gICAJcmV0dXJuIDA7Cj4gICB9Cj4gQEAgLTM4NzQs NiArMzg3NSw3IEBAIHN0cnVjdCBpOTE1X3ZtYSAqaTkxNV9nZW1fb2JqX3RvX2dndHRfdmlldyhz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqLAo+ICAgdm9pZCBpOTE1X2dlbV92bWFfZGVz dHJveShzdHJ1Y3QgaTkxNV92bWEgKnZtYSkKPiAgIHsKPiAgIAlXQVJOX09OKHZtYS0+bm9kZS5h bGxvY2F0ZWQpOwo+ICsJUlFfQlVHX09OKHZtYS0+YWN0aXZlKTsKPgo+ICAgCS8qIEtlZXAgdGhl IHZtYSBhcyBhIHBsYWNlaG9sZGVyIGluIHRoZSBleGVjYnVmZmVyIHJlc2VydmF0aW9uIGxpc3Rz ICovCj4gICAJaWYgKCFsaXN0X2VtcHR5KCZ2bWEtPmV4ZWNfbGlzdCkpCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYyBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZmZXIuYwo+IGluZGV4IDZkZTg2ODFiYjY0Yy4uMWQ0 Mzc4YTQ1MDFlIDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4 ZWNidWZmZXIuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtX2V4ZWNidWZm ZXIuYwo+IEBAIC0xMDk5LDYgKzEwOTksOCBAQCB2b2lkIGk5MTVfdm1hX21vdmVfdG9fYWN0aXZl KHN0cnVjdCBpOTE1X3ZtYSAqdm1hLAo+ICAgCQl9Cj4gICAJfQo+Cj4gKwl2bWEtPmFjdGl2ZSB8 PSAxIDw8IGVuZ2luZTsKPiArCWk5MTVfZ2VtX3JlcXVlc3RfbWFya19hY3RpdmUocmVxLCAmdm1h LT5sYXN0X3JlYWRbZW5naW5lXSk7Cj4gICAJbGlzdF9tb3ZlX3RhaWwoJnZtYS0+dm1fbGluaywg JnZtYS0+dm0tPmFjdGl2ZV9saXN0KTsKPiAgIH0KPgo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2Vt X2d0dC5jCj4gaW5kZXggMTMwY2NlZmIyNDkxLi41NTA1NjAzZjUyYWYgMTAwNjQ0Cj4gLS0tIGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmMKPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9ndHQuYwo+IEBAIC0zMjI1LDEyICszMjI1LDMwIEBAIHZvaWQgaTkx NV9nZW1fcmVzdG9yZV9ndHRfbWFwcGluZ3Moc3RydWN0IGRybV9kZXZpY2UgKmRldikKPiAgIAlp OTE1X2dndHRfZmx1c2goZGV2X3ByaXYpOwo+ICAgfQo+Cj4gK3N0YXRpYyB2b2lkCj4gK2k5MTVf dm1hX3JldGlyZShzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3RfYWN0aXZlICphY3RpdmUsCj4g KwkJc3RydWN0IGRybV9pOTE1X2dlbV9yZXF1ZXN0ICpycSkKPiArewo+ICsJY29uc3QgdW5zaWdu ZWQgZW5naW5lID0gcnEtPmVuZ2luZS0+aWQ7Cj4gKwlzdHJ1Y3QgaTkxNV92bWEgKnZtYSA9Cj4g KwkJY29udGFpbmVyX29mKGFjdGl2ZSwgc3RydWN0IGk5MTVfdm1hLCBsYXN0X3JlYWRbZW5naW5l XSk7Cj4gKwo+ICsJUlFfQlVHX09OKCh2bWEtPm9iai0+YWN0aXZlICYgKDEgPDwgZW5naW5lKSkg PT0gMCk7Cj4gKwo+ICsJdm1hLT5hY3RpdmUgJj0gfigxIDw8IGVuZ2luZSk7Cj4gKwlpZiAodm1h LT5hY3RpdmUpCj4gKwkJcmV0dXJuOwo+ICsKPiArCWxpc3RfbW92ZV90YWlsKCZ2bWEtPnZtX2xp bmssICZ2bWEtPnZtLT5pbmFjdGl2ZV9saXN0KTsKPiArfQo+ICsKPiAgIHN0YXRpYyBzdHJ1Y3Qg aTkxNV92bWEgKgo+ICAgX19pOTE1X2dlbV92bWFfY3JlYXRlKHN0cnVjdCBkcm1faTkxNV9nZW1f b2JqZWN0ICpvYmosCj4gICAJCSAgICAgIHN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2UgKnZtLAo+ ICAgCQkgICAgICBjb25zdCBzdHJ1Y3QgaTkxNV9nZ3R0X3ZpZXcgKmdndHRfdmlldykKPiAgIHsK PiAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPiArCWludCBpOwo+Cj4gICAJaWYgKFdBUk5fT04o aTkxNV9pc19nZ3R0KHZtKSAhPSAhIWdndHRfdmlldykpCj4gICAJCXJldHVybiBFUlJfUFRSKC1F SU5WQUwpOwo+IEBAIC0zMjQyLDYgKzMyNjAsOCBAQCBfX2k5MTVfZ2VtX3ZtYV9jcmVhdGUoc3Ry dWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaiwKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm1hLT52 bV9saW5rKTsKPiAgIAlJTklUX0xJU1RfSEVBRCgmdm1hLT5vYmpfbGluayk7Cj4gICAJSU5JVF9M SVNUX0hFQUQoJnZtYS0+ZXhlY19saXN0KTsKPiArCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpF KHZtYS0+bGFzdF9yZWFkKTsgaSsrKQo+ICsJCWluaXRfcmVxdWVzdF9hY3RpdmUoJnZtYS0+bGFz dF9yZWFkW2ldLCBpOTE1X3ZtYV9yZXRpcmUpOwo+ICAgCXZtYS0+dm0gPSB2bTsKPiAgIAl2bWEt Pm9iaiA9IG9iajsKPiAgIAl2bWEtPmlzX2dndHQgPSBpOTE1X2lzX2dndHQodm0pOwo+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaCBiL2RyaXZlcnMvZ3B1 L2RybS9pOTE1L2k5MTVfZ2VtX2d0dC5oCj4gaW5kZXggNGU5NTUzYWNlMzNmLi5jMmYyYzYyYWM4 OGQgMTAwNjQ0Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW1fZ3R0LmgKPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbV9ndHQuaAo+IEBAIC0zNCw2ICszNCw4 IEBACj4gICAjaWZuZGVmIF9fSTkxNV9HRU1fR1RUX0hfXwo+ICAgI2RlZmluZSBfX0k5MTVfR0VN X0dUVF9IX18KPgo+ICsjaW5jbHVkZSAiaTkxNV9nZW1fcmVxdWVzdC5oIgo+ICsKPiAgIHN0cnVj dCBkcm1faTkxNV9maWxlX3ByaXZhdGU7Cj4KPiAgIHR5cGVkZWYgdWludDMyX3QgZ2VuNl9wdGVf dDsKPiBAQCAtMTgwLDEwICsxODIsMTMgQEAgc3RydWN0IGk5MTVfdm1hIHsKPiAgIAlzdHJ1Y3Qg ZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOwo+ICAgCXN0cnVjdCBpOTE1X2FkZHJlc3Nfc3BhY2Ug KnZtOwo+Cj4gKwlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX3JlcXVlc3RfYWN0aXZlIGxhc3RfcmVhZFtJ OTE1X05VTV9SSU5HU107Cj4gKwo+ICAgCS8qKiBGbGFncyBhbmQgYWRkcmVzcyBzcGFjZSB0aGlz IFZNQSBpcyBib3VuZCB0byAqLwo+ICAgI2RlZmluZSBHTE9CQUxfQklORAkoMTw8MCkKPiAgICNk ZWZpbmUgTE9DQUxfQklORAkoMTw8MSkKPiAgIAl1bnNpZ25lZCBpbnQgYm91bmQgOiA0Owo+ICsJ dW5zaWduZWQgaW50IGFjdGl2ZSA6IEk5MTVfTlVNX1JJTkdTOwo+ICAgCWJvb2wgaXNfZ2d0dCA6 IDE7Cj4KPiAgIAkvKioKPgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3Rv cC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=