From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH 07/13] drm/i915: Introduce dedicated object VMA iterator Date: Tue, 12 Jan 2016 17:43:16 +0100 Message-ID: <56952D24.3020601@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" 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 0B0D36E691 for ; Tue, 12 Jan 2016 08:44:05 -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 , Tvrtko Ursulin Cc: Daniel Vetter , Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTItMDEtMTYgb20gMTc6MTkgc2NocmVlZiBEYW5pZWwgVmV0dGVyOgo+IE9uIE1vbiwgSmFu IDExLCAyMDE2IGF0IDA5OjUxOjM4QU0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+PiBP biAxMS8wMS8xNiAwODo0MywgRGFuaWVsIFZldHRlciB3cm90ZToKPj4+IE9uIEZyaSwgSmFuIDA4 LCAyMDE2IGF0IDAxOjI5OjE0UE0gKzAwMDAsIFR2cnRrbyBVcnN1bGluIHdyb3RlOgo+Pj4+IE9u IDA4LzAxLzE2IDExOjI5LCBUdnJ0a28gVXJzdWxpbiB3cm90ZToKPj4+Pj4gRnJvbTogVHZydGtv IFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4+Pj4KPj4+Pj4gUHVycG9zZSBp cyB0byBjYXRjaCBwbGFjZXMgd2hpY2ggaXRlcmF0ZSB0aGUgb2JqZWN0IFZNQSBsaXN0Cj4+Pj4+ IHdpdGhvdXQgaG9sZGluZyB0aGUgYmlnIGxvY2suCj4+Pj4+Cj4+Pj4+IEltcGxlbWVudGVkIGJ5 IG9wZW4gY29kaW5nIGxpc3RfZm9yX2VhY2hfZW50cnkgdG8gbWFrZSB0aGUKPj4+Pj4gbWFjcm8g Y29tcGF0aWJsZSB3aXRoIGV4aXN0aW5nIGNhbGwgc2l0ZXMuCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1v ZmYtYnk6IFR2cnRrbyBVcnN1bGluIDx0dnJ0a28udXJzdWxpbkBpbnRlbC5jb20+Cj4+Pj4+IENj OiBEYW5pZWwgVmV0dGVyIDxkYW5pZWwudmV0dGVyQGZmd2xsLmNoPgo+Pj4+PiAtLS0KPj4+Pj4g ICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyAgICAgIHwgIDggKysrKy0tLS0K Pj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgICAgIHwgIDYgKysr KysrCj4+Pj4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9nZW0uYyAgICAgICAgICB8IDI0 ICsrKysrKysrKysrKy0tLS0tLS0tLS0tLQo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX2d0dC5jICAgICAgfCAgMiArLQo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ2VtX3Nocmlua2VyLmMgfCAgMiArLQo+Pj4+PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZ3B1X2Vycm9yLmMgICAgfCAgNCArKy0tCj4+Pj4+ICAgNiBmaWxlcyBjaGFuZ2VkLCAyNiBp bnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKPj4+Pj4KPj4+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aTkxNV9kZWJ1Z2ZzLmMKPj4+Pj4gaW5kZXggNzE0YTQ1Y2Y4YTUxLi5kN2MyYTMyMDExNjEgMTAw NjQ0Cj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+Pj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jCj4+Pj4+IEBAIC0xMTcs NyArMTE3LDcgQEAgc3RhdGljIHU2NCBpOTE1X2dlbV9vYmpfdG90YWxfZ2d0dF9zaXplKHN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmopCj4+Pj4+ICAgCXU2NCBzaXplID0gMDsKPj4+Pj4g ICAJc3RydWN0IGk5MTVfdm1hICp2bWE7Cj4+Pj4+Cj4+Pj4+IC0JbGlzdF9mb3JfZWFjaF9lbnRy eSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgewo+Pj4+PiArCWk5MTVfZ2VtX29ial9m b3JfZWFjaF92bWEodm1hLCBvYmopIHsKPj4+Pj4gICAJCWlmIChpOTE1X2lzX2dndHQodm1hLT52 bSkgJiYKPj4+Pj4gICAJCSAgICBkcm1fbW1fbm9kZV9hbGxvY2F0ZWQoJnZtYS0+bm9kZSkpCj4+ Pj4+ICAgCQkJc2l6ZSArPSB2bWEtPm5vZGUuc2l6ZTsKPj4+Pj4gQEAgLTE1NSw3ICsxNTUsNyBA QCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29i amVjdCAqb2JqKQo+Pj4+PiAgIAkJICAgb2JqLT5tYWR2ID09IEk5MTVfTUFEVl9ET05UTkVFRCA/ ICIgcHVyZ2VhYmxlIiA6ICIiKTsKPj4+Pj4gICAJaWYgKG9iai0+YmFzZS5uYW1lKQo+Pj4+PiAg IAkJc2VxX3ByaW50ZihtLCAiIChuYW1lOiAlZCkiLCBvYmotPmJhc2UubmFtZSk7Cj4+Pj4+IC0J bGlzdF9mb3JfZWFjaF9lbnRyeSh2bWEsICZvYmotPnZtYV9saXN0LCB2bWFfbGluaykgewo+Pj4+ PiArCWk5MTVfZ2VtX29ial9mb3JfZWFjaF92bWEodm1hLCBvYmopIHsKPj4+Pj4gICAJCWlmICh2 bWEtPnBpbl9jb3VudCA+IDApCj4+Pj4+ICAgCQkJcGluX2NvdW50Kys7Cj4+Pj4+ICAgCX0KPj4+ Pj4gQEAgLTE2NCw3ICsxNjQsNyBAQCBkZXNjcmliZV9vYmooc3RydWN0IHNlcV9maWxlICptLCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqKQo+Pj4+PiAgIAkJc2VxX3ByaW50ZihtLCAi IChkaXNwbGF5KSIpOwo+Pj4+PiAgIAlpZiAob2JqLT5mZW5jZV9yZWcgIT0gSTkxNV9GRU5DRV9S RUdfTk9ORSkKPj4+Pj4gICAJCXNlcV9wcmludGYobSwgIiAoZmVuY2U6ICVkKSIsIG9iai0+ZmVu Y2VfcmVnKTsKPj4+Pj4gLQlsaXN0X2Zvcl9lYWNoX2VudHJ5KHZtYSwgJm9iai0+dm1hX2xpc3Qs IHZtYV9saW5rKSB7Cj4+Pj4+ICsJaTkxNV9nZW1fb2JqX2Zvcl9lYWNoX3ZtYSh2bWEsIG9iaikg ewo+Pj4+PiAgIAkJc2VxX3ByaW50ZihtLCAiICglc2d0dCBvZmZzZXQ6ICUwOGxseCwgc2l6ZTog JTA4bGx4IiwKPj4+Pj4gICAJCQkgICBpOTE1X2lzX2dndHQodm1hLT52bSkgPyAiZyIgOiAicHAi LAo+Pj4+PiAgIAkJCSAgIHZtYS0+bm9kZS5zdGFydCwgdm1hLT5ub2RlLnNpemUpOwo+Pj4+PiBA QCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyBpbnQgcGVyX2ZpbGVfc3RhdHMoaW50IGlkLCB2b2lk ICpwdHIsIHZvaWQgKmRhdGEpCj4+Pj4+ICAgCQlzdGF0cy0+c2hhcmVkICs9IG9iai0+YmFzZS5z aXplOwo+Pj4+Pgo+Pj4+PiAgIAlpZiAoVVNFU19GVUxMX1BQR1RUKG9iai0+YmFzZS5kZXYpKSB7 Cj4+Pj4+IC0JCWxpc3RfZm9yX2VhY2hfZW50cnkodm1hLCAmb2JqLT52bWFfbGlzdCwgdm1hX2xp bmspIHsKPj4+Pj4gKwkJaTkxNV9nZW1fb2JqX2Zvcl9lYWNoX3ZtYSh2bWEsIG9iaikgewo+Pj4+ PiAgIAkJCXN0cnVjdCBpOTE1X2h3X3BwZ3R0ICpwcGd0dDsKPj4+Pj4KPj4+Pj4gICAJCQlpZiAo IWRybV9tbV9ub2RlX2FsbG9jYXRlZCgmdm1hLT5ub2RlKSkKPj4+Pj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1 X2Rydi5oCj4+Pj4+IGluZGV4IGI3N2E1ZDg0ZWFjMi4uMDQwNmEwMjBkZmNjIDEwMDY0NAo+Pj4+ PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9pOTE1L2k5MTVfZHJ2LmgKPj4+Pj4gQEAgLTI4NTIsNiArMjg1MiwxMiBAQCBz dHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqaTkxNV9nZW1fb2JqZWN0X2NyZWF0ZV9mcm9tX2Rh dGEoCj4+Pj4+ICAgdm9pZCBpOTE1X2dlbV9mcmVlX29iamVjdChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKm9iaik7Cj4+Pj4+ICAgdm9pZCBpOTE1X2dlbV92bWFfZGVzdHJveShzdHJ1Y3QgaTkxNV92 bWEgKnZtYSk7Cj4+Pj4+Cj4+Pj4+ICsjZGVmaW5lIGk5MTVfZ2VtX29ial9mb3JfZWFjaF92bWEo dm1hLCBvYmopIFwKPj4+Pj4gKwlmb3IgKFdBUk5fT05fT05DRSghbXV0ZXhfaXNfbG9ja2VkKCYo b2JqKS0+YmFzZS5kZXYtPnN0cnVjdF9tdXRleCkpLCBcCj4+Pj4+ICsJICAgICB2bWEgPSBsaXN0 X2ZpcnN0X2VudHJ5KCYob2JqKS0+dm1hX2xpc3QsIHR5cGVvZigqdm1hKSwgdm1hX2xpbmspO1wK Pj4+Pj4gKwkgICAgICZ2bWEtPnZtYV9saW5rICE9ICgmKG9iaiktPnZtYV9saXN0KTsgXAo+Pj4+ PiArCSAgICAgdm1hID0gbGlzdF9uZXh0X2VudHJ5KHZtYSwgdm1hX2xpbmspKQo+Pj4+PiArCj4+ Pj4KPj4+PiBVbmZvcnR1bmF0ZWx5IGVycm9yIGNhcHR1cmUgaXMgbm90IGhhcHB5IHdpdGggdGhp cyBhcHByb2FjaC4gQ2FuJ3QgZXZlbiBzZWUKPj4+PiB0aGF0IGVycm9yIGNhcHR1cmUgYXR0ZW1w dHMgdG8gZ3JhYiB0aGUgbXV0ZXggYW55d2hlcmUuCj4+Pj4KPj4+PiBTbyB3aGF0PyBEcm9wIHRo ZSBpZGVhIG9yIGFkZCBhICJkb2luZyBlcnJvciBjYXB0dXJlIiBmbGFnIHNvbWV3aGVyZT8KPj4+ IEZpeCB0aGUgYnVncy4gTm90IHN1cnByaXNlIGF0IGFsbCB0aGF0IHdlJ3ZlIHNjcmV3ZWQgdGhp cyB1cCBhbGwgb3ZlciB0aGUKPj4+IHBsYWNlIDstKSBBZmFpY3MgbW9kZXNldCBjb2RlIGlzbid0 IG11Y2ggYmV0dGVyIGVpdGhlciAuLi4KPj4gT2sgSSdsbCBkcm9wIHRoaXMgcGF0Y2ggdGhlbiBz aW5jZSB0aGUgc2VyaWVzIGNvbnRhaW5zIGZpeGVzIHRvIGFsbCBidXQgb25lCj4+IHJlbGF0ZWQg aXNzdWVzLiBUaGUgcmVtYWluaW5nIG9uZSBpcyB0aGVuOgo+Pgo+PiBbICAgMTcuMzcwMzY2XSAt LS0tLS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KPj4gWyAgIDE3LjM3NTYzM10gV0FS TklORzogQ1BVOiAwIFBJRDogMTEyOCBhdCBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2dlbS5j OjUxNjYgaTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0X3ZpZXcrMHgxMGYvMHgxMjAgW2k5MTVdKCkK Pj4gWyAgIDE3LjM4ODg3OV0gV0FSTl9PTl9PTkNFKCFtdXRleF9pc19sb2NrZWQoJihvKS0+YmFz ZS5kZXYtPnN0cnVjdF9tdXRleCkpCj4+IFsgICAxNy4zOTYzNjRdIE1vZHVsZXMgbGlua2VkIGlu OiBoaWRfZ2VuZXJpYyB1c2JoaWQgY29yZXRlbXAgYXNpeCB1c2JuZXQgbGlicGh5IG1paSBpOTE1 IGdwaW9fbHlueHBvaW50IGkyY19oaWQgaGlkIHZpZGVvIGkyY19hbGdvX2JpdCBkcm1fa21zX2hl bHBlciBhY3BpX3BhZCBkcm0gbHBjX2ljaCBtZmRfY29yZSBubHNfaXNvODg1OV8xIGUxMDAwZSBw dHAgYWhjaSBsaWJhaGNpIHBwc19jb3JlCj4+IFsgICAxNy40MTk0ODRdIENQVTogMCBQSUQ6IDEx MjggQ29tbTogWG9yZyBUYWludGVkOiBHICAgICBVICAgICAgICAgIDQuNC4wLXJjOC0xNjAxMDcr ICMxMDUKPj4gWyAgIDE3LjQyODc3MV0gSGFyZHdhcmUgbmFtZTogSW50ZWwgQ29ycG9yYXRpb24g QnJvYWR3ZWxsIENsaWVudCBwbGF0Zm9ybS9XaGl0ZVRpcCBNb3VudGFpbiAxLCBCSU9TIEJEVy1F MVIxLjg2Qy4wMDgwLlIwMS4xNDA2MTIwNDQ2IDA2LzEyLzIwMTQKPj4gWyAgIDE3LjQ0MzE2MV0g IGZmZmZmZmZmYTAyMjc3OTAgZmZmZjg4MDBhOTg0MzliOCBmZmZmZmZmZjgxMjgwZDgyIGZmZmY4 ODAwYTk4NDNhMDAKPj4gWyAgIDE3LjQ1MTY3N10gIGZmZmY4ODAwYTk4NDM5ZjAgZmZmZmZmZmY4 MTA0OWM4YyBmZmZmODgwMTQ5NWQwMDAwIGZmZmY4ODAwYWE5MzQ5MDAKPj4gWyAgIDE3LjQ2MDE2 Nl0gIGZmZmY4ODAxNDk1ZDg2NjggZmZmZmZmZmZhMDI0MjUyMCBmZmZmODgwMGFhY2VhMDAwIGZm ZmY4ODAwYTk4NDNhNTAKPj4gWyAgIDE3LjQ2ODY3NF0gQ2FsbCBUcmFjZToKPj4gWyAgIDE3LjQ3 MTQ3MF0gIFs8ZmZmZmZmZmY4MTI4MGQ4Mj5dIGR1bXBfc3RhY2srMHg0Yi8weDc5Cj4+IFsgICAx Ny40NzczNTVdICBbPGZmZmZmZmZmODEwNDljOGM+XSB3YXJuX3Nsb3dwYXRoX2NvbW1vbisweDdj LzB4YzAKPj4gWyAgIDE3LjQ4NDI1NV0gIFs8ZmZmZmZmZmY4MTA0OWQxNz5dIHdhcm5fc2xvd3Bh dGhfZm10KzB4NDcvMHg1MAo+PiBbICAgMTcuNDkwODY5XSAgWzxmZmZmZmZmZmEwMThmN2VmPl0g aTkxNV9nZW1fb2JqX2dndHRfb2Zmc2V0X3ZpZXcrMHgxMGYvMHgxMjAgW2k5MTVdCj4+IFsgICAx Ny40OTk1NzJdICBbPGZmZmZmZmZmYTAxYTcyOTA+XSA/IGdlbjlfd3JpdGU4KzB4MmQwLzB4MmQw IFtpOTE1XQo+PiBbICAgMTcuNTA2NjYzXSAgWzxmZmZmZmZmZmEwMWJkYmZlPl0gaXJvbmxha2Vf dXBkYXRlX3ByaW1hcnlfcGxhbmUrMHgxZWUvMHgzYTAgW2k5MTVdCj4+IFsgICAxNy41MTUzNThd ICBbPGZmZmZmZmZmYTAxYWNlMWY+XSBpbnRlbF9wbGFuZV9hdG9taWNfdXBkYXRlKzB4NWYvMHg3 MCBbaTkxNV0KPj4gWyAgIDE3LjUyMzM5MV0gIFs8ZmZmZmZmZmZhMDBlZjEyMj5dIGRybV9hdG9t aWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25fY3J0YysweDE0Mi8weDIzMCBbZHJtX2ttc19oZWxw ZXJdCj4+IFsgICAxNy41MzQwNjNdICBbPGZmZmZmZmZmYTAxYzE3NDQ+XSBpbnRlbF9hdG9taWNf Y29tbWl0KzB4NDI0LzB4MjI3MCBbaTkxNV0KPj4gWyAgIDE3LjU0MTc2M10gIFs8ZmZmZmZmZmY4 MTRlZTA0YT5dID8gX193d19tdXRleF9sb2NrKzB4NGEvMHg4Mgo+PiBbICAgMTcuNTQ4MzU1XSAg WzxmZmZmZmZmZmEwMDk3ZWRiPl0gPyBkcm1fYXRvbWljX2NoZWNrX29ubHkrMHgxMmIvMHg1ZTAg W2RybV0KPj4gWyAgIDE3LjU1NjM1Ml0gIFs8ZmZmZmZmZmZhMDA5N2EwNz5dID8gZHJtX2F0b21p Y19zZXRfY3J0Y19mb3JfY29ubmVjdG9yKzB4NzcvMHhmMCBbZHJtXQo+PiBbICAgMTcuNTY1MzQ2 XSAgWzxmZmZmZmZmZmEwMDk4M2MyPl0gZHJtX2F0b21pY19jb21taXQrMHgzMi8weDUwIFtkcm1d Cj4+IFsgICAxNy41NzI1NTNdICBbPGZmZmZmZmZmYTAwZWY3ODI+XSBkcm1fYXRvbWljX2hlbHBl cl9zZXRfY29uZmlnKzB4NzIvMHhiMCBbZHJtX2ttc19oZWxwZXJdCj4+IFsgICAxNy41ODE5NTRd ICBbPGZmZmZmZmZmYTAwODhlOGY+XSBkcm1fbW9kZV9zZXRfY29uZmlnX2ludGVybmFsKzB4NWYv MHgxMDAgW2RybV0KPj4gWyAgIDE3LjU5MDMxM10gIFs8ZmZmZmZmZmZhMDA4Y2RjOD5dIGRybV9t b2RlX3NldGNydGMrMHhkOC8weDUwMCBbZHJtXQo+PiBbICAgMTcuNTk3NDkxXSAgWzxmZmZmZmZm ZmEwMDdmNWQ4Pl0gZHJtX2lvY3RsKzB4MjU4LzB4NGYwIFtkcm1dCj4+IFsgICAxNy42MDQwNjVd ICBbPGZmZmZmZmZmODEwYzM0YWM+XSA/IHVubG9ja19wYWdlKzB4NGMvMHg1MAo+PiBbICAgMTcu NjEwMjQ1XSAgWzxmZmZmZmZmZmEwMDhjY2YwPl0gPyBkcm1fbW9kZV9zZXRwbGFuZSsweDFjMC8w eDFjMCBbZHJtXQo+PiBbICAgMTcuNjE3ODQ0XSAgWzxmZmZmZmZmZjgxMTE1OTdkPl0gZG9fdmZz X2lvY3RsKzB4MmNkLzB4NGEwCj4+IFsgICAxNy42MjQxMzddICBbPGZmZmZmZmZmODEwNTI1NzI+ XSA/IHJlY2FsY19zaWdwZW5kaW5nKzB4MTIvMHg0MAo+PiBbICAgMTcuNjMwOTQzXSAgWzxmZmZm ZmZmZjgxMTFlYjMyPl0gPyBfX2ZnZXQrMHg3Mi8weGIwCj4+IFsgICAxNy42MzY2NDVdICBbPGZm ZmZmZmZmODExMTViOGM+XSBTeVNfaW9jdGwrMHgzYy8weDcwCj4+IFsgICAxNy42NDI0NDhdICBb PGZmZmZmZmZmODEwNTUzMDE+XSA/IFN5U19ydF9zaWdwcm9jbWFzaysweDgxLzB4YTAKPj4gWyAg IDE3LjY0OTMzNF0gIFs8ZmZmZmZmZmY4MTRmMDAxNz5dIGVudHJ5X1NZU0NBTExfNjRfZmFzdHBh dGgrMHgxMi8weDZhCj4+IFsgICAxNy42NTY3NDBdIC0tLVsgZW5kIHRyYWNlIDNmMjkxOTAwMDZj OTc4MjYgXS0tLQo+Pgo+PiBXb3VsZCB5b3UgbGlrZSBhIEJaIGZvciB0aGlzIG9yIG1heWJlIGl0 IGlzIGtub3duIGFscmVhZHk/Cj4gTWFhcnRlbiBpcyB3b3JraW5nIG9uIHRoaXMsIG9yIGF0IGxl YXN0IHdlJ3JlIHRyYWNraW5nIGl0IGFscmVhZHkgaW4KPiBWSVotNzAwMC4KPgo+IENhbiB5b3Ug cGxzIGNvb3JkaW5hdGUgd2l0aCBNYWFydGVuIHRvIG1ha2Ugc3VyZSB0aGUgZmluYWwgImVuYWJs ZSB0aGUKPiB3YXJuaW5nIiBwYXRjaCBsYW5kcyBvbmx5IG9uY2UgYWxsIHRoZSBiaXRzIGFyZSBp bj8KPgpDaHJpcyBXaWxzb24ncyBwYXRjaCBib21iIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHVzZSB0 aGUgdm1hIGluc3RlYWQgb2YgZ3JhYmJpbmcgdGhlIHZpZXcgb3ZlciBhbmQgb3ZlciwgYW5kIHRo YXQgc2hvdWxkIGZpeCB0aGlzIHNwZWNpZmljIGVycm9yLgoKfk1hYXJ0ZW4KX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlz dApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3Rv cC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK