From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by gabe.freedesktop.org (Postfix) with ESMTPS id 3EE2D893E8 for ; Thu, 7 Feb 2019 12:21:03 +0000 (UTC) References: <20190207092136.10659-1-maarten.lankhorst@linux.intel.com> <20190207092136.10659-2-maarten.lankhorst@linux.intel.com> <57b465d0-fcce-7b29-5e47-1cdccc85a08e@gmail.com> From: Juha-Pekka Heikkila Message-ID: <2f85ca13-07eb-1878-da05-a74470e56e15@gmail.com> Date: Thu, 7 Feb 2019 14:20:50 +0200 MIME-Version: 1.0 In-Reply-To: Content-Language: en-US Subject: Re: [igt-dev] [PATCH v2 2/4] lib/igt_fb: Add support for P01x formats, v4. List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: juhapekka.heikkila@gmail.com 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: Maarten Lankhorst , igt-dev@lists.freedesktop.org List-ID: T24gNy4yLjIwMTkgMTQuMTAsIE1hYXJ0ZW4gTGFua2hvcnN0IHdyb3RlOgo+IE9wIDA3LTAyLTIw MTkgb20gMTI6NTIgc2NocmVlZiBKdWhhLVBla2thIEhlaWtraWxhOgo+PiBPbiA3LjIuMjAxOSAx MS4yMSwgTWFhcnRlbiBMYW5raG9yc3Qgd3JvdGU6Cj4+PiBUaGUgUDAxeCBmb3JtYXRzIGFyZSBw bGFuYXIgMTYgYml0cyBwZXIgY29tcG9uZW50LCB3aXRoIHRoZSB1bnVzZWQgbG93ZXIgYml0cyBz ZXQgdG8gMC4KPj4+IFRoaXMgbWVhbnMgdGhleSBjYW4gYWxsIGJlIGNvbnZlcnRlZCB0aGUgc2Ft ZSB3YXkuIE9ubHkgdGhlIHJhbmdlIGlzIHNsaWdodGx5IGRpZmZlcmVudCwKPj4+IGFuZCB0aGlz IGlzIGhhbmRsZWQgaW4gdGhlIGNvbG9yX2VuY29kaW5nIGltcGxlbWVudGF0aW9uLgo+Pj4KPj4+ IFRoaXMgcmVxdWlyZXMgY2Fpcm8gMS4xNy4yIGFuZCBwaXhtYW4gMC4zNi4gVGhpcyB3b3JrcyBi dXQgZG9lc24ndCBnaXZlIGV4dHJhIHByZWNpc2lvbi4KPj4+IEZvciBtb3JlIHRoYW4gOCBiaXRz IHByZWNpc2lvbiBhIGZldyBtb3JlIHBhdGNoZXMgYXJlIHJlcXVpcmVkIHRvIHBpeG1hbiwgcGVu ZGluZyByZXZpZXc6Cj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9w aXhtYW4vMjAxOS1KYW51YXJ5LzAwNDgxNS5odG1sCj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNr dG9wLm9yZy9hcmNoaXZlcy9waXhtYW4vMjAxOS1KYW51YXJ5LzAwNDgwOS5odG1sCj4+Pgo+Pj4g T25jZSB0aG9zZSBhcmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJl bGVhc2UgZm9yIGJldHRlciBwcmVjaXNpb24uCj4+Pgo+Pj4gQ2hhbmdlcyBzaW5jZSB2MToKPj4+ IC0gQWRkIGZhbGxiYWNrIGNvbG9yIGRlZmluaXRpb25zIHdoZW4gY29tcGlsaW5nIG9uIGNhaXJv IHZlcnNpb24gPCAxLjE3LjIuCj4+PiAtIFNraXAgd2hlbiBGQiBjcmVhdGlvbiBmYWlscyBvbiBI RFIgZm9ybWF0cywgaW5zdGVhZCBvZiBmYWlsaW5nLgo+Pj4gQ2hhbmdlcyBzaW5jZSB2MjoKPj4+ IC0gQ29tcGxhaW4gc2xpZ2h0bHkgaGFyZGVyIHdoZW4gcGl4bWFuL2NhaXJvIGFyZSBvdXQgb2Yg ZGF0ZS4KPj4+IC0gQ3JlYXRlIGEgZmIgd2l0aCBhbHBoYSB3aGVuIGNvbnZlcnRpbmcgdG8gcGl4 bWFuIGZvcm1hdHMgd2l0aCBhbHBoYS4KPj4+IC0gT29wcywgcy9waXhtYW5fZm9ybWF0X2NvZGVf dC9jYWlyb19mb3JtYXRfdC8KPj4+IENoYW5nZXMgc2luY2UgdjM6Cj4+PiAtIFJlYmFzZSBvbiB0 b3Agb2YgdXBzdHJlYW0gWVVWIGNoYW5nZXMuCj4+Pgo+Pj4gU2lnbmVkLW9mZi1ieTogTWFhcnRl biBMYW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KPj4+IC0tLQo+ Pj4gIMKgIGNvbmZpZ3VyZS5hY8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKg IDExICstCj4+PiAgwqAgaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmggfMKgIDEwICsrCj4+ PiAgwqAgbGliL2lndF9jb2xvcl9lbmNvZGluZy5jwqDCoMKgwqDCoCB8wqDCoCA0ICsKPj4+ICDC oCBsaWIvaWd0X2ZiLmPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwgMjkzICsr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KPj4+ICDCoCBsaWIvaWd0X2ZiLmjCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgIDYgKwo+Pj4gIMKgIG1lc29uLmJ1 aWxkwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoCAxMCArKwo+Pj4gIMKg IDYgZmlsZXMgY2hhbmdlZCwgMzI5IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCj4+Pgo+ Pj4gZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwo+Pj4gaW5kZXggYjQ2 ZjAyNGY4NzVhLi5hMzMzY2Y4ZDZkYmIgMTAwNjQ0Cj4+PiAtLS0gYS9jb25maWd1cmUuYWMKPj4+ ICsrKyBiL2NvbmZpZ3VyZS5hYwo+Pj4gQEAgLTEzNiwxMCArMTM2LDE3IEBAIGZpCj4+PiAgwqAg UEtHX0NIRUNLX01PRFVMRVMoWFJBTkRSLCB4cmFuZHIgPj0gMS4zLCBBQ19ERUZJTkUoSEFWRV9Y UkFORFIsIDEsIFtIYXZlIGxpYlhyYW5kcl0pLCBbaGF2ZV94cmFuZHI9bm9dKQo+Pj4gIMKgIMKg ICMgZm9yIHRlc3RkaXNwbGF5Cj4+PiAtUEtHX0NIRUNLX01PRFVMRVMoQ0FJUk8sIFtjYWlybyA+ PSAxLjEyLjBdKQo+Pj4gK1BLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbY2Fpcm8gPj0gMS4xNy4y XSwgW10sCj4+PiArwqDCoMKgIFtBQ19NU0dfV0FSTihbQ2Fpcm8gdG9vIG9sZCwgSERSIGZvcm1h dHMgbm90IGF2YWlsYWJsZS4gVXBncmFkZSB0byBjYWlybyAxLjE3LjJdKQo+Pj4gK8KgwqDCoCBQ S0dfQ0hFQ0tfTU9EVUxFUyhDQUlSTywgW2NhaXJvID49IDEuMTIuMF0pXQo+Pj4gKykKPj4+ICDC oCBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJVREVWLCBbbGlidWRldl0pCj4+PiAgwqAgUEtHX0NIRUNL X01PRFVMRVMoR0xJQiwgW2dsaWItMi4wXSkKPj4+IC1QS0dfQ0hFQ0tfTU9EVUxFUyhQSVhNQU4s IFtwaXhtYW4tMV0pCj4+PiArUEtHX0NIRUNLX01PRFVMRVMoUElYTUFOLCBbcGl4bWFuLTEgPj0g MC4zNi4wXSwgW10sIFsKPj4+ICvCoMKgwqAgQUNfTVNHX1dBUk4oW1BpeG1hbiB0b28gb2xkLCBI RFIgZm9ybWF0cyBub3QgYXZhaWxhYmxlLiBVcGdyYWRlIHRvIHBpeG1hbiAwLjM2LjBdKQo+Pj4g K8KgwqDCoCBQS0dfQ0hFQ0tfTU9EVUxFUyhQSVhNQU4sIFtwaXhtYW4tMV0pCj4+PiArXSkKPj4+ ICsKPj4+ICDCoCBQS0dfQ0hFQ0tfTU9EVUxFUyhHU0wsIFtnc2xdLCBbZ3NsPXllc10sIFtnc2w9 bm9dKQo+Pj4gIMKgIEFNX0NPTkRJVElPTkFMKEhBVkVfR1NMLCBbdGVzdCAieCRnc2wiID0geHll c10pCj4+PiAgwqAgZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oIGIv aW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKPj4+IGluZGV4IDQxMTA2YzgzNTc0Ny4uZmU2 YjY2ZWYxNzU2IDEwMDY0NAo+Pj4gLS0tIGEvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgK Pj4+ICsrKyBiL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oCj4+PiBAQCAtMTk1LDYgKzE5 NSwxNiBAQCBleHRlcm4gIkMiIHsKPj4+ICDCoCAjZGVmaW5lIERSTV9GT1JNQVRfTlYyNMKgwqDC oMKgwqDCoMKgIGZvdXJjY19jb2RlKCdOJywgJ1YnLCAnMicsICc0JykgLyogbm9uLXN1YnNhbXBs ZWQgQ3I6Q2IgcGxhbmUgKi8KPj4+ICDCoCAjZGVmaW5lIERSTV9GT1JNQVRfTlY0MsKgwqDCoMKg wqDCoMKgIGZvdXJjY19jb2RlKCdOJywgJ1YnLCAnNCcsICcyJykgLyogbm9uLXN1YnNhbXBsZWQg Q2I6Q3IgcGxhbmUgKi8KPj4+ICDCoCArLyoKPj4+ICsgKiAyIHBsYW5lIFlDYkNyCj4+PiArICog aW5kZXggMCA9IFkgcGxhbmUsIFsxNTowXSBZIGxpdHRsZSBlbmRpYW4gd2hlcmUgUHh4eCBpbmRp Y2F0ZQo+Pj4gKyAqIGNvbXBvbmVudCB4eHggbXNiIFkgW3h4eDoxNi14eHhdCj4+PiArICogaW5k ZXggMSA9IENyOkNiIHBsYW5lLCBbMzE6MF0gQ3I6Q2IgbGl0dGxlIGVuZGlhbiBbeHh4OjE2LXh4 eDp4eHg6MTYteHh4XQo+Pj4gKyAqLwo+Pj4gKyNkZWZpbmUgRFJNX0ZPUk1BVF9QMDEwwqDCoMKg wqDCoMKgwqAgZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywgJzAnKSAvKiAyeDIgc3Vic2FtcGxl ZCBDcjpDYiBwbGFuZSwgMTAgYml0IHBlciBjaGFubmVsICovCj4+PiArI2RlZmluZSBEUk1fRk9S TUFUX1AwMTLCoMKgwqDCoMKgwqDCoCBmb3VyY2NfY29kZSgnUCcsICcwJywgJzEnLCAnMicpIC8q IDJ4MiBzdWJzYW1wbGVkIENyOkNiIHBsYW5lLCAxMiBiaXQgcGVyIGNoYW5uZWwgKi8KPj4+ICsj ZGVmaW5lIERSTV9GT1JNQVRfUDAxNsKgwqDCoMKgwqDCoMKgIGZvdXJjY19jb2RlKCdQJywgJzAn LCAnMScsICc2JykgLyogMngyIHN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUsIDE2IGJpdCBwZXIgY2hh bm5lbCAqLwo+Pj4gKwo+Pj4gIMKgIC8qCj4+PiAgwqDCoCAqIDMgcGxhbmUgWUNiQ3IKPj4+ICDC oMKgICogaW5kZXggMDogWSBwbGFuZSwgWzc6MF0gWQo+Pj4gZGlmZiAtLWdpdCBhL2xpYi9pZ3Rf Y29sb3JfZW5jb2RpbmcuYyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+Pj4gaW5kZXggNGNi ZTE4ZTIxN2UzLi5iN2ExMmExZTA3ZjcgMTAwNjQ0Cj4+PiAtLS0gYS9saWIvaWd0X2NvbG9yX2Vu Y29kaW5nLmMKPj4+ICsrKyBiL2xpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYwo+Pj4gQEAgLTEzNSwx MSArMTM1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0IHsK Pj4+ICDCoMKgwqDCoMKgIGZsb2F0IG9mc195LCBtYXhfeSwgb2ZzX2NiY3IsIG1pZF9jYmNyLCBt YXhfY2JjcjsKPj4+ICDCoCB9IGZvcm1hdHNbXSA9IHsKPj4+ICDCoMKgwqDCoMKgIHsgRFJNX0ZP Uk1BVF9YUkdCODg4OCwgMjU1LmYsIH0sCj4+PiArwqDCoMKgIHsgSUdUX0ZPUk1BVF9GTE9BVCwg MS5mLCB9LAo+Pj4gIMKgwqDCoMKgwqAgeyBEUk1fRk9STUFUX05WMTIsIDI1NS5mLCAxNi5mLCAy MzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCj4+PiAgwqDCoMKgwqDCoCB7IERSTV9GT1JNQVRf WVVZViwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPj4+ICDCoMKg wqDCoMKgIHsgRFJNX0ZPUk1BVF9ZVllVLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5m LCAyNDAuZiB9LAo+Pj4gIMKgwqDCoMKgwqAgeyBEUk1fRk9STUFUX1VZVlksIDI1NS5mLCAxNi5m LCAyMzUuZiwgMTYuZiwgMTI4LmYsIDI0MC5mIH0sCj4+PiAgwqDCoMKgwqDCoCB7IERSTV9GT1JN QVRfVllVWSwgMjU1LmYsIDE2LmYsIDIzNS5mLCAxNi5mLCAxMjguZiwgMjQwLmYgfSwKPj4+ICvC oMKgwqAgeyBEUk1fRk9STUFUX1AwMTAsIDY1NDcyLmYsIDQwOTYuZiwgNjAxNjAuZiwgNDA5Ni5m LCAzMjc2OC5mLCA2MTQ0MC5mIH0sCj4+PiArwqDCoMKgIHsgRFJNX0ZPUk1BVF9QMDEyLCA2NTUy MC5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAo+Pj4gK8Kg wqDCoCB7IERSTV9GT1JNQVRfUDAxNiwgNjU1MzUuZiwgNDA5Ni5mLCA2MDE2MC5mLCA0MDk2LmYs IDMyNzY4LmYsIDYxNDQwLmYgfSwKPj4+ICDCoCB9Owo+Pj4gIMKgIMKgIHN0YXRpYyBjb25zdCBz dHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0ICpsb29rdXBfZm91cmNjKHVpbnQzMl90IGZvdXJj YykKPj4+IGRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmMgYi9saWIvaWd0X2ZiLmMKPj4+IGluZGV4 IGRiM2FlMDY3NDhkMS4uMTI3NjNjYzg1Yzg2IDEwMDY0NAo+Pj4gLS0tIGEvbGliL2lndF9mYi5j Cj4+PiArKysgYi9saWIvaWd0X2ZiLmMKPj4+IEBAIC02Miw2ICs2MiwyMCBAQAo+Pj4gIMKgIMKg ICNkZWZpbmUgUElYTUFOX2ludmFsaWTCoMKgwqAgMAo+Pj4gIMKgICsjaWYgQ0FJUk9fVkVSU0lP TiA8IENBSVJPX1ZFUlNJT05fRU5DT0RFKDEsIDE3LCAyKQo+Pj4gKy8qCj4+PiArICogV2UgbmVl ZCBjYWlybyAxLjE3LjIgdG8gdXNlIEhEUiBmb3JtYXRzLCBidXQgdGhlIG9ubHkgdGhpbmcgYWRk ZWQgaXMgYSB2YWx1ZQo+Pj4gKyAqIHRvIGNhaXJvX2Zvcm1hdF90Lgo+Pj4gKyAqCj4+PiArICog VG8gcHJldmVudCBnb2luZyBvdXRzaWRlIHRoZSBlbnVtLCBtYWtlIGNhaXJvX2Zvcm1hdF90IGFu IGludCBhbmQgZGVmaW5lCj4+PiArICogb3Vyc2VsdmVzLgo+Pj4gKyAqLwo+Pj4gKwo+Pj4gKyNk ZWZpbmUgQ0FJUk9fRk9STUFUX1JHQjk2RiAoNikKPj4+ICsjZGVmaW5lIENBSVJPX0ZPUk1BVF9S R0JBMTI4RiAoNykKPj4+ICsjZGVmaW5lIGNhaXJvX2Zvcm1hdF90IGludAo+Pj4gKyNlbmRpZgo+ Pj4gKwo+Pj4gIMKgIC8qIGRybSBmb3VyY2MvY2Fpcm8gZm9ybWF0IG1hcHMgKi8KPj4+ICDCoCBz dGF0aWMgY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCB7Cj4+PiAgwqDCoMKgwqDCoCBj b25zdCBjaGFyICpuYW1lOwo+Pj4gQEAgLTE3MCw2ICsxODQsMjUgQEAgc3RhdGljIGNvbnN0IHN0 cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qgewo+Pj4gIMKgwqDCoMKgwqDCoMKgIC5udW1fcGxhbmVz ID0gMSwgLnBsYW5lX2JwcCA9IHsgMTYsIH0sCj4+PiAgwqDCoMKgwqDCoMKgwqAgLmhzdWIgPSAy LCAudnN1YiA9IDEsCj4+PiAgwqDCoMKgwqDCoCB9LAo+Pj4gK8KgwqDCoCB7IC5uYW1lID0gIlAw MTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMCwKPj4+ICvCoMKgwqDC oMKgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCj4+PiArwqDCoMKgwqDCoCAubnVt X3BsYW5lcyA9IDIsIC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAo+Pj4gK8KgwqDCoMKgwqAgLnZz dWIgPSAyLCAuaHN1YiA9IDIsCj4+PiArwqDCoMKgIH0sCj4+PiArwqDCoMKgIHsgLm5hbWUgPSAi UDAxMiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZPUk1BVF9QMDEyLAo+Pj4gK8KgwqDC oMKgwqAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKPj4+ICvCoMKgwqDCoMKgIC5u dW1fcGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCj4+PiArwqDCoMKgwqDCoCAu dnN1YiA9IDIsIC5oc3ViID0gMiwKPj4+ICvCoMKgwqAgfSwKPj4+ICvCoMKgwqAgeyAubmFtZSA9 ICJQMDE2IiwgLmRlcHRoID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTYsCj4+PiArwqDC oMKgwqDCoCAuY2Fpcm9faWQgPSBDQUlST19GT1JNQVRfUkdCOTZGLAo+Pj4gK8KgwqDCoMKgwqAg Lm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIgfSwKPj4+ICvCoMKgwqDCoMKg IC52c3ViID0gMiwgLmhzdWIgPSAyLAo+Pj4gK8KgwqDCoCB9LAo+Pj4gK8KgwqDCoCB7IC5uYW1l ID0gIklHVC1GTE9BVCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gSUdUX0ZPUk1BVF9GTE9BVCwK Pj4+ICvCoMKgwqDCoMKgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9JTlZBTElELAo+Pj4gK8Kg wqDCoMKgwqAgLm51bV9wbGFuZXMgPSAxLCAucGxhbmVfYnBwID0geyAxMjggfSwKPj4+ICvCoMKg wqAgfSwKPj4+ICDCoCB9Owo+Pj4gIMKgICNkZWZpbmUgZm9yX2VhY2hfZm9ybWF0KGYpwqDCoMKg IFwKPj4+ICDCoMKgwqDCoMKgIGZvciAoZiA9IGZvcm1hdF9kZXNjOyBmIC0gZm9ybWF0X2Rlc2Mg PCBBUlJBWV9TSVpFKGZvcm1hdF9kZXNjKTsgZisrKQo+Pj4gQEAgLTUyMCw2ICs1NTMsMTQgQEAg c3RhdGljIHZvaWQgY2xlYXJfeXV2X2J1ZmZlcihzdHJ1Y3QgaWd0X2ZiICpmYikKPj4+ICDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmdWxsX3JhbmdlID8gMHgwMDgwMDA4MCA6IDB4MTA4MDEw ODAsCj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPnN0cmlkZXNbMF0gKiBmYi0+ cGxhbmVfaGVpZ2h0WzBdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPj4+ICDCoMKgwqDCoMKgwqDCoMKg wqAgYnJlYWs7Cj4+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9QMDEwOgo+Pj4gK8KgwqDCoCBj YXNlIERSTV9GT1JNQVRfUDAxMjoKPj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTY6Cj4+ PiArwqDCoMKgwqDCoMKgwqAgd21lbXNldChwdHIsIGZ1bGxfcmFuZ2UgPyAwIDogMHgxMDAwMTAw MCwKPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZiLT5vZmZzZXRzWzFdIC8gc2l6ZW9mKHdj aGFyX3QpKTsKPj4+ICvCoMKgwqDCoMKgwqDCoCB3bWVtc2V0KHB0ciArIGZiLT5vZmZzZXRzWzFd LCAweDgwMDA4MDAwLAo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmItPnN0cmlkZXNbMV0g KiBmYi0+cGxhbmVfaGVpZ2h0WzFdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKPj4+ICvCoMKgwqDCoMKg wqDCoCBicmVhazsKPj4+ICDCoMKgwqDCoMKgIH0KPj4+ICDCoCDCoMKgwqDCoMKgIGlndF9mYl91 bm1hcF9idWZmZXIoZmIsIHB0cik7Cj4+PiBAQCAtMTQ5Niw2ICsxNTM3LDcgQEAgc3RydWN0IGZi X2NvbnZlcnRfYmxpdF91cGxvYWQgewo+Pj4gIMKgIH07Cj4+PiAgwqAgwqAgc3RhdGljIHZvaWQg KmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1ZmZlcihpbnQgZmQsCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBkcm1f Zm9ybWF0LAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCB3aWR0aCwKPj4+ICDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaGVpZ2h0 LAo+Pj4gIMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHN0cnVjdCBpZ3RfZmIgKnNoYWRvdykKPj4+IEBAIC0xNTA1LDcgKzE1NDcsNyBAQCBz dGF0aWMgdm9pZCAqaWd0X2ZiX2NyZWF0ZV9jYWlyb19zaGFkb3dfYnVmZmVyKGludCBmZCwKPj4+ ICDCoMKgwqDCoMKgIGlndF9hc3NlcnQoc2hhZG93KTsKPj4+ICDCoCDCoMKgwqDCoMKgIGZiX2lu aXQoc2hhZG93LCBmZCwgd2lkdGgsIGhlaWdodCwKPj4+IC3CoMKgwqDCoMKgwqDCoCBEUk1fRk9S TUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAo+Pj4gK8KgwqDCoMKgwqDC oMKgIGRybV9mb3JtYXQsIExPQ0FMX0RSTV9GT1JNQVRfTU9EX05PTkUsCj4+PiAgwqDCoMKgwqDC oMKgwqDCoMKgIElHVF9DT0xPUl9ZQ0JDUl9CVDcwOSwgSUdUX0NPTE9SX1lDQkNSX0xJTUlURURf UkFOR0UpOwo+Pj4gIMKgIMKgwqDCoMKgwqAgc2hhZG93LT5zdHJpZGVzWzBdID0gQUxJR04od2lk dGggKiBzaGFkb3ctPnBsYW5lX2JwcFswXSwgMTYpOwo+Pj4gQEAgLTE1OTksNiArMTY0MSw5IEBA IHN0YXRpYyB2b2lkIGdldF95dXZfcGFyYW1ldGVycyhzdHJ1Y3QgaWd0X2ZiICpmYiwgc3RydWN0 IHl1dl9wYXJhbWV0ZXJzICpwYXJhbXMpCj4+PiAgwqAgwqDCoMKgwqDCoCBzd2l0Y2ggKGZiLT5k cm1fZm9ybWF0KSB7Cj4+PiAgwqDCoMKgwqDCoCBjYXNlIERSTV9GT1JNQVRfTlYxMjoKPj4+ICvC oMKgwqAgY2FzZSBEUk1fRk9STUFUX1AwMTA6Cj4+PiArwqDCoMKgIGNhc2UgRFJNX0ZPUk1BVF9Q MDEyOgo+Pj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfUDAxNjoKPj4+ICDCoMKgwqDCoMKgwqDC oMKgwqAgcGFyYW1zLT55X2luYyA9IDE7Cj4+PiAgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcmFtcy0+ dXZfaW5jID0gMjsKPj4KPj4gSGkgTWFhcnRlbiwKPj4KPj4gSSB3YXMgd29uZGVyaW5nIGlmIGFi b3ZlIHlfaW5jIGFuZCB1dl9pbmMgZm9yIFB4eHggc2hvdWxkIGJlIDJ4IG9mIHRob3NlIGZvciBO VjEyPwo+Pgo+PiBJIG5vdGljZWQgdGhleSdyZSB1c2VkIGJlbG93IGxpa2UgInlfdG1wICs9IHBh cmFtcy55X2luYyIgd2hlcmUgeV90bXAgaXMgdWludDhfdCouCj4+Cj4+IE90aGVyIHRoYW4gdGhp cyBhbGwgbG9vayBnb29kIHRvIG1lIGluIHRoaXMgcGF0Y2guIEkgZG9uJ3QgaGF2ZSBIVyB0byB0 ZXN0IHdpdGggc28gSSBjYW5ub3QgZ28gc2VlIGhvdyBpdCB3b3JrLgo+IAo+IFdlbGwgd2UgaW5j cmVhc2UgdWludDE2X3QgcG9pbnRlcnMsIHNvIGl0IHdvcmtlZCBvdXQuIFRlc3RlZCBpdCBteXNl bGYgZm9yIFAwMTAsIGRpZG4ndCB0ZXN0IHRoZSBZMjF4IFk0MXggZm9ybWF0cyBidXQgc2hvdWxk IGJlIGNvcnJlY3QuIDopCgpBaCwgbm93IEkgZ290IGl0LiBJIHdhcyBsb29raW5nIGp1c3QgYXQg Zmlyc3QgaW5zdGFuY2Ugd2hlcmUgdGhlIGNhbGwgCndhcyBtYWRlIHRvIGdldCB0aG9zZSBwYXJh bWV0ZXJzLgoKVGhpcyBwYXRjaCBpcwpSZXZpZXdlZC1ieTogSnVoYS1QZWtrYSBIZWlra2lsYSA8 anVoYXBla2thLmhlaWtraWxhQGdtYWlsLmNvbT4KCi9KdWhhLVBla2thCgoKX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KaWd0LWRldiBtYWlsaW5nIGxpc3QK aWd0LWRldkBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvbWFpbG1hbi9saXN0aW5mby9pZ3QtZGV2Cg==