From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id 1167110E2F0 for ; Mon, 3 Oct 2022 11:01:39 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "Gupta, Nidhi1" Date: Mon, 3 Oct 2022 11:01:34 +0000 Message-ID: <13285e53dad06c84c203f876f3ee17dd1e414e1c.camel@intel.com> References: <20220929092845.6684-1-nidhi1.gupta@intel.com> In-Reply-To: <20220929092845.6684-1-nidhi1.gupta@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t] tests/i915/i915_pm_backlight: Add new subtest to validate dual panel backlight List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Murthy, Arun R" , "Latvala, Petri" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: T24gVGh1LCAyMDIyLTA5LTI5IGF0IDE0OjU4ICswNTMwLCBOaWRoaSBHdXB0YSB3cm90ZToKPiBT aW5jZSBkcml2ZXIgY2FuIG5vdyBzdXBwb3J0IG11bHRpcGxlIGVEUHMgYW5kIERlYnVnZnMgc3Ry dWN0dXJlIGZvcgo+IGJhY2tsaWdodCBjaGFuZ2VkIHBlciBjb25uZWN0b3IgdGhlIHRlc3Qgc2hv dWxkIHRoZW4gaXRlcmF0ZSB0aHJvdWdoCj4gYWxsIGVEUCBjb25uZWN0b3JzLgo+IAo+IFNpZ25l ZC1vZmYtYnk6IE5pZGhpIEd1cHRhIDxuaWRoaTEuZ3VwdGFAaW50ZWwuY29tPgo+IC0tLQo+IMKg dGVzdHMvaTkxNS9pOTE1X3BtX2JhY2tsaWdodC5jIHwgMTEwICsrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tLS0KPiAtLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDgwIGluc2VydGlvbnMoKyksIDMw IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xp Z2h0LmMKPiBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9iYWNrbGlnaHQuYwo+IGluZGV4IGNhZmFlN2Y3 Li5iZjY3YjUwYyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMK PiArKysgYi90ZXN0cy9pOTE1L2k5MTVfcG1fYmFja2xpZ2h0LmMKPiBAQCAtMzQsOSArMzQsMTIg QEAKPiDCoCNpbmNsdWRlIDxlcnJuby5oPgo+IMKgI2luY2x1ZGUgPHVuaXN0ZC5oPgo+IMKgI2lu Y2x1ZGUgPHRpbWUuaD4KPiArI2luY2x1ZGUgImlndF9kZXZpY2UuaCIKPiArI2luY2x1ZGUgImln dF9kZXZpY2Vfc2Nhbi5oIgo+IMKgCj4gwqBzdHJ1Y3QgY29udGV4dCB7Cj4gwqDCoMKgwqDCoMKg wqDCoGludCBtYXg7Cj4gK8KgwqDCoMKgwqDCoMKgY29uc3QgY2hhciAqcGF0aDsKPiDCoH07Cj4g wqAKPiDCoAo+IEBAIC00OCwxNCArNTEsMTQgQEAgc3RydWN0IGNvbnRleHQgewo+IMKgCj4gwqBJ R1RfVEVTVF9ERVNDUklQVElPTigiQmFzaWMgYmFja2xpZ2h0IHN5c2ZzIHRlc3QiKTsKPiDCoAo+ IC1zdGF0aWMgaW50IGJhY2tsaWdodF9yZWFkKGludCAqcmVzdWx0LCBjb25zdCBjaGFyICpmbmFt ZSkKPiArc3RhdGljIGludCBiYWNrbGlnaHRfcmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hhciAq Zm5hbWUsIHN0cnVjdAo+IGNvbnRleHQgKmNvbnRleHQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDC oGludCBmZDsKPiDCoMKgwqDCoMKgwqDCoMKgY2hhciBmdWxsW1BBVEhfTUFYXTsKPiDCoMKgwqDC oMKgwqDCoMKgY2hhciBkc3RbNjRdOwo+IMKgwqDCoMKgwqDCoMKgwqBpbnQgciwgZTsKPiDCoAo+ IC3CoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoc25wcmludGYoZnVsbCwgUEFUSF9NQVgsICIlcy8l cyIsIEJBQ0tMSUdIVF9QQVRILAo+IGZuYW1lKSA8IFBBVEhfTUFYKTsKPiArwqDCoMKgwqDCoMKg wqBpZ3RfYXNzZXJ0KHNucHJpbnRmKGZ1bGwsIFBBVEhfTUFYLCAiJXMvJXMvJXMiLAo+IEJBQ0tM SUdIVF9QQVRILCBjb250ZXh0LT5wYXRoLCBmbmFtZSkgPCBQQVRIX01BWCk7Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgZmQgPSBvcGVuKGZ1bGwsIE9fUkRPTkxZKTsKPiDCoMKgwqDCoMKgwqDCoMKg aWYgKGZkID09IC0xKQo+IEBAIC03MywxNCArNzYsMTQgQEAgc3RhdGljIGludCBiYWNrbGlnaHRf cmVhZChpbnQgKnJlc3VsdCwgY29uc3QgY2hhcgo+ICpmbmFtZSkKPiDCoMKgwqDCoMKgwqDCoMKg cmV0dXJuIGVycm5vOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyBpbnQgYmFja2xpZ2h0X3dyaXRlKGlu dCB2YWx1ZSwgY29uc3QgY2hhciAqZm5hbWUpCj4gK3N0YXRpYyBpbnQgYmFja2xpZ2h0X3dyaXRl KGludCB2YWx1ZSwgY29uc3QgY2hhciAqZm5hbWUsIHN0cnVjdAo+IGNvbnRleHQgKmNvbnRleHQp Cj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCBmZDsKPiDCoMKgwqDCoMKgwqDCoMKgY2hhciBm dWxsW1BBVEhfTUFYXTsKPiDCoMKgwqDCoMKgwqDCoMKgY2hhciBzcmNbNjRdOwo+IMKgwqDCoMKg wqDCoMKgwqBpbnQgbGVuOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydChzbnByaW50 ZihmdWxsLCBQQVRIX01BWCwgIiVzLyVzIiwgQkFDS0xJR0hUX1BBVEgsCj4gZm5hbWUpIDwgUEFU SF9NQVgpOwo+ICvCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnQoc25wcmludGYoZnVsbCwgUEFUSF9N QVgsICIlcy8lcy8lcyIsCj4gQkFDS0xJR0hUX1BBVEgsIGNvbnRleHQtPnBhdGgsIGZuYW1lKSA8 IFBBVEhfTUFYKTsKPiDCoMKgwqDCoMKgwqDCoMKgZmQgPSBvcGVuKGZ1bGwsIE9fV1JPTkxZKTsK PiDCoMKgwqDCoMKgwqDCoMKgaWYgKGZkID09IC0xKQo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIC1lcnJubzsKPiBAQCAtMTAwLDEyICsxMDMsMTIgQEAgc3RhdGljIHZv aWQgdGVzdF9hbmRfdmVyaWZ5KHN0cnVjdCBjb250ZXh0Cj4gKmNvbnRleHQsIGludCB2YWwpCj4g wqDCoMKgwqDCoMKgwqDCoGNvbnN0IGludCB0b2xlcmFuY2UgPSB2YWwgKiBUT0xFUkFOQ0UgLyAx MDA7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCByZXN1bHQ7Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBp Z3RfYXNzZXJ0X2VxKGJhY2tsaWdodF93cml0ZSh2YWwsICJicmlnaHRuZXNzIiksIDApOwo+IC3C oMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEoYmFja2xpZ2h0X3JlYWQoJnJlc3VsdCwgImJyaWdo dG5lc3MiKSwgMCk7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9lcShiYWNrbGlnaHRfd3Jp dGUodmFsLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpLAo+IDApOwo+ICvCoMKgwqDCoMKgwqDCoGln dF9hc3NlcnRfZXEoYmFja2xpZ2h0X3JlYWQoJnJlc3VsdCwgImJyaWdodG5lc3MiLCBjb250ZXh0 KSwKPiAwKTsKPiDCoMKgwqDCoMKgwqDCoMKgLyogQ2hlY2sgdGhhdCB0aGUgZXhhY3QgdmFsdWUg c3RpY2tzICovCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZXEocmVzdWx0LCB2YWwpOwo+ IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9lcShiYWNrbGlnaHRfcmVhZCgmcmVzdWx0 LCAiYWN0dWFsX2JyaWdodG5lc3MiKSwKPiAwKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0 X2VxKGJhY2tsaWdodF9yZWFkKCZyZXN1bHQsICJhY3R1YWxfYnJpZ2h0bmVzcyIsCj4gY29udGV4 dCksIDApOwo+IMKgwqDCoMKgwqDCoMKgwqAvKiBTb21lIHJvdW5kaW5nIG1heSBoYXBwZW4gZGVw ZW5kaW5nIG9uIGh3ICovCj4gwqDCoMKgwqDCoMKgwqDCoGlndF9hc3NlcnRfZihyZXN1bHQgPj0g bWF4KDAsIHZhbCAtIHRvbGVyYW5jZSkgJiYKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHJlc3VsdCA8PSBtaW4oY29udGV4dC0+bWF4LCB2YWwgKyB0b2xlcmFuY2Up LAo+IEBAIC0xMjQsMTYgKzEyNywxNiBAQCBzdGF0aWMgdm9pZCB0ZXN0X2JhZF9icmlnaHRuZXNz KHN0cnVjdCBjb250ZXh0Cj4gKmNvbnRleHQpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGludCB2 YWw7Cj4gwqDCoMKgwqDCoMKgwqDCoC8qIEZpcnN0IHdyaXRlIHNvbWUgc2FuZSB2YWx1ZSAqLwo+ IC3CoMKgwqDCoMKgwqDCoGJhY2tsaWdodF93cml0ZShjb250ZXh0LT5tYXggLyAyLCAiYnJpZ2h0 bmVzcyIpOwo+ICvCoMKgwqDCoMKgwqDCoGJhY2tsaWdodF93cml0ZShjb250ZXh0LT5tYXggLyAy LCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDCoMKgwqAvKiBXcml0aW5nIGlu dmFsaWQgdmFsdWVzIHNob3VsZCBmYWlsIGFuZCBub3QgY2hhbmdlIHRoZQo+IHZhbHVlICovCj4g LcKgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoLTEsICJicmlnaHRu ZXNzIiksIDApOwo+IC3CoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRu ZXNzIik7Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoLTEs ICJicmlnaHRuZXNzIiwgY29udGV4dCksIDApOwo+ICvCoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9y ZWFkKCZ2YWwsICJicmlnaHRuZXNzIiwgY29udGV4dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9h c3NlcnRfZXEodmFsLCBjb250ZXh0LT5tYXggLyAyKTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3RfYXNz ZXJ0X2x0KGJhY2tsaWdodF93cml0ZShjb250ZXh0LT5tYXggKyAxLAo+ICJicmlnaHRuZXNzIiks IDApOwo+IC3CoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9yZWFkKCZ2YWwsICJicmlnaHRuZXNzIik7 Cj4gK8KgwqDCoMKgwqDCoMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoY29udGV4dC0+ bWF4ICsgMSwgImJyaWdodG5lc3MiLAo+IGNvbnRleHQpLCAwKTsKPiArwqDCoMKgwqDCoMKgwqBi YWNrbGlnaHRfcmVhZCgmdmFsLCAiYnJpZ2h0bmVzcyIsIGNvbnRleHQpOwo+IMKgwqDCoMKgwqDC oMKgwqBpZ3RfYXNzZXJ0X2VxKHZhbCwgY29udGV4dC0+bWF4IC8gMik7Cj4gLcKgwqDCoMKgwqDC oMKgaWd0X2Fzc2VydF9sdChiYWNrbGlnaHRfd3JpdGUoSU5UX01BWCwgImJyaWdodG5lc3MiKSwg MCk7Cj4gLcKgwqDCoMKgwqDCoMKgYmFja2xpZ2h0X3JlYWQoJnZhbCwgImJyaWdodG5lc3MiKTsK PiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2x0KGJhY2tsaWdodF93cml0ZShJTlRfTUFYLCAi YnJpZ2h0bmVzcyIsCj4gY29udGV4dCksIDApOwo+ICvCoMKgwqDCoMKgwqDCoGJhY2tsaWdodF9y ZWFkKCZ2YWwsICJicmlnaHRuZXNzIiwgY29udGV4dCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9h c3NlcnRfZXEodmFsLCBjb250ZXh0LT5tYXggLyAyKTsKPiDCoH0KPiDCoAo+IEBAIC0xODYsNiAr MTg5LDggQEAgaWd0X21haW4KPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfdCBkaXNwbGF5 Owo+IMKgwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiDCoMKgwqDCoMKgwqDC oMKgc3RydWN0IGlndF9mYiBmYjsKPiArwqDCoMKgwqDCoMKgwqBjb25zdCBjaGFyICpwYXRoc1sy XVs1MF07Cj4gK8KgwqDCoMKgwqDCoMKgY2hhciBwYXRoMVtQQVRIX01BWF07Cj4gwqAKPiDCoMKg wqDCoMKgwqDCoMKgaWd0X2ZpeHR1cmUgewo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZW51bSBwaXBlIHBpcGU7Cj4gQEAgLTIwMiwxMCArMjA3LDYgQEAgaWd0X21haW4KPiDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGttc3Rlc3Rfc2V0X3Z0X2dyYXBoaWNzX21vZGUo KTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3JlcXVpcmUo JmRpc3BsYXksCj4gZHJtX29wZW5fZHJpdmVyKERSSVZFUl9JTlRFTCkpOwo+IMKgCj4gLcKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIEdldCB0aGUgbWF4IHZhbHVlIGFuZCBza2lwIHRo ZSB3aG9sZSB0ZXN0IGlmIHN5c2ZzCj4gaW50ZXJmYWNlIG5vdCBhdmFpbGFibGUgKi8KPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3NraXBfb24oYmFja2xpZ2h0X3JlYWQoJm9s ZCwgImJyaWdodG5lc3MiKSk7Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9h c3NlcnQoYmFja2xpZ2h0X3JlYWQoJmNvbnRleHQubWF4LAo+ICJtYXhfYnJpZ2h0bmVzcyIpID4g LTEpOwo+IC0KPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHNob3VsZCBiZSAu Li8uLi9jYXJkWC0kb3V0cHV0ICovCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfYXNzZXJ0X2x0KDEyLCByZWFkbGluayhCQUNLTElHSFRfUEFUSCAiL2RldmljZSIsCj4gZnVs bF9uYW1lLCBzaXplb2YoZnVsbF9uYW1lKSAtIDEpKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoG5hbWUgPSBiYXNlbmFtZShmdWxsX25hbWUpOwo+IEBAIC0yMzMsMjIgKzIzNCw3 MSBAQCBpZ3RfbWFpbgo+IMKgCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf ZGlzcGxheV9jb21taXQyKCZkaXNwbGF5LCBkaXNwbGF5LmlzX2F0b21pYyA/Cj4gQ09NTUlUX0FU T01JQyA6IENPTU1JVF9MRUdBQ1kpOwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg aWd0X3BtX2VuYWJsZV9zYXRhX2xpbmtfcG93ZXJfbWFuYWdlbWVudCgpOwo+ICsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbWVtY3B5KHBhdGhzWzBdLCAiaW50ZWxfYmFja2xpZ2h0 IiwgOCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGZvciAoaW50IGkgPSAwOyAo aSA9IGRpc3BsYXkubl9vdXRwdXRzKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvdXRwdXQgPSAmZGlzcGxheS5vdXRwdXRzW2ldOwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKCldoYXQgaWd0X291dHB1dF9zZXRfcGlwZShvdXRw dXQsIFBJUEVfQU5ZKSBpcyBkb2luZz8KCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBzbnByaW50ZihwYXRoMSwgMTAwICwgImNhcmQlaS0lcy1iYWNrbGln aHQiLAo+IGlndF9kZXZpY2VfZ2V0X2NhcmRfaW5kZXgoZGlzcGxheS5kcm1fZmQpLCBpZ3Rfb3V0 cHV0X25hbWUob3V0cHV0KSk7CgpJJ20gbm90IHN1cmUgaWYgY2FyZCogY2FuIGJlIHNvbWV0aGlu ZyBlbHNlIHRoYW4gY2FyZDA/IERlZmluZXRlbHkgaXQKaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCBu X291dHB1dHMuCgoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGludCBmZCA9IG9wZW4ocGF0aDEsIE9fV1JPTkxZKTsKCllvdSBjYW4ndCBleHBlY3QgY2Fy ZHgteHh4LWJhY2tsaWdodCB0byBzdWNjZWVkLiBUaGVyZSBoYXMgdG8gYmUgc29tZQpwYXRoIChl LmcuIC9zeXMvZGV2L2NoYXIvMjI2XDowL2NhcmR4LXh4eC1iYWNrbGlnaHQpLiBNYXliZQppZ3Rf c3lzZnNfcGF0aCBjb3VsZCBiZSB1c2VkIGhlcmU/Cgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGZkID09IC0xKQo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGNvbnRpbnVlOwoK Y2xvc2UoZmQpOwoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG1lbWNweShwYXRoc1sxXSwgbmFtZSwgMzApOwoKWW91IGhhdmUgcGF0aHNbMF0gPSBpbnRl bF9iYWNrbGlnaHQgYW5kIHBhdGhzWzFdID0gY2FyZDAtZURQMT8gWW91CndhbnRlZCB0byBjb3B5 IHBhdGgxPwoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGJyZWFrOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9CgpUaGlzIGxvb3AgZ2Vu ZXJhbGx5IGxvb2tzIHN0cmFuZ2UuIFlvdSBhcmUgY2hlY2tpbmcgcGF0aDEgY29weWluZwp2YXJp YWJsZSAibmFtZSIgaW50byBwYXRoc1sxXSA/Cgo+IAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAvKiBHZXQgdGhlIG1heCB2YWx1ZSBhbmQgc2tpcCB0aGUgd2hvbGUgdGVzdCBpZiBz eXNmcwo+IGludGVyZmFjZSBub3QgYXZhaWxhYmxlICovCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZW9mKHBhdGhzKSAvCj4gc2l6ZW9m KHBhdGhzWzBdKTsgaSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBtZW1jcHkoJmNvbnRleHQucGF0aCwgcGF0aHNbaV0sIDgpOwoKaXMgOCBlbm91 Z2g/IEkgdGhpbmsgeW91IHNob3VsZCB1c2UgcG9pbnRlciBoZXJlIGluc3RlYWQgb2YgY29weWlu ZyBpdAoKCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3Rfc2tpcF9vbihiYWNrbGlnaHRfcmVhZCgmb2xkLAo+ICJicmlnaHRuZXNzIiwgJmNvbnRleHQp KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9h c3NlcnQoYmFja2xpZ2h0X3JlYWQoJmNvbnRleHQubWF4LAo+ICJtYXhfYnJpZ2h0bmVzcyIsICZj b250ZXh0KSA+IC0xKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKg wqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqAKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVz dF93aXRoX2R5bmFtaWMoImJhc2ljLWJyaWdodG5lc3MiKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc2l6ZW9mKHBhdGhzKSAvCj4gc2l6 ZW9mKHBhdGhzWzBdKTsgaisrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCJjb25uZWN0b3ItJXp1Iiwgaikgewo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oG1lbWNweSgmY29udGV4dC5wYXRoLCBwYXRoc1tqXSwgOCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9icmlnaHRu ZXNzKCZjb250ZXh0KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKg wqDCoH0KPiArwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWMoImJhZC1icmln aHRuZXNzIikgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKHNpemVfdCBq ID0gMDsgaiA8IHNpemVvZihwYXRocykgLwo+IHNpemVvZihwYXRoc1swXSk7IGorKykgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2R5bmFtaWNf ZigiY29ubmVjdG9yLSV6dSIsIGopIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtZW1jcHkoJmNvbnRleHQucGF0aCwgcGF0 aHNbal0sIDgpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfYmFkX2JyaWdodG5lc3MoJmNvbnRleHQpOwo+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKgfQo+ICsKPiArwqDCoMKgwqDC oMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWMoImZhZGUiKSB7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGZvciAoc2l6ZV90IGogPSAwOyBqIDwgc2l6ZW9mKHBhdGhzKSAvCj4g c2l6ZW9mKHBhdGhzWzBdKTsgaisrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCJjb25uZWN0b3ItJXp1Iiwgaikgewo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG1lbWNweSgmY29udGV4dC5wYXRoLCBwYXRoc1tqXSwgOCk7Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9mYWRl KCZjb250ZXh0KTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gwqAKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfc3VidGVzdCgiYmFzaWMtYnJpZ2h0bmVzcyIp Cj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfYnJpZ2h0bmVzcygmY29udGV4 dCk7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3QoImJhZC1icmlnaHRuZXNzIikKPiAtwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdGVzdF9iYWRfYnJpZ2h0bmVzcygmY29udGV4dCk7 Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X3N1YnRlc3QoImZhZGUiKQo+IC3CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqB0ZXN0X2ZhZGUoJmNvbnRleHQpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9z dWJ0ZXN0KCJmYWRlX3dpdGhfZHBtcyIpCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHRlc3RfZmFkZV93aXRoX2RwbXMoJmNvbnRleHQsIG91dHB1dCk7Cj4gLcKgwqDCoMKgwqDCoMKg aWd0X3N1YnRlc3QoImZhZGVfd2l0aF9zdXNwZW5kIikKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgdGVzdF9mYWRlX3dpdGhfc3VzcGVuZCgmY29udGV4dCwgb3V0cHV0KTsKPiArwqDC oMKgwqDCoMKgwqBpZ3Rfc3VidGVzdF93aXRoX2R5bmFtaWMoImZhZGVfd2l0aF9kcG1zIikgewo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3IgKHNpemVfdCBqID0gMDsgaiA8IHNp emVvZihwYXRocykgLwo+IHNpemVvZihwYXRoc1swXSk7IGorKykgewo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2R5bmFtaWNfZigiY29ubmVjdG9y LSV6dSIsIGopIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBtZW1jcHkoJmNvbnRleHQucGF0aCwgcGF0aHNbal0sIDgpOwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoHRlc3RfZmFkZV93aXRoX2RwbXMoJmNvbnRleHQsCj4gb3V0cHV0KTsKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoH0KPiArCj4gK8KgwqDCoMKgwqDC oMKgaWd0X3N1YnRlc3Rfd2l0aF9keW5hbWljKCJmYWRlX3dpdGhfc3VzcGVuZCIpIHsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzaXplb2Yo cGF0aHMpIC8KPiBzaXplb2YocGF0aHNbMF0pOyBqKyspIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9keW5hbWljX2YoImNvbm5lY3Rvci0lenUi LCBqKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbWVtY3B5KCZjb250ZXh0LnBhdGgsIHBhdGhzW2pdLCA4KTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqB0ZXN0X2ZhZGVfd2l0aF9zdXNwZW5kKCZjb250ZXh0LAo+IG91dHB1dCk7Cj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoH0KPiArwqDCoMKgwqDCoMKgwqB9Cj4gwqAKPiDCoMKgwqDCoMKgwqDC oMKgaWd0X2ZpeHR1cmUgewo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKiBSZXN0 b3JlIG9sZCBicmlnaHRuZXNzICovCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGJh Y2tsaWdodF93cml0ZShvbGQsICJicmlnaHRuZXNzIik7Cj4gwqAKPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X2ZpbmkoJmRpc3BsYXkpOwo+IMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X3JlbW92ZV9mYihkaXNwbGF5LmRybV9mZCwgJmZiKTsK Cg==