From mboxrd@z Thu Jan 1 00:00:00 1970 From: Mika Kuoppala Subject: [PATCH i-g-t 2/3] lib/igt_dummyload: Get rid of 'batch' on spinner accessors Date: Wed, 17 Apr 2019 18:28:33 +0300 Message-ID: <20190417152834.12705-2-mika.kuoppala@linux.intel.com> References: <20190417152834.12705-1-mika.kuoppala@linux.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTPS id F1A666E06C for ; Wed, 17 Apr 2019 15:28:47 +0000 (UTC) In-Reply-To: <20190417152834.12705-1-mika.kuoppala@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: intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org VGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgc3Bpbm5lcnMgYXJlIGFuZCB3aWxsIGJlIGltcGxl bWVudGVkCnVzaW5nIGJhdGNoZXMuIEFzIHdlIGhhdmUgaWd0X3NwaW5fdCwgbWFuaXB1bGF0ZSBp dCB0aHJvdWdoCmlndF9zcGluXyogZnVuY3Rpb25zIGNvbnNpc3RlbnRseSBhbmQgaGlkZSB0aGUg YmF0Y2ggbmF0dXJlLgoKQ2M6IENocmlzIFdpbHNvbiA8Y2hyaXNAY2hyaXMtd2lsc29uLmNvLnVr PgpTaWduZWQtb2ZmLWJ5OiBNaWthIEt1b3BwYWxhIDxtaWthLmt1b3BwYWxhQGxpbnV4LmludGVs LmNvbT4KLS0tCiBsaWIvZHJtdGVzdC5jICAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBs aWIvaWd0X2NvcmUuYyAgICAgICAgICAgICAgICAgICAgICB8ICA0ICstCiBsaWIvaWd0X2R1bW15 bG9hZC5jICAgICAgICAgICAgICAgICB8IDQ4ICsrKysrKystLS0tLS0tCiBsaWIvaWd0X2R1bW15 bG9hZC5oICAgICAgICAgICAgICAgICB8IDIwICsrKy0tLQogbGliL2lndF9ndC5jICAgICAgICAg ICAgICAgICAgICAgICAgfCAxMCArLS0KIHRlc3RzL2k5MTUvZ2VtX2J1c3kuYyAgICAgICAgICAg ICAgIHwgMzQgKysrKystLS0tLQogdGVzdHMvaTkxNS9nZW1fY3R4X2V4ZWMuYyAgICAgICAgICAg fCAxMCArLS0KIHRlc3RzL2k5MTUvZ2VtX2N0eF9pc29sYXRpb24uYyAgICAgIHwgMjAgKysrLS0t CiB0ZXN0cy9pOTE1L2dlbV9laW8uYyAgICAgICAgICAgICAgICB8IDE4ICsrKy0tLQogdGVzdHMv aTkxNS9nZW1fZXhlY19mZW5jZS5jICAgICAgICAgfCAzMiArKysrKy0tLS0tCiB0ZXN0cy9pOTE1 L2dlbV9leGVjX2xhdGVuY3kuYyAgICAgICB8IDM4ICsrKysrLS0tLS0tCiB0ZXN0cy9pOTE1L2dl bV9leGVjX25vcC5jICAgICAgICAgICB8ICA4ICstLQogdGVzdHMvaTkxNS9nZW1fZXhlY19yZWxv Yy5jICAgICAgICAgfCAyNiArKysrLS0tLQogdGVzdHMvaTkxNS9nZW1fZXhlY19zY2hlZHVsZS5j ICAgICAgfCA5MiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHRlc3RzL2k5MTUvZ2VtX2V4 ZWNfc3VzcGVuZC5jICAgICAgIHwgIDQgKy0KIHRlc3RzL2k5MTUvZ2VtX2ZlbmNlZF9leGVjX3Ro cmFzaC5jIHwgIDQgKy0KIHRlc3RzL2k5MTUvZ2VtX21tYXAuYyAgICAgICAgICAgICAgIHwgIDQg Ky0KIHRlc3RzL2k5MTUvZ2VtX21tYXBfZ3R0LmMgICAgICAgICAgIHwgIDQgKy0KIHRlc3RzL2k5 MTUvZ2VtX21tYXBfd2MuYyAgICAgICAgICAgIHwgIDQgKy0KIHRlc3RzL2k5MTUvZ2VtX3Nocmlu ay5jICAgICAgICAgICAgIHwgMTAgKy0tCiB0ZXN0cy9pOTE1L2dlbV9zcGluX2JhdGNoLmMgICAg ICAgICB8IDIwICsrKy0tLQogdGVzdHMvaTkxNS9nZW1fc3luYy5jICAgICAgICAgICAgICAgfCA3 NCArKysrKysrKysrKy0tLS0tLS0tLS0tCiB0ZXN0cy9pOTE1L2dlbV93YWl0LmMgICAgICAgICAg ICAgICB8IDEyICsrLS0KIHRlc3RzL2k5MTUvaTkxNV9wbV9ycHMuYyAgICAgICAgICAgIHwgMjYg KysrKy0tLS0KIHRlc3RzL2ttc19idXN5LmMgICAgICAgICAgICAgICAgICAgIHwgMjYgKysrKy0t LS0KIHRlc3RzL2ttc19jdXJzb3JfbGVnYWN5LmMgICAgICAgICAgIHwgMTIgKystLQogdGVzdHMv cGVyZl9wbXUuYyAgICAgICAgICAgICAgICAgICAgfCA5OCArKysrKysrKysrKysrKy0tLS0tLS0t LS0tLS0tLQogMjcgZmlsZXMgY2hhbmdlZCwgMzMxIGluc2VydGlvbnMoKyksIDMzMSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9saWIvZHJtdGVzdC5jIGIvbGliL2RybXRlc3QuYwppbmRleCBk MzFhZGUzZi4uNGE5MmZiNWMgMTAwNjQ0Ci0tLSBhL2xpYi9kcm10ZXN0LmMKKysrIGIvbGliL2Ry bXRlc3QuYwpAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBjb25zdCBjaGFyICpmb3JjZWRfZHJp dmVyKHZvaWQpCiAgKi8KIHZvaWQgZ2VtX3F1aWVzY2VudF9ncHUoaW50IGZkKQogewotCWlndF90 ZXJtaW5hdGVfc3Bpbl9iYXRjaGVzKCk7CisJaWd0X3Rlcm1pbmF0ZV9zcGlucygpOwogCiAJaWd0 X2Ryb3BfY2FjaGVzX3NldChmZCwKIAkJCSAgICBEUk9QX0FDVElWRSB8IERST1BfUkVUSVJFIHwg RFJPUF9JRExFIHwgRFJPUF9GUkVFRCk7CkBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIGludCBh dF9leGl0X2RybV9yZW5kZXJfZmQgPSAtMTsKIAogc3RhdGljIHZvaWQgX19jYW5jZWxfd29ya19h dF9leGl0KGludCBmZCkKIHsKLQlpZ3RfdGVybWluYXRlX3NwaW5fYmF0Y2hlcygpOyAvKiBmb3Ig b2xkZXIga2VybmVscyAqLworCWlndF90ZXJtaW5hdGVfc3BpbnMoKTsgLyogZm9yIG9sZGVyIGtl cm5lbHMgKi8KIAogCWlndF9zeXNmc19zZXRfcGFyYW1ldGVyKGZkLCAicmVzZXQiLCAiJXgiLCAt MXUgLyogYW55IG1ldGhvZCAqLyk7CiAJaWd0X2Ryb3BfY2FjaGVzX3NldChmZCwKZGlmZiAtLWdp dCBhL2xpYi9pZ3RfY29yZS5jIGIvbGliL2lndF9jb3JlLmMKaW5kZXggYWUwM2U5MDkuLjMxNDFk OTIzIDEwMDY0NAotLS0gYS9saWIvaWd0X2NvcmUuYworKysgYi9saWIvaWd0X2NvcmUuYwpAQCAt MTAwNyw3ICsxMDA3LDcgQEAgc3RhdGljIHZvaWQgZXhpdF9zdWJ0ZXN0KGNvbnN0IGNoYXIgKnJl c3VsdCkKIAkJZnByaW50ZihzdGRlcnIsICJTdWJ0ZXN0ICVzOiAlcyAoJS4zZnMpXG4iLAogCQkJ aW5fc3VidGVzdCwgcmVzdWx0LCBpZ3RfdGltZV9lbGFwc2VkKCZzdWJ0ZXN0X3RpbWUsICZub3cp KTsKIAotCWlndF90ZXJtaW5hdGVfc3Bpbl9iYXRjaGVzKCk7CisJaWd0X3Rlcm1pbmF0ZV9zcGlu cygpOwogCiAJaW5fc3VidGVzdCA9IE5VTEw7CiAJc2lnbG9uZ2ptcChpZ3Rfc3VidGVzdF9qbXBi dWYsIDEpOwpAQCAtMTkxNSw3ICsxOTE1LDcgQEAgc3RhdGljIHZvaWQgY2FsbF9leGl0X2hhbmRs ZXJzKGludCBzaWcpCiB7CiAJaW50IGk7CiAKLQlpZ3RfdGVybWluYXRlX3NwaW5fYmF0Y2hlcygp OworCWlndF90ZXJtaW5hdGVfc3BpbnMoKTsKIAogCWlmICghZXhpdF9oYW5kbGVyX2NvdW50KSB7 CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2xpYi9pZ3RfZHVtbXlsb2FkLmMgYi9saWIvaWd0X2R1 bW15bG9hZC5jCmluZGV4IDQ5YjY5NzM3Li5iOWQ1NDQ1MCAxMDA2NDQKLS0tIGEvbGliL2lndF9k dW1teWxvYWQuYworKysgYi9saWIvaWd0X2R1bW15bG9hZC5jCkBAIC0yNzIsNyArMjcyLDcgQEAg ZW1pdF9yZWN1cnNpdmVfYmF0Y2goaWd0X3NwaW5fdCAqc3BpbiwKIH0KIAogc3RhdGljIGlndF9z cGluX3QgKgotc3Bpbl9iYXRjaF9jcmVhdGUoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0X3NwaW5f ZmFjdG9yeSAqb3B0cykKK3NwaW5fY3JlYXRlKGludCBmZCwgY29uc3Qgc3RydWN0IGlndF9zcGlu X2ZhY3RvcnkgKm9wdHMpCiB7CiAJaWd0X3NwaW5fdCAqc3BpbjsKIApAQCAtMjg5LDI1ICsyODks MjUgQEAgc3Bpbl9iYXRjaF9jcmVhdGUoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0X3NwaW5fZmFj dG9yeSAqb3B0cykKIH0KIAogaWd0X3NwaW5fdCAqCi1fX2lndF9zcGluX2JhdGNoX2ZhY3Rvcnko aW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSAqb3B0cykKK19faWd0X3NwaW5f ZmFjdG9yeShpbnQgZmQsIGNvbnN0IHN0cnVjdCBpZ3Rfc3Bpbl9mYWN0b3J5ICpvcHRzKQogewot CXJldHVybiBzcGluX2JhdGNoX2NyZWF0ZShmZCwgb3B0cyk7CisJcmV0dXJuIHNwaW5fY3JlYXRl KGZkLCBvcHRzKTsKIH0KIAogLyoqCi0gKiBpZ3Rfc3Bpbl9iYXRjaF9mYWN0b3J5OgorICogaWd0 X3NwaW5fZmFjdG9yeToKICAqIEBmZDogb3BlbiBpOTE1IGRybSBmaWxlIGRlc2NyaXB0b3IKICAq IEBvcHRzOiBjb250cm9sbGluZyBvcHRpb25zIHN1Y2ggYXMgY29udGV4dCwgZW5naW5lLCBkZXBl bmRlbmNpZXMgZXRjCiAgKgogICogU3RhcnQgYSByZWN1cnNpdmUgYmF0Y2ggb24gYSByaW5nLiBJ bW1lZGlhdGVseSByZXR1cm5zIGEgI2lndF9zcGluX3QgdGhhdAogICogY29udGFpbnMgdGhlIGJh dGNoJ3MgaGFuZGxlIHRoYXQgY2FuIGJlIHdhaXRlZCB1cG9uLiBUaGUgcmV0dXJuZWQgc3RydWN0 dXJlCi0gKiBtdXN0IGJlIHBhc3NlZCB0byBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKCkgZm9yIHBvc3Qt cHJvY2Vzc2luZy4KKyAqIG11c3QgYmUgcGFzc2VkIHRvIGlndF9zcGluX2ZyZWUoKSBmb3IgcG9z dC1wcm9jZXNzaW5nLgogICoKICAqIFJldHVybnM6Ci0gKiBTdHJ1Y3R1cmUgd2l0aCBoZWxwZXIg aW50ZXJuYWwgc3RhdGUgZm9yIGlndF9zcGluX2JhdGNoX2ZyZWUoKS4KKyAqIFN0cnVjdHVyZSB3 aXRoIGhlbHBlciBpbnRlcm5hbCBzdGF0ZSBmb3IgaWd0X3NwaW5fZnJlZSgpLgogICovCiBpZ3Rf c3Bpbl90ICoKLWlndF9zcGluX2JhdGNoX2ZhY3RvcnkoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0 X3NwaW5fZmFjdG9yeSAqb3B0cykKK2lndF9zcGluX2ZhY3RvcnkoaW50IGZkLCBjb25zdCBzdHJ1 Y3QgaWd0X3NwaW5fZmFjdG9yeSAqb3B0cykKIHsKIAlpZ3Rfc3Bpbl90ICpzcGluOwogCkBAIC0z MTksNyArMzE5LDcgQEAgaWd0X3NwaW5fYmF0Y2hfZmFjdG9yeShpbnQgZmQsIGNvbnN0IHN0cnVj dCBpZ3Rfc3Bpbl9mYWN0b3J5ICpvcHRzKQogCQkJaWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9k d29yZChmZCwgb3B0cy0+ZW5naW5lKSk7CiAJfQogCi0Jc3BpbiA9IHNwaW5fYmF0Y2hfY3JlYXRl KGZkLCBvcHRzKTsKKwlzcGluID0gc3Bpbl9jcmVhdGUoZmQsIG9wdHMpOwogCiAJaWd0X2Fzc2Vy dChnZW1fYm9fYnVzeShmZCwgc3Bpbi0+aGFuZGxlKSk7CiAJaWYgKG9wdHMtPmZsYWdzICYgSUdU X1NQSU5fRkVOQ0VfT1VUKSB7CkBAIC0zMzUsMTkgKzMzNSwxOSBAQCBzdGF0aWMgdm9pZCBub3Rp ZnkodW5pb24gc2lndmFsIGFyZykKIHsKIAlpZ3Rfc3Bpbl90ICpzcGluID0gYXJnLnNpdmFsX3B0 cjsKIAotCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKKwlpZ3Rfc3Bpbl9lbmQoc3Bpbik7CiB9 CiAKIC8qKgotICogaWd0X3NwaW5fYmF0Y2hfc2V0X3RpbWVvdXQ6Ci0gKiBAc3Bpbjogc3BpbiBi YXRjaCBzdGF0ZSBmcm9tIGlndF9zcGluX2JhdGNoX25ldygpCisgKiBpZ3Rfc3Bpbl9zZXRfdGlt ZW91dDoKKyAqIEBzcGluOiBzcGluIHN0YXRlIGZyb20gaWd0X3NwaW5fbmV3KCkKICAqIEBuczog YW1vdW50IG9mIHRpbWUgaW4gbmFub3NlY29uZHMgdGhlIGJhdGNoIGNvbnRpbnVlcyB0byBleGVj dXRlCiAgKiAgICAgIGJlZm9yZSBmaW5pc2hpbmcuCiAgKgogICogU3BlY2lmeSBhIHRpbWVvdXQu IFRoaXMgZW5kcyB0aGUgcmVjdXJzaXZlIGJhdGNoIGFzc29jaWF0ZWQgd2l0aCBAc3BpbiBhZnRl cgogICogdGhlIHRpbWVvdXQgaGFzIGVsYXBzZWQuCiAgKi8KLXZvaWQgaWd0X3NwaW5fYmF0Y2hf c2V0X3RpbWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucykKK3ZvaWQgaWd0X3NwaW5f c2V0X3RpbWVvdXQoaWd0X3NwaW5fdCAqc3BpbiwgaW50NjRfdCBucykKIHsKIAl0aW1lcl90IHRp bWVyOwogCXN0cnVjdCBzaWdldmVudCBzZXY7CkBAIC0zNzUsMTIgKzM3NSwxMiBAQCB2b2lkIGln dF9zcGluX2JhdGNoX3NldF90aW1lb3V0KGlndF9zcGluX3QgKnNwaW4sIGludDY0X3QgbnMpCiB9 CiAKIC8qKgotICogaWd0X3NwaW5fYmF0Y2hfZW5kOgotICogQHNwaW46IHNwaW4gYmF0Y2ggc3Rh dGUgZnJvbSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoKQorICogaWd0X3NwaW5fZW5kOgorICogQHNwaW46 IHNwaW4gc3RhdGUgZnJvbSBpZ3Rfc3Bpbl9uZXcoKQogICoKLSAqIEVuZCB0aGUgcmVjdXJzaXZl IGJhdGNoIGFzc29jaWF0ZWQgd2l0aCBAc3BpbiBtYW51YWxseS4KKyAqIEVuZCB0aGUgc3Bpbm5l ciBhc3NvY2lhdGVkIHdpdGggQHNwaW4gbWFudWFsbHkuCiAgKi8KLXZvaWQgaWd0X3NwaW5fYmF0 Y2hfZW5kKGlndF9zcGluX3QgKnNwaW4pCit2b2lkIGlndF9zcGluX2VuZChpZ3Rfc3Bpbl90ICpz cGluKQogewogCWlmICghc3BpbikKIAkJcmV0dXJuOwpAQCAtMzkwLDE0ICszOTAsMTQgQEAgdm9p ZCBpZ3Rfc3Bpbl9iYXRjaF9lbmQoaWd0X3NwaW5fdCAqc3BpbikKIH0KIAogLyoqCi0gKiBpZ3Rf c3Bpbl9iYXRjaF9mcmVlOgorICogaWd0X3NwaW5fZnJlZToKICAqIEBmZDogb3BlbiBpOTE1IGRy bSBmaWxlIGRlc2NyaXB0b3IKLSAqIEBzcGluOiBzcGluIGJhdGNoIHN0YXRlIGZyb20gaWd0X3Nw aW5fYmF0Y2hfbmV3KCkKKyAqIEBzcGluOiBzcGluIHN0YXRlIGZyb20gaWd0X3NwaW5fbmV3KCkK ICAqCi0gKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3Npbmcg YWZ0ZXIgc3RhcnRpbmcgYSByZWN1cnNpdmUKLSAqIGJhdGNoIHdpdGggaWd0X3NwaW5fYmF0Y2hf bmV3KCkuCisgKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIG5lY2Vzc2FyeSBwb3N0LXByb2Nlc3Np bmcgYWZ0ZXIgc3RhcnRpbmcgYQorICogc3BpbiB3aXRoIGlndF9zcGluX25ldygpIGFuZCB0aGVu IGZyZWVzIGl0LgogICovCi12b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUoaW50IGZkLCBpZ3Rfc3Bp bl90ICpzcGluKQordm9pZCBpZ3Rfc3Bpbl9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbikK IHsKIAlpZiAoIXNwaW4pCiAJCXJldHVybjsKQEAgLTQwOSw3ICs0MDksNyBAQCB2b2lkIGlndF9z cGluX2JhdGNoX2ZyZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKQogCWlmIChzcGluLT50aW1l cikKIAkJdGltZXJfZGVsZXRlKHNwaW4tPnRpbWVyKTsKIAotCWlndF9zcGluX2JhdGNoX2VuZChz cGluKTsKKwlpZ3Rfc3Bpbl9lbmQoc3Bpbik7CiAJZ2VtX211bm1hcCgodm9pZCAqKSgodW5zaWdu ZWQgbG9uZylzcGluLT5iYXRjaCAmICh+NDA5NVVMKSksCiAJCSAgIEJBVENIX1NJWkUpOwogCkBA IC00MjYsMTMgKzQyNiwxMyBAQCB2b2lkIGlndF9zcGluX2JhdGNoX2ZyZWUoaW50IGZkLCBpZ3Rf c3Bpbl90ICpzcGluKQogCWZyZWUoc3Bpbik7CiB9CiAKLXZvaWQgaWd0X3Rlcm1pbmF0ZV9zcGlu X2JhdGNoZXModm9pZCkKK3ZvaWQgaWd0X3Rlcm1pbmF0ZV9zcGlucyh2b2lkKQogewogCXN0cnVj dCBpZ3Rfc3BpbiAqaXRlcjsKIAogCXB0aHJlYWRfbXV0ZXhfbG9jaygmbGlzdF9sb2NrKTsKIAlp Z3RfbGlzdF9mb3JfZWFjaChpdGVyLCAmc3Bpbl9saXN0LCBsaW5rKQotCQlpZ3Rfc3Bpbl9iYXRj aF9lbmQoaXRlcik7CisJCWlndF9zcGluX2VuZChpdGVyKTsKIAlwdGhyZWFkX211dGV4X3VubG9j aygmbGlzdF9sb2NrKTsKIH0KIApkaWZmIC0tZ2l0IGEvbGliL2lndF9kdW1teWxvYWQuaCBiL2xp Yi9pZ3RfZHVtbXlsb2FkLmgKaW5kZXggMzc5M2JmN2YuLmQ2NDgyMDg5IDEwMDY0NAotLS0gYS9s aWIvaWd0X2R1bW15bG9hZC5oCisrKyBiL2xpYi9pZ3RfZHVtbXlsb2FkLmgKQEAgLTU4LDE4ICs1 OCwxOCBAQCBzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSB7CiAjZGVmaW5lIElHVF9TUElOX05PX1BS RUVNUFRJT04gKDEgPDwgMykKIAogaWd0X3NwaW5fdCAqCi1fX2lndF9zcGluX2JhdGNoX2ZhY3Rv cnkoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSAqb3B0cyk7CitfX2lndF9z cGluX2ZhY3RvcnkoaW50IGZkLCBjb25zdCBzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSAqb3B0cyk7 CiBpZ3Rfc3Bpbl90ICoKLWlndF9zcGluX2JhdGNoX2ZhY3RvcnkoaW50IGZkLCBjb25zdCBzdHJ1 Y3QgaWd0X3NwaW5fZmFjdG9yeSAqb3B0cyk7CitpZ3Rfc3Bpbl9mYWN0b3J5KGludCBmZCwgY29u c3Qgc3RydWN0IGlndF9zcGluX2ZhY3RvcnkgKm9wdHMpOwogCi0jZGVmaW5lIF9faWd0X3NwaW5f YmF0Y2hfbmV3KGZkLCAuLi4pIFwKLQlfX2lndF9zcGluX2JhdGNoX2ZhY3RvcnkoZmQsICYoKHN0 cnVjdCBpZ3Rfc3Bpbl9mYWN0b3J5KXtfX1ZBX0FSR1NfX30pKQotI2RlZmluZSBpZ3Rfc3Bpbl9i YXRjaF9uZXcoZmQsIC4uLikgXAotCWlndF9zcGluX2JhdGNoX2ZhY3RvcnkoZmQsICYoKHN0cnVj dCBpZ3Rfc3Bpbl9mYWN0b3J5KXtfX1ZBX0FSR1NfX30pKQorI2RlZmluZSBfX2lndF9zcGluX25l dyhmZCwgLi4uKSBcCisJX19pZ3Rfc3Bpbl9mYWN0b3J5KGZkLCAmKChzdHJ1Y3QgaWd0X3NwaW5f ZmFjdG9yeSl7X19WQV9BUkdTX199KSkKKyNkZWZpbmUgaWd0X3NwaW5fbmV3KGZkLCAuLi4pIFwK KwlpZ3Rfc3Bpbl9mYWN0b3J5KGZkLCAmKChzdHJ1Y3QgaWd0X3NwaW5fZmFjdG9yeSl7X19WQV9B UkdTX199KSkKIAotdm9pZCBpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChpZ3Rfc3Bpbl90ICpz cGluLCBpbnQ2NF90IG5zKTsKLXZvaWQgaWd0X3NwaW5fYmF0Y2hfZW5kKGlndF9zcGluX3QgKnNw aW4pOwotdm9pZCBpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGludCBmZCwgaWd0X3NwaW5fdCAqc3Bpbik7 Cit2b2lkIGlndF9zcGluX3NldF90aW1lb3V0KGlndF9zcGluX3QgKnNwaW4sIGludDY0X3QgbnMp Owordm9pZCBpZ3Rfc3Bpbl9lbmQoaWd0X3NwaW5fdCAqc3Bpbik7Cit2b2lkIGlndF9zcGluX2Zy ZWUoaW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKTsKIAogc3RhdGljIGlubGluZSBib29sIGlndF9z cGluX2hhc19wb2xsKGNvbnN0IGlndF9zcGluX3QgKnNwaW4pCiB7CkBAIC04Nyw3ICs4Nyw3IEBA IHN0YXRpYyBpbmxpbmUgdm9pZCBpZ3Rfc3Bpbl9idXN5d2FpdF91bnRpbF9zdGFydGVkKGlndF9z cGluX3QgKnNwaW4pCiAJCTsKIH0KIAotdm9pZCBpZ3RfdGVybWluYXRlX3NwaW5fYmF0Y2hlcyh2 b2lkKTsKK3ZvaWQgaWd0X3Rlcm1pbmF0ZV9zcGlucyh2b2lkKTsKIAogZW51bSBpZ3RfY29ya190 eXBlIHsKIAlDT1JLX1NZTkNfRkQgPSAxLApkaWZmIC0tZ2l0IGEvbGliL2lndF9ndC5jIGIvbGli L2lndF9ndC5jCmluZGV4IDU5OTk1MjQzLi5hMmVhYWRmNSAxMDA2NDQKLS0tIGEvbGliL2lndF9n dC5jCisrKyBiL2xpYi9pZ3RfZ3QuYwpAQCAtMjk0LDEwICsyOTQsMTAgQEAgaWd0X2hhbmdfdCBp Z3RfaGFuZ19jdHgoaW50IGZkLCB1aW50MzJfdCBjdHgsIGludCByaW5nLCB1bnNpZ25lZCBmbGFn cykKIAlpZiAoKGZsYWdzICYgSEFOR19BTExPV19CQU4pID09IDApCiAJCWNvbnRleHRfc2V0X2Jh bihmZCwgY3R4LCAwKTsKIAotCXNwaW4gPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwKLQkJCQkg ICAgLmN0eCA9IGN0eCwKLQkJCQkgICAgLmVuZ2luZSA9IHJpbmcsCi0JCQkJICAgIC5mbGFncyA9 IElHVF9TUElOX05PX1BSRUVNUFRJT04pOworCXNwaW4gPSBfX2lndF9zcGluX25ldyhmZCwKKwkJ CSAgICAgIC5jdHggPSBjdHgsCisJCQkgICAgICAuZW5naW5lID0gcmluZywKKwkJCSAgICAgIC5m bGFncyA9IElHVF9TUElOX05PX1BSRUVNUFRJT04pOwogCiAJcmV0dXJuIChpZ3RfaGFuZ190KXsg c3BpbiwgY3R4LCBiYW4sIGZsYWdzIH07CiB9CkBAIC0zMzMsNyArMzMzLDcgQEAgdm9pZCBpZ3Rf cG9zdF9oYW5nX3JpbmcoaW50IGZkLCBpZ3RfaGFuZ190IGFyZykKIAkJcmV0dXJuOwogCiAJZ2Vt X3N5bmMoZmQsIGFyZy5zcGluLT5oYW5kbGUpOyAvKiBXYWl0IHVudGlsIGl0IGhhbmdzICovCi0J aWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgYXJnLnNwaW4pOworCWlndF9zcGluX2ZyZWUoZmQsIGFy Zy5zcGluKTsKIAogCWNvbnRleHRfc2V0X2JhbihmZCwgYXJnLmN0eCwgYXJnLmJhbik7CiAKZGlm ZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2J1c3kuYyBiL3Rlc3RzL2k5MTUvZ2VtX2J1c3kuYwpp bmRleCBhZDg1MzQ2OC4uYzEyMGZhZjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2J1c3ku YworKysgYi90ZXN0cy9pOTE1L2dlbV9idXN5LmMKQEAgLTEyOCw5ICsxMjgsOSBAQCBzdGF0aWMg dm9pZCBzZW1hcGhvcmUoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1aW50MzJfdCBmbGFncykKIAog CS8qIENyZWF0ZSBhIGxvbmcgcnVubmluZyBiYXRjaCB3aGljaCB3ZSBjYW4gdXNlIHRvIGhvZyB0 aGUgR1BVICovCiAJaGFuZGxlW0JVU1ldID0gZ2VtX2NyZWF0ZShmZCwgNDA5Nik7Ci0Jc3BpbiA9 IGlndF9zcGluX2JhdGNoX25ldyhmZCwKLQkJCQkgIC5lbmdpbmUgPSByaW5nLAotCQkJCSAgLmRl cGVuZGVuY3kgPSBoYW5kbGVbQlVTWV0pOworCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZmQsCisJCQkg ICAgLmVuZ2luZSA9IHJpbmcsCisJCQkgICAgLmRlcGVuZGVuY3kgPSBoYW5kbGVbQlVTWV0pOwog CiAJLyogUXVldWUgYSBiYXRjaCBhZnRlciB0aGUgYnVzeSwgaXQgc2hvdWxkIGJsb2NrIGFuZCBy ZW1haW4gImJ1c3kiICovCiAJaWd0X2Fzc2VydChleGVjX25vb3AoZmQsIGhhbmRsZSwgcmluZyB8 IGZsYWdzLCBmYWxzZSkpOwpAQCAtMTU5LDcgKzE1OSw3IEBAIHN0YXRpYyB2b2lkIHNlbWFwaG9y ZShpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVpbnQzMl90IGZsYWdzKQogCiAJLyogQ2hlY2sgdGhh dCBvdXIgbG9uZyBiYXRjaCB3YXMgbG9uZyBlbm91Z2ggKi8KIAlpZ3RfYXNzZXJ0KHN0aWxsX2J1 c3koZmQsIGhhbmRsZVtCVVNZXSkpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOwor CWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJLyogQW5kIG1ha2Ugc3VyZSBpdCBiZWNvbWVz IGlkbGUgYWdhaW4gKi8KIAlnZW1fc3luYyhmZCwgaGFuZGxlW1RFU1RdKTsKQEAgLTM3OSwxNiAr Mzc5LDE2IEBAIHN0YXRpYyB2b2lkIGNsb3NlX3JhY2UoaW50IGZkKQogCQlpZ3RfYXNzZXJ0KHNj aGVkX3NldHNjaGVkdWxlcihnZXRwaWQoKSwgU0NIRURfUlIsICZydCkgPT0gMCk7CiAKIAkJZm9y IChpID0gMDsgaSA8IG5oYW5kbGVzOyBpKyspIHsKLQkJCXNwaW5baV0gPSBfX2lndF9zcGluX2Jh dGNoX25ldyhmZCwKLQkJCQkJCSAgICAgICAuZW5naW5lID0gZW5naW5lc1tyYW5kKCkgJSBuZW5n aW5lXSk7CisJCQlzcGluW2ldID0gX19pZ3Rfc3Bpbl9uZXcoZmQsCisJCQkJCQkgLmVuZ2luZSA9 IGVuZ2luZXNbcmFuZCgpICUgbmVuZ2luZV0pOwogCQkJaGFuZGxlc1tpXSA9IHNwaW5baV0tPmhh bmRsZTsKIAkJfQogCiAJCWlndF91bnRpbF90aW1lb3V0KDIwKSB7CiAJCQlmb3IgKGkgPSAwOyBp IDwgbmhhbmRsZXM7IGkrKykgewotCQkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW5baV0p OwotCQkJCXNwaW5baV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwKLQkJCQkJCQkgICAgICAg LmVuZ2luZSA9IGVuZ2luZXNbcmFuZCgpICUgbmVuZ2luZV0pOworCQkJCWlndF9zcGluX2ZyZWUo ZmQsIHNwaW5baV0pOworCQkJCXNwaW5baV0gPSBfX2lndF9zcGluX25ldyhmZCwKKwkJCQkJCQkg LmVuZ2luZSA9IGVuZ2luZXNbcmFuZCgpICUgbmVuZ2luZV0pOwogCQkJCWhhbmRsZXNbaV0gPSBz cGluW2ldLT5oYW5kbGU7CiAJCQkJX19zeW5jX3N5bmNocm9uaXplKCk7CiAJCQl9CkBAIC0zOTgs NyArMzk4LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VfcmFjZShpbnQgZmQpCiAJCV9fc3luY19zeW5j aHJvbml6ZSgpOwogCiAJCWZvciAoaSA9IDA7IGkgPCBuaGFuZGxlczsgaSsrKQotCQkJaWd0X3Nw aW5fYmF0Y2hfZnJlZShmZCwgc3BpbltpXSk7CisJCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluW2ld KTsKIAl9CiAJaWd0X3dhaXRjaGlsZHJlbigpOwogCkBAIC00MzAsMTEgKzQzMCwxMSBAQCBzdGF0 aWMgYm9vbCBoYXNfc2VtYXBob3JlcyhpbnQgZmQpCiAKIHN0YXRpYyBib29sIGhhc19leHRlbmRl ZF9idXN5X2lvY3RsKGludCBmZCkKIHsKLQlpZ3Rfc3Bpbl90ICpzcGluID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGZkLCAuZW5naW5lID0gSTkxNV9FWEVDX1JFTkRFUik7CisJaWd0X3NwaW5fdCAqc3Bp biA9IGlndF9zcGluX25ldyhmZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwogCXVpbnQz Ml90IHJlYWQsIHdyaXRlOwogCiAJX19nZW1fYnVzeShmZCwgc3Bpbi0+aGFuZGxlLCAmcmVhZCwg JndyaXRlKTsKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVl KGZkLCBzcGluKTsKIAogCXJldHVybiByZWFkICE9IDA7CiB9CkBAIC00NDIsOSArNDQyLDkgQEAg c3RhdGljIGJvb2wgaGFzX2V4dGVuZGVkX2J1c3lfaW9jdGwoaW50IGZkKQogc3RhdGljIHZvaWQg YmFzaWMoaW50IGZkLCB1bnNpZ25lZCByaW5nLCB1bnNpZ25lZCBmbGFncykKIHsKIAlpZ3Rfc3Bp bl90ICpzcGluID0KLQkJaWd0X3NwaW5fYmF0Y2hfbmV3KGZkLAotCQkJCSAgIC5lbmdpbmUgPSBy aW5nLAotCQkJCSAgIC5mbGFncyA9IElHVF9TUElOX05PX1BSRUVNUFRJT04pOworCQlpZ3Rfc3Bp bl9uZXcoZmQsCisJCQkgICAgIC5lbmdpbmUgPSByaW5nLAorCQkJICAgICAuZmxhZ3MgPSBJR1Rf U1BJTl9OT19QUkVFTVBUSU9OKTsKIAlzdHJ1Y3QgdGltZXNwZWMgdHY7CiAJaW50IHRpbWVvdXQ7 CiAJYm9vbCBidXN5OwpAQCAtNDUzLDcgKzQ1Myw3IEBAIHN0YXRpYyB2b2lkIGJhc2ljKGludCBm ZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxhZ3MpCiAKIAl0aW1lb3V0ID0gMTIwOwogCWlm ICgoZmxhZ3MgJiBIQU5HKSA9PSAwKSB7Ci0JCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKKwkJ aWd0X3NwaW5fZW5kKHNwaW4pOwogCQl0aW1lb3V0ID0gMTsKIAl9CiAKQEAgLTQ3MCw3ICs0NzAs NyBAQCBzdGF0aWMgdm9pZCBiYXNpYyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2lnbmVkIGZs YWdzKQogCQl9CiAJfQogCi0JaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3Bpbik7CisJaWd0X3Nw aW5fZnJlZShmZCwgc3Bpbik7CiB9CiAKIGlndF9tYWluCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1 L2dlbV9jdHhfZXhlYy5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4X2V4ZWMuYwppbmRleCBmMzdlNmYy OC4uYjhlMGUwNzQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2N0eF9leGVjLmMKKysrIGIv dGVzdHMvaTkxNS9nZW1fY3R4X2V4ZWMuYwpAQCAtMTc4LDE2ICsxNzgsMTYgQEAgc3RhdGljIHZv aWQgbm9yZWNvdmVyeShpbnQgaTkxNSkKIAkJZ2VtX2NvbnRleHRfZ2V0X3BhcmFtKGk5MTUsICZw YXJhbSk7CiAJCWlndF9hc3NlcnRfZXEocGFyYW0udmFsdWUsIHBhc3MpOwogCi0JCXNwaW4gPSBf X2lndF9zcGluX2JhdGNoX25ldyhpOTE1LAotCQkJCQkgICAgLmN0eCA9IHBhcmFtLmN0eF9pZCwK LQkJCQkJICAgIC5mbGFncyA9IElHVF9TUElOX1BPTExfUlVOKTsKKwkJc3BpbiA9IF9faWd0X3Nw aW5fbmV3KGk5MTUsCisJCQkJICAgICAgLmN0eCA9IHBhcmFtLmN0eF9pZCwKKwkJCQkgICAgICAu ZmxhZ3MgPSBJR1RfU1BJTl9QT0xMX1JVTik7CiAJCWlndF9zcGluX2J1c3l3YWl0X3VudGlsX3N0 YXJ0ZWQoc3Bpbik7CiAKIAkJaWd0X2ZvcmNlX2dwdV9yZXNldChpOTE1KTsKIAotCQlpZ3Rfc3Bp bl9iYXRjaF9lbmQoc3Bpbik7CisJCWlndF9zcGluX2VuZChzcGluKTsKIAkJaWd0X2Fzc2VydF9l cShfX2dlbV9leGVjYnVmKGk5MTUsICZzcGluLT5leGVjYnVmKSwgZXhwZWN0KTsKLQkJaWd0X3Nw aW5fYmF0Y2hfZnJlZShpOTE1LCBzcGluKTsKKwkJaWd0X3NwaW5fZnJlZShpOTE1LCBzcGluKTsK IAogCQlnZW1fY29udGV4dF9kZXN0cm95KGk5MTUsIHBhcmFtLmN0eF9pZCk7CiAJfQpkaWZmIC0t Z2l0IGEvdGVzdHMvaTkxNS9nZW1fY3R4X2lzb2xhdGlvbi5jIGIvdGVzdHMvaTkxNS9nZW1fY3R4 X2lzb2xhdGlvbi5jCmluZGV4IGJlZDcxYzJiLi5iY2QwZjQ4MSAxMDA2NDQKLS0tIGEvdGVzdHMv aTkxNS9nZW1fY3R4X2lzb2xhdGlvbi5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2N0eF9pc29sYXRp b24uYwpAQCAtNTc4LDcgKzU3OCw3IEBAIHN0YXRpYyB2b2lkIG5vbnByaXYoaW50IGZkLAogCiAJ CXRtcGxfcmVncyhmZCwgY3R4LCBlLCB0bXBsLCB2YWx1ZXNbdl0pOwogCi0JCXNwaW4gPSBpZ3Rf c3Bpbl9iYXRjaF9uZXcoZmQsIC5jdHggPSBjdHgsIC5lbmdpbmUgPSBlbmdpbmUpOworCQlzcGlu ID0gaWd0X3NwaW5fbmV3KGZkLCAuY3R4ID0gY3R4LCAuZW5naW5lID0gZW5naW5lKTsKIAogCQlp Z3RfZGVidWcoIiVzWyVkXTogU2V0dGluZyBhbGwgcmVnaXN0ZXJzIHRvIDB4JTA4eFxuIiwKIAkJ CSAgX19mdW5jX18sIHYsIHZhbHVlc1t2XSk7CkBAIC01OTIsNyArNTkyLDcgQEAgc3RhdGljIHZv aWQgbm9ucHJpdihpbnQgZmQsCiAJCSAqLwogCQlyZXN0b3JlX3JlZ3MoZmQsIGN0eCwgZSwgZmxh Z3MsIHJlZ3NbMF0pOwogCi0JCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCQlpZ3Rf c3Bpbl9mcmVlKGZkLCBzcGluKTsKIAogCQljb21wYXJlX3JlZ3MoZmQsIHRtcGwsIHJlZ3NbMV0s ICJub25wcml2IHJlYWQvd3JpdGVzIik7CiAKQEAgLTYzMSw3ICs2MzEsNyBAQCBzdGF0aWMgdm9p ZCBpc29sYXRpb24oaW50IGZkLAogCQljdHhbMF0gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwog CQlyZWdzWzBdID0gcmVhZF9yZWdzKGZkLCBjdHhbMF0sIGUsIGZsYWdzKTsKIAotCQlzcGluID0g aWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCAuY3R4ID0gY3R4WzBdLCAuZW5naW5lID0gZW5naW5lKTsK KwkJc3BpbiA9IGlndF9zcGluX25ldyhmZCwgLmN0eCA9IGN0eFswXSwgLmVuZ2luZSA9IGVuZ2lu ZSk7CiAKIAkJaWYgKGZsYWdzICYgRElSVFkxKSB7CiAJCQlpZ3RfZGVidWcoIiVzWyVkXTogU2V0 dGluZyBhbGwgcmVnaXN0ZXJzIG9mIGN0eCAwIHRvIDB4JTA4eFxuIiwKQEAgLTY2Myw3ICs2NjMs NyBAQCBzdGF0aWMgdm9pZCBpc29sYXRpb24oaW50IGZkLAogCQl0bXAgPSByZWFkX3JlZ3MoZmQs IGN0eFswXSwgZSwgZmxhZ3MpOwogCQlyZXN0b3JlX3JlZ3MoZmQsIGN0eFswXSwgZSwgZmxhZ3Ms IHJlZ3NbMF0pOwogCi0JCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCQlpZ3Rfc3Bp bl9mcmVlKGZkLCBzcGluKTsKIAogCQlpZiAoIShmbGFncyAmIERJUlRZMSkpCiAJCQljb21wYXJl X3JlZ3MoZmQsIHJlZ3NbMF0sIHRtcCwgInR3byByZWFkcyBvZiB0aGUgc2FtZSBjdHgiKTsKQEAg LTcwMiw3ICs3MDIsNyBAQCBzdGF0aWMgdm9pZCBpbmplY3RfcmVzZXRfY29udGV4dChpbnQgZmQs IHVuc2lnbmVkIGludCBlbmdpbmUpCiAJaWYgKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGVuZ2lu ZSkpCiAJCW9wdHMuZmxhZ3MgfD0gSUdUX1NQSU5fUE9MTF9SVU47CiAKLQlzcGluID0gX19pZ3Rf c3Bpbl9iYXRjaF9mYWN0b3J5KGZkLCAmb3B0cyk7CisJc3BpbiA9IF9faWd0X3NwaW5fZmFjdG9y eShmZCwgJm9wdHMpOwogCiAJaWYgKGlndF9zcGluX2hhc19wb2xsKHNwaW4pKQogCQlpZ3Rfc3Bp bl9idXN5d2FpdF91bnRpbF9zdGFydGVkKHNwaW4pOwpAQCAtNzExLDcgKzcxMSw3IEBAIHN0YXRp YyB2b2lkIGluamVjdF9yZXNldF9jb250ZXh0KGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSkK IAogCWlndF9mb3JjZV9ncHVfcmVzZXQoZmQpOwogCi0JaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwg c3Bpbik7CisJaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7CiAJZ2VtX2NvbnRleHRfZGVzdHJveShm ZCwgb3B0cy5jdHgpOwogfQogCkBAIC03MzgsNyArNzM4LDcgQEAgc3RhdGljIHZvaWQgcHJlc2Vy dmF0aW9uKGludCBmZCwKIAlnZW1fcXVpZXNjZW50X2dwdShmZCk7CiAKIAljdHhbbnVtX3ZhbHVl c10gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwotCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXco ZmQsIC5jdHggPSBjdHhbbnVtX3ZhbHVlc10sIC5lbmdpbmUgPSBlbmdpbmUpOworCXNwaW4gPSBp Z3Rfc3Bpbl9uZXcoZmQsIC5jdHggPSBjdHhbbnVtX3ZhbHVlc10sIC5lbmdpbmUgPSBlbmdpbmUp OwogCXJlZ3NbbnVtX3ZhbHVlc11bMF0gPSByZWFkX3JlZ3MoZmQsIGN0eFtudW1fdmFsdWVzXSwg ZSwgZmxhZ3MpOwogCWZvciAoaW50IHYgPSAwOyB2IDwgbnVtX3ZhbHVlczsgdisrKSB7CiAJCWN0 eFt2XSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CkBAIC03NDgsNyArNzQ4LDcgQEAgc3RhdGlj IHZvaWQgcHJlc2VydmF0aW9uKGludCBmZCwKIAogCX0KIAlnZW1fY2xvc2UoZmQsIHJlYWRfcmVn cyhmZCwgY3R4W251bV92YWx1ZXNdLCBlLCBmbGFncykpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUo ZmQsIHNwaW4pOworCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJaWYgKGZsYWdzICYgUkVT RVQpCiAJCWluamVjdF9yZXNldF9jb250ZXh0KGZkLCBlbmdpbmUpOwpAQCAtNzc4LDExICs3Nzgs MTEgQEAgc3RhdGljIHZvaWQgcHJlc2VydmF0aW9uKGludCBmZCwKIAkJYnJlYWs7CiAJfQogCi0J c3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwgLmN0eCA9IGN0eFtudW1fdmFsdWVzXSwgLmVu Z2luZSA9IGVuZ2luZSk7CisJc3BpbiA9IGlndF9zcGluX25ldyhmZCwgLmN0eCA9IGN0eFtudW1f dmFsdWVzXSwgLmVuZ2luZSA9IGVuZ2luZSk7CiAJZm9yIChpbnQgdiA9IDA7IHYgPCBudW1fdmFs dWVzOyB2KyspCiAJCXJlZ3Nbdl1bMV0gPSByZWFkX3JlZ3MoZmQsIGN0eFt2XSwgZSwgZmxhZ3Mp OwogCXJlZ3NbbnVtX3ZhbHVlc11bMV0gPSByZWFkX3JlZ3MoZmQsIGN0eFtudW1fdmFsdWVzXSwg ZSwgZmxhZ3MpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCWlndF9zcGluX2Zy ZWUoZmQsIHNwaW4pOwogCiAJZm9yIChpbnQgdiA9IDA7IHYgPCBudW1fdmFsdWVzOyB2KyspIHsK IAkJY2hhciBidWZbODBdOwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZWlvLmMgYi90ZXN0 cy9pOTE1L2dlbV9laW8uYwppbmRleCAwN2JiZGViMS4uNTM5NmEwNGUgMTAwNjQ0Ci0tLSBhL3Rl c3RzL2k5MTUvZ2VtX2Vpby5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2Vpby5jCkBAIC0xODEsNyAr MTgxLDcgQEAgc3RhdGljIGlndF9zcGluX3QgKiBfX3NwaW5fcG9sbChpbnQgZmQsIHVpbnQzMl90 IGN0eCwgdW5zaWduZWQgbG9uZyBmbGFncykKIAlpZiAoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwg b3B0cy5lbmdpbmUpKQogCQlvcHRzLmZsYWdzIHw9IElHVF9TUElOX1BPTExfUlVOOwogCi0JcmV0 dXJuIF9faWd0X3NwaW5fYmF0Y2hfZmFjdG9yeShmZCwgJm9wdHMpOworCXJldHVybiBfX2lndF9z cGluX2ZhY3RvcnkoZmQsICZvcHRzKTsKIH0KIAogc3RhdGljIHZvaWQgX19zcGluX3dhaXQoaW50 IGZkLCBpZ3Rfc3Bpbl90ICpzcGluKQpAQCAtMzQ2LDcgKzM0Niw3IEBAIHN0YXRpYyB2b2lkIF9f dGVzdF9iYW5uZWQoaW50IGZkKQogCQkvKiBUcmlnZ2VyIGEgcmVzZXQsIG1ha2luZyBzdXJlIHdl IGFyZSBkZXRlY3RlZCBhcyBndWlsdHkgKi8KIAkJaGFuZyA9IHNwaW5fc3luYyhmZCwgMCwgMCk7 CiAJCXRyaWdnZXJfcmVzZXQoZmQpOwotCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsK KwkJaWd0X3NwaW5fZnJlZShmZCwgaGFuZyk7CiAKIAkJY291bnQrKzsKIAl9CkBAIC0zODYsNyAr Mzg2LDcgQEAgc3RhdGljIHZvaWQgdGVzdF93YWl0KGludCBmZCwgdW5zaWduZWQgaW50IGZsYWdz LCB1bnNpZ25lZCBpbnQgd2FpdCkKIAogCWNoZWNrX3dhaXQoZmQsIGhhbmctPmhhbmRsZSwgd2Fp dCwgTlVMTCk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKKwlpZ3Rfc3Bpbl9m cmVlKGZkLCBoYW5nKTsKIAogCWlndF9yZXF1aXJlKGk5MTVfcmVzZXRfY29udHJvbCh0cnVlKSk7 CiAKQEAgLTQ2Niw3ICs0NjYsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0KGludCBmZCwg dW5zaWduZWQgaW50IHdhaXQpCiAJCQljbG9zZShmZW5jZVtuXSk7CiAJCX0KIAotCQlpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKKwkJaWd0X3NwaW5fZnJlZShmZCwgaGFuZyk7CiAJCWln dF9hc3NlcnQoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKIAkJdHJpZ2dlcl9yZXNldChmZCk7 CiAKQEAgLTUyMiw3ICs1MjIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X3N1c3BlbmQo aW50IGZkKQogCQljbG9zZShmZW5jZVtuXSk7CiAJfQogCi0JaWd0X3NwaW5fYmF0Y2hfZnJlZShm ZCwgaGFuZyk7CisJaWd0X3NwaW5fZnJlZShmZCwgaGFuZyk7CiAJaWd0X2Fzc2VydChpOTE1X3Jl c2V0X2NvbnRyb2wodHJ1ZSkpOwogCXRyaWdnZXJfcmVzZXQoZmQpOwogCWNsb3NlKGZkKTsKQEAg LTYwMCw3ICs2MDAsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2luZmxpZ2h0X2NvbnRleHRzKGludCBm ZCwgdW5zaWduZWQgaW50IHdhaXQpCiAJCQljbG9zZShmZW5jZVtuXSk7CiAJCX0KIAotCQlpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGZkLCBoYW5nKTsKKwkJaWd0X3NwaW5fZnJlZShmZCwgaGFuZyk7CiAJ CWdlbV9jbG9zZShmZCwgb2JqWzFdLmhhbmRsZSk7CiAJCWlndF9hc3NlcnQoaTkxNV9yZXNldF9j b250cm9sKHRydWUpKTsKIAkJdHJpZ2dlcl9yZXNldChmZCk7CkBAIC02NjAsNyArNjYwLDcgQEAg c3RhdGljIHZvaWQgdGVzdF9pbmZsaWdodF9leHRlcm5hbChpbnQgZmQpCiAJaWd0X2Fzc2VydF9l cShzeW5jX2ZlbmNlX3N0YXR1cyhmZW5jZSksIC1FSU8pOwogCWNsb3NlKGZlbmNlKTsKIAotCWln dF9zcGluX2JhdGNoX2ZyZWUoZmQsIGhhbmcpOworCWlndF9zcGluX2ZyZWUoZmQsIGhhbmcpOwog CWlndF9hc3NlcnQoaTkxNV9yZXNldF9jb250cm9sKHRydWUpKTsKIAl0cmlnZ2VyX3Jlc2V0KGZk KTsKIAljbG9zZShmZCk7CkBAIC03MDksNyArNzA5LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9pbmZs aWdodF9pbnRlcm5hbChpbnQgZmQsIHVuc2lnbmVkIGludCB3YWl0KQogCQljbG9zZShmZW5jZXNb bmZlbmNlXSk7CiAJfQogCi0JaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgaGFuZyk7CisJaWd0X3Nw aW5fZnJlZShmZCwgaGFuZyk7CiAJaWd0X2Fzc2VydChpOTE1X3Jlc2V0X2NvbnRyb2wodHJ1ZSkp OwogCXRyaWdnZXJfcmVzZXQoZmQpOwogCWNsb3NlKGZkKTsKQEAgLTc3OSw3ICs3NzksNyBAQCBz dGF0aWMgdm9pZCByZXNldF9zdHJlc3MoaW50IGZkLAogCQkJZ2VtX2V4ZWNidWYoZmQsICZleGVj YnVmKTsKIAogCQlnZW1fc3luYyhmZCwgb2JqLmhhbmRsZSk7Ci0JCWlndF9zcGluX2JhdGNoX2Zy ZWUoZmQsIGhhbmcpOworCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBoYW5nKTsKIAkJZ2VtX2NvbnRleHRf ZGVzdHJveShmZCwgY3R4KTsKIAl9CiAJY2hlY2tfd2FpdF9lbGFwc2VkKGZkLCAmc3RhdHMpOwpk aWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fZXhlY19mZW5jZS5jIGIvdGVzdHMvaTkxNS9nZW1f ZXhlY19mZW5jZS5jCmluZGV4IGJhNDY1OTVkLi44MTIwZjhiNSAxMDA2NDQKLS0tIGEvdGVzdHMv aTkxNS9nZW1fZXhlY19mZW5jZS5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfZmVuY2UuYwpA QCAtNDY4LDcgKzQ2OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RfcGFyYWxsZWwoaW50IGZkLCB1bnNp Z25lZCBpbnQgbWFzdGVyKQogCS8qIEZpbGwgdGhlIHF1ZXVlIHdpdGggbWFueSByZXF1ZXN0cyBz byB0aGF0IHRoZSBuZXh0IG9uZSBoYXMgdG8KIAkgKiB3YWl0IGJlZm9yZSBpdCBjYW4gYmUgZXhl Y3V0ZWQgYnkgdGhlIGhhcmR3YXJlLgogCSAqLwotCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXco ZmQsIC5lbmdpbmUgPSBtYXN0ZXIsIC5kZXBlbmRlbmN5ID0gcGx1Zyk7CisJc3BpbiA9IGlndF9z cGluX25ldyhmZCwgLmVuZ2luZSA9IG1hc3RlciwgLmRlcGVuZGVuY3kgPSBwbHVnKTsKIAlyZXN1 Ym1pdChmZCwgc3Bpbi0+aGFuZGxlLCBtYXN0ZXIsIDE2KTsKIAogCS8qIE5vdyBxdWV1ZSB0aGUg bWFzdGVyIHJlcXVlc3QgYW5kIGl0cyBzZWNvbmRhcmllcyAqLwpAQCAtNTg4LDcgKzU4OCw3IEBA IHN0YXRpYyB2b2lkIHRlc3RfcGFyYWxsZWwoaW50IGZkLCB1bnNpZ25lZCBpbnQgbWFzdGVyKQog CS8qIFVuYmxvY2sgdGhlIG1hc3RlciAqLwogCWlndF9jb3JrX3VucGx1ZygmYyk7CiAJZ2VtX2Ns b3NlKGZkLCBwbHVnKTsKLQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7CisJaWd0X3NwaW5fZW5k KHNwaW4pOwogCiAJLyogV2FpdCBmb3IgYWxsIHNlY29uZGFyaWVzIHRvIGNvbXBsZXRlLiBJZiB3 ZSB1c2VkIGEgcmVndWxhciBmZW5jZQogCSAqIHRoZW4gdGhlIHNlY29uZGFyaWVzIHdvdWxkIG5v dCBzdGFydCB1bnRpbCB0aGUgbWFzdGVyIHdhcyBjb21wbGV0ZS4KQEAgLTY1MSw3ICs2NTEsNyBA QCBzdGF0aWMgdm9pZCB0ZXN0X2tlZXBfaW5fZmVuY2UoaW50IGZkLCB1bnNpZ25lZCBpbnQgZW5n aW5lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAJaWd0X3NwaW5fdCAqc3BpbjsKIAlpbnQgZmVuY2U7 CiAKLQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGZkLCAuZW5naW5lID0gZW5naW5lKTsKKwlz cGluID0gaWd0X3NwaW5fbmV3KGZkLCAuZW5naW5lID0gZW5naW5lKTsKIAogCWdlbV9leGVjYnVm X3dyKGZkLCAmZXhlY2J1Zik7CiAJZmVuY2UgPSB1cHBlcl8zMl9iaXRzKGV4ZWNidWYucnN2ZDIp OwpAQCAtNjk4LDcgKzY5OCw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfa2VlcF9pbl9mZW5jZShpbnQg ZmQsIHVuc2lnbmVkIGludCBlbmdpbmUsIHVuc2lnbmVkIGludCBmbGFncykKIAlnZW1fY2xvc2Uo ZmQsIG9iai5oYW5kbGUpOwogCWNsb3NlKGZlbmNlKTsKIAotCWlndF9zcGluX2JhdGNoX2ZyZWUo ZmQsIHNwaW4pOworCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCWdlbV9xdWllc2NlbnRfZ3B1 KGZkKTsKIH0KIApAQCAtMTA3MCw3ICsxMDcwLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5jb2Jq X3VudXNlZF9mZW5jZShpbnQgZmQpCiAJc3RydWN0IGxvY2FsX2dlbV9leGVjX2ZlbmNlIGZlbmNl ID0gewogCQkuaGFuZGxlID0gc3luY29ial9jcmVhdGUoZmQpLAogCX07Ci0JaWd0X3NwaW5fdCAq c3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCk7CisJaWd0X3NwaW5fdCAqc3BpbiA9IGlndF9z cGluX25ldyhmZCk7CiAKIAkvKiBzYW5pdHkgY2hlY2sgb3VyIHN5bmNvYmpfdG9fc3luY19maWxl IGludGVyZmFjZSAqLwogCWlndF9hc3NlcnRfZXEoX19zeW5jb2JqX3RvX3N5bmNfZmlsZShmZCwg MCksIC1FTk9FTlQpOwpAQCAtMTA5NSw3ICsxMDk1LDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5j b2JqX3VudXNlZF9mZW5jZShpbnQgZmQpCiAJZ2VtX2Nsb3NlKGZkLCBvYmouaGFuZGxlKTsKIAlz eW5jb2JqX2Rlc3Ryb3koZmQsIGZlbmNlLmhhbmRsZSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVl KGZkLCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIH0KIAogc3RhdGljIHZvaWQg dGVzdF9zeW5jb2JqX2ludmFsaWRfd2FpdChpbnQgZmQpCkBAIC0xMTYyLDcgKzExNjIsNyBAQCBz dGF0aWMgdm9pZCB0ZXN0X3N5bmNvYmpfc2lnbmFsKGludCBmZCkKIAlzdHJ1Y3QgbG9jYWxfZ2Vt X2V4ZWNfZmVuY2UgZmVuY2UgPSB7CiAJCS5oYW5kbGUgPSBzeW5jb2JqX2NyZWF0ZShmZCksCiAJ fTsKLQlpZ3Rfc3Bpbl90ICpzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGZkKTsKKwlpZ3Rfc3Bp bl90ICpzcGluID0gaWd0X3NwaW5fbmV3KGZkKTsKIAogCS8qIENoZWNrIHRoYXQgdGhlIHN5bmNv YmogaXMgc2lnbmFsZWQgb25seSB3aGVuIG91ciByZXF1ZXN0L2ZlbmNlIGlzICovCiAKQEAgLTEx ODMsNyArMTE4Myw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3luY29ial9zaWduYWwoaW50IGZkKQog CWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIG9iai5oYW5kbGUpKTsKIAlpZ3RfYXNzZXJ0KHN5 bmNvYmpfYnVzeShmZCwgZmVuY2UuaGFuZGxlKSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZk LCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAogCWdlbV9zeW5jKGZkLCBvYmou aGFuZGxlKTsKIAlpZ3RfYXNzZXJ0KCFnZW1fYm9fYnVzeShmZCwgb2JqLmhhbmRsZSkpOwpAQCAt MTIxMiw3ICsxMjEyLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9zeW5jb2JqX3dhaXQoaW50IGZkKQog CiAJZ2VtX3F1aWVzY2VudF9ncHUoZmQpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhm ZCk7CisJc3BpbiA9IGlndF9zcGluX25ldyhmZCk7CiAKIAltZW1zZXQoJmV4ZWNidWYsIDAsIHNp emVvZihleGVjYnVmKSk7CiAJZXhlY2J1Zi5idWZmZXJzX3B0ciA9IHRvX3VzZXJfcG9pbnRlcigm b2JqKTsKQEAgLTEyNjUsNyArMTI2NSw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc3luY29ial93YWl0 KGludCBmZCkKIAlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykKIAkJaWd0X2Fzc2VydChnZW1f Ym9fYnVzeShmZCwgaGFuZGxlW2ldKSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGlu KTsKKwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAogCWZvciAoaW50IGkgPSAwOyBpIDwgbjsg aSsrKSB7CiAJCWdlbV9zeW5jKGZkLCBoYW5kbGVbaV0pOwpAQCAtMTI4Miw3ICsxMjgyLDcgQEAg c3RhdGljIHZvaWQgdGVzdF9zeW5jb2JqX2V4cG9ydChpbnQgZmQpCiAJCS5oYW5kbGUgPSBzeW5j b2JqX2NyZWF0ZShmZCksCiAJfTsKIAlpbnQgZXhwb3J0WzJdOwotCWlndF9zcGluX3QgKnNwaW4g PSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQpOworCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9u ZXcoZmQpOwogCiAJLyogQ2hlY2sgdGhhdCBpZiB3ZSBleHBvcnQgdGhlIHN5bmNvYmogcHJpb3Ig dG8gdXNlIGl0IHBpY2tzIHVwCiAJICogdGhlIGxhdGVyIGZlbmNlLiBUaGlzIGFsbG93cyBhIHN5 bmNvYmogdG8gZXN0YWJsaXNoIGEgY2hhbm5lbApAQCAtMTMxNSw3ICsxMzE1LDcgQEAgc3RhdGlj IHZvaWQgdGVzdF9zeW5jb2JqX2V4cG9ydChpbnQgZmQpCiAJCXN5bmNvYmpfZGVzdHJveShmZCwg aW1wb3J0KTsKIAl9CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKKwlpZ3Rfc3Bp bl9mcmVlKGZkLCBzcGluKTsKIAogCWdlbV9zeW5jKGZkLCBvYmouaGFuZGxlKTsKIAlpZ3RfYXNz ZXJ0KCFnZW1fYm9fYnVzeShmZCwgb2JqLmhhbmRsZSkpOwpAQCAtMTM0MCw3ICsxMzQwLDcgQEAg c3RhdGljIHZvaWQgdGVzdF9zeW5jb2JqX3JlcGVhdChpbnQgZmQpCiAJc3RydWN0IGRybV9pOTE1 X2dlbV9leGVjYnVmZmVyMiBleGVjYnVmOwogCXN0cnVjdCBsb2NhbF9nZW1fZXhlY19mZW5jZSAq ZmVuY2U7CiAJaW50IGV4cG9ydDsKLQlpZ3Rfc3Bpbl90ICpzcGluID0gaWd0X3NwaW5fYmF0Y2hf bmV3KGZkKTsKKwlpZ3Rfc3Bpbl90ICpzcGluID0gaWd0X3NwaW5fbmV3KGZkKTsKIAogCS8qIENo ZWNrIHRoYXQgd2UgY2FuIHdhaXQgb24gdGhlIHNhbWUgZmVuY2UgbXVsdGlwbGUgdGltZXMgKi8K IAlmZW5jZSA9IGNhbGxvYyhuZmVuY2VzLCBzaXplb2YoKmZlbmNlKSk7CkBAIC0xMzc4LDcgKzEz NzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3N5bmNvYmpfcmVwZWF0KGludCBmZCkKIAkJaWd0X2Fz c2VydChzeW5jb2JqX2J1c3koZmQsIGZlbmNlW2ldLmhhbmRsZSkpOwogCWlndF9hc3NlcnQoZ2Vt X2JvX2J1c3koZmQsIG9iai5oYW5kbGUpKTsKIAotCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNw aW4pOworCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJZ2VtX3N5bmMoZmQsIG9iai5oYW5k bGUpOwogCWdlbV9jbG9zZShmZCwgb2JqLmhhbmRsZSk7CkBAIC0xMzk1LDcgKzEzOTUsNyBAQCBz dGF0aWMgdm9pZCB0ZXN0X3N5bmNvYmpfaW1wb3J0KGludCBmZCkKIAljb25zdCB1aW50MzJfdCBi YmUgPSBNSV9CQVRDSF9CVUZGRVJfRU5EOwogCXN0cnVjdCBkcm1faTkxNV9nZW1fZXhlY19vYmpl Y3QyIG9iajsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGV4ZWNidWY7Ci0JaWd0 X3NwaW5fdCAqc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCk7CisJaWd0X3NwaW5fdCAqc3Bp biA9IGlndF9zcGluX25ldyhmZCk7CiAJdWludDMyX3Qgc3luYyA9IHN5bmNvYmpfY3JlYXRlKGZk KTsKIAlpbnQgZmVuY2U7CiAKQEAgLTE0MjMsNyArMTQyMyw3IEBAIHN0YXRpYyB2b2lkIHRlc3Rf c3luY29ial9pbXBvcnQoaW50IGZkKQogCWlndF9hc3NlcnQoZ2VtX2JvX2J1c3koZmQsIG9iai5o YW5kbGUpKTsKIAlpZ3RfYXNzZXJ0KHN5bmNvYmpfYnVzeShmZCwgc3luYykpOwogCi0JaWd0X3Nw aW5fYmF0Y2hfZnJlZShmZCwgc3Bpbik7CisJaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7CiAKIAln ZW1fc3luYyhmZCwgb2JqLmhhbmRsZSk7CiAJaWd0X2Fzc2VydCghZ2VtX2JvX2J1c3koZmQsIG9i ai5oYW5kbGUpKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbGF0ZW5jeS5jIGIv dGVzdHMvaTkxNS9nZW1fZXhlY19sYXRlbmN5LmMKaW5kZXggZmMxMDQwYzMuLjZiN2RmYmMwIDEw MDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9leGVjX2xhdGVuY3kuYworKysgYi90ZXN0cy9pOTE1 L2dlbV9leGVjX2xhdGVuY3kuYwpAQCAtNzgsMTYgKzc4LDE2IEBAIHBvbGxfcmluZyhpbnQgZmQs IHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5hbWUpCiAJZ2VtX3JlcXVpcmVfcmluZyhmZCwg cmluZyk7CiAJaWd0X3JlcXVpcmUoZ2VtX2Nhbl9zdG9yZV9kd29yZChmZCwgcmluZykpOwogCi0J c3BpblswXSA9IF9faWd0X3NwaW5fYmF0Y2hfZmFjdG9yeShmZCwgJm9wdHMpOworCXNwaW5bMF0g PSBfX2lndF9zcGluX2ZhY3RvcnkoZmQsICZvcHRzKTsKIAlpZ3RfYXNzZXJ0KGlndF9zcGluX2hh c19wb2xsKHNwaW5bMF0pKTsKIAljbWQgPSAqc3BpblswXS0+YmF0Y2g7CiAKLQlzcGluWzFdID0g X19pZ3Rfc3Bpbl9iYXRjaF9mYWN0b3J5KGZkLCAmb3B0cyk7CisJc3BpblsxXSA9IF9faWd0X3Nw aW5fZmFjdG9yeShmZCwgJm9wdHMpOwogCWlndF9hc3NlcnQoaWd0X3NwaW5faGFzX3BvbGwoc3Bp blsxXSkpOwogCiAJaWd0X2Fzc2VydChjbWQgPT0gKnNwaW5bMV0tPmJhdGNoKTsKIAotCWlndF9z cGluX2JhdGNoX2VuZChzcGluWzBdKTsKKwlpZ3Rfc3Bpbl9lbmQoc3BpblswXSk7CiAJaWd0X3Nw aW5fYnVzeXdhaXRfdW50aWxfc3RhcnRlZChzcGluWzFdKTsKIAogCWlndF9hc3NlcnQoIWdlbV9i b19idXN5KGZkLCBzcGluWzBdLT5oYW5kbGUpKTsKQEAgLTEwMCwxNSArMTAwLDE1IEBAIHBvbGxf cmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGNvbnN0IGNoYXIgKm5hbWUpCiAJCXNwaW5baWR4 XS0+cG9sbFtTUElOX1BPTExfU1RBUlRfSURYXSA9IDA7CiAJCWdlbV9leGVjYnVmKGZkLCAmc3Bp bltpZHhdLT5leGVjYnVmKTsKIAotCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3BpblshaWR4XSk7CisJ CWlndF9zcGluX2VuZChzcGluWyFpZHhdKTsKIAkJaWd0X3NwaW5fYnVzeXdhaXRfdW50aWxfc3Rh cnRlZChzcGluW2lkeF0pOwogCX0KIAogCWlndF9pbmZvKCIlcyBjb21wbGV0ZWQgJWxkIGN5Y2xl czogJS4zZiB1c1xuIiwKIAkJIG5hbWUsIGN5Y2xlcywgZWxhcHNlZCoxZS0zL2N5Y2xlcyk7CiAK LQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluWzFdKTsKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVl KGZkLCBzcGluWzBdKTsKKwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluWzFdKTsKKwlpZ3Rfc3Bpbl9m cmVlKGZkLCBzcGluWzBdKTsKIH0KIAogI2RlZmluZSBSQ1NfVElNRVNUQU1QICgweDIwMDAgKyAw eDM1OCkKQEAgLTE5Miw3ICsxOTIsNyBAQCBzdGF0aWMgdm9pZCBsYXRlbmN5X29uX3JpbmcoaW50 IGZkLAogCX0KIAogCWlmIChmbGFncyAmIExJVkUpCi0JCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9u ZXcoZmQsIC5lbmdpbmUgPSByaW5nKTsKKwkJc3BpbiA9IGlndF9zcGluX25ldyhmZCwgLmVuZ2lu ZSA9IHJpbmcpOwogCiAJc3RhcnQgPSAqcmVnOwogCWZvciAoaiA9IDA7IGogPCByZXBlYXRzOyBq KyspIHsKQEAgLTIwOSw3ICsyMDksNyBAQCBzdGF0aWMgdm9pZCBsYXRlbmN5X29uX3JpbmcoaW50 IGZkLAogCWVuZCA9ICpyZWc7CiAJaWd0X2Fzc2VydChyZWxvYy5wcmVzdW1lZF9vZmZzZXQgPT0g b2JqWzFdLm9mZnNldCk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKKwlpZ3Rf c3Bpbl9mcmVlKGZkLCBzcGluKTsKIAlpZiAoZmxhZ3MgJiBDT1JLKQogCQlpZ3RfY29ya191bnBs dWcoJmMpOwogCkBAIC0zMjQsOSArMzI0LDkgQEAgc3RhdGljIHZvaWQgbGF0ZW5jeV9mcm9tX3Jp bmcoaW50IGZkLAogCQkJICAgICAgIEk5MTVfR0VNX0RPTUFJTl9HVFQpOwogCiAJCWlmIChmbGFn cyAmIFBSRUVNUFQpCi0JCQlzcGluID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsCi0JCQkJCQkg ICAgLmN0eCA9IGN0eFswXSwKLQkJCQkJCSAgICAuZW5naW5lID0gcmluZyk7CisJCQlzcGluID0g X19pZ3Rfc3Bpbl9uZXcoZmQsCisJCQkJCSAgICAgIC5jdHggPSBjdHhbMF0sCisJCQkJCSAgICAg IC5lbmdpbmUgPSByaW5nKTsKIAogCQlpZiAoZmxhZ3MgJiBDT1JLKSB7CiAJCQlvYmpbMF0uaGFu ZGxlID0gaWd0X2NvcmtfcGx1ZygmYywgZmQpOwpAQCAtMzkzLDcgKzM5Myw3IEBAIHN0YXRpYyB2 b2lkIGxhdGVuY3lfZnJvbV9yaW5nKGludCBmZCwKIAkJZ2VtX3NldF9kb21haW4oZmQsIG9ialsx XS5oYW5kbGUsCiAJCQkgICAgICAgSTkxNV9HRU1fRE9NQUlOX0dUVCwKIAkJCSAgICAgICBJOTE1 X0dFTV9ET01BSU5fR1RUKTsKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3Bpbik7CisJCWln dF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJCWlndF9pbmZvKCIlcy0lcyBkZWxheTogJS4yZm5z XG4iLAogCQkJIG5hbWUsIGVfXy0+bmFtZSwKQEAgLTQxNCw3ICs0MTQsNyBAQCBzdGF0aWMgdm9p ZCBsYXRlbmN5X2Zyb21fcmluZyhpbnQgZmQsCiAJfQogfQogCi1zdGF0aWMgdm9pZCBfX3JlYXJt X3NwaW5fYmF0Y2goaWd0X3NwaW5fdCAqc3BpbikKK3N0YXRpYyB2b2lkIF9fcmVhcm1fc3Bpbihp Z3Rfc3Bpbl90ICpzcGluKQogewogCWNvbnN0IHVpbnQzMl90IG1pX2FyYl9jaGsgPSAweDUgPDwg MjM7CiAKQEAgLTQyNCw3ICs0MjQsNyBAQCBzdGF0aWMgdm9pZCBfX3JlYXJtX3NwaW5fYmF0Y2go aWd0X3NwaW5fdCAqc3BpbikKIH0KIAogc3RhdGljIHZvaWQKLV9fc3VibWl0X3NwaW5fYmF0Y2go aW50IGZkLCBpZ3Rfc3Bpbl90ICpzcGluLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCitfX3N1Ym1pdF9z cGluKGludCBmZCwgaWd0X3NwaW5fdCAqc3BpbiwgdW5zaWduZWQgaW50IGZsYWdzKQogewogCXN0 cnVjdCBkcm1faTkxNV9nZW1fZXhlY2J1ZmZlcjIgZWIgPSBzcGluLT5leGVjYnVmOwogCkBAIC01 MzEsNyArNTMxLDcgQEAgcnRob2dfbGF0ZW5jeV9vbl9yaW5nKGludCBmZCwgdW5zaWduZWQgaW50 IGVuZ2luZSwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW4KIAogCQkJdXNsZWVwKDI1MCk7 CiAKLQkJCXNwaW4gPSBfX2lndF9zcGluX2JhdGNoX2ZhY3RvcnkoZmQsICZvcHRzKTsKKwkJCXNw aW4gPSBfX2lndF9zcGluX2ZhY3RvcnkoZmQsICZvcHRzKTsKIAkJCWlmICghc3BpbikgewogCQkJ CWlndF93YXJuKCJGYWlsZWQgdG8gY3JlYXRlIHNwaW5uZXIhICglcylcbiIsCiAJCQkJCSBwYXNz bmFtZVtwYXNzXSk7CkBAIC01NDMsNyArNTQzLDcgQEAgcnRob2dfbGF0ZW5jeV9vbl9yaW5nKGlu dCBmZCwgdW5zaWduZWQgaW50IGVuZ2luZSwgY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW4K IAkJCQlzdHJ1Y3QgdGltZXNwZWMgdHMgPSB7IH07CiAJCQkJZG91YmxlIHQ7CiAKLQkJCQlpZ3Rf c3Bpbl9iYXRjaF9lbmQoc3Bpbik7CisJCQkJaWd0X3NwaW5fZW5kKHNwaW4pOwogCQkJCWdlbV9z eW5jKGZkLCBzcGluLT5oYW5kbGUpOwogCQkJCWlmIChmbGFncyAmIFJUSURMRSkKIAkJCQkJaWd0 X2Ryb3BfY2FjaGVzX3NldChmZCwgRFJPUF9JRExFKTsKQEAgLTU1NywxMCArNTU3LDEwIEBAIHJ0 aG9nX2xhdGVuY3lfb25fcmluZyhpbnQgZmQsIHVuc2lnbmVkIGludCBlbmdpbmUsIGNvbnN0IGNo YXIgKm5hbWUsIHVuc2lnbmVkIGluCiAJCQkJaWYgKG5lbmdpbmUgPiAxKQogCQkJCQl1c2xlZXAo MTAqbmVuZ2luZSk7CiAKLQkJCQlfX3JlYXJtX3NwaW5fYmF0Y2goc3Bpbik7CisJCQkJX19yZWFy bV9zcGluKHNwaW4pOwogCiAJCQkJaWd0X25zZWNfZWxhcHNlZCgmdHMpOwotCQkJCV9fc3VibWl0 X3NwaW5fYmF0Y2goZmQsIHNwaW4sIGVuZ2luZSk7CisJCQkJX19zdWJtaXRfc3BpbihmZCwgc3Bp biwgZW5naW5lKTsKIAkJCQlpZiAoIV9fc3Bpbl93YWl0KGZkLCBzcGluKSkgewogCQkJCQlpZ3Rf d2FybigiV2FpdCB0aW1lb3V0ISAoJXMpXG4iLAogCQkJCQkJIHBhc3NuYW1lW3Bhc3NdKTsKQEAg LTU3Niw3ICs1NzYsNyBAQCBydGhvZ19sYXRlbmN5X29uX3JpbmcoaW50IGZkLCB1bnNpZ25lZCBp bnQgZW5naW5lLCBjb25zdCBjaGFyICpuYW1lLCB1bnNpZ25lZCBpbgogCQkJCWlndF9tZWFuX2Fk ZCgmbWVhbiwgdCk7CiAJCQl9CiAKLQkJCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOwor CQkJaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7CiAKIAkJCWlndF9pbmZvKCIlOHMgJTEwczogbWVh bj0lLjJmdXMgc3RkZGV2PSUuM2Z1cyBbJS4yZnVzLCAlLjJmdXNdIChuPSVsdSlcbiIsCiAJCQkJ IG5hbWVzW2NoaWxkXSwKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfbm9wLmMgYi90 ZXN0cy9pOTE1L2dlbV9leGVjX25vcC5jCmluZGV4IGI5MWI0ZDBmLi44OTIyNjg1YSAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19ub3AuYworKysgYi90ZXN0cy9pOTE1L2dlbV9leGVj X25vcC5jCkBAIC04MjMsMTQgKzgyMywxNCBAQCBzdGF0aWMgdm9pZCBwcmVlbXB0KGludCBmZCwg dWludDMyX3QgaGFuZGxlLAogCWNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCAmc3RhcnQp OwogCWRvIHsKIAkJaWd0X3NwaW5fdCAqc3BpbiA9Ci0JCQlfX2lndF9zcGluX2JhdGNoX25ldyhm ZCwKLQkJCQkJICAgICAuY3R4ID0gY3R4WzBdLAotCQkJCQkgICAgIC5lbmdpbmUgPSByaW5nX2lk KTsKKwkJCV9faWd0X3NwaW5fbmV3KGZkLAorCQkJCSAgICAgICAuY3R4ID0gY3R4WzBdLAorCQkJ CSAgICAgICAuZW5naW5lID0gcmluZ19pZCk7CiAKIAkJZm9yIChpbnQgbG9vcCA9IDA7IGxvb3Ag PCAxMDI0OyBsb29wKyspCiAJCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwogCi0JCWlndF9z cGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAog CQljb3VudCArPSAxMDI0OwogCQljbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJm5vdyk7 CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX3JlbG9jLmMgYi90ZXN0cy9pOTE1L2dl bV9leGVjX3JlbG9jLmMKaW5kZXggODM3ZjYwYTYuLmZkZDk2NjFkIDEwMDY0NAotLS0gYS90ZXN0 cy9pOTE1L2dlbV9leGVjX3JlbG9jLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZXhlY19yZWxvYy5j CkBAIC0zODgsMTEgKzM4OCwxMSBAQCBzdGF0aWMgdm9pZCBiYXNpY19yZWxvYyhpbnQgZmQsIHVu c2lnbmVkIGJlZm9yZSwgdW5zaWduZWQgYWZ0ZXIsIHVuc2lnbmVkIGZsYWdzKQogCQl9CiAKIAkJ aWYgKGZsYWdzICYgQUNUSVZFKSB7Ci0JCQlzcGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGZkLAot CQkJCQkJICAuZW5naW5lID0gSTkxNV9FWEVDX0RFRkFVTFQsCi0JCQkJCQkgIC5kZXBlbmRlbmN5 ID0gb2JqLmhhbmRsZSk7CisJCQlzcGluID0gaWd0X3NwaW5fbmV3KGZkLAorCQkJCQkgICAgLmVu Z2luZSA9IEk5MTVfRVhFQ19ERUZBVUxULAorCQkJCQkgICAgLmRlcGVuZGVuY3kgPSBvYmouaGFu ZGxlKTsKIAkJCWlmICghKGZsYWdzICYgSEFORykpCi0JCQkJaWd0X3NwaW5fYmF0Y2hfc2V0X3Rp bWVvdXQoc3BpbiwgTlNFQ19QRVJfU0VDLzEwMCk7CisJCQkJaWd0X3NwaW5fc2V0X3RpbWVvdXQo c3BpbiwgTlNFQ19QRVJfU0VDLzEwMCk7CiAJCQlpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBv YmouaGFuZGxlKSk7CiAJCX0KIApAQCAtNDI0LDcgKzQyNCw3IEBAIHN0YXRpYyB2b2lkIGJhc2lj X3JlbG9jKGludCBmZCwgdW5zaWduZWQgYmVmb3JlLCB1bnNpZ25lZCBhZnRlciwgdW5zaWduZWQg ZmxhZ3MpCiAJCQlpZ3RfYXNzZXJ0X2VxX3U2NChyZWxvYy5wcmVzdW1lZF9vZmZzZXQsIG9mZnNl dCk7CiAJCWlndF9hc3NlcnRfZXFfdTY0KG9iai5vZmZzZXQsIG9mZnNldCk7CiAKLQkJaWd0X3Nw aW5fYmF0Y2hfZnJlZShmZCwgc3Bpbik7CisJCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJ CS8qIFNpbXVsYXRlIHJlbG9jYXRpb24gKi8KIAkJaWYgKGZsYWdzICYgTk9SRUxPQykgewpAQCAt NDU2LDExICs0NTYsMTEgQEAgc3RhdGljIHZvaWQgYmFzaWNfcmVsb2MoaW50IGZkLCB1bnNpZ25l ZCBiZWZvcmUsIHVuc2lnbmVkIGFmdGVyLCB1bnNpZ25lZCBmbGFncykKIAkJfQogCiAJCWlmIChm bGFncyAmIEFDVElWRSkgewotCQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwKLQkJCQkJ CSAgLmVuZ2luZSA9IEk5MTVfRVhFQ19ERUZBVUxULAotCQkJCQkJICAuZGVwZW5kZW5jeSA9IG9i ai5oYW5kbGUpOworCQkJc3BpbiA9IGlndF9zcGluX25ldyhmZCwKKwkJCQkJICAgIC5lbmdpbmUg PSBJOTE1X0VYRUNfREVGQVVMVCwKKwkJCQkJICAgIC5kZXBlbmRlbmN5ID0gb2JqLmhhbmRsZSk7 CiAJCQlpZiAoIShmbGFncyAmIEhBTkcpKQotCQkJCWlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0 KHNwaW4sIE5TRUNfUEVSX1NFQy8xMDApOworCQkJCWlndF9zcGluX3NldF90aW1lb3V0KHNwaW4s IE5TRUNfUEVSX1NFQy8xMDApOwogCQkJaWd0X2Fzc2VydChnZW1fYm9fYnVzeShmZCwgb2JqLmhh bmRsZSkpOwogCQl9CiAKQEAgLTQ5Miw3ICs0OTIsNyBAQCBzdGF0aWMgdm9pZCBiYXNpY19yZWxv YyhpbnQgZmQsIHVuc2lnbmVkIGJlZm9yZSwgdW5zaWduZWQgYWZ0ZXIsIHVuc2lnbmVkIGZsYWdz KQogCQkJaWd0X2Fzc2VydF9lcV91NjQocmVsb2MucHJlc3VtZWRfb2Zmc2V0LCBvZmZzZXQpOwog CQlpZ3RfYXNzZXJ0X2VxX3U2NChvYmoub2Zmc2V0LCBvZmZzZXQpOwogCi0JCWlndF9zcGluX2Jh dGNoX2ZyZWUoZmQsIHNwaW4pOworCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAkJaWYgKHRy YXNoKQogCQkJZ2VtX2Nsb3NlKGZkLCB0cmFzaCk7CiAJfQpAQCAtNTg1LDE0ICs1ODUsMTQgQEAg c3RhdGljIHZvaWQgYmFzaWNfcmFuZ2UoaW50IGZkLCB1bnNpZ25lZCBmbGFncykKIAlleGVjYnVm LmJ1ZmZlcl9jb3VudCA9IG4gKyAxOwogCiAJaWYgKGZsYWdzICYgQUNUSVZFKSB7Ci0JCXNwaW4g PSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIC5kZXBlbmRlbmN5ID0gb2JqW25dLmhhbmRsZSk7CisJ CXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZmQsIC5kZXBlbmRlbmN5ID0gb2JqW25dLmhhbmRsZSk7CiAJ CWlmICghKGZsYWdzICYgSEFORykpCi0JCQlpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChzcGlu LCBOU0VDX1BFUl9TRUMvMTAwKTsKKwkJCWlndF9zcGluX3NldF90aW1lb3V0KHNwaW4sIE5TRUNf UEVSX1NFQy8xMDApOwogCQlpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBvYmpbbl0uaGFuZGxl KSk7CiAJfQogCiAJZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmKTsKLQlpZ3Rfc3Bpbl9iYXRjaF9m cmVlKGZkLCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAogCWZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSsrKSB7CiAJCXVpbnQ2NF90IG9mZnNldDsKZGlmZiAtLWdpdCBhL3Rlc3Rz L2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUuYyBiL3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc2NoZWR1bGUu YwppbmRleCA3MThhMTkzNS4uOWEwNzk1MjggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX2V4 ZWNfc2NoZWR1bGUuYworKysgYi90ZXN0cy9pOTE1L2dlbV9leGVjX3NjaGVkdWxlLmMKQEAgLTE2 MSw3ICsxNjEsNyBAQCBzdGF0aWMgdm9pZCB1bnBsdWdfc2hvd19xdWV1ZShpbnQgZmQsIHN0cnVj dCBpZ3RfY29yayAqYywgdW5zaWduZWQgaW50IGVuZ2luZSkKIAkJCS5jdHggPSBjcmVhdGVfaGln aGVzdF9wcmlvcml0eShmZCksCiAJCQkuZW5naW5lID0gZW5naW5lLAogCQl9OwotCQlzcGluW25d ID0gX19pZ3Rfc3Bpbl9iYXRjaF9mYWN0b3J5KGZkLCAmb3B0cyk7CisJCXNwaW5bbl0gPSBfX2ln dF9zcGluX2ZhY3RvcnkoZmQsICZvcHRzKTsKIAkJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgb3B0 cy5jdHgpOwogCX0KIApAQCAtMTY5LDcgKzE2OSw3IEBAIHN0YXRpYyB2b2lkIHVucGx1Z19zaG93 X3F1ZXVlKGludCBmZCwgc3RydWN0IGlndF9jb3JrICpjLCB1bnNpZ25lZCBpbnQgZW5naW5lKQog CWlndF9kZWJ1Z2ZzX2R1bXAoZmQsICJpOTE1X2VuZ2luZV9pbmZvIik7CiAKIAlmb3IgKGludCBu ID0gMDsgbiA8IEFSUkFZX1NJWkUoc3Bpbik7IG4rKykKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShm ZCwgc3BpbltuXSk7CisJCWlndF9zcGluX2ZyZWUoZmQsIHNwaW5bbl0pOwogCiB9CiAKQEAgLTIy MSw3ICsyMjEsNyBAQCBzdGF0aWMgdm9pZCBpbmRlcGVuZGVudChpbnQgZmQsIHVuc2lnbmVkIGlu dCBlbmdpbmUpCiAJCQljb250aW51ZTsKIAogCQlpZiAoc3BpbiA9PSBOVUxMKSB7Ci0JCQlzcGlu ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIC5lbmdpbmUgPSBvdGhlcik7CisJCQlzcGluID0g X19pZ3Rfc3Bpbl9uZXcoZmQsIC5lbmdpbmUgPSBvdGhlcik7CiAJCX0gZWxzZSB7CiAJCQlzdHJ1 Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewogCQkJCS5idWZmZXJfY291bnQgPSAx LApAQCAtMjUwLDcgKzI1MCw3IEBAIHN0YXRpYyB2b2lkIGluZGVwZW5kZW50KGludCBmZCwgdW5z aWduZWQgaW50IGVuZ2luZSkKIAlpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzY3JhdGNoKSk7 CiAJaWd0X2Fzc2VydF9lcShwdHJbMF0sIGVuZ2luZSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVl KGZkLCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAlnZW1fcXVpZXNjZW50X2dw dShmZCk7CiAKIAkvKiBBbmQgd2UgZXhwZWN0IHRoZSBvdGhlcnMgdG8gaGF2ZSBvdmVyd3JpdHRl biB1cywgb3JkZXIgdW5zcGVjaWZpZWQgKi8KQEAgLTM1OCw5ICszNTgsOSBAQCBzdGF0aWMgdm9p ZCBzZW1hcGhvcmVfdXNlcmxvY2soaW50IGk5MTUpCiAJc2NyYXRjaCA9IGdlbV9jcmVhdGUoaTkx NSwgNDA5Nik7CiAJZm9yX2VhY2hfcGh5c2ljYWxfZW5naW5lKGk5MTUsIGVuZ2luZSkgewogCQlp ZiAoIXNwaW4pIHsKLQkJCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoaTkxNSwKLQkJCQkJCSAg LmRlcGVuZGVuY3kgPSBzY3JhdGNoLAotCQkJCQkJICAuZW5naW5lID0gZW5naW5lKTsKKwkJCXNw aW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSwKKwkJCQkJICAgIC5kZXBlbmRlbmN5ID0gc2NyYXRjaCwK KwkJCQkJICAgIC5lbmdpbmUgPSBlbmdpbmUpOwogCQl9IGVsc2UgewogCQkJdWludDY0X3Qgc2F2 ZWQgPSBzcGluLT5leGVjYnVmLmZsYWdzOwogCkBAIC0zOTgsNyArMzk4LDcgQEAgc3RhdGljIHZv aWQgc2VtYXBob3JlX3VzZXJsb2NrKGludCBpOTE1KQogCWdlbV9zeW5jKGk5MTUsIG9iai5oYW5k bGUpOyAvKiB0byBoYW5nIHVubGVzcyB3ZSBjYW4gcHJlZW1wdCAqLwogCWdlbV9jbG9zZShpOTE1 LCBvYmouaGFuZGxlKTsKIAotCWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc3Bpbik7CisJaWd0 X3NwaW5fZnJlZShpOTE1LCBzcGluKTsKIH0KIAogc3RhdGljIHZvaWQgc2VtYXBob3JlX2NvZGVw ZW5kZW5jeShpbnQgaTkxNSkKQEAgLTQzMiwxOCArNDMyLDE4IEBAIHN0YXRpYyB2b2lkIHNlbWFw aG9yZV9jb2RlcGVuZGVuY3koaW50IGk5MTUpCiAJCWN0eCA9IGdlbV9jb250ZXh0X2NyZWF0ZShp OTE1KTsKIAogCQl0YXNrW2ldLnhjcyA9Ci0JCQlfX2lndF9zcGluX2JhdGNoX25ldyhpOTE1LAot CQkJCQkgICAgIC5jdHggPSBjdHgsCi0JCQkJCSAgICAgLmVuZ2luZSA9IGVuZ2luZSwKLQkJCQkJ ICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9QT0xMX1JVTik7CisJCQlfX2lndF9zcGluX25ldyhpOTE1 LAorCQkJCSAgICAgICAuY3R4ID0gY3R4LAorCQkJCSAgICAgICAuZW5naW5lID0gZW5naW5lLAor CQkJCSAgICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9QT0xMX1JVTik7CiAJCWlndF9zcGluX2J1c3l3 YWl0X3VudGlsX3N0YXJ0ZWQodGFza1tpXS54Y3MpOwogCiAJCS8qIENvbW1vbiByY3MgdGFza3Mg d2lsbCBiZSBxdWV1ZWQgaW4gRklGTyAqLwogCQl0YXNrW2ldLnJjcyA9Ci0JCQlfX2lndF9zcGlu X2JhdGNoX25ldyhpOTE1LAotCQkJCQkgICAgIC5jdHggPSBjdHgsCi0JCQkJCSAgICAgLmVuZ2lu ZSA9IEk5MTVfRVhFQ19SRU5ERVIsCi0JCQkJCSAgICAgLmRlcGVuZGVuY3kgPSB0YXNrW2ldLnhj cy0+aGFuZGxlKTsKKwkJCV9faWd0X3NwaW5fbmV3KGk5MTUsCisJCQkJICAgICAgIC5jdHggPSBj dHgsCisJCQkJICAgICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAorCQkJCSAgICAgICAu ZGVwZW5kZW5jeSA9IHRhc2tbaV0ueGNzLT5oYW5kbGUpOwogCiAJCWdlbV9jb250ZXh0X2Rlc3Ry b3koaTkxNSwgY3R4KTsKIApAQCAtNDUzLDEzICs0NTMsMTMgQEAgc3RhdGljIHZvaWQgc2VtYXBo b3JlX2NvZGVwZW5kZW5jeShpbnQgaTkxNSkKIAlpZ3RfcmVxdWlyZShpID09IEFSUkFZX1NJWkUo dGFzaykpOwogCiAJLyogU2luY2UgdGFza1swXSB3YXMgcXVldWVkIGZpcnN0LCBpdCB3aWxsIGJl IGZpcnN0IGluIHF1ZXVlIGZvciByY3MgKi8KLQlpZ3Rfc3Bpbl9iYXRjaF9lbmQodGFza1sxXS54 Y3MpOwotCWlndF9zcGluX2JhdGNoX2VuZCh0YXNrWzFdLnJjcyk7CisJaWd0X3NwaW5fZW5kKHRh c2tbMV0ueGNzKTsKKwlpZ3Rfc3Bpbl9lbmQodGFza1sxXS5yY3MpOwogCWdlbV9zeW5jKGk5MTUs IHRhc2tbMV0ucmNzLT5oYW5kbGUpOyAvKiB0byBoYW5nIGlmIHRhc2tbMF0gaG9ncyByY3MgKi8K IAogCWZvciAoaSA9IDA7IGkgPCBBUlJBWV9TSVpFKHRhc2spOyBpKyspIHsKLQkJaWd0X3NwaW5f YmF0Y2hfZnJlZShpOTE1LCB0YXNrW2ldLnhjcyk7Ci0JCWlndF9zcGluX2JhdGNoX2ZyZWUoaTkx NSwgdGFza1tpXS5yY3MpOworCQlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHRhc2tbaV0ueGNzKTsKKwkJ aWd0X3NwaW5fZnJlZShpOTE1LCB0YXNrW2ldLnJjcyk7CiAJfQogfQogCkBAIC01NzksOSArNTc5 LDkgQEAgc3RhdGljIHZvaWQgcHJlZW1wdChpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIHVuc2lnbmVk IGZsYWdzKQogCQkJY3R4W0xPXSA9IGdlbV9jb250ZXh0X2NyZWF0ZShmZCk7CiAJCQlnZW1fY29u dGV4dF9zZXRfcHJpb3JpdHkoZmQsIGN0eFtMT10sIE1JTl9QUklPKTsKIAkJfQotCQlzcGluW25d ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsCi0JCQkJCSAgICAgICAuY3R4ID0gY3R4W0xPXSwK LQkJCQkJICAgICAgIC5lbmdpbmUgPSByaW5nKTsKKwkJc3BpbltuXSA9IF9faWd0X3NwaW5fbmV3 KGZkLAorCQkJCQkgLmN0eCA9IGN0eFtMT10sCisJCQkJCSAuZW5naW5lID0gcmluZyk7CiAJCWln dF9kZWJ1Zygic3BpblslZF0uaGFuZGxlPSVkXG4iLCBuLCBzcGluW25dLT5oYW5kbGUpOwogCiAJ CXN0b3JlX2R3b3JkKGZkLCBjdHhbSEldLCByaW5nLCByZXN1bHQsIDAsIG4gKyAxLCAwLCBJOTE1 X0dFTV9ET01BSU5fUkVOREVSKTsKQEAgLTU5Miw3ICs1OTIsNyBAQCBzdGF0aWMgdm9pZCBwcmVl bXB0KGludCBmZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgZmxhZ3MpCiAJfQogCiAJZm9yIChp bnQgbiA9IDA7IG4gPCBBUlJBWV9TSVpFKHNwaW4pOyBuKyspCi0JCWlndF9zcGluX2JhdGNoX2Zy ZWUoZmQsIHNwaW5bbl0pOworCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluW25dKTsKIAogCWlmIChm bGFncyAmIEhBTkdfTFApCiAJCWlndF9wb3N0X2hhbmdfcmluZyhmZCwgaGFuZyk7CkBAIC02MTQs OSArNjE0LDkgQEAgc3RhdGljIGlndF9zcGluX3QgKl9fbm9pc2UoaW50IGZkLCB1aW50MzJfdCBj dHgsIGludCBwcmlvLCBpZ3Rfc3Bpbl90ICpzcGluKQogCiAJZm9yX2VhY2hfcGh5c2ljYWxfZW5n aW5lKGZkLCBvdGhlcikgewogCQlpZiAoc3BpbiA9PSBOVUxMKSB7Ci0JCQlzcGluID0gX19pZ3Rf c3Bpbl9iYXRjaF9uZXcoZmQsCi0JCQkJCQkgICAgLmN0eCA9IGN0eCwKLQkJCQkJCSAgICAuZW5n aW5lID0gb3RoZXIpOworCQkJc3BpbiA9IF9faWd0X3NwaW5fbmV3KGZkLAorCQkJCQkgICAgICAu Y3R4ID0gY3R4LAorCQkJCQkgICAgICAuZW5naW5lID0gb3RoZXIpOwogCQl9IGVsc2UgewogCQkJ c3RydWN0IGRybV9pOTE1X2dlbV9leGVjYnVmZmVyMiBlYiA9IHsKIAkJCQkuYnVmZmVyX2NvdW50 ID0gMSwKQEAgLTcwMyw3ICs3MDMsNyBAQCBzdGF0aWMgdm9pZCBwcmVlbXB0X290aGVyKGludCBm ZCwgdW5zaWduZWQgcmluZywgdW5zaWduZWQgaW50IGZsYWdzKQogCX0KIAogCWlndF9hc3NlcnQo Z2VtX2JvX2J1c3koZmQsIHNwaW4tPmhhbmRsZSkpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQs IHNwaW4pOworCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJZ2VtX2NvbnRleHRfZGVzdHJv eShmZCwgY3R4W0xPXSk7CiAJZ2VtX2NvbnRleHRfZGVzdHJveShmZCwgY3R4W05PSVNFXSk7CkBA IC03NjgsNyArNzY4LDcgQEAgc3RhdGljIHZvaWQgX19wcmVlbXB0X3F1ZXVlKGludCBmZCwKIAog CWlmIChhYm92ZSkgewogCQlpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBhYm92ZS0+aGFuZGxl KSk7Ci0JCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIGFib3ZlKTsKKwkJaWd0X3NwaW5fZnJlZShm ZCwgYWJvdmUpOwogCX0KIAogCWdlbV9zZXRfZG9tYWluKGZkLCByZXN1bHQsIEk5MTVfR0VNX0RP TUFJTl9HVFQsIDApOwpAQCAtNzgxLDcgKzc4MSw3IEBAIHN0YXRpYyB2b2lkIF9fcHJlZW1wdF9x dWV1ZShpbnQgZmQsCiAKIAlpZiAoYmVsb3cpIHsKIAkJaWd0X2Fzc2VydChnZW1fYm9fYnVzeShm ZCwgYmVsb3ctPmhhbmRsZSkpOwotCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBiZWxvdyk7CisJ CWlndF9zcGluX2ZyZWUoZmQsIGJlbG93KTsKIAl9CiAKIAlnZW1fY29udGV4dF9kZXN0cm95KGZk LCBjdHhbTE9dKTsKQEAgLTgyNSw5ICs4MjUsOSBAQCBzdGF0aWMgdm9pZCBwcmVlbXB0X3NlbGYo aW50IGZkLCB1bnNpZ25lZCByaW5nKQogCW4gPSAwOwogCWdlbV9jb250ZXh0X3NldF9wcmlvcml0 eShmZCwgY3R4W0hJXSwgTUlOX1BSSU8pOwogCWZvcl9lYWNoX3BoeXNpY2FsX2VuZ2luZShmZCwg b3RoZXIpIHsKLQkJc3BpbltuXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGZkLAotCQkJCQkgICAg ICAgLmN0eCA9IGN0eFtOT0lTRV0sCi0JCQkJCSAgICAgICAuZW5naW5lID0gb3RoZXIpOworCQlz cGluW25dID0gX19pZ3Rfc3Bpbl9uZXcoZmQsCisJCQkJCSAuY3R4ID0gY3R4W05PSVNFXSwKKwkJ CQkJIC5lbmdpbmUgPSBvdGhlcik7CiAJCXN0b3JlX2R3b3JkKGZkLCBjdHhbSEldLCBvdGhlciwK IAkJCSAgICByZXN1bHQsIChuICsgMSkqc2l6ZW9mKHVpbnQzMl90KSwgbiArIDEsCiAJCQkgICAg MCwgSTkxNV9HRU1fRE9NQUlOX1JFTkRFUik7CkBAIC04NDIsNyArODQyLDcgQEAgc3RhdGljIHZv aWQgcHJlZW1wdF9zZWxmKGludCBmZCwgdW5zaWduZWQgcmluZykKIAogCWZvciAoaSA9IDA7IGkg PCBuOyBpKyspIHsKIAkJaWd0X2Fzc2VydChnZW1fYm9fYnVzeShmZCwgc3BpbltpXS0+aGFuZGxl KSk7Ci0JCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW5baV0pOworCQlpZ3Rfc3Bpbl9mcmVl KGZkLCBzcGluW2ldKTsKIAl9CiAKIAlfX3N5bmNfcmVhZF91MzJfY291bnQoZmQsIHJlc3VsdCwg cmVzdWx0X3JlYWQsIHNpemVvZihyZXN1bHRfcmVhZCkpOwpAQCAtODcwLDkgKzg3MCw5IEBAIHN0 YXRpYyB2b2lkIHByZWVtcHRpdmVfaGFuZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcpCiAJCWN0eFtM T10gPSBnZW1fY29udGV4dF9jcmVhdGUoZmQpOwogCQlnZW1fY29udGV4dF9zZXRfcHJpb3JpdHko ZmQsIGN0eFtMT10sIE1JTl9QUklPKTsKIAotCQlzcGluW25dID0gX19pZ3Rfc3Bpbl9iYXRjaF9u ZXcoZmQsCi0JCQkJCSAgICAgICAuY3R4ID0gY3R4W0xPXSwKLQkJCQkJICAgICAgIC5lbmdpbmUg PSByaW5nKTsKKwkJc3BpbltuXSA9IF9faWd0X3NwaW5fbmV3KGZkLAorCQkJCQkgLmN0eCA9IGN0 eFtMT10sCisJCQkJCSAuZW5naW5lID0gcmluZyk7CiAKIAkJZ2VtX2NvbnRleHRfZGVzdHJveShm ZCwgY3R4W0xPXSk7CiAJfQpAQCAtODg2LDcgKzg4Niw3IEBAIHN0YXRpYyB2b2lkIHByZWVtcHRp dmVfaGFuZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcpCiAJCSAqIGJlIHVwZGF0ZWQgdG8gcmVmbGVj dCBzdWNoIGNoYW5nZXMuCiAJCSAqLwogCQlpZ3RfYXNzZXJ0KGdlbV9ib19idXN5KGZkLCBzcGlu W25dLT5oYW5kbGUpKTsKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3BpbltuXSk7CisJCWln dF9zcGluX2ZyZWUoZmQsIHNwaW5bbl0pOwogCX0KIAogCWdlbV9jb250ZXh0X2Rlc3Ryb3koZmQs IGN0eFtISV0pOwpAQCAtMTM1Nyw5ICsxMzU3LDkgQEAgc3RhdGljIHZvaWQgbWVhc3VyZV9zZW1h cGhvcmVfcG93ZXIoaW50IGk5MTUpCiAJCWludDY0X3QgamlmZmllID0gMTsKIAkJaWd0X3NwaW5f dCAqc3BpbjsKIAotCQlzcGluID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoaTkxNSwKLQkJCQkJICAg IC5lbmdpbmUgPSBzaWduYWxlciwKLQkJCQkJICAgIC5mbGFncyA9IElHVF9TUElOX1BPTExfUlVO KTsKKwkJc3BpbiA9IF9faWd0X3NwaW5fbmV3KGk5MTUsCisJCQkJICAgICAgLmVuZ2luZSA9IHNp Z25hbGVyLAorCQkJCSAgICAgIC5mbGFncyA9IElHVF9TUElOX1BPTExfUlVOKTsKIAkJZ2VtX3dh aXQoaTkxNSwgc3Bpbi0+aGFuZGxlLCAmamlmZmllKTsgLyogd2FpdGJvb3N0ICovCiAJCWlndF9z cGluX2J1c3l3YWl0X3VudGlsX3N0YXJ0ZWQoc3Bpbik7CiAKQEAgLTEzNzQsMTEgKzEzNzQsMTEg QEAgc3RhdGljIHZvaWQgbWVhc3VyZV9zZW1hcGhvcmVfcG93ZXIoaW50IGk5MTUpCiAJCQlpZiAo ZW5naW5lID09IHNpZ25hbGVyKQogCQkJCWNvbnRpbnVlOwogCi0JCQlzZW1hID0gX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoaTkxNSwKLQkJCQkJCSAgICAuZW5naW5lID0gZW5naW5lLAotCQkJCQkJICAg IC5kZXBlbmRlbmN5ID0gc3Bpbi0+aGFuZGxlKTsKKwkJCXNlbWEgPSBfX2lndF9zcGluX25ldyhp OTE1LAorCQkJCQkgICAgICAuZW5naW5lID0gZW5naW5lLAorCQkJCQkgICAgICAuZGVwZW5kZW5j eSA9IHNwaW4tPmhhbmRsZSk7CiAKLQkJCWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc2VtYSk7 CisJCQlpZ3Rfc3Bpbl9mcmVlKGk5MTUsIHNlbWEpOwogCQl9CiAJCXVzbGVlcCgxMCk7IC8qIGp1 c3QgZ2l2ZSB0aGUgdGFza2xldHMgYSBjaGFuY2UgdG8gcnVuICovCiAKQEAgLTEzODYsNyArMTM4 Niw3IEBAIHN0YXRpYyB2b2lkIG1lYXN1cmVfc2VtYXBob3JlX3Bvd2VyKGludCBpOTE1KQogCQl1 c2xlZXAoMTAwKjEwMDApOwogCQlncHVfcG93ZXJfcmVhZCgmcG93ZXIsICZzX3NlbWFbMV0pOwog Ci0JCWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc3Bpbik7CisJCWlndF9zcGluX2ZyZWUoaTkx NSwgc3Bpbik7CiAKIAkJYmFzZWxpbmUgPSBncHVfcG93ZXJfVygmcG93ZXIsICZzX3NwaW5bMF0s ICZzX3NwaW5bMV0pOwogCQl0b3RhbCA9IGdwdV9wb3dlcl9XKCZwb3dlciwgJnNfc2VtYVswXSwg JnNfc2VtYVsxXSk7CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9leGVjX3N1c3BlbmQuYyBi L3Rlc3RzL2k5MTUvZ2VtX2V4ZWNfc3VzcGVuZC5jCmluZGV4IDQzYzUyZDEwLi5lNDNhMTZlOSAx MDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9nZW1fZXhlY19zdXNwZW5kLmMKKysrIGIvdGVzdHMvaTkx NS9nZW1fZXhlY19zdXNwZW5kLmMKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdm9pZCBydW5f dGVzdChpbnQgZmQsIHVuc2lnbmVkIGVuZ2luZSwgdW5zaWduZWQgZmxhZ3MpCiAJfQogCiAJaWYg KGZsYWdzICYgSEFORykKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwgLmVuZ2luZSA9 IGVuZ2luZSk7CisJCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoZmQsIC5lbmdpbmUgPSBlbmdpbmUpOwog CiAJc3dpdGNoIChtb2RlKGZsYWdzKSkgewogCWNhc2UgTk9TTEVFUDoKQEAgLTIxNiw3ICsyMTYs NyBAQCBzdGF0aWMgdm9pZCBydW5fdGVzdChpbnQgZmQsIHVuc2lnbmVkIGVuZ2luZSwgdW5zaWdu ZWQgZmxhZ3MpCiAJCWJyZWFrOwogCX0KIAotCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4p OworCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogCiAJY2hlY2tfYm8oZmQsIG9ialswXS5oYW5k bGUpOwogCWdlbV9jbG9zZShmZCwgb2JqWzBdLmhhbmRsZSk7CmRpZmYgLS1naXQgYS90ZXN0cy9p OTE1L2dlbV9mZW5jZWRfZXhlY190aHJhc2guYyBiL3Rlc3RzL2k5MTUvZ2VtX2ZlbmNlZF9leGVj X3RocmFzaC5jCmluZGV4IDcyNDhkMzEwLi4xNDViOGJmOCAxMDA2NDQKLS0tIGEvdGVzdHMvaTkx NS9nZW1fZmVuY2VkX2V4ZWNfdGhyYXNoLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fZmVuY2VkX2V4 ZWNfdGhyYXNoLmMKQEAgLTEzMiwxNCArMTMyLDE0IEBAIHN0YXRpYyB2b2lkIHJ1bl90ZXN0KGlu dCBmZCwgaW50IG51bV9mZW5jZXMsIGludCBleHBlY3RlZF9lcnJubywKIAkJCWlndF9zcGluX3Qg KnNwaW4gPSBOVUxMOwogCiAJCQlpZiAoZmxhZ3MgJiBCVVNZX0xPQUQpCi0JCQkJc3BpbiA9IF9f aWd0X3NwaW5fYmF0Y2hfbmV3KGZkKTsKKwkJCQlzcGluID0gX19pZ3Rfc3Bpbl9uZXcoZmQpOwog CiAJCQlpZ3Rfd2hpbGVfaW50ZXJydXB0aWJsZShmbGFncyAmIElOVEVSUlVQVElCTEUpIHsKIAkJ CQlpZ3RfYXNzZXJ0X2VxKF9fZ2VtX2V4ZWNidWYoZmQsICZleGVjYnVmW2ldKSwKIAkJCQkJICAg ICAgLWV4cGVjdGVkX2Vycm5vKTsKIAkJCX0KIAotCQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwg c3Bpbik7CisJCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAkJCWdlbV9xdWllc2NlbnRfZ3B1 KGZkKTsKIAkJfQogCQljb3VudCsrOwpkaWZmIC0tZ2l0IGEvdGVzdHMvaTkxNS9nZW1fbW1hcC5j IGIvdGVzdHMvaTkxNS9nZW1fbW1hcC5jCmluZGV4IDFmNTM0OGQ5Li5kMWIxMDAxMyAxMDA2NDQK LS0tIGEvdGVzdHMvaTkxNS9nZW1fbW1hcC5jCisrKyBiL3Rlc3RzL2k5MTUvZ2VtX21tYXAuYwpA QCAtMTIyLDcgKzEyMiw3IEBAIHRlc3RfcGZfbm9uYmxvY2soaW50IGk5MTUpCiAJaWd0X3NwaW5f dCAqc3BpbjsKIAl1aW50MzJfdCAqcHRyOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhp OTE1KTsKKwlzcGluID0gaWd0X3NwaW5fbmV3KGk5MTUpOwogCiAJaWd0X3NldF90aW1lb3V0KDEs ICJpbml0aWFsIHBhZ2VmYXVsdGluZyBkaWQgbm90IGNvbXBsZXRlIHdpdGhpbiAxcyIpOwogCkBA IC0xMzIsNyArMTMyLDcgQEAgdGVzdF9wZl9ub25ibG9jayhpbnQgaTkxNSkKIAogCWlndF9yZXNl dF90aW1lb3V0KCk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGk5MTUsIHNwaW4pOworCWlndF9z cGluX2ZyZWUoaTkxNSwgc3Bpbik7CiB9CiAKIHN0YXRpYyBpbnQgbW1hcF9pb2N0bChpbnQgaTkx NSwgc3RydWN0IGRybV9pOTE1X2dlbV9tbWFwICphcmcpCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1 L2dlbV9tbWFwX2d0dC5jIGIvdGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYwppbmRleCBhYjdkM2Yy ZC4uOWE2NzBmMDMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX21tYXBfZ3R0LmMKKysrIGIv dGVzdHMvaTkxNS9nZW1fbW1hcF9ndHQuYwpAQCAtMzA5LDcgKzMwOSw3IEBAIHRlc3RfcGZfbm9u YmxvY2soaW50IGk5MTUpCiAKIAlpZ3RfcmVxdWlyZShtbWFwX2d0dF92ZXJzaW9uKGk5MTUpID49 IDMpOwogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhpOTE1KTsKKwlzcGluID0gaWd0X3Nw aW5fbmV3KGk5MTUpOwogCiAJaWd0X3NldF90aW1lb3V0KDEsICJpbml0aWFsIHBhZ2VmYXVsdGlu ZyBkaWQgbm90IGNvbXBsZXRlIHdpdGhpbiAxcyIpOwogCkBAIC0zMTksNyArMzE5LDcgQEAgdGVz dF9wZl9ub25ibG9jayhpbnQgaTkxNSkKIAogCWlndF9yZXNldF90aW1lb3V0KCk7CiAKLQlpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGk5MTUsIHNwaW4pOworCWlndF9zcGluX2ZyZWUoaTkxNSwgc3Bpbik7 CiB9CiAKIHN0YXRpYyB2b2lkCmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9tbWFwX3djLmMg Yi90ZXN0cy9pOTE1L2dlbV9tbWFwX3djLmMKaW5kZXggZTNmZmM1YWQuLjE1OWVlZGJmIDEwMDY0 NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9tbWFwX3djLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fbW1h cF93Yy5jCkBAIC00NDgsNyArNDQ4LDcgQEAgdGVzdF9wZl9ub25ibG9jayhpbnQgaTkxNSkKIAlp Z3Rfc3Bpbl90ICpzcGluOwogCXVpbnQzMl90ICpwdHI7CiAKLQlzcGluID0gaWd0X3NwaW5fYmF0 Y2hfbmV3KGk5MTUpOworCXNwaW4gPSBpZ3Rfc3Bpbl9uZXcoaTkxNSk7CiAKIAlpZ3Rfc2V0X3Rp bWVvdXQoMSwgImluaXRpYWwgcGFnZWZhdWx0aW5nIGRpZCBub3QgY29tcGxldGUgd2l0aGluIDFz Iik7CiAKQEAgLTQ1OCw3ICs0NTgsNyBAQCB0ZXN0X3BmX25vbmJsb2NrKGludCBpOTE1KQogCiAJ aWd0X3Jlc2V0X3RpbWVvdXQoKTsKIAotCWlndF9zcGluX2JhdGNoX2ZyZWUoaTkxNSwgc3Bpbik7 CisJaWd0X3NwaW5fZnJlZShpOTE1LCBzcGluKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdp dCBhL3Rlc3RzL2k5MTUvZ2VtX3Nocmluay5jIGIvdGVzdHMvaTkxNS9nZW1fc2hyaW5rLmMKaW5k ZXggM2U4YjhmMmQuLjAzN2ZmMDA1IDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9zaHJpbmsu YworKysgYi90ZXN0cy9pOTE1L2dlbV9zaHJpbmsuYwpAQCAtMzQ2LDE3ICszNDYsMTcgQEAgc3Rh dGljIHZvaWQgcmVjbGFpbSh1bnNpZ25lZCBlbmdpbmUsIGludCB0aW1lb3V0KQogCQl9IHdoaWxl ICghKnNoYXJlZCk7CiAJfQogCi0Jc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhmZCwgLmVuZ2lu ZSA9IGVuZ2luZSk7CisJc3BpbiA9IGlndF9zcGluX25ldyhmZCwgLmVuZ2luZSA9IGVuZ2luZSk7 CiAJaWd0X3VudGlsX3RpbWVvdXQodGltZW91dCkgewotCQlpZ3Rfc3Bpbl90ICpuZXh0ID0gX19p Z3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIC5lbmdpbmUgPSBlbmdpbmUpOworCQlpZ3Rfc3Bpbl90ICpu ZXh0ID0gX19pZ3Rfc3Bpbl9uZXcoZmQsIC5lbmdpbmUgPSBlbmdpbmUpOwogCi0JCWlndF9zcGlu X2JhdGNoX3NldF90aW1lb3V0KHNwaW4sIHRpbWVvdXRfMTAwbXMpOworCQlpZ3Rfc3Bpbl9zZXRf dGltZW91dChzcGluLCB0aW1lb3V0XzEwMG1zKTsKIAkJZ2VtX3N5bmMoZmQsIHNwaW4tPmhhbmRs ZSk7CiAKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3Bpbik7CisJCWlndF9zcGluX2ZyZWUo ZmQsIHNwaW4pOwogCQlzcGluID0gbmV4dDsKIAl9Ci0JaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwg c3Bpbik7CisJaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7CiAKIAkqc2hhcmVkID0gMTsKIAlpZ3Rf d2FpdGNoaWxkcmVuKCk7CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zcGluX2JhdGNoLmMg Yi90ZXN0cy9pOTE1L2dlbV9zcGluX2JhdGNoLmMKaW5kZXggOWFmZGJlMDkuLmE5MjY3MmI4IDEw MDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9zcGluX2JhdGNoLmMKKysrIGIvdGVzdHMvaTkxNS9n ZW1fc3Bpbl9iYXRjaC5jCkBAIC00MSwxMiArNDEsMTIgQEAgc3RhdGljIHZvaWQgc3BpbihpbnQg ZmQsIHVuc2lnbmVkIGludCBlbmdpbmUsIHVuc2lnbmVkIGludCB0aW1lb3V0X3NlYykKIAlzdHJ1 Y3QgdGltZXNwZWMgaXR2ID0geyB9OwogCXVpbnQ2NF90IGVsYXBzZWQ7CiAKLQlzcGluID0gX19p Z3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIC5lbmdpbmUgPSBlbmdpbmUpOworCXNwaW4gPSBfX2lndF9z cGluX25ldyhmZCwgLmVuZ2luZSA9IGVuZ2luZSk7CiAJd2hpbGUgKChlbGFwc2VkID0gaWd0X25z ZWNfZWxhcHNlZCgmdHYpKSA+PiAzMCA8IHRpbWVvdXRfc2VjKSB7Ci0JCWlndF9zcGluX3QgKm5l eHQgPSBfX2lndF9zcGluX2JhdGNoX25ldyhmZCwgLmVuZ2luZSA9IGVuZ2luZSk7CisJCWlndF9z cGluX3QgKm5leHQgPSBfX2lndF9zcGluX25ldyhmZCwgLmVuZ2luZSA9IGVuZ2luZSk7CiAKLQkJ aWd0X3NwaW5fYmF0Y2hfc2V0X3RpbWVvdXQoc3BpbiwKLQkJCQkJICAgdGltZW91dF8xMDBtcyAt IGlndF9uc2VjX2VsYXBzZWQoJml0dikpOworCQlpZ3Rfc3Bpbl9zZXRfdGltZW91dChzcGluLAor CQkJCSAgICAgdGltZW91dF8xMDBtcyAtIGlndF9uc2VjX2VsYXBzZWQoJml0dikpOwogCQlnZW1f c3luYyhmZCwgc3Bpbi0+aGFuZGxlKTsKIAkJaWd0X2RlYnVnKCJsb29wICVsdTogaW50ZXJ2YWw9 JWZtcyAodGFyZ2V0IDEwMG1zKSwgZWxhcHNlZCAlZm1zXG4iLAogCQkJICBsb29wcywKQEAgLTU0 LDExICs1NCwxMSBAQCBzdGF0aWMgdm9pZCBzcGluKGludCBmZCwgdW5zaWduZWQgaW50IGVuZ2lu ZSwgdW5zaWduZWQgaW50IHRpbWVvdXRfc2VjKQogCQkJICBpZ3RfbnNlY19lbGFwc2VkKCZ0dikg KiAxZS02KTsKIAkJbWVtc2V0KCZpdHYsIDAsIHNpemVvZihpdHYpKTsKIAotCQlpZ3Rfc3Bpbl9i YXRjaF9mcmVlKGZkLCBzcGluKTsKKwkJaWd0X3NwaW5fZnJlZShmZCwgc3Bpbik7CiAJCXNwaW4g PSBuZXh0OwogCQlsb29wcysrOwogCX0KLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsK KwlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluKTsKIAogCWlndF9pbmZvKCJDb21wbGV0ZWQgJWxkIGxv b3BzIGluICVsbGQgbnMsIHRhcmdldCAlbGRcbiIsCiAJCSBsb29wcywgKGxvbmcgbG9uZyllbGFw c2VkLCAobG9uZykoZWxhcHNlZCAvIHRpbWVvdXRfMTAwbXMpKTsKQEAgLTc0LDcgKzc0LDcgQEAg c3RhdGljIHZvaWQgc3Bpbl9yZXN1Ym1pdChpbnQgZmQsIHVuc2lnbmVkIGludCBlbmdpbmUsIHVu c2lnbmVkIGludCBmbGFncykKIAljb25zdCB1aW50MzJfdCBjdHgwID0gZ2VtX2NvbnRleHRfY3Jl YXRlKGZkKTsKIAljb25zdCB1aW50MzJfdCBjdHgxID0gKGZsYWdzICYgUkVTVUJNSVRfTkVXX0NU WCkgPwogCQlnZW1fY29udGV4dF9jcmVhdGUoZmQpIDogY3R4MDsKLQlpZ3Rfc3Bpbl90ICpzcGlu ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsIC5jdHggPSBjdHgwLCAuZW5naW5lID0gZW5naW5l KTsKKwlpZ3Rfc3Bpbl90ICpzcGluID0gX19pZ3Rfc3Bpbl9uZXcoZmQsIC5jdHggPSBjdHgwLCAu ZW5naW5lID0gZW5naW5lKTsKIAl1bnNpZ25lZCBpbnQgb3RoZXI7CiAKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gewpAQCAtOTYsMTEgKzk2LDExIEBAIHN0YXRpYyB2b2lk IHNwaW5fcmVzdWJtaXQoaW50IGZkLCB1bnNpZ25lZCBpbnQgZW5naW5lLCB1bnNpZ25lZCBpbnQg ZmxhZ3MpCiAJCWdlbV9leGVjYnVmKGZkLCAmZWIpOwogCX0KIAotCWlndF9zcGluX2JhdGNoX2Vu ZChzcGluKTsKKwlpZ3Rfc3Bpbl9lbmQoc3Bpbik7CiAKIAlnZW1fc3luYyhmZCwgc3Bpbi0+b2Jq WzFdLmhhbmRsZSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBzcGluKTsKKwlpZ3Rfc3Bp bl9mcmVlKGZkLCBzcGluKTsKIAogCWlmIChjdHgxICE9IGN0eDApCiAJCWdlbV9jb250ZXh0X2Rl c3Ryb3koZmQsIGN0eDEpOwpAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB2b2lkIHNwaW5fcmVz dWJtaXQoaW50IGZkLCB1bnNpZ25lZCBpbnQgZW5naW5lLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAK IHN0YXRpYyB2b2lkIHNwaW5fZXhpdF9oYW5kbGVyKGludCBzaWcpCiB7Ci0JaWd0X3Rlcm1pbmF0 ZV9zcGluX2JhdGNoZXMoKTsKKwlpZ3RfdGVybWluYXRlX3NwaW5zKCk7CiB9CiAKIHN0YXRpYyB2 b2lkIHNwaW5fb25fYWxsX2VuZ2luZXMoaW50IGZkLCB1bnNpZ25lZCBpbnQgdGltZW91dF9zZWMp CmRpZmYgLS1naXQgYS90ZXN0cy9pOTE1L2dlbV9zeW5jLmMgYi90ZXN0cy9pOTE1L2dlbV9zeW5j LmMKaW5kZXggMGEwZWQyYTEuLmYxN2VjZDBiIDEwMDY0NAotLS0gYS90ZXN0cy9pOTE1L2dlbV9z eW5jLmMKKysrIGIvdGVzdHMvaTkxNS9nZW1fc3luYy5jCkBAIC0yMjEsMTYgKzIyMSwxNiBAQCB3 YWtldXBfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0LCBpbnQgd2xlbikK IAkJZXhlY2J1Zi5idWZmZXJfY291bnQgPSAxOwogCQlleGVjYnVmLmZsYWdzID0gZW5naW5lc1tj aGlsZCAlIG51bV9lbmdpbmVzXTsKIAotCQlzcGluID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQs Ci0JCQkJCSAgICAuZW5naW5lID0gZXhlY2J1Zi5mbGFncywKLQkJCQkJICAgIC5mbGFncyA9IChJ R1RfU1BJTl9QT0xMX1JVTiB8Ci0JCQkJCQkgICAgICBJR1RfU1BJTl9GQVNUKSk7CisJCXNwaW4g PSBfX2lndF9zcGluX25ldyhmZCwKKwkJCQkgICAgICAuZW5naW5lID0gZXhlY2J1Zi5mbGFncywK KwkJCQkgICAgICAuZmxhZ3MgPSAoSUdUX1NQSU5fUE9MTF9SVU4gfAorCQkJCQkJSUdUX1NQSU5f RkFTVCkpOwogCQlpZ3RfYXNzZXJ0KGlndF9zcGluX2hhc19wb2xsKHNwaW4pKTsKIAkJY21kID0g KnNwaW4tPmJhdGNoOwogCiAJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CiAKLQkJaWd0X3Nw aW5fYmF0Y2hfZW5kKHNwaW4pOworCQlpZ3Rfc3Bpbl9lbmQoc3Bpbik7CiAJCWdlbV9zeW5jKGZk LCBvYmplY3QuaGFuZGxlKTsKIAogCQlmb3IgKGludCB3YXJtdXAgPSAwOyB3YXJtdXAgPD0gMTsg d2FybXVwKyspIHsKQEAgLTI0NCw3ICsyNDQsNyBAQCB3YWtldXBfcmluZyhpbnQgZmQsIHVuc2ln bmVkIHJpbmcsIGludCB0aW1lb3V0LCBpbnQgd2xlbikKIAkJCQlpZ3Rfc3Bpbl9idXN5d2FpdF91 bnRpbF9zdGFydGVkKHNwaW4pOwogCiAJCQkJdGhpcyA9IGdldHRpbWUoKTsKLQkJCQlpZ3Rfc3Bp bl9iYXRjaF9lbmQoc3Bpbik7CisJCQkJaWd0X3NwaW5fZW5kKHNwaW4pOwogCQkJCWdlbV9zeW5j KGZkLCBzcGluLT5oYW5kbGUpOwogCQkJCW5vdyA9IGdldHRpbWUoKTsKIApAQCAtMjcxLDcgKzI3 MSw3IEBAIHdha2V1cF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IHRpbWVvdXQsIGlu dCB3bGVuKQogCQkJCWdlbV9leGVjYnVmKGZkLCAmZXhlY2J1Zik7CiAKIAkJCXRoaXMgPSBnZXR0 aW1lKCk7Ci0JCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7CisJCQlpZ3Rfc3Bpbl9lbmQoc3Bp bik7CiAJCQlnZW1fc3luYyhmZCwgb2JqZWN0LmhhbmRsZSk7CiAJCQlub3cgPSBnZXR0aW1lKCk7 CiAKQEAgLTI4NSw3ICsyODUsNyBAQCB3YWtldXBfcmluZyhpbnQgZmQsIHVuc2lnbmVkIHJpbmcs IGludCB0aW1lb3V0LCBpbnQgd2xlbikKIAkJCSBuYW1lc1tjaGlsZCAlIG51bV9lbmdpbmVzXSA/ ICIgYyIgOiAiQyIsCiAJCQkgY3ljbGVzLCAxZTYqYmFzZWxpbmUsIGVsYXBzZWQqMWU2L2N5Y2xl cyk7CiAKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3Bpbik7CisJCWlndF9zcGluX2ZyZWUo ZmQsIHNwaW4pOwogCQlnZW1fY2xvc2UoZmQsIG9iamVjdC5oYW5kbGUpOwogCX0KIAlpZ3Rfd2Fp dGNoaWxkcmVuX3RpbWVvdXQoMip0aW1lb3V0LCBOVUxMKTsKQEAgLTMyMywxNCArMzIzLDE0IEBA IHN0YXRpYyB2b2lkIGFjdGl2ZV9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IHRpbWVv dXQpCiAJCWlndF9zcGluX3QgKnNwaW5bMl07CiAJCXVpbnQzMl90IGNtZDsKIAotCQlzcGluWzBd ID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZmQsCi0JCQkJCSAgICAgICAuZW5naW5lID0gcmluZywK LQkJCQkJICAgICAgIC5mbGFncyA9IElHVF9TUElOX0ZBU1QpOworCQlzcGluWzBdID0gX19pZ3Rf c3Bpbl9uZXcoZmQsCisJCQkJCSAuZW5naW5lID0gcmluZywKKwkJCQkJIC5mbGFncyA9IElHVF9T UElOX0ZBU1QpOwogCQljbWQgPSAqc3BpblswXS0+YmF0Y2g7CiAKLQkJc3BpblsxXSA9IF9faWd0 X3NwaW5fYmF0Y2hfbmV3KGZkLAotCQkJCQkgICAgICAgLmVuZ2luZSA9IHJpbmcsCi0JCQkJCSAg ICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9GQVNUKTsKKwkJc3BpblsxXSA9IF9faWd0X3NwaW5fbmV3 KGZkLAorCQkJCQkgLmVuZ2luZSA9IHJpbmcsCisJCQkJCSAuZmxhZ3MgPSBJR1RfU1BJTl9GQVNU KTsKIAkJaWd0X2Fzc2VydCgqc3BpblsxXS0+YmF0Y2ggPT0gY21kKTsKIAogCQlzdGFydCA9IGdl dHRpbWUoKTsKQEAgLTM0MCw3ICszNDAsNyBAQCBzdGF0aWMgdm9pZCBhY3RpdmVfcmluZyhpbnQg ZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0KQogCQkJZm9yIChpbnQgbG9vcCA9IDA7IGxv b3AgPCAxMDI0OyBsb29wKyspIHsKIAkJCQlpZ3Rfc3Bpbl90ICpzID0gc3Bpbltsb29wICYgMV07 CiAKLQkJCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQocyk7CisJCQkJaWd0X3NwaW5fZW5kKHMpOwogCQkJ CWdlbV9zeW5jKGZkLCBzLT5oYW5kbGUpOwogCiAJCQkJKnMtPmJhdGNoID0gY21kOwpAQCAtMzQ4 LDggKzM0OCw4IEBAIHN0YXRpYyB2b2lkIGFjdGl2ZV9yaW5nKGludCBmZCwgdW5zaWduZWQgcmlu ZywgaW50IHRpbWVvdXQpCiAJCQl9CiAJCQljeWNsZXMgKz0gMTAyNDsKIAkJfSB3aGlsZSAoKGVs YXBzZWQgPSBnZXR0aW1lKCkpIDwgZW5kKTsKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3Bp blsxXSk7Ci0JCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW5bMF0pOworCQlpZ3Rfc3Bpbl9m cmVlKGZkLCBzcGluWzFdKTsKKwkJaWd0X3NwaW5fZnJlZShmZCwgc3BpblswXSk7CiAKIAkJaWd0 X2luZm8oIiVzJXNvbXBsZXRlZCAlbGQgY3ljbGVzOiAlLjNmIHVzXG4iLAogCQkJIG5hbWVzW2No aWxkICUgbnVtX2VuZ2luZXNdID86ICIiLApAQCAtNDA0LDIyICs0MDQsMjIgQEAgYWN0aXZlX3dh a2V1cF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IHRpbWVvdXQsIGludCB3bGVuKQog CQlleGVjYnVmLmJ1ZmZlcl9jb3VudCA9IDE7CiAJCWV4ZWNidWYuZmxhZ3MgPSBlbmdpbmVzW2No aWxkICUgbnVtX2VuZ2luZXNdOwogCi0JCXNwaW5bMF0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhm ZCwKLQkJCQkJICAgICAgIC5lbmdpbmUgPSBleGVjYnVmLmZsYWdzLAotCQkJCQkgICAgICAgLmZs YWdzID0gKElHVF9TUElOX1BPTExfUlVOIHwKLQkJCQkJCQkgSUdUX1NQSU5fRkFTVCkpOworCQlz cGluWzBdID0gX19pZ3Rfc3Bpbl9uZXcoZmQsCisJCQkJCSAuZW5naW5lID0gZXhlY2J1Zi5mbGFn cywKKwkJCQkJIC5mbGFncyA9IChJR1RfU1BJTl9QT0xMX1JVTiB8CisJCQkJCQkgICBJR1RfU1BJ Tl9GQVNUKSk7CiAJCWlndF9hc3NlcnQoaWd0X3NwaW5faGFzX3BvbGwoc3BpblswXSkpOwogCQlj bWQgPSAqc3BpblswXS0+YmF0Y2g7CiAKLQkJc3BpblsxXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3 KGZkLAotCQkJCQkgICAgICAgLmVuZ2luZSA9IGV4ZWNidWYuZmxhZ3MsCi0JCQkJCSAgICAgICAu ZmxhZ3MgPSAoSUdUX1NQSU5fUE9MTF9SVU4gfAotCQkJCQkJCSBJR1RfU1BJTl9GQVNUKSk7CisJ CXNwaW5bMV0gPSBfX2lndF9zcGluX25ldyhmZCwKKwkJCQkJIC5lbmdpbmUgPSBleGVjYnVmLmZs YWdzLAorCQkJCQkgLmZsYWdzID0gKElHVF9TUElOX1BPTExfUlVOIHwKKwkJCQkJCSAgIElHVF9T UElOX0ZBU1QpKTsKIAogCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwogCi0JCWlndF9zcGlu X2JhdGNoX2VuZChzcGluWzFdKTsKLQkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW5bMF0pOworCQlp Z3Rfc3Bpbl9lbmQoc3BpblsxXSk7CisJCWlndF9zcGluX2VuZChzcGluWzBdKTsKIAkJZ2VtX3N5 bmMoZmQsIG9iamVjdC5oYW5kbGUpOwogCiAJCWZvciAoaW50IHdhcm11cCA9IDA7IHdhcm11cCA8 PSAxOyB3YXJtdXArKykgewpAQCAtNDM4LDcgKzQzOCw3IEBAIGFjdGl2ZV93YWtldXBfcmluZyhp bnQgZmQsIHVuc2lnbmVkIHJpbmcsIGludCB0aW1lb3V0LCBpbnQgd2xlbikKIAkJCQlnZW1fZXhl Y2J1ZihmZCwgJnNwaW5bMV0tPmV4ZWNidWYpOwogCiAJCQkJdGhpcyA9IGdldHRpbWUoKTsKLQkJ CQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3BpblswXSk7CisJCQkJaWd0X3NwaW5fZW5kKHNwaW5bMF0p OwogCQkJCWdlbV9zeW5jKGZkLCBzcGluWzBdLT5oYW5kbGUpOwogCQkJCW5vdyA9IGdldHRpbWUo KTsKIApAQCAtNDQ2LDcgKzQ0Niw3IEBAIGFjdGl2ZV93YWtldXBfcmluZyhpbnQgZmQsIHVuc2ln bmVkIHJpbmcsIGludCB0aW1lb3V0LCBpbnQgd2xlbikKIAkJCQljeWNsZXMrKzsKIAkJCQlpZ3Rf c3dhcChzcGluWzBdLCBzcGluWzFdKTsKIAkJCX0gd2hpbGUgKG5vdyA8IGVuZCk7Ci0JCQlpZ3Rf c3Bpbl9iYXRjaF9lbmQoc3BpblswXSk7CisJCQlpZ3Rfc3Bpbl9lbmQoc3BpblswXSk7CiAJCQli YXNlbGluZSA9IGVsYXBzZWQgLyBjeWNsZXM7CiAJCX0KIAkJaWd0X2luZm8oIiVzJXNhc2VsaW5l ICVsZCBjeWNsZXM6ICUuM2YgdXNcbiIsCkBAIC00NzIsNyArNDcyLDcgQEAgYWN0aXZlX3dha2V1 cF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IHRpbWVvdXQsIGludCB3bGVuKQogCQkJ Z2VtX2V4ZWNidWYoZmQsICZzcGluWzFdLT5leGVjYnVmKTsKIAogCQkJdGhpcyA9IGdldHRpbWUo KTsKLQkJCWlndF9zcGluX2JhdGNoX2VuZChzcGluWzBdKTsKKwkJCWlndF9zcGluX2VuZChzcGlu WzBdKTsKIAkJCWdlbV9zeW5jKGZkLCBvYmplY3QuaGFuZGxlKTsKIAkJCW5vdyA9IGdldHRpbWUo KTsKIApAQCAtNDgwLDcgKzQ4MCw3IEBAIGFjdGl2ZV93YWtldXBfcmluZyhpbnQgZmQsIHVuc2ln bmVkIHJpbmcsIGludCB0aW1lb3V0LCBpbnQgd2xlbikKIAkJCWN5Y2xlcysrOwogCQkJaWd0X3N3 YXAoc3BpblswXSwgc3BpblsxXSk7CiAJCX0gd2hpbGUgKG5vdyA8IGVuZCk7Ci0JCWlndF9zcGlu X2JhdGNoX2VuZChzcGluWzBdKTsKKwkJaWd0X3NwaW5fZW5kKHNwaW5bMF0pOwogCQllbGFwc2Vk IC09IGN5Y2xlcyAqIGJhc2VsaW5lOwogCiAJCWlndF9pbmZvKCIlcyVzb21wbGV0ZWQgJWxkIGN5 Y2xlczogJS4zZiArICUuM2YgdXNcbiIsCkBAIC00ODgsOCArNDg4LDggQEAgYWN0aXZlX3dha2V1 cF9yaW5nKGludCBmZCwgdW5zaWduZWQgcmluZywgaW50IHRpbWVvdXQsIGludCB3bGVuKQogCQkJ IG5hbWVzW2NoaWxkICUgbnVtX2VuZ2luZXNdID8gIiBjIiA6ICJDIiwKIAkJCSBjeWNsZXMsIDFl NipiYXNlbGluZSwgZWxhcHNlZCoxZTYvY3ljbGVzKTsKIAotCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVl KGZkLCBzcGluWzFdKTsKLQkJaWd0X3NwaW5fYmF0Y2hfZnJlZShmZCwgc3BpblswXSk7CisJCWln dF9zcGluX2ZyZWUoZmQsIHNwaW5bMV0pOworCQlpZ3Rfc3Bpbl9mcmVlKGZkLCBzcGluWzBdKTsK IAkJZ2VtX2Nsb3NlKGZkLCBvYmplY3QuaGFuZGxlKTsKIAl9CiAJaWd0X3dhaXRjaGlsZHJlbl90 aW1lb3V0KDIqdGltZW91dCwgTlVMTCk7CkBAIC0xMTg5LDE2ICsxMTg5LDE2IEBAIHByZWVtcHQo aW50IGZkLCB1bnNpZ25lZCByaW5nLCBpbnQgbnVtX2NoaWxkcmVuLCBpbnQgdGltZW91dCkKIAkJ Y3ljbGVzID0gMDsKIAkJZG8gewogCQkJaWd0X3NwaW5fdCAqc3BpbiA9Ci0JCQkJX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoZmQsCi0JCQkJCQkgICAgIC5jdHggPSBjdHhbMF0sCi0JCQkJCQkgICAgIC5l bmdpbmUgPSBleGVjYnVmLmZsYWdzKTsKKwkJCQlfX2lndF9zcGluX25ldyhmZCwKKwkJCQkJICAg ICAgIC5jdHggPSBjdHhbMF0sCisJCQkJCSAgICAgICAuZW5naW5lID0gZXhlY2J1Zi5mbGFncyk7 CiAKIAkJCWRvIHsKIAkJCQlnZW1fZXhlY2J1ZihmZCwgJmV4ZWNidWYpOwogCQkJCWdlbV9zeW5j KGZkLCBvYmplY3QuaGFuZGxlKTsKIAkJCX0gd2hpbGUgKCsrY3ljbGVzICYgMTAyMyk7CiAKLQkJ CWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNwaW4pOworCQkJaWd0X3NwaW5fZnJlZShmZCwgc3Bp bik7CiAJCX0gd2hpbGUgKChlbGFwc2VkID0gZ2V0dGltZSgpIC0gc3RhcnQpIDwgdGltZW91dCk7 CiAJCWlndF9pbmZvKCIlcyVzb21wbGV0ZWQgJWxkIGN5Y2xlczogJS4zZiB1c1xuIiwKIAkJCSBu YW1lc1tjaGlsZCAlIG51bV9lbmdpbmVzXSA/OiAiIiwKZGlmZiAtLWdpdCBhL3Rlc3RzL2k5MTUv Z2VtX3dhaXQuYyBiL3Rlc3RzL2k5MTUvZ2VtX3dhaXQuYwppbmRleCA3OTE0YzkzNi4uZWUyZWNm YTAgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2k5MTUvZ2VtX3dhaXQuYworKysgYi90ZXN0cy9pOTE1L2dl bV93YWl0LmMKQEAgLTc0LDkgKzc0LDkgQEAgc3RhdGljIHZvaWQgYmFzaWMoaW50IGZkLCB1bnNp Z25lZCBlbmdpbmUsIHVuc2lnbmVkIGZsYWdzKQogCUlHVF9DT1JLX0hBTkRMRShjb3JrKTsKIAl1 aW50MzJfdCBwbHVnID0KIAkJZmxhZ3MgJiAoV1JJVEUgfCBBV0FJVCkgPyBpZ3RfY29ya19wbHVn KCZjb3JrLCBmZCkgOiAwOwotCWlndF9zcGluX3QgKnNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXco ZmQsCi0JCQkJCSAgICAgIC5lbmdpbmUgPSBlbmdpbmUsCi0JCQkJCSAgICAgIC5kZXBlbmRlbmN5 ID0gcGx1Zyk7CisJaWd0X3NwaW5fdCAqc3BpbiA9IGlndF9zcGluX25ldyhmZCwKKwkJCQkJLmVu Z2luZSA9IGVuZ2luZSwKKwkJCQkJLmRlcGVuZGVuY3kgPSBwbHVnKTsKIAlzdHJ1Y3QgZHJtX2k5 MTVfZ2VtX3dhaXQgd2FpdCA9IHsKIAkJZmxhZ3MgJiBXUklURSA/IHBsdWcgOiBzcGluLT5oYW5k bGUKIAl9OwpAQCAtODksNyArODksNyBAQCBzdGF0aWMgdm9pZCBiYXNpYyhpbnQgZmQsIHVuc2ln bmVkIGVuZ2luZSwgdW5zaWduZWQgZmxhZ3MpCiAKIAkJdGltZW91dCA9IDEyMDsKIAkJaWYgKChm bGFncyAmIEhBTkcpID09IDApIHsKLQkJCWlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0KHNwaW4s IE5TRUNfUEVSX1NFQy8yKTsKKwkJCWlndF9zcGluX3NldF90aW1lb3V0KHNwaW4sIE5TRUNfUEVS X1NFQy8yKTsKIAkJCXRpbWVvdXQgPSAxOwogCQl9CiAKQEAgLTExMiw3ICsxMTIsNyBAQCBzdGF0 aWMgdm9pZCBiYXNpYyhpbnQgZmQsIHVuc2lnbmVkIGVuZ2luZSwgdW5zaWduZWQgZmxhZ3MpCiAJ CWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgJndhaXQpLCAtRVRJTUUpOwogCiAJCWlmICgo ZmxhZ3MgJiBIQU5HKSA9PSAwKSB7Ci0JCQlpZ3Rfc3Bpbl9iYXRjaF9zZXRfdGltZW91dChzcGlu LCBOU0VDX1BFUl9TRUMvMik7CisJCQlpZ3Rfc3Bpbl9zZXRfdGltZW91dChzcGluLCBOU0VDX1BF Ul9TRUMvMik7CiAJCQl3YWl0LnRpbWVvdXRfbnMgPSBOU0VDX1BFUl9TRUM7IC8qIDEuMHMgKi8K IAkJCWlndF9hc3NlcnRfZXEoX19nZW1fd2FpdChmZCwgJndhaXQpLCAwKTsKIAkJCWlndF9hc3Nl cnQod2FpdC50aW1lb3V0X25zID49IDApOwpAQCAtMTI5LDcgKzEyOSw3IEBAIHN0YXRpYyB2b2lk IGJhc2ljKGludCBmZCwgdW5zaWduZWQgZW5naW5lLCB1bnNpZ25lZCBmbGFncykKIAogCWlmIChw bHVnKQogCQlnZW1fY2xvc2UoZmQsIHBsdWcpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUoZmQsIHNw aW4pOworCWlndF9zcGluX2ZyZWUoZmQsIHNwaW4pOwogfQogCiBpZ3RfbWFpbgpkaWZmIC0tZ2l0 IGEvdGVzdHMvaTkxNS9pOTE1X3BtX3Jwcy5jIGIvdGVzdHMvaTkxNS9pOTE1X3BtX3Jwcy5jCmlu ZGV4IDkxZjQ2ZjEwLi40NzhjN2JlNyAxMDA2NDQKLS0tIGEvdGVzdHMvaTkxNS9pOTE1X3BtX3Jw cy5jCisrKyBiL3Rlc3RzL2k5MTUvaTkxNV9wbV9ycHMuYwpAQCAtMjU0LDI5ICsyNTQsMjkgQEAg c3RhdGljIHZvaWQgbG9hZF9oZWxwZXJfcnVuKGVudW0gbG9hZCBsb2FkKQogCQlpZ3RfZGVidWco IkFwcGx5aW5nICVzIGxvYWQuLi5cbiIsIGxoLmxvYWQgPyAiaGlnaCIgOiAibG93Iik7CiAKIAkJ cHJldl9sb2FkID0gbGgubG9hZCA9PSBISUdIOwotCQlzcGluWzBdID0gX19pZ3Rfc3Bpbl9iYXRj aF9uZXcoZHJtX2ZkKTsKKwkJc3BpblswXSA9IF9faWd0X3NwaW5fbmV3KGRybV9mZCk7CiAJCWlm IChwcmV2X2xvYWQpCi0JCQlzcGluWzFdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZHJtX2ZkKTsK KwkJCXNwaW5bMV0gPSBfX2lndF9zcGluX25ldyhkcm1fZmQpOwogCQlwcmV2X2xvYWQgPSAhcHJl dl9sb2FkOyAvKiBzZW5kIHRoZSBpbml0aWFsIHNpZ25hbCAqLwogCQl3aGlsZSAoIWxoLmV4aXQp IHsKIAkJCWJvb2wgaGlnaF9sb2FkOwogCiAJCQloYW5kbGUgPSBzcGluWzBdLT5oYW5kbGU7Ci0J CQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3BpblswXSk7CisJCQlpZ3Rfc3Bpbl9lbmQoc3BpblswXSk7 CiAJCQl3aGlsZSAoZ2VtX2JvX2J1c3koZHJtX2ZkLCBoYW5kbGUpKQogCQkJCXVzbGVlcCgxMDAp OwogCi0JCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGRybV9mZCwgc3BpblswXSk7CisJCQlpZ3Rfc3Bp bl9mcmVlKGRybV9mZCwgc3BpblswXSk7CiAJCQl1c2xlZXAoMTAwKTsKIAogCQkJaGlnaF9sb2Fk ID0gbGgubG9hZCA9PSBISUdIOwogCQkJaWYgKCFoaWdoX2xvYWQgJiYgc3BpblsxXSkgewotCQkJ CWlndF9zcGluX2JhdGNoX2ZyZWUoZHJtX2ZkLCBzcGluWzFdKTsKKwkJCQlpZ3Rfc3Bpbl9mcmVl KGRybV9mZCwgc3BpblsxXSk7CiAJCQkJc3BpblsxXSA9IE5VTEw7CiAJCQl9IGVsc2UgewogCQkJ CXNwaW5bMF0gPSBzcGluWzFdOwogCQkJfQotCQkJc3BpbltoaWdoX2xvYWRdID0gX19pZ3Rfc3Bp bl9iYXRjaF9uZXcoZHJtX2ZkKTsKKwkJCXNwaW5baGlnaF9sb2FkXSA9IF9faWd0X3NwaW5fbmV3 KGRybV9mZCk7CiAKIAkJCWlmIChsaC5zaWduYWwgJiYgaGlnaF9sb2FkICE9IHByZXZfbG9hZCkg ewogCQkJCXdyaXRlKGxoLmxpbmssICZsaC5zaWduYWwsIHNpemVvZihsaC5zaWduYWwpKTsKQEAg LTI4NiwxMSArMjg2LDExIEBAIHN0YXRpYyB2b2lkIGxvYWRfaGVscGVyX3J1bihlbnVtIGxvYWQg bG9hZCkKIAkJfQogCiAJCWhhbmRsZSA9IHNwaW5bMF0tPmhhbmRsZTsKLQkJaWd0X3NwaW5fYmF0 Y2hfZW5kKHNwaW5bMF0pOworCQlpZ3Rfc3Bpbl9lbmQoc3BpblswXSk7CiAKIAkJaWYgKHNwaW5b MV0pIHsKIAkJCWhhbmRsZSA9IHNwaW5bMV0tPmhhbmRsZTsKLQkJCWlndF9zcGluX2JhdGNoX2Vu ZChzcGluWzFdKTsKKwkJCWlndF9zcGluX2VuZChzcGluWzFdKTsKIAkJfQogCiAJCS8qIFdhaXQg Zm9yIGNvbXBsZXRpb24gd2l0aG91dCBib29zdGluZyAqLwpAQCAtMzA1LDggKzMwNSw4IEBAIHN0 YXRpYyB2b2lkIGxvYWRfaGVscGVyX3J1bihlbnVtIGxvYWQgbG9hZCkKIAkJICovCiAJCWlndF9k cm9wX2NhY2hlc19zZXQoZHJtX2ZkLCBEUk9QX1JFVElSRSk7CiAKLQkJaWd0X3NwaW5fYmF0Y2hf ZnJlZShkcm1fZmQsIHNwaW5bMV0pOwotCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGRybV9mZCwgc3Bp blswXSk7CisJCWlndF9zcGluX2ZyZWUoZHJtX2ZkLCBzcGluWzFdKTsKKwkJaWd0X3NwaW5fZnJl ZShkcm1fZmQsIHNwaW5bMF0pOwogCX0KIAogCWNsb3NlKGxoLmxpbmspOwpAQCAtNTQ5LDcgKzU0 OSw3IEBAIHN0YXRpYyB2b2lkIGJvb3N0X2ZyZXEoaW50IGZkLCBpbnQgKmJvb3N0X2ZyZXFzKQog CWludDY0X3QgdGltZW91dCA9IDE7CiAJaWd0X3NwaW5fdCAqbG9hZDsKIAotCWxvYWQgPSBpZ3Rf c3Bpbl9iYXRjaF9uZXcoZmQpOworCWxvYWQgPSBpZ3Rfc3Bpbl9uZXcoZmQpOwogCXJlc3VibWl0 X2JhdGNoKGZkLCBsb2FkLT5oYW5kbGUsIDE2KTsKIAogCS8qIFdhaXRpbmcgd2lsbCBncmFudCB1 cyBhIGJvb3N0IHRvIG1heGltdW0gKi8KQEAgLTU1OSw5ICs1NTksOSBAQCBzdGF0aWMgdm9pZCBi b29zdF9mcmVxKGludCBmZCwgaW50ICpib29zdF9mcmVxcykKIAlkdW1wKGJvb3N0X2ZyZXFzKTsK IAogCS8qIEF2b2lkIGRvd25sb2NraW5nIHRpbGwgYm9vc3QgcmVxdWVzdCBpcyBwZW5kaW5nICov Ci0JaWd0X3NwaW5fYmF0Y2hfZW5kKGxvYWQpOworCWlndF9zcGluX2VuZChsb2FkKTsKIAlnZW1f c3luYyhmZCwgbG9hZC0+aGFuZGxlKTsKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGZkLCBsb2FkKTsK KwlpZ3Rfc3Bpbl9mcmVlKGZkLCBsb2FkKTsKIH0KIAogc3RhdGljIHZvaWQgd2FpdGJvb3N0KGlu dCBmZCwgYm9vbCByZXNldCkKZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19idXN5LmMgYi90ZXN0cy9r bXNfYnVzeS5jCmluZGV4IDMyMWRiODIwLi42NmYyNmNkMCAxMDA2NDQKLS0tIGEvdGVzdHMva21z X2J1c3kuYworKysgYi90ZXN0cy9rbXNfYnVzeS5jCkBAIC03Niw5ICs3Niw5IEBAIHN0YXRpYyB2 b2lkIGZsaXBfdG9fZmIoaWd0X2Rpc3BsYXlfdCAqZHB5LCBpbnQgcGlwZSwKIAljb25zdCBpbnQg dGltZW91dCA9IG1vZGVzZXQgPyA4NTAwIDogMTAwOwogCXN0cnVjdCBkcm1fZXZlbnRfdmJsYW5r IGV2OwogCi0JaWd0X3NwaW5fdCAqdCA9IGlndF9zcGluX2JhdGNoX25ldyhkcHktPmRybV9mZCwK LQkJCQkJICAgLmVuZ2luZSA9IHJpbmcsCi0JCQkJCSAgIC5kZXBlbmRlbmN5ID0gZmItPmdlbV9o YW5kbGUpOworCWlndF9zcGluX3QgKnQgPSBpZ3Rfc3Bpbl9uZXcoZHB5LT5kcm1fZmQsCisJCQkJ ICAgICAuZW5naW5lID0gcmluZywKKwkJCQkgICAgIC5kZXBlbmRlbmN5ID0gZmItPmdlbV9oYW5k bGUpOwogCiAJaWYgKG1vZGVzZXQpIHsKIAkJLyoKQEAgLTExNSw3ICsxMTUsNyBAQCBzdGF0aWMg dm9pZCBmbGlwX3RvX2ZiKGlndF9kaXNwbGF5X3QgKmRweSwgaW50IHBpcGUsCiAKIAlpZ3Rfd2Fp dGNoaWxkcmVuX3RpbWVvdXQoNSAqIHRpbWVvdXQsCiAJCQkJICJmbGlwIGJsb2NrZWQgd2FpdGlu ZyBmb3IgYnVzeSBib1xuIik7Ci0JaWd0X3NwaW5fYmF0Y2hfZW5kKHQpOworCWlndF9zcGluX2Vu ZCh0KTsKIAogCWlndF9hc3NlcnQocmVhZChkcHktPmRybV9mZCwgJmV2LCBzaXplb2YoZXYpKSA9 PSBzaXplb2YoZXYpKTsKIAlpZ3RfYXNzZXJ0KHBvbGwoJnBmZCwgMSwgMCkgPT0gMCk7CkBAIC0x MzEsNyArMTMxLDcgQEAgc3RhdGljIHZvaWQgZmxpcF90b19mYihpZ3RfZGlzcGxheV90ICpkcHks IGludCBwaXBlLAogCQlpZ3RfZGlzcGxheV9jb21taXQyKGRweSwgQ09NTUlUX0FUT01JQyk7CiAJ fQogCi0JaWd0X3NwaW5fYmF0Y2hfZnJlZShkcHktPmRybV9mZCwgdCk7CisJaWd0X3NwaW5fZnJl ZShkcHktPmRybV9mZCwgdCk7CiB9CiAKIHN0YXRpYyB2b2lkIHRlc3RfZmxpcChpZ3RfZGlzcGxh eV90ICpkcHksIHVuc2lnbmVkIHJpbmcsIGludCBwaXBlLCBib29sIG1vZGVzZXQpCkBAIC0xODAs OSArMTgwLDkgQEAgc3RhdGljIHZvaWQgdGVzdF9mbGlwKGlndF9kaXNwbGF5X3QgKmRweSwgdW5z aWduZWQgcmluZywgaW50IHBpcGUsIGJvb2wgbW9kZXNldCkKIHN0YXRpYyB2b2lkIHRlc3RfYXRv bWljX2NvbW1pdF9oYW5nKGlndF9kaXNwbGF5X3QgKmRweSwgaWd0X3BsYW5lX3QgKnByaW1hcnks CiAJCQkJICAgIHN0cnVjdCBpZ3RfZmIgKmJ1c3lfZmIsIHVuc2lnbmVkIHJpbmcpCiB7Ci0JaWd0 X3NwaW5fdCAqdCA9IGlndF9zcGluX2JhdGNoX25ldyhkcHktPmRybV9mZCwKLQkJCQkJICAgLmVu Z2luZSA9IHJpbmcsCi0JCQkJCSAgIC5kZXBlbmRlbmN5ID0gYnVzeV9mYi0+Z2VtX2hhbmRsZSk7 CisJaWd0X3NwaW5fdCAqdCA9IGlndF9zcGluX25ldyhkcHktPmRybV9mZCwKKwkJCQkgICAgIC5l bmdpbmUgPSByaW5nLAorCQkJCSAgICAgLmRlcGVuZGVuY3kgPSBidXN5X2ZiLT5nZW1faGFuZGxl KTsKIAlzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgLmZkID0gZHB5LT5kcm1fZmQsIC5ldmVudHMgPSBQ T0xMSU4gfTsKIAl1bnNpZ25lZCBmbGFncyA9IDA7CiAJc3RydWN0IGRybV9ldmVudF92Ymxhbmsg ZXY7CkBAIC0yMTAsNyArMjEwLDcgQEAgc3RhdGljIHZvaWQgdGVzdF9hdG9taWNfY29tbWl0X2hh bmcoaWd0X2Rpc3BsYXlfdCAqZHB5LCBpZ3RfcGxhbmVfdCAqcHJpbWFyeSwKIAogCWlndF9hc3Nl cnQocmVhZChkcHktPmRybV9mZCwgJmV2LCBzaXplb2YoZXYpKSA9PSBzaXplb2YoZXYpKTsKIAot CWlndF9zcGluX2JhdGNoX2VuZCh0KTsKKwlpZ3Rfc3Bpbl9lbmQodCk7CiB9CiAKIHN0YXRpYyB2 b2lkIHRlc3RfaGFuZyhpZ3RfZGlzcGxheV90ICpkcHksIHVuc2lnbmVkIHJpbmcsCkBAIC0yNjks OSArMjY5LDkgQEAgc3RhdGljIHZvaWQgdGVzdF9wYWdlZmxpcF9tb2Rlc2V0X2hhbmcoaWd0X2Rp c3BsYXlfdCAqZHB5LAogCiAJaWd0X2Rpc3BsYXlfY29tbWl0MihkcHksIGRweS0+aXNfYXRvbWlj ID8gQ09NTUlUX0FUT01JQyA6IENPTU1JVF9MRUdBQ1kpOwogCi0JdCA9IGlndF9zcGluX2JhdGNo X25ldyhkcHktPmRybV9mZCwKLQkJCSAgICAgICAuZW5naW5lID0gcmluZywKLQkJCSAgICAgICAu ZGVwZW5kZW5jeSA9IGZiLmdlbV9oYW5kbGUpOworCXQgPSBpZ3Rfc3Bpbl9uZXcoZHB5LT5kcm1f ZmQsCisJCQkgLmVuZ2luZSA9IHJpbmcsCisJCQkgLmRlcGVuZGVuY3kgPSBmYi5nZW1faGFuZGxl KTsKIAogCWRvX29yX2RpZShkcm1Nb2RlUGFnZUZsaXAoZHB5LT5kcm1fZmQsIGRweS0+cGlwZXNb cGlwZV0uY3J0Y19pZCwgZmIuZmJfaWQsIERSTV9NT0RFX1BBR0VfRkxJUF9FVkVOVCwgJmZiKSk7 CiAKQEAgLTI4Miw3ICsyODIsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0X3BhZ2VmbGlwX21vZGVzZXRf aGFuZyhpZ3RfZGlzcGxheV90ICpkcHksCiAKIAlpZ3RfYXNzZXJ0KHJlYWQoZHB5LT5kcm1fZmQs ICZldiwgc2l6ZW9mKGV2KSkgPT0gc2l6ZW9mKGV2KSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9lbmQo dCk7CisJaWd0X3NwaW5fZW5kKHQpOwogCiAJaWd0X3JlbW92ZV9mYihkcHktPmRybV9mZCwgJmZi KTsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2ttc19jdXJzb3JfbGVnYWN5LmMgYi90ZXN0cy9rbXNf Y3Vyc29yX2xlZ2FjeS5jCmluZGV4IDlmZWJmNmU5Li5mOGQ1ZjYzMSAxMDA2NDQKLS0tIGEvdGVz dHMva21zX2N1cnNvcl9sZWdhY3kuYworKysgYi90ZXN0cy9rbXNfY3Vyc29yX2xlZ2FjeS5jCkBA IC01MzQsOCArNTM0LDggQEAgc3RhdGljIHZvaWQgYmFzaWNfZmxpcF9jdXJzb3IoaWd0X2Rpc3Bs YXlfdCAqZGlzcGxheSwKIAogCQlzcGluID0gTlVMTDsKIAkJaWYgKGZsYWdzICYgQkFTSUNfQlVT WSkKLQkJCXNwaW4gPSBpZ3Rfc3Bpbl9iYXRjaF9uZXcoZGlzcGxheS0+ZHJtX2ZkLAotCQkJCQkJ ICAuZGVwZW5kZW5jeSA9IGZiX2luZm8uZ2VtX2hhbmRsZSk7CisJCQlzcGluID0gaWd0X3NwaW5f bmV3KGRpc3BsYXktPmRybV9mZCwKKwkJCQkJICAgIC5kZXBlbmRlbmN5ID0gZmJfaW5mby5nZW1f aGFuZGxlKTsKIAogCQkvKiBTdGFydCB3aXRoIGEgc3luY2hyb25vdXMgcXVlcnkgdG8gYWxpZ24g d2l0aCB0aGUgdmJsYW5rICovCiAJCXZibGFua19zdGFydCA9IGdldF92YmxhbmsoZGlzcGxheS0+ ZHJtX2ZkLCBwaXBlLCBEUk1fVkJMQU5LX05FWFRPTk1JU1MpOwpAQCAtNTgwLDcgKzU4MCw3IEBA IHN0YXRpYyB2b2lkIGJhc2ljX2ZsaXBfY3Vyc29yKGlndF9kaXNwbGF5X3QgKmRpc3BsYXksCiAJ CWlmIChzcGluKSB7CiAJCQlzdHJ1Y3QgcG9sbGZkIHBmZCA9IHsgZGlzcGxheS0+ZHJtX2ZkLCBQ T0xMSU4gfTsKIAkJCWlndF9hc3NlcnQocG9sbCgmcGZkLCAxLCAwKSA9PSAwKTsKLQkJCWlndF9z cGluX2JhdGNoX2ZyZWUoZGlzcGxheS0+ZHJtX2ZkLCBzcGluKTsKKwkJCWlndF9zcGluX2ZyZWUo ZGlzcGxheS0+ZHJtX2ZkLCBzcGluKTsKIAkJfQogCiAJCWlmIChtaXNzKQpAQCAtMTMyMSw4ICsx MzIxLDggQEAgc3RhdGljIHZvaWQgZmxpcF92c19jdXJzb3JfYnVzeV9jcmMoaWd0X2Rpc3BsYXlf dCAqZGlzcGxheSwgYm9vbCBhdG9taWMpCiAJZm9yIChpbnQgaSA9IDE7IGkgPj0gMDsgaS0tKSB7 CiAJCWlndF9zcGluX3QgKnNwaW47CiAKLQkJc3BpbiA9IGlndF9zcGluX2JhdGNoX25ldyhkaXNw bGF5LT5kcm1fZmQsCi0JCQkJCSAgLmRlcGVuZGVuY3kgPSBmYl9pbmZvWzFdLmdlbV9oYW5kbGUp OworCQlzcGluID0gaWd0X3NwaW5fbmV3KGRpc3BsYXktPmRybV9mZCwKKwkJCQkgICAgLmRlcGVu ZGVuY3kgPSBmYl9pbmZvWzFdLmdlbV9oYW5kbGUpOwogCiAJCXZibGFua19zdGFydCA9IGdldF92 YmxhbmsoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlLCBEUk1fVkJMQU5LX05FWFRPTk1JU1MpOwogCkBA IC0xMzMzLDcgKzEzMzMsNyBAQCBzdGF0aWMgdm9pZCBmbGlwX3ZzX2N1cnNvcl9idXN5X2NyYyhp Z3RfZGlzcGxheV90ICpkaXNwbGF5LCBib29sIGF0b21pYykKIAogCQlpZ3RfcGlwZV9jcmNfZ2V0 X2N1cnJlbnQoZGlzcGxheS0+ZHJtX2ZkLCBwaXBlX2NyYywgJnRlc3RfY3JjKTsKIAotCQlpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGRpc3BsYXktPmRybV9mZCwgc3Bpbik7CisJCWlndF9zcGluX2ZyZWUo ZGlzcGxheS0+ZHJtX2ZkLCBzcGluKTsKIAogCQlpZ3Rfc2V0X3RpbWVvdXQoMSwgIlN0dWNrIHBh Z2UgZmxpcCIpOwogCQlpZ3RfaWdub3JlX3dhcm4ocmVhZChkaXNwbGF5LT5kcm1fZmQsICZ2Ymws IHNpemVvZih2YmwpKSk7CmRpZmYgLS1naXQgYS90ZXN0cy9wZXJmX3BtdS5jIGIvdGVzdHMvcGVy Zl9wbXUuYwppbmRleCAyOGYyMzViMS4uYThhZDg2Y2UgMTAwNjQ0Ci0tLSBhL3Rlc3RzL3BlcmZf cG11LmMKKysrIGIvdGVzdHMvcGVyZl9wbXUuYwpAQCAtMTgwLDcgKzE4MCw3IEBAIHN0YXRpYyBp Z3Rfc3Bpbl90ICogX19zcGluX3BvbGwoaW50IGZkLCB1aW50MzJfdCBjdHgsIHVuc2lnbmVkIGxv bmcgZmxhZ3MpCiAJaWYgKGdlbV9jYW5fc3RvcmVfZHdvcmQoZmQsIGZsYWdzKSkKIAkJb3B0cy5m bGFncyB8PSBJR1RfU1BJTl9QT0xMX1JVTjsKIAotCXJldHVybiBfX2lndF9zcGluX2JhdGNoX2Zh Y3RvcnkoZmQsICZvcHRzKTsKKwlyZXR1cm4gX19pZ3Rfc3Bpbl9mYWN0b3J5KGZkLCAmb3B0cyk7 CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBsb25nIF9fc3Bpbl93YWl0KGludCBmZCwgaWd0X3NwaW5f dCAqc3BpbikKQEAgLTIzMCw3ICsyMzAsNyBAQCBzdGF0aWMgdm9pZCBlbmRfc3BpbihpbnQgZmQs IGlndF9zcGluX3QgKnNwaW4sIHVuc2lnbmVkIGludCBmbGFncykKIAlpZiAoIXNwaW4pCiAJCXJl dHVybjsKIAotCWlndF9zcGluX2JhdGNoX2VuZChzcGluKTsKKwlpZ3Rfc3Bpbl9lbmQoc3Bpbik7 CiAKIAlpZiAoZmxhZ3MgJiBGTEFHX1NZTkMpCiAJCWdlbV9zeW5jKGZkLCBzcGluLT5oYW5kbGUp OwpAQCAtMjk2LDcgKzI5Niw3IEBAIHNpbmdsZShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50 ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsIHVuc2lnbmVkIGludCBmbGFncykKIAkJYXNzZXJ0X3dp dGhpbl9lcHNpbG9uKHZhbCwgMCwgdG9sZXJhbmNlKTsKIAl9CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9m cmVlKGdlbV9mZCwgc3Bpbik7CisJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4pOwogCWNsb3Nl KGZkKTsKIAogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CkBAIC0zMjUsNyArMzI1LDcgQEAg YnVzeV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCiAJdmFsID0gX19wbXVfcmVhZF9zaW5nbGUoZmQsICZ0c1sxXSkgLSB2YWw7CiAJaWd0 X2RlYnVnKCJzbGVwdD0lbHUgcGVyZj0lIlBSSXU2NCJcbiIsIHNsZXB0LCB0c1sxXSAtIHRzWzBd KTsKIAotCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVl KGdlbV9mZCwgc3Bpbik7CiAJY2xvc2UoZmQpOwogCiAJYXNzZXJ0X3dpdGhpbl9lcHNpbG9uKHZh bCwgdHNbMV0gLSB0c1swXSwgdG9sZXJhbmNlKTsKQEAgLTM2MSw5ICszNjEsOSBAQCBidXN5X2Rv dWJsZV9zdGFydChpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2lu ZTIgKmUpCiAJICovCiAJc3BpblswXSA9IF9fc3Bpbl9zeW5jKGdlbV9mZCwgMCwgZTJyaW5nKGdl bV9mZCwgZSkpOwogCXVzbGVlcCg1MDBlMyk7Ci0Jc3BpblsxXSA9IF9faWd0X3NwaW5fYmF0Y2hf bmV3KGdlbV9mZCwKLQkJCQkgICAgICAgLmN0eCA9IGN0eCwKLQkJCQkgICAgICAgLmVuZ2luZSA9 IGUycmluZyhnZW1fZmQsIGUpKTsKKwlzcGluWzFdID0gX19pZ3Rfc3Bpbl9uZXcoZ2VtX2ZkLAor CQkJCSAuY3R4ID0gY3R4LAorCQkJCSAuZW5naW5lID0gZTJyaW5nKGdlbV9mZCwgZSkpOwogCiAJ LyoKIAkgKiBPcGVuIFBNVSBhcyBmYXN0IGFzIHBvc3NpYmxlIGFmdGVyIHRoZSBzZWNvbmQgc3Bp biBiYXRjaCBpbiBhdHRlbXB0CkBAIC0zNzYsOCArMzc2LDggQEAgYnVzeV9kb3VibGVfc3RhcnQo aW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCXZh bCA9IF9fcG11X3JlYWRfc2luZ2xlKGZkLCAmdHNbMV0pIC0gdmFsOwogCWlndF9kZWJ1Zygic2xl cHQ9JWx1IHBlcmY9JSJQUkl1NjQiXG4iLCBzbGVwdCwgdHNbMV0gLSB0c1swXSk7CiAKLQlpZ3Rf c3Bpbl9iYXRjaF9lbmQoc3BpblswXSk7Ci0JaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW5bMV0pOwor CWlndF9zcGluX2VuZChzcGluWzBdKTsKKwlpZ3Rfc3Bpbl9lbmQoc3BpblsxXSk7CiAKIAkvKiBX YWl0IGZvciBHUFUgaWRsZSB0byB2ZXJpZnkgUE1VIHJlcG9ydHMgaWRsZS4gKi8KIAlnZW1fcXVp ZXNjZW50X2dwdShnZW1fZmQpOwpAQCAtMzg4LDggKzM4OCw4IEBAIGJ1c3lfZG91YmxlX3N0YXJ0 KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSkKIAog CWlndF9pbmZvKCJidXN5PSUiUFJJdTY0IiBpZGxlPSUiUFJJdTY0IlxuIiwgdmFsLCB2YWwyKTsK IAotCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGluWzBdKTsKLQlpZ3Rfc3Bpbl9iYXRj aF9mcmVlKGdlbV9mZCwgc3BpblsxXSk7CisJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW5bMF0p OworCWlndF9zcGluX2ZyZWUoZ2VtX2ZkLCBzcGluWzFdKTsKIAogCWNsb3NlKGZkKTsKIApAQCAt NDUzLDcgKzQ1Myw3IEBAIGJ1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBp bnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAlwbXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2Vu Z2luZXMsIHR2YWxbMV0pOwogCiAJZW5kX3NwaW4oZ2VtX2ZkLCBzcGluLCBGTEFHX1NZTkMpOwot CWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBzcGluKTsKKwlpZ3Rfc3Bpbl9mcmVlKGdlbV9m ZCwgc3Bpbik7CiAJY2xvc2UoZmRbMF0pOwogCiAJZm9yIChpID0gMDsgaSA8IG51bV9lbmdpbmVz OyBpKyspCkBAIC00NzEsOSArNDcxLDkgQEAgYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwgY29u c3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogfQogCiBzdGF0aWMgdm9pZAot X19zdWJtaXRfc3Bpbl9iYXRjaChpbnQgZ2VtX2ZkLCBpZ3Rfc3Bpbl90ICpzcGluLAotCQkgICAg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAotCQkgICAgaW50IG9mZnNl dCkKK19fc3VibWl0X3NwaW4oaW50IGdlbV9mZCwgaWd0X3NwaW5fdCAqc3BpbiwKKwkgICAgICBj b25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0aW9uX2VuZ2luZTIgKmUsCisJICAgICAgaW50IG9mZnNl dCkKIHsKIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX2V4ZWNidWZmZXIyIGViID0gc3Bpbi0+ZXhlY2J1 ZjsKIApAQCAtNTAxLDcgKzUwMSw3IEBAIG1vc3RfYnVzeV9jaGVja19hbGwoaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQlpZiAoZSA9PSBlXykK IAkJCWlkbGVfaWR4ID0gaTsKIAkJZWxzZSBpZiAoc3BpbikKLQkJCV9fc3VibWl0X3NwaW5fYmF0 Y2goZ2VtX2ZkLCBzcGluLCBlXywgNjQpOworCQkJX19zdWJtaXRfc3BpbihnZW1fZmQsIHNwaW4s IGVfLCA2NCk7CiAJCWVsc2UKIAkJCXNwaW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmlu ZyhnZW1fZmQsIGVfKSk7CiAKQEAgLTUyNCw3ICs1MjQsNyBAQCBtb3N0X2J1c3lfY2hlY2tfYWxs KGludCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAlw bXVfcmVhZF9tdWx0aShmZFswXSwgbnVtX2VuZ2luZXMsIHR2YWxbMV0pOwogCiAJZW5kX3NwaW4o Z2VtX2ZkLCBzcGluLCBGTEFHX1NZTkMpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2ZkLCBz cGluKTsKKwlpZ3Rfc3Bpbl9mcmVlKGdlbV9mZCwgc3Bpbik7CiAJY2xvc2UoZmRbMF0pOwogCiAJ Zm9yIChpID0gMDsgaSA8IG51bV9lbmdpbmVzOyBpKyspCkBAIC01NTYsNyArNTU2LDcgQEAgYWxs X2J1c3lfY2hlY2tfYWxsKGludCBnZW1fZmQsIGNvbnN0IHVuc2lnbmVkIGludCBudW1fZW5naW5l cywKIAlpID0gMDsKIAlmb3JfZWFjaF9lbmdpbmVfY2xhc3NfaW5zdGFuY2UoZ2VtX2ZkLCBlKSB7 CiAJCWlmIChzcGluKQotCQkJX19zdWJtaXRfc3Bpbl9iYXRjaChnZW1fZmQsIHNwaW4sIGUsIDY0 KTsKKwkJCV9fc3VibWl0X3NwaW4oZ2VtX2ZkLCBzcGluLCBlLCA2NCk7CiAJCWVsc2UKIAkJCXNw aW4gPSBfX3NwaW5fcG9sbChnZW1fZmQsIDAsIGUycmluZyhnZW1fZmQsIGUpKTsKIApAQCAtNTc4 LDcgKzU3OCw3IEBAIGFsbF9idXN5X2NoZWNrX2FsbChpbnQgZ2VtX2ZkLCBjb25zdCB1bnNpZ25l ZCBpbnQgbnVtX2VuZ2luZXMsCiAJcG11X3JlYWRfbXVsdGkoZmRbMF0sIG51bV9lbmdpbmVzLCB0 dmFsWzFdKTsKIAogCWVuZF9zcGluKGdlbV9mZCwgc3BpbiwgRkxBR19TWU5DKTsKLQlpZ3Rfc3Bp bl9iYXRjaF9mcmVlKGdlbV9mZCwgc3Bpbik7CisJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4p OwogCWNsb3NlKGZkWzBdKTsKIAogCWZvciAoaSA9IDA7IGkgPCBudW1fZW5naW5lczsgaSsrKQpA QCAtNjE3LDcgKzYxNyw3IEBAIG5vX3NlbWEoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVs X2V4ZWN1dGlvbl9lbmdpbmUyICplLCB1bnNpZ25lZCBpbnQgZmxhZ3MpCiAKIAlpZiAoc3Bpbikg ewogCQllbmRfc3BpbihnZW1fZmQsIHNwaW4sIEZMQUdfU1lOQyk7Ci0JCWlndF9zcGluX2JhdGNo X2ZyZWUoZ2VtX2ZkLCBzcGluKTsKKwkJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4pOwogCX0K IAljbG9zZShmZCk7CiAKQEAgLTk1MCw5ICs5NTAsOSBAQCBtdWx0aV9jbGllbnQoaW50IGdlbV9m ZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplKQogCXBlcmZfc2xlcHRb MF0gPSB0c1sxXSAtIHRzWzBdOwogCWlndF9kZWJ1Zygic2xlcHQ9JWx1IHBlcmY9JSJQUkl1NjQi XG4iLCBzbGVwdFswXSwgcGVyZl9zbGVwdFswXSk7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bp bik7CisJaWd0X3NwaW5fZW5kKHNwaW4pOwogCWdlbV9zeW5jKGdlbV9mZCwgc3Bpbi0+aGFuZGxl KTsKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwgc3Bpbik7CisJaWd0X3NwaW5fZnJlZShn ZW1fZmQsIHNwaW4pOwogCWNsb3NlKGZkWzBdKTsKIAogCWFzc2VydF93aXRoaW5fZXBzaWxvbih2 YWxbMF0sIHBlcmZfc2xlcHRbMF0sIHRvbGVyYW5jZSk7CkBAIC0xMDUyLDggKzEwNTIsOCBAQCBz dGF0aWMgdm9pZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCSAqIENyZWF0ZSB0d28gc3Bpbm5l cnMgc28gdGVzdCBjYW4gZW5zdXJlIHNob3J0ZXIgZ2FwcyBpbiBlbmdpbmUKIAkgKiBidXN5bmVz cyBhcyBpdCBpcyB0ZXJtaW5hdGluZyBvbmUgYW5kIHJlLXN0YXJ0aW5nIHRoZSBvdGhlci4KIAkg Ki8KLQlzcGluWzBdID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2luZSA9IEk5MTVf RVhFQ19SRU5ERVIpOwotCXNwaW5bMV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsIC5l bmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKKwlzcGluWzBdID0gaWd0X3NwaW5fbmV3KGdlbV9m ZCwgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOworCXNwaW5bMV0gPSBfX2lndF9zcGluX25l dyhnZW1fZmQsIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKIAogCXZhbCA9IF9fcG11X3Jl YWRfc2luZ2xlKGZkLCAmdHNbMF0pOwogCkBAIC0xMTM1LDkgKzExMzUsOSBAQCBzdGF0aWMgdm9p ZCBjcHVfaG90cGx1ZyhpbnQgZ2VtX2ZkKQogCQlpZiAoIHJldCA9PSAxIHx8IChyZXQgPCAwICYm IGVycm5vICE9IEVBR0FJTikpCiAJCQlicmVhazsKIAotCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdl bV9mZCwgc3BpbltjdXJdKTsKLQkJc3BpbltjdXJdID0gX19pZ3Rfc3Bpbl9iYXRjaF9uZXcoZ2Vt X2ZkLAotCQkJCQkJIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSKTsKKwkJaWd0X3NwaW5fZnJl ZShnZW1fZmQsIHNwaW5bY3VyXSk7CisJCXNwaW5bY3VyXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9m ZCwKKwkJCQkJICAgLmVuZ2luZSA9IEk5MTVfRVhFQ19SRU5ERVIpOwogCQljdXIgXj0gMTsKIAl9 CiAKQEAgLTExNDUsOCArMTE0NSw4IEBAIHN0YXRpYyB2b2lkIGNwdV9ob3RwbHVnKGludCBnZW1f ZmQpCiAKIAllbmRfc3BpbihnZW1fZmQsIHNwaW5bMF0sIEZMQUdfU1lOQyk7CiAJZW5kX3NwaW4o Z2VtX2ZkLCBzcGluWzFdLCBGTEFHX1NZTkMpOwotCWlndF9zcGluX2JhdGNoX2ZyZWUoZ2VtX2Zk LCBzcGluWzBdKTsKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwgc3BpblsxXSk7CisJaWd0 X3NwaW5fZnJlZShnZW1fZmQsIHNwaW5bMF0pOworCWlndF9zcGluX2ZyZWUoZ2VtX2ZkLCBzcGlu WzFdKTsKIAlpZ3Rfd2FpdGNoaWxkcmVuKCk7CiAJY2xvc2UoZmQpOwogCWNsb3NlKGxpbmtbMF0p OwpAQCAtMTE3NCw5ICsxMTc0LDkgQEAgdGVzdF9pbnRlcnJ1cHRzKGludCBnZW1fZmQpCiAKIAkv KiBRdWV1ZSBzcGlubmluZyBiYXRjaGVzLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgdGFyZ2V0 OyBpKyspIHsKLQkJc3BpbltpXSA9IF9faWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwKLQkJCQkJ ICAgICAgIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAotCQkJCQkgICAgICAgLmZsYWdzID0g SUdUX1NQSU5fRkVOQ0VfT1VUKTsKKwkJc3BpbltpXSA9IF9faWd0X3NwaW5fbmV3KGdlbV9mZCwK KwkJCQkJIC5lbmdpbmUgPSBJOTE1X0VYRUNfUkVOREVSLAorCQkJCQkgLmZsYWdzID0gSUdUX1NQ SU5fRkVOQ0VfT1VUKTsKIAkJaWYgKGkgPT0gMCkgewogCQkJZmVuY2VfZmQgPSBzcGluW2ldLT5v dXRfZmVuY2U7CiAJCX0gZWxzZSB7CkBAIC0xMjAwLDkgKzEyMDAsOSBAQCB0ZXN0X2ludGVycnVw dHMoaW50IGdlbV9mZCkKIAogCS8qIEFybSBiYXRjaCBleHBpcmF0aW9uLiAqLwogCWZvciAoaW50 IGkgPSAwOyBpIDwgdGFyZ2V0OyBpKyspCi0JCWlndF9zcGluX2JhdGNoX3NldF90aW1lb3V0KHNw aW5baV0sCi0JCQkJCSAgIChpICsgMSkgKiB0ZXN0X2R1cmF0aW9uX21zICogMWU2Ci0JCQkJCSAg IC8gdGFyZ2V0KTsKKwkJaWd0X3NwaW5fc2V0X3RpbWVvdXQoc3BpbltpXSwKKwkJCQkgICAgIChp ICsgMSkgKiB0ZXN0X2R1cmF0aW9uX21zICogMWU2CisJCQkJICAgICAvIHRhcmdldCk7CiAKIAkv KiBXYWl0IGZvciBsYXN0IGJhdGNoIHRvIGZpbmlzaC4gKi8KIAlwZmQuZXZlbnRzID0gUE9MTElO OwpAQCAtMTIxMiw3ICsxMjEyLDcgQEAgdGVzdF9pbnRlcnJ1cHRzKGludCBnZW1fZmQpCiAKIAkv KiBGcmVlIGJhdGNoZXMuICovCiAJZm9yIChpbnQgaSA9IDA7IGkgPCB0YXJnZXQ7IGkrKykKLQkJ aWd0X3NwaW5fYmF0Y2hfZnJlZShnZW1fZmQsIHNwaW5baV0pOworCQlpZ3Rfc3Bpbl9mcmVlKGdl bV9mZCwgc3BpbltpXSk7CiAKIAkvKiBDaGVjayBhdCBsZWFzdCBhcyBtYW55IGludGVycnVwdHMg aGFzIGJlZW4gZ2VuZXJhdGVkLiAqLwogCWJ1c3kgPSBwbXVfcmVhZF9zaW5nbGUoZmQpIC0gaWRs ZTsKQEAgLTEyMzcsOCArMTIzNyw4IEBAIHRlc3RfaW50ZXJydXB0c19zeW5jKGludCBnZW1fZmQp CiAKIAkvKiBRdWV1ZSBzcGlubmluZyBiYXRjaGVzLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwg dGFyZ2V0OyBpKyspCi0JCXNwaW5baV0gPSBfX2lndF9zcGluX2JhdGNoX25ldyhnZW1fZmQsCi0J CQkJCSAgICAgICAuZmxhZ3MgPSBJR1RfU1BJTl9GRU5DRV9PVVQpOworCQlzcGluW2ldID0gX19p Z3Rfc3Bpbl9uZXcoZ2VtX2ZkLAorCQkJCQkgLmZsYWdzID0gSUdUX1NQSU5fRkVOQ0VfT1VUKTsK IAogCS8qIFdhaXQgZm9yIGlkbGUgc3RhdGUuICovCiAJaWRsZSA9IHBtdV9yZWFkX3NpbmdsZShm ZCk7CkBAIC0xMjU0LDkgKzEyNTQsOSBAQCB0ZXN0X2ludGVycnVwdHNfc3luYyhpbnQgZ2VtX2Zk KQogCQljb25zdCB1bnNpZ25lZCBpbnQgdGltZW91dF9tcyA9IHRlc3RfZHVyYXRpb25fbXMgLyB0 YXJnZXQ7CiAKIAkJcGZkLmZkID0gc3BpbltpXS0+b3V0X2ZlbmNlOwotCQlpZ3Rfc3Bpbl9iYXRj aF9zZXRfdGltZW91dChzcGluW2ldLCB0aW1lb3V0X21zICogMWU2KTsKKwkJaWd0X3NwaW5fc2V0 X3RpbWVvdXQoc3BpbltpXSwgdGltZW91dF9tcyAqIDFlNik7CiAJCWlndF9hc3NlcnRfZXEocG9s bCgmcGZkLCAxLCAyICogdGltZW91dF9tcyksIDEpOwotCQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdl bV9mZCwgc3BpbltpXSk7CisJCWlndF9zcGluX2ZyZWUoZ2VtX2ZkLCBzcGluW2ldKTsKIAl9CiAK IAkvKiBDaGVjayBhdCBsZWFzdCBhcyBtYW55IGludGVycnVwdHMgaGFzIGJlZW4gZ2VuZXJhdGVk LiAqLwpAQCAtMTMxMCw3ICsxMzEwLDcgQEAgdGVzdF9mcmVxdWVuY3koaW50IGdlbV9mZCkKIAlt aW5bMF0gPSAxZTkqKHZhbFswXSAtIHN0YXJ0WzBdKSAvIHNsZXB0OwogCW1pblsxXSA9IDFlOSoo dmFsWzFdIC0gc3RhcnRbMV0pIC8gc2xlcHQ7CiAKLQlpZ3Rfc3Bpbl9iYXRjaF9mcmVlKGdlbV9m ZCwgc3Bpbik7CisJaWd0X3NwaW5fZnJlZShnZW1fZmQsIHNwaW4pOwogCWdlbV9xdWllc2NlbnRf Z3B1KGdlbV9mZCk7IC8qIERvbid0IGxlYWsgYnVzeSBibyBpbnRvIHRoZSBuZXh0IHBoYXNlICov CiAKIAl1c2xlZXAoMWU2KTsKQEAgLTEzMzYsNyArMTMzNiw3IEBAIHRlc3RfZnJlcXVlbmN5KGlu dCBnZW1fZmQpCiAJbWF4WzBdID0gMWU5Kih2YWxbMF0gLSBzdGFydFswXSkgLyBzbGVwdDsKIAlt YXhbMV0gPSAxZTkqKHZhbFsxXSAtIHN0YXJ0WzFdKSAvIHNsZXB0OwogCi0JaWd0X3NwaW5fYmF0 Y2hfZnJlZShnZW1fZmQsIHNwaW4pOworCWlndF9zcGluX2ZyZWUoZ2VtX2ZkLCBzcGluKTsKIAln ZW1fcXVpZXNjZW50X2dwdShnZW1fZmQpOwogCiAJLyoKQEAgLTE1MDEsNyArMTUwMSw3IEBAIHRl c3RfZW5hYmxlX3JhY2UoaW50IGdlbV9mZCwgY29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9l bmdpbmUyICplKQogCWdlbV9xdWllc2NlbnRfZ3B1KGdlbV9mZCk7CiB9CiAKLXN0YXRpYyB2b2lk IF9fcmVhcm1fc3Bpbl9iYXRjaChpZ3Rfc3Bpbl90ICpzcGluKQorc3RhdGljIHZvaWQgX19yZWFy bV9zcGluKGlndF9zcGluX3QgKnNwaW4pCiB7CiAJY29uc3QgdWludDMyX3QgbWlfYXJiX2NoayA9 IDB4NSA8PCAyMzsKIApAQCAtMTU3MCw4ICsxNTcwLDggQEAgYWNjdXJhY3koaW50IGdlbV9mZCwg Y29uc3Qgc3RydWN0IGludGVsX2V4ZWN1dGlvbl9lbmdpbmUyICplLAogCQlpZ3Rfc3Bpbl90ICpz cGluOwogCiAJCS8qIEFsbG9jYXRlIG91ciBzcGluIGJhdGNoIGFuZCBpZGxlIGl0LiAqLwotCQlz cGluID0gaWd0X3NwaW5fYmF0Y2hfbmV3KGdlbV9mZCwgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQs IGUpKTsKLQkJaWd0X3NwaW5fYmF0Y2hfZW5kKHNwaW4pOworCQlzcGluID0gaWd0X3NwaW5fbmV3 KGdlbV9mZCwgLmVuZ2luZSA9IGUycmluZyhnZW1fZmQsIGUpKTsKKwkJaWd0X3NwaW5fZW5kKHNw aW4pOwogCQlnZW1fc3luYyhnZW1fZmQsIHNwaW4tPmhhbmRsZSk7CiAKIAkJLyogMXN0IHBhc3Mg aXMgY2FsaWJyYXRpb24sIHNlY29uZCBwYXNzIGlzIHRoZSB0ZXN0LiAqLwpAQCAtMTU5NiwxNCAr MTU5NiwxNCBAQCBhY2N1cmFjeShpbnQgZ2VtX2ZkLCBjb25zdCBzdHJ1Y3QgaW50ZWxfZXhlY3V0 aW9uX2VuZ2luZTIgKmUsCiAJCQkJbmFub3NsZWVwKCZfdHMsIE5VTEwpOwogCiAJCQkJLyogUmVz dGFydCB0aGUgc3BpbmJhdGNoLiAqLwotCQkJCV9fcmVhcm1fc3Bpbl9iYXRjaChzcGluKTsKLQkJ CQlfX3N1Ym1pdF9zcGluX2JhdGNoKGdlbV9mZCwgc3BpbiwgZSwgMCk7CisJCQkJX19yZWFybV9z cGluKHNwaW4pOworCQkJCV9fc3VibWl0X3NwaW4oZ2VtX2ZkLCBzcGluLCBlLCAwKTsKIAogCQkJ CS8qIFBXTSBidXN5IHNsZWVwLiAqLwogCQkJCWxvb3BfYnVzeSA9IGlndF9uc2VjX2VsYXBzZWQo JnN0YXJ0KTsKIAkJCQlfdHMudHZfbnNlYyA9IGJ1c3lfdXMgKiAxMDAwOwogCQkJCW5hbm9zbGVl cCgmX3RzLCBOVUxMKTsKLQkJCQlpZ3Rfc3Bpbl9iYXRjaF9lbmQoc3Bpbik7CisJCQkJaWd0X3Nw aW5fZW5kKHNwaW4pOwogCiAJCQkJLyogVGltZSBhY2NvdW50aW5nLiAqLwogCQkJCW5vdyA9IGln dF9uc2VjX2VsYXBzZWQoJnN0YXJ0KTsKQEAgLTE2NDAsNyArMTY0MCw3IEBAIGFjY3VyYWN5KGlu dCBnZW1fZmQsIGNvbnN0IHN0cnVjdCBpbnRlbF9leGVjdXRpb25fZW5naW5lMiAqZSwKIAkJCXdy aXRlKGxpbmtbMV0sICZleHBlY3RlZCwgc2l6ZW9mKGV4cGVjdGVkKSk7CiAJCX0KIAotCQlpZ3Rf c3Bpbl9iYXRjaF9mcmVlKGdlbV9mZCwgc3Bpbik7CisJCWlndF9zcGluX2ZyZWUoZ2VtX2ZkLCBz cGluKTsKIAl9CiAKIAlmZCA9IG9wZW5fcG11KEk5MTVfUE1VX0VOR0lORV9CVVNZKGUtPmNsYXNz LCBlLT5pbnN0YW5jZSkpOwotLSAKMi4xNy4xCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fXwpJbnRlbC1nZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9s aXN0aW5mby9pbnRlbC1nZng=