From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6F30F6E0D6 for ; Mon, 1 Apr 2019 13:18:50 +0000 (UTC) From: "Kahola, Mika" Date: Mon, 1 Apr 2019 13:18:47 +0000 Message-ID: References: <20190330010328.28054-1-jose.souza@intel.com> <20190330010328.28054-3-jose.souza@intel.com> In-Reply-To: <20190330010328.28054-3-jose.souza@intel.com> Content-Language: en-US Content-ID: <04689513057A8440A806483E01E42C53@intel.com> MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 3/3] tests/plane_lowres: Test each plane individually List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" To: "igt-dev@lists.freedesktop.org" , "Souza, Jose" List-ID: SSB0aGluayBpbiB0aGlzIHRlc3QgaXQgd291bGQgYmUgc3VmZmljaWVudCB0byB0ZXN0IG9ubHkg d2l0aCBvbmUgcGxhbmUKYXMgdGhpcyB0ZXN0IGlzIGludGVuZGVkIHRvIHRlc3QgcmVzb2x1dGlv biBjaGFuZ2UuIFdlIGRvIGhhdmUKa21zX3BsYW5lX211bHRpcGxlIHRlc3QgdGhhdCB0ZXN0cyBh bGwgcGxhbmVzIGF0IG9uY2UgYW5kIHRoZXJlb2ZyZQpleGVyY2lzZXMgZnVsbCBiYW5kd2l0aC4g VGhlcmVmb3JlLCBJIHNlZSB0aGlzIGFzIHZhbGlkIGNoYW5nZSB0byB0aGUKdGVzdC4KCk9uIEZy aSwgMjAxOS0wMy0yOSBhdCAxODowMyAtMDcwMCwgSm9zw6kgUm9iZXJ0byBkZSBTb3V6YSB3cm90 ZToKPiBJQ0wgaGFzIHNvbWUgbWFueSBwbGFuZXMgcGVyIHBpcGUgdGhhdCBpdCBpcyBjYXVzaW5n IHRoaXMgdGVzdCB0bwo+IHNraXAgZHVlIGJhbmR3aWR0aCBsaW1pdGF0aW9uIHdoZW4gY29tYmlu ZWQgd2l0aCA0SyBkaXNwbGF5cy4KPiAKPiBUaGUgb2JqZWN0aXZlIG9mIHRoaXMgdGVzdCBpcyB0 ZXN0IHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwbGFuZXMgd2hlbgo+IHN3aXRjaGluZyBiZXR3ZWVu IGhpZ2ggYW5kIGxvdyByZXNvbHV0aW9uLCBtb3JlIGluZm9ybWF0aW9uIGluIHRoZQo+IHBhdGNo IHRoYXQgYWRkZWQgdGhpcyB0ZXN0IDEyZTM0ZDhjOTA5YSAoInRlc3RzL2ttc19wbGFuZV9sb3dy ZXM6Cj4gUGxhbmUgdmlzaWJpbGl0eSBhZnRlciBhdG9taWMgbW9kZXNldHMiKS4KPiBTbyBpdCB3 YXMgc2V0dGluZyBhbGwgdGhlIHBsYW5lcyB0aGUgdGVzdGVkIHBpcGUgaW4gdGhlIGJvdHRvbSBs ZWZ0Cj4gb2YgdGhlIGRpc3BsYXkgdXNpbmcgdGhlIGhlaWdodCBvZiBoaWdoIHJlc29sdXRpb24s ICBjaGVja2luZyB0aGUKPiB2aXNpYmlsaXR5IGFuZCB0aGVuIHN3aXRjaGluZyB0byB0aGUgbG93 IHJlc29sdXRpb24gbW9kZSBhbmQgY2hlY2tpbmcKPiBhZ2FpbiB0aGUgdmlzaWJpbGl0eSBhbmQg bm93IGl0IGlzIGV4cGVjdGVkIHRoYXQgYWxsIHBsYW5lcyB3b3VsZCBiZQo+IGludmlzaWJsZS4K PiAKPiBTbyB0byBvdmVyY29tZSBJQ0wgYmFuZHdpZHRoIGlzc3VlcywgaGVyZSBpdCBpcyB0ZXN0 aW5nIGVhY2ggcGxhbmUKPiBpbmRpdmlkdWFsbHkuCj4gCj4gQ2M6IE1hYXJ0ZW4gTGFua2hvcnN0 IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4gQ2M6IE1pa2EgS2Fob2xhIDxt aWthLmthaG9sYUBpbnRlbC5jb20+Cj4gU2lnbmVkLW9mZi1ieTogSm9zw6kgUm9iZXJ0byBkZSBT b3V6YSA8am9zZS5zb3V6YUBpbnRlbC5jb20+ClJldmlld2VkLWJ5OiBNaWthIEthaG9sYSA8bWlr YS5rYWhvbGFAaW50ZWwuY29tPgoKPiAtLS0KPiAgbGliL2lndF9rbXMuYyAgICAgICAgICAgIHwg IDIxICstLQo+ICBsaWIvaWd0X2ttcy5oICAgICAgICAgICAgfCAgIDIgKy0KPiAgdGVzdHMva21z X3BsYW5lX2xvd3Jlcy5jIHwgMjc0ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0t LS0KPiAtLQo+ICAzIGZpbGVzIGNoYW5nZWQsIDEzNSBpbnNlcnRpb25zKCspLCAxNjIgZGVsZXRp b25zKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCj4g aW5kZXggY2U5ZmUxNTIuLjFlMjQxNWJmIDEwMDY0NAo+IC0tLSBhL2xpYi9pZ3Rfa21zLmMKPiAr KysgYi9saWIvaWd0X2ttcy5jCj4gQEAgLTE2MzQsMjcgKzE2MzQsMTggQEAgc3RhdGljIHZvaWQg a21zdGVzdF9nZXRfY3J0YyhpbnQgZGV2aWNlLCBlbnVtCj4gcGlwZSBwaXBlLCBzdHJ1Y3Qga21z dGVzdF9jcnRjICpjcgo+ICAgKgo+ICAgKiBBc3NlcnRzIG9ubHkgaWYgdGhlIHBsYW5lJ3Mgdmlz aWJpbGl0eSBzdGF0ZSBtYXRjaGVzIHRoZSBzdGF0dXMKPiBiZWluZyBwYXNzZWQgYnkgQHZpc2li aWxpdHkKPiAgICovCj4gLXZvaWQgaWd0X2Fzc2VydF9wbGFuZV92aXNpYmxlKGludCBmZCwgZW51 bSBwaXBlIHBpcGUsIGJvb2wKPiB2aXNpYmlsaXR5KQo+ICt2b2lkIGlndF9hc3NlcnRfcGxhbmVf dmlzaWJsZShpbnQgZmQsIGVudW0gcGlwZSBwaXBlLCBpbnQKPiBwbGFuZV9pbmRleCwgYm9vbCB2 aXNpYmlsaXR5KQo+ICB7Cj4gIAlzdHJ1Y3Qga21zdGVzdF9jcnRjIGNydGM7Cj4gLQlpbnQgaTsK PiAtCWJvb2wgdmlzaWJsZTsKPiArCWJvb2wgdmlzaWJsZSA9IHRydWU7Cj4gIAo+ICAJa21zdGVz dF9nZXRfY3J0YyhmZCwgcGlwZSwgJmNydGMpOwo+ICAKPiAtCXZpc2libGUgPSB0cnVlOwo+IC0J Zm9yIChpID0gMDsgaSA8IGNydGMubl9wbGFuZXM7IGkrKykgewo+IC0JCWlmIChjcnRjLnBsYW5l c1tpXS50eXBlID09IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpCj4gLQkJCWNvbnRpbnVlOwo+ICsJ aWd0X2Fzc2VydChwbGFuZV9pbmRleCA8IGNydGMubl9wbGFuZXMpOwo+ICAKPiAtCQlpZiAoY3J0 Yy5wbGFuZXNbaV0ucG9zX3ggPiBjcnRjLndpZHRoKSB7Cj4gLQkJCXZpc2libGUgPSBmYWxzZTsK PiAtCQkJYnJlYWs7Cj4gLQkJfSBlbHNlIGlmIChjcnRjLnBsYW5lc1tpXS5wb3NfeSA+IGNydGMu aGVpZ2h0KSB7Cj4gLQkJCXZpc2libGUgPSBmYWxzZTsKPiAtCQkJYnJlYWs7Cj4gLQkJfQo+IC0J fQo+ICsJaWYgKGNydGMucGxhbmVzW3BsYW5lX2luZGV4XS5wb3NfeCA+IGNydGMud2lkdGggfHwK PiArCSAgICBjcnRjLnBsYW5lc1twbGFuZV9pbmRleF0ucG9zX3kgPiBjcnRjLmhlaWdodCkKPiAr CQl2aXNpYmxlID0gZmFsc2U7Cj4gIAo+ICAJZnJlZShjcnRjLnBsYW5lcyk7Cj4gIAlpZ3RfYXNz ZXJ0X2VxKHZpc2libGUsIHZpc2liaWxpdHkpOwo+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ttcy5o IGIvbGliL2lndF9rbXMuaAo+IGluZGV4IGUzOTJlMGVmLi4zOGJkYzA4ZiAxMDA2NDQKPiAtLS0g YS9saWIvaWd0X2ttcy5oCj4gKysrIGIvbGliL2lndF9rbXMuaAo+IEBAIC0yMjgsNyArMjI4LDcg QEAgdm9pZCAqa21zdGVzdF9kdW1iX21hcF9idWZmZXIoaW50IGZkLCB1aW50MzJfdAo+IGhhbmRs ZSwgdWludDY0X3Qgc2l6ZSwKPiAgdm9pZCBrbXN0ZXN0X2R1bWJfZGVzdHJveShpbnQgZmQsIHVp bnQzMl90IGhhbmRsZSk7Cj4gIHZvaWQga21zdGVzdF93YWl0X2Zvcl9wYWdlZmxpcChpbnQgZmQp Owo+ICB1bnNpZ25lZCBpbnQga21zdGVzdF9nZXRfdmJsYW5rKGludCBmZCwgaW50IHBpcGUsIHVu c2lnbmVkIGludAo+IGZsYWdzKTsKPiAtdm9pZCBpZ3RfYXNzZXJ0X3BsYW5lX3Zpc2libGUoaW50 IGZkLCBlbnVtIHBpcGUgcGlwZSwgYm9vbAo+IHZpc2liaWxpdHkpOwo+ICt2b2lkIGlndF9hc3Nl cnRfcGxhbmVfdmlzaWJsZShpbnQgZmQsIGVudW0gcGlwZSBwaXBlLCBpbnQKPiBwbGFuZV9pbmRl eCwgYm9vbCB2aXNpYmlsaXR5KTsKPiAgCj4gIC8qCj4gICAqIEEgc21hbGwgbW9kZXNldCBBUEkK PiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3BsYW5lX2xvd3Jlcy5jIGIvdGVzdHMva21zX3BsYW5l X2xvd3Jlcy5jCj4gaW5kZXggNTFiYjdjZDguLjBiNzg1NzNmIDEwMDY0NAo+IC0tLSBhL3Rlc3Rz L2ttc19wbGFuZV9sb3dyZXMuYwo+ICsrKyBiL3Rlc3RzL2ttc19wbGFuZV9sb3dyZXMuYwo+IEBA IC0zOSw3ICszOSw4IEBAIElHVF9URVNUX0RFU0NSSVBUSU9OKCJUZXN0IGF0b21pYyBtb2RlIHNl dHRpbmcgd2l0aAo+IGEgcGxhbmUgYnkgc3dpdGNoaW5nIGJldHdlZW4KPiAgdHlwZWRlZiBzdHJ1 Y3Qgewo+ICAJaW50IGRybV9mZDsKPiAgCWlndF9kaXNwbGF5X3QgZGlzcGxheTsKPiAtCXN0cnVj dCBpZ3RfZmIgKmZiOwo+ICsJc3RydWN0IGlndF9mYiBmYl9wcmltYXJ5Owo+ICsJc3RydWN0IGln dF9mYiBmYl9wbGFuZTsKPiAgfSBkYXRhX3Q7Cj4gIAo+ICBzdGF0aWMgZHJtTW9kZU1vZGVJbmZv Cj4gQEAgLTY0LDI0ICs2NSw2IEBAIGdldF9sb3dyZXNfbW9kZShpbnQgZHJtZmQsIGlndF9vdXRw dXRfdCAqb3V0cHV0LAo+IGRybU1vZGVNb2RlSW5mbyAqbW9kZV9kZWZhdWx0KQo+ICAJcmV0dXJu IG1vZGU7Cj4gIH0KPiAgCj4gLXN0YXRpYyB2b2lkCj4gLXRlc3RfZmluaShkYXRhX3QgKmRhdGEs IGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtIHBpcGUgcGlwZSkKPiAtewo+IC0JaWd0X3BsYW5l X3QgKnBsYW5lOwo+IC0KPiAtCS8qIHJlc3RvcmUgb3JpZ2luYWwgbW9kZSAqLwo+IC0JaWd0X291 dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgTlVMTCk7Cj4gLQo+IC0JZm9yX2VhY2hfcGxhbmVf b25fcGlwZSgmZGF0YS0+ZGlzcGxheSwgcGlwZSwgcGxhbmUpCj4gLQkJaWd0X3BsYW5lX3NldF9m YihwbGFuZSwgTlVMTCk7Cj4gLQo+IC0JLyogcmVzZXQgdGhlIGNvbnN0cmFpbnQgb24gdGhlIHBp cGUgKi8KPiAtCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7Cj4gLQo+IC0J ZnJlZShkYXRhLT5mYik7Cj4gLQlkYXRhLT5mYiA9IE5VTEw7Cj4gLX0KPiAtCj4gIHN0YXRpYyB2 b2lkCj4gIGNoZWNrX21vZGUoZHJtTW9kZU1vZGVJbmZvICptb2RlMSwgZHJtTW9kZU1vZGVJbmZv ICptb2RlMikKPiAgewo+IEBAIC05MCwxNzUgKzczLDE2MCBAQCBjaGVja19tb2RlKGRybU1vZGVN b2RlSW5mbyAqbW9kZTEsCj4gZHJtTW9kZU1vZGVJbmZvICptb2RlMikKPiAgCWlndF9hc3NlcnRf ZXEobW9kZTEtPnZyZWZyZXNoLCBtb2RlMi0+dnJlZnJlc2gpOwo+ICB9Cj4gIAo+IC1zdGF0aWMg ZHJtTW9kZU1vZGVJbmZvICoKPiAtdGVzdF9zZXR1cChkYXRhX3QgKmRhdGEsIGVudW0gcGlwZSBw aXBlLCB1aW50NjRfdCBtb2RpZmllciwKPiAtCSAgIGlndF9vdXRwdXRfdCAqb3V0cHV0KQo+ICsv Kgo+ICsgKiBSZXR1cm4gZmFsc2UgaWYgdGVzdCBvbiB0aGlzIHBsYW5lIHNob3VsZCBiZSBza2lw cGVkCj4gKyAqLwo+ICtzdGF0aWMgYm9vbAo+ICtzZXR1cF9wbGFuZShkYXRhX3QgKmRhdGEsIGln dF9wbGFuZV90ICpwbGFuZSwgZHJtTW9kZU1vZGVJbmZvICptb2RlLAo+ICsJICAgIHVpbnQ2NF90 IG1vZGlmaWVyKQo+ICB7Cj4gLQlkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gLQlpbnQgc2l6ZTsK PiAtCWludCBpID0gMSwgeCwgeTsKPiAtCWlndF9wbGFuZV90ICpwbGFuZTsKPiAtCj4gLQlpZ3Rf c2tpcF9vbighaWd0X2Rpc3BsYXlfaGFzX2Zvcm1hdF9tb2QoJmRhdGEtPmRpc3BsYXksCj4gLQkJ CQkJCURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gLQkJCQkJCW1vZGlmaWVyKSk7Cj4gLQo+IC0JaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+IC0KPiAtCW1vZGUgPSBpZ3Rfb3V0cHV0 X2dldF9tb2RlKG91dHB1dCk7Cj4gLQo+IC0JZGF0YS0+ZmIgPSBjYWxsb2MoZGF0YS0+ZGlzcGxh eS5waXBlc1twaXBlXS5uX3BsYW5lcywKPiBzaXplb2Yoc3RydWN0IGlndF9mYikpOwo+IC0JaWd0 X2Fzc2VydF9mKGRhdGEtPmZiLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG1lbW9yeSBmb3IgJWQKPiBG QnNcbiIsCj4gLQkgICAgICAgICAgICAgZGF0YS0+ZGlzcGxheS5waXBlc1twaXBlXS5uX3BsYW5l cyk7Cj4gLQo+IC0JaWd0X2NyZWF0ZV9jb2xvcl9mYihkYXRhLT5kcm1fZmQsIG1vZGUtPmhkaXNw bGF5LCBtb2RlLQo+ID52ZGlzcGxheSwKPiAtCQkJICAgIERSTV9GT1JNQVRfWFJHQjg4ODgsCj4g LQkJCSAgICBtb2RpZmllciwKPiAtCQkJICAgIDAuMCwgMC4wLCAxLjAsCj4gLQkJCSAgICAmZGF0 YS0+ZmJbMF0pOwo+IC0KPiAtCS8qIHllbGxvdyBzcHJpdGUgcGxhbmUgaW4gbG93ZXIgbGVmdCBj b3JuZXIgKi8KPiAtCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEtPmRpc3BsYXksIHBpcGUs IHBsYW5lKSB7Cj4gLQkJdWludDY0X3QgcGxhbmVfbW9kaWZpZXI7Cj4gLQkJdWludDMyX3QgcGxh bmVfZm9ybWF0Owo+IC0KPiAtCQlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZUEVfUFJJ TUFSWSkgewo+IC0JCQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmJbMF0pOwo+IC0J CQljb250aW51ZTsKPiAtCQl9Cj4gLQo+IC0JCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVf VFlQRV9DVVJTT1IpCj4gLQkJCXNpemUgPSA2NDsKPiAtCQllbHNlCj4gLQkJCXNpemUgPSBTSVpF Owo+IC0KPiAtCQl4ID0gMDsKPiAtCQl5ID0gbW9kZS0+dmRpc3BsYXkgLSBzaXplOwo+IC0KPiAt CQlwbGFuZV9mb3JtYXQgPSBwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgPwo+ IC0JCQlEUk1fRk9STUFUX0FSR0I4ODg4IDogRFJNX0ZPUk1BVF9YUkdCODg4ODsKPiAtCj4gLQkJ cGxhbmVfbW9kaWZpZXIgPSBwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IgPwo+ IC0JCQlMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FIDogbW9kaWZpZXI7Cj4gKwl1aW50NjRfdCBw bGFuZV9tb2RpZmllcjsKPiArCXVpbnQzMl90IHBsYW5lX2Zvcm1hdDsKPiArCWludCBzaXplLCB4 LCB5Owo+ICsKPiArCWlmIChwbGFuZS0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9QUklNQVJZKQo+ ICsJCXJldHVybiBmYWxzZTsKPiArCj4gKwlpZiAocGxhbmUtPnR5cGUgPT0gRFJNX1BMQU5FX1RZ UEVfQ1VSU09SKQo+ICsJCXNpemUgPSA2NDsKPiArCWVsc2UKPiArCQlzaXplID0gU0laRTsKPiAr Cj4gKwl4ID0gMDsKPiArCXkgPSBtb2RlLT52ZGlzcGxheSAtIHNpemU7Cj4gKwo+ICsJaWYgKHBs YW5lLT50eXBlID09IERSTV9QTEFORV9UWVBFX0NVUlNPUikgewo+ICsJCXBsYW5lX2Zvcm1hdCA9 IERSTV9GT1JNQVRfQVJHQjg4ODg7Cj4gKwkJcGxhbmVfbW9kaWZpZXIgPSBMT0NBTF9EUk1fRk9S TUFUX01PRF9OT05FOwo+ICsJfSBlbHNlIHsKPiArCQlwbGFuZV9mb3JtYXQgPSBEUk1fRk9STUFU X1hSR0I4ODg4Owo+ICsJCXBsYW5lX21vZGlmaWVyID0gbW9kaWZpZXI7Cj4gKwl9Cj4gIAo+IC0J CWlndF9za2lwX29uKCFpZ3RfcGxhbmVfaGFzX2Zvcm1hdF9tb2QocGxhbmUsCj4gcGxhbmVfZm9y bWF0LAo+IC0JCQkJCQkgICAgICBwbGFuZV9tb2RpZmllcikpOwo+ICsJaWYgKCFpZ3RfcGxhbmVf aGFzX2Zvcm1hdF9tb2QocGxhbmUsIHBsYW5lX2Zvcm1hdCwKPiBwbGFuZV9tb2RpZmllcikpCj4g KwkJcmV0dXJuIGZhbHNlOwo+ICAKPiAtCQlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9m ZCwKPiAtCQkJCSAgICBzaXplLCBzaXplLAo+IC0JCQkJICAgIHBsYW5lX2Zvcm1hdCwKPiAtCQkJ CSAgICBwbGFuZV9tb2RpZmllciwKPiAtCQkJCSAgICAxLjAsIDEuMCwgMC4wLAo+IC0JCQkJICAg ICZkYXRhLT5mYltpXSk7Cj4gKwlpZ3RfY3JlYXRlX2NvbG9yX2ZiKGRhdGEtPmRybV9mZCwgc2l6 ZSwgc2l6ZSwgcGxhbmVfZm9ybWF0LAo+ICsJCQkgICAgcGxhbmVfbW9kaWZpZXIsIDEuMCwgMS4w LCAwLjAsICZkYXRhLQo+ID5mYl9wbGFuZSk7Cj4gKwlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKHBs YW5lLCB4LCB5KTsKPiArCWlndF9wbGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYl9wbGFuZSk7 Cj4gIAo+IC0JCWlndF9wbGFuZV9zZXRfcG9zaXRpb24ocGxhbmUsIHgsIHkpOwo+IC0JCWlndF9w bGFuZV9zZXRfZmIocGxhbmUsICZkYXRhLT5mYltpKytdKTsKPiAtCX0KPiArCXJldHVybiB0cnVl Owo+ICt9Cj4gIAo+IC0JcmV0dXJuIG1vZGU7Cj4gK3N0YXRpYyBpZ3RfcGxhbmVfdCAqCj4gK3By aW1hcnlfcGxhbmVfZ2V0KGlndF9kaXNwbGF5X3QgKmRpc3BsYXksIGVudW0gcGlwZSBwaXBlKQo+ ICt7Cj4gKwl1bnNpZ25lZCBwbGFuZV9wcmltYXJ5X2lkID0gZGlzcGxheS0+cGlwZXNbcGlwZV0u cGxhbmVfcHJpbWFyeTsKPiArCXJldHVybiAmZGlzcGxheS0+cGlwZXNbcGlwZV0ucGxhbmVzW3Bs YW5lX3ByaW1hcnlfaWRdOwo+ICB9Cj4gIAo+IC1zdGF0aWMgdm9pZAo+IC10ZXN0X3BsYW5lX3Bv c2l0aW9uX3dpdGhfb3V0cHV0KGRhdGFfdCAqZGF0YSwgZW51bSBwaXBlIHBpcGUsCj4gK3N0YXRp YyB1bnNpZ25lZAo+ICt0ZXN0X3BsYW5lc19vbl9waXBlX3dpdGhfb3V0cHV0KGRhdGFfdCAqZGF0 YSwgZW51bSBwaXBlIHBpcGUsCj4gIAkJCQlpZ3Rfb3V0cHV0X3QgKm91dHB1dCwgdWludDY0X3QK PiBtb2RpZmllcikKPiAgewo+IC0JaWd0X2NyY190IGNyY19oaXJlczEsIGNyY19oaXJlczI7Cj4g LQlpZ3RfY3JjX3QgY3JjX2xvd3JlczsKPiAtCWRybU1vZGVNb2RlSW5mbyBtb2RlX2xvd3JlczsK PiAtCWRybU1vZGVNb2RlSW5mbyAqbW9kZTEsICptb2RlMiwgKm1vZGUzOwo+IC0JaW50IHJldDsK PiArCWRybU1vZGVNb2RlSW5mbyAqbW9kZSwgbW9kZV9sb3dyZXM7Cj4gIAlpZ3RfcGlwZV9jcmNf dCAqcGlwZV9jcmM7Cj4gKwl1bnNpZ25lZCB0ZXN0ZWQgPSAwOwo+ICsJaWd0X3BsYW5lX3QgKnBs YW5lOwo+ICAKPiAgCWlndF9pbmZvKCJUZXN0aW5nIGNvbm5lY3RvciAlcyB1c2luZyBwaXBlICVz XG4iLAo+ICAJCSBpZ3Rfb3V0cHV0X25hbWUob3V0cHV0KSwga21zdGVzdF9waXBlX25hbWUocGlw ZSkpOwo+ICAKPiAtCW1vZGUxID0gdGVzdF9zZXR1cChkYXRhLCBwaXBlLCBtb2RpZmllciwgb3V0 cHV0KTsKPiArCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArCW1vZGUgPSBp Z3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gKwltb2RlX2xvd3JlcyA9IGdldF9sb3dyZXNf bW9kZShkYXRhLT5kcm1fZmQsIG91dHB1dCwgbW9kZSk7Cj4gIAo+IC0JbW9kZV9sb3dyZXMgPSBn ZXRfbG93cmVzX21vZGUoZGF0YS0+ZHJtX2ZkLCBvdXRwdXQsIG1vZGUxKTsKPiArCWlndF9jcmVh dGVfY29sb3JfZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+dmRpc3Bs YXksCj4gKwkJCSAgICBEUk1fRk9STUFUX1hSR0I4ODg4LCBtb2RpZmllciwgMC4wLCAwLjAsCj4g MS4wLAo+ICsJCQkgICAgJmRhdGEtPmZiX3ByaW1hcnkpOwo+ICsJaWd0X3BsYW5lX3NldF9mYihw cmltYXJ5X3BsYW5lX2dldCgmZGF0YS0+ZGlzcGxheSwgcGlwZSksCj4gKwkJCSAmZGF0YS0+ZmJf cHJpbWFyeSk7Cj4gIAo+IC0JcmV0ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIoJmRhdGEtPmRp c3BsYXksIENPTU1JVF9BVE9NSUMpOwo+IC0JaWd0X3NraXBfb24ocmV0ICE9IDApOwo+ICsJcGlw ZV9jcmMgPSBpZ3RfcGlwZV9jcmNfbmV3KGRhdGEtPmRybV9mZCwgcGlwZSwKPiArCQkJCSAgICBJ TlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7Cj4gIAo+IC0JcGlwZV9jcmMgPSBpZ3RfcGlwZV9j cmNfbmV3KGRhdGEtPmRybV9mZCwgcGlwZSwKPiBJTlRFTF9QSVBFX0NSQ19TT1VSQ0VfQVVUTyk7 Cj4gLQlpZ3RfcGlwZV9jcmNfc3RhcnQocGlwZV9jcmMpOwo+IC0JaWd0X3BpcGVfY3JjX2dldF9z aW5nbGUocGlwZV9jcmMsICZjcmNfaGlyZXMxKTsKPiArCS8qIHllbGxvdyBzcHJpdGUgcGxhbmUg aW4gbG93ZXIgbGVmdCBjb3JuZXIgKi8KPiArCWZvcl9lYWNoX3BsYW5lX29uX3BpcGUoJmRhdGEt PmRpc3BsYXksIHBpcGUsIHBsYW5lKSB7Cj4gKwkJaWd0X2NyY190IGNyY19oaXJlczEsIGNyY19o aXJlczI7Cj4gKwkJaW50IHI7Cj4gIAo+IC0JaWd0X2Fzc2VydF9wbGFuZV92aXNpYmxlKGRhdGEt PmRybV9mZCwgcGlwZSwgdHJ1ZSk7Cj4gKwkJaWYgKCFzZXR1cF9wbGFuZShkYXRhLCBwbGFuZSwg bW9kZSwgbW9kaWZpZXIpKQo+ICsJCQljb250aW51ZTsKPiAgCj4gLQkvKiBzd2l0Y2ggdG8gbG93 ZXIgcmVzb2x1dGlvbiAqLwo+IC0JaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgJm1v ZGVfbG93cmVzKTsKPiAtCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArCQly ID0gaWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksCj4gQ09NTUlUX0FUT01J Qyk7Cj4gKwkJaWYgKHIpIHsKPiArCQkJaWd0X2RlYnVnKCJDb21taXQgZmFpbGVkICVpIiwgcik7 Cj4gKwkJCWNvbnRpbnVlOwo+ICsJCX0KPiAgCj4gLQltb2RlMiA9IGlndF9vdXRwdXRfZ2V0X21v ZGUob3V0cHV0KTsKPiArCQlpZ3RfcGlwZV9jcmNfc3RhcnQocGlwZV9jcmMpOwo+ICsJCWlndF9w aXBlX2NyY19nZXRfc2luZ2xlKHBpcGVfY3JjLCAmY3JjX2hpcmVzMSk7Cj4gIAo+IC0JY2hlY2tf bW9kZSgmbW9kZV9sb3dyZXMsIG1vZGUyKTsKPiArCQlpZ3RfYXNzZXJ0X3BsYW5lX3Zpc2libGUo ZGF0YS0+ZHJtX2ZkLCBwaXBlLCBwbGFuZS0KPiA+aW5kZXgsCj4gKwkJCQkJIHRydWUpOwo+ICAK PiAtCWlndF9kaXNwbGF5X2NvbW1pdDIoJmRhdGEtPmRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+ IC0JaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRhdGEtPmRpc3BsYXkuZHJtX2ZkLCBwaXBlX2Ny YywKPiAmY3JjX2xvd3Jlcyk7Cj4gKwkJLyogc3dpdGNoIHRvIGxvd2VyIHJlc29sdXRpb24gKi8K PiArCQlpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUob3V0cHV0LCAmbW9kZV9sb3dyZXMpOwo+ICsJ CWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArCQljaGVja19tb2RlKCZtb2Rl X2xvd3JlcywgaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0 X3BsYW5lX3Zpc2libGUoZGF0YS0+ZHJtX2ZkLCBwaXBlLCBmYWxzZSk7Cj4gKwkJaWd0X2Rpc3Bs YXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gIAo+IC0JLyogc3dp dGNoIGJhY2sgdG8gaGlnaGVyIHJlc29sdXRpb24gKi8KPiAtCWlndF9vdXRwdXRfb3ZlcnJpZGVf bW9kZShvdXRwdXQsIE5VTEwpOwo+IC0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUp Owo+ICsJCWlndF9hc3NlcnRfcGxhbmVfdmlzaWJsZShkYXRhLT5kcm1fZmQsIHBpcGUsIHBsYW5l LQo+ID5pbmRleCwKPiArCQkJCQkgZmFsc2UpOwo+ICAKPiAtCW1vZGUzID0gaWd0X291dHB1dF9n ZXRfbW9kZShvdXRwdXQpOwo+ICsJCS8qIHN3aXRjaCBiYWNrIHRvIGhpZ2hlciByZXNvbHV0aW9u ICovCj4gKwkJaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgTlVMTCk7Cj4gKwkJaWd0 X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ICsJCWNoZWNrX21vZGUobW9kZSwgaWd0 X291dHB1dF9nZXRfbW9kZShvdXRwdXQpKTsKPiAgCj4gLQljaGVja19tb2RlKG1vZGUxLCBtb2Rl Myk7Cj4gKwkJaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FUT01J Qyk7Cj4gIAo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0MigmZGF0YS0+ZGlzcGxheSwgQ09NTUlUX0FU T01JQyk7Cj4gKwkJaWd0X3BpcGVfY3JjX2dldF9jdXJyZW50KGRhdGEtPmRybV9mZCwgcGlwZV9j cmMsCj4gJmNyY19oaXJlczIpOwo+ICAKPiAtCWlndF9waXBlX2NyY19nZXRfY3VycmVudChkYXRh LT5kaXNwbGF5LmRybV9mZCwgcGlwZV9jcmMsCj4gJmNyY19oaXJlczIpOwo+ICsJCWlndF9hc3Nl cnRfcGxhbmVfdmlzaWJsZShkYXRhLT5kcm1fZmQsIHBpcGUsIHBsYW5lLQo+ID5pbmRleCwKPiAr CQkJCQkgdHJ1ZSk7Cj4gIAo+IC0JaWd0X2Fzc2VydF9wbGFuZV92aXNpYmxlKGRhdGEtPmRybV9m ZCwgcGlwZSwgdHJ1ZSk7Cj4gKwkJaWd0X2Fzc2VydF9jcmNfZXF1YWwoJmNyY19oaXJlczEsICZj cmNfaGlyZXMyKTsKPiAgCj4gLQlpZ3RfYXNzZXJ0X2NyY19lcXVhbCgmY3JjX2hpcmVzMSwgJmNy Y19oaXJlczIpOwo+ICsJCWlndF9waXBlX2NyY19zdG9wKHBpcGVfY3JjKTsKPiAgCj4gLQlpZ3Rf cGlwZV9jcmNfc3RvcChwaXBlX2NyYyk7Cj4gLQlpZ3RfcGlwZV9jcmNfZnJlZShwaXBlX2NyYyk7 Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZSwgTlVMTCk7Cj4gKwkJaWd0X3JlbW92ZV9mYihk YXRhLT5kcm1fZmQsICZkYXRhLT5mYl9wbGFuZSk7Cj4gKwkJdGVzdGVkKys7Cj4gKwl9Cj4gIAo+ IC0JdGVzdF9maW5pKGRhdGEsIG91dHB1dCwgcGlwZSk7Cj4gLX0KPiArCWlndF9waXBlX2NyY19m cmVlKHBpcGVfY3JjKTsKPiAgCj4gLXN0YXRpYyB2b2lkCj4gLXRlc3RfcGxhbmVfcG9zaXRpb24o ZGF0YV90ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSwgdWludDY0X3QgbW9kaWZpZXIpCj4gLXsKPiAt CWlndF9vdXRwdXRfdCAqb3V0cHV0Owo+ICsJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5X3BsYW5l X2dldCgmZGF0YS0+ZGlzcGxheSwgcGlwZSksCj4gTlVMTCk7Cj4gKwlpZ3RfcmVtb3ZlX2ZiKGRh dGEtPmRybV9mZCwgJmRhdGEtPmZiX3ByaW1hcnkpOwo+ICsJaWd0X291dHB1dF9zZXRfcGlwZShv dXRwdXQsIFBJUEVfTk9ORSk7Cj4gIAo+IC0JZm9yX2VhY2hfdmFsaWRfb3V0cHV0X29uX3BpcGUo JmRhdGEtPmRpc3BsYXksIHBpcGUsIG91dHB1dCkKPiAtCQl0ZXN0X3BsYW5lX3Bvc2l0aW9uX3dp dGhfb3V0cHV0KGRhdGEsIHBpcGUsIG91dHB1dCwKPiBtb2RpZmllcik7Cj4gKwlyZXR1cm4gdGVz dGVkOwo+ICB9Cj4gIAo+ICBzdGF0aWMgdm9pZAo+IC1ydW5fdGVzdHNfZm9yX3BpcGUoZGF0YV90 ICpkYXRhLCBlbnVtIHBpcGUgcGlwZSkKPiArdGVzdF9wbGFuZXNfb25fcGlwZShkYXRhX3QgKmRh dGEsIGVudW0gcGlwZSBwaXBlLCB1aW50NjRfdCBtb2RpZmllcikKPiAgewo+IC0JaWd0X2ZpeHR1 cmUgewo+IC0JCWlndF9za2lwX29uKHBpcGUgPj0gZGF0YS0+ZGlzcGxheS5uX3BpcGVzKTsKPiAt Cj4gLQkJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXRfb25fcGlwZSgmZGF0YS0+ZGlzcGxheSwK PiBwaXBlKTsKPiAtCX0KPiAtCj4gLQlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVzLXRpbGluZy1ub25l IiwKPiAtCQkgICAgICBrbXN0ZXN0X3BpcGVfbmFtZShwaXBlKSkKPiAtCQl0ZXN0X3BsYW5lX3Bv c2l0aW9uKGRhdGEsIHBpcGUsCj4gTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSk7Cj4gKwlpZ3Rf b3V0cHV0X3QgKm91dHB1dDsKPiArCXVuc2lnbmVkIHRlc3RlZCA9IDA7Cj4gIAo+IC0JaWd0X3N1 YnRlc3RfZigicGlwZS0lcy10aWxpbmcteCIsCj4gLQkJICAgICAga21zdGVzdF9waXBlX25hbWUo cGlwZSkpCj4gLQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLAo+IExPQ0FMX0k5MTVf Rk9STUFUX01PRF9YX1RJTEVEKTsKPiArCWlndF9za2lwX29uKHBpcGUgPj0gZGF0YS0+ZGlzcGxh eS5uX3BpcGVzKTsKPiArCWlndF9kaXNwbGF5X3JlcXVpcmVfb3V0cHV0X29uX3BpcGUoJmRhdGEt PmRpc3BsYXksIHBpcGUpOwo+ICsJaWd0X3NraXBfb24oIWlndF9kaXNwbGF5X2hhc19mb3JtYXRf bW9kKCZkYXRhLT5kaXNwbGF5LAo+ICsJCQkJCQlEUk1fRk9STUFUX1hSR0I4ODg4LAo+IG1vZGlm aWVyKSk7Cj4gIAo+IC0JaWd0X3N1YnRlc3RfZigicGlwZS0lcy10aWxpbmcteSIsCj4gLQkJICAg ICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpCj4gLQkJdGVzdF9wbGFuZV9wb3NpdGlvbihkYXRh LCBwaXBlLAo+IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEKTsKPiArCWZvcl9lYWNoX3Zh bGlkX291dHB1dF9vbl9waXBlKCZkYXRhLT5kaXNwbGF5LCBwaXBlLCBvdXRwdXQpCj4gKwkJdGVz dGVkICs9IHRlc3RfcGxhbmVzX29uX3BpcGVfd2l0aF9vdXRwdXQoZGF0YSwgcGlwZSwKPiBvdXRw dXQsCj4gKwkJCQkJCQkgIG1vZGlmaWVyKTsKPiAgCj4gLQlpZ3Rfc3VidGVzdF9mKCJwaXBlLSVz LXRpbGluZy15ZiIsCj4gLQkJICAgICAga21zdGVzdF9waXBlX25hbWUocGlwZSkpCj4gLQkJdGVz dF9wbGFuZV9wb3NpdGlvbihkYXRhLCBwaXBlLAo+IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9U SUxFRCk7Cj4gKwlpZ3RfYXNzZXJ0KHRlc3RlZCA+IDApOwo+ICB9Cj4gIAo+IC1zdGF0aWMgZGF0 YV90IGRhdGE7Cj4gLQo+ICBpZ3RfbWFpbgo+ICB7Cj4gKwlkYXRhX3QgZGF0YSA9IHt9Owo+ICAJ ZW51bSBwaXBlIHBpcGU7Cj4gIAo+ICAJaWd0X3NraXBfb25fc2ltdWxhdGlvbigpOwo+IEBAIC0y NzMsOSArMjQxLDIzIEBAIGlndF9tYWluCj4gIAkJaWd0X3JlcXVpcmUoZGF0YS5kaXNwbGF5Lmlz X2F0b21pYyk7Cj4gIAl9Cj4gIAo+IC0JZm9yX2VhY2hfcGlwZV9zdGF0aWMocGlwZSkKPiAtCQlp Z3Rfc3VidGVzdF9ncm91cAo+IC0JCQlydW5fdGVzdHNfZm9yX3BpcGUoJmRhdGEsIHBpcGUpOwo+ ICsJZm9yX2VhY2hfcGlwZV9zdGF0aWMocGlwZSkgewo+ICsJCWlndF9zdWJ0ZXN0X2YoInBpcGUt JXMtdGlsaW5nLW5vbmUiLAo+IGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQo+ICsJCQl0ZXN0X3Bs YW5lc19vbl9waXBlKCZkYXRhLCBwaXBlLAo+ICsJCQkJCSAgICBMT0NBTF9EUk1fRk9STUFUX01P RF9OT05FKTsKPiArCj4gKwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcy10aWxpbmcteCIsCj4ga21z dGVzdF9waXBlX25hbWUocGlwZSkpCj4gKwkJCXRlc3RfcGxhbmVzX29uX3BpcGUoJmRhdGEsIHBp cGUsCj4gKwkJCQkJICAgIExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTAo+IEVEKTsKPiArCj4g KwkJaWd0X3N1YnRlc3RfZigicGlwZS0lcy10aWxpbmcteSIsCj4ga21zdGVzdF9waXBlX25hbWUo cGlwZSkpCj4gKwkJCXRlc3RfcGxhbmVzX29uX3BpcGUoJmRhdGEsIHBpcGUsCj4gKwkJCQkJICAg IExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTAo+IEVEKTsKPiArCj4gKwkJaWd0X3N1YnRlc3Rf ZigicGlwZS0lcy10aWxpbmcteWYiLAo+IGttc3Rlc3RfcGlwZV9uYW1lKHBpcGUpKQo+ICsJCQl0 ZXN0X3BsYW5lc19vbl9waXBlKCZkYXRhLCBwaXBlLAo+ICsJCQkJCSAgICBMT0NBTF9JOTE1X0ZP Uk1BVF9NT0RfWWZfVEkKPiBMRUQpOwo+ICsJfQo+ICAKPiAgCWlndF9maXh0dXJlIHsKPiAgCQlp Z3RfZGlzcGxheV9maW5pKCZkYXRhLmRpc3BsYXkpOwpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3Rz LmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xp c3RpbmZvL2lndC1kZXY=