From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by gabe.freedesktop.org (Postfix) with ESMTPS id B7D126E057 for ; Thu, 22 Nov 2018 07:04:48 +0000 (UTC) References: <1540558693-28252-1-git-send-email-juhapekka.heikkila@gmail.com> <1542628796-25990-1-git-send-email-juhapekka.heikkila@gmail.com> From: "Nautiyal, Ankit K" Message-ID: <948c6ddb-675d-c104-5b4c-cc3e304f6f6f@intel.com> Date: Thu, 22 Nov 2018 12:34:37 +0530 MIME-Version: 1.0 In-Reply-To: <1542628796-25990-1-git-send-email-juhapekka.heikkila@gmail.com> Subject: Re: [igt-dev] [PATCH i-g-t] tests/kms_rotation_crc: Add multi plane tests. 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: Juha-Pekka Heikkila , igt-dev@lists.freedesktop.org List-ID: SGkgSnVoYS1QZWtrYSwKClRoYW5rcyBmb3IgY29uc2lkZXJpbmcgdGhlIGVhcmxpZXIgc3VnZ2Vz dGlvbnMuIFRoZSBzb2x1dGlvbiBsb29rcyAKcHJldHR5IGdvb2QsIG5pY2VseSBhdm9pZHMgaGFy ZC1jb2Rpbmcgb2YgZml4ZWQgd2lkdGggYW5kIGhlaWdodCBhbmQgCm1ha2luZyBpdCBkZXBlbmRl bnQgb24gdGhlIHJlc29sdXRpb24uCgpJIGFncmVlIHdpdGggdGhlIHRlc3QgYXMgYSB3aG9sZS4g SG93ZXZlciBJIHRoaW5rIGl0IHJlcXVpcmVzIGEgc2xpZ2h0IApjaGFuZ2UgaW4gY2FzZSBvZiA5 MC8yNzAgcm90YXRpb24gZm9yIGRldGVybWluaW5nIHRoZSB4LHkgZm9yIHJpZ2h0IGFuZCAKYm90 dG9tIHJlY3RhbmdsZXMuCgpUaGUgc3VnZ2VzdGVkIGNoYW5nZSBjYW4gYXZvaWQgY3JvcHBlZCBy ZWN0YW5nbGVzLCBmb3IgZmV3IHJlc29sdXRpb25zLgoKQWxzbyBtaW51dGUgc3R5bGluZyBpc3N1 ZXMgaW4gYSBjb3VwbGUgb2YgcGxhY2VzLgoKUGxlYXNlIGZpbmQgbXkgc3VnZ2VzdGlvbnMgaW5s aW5lOgoKCk9uIDExLzE5LzIwMTggNToyOSBQTSwgSnVoYS1QZWtrYSBIZWlra2lsYSB3cm90ZToK PiBBZGQgdGhyZWUgbmV3IHRlc3RzIHdoaWNoIHRyeSBwcmltYXJ5IGFuZCBzcHJpdGUgcGxhbmVz Cj4gbmV4dCB0byBlYWNoIG90aGVyIHdpdGggZGlmZmVyZW50IHBsYW5lIGZvcm1hdHMsIHJvdGF0 aW9ucwo+IGFuZCB0aWxpbmcgbW9kZXMuCj4KPiBtdWx0aXBsYW5lLXJvdGF0aW9uIHN1YnRlc3Qg cnVuIHRlc3QgdGhyb3VnaCB3aXRoIGJvdGggcGxhbmVzCj4gZnVsbHkgdmlzaWJsZS4KPgo+IG11 bHRpcGxhbmUtcm90YXRpb24tY3JvcHBpbmctdG9wIHdpbGwgY3JvcCBwcmltYXJ5IHBsYW5lIHRv Cj4gbGVmdC90b3AgY29ybmVyIGFuZCBzcHJpdGUgcGxhbmUgdG8gcmlnaHQvdG9wIGNvcm5lciB3 aGlsZSBydW5uaW5nCj4gcm90YXRpb24gdGVzdHMuCj4KPiBtdWx0aXBsYW5lLXJvdGF0aW9uLWNy b3BwaW5nLWJvdHRvbSB3aWxsIGNyb3AgcHJpbWFyeSBwbGFuZSB0bwo+IGxlZnQvYm90dG9tIGNv cm5lciBhbmQgc3ByaXRlIHBsYW5lIHRvIHJpZ2h0L2JvdHRvbSBjb3JuZXIgd2hpbGUKPiBydW5u aW5nIHJvdGF0aW9uIHRlc3RzLgo+Cj4gdjIgKE5hdXRpeWFsLCBBbmtpdCBLKTogVXNlIHJlY3Rh bmd1bGFyIGZpZ3VyZXMgaW5zdGVhZCBvZgo+IHNxdWFyZSBmaWd1cmVzIGFuZCBmaXggYXNzb2Np YXRlZCBjb2RlIHRvIHBlcmZvcm0gY29ycmVjdGx5Lgo+IEFkanVzdCBwbGFuZSBwb3NpdGlvbnMg YWNjb3JkaW5nIHRvIHNjcmVlbiBzaXplIHRvIGF2b2lkCj4gcHV0dGluZyBwbGFuZXMgb3V0c2lk ZSBzY3JlZW4uCj4KPiBTaWduZWQtb2ZmLWJ5OiBKdWhhLVBla2thIEhlaWtraWxhIDxqdWhhcGVr a2EuaGVpa2tpbGFAZ21haWwuY29tPgo+IC0tLQo+ICAgdGVzdHMva21zX3JvdGF0aW9uX2NyYy5j IHwgMjQ2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCj4g ICAxIGZpbGUgY2hhbmdlZCwgMjQ2IGluc2VydGlvbnMoKykKPgo+IGRpZmYgLS1naXQgYS90ZXN0 cy9rbXNfcm90YXRpb25fY3JjLmMgYi90ZXN0cy9rbXNfcm90YXRpb25fY3JjLmMKPiBpbmRleCAz NjZjMjU0Li4zMjgxNGZlIDEwMDY0NAo+IC0tLSBhL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+ ICsrKyBiL3Rlc3RzL2ttc19yb3RhdGlvbl9jcmMuYwo+IEBAIC0yNiw2ICsyNiwyNSBAQAo+ICAg I2luY2x1ZGUgPG1hdGguaD4KPiAgIAo+ICAgI2RlZmluZSBNQVhfRkVOQ0VTIDMyCj4gKyNkZWZp bmUgTUFYTVVMVElQTEFORVNBTU9VTlQgMgo+ICsKPiArc3RydWN0IHBfc3RydWN0IHsKPiArCWln dF9wbGFuZV90ICpwbGFuZTsKPiArCXN0cnVjdCBpZ3RfZmIgZmI7Cj4gK307Cj4gKwo+ICtlbnVt IHBfcG9pbnRvcmlnbyB7Cj4gKwlwX3RvcCA9IDEgPDwgMCwKPiArCXBfYm90dG9tID0gMSA8PCAx LAo+ICsJcF9sZWZ0ID0gMSA8PCAyLAo+ICsJcF9yaWdodCA9IDEgPDwgMwo+ICt9Owo+ICsKPiAr c3RydWN0IHBfcG9pbnR7Cj4gKwllbnVtIHBfcG9pbnRvcmlnbyBvcmlnbzsKPiArCWZsb2F0X3Qg eDsKPiArCWZsb2F0X3QgeTsKPiArfTsKPiAgIAo+ICAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAgCWlu dCBnZnhfZmQ7Cj4gQEAgLTQzLDYgKzYyLDkgQEAgdHlwZWRlZiBzdHJ1Y3Qgewo+ICAgCXVpbnQz Ml90IG92ZXJyaWRlX2ZtdDsKPiAgIAl1aW50NjRfdCBvdmVycmlkZV90aWxpbmc7Cj4gICAJaW50 IGRldmlkOwo+ICsKPiArCXN0cnVjdCBwX3N0cnVjdCAqbXVsdGlwbGFuZW9sZHZpZXc7Cj4gKwlz dHJ1Y3QgcF9wb2ludCBwbGFuZXBvc1tNQVhNVUxUSVBMQU5FU0FNT1VOVF07Cj4gICB9IGRhdGFf dDsKPiAgIAo+ICAgdHlwZWRlZiBzdHJ1Y3Qgewo+IEBAIC0zOTUsNiArNDE3LDE5NCBAQCBzdGF0 aWMgdm9pZCB0ZXN0X3BsYW5lX3JvdGF0aW9uKGRhdGFfdCAqZGF0YSwgaW50IHBsYW5lX3R5cGUs IGJvb2wgdGVzdF9iYWRfZm9ybQo+ICAgCX0KPiAgIH0KPiAgIAo+ICt0eXBlZGVmIHN0cnVjdCB7 Cj4gKwlpbnQzMl90IHgxLCB5MTsKPiArCXVpbnQ2NF90IHdpZHRoLCBoZWlnaHQsIHRpbGluZywg cGxhbmV0eXBlLCBmb3JtYXQ7Cj4gKwlpZ3Rfcm90YXRpb25fdCByb3RhdGlvbl9zdywgcm90YXRp b25faHc7Cj4gK30gcGxhbmVpbmZvczsKPiArCj4gK3N0YXRpYyB2b2lkIGdldF9tdWx0aXBsYW5l X2NyYyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+ICsJCQkgICAgICAgaWd0 X2NyY190ICpjcmNfb3V0cHV0LCBwbGFuZWluZm9zKiBwbGFuZWluZm8sCgpTcGFjZSBiZWZvcmUg JyonCgo+ICsJCQkgICAgICAgaW50IG51bXBsYW5lcykKPiArewo+ICsJdWludDMyX3QgdywgaDsK PiArCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsKPiArCXN0cnVjdCBw X3N0cnVjdCAqcGxhbmVzLCAqb2xkcGxhbmVzOwo+ICsJaW50IGMsIHJldDsKPiArCj4gKwlvbGRw bGFuZXMgPSBkYXRhLT5tdWx0aXBsYW5lb2xkdmlldzsKPiArCXBsYW5lcyA9IG1hbGxvYyhzaXpl b2YoKnBsYW5lcykqbnVtcGxhbmVzKTsKCnNwYWNlIGFyb3VuZCBtdWx0aXBsaWNhdGlvbiAnKicK PiArCj4gKwlmb3IgKGMgPSAwOyBjIDwgbnVtcGxhbmVzOyBjKyspIHsKPiArCQlwbGFuZXNbY10u cGxhbmUgPSBpZ3Rfb3V0cHV0X2dldF9wbGFuZV90eXBlKG91dHB1dCwKPiArCQkJCQkJCSAgICBw bGFuZWluZm9bY10ucGxhbmV0eXBlKTsKPiArCj4gKwkJdyA9IHBsYW5laW5mb1tjXS53aWR0aDsK PiArCQloID0gcGxhbmVpbmZvW2NdLmhlaWdodDsKPiArCj4gKwkJaWYgKHBsYW5laW5mb1tjXS5y b3RhdGlvbl9zdyAmIChJR1RfUk9UQVRJT05fOTAgfCBJR1RfUk9UQVRJT05fMjcwKSkKPiArCQkJ aWd0X3N3YXAodywgaCk7Cj4gKwoKVGhlcmUgY2FuIGJlIGEgbWlub3IgcHJvYmxlbSBvZiBjcm9w cGluZyBmb3IgcmVjdGFuZ2xlcyByaWdodCBzaWRlIG9mIApzY3JlZW4sIGluIGNhc2Ugb2Ygc29t ZSBzcXVhcmlzaCByZXNvbHV0aW9ucy4KV2Uga25vdyBmb3Igb3VyIG11bHRpLXBsYW5lIHJvdGF0 aW9uIHRlc3QgZm9yIFRvcCBSaWdodCByZWN0YW5nbGU6CndpZHRoID0gMC4yIGhkaXNwbGF5Cmhl aWdodCA9IDAuNCB2ZGlzcGxheQp4MSA9IGhkaXNwbGF5IC0gMC4yaGRpc3BsYXkgLSAwLjFoZGlz cGxheSAobWFyZ2luKT0gMC43aGRpc3BsYXkKeTEgPSB2ZGlzcGxheSAtIDAuNHZkaXNwbGF5IC0g MC4xdmRpc3BsYXkgKG1hcmdpbikgPSAwLjV2ZGlzcGxheQoKCkFmdGVyIHJvdGF0aW9uIDkwLzI3 MCB3aWR0aCBhbmQgaGVpZ2h0IGdldHMgc3dhcHBlZC4KClNpbmNlIHgxID0gMC43IGhkaXNwbGF5 LCBzbyBtYXhpbXVtIHdpZHRoIG9mIHRvcC1yaWdodCByZWN0YW5nbGUgd2l0aG91dCAKY3JvcHBp bmcgPSAwLjNoZGlzcGxheS4KU28gaWYgdGhlIGFjdHVhbCByZWN0YW5nbGUgd2lkdGggYWZ0ZXIg cm90YXRpb24gb2YgOTAvMjcwIGlzIG1vcmUgdGhhbiAKdGhlIG1heGltdW0gYXZhaWxhYmxlIHdp ZHRoLCB3ZSdsbCBnZXQgY3JvcHBlZCByZWN0YW5nbGUuCgpOb3cgZHVlIHRvIHN3YXAsIHRoZSB3 aWR0aCBvZiB0aGUgcmVjdGFuZ2xlIGFmdGVyIHJvdGF0aW9uID0gMC40dmRpc3BsYXkuCldlIHdp bGwgYWx3YXlzIGdldCBjcm9wcGVkIHJlY3RhbmdsZSBpZjoKICAwLjQgdmRpc3BsYXkgPiAwLjNo ZGlzcGxheS4KCk9yIGluIG90aGVyIHdvcmRzIHdlJ2xsIGdldCBjcm9wcGVkIHJlY3RhbmdsZSBp ZiBoZGlzcGxheS92ZGlzcGxheSA8IDQvMy4KTm93IEkgYW0gbm90IHN1cmUgd2hldGhlciB3ZSBz aG91bGQgZXZlbiB0aGluayBhYm91dCB0aG9zZSByZXNvbHV0aW9ucyAKd2hpY2ggaGF2ZSBoZGlz cGxheTp2ZGlzcGxheSA8IDQ6MwpCdXQgdG8gbmFtZSBhIGZldyAxMjgweDEwMjQsICA3MjB4NTc2 IHJlc29sdXRpb24gd2lsbCBnZXQgY3JvcHBlZCByZWN0YW5nbGUuCgpUaGUgcHJvYmxlbSBjYW4g YmUgc29sdmVkLCBpZiB3ZSBjaGFuZ2UgdGhlIHgxIGFuZCB5MSBpbiBjYXNlIG9mIApyb3RhdGlv biA5MC8yNzAgYmVmb3JlIHN3YXBwaW5nLgoKaWYgKHBsYW5laW5mb1tjXS5yb3RhdGlvbl9zdyAm IChJR1RfUk9UQVRJT05fOTAgfCBJR1RfUk9UQVRJT05fMjcwKSkgewoKICAgICB4MSA9IHgxICsg dyAtIGg7CiAgICAgeTEgPSB5MSArIGggLSB3OwoKICAgICBpZ3Rfc3dhcCh3LCBoKTsKfQpzbyB4 MSB3aWxsIGJlY29tZSAwLjcgaGRpc3BsYXkgKyAwLjJoZGlzcGxheSAtIDAuNCB2ZGlzcGxheSA9 IDAuOSAKaGRpc3BsYXkgKyAwLjQgdmRpc3BsYXkgWyBhIGJvcmRlci9tYXJnaW4gb2YgMC4xIGhk aXNwbGF5IGZyb20gcmlnaHQgc2lkZV0KYW5kIHkxIHdpbGwgYmVjb21lIDAuNSB2ZGlzcGxheSAr MC40IHZkaXNwbGF5IC0gMC4yaGRpc3BsYXkgPSAwLjkgCnZkaXNwbGF5ICsgMC4yIGhkaXNwbGF5 IFthIGJvcmRlci9tYXJnaW4gb2YgMC4xIHZkaXNwbGF5IGZyb20gYm90dG9tIF0KCj4gKwkJaWd0 X2NyZWF0ZV9mYihkYXRhLT5nZnhfZmQsIHcsIGgsIHBsYW5laW5mb1tjXS5mb3JtYXQsCj4gKwkJ CSAgICAgIHBsYW5laW5mb1tjXS50aWxpbmcsICZwbGFuZXNbY10uZmIpOwo+ICsKPiArCQlwYWlu dF9zcXVhcmVzKGRhdGEsIHBsYW5laW5mb1tjXS5yb3RhdGlvbl9zdywgJnBsYW5lc1tjXS5mYiwg MS4wZik7Cj4gKwkJaWd0X3BsYW5lX3NldF9mYihwbGFuZXNbY10ucGxhbmUsICZwbGFuZXNbY10u ZmIpOwo+ICsKPiArCQlpZiAocGxhbmVpbmZvW2NdLnJvdGF0aW9uX2h3ICYgKElHVF9ST1RBVElP Tl85MCB8IElHVF9ST1RBVElPTl8yNzApKQo+ICsJCQlpZ3RfcGxhbmVfc2V0X3NpemUocGxhbmVz W2NdLnBsYW5lLCBoLCB3KTsKPiArCj4gKwkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihwbGFuZXNb Y10ucGxhbmUsIHBsYW5laW5mb1tjXS54MSwgcGxhbmVpbmZvW2NdLnkxKTsKPiArCQlpZ3RfcGxh bmVfc2V0X3JvdGF0aW9uKHBsYW5lc1tjXS5wbGFuZSwgcGxhbmVpbmZvW2NdLnJvdGF0aW9uX2h3 KTsKPiArCX0KPiArCj4gKwlyZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0MihkaXNwbGF5LCBD T01NSVRfQVRPTUlDKTsKPiArCWlndF9hc3NlcnRfZXEocmV0LCAwKTsKPiArCj4gKwlpZ3RfcGlw ZV9jcmNfZ2V0X2N1cnJlbnQoZGF0YS0+Z2Z4X2ZkLCBkYXRhLT5waXBlX2NyYywgY3JjX291dHB1 dCk7Cj4gKwo+ICsJZm9yIChjID0gMDsgYyA8IG51bXBsYW5lcyAmJiBvbGRwbGFuZXM7IGMrKykK PiArCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmdmeF9mZCwgJm9sZHBsYW5lc1tjXS5mYik7Cj4gKwo+ ICsJZnJlZShvbGRwbGFuZXMpOwo+ICsJZGF0YS0+bXVsdGlwbGFuZW9sZHZpZXcgPSAodm9pZCop cGxhbmVzOwo+ICt9Cj4gKwo+ICtzdGF0aWMgdm9pZCBwb2ludGxvY2F0aW9uKGRhdGFfdCAqZGF0 YSwgcGxhbmVpbmZvcyogcCwgZHJtTW9kZU1vZGVJbmZvICptb2RlLAoKcGxhbmVpbmZvcyAqcAoK PiArCQkJICBpbnQgYykKPiArewo+ICsJcFtjXS54MSA9IChpbnQzMl90KShkYXRhLT5wbGFuZXBv c1tjXS54Km1vZGUtPmhkaXNwbGF5KQo+ICsJCQkrKChkYXRhLT5wbGFuZXBvc1tjXS5vcmlnbyAm IHBfcmlnaHQpID8gbW9kZS0+aGRpc3BsYXkgOiAwKTsKPiArCXBbY10ueTEgPSAoaW50MzJfdCko ZGF0YS0+cGxhbmVwb3NbY10ueSptb2RlLT52ZGlzcGxheSkKPiArCQkJKygoZGF0YS0+cGxhbmVw b3NbY10ub3JpZ28gJiBwX2JvdHRvbSkgPyBtb2RlLT52ZGlzcGxheSA6IDApOwo+ICt9Cj4gKwoK U3BhY2UgYXJvdW5kICcqJwoKPiArLyoKPiArICogSGVyZSBpcyBwaXBlIHBhcmFtZXRlciB3aGlj aCBpcyBub3cgdXNlZCBvbmx5IGZvciBmaXJzdCBwaXBlLgo+ICsgKiBJdCBpcyBsZWZ0IGhlcmUg aWYgdGhpcyB0ZXN0IGV2ZXIgd2FzIHdhbnRlZCB0byBiZSBydW4gb24KPiArICogZGlmZmVyZW50 IHBpcGVzLgo+ICsgKi8KPiArc3RhdGljIHZvaWQgdGVzdF9tdWx0aV9wbGFuZV9yb3RhdGlvbihk YXRhX3QgKmRhdGEsIGVudW0gcGlwZSBwaXBlKQo+ICt7Cj4gKwlpZ3RfZGlzcGxheV90ICpkaXNw bGF5ID0gJmRhdGEtPmRpc3BsYXk7Cj4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiArCWlndF9j cmNfdCByZXRjcmNfc3csIHJldGNyY19odzsKPiArCXBsYW5laW5mb3MgcFsyXTsKPiArCWludCBj Owo+ICsJc3RydWN0IHBfc3RydWN0ICpvbGRwbGFuZXM7Cj4gKwlkcm1Nb2RlTW9kZUluZm8gKm1v ZGU7Cj4gKwo+ICsJY29uc3Qgc3RhdGljIHN0cnVjdCB7Cj4gKwkJaWd0X3JvdGF0aW9uX3Qgcm90 YXRpb247Cj4gKwkJZmxvYXRfdCB3aWR0aDsKPiArCQlmbG9hdF90IGhlaWdodDsKPiArCQl1aW50 NjRfdCB0aWxpbmc7Cj4gKwl9IHBsYW5lY29uZmlnc1tdID0gewo+ICsJe0lHVF9ST1RBVElPTl8w LCAuMmYsIC40ZiwgTE9DQUxfRFJNX0ZPUk1BVF9NT0RfTk9ORSB9LAo+ICsJe0lHVF9ST1RBVElP Tl8wLCAuMmYsIC40ZiwgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVElMRUQgfSwKPiArCXtJR1Rf Uk9UQVRJT05fMCwgLjJmLCAuNGYsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIH0sCj4g Kwl7SUdUX1JPVEFUSU9OXzAsIC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWWZfVElM RUQgfSwKPiArCXtJR1RfUk9UQVRJT05fOTAsIC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1BVF9N T0RfWV9USUxFRCB9LAo+ICsJe0lHVF9ST1RBVElPTl85MCwgLjJmLCAuNGYsIExPQ0FMX0k5MTVf Rk9STUFUX01PRF9ZZl9USUxFRCB9LAo+ICsJe0lHVF9ST1RBVElPTl8xODAsIC4yZiwgLjRmLCBM T0NBTF9EUk1fRk9STUFUX01PRF9OT05FIH0sCj4gKwl7SUdUX1JPVEFUSU9OXzE4MCwgLjJmLCAu NGYsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVEIH0sCj4gKwl7SUdUX1JPVEFUSU9OXzE4 MCwgLjJmLCAuNGYsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZX1RJTEVEIH0sCj4gKwl7SUdUX1JP VEFUSU9OXzE4MCwgLjJmLCAuNGYsIExPQ0FMX0k5MTVfRk9STUFUX01PRF9ZZl9USUxFRCB9LAo+ ICsJe0lHVF9ST1RBVElPTl8yNzAsIC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1BVF9NT0RfWV9U SUxFRCB9LAo+ICsJe0lHVF9ST1RBVElPTl8yNzAsIC4yZiwgLjRmLCBMT0NBTF9JOTE1X0ZPUk1B VF9NT0RfWWZfVElMRUQgfSwKPiArCX07Cj4gKwo+ICsJLyoKPiArCSogVGhlc2UgYXJlIHRob3Nl IG1vZGVzIHdoaWNoIGFyZSB0ZXN0ZWQuIEZvciB0ZXN0aW5nIGZlZWwgaW50ZXJlc3RpbmcKPiAr CSogY2FzZSB3aXRoIHRpbGluZyBhcmUgMiBieXRlIHdpZGUgYW5kIDQgYnl0ZSB3aWRlLgo+ICsJ Kgo+ICsJKiBUT0RPOgo+ICsJKiBCdWlsdCBzdXBwb3J0IGZvciBOVjEyIGhlcmUuCj4gKwkqLwo+ ICsJY29uc3Qgc3RhdGljIHVpbnQzMl90ICBmb3JtYXRsaXN0W10gPSB7RFJNX0ZPUk1BVF9SR0I1 NjUsCj4gKwkJCQkJICAgICAgIERSTV9GT1JNQVRfWFJHQjg4ODh9Owo+ICsKPiArCWZvcl9lYWNo X3ZhbGlkX291dHB1dF9vbl9waXBlKGRpc3BsYXksIHBpcGUsIG91dHB1dCkgewo+ICsJCWludCBp LCBqLCBrLCBsOwo+ICsJCWlndF9vdXRwdXRfc2V0X3BpcGUob3V0cHV0LCBwaXBlKTsKPiArCQlt b2RlID0gaWd0X291dHB1dF9nZXRfbW9kZShvdXRwdXQpOwo+ICsJCWlndF9kaXNwbGF5X3JlcXVp cmVfb3V0cHV0KGRpc3BsYXkpOwo+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09N TUlUX0FUT01JQyk7Cj4gKwo+ICsJCWRhdGEtPnBpcGVfY3JjID0gaWd0X3BpcGVfY3JjX25ldyhk YXRhLT5nZnhfZmQsIHBpcGUsCj4gKwkJCQkJCSAgSU5URUxfUElQRV9DUkNfU09VUkNFX0FVVE8p Owo+ICsJCWlndF9waXBlX2NyY19zdGFydChkYXRhLT5waXBlX2NyYyk7Cj4gKwo+ICsJCWZvciAo aSA9IDA7IGkgPCBBUlJBWV9TSVpFKHBsYW5lY29uZmlncyk7IGkrKykgewo+ICsJCQlwWzBdLnBs YW5ldHlwZSA9IERSTV9QTEFORV9UWVBFX1BSSU1BUlk7Cj4gKwkJCXBbMF0ud2lkdGggPSAodWlu dDY0X3QpKHBsYW5lY29uZmlnc1tpXS53aWR0aCptb2RlLT5oZGlzcGxheSk7Cj4gKwkJCXBbMF0u aGVpZ2h0ID0gKHVpbnQ2NF90KShwbGFuZWNvbmZpZ3NbaV0uaGVpZ2h0Km1vZGUtPnZkaXNwbGF5 KTsKClNwYWNlIGFyb3VuZCAnKicKCj4gKwkJCXBbMF0udGlsaW5nID0gcGxhbmVjb25maWdzW2ld LnRpbGluZzsKPiArCQkJcG9pbnRsb2NhdGlvbihkYXRhLCAocGxhbmVpbmZvcyopJnAsIG1vZGUs IDApOwoKU3BhY2UgYmVmb3JlICcqJwoKPiArCj4gKwkJCWZvciAoayA9IDA7IGsgPCBBUlJBWV9T SVpFKGZvcm1hdGxpc3QpOyBrKyspIHsKPiArCQkJCXBbMF0uZm9ybWF0ID0gZm9ybWF0bGlzdFtr XTsKPiArCj4gKwkJCQlmb3IgKGogPSAwOyBqIDwgQVJSQVlfU0laRShwbGFuZWNvbmZpZ3MpOyBq KyspIHsKPiArCQkJCQlwWzFdLnBsYW5ldHlwZSA9IERSTV9QTEFORV9UWVBFX09WRVJMQVk7Cj4g KwkJCQkJcFsxXS53aWR0aCA9ICh1aW50NjRfdCkocGxhbmVjb25maWdzW2pdLndpZHRoKm1vZGUt PmhkaXNwbGF5KTsKPiArCQkJCQlwWzFdLmhlaWdodCA9ICh1aW50NjRfdCkocGxhbmVjb25maWdz W2pdLmhlaWdodCptb2RlLT52ZGlzcGxheSk7CgpzcGFjZSBhcm91bmQgJyonCgo+ICsJCQkJCXBb MV0udGlsaW5nID0gcGxhbmVjb25maWdzW2pdLnRpbGluZzsKPiArCQkJCQlwb2ludGxvY2F0aW9u KGRhdGEsIChwbGFuZWluZm9zKikmcCwKPiArCQkJCQkJICAgICAgbW9kZSwgMSk7Cj4gKwoKU3Bh Y2UgYmVmb3JlICcqJwo+ICsJCQkJCWZvciAobCA9IDA7IGwgPCBBUlJBWV9TSVpFKGZvcm1hdGxp c3QpOyBsKyspIHsKPiArCQkJCQkJcFsxXS5mb3JtYXQgPSBmb3JtYXRsaXN0W2xdOwo+ICsKPiAr CQkJCQkJLyoKPiArCQkJCQkJICogUkdCNTY1IDkwLzI3MCBkZWdyZWVzIHJvdGF0aW9uIGlzIHN1 cHBvcnRlZAo+ICsJCQkJCQkgKiBmcm9tIGdlbjExIG9ud2FyZHMuCj4gKwkJCQkJCSAqLwo+ICsJ CQkJCQlpZiAocFswXS5mb3JtYXQgPT0gRFJNX0ZPUk1BVF9SR0I1NjUgJiYKPiArCQkJCQkJICAg ICAocGxhbmVjb25maWdzW2ldLnJvdGF0aW9uICYgKElHVF9ST1RBVElPTl85MCB8IElHVF9ST1RB VElPTl8yNzApKQo+ICsJCQkJCQkgICAgICYmIGludGVsX2dlbihkYXRhLT5kZXZpZCkgPCAxMSkK PiArCQkJCQkJCWNvbnRpbnVlOwo+ICsKPiArCQkJCQkJaWYgKHBbMV0uZm9ybWF0ID09IERSTV9G T1JNQVRfUkdCNTY1ICYmCj4gKwkJCQkJCSAgICAgKHBsYW5lY29uZmlnc1tqXS5yb3RhdGlvbiAm IChJR1RfUk9UQVRJT05fOTAgfCBJR1RfUk9UQVRJT05fMjcwKSkKPiArCQkJCQkJICAgICAmJiBp bnRlbF9nZW4oZGF0YS0+ZGV2aWQpIDwgMTEpCj4gKwkJCQkJCQljb250aW51ZTsKPiArCj4gKwkJ CQkJCXBbMF0ucm90YXRpb25fc3cgPSBwbGFuZWNvbmZpZ3NbaV0ucm90YXRpb247Cj4gKwkJCQkJ CXBbMF0ucm90YXRpb25faHcgPSBJR1RfUk9UQVRJT05fMDsKPiArCQkJCQkJcFsxXS5yb3RhdGlv bl9zdyA9IHBsYW5lY29uZmlnc1tqXS5yb3RhdGlvbjsKPiArCQkJCQkJcFsxXS5yb3RhdGlvbl9o dyA9IElHVF9ST1RBVElPTl8wOwo+ICsJCQkJCQlnZXRfbXVsdGlwbGFuZV9jcmMoZGF0YSwgb3V0 cHV0LCAmcmV0Y3JjX3N3LAo+ICsJCQkJCQkJCSAgIChwbGFuZWluZm9zKikmcCwgTUFYTVVMVElQ TEFORVNBTU9VTlQpOwoKU3BhY2UgYmVmb3JlICcqJwo+ICsKPiArCQkJCQkJaWd0X3N3YXAocFsw XS5yb3RhdGlvbl9zdywgcFswXS5yb3RhdGlvbl9odyk7Cj4gKwkJCQkJCWlndF9zd2FwKHBbMV0u cm90YXRpb25fc3csIHBbMV0ucm90YXRpb25faHcpOwo+ICsJCQkJCQlnZXRfbXVsdGlwbGFuZV9j cmMoZGF0YSwgb3V0cHV0LCAmcmV0Y3JjX2h3LAo+ICsJCQkJCQkJCSAgIChwbGFuZWluZm9zKikm cCwgTUFYTVVMVElQTEFORVNBTU9VTlQpOwo+ICsKClNwYWNlIGJlZm9yZSAnKicKCj4gKwkJCQkJ CWlndF9hc3NlcnRfY3JjX2VxdWFsKCZyZXRjcmNfc3csICZyZXRjcmNfaHcpOwo+ICsJCQkJCX0K PiArCQkJCX0KPiArCQkJfQo+ICsJCX0KPiArCQlpZ3RfcGlwZV9jcmNfc3RvcChkYXRhLT5waXBl X2NyYyk7Cj4gKwkJaWd0X3BpcGVfY3JjX2ZyZWUoZGF0YS0+cGlwZV9jcmMpOwo+ICsJCWlndF9v dXRwdXRfc2V0X3BpcGUob3V0cHV0LCBQSVBFX0FOWSk7Cj4gKwl9Cj4gKwo+ICsJLyoKPiArCSog T2xkIGZicyBhcmUgZGVsZXRlZCBvbmx5IGFmdGVyIG5ldyBvbmVzIGFyZSBzZXQgb24gcGxhbmVz Lgo+ICsJKiBUaGlzIGlzIGRvbmUgdG8gc3BlZWQgdXAgdGhlIHRlc3QKPiArCSovCj4gKwlvbGRw bGFuZXMgPSBkYXRhLT5tdWx0aXBsYW5lb2xkdmlldzsKPiArCWZvciAoYyA9IDA7IGMgPCBNQVhN VUxUSVBMQU5FU0FNT1VOVCAmJiBvbGRwbGFuZXM7IGMrKykKPiArCQlpZ3RfcmVtb3ZlX2ZiKGRh dGEtPmdmeF9mZCwgJm9sZHBsYW5lc1tjXS5mYik7Cj4gKwo+ICsJZnJlZShvbGRwbGFuZXMpOwo+ ICsJZGF0YS0+bXVsdGlwbGFuZW9sZHZpZXcgPSBOVUxMOwo+ICsJZGF0YS0+cGlwZV9jcmMgPSBO VUxMOwo+ICt9Cj4gKwo+ICAgc3RhdGljIHZvaWQgdGVzdF9wbGFuZV9yb3RhdGlvbl9leGhhdXN0 X2ZlbmNlcyhkYXRhX3QgKmRhdGEsCj4gICAJCQkJCSAgICAgICBlbnVtIHBpcGUgcGlwZSwKPiAg IAkJCQkJICAgICAgIGlndF9vdXRwdXRfdCAqb3V0cHV0LAo+IEBAIC01OTUsNiArODA1LDQyIEBA IGlndF9tYWluCj4gICAJCX0KPiAgIAl9Cj4gICAKPiArCWlndF9zdWJ0ZXN0X2YoIm11bHRpcGxh bmUtcm90YXRpb24iKSB7Cj4gKwkJaWd0X3JlcXVpcmUoZ2VuID49IDkpOwo+ICsJCWNsZWFudXBf Y3J0YygmZGF0YSk7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS5vcmlnbyA9IHBfdG9wIHwgcF9sZWZ0 Owo+ICsJCWRhdGEucGxhbmVwb3NbMF0ueCA9IC4xZjsKPiArCQlkYXRhLnBsYW5lcG9zWzBdLnkg PSAuMWY7Cj4gKwkJZGF0YS5wbGFuZXBvc1sxXS5vcmlnbyA9IHBfdG9wIHwgcF9yaWdodDsKPiAr CQlkYXRhLnBsYW5lcG9zWzFdLnggPSAtLjNmOwo+ICsJCWRhdGEucGxhbmVwb3NbMV0ueSA9IC4x ZjsKPiArCQl0ZXN0X211bHRpX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCAwKTsKPiArCX0KPiArCj4g KwlpZ3Rfc3VidGVzdF9mKCJtdWx0aXBsYW5lLXJvdGF0aW9uLWNyb3BwaW5nLXRvcCIpIHsKPiAr CQlpZ3RfcmVxdWlyZShnZW4gPj0gOSk7Cj4gKwkJY2xlYW51cF9jcnRjKCZkYXRhKTsKPiArCQlk YXRhLnBsYW5lcG9zWzBdLm9yaWdvID0gcF90b3AgfCBwX2xlZnQ7Cj4gKwkJZGF0YS5wbGFuZXBv c1swXS54ID0gLS4wNWY7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS55ID0gLS4xNWY7Cj4gKwkJZGF0 YS5wbGFuZXBvc1sxXS5vcmlnbyA9IHBfdG9wIHwgcF9yaWdodDsKPiArCQlkYXRhLnBsYW5lcG9z WzFdLnggPSAtLjE1ZjsKPiArCQlkYXRhLnBsYW5lcG9zWzFdLnkgPSAtLjE1ZjsKPiArCQl0ZXN0 X211bHRpX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCAwKTsKPiArCX0KPiArCj4gKwlpZ3Rfc3VidGVz dF9mKCJtdWx0aXBsYW5lLXJvdGF0aW9uLWNyb3BwaW5nLWJvdHRvbSIpIHsKPiArCQlpZ3RfcmVx dWlyZShnZW4gPj0gOSk7Cj4gKwkJY2xlYW51cF9jcnRjKCZkYXRhKTsKPiArCQlkYXRhLnBsYW5l cG9zWzBdLm9yaWdvID0gcF9ib3R0b20gfCBwX2xlZnQ7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS54 ID0gLS4wNWY7Cj4gKwkJZGF0YS5wbGFuZXBvc1swXS55ID0gLS4yMGY7Cj4gKwkJZGF0YS5wbGFu ZXBvc1sxXS5vcmlnbyA9IHBfYm90dG9tIHwgcF9yaWdodDsKPiArCQlkYXRhLnBsYW5lcG9zWzFd LnggPSAtLjE1ZjsKPiArCQlkYXRhLnBsYW5lcG9zWzFdLnkgPSAtLjIwZjsKPiArCQl0ZXN0X211 bHRpX3BsYW5lX3JvdGF0aW9uKCZkYXRhLCAwKTsKPiArCX0KPiArCj4gICAJLyoKPiAgIAkgKiBl eGhhdXN0LWZlbmNlcyBzaG91bGQgYmUgbGFzdCB0ZXN0LCBpZiBpdCBmYWlscyB3ZSBtYXkgT09N IGluCj4gICAJICogdGhlIGZvbGxvd2luZyBzdWJ0ZXN0cyBvdGhlcndpc2UuCgpTb3JyeSBmb3Ig bGVuZ3RoeSBkZXRhaWxzIGZvciBhIG1pbm9yIGNvcm5lciBjYXNlLCBjb3VsZG50IG1ha2UgaXQg bW9yZSAKY29uY2lzZSwgYW5kIGNsZWFyIGF0IHRoZSBzYW1lIHRpbWUuCgpSZWdhcmRzLApBbmtp dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwppZ3QtZGV2 IG1haWxpbmcgbGlzdAppZ3QtZGV2QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3Rz LmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2lndC1kZXYK