From mboxrd@z Thu Jan 1 00:00:00 1970 From: Maarten Lankhorst Subject: Re: [PATCH v3 15/19] drm/i915: atomic plane updates in a nutshell Date: Fri, 19 Jun 2015 05:57:36 +0200 Message-ID: <55839330.50802@linux.intel.com> References: <1434364436-6366-1-git-send-email-maarten.lankhorst@linux.intel.com> <1434364436-6366-16-git-send-email-maarten.lankhorst@linux.intel.com> <20150618142116.GH3607@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 462154A048 for ; Thu, 18 Jun 2015 20:57:38 -0700 (PDT) In-Reply-To: <20150618142116.GH3607@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Matt Roper Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T3AgMTgtMDYtMTUgb20gMTY6MjEgc2NocmVlZiBNYXR0IFJvcGVyOgo+IE9uIE1vbiwgSnVuIDE1 LCAyMDE1IGF0IDEyOjMzOjUyUE0gKzAyMDAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBO b3cgdGhhdCBhbGwgcGxhbmVzIGFyZSBhZGRlZCBkdXJpbmcgYSBtb2Rlc2V0IHdlIGNhbiB1c2Ug dGhlCj4+IGNhbGN1bGF0ZWQgY2hhbmdlcyBiZWZvcmUgZGlzYWJsaW5nIGEgcGxhbmUsIGFuZCB0 aGVuIGVpdGhlciBjb21taXQKPj4gb3IgZm9yY2UgZGlzYWJsZSBhIHBsYW5lIGJlZm9yZSBkaXNh YmxpbmcgdGhlIGNydGMuCj4+Cj4+IFRoZSBjb2RlIGlzIHNoYXJlZCB3aXRoIGF0b21pY19iZWdp bi9mbHVzaCwgZXhjZXB0IHdhdGVybWFyayB1cGRhdGluZwo+PiBhbmQgdmJsYW5rIGV2YXNpb24g YXJlIG5vdCB1c2VkLgo+Pgo+PiBUaGlzIGlzIG5lZWRlZCBmb3IgcHJvcGVyIGF0b21pYyBzdXNw ZW5kL3Jlc3VtZSBzdXBwb3J0Lgo+Pgo+PiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNr dG9wLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTA4NjgKPj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4gLS0tCj4+ICBk cml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMDMgKysrKysrKystLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4gIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX3Nwcml0 ZS5jICB8ICAgNCArLQo+PiAgMiBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCA4NCBk ZWxldGlvbnMoLSkKPj4KPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+PiBpbmRl eCBjYzRjYTQ5NzA3MTYuLmJlYjY5MjgxZjQ1YyAxMDA2NDQKPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2lu dGVsX2Rpc3BsYXkuYwo+PiBAQCAtMjIxNywyOCArMjIxNyw2IEBAIHN0YXRpYyB2b2lkIGludGVs X2Rpc2FibGVfcGlwZShzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPj4gIAkJaW50ZWxfd2FpdF9m b3JfcGlwZV9vZmYoY3J0Yyk7Cj4+ICB9Cj4+ICAKPj4gLS8qKgo+PiAtICogaW50ZWxfZW5hYmxl X3ByaW1hcnlfaHdfcGxhbmUgLSBlbmFibGUgdGhlIHByaW1hcnkgcGxhbmUgb24gYSBnaXZlbiBw aXBlCj4+IC0gKiBAcGxhbmU6ICBwbGFuZSB0byBiZSBlbmFibGVkCj4+IC0gKiBAY3J0YzogY3J0 YyBmb3IgdGhlIHBsYW5lCj4+IC0gKgo+PiAtICogRW5hYmxlIEBwbGFuZSBvbiBAY3J0YywgbWFr aW5nIHN1cmUgdGhhdCB0aGUgcGlwZSBpcyBydW5uaW5nIGZpcnN0Lgo+PiAtICovCj4+IC1zdGF0 aWMgdm9pZCBpbnRlbF9lbmFibGVfcHJpbWFyeV9od19wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpw bGFuZSwKPj4gLQkJCQkJICBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpCj4+IC17Cj4+IC0Jc3RydWN0 IGRybV9kZXZpY2UgKmRldiA9IHBsYW5lLT5kZXY7Cj4+IC0Jc3RydWN0IGRybV9pOTE1X3ByaXZh dGUgKmRldl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAq aW50ZWxfY3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+IC0KPj4gLQkvKiBJZiB0aGUgcGlw ZSBpc24ndCBlbmFibGVkLCB3ZSBjYW4ndCBwdW1wIHBpeGVscyBhbmQgbWF5IGhhbmcgKi8KPj4g LQlhc3NlcnRfcGlwZV9lbmFibGVkKGRldl9wcml2LCBpbnRlbF9jcnRjLT5waXBlKTsKPj4gLQl0 b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZS0+c3RhdGUpLT52aXNpYmxlID0gdHJ1ZTsKPj4gLQo+ PiAtCWRldl9wcml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIHBsYW5lLT5m YiwKPj4gLQkJCQkJICAgICAgIGNydGMtPngsIGNydGMtPnkpOwo+PiAtfQo+PiAtCj4+ICBzdGF0 aWMgYm9vbCBuZWVkX3Z0ZF93YShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2KQo+PiAgewo+PiAgI2lm ZGVmIENPTkZJR19JTlRFTF9JT01NVQo+PiBAQCAtNDUwOCwyMCArNDQ4Niw2IEBAIHN0YXRpYyB2 b2lkIGlyb25sYWtlX3BmaXRfZW5hYmxlKHN0cnVjdCBpbnRlbF9jcnRjICpjcnRjKQo+PiAgCX0K Pj4gIH0KPj4gIAo+PiAtc3RhdGljIHZvaWQgaW50ZWxfZW5hYmxlX3Nwcml0ZV9wbGFuZXMoc3Ry dWN0IGRybV9jcnRjICpjcnRjKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYgPSBj cnRjLT5kZXY7Cj4+IC0JZW51bSBwaXBlIHBpcGUgPSB0b19pbnRlbF9jcnRjKGNydGMpLT5waXBl Owo+PiAtCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+PiAtCXN0cnVjdCBpbnRlbF9wbGFuZSAq aW50ZWxfcGxhbmU7Cj4+IC0KPj4gLQlkcm1fZm9yX2VhY2hfbGVnYWN5X3BsYW5lKHBsYW5lLCAm ZGV2LT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0KSB7Cj4+IC0JCWludGVsX3BsYW5lID0gdG9faW50 ZWxfcGxhbmUocGxhbmUpOwo+PiAtCQlpZiAoaW50ZWxfcGxhbmUtPnBpcGUgPT0gcGlwZSkKPj4g LQkJCWludGVsX3BsYW5lX3Jlc3RvcmUoJmludGVsX3BsYW5lLT5iYXNlKTsKPj4gLQl9Cj4+IC19 Cj4+IC0KPj4gIHZvaWQgaHN3X2VuYWJsZV9pcHMoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4+ ICB7Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+PiBAQCAt NDgxNywyNyArNDc4MSw2IEBAIHN0YXRpYyB2b2lkIGludGVsX3ByZV9wbGFuZV91cGRhdGUoc3Ry dWN0IGludGVsX2NydGMgKmNydGMpCj4+ICAJCWludGVsX3ByZV9kaXNhYmxlX3ByaW1hcnkoJmNy dGMtPmJhc2UpOwo+PiAgfQo+PiAgCj4+IC1zdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2VuYWJsZV9w bGFuZXMoc3RydWN0IGRybV9jcnRjICpjcnRjKQo+PiAtewo+PiAtCXN0cnVjdCBkcm1fZGV2aWNl ICpkZXYgPSBjcnRjLT5kZXY7Cj4+IC0Jc3RydWN0IGludGVsX2NydGMgKmludGVsX2NydGMgPSB0 b19pbnRlbF9jcnRjKGNydGMpOwo+PiAtCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlwZTsKPj4g LQo+PiAtCWludGVsX2VuYWJsZV9wcmltYXJ5X2h3X3BsYW5lKGNydGMtPnByaW1hcnksIGNydGMp Owo+PiAtCWludGVsX2VuYWJsZV9zcHJpdGVfcGxhbmVzKGNydGMpOwo+PiAtCWlmICh0b19pbnRl bF9wbGFuZV9zdGF0ZShjcnRjLT5jdXJzb3ItPnN0YXRlKS0+dmlzaWJsZSkKPj4gLQkJaW50ZWxf Y3J0Y191cGRhdGVfY3Vyc29yKGNydGMsIHRydWUpOwo+PiAtCj4+IC0JaW50ZWxfcG9zdF9lbmFi bGVfcHJpbWFyeShjcnRjKTsKPj4gLQo+PiAtCS8qCj4+IC0JICogRklYTUU6IE9uY2Ugd2UgZ3Jv dyBwcm9wZXIgbnVjbGVhciBmbGlwIHN1cHBvcnQgb3V0IG9mIHRoaXMgd2UgbmVlZAo+PiAtCSAq IHRvIGNvbXB1dGUgdGhlIG1hc2sgb2YgZmxpcCBwbGFuZXMgcHJlY2lzZWx5LiBGb3IgdGhlIHRp bWUgYmVpbmcKPj4gLQkgKiBjb25zaWRlciB0aGlzIGEgZmxpcCB0byBhIE5VTEwgcGxhbmUuCj4+ IC0JICovCj4+IC0JaW50ZWxfZnJvbnRidWZmZXJfZmxpcChkZXYsIElOVEVMX0ZST05UQlVGRkVS X0FMTF9NQVNLKHBpcGUpKTsKPj4gLX0KPj4gLQo+PiAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19k aXNhYmxlX3BsYW5lcyhzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHVuc2lnbmVkIHBsYW5lX21hc2sp Cj4+ICB7Cj4+ICAJc3RydWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPj4gQEAgLTQ4 NDUsMTAgKzQ3ODgsNiBAQCBzdGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKHN0 cnVjdCBkcm1fY3J0YyAqY3J0YywgdW5zaWduZWQgcGxhbmVfbWFzawo+PiAgCXN0cnVjdCBkcm1f cGxhbmUgKnA7Cj4+ICAJaW50IHBpcGUgPSBpbnRlbF9jcnRjLT5waXBlOwo+PiAgCj4+IC0JaW50 ZWxfY3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKGNydGMpOwo+PiAtCj4+IC0JaW50ZWxfcHJl X2Rpc2FibGVfcHJpbWFyeShjcnRjKTsKPj4gLQo+PiAgCWludGVsX2NydGNfZHBtc19vdmVybGF5 X2Rpc2FibGUoaW50ZWxfY3J0Yyk7Cj4+ICAKPj4gIAlkcm1fZm9yX2VhY2hfcGxhbmVfbWFzayhw LCBkZXYsIHBsYW5lX21hc2spCj4+IEBAIC02MjcwLDYgKzYyMDksMTEgQEAgc3RhdGljIHZvaWQg aW50ZWxfY3J0Y19kaXNhYmxlX25vYXRvbWljKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPj4gIAlp ZiAoIWludGVsX2NydGMtPmFjdGl2ZSkKPj4gIAkJcmV0dXJuOwo+PiAgCj4+ICsJaWYgKHRvX2lu dGVsX3BsYW5lX3N0YXRlKGNydGMtPnByaW1hcnktPnN0YXRlKS0+dmlzaWJsZSkgewo+PiArCQlp bnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0Yyk7Cj4+ICsJCWludGVsX3ByZV9k aXNhYmxlX3ByaW1hcnkoY3J0Yyk7Cj4+ICsJfQo+PiArCj4+ICAJaW50ZWxfY3J0Y19kaXNhYmxl X3BsYW5lcyhjcnRjLCBjcnRjLT5zdGF0ZS0+cGxhbmVfbWFzayk7Cj4+ICAJZGV2X3ByaXYtPmRp c3BsYXkuY3J0Y19kaXNhYmxlKGNydGMpOwo+PiAgCj4+IEBAIC0xMTc4MywxMCArMTE3MjcsNiBA QCBpbnQgaW50ZWxfcGxhbmVfYXRvbWljX2NhbGNfY2hhbmdlcyhzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4+ICAJaWYgKG9sZF9wbGFuZV9zdGF0ZS0+YmFzZS5mYiAmJiAhZmIp Cj4+ICAJCWludGVsX2NydGMtPmF0b21pYy5kaXNhYmxlZF9wbGFuZXMgfD0gMSA8PCBpOwo+PiAg Cj4+IC0JLyogZG9uJ3QgcnVuIHJlc3QgZHVyaW5nIG1vZGVzZXQgeWV0ICovCj4+IC0JaWYgKCFp bnRlbF9jcnRjLT5hY3RpdmUgfHwgbW9kZV9jaGFuZ2VkKQo+PiAtCQlyZXR1cm4gMDsKPj4gLQo+ PiAgCXdhc192aXNpYmxlID0gb2xkX3BsYW5lX3N0YXRlLT52aXNpYmxlOwo+PiAgCXZpc2libGUg PSB0b19pbnRlbF9wbGFuZV9zdGF0ZShwbGFuZV9zdGF0ZSktPnZpc2libGU7Cj4+ICAKPj4gQEAg LTEzMjU1LDE1ICsxMzE5NSwxOCBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+PiAgCWRybV9hdG9taWNfaGVscGVyX3N3YXBfc3Rh dGUoZGV2LCBzdGF0ZSk7Cj4+ICAKPj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0YXRlLCBj cnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4+ICsJCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPj4gKwo+PiAgCQlpZiAoIW5lZWRzX21vZGVzZXQoY3J0 Yy0+c3RhdGUpKQo+PiAgCQkJY29udGludWU7Cj4+ICAKPj4gIAkJYW55X21zID0gdHJ1ZTsKPj4g LQkJaWYgKCFjcnRjX3N0YXRlLT5hY3RpdmUpCj4+IC0JCQljb250aW51ZTsKPj4gKwkJaW50ZWxf cHJlX3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsKPj4gIAo+PiAtCQlpbnRlbF9jcnRjX2Rpc2Fi bGVfcGxhbmVzKGNydGMsIGNydGNfc3RhdGUtPnBsYW5lX21hc2spOwo+PiAtCQlkZXZfcHJpdi0+ ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0Yyk7Cj4+ICsJCWlmIChjcnRjX3N0YXRlLT5hY3RpdmUp IHsKPj4gKwkJCWludGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoY3J0YywgY3J0Y19zdGF0ZS0+cGxh bmVfbWFzayk7Cj4+ICsJCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0Yyk7Cj4+ ICsJCX0KPj4gIAl9Cj4+ICAKPj4gIAkvKiBPbmx5IGFmdGVyIGRpc2FibGluZyBhbGwgb3V0cHV0 IHBpcGVsaW5lcyB0aGF0IHdpbGwgYmUgY2hhbmdlZCBjYW4gd2UKPj4gQEAgLTEzMjc3LDE1ICsx MzIyMCwxMiBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0IGRybV9hdG9taWNf c3RhdGUgKnN0YXRlKQo+PiAgCj4+ICAJLyogTm93IGVuYWJsZSB0aGUgY2xvY2tzLCBwbGFuZSwg cGlwZSwgYW5kIGNvbm5lY3RvcnMgdGhhdCB3ZSBzZXQgdXAuICovCj4+ICAJZm9yX2VhY2hfY3J0 Y19pbl9zdGF0ZShzdGF0ZSwgY3J0YywgY3J0Y19zdGF0ZSwgaSkgewo+PiAtCQlkcm1fYXRvbWlj X2hlbHBlcl9jb21taXRfcGxhbmVzX29uX2NydGMoY3J0Y19zdGF0ZSk7Cj4+IC0KPj4gLQkJaWYg KCFuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSB8fCAhY3J0Yy0+c3RhdGUtPmFjdGl2ZSkKPj4g LQkJCWNvbnRpbnVlOwo+PiAtCj4+IC0JCXVwZGF0ZV9zY2FubGluZV9vZmZzZXQodG9faW50ZWxf Y3J0YyhjcnRjKSk7Cj4+ICsJCWlmIChuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRlKSAmJiBjcnRj LT5zdGF0ZS0+YWN0aXZlKSB7Cj4+ICsJCQl1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KHRvX2ludGVs X2NydGMoY3J0YykpOwo+PiArCQkJZGV2X3ByaXYtPmRpc3BsYXkuY3J0Y19lbmFibGUoY3J0Yyk7 Cj4+ICsJCX0KPj4gIAo+PiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2VuYWJsZShjcnRjKTsK Pj4gLQkJaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKGNydGMpOwo+PiArCQlkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfcGxhbmVzX29uX2NydGMoY3J0Y19zdGF0ZSk7Cj4+ICAJfQo+PiAgCj4+ICAJ LyogRklYTUU6IGFkZCBzdWJwaXhlbCBvcmRlciAqLwo+PiBAQCAtMTM4NTgsNyArMTM3OTgsNyBA QCBpbnRlbF9jb21taXRfcHJpbWFyeV9wbGFuZShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwKPj4g IAljcnRjLT54ID0gc3JjLT54MSA+PiAxNjsKPj4gIAljcnRjLT55ID0gc3JjLT55MSA+PiAxNjsK Pj4gIAo+PiAtCWlmICghaW50ZWxfY3J0Yy0+YWN0aXZlKQo+PiArCWlmICghY3J0Yy0+c3RhdGUt PmFjdGl2ZSkKPj4gIAkJcmV0dXJuOwo+PiAgCj4+ICAJaWYgKHN0YXRlLT52aXNpYmxlKQo+PiBA QCAtMTM4ODUsNyArMTM4MjUsOCBAQCBzdGF0aWMgdm9pZCBpbnRlbF9iZWdpbl9jcnRjX2NvbW1p dChzdHJ1Y3QgZHJtX2NydGMgKmNydGMsCj4+ICAJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRl dl9wcml2ID0gZGV2LT5kZXZfcHJpdmF0ZTsKPj4gIAlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxf Y3J0YyA9IHRvX2ludGVsX2NydGMoY3J0Yyk7Cj4+ICAKPj4gLQlpbnRlbF9wcmVfcGxhbmVfdXBk YXRlKGludGVsX2NydGMpOwo+PiArCWlmICghbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkpCj4+ ICsJCWludGVsX3ByZV9wbGFuZV91cGRhdGUoaW50ZWxfY3J0Yyk7Cj4gVG8gbWFrZSBzdXJlIEkn bSB1bmRlcnN0YW5kaW5nLi4ud2UgbWFrZSB0aGlzIGNoYW5nZSBiZWNhdXNlCj4gX19pbnRlbF9z ZXRfbW9kZSgpIGhhcyBhbHJlYWR5IGhhbmRsZWQgdGhlIGludGVsX3ByZV9wbGFuZV91cGRhdGUo KSBmb3IKPiB0aGUgbW9kZXNldCBjYXNlLCBzbyB3ZSdyZSBvbmx5IHdvcnJpZWQgYWJvdXQgbGVn YWN5IHNldG1vZGUncyB0aGF0Cj4gZG9uJ3QgcmVzdWx0IGluIGEgZnVsbCBtb2Rlc2V0IChzbyB3 ZSBuZXZlciBjYWxsZWQgdGhpcyBmdW5jdGlvbiksIG9yCj4gZW50cnkgdmlhIHRoZSBhdG9taWMg aW9jdGwgKHdoaWNoIGRvZXNuJ3Qgc3VwcG9ydCBmdWxsIG1vZGVzZXRzIHlldCksCj4gcmlnaHQ/ ICBBbmQgcHJlc3VtYWJseSBvbmNlIHdlIGRvIGFsbG93IGZ1bGwgbW9kZXNldHRpbmcgdmlhIHRo ZSBhdG9taWMKPiBpb2N0bCBpdCB3aWxsIGFsc28gYmUgY2FsbGluZyBpbnRlbF9wcmVfcGxhbmVf dXBkYXRlKCkgYmVmb3JlIGdldHRpbmcgdG8KPiB0aGlzIHBvaW50Pwo+CkNvcnJlY3QsIHByZV9w bGFuZV91cGRhdGUgZG9lcyBhbGwgdGhlIHNjYWZmZm9sZGluZyBmb3IgZGlzYWJsaW5nIHBsYW5l cy4KCn5NYWFydGVuCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9y ZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4 Cg==