From mboxrd@z Thu Jan 1 00:00:00 1970 From: Laurent Pinchart Subject: Re: [PATCH 1/4] drm: add generic zpos property Date: Thu, 12 May 2016 23:15:42 +0300 Message-ID: <3485783.RE56tryr7C@avalon> References: <1463048902-9388-1-git-send-email-benjamin.gaignard@linaro.org> <4862983.CHN7hQXAbO@avalon> <20160512194605.GV4329@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <20160512194605.GV4329@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Ville =?ISO-8859-1?Q?Syrj=E4l=E4?= Cc: Krzysztof Kozlowski , linux-samsung-soc@vger.kernel.org, Benjamin Gaignard , Bartlomiej Zolnierkiewicz , Seung-Woo Kim , dri-devel@lists.freedesktop.org, linaro-mm-sig@lists.linaro.org, Andrzej Hajda , Tobias Jakobi , fabien.dessenne@st.com, vincent.abriou@st.com, Marek Szyprowski List-Id: linux-samsung-soc@vger.kernel.org SGkgVmlsbGUsCgpPbiBUaHVyc2RheSAxMiBNYXkgMjAxNiAyMjo0NjowNSBWaWxsZSBTeXJqw6Rs w6Qgd3JvdGU6Cj4gT24gVGh1LCBNYXkgMTIsIDIwMTYgYXQgMTA6MjA6MTJQTSArMDMwMCwgTGF1 cmVudCBQaW5jaGFydCB3cm90ZToKPiA+IE9uIFRodXJzZGF5IDEyIE1heSAyMDE2IDE0OjUxOjU1 IFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+PiBPbiBUaHUsIE1heSAxMiwgMjAxNiBhdCAxMjoy ODoxOVBNICswMjAwLCBCZW5qYW1pbiBHYWlnbmFyZCB3cm90ZToKPiA+Pj4gRnJvbTogTWFyZWsg U3p5cHJvd3NraSA8bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgo+ID4+PiAKPiA+Pj4gVGhpcyBw YXRjaCBhZGRzIHN1cHBvcnQgZm9yIGdlbmVyaWMgcGxhbmUncyB6cG9zIHByb3BlcnR5IHByb3Bl cnR5Cj4gPj4+IHdpdGggd2VsbC1kZWZpbmVkIHNlbWFudGljczoKPiA+Pj4gLSBhZGRlZCB6cG9z IHByb3BlcnRpZXMgdG8gcGxhbmUgYW5kIHBsYW5lIHN0YXRlIHN0cnVjdHVyZXMKPiA+Pj4gLSBh ZGRlZCBoZWxwZXJzIGZvciBub3JtYWxpemluZyB6cG9zIHByb3BlcnRpZXMgb2YgZ2l2ZW4gc2V0 IG9mIHBsYW5lcwo+ID4+PiAtIHdlbGwgZGVmaW5lZCBzZW1hbnRpY3M6IHBsYW5lcyBhcmUgc29y dGVkIGJ5IHpwb3MgdmFsdWVzIGFuZCB0aGVuCj4gPj4+ICAgcGxhbmUgaWQgdmFsdWUgaWYgenBv cyBlcXVhbHMKPiA+Pj4gCj4gPj4+IE5vcm1hbGl6ZWQgenBvcyB2YWx1ZXMgYXJlIGNhbGN1bGF0 ZWQgYXV0b21hdGljYWxseSB3aGVuIGdlbmVyaWMKPiA+Pj4gbXV0dGFibGUgenBvcyBwcm9wZXJ0 eSBoYXMgYmVlbiBpbml0aWFsaXplZC4gRHJpdmVycyBjYW4gc2ltcGx5IHVzZQo+ID4+PiBwbGFu ZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9zIGluIHRoZWlyIGF0b21pY19jaGVjayBhbmQvb3IgcGxh bmVfdXBkYXRlCj4gPj4+IGNhbGxiYWNrcyB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNhbGxzIHRv IERSTSBjb3JlLgo+ID4+PiAKPiA+Pj4gU2lnbmVkLW9mZi1ieTogTWFyZWsgU3p5cHJvd3NraSA8 bS5zenlwcm93c2tpQHNhbXN1bmcuY29tPgo+ID4+PiAKPiA+Pj4gQ29tcGFyZSB0byBNYXJlaydz IG9yaWdpbmFsIHBhdGNoIHpwb3MgcHJvcGVydHkgaXMgbm93IHNwZWNpZmljIHRvCj4gPj4+IGVh Y2ggcGxhbmUgYW5kIG5vIG1vcmUgdG8gdGhlIGNvcmUuCj4gPj4+IE5vcm1hbGl6ZSBmdW5jdGlv biB0YWtlIGNhcmUgb2YgdGhlIHJhbmdlIG9mIHBlciBwbGFuZSBkZWZpbmVkIHJhbmdlCj4gPj4+ IGJlZm9yZSBzZXQgbm9ybWFsaXplZF96cG9zLgo+ID4+PiAKPiA+Pj4gU2lnbmVkLW9mZi1ieTog QmVuamFtaW4gR2FpZ25hcmQgPGJlbmphbWluLmdhaWduYXJkQGxpbmFyby5vcmc+Cj4gPj4+IAo+ ID4+PiBDYzogSW5raSBEYWUgPGlua2kuZGFlQHNhbXN1bmcuY29tPgo+ID4+PiBDYzogRGFuaWVs IFZldHRlciA8ZGFuaWVsQGZmd2xsLmNoPgo+ID4+PiBDYzogVmlsbGUgU3lyamFsYSA8dmlsbGUu c3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4+IENjOiBKb29ueW91bmcgU2hpbSA8ankwOTIy LnNoaW1Ac2Ftc3VuZy5jb20+Cj4gPj4+IENjOiBTZXVuZy1Xb28gS2ltIDxzdzAzMTIua2ltQHNh bXN1bmcuY29tPgo+ID4+PiBDYzogQW5kcnplaiBIYWpkYSA8YS5oYWpkYUBzYW1zdW5nLmNvbT4K PiA+Pj4gQ2M6IEtyenlzenRvZiBLb3psb3dza2kgPGsua296bG93c2tpQHNhbXN1bmcuY29tPgo+ ID4+PiBDYzogQmFydGxvbWllaiBab2xuaWVya2lld2ljeiA8Yi56b2xuaWVya2llQHNhbXN1bmcu Y29tPgo+ID4+PiBDYzogVG9iaWFzIEpha29iaSA8dGpha29iaUBtYXRoLnVuaS1iaWVsZWZlbGQu ZGU+Cj4gPj4+IENjOiBHdXN0YXZvIFBhZG92YW4gPGd1c3Rhdm9AcGFkb3Zhbi5vcmc+Cj4gPj4+ IENjOiB2aW5jZW50LmFicmlvdUBzdC5jb20KPiA+Pj4gQ2M6IGZhYmllbi5kZXNzZW5uZUBzdC5j b20KPiA+Pj4gQ2M6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAaWRlYXNvbmJv YXJkLmNvbT4KPiA+Pj4gLS0tCj4gPj4+IAo+ID4+PiAgRG9jdW1lbnRhdGlvbi9Eb2NCb29rL2dw dS50bXBsICAgICAgfCAgMTAgKysKPiA+Pj4gIGRyaXZlcnMvZ3B1L2RybS9NYWtlZmlsZSAgICAg ICAgICAgIHwgICAyICstCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jICAgICAg ICB8ICAgNCArCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pY19oZWxwZXIuYyB8ICAg NiArCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMgICAgICAgICB8IDIyOSArKysr KysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2NydGNf aW50ZXJuYWwuaCB8ICAgMyArCj4gPj4+ICBpbmNsdWRlL2RybS9kcm1fY3J0Yy5oICAgICAgICAg ICAgICB8ICAyOCArKysrKwo+ID4+PiAgNyBmaWxlcyBjaGFuZ2VkLCAyODEgaW5zZXJ0aW9ucygr KSwgMSBkZWxldGlvbigtKQo+ID4+PiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGRyaXZlcnMvZ3B1L2Ry bS9kcm1fYmxlbmQuYwo+ID4gCj4gPiBbc25pcF0KPiA+IAo+ID4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2RybV9ibGVuZC5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9ibGVuZC5jCj4g Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0Cj4gPj4+IGluZGV4IDAwMDAwMDAuLmVlZjU5YmIKPiA+ Pj4gLS0tIC9kZXYvbnVsbAo+ID4+PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMK PiA+Pj4gQEAgLTAsMCArMSwyMjkgQEAKPiA+IAo+ID4gW3NuaXBdCj4gPiAKPiA+Pj4gK3N0YXRp YyBpbnQgZHJtX2F0b21pY19zdGF0ZV96cG9zX2NtcChjb25zdCB2b2lkICphLCBjb25zdCB2b2lk ICpiKQo+ID4+PiArewo+ID4+PiArCWNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnNhID0g KihzdHJ1Y3QgZHJtX3BsYW5lX3N0YXRlICoqKWE7Cj4gPj4+ICsJY29uc3Qgc3RydWN0IGRybV9w bGFuZV9zdGF0ZSAqc2IgPSAqKHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKiopYjsKPiA+Pj4gKwo+ ID4+PiArCWlmIChzYS0+enBvcyAhPSBzYi0+enBvcykKPiA+Pj4gKwkJcmV0dXJuIHNhLT56cG9z IC0gc2ItPnpwb3M7Cj4gPj4+ICsJZWxzZQo+ID4+PiArCQlyZXR1cm4gc2EtPnBsYW5lLT5iYXNl LmlkIC0gc2ItPnBsYW5lLT5iYXNlLmlkOwo+ID4+PiArfQo+ID4+IAo+ID4+IFN0aWxsIG5vdCBy ZWFsbHkgY29udmluY2VkIHRoaXMgbm9ybWFsaXphdGlvbiBpcyBhIGdvb2QgaWRlYSB3aGVuIHdl Cj4gPj4gaGF2ZSBhdG9taWMuIEl0IG1hZGUgc2Vuc2UgYmVmb3JlIGF0b21pYyBzaW5jZSBvdGhl cndpc2UgeW91IG1pZ2h0IG5vdAo+ID4+IGJlIGFibGUgdG8gc3dhcCB0aGUgenBvcyBvZiB0d28g cGxhbmVzIHdpdGhvdXQgc2h1dHRpbmcgb25lIG9mIHRoZW0KPiA+PiBkb3duLCBidXQgaXQgbWFr ZXMgaW50ZXJwcmV0aW5nIHRoZSB6cG9zIHByb3AgdmFsdWVzIG1vcmUgY29uZnVzaW5nLiBBbmQK PiA+PiB3aXRoIGF0b21pYyB3ZSBkb24ndCBhY3R1YWxseSBuZWVkIGl0IEFGQUlDUy4gT3IgZG8g d2UgaGF2ZSBhbiBhY3R1YWwKPiA+PiB1c2UgY2FzZSBmb3IgdGhpcyBiZWhhdmlvdXI/Cj4gPiAK PiA+IFNwZWFraW5nIHNlbGZpc2hseSBhYm91dCBteSB1c2UgY2FzZSAocmNhci1kdS1kcm0pLCBJ IG5lZWQgdG8gc29ydCBwbGFuZXMKPiA+IGluIGRpc3BsYXkgb3JkZXIgZnJvbSAwIHRvIE4tMSBh cyB0aGF0J3MgaG93IHRoZSBoYXJkd2FyZSBpcyBwcm9ncmFtbWVkLgo+ID4gTm9ybWFsaXphdGlv biBnaXZlcyBtZSBhbiBhcnJheSBvZiBzb3J0ZWQgcGxhbmVzLCB3aGljaCBpcyBleGFjdGx5IHdo YXQgSQo+ID4gbmVlZC4gSSBleHBlY3Qgb3RoZXIgZHJpdmVycyB0byBoYXZlIHNpbWlsYXIgcmVx dWlyZW1lbnRzLCBzbwo+ID4gbm9ybWFsaXphdGlvbiBpbiB0aGUgY29yZSB3aWxsIGFsbG93IGNv ZGUgc2hhcmluZy4KPiAKPiBJdCBqdXN0IGVsaW1pbmF0ZXMgZHVwbGljYXRlIHpwb3MgdmFsdWVz LiBJdCB3b24ndCByZS1zb3J0IHlvdXIgcGxhbmUKPiBzdGF0ZXMgbWFnaWNhbGx5IG9yIGFueXRo aW5nIGxpa2UgdGhhdC4gTm9yIGRvZXMgaXQgZ3VhcmFudGVlIHRoYXQKPiB0aGUgenBvcyB2YWx1 ZXMgZm9yIHRoZSBhY3R1YWxseSB2aXNpYmxlIHBsYW5lcyBhcmUgZXZlbiBjb250aWd1b3VzLgoK VG8gbWFrZSBub3JtYWxpemF0aW9uIHVzZWZ1bCBpbiBteSBjYXNlIEkgbmVlZCBjb250aWd1b3Vz IHZhbHVlcyBzdGFydGluZyBhdCAKMC4KCj4gPiBOb3csIGlzIHlvdXIgY29uY2VybiB0aGF0IGFs bG93aW5nIHR3byBwbGFuZXMgdG8gaGF2ZSB0aGUgc2FtZSB6cG9zIGlzbid0Cj4gPiBuZWVkZWQg d2l0aCB0aGUgYXRvbWljIEFQSSA/IEkgYWdyZWUgd2l0aCB0aGF0LCBidXQgaXQgd291bGQgYWxz byBtYWtlIGl0Cj4gPiBpbXBvc3NpYmxlIHRvIHN3YXAgdHdvIHBsYW5lcyB1c2luZyB0aGUgbGVn YWN5IEFQSSBpbXBsZW1lbnRlZCBvbiB0b3Agb2YKPiA+IGF0b21pYyBkcml2ZXJzLiBJJ2xsIGxl dCBvdGhlcnMgZGVjaWRlIHdoZXRoZXIgdGhpcyBpcyBjb25zaWRlcmVkIGFzIGEKPiA+IGNvbmNl cm4uCgpBbnkgb3BpbmlvbiBvbiB0aGlzID8KCj4gPiBXaGlsZSBhdCBpdCwgQmVuamFtaW4gdG9s ZCBtZSB0aGF0IHlvdSd2ZSByZXF1ZXN0ZWQgY29uZmlndXJhYmxlIG1pbi9tYXgKPiA+IHZhbHVl cyBwZXIgcGxhbmUsIHdoYXQgYXJlIHlvdXIgdXNlIGNhc2VzIGZvciB0aGF0ID8gT24gdGhlIHNh bWUgdG9waWMsCj4gPiBwbGVhc2Ugc2VlIGJlbG93Lgo+ID4gCj4gPj4+ICsKPiA+Pj4gKy8qKgo+ ID4+PiArICogZHJtX2F0b21pY19oZWxwZXJfY3J0Y19ub3JtYWxpemVfenBvcyAtIGNhbGN1bGF0 ZSBub3JtYWxpemVkIHpwb3MKPiA+Pj4gdmFsdWVzCj4gPj4+ICsgKiBAY3J0YzogY3J0YyB3aXRo IHBsYW5lcywgd2hpY2ggaGF2ZSB0byBiZSBjb25zaWRlcmVkIGZvcgo+ID4+PiBub3JtYWxpemF0 aW9uCj4gPj4+ICsgKiBAY3J0Y19zdGF0ZTogbmV3IGF0b21pYyBzdGF0ZSB0byBhcHBseQo+ID4+ PiArICoKPiA+Pj4gKyAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIG5ldyBzdGF0ZXMgb2YgYWxsIHBs YW5lcyBhc3NpZ25lZCB0byBnaXZlbgo+ID4+PiBjcnRjIGFuZAo+ID4+PiArICogY2FsY3VsYXRl cyBub3JtYWxpemVkIHpwb3MgdmFsdWUgZm9yIHRoZW0uIFBsYW5lcyBhcmUgY29tcGFyZWQKPiA+ Pj4gZmlyc3QgYnkgdGhlaXIKPiA+Pj4gKyAqIHpwb3MgdmFsdWVzLCB0aGVuIGJ5IHBsYW5lIGlk IChpZiB6cG9zIGVxdWFscykuIFBsYW5lIHdpdGggbG93ZXN0Cj4gPj4+IHpwb3MgdmFsdWUKPiA+ Pj4gKyAqIGlzIGF0IHRoZSBib3R0b20uIFRoZSBwbGFuZV9zdGF0ZS0+bm9ybWFsaXplZF96cG9z IGlzIHRoZW4gZmlsbGVkCj4gPj4+IHdpdGggdW5pcXVlCj4gPj4+ICsgKiB2YWx1ZXMgZnJvbSAw IHRvIG51bWJlciBvZiBhY3RpdmUgcGxhbmVzIGluIGNydGMgbWludXMgb25lLgo+ID4+PiArICoK PiA+Pj4gKyAqIFJFVFVSTlMKPiA+Pj4gKyAqIFplcm8gZm9yIHN1Y2Nlc3Mgb3IgLWVycm5vCj4g Pj4+ICsgKi8KPiA+Pj4gK2ludCBkcm1fYXRvbWljX2hlbHBlcl9jcnRjX25vcm1hbGl6ZV96cG9z KHN0cnVjdCBkcm1fY3J0YyAqY3J0YywKPiA+Pj4gKwkJCQkJICBzdHJ1Y3QgZHJtX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUpCj4gPj4+ICt7Cj4gPj4+ICsJc3RydWN0IGRybV9hdG9taWNfc3RhdGUg KnN0YXRlID0gY3J0Y19zdGF0ZS0+c3RhdGU7Cj4gPj4+ICsJc3RydWN0IGRybV9kZXZpY2UgKmRl diA9IGNydGMtPmRldjsKPiA+Pj4gKwlpbnQgdG90YWxfcGxhbmVzID0gZGV2LT5tb2RlX2NvbmZp Zy5udW1fdG90YWxfcGxhbmU7Cj4gPj4+ICsJc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqKnN0YXRl czsKPiA+Pj4gKwlzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZTsKPiA+Pj4gKwlpbnQgaSwgenBvcywg biA9IDA7Cj4gPj4+ICsJaW50IHJldCA9IDA7Cj4gPj4+ICsKPiA+Pj4gKwlEUk1fREVCVUdfQVRP TUlDKCJbQ1JUQzolZDolc10gY2FsY3VsYXRpbmcgbm9ybWFsaXplZCB6cG9zCj4gPj4+IHZhbHVl c1xuIiwKPiA+Pj4gKwkJCSBjcnRjLT5iYXNlLmlkLCBjcnRjLT5uYW1lKTsKPiA+Pj4gKwo+ID4+ PiArCXN0YXRlcyA9IGttYWxsb2ModG90YWxfcGxhbmVzICogc2l6ZW9mKCpzdGF0ZXMpLCBHRlBf S0VSTkVMKTsKPiA+PiAKPiA+PiBrbWFsbG9jX2FycmF5KC4uLiwgR0ZQX1RFTVBPUkFSWSk7Cj4g Pj4gCj4gPj4+ICsJaWYgKCFzdGF0ZXMpCj4gPj4+ICsJCXJldHVybiAtRU5PTUVNOwo+ID4+PiAr Cj4gPj4+ICsJLyoKPiA+Pj4gKwkgKiBOb3JtYWxpemF0aW9uIHByb2Nlc3MgbWlnaHQgY3JlYXRl IG5ldyBzdGF0ZXMgZm9yIHBsYW5lcyB3aGljaAo+ID4+PiArCSAqIG5vcm1hbGl6ZWRfenBvcyBo YXMgdG8gYmUgcmVjYWxjdWxhdGVkLgo+ID4+PiArCSAqLwo+ID4+PiArCWRybV9mb3JfZWFjaF9w bGFuZV9tYXNrKHBsYW5lLCBkZXYsIGNydGNfc3RhdGUtPnBsYW5lX21hc2spIHsKPiA+Pj4gKwkJ c3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqcGxhbmVfc3RhdGUgPQo+ID4+PiArCQkJZHJtX2F0b21p Y19nZXRfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsKPiA+Pj4gKwkJaWYgKElTX0VSUihwbGFu ZV9zdGF0ZSkpIHsKPiA+Pj4gKwkJCXJldCA9IFBUUl9FUlIocGxhbmVfc3RhdGUpOwo+ID4+PiAr CQkJZ290byBkb25lOwo+ID4+PiArCQl9Cj4gPj4gCj4gPj4gSG1tLiBTbyBpZiB3ZSBjaGFuZ2Ug dGhlIHpwb3MgZm9yIGFueSBwbGFuZSwgd2UgZ2V0IHRvIHJlLWNoZWNrIGV2ZXJ5Cj4gPj4gcGxh bmUuIE5vdCB0aGUgbW9zdCBlZmZpY2llbnQgdGhpbmcgcGVyaGFwcywgc2luY2Ugb24gc29tZSBo YXJkd2FyZQo+ID4+IHlvdSBtaWdodCBvbmx5IGhhdmUgYSBzdWJzZXQgb2YgcGxhbmVzIHRoYXQg Y2FuIGV2ZW4gY2hhbmdlIHRoZWlyCj4gPj4genBvcy4gT1RPSCBJIHN1cHBvc2UgaXQgZG9lcyBt YWtlIGxpZmUgYSBiaXQgc2ltcGxlciB3aGVuIHlvdSBkb24ndAo+ID4+IGhhdmUgdG8gdGhpbmsg d2hpY2ggcGxhbmVzIG1pZ2h0IGJlIGFmZmVjdGVkLCBzbyBJIGd1ZXNzIGl0J3MgZmluZS4KPiA+ Pgo+ID4+PiArCQlzdGF0ZXNbbisrXSA9IHBsYW5lX3N0YXRlOwo+ID4+PiArCQlEUk1fREVCVUdf QVRPTUlDKCJbUExBTkU6JWQ6JXNdIHByb2Nlc3NpbmcgenBvcyB2YWx1ZSAlZFxuIiwKPiA+Pj4g KwkJCQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5lLT5uYW1lLAo+ID4+PiArCQkJCSBwbGFuZV9zdGF0 ZS0+enBvcyk7Cj4gPj4+ICsJfQo+ID4+PiArCj4gPj4+ICsJc29ydChzdGF0ZXMsIG4sIHNpemVv Zigqc3RhdGVzKSwgZHJtX2F0b21pY19zdGF0ZV96cG9zX2NtcCwgTlVMTCk7Cj4gPj4+ICsKPiA+ Pj4gKwlmb3IgKGkgPSAwLCB6cG9zID0gMDsgaSA8IG47IGkrKywgenBvcysrKSB7Cj4gPj4+ICsJ CXBsYW5lID0gc3RhdGVzW2ldLT5wbGFuZTsKPiA+Pj4gKwo+ID4+PiArCQl6cG9zID0gbWF4X3Qo aW50LCB6cG9zLCBzdGF0ZXNbaV0tPnpwb3MpOwo+ID4gCj4gPiBUaGUgcHVycG9zZSBvZiB0aGlz IGNvZGUgaXMgdG8gc3VwcG9ydCB0aGUgcGVyLXBsYW5lIG1pbi9tYXggenBvcyB2YWx1ZXMuCj4g PiBBcyBCZW5qYW1pbiBleHBsYWluZWQsIGZvciBleGFtcGxlIGlmIHRoZSB6cG9zIHJhbmdlIGlz IFswLDJdIGZvciBwbGFuZSBYCj4gPiBhbmQgWzQsNl0gZm9yIHBsYW5lIFksIHdlIG5lZWQgdG8g YmUgc3VyZSB0aGUgbWluIHpwb3MgdmFsdWUgb2YgcGxhbmUgWQo+ID4gaXMgNC4gVG8gdGhpcyBJ IHJlcGxpZWQgdGhhdCdzIGV4YWN0bHkgd2hhdCBJJ2QgcmF0aGVyIGF2b2lkLiBJIHRoaW5rIHRo ZQo+ID4gY29yZSBjb2RlIHNob3VsZCB0YWtlIGNhcmUgb2Ygc29ydGluZyBwbGFuZXMsIHRha2lu ZyBkcml2ZXItc3BlY2lmaWMKPiA+IGNvbnN0cmFpbnRzIGludG8gYWNjb3VudCB3aGVuIHBvc3Np YmxlICh0b28gZXhvdGljIGNvbnN0cmFpbnRzIGNhbiBhbHdheXMKPiA+IGJlIGltcGxlbWVudGVk IGRpcmVjdGx5IGJ5IGRyaXZlcnMpLCBhbmQgdGhlbiBsZWF2ZSB0byB0aGUgZHJpdmVycyB0aGUK PiA+IHJlc3BvbnNpYmlsaXR5IG9mIHRha2luZyB0aGUgc29ydGVkIHBsYW5lcyBhcnJheSBhbmQg Y29tcHV0aW5nIHdoYXRldmVyCj4gPiBoYXJkd2FyZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGlz IG5lZWRlZC4gU29ydGluZyBwbGFuZXMgZnJvbSAwIHRvIE4tMQo+ID4gc2VlbXMgdG8gYmUgbGlr ZSBhIGJldHRlciBBUEkgdGhhbiBoYXZpbmcgc2VtaS1yYW5kb20gdmFsdWVzIGZvciB0aGUKPiA+ IG5vcm1hbGl6ZWQgenBvcy4gRG8gd2UgaGF2ZSB1c2UgY2FzZXMgdGhhdCB3b3VsZG4ndCBiZSBj b3ZlcmVkIGJ5IGEKPiA+IHNpbXBsZXIgaW1wbGVtZW50YXRpb24gPwo+IAo+IFRoZSBwb2ludCBv ZiBleHBvc2luZyByYW5nZXMgaXMgdG8gZ2l2ZSB1c2Vyc3BhY2UgYXQgbGVhc3Qgc29tZSBjaGFu Y2UKPiBvZiBnZXR0aW5nIHRoZSBvcmRlciByaWdodC4gT3RoZXJ3aXNlIGl0J2xsIGp1c3QgaGF2 ZSB0byByYW5kb21seSB0cnkKPiBkaWZmZXJlbnQgb3JkZXJzIHVudGlsIHNvbWV0aGluZyB3b3Jr cy4gTW9zdCBoYXJkd2FyZSBpcyBxdWl0ZQo+IGNvbnN0cmFpbmVkIGluIHRoaXMuCgpDb3VsZCB5 b3UgZWR1Y2F0ZSBtZSBieSBnaXZpbmcgYSBmZXcgcmVhbCB3b3JsZCBleGFtcGxlcyA/Cgo+IFNv bWUgZG9uJ3Qgc3VwcG9ydCBjaGFuZ2luZyB0aGUgenBvcyBhdCBhbGwsIGluIHdoaWNoIGNhc2Ug d2Ugd291bGQgc2V0Cj4gbWluPT1tYXguCgpCdXQgYWxsIHRoaXMgZG9lc24ndCByZXF1aXJlIGFk anVzdGluZyB0aGUgbm9ybWFsaXplZCB6cG9zIHRvIHRha2UgdGhlIApvcmlnaW5hbCB6cG9zIGNv bnN0cmFpbnRzIGludG8gYWNjb3VudCwgZG9lcyBpdCA/IFdoeSBjYW4gbm9ybWFsaXplZF96cG9z IGJlIApjb25zdHJhaW5lZCB0byB0aGUgcmFuZ2UgMCB0byBOLTEsIGdpdmluZyBkcml2ZXJzIHRo ZSBzb3J0ZWQgcGxhbmVzIGFuZCB0aGVuIApsZXR0aW5nIHRoZW0gY29udmVydCB0aGF0IHRvIGRl dmljZS1zcGVjaWZpYyB2YWx1ZXMgPwoKPiA+Pj4gKwkJc3RhdGVzW2ldLT5ub3JtYWxpemVkX3pw b3MgPSB6cG9zOwo+ID4+PiArCQlEUk1fREVCVUdfQVRPTUlDKCJbUExBTkU6JWQ6JXNdIG5vcm1h bGl6ZWQgenBvcyB2YWx1ZSAlZFxuIiwKPiA+Pj4gKwkJCQkgcGxhbmUtPmJhc2UuaWQsIHBsYW5l LT5uYW1lLCB6cG9zKTsKPiA+Pj4gKwl9Cj4gPj4+ICsJY3J0Y19zdGF0ZS0+enBvc19jaGFuZ2Vk ID0gdHJ1ZTsKPiA+Pj4gKwo+ID4+PiArZG9uZToKPiA+Pj4gKwlrZnJlZShzdGF0ZXMpOwo+ID4+ PiArCXJldHVybiByZXQ7Cj4gPj4+ICt9Cj4gPj4+ICtFWFBPUlRfU1lNQk9MKGRybV9hdG9taWNf aGVscGVyX2NydGNfbm9ybWFsaXplX3pwb3MpOwoKLS0gClJlZ2FyZHMsCgpMYXVyZW50IFBpbmNo YXJ0CgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpkcmkt ZGV2ZWwgbWFpbGluZyBsaXN0CmRyaS1kZXZlbEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9kcmktZGV2ZWwK