From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga03.intel.com (mga03.intel.com [134.134.136.65]) by gabe.freedesktop.org (Postfix) with ESMTPS id CA69E6EF02 for ; Fri, 13 Sep 2019 09:57:48 +0000 (UTC) Date: Fri, 13 Sep 2019 12:57:45 +0300 From: Petri Latvala Message-ID: <20190913095745.GQ4019@platvala-desk.ger.corp.intel.com> References: <20190911141124.1130-1-stylon.wang@amd.com> <308a2ff8-a9cf-64e4-22e0-80ceb2f9c6fd@amd.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <308a2ff8-a9cf-64e4-22e0-80ceb2f9c6fd@amd.com> Subject: Re: [igt-dev] [PATCH i-g-t] tools/amd_hdmi_compliance_yuv420: Test 4K video modes with YUV encoding 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: "Kazlauskas, Nicholas" Cc: "igt-dev@lists.freedesktop.org" List-ID: T24gV2VkLCBTZXAgMTEsIDIwMTkgYXQgMDI6Mjk6NTFQTSArMDAwMCwgS2F6bGF1c2thcywgTmlj aG9sYXMgd3JvdGU6Cj4gT24gMjAxOS0wOS0xMSAxMDoxMSBhLm0uLCBXYW5nLCBDaGFvLWthaSAo U3R5bG9uKSB3cm90ZToKPiA+IEZyb206IFN0eWxvbiBXYW5nIDxzdHlsb24ud2FuZ0BhbWQuY29t Pgo+ID4gCj4gPiBIRE1JIDIuMCBjb21wbGlhbmNlIHRlc3RzIG5lZWRzIDRLIG1vZGVzIHdpdGgg WVVWIGVuY29kaW5nLgo+ID4gVGhpcyB0ZXN0IHNlbGVjdHMgNEsgbW9kZXMgYmFzZWQgb24gc3Bl Y2lmaWVkIFZJQy4KPiAKPiBJdCBoZWxwcyB0byBub3RlIHdoYXQgY2hhbmdlZCBpbiBhIHBhdGNo IHNlcmllcyBpbiBib3RoIHRoZSBwYXRjaCB0aXRsZSAKPiBhbmQgaW4gdGhlIGNvbW1pdCBtZXNz YWdlIGhlcmUuCj4gCj4gWW91IGNhbiBhZGQgYSB2MiB0byB0aGUgcGF0Y2ggaGVhZGVyIGJ5IGFw cGVuZGluZyBhIC12MiB0byB5b3VyIGNvbW1hbmQsIGVnOgo+IAo+ICJnaXQgc2VuZC1lbWFpbCAt djIgLi4uIgo+IAo+IEFuZCBpbiB0aGUgY29tbWl0IGRlc2NyaXB0aW9uIHlvdSBzaG91bGQgZG8g c29tZXRoaW5nIGxpa2U6Cj4gCj4gdjI6Cj4gLSBleGFtcGxlIGNoYW5nZSAxCj4gLSBleGFtcGxl IGNoYW5nZSAyCj4gCj4gT3RoZXIgdGhhbiB0aGF0LCBJIGRvIGhhdmUgc29tZSBnZW5lcmFsIGNv bW1lbnRzIGFuZCBuaXRwaWNrczoKPiAKPiBJIHRoaW5rIHRoaXMgdG9vbCBtaWdodCBiZSBiZXR0 ZXIgb2ZmIG5hbWVkIGFzIGp1c3QgYW1kX2hkbWlfY29tcGxpYW5jZSAKPiBzbyB3ZSBjYW4gZXhw YW5kIG9uIHRoaXMgbGF0ZXIuCgpJcyB0aGVyZSBhbnl0aGluZyBzcGVjaWZpYyB0aGF0IG1ha2Vz IHRoaXMgdG9vbCBBTUQtc3BlY2lmaWM/IEl0IGV2ZW4KdXNlcyBEUklWRVJfQU5ZLgoKSSBndWVz cyB0aGUgc2FtZSBxdWVzdGlvbiBjYW4gYmUgYXNrZWQgYWJvdXQgaW50ZWxfZHBfY29tcGxpYW5j ZS5jLi4uCgoKCi0tIApQZXRyaSBMYXR2YWxhCgoKCgo+IAo+IE5pY2hvbGFzIEthemxhdXNrYXMK PiAKPiA+IAo+ID4gU2lnbmVkLW9mZi1ieTogU3R5bG9uIFdhbmcgPHN0eWxvbi53YW5nQGFtZC5j b20+Cj4gPiAtLS0KPiA+ICAgdG9vbHMvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8ICAg MyArCj4gPiAgIHRvb2xzL01ha2VmaWxlLnNvdXJjZXMgICAgICAgICAgICAgfCAgIDQgKwo+ID4g ICB0b29scy9hbWRfaGRtaV9jb21wbGlhbmNlX3l1djQyMC5jIHwgMTkzICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrCj4gPiAgIHRvb2xzL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAg fCAgIDUgKwo+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDIwNSBpbnNlcnRpb25zKCspCj4gPiAgIGNy ZWF0ZSBtb2RlIDEwMDY0NCB0b29scy9hbWRfaGRtaV9jb21wbGlhbmNlX3l1djQyMC5jCj4gPiAK PiA+IGRpZmYgLS1naXQgYS90b29scy9NYWtlZmlsZS5hbSBiL3Rvb2xzL01ha2VmaWxlLmFtCj4g PiBpbmRleCA0ZjU0NzIwZi4uMWEyM2UwNzggMTAwNjQ0Cj4gPiAtLS0gYS90b29scy9NYWtlZmls ZS5hbQo+ID4gKysrIGIvdG9vbHMvTWFrZWZpbGUuYW0KPiA+IEBAIC0xMSw2ICsxMSw5IEBAIGJp bl9QUk9HUkFNUyArPSBpbnRlbF9kcF9jb21wbGlhbmNlCj4gPiAgIGludGVsX2RwX2NvbXBsaWFu Y2VfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoR0xJQl9DRkxBR1MpCj4gPiAgIGludGVsX2RwX2Nv bXBsaWFuY2VfTERBREQgPSAkKHRvcF9idWlsZGRpcikvbGliL2xpYmludGVsX3Rvb2xzLmxhCj4g PiAgIAo+ID4gK2Jpbl9QUk9HUkFNUyArPSBhbWRfaGRtaV9jb21wbGlhbmNlX3l1djQyMAo+ID4g K2FtZF9oZG1pX2NvbXBsaWFuY2VfeXV2NDIwX0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKEdMSUJf Q0ZMQUdTKQo+ID4gKwo+ID4gICBTVUJESVJTID0gbnVsbF9zdGF0ZV9nZW4gcmVnaXN0ZXJzCj4g PiAgIAo+ID4gICBBTV9DUFBGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKSAtSSQodG9wX3NyY2Rpcikv aW5jbHVkZS9kcm0tdWFwaSAtSSQodG9wX3NyY2RpcikvbGliIFwKPiA+IGRpZmYgLS1naXQgYS90 b29scy9NYWtlZmlsZS5zb3VyY2VzIGIvdG9vbHMvTWFrZWZpbGUuc291cmNlcwo+ID4gaW5kZXgg NTA3MDZmNDEuLjgxOTZjYjU5IDEwMDY0NAo+ID4gLS0tIGEvdG9vbHMvTWFrZWZpbGUuc291cmNl cwo+ID4gKysrIGIvdG9vbHMvTWFrZWZpbGUuc291cmNlcwo+ID4gQEAgLTY2LDMgKzY2LDcgQEAg aW50ZWxfZHBfY29tcGxpYW5jZV9TT1VSQ0VTID0gXAo+ID4gICAgICAgICAgIGludGVsX2RwX2Nv bXBsaWFuY2VfaG90cGx1Zy5jIFwKPiA+ICAgICAgICAgICAkKE5VTEwpCj4gPiAgIAo+ID4gK2Ft ZF9oZG1pX2NvbXBsaWFuY2VfeXV2NDIwX1NPVVJDRVMgPSBcCj4gPiArICAgICAgICBhbWRfaGRt aV9jb21wbGlhbmNlX3l1djQyMC5jIFwKPiA+ICsJCSQoTlVMTCkKPiA+ICsKPiA+IGRpZmYgLS1n aXQgYS90b29scy9hbWRfaGRtaV9jb21wbGlhbmNlX3l1djQyMC5jIGIvdG9vbHMvYW1kX2hkbWlf Y29tcGxpYW5jZV95dXY0MjAuYwo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQKPiA+IGluZGV4IDAw MDAwMDAwLi41ZjVlYWUyYwo+ID4gLS0tIC9kZXYvbnVsbAo+ID4gKysrIGIvdG9vbHMvYW1kX2hk bWlfY29tcGxpYW5jZV95dXY0MjAuYwo+ID4gQEAgLTAsMCArMSwxOTMgQEAKPiA+ICsvKgo+ID4g KyAqIENvcHlyaWdodCAyMDE5IEFkdmFuY2VkIE1pY3JvIERldmljZXMsIEluYy4KPiA+ICsgKgo+ ID4gKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBh bnkgcGVyc29uIG9idGFpbmluZyBhCj4gPiArICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKPiA+ICsgKiB0 byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0 aG91dCBsaW1pdGF0aW9uCj4gPiArICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwg bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCj4gPiArICogYW5kL29yIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlCj4gPiArICogU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRo ZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKPiA+ICsgKgo+ID4gKyAqIFRoZSBhYm92ZSBjb3B5cmln aHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGlu Cj4gPiArICogYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdh cmUuCj4gPiArICoKPiA+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lU SE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgo+ID4gKyAqIElNUExJRUQsIElO Q0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM SVRZLAo+ID4gKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZS SU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTAo+ID4gKyAqIFRIRSBDT1BZUklHSFQgSE9MREVS KFMpIE9SIEFVVEhPUihTKSBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUgo+ID4g KyAqIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRP UlQgT1IgT1RIRVJXSVNFLAo+ID4gKyAqIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUgo+ID4gKyAqIE9USEVSIERFQUxJ TkdTIElOIFRIRSBTT0ZUV0FSRS4KPiA+ICsgKi8KPiA+ICsKPiA+ICsjaW5jbHVkZSAiaWd0Lmgi Cj4gPiArCj4gPiArLyogQ29tbW9uIHRlc3QgZGF0YSAqLwo+ID4gK3R5cGVkZWYgc3RydWN0IGRh dGEgewo+ID4gKwlzdHJ1Y3QgaWd0X2ZiIHBhdHRlcm5fZmJfaW5mbzsKPiA+ICsJaW50IGZkOwo+ ID4gKwlpZ3RfZGlzcGxheV90IGRpc3BsYXk7Cj4gPiArCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ ID4gKwlpZ3Rfb3V0cHV0X3QgKm91dHB1dDsKPiA+ICsJaWd0X3BpcGVfdCAqcGlwZTsKPiA+ICsJ ZW51bSBwaXBlIHBpcGVfaWQ7Cj4gPiArCWJvb2wgdXNlX3ZpcnR1YWxfY29ubmVjdG9yOwo+ID4g K30gZGF0YV90Owo+ID4gKwo+ID4gKy8vIFZpZGVvIG1vZGVzIGluZGV4ZWQgYnkgVklDCj4gCj4g SUdUIHVzZXMga2VybmVsIHN0eWxlIGZvcm1hdHRpbmcgc28gdGhpcyBjb21tZW50IHNob3VsZCBi ZToKPiAKPiAvKiBWaWRlbyBtb2RlcyBpbmRleGVkIGJ5IFZJQyAqLwo+IAo+ID4gK3N0YXRpYyBk cm1Nb2RlTW9kZUluZm8gdGVzdF9tb2Rlc1tdID0gewo+ID4gKwlbMV0gPSB7IDI1MTc1LAo+ID4g KwkJCTY0MCwgNjU2LCA3NTIsIDgwMCwgMCwKPiA+ICsJCQk0ODAsIDQ4OSwgNDkyLCA1MjUsIDAs Cj4gPiArCQkJNjAsIDB4YSwgMHg0MCwKPiA+ICsJCQkiNjQweDQ4MCIsCS8qIFZJQyAxICovCj4g PiArCX0sCj4gPiArCVs5Nl0gPSB7IDU5NDAwMCwKPiA+ICsJCQkgMzg0MCwgNDg5NiwgNDk4NCwg NTI4MCwgMCwKPiA+ICsJCQkgMjE2MCwgMjE2OCwgMjE3OCwgMjI1MCwgMCwKPiA+ICsJCQk1MCwg MHg1fERSTV9NT0RFX0ZMQUdfUElDX0FSXzE2XzksIDB4NDAsCj4gPiArCQkJIjM4NDB4MjE2MCIs CS8qIFZJQyA5NiAqLwo+ID4gKwl9LAo+ID4gKwlbOTddID0geyA1OTQwMDAsCj4gPiArCQkJMzg0 MCwgNDAxNiwgNDEwNCwgNDQwMCwgMCwKPiA+ICsJCQkyMTYwLCAyMTY4LCAyMTc4LCAyMjUwLCAw LAo+ID4gKwkJCTYwLCAweDV8RFJNX01PREVfRkxBR19QSUNfQVJfMTZfOSwgMHg0MCwKPiA+ICsJ CQkiMzg0MHgyMTYwIiwJLyogVklDIDk3ICovCj4gPiArCX0sCj4gPiArCVsxMDFdID0geyA1OTQw MDAsCj4gPiArCQkJICA0MDk2LCA1MDY0LCA1MTUyLCA1MjgwLCAwLAo+ID4gKwkJCSAgMjE2MCwg MjE2OCwgMjE3OCwgMjI1MCwgMCwKPiA+ICsJCQkgIDUwLCAweDV8RFJNX01PREVfRkxBR19QSUNf QVJfMjU2XzEzNSwgMHg0MCwKPiA+ICsJCQkgICI0MDk2eDIxNjAiLAkvKiBWSUMgMTAxICovCj4g PiArCX0sCj4gPiArCVsxMDJdID0geyA1OTQwMDAsCj4gPiArCQkJICA0MDk2LCA0MTg0LCA0Mjcy LCA0NDAwLCAwLAo+ID4gKwkJCSAgMjE2MCwgMjE2OCwgMjE3OCwgMjI1MCwgMCwKPiA+ICsJCQkg IDYwLCAweDV8RFJNX01PREVfRkxBR19QSUNfQVJfMjU2XzEzNSwgMHg0MCwKPiA+ICsJCQkgICI0 MDk2eDIxNjAiLAkvKiBWSUMgMTAyICovCj4gPiArCX0sCj4gPiArCVsxMDZdID0geyA1OTQwMDAs Cj4gPiArCQkJIDM4NDAsIDQ4OTYsIDQ5ODQsIDUyODAsIDAsCj4gPiArCQkJIDIxNjAsIDIxNjgs IDIxNzgsIDIyNTAsIDAsCj4gPiArCQkJNTAsIDB4NXxEUk1fTU9ERV9GTEFHX1BJQ19BUl82NF8y NywgMHg0MCwKPiA+ICsJCQkiMzg0MHgyMTYwIiwJLyogVklDIDEwNiAqLwo+ID4gKwl9LAo+ID4g KwlbMTA3XSA9IHsgNTk0MDAwLAo+ID4gKwkJCTM4NDAsIDQwMTYsIDQxMDQsIDQ0MDAsIDAsCj4g PiArCQkJMjE2MCwgMjE2OCwgMjE3OCwgMjI1MCwgMCwKPiA+ICsJCQk2MCwgMHg1fERSTV9NT0RF X0ZMQUdfUElDX0FSXzY0XzI3LCAweDQwLAo+ID4gKwkJCSIzODQweDIxNjAiLAkvKiBWSUMgMTA3 ICovCj4gPiArCX0sCj4gPiArfTsKPiA+ICsKPiA+ICsvKiBDb21tb24gdGVzdCBzZXR1cC4gKi8K PiA+ICtzdGF0aWMgdm9pZCB0ZXN0X2luaXQoZGF0YV90ICpkYXRhKQo+ID4gK3sKPiA+ICsJaWd0 X2Rpc3BsYXlfdCAqZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+ID4gKwo+ID4gKwlkYXRhLT5w aXBlX2lkID0gUElQRV9BOwo+ID4gKwlkYXRhLT5waXBlID0gJmRhdGEtPmRpc3BsYXkucGlwZXNb ZGF0YS0+cGlwZV9pZF07Cj4gPiArCj4gPiArCWlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOwo+ ID4gKwo+ID4gKwkvKiBmaW5kIGEgY29ubmVjdGVkIEhETUkgb3V0cHV0ICovCj4gPiArCWRhdGEt Pm91dHB1dCA9IE5VTEw7Cj4gPiArCWZvciAoaW50IGk9MDsgaSA8IGRhdGEtPmRpc3BsYXkubl9v dXRwdXRzOyArK2kpIHsKPiA+ICsJCWRybU1vZGVDb25uZWN0b3IgKmNvbm5lY3RvciA9IGRhdGEt PmRpc3BsYXkub3V0cHV0c1tpXS5jb25maWcuY29ubmVjdG9yOwo+ID4gKwkJaWYgKGNvbm5lY3Rv ci0+Y29ubmVjdGlvbiA9PSBEUk1fTU9ERV9DT05ORUNURUQgJiYKPiA+ICsJCQkJKGNvbm5lY3Rv ci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09OTkVDVE9SX0hETUlBIHx8Cj4gPiArCQkJ CSAoZGF0YS0+dXNlX3ZpcnR1YWxfY29ubmVjdG9yICYmCj4gPiArCQkJCSAgY29ubmVjdG9yLT5j b25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVBTCkpKSB7Cj4gPiArCQkJ ZGF0YS0+b3V0cHV0ID0gJmRhdGEtPmRpc3BsYXkub3V0cHV0c1tpXTsKPiA+ICsJCX0KPiA+ICsJ fQo+ID4gKwo+ID4gKwlpZ3RfcmVxdWlyZShkYXRhLT5vdXRwdXQpOwo+ID4gKwo+ID4gKwlkYXRh LT5wcmltYXJ5ID0KPiA+ICsJCWlndF9waXBlX2dldF9wbGFuZV90eXBlKGRhdGEtPnBpcGUsIERS TV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ID4gKwo+ID4gKwlpZ3Rfb3V0cHV0X3NldF9waXBlKGRh dGEtPm91dHB1dCwgZGF0YS0+cGlwZV9pZCk7Cj4gPiArCj4gPiArfQo+ID4gKwo+ID4gKy8qIENv bW1vbiB0ZXN0IGNsZWFudXAuICovCj4gPiArc3RhdGljIHZvaWQgdGVzdF9maW5pKGRhdGFfdCAq ZGF0YSkKPiA+ICt7Cj4gPiArCWlndF9kaXNwbGF5X3Jlc2V0KCZkYXRhLT5kaXNwbGF5KTsKPiA+ ICt9Cj4gPiArCj4gPiArc3RhdGljIHZvaWQgdGVzdF92aWNfbW9kZShkYXRhX3QgKmRhdGEsIGlu dCB2aWMpCj4gPiArewo+ID4gKwlpZ3RfZGlzcGxheV90ICpkaXNwbGF5ID0gJmRhdGEtPmRpc3Bs YXk7Cj4gPiArCWRybU1vZGVNb2RlSW5mbyAqbW9kZTsKPiA+ICsJaWd0X2ZiX3QgYWZiOwo+ID4g Kwo+ID4gKwl0ZXN0X2luaXQoZGF0YSk7Cj4gPiArCj4gPiArCW1vZGUgPSAmdGVzdF9tb2Rlc1t2 aWNdOwo+ID4gKwo+ID4gKwlpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUoZGF0YS0+b3V0cHV0LCBt b2RlKTsKPiA+ICsKPiA+ICsJaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRhdGEtPmZkLCBtb2RlLT5o ZGlzcGxheSwgbW9kZS0+dmRpc3BsYXksIERSTV9GT1JNQVRfWFJHQjg4ODgsIDAsICZhZmIpOwo+ ID4gKwo+ID4gKwlpZ3RfcGxhbmVfc2V0X2ZiKGRhdGEtPnByaW1hcnksICZhZmIpOwo+ID4gKwo+ ID4gKwlpZ3RfZGlzcGxheV9jb21taXRfYXRvbWljKGRpc3BsYXksIERSTV9NT0RFX0FUT01JQ19B TExPV19NT0RFU0VULCBOVUxMKTsKPiA+ICsKPiA+ICsJZnByaW50ZihzdGRlcnIsICJQcmVzcyBb RW50ZXJdIHRvIGZpbmlzaFxuIik7Cj4gCj4gSSB0aGluayBpZ3RfaW5mbyguLi4pIGlzIHByZWZl cnJlZCBoZXJlIG92ZXIgZnByaW50ZiBkaXJlY3RseS4KPiAKPiA+ICsJZ2V0Y2hhcigpOwo+IEkg dW5kZXJzdGFuZCB0aGF0IHlvdSBhcmVuJ3QgdXNpbmcgaWd0X2RlYnVnX3dhaXRfZm9yX2tleXBy ZXNzIGhlcmUsIGJ1dCAKPiBJIHRoaW5rIGFuIGltcHJvdmVtZW50IHRoYXQgY291bGQgYmUgbWFk ZSBpcyB0byBleHRyYWN0IHRoaXMgb3V0IGludG8gYSAKPiBzdWIgZnVuY3Rpb24gdGhhdCB3YWl0 cyBleHBsaWNpdGx5IGZvciB0aGUgbmV3bGluZToKPiAKPiBzdGF0aWMgdm9pZCB3YWl0X2Zvcl9r ZXlwcmVzcyh2b2lkKQo+IHsKPiAJd2hpbGUgKGdldGNoYXIoKSAhPSAnXG4nKQo+IAkJOwo+IH0K PiAKPiA+ICsKPiA+ICsJdGVzdF9maW5pKGRhdGEpOwo+ID4gK30KPiA+ICsKPiA+ICtjb25zdCBj aGFyICpvcHRzdHIgPSAiaHZ0OiI7Cj4gPiArc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAq bmFtZSkKPiA+ICt7Cj4gPiArCWZwcmludGYoc3RkZXJyLCAiVXNhZ2U6ICVzIFstaHRdXG4iLCBu YW1lKTsKPiA+ICsJZnByaW50ZihzdGRlcnIsICItaDoJc2hvdyBoZWxwXG4iKTsKPiA+ICsJZnBy aW50ZihzdGRlcnIsICItdCB2aWM6IHNlbGVjdCB2aWRlbyBtb2RlIGJhc2VkIG9uIFZJQ1xuIik7 Cj4gPiArCWZwcmludGYoc3RkZXJyLCAiLXY6CXRlc3Qgb24gJ1ZpcnR1YWwnIGNvbm5lY3RvciBh cyB3ZWxsLCBmb3IgZGVidWdnaW5nLlxuIik7Cj4gCj4gaWd0X2luZm8oLi4uKSBpZiBwb3NzaWJs ZSBoZXJlCj4gCj4gPiArfQo+ID4gKwo+ID4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKPiA+ICt7Cj4gPiArCWRhdGFfdCBkYXRhOwo+ID4gKwlpbnQgYzsKPiA+ICsJaW50IHZpYyA9 IDE7IC8qIGRlZmF1bHQgdG8gVklDIDEgKDY0MHg0ODApICovCj4gPiArCj4gPiArCW1lbXNldCgm ZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsKPiA+ICsKPiA+ICsJd2hpbGUoKGMgPSBnZXRvcHQoYXJn YywgYXJndiwgb3B0c3RyKSkgIT0gLTEpIHsKPiA+ICsJCXN3aXRjaChjKSB7Cj4gPiArCQljYXNl ICd0JzoKPiA+ICsJCQl2aWMgPSBhdG9pKG9wdGFyZyk7Cj4gPiArCQkJYnJlYWs7Cj4gPiArCQlj YXNlICd2JzoKPiA+ICsJCQlkYXRhLnVzZV92aXJ0dWFsX2Nvbm5lY3RvciA9IHRydWU7Cj4gPiAr CQkJYnJlYWs7Cj4gPiArCQlkZWZhdWx0Ogo+ID4gKwkJY2FzZSAnaCc6Cj4gPiArCQkJdXNhZ2Uo YXJndlswXSk7Cj4gPiArCQkJZXhpdCgxKTsKPiA+ICsJCX0KPiA+ICsJfQo+ID4gKwo+ID4gKwlp ZiAodmljIDwgMSB8fAo+ID4gKwkJdmljID4gQVJSQVlfU0laRSh0ZXN0X21vZGVzKSB8fAo+ID4g KwkJIXRlc3RfbW9kZXNbdmljXS5uYW1lWzBdKSB7Cj4gPiArCQlmcHJpbnRmKHN0ZGVyciwgIlZJ QyAlZCBpcyBub3Qgc3VwcG9ydGVkXG4iLCB2aWMpOwo+IAo+IGlndF9pbmZvKC4uLikgaWYgcG9z c2libGUgaGVyZQo+IAo+ID4gKwkJZXhpdCgxKTsKPiA+ICsJfQo+ID4gKwo+ID4gKwlkYXRhLmZk ID0gZHJtX29wZW5fZHJpdmVyX21hc3RlcihEUklWRVJfQU5ZKTsKPiA+ICsJa21zdGVzdF9zZXRf dnRfZ3JhcGhpY3NfbW9kZSgpOwo+ID4gKwo+ID4gKwlpZ3RfZGlzcGxheV9yZXF1aXJlKCZkYXRh LmRpc3BsYXksIGRhdGEuZmQpOwo+ID4gKwlpZ3RfcmVxdWlyZShkYXRhLmRpc3BsYXkuaXNfYXRv bWljKTsKPiA+ICsJaWd0X2Rpc3BsYXlfcmVxdWlyZV9vdXRwdXQoJmRhdGEuZGlzcGxheSk7Cj4g PiArCj4gPiArCXRlc3RfdmljX21vZGUoJmRhdGEsIHZpYyk7Cj4gPiArCj4gPiArCWlndF9kaXNw bGF5X2ZpbmkoJmRhdGEuZGlzcGxheSk7Cj4gPiArfQo+ID4gZGlmZiAtLWdpdCBhL3Rvb2xzL21l c29uLmJ1aWxkIGIvdG9vbHMvbWVzb24uYnVpbGQKPiA+IGluZGV4IDZlNzJiMjYzLi5mYTM2NmFi MiAxMDA2NDQKPiA+IC0tLSBhL3Rvb2xzL21lc29uLmJ1aWxkCj4gPiArKysgYi90b29scy9tZXNv bi5idWlsZAo+ID4gQEAgLTEwMCw2ICsxMDAsMTEgQEAgZXhlY3V0YWJsZSgnaW50ZWxfZ3B1X3Rv cCcsICdpbnRlbF9ncHVfdG9wLmMnLAo+ID4gICAJICAgaW5zdGFsbF9ycGF0aCA6IGJpbmRpcl9y cGF0aGRpciwKPiA+ICAgCSAgIGRlcGVuZGVuY2llcyA6IGxpYl9pZ3RfcGVyZikKPiA+ICAgCj4g PiArZXhlY3V0YWJsZSgnYW1kX2hkbWlfY29tcGxpYW5jZV95dXY0MjAnLCAnYW1kX2hkbWlfY29t cGxpYW5jZV95dXY0MjAuYycsCj4gPiArCSAgIGRlcGVuZGVuY2llcyA6IFt0b29sX2RlcHNdLAo+ ID4gKwkgICBpbnN0YWxsX3JwYXRoIDogYmluZGlyX3JwYXRoZGlyLAo+ID4gKwkgICBpbnN0YWxs IDogdHJ1ZSkKPiA+ICsKPiA+ICAgY29uZl9kYXRhID0gY29uZmlndXJhdGlvbl9kYXRhKCkKPiA+ ICAgY29uZl9kYXRhLnNldCgncHJlZml4JywgcHJlZml4KQo+ID4gICBjb25mX2RhdGEuc2V0KCdl eGVjX3ByZWZpeCcsICcke3ByZWZpeH0nKQo+ID4gCj4gCj4gX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX18KPiBpZ3QtZGV2IG1haWxpbmcgbGlzdAo+IGlndC1k ZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4gaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcv bWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRl c2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8v aWd0LWRldg==