From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kahola Subject: Re: [PATCH i-g-t v3 5/8] tests/kms_plane_scaling: Clean up tests to work better with igt_kms, v2. Date: Tue, 16 Jan 2018 11:32:22 +0200 Message-ID: <1516095142.12453.105.camel@intel.com> References: <20180115142834.65798-1-maarten.lankhorst@linux.intel.com> <20180115142834.65798-6-maarten.lankhorst@linux.intel.com> Reply-To: mika.kahola@intel.com Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga05.intel.com (mga05.intel.com [192.55.52.43]) by gabe.freedesktop.org (Postfix) with ESMTPS id 86ADF6E1B1 for ; Tue, 16 Jan 2018 09:29:32 +0000 (UTC) In-Reply-To: <20180115142834.65798-6-maarten.lankhorst@linux.intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: Maarten Lankhorst , intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org T24gTW9uLCAyMDE4LTAxLTE1IGF0IDE1OjI4ICswMTAwLCBNYWFydGVuIExhbmtob3JzdCB3cm90 ZToKPiBUaGUgdGVzdCBvbmx5IHJ1bnMgb24gZ2VuOSssIHNvIHdlIGNhbiBzYWZlbHkgcmVwbGFj ZSBhbGwgY2FsbHMgd2l0aAo+IENPTU1JVF9BVE9NSUMuCj4gCj4gQWxzbyBwZXJmb3JtIHNvbWUg Y2xlYW51cHMgYnkgbWFraW5nIGZiIGFuIGFycmF5LCBhbmQgY2xlYW5pbmcgdXAgaW4KPiBwcmVw YXJlX2NydGMuIFRoaXMgd2F5IGZhaWxlZCBzdWJ0ZXN0cyB3b24ndCBjYXVzZSBmYWlsdXJlcyBp biBvdGhlcgo+IHN1YnRlc3RzLgo+IAo+IENoYW5nZXMgc2luY2UgdjE6Cj4gLSBSZWJhc2Ugb24g dG9wIG9mIG51bV9zY2FsZXJzIGNoYW5nZXMuCj4gCgpSZXZpZXdlZC1ieTogTWlrYSBLYWhvbGEg PG1pa2Eua2Fob2xhQGludGVsLmNvbT4KCj4gU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBMYW5raG9y c3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPiAtLS0KPiDCoHRlc3RzL2tt c19wbGFuZV9zY2FsaW5nLmMgfCAyMzUgKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0t LS0tCj4gLS0tLS0tLS0tLQo+IMKgMSBmaWxlIGNoYW5nZWQsIDk5IGluc2VydGlvbnMoKyksIDEz NiBkZWxldGlvbnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvdGVzdHMva21zX3BsYW5lX3NjYWxpbmcu YyBiL3Rlc3RzL2ttc19wbGFuZV9zY2FsaW5nLmMKPiBpbmRleCBkMWFmY2M4MTlkMGEuLjBiYTIw OWEzMTE2YiAxMDA2NDQKPiAtLS0gYS90ZXN0cy9rbXNfcGxhbmVfc2NhbGluZy5jCj4gKysrIGIv dGVzdHMva21zX3BsYW5lX3NjYWxpbmcuYwo+IEBAIC0zOCwxNyArMzgsMTAgQEAgdHlwZWRlZiBz dHJ1Y3Qgewo+IMKgCWludCBpbWFnZV93Owo+IMKgCWludCBpbWFnZV9oOwo+IMKgCj4gLQlzdHJ1 Y3QgaWd0X2ZiIGZiMTsKPiAtCXN0cnVjdCBpZ3RfZmIgZmIyOwo+IC0Jc3RydWN0IGlndF9mYiBm YjM7Cj4gLQlpbnQgZmJfaWQxOwo+IC0JaW50IGZiX2lkMjsKPiAtCWludCBmYl9pZDM7Cj4gLQo+ ICsJc3RydWN0IGlndF9mYiBmYlszXTsKPiDCoAlpZ3RfcGxhbmVfdCAqcGxhbmUxOwo+IMKgCWln dF9wbGFuZV90ICpwbGFuZTI7Cj4gwqAJaWd0X3BsYW5lX3QgKnBsYW5lMzsKPiAtCWlndF9wbGFu ZV90ICpwbGFuZTQ7Cj4gwqB9IGRhdGFfdDsKPiDCoAo+IMKgc3RhdGljIGludCBnZXRfbnVtX3Nj YWxlcnModWludDMyX3QgZGV2aWQsIGVudW0gcGlwZSBwaXBlKQo+IEBAIC02MSw3OCArNTQsNjAg QEAgc3RhdGljIGludCBnZXRfbnVtX3NjYWxlcnModWludDMyX3QgZGV2aWQsIGVudW0KPiBwaXBl IHBpcGUpCj4gwqAJCXJldHVybiAxOwo+IMKgfQo+IMKgCj4gLXN0YXRpYyB2b2lkIHByZXBhcmVf Y3J0YyhkYXRhX3QgKmRhdGEsIGlndF9vdXRwdXRfdCAqb3V0cHV0LCBlbnVtCj4gcGlwZSBwaXBl LAo+IC0JCQlpZ3RfcGxhbmVfdCAqcGxhbmUsIGRybU1vZGVNb2RlSW5mbyAqbW9kZSwKPiBlbnVt IGlndF9jb21taXRfc3R5bGUgcykKPiArc3RhdGljIHZvaWQgY2xlYW51cF9jcnRjKGRhdGFfdCAq ZGF0YSkKPiDCoHsKPiAtCWlndF9kaXNwbGF5X3QgKmRpc3BsYXkgPSAmZGF0YS0+ZGlzcGxheTsK PiAtCj4gLQlpZ3Rfb3V0cHV0X3NldF9waXBlKG91dHB1dCwgcGlwZSk7Cj4gKwlpbnQgaTsKPiDC oAo+IC0JLyogY3JlYXRlIHRoZSBwaXBlX2NyYyBvYmplY3QgZm9yIHRoaXMgcGlwZSAqLwo+IMKg CWlndF9waXBlX2NyY19mcmVlKGRhdGEtPnBpcGVfY3JjKTsKPiAtCWRhdGEtPnBpcGVfY3JjID0g aWd0X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsCj4gSU5URUxfUElQRV9DUkNfU09V UkNFX0FVVE8pOwo+IC0KPiAtCS8qIGJlZm9yZSBhbGxvY2F0aW5nLCBmcmVlIGlmIGFueSBvbGRl ciBmYiAqLwo+IC0JaWYgKGRhdGEtPmZiX2lkMSkgewo+IC0JCWlndF9yZW1vdmVfZmIoZGF0YS0+ ZHJtX2ZkLCAmZGF0YS0+ZmIxKTsKPiAtCQlkYXRhLT5mYl9pZDEgPSAwOwo+IC0JfQo+ICsJZGF0 YS0+cGlwZV9jcmMgPSBOVUxMOwo+IMKgCj4gLQkvKiBhbGxvY2F0ZSBmYiBmb3IgcGxhbmUgMSAq Lwo+IC0JZGF0YS0+ZmJfaWQxID0gaWd0X2NyZWF0ZV9wYXR0ZXJuX2ZiKGRhdGEtPmRybV9mZCwK PiAtCQkJCQnCoMKgwqDCoMKgbW9kZS0+aGRpc3BsYXksIG1vZGUtCj4gPnZkaXNwbGF5LAo+IC0J CQkJCcKgwqDCoMKgwqBEUk1fRk9STUFUX1hSR0I4ODg4LAo+IC0JCQkJCcKgwqDCoMKgwqBMT0NB TF9JOTE1X0ZPUk1BVF9NT0RfWAo+IF9USUxFRCwgLyogdGlsZWQgKi8KPiAtCQkJCQnCoMKgwqDC oMKgJmRhdGEtPmZiMSk7Cj4gLQlpZ3RfYXNzZXJ0KGRhdGEtPmZiX2lkMSk7Cj4gLQo+IC0JLyoK PiAtCcKgKiBXZSBhbHdheXMgc2V0IHRoZSBwcmltYXJ5IHBsYW5lIHRvIGFjdHVhbGx5IGVuYWJs ZSB0aGUKPiBwaXBlIGFzCj4gLQnCoCogdGhlcmUncyBubyB3YXkgKHRoYXQgd29ya3MpIHRvIGxp Z2h0IHVwIGEgcGlwZSB3aXRoIG9ubHkKPiBhIHNwcml0ZQo+IC0JwqAqIHBsYW5lIGVuYWJsZWQg YXQgdGhlIG1vbWVudC4KPiAtCcKgKi8KPiAtCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVf VFlQRV9QUklNQVJZKSB7Cj4gLQkJaWd0X3BsYW5lX3QgKnByaW1hcnk7Cj4gKwlmb3IgKGkgPSAw OyBpIDwgQVJSQVlfU0laRShkYXRhLT5mYik7IGkrKykgewo+ICsJCWlmICghZGF0YS0+ZmJbaV0u ZmJfaWQpCj4gKwkJCWNvbnRpbnVlOwo+IMKgCj4gLQkJcHJpbWFyeSA9IGlndF9vdXRwdXRfZ2V0 X3BsYW5lX3R5cGUob3V0cHV0LAo+IERSTV9QTEFORV9UWVBFX1BSSU1BUlkpOwo+IC0JCWlndF9w bGFuZV9zZXRfZmIocHJpbWFyeSwgJmRhdGEtPmZiMSk7Cj4gKwkJaWd0X3JlbW92ZV9mYihkYXRh LT5kcm1fZmQsICZkYXRhLT5mYltpXSk7Cj4gKwkJZGF0YS0+ZmJbaV0uZmJfaWQgPSAwOwo+IMKg CX0KPiAtCj4gLQlpZ3RfcGxhbmVfc2V0X2ZiKHBsYW5lLCAmZGF0YS0+ZmIxKTsKPiAtCWlndF9k aXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgcyk7Cj4gwqB9Cj4gwqAKPiAtc3RhdGljIHZvaWQgY2xl YW51cF9jcnRjKGRhdGFfdCAqZGF0YSwgaWd0X291dHB1dF90ICpvdXRwdXQsCj4gaWd0X3BsYW5l X3QgKnBsYW5lKQo+ICtzdGF0aWMgdm9pZCBwcmVwYXJlX2NydGMoZGF0YV90ICpkYXRhLCBpZ3Rf b3V0cHV0X3QgKm91dHB1dCwgZW51bQo+IHBpcGUgcGlwZSwKPiArCQkJaWd0X3BsYW5lX3QgKnBs YW5lLCBkcm1Nb2RlTW9kZUluZm8gKm1vZGUpCj4gwqB7Cj4gwqAJaWd0X2Rpc3BsYXlfdCAqZGlz cGxheSA9ICZkYXRhLT5kaXNwbGF5Owo+IMKgCj4gLQlpZ3RfcGlwZV9jcmNfZnJlZShkYXRhLT5w aXBlX2NyYyk7Cj4gLQlkYXRhLT5waXBlX2NyYyA9IE5VTEw7Cj4gKwljbGVhbnVwX2NydGMoZGF0 YSk7Cj4gwqAKPiAtCWlmIChkYXRhLT5mYl9pZDEpIHsKPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEt PmRybV9mZCwgJmRhdGEtPmZiMSk7Cj4gLQkJZGF0YS0+ZmJfaWQxID0gMDsKPiAtCX0KPiAtCWlm IChkYXRhLT5mYl9pZDIpIHsKPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEt PmZiMik7Cj4gLQkJZGF0YS0+ZmJfaWQyID0gMDsKPiAtCX0KPiAtCWlmIChkYXRhLT5mYl9pZDMp IHsKPiAtCQlpZ3RfcmVtb3ZlX2ZiKGRhdGEtPmRybV9mZCwgJmRhdGEtPmZiMyk7Cj4gLQkJZGF0 YS0+ZmJfaWQzID0gMDsKPiAtCX0KPiArCWlndF9kaXNwbGF5X3Jlc2V0KGRpc3BsYXkpOwo+ICsJ aWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+ICsKPiArCS8qIGNyZWF0ZSB0aGUg cGlwZV9jcmMgb2JqZWN0IGZvciB0aGlzIHBpcGUgKi8KPiArCWRhdGEtPnBpcGVfY3JjID0gaWd0 X3BpcGVfY3JjX25ldyhkYXRhLT5kcm1fZmQsIHBpcGUsCj4gSU5URUxfUElQRV9DUkNfU09VUkNF X0FVVE8pOwo+ICsKPiArCS8qIGFsbG9jYXRlIGZiIGZvciBwbGFuZSAxICovCj4gKwlpZ3RfY3Jl YXRlX3BhdHRlcm5fZmIoZGF0YS0+ZHJtX2ZkLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+dmRp c3BsYXksCj4gKwkJCcKgwqDCoMKgwqDCoERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwkJCcKgwqDC oMKgwqDCoExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELCAvKgo+IHRpbGVkICovCj4gKwkJ CcKgwqDCoMKgwqDCoCZkYXRhLT5mYlswXSk7Cj4gKwo+ICsJaWd0X3BsYW5lX3NldF9mYihwbGFu ZSwgJmRhdGEtPmZiWzBdKTsKPiDCoAo+IMKgCWlmIChwbGFuZS0+dHlwZSAhPSBEUk1fUExBTkVf VFlQRV9QUklNQVJZKSB7Cj4gwqAJCWlndF9wbGFuZV90ICpwcmltYXJ5Owo+ICsJCWludCByZXQ7 Cj4gKwo+ICsJCS8qIERvIHdlIHN1Y2NlZWQgd2l0aG91dCBlbmFibGluZyB0aGUgcHJpbWFyeSBw bGFuZT8KPiAqLwo+ICsJCXJldCA9IGlndF9kaXNwbGF5X3RyeV9jb21taXQyKGRpc3BsYXksCj4g Q09NTUlUX0FUT01JQyk7Cj4gKwkJaWYgKCFyZXQpCj4gKwkJCXJldHVybjsKPiDCoAo+ICsJCS8q Cj4gKwkJwqAqIEZhbGxiYWNrOiBzZXQgdGhlIHByaW1hcnkgcGxhbmUgdG8gYWN0dWFsbHkKPiBl bmFibGUgdGhlIHBpcGUuCj4gKwkJwqAqIFNvbWUgZHJpdmVycyBhbHdheXMgcmVxdWlyZSB0aGUg cHJpbWFyeSBwbGFuZSB0bwo+IGJlIGVuYWJsZWQuCj4gKwkJwqAqLwo+IMKgCQlwcmltYXJ5ID0g aWd0X291dHB1dF9nZXRfcGxhbmVfdHlwZShvdXRwdXQsCj4gRFJNX1BMQU5FX1RZUEVfUFJJTUFS WSk7Cj4gLQkJaWd0X3BsYW5lX3NldF9mYihwcmltYXJ5LCBOVUxMKTsKPiArCQlpZ3RfcGxhbmVf c2V0X2ZiKHByaW1hcnksICZkYXRhLT5mYlswXSk7Cj4gwqAJfQo+IC0KPiAtCWlndF9wbGFuZV9z ZXRfZmIocGxhbmUsIE5VTEwpOwo+IC0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIFBJUEVf QU5ZKTsKPiAtCj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJT QUwpOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiDC oH0KPiDCoAo+IMKgLyogZG9lcyBpdGVyYXRpdmUgc2NhbGluZyBvbiBwbGFuZTIgKi8KPiBAQCAt MTQwLDMzICsxMTUsMzIgQEAgc3RhdGljIHZvaWQgaXRlcmF0ZV9wbGFuZV9zY2FsaW5nKGRhdGFf dCAqZCwKPiBkcm1Nb2RlTW9kZUluZm8gKm1vZGUpCj4gwqB7Cj4gwqAJaWd0X2Rpc3BsYXlfdCAq ZGlzcGxheSA9ICZkLT5kaXNwbGF5Owo+IMKgCj4gLQlpZiAobW9kZS0+aGRpc3BsYXkgPj0gZC0+ ZmIyLndpZHRoKSB7Cj4gKwlpZiAobW9kZS0+aGRpc3BsYXkgPj0gZC0+ZmJbMV0ud2lkdGgpIHsK PiDCoAkJaW50IHcsIGg7Cj4gwqAJCS8qIGZpeGVkIGZiICovCj4gLQkJaWd0X2ZiX3NldF9wb3Np dGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOwo+IC0JCWlndF9mYl9zZXRfc2l6ZSgmZC0+ ZmIyLCBkLT5wbGFuZTIsIGQtPmZiMi53aWR0aCwgZC0KPiA+ZmIyLmhlaWdodCk7Cj4gKwkJaWd0 X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmJbMV0sIGQtPnBsYW5lMiwgMCwgMCk7Cj4gKwkJaWd0X2Zi X3NldF9zaXplKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCBkLQo+ID5mYlsxXS53aWR0aCwgZC0+ZmJb MV0uaGVpZ2h0KTsKPiDCoAkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDAsIDAp Owo+IMKgCj4gwqAJCS8qIGFkanVzdCBwbGFuZSBzaXplICovCj4gLQkJZm9yICh3ID0gZC0+ZmIy LndpZHRoOyB3IDw9IG1vZGUtPmhkaXNwbGF5OyB3Kz0xMCkgewo+IC0JCQloID0gdyAqIGQtPmZi Mi5oZWlnaHQgLyBkLT5mYjIud2lkdGg7Cj4gKwkJZm9yICh3ID0gZC0+ZmJbMV0ud2lkdGg7IHcg PD0gbW9kZS0+aGRpc3BsYXk7IHcrPTEwKQo+IHsKPiArCQkJaCA9IHcgKiBkLT5mYlsxXS5oZWln aHQgLyBkLT5mYlsxXS53aWR0aDsKPiDCoAkJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIs IHcsIGgpOwo+IC0JCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksCj4gQ09NTUlUX1VOSVZF UlNBTCk7Cj4gKwkJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7 Cj4gwqAJCX0KPiDCoAl9IGVsc2Ugewo+IMKgCQlpbnQgdywgaDsKPiDCoAkJLyogZml4ZWQgcGxh bmUgKi8KPiDCoAkJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDAsIDApOwo+IMKg CQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUyLCBtb2RlLT5oZGlzcGxheSwgbW9kZS0KPiA+ dmRpc3BsYXkpOwo+IC0JCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMiwgZC0+cGxhbmUyLCAw LCAwKTsKPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCAwLCAw KTsKPiDCoAo+IMKgCQkvKiBhZGp1c3QgZmIgc2l6ZSAqLwo+IC0JCWZvciAodyA9IG1vZGUtPmhk aXNwbGF5OyB3IDw9IGQtPmZiMi53aWR0aDsgdys9MTApIHsKPiArCQlmb3IgKHcgPSBtb2RlLT5o ZGlzcGxheTsgdyA8PSBkLT5mYlsxXS53aWR0aDsgdys9MTApCj4gewo+IMKgCQkJLyogU291cmNl IGNvb3JkaW5hdGVzIG11c3Qgbm90IGJlIGNsaXBwZWQuCj4gKi8KPiAtCQkJaCA9IG1pbih3ICog bW9kZS0+aGRpc3BsYXkgLyBtb2RlLT52ZGlzcGxheSwgCj4gZC0+ZmIyLmhlaWdodCk7Cj4gLQo+ IC0JCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUyLCB3LCBoKTsKPiAtCQkJaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LAo+IENPTU1JVF9VTklWRVJTQUwpOwo+ICsJCQloID0g bWluKHcgKiBtb2RlLT5oZGlzcGxheSAvIG1vZGUtPnZkaXNwbGF5LCAKPiBkLT5mYlsxXS5oZWln aHQpOwo+ICsJCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzFdLCBkLT5wbGFuZTIsIHcsIGgpOwo+ ICsJCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+IMKgCQl9 Cj4gwqAJfQo+IMKgfQo+IEBAIC0xNzgsMTMwICsxNTIsMTE4IEBAIHRlc3RfcGxhbmVfc2NhbGlu Z19vbl9waXBlKGRhdGFfdCAqZCwgZW51bQo+IHBpcGUgcGlwZSwgaWd0X291dHB1dF90ICpvdXRw dXQpCj4gwqAJZHJtTW9kZU1vZGVJbmZvICptb2RlOwo+IMKgCWludCBwcmltYXJ5X3BsYW5lX3Nj YWxpbmcgPSAwOyAvKiBGb3Igbm93ICovCj4gwqAKPiAtCWlndF9kaXNwbGF5X3Jlc2V0KGRpc3Bs YXkpOwo+IC0JaWd0X291dHB1dF9zZXRfcGlwZShvdXRwdXQsIHBpcGUpOwo+IMKgCW1vZGUgPSBp Z3Rfb3V0cHV0X2dldF9tb2RlKG91dHB1dCk7Cj4gwqAKPiAtCWQtPmZiX2lkMiA9IGlndF9jcmVh dGVfY29sb3JfcGF0dGVybl9mYihkaXNwbGF5LT5kcm1fZmQsCj4gNjAwLCA2MDAsCj4gLQkJCQkJ CURSTV9GT1JNQVRfWFJHQjg4ODgsCj4gLQkJCQkJCUxPQ0FMX0k5MTVfRk9STUFUX01PCj4gRF9Y X1RJTEVELCAvKiB0aWxlZCAqLwo+IC0JCQkJCQkuNSwgLjUsIC41LCAmZC0KPiA+ZmIyKTsKPiAt CWlndF9hc3NlcnQoZC0+ZmJfaWQyKTsKPiArCS8qIFNldCB1cCBkaXNwbGF5IHdpdGggcGxhbmUg MSAqLwo+ICsJZC0+cGxhbmUxID0gJmRpc3BsYXktPnBpcGVzW3BpcGVdLnBsYW5lc1swXTsKPiAr CXByZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBpcGUsIGQtPnBsYW5lMSwgbW9kZSk7Cj4gwqAKPiAt CWQtPmZiX2lkMyA9IGlndF9jcmVhdGVfcGF0dGVybl9mYihkLT5kcm1fZmQsCj4gLQkJCQkJwqDC oG1vZGUtPmhkaXNwbGF5LCBtb2RlLQo+ID52ZGlzcGxheSwKPiAtCQkJCQnCoMKgRFJNX0ZPUk1B VF9YUkdCODg4OCwKPiAtCQkJCQnCoMKgTE9DQUxfSTkxNV9GT1JNQVRfTU9EX1hfVEkKPiBMRUQs IC8qIHRpbGVkICovCj4gLQkJCQkJwqDCoCZkLT5mYjMpOwo+IC0JaWd0X2Fzc2VydChkLT5mYl9p ZDMpOwo+ICsJaWd0X2NyZWF0ZV9jb2xvcl9wYXR0ZXJuX2ZiKGRpc3BsYXktPmRybV9mZCwgNjAw LCA2MDAsCj4gKwkJCQnCoMKgwqDCoERSTV9GT1JNQVRfWFJHQjg4ODgsCj4gKwkJCQnCoMKgwqDC oExPQ0FMX0k5MTVfRk9STUFUX01PRF9YX1RJTEVELAo+IC8qIHRpbGVkICovCj4gKwkJCQnCoMKg wqDCoC41LCAuNSwgLjUsICZkLT5mYlsxXSk7Cj4gwqAKPiAtCS8qIFNldCB1cCBkaXNwbGF5IHdp dGggcGxhbmUgMSAqLwo+IC0JZC0+cGxhbmUxID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0 LCAwKTsKPiAtCXByZXBhcmVfY3J0YyhkLCBvdXRwdXQsIHBpcGUsIGQtPnBsYW5lMSwgbW9kZSwK PiBDT01NSVRfVU5JVkVSU0FMKTsKPiArCWlndF9jcmVhdGVfcGF0dGVybl9mYihkLT5kcm1fZmQs Cj4gKwkJCcKgwqDCoMKgwqDCoG1vZGUtPmhkaXNwbGF5LCBtb2RlLT52ZGlzcGxheSwKPiArCQkJ wqDCoMKgwqDCoMKgRFJNX0ZPUk1BVF9YUkdCODg4OCwKPiArCQkJwqDCoMKgwqDCoMKgTE9DQUxf STkxNV9GT1JNQVRfTU9EX1hfVElMRUQsIC8qCj4gdGlsZWQgKi8KPiArCQkJwqDCoMKgwqDCoMKg JmQtPmZiWzJdKTsKPiDCoAo+IMKgCWlmIChwcmltYXJ5X3BsYW5lX3NjYWxpbmcpIHsKPiDCoAkJ LyogUHJpbWFyeSBwbGFuZSB1cHNjYWxpbmcgKi8KPiAtCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZk LT5mYjEsIGQtPnBsYW5lMSwgMTAwLCAxMDApOwo+IC0JCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIx LCBkLT5wbGFuZTEsIDUwMCwgNTAwKTsKPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlsw XSwgZC0+cGxhbmUxLCAxMDAsIDEwMCk7Cj4gKwkJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlswXSwg ZC0+cGxhbmUxLCA1MDAsIDUwMCk7Cj4gwqAJCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxh bmUxLCAwLCAwKTsKPiDCoAkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMSwgbW9kZS0+aGRp c3BsYXksIG1vZGUtCj4gPnZkaXNwbGF5KTsKPiAtCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3Bs YXksIENPTU1JVF9VTklWRVJTQUwpOwo+ICsJCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwg Q09NTUlUX0FUT01JQyk7Cj4gwqAKPiDCoAkJLyogUHJpbWFyeSBwbGFuZSAxOjEgbm8gc2NhbGlu ZyAqLwo+IC0JCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMSwgZC0+cGxhbmUxLCAwLCAwKTsK PiAtCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCBkLT5mYjEud2lkdGgsIGQt Cj4gPmZiMS5oZWlnaHQpOwo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzBdLCBkLT5w bGFuZTEsIDAsIDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmJbMF0sIGQtPnBsYW5lMSwg ZC0KPiA+ZmJbMF0ud2lkdGgsIGQtPmZiWzBdLmhlaWdodCk7Cj4gwqAJCWlndF9wbGFuZV9zZXRf cG9zaXRpb24oZC0+cGxhbmUxLCAwLCAwKTsKPiDCoAkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBs YW5lMSwgbW9kZS0+aGRpc3BsYXksIG1vZGUtCj4gPnZkaXNwbGF5KTsKPiAtCQlpZ3RfZGlzcGxh eV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwo+ICsJCWlndF9kaXNwbGF5X2Nv bW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01JQyk7Cj4gwqAJfQo+IMKgCj4gLQkvKiBTZXQgdXAg ZmIyLT5wbGFuZTIgbWFwcGluZy4gKi8KPiArCS8qIFNldCB1cCBmYlsxXS0+cGxhbmUyIG1hcHBp bmcuICovCj4gwqAJZC0+cGxhbmUyID0gaWd0X291dHB1dF9nZXRfcGxhbmUob3V0cHV0LCAxKTsK PiAtCWlndF9wbGFuZV9zZXRfZmIoZC0+cGxhbmUyLCAmZC0+ZmIyKTsKPiArCWlndF9wbGFuZV9z ZXRfZmIoZC0+cGxhbmUyLCAmZC0+ZmJbMV0pOwo+IMKgCj4gwqAJLyogMm5kIHBsYW5lIHdpbmRv d2VkICovCj4gLQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjIsIGQtPnBsYW5lMiwgMTAwLCAx MDApOwo+IC0JaWd0X2ZiX3NldF9zaXplKCZkLT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndpZHRo LTIwMCwgZC0KPiA+ZmIyLmhlaWdodC0yMDApOwo+ICsJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ ZmJbMV0sIGQtPnBsYW5lMiwgMTAwLCAxMDApOwo+ICsJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlsx XSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aC0yMDAsIGQtCj4gPmZiWzFdLmhlaWdodC0yMDAp Owo+IMKgCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gwqAJ aWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMiwgbW9kZS0+aGRpc3BsYXktMjAwLCBtb2RlLQo+ ID52ZGlzcGxheS0yMDApOwo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRf VU5JVkVSU0FMKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxheSwgQ09NTUlUX0FUT01J Qyk7Cj4gwqAKPiDCoAlpdGVyYXRlX3BsYW5lX3NjYWxpbmcoZCwgbW9kZSk7Cj4gwqAKPiDCoAkv KiAybmQgcGxhbmUgdXAgc2NhbGluZyAqLwo+IC0JaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIy LCBkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmIyLCBkLT5w bGFuZTIsIDUwMCwgNTAwKTsKPiArCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzFdLCBkLT5w bGFuZTIsIDEwMCwgMTAwKTsKPiArCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmJbMV0sIGQtPnBsYW5l MiwgNTAwLCA1MDApOwo+IMKgCWlndF9wbGFuZV9zZXRfcG9zaXRpb24oZC0+cGxhbmUyLCAxMCwg MTApOwo+IMKgCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIG1vZGUtPmhkaXNwbGF5LTIw LCBtb2RlLQo+ID52ZGlzcGxheS0yMCk7Cj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXks IENPTU1JVF9VTklWRVJTQUwpOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01N SVRfQVRPTUlDKTsKPiDCoAo+IMKgCS8qIDJuZCBwbGFuZSBkb3duc2NhbGluZyAqLwo+IC0JaWd0 X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIyLCBkLT5wbGFuZTIsIDAsIDApOwo+IC0JaWd0X2ZiX3Nl dF9zaXplKCZkLT5mYjIsIGQtPnBsYW5lMiwgZC0+ZmIyLndpZHRoLCBkLQo+ID5mYjIuaGVpZ2h0 KTsKPiArCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzFdLCBkLT5wbGFuZTIsIDAsIDApOwo+ ICsJaWd0X2ZiX3NldF9zaXplKCZkLT5mYlsxXSwgZC0+cGxhbmUyLCBkLT5mYlsxXS53aWR0aCwg ZC0KPiA+ZmJbMV0uaGVpZ2h0KTsKPiDCoAlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5l MiwgMTAsIDEwKTsKPiDCoAo+IMKgCS8qIERvd25zY2FsZSAoMTAvOSl4IG9mIG9yaWdpbmFsIGlt YWdlICovCj4gLQlpZ3RfcGxhbmVfc2V0X3NpemUoZC0+cGxhbmUyLCAoZC0+ZmIyLndpZHRoICog MTApLzksIChkLQo+ID5mYjIuaGVpZ2h0ICogMTApLzkpOwo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0 MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKPiArCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5w bGFuZTIsIChkLT5mYlsxXS53aWR0aCAqIDEwKS85LCAoZC0KPiA+ZmJbMV0uaGVpZ2h0ICogMTAp LzkpOwo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiDC oAo+IMKgCWlmIChwcmltYXJ5X3BsYW5lX3NjYWxpbmcpIHsKPiDCoAkJLyogUHJpbWFyeSBwbGFu ZSB1cCBzY2FsaW5nICovCj4gLQkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmIxLCBkLT5wbGFu ZTEsIDEwMCwgMTAwKTsKPiAtCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMSwgZC0+cGxhbmUxLCA1 MDAsIDUwMCk7Cj4gKwkJaWd0X2ZiX3NldF9wb3NpdGlvbigmZC0+ZmJbMF0sIGQtPnBsYW5lMSwg MTAwLCAxMDApOwo+ICsJCWlndF9mYl9zZXRfc2l6ZSgmZC0+ZmJbMF0sIGQtPnBsYW5lMSwgNTAw LCA1MDApOwo+IMKgCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQtPnBsYW5lMSwgMCwgMCk7Cj4g wqAJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTEsIG1vZGUtPmhkaXNwbGF5LCBtb2RlLQo+ ID52ZGlzcGxheSk7Cj4gLQkJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5J VkVSU0FMKTsKPiArCQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMp Owo+IMKgCX0KPiDCoAo+IC0JLyogU2V0IHVwIGZiMy0+cGxhbmUzIG1hcHBpbmcuICovCj4gKwkv KiBTZXQgdXAgZmJbMl0tPnBsYW5lMyBtYXBwaW5nLiAqLwo+IMKgCWQtPnBsYW5lMyA9IGlndF9v dXRwdXRfZ2V0X3BsYW5lKG91dHB1dCwgMik7Cj4gLQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5l MywgJmQtPmZiMyk7Cj4gKwlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMywgJmQtPmZiWzJdKTsK PiDCoAo+IMKgCWlmKGQtPnBsYW5lMy0+dHlwZSA9PSBEUk1fUExBTkVfVFlQRV9DVVJTT1IpIHsK PiDCoAkJaWd0X2RlYnVnKCJQbGFuZS0zIGRvZXNudCBleGlzdCBvbiBwaXBlICVzXG4iLAo+IGtt c3Rlc3RfcGlwZV9uYW1lKHBpcGUpKTsKPiAtCQlnb3RvIGNsZWFudXA7Cj4gKwkJcmV0dXJuOwo+ IMKgCX0KPiDCoAo+IMKgCS8qIDNyZCBwbGFuZSB3aW5kb3dlZCAtIG5vIHNjYWxpbmcgKi8KPiAt CWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMywgZC0+cGxhbmUzLCAxMDAsIDEwMCk7Cj4gLQlp Z3RfZmJfc2V0X3NpemUoJmQtPmZiMywgZC0+cGxhbmUzLCBkLT5mYjMud2lkdGgtMzAwLCBkLQo+ ID5mYjMuaGVpZ2h0LTMwMCk7Cj4gKwlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlsyXSwgZC0+ cGxhbmUzLCAxMDAsIDEwMCk7Cj4gKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzJdLCBkLT5wbGFu ZTMsIGQtPmZiWzJdLndpZHRoLTMwMCwgZC0KPiA+ZmJbMl0uaGVpZ2h0LTMwMCk7Cj4gwqAJaWd0 X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMsIDEwMCwgMTAwKTsKPiDCoAlpZ3RfcGxhbmVf c2V0X3NpemUoZC0+cGxhbmUzLCBtb2RlLT5oZGlzcGxheS0zMDAsIG1vZGUtCj4gPnZkaXNwbGF5 LTMwMCk7Cj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwp Owo+ICsJaWd0X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfQVRPTUlDKTsKPiDCoAo+ IMKgCS8qIFN3aXRjaCBzY2FsZXIgZnJvbSBwbGFuZSAyIHRvIHBsYW5lIDMgKi8KPiAtCWlndF9m Yl9zZXRfcG9zaXRpb24oJmQtPmZiMiwgZC0+cGxhbmUyLCAxMDAsIDEwMCk7Cj4gLQlpZ3RfZmJf c2V0X3NpemUoJmQtPmZiMiwgZC0+cGxhbmUyLCBkLT5mYjIud2lkdGgtMjAwLCBkLQo+ID5mYjIu aGVpZ2h0LTIwMCk7Cj4gKwlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlsxXSwgZC0+cGxhbmUy LCAxMDAsIDEwMCk7Cj4gKwlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzFdLCBkLT5wbGFuZTIsIGQt PmZiWzFdLndpZHRoLTIwMCwgZC0KPiA+ZmJbMV0uaGVpZ2h0LTIwMCk7Cj4gwqAJaWd0X3BsYW5l X3NldF9wb3NpdGlvbihkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiAtCWlndF9wbGFuZV9zZXRfc2l6 ZShkLT5wbGFuZTIsIGQtPmZiMi53aWR0aC0yMDAsIGQtCj4gPmZiMi5oZWlnaHQtMjAwKTsKPiAr CWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTIsIGQtPmZiWzFdLndpZHRoLTIwMCwgZC0KPiA+ ZmJbMV0uaGVpZ2h0LTIwMCk7Cj4gwqAKPiAtCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiMywg ZC0+cGxhbmUzLCAxMDAsIDEwMCk7Cj4gLQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiMywgZC0+cGxh bmUzLCBkLT5mYjMud2lkdGgtNDAwLCBkLQo+ID5mYjMuaGVpZ2h0LTQwMCk7Cj4gKwlpZ3RfZmJf c2V0X3Bvc2l0aW9uKCZkLT5mYlsyXSwgZC0+cGxhbmUzLCAxMDAsIDEwMCk7Cj4gKwlpZ3RfZmJf c2V0X3NpemUoJmQtPmZiWzJdLCBkLT5wbGFuZTMsIGQtPmZiWzJdLndpZHRoLTQwMCwgZC0KPiA+ ZmJbMl0uaGVpZ2h0LTQwMCk7Cj4gwqAJaWd0X3BsYW5lX3NldF9wb3NpdGlvbihkLT5wbGFuZTMs IDEwLCAxMCk7Cj4gwqAJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBsYW5lMywgbW9kZS0+aGRpc3Bs YXktMzAwLCBtb2RlLQo+ID52ZGlzcGxheS0zMDApOwo+IC0JaWd0X2Rpc3BsYXlfY29tbWl0Mihk aXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKPiArCWlndF9kaXNwbGF5X2NvbW1pdDIoZGlzcGxh eSwgQ09NTUlUX0FUT01JQyk7Cj4gwqAKPiDCoAlpZiAocHJpbWFyeV9wbGFuZV9zY2FsaW5nKSB7 Cj4gwqAJCS8qIFN3aXRjaCBzY2FsZXIgZnJvbSBwbGFuZSAxIHRvIHBsYW5lIDIgKi8KPiAtCQlp Z3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYjEsIGQtPnBsYW5lMSwgMCwgMCk7Cj4gLQkJaWd0X2Zi X3NldF9zaXplKCZkLT5mYjEsIGQtPnBsYW5lMSwgZC0+ZmIxLndpZHRoLCBkLQo+ID5mYjEuaGVp Z2h0KTsKPiArCQlpZ3RfZmJfc2V0X3Bvc2l0aW9uKCZkLT5mYlswXSwgZC0+cGxhbmUxLCAwLCAw KTsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzBdLCBkLT5wbGFuZTEsIGQtCj4gPmZiWzBd LndpZHRoLCBkLT5mYlswXS5oZWlnaHQpOwo+IMKgCQlpZ3RfcGxhbmVfc2V0X3Bvc2l0aW9uKGQt PnBsYW5lMSwgMCwgMCk7Cj4gwqAJCWlndF9wbGFuZV9zZXRfc2l6ZShkLT5wbGFuZTEsIG1vZGUt PmhkaXNwbGF5LCBtb2RlLQo+ID52ZGlzcGxheSk7Cj4gwqAKPiAtCQlpZ3RfZmJfc2V0X3Bvc2l0 aW9uKCZkLT5mYjIsIGQtPnBsYW5lMiwgMTAwLCAxMDApOwo+IC0JCWlndF9mYl9zZXRfc2l6ZSgm ZC0+ZmIyLCBkLT5wbGFuZTIsIGQtPmZiMi53aWR0aC0KPiA1MDAsZC0+ZmIyLmhlaWdodC01MDAp Owo+ICsJCWlndF9mYl9zZXRfcG9zaXRpb24oJmQtPmZiWzFdLCBkLT5wbGFuZTIsIDEwMCwgMTAw KTsKPiArCQlpZ3RfZmJfc2V0X3NpemUoJmQtPmZiWzFdLCBkLT5wbGFuZTIsIGQtCj4gPmZiWzFd LndpZHRoLTUwMCxkLT5mYlsxXS5oZWlnaHQtNTAwKTsKPiDCoAkJaWd0X3BsYW5lX3NldF9wb3Np dGlvbihkLT5wbGFuZTIsIDEwMCwgMTAwKTsKPiDCoAkJaWd0X3BsYW5lX3NldF9zaXplKGQtPnBs YW5lMiwgbW9kZS0+aGRpc3BsYXktMjAwLAo+IG1vZGUtPnZkaXNwbGF5LTIwMCk7Cj4gLQkJaWd0 X2Rpc3BsYXlfY29tbWl0MihkaXNwbGF5LCBDT01NSVRfVU5JVkVSU0FMKTsKPiArCQlpZ3RfZGlz cGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9BVE9NSUMpOwo+IMKgCX0KPiAtCj4gLWNsZWFu dXA6Cj4gLQkvKiBiYWNrIHRvIHNpbmdsZSBwbGFuZSBtb2RlICovCj4gLQlpZ3RfcGxhbmVfc2V0 X2ZiKGQtPnBsYW5lMiwgTlVMTCk7Cj4gLQlpZ3RfcGxhbmVfc2V0X2ZiKGQtPnBsYW5lMywgTlVM TCk7Cj4gLQlpZ3RfZGlzcGxheV9jb21taXQyKGRpc3BsYXksIENPTU1JVF9VTklWRVJTQUwpOwo+ IC0KPiAtCWNsZWFudXBfY3J0YyhkLCBvdXRwdXQsIGQtPnBsYW5lMSk7Cj4gwqB9Cj4gwqAKPiDC oGlndF9tYWluCj4gQEAgLTMxNiw2ICsyNzgsNyBAQCBpZ3RfbWFpbgo+IMKgCQlpZ3RfcmVxdWly ZV9waXBlX2NyYyhkYXRhLmRybV9mZCk7Cj4gwqAJCWlndF9kaXNwbGF5X2luaXQoJmRhdGEuZGlz cGxheSwgZGF0YS5kcm1fZmQpOwo+IMKgCQlkYXRhLmRldmlkID0gaW50ZWxfZ2V0X2RybV9kZXZp ZChkYXRhLmRybV9mZCk7Cj4gKwkJaWd0X3JlcXVpcmUoZGF0YS5kaXNwbGF5LmlzX2F0b21pYyk7 Cj4gwqAJfQo+IMKgCj4gwqAJZm9yX2VhY2hfcGlwZV9zdGF0aWMocGlwZSkgaWd0X3N1YnRlc3Rf Z3JvdXAgewotLSAKTWlrYSBLYWhvbGEgLSBJbnRlbCBPVEMKCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fCkludGVsLWdmeCBtYWlsaW5nIGxpc3QKSW50ZWwt Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=