From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id BA6B889DA7 for ; Tue, 21 Jul 2020 11:19:48 +0000 (UTC) References: <20200720165011.23918-1-bhanuprakash.modem@intel.com> From: Karthik B S Message-ID: <159bb938-53a2-cc53-c331-1056b85ed4b4@intel.com> Date: Tue, 21 Jul 2020 16:49:45 +0530 MIME-Version: 1.0 In-Reply-To: <20200720165011.23918-1-bhanuprakash.modem@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t] Add new IGT test to validate crtc Dithering List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Transfer-Encoding: base64 Content-Type: text/plain; charset="utf-8"; Format="flowed" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: Bhanuprakash Modem , igt-dev@lists.freedesktop.org List-ID: SGksCgpPbiA3LzIwLzIwMjAgMTA6MjAgUE0sIEJoYW51cHJha2FzaCBNb2RlbSB3cm90ZToKPiBF dmVuIHRob3VnaCBmZWF0dXJlIERpdGhlcmluZyBpcyB0aGVyZSBzaW5jZSBsZWdhY3ksIHRoZXJl IGlzIG5vCj4gc3BlY2lmaWMgSUdUIGZvciB0aGlzLgo+IAo+IFRoaXMgcGF0Y2ggd2lsbCBjcmVh dGUgTmV3IElHVCBmb3IgRGl0aGVyaW5nLiBBbmQgYmVsb3cgaXMgdGhlCj4gdHJ1dGggdGFibGUg Zm9yIENSVEMgRGl0aGVyaW5nLgo+IAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0t LS0tLS0tLS0tfAo+IHwgIEZyYW1lIGJ1ZmZlciAgfCAgUGFuZWwgIHwgIERpdGhlcmluZyAgfAo+ IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwgICAgICA4IEJQ QyAgICAgfCAgNiBCUEMgIHwgICAgIFllcyAgICAgfAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0t LS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwgICAgICA4IEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIE5v ICAgICAgfAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwg ICAgICA4IEJQQyAgICAgfCAxMCBCUEMgIHwgICAgIE5vICAgICAgfAo+IHwtLS0tLS0tLS0tLS0t LS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwgICAgIDEwIEJQQyAgICAgfCAgNiBCUEMg IHwgICAgIFllcyAgICAgfAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0t LS0tfAo+IHwgICAgIDEwIEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIFllcyAgICAgfAo+IHwtLS0t LS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwgICAgIDEwIEJQQyAgICAg fCAxMCBCUEMgIHwgICAgIE5vICAgICAgfAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwt LS0tLS0tLS0tLS0tfAo+IHwgICAgIDE2IEJQQyAgICAgfCAgNiBCUEMgIHwgICAgIFllcyAgICAg fAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwgICAgIDE2 IEJQQyAgICAgfCAgOCBCUEMgIHwgICAgIFllcyAgICAgfAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0t LS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+IHwgICAgIDE2IEJQQyAgICAgfCAxMCBCUEMgIHwgICAg IFllcyAgICAgfAo+IHwtLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tfAo+ CkFkZCB0aGUgdGVzdCBuYW1lIGluIHRoZSBzdWJqZWN0Lgp0ZXN0cy9rbXNfZGl0aGVyOiA8ZXhw bGFuYXRpb24+Cj4gQ2M6IFN3YXRpIFNoYXJtYSA8c3dhdGkyLnNoYXJtYUBpbnRlbC5jb20+Cj4g Q2M6IEthcnRoaWsgQiBTIDxrYXJ0aGlrLmIuc0BpbnRlbC5jb20+Cj4gQ2M6IFVtYSBTaGFua2Fy IDx1bWEuc2hhbmthckBpbnRlbC5jb20+Cj4gQ2M6IFBhbmthaiBCaGFyYWRpeWEgPHBhbmthai5s YXhtaW5hcmF5YW4uYmhhcmFkaXlhQGludGVsLmNvbT4KPiBTaWduZWQtb2ZmLWJ5OiBCaGFudXBy YWthc2ggTW9kZW0gPGJoYW51cHJha2FzaC5tb2RlbUBpbnRlbC5jb20+Cj4gLS0tCj4gICB0ZXN0 cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsKPiAgIHRlc3RzL2ttc19kaXRoZXIuYyAgICAgfCAy NTIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKPiAgIHRlc3RzL21l c29uLmJ1aWxkICAgICAgfCAgIDEgKwo+ICAgMyBmaWxlcyBjaGFuZ2VkLCAyNTQgaW5zZXJ0aW9u cygrKQo+ICAgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ttc19kaXRoZXIuYwo+IAo+IGRpZmYg LS1naXQgYS90ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+ IGluZGV4IDA2NTNjM2QzLi5lODE2MDM3YyAxMDA2NDQKPiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5z b3VyY2VzCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcwo+IEBAIC00Myw2ICs0Myw3IEBA IFRFU1RTX3Byb2dzID0gXAo+ICAgCWttc19jdXJzb3JfY3JjIFwKPiAgIAlrbXNfY3Vyc29yX2Vk Z2Vfd2FsayBcCj4gICAJa21zX2N1cnNvcl9sZWdhY3kgXAo+ICsJa21zX2RpdGhlciBcCj4gICAJ a21zX2RwX2F1eF9kZXYgXAo+ICAgCWttc19kcF9kc2MgXAo+ICAgCWttc19kcF90aWxlZF9kaXNw bGF5IFwKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX2RpdGhlci5jIGIvdGVzdHMva21zX2RpdGhl ci5jCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiBpbmRleCAwMDAwMDAwMC4uZjRiMTQzYmIKPiAt LS0gL2Rldi9udWxsCj4gKysrIGIvdGVzdHMva21zX2RpdGhlci5jCj4gQEAgLTAsMCArMSwyNTIg QEAKPiArLyoKPiArICogQ29weXJpZ2h0IMKpIDIwMjAgSW50ZWwgQ29ycG9yYXRpb24KPiArICoK PiArICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFu eSBwZXJzb24gb2J0YWluaW5nIGEKPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3Nv Y2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiArICogdG8gZGVh bCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQg bGltaXRhdGlvbgo+ICsgKiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg cHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwKPiArICogYW5kL29yIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlCj4gKyAq IFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5n IGNvbmRpdGlvbnM6Cj4gKyAqCj4gKyAqIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIChpbmNsdWRpbmcgdGhlIG5leHQKPiArICogcGFyYWdyYXBo KSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25z IG9mIHRoZQo+ICsgKiBTb2Z0d2FyZS4KPiArICoKPiArICogVEhFIFNPRlRXQVJFIElTIFBST1ZJ REVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKPiAr ICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBP RiBNRVJDSEFOVEFCSUxJVFksCj4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF IEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ICsgKiBUSEUgQ09QWVJJ R0hUIEhPTERFUihTKSBPUiBBVVRIT1IoUykgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFH RVMgT1IKPiArICogT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05U UkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsCj4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElO IENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+ICsgKiBPVEhFUiBE RUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCllvdSBjYW4gbWVudGlvbiB0aGUgYXV0aG9yIGhlcmUu Cj4gKyAqLwo+ICsKPiArI2luY2x1ZGUgImlndC5oIgo+ICsjaW5jbHVkZSA8ZmNudGwuaD4KPiAr I2luY2x1ZGUgPHRlcm1pb3MuaD4KPiArI2luY2x1ZGUgPHVuaXN0ZC5oPgo+ICsKPiArSUdUX1RF U1RfREVTQ1JJUFRJT04oIlRlc3QgRGl0aGVyaW5nIGJsb2NrIHN0YXR1cyIpOwo+ICsKPiArLyog Q29ubmVjdG9yIEJQQyAqLwo+ICsjZGVmaW5lIElHVF9DT05ORUNUT1JfQlBDXzYJCTYKPiArI2Rl ZmluZSBJR1RfQ09OTkVDVE9SX0JQQ184CQk4Cj4gKyNkZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENf MTAJCTEwCj4gKyNkZWZpbmUgSUdUX0NPTk5FQ1RPUl9CUENfMTIJCTEyCj4gKwo+ICsvKiBGcmFt ZWJ1ZmZlciBCUEMgKi8KPiArI2RlZmluZSBJR1RfRlJBTUVfQlVGRkVSX0JQQ184CQk4Cj4gKyNk ZWZpbmUgSUdUX0ZSQU1FX0JVRkZFUl9CUENfMTAJCTEwCj4gKyNkZWZpbmUgSUdUX0ZSQU1FX0JV RkZFUl9CUENfMTYJCTE2Cj4gKwo+ICsvKiBUZXN0IGZsYWdzLiAqLwo+ICtlbnVtIHsKPiArCVRF U1RfTk9ORSA9IDEgPDwgMCwKPiArCVRFU1RfU1VTUEVORCA9IDEgPDwgMSwKPiArfTsKPiArCj4g Ky8qIENvbW1vbiB0ZXN0IGRhdGEuICovCj4gK3R5cGVkZWYgc3RydWN0IGRhdGEgewo+ICsJaWd0 X2Rpc3BsYXlfdCBkaXNwbGF5Owo+ICsJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gKwlpZ3Rfb3V0 cHV0X3QgKm91dHB1dDsKPiArCWlndF9waXBlX3QgKnBpcGU7Cj4gKwlkcm1Nb2RlTW9kZUluZm8g Km1vZGU7Cj4gKwllbnVtIHBpcGUgcGlwZV9pZDsKPiArCWludCBkcm1fZmQ7Cj4gK30gZGF0YV90 Owo+ICsKPiArLyogUHJlcGFyZSB0ZXN0IGRhdGEuICovCj4gK3N0YXRpYyB2b2lkIHByZXBhcmVf dGVzdChkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSkK PiArewo+ICsJaWd0X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ICsKPiAr CWRhdGEtPnBpcGVfaWQgPSBwaXBlOwo+ICsJZGF0YS0+cGlwZSA9ICZkYXRhLT5kaXNwbGF5LnBp cGVzW2RhdGEtPnBpcGVfaWRdOwo+ICsJaWd0X2Fzc2VydChkYXRhLT5waXBlKTsKPiArCj4gKwlp Z3RfZGlzcGxheV9yZXNldChkaXNwbGF5KTsKPiArCj4gKwlkYXRhLT5vdXRwdXQgPSBvdXRwdXQ7 Cj4gKwlpZ3RfYXNzZXJ0KGRhdGEtPm91dHB1dCk7Cj4gKwo+ICsJZGF0YS0+bW9kZSA9IGlndF9v dXRwdXRfZ2V0X21vZGUoZGF0YS0+b3V0cHV0KTsKPiArCWlndF9hc3NlcnQoZGF0YS0+bW9kZSk7 Cj4gKwo+ICsJZGF0YS0+cHJpbWFyeSA9Cj4gKwkJaWd0X3BpcGVfZ2V0X3BsYW5lX3R5cGUoZGF0 YS0+cGlwZSwgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWSk7Cj4gKwo+ICsJaWd0X291dHB1dF9zZXRf cGlwZShkYXRhLT5vdXRwdXQsIGRhdGEtPnBpcGVfaWQpOwo+ICt9Cj4gKwo+ICsvKiBSZXR1cm5z IHRoZSBjdXJyZW50IHN0YXRlIG9mIGRpdGhlcmluZyBmcm9tIHRoZSBjcnRjIGRlYnVnZnMuICov Cj4gK3N0YXRpYyBib29sIGdldF9kaXRoZXJfc3RhdGUoZGF0YV90ICpkYXRhKQo+ICt7Cj4gKwlj aGFyIGJ1ZlsyNTZdOwo+ICsJY2hhciBjcnRjX25hbWVbN107Cj4gKwljaGFyICpzdGFydF9sb2M7 Cj4gKwlpbnQgZmQsIHJlczsKPiArCXVuc2lnbmVkIGludCBzdGF0dXM7Cj4gKwo+ICsJc25wcmlu dGYoY3J0Y19uYW1lLCA3LCAiY3J0Yy0lZCIsIGRhdGEtPnBpcGVfaWQpOwo+ICsJZmQgPSBpZ3Rf ZGVidWdmc19vcGVuKGRhdGEtPmRybV9mZCwgY3J0Y19uYW1lLCBPX1JET05MWSk7Cj4gKwlpZ3Rf YXNzZXJ0KGZkID49IDApOwo+ICsKPiArCXJlcyA9IGlndF9kZWJ1Z2ZzX3NpbXBsZV9yZWFkKGZk LCAiZGl0aGVyIiwgYnVmLCBzaXplb2YoYnVmKSk7Cj4gKwlpZ3RfcmVxdWlyZShyZXMgPiAwKTsK PiArCWNsb3NlKGZkKTsKPiArCj4gKwlpZ3RfYXNzZXJ0KHN0YXJ0X2xvYyA9IHN0cnN0cihidWYs ICJEaXRoZXI6ICIpKTsKPiArCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN0YXJ0X2xvYywgIkRpdGhl cjogJXUiLCAmc3RhdHVzKSwgMSk7Cj4gKwo+ICsJcmV0dXJuICEhc3RhdHVzOwo+ICt9Cj4gKwo+ ICsvKiBSZXR1cm5zIHRoZSBjdXJyZW50IGFuZCBtYXhpbXVtIGJwYyBmcm9tIHRoZSBjb25uZWN0 b3IgZGVidWdmcy4gKi8KPiArc3RhdGljIHVuc2lnbmVkIGludCBnZXRfb3V0cHV0X2JwYyhkYXRh X3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ICt7Cj4gKwljaGFyIGJ1ZlsyNTZdOwo+ ICsJY2hhciAqc3RhcnRfbG9jOwo+ICsJaW50IGZkLCByZXM7Cj4gKwl1bnNpZ25lZCBpbnQgbWF4 X2JwYzsKPiArCj4gKwlmZCA9IGlndF9kZWJ1Z2ZzX2Nvbm5lY3Rvcl9kaXIoZGF0YS0+ZHJtX2Zk LCBvdXRwdXQtPm5hbWUsIE9fUkRPTkxZKTsKPiArCWlndF9hc3NlcnQoZmQgPj0gMCk7Cj4gKwo+ ICsJcmVzID0gaWd0X2RlYnVnZnNfc2ltcGxlX3JlYWQoZmQsICJvdXRwdXRfYnBjIiwgYnVmLCBz aXplb2YoYnVmKSk7Cj4gKwo+ICsJaWd0X3JlcXVpcmUocmVzID4gMCk7Cj4gKwo+ICsJY2xvc2Uo ZmQpOwo+ICsKPiArCWlndF9hc3NlcnQoc3RhcnRfbG9jID0gc3Ryc3RyKGJ1ZiwgIk1heGltdW06 ICIpKTsKPiArCWlndF9hc3NlcnRfZXEoc3NjYW5mKHN0YXJ0X2xvYywgIk1heGltdW06ICV1Iiwg Jm1heF9icGMpLCAxKTsKPiArCj4gKwlyZXR1cm4gbWF4X2JwYzsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQgdGVzdF9kaXRoZXJpbmdfb25fb3V0cHV0KGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90 ICpvdXRwdXQsCj4gKwkJaW50IGZiX2JwYywgaW50IGZiX2Zvcm1hdCwgaW50IG91dHB1dF9icGMs Cj4gKwkJdWludDMyX3QgZmxhZ3MpCj4gK3sKPiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAm ZGF0YS0+ZGlzcGxheTsKPiArCWVudW0gcGlwZSBwaXBlOwo+ICsJaWd0X2ZiX3QgZmI7Cj4gKwlp bnQgcmV0Owo+ICsJYm9vbCBlbmFibGVkOwo+ICsKPiArCWZvcl9lYWNoX3BpcGUoZGlzcGxheSwg cGlwZSkgewo+ICsJCWlmICghaWd0X3BpcGVfY29ubmVjdG9yX3ZhbGlkKHBpcGUsIG91dHB1dCkp Cj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQlpZ3RfaW5mbygiRGl0aGVyaW5nIHRlc3QgZXhlY3V0 aW9uIG9uICVzIFBJUEVfJXNcbiIsCj4gKwkJCQlvdXRwdXQtPm5hbWUsIGttc3Rlc3RfcGlwZV9u YW1lKHBpcGUpKTsKPiArCQlwcmVwYXJlX3Rlc3QoZGF0YSwgb3V0cHV0LCBwaXBlKTsKPiArCkNh biB3ZSBtb3ZlIHRoZSBpZ3RfY3JlYXRlX2ZiIG91dHNpZGUgdGhlIGxvb3A/ClNlZW1zIHJlZHVu ZGFudCBpbnNpZGUgdGhlIGxvb3AgYXMgd2UncmUgbm90IGNoYW5naW5nIGFueXRoaW5nIGhlcmUu CgpBbnkgcGFydGljdWxhciByZWFzb24gd2UncmUgdXNpbmcgNTEyeDUxMiBmb3IgZmI/CklmIHNv LCBzaG91bGQgaXQgYmUgYSBtYWNybz8KPiArCQlyZXQgPSBpZ3RfY3JlYXRlX2ZiKGRhdGEtPmRy bV9mZCwgNTEyLCA1MTIsIGZiX2Zvcm1hdCwKPiArCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01P RF9OT05FLAo+ICsJCQkJICAgICZmYik7Cj4gKwkJaWd0X2Fzc2VydChyZXQpOwo+ICsKPiArCQlp Z3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZmYik7Cj4gKwkJaWd0X3BsYW5lX3NldF9z aXplKGRhdGEtPnByaW1hcnksIGRhdGEtPm1vZGUtPmhkaXNwbGF5LCBkYXRhLT5tb2RlLT52ZGlz cGxheSk7Cj4gKwkJaWd0X291dHB1dF9zZXRfcHJvcF92YWx1ZShkYXRhLT5vdXRwdXQsIElHVF9D T05ORUNUT1JfTUFYX0JQQywgb3V0cHV0X2JwYyk7Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0Mihk aXNwbGF5LCBkaXNwbGF5LT5pc19hdG9taWMgPyBDT01NSVRfQVRPTUlDIDogQ09NTUlUX0xFR0FD WSk7Cj4gKwo+ICsJCS8qIENoZWNrIHRoZSBzdGF0dXMgb2YgRGl0aGVyaW5nIGJsb2NrCj4gKwkJ ICogSWYgZmJfYnBjIGlzIGdyZWF0ZXIgdGhhbiBvdXRwdXRfYnBjLCBEaXRoZXJpbmcgc2hvdWxk IGJlIEVuYWJsZWQKPiArCQkgKiBlbHNlIERpc2FibGVkCj4gKwkJICovCj4gKwkJZW5hYmxlZCA9 IGdldF9kaXRoZXJfc3RhdGUoZGF0YSk7Cj4gKwkJaWYgKGZiX2JwYyA+IG91dHB1dF9icGMpCj4g KwkJCWlndF9hc3NlcnRfZihlbmFibGVkLCAiKGZiXyVkYnBjID4gb3V0cHV0XyVkYnBjKTogRGl0 aGVyIHNob3VsZCBiZSBlbmFibGVkXG4iLAo+ICsJCQkJCWZiX2JwYywgb3V0cHV0X2JwYyk7Cj4g KwkJZWxzZQo+ICsJCQlpZ3RfYXNzZXJ0X2YoIWVuYWJsZWQsICIoZmJfJWRicGMgPD0gb3V0cHV0 XyVkYnBjKTogRGl0aGVyIHNob3VsZCBiZSBkaXNhYmxlZFxuIiwKPiArCQkJCQlmYl9icGMsIG91 dHB1dF9icGMpOwo+ICsKPiArCQlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksIE5VTEwp OwpTb3JyeSBmb3IgdGhlIG5pdHBpY2ssIGJ1dCBJIHdvdWxkIHByZWZlciB0byB1c2UgUElQRV9O T05FIGhlcmUgdGhhbiAKUElQRV9BTlksIGFzIGl0IGxvb2tzIGxpa2UgUElQRV9BTlkgaXMgZGVw cmVjYXRlZC4KU2hvdWxkbid0IG1hdHRlciBlaXRoZXIgd2F5IDopCj4gKwkJaWd0X291dHB1dF9z ZXRfcGlwZShvdXRwdXQsIFBJUEVfQU5ZKTsKPiArCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIGRpc3BsYXktPmlzX2F0b21pYyA/IENPTU1JVF9BVE9NSUMgOiBDT01NSVRfTEVHQUNZKTsK PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmZiKTsKPiArCX0KPiArCXJldHVybjsK PiArfQo+ICsKPiArLyogUmV0dXJucyB0cnVlIGlmIGFuIG91dHB1dCBzdXBwb3J0cyBtYXggYnBj IHByb3BlcnR5LiAqLwo+ICtzdGF0aWMgYm9vbCBoYXNfbWF4X2JwYyhpZ3Rfb3V0cHV0X3QgKm91 dHB1dCkKPiArewo+ICsgICAgICAgIHJldHVybiBpZ3Rfb3V0cHV0X2hhc19wcm9wKG91dHB1dCwg SUdUX0NPTk5FQ1RPUl9NQVhfQlBDKSAmJgo+ICsgICAgICAgICAgICAgICBpZ3Rfb3V0cHV0X2dl dF9wcm9wKG91dHB1dCwgSUdUX0NPTk5FQ1RPUl9NQVhfQlBDKTsKPiArfQo+ICsKPiArc3RhdGlj IHZvaWQKPiArcnVuX2RpdGhlcl90ZXN0KGRhdGFfdCAqZGF0YSwgaW50IGZiX2JwYywgaW50IGZi X2Zvcm1hdCwgaW50IG91dHB1dF9icGMsCj4gKwkJdWludDMyX3QgZmxhZ3MpCj4gK3sKPiArCWln dF9vdXRwdXRfdCAqb3V0cHV0Owo+ICsJdW5zaWduZWQgaW50IG1heF9icGM7Cj4gKwlpbnQgdmFs aWRfb3V0cHV0cyA9IDA7Cj4gKwpJdCB3b3VsZCBiZSBiZXR0ZXIgaWYgd2UgY2FuIHVzZSBkeW5h bWljIHN1YnRlc3RzIGhlcmUgZm9yIHBpcGUtb3V0cHV0IApjb21iaW5hdGlvbnMuCj4gKwlmb3Jf ZWFjaF9jb25uZWN0ZWRfb3V0cHV0KCZkYXRhLT5kaXNwbGF5LCBvdXRwdXQpIHsKPiArCQlpZiAo IWhhc19tYXhfYnBjKG91dHB1dCkpCj4gKwkJCWNvbnRpbnVlOwo+ICsKPiArCQltYXhfYnBjID0g Z2V0X291dHB1dF9icGMoZGF0YSwgb3V0cHV0KTsKPiArCQlpZihtYXhfYnBjIDwgb3V0cHV0X2Jw YykKPiArCQkJY29udGludWU7Cj4gKwo+ICsJCXRlc3RfZGl0aGVyaW5nX29uX291dHB1dChkYXRh LCBvdXRwdXQsIGZiX2JwYywgZmJfZm9ybWF0LCBvdXRwdXRfYnBjLCBmbGFncyk7Cj4gKwkJdmFs aWRfb3V0cHV0cysrOwo+ICsJfQo+ICsKPiArCWlndF9yZXF1aXJlX2YodmFsaWRfb3V0cHV0cywg Ik5vIGNvbm5lY3RvciBmb3VuZCB3aXRoIE1BWCBCUEMgY29ubmVjdG9yIHByb3BlcnR5LiAob3Ip ICIKPiArCQkJCSAgICAgIk5vIGNvbm5lY3RvciBmb3VuZCB3aXRoIE1heCBQYW5lbCBCUEMgKCVk KSA+PSAlZC5cbiIsCj4gKwkJICAgICAgbWF4X2JwYywgb3V0cHV0X2JwYyk7Cj4gK30KPiArCj4g K2lndF9tYWluCj4gK3sKPiArCXN0cnVjdCB7Cj4gKwkJaW50IGJwYzsKPiArCQlpbnQgZm9ybWF0 Owo+ICsJfSBmYl9mb3JtYXRzW10gPSB7Cj4gKwkJeyBJR1RfRlJBTUVfQlVGRkVSX0JQQ184LCBE Uk1fRk9STUFUX1JHQjg4OCB9LAo+ICsJCXsgSUdUX0ZSQU1FX0JVRkZFUl9CUENfMTAsIERSTV9G T1JNQVRfWFJHQjIxMDEwMTAgfSwKPiArCQl7IElHVF9GUkFNRV9CVUZGRVJfQlBDXzE2LCBEUk1f Rk9STUFUX1hSR0IxNjE2MTYxNkYgfSwKPiArCX07Cj4gKwlpbnQgb3V0cHV0X2JwY1tdID0gewo+ ICsJCUlHVF9DT05ORUNUT1JfQlBDXzYsCj4gKwkJSUdUX0NPTk5FQ1RPUl9CUENfOCwKPiArCQlJ R1RfQ09OTkVDVE9SX0JQQ18xMAo+ICsJfTsKPiArCWludCBpLCBqOwo+ICsJZGF0YV90IGRhdGEg PSB7IDAgfTsKPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4gKwkJZGF0YS5kcm1fZmQgPSBkcm1fb3Bl bl9kcml2ZXJfbWFzdGVyKERSSVZFUl9JTlRFTCk7Cj4gKwkJa21zdGVzdF9zZXRfdnRfZ3JhcGhp Y3NfbW9kZSgpOwo+ICsKPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRhLmRpc3BsYXksIGRh dGEuZHJtX2ZkKTsKPiArCQlpZ3RfZGlzcGxheV9yZXF1aXJlX291dHB1dCgmZGF0YS5kaXNwbGF5 KTsKPiArCX0KPiArCj4gKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShmYl9mb3JtYXRzKTsg aSsrKSB7Cj4gKwkJZm9yIChqID0gMDsgaiA8IEFSUkFZX1NJWkUob3V0cHV0X2JwYyk7IGorKykg ewo+ICsJCQlpZ3RfZGVzY3JpYmVfZigiRnJhbWVidWZmZXIgQlBDOiVkLCBQYW5lbCBCUEM6JWQs IEV4cGVjdGVkIERpdGhlcjolc1xuIiwKPiArCQkJCSAgICAgICBmYl9mb3JtYXRzW2ldLmJwYywg b3V0cHV0X2JwY1tqXSwKPiArCQkJCSAgICAgICAoZmJfZm9ybWF0c1tpXS5icGMgPiBvdXRwdXRf YnBjW2pdKSA/ICJFbmFibGUiOiAiRGlzYWJsZSIpOwo+ICsKPiArCQkJaWd0X3N1YnRlc3RfZigi RkItJWRCUEMtVnMtUGFuZWwtJWRCUEMiLCBmYl9mb3JtYXRzW2ldLmJwYywgb3V0cHV0X2JwY1tq XSkKPiArCQkJCXJ1bl9kaXRoZXJfdGVzdCgmZGF0YSwKPiArCQkJCQkJZmJfZm9ybWF0c1tpXS5i cGMsCj4gKwkJCQkJCWZiX2Zvcm1hdHNbaV0uZm9ybWF0LAo+ICsJCQkJCQlvdXRwdXRfYnBjW2pd LApURVNUX1NVU1BFTkQgbG9va3MgbGlrZSBpcyB1bnVzZWQ/IERvIHdlIHBsYW4gdG8gYWRkIHN1 YnRlc3RzIGZvciB0aGlzPwoKVGhhbmtzLApLYXJ0aGlrLkIuUwo+ICsJCQkJCQlURVNUX05PTkUp Owo+ICsJCX0KPiArCX0KPiArCj4gKwlpZ3RfZml4dHVyZSB7Cj4gKwkJaWd0X2Rpc3BsYXlfZmlu aSgmZGF0YS5kaXNwbGF5KTsKPiArCX0KPiArfQo+IGRpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5i dWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCj4gaW5kZXggY2ZlNTA4YzQuLjA1YTljZmI4IDEwMDY0 NAo+IC0tLSBhL3Rlc3RzL21lc29uLmJ1aWxkCj4gKysrIGIvdGVzdHMvbWVzb24uYnVpbGQKPiBA QCAtMjcsNiArMjcsNyBAQCB0ZXN0X3Byb2dzID0gWwo+ICAgCSdrbXNfY3Vyc29yX2NyYycsCj4g ICAJJ2ttc19jdXJzb3JfZWRnZV93YWxrJywKPiAgIAkna21zX2N1cnNvcl9sZWdhY3knLAo+ICsJ J2ttc19kaXRoZXInLAo+ICAgCSdrbXNfZHBfYXV4X2RldicsCj4gICAJJ2ttc19kcF9kc2MnLAo+ ICAgCSdrbXNfZHBfdGlsZWRfZGlzcGxheScsCj4gCl9fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMu ZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlz dGluZm8vaWd0LWRldgo=