From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jani Nikula Subject: Re: [RFC] drm/i915: adding state checker for gamma lut values Date: Mon, 25 Mar 2019 11:47:10 +0200 Message-ID: <87bm1zs2u9.fsf@intel.com> References: <1552634188-7372-1-git-send-email-swati2.sharma@intel.com> <87o96ch3jm.fsf@intel.com> <6b816617-af80-afdf-9379-b33367cece80@intel.com> <87r2b1en0r.fsf@intel.com> <1adbf27c-0411-e3e4-c0ad-0423318d06d6@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) by gabe.freedesktop.org (Postfix) with ESMTPS id 14D706E559 for ; Mon, 25 Mar 2019 09:44:35 +0000 (UTC) In-Reply-To: <1adbf27c-0411-e3e4-c0ad-0423318d06d6@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, Swati2" , intel-gfx@lists.freedesktop.org Cc: "daniel.vetter@ffwll.ch" , "Nautiyal, Ankit K" List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyNSBNYXIgMjAxOSwgIlNoYXJtYSwgU3dhdGkyIiA8c3dhdGkyLnNoYXJtYUBpbnRl bC5jb20+IHdyb3RlOgo+IE9uIDIwLU1hci0xOSA2OjExIFBNLCBKYW5pIE5pa3VsYSB3cm90ZToK Pj4gT24gV2VkLCAyMCBNYXIgMjAxOSwgIlNoYXJtYSwgU3dhdGkyIiA8c3dhdGkyLnNoYXJtYUBp bnRlbC5jb20+IHdyb3RlOgo+Pj4gT24gMTUtTWFyLTE5IDM6MTcgUE0sIE5pa3VsYSwgSmFuaSB3 cm90ZToKPj4+PiBPbiBGcmksIDE1IE1hciAyMDE5LCBzd2F0aTIuc2hhcm1hQGludGVsLmNvbSB3 cm90ZToKPj4+Pj4gRnJvbTogU3dhdGkgU2hhcm1hIDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4K Pj4+Pj4KPj4+Pj4gQWRkZWQgc3RhdGUgY2hlY2tlciB0byB2YWxpZGF0ZSBnYW1tYV9sdXQgdmFs dWVzLiBUaGlzCj4+Pj4+IHJlYWRzIGhhcmR3YXJlIHN0YXRlLCBhbmQgY29tcGFyZXMgdGhlIG9y aWdpbmFsbHkgcmVxdWVzdGVkCj4+Pj4+IHN0YXRlIHRvIHRoZSBzdGF0ZSByZWFkIGZyb20gaGFy ZHdhcmUuCj4+Pj4+Cj4+Pj4+IFRoaXMgaW1wbGVtZW50YXRpb24gY2FuIGJlIHVzZWQgZm9yIEdl bjkrIHBsYXRmb3JtcywKPj4+Pj4gSSBoYXZlbid0IGltcGxlbWVudGVkIGl0IGZvciBsZWdhY3kg cGxhdGZvcm1zLiBKdXN0IHdhbnQgdG8gZ2V0Cj4+Pj4+IGZlZWRiYWNrIGlmIHRoaXMgaXMgdGhl IHJpZ2h0IGFwcHJvYWNoIHRvIGZvbGxvdy4KPj4+Pj4KPj4+Pj4gQWxzbywgaW52ZXJzZSBmdW5j dGlvbiBvZiBkcm1fY29sb3JfbHV0X2V4dHJhY3QgaXMgbWlzc2luZwo+Pj4+PiB0byBjb252ZXJ0 IGhhcmR3YXJlIHJlYWQgdmFsdWVzIGJhY2sgdG8gdXNlciB2YWx1ZXMuCj4+Pj4+IFRoaW5raW5n IGZvciB0aGF0LiBJIGhhdmUgYWRkZWQgYWxsICJUT0RPcyIgYW5kICJQbGFjZWhvbGRlcnMiLgo+ Pj4+Pgo+Pj4+PiBBbm90aGVyIGFwcHJvYWNoOgo+Pj4+PiBTdG9yaW5nICJ3b3JkIiB0byBiZSB3 cml0dGVuIGludG8gaGFyZHdhcmUgaW4gZGV2X3ByaXYgYW5kCj4+Pj4+IGluc3RlYWQgb2YgY29t cGFyaW5nIGJsb2IsIGNvbXBhcmluZyAid29yZCI/IEluIGRldl9wcml2LAo+Pj4+PiBvbmx5IHBv aW50ZXIgd2lsbCBiZSB0aGVyZSAoc29tZXRoaW5nIGxpa2UgKmdhbW1hX3dvcmQpLgo+Pj4+IFlv dSBjYW4ndCBzdG9yZSBpdCBpbiBkZXZfcHJpdiBiZWNhdXNlIGl0J3MgY3J0YyBzdGF0ZSBzcGVj aWZpYwo+Pj4+IGRhdGEuIEV2ZW4gaWYgc3RvcmVkIGluIGNydGMgc3RhdGUsIHRoZSBhcHByb2Fj aCBkb2Vzbid0IGhlbHAgdGhlCj4+Pj4gaW5pdGlhbCBodyBzdGF0ZSByZWFkb3V0IGFuZCB0YWtl b3Zlci4KPj4+Pgo+Pj4+IFBsZWFzZSB1c2UgaW50ZWwtZ2Z4IG1haWxpbmcgbGlzdCBmb3IgaTkx NSBwYXRjaGVzLgo+Pj4+Cj4+Pj4+IEZvciB0aGlzIHRvbywgSSB3aWxsIHNlbmQgYSBwYXRjaCB0 byBtYWtlIGl0IG1vcmUgY2xlYXIuCj4+Pj4+Cj4+Pj4+IFNpZ25lZC1vZmYtYnk6IFN3YXRpIFNo YXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+Cj4+Pj4+IC0tLQo+Pj4+PiAgICBkcml2ZXJz L2dwdS9kcm0vaTkxNS9pOTE1X2Rydi5oICAgICAgfCAgIDEgKwo+Pj4+PiAgICBkcml2ZXJzL2dw dS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jICAgfCAxMjcgKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0KPj4+Pj4gICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaW50ZWxfZGlzcGxheS5j IHwgIDUwICsrKysrKysrKysrKysrCj4+Pj4+ICAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVs X2Rydi5oICAgICB8ICAgMSArCj4+Pj4+ICAgIDQgZmlsZXMgY2hhbmdlZCwgMTczIGluc2VydGlv bnMoKyksIDYgZGVsZXRpb25zKC0pCj4+Pj4+Cj4+Pj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9kcnYuaAo+ Pj4+PiBpbmRleCBjNGZmZTE5Li5iNDFiZmFhIDEwMDY0NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2Rydi5oCj4+Pj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2k5 MTVfZHJ2LmgKPj4+Pj4gQEAgLTMzNCw2ICszMzQsNyBAQCBzdHJ1Y3QgZHJtX2k5MTVfZGlzcGxh eV9mdW5jcyB7Cj4+Pj4+ICAgIAkgKiBpbnZvbHZlZCB3aXRoIHRoZSBzYW1lIGNvbW1pdC4KPj4+ Pj4gICAgCSAqLwo+Pj4+PiAgICAJdm9pZCAoKmxvYWRfbHV0cykoY29uc3Qgc3RydWN0IGludGVs X2NydGNfc3RhdGUgKmNydGNfc3RhdGUpOwo+Pj4+PiArCXZvaWQgKCpnZXRfY29uZmlnKShzdHJ1 Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSk7Cj4+Pj4gVGhlIG5hbWUgaXMgdG9vIGdl bmVyaWMuCj4+Pj4KPj4+Pj4gICAgfTsKPj4+Pj4gICAgCj4+Pj4+ICAgICNkZWZpbmUgQ1NSX1ZF UlNJT04obWFqb3IsIG1pbm9yKQkoKG1ham9yKSA8PCAxNiB8IChtaW5vcikpCj4+Pj4+IGRpZmYg LS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jIGIvZHJpdmVycy9ncHUv ZHJtL2k5MTUvaW50ZWxfY29sb3IuYwo+Pj4+PiBpbmRleCBkYTdhMDdkLi5hNTE1ZTlmIDEwMDY0 NAo+Pj4+PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9pbnRlbF9jb2xvci5jCj4+Pj4+ICsr KyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2ludGVsX2NvbG9yLmMKPj4+Pj4gQEAgLTc0LDYgKzc0 LDExIEBACj4+Pj4+ICAgICNkZWZpbmUgSUxLX0NTQ19DT0VGRl8xXzAJCVwKPj4+Pj4gICAgCSgo NyA8PCAxMikgfCBJTEtfQ1NDX0NPRUZGX0ZQKENUTV9DT0VGRl8xXzAsIDgpKQo+Pj4+PiAgICAK Pj4+Pj4gKy8qIE1hc2sgdG8gZXh0cmFjdCBSR0IgdmFsdWVzIGZyb20gcmVnaXN0ZXJzICovCj4+ Pj4+ICsjZGVmaW5lIENPTE9SX0JMVUVfTUFTSyAgICAgICAgIDB4MDAwMDAzRkYgICAgICAgICAg ICAgIC8qIDk6MCAqLwo+Pj4+PiArI2RlZmluZSBDT0xPUl9HUkVFTl9NQVNLICAgICAgICAweDAw MEZGQzAwICAgICAgICAgICAgICAvKiAxOToxMCAqLwo+Pj4+PiArI2RlZmluZSBDT0xPUl9SRURf TUFTSyAgICAgICAgICAweDNGRjAwMDAwICAgICAgICAgICAgICAvKiAyOToyMCAqLwo+Pj4+IFRo ZXNlIGJlbG9uZyBpbiBpOTE1X3JlZy5oLCBhbmQgeW91IG5lZWQgcGxhdGZvcm0gc3BlY2lmaWMg c2hpZnRzIGFuZAo+Pj4+IG1hc2tzLiBUaGUgY29kZSB0aGF0IHdyaXRlcyB0aGUgcmVnaXN0ZXJz IHNlZW1zIHRvIHVzZSBtYWdpYyBudW1iZXJzLi4uCj4+Pj4KPj4+Pj4gKwo+Pj4+PiAgICBzdGF0 aWMgYm9vbCBsdXRfaXNfbGVnYWN5KGNvbnN0IHN0cnVjdCBkcm1fcHJvcGVydHlfYmxvYiAqbHV0 KQo+Pj4+PiAgICB7Cj4+Pj4+ICAgIAlyZXR1cm4gZHJtX2NvbG9yX2x1dF9zaXplKGx1dCkgPT0g TEVHQUNZX0xVVF9MRU5HVEg7Cj4+Pj4+IEBAIC02NzIsNiArNjc3LDk3IEBAIHN0YXRpYyB2b2lk IGNoZXJyeXZpZXdfbG9hZF9sdXRzKGNvbnN0IHN0cnVjdCBpbnRlbF9jcnRjX3N0YXRlICpjcnRj X3N0YXRlKQo+Pj4+PiAgICAJaTl4eF9sb2FkX2x1dHNfaW50ZXJuYWwoY3J0Y19zdGF0ZSwgTlVM TCk7Cj4+Pj4+ICAgIH0KPj4+Pj4gICAgCj4+Pj4+ICtzdGF0aWMgdm9pZCBiZHdfZ2V0X2dhbW1h X2NvbmZpZyhzdHJ1Y3QgaW50ZWxfY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSwgdTMyIG9mZnNldCkK Pj4+Pj4gK3sKPj4+Pj4gKwlzdHJ1Y3QgaW50ZWxfY3J0YyAqY3J0YyA9IHRvX2ludGVsX2NydGMo Y3J0Y19zdGF0ZS0+YmFzZS5jcnRjKTsKPj4+Pj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAqZGV2ID0g Y3J0Yy0+YmFzZS5kZXY7Cj4+Pj4+ICsJc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmRldl9wcml2 ID0gdG9faTkxNShjcnRjLT5iYXNlLmRldik7Cj4+Pj4+ICsJdTMyIGksIHRtcCwgbHV0X3NpemUg PSBJTlRFTF9JTkZPKGRldl9wcml2KS0+Y29sb3IuZ2FtbWFfbHV0X3NpemU7Cj4+Pj4+ICsJZW51 bSBwaXBlIHBpcGUgPSBjcnRjLT5waXBlOwo+Pj4+PiArCXN0cnVjdCBkcm1fcHJvcGVydHlfYmxv YiAqYmxvYiA9IE5VTEw7Cj4+Pj4+ICsJc3RydWN0IGRybV9jb2xvcl9sdXQgKmJsb2JfZGF0YTsK Pj4+Pj4gKwo+Pj4+PiArCVdBUk5fT04ob2Zmc2V0ICYgflBBTF9QUkVDX0lOREVYX1ZBTFVFX01B U0spOwo+Pj4+PiArCj4+Pj4+ICsJSTkxNV9XUklURShQUkVDX1BBTF9JTkRFWChwaXBlKSwKPj4+ Pj4gKwkJCShvZmZzZXQgPyBQQUxfUFJFQ19TUExJVF9NT0RFIDogMCkgfAo+Pj4+PiArCQkJUEFM X1BSRUNfQVVUT19JTkNSRU1FTlQgfAo+Pj4+PiArCQkJb2Zmc2V0KTsKPj4+Pj4gKwo+Pj4+PiAr CWJsb2IgPSBkcm1fcHJvcGVydHlfY3JlYXRlX2Jsb2IoZGV2LAo+Pj4+PiArCQkJc2l6ZW9mKHN0 cnVjdCBkcm1fY29sb3JfbHV0KSAqIGx1dF9zaXplLAo+Pj4+PiArCQkJTlVMTCk7Cj4+Pj4+ICsJ aWYgKElTX0VSUihibG9iKSkKPj4+Pj4gKwkJcmV0dXJuOwo+Pj4+PiArCj4+Pj4+ICsJYmxvYl9k YXRhID0gYmxvYi0+ZGF0YTsKPj4+Pj4gKwo+Pj4+PiArCWZvciAoaSA9IDA7IGkgPCBsdXRfc2l6 ZTsgaSsrKSB7Cj4+Pj4+ICsJCXRtcCA9IEk5MTVfUkVBRChQUkVDX1BBTF9EQVRBKHBpcGUpKTsK Pj4+Pj4gKwkJLyoKPj4+Pj4gKwkJICogVE9ETzogY29udmVydCBSR0IgdmFsdWUgcmVhZCBmcm9t IHJlZ2lzdGVyIGludG8gY29ycmVzcG9uZGluZyB1c2VyIHZhbHVlIHVzaW5nCj4+Pj4+ICsJCSAq IHNvbWUgd3JhcHBlciBsaWtlIGRybV9jb2xvcl9sdXRfcHV0KCkgKG9yKSBpbnRlbF9jb2xvcl9s dXRfcHV0KCkgc28gdGhhdCBpdAo+Pj4+PiArCQkgKiBjYW4gYmUgY29tcGFyZWQgbGF0ZXIuCj4+ Pj4+ICsJCSAqLwo+Pj4+IFllYWgsIHlvdSdsbCBuZWVkIHRoaXMuCj4+PiBDYW4geW91IHBsZWFz ZSBoZWxwIGluIHRoaXM/Cj4+IFNvbWV0aGluZyBsaWtlIHRoaXM6Cj4+Cj4+IC8qIGNvbnZlcnQg aHcgdmFsdWUgd2l0aCBnaXZlbiBiaXRfcHJlY2lzaW9uIHRvIGx1dCBwcm9wZXJ0eSB2YWwgKi8K Pj4gdTMyIGRybV9jb2xvcl9sdXRfcGFjayh1MzIgdmFsLCB1MzIgYml0X3ByZWNpc2lvbikKPj4g ewo+PiAJdTMyIG1heCA9IDB4ZmZmZiA+PiAoMTYgLSBiaXRfcHJlY2lzaW9uKTsKPj4KPj4gCXZh bCA9IGNsYW1wX3ZhbCh2YWwsIDAsIG1heCk7Cj4+Cj4+IAlpZiAoYml0X3ByZWNpc2lvbiA8IDE2 KQo+PiAJCXZhbCA8PD0gMTYgLSBiaXRfcHJlY2lzaW9uOwo+Pgo+PiAJcmV0dXJuIHZhbDsKPj4g fQo+Pgo+PiAvKiBjb21wYXJlIHR3byBsdXQgcHJvcGVydHkgdmFsdWVzIHdpdGggZ2l2ZW4gYml0 X3ByZWNpc2lvbiAqLwo+PiBib29sIGRybV9jb2xvcl9sdXRfbWF0Y2godTMyIGEsIHUzMiBiLCB1 MzIgYml0X3ByZWNpc2lvbikKPj4gewo+PiAJdTMyIGVyciA9IDB4ZmZmZiA+PiBiaXRfcHJlY2lz aW9uOwo+Pgo+PiAJcmV0dXJuIGFicygobG9uZylhIC0gYikgPD0gZXJyOwo+PiB9Cj4+Cj4+IEkg ZGlkbid0IGRvdWJsZSBjaGVjayB0aGUgbWF0aCwgYnV0IGl0J3MgcHJvYmFibHkgY2xvc2UgZW5v dWdoIGZvcgo+PiBzdGFydGVycy4gOykKPj4KPj4KPj4KPj4gQlIsCj4+IEphbmkuCj4gSGkgSmFu aSwKPiBTaW5jZSB3ZSBhcmUgbm90IGhhdmluZyBhcHBsZSB0byBhcHBsZSBjb21wYXJpc29uLCBj YW4ndCBpdCBsZWF2ZSBzb21lIAo+IGNvcm5lciBjYXNlcz8gV2UgYXJlIG5vdCBjb21wYXJpbmcg ZGF0YSB3aGljaCBpcyBiZWluZyB3cml0dGVuIGludG8gaC93IAo+IGV4YWN0bHkgdG8gd2hhdCBp cyBiZWluZyByZWFkLiBGb3IgaW5zdGFuY2UgZHVyaW5nIHJvdW5kIG9mZiB3ZSBtYXkgdGFrZSAK PiB0aGUgY2VpbGluZyB2YWx1ZSBvZiBSR0IgZGF0YSwgd2hpbGUgcmVhZGluZyByZWdpc3RlciBp ZiB3ZSBnZXQgdGhlIAo+IGZsb29yIHZhbHVlIG9mIFJHQiBkYXRhLCB0aGlzIGxvZ2ljIG1pZ2h0 IG5vdCBjYXRjaCB0aGUgaXNzdWUgY296IHRoZSAKPiBhYnMgZGlmZmVyZW5jZSBmcm9tIHRoZSBh Y3R1YWwgUkdCIHZhbHVlIG1heSBmYWxsIGluc2lkZSB0aGUgZXJyb3IgcmFuZ2UgCj4gYnV0IHN0 aWxsIGluZGl2aWR1YWwgdmFsdWVzIHdvbid0IGJlIGVxdWFsLgo+IFNvLCBpcyBpdCB0aGUgb25s eSB3YXkgdG8gcHJvY2VlZD8KClRoZSBmb2xsb3dpbmcgbGl0dGxlIHVzZXJzcGFjZSBzbmlwcGV0 IHRlc3RzIHRoZSByZWFkb3V0IGFuZCBtYXRjaApmdW5jdGlvbnMgYWNyb3NzIGFsbCBwb3NzaWJs ZSBpbnB1dCB2YWx1ZXMgYW5kIGJpdCBwcmVjaXNpb25zLCBhbmQgZG9lcwpub3QgZmluZCBhbnkg aXNzdWVzLgoKRG8geW91IHN0aWxsIHNlZSBhbiBpc3N1ZT8KCgpCUiwKSmFuaS4KCi0tLQoKLyog U1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVCAqLwojaW5jbHVkZSA8c3RkaW8uaD4KI2luY2x1 ZGUgPGludHR5cGVzLmg+CiNpbmNsdWRlIDxzdGRib29sLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4K CnVpbnQzMl90IGNsYW1wX3ZhbCh1aW50MzJfdCB2YWwsIHVpbnQzMl90IGxvLCB1aW50MzJfdCBo aSkKewoJaWYgKHZhbCA8IGxvKQoJCXJldHVybiBsbzsKCWlmICh2YWwgPiBoaSkKCQlyZXR1cm4g aGk7CglyZXR1cm4gdmFsOwp9Cgp1aW50MzJfdCBkcm1fY29sb3JfbHV0X2V4dHJhY3QodWludDMy X3QgdXNlcl9pbnB1dCwgdWludDMyX3QgYml0X3ByZWNpc2lvbikKewoJdWludDMyX3QgdmFsID0g dXNlcl9pbnB1dDsKCXVpbnQzMl90IG1heCA9IDB4ZmZmZiA+PiAoMTYgLSBiaXRfcHJlY2lzaW9u KTsKCgkvKiBSb3VuZCBvbmx5IGlmIHdlJ3JlIG5vdCB1c2luZyBmdWxsIHByZWNpc2lvbi4gKi8K CWlmIChiaXRfcHJlY2lzaW9uIDwgMTYpIHsKCQl2YWwgKz0gMVVMIDw8ICgxNiAtIGJpdF9wcmVj aXNpb24gLSAxKTsKCQl2YWwgPj49IDE2IC0gYml0X3ByZWNpc2lvbjsKCX0KCglyZXR1cm4gY2xh bXBfdmFsKHZhbCwgMCwgbWF4KTsKfQoKdWludDMyX3QgZHJtX2NvbG9yX2x1dF9wYWNrKHVpbnQz Ml90IHZhbCwgdWludDMyX3QgYml0X3ByZWNpc2lvbikKewoJdWludDMyX3QgbWF4ID0gMHhmZmZm ID4+ICgxNiAtIGJpdF9wcmVjaXNpb24pOwoKCXZhbCA9IGNsYW1wX3ZhbCh2YWwsIDAsIG1heCk7 CgoJaWYgKGJpdF9wcmVjaXNpb24gPCAxNikKCQl2YWwgPDw9IDE2IC0gYml0X3ByZWNpc2lvbjsK CglyZXR1cm4gdmFsOwp9Cgpib29sIGRybV9jb2xvcl9sdXRfbWF0Y2godWludDMyX3QgYSwgdWlu dDMyX3QgYiwgdWludDMyX3QgYml0X3ByZWNpc2lvbikKewoJdWludDMyX3QgZXJyID0gMHhmZmZm ID4+IGJpdF9wcmVjaXNpb247CgoJcmV0dXJuIGFicygobG9uZylhIC0gYikgPD0gZXJyOwp9Cgpp bnQgbWFpbih2b2lkKQp7Cgl1aW50MzJfdCBpbnB1dCwgcHJlY2lzaW9uLCBodywgcmVhZG91dDsK Cglmb3IgKHByZWNpc2lvbiA9IDE7IHByZWNpc2lvbiA8PSAxNjsgcHJlY2lzaW9uKyspIHsKCQlm b3IgKGlucHV0ID0gMDsgaW5wdXQgPD0gMHhmZmZmOyBpbnB1dCsrKSB7CgkJCS8qIGZyb20gbHV0 IHByb3BlcnR5IHRvIGhhcmR3YXJlICovCgkJCWh3ID0gZHJtX2NvbG9yX2x1dF9leHRyYWN0KGlu cHV0LCBwcmVjaXNpb24pOwoKCQkJLyogaGFyZHdhcmUgcmVhZG91dCwgd2l0aCBwb3RlbnRpYWwg bG9zcyBvZiBwcmVjaXNpb24gKi8KCQkJcmVhZG91dCA9IGRybV9jb2xvcl9sdXRfcGFjayhodywg cHJlY2lzaW9uKTsKCgkJCWlmICghZHJtX2NvbG9yX2x1dF9tYXRjaChpbnB1dCwgcmVhZG91dCwg cHJlY2lzaW9uKSkgewoJCQkJcHJpbnRmKCJpbnB1dCAlMDR4LCBwcmVjaXNpb24gJWQsIGhhcmR3 YXJlICUwNHgsIHJlYWRvdXQgJTA0eCwgZGlmZiAlZFxuIiwKCQkJCSAgICAgICBpbnB1dCwgcHJl Y2lzaW9uLCBodywgcmVhZG91dCwgaW5wdXQgLSByZWFkb3V0KTsKCQkJfQoJCX0KCX0KCglyZXR1 cm4gMDsKfQoKCgotLSAKSmFuaSBOaWt1bGEsIEludGVsIE9wZW4gU291cmNlIEdyYXBoaWNzIENl bnRlcgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRl bC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6 Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZng=