From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH v3 15/19] drm/i915: atomic plane updates in a nutshell Date: Mon, 22 Jun 2015 12:49:16 +0300 Message-ID: <20150622094916.GR5176@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> <20150618152824.GP5176@intel.com> <55839403.9000104@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" 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 45C086E022 for ; Mon, 22 Jun 2015 02:49:28 -0700 (PDT) Content-Disposition: inline In-Reply-To: <55839403.9000104@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst Cc: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBKdW4gMTksIDIwMTUgYXQgMDY6MDE6MDdBTSArMDIwMCwgTWFhcnRlbiBMYW5raG9y c3Qgd3JvdGU6Cj4gT3AgMTgtMDYtMTUgb20gMTc6Mjggc2NocmVlZiBWaWxsZSBTeXJqw6Rsw6Q6 Cj4gPiBPbiBNb24sIEp1biAxNSwgMjAxNSBhdCAxMjozMzo1MlBNICswMjAwLCBNYWFydGVuIExh bmtob3JzdCB3cm90ZToKPiA+PiBOb3cgdGhhdCBhbGwgcGxhbmVzIGFyZSBhZGRlZCBkdXJpbmcg YSBtb2Rlc2V0IHdlIGNhbiB1c2UgdGhlCj4gPj4gY2FsY3VsYXRlZCBjaGFuZ2VzIGJlZm9yZSBk aXNhYmxpbmcgYSBwbGFuZSwgYW5kIHRoZW4gZWl0aGVyIGNvbW1pdAo+ID4+IG9yIGZvcmNlIGRp c2FibGUgYSBwbGFuZSBiZWZvcmUgZGlzYWJsaW5nIHRoZSBjcnRjLgo+ID4+Cj4gPj4gVGhlIGNv ZGUgaXMgc2hhcmVkIHdpdGggYXRvbWljX2JlZ2luL2ZsdXNoLCBleGNlcHQgd2F0ZXJtYXJrIHVw ZGF0aW5nCj4gPj4gYW5kIHZibGFuayBldmFzaW9uIGFyZSBub3QgdXNlZC4KPiA+Pgo+ID4+IFRo aXMgaXMgbmVlZGVkIGZvciBwcm9wZXIgYXRvbWljIHN1c3BlbmQvcmVzdW1lIHN1cHBvcnQuCj4g Pj4KPiA+PiBCdWd6aWxsYTogaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9zaG93X2J1Zy5j Z2k/aWQ9OTA4NjgKPiA+PiBTaWduZWQtb2ZmLWJ5OiBNYWFydGVuIExhbmtob3JzdCA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+IC0tLQo+ID4+ICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCAxMDMgKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KPiA+PiAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfc3ByaXRlLmMgIHwgICA0 ICstCj4gPj4gIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgODQgZGVsZXRpb25z KC0pCj4gPj4KPiA+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlz cGxheS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gaW5kZXgg Y2M0Y2E0OTcwNzE2Li5iZWI2OTI4MWY0NWMgMTAwNjQ0Cj4gPj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZGlzcGxheS5jCj4gPj4gQEAgLTIyMTcsMjggKzIyMTcsNiBAQCBzdGF0aWMgdm9pZCBp bnRlbF9kaXNhYmxlX3BpcGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4gPj4gIAkJaW50ZWxf d2FpdF9mb3JfcGlwZV9vZmYoY3J0Yyk7Cj4gPj4gIH0KPiA+PiAgCj4gPj4gLS8qKgo+ID4+IC0g KiBpbnRlbF9lbmFibGVfcHJpbWFyeV9od19wbGFuZSAtIGVuYWJsZSB0aGUgcHJpbWFyeSBwbGFu ZSBvbiBhIGdpdmVuIHBpcGUKPiA+PiAtICogQHBsYW5lOiAgcGxhbmUgdG8gYmUgZW5hYmxlZAo+ ID4+IC0gKiBAY3J0YzogY3J0YyBmb3IgdGhlIHBsYW5lCj4gPj4gLSAqCj4gPj4gLSAqIEVuYWJs ZSBAcGxhbmUgb24gQGNydGMsIG1ha2luZyBzdXJlIHRoYXQgdGhlIHBpcGUgaXMgcnVubmluZyBm aXJzdC4KPiA+PiAtICovCj4gPj4gLXN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9wcmltYXJ5X2h3 X3BsYW5lKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lLAo+ID4+IC0JCQkJCSAgc3RydWN0IGRybV9j cnRjICpjcnRjKQo+ID4+IC17Cj4gPj4gLQlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gcGxhbmUt PmRldjsKPiA+PiAtCXN0cnVjdCBkcm1faTkxNV9wcml2YXRlICpkZXZfcHJpdiA9IGRldi0+ZGV2 X3ByaXZhdGU7Cj4gPj4gLQlzdHJ1Y3QgaW50ZWxfY3J0YyAqaW50ZWxfY3J0YyA9IHRvX2ludGVs X2NydGMoY3J0Yyk7Cj4gPj4gLQo+ID4+IC0JLyogSWYgdGhlIHBpcGUgaXNuJ3QgZW5hYmxlZCwg d2UgY2FuJ3QgcHVtcCBwaXhlbHMgYW5kIG1heSBoYW5nICovCj4gPj4gLQlhc3NlcnRfcGlwZV9l bmFibGVkKGRldl9wcml2LCBpbnRlbF9jcnRjLT5waXBlKTsKPiA+PiAtCXRvX2ludGVsX3BsYW5l X3N0YXRlKHBsYW5lLT5zdGF0ZSktPnZpc2libGUgPSB0cnVlOwo+ID4+IC0KPiA+PiAtCWRldl9w cml2LT5kaXNwbGF5LnVwZGF0ZV9wcmltYXJ5X3BsYW5lKGNydGMsIHBsYW5lLT5mYiwKPiA+PiAt CQkJCQkgICAgICAgY3J0Yy0+eCwgY3J0Yy0+eSk7Cj4gPj4gLX0KPiA+PiAtCj4gPj4gIHN0YXRp YyBib29sIG5lZWRfdnRkX3dhKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpCj4gPj4gIHsKPiA+PiAg I2lmZGVmIENPTkZJR19JTlRFTF9JT01NVQo+ID4+IEBAIC00NTA4LDIwICs0NDg2LDYgQEAgc3Rh dGljIHZvaWQgaXJvbmxha2VfcGZpdF9lbmFibGUoc3RydWN0IGludGVsX2NydGMgKmNydGMpCj4g Pj4gIAl9Cj4gPj4gIH0KPiA+PiAgCj4gPj4gLXN0YXRpYyB2b2lkIGludGVsX2VuYWJsZV9zcHJp dGVfcGxhbmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+PiAtewo+ID4+IC0Jc3RydWN0IGRy bV9kZXZpY2UgKmRldiA9IGNydGMtPmRldjsKPiA+PiAtCWVudW0gcGlwZSBwaXBlID0gdG9faW50 ZWxfY3J0YyhjcnRjKS0+cGlwZTsKPiA+PiAtCXN0cnVjdCBkcm1fcGxhbmUgKnBsYW5lOwo+ID4+ IC0Jc3RydWN0IGludGVsX3BsYW5lICppbnRlbF9wbGFuZTsKPiA+PiAtCj4gPj4gLQlkcm1fZm9y X2VhY2hfbGVnYWN5X3BsYW5lKHBsYW5lLCAmZGV2LT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0KSB7 Cj4gPj4gLQkJaW50ZWxfcGxhbmUgPSB0b19pbnRlbF9wbGFuZShwbGFuZSk7Cj4gPj4gLQkJaWYg KGludGVsX3BsYW5lLT5waXBlID09IHBpcGUpCj4gPj4gLQkJCWludGVsX3BsYW5lX3Jlc3RvcmUo JmludGVsX3BsYW5lLT5iYXNlKTsKPiA+PiAtCX0KPiA+PiAtfQo+ID4+IC0KPiA+PiAgdm9pZCBo c3dfZW5hYmxlX2lwcyhzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YykKPiA+PiAgewo+ID4+ICAJc3Ry dWN0IGRybV9kZXZpY2UgKmRldiA9IGNydGMtPmJhc2UuZGV2Owo+ID4+IEBAIC00ODE3LDI3ICs0 NzgxLDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShzdHJ1Y3QgaW50ZWxf Y3J0YyAqY3J0YykKPiA+PiAgCQlpbnRlbF9wcmVfZGlzYWJsZV9wcmltYXJ5KCZjcnRjLT5iYXNl KTsKPiA+PiAgfQo+ID4+ICAKPiA+PiAtc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19lbmFibGVfcGxh bmVzKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykKPiA+PiAtewo+ID4+IC0Jc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGNydGMtPmRldjsKPiA+PiAtCXN0cnVjdCBpbnRlbF9jcnRjICppbnRlbF9jcnRj ID0gdG9faW50ZWxfY3J0YyhjcnRjKTsKPiA+PiAtCWludCBwaXBlID0gaW50ZWxfY3J0Yy0+cGlw ZTsKPiA+PiAtCj4gPj4gLQlpbnRlbF9lbmFibGVfcHJpbWFyeV9od19wbGFuZShjcnRjLT5wcmlt YXJ5LCBjcnRjKTsKPiA+PiAtCWludGVsX2VuYWJsZV9zcHJpdGVfcGxhbmVzKGNydGMpOwo+ID4+ IC0JaWYgKHRvX2ludGVsX3BsYW5lX3N0YXRlKGNydGMtPmN1cnNvci0+c3RhdGUpLT52aXNpYmxl KQo+ID4+IC0JCWludGVsX2NydGNfdXBkYXRlX2N1cnNvcihjcnRjLCB0cnVlKTsKPiA+PiAtCj4g Pj4gLQlpbnRlbF9wb3N0X2VuYWJsZV9wcmltYXJ5KGNydGMpOwo+ID4+IC0KPiA+PiAtCS8qCj4g Pj4gLQkgKiBGSVhNRTogT25jZSB3ZSBncm93IHByb3BlciBudWNsZWFyIGZsaXAgc3VwcG9ydCBv dXQgb2YgdGhpcyB3ZSBuZWVkCj4gPj4gLQkgKiB0byBjb21wdXRlIHRoZSBtYXNrIG9mIGZsaXAg cGxhbmVzIHByZWNpc2VseS4gRm9yIHRoZSB0aW1lIGJlaW5nCj4gPj4gLQkgKiBjb25zaWRlciB0 aGlzIGEgZmxpcCB0byBhIE5VTEwgcGxhbmUuCj4gPj4gLQkgKi8KPiA+PiAtCWludGVsX2Zyb250 YnVmZmVyX2ZsaXAoZGV2LCBJTlRFTF9GUk9OVEJVRkZFUl9BTExfTUFTSyhwaXBlKSk7Cj4gPj4g LX0KPiA+PiAtCj4gPj4gIHN0YXRpYyB2b2lkIGludGVsX2NydGNfZGlzYWJsZV9wbGFuZXMoc3Ry dWN0IGRybV9jcnRjICpjcnRjLCB1bnNpZ25lZCBwbGFuZV9tYXNrKQo+ID4+ICB7Cj4gPj4gIAlz dHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0gY3J0Yy0+ZGV2Owo+ID4+IEBAIC00ODQ1LDEwICs0Nzg4 LDYgQEAgc3RhdGljIHZvaWQgaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMsIHVuc2lnbmVkIHBsYW5lX21hc2sKPiA+PiAgCXN0cnVjdCBkcm1fcGxhbmUgKnA7 Cj4gPj4gIAlpbnQgcGlwZSA9IGludGVsX2NydGMtPnBpcGU7Cj4gPj4gIAo+ID4+IC0JaW50ZWxf Y3J0Y193YWl0X2Zvcl9wZW5kaW5nX2ZsaXBzKGNydGMpOwo+ID4+IC0KPiA+PiAtCWludGVsX3By ZV9kaXNhYmxlX3ByaW1hcnkoY3J0Yyk7Cj4gPj4gLQo+ID4+ICAJaW50ZWxfY3J0Y19kcG1zX292 ZXJsYXlfZGlzYWJsZShpbnRlbF9jcnRjKTsKPiA+PiAgCj4gPj4gIAlkcm1fZm9yX2VhY2hfcGxh bmVfbWFzayhwLCBkZXYsIHBsYW5lX21hc2spCj4gPj4gQEAgLTYyNzAsNiArNjIwOSwxMSBAQCBz dGF0aWMgdm9pZCBpbnRlbF9jcnRjX2Rpc2FibGVfbm9hdG9taWMoc3RydWN0IGRybV9jcnRjICpj cnRjKQo+ID4+ICAJaWYgKCFpbnRlbF9jcnRjLT5hY3RpdmUpCj4gPj4gIAkJcmV0dXJuOwo+ID4+ ICAKPiA+PiArCWlmICh0b19pbnRlbF9wbGFuZV9zdGF0ZShjcnRjLT5wcmltYXJ5LT5zdGF0ZSkt PnZpc2libGUpIHsKPiA+PiArCQlpbnRlbF9jcnRjX3dhaXRfZm9yX3BlbmRpbmdfZmxpcHMoY3J0 Yyk7Cj4gPj4gKwkJaW50ZWxfcHJlX2Rpc2FibGVfcHJpbWFyeShjcnRjKTsKPiA+PiArCX0KPiA+ PiArCj4gPj4gIAlpbnRlbF9jcnRjX2Rpc2FibGVfcGxhbmVzKGNydGMsIGNydGMtPnN0YXRlLT5w bGFuZV9tYXNrKTsKPiA+PiAgCWRldl9wcml2LT5kaXNwbGF5LmNydGNfZGlzYWJsZShjcnRjKTsK PiA+PiAgCj4gPj4gQEAgLTExNzgzLDEwICsxMTcyNyw2IEBAIGludCBpbnRlbF9wbGFuZV9hdG9t aWNfY2FsY19jaGFuZ2VzKHN0cnVjdCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwKPiA+PiAg CWlmIChvbGRfcGxhbmVfc3RhdGUtPmJhc2UuZmIgJiYgIWZiKQo+ID4+ICAJCWludGVsX2NydGMt PmF0b21pYy5kaXNhYmxlZF9wbGFuZXMgfD0gMSA8PCBpOwo+ID4+ICAKPiA+PiAtCS8qIGRvbid0 IHJ1biByZXN0IGR1cmluZyBtb2Rlc2V0IHlldCAqLwo+ID4+IC0JaWYgKCFpbnRlbF9jcnRjLT5h Y3RpdmUgfHwgbW9kZV9jaGFuZ2VkKQo+ID4+IC0JCXJldHVybiAwOwo+ID4+IC0KPiA+PiAgCXdh c192aXNpYmxlID0gb2xkX3BsYW5lX3N0YXRlLT52aXNpYmxlOwo+ID4+ICAJdmlzaWJsZSA9IHRv X2ludGVsX3BsYW5lX3N0YXRlKHBsYW5lX3N0YXRlKS0+dmlzaWJsZTsKPiA+PiAgCj4gPj4gQEAg LTEzMjU1LDE1ICsxMzE5NSwxOCBAQCBzdGF0aWMgaW50IF9faW50ZWxfc2V0X21vZGUoc3RydWN0 IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQo+ID4+ICAJZHJtX2F0b21pY19oZWxwZXJfc3dhcF9z dGF0ZShkZXYsIHN0YXRlKTsKPiA+PiAgCj4gPj4gIAlmb3JfZWFjaF9jcnRjX2luX3N0YXRlKHN0 YXRlLCBjcnRjLCBjcnRjX3N0YXRlLCBpKSB7Cj4gPj4gKwkJc3RydWN0IGludGVsX2NydGMgKmlu dGVsX2NydGMgPSB0b19pbnRlbF9jcnRjKGNydGMpOwo+ID4+ICsKPiA+PiAgCQlpZiAoIW5lZWRz X21vZGVzZXQoY3J0Yy0+c3RhdGUpKQo+ID4+ICAJCQljb250aW51ZTsKPiA+PiAgCj4gPj4gIAkJ YW55X21zID0gdHJ1ZTsKPiA+PiAtCQlpZiAoIWNydGNfc3RhdGUtPmFjdGl2ZSkKPiA+PiAtCQkJ Y29udGludWU7Cj4gPj4gKwkJaW50ZWxfcHJlX3BsYW5lX3VwZGF0ZShpbnRlbF9jcnRjKTsKPiA+ PiAgCj4gPj4gLQkJaW50ZWxfY3J0Y19kaXNhYmxlX3BsYW5lcyhjcnRjLCBjcnRjX3N0YXRlLT5w bGFuZV9tYXNrKTsKPiA+PiAtCQlkZXZfcHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0Yyk7 Cj4gPj4gKwkJaWYgKGNydGNfc3RhdGUtPmFjdGl2ZSkgewo+ID4+ICsJCQlpbnRlbF9jcnRjX2Rp c2FibGVfcGxhbmVzKGNydGMsIGNydGNfc3RhdGUtPnBsYW5lX21hc2spOwo+ID4+ICsJCQlkZXZf cHJpdi0+ZGlzcGxheS5jcnRjX2Rpc2FibGUoY3J0Yyk7Cj4gPj4gKwkJfQo+ID4+ICAJfQo+ID4+ ICAKPiA+PiAgCS8qIE9ubHkgYWZ0ZXIgZGlzYWJsaW5nIGFsbCBvdXRwdXQgcGlwZWxpbmVzIHRo YXQgd2lsbCBiZSBjaGFuZ2VkIGNhbiB3ZQo+ID4+IEBAIC0xMzI3NywxNSArMTMyMjAsMTIgQEAg c3RhdGljIGludCBfX2ludGVsX3NldF9tb2RlKHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0 ZSkKPiA+PiAgCj4gPj4gIAkvKiBOb3cgZW5hYmxlIHRoZSBjbG9ja3MsIHBsYW5lLCBwaXBlLCBh bmQgY29ubmVjdG9ycyB0aGF0IHdlIHNldCB1cC4gKi8KPiA+PiAgCWZvcl9lYWNoX2NydGNfaW5f c3RhdGUoc3RhdGUsIGNydGMsIGNydGNfc3RhdGUsIGkpIHsKPiA+PiAtCQlkcm1fYXRvbWljX2hl bHBlcl9jb21taXRfcGxhbmVzX29uX2NydGMoY3J0Y19zdGF0ZSk7Cj4gPj4gLQo+ID4+IC0JCWlm ICghbmVlZHNfbW9kZXNldChjcnRjLT5zdGF0ZSkgfHwgIWNydGMtPnN0YXRlLT5hY3RpdmUpCj4g Pj4gLQkJCWNvbnRpbnVlOwo+ID4+IC0KPiA+PiAtCQl1cGRhdGVfc2NhbmxpbmVfb2Zmc2V0KHRv X2ludGVsX2NydGMoY3J0YykpOwo+ID4+ICsJCWlmIChuZWVkc19tb2Rlc2V0KGNydGMtPnN0YXRl KSAmJiBjcnRjLT5zdGF0ZS0+YWN0aXZlKSB7Cj4gPj4gKwkJCXVwZGF0ZV9zY2FubGluZV9vZmZz ZXQodG9faW50ZWxfY3J0YyhjcnRjKSk7Cj4gPj4gKwkJCWRldl9wcml2LT5kaXNwbGF5LmNydGNf ZW5hYmxlKGNydGMpOwo+ID4+ICsJCX0KPiA+PiAgCj4gPj4gLQkJZGV2X3ByaXYtPmRpc3BsYXku Y3J0Y19lbmFibGUoY3J0Yyk7Cj4gPj4gLQkJaW50ZWxfY3J0Y19lbmFibGVfcGxhbmVzKGNydGMp Owo+ID4+ICsJCWRybV9hdG9taWNfaGVscGVyX2NvbW1pdF9wbGFuZXNfb25fY3J0YyhjcnRjX3N0 YXRlKTsKPiA+IFdoeSBhcmUgd2Ugc3RpbGwgY29tbWl0aW5nIHBsYW5lcyBvbiBhIGRpc2FibGVk IHBpcGVzPwo+ID4KPiA+IFRoZSB3YXkgSSBlbnZpc2lvbmVkIHRoZSBtb2Rlc2V0IHBhdGggbG9v a2luZyBpcyBzb21ldGhpbmcgbGlrZSB0aGlzOgo+ID4KPiA+IDEuIGF0b21pY2FsbHkgZGlzYWJs ZSBhbGwgcGxhbmVzIGZvciBwaXBlcyBnZXR0aW5nIGRpc2FibGVkCj4gPiAyLiBkaXNhYmxlIGFs bCBwaXBlcyB0aGF0IG5lZWQgZGlzYWJsaW5nCj4gPiAzLiBlbmFibGUgYWxsIHBpcGVzIHRoYXQg bmVlZCBlbmFibGluZwo+ID4gNC4gYXRvbWljYWxseSB1cGRhdGUgYWxsIHBsYW5lcyB0aGF0IHJl cXVpcmUgaXQgb24gbm93IGFjdGl2ZSBwaXBlcwo+ID4KPiA+Cj4gSSBsb29rZWQgZm9yIG90aGVy IHdheXMgdG8gZG8gdGhpcywgYnV0IHRoZXkgd2VyZSB1Z2x5LiBPbmx5IHVwZGF0aW5nIHN3IHN0 YXRlIGluIGNvbW1pdF9wbGFuZXMgZm9yIGRpc2FibGVkIGNydGMncyBtYWRlIHRoaW5ncyBhIGxv dCBjbGVhbmVyIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgc3BlY2lhbCBjYXNlcy4KClRoZSBjb21t aXQgaG9va3Mgc2hvdWxkbid0IHVwZGF0ZSBhbnkgc3cgc3RhdGUuCgpBcyBmb3Igc3BlY2lhbCBj YXNlcywgdGhlIGN1cnJlbnQgY29kZSBoYXMgb25lIHNwZWNpYWwgY2FzZSBhZnRlciBhbm90aGVy LAphbmQgaXQncyBnaXZpbmcgbWUgYSBoZWFkYWNoZSBldmVyeSB0aW1lIEkgbG9vayBhdCBpdC4K Cj4gCj4gcGxhbmVfZGlzYWJsZSBkb2Vzbid0IHVwZGF0ZSBzdyBzdGF0ZSwgc28gaXQgcGVyZm9y bXMgMS4gVGhlIGNvbW1pdCBmdW5jdGlvbiBpcyBzdGlsbCBjYWxsZWQgYmVjYXVzZSB1cGRhdGUg cGxhbmUtPmZiCj4gbmVlZHMgdG8gYmUgdXBkYXRlZCwgZXZlbiBmb3IgZGlzYWJsZWQgY3J0Yydz LiBDb25kaXRpb25hbGx5IGNhbGxpbmcgcGxhbmVfY29tbWl0IGNhdXNlZCBtb3JlIGlzc3VlcyB0 aGFuIGl0IHNvbHZlZC4KCnBsYW5lLT5mYiBzaG91bGQgYmUgY2xlYXJseSBtb3ZlZCBvdXQgb2Yg dGhlIGNvbW1pdCBob29rcyB0byB3aGVyZSB0aGUKcmVzdCBvZiB0aGUgc3RhdGUgZ2V0cyBzd2Fw cGVkIChhc3N1bWluZyB3ZSBjYW4ndCBqdXN0IGdldCByaWQgb2YgaXQpLgoKLS0gClZpbGxlIFN5 cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCmh0dHA6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRl bC1nZngK