From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [v11 1/4] drm: Add HDMI colorspace property Date: Fri, 8 Feb 2019 16:37:43 +0200 Message-ID: <20190208143743.GS20097@intel.com> References: <20190205181307.GV20097@intel.com> <20190207190324.GM20097@intel.com> <20190208125239.GQ20097@intel.com> <20190208133003.GR20097@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "Sharma, Shashank" Cc: "intel-gfx@lists.freedesktop.org" , "Syrjala, Ville" , "Lankhorst, Maarten" , "dri-devel@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org T24gRnJpLCBGZWIgMDgsIDIwMTkgYXQgMDc6MzY6MjRQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiBPbiAyLzgvMjAxOSA3OjAwIFBN LCBWaWxsZSBTeXJqw6Rsw6Qgd3JvdGU6Cj4gPiBPbiBGcmksIEZlYiAwOCwgMjAxOSBhdCAwNjoz NjozOVBNICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4+IFJlZ2FyZHMKPiA+Pgo+ ID4+IFNoYXNoYW5rCj4gPj4KPiA+PiBPbiAyLzgvMjAxOSA2OjIyIFBNLCBWaWxsZSBTeXJqw6Rs w6Qgd3JvdGU6Cj4gPj4+IE9uIEZyaSwgRmViIDA4LCAyMDE5IGF0IDEyOjM2OjI1UE0gKzAwMDAs IFNoYXJtYSwgU2hhc2hhbmsgd3JvdGU6Cj4gPj4+PiBSZWdhcmRzCj4gPj4+PiBTaGFzaGFuawo+ ID4+Pj4KPiA+Pj4+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQo+ID4+Pj4+IEZyb206IElu dGVsLWdmeCBbbWFpbHRvOmludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10g T24gQmVoYWxmIE9mCj4gPj4+Pj4gU2hhbmthciwgVW1hCj4gPj4+Pj4gU2VudDogRnJpZGF5LCBG ZWJydWFyeSA4LCAyMDE5IDU6NDUgUE0KPiA+Pj4+PiBUbzogVmlsbGUgU3lyasOkbMOkIDx2aWxs ZS5zeXJqYWxhQGxpbnV4LmludGVsLmNvbT4KPiA+Pj4+PiBDYzogaW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsgU3lyamFsYSwgVmlsbGUgPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPjsg ZHJpLQo+ID4+Pj4+IGRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgTGFua2hvcnN0LCBNYWFy dGVuIDxtYWFydGVuLmxhbmtob3JzdEBpbnRlbC5jb20+Cj4gPj4+Pj4gU3ViamVjdDogUmU6IFtJ bnRlbC1nZnhdIFt2MTEgMS80XSBkcm06IEFkZCBIRE1JIGNvbG9yc3BhY2UgcHJvcGVydHkKPiA+ Pj4+Pgo+ID4+Pj4+Pj4+Pj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+Pj4+Pj4+Pj4+ IEZyb206IFZpbGxlIFN5cmrDpGzDpCBbbWFpbHRvOnZpbGxlLnN5cmphbGFAbGludXguaW50ZWwu Y29tXQo+ID4+Pj4+Pj4+Pj4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgNSwgMjAxOSAxMDowMiBQ TQo+ID4+Pj4+Pj4+Pj4gVG86IFNoYW5rYXIsIFVtYSA8dW1hLnNoYW5rYXJAaW50ZWwuY29tPgo+ ID4+Pj4+Pj4+Pj4gQ2M6IGludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmc7Cj4gPj4+Pj4+ Pj4+PiBkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnOyBTeXJqYWxhLCBWaWxsZQo+ID4+ Pj4+Pj4+Pj4gPHZpbGxlLnN5cmphbGFAaW50ZWwuY29tPjsgTGFua2hvcnN0LCBNYWFydGVuCj4g Pj4+Pj4+Pj4+PiA8bWFhcnRlbi5sYW5raG9yc3RAaW50ZWwuY29tPgo+ID4+Pj4+Pj4+Pj4gU3Vi amVjdDogUmU6IFtJbnRlbC1nZnhdIFt2MTEgMS80XSBkcm06IEFkZCBIRE1JIGNvbG9yc3BhY2UK PiA+Pj4+Pj4+Pj4+IHByb3BlcnR5Cj4gPj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4gT24gVHVlLCBG ZWIgMDUsIDIwMTkgYXQgMDk6MzM6MzRQTSArMDUzMCwgVW1hIFNoYW5rYXIgd3JvdGU6Cj4gPj4+ Pj4+Pj4+Pj4gQ3JlYXRlIGEgbmV3IGNvbm5lY3RvciBwcm9wZXJ0eSB0byBwcm9ncmFtIGNvbG9y c3BhY2UgdG8gc2luayBkZXZpY2VzLgo+ID4+Pj4+Pj4+Pj4+IE1vZGVybiBzaW5rIGRldmljZXMg c3VwcG9ydCBtb3JlIHRoYW4gMSB0eXBlIG9mIGNvbG9yc3BhY2UgbGlrZQo+ID4+Pj4+Pj4+Pj4+ IDYwMSwgNzA5LCBCVDIwMjAgZXRjLiBUaGlzIGhlbHBzIHRvIHN3aXRjaCBiYXNlZCBvbiBjb250 ZW50Cj4gPj4+Pj4+Pj4+Pj4gdHlwZSB3aGljaCBpcyB0byBiZSBkaXNwbGF5ZWQuIFRoZSBkZWNp c2lvbiBsaWVzIHdpdGgKPiA+Pj4+Pj4+Pj4+PiBjb21wb3NpdG9ycyBhcyB0byBpbiB3aGljaCBz Y2VuYXJpb3MsIGEgcGFydGljdWxhciBjb2xvcnNwYWNlIHdpbGwgYmUgcGlja2VkLgo+ID4+Pj4+ Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gVGhpcyB3aWxsIGJlIGhlbHBmdWwgbW9zdGx5IHRvIHN3aXRj aCB0byBoaWdoZXIgZ2FtdXQKPiA+Pj4+Pj4+Pj4+PiBjb2xvcnNwYWNlcyBsaWtlCj4gPj4+Pj4+ Pj4+Pj4gQlQyMDIwIHdoZW4gdGhlIG1lZGlhIGNvbnRlbnQgaXMgZW5jb2RlZCBhcyBCVDIwMjAu IFRoZXJlYnkKPiA+Pj4+Pj4+Pj4+PiBnaXZpbmcgYSBnb29kIHZpc3VhbCBleHBlcmllbmNlIHRv IHVzZXJzLgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gVGhlIGV4cGVjdGF0aW9uIGZyb20g dXNlcnNwYWNlIGlzIHRoYXQgaXQgc2hvdWxkIHBhcnNlIHRoZSBFRElECj4gPj4+Pj4+Pj4+Pj4g YW5kIGdldCBzdXBwb3J0ZWQgY29sb3JzcGFjZXMuIFVzZSB0aGlzIHByb3BlcnR5IGFuZCBzd2l0 Y2ggdG8KPiA+Pj4+Pj4+Pj4+PiB0aGUgb25lIHN1cHBvcnRlZC4gU2luayBzdXBwb3J0ZWQgY29s b3JzcGFjZXMgc2hvdWxkIGJlCj4gPj4+Pj4+Pj4+Pj4gcmV0cmlldmVkIGJ5IHVzZXJzcGFjZSBm cm9tIEVESUQgYW5kIGRyaXZlciB3aWxsIG5vdCBleHBsaWNpdGx5Cj4gPj4+Pj4+Pj4+Pj4gZXhw b3NlCj4gPj4+Pj4+IHRoZW0uCj4gPj4+Pj4+Pj4+Pj4gQmFzaWNhbGx5IHRoZSBleHBlY3RhdGlv biBmcm9tIHVzZXJzcGFjZSBpczoKPiA+Pj4+Pj4+Pj4+PiAgICAtIFNldCB1cCBDUlRDIERFR0FN TUEvQ1RNL0dBTU1BIHRvIGNvbnZlcnQgdG8gc29tZSBzaW5rCj4gPj4+Pj4+Pj4+Pj4gICAgICBj b2xvcnNwYWNlCj4gPj4+Pj4+Pj4+Pj4gICAgLSBTZXQgdGhpcyBuZXcgcHJvcGVydHkgdG8gbGV0 IHRoZSBzaW5rIGtub3cgd2hhdCBpdAo+ID4+Pj4+Pj4+Pj4+ICAgICAgY29udmVydGVkIHRoZSBD UlRDIG91dHB1dCB0by4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IHYyOiBBZGRyZXNzZWQg TWFhcnRlbiBhbmQgVmlsbGUncyByZXZpZXcgY29tbWVudHMuIEVuaGFuY2VkIHRoZQo+ID4+Pj4+ Pj4+Pj4+IGNvbG9yc3BhY2UgZW51bSB0byBpbmNvcnBvcmF0ZSBib3RoIEhETUkgYW5kIERQIHN1 cHBvcnRlZAo+ID4+Pj4+PiBjb2xvcnNwYWNlcy4KPiA+Pj4+Pj4+Pj4+PiBBbHNvLCBhZGRlZCBh IGRlZmF1bHQgb3B0aW9uIGZvciBjb2xvcnNwYWNlLgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+ Pj4gdjM6IFJlbW92ZWQgQWRvYmUgcmVmZXJlbmNlcyBmcm9tIGVudW0gZGVmaW5pdGlvbnMgYXMg cGVyCj4gPj4+Pj4+Pj4+Pj4gVmlsbGUsIEhhbnMgVmVya3VpbCBhbmQgSm9uYXMgS2FybG1hbiBz dWdnZXN0aW9ucy4gQ2hhbmdlZAo+ID4+Pj4+Pj4+Pj4+IERlZmF1bHQgdG8gYW4gdW5zZXQgc3Rh dGUgd2hlcmUgZHJpdmVyIHdpbGwgYXNzaWduIHRoZQo+ID4+Pj4+Pj4+Pj4+IGNvbG9yc3BhY2Ug aXMgbm90IGNob3NlbiBieSB1c2VyLCBzdWdnZXN0ZWQgYnkgVmlsbGUgYW5kCj4gPj4+Pj4+Pj4+ Pj4gTWFhcnRlbi4gQWRkcmVzc2VkIG90aGVyIG1pc2MgcmV2aWV3IGNvbW1lbnRzIGZyb20gTWFh cnRlbi4KPiA+Pj4+Pj4+Pj4+PiBTcGxpdCB0aGUgY2hhbmdlcyB0byBoYXZlIHNlcGFyYXRlIGNv bG9yc3BhY2UgcHJvcGVydHkgZm9yIERQIGFuZCBIRE1JLgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+ Pj4+Pj4gdjQ6IEFkZHJlc3NlZCBDaHJpcyBhbmQgVmlsbGUncyByZXZpZXcgY29tbWVudHMsIGFu ZCBjcmVhdGVkIGEKPiA+Pj4+Pj4+Pj4+PiBjb21tb24gY29sb3JzcGFjZSBwcm9wZXJ0eSBmb3Ig RFAgYW5kIEhETUksIGZpbHRlcmVkIHRoZSBsaXN0Cj4gPj4+Pj4+Pj4+Pj4gYmFzZWQgb24gdGhl IGNvbG9yc3BhY2VzIHN1cHBvcnRlZCBieSB0aGUgcmVzcGVjdGl2ZSBwcm90b2NvbCBzdGFuZGFy ZC4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IHY1OiBNYWRlIHRoZSBwcm9wZXJ0eSBjcmVh dGlvbiBoZWxwZXIgYWNjZXB0IGVudW0gbGlzdCBiYXNlZCBvbgo+ID4+Pj4+Pj4+Pj4+IHBsYXRm b3JtIGNhcGFiaWx0aWVzIGFzIHN1Z2dlc3RlZCBieSBTaGFzaGFuay4gQ29uc29saWRhdGVkCj4g Pj4+Pj4+Pj4+Pj4gSERNSSBhbmQgRFAgcHJvcGVydHkgY3JlYXRpb24gaW4gdGhlIGNvbW1vbiBo ZWxwZXIuCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiB2NjogQWRkcmVzc2VkIFNoYXNoYW5r J3MgcmV2aWV3IGNvbW1lbnRzLgo+ID4+Pj4+Pj4+Pj4+Cj4gPj4+Pj4+Pj4+Pj4gdjc6IEFkZGVk IGRlZmluZXMgaW5zdGVhZCBvZiBlbnVtIGluIHVhcGkgYXMgcGVyIEJyaWFuCj4gPj4+Pj4+Pj4+ Pj4gU3RhcmtleSdzIHN1Z2dlc3Rpb24gaW4gb3JkZXIgdG8gZ28gd2l0aCBzdHJpbmcgbWF0Y2hp bmcgYXQgdXNlcnNwYWNlLgo+ID4+Pj4+Pj4+Pj4+IFVwZGF0ZWQgdGhlIGNvbW1pdCBtZXNzYWdl IHRvIGFkZCBtb3JlIGRldGFpbHMgYXMgd2VsbCBrZXJuZWwgZG9jcy4KPiA+Pj4+Pj4+Pj4+Pgo+ ID4+Pj4+Pj4+Pj4+IHY4OiBBZGRyZXNzZWQgTWFhcnRlbidzIHJldmlldyBjb21tZW50cy4KPiA+ Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IHY5OiBSZW1vdmVkIG1hY3JvIGRlZmluZXMgZnJvbSB1 YXBpIGFzIHBlciBCcmlhbiBTdGFya2V5IGFuZAo+ID4+Pj4+Pj4+Pj4+IERhbmllbCBTdG9uZSdz IGNvbW1lbnRzIGFuZCBtb3ZlZCB0byBkcm0gaW5jbHVkZSBmaWxlLiBNb3ZlZAo+ID4+Pj4+Pj4+ Pj4+IGJhY2sgdG8gb2xkZXIgZGVzaWduIHdpdGggZXhwb3NpbmcgYWxsIEhETUkgY29sb3JzcGFj ZXMgdG8KPiA+Pj4+Pj4+Pj4+PiB1c2Vyc3BhY2Ugc2luY2UgaW5mb2ZyYW1lIGNhcGFiaWxpdHkg aXMgdGhlcmUgZXZlbiBvbiBsZWdhY3kKPiA+Pj4+Pj4+Pj4+PiBwbGF0Zm9ybXMsIGFzIHBlciBW aWxsZSdzIHJldmlldyBjb21tZW50cy4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IHYxMDog Rml4ZWQgc3BhcnNlIHdhcm5pbmdzLCB1cGRhdGVkIHRoZSBSQiBmcm9tIE1hYXJ0ZW4gYW5kIEph bmkncyBhY2suCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiB2MTE6IEFkZHJlc3NlZCBWaWxs ZSdzIHJldmlldyBjb21tZW50cy4gVXBkYXRlZCB0aGUgTWFjcm8KPiA+Pj4+Pj4+Pj4+PiBuYW1p bmcgYW5kIGFkZGVkIERDSS1QMyBjb2xvcnNwYWNlIGFzIHdlbGwgZGVmaW5lZCBpbiBDRUEgODYx Lkcgc3BlYy4KPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFVtYSBT aGFua2FyIDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gPj4+Pj4+Pj4+Pj4gQWNrZWQtYnk6IEph bmkgTmlrdWxhIDxqYW5pLm5pa3VsYUBpbnRlbC5jb20+Cj4gPj4+Pj4+Pj4+Pj4gUmV2aWV3ZWQt Ynk6IFNoYXNoYW5rIFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiA+Pj4+Pj4+ Pj4+PiBSZXZpZXdlZC1ieTogTWFhcnRlbiBMYW5raG9yc3QKPiA+Pj4+Pj4+Pj4+PiA8bWFhcnRl bi5sYW5raG9yc3RAbGludXguaW50ZWwuY29tPgo+ID4+Pj4+Pj4+Pj4+IC0tLQo+ID4+Pj4+Pj4+ Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYyB8ICA0ICsrCj4gPj4+Pj4+ Pj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2RybV9jb25uZWN0b3IuYyAgIHwgNzgKPiA+Pj4+Pj4+ Pj4+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ID4+Pj4+Pj4+Pj4+ ICAgIGluY2x1ZGUvZHJtL2RybV9jb25uZWN0b3IuaCAgICAgICB8IDUwICsrKysrKysrKysrKysr KysrKysrKysrKysKPiA+Pj4+Pj4+Pj4+PiAgICAzIGZpbGVzIGNoYW5nZWQsIDEzMiBpbnNlcnRp b25zKCspCj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2RybV9hdG9taWNfdWFwaS5jCj4gPj4+Pj4+Pj4+Pj4gYi9kcml2ZXJzL2dwdS9kcm0v ZHJtX2F0b21pY191YXBpLmMKPiA+Pj4+Pj4+Pj4+PiBpbmRleCA5YTFmNDFhLi45YjVkNDRmIDEw MDY0NAo+ID4+Pj4+Pj4+Pj4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGku Ywo+ID4+Pj4+Pj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fYXRvbWljX3VhcGkuYwo+ ID4+Pj4+Pj4+Pj4+IEBAIC03NDYsNiArNzQ2LDggQEAgc3RhdGljIGludAo+ID4+Pj4+Pj4+Pj4+ IGRybV9hdG9taWNfY29ubmVjdG9yX3NldF9wcm9wZXJ0eShzdHJ1Y3QKPiA+Pj4+Pj4+Pj4+IGRy bV9jb25uZWN0b3IgKmNvbm5lY3RvciwKPiA+Pj4+Pj4+Pj4+PiAgICAJCQlyZXR1cm4gLUVJTlZB TDsKPiA+Pj4+Pj4+Pj4+PiAgICAJCX0KPiA+Pj4+Pj4+Pj4+PiAgICAJCXN0YXRlLT5jb250ZW50 X3Byb3RlY3Rpb24gPSB2YWw7Cj4gPj4+Pj4+Pj4+Pj4gKwl9IGVsc2UgaWYgKHByb3BlcnR5ID09 IGNvbm5lY3Rvci0+Y29sb3JzcGFjZV9wcm9wZXJ0eSkgewo+ID4+Pj4+Pj4+Pj4+ICsJCXN0YXRl LT5jb2xvcnNwYWNlID0gdmFsOwo+ID4+Pj4+Pj4+Pj4+ICAgIAl9IGVsc2UgaWYgKHByb3BlcnR5 ID09IGNvbmZpZy0+d3JpdGViYWNrX2ZiX2lkX3Byb3BlcnR5KSB7Cj4gPj4+Pj4+Pj4+Pj4gICAg CQlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9Cj4gPj4+Pj4+IGRybV9mcmFtZWJ1ZmZlcl9s b29rdXAoZGV2LAo+ID4+Pj4+Pj4+Pj4gTlVMTCwgdmFsKTsKPiA+Pj4+Pj4+Pj4+PiAgICAJCWlu dCByZXQgPQo+ID4+Pj4+PiBkcm1fYXRvbWljX3NldF93cml0ZWJhY2tfZmJfZm9yX2Nvbm5lY3Rv cihzdGF0ZSwKPiA+Pj4+Pj4+Pj4+IGZiKTsgQEAKPiA+Pj4+Pj4+Pj4+PiAtODE0LDYgKzgxNiw4 IEBAIHN0YXRpYyBpbnQKPiA+Pj4+Pj4+Pj4+PiBkcm1fYXRvbWljX2Nvbm5lY3Rvcl9zZXRfcHJv cGVydHkoc3RydWN0Cj4gPj4+Pj4+Pj4+PiBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IsCj4gPj4+ Pj4+Pj4+Pj4gICAgCQkqdmFsID0gc3RhdGUtPnBpY3R1cmVfYXNwZWN0X3JhdGlvOwo+ID4+Pj4+ Pj4+Pj4+ICAgIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbmZpZy0+Y29udGVudF90eXBlX3By b3BlcnR5KSB7Cj4gPj4+Pj4+Pj4+Pj4gICAgCQkqdmFsID0gc3RhdGUtPmNvbnRlbnRfdHlwZTsK PiA+Pj4+Pj4+Pj4+PiArCX0gZWxzZSBpZiAocHJvcGVydHkgPT0gY29ubmVjdG9yLT5jb2xvcnNw YWNlX3Byb3BlcnR5KSB7Cj4gPj4+Pj4+Pj4+Pj4gKwkJKnZhbCA9IHN0YXRlLT5jb2xvcnNwYWNl Owo+ID4+Pj4+Pj4+Pj4+ICAgIAl9IGVsc2UgaWYgKHByb3BlcnR5ID09IGNvbm5lY3Rvci0+c2Nh bGluZ19tb2RlX3Byb3BlcnR5KSB7Cj4gPj4+Pj4+Pj4+Pj4gICAgCQkqdmFsID0gc3RhdGUtPnNj YWxpbmdfbW9kZTsKPiA+Pj4+Pj4+Pj4+PiAgICAJfSBlbHNlIGlmIChwcm9wZXJ0eSA9PQo+ID4+ Pj4+Pj4+Pj4+IGNvbm5lY3Rvci0+Y29udGVudF9wcm90ZWN0aW9uX3Byb3BlcnR5KQo+ID4+Pj4+ Pj4+Pj4+IHsgZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMKPiA+ Pj4+Pj4+Pj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY29ubmVjdG9yLmMgaW5kZXggODQ3NTM5 Ni4uNDMwOTg3MyAxMDA2NDQKPiA+Pj4+Pj4+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2Nvbm5lY3Rvci5jCj4gPj4+Pj4+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9jb25u ZWN0b3IuYwo+ID4+Pj4+Pj4+Pj4+IEBAIC04MjYsNiArODI2LDMzIEBAIGludAo+ID4+Pj4+Pj4+ Pj4+IGRybV9kaXNwbGF5X2luZm9fc2V0X2J1c19mb3JtYXRzKHN0cnVjdAo+ID4+Pj4+Pj4+Pj4+ IGRybV9kaXNwbGF5X2luZm8gKmluZm8sICB9Owo+ID4+Pj4+Pj4+Pj4+IERSTV9FTlVNX05BTUVf Rk4oZHJtX2dldF9jb250ZW50X3Byb3RlY3Rpb25fbmFtZSwKPiA+Pj4+Pj4+Pj4+IGRybV9jcF9l bnVtX2xpc3QpCj4gPj4+Pj4+Pj4+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3Byb3BfZW51 bV9saXN0IGhkbWlfY29sb3JzcGFjZXNbXSA9IHsKPiA+Pj4+Pj4+Pj4+PiArCS8qIEZvciBEZWZh dWx0IGNhc2UsIGRyaXZlciB3aWxsIHNldCB0aGUgY29sb3JzcGFjZSAqLwo+ID4+Pj4+Pj4+Pj4+ ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9ERUZBVUxULCAiRGVmYXVsdCIgfSwKPiA+Pj4+Pj4+ Pj4+PiArCS8qIFN0YW5kYXJkIERlZmluaXRpb24gQ29sb3JpbWV0cnkgYmFzZWQgb24gQ0VBIDg2 MSAqLwo+ID4+Pj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9TTVBURV8xNzBNLCAi U01QVEVfMTcwTSIgfSwKPiA+Pj4+Pj4+Pj4+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfQlQ3 MDksICJCVDcwOSIgfSwKPiA+Pj4+Pj4+Pj4+PiArCS8qIFN0YW5kYXJkIERlZmluaXRpb24gQ29s b3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNCAqLwo+ID4+Pj4+Pj4+Pj4+ICsJeyBEUk1f TU9ERV9DT0xPUklNRVRSWV9YVllDQ182MDEsICJYVllDQ182MDEiIH0sCj4gPj4+Pj4+Pj4+Pj4g KwkvKiBIaWdoIERlZmluaXRpb24gQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNCAq Lwo+ID4+Pj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9YVllDQ183MDksICJYVllD Q183MDkiIH0sCj4gPj4+Pj4+Pj4+Pj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJRUMgNjE5 NjYtMi0xL0FtZW5kbWVudCAxICovCj4gPj4+Pj4+Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1F VFJZX1NZQ0NfNjAxLCAiU1lDQ182MDEiIH0sCj4gPj4+Pj4+Pj4+Pj4gKwkvKiBDb2xvcmltZXRy eSBiYXNlZCBvbiBJRUMgNjE5NjYtMi01IFszM10gKi8KPiA+Pj4+Pj4+Pj4+PiArCXsgRFJNX01P REVfQ09MT1JJTUVUUllfT1BZQ0NfNjAxLCAib3BZQ0NfNjAxIiB9LAo+ID4+Pj4+Pj4+Pj4+ICsJ LyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSUVDIDYxOTY2LTItNSAqLwo+ID4+Pj4+Pj4+Pj4+ICsJ eyBEUk1fTU9ERV9DT0xPUklNRVRSWV9PUFJHQiwgIm9wUkdCIiB9LAo+ID4+Pj4+Pj4+Pj4+ICsJ LyogQ29sb3JpbWV0cnkgYmFzZWQgb24gSVRVLVIgQlQuMjAyMCAqLwo+ID4+Pj4+Pj4+Pj4+ICsJ eyBEUk1fTU9ERV9DT0xPUklNRVRSWV9CVDIwMjBfWUNDLCAiQlQyMDIwX1lDQyIgfSwKPiA+Pj4+ Pj4+Pj4+PiArCS8qIENvbG9yaW1ldHJ5IGJhc2VkIG9uIElUVS1SIEJULjIwMjAgKi8KPiA+Pj4+ Pj4+Pj4+PiArCXsgRFJNX01PREVfQ09MT1JJTUVUUllfQlQyMDIwX1JHQiwgIkJUMjAyMF9SR0Ii IH0sCj4gPj4+Pj4+Pj4+Pj4gKwkvKiBDb2xvcmltZXRyeSBiYXNlZCBvbiBJVFUtUiBCVC4yMDIw ICovCj4gPj4+Pj4+Pj4+Pj4gKwl7IERSTV9NT0RFX0NPTE9SSU1FVFJZX0JUMjAyMF9DWUNDLCAi QlQyMDIwX0NZQ0MiIH0sCj4gPj4+Pj4+Pj4+Pj4gKwkvKiBBZGRlZCBhcyBwYXJ0IG9mIEFkZGl0 aW9uYWwgQ29sb3JpbWV0cnkgRXh0ZW5zaW9uIGluIDg2MS5HICovCj4gPj4+Pj4+Pj4+Pj4gKwl7 IERSTV9NT0RFX0NPTE9SSU1FVFJZX0RDSV9QM19SR0JfRDY1LCAiRENJLQo+ID4+Pj4+PiBQM19S R0JfRDY1IiB9LAo+ID4+Pj4+Pj4+Pj4+ICsJeyBEUk1fTU9ERV9DT0xPUklNRVRSWV9EQ0lfUDNf UkdCX1RIRUFURVIsICJEQ0ktCj4gPj4+Pj4+Pj4+PiBQM19SR0JfVGhlYXRlciIgfSwKPiA+Pj4+ Pj4+Pj4+PiArfTsKPiA+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4gICAgLyoqCj4gPj4+Pj4+ Pj4+Pj4gICAgICogRE9DOiBzdGFuZGFyZCBjb25uZWN0b3IgcHJvcGVydGllcwo+ID4+Pj4+Pj4+ Pj4+ICAgICAqCj4gPj4+Pj4+Pj4+Pj4gQEAgLTE1NDgsNiArMTU3NSw1NyBAQCBpbnQKPiA+Pj4+ Pj4+Pj4+PiBkcm1fbW9kZV9jcmVhdGVfYXNwZWN0X3JhdGlvX3Byb3BlcnR5KHN0cnVjdCBkcm1f ZGV2aWNlICpkZXYpCj4gPj4+Pj4+Pj4+Pj4gRVhQT1JUX1NZTUJPTChkcm1fbW9kZV9jcmVhdGVf YXNwZWN0X3JhdGlvX3Byb3BlcnR5KTsKPiA+Pj4+Pj4+Pj4+Pgo+ID4+Pj4+Pj4+Pj4+ICAgIC8q Kgo+ID4+Pj4+Pj4+Pj4+ICsgKiBET0M6IHN0YW5kYXJkIGNvbm5lY3RvciBwcm9wZXJ0aWVzCj4g Pj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4gKyAqIENvbG9yc3BhY2U6Cj4gPj4+Pj4+Pj4+ Pj4gKyAqICAgICBkcm1fbW9kZV9jcmVhdGVfY29sb3JzcGFjZV9wcm9wZXJ0eSAtIGNyZWF0ZSBj b2xvcnNwYWNlCj4gPj4+Pj4+IHByb3BlcnR5Cj4gPj4+Pj4+Pj4+Pj4gKyAqICAgICBUaGlzIHBy b3BlcnR5IGhlbHBzIHNlbGVjdCBhIHN1aXRhYmxlIGNvbG9yc3BhY2UgYmFzZWQgb24gdGhlIHNp bmsKPiA+Pj4+Pj4+Pj4+PiArICogICAgIGNhcGFiaWxpdHkuIE1vZGVybiBzaW5rIGRldmljZXMg c3VwcG9ydCB3aWRlciBnYW11dCBsaWtlIEJUMjAyMC4KPiA+Pj4+Pj4+Pj4+PiArICogICAgIFRo aXMgaGVscHMgc3dpdGNoIHRvIEJUMjAyMCBtb2RlIGlmIHRoZSBCVDIwMjAgZW5jb2RlZCB2aWRl bwo+ID4+Pj4+PiBzdHJlYW0KPiA+Pj4+Pj4+Pj4+PiArICogICAgIGlzIGJlaW5nIHBsYXllZCBi eSB0aGUgdXNlciwgc2FtZSBmb3IgYW55IG90aGVyIGNvbG9yc3BhY2UuIFRoZXJlYnkKPiA+Pj4+ Pj4+Pj4+PiArICogICAgIGdpdmluZyBhIGdvb2QgdmlzdWFsIGV4cGVyaWVuY2UgdG8gdXNlcnMu Cj4gPj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4gKyAqICAgICBUaGUgZXhwZWN0YXRpb24g ZnJvbSB1c2Vyc3BhY2UgaXMgdGhhdCBpdCBzaG91bGQgcGFyc2UgdGhlIEVESUQKPiA+Pj4+Pj4+ Pj4+PiArICogICAgIGFuZCBnZXQgc3VwcG9ydGVkIGNvbG9yc3BhY2VzLiBVc2UgdGhpcyBwcm9w ZXJ0eSBhbmQgc3dpdGNoIHRvIHRoZQo+ID4+Pj4+Pj4+Pj4+ICsgKiAgICAgb25lIHN1cHBvcnRl ZC4gU2luayBzdXBwb3J0ZWQgY29sb3JzcGFjZXMgc2hvdWxkIGJlIHJldHJpZXZlZCBieQo+ID4+ Pj4+Pj4+Pj4+ICsgKiAgICAgdXNlcnNwYWNlIGZyb20gRURJRCBhbmQgZHJpdmVyIHdpbGwgbm90 IGV4cGxpY2l0bHkgZXhwb3NlIHRoZW0uCj4gPj4+Pj4+Pj4+Pj4gKyAqCj4gPj4+Pj4+Pj4+Pj4g KyAqICAgICBCYXNpY2FsbHkgdGhlIGV4cGVjdGF0aW9uIGZyb20gdXNlcnNwYWNlIGlzOgo+ID4+ Pj4+Pj4+Pj4+ICsgKiAgICAgIC0gU2V0IHVwIENSVEMgREVHQU1NQS9DVE0vR0FNTUEgdG8gY29u dmVydCB0byBzb21lIHNpbmsKPiA+Pj4+Pj4+Pj4+PiArICogICAgICAgIGNvbG9yc3BhY2UKPiA+ Pj4+Pj4+Pj4+PiArICogICAgICAtIFNldCB0aGlzIG5ldyBwcm9wZXJ0eSB0byBsZXQgdGhlIHNp bmsga25vdyB3aGF0IGl0Cj4gPj4+Pj4+Pj4+Pj4gKyAqICAgICAgICBjb252ZXJ0ZWQgdGhlIENS VEMgb3V0cHV0IHRvLgo+ID4+Pj4+Pj4+Pj4+ICsgKiAgICAgIC0gVGhpcyBwcm9wZXJ0eSBpcyBq dXN0IHRvIGluZm9ybSBzaW5rIHdoYXQgY29sb3JzcGFjZQo+ID4+Pj4+Pj4+Pj4+ICsgKiAgICAg ICAgc291cmNlIGlzIHRyeWluZyB0byBkcml2ZS4KPiA+Pj4+Pj4+Pj4+PiArICoKPiA+Pj4+Pj4+ Pj4+PiArICogQ2FsbGVkIGJ5IGEgZHJpdmVyIHRoZSBmaXJzdCB0aW1lIGl0J3MgbmVlZGVkLCBt dXN0IGJlCj4gPj4+Pj4+Pj4+Pj4gK2F0dGFjaGVkIHRvIGRlc2lyZWQKPiA+Pj4+Pj4+Pj4+PiAr ICogY29ubmVjdG9ycy4KPiA+Pj4+Pj4+Pj4+PiArICovCj4gPj4+Pj4+Pj4+Pj4gK2ludCBkcm1f bW9kZV9jcmVhdGVfY29sb3JzcGFjZV9wcm9wZXJ0eShzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcgo+ID4+ Pj4+Pj4+Pj4+ICsqY29ubmVjdG9yKSB7Cj4gPj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGV2ID0gY29ubmVjdG9yLT5kZXY7Cj4gPj4+Pj4+Pj4+Pj4gKwlzdHJ1Y3QgZHJtX3Byb3Bl cnR5ICpwcm9wOwo+ID4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+PiArCWlmIChjb25uZWN0b3It PmNvbm5lY3Rvcl90eXBlID09Cj4gPj4+Pj4+IERSTV9NT0RFX0NPTk5FQ1RPUl9IRE1JQSB8fAo+ ID4+Pj4+Pj4+Pj4+ICsJICAgIGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0KPiA+Pj4+Pj4g RFJNX01PREVfQ09OTkVDVE9SX0hETUlCKSB7Cj4gPj4+Pj4+Pj4+Pj4gKwkJcHJvcCA9IGRybV9w cm9wZXJ0eV9jcmVhdGVfZW51bShkZXYsCj4gPj4+Pj4+Pj4+PiBEUk1fTU9ERV9QUk9QX0VOVU0s Cj4gPj4+Pj4+Pj4+Pj4gKwkJCQkJCSJDb2xvcnNwYWNlIiwKPiA+Pj4+Pj4+Pj4+PiArCQkJCQkJ aGRtaV9jb2xvcnNwYWNlcywKPiA+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+PiAJQVJSQVlfU0la RShoZG1pX2NvbG9yc3BhY2VzKSk7Cj4gPj4+Pj4+Pj4+Pj4gKwkJaWYgKCFwcm9wKQo+ID4+Pj4+ Pj4+Pj4+ICsJCQlyZXR1cm4gLUVOT01FTTsKPiA+Pj4+Pj4+Pj4+PiArCX0gZWxzZSB7Cj4gPj4+ Pj4+Pj4+Pj4gKwkJRFJNX0RFQlVHX0tNUygiQ29sb3JzcGFjZSBwcm9wZXJ0eSBub3QKPiA+Pj4+ Pj4gc3VwcG9ydGVkXG4iKTsKPiA+Pj4+Pj4+Pj4+PiArCQlyZXR1cm4gMDsKPiA+Pj4+Pj4+Pj4+ PiArCX0KPiA+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4gKwljb25uZWN0b3ItPmNvbG9yc3Bh Y2VfcHJvcGVydHkgPSBwcm9wOwo+ID4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+Pj4+PiArCXJldHVy biAwOwo+ID4+Pj4+Pj4+Pj4+ICt9Cj4gPj4+Pj4+Pj4+Pj4gK0VYUE9SVF9TWU1CT0woZHJtX21v ZGVfY3JlYXRlX2NvbG9yc3BhY2VfcHJvcGVydHkpOwo+ID4+Pj4+Pj4+Pj4+ICsKPiA+Pj4+Pj4+ Pj4+PiArLyoqCj4gPj4+Pj4+Pj4+Pj4gICAgICogZHJtX21vZGVfY3JlYXRlX2NvbnRlbnRfdHlw ZV9wcm9wZXJ0eSAtIGNyZWF0ZSBjb250ZW50IHR5cGUKPiA+Pj4+Pj4gcHJvcGVydHkKPiA+Pj4+ Pj4+Pj4+PiAgICAgKiBAZGV2OiBEUk0gZGV2aWNlCj4gPj4+Pj4+Pj4+Pj4gICAgICoKPiA+Pj4+ Pj4+Pj4+PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2Nvbm5lY3Rvci5oCj4gPj4+Pj4+ Pj4+Pj4gYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmggaW5kZXggOTk0MTYxMy4uNThkYjY2 ZSAxMDA2NDQKPiA+Pj4+Pj4+Pj4+PiAtLS0gYS9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgK PiA+Pj4+Pj4+Pj4+PiArKysgYi9pbmNsdWRlL2RybS9kcm1fY29ubmVjdG9yLmgKPiA+Pj4+Pj4+ Pj4+PiBAQCAtMjUzLDYgKzI1Myw0MiBAQCBlbnVtIGRybV9wYW5lbF9vcmllbnRhdGlvbiB7Cj4g Pj4+Pj4+Pj4+Pj4gICAgCURSTV9NT0RFX1BBTkVMX09SSUVOVEFUSU9OX1JJR0hUX1VQLAo+ID4+ Pj4+Pj4+Pj4+ICAgIH07Cj4gPj4+Pj4+Pj4+Pj4KPiA+Pj4+Pj4+Pj4+PiArLyoKPiA+Pj4+Pj4+ Pj4+PiArICogVGhpcyBpcyBhIGNvbnNvbGlkYXRlZCBjb2xvcmltZXRyeSBsaXN0IHN1cHBvcnRl ZCBieSBIRE1JCj4gPj4+Pj4+Pj4+Pj4gK2FuZAo+ID4+Pj4+Pj4+Pj4+ICsgKiBEUCBwcm90b2Nv bCBzdGFuZGFyZC4gVGhlIHJlc3BlY3RpdmUgY29ubmVjdG9ycyB3aWxsCj4gPj4+Pj4+Pj4+Pj4g K3JlZ2lzdGVyCj4gPj4+Pj4+Pj4+Pj4gKyAqIGEgcHJvcGVydHkgd2l0aCB0aGUgc3Vic2V0IG9m IHRoaXMgbGlzdCAoc3VwcG9ydGVkIGJ5IHRoYXQKPiA+Pj4+Pj4+Pj4+PiArICogcmVzcGVjdGl2 ZSBwcm90b2NvbCkuIFVzZXJzcGFjZSB3aWxsIHNldCB0aGUgY29sb3JzcGFjZQo+ID4+Pj4+Pj4+ Pj4+ICt0aHJvdWdoCj4gPj4+Pj4+Pj4+Pj4gKyAqIGEgY29sb3JzcGFjZSBwcm9wZXJ0eSB3aGlj aCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGV4cG9zZWQgdG8KPiA+Pj4+Pj4+Pj4+PiArICogdXNlcnNw YWNlLgo+ID4+Pj4+Pj4+Pj4+ICsgKi8KPiA+Pj4+Pj4+Pj4+PiArCj4gPj4+Pj4+Pj4+Pj4gKy8q IEZvciBEZWZhdWx0IGNhc2UsIGRyaXZlciB3aWxsIHNldCB0aGUgY29sb3JzcGFjZSAqLwo+ID4+ Pj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX0RFRkFVTFQJCQkwCj4gPj4+ Pj4+Pj4+Pj4gKy8qIENFQSA4NjEgTm9ybWFsIENvbG9yaW1ldHJ5IG9wdGlvbnMgKi8KPiA+Pj4+ Pj4+Pj4+PiArI2RlZmluZSBEUk1fTU9ERV9DT0xPUklNRVRSWV9OT19EQVRBCQkJMAo+ID4+Pj4+ Pj4+Pj4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX1NNUFRFXzE3ME0KPiA+Pj4+Pj4+ PiAJMQo+ID4+Pj4+Pj4+Pj4+ICsjZGVmaW5lIERSTV9NT0RFX0NPTE9SSU1FVFJZX0JUNzA5CQkJ Mgo+ID4+Pj4+Pj4+Pj4gU3RpbGwgbWlzc2luZyB0aGUgWUNiQ3IgaW5mb3JtYXRpb24gaW4gdGhl c2UgdHdvLgo+ID4+Pj4+Pj4+PiBBcyBwZXIgQ1RBIDg2MS5HIHNwZWMsIHdlIGhhdmUgdGhlc2Ug YXMgb25seSBTTVBURV8xNzBNIGFuZCBJVFUtUgo+ID4+Pj4+Pj4+PiBCVDcwOSwgd2l0aCBubyBz cGVjaWZpYyBtZW50aW9uIG9mIFJHQiBvciBZQ2JDci4gSGVuY2UsIGtlcHQgaXQgYXMKPiA+Pj4+ Pj4+Pj4gcGVyIHNwZWMuIFdlIHNlZW0gdG8gaGF2ZSBhIGNvbW1vbiBmaWVsZCBmb3IgYm90aCBh cyBwZXIgQ1RBIHNwZWMuCj4gPj4+Pj4+Pj4+IENvcnJlY3QgbWUgaWYgbXkgdW5kZXJzdGFuZGlu ZyBpcyB3cm9uZy4KPiA+Pj4+Pj4+PiBDaGVjawo+ID4+Pj4+Pj4+ICJUYWJsZSAxNCBQaWN0dXJl IENvbG9yaW1ldHJ5IEluZGljYXRlZCBieSB0aGUgUkdCIG9yIFlDIEIgQyBSIChZKSwKPiA+Pj4+ Pj4+PiBDb2xvcmltZXRyeQo+ID4+Pj4+Pj4+IChDKSBhbmQgRXh0ZW5kZWQgQ29sb3JpbWV0cnkg KEVDKSBGaWVsZCBTZXR0aW5ncyIKPiA+Pj4+Pj4+IFRoZXNlICBZMiBZMSBZMCB2YWx1ZXMgc2hv dWxkIGJlIHByb2dyYW1tZWQgc2VwYXJhdGVseSBhbmQgbm90Cj4gPj4+Pj4+PiB0aHJvdWdoIHRo ZSBjb2xvcnNwYWNlIGFzIHRoZXkgYXJlIGRhdGEgZm9ybWF0cyBpc24ndCBpdC4gSSBmZWVsIHRo aXMKPiA+Pj4+Pj4+IHNob3VsZCBnZXQgY29udHJvbGxlZCBzZXBhcmF0ZWx5IGluZGVwZW5kZW50 IG9mIGNvbG9yaW1ldHJ5LCBvcgo+ID4+Pj4+Pj4gc2hvdWxkIHdlIGFkZCBhbGwgdGhlIFlDYkNy IGFuZCBSR0IgdmVyc2lvbnMgYW5kIHByb2dyYW0gdGhlbSBhcyBwYXJ0Cj4gPj4+Pj4+PiBvZiB0 aGlzIHByb3BlcnR5IGl0c2VsZgo+ID4+Pj4+PiA/Cj4gPj4+Pj4+Cj4gPj4+Pj4+IEkgZG9uJ3Qg dGhpbmsgd2UgY2FuIHNlcGFyYXRlIHRoZW0uIFRoZSB2YWx1ZXMgb2YgdGhlIGNvbG9yaW1ldHJ5 IGJpdHMKPiA+Pj4+Pj4gZG9lc24ndCBtZWFuIGFueXRoaW5nIHdpdGhvdXQgdGhlIFkgYml0cy4g SXQgd291bGQgbWFrZSB0aGUgdWFwaSBraW5kYQo+ID4+Pj4+PiBjcmF6eSBpZiB3ZSBhbGxvdyB0 aGUgdXNlciB0byBzcGVjaWZ5IEJULjIwMjAgUkdCIGJ1dCB0aGVuIHdlIGFjdHVhbGx5Cj4gPj4+ Pj4+IHNpZ25hbCBCVC4yMDIwIFlDYkNyIGluIHRoZSBpbmZvZnJhbWUsIG9yIHZpY2UgdmVyc2Eu IE9yIHdlIGp1c3Qgc2lnbmFsCj4gPj4+Pj4+IGEgdG90YWxseSBpbnZhbGlkIHZhbHVlIGZvciBh bGwgdGhlIG90aGVyIGNhc2VzLgo+ID4+Pj4+IEkgYWdyZWUgd2UgbmVlZCBkYXRhIGZvcm1hdCBh bHNvIHRvIGJlIHNlbmQgYWxvbmcgd2l0aCBjb2xvcnNwYWNlLCBidXQgdGhleSBhcmUgMgo+ID4+ Pj4+IGRpZmZlcmVudCB0aGluZ3MuIFRvIGhhbmRsZSBZQ2JDciBhbmQgdmFyaWFudHMgKFlVViA0 NDQsIDQyMCBvciA0MjIpIGFuZCBSR0IgSSBmZWVsCj4gPj4+Pj4gd2Ugc2hvdWxkIGV4cG9zZSBh IGRpZmZlcmVudCBBUEkgaW5zdGVhZCBvZiB1c2luZyB0aGlzIG9uZS4gIFdlIGNhbiBjcmVhdGUg YW4gb3V0cHV0Cj4gPj4+Pj4gY3NjIHByb3BlcnR5IHdoaWNoIGRvZXMgdGhhdCBqb2IgZm9yIHVz Lgo+ID4+Pj4+Cj4gPj4+Pj4gU28gZnJvbSBhIHVzZXIgcGVyc3BlY3RpdmUgaWYgd2Ugd2FudHMg dG8gc2V0IGEgY29sb3JzcGFjZSB3ZSBzaG91bGQgdXNlIHRoZSBvbmUgaW4KPiA+Pj4+PiB0aGlz IHNlcmllcyBhbmQgc2V0IHRoZSBkYXRhIGZvcm1hdCBzZXBhcmF0ZWx5IHVzaW5nIHRoZSBvdGhl ciBpbnRlcmZhY2UuIEJvdGggd2lsbCBiZQo+ID4+Pj4+IHJlY2VpdmVkIGluIHRoZSBzdGF0ZSB2 YXJpYWJsZXMgYW5kIGxhdGVyIEluZm9mcmFtZSBwYWNrZXQgd2lsbCBiZSBjcmVhdGVkIGFjY29y ZGluZ2x5Lgo+ID4+Pj4+IENsdWJiaW5nIGJvdGggaW4gb25lIG1heSBsZWFkIHRvIGxvdCBvZiBw b3NzaWJsZSBjb21iaW5hdGlvbnMgZXhwb3NlZCBhcyBlbnVtCj4gPj4+Pj4gd2hpY2ggbWF5IG5v dCBsb29rIHRvbyBjbGVhbi4KPiA+Pj4+Pgo+ID4+Pj4+IFdoYXQgZG8geW91IHNheSBhYm91dCBo YW5kbGluZyB0aGF0IGluIHRoZSBvdXRwdXQgY3NjIHByb3BlcnR5LiBJIHdpbGwgZ28gd2l0aCB3 aGF0IHlvdQo+ID4+Pj4+IHJlY29tbWVuZCAuCj4gPj4+PiBQcm9ncmFtbWluZyBZMlkxWTAgaXMg YWxyZWFkeSB0YWtlbiBjYXJlIG9mLCB3aGVuIHdlIGFkZGVkIHN1cHBvcnQgZm9yIFlDQkNSIG91 dHB1dHMgKDQ6MjowIGltcGxlbWVudGF0aW9uKS4KPiA+Pj4+IEluIGludGVsX2hkbWkuYzppbnRl bF9oZG1pX3NldF9hdmlfaW5mb2ZyYW1lKCk6Cj4gPj4+Pgo+ID4+Pj4gaWYgKGNydGNfc3RhdGUt Pm91dHB1dF9mb3JtYXQgPT0gSU5URUxfT1VUUFVUX0ZPUk1BVF9ZQ0JDUjQyMCkKPiA+Pj4+IAlm cmFtZS5hdmkuY29sb3JzcGFjZSA9IEhETUlfQ09MT1JTUEFDRV9ZVVY0MjA7Cj4gPj4+PiBlbHNl IGlmIChjcnRjX3N0YXRlLT5vdXRwdXRfZm9ybWF0ID09IElOVEVMX09VVFBVVF9GT1JNQVRfWUNC Q1I0NDQpCj4gPj4+PiAJZnJhbWUuYXZpLmNvbG9yc3BhY2UgPSBIRE1JX0NPTE9SU1BBQ0VfWVVW NDQ0Owo+ID4+Pj4gZWxzZQo+ID4+Pj4gCWZyYW1lLmF2aS5jb2xvcnNwYWNlID0gSERNSV9DT0xP UlNQQUNFX1JHQjsKPiA+Pj4+Cj4gPj4+PiBJTU8gVGhpcyBsb29rcyBsaWtlIGEgYmV0dGVyIHdh eSB0byBoYW5kbGUgdGhpcywgaWUgd2hpbGUgYWRkaW5nIHN1cHBvcnQgZm9yIGEgbmV3IGZvcm1h dCwgYWRkIHN1cHBvcnQgZm9yIGNvcnJlc3BvbmRpbmcgQVZJIElGIGZpbGVkcy4gVGhpcyB3aWxs IGFsc28gbWFrZSBzY29wZSBvZiB0aGUgcHJvcGVydHkgdW5kZXIgZGlzY3Vzc2lvbiBsZXNzIGNv bXBsaWNhdGVkLgo+ID4+PiBUaGF0J3MgYW4gZXhjZXB0aW9uYWwgY2FzZS4gV2UncmUgcHJvZ3Jh bW1pbmcgdGhlIENTQyBpbiB0aGF0IGNhc2UKPiA+Pj4gdG8gZG8gdGhlIFJHQi0+WUNiQ3IgY29u dmVyc2lvbiB3aXRob3V0IHRlbGxpbmcgdXNlcnNwYWNlLiBTbyB3ZQo+ID4+PiBtdXN0IGFsc28g Y29uZmlndXJlIHRoZSBZIGJpdHMgYXV0b21hZ2ljYWxseS4KPiA+Pj4KPiA+Pj4gV2hhdCB3ZSB3 YW50IGlzIGEgY2hlY2sgbGlrZSBzbzoKPiA+Pj4KPiA+Pj4gaWYgKHByb3AuY29sb3JzcGFjZSAh PSBkZWZhdWx0ICYmIG91dHB1dF9mb3JtYXQgIT0gUkdCKQo+ID4+PiAgICAgICByZXR1cm4gLUlO VkFMOwo+ID4+Pgo+ID4+PiBiZWNhdXNlIHdlIGNhbid0IHNldCB1cCB0aGUgQ1NDIHRvIG1ha2Ug YSBtZXNzIG9mIHRoZSB1c2VyJ3MKPiA+Pj4gY2FyZWZ1bGx5IGNyYWZ0ZWQgcGl4ZWxzLiBUaGUg cGl4ZWxzIG1pZ2h0IG5vdCBldmVuIGNvbnRhaW4KPiA+Pj4gUkdCIGRhdGEgaW4gdGhhdCBjYXNl Lgo+ID4+Pgo+ID4+PiBXZSdsbCBuZWVkIHRvIGV4dGVuZCB0aGF0IGEgbGl0dGxlIGJpdCBvbmNl IHdlIGFkZCB0aGUgZXhwbGljaXQKPiA+Pj4gY29udHJvbCBvZiB0aGUgb3V0cHV0IENTQyB2aWEg YW5vdGhlciBwcm9wLiBCdXQgdGhlIHNhbWUKPiA+Pj4gcHJpbmNpcGxlIHNob3VsZCBob2xkLgo+ ID4+IEluIGZhY3QsIEkgcmVtZW1iZXIgdGhlIHJlYXNvbiB3aHkgd2UgY3JlYXRlZCBpbmZyYXN0 cnVjdHVyZSBsaWtlIHRoaXMsCj4gPj4gc28gdGhhdCwgZ29pbmcgZm9yd2FyZCwgd2UgY291bGQg anVzdCBhZGQgYSBvdXRwdXRfZm9ybWF0IHByb3BlcnR5LCBmb3IKPiA+PiB3aGljaCwgd2UgYWxy ZWFkeSBoYXZlIHRoZSBiYWNrZWQgYW5kIHRoZSBzdGF0ZSB2YXJpYWJsZXMgcmVhZHkuIFRoZQo+ ID4+IGNvbnN1bWUgb2YgdGhpcyBiYWNrZW5kIGNhbiBiZSB0aGlzIGRybV9wcm9wZXJ0eSAobGlr ZSBvdXRwdXRfZm9ybWF0KSwKPiA+PiBvciBpbnRlcm5hbCBtb2Rlc2V0IGxpa2UgWUNCQ1I0OjI6 MCBvbmx5IG1vZGVzIGluIEVESUQuIEl0IHdpbGwgYWxzbyBiZQo+ID4+IGlubGluZSB3aXRoIHlv dXIgc3VnZ2VzdGlvbiBvZiBDU0MgcHJvcGVydHkuCj4gPj4KPiA+PiBTbyB3ZSBjYW4gaGF2ZSB0 d28gcHJvcGVydGllcyBjb2xvcnNwYWNlIChCVDIwMjAvU1JHQi9SRUM3MDkpIGFuZAo+ID4+IGNv bG9yX21vZGVsL2NvbG9yX2Zvcm1hdChSR0IvWUNCQ1I0NDQvNDIwKSwgYW5kIGEgY29tYmluYXRp b24gb2YgYm90aAo+ID4+IHNob3VsZCBwcm9ncmFtIHRoZSBvdXRwdXQgQVZJIGluZm8tZnJhbWVz LiBEb2VzIGl0IGFwcGVhbCB5b3UgPwo+ID4gSSdtIG5vdCBzdXJlIGl0J3MgZmVhc2libGUgdG8g c3BsaXQgaXQgbGlrZSB0aGF0LiBUaGUgY29tYmluYXRpb25zCj4gPiBzdXBwb3J0ZWQgYnkgdGhl IGluZm9mcmFtZSBhcmUgcmF0aGVyIHNwZWNpZmljIHNvIHRyeWluZyB0byBzcGxpdCBpdAo+ID4g dXAgbGVhZHMgdG8gZWl0aGVyIHN1cGVyIGxpbWl0ZWQgdWFwaSwgb3Igb25lIHRoYXQgZXhwb3Nl cyBhIGxvdCBvZgo+ID4gaWxsZWdhbCBjb21iaW5hdGlvbnMuIEFsc28gRFAgaGFzIHNsaWdodGx5 IGRpZmZlcmVudCBzZXQgb2YgdGhpbmdzCj4gPiBpdCBzdXBwb3J0cyB3aGljaCBhZGRzIG1vcmUg Y29tcGxpY2F0aW9ucy4KPiA+Cj4gPiBTbyBJIHRoaW5rIHRoZSBiZXN0IG9wdGlvbiBpcyBzdGls bCB0byBpbmNsdWRlIHRoZSBZPXllcy9ubwo+ID4gaW5mb3JtYXRpb24gaW4gdGhlIHByb3AgdmFs dWUgYWxvZ25zaWRlIHRoZSBDL0VDL0FDRSBiaXRzLgo+IAo+IFllcywgeW91IGFyZSByaWdodCwg dGhpcyBjb3VsZCBiZSBhIHNpbXBsZXIgd2F5IG9mIGRvaW5nIHRoaW5ncywgYnV0IAo+IHdpdGgg YSBsaW1pdGVkIHNldCBvZiBjb21iaW5hdGlvbi4KPiAKPiBDb25zaWRlciB0aGlzIGV4YW1wbGU6 Cj4gCj4gLSBJZiBhIEhETUkgbW9uaXRvciBzdXBwb3J0cyBCVDIwMjAsIGJ1dCBkb2Vzbid0IHN1 cHBvcnQgWUNCQ1IgCj4gZm9ybWF0dGluZywgaG93IHRvIGhhbmRsZSB0aGlzIG9wdGlvbiA/IFRo aXMgbWVhbnMgd2UgaGF2ZSB0byAKPiBzZWxlY3RpdmVseSBzaG93IEJUMjAyMF9SR0IgZW51bSB2 YWx1ZSBvbmx5IG5vdCBCVDIwMjBfWUNCQ1JfNDQ0LzQyMCwKPiAKPiAtIFRoaXMgYWxzbyBtZWFu cyB3ZSBoYXZlIHRvIHByb2JlIHRoZSBFRElEIGZpcnN0LCBhbmQgdGhlbiBjcmVhdGUgdGhpcyAK PiBwcm9wZXJ0eSwgd2hpY2ggbWVhbnMgd2Ugd2lsbCBiZSBkZXBlbmRlbnQgb24gdGhlIGhvdC1w bHVnIC8gZGV0ZWN0IHRvIAo+IGNyZWF0ZSB0aGlzIHByb3BlcnR5LCBpbnN0ZWFkIG9mIGRvaW5n IHRoaXMgaW4gaGRtaV9pbml0LgoKSU1PIHdlIGp1c3QgaWdub3JlIHRoaXMgcHJvYmxlbSBhbmQg ZXhwb3NlIGFsbCB0aGUgbGVnYWwgb3B0aW9ucwp0aGUgc3BlYyBoYXMuCgpJZiB1c2Vyc3BhY2Ug d2FudHMgdG8ga25vdyB3aGF0J3MgYWN0dWFsbHkgc3VwcG9ydGVkIGl0IHdpbGwgaGF2ZQp0byBw YXJzZSB0aGUgRURJRC4gV2UgY291bGQgdGhpbmsgYWJvdXQgcGFyc2luZyB0aGF0IGluIHRoZSBr ZXJuZWwgCnRvbyBhbmQgZXhwb3NpbmcgYW4gaW1tdXRhYmxlIHByb3AgdG8gZXhwb3NlIHRoYXQg aW5mcm9tYXRpb24uIEJ1dApJJ20gbm90IHN1cmUgdGhpcyBpcyBzdWNoIGEgZ29vZCBpZGVhIHNp bmNlIHdlJ2QgYmFzaWNhbGx5IGRyb3duCmluIHByb3BlcnRpZXMgaWYgd2UgdHJ5IHRvIGV4cG9z ZSBhbGwgdGhlIGluZm9ybWF0aW9uIGZyb20gdGhlCkVESUQuIEEgYmV0dGVyIGxvbmcgdGVybSBw bGFuIHdvdWxkIGJlIGEgY29tbW9uIEVESUQgcGFyc2luZwpsaWJyYXJ5IGZvciBldmVyeW9uZS4K Cj4gCj4gRXZlbiBtb3JlIGNvbXBsZXggc2NlbmFyaW8gd291bGQgYmUgd2hlbiB0aGUgb3V0cHV0 IHN1cHBvcnQgZGVwZW5kcyBvbiAKPiBtb25pdG9yICsgcGxhdGZvcm0gYm90aC4gVGhpcyBtZWFu cyB3ZSBoYXZlIHRvIHByb3ZpZGUgdGhpcyBjb21iaW5hdGlvbiAKPiB1cGZyb250IHdoaWxlIGNy ZWF0aW5nIHRoaXMgcHJvcGVydHkuCj4gCj4gT24gdGhlIG90aGVyIGhhbmQsIHRoZSBpbnZhbGlk IGNvbWJpbmF0aW9uIG9mIHR3byBwcm9wZXJ0eSwgaXQgd291bGQgYmUgCj4gZWFzeSB0byBkZXRl Y3QgYXQgcnVudGltZSBhdCBhdG9taWNfY2hlY2soKSBhbmQgZmFpbCB0aGUgY29tbWl0Lgo+IAo+ IAo+IFRoaXMgaXMganVzdCBhIHRob3VnaHQsIGhvbmVzdGx5IEkgYW0gYWxzbyBub3Qgc3VyZSB3 aGF0IHdvdWxkIGJlIHRoZSAKPiBtb3N0IGFwcHJvcHJpYXRlIHNvbHV0aW9uIGZvciB0aGlzLCBi dXQgc2VlbXMgaXRzIHNpbXBsZXIgdG8gY3JlYXRlIAo+IHByb3BlcnR5IHdpdGggdHdvIHByb3Bl cnRpZXMsIG1pZ2h0IGJlIGRpZmZpY3VsdCB0byBtYW5hZ2UgYXQgcnVudGltZS4KPiAKPiBXaXRo IG9uZSBwcm9wZXJ0eSwgaXRzIHZlcnkgZGlmZmljdWx0IHRvIGNyZWF0ZSwgYnV0IG9uY2UgY3Jl YXRlZCwgaXQgCj4gd291bGQgd29yayBzdXJlIHNob3QuCgpJIGRvbid0IHRoaW5rIGl0J3MgdGhh dCBkaWZmaWN1bHQuIEp1c3QgZXhwb3NlIGFsbCB0aGUgdGhpbmdzIGluIHRoZQpDVEEtODYxIGJp ZyB0YWJsZS4gV2hpY2ggbWVhbnMgaW5jbHVkaW5nIHRoZSBZIGJpdCB0b28uCgotLSAKVmlsbGUg U3lyasOkbMOkCkludGVsCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVs LWdmeAo=