From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [RFC PATCH v4 1/2] drm: Add generic colorkey properties for display planes Date: Tue, 14 Aug 2018 12:38:33 +0200 Message-ID: <20180814103833.GN21634@phenom.ffwll.local> References: <20180807172202.1961-1-digetx@gmail.com> <20180807172202.1961-2-digetx@gmail.com> <7041537.TPdt8DIvGD@avalon> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <7041537.TPdt8DIvGD@avalon> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Paul Kocialkowski , Thomas Hellstrom , Laurent Pinchart , Neil Armstrong , Russell King , dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Thierry Reding , Ben Skeggs , Rodrigo Vivi , linux-tegra@vger.kernel.org, Dmitry Osipenko , Maxime Ripard , linux-media@vger.kernel.org List-Id: linux-tegra@vger.kernel.org T24gVHVlLCBBdWcgMTQsIDIwMTggYXQgMTI6NDg6MDhQTSArMDMwMCwgTGF1cmVudCBQaW5jaGFy dCB3cm90ZToKPiBIaSBEbWl0cnksCj4gCj4gVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCj4gCj4g T24gVHVlc2RheSwgNyBBdWd1c3QgMjAxOCAyMDoyMjowMSBFRVNUIERtaXRyeSBPc2lwZW5rbyB3 cm90ZToKPiA+IEZyb206IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnQrcmVuZXNh c0BpZGVhc29uYm9hcmQuY29tPgo+ID4gCj4gPiBDb2xvciBrZXlpbmcgaXMgdGhlIGFjdGlvbiBv ZiByZXBsYWNpbmcgcGl4ZWxzIG1hdGNoaW5nIGEgZ2l2ZW4gY29sb3IKPiA+IChvciByYW5nZSBv ZiBjb2xvcnMpIHdpdGggdHJhbnNwYXJlbnQgcGl4ZWxzIGluIGFuIG92ZXJsYXkgd2hlbgo+ID4g cGVyZm9ybWluZyBibGl0dGluZy4gRGVwZW5kaW5nIG9uIHRoZSBoYXJkd2FyZSBjYXBhYmlsaXRp ZXMsIHRoZQo+ID4gbWF0Y2hpbmcgcGl4ZWwgY2FuIGVpdGhlciBiZWNvbWUgZnVsbHkgdHJhbnNw YXJlbnQgb3IgZ2FpbiBhZGp1c3RtZW50Cj4gPiBvZiB0aGUgcGl4ZWxzIGNvbXBvbmVudCB2YWx1 ZXMuCj4gPiAKPiA+IENvbG9yIGtleWluZyBpcyBmb3VuZCBpbiBhIGxhcmdlIG51bWJlciBvZiBk ZXZpY2VzIHdob3NlIGNhcGFiaWxpdGllcwo+ID4gb2Z0ZW4gZGlmZmVyLCBidXQgdGhleSBzdGls bCBoYXZlIGVub3VnaCBjb21tb24gZmVhdHVyZXMgaW4gcmFuZ2UgdG8KPiA+IHN0YW5kYXJkaXpl IGNvbG9yIGtleSBwcm9wZXJ0aWVzLiBUaGlzIGNvbW1pdCBhZGRzIG5ldyBnZW5lcmljIERSTSBw bGFuZQo+ID4gcHJvcGVydGllcyByZWxhdGVkIHRvIHRoZSBjb2xvciBrZXlpbmcsIHByb3ZpZGlu ZyBpbml0aWFsIGNvbG9yIGtleWluZwo+ID4gc3VwcG9ydC4KPiA+IAo+ID4gU2lnbmVkLW9mZi1i eTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudC5waW5jaGFydCtyZW5lc2FzQGlkZWFzb25ib2Fy ZC5jb20+Cj4gPiBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgT3NpcGVua28gPGRpZ2V0eEBnbWFpbC5j b20+Cj4gPiAtLS0KPiA+ICBkcml2ZXJzL2dwdS9kcm0vZHJtX2F0b21pYy5jIHwgIDIwICsrKysr Cj4gPiAgZHJpdmVycy9ncHUvZHJtL2RybV9ibGVuZC5jICB8IDE1MCArKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ID4gIGluY2x1ZGUvZHJtL2RybV9ibGVuZC5oICAgICAgfCAg IDMgKwo+ID4gIGluY2x1ZGUvZHJtL2RybV9wbGFuZS5oICAgICAgfCAgOTEgKysrKysrKysrKysr KysrKysrKysrCj4gPiAgNCBmaWxlcyBjaGFuZ2VkLCAyNjQgaW5zZXJ0aW9ucygrKQo+IAo+IFtz bmlwXQo+IAo+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYwo+ID4gaW5kZXggYTE2YTc0ZDdlMTVlLi4xM2M2MWRk MGQ5YjcgMTAwNjQ0Cj4gPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2JsZW5kLmMKPiA+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYmxlbmQuYwo+ID4gQEAgLTEwNyw2ICsxMDcsMTEgQEAK PiA+ICAgKglwbGFuZXMuIFdpdGhvdXQgdGhpcyBwcm9wZXJ0eSB0aGUgcHJpbWFyeSBwbGFuZSBp cyBhbHdheXMgYmVsb3cgdGhlCj4gPiBjdXJzb3IgKglwbGFuZSwgYW5kIG9yZGVyaW5nIGJldHdl ZW4gYWxsIG90aGVyIHBsYW5lcyBpcyB1bmRlZmluZWQuCj4gPiAgICoKPiA+ICsgKiBjb2xvcmtl eToKPiA+ICsgKglDb2xvciBrZXlpbmcgaXMgc2V0IHVwIHdpdGggZHJtX3BsYW5lX2NyZWF0ZV9j b2xvcmtleV9wcm9wZXJ0aWVzKCkuCj4gPiArICoJSXQgYWRkcyBzdXBwb3J0IGZvciBhY3Rpb25z IGxpa2UgcmVwbGFjaW5nIGEgcmFuZ2Ugb2YgY29sb3JzIHdpdGggYQo+ID4gKyAqCXRyYW5zcGFy ZW50IGNvbG9yIGluIHRoZSBwbGFuZS4gQ29sb3Iga2V5aW5nIGlzIGRpc2FibGVkIGJ5IGRlZmF1 bHQuCj4gPiArICoKPiA+ICAgKiBOb3RlIHRoYXQgYWxsIHRoZSBwcm9wZXJ0eSBleHRlbnNpb25z IGRlc2NyaWJlZCBoZXJlIGFwcGx5IGVpdGhlciB0byB0aGUKPiA+ICogcGxhbmUgb3IgdGhlIENS VEMgKGUuZy4gZm9yIHRoZSBiYWNrZ3JvdW5kIGNvbG9yLCB3aGljaCBjdXJyZW50bHkgaXMgbm90 Cj4gPiAqIGV4cG9zZWQgYW5kIGFzc3VtZWQgdG8gYmUgYmxhY2spLgo+ID4gQEAgLTQ0OCwzICs0 NTMsMTQ4IEBAIGludCBkcm1fYXRvbWljX25vcm1hbGl6ZV96cG9zKHN0cnVjdCBkcm1fZGV2aWNl ICpkZXYsCj4gPiAgCXJldHVybiAwOwo+ID4gIH0KPiA+ICBFWFBPUlRfU1lNQk9MKGRybV9hdG9t aWNfbm9ybWFsaXplX3pwb3MpOwo+ID4gKwo+ID4gK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3Qg cGxhbmVfY29sb3JrZXlfbW9kZV9uYW1lW10gPSB7Cj4gPiArCVtEUk1fUExBTkVfQ09MT1JLRVlf TU9ERV9ESVNBQkxFRF0gPSAiZGlzYWJsZWQiLAo+ID4gKwlbRFJNX1BMQU5FX0NPTE9SS0VZX01P REVfVFJBTlNQQVJFTlRdID0gInRyYW5zcGFyZW50IiwKPiA+ICt9Owo+ID4gKwo+ID4gKy8qKgo+ ID4gKyAqIGRybV9wbGFuZV9jcmVhdGVfY29sb3JrZXlfcHJvcGVydGllcyAtIGNyZWF0ZSBjb2xv cmtleSBwcm9wZXJ0aWVzCj4gPiArICogQHBsYW5lOiBkcm0gcGxhbmUKPiA+ICsgKiBAc3VwcG9y dGVkX21vZGVzOiBiaXRtYXNrIG9mIHN1cHBvcnRlZCBjb2xvciBrZXlpbmcgbW9kZXMKPiA+ICsg Kgo+ID4gKyAqIFRoaXMgZnVuY3Rpb24gY3JlYXRlcyB0aGUgZ2VuZXJpYyBjb2xvciBrZXlpbmcg cHJvcGVydGllcyBhbmQgYXR0YWNoZXMKPiA+IHRoZW0KPiA+ICsgKiB0byB0aGUgQHBsYW5lIHRv IGVuYWJsZSBjb2xvciBrZXlpbmcgY29udHJvbCBmb3IgYmxlbmRpbmcgb3BlcmF0aW9ucy4KPiA+ ICsgKgo+ID4gKyAqIEdsb3NzYXJ5Ogo+ID4gKyAqCj4gPiArICogRGVzdGluYXRpb24gcGxhbmU6 Cj4gPiArICoJUGxhbmUgdG8gd2hpY2ggY29sb3Iga2V5aW5nIHByb3BlcnRpZXMgYXJlIGFwcGxp ZWQsIHRoaXMgcGxhbmVzIHRha2VzCj4gPiArICoJdGhlIGVmZmVjdCBvZiBjb2xvciBrZXlpbmcg b3BlcmF0aW9uLiBUaGUgZWZmZWN0IGlzIGRldGVybWluZWQgYnkgYQo+ID4gKyAqCWdpdmVuIGNv bG9yIGtleWluZyBtb2RlLgo+ID4gKyAqCj4gPiArICogU291cmNlIHBsYW5lOgo+ID4gKyAqCVBp eGVscyBvZiB0aGlzIHBsYW5lIGFyZSB0aGUgc291cmNlIGZvciBjb2xvciBrZXkgbWF0Y2hpbmcg b3BlcmF0aW9uLgo+ID4gKyAqCj4gPiArICogQ29sb3Iga2V5aW5nIGlzIGNvbnRyb2xsZWQgYnkg dGhlc2UgcHJvcGVydGllczoKPiA+ICsgKgo+ID4gKyAqIGNvbG9ya2V5LnBsYW5lX21hc2s6Cj4g PiArICoJVGhlIG1hc2sgcHJvcGVydHkgc3BlY2lmaWVzIHdoaWNoIHBsYW5lcyBwYXJ0aWNpcGF0 ZSBpbiBjb2xvciBrZXkKPiA+ICsgKgltYXRjaGluZyBwcm9jZXNzLCB0aGVzZSBwbGFuZXMgYXJl IHRoZSBjb2xvciBrZXkgc291cmNlcy4KPiA+ICsgKgo+ID4gKyAqCURyaXZlcnMgcmV0dXJuIGFu IGVycm9yIGZyb20gdGhlaXIgcGxhbmUgYXRvbWljIGNoZWNrIGlmIHBsYW5lIGNhbid0IGJlCj4g PiArICoJaGFuZGxlZC4KPiAKPiBUaGlzIHNlZW1zIGZyYWdpbGUgdG8gbWUuIFdlIGRvbid0IGRv Y3VtZW50IGhvdyB1c2Vyc3BhY2UgZGV0ZXJtaW5lcyB3aGljaCAKPiBwbGFuZXMgbmVlZCB0byBi ZSBzcGVjaWZpZWQgaGVyZSwgYW5kIHdlIGRvbid0IGRvY3VtZW50IHdoYXQgaGFwcGVucyBpZiBh IAo+IHBsYW5lIHVuZGVybmVhdGggdGhlIGRlc3RpbmF0aW9uIHBsYW5lIGlzIG5vdCBzcGVjaWZp ZWQgaW4gdGhlIG1hc2suIE1vcmUgCj4gcHJlY2lzZSBkb2N1bWVudGF0aW9uIGlzIG5lZWRlZCBp ZiB3ZSB3YW50IHRvIHVzZSBzdWNoIGEgcHJvcGVydHkuCj4gCj4gSXQgYWxzbyBzZWVtcyBxdWl0 ZSBjb21wbGV4LiBJcyBhbiBleHBsaWNpdCBwbGFuZSBtYXNrIHJlYWxseSB0aGUgYmVzdCBvcHRp b24gCj4gPyBXaGF0J3MgdGhlIHJlYXNvbiB3aHkgcGxhbmVzIGNvdWxkbid0IGJlIGhhbmRsZWQg PyBIb3cgZG8gZHJpdmVycyBkZXRlcm1pbmUgCj4gdGhhdCA/CgpHZW5lcmFsIGNvbW1lbnQ6IFRo aXMgaXMgd2h5IHdlIG5lZWQgdGhlIHJlZmVyZW5jZSB1c2Vyc3BhY2UuIEkgYWxzbwp0aGluayB0 aGF0IGFueSBmZWF0dXJlIHRocm93aW5nIHVwIHNvIG1hbnkgdHJpY2t5IHF1ZXN0aW9ucyBzaG91 bGQgY29tZQp3aXRoIGEgZnVsbCBzZXQgb2YgaWd0IHRlc3RjYXNlcy4gU2luY2UgdGhlIHJlZmVy ZW5jZSB1c2Vyc3BhY2UgY2Fubm90CmFuc3dlciBob3cgdGhlIG5ldyB1YXBpIHNob3VsZCB3b3Jr IGluIGFsbCBjb3JuZXItY2FzZXMgKGZhaWx1cmVzIGFuZApzdHVmZiBsaWtlIHRoYXQpLgotRGFu aWVsCgo+IAo+ID4gKyAqIGNvbG9ya2V5Lm1vZGU6Cj4gPiArICoJVGhlIG1vZGUgaXMgYW4gZW51 bWVyYXRlZCBwcm9wZXJ0eSB0aGF0IGNvbnRyb2xzIGhvdyBjb2xvciBrZXlpbmcKPiA+ICsgKglv cGVyYXRlcy4KPiAKPiBBIGxpbmsgdG8gdGhlIGRybV9wbGFuZV9jb2xvcmtleV9tb2RlIGVudW0g ZG9jdW1lbnRhdGlvbiB3b3VsZCBiZSB1c2VmdWwuCj4gCj4gPiArICogY29sb3JrZXkubWFzazoK PiA+ICsgKglUaGlzIHByb3BlcnR5IHNwZWNpZmllcyB0aGUgcGl4ZWwgY29tcG9uZW50cyBtYXNr LiBVbm1hc2tlZCBwaXhlbAo+ID4gKyAqCWNvbXBvbmVudHMgYXJlIG5vdCBwYXJ0aWNpcGF0aW5n IGluIHRoZSBtYXRjaGluZy4gVGhpcyBtYXNrIHZhbHVlIGlzCj4gPiArICoJYXBwbGllZCB0byBj b2xvcmtleS5taW4gLyBtYXggdmFsdWVzLiBUaGUgbWFzayB2YWx1ZSBpcyBnaXZlbiBpbiBhCj4g PiArICoJNjQtYml0IGludGVnZXIgaW4gQVJHQjE2MTYxNjE2IGZvcm1hdCwgd2hlcmUgQSBpcyB0 aGUgYWxwaGEgdmFsdWUgYW5kCj4gPiArICoJUiwgRyBhbmQgQiBjb3JyZXNwb25kIHRvIHRoZSBj b2xvciBjb21wb25lbnRzLiBEcml2ZXJzIHNoYWxsIGNvbnZlcnQKPiA+ICsgKglBUkdCMTYxNjE2 MTYgdmFsdWUgaW50byBhcHByb3ByaWF0ZSBmb3JtYXQgd2l0aGluIHBsYW5lcyBhdG9taWMgY2hl Y2suCj4gPiArICoKPiA+ICsgKglEcml2ZXJzIHJldHVybiBhbiBlcnJvciBmcm9tIHRoZWlyIHBs YW5lIGF0b21pYyBjaGVjayBpZiBtYXNrIGNhbid0IGJlCj4gPiArICoJaGFuZGxlZC4KPiA+ICsg Kgo+ID4gKyAqIGNvbG9ya2V5Lm1pbiwgY29sb3JrZXkubWF4Ogo+ID4gKyAqCVRoZXNlIHR3byBw cm9wZXJ0aWVzIHNwZWNpZnkgdGhlIGNvbG9ycyB0aGF0IGFyZSB0cmVhdGVkIGFzIHRoZSBjb2xv cgo+ID4gKyAqCWtleS4gUGl4ZWwgd2hvc2UgdmFsdWUgaXMgaW4gdGhlIFttaW4sIG1heF0gcmFu Z2UgaXMgdGhlIGNvbG9yIGtleQo+ID4gKyAqCW1hdGNoaW5nIHBpeGVsLiBUaGUgbWluaW11bSBh bmQgbWF4aW11bSB2YWx1ZXMgYXJlIGV4cHJlc3NlZCBhcyBhCj4gPiArICoJNjQtYml0IGludGVn ZXIgaW4gQVJHQjE2MTYxNjE2IGZvcm1hdCwgd2hlcmUgQSBpcyB0aGUgYWxwaGEgdmFsdWUgYW5k Cj4gPiArICoJUiwgRyBhbmQgQiBjb3JyZXNwb25kIHRvIHRoZSBjb2xvciBjb21wb25lbnRzLiBE cml2ZXJzIHNoYWxsIGNvbnZlcnQKPiA+ICsgKglBUkdCMTYxNjE2MTYgdmFsdWUgaW50byBhcHBy b3ByaWF0ZSBmb3JtYXQgd2l0aGluIHBsYW5lcyBhdG9taWMgY2hlY2suCj4gPiArICoJVGhlIGNv bnZlcnRlZCB2YWx1ZSBzaGFsbCBiZSAqcm91bmRlZCB1cCogdG8gdGhlIG5lYXJlc3QgdmFsdWUu Cj4gPiArICoKPiA+ICsgKglXaGVuIGEgc2luZ2xlIGNvbG9yIGtleSBpcyBkZXNpcmVkIGluc3Rl YWQgb2YgYSByYW5nZSwgdXNlcnNwYWNlIHNoYWxsCj4gPiArICoJc2V0IHRoZSBtaW4gYW5kIG1h eCBwcm9wZXJ0aWVzIHRvIHRoZSBzYW1lIHZhbHVlLgo+ID4gKyAqCj4gPiArICoJRHJpdmVycyBy ZXR1cm4gYW4gZXJyb3IgZnJvbSB0aGVpciBwbGFuZSBhdG9taWMgY2hlY2sgaWYgcmFuZ2UgY2Fu J3QgYmUKPiA+ICsgKgloYW5kbGVkLgo+ID4gKyAqCj4gPiArICogUmV0dXJuczoKPiA+ICsgKiBa ZXJvIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIGVycm5vIG9uIGZhaWx1cmUuCj4gPiArICovCj4gCj4g V2hpbGUgeW91J3JlIGRlZmluaW5nIHRoZSBjb25jZXB0IG9mIHNvdXJjZSBhbmQgZGVzdGluYXRp b24gcGxhbmVzLCBpdCdzIG5vdCAKPiBjbGVhciBmcm9tIHRoZSBkb2N1bWVudGF0aW9uIGhvdyBh bGwgdGhpcyBtYXBzIHRvIHRoZSB1c3VhbCBzb3VyY2UgYW5kIAo+IGRlc3RpbmF0aW9uIGNvbG9y IGtleWluZyBjb25jZXB0cy4gSSB0aGluayB0aGF0IHNob3VsZCBiZSBkb2N1bWVudGVkIGFzIHdl bGwgCj4gb3IgdXNlcnMgd2lsbCBiZSBjb25mdXNlZC4gRXhhbXBsZXMgY291bGQgaGVscCBpbiB0 aGlzIGFyZWEuCj4gCj4gW3NuaXBdCj4gCj4gPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJt X3BsYW5lLmggYi9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+ID4gaW5kZXggOGExNTJkYzE2ZWE1 Li5hYjZhOTFlNmI1NGUgMTAwNjQ0Cj4gPiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fcGxhbmUuaAo+ ID4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX3BsYW5lLmgKPiAKPiBbc25pcF0KPiAKPiA+IEBAIC0z Miw2ICszMyw1MiBAQCBzdHJ1Y3QgZHJtX2NydGM7Cj4gPiAgc3RydWN0IGRybV9wcmludGVyOwo+ ID4gIHN0cnVjdCBkcm1fbW9kZXNldF9hY3F1aXJlX2N0eDsKPiA+IAo+ID4gKy8qKgo+ID4gKyAq IGVudW0gZHJtX3BsYW5lX2NvbG9ya2V5X21vZGUgLSB1YXBpIHBsYW5lIGNvbG9ya2V5IG1vZGUg ZW51bWVyYXRpb24KPiA+ICsgKi8KPiAKPiBJZiBpdCdzIHVBUEksIHNob3VsZCBpdCBiZSBtb3Zl ZCB0byBpbmNsdWRlL3VhcGkvZHJtLyA/Cj4gCj4gPiArZW51bSBkcm1fcGxhbmVfY29sb3JrZXlf bW9kZSB7Cj4gPiArCS8qKgo+ID4gKwkgKiBARFJNX1BMQU5FX0NPTE9SS0VZX01PREVfRElTQUJM RUQ6Cj4gPiArCSAqCj4gPiArCSAqIE5vIGNvbG9yIG1hdGNoaW5nIHBlcmZvcm1lZCBpbiB0aGlz IG1vZGUuCj4gCj4gRG8geW91IG1lYW4gIk5vIGNvbG9yIGtleWluZyIgPwo+IAo+ID4gKwkgKi8K PiA+ICsJRFJNX1BMQU5FX0NPTE9SS0VZX01PREVfRElTQUJMRUQsCj4gPiArCj4gPiArCS8qKgo+ ID4gKwkgKiBARFJNX1BMQU5FX0NPTE9SS0VZX01PREVfVFJBTlNQQVJFTlQ6Cj4gPiArCSAqCj4g PiArCSAqIERlc3RpbmF0aW9uIHBsYW5lIHBpeGVscyBhcmUgY29tcGxldGVseSB0cmFuc3BhcmVu dCBpbiBhcmVhcwo+ID4gKwkgKiB3aGVyZSBwaXhlbHMgb2YgYSBzb3VyY2UgcGxhbmUgYXJlIG1h dGNoaW5nIGEgZ2l2ZW4gY29sb3Iga2V5Cj4gPiArCSAqIHJhbmdlLCBpbiBvdGhlciBjYXNlcyBw aXhlbHMgb2YgYSBkZXN0aW5hdGlvbiBwbGFuZSBhcmUgdW5hZmZlY3RlZC4KPiAKPiBIb3cgZG8g d2UgaGFuZGxlIGhhcmR3YXJlIHRoYXQgcGVyZm9ybXMgY29uZmlndXJhYmxlIGNvbG9yIHJlcGxh Y2VtZW50IGluc3RlYWQgCj4gb2YgYSBmaXhlZCBmdWxseSB0cmFuc3BhcmVuY3kgPyBUaGF0IHdh cyBpbmNsdWRlZCBpbiBteSBvcmlnaW5hbCBwcm9wb3NhbCBhbmQgCj4gYXZhaWxhYmxlIGluIFIt Q2FyIGhhcmR3YXJlLgo+IAo+ID4gKwkgKiBJbiBhcmVhcyB3aGVyZSB0d28gb3IgbW9yZSBzb3Vy Y2UgcGxhbmVzIG92ZXJsYXAsIHRoZSB0b3Btb3N0Cj4gPiArCSAqIHBsYW5lIHRha2VzIHByZWNl ZGVuY2UuCj4gPiArCSAqLwo+ID4gKwlEUk1fUExBTkVfQ09MT1JLRVlfTU9ERV9UUkFOU1BBUkVO VCwKPiA+ICsKPiA+ICsJLyoqCj4gPiArCSAqIEBEUk1fUExBTkVfQ09MT1JLRVlfTU9ERVNfTlVN Ogo+ID4gKwkgKgo+ID4gKwkgKiBUb3RhbCBudW1iZXIgb2YgY29sb3Iga2V5aW5nIG1vZGVzLgo+ ID4gKwkgKi8KPiA+ICsJRFJNX1BMQU5FX0NPTE9SS0VZX01PREVTX05VTSwKPiAKPiBUaGlzIG9u ZSwgaG93ZXZlciwgc2hvdWxkbid0IGJlIHBhcnQgb2YgdGhlIHVBUEkgYXMgaXQgd2lsbCBjaGFu Z2Ugd2hlbiB3ZSAKPiB3aWxsIGFkZCBuZXcgbW9kZXMuCj4gCj4gPiArfTsKPiAKPiBbc25pcF0K PiAKPiA+IEBAIC03NzksNSArODQ2LDI5IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IGRybV9wbGFu ZSAqZHJtX3BsYW5lX2ZpbmQoc3RydWN0Cj4gPiBkcm1fZGV2aWNlICpkZXYsICNkZWZpbmUgZHJt X2Zvcl9lYWNoX3BsYW5lKHBsYW5lLCBkZXYpIFwKPiA+ICAJbGlzdF9mb3JfZWFjaF9lbnRyeShw bGFuZSwgJihkZXYpLT5tb2RlX2NvbmZpZy5wbGFuZV9saXN0LCBoZWFkKQo+ID4gCj4gPiArLyoq Cj4gPiArICogZHJtX2NvbG9ya2V5X2V4dHJhY3RfY29tcG9uZW50IC0gZ2V0IGNvbG9yIGtleSBj b21wb25lbnQgdmFsdWUKPiA+ICsgKiBAY2tleTY0OiA2NGJpdCBjb2xvciBrZXkgdmFsdWUKPiA+ ICsgKiBAY29tcF9uYW1lOiBuYW1lIG9mIDE2Yml0IGNvbG9yIGNvbXBvbmVudCB0byBleHRyYWN0 Cj4gPiArICogQG5iaXRzOiBzaXplIGluIGJpdHMgb2YgZXh0cmFjdGVkIGNvbXBvbmVudCB2YWx1 ZQo+ID4gKyAqCj4gPiArICogRXh0cmFjdCAxNmJpdCBjb2xvciBjb21wb25lbnQgb2YgQGNrZXk2 NCBnaXZlbiBieSBAY29tcF9uYW1lIChhbHBoYSwKPiA+IHJlZCwKPiA+ICsgKiBncmVlbiBvciBi bHVlKSBhbmQgY29udmVydCBpdCB0byBhbiB1bnNpZ25lZCBpbnRlZ2VyIHRoYXQgaGFzIGJpdC13 aWR0aAo+ID4gKyAqIG9mIEBuYml0cyAocmVzdWx0IGlzIHJvdW5kZWQtdXApLgo+ID4gKyAqLwo+ ID4gKyNkZWZpbmUgZHJtX2NvbG9ya2V5X2V4dHJhY3RfY29tcG9uZW50KGNrZXk2NCwgY29tcF9u YW1lLCBuYml0cykgXAo+ID4gKwlfX0RSTV9DS0VZX0NMQU1QKF9fRFJNX0NLRVlfQ09OVihja2V5 NjQsIGNvbXBfbmFtZSwgbmJpdHMpLCBuYml0cykKPiA+ICsKPiA+ICsjZGVmaW5lIF9fZHJtX2Nr ZXlfYWxwaGFfc2hpZnQJNDgKPiA+ICsjZGVmaW5lIF9fZHJtX2NrZXlfcmVkX3NoaWZ0CTMyCj4g PiArI2RlZmluZSBfX2RybV9ja2V5X2dyZWVuX3NoaWZ0CTE2Cj4gPiArI2RlZmluZSBfX2RybV9j a2V5X2JsdWVfc2hpZnQJMAo+ID4gKwo+ID4gKyNkZWZpbmUgX19EUk1fQ0tFWV9DT05WKGNrZXk2 NCwgY29tcF9uYW1lLCBuYml0cykgXAo+ID4gKwlESVZfUk9VTkRfVVAoKHUxNikoKGNrZXk2NCkg Pj4gX19kcm1fY2tleV8gIyMgY29tcF9uYW1lICMjIF9zaGlmdCksIFwKPiA+ICsJCSAgICAgMSA8 PCAoMTYgLSAobmJpdHMpKSkKPiAKPiBBcyB0aGUgZGl2aXNvciBpcyBhIHBvd2VyIG9mIHR3bywg Y291bGQgd2UgdXNlIG1hc2tpbmcgaW5zdGVhZCBvZiBhIGRpdmlzaW9uID8gCj4gT3IgZG8geW91 IGV4cGVjdCB0aGUgY29tcGlsZXIgdG8gb3B0aW1pemUgaXQgcHJvcGVybHkgPwo+IAo+ID4gKyNk ZWZpbmUgX19EUk1fQ0tFWV9DTEFNUCh2YWx1ZSwgbmJpdHMpIFwKPiA+ICsJbWluX3QodTE2LCAo dmFsdWUpLCAoMSA8PCAobmJpdHMpKSAtIDEpCj4gCj4gV291bGQgdGhlIGZvbGxvd2luZyBiZSBz aW1wbGVyIHRvIHJlYWQgYW5kIGEgYml0IG1vcmUgZWZmaWNpZW50IGFzIGl0IGF2b2lkcyAKPiB0 aGUgZGl2aXNpb24gPwo+IAo+IHN0YXRpYyBpbmxpbmUgdTE2IF9fZHJtX2NvbG9ya2V5X2V4dHJh Y3RfY29tcG9uZW50KHU2NCBja2V5NjQsIAo+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCBzaGlmdCwgCj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IG5iaXRz KQo+IHsgICAgICAgCj4gICAgICAgICB1MTYgbWFzayA9ICgxIDw8ICgxNiAtIG5iaXRzKSkgLSAx Owo+ICAgICAgICAgCj4gICAgICAgICByZXR1cm4gKCh1MTYpKGNrZXkgPj4gc2hpZnQpICsgbWFz aykgPj4gKDE2IC0gbmJpdHMpOwo+IH0KPiAKPiAjZGVmaW5lIGRybV9jb2xvcmtleV9leHRyYWN0 X2NvbXBvbmVudChja2V5NjQsIGNvbXBfbmFtZSwgbmJpdHMpIFwKPiAgICAgICAgIF9fZHJtX2Nv bG9ya2V5X2V4dHJhY3RfY29tcG9uZW50KGNrZXk2NCwgX19kcm1fY2tleV8gIyMgY29tcF9uYW1l ICMjIAo+IF9zaGlmdCwgbmJpdHMpCj4gCj4gPiAgI2VuZGlmCj4gCj4gLS0gCj4gUmVnYXJkcywK PiAKPiBMYXVyZW50IFBpbmNoYXJ0Cj4gCj4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KPiBkcmktZGV2ZWwgbWFpbGluZyBsaXN0Cj4gZHJpLWRl dmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCgotLSAKRGFuaWVsIFZldHRlcgpTb2Z0d2FyZSBF bmdpbmVlciwgSW50ZWwgQ29ycG9yYXRpb24KaHR0cDovL2Jsb2cuZmZ3bGwuY2gKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcg bGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==