From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH 07/13] drm/i915: Introduce dedicated object VMA iterator Date: Wed, 13 Jan 2016 14:35:06 +0000 Message-ID: <5696609A.10902@linux.intel.com> References: <1452252592-24803-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1452252592-24803-8-git-send-email-tvrtko.ursulin@linux.intel.com> <568FB9AA.7020201@linux.intel.com> <20160111084359.GQ8076@phenom.ffwll.local> <56937B2A.9030405@linux.intel.com> <20160112161928.GH19130@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTP id 751BB6E932 for ; Wed, 13 Jan 2016 06:35:08 -0800 (PST) In-Reply-To: <20160112161928.GH19130@phenom.ffwll.local> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Daniel Vetter Cc: Daniel Vetter , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDEyLzAxLzE2IDE2OjE5LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+IE9uIE1vbiwgSmFuIDEx LCAyMDE2IGF0IDA5OjUxOjM4QU0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pgo+PiBP biAxMS8wMS8xNiAwODo0MywgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+IE9uIEZyaSwgSmFuIDA4 LCAyMDE2IGF0IDAxOjI5OjE0UE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+Cj4+ Pj4gT24gMDgvMDEvMTYgMTE6MjksIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+PiBGcm9tOiBU dnJ0a28gVXJzdWxpbiA8dHZydGtvLnVyc3VsaW5AaW50ZWwuY29tPgo+Pj4+Pgo+Pj4+PiBQdXJw b3NlIGlzIHRvIGNhdGNoIHBsYWNlcyB3aGljaCBpdGVyYXRlIHRoZSBvYmplY3QgVk1BIGxpc3QK Pj4+Pj4gd2l0aG91dCBob2xkaW5nIHRoZSBiaWcgbG9jay4KPj4+Pj4KPj4+Pj4gSW1wbGVtZW50 ZWQgYnkgb3BlbiBjb2RpbmcgbGlzdF9mb3JfZWFjaF9lbnRyeSB0byBtYWtlIHRoZQo+Pj4+PiBt YWNybyBjb21wYXRpYmxlIHdpdGggZXhpc3RpbmcgY2FsbCBzaXRlcy4KPj4+Pj4KPj4+Pj4gU2ln bmVkLW9mZi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4+ Pj4gQ2M6IERhbmllbCBWZXR0ZXIgPGRhbmllbC52ZXR0ZXJAZmZ3bGwuY2g+Cj4+Pj4+IC0tLQo+ Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgIHwgIDggKysr Ky0tLS0KPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaCAgICAgICAgICB8 ICA2ICsrKysrKwo+Pj4+PiAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5jICAgICAg ICAgIHwgMjQgKysrKysrKysrKysrLS0tLS0tLS0tLS0tCj4+Pj4+ICAgIGRyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZ2VtX2d0dC5jICAgICAgfCAgMiArLQo+Pj4+PiAgICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pOTE1X2dlbV9zaHJpbmtlci5jIHwgIDIgKy0KPj4+Pj4gICAgZHJpdmVycy9ncHUv ZHJtL2k5MTUvaTkxNV9ncHVfZXJyb3IuYyAgICB8ICA0ICsrLS0KPj4+Pj4gICAgNiBmaWxlcyBj aGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9n cHUvZHJtL2k5MTUvaTkxNV9kZWJ1Z2ZzLmMKPj4+Pj4gaW5kZXggNzE0YTQ1Y2Y4YTUxLi5kN2My YTMyMDExNjEgMTAwNjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVi dWdmcy5jCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+ Pj4+IEBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIHU2NCBpOTE1X2dlbV9vYmpfdG90YWxfZ2d0 dF9zaXplKHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+Pj4+ICAgIAl1NjQgc2l6 ZSA9IDA7Cj4+Pj4+ICAgIAlzdHJ1Y3QgaTkxNV92bWEgKnZtYTsKPj4+Pj4KPj4+Pj4gLQlsaXN0 X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4+Pj4+ICsJ aTkxNV9nZW1fb2JqX2Zvcl9lYWNoX3ZtYSh2bWEsIG9iaikgewo+Pj4+PiAgICAJCWlmIChpOTE1 X2lzX2dndHQodm1hLT52bSkgJiYKPj4+Pj4gICAgCQkgICAgZHJtX21tX25vZGVfYWxsb2NhdGVk KCZ2bWEtPm5vZGUpKQo+Pj4+PiAgICAJCQlzaXplICs9IHZtYS0+bm9kZS5zaXplOwo+Pj4+PiBA QCAtMTU1LDcgKzE1NSw3IEBAIGRlc2NyaWJlX29iaihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+Pj4+ICAgIAkJICAgb2JqLT5tYWR2ID09IEk5 MTVfTUFEVl9ET05UTkVFRCA/ICIgcHVyZ2VhYmxlIiA6ICIiKTsKPj4+Pj4gICAgCWlmIChvYmot PmJhc2UubmFtZSkKPj4+Pj4gICAgCQlzZXFfcHJpbnRmKG0sICIgKG5hbWU6ICVkKSIsIG9iai0+ YmFzZS5uYW1lKTsKPj4+Pj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xp c3QsIHZtYV9saW5rKSB7Cj4+Pj4+ICsJaTkxNV9nZW1fb2JqX2Zvcl9lYWNoX3ZtYSh2bWEsIG9i aikgewo+Pj4+PiAgICAJCWlmICh2bWEtPnBpbl9jb3VudCA+IDApCj4+Pj4+ICAgIAkJCXBpbl9j b3VudCsrOwo+Pj4+PiAgICAJfQo+Pj4+PiBAQCAtMTY0LDcgKzE2NCw3IEBAIGRlc2NyaWJlX29i aihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHN0cnVjdCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+ Pj4+ICAgIAkJc2VxX3ByaW50ZihtLCAiIChkaXNwbGF5KSIpOwo+Pj4+PiAgICAJaWYgKG9iai0+ ZmVuY2VfcmVnICE9IEk5MTVfRkVOQ0VfUkVHX05PTkUpCj4+Pj4+ICAgIAkJc2VxX3ByaW50Ziht LCAiIChmZW5jZTogJWQpIiwgb2JqLT5mZW5jZV9yZWcpOwo+Pj4+PiAtCWxpc3RfZm9yX2VhY2hf ZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xpbmspIHsKPj4+Pj4gKwlpOTE1X2dlbV9v YmpfZm9yX2VhY2hfdm1hKHZtYSwgb2JqKSB7Cj4+Pj4+ICAgIAkJc2VxX3ByaW50ZihtLCAiICgl c2d0dCBvZmZzZXQ6ICUwOGxseCwgc2l6ZTogJTA4bGx4IiwKPj4+Pj4gICAgCQkJICAgaTkxNV9p c19nZ3R0KHZtYS0+dm0pID8gImciIDogInBwIiwKPj4+Pj4gICAgCQkJICAgdm1hLT5ub2RlLnN0 YXJ0LCB2bWEtPm5vZGUuc2l6ZSk7Cj4+Pj4+IEBAIC0zNDIsNyArMzQyLDcgQEAgc3RhdGljIGlu dCBwZXJfZmlsZV9zdGF0cyhpbnQgaWQsIHZvaWQgKnB0ciwgdm9pZCAqZGF0YSkKPj4+Pj4gICAg CQlzdGF0cy0+c2hhcmVkICs9IG9iai0+YmFzZS5zaXplOwo+Pj4+Pgo+Pj4+PiAgICAJaWYgKFVT RVNfRlVMTF9QUEdUVChvYmotPmJhc2UuZGV2KSkgewo+Pj4+PiAtCQlsaXN0X2Zvcl9lYWNoX2Vu dHJ5KHZtYSwgJm9iai0+dm1hX2xpc3QsIHZtYV9saW5rKSB7Cj4+Pj4+ICsJCWk5MTVfZ2VtX29i al9mb3JfZWFjaF92bWEodm1hLCBvYmopIHsKPj4+Pj4gICAgCQkJc3RydWN0IGk5MTVfaHdfcHBn dHQgKnBwZ3R0Owo+Pj4+Pgo+Pj4+PiAgICAJCQlpZiAoIWRybV9tbV9ub2RlX2FsbG9jYXRlZCgm dm1hLT5ub2RlKSkKPj4+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVf ZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+IGluZGV4IGI3N2E1 ZDg0ZWFjMi4uMDQwNmEwMjBkZmNjIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2Rydi5oCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2 LmgKPj4+Pj4gQEAgLTI4NTIsNiArMjg1MiwxMiBAQCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVj dCAqaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2RhdGEoCj4+Pj4+ICAgIHZvaWQgaTkxNV9n ZW1fZnJlZV9vYmplY3Qoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopOwo+Pj4+PiAgICB2b2lk IGk5MTVfZ2VtX3ZtYV9kZXN0cm95KHN0cnVjdCBpOTE1X3ZtYSAqdm1hKTsKPj4+Pj4KPj4+Pj4g KyNkZWZpbmUgaTkxNV9nZW1fb2JqX2Zvcl9lYWNoX3ZtYSh2bWEsIG9iaikgXAo+Pj4+PiArCWZv ciAoV0FSTl9PTl9PTkNFKCFtdXRleF9pc19sb2NrZWQoJihvYmopLT5iYXNlLmRldi0+c3RydWN0 X211dGV4KSksIFwKPj4+Pj4gKwkgICAgIHZtYSA9IGxpc3RfZmlyc3RfZW50cnkoJihvYmopLT52 bWFfbGlzdCwgdHlwZW9mKCp2bWEpLCB2bWFfbGluayk7XAo+Pj4+PiArCSAgICAgJnZtYS0+dm1h X2xpbmsgIT0gKCYob2JqKS0+dm1hX2xpc3QpOyBcCj4+Pj4+ICsJICAgICB2bWEgPSBsaXN0X25l eHRfZW50cnkodm1hLCB2bWFfbGluaykpCj4+Pj4+ICsKPj4+Pgo+Pj4+Cj4+Pj4gVW5mb3J0dW5h dGVseSBlcnJvciBjYXB0dXJlIGlzIG5vdCBoYXBweSB3aXRoIHRoaXMgYXBwcm9hY2guIENhbid0 IGV2ZW4gc2VlCj4+Pj4gdGhhdCBlcnJvciBjYXB0dXJlIGF0dGVtcHRzIHRvIGdyYWIgdGhlIG11 dGV4IGFueXdoZXJlLgo+Pj4+Cj4+Pj4gU28gd2hhdD8gRHJvcCB0aGUgaWRlYSBvciBhZGQgYSAi ZG9pbmcgZXJyb3IgY2FwdHVyZSIgZmxhZyBzb21ld2hlcmU/Cj4+Pgo+Pj4gRml4IHRoZSBidWdz LiBOb3Qgc3VycHJpc2UgYXQgYWxsIHRoYXQgd2UndmUgc2NyZXdlZCB0aGlzIHVwIGFsbCBvdmVy IHRoZQo+Pj4gcGxhY2UgOy0pIEFmYWljcyBtb2Rlc2V0IGNvZGUgaXNuJ3QgbXVjaCBiZXR0ZXIg ZWl0aGVyIC4uLgo+Pgo+PiBPayBJJ2xsIGRyb3AgdGhpcyBwYXRjaCB0aGVuIHNpbmNlIHRoZSBz ZXJpZXMgY29udGFpbnMgZml4ZXMgdG8gYWxsIGJ1dCBvbmUKPj4gcmVsYXRlZCBpc3N1ZXMuIFRo ZSByZW1haW5pbmcgb25lIGlzIHRoZW46Cj4+Cj4+IFsgICAxNy4zNzAzNjZdIC0tLS0tLS0tLS0t LVsgY3V0IGhlcmUgXS0tLS0tLS0tLS0tLQo+PiBbICAgMTcuMzc1NjMzXSBXQVJOSU5HOiBDUFU6 IDAgUElEOiAxMTI4IGF0IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZ2VtLmM6NTE2NiBpOTE1 X2dlbV9vYmpfZ2d0dF9vZmZzZXRfdmlldysweDEwZi8weDEyMCBbaTkxNV0oKQo+PiBbICAgMTcu Mzg4ODc5XSBXQVJOX09OX09OQ0UoIW11dGV4X2lzX2xvY2tlZCgmKG8pLT5iYXNlLmRldi0+c3Ry dWN0X211dGV4KSkKPj4gWyAgIDE3LjM5NjM2NF0gTW9kdWxlcyBsaW5rZWQgaW46IGhpZF9nZW5l cmljIHVzYmhpZCBjb3JldGVtcCBhc2l4IHVzYm5ldCBsaWJwaHkgbWlpIGk5MTUgZ3Bpb19seW54 cG9pbnQgaTJjX2hpZCBoaWQgdmlkZW8gaTJjX2FsZ29fYml0IGRybV9rbXNfaGVscGVyIGFjcGlf cGFkIGRybSBscGNfaWNoIG1mZF9jb3JlIG5sc19pc284ODU5XzEgZTEwMDBlIHB0cCBhaGNpIGxp YmFoY2kgcHBzX2NvcmUKPj4gWyAgIDE3LjQxOTQ4NF0gQ1BVOiAwIFBJRDogMTEyOCBDb21tOiBY b3JnIFRhaW50ZWQ6IEcgICAgIFUgICAgICAgICAgNC40LjAtcmM4LTE2MDEwNysgIzEwNQo+PiBb ICAgMTcuNDI4NzcxXSBIYXJkd2FyZSBuYW1lOiBJbnRlbCBDb3Jwb3JhdGlvbiBCcm9hZHdlbGwg Q2xpZW50IHBsYXRmb3JtL1doaXRlVGlwIE1vdW50YWluIDEsIEJJT1MgQkRXLUUxUjEuODZDLjAw ODAuUjAxLjE0MDYxMjA0NDYgMDYvMTIvMjAxNAo+PiBbICAgMTcuNDQzMTYxXSAgZmZmZmZmZmZh MDIyNzc5MCBmZmZmODgwMGE5ODQzOWI4IGZmZmZmZmZmODEyODBkODIgZmZmZjg4MDBhOTg0M2Ew MAo+PiBbICAgMTcuNDUxNjc3XSAgZmZmZjg4MDBhOTg0MzlmMCBmZmZmZmZmZjgxMDQ5YzhjIGZm ZmY4ODAxNDk1ZDAwMDAgZmZmZjg4MDBhYTkzNDkwMAo+PiBbICAgMTcuNDYwMTY2XSAgZmZmZjg4 MDE0OTVkODY2OCBmZmZmZmZmZmEwMjQyNTIwIGZmZmY4ODAwYWFjZWEwMDAgZmZmZjg4MDBhOTg0 M2E1MAo+PiBbICAgMTcuNDY4Njc0XSBDYWxsIFRyYWNlOgo+PiBbICAgMTcuNDcxNDcwXSAgWzxm ZmZmZmZmZjgxMjgwZDgyPl0gZHVtcF9zdGFjaysweDRiLzB4NzkKPj4gWyAgIDE3LjQ3NzM1NV0g IFs8ZmZmZmZmZmY4MTA0OWM4Yz5dIHdhcm5fc2xvd3BhdGhfY29tbW9uKzB4N2MvMHhjMAo+PiBb ICAgMTcuNDg0MjU1XSAgWzxmZmZmZmZmZjgxMDQ5ZDE3Pl0gd2Fybl9zbG93cGF0aF9mbXQrMHg0 Ny8weDUwCj4+IFsgICAxNy40OTA4NjldICBbPGZmZmZmZmZmYTAxOGY3ZWY+XSBpOTE1X2dlbV9v YmpfZ2d0dF9vZmZzZXRfdmlldysweDEwZi8weDEyMCBbaTkxNV0KPj4gWyAgIDE3LjQ5OTU3Ml0g IFs8ZmZmZmZmZmZhMDFhNzI5MD5dID8gZ2VuOV93cml0ZTgrMHgyZDAvMHgyZDAgW2k5MTVdCj4+ IFsgICAxNy41MDY2NjNdICBbPGZmZmZmZmZmYTAxYmRiZmU+XSBpcm9ubGFrZV91cGRhdGVfcHJp bWFyeV9wbGFuZSsweDFlZS8weDNhMCBbaTkxNV0KPj4gWyAgIDE3LjUxNTM1OF0gIFs8ZmZmZmZm ZmZhMDFhY2UxZj5dIGludGVsX3BsYW5lX2F0b21pY191cGRhdGUrMHg1Zi8weDcwIFtpOTE1XQo+ PiBbICAgMTcuNTIzMzkxXSAgWzxmZmZmZmZmZmEwMGVmMTIyPl0gZHJtX2F0b21pY19oZWxwZXJf Y29tbWl0X3BsYW5lc19vbl9jcnRjKzB4MTQyLzB4MjMwIFtkcm1fa21zX2hlbHBlcl0KPj4gWyAg IDE3LjUzNDA2M10gIFs8ZmZmZmZmZmZhMDFjMTc0ND5dIGludGVsX2F0b21pY19jb21taXQrMHg0 MjQvMHgyMjcwIFtpOTE1XQo+PiBbICAgMTcuNTQxNzYzXSAgWzxmZmZmZmZmZjgxNGVlMDRhPl0g PyBfX3d3X211dGV4X2xvY2srMHg0YS8weDgyCj4+IFsgICAxNy41NDgzNTVdICBbPGZmZmZmZmZm YTAwOTdlZGI+XSA/IGRybV9hdG9taWNfY2hlY2tfb25seSsweDEyYi8weDVlMCBbZHJtXQo+PiBb ICAgMTcuNTU2MzUyXSAgWzxmZmZmZmZmZmEwMDk3YTA3Pl0gPyBkcm1fYXRvbWljX3NldF9jcnRj X2Zvcl9jb25uZWN0b3IrMHg3Ny8weGYwIFtkcm1dCj4+IFsgICAxNy41NjUzNDZdICBbPGZmZmZm ZmZmYTAwOTgzYzI+XSBkcm1fYXRvbWljX2NvbW1pdCsweDMyLzB4NTAgW2RybV0KPj4gWyAgIDE3 LjU3MjU1M10gIFs8ZmZmZmZmZmZhMDBlZjc4Mj5dIGRybV9hdG9taWNfaGVscGVyX3NldF9jb25m aWcrMHg3Mi8weGIwIFtkcm1fa21zX2hlbHBlcl0KPj4gWyAgIDE3LjU4MTk1NF0gIFs8ZmZmZmZm ZmZhMDA4OGU4Zj5dIGRybV9tb2RlX3NldF9jb25maWdfaW50ZXJuYWwrMHg1Zi8weDEwMCBbZHJt XQo+PiBbICAgMTcuNTkwMzEzXSAgWzxmZmZmZmZmZmEwMDhjZGM4Pl0gZHJtX21vZGVfc2V0Y3J0 YysweGQ4LzB4NTAwIFtkcm1dCj4+IFsgICAxNy41OTc0OTFdICBbPGZmZmZmZmZmYTAwN2Y1ZDg+ XSBkcm1faW9jdGwrMHgyNTgvMHg0ZjAgW2RybV0KPj4gWyAgIDE3LjYwNDA2NV0gIFs8ZmZmZmZm ZmY4MTBjMzRhYz5dID8gdW5sb2NrX3BhZ2UrMHg0Yy8weDUwCj4+IFsgICAxNy42MTAyNDVdICBb PGZmZmZmZmZmYTAwOGNjZjA+XSA/IGRybV9tb2RlX3NldHBsYW5lKzB4MWMwLzB4MWMwIFtkcm1d Cj4+IFsgICAxNy42MTc4NDRdICBbPGZmZmZmZmZmODExMTU5N2Q+XSBkb192ZnNfaW9jdGwrMHgy Y2QvMHg0YTAKPj4gWyAgIDE3LjYyNDEzN10gIFs8ZmZmZmZmZmY4MTA1MjU3Mj5dID8gcmVjYWxj X3NpZ3BlbmRpbmcrMHgxMi8weDQwCj4+IFsgICAxNy42MzA5NDNdICBbPGZmZmZmZmZmODExMWVi MzI+XSA/IF9fZmdldCsweDcyLzB4YjAKPj4gWyAgIDE3LjYzNjY0NV0gIFs8ZmZmZmZmZmY4MTEx NWI4Yz5dIFN5U19pb2N0bCsweDNjLzB4NzAKPj4gWyAgIDE3LjY0MjQ0OF0gIFs8ZmZmZmZmZmY4 MTA1NTMwMT5dID8gU3lTX3J0X3NpZ3Byb2NtYXNrKzB4ODEvMHhhMAo+PiBbICAgMTcuNjQ5MzM0 XSAgWzxmZmZmZmZmZjgxNGYwMDE3Pl0gZW50cnlfU1lTQ0FMTF82NF9mYXN0cGF0aCsweDEyLzB4 NmEKPj4gWyAgIDE3LjY1Njc0MF0gLS0tWyBlbmQgdHJhY2UgM2YyOTE5MDAwNmM5NzgyNiBdLS0t Cj4+Cj4+IFdvdWxkIHlvdSBsaWtlIGEgQlogZm9yIHRoaXMgb3IgbWF5YmUgaXQgaXMga25vd24g YWxyZWFkeT8KPgo+IE1hYXJ0ZW4gaXMgd29ya2luZyBvbiB0aGlzLCBvciBhdCBsZWFzdCB3ZSdy ZSB0cmFja2luZyBpdCBhbHJlYWR5IGluCj4gVklaLTcwMDAuCj4KPiBDYW4geW91IHBscyBjb29y ZGluYXRlIHdpdGggTWFhcnRlbiB0byBtYWtlIHN1cmUgdGhlIGZpbmFsICJlbmFibGUgdGhlCj4g d2FybmluZyIgcGF0Y2ggbGFuZHMgb25seSBvbmNlIGFsbCB0aGUgYml0cyBhcmUgaW4/CgpPaCBJ IGRyb3BwZWQgdGhhdCBwYXRjaCBkdWUgdGhlIGVycm9yIGNhcHR1cmUgcHJvYmxlbSAtIGRvIHlv dSBoYXZlIGEgCnN1Z2dlc3Rpb24gaG93IHRvIGhhbmRsZSB0aGF0PwoKUmVnYXJkcywKClR2cnRr bwpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=