From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8E38310E5A9 for ; Tue, 10 Jan 2023 11:56:17 +0000 (UTC) From: "Hogander, Jouni" To: "igt-dev@lists.freedesktop.org" , "Sharma, Swati2" Date: Tue, 10 Jan 2023 11:56:14 +0000 Message-ID: References: <20230109152832.3310-1-swati2.sharma@intel.com> <20230109152832.3310-6-swati2.sharma@intel.com> In-Reply-To: <20230109152832.3310-6-swati2.sharma@intel.com> Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-ID: <4EB87F04C5F10740B41D5981AB8469E4@namprd11.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 Subject: Re: [igt-dev] [PATCH i-g-t 5/8] tests/i915/kms_dsc: Enable validation for VDSC YCbCr420 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Latvala, Petri" Errors-To: igt-dev-bounces@lists.freedesktop.org Sender: "igt-dev" List-ID: SGVsbG8sCgpTZWUgbXkgaW5saW5lIGNvbW1lbnRzIGJlbG93LgoKT24gTW9uLCAyMDIzLTAxLTA5 IGF0IDIwOjU4ICswNTMwLCBTd2F0aSBTaGFybWEgd3JvdGU6Cj4gRXhpc3RpbmcgaS1nLXQgaXMg ZXh0ZW5kZWQgdG8gZW5hYmxlIHZhbGlkYXRpb24gZm9yIFZEU0MgWUNiQ3I0MjAuCj4gSWYgYSBt b2RlIGlzIHN1cHBvcnRlZCBpbiBib3RoIFJHQiBhbmQgWUNiQ3I0MjAgb3V0cHV0IGZvcm1hdHMg YnkgdGhlCj4gc2luaywgaTkxNSBkcml2ZXIgcG9saWN5IGlzIHRvIHRyeSBSR0IgZmlyc3QgYW5k IGZhbGwgYmFjayB0bwo+IFlDYkNyNDIwLCBpZgo+IG1vZGUgY2Fubm90IGJlIHNob3duIHVzaW5n IFJHQi4gVG8gdGVzdCBZQ2JDcjQyMCwgd2UgbmVlZCBhIGRlYnVnZnMKPiBlbnRyeSAoZm9yY2Vf ZHNjX3ljYmNyNDIwKSB0byBmb3JjZSB0aGlzIG91dHB1dCBmb3JtYXQ7IHNvIHRoYXQKPiBZQ2JD cjQyMCBjb2RlCj4gZ2V0cyBleGVjdXRlZC4KPiBGcm9tIGktZy10LCB3ZSBoYXZlIHNldCB0aGlz IGRlYnVnZnMgZW50cnkuIEhvd2V2ZXIsIGJlZm9yZSBzZXR0aW5nCj4gZGVidWdmcyBlbnRyeSwg d2UgaGF2ZSBjaGVja2VkIGNhcGFiaWxpdHkgaS5lLiBZQ2JDcjQyMCBpcyBzdXBwb3J0ZWQKPiBi eQo+IGJvdGggcGxhdGZvcm0gKEQxNCspIGFuZCBzaW5rLgo+IEFsc28sIGFsbCB0aGUgbW9kZXMg ZG9lc24ndCBzdXBwb3J0IGJvdGggWUNiQ3I0MjAgYW5kIFJHQiBmb3JtYXRzOyBzbwo+IGlmCj4g c2luayBhbmQgcGxhdGZvcm0gc3VwcG9ydHMgWUNiQ3I0MjAgd2Ugd2lsbCBkbyB0cnkgY29tbWl0 IHdpdGggZWFjaAo+IG1vZGUKPiB0aWxsIHdlIGdldCBhIHN1Y2Nlc3NmdWwgY29tbWl0Lgo+IAo+ IHYyOiAtdXNlZCBpc19kc2NfeWNiY3I0MjBfc3VwcG9ydGVkKCkgKEFua2l0KQo+IMKgwqDCoCAt aGFuZGxlZCB0cnktY29tbWl0IGNvcnJlY3RseSAoQW5raXQpCj4gwqDCoMKgIC1pbnN0ZWFkIG9m IGZsYWcgdXNlIGVudW0gZm9yIG91dHB1dCBmb3JtYXRzIChBbmtpdCkKPiB2MzogLWluc3RlYWQg b2YgZ2xvYmFsIGNvdW50LCBwYXNzIGNvdW50IGFzIHBhcmEgKEFua2l0KQo+IMKgwqDCoCAtcHJp bnQgb3V0cHV0IGZvcm1hdCAoQW5raXQpCj4gCj4gU2lnbmVkLW9mZi1ieTogU3dhdGkgU2hhcm1h IDxzd2F0aTIuc2hhcm1hQGludGVsLmNvbT4KPiAtLS0KPiDCoGxpYi9pZ3Rfa21zLmPCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxNyArKysrCj4gwqBsaWIvaWd0X2ttcy5owqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA2ICsrCj4gwqB0ZXN0cy9pOTE1L2ttc19kc2Mu Y8KgwqDCoMKgwqDCoMKgIHwgMTU3ICsrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0K PiAtLQo+IMKgdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5jIHzCoCA0OSArKysrKysrKysrKwo+ IMKgdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5oIHzCoMKgIDQgKwo+IMKgNSBmaWxlcyBjaGFu Z2VkLCAxNzcgaW5zZXJ0aW9ucygrKSwgNTYgZGVsZXRpb25zKC0pCj4gCj4gZGlmZiAtLWdpdCBh L2xpYi9pZ3Rfa21zLmMgYi9saWIvaWd0X2ttcy5jCj4gaW5kZXggMzFlNmRmZGEwLi4wZjFmN2M2 YjkgMTAwNjQ0Cj4gLS0tIGEvbGliL2lndF9rbXMuYwo+ICsrKyBiL2xpYi9pZ3Rfa21zLmMKPiBA QCAtOTY2LDYgKzk2NiwyMyBAQCBjb25zdCBjaGFyICprbXN0ZXN0X3NjYWxpbmdfZmlsdGVyX3N0 cihpbnQKPiBmaWx0ZXIpCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBmaW5kX3R5cGVfbmFtZShz Y2FsaW5nX2ZpbHRlcl9uYW1lcywgZmlsdGVyKTsKPiDCoH0KPiDCoAo+ICtzdGF0aWMgY29uc3Qg c3RydWN0IHR5cGVfbmFtZSBkc2Nfb3V0cHV0X2Zvcm1hdF9uYW1lc1tdID0gewo+ICvCoMKgwqDC oMKgwqDCoHsgRFNDX0ZPUk1BVF9SR0I0NDQsICJSR0I0NDQiIH0sCj4gK8KgwqDCoMKgwqDCoMKg eyBEU0NfRk9STUFUX1lDQkNSNDIwLCAiWUNCQ1I0MjAiIH0sCj4gK8KgwqDCoMKgwqDCoMKge30K PiArfTsKPiArCj4gKy8qKgo+ICsgKiBrbXN0ZXN0X2RzY19vdXRwdXRfZm9ybWF0X3N0cjoKPiAr ICogQG91dHB1dF9mb3JtYXQ6IERTQ19GT1JNQVRfKiBvdXRwdXQgZm9ybWF0IHZhbHVlCj4gKyAq Cj4gKyAqIFJldHVybnM6IEEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgb3V0cHV0IGZvcm1hdCBA b3V0cHV0IGZvcm1hdC4KPiArICovCj4gK2NvbnN0IGNoYXIgKmttc3Rlc3RfZHNjX291dHB1dF9m b3JtYXRfc3RyKGludCBvdXRwdXRfZm9ybWF0KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0dXJu IGZpbmRfdHlwZV9uYW1lKGRzY19vdXRwdXRfZm9ybWF0X25hbWVzLAo+IG91dHB1dF9mb3JtYXQp Owo+ICt9Cj4gKwo+IMKgc3RhdGljIGNvbnN0IHN0cnVjdCB0eXBlX25hbWUgY29ubmVjdG9yX3R5 cGVfbmFtZXNbXSA9IHsKPiDCoMKgwqDCoMKgwqDCoMKgeyBEUk1fTU9ERV9DT05ORUNUT1JfVW5r bm93biwgIlVua25vd24iIH0sCj4gwqDCoMKgwqDCoMKgwqDCoHsgRFJNX01PREVfQ09OTkVDVE9S X1ZHQSwgIlZHQSIgfSwKPiBkaWZmIC0tZ2l0IGEvbGliL2lndF9rbXMuaCBiL2xpYi9pZ3Rfa21z LmgKPiBpbmRleCBiZTU0ODJlMDguLjYxZWM4ZmJlYyAxMDA2NDQKPiAtLS0gYS9saWIvaWd0X2tt cy5oCj4gKysrIGIvbGliL2lndF9rbXMuaAo+IEBAIC0xMDYsMTAgKzEwNiwxNiBAQCBlbnVtIGln dF9jdXN0b21fZWRpZF90eXBlIHsKPiDCoCAqLwo+IMKgI2RlZmluZSBrbXN0ZXN0X3BvcnRfbmFt ZShwb3J0KSAoKHBvcnQpICsgJ0EnKQo+IMKgCj4gK2VudW0gZHNjX291dHB1dF9mb3JtYXQgewo+ ICvCoMKgwqDCoMKgwqDCoERTQ19GT1JNQVRfUkdCNDQ0LAo+ICvCoMKgwqDCoMKgwqDCoERTQ19G T1JNQVRfWUNCQ1I0MjAKPiArfTsKPiArCj4gwqBjb25zdCBjaGFyICprbXN0ZXN0X2VuY29kZXJf dHlwZV9zdHIoaW50IHR5cGUpOwo+IMKgY29uc3QgY2hhciAqa21zdGVzdF9jb25uZWN0b3Jfc3Rh dHVzX3N0cihpbnQgc3RhdHVzKTsKPiDCoGNvbnN0IGNoYXIgKmttc3Rlc3RfY29ubmVjdG9yX3R5 cGVfc3RyKGludCB0eXBlKTsKPiDCoGNvbnN0IGNoYXIgKmttc3Rlc3Rfc2NhbGluZ19maWx0ZXJf c3RyKGludCBmaWx0ZXIpOwo+ICtjb25zdCBjaGFyICprbXN0ZXN0X2RzY19vdXRwdXRfZm9ybWF0 X3N0cihpbnQgb3V0cHV0X2Zvcm1hdCk7Cj4gwqAKPiDCoHZvaWQga21zdGVzdF9kdW1wX21vZGUo ZHJtTW9kZU1vZGVJbmZvICptb2RlKTsKPiDCoCNkZWZpbmUgTUFYX0hESVNQTEFZX1BFUl9QSVBF IDUxMjAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9rbXNfZHNjLmMgYi90ZXN0cy9pOTE1L2tt c19kc2MuYwo+IGluZGV4IGYyNjRkMzdhNy4uNjg5Y2I4MWIxIDEwMDY0NAo+IC0tLSBhL3Rlc3Rz L2k5MTUva21zX2RzYy5jCj4gKysrIGIvdGVzdHMvaTkxNS9rbXNfZHNjLmMKPiBAQCAtNjgsNiAr NjgsMTkgQEAgc3RhdGljIGRybU1vZGVNb2RlSW5mbwo+ICpnZXRfaGlnaHJlc19tb2RlKGlndF9v dXRwdXRfdCAqb3V0cHV0KQo+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gaGlnaGVzdF9tb2RlOwo+ IMKgfQo+IMKgCj4gK3N0YXRpYyBkcm1Nb2RlTW9kZUluZm8gKmdldF9uZXh0X21vZGUoaWd0X291 dHB1dF90ICpvdXRwdXQsIGludAo+IGNvdW50KQo+ICt7Cj4gK8KgwqDCoMKgwqDCoMKgZHJtTW9k ZUNvbm5lY3RvciAqY29ubmVjdG9yID0gb3V0cHV0LT5jb25maWcuY29ubmVjdG9yOwo+ICvCoMKg wqDCoMKgwqDCoGRybU1vZGVNb2RlSW5mbyAqbmV4dF9tb2RlID0gTlVMTDsKPiArCj4gK8KgwqDC oMKgwqDCoMKgZm9yIChpbnQgaSA9IGNvdW50OyBpIDwgY29ubmVjdG9yLT5jb3VudF9tb2Rlczsg aSsrKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5leHRfbW9kZSA9ICZjb25u ZWN0b3ItPm1vZGVzW2ldOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBicmVhazsK PiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBuZXh0X21vZGU7 CgpyZXR1cm4gb3V0cHV0LT5jb25maWcuY29ubmVjdG9yLT5tb2Rlc1tjb3VudF07ID8KCj4gK30K PiArCj4gwqBzdGF0aWMgYm9vbCBjaGVja19iaWdfam9pbmVyX3BpcGVfY29uc3RyYWludChkYXRh X3QgKmRhdGEpCj4gwqB7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9vdXRwdXRfdCAqb3V0cHV0ID0g ZGF0YS0+b3V0cHV0Owo+IEBAIC05Nyw3NSArMTEwLDEwMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2Ns ZWFudXAoZGF0YV90ICpkYXRhKQo+IMKgCj4gwqAvKiByZS1wcm9iZSBjb25uZWN0b3JzIGFuZCBk byBhIG1vZGVzZXQgd2l0aCBEU0MgKi8KPiDCoHN0YXRpYyB2b2lkIHVwZGF0ZV9kaXNwbGF5KGRh dGFfdCAqZGF0YSwgZW51bSBkc2NfdGVzdF90eXBlCj4gdGVzdF90eXBlLAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgcGxh bmVfZm9ybWF0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1bnNpZ25lZCBpbnQgcGxhbmVfZm9ybWF0LCBlbnVtCj4gZHNjX291dHB1dF9mb3Jt YXQgb3V0cHV0X2Zvcm1hdCkKPiDCoHsKPiArwqDCoMKgwqDCoMKgwqBpbnQgcmV0Owo+IMKgwqDC oMKgwqDCoMKgwqBib29sIGVuYWJsZWQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9wbGFuZV90ICpw cmltYXJ5Owo+IMKgwqDCoMKgwqDCoMKgwqBkcm1Nb2RlTW9kZUluZm8gKm1vZGU7Cj4gK8KgwqDC oMKgwqDCoMKgaW50IGNvdW50ID0gMDsKPiArwqDCoMKgwqDCoMKgwqBib29sIHRlc3RfY29tcGxl dGUgPSBmYWxzZTsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF90ICpvdXRwdXQgPSBkYXRh LT5vdXRwdXQ7Cj4gwqDCoMKgwqDCoMKgwqDCoGlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0 YS0+ZGlzcGxheTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoC8qIHNhbml0aXplIHRoZSBzdGF0ZSBi ZWZvcmUgc3RhcnRpbmcgdGhlIHN1YnRlc3QgKi8KPiAtwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxh eV9yZXNldChkaXNwbGF5KTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9jb21taXQoZGlz cGxheSk7Cj4gK8KgwqDCoMKgwqDCoMKgd2hpbGUgKCF0ZXN0X2NvbXBsZXRlKSB7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoC8qIHNhbml0aXplIHRoZSBzdGF0ZSBiZWZvcmUgc3Rh cnRpbmcgdGhlIHN1YnRlc3QgKi8KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0 X2Rpc3BsYXlfcmVzZXQoZGlzcGxheSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlndF9kaXNwbGF5X2NvbW1pdChkaXNwbGF5KTsKPiDCoAo+IC3CoMKgwqDCoMKgwqDCoGlndF9k ZWJ1ZygiRFNDIGlzIHN1cHBvcnRlZCBvbiAlc1xuIiwgZGF0YS0+b3V0cHV0LT5uYW1lKTsKPiAt wqDCoMKgwqDCoMKgwqBzYXZlX2ZvcmNlX2RzY19lbihkYXRhKTsKPiAtwqDCoMKgwqDCoMKgwqBm b3JjZV9kc2NfZW5hYmxlKGRhdGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp Z3RfZGVidWcoIkRTQyBpcyBzdXBwb3J0ZWQgb24gJXNcbiIsIGRhdGEtPm91dHB1dC0KPiA+bmFt ZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNhdmVfZm9yY2VfZHNjX2VuKGRh dGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBmb3JjZV9kc2NfZW5hYmxlKGRh dGEpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWYgKHRlc3RfdHlwZSA9PSBURVNUX0RTQ19CUEMp IHsKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJUcnlpbmcgdG8g c2V0IGlucHV0IEJQQyB0byAlZFxuIiwgZGF0YS0KPiA+aW5wdXRfYnBjKTsKPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9yY2VfZHNjX2VuYWJsZV9icGMoZGF0YSk7Cj4gLcKgwqDC oMKgwqDCoMKgfQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3V0cHV0X2Zv cm1hdCA9PSBEU0NfRk9STUFUX1lDQkNSNDIwKSB7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGVidWcoIkRTQyBZQ2JDcjQyMCBpcyBzdXBwb3J0 ZWQgb24KPiAlc1xuIiwgZGF0YS0+b3V0cHV0LT5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNhdmVfZm9yY2VfZHNjX3ljYmNyNDIwX2VuKGRh dGEpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9y Y2VfZHNjX3ljYmNyNDIwX2VuYWJsZShkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgfQo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQs IGRhdGEtPnBpcGUpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAodGVzdF90 eXBlID09IFRFU1RfRFNDX0JQQykgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJUcnlpbmcgdG8gc2V0IGlucHV0IEJQQyB0byAlZFxu IiwKPiBkYXRhLT5pbnB1dF9icGMpOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgZm9yY2VfZHNjX2VuYWJsZV9icGMoZGF0YSk7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiDCoAo+IC3CoMKgwqDCoMKgwqDCoG1vZGUgPSBnZXRfaGln aHJlc19tb2RlKG91dHB1dCk7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X3JlcXVpcmUobW9kZSAhPSBO VUxMKTsKPiAtwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X292ZXJyaWRlX21vZGUob3V0cHV0LCBt b2RlKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X291dHB1dF9zZXRfcGlw ZShvdXRwdXQsIGRhdGEtPnBpcGUpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKgcHJpbWFyeSA9IGln dF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0LAo+IERSTV9QTEFORV9UWVBFX1BSSU1BUlkp Owo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAob3V0cHV0X2Zvcm1hdCA9PSBE U0NfRk9STUFUX1lDQkNSNDIwKQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgbW9kZSA9IGdldF9uZXh0X21vZGUob3V0cHV0LCBjb3VudCk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVsc2UKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1vZGUgPSBnZXRfaGlnaHJlc19tb2RlKG91dHB1dCk7CgpJ ZiBJIHVuZGVyc3Rvb2QgeW91ciBjb2RlIGNvcnJlY3RseSB3aGF0IHlvdSByZWFsbHkgd2FudCB0 byBsb29wIGlzOgoKY291bnQgPSAwOwpkbyB7CglpZiAob3V0cHV0X2Zvcm1hdCA9PSBEU0NfRk9S TUFUX1lDQkNSNDIwKQoJCW1vZGUgPSBnZXRfbmV4dF9tb2RlKG91dHB1dCwgY291bnQpOwoJZWxz ZQoJCW1vZGUgPSBnZXRfaGlnaHJlc19tb2RlKG91dHB1dCk7CglpZ3RfcmVxdWlyZShtb2RlICE9 IE5VTEwpOwoJaWd0X291dHB1dF9vdmVycmlkZV9tb2RlKG91dHB1dCwgbW9kZSk7Cn0gd2hpbGUo aWd0X2Rpc3BsYXlfdHJ5X2NvbW1pdF9hdG9taWMoZGlzcGxheSwKRFJNX01PREVfQVRPTUlDX0FM TE9XX01PREVTRVQsIE5VTEwpKTsKCmV2ZXJ5dGhpbmcgZWxzZSBzZWVtcyB0byByZW1haW4gc2Ft ZSBvdmVyIGl0ZXJhdGlvbnMgYW5kIGlmCm91dHB1dF9mb3JtYXQgIT0gRFNDX0ZPUk1BVF9ZQ0JD UjQyMCBldmVuIHRoZSBtb2RlIGlzIG5vdCBjaGFuZ2VkLgoKQ3VycmVudGx5IHlvdSBhcmUgbG9v cGluZyBldmVyeXRoaW5nLiBFLmcuIGlndF9jcmVhdGVfcGF0dGVybl9mYiBpcwpjYWxsZWQgc2V2 ZXJhbCB0aW1lcyBhbmQgdGhlIGlndF9yZW1vdmVfZmIgaXMgZG9uZSBvbmx5IG9uY2UgaW4KdGVz dF9jbGVhbnVwLgoKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9yZXF1 aXJlKG1vZGUgIT0gTlVMTCk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9v dXRwdXRfb3ZlcnJpZGVfbW9kZShvdXRwdXQsIG1vZGUpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0X3BsYW5lX3R5cGUob3V0cHV0 LAo+IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+ICsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X3NraXBfb24oIWlndF9wbGFuZV9oYXNfZm9ybWF0X21vZChwcmltYXJ5LAo+ IHBsYW5lX2Zvcm1hdCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX01PRF9MSU5FQVIpKTsKPiArCj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGlndF9jcmVhdGVfcGF0dGVybl9mYihkYXRhLT5kcm1fZmQsCj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBtb2RlLT5oZGlzcGxheSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1vZGUt PnZkaXNwbGF5LAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGxhbmVfZm9ybWF0LAo+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgRFJNX0ZPUk1BVF9NT0RfTElORUFSLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmRhdGEtPmZi X3Rlc3RfcGF0dGVybik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3Rf cGxhbmVfc2V0X2ZiKHByaW1hcnksICZkYXRhLT5mYl90ZXN0X3BhdHRlcm4pOwo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQgPSBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21p YyhkaXNwbGF5LAo+IERSTV9NT0RFX0FUT01JQ19BTExPV19NT0RFU0VULCBOVUxMKTsKPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKHJldCA9PSAwKSB7Cj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZGlzcGxheV9jb21taXQoZGlz cGxheSk7CgpJc24ndCBpZ3RfZGlzcGxheV90cnlfY29tbWl0X2F0b21pYyBlbm91Z2ggb3Igd2h5 IHlvdSBhcmUgZG9pbmcKaWd0X2Rpc3BsYXlfY29tbWl0IGV2ZW4gaWYgaWd0X2Rpc3BsYXlfdHJ5 X2NvbW1pdF9hdG9taWMgc3VjY2VlZGVkPwoKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoHRlc3RfY29tcGxldGUgPSB0cnVlOwo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB9IGVsc2UgaWYgKG91dHB1dF9mb3JtYXQgPT0gRFNDX0ZPUk1BVF9Z Q0JDUjQyMCkgewo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY291bnQrKzsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGNvbnRpbnVlOwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0X2VxKHJldCwgMCk7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAvKgo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKiBVbnRpbCB3ZSBoYXZlIENSQyBjaGVjayBzdXBwb3J0LCBtYW51YWxseSBj aGVjayBpZgo+IFJHQiB0ZXN0Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIHBh dHRlcm4gaGFzIG5vIGNvcnJ1cHRpb24uCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqLwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBtYW51YWwoIlJHQiB0ZXN0IHBh dHRlcm4gd2l0aG91dCBjb3JydXB0aW9uIik7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBlbmFibGVkID0gaWd0X2lzX2RzY19lbmFibGVkKGRhdGEtPmRybV9mZCwgb3V0cHV0 LQo+ID5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2luZm8oIkN1 cnJlbnQgbW9kZSBpczogJWR4JWQgQCVkSHogLS0gRFNDIGlzOgo+ICVzXG4iLAo+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBtb2RlLT5oZGlzcGxheSwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbW9k ZS0+dmRpc3BsYXksCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1vZGUtPnZyZWZyZXNoLAo+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBlbmFibGVkID8gIk9OIiA6ICJPRkYiKTsKPiArCj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJlc3RvcmVfZm9yY2VfZHNjX2VuKCk7Cj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChvdXRwdXRfZm9ybWF0ID09IERTQ19GT1JNQVRf WUNCQ1I0MjApCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXN0b3JlX2ZvcmNlX2RzY195Y2JjcjQyMF9lbigpOwo+IMKgCj4gLcKgwqDCoMKgwqDCoMKg aWd0X3NraXBfb24oIWlndF9wbGFuZV9oYXNfZm9ybWF0X21vZChwcmltYXJ5LCBwbGFuZV9mb3Jt YXQsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBEUk1fRk9STUFUX01P RF9MSU5FQVIpKTsKPiAtCj4gLcKgwqDCoMKgwqDCoMKgaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRh dGEtPmRybV9mZCwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgbW9kZS0+aGRpc3BsYXksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG1vZGUtPnZkaXNwbGF5LAo+IC3CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwbGFu ZV9mb3JtYXQsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIERSTV9GT1JNQVRfTU9EX0xJTkVBUiwKPiAtwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmRhdGEtPmZiX3Rlc3RfcGF0 dGVybik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoGlndF9wbGFuZV9zZXRfZmIocHJpbWFyeSwgJmRh dGEtPmZiX3Rlc3RfcGF0dGVybik7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfY29tbWl0 KGRpc3BsYXkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqAvKiB1bnRpbCB3ZSBoYXZlIENSQyBjaGVj ayBzdXBwb3J0LCBtYW51YWxseSBjaGVjayBpZiBSR0IKPiB0ZXN0Cj4gLcKgwqDCoMKgwqDCoMKg ICogcGF0dGVybiBoYXMgbm8gY29ycnVwdGlvbi4KPiAtwqDCoMKgwqDCoMKgwqAgKi8KPiAtwqDC oMKgwqDCoMKgwqBtYW51YWwoIlJHQiB0ZXN0IHBhdHRlcm4gd2l0aG91dCBjb3JydXB0aW9uIik7 Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoGVuYWJsZWQgPSBpZ3RfaXNfZHNjX2VuYWJsZWQoZGF0YS0+ ZHJtX2ZkLCBvdXRwdXQtPm5hbWUpOwo+IC3CoMKgwqDCoMKgwqDCoGlndF9pbmZvKCJDdXJyZW50 IG1vZGUgaXM6ICVkeCVkIEAlZEh6IC0tIERTQyBpczogJXNcbiIsCj4gLcKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbW9kZS0+aGRp c3BsYXksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgbW9kZS0+dmRpc3BsYXksCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbW9kZS0+dnJlZnJlc2gsCj4g LcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZW5hYmxlZCA/ICJPTiIgOiAiT0ZGIik7Cj4gLQo+IC3CoMKgwqDCoMKgwqDCoHJlc3Rv cmVfZm9yY2VfZHNjX2VuKCk7Cj4gLcKgwqDCoMKgwqDCoMKgaWd0X2RlYnVnKCJSZXNldCBjb21w cmVzc2lvbiBCUENcbiIpOwo+IC3CoMKgwqDCoMKgwqDCoGRhdGEtPmlucHV0X2JwYyA9IDA7Cj4g LcKgwqDCoMKgwqDCoMKgZm9yY2VfZHNjX2VuYWJsZV9icGMoZGF0YSk7Cj4gLQo+IC3CoMKgwqDC oMKgwqDCoGlndF9hc3NlcnRfZihlbmFibGVkLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAiRGVmYXVsdCBEU0MgZW5hYmxlIGZhaWxlZCBvbiBjb25uZWN0b3I6ICVz Cj4gcGlwZTogJXNcbiIsCj4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IG91dHB1dC0+bmFtZSwKPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg a21zdGVzdF9waXBlX25hbWUoZGF0YS0+cGlwZSkpOwo+IC0KPiAtwqDCoMKgwqDCoMKgwqB0ZXN0 X2NsZWFudXAoZGF0YSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlndF9kZWJ1 ZygiUmVzZXQgaW5wdXQgQlBDXG4iKTsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZGF0YS0+aW5wdXRfYnBjID0gMDsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZm9y Y2VfZHNjX2VuYWJsZV9icGMoZGF0YSk7Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBpZ3RfYXNzZXJ0X2YoZW5hYmxlZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiRGVmYXVsdCBEU0MgZW5hYmxlIGZhaWxlZCBvbiBj b25uZWN0b3I6Cj4gJXMgcGlwZTogJXNcbiIsCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgb3V0cHV0LT5uYW1lLAo+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGttc3Rlc3RfcGlwZV9uYW1l KGRhdGEtPnBpcGUpKTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRlc3Rf Y2xlYW51cChkYXRhKTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2 b2lkIHRlc3RfZHNjKGRhdGFfdCAqZGF0YSwgZW51bSBkc2NfdGVzdF90eXBlIHRlc3RfdHlwZSwg aW50Cj4gYnBjLAo+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNp Z25lZCBpbnQgcGxhbmVfZm9ybWF0KQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1bnNpZ25lZCBpbnQgcGxhbmVfZm9ybWF0LCBlbnVtCj4gZHNjX291dHB1dF9mb3Jt YXQgb3V0cHV0X2Zvcm1hdCkKPiDCoHsKPiDCoMKgwqDCoMKgwqDCoMKgaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+IMKgwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3Qg Km91dHB1dDsKPiBAQCAtMTk0LDE1ICsyMzUsMTkgQEAgc3RhdGljIHZvaWQgdGVzdF9kc2MoZGF0 YV90ICpkYXRhLCBlbnVtCj4gZHNjX3Rlc3RfdHlwZSB0ZXN0X3R5cGUsIGludCBicGMsCj4gwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlbHNlCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc25wcmludGYobmFtZSwgc2l6ZW9mKG5hbWUpLCAi LSVzIiwKPiBpZ3RfZm9ybWF0X3N0cihwbGFuZV9mb3JtYXQpKTsKPiDCoAo+IC3CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCJwaXBlLSVzLSVzJXMiLMKgCj4ga21z dGVzdF9waXBlX25hbWUoZGF0YS0+cGlwZSksIGRhdGEtPm91dHB1dC0+bmFtZSwgbmFtZSkKPiAt wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVwZGF0ZV9kaXNw bGF5KGRhdGEsIHRlc3RfdHlwZSwKPiBwbGFuZV9mb3JtYXQpOwo+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBpZ3RfZHluYW1pY19mKCJwaXBlLSVzLSVzJXMtJXMiLMKgCj4ga21zdGVz dF9waXBlX25hbWUoZGF0YS0+cGlwZSksIGRhdGEtPm91dHB1dC0+bmFtZSwgbmFtZSwKPiBrbXN0 ZXN0X2RzY19vdXRwdXRfZm9ybWF0X3N0cihvdXRwdXRfZm9ybWF0KSkKPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHVwZGF0ZV9kaXNwbGF5KGRhdGEsIHRl c3RfdHlwZSwgcGxhbmVfZm9ybWF0LAo+IG91dHB1dF9mb3JtYXQpOwo+IMKgwqDCoMKgwqDCoMKg wqB9Cj4gwqB9Cj4gwqAKPiDCoHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGRhdGFfdCAqZGF0YSwgZW51 bSBkc2NfdGVzdF90eXBlIHRlc3RfdHlwZSwgaW50Cj4gYnBjLAo+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IHBsYW5lX2Zvcm1hdCkKPiDCoHsK PiAtwqDCoMKgwqDCoMKgwqB0ZXN0X2RzYyhkYXRhLCB0ZXN0X3R5cGUsIGJwYywgcGxhbmVfZm9y bWF0KTsKPiArwqDCoMKgwqDCoMKgwqB0ZXN0X2RzYyhkYXRhLCB0ZXN0X3R5cGUsIGJwYywgcGxh bmVfZm9ybWF0LAo+IERTQ19GT1JNQVRfUkdCNDQ0KTsKPiArCj4gK8KgwqDCoMKgwqDCoMKgLyog WUNiQ3I0MjAgRFNDIGlzIHN1cHBvcnRlZCBvbiBkaXNwbGF5IHZlcnNpb24gMTQrICovCj4gK8Kg wqDCoMKgwqDCoMKgaWYgKChkYXRhLT5kaXNwX3ZlciA+PSAxNCkgJiYKPiAoaXNfZHNjX3ljYmNy NDIwX3N1cHBvcnRlZChkYXRhKSkpCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHRl c3RfZHNjKGRhdGEsIHRlc3RfdHlwZSwgYnBjLCBwbGFuZV9mb3JtYXQsCj4gRFNDX0ZPUk1BVF9Z Q0JDUjQyMCk7Cj4gwqB9Cj4gwqAKPiDCoGlndF9tYWluCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5 MTUva21zX2RzY19oZWxwZXIuYwo+IGIvdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5jCj4gaW5k ZXggN2I3NWJlODJlLi44ZjAzMjZmMTMgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9rbXNfZHNj X2hlbHBlci5jCj4gKysrIGIvdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5jCj4gQEAgLTMwLDcg KzMwLDkgQEAKPiDCoCNpbmNsdWRlICJrbXNfZHNjX2hlbHBlci5oIgo+IMKgCj4gwqBib29sIGZv cmNlX2RzY19lbl9vcmlnOwo+ICtib29sIGZvcmNlX2RzY195Y2JjcjQyMF9lbl9vcmlnOwo+IMKg aW50IGZvcmNlX2RzY19yZXN0b3JlX2ZkID0gLTE7Cj4gK2ludCBmb3JjZV9kc2NfeWNiY3I0MjBf cmVzdG9yZV9mZCA9IC0xOwo+IMKgCj4gwqB2b2lkIGZvcmNlX2RzY19lbmFibGUoZGF0YV90ICpk YXRhKQo+IMKgewo+IEBAIC04MCw2ICs4Miw3IEBAIHZvaWQgcmVzdG9yZV9mb3JjZV9kc2NfZW4o dm9pZCkKPiDCoHZvaWQga21zX2RzY19leGl0X2hhbmRsZXIoaW50IHNpZykKPiDCoHsKPiDCoMKg wqDCoMKgwqDCoMKgcmVzdG9yZV9mb3JjZV9kc2NfZW4oKTsKPiArwqDCoMKgwqDCoMKgwqByZXN0 b3JlX2ZvcmNlX2RzY195Y2JjcjQyMF9lbigpOwo+IMKgfQo+IMKgCj4gwqBib29sIGNoZWNrX2Rz Y19vbl9jb25uZWN0b3IoZGF0YV90ICpkYXRhKQo+IEBAIC0xMjksMyArMTMyLDQ5IEBAIGJvb2wg Y2hlY2tfZ2VuMTFfYnBjX2NvbnN0cmFpbnQoZGF0YV90ICpkYXRhKQo+IMKgCj4gwqDCoMKgwqDC oMKgwqDCoHJldHVybiB0cnVlOwo+IMKgfQo+ICsKPiArdm9pZCBmb3JjZV9kc2NfeWNiY3I0MjBf ZW5hYmxlKGRhdGFfdCAqZGF0YSkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGludCByZXQ7Cj4gKwo+ ICvCoMKgwqDCoMKgwqDCoGlndF9kZWJ1ZygiRm9yY2luZyBEU0MgWUNiQ3I0MjAgb24gJXNcbiIs IGRhdGEtPm91dHB1dC0KPiA+bmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgcmV0ID0gaWd0X2ZvcmNl X2RzY195Y2JjcjQyMF9lbmFibGUoZGF0YS0+ZHJtX2ZkLAo+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgZGF0YS0+b3V0cHV0LT5uYW1lKTsKPiArwqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0 X2YocmV0ID4gMCwgImZvcmNpbmcgZHNjIHljYmNyNDIwIGRlYnVnZnNfd3JpdGUKPiBmYWlsZWRc biIpOwo+ICt9Cj4gKwo+ICt2b2lkIHNhdmVfZm9yY2VfZHNjX3ljYmNyNDIwX2VuKGRhdGFfdCAq ZGF0YSkKPiArewo+ICvCoMKgwqDCoMKgwqDCoGZvcmNlX2RzY195Y2JjcjQyMF9lbl9vcmlnID0K PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWd0X2lzX2ZvcmNlX2RzY195Y2JjcjQy MF9lbmFibGVkKGRhdGEtPmRybV9mZCwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGRhdGEtPm91dHB1dC0KPiA+bmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgZm9yY2Vf ZHNjX3ljYmNyNDIwX3Jlc3RvcmVfZmQgPQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqBpZ3RfZ2V0X2RzY195Y2JjcjQyMF9kZWJ1Z2ZzX2ZkKGRhdGEtPmRybV9mZCwKPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGRhdGEtPm91dHB1dC0+bmFtZSk7Cj4gK8Kg wqDCoMKgwqDCoMKgaWd0X2Fzc2VydChmb3JjZV9kc2NfeWNiY3I0MjBfcmVzdG9yZV9mZCA+PSAw KTsKPiArfQo+ICsKPiArdm9pZCByZXN0b3JlX2ZvcmNlX2RzY195Y2JjcjQyMF9lbih2b2lkKQo+ ICt7Cj4gK8KgwqDCoMKgwqDCoMKgaWYgKGZvcmNlX2RzY195Y2JjcjQyMF9yZXN0b3JlX2ZkIDwg MCkKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuOwo+ICsKPiArwqDCoMKg wqDCoMKgwqBpZ3RfZGVidWcoIlJlc3RvcmluZyBEU0MgWUNiQ3I0MjAgZW5hYmxlXG4iKTsKPiAr wqDCoMKgwqDCoMKgwqBpZ3RfYXNzZXJ0KHdyaXRlKGZvcmNlX2RzY195Y2JjcjQyMF9yZXN0b3Jl X2ZkLAo+IGZvcmNlX2RzY195Y2JjcjQyMF9lbl9vcmlnID8gIjEiIDogIjAiLCAxKSA9PSAxKTsK PiArCj4gK8KgwqDCoMKgwqDCoMKgY2xvc2UoZm9yY2VfZHNjX3ljYmNyNDIwX3Jlc3RvcmVfZmQp Owo+ICvCoMKgwqDCoMKgwqDCoGZvcmNlX2RzY195Y2JjcjQyMF9yZXN0b3JlX2ZkID0gLTE7Cj4g K30KPiArCj4gK2Jvb2wgaXNfZHNjX3ljYmNyNDIwX3N1cHBvcnRlZChkYXRhX3QgKmRhdGEpCj4g K3sKPiArwqDCoMKgwqDCoMKgwqBpZ3Rfb3V0cHV0X3QgKm91dHB1dCA9IGRhdGEtPm91dHB1dDsK PiArCj4gK8KgwqDCoMKgwqDCoMKgaWYgKCFpZ3RfaXNfZHNjX3ljYmNyNDIwX3N1cHBvcnRlZChk YXRhLT5kcm1fZmQsIG91dHB1dC0KPiA+bmFtZSkpIHsKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWd0X2RlYnVnKCJEU0MgWUNiQ3I0MjAgbm90IHN1cHBvcnRlZCBvbiBjb25uZWN0 b3IKPiAlc1xuIiwKPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIG91dHB1dC0+bmFtZSk7Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJl dHVybiBmYWxzZTsKPiArwqDCoMKgwqDCoMKgwqB9Cj4gKwo+ICvCoMKgwqDCoMKgwqDCoHJldHVy biB0cnVlOwo+ICt9Cj4gZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUva21zX2RzY19oZWxwZXIuaAo+ IGIvdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5oCj4gaW5kZXggY2ZjYTJlZDk4Li41N2NiNjc3 MzcgMTAwNjQ0Cj4gLS0tIGEvdGVzdHMvaTkxNS9rbXNfZHNjX2hlbHBlci5oCj4gKysrIGIvdGVz dHMvaTkxNS9rbXNfZHNjX2hlbHBlci5oCj4gQEAgLTYyLDUgKzYyLDkgQEAgdm9pZCBrbXNfZHNj X2V4aXRfaGFuZGxlcihpbnQgc2lnKTsKPiDCoGJvb2wgY2hlY2tfZHNjX29uX2Nvbm5lY3Rvcihk YXRhX3QgKmRhdGEpOwo+IMKgYm9vbCBjaGVja19nZW4xMV9kcF9jb25zdHJhaW50KGRhdGFfdCAq ZGF0YSk7Cj4gwqBib29sIGNoZWNrX2dlbjExX2JwY19jb25zdHJhaW50KGRhdGFfdCAqZGF0YSk7 Cj4gK3ZvaWQgZm9yY2VfZHNjX3ljYmNyNDIwX2VuYWJsZShkYXRhX3QgKmRhdGEpOwo+ICt2b2lk IHNhdmVfZm9yY2VfZHNjX3ljYmNyNDIwX2VuKGRhdGFfdCAqZGF0YSk7Cj4gK3ZvaWQgcmVzdG9y ZV9mb3JjZV9kc2NfeWNiY3I0MjBfZW4odm9pZCk7Cj4gK2Jvb2wgaXNfZHNjX3ljYmNyNDIwX3N1 cHBvcnRlZChkYXRhX3QgKmRhdGEpOwo+IMKgCj4gwqAjZW5kaWYKCg==