From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 31578 invoked from network); 25 Jun 2023 19:31:50 -0000 Received: from localhost (HELO inbox.vuxu.org) (::1) by localhost with ESMTPUTF8; 25 Jun 2023 19:31:50 -0000 Content-Type: multipart/mixed; boundary="===============4237114880592899036==" MIME-Version: 1.0 Subject: =?utf8?q?Re=3A_=5BPR_PATCH=5D_=5BUpdated=5D_virtuoso=3A_update_to_7=2E2=2E10?= To: ml@inbox.vuxu.org From: klarasm Reply-to: ml@inbox.vuxu.org In-Reply-To: References: Date: Sun, 25 Jun 2023 21:31:49 +0200 List-Id: Message-ID: <20230625193149.i9zoCMDHjwIrnH1slxdebfR7vRdUrVeO6eXNewanRww@z> GitHub notification mails are now in MIME to allow UTF8. --===============4237114880592899036== Content-Type: text/plain; charset="utf8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGhlcmUgaXMgYW4gdXBkYXRlZCBwdWxsIHJlcXVlc3QgYnkga2xhcmFzbSBhZ2FpbnN0IG1hc3Rl ciBvbiB0aGUgdm9pZC1wYWNrYWdlcyByZXBvc2l0b3J5CgpodHRwczovL2dpdGh1Yi5jb20va2xh cmFzbS92b2lkLXBhY2thZ2VzIHZpcnR1b3NvLXVwZGF0ZQpodHRwczovL2dpdGh1Yi5jb20vdm9p ZC1saW51eC92b2lkLXBhY2thZ2VzL3B1bGwvNDI2NjYKCnZpcnR1b3NvOiB1cGRhdGUgdG8gNy4y LjEwCiMjIyMgVGVzdGluZyB0aGUgY2hhbmdlcw0KLSBJIHRlc3RlZCB0aGUgY2hhbmdlcyBpbiB0 aGlzIFBSOiBtb3N0IG9mIHRoZSB0ZXN0IHN1aXRlIHBhc3NlcyAoZXhjZXB0aW5nIHRncmFwaHFs KSwgSSBkb24ndCB1c2UgdGhpcyBwYWNrYWdlIGRpcmVjdGx5DQoNClRoaXMgcGFja2FnZSBoYXMg c29tZSB3ZWlyZG5lc3MgaW4gdGhlIHRlc3Qgc3VpdGUuIEl0IGZhaWxzIHdoZW4gcnVuIGZyb20g YC4veGJwcy1zcmMgLUsgcGtnIHZpcnR1b3NvYCBidXQgc3VjY2VlZHMgaWYgSSBkbyBgLi94YnBz LXNyYyBjaHJvb3RgIGFmdGVyd2FyZHMgYW5kOg0KYGBgDQptYWtlIGNsZWFuDQouL2F1dG9nZW4u c2gNCi4vY29uZmlndXJlDQptYWtlDQptYWtlIGNoZWNrDQpgYGANCg0KSSB0cmllZCByZXBsYWNp bmcgcHJlX2NvbmZpZ3VyZSwgZG9fY29uZmlndXJlLCBkb19idWlsZCBhbmQgZG9fY2hlY2sgdG8g ZG8gdGhlIHNhbWUgdGhpbmcgYnV0IGl0IHN0aWxsIGZhaWxzLiBNYXliZSBJJ20gbWlzc2luZyBz b21lIGRlcGVuZGVuY2llcyBvciBzb21ldGhpbmcuDQoNCmB0Z3JhcGhxbGAgaXMgdGhlIG9ubHkg dGVzdCBmYWlsaW5nOiANClt0Z3JhcGhxbC5vdXRwdXQubG9nXShodHRwczovL2dpdGh1Yi5jb20v dm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2ZpbGVzLzEwOTI2NDM1L3RncmFwaHFsLm91dHB1dC5s b2cpDQoNCiMjIyMgTG9jYWwgYnVpbGQgdGVzdGluZw0KLSBJIGJ1aWx0IHRoaXMgUFIgbG9jYWxs eSBmb3IgbXkgbmF0aXZlIGFyY2hpdGVjdHVyZSwgKHg4Nl82NC1nbGliYykNCi0gSSBidWlsdCB0 aGlzIFBSIGxvY2FsbHkgZm9yIG15IG5hdGl2ZSBhcmNoaXRlY3R1cmUsICh4ODZfNjQtbXVzbCkK CkEgcGF0Y2ggZmlsZSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS92b2lkLWxpbnV4L3ZvaWQtcGFj a2FnZXMvcHVsbC80MjY2Ni5wYXRjaCBpcyBhdHRhY2hlZA== --===============4237114880592899036== Content-Type: text/x-diff MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="github-pr-virtuoso-update-42666.patch" RnJvbSAwN2ZmMDExMGYzMjk0NGUzMTE2MmZlZjM1YzEzMWRhNDE3MzJkMWJmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBLbGFyYSBNb2RpbiA8a2xhcmFzbW9kaW5AZ21haWwuY29tPgpE YXRlOiBXZWQsIDEgRmViIDIwMjMgMTY6NDI6NDcgKzAxMDAKU3ViamVjdDogW1BBVENIXSB2aXJ0 dW9zbzogdXBkYXRlIHRvIDcuMi4xMAoKdGVzdCBzdWl0ZSB3YXMgZmFpbGluZyBvbiByZXZidW1w CgotIHJlbW92ZSBwYXRjaGVzIHRoYXQgbm8gbG9uZ2VyIGFwcGx5Ci0gZGlzYWJsZSBzdGF0aWMg bGlicmFyaWVzIGFzIHdlJ3JlIHJlbW92aW5nIHRoZW0gYWZ0ZXIgaW5zdGFsbCBhbnl3YXkKLSBk aXNhYmxlIHRncmFwaHFsIHRlc3QgKGZhaWxzIGluc2lkZSAuL3hicHMtc3JjKQotIGFkZCB3aGlj aCB0byBob3N0bWFrZWRlcGVuZHMKLSBhZGQgbWlzc2luZyBjaGVja2RlcGVuZHMKLSB1cGRhdGUg cHJvamVjdCBob21lcGFnZQotLS0KIC4uLi92aXJ0dW9zby9wYXRjaGVzL2Fsd2F5cy1pZWVlLWZs b2F0cy5wYXRjaCB8ICAgNDYgLQogLi4uL3BhdGNoZXMvZGlzYWJsZS10Z3JhcGhxbC10ZXN0LnBh dGNoICAgICAgIHwgICAxMiArCiAuLi4vdmlydHVvc28vcGF0Y2hlcy9maXgtdXRmOC1iaXR0ZXN0 LnBhdGNoICAgfCAgIDE1IC0KIHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9tdXNsLXBhZ2Vfc2l6 ZS5wYXRjaCB8ICAgMzQgLQogLi4uL3JlbW92ZS1vcGVuc3NsLXZlcnNpb24tY2hlY2sucGF0Y2gg ICAgICAgIHwgICA0OCAtCiAuLi4vdmlydHVvc28vcGF0Y2hlcy9zc2wtY29ubmVjdC1zdGF0ZS5w YXRjaCAgfCAgIDE1IC0KIHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wxLjEucGF0Y2ggICAg ICAgICB8IDE0MDAgLS0tLS0tLS0tLS0tLS0tLS0KIHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9z c2wxLjFfbW9yZS5wYXRjaCAgICB8ICAgMjAgLQogc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3Vz ZS1ta3N0ZW1wLnBhdGNoICAgIHwgICAxOCAtCiBzcmNwa2dzL3ZpcnR1b3NvL3RlbXBsYXRlICAg ICAgICAgICAgICAgICAgICAgfCAgIDI1ICstCiAxMCBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRp b25zKCspLCAxNjEwIGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3Mvdmly dHVvc28vcGF0Y2hlcy9hbHdheXMtaWVlZS1mbG9hdHMucGF0Y2gKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvZGlzYWJsZS10Z3JhcGhxbC10ZXN0LnBhdGNoCiBk ZWxldGUgbW9kZSAxMDA2NDQgc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL2ZpeC11dGY4LWJpdHRl c3QucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvbXVz bC1wYWdlX3NpemUucGF0Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3ZpcnR1b3NvL3Bh dGNoZXMvcmVtb3ZlLW9wZW5zc2wtdmVyc2lvbi1jaGVjay5wYXRjaAogZGVsZXRlIG1vZGUgMTAw NjQ0IHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wtY29ubmVjdC1zdGF0ZS5wYXRjaAogZGVs ZXRlIG1vZGUgMTAwNjQ0IHNyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wxLjEucGF0Y2gKIGRl bGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvc3NsMS4xX21vcmUucGF0 Y2gKIGRlbGV0ZSBtb2RlIDEwMDY0NCBzcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvdXNlLW1rc3Rl bXAucGF0Y2gKCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvYWx3YXlzLWll ZWUtZmxvYXRzLnBhdGNoIGIvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL2Fsd2F5cy1pZWVlLWZs b2F0cy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjliNTAzNDIxNGY3Li4w MDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL2Fsd2F5cy1pZWVlLWZs b2F0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gYmM4ZTk4OTBk ZThjOTg2NmU2ZTFmNDljODM1NWViZWU5MTU1NzllNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEK LUZyb206IHE2NiA8ZGFuaWVsQG9jdGFmb3JnZS5vcmc+Ci1EYXRlOiBXZWQsIDI5IEphbiAyMDIw IDEyOjUwOjQ2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBhbHdheXMgdXNlIElFRUUgZmxv YXRzCi0KLVdlIGRvbid0IGJ1aWxkIG9uIGFueSBwbGF0Zm9ybXMgd2hlcmUgdGhpcyBpcyBub3Qg dGhlIGNhc2UuCi0KLUZpeGVzIHBsYXRmb3JtcyBmb3Igd2hpY2ggdGhpcyBpcyBub3QgY2hlY2tl ZC4KLS0tLQotIGxpYnNyYy9Eay9Ea21hcnNoYWwuYyB8IDIwICstLS0tLS0tLS0tLS0tLS0tLS0t Ci0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxOSBkZWxldGlvbnMoLSkKLQotZGlm ZiAtLWdpdCBsaWJzcmMvRGsvRGttYXJzaGFsLmMgbGlic3JjL0RrL0RrbWFyc2hhbC5jCi1pbmRl eCBkYTE1YTIxLi5iMmI2YzcxIDEwMDY0NAotLS0tIGEvbGlic3JjL0RrL0RrbWFyc2hhbC5jCi0r KysgYi9saWJzcmMvRGsvRGttYXJzaGFsLmMKLUBAIC0zMSwyNSArMzEsNyBAQAotICMgaW5jbHVk ZSA8bmV0aW5ldC9pbi5oPgkJCSAvKiBmb3IgbnRvaGwsIGh0b25sICovCi0gI2VuZGlmCi0gCi0t I2lmIGRlZmluZWQgKGkzODYpIHx8IFwKLS0gICAgZGVmaW5lZCAoX1dJTjY0KSB8fCBcCi0tICAg IGRlZmluZWQgKF9NX0lYODYpIHx8IFwKLS0gICAgZGVmaW5lZCAoX01fQUxQSEEpIHx8IFwKLS0g ICAgZGVmaW5lZCAobWM2ODAwMCkgfHwgXAotLSAgICBkZWZpbmVkIChzcGFyYykgfHwgXAotLSAg ICBkZWZpbmVkIChfX3g4Nl82NCkgfHwgXAotLSAgICBkZWZpbmVkIChfX2FscGhhKSB8fCBcCi0t ICAgIGRlZmluZWQgKF9fcG93ZXJwYykgfHwgXAotLSAgICBkZWZpbmVkIChtaXBzKSB8fCBcCi0t ICAgIGRlZmluZWQgKF9fT1MyX18pIHx8IFwKLS0gICAgZGVmaW5lZCAoX0lCTVIyKQotLSMgZGVm aW5lIF9JRUVFX0ZMT0FUUwotLSNlbGlmIGRlZmluZWQgKE9QTF9TT1VSQ0UpCi0tIyBpbmNsdWRl IDxsaWJycGMuaD4KLS0jZWxzZQotLSMgaW5jbHVkZSA8cnBjL3R5cGVzLmg+Ci0tIyBpbmNsdWRl IDxycGMveGRyLmg+Ci0tI2VuZGlmCi0rI2RlZmluZSBfSUVFRV9GTE9BVFMKLSAKLSBtYWNyb19j aGFyX2Z1bmMgcmVhZHRhYmxlWzI1Nl07Ci0gc2VzX3dyaXRlX2Z1bmMgd3JpdGV0YWJsZVsyNTZd OwotLS0gCi0yLjI0LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL2Rp c2FibGUtdGdyYXBocWwtdGVzdC5wYXRjaCBiL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9kaXNh YmxlLXRncmFwaHFsLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MDAwMDAwLi5kYmQyYzQ2N2ViMWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmNwa2dzL3ZpcnR1b3Nv L3BhdGNoZXMvZGlzYWJsZS10Z3JhcGhxbC10ZXN0LnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0t LSBhL2JpbnNyYy90ZXN0cy9zdWl0ZS90ZXN0YWxsLnNoCTIwMjMtMDItMjcgMTg6MDU6MzMuMDAw MDAwMDAwICswMTAwCisrKysgYi9iaW5zcmMvdGVzdHMvc3VpdGUvdGVzdGFsbC5zaAkyMDIzLTAz LTA5IDE0OjU1OjU2LjkxODY1NzA2MyArMDEwMAorQEAgLTEzNiw4ICsxMzYsNyBAQAorIHJ0ZXN0 IFwKKyB0cmVwbF9yZGYgXAorIHRzb2FwMTIgXAorLXR2c3B4ZXggXAorLXRncmFwaHFsICIKKyt0 dnNweGV4ICIKKyAKKyBRVUlDS1RFU1Q9MQorIFRQQ0RNT0RFPWxvY2FsCmRpZmYgLS1naXQgYS9z cmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvZml4LXV0ZjgtYml0dGVzdC5wYXRjaCBiL3NyY3BrZ3Mv dmlydHVvc28vcGF0Y2hlcy9maXgtdXRmOC1iaXR0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA4NWU4NGE2N2VmM2MuLjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3Zp cnR1b3NvL3BhdGNoZXMvZml4LXV0ZjgtYml0dGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0x LDE1ICswLDAgQEAKLVNvdXJjZTogQHB1bGxtb2xsCi1VcHN0cmVhbTogbm8KLVJlYXNvbjogZXhw cmVzc2lvbiByZXF1aXJlcyBiaW5hcnkgQU5ELCBub3QgbG9naWNhbAotCi0tLS0gYS9saWJzcmMv dXRpbC9wY3JlbGliL3BjcmVfc3R1ZHkuYwkyMDE4LTA4LTE2IDAxOjA2OjIxLjAwMDAwMDAwMCAr MDIwMAotKysrIGIvbGlic3JjL3V0aWwvcGNyZWxpYi9wY3JlX3N0dWR5LmMJMjAyMC0wMS0yNyAx NTo0NDo1Ny43MTU4MjEzNTUgKzAxMDAKLUBAIC00MzIsNyArNDMyLDcgQEAKLSAgICAgICAgICAg Zm9yIChjID0gMDsgYyA8IDE2OyBjKyspIHN0YXJ0X2JpdHNbY10gfD0gdGNvZGVbY107Ci0gICAg ICAgICAgIGZvciAoYyA9IDEyODsgYyA8IDI1NjsgYysrKQotICAgICAgICAgICAgIHsKLS0gICAg ICAgICAgICBpZiAoKHRjb2RlW2MvOF0gJiYgKDEgPDwgKGMmNykpKSAhPSAwKQotKyAgICAgICAg ICAgIGlmICgodGNvZGVbYy84XSAmICgxIDw8IChjJjcpKSkgIT0gMCkKLSAgICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgIGludCBkID0gKGMgPj4gNikgfCAweGMwOyAgICAgICAgICAgIC8q IFNldCBiaXQgZm9yIHRoaXMgc3RhcnRlciAqLwotICAgICAgICAgICAgICAgc3RhcnRfYml0c1tk LzhdIHw9ICgxIDw8IChkJjcpKTsgICAgLyogYW5kIHRoZW4gc2tpcCBvbiB0byB0aGUgKi8KZGlm ZiAtLWdpdCBhL3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9tdXNsLXBhZ2Vfc2l6ZS5wYXRjaCBi L3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9tdXNsLXBhZ2Vfc2l6ZS5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggNzNhOWFiZGQwZjM5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3Jj cGtncy92aXJ0dW9zby9wYXRjaGVzL211c2wtcGFnZV9zaXplLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMzQgKzAsMCBAQAotRnJvbSAxMjU2Njk4MjFkOTVmZjk4OWJmOTQxNjFiOGUyNDk3YmZj YTlkMGFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogcTY2IDxkYW5pZWxAb2N0YWZv cmdlLm9yZz4KLURhdGU6IFdlZCwgMjkgSmFuIDIwMjAgMTI6NTQ6MTQgKzAxMDAKLVN1YmplY3Q6 IFtQQVRDSCAyLzJdIFVzZSBtb3JlIHBvcnRhYmxlIHBhZ2Ugc2l6ZSBjaGVjawotCi1UaGlzIGZp eGVzIG11c2wgYnVpbGRzLgotLS0tCi0gbGlic3JjL0RrL3Rsc2YuaCB8IDMgKystCi0gMSBmaWxl IGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGxp YnNyYy9Eay90bHNmLmggbGlic3JjL0RrL3Rsc2YuaAotaW5kZXggZGRjZTQ3OC4uYTk2ODdmNCAx MDA2NDQKLS0tLSBhL2xpYnNyYy9Eay90bHNmLmgKLSsrKyBiL2xpYnNyYy9Eay90bHNmLmgKLUBA IC0yMCw2ICsyMCw3IEBACi0gI2RlZmluZSBfVExTRl9IXwotIAotICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0gZXh0ZXJuIHNpemVfdCBpbml0X21lbW9y eV9wb29sKHNpemVfdCwgdm9pZCAqKTsKLSBleHRlcm4gc2l6ZV90IGdldF91c2VkX3NpemUodm9p ZCAqKTsKLUBAIC0xNTksNyArMTYwLDcgQEAgZXh0ZXJuIHZvaWQgdGxzZl9iYXNlX2ZyZWUgKHZv aWQgKiBjLCBzaXplX3Qgc3opOwotIAotICNkZWZpbmUgREVGQVVMVF9BUkVBX1NJWkUgKDEwMjQq MTApCi0gCi0tI2RlZmluZSBQQUdFX1NJWkUgKGdldHBhZ2VzaXplKCkpCi0rI2RlZmluZSBQQUdF X1NJWkUgKChpbnQpc3lzY29uZihfU0NfUEFHRVNJWkUpKQotIAotICNpZm5kZWYgV0lOMzIKLSAj aWZkZWYgVVNFX1BSSU5URgotLS0gCi0yLjI0LjAKLQpkaWZmIC0tZ2l0IGEvc3JjcGtncy92aXJ0 dW9zby9wYXRjaGVzL3JlbW92ZS1vcGVuc3NsLXZlcnNpb24tY2hlY2sucGF0Y2ggYi9zcmNwa2dz L3ZpcnR1b3NvL3BhdGNoZXMvcmVtb3ZlLW9wZW5zc2wtdmVyc2lvbi1jaGVjay5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzA5NGZiYjZhYjY0Li4wMDAwMDAwMDAwMDAKLS0t IGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3JlbW92ZS1vcGVuc3NsLXZlcnNpb24tY2hlY2su cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Tb3VyY2U6IEBwdWxsbW9sbAot VXBzdHJlYW06IG5vCi1SZWFzb246IEVuYWJsZSBzdWJkaXItb2JqZWN0cyBhbmQgc3RyaXAgb3Bl bnNzbCB2ZXJzaW9uIGNoZWNrIHdoaWNoIGZhaWxzIGZvciBsaWJyZXNzbAotCi0tLS0gYS9jb25m aWd1cmUuYWMJMjAxOC0wOC0xNiAwMTowNjoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2NvbmZp Z3VyZS5hYwkyMDIwLTAxLTI3IDE1OjAyOjM2Ljk0NjkyMjY2MyArMDEwMAotQEAgLTU4LDcgKzU4 LDcgQEAKLSBkbmwJQU1fSU5JVF9BVVRPTUFLRShbMS44XSkKLSBkbmwJQU1fSU5JVF9BVVRPTUFL RShbMS45IHRhci11c3Rhcl0pCi0gZG5sCi0tQU1fSU5JVF9BVVRPTUFLRShbMS45IHRhci11c3Rh cl0pCi0rQU1fSU5JVF9BVVRPTUFLRShbMS45IHRhci11c3RhciBzdWJkaXItb2JqZWN0c10pCi0g Ci0gQU1fTUFJTlRBSU5FUl9NT0RFCi0gCi1AQCAtODY3LDMyICs4NjcsNiBAQAotIAk7OwotIGVz YWMKLSAKLS1BQ19NU0dfQ0hFQ0tJTkcoW09wZW5TU0wgdmVyc2lvbl0pCi0tQUNfVFJZX0NPTVBJ TEUoWwotLSNpbmNsdWRlIDxvcGVuc3NsL29wZW5zc2x2Lmg+Ci0tXSwgWwotLSNpZiBPUEVOU1NM X1ZFUlNJT05fTlVNQkVSIDwgMHgwMDkwODAxZkwKLS0jZXJyb3IgT3BlblNTTCB2ZXJzaW9uIHRv byBvbGQgCi0tI2VuZGlmCi0tICAgIF0sWwotLSAgICAgIEFDX01TR19SRVNVTFQoWz49IDAuOS44 ZV0pCi0tICAgIF0sWwotLSAgICAgIEFDX01TR19FUlJPUihbT3BlblNTTCB2ZXJzaW9uIDAuOS44 ZSBvciBncmVhdGVyIGlzIHJlcXVpcmVkLl0pCi0tICAgIF0pCi0tCi0tQUNfTVNHX0NIRUNLSU5H KFtPcGVuU1NMIHZlcnNpb25dKQotLUFDX1RSWV9DT01QSUxFKFsKLS0jaW5jbHVkZSA8b3BlbnNz bC9vcGVuc3Nsdi5oPgotLV0sWwotLSNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSID49IDB4MTAx MDAwMGZMCi0tI2Vycm9yIE9wZW5TU0wgdmVyc2lvbiB0b28gbmV3Ci0tI2VuZGlmCi0tICAgIF0s WwotLSAgICAgIEFDX01TR19SRVNVTFQoWzwgMS4xLjBdKQotLSAgICBdLFsKLS0gICAgICBBQ19N U0dfRVJST1IoW09wZW5TU0wgdmVyc2lvbiAxLjEuMCBvciBncmVhdGVyIGlzIGN1cnJlbnRseSBu b3Qgc3VwcG9ydGVkLl0pCi0tICAgIF0pCi0tCi0gQUNfTVNHX0NIRUNLSU5HKFt1c2FiaWxpdHkg b2YgdGhlIE9wZW5TU0wgaGVhZGVyIGZpbGVzIGFuZCBsaWJyYXJ5IGluICR7b3BlbnNzbF9kaXJ9 XSkKLSBBQ19UUllfUlVOKFsKLSAjaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KZGlmZiAtLWdpdCBh L3NyY3BrZ3MvdmlydHVvc28vcGF0Y2hlcy9zc2wtY29ubmVjdC1zdGF0ZS5wYXRjaCBiL3NyY3Br Z3MvdmlydHVvc28vcGF0Y2hlcy9zc2wtY29ubmVjdC1zdGF0ZS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMzk1NjZlM2I2ZGZkLi4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtn cy92aXJ0dW9zby9wYXRjaGVzL3NzbC1jb25uZWN0LXN0YXRlLnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTUgKzAsMCBAQAotU291cmNlOiBAcHVsbG1vbGwKLVVwc3RyZWFtOiBubwotUmVhc29u OiBVc2UgdGhlIHByb3BlciBpbnRlcmZhY2Ugb2YgbGlicmVzc2wgd2hpY2ggZG9lcyBub3QgZXhw b3NlIHRoZSBpbnRlcm5hbCBzdHJ1Y3R1cmUgb2YgU1NMCi0KLS0tLSBhL2xpYnNyYy9XaS9odHRw LmMJMjAxOC0wOC0xNiAwMTowNjoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2xpYnNyYy9XaS9o dHRwLmMJMjAyMC0wMS0yNyAxNTowOTo1My4yODQ5MDUyNjUgKzAxMDAKLUBAIC05OTQ5LDcgKzk5 NDksNyBAQAotIAkgIGNsaV9zc2xfZ2V0X2Vycm9yX3N0cmluZyAoZXJyX2J1Ziwgc2l6ZW9mIChl cnJfYnVmKSk7Ci0gCSAgc3Fscl9uZXdfZXJyb3IgKCI0MjAwMCIsICIuLjAwMiIsICJTU0xfZG9f aGFuZHNoYWtlIGZhaWxlZCAlcyIsIGVycl9idWYpOwotIAl9Ci0tICAgICAgc3NsLT5zdGF0ZSA9 IFNTTF9TVF9BQ0NFUFQ7Ci0rICAgICAgU1NMX3NldF9hY2NlcHRfc3RhdGUgKHNzbCk7Ci0gICAg ICAgd2hpbGUgKFNTTF9yZW5lZ290aWF0ZV9wZW5kaW5nIChzc2wpICYmIGN0ciA8IDEwMDApCi0g CXsKLSAJICB0aW1lb3V0X3QgdG8gPSB7IDAsIDEwMDAgfTsKZGlmZiAtLWdpdCBhL3NyY3BrZ3Mv dmlydHVvc28vcGF0Y2hlcy9zc2wxLjEucGF0Y2ggYi9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMv c3NsMS4xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODg3NDk5NDY0ODAu LjAwMDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvc3NsMS4xLnBhdGNo CisrKyAvZGV2L251bGwKQEAgLTEsMTQwMCArMCwwIEBACi1EZXNjcmlwdGlvbjogRml4IEZUQkZT IHdpdGggb3BlbnNzbCAxLjEKLUF1dGhvcjogU2ViYXN0aWFuIEFuZHJ6ZWogU2lld2lvciA8c2Vi YXN0aWFuQGJyZWFrcG9pbnQuY2M+Ci1CdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9y Zy84Mjg1OTQKLUZvcndhcmRlZDogaHR0cHM6Ly9naXRodWIuY29tL29wZW5saW5rL3ZpcnR1b3Nv LW9wZW5zb3VyY2UvcHVsbC81ODMKLUxhc3QtVXBkYXRlOiBNbyAxMS4gRmViIDEzOjUwOjE3IENF VCAyMDE5IChieSBBbmRyZWFzIFRpbGxlIDx0aWxsZUBkZWJpYW4ub3JnPikKLQotLS0tCi0KLUZy b20gODIzMDkyY2NjYmQ4ZTJhYjliZmFkNmMzZDNkZjc5MWE3ZmZhNzZmYyBNb24gU2VwIDE3IDAw OjAwOjAwIDIwMDEKLUZyb206IFNlYmFzdGlhbiBBbmRyemVqIFNpZXdpb3IgPHNlYmFzdGlhbkBi cmVha3BvaW50LmNjPgotRGF0ZTogTW9uLCA1IFNlcCAyMDE2IDEwOjQ5OjU0ICswMDAwCi1TdWJq ZWN0OiBbUEFUQ0hdIHZpcnR1b3NvLW9wZW5zb3VyY2U6IGJ1aWxkIGFnYWluc3Qgb3BlbnNzbCAx LjEuMAotCi1TaWduZWQtb2ZmLWJ5OiBTZWJhc3RpYW4gQW5kcnplaiBTaWV3aW9yIDxzZWJhc3Rp YW5AYnJlYWtwb2ludC5jYz4KLS0tLQotIGxpYnNyYy9Eay9Ea2VybmVsLmMgICAgICB8ICAgNiAr LQotIGxpYnNyYy9XaS9iaWZfY3J5cHRvLmMgICB8IDEyMCArKysrKysrKysrLS0tLS0tLS0KLSBs aWJzcmMvV2kvaHR0cC5jICAgICAgICAgfCAgIDIgKy0KLSBsaWJzcmMvV2kveG1sZW5jLmMgICAg ICAgfCAzMTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0K LSBsaWJzcmMvV2kveG1sZW5jLmggICAgICAgfCAxOTMgKysrKysrKysrKysrKysrKysrKysrKysr KystLQotIGxpYnNyYy9XaS94bWxlbmNfYWxnb3MuYyB8IDEzMiArKysrKysrKysrKy0tLS0tLS0t LQotIGxpYnNyYy91dGlsL3NzbGVuZ2luZS5jICB8ICAgNiArLQotIDcgZmlsZXMgY2hhbmdlZCwg NTI0IGluc2VydGlvbnMoKyksIDI1NCBkZWxldGlvbnMoLSkKLQotLS0tIGEvbGlic3JjL1dpL2Jp Zl9jcnlwdG8uYwotKysrIGIvbGlic3JjL1dpL2JpZl9jcnlwdG8uYwotQEAgLTE4MSwyMSArMTgx LDI2IEBAIGJveF9obWFjIChjYWRkcl90IGJveCwgY2FkZHJfdCBrZXksIGludAotICAgdW5zaWdu ZWQgY2hhciB0ZW1wW0VWUF9NQVhfTURfU0laRV07Ci0gICB1bnNpZ25lZCBpbnQgc2l6ZSA9IDA7 Ci0gICBjYWRkcl90IHJlcyA9IE5VTEw7Ci0tICBITUFDX0NUWCBjdHg7Ci0rICBITUFDX0NUWCAq Y3R4OwotICAgY29uc3QgRVZQX01EICptZCA9IEVWUF9zaGExICgpOwotIAotICAgaWYgKGFsZyA9 PSAxKQotICAgICBtZCA9IEVWUF9yaXBlbWQxNjAgKCk7Ci0gCi0tICBITUFDX0luaXQgKCZjdHgs IGtleSwgYm94X2xlbmd0aCAoa2V5KSAtIERWX1NUUklOR1AgKGtleSkgPyAxIDogMCwgbWQpOwot LSAgYm94X2htYWNfMSAoYm94LCAmY3R4KTsKLS0gIEhNQUNfRmluYWwgKCZjdHgsIHRlbXAsICZz aXplKTsKLSsgIGN0eCA9IEhNQUNfQ1RYX25ldygpOwotKyAgaWYgKCFjdHgpCi0rCSAgcmV0dXJu IHJlczsKLSsKLSsgIEhNQUNfSW5pdF9leCAoY3R4LCBrZXksIGJveF9sZW5ndGggKGtleSkgLSBE Vl9TVFJJTkdQIChrZXkpID8gMSA6IDAsIG1kLCBOVUxMKTsKLSsgIGJveF9obWFjXzEgKGJveCwg Y3R4KTsKLSsgIEhNQUNfRmluYWwgKGN0eCwgdGVtcCwgJnNpemUpOwotICAgaWYgKHNpemUpCi0g ICAgIHsKLSAgICAgICByZXMgPSBka19hbGxvY19ib3ggKHNpemUgKyAxLCBEVl9TSE9SVF9TVFJJ TkcpOwotICAgICAgIG1lbWNweSAocmVzLCB0ZW1wLCBzaXplKTsKLSAgICAgICByZXNbc2l6ZV0g PSAwOwotICAgICB9Ci0rICBITUFDX0NUWF9mcmVlKGN0eCk7Ci0gICByZXR1cm4gcmVzOwotIH0K LSAKLUBAIC0zNDcsMTQgKzM1MiwxMiBAQCBhc24xX3BhcnNlX3RvX3htbCAoQklPICogYnAsIHVu c2lnbmVkIGNoCi0gCSAgICB7Ci0gCSAgICAgIGludCBpaTsKLSAKLS0JICAgICAgb3BwID0gb3A7 Ci0tCSAgICAgIGlpID0gZDJpX0FTTjFfQk9PTEVBTiAoTlVMTCwgKGNvbnN0IHVuc2lnbmVkIGNo YXIgKiopJm9wcCwgbGVuICsgaGwpOwotLQkgICAgICBpZiAoaWkgPCAwKQotKwkgICAgICBpZiAo bGVuICsgaGwgPCAxKQotIAkJewotIAkJICBpZiAoQklPX3dyaXRlIChicCwgIkJhZCBib29sZWFu XG4iLCAxMikpCi0gCQkgICAgZ290byBlbmQ7Ci0gCQl9Ci0tCSAgICAgIEJJT19wcmludGYgKGJw LCAiJWQiLCBpaSk7Ci0rCSAgICAgIEJJT19wcmludGYgKGJwLCAiJWQiLCBwWzBdKTsKLSAJICAg IH0KLSAJICBlbHNlIGlmICh0YWcgPT0gVl9BU04xX0JNUFNUUklORykKLSAJICAgIHsKLUBAIC00 MTUsNyArNDE4LDcgQEAgYXNuMV9wYXJzZV90b194bWwgKEJJTyAqIGJwLCB1bnNpZ25lZCBjaAot IAkJfQotIAkgICAgICBpZiAob3MgIT0gTlVMTCkKLSAJCXsKLS0JCSAgTV9BU04xX09DVEVUX1NU UklOR19mcmVlIChvcyk7Ci0rCQkgIEFTTjFfU1RSSU5HX2ZyZWUgKG9zKTsKLSAJCSAgb3MgPSBO VUxMOwotIAkJfQotIAkgICAgfQotQEAgLTQ0OCw3ICs0NTEsNyBAQCBhc24xX3BhcnNlX3RvX3ht bCAoQklPICogYnAsIHVuc2lnbmVkIGNoCi0gCQkgIGlmIChCSU9fd3JpdGUgKGJwLCAiQkFEIElO VEVHRVIiLCAxMSkgPD0gMCkKLSAJCSAgICBnb3RvIGVuZDsKLSAJCX0KLS0JICAgICAgTV9BU04x X0lOVEVHRVJfZnJlZSAoYnMpOwotKwkgICAgICBBU04xX1NUUklOR19mcmVlIChicyk7Ci0gCSAg ICB9Ci0gCSAgZWxzZSBpZiAodGFnID09IFZfQVNOMV9FTlVNRVJBVEVEKQotIAkgICAgewotQEAg LTQ3OSw3ICs0ODIsNyBAQCBhc24xX3BhcnNlX3RvX3htbCAoQklPICogYnAsIHVuc2lnbmVkIGNo Ci0gCQkgIGlmIChCSU9fd3JpdGUgKGJwLCAiQkFEIEVOVU1FUkFURUQiLCAxMSkgPD0gMCkKLSAJ CSAgICBnb3RvIGVuZDsKLSAJCX0KLS0JICAgICAgTV9BU04xX0VOVU1FUkFURURfZnJlZSAoYnMp OwotKwkgICAgICBBU04xX1NUUklOR19mcmVlIChicyk7Ci0gCSAgICB9Ci0gCSAgZWxzZSBpZiAo bGVuID4gMCAmJiBkdW1wKQotIAkgICAgewotQEAgLTUxNSw3ICs1MTgsNyBAQCBlbmQ6Ci0gICBp ZiAobyAhPSBOVUxMKQotICAgICBBU04xX09CSkVDVF9mcmVlIChvKTsKLSAgIGlmIChvcyAhPSBO VUxMKQotLSAgICBNX0FTTjFfT0NURVRfU1RSSU5HX2ZyZWUgKG9zKTsKLSsgICAgQVNOMV9TVFJJ TkdfZnJlZSAob3MpOwotICAgKnBwID0gcDsKLSAgIHJldHVybiAocmV0KTsKLSB9Ci1AQCAtNzIz LDcgKzcyNiw3IEBAIGJpb190b19zdHJzZXMgKEJJTyAqIG91dF9iaW8pCi0gICBpbnQgbGVuID0g QklPX2dldF9tZW1fZGF0YSAob3V0X2JpbywgJnB0cik7Ci0gICBpbnQgdG9fcmVhZCA9IGxlbiwg cmVhZGVkID0gMDsKLSAKLS0gIHRvX2ZyZWUgPSAoKEJVRl9NRU0gKikgb3V0X2Jpby0+cHRyKS0+ ZGF0YTsKLSsgIHRvX2ZyZWUgPSAoKEJVRl9NRU0gKikgQklPX2dldF9kYXRhKG91dF9iaW8pKS0+ ZGF0YTsKLSAgIEJJT19zZXRfZmxhZ3MgKG91dF9iaW8sIEJJT19GTEFHU19NRU1fUkRPTkxZKTsK LSAgIENBVENIX1dSSVRFX0ZBSUwgKHNlcykKLSAgICAgewotQEAgLTczNSw3ICs3MzgsNyBAQCBi aW9fdG9fc3Ryc2VzIChCSU8gKiBvdXRfYmlvKQotICAgICAgIH0gd2hpbGUgKHRvX3JlYWQgPiAw KTsKLSAgICAgfQotICAgRU5EX1dSSVRFX0ZBSUwgKHNlcyk7Ci0tICAoKEJVRl9NRU0gKikgb3V0 X2Jpby0+cHRyKS0+ZGF0YSA9IHRvX2ZyZWU7Ci0rICAoKEJVRl9NRU0gKikgQklPX2dldF9kYXRh KG91dF9iaW8pKS0+ZGF0YSA9IHRvX2ZyZWU7Ci0gICBCSU9fY2xlYXJfZmxhZ3MgKG91dF9iaW8s IEJJT19GTEFHU19NRU1fUkRPTkxZKTsKLSAgIHJldHVybiBzZXM7Ci0gfQotQEAgLTc3MCw3ICs3 NzMsNyBAQCBiaWZfc21pbWVfdmVyaWZ5IChjYWRkcl90ICogcXN0LCBjYWRkcl90Ci0gICBpZiAo RFZfVFlQRV9PRiAobXNnKSA9PSBEVl9TVFJJTkdfU0VTU0lPTikKLSAgICAgewotICAgICAgIGlu X2JpbyA9IHN0cnNlc190b19iaW8gKChka19zZXNzaW9uX3QgKikgbXNnKTsKLS0gICAgICB0b19m cmVlID0gKChCVUZfTUVNICopIGluX2Jpby0+cHRyKS0+ZGF0YTsKLSsgICAgICB0b19mcmVlID0g KChCVUZfTUVNICopIEJJT19nZXRfZGF0YShpbl9iaW8pKS0+ZGF0YTsKLSAgICAgICBCSU9fc2V0 X2ZsYWdzIChpbl9iaW8sIEJJT19GTEFHU19NRU1fUkRPTkxZKTsKLSAgICAgfQotICAgZWxzZQot QEAgLTc4MCw3ICs3ODMsNyBAQCBiaWZfc21pbWVfdmVyaWZ5IChjYWRkcl90ICogcXN0LCBjYWRk cl90Ci0gICAgICAgcDcgPSBTTUlNRV9yZWFkX1BLQ1M3IChpbl9iaW8sICZkYXRhX2Jpbyk7Ci0g ICAgICAgaWYgKHRvX2ZyZWUpCi0gCXsKLS0JICAoKEJVRl9NRU0gKikgaW5fYmlvLT5wdHIpLT5k YXRhID0gdG9fZnJlZTsKLSsJICAoKEJVRl9NRU0gKikgQklPX2dldF9kYXRhKGluX2JpbykpLT5k YXRhID0gdG9fZnJlZTsKLSAJICBCSU9fY2xlYXJfZmxhZ3MgKGluX2JpbywgQklPX0ZMQUdTX01F TV9SRE9OTFkpOwotIAl9Ci0gICAgICAgQklPX2ZyZWUgKGluX2Jpbyk7Ci1AQCAtOTI0LDE2ICs5 MjcsMjAgQEAgYmlmX3NtaW1lX3NpZ24gKGNhZGRyX3QgKiBxc3QsIGNhZGRyX3QgKgotICAgICB9 Ci0gCi0gICBjZXJ0cyA9IHNrX1g1MDlfbmV3X251bGwgKCk7Ci0tICBpZiAoc3RvcmUgJiYgc3Rv cmUtPm9ianMpCi0rCi0rICBpZiAoc3RvcmUgJiYgWDUwOV9TVE9SRV9nZXQwX29iamVjdHMoc3Rv cmUpKQotICAgICB7Ci0tICAgICAgZm9yIChpbnggPSAwOyBpbnggPCBza19YNTA5X09CSkVDVF9u dW0gKHN0b3JlLT5vYmpzKTsgaW54KyspCi0rICAgICAgU1RBQ0tfT0YoWDUwOV9PQkpFQ1QpICpz dG9yZV9vYmpzID0gWDUwOV9TVE9SRV9nZXQwX29iamVjdHMoc3RvcmUpOwotKwotKyAgICAgIGZv ciAoaW54ID0gMDsgaW54IDwgc2tfWDUwOV9PQkpFQ1RfbnVtIChzdG9yZV9vYmpzKTsgaW54Kysp Ci0gCXsKLS0JICBYNTA5X09CSkVDVCAqb2JqID0gc2tfWDUwOV9PQkpFQ1RfdmFsdWUgKHN0b3Jl LT5vYmpzLCBpbngpOwotLQkgIGlmIChvYmotPnR5cGUgPT0gWDUwOV9MVV9YNTA5KQotLQkgICAg c2tfWDUwOV9wdXNoIChjZXJ0cywgWDUwOV9kdXAgKG9iai0+ZGF0YS54NTA5KSk7Ci0rCSAgWDUw OV9PQkpFQ1QgKm9iaiA9IHNrX1g1MDlfT0JKRUNUX3ZhbHVlIChzdG9yZV9vYmpzLCBpbngpOwot KwkgIGlmIChYNTA5X09CSkVDVF9nZXRfdHlwZShvYmopID09IFg1MDlfTFVfWDUwOSkKLSsJICAg IHNrX1g1MDlfcHVzaCAoY2VydHMsIFg1MDlfZHVwIChYNTA5X09CSkVDVF9nZXQwX1g1MDkob2Jq KSkpOwotIAl9Ci0gCi0gICAgIH0KLSsKLSAgIGlmIChzdG9yZSkKLSAgICAgWDUwOV9TVE9SRV9m cmVlIChzdG9yZSk7Ci0gICBpbl9iaW8gPSBCSU9fbmV3X21lbV9idWYgKG1zZywgYm94X2xlbmd0 aCAobXNnKSAtIDEpOwotQEAgLTEwMDUsMTUgKzEwMTIsMTkgQEAgYmlmX3NtaW1lX2VuY3J5cHQg KGNhZGRyX3QgKiBxc3QsIGNhZGRyXwotICAgICBzcWxyX25ld19lcnJvciAoIjQyMDAwIiwgIkNS MDA2IiwgIk5vIHJlY2lwaWVudCBjZXJ0aWZpY2F0ZXMiKTsKLSAKLSAgIGNlcnRzID0gc2tfWDUw OV9uZXdfbnVsbCAoKTsKLS0gIGlmIChzdG9yZSAmJiBzdG9yZS0+b2JqcykKLSsKLSsgIGlmIChz dG9yZSAmJiBYNTA5X1NUT1JFX2dldDBfb2JqZWN0cyhzdG9yZSkpCi0gICAgIHsKLS0gICAgICBm b3IgKGlueCA9IDA7IGlueCA8IHNrX1g1MDlfT0JKRUNUX251bSAoc3RvcmUtPm9ianMpOyBpbngr KykKLSsgICAgICBTVEFDS19PRihYNTA5X09CSkVDVCkgKnN0b3JlX29ianMgPSBYNTA5X1NUT1JF X2dldDBfb2JqZWN0cyhzdG9yZSk7Ci0rCi0rICAgICAgZm9yIChpbnggPSAwOyBpbnggPCBza19Y NTA5X09CSkVDVF9udW0gKHN0b3JlX29ianMpOyBpbngrKykKLSAJewotLQkgIFg1MDlfT0JKRUNU ICpvYmogPSBza19YNTA5X09CSkVDVF92YWx1ZSAoc3RvcmUtPm9ianMsIGlueCk7Ci0tCSAgaWYg KG9iai0+dHlwZSA9PSBYNTA5X0xVX1g1MDkpCi0tCSAgICBza19YNTA5X3B1c2ggKGNlcnRzLCBY NTA5X2R1cCAob2JqLT5kYXRhLng1MDkpKTsKLSsJICBYNTA5X09CSkVDVCAqb2JqID0gc2tfWDUw OV9PQkpFQ1RfdmFsdWUgKHN0b3JlX29ianMsIGlueCk7Ci0rCSAgaWYgKFg1MDlfT0JKRUNUX2dl dF90eXBlKG9iaikgPT0gWDUwOV9MVV9YNTA5KQotKwkgICAgc2tfWDUwOV9wdXNoIChjZXJ0cywg WDUwOV9kdXAgKFg1MDlfT0JKRUNUX2dldDBfWDUwOShvYmopKSk7Ci0gCX0KLSAgICAgfQotKwot ICAgaWYgKHN0b3JlKQotICAgICBYNTA5X1NUT1JFX2ZyZWUgKHN0b3JlKTsKLSAgIGluX2JpbyA9 IEJJT19uZXdfbWVtX2J1ZiAobXNnLCBib3hfbGVuZ3RoIChtc2cpIC0gMSk7Ci1AQCAtMTE4MSw3 ICsxMTkyLDcgQEAgeDUwOV9jZXJ0aWZpY2F0ZV92ZXJpZnlfY2IgKGludCBvaywgWDUwOQotICAg Y2hhciAqb3B0cyA9IChjaGFyICopIFg1MDlfU1RPUkVfQ1RYX2dldF9hcHBfZGF0YSAoY3R4KTsK LSAgIGlmICghb2sgJiYgb3B0cykKLSAgICAgewotLSAgICAgIHN3aXRjaCAoY3R4LT5lcnJvcikK LSsgICAgICBzd2l0Y2ggKFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcihjdHgpKQotIAl7Ci0gCWNh c2UgWDUwOV9WX0VSUl9DRVJUX0hBU19FWFBJUkVEOgotIAkgIGlmIChzdHJzdHIgKG9wdHMsICJl eHBpcmVkIikpCi1AQCAtMTI4Nyw3ICsxMjk4LDcgQEAgYmlmX3g1MDlfY2VydGlmaWNhdGVfdmVy aWZ5IChjYWRkcl90ICogcQotICAgaWYgKCFpKQotICAgICB7Ci0gICAgICAgY29uc3QgY2hhciAq ZXJyX3N0cjsKLS0gICAgICBlcnJfc3RyID0gWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcg KGNzYy0+ZXJyb3IpOwotKyAgICAgIGVycl9zdHIgPSBYNTA5X3ZlcmlmeV9jZXJ0X2Vycm9yX3N0 cmluZyAoWDUwOV9TVE9SRV9DVFhfZ2V0X2Vycm9yKGNzYykpOwotICAgICAgICplcnJfcmV0ID0g c3J2X21ha2VfbmV3X2Vycm9yICgiMjIwMjMiLCAiQ1IwMTUiLCAiWDUwOSBlcnJvcjogJXMiLCBl cnJfc3RyKTsKLSAgICAgfQotIAotQEAgLTEzMDgsMjAgKzEzMTksMTYgQEAgZXJyX3JldDoKLSAj ZGVmaW5lIFZJUlRfQ0VSVF9FWFQgIjIuMTYuODQwLjEuMTExMy4xIgotIAotIHN0YXRpYyBjYWRk cl90Ci0tQk5fYm94IChCSUdOVU0gKiB4KQotK0JOX2JveCAoY29uc3QgQklHTlVNICp4KQotIHsK LSAgIHNpemVfdCBidWZfbGVuLCBuOwotICAgY2FkZHJfdCBidWY7Ci0gICBidWZfbGVuID0gKHNp emVfdCkgQk5fbnVtX2J5dGVzICh4KTsKLS0gIGlmIChidWZfbGVuIDw9IEJOX0JZVEVTKQotLSAg ICBidWYgPSBib3hfbnVtICgodW5zaWduZWQgbG9uZykgeC0+ZFswXSk7Ci0tICBlbHNlCi0tICAg IHsKLS0gICAgICBidWYgPSBka19hbGxvY19ib3ggKGJ1Zl9sZW4sIERWX0JJTik7Ci0tICAgICAg biA9IEJOX2JuMmJpbiAoeCwgKHVuc2lnbmVkIGNoYXIgKikgYnVmKTsKLS0gICAgICBpZiAobiAh PSBidWZfbGVuKQotLQlHUEZfVDsKLS0gICAgfQotKyAgLyogZGlkIG5vdCBmaWd1cmUgb3V0IHdo ZXJlIGJ1ZiBpcyBmcmVlKCllZCAqLwotKyAgYnVmID0gZGtfYWxsb2NfYm94IChidWZfbGVuLCBE Vl9CSU4pOwotKyAgbiA9IEJOX2JuMmJpbiAoeCwgKHVuc2lnbmVkIGNoYXIgKikgYnVmKTsKLSsg IGlmIChuICE9IGJ1Zl9sZW4pCi0rCSAgR1BGX1Q7Ci0gICByZXR1cm4gYnVmOwotIH0KLSAKLUBA IC0xNDk4LDcgKzE1MDUsNyBAQCBiaWZfZ2V0X2NlcnRpZmljYXRlX2luZm8gKGNhZGRyX3QgKiBx c3QsCi0gCWludCBpOwotIAljaGFyIHRtcFsxMDI0XTsKLSAJY2hhciAqZXh0X29pZCA9IChjaGFy ICopIChCT1hfRUxFTUVOVFMgKGFyZ3MpID4gNCA/IGJpZl9zdHJpbmdfYXJnIChxc3QsIGFyZ3Ms IDQsICJnZXRfY2VydGlmaWNhdGVfaW5mbyIpIDogVklSVF9DRVJUX0VYVCk7Ci0tCVNUQUNLX09G IChYNTA5X0VYVEVOU0lPTikgKiBleHRzID0gY2VydC0+Y2VydF9pbmZvLT5leHRlbnNpb25zOwot Kwljb25zdCBTVEFDS19PRiAoWDUwOV9FWFRFTlNJT04pICogZXh0cyA9IFg1MDlfZ2V0MF9leHRl bnNpb25zKGNlcnQpOwotIAlmb3IgKGkgPSAwOyBpIDwgc2tfWDUwOV9FWFRFTlNJT05fbnVtIChl eHRzKTsgaSsrKQotIAkgIHsKLSAJICAgIFg1MDlfRVhURU5TSU9OICpleCA9IHNrX1g1MDlfRVhU RU5TSU9OX3ZhbHVlIChleHRzLCBpKTsKLUBAIC0xNTEwLDcgKzE1MTcsNyBAQCBiaWZfZ2V0X2Nl cnRpZmljYXRlX2luZm8gKGNhZGRyX3QgKiBxc3QsCi0gCQljaGFyICpkYXRhX3B0cjsKLSAJCUJJ TyAqbWVtID0gQklPX25ldyAoQklPX3NfbWVtICgpKTsKLSAJCWlmICghWDUwOVYzX0VYVF9wcmlu dCAobWVtLCBleCwgMCwgMCkpCi0tCQkgIE1fQVNOMV9PQ1RFVF9TVFJJTkdfcHJpbnQgKG1lbSwg ZXgtPnZhbHVlKTsKLSsJCSAgQVNOMV9TVFJJTkdfcHJpbnQgKG1lbSwgWDUwOV9FWFRFTlNJT05f Z2V0X2RhdGEoZXgpKTsKLSAJCWxlbiA9IEJJT19nZXRfbWVtX2RhdGEgKG1lbSwgJmRhdGFfcHRy KTsKLSAJCWlmIChsZW4gPiAwICYmIGRhdGFfcHRyKQotIAkJICB7Ci1AQCAtMTUzNywxOCArMTU0 NCwyMyBAQCBiaWZfZ2V0X2NlcnRpZmljYXRlX2luZm8gKGNhZGRyX3QgKiBxc3QsCi0gCWlmIChr KQotIAkgIHsKLSAjaWZkZWYgRVZQX1BLRVlfUlNBCi0tCSAgICBpZiAoay0+dHlwZSA9PSBFVlBf UEtFWV9SU0EpCi0rCSAgICBpZiAoRVZQX1BLRVlfaWQoaykgPT0gRVZQX1BLRVlfUlNBKQotIAkg ICAgICB7Ci0tCQlSU0EgKnggPSBrLT5wa2V5LnJzYTsKLS0JCXJldCA9IGxpc3QgKDMsIGJveF9k dl9zaG9ydF9zdHJpbmcgKCJSU0FQdWJsaWNLZXkiKSwgQk5fYm94ICh4LT5lKSwgQk5fYm94ICh4 LT5uKSk7Ci0rCQljb25zdCBCSUdOVU0gKm4sICplOwotKwotKwkJUlNBX2dldDBfa2V5KEVWUF9Q S0VZX2dldDBfUlNBKGspLCAmbiwgJmUsIE5VTEwpOwotKwotKwkJcmV0ID0gbGlzdCAoMywgYm94 X2R2X3Nob3J0X3N0cmluZyAoIlJTQVB1YmxpY0tleSIpLCBCTl9ib3ggKGUpLCBCTl9ib3ggKG4p KTsKLSAJICAgICAgfQotIAkgICAgZWxzZQotICNlbmRpZgotICNpZmRlZiBFVlBfUEtFWV9EU0EK LS0JICAgIGlmIChrLT50eXBlID09IEVWUF9QS0VZX0RTQSkKLSsJICAgIGlmIChFVlBfUEtFWV9p ZChrKSA9PSBFVlBfUEtFWV9EU0EpCi0gCSAgICAgIHsKLS0JCURTQSAqeCA9IGstPnBrZXkuZHNh OwotLQkJcmV0ID0gbGlzdCAoMiwgYm94X2R2X3Nob3J0X3N0cmluZyAoIkRTQVB1YmxpY0tleSIp LCBCTl9ib3ggKHgtPnB1Yl9rZXkpKTsKLSsJCWNvbnN0IEJJR05VTSAqcHViX2tleTsKLSsKLSsJ CURTQV9nZXQwX2tleShFVlBfUEtFWV9nZXQwX0RTQShrKSwgJnB1Yl9rZXksIE5VTEwpOwotKwkJ cmV0ID0gbGlzdCAoMiwgYm94X2R2X3Nob3J0X3N0cmluZyAoIkRTQVB1YmxpY0tleSIpLCBCTl9i b3ggKHB1Yl9rZXkpKTsKLSAJICAgICAgfQotIAkgICAgZWxzZQotICNlbmRpZgotQEAgLTE1Njcs MTMgKzE1NzksMTMgQEAgYmlmX2dldF9jZXJ0aWZpY2F0ZV9pbmZvIChjYWRkcl90ICogcXN0LAot IAlpbnQgbiwgaSwgbGVuOwotIAljaGFyICpzLCAqZGF0YV9wdHI7Ci0gCUJJTyAqbWVtID0gQklP X25ldyAoQklPX3NfbWVtICgpKTsKLS0JZm9yIChpID0gMDsgTlVMTCAhPSBzdWJqICYmIGkgPCBz a19YNTA5X05BTUVfRU5UUllfbnVtKHN1YmotPmVudHJpZXMpOyBpKyspCi0rCWZvciAoaSA9IDA7 IE5VTEwgIT0gc3ViaiAmJiBpIDwgWDUwOV9OQU1FX2VudHJ5X2NvdW50KHN1YmopOyBpKyspCi0g CSAgewotLQkgICAgbmUgPSBza19YNTA5X05BTUVfRU5UUllfdmFsdWUoc3Viai0+ZW50cmllcyxp KTsKLS0JICAgIG4gPSBPQkpfb2JqMm5pZCAobmUtPm9iamVjdCk7Ci0rCSAgICBuZSA9IFg1MDlf TkFNRV9nZXRfZW50cnkoc3ViaiwgaSk7Ci0rCSAgICBuID0gT0JKX29iajJuaWQgKFg1MDlfTkFN RV9FTlRSWV9nZXRfb2JqZWN0KG5lKSk7Ci0gCSAgICBpZiAoKG4gPT0gTklEX3VuZGVmKSB8fCAo KHMgPSAoY2hhciAqKSBPQkpfbmlkMnNuIChuKSkgPT0gTlVMTCkpCi0gCSAgICAgIHsKLS0JCWky dF9BU04xX09CSkVDVCAoYnVmZmVyLCBzaXplb2YgKGJ1ZmZlciksIG5lLT5vYmplY3QpOwotKwkJ aTJ0X0FTTjFfT0JKRUNUIChidWZmZXIsIHNpemVvZiAoYnVmZmVyKSwgWDUwOV9OQU1FX0VOVFJZ X2dldF9vYmplY3QobmUpKTsKLSAJCXMgPSBidWZmZXI7Ci0gCSAgICAgIH0KLSAJICAgIGlmICgh c3RyY21wIChzLCBhdHRyKSkKLUBAIC0xNTgyLDkgKzE1OTQsMTAgQEAgYmlmX2dldF9jZXJ0aWZp Y2F0ZV9pbmZvIChjYWRkcl90ICogcXN0LAotIAkJYnJlYWs7Ci0gCSAgICAgIH0KLSAJICB9Ci0r Ci0gCWlmIChuZV9yZXQpCi0gCSAgewotLQkgICAgQVNOMV9TVFJJTkdfcHJpbnQgKG1lbSwgbmVf cmV0LT52YWx1ZSk7Ci0rCSAgICBBU04xX1NUUklOR19wcmludCAobWVtLCBYNTA5X05BTUVfRU5U UllfZ2V0X2RhdGEobmVfcmV0KSk7Ci0gCSAgICBsZW4gPSBCSU9fZ2V0X21lbV9kYXRhIChtZW0s ICZkYXRhX3B0cik7Ci0gCSAgICBpZiAobGVuID4gMCAmJiBkYXRhX3B0cikKLSAJICAgICAgewot QEAgLTE2MDUsMTcgKzE2MTgsMTcgQEAgYmlmX2dldF9jZXJ0aWZpY2F0ZV9pbmZvIChjYWRkcl90 ICogcXN0LAotIAlka19zZXRfdCBzZXQgPSBOVUxMOwotIAljYWRkcl90IHZhbDsKLSAJQklPICpt ZW0gPSBCSU9fbmV3IChCSU9fc19tZW0gKCkpOwotLQlmb3IgKGkgPSAwOyBOVUxMICE9IHN1Ymog JiYgaSA8IHNrX1g1MDlfTkFNRV9FTlRSWV9udW0oc3Viai0+ZW50cmllcyk7IGkrKykKLSsJZm9y IChpID0gMDsgTlVMTCAhPSBzdWJqICYmIGkgPCBYNTA5X05BTUVfZW50cnlfY291bnQoc3Viaik7 IGkrKykKLSAJICB7Ci0gCSAgICB2YWwgPSBOVUxMOwotLQkgICAgbmUgPSBza19YNTA5X05BTUVf RU5UUllfdmFsdWUoc3Viai0+ZW50cmllcyxpKTsKLS0JICAgIG4gPSBPQkpfb2JqMm5pZCAobmUt Pm9iamVjdCk7Ci0rCSAgICBuZSA9IFg1MDlfTkFNRV9nZXRfZW50cnkoc3ViaiwgaSk7Ci0rCSAg ICBuID0gT0JKX29iajJuaWQgKFg1MDlfTkFNRV9FTlRSWV9nZXRfb2JqZWN0KG5lKSk7Ci0gCSAg ICBpZiAoKG4gPT0gTklEX3VuZGVmKSB8fCAoKHMgPSAoY2hhciAqKSBPQkpfbmlkMnNuIChuKSkg PT0gTlVMTCkpCi0gCSAgICAgIHsKLS0JCWkydF9BU04xX09CSkVDVCAoYnVmZmVyLCBzaXplb2Yg KGJ1ZmZlciksIG5lLT5vYmplY3QpOwotKwkJaTJ0X0FTTjFfT0JKRUNUIChidWZmZXIsIHNpemVv ZiAoYnVmZmVyKSwgWDUwOV9OQU1FX0VOVFJZX2dldF9vYmplY3QobmUpKTsKLSAJCXMgPSBidWZm ZXI7Ci0gCSAgICAgIH0KLS0JICAgIEFTTjFfU1RSSU5HX3ByaW50IChtZW0sIG5lLT52YWx1ZSk7 Ci0rCSAgICBBU04xX1NUUklOR19wcmludCAobWVtLCBYNTA5X05BTUVfRU5UUllfZ2V0X2RhdGEo bmUpKTsKLSAJICAgIGxlbiA9IEJJT19nZXRfbWVtX2RhdGEgKG1lbSwgJmRhdGFfcHRyKTsKLSAJ ICAgIGlmIChsZW4gPiAwICYmIGRhdGFfcHRyKQotIAkgICAgICB7Ci1AQCAtMTYyOSwxOCArMTY0 MiwyMiBAQCBiaWZfZ2V0X2NlcnRpZmljYXRlX2luZm8gKGNhZGRyX3QgKiBxc3QsCi0gCSAgfQot IAlCSU9fZnJlZSAobWVtKTsKLSAJcmV0ID0gbGlzdF90b19hcnJheSAoZGtfc2V0X25yZXZlcnNl IChzZXQpKTsKLSsKLSAJYnJlYWs7Ci0gICAgICAgfQotICAgICBjYXNlIDEyOgotICAgICAgIHsK LSAJY29uc3QgdW5zaWduZWQgY2hhciAqczsKLSAJaW50IGksIG47Ci0tCWNvbnN0IEFTTjFfU1RS SU5HICpzaWcgPSBjZXJ0LT5zaWduYXR1cmU7Ci0tCVg1MDlfQUxHT1IgKnNpZ2FsZyA9IGNlcnQt PnNpZ19hbGc7Ci0rCWNvbnN0IEFTTjFfU1RSSU5HICpzaWc7Ci0rCWNvbnN0IFg1MDlfQUxHT1Ig KnNpZ2FsZzsKLSsJY29uc3QgQVNOMV9PQkpFQ1QgKnNpZ19hbGdfYWxnb3JpdGhtOwotIAljaGFy IGJ1Zls4MF07Ci0gCWNhZGRyX3QgdmFsOwotIAotLSAgICAgICAgaTJ0X0FTTjFfT0JKRUNUKGJ1 ZixzaXplb2YgKGJ1ZiksIHNpZ2FsZy0+YWxnb3JpdGhtKTsKLSsJWDUwOV9nZXQwX3NpZ25hdHVy ZSgmc2lnLCAmc2lnYWxnLCBjZXJ0KTsKLSsJWDUwOV9BTEdPUl9nZXQwKCZzaWdfYWxnX2FsZ29y aXRobSwgTlVMTCwgTlVMTCwgc2lnYWxnKTsKLSsJaTJ0X0FTTjFfT0JKRUNUKGJ1ZixzaXplb2Yg KGJ1ZiksIHNpZ19hbGdfYWxnb3JpdGhtKTsKLSAKLSAJbiA9IHNpZy0+bGVuZ3RoOwotIAlzID0g c2lnLT5kYXRhOwotQEAgLTE2NjAsMTEgKzE2NzcsMTEgQEAgYmlmX2dldF9jZXJ0aWZpY2F0ZV9p bmZvIChjYWRkcl90ICogcXN0LAotIAlpZiAoaykKLSAJICB7Ci0gI2lmZGVmIEVWUF9QS0VZX1JT QQotLQkgICAgaWYgKGstPnR5cGUgPT0gRVZQX1BLRVlfUlNBKQotKwkgICAgaWYgKEVWUF9QS0VZ X2lkKGspID09IEVWUF9QS0VZX1JTQSkKLSAJICAgICAgewotIAkJY2hhciAqZGF0YV9wdHI7Ci0g CQlpbnQgbGVuOwotLQkJUlNBICp4ID0gay0+cGtleS5yc2E7Ci0rCQlSU0EgKnggPSBFVlBfUEtF WV9nZXQwX1JTQShrKTsKLSAJCWIgPSBCSU9fbmV3IChCSU9fc19tZW0oKSk7Ci0gCQlpMmRfUlNB X1BVQktFWV9iaW8gKGIsIHgpOwotIAkJbGVuID0gQklPX2dldF9tZW1fZGF0YSAoYiwgJmRhdGFf cHRyKTsKLS0tLSBhL2xpYnNyYy9XaS94bWxlbmMuYwotKysrIGIvbGlic3JjL1dpL3htbGVuYy5j Ci1AQCAtMTIxNSwzNiArMTIxNSw0NSBAQCB2b2lkIHhlbmNfa2V5X3JlbW92ZSAoeGVuY19rZXlf dCAqIGtleSwKLSB9Ci0gCi0gCi0tc3RhdGljIHZvaWQKLS1nZW5yc2FfY2IoaW50IHAsIGludCBu LCB2b2lkICphcmcpCi0tewotLSNpZmRlZiBMSU5UCi0tICBwPW47Ci0tI2VuZGlmCi0tfQotLQot IGludAotIF9feGVuY19rZXlfcnNhX2luaXQgKGNoYXIgKm5hbWUpCi0gewotICAgUlNBICpyc2Eg PSBOVUxMOwotLSAgaW50IG51bT0xMDI0OwotLSAgdW5zaWduZWQgbG9uZyBmND1SU0FfRjQ7Ci0r ICBCSUdOVU0gKmJuID0gTlVMTDsKLSAgIGludCByOwotKwotICAgeGVuY19rZXlfdCAqIHBrZXkg PSB4ZW5jX2dldF9rZXlfYnlfbmFtZSAobmFtZSwgMSk7Ci0gICBpZiAoTlVMTCA9PSBwa2V5KQot ICAgICBTUUxSX05FV19LRVlfRVJST1IgKG5hbWUpOwotIAotLSAgcnNhPVJTQV9nZW5lcmF0ZV9r ZXkobnVtLGY0LGdlbnJzYV9jYixOVUxMKTsKLSsgIHJzYSA9IFJTQV9uZXcoKTsKLSsgIGlmICgh cnNhKQotKwkgIGdvdG8gb3V0OwotKyAgYm4gPSBCTl9uZXcoKTsKLSsgIGlmICghYm4pCi0rCSAg Z290byBvdXQ7Ci0rICBpZiAoIUJOX3NldF93b3JkKGJuLCBSU0FfRjQpKQotKwkgIGdvdG8gb3V0 OwotKwotKyAgaWYgKCFSU0FfZ2VuZXJhdGVfa2V5X2V4KHJzYSwgMTAyNCwgYm4sIE5VTEwpKQot KwkgIGdvdG8gb3V0OwotKwotICAgciA9IFJTQV9jaGVja19rZXkocnNhKTsKLSsgIGlmIChyICE9 IDEpCi0rCSAgZ290byBvdXQ7Ci0gICBwa2V5LT5raS5yc2EucGFkID0gUlNBX1BLQ1MxX1BBRERJ Tkc7Ci0tICBpZiAocnNhID09IE5VTEwpCi0tICAgIHsKLS0gICAgICBzcWxyX25ld19lcnJvciAo IjQyMDAwIiwgIlhFTkMwNiIsCi0tCQkgICAgIlJTQSBwYXJhbWV0ZXJzIGdlbmVyYXRpb24gZXJy b3IiKTsKLS0gICAgfQotICAgcGtleS0+eGVrX3JzYSA9IHJzYTsKLSAgIHBrZXktPnhla19wcml2 YXRlX3JzYSA9IHJzYTsKLSsgIEJOX2ZyZWUoYm4pOwotICAgcmV0dXJuIDA7Ci0rb3V0OgotKyAg aWYgKGJuKQotKwkgIEJOX2ZyZWUoYm4pOwotKyAgaWYgKHJzYSkKLSsJICBSU0FfZnJlZShyc2Ep OwotKyAgc3Fscl9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRU5DMDYiLAotKwkJICAiUlNBIHBhcmFt ZXRlcnMgZ2VuZXJhdGlvbiBlcnJvciIpOwotKyAgcmV0dXJuIC0xOwotIH0KLSAKLSAKLUBAIC0x NDU1LDE5ICsxNDY0LDE5IEBAIHhlbmNfa2V5X3QgKiB4ZW5jX2tleV9jcmVhdGVfZnJvbV94NTA5 X2MKLSAKLSAgIGlmIChwa2V5KQotICAgICB7Ci0tICAgICAgc3dpdGNoIChFVlBfUEtFWV90eXBl IChwa2V5LT50eXBlKSkKLSsgICAgICBzd2l0Y2ggKEVWUF9QS0VZX3R5cGUgKEVWUF9QS0VZX2lk KHBrZXkpKSkKLSAJewotIAljYXNlIEVWUF9QS0VZX0RTQToKLSAJICBzaWduX2FsZ29uYW1lID0g RFNJR19EU0FfU0hBMV9BTEdPOwotIAkgIGVuY19hbGdvbmFtZSA9IFhFTkNfRFNBX0FMR087Ci0t CSAgZHNhID0gcGtleS0+cGtleS5kc2E7Ci0tCSAgcHJpdmF0ZV9kc2EgPSBwcml2YXRlX2tleSA/ IHByaXZhdGVfa2V5LT5wa2V5LmRzYSA6IDA7Ci0rCSAgZHNhID0gRVZQX1BLRVlfZ2V0MF9EU0Eo cGtleSk7Ci0rCSAgcHJpdmF0ZV9kc2EgPSBwcml2YXRlX2tleSA/IEVWUF9QS0VZX2dldDBfRFNB KHByaXZhdGVfa2V5KSA6IDA7Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgRVZQX1BLRVlfUlNBOgotIAkg IHNpZ25fYWxnb25hbWUgPSBEU0lHX1JTQV9TSEExX0FMR087Ci0gCSAgZW5jX2FsZ29uYW1lID0g WEVOQ19SU0FfQUxHTzsKLS0JICByc2EgPSBwa2V5LT5wa2V5LnJzYTsKLS0JICBwcml2YXRlX3Jz YSA9IHByaXZhdGVfa2V5ID8gcHJpdmF0ZV9rZXktPnBrZXkucnNhIDogMDsKLSsJICByc2EgPSBF VlBfUEtFWV9nZXQwX1JTQShwa2V5KTsKLSsJICBwcml2YXRlX3JzYSA9IHByaXZhdGVfa2V5ID8g RVZQX1BLRVlfZ2V0MF9SU0EocHJpdmF0ZV9rZXkpIDogMDsKLSAJICBicmVhazsKLSAJZGVmYXVs dDoKLSAJICBnb3RvIGZpbmlzaDsKLUBAIC0xNTE2LDEzICsxNTI1LDYgQEAgeGVuY19rZXlfdCAq IHhlbmNfa2V5X2NyZWF0ZV9mcm9tX3g1MDlfYwotICAgcmV0dXJuIGs7Ci0gfQotIAotLXN0YXRp YyB2b2lkIGRoX2NiKGludCBwLCBpbnQgbiwgdm9pZCAqYXJnKQotLXsKLS0jaWZkZWYgTElOVAot LSAgcD1uOwotLSNlbmRpZgotLX0KLS0KLSBzdGF0aWMgLyp4ZW5jX2tleV9EU0FfY3JlYXRlICov Ci0gY2FkZHJfdCBiaWZfeGVuY19rZXlfZHNhX2NyZWF0ZSAoY2FkZHJfdCAqIHFzdCwgY2FkZHJf dCAqIGVycl9yLCBzdGF0ZV9zbG90X3QgKiogYXJncykKLSB7Ci1AQCAtMTU4OCwxNSArMTU5MCwy MSBAQCBjYWRkcl90IGJpZl94ZW5jX2tleV9ESF9jcmVhdGUgKGNhZGRyX3QKLSAgICAgICBkaCA9 IERIX25ldyAoKTsKLSAgICAgICBibl9wID0gQk5fYmluMmJuICgodW5zaWduZWQgY2hhciAqKW1v ZCwgcF9sZW4sIE5VTEwpOwotICAgICAgIGJuX2cgPSBCTl9iaW4yYm4gKGdfYmluLCAxLCBOVUxM KTsKLS0gICAgICBkaC0+cCA9IGJuX3A7Ci0tICAgICAgZGgtPmcgPSBibl9nOwotKyAgICAgIGlm IChkaCkKLSsJICAgICAgREhfc2V0MF9wcWcoZGgsIGJuX3AsIE5VTEwsIGJuX2cpOwotIAotICAg ICAgIGRrX2ZyZWVfYm94IChtb2RfYjY0KTsKLSAgICAgICBka19mcmVlX2JveCAobW9kKTsKLSAg ICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgZGggPSBESF9nZW5lcmF0ZV9wYXJhbWV0ZXJz IChudW0sIGcsIGRoX2NiLCBOVUxMKTsKLSsgICAgICBkaCA9IERIX25ldygpOwotKyAgICAgIGlm IChkaCkgewotKwkgICAgICBpZiAoIURIX2dlbmVyYXRlX3BhcmFtZXRlcnNfZXgoZGgsIG51bSwg ZywgTlVMTCkpIHsKLSsJCSAgICAgIERIX2ZyZWUoZGgpOwotKwkJICAgICAgZGggPSBOVUxMOwot KwkgICAgICB9Ci0rICAgICAgfQotICAgICB9Ci0gICBpZiAoIWRoKQotICAgICB7Ci1AQCAtMTYy Niw3ICsxNjM0LDcgQEAgY2FkZHJfdCBiaWZfeGVuY19ESF9nZXRfcGFyYW1zIChjYWRkcl90Ci0g ICBpbnQgbiwgbGVuOwotICAgY2FkZHJfdCBidWYgPSBOVUxMLCByZXQsIGI2NDsKLSAgIERIICpk aDsKLS0gIEJJR05VTSAqbnVtOwotKyAgY29uc3QgQklHTlVNICpudW07Ci0gCi0gICBtdXRleF9l bnRlciAoeGVuY19rZXlzX210eCk7Ci0gICBrZXkgPSB4ZW5jX2dldF9rZXlfYnlfbmFtZSAobmFt ZSwgMCk7Ci1AQCAtMTY0MSwxOSArMTY0OSwxOSBAQCBjYWRkcl90IGJpZl94ZW5jX0RIX2dldF9w YXJhbXMgKGNhZGRyX3QKLSAgIHN3aXRjaCAocGFyYW0pCi0gICAgIHsKLSAgIAljYXNlIDE6Ci0t CSBudW0gPSBkaC0+cDsKLSsJIERIX2dldDBfcHFnKGRoLCAmbnVtLCBOVUxMLCBOVUxMKTsKLSAJ IGJyZWFrOwotIAljYXNlIDI6Ci0tCSBudW0gPSBkaC0+ZzsKLSsJIERIX2dldDBfcHFnKGRoLCBO VUxMLCBOVUxMLCAmbnVtKTsKLSAJIGJyZWFrOwotIAljYXNlIDM6Ci0tCSBudW0gPSBkaC0+cHVi X2tleTsKLSsJIERIX2dldDBfa2V5KGRoLCAmbnVtLCBOVUxMKTsKLSAJIGJyZWFrOwotIAljYXNl IDQ6Ci0tCSBudW0gPSBkaC0+cHJpdl9rZXk7Ci0rCSBESF9nZXQwX2tleShkaCwgTlVMTCwgJm51 bSk7Ci0gCSBicmVhazsKLSAJZGVmYXVsdDoKLS0JIG51bSA9IGRoLT5wdWJfa2V5OwotKwkgREhf Z2V0MF9rZXkoZGgsICZudW0sIE5VTEwpOwotICAgICB9Ci0gCi0gICBidWZfbGVuID0gKHNpemVf dClCTl9udW1fYnl0ZXMobnVtKTsKLUBAIC0xODExLDcgKzE4MTksMTUgQEAgY2FkZHJfdCBiaWZf eGVuY19rZXlfcnNhX2NyZWF0ZSAoY2FkZHJfdAotICAgeGVuY19rZXlfdCAqIGs7Ci0gICBjYWRk cl90IG5hbWUgPSBiaWZfc3RyaW5nX2FyZyAocXN0LCBhcmdzLCAwLCAieGVuY19rZXlfUlNBX2Ny ZWF0ZSIpOwotICAgaW50IG51bSA9IChpbnQpIGJpZl9sb25nX2FyZyAocXN0LCBhcmdzLCAxLCAi eGVuY19rZXlfUlNBX2NyZWF0ZSIpOwotLSAgUlNBICpyc2EgPSBOVUxMOwotKyAgUlNBICpyc2E7 Ci0rICBCSUdOVU0gKmJuOwotKwotKyAgcnNhID0gUlNBX25ldygpOwotKyAgYm4gPSBCTl9uZXco KTsKLSsgIGlmICghcnNhIHx8ICFibikKLSsJZ290byBvdXQ7Ci0rICBpZiAoIUJOX3NldF93b3Jk KGJuLCBSU0FfRjQpKQotKwlnb3RvIG91dDsKLSAKLSAgIG11dGV4X2VudGVyICh4ZW5jX2tleXNf bXR4KTsKLSAgIGlmIChOVUxMID09IChrID0geGVuY19rZXlfY3JlYXRlIChuYW1lLCBYRU5DX1JT QV9BTEdPICwgRFNJR19SU0FfU0hBMV9BTEdPLCAwKSkpCi1AQCAtMTgyMCwxMiArMTgzNiwxMSBA QCBjYWRkcl90IGJpZl94ZW5jX2tleV9yc2FfY3JlYXRlIChjYWRkcl90Ci0gICAgICAgU1FMUl9O RVdfS0VZX0VYSVNUX0VSUk9SIChuYW1lKTsKLSAgICAgfQotIAotLSAgcnNhID0gUlNBX2dlbmVy YXRlX2tleSAobnVtLCBSU0FfRjQsIE5VTEwsIE5VTEwpOwotLQotLSAgaWYgKHJzYSA9PSBOVUxM KQotLSAgICB7Ci0tICAgICAgc3Fscl9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRU5DMDYiLCAiUlNB IGdlbmVyYXRpb24gZXJyb3IiKTsKLS0gICAgfQotKyAgaWYgKCFSU0FfZ2VuZXJhdGVfa2V5X2V4 IChyc2EsIG51bSwgYm4sIE5VTEwpKSB7Ci0rCSAgbXV0ZXhfbGVhdmUgKHhlbmNfa2V5c19tdHgp OwotKwkgIGdvdG8gb3V0OwotKyAgfQotKyAgQk5fZnJlZShibik7Ci0gCi0gICBrLT54ZWtfcnNh ID0gUlNBUHVibGljS2V5X2R1cCAocnNhKTsKLSAgIGstPnhla19wcml2YXRlX3JzYSA9IHJzYTsK LUBAIC0xODM5LDYgKzE4NTQsMTMgQEAgY2FkZHJfdCBiaWZfeGVuY19rZXlfcnNhX2NyZWF0ZSAo Y2FkZHJfdAotIAotICAgbXV0ZXhfbGVhdmUgKHhlbmNfa2V5c19tdHgpOwotICAgcmV0dXJuIE5V TEw7Ci0rb3V0OgotKyAgaWYgKGJuKQotKwkgIEJOX2ZyZWUoYm4pOwotKyAgaWYgKHJzYSkKLSsJ ICBSU0FfZnJlZShyc2EpOwotKyAgc3Fscl9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRU5DMDYiLCAi UlNBIGdlbmVyYXRpb24gZXJyb3IiKTsKLSsgIHJldHVybiBOVUxMOwotIH0KLSAKLSB4ZW5jX2tl eV90ICoKLUBAIC0yMDM0LDcgKzIwNTYsMTMgQEAgaW50IF9feGVuY19rZXlfZHNhX2luaXQgKGNo YXIgKm5hbWUsIGludAotICAgICBTUUxSX05FV19LRVlfRVJST1IgKG5hbWUpOwotIAotICAgUkFO RF9wb2xsICgpOwotLSAgZHNhID0gRFNBX2dlbmVyYXRlX3BhcmFtZXRlcnMobnVtLCBOVUxMLCAw LCBOVUxMLCBOVUxMLCBkaF9jYiwgTlVMTCk7Ci0rICBkc2EgPSBEU0FfbmV3KCk7Ci0rICBpZiAo ZHNhKSB7Ci0rCSAgaWYgKCFEU0FfZ2VuZXJhdGVfcGFyYW1ldGVyc19leChkc2EsIG51bSwgTlVM TCwgMCwgTlVMTCwgTlVMTCwgTlVMTCkpIHsKLSsJCSAgRFNBX2ZyZWUoZHNhKTsKLSsJCSAgZHNh ID0gTlVMTDsKLSsJICB9Ci0rICB9Ci0gICBpZiAoZHNhID09IE5VTEwpCi0gICAgIHsKLSAgICAg ICBzcWxyX25ld19lcnJvciAoIjQyMDAwIiwgIlhFTkMxMSIsCi1AQCAtMjA1OCw3ICsyMDg2LDEz IEBAIGludCBfX3hlbmNfa2V5X2RoX2luaXQgKGNoYXIgKm5hbWUsIGludAotICAgaWYgKE5VTEwg PT0gcGtleSkKLSAgICAgU1FMUl9ORVdfS0VZX0VSUk9SIChuYW1lKTsKLSAKLS0gIGRoID0gREhf Z2VuZXJhdGVfcGFyYW1ldGVycyAobnVtLCBnLCBkaF9jYiwgTlVMTCk7Ci0rICBkaCA9IERIX25l dygpOwotKyAgaWYgKGRoKSB7Ci0rCSAgaWYgKCFESF9nZW5lcmF0ZV9wYXJhbWV0ZXJzX2V4KGRo LCBudW0sIGcsIE5VTEwpKSB7Ci0rCQkgIERIX2ZyZWUoZGgpOwotKwkJICBkaCA9IE5VTEw7Ci0r CSAgfQotKyAgfQotICAgaWYgKCFkaCkKLSAgICAgewotICAgICAgIHNxbHJfbmV3X2Vycm9yICgi NDIwMDAiLCAiWEVOQzExIiwKLUBAIC0yMjgwLDEyICsyMzE0LDEyIEBAIGJpZl94ZW5jX2tleV9y c2FfcmVhZCAoY2FkZHJfdCAqIHFzdCwgY2EKLSAgICAgewotICAgICAgIGluID0gQklPX25ld19t ZW1fYnVmIChrZXlfYmFzZTY0LCBsZW4pOwotICAgICAgIHBrZXkgPSBkMmlfUFVCS0VZX2JpbyAo aW4sIE5VTEwpOwotLSAgICAgIGlmIChwa2V5ICYmIHBrZXktPnR5cGUgPT0gRVZQX1BLRVlfUlNB KQotLQlwID0gcGtleS0+cGtleS5yc2E7Ci0rICAgICAgaWYgKHBrZXkgJiYgRVZQX1BLRVlfaWQo cGtleSkgPT0gRVZQX1BLRVlfUlNBKQotKwlwID0gRVZQX1BLRVlfZ2V0MF9SU0EocGtleSk7Ci0g ICAgICAgQklPX3Jlc2V0IChpbik7Ci0gICAgICAgcGtrZXkgPSBkMmlfUHJpdmF0ZUtleV9iaW8g KGluLCBOVUxMKTsKLS0gICAgICBpZiAocGtrZXkgJiYgcGtrZXktPnR5cGUgPT0gRVZQX1BLRVlf UlNBKQotLQlyID0gcGtrZXktPnBrZXkucnNhOwotKyAgICAgIGlmIChwa2tleSAmJiBFVlBfUEtF WV9pZChwa2tleSkgPT0gRVZQX1BLRVlfUlNBKQotKwlyID0gRVZQX1BLRVlfZ2V0MF9SU0EocGtr ZXkpOwotICAgICAgIEJJT19mcmVlIChpbik7Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC0yMzA0LDkg KzIzMzgsMTEgQEAgYmlmX3hlbmNfa2V5X3JzYV9yZWFkIChjYWRkcl90ICogcXN0LCBjYQotIAot ICAgaWYgKCFwKQotICAgICB7Ci0rICAgICAgY29uc3QgQklHTlVNICpuLCAqZTsKLSsKLSsgICAg ICBSU0FfZ2V0MF9rZXkociwgJm4sICZlLCBOVUxMKTsKLSAgICAgICBwID0gUlNBX25ldyAoKTsK LS0gICAgICBwLT5uID0gQk5fZHVwIChyLT5uKTsKLS0gICAgICBwLT5lID0gQk5fZHVwIChyLT5l KTsKLSsgICAgICBSU0Ffc2V0MF9rZXkocCwgQk5fZHVwKG4pLCBCTl9kdXAoZSksIE5VTEwpOwot ICAgICB9Ci0gCi0gICBtdXRleF9lbnRlciAoeGVuY19rZXlzX210eCk7Ci1AQCAtMjM1NSwxNCAr MjM5MSwxMyBAQCBiaWZfeGVuY19rZXlfcnNhX2NvbnN0cnVjdCAoY2FkZHJfdCAqIHFzCi0gICBw ID0gUlNBX25ldyAoKTsKLSAgIG4gPSBCTl9iaW4yYm4gKCh1bnNpZ25lZCBjaGFyICopIG1vZCwg Ym94X2xlbmd0aCAobW9kKSAtIDEsIE5VTEwpOwotICAgZSA9IEJOX2JpbjJibiAoKHVuc2lnbmVk IGNoYXIgKikgZXhwLCBib3hfbGVuZ3RoIChleHApIC0gMSwgTlVMTCk7Ci0tICBwLT5uID0gbjsK LS0gIHAtPmUgPSBlOwotKyAgUlNBX3NldDBfa2V5KHAsIG4sIGUsIE5VTEwpOwotICAgaWYgKHBl eHApCi0gICAgIHsKLSAgICAgICBwayA9IFJTQV9uZXcgKCk7Ci0tICAgICAgcGstPmQgPSBCTl9i aW4yYm4gKCh1bnNpZ25lZCBjaGFyICopIHBleHAsIGJveF9sZW5ndGggKHBleHApIC0gMSwgTlVM TCk7Ci0tICAgICAgcGstPm4gPSBCTl9kdXAgKG4pOwotLSAgICAgIHBrLT5lID0gQk5fZHVwIChl KTsKLSsgICAgICBSU0Ffc2V0MF9rZXkocCwgQk5fZHVwKG4pLAotKwkJICAgICAgQk5fZHVwKGUp LAotKwkJICAgICAgQk5fYmluMmJuICgodW5zaWduZWQgY2hhciAqKSBwZXhwLCBib3hfbGVuZ3Ro IChwZXhwKSAtIDEsIE5VTEwpKTsKLSAgICAgfQotICAgbXV0ZXhfZW50ZXIgKHhlbmNfa2V5c19t dHgpOwotICAgayA9IHhlbmNfa2V5X2NyZWF0ZSAobmFtZSwgWEVOQ19SU0FfQUxHTywgRFNJR19S U0FfU0hBMV9BTEdPLCAwKTsKLUBAIC00MDg2LDcgKzQxMjEsNyBAQCB2b2lkIHhlbmNfdGFnX2Zy ZWUgKHhlbmNfdGFnX3QgKiB0KQotICNlbmRpZgotIH0KLSAKLS14ZW5jX3RhZ190ICogeGVuY190 YWdfYWRkX2NoaWxkX0JOICh4ZW5jX3RhZ190ICogdGFnLCBCSUdOVU0gKiBibikKLStzdGF0aWMg eGVuY190YWdfdCAqIHhlbmNfdGFnX2FkZF9jaGlsZF9CTiAoeGVuY190YWdfdCAqIHRhZywgY29u c3QgQklHTlVNICogYm4pCi0gewotICBjaGFyICogYnVmZmVyID0gZGtfYWxsb2NfYm94IChCTl9u dW1fYnl0ZXMgKGJuKSwgRFZfQklOKTsKLSAgY2hhciAqIGJ1ZmZlcl9iYXNlNjQgPSBka19hbGxv Y19ib3ggKGJveF9sZW5ndGggKGJ1ZmZlcikgKiAyLCBEVl9TVFJJTkcpOwotQEAgLTQxMTEsMTIg KzQxNDYsMTUgQEAgY2FkZHJfdCAqKiB4ZW5jX2dlbmVyYXRlX2V4dF9pbmZvICh4ZW5jXwotICAg Y2FkZHJfdCAqKiBhcnJheTsKLSAgIGlmIChrZXktPnhla190eXBlID09IERTSUdfS0VZX1JTQSkK LSAgICAgewotKyAgICAgIGNvbnN0IEJJR05VTSAqcnNhX24sICpyc2FfZTsKLSsKLSsgICAgICBS U0FfZ2V0MF9rZXkoa2V5LT5raS5yc2EucnNhX3N0LCAmcnNhX24sICZyc2FfZSwgTlVMTCk7Ci0g ICAgICAgeGVuY190YWdfdCAqIHJzYWtleXZhbCA9IHhlbmNfdGFnX2NyZWF0ZSAoRFNJR19VUkks ICI6UlNBS2V5VmFsdWUiKTsKLSAgICAgICB4ZW5jX3RhZ190ICogcnNhbW9kdWx1cyA9IHhlbmNf dGFnX2NyZWF0ZSAoRFNJR19VUkksICI6TW9kdWx1cyIpOwotICAgICAgIHhlbmNfdGFnX3QgKiBy c2FleHBvbmVudCA9IHhlbmNfdGFnX2NyZWF0ZSAoRFNJR19VUkksICI6RXhwb25lbnQiKTsKLSAK LS0gICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHJzYW1vZHVsdXMsIGtleS0+a2kucnNhLnJz YV9zdC0+bik7Ci0tICAgICAgeGVuY190YWdfYWRkX2NoaWxkX0JOIChyc2FleHBvbmVudCwga2V5 LT5raS5yc2EucnNhX3N0LT5lKTsKLSsgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHJzYW1v ZHVsdXMsIHJzYV9uKTsKLSsgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHJzYWV4cG9uZW50 LCByc2FfZSk7Ci0gCi0gICAgICAgeGVuY190YWdfYWRkX2NoaWxkIChyc2FrZXl2YWwsIHhlbmNf dGFnX2ZpbmFsaXplIChyc2Ftb2R1bHVzKSk7Ci0gICAgICAgeGVuY190YWdfYWRkX2NoaWxkIChy c2FrZXl2YWwsIHhlbmNfdGFnX2ZpbmFsaXplIChyc2FleHBvbmVudCkpOwotQEAgLTQxMzUsMTIg KzQxNzMsMTUgQEAgY2FkZHJfdCAqKiB4ZW5jX2dlbmVyYXRlX2V4dF9pbmZvICh4ZW5jXwotICAg ICAgIHhlbmNfdGFnX3QgKiBnID0geGVuY190YWdfY3JlYXRlIChEU0lHX1VSSSwgIjpHIik7Ci0g ICAgICAgeGVuY190YWdfdCAqIHkgPSB4ZW5jX3RhZ19jcmVhdGUgKERTSUdfVVJJLCAiOlkiKTsK LSAgICAgICBEU0EgKiBkc2EgPSBrZXktPmtpLmRzYS5kc2Ffc3Q7Ci0rICAgICAgY29uc3QgQklH TlVNICpkc2FfcCwgKmRzYV9xLCAqZHNhX2csICpkc2FfcHViX2tleTsKLSAKLSsgICAgICBEU0Ff Z2V0MF9wcWcoZHNhLCAmZHNhX3AsICZkc2FfcSwgJmRzYV9nKTsKLSsgICAgICBEU0FfZ2V0MF9r ZXkoZHNhLCAmZHNhX3B1Yl9rZXksIE5VTEwpOwotIAotLSAgICAgIHhlbmNfdGFnX2FkZF9jaGls ZF9CTiAocCwgZHNhLT5wKTsKLS0gICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAsIGRzYS0+ cSk7Ci0tICAgICAgeGVuY190YWdfYWRkX2NoaWxkX0JOIChwLCBkc2EtPmcpOwotLSAgICAgIHhl bmNfdGFnX2FkZF9jaGlsZF9CTiAocCwgZHNhLT5wdWJfa2V5KTsKLSsgICAgICB4ZW5jX3RhZ19h ZGRfY2hpbGRfQk4gKHAsIGRzYV9wKTsKLSsgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAs IGRzYV9xKTsKLSsgICAgICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAsIGRzYV9nKTsKLSsgICAg ICB4ZW5jX3RhZ19hZGRfY2hpbGRfQk4gKHAsIGRzYV9wdWJfa2V5KTsKLSAKLSAgICAgICB4ZW5j X3RhZ19hZGRfY2hpbGQgKGRzYWtleXZhbCwgeGVuY190YWdfZmluYWxpemUgKHApKTsKLSAgICAg ICB4ZW5jX3RhZ19hZGRfY2hpbGQgKGRzYWtleXZhbCwgeGVuY190YWdfZmluYWxpemUgKHEpKTsK LUBAIC02MTg3LDcgKzYyMjgsNyBAQCBjYWRkcl90IHhlbmNfeDUwOV9nZXRfa2V5X2lkZW50aWZp ZXIgKFg1Ci0gCi0gICByZXQgPSBka19hbGxvY19ib3ggKGlrZXlpZC0+bGVuZ3RoLCBEVl9CSU4p OwotICAgbWVtY3B5IChyZXQsIGlrZXlpZC0+ZGF0YSwgaWtleWlkLT5sZW5ndGgpOwotLSAgTV9B U04xX09DVEVUX1NUUklOR19mcmVlKGlrZXlpZCk7Ci0rICBBU04xX1NUUklOR19mcmVlKGlrZXlp ZCk7Ci0gICByZXR1cm4gcmV0OwotIH0KLSAKLUBAIC02MjQ3LDcgKzYyODgsNyBAQCBiaWZfeDUw OV9nZXRfc3ViamVjdCAoY2FkZHJfdCAqIHFzdCwgY2FkCi0gCi0gICByZXQgPSBka19hbGxvY19i b3ggKGlrZXlpZC0+bGVuZ3RoLCBEVl9CSU4pOwotICAgbWVtY3B5IChyZXQsIGlrZXlpZC0+ZGF0 YSwgaWtleWlkLT5sZW5ndGgpOwotLSAgTV9BU04xX09DVEVUX1NUUklOR19mcmVlKGlrZXlpZCk7 Ci0rICBBU04xX1NUUklOR19mcmVlKGlrZXlpZCk7Ci0gICByZXR1cm4gcmV0OwotIH0KLSAKLUBA IC02ODA2LDcgKzY4NDcsNyBAQCBiaWZfeGVuY194NTA5X2Nzcl9nZW5lcmF0ZSAoY2FkZHJfdCAq IHFzCi0gCXNrX1g1MDlfRVhURU5TSU9OX3B1c2goc3RfZXh0cywgZXgpOwotICAgICB9Ci0gICBY NTA5X1JFUV9hZGRfZXh0ZW5zaW9ucyh4LCBzdF9leHRzKTsKLS0gIGlmICghWDUwOV9SRVFfc2ln biAoeCwgcGssIChway0+dHlwZSA9PSBFVlBfUEtFWV9SU0EgPyBFVlBfbWQ1KCkgOiBFVlBfZHNz MSgpKSkpCi0rICBpZiAoIVg1MDlfUkVRX3NpZ24gKHgsIHBrLCAoRVZQX1BLRVlfaWQocGspID09 IEVWUF9QS0VZX1JTQSA/IEVWUF9tZDUoKSA6IEVWUF9zaGExKCkpKSkKLSAgICAgewotICAgICAg IHBrID0gTlVMTDsgLyoga2VlcCBvbmUgaW4gdGhlIHhlbmNfa2V5ICovCi0gICAgICAgKmVycl9y ZXQgPSBzcnZfbWFrZV9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRUNYWCIsICJDYW4gbm90IHNpZ24g Y2VydGlmaWNhdGUgOiAlcyIsIGdldF9zc2xfZXJyb3JfdGV4dCAoYnVmLCBzaXplb2YgKGJ1Zikp KTsKLUBAIC02OTQ1LDE3ICs2OTg2LDE3IEBAIGJpZl94ZW5jX3g1MDlfZnJvbV9jc3IgKGNhZGRy X3QgKiBxc3QsIGMKLSAgICAgICAqZXJyX3JldCA9IHNydl9tYWtlX25ld19lcnJvciAoIjQyMDAw IiwgIlhFQ1hYIiwgIkNhbiBub3Qgc2lnbiBjZXJ0aWZpY2F0ZSIpOwotICAgICAgIGdvdG8gZXJy OwotICAgICB9Ci0tICBzd2l0Y2ggKEVWUF9QS0VZX3R5cGUgKGNsaV9way0+dHlwZSkpCi0rICBz d2l0Y2ggKEVWUF9QS0VZX3R5cGUgKEVWUF9QS0VZX2lkKGNsaV9waykpKQotICAgICB7Ci0gICAg ICAgY2FzZSBFVlBfUEtFWV9EU0E6Ci0gCSAgc2lnbl9hbGdvbmFtZSA9IERTSUdfRFNBX1NIQTFf QUxHTzsKLSAJICBlbmNfYWxnb25hbWUgPSBYRU5DX0RTQV9BTEdPOwotLQkgIGRzYSA9IGNsaV9w ay0+cGtleS5kc2E7Ci0rCSAgZHNhID0gRVZQX1BLRVlfZ2V0MF9EU0EoY2xpX3BrKTsKLSAJICBi cmVhazsKLSAgICAgICBjYXNlIEVWUF9QS0VZX1JTQToKLSAJICBzaWduX2FsZ29uYW1lID0gRFNJ R19SU0FfU0hBMV9BTEdPOwotIAkgIGVuY19hbGdvbmFtZSA9IFhFTkNfUlNBX0FMR087Ci0tCSAg cnNhID0gY2xpX3BrLT5wa2V5LnJzYTsKLSsJICByc2EgPSBFVlBfUEtFWV9nZXQwX1JTQShjbGlf cGspOwotIAkgIGJyZWFrOwotICAgICAgIGRlZmF1bHQ6Ci0gCSAgKmVycl9yZXQgPSBzcnZfbWFr ZV9uZXdfZXJyb3IgKCI0MjAwMCIsICJYRUNYWCIsICJUaGUgdHlwZSBvZiBwdWJsaWMga2V5IGlz IG5vdCBzdXBwb3J0ZWQgbXVzIHRiZSBSU0Egb3IgRFNBIik7Ci1AQCAtNzAzMiwxOSArNzA3Mywx OSBAQCBiaWZfeGVuY19wa2NzMTJfZXhwb3J0IChjYWRkcl90ICogcXN0LCBjCi0gICBpZiAoZXhw b3J0X2NoYWluKQotICAgICB7Ci0gICAgICAgaW50IGk7Ci0tICAgICAgWDUwOV9TVE9SRV9DVFgg c3RvcmVfY3R4OwotLSAgICAgIFg1MDlfU1RPUkVfQ1RYX2luaXQgKCZzdG9yZV9jdHgsIENBX2Nl cnRzLCB4LCBOVUxMKTsKLS0gICAgICBpZiAoWDUwOV92ZXJpZnlfY2VydCAoJnN0b3JlX2N0eCkg PiAwKQotLQljaGFpbiA9IFg1MDlfU1RPUkVfQ1RYX2dldDFfY2hhaW4gKCZzdG9yZV9jdHgpOwot KyAgICAgIFg1MDlfU1RPUkVfQ1RYICpjdHg7Ci0rICAgICAgWDUwOV9TVE9SRV9DVFhfaW5pdCAo Y3R4LCBDQV9jZXJ0cywgeCwgTlVMTCk7Ci0rICAgICAgaWYgKFg1MDlfdmVyaWZ5X2NlcnQgKGN0 eCkgPiAwKQotKwljaGFpbiA9IFg1MDlfU1RPUkVfQ1RYX2dldDFfY2hhaW4gKGN0eCk7Ci0gICAg ICAgZWxzZQotIAl7Ci0gCSAgY29uc3QgY2hhciAqZXJyX3N0cjsKLS0JICBlcnJfc3RyID0gWDUw OV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcgKHN0b3JlX2N0eC5lcnJvcik7Ci0rCSAgZXJyX3N0 ciA9IFg1MDlfdmVyaWZ5X2NlcnRfZXJyb3Jfc3RyaW5nIChYNTA5X1NUT1JFX0NUWF9nZXRfZXJy b3IoY3R4KSk7Ci0gCSAgKmVycl9yZXQgPSBzcnZfbWFrZV9uZXdfZXJyb3IgKCIyMjAyMyIsICJY RU5DWCIsICJYNTA5IGVycm9yOiAlcyIsIGVycl9zdHIpOwotLQkgIFg1MDlfU1RPUkVfQ1RYX2Ns ZWFudXAgKCZzdG9yZV9jdHgpOwotKwkgIFg1MDlfU1RPUkVfQ1RYX2NsZWFudXAgKGN0eCk7Ci0g CSAgZ290byBlcnI7Ci0gCX0KLS0gICAgICBYNTA5X1NUT1JFX0NUWF9jbGVhbnVwICgmc3RvcmVf Y3R4KTsKLSsgICAgICBYNTA5X1NUT1JFX0NUWF9jbGVhbnVwIChjdHgpOwotICAgICAgIGlmIChj aGFpbikKLSAJewotIAkgIGNlcnRzID0gc2tfWDUwOV9uZXdfbnVsbCAoKTsKLUBAIC03MTUyLDE2 ICs3MTkzLDE2IEBAIGJpZl94ZW5jX3B1YmtleV9wZW1fZXhwb3J0IChjYWRkcl90ICogcXMKLSAg ICAgewotICAgICAgIGsgPSBYNTA5X2dldF9wdWJrZXkgKGtleS0+eGVrX3g1MDkpOwotICNpZmRl ZiBFVlBfUEtFWV9SU0EKLS0gICAgICBpZiAoay0+dHlwZSA9PSBFVlBfUEtFWV9SU0EpCi0rICAg ICAgaWYgKEVWUF9QS0VZX2lkKGspID09IEVWUF9QS0VZX1JTQSkKLSAJewotLQkgIFJTQSAqIHgg PSBrLT5wa2V5LnJzYTsKLSsJICBSU0EgKnggPSBFVlBfUEtFWV9nZXQwX1JTQShrKTsKLSAJICBQ RU1fd3JpdGVfYmlvX1JTQV9QVUJLRVkgKGIsIHgpOwotIAl9Ci0gI2VuZGlmCi0gI2lmZGVmIEVW UF9QS0VZX0RTQQotLSAgICAgIGlmIChrLT50eXBlID09IEVWUF9QS0VZX0RTQSkKLSsgICAgICBp ZiAoRVZQX1BLRVlfaWQoaykgPT0gRVZQX1BLRVlfRFNBKQotIAl7Ci0tCSAgRFNBICogeCA9IGst PnBrZXkuZHNhOwotKwkgIERTQSAqIHggPSBFVlBfUEtFWV9nZXQwX0RTQShrKTsKLSAJICBQRU1f d3JpdGVfYmlvX0RTQV9QVUJLRVkgKGIsIHgpOwotIAl9Ci0gI2VuZGlmCi1AQCAtNzIwOCwxNiAr NzI0OSwxNiBAQCBiaWZfeGVuY19wdWJrZXlfZGVyX2V4cG9ydCAoY2FkZHJfdCAqIHFzCi0gICAg IHsKLSAgICAgICBrID0gWDUwOV9nZXRfcHVia2V5IChrZXktPnhla194NTA5KTsKLSAjaWZkZWYg RVZQX1BLRVlfUlNBCi0tICAgICAgaWYgKGstPnR5cGUgPT0gRVZQX1BLRVlfUlNBKQotKyAgICAg IGlmIChFVlBfUEtFWV9pZChrKSA9PSBFVlBfUEtFWV9SU0EpCi0gCXsKLS0JICBSU0EgKiB4ID0g ay0+cGtleS5yc2E7Ci0rCSAgUlNBICogeCA9IEVWUF9QS0VZX2dldDBfUlNBKGspOwotIAkgIGky ZF9SU0FfUFVCS0VZX2JpbyAoYiwgeCk7Ci0gCX0KLSAjZW5kaWYKLSAjaWZkZWYgRVZQX1BLRVlf RFNBCi0tICAgICAgaWYgKGstPnR5cGUgPT0gRVZQX1BLRVlfRFNBKQotKyAgICAgIGlmIChFVlBf UEtFWV9pZChrKSA9PSBFVlBfUEtFWV9EU0EpCi0gCXsKLS0JICBEU0EgKiB4ID0gay0+cGtleS5k c2E7Ci0rCSAgRFNBICogeCA9IEVWUF9QS0VZX2dldDBfRFNBKGspOwotIAkgIGkyZF9EU0FfUFVC S0VZX2JpbyAoYiwgeCk7Ci0gCX0KLSAjZW5kaWYKLUBAIC03MjQ1LDcgKzcyODYsNyBAQCBlcnI6 Ci0gfQotIAotIHN0YXRpYyBjYWRkcl90Ci0tQk4yYmluYm94IChCSUdOVU0gKiB4KQotK0JOMmJp bmJveCAoY29uc3QgQklHTlVNICogeCkKLSB7Ci0gICBzaXplX3QgYnVmX2xlbiwgbjsKLSAgIGNh ZGRyX3QgYnVmOwotQEAgLTcyODAsOCArNzMyMSwxNCBAQCBzdGF0aWMgY2FkZHJfdAotIHhlbmNf cnNhX3B1Yl9tYWdpYyAoUlNBICogeCkKLSB7Ci0gICBjYWRkcl90IHJldDsKLS0gIGNhZGRyX3Qg biA9IEJOMmJpbmJveCAoeC0+bik7IC8qIG1vZHVsdXMgKi8KLS0gIGNhZGRyX3QgZSA9IEJOMmJp bmJveCAoeC0+ZSk7IC8qIHB1YmxpYyBleHBvbmVudCAqLwotKyAgY2FkZHJfdCBuOwotKyAgY2Fk ZHJfdCBlOwotKyAgY29uc3QgQklHTlVNICpyc2FfbiwgKnJzYV9lOwotKwotKyAgUlNBX2dldDBf a2V5KHgsICZyc2FfbiwgJnJzYV9lLCBOVUxMKTsKLSsgIG4gPSBCTjJiaW5ib3ggKHJzYV9uKTsg LyogbW9kdWx1cyAqLwotKyAgZSA9IEJOMmJpbmJveCAocnNhX2UpOyAvKiBwdWJsaWMgZXhwb25l bnQgKi8KLSsKLSAgIG4gPSB4ZW5jX2VuY29kZV9iYXNlNjRfYmluYm94IChuLCAxKTsKLSAgIGUg PSB4ZW5jX2VuY29kZV9iYXNlNjRfYmluYm94IChlLCAxKTsKLSAgIHJldCA9IGRrX2FsbG9jX2Jv eCAoYm94X2xlbmd0aCAobikgKyBib3hfbGVuZ3RoIChlKSArIDQgLyogdHdvIGRvdHMgLSBvbmUg dHJhaWxpbmcgemVybyArIFJTQSBwcmVmaXggKi8sIERWX1NUUklORyk7Ci1AQCAtNzMwNiw5ICs3 MzUzLDkgQEAgYmlmX3hlbmNfcHVia2V5X21hZ2ljX2V4cG9ydCAoY2FkZHJfdCAqCi0gICAgIHsK LSAgICAgICBrID0gWDUwOV9nZXRfcHVia2V5IChrZXktPnhla194NTA5KTsKLSAjaWZkZWYgRVZQ X1BLRVlfUlNBCi0tICAgICAgaWYgKGstPnR5cGUgPT0gRVZQX1BLRVlfUlNBKQotKyAgICAgIGlm IChFVlBfUEtFWV9pZChrKSA9PSBFVlBfUEtFWV9SU0EpCi0gCXsKLS0JICBSU0EgKiB4ID0gay0+ cGtleS5yc2E7Ci0rCSAgUlNBICogeCA9IEVWUF9QS0VZX2dldDBfUlNBKGspOwotIAkgIHJldCA9 IHhlbmNfcnNhX3B1Yl9tYWdpYyAoeCk7Ci0gCX0KLSAjZW5kaWYKLUBAIC03MzQ5LDEwICs3Mzk2 LDE2IEBAIHN0YXRpYyBjYWRkcl90Ci0geGVuY19yc2FfcHViX3NzaF9leHBvcnQgKFJTQSAqIHgp Ci0gewotICAgc3RhdGljIGNoYXIgKiBzc2hfaGVhZGVyID0gIlx4MDBceDAwXHgwMFx4MDdzc2gt cnNhIjsKLSsgIGNvbnN0IEJJR05VTSAqcnNhX24sICpyc2FfZTsKLSAgIGNhZGRyX3QgcmV0Owot ICAgaW50IGxlbiwgcG9zOwotLSAgY2FkZHJfdCBuID0gQk4yYmluYm94ICh4LT5uKTsgLyogbW9k dWx1cyAqLwotLSAgY2FkZHJfdCBlID0gQk4yYmluYm94ICh4LT5lKTsgLyogcHVibGljIGV4cG9u ZW50ICovCi0rICBjYWRkcl90IG47Ci0rICBjYWRkcl90IGU7Ci0rCi0rICBSU0FfZ2V0MF9rZXko eCwgJnJzYV9uLCAmcnNhX2UsIE5VTEwpOwotKyAgbiA9IEJOMmJpbmJveCAocnNhX24pOyAvKiBt b2R1bHVzICovCi0rICBlID0gQk4yYmluYm94IChyc2FfZSk7IC8qIHB1YmxpYyBleHBvbmVudCAq LwotKwotICAgbGVuID0gMTEgKyA4ICsgYm94X2xlbmd0aCAobikgKyBib3hfbGVuZ3RoIChlKTsK LSAgIGlmIChuWzBdICYgMHg4MCkKLSAgICAgbGVuICsrOwotQEAgLTczODMsOSArNzQzNiw5IEBA IGJpZl94ZW5jX3B1YmtleV9zc2hfZXhwb3J0IChjYWRkcl90ICogcXMKLSAgICAgewotICAgICAg IGsgPSBYNTA5X2dldF9wdWJrZXkgKGtleS0+eGVrX3g1MDkpOwotICNpZmRlZiBFVlBfUEtFWV9S U0EKLS0gICAgICBpZiAoay0+dHlwZSA9PSBFVlBfUEtFWV9SU0EpCi0rICAgICAgaWYgKEVWUF9Q S0VZX2lkKGspID09IEVWUF9QS0VZX1JTQSkKLSAJewotLQkgIFJTQSAqIHggPSBrLT5wa2V5LnJz YTsKLSsJICBSU0EgKiB4ID0gRVZQX1BLRVlfZ2V0MF9SU0Eoayk7Ci0gCSAgcmV0ID0geGVuY19y c2FfcHViX3NzaF9leHBvcnQgKHgpOwotIAl9Ci0gI2VuZGlmCi1AQCAtNzQxOCw3ICs3NDcxLDcg QEAgYmlmX3hlbmNfU1BLSV9yZWFkIChjYWRkcl90ICogcXN0LCBjYWRkcgotICAgICAgIHJldHVy biBOVUxMOwotICAgICB9Ci0gICBwayA9IE5FVFNDQVBFX1NQS0lfZ2V0X3B1YmtleSAoc3BraSk7 Ci0tICBpZiAoIXBrIHx8IHBrLT50eXBlICE9IEVWUF9QS0VZX1JTQSkKLSsgIGlmICghcGsgfHwg RVZQX1BLRVlfaWQocGspICE9IEVWUF9QS0VZX1JTQSkKLSAgICAgewotICAgICAgIE5FVFNDQVBF X1NQS0lfZnJlZSAoc3BraSk7Ci0gICAgICAgKmVycl9yZXQgPSBzcnZfbWFrZV9uZXdfZXJyb3Ig KCI0MjAwMCIsICJYRUNYWCIsICJDYW4gbm90IHJldHJpZXZlIFJTQSBrZXkiKTsKLUBAIC03NTk1 LDE0ICs3NjQ4LDE0IEBAIGJpZl94ZW5jX3g1MDlfY2FfY2VydHNfbGlzdCAoY2FkZHJfdCAqIHEK LSAgIHNlY19jaGVja19kYmEgKChRSSopcXN0LCBtZSk7Ci0gICBpbiA9IEJJT19uZXcgKEJJT19z X21lbSAoKSk7Ci0gICBtdXRleF9lbnRlciAoeGVuY19rZXlzX210eCk7Ci0tICBjZXJ0cyA9IENB X2NlcnRzLT5vYmpzOwotKyAgY2VydHMgPSBYNTA5X1NUT1JFX2dldDBfb2JqZWN0cyhDQV9jZXJ0 cyk7Ci0gICBsZW4gPSBza19YNTA5X09CSkVDVF9udW0gKGNlcnRzKTsKLSAgIGZvciAoaSA9IDA7 IGkgPCBsZW47IGkrKykKLSAgICAgewotICAgICAgIFg1MDlfT0JKRUNUICogb2JqID0gc2tfWDUw OV9PQkpFQ1RfdmFsdWUgKGNlcnRzLCBpKTsKLS0gICAgICBpZiAob2JqLT50eXBlID09IFg1MDlf TFVfWDUwOSkKLSsgICAgICBpZiAoWDUwOV9PQkpFQ1RfZ2V0X3R5cGUob2JqKSA9PSBYNTA5X0xV X1g1MDkpCi0gCXsKLS0JICBYNTA5ICp4ID0gb2JqLT5kYXRhLng1MDk7Ci0rCSAgWDUwOSAqeCA9 IFg1MDlfT0JKRUNUX2dldDBfWDUwOShvYmopOwotIAkgIGNhZGRyX3QgaXRtOwotIAkgIGludCBi bGVuOwotIAkgIEJJT19yZXNldCAoaW4pOwotLS0tIGEvbGlic3JjL1dpL3htbGVuYy5oCi0rKysg Yi9saWJzcmMvV2kveG1sZW5jLmgKLUBAIC0zOCw2ICszOCw3IEBACi0gI2luY2x1ZGUgPG9wZW5z c2wvZHNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wvcnNhLmg+Ci0gI2luY2x1ZGUgPG9wZW5zc2wv ZGVzLmg+Ci0rI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotIAotICNpZmRlZiBBRVNfRU5DX0VO QUJMRQotICNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotQEAgLTYzMSw1ICs2MzIsMTgzIEBAIGNh ZGRyX3QgKiB4bWxfZmluZF9hbnlfY2hpbGQgKGNhZGRyX3QgKgotIAotIGV4dGVybiBka19tdXRl eF90ICogeGVuY19rZXlzX210eDsKLSAKLSsjaWYgT1BFTlNTTF9WRVJTSU9OX05VTUJFUiA8IDB4 MTAxMDAwMDAKLSsKLStzdGF0aWMgaW5saW5lIEhNQUNfQ1RYICpITUFDX0NUWF9uZXcodm9pZCkK LSt7Ci0rCUhNQUNfQ1RYICpwOwotKwotKwlwID0gY2FsbG9jKDEsIHNpemVvZihITUFDX0NUWCkp OwotKwlpZiAoIXApCi0rCQlyZXR1cm4gcDsKLSsJSE1BQ19DVFhfaW5pdChwKTsKLSsJcmV0dXJu IHA7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBITUFDX0NUWF9mcmVlKEhNQUNfQ1RYICpj dHgpCi0rewotKwlITUFDX0NUWF9jbGVhbnVwKGN0eCk7Ci0rCWZyZWUoY3R4KTsKLSt9Ci0rCi0r c3RhdGljIGlubGluZSB2b2lkIFJTQV9nZXQwX2tleShjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05V TSAqKm4sCi0rCQkJCWNvbnN0IEJJR05VTSAqKmUsIGNvbnN0IEJJR05VTSAqKmQpCi0rewotKwlp ZiAobiAhPSBOVUxMKQotKwkJKm4gPSByLT5uOwotKwlpZiAoZSAhPSBOVUxMKQotKwkJKmUgPSBy LT5lOwotKwlpZiAoZCAhPSBOVUxMKQotKwkJKmQgPSByLT5kOwotK30KLSsKLStzdGF0aWMgaW5s aW5lIHZvaWQgUlNBX2dldDBfZmFjdG9ycyhjb25zdCBSU0EgKnIsIGNvbnN0IEJJR05VTSAqKnAs Ci0rCQkJCSAgICBjb25zdCBCSUdOVU0gKipxKQotK3sKLSsJaWYgKHAgIT0gTlVMTCkKLSsJCSpw ID0gci0+cDsKLSsJaWYgKHEgIT0gTlVMTCkKLSsJCSpxID0gci0+cTsKLSt9Ci0rCi0rc3RhdGlj IGlubGluZSBSU0EgKkVWUF9QS0VZX2dldDBfUlNBKEVWUF9QS0VZICpwa2V5KQotK3sKLSsJaWYg KHBrZXktPnR5cGUgIT0gRVZQX1BLRVlfUlNBKQotKwkJcmV0dXJuIE5VTEw7Ci0rCXJldHVybiBw a2V5LT5wa2V5LnJzYTsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIERIX2dldDBfa2V5KGNv bnN0IERIICpkaCwgY29uc3QgQklHTlVNICoqcHViX2tleSwKLSsJCQkgICAgICAgY29uc3QgQklH TlVNICoqcHJpdl9rZXkpCi0rewotKwlpZiAocHViX2tleSAhPSBOVUxMKQotKwkJKnB1Yl9rZXkg PSBkaC0+cHViX2tleTsKLSsJaWYgKHByaXZfa2V5ICE9IE5VTEwpCi0rCQkqcHJpdl9rZXkgPSBk aC0+cHJpdl9rZXk7Ci0rfQotKwotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBESF9nZXQwX3BxZyhj b25zdCBESCAqZGgsIGNvbnN0IEJJR05VTSAqKnAsIGNvbnN0IEJJR05VTSAqKnEsCi0rCQkJICAg ICAgIGNvbnN0IEJJR05VTSAqKmcpCi0rewotKwlpZiAocCAhPSBOVUxMKQotKwkJKnAgPSBkaC0+ cDsKLSsJaWYgKHEgIT0gTlVMTCkKLSsJCSpxID0gZGgtPnE7Ci0rCWlmIChnICE9IE5VTEwpCi0r CQkqZyA9IGRoLT5nOwotK30KLSsKLStzdGF0aWMgaW5saW5lIERTQSAqRVZQX1BLRVlfZ2V0MF9E U0EoRVZQX1BLRVkgKnBrZXkpCi0rewotKwlpZiAocGtleS0+dHlwZSAhPSBFVlBfUEtFWV9EU0Ep Ci0rCQlyZXR1cm4gTlVMTDsKLSsJcmV0dXJuIHBrZXktPnBrZXkuZHNhOwotK30KLSsKLStzdGF0 aWMgaW5saW5lIGludCBESF9zZXQwX3BxZyhESCAqZGgsIEJJR05VTSAqcCwgQklHTlVNICpxLCBC SUdOVU0gKmcpCi0rewotKwkvKiBJZiB0aGUgZmllbGRzIHAgYW5kIGcgaW4gZCBhcmUgTlVMTCwg dGhlIGNvcnJlc3BvbmRpbmcgaW5wdXQKLSsJICogcGFyYW1ldGVycyBNVVNUIGJlIG5vbi1OVUxM LiAgcSBtYXkgcmVtYWluIE5VTEwuCi0rCSAqLwotKwlpZiAoKGRoLT5wID09IE5VTEwgJiYgcCA9 PSBOVUxMKQotKwkgICAgfHwgKGRoLT5nID09IE5VTEwgJiYgZyA9PSBOVUxMKSkKLSsJCXJldHVy biAwOwotKwotKwlpZiAocCAhPSBOVUxMKSB7Ci0rCQlCTl9mcmVlKGRoLT5wKTsKLSsJCWRoLT5w ID0gcDsKLSsJfQotKwlpZiAocSAhPSBOVUxMKSB7Ci0rCQlCTl9mcmVlKGRoLT5xKTsKLSsJCWRo LT5xID0gcTsKLSsJfQotKwlpZiAoZyAhPSBOVUxMKSB7Ci0rCQlCTl9mcmVlKGRoLT5nKTsKLSsJ CWRoLT5nID0gZzsKLSsJfQotKwotKwlpZiAocSAhPSBOVUxMKSB7Ci0rCQlkaC0+bGVuZ3RoID0g Qk5fbnVtX2JpdHMocSk7Ci0rCX0KLSsKLSsJcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbmxp bmUgaW50IFJTQV9zZXQwX2tleShSU0EgKnIsIEJJR05VTSAqbiwgQklHTlVNICplLCBCSUdOVU0g KmQpCi0rewotKwkvKiBJZiB0aGUgZmllbGRzIG4gYW5kIGUgaW4gciBhcmUgTlVMTCwgdGhlIGNv cnJlc3BvbmRpbmcgaW5wdXQKLSsJICogcGFyYW1ldGVycyBNVVNUIGJlIG5vbi1OVUxMIGZvciBu IGFuZCBlLiAgZCBtYXkgYmUKLSsJICogbGVmdCBOVUxMIChpbiBjYXNlIG9ubHkgdGhlIHB1Ymxp YyBrZXkgaXMgdXNlZCkuCi0rCSAqLwotKwlpZiAoKHItPm4gPT0gTlVMTCAmJiBuID09IE5VTEwp Ci0rCSAgICB8fCAoci0+ZSA9PSBOVUxMICYmIGUgPT0gTlVMTCkpCi0rCQlyZXR1cm4gMDsKLSsK LSsJaWYgKG4gIT0gTlVMTCkgewotKwkJQk5fZnJlZShyLT5uKTsKLSsJCXItPm4gPSBuOwotKwl9 Ci0rCWlmIChlICE9IE5VTEwpIHsKLSsJCUJOX2ZyZWUoci0+ZSk7Ci0rCQlyLT5lID0gZTsKLSsJ fQotKwlpZiAoZCAhPSBOVUxMKSB7Ci0rCQlCTl9mcmVlKHItPmQpOwotKwkJci0+ZCA9IGQ7Ci0r CX0KLSsKLSsJcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBEU0FfZ2V0MF9w cWcoY29uc3QgRFNBICpkLCBjb25zdCBCSUdOVU0gKipwLAotKwkJCQljb25zdCBCSUdOVU0gKipx LCBjb25zdCBCSUdOVU0gKipnKQotK3sKLSsJaWYgKHAgIT0gTlVMTCkKLSsJCSpwID0gZC0+cDsK LSsJaWYgKHEgIT0gTlVMTCkKLSsJCSpxID0gZC0+cTsKLSsJaWYgKGcgIT0gTlVMTCkKLSsJCSpn ID0gZC0+ZzsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSB2b2lkIERTQV9nZXQwX2tleShjb25zdCBE U0EgKmQsIGNvbnN0IEJJR05VTSAqKnB1Yl9rZXksCi0rCQkJCWNvbnN0IEJJR05VTSAqKnByaXZf a2V5KQotK3sKLSsJaWYgKHB1Yl9rZXkgIT0gTlVMTCkKLSsJCSpwdWJfa2V5ID0gZC0+cHViX2tl eTsKLSsJaWYgKHByaXZfa2V5ICE9IE5VTEwpCi0rCQkqcHJpdl9rZXkgPSBkLT5wcml2X2tleTsK LSt9Ci0rCi0rc3RhdGljIGlubGluZSBjb25zdCBTVEFDS19PRihYNTA5X0VYVEVOU0lPTikgKlg1 MDlfZ2V0MF9leHRlbnNpb25zKGNvbnN0IFg1MDkgKngpCi0rewotKwlyZXR1cm4geC0+Y2VydF9p bmZvLT5leHRlbnNpb25zOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludCBYNTA5X3VwX3JlZihY NTA5ICp4KQotK3sKLSsJcmV0dXJuIENSWVBUT19hZGQoJngtPnJlZmVyZW5jZXMsIDEsIENSWVBU T19MT0NLX1g1MDkpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIFNUQUNLX09GKFg1MDlfT0JKRUNU KSAqWDUwOV9TVE9SRV9nZXQwX29iamVjdHMoWDUwOV9TVE9SRSAqdikKLSt7Ci0rCXJldHVybiB2 LT5vYmpzOwotK30KLSsKLStzdGF0aWMgaW5saW5lIGludCBYNTA5X09CSkVDVF9nZXRfdHlwZShj b25zdCBYNTA5X09CSkVDVCAqYSkKLSt7Ci0rCXJldHVybiBhLT50eXBlOwotK30KLSsKLStzdGF0 aWMgaW5saW5lIFg1MDkgKlg1MDlfT0JKRUNUX2dldDBfWDUwOShjb25zdCBYNTA5X09CSkVDVCAq YSkKLSt7Ci0rCWlmIChhID09IE5VTEwgfHwgYS0+dHlwZSAhPSBYNTA5X0xVX1g1MDkpCi0rCQly ZXR1cm4gTlVMTDsKLSsJcmV0dXJuIGEtPmRhdGEueDUwOTsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0g I2VuZGlmCi0gCi0tLS0gYS9saWJzcmMvV2kveG1sZW5jX2FsZ29zLmMKLSsrKyBiL2xpYnNyYy9X aS94bWxlbmNfYWxnb3MuYwotQEAgLTExNDksNyArMTE0OSw3IEBAIGludAotIGRzaWdfaG1hY19z aGEyNTZfZGlnZXN0IChka19zZXNzaW9uX3QgKiBzZXNfaW4sIGxvbmcgbGVuLCB4ZW5jX2tleV90 ICoga2V5LCBjYWRkcl90ICogc2lnbl9vdXQpCi0gewotICAgdW5zaWduZWQgY2hhciAqIGRhdGE7 Ci0tICBITUFDX0NUWCBjdHg7Ci0rICBITUFDX0NUWCAqY3R4OwotICAgdW5zaWduZWQgY2hhciBr ZXlfZGF0YVszMiAqIDhdOwotICAgdW5zaWduZWQgY2hhciBtZCBbU0hBMjU2X0RJR0VTVF9MRU5H VEggKyAxXTsKLSAgIHVuc2lnbmVkIGNoYXIgbWQ2NCBbU0hBMjU2X0RJR0VTVF9MRU5HVEggKiAy ICsgMV07Ci1AQCAtMTE4Miw3ICsxMTgyLDkgQEAgZHNpZ19obWFjX3NoYTI1Nl9kaWdlc3QgKGRr X3Nlc3Npb25fdCAqCi0gICAgICAgZGVmYXVsdDoKLSAJICByZXR1cm4gMDsKLSAgICAgfQotLQot KyAgY3R4ID0gSE1BQ19DVFhfbmV3KCk7Ci0rICBpZiAoIWN0eCkKLSsJICByZXR1cm4gMDsKLSAK LSAgIGRhdGEgPSAodW5zaWduZWQgY2hhciAqKSBka19hbGxvY19ib3ggKGxlbiwgRFZfQ19TVFJJ TkcpOwotICAgQ0FUQ0hfUkVBRF9GQUlMIChzZXNfaW4pCi1AQCAtMTE5MiwxNCArMTE5NCwxNSBA QCBkc2lnX2htYWNfc2hhMjU2X2RpZ2VzdCAoZGtfc2Vzc2lvbl90ICoKLSAgIEZBSUxFRAotICAg ICB7Ci0gICAgICAgZGtfZnJlZV9ib3ggKChib3hfdCkgZGF0YSk7Ci0rICAgICAgSE1BQ19DVFhf ZnJlZShjdHgpOwotICAgICAgIHJldHVybiAwOwotICAgICB9Ci0gICBFTkRfUkVBRF9GQUlMIChz ZXNfaW4pOwotIAotLSAgSE1BQ19Jbml0KCZjdHgsICh2b2lkKikga2V5X2RhdGEgLCBrZXlfbGVu LCBFVlBfc2hhMjU2ICgpKTsKLS0gIEhNQUNfVXBkYXRlKCZjdHgsIGRhdGEsIGxlbik7Ci0tICBI TUFDX0ZpbmFsKCZjdHgsIG1kLCAmaG1hY19sZW4pOwotLSAgSE1BQ19jbGVhbnVwKCZjdHgpOwot KyAgSE1BQ19Jbml0X2V4KGN0eCwgKHZvaWQqKSBrZXlfZGF0YSAsIGtleV9sZW4sIEVWUF9zaGEy NTYgKCksIE5VTEwpOwotKyAgSE1BQ19VcGRhdGUoY3R4LCBkYXRhLCBsZW4pOwotKyAgSE1BQ19G aW5hbChjdHgsIG1kLCAmaG1hY19sZW4pOwotKyAgSE1BQ19DVFhfZnJlZShjdHgpOwotIAotICAg aWYgKGhtYWNfbGVuICE9IFNIQTI1Nl9ESUdFU1RfTEVOR1RIKQotICAgICBHUEZfVDsKLUBAIC0x MjIwLDcgKzEyMjMsNyBAQCBkc2lnX2htYWNfc2hhMjU2X2RpZ2VzdCAoZGtfc2Vzc2lvbl90ICoK LSBpbnQKLSBkc2lnX2htYWNfc2hhMjU2X3ZlcmlmeSAoZGtfc2Vzc2lvbl90ICogc2VzX2luLCBs b25nIGxlbiwgeGVuY19rZXlfdCAqIGtleSwgY2FkZHJfdCBkaWdlc3QpCi0gewotLSAgSE1BQ19D VFggY3R4OwotKyAgSE1BQ19DVFggKmN0eDsKLSAgIHVuc2lnbmVkIGNoYXIgKiBkYXRhOwotICAg dW5zaWduZWQgY2hhciBrZXlfZGF0YVszICogOF07Ci0gICB1bnNpZ25lZCBjaGFyIG1kIFtTSEEy NTZfRElHRVNUX0xFTkdUSCArIDFdOwotQEAgLTEyNDksNiArMTI1Miw5IEBAIGRzaWdfaG1hY19z aGEyNTZfdmVyaWZ5IChka19zZXNzaW9uX3QgKgotIAkgIHJldHVybiAwOwotICAgICB9Ci0gCi0r ICBjdHggPSBITUFDX0NUWF9uZXcoKTsKLSsgIGlmICghY3R4KQotKwkgIHJldHVybiAwOwotIAot ICAgZGF0YSA9ICh1bnNpZ25lZCBjaGFyICopIGRrX2FsbG9jX2JveCAobGVuLCBEVl9DX1NUUklO Ryk7Ci0gICBDQVRDSF9SRUFEX0ZBSUwgKHNlc19pbikKLUBAIC0xMjU4LDE0ICsxMjY0LDE1IEBA IGRzaWdfaG1hY19zaGEyNTZfdmVyaWZ5IChka19zZXNzaW9uX3QgKgotICAgRkFJTEVECi0gICAg IHsKLSAgICAgICBka19mcmVlX2JveCAoKGJveF90KSBkYXRhKTsKLSsgICAgICBITUFDX0NUWF9m cmVlKGN0eCk7Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgIEVORF9SRUFEX0ZBSUwgKHNl c19pbik7Ci0gCi0tICBITUFDX0luaXQoJmN0eCwgKHZvaWQqKSBrZXlfZGF0YSAsIGtleV9sZW4s IEVWUF9zaGEyNTYgKCkpOwotLSAgSE1BQ19VcGRhdGUoJmN0eCwgZGF0YSwgbGVuKTsKLS0gIEhN QUNfRmluYWwoJmN0eCwgbWQsICZobWFjX2xlbik7Ci0tICBITUFDX2NsZWFudXAoJmN0eCk7Ci0r ICBITUFDX0luaXRfZXgoY3R4LCAodm9pZCopIGtleV9kYXRhICwga2V5X2xlbiwgRVZQX3NoYTI1 NiAoKSwgTlVMTCk7Ci0rICBITUFDX1VwZGF0ZShjdHgsIGRhdGEsIGxlbik7Ci0rICBITUFDX0Zp bmFsKGN0eCwgbWQsICZobWFjX2xlbik7Ci0rICBITUFDX0NUWF9mcmVlKGN0eCk7Ci0gICBka19m cmVlX2JveCAoKGJveF90KSBkYXRhKTsKLSAKLSAgIGxlbjEgPSB4ZW5jX2VuY29kZV9iYXNlNjQg KChjaGFyICopbWQsIG1kNjQsIGhtYWNfbGVuKTsKLUBAIC0xNTg2LDcgKzE1OTMsNyBAQCBpbnQK LSBkc2lnX2htYWNfc2hhMV9kaWdlc3QgKGRrX3Nlc3Npb25fdCAqIHNlc19pbiwgbG9uZyBsZW4s IHhlbmNfa2V5X3QgKiBrZXksIGNhZGRyX3QgKiBzaWduX291dCkKLSB7Ci0gICB1bnNpZ25lZCBj aGFyICogZGF0YTsKLS0gIEhNQUNfQ1RYIGN0eDsKLSsgIEhNQUNfQ1RYICpjdHg7Ci0gICB1bnNp Z25lZCBjaGFyIGtleV9kYXRhWzMyICogOF07Ci0gICB1bnNpZ25lZCBjaGFyIG1kIFtTSEFfRElH RVNUX0xFTkdUSCArIDFdOwotICAgdW5zaWduZWQgY2hhciBtZDY0IFtTSEFfRElHRVNUX0xFTkdU SCAqIDIgKyAxXTsKLUBAIC0xNjIwLDYgKzE2MjcsOSBAQCBkc2lnX2htYWNfc2hhMV9kaWdlc3Qg KGRrX3Nlc3Npb25fdCAqIHNlCi0gCSAgcmV0dXJuIDA7Ci0gICAgIH0KLSAKLSsgIGN0eCA9IEhN QUNfQ1RYX25ldygpOwotKyAgaWYgKCFjdHgpCi0rCSAgcmV0dXJuIDA7Ci0gCi0gICBkYXRhID0g KHVuc2lnbmVkIGNoYXIgKikgZGtfYWxsb2NfYm94IChsZW4sIERWX0NfU1RSSU5HKTsKLSAgIENB VENIX1JFQURfRkFJTCAoc2VzX2luKQotQEAgLTE2MjksMTQgKzE2MzksMTUgQEAgZHNpZ19obWFj X3NoYTFfZGlnZXN0IChka19zZXNzaW9uX3QgKiBzZQotICAgRkFJTEVECi0gICAgIHsKLSAgICAg ICBka19mcmVlX2JveCAoKGJveF90KSBkYXRhKTsKLSsgICAgICBITUFDX0NUWF9mcmVlKGN0eCk7 Ci0gICAgICAgcmV0dXJuIDA7Ci0gICAgIH0KLSAgIEVORF9SRUFEX0ZBSUwgKHNlc19pbik7Ci0g Ci0tICBITUFDX0luaXQoJmN0eCwgKHZvaWQqKSBrZXlfZGF0YSAsIGtleV9sZW4sIEVWUF9zaGEx ICgpKTsKLS0gIEhNQUNfVXBkYXRlKCZjdHgsIGRhdGEsIGxlbik7Ci0tICBITUFDX0ZpbmFsKCZj dHgsIG1kLCAmaG1hY19sZW4pOwotLSAgSE1BQ19jbGVhbnVwKCZjdHgpOwotKyAgSE1BQ19Jbml0 X2V4KGN0eCwgKHZvaWQqKSBrZXlfZGF0YSAsIGtleV9sZW4sIEVWUF9zaGExICgpLCBOVUxMKTsK LSsgIEhNQUNfVXBkYXRlKGN0eCwgZGF0YSwgbGVuKTsKLSsgIEhNQUNfRmluYWwoY3R4LCBtZCwg JmhtYWNfbGVuKTsKLSsgIEhNQUNfQ1RYX2ZyZWUoY3R4KTsKLSAKLSAgIGlmIChobWFjX2xlbiAh PSBTSEFfRElHRVNUX0xFTkdUSCkKLSAgICAgR1BGX1Q7Ci1AQCAtMTY1Nyw3ICsxNjY4LDcgQEAg ZHNpZ19obWFjX3NoYTFfZGlnZXN0IChka19zZXNzaW9uX3QgKiBzZQotIGludAotIGRzaWdfaG1h Y19zaGExX3ZlcmlmeSAoZGtfc2Vzc2lvbl90ICogc2VzX2luLCBsb25nIGxlbiwgeGVuY19rZXlf dCAqIGtleSwgY2FkZHJfdCBkaWdlc3QpCi0gewotLSAgSE1BQ19DVFggY3R4OwotKyAgSE1BQ19D VFggKmN0eDsKLSAgIHVuc2lnbmVkIGNoYXIgKiBkYXRhOwotICAgdW5zaWduZWQgY2hhciBrZXlf ZGF0YVszICogOF07Ci0gICB1bnNpZ25lZCBjaGFyIG1kIFtTSEFfRElHRVNUX0xFTkdUSCArIDFd OwotQEAgLTE2ODYsNiArMTY5Nyw5IEBAIGRzaWdfaG1hY19zaGExX3ZlcmlmeSAoZGtfc2Vzc2lv bl90ICogc2UKLSAJICByZXR1cm4gMDsKLSAgICAgfQotIAotKyAgY3R4ID0gSE1BQ19DVFhfbmV3 KCk7Ci0rICBpZiAoIWN0eCkKLSsJICByZXR1cm4gMDsKLSAKLSAgIGRhdGEgPSAodW5zaWduZWQg Y2hhciAqKSBka19hbGxvY19ib3ggKGxlbiwgRFZfQ19TVFJJTkcpOwotICAgQ0FUQ0hfUkVBRF9G QUlMIChzZXNfaW4pCi1AQCAtMTY5NSwxNCArMTcwOSwxNSBAQCBkc2lnX2htYWNfc2hhMV92ZXJp ZnkgKGRrX3Nlc3Npb25fdCAqIHNlCi0gICBGQUlMRUQKLSAgICAgewotICAgICAgIGRrX2ZyZWVf Ym94ICgoYm94X3QpIGRhdGEpOwotKyAgICAgIEhNQUNfQ1RYX2ZyZWUoY3R4KTsKLSAgICAgICBy ZXR1cm4gMDsKLSAgICAgfQotICAgRU5EX1JFQURfRkFJTCAoc2VzX2luKTsKLSAKLS0gIEhNQUNf SW5pdCgmY3R4LCAodm9pZCopIGtleV9kYXRhICwga2V5X2xlbiwgRVZQX3NoYTEgKCkpOwotLSAg SE1BQ19VcGRhdGUoJmN0eCwgZGF0YSwgbGVuKTsKLS0gIEhNQUNfRmluYWwoJmN0eCwgbWQsICZo bWFjX2xlbik7Ci0tICBITUFDX2NsZWFudXAoJmN0eCk7Ci0rICBITUFDX0luaXRfZXgoY3R4LCAo dm9pZCopIGtleV9kYXRhICwga2V5X2xlbiwgRVZQX3NoYTEgKCksIE5VTEwpOwotKyAgSE1BQ19V cGRhdGUoY3R4LCBkYXRhLCBsZW4pOwotKyAgSE1BQ19GaW5hbChjdHgsIG1kLCAmaG1hY19sZW4p OwotKyAgSE1BQ19DVFhfZnJlZShjdHgpOwotICAgZGtfZnJlZV9ib3ggKChib3hfdCkgZGF0YSk7 Ci0gCi0gICBsZW4xID0geGVuY19lbmNvZGVfYmFzZTY0ICgoY2hhciAqKW1kLCBtZDY0LCBobWFj X2xlbik7Ci1AQCAtMTc2Myw3ICsxNzc4LDcgQEAgaW50IHhlbmNfYWVzX2VuY3J5cHRvciAoZGtf c2Vzc2lvbl90ICogcwotICAgY2FkZHJfdCBvdXRidWZfYmVnOwotICAgaW50IGxlbjsKLSAgIGNh ZGRyX3QgZW5jb2RlZF9vdXQ7Ci0tICBFVlBfQ0lQSEVSX0NUWCBjdHg7Ci0rICBFVlBfQ0lQSEVS X0NUWCAqY3R4OwotICAgdW5zaWduZWQgY2hhciAqIGl2ZWMgPSAma2V5LT5raS5hZXMuaXZbMF07 Ci0gCi0gICBDQVRDSF9SRUFEX0ZBSUwgKHNlc19pbikKLUBAIC0xNzc4LDcgKzE3OTMsNyBAQCBp bnQgeGVuY19hZXNfZW5jcnlwdG9yIChka19zZXNzaW9uX3QgKiBzCi0gICBFTkRfUkVBRF9GQUlM IChzZXNfaW4pOwotIAotICNpZiAxCi0tICBFVlBfQ0lQSEVSX0NUWF9pbml0KCZjdHgpOwotKyAg Y3R4ID0gRVZQX0NJUEhFUl9DVFhfbmV3KCk7Ci0gICBvdXRidWZfYmVnID0gZGtfYWxsb2NfYm94 IChib3hfbGVuZ3RoICh0ZXh0KSArIDE2LCBEVl9CSU4pOwotICAgbWVtY3B5IChvdXRidWZfYmVn LCBpdmVjLCAxNik7Ci0gICBvdXRidWYgPSBvdXRidWZfYmVnICsgMTY7Ci1AQCAtMTc4NiwyMCAr MTgwMSwxOSBAQCBpbnQgeGVuY19hZXNfZW5jcnlwdG9yIChka19zZXNzaW9uX3QgKiBzCi0gICBz d2l0Y2ggKGtleS0+a2kuYWVzLmJpdHMpCi0gICAgIHsKLSAgICAgY2FzZSAxMjg6Ci0tICAgICAg RVZQX0VuY3J5cHRJbml0X2V4KCZjdHgsIEVWUF9hZXNfMTI4X2NiYygpLCBOVUxMLCBrZXktPmtp LmFlcy5rLCBpdmVjKTsKLSsgICAgICBFVlBfRW5jcnlwdEluaXRfZXgoY3R4LCBFVlBfYWVzXzEy OF9jYmMoKSwgTlVMTCwga2V5LT5raS5hZXMuaywgaXZlYyk7Ci0gICAgICAgYnJlYWs7Ci0gICAg IGNhc2UgMTkyOgotLSAgICAgIEVWUF9FbmNyeXB0SW5pdF9leCgmY3R4LCBFVlBfYWVzXzE5Ml9j YmMoKSwgTlVMTCwga2V5LT5raS5hZXMuaywgaXZlYyk7Ci0rICAgICAgRVZQX0VuY3J5cHRJbml0 X2V4KGN0eCwgRVZQX2Flc18xOTJfY2JjKCksIE5VTEwsIGtleS0+a2kuYWVzLmssIGl2ZWMpOwot ICAgICAgIGJyZWFrOwotICAgICBjYXNlIDI1NjoKLS0gICAgICBFVlBfRW5jcnlwdEluaXRfZXgo JmN0eCwgRVZQX2Flc18yNTZfY2JjKCksIE5VTEwsIGtleS0+a2kuYWVzLmssIGl2ZWMpOwotKyAg ICAgIEVWUF9FbmNyeXB0SW5pdF9leChjdHgsIEVWUF9hZXNfMjU2X2NiYygpLCBOVUxMLCBrZXkt PmtpLmFlcy5rLCBpdmVjKTsKLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLSAgICAgICBH UEZfVDEgKCJVbnN1cHBvcnRlZCBrZXkgc2l6ZSIpOwotICAgICB9Ci0tICBpZighRVZQX0VuY3J5 cHRVcGRhdGUoJmN0eCwgKHVuc2lnbmVkIGNoYXIgKilvdXRidWYsICZvdXRsZW4sICh1bnNpZ25l ZCBjaGFyICopdGV4dCwgYm94X2xlbmd0aCAodGV4dCkpKQotKyAgaWYoIUVWUF9FbmNyeXB0VXBk YXRlKGN0eCwgKHVuc2lnbmVkIGNoYXIgKilvdXRidWYsICZvdXRsZW4sICh1bnNpZ25lZCBjaGFy ICopdGV4dCwgYm94X2xlbmd0aCAodGV4dCkpKQotICAgICB7Ci0tICAgICAgRVZQX0NJUEhFUl9D VFhfY2xlYW51cCgmY3R4KTsKLSAgICAgICBka19mcmVlX2JveCAodGV4dCk7Ci0gICAgICAgZGtf ZnJlZV9ib3ggKG91dGJ1Zl9iZWcpOwotICAgICAgIHhlbmNfcmVwb3J0X2Vycm9yICh0LCA1MDAs IFhFTkNfRU5DX0VSUiwgIkFFUyBlbmNyeXB0aW9uIGludGVybmFsIGVycm9yICMyIik7Ci1AQCAt MTgxMiw3ICsxODI2LDcgQEAgaW50IHhlbmNfYWVzX2VuY3J5cHRvciAoZGtfc2Vzc2lvbl90ICog cwotICAgICAgIHhlbmNfcmVwb3J0X2Vycm9yICh0LCA1MDAsIFhFTkNfRU5DX0VSUiwgIkFFUyBl bmNyeXB0aW9uIGludGVybmFsIGVycm9yICMzIik7Ci0gICAgICAgfSAqLwotICAgLyogb3V0bGVu ICs9IHRtcGxlbjsgKi8KLS0gIEVWUF9DSVBIRVJfQ1RYX2NsZWFudXAoJmN0eCk7Ci0rICBFVlBf Q0lQSEVSX0NUWF9mcmVlKGN0eCk7Ci0gCi0gI2Vsc2UKLSAgIG91dGJ1Zl9iZWcgPSBka19hbGxv Y19ib3ggKGJveF9sZW5ndGggKHRleHQpICsgMTYgLyogaXYgKi8sIERWX0JJTik7Ci1AQCAtMjA1 MCw2ICsyMDY0LDcgQEAgeGVuY19yc2FfZGVjcnlwdG9yIChka19zZXNzaW9uX3QgKiBzZXNfaQot ICAgaW50IGxlbiA9IDA7Ci0gICBpbnQga2V5c2l6ZTsKLSAgIFJTQSAqIHJzYSA9IGtleS0+eGVr X3ByaXZhdGVfcnNhOwotKyAgY29uc3QgQklHTlVNICpwLCAqcTsKLSAKLSAgIGlmICghc2VzbGVu KQotICAgICB7Ci1AQCAtMjA2Miw5ICsyMDc3LDkgQEAgeGVuY19yc2FfZGVjcnlwdG9yIChka19z ZXNzaW9uX3QgKiBzZXNfaQotICAgICAgIHhlbmNfcmVwb3J0X2Vycm9yICh0LCA1MDAgKyBzdHJs ZW4gKGtleS0+eGVrX25hbWUpLCBYRU5DX0VOQ19FUlIsICJjb3VsZCBub3QgbWFrZSBSU0EgZGVj cnlwdGlvbiBba2V5ICVzIGlzIG5vdCBSU0FdIiwga2V5LT54ZWtfbmFtZSk7Ci0gICAgICAgcmV0 dXJuIDA7Ci0gICAgIH0KLSsgIFJTQV9nZXQwX2ZhY3RvcnMocnNhLCAmcCwgJnEpOwotICAgaWYg KCFyc2EgfHwKLS0gICAgICAhcnNhLT5wIHx8Ci0tICAgICAgIXJzYS0+cSkKLSsgICAgICAhcCB8 fCAhcSkKLSAgICAgewotICAgICAgIGlmIChrZXktPnhla194NTA5X0tJKQotIAlrZXkgPSB4ZW5j X2dldF9rZXlfYnlfa2V5aWRlbnRpZmllciAoa2V5LT54ZWtfeDUwOV9LSSwgMSk7Ci0tLS0gYS9s aWJzcmMvdXRpbC9zc2xlbmdpbmUuYwotKysrIGIvbGlic3JjL3V0aWwvc3NsZW5naW5lLmMKLUBA IC0yOSw3ICsyOSwxMSBAQAotIGludAotIHNzbF9lbmdpbmVfc3RhcnR1cCAodm9pZCkKLSB7Ci0t ICBDUllQVE9fbWFsbG9jX2luaXQgKCk7Ci0rI2lmIE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIgPCAw eDEwMTAwMDAwIHx8IGRlZmluZWQgTElCUkVTU0xfVkVSU0lPTl9OVU1CRVIKLSsJQ1JZUFRPX21h bGxvY19pbml0ICgpOwotKyNlbHNlCi0rCU9QRU5TU0xfbWFsbG9jX2luaXQoKTsKLSsjZW5kaWYK LSAgIEVSUl9sb2FkX2NyeXB0b19zdHJpbmdzKCk7Ci0gICBPcGVuU1NMX2FkZF9hbGxfYWxnb3Jp dGhtcygpOwotIAotLS0tIGEvbGlic3JjL1dpL2h0dHAuYwotKysrIGIvbGlic3JjL1dpL2h0dHAu YwotQEAgLTg4ODYsNyArODg4Niw3IEBAIHNzbF9zZXJ2ZXJfc2V0X2NlcnRpZmljYXRlIChTU0xf Q1RYKiBzc2wKLSAJCSAgbG9nX2Vycm9yICgiU1NMOiBUaGUgc3RvcmVkIGNlcnRpZmljYXRlICcl cycgY2FuIG5vdCBiZSB1c2VkIGFzIGV4dHJhIGNoYWluIGNlcnRpZmljYXRlIiwgdG9rKTsKLSAJ CSAgYnJlYWs7Ci0gCQl9Ci0tCSAgICAgIENSWVBUT19hZGQoJmstPnhla194NTA5LT5yZWZlcmVu Y2VzLCAxLCBDUllQVE9fTE9DS19YNTA5KTsKLSsJICAgICAgWDUwOV91cF9yZWYoay0+eGVrX3g1 MDkpOwotICAgICAgICAgICAgICAgdG9rID0gc3RydG9rX3IgKE5VTEwsICIsIiwgJnRva19zKTsK LSAJICAgIH0KLSAJICBka19mcmVlX2JveCAoc3RyKTsKLS0tLSBhL2xpYnNyYy9Eay9Ea2VybmVs LmMKLSsrKyBiL2xpYnNyYy9Eay9Ea2VybmVsLmMKLUBAIC01MjgwLDcgKzUyODAsMTEgQEAgc3Ns X3NlcnZlcl9pbml0ICgpCi0gICB9Ci0gI2VuZGlmCi0gCi0tICBTU0xlYXlfYWRkX2FsbF9hbGdv cml0aG1zICgpOwotKyNpZiBPUEVOU1NMX1ZFUlNJT05fTlVNQkVSIDwgMHgxMDEwMDAwMAotKyAg U1NMZWF5X2FkZF9hbGxfYWxnb3JpdGhtcygpOwotKyNlbHNlCi0rICBPcGVuU1NMX2FkZF9hbGxf YWxnb3JpdGhtcygpOwotKyNlbmRpZgotICAgUEtDUzEyX1BCRV9hZGQgKCk7CQkvKiBzdHViICov Ci0gCi0gI2lmZGVmIE5PX1RIUkVBRApkaWZmIC0tZ2l0IGEvc3JjcGtncy92aXJ0dW9zby9wYXRj aGVzL3NzbDEuMV9tb3JlLnBhdGNoIGIvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVzL3NzbDEuMV9t b3JlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmU1MGVjMTI3YmEuLjAw MDAwMDAwMDAwMAotLS0gYS9zcmNwa2dzL3ZpcnR1b3NvL3BhdGNoZXMvc3NsMS4xX21vcmUucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1EZXNjcmlwdGlvbjogQ29tbWVudCB1 bmtub3duIGRlZmluaXRpb24gaW4gc3NsMS4xIC0gcGxlYXNlIHJldmlldyEKLUF1dGhvcjogQW5k cmVhcyBUaWxsZSA8dGlsbGVAZGViaWFuLm9yZz4KLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5k ZWJpYW4ub3JnLzgyODU5NAotTGFzdC1VcGRhdGU6IE1vIDExLiBGZWIgMTM6NTA6MTcgQ0VUIDIw MTkKLQotLS0tIGEvbGlic3JjL0RrL0RrZXJuZWwuYwotKysrIGIvbGlic3JjL0RrL0RrZXJuZWwu YwotQEAgLTUxNjEsMTAgKzUxNjEsMTIgQEAgc3NsX2N0eF9zZXRfcHJvdG9jb2xfb3B0aW9ucyhT U0xfQ1RYICpjdAotICAgICAgIGVsc2UgaWYgKCFzdHJjYXNlY21wIChuYW1lLCAiVExTdjFfMiIp IHx8ICFzdHJjYXNlY21wIChuYW1lLCAiVExTdjEuMiIpKQotIAlvcHQgPSBTU0xfUFJPVE9DT0xf VExTVjFfMjsKLSAjZW5kaWYKLSsvKgotICNpZiBkZWZpbmVkIChTU0xfT1BfTk9fVExTdjFfMykK LSAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAobmFtZSwgIlRMU3YxXzMiKSB8fCAhc3RyY2Fz ZWNtcCAobmFtZSwgIlRMU3YxLjMiKSkKLSAJb3B0ID0gU1NMX1BST1RPQ09MX1RMU1YxXzM7Ci0g I2VuZGlmCi0rKi8KLSAgICAgICBlbHNlIGlmICghc3RyY2FzZWNtcCAobmFtZSwgIkFMTCIpKQot IAlvcHQgPSBTU0xfUFJPVE9DT0xfQUxMOwotICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL3NyY3Br Z3MvdmlydHVvc28vcGF0Y2hlcy91c2UtbWtzdGVtcC5wYXRjaCBiL3NyY3BrZ3MvdmlydHVvc28v cGF0Y2hlcy91c2UtbWtzdGVtcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg ZDcxYjdlNDE3YmQ5Li4wMDAwMDAwMDAwMDAKLS0tIGEvc3JjcGtncy92aXJ0dW9zby9wYXRjaGVz L3VzZS1ta3N0ZW1wLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU291cmNl OiBAcHVsbG1vbGwKLVVwc3RyZWFtOiBubwotUmVhc29uOiBBdm9pZCBta3RlbXAoMykgYmVjYXVz ZSAiTmV2ZXIgdXNlIHRoaXMgZnVuY3Rpb247IHNlZSBCVUdTLiIKLQotLS0tIGEvbGlic3JjL0Rr L0Rrc2Vzc3RyLmMJMjAxOC0wOC0xNiAwMTowNjoyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBiL2xp YnNyYy9Eay9Ea3Nlc3N0ci5jCTIwMjAtMDEtMjcgMTU6MjI6MDAuOTUzODc2MjUxICswMTAwCi1A QCAtMjk4LDggKzI5OCwxMCBAQAotICAgICAgIGlmICghc2VzMi0+c2VzX2ZpbGUtPnNlc19tYXhf YmxvY2tzX2luX21lbSkKLSAJewotIAkgIGNoYXIgZm5hbWVbUEFUSF9NQVggKyAxXTsKLSsgICAg ICAgICAgaW50IGZkOwotIAkgIHNucHJpbnRmIChmbmFtZSwgc2l6ZW9mIChmbmFtZSksICIlcy9z ZXNYWFhYWFgiLCBzZXNfdG1wX2Rpcik7Ci0tCSAgbWt0ZW1wIChmbmFtZSk7Ci0rCSAgZmQgPSBt a3N0ZW1wIChmbmFtZSk7Ci0rICAgICAgICAgIGNsb3NlIChmZCk7Ci0gCi0gI2lmIGRlZmluZWQg KFdJTjMyKQotICMgZGVmaW5lIE9QRU5fRkxBR1MgIAkgIE9fQ1JFQVQgfCBPX1JEV1IgfCBPX0JJ TkFSWSB8IE9fRVhDTCB8IE9fVEVNUE9SQVJZCmRpZmYgLS1naXQgYS9zcmNwa2dzL3ZpcnR1b3Nv L3RlbXBsYXRlIGIvc3JjcGtncy92aXJ0dW9zby90ZW1wbGF0ZQppbmRleCA3M2U1OTAyM2QzNWUu LjI2M2NlNTQyZDhkZiAxMDA2NDQKLS0tIGEvc3JjcGtncy92aXJ0dW9zby90ZW1wbGF0ZQorKysg Yi9zcmNwa2dzL3ZpcnR1b3NvL3RlbXBsYXRlCkBAIC0xLDE4ICsxLDE5IEBACiAjIFRlbXBsYXRl IGZpbGUgZm9yICd2aXJ0dW9zbycKIHBrZ25hbWU9dmlydHVvc28KLXZlcnNpb249Ny4yLjUuMQot cmV2aXNpb249MwordmVyc2lvbj03LjIuMTAKK3JldmlzaW9uPTEKIGFyY2hzPSJ4ODZfNjQqIGFh cmNoNjQqIHBwYzY0bGUqIgogYnVpbGRfc3R5bGU9Z251LWNvbmZpZ3VyZQotY29uZmlndXJlX2Fy Z3M9Ii0tZW5hYmxlLXN0YXRpYyIKLWhvc3RtYWtlZGVwZW5kcz0iYXV0b21ha2UgbGlidG9vbCBm bGV4IGdwZXJmIG5ldC10b29scyIKK2NvbmZpZ3VyZV9hcmdzPSItLXdpdGhvdXQtaW50ZXJuYWwt emxpYiAtLXdpdGgtcmVhZGxpbmUgLS13aXRoLWxheW91dD1kZWJpYW4iCitob3N0bWFrZWRlcGVu ZHM9ImF1dG9tYWtlIGxpYnRvb2wgZmxleCBncGVyZiBuZXQtdG9vbHMgd2hpY2giCiBtYWtlZGVw ZW5kcz0ib3BlbnNzbC1kZXZlbCBsaWJsZGFwLWRldmVsIHJlYWRsaW5lLWRldmVsIGxpYnhtbDIt ZGV2ZWwgbWl0LWtyYjUtZGV2ZWwiCitjaGVja2RlcGVuZHM9InByb2Nwcy1uZyB1bnppcCBjdXJs IHdnZXQiCiBzaG9ydF9kZXNjPSJTY2FsYWJsZSBjcm9zcy1wbGF0Zm9ybSBzZXJ2ZXIgb2Ygdmly dHVvc28iCiBtYWludGFpbmVyPSJPcnBoYW5lZCA8b3JwaGFuQHZvaWRsaW51eC5vcmc+IgotbGlj ZW5zZT0iR1BMLTIiCi1ob21lcGFnZT0iaHR0cDovL3ZpcnR1b3NvLm9wZW5saW5rc3cuY29tL3dp a2kvbWFpbi9NYWluLyIKK2xpY2Vuc2U9IkdQTC0yLjAtb25seSIKK2hvbWVwYWdlPSJodHRwczov L3Zvcy5vcGVubGlua3N3LmNvbS9vd2lraS93aWtpL1ZPUy8iCiBkaXN0ZmlsZXM9Imh0dHBzOi8v Z2l0aHViLmNvbS9vcGVubGluay92aXJ0dW9zby1vcGVuc291cmNlL2FyY2hpdmUvdiR7dmVyc2lv bn0udGFyLmd6IgotY2hlY2tzdW09M2U0ODA3ZTk0MDk4YjgyNjVmOGNmMDA4NjdkMTIxNWJiMWU5 ZDBkMjc0ODc4ZTU5YTQyMDc0MmQyZGU0NzFjMgorY2hlY2tzdW09MDM3OWM2MGNiMmVhNGZlZDcw ZWUzYWMzZjgwOGU1Y2M5Mjk4ZTQ4ZGRjZDhkMGY0ZDhjZDkyNzExYTQzZTdlNQogIyBjYW5ub3Qg ZXhlY3V0ZSBiaW5hcnkgZmlsZTogRXhlYyBmb3JtYXQgZXJyb3IKIG5vY3Jvc3M9Imh0dHBzOi8v YnVpbGQudm9pZGxpbnV4Lm9yZy9idWlsZGVycy9hcm12NmxfYnVpbGRlci9idWlsZHMvMjkxODcv c3RlcHMvc2hlbGxfMy9sb2dzL3N0ZGlvIgogCkBAIC0zMSw5ICszMiw3IEBAIHByZV9jb25maWd1 cmUoKSB7CiB9CiAKIGRvX2NvbmZpZ3VyZSgpIHsKLQkuL2NvbmZpZ3VyZSAke2NvbmZpZ3VyZV9h cmdzfSAtLXdpdGhvdXQtaW50ZXJuYWwtemxpYiAtLXdpdGgtcmVhZGxpbmUgXAotCQktLXdpdGgt bGF5b3V0PWRlYmlhbiBcCi0JCS0tcHJvZ3JhbS10cmFuc2Zvcm0tbmFtZT0ncy9pc3FsJCQvaXNx bC12dC87cy9pc3Fsdy9pc3Fsdy12dC8nCisJLi9jb25maWd1cmUgJHtjb25maWd1cmVfYXJnc30g LS1wcm9ncmFtLXRyYW5zZm9ybS1uYW1lPSdzL2lzcWwkJC9pc3FsLXZ0LztzL2lzcWx3L2lzcWx3 LXZ0LycKIH0KIAogcG9zdF9pbnN0YWxsKCkgewpAQCAtNDUsOCArNDQsNiBAQCBwb3N0X2luc3Rh bGwoKSB7CiAJcm0gJHtERVNURElSfS91c3IvbGliL3ZpcnRvZGJjX3Iue2Esc299CiAJcm0gJHtE RVNURElSfS91c3IvbGliL3ZpcnRvZGJjdS57YSxzb30KIAlybSAke0RFU1RESVJ9L3Vzci9saWIv dmlydG9kYmN1X3Iue2Esc299Ci0JIyByZW1vdmUgc3RhdGljIGxpYnMuCi0Jcm0gJHtERVNURElS fS91c3IvbGliL3ZpcnR1b3NvLW9wZW5zb3VyY2UtJHt2ZXJzaW9uJSUuKn0vaG9zdGluZy8qLmEK IH0KIAogdmlydHVvc28tYmFzZV9wYWNrYWdlKCkgewpAQCAtNjEsNyArNTgsNyBAQCB2aXJ0dW9z by1iYXNlX3BhY2thZ2UoKSB7CiAJCQlpbnN0YWxsIC1EbTc1NSAke3dya3NyY30vYmluc3JjL3Rl c3RzLyRiaW4gXAogCQkJCSR7UEtHREVTVERJUn0vdXNyL2Jpbi8ke2Jpbn0tdnQKIAkJZG9uZQot CQkjIFJlbW92ZSBzdGF0aWMgbGlicyBhbmQgbGlidG9vbCBhcmNoaXZlcy4KLQkJcm0gLWYgJHtQ S0dERVNURElSfS91c3IvbGliLyoue2EsbGF9CisJCSMgUmVtb3ZlIGxpYnRvb2wgYXJjaGl2ZXMK KwkJcm0gLWYgJHtQS0dERVNURElSfS91c3IvbGliLyoubGEKIAl9CiB9Cg== --===============4237114880592899036==--