From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mblankhorst.nl (mblankhorst.nl [141.105.120.124]) by gabe.freedesktop.org (Postfix) with ESMTPS id 7E17C6E5F7 for ; Tue, 5 Feb 2019 15:08:30 +0000 (UTC) From: Maarten Lankhorst Date: Tue, 5 Feb 2019 16:08:27 +0100 Message-Id: <20190205150827.9739-1-maarten.lankhorst@linux.intel.com> In-Reply-To: References: MIME-Version: 1.0 Subject: [igt-dev] [PATCH i-g-t] lib/igt_fb: Add support for P01x formats, v3. 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: igt-dev@lists.freedesktop.org List-ID: VGhlIFAwMXggZm9ybWF0cyBhcmUgcGxhbmFyIDE2IGJpdHMgcGVyIGNvbXBvbmVudCwgd2l0aCB0 aGUgdW51c2VkIGxvd2VyIGJpdHMgc2V0IHRvIDAuClRoaXMgbWVhbnMgdGhleSBjYW4gYWxsIGJl IGNvbnZlcnRlZCB0aGUgc2FtZSB3YXkuIE9ubHkgdGhlIHJhbmdlIGlzIHNsaWdodGx5IGRpZmZl cmVudCwKYW5kIHRoaXMgaXMgaGFuZGxlZCBpbiB0aGUgY29sb3JfZW5jb2RpbmcgaW1wbGVtZW50 YXRpb24uCgpUaGlzIHJlcXVpcmVzIGNhaXJvIDEuMTcuMiBhbmQgcGl4bWFuIDAuMzYuIFRoaXMg d29ya3MgYnV0IGRvZXNuJ3QgZ2l2ZSBleHRyYSBwcmVjaXNpb24uCkZvciBtb3JlIHRoYW4gOCBi aXRzIHByZWNpc2lvbiBhIGZldyBtb3JlIHBhdGNoZXMgYXJlIHJlcXVpcmVkIHRvIHBpeG1hbiwg cGVuZGluZyByZXZpZXc6Cmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmVzL3Bp eG1hbi8yMDE5LUphbnVhcnkvMDA0ODE1Lmh0bWwKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5v cmcvYXJjaGl2ZXMvcGl4bWFuLzIwMTktSmFudWFyeS8wMDQ4MDkuaHRtbAoKT25jZSB0aG9zZSBh cmUgbWVyZ2VkLCB3ZSB3aWxsIHJlcXVpcmUgdGhlIG5leHQgcGl4bWFuIHJlbGVhc2UgZm9yIGJl dHRlciBwcmVjaXNpb24uCgpDaGFuZ2VzIHNpbmNlIHYxOgotIEFkZCBmYWxsYmFjayBjb2xvciBk ZWZpbml0aW9ucyB3aGVuIGNvbXBpbGluZyBvbiBjYWlybyB2ZXJzaW9uIDwgMS4xNy4yLgotIFNr aXAgd2hlbiBGQiBjcmVhdGlvbiBmYWlscyBvbiBIRFIgZm9ybWF0cywgaW5zdGVhZCBvZiBmYWls aW5nLgpDaGFuZ2VzIHNpbmNlIHYyOgotIENvbXBsYWluIHNsaWdodGx5IGhhcmRlciB3aGVuIHBp eG1hbi9jYWlybyBhcmUgb3V0IG9mIGRhdGUuCi0gQ3JlYXRlIGEgZmIgd2l0aCBhbHBoYSB3aGVu IGNvbnZlcnRpbmcgdG8gcGl4bWFuIGZvcm1hdHMgd2l0aCBhbHBoYS4KLSBPb3BzLCBzL3BpeG1h bl9mb3JtYXRfY29kZV90L2NhaXJvX2Zvcm1hdF90LwoKU2lnbmVkLW9mZi1ieTogTWFhcnRlbiBM YW5raG9yc3QgPG1hYXJ0ZW4ubGFua2hvcnN0QGxpbnV4LmludGVsLmNvbT4KLS0tCiBjb25maWd1 cmUuYWMgICAgICAgICAgICAgICAgICB8ICAxMSArLQogaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91 cmNjLmggfCAgMTAgKysKIGxpYi9pZ3RfY29sb3JfZW5jb2RpbmcuYyAgICAgIHwgICA0ICsKIGxp Yi9pZ3RfZmIuYyAgICAgICAgICAgICAgICAgIHwgMjUxICsrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrLS0KIGxpYi9pZ3RfZmIuaCAgICAgICAgICAgICAgICAgIHwgICA2ICsKIG1lc29u LmJ1aWxkICAgICAgICAgICAgICAgICAgIHwgIDEwICsrCiA2IGZpbGVzIGNoYW5nZWQsIDI3OSBp bnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMg Yi9jb25maWd1cmUuYWMKaW5kZXggYjQ2ZjAyNGY4NzVhLi5hMzMzY2Y4ZDZkYmIgMTAwNjQ0Ci0t LSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTEzNiwxMCArMTM2LDE3IEBA IGZpCiBQS0dfQ0hFQ0tfTU9EVUxFUyhYUkFORFIsIHhyYW5kciA+PSAxLjMsIEFDX0RFRklORShI QVZFX1hSQU5EUiwgMSwgW0hhdmUgbGliWHJhbmRyXSksIFtoYXZlX3hyYW5kcj1ub10pCiAKICMg Zm9yIHRlc3RkaXNwbGF5Ci1QS0dfQ0hFQ0tfTU9EVUxFUyhDQUlSTywgW2NhaXJvID49IDEuMTIu MF0pCitQS0dfQ0hFQ0tfTU9EVUxFUyhDQUlSTywgW2NhaXJvID49IDEuMTcuMl0sIFtdLAorCVtB Q19NU0dfV0FSTihbQ2Fpcm8gdG9vIG9sZCwgSERSIGZvcm1hdHMgbm90IGF2YWlsYWJsZS4gVXBn cmFkZSB0byBjYWlybyAxLjE3LjJdKQorCVBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBbY2Fpcm8g Pj0gMS4xMi4wXSldCispCiBQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJVREVWLCBbbGlidWRldl0pCiBQ S0dfQ0hFQ0tfTU9EVUxFUyhHTElCLCBbZ2xpYi0yLjBdKQotUEtHX0NIRUNLX01PRFVMRVMoUElY TUFOLCBbcGl4bWFuLTFdKQorUEtHX0NIRUNLX01PRFVMRVMoUElYTUFOLCBbcGl4bWFuLTEgPj0g MC4zNi4wXSwgW10sIFsKKwlBQ19NU0dfV0FSTihbUGl4bWFuIHRvbyBvbGQsIEhEUiBmb3JtYXRz IG5vdCBhdmFpbGFibGUuIFVwZ3JhZGUgdG8gcGl4bWFuIDAuMzYuMF0pCisJUEtHX0NIRUNLX01P RFVMRVMoUElYTUFOLCBbcGl4bWFuLTFdKQorXSkKKwogUEtHX0NIRUNLX01PRFVMRVMoR1NMLCBb Z3NsXSwgW2dzbD15ZXNdLCBbZ3NsPW5vXSkKIEFNX0NPTkRJVElPTkFMKEhBVkVfR1NMLCBbdGVz dCAieCRnc2wiID0geHllc10pCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2Zv dXJjYy5oIGIvaW5jbHVkZS9kcm0tdWFwaS9kcm1fZm91cmNjLmgKaW5kZXggNGRkZjc1NGJhYjA5 Li5jOWE1ZTU3ODcwMzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5o CisrKyBiL2luY2x1ZGUvZHJtLXVhcGkvZHJtX2ZvdXJjYy5oCkBAIC0xOTUsNiArMTk1LDE2IEBA IGV4dGVybiAiQyIgewogI2RlZmluZSBEUk1fRk9STUFUX05WMjQJCWZvdXJjY19jb2RlKCdOJywg J1YnLCAnMicsICc0JykgLyogbm9uLXN1YnNhbXBsZWQgQ3I6Q2IgcGxhbmUgKi8KICNkZWZpbmUg RFJNX0ZPUk1BVF9OVjQyCQlmb3VyY2NfY29kZSgnTicsICdWJywgJzQnLCAnMicpIC8qIG5vbi1z dWJzYW1wbGVkIENiOkNyIHBsYW5lICovCiAKKy8qCisgKiAyIHBsYW5lIFlDYkNyCisgKiBpbmRl eCAwID0gWSBwbGFuZSwgWzE1OjBdIFkgbGl0dGxlIGVuZGlhbiB3aGVyZSBQeHh4IGluZGljYXRl CisgKiBjb21wb25lbnQgeHh4IG1zYiBZIFt4eHg6MTYteHh4XQorICogaW5kZXggMSA9IENyOkNi IHBsYW5lLCBbMzE6MF0gQ3I6Q2IgbGl0dGxlIGVuZGlhbiBbeHh4OjE2LXh4eDp4eHg6MTYteHh4 XQorICovCisjZGVmaW5lIERSTV9GT1JNQVRfUDAxMAkJZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcx JywgJzAnKSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSwgMTAgYml0IHBlciBjaGFubmVs ICovCisjZGVmaW5lIERSTV9GT1JNQVRfUDAxMgkJZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywg JzInKSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSwgMTIgYml0IHBlciBjaGFubmVsICov CisjZGVmaW5lIERSTV9GT1JNQVRfUDAxNgkJZm91cmNjX2NvZGUoJ1AnLCAnMCcsICcxJywgJzYn KSAvKiAyeDIgc3Vic2FtcGxlZCBDcjpDYiBwbGFuZSwgMTYgYml0IHBlciBjaGFubmVsICovCisK IC8qCiAgKiAzIHBsYW5lIFlDYkNyCiAgKiBpbmRleCAwOiBZIHBsYW5lLCBbNzowXSBZCmRpZmYg LS1naXQgYS9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5n LmMKaW5kZXggNGNiZTE4ZTIxN2UzLi5iN2ExMmExZTA3ZjcgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3Rf Y29sb3JfZW5jb2RpbmcuYworKysgYi9saWIvaWd0X2NvbG9yX2VuY29kaW5nLmMKQEAgLTEzNSwx MSArMTM1LDE1IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgY29sb3JfZW5jb2RpbmdfZm9ybWF0IHsK IAlmbG9hdCBvZnNfeSwgbWF4X3ksIG9mc19jYmNyLCBtaWRfY2JjciwgbWF4X2NiY3I7CiB9IGZv cm1hdHNbXSA9IHsKIAl7IERSTV9GT1JNQVRfWFJHQjg4ODgsIDI1NS5mLCB9LAorCXsgSUdUX0ZP Uk1BVF9GTE9BVCwgMS5mLCB9LAogCXsgRFJNX0ZPUk1BVF9OVjEyLCAyNTUuZiwgMTYuZiwgMjM1 LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAogCXsgRFJNX0ZPUk1BVF9ZVVlWLCAyNTUuZiwgMTYu ZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAogCXsgRFJNX0ZPUk1BVF9ZVllVLCAyNTUu ZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAogCXsgRFJNX0ZPUk1BVF9VWVZZ LCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAogCXsgRFJNX0ZPUk1B VF9WWVVZLCAyNTUuZiwgMTYuZiwgMjM1LmYsIDE2LmYsIDEyOC5mLCAyNDAuZiB9LAorCXsgRFJN X0ZPUk1BVF9QMDEwLCA2NTQ3Mi5mLCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwg NjE0NDAuZiB9LAorCXsgRFJNX0ZPUk1BVF9QMDEyLCA2NTUyMC5mLCA0MDk2LmYsIDYwMTYwLmYs IDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAorCXsgRFJNX0ZPUk1BVF9QMDE2LCA2NTUzNS5m LCA0MDk2LmYsIDYwMTYwLmYsIDQwOTYuZiwgMzI3NjguZiwgNjE0NDAuZiB9LAogfTsKIAogc3Rh dGljIGNvbnN0IHN0cnVjdCBjb2xvcl9lbmNvZGluZ19mb3JtYXQgKmxvb2t1cF9mb3VyY2ModWlu dDMyX3QgZm91cmNjKQpkaWZmIC0tZ2l0IGEvbGliL2lndF9mYi5jIGIvbGliL2lndF9mYi5jCmlu ZGV4IGE5NzFhZWJiMzZiMy4uMjBjNjM3NDM2NDc3IDEwMDY0NAotLS0gYS9saWIvaWd0X2ZiLmMK KysrIGIvbGliL2lndF9mYi5jCkBAIC02Miw2ICs2MiwyMCBAQAogCiAjZGVmaW5lIFBJWE1BTl9p bnZhbGlkCTAKIAorI2lmIENBSVJPX1ZFUlNJT04gPCBDQUlST19WRVJTSU9OX0VOQ09ERSgxLCAx NywgMikKKy8qCisgKiBXZSBuZWVkIGNhaXJvIDEuMTcuMiB0byB1c2UgSERSIGZvcm1hdHMsIGJ1 dCB0aGUgb25seSB0aGluZyBhZGRlZCBpcyBhIHZhbHVlCisgKiB0byBjYWlyb19mb3JtYXRfdC4K KyAqCisgKiBUbyBwcmV2ZW50IGdvaW5nIG91dHNpZGUgdGhlIGVudW0sIG1ha2UgY2Fpcm9fZm9y bWF0X3QgYW4gaW50IGFuZCBkZWZpbmUKKyAqIG91cnNlbHZlcy4KKyAqLworCisjZGVmaW5lIENB SVJPX0ZPUk1BVF9SR0I5NkYgKDYpCisjZGVmaW5lIENBSVJPX0ZPUk1BVF9SR0JBMTI4RiAoNykK KyNkZWZpbmUgY2Fpcm9fZm9ybWF0X3QgaW50CisjZW5kaWYKKwogLyogZHJtIGZvdXJjYy9jYWly byBmb3JtYXQgbWFwcyAqLwogc3RhdGljIGNvbnN0IHN0cnVjdCBmb3JtYXRfZGVzY19zdHJ1Y3Qg ewogCWNvbnN0IGNoYXIgKm5hbWU7CkBAIC0xNTEsNiArMTY1LDIyIEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgZm9ybWF0X2Rlc2Nfc3RydWN0IHsKIAkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9S R0IyNCwKIAkgIC5udW1fcGxhbmVzID0gMSwgLnBsYW5lX2JwcCA9IHsgMTYsIH0sCiAJfSwKKwl7 IC5uYW1lID0gIlAwMTAiLCAuZGVwdGggPSAtMSwgLmRybV9pZCA9IERSTV9GT1JNQVRfUDAxMCwK KwkgIC5jYWlyb19pZCA9IENBSVJPX0ZPUk1BVF9SR0I5NkYsCisJICAubnVtX3BsYW5lcyA9IDIs IC5wbGFuZV9icHAgPSB7IDE2LCAzMiB9LAorCX0sCisJeyAubmFtZSA9ICJQMDEyIiwgLmRlcHRo ID0gLTEsIC5kcm1faWQgPSBEUk1fRk9STUFUX1AwMTIsCisJICAuY2Fpcm9faWQgPSBDQUlST19G T1JNQVRfUkdCOTZGLAorCSAgLm51bV9wbGFuZXMgPSAyLCAucGxhbmVfYnBwID0geyAxNiwgMzIg fSwKKwl9LAorCXsgLm5hbWUgPSAiUDAxNiIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gRFJNX0ZP Uk1BVF9QMDE2LAorCSAgLmNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX1JHQjk2RiwKKwkgIC5udW1f cGxhbmVzID0gMiwgLnBsYW5lX2JwcCA9IHsgMTYsIDMyIH0sCisJfSwKKwl7IC5uYW1lID0gIklH VC1GTE9BVCIsIC5kZXB0aCA9IC0xLCAuZHJtX2lkID0gSUdUX0ZPUk1BVF9GTE9BVCwKKwkgIC5j YWlyb19pZCA9IENBSVJPX0ZPUk1BVF9JTlZBTElELAorCSAgLm51bV9wbGFuZXMgPSAxLCAucGxh bmVfYnBwID0geyAxMjggfSwKKwl9LAogfTsKICNkZWZpbmUgZm9yX2VhY2hfZm9ybWF0KGYpCVwK IAlmb3IgKGYgPSBmb3JtYXRfZGVzYzsgZiAtIGZvcm1hdF9kZXNjIDwgQVJSQVlfU0laRShmb3Jt YXRfZGVzYyk7IGYrKykKQEAgLTIzOSwxMCArMjY5LDE3IEBAIHZvaWQgaWd0X2dldF9mYl90aWxl X3NpemUoaW50IGZkLCB1aW50NjRfdCB0aWxpbmcsIGludCBmYl9icHAsCiAKIHN0YXRpYyB1bnNp Z25lZCBmYl9wbGFuZV93aWR0aChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQog ewotCWlmIChmYi0+ZHJtX2Zvcm1hdCA9PSBEUk1fRk9STUFUX05WMTIgJiYgcGxhbmUgPT0gMSkK LQkJcmV0dXJuIERJVl9ST1VORF9VUChmYi0+d2lkdGgsIDIpOwotCi0JcmV0dXJuIGZiLT53aWR0 aDsKKwlzd2l0Y2ggKGZiLT5kcm1fZm9ybWF0KSB7CisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJ Y2FzZSBEUk1fRk9STUFUX1AwMTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTY6CisJY2FzZSBEUk1f Rk9STUFUX05WMTI6CisJCWlmIChwbGFuZSA9PSAxKQorCQkJcmV0dXJuIERJVl9ST1VORF9VUChm Yi0+d2lkdGgsIDIpOworCQkvKiBmYWxsLXRocnUgKi8KKwlkZWZhdWx0OgorCQlyZXR1cm4gZmIt PndpZHRoOworCX0KIH0KIAogc3RhdGljIHVuc2lnbmVkIGZiX3BsYW5lX2JwcChjb25zdCBzdHJ1 Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQpAQCAtMjU0LDEwICsyOTEsMTcgQEAgc3RhdGljIHVu c2lnbmVkIGZiX3BsYW5lX2JwcChjb25zdCBzdHJ1Y3QgaWd0X2ZiICpmYiwgaW50IHBsYW5lKQog CiBzdGF0aWMgdW5zaWduZWQgZmJfcGxhbmVfaGVpZ2h0KGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZi LCBpbnQgcGxhbmUpCiB7Ci0JaWYgKGZiLT5kcm1fZm9ybWF0ID09IERSTV9GT1JNQVRfTlYxMiAm JiBwbGFuZSA9PSAxKQotCQlyZXR1cm4gRElWX1JPVU5EX1VQKGZiLT5oZWlnaHQsIDIpOwotCi0J cmV0dXJuIGZiLT5oZWlnaHQ7CisJc3dpdGNoIChmYi0+ZHJtX2Zvcm1hdCkgeworCWNhc2UgRFJN X0ZPUk1BVF9QMDEwOgorCWNhc2UgRFJNX0ZPUk1BVF9QMDEyOgorCWNhc2UgRFJNX0ZPUk1BVF9Q MDE2OgorCWNhc2UgRFJNX0ZPUk1BVF9OVjEyOgorCQlpZiAocGxhbmUgPT0gMSkKKwkJCXJldHVy biBESVZfUk9VTkRfVVAoZmItPmhlaWdodCwgMik7CisJCS8qIGZhbGwtdGhydSAqLworCWRlZmF1 bHQ6CisJCXJldHVybiBmYi0+aGVpZ2h0OworCX0KIH0KIAogc3RhdGljIGludCBmYl9udW1fcGxh bmVzKGNvbnN0IHN0cnVjdCBpZ3RfZmIgKmZiKQpAQCAtNTE2LDYgKzU2MCwxMyBAQCBzdGF0aWMg aW50IGNyZWF0ZV9ib19mb3JfZmIoc3RydWN0IGlndF9mYiAqZmIpCiAJCQkJCWZ1bGxfcmFuZ2Ug PyAweDAwODAwMDgwIDogMHgxMDgwMTA4MCwKIAkJCQkJZmItPnN0cmlkZXNbMF0gKiBmYi0+cGxh bmVfaGVpZ2h0WzBdIC8gc2l6ZW9mKHdjaGFyX3QpKTsKIAkJCQlicmVhazsKKwkJCWNhc2UgRFJN X0ZPUk1BVF9QMDEwOgorCQkJY2FzZSBEUk1fRk9STUFUX1AwMTI6CisJCQljYXNlIERSTV9GT1JN QVRfUDAxNjoKKwkJCQl3bWVtc2V0KHB0ciwgZnVsbF9yYW5nZSA/IDAgOiAweDEwMDAxMDAwLAor CQkJCQlmYi0+b2Zmc2V0c1sxXSAvIHNpemVvZih3Y2hhcl90KSk7CisJCQkJd21lbXNldChwdHIg KyBmYi0+b2Zmc2V0c1sxXSwgMHg4MDAwODAwMCwKKwkJCQkJRElWX1JPVU5EX1VQKGZiLT5oZWln aHQsMikgKiBmYi0+c3RyaWRlc1sxXSAvIHNpemVvZih3Y2hhcl90KSk7CiAJCQl9CiAJCQlnZW1f bXVubWFwKHB0ciwgZmItPnNpemUpOwogCkBAIC0xNDYzLDYgKzE1MTQsNyBAQCBzdHJ1Y3QgZmJf Y29udmVydF9ibGl0X3VwbG9hZCB7CiB9OwogCiBzdGF0aWMgdm9pZCAqaWd0X2ZiX2NyZWF0ZV9j YWlyb19zaGFkb3dfYnVmZmVyKGludCBmZCwKKwkJCQkJICAgICAgIHVuc2lnbmVkIGRybV9mb3Jt YXQsCiAJCQkJCSAgICAgICB1bnNpZ25lZCBpbnQgd2lkdGgsCiAJCQkJCSAgICAgICB1bnNpZ25l ZCBpbnQgaGVpZ2h0LAogCQkJCQkgICAgICAgc3RydWN0IGlndF9mYiAqc2hhZG93KQpAQCAtMTQ3 Miw3ICsxNTI0LDcgQEAgc3RhdGljIHZvaWQgKmlndF9mYl9jcmVhdGVfY2Fpcm9fc2hhZG93X2J1 ZmZlcihpbnQgZmQsCiAJaWd0X2Fzc2VydChzaGFkb3cpOwogCiAJZmJfaW5pdChzaGFkb3csIGZk LCB3aWR0aCwgaGVpZ2h0LAotCQlEUk1fRk9STUFUX1hSR0I4ODg4LCBMT0NBTF9EUk1fRk9STUFU X01PRF9OT05FLAorCQlkcm1fZm9ybWF0LCBMT0NBTF9EUk1fRk9STUFUX01PRF9OT05FLAogCQlJ R1RfQ09MT1JfWUNCQ1JfQlQ3MDksIElHVF9DT0xPUl9ZQ0JDUl9MSU1JVEVEX1JBTkdFKTsKIAog CXNoYWRvdy0+c3RyaWRlc1swXSA9IEFMSUdOKHdpZHRoICogc2hhZG93LT5wbGFuZV9icHBbMF0s IDE2KTsKQEAgLTE5ODMsNiArMjAzNSwxMjQgQEAgc3RhdGljIHZvaWQgY29udmVydF9yZ2IyNF90 b195dXl2KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJfQogfQogCitzdGF0aWMgdm9pZCByZWFk X3JnYmYoc3RydWN0IGlndF92ZWM0ICpyZ2IsIGNvbnN0IGZsb2F0ICpyZ2IyNCkKK3sKKwlyZ2It PmRbMF0gPSByZ2IyNFswXTsKKwlyZ2ItPmRbMV0gPSByZ2IyNFsxXTsKKwlyZ2ItPmRbMl0gPSBy Z2IyNFsyXTsKKwlyZ2ItPmRbM10gPSAxLjBmOworfQorCitzdGF0aWMgdm9pZCB3cml0ZV9yZ2Jm KGZsb2F0ICpyZ2IyNCwgY29uc3Qgc3RydWN0IGlndF92ZWM0ICpyZ2IpCit7CisJcmdiMjRbMF0g PSByZ2ItPmRbMF07CisJcmdiMjRbMV0gPSByZ2ItPmRbMV07CisJcmdiMjRbMl0gPSByZ2ItPmRb Ml07Cit9CisKK3N0YXRpYyB2b2lkIGNvbnZlcnRfcDAxWF90b19mbG9hdChzdHJ1Y3QgZmJfY29u dmVydCAqY3Z0KQoreworCWludCBpLCBqOworCXN0cnVjdCBpZ3RfZmIgKmZiX3AwMXggPSBjdnQt PnNyYy5mYjsKKwlzdHJ1Y3QgaWd0X2ZiICpmYl9mbG9hdCA9IGN2dC0+ZHN0LmZiOworCWNvbnN0 IHVpbnQxNl90ICp5LCAqdXY7CisJdm9pZCAqYnVmID0gY29udmVydF9zcmNfZ2V0KGN2dCk7CisJ ZmxvYXQgKnB0ciA9IGN2dC0+ZHN0LnB0ciArIGZiX2Zsb2F0LT5vZmZzZXRzWzBdOworCXVuc2ln bmVkIGZsb2F0X3N0cmlkZSA9IGZiX2Zsb2F0LT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCpwdHIpOwor CXVuc2lnbmVkIHBsYW5hcl9zdHJpZGUgPSBmYl9wMDF4LT5zdHJpZGVzWzBdIC8gc2l6ZW9mKCp5 KTsKKwlzdHJ1Y3QgaWd0X21hdDQgbSA9IGlndF95Y2Jjcl90b19yZ2JfbWF0cml4KGZiX3AwMXgt PmRybV9mb3JtYXQsCisJCQkJCQkgICAgZmJfZmxvYXQtPmRybV9mb3JtYXQsCisJCQkJCQkgICAg ZmJfcDAxeC0+Y29sb3JfZW5jb2RpbmcsCisJCQkJCQkgICAgZmJfcDAxeC0+Y29sb3JfcmFuZ2Up OworCisJeSA9IGJ1ZiArIGZiX3AwMXgtPm9mZnNldHNbMF07CisJdXYgPSBidWYgKyBmYl9wMDF4 LT5vZmZzZXRzWzFdOworCisJZm9yIChpID0gMDsgaSA8IGZiX3AwMXgtPmhlaWdodCAvIDI7IGkr KykgeworCQlmb3IgKGogPSAwOyBqIDwgZmJfcDAxeC0+d2lkdGggLyAyOyBqKyspIHsKKwkJCS8q IENvbnZlcnQgMngyIHBpeGVsIGJsb2NrcyAqLworCQkJc3RydWN0IGlndF92ZWM0IHl1dls0XTsK KwkJCXN0cnVjdCBpZ3RfdmVjNCByZ2JbNF07CisKKwkJCXl1dlswXS5kWzBdID0geVtqICogMiAr IDBdOworCQkJeXV2WzFdLmRbMF0gPSB5W2ogKiAyICsgMV07CisJCQl5dXZbMl0uZFswXSA9IHlb aiAqIDIgKyAwICsgcGxhbmFyX3N0cmlkZV07CisJCQl5dXZbM10uZFswXSA9IHlbaiAqIDIgKyAx ICsgcGxhbmFyX3N0cmlkZV07CisKKwkJCXl1dlswXS5kWzFdID0geXV2WzFdLmRbMV0gPSB5dXZb Ml0uZFsxXSA9IHl1dlszXS5kWzFdID0gdXZbaiAqIDIgKyAwXTsKKwkJCXl1dlswXS5kWzJdID0g eXV2WzFdLmRbMl0gPSB5dXZbMl0uZFsyXSA9IHl1dlszXS5kWzJdID0gdXZbaiAqIDIgKyAxXTsK KwkJCXl1dlswXS5kWzNdID0geXV2WzFdLmRbM10gPSB5dXZbMl0uZFszXSA9IHl1dlszXS5kWzNd ID0gMS4wZjsKKworCQkJcmdiWzBdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbMF0p OworCQkJcmdiWzFdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbMV0pOworCQkJcmdi WzJdID0gaWd0X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbMl0pOworCQkJcmdiWzNdID0gaWd0 X21hdHJpeF90cmFuc2Zvcm0oJm0sICZ5dXZbM10pOworCisJCQl3cml0ZV9yZ2JmKCZwdHJbaiAq IDYgKyAwXSwgJnJnYlswXSk7CisJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIDYgKyAzXSwgJnJnYlsx XSk7CisJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIDYgKyAwICsgZmxvYXRfc3RyaWRlXSwgJnJnYlsy XSk7CisJCQl3cml0ZV9yZ2JmKCZwdHJbaiAqIDYgKyAzICsgZmxvYXRfc3RyaWRlXSwgJnJnYlsz XSk7CisJCX0KKworCQlwdHIgKz0gMiAqIGZsb2F0X3N0cmlkZTsKKwkJeSArPSAyICogcGxhbmFy X3N0cmlkZTsKKwkJdXYgKz0gcGxhbmFyX3N0cmlkZTsKKwl9CisKKwljb252ZXJ0X3NyY19wdXQo Y3Z0LCBidWYpOworfQorCitzdGF0aWMgdm9pZCBjb252ZXJ0X2Zsb2F0X3RvX3AwMVgoc3RydWN0 IGZiX2NvbnZlcnQgKmN2dCkKK3sKKwlpbnQgaSwgajsKKwlzdHJ1Y3QgaWd0X2ZiICpmYl9mbG9h dCA9IGN2dC0+c3JjLmZiOworCXN0cnVjdCBpZ3RfZmIgKmZiX3AwMXggPSBjdnQtPmRzdC5mYjsK Kwl1aW50MTZfdCAqeSA9IGN2dC0+ZHN0LnB0ciArIGZiX3AwMXgtPm9mZnNldHNbMF07CisJdWlu dDE2X3QgKnV2ID0gY3Z0LT5kc3QucHRyICsgZmJfcDAxeC0+b2Zmc2V0c1sxXTsKKwljb25zdCBm bG9hdCAqcHRyID0gY3Z0LT5zcmMucHRyICsgZmJfZmxvYXQtPm9mZnNldHNbMF07CisJdW5zaWdu ZWQgZmxvYXRfc3RyaWRlID0gZmJfZmxvYXQtPnN0cmlkZXNbMF0gLyBzaXplb2YoKnB0cik7CisJ dW5zaWduZWQgcGxhbmFyX3N0cmlkZSA9IGZiX3AwMXgtPnN0cmlkZXNbMF0gLyBzaXplb2YoKnkp OworCXN0cnVjdCBpZ3RfbWF0NCBtID0gaWd0X3JnYl90b195Y2Jjcl9tYXRyaXgoZmJfZmxvYXQt PmRybV9mb3JtYXQsCisJCQkJCQkgICAgZmJfcDAxeC0+ZHJtX2Zvcm1hdCwKKwkJCQkJCSAgICBm Yl9wMDF4LT5jb2xvcl9lbmNvZGluZywKKwkJCQkJCSAgICBmYl9wMDF4LT5jb2xvcl9yYW5nZSk7 CisKKwlmb3IgKGkgPSAwOyBpIDwgZmJfcDAxeC0+aGVpZ2h0IC8gMjsgaSsrKSB7CisJCWZvciAo aiA9IDA7IGogPCBmYl9wMDF4LT53aWR0aCAvIDI7IGorKykgeworCQkJLyogQ29udmVydCAyeDIg cGl4ZWwgYmxvY2tzICovCisJCQlzdHJ1Y3QgaWd0X3ZlYzQgcmdiWzRdOworCQkJc3RydWN0IGln dF92ZWM0IHl1dls0XTsKKworCQkJcmVhZF9yZ2JmKCZyZ2JbMF0sICZwdHJbaiAqIDYgKyAwXSk7 CisJCQlyZWFkX3JnYmYoJnJnYlsxXSwgJnB0cltqICogNiArIDNdKTsKKwkJCXJlYWRfcmdiZigm cmdiWzJdLCAmcHRyW2ogKiA2ICsgMCArIGZsb2F0X3N0cmlkZV0pOworCQkJcmVhZF9yZ2JmKCZy Z2JbM10sICZwdHJbaiAqIDYgKyAzICsgZmxvYXRfc3RyaWRlXSk7CisKKwkJCXl1dlswXSA9IGln dF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdiWzBdKTsKKwkJCXl1dlsxXSA9IGlndF9tYXRyaXhf dHJhbnNmb3JtKCZtLCAmcmdiWzFdKTsKKwkJCXl1dlsyXSA9IGlndF9tYXRyaXhfdHJhbnNmb3Jt KCZtLCAmcmdiWzJdKTsKKwkJCXl1dlszXSA9IGlndF9tYXRyaXhfdHJhbnNmb3JtKCZtLCAmcmdi WzNdKTsKKworCQkJeVtqICogMiArIDBdID0geXV2WzBdLmRbMF07CisJCQl5W2ogKiAyICsgMV0g PSB5dXZbMV0uZFswXTsKKwkJCXlbaiAqIDIgKyAwICsgcGxhbmFyX3N0cmlkZV0gPSB5dXZbMl0u ZFswXTsKKwkJCXlbaiAqIDIgKyAxICsgcGxhbmFyX3N0cmlkZV0gPSB5dXZbM10uZFswXTsKKwor CQkJLyoKKwkJCSAqIFdlIGFzc3VtZSB0aGUgTVBFRzIgY2hyb21hIHNpdGluZyBjb252ZW50aW9u LCB3aGVyZQorCQkJICogcGl4ZWwgY2VudGVyIGZvciBDYidDcicgaXMgYmV0d2VlbiB0aGUgbGVm dCB0b3AgYW5kCisJCQkgKiBib3R0b20gcGl4ZWwgaW4gYSAyeDIgYmxvY2ssIHNvIHRha2UgdGhl IGF2ZXJhZ2UuCisJCQkgKi8KKwkJCXV2W2ogKiAyICsgMF0gPSAoeXV2WzBdLmRbMV0gKyB5dXZb Ml0uZFsxXSkgLyAyLjBmOworCQkJdXZbaiAqIDIgKyAxXSA9ICh5dXZbMF0uZFsyXSArIHl1dlsy XS5kWzJdKSAvIDIuMGY7CisJCX0KKworCQlwdHIgKz0gMiAqIGZsb2F0X3N0cmlkZTsKKwkJeSAr PSAyICogcGxhbmFyX3N0cmlkZTsKKwkJdXYgKz0gcGxhbmFyX3N0cmlkZTsKKwl9Cit9CisKIHN0 YXRpYyB2b2lkIGNvbnZlcnRfcGl4bWFuKHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiB7CiAJcGl4 bWFuX2Zvcm1hdF9jb2RlX3Qgc3JjX3BpeG1hbiA9IGRybV9mb3JtYXRfdG9fcGl4bWFuKGN2dC0+ c3JjLmZiLT5kcm1fZm9ybWF0KTsKQEAgLTIwNTgsNiArMjIyOCwyMiBAQCBzdGF0aWMgdm9pZCBm Yl9jb252ZXJ0KHN0cnVjdCBmYl9jb252ZXJ0ICpjdnQpCiAJCQljb252ZXJ0X3JnYjI0X3RvX3l1 eXYoY3Z0KTsKIAkJCXJldHVybjsKIAkJfQorCX0gZWxzZSBpZiAoY3Z0LT5kc3QuZmItPmRybV9m b3JtYXQgPT0gSUdUX0ZPUk1BVF9GTE9BVCkgeworCQlzd2l0Y2ggKGN2dC0+c3JjLmZiLT5kcm1f Zm9ybWF0KSB7CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgorCQljYXNlIERSTV9GT1JNQVRfUDAx MjoKKwkJY2FzZSBEUk1fRk9STUFUX1AwMTY6CisJCQljb252ZXJ0X3AwMVhfdG9fZmxvYXQoY3Z0 KTsKKwkJCXJldHVybjsKKwkJfQorCX0gZWxzZSBpZiAoY3Z0LT5zcmMuZmItPmRybV9mb3JtYXQg PT0gSUdUX0ZPUk1BVF9GTE9BVCkgeworCQlzd2l0Y2ggKGN2dC0+ZHN0LmZiLT5kcm1fZm9ybWF0 KSB7CisJCWNhc2UgRFJNX0ZPUk1BVF9QMDEwOgorCQljYXNlIERSTV9GT1JNQVRfUDAxMjoKKwkJ Y2FzZSBEUk1fRk9STUFUX1AwMTY6CisJCQljb252ZXJ0X2Zsb2F0X3RvX3AwMVgoY3Z0KTsKKwkJ CXJldHVybjsKKwkJfQogCX0KIAogCWlndF9hc3NlcnRfZihmYWxzZSwKQEAgLTIwOTgsMTEgKzIy ODQsMzYgQEAgc3RhdGljIHZvaWQgY3JlYXRlX2NhaXJvX3N1cmZhY2VfX2NvbnZlcnQoaW50IGZk LCBzdHJ1Y3QgaWd0X2ZiICpmYikKIHsKIAlzdHJ1Y3QgZmJfY29udmVydF9ibGl0X3VwbG9hZCAq YmxpdCA9IG1hbGxvYyhzaXplb2YoKmJsaXQpKTsKIAlzdHJ1Y3QgZmJfY29udmVydCBjdnQgPSB7 IH07CisJY29uc3Qgc3RydWN0IGZvcm1hdF9kZXNjX3N0cnVjdCAqZiA9IGxvb2t1cF9kcm1fZm9y bWF0KGZiLT5kcm1fZm9ybWF0KTsKKwl1bnNpZ25lZCBkcm1fZm9ybWF0OworCWNhaXJvX2Zvcm1h dF90IGNhaXJvX2lkOworCisJaWYgKGYtPmNhaXJvX2lkICE9IENBSVJPX0ZPUk1BVF9JTlZBTElE KSB7CisJCWNhaXJvX2lkID0gZi0+Y2Fpcm9faWQ7CisKKwkJc3dpdGNoIChmLT5jYWlyb19pZCkg eworCQljYXNlIENBSVJPX0ZPUk1BVF9SR0I5NkY6CisJCWNhc2UgQ0FJUk9fRk9STUFUX1JHQkEx MjhGOgorCQkJZHJtX2Zvcm1hdCA9IElHVF9GT1JNQVRfRkxPQVQ7CisJCQlicmVhazsKKwkJY2Fz ZSBDQUlST19GT1JNQVRfUkdCMjQ6CisJCQlkcm1fZm9ybWF0ID0gRFJNX0ZPUk1BVF9YUkdCODg4 ODsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJaWd0X2Fzc2VydF9mKDAsICJVbnN1cHBvcnRl ZCBmb3JtYXQgJXUiLCBmLT5jYWlyb19pZCk7CisJCX0KKwl9IGVsc2UgaWYgKFBJWE1BTl9GT1JN QVRfQShmLT5waXhtYW5faWQpKSB7CisJCWNhaXJvX2lkID0gQ0FJUk9fRk9STUFUX0FSR0IzMjsK KwkJZHJtX2Zvcm1hdCA9IERSTV9GT1JNQVRfQVJHQjg4ODg7CisJfSBlbHNlIHsKKwkJY2Fpcm9f aWQgPSBDQUlST19GT1JNQVRfUkdCMjQ7CisJCWRybV9mb3JtYXQgPSBEUk1fRk9STUFUX1hSR0I4 ODg4OworCX0KIAogCWlndF9hc3NlcnQoYmxpdCk7CiAJYmxpdC0+YmFzZS5mZCA9IGZkOwogCWJs aXQtPmJhc2UuZmIgPSBmYjsKLQlibGl0LT5zaGFkb3dfcHRyID0gaWd0X2ZiX2NyZWF0ZV9jYWly b19zaGFkb3dfYnVmZmVyKGZkLAorCWJsaXQtPnNoYWRvd19wdHIgPSBpZ3RfZmJfY3JlYXRlX2Nh aXJvX3NoYWRvd19idWZmZXIoZmQsIGRybV9mb3JtYXQsCiAJCQkJCQkJICAgICBmYi0+d2lkdGgs CiAJCQkJCQkJICAgICBmYi0+aGVpZ2h0LAogCQkJCQkJCSAgICAgJmJsaXQtPnNoYWRvd19mYik7 CkBAIC0yMTI5LDcgKzIzNDAsNyBAQCBzdGF0aWMgdm9pZCBjcmVhdGVfY2Fpcm9fc3VyZmFjZV9f Y29udmVydChpbnQgZmQsIHN0cnVjdCBpZ3RfZmIgKmZiKQogCiAJZmItPmNhaXJvX3N1cmZhY2Ug PQogCQljYWlyb19pbWFnZV9zdXJmYWNlX2NyZWF0ZV9mb3JfZGF0YShibGl0LT5zaGFkb3dfcHRy LAotCQkJCQkJICAgIENBSVJPX0ZPUk1BVF9SR0IyNCwKKwkJCQkJCSAgICBjYWlyb19pZCwKIAkJ CQkJCSAgICBmYi0+d2lkdGgsIGZiLT5oZWlnaHQsCiAJCQkJCQkgICAgYmxpdC0+c2hhZG93X2Zi LnN0cmlkZXNbMF0pOwogCkBAIC0yMTk0LDYgKzI0MDUsMjEgQEAgY2Fpcm9fc3VyZmFjZV90ICpp Z3RfZ2V0X2NhaXJvX3N1cmZhY2UoaW50IGZkLCBzdHJ1Y3QgaWd0X2ZiICpmYikKIAkJCWNyZWF0 ZV9jYWlyb19zdXJmYWNlX19ibGl0KGZkLCBmYik7CiAJCWVsc2UKIAkJCWNyZWF0ZV9jYWlyb19z dXJmYWNlX19ndHQoZmQsIGZiKTsKKworCQlpZiAoZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFU X1JHQjk2RiB8fAorCQkgICAgZi0+Y2Fpcm9faWQgPT0gQ0FJUk9fRk9STUFUX1JHQkExMjhGKSB7 CisJCQljYWlyb19zdGF0dXNfdCBzdGF0dXMgPSBjYWlyb19zdXJmYWNlX3N0YXR1cyhmYi0+Y2Fp cm9fc3VyZmFjZSk7CisKKwkJCWlndF9za2lwX29uX2Yoc3RhdHVzID09IENBSVJPX1NUQVRVU19J TlZBTElEX0ZPUk1BVCAmJgorCQkJCSAgICAgIGNhaXJvX3ZlcnNpb24oKSA8IENBSVJPX1ZFUlNJ T05fRU5DT0RFKDEsIDE3LCAyKSwKKwkJCQkgICAgICAiQ2Fpcm8gdmVyc2lvbiB0b28gb2xkLCBu ZWVkIDEuMTcuMiwgaGF2ZSAlc1xuIiwKKwkJCQkgICAgICBjYWlyb192ZXJzaW9uX3N0cmluZygp KTsKKworCQkJaWd0X3NraXBfb25fZihzdGF0dXMgPT0gQ0FJUk9fU1RBVFVTX05PX01FTU9SWSAm JgorCQkJCSAgICAgIHBpeG1hbl92ZXJzaW9uKCkgPCBQSVhNQU5fVkVSU0lPTl9FTkNPREUoMCwg MzYsIDApLAorCQkJCSAgICAgICJQaXhtYW4gdmVyc2lvbiB0b28gb2xkLCBuZWVkIDAuMzYuMCwg aGF2ZSAlc1xuIiwKKwkJCQkgICAgICBwaXhtYW5fdmVyc2lvbl9zdHJpbmcoKSk7CisJCX0KIAl9 CiAKIAlpZ3RfYXNzZXJ0KGNhaXJvX3N1cmZhY2Vfc3RhdHVzKGZiLT5jYWlyb19zdXJmYWNlKSA9 PSBDQUlST19TVEFUVVNfU1VDQ0VTUyk7CkBAIC0yNDAwLDYgKzI2MjYsOSBAQCBib29sIGlndF9m b3JtYXRfaXNfeXV2KHVpbnQzMl90IGRybV9mb3JtYXQpCiB7CiAJc3dpdGNoIChkcm1fZm9ybWF0 KSB7CiAJY2FzZSBEUk1fRk9STUFUX05WMTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTA6CisJY2Fz ZSBEUk1fRk9STUFUX1AwMTI6CisJY2FzZSBEUk1fRk9STUFUX1AwMTY6CiAJY2FzZSBEUk1fRk9S TUFUX1lVWVY6CiAJY2FzZSBEUk1fRk9STUFUX1lWWVU6CiAJY2FzZSBEUk1fRk9STUFUX1VZVlk6 CmRpZmYgLS1naXQgYS9saWIvaWd0X2ZiLmggYi9saWIvaWd0X2ZiLmgKaW5kZXggOWYwMjdkZWJh ODQyLi44YzY4M2RiNWU5ZWMgMTAwNjQ0Ci0tLSBhL2xpYi9pZ3RfZmIuaAorKysgYi9saWIvaWd0 X2ZiLmgKQEAgLTM4LDYgKzM4LDEyIEBACiAKICNpbmNsdWRlICJpZ3RfY29sb3JfZW5jb2Rpbmcu aCIKIAorLyoKKyAqIEludGVybmFsIGZvcm1hdCB0byBkZW5vdGUgYSBidWZmZXIgY29tcGF0aWJs ZSB3aXRoIHBpeG1hbidzCisgKiBmbG9hdGluZyBwb2ludCBmb3JtYXQuIFJhbmdlIFswLTFdLgor ICovCisjZGVmaW5lIElHVF9GT1JNQVRfRkxPQVQgZm91cmNjX2NvZGUoJ0knLCAnRycsICdGJywg J3gnKQorCiAvKioKICAqIGlndF9mYl90OgogICogQGZiX2lkOiBLTVMgSUQgb2YgdGhlIGZyYW1l YnVmZmVyCmRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCmluZGV4IGIxN2U2 N2VmN2YwNS4uZmZmZTg2MjcwZDFhIDEwMDY0NAotLS0gYS9tZXNvbi5idWlsZAorKysgYi9tZXNv bi5idWlsZApAQCAtMzM2LDMgKzMzNiwxMyBAQCBtZXNzYWdlKCc9PT09PT09PT09PT09JykKIGZv cmVhY2ggc3RyIDogYnVpbGRfaW5mbwogCW1lc3NhZ2Uoc3RyKQogZW5kZm9yZWFjaAorCitpZiBj YWlyby52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc8MS4xNy4yJykKKwlpZiBwaXhtYW4udmVy c2lvbigpLnZlcnNpb25fY29tcGFyZSgnPDAuMzYuMCcpCisJCXdhcm5pbmcoJ1BpeG1hbiA8IDAu MzYuMCBmb3VuZCwgY2Fubm90IHRlc3QgSERSIGZvcm1hdHMnKQorCWVuZGlmCisJd2FybmluZygn Q2Fpcm8gPCAxLjE3LjIgZm91bmQsIGNhbm5vdCB0ZXN0IEhEUiBmb3JtYXRzJykKK2VsaWYgbm90 IHBpeG1hbi52ZXJzaW9uKCkudmVyc2lvbl9jb21wYXJlKCc8MC4zNi4wJykKKwkjIENhaXJvIDEu MTcuMiByZXF1aXJlcyAwLjM2LjAgdG8gY29tcGlsZSwgYnV0IHNvbWVob3cgaXQgd2VudCBtaXNz aW5nPworCWVycm9yKCdDYWlybyB3aXRoIGZsb2F0aW5nIHBvaW50IHN1cHBvcnQgZm91bmQsIGJ1 dCBwaXhtYW4gdmVyc2lvbiB0b28gb2xkJykKK2VuZGlmCi0tIAoyLjIwLjEKCl9fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmlndC1kZXYgbWFpbGluZyBsaXN0 CmlndC1kZXZAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMuZnJlZWRlc2t0b3Au b3JnL21haWxtYW4vbGlzdGluZm8vaWd0LWRldgo=