From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [Intel-gfx] [PATCH v2 00/10] Color Manager Implementation Date: Tue, 14 Jul 2015 12:16:00 +0200 Message-ID: <20150714101600.GT3736@phenom.ffwll.local> References: <20150615065310.GC8341@phenom.ffwll.local> <55A376EC.8060807@xs4all.nl> <20150713091813.GW3736@phenom.ffwll.local> <55A38843.9090408@xs4all.nl> <20150713095444.GH3736@phenom.ffwll.local> <55A38EBC.5060201@xs4all.nl> <20150713140741.GJ3736@phenom.ffwll.local> <55A4C585.2070901@xs4all.nl> <20150714091117.GK3736@phenom.ffwll.local> <55A4D7E2.1000106@xs4all.nl> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <55A4D7E2.1000106@xs4all.nl> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Hans Verkuil Cc: annie.j.matheson@intel.com, jesse.barnes@intel.com, dri-devel@lists.freedesktop.org, vijay.a.purushothaman@intel.com, dhanya.p.r@intel.com, daniel.vetter@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gVHVlLCBKdWwgMTQsIDIwMTUgYXQgMTE6MzU6MzBBTSArMDIwMCwgSGFucyBWZXJrdWlsIHdy b3RlOgo+IE9uIDA3LzE0LzE1IDExOjExLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4gT24gVHVl LCBKdWwgMTQsIDIwMTUgYXQgMTA6MTc6MDlBTSArMDIwMCwgSGFucyBWZXJrdWlsIHdyb3RlOgo+ ID4+IE9uIDA3LzEzLzE1IDE2OjA3LCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+PiBPbiBNb24s IEp1bCAxMywgMjAxNSBhdCAxMjoxMTowOFBNICswMjAwLCBIYW5zIFZlcmt1aWwgd3JvdGU6Cj4g Pj4+PiBPbiAwNy8xMy8yMDE1IDExOjU0IEFNLCBEYW5pZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+ IE9uIE1vbiwgSnVsIDEzLCAyMDE1IGF0IDExOjQzOjMxQU0gKzAyMDAsIEhhbnMgVmVya3VpbCB3 cm90ZToKPiA+Pj4+Pj4gT24gMDcvMTMvMjAxNSAxMToxOCBBTSwgRGFuaWVsIFZldHRlciB3cm90 ZToKPiA+Pj4+Pj4+IE9uIE1vbiwgSnVsIDEzLCAyMDE1IGF0IDEwOjI5OjMyQU0gKzAyMDAsIEhh bnMgVmVya3VpbCB3cm90ZToKPiA+Pj4+Pj4+PiBPbiAwNi8xNS8yMDE1IDA4OjUzIEFNLCBEYW5p ZWwgVmV0dGVyIHdyb3RlOgo+ID4+Pj4+Pj4+PiBPbiBUdWUsIEp1biAwOSwgMjAxNSBhdCAwMTo1 MDo0OFBNICswMTAwLCBEYW1pZW4gTGVzcGlhdSB3cm90ZToKPiA+Pj4+Pj4+Pj4+IE9uIFRodSwg SnVuIDA0LCAyMDE1IGF0IDA3OjEyOjMxUE0gKzA1MzAsIEthdXNhbCBNYWxsYWRpIHdyb3RlOgo+ ID4+Pj4+Pj4+Pj4+IEZyb206IEthdXNhbCBNYWxsYWRpIDxLYXVzYWwuTWFsbGFkaUBpbnRlbC5j b20+Cj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBUaGlzIHBhdGNoIHNldCBhZGRzIGNvbG9y IG1hbmFnZXIgaW1wbGVtZW50YXRpb24gaW4gZHJtL2k5MTUgbGF5ZXIuCj4gPj4+Pj4+Pj4+Pj4g Q29sb3IgTWFuYWdlciBpcyBhbiBleHRlbnNpb24gaW4gaTkxNSBkcml2ZXIgdG8gc3VwcG9ydCBj b2xvciAKPiA+Pj4+Pj4+Pj4+PiBjb3JyZWN0aW9uL2VuaGFuY2VtZW50LiBWYXJpb3VzIEludGVs IHBsYXRmb3JtcyBzdXBwb3J0IHNldmVyYWwKPiA+Pj4+Pj4+Pj4+PiBjb2xvciBjb3JyZWN0aW9u IGNhcGFiaWxpdGllcy4gQ29sb3IgTWFuYWdlciBwcm92aWRlcyBhYnN0cmFjdGlvbgo+ID4+Pj4+ Pj4+Pj4+IG9mIHRoZXNlIHByb3BlcnRpZXMgYW5kIGFsbG93cyBhIHVzZXIgc3BhY2UgVUkgYWdl bnQgdG8gCj4gPj4+Pj4+Pj4+Pj4gY29ycmVjdC9lbmhhbmNlIHRoZSBkaXNwbGF5Lgo+ID4+Pj4+ Pj4+Pj4KPiA+Pj4+Pj4+Pj4+IFNvIEkgZGlkIGEgZmlyc3Qgcm91Z2ggcGFzcyBvbiB0aGUgQVBJ IGl0c2VsZi4gVGhlIGJpZyBxdWVzdGlvbiB0aGF0Cj4gPj4+Pj4+Pj4+PiBpc24ndCBzb2x2ZWQg YXQgdGhlIG1vbWVudCBpczogZG8gd2Ugd2FudCB0byB0cnkgdG8gZG8gZ2VuZXJpYyBLTVMKPiA+ Pj4+Pj4+Pj4+IHByb3BlcnRpZXMgZm9yIHByZS1MVVQgKyBtYXRyaXggKyBwb3N0LUxVVCBvciBu b3QuICJHZW5lcmljIiBoYXMgMyBsZXZlbHM6Cj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gICAx LyBHZW5lcmljIGZvciBhbGwgS01TIGRyaXZlcnMKPiA+Pj4+Pj4+Pj4+ICAgMi8gR2VuZXJpYyBm b3IgaTkxNSBzdXBwb3J0ZWQgcGxhdGZvbXMKPiA+Pj4+Pj4+Pj4+ICAgMy8gU3BlY2lmaWMgdG8g ZWFjaCBwbGF0Zm9ybQo+ID4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+IEF0IHRoaXMgcG9pbnQsIEkn bSBxdWl0ZSB0ZW1wdGVkIHRvIHNheSB3ZSBzaG91bGQgZ2l2ZSAxLyBhIHNob3QuIFdlCj4gPj4+ Pj4+Pj4+PiBzaG91bGQgYmUgYWJsZSB0byBoYXZlIHByZS1MVVQgKyBtYXRyaXggKyBwb3N0LUxV VCBvbiBDUlRDIG9iamVjdHMgYW5kCj4gPj4+Pj4+Pj4+PiBndWFyYW50ZWUgdGhhdCwgd2hlbiB0 aGUgZHJpdmVycyBleHBvc2Ugc3VjaCBwcm9wZXJ0aWVzLCB1c2VyIHNwYWNlIGNhbgo+ID4+Pj4+ Pj4+Pj4gYXQgbGVhc3QgZ2l2ZSA4IGJpdHMgTFVUICsgM3gzIG1hdHJpeCArIDggYml0cyBMVVQu Cj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gSXQgbWF5IGJlIHBvc3NpYmxlIHRvIHVzZSB0aGUg InRyeSIgdmVyc2lvbiBvZiB0aGUgYXRvbWljIGlvY3RsIHRvCj4gPj4+Pj4+Pj4+PiBleHBsb3Jl IHRoZSBzcGFjZSBvZiBwb3NzaWJpbGl0aWVzIGZyb20gYSBnZW5lcmljIHVzZXIgc3BhY2UgdG8g dXNlCj4gPj4+Pj4+Pj4+PiBiaWdnZXIgTFVUcyBhcyB3ZWxsLiBBIEhBTCBsYXllciAod2hpY2gg aXMgYWxyZWFkeSB0aGVyZSBpbiBzb21lIGJ1dCBub3QKPiA+Pj4+Pj4+Pj4+IGFsbCBPU2VzKSB3 b3VsZCBzdGlsbCBiZSBhYmxlIHRvIHVzZSB0aG9zZSBnZW5lcmljIHByb3BlcnRpZXMgdG8gbG9h ZAo+ID4+Pj4+Pj4+Pj4gInByZWNpc2lvbiBvcHRpbWl6ZWQiIExVVHMgd2l0aCBzb21lIGtub3ds ZWRnZSBvZiB0aGUgaGFyZHdhcmUuCj4gPj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+IFllYWgsIGltbyAx LyBzaG91bGQgYmUgZG9hYmxlLiBGb3IgdGhlIG1hdHJpeCB3ZSBzaG91bGQgYmUgYWJsZSB0byBi ZQo+ID4+Pj4+Pj4+PiBmdWxseSBnZW5lcmljIHdpdGggYSAxNi4xNiBmb3JtYXQuIEZvciBnYW1t YSBvbmUgb3B0aW9uIHdvdWxkIGJlIHRvIGhhdmUKPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IEkga25v dyBJIGFtIGxhdGUgcmVwbHlpbmcsIGFwb2xvZ2llcyBmb3IgdGhhdC4KPiA+Pj4+Pj4+Pgo+ID4+ Pj4+Pj4+IEkndmUgYmVlbiB3b3JraW5nIG9uIENTQyBzdXBwb3J0IGZvciBWNEwyIGFzIHdlbGwg KHN0aWxsIHdvcmsgaW4gcHJvZ3Jlc3MpCj4gPj4+Pj4+Pj4gYW5kIEkgd291bGQgbGlrZSB0byBh dCBsZWFzdCBlbmQgdXAgd2l0aCB0aGUgc2FtZSBsb3ctbGV2ZWwgZml4ZWQgcG9pbnQKPiA+Pj4+ Pj4+PiBmb3JtYXQgYXMgRFJNIHNvIHdlIGNhbiBzaGFyZSBtYXRyaXgvdmVjdG9yIGNhbGN1bGF0 aW9ucy4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+IEJhc2VkIG9uIG15IGV4cGVyaWVuY2VzIEkgaGF2 ZSBjb25jZXJucyBhYm91dCB0aGUgMTYuMTYgZm9ybWF0OiB0aGUgcHJlY2lzaW9uCj4gPj4+Pj4+ Pj4gaXMgcXVpdGUgbG93IHdoaWNoIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBzdWNoIHZhbHVlcyBh cmUgdXNlZCBpbiBtYXRyaXgKPiA+Pj4+Pj4+PiBtdWx0aXBsaWNhdGlvbnMuCj4gPj4+Pj4+Pj4K PiA+Pj4+Pj4+PiBJbiBhZGRpdGlvbiwgd2hpbGUgdGhlIHByZWNpc2lvbiBtYXkgYmUgc3VmZmlj aWVudCBmb3IgOCBiaXQgY29sb3IgY29tcG9uZW50Cj4gPj4+Pj4+Pj4gdmFsdWVzLCBJJ20gcHJl dHR5IHN1cmUgaXQgd2lsbCBiZSBpbnN1ZmZpY2llbnQgd2hlbiBkZWFsaW5nIHdpdGggMTIgb3Ig MTYgYml0Cj4gPj4+Pj4+Pj4gY29sb3IgY29tcG9uZW50cy4KPiA+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+ IEluIGVhcmxpZXIgdmVyc2lvbnMgb2YgbXkgQ1NDIGNvZGUgSSB1c2VkIGEgMTIuMjAgZm9ybWF0 LCBidXQgaW4gdGhlIGxhdGVzdCBJCj4gPj4+Pj4+Pj4gc3dpdGNoZWQgdG8gMzIuMzIuIFRoaXMg Zml0cyBuaWNlbHkgaW4gYSB1NjQgYW5kIGl0J3MgZWFzeSB0byBleHRyYWN0IHRoZQo+ID4+Pj4+ Pj4+IGludGVnZXIgYW5kIGZyYWN0aW9uYWwgcGFydHMuCj4gPj4+Pj4+Pj4KPiA+Pj4+Pj4+PiBJ ZiB0aGlzIGlzIGdvaW5nIHRvIGJlIGEgZ2VuZXJpYyBhbmQgZnV0dXJlIHByb29mIEFQSSwgdGhl biBteSBzdWdnZXN0aW9uCj4gPj4+Pj4+Pj4gd291bGQgYmUgdG8gaW5jcmVhc2UgdGhlIHByZWNp c2lvbiBvZiB0aGUgdW5kZXJseWluZyBkYXRhIHR5cGUuCj4gPj4+Pj4+Pgo+ID4+Pj4+Pj4gV2Ug ZGlzY3Vzc2VkIHRoaXMgYSBiaXQgbW9yZSBpbnRlcm5hbGx5IGFuZCBmaWd1cmVkIGl0IHdvdWxk IGJlIG5pY2UgdG8gaGF2ZSB0aGUgc2FtZQo+ID4+Pj4+Pj4gZml4ZWQgcG9pbnQgZm9yIGJvdGgg Q1NDIG1hdHJpeCBhbmQgTFVUL2dhbW1hIHRhYmxlcy4gQ3VycmVudCBjb25zZW5zdXMKPiA+Pj4+ Pj4+IHNlZW1zIHRvIGJlIHRvIGdvIHdpdGggOC4yNCBmb3IgYm90aC4gU2luY2UgTFVUcyBhcmUg ZmFpcmx5IGJpZyBJIHRoaW5rIGl0Cj4gPj4+Pj4+PiBtYWtlcyBzZW5zZSBpZiB3ZSB0cnkgdG8g YmUgbm90IHRvbyB3YXN0ZWZ1bCAod2hpbGUgc3RpbGwgZnV0dXJlLXByb29mCj4gPj4+Pj4+PiBv ZmMpLgo+ID4+Pj4+Pgo+ID4+Pj4+PiBUaGUgLjI0IHNob3VsZCBoYXZlIGVub3VnaCBwcmVjaXNp b24sIGJ1dCBJIGFtIHdvcnJpZWQgYWJvdXQgdGhlIDg6IHdoaWxlCj4gPj4+Pj4+IHRoaXMgd29y a3MgZm9yIDggYml0IGNvbXBvbmVudHMsIHlvdSBjYW4ndCB1c2UgaXQgdG8gcmVwcmVzZW50IHZh bHVlcwo+ID4+Pj4+Pj4gMjU1LCB3aGljaCBtaWdodCBiZSBuZWVkZWQgKG5vdyBvciBpbiB0aGUg ZnV0dXJlKSBmb3IgMTAsIDEyIG9yIDE2IGJpdAo+ID4+Pj4+PiBjb2xvciBjb21wb25lbnRzLgo+ ID4+Pj4+Pgo+ID4+Pj4+PiBJdCdzIHdoeSBJIGVuZGVkIHVwIHdpdGggMzIuMzI6IGl0J3MgdmVy eSBnZW5lcmljIHNvIHVzYWJsZSBmb3Igb3RoZXIKPiA+Pj4+Pj4gdGhpbmdzIGJlc2lkZXMgQ1ND Lgo+ID4+Pj4+Pgo+ID4+Pj4+PiBOb3RlIHRoYXQgOC4yNCBpcyByZWFsbHkgNy4yNCArIG9uZSBz aWduIGJpdC4gU28gMjU1IGNhbid0IGJlIHJlcHJlc2VudGVkCj4gPj4+Pj4+IGluIHRoaXMgZm9y bWF0Lgo+ID4+Pj4+Pgo+ID4+Pj4+PiBUaGF0IHNhaWQsIGFsbCB2YWx1ZXMgSSdtIHdvcmtpbmcg d2l0aCBpbiBteSBjdXJyZW50IGNvZGUgYXJlIHNtYWxsIGludGVnZXJzCj4gPj4+Pj4+IChzYXkg YmV0d2VlbiAtNCBhbmQgNCB3b3JzdCBjYXNlKSwgc28gOC4yNCB3b3VsZCB3b3JrLiBCdXQgSSBh bSBub3QgYXQgYWxsCj4gPj4+Pj4+IGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgZnV0dXJlIHByb29m LiBNeSBndXQgZmVlbGluZyBpcyB0aGF0IHlvdSBuZWVkIHRvIGJlCj4gPj4+Pj4+IGFibGUgdG8g cmVwcmVzZW50IGF0IGxlYXN0IHRoZSBtYXggY29tcG9uZW50IHZhbHVlICsgYSBzaWduIGJpdCAr IDcgZGVjaW1hbHMKPiA+Pj4+Pj4gcHJlY2lzaW9uLiBXaGljaCBtYWtlcyAxNy4yNC4KPiA+Pj4+ Pgo+ID4+Pj4+IFRoZSBpZGVhIGlzIHRvIHN0ZWFsIGZyb20gR0wgYW5kIGFsd2F5cyBub3JtYWxp emUgZXZlcnl0aGluZyB0byBbMC4wLAo+ID4+Pj4+IDEuMF0sIGlycmVzcGVjdGl2ZSBvZiB0aGUg c291cmNlIGNvbG9yIGZvcm1hdC4gV2UgbmVlZCB0aGF0IGluIGRybSBzaW5jZQo+ID4+Pj4+IGlm IHlvdSBibGVuZCB0b2dldGhlciBwbGFuZXMgd2l0aCBkaWZmZXJlbnQgZm9ybWF0cyBpdCdzIGNv bXBsZXRlbHkKPiA+Pj4+PiB1bmRlZmluZWQgd2hpY2ggb25lIHlvdSBzaG91bGQgcGljay4gOCBi aXRzIG9mIHByZWNpc2lvbiBmb3IgdmFsdWVzIG91dCBvZgo+ID4+Pj4+IHJhbmdlIHNob3VsZCBi ZSBlbm91Z2ggOy0pCj4gPj4+Pgo+ID4+Pj4gVGhhdCBkb2Vzbid0IHJlYWxseSBoZWxwIG11Y2gs IHVzaW5nIGEgWzAtMV0gcmFuZ2UganVzdCBtZWFucyB0aGF0IHlvdSBuZWVkCj4gPj4+PiBtb3Jl IHByZWNpc2lvbiBmb3IgdGhlIGZyYWN0aW9uIHNpbmNlIHRoZSBpbnRlZ2VyIHByZWNpc2lvbiBp cyBub3cgYWRkZWQgdG8KPiA+Pj4+IHRoZSBmcmFjdGlvbmFsIHByZWNpc2lvbi4KPiA+Pj4+Cj4g Pj4+PiBTbyBmb3IgMTYtYml0IGNvbG9yIGNvbXBvbmVudHMgdGhlIDguMjQgZm9ybWF0IHdpbGwg bGVhdmUgeW91IHdpdGggb25seSA4IGJpdHMKPiA+Pj4+IHByZWNpc2lvbiBpZiB5b3Ugc2NhbGUg ZWFjaCBjb21wb25lbnQgdG8gdGhlIFswLTFdIHJhbmdlLiBUaGF0J3Mgc2xpZ2h0bHkgbW9yZQo+ ID4+Pj4gdGhhbiAyIGRlY2ltYWxzLiBJIGRvbid0IGJlbGlldmUgdGhhdCBpcyBlbm91Z2guIElm IHlvdSBkbyBhIGdhbW1hIHRhYmxlIGxvb2t1cAo+ID4+Pj4gYW5kIHRoZW4gZmVlZCB0aGUgcmVz dWx0IHRvIGEgQ1NDIG1hdHJpeCB5b3UgbmVlZCBtb3JlIHByZWNpc2lvbiBpZiB5b3Ugd2FudAo+ ID4+Pj4gdG8gZ2V0IGFjY3VyYXRlIHJlc3VsdHMuCj4gPj4+Cj4gPj4+IEhtLCB3aHkgZG8gd2Ug bmVlZCA4IGJpdHMgbW9yZSBwcmVjaXNpb24gdGhhbiBzb3VyY2UgZGF0YT8gQXQgbGVhc3QgaW4g dGhlCj4gPj4+IGludGVsIGh3IEkndmUgc2VlbiB0aGUgbW9zdCBiaXRzIHdlIGNhbiBzdHVmZiBp bnRvIHRoZSBodyBpcyAwLjEyIChhZ2Fpbgo+ID4+PiBmb3IgcmVzY2FsZWQgcmFuZ2UgdG8gMC4w LTEuMCkuIDI0IGJpdHMgbWVhbnMgYXMtaXMgd2UnbGwgdGhyb3cgMTIgYml0cwo+ID4+PiBhd2F5 LiBXaGF0IHdvdWxkIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBiaXRzIGZvcj8KPiA+Pgo+ID4+IFRo ZSBpbnRlbCBoYXJkd2FyZSB1c2VzIDEyIGJpdHMgdG9kYXksIGJ1dCB3aGF0IGFib3V0IHRoZSBu ZXh0LWdlbj8gSWYgeW91IGFyZQo+ID4+IGRlZmluaW5nIGFuIEFQSSBhbmQgZGF0YSB0eXBlIGp1 c3QgZm9yIHRoZSBoYXJkd2FyZSB0aGUga2VybmVsIHN1cHBvcnRzIHRvZGF5LAo+ID4+IHRoZW4g MTIgYml0cyBtaWdodCBiZSBlbm91Z2ggcHJlY2lzaW9uLiBJZiB5b3Ugd2FudCB0byBiZSBmdXR1 cmUgcHJvb2YgdGhlbiB5b3UKPiA+PiBuZWVkIHRvIGJlIHByZXBhcmVkIGZvciBtb3JlIGNhcGFi bGUgZnV0dXJlIGhhcmR3YXJlLgo+ID4+Cj4gPj4gU28gMC4xMiB3aWxsIG9idmlvdXNseSBub3Qg YmUgZW5vdWdoIGlmIHlvdSB3YW50IHRvIHN1cHBvcnQgMTYgYml0IGNvbG9yIGNvbXBvbmVudHMK PiA+PiBpbiB0aGUgZnV0dXJlLgo+ID4+Cj4gPj4gSW4gYWRkaXRpb24sIHRvIGZ1bGx5IHN1cHBv cnQgSFcgY29sb3JzcGFjZSBjb252ZXJzaW9uIChlLmcuIHNSR0IgdG8gUmVjLjcwOSkgd2hlcmUK PiA+PiBsb29rdXAgdGFibGVzIGFyZSB1c2VkIGZvciBpbXBsZW1lbnRpbmcgdGhlIHRyYW5zZmVy IGZ1bmN0aW9ucyAobm9ybWFsIGFuZCBpbnZlcnNlKSwKPiA+PiB0aGVuIHlvdSBuZWVkIG1vcmUg cHJlY2lzaW9uIHRoZW4ganVzdCB0aGUgbnVtYmVyIG9mIGJpdHMgcGVyIGNvbXBvbmVudCBvciB5 b3Ugd2lsbAo+ID4+IGdldCBxdWl0ZSBsYXJnZSBlcnJvcnMgaW4gdGhlIGNhbGN1bGF0aW9uLgo+ ID4+Cj4gPj4gSXQgYWxsIGRlcGVuZHMgaG93IGEgTFVUIGlzIHVzZWQ6IGlmIHRoZSB2YWx1ZSBm cm9tIHRoZSBMVVQgaXMgdGhlICdmaW5hbCcgdmFsdWUsCj4gPj4gdGhlbiB5b3UgZG9uJ3QgbmVl ZCBtb3JlIHByZWNpc2lvbiB0aGFuIHRoZSBudW1iZXIgb2YgYml0cyBvZiBhIGNvbG9yIGNvbXBv bmVudC4gQnV0Cj4gPj4gaWYgaXQgaXMgdXNlZCBpbiBvdGhlciBjYWxjdWxhdGlvbnMgKDN4MyBt YXRyaWNlcywgZnVsbC9saW1pdGVkIHJhbmdlIHNjYWxpbmcsIGV0YyksCj4gPj4gdGhlbiB0aGUg TFVUIHNob3VsZCBwcm92aWRlIG1vcmUgYml0cyBwcmVjaXNpb24uCj4gPj4KPiA+PiBXaGljaCBz ZWVtcyB0byBiZSB0aGUgY2FzZSB3aXRoIEludGVsIGhhcmR3YXJlOiAxMiBiaXRzIGlzIDQgYml0 cyBtb3JlIHRoYW4gdGhlIDggYml0cwo+ID4+IHBlciBjb21wb25lbnQgaXQgcHJvYmFibHkgdXNl cy4KPiA+IAo+ID4gSW50ZWwgaHcgc3VwcG9ydHMgYSAxMmJwcCBwaXhlbCBwaXBlbGluZS4gVGhl eSBkaWRudCBhZGQgX2FueV8gYWRkaXRpb25hbAo+ID4gcHJlY2lzaW9uIGF0IGFsbCBhZmFpay4g V2hpY2ggaXMgd2h5IEkgd29uZGVyIHdoeSB3ZSBuZWVkIGl0LiBJJ20gYWxzbyBub3QKPiA+IGF3 YXJlIG9mIGFueSBwbGFucyBmb3IgcHVzaGluZyBwYXN0IDEyYnBwIG9mIGRhdGEgc2VudCB0byB0 aGUgc2luaywgYnV0IEkKPiA+IGhvbmVzdGx5IGRvbid0IGhhdmUgbXVjaCBjbHVlIHJlYWxseS4K PiA+IAo+ID4gSSBndWVzcyBpbnB1dCBpcyBhIGRpZmZlcmVudCBzdG9yeSwgdG9kYXlzIGNtb3Mg YWxyZWFkeSBlYXNpbHkgdG8gMTRiaXQKPiA+IHdpdGggbW9yZSB0byBjb21lIEkgZ3Vlc3Mgd2l0 aCBhbGwgdGhlIG5vaXNlIGFib3V0IEhEUi4gV2UgcHJvYmFibHkgbmVlZAo+ID4gbW9yZSBoZWFk cm9vbSBvbiB2NGwgaW5wdXQgc2lkZSB0aGFuIHdlIGV2ZXIgbmVlZCBvbiBkcm0gZGlzcGxheSBz aWRlLgo+ID4gU3RpbGwgMjRiaXRzIGlzIGFuIGF3ZnVsIGxvdCBvZiBoZWFkcm9vbSwgYXQgbGVh c3QgZm9yIHRoZSBuZXh0IGZldyB5ZWFycy4KPiA+IE9yIGRvIHlvdSBleHBlY3QgdG8gaGl0IHRo YXQgYWxyZWFkeSBzb29uaXNoIG9uIHY0bCBzaWRlPwo+IAo+IEkgdGhpbmsgMjQgYml0cyBwcmVj aXNpb24gaXMgZW5vdWdoLCBidXQgdGhhdCBhc3N1bWVzIHRoYXQgdGhlIGludGVnZXIgcGFydAo+ IHdpbGwgYmUgYmV0d2VlbiAtMTI4IGFuZCAxMjcuIEFuZCBJIGFtIG5vdCBzbyBzdXJlIHRoYXQg dGhhdCBpcyBhIHZhbGlkIGFzc3VtcHRpb24uCgpUaGUgaWRlYSBpcyBhbHdheXMgdGhhdCB5b3Un ZCBub3JtYWxpemUgdG8gMC4wLTEuMCBvZiB0aGUgcmFuZ2UgZ29pbmcgb3Zlcgp0aGUgd2lyZSB0 byB0aGUgc2luay4gVGhlIDcgYml0cyBvZiBoZWFkcm9vbSBpcyBqdXN0IGZvciBzbW9vdGhlciBj bGFtcGluZwp3aGVuIHlvdXIgY29sb3JzcGFjZXMgZG9uJ3QgbWF0Y2ggdXAuIFRoZSBtb3N0IEkn dmUgc2VlbiBpbiBpbnRlbCBodyBpcyAzCmFkZGl0aW9uYWwgYml0cyB1c2VkIHRoZXJlLgo+IAo+ IEl0J3MgdHJ1ZSB0b2RheSwgYnV0IHdoYXQgaWYgeW91IGhhdmUgYSBIVyBMVVQgdGhhdCBtYXBz IGludGVnZXIgdmFsdWVzIGFuZCBleHBlY3RzCj4gMTYuMCBvciBwZXJoYXBzIDEyLjQ/Cj4gCj4g QlRXLCBJIGFtIGFzc3VtaW5nIHRoYXQgdGhlIHByb3Bvc2VkIDguMjQgZm9ybWF0IGlzIGEgc2ln bmVkIGZvcm1hdDogdGhlIENTQwo+IDN4MyBtYXRyaWNlcyBjb250YWluIG5lZ2F0aXZlIHZhbHVl cywgc28gYW55IGZpeGVkIHBvaW50IGRhdGEgdHlwZSBoYXMgdG8gYmUgc2lnbmVkLgoKWWVhaCwg aXQncyBzOC4yNCByZWFsbHkuIFdlIGRlZmluaXRlbHkgbmVlZCBhIHNpZ25lZCBpbnRlZ2VyIHBh cnQsIGFncmVlZApvbiB0aGF0LgoKPiBJJ20ganVzdCB3b25kZXJpbmc6IGlzIGl0IHJlYWxseSBz dWNoIGEgYmlnIGRlYWwgdG8gdXNlIGEgMzIuMzIgZm9ybWF0PyBZZXMsIHRoZQo+IGFtb3VudCBv ZiBkYXRhIGRvdWJsZXMsIGJ1dCBpdCdzIHF1aXRlIHJhcmUgdGhhdCB5b3UgbmVlZCB0byBjb25m aWd1cmUgYSBMVVQsIHJpZ2h0Pwo+IAo+IEZvciBhIDEyIGJpdCBMVVQgaXQncyAxNiBrQiB2cyAz MiBrQi4gWWVzLCBpdCdzIG1vcmUgZGF0YSwgYnV0IHRoZSBhZHZhbnRhZ2UgaXMgdGhhdAo+IHRo ZSBkYXRhIHR5cGUgaXMgZnV0dXJlIHByb29mICh3ZWxsLCBwcm9iYWJseSA6LSkgKSBhbmQgbXVj aCBtb3JlIGxpa2VseSB0byBiZSB1c2FibGUKPiBpbiBvdGhlciBzdWJzeXN0ZW1zLgoKV2UgbmVl ZCB0byBiYXNoIHRoaXMgc3R1ZmYgaW50byBodyB1bmRlciBzcGluX2xvY2tfaXJxc2F2ZSBpbiBp OTE1LiBZZWFoCnByb3BzIHRvIG91ciBodyBlbmdpbmVlcnMgZm9yIHNjcmV3aW5nIHRoaW5ncyB1 cCwgYnV0IEknZCBsaWtlIHRvIG5vdCBiZQp0b28gd2FzdGVmdWwuIEJ1dCBvdG9oIHRoZSBtbWlv cyB3aWxsIHRvdGFsbHkgc3dhbXAgYW55IGtpbmQgb2YgbWVtb3J5CmxvYWRzIHdlJ3JlIGRvaW5n LgoKVGhlIG90aGVyIGJpdCBpcyB0aGF0IG91ciBhbmRyb2lkIGZvbGtzIGFyZSBhIGJpdCBvdmVy IHRoZSB0b3Agd2l0aApyZWR1Y2luZyBvdmVyaGVhZCBzb21ldGltZXMsIGUuZy4gdGhleSBkb24n dCBsaWtlIGtlZXBpbmcgYXJvdW5kCm1ldGFkYXRhLW9ubHkgZHJtX2ZyYW1lYnVmZmVyIG9iamVj dHMgZm9yIHhyZ2IgdnMuIGFyZ2IgYmVjYXVzZSBpdCB0YWtlcwphd2F5IGEgZmV3IGJ5dGVzIDst KQoKPiA+PiBJIHdvdWxkIGd1ZXNzIHRoYXQgYSBMVVQgc3VwcG9ydGluZyAxNiBiaXQgY29sb3Ig Y29tcG9uZW50cyB3b3VsZCBuZWVkIGEgcHJlY2lzaW9uCj4gPj4gb2YgMC4yMCBvciBzbyAoYXNz dW1pbmcgdGhlIHJlc3VsdGluZyB2YWx1ZXMgYXJlIHVzZWQgaW4gZnVydGhlciBjYWxjdWxhdGlv bnMpLgo+ID4+Cj4gPj4gSGlnaCBkeW5hbWljIHJhbmdlIHZpZGVvIHdpbGwgYmUgYW4gaW1wb3J0 YW50IGRyaXZpbmcgZm9yY2UgdG93YXJkcyBoaWdoZXIgYml0IGRlcHRocwo+ID4+IGFuZCBhY2N1 cmF0ZSBjb2xvciBoYW5kbGluZywgc28geW91IGNhbiBleHBlY3QgdG8gc2VlIHRoaXMgYmVjb21l IG11Y2ggbW9yZSBpbXBvcnRhbnQKPiA+PiBpbiB0aGUgY29taW5nIHllYXJzLgo+ID4+Cj4gPj4g QW5kIGFzIEkgbWVudGlvbmVkIGFub3RoZXIgY29uc2lkZXJhdGlvbiBpcyB0aGF0IHRoaXMgZml4 ZWQgcG9pbnQgZGF0YSB0eXBlIG1pZ2h0Cj4gPj4gYmUgdXNlZnVsIGVsc2V3aGVyZSBpbiB0aGUg a2VybmVsIHdoZXJlIHlvdSBuZWVkIHRvIGRvIHNvbWUgcHJlY2lzaW9uIGFyaXRobWV0aWMuCj4g Pj4gU28gdXNpbmcgYSBzdGFuZGFyZCB0eXBlIHRoYXQgYW55b25lIGNhbiB1c2Ugd2l0aCBmdW5j dGlvbnMgaW4gbGliLyB0byBkbyBiYXNpYwo+ID4+IG9wZXJhdGlvbnMgY2FuIGJlIHZlcnkgdXNl ZnVsIGluZGVlZCBiZXlvbmQganVzdCBEUk0gYW5kIFY0TDIuCj4gPiAKPiA+IDAuMjAgd291bGQg c3RpbGwgY29tZm9ydGFibHkgZml0IGludG8gOC4yNC4gQW5kIHllYWggd29yc3QtY2FzZSAoaW4g MTAKPiA+IHllYXJzIG9yIHNvKSB3ZSBuZWVkIHRvIGFkZCBhIGhpZ2gtYnBwIHZhcmlhbnQgaWYg aXQgcmVhbGx5IGNvbWVzIHRvIGl0Lgo+IAo+IEkgdGhpbmsgdGhpcyBpcyBtdWNoIGNsb3NlciB0 aGFuIHlvdSB0aGluay4gSSBhZ3JlZSB0aGF0IHlvdSBhcmUgbm90IGxpa2VseSB0byBzZWUKPiB0 aGlzIHNvb24gZm9yIGNvbnN1bWVyIGdyYXBoaWNzIGNhcmRzLCBidXQgZm9yIHByb2Zlc3Npb25h bCBlcXVpcG1lbnQgYW5kIGhpZ2gtZW5kCj4gY29uc3VtZXIgZWxlY3Ryb25pY3MgdGhpcyBpcyBh bm90aGVyIHN0b3J5Lgo+IAo+IEFuZCBpZiBpdCBpcyBiZWluZyBkb25lIGZvciBpbnB1dCwgdGhl biBvdXRwdXQgd2lsbCBuZWVkIGl0IGFzIHdlbGw6IGFmdGVyIGFsbCwKPiB3aGF0J3MgdGhlIHBv aW50IG9mIDE2LWJpdCBjb2xvciBjb21wb25lbnRzIGlmIHlvdSBjYW4ndCBkaXNwbGF5IGl0PyBX aGV0aGVyIEludGVsCj4gd2lsbCBzdXBwb3J0IGl0IGlzIGFub3RoZXIgbWF0dGVyLCBidXQgdGhl cmUgYXJlIG90aGVyIHZlbmRvcnMsIHlvdSBrbm93Li4uIDotKQoKSW5wdXQgaXMgZGlmZmVyZW50 IGJlY2F1c2Ugb2YgcG9zdC1wcm9jZXNzaW5nIC0geW91IG5lZWQgdGhhdCBtdWNoIGRlcHRoCnRv IGJlIGFibGUgdG8gZ2V0IHVzZWZ1bCBkYXRhIG91dCBvZiB0aGUgZGFyayBhcmVhcywgd2l0aG91 dCB0aGUgcmlzayBmb3IKdGhlIGhpZ2hsaWdodHMgdG8gY2xpcC4gV2hpbGUgcHJvY2Vzc2luZyB5 b3UgbmVlZCB0aGF0IGRlcHRoIHRvIGF2b2lkCmJhbmRpbmcgKGJlY2F1c2UgaW50ZWdlciBtYXRo IHN1Y2tzKS4gQnV0IHRiaCBJIGhhdmVuJ3Qgc2VlbiBhbnl0aGluZyBidXQKMTJicGMgKGFuZCB0 aG9zZSB1c3VhbGx5IHVzZSBkaXRoZXJlZCAxMGJwYyBwYW5lbHMgaW50ZXJuYWxseSkgYW55d2hl cmUKYW5kIHRoZSBjb21tb24gc2NyZWVucyB0b3Agb3V0IGF0IDEwYnBjLgoKU28gZnJvbSBteSBw b3Ygb2YgZHJtIHM4LjI0IHdpbGwgYmUgZW5vdWdoIGZvciBhIGxvbmcgdGltZSwgYnV0IGlmIHlv dSdyZQpjb252aW5jZWQgdGhhdCB0aGUgaW5wdXQgc2lkZSBuZWVkcyB0aGlzIHNvb24gSSBndWVz cyBpdCBtYWtlcyBzZW5zZSB0byBnbwp3aXRoIHRoZSBiaXQgbW9yZSBvdmVyaGVhZCBhbmQgMzIu MzIuIE90b2ggd2UnbGwgbmV2ZXIgbmVlZCAzMiBvZiBpbnRlZ2VyCnBhcnQgaWYgd2Ugbm9ybWFs aXplIHRvIDAuMC0xLjAsIGFuZCB0aGF0IG5vcm1hbGl6YXRpb24gaXMgcmVhbGx5CnNvbWV0aGlu ZyBJIHRoaW5rIHdlIHdhbnQuCi1EYW5pZWwKLS0gCkRhbmllbCBWZXR0ZXIKU29mdHdhcmUgRW5n aW5lZXIsIEludGVsIENvcnBvcmF0aW9uCmh0dHA6Ly9ibG9nLmZmd2xsLmNoCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxp c3QKZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwOi8vbGlzdHMuZnJlZWRlc2t0 b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==