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 15:27:32 +0300 Message-ID: <20170713122732.GT12629@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> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: <34f7b895-e127-b0c3-b922-fd3edb7e683d@intel.com> 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, dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org T24gVGh1LCBKdWwgMTMsIDIwMTcgYXQgMTE6MTE6NTNBTSArMDUzMCwgU2hhcm1hLCBTaGFzaGFu ayB3cm90ZToKPiBSZWdhcmRzCj4gCj4gU2hhc2hhbmsKPiAKPiAKPiBPbiA3LzEyLzIwMTcgMTA6 NTQgUE0sIFZpbGxlIFN5cmrDpGzDpCB3cm90ZToKPiA+IE9uIE1vbiwgSnVsIDEwLCAyMDE3IGF0 IDA0OjQ4OjQ4UE0gKzA1MzAsIFNoYXNoYW5rIFNoYXJtYSB3cm90ZToKPiA+PiBMU1BDT04gY2hp cHMgY2FuJ3QgcGljayB0aGUgSERNSSBBVkkgaW5mb2ZyYW1lcyBmcm9tIGRpcmVjdCBsaW5rLgo+ ID4+IEluIG9yZGVyIHRvIHBhc3MgQVZJIGluZm9mcmFtZXMgZnJvbSBkaXNwbGF5IGNvbnRyb2xs ZXIgdG8gTFNQQ09OLAo+ID4+IHdlIGhhdmUgdG8gd3JpdGUgaW5mb2ZyYW1lIHBhY2tldHMgaW50 byB2ZW5kb3Igc3BlY2lmaWVkIEFVWCBhZGRyZXNzLgo+ID4+Cj4gPj4gQWxzbywgTFNQQ09OIHZl bmRvcnMgcHJvdmlkZSBBVVggb2Zmc2V0cywgdG8gaW5mb3JtIHRoZSBMU1BDT04KPiA+PiBjaGlw IHRoYXQgdGhlIEFWSSBJRiBwYWNrZXRzIGFyZSB3cml0dGVuLCBzbyB0aGF0IHRoZSBmaXJtd2Fy ZQo+ID4+IGNhbiBwaWNrIGl0IHVwIGFuZCBhcHBseS4KPiA+Pgo+ID4+IFRoaXMgcGF0Y2ggYWRk cyBmdW5jdGlvbiB0byB3cml0ZSBBVkkgaW5mb2ZyYW1lcyBmb3IgYm90aCBNQ0EgYXMKPiA+PiB3 ZWxsIGFzIFBhcmFkZSBUZWNoIExTUENPTiBjaGlwcy4gVGhlc2UgdHdvIHZlbmRvcnMgcHJvdmlk ZSBkaWZmZXJlbnQKPiA+PiBtZXRob2RzIGZvciB3cml0aW5nIGluZm9mcmFtZXMsIHNvIHRoaXMg cGF0Y2ggY29udGFpbnMgdHdvIGRpZmZlcmVudAo+ID4+IGZ1bmN0aW9ucywgb25lIGZvciBlYWNo Lgo+ID4gU2VlbXMgdG8gbWUgdGhhdCB3ZSBzaG91bGQgYWxzbyBiZSBjaGVja2luZyB0aGUgcmVj ZWl2ZXIgY2FwIGZvciB0aGUKPiA+IDQ0NC0+NDIwIGNvbnZlcnNpb24gc3VwcG9ydCwgYW5kIGVu YWJsZSBpdCBpbiB0aGUgUFJPVE9DT0xfQ09OVkVSVEVSCj4gPiBEUENEIHJlZ2lzdGVyLiBPciBh cmUgdGhlc2UgTFNQQ09OIHRoaW5ncyBldmVuIGlnbm9yaW5nIHRoYXQgcGFydCBvZiB0aGUKPiA+ IHNwZWM/Cj4gWWVzLCBMU1BDT04ganVzdCBuZWVkcyB0aGUgWUNCQ1I0NDQgaW5wdXQsIGFuZCBp bmZvIGZyYW1lcyBmb3IgNDIwLCBhbmQgCj4gaXQgd291bGQgdGFrZSBjYXJlIG9mCj4gNDQ0LT40 MjAgY29udmVyc2lvbiBpbiBGVy4KClNvIGl0IHNub29wcyB0aGUgQVZJIGluZm9mcmFtZSB3ZSB3 cml0ZSB0byBpdCB0byBmaWd1cmUgb3V0IHRoYXQgaXQgaGFzCnRvIGRvIHRoZSA0NDQtPjQyMCBk b3duc2FtcGxpbmc/Cgo+IEFsc28sIGl0cyBhIHBhcnQgb2YgTFNQQ09OIHNwZWNzLCB0aGF0IGl0 IGhhcyAKPiB0byBoYXZlIDQyMCBvdXRwdXQgY2FwYWJpbGl0eS4KPiAKPiAtIFNoYXNoYW5rCj4g Pgo+ID4+IENjOiBWaWxsZSBTeXJqw6Rsw6QgPHZpbGxlLnN5cmphbGFAbGludXguaW50ZWwuY29t Pgo+ID4+IENjOiBJbXJlIERlYWsgPGltcmUuZGVha0BpbnRlbC5jb20+Cj4gPj4gU2lnbmVkLW9m Zi1ieTogU2hhc2hhbmsgU2hhcm1hIDxzaGFzaGFuay5zaGFybWFAaW50ZWwuY29tPgo+ID4+IC0t LQo+ID4+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMgICAgfCAgIDggKysKPiA+ PiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oICAgIHwgICAzICsKPiA+PiAgIGRy aXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2xzcGNvbi5jIHwgMTc0ICsrKysrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKwo+ID4+ICAgMyBmaWxlcyBjaGFuZ2VkLCAxODUgaW5zZXJ0aW9u cygrKQo+ID4+Cj4gPj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+PiBpbmRleCBmNjkxNzEw Li45NDRkOWQ1IDEwMDY0NAo+ID4+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rk aS5jCj4gPj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGRpLmMKPiA+PiBAQCAt MjA2OCw2ICsyMDY4LDE0IEBAIHZvaWQgaW50ZWxfZGRpX3NldF9hdmlfaW5mb2ZyYW1lKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlciwKPiA+PiAgIAkJCQkJICAgcmdiX3FyYW5nZV9saW1pdGVk LAo+ID4+ICAgCQkJCQkgICByZ2JfcXJhbmdlX3NlbGVjdGFibGUpOwo+ID4+ICAgCj4gPj4gKwlp ZiAoY3J0Y19zdGF0ZS0+bHNwY29uX2FjdGl2ZSkgewo+ID4+ICsJCXN0cnVjdCBpbnRlbF9sc3Bj b24gKmxzcGNvbiA9IGVuY190b19pbnRlbF9sc3Bjb24oZW5jb2Rlcik7Cj4gPj4gKwo+ID4+ICsJ CS8qIExTUENPTiB3cml0ZXMgaW5mb2ZyYW1lcyB2aWEgQVVYICovCj4gPj4gKwkJbHNwY29uLT53 cml0ZV9pbmZvZnJhbWUoZW5jb2RlciwgY3J0Y19zdGF0ZSwgJmZyYW1lKTsKPiA+PiArCQlyZXR1 cm47Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICAgCWludGVsX3dyaXRlX2luZm9mcmFtZShlbmNvZGVy LCBjcnRjX3N0YXRlLCAmZnJhbWUpOwo+ID4+ICAgfQo+ID4+ICAgCj4gPj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUv aW50ZWxfZHJ2LmgKPiA+PiBpbmRleCBmYWQ5YTUzLi4zZTY4NmQyIDEwMDY0NAo+ID4+IC0tLSBh L2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2Rydi5oCj4gPj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfZHJ2LmgKPiA+PiBAQCAtMTA3OSw2ICsxMDc5LDkgQEAgc3RydWN0IGlu dGVsX2xzcGNvbiB7Cj4gPj4gICAJLyogQVZJIElGIHNldHVwIGZ1bmN0aW9uIGZvciBMU1BDT04g Ki8KPiA+PiAgIAl2b2lkICgqc2V0X2luZm9mcmFtZXMpKHN0cnVjdCBkcm1fZW5jb2RlciAqZW5j b2RlciwKPiA+PiAgIAkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSk7Cj4gPj4gKwl2b2lkICgqd3JpdGVfaW5mb2ZyYW1lKShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVu Y29kZXIsCj4gPj4gKwkJCQljb25zdCBzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0 ZSwKPiA+PiArCQkJCXVuaW9uIGhkbWlfaW5mb2ZyYW1lICpmcmFtZSk7Cj4gPj4gICB9Owo+ID4+ ICAgCj4gPj4gICBzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0IHsKPiA+PiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9pbnRlbF9sc3Bjb24uYwo+ID4+IGluZGV4IDUzZGRkMzkuLjAxZmRkZjcgMTAwNjQ0Cj4gPj4g LS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfbHNwY29uLmMKPiA+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9sc3Bjb24uYwo+ID4+IEBAIC0zMSw2ICszMSwxOCBAQAo+ ID4+ICAgI2RlZmluZSBMU1BDT05fVkVORE9SX1BBUkFERV9PVUkgMHgwMDFDRjgKPiA+PiAgICNk ZWZpbmUgTFNQQ09OX1ZFTkRPUl9NQ0FfT1VJIDB4MDA2MEFECj4gPj4gICAKPiA+PiArLyogQVVY IGFkZHJlc3NlcyB0byB3cml0ZSBBVkkgSUYgaW50byAqLwo+ID4+ICsjZGVmaW5lIExTUENPTl9N Q0FfQVZJX0lGX1dSSVRFX09GRlNFVCAweDVDMAo+ID4+ICsjZGVmaW5lIExTUENPTl9NQ0FfQVZJ X0lGX0NUUkwgMHg1REYKPiA+PiArI2RlZmluZSAgTFNQQ09OX01DQV9BVklfSUZfS0lDS09GRiAo MSA8PCAwKQo+ID4+ICsjZGVmaW5lICBMU1BDT05fTUNBX0FWSV9JRl9IQU5ETEVEICgxIDw8IDEp Cj4gPj4gKwo+ID4+ICsjZGVmaW5lIExTUENPTl9QQVJBREVfQVZJX0lGX1dSSVRFX09GRlNFVCAw eDUxNgo+ID4+ICsjZGVmaW5lIExTUENPTl9QQVJBREVfQVZJX0lGX0NUUkwgMHg1MUUKPiA+PiAr I2RlZmluZSAgTFNQQ09OX1BBUkFERV9BVklfSUZfS0lDS09GRiAoMSA8PCA3KQo+ID4+ICsjZGVm aW5lIExTUENPTl9QQVJBREVfQVZJX0lGX1NUQVRVUyAweDUxRgo+ID4+ICsjZGVmaW5lICBMU1BD T05fUEFSQURFX0FWSV9JRl9IQU5ETEVEICgyIDw8IDYpCj4gPj4gKwo+ID4+ICAgc3RhdGljIHN0 cnVjdCBpbnRlbF9kcCAqbHNwY29uX3RvX2ludGVsX2RwKHN0cnVjdCBpbnRlbF9sc3Bjb24gKmxz cGNvbikKPiA+PiAgIHsKPiA+PiAgIAlzdHJ1Y3QgaW50ZWxfZGlnaXRhbF9wb3J0ICpkaWdfcG9y dCA9Cj4gPj4gQEAgLTIxNyw2ICsyMjksMTY3IEBAIGJvb2wgbHNwY29uX3ljYmNyNDIwX2NvbmZp ZyhzdHJ1Y3QgZHJtX2Nvbm5lY3RvciAqY29ubmVjdG9yLAo+ID4+ICAgCXJldHVybiBmYWxzZTsK PiA+PiAgIH0KPiA+PiAgIAo+ID4+ICtzdGF0aWMgYm9vbCBfbHNwY29uX3dyaXRlX2luZm9mcmFt ZV9wYXJhZGUoc3RydWN0IGRybV9kcF9hdXggKmF1eCwKPiA+PiArCQkJCQkgICB1aW50OF90ICpi dWZmZXIsIHNzaXplX3QgbGVuKQo+ID4+ICt7Cj4gPj4gKwl1OCBhdmlfaWZfY3RybDsKPiA+PiAr CXU4IGF2aV9pZl9zdGF0dXM7Cj4gPj4gKwl1OCBjb3VudCA9IDA7Cj4gPj4gKwl1OCByZXRyeSA9 IDU7Cj4gPj4gKwl1OCBhdmlfYnVmWzhdID0gezAsIH07Cj4gPj4gKwl1aW50MTZfdCByZWc7Cj4g Pj4gKwlzc2l6ZV90IHJldDsKPiA+PiArCj4gPj4gKwl3aGlsZSAoY291bnQrKyA8IDQpIHsKPiA+ PiArCj4gPj4gKwkJZG8gewo+ID4+ICsJCQkvKiBJcyBMU1BDT04gRlcgcmVhZHkgKi8KPiA+PiAr CQkJcmVnID0gTFNQQ09OX1BBUkFERV9BVklfSUZfQ1RSTDsKPiA+PiArCQkJcmV0ID0gZHJtX2Rw X2RwY2RfcmVhZChhdXgsIHJlZywgJmF2aV9pZl9jdHJsLCAxKTsKPiA+PiArCQkJaWYgKHJldCA8 IDApIHsKPiA+PiArCQkJCURSTV9FUlJPUigiRFBDRCByZWFkIGZhaWxlZCwgYWRkOjB4JXhcbiIs IHJlZyk7Cj4gPj4gKwkJCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwkJCX0KPiA+PiArCj4gPj4gKwkJ CWlmIChhdmlfaWZfY3RybCAmIExTUENPTl9QQVJBREVfQVZJX0lGX0tJQ0tPRkYpCj4gPj4gKwkJ CQlicmVhazsKPiA+PiArCQkJdXNsZWVwX3JhbmdlKDEwMCwgMjAwKTsKPiA+PiArCQl9IHdoaWxl ICgtLXJldHJ5KTsKPiA+PiArCj4gPj4gKwkJaWYgKCEoYXZpX2lmX2N0cmwgJiBMU1BDT05fUEFS QURFX0FWSV9JRl9LSUNLT0ZGKSkgewo+ID4+ICsJCQlEUk1fRVJST1IoIkxTUENPTiBGVyBub3Qg cmVhZHkgZm9yIGluZm9mcmFtZXNcbiIpOwo+ID4+ICsJCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwkJ fQo+ID4+ICsKPiA+PiArCQkvKgo+ID4+ICsJCSAqIEFWSSBJbmZvZnJhbWUgY29udGFpbnMgMzEg Ynl0ZXMgb2YgZGF0YToKPiA+PiArCQkgKglIQjAgdG8gSEIyICAgKDMgYnl0ZXMgaGVhZGVyKQo+ ID4+ICsJCSAqCVBCMCB0byBQQjI3ICgyOCBieXRlcyBkYXRhKQo+ID4+ICsJCSAqIEFzIHBlciBQ YXJhZGUgc3BlYywgd2hpbGUgc2VuZGluZyBmaXJzdCBibG9jayAoOGJ5dGVzKSwKPiA+PiArCQkg KiBieXRlIDAgaXMga2VwdCBmb3IgcmVxdWVzdCB0b2tlbiBubywgYW5kIGJ5dGUxIC0gYnl0ZTcK PiA+PiArCQkgKiBjb250YWluIGZyYW1lIGRhdGEuIFNvIHdlIGhhdmUgdG8gcGFjayBmcmFtZSBs aWtlIHRoaXM6Cj4gPj4gKwkJICoJZmlyc3QgYmxvY2sgb2YgOCBieXRlczogPHRva2VuPiA8SEIw LUhCMj4gPFBCMC1QQjM+Cj4gPj4gKwkJICoJbmV4dCAzIGJsb2NrczogPFBCNC1QQjI3Pgo+ID4+ ICsJCSAqLwo+ID4+ICsJCWlmIChjb3VudCkKPiA+PiArCQkJbWVtY3B5KGF2aV9idWYsIGJ1ZmZl ciArIGNvdW50ICogOCAtIDEsIDgpOwo+ID4+ICsJCWVsc2Ugewo+ID4+ICsJCQlhdmlfYnVmWzBd ID0gMTsKPiA+PiArCQkJbWVtY3B5KCZhdmlfYnVmWzFdLCBidWZmZXIsIDcpOwo+ID4+ICsJCX0K PiA+PiArCj4gPj4gKwkJLyogV3JpdGUgOCBieXRlcyBvZiBkYXRhIGF0IGEgdGltZSAqLwo+ID4+ ICsJCXJlZyA9IExTUENPTl9QQVJBREVfQVZJX0lGX1dSSVRFX09GRlNFVDsKPiA+PiArCQlyZXQg PSBkcm1fZHBfZHBjZF93cml0ZShhdXgsIHJlZywgYXZpX2J1ZiwgOCk7Cj4gPj4gKwkJaWYgKHJl dCA8IDApIHsKPiA+PiArCQkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwgYWRkOjB4JXhc biIsIHJlZyk7Cj4gPj4gKwkJCXJldHVybiBmYWxzZTsKPiA+PiArCQl9Cj4gPj4gKwo+ID4+ICsJ CS8qCj4gPj4gKwkJICogV2hpbGUgc2VuZGluZyBhIGJsb2NrIG9mIDggYnllcywgd2UgbmVlZCB0 byBpbmZvcm0gYmxvY2sKPiA+PiArCQkgKiBudW1iZXIgdG8gRlcsIGJ5IHByb2dyYW1taW5nIGJp dHNbMTowXSBvZiBjdHJsIHJlZyB3aXRoCj4gPj4gKwkJICogYmxvY2sgbnVtYmVyCj4gPj4gKwkJ ICovCj4gPj4gKwkJYXZpX2lmX2N0cmwgPSAweDgwICsgY291bnQ7Cj4gPj4gKwkJcmVnID0gTFNQ Q09OX1BBUkFERV9BVklfSUZfQ1RSTDsKPiA+PiArCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZShh dXgsIHJlZywgJmF2aV9pZl9jdHJsLCAxKTsKPiA+PiArCQlpZiAocmV0IDwgMCkgewo+ID4+ICsJ CQlEUk1fRVJST1IoIkRQQ0Qgd3JpdGUgZmFpbGVkLCBhZGQ6MHgleFxuIiwgcmVnKTsKPiA+PiAr CQkJcmV0dXJuIGZhbHNlOwo+ID4+ICsJCX0KPiA+PiArCX0KPiA+PiArCj4gPj4gKwkvKiBDaGVj ayBMU1BDT04gRlcgc3RhdHVzICovCj4gPj4gKwlyZWcgPSBMU1BDT05fUEFSQURFX0FWSV9JRl9T VEFUVVM7Cj4gPj4gKwlyZXQgPSBkcm1fZHBfZHBjZF9yZWFkKGF1eCwgcmVnLCAmYXZpX2lmX3N0 YXR1cywgMSk7Cj4gPj4gKwlpZiAocmV0IDwgMCkgewo+ID4+ICsJCURSTV9FUlJPUigiRFBDRCB3 cml0ZSBmYWlsZWQsIGFkZHJlc3MgMHgleFxuIiwgcmVnKTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7 Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaWYgKGF2aV9pZl9zdGF0dXMgJiBMU1BDT05fUEFSQURF X0FWSV9JRl9IQU5ETEVEKQo+ID4+ICsJCURSTV9ERUJVR19LTVMoIkFWSSBJRiBoYW5kbGVkIGJ5 IEZXXG4iKTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gdHJ1ZTsKPiA+PiArfQo+ID4+ICsKPiA+PiAr c3RhdGljIGJvb2wgX2xzcGNvbl93cml0ZV9pbmZvZnJhbWVfbWNhKHN0cnVjdCBkcm1fZHBfYXV4 ICphdXgsCj4gPj4gKwkJCQkJdWludDhfdCAqYnVmZmVyLCBzc2l6ZV90IGxlbikKPiA+PiArewo+ ID4+ICsJaW50IHJldDsKPiA+PiArCXVpbnQzMl90IHZhbCA9IDA7Cj4gPj4gKwl1aW50MTZfdCBy ZWc7Cj4gPj4gKwl1aW50OF90ICpkYXRhID0gYnVmZmVyOwo+ID4+ICsKPiA+PiArCXJlZyA9IExT UENPTl9NQ0FfQVZJX0lGX1dSSVRFX09GRlNFVDsKPiA+PiArCXdoaWxlICh2YWwgPCBsZW4pIHsK PiA+PiArCQlyZXQgPSBkcm1fZHBfZHBjZF93cml0ZShhdXgsIHJlZywgZGF0YSwgMSk7Cj4gPj4g KwkJaWYgKHJldCA8IDApIHsKPiA+PiArCQkJRFJNX0VSUk9SKCJEUENEIHdyaXRlIGZhaWxlZCwg YWRkOjB4JXhcbiIsIHJlZyk7Cj4gPj4gKwkJCXJldHVybiBmYWxzZTsKPiA+PiArCQl9Cj4gPj4g KwkJdmFsKys7IHJlZysrOyBkYXRhKys7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJdmFsID0gMDsK PiA+PiArCXJlZyA9IExTUENPTl9NQ0FfQVZJX0lGX0NUUkw7Cj4gPj4gKwlyZXQgPSBkcm1fZHBf ZHBjZF9yZWFkKGF1eCwgcmVnLCAmdmFsLCAxKTsKPiA+PiArCWlmIChyZXQgPCAwKSB7Cj4gPj4g KwkJRFJNX0VSUk9SKCJEUENEIHJlYWQgZmFpbGVkLCBhZGRyZXNzIDB4JXhcbiIsIHJlZyk7Cj4g Pj4gKwkJcmV0dXJuIGZhbHNlOwo+ID4+ICsJfQo+ID4+ICsKPiA+PiArCS8qIEluZGljYXRlIExT UENPTiBjaGlwIGFib3V0IGluZm9mcmFtZSwgY2xlYXIgYml0IDEgYW5kIHNldCBiaXQgMCAqLwo+ ID4+ICsJdmFsICY9IH5MU1BDT05fTUNBX0FWSV9JRl9IQU5ETEVEOwo+ID4+ICsJdmFsIHw9IExT UENPTl9NQ0FfQVZJX0lGX0tJQ0tPRkY7Cj4gPj4gKwo+ID4+ICsJcmV0ID0gZHJtX2RwX2RwY2Rf d3JpdGUoYXV4LCByZWcsICZ2YWwsIDEpOwo+ID4+ICsJaWYgKHJldCA8IDApIHsKPiA+PiArCQlE Uk1fRVJST1IoIkRQQ0QgcmVhZCBmYWlsZWQsIGFkZHJlc3MgMHgleFxuIiwgcmVnKTsKPiA+PiAr CQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJdmFsID0gMDsKPiA+PiArCXJl dCA9IGRybV9kcF9kcGNkX3JlYWQoYXV4LCByZWcsICZ2YWwsIDEpOwo+ID4+ICsJaWYgKHJldCA8 IDApIHsKPiA+PiArCQlEUk1fRVJST1IoIkRQQ0QgcmVhZCBmYWlsZWQsIGFkZHJlc3MgMHgleFxu IiwgcmVnKTsKPiA+PiArCQlyZXR1cm4gZmFsc2U7Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaWYg KHZhbCA9PSBMU1BDT05fTUNBX0FWSV9JRl9IQU5ETEVEKQo+ID4+ICsJCURSTV9ERUJVR19LTVMo IkFWSSBJRiBoYW5kbGVkIGJ5IEZXXG4iKTsKPiA+PiArCj4gPj4gKwlyZXR1cm4gdHJ1ZTsKPiA+ PiArfQo+ID4+ICsKPiA+PiArdm9pZCBsc3Bjb25fd3JpdGVfaW5mb2ZyYW1lKHN0cnVjdCBkcm1f ZW5jb2RlciAqZW5jb2RlciwKPiA+PiArCQkJCSAgY29uc3Qgc3RydWN0IGludGVsX2NydGNfc3Rh dGUgKmNydGNfc3RhdGUsCj4gPj4gKwkJCQkgIHVuaW9uIGhkbWlfaW5mb2ZyYW1lICpmcmFtZSkK PiA+PiArewo+ID4+ICsJYm9vbCByZXQ7Cj4gPj4gKwlzc2l6ZV90IGxlbjsKPiA+PiArCXVpbnQ4 X3QgYnVmW1ZJREVPX0RJUF9EQVRBX1NJWkVdOwo+ID4+ICsJc3RydWN0IGludGVsX2RwICppbnRl bF9kcCA9IGVuY190b19pbnRlbF9kcChlbmNvZGVyKTsKPiA+PiArCXN0cnVjdCBpbnRlbF9sc3Bj b24gKmxzcGNvbiA9IGVuY190b19pbnRlbF9sc3Bjb24oZW5jb2Rlcik7Cj4gPj4gKwo+ID4+ICsJ bGVuID0gaGRtaV9pbmZvZnJhbWVfcGFjayhmcmFtZSwgYnVmLCBzaXplb2YoYnVmKSk7Cj4gPj4g KwlpZiAobGVuIDwgMCkgewo+ID4+ICsJCURSTV9FUlJPUigiRmFpbGVkIHRvIHBhY2sgQVZJIElG XG4iKTsKPiA+PiArCQlyZXR1cm47Cj4gPj4gKwl9Cj4gPj4gKwo+ID4+ICsJaWYgKGxzcGNvbi0+ dmVuZG9yID09IExTUENPTl9WRU5ET1JfTUNBKQo+ID4+ICsJCXJldCA9IF9sc3Bjb25fd3JpdGVf aW5mb2ZyYW1lX21jYSgmaW50ZWxfZHAtPmF1eCwgYnVmLCBsZW4pOwo+ID4+ICsJZWxzZQo+ID4+ ICsJCXJldCA9IF9sc3Bjb25fd3JpdGVfaW5mb2ZyYW1lX3BhcmFkZSgmaW50ZWxfZHAtPmF1eCwg YnVmLCBsZW4pOwo+ID4+ICsKPiA+PiArCWlmICghcmV0KQo+ID4+ICsJCURSTV9FUlJPUigiRmFp bGVkIHRvIHdyaXRlIEFWSSBpbmZvZnJhbWVzXG4iKTsKPiA+PiArCWVsc2UKPiA+PiArCQlEUk1f REVCVUdfRFJJVkVSKCJBVkkgaW5mb2ZyYW1lcyB1cGRhdGVkIHN1Y2Nlc3NmdWxseVxuIik7Cj4g Pj4gK30KPiA+PiArCj4gPj4gICB2b2lkIGxzcGNvbl9yZXN1bWUoc3RydWN0IGludGVsX2xzcGNv biAqbHNwY29uKQo+ID4+ICAgewo+ID4+ICAgCWVudW0gZHJtX2xzcGNvbl9tb2RlIGV4cGVjdGVk X21vZGU7Cj4gPj4gQEAgLTI4Miw2ICs0NTUsNyBAQCBib29sIGxzcGNvbl9pbml0KHN0cnVjdCBp bnRlbF9kaWdpdGFsX3BvcnQgKmludGVsX2RpZ19wb3J0KQo+ID4+ICAgCj4gPj4gICAJY29ubmVj dG9yLT55Y2Jjcl80MjBfYWxsb3dlZCA9IHRydWU7Cj4gPj4gICAJbHNwY29uLT5zZXRfaW5mb2Zy YW1lcyA9IGludGVsX2RkaV9zZXRfYXZpX2luZm9mcmFtZTsKPiA+PiArCWxzcGNvbi0+d3JpdGVf aW5mb2ZyYW1lID0gbHNwY29uX3dyaXRlX2luZm9mcmFtZTsKPiA+PiAgIAlkcm1fZHBfcmVhZF9k ZXNjKCZkcC0+YXV4LCAmZHAtPmRlc2MsIGRybV9kcF9pc19icmFuY2goZHAtPmRwY2QpKTsKPiA+ PiAgIAo+ID4+ICAgCURSTV9ERUJVR19LTVMoIlN1Y2Nlc3M6IExTUENPTiBpbml0XG4iKTsKPiA+ PiAtLSAKPiA+PiAyLjcuNAoKLS0gClZpbGxlIFN5cmrDpGzDpApJbnRlbCBPVEMKX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1haWxpbmcg bGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==