From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [RFC 5/6] drm/i915: Allow fb modifier to set framebuffer tiling Date: Tue, 03 Feb 2015 10:41:49 +0000 Message-ID: <54D0A5ED.6000905@linux.intel.com> References: <1422639418-28845-1-git-send-email-tvrtko.ursulin@linux.intel.com> <1422639418-28845-6-git-send-email-tvrtko.ursulin@linux.intel.com> <20150202095430.GT14009@phenom.ffwll.local> <54CF532E.10100@linux.intel.com> <20150202171551.GA14009@phenom.ffwll.local> <54CFB43C.3000806@linux.intel.com> <20150202201742.GD14009@phenom.ffwll.local> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTP id 33DFE6E4ED for ; Tue, 3 Feb 2015 02:41:53 -0800 (PST) In-Reply-To: <20150202201742.GD14009@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: Intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAyLzAyLzIwMTUgMDg6MTcgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4gT24gTW9uLCBG ZWIgMDIsIDIwMTUgYXQgMDU6MzA6MzZQTSArMDAwMCwgVHZydGtvIFVyc3VsaW4gd3JvdGU6Cj4+ Cj4+IE9uIDAyLzAyLzIwMTUgMDU6MTUgUE0sIERhbmllbCBWZXR0ZXIgd3JvdGU6Cj4+PiBPbiBN b24sIEZlYiAwMiwgMjAxNSBhdCAxMDozNjozMEFNICswMDAwLCBUdnJ0a28gVXJzdWxpbiB3cm90 ZToKPj4+Pgo+Pj4+IE9uIDAyLzAyLzIwMTUgMDk6NTQgQU0sIERhbmllbCBWZXR0ZXIgd3JvdGU6 Cj4+Pj4+IE9uIEZyaSwgSmFuIDMwLCAyMDE1IGF0IDA1OjM2OjU3UE0gKzAwMDAsIFR2cnRrbyBV cnN1bGluIHdyb3RlOgo+Pj4+Pj4gRnJvbTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGlu QGludGVsLmNvbT4KPj4+Pj4+Cj4+Pj4+PiBVc2UgdGhlIGZiIG1vZGlmaWVyIGlmIGl0IHdhcyBz cGVjaWZpZWQgb3ZlciBvYmplY3QgdGlsaW5nIG1vZGUuCj4+Pj4+Pgo+Pj4+Pj4gU2lnbmVkLW9m Zi1ieTogVHZydGtvIFVyc3VsaW4gPHR2cnRrby51cnN1bGluQGludGVsLmNvbT4KPj4+Pj4+IC0t LQo+Pj4+Pj4gICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kaXNwbGF5LmMgfCA0MCArKysr KysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0KPj4+Pj4+ICAgMSBmaWxlIGNoYW5nZWQs IDMzIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCj4+Pj4+Pgo+Pj4+Pj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4+Pj4gaW5kZXggZTIyYWZiZS4uY2E2OWRhMCAxMDA2 NDQKPj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rpc3BsYXkuYwo+Pj4+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5jCj4+Pj4+PiBAQCAt MTI2NzEsNiArMTI2NzEsMjAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fZnJhbWVidWZmZXJf ZnVuY3MgaW50ZWxfZmJfZnVuY3MgPSB7Cj4+Pj4+PiAgIAkuY3JlYXRlX2hhbmRsZSA9IGludGVs X3VzZXJfZnJhbWVidWZmZXJfY3JlYXRlX2hhbmRsZSwKPj4+Pj4+ICAgfTsKPj4+Pj4+Cj4+Pj4+ PiArc3RhdGljIHVuc2lnbmVkIGludAo+Pj4+Pj4gK2ludGVsX2ZiX21vZGlmaWVyX3RvX3RpbGlu Zyh1NjQgbW9kaWZpZXIpCj4+Pj4+PiArewo+Pj4+Pj4gKwlzd2l0Y2ggKG1vZGlmaWVyKSB7Cj4+ Pj4+PiArCWNhc2UgSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQ6Cj4+Pj4+PiArCQlyZXR1cm4gSTkx NV9USUxJTkdfWDsKPj4+Pj4+ICsJZGVmYXVsdDoKPj4+Pj4+ICsJY2FzZSBJOTE1X0ZPUk1BVF9N T0RfTk9ORToKPj4+Pj4+ICsJCWJyZWFrOwo+Pj4+Pj4gKwl9Cj4+Pj4+PiArCj4+Pj4+PiArCXJl dHVybiBJOTE1X1RJTElOR19OT05FOwo+Pj4+Pj4gK30KPj4+Pj4+ICsKPj4+Pj4+ICAgc3RhdGlj IGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsCj4+Pj4+ PiAgIAkJCQkgIHN0cnVjdCBpbnRlbF9mcmFtZWJ1ZmZlciAqaW50ZWxfZmIsCj4+Pj4+PiAgIAkJ CQkgIHN0cnVjdCBkcm1fbW9kZV9mYl9jbWQyICptb2RlX2NtZCwKPj4+Pj4+IEBAIC0xMjY3OCwx MSArMTI2OTIsMjMgQEAgc3RhdGljIGludCBpbnRlbF9mcmFtZWJ1ZmZlcl9pbml0KHN0cnVjdCBk cm1fZGV2aWNlICpkZXYsCj4+Pj4+PiAgIHsKPj4+Pj4+ICAgCWludCBhbGlnbmVkX2hlaWdodDsK Pj4+Pj4+ICAgCWludCBwaXRjaF9saW1pdDsKPj4+Pj4+ICsJdW5zaWduZWQgaW50IHRpbGluZ19t b2RlID0gb2JqLT50aWxpbmdfbW9kZTsKPj4+Pj4+ICAgCWludCByZXQ7Cj4+Pj4+Pgo+Pj4+Pj4g ICAJV0FSTl9PTighbXV0ZXhfaXNfbG9ja2VkKCZkZXYtPnN0cnVjdF9tdXRleCkpOwo+Pj4+Pj4K Pj4+Pj4+IC0JaWYgKG9iai0+dGlsaW5nX21vZGUgPT0gSTkxNV9USUxJTkdfWSkgewo+Pj4+Pj4g KwlpZiAobW9kZV9jbWQtPmZsYWdzICYgRFJNX01PREVfRkJfTU9ESUZJRVJTKSB7Cj4+Pj4+PiAr CQl0aWxpbmdfbW9kZSA9Cj4+Pj4+PiArCQkJaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKG1v ZGVfY21kLT5tb2RpZmllclswXSk7Cj4+Pj4+PiArCQlpZiAodGlsaW5nX21vZGUgIT0gb2JqLT50 aWxpbmdfbW9kZSAmJgo+Pj4+Pj4gKwkJCW9iai0+dGlsaW5nX21vZGUgIT0gSTkxNV9USUxJTkdf Tk9ORSkgewo+Pj4+Pj4gKwkJCURSTV9FUlJPUigiVGlsaW5nIG1vZGlmaWVyIG1pc21hdGNoICV1 IHZzIG9iaiAldSFcbiIsCj4+Pj4+PiArCQkJCQl0aWxpbmdfbW9kZSwgb2JqLT50aWxpbmdfbW9k ZSk7Cj4+Pj4+PiArCQkJcmV0dXJuIC1FSU5WQUw7Cj4+Pj4+PiArCQl9Cj4+Pj4+PiArCX0KPj4+ Pj4KPj4+Pj4gQWgsIGhlcmUgY29tZXMgdGhlIG1hZ2ljLiBJIHRoaW5rIHRoaXMgbWlnaHQgYmUg c2ltcGxlciBpZiB3ZSBqdXN0IHVzZQo+Pj4+PiAtPm1vZGlmaWVyIChhbmQgZml4IGl0IHVwIGlm IEZCX01PRElGSUVSUyBpc24ndCBzZXQpLgo+Pj4+Pgo+Pj4+PiBCdHcgYW5vdGhlciByZWFzb24g Zm9yIHRoaXMgc3BsaXQgaXMgdGhhdCB0aGlzIHdheSB3ZSBoYXZlIGEgY2xlYXIKPj4+Pj4gc2Vw YXJhdGlvbiBiZXR3ZWVuIHRoZSB0aWxpbmcgbW9kZXMgc3VwcG9ydGVkIGdlbmVyYWxseSAoYXMg ZmIgbW9kaWZpZXJzKQo+Pj4+PiBhbmQgdGhlIHRpbGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgZmVu Y2VzLiBJdCBtaWdodCB0aGVyZWZvcmUgbWFrZSBzZW5zZSB0bwo+Pj4+PiByZW5hbWUgb2JqLT50 aWxpbmdfbW9kZSB3aXRoIGEgY29jY2kgcGF0Y2ggdG8gb2JqLT5mZW5jaW5nX21vZGUgb3IKPj4+ Pj4gLT5mZW5jZV90aWxpbmdfbW9kZSkuIFRvIG1ha2UgaXQgcmVhbGx5IGNsZWFyIHRoYXQgaXQn cyBqdXN0IGFib3V0IHRoZQo+Pj4+PiBnbG9iYWwgZ3R0IGZlbmNlcyBhbmQgbm90aGluZyBtb3Jl Lgo+Pj4+Cj4+Pj4gSSBkb24ndCByZWFsbHkgbGlrZSB1c2luZyAtPm1vZGlmaWVyIGRpcmVjdGx5 IGluIHRpbGluZyBwYXRjaCBzaW5jZSBpdCBpcyBhbgo+Pj4+IGJhZyBvZiB1bnJlbGF0ZWQgc3R1 ZmYsIG5vdCBvbmx5IGEgc3VwZXJzZXQuIFVucmVsYXRlZCBlc3BlY2lhbGx5LCBidXQgbm90Cj4+ Pj4gb25seSwgZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiBjYWxsIHNpdGVzIC8gdXNlcnMuCj4+ Pj4KPj4+PiBUaGVyZWZvcmUgSSBzZWUgc29tZSBkZXNpZ24gZWxlZ2FuY2UgaW4gZXh0cmFjdGlu ZyB0aGUgdGlsaW5nLCBvciBhbnkgb3RoZXIKPj4+PiBsb2dpY2FsIGdyb3VwIG9mIG1vZGlmaWVy cyBiZWZvcmUgaGFuZC4KPj4+Pgo+Pj4+IEF0IHRoZSB2ZXJ5IGxlYXN0IHdvdWxkIGNhbGwgc29t ZXRoaW5nIGxpa2UgaW50ZWxfZmJfbW9kaWZpZXJfdG9fdGlsaW5nKCksCj4+Pj4gYnV0LCBpdCBp cyB2ZXJ5IHVnbHkgdG8gaGF2ZSBhIGR5bmFtaWMgY29zdCBhdCBldmVyeSBjYWxsIHNpdGUuIFdo aWNoIGlzCj4+Pj4gYW5vdGhlciByZWFzb24gd2h5IEkgcHJlZmVycmVkIHRvIGV4dHJhY3QgdGhl IGRhdGEgYmVmb3JlIGhhbmQuCj4+Pgo+Pj4gVGhlIHJlYXNvbiBpcyB0aGF0IHRoZSBjdXJyZW50 IHRpbGluZ19tb2RlIGVudW0gaXMgdXNlcnNwYWNlIEFCSSwgYW5kCj4+PiBpdCdzIGp1c3QgZm9y IGhvdyB0byBmZW5jZSBnbG9iYWwgZ3R0IG1hcHBpbmdzLiBUaGF0J3MgdGhlIHBvaW50IG9mCj4+ PiBzcGxpdHRpbmcgdGhlIGZiIG1vZGlmaWVycyBvdXQgbGlrZSBpbiB0aGlzIHJmYy4KPj4+Cj4+ PiBTbyBpZiB5b3UgYWRkIHlvdXIgZmFuY3kgbmV3IHRpbGluZyBtb2RlIHlvdSBjYW4ndCBkbyB0 aGF0LCBzaW5jZSB5b3UKPj4+IGNhbid0IGV4dGVuZCB0aGUgdGlsaW5nX21vZGUgZW51bS4gQWRk aW5nIGFub3RoZXIgZW51bSBhbHNvIHNlZW1zIGEgYml0Cj4+Cj4+IFdoeSBub3Q/IEl0IGlzIG5v dCBjaGFuZ2luZyB0aGUgQUJJIHNpbmNlIG9iai0+dGlsaW5nX21vZGUgc3RheXMgZXhhY3RseSB0 aGUKPj4gc2FtZSBhcyBpdCBpcyB0b2RheS4KPj4KPj4gRG8geW91IHdvcnJ5IGFib3V0IGxlYWtp bmcgbmV3IGRhdGEgb3V0IGluIGk5MTVfZHJtLmgsIHVuZGVyIHRoZQo+PiBJOTE1X1RJTElOR18q ICNkZWZpbmVzPyBJIGRvbid0IHNlZSB0aGF0IHdlIGhhdmUgdG8gY2hhbmdlIHRoYXQgYXQgYWxs Lgo+Cj4gSSBwcmVmZXIgdG8ga2VlcCBlbnVtcyBmb3IgZGlmZmVyZW50IHR5cGVzIG9mIHZhbHVl cyBzZXBhcmF0ZSB0byBhdm9pZAo+IGNvbmZ1c2lvbi4KPgo+Pj4gdG9vIG11Y2ggd2hlbiB3ZSBh bHJlYWR5IGhhdmUgZmJfbW9kaWZpZXJzLgo+Pj4KPj4+IEFuZCBpZiBmYl9tb2RpZmllcnMgZ2V0 IHRvbyBjb21wbGljYXRlZCB3ZSBjYW4gYWRkIGhlbHBlciBmdW5jdGlvbnMgd2hpY2gKPj4+IG5v cm1hbGl6ZSBzdHVmZiwgZS5nLiBleHRyYWN0IGp1c3QgdGhlIGJhc2UgdGlsaW5nIG1vZGUgYW5k IHJlbW92ZSBvdGhlcgo+Pj4gdGhpbmdzIChsaWtlIGNvbXByZXNzaW9uIG1vZGUgb3Igd2hhdGV2 ZXIgaXQncyBnb2luZyB0byBiZSkuCj4+Cj4+IFNvIHlvdSBhcmUgc3Ryb25nbHkgZm9yICJsb29r aW5nIGludG8gYSBiYWcgb2Ygc3R1ZmYiIHRvIHNlZSBpZiBhbnl0aGluZwo+PiBpbnRlcmVzdGlu ZyBpcyB0aGVyZSBvbiBldmVyeSBjYWxsIHNpdGU/Cj4+Cj4+IEhlbHBlciBmdW5jdGlvbnMgaW4g bXkgdmlldyBvbmx5IG1hcmdpbmFsbHkgaGVscCB0aGVyZSAtIHRoZXkgbWFrZSB0aGUgY29kZQo+ PiBuZWF0ZXIgYnV0IGRlc2lnbiBpcyBjb25jZXB0dWFsbHkgc3RpbGwgdW50aWR5LiBBbmQgeW91 IGFkZCBwb2ludGxlc3MKPj4gcHJvY2Vzc2luZyBvbiBldmVyeSBjYWxsIHNpdGUuCj4+Cj4+IEkg anVzdCBkb24ndCBzZWUgd2hhdCBpcyB0aGUgcHJvYmxlbSB3aXRoIGV4dHJhY3RpbmcgdGhlIGlu dGVyZXN0aW5nIGRhdGEKPj4gImZyb20gdGhlIGJhZyIgYXQgZmIgaW5pdCB0aW1lLiBJZiB5b3Ug dHJpZWQgdG8gbWFrZSBzb21lIHN5bmNocm9uaXphdGlvbgo+PiBhcmd1bWVudCBpbiB0aGUgb3Ro ZXIgcmVwbHkgSSBkb24ndCBnZXQgaXQuCj4KPiBTbyBhZmFpayBhdCBtb3N0IHdlJ2xsIGdldCBh IGZldyBtb3JlIGJpdHMgZm9yIGNvbXByZXNzaW9uLCBwZXJoYXBzCj4gc3dpenpsaW5nIChhbHRo b3VnaCB0aGF0J3MgZGVhZCBvbiBnZW44KyksIHdoYXRlbHNlLiBJZiB3ZSBsYXkgb3V0IHRoZQo+ IGRlZmluZXMgaW4gdGhlIGludGVsIHZlbmRvciBtb2RpZmllciBzcGFjZSB3ZSBjYW4gZ2V0IGF0 IHRoYXQgYnkgc2ltcGxlCj4gbWFza2luZy4gQWxzbywga21zIG9wZXJhdGlvbnMgYXJlIGRvbmUg YXQgYWJvdXQgNjBmcHMgcmF0ZSwgc28gY29tcHV0YXRpb24KPiBvdmVyaGVhZCBpcyB0b3RhbGx5 IGlycmVsZXZhbnQgKHdlbGwgYXMgbG9uZyBhcyB3ZSBqdXN0IHdhc3RlIGEgZmV3Cj4gY3ljbGVz KS4KPgo+IFRoZSBzeW5jaHJvbml6YXRpb24gYXJndW1lbnQgaXMgdGhhdCBhbnkga2luZCBvZiBk dXBsaWNhdGVkIGRhdGEgd2lsbCBnZXQKPiBvdXQgb2Ygc3luYyBzb29uZXIgb3IgbGF0ZXIgaW4g bXkgZXhwZXJpZW5jZS4gV2UgY2FuJ3Qgc21hc2ggZXZlcnl0aGluZwo+IGludG8gb2JqLT50aWxp bmcgd2l0aCB0aGUgYWRkZmIyLjUgYWJpIChhbmQgYmVjYXVzZSB0aGV5J3JlIGFsc28gZm9yCj4g ZGlmZmVyZW50IHRoaW5ncyksIGJ1dCB3ZSBjYW4gYXZvaWQgZHVwbGljYXRpbmcgaW5mb3JtYXRp b24gYmV0d2Vlbgo+IGZiLT5tb2RpZmllciBhbmQgaW50ZWxfZmItPnRpbGluZ19tb2RlIGJ5IG5v dCBoYXZpbmcgdGhlIHNlY29uZC4KID4KPiBZZXMgdGhhdCBtZWFucyB3ZSBuZWVkIHRvIGZpeCB1 cCAtPm1vZGlmaWVyICh3aGljaCB5b3VyIHBhdGNoZXMgZG9udCBkbykuCj4gQnV0IHNvb25lciBv ciBsYXRlciBzb21lb25lIHdpbGwgbG9vayBhdCAtPm1vZGlmaWVyIGFuZCBub3QgLT50aWxpbmdf bW9kZQo+IChiZWNhdXNlIGhleSBpdCB3b3JrZWQgb24gbmV3IHVzZXJzcGFjZSkgYW5kIHRoZW4g KmJvb20qIHdlIGhhdmUgYSBuaWNlCj4gY29uZnVzaW5nIHJlZ3Jlc3Npb24gcmVwb3J0IGZyb20g c29tZW9uZS4gT3Igc29tZW9uZSBsb29rcyBhdAo+IG9iai0+dGlsaW5nX21vZGUgaW5zdGVhZCBv ZiBpbnRlbF9mYi0+dGlsaW5nX21vZGUgKGhleSBpdCB3b3JrcywgYmVjYXVzZQo+IHRoZXkncmUg dXNpbmcgdGhlIHNhbWUgZW51bSB2YWx1ZXMpIHVudGlsIHRoZSBuZXdmYW5nbGVkIHRpbGluZyB0 aGluZwo+IHNob3dzIHVwLgo+Cj4+IGZiLT5tb2RpZmllclswXSBzaG91bGQgYmUsIGluIG15IG9w aW5pb24sIHZpZXdlZCBhcyBpbW11dGFibGUuIEFuZCBpdCBsaXZlcwo+PiBhdCB0aGUgYmFzZSBj bGFzcyBsZXZlbCB3aGlsZSBpbiBpbnRlbF9mcmFtYnVmZmVyIHN1Yi1jbGFzcyBpdCBzaG91bGQg YmUKPj4ganVzdCBmaW5lIHRvICJwYXJzZSIgdGhhdCBpbnRvIGRpcmVjdGx5IHVzYWJsZSBkYXRh IHN0b3JlZCBhdCB0aGUgc3ViLWNsYXNzCj4+IGxldmVsLgo+Cj4gRnVsbHkgYWdyZWVkIG9uIGlt bXV0YWJsZSwgYnV0IHRoYXQgZG9lc24ndCBleGNsdWRlIGNvbXB1dGluZyBhbgo+IGFwcHJvcHJp YXRlIHZhbHVlIGF0IGZiIGluaXQgdGltZS4KClNvIHlvdSB3YW50IHRvIGNhcmVmdWxseSBsYXkg b3V0IG91ciBmYiBtb2RpZmllcnMgc28gd2UgY2FuIGdldCBvdXIgZGF0YSAKb3V0IGVhc2lseSBy YXRoZXIgdGhhbiBleHRyYWN0IHRoZSBkYXRhIGF0IGZiIGNyZWF0aW9uIGFuZCBoYXZlIG5vIHN1 Y2ggCmNvbnN0cmFpbnRzPwoKT3IgaW4gb3RoZXIgd29yZHMgeW91IHdhbnQgdG8gcmVzZXJ2ZSBz b21lIGJpdHMgZm9yIHRpbGluZyBhbmQgZGVmaW5lIGEgCm1hc2sgc3RyYWlnaHQgYXdheSwgZGlk IEkgZ2V0IHRoYXQgcmlnaHQ/IE5vdCBsaWtlIHRoaXM6CgoxLgoKaW50ZWxfZmIgY3JlYXRpb24K ICAgIC0+IHBhcnNlIGZiIG1vZGlmaWVyIGFuZCBleHRyYWN0IHByaXZhdGUgYXR0cmlidXRlcyBm b3IgZnV0dXJlIHVzZQogICAgICAgLT4gdGlsaW5nX21vZGUKICAgICAgIC0+IGNvbXByZXNzaW9u X21vZGUgKGVnLikKICAgICAgIC0+IHN3aXp6bGluZ19tb2RlIChlZy4pCgp0aWxpbmdfbW9kZSB1 c2Ugc2l0ZXMKICAgIC0+IGp1c3QgdXNlIGludGVsX2ZiLT50aWxpbmdfbW9kZQoKQnV0IGxpa2Ug dGhpczoKCjIuCgppbnRlbF9mYiBjcmVhdGlvbgogICAgLT4gZG8gbm90aGluZwoKY2FsbCBzaXRl cwogICAgLT4gZXh0cmFjdCB0aWxpbmdfbW9kZSBmcm9tIGZiIG1vZGlmaWVyCgoqIE5vdGUgdGhp cyBzdGlsbCBuZWVkcyB0byBtYXAgdG8gc2FtZSAiZW51bSIgc3BhY2UgYXMgdG9kYXkgYXQgbGVh c3QgaW4gCnBsYWNlcyB3aGljaCBwcm9ncmFtIHRoZSBoYXJkd2FyZS4KCllvdSB3YW50IG9wdGlv biAyLCBjb3JyZWN0PwoKUmVnYXJkcywKClR2cnRrbwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBs aXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFu L2xpc3RpbmZvL2ludGVsLWdmeAo=