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 C22416E059 for ; Mon, 4 Feb 2019 17:06:24 +0000 (UTC) References: <20190201111544.7920-1-maarten.lankhorst@linux.intel.com> <20190201111544.7920-2-maarten.lankhorst@linux.intel.com> <57ec6cf6-e675-e068-dd21-c43cfb3e0003@intel.com> From: Maarten Lankhorst Message-ID: Date: Mon, 4 Feb 2019 18:06:21 +0100 MIME-Version: 1.0 In-Reply-To: <57ec6cf6-e675-e068-dd21-c43cfb3e0003@intel.com> Content-Language: en-US Subject: Re: [igt-dev] [PATCH i-g-t 2/4] lib/igt_fb: Add support for P01x formats 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: "Sharma, Swati2" Cc: igt-dev@lists.freedesktop.org List-ID: T3AgMDQtMDItMjAxOSBvbSAxNDoyMiBzY2hyZWVmIFNoYXJtYSwgU3dhdGkyOgo+Cj4gT24gMDEt RmViLTE5IDQ6NDUgUE0sIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+PiBUaGUgUDAxeCBmb3Jt YXRzIGFyZSBwbGFuYXIgMTYgYml0cyBwZXIgY29tcG9uZW50LCB3aXRoIHRoZSB1bnVzZWQgbG93 ZXIgYml0cyBzZXQgdG8gMC4KPj4gVGhpcyBtZWFucyB0aGV5IGNhbiBhbGwgYmUgY29udmVydGVk IHRoZSBzYW1lIHdheS4gT25seSB0aGUgcmFuZ2UgaXMgc2xpZ2h0bHkgZGlmZmVyZW50LAo+PiBh bmQgdGhpcyBpcyBoYW5kbGVkIGluIHRoZSBjb2xvcl9lbmNvZGluZyBpbXBsZW1lbnRhdGlvbi4K Pj4KPj4gVGhpcyByZXF1aXJlcyBjYWlybyAxLjE3LjIgYW5kIHBpeG1hbiAwLjM2LiBUaGlzIHdv cmtzIGJ1dCBkb2Vzbid0IGdpdmUgZXh0cmEgcHJlY2lzaW9uLgo+PiBGb3IgbW9yZSB0aGFuIDgg Yml0cyBwcmVjaXNpb24gYSBmZXcgbW9yZSBwYXRjaGVzIGFyZSByZXF1aXJlZCB0byBwaXhtYW4s IHBlbmRpbmcgcmV2aWV3Ogo+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZl cy9waXhtYW4vMjAxOS1KYW51YXJ5LzAwNDgxNS5odG1sCj4+IGh0dHBzOi8vbGlzdHMuZnJlZWRl c2t0b3Aub3JnL2FyY2hpdmVzL3BpeG1hbi8yMDE5LUphbnVhcnkvMDA0ODA5Lmh0bWwKPj4KPj4g T25jZSB0aG9zZSBhcmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJl bGVhc2UgZm9yIGJldHRlciBwcmVjaXNpb24uCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IE1hYXJ0ZW4g TGFua2hvcnN0IDxtYWFydGVuLmxhbmtob3JzdEBsaW51eC5pbnRlbC5jb20+Cj4+IC0tLQo+PiDC oCBjb25maWd1cmUuYWPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDQg Ky0KPj4gwqAgaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggfMKgIDEwICsrCj4+IMKgIGxp Yi9pZ3RfY29sb3JfZW5jb2RpbmcuY8KgwqDCoMKgwqAgfMKgwqAgNCArCj4+IMKgIGxpYi9pZ3Rf ZmIuY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCAyMDUgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKystLQo+PiDCoCBsaWIvaWd0X2ZiLmjCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKwo+PiDCoCBtZXNvbi5idWlsZMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoCA0ICstCj4+IMKgIDYgZmlsZXMgY2hhbmdl ZCwgMjE4IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQo+Pgo+PiBkaWZmIC0tZ2l0IGEv Y29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCj4+IGluZGV4IGI0NmYwMjRmODc1YS4uMzM2YTA1 YmIzZjBkIDEwMDY0NAo+PiAtLS0gYS9jb25maWd1cmUuYWMKPj4gKysrIGIvY29uZmlndXJlLmFj Cj4+IEBAIC0xMzYsMTAgKzEzNiwxMCBAQCBmaQo+PiDCoCBQS0dfQ0hFQ0tfTU9EVUxFUyhYUkFO RFIsIHhyYW5kciA+PSAxLjMsIEFDX0RFRklORShIQVZFX1hSQU5EUiwgMSwgW0hhdmUgbGliWHJh bmRyXSksIFtoYXZlX3hyYW5kcj1ub10pCj4+IMKgIMKgICMgZm9yIHRlc3RkaXNwbGF5Cj4+IC1Q S0dfQ0hFQ0tfTU9EVUxFUyhDQUlSTywgW2NhaXJvID49IDEuMTIuMF0pCj4+ICtQS0dfQ0hFQ0tf TU9EVUxFUyhDQUlSTywgW2NhaXJvID49IDEuMTcuMl0pCj4+IMKgIFBLR19DSEVDS19NT0RVTEVT KExJQlVERVYsIFtsaWJ1ZGV2XSkKPj4gwqAgUEtHX0NIRUNLX01PRFVMRVMoR0xJQiwgW2dsaWIt Mi4wXSkKPj4gLVBLR19DSEVDS19NT0RVTEVTKFBJWE1BTiwgW3BpeG1hbi0xXSkKPj4gK1BLR19D SEVDS19NT0RVTEVTKFBJWE1BTiwgW3BpeG1hbi0xID49IDAuMzZdKQo+PiDCoCBQS0dfQ0hFQ0tf TU9EVUxFUyhHU0wsIFtnc2xdLCBbZ3NsPXllc10sIFtnc2w9bm9dKQo+PiDCoCBBTV9DT05ESVRJ T05BTChIQVZFX0dTTCwgW3Rlc3QgIngkZ3NsIiA9IHh5ZXNdKQo+PiDCoCBkaWZmIC0tZ2l0IGEv aW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggYi9pbmNsdWRlL2RybS11YXBpL2RybV9mb3Vy Y2MuaAo+PiBpbmRleCA0ZGRmNzU0YmFiMDkuLmM5YTVlNTc4NzAzMSAxMDA2NDQKPj4gLS0tIGEv aW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKPj4gKysrIGIvaW5jbHVkZS9kcm0tdWFwaS9k cm1fZm91cmNjLmgKPj4gQEAgLTE5NSw2ICsxOTUsMTYgQEAgZXh0ZXJuICJDIiB7Cj4+IMKgICNk ZWZpbmUgRFJNX0ZPUk1BVF9OVjI0wqDCoMKgwqDCoMKgwqAgZm91cmNjX2NvZGUoJ04nLCAnVics ICcyJywgJzQnKSAvKiBub24tc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSAqLwo+PiDCoCAjZGVmaW5l IERSTV9GT1JNQVRfTlY0MsKgwqDCoMKgwqDCoMKgIGZvdXJjY19jb2RlKCdOJywgJ1YnLCAnNCcs ICcyJykgLyogbm9uLXN1YnNhbXBsZWQgQ2I6Q3IgcGxhbmUgKi8KPj4gwqAgKy8qCj4+ICsgKiAy IHBsYW5lIFlDYkNyCj4+ICsgKiBpbmRleCAwID0gWSBwbGFuZSwgWzE1OjBdIFkgbGl0dGxlIGVu ZGlhbiB3aGVyZSBQeHh4IGluZGljYXRlCj4+ICsgKiBjb21wb25lbnQgeHh4IG1zYiBZIFt4eHg6 MTYteHh4XQo+PiArICogaW5kZXggMSA9IENyOkNiIHBsYW5lLCBbMzE6MF0gQ3I6Q2IgbGl0dGxl IGVuZGlhbiBbeHh4OjE2LXh4eDp4eHg6MTYteHh4XQo+PiArICovCj4+ICsjZGVmaW5lIERSTV9G T1JNQVRfUDAxMMKgwqDCoMKgwqDCoMKgIGZvdXJjY19jb2RlKCdQJywgJzAnLCAnMScsICcwJykg LyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDEwIGJpdCBwZXIgY2hhbm5lbCAqLwo+PiAr I2RlZmluZSBEUk1fRk9STUFUX1AwMTLCoMKgwqDCoMKgwqDCoCBmb3VyY2NfY29kZSgnUCcsICcw JywgJzEnLCAnMicpIC8qIDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMiBiaXQgcGVyIGNo YW5uZWwgKi8KPj4gKyNkZWZpbmUgRFJNX0ZPUk1BVF9QMDE2wqDCoMKgwqDCoMKgwqAgZm91cmNj X2NvZGUoJ1AnLCAnMCcsICcxJywgJzYnKSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSwg MTYgYml0IHBlciBjaGFubmVsICovCj4+ICsKPj4gwqAgLyoKPj4gwqDCoCAqIDMgcGxhbmUgWUNi Q3IKPj4gwqDCoCAqIGluZGV4IDA6IFkgcGxhbmUsIFs3OjBdIFkKPj4gZGlmZiAtLWdpdCBhL2xp Yi9pZ3RfY29sb3JfZW5jb2RpbmcuYyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+PiBpbmRl eCA0Y2JlMThlMjE3ZTMuLmI3YTEyYTFlMDdmNyAxMDA2NDQKPj4gLS0tIGEvbGliL2lndF9jb2xv cl9lbmNvZGluZy5jCj4+ICsrKyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+PiBAQCAtMTM1 LDExICsxMzUsMTUgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQg ewo+PiDCoMKgwqDCoMKgIGZsb2F0IG9mc195LCBtYXhfeSwgb2ZzX2NiY3IsIG1pZF9jYmNyLCBt YXhfY2JjcjsKPj4gwqAgfSBmb3JtYXRzW10gPSB7Cj4+IMKgwqDCoMKgwqAgeyBEUk1fRk9STUFU X1hSR0I4ODg4LCAyNTUuZiwgfSwKPj4gK8KgwqDCoCB7IElHVF9GT1JNQVRfRkxPQVQsIDEuZiwg fSwKPj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfTlYxMiwgMjU1LmYsIDE2LmYsIDIzNS5mLCAx Ni5mLCAxMjguZiwgMjQwLmYgfSwKPj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfWVVZViwgMjU1 LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPj4gwqDCoMKgwqDCoCB7IERS TV9GT1JNQVRfWVZZVSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwK Pj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfVVlWWSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5m LCAxMjguZiwgMjQwLmYgfSwKPj4gwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRfVllVWSwgMjU1LmYs IDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPj4gK8KgwqDCoCB7IERSTV9GT1JN QVRfUDAxMCwgNjU0NzIuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQw LmYgfSwKPj4gK8KgwqDCoCB7IERSTV9GT1JNQVRfUDAxMiwgNjU1MjAuZiwgNDA5Ni5mLCA2MDE2 MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYgfSwKPj4gK8KgwqDCoCB7IERSTV9GT1JNQVRf UDAxNiwgNjU1MzUuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYsIDMyNzY4LmYsIDYxNDQwLmYg fSwKPj4gwqAgfTsKPj4gwqAgwqAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19m b3JtYXQgKmxvb2t1cF9mb3VyY2ModWludDMyX3QgZm91cmNjKQo+PiBkaWZmIC0tZ2l0IGEvbGli L2lndF9mYi5jIGIvbGliL2lndF9mYi5jCj4+IGluZGV4IGE5NzFhZWJiMzZiMy4uOGJkMDQyMGZj MmU0IDEwMDY0NAo+PiAtLS0gYS9saWIvaWd0X2ZiLmMKPj4gKysrIGIvbGliL2lndF9mYi5jCj4+ IEBAIC0xNTEsNiArMTUxLDIyIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZm9ybWF0X2Rlc2Nfc3Ry dWN0IHsKPj4gwqDCoMKgwqDCoMKgwqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjI0LAo+ PiDCoMKgwqDCoMKgwqDCoCAubnVtX3BsYW5lcyA9IDEsIC5wbGFuZV9icHAgPSB7IDE2LCB9LAo+ PiDCoMKgwqDCoMKgIH0sCj4+ICvCoMKgwqAgeyAubmFtZSA9ICJQMDEwIiwgLmRlcHRoID0gLTEs IC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTAsCj4+ICvCoMKgwqDCoMKgIC5jYWlyb19pZCA9IENB SVJPX0ZPUk1BVF9SR0I5NkYsCj4+ICvCoMKgwqDCoMKgIC5udW1fcGxhbmVzID0gMiwgLnBsYW5l X2JwcCA9IHsgMTYsIDMyIH0sCj4+ICvCoMKgwqAgfSwKPj4gK8KgwqDCoCB7IC5uYW1lID0gIlAw MTIiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMiwKPj4gK8KgwqDCoMKg wqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKPj4gK8KgwqDCoMKgwqAgLm51bV9w bGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKPj4gK8KgwqDCoCB9LAo+PiArwqDC oMKgIHsgLm5hbWUgPSAiUDAxNiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9Q MDE2LAo+PiArwqDCoMKgwqDCoCAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAo+PiAr wqDCoMKgwqDCoCAubnVtX3BsYW5lcyA9IDIsIC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAo+PiAr wqDCoMKgIH0sCj4+ICvCoMKgwqAgeyAubmFtZSA9ICJJR1QtRkxPQVQiLCAuZGVwdGggPSAtMSwg LmRybV9pZCA9IElHVF9GT1JNQVRfRkxPQVQsCj4+ICvCoMKgwqDCoMKgIC5jYWlyb19pZCA9IENB SVJPX0ZPUk1BVF9JTlZBTElELAo+PiArwqDCoMKgwqDCoCAubnVtX3BsYW5lcyA9IDEsIC5wbGFu ZV9icHAgPSB7IDEyOCB9LAo+PiArwqDCoMKgIH0sCj4+IMKgIH07Cj4+IMKgICNkZWZpbmUgZm9y X2VhY2hfZm9ybWF0KGYpwqDCoMKgIFwKPj4gwqDCoMKgwqDCoCBmb3IgKGYgPSBmb3JtYXRfZGVz YzsgZiAtIGZvcm1hdF9kZXNjIDwgQVJSQVlfU0laRShmb3JtYXRfZGVzYyk7IGYrKykKPj4gQEAg LTIzOSwxMCArMjU1LDE3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxlX3NpemUoaW50IGZkLCB1aW50 NjRfdCB0aWxpbmcsIGludCBmYl9icHAsCj4+IMKgIMKgIHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFu ZV93aWR0aChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQo+PiDCoCB7Cj4+IC3C oMKgwqAgaWYgKGZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAx KQo+PiAtwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERJVl9ST1VORF9VUChmYi0+d2lkdGgsIDIpOwo+ PiAtCj4+IC3CoMKgwqAgcmV0dXJuIGZiLT53aWR0aDsKPj4gK8KgwqDCoCBzd2l0Y2ggKGZiLT5k cm1fZm9ybWF0KSB7Cj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4+ICvCoMKgwqAg Y2FzZSBEUk1fRk9STUFUX1AwMTI6Cj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+ ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX05WMTI6Cj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocGxh bmUgPT0gMSkKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERJVl9ST1VORF9VUChm Yi0+d2lkdGgsIDIpOwo+PiArwqDCoMKgwqDCoMKgwqAgLyogZmFsbC10aHJ1ICovCj4+ICvCoMKg wqAgZGVmYXVsdDoKPj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYi0+d2lkdGg7Cj4+ICvCoMKg wqAgfQo+PiDCoCB9Cj4+IMKgIMKgIHN0YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV9icHAoY29uc3Qg c3RydWN0IGlndF9mYiAqZmIsIGludCBwbGFuZSkKPj4gQEAgLTI1NCwxMCArMjc3LDE3IEBAIHN0 YXRpYyB1bnNpZ25lZCBmYl9wbGFuZV9icHAoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIsIGludCBw bGFuZSkKPj4gwqAgwqAgc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX2hlaWdodChjb25zdCBzdHJ1 Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQo+PiDCoCB7Cj4+IC3CoMKgwqAgaWYgKGZiLT5kcm1f Zm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAmJiBwbGFuZSA9PSAxKQo+PiAtwqDCoMKgwqDCoMKg wqAgcmV0dXJuIERJVl9ST1VORF9VUChmYi0+aGVpZ2h0LCAyKTsKPj4gLQo+PiAtwqDCoMKgIHJl dHVybiBmYi0+aGVpZ2h0Owo+PiArwqDCoMKgIHN3aXRjaCAoZmItPmRybV9mb3JtYXQpIHsKPj4g K8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxMDoKPj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRf UDAxMjoKPj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxNjoKPj4gK8KgwqDCoCBjYXNlIERS TV9GT1JNQVRfTlYxMjoKPj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwbGFuZSA9PSAxKQo+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRElWX1JPVU5EX1VQKGZiLT5oZWlnaHQsIDIpOwo+ PiArwqDCoMKgwqDCoMKgwqAgLyogZmFsbC10aHJ1ICovCj4+ICvCoMKgwqAgZGVmYXVsdDoKPj4g K8KgwqDCoMKgwqDCoMKgIHJldHVybiBmYi0+aGVpZ2h0Owo+PiArwqDCoMKgIH0KPj4gwqAgfQo+ PiDCoCDCoCBzdGF0aWMgaW50IGZiX251bV9wbGFuZXMoY29uc3Qgc3RydWN0IGlndF9mYiAqZmIp Cj4+IEBAIC01MTYsNiArNTQ2LDEzIEBAIHN0YXRpYyBpbnQgY3JlYXRlX2JvX2Zvcl9mYihzdHJ1 Y3QgaWd0X2ZiICpmYikKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZ1bGxfcmFuZ2UgPyAweDAwODAwMDgwIDogMHgxMDgwMTA4MCwKPj4gwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZiLT5zdHJpZGVzWzBdICogZmItPnBsYW5l X2hlaWdodFswXSAvIHNpemVvZih3Y2hhcl90KSk7Cj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgYnJlYWs7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZP Uk1BVF9QMDEwOgo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAx MjoKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgd21lbXNldChwdHIsIGZ1bGxfcmFuZ2UgPyAw IDogMHgxMDAwMTAwMCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGZiLT5vZmZzZXRzWzFdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzFdLCAweDgwMDA4MDAwLAo+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRElWX1JPVU5EX1VQKGZi LT5oZWlnaHQsMikgKiBmYi0+c3RyaWRlc1sxXSAvIHNpemVvZih3Y2hhcl90KSk7Cj4+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZ2Vt X211bm1hcChwdHIsIGZiLT5zaXplKTsKPj4gwqAgQEAgLTE0NjMsNiArMTUwMCw3IEBAIHN0cnVj dCBmYl9jb252ZXJ0X2JsaXRfdXBsb2FkIHsKPj4gwqAgfTsKPj4gwqAgwqAgc3RhdGljIHZvaWQg KmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihpbnQgZmQsCj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGRybV9m b3JtYXQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHVuc2lnbmVkIGludCB3aWR0aCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGhlaWdodCwKPj4g wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGlndF9mYiAqc2hhZG93KQo+PiBAQCAtMTQ3Miw3ICsxNTEwLDcgQEAgc3RhdGljIHZv aWQgKmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihpbnQgZmQsCj4+IMKgwqDCoMKg wqAgaWd0X2Fzc2VydChzaGFkb3cpOwo+PiDCoCDCoMKgwqDCoMKgIGZiX2luaXQoc2hhZG93LCBm ZCwgd2lkdGgsIGhlaWdodCwKPj4gLcKgwqDCoMKgwqDCoMKgIERSTV9GT1JNQVRfWFJHQjg4ODgs IExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZm9ybWF0 LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+PiDCoMKgwqDCoMKgwqDCoMKgwqAgSUdUX0NP TE9SX1lDQkNSX0JUNzA5LCBJR1RfQ09MT1JfWUNCQ1JfTElNSVRFRF9SQU5HRSk7Cj4+IMKgIMKg wqDCoMKgwqAgc2hhZG93LT5zdHJpZGVzWzBdID0gQUxJR04od2lkdGggKiBzaGFkb3ctPnBsYW5l X2JwcFswXSwgMTYpOwo+PiBAQCAtMTk4Myw2ICsyMDIxLDEyNCBAQCBzdGF0aWMgdm9pZCBjb252 ZXJ0X3JnYjI0X3RvX3l1eXYoc3RydWN0IGZiX2NvbnZlcnQgKmN2dCkKPj4gwqDCoMKgwqDCoCB9 Cj4+IMKgIH0KPj4gwqAgK3N0YXRpYyB2b2lkIHJlYWRfcmdiZihzdHJ1Y3QgaWd0X3ZlYzQgKnJn YiwgY29uc3QgZmxvYXQgKnJnYjI0KQo+PiArewo+PiArwqDCoMKgIHJnYi0+ZFswXSA9IHJnYjI0 WzBdOwo+PiArwqDCoMKgIHJnYi0+ZFsxXSA9IHJnYjI0WzFdOwo+PiArwqDCoMKgIHJnYi0+ZFsy XSA9IHJnYjI0WzJdOwo+PiArwqDCoMKgIHJnYi0+ZFszXSA9IDEuMGY7Cj4+ICt9Cj4+ICsKPj4g K3N0YXRpYyB2b2lkIHdyaXRlX3JnYmYoZmxvYXQgKnJnYjI0LCBjb25zdCBzdHJ1Y3QgaWd0X3Zl YzQgKnJnYikKPj4gK3sKPj4gK8KgwqDCoCByZ2IyNFswXSA9IHJnYi0+ZFswXTsKPj4gK8KgwqDC oCByZ2IyNFsxXSA9IHJnYi0+ZFsxXTsKPj4gK8KgwqDCoCByZ2IyNFsyXSA9IHJnYi0+ZFsyXTsK Pj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29udmVydF9wMDFYX3RvX2Zsb2F0KHN0cnVjdCBm Yl9jb252ZXJ0ICpjdnQpCj4+ICt7Cj4+ICvCoMKgwqAgaW50IGksIGo7Cj4+ICvCoMKgwqAgc3Ry dWN0IGlndF9mYiAqZmJfcDAxeCA9IGN2dC0+c3JjLmZiOwo+PiArwqDCoMKgIHN0cnVjdCBpZ3Rf ZmIgKmZiX2Zsb2F0ID0gY3Z0LT5kc3QuZmI7Cj4+ICvCoMKgwqAgY29uc3QgdWludDE2X3QgKnks ICp1djsKPj4gK8KgwqDCoCB2b2lkICpidWYgPSBjb252ZXJ0X3NyY19nZXQoY3Z0KTsKPj4gK8Kg wqDCoCBmbG9hdCAqcHRyID0gY3Z0LT5kc3QucHRyICsgZmJfZmxvYXQtPm9mZnNldHNbMF07Cj4+ ICvCoMKgwqAgdW5zaWduZWQgZmxvYXRfc3RyaWRlID0gZmJfZmxvYXQtPnN0cmlkZXNbMF0gLyBz aXplb2YoKnB0cik7Cj4+ICvCoMKgwqAgdW5zaWduZWQgcGxhbmFyX3N0cmlkZSA9IGZiX3AwMXgt PnN0cmlkZXNbMF0gLyBzaXplb2YoKnkpOwo+PiArwqDCoMKgIHN0cnVjdCBpZ3RfbWF0NCBtID0g aWd0X3ljYmNyX3RvX3JnYl9tYXRyaXgoZmJfcDAxeC0+ZHJtX2Zvcm1hdCwKPj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYl9mbG9hdC0+ ZHJtX2Zvcm1hdCwKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBmYl9wMDF4LT5jb2xvcl9lbmNvZGluZywKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYl9wMDF4LT5jb2xvcl9y YW5nZSk7Cj4+ICsKPj4gK8KgwqDCoCB5ID0gYnVmICsgZmJfcDAxeC0+b2Zmc2V0c1swXTsKPj4g K8KgwqDCoCB1diA9IGJ1ZiArIGZiX3AwMXgtPm9mZnNldHNbMV07Cj4+ICsKPj4gK8KgwqDCoCBm b3IgKGkgPSAwOyBpIDwgZmJfcDAxeC0+aGVpZ2h0IC8gMjsgaSsrKSB7Cj4+ICvCoMKgwqDCoMKg wqDCoCBmb3IgKGogPSAwOyBqIDwgZmJfcDAxeC0+d2lkdGggLyAyOyBqKyspIHsKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgLyogQ29udmVydCAyeDIgcGl4ZWwgYmxvY2tzICovCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBpZ3RfdmVjNCB5dXZbNF07Cj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBpZ3RfdmVjNCByZ2JbNF07Cj4+ICsKPj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqAgeXV2WzBdLmRbMF0gPSB5W2ogKiAyICsgMF07Cj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHl1dlsxXS5kWzBdID0geVtqICogMiArIDFdOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB5dXZbMl0uZFswXSA9IHlbaiAqIDIgKyAwICsgcGxhbmFyX3N0cmlkZV07Cj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlszXS5kWzBdID0geVtqICogMiArIDEgKyBwbGFuYXJf c3RyaWRlXTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5dXZbMF0uZFsxXSA9IHl1 dlsxXS5kWzFdID0geXV2WzJdLmRbMV0gPSB5dXZbM10uZFsxXSA9IHV2W2ogKiAyICsgMF07Cj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlswXS5kWzJdID0geXV2WzFdLmRbMl0gPSB5dXZb Ml0uZFsyXSA9IHl1dlszXS5kWzJdID0gdXZbaiAqIDIgKyAxXTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgeXV2WzBdLmRbM10gPSB5dXZbMV0uZFszXSA9IHl1dlsyXS5kWzNdID0geXV2WzNd LmRbM10gPSAxLjBmOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJnYlswXSA9IGln dF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmeXV2WzBdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmdiWzFdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbMV0pOwo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCByZ2JbMl0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnl1dlsy XSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJnYlszXSA9IGlndF9tYXRyaXhfdHJhbnNm b3JtKCZtLCAmeXV2WzNdKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZV9y Z2JmKCZwdHJbaiAqIDYgKyAwXSwgJnJnYlswXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHdyaXRlX3JnYmYoJnB0cltqICogNiArIDNdLCAmcmdiWzFdKTsKPj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgd3JpdGVfcmdiZigmcHRyW2ogKiA2ICsgMCArIGZsb2F0X3N0cmlkZV0sICZyZ2Jb Ml0pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB3cml0ZV9yZ2JmKCZwdHJbaiAqIDYgKyAz ICsgZmxvYXRfc3RyaWRlXSwgJnJnYlszXSk7Cj4+ICvCoMKgwqDCoMKgwqDCoCB9Cj4+ICsKPj4g K8KgwqDCoMKgwqDCoMKgIHB0ciArPSAyICogZmxvYXRfc3RyaWRlOwo+PiArwqDCoMKgwqDCoMKg wqAgeSArPSAyICogcGxhbmFyX3N0cmlkZTsKPj4gK8KgwqDCoMKgwqDCoMKgIHV2ICs9IHBsYW5h cl9zdHJpZGU7Cj4+ICvCoMKgwqAgfQo+PiArCj4+ICvCoMKgwqAgY29udmVydF9zcmNfcHV0KGN2 dCwgYnVmKTsKPj4gK30KPj4gKwo+PiArc3RhdGljIHZvaWQgY29udmVydF9mbG9hdF90b19wMDFY KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCj4+ICt7Cj4+ICvCoMKgwqAgaW50IGksIGo7Cj4+ICvC oMKgwqAgc3RydWN0IGlndF9mYiAqZmJfZmxvYXQgPSBjdnQtPnNyYy5mYjsKPj4gK8KgwqDCoCBz dHJ1Y3QgaWd0X2ZiICpmYl9wMDF4ID0gY3Z0LT5kc3QuZmI7Cj4+ICvCoMKgwqAgdWludDE2X3Qg KnkgPSBjdnQtPmRzdC5wdHIgKyBmYl9wMDF4LT5vZmZzZXRzWzBdOwo+PiArwqDCoMKgIHVpbnQx Nl90ICp1diA9IGN2dC0+ZHN0LnB0ciArIGZiX3AwMXgtPm9mZnNldHNbMV07Cj4+ICvCoMKgwqAg Y29uc3QgZmxvYXQgKnB0ciA9IGN2dC0+c3JjLnB0ciArIGZiX2Zsb2F0LT5vZmZzZXRzWzBdOwo+ PiArwqDCoMKgIHVuc2lnbmVkIGZsb2F0X3N0cmlkZSA9IGZiX2Zsb2F0LT5zdHJpZGVzWzBdIC8g c2l6ZW9mKCpwdHIpOwo+PiArwqDCoMKgIHVuc2lnbmVkIHBsYW5hcl9zdHJpZGUgPSBmYl9wMDF4 LT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp5KTsKPj4gK8KgwqDCoCBzdHJ1Y3QgaWd0X21hdDQgbSA9 IGlndF9yZ2JfdG9feWNiY3JfbWF0cml4KGZiX2Zsb2F0LT5kcm1fZm9ybWF0LAo+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZiX3AwMXgt PmRybV9mb3JtYXQsCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZmJfcDAxeC0+Y29sb3JfZW5jb2RpbmcsCj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmJfcDAxeC0+Y29sb3Jf cmFuZ2UpOwo+PiArCj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IGZiX3AwMXgtPmhlaWdodCAv IDI7IGkrKykgewo+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChqID0gMDsgaiA8IGZiX3AwMXgtPndp ZHRoIC8gMjsgaisrKSB7Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIENvbnZlcnQgMngy IHBpeGVsIGJsb2NrcyAqLwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaWd0X3Zl YzQgcmdiWzRdOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgaWd0X3ZlYzQgeXV2 WzRdOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlYWRfcmdiZigmcmdiWzBdLCAm cHRyW2ogKiA2ICsgMF0pOwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZWFkX3JnYmYoJnJn YlsxXSwgJnB0cltqICogNiArIDNdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVhZF9y Z2JmKCZyZ2JbMl0sICZwdHJbaiAqIDYgKyAwICsgZmxvYXRfc3RyaWRlXSk7Cj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJlYWRfcmdiZigmcmdiWzNdLCAmcHRyW2ogKiA2ICsgMyArIGZsb2F0 X3N0cmlkZV0pOwo+PiArCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlswXSA9IGlndF9t YXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiWzBdKTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg eXV2WzFdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZyZ2JbMV0pOwo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB5dXZbMl0gPSBpZ3RfbWF0cml4X3RyYW5zZm9ybSgmbSwgJnJnYlsyXSk7 Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHl1dlszXSA9IGlndF9tYXRyaXhfdHJhbnNmb3Jt KCZtLCAmcmdiWzNdKTsKPj4gKwo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB5W2ogKiAyICsg MF0gPSB5dXZbMF0uZFswXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeVtqICogMiArIDFd ID0geXV2WzFdLmRbMF07Cj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHlbaiAqIDIgKyAwICsg cGxhbmFyX3N0cmlkZV0gPSB5dXZbMl0uZFswXTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg eVtqICogMiArIDEgKyBwbGFuYXJfc3RyaWRlXSA9IHl1dlszXS5kWzBdOwo+PiArCj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIC8qCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKiBXZSBh c3N1bWUgdGhlIE1QRUcyIGNocm9tYSBzaXRpbmcgY29udmVudGlvbiwgd2hlcmUKPj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqIHBpeGVsIGNlbnRlciBmb3IgQ2InQ3InIGlzIGJldHdlZW4g dGhlIGxlZnQgdG9wIGFuZAo+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICogYm90dG9tIHBp eGVsIGluIGEgMngyIGJsb2NrLCBzbyB0YWtlIHRoZSBhdmVyYWdlLgo+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgICovCj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHV2W2ogKiAyICsgMF0g PSAoeXV2WzBdLmRbMV0gKyB5dXZbMl0uZFsxXSkgLyAyLjBmOwo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB1dltqICogMiArIDFdID0gKHl1dlswXS5kWzJdICsgeXV2WzJdLmRbMl0pIC8gMi4w ZjsKPj4gK8KgwqDCoMKgwqDCoMKgIH0KPj4gKwo+PiArwqDCoMKgwqDCoMKgwqAgcHRyICs9IDIg KiBmbG9hdF9zdHJpZGU7Cj4+ICvCoMKgwqDCoMKgwqDCoCB5ICs9IDIgKiBwbGFuYXJfc3RyaWRl Owo+PiArwqDCoMKgwqDCoMKgwqAgdXYgKz0gcGxhbmFyX3N0cmlkZTsKPj4gK8KgwqDCoCB9Cj4+ ICt9Cj4+ICsKPj4gwqAgc3RhdGljIHZvaWQgY29udmVydF9waXhtYW4oc3RydWN0IGZiX2NvbnZl cnQgKmN2dCkKPj4gwqAgewo+PiDCoMKgwqDCoMKgIHBpeG1hbl9mb3JtYXRfY29kZV90IHNyY19w aXhtYW4gPSBkcm1fZm9ybWF0X3RvX3BpeG1hbihjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCk7Cj4+ IEBAIC0yMDU4LDYgKzIyMTQsMjIgQEAgc3RhdGljIHZvaWQgZmJfY29udmVydChzdHJ1Y3QgZmJf Y29udmVydCAqY3Z0KQo+PiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb252ZXJ0X3JnYjI0 X3RvX3l1eXYoY3Z0KTsKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiDC oMKgwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0gZWxzZSBpZiAoY3Z0LT5kc3QuZmItPmRy bV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCkgewo+PiArwqDCoMKgwqDCoMKgwqAgc3dpdGNo IChjdnQtPnNyYy5mYi0+ZHJtX2Zvcm1hdCkgewo+PiArwqDCoMKgwqDCoMKgwqAgY2FzZSBEUk1f Rk9STUFUX1AwMTA6Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxMjoKPj4g K8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjb252ZXJ0X3AwMVhfdG9fZmxvYXQoY3Z0KTsKPj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiArwqDCoMKgIH0gZWxzZSBpZiAo Y3Z0LT5zcmMuZmItPmRybV9mb3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCkgewo+PiArwqDCoMKg wqDCoMKgwqAgc3dpdGNoIChjdnQtPmRzdC5mYi0+ZHJtX2Zvcm1hdCkgewo+PiArwqDCoMKgwqDC oMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4+ICvCoMKgwqDCoMKgwqDCoCBjYXNlIERSTV9G T1JNQVRfUDAxMjoKPj4gK8KgwqDCoMKgwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDE2Ogo+PiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb252ZXJ0X2Zsb2F0X3RvX3AwMVgoY3Z0KTsKPj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuOwo+PiArwqDCoMKgwqDCoMKgwqAgfQo+PiDCoMKg wqDCoMKgIH0KPj4gwqAgwqDCoMKgwqDCoCBpZ3RfYXNzZXJ0X2YoZmFsc2UsCj4+IEBAIC0yMDk4 LDExICsyMjcwLDE5IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9jYWlyb19zdXJmYWNlX19jb252ZXJ0 KGludCBmZCwgc3RydWN0IGlndF9mYiAqZmIpCj4+IMKgIHsKPj4gwqDCoMKgwqDCoCBzdHJ1Y3Qg ZmJfY29udmVydF9ibGl0X3VwbG9hZCAqYmxpdCA9IG1hbGxvYyhzaXplb2YoKmJsaXQpKTsKPj4g wqDCoMKgwqDCoCBzdHJ1Y3QgZmJfY29udmVydCBjdnQgPSB7IH07Cj4+ICvCoMKgwqAgY29uc3Qg c3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZiA9IGxvb2t1cF9kcm1fZm9ybWF0KGZiLT5kcm1f Zm9ybWF0KTsKPj4gK8KgwqDCoCB1bnNpZ25lZCBkcm1fZm9ybWF0Owo+PiArCj4+ICvCoMKgwqAg aWYgKGYtPmNhaXJvX2lkID09IENBSVJPX0ZPUk1BVF9SR0I5NkYgfHwKPj4gK8KgwqDCoMKgwqDC oMKgIGYtPmNhaXJvX2lkID09IENBSVJPX0ZPUk1BVF9SR0JBMTI4RikKPj4gK8KgwqDCoMKgwqDC oMKgIGRybV9mb3JtYXQgPSBJR1RfRk9STUFUX0ZMT0FUOwo+PiArwqDCoMKgIGVsc2UKPj4gK8Kg wqDCoMKgwqDCoMKgIGRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4ODg4Owo+PiDCoCDCoMKg wqDCoMKgIGlndF9hc3NlcnQoYmxpdCk7Cj4+IMKgwqDCoMKgwqAgYmxpdC0+YmFzZS5mZCA9IGZk Owo+PiDCoMKgwqDCoMKgIGJsaXQtPmJhc2UuZmIgPSBmYjsKPj4gLcKgwqDCoCBibGl0LT5zaGFk b3dfcHRyID0gaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGZkLAo+PiArwqDCoMKg IGJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2NhaXJvX3NoYWRvd19idWZmZXIoZmQs IGRybV9mb3JtYXQsCj4+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZiLT53aWR0aCwKPj4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmIt PmhlaWdodCwKPj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmJsaXQtPnNoYWRvd19mYik7Cj4+IEBAIC0yMTI5LDcg KzIzMDksNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9fY29udmVydChpbnQg ZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQo+PiDCoCDCoMKgwqDCoMKgIGZiLT5jYWlyb19zdXJmYWNl ID0KPj4gwqDCoMKgwqDCoMKgwqDCoMKgIGNhaXJvX2ltYWdlX3N1cmZhY2VfY3JlYXRlX2Zvcl9k YXRhKGJsaXQtPnNoYWRvd19wdHIsCj4+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQ0FJUk9fRk9STUFUX1JHQjI0LAo+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGYtPmNhaXJvX2lk LAo+Cj4gSGkgTWFhcnRlbiwKPgo+IFdpdGggdGhpcyBjaGFuZ2UgZi0+Y2Fpcm9faWQsIGZvciBw aXhlbCBmb3JtYXQgQUIyNCB3aG9zZSBjYWlyb19pZD1DQUlST19GT1JNQVRfSU5WQUxJRCBhbmQg cGl4bWFuX2lkIT1pbnZhbGlkLCB3aGVuIGNhaXJvIHdpbGwgdHJ5IHRvIGNyZWF0ZSBzdXJmYWNl IGl0IHdpbGwgcmV0dXJuIG5vbi16ZXJvIHZhbHVlIGkuZS4gMTYgKENBSVJPX1NUQVRVU19JTlZB TElEX0ZPUk1BVCkuwqAgTWF5IGJlIHNvbWUgY2hhbmdlIHJlcXVpcmVkIGluIGlndF9nZXRfY2Fp cm9fc3VyZmFjZSBpZiBjb25kaXRpb24gb3IgbmVlZCB0byBhc3NpZ24gY2Fpcm8gZm9ybWF0IGZv ciBwaXhlbCBmb3JtYXQgaGF2aW5nIGludmFsaWQgY2Fpcm8gbGlrZSBpdCB3YXMgZWFybGllciA6 LyAKCgpUaGFua3MsIHdpbGwgbWFrZSBzdXJlIHRoYXQgSU5WQUxJRF9GT1JNQVQgaXMgY2F1Z2h0 LiA6KQoKfk1hYXJ0ZW4KCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3Jn Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=