From mboxrd@z Thu Jan 1 00:00:00 1970 From: Ville =?iso-8859-1?Q?Syrj=E4l=E4?= Subject: Re: [PATCH 20/20] drm/i915: write AVI infoframes for LSPCON Date: Thu, 13 Jul 2017 16:19:51 +0300 Message-ID: <20170713131951.GG12629@intel.com> References: <1499685528-6926-1-git-send-email-shashank.sharma@intel.com> <1499685528-6926-21-git-send-email-shashank.sharma@intel.com> <20170712172451.GR12629@intel.com> <34f7b895-e127-b0c3-b922-fd3edb7e683d@intel.com> <20170713122732.GT12629@intel.com> <238816f6-bd93-b223-02a5-624111dd89d7@intel.com> <20170713125541.GA12629@intel.com> <359da8e7-5cc8-ff76-d48f-ebad29adcdf9@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: <359da8e7-5cc8-ff76-d48f-ebad29adcdf9@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: "Sharma, Shashank" Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMTMsIDIwMTcgYXQgMDY6NDA6MzZQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiA3LzEzLzIwMTcgNjoy NSBQTSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4gT24gVGh1LCBKdWwgMTMsIDIwMTcgYXQg MDY6MDk6NTNQTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFuayB3cm90ZToKPiA+PiBSZWdhcmRzCj4g Pj4KPiA+PiBTaGFzaGFuawo+ID4+Cj4gPj4KPiA+PiBPbiA3LzEzLzIwMTcgNTo1NyBQTSwgVmls bGUgU3lyasOkbMOkIHdyb3RlOgo+ID4+PiBPbiBUaHUsIEp1bCAxMywgMjAxNyBhdCAxMToxMTo1 M0FNICswNTMwLCBTaGFybWEsIFNoYXNoYW5rIHdyb3RlOgo+ID4+Pj4gUmVnYXJkcwo+ID4+Pj4K PiA+Pj4+IFNoYXNoYW5rCj4gPj4+Pgo+ID4+Pj4KPiA+Pj4+IE9uIDcvMTIvMjAxNyAxMDo1NCBQ TSwgVmlsbGUgU3lyasOkbMOkIHdyb3RlOgo+ID4+Pj4+IE9uIE1vbiwgSnVsIDEwLCAyMDE3IGF0 IDA0OjQ4OjQ4UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPiA+Pj4+Pj4gTFNQQ09O IGNoaXBzIGNhbid0IHBpY2sgdGhlIEhETUkgQVZJIGluZm9mcmFtZXMgZnJvbSBkaXJlY3QgbGlu ay4KPiA+Pj4+Pj4gSW4gb3JkZXIgdG8gcGFzcyBBVkkgaW5mb2ZyYW1lcyBmcm9tIGRpc3BsYXkg Y29udHJvbGxlciB0byBMU1BDT04sCj4gPj4+Pj4+IHdlIGhhdmUgdG8gd3JpdGUgaW5mb2ZyYW1l IHBhY2tldHMgaW50byB2ZW5kb3Igc3BlY2lmaWVkIEFVWCBhZGRyZXNzLgo+ID4+Pj4+Pgo+ID4+ Pj4+PiBBbHNvLCBMU1BDT04gdmVuZG9ycyBwcm92aWRlIEFVWCBvZmZzZXRzLCB0byBpbmZvcm0g dGhlIExTUENPTgo+ID4+Pj4+PiBjaGlwIHRoYXQgdGhlIEFWSSBJRiBwYWNrZXRzIGFyZSB3cml0 dGVuLCBzbyB0aGF0IHRoZSBmaXJtd2FyZQo+ID4+Pj4+PiBjYW4gcGljayBpdCB1cCBhbmQgYXBw bHkuCj4gPj4+Pj4+Cj4gPj4+Pj4+IFRoaXMgcGF0Y2ggYWRkcyBmdW5jdGlvbiB0byB3cml0ZSBB VkkgaW5mb2ZyYW1lcyBmb3IgYm90aCBNQ0EgYXMKPiA+Pj4+Pj4gd2VsbCBhcyBQYXJhZGUgVGVj aCBMU1BDT04gY2hpcHMuIFRoZXNlIHR3byB2ZW5kb3JzIHByb3ZpZGUgZGlmZmVyZW50Cj4gPj4+ Pj4+IG1ldGhvZHMgZm9yIHdyaXRpbmcgaW5mb2ZyYW1lcywgc28gdGhpcyBwYXRjaCBjb250YWlu cyB0d28gZGlmZmVyZW50Cj4gPj4+Pj4+IGZ1bmN0aW9ucywgb25lIGZvciBlYWNoLgo+ID4+Pj4+ IFNlZW1zIHRvIG1lIHRoYXQgd2Ugc2hvdWxkIGFsc28gYmUgY2hlY2tpbmcgdGhlIHJlY2VpdmVy IGNhcCBmb3IgdGhlCj4gPj4+Pj4gNDQ0LT40MjAgY29udmVyc2lvbiBzdXBwb3J0LCBhbmQgZW5h YmxlIGl0IGluIHRoZSBQUk9UT0NPTF9DT05WRVJURVIKPiA+Pj4+PiBEUENEIHJlZ2lzdGVyLiBP ciBhcmUgdGhlc2UgTFNQQ09OIHRoaW5ncyBldmVuIGlnbm9yaW5nIHRoYXQgcGFydCBvZiB0aGUK PiA+Pj4+PiBzcGVjPwo+ID4+Pj4gWWVzLCBMU1BDT04ganVzdCBuZWVkcyB0aGUgWUNCQ1I0NDQg aW5wdXQsIGFuZCBpbmZvIGZyYW1lcyBmb3IgNDIwLCBhbmQKPiA+Pj4+IGl0IHdvdWxkIHRha2Ug Y2FyZSBvZgo+ID4+Pj4gNDQ0LT40MjAgY29udmVyc2lvbiBpbiBGVy4KPiA+Pj4gU28gaXQgc25v b3BzIHRoZSBBVkkgaW5mb2ZyYW1lIHdlIHdyaXRlIHRvIGl0IHRvIGZpZ3VyZSBvdXQgdGhhdCBp dCBoYXMKPiA+Pj4gdG8gZG8gdGhlIDQ0NC0+NDIwIGRvd25zYW1wbGluZz8KPiA+PiBZZXMsIHRo YXQncyBleGFjdGx5IHdoYXQgaXQgZG9lcy4KPiA+IENhbiB5b3UgYWRkIGEgY29tbWVudCBzb21l d2hlcmUgYXBwcm9wcmlhdGUgdG8gbWFrZSB0aGF0IGNsZWFyLgo+ID4gT3RoZXJ3aXNlIHBlb3Bs ZSBtaWdodCB3b25kZXIgd2h5IHdlJ3JlIG5vdCBlbmFibGluZyB0aGUgZG93bnNhbXBsaW5nIGF0 Cj4gPiBhbGwuCj4gPgo+ID4gRG9lcyBMU1BDT04gdGhlbiBub3QgZXZlbiBpbXBsZW1lbnQgdGhl IFBST1RPQ09MX0NPTlZFUlRFUiBEQ1BECj4gPiByZWdpc3RlcnM/Cj4gPgo+ID4gQ2FuIHlvdSBz ZW5kIHRoZSBzcGVjIGZvciB0aGlzIHN0dWZmIG15IHdheT8gV2hhdCBJIGhhdmUgbm93IGRvZXNu J3QKPiA+IGRvY3VtZW50IGFueSBEUENEIHJlZ2lzdGVycy4KPiBBY3R1YWxseSBJIGFsc28gZG9u J3QgaGF2ZSBhIGRvY3VtZW50L3NwZWMgd2hpY2ggZGVzY3JpYmVzIHRoaXMuIFRoaXMgaXMgCj4g a2luZCBvZiBrbm93bGVkZ2Ugc2hhcmluZyBmcm9tIHBlb3BsZSB3aG8KPiBoYWQgZGVzaWduIGRp c2N1c3Npb25zIHdpdGggTUNBL1BBUkFERSB2ZW5kb3JzIG9uIGhvdyB0byBpbXBsZW1lbnQgCj4g TFNQQ09OIHNwZWNzIGFuZCBmZWF0dXJlcy4KClNvIHRoZXJlIGFyZSBubyBzcGVjcyBhdCBhbGw/ IFRoYXQncyBubyB3YXkgdG8gZG8gdGhpbmdzLiBBcyBpcywgbm8Kb25lIGNhbiBhY3R1YWxseSBy ZXZpZXcgdGhpcyBjb2RlIHdpdGhvdXQgZXhwZXJpbWVudGluZyB3aXRoIHRoZQpoYXJkd2FyZSB0 aGVtc2VsdmVzLgoKPiBUeXBpY2FsbHkgTFNQQ09OIGZpcm13YXJlIHBhcnNlcyB0aGUgQVZJIElG IHBhY2tldHMsIGFuZCBkb2VzIHRoZSAKPiBzY2FsaW5nIGRvd24gZnJvbSA0NDQtPjQyMC4gVGhh dCdzIHdoeQo+IHdlIGFyZSB3cml0aW5nIHRoZSBBVkkgSUYgYXQgY3VzdG9tIEFVWCBsb2NhdGlv bi4KPiAKPiBJIGhhdmUgYWRkZWQgdGhpcyBkZXNjcmlwdGlvbiBpbiBwYXRjaCAxOCdzIHRleHQs IHdoaWNoIHRhbGtzIGFib3V0IHRoZSAKPiBzdGVwcyB0byBnZXQgYSBZQ0JDUjQyMCBvdXRwdXQg ZnJvbSBMU1BDT04uCj4gSXQgc2F5czoKPiAKPiBMU1BDT04gY2hpcHMgc3VwcG9ydCBZQ0JDUjQy MCBvdXRwdXRzLiBUbyBiZSBhYmxlIHRvIGdldAo+IFlDQkNSNDIwIG91dHB1dCBmcm9tIExTUENP TiBjaGlwLCB0aGUgc291cmNlIHNob3VsZDoKPiAtIEdlbmVyYXRlIFlDQkNSNDQ0IEhETUkgb3V0 cHV0Cj4gLSBTZXQgQVZJIGluZm9mcmFtZXMgZm9yIGEgWUNCQ1I0MjAgb3V0cHV0Lgo+IAo+IEFu ZCBhZGRlZCB0aGlzIHNtYWxsIGNvbW1lbnQgaW4gNDIwX2NvbmZpZzoKPiArIC8qIExTUENPTiBk b2Vzbid0IG5lZWQgc2NhbGVyIGZvciBZQ0JDUjQyMCBvdXRwdXQgKi8KPiArIGlmIChjb25maWct PmxzcGNvbl9hY3RpdmUpCj4gKyByZXR1cm4gdHJ1ZTsKPiArCj4gCj4gQnV0IHByb2JhYmx5IEkg c2hvdWxkIGRpc2NyZWV0bHkgbWVudGlvbiB0aGF0IExTUENPTiBkb2Vzbid0IG5lZWQgYSBzY2Fs YXIgc29tZWhvdy4KClllYWggc29tZXRoaW5nIGxpa2UgdGhpcyBwZXJoYXBzOgoiV2Ugc2VuZCA0 OjQ6NCBkYXRhIHRvIExTUENPTiB3aGljaCBwZXJmb3JtcyB0aGUgNDo0OjQtPjQ6MjowCiBkb3du c2FtcGxpbmcgb3IgdXMsIGhlbmNlIHdlIGRvbid0IG5lZWQgYSBwaXBlIHNjYWxlci4iCgo+IAo+ IC0gU2hhc2hhbmsKPiAKPiA+PiAtIFNoYXNoYW5rCj4gPj4+PiBBbHNvLCBpdHMgYSBwYXJ0IG9m IExTUENPTiBzcGVjcywgdGhhdCBpdCBoYXMKPiA+Pj4+IHRvIGhhdmUgNDIwIG91dHB1dCBjYXBh YmlsaXR5Lgo+ID4+Pj4KPiA+Pj4+IC0gU2hhc2hhbmsKPiA+Pj4+Pj4gQ2M6IFZpbGxlIFN5cmrD pGzDpCA8dmlsbGUuc3lyamFsYUBsaW51eC5pbnRlbC5jb20+Cj4gPj4+Pj4+IENjOiBJbXJlIERl YWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFNoYXNoYW5r IFNoYXJtYSA8c2hhc2hhbmsuc2hhcm1hQGludGVsLmNvbT4KPiA+Pj4+Pj4gLS0tCj4gPj4+Pj4+ ICAgICBkcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyAgICB8ICAgOCArKwo+ID4+Pj4+ PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggICAgfCAgIDMgKwo+ID4+Pj4+ PiAgICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMgfCAxNzQgKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCj4gPj4+Pj4+ICAgICAzIGZpbGVzIGNoYW5nZWQs IDE4NSBpbnNlcnRpb25zKCspCj4gPj4+Pj4+Cj4gPj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJz L2dwdS9kcm0vaTkxNS9pbnRlbF9kZGkuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gPj4+Pj4+IGluZGV4IGY2OTE3MTAuLjk0NGQ5ZDUgMTAwNjQ0Cj4gPj4+Pj4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPj4+Pj4+ICsrKyBiL2RyaXZlcnMv Z3B1L2RybS9pOTE1L2ludGVsX2RkaS5jCj4gPj4+Pj4+IEBAIC0yMDY4LDYgKzIwNjgsMTQgQEAg dm9pZCBpbnRlbF9kZGlfc2V0X2F2aV9pbmZvZnJhbWUoc3RydWN0IGRybV9lbmNvZGVyICplbmNv ZGVyLAo+ID4+Pj4+PiAgICAgCQkJCQkgICByZ2JfcXJhbmdlX2xpbWl0ZWQsCj4gPj4+Pj4+ICAg ICAJCQkJCSAgIHJnYl9xcmFuZ2Vfc2VsZWN0YWJsZSk7Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4g KwlpZiAoY3J0Y19zdGF0ZS0+bHNwY29uX2FjdGl2ZSkgewo+ID4+Pj4+PiArCQlzdHJ1Y3QgaW50 ZWxfbHNwY29uICpsc3Bjb24gPSBlbmNfdG9faW50ZWxfbHNwY29uKGVuY29kZXIpOwo+ID4+Pj4+ PiArCj4gPj4+Pj4+ICsJCS8qIExTUENPTiB3cml0ZXMgaW5mb2ZyYW1lcyB2aWEgQVVYICovCj4g Pj4+Pj4+ICsJCWxzcGNvbi0+d3JpdGVfaW5mb2ZyYW1lKGVuY29kZXIsIGNydGNfc3RhdGUsICZm cmFtZSk7Cj4gPj4+Pj4+ICsJCXJldHVybjsKPiA+Pj4+Pj4gKwl9Cj4gPj4+Pj4+ICsKPiA+Pj4+ Pj4gICAgIAlpbnRlbF93cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJmZyYW1l KTsKPiA+Pj4+Pj4gICAgIH0KPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRl bF9kcnYuaAo+ID4+Pj4+PiBpbmRleCBmYWQ5YTUzLi4zZTY4NmQyIDEwMDY0NAo+ID4+Pj4+PiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+Pj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9kcnYuaAo+ID4+Pj4+PiBAQCAtMTA3OSw2ICsxMDc5LDkg QEAgc3RydWN0IGludGVsX2xzcGNvbiB7Cj4gPj4+Pj4+ICAgICAJLyogQVZJIElGIHNldHVwIGZ1 bmN0aW9uIGZvciBMU1BDT04gKi8KPiA+Pj4+Pj4gICAgIAl2b2lkICgqc2V0X2luZm9mcmFtZXMp KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+Pj4+Pj4gICAgIAkJCQljb25zdCBzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4gPj4+Pj4+ICsJdm9pZCAoKndyaXRl X2luZm9mcmFtZSkoc3RydWN0IGRybV9lbmNvZGVyICplbmNvZGVyLAo+ID4+Pj4+PiArCQkJCWNv bnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0YXRlLAo+ID4+Pj4+PiArCQkJCXVu aW9uIGhkbWlfaW5mb2ZyYW1lICpmcmFtZSk7Cj4gPj4+Pj4+ICAgICB9Owo+ID4+Pj4+PiAgICAg Cj4gPj4+Pj4+ICAgICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPiA+Pj4+Pj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPiA+Pj4+Pj4gaW5kZXggNTNkZGQzOS4uMDFmZGRmNyAx MDA2NDQKPiA+Pj4+Pj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMK PiA+Pj4+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPiA+Pj4+ Pj4gQEAgLTMxLDYgKzMxLDE4IEBACj4gPj4+Pj4+ICAgICAjZGVmaW5lIExTUENPTl9WRU5ET1Jf UEFSQURFX09VSSAweDAwMUNGOAo+ID4+Pj4+PiAgICAgI2RlZmluZSBMU1BDT05fVkVORE9SX01D QV9PVUkgMHgwMDYwQUQKPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArLyogQVVYIGFkZHJlc3NlcyB0 byB3cml0ZSBBVkkgSUYgaW50byAqLwo+ID4+Pj4+PiArI2RlZmluZSBMU1BDT05fTUNBX0FWSV9J Rl9XUklURV9PRkZTRVQgMHg1QzAKPiA+Pj4+Pj4gKyNkZWZpbmUgTFNQQ09OX01DQV9BVklfSUZf Q1RSTCAweDVERgo+ID4+Pj4+PiArI2RlZmluZSAgTFNQQ09OX01DQV9BVklfSUZfS0lDS09GRiAo MSA8PCAwKQo+ID4+Pj4+PiArI2RlZmluZSAgTFNQQ09OX01DQV9BVklfSUZfSEFORExFRCAoMSA8 PCAxKQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsjZGVmaW5lIExTUENPTl9QQVJBREVfQVZJX0lGX1dS SVRFX09GRlNFVCAweDUxNgo+ID4+Pj4+PiArI2RlZmluZSBMU1BDT05fUEFSQURFX0FWSV9JRl9D VFJMIDB4NTFFCj4gPj4+Pj4+ICsjZGVmaW5lICBMU1BDT05fUEFSQURFX0FWSV9JRl9LSUNLT0ZG ICgxIDw8IDcpCj4gPj4+Pj4+ICsjZGVmaW5lIExTUENPTl9QQVJBREVfQVZJX0lGX1NUQVRVUyAw eDUxRgo+ID4+Pj4+PiArI2RlZmluZSAgTFNQQ09OX1BBUkFERV9BVklfSUZfSEFORExFRCAoMiA8 PCA2KQo+ID4+Pj4+PiArCj4gPj4+Pj4+ICAgICBzdGF0aWMgc3RydWN0IGludGVsX2RwICpsc3Bj b25fdG9faW50ZWxfZHAoc3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uKQo+ID4+Pj4+PiAgICAg ewo+ID4+Pj4+PiAgICAgCXN0cnVjdCBpbnRlbF9kaWdpdGFsX3BvcnQgKmRpZ19wb3J0ID0KPiA+ Pj4+Pj4gQEAgLTIxNyw2ICsyMjksMTY3IEBAIGJvb2wgbHNwY29uX3ljYmNyNDIwX2NvbmZpZyhz dHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+Pj4+PiAgICAgCXJldHVybiBmYWxz ZTsKPiA+Pj4+Pj4gICAgIH0KPiA+Pj4+Pj4gICAgIAo+ID4+Pj4+PiArc3RhdGljIGJvb2wgX2xz cGNvbl93cml0ZV9pbmZvZnJhbWVfcGFyYWRlKHN0cnVjdCBkcm1fZHBfYXV4ICphdXgsCj4gPj4+ Pj4+ICsJCQkJCSAgIHVpbnQ4X3QgKmJ1ZmZlciwgc3NpemVfdCBsZW4pCj4gPj4+Pj4+ICt7Cj4g Pj4+Pj4+ICsJdTggYXZpX2lmX2N0cmw7Cj4gPj4+Pj4+ICsJdTggYXZpX2lmX3N0YXR1czsKPiA+ Pj4+Pj4gKwl1OCBjb3VudCA9IDA7Cj4gPj4+Pj4+ICsJdTggcmV0cnkgPSA1Owo+ID4+Pj4+PiAr CXU4IGF2aV9idWZbOF0gPSB7MCwgfTsKPiA+Pj4+Pj4gKwl1aW50MTZfdCByZWc7Cj4gPj4+Pj4+ ICsJc3NpemVfdCByZXQ7Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwl3aGlsZSAoY291bnQrKyA8IDQp IHsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCQlkbyB7Cj4gPj4+Pj4+ICsJCQkvKiBJcyBMU1BDT04g RlcgcmVhZHkgKi8KPiA+Pj4+Pj4gKwkJCXJlZyA9IExTUENPTl9QQVJBREVfQVZJX0lGX0NUUkw7 Cj4gPj4+Pj4+ICsJCQlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eCwgcmVnLCAmYXZpX2lmX2N0 cmwsIDEpOwo+ID4+Pj4+PiArCQkJaWYgKHJldCA8IDApIHsKPiA+Pj4+Pj4gKwkJCQlEUk1fRVJS T1IoIkRQQ0QgcmVhZCBmYWlsZWQsIGFkZDoweCV4XG4iLCByZWcpOwo+ID4+Pj4+PiArCQkJCXJl dHVybiBmYWxzZTsKPiA+Pj4+Pj4gKwkJCX0KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCQkJaWYgKGF2 aV9pZl9jdHJsICYgTFNQQ09OX1BBUkFERV9BVklfSUZfS0lDS09GRikKPiA+Pj4+Pj4gKwkJCQli cmVhazsKPiA+Pj4+Pj4gKwkJCXVzbGVlcF9yYW5nZSgxMDAsIDIwMCk7Cj4gPj4+Pj4+ICsJCX0g d2hpbGUgKC0tcmV0cnkpOwo+ID4+Pj4+PiArCj4gPj4+Pj4+ICsJCWlmICghKGF2aV9pZl9jdHJs ICYgTFNQQ09OX1BBUkFERV9BVklfSUZfS0lDS09GRikpIHsKPiA+Pj4+Pj4gKwkJCURSTV9FUlJP UigiTFNQQ09OIEZXIG5vdCByZWFkeSBmb3IgaW5mb2ZyYW1lc1xuIik7Cj4gPj4+Pj4+ICsJCQly ZXR1cm4gZmFsc2U7Cj4gPj4+Pj4+ICsJCX0KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCQkvKgo+ID4+ Pj4+PiArCQkgKiBBVkkgSW5mb2ZyYW1lIGNvbnRhaW5zIDMxIGJ5dGVzIG9mIGRhdGE6Cj4gPj4+ Pj4+ICsJCSAqCUhCMCB0byBIQjIgICAoMyBieXRlcyBoZWFkZXIpCj4gPj4+Pj4+ICsJCSAqCVBC MCB0byBQQjI3ICgyOCBieXRlcyBkYXRhKQo+ID4+Pj4+PiArCQkgKiBBcyBwZXIgUGFyYWRlIHNw ZWMsIHdoaWxlIHNlbmRpbmcgZmlyc3QgYmxvY2sgKDhieXRlcyksCj4gPj4+Pj4+ICsJCSAqIGJ5 dGUgMCBpcyBrZXB0IGZvciByZXF1ZXN0IHRva2VuIG5vLCBhbmQgYnl0ZTEgLSBieXRlNwo+ID4+ Pj4+PiArCQkgKiBjb250YWluIGZyYW1lIGRhdGEuIFNvIHdlIGhhdmUgdG8gcGFjayBmcmFtZSBs aWtlIHRoaXM6Cj4gPj4+Pj4+ICsJCSAqCWZpcnN0IGJsb2NrIG9mIDggYnl0ZXM6IDx0b2tlbj4g PEhCMC1IQjI+IDxQQjAtUEIzPgo+ID4+Pj4+PiArCQkgKgluZXh0IDMgYmxvY2tzOiA8UEI0LVBC Mjc+Cj4gPj4+Pj4+ICsJCSAqLwo+ID4+Pj4+PiArCQlpZiAoY291bnQpCj4gPj4+Pj4+ICsJCQlt ZW1jcHkoYXZpX2J1ZiwgYnVmZmVyICsgY291bnQgKiA4IC0gMSwgOCk7Cj4gPj4+Pj4+ICsJCWVs c2Ugewo+ID4+Pj4+PiArCQkJYXZpX2J1ZlswXSA9IDE7Cj4gPj4+Pj4+ICsJCQltZW1jcHkoJmF2 aV9idWZbMV0sIGJ1ZmZlciwgNyk7Cj4gPj4+Pj4+ICsJCX0KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiAr CQkvKiBXcml0ZSA4IGJ5dGVzIG9mIGRhdGEgYXQgYSB0aW1lICovCj4gPj4+Pj4+ICsJCXJlZyA9 IExTUENPTl9QQVJBREVfQVZJX0lGX1dSSVRFX09GRlNFVDsKPiA+Pj4+Pj4gKwkJcmV0ID0gZHJt X2RwX2RwY2Rfd3JpdGUoYXV4LCByZWcsIGF2aV9idWYsIDgpOwo+ID4+Pj4+PiArCQlpZiAocmV0 IDwgMCkgewo+ID4+Pj4+PiArCQkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwgYWRkOjB4 JXhcbiIsIHJlZyk7Cj4gPj4+Pj4+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPj4+Pj4+ICsJCX0KPiA+ Pj4+Pj4gKwo+ID4+Pj4+PiArCQkvKgo+ID4+Pj4+PiArCQkgKiBXaGlsZSBzZW5kaW5nIGEgYmxv Y2sgb2YgOCBieWVzLCB3ZSBuZWVkIHRvIGluZm9ybSBibG9jawo+ID4+Pj4+PiArCQkgKiBudW1i ZXIgdG8gRlcsIGJ5IHByb2dyYW1taW5nIGJpdHNbMTowXSBvZiBjdHJsIHJlZyB3aXRoCj4gPj4+ Pj4+ICsJCSAqIGJsb2NrIG51bWJlcgo+ID4+Pj4+PiArCQkgKi8KPiA+Pj4+Pj4gKwkJYXZpX2lm X2N0cmwgPSAweDgwICsgY291bnQ7Cj4gPj4+Pj4+ICsJCXJlZyA9IExTUENPTl9QQVJBREVfQVZJ X0lGX0NUUkw7Cj4gPj4+Pj4+ICsJCXJldCA9IGRybV9kcF9kcGNkX3dyaXRlKGF1eCwgcmVnLCAm YXZpX2lmX2N0cmwsIDEpOwo+ID4+Pj4+PiArCQlpZiAocmV0IDwgMCkgewo+ID4+Pj4+PiArCQkJ RFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwgYWRkOjB4JXhcbiIsIHJlZyk7Cj4gPj4+Pj4+ ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPj4+Pj4+ICsJCX0KPiA+Pj4+Pj4gKwl9Cj4gPj4+Pj4+ICsK PiA+Pj4+Pj4gKwkvKiBDaGVjayBMU1BDT04gRlcgc3RhdHVzICovCj4gPj4+Pj4+ICsJcmVnID0g TFNQQ09OX1BBUkFERV9BVklfSUZfU1RBVFVTOwo+ID4+Pj4+PiArCXJldCA9IGRybV9kcF9kcGNk X3JlYWQoYXV4LCByZWcsICZhdmlfaWZfc3RhdHVzLCAxKTsKPiA+Pj4+Pj4gKwlpZiAocmV0IDwg MCkgewo+ID4+Pj4+PiArCQlEUk1fRVJST1IoIkRQQ0Qgd3JpdGUgZmFpbGVkLCBhZGRyZXNzIDB4 JXhcbiIsIHJlZyk7Cj4gPj4+Pj4+ICsJCXJldHVybiBmYWxzZTsKPiA+Pj4+Pj4gKwl9Cj4gPj4+ Pj4+ICsKPiA+Pj4+Pj4gKwlpZiAoYXZpX2lmX3N0YXR1cyAmIExTUENPTl9QQVJBREVfQVZJX0lG X0hBTkRMRUQpCj4gPj4+Pj4+ICsJCURSTV9ERUJVR19LTVMoIkFWSSBJRiBoYW5kbGVkIGJ5IEZX XG4iKTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCXJldHVybiB0cnVlOwo+ID4+Pj4+PiArfQo+ID4+ Pj4+PiArCj4gPj4+Pj4+ICtzdGF0aWMgYm9vbCBfbHNwY29uX3dyaXRlX2luZm9mcmFtZV9tY2Eo c3RydWN0IGRybV9kcF9hdXggKmF1eCwKPiA+Pj4+Pj4gKwkJCQkJdWludDhfdCAqYnVmZmVyLCBz c2l6ZV90IGxlbikKPiA+Pj4+Pj4gK3sKPiA+Pj4+Pj4gKwlpbnQgcmV0Owo+ID4+Pj4+PiArCXVp bnQzMl90IHZhbCA9IDA7Cj4gPj4+Pj4+ICsJdWludDE2X3QgcmVnOwo+ID4+Pj4+PiArCXVpbnQ4 X3QgKmRhdGEgPSBidWZmZXI7Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwlyZWcgPSBMU1BDT05fTUNB X0FWSV9JRl9XUklURV9PRkZTRVQ7Cj4gPj4+Pj4+ICsJd2hpbGUgKHZhbCA8IGxlbikgewo+ID4+ Pj4+PiArCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZShhdXgsIHJlZywgZGF0YSwgMSk7Cj4gPj4+ Pj4+ICsJCWlmIChyZXQgPCAwKSB7Cj4gPj4+Pj4+ICsJCQlEUk1fRVJST1IoIkRQQ0Qgd3JpdGUg ZmFpbGVkLCBhZGQ6MHgleFxuIiwgcmVnKTsKPiA+Pj4+Pj4gKwkJCXJldHVybiBmYWxzZTsKPiA+ Pj4+Pj4gKwkJfQo+ID4+Pj4+PiArCQl2YWwrKzsgcmVnKys7IGRhdGErKzsKPiA+Pj4+Pj4gKwl9 Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwl2YWwgPSAwOwo+ID4+Pj4+PiArCXJlZyA9IExTUENPTl9N Q0FfQVZJX0lGX0NUUkw7Cj4gPj4+Pj4+ICsJcmV0ID0gZHJtX2RwX2RwY2RfcmVhZChhdXgsIHJl ZywgJnZhbCwgMSk7Cj4gPj4+Pj4+ICsJaWYgKHJldCA8IDApIHsKPiA+Pj4+Pj4gKwkJRFJNX0VS Uk9SKCJEUENEIHJlYWQgZmFpbGVkLCBhZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4gPj4+Pj4+ICsJ CXJldHVybiBmYWxzZTsKPiA+Pj4+Pj4gKwl9Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwkvKiBJbmRp Y2F0ZSBMU1BDT04gY2hpcCBhYm91dCBpbmZvZnJhbWUsIGNsZWFyIGJpdCAxIGFuZCBzZXQgYml0 IDAgKi8KPiA+Pj4+Pj4gKwl2YWwgJj0gfkxTUENPTl9NQ0FfQVZJX0lGX0hBTkRMRUQ7Cj4gPj4+ Pj4+ICsJdmFsIHw9IExTUENPTl9NQ0FfQVZJX0lGX0tJQ0tPRkY7Cj4gPj4+Pj4+ICsKPiA+Pj4+ Pj4gKwlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZShhdXgsIHJlZywgJnZhbCwgMSk7Cj4gPj4+Pj4+ ICsJaWYgKHJldCA8IDApIHsKPiA+Pj4+Pj4gKwkJRFJNX0VSUk9SKCJEUENEIHJlYWQgZmFpbGVk LCBhZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4gPj4+Pj4+ICsJCXJldHVybiBmYWxzZTsKPiA+Pj4+ Pj4gKwl9Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gKwl2YWwgPSAwOwo+ID4+Pj4+PiArCXJldCA9IGRy bV9kcF9kcGNkX3JlYWQoYXV4LCByZWcsICZ2YWwsIDEpOwo+ID4+Pj4+PiArCWlmIChyZXQgPCAw KSB7Cj4gPj4+Pj4+ICsJCURSTV9FUlJPUigiRFBDRCByZWFkIGZhaWxlZCwgYWRkcmVzcyAweCV4 XG4iLCByZWcpOwo+ID4+Pj4+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4+Pj4+ICsJfQo+ID4+Pj4+ PiArCj4gPj4+Pj4+ICsJaWYgKHZhbCA9PSBMU1BDT05fTUNBX0FWSV9JRl9IQU5ETEVEKQo+ID4+ Pj4+PiArCQlEUk1fREVCVUdfS01TKCJBVkkgSUYgaGFuZGxlZCBieSBGV1xuIik7Cj4gPj4+Pj4+ ICsKPiA+Pj4+Pj4gKwlyZXR1cm4gdHJ1ZTsKPiA+Pj4+Pj4gK30KPiA+Pj4+Pj4gKwo+ID4+Pj4+ PiArdm9pZCBsc3Bjb25fd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2Rl ciwKPiA+Pj4+Pj4gKwkJCQkgIGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRjX3N0 YXRlLAo+ID4+Pj4+PiArCQkJCSAgdW5pb24gaGRtaV9pbmZvZnJhbWUgKmZyYW1lKQo+ID4+Pj4+ PiArewo+ID4+Pj4+PiArCWJvb2wgcmV0Owo+ID4+Pj4+PiArCXNzaXplX3QgbGVuOwo+ID4+Pj4+ PiArCXVpbnQ4X3QgYnVmW1ZJREVPX0RJUF9EQVRBX1NJWkVdOwo+ID4+Pj4+PiArCXN0cnVjdCBp bnRlbF9kcCAqaW50ZWxfZHAgPSBlbmNfdG9faW50ZWxfZHAoZW5jb2Rlcik7Cj4gPj4+Pj4+ICsJ c3RydWN0IGludGVsX2xzcGNvbiAqbHNwY29uID0gZW5jX3RvX2ludGVsX2xzcGNvbihlbmNvZGVy KTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCWxlbiA9IGhkbWlfaW5mb2ZyYW1lX3BhY2soZnJhbWUs IGJ1Ziwgc2l6ZW9mKGJ1ZikpOwo+ID4+Pj4+PiArCWlmIChsZW4gPCAwKSB7Cj4gPj4+Pj4+ICsJ CURSTV9FUlJPUigiRmFpbGVkIHRvIHBhY2sgQVZJIElGXG4iKTsKPiA+Pj4+Pj4gKwkJcmV0dXJu Owo+ID4+Pj4+PiArCX0KPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCWlmIChsc3Bjb24tPnZlbmRvciA9 PSBMU1BDT05fVkVORE9SX01DQSkKPiA+Pj4+Pj4gKwkJcmV0ID0gX2xzcGNvbl93cml0ZV9pbmZv ZnJhbWVfbWNhKCZpbnRlbF9kcC0+YXV4LCBidWYsIGxlbik7Cj4gPj4+Pj4+ICsJZWxzZQo+ID4+ Pj4+PiArCQlyZXQgPSBfbHNwY29uX3dyaXRlX2luZm9mcmFtZV9wYXJhZGUoJmludGVsX2RwLT5h dXgsIGJ1ZiwgbGVuKTsKPiA+Pj4+Pj4gKwo+ID4+Pj4+PiArCWlmICghcmV0KQo+ID4+Pj4+PiAr CQlEUk1fRVJST1IoIkZhaWxlZCB0byB3cml0ZSBBVkkgaW5mb2ZyYW1lc1xuIik7Cj4gPj4+Pj4+ ICsJZWxzZQo+ID4+Pj4+PiArCQlEUk1fREVCVUdfRFJJVkVSKCJBVkkgaW5mb2ZyYW1lcyB1cGRh dGVkIHN1Y2Nlc3NmdWxseVxuIik7Cj4gPj4+Pj4+ICt9Cj4gPj4+Pj4+ICsKPiA+Pj4+Pj4gICAg IHZvaWQgbHNwY29uX3Jlc3VtZShzdHJ1Y3QgaW50ZWxfbHNwY29uICpsc3Bjb24pCj4gPj4+Pj4+ ICAgICB7Cj4gPj4+Pj4+ICAgICAJZW51bSBkcm1fbHNwY29uX21vZGUgZXhwZWN0ZWRfbW9kZTsK PiA+Pj4+Pj4gQEAgLTI4Miw2ICs0NTUsNyBAQCBib29sIGxzcGNvbl9pbml0KHN0cnVjdCBpbnRl bF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4+Pj4+PiAgICAgCj4gPj4+Pj4+ICAg ICAJY29ubmVjdG9yLT55Y2Jjcl80MjBfYWxsb3dlZCA9IHRydWU7Cj4gPj4+Pj4+ICAgICAJbHNw Y29uLT5zZXRfaW5mb2ZyYW1lcyA9IGludGVsX2RkaV9zZXRfYXZpX2luZm9mcmFtZTsKPiA+Pj4+ Pj4gKwlsc3Bjb24tPndyaXRlX2luZm9mcmFtZSA9IGxzcGNvbl93cml0ZV9pbmZvZnJhbWU7Cj4g Pj4+Pj4+ICAgICAJZHJtX2RwX3JlYWRfZGVzYygmZHAtPmF1eCwgJmRwLT5kZXNjLCBkcm1fZHBf aXNfYnJhbmNoKGRwLT5kcGNkKSk7Cj4gPj4+Pj4+ICAgICAKPiA+Pj4+Pj4gICAgIAlEUk1fREVC VUdfS01TKCJTdWNjZXNzOiBMU1BDT04gaW5pdFxuIik7Cj4gPj4+Pj4+IC0tIAo+ID4+Pj4+PiAy LjcuNAo+IAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVsIG1haWxpbmcgbGlzdApkcmkt ZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3Jn L21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg==