From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: - Import archer-tromey-python. Date: Sat, 27 Jun 2026 23:54:43 GMT Message-ID: <178260448309.1.11981819056414444226.rpms-gdb-20f9f675affd@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 20f9f675affd5b40bff9c4c6b53067bf1dfd99a4 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogMjBmOWY2NzVhZmZkNWI0MGJmZjljNGM2YjUzMDY3YmYxZGZk OTlhNAogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3Jh cHJvamVjdC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMTAtMDctMjJUMTA6NDk6NTgrMDA6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzg4NjQvLTM1OTEgaW4gNiBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvMjBm OWY2NzVhZmZkNWI0MGJmZjljNGM2YjUzMDY3YmYxZGZkOTlhND9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICAtIEltcG9ydCBhcmNoZXItdHJv bWV5LXB5dGhvbi4KLSBJbXBvcnQgYXJjaGVyLXRyb21leS1vcHRpb25hbC1wc3ltdGFiIChhcyBw cmVzZW50IGluIEZTRiBHREIgcG9zdC03LjIpLgotIFByb3ZpZGUgL3Vzci9iaW4vZ2RiLWFkZC1p bmRleCBmb3IgcnBtLWJ1aWxkIChUb20gVHJvbWV5KS4KCi0tLQpkaWZmIC0tZ2l0IGEvZ2RiLTYu My1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5w YXRjaAppbmRleCBjMmYwZWE4Li4wYmRmOTQ4IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZl ci0yMDA1MDkwNy5wYXRjaAorKysgYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApA QCAtMTEsMTAgKzExLDEwIEBACiAKICAgICAgICAgKiBnZGIudGV4aW5mbyAoRmlsZSBPcHRpb25z KTogRG9jdW1lbnQgLS1yZWFkbmV2ZXIuCiAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9kb2MvZ2RiLnRleGluZm8KK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9kb2MvZ2Ri LnRleGluZm8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2Rv Yy9nZGIudGV4aW5mbwkyMDEwLTA3LTAxIDE5OjQwOjA0LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTA3LTEyIDEwOjQxOjEx LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZG9jL2dk Yi50ZXhpbmZvCTIwMTAtMDctMjIgMTE6NTc6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMDctMjIgMTE6NTc6MzQuMDAw MDAwMDAwICswMjAwCiBAQCAtOTk4LDYgKzk5OCwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUn cyBlbnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5j cmVtZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwg YnV0IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KQEAgLTI4LDExICsyOCwxMSBAQCBJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJs ZQogIAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L21haW4uYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL21haW4uYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDctMTIgMTA6 MTc6MjYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbWFpbi5j CTIwMTAtMDctMTIgMTA6NDE6MzQuMDAwMDAwMDAwICswMjAwCi1AQCAtMzg4LDYgKzM4OCw3IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmln L2dkYi9tYWluLmMJMjAxMC0wNy0yMiAxMTo1NzoxMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4xLjkwLjIwMTAwNzIxL2dkYi9tYWluLmMJMjAxMC0wNy0yMiAxMTo1Nzo0OS4wMDAwMDAwMDAg KzAyMDAKK0BAIC0zOTEsNiArMzkxLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAg ICAgICB7InhkYiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRi eCIsIG5vX2FyZ3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBu b19hcmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDE4ICs0MCwxOCBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9f YXJndW1lbnQsICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5v X2FyZ3VtZW50LCAmcXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQs IDF9LAotQEAgLTk4MCw2ICs5ODEsNyBAQCBPcHRpb25zOlxuXG5cCi0gICBmcHV0c191bmZpbHRl cmVkIChfKCIgZmlsZS5cblwKK0BAIC0xMDM4LDYgKzEwMzksNyBAQCBPcHRpb25zOlxuXG5cCisg ICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHBy aW50IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAg RnVsbHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogKyAgLS1yZWFkbmV2 ZXIgICAgICAgIERvIG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKICAiKSwgc3RyZWFtKTsKICAg IGZwdXRzX3VuZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklMRSBh cyBzeW1ib2wgZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3N5 bWZpbGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3lt ZmlsZS5jCTIwMTAtMDYtMDMgMDE6MDE6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvc3ltZmlsZS5jCTIwMTAtMDctMTIgMTA6NDE6MTEuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0wNy0y MiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9z eW1maWxlLmMJMjAxMC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC04MCw2ICs4 MCw3IEBAIHN0YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAvKiBH bG9iYWwgdmFyaWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwpAQCAtNjAsMTkgKzYwLDE5IEBA IEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmMKICAKICAvKiBFeHRlcm5h bCB2YXJpYWJsZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAqLwogIAotSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MjEvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMTIgMTA6 NDM6NTMuMDAwMDAwMDAwICswMjAwCi1AQCAtNTEsNiArNTEsNyBAQAotICNpbmNsdWRlICJ0eXBl cHJpbnQuaCIKLSAjaW5jbHVkZSAianYtbGFuZy5oIgorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEu b3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjIgMTE6NTc6MTAuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjIgMTE6 NTg6MDUuMDAwMDAwMDAwICswMjAwCitAQCAtNTMsNiArNTMsNyBAQAogICNpbmNsdWRlICJwc3lt cHJpdi5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgiCisgI2luY2x1ZGUgImdkYl9zdGF0Lmgi CiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlICJn ZGJfc3RyaW5nLmgiCi1AQCAtMTE2MSw4ICsxMTYyLDkgQEAgZHdhcmYyX2hhc19pbmZvIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTEyODIsOCArMTI4Myw5IEBAIGR3YXJmMl9oYXNfaW5m byAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICBiZmRfbWFwX292ZXJfc2VjdGlvbnMg KG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMsIE5VTEwpOwogICAgICAgIGR3 YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KQEAgLTg0LDEwICs4 NCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgfQog IAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2FuIGVpdGhlciBsb29rIGZvciAiLjxu YW1lPiIsIG9yIGZvcgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RvcC5oCitJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdG9wLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdG9wLmgJMjAxMC0wNy0xMiAxMDo0 MToxMS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3Rv cC5oCTIwMTAtMDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4y MDEwMDcyMS9nZGIvdG9wLmgJMjAxMC0wNy0yMiAxMTo1NzozNC4wMDAwMDAwMDAgKzAyMDAKIEBA IC02MSw2ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNoYXIgKik7CiAgCiAgLyog RnJvbSByYW5kb20gcGxhY2VzLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItNi42LWJ1aWxkaWQtbG9j YXRlLXJwbS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCmluZGV4IDgy NzE5OTIuLmUxMWZiM2MgMTAwNjQ0Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBh dGNoCisrKyBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCkBAIC0xLDcgKzEsNyBA QAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2V2ZW50LXRvcC5jCitJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvZXZlbnQtdG9wLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4x LjkwLjIwMTAwNzExLm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXZlbnQtdG9wLmMJMjAx MC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIx Lm9yaWcvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMDYtMjYgMDg6NDQ6NDcuMDAwMDAwMDAwICswMjAw CisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZXZlbnQtdG9wLmMJMjAxMC0wNy0yMiAxMTo1 ODoyNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0zMyw2ICszMyw3IEBACiAgI2luY2x1ZGUgImNsaS9j bGktc2NyaXB0LmgiICAgICAvKiBmb3IgcmVzZXRfY29tbWFuZF9uZXN0X2RlcHRoICovCiAgI2lu Y2x1ZGUgIm1haW4uaCIKQEAgLTI4LDEwICsyOCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvZXZlbnQtdG9wLmMKICAgIC8qIEVhY2ggaW50ZXJwcmV0ZXIgaGFzIGl0cyBvd24g cnVsZXMgb24gZGlzcGxheWluZyB0aGUgY29tbWFuZAogICAgICAgcHJvbXB0LiAgKi8KICAgIGlm ICghY3VycmVudF9pbnRlcnBfZGlzcGxheV9wcm9tcHRfcCAoKSkKLUluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi9lbGZyZWFkLmMKK0luZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9l bGZyZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2Vs ZnJlYWQuYwkyMDEwLTA3LTEyIDExOjMwOjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2VsZnJlYWQuYwkyMDEwLTA3LTEyIDExOjM3OjA0LjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTAtMDct MjIgMTE6NTg6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv ZWxmcmVhZC5jCTIwMTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtNDIsNiAr NDIsNyBAQAogICNpbmNsdWRlICJnZGJjb3JlLmgiCiAgI2luY2x1ZGUgImdkYmNtZC5oIgpAQCAt NDAsNyArNDAsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZWxmcmVhZC5jCiAg CiAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7CiAgCi1AQCAtMTM2OCw4 ICsxMzY5LDM1MyBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxkX2lkICpiCitA QCAtMTM3MSw4ICsxMzcyLDM1MyBAQCBidWlsZF9pZF90b19maWxlbmFtZSAoc3RydWN0IGJ1aWxk X2lkICpiCiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKQEAgLTM5NSw3ICszOTUsNyBAQCBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZWxmcmVhZC5jCiAgICAgYXZvaWRhbmNlLiAgKi8K ICAKICBzdHJ1Y3QgbWlzc2luZ19maWxlcGFpcgotQEAgLTE0MjMsMTEgKzE3NjksMTcgQEAgbWlz c2luZ19maWxlcGFpcl9jaGFuZ2UgKHZvaWQpCitAQCAtMTQyNiwxMSArMTc3MiwxNyBAQCBtaXNz aW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKICAgICAgICAvKiBBbGwgdGhlaXIgbWVtb3J5IGNh bWUganVzdCBmcm9tIG1pc3NpbmdfZmlsZXBhaXJfT0JTVEFDSy4gICovCiAgICAgICAgbWlzc2lu Z19maWxlcGFpcl9oYXNoID0gTlVMTDsKICAgICAgfQpAQCAtNDEzLDcgKzQxMyw3IEBAIEluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9lbGZyZWFkLmMKICAgIG1pc3NpbmdfZmlsZXBhaXJf Y2hhbmdlICgpOwogIH0KICAKLUBAIC0xNDk0LDE0ICsxODQ2LDM0IEBAIGRlYnVnX3ByaW50X21p c3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKK0BAIC0xNDk3LDE0ICsxODQ5LDM0IEBAIGRlYnVn X3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJpbmFyeSwKICAKICAgICpzbG90ID0gbWlzc2lu Z19maWxlcGFpcjsKICAKQEAgLTQ1NSwxMSArNDU1LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIw MTAwNzExL2dkYi9lbGZyZWFkLmMKICB9CiAgCiAgc3RhdGljIGNoYXIgKgotSW5kZXg6IGdkYi03 LjEuOTAuMjAxMDA3MTEvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEv Z2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvc3ltZmlsZS5oCTIwMTAtMDctMTIgMTE6MDY6MTguMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvc3ltZmlsZS5oCTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAw MDAwICswMjAwCi1AQCAtNTY4LDYgKzU2OCw3IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1 aWxkX2lkX2FkZHJfZ2UKKy0tLSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3N5bWZpbGUu aAkyMDEwLTA3LTIyIDExOjU4OjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAx MDA3MjEvZ2RiL3N5bWZpbGUuaAkyMDEwLTA3LTIyIDExOjU4OjI0LjAwMDAwMDAwMCArMDIwMAor QEAgLTU3Nyw2ICs1NzcsNyBAQCBleHRlcm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRy X2dlCiAgZXh0ZXJuIGNoYXIgKmJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQg KmJ1aWxkX2lkLAogIAkJCQkgICBjaGFyICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3Vm Zml4KTsKICBleHRlcm4gdm9pZCBkZWJ1Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5h cnksIGNvbnN0IGNoYXIgKmRlYnVnKTsKQEAgLTQ2NywxMSArNDY3LDExIEBAIEluZGV4OiBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9zeW1maWxlLmgKICAKICAvKiBGcm9tIGR3YXJmMnJlYWQuYyAq LwogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4 cAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCTIwMTAtMDctMTIgMTE6MDU6NTcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDctMTIgMTE6Mzc6 MDQuMDAwMDAwMDAwICswMjAwCi1AQCAtMTM1Myw3ICsxMzUzLDcgQEAgcHJvYyBkZWZhdWx0X2dk Yl9zdGFydCB7IH0geworLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvdGVzdHN1aXRl L2xpYi9nZGIuZXhwCTIwMTAtMDctMjIgMTE6NTg6MTQuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMDctMjIgMTE6 NTg6MjQuMDAwMDAwMDAwICswMjAwCitAQCAtMTM1OSw3ICsxMzU5LDcgQEAgcHJvYyBkZWZhdWx0 X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0 byAwLiIKICAJfQogICAgICB9CkBAIC00ODAsMTAgKzQ4MCwxMCBAQCBJbmRleDogZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQg YnVpbGQtaWQtdmVyYm9zZSAwXG4iCiAgICAgIGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJf cHJvbXB0ICQiIHsKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTA3LTEyIDExOjA1OjU3 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAJMjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5l eHAJMjAxMC0wNy0yMiAxMTo1ODoxNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIw MTAwNzIxL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMDctMjIgMTE6NTg6 MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtMjIxLDcgKzIyMSw3IEBAIHByb2MgZGVmYXVsdF9taV9n ZGJfc3RhcnQgeyBhcmdzIH0gewogIAkgICAgfQogICAgICAJfQpAQCAtNDkzLDEwICs0OTMsMTAg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9y dC5leHAKICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgog ICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJv c2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90dWkvdHVpLWludGVycC5jCitJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAx MDA3MTEub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTA1LTE4IDAwOjIxOjQzLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3R1aS90dWktaW50ZXJwLmMJ MjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkwLjIwMTAw NzIxLm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wNS0xOCAwMDoyMTo0My4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90dWkvdHVpLWludGVycC5jCTIw MTAtMDctMjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtMzAsNiArMzAsNyBAQAogICNp bmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90dWktaW8uaCIKQEAgLTUxNCwxMCAr NTE0LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90dWkvdHVpLWludGVycC5j CiAgICAgICAgLyogVGVsbCByZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBpcyBh bmQgd2hhdCBmdW5jdGlvbgogICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVyIGEg d2hvbGUgbGluZSBpcyByZWFkLiBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUgZmly c3QgcHJvbXB0LiAgKi8KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9hY2xvY2FsLm00 CitJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvYWNsb2NhbC5tNAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvYWNsb2NhbC5tNAkyMDEwLTA1LTIzIDAy OjU2OjU5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2FjbG9j YWwubTQJMjAxMC0wNy0xMiAxMTozNzowNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4xLjkw LjIwMTAwNzIxLm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1Njo1OS4wMDAwMDAw MDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2xvY2FsLm00CTIwMTAtMDct MjIgMTE6NTg6MjQuMDAwMDAwMDAwICswMjAwCiBAQCAtMTksNiArMTksMTYyIEBAIFlvdSBoYXZl IGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEkKICBJZiB5b3UgaGF2ZSBwcm9ibGVtcywg eW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBlbnRpcmVseS4KICBU byBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUgcGFja2FnZSwgdHlw aWNhbGx5IGBhdXRvcmVjb25mJy5dKV0pCkBAIC02ODEsMTAgKzY4MSwxMCBAQCBJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvYWNsb2NhbC5tNAogICMgQ29weXJpZ2h0IChDKSAyMDAyLCAy MDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICAjCiAgIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZy5pbgorSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29uZmlnLmluCTIwMTAtMDctMDYgMjE6MDM6MTEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlnLmluCTIw MTAtMDctMTIgMTE6Mzg6MzAuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcy MS5vcmlnL2dkYi9jb25maWcuaW4JMjAxMC0wNy0yMiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAK KysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9jb25maWcuaW4JMjAxMC0wNy0yMiAxMTo1ODoy NC4wMDAwMDAwMDAgKzAyMDAKIEBAIC00Niw2ICs0Niw5IEBACiAgLyogRGVmaW5lIHRvIEJGRCdz IGRlZmF1bHQgdGFyZ2V0IHZlY3Rvci4gKi8KICAjdW5kZWYgREVGQVVMVF9CRkRfVkVDCkBAIC02 OTUsNyArNjk1LDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZy5pbgog IC8qIERlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2FnZXMgdG8gdGhl IHVzZXIncyBuYXRpdmUKICAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAgI3VuZGVmIEVO QUJMRV9OTFMKLUBAIC0yMzIsNiArMjM1LDkgQEAKK0BAIC0yMzEsNiArMjM0LDkgQEAKICAvKiBE ZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlBZ VEhPTjJfNwogIApAQCAtNzA1LDEwICs3MDUsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWlu ZyB1c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2Nv bmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29u ZmlndXJlCTIwMTAtMDctMDcgMTk6MzY6MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvY29uZmlndXJlCTIwMTAtMDctMTIgMTE6Mzg6MTUuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9jb25maWd1cmUJMjAxMC0wNy0y MiAxMTo1NzowOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9j b25maWd1cmUJMjAxMC0wNy0yMiAxMTo1OToxMy4wMDAwMDAwMDAgKzAyMDAKIEBAIC02NzksNiAr Njc5LDkgQEAgUkVQT1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAgVEFSR0VUX09CUwpAQCAtNzE2 LDE4ICs3MTYsMTggQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQog K1JQTV9MSUJTCiArUlBNX0NGTEFHUwogK1BLR19DT05GSUcKKyBweXRob25kaXIKKyBHREJfREFU QURJUl9QQVRICiAgR0RCX0RBVEFESVIKLSBERUJVR0RJUgotIGFtX19mYXN0ZGVwQ0NfRkFMU0UK LUBAIC05NDUsNiArOTQ4LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKLSB3aXRoX3Nl cGFyYXRlX2RlYnVnX2RpcgorQEAgLTk0OCw2ICs5NTEsNyBAQCB3aXRoX3NlcGFyYXRlX2RlYnVn X2RpcgogIHdpdGhfZ2RiX2RhdGFkaXIKICB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCisgd2l0aF9w eXRob25kaXIKICt3aXRoX3JwbQogIGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlXzY0X2JpdF9iZmQK ICBlbmFibGVfZ2RiY2xpCi1AQCAtOTg1LDYgKzk4OSw5IEBAIExERkxBR1MKK0BAIC05ODgsNiAr OTkyLDkgQEAgTERGTEFHUwogIExJQlMKICBDUFBGTEFHUwogIENQUApAQCAtNzM3LDE2ICs3Mzcs MTYgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZQogIFlBQ0MKICBZ RkxBR1MKICBYTUtNRicKLUBAIC0xNjQ2LDYgKzE2NTMsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoK K0BAIC0xNjUzLDYgKzE2NjAsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KLSAgIC0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1Q QVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRo aXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCisgICAtLXdpdGgtcHl0aG9uZGlyICAgICAgICBpbnN0 YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KICsgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1 ZXJ5IHJwbSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCiArICAgICAg ICAgICAgICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQogICAgLS13aXRoLWxpYnVu d2luZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAogICAgLS13 aXRoLWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRo ZSB0ZXJtY2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtMTY4MSw2 ICsxNjkwLDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CitAQCAt MTY4OCw2ICsxNjk3LDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6 CiAgICBDUFBGTEFHUyAgICBDL0MrKy9PYmplY3RpdmUgQyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUu Zy4gLUk8aW5jbHVkZSBkaXI+IGlmCiAgICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGlu IGEgbm9uc3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgIENQUCAgICAgICAgIEMg cHJlcHJvY2Vzc29yCkBAIC03NTYsNyArNzU2LDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3 MTEvZ2RiL2NvbmZpZ3VyZQogICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDIENvbXBp bGVyJyBpbXBsZW1lbnRhdGlvbiB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICB0 aGUgZmlyc3QgcHJvZ3JhbSBmb3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBieWFjYycsIGB5YWNj Jy4KICAgIFlGTEFHUyAgICAgIFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFz c2VkIGJ5IGRlZmF1bHQgdG8gJFlBQ0MuCi1AQCAtNzg3OCw2ICs3ODkwLDQ4NiBAQCBfQUNFT0YK K0BAIC03OTUxLDYgKzc5NjMsNDg1IEBAIF9BQ0VPRgogIGZpCiAgCiAgCkBAIC0xMjM5LDE3ICsx MjM5LDE2IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWd1cmUKICsgICAg ZmkKICsgIGZpCiArZmkKLSsKICAKICAKLSBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVzdHN1aXRl IgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2NvbmZpZ3VyZS5hYworIAorSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2NvbmZpZ3VyZS5hYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDctMDcgMTk6MzY6 MzkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvY29uZmlndXJl LmFjCTIwMTAtMDctMTIgMTE6Mzg6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTA4LDYgKzEwOCwx OTkgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcwotICAgICAgICAg ICAgICAgW1JlbG9jYXRlZCBkaXJlY3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKLSBdKQorLS0t IGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMDctMjIgMTE6 NTc6MDkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvY29uZmln dXJlLmFjCTIwMTAtMDctMjIgMTE6NTk6MDQuMDAwMDAwMDAwICswMjAwCitAQCAtMTUyLDYgKzE1 MiwxOTggQEAgZWxzZQorIGZpCisgQUNfU1VCU1QocHl0aG9uZGlyKQogIAogKyMgSW50ZWdyYXRp b24gd2l0aCBycG0gbGlicmFyeSB0byBzdXBwb3J0IG1pc3NpbmcgZGVidWdpbmZvIHN1Z2dlc3Rp b25zLgogKyMgLS13aXRob3V0LXJwbTogRGlzYWJsZSBhbnkgcnBtIHN1cHBvcnQuCkBAIC0xNDQz LDE0ICsxNDQyLDEzIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9jb25maWd1cmUu YWMKICsgICAgZmkKICsgIGZpCiArZmkKLSsKKyAKICBBQ19DT05GSUdfU1VCRElSUyhkb2MgdGVz dHN1aXRlKQogIAotICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVybmF0aXZlIHRhcmdl dCBjb25maWd1cmF0aW9ucwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2FjaW5jbHVk ZS5tNAorSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL2FjaW5jbHVkZS5tNAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAt MDUtMjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvYWNpbmNsdWRlLm00CTIwMTAtMDctMTIgMTE6Mzc6MDQuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9hY2luY2x1ZGUubTQJMjAxMC0wNS0yNyAwNTo0 MDo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9hY2luY2x1 ZGUubTQJMjAxMC0wNy0yMiAxMTo1ODoyNC4wMDAwMDAwMDAgKzAyMDAKIEBAIC0xLDMgKzEsNSBA QAogKyMgc2VyaWFsIDEKICsKCmRpZmYgLS1naXQgYS9nZGItYXJjaGVyLnBhdGNoIGIvZ2RiLWFy Y2hlci5wYXRjaAppbmRleCBjMTRhNGJlLi42YzhjZDU2IDEwMDY0NAotLS0gYS9nZGItYXJjaGVy LnBhdGNoCisrKyBiL2dkYi1hcmNoZXIucGF0Y2gKQEAgLTIsMTggKzIsMTIyIEBAIGh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCiBodHRwOi8vc291cmNld2FyZS5v cmcvZ2RiL3dpa2kvQXJjaGVyQnJhbmNoTWFuYWdlbWVudAogCiBHSVQgc25hcHNob3Q6Ci1jb21t aXQgMGJjOWE5MzcyNWQ3YTdiY2YxZTMwZjA3MmExMmNjNTE4NmU0MWRjMgorY29tbWl0IDIwMmY0 ZDBlM2FmOGQ4YThkN2MwYjQwOGQ5ZTBhOGNiNjlmOTEyYjYKIAogYnJhbmNoIGBhcmNoZXInIC0g dGhlIG1lcmdlIG9mIGJyYW5jaGVzOgogYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhCiBhcmNoZXIt amFua3JhdG9jaHZpbC13YXRjaHBvaW50MwogYXJjaGVyLWphbmtyYXRvY2h2aWwtaWZ1bmMKIGFy Y2hlci1wbXVsZG9vbi1uZXh0LW92ZXItdGhyb3cyCi0jVE9ETzphcmNoZXItdHJvbWV5LXB5dGhv biAocG9zc2libHkgb25seSBleHRyYWN0ZWQgcGFydHMpCi0jVE9ETzphcmNoZXItdHJvbWV5LW9w dGlvbmFsLXBzeW10YWIgKG1vcmUgZnJlc2ggcGF0Y2hlcyBhcmUgYXQgZ2RiLXBhdGNoZXNAKQor YXJjaGVyLXRyb21leS1weXRob24gKG5vdCBhIG1lcmdlKQorYXJjaGVyLXRyb21leS1vcHRpb25h bC1wc3ltdGFiIChjaGVycnktcGlja2VkIGZyb20gcG9zdC03LjIgbWFzdGVyKQogI1RPRE86YXJj aGVyLXRyb21leS10aHJlYWRlZC1kd2FyZgogCiAKK2RpZmYgLS1naXQgYS9nZGIvTWFrZWZpbGUu aW4gYi9nZGIvTWFrZWZpbGUuaW4KK2luZGV4IDZkYmIyODQuLjYxMzNkYTMgMTAwNjQ0CistLS0g YS9nZGIvTWFrZWZpbGUuaW4KKysrKyBiL2dkYi9NYWtlZmlsZS5pbgorQEAgLTE2OSw2ICsxNjks MTIgQEAgVEFSR0VUX1NZU1RFTV9ST09UID0gQFRBUkdFVF9TWVNURU1fUk9PVEAKKyBUQVJHRVRf U1lTVEVNX1JPT1RfREVGSU5FID0gQFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkVACisgCisgIyBE aWQgdGhlIHVzZXIgZ2l2ZSB1cyBhIC0td2l0aC1nZGItZGF0YWRpciBvcHRpb24/CisrR0RCX0RB VEFESVJfUEFUSCA9IEBHREJfREFUQURJUl9QQVRIQAorKworKyMgVGhlIGFyZ3VtZW50IHRvIC0t d2l0aC1weXRob25kaXIuICBJZiBub3QgZ2l2ZW4sIHRoaXMgaXMKKysjIEdEQl9EQVRBRElSX1BB VEgvcHl0aG9uLgorK3B5dGhvbmRpciA9IEBweXRob25kaXJACisrCisgR0RCX0RBVEFESVIgPSBA R0RCX0RBVEFESVJACisgCisgIyBIZWxwZXIgY29kZSBmcm9tIGdudWxpYi4KK0BAIC0yOTUsMTMg KzMwMSwxMyBAQCBTVUJESVJfUFlUSE9OX1NSQ1MgPSBcCisgCXB5dGhvbi9weS1jbWQuYyBcCisg CXB5dGhvbi9weS1mcmFtZS5jIFwKKyAJcHl0aG9uL3B5LWZ1bmN0aW9uLmMgXAorKwlweXRob24v cHktaG9va3MuYyBcCisgCXB5dGhvbi9weS1pbmZlcmlvci5jIFwKKyAJcHl0aG9uL3B5LWluZnRo cmVhZC5jIFwKKyAJcHl0aG9uL3B5LWxhenktc3RyaW5nLmMgXAorIAlweXRob24vcHktb2JqZmls ZS5jIFwKKyAJcHl0aG9uL3B5LXBhcmFtLmMgXAorIAlweXRob24vcHktcHJldHR5cHJpbnQuYyBc CistCXB5dGhvbi9weS1wcm9nc3BhY2UuYyBcCisgCXB5dGhvbi9weS1zeW1ib2wuYyBcCisgCXB5 dGhvbi9weS1zeW10YWIuYyBcCisgCXB5dGhvbi9weS10eXBlLmMgXAorQEAgLTc4MCw4ICs3ODYs OCBAQCBjb25maWcvcnM2MDAwL25tLXJzNjAwMC5oIHRvcC5oIGJzZC1rdm0uaCBnZGItc3RhYnMu aCByZWdncm91cHMuaCBcCisgYW5ub3RhdGUuaCBzaW0tcmVnbm8uaCBkaWN0aW9uYXJ5LmggZGZw LmggbWFpbi5oIGZyYW1lLXVud2luZC5oCVwKKyByZW1vdGUtZmlsZWlvLmggaTM4Ni1saW51eC10 ZGVwLmggdmF4LXRkZXAuaCBvYmpjLWxhbmcuaCBcCisgc2VudGluZWwtZnJhbWUuaCBiY2FjaGUu aCBzeW1maWxlLmggd2luZG93cy10ZGVwLmggbGludXgtdGRlcC5oIFwKKy1nZGJfdXNsZWVwLmgg aml0LmggeG1sLXN5c2NhbGwuaCBhZGEtb3BlcmF0b3IuaW5jIG1pY3JvYmxhemUtdGRlcC5oIFwK Ky1wc3ltdGFiLmggcHN5bXByaXYuaAorK2dkYl91c2xlZXAuaCBqaXQuaCBweXRob24vcHl0aG9u LmggcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIFwKKyt4bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRv ci5pbmMgbWljcm9ibGF6ZS10ZGVwLmgKKyAKKyAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkg aGF2ZSBzcmNkaXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KKyAKK0BAIC0xMjk5 LDYgKzEzMDUsMTIgQEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVz CisgCSAgQ09ORklHX0xJTktTPSBcCisgCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cworIAorKy5n ZGJpbml0OiAkKHNyY2RpcikvZ2RiaW5pdC5pbiBjb25maWcuc3RhdHVzCisrCUNPTkZJR19GSUxF Uz0iLmdkYmluaXQ6Z2RiaW5pdC5pbiIgXAorKwkgIENPTkZJR19DT01NQU5EUz0gXAorKwkgIENP TkZJR19IRUFERVJTPSBcCisrCSAgJChTSEVMTCkgY29uZmlnLnN0YXR1cworKworIGNvbmZpZy5z dGF0dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgY29uZmlndXJlLnRndCBjb25maWd1cmUuaG9zdAor IAkkKFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjaworIAorQEAgLTIwMjIsNiArMjAzNCwx MCBAQCBweS1mdW5jdGlvbi5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LWZ1bmN0aW9uLmMKKyAJJChD T01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rpb24uYwor IAkkKFBPU1RDT01QSUxFKQorIAorK3B5LWhvb2tzLm86ICQoc3JjZGlyKS9weXRob24vcHktaG9v a3MuYworKwkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1o b29rcy5jCisrCSQoUE9TVENPTVBJTEUpCisrCisgcHktaW5mZXJpb3IubzogJChzcmNkaXIpL3B5 dGhvbi9weS1pbmZlcmlvci5jCisgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2Rp cikvcHl0aG9uL3B5LWluZmVyaW9yLmMKKyAJJChQT1NUQ09NUElMRSkKK0BAIC0yMDcwLDYgKzIw ODYsMzYgQEAgcHktdmFsdWUubzogJChzcmNkaXIpL3B5dGhvbi9weS12YWx1ZS5jCisgCSQoQ09N UElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMKKyAJJChQ T1NUQ09NUElMRSkKKyAKKysjIEFsbCBweXRob24gbGlicmFyeSBmaWxlcywgd2l0aCB0aGUgInB5 dGhvbi9saWIiIHN0cmlwcGVkIG9mZi4KKysjIE5vdGUgdGhhdCB3ZSBzaG91bGQgb25seSBpbnN0 YWxsIGZpbGVzIGluIHRoZSAiZ2RiIiBtb2R1bGUuCisrUFlfRklMRVMgPSBnZGIvRnJhbWVJdGVy YXRvci5weSBnZGIvRnJhbWVXcmFwcGVyLnB5IGdkYi9jb21tYW5kL2FsaWFzLnB5IFwKKysgICAg Z2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5IGdkYi9jb21tYW5kL3JlcXVpcmUucHkgXAorKyAgICBn ZGIvY29tbWFuZC9wYWhvbGUucHkgZ2RiL2NvbW1hbmQvdXB0by5weSBnZGIvY29tbWFuZC9fX2lu aXRfXy5weSBcCisrICAgIGdkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkgZ2RiL2NvbW1hbmQv c2F2ZV9icmVha3BvaW50cy5weSBcCisrICAgIGdkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkgZ2Ri L2Z1bmN0aW9uL2luX3Njb3BlLnB5IFwKKysgICAgZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5IGdk Yi9iYWNrdHJhY2UucHkgZ2RiL19faW5pdF9fLnB5CisrCisrIyBJbnN0YWxsIHRoZSBQeXRob24g bGlicmFyeS4gIFB5dGhvbiBsaWJyYXJ5IGZpbGVzIGdvIHVuZGVyCisrIyAkKHB5dGhvbmRpciku CisraW5zdGFsbC1weXRob246CisrCWZpbGVzPSckKFBZX0ZJTEVTKSc7IGZvciBmaWxlIGluICQk ZmlsZXM7IGRvIFwKKysJICBkaXI9YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdg OyBcCisrCSAgJChTSEVMTCkgJChzcmNkaXIpLy4uL21raW5zdGFsbGRpcnMgJChERVNURElSKSQo cHl0aG9uZGlyKS8kJGRpcjsgXAorKwkgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvcHl0aG9u L2xpYi8kJGZpbGUgJChERVNURElSKSQocHl0aG9uZGlyKS8kJGZpbGU7IFwKKysJZG9uZQorKwor KyMgT3RoZXIgcGFja2FnZXMgbWF5IGhhdmUgdGhlaXIgZmlsZXMgaW5zdGFsbGVkIGluICQocHl0 aG9uZGlyKS4KKyt1bmluc3RhbGwtcHl0aG9uOgorKwlmaWxlcz0nJChQWV9GSUxFUyknOyBmb3Ig ZmlsZSBpbiAkJGZpbGVzOyBkbyBcCisrCSAgc2xhc2hkaXI9YGVjaG8gIi8kJGZpbGUiIHwgc2Vk ICdzLC9bXi9dKiQkLCwnYDsgXAorKwkgIHJtIC1mICQoREVTVERJUikkKHB5dGhvbmRpcikvJCRm aWxlOyBcCisrCSAgd2hpbGUgdGVzdCAieCQkZmlsZSIgIT0gIngkJHNsYXNoZGlyIjsgZG8gXAor KwkgICAgcm1kaXIgMj4vZGV2L251bGwgIiQoREVTVERJUikkKHB5dGhvbmRpcikkJHNsYXNoZGly IjsgXAorKwkgICAgZmlsZT0iJCRzbGFzaGRpciI7IFwKKysJICAgIHNsYXNoZGlyPWBlY2hvICIk JGZpbGUiIHwgc2VkICdzLC9bXi9dKiQkLCwnYDsgXAorKwkgIGRvbmUgXAorKwlkb25lCisrCisg IworICMgRGVwZW5kZW5jeSB0cmFja2luZy4gIE1vc3Qgb2YgdGhpcyBpcyBjb25kaXRpb25hbCBv biBHTlUgTWFrZSBiZWluZworICMgZm91bmQgYnkgY29uZmlndXJlOyBpZiBHTlUgTWFrZSBpcyBu b3QgZm91bmQsIHdlIGZhbGwgYmFjayB0byBhCiBkaWZmIC0tZ2l0IGEvZ2RiL2FkYS1sYW5nLmMg Yi9nZGIvYWRhLWxhbmcuYwogaW5kZXggMWQ0YzM4Yi4uY2FmYjg4ZSAxMDA2NDQKIC0tLSBhL2dk Yi9hZGEtbGFuZy5jCkBAIC0xODUsNyArMjg5LDcgQEAgaW5kZXggMDM0OGJmNC4uZjAxZDBlZSAx MDA2NDQKICAKICAvKiBSZXR1cm4gdGhlIGlubmVybW9zdCBzdGFjayBmcmFtZSBleGVjdXRpbmcg aW5zaWRlIG9mIEJMT0NLLAogZGlmZiAtLWdpdCBhL2dkYi9icmVha3BvaW50LmMgYi9nZGIvYnJl YWtwb2ludC5jCi1pbmRleCA0YWZmZTBhLi41MjEwNWI1IDEwMDY0NAoraW5kZXggNGFmZmUwYS4u NTg0YzY4ZSAxMDA2NDQKIC0tLSBhL2dkYi9icmVha3BvaW50LmMKICsrKyBiL2dkYi9icmVha3Bv aW50LmMKIEBAIC02Miw2ICs2Miw3IEBACkBAIC0yMjcsNiArMzMxLDE1IEBAIGluZGV4IDRhZmZl MGEuLjUyMTA1YjUgMTAwNjQ0CiAgLyogQXNzdW1pbmcgd2UncmUgY3JlYXRpbmcgYSBzdGF0aWMg dHJhY2Vwb2ludCwgZG9lcyBTIGxvb2sgbGlrZSBhCiAgICAgc3RhdGljIHRyYWNlcG9pbnQgbWFy a2VyIHNwZWMgKCItbSBNQVJLRVJfSUQiKT8gICovCiAgI2RlZmluZSBpc19tYXJrZXJfc3BlYyhz KQkJCQkJCVwKK0BAIC00MzAsNyArNDQxLDcgQEAgc3RhdGljIGludCB0cmFjZXBvaW50X2NvdW50 OworIAorIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYnJlYWtwb2ludF9zZXRfY21k bGlzdDsKKyBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmJyZWFrcG9pbnRfc2hvd19j bWRsaXN0OworLXN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqc2F2ZV9jbWRsaXN0Owor K3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7CisgCisgLyogUmV0dXJuIHdo ZXRoZXIgYSBicmVha3BvaW50IGlzIGFuIGFjdGl2ZSBlbmFibGVkIGJyZWFrcG9pbnQuICAqLwor IHN0YXRpYyBpbnQKIEBAIC0xMjUyLDYgKzEyNjMsMjIgQEAgd2F0Y2hwb2ludF9pbl90aHJlYWRf c2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpiKQogIAkgICAgICAmJiAhaXNfZXhlY3V0aW5nIChp bmZlcmlvcl9wdGlkKSkpOwogIH0KQEAgLTEyMDcsNiArMTMyMCwzOTUgQEAgaW5kZXggOTI2YWUy Zi4uYTU5Yjk2NSAxMDA2NDQKICAJJiYgIVRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJ TkVEICh0eXBlKSkKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiJWQiLAogIAkJCSAgKFRZ UEVfTEVOR1RIICh0eXBlKQorZGlmZiAtLWdpdCBhL2dkYi9jb25maWcuaW4gYi9nZGIvY29uZmln LmluCitpbmRleCAxZmM0NTdkLi5mNGM4NDZhIDEwMDY0NAorLS0tIGEvZ2RiL2NvbmZpZy5pbgor KysrIGIvZ2RiL2NvbmZpZy5pbgorQEAgLTUwLDExICs1MCwxMCBAQAorICAgIGxhbmd1YWdlIGlz IHJlcXVlc3RlZC4gKi8KKyAjdW5kZWYgRU5BQkxFX05MUworIAorLS8qIGxvb2sgZm9yIGdsb2Jh bCBzZXBhcmF0ZSBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJUi9nZGJdICovCisrLyog R2xvYmFsIGRpcmVjdG9yeSBmb3IgR0RCIGRhdGEgZmlsZXMuICovCisgI3VuZGVmIEdEQl9EQVRB RElSCisgCistLyogRGVmaW5lIGlmIHRoZSBnZGItZGF0YWRpciBkaXJlY3Rvcnkgc2hvdWxkIGJl IHJlbG9jYXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC4KKy0gICAqLworKy8qIERlZmluZSBpZiBHREIg ZGF0YWRpciBzaG91bGQgYmUgcmVsb2NhdGVkIHdoZW4gR0RCIGlzIG1vdmVkLiAqLworICN1bmRl ZiBHREJfREFUQURJUl9SRUxPQ0FUQUJMRQorIAorIC8qIERlZmluZSB0byBiZSBhIHN0cmluZyBu YW1pbmcgdGhlIGRlZmF1bHQgaG9zdCBjaGFyYWN0ZXIgc2V0LiAqLworQEAgLTc2OSw2ICs3Njgs OSBAQAorICAgICdwdHJkaWZmX3QnLiAqLworICN1bmRlZiBQVFJESUZGX1RfU1VGRklYCisgCisr LyogRGVmaW5lIHRvIGluc3RhbGwgcGF0aCBmb3IgUHl0aG9uIHNvdXJjZXMgKi8KKysjdW5kZWYg UFlUSE9ORElSCisrCisgLyogRGVmaW5lIGlmIHRoZSBweXRob24gZGlyZWN0b3J5IHNob3VsZCBi ZSByZWxvY2F0ZWQgd2hlbiBHREIgaXMgbW92ZWQuICovCisgI3VuZGVmIFBZVEhPTl9QQVRIX1JF TE9DQVRBQkxFCisgCitkaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZ3VyZSBiL2dkYi9jb25maWd1cmUK K2luZGV4IDk0ZWI5YjkuLmU0OWRhMDggMTAwNzU1CistLS0gYS9nZGIvY29uZmlndXJlCisrKysg Yi9nZGIvY29uZmlndXJlCitAQCAtNjc5LDYgKzY3OSw4IEBAIFJFUE9SVF9CVUdTX1RPCisgUEtH VkVSU0lPTgorIFRBUkdFVF9PQlMKKyBzdWJkaXJzCisrcHl0aG9uZGlyCisrR0RCX0RBVEFESVJf UEFUSAorIEdEQl9EQVRBRElSCisgREVCVUdESVIKKyBhbV9fZmFzdGRlcENDX0ZBTFNFCitAQCAt OTQ1LDYgKzk0Nyw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCisgd2l0aF9zZXBhcmF0 ZV9kZWJ1Z19kaXIKKyB3aXRoX2dkYl9kYXRhZGlyCisgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwor K3dpdGhfcHl0aG9uZGlyCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfNjRfYml0X2JmZAorIGVu YWJsZV9nZGJjbGkKK0BAIC0xNjQ2LDYgKzE2NDksMTAgQEAgT3B0aW9uYWwgUGFja2FnZXM6Cisg ICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCisgICAtLXdpdGgtcmVsb2Nh dGVkLXNvdXJjZXM9UEFUSAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxs eSByZWxvY2F0ZSB0aGlzIHBhdGggZm9yIHNvdXJjZSBmaWxlcworKyAgLS13aXRoLWdkYi1kYXRh ZGlyICAgICAgbG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRo CisrICAgICAgICAgICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGJdCisrICAtLXdpdGgtcHl0 aG9uZGlyICAgICAgICBpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiL3B5dGhvbl0KKyAgIC0td2l0aC1s aWJ1bndpbmQgICAgICAgIHVzZSBsaWJ1bndpbmQgZnJhbWUgdW53aW5kaW5nIHN1cHBvcnQKKyAg IC0td2l0aC1jdXJzZXMgICAgICAgICAgIHVzZSB0aGUgY3Vyc2VzIGxpYnJhcnkgaW5zdGVhZCBv ZiB0aGUgdGVybWNhcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeQorQEAgLTc4 NzgsNiArNzg4NSw3MyBAQCBfQUNFT0YKKyBmaQorIAorIAorKyMgR0RCJ3MgZGF0YWRpciByZWxv Y2F0aW9uCisrCisrZ2RiZGF0YWRpcj0ke2RhdGFkaXJ9L2dkYgorKworKworKyMgQ2hlY2sgd2hl dGhlciAtLXdpdGgtZ2RiLWRhdGFkaXIgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9nZGJf ZGF0YWRpcitzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2dkYl9kYXRhZGly OyBnZGJkYXRhZGlyPSIke3dpdGh2YWx9IgorK2ZpCisrCisrCisrCisrICB0ZXN0ICJ4JHByZWZp eCIgPSB4Tk9ORSAmJiBwcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKysgIHRlc3QgIngkZXhl Y19wcmVmaXgiID0geE5PTkUgJiYgZXhlY19wcmVmaXg9JyR7cHJlZml4fScKKysgIGFjX2RlZmlu ZV9kaXI9YGV2YWwgZWNobyAkZ2RiZGF0YWRpcmAKKysgIGFjX2RlZmluZV9kaXI9YGV2YWwgZWNo byAkYWNfZGVmaW5lX2RpcmAKKysKKytjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisrI2RlZmlu ZSBHREJfREFUQURJUiAiJGFjX2RlZmluZV9kaXIiCisrX0FDRU9GCisrCisrCisrCisraWYgdGVz dCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtw cmVmaXh9JzsgdGhlbgorKyAgaWYgdGVzdCAieCRwcmVmaXgiID0geE5PTkU7IHRoZW4KKysgICAg dGVzdF9wcmVmaXg9L3Vzci9sb2NhbAorKyAgZWxzZQorKyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4 CisrICBmaQorK2Vsc2UKKysgIHRlc3RfcHJlZml4PSRleGVjX3ByZWZpeAorK2ZpCisrCisrY2Fz ZSAke2dkYmRhdGFkaXJ9IGluCisrICAiJHt0ZXN0X3ByZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8i KnxcCisrICAnJHtleGVjX3ByZWZpeH0nfCcke2V4ZWNfcHJlZml4fS8nKikKKysKKyskYXNfZWNo byAiI2RlZmluZSBHREJfREFUQURJUl9SRUxPQ0FUQUJMRSAxIiA+PmNvbmZkZWZzLmgKKysKKysg IDs7CisrZXNhYworK0dEQl9EQVRBRElSX1BBVEg9JHtnZGJkYXRhZGlyfQorKworKworKworKyMg Q2hlY2sgd2hldGhlciAtLXdpdGgtcHl0aG9uZGlyIHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dp dGhfcHl0aG9uZGlyK3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfcHl0aG9u ZGlyOyBweXRob25kaXI9IiR7d2l0aHZhbH0iCisrZWxzZQorKyAgcHl0aG9uZGlyPW5vCisrZmkK KysKKysKKysjIElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90aGVy d2lzZSwgY29tcHV0ZSBpdCBhdAorKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHktcmVs b2NhdGFibGUgZGF0YWRpci4KKytpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4KKysg IHB5dGhvbmRpcj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCisrZWxzZQorKworK2NhdCA+ PmNvbmZkZWZzLmggPDxfQUNFT0YKKysjZGVmaW5lIFBZVEhPTkRJUiAiJHB5dGhvbmRpciIKKytf QUNFT0YKKysKKytmaQorKworKworKworIAorIAorIHN1YmRpcnM9IiRzdWJkaXJzIGRvYyB0ZXN0 c3VpdGUiCitAQCAtMTA4ODEsNiArMTA5NTUsOCBAQCAkYXNfZWNobyAiI2RlZmluZSBIQVZFX1BZ VEhPTiAxIiA+PmNvbmZkZWZzLmgKKyAgIENPTkZJR19PQlM9IiRDT05GSUdfT0JTIFwkKFNVQkRJ Ul9QWVRIT05fT0JTKSIKKyAgIENPTkZJR19ERVBTPSIkQ09ORklHX0RFUFMgXCQoU1VCRElSX1BZ VEhPTl9ERVBTKSIKKyAgIENPTkZJR19TUkNTPSIkQ09ORklHX1NSQ1MgXCQoU1VCRElSX1BZVEhP Tl9TUkNTKSIKKysgIENPTkZJR19JTlNUQUxMPSIkQ09ORklHX0lOU1RBTEwgaW5zdGFsbC1weXRo b24iCisrICBDT05GSUdfVU5JTlNUQUxMPSIkQ09ORklHX1VOSU5TVEFMTCB1bmluc3RhbGwtcHl0 aG9uIgorICAgRU5BQkxFX0NGTEFHUz0iJEVOQUJMRV9DRkxBR1MgXCQoU1VCRElSX1BZVEhPTl9D RkxBR1MpIgorIAorICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRob24gY29kZSAodGFr ZW4gZnJvbSBweXRob24tY29uZmlnIC0tY2ZsYWdzKS4KK2RpZmYgLS1naXQgYS9nZGIvY29uZmln dXJlLmFjIGIvZ2RiL2NvbmZpZ3VyZS5hYworaW5kZXggOTMwMDU0NC4uMzgwNDczYSAxMDA2NDQK Ky0tLSBhL2dkYi9jb25maWd1cmUuYWMKKysrKyBiL2dkYi9jb25maWd1cmUuYWMKK0BAIC0xMDgs NiArMTA4LDUxIEBAIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXM9UEFU SF0sIFthdXRvbWF0aWNhbGx5IHJlbG9jYXRlIHRoaXMgcGF0CisgICAgICAgICAgICAgICBbUmVs b2NhdGVkIGRpcmVjdG9yeSBmb3Igc291cmNlIGZpbGVzLiBdKQorIF0pCisgCisrIyBHREIncyBk YXRhZGlyIHJlbG9jYXRpb24KKysKKytnZGJkYXRhZGlyPSR7ZGF0YWRpcn0vZ2RiCisrCisrQUNf QVJHX1dJVEgoW2dkYi1kYXRhZGlyXSwKKysgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWdkYi1k YXRhZGlyXSwKKysgICAgICAgICAgICAgICAgICBbbG9vayBmb3IgZ2xvYmFsIHNlcGFyYXRlIGRh dGEgZmlsZXMgaW4gdGhpcyBwYXRoIFtEQVRBRElSL2dkYl1dKV0sIFtnZGJkYXRhZGlyPSIke3dp dGh2YWx9Il0pCisrCisrQUNfREVGSU5FX0RJUihHREJfREFUQURJUiwgZ2RiZGF0YWRpciwKKysg ICAgICAgICAgICAgIFtHbG9iYWwgZGlyZWN0b3J5IGZvciBHREIgZGF0YSBmaWxlcy4gXSkKKysK KytpZiB0ZXN0ICJ4JGV4ZWNfcHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgi ID0gJ3gke3ByZWZpeH0nOyB0aGVuCisrICBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhl bgorKyAgICB0ZXN0X3ByZWZpeD0vdXNyL2xvY2FsCisrICBlbHNlCisrICAgIHRlc3RfcHJlZml4 PSRwcmVmaXgKKysgIGZpCisrZWxzZQorKyAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJlZml4CisrZmkK KysKKytjYXNlICR7Z2RiZGF0YWRpcn0gaW4KKysgICIke3Rlc3RfcHJlZml4fSJ8IiR7dGVzdF9w cmVmaXh9LyIqfFwKKysgICcke2V4ZWNfcHJlZml4fSd8JyR7ZXhlY19wcmVmaXh9LycqKQorKyAg ICBBQ19ERUZJTkUoR0RCX0RBVEFESVJfUkVMT0NBVEFCTEUsIDEsIFtEZWZpbmUgaWYgR0RCIGRh dGFkaXIgc2hvdWxkIGJlIHJlbG9jYXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC5dKQorKyAgOzsKKytl c2FjCisrR0RCX0RBVEFESVJfUEFUSD0ke2dkYmRhdGFkaXJ9CisrQUNfU1VCU1QoR0RCX0RBVEFE SVJfUEFUSCkKKysKKytBQ19BUkdfV0lUSChbcHl0aG9uZGlyXSwKKysgIFtBU19IRUxQX1NUUklO RyhbLS13aXRoLXB5dGhvbmRpcl0sCisrICAgICAgICAgICAgICAgICAgW2luc3RhbGwgUHl0aG9u IGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoIFtEQVRBRElSL2dkYi9weXRob25dXSldLCBbcHl0aG9u ZGlyPSIke3dpdGh2YWx9Il0sIFtweXRob25kaXI9bm9dKQorKworKyMgSWYgdGhlIHVzZXIgcGFz c2VkIGluIGEgcGF0aCwgZGVmaW5lIGl0LiAgT3RoZXJ3aXNlLCBjb21wdXRlIGl0IGF0CisrIyBy dW50aW1lIGJhc2VkIG9uIHRoZSBwb3NzaWJseS1yZWxvY2F0YWJsZSBkYXRhZGlyLgorK2lmIHRl c3QgIiRweXRob25kaXIiID0gIm5vIjsgdGhlbgorKyAgcHl0aG9uZGlyPSckKEdEQl9EQVRBRElS X1BBVEgpL3B5dGhvbicKKytlbHNlCisrICBBQ19ERUZJTkVfVU5RVU9URUQoUFlUSE9ORElSLCAi JHB5dGhvbmRpciIsCisrICAgICAgW0RlZmluZSB0byBpbnN0YWxsIHBhdGggZm9yIFB5dGhvbiBz b3VyY2VzXSkKKytmaQorK0FDX1NVQlNUKHB5dGhvbmRpcikKKysKKysKKyBBQ19DT05GSUdfU1VC RElSUyhkb2MgdGVzdHN1aXRlKQorIAorICMgQ2hlY2sgd2hldGhlciB0byBzdXBwb3J0IGFsdGVy bmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucworQEAgLTgyOCw2ICs4NzMsOCBAQCBpZiB0ZXN0 ICIke2hhdmVfbGlicHl0aG9ufSIgIT0gbm87IHRoZW4KKyAgIENPTkZJR19PQlM9IiRDT05GSUdf T0JTIFwkKFNVQkRJUl9QWVRIT05fT0JTKSIKKyAgIENPTkZJR19ERVBTPSIkQ09ORklHX0RFUFMg XCQoU1VCRElSX1BZVEhPTl9ERVBTKSIKKyAgIENPTkZJR19TUkNTPSIkQ09ORklHX1NSQ1MgXCQo U1VCRElSX1BZVEhPTl9TUkNTKSIKKysgIENPTkZJR19JTlNUQUxMPSIkQ09ORklHX0lOU1RBTEwg aW5zdGFsbC1weXRob24iCisrICBDT05GSUdfVU5JTlNUQUxMPSIkQ09ORklHX1VOSU5TVEFMTCB1 bmluc3RhbGwtcHl0aG9uIgorICAgRU5BQkxFX0NGTEFHUz0iJEVOQUJMRV9DRkxBR1MgXCQoU1VC RElSX1BZVEhPTl9DRkxBR1MpIgorIAorICAgIyBGbGFncyBuZWVkZWQgdG8gY29tcGlsZSBQeXRo b24gY29kZSAodGFrZW4gZnJvbSBweXRob24tY29uZmlnIC0tY2ZsYWdzKS4KK2RpZmYgLS1naXQg YS9nZGIvZG9jL0NoYW5nZUxvZyBiL2dkYi9kb2MvQ2hhbmdlTG9nCitpbmRleCAwNGYxNjgzLi5h MmE2ZTMwIDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9DaGFuZ2VMb2cKKysrKyBiL2dkYi9kb2MvQ2hh bmdlTG9nCitAQCAtMSw1ICsxLDkgQEAKKyAyMDEwLTA3LTEzICBUb20gVHJvbWV5ICA8dHJvbWV5 QHJlZGhhdC5jb20+CisgCisrCSogZ2RiLnRleGluZm8gKEluZGV4IEZpbGVzKTogTmV3IG5vZGUu CisrCisrMjAxMC0wNy0xMyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgorKworIAkq IGdkYi50ZXhpbmZvIChHREIvTUkgVmFyaWFibGUgT2JqZWN0cyk6IFJlbW92ZSBleHRyYSAnZm9y Jy4KKyAKKyAyMDEwLTA3LTAxICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+ CitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2RiLnRleGluZm8K K2luZGV4IDEyOTcxNzUuLmMwMzBiNjUgMTAwNjQ0CistLS0gYS9nZGIvZG9jL2dkYi50ZXhpbmZv CisrKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitAQCAtMTE2Miw2ICsxMTYyLDE2IEBAIGZvciBy ZW1vdGUgZGVidWdnaW5nLgorIFJ1biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlvdXIgcHJvZ3Jh bSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCisgQGMgRklYTUU6IGtpbmdkb24gdGhpbmtz IHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRlLgorIAorK0BpdGVtIC1QCisrQGNp bmRleCBAY29kZXstUH0KKytAaXRlbXggLS1weXRob24KKytAY2luZGV4IEBjb2Rley0tcHl0aG9u fQorK0NoYW5nZSBpbnRlcnByZXRhdGlvbiBvZiBjb21tYW5kIGxpbmUgc28gdGhhdCB0aGUgYXJn dW1lbnQgaW1tZWRpYXRlbHkKKytmb2xsb3dpbmcgdGhpcyBzd2l0Y2ggaXMgdGFrZW4gdG8gYmUg dGhlIG5hbWUgb2YgYSBQeXRob24gc2NyaXB0IGZpbGUuCisrVGhpcyBvcHRpb24gc3RvcHMgb3B0 aW9uIHByb2Nlc3Npbmc7IHN1YnNlcXVlbnQgb3B0aW9ucyBhcmUgcGFzc2VkIHRvCisrUHl0aG9u IGFzIEBjb2Rle3N5cy5hcmd2fS4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGlmIFB5 dGhvbgorK3NjcmlwdGluZyBzdXBwb3J0IHdhcyBlbmFibGVkIHdoZW4gQHZhbHVle0dEQk59IHdh cyBjb25maWd1cmVkLgorKworIEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0aGVzZSBldmVu dHVhbGx5CisgQGl0ZW0gLXR1aQorIEBjaW5kZXggQGNvZGV7LS10dWl9CitAQCAtMTQyODIsNiAr MTQyOTIsNyBAQCBwcm9ncmFtLiAgVG8gZGVidWcgYSBjb3JlIGR1bXAgb2YgYSBwcmV2aW91cyBy dW4sIHlvdSBtdXN0IGFsc28gdGVsbAorIEBtZW51CisgKiBGaWxlczo6ICAgICAgICAgICAgICAg ICAgICAgICBDb21tYW5kcyB0byBzcGVjaWZ5IGZpbGVzCisgKiBTZXBhcmF0ZSBEZWJ1ZyBGaWxl czo6ICAgICAgICBEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gc2VwYXJhdGUgZmlsZXMKKysqIElu ZGV4IEZpbGVzOjogICAgICAgICAgICAgICAgIEluZGV4IGZpbGVzIHNwZWVkIHVwIEdEQgorICog U3ltYm9sIEVycm9yczo6ICAgICAgICAgICAgICAgRXJyb3JzIHJlYWRpbmcgc3ltYm9sIGZpbGVz CisgKiBEYXRhIEZpbGVzOjogICAgICAgICAgICAgICAgICBHREIgZGF0YSBmaWxlcworIEBlbmQg bWVudQorQEAgLTE1MTcxLDYgKzE1MTgyLDQ2IEBAIGdudV9kZWJ1Z2xpbmtfY3JjMzIgKHVuc2ln bmVkIGxvbmcgY3JjLAorIFRoaXMgY29tcHV0YXRpb24gZG9lcyBub3QgYXBwbHkgdG8gdGhlIGBg YnVpbGQgSUQnJyBtZXRob2QuCisgCisgCisrQG5vZGUgSW5kZXggRmlsZXMKKytAc2VjdGlvbiBJ bmRleCBGaWxlcyBTcGVlZCBVcCBAdmFsdWV7R0RCTn0KKytAY2luZGV4IGluZGV4IGZpbGVzCisr QGNpbmRleCBAc2FtcHsuZ2RiX2luZGV4fSBzZWN0aW9uCisrCisrV2hlbiBAdmFsdWV7R0RCTn0g ZmluZHMgYSBzeW1ib2wgZmlsZSwgaXQgc2NhbnMgdGhlIHN5bWJvbHMgaW4gdGhlCisrZmlsZSBp biBvcmRlciB0byBjb25zdHJ1Y3QgYW4gaW50ZXJuYWwgc3ltYm9sIHRhYmxlLiAgVGhpcyBsZXRz IG1vc3QKKytAdmFsdWV7R0RCTn0gb3BlcmF0aW9ucyB3b3JrIHF1aWNrbHktLS1hdCB0aGUgY29z dCBvZiBhIGRlbGF5IGVhcmx5Cisrb24uICBGb3IgbGFyZ2UgcHJvZ3JhbXMsIHRoaXMgZGVsYXkg Y2FuIGJlIHF1aXRlIGxlbmd0aHksIHNvCisrQHZhbHVle0dEQk59IHByb3ZpZGVzIGEgd2F5IHRv IGJ1aWxkIGFuIGluZGV4LCB3aGljaCBzcGVlZHMgdXAKKytzdGFydHVwLgorKworK1RoZSBpbmRl eCBpcyBzdG9yZWQgYXMgYSBzZWN0aW9uIGluIHRoZSBzeW1ib2wgZmlsZS4gIEB2YWx1ZXtHREJO fSBjYW4KKyt3cml0ZSB0aGUgaW5kZXggdG8gYSBmaWxlLCB0aGVuIHlvdSBjYW4gcHV0IGl0IGlu dG8gdGhlIHN5bWJvbCBmaWxlCisrdXNpbmcgQGNvbW1hbmR7b2JqY29weX0uCisrCisrVG8gY3Jl YXRlIGFuIGluZGV4IGZpbGUsIHVzZSB0aGUgQGNvZGV7c2F2ZSBnZGItaW5kZXh9IGNvbW1hbmQ6 CisrCisrQHRhYmxlIEBjb2RlCisrQGl0ZW0gc2F2ZSBnZGItaW5kZXggQHZhcntkaXJlY3Rvcnl9 CisrQGtpbmRleCBzYXZlIGdkYi1pbmRleAorK0NyZWF0ZSBhbiBpbmRleCBmaWxlIGZvciBlYWNo IHN5bWJvbCBmaWxlIGN1cnJlbnRseSBrbm93biBieQorK0B2YWx1ZXtHREJOfS4gIEVhY2ggZmls ZSBpcyBuYW1lZCBhZnRlciBpdHMgY29ycmVzcG9uZGluZyBzeW1ib2wgZmlsZSwKKyt3aXRoIEBz YW1wey5nZGItaW5kZXh9IGFwcGVuZGVkLCBhbmQgaXMgd3JpdHRlbiBpbnRvIHRoZSBnaXZlbgor K0B2YXJ7ZGlyZWN0b3J5fS4KKytAZW5kIHRhYmxlCisrCisrT25jZSB5b3UgaGF2ZSBjcmVhdGVk IGFuIGluZGV4IGZpbGUgeW91IGNhbiBtZXJnZSBpdCBpbnRvIHlvdXIgc3ltYm9sCisrZmlsZSwg aGVyZSBuYW1lZCBAZmlsZXtzeW1maWxlfSwgdXNpbmcgQGNvbW1hbmR7b2JqY29weX06CisrCisr QHNtYWxsZXhhbXBsZQorKyQgb2JqY29weSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5kZXg9c3ltZmls ZS5nZGItaW5kZXggXAorKyAgICAtLXNldC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9u bHkgc3ltZmlsZSBzeW1maWxlCisrQGVuZCBzbWFsbGV4YW1wbGUKKysKKytUaGVyZSBhcmUgY3Vy cmVudGx5IHNvbWUgbGltaXRhdGlvbiBvbiBpbmRpY2VzLiAgVGhleSBvbmx5IHdvcmsgd2hlbgor K2ZvciBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIG5vdCBzdGFicy4gIEFuZCwgdGhleSBk byBub3QKKytjdXJyZW50bHkgd29yayBmb3IgcHJvZ3JhbXMgdXNpbmcgQWRhLgorKworKworIEBu b2RlIFN5bWJvbCBFcnJvcnMKKyBAc2VjdGlvbiBFcnJvcnMgUmVhZGluZyBTeW1ib2wgRmlsZXMK KyAKK0BAIC0yMDMxMCw4ICsyMDM2MSw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5kfS4gIEZvciBl eGFtcGxlOgorIAorIEBzbWFsbGV4YW1wbGUKKyAoQHZhbHVle0dEQlB9KSBweXRob24KKy1UeXBl IHB5dGhvbiBzY3JpcHQKKy1FbmQgd2l0aCBhIGxpbmUgc2F5aW5nIGp1c3QgImVuZCIuCisgPnBy aW50IDIzCisgPmVuZAorIDIzCitAQCAtMjAzMjQsNiArMjAzNzMsMTQgQEAgaW4gYSBQeXRob24g c2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWludCBzZXQKKyBw eXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0aGVuIFB5dGhv biBzdGFjaworIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9u IHN0YWNrIHByaW50aW5nIGlzCisgZGlzYWJsZWQuCisrCisrQGtpbmRleCBtYWludCBzZXQgcHl0 aG9uIGF1dG8tbG9hZAorK0BpdGVtIG1haW50IHNldCBweXRob24gYXV0by1sb2FkCisrQnkgZGVm YXVsdCwgQHZhbHVle0dEQk59IHdpbGwgYXR0ZW1wdCB0byBhdXRvbWF0aWNhbGx5IGxvYWQgUHl0 aG9uCisrY29kZSB3aGVuIGFuIG9iamVjdCBmaWxlIGlzIG9wZW5lZC4gIFRoaXMgY2FuIGJlIGNv bnRyb2xsZWQgdXNpbmcKKytAY29kZXttYWludCBzZXQgcHl0aG9uIGF1dG8tbG9hZH06IGlmIEBj b2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4KKytQeXRob24gYXV0by1sb2FkaW5nIGlzIGVuYWJs ZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uCisrYXV0by1sb2FkaW5nIGlzIGRpc2FibGVk LgorIEBlbmQgdGFibGUKKyAKKyBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSBQeXRo b24gc2NyaXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQorQEAgLTIwMzQ1LDYgKzIwNDAyLDE0IEBA IGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCisgQGNpbmRleCBweXRob24gYXBpCisgQGNp bmRleCBwcm9ncmFtbWluZyBpbiBweXRob24KKyAKKytZb3UgY2FuIGdldCBxdWljayBvbmxpbmUg aGVscCBmb3IgQHZhbHVle0dEQk59J3MgUHl0aG9uIEFQSSBieSBpc3N1aW5nCisrdGhlIGNvbW1h bmQgQHd7QGtiZHtweXRob24gaGVscCAoZ2RiKX19LgorKworK0Z1bmN0aW9ucyBhbmQgbWV0aG9k cyB3aGljaCBoYXZlIHR3byBvciBtb3JlIG9wdGlvbmFsIGFyZ3VtZW50cyBhbGxvdworK3RoZW0g dG8gYmUgc3BlY2lmaWVkIHVzaW5nIGtleXdvcmQgc3ludGF4LiAgVGhpcyBhbGxvd3MgcGFzc2lu ZyBzb21lCisrb3B0aW9uYWwgYXJndW1lbnRzIHdoaWxlIHNraXBwaW5nIG90aGVycy4gIEV4YW1w bGU6CisrQHd7QGNvZGV7Z2RiLnNvbWVfZnVuY3Rpb24gKCdmb28nLCBiYXIgPSAxLCBiYXogPSAy KX19LgorKworIEBjaW5kZXggcHl0aG9uIHN0ZG91dAorIEBjaW5kZXggcHl0aG9uIHBhZ2luYXRp b24KKyBBdCBzdGFydHVwLCBAdmFsdWV7R0RCTn0gb3ZlcnJpZGVzIFB5dGhvbidzIEBjb2Rle3N5 cy5zdGRvdXR9IGFuZAorQEAgLTIwMzU2LDcgKzIwNDIxLDcgQEAgc2l0dWF0aW9uLCBhIFB5dGhv biBAY29kZXtLZXlib2FyZEludGVycnVwdH0gZXhjZXB0aW9uIGlzIHRocm93bi4KKyBAbWVudQor ICogQmFzaWMgUHl0aG9uOjogICAgICAgICAgICAgICAgQmFzaWMgUHl0aG9uIEZ1bmN0aW9ucy4K KyAqIEV4Y2VwdGlvbiBIYW5kbGluZzo6CistKiBWYWx1ZXMgRnJvbSBJbmZlcmlvcjo6CisrKiBW YWx1ZXMgRnJvbSBJbmZlcmlvcjo6CVB5dGhvbiByZXByZXNlbnRhdGlvbiBvZiB2YWx1ZXMuCisg KiBUeXBlcyBJbiBQeXRob246OiAgICAgICAgICAgICBQeXRob24gcmVwcmVzZW50YXRpb24gb2Yg dHlwZXMuCisgKiBQcmV0dHkgUHJpbnRpbmcgQVBJOjogICAgICAgICBQcmV0dHktcHJpbnRpbmcg dmFsdWVzLgorICogU2VsZWN0aW5nIFByZXR0eS1QcmludGVyczo6ICAgSG93IEdEQiBjaG9vc2Vz IGEgcHJldHR5LXByaW50ZXIuCitAQCAtMjA0MTUsNiArMjA0ODAsMTIgQEAgUmV0dXJuIGEgc2Vx dWVuY2UgaG9sZGluZyBhbGwgb2YgQHZhbHVle0dEQk59J3MgYnJlYWtwb2ludHMuCisgQHhyZWZ7 QnJlYWtwb2ludHMgSW4gUHl0aG9ufSwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgQGVuZCBkZWZ1 bgorIAorK0BmaW5kZXggZ2RiLmJyZWFrcG9pbnRzCisrQGRlZnVuIGJyZWFrcG9pbnRzCisrUmV0 dXJuIGEgc2VxdWVuY2UgaG9sZGluZyBhbGwgb2YgQHZhbHVle0dEQk59J3MgYnJlYWtwb2ludHMu CisrQHhyZWZ7QnJlYWtwb2ludHMgSW4gUHl0aG9ufSwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCisr QGVuZCBkZWZ1bgorKworIEBmaW5kZXggZ2RiLnBhcmFtZXRlcgorIEBkZWZ1biBwYXJhbWV0ZXIg cGFyYW1ldGVyCisgUmV0dXJuIHRoZSB2YWx1ZSBvZiBhIEB2YWx1ZXtHREJOfSBwYXJhbWV0ZXIu ICBAdmFye3BhcmFtZXRlcn0gaXMgYQorQEAgLTIwNDMxLDYgKzIwNTAyLDcgQEAgYSBQeXRob24g dmFsdWUgb2YgdGhlIGFwcHJvcHJpYXRlIHR5cGUsIGFuZCByZXR1cm5lZC4KKyBAZGVmdW4gaGlz dG9yeSBudW1iZXIKKyBSZXR1cm4gYSB2YWx1ZSBmcm9tIEB2YWx1ZXtHREJOfSdzIHZhbHVlIGhp c3RvcnkgKEBweHJlZntWYWx1ZQorIEhpc3Rvcnl9KS4gIEB2YXJ7bnVtYmVyfSBpbmRpY2F0ZXMg d2hpY2ggaGlzdG9yeSBlbGVtZW50IHRvIHJldHVybi4KKysKKyBJZiBAdmFye251bWJlcn0gaXMg bmVnYXRpdmUsIHRoZW4gQHZhbHVle0dEQk59IHdpbGwgdGFrZSBpdHMgYWJzb2x1dGUgdmFsdWUK KyBhbmQgY291bnQgYmFja3dhcmQgZnJvbSB0aGUgbGFzdCBlbGVtZW50IChpLmUuLCB0aGUgbW9z dCByZWNlbnQgZWxlbWVudCkgdG8KKyBmaW5kIHRoZSB2YWx1ZSB0byByZXR1cm4uICBJZiBAdmFy e251bWJlcn0gaXMgemVybywgdGhlbiBAdmFsdWV7R0RCTn0gd2lsbAorQEAgLTIwNDU1LDYgKzIw NTI3LDIxIEBAIGNvbXB1dGUgdmFsdWVzLCBmb3IgZXhhbXBsZSwgaXQgaXMgdGhlIG9ubHkgd2F5 IHRvIGdldCB0aGUgdmFsdWUgb2YgYQorIGNvbnZlbmllbmNlIHZhcmlhYmxlIChAcHhyZWZ7Q29u dmVuaWVuY2UgVmFyc30pIGFzIGEgQGNvZGV7Z2RiLlZhbHVlfS4KKyBAZW5kIGRlZnVuCisgCisr QGZpbmRleCBnZGIucG9zdF9ldmVudAorK0BkZWZ1biBwb3N0X2V2ZW50IGV2ZW50CisrUHV0IEB2 YXJ7ZXZlbnR9LCBhIGNhbGxhYmxlIG9iamVjdCB0YWtpbmcgbm8gYXJndW1lbnRzLCBpbnRvCisr QHZhbHVle0dEQk59J3MgaW50ZXJuYWwgZXZlbnQgcXVldWUuICBUaGlzIGNhbGxhYmxlIHdpbGwg YmUgaW52b2tlZCBhdAorK3NvbWUgbGF0ZXIgcG9pbnQsIGR1cmluZyBAdmFsdWV7R0RCTn0ncyBl dmVudCBwcm9jZXNzaW5nLiAgRXZlbnRzCisrcG9zdGVkIHVzaW5nIEBjb2Rle3Bvc3RfZXZlbnR9 IHdpbGwgYmUgcnVuIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5Cisrd2VyZSBwb3N0ZWQ7IGhv d2V2ZXIsIHRoZXJlIGlzIG5vIHdheSB0byBrbm93IHdoZW4gdGhleSB3aWxsIGJlCisrcHJvY2Vz c2VkIHJlbGF0aXZlIHRvIG90aGVyIGV2ZW50cyBpbnNpZGUgQHZhbHVle0dEQk59LgorKworK0B2 YWx1ZXtHREJOfSBpcyBub3QgdGhyZWFkLXNhZmUuICBJZiB5b3VyIFB5dGhvbiBwcm9ncmFtIHVz ZXMgbXVsdGlwbGUKKyt0aHJlYWRzLCB5b3UgbXVzdCBiZSBjYXJlZnVsIHRvIG9ubHkgY2FsbCBA dmFsdWV7R0RCTn0tc3BlY2lmaWMKKytmdW5jdGlvbnMgaW4gdGhlIG1haW4gQHZhbHVle0dEQk59 IHRocmVhZC4gIEBjb2Rle3Bvc3RfZXZlbnR9IGVuc3VyZXMKKyt0aGlzLgorK0BlbmQgZGVmdW4K KysKKyBAZmluZGV4IGdkYi53cml0ZQorIEBkZWZ1biB3cml0ZSBzdHJpbmcKKyBQcmludCBhIHN0 cmluZyB0byBAdmFsdWV7R0RCTn0ncyBwYWdpbmF0ZWQgc3RhbmRhcmQgb3V0cHV0IHN0cmVhbS4K IGRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYmludC50ZXhpbmZvIGIvZ2RiL2RvYy9nZGJpbnQudGV4 aW5mbwogaW5kZXggNTQxODdkZC4uMzIwYjUwMSAxMDA2NDQKIC0tLSBhL2dkYi9kb2MvZ2RiaW50 LnRleGluZm8KQEAgLTE3NDQsMTAgKzIyNDYsMTQxIEBAIGluZGV4IDgyNmJjNDUuLjFlN2Q4ZGMg MTAwNjQ0CiAgCiAgI2VuZGlmIC8qIGR3YXJmMmxvYy5oICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3 YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDE2MzgxZGUuLmVjMzFjZjEgMTAw NjQ0CitpbmRleCAxNjM4MWRlLi4zMWE3ZDgzIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMnJlYWQu YwogKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTEwODMsNiArMTA4Myw5IEBAIHN0YXRpYyBp bnQgYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChzdHJ1Y3QgYXR0cmlidXRlICopOworQEAg LTUxLDYgKzUxLDggQEAKKyAjaW5jbHVkZSAidHlwZXByaW50LmgiCisgI2luY2x1ZGUgImp2LWxh bmcuaCIKKyAjaW5jbHVkZSAicHN5bXByaXYuaCIKKysjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgor KyNpbmNsdWRlICJnZGJfc3RhdC5oIgorIAorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRl ICJnZGJfc3RyaW5nLmgiCitAQCAtMTI5LDYgKzEzMSwzMyBAQCBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbworICAgaW50IHJlYWRpbjsKKyB9OworIAorKy8qIEFsbCBvZmZzZXRzIGluIHRoZSBp bmRleCBhcmUgb2YgdGhpcyB0eXBlLiAgSXQgbXVzdCBiZQorKyAgIGFyY2hpdGVjdHVyZS1pbmRl cGVuZGVudC4gICovCisrdHlwZWRlZiB1aW50MzJfdCBvZmZzZXRfdHlwZTsKKysKKytERUZfVkVD X0kgKG9mZnNldF90eXBlKTsKKysKKysvKiBBIGRlc2NyaXB0aW9uIG9mIHRoZSBtYXBwZWQgaW5k ZXguICBUaGUgZmlsZSBmb3JtYXQgaXMgZGVzY3JpYmVkIGluCisrICAgYSBjb21tZW50IGJ5IHRo ZSBjb2RlIHRoYXQgd3JpdGVzIHRoZSBpbmRleC4gICovCisrc3RydWN0IG1hcHBlZF9pbmRleAor K3sKKysgIC8qIFRoZSB0b3RhbCBsZW5ndGggb2YgdGhlIGJ1ZmZlci4gICovCisrICBvZmZfdCB0 b3RhbF9zaXplOworKyAgLyogQSBwb2ludGVyIHRvIHRoZSBhZGRyZXNzIHRhYmxlIGRhdGEuICAq LworKyAgY29uc3QgZ2RiX2J5dGUgKmFkZHJlc3NfdGFibGU7CisrICAvKiBTaXplIG9mIHRoZSBh ZGRyZXNzIHRhYmxlIGRhdGEgaW4gYnl0ZXMuICAqLworKyAgb2Zmc2V0X3R5cGUgYWRkcmVzc190 YWJsZV9zaXplOworKyAgLyogVGhlIGhhc2ggdGFibGUuICAqLworKyAgY29uc3Qgb2Zmc2V0X3R5 cGUgKmluZGV4X3RhYmxlOworKyAgLyogU2l6ZSBpbiBzbG90cywgZWFjaCBzbG90IGlzIDIgb2Zm c2V0X3R5cGVzLiAgKi8KKysgIG9mZnNldF90eXBlIGluZGV4X3RhYmxlX3Nsb3RzOworKyAgLyog QSBwb2ludGVyIHRvIHRoZSBjb25zdGFudCBwb29sLiAgKi8KKysgIGNvbnN0IGNoYXIgKmNvbnN0 YW50X3Bvb2w7CisrfTsKKysKKyt0eXBlZGVmIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmR3 YXJmMl9wZXJfY3VfZGF0YV9wdHI7CisrREVGX1ZFQ19QIChkd2FyZjJfcGVyX2N1X2RhdGFfcHRy KTsKKysKKyBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCisgeworICAgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gaW5mbzsKK0BAIC0xNDEsNiArMTcwLDcgQEAgc3RydWN0IGR3YXJmMl9wZXJf b2JqZmlsZQorICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gdHlwZXM7CisgICBzdHJ1Y3Qg ZHdhcmYyX3NlY3Rpb25faW5mbyBmcmFtZTsKKyAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZv IGVoX2ZyYW1lOworKyAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gZ2RiX2luZGV4OworIAor ICAgLyogQmFjayBsaW5rLiAgKi8KKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOworQEAgLTE2 Myw2ICsxOTMsMTIgQEAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQorICAgLyogQSBmbGFnIGlu ZGljYXRpbmcgd2V0aGVyIHRoaXMgb2JqZmlsZSBoYXMgYSBzZWN0aW9uIGxvYWRlZCBhdCBhCisg ICAgICBWTUEgb2YgMC4gICovCisgICBpbnQgaGFzX3NlY3Rpb25fYXRfemVybzsKKysKKysgIC8q IFRydWUgaWYgd2UgYXJlIHVzaW5nIHRoZSBtYXBwZWQgaW5kZXguICAqLworKyAgdW5zaWduZWQg Y2hhciB1c2luZ19pbmRleDsKKysKKysgIC8qIFRoZSBtYXBwZWQgaW5kZXguICAqLworKyAgc3Ry dWN0IG1hcHBlZF9pbmRleCAqaW5kZXhfdGFibGU7CisgfTsKKyAKKyBzdGF0aWMgc3RydWN0IGR3 YXJmMl9wZXJfb2JqZmlsZSAqZHdhcmYyX3Blcl9vYmpmaWxlOworQEAgLTE4Miw2ICsyMTgsNyBA QCBzdGF0aWMgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZHdhcmYyX3Blcl9vYmpmaWxlOwor ICNkZWZpbmUgVFlQRVNfU0VDVElPTiAgICAiZGVidWdfdHlwZXMiCisgI2RlZmluZSBGUkFNRV9T RUNUSU9OICAgICJkZWJ1Z19mcmFtZSIKKyAjZGVmaW5lIEVIX0ZSQU1FX1NFQ1RJT04gImVoX2Zy YW1lIgorKyNkZWZpbmUgR0RCX0lOREVYX1NFQ1RJT04gImdkYl9pbmRleCIKKyAKKyAvKiBsb2Nh bCBkYXRhIHR5cGVzICovCisgCitAQCAtMzA3LDYgKzM0NCwzMiBAQCBzdHJ1Y3QgZHdhcmYyX2N1 CisgICB1bnNpZ25lZCBpbnQgaGFzX25hbWVzcGFjZV9pbmZvIDogMTsKKyB9OworIAorKy8qIFdo ZW4gdXNpbmcgdGhlIGluZGV4IChhbmQgdGh1cyBub3QgdXNpbmcgcHN5bXRhYnMpLCBlYWNoIENV IGhhcyBhbgorKyAgIG9iamVjdCBvZiB0aGlzIHR5cGUuICBUaGlzIGlzIHVzZWQgdG8gaG9sZCBp bmZvcm1hdGlvbiBuZWVkZWQgYnkKKysgICB0aGUgdmFyaW91cyAicXVpY2siIG1ldGhvZHMuICAq LworK3N0cnVjdCBkd2FyZjJfcGVyX2N1X3F1aWNrX2RhdGEKKyt7CisrICAvKiBUaGUgbGluZSB0 YWJsZS4gIFRoaXMgY2FuIGJlIE5VTEwgaWYgdGhlcmUgd2FzIG5vIGxpbmUgdGFibGUuICAqLwor KyAgc3RydWN0IGxpbmVfaGVhZGVyICpsaW5lczsKKysKKysgIC8qIFRoZSBmaWxlIG5hbWVzIGZy b20gdGhlIGxpbmUgdGFibGUuICAqLworKyAgY29uc3QgY2hhciAqKmZpbGVfbmFtZXM7CisrICAv KiBUaGUgZmlsZSBuYW1lcyBmcm9tIHRoZSBsaW5lIHRhYmxlIGFmdGVyIGJlaW5nIHJ1biB0aHJv dWdoCisrICAgICBnZGJfcmVhbHBhdGguICAqLworKyAgY29uc3QgY2hhciAqKmZ1bGxfbmFtZXM7 CisrCisrICAvKiBUaGUgY29ycmVzcG9uZGluZyBzeW1ib2wgdGFibGUuICBUaGlzIGlzIE5VTEwg aWYgc3ltYm9scyBmb3IgdGhpcworKyAgICAgQ1UgaGF2ZSBub3QgeWV0IGJlZW4gcmVhZC4gICov CisrICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7CisrCisrICAvKiBBIHRlbXBvcmFyeSBtYXJrIGJp dCB1c2VkIHdoZW4gaXRlcmF0aW5nIG92ZXIgYWxsIENVcyBpbgorKyAgICAgZXhwYW5kX3N5bXRh YnNfbWF0Y2hpbmcuICAqLworKyAgdW5zaWduZWQgaW50IG1hcmsgOiAxOworKworKyAgLyogVHJ1 ZSBpZiB3ZSd2ZSB0cmllZCB0byByZWFkIHRoZSBsaW5lIHRhYmxlLiAgKi8KKysgIHVuc2lnbmVk IGludCByZWFkX2xpbmVzIDogMTsKKyt9OworKworIC8qIFBlcnNpc3RlbnQgZGF0YSBoZWxkIGZv ciBhIGNvbXBpbGF0aW9uIHVuaXQsIGV2ZW4gd2hlbiBub3QKKyAgICBwcm9jZXNzaW5nIGl0LiAg V2UgcHV0IGEgcG9pbnRlciB0byB0aGlzIHN0cnVjdHVyZSBpbiB0aGUKKyAgICByZWFkX3N5bXRh Yl9wcml2YXRlIGZpZWxkIG9mIHRoZSBwc3ltdGFiLiAgSWYgd2UgZW5jb3VudGVyCitAQCAtMzQ3 LDEwICs0MTAsMjEgQEAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YQorICAgICAgaXQuICAqLwor ICAgaHRhYl90IHR5cGVfaGFzaDsKKyAKKy0gIC8qIFRoZSBwYXJ0aWFsIHN5bWJvbCB0YWJsZSBh c3NvY2lhdGVkIHdpdGggdGhpcyBjb21waWxhdGlvbiB1bml0LAorLSAgICAgb3IgTlVMTCBmb3Ig cGFydGlhbCB1bml0cyAod2hpY2ggZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZAorLSAgICAgc3lt dGFiKS4gICovCistICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10YWI7CisrICAvKiBUaGUg Y29ycmVzcG9uZGluZyBvYmpmaWxlLiAgKi8KKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwor KworKyAgLyogV2hlbiB1c2luZyBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMsIHRoZSAncHN5bXRhYicg ZmllbGQgaXMgYWN0aXZlLgorKyAgICAgT3RoZXJ3aXNlIHRoZSAncXVpY2snIGZpZWxkIGlzIGFj dGl2ZS4gICovCisrICB1bmlvbgorKyAgeworKyAgICAvKiBUaGUgcGFydGlhbCBzeW1ib2wgdGFi bGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcGlsYXRpb24gdW5pdCwKKysgICAgICAgb3IgTlVM TCBmb3IgcGFydGlhbCB1bml0cyAod2hpY2ggZG8gbm90IGhhdmUgYW4gYXNzb2NpYXRlZAorKyAg ICAgICBzeW10YWIpLiAgKi8KKysgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiOwor KworKyAgICAvKiBEYXRhIG5lZWRlZCBieSB0aGUgInF1aWNrIiBmdW5jdGlvbnMuICAqLworKyAg ICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhICpxdWljazsKKysgIH0gdjsKKyB9Owor IAorIC8qIEVudHJ5IGluIHRoZSBzaWduYXR1cmVkX3R5cGVzIGhhc2ggdGFibGUuICAqLworQEAg LTEwODMsNiArMTE1Nyw5IEBAIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0 IChzdHJ1Y3QgYXR0cmlidXRlICopOwogIAogIHN0YXRpYyBpbnQgYXR0cl9mb3JtX2lzX2NvbnN0 YW50IChzdHJ1Y3QgYXR0cmlidXRlICopOwogIApAQCAtMTc1Nyw3ICsyMzkwLDcgQEAgaW5kZXgg MTYzODFkZS4uZWMzMWNmMSAxMDA2NDQKICBzdGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtf Y29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJvbCAq c3ltLAogIAkJCQkJIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLUBAIC0xMTEzLDYgKzExMTYsOSBA QCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOworQEAgLTExMTMsNiAr MTE5MCw5IEBAIHN0YXRpYyB2b2lkIGFnZV9jYWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAg c3RhdGljIHZvaWQgZnJlZV9vbmVfY2FjaGVkX2NvbXBfdW5pdCAodm9pZCAqKTsKICAKQEAgLTE3 NjcsMzk3MSArMjQwMCw3NjQ0IEBAIGluZGV4IDE2MzgxZGUuLmVjMzFjZjEgMTAwNjQ0CiAgc3Rh dGljIHN0cnVjdCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3Qg dHlwZSAqLAogIAkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKik7CiAgCi1AQCAtMTEzMiw2ICsxMTM4 LDkgQEAgc3RhdGljIHZvaWQgZHdhcmYyX2NsZWFyX21hcmtzIChzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICopOworQEAgLTExMzIsNiArMTIxMiw1NiBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xl YXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVj dCB0eXBlICpnZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSk7CiAgCiArc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYy X2F0dHJfdG9fbG9jZXhwcl9iYXRvbgogKyAgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KTsKICsKLSAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBu ZWVkIGZvciBEV0FSRiAyIGRlYnVnZ2luZwotICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1 ZSBpZiB3ZSBoYXZlIGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwotIAotQEAgLTU1MzEsNiAr NTU0MCwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwg Y3UpOwotIH0KLSAKLSsvKiBDcmVhdGUgYSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5n IGl0cyB0YXJnZXQgdHlwZSBUWVBFLgorK3N0YXRpYyB2b2lkIGR3YXJmMl9yZWxlYXNlX3F1ZXVl ICh2b2lkICpkdW1teSk7CiArCi0rICAgTXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVy bmFsbHkgcmVwcmVzZW50ZWQgYXMgYSBzdGFjayBvZgotKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFy cmF5cyBiZWluZyByZWZlcmVuY2VkIGJ5IHRoZWlyIFRZUEVfVEFSR0VUX1RZUEUuICAqLworK3N0 YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1LAorKwkJCSAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogKwotK3N0YXRpYyBzdHJ1 Y3QgdHlwZSAqCi0rY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkgICAgICAgc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHR5cGUgPSBjcmVhdGVfYXJyYXlf dHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZSk7Cisrc3RhdGljIHZvaWQgcHJvY2Vzc19xdWV1 ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwogKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBl IGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5Ci0rICAgICBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgotKyAgICAgdmFsdWVfc3Vi c2NyaXB0ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCi0r ICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7Cisrc3RhdGljIHZvaWQgZmlu ZF9maWxlX2FuZF9kaXJlY3RvcnkgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorKwkJCQkgICAgIHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAorKwkJCQkgICAgIGNoYXIgKipuYW1lLCBjaGFyICoqY29tcF9k aXIpOwogKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQg Zm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCi0rICAgICB2YWxpZGl0eSB3aGlsZSBhY2Nlc3Npbmcg RklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAqLwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMg KGRpZSwgcmFuZ2VfdHlwZSwgY3UpOworK3N0YXRpYyBjaGFyICpmaWxlX2Z1bGxfbmFtZSAoaW50 IGZpbGUsIHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsCisrCQkJICAgICBjb25zdCBjaGFyICpjb21w X2Rpcik7CiArCi0rICByZXR1cm4gdHlwZTsKKytzdGF0aWMgZ2RiX2J5dGUgKnBhcnRpYWxfcmVh ZF9jb21wX3VuaXRfaGVhZCAoc3RydWN0IGNvbXBfdW5pdF9oZWFkICpoZWFkZXIsCisrCQkJCQkg ICAgICBnZGJfYnl0ZSAqaW5mb19wdHIsCisrCQkJCQkgICAgICBnZGJfYnl0ZSAqYnVmZmVyLAor KwkJCQkJICAgICAgdW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplLAorKwkJCQkJICAgICAgYmZkICph YmZkKTsKKysKKytzdGF0aWMgdm9pZCBpbml0X2N1X2RpZV9yZWFkZXIgKHN0cnVjdCBkaWVfcmVh ZGVyX3NwZWNzICpyZWFkZXIsCisrCQkJCXN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKysjaWYg V09SRFNfQklHRU5ESUFOCisrCisrLyogQ29udmVydCBWQUxVRSBiZXR3ZWVuIGJpZy0gYW5kIGxp dHRsZS1lbmRpYW4uICAqLworK3N0YXRpYyBvZmZzZXRfdHlwZQorK2J5dGVfc3dhcCAob2Zmc2V0 X3R5cGUgdmFsdWUpCisreworKyAgb2Zmc2V0X3R5cGUgcmVzdWx0OworKworKyAgcmVzdWx0ID0g KHZhbHVlICYgMHhmZikgPDwgMjQ7CisrICByZXN1bHQgfD0gKHZhbHVlICYgMHhmZjAwKSA8PCA4 OworKyAgcmVzdWx0IHw9ICh2YWx1ZSAmIDB4ZmYwMDAwKSA+PiA4OworKyAgcmVzdWx0IHw9ICh2 YWx1ZSAmIDB4ZmYwMDAwMDApID4+IDI0OworKyAgcmV0dXJuIHJlc3VsdDsKICt9CiArCi0gLyog RXh0cmFjdCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQg cHV0IGl0IGluCi0gICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkg aGFuZGxlcyBvbmUgZGltZW5zaW9uYWwKLSAgICBhcnJheXMuICAqLwotQEAgLTU1NDQsNyArNTU3 Niw3IEBAIHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KQotICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICpp bmRleF90eXBlOwotICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7Ci0gICBzdHJ1 Y3QgYXR0cmlidXRlICphdHRyOwotLSAgaW50IG5kaW0gPSAwOwotKyAgaW50IG5kaW0gPSAwLCBp OwotICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0gICBjaGFyICpuYW1lOworKyNkZWZpbmUg TUFZQkVfU1dBUChWKSAgYnl0ZV9zd2FwIChWKQorKworKyNlbHNlCisrI2RlZmluZSBNQVlCRV9T V0FQKFYpIChWKQorKyNlbmRpZiAvKiBXT1JEU19CSUdFTkRJQU4gKi8KKysKKysvKiBUaGUgc3Vm Zml4IGZvciBhbiBpbmRleCBmaWxlLiAgKi8KKysjZGVmaW5lIElOREVYX1NVRkZJWCAiLmdkYi1p bmRleCIKKysKKyAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBuZWVkIGZvciBEV0FS RiAyIGRlYnVnZ2luZworICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiB3ZSBoYXZl IGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLwogIAotQEAgLTU1OTcsMTcgKzU2MjksMTEgQEAg cmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gICB0eXBlID0gZWxlbWVudF90eXBlOworQEAgLTEyMzAsNiArMTM2MCwxMSBAQCBkd2Fy ZjJfbG9jYXRlX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpzZWN0cCwgdm9pZCAqaWdu b3JlX3B0cikKKyAgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmFzZWN0aW9uID0gc2Vj dHA7CisgICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXplID0gYmZkX2dldF9zZWN0 aW9uX3NpemUgKHNlY3RwKTsKKyAgICAgfQorKyAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0 cC0+bmFtZSwgR0RCX0lOREVYX1NFQ1RJT04pKQorKyAgICB7CisrICAgICAgZHdhcmYyX3Blcl9v YmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24gPSBzZWN0cDsKKysgICAgICBkd2FyZjJfcGVyX29i amZpbGUtPmdkYl9pbmRleC5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKKysg ICAgfQogIAotICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xf bWFqb3IpCi0tICAgIHsKLS0gICAgICBpbnQgaSA9IDA7Ci0tCi0tICAgICAgd2hpbGUgKGkgPCBu ZGltKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVz W2krK10pOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB3aGlsZSAobmRpbS0tID4g MCkKLS0JdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlc1tu ZGltXSk7Ci0tICAgIH0KLSsgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykKLSsgICAgICB0 eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ld LCBkaWUsIGN1KTsKLSsgIGVsc2UgLyogKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERX X09SRF9yb3dfbWFqb3IpICovCi0rICAgIGZvciAoaSA9IG5kaW0gLSAxOyBpID49IDA7IGktLSkK LSsgICAgICB0eXBlID0gY3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdl X3R5cGVzW2ldLCBkaWUsIGN1KTsKKyAgIGlmICgoYmZkX2dldF9zZWN0aW9uX2ZsYWdzIChhYmZk LCBzZWN0cCkgJiBTRUNfTE9BRCkKKyAgICAgICAmJiBiZmRfc2VjdGlvbl92bWEgKGFiZmQsIHNl Y3RwKSA9PSAwKQorQEAgLTEzNDksOTEgKzE0ODQsOTQ0IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24g KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5m bykKKyAgICAgICAgIH0KKyAgICAgfQogIAotICAgLyogVW5kZXJzdGFuZCBEd2FyZjIgc3VwcG9y dCBmb3IgdmVjdG9yIHR5cGVzIChsaWtlIHRoZXkgb2NjdXIgb24KLSAgICAgIHRoZSBQb3dlclBD IHcvIEFsdGlWZWMpLiAgR2NjIGp1c3QgYWRkcyBhbm90aGVyIGF0dHJpYnV0ZSB0byB0aGUKLUBA IC02MDYxLDI5ICs2MDg3LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKLSAgIHN0cnVjdCB0eXBlICp0eXBlLCAq cmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRl ICphdHRyOwotLSAgdW5zaWduZWQgaW50IGxlbmd0aDsKLSsgIGludCBsZW5ndGg7CistI2lmZGVm IEhBVkVfTU1BUAorLSAgaWYgKHBhZ2VzaXplID09IDApCistICAgIHBhZ2VzaXplID0gZ2V0cGFn ZXNpemUgKCk7CisrI2lmZGVmIEhBVkVfTU1BUAorKyAgaWYgKHBhZ2VzaXplID09IDApCisrICAg IHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7CiArCi0rICBpbmRleF90eXBlID0gb2JqZmlsZV90 eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7Ci0rICAvKiBSQU5HRV9UWVBFIGlzIGFsbG9jYXRl ZCBmcm9tIE9CSkZJTEUsIG5vdCBhcyBhIHBlcm1hbmVudCB0eXBlLiAgKi8KLSsgIHJhbmdlX3R5 cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSsgIC8qIExPV19CT1VORCBhbmQgSElHSF9CT1VO RCBhcmUgc2V0IGZvciByZWFsIGJlbG93LiAgKi8KLSsgIHJhbmdlX3R5cGUgPSBjcmVhdGVfcmFu Z2VfdHlwZSAocmFuZ2VfdHlwZSwgaW5kZXhfdHlwZSwgMCwgLTEpOworKyAgLyogT25seSB0cnkg dG8gbW1hcCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRv CisrICAgICB3YXN0ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5 IG1tYXAgZm9yIHNlY3Rpb25zCisrICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KICsKLSsg IC8qIEMvQysrIHNob3VsZCBwcm9iYWJseSBoYXZlIHRoZSBsb3cgYm91bmQgMCBidXQgQy9DKysg ZG9lcyBub3QgdXNlCi0rICAgICBEV19UQUdfc3RyaW5nX3R5cGUuICAqLwotKyAgVFlQRV9MT1df Qk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9zdHJpbmdfbGVuZ3RoLCBjdSk7Ci0tICBpZiAoYXR0cikKLS0gICAgewotLSAgICAgIGxl bmd0aCA9IERXX1VOU05EIChhdHRyKTsKLSsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikpCisrICBpZiAoaW5mby0+c2l6ZSA+IDQgKiBwYWdlc2l6ZSAmJiAoc2VjdHAtPmZs YWdzICYgU0VDX1JFTE9DKSA9PSAwKQogKyAgICB7Ci0rICAgICAgLyogU2VjdXJpdHkgY2hlY2sg Zm9yIGEgc2l6ZSBvdmVyZmxvdy4gICovCi0rICAgICAgaWYgKERXX0JMT0NLIChhdHRyKS0+c2l6 ZSArIDIgPCBEV19CTE9DSyAoYXR0ciktPnNpemUpCi0rCVRZUEVfSElHSF9CT1VORCAocmFuZ2Vf dHlwZSkgPSAxOwotKyAgICAgIC8qIEV4dGVuZCB0aGUgRFdBUkYgYmxvY2sgYnkgYSBuZXcgRFdf T1BfZGVyZWYvRFdfT1BfZGVyZWZfc2l6ZQotKwkgaW5zdHJ1Y3Rpb24gYXMgRFdfQVRfc3RyaW5n X2xlbmd0aCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBsb2NhdGlvbiwgbm90Ci0rCSBpdHMgdmFsdWUu ICAqLwotKyAgICAgIGVsc2UKKysgICAgICBvZmZfdCBwZ19vZmZzZXQgPSBzZWN0cC0+ZmlsZXBv cyAmIH4ocGFnZXNpemUgLSAxKTsKKysgICAgICBzaXplX3QgbWFwX2xlbmd0aCA9IGluZm8tPnNp emUgKyBzZWN0cC0+ZmlsZXBvcyAtIHBnX29mZnNldDsKKysgICAgICBjYWRkcl90IHJldGJ1ZiA9 IGJmZF9tbWFwIChhYmZkLCAwLCBtYXBfbGVuZ3RoLCBQUk9UX1JFQUQsCisrCQkJCSBNQVBfUFJJ VkFURSwgcGdfb2Zmc2V0KTsKKysKKysgICAgICBpZiAocmV0YnVmICE9IE1BUF9GQUlMRUQpCiAr CXsKLSsJICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmxlbmd0aF9iYXRvbiA9IE5VTEw7 Ci0rCSAgc3RydWN0IGR3YXJmX2Jsb2NrICpibGsgPSBEV19CTE9DSyAoYXR0cik7CisrCSAgaW5m by0+d2FzX21tYXBwZWQgPSAxOworKwkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiArIChzZWN0cC0+ ZmlsZXBvcyAmIChwYWdlc2l6ZSAtIDEpKSA7CisrI2lmIEhBVkVfUE9TSVhfTUFEVklTRQorKwkg IHBvc2l4X21hZHZpc2UgKHJldGJ1ZiwgbWFwX2xlbmd0aCwgUE9TSVhfTUFEVl9XSUxMTkVFRCk7 CisrI2VuZGlmCisrCSAgcmV0dXJuOworKwl9CisrICAgIH0KKysjZW5kaWYKICsKLSsJICAvKiBU dXJuIGFueSBzaW5nbGUgRFdfT1BfcmVnKiBpbnRvIERXX09QX2JyZWcqKDApIGJ1dCBjbGVhcmlu ZwotKwkgICAgIERXX09QX2RlcmVmKiBpbiBzdWNoIGNhc2UuICAqLworKyAgLyogSWYgd2UgZ2V0 IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90LWNvbXByZXNzZWQgc2VjdGlvbi4gICovCisrICBp bmZvLT5idWZmZXIgPSBidWYKKysgICAgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmls ZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKICsKLSsJICBpZiAoYmxrLT5zaXplID09IDEgJiYgYmxr LT5kYXRhWzBdID49IERXX09QX3JlZzAKLSsJICAgICAgJiYgYmxrLT5kYXRhWzBdIDw9IERXX09Q X3JlZzMxKQotKwkgICAgbGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRv biAoYXR0ciwgY3UpOwotKwkgIGVsc2UgaWYgKGJsay0+c2l6ZSA+IDEgJiYgYmxrLT5kYXRhWzBd ID09IERXX09QX3JlZ3gpCi0rCSAgICB7Ci0rCSAgICAgIFVMT05HRVNUIHVsb25nZXN0OwotKwkg ICAgICBjb25zdCBnZGJfYnl0ZSAqZW5kOworKyAgLyogV2hlbiBkZWJ1Z2dpbmcgLm8gZmlsZXMs IHdlIG1heSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKKysgICAgIGh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0bWwgLgorKyAgICAg V2UgbmV2ZXIgY29tcHJlc3Mgc2VjdGlvbnMgaW4gLm8gZmlsZXMsIHNvIHdlIG9ubHkgbmVlZCB0 bworKyAgICAgdHJ5IHRoaXMgd2hlbiB0aGUgc2VjdGlvbiBpcyBub3QgY29tcHJlc3NlZC4gICov CisrICByZXRidWYgPSBzeW1maWxlX3JlbG9jYXRlX2RlYnVnX3NlY3Rpb24gKG9iamZpbGUsIHNl Y3RwLCBidWYpOworKyAgaWYgKHJldGJ1ZiAhPSBOVUxMKQorKyAgICB7CisrICAgICAgaW5mby0+ YnVmZmVyID0gcmV0YnVmOworKyAgICAgIHJldHVybjsKKysgICAgfQogKwotKwkgICAgICBlbmQg PSByZWFkX3VsZWIxMjggKCZibGstPmRhdGFbMV0sICZibGstPmRhdGFbYmxrLT5zaXplXSwKLSsJ CQkJICAmdWxvbmdlc3QpOwotKwkgICAgICBpZiAoZW5kID09ICZibGstPmRhdGFbYmxrLT5zaXpl XSkKLSsJCWxlbmd0aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIs IGN1KTsKLSsJICAgIH0KKysgIGlmIChiZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNF RUtfU0VUKSAhPSAwCisrICAgICAgfHwgYmZkX2JyZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQp ICE9IGluZm8tPnNpemUpCisrICAgIGVycm9yIChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBE V0FSRiBkYXRhIGZyb20gJyVzJyIpLAorKwkgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Cisr fQogKwotKwkgIGlmIChsZW5ndGhfYmF0b24gPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgc3Ry dWN0IGF0dHJpYnV0ZSAqc2l6ZV9hdHRyOwotKwkgICAgICBnZGJfYnl0ZSAqZGF0YTsKKysvKiBG aWxsIGluIFNFQ1RQLCBCVUZQIGFuZCBTSVpFUCB3aXRoIHNlY3Rpb24gaW5mbywgZ2l2ZW4gT0JK RklMRSBhbmQKKysgICBTRUNUSU9OX05BTUUuICovCiArCi0rCSAgICAgIGxlbmd0aF9iYXRvbiA9 IG9ic3RhY2tfYWxsb2MgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssCi0rCQkJCQkgICAgc2l6ZW9m ICgqbGVuZ3RoX2JhdG9uKSk7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+cGVyX2N1ID0gY3UtPnBl cl9jdTsKLSsJICAgICAgbGVuZ3RoX2JhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXpl ICsgMjsKLSsJICAgICAgZGF0YSA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+Y29tcF91bml0X29ic3Rh Y2ssCi0rCQkJCSAgICBsZW5ndGhfYmF0b24tPnNpemUpOwotKwkgICAgICBsZW5ndGhfYmF0b24t PmRhdGEgPSBkYXRhOwotKwkgICAgICBtZW1jcHkgKGRhdGEsIERXX0JMT0NLIChhdHRyKS0+ZGF0 YSwgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKTsKKyt2b2lkCisrZHdhcmYyX2dldF9zZWN0aW9uX2lu Zm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpzZWN0aW9uX25hbWUsCisr ICAgICAgICAgICAgICAgICAgICAgICAgIGFzZWN0aW9uICoqc2VjdHAsIGdkYl9ieXRlICoqYnVm cCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgYmZkX3NpemVfdHlwZSAqc2l6ZXApCisrewor KyAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqZGF0YQorKyAgICA9IG9iamZpbGVfZGF0YSAo b2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOworKyAgc3RydWN0IGR3YXJmMl9zZWN0 aW9uX2luZm8gKmluZm87CiArCi0rCSAgICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0 b2dldGhlciB3aXRoIERXX0FUX1NUUklOR19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUg b2YgYW4gaW50ZWdlciB0byBmZXRjaC4gICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQot KwkJewotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXpl OwotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVf YXR0cik7Ci0rCQkgIGlmIChkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VO U05EIChzaXplX2F0dHIpKQotKwkJICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywK LSsJCQkgICAgICAgXygiRFdfQVRfc3RyaW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCi0r CQkJCSAiaW50ZWdlciBleGNlZWRzIHRoZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKLSsJCX0KLSsJ ICAgICAgZWxzZQotKwkJewotKwkJICBkYXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19P UF9kZXJlZjsKLSsJCSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25v cDsKLSsJCX0KLSsJICAgIH0KKysgIC8qIFdlIG1heSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0IGFu eSBEV0FSRiwgaW4gd2hpY2ggY2FzZSB3ZSBqdXN0CisrICAgICByZXR1cm4gbm90aGluZy4gICov CisrICBpZiAoZGF0YSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgKnNlY3RwID0gTlVMTDsKKysg ICAgICAqYnVmcCA9IE5VTEw7CisrICAgICAgKnNpemVwID0gMDsKKysgICAgICByZXR1cm47Cisr ICAgIH0KKysgIGlmIChzZWN0aW9uX2lzX3AgKHNlY3Rpb25fbmFtZSwgRUhfRlJBTUVfU0VDVElP TikpCisrICAgIGluZm8gPSAmZGF0YS0+ZWhfZnJhbWU7CisrICBlbHNlIGlmIChzZWN0aW9uX2lz X3AgKHNlY3Rpb25fbmFtZSwgRlJBTUVfU0VDVElPTikpCisrICAgIGluZm8gPSAmZGF0YS0+ZnJh bWU7CisrICBlbHNlCisrICAgIGdkYl9hc3NlcnQgKDApOwogKwotKwkgIFRZUEVfUkFOR0VfREFU QSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotKwkgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJG X0JMT0NLOwotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9i bG9jayA9IGxlbmd0aF9iYXRvbjsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsK LSsJfQotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBjaGVjayBmb3IgdGhlIERX X0FUX2J5dGVfc2l6ZSBhdHRyaWJ1dGUgKi8KLSsgICAgICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1f aXNfY29uc3RhbnQgKGF0dHIpKQotKwl7Ci0rCSAgLyogV2UgY3VycmVudGx5IGRvIG5vdCBzdXBw b3J0IGEgY29uc3RhbnQgYWRkcmVzcyB3aGVyZSB0aGUgbG9jYXRpb24KLSsJICAgICBzaG91bGQg YmUgcmVhZCBmcm9tIC0gYXR0cl9mb3JtX2lzX2Jsb2NrIGlzIGV4cGVjdGVkIGluc3RlYWQuICBT ZWUKLSsJICAgICBEV0FSRiBmb3IgdGhlIERXX0FUX1NUUklOR19MRU5HVEggdnMuIERXX0FUX0JZ VEVfU0laRSBkaWZmZXJlbmNlLgotKwkgICAgICovCi0rCSAgLyogUEFTU1RIUlUgKi8KLSsJfQor KyAgaWYgKGluZm8tPmFzZWN0aW9uICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8t PmJ1ZmZlciA9PSBOVUxMKQorKyAgICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGlu IHlldC4gIERvIGl0IG5vdy4gICovCisrICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUs IGluZm8pOwogKwotICAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3Np emUsIGN1KTsKLS0gICAgICBpZiAoYXR0cikKLS0gICAgICAgIHsKLS0gICAgICAgICAgbGVuZ3Ro ID0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgICAgfQotKyAgICAgIGlmIChhdHRyICYmIGF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikpCi0rCXsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5 cGUpLT5oaWdoLmtpbmQKLSsJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsJ ICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQotKwkJ CQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKwkgIFRZUEVfRFlO QU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRy X2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQotKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUp ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSAgICAgICBlbHNl Ci0tICAgICAgICB7Ci0tICAgICAgICAgIGxlbmd0aCA9IDE7Ci0tICAgICAgICB9Ci0rCVRZUEVf SElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwotICAgICB9Ci0gCi0tICBpbmRleF90eXBlID0g b2JqZmlsZV90eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7Ci0tICByYW5nZV90eXBlID0gY3Jl YXRlX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Ci0gICBjaGFyX3R5 cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJj aCk7Ci0gICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdl X3R5cGUpOwotIAotQEAgLTYzMjYsNjAgKzY0MzcsMTM2IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgc3RydWN0IHR5 cGUgKmJhc2VfdHlwZTsKLSAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwotICAgc3RydWN0IGF0 dHJpYnV0ZSAqYXR0cjsKLS0gIExPTkdFU1QgbG93ID0gMDsKLS0gIExPTkdFU1QgaGlnaCA9IC0x OwotKyAgTE9OR0VTVCBsb3c7Ci0gICBjaGFyICpuYW1lOwotICAgTE9OR0VTVCBuZWdhdGl2ZV9t YXNrOwotIAotICAgYmFzZV90eXBlID0gZGllX3R5cGUgKGRpZSwgY3UpOwotKyAgLyogUHJlc2Vy dmUgQkFTRV9UWVBFJ3Mgb3JpZ2luYWwgdHlwZSwganVzdCBzZXQgaXRzIExFTkdUSC4gICovCi0r ICBjaGVja190eXBlZGVmIChiYXNlX3R5cGUpOwotIAotICAgLyogVGhlIGRpZV90eXBlIGNhbGwg YWJvdmUgbWF5IGhhdmUgYWxyZWFkeSBzZXQgdGhlIHR5cGUgZm9yIHRoaXMgRElFLiAgKi8KLSAg IHJhbmdlX3R5cGUgPSBnZXRfZGllX3R5cGUgKGRpZSwgY3UpOwotICAgaWYgKHJhbmdlX3R5cGUp Ci0gICAgIHJldHVybiByYW5nZV90eXBlOwotIAotLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5n dWFnZV9mb3J0cmFuKQotLSAgICB7Ci0tICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIg Ym91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KLS0gICAgICBsb3cgPSAxOwotLSAgICB9Ci0r ICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNldCBmb3IgcmVhbCBiZWxvdy4gICov Ci0rICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgMCwg LTEpOworKyAgKnNlY3RwID0gaW5mby0+YXNlY3Rpb247CisrICAqYnVmcCA9IGluZm8tPmJ1ZmZl cjsKKysgICpzaXplcCA9IGluZm8tPnNpemU7CisrfQogKwotKyAgbmVnYXRpdmVfbWFzayA9IAot KyAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NI QVJfQklUIC0gMSk7CisrDAogKwotKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkg VFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBp bXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQot KyAgICAgZXhpc3RpbmcgRFdBUkYgZHluYW1pYyBib3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcg dG8gbWVtb3J5IGFjY2VzcwotKyAgICAgZXJyb3JzLiAgKi8KLSAKLS0gIC8qIEZJWE1FOiBGb3Ig dmFyaWFibGUgc2l6ZWQgYXJyYXlzIGVpdGhlciBvZiB0aGVzZSBjb3VsZCBiZQotLSAgICAgYSB2 YXJpYWJsZSByYXRoZXIgdGhhbiBhIGNvbnN0YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCi0t ICAgICBidXQgd2UgZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGl0LiAgKi8KLSAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOwotLSAgaWYgKGF0dHIpCi0t ICAgIGxvdyA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICBp ZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBs YW5ndWFnZV9hZGEpCisrLyogUmVhZCBpbiB0aGUgc3ltYm9scyBmb3IgUEVSX0NVLiAgT0JKRklM RSBpcyB0aGUgb2JqZmlsZSBmcm9tIHdoaWNoCisrICAgdGhpcyBDVSBjYW1lLiAgKi8KKytzdGF0 aWMgdm9pZAorK2R3Ml9kb19pbnN0YW50aWF0ZV9zeW10YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAorKwkJCSAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKyt7CisrICBz dHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKysKKysgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGR3 YXJmMl9yZWxlYXNlX3F1ZXVlLCBOVUxMKTsKKysKKysgIHF1ZXVlX2NvbXBfdW5pdCAocGVyX2N1 LCBvYmpmaWxlKTsKKysKKysgIGlmIChwZXJfY3UtPmZyb21fZGVidWdfdHlwZXMpCisrICAgIHJl YWRfc2lnbmF0dXJlZF90eXBlX2F0X29mZnNldCAob2JqZmlsZSwgcGVyX2N1LT5vZmZzZXQpOwor KyAgZWxzZQorKyAgICBsb2FkX2Z1bGxfY29tcF91bml0IChwZXJfY3UsIG9iamZpbGUpOworKwor KyAgcHJvY2Vzc19xdWV1ZSAob2JqZmlsZSk7CisrCisrICAvKiBBZ2UgdGhlIGNhY2hlLCByZWxl YXNpbmcgY29tcGlsYXRpb24gdW5pdHMgdGhhdCBoYXZlIG5vdAorKyAgICAgYmVlbiB1c2VkIHJl Y2VudGx5LiAgKi8KKysgIGFnZV9jYWNoZWRfY29tcF91bml0cyAoKTsKKysKKysgIGRvX2NsZWFu dXBzIChiYWNrX3RvKTsKKyt9CisrCisrLyogRW5zdXJlIHRoYXQgdGhlIHN5bWJvbHMgZm9yIFBF Ul9DVSBoYXZlIGJlZW4gcmVhZCBpbi4gIE9CSkZJTEUgaXMKKysgICB0aGUgb2JqZmlsZSBmcm9t IHdoaWNoIHRoaXMgQ1UgY2FtZS4gIFJldHVybnMgdGhlIHJlc3VsdGluZyBzeW1ib2wKKysgICB0 YWJsZS4gICovCisrc3RhdGljIHN0cnVjdCBzeW10YWIgKgorK2R3Ml9pbnN0YW50aWF0ZV9zeW10 YWIgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCXN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKnBlcl9jdSkKKyt7CisrICBpZiAoIXBlcl9jdS0+di5xdWljay0+c3ltdGFiKQogKyAgICB7 Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmxvdy51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsg ICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQg YmUgbWlzc2luZy4gICovCi0rICAgICAgbG93ID0gMDsKKysgICAgICBzdHJ1Y3QgY2xlYW51cCAq YmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jYWNoZWRfY29tcF91bml0cywgTlVMTCk7Cisr ICAgICAgaW5jcmVtZW50X3JlYWRpbmdfc3ltdGFiICgpOworKyAgICAgIGR3Ml9kb19pbnN0YW50 aWF0ZV9zeW10YWIgKG9iamZpbGUsIHBlcl9jdSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tf dG8pOwogKyAgICB9Ci0rICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBj dS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgcmV0dXJuIHBlcl9jdS0+di5xdWljay0+ c3ltdGFiOworK30KKysKKysvKiBBIGhlbHBlciBmdW5jdGlvbiB0aGF0IGtub3dzIGhvdyB0byBy ZWFkIGEgNjQtYml0IHZhbHVlIGluIGEgd2F5CisrICAgdGhhdCBkb2Vzbid0IG1ha2UgZ2RiIGRp ZS4gIFJldHVybnMgMSBpZiB0aGUgY29udmVyc2lvbiB3ZW50IG9rLCAwCisrICAgb3RoZXJ3aXNl LiAgKi8KKytzdGF0aWMgaW50CisrZXh0cmFjdF9jdV92YWx1ZSAoY29uc3QgY2hhciAqYnl0ZXMs IFVMT05HRVNUICpyZXN1bHQpCisreworKyAgaWYgKHNpemVvZiAoVUxPTkdFU1QpIDwgOCkKICsg ICAgewotKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAgICBzdHJ1Y3Qg ZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJn ZXRfbG9jX2F0dHI7CisrICAgICAgaW50IGk7CiArCi0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxv d19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNz ZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9s b2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0 X2N1KTsKKysgICAgICAvKiBJZ25vcmUgdGhlIHVwcGVyIDQgYnl0ZXMgaWYgdGhleSBhcmUgYWxs IHplcm8uICAqLworKyAgICAgIGZvciAoaSA9IDA7IGkgPCA0OyArK2kpCisrCWlmIChieXRlc1tp ICsgNF0gIT0gMCkKKysJICByZXR1cm4gMDsKICsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJh bmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0Lmxv Y2xpc3QKLSsgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xv Y19hdHRyLCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSkt Pmxvdy51LmR3YXJmX2xvY2xpc3QudHlwZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0X2Rp ZSwgdGFyZ2V0X2N1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsg ICAgICAvKiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQg YmUgbWlzc2luZy4gICovCi0rICAgICAgbG93ID0gMDsKKysgICAgICAqcmVzdWx0ID0gZXh0cmFj dF91bnNpZ25lZF9pbnRlZ2VyIChieXRlcywgNCwgQkZEX0VORElBTl9MSVRUTEUpOwogKyAgICB9 CiArICBlbHNlCisrICAgICpyZXN1bHQgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVz LCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7CisrICByZXR1cm4gMTsKKyt9CisrCisrLyogUmVhZCB0 aGUgQ1UgbGlzdCBmcm9tIHRoZSBtYXBwZWQgaW5kZXgsIGFuZCB1c2UgaXQgdG8gY3JlYXRlIGFs bAorKyAgIHRoZSBDVSBvYmplY3RzIGZvciB0aGlzIG9iamZpbGUuICBSZXR1cm4gMCBpZiBzb21l dGhpbmcgd2VudCB3cm9uZywKKysgICAxIGlmIGV2ZXJ5dGhpbmcgd2VudCBvay4gICovCisrc3Rh dGljIGludAorK2NyZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4LAorKwkJICAgICAgIGNvbnN0IGdkYl9ieXRlICpj dV9saXN0LCBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1lbnRzKQorK3sKKysgIG9mZnNldF90eXBl IGk7CisrICBjb25zdCBjaGFyICplbnRyeTsKKysKKysgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9j b21wX3VuaXRzID0gY3VfbGlzdF9lbGVtZW50cyAvIDI7CisrICBkd2FyZjJfcGVyX29iamZpbGUt PmFsbF9jb21wX3VuaXRzCisrICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVf b2JzdGFjaywKKysJCSAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKKysJCSAg ICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOworKworKyAgZm9yIChp ID0gMDsgaSA8IGN1X2xpc3RfZWxlbWVudHM7IGkgKz0gMikKICsgICAgewotKyAgICAgIGlmIChh dHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWxvdyA9IGR3YXJmMl9nZXRf YXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgaWYg KGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQotKwkgICAgewotKwkgICAgICAvKiBG T1JUUkFOIGltcGxpZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLwotKwkg ICAgICBsb3cgPSAxOwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgLyogQWNj b3JkaW5nIHRvIERXQVJGIHdlIHNob3VsZCBhc3N1bWUgdGhlIHZhbHVlIDAgb25seSBmb3IKLSsJ CSBMQU5HVUFHRV9DIGFuZCBMQU5HVUFHRV9DUExVUy4gICovCi0rCSAgICAgIGxvdyA9IDA7Ci0r CSAgICB9Ci0rCX0KLSsgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxv dyAmIG5lZ2F0aXZlX21hc2spKQotKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKLSsgICAgICBUWVBF X0xPV19CT1VORCAocmFuZ2VfdHlwZSkgPSBsb3c7Ci0rICAgICAgaWYgKGxvdyA+PSAwKQotKwlU WVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqdGhlX2N1OworKyAgICAgIFVMT05HRVNUIG9mZnNldCwgbGVuZ3RoOworKworKyAg ICAgIGlmICghZXh0cmFjdF9jdV92YWx1ZSAoY3VfbGlzdCwgJm9mZnNldCkKKysJICB8fCAhZXh0 cmFjdF9jdV92YWx1ZSAoY3VfbGlzdCArIDgsICZsZW5ndGgpKQorKwlyZXR1cm4gMDsKKysgICAg ICBjdV9saXN0ICs9IDIgKiA4OworKworKyAgICAgIHRoZV9jdSA9IE9CU1RBQ0tfWkFMTE9DICgm b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorKwkJCSAgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhKTsKKysgICAgICB0aGVfY3UtPm9mZnNldCA9IG9mZnNldDsKKysgICAgICB0aGVfY3Ut Pmxlbmd0aCA9IGxlbmd0aDsKKysgICAgICB0aGVfY3UtPm9iamZpbGUgPSBvYmpmaWxlOworKyAg ICAgIHRoZV9jdS0+di5xdWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLAorKwkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7CisrICAgICAg ZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpIC8gMl0gPSB0aGVfY3U7CiArICAg IH0KLSAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3Up OwotLSAgaWYgKGF0dHIpCi0rICBpZiAoIWF0dHIgfHwgKCFhdHRyX2Zvcm1faXNfYmxvY2sgKGF0 dHIpICYmICFhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpCi0rCQkmJiAhaXNfcmVmX2F0dHIg KGF0dHIpKSkKLSAgICAgewotLSAgICAgIGlmIChhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sx IHx8IGlzX3JlZl9hdHRyIChhdHRyKSkKLS0gICAgICAgIHsKLS0gICAgICAgICAgLyogR0NDIGVu Y29kZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQgb3IgZHluYW1pYyBsZW5ndGgKLS0gICAgICAg ICAgICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRy aWJ1dGUuCi0tICAgICAgICAgICAgIEZJWE1FOiBHREIgZG9lcyBub3QgeWV0IGtub3cgaG93IHRv IGhhbmRsZSBkeW5hbWljCi0tICAgICAgICAgICAgIGFycmF5cyBwcm9wZXJseSwgdHJlYXQgdGhl bSBhcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZAotLSAgICAgICAgICAgICBsZW5ndGggZm9yIG5v dy4KLS0KLS0gICAgICAgICAgICAgRklYTUU6IGppbWIvMjAwMy0wOS0yMjogR0RCIGRvZXMgbm90 IHJlYWxseSBrbm93Ci0tICAgICAgICAgICAgIGhvdyB0byBoYW5kbGUgYXJyYXlzIG9mIHVuc3Bl Y2lmaWVkIGxlbmd0aAotLSAgICAgICAgICAgICBlaXRoZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRo ZW0gYXMgemVyby1sZW5ndGgKLS0gICAgICAgICAgICAgYXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJv cHJpYXRlIHVwcGVyIGJvdW5kIGdpdmVuCi0tICAgICAgICAgICAgIHRoZSBsb3dlciBib3VuZCB3 ZSd2ZSBjb21wdXRlZCBhYm92ZS4gICovCi0tICAgICAgICAgIGhpZ2ggPSBsb3cgLSAxOwotLSAg ICAgICAgfQotLSAgICAgIGVsc2UKLS0gICAgICAgIGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29u c3RhbnRfdmFsdWUgKGF0dHIsIDEpOwotKyAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9jb3VudCwgY3UpOwotKyAgICAgIC8qIEl0IGRvZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5l ZWRsZXNzbHkgaW5lZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRlZi4gICovCi0rICAgICAgaWYgKGF0 dHIgJiYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwgYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChhdHRyKSkpCi0rICAgICAgCXsKLSsJICBUWVBFX1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQg KHJhbmdlX3R5cGUpID0gMTsKLSsJICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKKysK KysgIHJldHVybiAxOworK30KKysKKysvKiBSZWFkIHRoZSBhZGRyZXNzIG1hcCBkYXRhIGZyb20g dGhlIG1hcHBlZCBpbmRleCwgYW5kIHVzZSBpdCB0bworKyAgIHBvcHVsYXRlIHRoZSBvYmpmaWxl J3MgcHN5bXRhYnNfYWRkcm1hcC4gICovCisrc3RhdGljIHZvaWQKKytjcmVhdGVfYWRkcm1hcF9m cm9tX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IG1hcHBlZF9pbmRleCAq aW5kZXgpCisreworKyAgY29uc3QgZ2RiX2J5dGUgKml0ZXIsICplbmQ7CisrICBzdHJ1Y3Qgb2Jz dGFjayB0ZW1wX29ic3RhY2s7CisrICBzdHJ1Y3QgYWRkcm1hcCAqbXV0YWJsZV9tYXA7CisrICBz dHJ1Y3QgY2xlYW51cCAqY2xlYW51cDsKKysgIENPUkVfQUREUiBiYXNlYWRkcjsKKysKKysgIG9i c3RhY2tfaW5pdCAoJnRlbXBfb2JzdGFjayk7CisrICBjbGVhbnVwID0gbWFrZV9jbGVhbnVwX29i c3RhY2tfZnJlZSAoJnRlbXBfb2JzdGFjayk7CisrICBtdXRhYmxlX21hcCA9IGFkZHJtYXBfY3Jl YXRlX211dGFibGUgKCZ0ZW1wX29ic3RhY2spOworKworKyAgaXRlciA9IGluZGV4LT5hZGRyZXNz X3RhYmxlOworKyAgZW5kID0gaXRlciArIGluZGV4LT5hZGRyZXNzX3RhYmxlX3NpemU7CisrCisr ICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZG X1RFWFQgKG9iamZpbGUpKTsKKysKKysgIHdoaWxlIChpdGVyIDwgZW5kKQorKyAgICB7CisrICAg ICAgVUxPTkdFU1QgaGksIGxvLCBjdV9pbmRleDsKKysgICAgICBsbyA9IGV4dHJhY3RfdW5zaWdu ZWRfaW50ZWdlciAoaXRlciwgOCwgQkZEX0VORElBTl9MSVRUTEUpOworKyAgICAgIGl0ZXIgKz0g ODsKKysgICAgICBoaSA9IGV4dHJhY3RfdW5zaWduZWRfaW50ZWdlciAoaXRlciwgOCwgQkZEX0VO RElBTl9MSVRUTEUpOworKyAgICAgIGl0ZXIgKz0gODsKKysgICAgICBjdV9pbmRleCA9IGV4dHJh Y3RfdW5zaWduZWRfaW50ZWdlciAoaXRlciwgNCwgQkZEX0VORElBTl9MSVRUTEUpOworKyAgICAg IGl0ZXIgKz0gNDsKKysgICAgICAKKysgICAgICBhZGRybWFwX3NldF9lbXB0eSAobXV0YWJsZV9t YXAsIGxvICsgYmFzZWFkZHIsIGhpICsgYmFzZWFkZHIgLSAxLAorKwkJCSBkd2FyZjJfcGVyX29i amZpbGUtPmFsbF9jb21wX3VuaXRzW2N1X2luZGV4XSk7CisrICAgIH0KKysKKysgIG9iamZpbGUt PnBzeW10YWJzX2FkZHJtYXAgPSBhZGRybWFwX2NyZWF0ZV9maXhlZCAobXV0YWJsZV9tYXAsCisr CQkJCQkJICAgICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2spOworKyAgZG9fY2xlYW51cHMgKGNs ZWFudXApOworK30KKysKKysvKiBUaGUgaGFzaCBmdW5jdGlvbiBmb3Igc3RyaW5ncyBpbiB0aGUg bWFwcGVkIGluZGV4LiAgVGhpcyBpcyB0aGUKKysgICBzYW1lIGFzIHRoZSBoYXNodGFiLmMgaGFz aCBmdW5jdGlvbiwgYnV0IHdlIGtlZXAgYSBzZXBhcmF0ZSBjb3B5IHRvCisrICAgbWFpbnRhaW4g Y29udHJvbCBvdmVyIHRoZSBpbXBsZW1lbnRhdGlvbi4gIFRoaXMgaXMgbmVjZXNzYXJ5CisrICAg YmVjYXVzZSB0aGUgaGFzaCBmdW5jdGlvbiBpcyB0aWVkIHRvIHRoZSBmb3JtYXQgb2YgdGhlIG1h cHBlZCBpbmRleAorKyAgIGZpbGUuICAqLworK3N0YXRpYyBoYXNodmFsX3QKKyttYXBwZWRfaW5k ZXhfc3RyaW5nX2hhc2ggKGNvbnN0IHZvaWQgKnApCisreworKyAgY29uc3QgdW5zaWduZWQgY2hh ciAqc3RyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcDsKKysgIGhhc2h2YWxfdCByID0gMDsK KysgIHVuc2lnbmVkIGNoYXIgYzsKKysKKysgIHdoaWxlICgoYyA9ICpzdHIrKykgIT0gMCkKKysg ICAgciA9IHIgKiA2NyArIGMgLSAxMTM7CisrCisrICByZXR1cm4gcjsKKyt9CisrCisrLyogRmlu ZCBhIHNsb3QgaW4gdGhlIG1hcHBlZCBpbmRleCBJTkRFWCBmb3IgdGhlIG9iamVjdCBuYW1lZCBO QU1FLgorKyAgIElmIE5BTUUgaXMgZm91bmQsIHNldCAqVkVDX09VVCB0byBwb2ludCB0byB0aGUg Q1UgdmVjdG9yIGluIHRoZQorKyAgIGNvbnN0YW50IHBvb2wgYW5kIHJldHVybiAxLiAgSWYgTkFN RSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiAwLiAgKi8KKytzdGF0aWMgaW50CisrZmluZF9zbG90 X2luX21hcHBlZF9oYXNoIChzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleCwgY29uc3QgY2hhciAq bmFtZSwKKysJCQkgIG9mZnNldF90eXBlICoqdmVjX291dCkKKyt7CisrICBvZmZzZXRfdHlwZSBo YXNoID0gbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoIChuYW1lKTsKKysgIG9mZnNldF90eXBlIHNs b3QsIHN0ZXA7CisrCisrICBzbG90ID0gaGFzaCAmIChpbmRleC0+aW5kZXhfdGFibGVfc2xvdHMg LSAxKTsKKysgIHN0ZXAgPSAoKGhhc2ggKiAxNykgJiAoaW5kZXgtPmluZGV4X3RhYmxlX3Nsb3Rz IC0gMSkpIHwgMTsKKysKKysgIGZvciAoOzspCisrICAgIHsKKysgICAgICAvKiBDb252ZXJ0IGEg c2xvdCBudW1iZXIgdG8gYW4gb2Zmc2V0IGludG8gdGhlIHRhYmxlLiAgKi8KKysgICAgICBvZmZz ZXRfdHlwZSBpID0gMiAqIHNsb3Q7CisrICAgICAgY29uc3QgY2hhciAqc3RyOworKyAgICAgIGlm IChpbmRleC0+aW5kZXhfdGFibGVbaV0gPT0gMCAmJiBpbmRleC0+aW5kZXhfdGFibGVbaSArIDFd ID09IDApCisrCXJldHVybiAwOworKworKyAgICAgIHN0ciA9IGluZGV4LT5jb25zdGFudF9wb29s ICsgTUFZQkVfU1dBUCAoaW5kZXgtPmluZGV4X3RhYmxlW2ldKTsKKysgICAgICBpZiAoIXN0cmNt cCAobmFtZSwgc3RyKSkKKysJeworKwkgICp2ZWNfb3V0ID0gKG9mZnNldF90eXBlICopIChpbmRl eC0+Y29uc3RhbnRfcG9vbAorKwkJCQkgICAgICArIE1BWUJFX1NXQVAgKGluZGV4LT5pbmRleF90 YWJsZVtpICsgMV0pKTsKKysJICByZXR1cm4gMTsKICsJfQotKyAgICAgIC8qIFBhc3MgaXQgbm93 IGFzIHRoZSByZWd1bGFyIERXX0FUX3VwcGVyX2JvdW5kLiAgKi8KKysKKysgICAgICBzbG90ID0g KHNsb3QgKyBzdGVwKSAmIChpbmRleC0+aW5kZXhfdGFibGVfc2xvdHMgLSAxKTsKICsgICAgfQor K30KICsKLSsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxh bmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKKysvKiBSZWFkIHRoZSBpbmRleCBmaWxlLiAgSWYgZXZl cnl0aGluZyB3ZW50IG9rLCBpbml0aWFsaXplIHRoZSAicXVpY2siCisrICAgZWxlbWVudHMgb2Yg YWxsIHRoZSBDVXMgYW5kIHJldHVybiAxLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCisrc3Rh dGljIGludAorK2R3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7 CisrICBjaGFyICphZGRyOworKyAgc3RydWN0IG1hcHBlZF9pbmRleCAqbWFwOworKyAgb2Zmc2V0 X3R5cGUgKm1ldGFkYXRhOworKyAgY29uc3QgZ2RiX2J5dGUgKmN1X2xpc3Q7CisrICBvZmZzZXRf dHlwZSBjdV9saXN0X2VsZW1lbnRzOworKworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2Ri X2luZGV4LmFzZWN0aW9uID09IE5VTEwKKysgICAgICB8fCBkd2FyZjJfcGVyX29iamZpbGUtPmdk Yl9pbmRleC5zaXplID09IDApCisrICAgIHJldHVybiAwOworKyAgZHdhcmYyX3JlYWRfc2VjdGlv biAob2JqZmlsZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4KTsKKysKKysgIGFkZHIg PSBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5idWZmZXI7CisrICAvKiBWZXJzaW9uIGNo ZWNrLiAgKi8KKysgIGlmIChNQVlCRV9TV0FQICgqKG9mZnNldF90eXBlICopIGFkZHIpICE9IDEp CisrICAgIHJldHVybiAwOworKworKyAgbWFwID0gT0JTVEFDS19aQUxMT0MgKCZvYmpmaWxlLT5v YmpmaWxlX29ic3RhY2ssIHN0cnVjdCBtYXBwZWRfaW5kZXgpOworKyAgbWFwLT50b3RhbF9zaXpl ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6ZTsKKysKKysgIG1ldGFkYXRhID0g KG9mZnNldF90eXBlICopIChhZGRyICsgc2l6ZW9mIChvZmZzZXRfdHlwZSkpOworKyAgY3VfbGlz dCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVswXSk7CisrICBjdV9saXN0X2VsZW1lbnRz ID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSkgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVswXSkp CisrCQkgICAgICAvIDgpOworKyAgbWFwLT5hZGRyZXNzX3RhYmxlID0gYWRkciArIE1BWUJFX1NX QVAgKG1ldGFkYXRhWzFdKTsKKysgIG1hcC0+YWRkcmVzc190YWJsZV9zaXplID0gKE1BWUJFX1NX QVAgKG1ldGFkYXRhWzJdKQorKwkJCSAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSkpOwor KyAgbWFwLT5pbmRleF90YWJsZSA9IChvZmZzZXRfdHlwZSAqKSAoYWRkciArIE1BWUJFX1NXQVAg KG1ldGFkYXRhWzJdKSk7CisrICBtYXAtPmluZGV4X3RhYmxlX3Nsb3RzID0gKChNQVlCRV9TV0FQ IChtZXRhZGF0YVszXSkKKysJCQkgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pKQorKwkJ CSAgICAvICgyICogc2l6ZW9mIChvZmZzZXRfdHlwZSkpKTsKKysgIG1hcC0+Y29uc3RhbnRfcG9v bCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVszXSk7CisrCisrICBpZiAoIWNyZWF0ZV9j dXNfZnJvbV9pbmRleCAob2JqZmlsZSwgbWFwLCBjdV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkK KysgICAgcmV0dXJuIDA7CisrCisrICBjcmVhdGVfYWRkcm1hcF9mcm9tX2luZGV4IChvYmpmaWxl LCBtYXApOworKworKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZSA9IG1hcDsKKysg IGR3YXJmMl9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXggPSAxOworKworKyAgcmV0dXJuIDE7Cisr fQorKworKy8qIEEgaGVscGVyIGZvciB0aGUgInF1aWNrIiBmdW5jdGlvbnMgd2hpY2ggc2V0cyB0 aGUgZ2xvYmFsCisrICAgZHdhcmYyX3Blcl9vYmpmaWxlIGFjY29yZGluZyB0byBPQkpGSUxFLiAg Ki8KKytzdGF0aWMgdm9pZAorK2R3Ml9zZXR1cCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisr eworKyAgZHdhcmYyX3Blcl9vYmpmaWxlID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJf b2JqZmlsZV9kYXRhX2tleSk7CisrICBnZGJfYXNzZXJ0IChkd2FyZjJfcGVyX29iamZpbGUpOwor K30KKysKKysvKiBBIGhlbHBlciBmb3IgdGhlICJxdWljayIgZnVuY3Rpb25zIHdoaWNoIGF0dGVt cHRzIHRvIHJlYWQgdGhlIGxpbmUKKysgICB0YWJsZSBmb3IgVEhJU19DVS4gICovCisrc3RhdGlj IHZvaWQKKytkdzJfcmVxdWlyZV9saW5lX2hlYWRlciAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs CisrCQkJIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoaXNfY3UpCisreworKyAgYmZkICph YmZkID0gb2JqZmlsZS0+b2JmZDsKKysgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGggPSBOVUxMOwor KyAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwczsK KysgIHN0cnVjdCBkaWVfaW5mbyAqY29tcF91bml0X2RpZTsKKysgIGdkYl9ieXRlICpiZWdfb2Zf Y29tcF91bml0LCAqaW5mb19wdHIsICpidWZmZXI7CisrICBpbnQgaGFzX2NoaWxkcmVuLCBpOwor KyAgc3RydWN0IGR3YXJmMl9jdSBjdTsKKysgIHVuc2lnbmVkIGludCBieXRlc19yZWFkLCBidWZm ZXJfc2l6ZTsKKysgIHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzIHJlYWRlcl9zcGVjczsKKysgIGNo YXIgKm5hbWUsICpjb21wX2RpcjsKKysKKysgIGlmICh0aGlzX2N1LT52LnF1aWNrLT5yZWFkX2xp bmVzKQorKyAgICByZXR1cm47CisrICB0aGlzX2N1LT52LnF1aWNrLT5yZWFkX2xpbmVzID0gMTsK KysKKysgIG1lbXNldCAoJmN1LCAwLCBzaXplb2YgKGN1KSk7CisrICBjdS5vYmpmaWxlID0gb2Jq ZmlsZTsKKysgIG9ic3RhY2tfaW5pdCAoJmN1LmNvbXBfdW5pdF9vYnN0YWNrKTsKKysKKysgIGNs ZWFudXBzID0gbWFrZV9jbGVhbnVwIChmcmVlX3N0YWNrX2NvbXBfdW5pdCwgJmN1KTsKKysKKysg IGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPmluZm8p OworKyAgYnVmZmVyX3NpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmluZm8uc2l6ZTsKKysgIGJ1 ZmZlciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXI7CisrICBpbmZvX3B0ciA9IGJ1 ZmZlciArIHRoaXNfY3UtPm9mZnNldDsKKysgIGJlZ19vZl9jb21wX3VuaXQgPSBpbmZvX3B0cjsK KysKKysgIGluZm9fcHRyID0gcGFydGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkICgmY3UuaGVhZGVy LCBpbmZvX3B0ciwKKysJCQkJCSAgYnVmZmVyLCBidWZmZXJfc2l6ZSwKKysJCQkJCSAgYWJmZCk7 CisrCisrICAvKiBDb21wbGV0ZSB0aGUgY3VfaGVhZGVyLiAgKi8KKysgIGN1LmhlYWRlci5vZmZz ZXQgPSBiZWdfb2ZfY29tcF91bml0IC0gYnVmZmVyOworKyAgY3UuaGVhZGVyLmZpcnN0X2RpZV9v ZmZzZXQgPSBpbmZvX3B0ciAtIGJlZ19vZl9jb21wX3VuaXQ7CisrCisrICB0aGlzX2N1LT5jdSA9 ICZjdTsKKysgIGN1LnBlcl9jdSA9IHRoaXNfY3U7CisrCisrICBkd2FyZjJfcmVhZF9hYmJyZXZz IChhYmZkLCAmY3UpOworKyAgbWFrZV9jbGVhbnVwIChkd2FyZjJfZnJlZV9hYmJyZXZfdGFibGUs ICZjdSk7CisrCisrICBpZiAodGhpc19jdS0+ZnJvbV9kZWJ1Z190eXBlcykKKysgICAgaW5mb19w dHIgKz0gOCAvKnNpZ25hdHVyZSovICsgY3UuaGVhZGVyLm9mZnNldF9zaXplOworKyAgaW5pdF9j dV9kaWVfcmVhZGVyICgmcmVhZGVyX3NwZWNzLCAmY3UpOworKyAgaW5mb19wdHIgPSByZWFkX2Z1 bGxfZGllICgmcmVhZGVyX3NwZWNzLCAmY29tcF91bml0X2RpZSwgaW5mb19wdHIsCisrCQkJICAg ICZoYXNfY2hpbGRyZW4pOworKworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChjb21wX3VuaXRfZGll LCBEV19BVF9zdG10X2xpc3QsICZjdSk7CisrICBpZiAoYXR0cikKICsgICAgewotKyAgICAgIFRZ UEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRf RFdBUkZfQkxPQ0s7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51 LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIs IGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgICB1bnNp Z25lZCBpbnQgbGluZV9vZmZzZXQgPSBEV19VTlNORCAoYXR0cik7CisrICAgICAgbGggPSBkd2Fy Zl9kZWNvZGVfbGluZV9oZWFkZXIgKGxpbmVfb2Zmc2V0LCBhYmZkLCAmY3UpOwogKyAgICB9Ci0r ICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0g bGFuZ3VhZ2VfYWRhKQorKyAgaWYgKGxoID09IE5VTEwpCiArICAgIHsKLSsgICAgICBzdHJ1Y3Qg ZGllX2luZm8gKnRhcmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1 ID0gY3U7Ci0rICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOworKyAgICAg IGRvX2NsZWFudXBzIChjbGVhbnVwcyk7CisrICAgICAgcmV0dXJuOworKyAgICB9CiArCi0rICAg ICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0 X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZp bGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBE V19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKKysgIGZpbmRfZmlsZV9hbmRfZGlyZWN0b3J5IChj b21wX3VuaXRfZGllLCAmY3UsICZuYW1lLCAmY29tcF9kaXIpOwogKwotKyAgICAgIFRZUEVfUkFO R0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZf TE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdh cmZfbG9jbGlzdC5sb2NsaXN0Ci0rICAgICAgICA9IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0 b24gKHRhcmdldF9sb2NfYXR0ciwgdGFyZ2V0X2N1KTsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC50eXBlCi0rICAgICAgICA9IGRpZV90 eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2Vf dHlwZSkgPSAxOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLS0gICAgICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKLS0gICAgICBpZiAoYXR0cikKLSsgICAgICBM T05HRVNUIGhpZ2g7CisrICB0aGlzX2N1LT52LnF1aWNrLT5saW5lcyA9IGxoOwogKwotKyAgICAg IGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCi0rCWhpZ2ggPSBkd2Fy ZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwotKyAgICAgIGVsc2UKLSAJewot LQkgIGludCBjb3VudCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMSk7 Ci0tCSAgaGlnaCA9IGxvdyArIGNvdW50IC0gMTsKLSsJICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJ TkVEIChyYW5nZV90eXBlKSA9IDE7Ci0rCSAgaGlnaCA9IGxvdyAtIDE7Ci0gCX0KLSsgICAgICBp ZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGhpZ2ggJiBuZWdhdGl2ZV9tYXNrKSkK LSsJaGlnaCB8PSBuZWdhdGl2ZV9tYXNrOwotKyAgICAgIFRZUEVfSElHSF9CT1VORCAocmFuZ2Vf dHlwZSkgPSBoaWdoOwotICAgICB9Ci0gCi0gICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4 cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwotQEAgLTY0MjEsMjAgKzY2 MDgsNDEgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCi0gCX0KLSAgICAgfQotIAotLSAgbmVnYXRpdmVfbWFzayA9Ci0tICAg IChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJhc2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9C SVQgLSAxKTsKLS0gIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAobG93ICYgbmVn YXRpdmVfbWFzaykpCi0tICAgIGxvdyB8PSBuZWdhdGl2ZV9tYXNrOwotLSAgaWYgKCFUWVBFX1VO U0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVfbWFzaykpCi0tICAgIGhpZ2gg fD0gbmVnYXRpdmVfbWFzazsKLSsgIC8qIERXX0FUX2JpdF9zdHJpZGUgaXMgY3VycmVudGx5IHVu c3VwcG9ydGVkIGFzIHdlIGNvdW50IGluIGJ5dGVzLiAgKi8KLSsgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOwotKyAgaWYgKGF0dHIgJiYgYXR0cl9mb3Jt X2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgdGhp c19jdS0+di5xdWljay0+ZmlsZV9uYW1lcworKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxl LT5vYmpmaWxlX29ic3RhY2ssCisrCQkgICAgIGxoLT5udW1fZmlsZV9uYW1lcyAqIHNpemVvZiAo Y2hhciAqKSk7CisrICBmb3IgKGkgPSAwOyBpIDwgbGgtPm51bV9maWxlX25hbWVzOyArK2kpCisr ICAgIHRoaXNfY3UtPnYucXVpY2stPmZpbGVfbmFtZXNbaV0gPSBmaWxlX2Z1bGxfbmFtZSAoaSAr IDEsIGxoLCBjb21wX2Rpcik7CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cHMpOworK30KKysK KysvKiBBIGhlbHBlciBmb3IgdGhlICJxdWljayIgZnVuY3Rpb25zIHdoaWNoIGNvbXB1dGVzIGFu ZCBjYWNoZXMgdGhlCisrICAgcmVhbCBwYXRoIGZvciBhIGdpdmVuIGZpbGUgbmFtZSBmcm9tIHRo ZSBsaW5lIHRhYmxlLgorKyAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIG11c3QgaGF2ZSBiZWVu IGNhbGxlZCBiZWZvcmUgdGhpcyBpcworKyAgIGludm9rZWQuICAqLworK3N0YXRpYyBjb25zdCBj aGFyICoKKytkdzJfcmVxdWlyZV9mdWxsX3BhdGggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor KwkJICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1LAorKwkJICAgICAgIGludCBp bmRleCkKKyt7CisrICBpZiAoIWN1LT52LnF1aWNrLT5mdWxsX25hbWVzKQorKyAgICBjdS0+di5x dWljay0+ZnVsbF9uYW1lcworKyAgICAgID0gT0JTVEFDS19DQUxMT0MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCisrCQkJY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lcywKKysJ CQlzaXplb2YgKGNoYXIgKikpOworKworKyAgaWYgKCFjdS0+di5xdWljay0+ZnVsbF9uYW1lc1tp bmRleF0pCisrICAgIGN1LT52LnF1aWNrLT5mdWxsX25hbWVzW2luZGV4XQorKyAgICAgID0gZ2Ri X3JlYWxwYXRoIChjdS0+di5xdWljay0+ZmlsZV9uYW1lc1tpbmRleF0pOworKworKyAgcmV0dXJu IGN1LT52LnF1aWNrLT5mdWxsX25hbWVzW2luZGV4XTsKKyt9CisrCisrc3RhdGljIHN0cnVjdCBz eW10YWIgKgorK2R3Ml9maW5kX2xhc3Rfc291cmNlX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCisreworKyAgaW50IGluZGV4OworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGlu ZGV4ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgLSAxOworKyAgcmV0dXJuIGR3 Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsCisrCQkJCSBkd2FyZjJfcGVyX29iamZpbGUt PmFsbF9jb21wX3VuaXRzW2luZGV4XSk7CisrfQorKworK3N0YXRpYyB2b2lkCisrZHcyX2Zvcmdl dF9jYWNoZWRfc291cmNlX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorK3sKKysgIGlu dCBpOworKworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGZvciAoaSA9IDA7IGkgPCBkd2Fy ZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQogKyAgICB7Ci0rICAgICAgVFlQRV9S QU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAotKyAgICAgICAgPSBSQU5H RV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfYmxvY2sgPQotKwkJCQkJZHdhcmYyX2F0dHJfdG9f bG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlw ZSkgPSAxOworKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Bl cl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKKysKKysgICAgICBpZiAoY3UtPnYucXVpY2st PmZ1bGxfbmFtZXMpCisrCXsKKysJICBpbnQgajsKKysKKysJICBmb3IgKGogPSAwOyBqIDwgY3Ut PnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lczsgKytqKQorKwkgICAgeGZyZWUgKCh2b2lk ICopIGN1LT52LnF1aWNrLT5mdWxsX25hbWVzW2pdKTsKKysJfQogKyAgICB9Ci0rICBlbHNlIGlm IChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2Vf YWRhKQorK30KKysKKytzdGF0aWMgaW50CisrZHcyX2xvb2t1cF9zeW10YWIgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lLAorKwkJICAgY29uc3QgY2hhciAqZnVsbF9w YXRoLCBjb25zdCBjaGFyICpyZWFsX3BhdGgsCisrCQkgICBzdHJ1Y3Qgc3ltdGFiICoqcmVzdWx0 KQorK3sKKysgIGludCBpOworKyAgaW50IGNoZWNrX2Jhc2VuYW1lID0gbGJhc2VuYW1lIChuYW1l KSA9PSBuYW1lOworKyAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqYmFzZV9jdSA9IE5VTEw7 CisrCisrICBkdzJfc2V0dXAgKG9iamZpbGUpOworKyAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9w ZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZGll X2luZm8gKnRhcmdldF9kaWU7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0g Y3U7Ci0rICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotIAotLSAgcmFu Z2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7 Ci0rICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAm dGFyZ2V0X2N1KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3Ut Pm9iamZpbGUpOwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRf ZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKLSAKLS0gIC8qIE1hcmsgYXJyYXlzIHdp dGggZHluYW1pYyBsZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0g ICAgIGxlbmd0aC4gIEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBn ZXRzIGltcGxlbWVudGVkIGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5 IGVsZW1lbnRzLiAgKi8KLS0gIGlmIChhdHRyICYmIGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9j azEpCi0tICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rICAg ICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdF X0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAot KyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIs IHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9z dHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9k aWUsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Cisr ICAgICAgaW50IGo7CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2Fy ZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKworKyAgICAgIGlmIChjdS0+di5x dWljay0+c3ltdGFiKQorKwljb250aW51ZTsKKysKKysgICAgICBkdzJfcmVxdWlyZV9saW5lX2hl YWRlciAob2JqZmlsZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYucXVpY2stPmxpbmVzKQorKwlj b250aW51ZTsKKysKKysgICAgICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5u dW1fZmlsZV9uYW1lczsgKytqKQorKwl7CisrCSAgY29uc3QgY2hhciAqdGhpc19uYW1lID0gY3Ut PnYucXVpY2stPmZpbGVfbmFtZXNbal07CisrCisrCSAgaWYgKEZJTEVOQU1FX0NNUCAobmFtZSwg dGhpc19uYW1lKSA9PSAwKQorKwkgICAgeworKwkgICAgICAqcmVzdWx0ID0gZHcyX2luc3RhbnRp YXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworKwkgICAgICByZXR1cm4gMTsKKysJICAgIH0KKysK KysJICBpZiAoY2hlY2tfYmFzZW5hbWUgJiYgISBiYXNlX2N1CisrCSAgICAgICYmIEZJTEVOQU1F X0NNUCAobGJhc2VuYW1lICh0aGlzX25hbWUpLCBuYW1lKSA9PSAwKQorKwkgICAgYmFzZV9jdSA9 IGN1OworKworKwkgIGlmIChmdWxsX3BhdGggIT0gTlVMTCkKKysJICAgIHsKKysJICAgICAgY29u c3QgY2hhciAqdGhpc19mdWxsX25hbWUgPSBkdzJfcmVxdWlyZV9mdWxsX3BhdGggKG9iamZpbGUs CisrCQkJCQkJCQkgIGN1LCBqKTsKKysKKysJICAgICAgaWYgKHRoaXNfZnVsbF9uYW1lCisrCQkg ICYmIEZJTEVOQU1FX0NNUCAoZnVsbF9wYXRoLCB0aGlzX2Z1bGxfbmFtZSkgPT0gMCkKKysJCXsK KysJCSAgKnJlc3VsdCA9IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1KTsKKysJ CSAgcmV0dXJuIDE7CisrCQl9CisrCSAgICB9CisrCisrCSAgaWYgKHJlYWxfcGF0aCAhPSBOVUxM KQorKwkgICAgeworKwkgICAgICBjb25zdCBjaGFyICp0aGlzX2Z1bGxfbmFtZSA9IGR3Ml9yZXF1 aXJlX2Z1bGxfcGF0aCAob2JqZmlsZSwKKysJCQkJCQkJCSAgY3UsIGopOworKworKwkgICAgICBp ZiAodGhpc19mdWxsX25hbWUgIT0gTlVMTCkKKysJCXsKKysJCSAgY2hhciAqcnAgPSBnZGJfcmVh bHBhdGggKHRoaXNfZnVsbF9uYW1lKTsKKysJCSAgaWYgKHJwICE9IE5VTEwgJiYgRklMRU5BTUVf Q01QIChyZWFsX3BhdGgsIHJwKSA9PSAwKQorKwkJICAgIHsKKysJCSAgICAgIHhmcmVlIChycCk7 CisrCQkgICAgICAqcmVzdWx0ID0gZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3Up OworKwkJICAgICAgcmV0dXJuIDE7CisrCQkgICAgfQorKwkJICB4ZnJlZSAocnApOworKwkJfQor KwkgICAgfQorKwl9CiArICAgIH0KLSsgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Nv bnN0YW50IChhdHRyKSkKKysKKysgIGlmIChiYXNlX2N1KQogKyAgICB7Ci0rICAgICAgVFlQRV9C WVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUg KGF0dHIsIDApOwotKyAgICAgIGlmIChUWVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSA9PSAw KQotKwljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0rCQkgICBfKCJGb3VuZCBEV19B VF9ieXRlX3N0cmlkZSB3aXRoIHVuc3VwcG9ydGVkIHZhbHVlIDAiKSk7CisrICAgICAgKnJlc3Vs dCA9IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGJhc2VfY3UpOworKyAgICAgIHJl dHVybiAxOwogKyAgICB9Ci0gCi0gICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOwotICAg aWYgKG5hbWUpCi1AQCAtODcxNCwxMCArODkyMiwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChz dHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0gICAgICAoaS5lLiB3 aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwotICAgICAg cmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2Fpbiwg aXQgbWlnaHQKLSAgICAgIG5vdCBiZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQg aXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCi0tICAgICBvciBtZW1vcnkgbnVtYmVycyBzaG93IG1l IG90aGVyd2lzZS4gICovCi0rICAgICBvciBtZW1vcnkgbnVtYmVycyBzaG93IG1lIG90aGVyd2lz ZS4KLSsgICAgIAotKyAgICAgU1lNQk9MX0NMQVNTIG1heSBnZXQgb3ZlcnJpZGVuIGJ5IGR3YXJm Ml9zeW1ib2xfbWFya19jb21wdXRlZC4gICovCi0gCi0tICBkd2FyZjJfc3ltYm9sX21hcmtfY29t cHV0ZWQgKGF0dHIsIHN5bSwgY3UpOwotICAgU1lNQk9MX0NMQVNTIChzeW0pID0gTE9DX0NPTVBV VEVEOwotKyAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRyLCBzeW0sIGN1KTsKLSB9 Ci0gCi0gLyogR2l2ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZp Z3VyZSBvdXQgaWYgd2UgbmVlZAotQEAgLTg3NDgsNiArODk1OCw4IEBAIG5ld19zeW1ib2wgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gCQkJCQkgICAgIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOwotICAgICAgIE9CSlNUQVQg KG9iamZpbGUsIG5fc3ltcysrKTsKLSAgICAgICBtZW1zZXQgKHN5bSwgMCwgc2l6ZW9mIChzdHJ1 Y3Qgc3ltYm9sKSk7Ci0rICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNr aW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLwotKyAgICAgIFNZTUJPTF9DT01Q VVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7Ci0gCi0gICAgICAgLyogQ2Fj aGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xlZCBmb3JtIChpZiBh bnkpLiAgKi8KLSAgICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5bSkgPSBjdS0+bGFuZ3VhZ2U7Ci1A QCAtOTM3OSw2ICs5NTkxLDkgQEAgcmVhZF90eXBlX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0rICBpZiAo dGhpc190eXBlKQotKyAgICBmaW5hbGl6ZV90eXBlICh0aGlzX3R5cGUpOwotKwotICAgcmV0dXJu IHRoaXNfdHlwZTsKLSB9Ci0gCi1AQCAtMTE5ODMsNjcgKzEyMTk4LDEwMiBAQCBhdHRyX2Zvcm1f aXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCi0gICAgIH0KLSB9Ci0gCi0tc3Rh dGljIHZvaWQKLS1kd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLS0JCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotKy8qIENvbnZlcnQgRFdfQkxPQ0sgaW50byBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24u ICBBVFRSIG11c3QgYmUgYSBEV19CTE9DSwotKyAgIGF0dHJpYnV0ZSB0eXBlLiAgKi8KICsKLStz dGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2Nl eHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK LSB7Ci0tICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKQotLSAgICAgIC8q ICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUg b3V0c2lkZQotLQkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21w bGFpbnQgaW4gdGhlCi0tCSBvdGhlciBicmFuY2guICAqLwotLSAgICAgICYmIERXX1VOU05EIChh dHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpCi0tICAgIHsKLS0gICAgICBzdHJ1 Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwotKyAgc3RydWN0IGR3YXJmMl9sb2NleHBy X2JhdG9uICpiYXRvbjsKLSAKLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xv Y2xpc3RfYmF0b24pKTsKLS0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAg ICBnZGJfYXNzZXJ0IChiYXRvbi0+cGVyX2N1KTsKLSsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikpOwotIAotLSAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9w ZXJfb2JqZmlsZS0+b2JqZmlsZSwKLS0JCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwot KyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywg c2l6ZW9mICgqYmF0b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2Ri X2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7Ci0gCi0tICAgICAgLyogV2UgZG9uJ3Qga25vdyBob3cg bG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQotLQkgZG9uJ3QgcnVu IG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlvbi4gICovCi0tICAgICAgYmF0b24tPnNpemUgPSBk d2FyZjJfcGVyX29iamZpbGUtPmxvYy5zaXplIC0gRFdfVU5TTkQgKGF0dHIpOwotLSAgICAgIGJh dG9uLT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0 dHIpOwotLSAgICAgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNzOwotLSAg ICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQotLQljb21wbGFpbnQgKCZzeW1maWxlX2NvbXBs YWludHMsCi0tCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQgd2l0aG91dCBzcGVjaWZ5aW5nIHRo ZSBDVSBiYXNlIGFkZHJlc3MuIikpOwotKyAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWlu ZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKLSsgICAgIGhlcmUsIG5vdCB0aGUgYWN0dWFsIGRh dGEuICBXZSdyZSBzdGlsbCBwb2ludGluZyBpbnRvIHRoZQotKyAgICAgaW5mb19idWZmZXIgZm9y IFNZTSdzIG9iamZpbGU7IHJpZ2h0IG5vdyB3ZSBuZXZlciByZWxlYXNlCi0rICAgICB0aGF0IGJ1 ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLSsgICAgIG5l ZWQgdG8gY2hhbmdlLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXpl OwotKyAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0rICBnZGJfYXNzZXJ0 IChiYXRvbi0+c2l6ZSA9PSAwIHx8IGJhdG9uLT5kYXRhICE9IE5VTEwpOworKyAgcmV0dXJuIDA7 CisrfQogKwotKyAgcmV0dXJuIGJhdG9uOworK3N0YXRpYyBzdHJ1Y3Qgc3ltdGFiICoKKytkdzJf bG9va3VwX3N5bWJvbCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBibG9ja19pbmRleCwK KysJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGRvbWFpbl9lbnVtIGRvbWFpbikKKyt7CisrICAvKiBX ZSBkbyBhbGwgdGhlIHdvcmsgaW4gdGhlIHByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZyBob29r CisrICAgICBpbnN0ZWFkLiAgKi8KKysgIHJldHVybiBOVUxMOwogK30KLSAKLStzdGF0aWMgc3Ry dWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICoKLStkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9u IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKysKKysvKiBB IGhlbHBlciBmdW5jdGlvbiB0aGF0IGV4cGFuZHMgYWxsIHN5bXRhYnMgdGhhdCBob2xkIGFuIG9i amVjdAorKyAgIG5hbWVkIE5BTUUuICAqLworK3N0YXRpYyB2b2lkCisrZHcyX2RvX2V4cGFuZF9z eW10YWJzX21hdGNoaW5nIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFt ZSkKICt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOworKyAgZHcyX3Nl dHVwIChvYmpmaWxlKTsKICsKLSsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2Vk IERJRSBtYXkgYmUgbWlzc2luZyBpZiB0aGUgcmVmZXJlbmNlZAotKyAgICAgdmFyaWFibGUgaGFz IGJlZW4gb3B0aW1pemVkIG91dC4gICovCi0rICBpZiAoIWF0dHIpCi0rICAgIHJldHVybiBOVUxM OworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCisrICAgIHsKKysgICAg ICBvZmZzZXRfdHlwZSAqdmVjOwogKwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Bl cl9vYmpmaWxlLT5vYmpmaWxlLAotKwkJICAgICAgICZkd2FyZjJfcGVyX29iamZpbGUtPmxvYyk7 CisrICAgICAgaWYgKGZpbmRfc2xvdF9pbl9tYXBwZWRfaGFzaCAoZHdhcmYyX3Blcl9vYmpmaWxl LT5pbmRleF90YWJsZSwKKysJCQkJICAgIG5hbWUsICZ2ZWMpKQorKwl7CisrCSAgb2Zmc2V0X3R5 cGUgaSwgbGVuID0gTUFZQkVfU1dBUCAoKnZlYyk7CisrCSAgZm9yIChpID0gMDsgaSA8IGxlbjsg KytpKQorKwkgICAgeworKwkgICAgICBvZmZzZXRfdHlwZSBjdV9pbmRleCA9IE1BWUJFX1NXQVAg KHZlY1tpICsgMV0pOworKwkgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdTsKKysJ ICAgICAgY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2N1X2luZGV4XTsK KysJICAgICAgZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOworKwkgICAgfQor Kwl9CisrICAgIH0KKyt9CiArCi0rICBpZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQg KGF0dHIpCi0rCS8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9m ZnNldCBtYXkgYmUgb3V0c2lkZQotKwkgICB0aGUgc2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91 Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAgKi8KLSsJJiYg RFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSkpCi0rICAgIHJl dHVybiBOVUxMOworK3N0YXRpYyB2b2lkCisrZHcyX3ByZV9leHBhbmRfc3ltdGFic19tYXRjaGlu ZyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCSBpbnQga2luZCwgY29uc3QgY2hhciAq bmFtZSwKKysJCQkJIGRvbWFpbl9lbnVtIGRvbWFpbikKKyt7CisrICBkdzJfZG9fZXhwYW5kX3N5 bXRhYnNfbWF0Y2hpbmcgKG9iamZpbGUsIG5hbWUpOworK30KICsKLSsgIGJhdG9uID0gb2JzdGFj a19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJIHNpemVvZiAoc3Ry dWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7Ci0rICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9j dTsKLSsgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOworK3N0YXRpYyB2b2lkCisrZHcyX3By aW50X3N0YXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICBpbnQgaSwgY291bnQ7 CiArCi0rICAvKiBXZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBsb2NhdGlvbiBsaXN0IGlzLCBi dXQgbWFrZSBzdXJlIHdlCi0rICAgICBkb24ndCBydW4gb2ZmIHRoZSBlZGdlIG9mIHRoZSBzZWN0 aW9uLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSAt IERXX1VOU05EIChhdHRyKTsKLSsgIGJhdG9uLT5kYXRhID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5s b2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotKyAgYmF0b24tPmJhc2VfYWRkcmVzcyA9IGN1 LT5iYXNlX2FkZHJlc3M7Ci0rICBpZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKLSsgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkgICAgICAgXygiTG9jYXRpb24gbGlzdCB1c2Vk IHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKKysgIGR3Ml9zZXR1 cCAob2JqZmlsZSk7CisrICBjb3VudCA9IDA7CisrICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgICAgeworKyAgICAgIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tp XTsKICsKLSsgIHJldHVybiBiYXRvbjsKKysgICAgICBpZiAoIWN1LT52LnF1aWNrLT5zeW10YWIp CisrCSsrY291bnQ7CisrICAgIH0KKysgIHByaW50Zl9maWx0ZXJlZCAoXygiICBOdW1iZXIgb2Yg dW5yZWFkIENVczogJWRcbiIpLCBjb3VudCk7CiArfQogKwotKy8qIFNZTSBtYXkgZ2V0IGl0cyBT WU1CT0xfQ0xBU1Mgb3ZlcnJpZGVuIG9uIGludmFsaWQgQVRUUiBjb250ZW50LiAgKi8KKytzdGF0 aWMgdm9pZAorK2R3Ml9kdW1wIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyt7CisrICAvKiBO b3RoaW5nIHdvcnRoIHByaW50aW5nLiAgKi8KKyt9CiArCiArc3RhdGljIHZvaWQKLStkd2FyZjJf c3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1i b2wgKnN5bSwKLSsJCQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorK2R3Ml9yZWxvY2F0ZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBzZWN0aW9uX29mZnNldHMgKm5ld19vZmZz ZXRzLAorKwkgICAgICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSkKICt7Ci0rICBzdHJ1 Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3RfYmF0b247CisrICAvKiBUaGVyZSdzIG5v dGhpbmcgdG8gcmVsb2NhdGUgaGVyZS4gICovCisrfQogKwotKyAgbG9jbGlzdF9iYXRvbiA9IGR3 YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGlmIChsb2NsaXN0X2Jh dG9uKQorK3N0YXRpYyB2b2lkCisrZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkJCSBjb25zdCBjaGFyICpmdW5jX25hbWUpCisrewor KyAgZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLCBmdW5jX25hbWUpOwor K30KKysKKytzdGF0aWMgdm9pZAorK2R3Ml9leHBhbmRfYWxsX3N5bXRhYnMgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlKQorK3sKKysgIGludCBpOworKworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsK KysgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytp KQogKyAgICB7Ci0gICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9j bGlzdF9mdW5jczsKLS0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBiYXRvbjsK LSsgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9uOworKyAg ICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5h bGxfY29tcF91bml0c1tpXTsKKysKKysgICAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpm aWxlLCBjdSk7CiArICAgIH0KLSsgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp CisrfQorKworK3N0YXRpYyB2b2lkCisrZHcyX2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5hbWUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorKwkJCQkgIGNvbnN0IGNoYXIgKmZpbGVuYW1lKQor K3sKKysgIGludCBpOworKworKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGZvciAoaSA9IDA7 IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQogKyAgICB7Ci0rICAg ICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsKLSsg ICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2NleHBy X2JhdG9uIChhdHRyLCBjdSk7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgewotLSAgICAgIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247Ci0rICAgICAgZHdhcmYyX2ludmFsaWRfYXR0 cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKLSsJCQkJCSAgICAg U1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7Ci0gCi0tICAgICAgYmF0b24gPSBvYnN0YWNrX2Fs bG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLS0JCQkgICAgIHNpemVvZiAoc3Ry dWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7Ci0tICAgICAgYmF0b24tPnBlcl9jdSA9IGN1LT5w ZXJfY3U7Ci0tICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7Ci0rICAgICAgLyogU29t ZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFs aWRpdHkuICAqLwotIAotLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotLQl7 Ci0tCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBv aW50ZXIKLS0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9p bnRpbmcgaW50byB0aGUKLS0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmln aHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKLS0JICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4gd2Ug ZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKLS0JICAgICBuZWVkIHRvIGNoYW5nZS4gICov Ci0tCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7Ci0tCSAgYmF0b24tPmRh dGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICBk d2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRp b24iLAotLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKLS0JICBiYXRvbi0+c2l6 ZSA9IDA7Ci0tCSAgYmF0b24tPmRhdGEgPSBOVUxMOwotLQl9Ci0rICAgICAgU1lNQk9MX0NPTVBV VEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKLSsgICAgICBTWU1CT0xfTE9D QVRJT05fQkFUT04gKHN5bSkgPSBOVUxMOwotIAotLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMg KHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7Ci0tICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JB VE9OIChzeW0pID0gYmF0b247Ci0rICAgICAgLyogRm9yIGZ1bmN0aW9ucyBhIG1pc3NpbmcgRFdf QVRfZnJhbWVfYmFzZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCi0rCSB3aG9sZSBmdW5jdGlv biBkZWZpbml0aW9uLCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4gICovCi0rICAgICAg aWYgKGF0dHItPm5hbWUgPT0gRFdfQVRfbG9jYXRpb24pCi0rCVNZTUJPTF9DTEFTUyAoc3ltKSA9 IExPQ19PUFRJTUlaRURfT1VUOwotICAgICB9Ci0gfQotIAotQEAgLTEyMzcyLDYgKzEyNjIyLDMx IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQg Kml0ZW1fcmhzKQotICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7 Ci0gfQotIAotKy8qIEZpbGwgaW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5 cGUgRElFcy4gICovCisrICAgICAgaW50IGo7CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwogKwotK3N0 YXRpYyB2b2lkCi0rZmV0Y2hfZGllX3R5cGVfYXR0cnMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorKyAgICAg IGlmIChjdS0+di5xdWljay0+c3ltdGFiKQorKwljb250aW51ZTsKKysKKysgICAgICBkdzJfcmVx dWlyZV9saW5lX2hlYWRlciAob2JqZmlsZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYucXVpY2st PmxpbmVzKQorKwljb250aW51ZTsKKysKKysgICAgICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVp Y2stPmxpbmVzLT5udW1fZmlsZV9uYW1lczsgKytqKQorKwl7CisrCSAgY29uc3QgY2hhciAqdGhp c19uYW1lID0gY3UtPnYucXVpY2stPmZpbGVfbmFtZXNbal07CisrCSAgaWYgKHN0cmNtcCAodGhp c19uYW1lLCBmaWxlbmFtZSkgPT0gMCkKKysJICAgIHsKKysJICAgICAgZHcyX2luc3RhbnRpYXRl X3N5bXRhYiAob2JqZmlsZSwgY3UpOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQorKyAg ICB9CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICoKKytkdzJfZmluZF9zeW1ib2xfZmlsZSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCiArewotKyAgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cjsKKysgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1OworKyAg b2Zmc2V0X3R5cGUgKnZlYzsKICsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9k YXRhX2xvY2F0aW9uLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsg ICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLICh0eXBlKSA9IGR3YXJmMl9hdHRyX3Rv X2xvY2V4cHJfYmF0b24gKGF0dHIsCi0rCQkJCQkJCQkJICBjdSk7Ci0rICBnZGJfYXNzZXJ0ICgh VFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgKHR5cGUpKTsKKysgIGR3Ml9zZXR1cCAob2JqZmls ZSk7CiArCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYWxsb2NhdGVkLCBjdSk7 Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgVFlQRV9BTExPQ0FURUQg KHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgZ2Ri X2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAodHlwZSkpOworKyAgaWYgKCFkd2FyZjJfcGVy X29iamZpbGUtPmluZGV4X3RhYmxlKQorKyAgICByZXR1cm4gTlVMTDsKICsKLSsgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3Jt X2lzX2Jsb2NrIChhdHRyKSkKLSsgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9IGR3YXJmMl9h dHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05P VF9BU1NPQ0lBVEVEICh0eXBlKSk7Ci0rfQorKyAgaWYgKCFmaW5kX3Nsb3RfaW5fbWFwcGVkX2hh c2ggKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUsCisrCQkJCSBuYW1lLCAmdmVjKSkK KysgICAgcmV0dXJuIE5VTEw7CiArCi0gLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBE SUUgdG8gVFlQRS4gIFNhdmUgaXQgaW4gQ1UncyBoYXNoCi0gICAgdGFibGUgaWYgbmVjZXNzYXJ5 LiAgRm9yIGNvbnZlbmllbmNlLCByZXR1cm4gVFlQRS4KLSAKLUBAIC0xMjM5NSw2ICsxMjY3MCw4 IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSB7Ci0gICBzdHJ1Y3QgZHdhcmYyX29mZnNldF9hbmRf dHlwZSAqKnNsb3QsIG9mczsKLSAKLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChkaWUsIHR5cGUs IGN1KTsKKysgIC8qIE5vdGUgdGhhdCB0aGlzIGp1c3QgbG9va3MgYXQgdGhlIHZlcnkgZmlyc3Qg b25lIG5hbWVkIE5BTUUgLS0gYnV0CisrICAgICBhY3R1YWxseSB3ZSBhcmUgbG9va2luZyBmb3Ig YSBmdW5jdGlvbi4gIGZpbmRfbWFpbl9maWxlbmFtZQorKyAgICAgc2hvdWxkIGJlIHJld3JpdHRl biBzbyB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSBhIGN1c3RvbSBob29rLiAgSXQKKysgICAgIGNv dWxkIGp1c3QgdXNlIHRoZSBvcmRpbmFyeSBzeW1ib2wgdGFibGVzLiAgKi8KKysgIC8qIHZlY1sw XSBpcyB0aGUgbGVuZ3RoLCB3aGljaCBtdXN0IGFsd2F5cyBiZSA+MC4gICovCisrICBjdSA9IGR3 YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbTUFZQkVfU1dBUCAodmVjWzFdKV07CiAr Ci0gICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBk YXRhIGlzIGFsd2F5cwotICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBU aGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKLSAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcg c28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotZGlmZiAtLWdpdCBhL2dkYi9l bGZyZWFkLmMgYi9nZGIvZWxmcmVhZC5jCi1pbmRleCA4YzAwOTM4Li40YWExZjNmIDEwMDY0NAot LS0tIGEvZ2RiL2VsZnJlYWQuYwotKysrIGIvZ2RiL2VsZnJlYWQuYwotQEAgLTM3LDYgKzM3LDcg QEAKLSAjaW5jbHVkZSAiY29tcGxhaW50cy5oIgotICNpbmNsdWRlICJkZW1hbmdsZS5oIgotICNp bmNsdWRlICJwc3ltcHJpdi5oIgotKyNpbmNsdWRlICJnZGJ0eXBlcy5oIgotIAotIGV4dGVybiB2 b2lkIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpOwotIAotQEAgLTE4MCw3ICsxODEsOCBAQCBy ZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBuYW1lX2xlbiwgaW50 IGNvcHlfbmFtZSwKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9vYmpmaWxl X2FyY2ggKG9iamZpbGUpOwotIAotLSAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlw ZSA9PSBtc3RfZmlsZV90ZXh0KQotKyAgaWYgKG1zX3R5cGUgPT0gbXN0X3RleHQgfHwgbXNfdHlw ZSA9PSBtc3RfZmlsZV90ZXh0Ci0rICAgICAgfHwgbXNfdHlwZSA9PSBtc3RfdGV4dF9nbnVfaWZ1 bmMpCi0gICAgIGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3RleHRfYWRkcmVzcyAoZ2RiYXJjaCwg YWRkcmVzcyk7Ci0gCi0gICByZXR1cm4gcHJpbV9yZWNvcmRfbWluaW1hbF9zeW1ib2xfZnVsbCAo bmFtZSwgbmFtZV9sZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywKLUBAIC0zODgsNyArMzkwLDEwIEBA IGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAotIAkg ICAgewotIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0ZfR0xPQkFMIHwgQlNGX1dFQUspKQot IAkJewotLQkJICBtc190eXBlID0gbXN0X3RleHQ7Ci0rCQkgIGlmIChzeW0tPmZsYWdzICYgQlNG X0dOVV9JTkRJUkVDVF9GVU5DVElPTikKLSsJCSAgICBtc190eXBlID0gbXN0X3RleHRfZ251X2lm dW5jOwotKwkJICBlbHNlCi0rCQkgICAgbXNfdHlwZSA9IG1zdF90ZXh0OwotIAkJfQotIAkgICAg ICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBzeW0tPm5hbWVbMV0gPT0gJ0wnKQot IAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NBTCkKLUBAIC01NjksNiArNTc0LDI1 MCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgdHlwZSwK LSAgICAgfQotIH0KLSAKLSsvKiBGSVhNRTogRGVsYXkgaXQgdGhyb3VnaCBlbGZfc3ltX2Zucy4g ICovCisrICBkdzJfcmVxdWlyZV9saW5lX2hlYWRlciAob2JqZmlsZSwgY3UpOworKyAgaWYgKCFj dS0+di5xdWljay0+bGluZXMpCisrICAgIHJldHVybiBOVUxMOworKworKyAgcmV0dXJuIGN1LT52 LnF1aWNrLT5maWxlX25hbWVzW2N1LT52LnF1aWNrLT5saW5lcy0+bnVtX2ZpbGVfbmFtZXMgLSAx XTsKKyt9CiArCiArc3RhdGljIHZvaWQKLStlbGZfcmVsX3BsdF9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCisrZHcyX21hcF9hZGFfc3lt dGFicyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkgICAgIGludCAoKndpbGRfbWF0Y2gp IChjb25zdCBjaGFyICosIGludCwgY29uc3QgY2hhciAqKSwKKysJCSAgICAgaW50ICgqaXNfbmFt ZV9zdWZmaXgpIChjb25zdCBjaGFyICopLAorKwkJICAgICB2b2lkICgqY2FsbGJhY2spIChzdHJ1 Y3Qgb2JqZmlsZSAqLAorKwkJCQkgICAgICAgc3RydWN0IHN5bXRhYiAqLCB2b2lkICopLAorKwkJ ICAgICBjb25zdCBjaGFyICpuYW1lLCBpbnQgZ2xvYmFsLAorKwkJICAgICBkb21haW5fZW51bSBu YW1lc3BhY2UsIGludCB3aWxkLAorKwkJICAgICB2b2lkICpkYXRhKQogK3sKLSsgIGJmZCAqb2Jm ZCA9IG9iamZpbGUtPm9iZmQ7Ci0rICBjb25zdCBzdHJ1Y3QgZWxmX2JhY2tlbmRfZGF0YSAqYmVk ID0gZ2V0X2VsZl9iYWNrZW5kX2RhdGEgKG9iZmQpOwotKyAgYXNlY3Rpb24gKnBsdCwgKnJlbHBs dCwgKmdvdF9wbHQ7Ci0rICB1bnNpZ25lZCB1OwotKyAgaW50IHBsdF9lbGZfaWR4OwotKyAgYmZk X3NpemVfdHlwZSByZWxvY19jb3VudCwgcmVsb2M7Ci0rICBjaGFyICpzdHJpbmdfYnVmZmVyID0g TlVMTDsKLSsgIHNpemVfdCBzdHJpbmdfYnVmZmVyX3NpemUgPSAwOwotKyAgc3RydWN0IGNsZWFu dXAgKmJhY2tfdG87Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IG9iamZpbGUtPmdkYmFy Y2g7Ci0rICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5i dWlsdGluX2RhdGFfcHRyOwotKyAgc2l6ZV90IHB0cl9zaXplID0gVFlQRV9MRU5HVEggKHB0cl90 eXBlKTsKKysgIC8qIEZvciBub3csIHdlIGRvbid0IHN1cHBvcnQgQWRhLCBzbyB0aGlzIGZ1bmN0 aW9uIGNhbid0IGJlCisrICAgICByZWFjaGVkLiAgKi8KKysgIGludGVybmFsX2Vycm9yIChfX0ZJ TEVfXywgX19MSU5FX18sCisrCQkgIF8oIm1hcF9hZGFfc3ltdGFicyBjYWxsZWQgdmlhIGluZGV4 IG1ldGhvZCIpKTsKKyt9CiArCi0rICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmls ZV9iYWNrbGluaykKLSsgICAgcmV0dXJuOworK3N0YXRpYyB2b2lkCisrZHcyX2V4cGFuZF9zeW10 YWJzX21hdGNoaW5nIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgICAgIGludCAoKmZp bGVfbWF0Y2hlcikgKGNvbnN0IGNoYXIgKiwgdm9pZCAqKSwKKysJCQkgICAgIGludCAoKm5hbWVf bWF0Y2hlcikgKGNvbnN0IGNoYXIgKiwgdm9pZCAqKSwKKysJCQkgICAgIGRvbWFpbl9lbnVtIGtp bmQsCisrCQkJICAgICB2b2lkICpkYXRhKQorK3sKKysgIGludCBpOworKyAgb2Zmc2V0X3R5cGUg aXRlcjsKICsKLSsgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIp OwotKyAgaWYgKHBsdCA9PSBOVUxMKQorKyAgZHcyX3NldHVwIChvYmpmaWxlKTsKKysgIGlmICgh ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZSkKICsgICAgcmV0dXJuOwotKyAgcGx0X2Vs Zl9pZHggPSBlbGZfc2VjdGlvbl9kYXRhIChwbHQpLT50aGlzX2lkeDsKICsKLSsgIGdvdF9wbHQg PSBiZmRfZ2V0X3NlY3Rpb25fYnlfbmFtZSAob2JmZCwgIi5nb3QucGx0Iik7Ci0rICBpZiAoZ290 X3BsdCA9PSBOVUxMKQotKyAgICByZXR1cm47CisrICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgICAgeworKyAgICAgIGludCBqOworKyAg ICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5h bGxfY29tcF91bml0c1tpXTsKICsKLSsgIC8qIFRoaXMgc2VhcmNoIGFsZ29yaXRobSBpcyBmcm9t IF9iZmRfZWxmX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3JlbG9jLiAgKi8KLSsgIGZvciAocmVscGx0 ID0gb2JmZC0+c2VjdGlvbnM7IHJlbHBsdCAhPSBOVUxMOyByZWxwbHQgPSByZWxwbHQtPm5leHQp Ci0rICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5zaF9pbmZvID09 IHBsdF9lbGZfaWR4Ci0rCSYmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5z aF90eXBlID09IFNIVF9SRUwKLSsJICAgIHx8IGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRo aXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTEEpKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKHJlbHBs dCA9PSBOVUxMKQotKyAgICByZXR1cm47CisrICAgICAgY3UtPnYucXVpY2stPm1hcmsgPSAwOwor KyAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFiKQorKwljb250aW51ZTsKICsKLSsgIGlmICgh IGJlZC0+cy0+c2x1cnBfcmVsb2NfdGFibGUgKG9iZmQsIHJlbHBsdCwgZHluX3N5bWJvbF90YWJs ZSwgVFJVRSkpCi0rICAgIHJldHVybjsKKysgICAgICBkdzJfcmVxdWlyZV9saW5lX2hlYWRlciAo b2JqZmlsZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYucXVpY2stPmxpbmVzKQorKwljb250aW51 ZTsKICsKLSsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywg JnN0cmluZ19idWZmZXIpOworKyAgICAgIGZvciAoaiA9IDA7IGogPCBjdS0+di5xdWljay0+bGlu ZXMtPm51bV9maWxlX25hbWVzOyArK2opCisrCXsKKysJICBpZiAoZmlsZV9tYXRjaGVyIChjdS0+ di5xdWljay0+ZmlsZV9uYW1lc1tqXSwgZGF0YSkpCisrCSAgICB7CisrCSAgICAgIGN1LT52LnF1 aWNrLT5tYXJrID0gMTsKKysJICAgICAgYnJlYWs7CisrCSAgICB9CisrCX0KKysgICAgfQogKwot KyAgcmVsb2NfY291bnQgPSByZWxwbHQtPnNpemUgLyBlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQp LT50aGlzX2hkci5zaF9lbnRzaXplOwotKyAgZm9yIChyZWxvYyA9IDA7IHJlbG9jIDwgcmVsb2Nf Y291bnQ7IHJlbG9jKyspCisrICBmb3IgKGl0ZXIgPSAwOworKyAgICAgICBpdGVyIDwgZHdhcmYy X3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7CisrICAgICAgICsr aXRlcikKICsgICAgewotKyAgICAgIGNvbnN0IGNoYXIgKm5hbWUsICpuYW1lX2dvdF9wbHQ7Ci0r ICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOwotKyAgICAgIENPUkVfQUREUiBhZGRy ZXNzOwotKyAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCA9ICJAZ290LnBsdCI7Ci0rICAgICAgc2l6 ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4gKHN1ZmZpeCk7Ci0rICAgICAgc2l6ZV90IG5hbWVfbGVu OworKyAgICAgIG9mZnNldF90eXBlIGlkeCA9IDIgKiBpdGVyOworKyAgICAgIGNvbnN0IGNoYXIg Km5hbWU7CisrICAgICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVjX2xlbiwgdmVjX2lkeDsKICsKLSsg ICAgICBuYW1lID0gYmZkX2FzeW1ib2xfbmFtZSAoKnJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10u c3ltX3B0cl9wdHIpOwotKyAgICAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKTsKLSsgICAgICBh ZGRyZXNzID0gcmVscGx0LT5yZWxvY2F0aW9uW3JlbG9jXS5hZGRyZXNzOwotKwotKyAgICAgIC8q IERvZXMgdGhlIHBvaW50ZXIgcmVzaWRlIGluIHRoZSAuZ290LnBsdCBzZWN0aW9uPyAgKi8KLSsg ICAgICBpZiAoIShiZmRfZ2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KSA8PSBhZGRyZXNz Ci0rICAgICAgICAgICAgJiYgYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdv dF9wbHQpCi0rCQkJICsgYmZkX2dldF9zZWN0aW9uX3NpemUgKGdvdF9wbHQpKSkKKysgICAgICBp ZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4XSA9PSAw CisrCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4 ICsgMV0gPT0gMCkKICsJY29udGludWU7CiArCi0rICAgICAgLyogV2UgY2Fubm90IGNoZWNrIGlm IE5BTUUgaXMgYSByZWZlcmVuY2UgdG8gbXN0X3RleHRfZ251X2lmdW5jIGFzIGluCi0rCSBPQkpG SUxFIHRoZSBzeW1ib2wgaXMgdW5kZWZpbmVkIGFuZCB0aGUgb2JqZmlsZSBoYXZpbmcgTkFNRSBk ZWZpbmVkCi0rCSBtYXkgbm90IHlldCBoYXZlIGJlZW4gbG9hZGVkLiAgKi8KKysgICAgICBuYW1l ID0gKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKysJICAg ICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsK ICsKLSsgICAgICBpZiAoc3RyaW5nX2J1ZmZlcl9zaXplIDwgbmFtZV9sZW4gKyBzdWZmaXhfbGVu KQorKyAgICAgIGlmICghICgqbmFtZV9tYXRjaGVyKSAobmFtZSwgZGF0YSkpCisrCWNvbnRpbnVl OworKworKyAgICAgIC8qIFRoZSBuYW1lIHdhcyBtYXRjaGVkLCBub3cgZXhwYW5kIGNvcnJlc3Bv bmRpbmcgQ1VzIHRoYXQgd2VyZQorKwkgbWFya2VkLiAgKi8KKysgICAgICB2ZWMgPSAob2Zmc2V0 X3R5cGUgKikgKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wK KysJCQkgICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVb aWR4ICsgMV0pOworKyAgICAgIHZlY19sZW4gPSBNQVlCRV9TV0FQICh2ZWNbMF0pOworKyAgICAg IGZvciAodmVjX2lkeCA9IDA7IHZlY19pZHggPCB2ZWNfbGVuOyArK3ZlY19pZHgpCiArCXsKLSsJ ICBzdHJpbmdfYnVmZmVyX3NpemUgPSAyICogKG5hbWVfbGVuICsgc3VmZml4X2xlbik7Ci0rCSAg c3RyaW5nX2J1ZmZlciA9IHhyZWFsbG9jIChzdHJpbmdfYnVmZmVyLCBzdHJpbmdfYnVmZmVyX3Np emUpOworKwkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1CisrCSAgICA9IGR3YXJmMl9w ZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbTUFZQkVfU1dBUCAodmVjW3ZlY19pZHggKyAxXSld OworKwkgIGlmIChjdS0+di5xdWljay0+bWFyaykKKysJICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10 YWIgKG9iamZpbGUsIGN1KTsKICsJfQotKyAgICAgIG1lbWNweSAoc3RyaW5nX2J1ZmZlciwgbmFt ZSwgbmFtZV9sZW4pOwotKyAgICAgIG1lbWNweSAoJnN0cmluZ19idWZmZXJbbmFtZV9sZW5dLCBz dWZmaXgsIHN1ZmZpeF9sZW4pOwotKwotKyAgICAgIG1zeW0gPSByZWNvcmRfbWluaW1hbF9zeW1i b2wgKHN0cmluZ19idWZmZXIsIG5hbWVfbGVuICsgc3VmZml4X2xlbiwgMSwKLSsJCQkJICAgIGFk ZHJlc3MsIG1zdF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCi0rCQkJCSAgICBvYmpmaWxlKTsKLSsg ICAgICBpZiAobXN5bSkKLSsJTVNZTUJPTF9TSVpFIChtc3ltKSA9IHB0cl9zaXplOwogKyAgICB9 Ci0rCi0rICBkb19jbGVhbnVwcyAoYmFja190byk7CiArfQogKwotKy8qIEZ1bmN0aW9uIGRvZXMg bm90IGNoZWNrIGZvciBwb3NzaWJseSBjcmVhdGVkIGR1cGxpY2l0aWVzIGluIHRoZSBjYWNoZS4K LSsgICBDaGVjayBpdCBieSByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSBmaXJzdC4gICovCi0r Ci0rc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCi0rZ251X2lmdW5jX3JlY29yZF9jYWNo ZV91bmNoZWNrZWQgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsCi0rCQkJCSAgQ09SRV9BRERS IGZ1bmN0aW9uX2FkZHJlc3MpCisrc3RhdGljIHN0cnVjdCBzeW10YWIgKgorK2R3Ml9maW5kX3Bj X3NlY3Rfc3ltdGFiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKysJCQkgc3RydWN0IG1pbmlt YWxfc3ltYm9sICptc3ltYm9sLAorKwkJCSBDT1JFX0FERFIgcGMsCisrCQkJIHN0cnVjdCBvYmpf c2VjdGlvbiAqc2VjdGlvbiwKKysJCQkgaW50IHdhcm5faWZfcmVhZGluKQogK3sKLSsgIHN0cnVj dCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OwotKyAgYXNlY3Rpb24gKnNlY3Q7Ci0r ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251X2lm dW5jX3RndDsKKysgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmRhdGE7CiArCi0rICBtc3lt ID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChmdW5jdGlvbl9hZGRyZXNzKTsKLSsgIGlm IChtc3ltID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKyAgaWYgKFNZTUJPTF9WQUxVRV9B RERSRVNTIChtc3ltKSAhPSBmdW5jdGlvbl9hZGRyZXNzKQotKyAgICByZXR1cm4gTlVMTDsKLSsg IC8qIG1pbmltYWwgc3ltYm9scyBoYXZlIGFsd2F5cyBTWU1CT0xfT0JKX1NFQ1RJT04gbm9uLU5V TEwuICAqLwotKyAgc2VjdCA9IFNZTUJPTF9PQkpfU0VDVElPTiAobXN5bSktPnRoZV9iZmRfc2Vj dGlvbjsKLSsgIG9iamZpbGUgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT5vYmpmaWxlOwor KyAgZHcyX3NldHVwIChvYmpmaWxlKTsKICsKLSsgIC8qIElmIC5wbHQganVtcHMgYmFjayB0byAu cGx0IHRoZSBzeW1ib2wgaXMgc3RpbGwgZGVmZXJyZWQgZm9yIGxhdGVyCi0rICAgICByZXNvbHV0 aW9uIGFuZCBpdCBoYXMgbm8gdXNlIGZvciBHREIuICBCZXNpZGVzICIudGV4dCIgdGhpcyBzeW1i b2wgY2FuCi0rICAgICByZXNpZGUgYWxzbyBpbiAiLm9wZCIgZm9yIHBwYzY0IGZ1bmN0aW9uIGRl c2NyaXB0b3IuICAqLwotKyAgaWYgKHN0cmNtcCAoYmZkX2dldF9zZWN0aW9uX25hbWUgKG9iamZp bGUtPm9iZmQsIHNlY3QpLCAiLnBsdCIpID09IDApCisrICBpZiAoIW9iamZpbGUtPnBzeW10YWJz X2FkZHJtYXApCiArICAgIHJldHVybiBOVUxMOwogKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1 bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAo IkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lm dW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9uYW1lKTsKKysgIGRhdGEgPSBh ZGRybWFwX2ZpbmQgKG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAsIHBjKTsKKysgIGlmICghZGF0 YSkKKysgICAgcmV0dXJuIE5VTEw7CiArCi0rICAvKiBDcmVhdGUgbmV3IGFsaWFzICJAZ251LWlm dW5jLXRndCIgZm9yIE1TWU0uICAqLwotKyAgbXN5bV9uZXcgPSByZWNvcmRfbWluaW1hbF9zeW1i b2wgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwKLSsJCQkJICAgIHN0cmxlbiAoZnVuY3Rp b25fbmFtZV9nbnVfaWZ1bmNfdGd0KSwgMSwKLSsJCQkJICAgIFNZTUJPTF9WQUxVRV9BRERSRVNT IChtc3ltKSwKLSsJCQkJICAgIE1TWU1CT0xfVFlQRSAobXN5bSksIHNlY3QsIG9iamZpbGUpOwot KyAgLyogU2hvdWxkIG5vdCBoYXBwZW4uICAqLwotKyAgaWYgKG1zeW1fbmV3ID09IE5VTEwpCi0r ICAgIHJldHVybiAwOworKyAgaWYgKHdhcm5faWZfcmVhZGluICYmIGRhdGEtPnYucXVpY2stPnN5 bXRhYikKKysgICAgd2FybmluZyAoXygiKEludGVybmFsIGVycm9yOiBwYyAlcyBpbiByZWFkIGlu IENVLCBidXQgbm90IGluIHN5bXRhYi4pXG4iKSwKKysJICAgICBwYWRkcmVzcyAoZ2V0X29iamZp bGVfYXJjaCAob2JqZmlsZSksIHBjKSk7CiArCi0rICAvKiBvYmpmaWxlLT5tc3ltYm9scyBhcnJh eSBpcyBhbHJlYWR5IGFsbG9jYXRlZCBvbiBvYnN0YWNrIGFuZCBpdCBjYW5ub3QgYmUKLSsgICAg IGVhc2lseSBleHRlbmRlZC4gIFRoZXJlZm9yZSA8dGFiPi1jb21wbGV0aW9uIG9uIHN5bWJvbCBu YW1lcyB3aWxsIG5ldmVyCi0rICAgICBzaG93IHRoZSBAZ251LWlmdW5jLXRndCBzeW1ib2wuICBM aW5rIGl0IGF0IGxlYXN0IHRvIHRoZSBoYXNoIHRhYmxlIHNvCi0rICAgICB0aGF0IHJlc29sdmVf Z251X2lmdW5jX2J5X2NhY2hlIGNhbiBmaW5kIGl0LiAgKi8KLSsgIGFkZF9taW5zeW1fdG9faGFz aF90YWJsZSAobXN5bV9uZXcsIG9iamZpbGUtPm1zeW1ib2xfaGFzaCk7Ci0rICAgIAotKyAgTVNZ TUJPTF9TSVpFIChtc3ltX25ldykgPSBNU1lNQk9MX1NJWkUgKG1zeW0pOwotKyAgcmV0dXJuIG1z eW1fbmV3OworKyAgcmV0dXJuIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGRhdGEp OwogK30KICsKLSsvKiBDaGVjayBmaXJzdCB0aGUgY2FjaGUgaWYgaXQgLSB1bmxpa2VseSAtIGhh cyBub3QgYmVlbiBwb3B1bGF0ZWQgc2luY2UKLSsgICBicF9nbnVfaWZ1bmNfcmVzb2x2ZXIgaGFz IGJlZW4gY3JlYXRlZC4gIGdudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkCi0rICAgY291 bGQgY3JlYXRlIGEgZHVwbGljYXRlIHN5bWJvbCBvdGhlcndpc2UuICAqLwotKwotK3ZvaWQKLStn bnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hh ciAqZnVuY3Rpb25fbmFtZSwKLSsJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKKytzdGF0 aWMgdm9pZAorK2R3Ml9tYXBfc3ltYm9sX25hbWVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK KysJCSAgICAgIHZvaWQgKCpmdW4pIChjb25zdCBjaGFyICosIHZvaWQgKiksCisrCQkgICAgICB2 b2lkICpkYXRhKQogK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKKysgIG9mZnNl dF90eXBlIGl0ZXI7CisrICBkdzJfc2V0dXAgKG9iamZpbGUpOworIAorLSAgLyogT25seSB0cnkg dG8gbW1hcCBzZWN0aW9ucyB3aGljaCBhcmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRv CistICAgICB3YXN0ZSBzcGFjZSBkdWUgdG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5 IG1tYXAgZm9yIHNlY3Rpb25zCistICAgICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KKysgIGlm ICghZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZSkKKysgICAgcmV0dXJuOworIAorLSAg aWYgKGluZm8tPnNpemUgPiA0ICogcGFnZXNpemUgJiYgKHNlY3RwLT5mbGFncyAmIFNFQ19SRUxP QykgPT0gMCkKKysgIGZvciAoaXRlciA9IDA7CisrICAgICAgIGl0ZXIgPCBkd2FyZjJfcGVyX29i amZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZV9zbG90czsKKysgICAgICAgKytpdGVyKQor ICAgICB7CistICAgICAgb2ZmX3QgcGdfb2Zmc2V0ID0gc2VjdHAtPmZpbGVwb3MgJiB+KHBhZ2Vz aXplIC0gMSk7CistICAgICAgc2l6ZV90IG1hcF9sZW5ndGggPSBpbmZvLT5zaXplICsgc2VjdHAt PmZpbGVwb3MgLSBwZ19vZmZzZXQ7CistICAgICAgY2FkZHJfdCByZXRidWYgPSBiZmRfbW1hcCAo YWJmZCwgMCwgbWFwX2xlbmd0aCwgUFJPVF9SRUFELAorLQkJCQkgTUFQX1BSSVZBVEUsIHBnX29m ZnNldCk7CisrICAgICAgb2Zmc2V0X3R5cGUgaWR4ID0gMiAqIGl0ZXI7CisrICAgICAgY29uc3Qg Y2hhciAqbmFtZTsKKysgICAgICBvZmZzZXRfdHlwZSAqdmVjLCB2ZWNfbGVuLCB2ZWNfaWR4Owor IAorLSAgICAgIGlmIChyZXRidWYgIT0gTUFQX0ZBSUxFRCkKKy0JeworLQkgIGluZm8tPndhc19t bWFwcGVkID0gMTsKKy0JICBpbmZvLT5idWZmZXIgPSByZXRidWYgKyAoc2VjdHAtPmZpbGVwb3Mg JiAocGFnZXNpemUgLSAxKSkgOworLSNpZiBIQVZFX1BPU0lYX01BRFZJU0UKKy0JICBwb3NpeF9t YWR2aXNlIChyZXRidWYsIG1hcF9sZW5ndGgsIFBPU0lYX01BRFZfV0lMTE5FRUQpOworLSNlbmRp ZgorLQkgIHJldHVybjsKKy0JfQorKyAgICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4 X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdID09IDAKKysJICAmJiBkd2FyZjJfcGVyX29iamZpbGUt PmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHggKyAxXSA9PSAwKQorKwljb250aW51ZTsKICsK LSsgIG1zeW0gPSByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7Ci0r ICBpZiAobXN5bSA9PSBOVUxMKQotKyAgICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tl ZCAoZnVuY3Rpb25fbmFtZSwgZnVuY3Rpb25fYWRkcmVzcyk7Ci0rICBlbHNlIGlmIChTWU1CT0xf VkFMVUVfQUREUkVTUyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKLSsgICAgewotKyAgICAg IC8qIFRoaXMgY2FzZSBpbmRpY2F0ZXMgYnVnZ3kgaW5mZXJpb3IgcHJvZ3JhbS4gIEdEQiB3b3Vs ZCBuZWVkIHRvIHVwZGF0ZQotKwkgaXRzIE1TWU0gY2FjaGUgc3ltYm9sIGZvciBmdW5jdGlvbl9h ZGRyZXNzLiAgQW55d2F5IEZVTkNUSU9OX05BTUUgaXMKLSsJIG5ldmVyIG5vcm1hbGx5IGZvdW5k IGluIHRoZSBjYXNlIGFzIGluIHN1Y2ggY2FzZSBubwotKwkgYnBfZ251X2lmdW5jX3Jlc29sdmVy IHdvdWxkIGJlIGNyZWF0ZWQgaW4gdGhlIGZpcnN0IHBsYWNlLiAgKi8KKysgICAgICBuYW1lID0g KGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKKysJICAgICAg KyBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsKICsK LSsgICAgICB3YXJuaW5nIChfKCJnbnUtaW5kaXJlY3QtZnVuY3Rpb24gXCIlc1wiIGhhcyBjaGFu Z2VkIGl0cyByZXNvbHZlZCAiCi0rCQkgImZ1bmN0aW9uX2FkZHJlc3MgZnJvbSAlcyB0byAlczsg R0RCIGlzIHVzaW5nIHRoZSBmb3JtZXIgb25lIiksCi0rCSAgICAgICBmdW5jdGlvbl9uYW1lLCBw YWRkcmVzcyAoZ2RiYXJjaCwgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pKSwKLSsJICAgICAg IHBhZGRyZXNzIChnZGJhcmNoLCBmdW5jdGlvbl9hZGRyZXNzKSk7Ci0rICAgIH0KKysgICAgICAo KmZ1bikgKG5hbWUsIGRhdGEpOworICAgICB9CistI2VuZGlmCiArfQotKwotK3N0YXRpYyBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKgotK3Jlc29sdmVfZ251X2lmdW5jX2J5X2dvdCAoY29uc3QgY2hh ciAqZnVuY3Rpb25fbmFtZSkKKyAKKy0gIC8qIElmIHdlIGdldCBoZXJlLCB3ZSBhcmUgYSBub3Jt YWwsIG5vdC1jb21wcmVzc2VkIHNlY3Rpb24uICAqLworLSAgaW5mby0+YnVmZmVyID0gYnVmCist ICAgID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgaW5mby0+c2l6 ZSk7Cisrc3RhdGljIHZvaWQKKytkdzJfbWFwX3N5bWJvbF9maWxlbmFtZXMgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorKwkJCSAgdm9pZCAoKmZ1bikgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hh ciAqLCB2b2lkICopLAorKwkJCSAgdm9pZCAqZGF0YSkKICt7Ci0rICBjaGFyICpmdW5jdGlvbl9u YW1lX2dvdF9wbHQ7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsKLSsgIGZ1bmN0aW9u X25hbWVfZ290X3BsdCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9uYW1lKSArIHN0cmxlbiAo IkBnb3QucGx0IikKLSsJCQkJICArIDEpOwotKyAgc3ByaW50ZiAoZnVuY3Rpb25fbmFtZV9nb3Rf cGx0LCAiJXNAZ290LnBsdCIsIGZ1bmN0aW9uX25hbWUpOwotKwotKyAgQUxMX1BTUEFDRV9PQkpG SUxFUyAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBvYmpmaWxlKQotKyAgICB7Ci0rICAgICAgYmZk ICpvYmZkID0gb2JqZmlsZS0+b2JmZDsKLSsgICAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9 IG9iamZpbGUtPmdkYmFyY2g7Ci0rICAgICAgc3RydWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRp bl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRhX3B0cjsKLSsgICAgICBzaXplX3QgcHRyX3Np emUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOwotKyAgICAgIENPUkVfQUREUiBwb2ludGVyX2Fk ZHJlc3MsIGZ1bmN0aW9uX2FkZHJlc3M7Ci0rICAgICAgYXNlY3Rpb24gKnBsdDsKLSsgICAgICBn ZGJfYnl0ZSAqYnVmID0gYWxsb2NhIChwdHJfc2l6ZSk7Ci0rICAgICAgc3RydWN0IG1pbmltYWxf c3ltYm9sICptc3ltOwotKwotKyAgICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1 bmN0aW9uX25hbWVfZ290X3BsdCwgTlVMTCwgb2JqZmlsZSk7Ci0rICAgICAgaWYgKG1zeW0gPT0g TlVMTCkKLSsJY29udGludWU7Ci0rICAgICAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bSkgIT0gbXN0 X3Nsb3RfZ290X3BsdCkKLSsJY29udGludWU7Ci0rICAgICAgcG9pbnRlcl9hZGRyZXNzID0gU1lN Qk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOwotKwotKyAgICAgIHBsdCA9IGJmZF9nZXRfc2VjdGlv bl9ieV9uYW1lIChvYmZkLCAiLnBsdCIpOwotKyAgICAgIGlmIChwbHQgPT0gTlVMTCkKLSsJY29u dGludWU7CisrICBpbnQgaTsKKyAKKy0gIC8qIFdoZW4gZGVidWdnaW5nIC5vIGZpbGVzLCB3ZSBt YXkgbmVlZCB0byBhcHBseSByZWxvY2F0aW9uczsgc2VlCistICAgICBodHRwOi8vc291cmNld2Fy ZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAwMi0wNC9tc2cwMDEzNi5odG1sIC4KKy0gICAgIFdlIG5l dmVyIGNvbXByZXNzIHNlY3Rpb25zIGluIC5vIGZpbGVzLCBzbyB3ZSBvbmx5IG5lZWQgdG8KKy0g ICAgIHRyeSB0aGlzIHdoZW4gdGhlIHNlY3Rpb24gaXMgbm90IGNvbXByZXNzZWQuICAqLworLSAg cmV0YnVmID0gc3ltZmlsZV9yZWxvY2F0ZV9kZWJ1Z19zZWN0aW9uIChvYmpmaWxlLCBzZWN0cCwg YnVmKTsKKy0gIGlmIChyZXRidWYgIT0gTlVMTCkKKysgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Cisr ICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkK KyAgICAgeworLSAgICAgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZjsKKy0gICAgICByZXR1cm47Cisr ICAgICAgaW50IGo7CisrICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2Fy ZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwogKwotKyAgICAgIGlmIChNU1lNQk9M X1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQotKwljb250aW51ZTsKLSsgICAgICBpZiAodGFyZ2V0 X3JlYWRfbWVtb3J5IChwb2ludGVyX2FkZHJlc3MsIGJ1ZiwgcHRyX3NpemUpICE9IDApCisrICAg ICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCiArCWNvbnRpbnVlOwotKyAgICAgIGZ1bmN0aW9u X2FkZHJlc3MgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOwogKwotKyAg ICAgIG1zeW0gPSBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25fbmFt ZSwgZnVuY3Rpb25fYWRkcmVzcyk7Ci0rICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgICBk dzJfcmVxdWlyZV9saW5lX2hlYWRlciAob2JqZmlsZSwgY3UpOworKyAgICAgIGlmICghY3UtPnYu cXVpY2stPmxpbmVzKQogKwljb250aW51ZTsKLSsgICAgICByZXR1cm4gbXN5bTsKLSsgICAgfQog KwotKyAgcmV0dXJuIE5VTEw7CisrICAgICAgZm9yIChqID0gMDsgaiA8IGN1LT52LnF1aWNrLT5s aW5lcy0+bnVtX2ZpbGVfbmFtZXM7ICsraikKKysJeworKwkgIGNvbnN0IGNoYXIgKnRoaXNfZnVs bF9uYW1lID0gZHcyX3JlcXVpcmVfZnVsbF9wYXRoIChvYmpmaWxlLCBjdSwgaik7CisrCSAgKCpm dW4pIChjdS0+di5xdWljay0+ZmlsZV9uYW1lc1tqXSwgdGhpc19mdWxsX25hbWUsIGRhdGEpOwor Kwl9CisgICAgIH0KICt9Ci0rCi0rc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStyZXNvbHZlX2du dV9pZnVuY19ieV9jYWNoZSAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSkKKyAKKy0gIGlmIChi ZmRfc2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCistICAgICAgfHwg YmZkX2JyZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNpemUpCistICAgIGVy cm9yIChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZyb20gJyVzJyIpLAor LQkgICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Cisrc3RhdGljIGludAorK2R3Ml9oYXNfc3lt Ym9scyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCiArewotKyAgY2hhciAqZnVuY3Rpb25fbmFt ZV9nbnVfaWZ1bmNfdGd0OwotKwotKyAgZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxs b2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpCi0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMt dGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVz QGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9uYW1lKTsKLSsKLSsgIHJldHVybiBsb29rdXBfbWlu aW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgTlVMTCwgTlVMTCk7Ci0r fQotKworKyAgcmV0dXJuIDE7CisgfQorIAorLS8qIEZpbGwgaW4gU0VDVFAsIEJVRlAgYW5kIFNJ WkVQIHdpdGggc2VjdGlvbiBpbmZvLCBnaXZlbiBPQkpGSUxFIGFuZAorLSAgIFNFQ1RJT05fTkFN RS4gKi8KKytjb25zdCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucyBkd2FyZjJfZ2RiX2lu ZGV4X2Z1bmN0aW9ucyA9CisreworKyAgZHcyX2hhc19zeW1ib2xzLAorKyAgZHcyX2ZpbmRfbGFz dF9zb3VyY2Vfc3ltdGFiLAorKyAgZHcyX2ZvcmdldF9jYWNoZWRfc291cmNlX2luZm8sCisrICBk dzJfbG9va3VwX3N5bXRhYiwKKysgIGR3Ml9sb29rdXBfc3ltYm9sLAorKyAgZHcyX3ByZV9leHBh bmRfc3ltdGFic19tYXRjaGluZywKKysgIGR3Ml9wcmludF9zdGF0cywKKysgIGR3Ml9kdW1wLAor KyAgZHcyX3JlbG9jYXRlLAorKyAgZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9mdW5jdGlvbiwKKysg IGR3Ml9leHBhbmRfYWxsX3N5bXRhYnMsCisrICBkdzJfZXhwYW5kX3N5bXRhYnNfd2l0aF9maWxl bmFtZSwKKysgIGR3Ml9maW5kX3N5bWJvbF9maWxlLAorKyAgZHcyX21hcF9hZGFfc3ltdGFicywK KysgIGR3Ml9leHBhbmRfc3ltdGFic19tYXRjaGluZywKKysgIGR3Ml9maW5kX3BjX3NlY3Rfc3lt dGFiLAorKyAgZHcyX21hcF9zeW1ib2xfbmFtZXMsCisrICBkdzJfbWFwX3N5bWJvbF9maWxlbmFt ZXMKKyt9OworIAorLXZvaWQKKy1kd2FyZjJfZ2V0X3NlY3Rpb25faW5mbyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgYXNlY3Rpb24gKipzZWN0cCwgZ2RiX2J5dGUgKipidWZwLAorLSAgICAgICAgICAg ICAgICAgICAgICAgICBiZmRfc2l6ZV90eXBlICpzaXplcCkKKy17CistICBzdHJ1Y3QgZHdhcmYy X3Blcl9vYmpmaWxlICpkYXRhCistICAgID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJf b2JqZmlsZV9kYXRhX2tleSk7CistICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbzsK KysvKiBJbml0aWFsaXplIGZvciByZWFkaW5nIERXQVJGIGZvciB0aGlzIG9iamZpbGUuICBSZXR1 cm4gMCBpZiB0aGlzCisrICAgZmlsZSB3aWxsIHVzZSBwc3ltdGFicywgb3IgMSBpZiB1c2luZyB0 aGUgR05VIGluZGV4LiAgKi8KKyAKKy0gIC8qIFdlIG1heSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0 IGFueSBEV0FSRiwgaW4gd2hpY2ggY2FzZSB3ZSBqdXN0CistICAgICByZXR1cm4gbm90aGluZy4g ICovCistICBpZiAoZGF0YSA9PSBOVUxMKQogK2ludAotK3Jlc29sdmVfZ251X2lmdW5jIChjb25z dCBjaGFyICpmdW5jdGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJlc3NwKQorK2R3 YXJmMl9pbml0aWFsaXplX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogK3sKLSsg IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKLSsKLSsgIG1zeW0gPSByZXNvbHZlX2dudV9p ZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7Ci0rICBpZiAobXN5bSAhPSBOVUxMKQotKyAg ICB7Ci0rICAgICAgKmZ1bmN0aW9uX2FkZHJlc3NwID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1z eW0pOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9CisrICAvKiBJZiB3ZSdyZSBhYm91dCB0byBy ZWFkIGZ1bGwgc3ltYm9scywgZG9uJ3QgYm90aGVyIHdpdGggdGhlCisrICAgICBpbmRpY2VzLiAg SW4gdGhpcyBjYXNlIHdlIGFsc28gZG9uJ3QgY2FyZSBpZiBzb21lIG90aGVyIGRlYnVnCisrICAg ICBmb3JtYXQgaXMgbWFraW5nIHBzeW10YWJzLCBiZWNhdXNlIHRoZXkgYXJlIGFsbCBhYm91dCB0 byBiZQorKyAgICAgZXhwYW5kZWQgYW55d2F5LiAgKi8KKysgIGlmICgob2JqZmlsZS0+ZmxhZ3Mg JiBPQkpGX1JFQUROT1cpKQorICAgICB7CistICAgICAgKnNlY3RwID0gTlVMTDsKKy0gICAgICAq YnVmcCA9IE5VTEw7CistICAgICAgKnNpemVwID0gMDsKKy0gICAgICByZXR1cm47CisrICAgICAg aW50IGk7CiArCi0rICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChmdW5jdGlvbl9u YW1lKTsKLSsgIGlmIChtc3ltICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAqZnVuY3Rpb25fYWRk cmVzc3AgPSBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSk7Ci0rICAgICAgcmV0dXJuIDE7Ci0r ICAgIH0KKysgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4ID0gMTsKKysgICAg ICBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKG9iamZpbGUpOwogKwotKyAgcmV0dXJuIDA7Ci0rfQor KyAgICAgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsg KytpKQorKwl7CisrCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVy X29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwogKwotIHN0cnVjdCBidWlsZF9pZAotICAgewot ICAgICBzaXplX3Qgc2l6ZTsKLUBAIC03OTcsNiArMTA0Niw4IEBAIGVsZl9zeW1maWxlX3JlYWQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKLSAJICAgICAgIGJm ZF9lcnJtc2cgKGJmZF9nZXRfZXJyb3IgKCkpKTsKLSAKLSAgICAgICBlbGZfc3ltdGFiX3JlYWQg KG9iamZpbGUsIFNUX0RZTkFNSUMsIGR5bnN5bWNvdW50LCBkeW5fc3ltYm9sX3RhYmxlLCAwKTsK KysJICBjdS0+di5xdWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0 YWNrLAorKwkJCQkJc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7CisrCX0KICsKLSsg ICAgICBlbGZfcmVsX3BsdF9yZWFkIChvYmpmaWxlLCBkeW5fc3ltYm9sX3RhYmxlKTsKKysgICAg ICAvKiBSZXR1cm4gMSBzbyB0aGF0IGdkYiBzZWVzIHRoZSAicXVpY2siIGZ1bmN0aW9ucy4gIEhv d2V2ZXIsCisrCSB0aGVzZSBmdW5jdGlvbnMgd2lsbCBiZSBuby1vcHMgYmVjYXVzZSB3ZSB3aWxs IGhhdmUgZXhwYW5kZWQKKysJIGFsbCBzeW10YWJzLiAgKi8KKysgICAgICByZXR1cm4gMTsKICAg ICAgfQorLSAgaWYgKHNlY3Rpb25faXNfcCAoc2VjdGlvbl9uYW1lLCBFSF9GUkFNRV9TRUNUSU9O KSkKKy0gICAgaW5mbyA9ICZkYXRhLT5laF9mcmFtZTsKKy0gIGVsc2UgaWYgKHNlY3Rpb25faXNf cCAoc2VjdGlvbl9uYW1lLCBGUkFNRV9TRUNUSU9OKSkKKy0gICAgaW5mbyA9ICZkYXRhLT5mcmFt ZTsKKy0gIGVsc2UKKy0gICAgZ2RiX2Fzc2VydCAoMCk7CiAgCi0gICAvKiBBZGQgc3ludGhldGlj IHN5bWJvbHMgLSBmb3IgaW5zdGFuY2UsIG5hbWVzIGZvciBhbnkgUExUIGVudHJpZXMuICAqLwot ZGlmZiAtLWdpdCBhL2dkYi9ldmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCBmZjE3YzM0Li43Yjll ODcxIDEwMDY0NAotLS0tIGEvZ2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTQ0LDYg KzQ0LDcgQEAKLSAjaW5jbHVkZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAicHl0aG9uL3B5dGhv bi5oIgotICNpbmNsdWRlICJ3cmFwcGVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorLSAg aWYgKGluZm8tPmFzZWN0aW9uICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1 ZmZlciA9PSBOVUxMKQorLSAgICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHll dC4gIERvIGl0IG5vdy4gICovCistICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGlu Zm8pOworKyAgaWYgKGR3YXJmMl9yZWFkX2luZGV4IChvYmpmaWxlKSkKKysgICAgcmV0dXJuIDE7 CiAgCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKy0gICpzZWN0cCA9IGluZm8tPmFzZWN0aW9u OworLSAgKmJ1ZnAgPSBpbmZvLT5idWZmZXI7CistICAqc2l6ZXAgPSBpbmZvLT5zaXplOworKyAg ZHdhcmYyX2J1aWxkX3BzeW10YWJzIChvYmpmaWxlKTsKKysgIHJldHVybiAwOworIH0KICAKLUBA IC03ODgsNiArNzg5LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAq ZXhwZWN0X3R5cGUsCi0gICBpbnQgc2F2ZV9wb3MxOwotICAgc3RydWN0IHN5bWJvbCAqZnVuY3Rp b24gPSBOVUxMOwotICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IE5VTEw7Ci0rICBzdHJ1Y3QgY2xl YW51cCAqb2xkX2NoYWluOworKwwKKysKKyAvKiBCdWlsZCBhIHBhcnRpYWwgc3ltYm9sIHRhYmxl LiAgKi8KICAKLSAgIHBjID0gKCpwb3MpKys7Ci0gICBvcCA9IGV4cC0+ZWx0c1twY10ub3Bjb2Rl OwotQEAgLTE3NzIsNiArMTc3NCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0 IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90 eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKLSAJCQkJIG5vdF9sdmFsKTsKLSAJICAg IH0KLSsJICBlbHNlIGlmIChUWVBFX0dOVV9JRlVOQyAoZnR5cGUpKQotKwkgICAgcmV0dXJuIGFs bG9jYXRlX3ZhbHVlIChUWVBFX1RBUkdFVF9UWVBFIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkp KTsKLSAJICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpCi0gCSAgICByZXR1cm4g YWxsb2NhdGVfdmFsdWUgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKSk7Ci0gCSAgZWxzZQotQEAg LTE3OTgsNiArMTgwMiw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUg KmV4cGVjdF90eXBlLAorIHZvaWQKK0BAIC0xODk3LDcgKzI4ODUsNyBAQCBwcm9jZXNzX3BzeW10 YWJfY29tcF91bml0IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIC8qIFN0b3JlIHRoZSBm dW5jdGlvbiB0aGF0IHJlYWRzIGluIHRoZSByZXN0IG9mIHRoZSBzeW1ib2wgdGFibGUgKi8KKyAg IHBzdC0+cmVhZF9zeW10YWIgPSBkd2FyZjJfcHN5bXRhYl90b19zeW10YWI7CiAgCi0gICAgICAg LyogRmlyc3QgZGV0ZXJtaW5lIHRoZSB0eXBlIGNvZGUgd2UgYXJlIGRlYWxpbmcgd2l0aC4gICov Ci0gICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgbm9z aWRlKTsKLSsgICAgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7 Ci0rICAgICAgb2JqZWN0X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwot ICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0gICAgICAg Y29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CistICB0aGlzX2N1LT5wc3ltdGFiID0gcHN0OworKyAg dGhpc19jdS0+di5wc3ltdGFiID0gcHN0OwogIAotQEAgLTE4MTgsNiArMTgyNCw3IEBAIGV2YWx1 YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICBj b2RlID0gVFlQRV9DT0RFICh0eXBlKTsKLSAJICAgIH0KLSAJfSAKLSsgICAgICBkb19jbGVhbnVw cyAob2xkX2NoYWluKTsKKyAgIGR3YXJmMl9maW5kX2Jhc2VfYWRkcmVzcyAoY29tcF91bml0X2Rp ZSwgJmN1KTsKICAKLSAgICAgICBzd2l0Y2ggKGNvZGUpCitAQCAtMjE4Miw2ICszMTcwLDcgQEAg Y3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgICAgICBt ZW1zZXQgKHRoaXNfY3UsIDAsIHNpemVvZiAoKnRoaXNfY3UpKTsKKyAgICAgICB0aGlzX2N1LT5v ZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgdGhpc19jdS0+bGVuZ3RoID0gbGVuZ3RoICsgaW5pdGlh bF9sZW5ndGhfc2l6ZTsKKysgICAgICB0aGlzX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKKyAKKyAg ICAgICBpZiAobl9jb21wX3VuaXRzID09IG5fYWxsb2NhdGVkKQogIAl7Ci1AQCAtMjI1NCwxMyAr MjI2MSwxOSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3Rf dHlwZSwKLSAgICAgICB7Ci0gCWludCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107 Ci0gCWludCBhcnJheV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNdOwotKwlpbnQgYnl0ZV9z dHJpZGVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0gCWludCBuZGltZW5zaW9ucyA9IDEsIGk7 Ci0gCXN0cnVjdCB0eXBlICp0bXBfdHlwZTsKLSAJaW50IG9mZnNldF9pdGVtOwkvKiBUaGUgYXJy YXkgb2Zmc2V0IHdoZXJlIHRoZSBpdGVtIGxpdmVzICovCi0rCUNPUkVfQUREUiBvZmZzZXRfYnl0 ZTsJLyogYnl0ZV9zdHJpZGUgYmFzZWQgb2Zmc2V0ICAqLwotKwl1bnNpZ25lZCBlbGVtZW50X3Np emU7CitAQCAtMjYxMyw3ICszNjAyLDcgQEAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAoc3RydWN0 IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKKyAJICAgICAgYWRkcm1hcF9zZXRfZW1wdHkgKG9iamZp bGUtPnBzeW10YWJzX2FkZHJtYXAsCisgCQkJCSBwZGktPmxvd3BjICsgYmFzZWFkZHIsCisgCQkJ CSBwZGktPmhpZ2hwYyAtIDEgKyBiYXNlYWRkciwKKy0JCQkJIGN1LT5wZXJfY3UtPnBzeW10YWIp OworKwkJCQkgY3UtPnBlcl9jdS0+di5wc3ltdGFiKTsKKyAJICAgIH0KKyAgICAgICAgICAgaWYg KCFwZGktPmlzX2RlY2xhcmF0aW9uKQorIAkgICAgLyogSWdub3JlIHN1YnByb2dyYW0gRElFcyB0 aGF0IGRvIG5vdCBoYXZlIGEgbmFtZSwgdGhleSBhcmUKK0BAIC0yODg1LDcgKzM4NzQsNiBAQCBs b2NhdGVfcGRpX3NpYmxpbmcgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpvcmlnX3BkaSwKKyBz dGF0aWMgdm9pZAorIGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYiAoc3RydWN0IHBhcnRpYWxfc3lt dGFiICpwc3QpCisgeworLSAgLyogRklYTUU6IFRoaXMgaXMgYmFyZWx5IG1vcmUgdGhhbiBhIHN0 dWIuICAqLworICAgaWYgKHBzdCAhPSBOVUxMKQorICAgICB7CisgICAgICAgaWYgKHBzdC0+cmVh ZGluKQorQEAgLTI5NTgsNyArMzk0Niw5IEBAIHByb2Nlc3NfcXVldWUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorICAgICAgbWF5IGxvYWQgYSBuZXcgQ1UsIGFkZGluZyBpdCB0byB0aGUgZW5k IG9mIHRoZSBxdWV1ZS4gICovCisgICBmb3IgKGl0ZW0gPSBkd2FyZjJfcXVldWU7IGl0ZW0gIT0g TlVMTDsgZHdhcmYyX3F1ZXVlID0gaXRlbSA9IG5leHRfaXRlbSkKKyAgICAgeworLSAgICAgIGlm IChpdGVtLT5wZXJfY3UtPnBzeW10YWIgJiYgIWl0ZW0tPnBlcl9jdS0+cHN5bXRhYi0+cmVhZGlu KQorKyAgICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4CisrCSAgPyAhaXRl bS0+cGVyX2N1LT52LnF1aWNrLT5zeW10YWIKKysJICA6IChpdGVtLT5wZXJfY3UtPnYucHN5bXRh YiAmJiAhaXRlbS0+cGVyX2N1LT52LnBzeW10YWItPnJlYWRpbikpCisgCXByb2Nlc3NfZnVsbF9j b21wX3VuaXQgKGl0ZW0tPnBlcl9jdSk7CisgCisgICAgICAgaXRlbS0+cGVyX2N1LT5xdWV1ZWQg PSAwOworQEAgLTMwMzUsMjIgKzQwMjUsNyBAQCBwc3ltdGFiX3RvX3N5bXRhYl8xIChzdHJ1Y3Qg cGFydGlhbF9zeW10YWIgKnBzdCkKKyAgICAgICByZXR1cm47CisgICAgIH0KICAKLSAJaWYgKG5h cmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSAJICBlcnJvciAoXygiVG9vIG1hbnkgc3Vic2NyaXB0 cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOworLSAgYmFja190byA9IG1h a2VfY2xlYW51cCAoZHdhcmYyX3JlbGVhc2VfcXVldWUsIE5VTEwpOworLQorLSAgcXVldWVfY29t cF91bml0IChwZXJfY3UsIHBzdC0+b2JqZmlsZSk7CistCistICBpZiAocGVyX2N1LT5mcm9tX2Rl YnVnX3R5cGVzKQorLSAgICByZWFkX3NpZ25hdHVyZWRfdHlwZV9hdF9vZmZzZXQgKHBzdC0+b2Jq ZmlsZSwgcGVyX2N1LT5vZmZzZXQpOworLSAgZWxzZQorLSAgICBsb2FkX2Z1bGxfY29tcF91bml0 IChwZXJfY3UsIHBzdC0+b2JqZmlsZSk7CistCistICBwcm9jZXNzX3F1ZXVlIChwc3QtPm9iamZp bGUpOworLQorLSAgLyogQWdlIHRoZSBjYWNoZSwgcmVsZWFzaW5nIGNvbXBpbGF0aW9uIHVuaXRz IHRoYXQgaGF2ZSBub3QKKy0gICAgIGJlZW4gdXNlZCByZWNlbnRseS4gICovCistICBhZ2VfY2Fj aGVkX2NvbXBfdW5pdHMgKCk7CistCistICBkb19jbGVhbnVwcyAoYmFja190byk7CisrICBkdzJf ZG9faW5zdGFudGlhdGVfc3ltdGFiIChwc3QtPm9iamZpbGUsIHBlcl9jdSk7CisgfQogIAotKwlv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0rCW9iamVjdF9hZGRy ZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKKyAvKiBMb2FkIHRoZSBESUVzIGFz c29jaWF0ZWQgd2l0aCBQRVJfQ1UgaW50byBtZW1vcnkuICAqLworQEAgLTMxMzAsOSArNDEwNSw4 IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9j dSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgc3RhdGljIHZvaWQKKyBwcm9jZXNzX2Z1bGxf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgeworLSAgc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICpwc3QgPSBwZXJfY3UtPnBzeW10YWI7CisgICBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSA9IHBlcl9jdS0+Y3U7CistICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBz dC0+b2JqZmlsZTsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxl OworICAgQ09SRV9BRERSIGxvd3BjLCBoaWdocGM7CisgICBzdHJ1Y3Qgc3ltdGFiICpzeW10YWI7 CisgICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKK0BAIC0zMTY1LDggKzQxMzksMTUgQEAgcHJv Y2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQor ICAgICB7CisgICAgICAgc3ltdGFiLT5sYW5ndWFnZSA9IGN1LT5sYW5ndWFnZTsKKyAgICAgfQor LSAgcHN0LT5zeW10YWIgPSBzeW10YWI7CistICBwc3QtPnJlYWRpbiA9IDE7CiArCi0gCXRtcF90 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotIAluZGltZW5zaW9ucyA9 IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworKyAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+ dXNpbmdfaW5kZXgpCisrICAgIHBlcl9jdS0+di5xdWljay0+c3ltdGFiID0gc3ltdGFiOworKyAg ZWxzZQorKyAgICB7CisrICAgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QgPSBwZXJfY3Ut PnYucHN5bXRhYjsKKysgICAgICBwc3QtPnN5bXRhYiA9IHN5bXRhYjsKKysgICAgICBwc3QtPnJl YWRpbiA9IDE7CisrICAgIH0KICAKLUBAIC0yMjkwLDYgKzIzMDMsOSBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAgIHVwcGVyID0gZjc3 X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7Ci0gCSAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJi b3VuZCAodG1wX3R5cGUpOworICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworIH0KK0BAIC0zNTU5 LDYgKzQ1NDAsNDYgQEAgZnJlZV9jdV9saW5lX2hlYWRlciAodm9pZCAqYXJnKQorIH0KICAKLSsJ ICAgIGJ5dGVfc3RyaWRlX2FycmF5W25hcmdzIC0gaSAtIDFdID0KLSsJCQkJCVRZUEVfQVJSQVlf QllURV9TVFJJREVfVkFMVUUgKHRtcF90eXBlKTsKKyBzdGF0aWMgdm9pZAorK2ZpbmRfZmlsZV9h bmRfZGlyZWN0b3J5IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Us CisrCQkJIGNoYXIgKipuYW1lLCBjaGFyICoqY29tcF9kaXIpCisreworKyAgc3RydWN0IGF0dHJp YnV0ZSAqYXR0cjsKICsKLSAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0gPSB1 cHBlciAtIGxvd2VyICsgMTsKLSAKLSAJICAgIC8qIFplcm8tbm9ybWFsaXplIHN1YnNjcmlwdHMg c28gdGhhdCBvZmZzZXR0aW5nIHdpbGwgd29yay4gKi8KLUBAIC0yMzA4LDEzICsyMzI0LDI1IEBA IGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkg ICAgICB0bXBfdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBl KSk7Ci0gCSAgfQotIAotKwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3 X2dldF9sb3dlcmJvdW5kIGNhbGxzIGFib3ZlLiAgKi8KLSsJZG9fY2xlYW51cHMgKG9sZF9jaGFp bik7CisrICAqbmFtZSA9IE5VTEw7CisrICAqY29tcF9kaXIgPSBOVUxMOwogKwotIAkvKiBOb3cg bGV0IHVzIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciB0aGlzIGl0ZW0gKi8KLSAKLS0Jb2Zmc2V0 X2l0ZW0gPSBzdWJzY3JpcHRfYXJyYXlbbmRpbWVuc2lvbnMgLSAxXTsKLSsJb2Zmc2V0X2l0ZW0g PSAwOwotKwlvZmZzZXRfYnl0ZSA9IDA7CisrICAvKiBGaW5kIHRoZSBmaWxlbmFtZS4gIERvIG5v dCB1c2UgZHdhcmYyX25hbWUgaGVyZSwgc2luY2UgdGhlIGZpbGVuYW1lCisrICAgICBpcyBub3Qg YSBzb3VyY2UgbGFuZ3VhZ2UgaWRlbnRpZmllci4gICovCisrICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfbmFtZSwgY3UpOworKyAgaWYgKGF0dHIpCisrICAgIHsKKysgICAgICAqbmFt ZSA9IERXX1NUUklORyAoYXR0cik7CisrICAgIH0KICsKLSsJZm9yIChpID0gbmRpbWVuc2lvbnMg LSAxOyBpID49IDA7IC0taSkKLSsJICB7Ci0rCSAgICBvZmZzZXRfaXRlbSAqPSBhcnJheV9zaXpl X2FycmF5W2ldOwotKwkgICAgaWYgKGJ5dGVfc3RyaWRlX2FycmF5W2ldID09IDApCi0rCSAgICAg IG9mZnNldF9pdGVtICs9IHN1YnNjcmlwdF9hcnJheVtpXTsKLSsJICAgIGVsc2UKLSsJICAgICAg b2Zmc2V0X2J5dGUgKz0gc3Vic2NyaXB0X2FycmF5W2ldICogYnl0ZV9zdHJpZGVfYXJyYXlbaV07 Ci0rCSAgfQorKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbXBfZGlyLCBjdSk7 CisrICBpZiAoYXR0cikKKysgICAgKmNvbXBfZGlyID0gRFdfU1RSSU5HIChhdHRyKTsKKysgIGVs c2UgaWYgKCpuYW1lICE9IE5VTEwgJiYgSVNfQUJTT0xVVEVfUEFUSCAoKm5hbWUpKQorKyAgICB7 CisrICAgICAgKmNvbXBfZGlyID0gbGRpcm5hbWUgKCpuYW1lKTsKKysgICAgICBpZiAoKmNvbXBf ZGlyICE9IE5VTEwpCisrCW1ha2VfY2xlYW51cCAoeGZyZWUsICpjb21wX2Rpcik7CisrICAgIH0K KysgIGlmICgqY29tcF9kaXIgIT0gTlVMTCkKKysgICAgeworKyAgICAgIC8qIElyaXggNi4yIG5h dGl2ZSBjYyBwcmVwZW5kcyA8bWFjaGluZT4uOiB0byB0aGUgY29tcGlsYXRpb24KKysJIGRpcmVj dG9yeSwgZ2V0IHJpZCBvZiBpdC4gICovCisrICAgICAgY2hhciAqY3AgPSBzdHJjaHIgKCpjb21w X2RpciwgJzonKTsKKysKKysgICAgICBpZiAoY3AgJiYgY3AgIT0gKmNvbXBfZGlyICYmIGNwWy0x XSA9PSAnLicgJiYgY3BbMV0gPT0gJy8nKQorKwkqY29tcF9kaXIgPSBjcCArIDE7CisrICAgIH0K KysKKysgIGlmICgqbmFtZSA9PSBOVUxMKQorKyAgICAqbmFtZSA9ICI8dW5rbm93bj4iOworK30K KysKKytzdGF0aWMgdm9pZAorIHJlYWRfZmlsZV9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0g Y3UtPm9iamZpbGU7CitAQCAtMzU4NCwzNSArNDYwNSw3IEBAIHJlYWRfZmlsZV9zY29wZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgbG93cGMgKz0gYmFz ZWFkZHI7CisgICBoaWdocGMgKz0gYmFzZWFkZHI7CisgCistICAvKiBGaW5kIHRoZSBmaWxlbmFt ZS4gIERvIG5vdCB1c2UgZHdhcmYyX25hbWUgaGVyZSwgc2luY2UgdGhlIGZpbGVuYW1lCistICAg ICBpcyBub3QgYSBzb3VyY2UgbGFuZ3VhZ2UgaWRlbnRpZmllci4gICovCistICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfbmFtZSwgY3UpOworLSAgaWYgKGF0dHIpCistICAgIHsKKy0g ICAgICBuYW1lID0gRFdfU1RSSU5HIChhdHRyKTsKKy0gICAgfQorLQorLSAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2NvbXBfZGlyLCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgY29t cF9kaXIgPSBEV19TVFJJTkcgKGF0dHIpOworLSAgZWxzZSBpZiAobmFtZSAhPSBOVUxMICYmIElT X0FCU09MVVRFX1BBVEggKG5hbWUpKQorLSAgICB7CistICAgICAgY29tcF9kaXIgPSBsZGlybmFt ZSAobmFtZSk7CistICAgICAgaWYgKGNvbXBfZGlyICE9IE5VTEwpCistCW1ha2VfY2xlYW51cCAo eGZyZWUsIGNvbXBfZGlyKTsKKy0gICAgfQorLSAgaWYgKGNvbXBfZGlyICE9IE5VTEwpCistICAg IHsKKy0gICAgICAvKiBJcml4IDYuMiBuYXRpdmUgY2MgcHJlcGVuZHMgPG1hY2hpbmU+LjogdG8g dGhlIGNvbXBpbGF0aW9uCistCSBkaXJlY3RvcnksIGdldCByaWQgb2YgaXQuICAqLworLSAgICAg IGNoYXIgKmNwID0gc3RyY2hyIChjb21wX2RpciwgJzonKTsKKy0KKy0gICAgICBpZiAoY3AgJiYg Y3AgIT0gY29tcF9kaXIgJiYgY3BbLTFdID09ICcuJyAmJiBjcFsxXSA9PSAnLycpCistCWNvbXBf ZGlyID0gY3AgKyAxOworLSAgICB9CistCistICBpZiAobmFtZSA9PSBOVUxMKQorLSAgICBuYW1l ID0gIjx1bmtub3duPiI7CisrICBmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoZGllLCBjdSwgJm5h bWUsICZjb21wX2Rpcik7CiAgCi0tCWZvciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+IDA7IC0t aSkKLS0JICBvZmZzZXRfaXRlbSA9Ci0tCSAgICBhcnJheV9zaXplX2FycmF5W2kgLSAxXSAqIG9m ZnNldF9pdGVtICsgc3Vic2NyaXB0X2FycmF5W2kgLSAxXTsKLSsJZWxlbWVudF9zaXplID0gVFlQ RV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0rCW9mZnNldF9ieXRlICs9 IG9mZnNldF9pdGVtICogZWxlbWVudF9zaXplOworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2xhbmd1YWdlLCBjdSk7CisgICBpZiAoYXR0cikKK0BAIC01NTMxLDYgKzY1MjQsMjkg QEAgcHJvY2Vzc19lbnVtZXJhdGlvbl9zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorICAgbmV3X3N5bWJvbCAoZGllLCB0aGlzX3R5cGUsIGN1KTsKKyB9 CiAgCi0gCS8qIExldCB1cyBub3cgcGxheSBhIGRpcnR5IHRyaWNrOiB3ZSB3aWxsIHRha2UgYXJn MSAKLSAJICAgd2hpY2ggaXMgYSB2YWx1ZSBub2RlIHBvaW50aW5nIHRvIHRoZSB0b3Btb3N0IGxl dmVsCi1AQCAtMjMyNCw3ICsyMzUyLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSB2YWx1 ZSAqLwotIAotIAlkZXByZWNhdGVkX3NldF92YWx1ZV90eXBlIChhcmcxLCB0bXBfdHlwZSk7Ci0t CXJldHVybiB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9pdGVtLCAwKTsK LSsJcmV0dXJuIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoYXJnMSwgb2Zmc2V0X2J5dGUpOwot ICAgICAgIH0KLSAKLSAgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLUBAIC0yNTU4LDE0ICsy NTg2LDIyIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAotICAgICAgIGlmIChleHBlY3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9 PSBUWVBFX0NPREVfUFRSKQotIAlleHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNr X3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7Ci0gICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAo ZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwotKyAgICAgIG9sZF9jaGFpbiA9IG1ha2Vf Y2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKLSsgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZh bHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7Ci0gICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZh bHVlX3R5cGUgKGFyZzEpKTsKLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NP REVfTUVUSE9EUFRSCi0gCSAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVNQkVS UFRSKQotIAllcnJvciAoXygiQXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBwb2ludGVyIHRvIG1lbWJl ciB3aXRob3V0IGFuIG9iamVjdCIpKTsKLSAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkK LS0JZ290byBub3NpZGVyZXQ7Ci0rCXsKLSsJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsJ ICBnb3RvIG5vc2lkZXJldDsKLSsJfQotICAgICAgIGlmICh1bm9wX3VzZXJfZGVmaW5lZF9wIChv cCwgYXJnMSkpCi0tCXJldHVybiB2YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOwotKwl7 Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgcmV0dXJuIHZhbHVlX3hfdW5vcCAo YXJnMSwgb3AsIG5vc2lkZSk7Ci0rCX0KLSAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9B Vk9JRF9TSURFX0VGRkVDVFMpCi0gCXsKLSAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVf dHlwZSAoYXJnMSkpOwotQEAgLTI1NzQsMTIgKzI2MTAsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgLyogSW4gQyB5b3UgY2FuIGRl cmVmZXJlbmNlIGFuIGFycmF5IHRvIGdldCB0aGUgMXN0IGVsdC4gICovCi0gCSAgICAgIHx8IFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0gCSAgICApCi0tCSAgICByZXR1cm4g dmFsdWVfemVybyAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0tCQkJICAgICAgIGx2YWxfbWVt b3J5KTsKLSsJICAgIHsKLSsJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgICAg IHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkJIGx2YWxf bWVtb3J5KTsKLSsJICAgIH0KLSAJICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVf Q09ERV9JTlQpCi0tCSAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8K LS0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1 aWx0aW5faW50LAotLQkJCSAgICAgICBsdmFsX21lbW9yeSk7Ci0rCSAgICB7Ci0rCSAgICAgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwkgICAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNp bmcgYW4gaW50LiAgKi8KLSsJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAo ZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0rCQkJCSBsdmFsX21lbW9yeSk7Ci0rCSAgICB9 Ci0gCSAgZWxzZQotIAkgICAgZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBh IG5vbi1wb2ludGVyIHZhbHVlLiIpKTsKLSAJfQotQEAgLTI1ODksOSArMjYzMSwxNCBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJIGRvLiAg ImxvbmcgbG9uZyIgdmFyaWFibGVzIGFyZSByYXJlIGVub3VnaCB0aGF0Ci0gCSBCVUlMVElOX1RZ UEVfTE9OR0VTVCB3b3VsZCBzZWVtIHRvIGJlIGEgbWlzdGFrZS4gICovCi0gICAgICAgaWYgKFRZ UEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKLS0JcmV0dXJuIHZhbHVlX2F0X2xhenkg KGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0tCQkJICAgICAgKENP UkVfQUREUikgdmFsdWVfYXNfYWRkcmVzcyAoYXJnMSkpOwotLSAgICAgIHJldHVybiB2YWx1ZV9p bmQgKGFyZzEpOwotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgcmV0dXJu IHZhbHVlX2F0X2xhenkgKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQs Ci0rCQkJCShDT1JFX0FERFIpIHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKLSsJfQotKyAgICAg IGFyZzEgPSB2YWx1ZV9pbmQgKGFyZzEpOwotKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4p OwotKyAgICAgIHJldHVybiBhcmcxOwotIAotICAgICBjYXNlIFVOT1BfQUREUjoKLSAgICAgICAv KiBDKys6IGNoZWNrIGZvciBhbmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCi1AQCAt MjkzMyw3ICsyOTgwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBl eHByZXNzaW9uICpleHAsCi0gewotICAgZW51bSBleHBfb3Bjb2RlIG9wOwotICAgaW50IHBjOwot LSAgc3RydWN0IHZhbHVlICp2YWw7Ci0rICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IE5VTEw7Ci0gICBz dHJ1Y3Qgc3ltYm9sICp2YXI7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAKLUBAIC0yOTQ0LDEy ICsyOTkxLDE3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLAotICAgICB7Ci0gICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgotICAgICAgIHZhciA9 IGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbDsKLSsgICAgICAvKiBhZGRyZXNzX29mX3ZhcmlhYmxl IHdpbGwgY2FsbCBvYmplY3RfYWRkcmVzc19zZXQgZm9yIGNoZWNrX3R5cGVkZWYuCi0rCSBDYWxs IGl0IG9ubHkgaWYgcmVxdWlyZWQgYXMgaXQgY2FuIGVycm9yLW91dCBvbiBWQVIgaW4gcmVnaXN0 ZXIuICAqLwotKyAgICAgIGlmIChUWVBFX0RZTkFNSUMgKFNZTUJPTF9UWVBFICh2YXIpKSkKLSsJ dmFsID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7 Ci0gICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFICh2YXIpKTsKLSAgICAg ICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLSAJICAmJiBDQVNUX0lT X0NPTlZFUlNJT04gKGV4cC0+bGFuZ3VhZ2VfZGVmbikpCi0gCXsKLSAJICAoKnBvcykgKz0gNDsK LS0JICB2YWwgPSBhZGRyZXNzX29mX3ZhcmlhYmxlICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJs b2NrKTsKLSsJICBpZiAoIXZhbCkKLSsJICAgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZh ciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwotIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29r dXBfcG9pbnRlcl90eXBlIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCi0gCQkJICAgICB2YWwp OwotIAl9Ci1AQCAtMzAwMSw5ICszMDUzLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9m IChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgKnBvcykKLSAKLSAgICAgY2FzZSBPUF9WQVJf VkFMVUU6Ci0gICAgICAgKCpwb3MpICs9IDQ7Ci0tICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYg KFNZTUJPTF9UWVBFIChleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2wpKTsKLS0gICAgICByZXR1cm4K LS0JdmFsdWVfZnJvbV9sb25nZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAo dHlwZSkpOwotKyAgICAgIC8qIFdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgcmVhZF92YXJfdmFsdWUg YnV0IHRoZSBvYmplY3QgZXZhbHVhdGlvbiBtYXkKLSsJIG5lZWQgdG8gaGF2ZSBleGVjdXRlZCBv YmplY3RfYWRkcmVzc19zZXQgd2hpY2ggbmVlZHMgdmFsaWQKLSsJIFNZTUJPTF9WQUxVRV9BRERS RVNTIG9mIHRoZSBzeW1ib2wuICBTdGlsbCBWQUxVRSByZXR1cm5lZCBieQotKwkgcmVhZF92YXJf dmFsdWUgd2UgbGVmdCBhcyBsYXp5LiAgKi8KLSsgICAgICB0eXBlID0gdmFsdWVfdHlwZSAocmVh ZF92YXJfdmFsdWUgKGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbCwKLSsJCQkJCWRlcHJlY2F0ZWRf c2FmZV9nZXRfc2VsZWN0ZWRfZnJhbWUgKCkpKTsKLSsgICAgICByZXR1cm4gdmFsdWVfZnJvbV9s b25nZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOwotIAotICAg ICBkZWZhdWx0OgotICAgICAgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAs IHBvcywgRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpOwotZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcu aCBiL2dkYi9mLWxhbmcuaAotaW5kZXggZjViYjgyZC4uMjljZjViYSAxMDA2NDQKLS0tLSBhL2dk Yi9mLWxhbmcuaAotKysrIGIvZ2RiL2YtbGFuZy5oCi1AQCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJu IHZvaWQgZl9lcnJvciAoY2hhciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55ICovCi0gZXh0ZXJu IHZvaWQgZl9wcmludF90eXBlIChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB1 aV9maWxlICosIGludCwKLSAJCQkgIGludCk7Ci0gCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2Jq ZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0KLSsgIChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSk7Ci0rZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRk cmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrLyogQ3JlYXRl IGEgbmV3IGFycmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4K ICsKLSBleHRlcm4gaW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0 ZSAqLCBpbnQsIENPUkVfQUREUiwKLSAJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0gCQkJY29u c3Qgc3RydWN0IHZhbHVlICosCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50LmMgYi9nZGIv Zi10eXBlcHJpbnQuYwotaW5kZXggZDM1YTI1NS4uZGVjODFkNSAxMDA2NDQKLS0tLSBhL2dkYi9m LXR5cGVwcmludC5jCi0rKysgYi9nZGIvZi10eXBlcHJpbnQuYwotQEAgLTMyLDcgKzMyLDcgQEAK LSAjaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAi Zi1sYW5nLmgiCi0tCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotICNpbmNsdWRlICJnZGJfc3Ry aW5nLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1AQCAtNDksNiArNDksMzQgQEAgdm9pZCBm X3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxl ICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2Zp bGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoKLStmX29iamVjdF9hZGRyZXNz X2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCSAg ICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25zdCBjaGFyICptc2c7CisrICAg TXVsdGlkaW1lbnNpb25hbCBhcnJheXMgYXJlIGludGVybmFsbHkgcmVwcmVzZW50ZWQgYXMgYSBz dGFjayBvZgorKyAgIHNpbmdsZWRpbWVuc2lvbmFsIGFycmF5cyBiZWluZyByZWZlcmVuY2VkIGJ5 IHRoZWlyIFRZUEVfVEFSR0VUX1RZUEUuICAqLwogKwotKyAgbXNnID0gb2JqZWN0X2FkZHJlc3Nf ZGF0YV9ub3RfdmFsaWQgKHR5cGUpOwotKyAgaWYgKG1zZyAhPSBOVUxMKQotKyAgICB7Ci0rICAg ICAgLyogQXNzdW1pbmcgdGhlIGNvbnRlbnQgcHJpbnRlZCB0byBTVFJFQU0gc2hvdWxkIG5vdCBi ZSBsb2NhbGl6ZWQuICAqLwotKyAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjwlcz4i LCBtc2cpOwotKyAgICB9Cisrc3RhdGljIHN0cnVjdCB0eXBlICoKKytjcmVhdGVfc2luZ2xlX2Fy cmF5X2RpbWVuc2lvbiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyYW5nZV90eXBl LAorKwkJCSAgICAgICBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisreworKyAgdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBl KTsKICsKLSsgIHJldHVybiBtc2c7Ci0rfQorKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJp YnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVkIGJ5CisrICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+J3MgY2FsbCBvZgorKyAgICAgdmFsdWVfc3Vic2NyaXB0 ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBpbm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCisrICBmZXRj aF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CiArCi0rdm9pZAotK2Zfb2JqZWN0X2Fk ZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgY29u c3QgY2hhciAqbXNnOworKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgYXJlIGNo ZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCisrICAgICB2YWxpZGl0eSB3aGlsZSBhY2Nl c3NpbmcgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAqLworKyAgZmV0Y2hfZGllX3R5cGVf YXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwgY3UpOwogKwotKyAgbXNnID0gb2JqZWN0X2FkZHJlc3Nf ZGF0YV9ub3RfdmFsaWQgKHR5cGUpOwotKyAgaWYgKG1zZyAhPSBOVUxMKQotKyAgICB7Ci0rICAg ICAgZXJyb3IgKF8oIkNhbm5vdCBhY2Nlc3MgaXQgYmVjYXVzZSB0aGUgJXMuIiksIF8obXNnKSk7 Ci0rICAgIH0KKysgIHJldHVybiB0eXBlOwogK30KICsKLSAvKiBMRVZFTCBpcyB0aGUgZGVwdGgg dG8gaW5kZW50IGxpbmVzIGJ5LiAgKi8KLSAKLSB2b2lkCi1AQCAtNTgsNiArODYsOSBAQCBmX3By aW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcsIHN0cnVj dCB1aV9maWxlICpzdHJlYW0sCi0gICBlbnVtIHR5cGVfY29kZSBjb2RlOwotICAgaW50IGRlbWFu Z2xlZF9hcmdzOworIC8qIEV4dHJhY3QgYWxsIGluZm9ybWF0aW9uIGZyb20gYSBEV19UQUdfYXJy YXlfdHlwZSBESUUgYW5kIHB1dCBpdCBpbgorICAgIHRoZSBESUUncyB0eXBlIGZpZWxkLiAgRm9y IG5vdywgdGhpcyBvbmx5IGhhbmRsZXMgb25lIGRpbWVuc2lvbmFsCisgICAgYXJyYXlzLiAgKi8K K0BAIC01NTQ0LDcgKzY1NjAsNyBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUs ICpyYW5nZV90eXBlLCAqaW5kZXhfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICoqcmFuZ2VfdHlwZXMg PSBOVUxMOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIGludCBuZGltID0gMDsKKysg IGludCBuZGltID0gMCwgaTsKKyAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworICAgY2hhciAq bmFtZTsKICAKLSsgIGlmIChmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3Ry ZWFtICh0eXBlLCBzdHJlYW0pICE9IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSAgIGZfdHlwZV9w cmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVsKTsKLSAgIGNvZGUgPSBUWVBFX0NP REUgKHR5cGUpOwotICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdc MCcpCi1AQCAtMTY1LDYgKzE5Niw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCitAQCAtNTU5NywxNyArNjYx MywxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKKyAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCi0gICBRVUlUOworICAgaWYg KHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9jb2xfbWFqb3IpCistICAgIHsK Ky0gICAgICBpbnQgaSA9IDA7CistCistICAgICAgd2hpbGUgKGkgPCBuZGltKQorLQl0eXBlID0g Y3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW2krK10pOworLSAgICB9 CistICBlbHNlCistICAgIHsKKy0gICAgICB3aGlsZSAobmRpbS0tID4gMCkKKy0JdHlwZSA9IGNy ZWF0ZV9hcnJheV90eXBlIChOVUxMLCB0eXBlLCByYW5nZV90eXBlc1tuZGltXSk7CistICAgIH0K KysgICAgZm9yIChpID0gMDsgaSA8IG5kaW07IGkrKykKKysgICAgICB0eXBlID0gY3JlYXRlX3Np bmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUsIGN1KTsKKysg IGVsc2UgLyogKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09IERXX09SRF9yb3dfbWFqb3Ip ICovCisrICAgIGZvciAoaSA9IG5kaW0gLSAxOyBpID49IDA7IGktLSkKKysgICAgICB0eXBlID0g Y3JlYXRlX3NpbmdsZV9hcnJheV9kaW1lbnNpb24gKHR5cGUsIHJhbmdlX3R5cGVzW2ldLCBkaWUs IGN1KTsKICAKLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9UWVBFREVGKQot KyAgICBDSEVDS19UWVBFREVGICh0eXBlKTsKKyAgIC8qIFVuZGVyc3RhbmQgRHdhcmYyIHN1cHBv cnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9uCisgICAgICB0aGUgUG93ZXJQ QyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBhdHRyaWJ1dGUgdG8gdGhlCitA QCAtNjA2MSwyOSArNzA3MSwxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZSwg KnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOworICAgc3RydWN0IGF0dHJpYnV0 ZSAqYXR0cjsKKy0gIHVuc2lnbmVkIGludCBsZW5ndGg7CisrICBpbnQgbGVuZ3RoOwogKwotICAg c3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2UgVFlQRV9DT0RFX0FS UkFZOgotZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCi1p bmRleCA4NWY2OThkLi4yZjcyYjk3IDEwMDY0NAotLS0tIGEvZ2RiL2YtdmFscHJpbnQuYwotKysr IGIvZ2RiL2YtdmFscHJpbnQuYwotQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29m ZnNldF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOwotIC8qIFRoZSBmb2xsb3dpbmcgbWFj cm8gZ2l2ZXMgdXMgdGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAotICAgIG4g aXMgMSBiYXNlZC4gKi8KLSAKLS0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2FycmF5X29m ZnNldF90Ymxbbl1bMV0pCi0rI2RlZmluZSBGNzdfRElNX0NPVU5UKG4pIChmNzdfYXJyYXlfb2Zm c2V0X3RibFtuXVsxXSkKLSAKLS0vKiBUaGUgZm9sbG93aW5nIGdpdmVzIHVzIHRoZSBvZmZzZXQg Zm9yIHJvdyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gKi8KLSsvKiBUaGUgZm9sbG93aW5nIGdpdmVz IHVzIHRoZSBlbGVtZW50IHNpemUgZm9yIHJvdyBuIHdoZXJlIG4gaXMgMS1iYXNlZC4gKi8KLSAK LS0jZGVmaW5lIEY3N19ESU1fT0ZGU0VUKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkK LSsjZGVmaW5lIEY3N19ESU1fQllURV9TVFJJREUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25d WzBdKQotIAotIGludAotIGY3N19nZXRfbG93ZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0g ewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKKysgIGlu ZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKKysgIC8qIFJB TkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklMRSwgbm90IGFzIGEgcGVybWFuZW50IHR5 cGUuICAqLworKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOworKyAgLyogTE9X X0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLworKyAgcmFu Z2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRleF90eXBlLCAwLCAt MSk7CiArCi0gICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUp KQotICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicgaW4gRjc3IikpOwor KyAgLyogQy9DKysgc2hvdWxkIHByb2JhYmx5IGhhdmUgdGhlIGxvdyBib3VuZCAwIGJ1dCBDL0Mr KyBkb2VzIG5vdCB1c2UKKysgICAgIERXX1RBR19zdHJpbmdfdHlwZS4gICovCisrICBUWVBFX0xP V19CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwogIAotQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0 X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIGludAotIGY3N19nZXRfdXBwZXJib3Vu ZCAoc3RydWN0IHR5cGUgKnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlk X29yX2Vycm9yICh0eXBlKTsKKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9zdHJp bmdfbGVuZ3RoLCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgeworLSAgICAgIGxlbmd0aCA9IERX X1VOU05EIChhdHRyKTsKKysgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp CisrICAgIHsKKysgICAgICAvKiBTZWN1cml0eSBjaGVjayBmb3IgYSBzaXplIG92ZXJmbG93LiAg Ki8KKysgICAgICBpZiAoRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMiA8IERXX0JMT0NLIChhdHRy KS0+c2l6ZSkKKysJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgLyog RXh0ZW5kIHRoZSBEV0FSRiBibG9jayBieSBhIG5ldyBEV19PUF9kZXJlZi9EV19PUF9kZXJlZl9z aXplCisrCSBpbnN0cnVjdGlvbiBhcyBEV19BVF9zdHJpbmdfbGVuZ3RoIHNwZWNpZmllcyB0aGUg bGVuZ3RoIGxvY2F0aW9uLCBub3QKKysJIGl0cyB2YWx1ZS4gICovCisrICAgICAgZWxzZQorKwl7 CisrCSAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpsZW5ndGhfYmF0b24gPSBOVUxMOwor KwkgIHN0cnVjdCBkd2FyZl9ibG9jayAqYmxrID0gRFdfQkxPQ0sgKGF0dHIpOwogKwotICAgaWYg KFRZUEVfQVJSQVlfVVBQRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKLSAgICAgewotLSAg ICAgIC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFzc3Vt ZSB0aGF0Ci0tCSB1cHBlcl9ib3VuZCA9PSBsb3dlcl9ib3VuZCBzbyB0aGF0IHdlIHNob3cgYXQg bGVhc3QgMSBlbGVtZW50LgotLQkgSWYgdGhlIHVzZXIgd2FudHMgdG8gc2VlIG1vcmUgZWxlbWVu dHMsIGxldCBoaW0gbWFudWFsbHkgYXNrIGZvciAnZW0KLS0JIGFuZCB3ZSdsbCBzdWJzY3JpcHQg dGhlIGFycmF5IGFuZCBzaG93IGhpbS4gICovCi0rICAgICAgLyogV2UgaGF2ZSBhbiBhc3N1bWVk IHNpemUgYXJyYXkgb24gb3VyIGhhbmRzLiAgQXMgdHlwZV9sZW5ndGhfZ2V0Ci0rCSBhbHJlYWR5 IGFzc3VtZXMgYSBsZW5ndGggemVybyBvZiBhcnJheXMgd2l0aCB1bmRlcmZpbmVkIGJvdW5kcyBW QUxBRERSCi0rCSBwYXNzZWQgdG8gdGhlIEZvcnRyYW4gZnVuY3Rpb25zIGRvZXMgbm90IGNvbnRh aW5lZCB0aGUgcmVhbCBpbmZlcmlvcgotKwkgbWVtb3J5IGNvbnRlbnQuICBVc2VyIHNob3VsZCBy ZXF1ZXN0IHByaW50aW5nIG9mIHNwZWNpZmljIGFycmF5Ci0rCSBlbGVtZW50cyBpbnN0ZWFkLiAg Ki8KLSAKLS0gICAgICByZXR1cm4gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKLSsgICAgICBy ZXR1cm4gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKSAtIDE7Ci0gICAgIH0KLSAKLSAgIHJldHVy biBUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX1ZBTFVFICh0eXBlKTsKLUBAIC0xMzQsMjQgKzEzOSwy OSBAQCBmNzdfY3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCi0gICAgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91 bmQgKHRtcF90eXBlKTsKLSAgICAgICBsb3dlciA9IGY3N19nZXRfbG93ZXJib3VuZCAodG1wX3R5 cGUpOwotIAotLSAgICAgIEY3N19ESU1fU0laRSAobmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAx OwotKyAgICAgIEY3N19ESU1fQ09VTlQgKG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKKysJ ICAvKiBUdXJuIGFueSBzaW5nbGUgRFdfT1BfcmVnKiBpbnRvIERXX09QX2JyZWcqKDApIGJ1dCBj bGVhcmluZworKwkgICAgIERXX09QX2RlcmVmKiBpbiBzdWNoIGNhc2UuICAqLwogKwotKyAgICAg IEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPQotKyAgICAgICAgVFlQRV9BUlJBWV9CWVRF X1NUUklERV9WQUxVRSAodG1wX3R5cGUpOwotIAotICAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJH RVRfVFlQRSAodG1wX3R5cGUpOwotICAgICAgIG5kaW1lbisrOworKwkgIGlmIChibGstPnNpemUg PT0gMSAmJiBibGstPmRhdGFbMF0gPj0gRFdfT1BfcmVnMAorKwkgICAgICAmJiBibGstPmRhdGFb MF0gPD0gRFdfT1BfcmVnMzEpCisrCSAgICBsZW5ndGhfYmF0b24gPSBkd2FyZjJfYXR0cl90b19s b2NleHByX2JhdG9uIChhdHRyLCBjdSk7CisrCSAgZWxzZSBpZiAoYmxrLT5zaXplID4gMSAmJiBi bGstPmRhdGFbMF0gPT0gRFdfT1BfcmVneCkKKysJICAgIHsKKysJICAgICAgVUxPTkdFU1QgdWxv bmdlc3Q7CisrCSAgICAgIGNvbnN0IGdkYl9ieXRlICplbmQ7CisrCisrCSAgICAgIGVuZCA9IHJl YWRfdWxlYjEyOCAoJmJsay0+ZGF0YVsxXSwgJmJsay0+ZGF0YVtibGstPnNpemVdLAorKwkJCQkg ICZ1bG9uZ2VzdCk7CisrCSAgICAgIGlmIChlbmQgPT0gJmJsay0+ZGF0YVtibGstPnNpemVdKQor KwkJbGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3Up OworKwkgICAgfQorKworKwkgIGlmIChsZW5ndGhfYmF0b24gPT0gTlVMTCkKKysJICAgIHsKKysJ ICAgICAgc3RydWN0IGF0dHJpYnV0ZSAqc2l6ZV9hdHRyOworKwkgICAgICBnZGJfYnl0ZSAqZGF0 YTsKKysKKysJICAgICAgbGVuZ3RoX2JhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5jb21wX3Vu aXRfb2JzdGFjaywKKysJCQkJCSAgICBzaXplb2YgKCpsZW5ndGhfYmF0b24pKTsKKysJICAgICAg bGVuZ3RoX2JhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OworKwkgICAgICBsZW5ndGhfYmF0b24t PnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemUgKyAyOworKwkgICAgICBkYXRhID0gb2JzdGFj a19hbGxvYyAoJmN1LT5jb21wX3VuaXRfb2JzdGFjaywKKysJCQkJICAgIGxlbmd0aF9iYXRvbi0+ c2l6ZSk7CisrCSAgICAgIGxlbmd0aF9iYXRvbi0+ZGF0YSA9IGRhdGE7CisrCSAgICAgIG1lbWNw eSAoZGF0YSwgRFdfQkxPQ0sgKGF0dHIpLT5kYXRhLCBEV19CTE9DSyAoYXR0ciktPnNpemUpOwor KworKwkgICAgICAvKiBEV19BVF9CWVRFX1NJWkUgZXhpc3RpbmcgdG9nZXRoZXIgd2l0aCBEV19B VF9TVFJJTkdfTEVOR1RICisrCQkgc3BlY2lmaWVzIHRoZSBzaXplIG9mIGFuIGludGVnZXIgdG8g ZmV0Y2guICAqLworKwkgICAgICBzaXplX2F0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9i eXRlX3NpemUsIGN1KTsKKysJICAgICAgaWYgKHNpemVfYXR0cikKKysJCXsKKysJCSAgZGF0YVtE V19CTE9DSyAoYXR0ciktPnNpemVdID0gRFdfT1BfZGVyZWZfc2l6ZTsKKysJCSAgZGF0YVtEV19C TE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX1VOU05EIChzaXplX2F0dHIpOworKwkJICBpZiAo ZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAxXSAhPSBEV19VTlNORCAoc2l6ZV9hdHRyKSkK KysJCSAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkJICAgICAgIF8oIkRX X0FUX3N0cmluZ19sZW5ndGgncyBEV19BVF9ieXRlX3NpemUgIgorKwkJCQkgImludGVnZXIgZXhj ZWVkcyB0aGUgYnl0ZSBzaXplIHN0b3JhZ2UiKSk7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCXsK KysJCSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemVdID0gRFdfT1BfZGVyZWY7CisrCQkgIGRh dGFbRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMV0gPSBEV19PUF9ub3A7CisrCQl9CisrCSAgICB9 CisrCisrCSAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC5raW5kCisrCSAgICA9 IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7CisrCSAgVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0gbGVuZ3RoX2JhdG9uOworKwkgIFRZUEVfRFlO QU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKwl9CiAgICAgIH0KLSAKLS0gIC8qIE5vdyB3ZSBtdWx0 aXBseSBlbHRsZW4gYnkgYWxsIHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAotKyAgLyog Tm93IHdlIG11bHRpcGx5IGVsdGxlbiBieSBhbGwgdGhlIEJZVEVfU1RSSURFcywgc28gdGhhdCBs YXRlciB3ZQotICAgICAgY2FuIHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBV cCB0aWxsIG5vdyB3ZSAKLS0gICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUg aXRlbSBidXQgd2UgYWxzbyAKLSsgICAgIGtub3cgYW4gZWx0bGVuIHRvIGFwcGx5IHRvIGdldCB0 aGUgaXRlbSBidXQgd2UgYWxzbwotICAgICAgaGF2ZSB0byBrbm93IGhvdyBtdWNoIHRvIGFkZCB0 byBnZXQgdG8gdGhlIG5leHQgaXRlbSAqLwotIAotICAgbmRpbWVuLS07Ci0gICBlbHRsZW4gPSBU WVBFX0xFTkdUSCAodG1wX3R5cGUpOwotLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRs ZW47Ci0rICBpZiAoRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKyAgICBGNzdf RElNX0JZVEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVuOwotICAgd2hpbGUgKC0tbmRpbWVuID4g MCkKKyAgIGVsc2UKICAgICAgewotLSAgICAgIGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1l biArIDEpOwotLSAgICAgIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0gZWx0bGVuOwotKyAgICAg IGVsdGxlbiAqPSBGNzdfRElNX0NPVU5UIChuZGltZW4gKyAxKTsKLSsgICAgICBpZiAoRjc3X0RJ TV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKwlGNzdfRElNX0JZVEVfU1RSSURFIChuZGlt ZW4pID0gZWx0bGVuOworLSAgICAgIC8qIGNoZWNrIGZvciB0aGUgRFdfQVRfYnl0ZV9zaXplIGF0 dHJpYnV0ZSAqLworKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0 cikpCisrCXsKKysJICAvKiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgYSBjb25zdGFudCBh ZGRyZXNzIHdoZXJlIHRoZSBsb2NhdGlvbgorKwkgICAgIHNob3VsZCBiZSByZWFkIGZyb20gLSBh dHRyX2Zvcm1faXNfYmxvY2sgaXMgZXhwZWN0ZWQgaW5zdGVhZC4gIFNlZQorKwkgICAgIERXQVJG IGZvciB0aGUgRFdfQVRfU1RSSU5HX0xFTkdUSCB2cy4gRFdfQVRfQllURV9TSVpFIGRpZmZlcmVu Y2UuCisrCSAgICAgKi8KKysJICAvKiBQQVNTVEhSVSAqLworKwl9CisrCisgICAgICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOworLSAgICAgIGlmIChhdHRy KQorLSAgICAgICAgeworLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CistICAg ICAgICB9CisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysJ eworKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAorKwkgICAgPSBS QU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOworKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2Vf dHlwZSktPmhpZ2gudS5kd2FyZl9ibG9jayA9CisrCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHBy X2JhdG9uIChhdHRyLCBjdSk7CisrCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Cisr CX0KKysgICAgICBlbHNlIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikp CisrCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3Rh bnRfdmFsdWUgKGF0dHIsIDApOworICAgICAgIGVsc2UKKy0gICAgICAgIHsKKy0gICAgICAgICAg bGVuZ3RoID0gMTsKKy0gICAgICAgIH0KKysJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9 IDE7CiAgICAgIH0KLSB9CiAgCi1AQCAtMTcyLDM0ICsxODIsMzQgQEAgZjc3X3ByaW50X2FycmF5 XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5cGUgKnR5cGUsCistICBpbmRl eF90eXBlID0gb2JqZmlsZV90eXBlIChvYmpmaWxlKS0+YnVpbHRpbl9pbnQ7CistICByYW5nZV90 eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGluZGV4X3R5cGUsIDEsIGxlbmd0aCk7Cisg ICBjaGFyX3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVm biwgZ2RiYXJjaCk7CisgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5 cGUsIHJhbmdlX3R5cGUpOwogIAotICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKLSAgICAgewot LSAgICAgIGZvciAoaSA9IDA7IChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBv cHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0rICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElN X0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0gCXsK LSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwotIAkgIGY3N19wcmludF9hcnJh eV8xIChuc3MgKyAxLCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0tCQkJ ICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAotLQkJCSAgICAgYWRkcmVz cyArIGkgKiBGNzdfRElNX09GRlNFVCAobnNzKSwKLSsJCQkgICAgIHZhbGFkZHIgKyBpICogRjc3 X0RJTV9CWVRFX1NUUklERSAobnNzKSwKLSsJCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9C WVRFX1NUUklERSAobnNzKSwKLSAJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25z LCBlbHRzKTsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOwotIAl9Ci0tICAg ICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChu c3MpKSAKLSsgICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdf RElNX0NPVU5UIChuc3MpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKLSAg ICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0la RSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OwotKyAgICAgIGZvciAoaSA9 IDA7IGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9t YXg7Ci0gCSAgIGkrKywgKCplbHRzKSsrKQotIAl7Ci0gCSAgdmFsX3ByaW50IChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwKLS0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRp bWVuc2lvbnMpLAotKwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5k aW1lbnNpb25zKSwKLSAJCSAgICAgMCwKLS0JCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09G RlNFVCAobmRpbWVuc2lvbnMpLAotKwkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9T VFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlv bnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOworQEAgLTYzMjYsNjAgKzc0MjEsMTM2IEBAIHJlYWRfc3Vi cmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor ICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKKyAgIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlOwor ICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIExPTkdFU1QgbG93ID0gMDsKKy0gIExPTkdF U1QgaGlnaCA9IC0xOworKyAgTE9OR0VTVCBsb3c7CisgICBjaGFyICpuYW1lOworICAgTE9OR0VT VCBuZWdhdGl2ZV9tYXNrOwogIAotLQkgIGlmIChpICE9IChGNzdfRElNX1NJWkUgKG5zcykgLSAx KSkKLSsJICBpZiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKQotIAkgICAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAiKTsKKyAgIGJhc2VfdHlwZSA9IGRpZV90eXBlIChkaWUs IGN1KTsKKysgIC8qIFByZXNlcnZlIEJBU0VfVFlQRSdzIG9yaWdpbmFsIHR5cGUsIGp1c3Qgc2V0 IGl0cyBMRU5HVEguICAqLworKyAgY2hlY2tfdHlwZWRlZiAoYmFzZV90eXBlKTsKICAKLSAJICBp ZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCi0tCSAgICAgICYmIChpICE9IChG NzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCi0rCSAgICAgICYmIChpICE9IChGNzdfRElNX0NPVU5U IChuc3MpIC0gMSkpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0g CX0KLSAgICAgfQotQEAgLTI1Niw2ICsyNjYsOSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotICAg Q09SRV9BRERSIGFkZHI7Ci0gICBpbnQgaW5kZXg7CisgICAvKiBUaGUgZGllX3R5cGUgY2FsbCBh Ym92ZSBtYXkgaGF2ZSBhbHJlYWR5IHNldCB0aGUgdHlwZSBmb3IgdGhpcyBESUUuICAqLworICAg cmFuZ2VfdHlwZSA9IGdldF9kaWVfdHlwZSAoZGllLCBjdSk7CisgICBpZiAocmFuZ2VfdHlwZSkK KyAgICAgcmV0dXJuIHJhbmdlX3R5cGU7CiAgCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRh X3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1 cm4gMDsKKy0gIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKy0gICAgewor LSAgICAgIC8qIEZPUlRSQU4gaW1wbGllcyBhIGxvd2VyIGJvdW5kIG9mIDEsIGlmIG5vdCBnaXZl bi4gICovCistICAgICAgbG93ID0gMTsKKy0gICAgfQorKyAgLyogTE9XX0JPVU5EIGFuZCBISUdI X0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLworKyAgcmFuZ2VfdHlwZSA9IGNyZWF0 ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIDAsIC0xKTsKICsKLSAgIENIRUNLX1RZUEVE RUYgKHR5cGUpOwotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci1kaWZmIC0t Z2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dkYi9maW5kdmFyLmMKLWluZGV4IGUwY2ExMmMuLmRlNjMx MWEgMTAwNjQ0Ci0tLS0gYS9nZGIvZmluZHZhci5jCi0rKysgYi9nZGIvZmluZHZhci5jCi1AQCAt MzUsNiArMzUsNyBAQAotICNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIKKysgIG5lZ2F0aXZlX21hc2sg PSAKKysgICAgKExPTkdFU1QpIC0xIDw8IChUWVBFX0xFTkdUSCAoYmFzZV90eXBlKSAqIFRBUkdF VF9DSEFSX0JJVCAtIDEpOworKworKyAgLyogRXhjbHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkg VFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cuICBHREIgQWRhCisrICAgICBzdXBwb3J0cyBp bXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBpbiBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQor KyAgICAgZXhpc3RpbmcgRFdBUkYgZHluYW1pYyBib3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcg dG8gbWVtb3J5IGFjY2VzcworKyAgICAgZXJyb3JzLiAgKi8KKyAKKy0gIC8qIEZJWE1FOiBGb3Ig dmFyaWFibGUgc2l6ZWQgYXJyYXlzIGVpdGhlciBvZiB0aGVzZSBjb3VsZCBiZQorLSAgICAgYSB2 YXJpYWJsZSByYXRoZXIgdGhhbiBhIGNvbnN0YW50IHZhbHVlLiAgV2UnbGwgYWxsb3cgaXQsCist ICAgICBidXQgd2UgZG9uJ3Qga25vdyBob3cgdG8gaGFuZGxlIGl0LiAgKi8KKyAgIGF0dHIgPSBk d2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwgY3UpOworLSAgaWYgKGF0dHIpCist ICAgIGxvdyA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7CisrICBp ZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBs YW5ndWFnZV9hZGEpCisrICAgIHsKKysgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUp LT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7CisrICAgICAgVFlQRV9S QU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYy X2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAo cmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19B VF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8KKysgICAgICBsb3cgPSAwOworKyAg ICB9CisrICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3Vh Z2UgIT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJn ZXRfZGllOworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAg IHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKKysKKysgICAgICB0YXJnZXRfZGll ID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOworKyAgICAg IGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7CisrICAgICAg dGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9u LCB0YXJnZXRfY3UpOworKworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxv dy5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVfUkFO R0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAorKyAgICAg ICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdl dF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZf bG9jbGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3Up OworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBz ZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAg Ki8KKysgICAgICBsb3cgPSAwOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBpZiAo YXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKQorKwlsb3cgPSBkd2FyZjJfZ2V0 X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOworKyAgICAgIGVsc2UKKysJeworKwkgIGlm IChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKysJICAgIHsKKysJICAgICAgLyog Rk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KKysJ ICAgICAgbG93ID0gMTsKKysJICAgIH0KKysJICBlbHNlCisrCSAgICB7CisrCSAgICAgIC8qIEFj Y29yZGluZyB0byBEV0FSRiB3ZSBzaG91bGQgYXNzdW1lIHRoZSB2YWx1ZSAwIG9ubHkgZm9yCisr CQkgTEFOR1VBR0VfQyBhbmQgTEFOR1VBR0VfQ1BMVVMuICAqLworKwkgICAgICBsb3cgPSAwOwor KwkgICAgfQorKwl9CisrICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChs b3cgJiBuZWdhdGl2ZV9tYXNrKSkKKysJbG93IHw9IG5lZ2F0aXZlX21hc2s7CisrICAgICAgVFlQ RV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpID0gbG93OworKyAgICAgIGlmIChsb3cgPj0gMCkKKysJ VFlQRV9VTlNJR05FRCAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisgCisgICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKKy0gIGlmIChhdHRyKQorKyAg aWYgKCFhdHRyIHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lz X2NvbnN0YW50IChhdHRyKQorKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCisgICAgIHsKKy0g ICAgICBpZiAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2Jsb2NrMSB8fCBpc19yZWZfYXR0ciAoYXR0 cikpCistICAgICAgICB7CistICAgICAgICAgIC8qIEdDQyBlbmNvZGVzIGFycmF5cyB3aXRoIHVu c3BlY2lmaWVkIG9yIGR5bmFtaWMgbGVuZ3RoCistICAgICAgICAgICAgIHdpdGggYSBEV19GT1JN X2Jsb2NrMSBhdHRyaWJ1dGUgb3IgYSByZWZlcmVuY2UgYXR0cmlidXRlLgorLSAgICAgICAgICAg ICBGSVhNRTogR0RCIGRvZXMgbm90IHlldCBrbm93IGhvdyB0byBoYW5kbGUgZHluYW1pYworLSAg ICAgICAgICAgICBhcnJheXMgcHJvcGVybHksIHRyZWF0IHRoZW0gYXMgYXJyYXlzIHdpdGggdW5z cGVjaWZpZWQKKy0gICAgICAgICAgICAgbGVuZ3RoIGZvciBub3cuCistCistICAgICAgICAgICAg IEZJWE1FOiBqaW1iLzIwMDMtMDktMjI6IEdEQiBkb2VzIG5vdCByZWFsbHkga25vdworLSAgICAg ICAgICAgICBob3cgdG8gaGFuZGxlIGFycmF5cyBvZiB1bnNwZWNpZmllZCBsZW5ndGgKKy0gICAg ICAgICAgICAgZWl0aGVyOyB3ZSBqdXN0IHJlcHJlc2VudCB0aGVtIGFzIHplcm8tbGVuZ3RoCist ICAgICAgICAgICAgIGFycmF5cy4gIENob29zZSBhbiBhcHByb3ByaWF0ZSB1cHBlciBib3VuZCBn aXZlbgorLSAgICAgICAgICAgICB0aGUgbG93ZXIgYm91bmQgd2UndmUgY29tcHV0ZWQgYWJvdmUu ICAqLworLSAgICAgICAgICBoaWdoID0gbG93IC0gMTsKKy0gICAgICAgIH0KKy0gICAgICBlbHNl CistICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAx KTsKKysgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKysg ICAgICAvKiBJdCBkb2VzIG5vdCBodXJ0IGJ1dCBpdCBpcyBuZWVkbGVzc2x5IGluZWZmZWN0aXZl IGluIGNoZWNrX3R5cGVkZWYuICAqLworKyAgICAgIGlmIChhdHRyICYmIChhdHRyX2Zvcm1faXNf YmxvY2sgKGF0dHIpIHx8IGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpKQorKyAgICAgIAl7 CisrCSAgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIChyYW5nZV90eXBlKSA9IDE7Cisr CSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKysgICAgICAvKiBQYXNzIGl0 IG5vdyBhcyB0aGUgcmVndWxhciBEV19BVF91cHBlcl9ib3VuZC4gICovCisrICAgIH0KKysKKysg IGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9 IGxhbmd1YWdlX2FkYSkKKysgICAgeworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s7CisrICAgICAgVFlQ RV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrID0KKysJCQkJCWR3 YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgICAgICBUWVBFX0RZTkFN SUMgKHJhbmdlX3R5cGUpID0gMTsKKysgICAgfQorKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZf YXR0ciAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKKysgICAgeworKyAg ICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX2N1 ICp0YXJnZXRfY3UgPSBjdTsKKysgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0 dHI7CisrCisrICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBh dHRyLCAmdGFyZ2V0X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUg PT0gY3UtPm9iamZpbGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0 YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKKysKKysgICAgICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJG X0xPQ0xJU1Q7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3 YXJmX2xvY2xpc3QubG9jbGlzdAorKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2Jh dG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRB IChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QudHlwZQorKyAgICAgICAgPSBkaWVf dHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1KTsKKysgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdl X3R5cGUpID0gMTsKKyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7CistICAgICAgaWYgKGF0dHIpCisrICAgICAg TE9OR0VTVCBoaWdoOworKworKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFu dCAoYXR0cikpCisrCWhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIs IDApOworKyAgICAgIGVsc2UKKyAJeworLQkgIGludCBjb3VudCA9IGR3YXJmMl9nZXRfYXR0cl9j b25zdGFudF92YWx1ZSAoYXR0ciwgMSk7CistCSAgaGlnaCA9IGxvdyArIGNvdW50IC0gMTsKKysJ ICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrCSAgaGlnaCA9 IGxvdyAtIDE7CisgCX0KKysgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYg KGhpZ2ggJiBuZWdhdGl2ZV9tYXNrKSkKKysJaGlnaCB8PSBuZWdhdGl2ZV9tYXNrOworKyAgICAg IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSBoaWdoOworICAgICB9CisgCisgICAvKiBE d2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRvIGNyZWF0ZSBzdWJyYW5n ZSB0eXBlcworQEAgLTY0MjEsMjAgKzc1OTIsNDEgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCX0KKyAgICAgfQorIAor LSAgbmVnYXRpdmVfbWFzayA9CistICAgIChMT05HRVNUKSAtMSA8PCAoVFlQRV9MRU5HVEggKGJh c2VfdHlwZSkgKiBUQVJHRVRfQ0hBUl9CSVQgLSAxKTsKKy0gIGlmICghVFlQRV9VTlNJR05FRCAo YmFzZV90eXBlKSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykpCistICAgIGxvdyB8PSBuZWdhdGl2 ZV9tYXNrOworLSAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVn YXRpdmVfbWFzaykpCistICAgIGhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgIC8qIERXX0FUX2Jp dF9zdHJpZGUgaXMgY3VycmVudGx5IHVuc3VwcG9ydGVkIGFzIHdlIGNvdW50IGluIGJ5dGVzLiAg Ki8KKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3N0cmlkZSwgY3UpOwor KyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2Ug IT0gbGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90 eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJG X0JMT0NLOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRl LnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0 ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9Cisr ICBlbHNlIGlmIChhdHRyICYmIGlzX3JlZl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0g bGFuZ3VhZ2VfYWRhKQorKyAgICB7CisrICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGll OworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1OworKyAgICAgIHN0cnVj dCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKKyAKKy0gIHJhbmdlX3R5cGUgPSBjcmVhdGVf cmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCBsb3csIGhpZ2gpOworKyAgICAgIHRhcmdldF9k aWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7CisrICAg ICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKKysgICAg ICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRp b24sIHRhcmdldF9jdSk7CisgCistICAvKiBNYXJrIGFycmF5cyB3aXRoIGR5bmFtaWMgbGVuZ3Ro IGF0IGxlYXN0IGFzIGFuIGFycmF5IG9mIHVuc3BlY2lmaWVkCistICAgICBsZW5ndGguICBHREIg Y291bGQgY2hlY2sgdGhlIGJvdW5kYXJ5IGJ1dCBiZWZvcmUgaXQgZ2V0cyBpbXBsZW1lbnRlZCBh dAorLSAgICAgbGVhc3QgYWxsb3cgYWNjZXNzaW5nIHRoZSBhcnJheSBlbGVtZW50cy4gICovCist ICBpZiAoYXR0ciAmJiBhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sxKQorLSAgICBUWVBFX0hJ R0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAgICAgVFlQRV9SQU5HRV9E QVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VO RF9LSU5EX0RXQVJGX0xPQ0xJU1Q7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBl KS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKKysgICAgICAgID0gZHdhcmYy X2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0YXJnZXRfY3UpOworKyAg ICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZfbG9j bGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOwor KyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICB9CisrICBlbHNlIGlm IChhdHRyICYmIGF0dHJfZm9ybV9pc19jb25zdGFudCAoYXR0cikpCisrICAgIHsKKysgICAgICBU WVBFX0JZVEVfU1RSSURFIChyYW5nZV90eXBlKSA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92 YWx1ZSAoYXR0ciwgMCk7CisrICAgICAgaWYgKFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUp ID09IDApCisrCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCSAgIF8oIkZvdW5k IERXX0FUX2J5dGVfc3RyaWRlIHdpdGggdW5zdXBwb3J0ZWQgdmFsdWUgMCIpKTsKKysgICAgfQor IAorICAgbmFtZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKyAgIGlmIChuYW1lKQorQEAgLTg3 MTQsMTAgKzk5MDYsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAq YXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2Yg YSByZWdpc3RlciBvciBtZW1vcnkgbG9jYXRpb24gaXMKKyAgICAgIHJlZmVyZW5jZWQsIG9yIGEg dGhyZWFkLWxvY2FsIGJsb2NrLCBldGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CisgICAgICBu b3QgYmUgd29ydGh3aGlsZS4gIEknbSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJm b3JtYW5jZQorLSAgICAgb3IgbWVtb3J5IG51bWJlcnMgc2hvdyBtZSBvdGhlcndpc2UuICAqLwor KyAgICAgb3IgbWVtb3J5IG51bWJlcnMgc2hvdyBtZSBvdGhlcndpc2UuCisrICAgICAKKysgICAg IFNZTUJPTF9DTEFTUyBtYXkgZ2V0IG92ZXJyaWRlbiBieSBkd2FyZjJfc3ltYm9sX21hcmtfY29t cHV0ZWQuICAqLworIAorLSAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChhdHRyLCBzeW0s IGN1KTsKKyAgIFNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19DT01QVVRFRDsKKysgIGR3YXJmMl9z eW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7CisgfQorIAorIC8qIEdpdmVuIGEg cG9pbnRlciB0byBhIERXQVJGIGluZm9ybWF0aW9uIGVudHJ5LCBmaWd1cmUgb3V0IGlmIHdlIG5l ZWQKK0BAIC04NzQ4LDYgKzk5NDIsOCBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAkJCQkJICAgICBz aXplb2YgKHN0cnVjdCBzeW1ib2wpKTsKKyAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMr Kyk7CisgICAgICAgbWVtc2V0IChzeW0sIDAsIHNpemVvZiAoc3RydWN0IHN5bWJvbCkpOworKyAg ICAgIC8qIFNvbWUgbWV0aG9kcyBhcmUgY2FsbGVkIHcvbyBjaGVja2luZyBTWU1CT0xfQ09NUFVU RURfT1BTIHZhbGlkaXR5LiAgKi8KKysgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0g JmR3YXJmMl9taXNzaW5nX2Z1bmNzOworIAorICAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3Mg bmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCisgICAgICAg U1lNQk9MX0xBTkdVQUdFIChzeW0pID0gY3UtPmxhbmd1YWdlOworQEAgLTkzNzksNiArMTA1NzUs OSBAQCByZWFkX3R5cGVfZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGlmICh0aGlzX3R5cGUpCisrICAg IGZpbmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7CisrCisgICByZXR1cm4gdGhpc190eXBlOworIH0K KyAKK0BAIC0xMTk4Myw2NyArMTMxODIsMTAyIEBAIGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3Ry dWN0IGF0dHJpYnV0ZSAqYXR0cikKKyAgICAgfQorIH0KKyAKKy1zdGF0aWMgdm9pZAorLWR3YXJm Ml9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5 bWJvbCAqc3ltLAorLQkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisrLyogQ29udmVydCBE V19CTE9DSyBpbnRvIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbi4gIEFUVFIgbXVzdCBiZSBh IERXX0JMT0NLCisrICAgYXR0cmlidXRlIHR5cGUuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgZHdh cmYyX2xvY2V4cHJfYmF0b24gKgorK2R3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsKKy0gIGlmIChhdHRy X2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0dHIpCistICAgICAgLyogIi5kZWJ1Z19sb2MiIG1h eSBub3QgZXhpc3QgYXQgYWxsLCBvciB0aGUgb2Zmc2V0IG1heSBiZSBvdXRzaWRlCistCSB0aGUg c2VjdGlvbi4gIElmIHNvLCBmYWxsIHRocm91Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0aGUKKy0J IG90aGVyIGJyYW5jaC4gICovCistICAgICAgJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYyX3Bl cl9vYmpmaWxlLT5sb2Muc2l6ZSkKKy0gICAgeworLSAgICAgIHN0cnVjdCBkd2FyZjJfbG9jbGlz dF9iYXRvbiAqYmF0b247CisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmJhdG9uOwor IAorLSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssCistCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbikpOwor LSAgICAgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OworLSAgICAgIGdkYl9hc3NlcnQgKGJh dG9uLT5wZXJfY3UpOworKyAgZ2RiX2Fzc2VydCAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSk7 CisgCistICAgICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpm aWxlLAorLQkJCSAgICZkd2FyZjJfcGVyX29iamZpbGUtPmxvYyk7CisrICBiYXRvbiA9IG9ic3Rh Y2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKCpiYXRvbikp OworKyAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CisrICBnZGJfYXNzZXJ0IChiYXRvbi0+ cGVyX2N1KTsKKyAKKy0gICAgICAvKiBXZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBsb2NhdGlv biBsaXN0IGlzLCBidXQgbWFrZSBzdXJlIHdlCistCSBkb24ndCBydW4gb2ZmIHRoZSBlZGdlIG9m IHRoZSBzZWN0aW9uLiAgKi8KKy0gICAgICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+bG9jLnNpemUgLSBEV19VTlNORCAoYXR0cik7CistICAgICAgYmF0b24tPmRhdGEgPSBkd2Fy ZjJfcGVyX29iamZpbGUtPmxvYy5idWZmZXIgKyBEV19VTlNORCAoYXR0cik7CistICAgICAgYmF0 b24tPmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7CistICAgICAgaWYgKGN1LT5iYXNl X2tub3duID09IDApCistCWNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKy0JCSAgIF8o IkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVz cy4iKSk7CisrICAvKiBOb3RlIHRoYXQgd2UncmUganVzdCBjb3B5aW5nIHRoZSBibG9jaydzIGRh dGEgcG9pbnRlcgorKyAgICAgaGVyZSwgbm90IHRoZSBhY3R1YWwgZGF0YS4gIFdlJ3JlIHN0aWxs IHBvaW50aW5nIGludG8gdGhlCisrICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsg cmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKKysgICAgIHRoYXQgYnVmZmVyLCBidXQgd2hlbiB3 ZSBkbyBjbGVhbiB1cCBwcm9wZXJseSB0aGlzIG1heQorKyAgICAgbmVlZCB0byBjaGFuZ2UuICAq LworKyAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7CisrICBiYXRvbi0+ZGF0 YSA9IERXX0JMT0NLIChhdHRyKS0+ZGF0YTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5zaXplID09 IDAgfHwgYmF0b24tPmRhdGEgIT0gTlVMTCk7CisrCisrICByZXR1cm4gYmF0b247CisrfQorKwor K3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKgorK2R3YXJmMl9hdHRyX3RvX2xv Y2xpc3RfYmF0b24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorK3sKKysgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqYmF0b247CisrCisrICAvKiBE V19BVF9sb2NhdGlvbiBvZiB0aGUgcmVmZXJlbmNlZCBESUUgbWF5IGJlIG1pc3NpbmcgaWYgdGhl IHJlZmVyZW5jZWQKKysgICAgIHZhcmlhYmxlIGhhcyBiZWVuIG9wdGltaXplZCBvdXQuICAqLwor KyAgaWYgKCFhdHRyKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysgIGR3YXJmMl9yZWFkX3NlY3Rp b24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKysJCSAgICAgICAmZHdhcmYyX3Blcl9v YmpmaWxlLT5sb2MpOworKworKyAgaWYgKCEoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChh dHRyKQorKwkvKiAiLmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZz ZXQgbWF5IGJlIG91dHNpZGUKKysJICAgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdo IHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCisrCSAgIG90aGVyIGJyYW5jaC4gICovCisrCSYmIERX X1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpKQorKyAgICByZXR1 cm4gTlVMTDsKKysKKysgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCisrCQkJIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7 CisrICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5w ZXJfY3UpOworKworKyAgLyogV2UgZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlz dCBpcywgYnV0IG1ha2Ugc3VyZSB3ZQorKyAgICAgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0 aGUgc2VjdGlvbi4gICovCisrICBiYXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9j LnNpemUgLSBEV19VTlNORCAoYXR0cik7CisrICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJfb2Jq ZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKKysgIGJhdG9uLT5iYXNlX2FkZHJl c3MgPSBjdS0+YmFzZV9hZGRyZXNzOworKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCisrICAg IGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJICAgICAgIF8oIkxvY2F0aW9uIGxp c3QgdXNlZCB3aXRob3V0IHNwZWNpZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CisrCisr ICByZXR1cm4gYmF0b247CisrfQorKworKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mg b3ZlcnJpZGVuIG9uIGludmFsaWQgQVRUUiBjb250ZW50LiAgKi8KKysKKytzdGF0aWMgdm9pZAor K2R3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IHN5bWJvbCAqc3ltLAorKwkJCSAgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisreworKyAg c3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpsb2NsaXN0X2JhdG9uOworIAorKyAgbG9jbGlz dF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKGF0dHIsIGN1KTsKKysgIGlm IChsb2NsaXN0X2JhdG9uKQorKyAgICB7CisgICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3lt KSA9ICZkd2FyZjJfbG9jbGlzdF9mdW5jczsKKy0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04g KHN5bSkgPSBiYXRvbjsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2Ns aXN0X2JhdG9uOworKyAgICB9CisrICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIp KQorKyAgICB7CisrICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbG9j ZXhwcl9mdW5jczsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBkd2FyZjJf YXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7CisgICAgIH0KKyAgIGVsc2UKKyAgICAg eworLSAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisrICAgICAgZHdh cmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9u IiwKKysJCQkJCSAgICAgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7CisgCistICAgICAgYmF0 b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkg ICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uKSk7CistICAgICAgYmF0b24t PnBlcl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgZ2RiX2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7 CisrICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxsZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9D T01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLworIAorLSAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxv Y2sgKGF0dHIpKQorLQl7CistCSAgLyogTm90ZSB0aGF0IHdlJ3JlIGp1c3QgY29weWluZyB0aGUg YmxvY2sncyBkYXRhIHBvaW50ZXIKKy0JICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAg V2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKKy0JICAgICBpbmZvX2J1ZmZlciBmb3IgU1lN J3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJlbGVhc2UKKy0JICAgICB0aGF0IGJ1ZmZl ciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVybHkgdGhpcyBtYXkKKy0JICAgICBuZWVk IHRvIGNoYW5nZS4gICovCistCSAgYmF0b24tPnNpemUgPSBEV19CTE9DSyAoYXR0ciktPnNpemU7 CistCSAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0ciktPmRhdGE7CistCX0KKy0gICAgICBl bHNlCistCXsKKy0JICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgibG9j YXRpb24gZGVzY3JpcHRpb24iLAorLQkJCQkJCSBTWU1CT0xfTkFUVVJBTF9OQU1FIChzeW0pKTsK Ky0JICBiYXRvbi0+c2l6ZSA9IDA7CistCSAgYmF0b24tPmRhdGEgPSBOVUxMOworLQl9CisrICAg ICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2FyZjJfbWlzc2luZ19mdW5jczsKKysg ICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBOVUxMOworIAorLSAgICAgIFNZTUJP TF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX2xvY2V4cHJfZnVuY3M7CistICAgICAgU1lN Qk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gYmF0b247CisrICAgICAgLyogRm9yIGZ1bmN0aW9u cyBhIG1pc3NpbmcgRFdfQVRfZnJhbWVfYmFzZSBkb2VzIG5vdCBvcHRpbWl6ZSBvdXQgdGhlCisr CSB3aG9sZSBmdW5jdGlvbiBkZWZpbml0aW9uLCBvbmx5IGl0cyBmcmFtZSBiYXNlIHJlc29sdmlu Zy4gICovCisrICAgICAgaWYgKGF0dHItPm5hbWUgPT0gRFdfQVRfbG9jYXRpb24pCisrCVNZTUJP TF9DTEFTUyAoc3ltKSA9IExPQ19PUFRJTUlaRURfT1VUOworICAgICB9CisgfQorIAorQEAgLTEy MDU0LDcgKzEzMjg4LDcgQEAgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0 cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCisgc3RydWN0IG9iamZpbGUgKgorIGR3 YXJmMl9wZXJfY3Vfb2JqZmlsZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQor IHsKKy0gIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFiLT5vYmpmaWxl OworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7CisgCisgICAv KiBSZXR1cm4gdGhlIG1hc3RlciBvYmpmaWxlLCBzbyB0aGF0IHdlIGNhbiByZXBvcnQgYW5kIGxv b2sgdXAgdGhlCisgICAgICBjb3JyZWN0IGZpbGUgY29udGFpbmluZyB0aGlzIHZhcmlhYmxlLiAg Ki8KK0BAIC0xMjA3NCw3ICsxMzMwOCw3IEBAIGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgICBlbHNlCisgICAgIHsKKyAgICAgICAv KiBJZiB0aGUgQ1UgaXMgbm90IGN1cnJlbnRseSByZWFkIGluLCB3ZSByZS1yZWFkIGl0cyBoZWFk ZXIuICAqLworLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFi LT5vYmpmaWxlOworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpm aWxlOworICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxlCisgCT0g b2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7CisgICAgICAg Z2RiX2J5dGUgKmluZm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVyX2N1LT5v ZmZzZXQ7CitAQCAtMTIwOTYsNyArMTMzMzAsNyBAQCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXpl IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgICBlbHNlCisgICAgIHsKKyAg ICAgICAvKiBJZiB0aGUgQ1UgaXMgbm90IGN1cnJlbnRseSByZWFkIGluLCB3ZSByZS1yZWFkIGl0 cyBoZWFkZXIuICAqLworLSAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5w c3ltdGFiLT5vYmpmaWxlOworKyAgICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1 LT5vYmpmaWxlOworICAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKnBlcl9vYmpmaWxl CisgCT0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7Cisg ICAgICAgZ2RiX2J5dGUgKmluZm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVmZmVyICsgcGVy X2N1LT5vZmZzZXQ7CitAQCAtMTIxMTYsNyArMTMzNTAsNyBAQCBkd2FyZjJfcGVyX2N1X29mZnNl dF9zaXplIChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCisgQ09SRV9BRERSCisg ZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1KQorIHsKKy0gIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5wc3ltdGFiLT5v YmpmaWxlOworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7Cisg CisgICByZXR1cm4gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZf VEVYVCAob2JqZmlsZSkpOworIH0KK0BAIC0xMjMzOCw2ICsxMzU3MiwzMCBAQCBkd2FyZjJfZnJl ZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIC8qIENhY2hlZCBESUUgdHJl ZXMgdXNlIHhtYWxsb2MgYW5kIHRoZSBjb21wX3VuaXRfb2JzdGFjay4gICovCisgICBmcmVlX2Nh Y2hlZF9jb21wX3VuaXRzIChOVUxMKTsKKyAKKysgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVz aW5nX2luZGV4KQorKyAgICB7CisrICAgICAgaW50IGk7CisrCisrICAgICAgZm9yIChpID0gMDsg aSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCisrCXsKKysJICBpbnQg ajsKKysJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+YWxsX2NvbXBfdW5pdHNbaV07CisrCisrCSAgaWYgKCFjdS0+di5xdWljay0+bGluZXMpCisr CSAgICBjb250aW51ZTsKKysKKysJICBmb3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVz LT5udW1fZmlsZV9uYW1lczsgKytqKQorKwkgICAgeworKwkgICAgICBpZiAoY3UtPnYucXVpY2st PmZpbGVfbmFtZXMpCisrCQl4ZnJlZSAoKHZvaWQgKikgY3UtPnYucXVpY2stPmZpbGVfbmFtZXNb al0pOworKwkgICAgICBpZiAoY3UtPnYucXVpY2stPmZ1bGxfbmFtZXMpCisrCQl4ZnJlZSAoKHZv aWQgKikgY3UtPnYucXVpY2stPmZ1bGxfbmFtZXNbal0pOworKwkgICAgfQorKworKwkgIGZyZWVf bGluZV9oZWFkZXIgKGN1LT52LnF1aWNrLT5saW5lcyk7CisrCX0KKysgICAgfQorKworICAgLyog RXZlcnl0aGluZyBlbHNlIHNob3VsZCBiZSBvbiB0aGUgb2JqZmlsZSBvYnN0YWNrLiAgKi8KKyB9 CisgCitAQCAtMTIzNzIsNiArMTM2MzAsMzEgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2 b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAqaXRlbV9yaHMpCisgICByZXR1cm4gb2ZzX2xocy0+ b2Zmc2V0ID09IG9mc19yaHMtPm9mZnNldDsKKyB9CisgCisrLyogRmlsbCBpbiBnZW5lcmljIGF0 dHJpYnV0ZXMgYXBwbGljYWJsZSBmb3IgdHlwZSBESUVzLiAgKi8KKysKKytzdGF0aWMgdm9pZAor K2ZldGNoX2RpZV90eXBlX2F0dHJzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUg KnR5cGUsCisrCQkgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyt7CisrICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyOworKworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFf bG9jYXRpb24sIGN1KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICBU WVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbiAoYXR0ciwKKysJCQkJCQkJCQkgIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBF X0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOworKworKyAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOworKyAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAo YXR0cikpCisrICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4 cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BTExPQ0FURUQg KHR5cGUpKTsKKysKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVk LCBjdSk7CisrICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9BU1NP Q0lBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsK KysgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBlKSk7CisrfQorKworIC8q IFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENV J3MgaGFzaAorICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJu IFRZUEUuCisgCitAQCAtMTIzOTUsNiArMTM2NzgsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisg eworICAgc3RydWN0IGR3YXJmMl9vZmZzZXRfYW5kX3R5cGUgKipzbG90LCBvZnM7CisgCisrICBm ZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0eXBlLCBjdSk7CisrCisgICAvKiBGb3IgQWRhIHR5 cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25hdC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5cworICAg ICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJlYWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcgdHlw ZXMgd2hlcmUKKyAgICAgIHdlIHNob3VsZCBub3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhlIHR5 cGUtc3BlY2lmaWMgYXJlYSBpcworQEAgLTEyNTkyLDggKzEzODc3LDU2NyBAQCBkd2FyZjJfcGVy X29iamZpbGVfZnJlZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmQpCisgICBtdW5t YXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5sb2MpOworICAgbXVubWFwX3NlY3Rpb25fYnVmZmVy ICgmZGF0YS0+ZnJhbWUpOworICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+ZWhfZnJh bWUpOworKyAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+Z2RiX2luZGV4KTsKKyt9Cisr CisrDAorKworKy8qIFRoZSBjb250ZW50cyBvZiB0aGUgaGFzaCB0YWJsZSB3ZSBjcmVhdGUgd2hl biBidWlsZGluZyB0aGUgc3RyaW5nCisrICAgdGFibGUuICAqLworK3N0cnVjdCBzdHJ0YWJfZW50 cnkKKyt7CisrICBvZmZzZXRfdHlwZSBvZmZzZXQ7CisrICBjb25zdCBjaGFyICpzdHI7CisrfTsK KysKKysvKiBIYXNoIGZ1bmN0aW9uIGZvciBhIHN0cnRhYl9lbnRyeS4gICovCisrc3RhdGljIGhh c2h2YWxfdAorK2hhc2hfc3RydGFiX2VudHJ5IChjb25zdCB2b2lkICplKQorK3sKKysgIGNvbnN0 IHN0cnVjdCBzdHJ0YWJfZW50cnkgKmVudHJ5ID0gZTsKKysgIHJldHVybiBtYXBwZWRfaW5kZXhf c3RyaW5nX2hhc2ggKGVudHJ5LT5zdHIpOworK30KKysKKysvKiBFcXVhbGl0eSBmdW5jdGlvbiBm b3IgYSBzdHJ0YWJfZW50cnkuICAqLworK3N0YXRpYyBpbnQKKytlcV9zdHJ0YWJfZW50cnkgKGNv bnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpCisreworKyAgY29uc3Qgc3RydWN0IHN0cnRhYl9l bnRyeSAqZWEgPSBhOworKyAgY29uc3Qgc3RydWN0IHN0cnRhYl9lbnRyeSAqZWIgPSBiOworKyAg cmV0dXJuICFzdHJjbXAgKGVhLT5zdHIsIGViLT5zdHIpOworK30KKysKKysvKiBDcmVhdGUgYSBz dHJ0YWJfZW50cnkgaGFzaCB0YWJsZS4gICovCisrc3RhdGljIGh0YWJfdAorK2NyZWF0ZV9zdHJ0 YWIgKHZvaWQpCisreworKyAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jICgxMDAsIGhhc2hfc3Ry dGFiX2VudHJ5LCBlcV9zdHJ0YWJfZW50cnksCisrCQkJICAgIHhmcmVlLCB4Y2FsbG9jLCB4ZnJl ZSk7CisrfQorKworKy8qIEFkZCBhIHN0cmluZyB0byB0aGUgY29uc3RhbnQgcG9vbC4gIFJldHVy biB0aGUgc3RyaW5nJ3Mgb2Zmc2V0IGluCisrICAgaG9zdCBvcmRlci4gICovCisrc3RhdGljIG9m ZnNldF90eXBlCisrYWRkX3N0cmluZyAoaHRhYl90IHRhYmxlLCBzdHJ1Y3Qgb2JzdGFjayAqY3Bv b2wsIGNvbnN0IGNoYXIgKnN0cikKKyt7CisrICB2b2lkICoqc2xvdDsKKysgIHN0cnVjdCBzdHJ0 YWJfZW50cnkgZW50cnk7CisrICBzdHJ1Y3Qgc3RydGFiX2VudHJ5ICpyZXN1bHQ7CisrCisrICBl bnRyeS5zdHIgPSBzdHI7CisrICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHRhYmxlLCAmZW50cnks IElOU0VSVCk7CisrICBpZiAoKnNsb3QpCisrICAgIHJlc3VsdCA9ICpzbG90OworKyAgZWxzZQor KyAgICB7CisrICAgICAgcmVzdWx0ID0gWE5FVyAoc3RydWN0IHN0cnRhYl9lbnRyeSk7CisrICAg ICAgcmVzdWx0LT5vZmZzZXQgPSBvYnN0YWNrX29iamVjdF9zaXplIChjcG9vbCk7CisrICAgICAg cmVzdWx0LT5zdHIgPSBzdHI7CisrICAgICAgb2JzdGFja19ncm93X3N0cjAgKGNwb29sLCBzdHIp OworKyAgICAgICpzbG90ID0gcmVzdWx0OworKyAgICB9CisrICByZXR1cm4gcmVzdWx0LT5vZmZz ZXQ7CisrfQorKworKy8qIEFuIGVudHJ5IGluIHRoZSBzeW1ib2wgdGFibGUuICAqLworK3N0cnVj dCBzeW10YWJfaW5kZXhfZW50cnkKKyt7CisrICAvKiBUaGUgbmFtZSBvZiB0aGUgc3ltYm9sLiAg Ki8KKysgIGNvbnN0IGNoYXIgKm5hbWU7CisrICAvKiBUaGUgb2Zmc2V0IG9mIHRoZSBuYW1lIGlu IHRoZSBjb25zdGFudCBwb29sLiAgKi8KKysgIG9mZnNldF90eXBlIGluZGV4X29mZnNldDsKKysg IC8qIEEgc29ydGVkIHZlY3RvciBvZiB0aGUgaW5kaWNlcyBvZiBhbGwgdGhlIENVcyB0aGF0IGhv bGQgYW4gb2JqZWN0CisrICAgICBvZiB0aGlzIG5hbWUuICAqLworKyAgVkVDIChvZmZzZXRfdHlw ZSkgKmN1X2luZGljZXM7CisrfTsKKysKKysvKiBUaGUgc3ltYm9sIHRhYmxlLiAgVGhpcyBpcyBh IHBvd2VyLW9mLTItc2l6ZWQgaGFzaCB0YWJsZS4gICovCisrc3RydWN0IG1hcHBlZF9zeW10YWIK Kyt7CisrICBvZmZzZXRfdHlwZSBuX2VsZW1lbnRzOworKyAgb2Zmc2V0X3R5cGUgc2l6ZTsKKysg IHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKipkYXRhOworK307CisrCisrLyogSGFzaCBmdW5j dGlvbiBmb3IgYSBzeW10YWJfaW5kZXhfZW50cnkuICAqLworK3N0YXRpYyBoYXNodmFsX3QKKyto YXNoX3N5bXRhYl9lbnRyeSAoY29uc3Qgdm9pZCAqZSkKKyt7CisrICBjb25zdCBzdHJ1Y3Qgc3lt dGFiX2luZGV4X2VudHJ5ICplbnRyeSA9IGU7CisrICByZXR1cm4gaXRlcmF0aXZlX2hhc2ggKFZF Q19hZGRyZXNzIChvZmZzZXRfdHlwZSwgZW50cnktPmN1X2luZGljZXMpLAorKwkJCSBzaXplb2Yg KG9mZnNldF90eXBlKSAqIFZFQ19sZW5ndGggKG9mZnNldF90eXBlLAorKwkJCQkJCQkgICAgZW50 cnktPmN1X2luZGljZXMpLAorKwkJCSAwKTsKKyt9CisrCisrLyogRXF1YWxpdHkgZnVuY3Rpb24g Zm9yIGEgc3ltdGFiX2luZGV4X2VudHJ5LiAgKi8KKytzdGF0aWMgaW50CisrZXFfc3ltdGFiX2Vu dHJ5IChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IHN0cnVjdCBz eW10YWJfaW5kZXhfZW50cnkgKmVhID0gYTsKKysgIGNvbnN0IHN0cnVjdCBzeW10YWJfaW5kZXhf ZW50cnkgKmViID0gYjsKKysgIGludCBsZW4gPSBWRUNfbGVuZ3RoIChvZmZzZXRfdHlwZSwgZWEt PmN1X2luZGljZXMpOworKyAgaWYgKGxlbiAhPSBWRUNfbGVuZ3RoIChvZmZzZXRfdHlwZSwgZWIt PmN1X2luZGljZXMpKQorKyAgICByZXR1cm4gMDsKKysgIHJldHVybiAhbWVtY21wIChWRUNfYWRk cmVzcyAob2Zmc2V0X3R5cGUsIGVhLT5jdV9pbmRpY2VzKSwKKysJCSAgVkVDX2FkZHJlc3MgKG9m ZnNldF90eXBlLCBlYi0+Y3VfaW5kaWNlcyksCisrCQkgIHNpemVvZiAob2Zmc2V0X3R5cGUpICog bGVuKTsKKyt9CisrCisrLyogRGVzdHJveSBhIHN5bXRhYl9pbmRleF9lbnRyeS4gICovCisrc3Rh dGljIHZvaWQKKytkZWxldGVfc3ltdGFiX2VudHJ5ICh2b2lkICpwKQorK3sKKysgIHN0cnVjdCBz eW10YWJfaW5kZXhfZW50cnkgKmVudHJ5ID0gcDsKKysgIFZFQ19mcmVlIChvZmZzZXRfdHlwZSwg ZW50cnktPmN1X2luZGljZXMpOworKyAgeGZyZWUgKGVudHJ5KTsKKyt9CisrCisrLyogQ3JlYXRl IGEgaGFzaCB0YWJsZSBob2xkaW5nIHN5bXRhYl9pbmRleF9lbnRyeSBvYmplY3RzLiAgKi8KKytz dGF0aWMgaHRhYl90CisrY3JlYXRlX2luZGV4X3RhYmxlICh2b2lkKQorK3sKKysgIHJldHVybiBo dGFiX2NyZWF0ZV9hbGxvYyAoMTAwLCBoYXNoX3N5bXRhYl9lbnRyeSwgZXFfc3ltdGFiX2VudHJ5 LAorKwkJCSAgICBkZWxldGVfc3ltdGFiX2VudHJ5LCB4Y2FsbG9jLCB4ZnJlZSk7CisrfQorKwor Ky8qIENyZWF0ZSBhIG5ldyBtYXBwZWQgc3ltdGFiIG9iamVjdC4gICovCisrc3RhdGljIHN0cnVj dCBtYXBwZWRfc3ltdGFiICoKKytjcmVhdGVfbWFwcGVkX3N5bXRhYiAodm9pZCkKKyt7CisrICBz dHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiID0gWE5FVyAoc3RydWN0IG1hcHBlZF9zeW10YWIp OworKyAgc3ltdGFiLT5uX2VsZW1lbnRzID0gMDsKKysgIHN5bXRhYi0+c2l6ZSA9IDEwMjQ7Cisr ICBzeW10YWItPmRhdGEgPSBYQ05FV1ZFQyAoc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqLCBz eW10YWItPnNpemUpOworKyAgcmV0dXJuIHN5bXRhYjsKKyt9CisrCisrLyogRGVzdHJveSBhIG1h cHBlZF9zeW10YWIuICAqLworK3N0YXRpYyB2b2lkCisrY2xlYW51cF9tYXBwZWRfc3ltdGFiICh2 b2lkICpwKQorK3sKKysgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIgPSBwOworKyAgLyog VGhlIGNvbnRlbnRzIG9mIHRoZSBhcnJheSBhcmUgZnJlZWQgd2hlbiB0aGUgb3RoZXIgaGFzaCB0 YWJsZSBpcworKyAgICAgZGVzdHJveWVkLiAgKi8KKysgIHhmcmVlIChzeW10YWItPmRhdGEpOwor KyAgeGZyZWUgKHN5bXRhYik7CisrfQorKworKy8qIEZpbmQgYSBzbG90IGluIFNZTVRBQiBmb3Ig dGhlIHN5bWJvbCBOQU1FLiAgUmV0dXJucyBhIHBvaW50ZXIgdG8KKysgICB0aGUgc2xvdC4gICov Cisrc3RhdGljIHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKioKKytmaW5kX3Nsb3QgKHN0cnVj dCBtYXBwZWRfc3ltdGFiICpzeW10YWIsIGNvbnN0IGNoYXIgKm5hbWUpCisreworKyAgb2Zmc2V0 X3R5cGUgaW5kZXgsIHN0ZXAsIGhhc2ggPSBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2ggKG5hbWUp OworKworKyAgaW5kZXggPSBoYXNoICYgKHN5bXRhYi0+c2l6ZSAtIDEpOworKyAgc3RlcCA9ICgo aGFzaCAqIDE3KSAmIChzeW10YWItPnNpemUgLSAxKSkgfCAxOworKworKyAgZm9yICg7OykKKysg ICAgeworKyAgICAgIGlmICghc3ltdGFiLT5kYXRhW2luZGV4XSB8fCAhc3RyY21wIChuYW1lLCBz eW10YWItPmRhdGFbaW5kZXhdLT5uYW1lKSkKKysJcmV0dXJuICZzeW10YWItPmRhdGFbaW5kZXhd OworKyAgICAgIGluZGV4ID0gKGluZGV4ICsgc3RlcCkgJiAoc3ltdGFiLT5zaXplIC0gMSk7Cisr ICAgIH0KKyt9CisrCisrLyogRXhwYW5kIFNZTVRBQidzIGhhc2ggdGFibGUuICAqLworK3N0YXRp YyB2b2lkCisraGFzaF9leHBhbmQgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIpCisrewor KyAgb2Zmc2V0X3R5cGUgb2xkX3NpemUgPSBzeW10YWItPnNpemU7CisrICBvZmZzZXRfdHlwZSBp OworKyAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKm9sZF9lbnRyaWVzID0gc3ltdGFiLT5k YXRhOworKworKyAgc3ltdGFiLT5zaXplICo9IDI7CisrICBzeW10YWItPmRhdGEgPSBYQ05FV1ZF QyAoc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqLCBzeW10YWItPnNpemUpOworKworKyAgZm9y IChpID0gMDsgaSA8IG9sZF9zaXplOyArK2kpCisrICAgIHsKKysgICAgICBpZiAob2xkX2VudHJp ZXNbaV0pCisrCXsKKysJICBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5ICoqc2xvdCA9IGZpbmRf c2xvdCAoc3ltdGFiLAorKwkJCQkJCQlvbGRfZW50cmllc1tpXS0+bmFtZSk7CisrCSAgKnNsb3Qg PSBvbGRfZW50cmllc1tpXTsKKysJfQorKyAgICB9CisrCisrICB4ZnJlZSAob2xkX2VudHJpZXMp OworK30KKysKKysvKiBBZGQgYW4gZW50cnkgdG8gU1lNVEFCLiAgTkFNRSBpcyB0aGUgbmFtZSBv ZiB0aGUgc3ltYm9sLiAgQ1VfSU5ERVgKKysgICBpcyB0aGUgaW5kZXggb2YgdGhlIENVIGluIHdo aWNoIHRoZSBzeW1ib2wgYXBwZWFycy4gICovCisrc3RhdGljIHZvaWQKKythZGRfaW5kZXhfZW50 cnkgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWIsIGNvbnN0IGNoYXIgKm5hbWUsCisrCQkg b2Zmc2V0X3R5cGUgY3VfaW5kZXgpCisreworKyAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAq KnNsb3Q7CisrCisrICArK3N5bXRhYi0+bl9lbGVtZW50czsKKysgIGlmICg0ICogc3ltdGFiLT5u X2VsZW1lbnRzIC8gMyA+PSBzeW10YWItPnNpemUpCisrICAgIGhhc2hfZXhwYW5kIChzeW10YWIp OworKworKyAgc2xvdCA9IGZpbmRfc2xvdCAoc3ltdGFiLCBuYW1lKTsKKysgIGlmICghKnNsb3Qp CisrICAgIHsKKysgICAgICAqc2xvdCA9IFhORVcgKHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkp OworKyAgICAgICgqc2xvdCktPm5hbWUgPSBuYW1lOworKyAgICAgICgqc2xvdCktPmN1X2luZGlj ZXMgPSBOVUxMOworKyAgICB9CisrICAvKiBEb24ndCBwdXNoIGFuIGluZGV4IHR3aWNlLiAgRHVl IHRvIGhvdyB3ZSBhZGQgZW50cmllcyB3ZSBvbmx5CisrICAgICBoYXZlIHRvIGNoZWNrIHRoZSBs YXN0IG9uZS4gICovIAorKyAgaWYgKFZFQ19lbXB0eSAob2Zmc2V0X3R5cGUsICgqc2xvdCktPmN1 X2luZGljZXMpCisrICAgICAgfHwgVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsICgqc2xvdCktPmN1 X2luZGljZXMpICE9IGN1X2luZGV4KQorKyAgICBWRUNfc2FmZV9wdXNoIChvZmZzZXRfdHlwZSwg KCpzbG90KS0+Y3VfaW5kaWNlcywgY3VfaW5kZXgpOworK30KKysKKysvKiBBZGQgYSB2ZWN0b3Ig b2YgaW5kaWNlcyB0byB0aGUgY29uc3RhbnQgcG9vbC4gICovCisrc3RhdGljIG9mZnNldF90eXBl CisrYWRkX2luZGljZXNfdG9fY3Bvb2wgKGh0YWJfdCBpbmRleF90YWJsZSwgc3RydWN0IG9ic3Rh Y2sgKmNwb29sLAorKwkJICAgICAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqZW50cnkpCisr eworKyAgdm9pZCAqKnNsb3Q7CisrCisrICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKGluZGV4X3Rh YmxlLCBlbnRyeSwgSU5TRVJUKTsKKysgIGlmICghKnNsb3QpCisrICAgIHsKKysgICAgICBvZmZz ZXRfdHlwZSBsZW4gPSBWRUNfbGVuZ3RoIChvZmZzZXRfdHlwZSwgZW50cnktPmN1X2luZGljZXMp OworKyAgICAgIG9mZnNldF90eXBlIHZhbCA9IE1BWUJFX1NXQVAgKGxlbik7CisrICAgICAgb2Zm c2V0X3R5cGUgaXRlcjsKKysgICAgICBpbnQgaTsKKysKKysgICAgICAqc2xvdCA9IGVudHJ5Owor KyAgICAgIGVudHJ5LT5pbmRleF9vZmZzZXQgPSBvYnN0YWNrX29iamVjdF9zaXplIChjcG9vbCk7 CisrCisrICAgICAgb2JzdGFja19ncm93IChjcG9vbCwgJnZhbCwgc2l6ZW9mICh2YWwpKTsKKysg ICAgICBmb3IgKGkgPSAwOworKwkgICBWRUNfaXRlcmF0ZSAob2Zmc2V0X3R5cGUsIGVudHJ5LT5j dV9pbmRpY2VzLCBpLCBpdGVyKTsKKysJICAgKytpKQorKwl7CisrCSAgdmFsID0gTUFZQkVfU1dB UCAoaXRlcik7CisrCSAgb2JzdGFja19ncm93IChjcG9vbCwgJnZhbCwgc2l6ZW9mICh2YWwpKTsK KysJfQorKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICBzdHJ1Y3Qgc3ltdGFiX2luZGV4 X2VudHJ5ICpvbGRfZW50cnkgPSAqc2xvdDsKKysgICAgICBlbnRyeS0+aW5kZXhfb2Zmc2V0ID0g b2xkX2VudHJ5LT5pbmRleF9vZmZzZXQ7CisrICAgICAgZW50cnkgPSBvbGRfZW50cnk7CisrICAg IH0KKysgIHJldHVybiBlbnRyeS0+aW5kZXhfb2Zmc2V0OworK30KKysKKysvKiBXcml0ZSB0aGUg bWFwcGVkIGhhc2ggdGFibGUgU1lNVEFCIHRvIHRoZSBvYnN0YWNrIE9VVFBVVCwgd2l0aAorKyAg IGNvbnN0YW50IHBvb2wgZW50cmllcyBnb2luZyBpbnRvIHRoZSBvYnN0YWNrIENQT09MLiAgKi8K KytzdGF0aWMgdm9pZAorK3dyaXRlX2hhc2hfdGFibGUgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpz eW10YWIsCisrCQkgIHN0cnVjdCBvYnN0YWNrICpvdXRwdXQsIHN0cnVjdCBvYnN0YWNrICpjcG9v bCkKKyt7CisrICBvZmZzZXRfdHlwZSBpOworKyAgaHRhYl90IGluZGV4X3RhYmxlOworKyAgaHRh Yl90IHN0cl90YWJsZTsKKysKKysgIGluZGV4X3RhYmxlID0gY3JlYXRlX2luZGV4X3RhYmxlICgp OworKyAgc3RyX3RhYmxlID0gY3JlYXRlX3N0cnRhYiAoKTsKKysgIC8qIFdlIGFkZCBhbGwgdGhl IGluZGV4IHZlY3RvcnMgdG8gdGhlIGNvbnN0YW50IHBvb2wgZmlyc3QsIHRvCisrICAgICBlbnN1 cmUgYWxpZ25tZW50IGlzIG9rLiAgKi8KKysgIGZvciAoaSA9IDA7IGkgPCBzeW10YWItPnNpemU7 ICsraSkKKysgICAgeworKyAgICAgIGlmIChzeW10YWItPmRhdGFbaV0pCisrCWFkZF9pbmRpY2Vz X3RvX2Nwb29sIChpbmRleF90YWJsZSwgY3Bvb2wsIHN5bXRhYi0+ZGF0YVtpXSk7CisrICAgIH0K KysKKysgIC8qIE5vdyB3cml0ZSBvdXQgdGhlIGhhc2ggdGFibGUuICAqLworKyAgZm9yIChpID0g MDsgaSA8IHN5bXRhYi0+c2l6ZTsgKytpKQorKyAgICB7CisrICAgICAgb2Zmc2V0X3R5cGUgc3Ry X29mZiwgdmVjX29mZjsKKysKKysgICAgICBpZiAoc3ltdGFiLT5kYXRhW2ldKQorKwl7CisrCSAg c3RyX29mZiA9IGFkZF9zdHJpbmcgKHN0cl90YWJsZSwgY3Bvb2wsIHN5bXRhYi0+ZGF0YVtpXS0+ bmFtZSk7CisrCSAgdmVjX29mZiA9IHN5bXRhYi0+ZGF0YVtpXS0+aW5kZXhfb2Zmc2V0OworKwl9 CisrICAgICAgZWxzZQorKwl7CisrCSAgLyogV2hpbGUgMCBpcyBhIHZhbGlkIGNvbnN0YW50IHBv b2wgaW5kZXgsIGl0IGlzIG5vdCB2YWxpZAorKwkgICAgIHRvIGhhdmUgMCBmb3IgYm90aCBvZmZz ZXRzLiAgKi8KKysJICBzdHJfb2ZmID0gMDsKKysJICB2ZWNfb2ZmID0gMDsKKysJfQorKworKyAg ICAgIHN0cl9vZmYgPSBNQVlCRV9TV0FQIChzdHJfb2ZmKTsKKysgICAgICB2ZWNfb2ZmID0gTUFZ QkVfU1dBUCAodmVjX29mZik7CisrCisrICAgICAgb2JzdGFja19ncm93IChvdXRwdXQsICZzdHJf b2ZmLCBzaXplb2YgKHN0cl9vZmYpKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKG91dHB1dCwgJnZl Y19vZmYsIHNpemVvZiAodmVjX29mZikpOworKyAgICB9CisrCisrICBodGFiX2RlbGV0ZSAoc3Ry X3RhYmxlKTsKKysgIGh0YWJfZGVsZXRlIChpbmRleF90YWJsZSk7CisrfQorKworKy8qIFdyaXRl IGFuIGFkZHJlc3MgZW50cnkgdG8gQUREUl9PQlNUQUNLLiAgVGhlIGFkZHJlc3NlcyBhcmUgdGFr ZW4KKysgICBmcm9tIFBTVDsgQ1VfSU5ERVggaXMgdGhlIGluZGV4IG9mIHRoZSBDVSBpbiB0aGUg dmVjdG9yIG9mIGFsbAorKyAgIENVcy4gICovCisrc3RhdGljIHZvaWQKKythZGRfYWRkcmVzc19l bnRyeSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisrCQkgICBzdHJ1Y3Qgb2JzdGFjayAqYWRk cl9vYnN0YWNrLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwKKysJCSAgIHVuc2lnbmVkIGlu dCBjdV9pbmRleCkKKyt7CisrICBvZmZzZXRfdHlwZSBvZmZzZXQ7CisrICBjaGFyIGFkZHJbOF07 CisrICBDT1JFX0FERFIgYmFzZWFkZHI7CisrCisrICBiYXNlYWRkciA9IEFOT0ZGU0VUIChvYmpm aWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKKysKKysgIHN0 b3JlX3Vuc2lnbmVkX2ludGVnZXIgKGFkZHIsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBwc3QtPnRl eHRsb3cgLSBiYXNlYWRkcik7CisrICBvYnN0YWNrX2dyb3cgKGFkZHJfb2JzdGFjaywgYWRkciwg OCk7CisrICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyIChhZGRyLCA4LCBCRkRfRU5ESUFOX0xJVFRM RSwgcHN0LT50ZXh0aGlnaCAtIGJhc2VhZGRyKTsKKysgIG9ic3RhY2tfZ3JvdyAoYWRkcl9vYnN0 YWNrLCBhZGRyLCA4KTsKKysgIG9mZnNldCA9IE1BWUJFX1NXQVAgKGN1X2luZGV4KTsKKysgIG9i c3RhY2tfZ3JvdyAoYWRkcl9vYnN0YWNrLCAmb2Zmc2V0LCBzaXplb2YgKG9mZnNldF90eXBlKSk7 CisrfQorKworKy8qIEFkZCBhIGxpc3Qgb2YgcGFydGlhbCBzeW1ib2xzIHRvIFNZTVRBQi4gICov Cisrc3RhdGljIHZvaWQKKyt3cml0ZV9wc3ltYm9scyAoc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5 bXRhYiwKKysJCXN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW1wLAorKwkJaW50IGNvdW50LAor KwkJb2Zmc2V0X3R5cGUgY3VfaW5kZXgpCisreworKyAgZm9yICg7IGNvdW50LS0gPiAwOyArK3Bz eW1wKQorKyAgICB7CisrICAgICAgaWYgKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW1wKSA9PSBsYW5n dWFnZV9hZGEpCisrCWVycm9yIChfKCJBZGEgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkg dGhlIGluZGV4IikpOworKyAgICAgIGFkZF9pbmRleF9lbnRyeSAoc3ltdGFiLCBTWU1CT0xfTkFU VVJBTF9OQU1FICgqcHN5bXApLCBjdV9pbmRleCk7CisrICAgIH0KKyt9CisrCisrLyogV3JpdGUg dGhlIGNvbnRlbnRzIG9mIGFuICgidW5maW5pc2hlZCIpIG9ic3RhY2sgdG8gRklMRS4gIFRocm93 IGFuCisrICAgZXhjZXB0aW9uIGlmIHRoZXJlIGlzIGFuIGVycm9yLiAgKi8KKytzdGF0aWMgdm9p ZAorK3dyaXRlX29ic3RhY2sgKEZJTEUgKmZpbGUsIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQor K3sKKysgIGlmIChmd3JpdGUgKG9ic3RhY2tfYmFzZSAob2JzdGFjayksIDEsIG9ic3RhY2tfb2Jq ZWN0X3NpemUgKG9ic3RhY2spLAorKwkgICAgICBmaWxlKQorKyAgICAgICE9IG9ic3RhY2tfb2Jq ZWN0X3NpemUgKG9ic3RhY2spKQorKyAgICBlcnJvciAoXygiY291bGRuJ3QgZGF0YSB3cml0ZSB0 byBmaWxlIikpOworK30KKysKKysvKiBVbmxpbmsgYSBmaWxlIGlmIHRoZSBhcmd1bWVudCBpcyBu b3QgTlVMTC4gICovCisrc3RhdGljIHZvaWQKKyt1bmxpbmtfaWZfc2V0ICh2b2lkICpwKQorK3sK KysgIGNoYXIgKipmaWxlbmFtZSA9IHA7CisrICBpZiAoKmZpbGVuYW1lKQorKyAgICB1bmxpbmsg KCpmaWxlbmFtZSk7CisrfQorKworKy8qIENyZWF0ZSBhbiBpbmRleCBmaWxlIGZvciBPQkpGSUxF IGluIHRoZSBkaXJlY3RvcnkgRElSLiAgKi8KKytzdGF0aWMgdm9pZAorK3dyaXRlX3BzeW10YWJz X3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZGlyKQorK3sK KysgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOworKyAgY2hhciAqZmlsZW5hbWUsICpjbGVhbnVw X2ZpbGVuYW1lOworKyAgc3RydWN0IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29u c3RhbnRfcG9vbCwgc3ltdGFiX29ic3RhY2ssIGN1X2xpc3Q7CisrICBpbnQgaTsKKysgIEZJTEUg Km91dF9maWxlOworKyAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKKysgIG9mZnNldF90 eXBlIHZhbCwgc2l6ZV9vZl9jb250ZW50cywgdG90YWxfbGVuOworKyAgc3RydWN0IHN0YXQgc3Q7 CisrICBjaGFyIGJ1Zls4XTsKKysKKysgIGlmICghb2JqZmlsZS0+cHN5bXRhYnMpCisrICAgIHJl dHVybjsKKysgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4KQorKyAgICBlcnJv ciAoXygiQ2Fubm90IHVzZSBhbiBpbmRleCB0byBjcmVhdGUgdGhlIGluZGV4IikpOworKworKyAg aWYgKHN0YXQgKG9iamZpbGUtPm5hbWUsICZzdCkgPCAwKQorKyAgICBwZXJyb3Jfd2l0aF9uYW1l IChfKCJDb3VsZCBub3Qgc3RhdCIpKTsKKysKKysgIGZpbGVuYW1lID0gY29uY2F0IChkaXIsIFNM QVNIX1NUUklORywgbGJhc2VuYW1lIChvYmpmaWxlLT5uYW1lKSwKKysJCSAgICAgSU5ERVhfU1VG RklYLCAoY2hhciAqKSBOVUxMKTsKKysgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBm aWxlbmFtZSk7CisrCisrICBvdXRfZmlsZSA9IGZvcGVuIChmaWxlbmFtZSwgIndiIik7CisrICBp ZiAoIW91dF9maWxlKQorKyAgICBlcnJvciAoXygiQ2FuJ3Qgb3BlbiBgJXMnIGZvciB3cml0aW5n IiksIGZpbGVuYW1lKTsKKysKKysgIGNsZWFudXBfZmlsZW5hbWUgPSBmaWxlbmFtZTsKKysgIG1h a2VfY2xlYW51cCAodW5saW5rX2lmX3NldCwgJmNsZWFudXBfZmlsZW5hbWUpOworKworKyAgc3lt dGFiID0gY3JlYXRlX21hcHBlZF9zeW10YWIgKCk7CisrICBtYWtlX2NsZWFudXAgKGNsZWFudXBf bWFwcGVkX3N5bXRhYiwgc3ltdGFiKTsKKysKKysgIG9ic3RhY2tfaW5pdCAoJmFkZHJfb2JzdGFj ayk7CisrICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmYWRkcl9vYnN0YWNrKTsKKysKKysg IG9ic3RhY2tfaW5pdCAoJmN1X2xpc3QpOworKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAo JmN1X2xpc3QpOworKworKyAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9j b21wX3VuaXRzOyArK2kpCisrICAgIHsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07CisrICAgICAgc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiID0gY3UtPnYucHN5bXRhYjsKKysgICAgICBnZGJf Ynl0ZSB2YWxbOF07CisrCisrICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwKKysJCSAgICAg IG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5saXN0ICsgcHN5bXRhYi0+Z2xvYmFsc19vZmZzZXQs CisrCQkgICAgICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpKTsKKysgICAgICB3cml0ZV9wc3lt Ym9scyAoc3ltdGFiLAorKwkJICAgICAgb2JqZmlsZS0+c3RhdGljX3BzeW1ib2xzLmxpc3QgKyBw c3ltdGFiLT5zdGF0aWNzX29mZnNldCwKKysJCSAgICAgIHBzeW10YWItPm5fc3RhdGljX3N5bXMs IGkpOworKworKyAgICAgIGFkZF9hZGRyZXNzX2VudHJ5IChvYmpmaWxlLCAmYWRkcl9vYnN0YWNr LCBwc3ltdGFiLCBpKTsKKysKKysgICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWwsIDgs IEJGRF9FTkRJQU5fTElUVExFLCBjdS0+b2Zmc2V0KTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZj dV9saXN0LCB2YWwsIDgpOworKyAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbCwgOCwg QkZEX0VORElBTl9MSVRUTEUsIGN1LT5sZW5ndGgpOworKyAgICAgIG9ic3RhY2tfZ3JvdyAoJmN1 X2xpc3QsIHZhbCwgOCk7CisrICAgIH0KKysKKysgIG9ic3RhY2tfaW5pdCAoJmNvbnN0YW50X3Bv b2wpOworKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJmNvbnN0YW50X3Bvb2wpOworKyAg b2JzdGFja19pbml0ICgmc3ltdGFiX29ic3RhY2spOworKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tf ZnJlZSAoJnN5bXRhYl9vYnN0YWNrKTsKKysgIHdyaXRlX2hhc2hfdGFibGUgKHN5bXRhYiwgJnN5 bXRhYl9vYnN0YWNrLCAmY29uc3RhbnRfcG9vbCk7CisrCisrICBvYnN0YWNrX2luaXQgKCZjb250 ZW50cyk7CisrICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmY29udGVudHMpOworKyAgc2l6 ZV9vZl9jb250ZW50cyA9IDUgKiBzaXplb2YgKG9mZnNldF90eXBlKTsKKysgIHRvdGFsX2xlbiA9 IHNpemVfb2ZfY29udGVudHM7CisrCisrICAvKiBUaGUgdmVyc2lvbiBudW1iZXIuICAqLworKyAg dmFsID0gTUFZQkVfU1dBUCAoMSk7CisrICBvYnN0YWNrX2dyb3cgKCZjb250ZW50cywgJnZhbCwg c2l6ZW9mICh2YWwpKTsKKysKKysgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIENVIGxpc3QgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLworKyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVu KTsKKysgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworKyAg dG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZjdV9saXN0KTsKKysKKysgIC8qIFRo ZSBvZmZzZXQgb2YgdGhlIGFkZHJlc3MgdGFibGUgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUu ICAqLworKyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKKysgIG9ic3RhY2tfZ3JvdyAo JmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOworKyAgdG90YWxfbGVuICs9IG9ic3RhY2tf b2JqZWN0X3NpemUgKCZhZGRyX29ic3RhY2spOworKworKyAgLyogVGhlIG9mZnNldCBvZiB0aGUg c3ltYm9sIHRhYmxlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLiAgKi8KKysgIHZhbCA9IE1B WUJFX1NXQVAgKHRvdGFsX2xlbik7CisrICBvYnN0YWNrX2dyb3cgKCZjb250ZW50cywgJnZhbCwg c2l6ZW9mICh2YWwpKTsKKysgIHRvdGFsX2xlbiArPSBvYnN0YWNrX29iamVjdF9zaXplICgmc3lt dGFiX29ic3RhY2spOworKworKyAgLyogVGhlIG9mZnNldCBvZiB0aGUgY29uc3RhbnQgcG9vbCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCisrICB2YWwgPSBNQVlCRV9TV0FQICh0b3Rh bF9sZW4pOworKyAgb2JzdGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNpemVvZiAodmFsKSk7 CisrICB0b3RhbF9sZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJmNvbnN0YW50X3Bvb2wpOwor KworKyAgZ2RiX2Fzc2VydCAob2JzdGFja19vYmplY3Rfc2l6ZSAoJmNvbnRlbnRzKSA9PSBzaXpl X29mX2NvbnRlbnRzKTsKKysKKysgIHdyaXRlX29ic3RhY2sgKG91dF9maWxlLCAmY29udGVudHMp OworKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjdV9saXN0KTsKKysgIHdyaXRlX29ic3Rh Y2sgKG91dF9maWxlLCAmYWRkcl9vYnN0YWNrKTsKKysgIHdyaXRlX29ic3RhY2sgKG91dF9maWxl LCAmc3ltdGFiX29ic3RhY2spOworKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjb25zdGFu dF9wb29sKTsKKysKKysgIGZjbG9zZSAob3V0X2ZpbGUpOworKworKyAgLyogV2Ugd2FudCB0byBr ZWVwIHRoZSBmaWxlLCBzbyB3ZSBzZXQgY2xlYW51cF9maWxlbmFtZSB0byBOVUxMCisrICAgICBo ZXJlLiAgU2VlIHVubGlua19pZl9zZXQuICAqLworKyAgY2xlYW51cF9maWxlbmFtZSA9IE5VTEw7 CisrCisrICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CisrfQorKworKy8qIFRoZSBtYXBwZWQgaW5k ZXggZmlsZSBmb3JtYXQgaXMgZGVzaWduZWQgdG8gYmUgZGlyZWN0bHkgbW1hcCgpYWJsZQorKyAg IG9uIGFueSBhcmNoaXRlY3R1cmUuICBJbiBtb3N0IGNhc2VzLCBhIGRhdHVtIGlzIHJlcHJlc2Vu dGVkIHVzaW5nIGEKKysgICBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyIHZhbHVlLCBjYWxs ZWQgYW4gb2Zmc2V0X3R5cGUuICBCaWcKKysgICBlbmRpYW4gbWFjaGluZXMgbXVzdCBieXRlLXN3 YXAgdGhlIHZhbHVlcyBiZWZvcmUgdXNpbmcgdGhlbS4KKysgICBFeGNlcHRpb25zIHRvIHRoaXMg cnVsZSBhcmUgbm90ZWQuICBUaGUgZGF0YSBpcyBsYWlkIG91dCBzdWNoIHRoYXQKKysgICBhbGln bm1lbnQgaXMgYWx3YXlzIHJlc3BlY3RlZC4KKysKKysgICBBIG1hcHBlZCBpbmRleCBjb25zaXN0 cyBvZiBzZXZlcmFsIHNlY3Rpb25zLgorKworKyAgIDEuIFRoZSBmaWxlIGhlYWRlci4gIFRoaXMg aXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIG9mIG9mZnNldF90eXBlCisrICAgdW5sZXNzIG90aGVy d2lzZSBub3RlZDoKKysgICBbMF0gVGhlIHZlcnNpb24gbnVtYmVyLiAgQ3VycmVudGx5IDEuCisr ICAgWzFdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgQ1Ug bGlzdC4KKysgICBbMl0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9m IHRoZSBhZGRyZXNzIHNlY3Rpb24uCisrICAgWzNdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0 IG9mIHRoZSBmaWxlLCBvZiB0aGUgc3ltYm9sIHRhYmxlLgorKyAgIFs0XSBUaGUgb2Zmc2V0LCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGNvbnN0YW50IHBvb2wuCisrCisrICAg Mi4gVGhlIENVIGxpc3QuICBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgcGFpcnMgb2YgNjQtYml0Cisr ICAgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBUaGUgZmlyc3QgZWxlbWVudCBpbiBlYWNoIHBhaXIg aXMgdGhlIG9mZnNldAorKyAgIG9mIGEgQ1UgaW4gdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24uICBU aGUgc2Vjb25kIGVsZW1lbnQgaW4gZWFjaAorKyAgIHBhaXIgaXMgdGhlIGxlbmd0aCBvZiB0aGF0 IENVLiAgUmVmZXJlbmNlcyB0byBhIENVIGVsc2V3aGVyZSBpbiB0aGUKKysgICBtYXAgYXJlIGRv bmUgdXNpbmcgYSBDVSBpbmRleCwgd2hpY2ggaXMganVzdCB0aGUgMC1iYXNlZCBpbmRleCBpbnRv CisrICAgdGhpcyB0YWJsZS4KKysKKysgICAzLiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFk ZHJlc3Mgc2VjdGlvbiBjb25zaXN0cyBvZiBhIHNlcXVlbmNlCisrICAgb2YgYWRkcmVzcyBlbnRy aWVzLiAgRWFjaCBhZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBlbGVtZW50cy4KKysgICBbMF0gVGhl IGxvdyBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZhbHVlLgorKyAg IFsxXSBUaGUgaGlnaCBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZh bHVlLgorKyAgIFsyXSBUaGUgQ1UgaW5kZXguICBUaGlzIGlzIGFuIG9mZnNldF90eXBlIHZhbHVl LgorKworKyAgIDQuIFRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGEgaGFzaCB0YWJsZS4gIFRo ZSBzaXplIG9mIHRoZSBoYXNoCisrICAgdGFibGUgaXMgYWx3YXlzIGEgcG93ZXIgb2YgMi4gIFRo ZSBpbml0aWFsIGhhc2ggYW5kIHRoZSBzdGVwIGFyZQorKyAgIGN1cnJlbnRseSBkZWZpbmVkIGJ5 IHRoZSBgZmluZF9zbG90JyBmdW5jdGlvbi4KKysKKysgICBFYWNoIHNsb3QgaW4gdGhlIGhhc2gg dGFibGUgY29uc2lzdHMgb2YgYSBwYWlyIG9mIG9mZnNldF90eXBlCisrICAgdmFsdWVzLiAgVGhl IGZpcnN0IHZhbHVlIGlzIHRoZSBvZmZzZXQgb2YgdGhlIHN5bWJvbCdzIG5hbWUgaW4gdGhlCisr ICAgY29uc3RhbnQgcG9vbC4gIFRoZSBzZWNvbmQgdmFsdWUgaXMgdGhlIG9mZnNldCBvZiB0aGUg Q1UgdmVjdG9yIGluCisrICAgdGhlIGNvbnN0YW50IHBvb2wuCisrCisrICAgSWYgYm90aCB2YWx1 ZXMgYXJlIDAsIHRoZW4gdGhpcyBzbG90IGluIHRoZSBoYXNoIHRhYmxlIGlzIGVtcHR5LgorKyAg IFRoaXMgaXMgb2sgYmVjYXVzZSB3aGlsZSAwIGlzIGEgdmFsaWQgY29uc3RhbnQgcG9vbCBpbmRl eCwgaXQKKysgICBjYW5ub3QgYmUgYSB2YWxpZCBpbmRleCBmb3IgYm90aCBhIHN0cmluZyBhbmQg YSBDVSB2ZWN0b3IuCisrCisrICAgQSBzdHJpbmcgaW4gdGhlIGNvbnN0YW50IHBvb2wgaXMgc3Rv cmVkIGFzIGEgXDAtdGVybWluYXRlZCBzdHJpbmcsCisrICAgYXMgeW91J2QgZXhwZWN0LgorKwor KyAgIEEgQ1UgdmVjdG9yIGluIHRoZSBjb25zdGFudCBwb29sIGlzIGEgc2VxdWVuY2Ugb2Ygb2Zm c2V0X3R5cGUKKysgICB2YWx1ZXMuICBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIG51bWJlciBvZiBD VSBpbmRpY2VzIGluIHRoZSB2ZWN0b3IuCisrICAgRWFjaCBzdWJzZXF1ZW50IHZhbHVlIGlzIHRo ZSBpbmRleCBvZiBhIENVIGluIHRoZSBDVSBsaXN0LiAgVGhpcworKyAgIGVsZW1lbnQgaW4gdGhl IGhhc2ggdGFibGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5lIHRoZQorKyAg IHN5bWJvbC4KKysKKysgICA1LiBUaGUgY29uc3RhbnQgcG9vbC4gIFRoaXMgaXMgc2ltcGx5IGEg YnVuY2ggb2YgYnl0ZXMuICBJdCBpcworKyAgIG9yZ2FuaXplZCBzbyB0aGF0IGFsaWdubWVudCBp cyBjb3JyZWN0OiBDVSB2ZWN0b3JzIGFyZSBzdG9yZWQKKysgICBmaXJzdCwgZm9sbG93ZWQgYnkg c3RyaW5ncy4gICovCisrc3RhdGljIHZvaWQKKytzYXZlX2dkYl9pbmRleF9jb21tYW5kIChjaGFy ICphcmcsIGludCBmcm9tX3R0eSkKKyt7CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysK KysgIGlmICghYXJnIHx8ICEqYXJnKQorKyAgICBlcnJvciAoXygidXNhZ2U6IG1haW50ZW5hbmNl IHNhdmUtZ2RiLWluZGV4IERJUkVDVE9SWSIpKTsKKysKKysgIEFMTF9PQkpGSUxFUyAob2JqZmls ZSkKKysgIHsKKysgICAgc3RydWN0IHN0YXQgc3Q7CisrCisrICAgIC8qIElmIHRoZSBvYmpmaWxl IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYW4gYWN0dWFsIGZpbGUsIHNraXAgaXQuICAqLworKyAg ICBpZiAoc3RhdCAob2JqZmlsZS0+bmFtZSwgJnN0KSA8IDApCisrICAgICAgY29udGludWU7Cisr CisrICAgIGR3YXJmMl9wZXJfb2JqZmlsZSA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZHdhcmYy X29iamZpbGVfZGF0YV9rZXkpOworKyAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlKQorKyAgICAg IHsKKysJdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OworKworKwlUUllfQ0FU Q0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfRVJST1IpCisrCSAgeworKwkgICAgd3JpdGVfcHN5bXRh YnNfdG9faW5kZXggKG9iamZpbGUsIGFyZyk7CisrCSAgfQorKwlpZiAoZXhjZXB0LnJlYXNvbiA8 IDApCisrCSAgZXhjZXB0aW9uX2ZwcmludGYgKGdkYl9zdGRlcnIsIGV4Y2VwdCwKKysJCQkgICAg IF8oIkVycm9yIHdoaWxlIHdyaXRpbmcgaW5kZXggZm9yIGAlcyc6ICIpLAorKwkJCSAgICAgb2Jq ZmlsZS0+bmFtZSk7CisrICAgICAgfQorKyAgfQorIH0KKyAKKysMCisrCisgaW50IGR3YXJmMl9h bHdheXNfZGlzYXNzZW1ibGU7CisgCisgc3RhdGljIHZvaWQKK0BAIC0xMjY1Nyw0ICsxNDUwMSw4 IEBAIFRoZSB2YWx1ZSBpcyB0aGUgbWF4aW11bSBkZXB0aCB0byBwcmludC4iKSwKKyAJCQkgICAg TlVMTCwKKyAJCQkgICAgTlVMTCwKKyAJCQkgICAgJnNldGRlYnVnbGlzdCwgJnNob3dkZWJ1Z2xp c3QpOworKworKyAgYWRkX2NtZCAoImdkYi1pbmRleCIsIGNsYXNzX2ZpbGVzLCBzYXZlX2dkYl9p bmRleF9jb21tYW5kLAorKwkgICBfKCJTYXZlIGEgLmdkYi1pbmRleCBmaWxlIiksCisrCSAgICZz YXZlX2NtZGxpc3QpOworIH0KK2RpZmYgLS1naXQgYS9nZGIvZWxmcmVhZC5jIGIvZ2RiL2VsZnJl YWQuYworaW5kZXggOGMwMDkzOC4uYTI1MGM1OCAxMDA2NDQKKy0tLSBhL2dkYi9lbGZyZWFkLmMK KysrKyBiL2dkYi9lbGZyZWFkLmMKK0BAIC0zNyw5ICszNywxMyBAQAorICNpbmNsdWRlICJjb21w bGFpbnRzLmgiCisgI2luY2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgInBzeW1wcml2Lmgi CisrI2luY2x1ZGUgImdkYnR5cGVzLmgiCisgCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxm cmVhZCAodm9pZCk7CisgCisrLyogRm9yd2FyZCBkZWNsYXJhdGlvbi4gICovCisrc3RhdGljIHN0 cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleDsKKysKKyAvKiBUaGUgc3RydWN0IGVs ZmluZm8gaXMgYXZhaWxhYmxlIG9ubHkgZHVyaW5nIEVMRiBzeW1ib2wgdGFibGUgYW5kCisgICAg cHN5bXRhYiByZWFkaW5nLiAgSXQgaXMgZGVzdHJveWVkIGF0IHRoZSBjb21wbGV0aW9uIG9mIHBz eW10YWItcmVhZGluZy4KKyAgICBJdCdzIGxvY2FsIHRvIGVsZl9zeW1maWxlX3JlYWQuICAqLwor QEAgLTE4MCw3ICsxODQsOCBAQCByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5h bWUsIGludCBuYW1lX2xlbiwgaW50IGNvcHlfbmFtZSwKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworIAorLSAgaWYgKG1zX3R5cGUg PT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQorKyAgaWYgKG1zX3R5cGUg PT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0CisrICAgICAgfHwgbXNfdHlw ZSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCisgICAgIGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3Rl eHRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7CisgCisgICByZXR1cm4gcHJpbV9yZWNvcmRf bWluaW1hbF9zeW1ib2xfZnVsbCAobmFtZSwgbmFtZV9sZW4sIGNvcHlfbmFtZSwgYWRkcmVzcywK K0BAIC0zODgsNyArMzkzLDEwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIGludCB0eXBlLAorIAkgICAgeworIAkgICAgICBpZiAoc3ltLT5mbGFncyAmIChCU0Zf R0xPQkFMIHwgQlNGX1dFQUspKQorIAkJeworLQkJICBtc190eXBlID0gbXN0X3RleHQ7CisrCQkg IGlmIChzeW0tPmZsYWdzICYgQlNGX0dOVV9JTkRJUkVDVF9GVU5DVElPTikKKysJCSAgICBtc190 eXBlID0gbXN0X3RleHRfZ251X2lmdW5jOworKwkJICBlbHNlCisrCQkgICAgbXNfdHlwZSA9IG1z dF90ZXh0OworIAkJfQorIAkgICAgICBlbHNlIGlmICgoc3ltLT5uYW1lWzBdID09ICcuJyAmJiBz eW0tPm5hbWVbMV0gPT0gJ0wnKQorIAkJICAgICAgIHx8ICgoc3ltLT5mbGFncyAmIEJTRl9MT0NB TCkKK0BAIC01NjksNiArNTc3LDI1MCBAQCBlbGZfc3ltdGFiX3JlYWQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCBpbnQgdHlwZSwKKyAgICAgfQorIH0KKyAKKysvKiBGSVhNRTogRGVsYXkgaXQg dGhyb3VnaCBlbGZfc3ltX2Zucy4gICovCisrCisrc3RhdGljIHZvaWQKKytlbGZfcmVsX3BsdF9y ZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUp CisreworKyAgYmZkICpvYmZkID0gb2JqZmlsZS0+b2JmZDsKKysgIGNvbnN0IHN0cnVjdCBlbGZf YmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAob2JmZCk7CisrICBhc2Vj dGlvbiAqcGx0LCAqcmVscGx0LCAqZ290X3BsdDsKKysgIHVuc2lnbmVkIHU7CisrICBpbnQgcGx0 X2VsZl9pZHg7CisrICBiZmRfc2l6ZV90eXBlIHJlbG9jX2NvdW50LCByZWxvYzsKKysgIGNoYXIg KnN0cmluZ19idWZmZXIgPSBOVUxMOworKyAgc2l6ZV90IHN0cmluZ19idWZmZXJfc2l6ZSA9IDA7 CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo ID0gb2JqZmlsZS0+Z2RiYXJjaDsKKysgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5f dHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CisrICBzaXplX3QgcHRyX3NpemUgPSBU WVBFX0xFTkdUSCAocHRyX3R5cGUpOworKworKyAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVn X29iamZpbGVfYmFja2xpbmspCisrICAgIHJldHVybjsKKysKKysgIHBsdCA9IGJmZF9nZXRfc2Vj dGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIpOworKyAgaWYgKHBsdCA9PSBOVUxMKQorKyAgICBy ZXR1cm47CisrICBwbHRfZWxmX2lkeCA9IGVsZl9zZWN0aW9uX2RhdGEgKHBsdCktPnRoaXNfaWR4 OworKworKyAgZ290X3BsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLmdvdC5w bHQiKTsKKysgIGlmIChnb3RfcGx0ID09IE5VTEwpCisrICAgIHJldHVybjsKKysKKysgIC8qIFRo aXMgc2VhcmNoIGFsZ29yaXRobSBpcyBmcm9tIF9iZmRfZWxmX2Nhbm9uaWNhbGl6ZV9keW5hbWlj X3JlbG9jLiAgKi8KKysgIGZvciAocmVscGx0ID0gb2JmZC0+c2VjdGlvbnM7IHJlbHBsdCAhPSBO VUxMOyByZWxwbHQgPSByZWxwbHQtPm5leHQpCisrICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChy ZWxwbHQpLT50aGlzX2hkci5zaF9pbmZvID09IHBsdF9lbGZfaWR4CisrCSYmIChlbGZfc2VjdGlv bl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5zaF90eXBlID09IFNIVF9SRUwKKysJICAgIHx8IGVs Zl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTEEpKQor KyAgICAgIGJyZWFrOworKyAgaWYgKHJlbHBsdCA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisr ICBpZiAoISBiZWQtPnMtPnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCByZWxwbHQsIGR5bl9zeW1i b2xfdGFibGUsIFRSVUUpKQorKyAgICByZXR1cm47CisrCisrICBiYWNrX3RvID0gbWFrZV9jbGVh bnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZzdHJpbmdfYnVmZmVyKTsKKysKKysgIHJlbG9j X2NvdW50ID0gcmVscGx0LT5zaXplIC8gZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19o ZHIuc2hfZW50c2l6ZTsKKysgIGZvciAocmVsb2MgPSAwOyByZWxvYyA8IHJlbG9jX2NvdW50OyBy ZWxvYysrKQorKyAgICB7CisrICAgICAgY29uc3QgY2hhciAqbmFtZSwgKm5hbWVfZ290X3BsdDsK KysgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CisrICAgICAgQ09SRV9BRERSIGFk ZHJlc3M7CisrICAgICAgY29uc3QgY2hhciAqc3VmZml4ID0gIkBnb3QucGx0IjsKKysgICAgICBz aXplX3Qgc3VmZml4X2xlbiA9IHN0cmxlbiAoc3VmZml4KTsKKysgICAgICBzaXplX3QgbmFtZV9s ZW47CisrCisrICAgICAgbmFtZSA9IGJmZF9hc3ltYm9sX25hbWUgKCpyZWxwbHQtPnJlbG9jYXRp b25bcmVsb2NdLnN5bV9wdHJfcHRyKTsKKysgICAgICBuYW1lX2xlbiA9IHN0cmxlbiAobmFtZSk7 CisrICAgICAgYWRkcmVzcyA9IHJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10uYWRkcmVzczsKKysK KysgICAgICAvKiBEb2VzIHRoZSBwb2ludGVyIHJlc2lkZSBpbiB0aGUgLmdvdC5wbHQgc2VjdGlv bj8gICovCisrICAgICAgaWYgKCEoYmZkX2dldF9zZWN0aW9uX3ZtYSAob2JmZCwgZ290X3BsdCkg PD0gYWRkcmVzcworKyAgICAgICAgICAgICYmIGFkZHJlc3MgPCBiZmRfZ2V0X3NlY3Rpb25fdm1h IChvYmZkLCBnb3RfcGx0KQorKwkJCSArIGJmZF9nZXRfc2VjdGlvbl9zaXplIChnb3RfcGx0KSkp CisrCWNvbnRpbnVlOworKworKyAgICAgIC8qIFdlIGNhbm5vdCBjaGVjayBpZiBOQU1FIGlzIGEg cmVmZXJlbmNlIHRvIG1zdF90ZXh0X2dudV9pZnVuYyBhcyBpbgorKwkgT0JKRklMRSB0aGUgc3lt Ym9sIGlzIHVuZGVmaW5lZCBhbmQgdGhlIG9iamZpbGUgaGF2aW5nIE5BTUUgZGVmaW5lZAorKwkg bWF5IG5vdCB5ZXQgaGF2ZSBiZWVuIGxvYWRlZC4gICovCisrCisrICAgICAgaWYgKHN0cmluZ19i dWZmZXJfc2l6ZSA8IG5hbWVfbGVuICsgc3VmZml4X2xlbikKKysJeworKwkgIHN0cmluZ19idWZm ZXJfc2l6ZSA9IDIgKiAobmFtZV9sZW4gKyBzdWZmaXhfbGVuKTsKKysJICBzdHJpbmdfYnVmZmVy ID0geHJlYWxsb2MgKHN0cmluZ19idWZmZXIsIHN0cmluZ19idWZmZXJfc2l6ZSk7CisrCX0KKysg ICAgICBtZW1jcHkgKHN0cmluZ19idWZmZXIsIG5hbWUsIG5hbWVfbGVuKTsKKysgICAgICBtZW1j cHkgKCZzdHJpbmdfYnVmZmVyW25hbWVfbGVuXSwgc3VmZml4LCBzdWZmaXhfbGVuKTsKKysKKysg ICAgICBtc3ltID0gcmVjb3JkX21pbmltYWxfc3ltYm9sIChzdHJpbmdfYnVmZmVyLCBuYW1lX2xl biArIHN1ZmZpeF9sZW4sIDEsCisrCQkJCSAgICBhZGRyZXNzLCBtc3Rfc2xvdF9nb3RfcGx0LCBn b3RfcGx0LAorKwkJCQkgICAgb2JqZmlsZSk7CisrICAgICAgaWYgKG1zeW0pCisrCU1TWU1CT0xf U0laRSAobXN5bSkgPSBwdHJfc2l6ZTsKKysgICAgfQorKworKyAgZG9fY2xlYW51cHMgKGJhY2tf dG8pOworK30KKysKKysvKiBGdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBmb3IgcG9zc2libHkgY3Jl YXRlZCBkdXBsaWNpdGllcyBpbiB0aGUgY2FjaGUuCisrICAgQ2hlY2sgaXQgYnkgcmVzb2x2ZV9n bnVfaWZ1bmNfYnlfY2FjaGUgZmlyc3QuICAqLworKworK3N0YXRpYyBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKgorK2dudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkIChjb25zdCBjaGFyICpm dW5jdGlvbl9uYW1lLAorKwkJCQkgIENPUkVfQUREUiBmdW5jdGlvbl9hZGRyZXNzKQorK3sKKysg IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bSwgKm1zeW1fbmV3OworKyAgYXNlY3Rpb24gKnNl Y3Q7CisrICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVf Z251X2lmdW5jX3RndDsKKysKKysgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMg KGZ1bmN0aW9uX2FkZHJlc3MpOworKyAgaWYgKG1zeW0gPT0gTlVMTCkKKysgICAgcmV0dXJuIE5V TEw7CisrICBpZiAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pICE9IGZ1bmN0aW9uX2FkZHJl c3MpCisrICAgIHJldHVybiBOVUxMOworKyAgLyogbWluaW1hbCBzeW1ib2xzIGhhdmUgYWx3YXlz IFNZTUJPTF9PQkpfU0VDVElPTiBub24tTlVMTC4gICovCisrICBzZWN0ID0gU1lNQk9MX09CSl9T RUNUSU9OIChtc3ltKS0+dGhlX2JmZF9zZWN0aW9uOworKyAgb2JqZmlsZSA9IFNZTUJPTF9PQkpf U0VDVElPTiAobXN5bSktPm9iamZpbGU7CisrCisrICAvKiBJZiAucGx0IGp1bXBzIGJhY2sgdG8g LnBsdCB0aGUgc3ltYm9sIGlzIHN0aWxsIGRlZmVycmVkIGZvciBsYXRlcgorKyAgICAgcmVzb2x1 dGlvbiBhbmQgaXQgaGFzIG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRoaXMgc3lt Ym9sIGNhbgorKyAgICAgcmVzaWRlIGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5jdGlvbiBk ZXNjcmlwdG9yLiAgKi8KKysgIGlmIChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChvYmpm aWxlLT5vYmZkLCBzZWN0KSwgIi5wbHQiKSA9PSAwKQorKyAgICByZXR1cm4gTlVMTDsKKysKKysg IGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlvbl9u YW1lKQorKwkJCQkJKyBzdHJsZW4gKCJAZ251LWlmdW5jLXRndCIpICsgMSk7CisrICBzcHJpbnRm IChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QsICIlc0BnbnUtaWZ1bmMtdGd0IiwgZnVuY3Rp b25fbmFtZSk7CisrCisrICAvKiBDcmVhdGUgbmV3IGFsaWFzICJAZ251LWlmdW5jLXRndCIgZm9y IE1TWU0uICAqLworKyAgbXN5bV9uZXcgPSByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9u X25hbWVfZ251X2lmdW5jX3RndCwKKysJCQkJICAgIHN0cmxlbiAoZnVuY3Rpb25fbmFtZV9nbnVf aWZ1bmNfdGd0KSwgMSwKKysJCQkJICAgIFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSwKKysJ CQkJICAgIE1TWU1CT0xfVFlQRSAobXN5bSksIHNlY3QsIG9iamZpbGUpOworKyAgLyogU2hvdWxk IG5vdCBoYXBwZW4uICAqLworKyAgaWYgKG1zeW1fbmV3ID09IE5VTEwpCisrICAgIHJldHVybiAw OworKworKyAgLyogb2JqZmlsZS0+bXN5bWJvbHMgYXJyYXkgaXMgYWxyZWFkeSBhbGxvY2F0ZWQg b24gb2JzdGFjayBhbmQgaXQgY2Fubm90IGJlCisrICAgICBlYXNpbHkgZXh0ZW5kZWQuICBUaGVy ZWZvcmUgPHRhYj4tY29tcGxldGlvbiBvbiBzeW1ib2wgbmFtZXMgd2lsbCBuZXZlcgorKyAgICAg c2hvdyB0aGUgQGdudS1pZnVuYy10Z3Qgc3ltYm9sLiAgTGluayBpdCBhdCBsZWFzdCB0byB0aGUg aGFzaCB0YWJsZSBzbworKyAgICAgdGhhdCByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSBjYW4g ZmluZCBpdC4gICovCisrICBhZGRfbWluc3ltX3RvX2hhc2hfdGFibGUgKG1zeW1fbmV3LCBvYmpm aWxlLT5tc3ltYm9sX2hhc2gpOworKyAgICAKKysgIE1TWU1CT0xfU0laRSAobXN5bV9uZXcpID0g TVNZTUJPTF9TSVpFIChtc3ltKTsKKysgIHJldHVybiBtc3ltX25ldzsKKyt9CisrCisrLyogQ2hl Y2sgZmlyc3QgdGhlIGNhY2hlIGlmIGl0IC0gdW5saWtlbHkgLSBoYXMgbm90IGJlZW4gcG9wdWxh dGVkIHNpbmNlCisrICAgYnBfZ251X2lmdW5jX3Jlc29sdmVyIGhhcyBiZWVuIGNyZWF0ZWQuICBn bnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZAorKyAgIGNvdWxkIGNyZWF0ZSBhIGR1cGxp Y2F0ZSBzeW1ib2wgb3RoZXJ3aXNlLiAgKi8KKysKKyt2b2lkCisrZ251X2lmdW5jX3JlY29yZF9j YWNoZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUs CisrCQkJQ09SRV9BRERSIGZ1bmN0aW9uX2FkZHJlc3MpCisreworKyAgc3RydWN0IG1pbmltYWxf c3ltYm9sICptc3ltOworKworKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIChm dW5jdGlvbl9uYW1lKTsKKysgIGlmIChtc3ltID09IE5VTEwpCisrICAgIGdudV9pZnVuY19yZWNv cmRfY2FjaGVfdW5jaGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNzKTsKKysg IGVsc2UgaWYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSAhPSBmdW5jdGlvbl9hZGRyZXNz KQorKyAgICB7CisrICAgICAgLyogVGhpcyBjYXNlIGluZGljYXRlcyBidWdneSBpbmZlcmlvciBw cm9ncmFtLiAgR0RCIHdvdWxkIG5lZWQgdG8gdXBkYXRlCisrCSBpdHMgTVNZTSBjYWNoZSBzeW1i b2wgZm9yIGZ1bmN0aW9uX2FkZHJlc3MuICBBbnl3YXkgRlVOQ1RJT05fTkFNRSBpcworKwkgbmV2 ZXIgbm9ybWFsbHkgZm91bmQgaW4gdGhlIGNhc2UgYXMgaW4gc3VjaCBjYXNlIG5vCisrCSBicF9n bnVfaWZ1bmNfcmVzb2x2ZXIgd291bGQgYmUgY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuICAq LworKworKyAgICAgIHdhcm5pbmcgKF8oImdudS1pbmRpcmVjdC1mdW5jdGlvbiBcIiVzXCIgaGFz IGNoYW5nZWQgaXRzIHJlc29sdmVkICIKKysJCSAiZnVuY3Rpb25fYWRkcmVzcyBmcm9tICVzIHRv ICVzOyBHREIgaXMgdXNpbmcgdGhlIGZvcm1lciBvbmUiKSwKKysJICAgICAgIGZ1bmN0aW9uX25h bWUsIHBhZGRyZXNzIChnZGJhcmNoLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSkpLAorKwkg ICAgICAgcGFkZHJlc3MgKGdkYmFyY2gsIGZ1bmN0aW9uX2FkZHJlc3MpKTsKKysgICAgfQorK30K KysKKytzdGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoKKytyZXNvbHZlX2dudV9pZnVuY19i eV9nb3QgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUpCisreworKyAgY2hhciAqZnVuY3Rpb25f bmFtZV9nb3RfcGx0OworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisrCisrICBmdW5jdGlv bl9uYW1lX2dvdF9wbHQgPSBhbGxvY2EgKHN0cmxlbiAoZnVuY3Rpb25fbmFtZSkgKyBzdHJsZW4g KCJAZ290LnBsdCIpCisrCQkJCSAgKyAxKTsKKysgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVfZ290 X3BsdCwgIiVzQGdvdC5wbHQiLCBmdW5jdGlvbl9uYW1lKTsKKysKKysgIEFMTF9QU1BBQ0VfT0JK RklMRVMgKGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSwgb2JqZmlsZSkKKysgICAgeworKyAgICAgIGJm ZCAqb2JmZCA9IG9iamZpbGUtPm9iZmQ7CisrICAgICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gg PSBvYmpmaWxlLT5nZGJhcmNoOworKyAgICAgIHN0cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0 aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7CisrICAgICAgc2l6ZV90IHB0cl9z aXplID0gVFlQRV9MRU5HVEggKHB0cl90eXBlKTsKKysgICAgICBDT1JFX0FERFIgcG9pbnRlcl9h ZGRyZXNzLCBmdW5jdGlvbl9hZGRyZXNzOworKyAgICAgIGFzZWN0aW9uICpwbHQ7CisrICAgICAg Z2RiX2J5dGUgKmJ1ZiA9IGFsbG9jYSAocHRyX3NpemUpOworKyAgICAgIHN0cnVjdCBtaW5pbWFs X3N5bWJvbCAqbXN5bTsKKysKKysgICAgICBtc3ltID0gbG9va3VwX21pbmltYWxfc3ltYm9sIChm dW5jdGlvbl9uYW1lX2dvdF9wbHQsIE5VTEwsIG9iamZpbGUpOworKyAgICAgIGlmIChtc3ltID09 IE5VTEwpCisrCWNvbnRpbnVlOworKyAgICAgIGlmIChNU1lNQk9MX1RZUEUgKG1zeW0pICE9IG1z dF9zbG90X2dvdF9wbHQpCisrCWNvbnRpbnVlOworKyAgICAgIHBvaW50ZXJfYWRkcmVzcyA9IFNZ TUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKTsKKysKKysgICAgICBwbHQgPSBiZmRfZ2V0X3NlY3Rp b25fYnlfbmFtZSAob2JmZCwgIi5wbHQiKTsKKysgICAgICBpZiAocGx0ID09IE5VTEwpCisrCWNv bnRpbnVlOworKworKyAgICAgIGlmIChNU1lNQk9MX1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQor Kwljb250aW51ZTsKKysgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwb2ludGVyX2FkZHJl c3MsIGJ1ZiwgcHRyX3NpemUpICE9IDApCisrCWNvbnRpbnVlOworKyAgICAgIGZ1bmN0aW9uX2Fk ZHJlc3MgPSBleHRyYWN0X3R5cGVkX2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOworKworKyAgICAg IG1zeW0gPSBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25fbmFtZSwg ZnVuY3Rpb25fYWRkcmVzcyk7CisrICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKKysJY29udGludWU7 CisrICAgICAgcmV0dXJuIG1zeW07CisrICAgIH0KKysKKysgIHJldHVybiBOVUxMOworK30KKysK KytzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKgorK3Jlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIChj b25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorK3sKKysgIGNoYXIgKmZ1bmN0aW9uX25hbWVfZ251 X2lmdW5jX3RndDsKKysKKysgIGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCA9IGFsbG9jYSAo c3RybGVuIChmdW5jdGlvbl9uYW1lKQorKwkJCQkJKyBzdHJsZW4gKCJAZ251LWlmdW5jLXRndCIp ICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QsICIlc0BnbnUt aWZ1bmMtdGd0IiwgZnVuY3Rpb25fbmFtZSk7CisrCisrICByZXR1cm4gbG9va3VwX21pbmltYWxf c3ltYm9sIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QsIE5VTEwsIE5VTEwpOworK30KKysK KytpbnQKKytyZXNvbHZlX2dudV9pZnVuYyAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgQ09S RV9BRERSICpmdW5jdGlvbl9hZGRyZXNzcCkKKyt7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW07CisrCisrICBtc3ltID0gcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9u X25hbWUpOworKyAgaWYgKG1zeW0gIT0gTlVMTCkKKysgICAgeworKyAgICAgICpmdW5jdGlvbl9h ZGRyZXNzcCA9IFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKTsKKysgICAgICByZXR1cm4gMTsK KysgICAgfQorKworKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2dvdCAoZnVuY3Rpb25f bmFtZSk7CisrICBpZiAobXN5bSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgKmZ1bmN0aW9uX2Fk ZHJlc3NwID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pOworKyAgICAgIHJldHVybiAxOwor KyAgICB9CisrCisrICByZXR1cm4gMDsKKyt9CisrCisgc3RydWN0IGJ1aWxkX2lkCisgICB7Cisg ICAgIHNpemVfdCBzaXplOworQEAgLTc5Nyw2ICsxMDQ5LDggQEAgZWxmX3N5bWZpbGVfcmVhZCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQorIAkgICAgICAgYmZk X2Vycm1zZyAoYmZkX2dldF9lcnJvciAoKSkpOworIAorICAgICAgIGVsZl9zeW10YWJfcmVhZCAo b2JqZmlsZSwgU1RfRFlOQU1JQywgZHluc3ltY291bnQsIGR5bl9zeW1ib2xfdGFibGUsIDApOwor KworKyAgICAgIGVsZl9yZWxfcGx0X3JlYWQgKG9iamZpbGUsIGR5bl9zeW1ib2xfdGFibGUpOwor ICAgICB9CisgCisgICAvKiBBZGQgc3ludGhldGljIHN5bWJvbHMgLSBmb3IgaW5zdGFuY2UsIG5h bWVzIGZvciBhbnkgUExUIGVudHJpZXMuICAqLworQEAgLTg2OSwxMSArMTEyMyw5IEBAIGVsZl9z eW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykK KyAJCQkJc3RyX3NlY3QtPmZpbGVwb3MsCisgCQkJCWJmZF9zZWN0aW9uX3NpemUgKGFiZmQsIHN0 cl9zZWN0KSk7CisgICAgIH0KKy0gIGlmIChkd2FyZjJfaGFzX2luZm8gKG9iamZpbGUpKQorLSAg ICB7CistICAgICAgLyogRFdBUkYgMiBzZWN0aW9ucyAqLworLSAgICAgIGR3YXJmMl9idWlsZF9w c3ltdGFicyAob2JqZmlsZSk7CistICAgIH0KKysKKysgIGlmIChkd2FyZjJfaGFzX2luZm8gKG9i amZpbGUpICYmIGR3YXJmMl9pbml0aWFsaXplX29iamZpbGUgKG9iamZpbGUpKQorKyAgICBvYmpm aWxlLT5zZiA9ICZlbGZfc3ltX2Zuc19nZGJfaW5kZXg7CisgCisgICAvKiBJZiB0aGUgZmlsZSBo YXMgaXRzIG93biBzeW1ib2wgdGFibGVzIGl0IGhhcyBubyBzZXBhcmF0ZSBkZWJ1ZyBpbmZvLgor ICAgICAgYC5keW5zeW0nL2Auc3ltdGFiJyBnbyB0byBNU1lNQk9MUywgYC5kZWJ1Z19pbmZvJyBn b2VzIHRvIFNZTVRBQlMvUFNZTVRBQlMuCitAQCAtMTA0OSw2ICsxMzAxLDI0IEBAIHN0YXRpYyBz dHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2ZucyA9CisgICBOVUxMCQkJCS8qIG5leHQ6IHBvaW50ZXIg dG8gbmV4dCBzdHJ1Y3Qgc3ltX2ZucyAqLworIH07CisgCisrLyogVGhlIHNhbWUgYXMgZWxmX3N5 bV9mbnMsIGJ1dCBub3QgcmVnaXN0ZXJlZCBhbmQgdXNlcyB0aGUKKysgICBEV0FSRi1zcGVjaWZp YyBHTlUgaW5kZXggcmF0aGVyIHRoYW4gcHN5bXRhYi4gICovCisrc3RhdGljIHN0cnVjdCBzeW1f Zm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleCA9CisreworKyAgYmZkX3RhcmdldF9lbGZfZmxhdm91 ciwKKysgIGVsZl9uZXdfaW5pdCwJCQkvKiBzeW1fbmV3X2luaXQ6IGluaXQgYW55dGhpbmcgZ2Js IHRvIGVudGlyZSBzeW1hYiAqLworKyAgZWxmX3N5bWZpbGVfaW5pdCwJCS8qIHN5bV9pbml0OiBy ZWFkIGluaXRpYWwgaW5mbywgc2V0dXAgZm9yIHN5bV9yZWQoKSAqLworKyAgZWxmX3N5bWZpbGVf cmVhZCwJCS8qIHN5bV9yZWFkOiByZWFkIGEgc3ltYm9sIGZpbGUgaW50byBzeW10YWIgKi8KKysg IGVsZl9zeW1maWxlX2ZpbmlzaCwJCS8qIHN5bV9maW5pc2g6IGZpbmlzaGVkIHdpdGggZmlsZSwg Y2xlYW51cCAqLworKyAgZGVmYXVsdF9zeW1maWxlX29mZnNldHMsCS8qIHN5bV9vZmZzZXRzOiAg VHJhbnNsYXRlIGV4dC4gdG8gaW50LiByZWxvY2F0aW4gKi8KKysgIGVsZl9zeW1maWxlX3NlZ21l bnRzLAkJLyogc3ltX3NlZ21lbnRzOiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tCisrCQkJ CSAgIGEgZmlsZS4gICovCisrICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzeW1f cmVhZF9saW5ldGFibGUgKi8KKysgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogc3ltX3Jl bG9jYXRlOiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLworKyAgJmR3YXJmMl9nZGJfaW5k ZXhfZnVuY3Rpb25zLAorKyAgTlVMTAkJCQkvKiBuZXh0OiBwb2ludGVyIHRvIG5leHQgc3RydWN0 IHN5bV9mbnMgKi8KKyt9OworKworIHZvaWQKKyBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKQor IHsKK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYworaW5kZXggZmYxN2MzNC4u N2I5ZTg3MSAxMDA2NDQKKy0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9ldmFsLmMKK0BAIC00 NCw2ICs0NCw3IEBACisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisgI2luY2x1ZGUgInB5dGhvbi9w eXRob24uaCIKKyAjaW5jbHVkZSAid3JhcHBlci5oIgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIK KyAKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorIAorQEAgLTc4OCw2ICs3ODksNyBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAgIGludCBz YXZlX3BvczE7CisgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CisgICBjaGFyICpm dW5jdGlvbl9uYW1lID0gTlVMTDsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgCisg ICBwYyA9ICgqcG9zKSsrOworICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29kZTsKK0BAIC0xNzcy LDYgKzE3NzQsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBl Y3RfdHlwZSwKKyAJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5n ZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisgCQkJCSBub3RfbHZhbCk7CisgCSAgICB9CisrCSAgZWxz ZSBpZiAoVFlQRV9HTlVfSUZVTkMgKGZ0eXBlKSkKKysJICAgIHJldHVybiBhbGxvY2F0ZV92YWx1 ZSAoVFlQRV9UQVJHRVRfVFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKSk7CisgCSAgZWxz ZSBpZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKQorIAkgICAgcmV0dXJuIGFsbG9jYXRlX3Zh bHVlIChUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpOworIAkgIGVsc2UKK0BAIC0xNzk4LDYgKzE4 MDIsOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKKyAKKyAgICAgICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVh bGluZyB3aXRoLiAgKi8KKyAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUs IGV4cCwgcG9zLCBub3NpZGUpOworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVs bF9jbGVhbnVwLCAwKTsKKysgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRy ZXNzIChhcmcxKSk7CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFy ZzEpKTsKKyAgICAgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKKyAKK0BAIC0xODE4LDYgKzE4 MjQsNyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKKyAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgCSAgICB9CisgCX0gCisrICAg ICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisgCisgICAgICAgc3dpdGNoIChjb2RlKQorIAl7 CitAQCAtMjI1NCwxMyArMjI2MSwxOSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVj dCB0eXBlICpleHBlY3RfdHlwZSwKKyAgICAgICB7CisgCWludCBzdWJzY3JpcHRfYXJyYXlbTUFY X0ZPUlRSQU5fRElNU107CisgCWludCBhcnJheV9zaXplX2FycmF5W01BWF9GT1JUUkFOX0RJTVNd OworKwlpbnQgYnl0ZV9zdHJpZGVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CisgCWludCBuZGlt ZW5zaW9ucyA9IDEsIGk7CisgCXN0cnVjdCB0eXBlICp0bXBfdHlwZTsKKyAJaW50IG9mZnNldF9p dGVtOwkvKiBUaGUgYXJyYXkgb2Zmc2V0IHdoZXJlIHRoZSBpdGVtIGxpdmVzICovCisrCUNPUkVf QUREUiBvZmZzZXRfYnl0ZTsJLyogYnl0ZV9zdHJpZGUgYmFzZWQgb2Zmc2V0ICAqLworKwl1bnNp Z25lZCBlbGVtZW50X3NpemU7CisgCisgCWlmIChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCisg CSAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNjcmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhf Rk9SVFJBTl9ESU1TKTsKKyAKKysJb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFu dXAsIDApOworKwlvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7 CisrCisgCXRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworIAlu ZGltZW5zaW9ucyA9IGNhbGNfZjc3X2FycmF5X2RpbXMgKHR5cGUpOworIAorQEAgLTIyOTAsNiAr MjMwMyw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90 eXBlLAorIAkgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsKKyAJICAg IGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CisgCisrCSAgICBieXRlX3N0 cmlkZV9hcnJheVtuYXJncyAtIGkgLSAxXSA9CisrCQkJCQlUWVBFX0FSUkFZX0JZVEVfU1RSSURF X1ZBTFVFICh0bXBfdHlwZSk7CisrCisgCSAgICBhcnJheV9zaXplX2FycmF5W25hcmdzIC0gaSAt IDFdID0gdXBwZXIgLSBsb3dlciArIDE7CisgCisgCSAgICAvKiBaZXJvLW5vcm1hbGl6ZSBzdWJz Y3JpcHRzIHNvIHRoYXQgb2Zmc2V0dGluZyB3aWxsIHdvcmsuICovCitAQCAtMjMwOCwxMyArMjMy NCwyNSBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlw ZSwKKyAJICAgICAgdG1wX3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0 bXBfdHlwZSkpOworIAkgIH0KKyAKKysJLyogS2VwdCBmb3IgdGhlIGY3N19nZXRfdXBwZXJib3Vu ZCAvIGY3N19nZXRfbG93ZXJib3VuZCBjYWxscyBhYm92ZS4gICovCisrCWRvX2NsZWFudXBzIChv bGRfY2hhaW4pOworKworIAkvKiBOb3cgbGV0IHVzIGNhbGN1bGF0ZSB0aGUgb2Zmc2V0IGZvciB0 aGlzIGl0ZW0gKi8KKyAKKy0Jb2Zmc2V0X2l0ZW0gPSBzdWJzY3JpcHRfYXJyYXlbbmRpbWVuc2lv bnMgLSAxXTsKKysJb2Zmc2V0X2l0ZW0gPSAwOworKwlvZmZzZXRfYnl0ZSA9IDA7CisrCisrCWZv ciAoaSA9IG5kaW1lbnNpb25zIC0gMTsgaSA+PSAwOyAtLWkpCisrCSAgeworKwkgICAgb2Zmc2V0 X2l0ZW0gKj0gYXJyYXlfc2l6ZV9hcnJheVtpXTsKKysJICAgIGlmIChieXRlX3N0cmlkZV9hcnJh eVtpXSA9PSAwKQorKwkgICAgICBvZmZzZXRfaXRlbSArPSBzdWJzY3JpcHRfYXJyYXlbaV07Cisr CSAgICBlbHNlCisrCSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtpXSAqIGJ5 dGVfc3RyaWRlX2FycmF5W2ldOworKwkgIH0KKyAKKy0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAx OyBpID4gMDsgLS1pKQorLQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3NpemVfYXJyYXlb aSAtIDFdICogb2Zmc2V0X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworKwllbGVtZW50 X3NpemUgPSBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKysJb2Zm c2V0X2J5dGUgKz0gb2Zmc2V0X2l0ZW0gKiBlbGVtZW50X3NpemU7CisgCisgCS8qIExldCB1cyBu b3cgcGxheSBhIGRpcnR5IHRyaWNrOiB3ZSB3aWxsIHRha2UgYXJnMSAKKyAJICAgd2hpY2ggaXMg YSB2YWx1ZSBub2RlIHBvaW50aW5nIHRvIHRoZSB0b3Btb3N0IGxldmVsCitAQCAtMjMyNCw3ICsy MzUyLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5 cGUsCisgCSAgIHJldHVybnMgdGhlIGNvcnJlY3QgdHlwZSB2YWx1ZSAqLworIAorIAlkZXByZWNh dGVkX3NldF92YWx1ZV90eXBlIChhcmcxLCB0bXBfdHlwZSk7CistCXJldHVybiB2YWx1ZV9zdWJz Y3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9pdGVtLCAwKTsKKysJcmV0dXJuIHZhbHVlX3N1 YnNjcmlwdGVkX3J2YWx1ZSAoYXJnMSwgb2Zmc2V0X2J5dGUpOworICAgICAgIH0KKyAKKyAgICAg Y2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKK0BAIC0yNTU4LDE0ICsyNTg2LDIyIEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIGlmIChl eHBlY3RfdHlwZSAmJiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQor IAlleHBlY3RfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90 eXBlKSk7CisgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwg cG9zLCBub3NpZGUpOworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVh bnVwLCAwKTsKKysgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChh cmcxKSk7CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsK KyAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EUFRSCisgCSAg fHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVNQkVSUFRSKQorIAllcnJvciAoXygi QXR0ZW1wdCB0byBkZXJlZmVyZW5jZSBwb2ludGVyIHRvIG1lbWJlciB3aXRob3V0IGFuIG9iamVj dCIpKTsKKyAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKy0JZ290byBub3NpZGVyZXQ7 CisrCXsKKysJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKysJICBnb3RvIG5vc2lkZXJldDsK KysJfQorICAgICAgIGlmICh1bm9wX3VzZXJfZGVmaW5lZF9wIChvcCwgYXJnMSkpCistCXJldHVy biB2YWx1ZV94X3Vub3AgKGFyZzEsIG9wLCBub3NpZGUpOworKwl7CisrCSAgZG9fY2xlYW51cHMg KG9sZF9jaGFpbik7CisrCSAgcmV0dXJuIHZhbHVlX3hfdW5vcCAoYXJnMSwgb3AsIG5vc2lkZSk7 CisrCX0KKyAgICAgICBlbHNlIGlmIChub3NpZGUgPT0gRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMp CisgCXsKKyAJICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOworQEAg LTI1NzQsMTIgKzI2MTAsMTggQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlw ZSAqZXhwZWN0X3R5cGUsCisgCSAgLyogSW4gQyB5b3UgY2FuIGRlcmVmZXJlbmNlIGFuIGFycmF5 IHRvIGdldCB0aGUgMXN0IGVsdC4gICovCisgCSAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX0FSUkFZCisgCSAgICApCistCSAgICByZXR1cm4gdmFsdWVfemVybyAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgICAgIGx2YWxfbWVtb3J5KTsKKysJICAgIHsKKysJ ICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgICAgIHJldHVybiB2YWx1ZV96ZXJv IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKKysJCQkJIGx2YWxfbWVtb3J5KTsKKysJICAgIH0K KyAJICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9JTlQpCistCSAgICAv KiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8KKy0JICAgIHJldHVybiB2YWx1 ZV96ZXJvIChidWlsdGluX3R5cGUgKGV4cC0+Z2RiYXJjaCktPmJ1aWx0aW5faW50LAorLQkJCSAg ICAgICBsdmFsX21lbW9yeSk7CisrCSAgICB7CisrCSAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hh aW4pOworKwkgICAgICAvKiBHREIgYWxsb3dzIGRlcmVmZXJlbmNpbmcgYW4gaW50LiAgKi8KKysJ ICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVp bHRpbl9pbnQsCisrCQkJCSBsdmFsX21lbW9yeSk7CisrCSAgICB9CisgCSAgZWxzZQorIAkgICAg ZXJyb3IgKF8oIkF0dGVtcHQgdG8gdGFrZSBjb250ZW50cyBvZiBhIG5vbi1wb2ludGVyIHZhbHVl LiIpKTsKKyAJfQorQEAgLTI1ODksOSArMjYzMSwxNCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRh cmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAJIGRvLiAgImxvbmcgbG9uZyIgdmFyaWFi bGVzIGFyZSByYXJlIGVub3VnaCB0aGF0CisgCSBCVUlMVElOX1RZUEVfTE9OR0VTVCB3b3VsZCBz ZWVtIHRvIGJlIGEgbWlzdGFrZS4gICovCisgICAgICAgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0g VFlQRV9DT0RFX0lOVCkKKy0JcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1aWx0aW5fdHlwZSAoZXhw LT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCistCQkJICAgICAgKENPUkVfQUREUikgdmFsdWVfYXNf YWRkcmVzcyAoYXJnMSkpOworLSAgICAgIHJldHVybiB2YWx1ZV9pbmQgKGFyZzEpOworKwl7Cisr CSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1 aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisrCQkJCShDT1JFX0FERFIp IHZhbHVlX2FzX2FkZHJlc3MgKGFyZzEpKTsKKysJfQorKyAgICAgIGFyZzEgPSB2YWx1ZV9pbmQg KGFyZzEpOworKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIHJldHVybiBh cmcxOworIAorICAgICBjYXNlIFVOT1BfQUREUjoKKyAgICAgICAvKiBDKys6IGNoZWNrIGZvciBh bmQgaGFuZGxlIHBvaW50ZXIgdG8gbWVtYmVycy4gICovCitAQCAtMjkzMyw3ICsyOTgwLDcgQEAg ZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCisg eworICAgZW51bSBleHBfb3Bjb2RlIG9wOworICAgaW50IHBjOworLSAgc3RydWN0IHZhbHVlICp2 YWw7CisrICBzdHJ1Y3QgdmFsdWUgKnZhbCA9IE5VTEw7CisgICBzdHJ1Y3Qgc3ltYm9sICp2YXI7 CisgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKKyAKK0BAIC0yOTQ0LDEyICsyOTkxLDE3IEBAIGV2YWx1 YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorICAgICB7 CisgICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgorICAgICAgIHZhciA9IGV4cC0+ZWx0c1twYyArIDJd LnN5bWJvbDsKKysgICAgICAvKiBhZGRyZXNzX29mX3ZhcmlhYmxlIHdpbGwgY2FsbCBvYmplY3Rf YWRkcmVzc19zZXQgZm9yIGNoZWNrX3R5cGVkZWYuCisrCSBDYWxsIGl0IG9ubHkgaWYgcmVxdWly ZWQgYXMgaXQgY2FuIGVycm9yLW91dCBvbiBWQVIgaW4gcmVnaXN0ZXIuICAqLworKyAgICAgIGlm IChUWVBFX0RZTkFNSUMgKFNZTUJPTF9UWVBFICh2YXIpKSkKKysJdmFsID0gYWRkcmVzc19vZl92 YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7CisgICAgICAgdHlwZSA9IGNo ZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFICh2YXIpKTsKKyAgICAgICBpZiAoVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKyAJICAmJiBDQVNUX0lTX0NPTlZFUlNJT04gKGV4cC0+ bGFuZ3VhZ2VfZGVmbikpCisgCXsKKyAJICAoKnBvcykgKz0gNDsKKy0JICB2YWwgPSBhZGRyZXNz X29mX3ZhcmlhYmxlICh2YXIsIGV4cC0+ZWx0c1twYyArIDFdLmJsb2NrKTsKKysJICBpZiAoIXZh bCkKKysJICAgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsg MV0uYmxvY2spOworIAkgIHJldHVybiB2YWx1ZV9jYXN0IChsb29rdXBfcG9pbnRlcl90eXBlIChU WVBFX1RBUkdFVF9UWVBFICh0eXBlKSksCisgCQkJICAgICB2YWwpOworIAl9CitAQCAtMzAwMSw5 ICszMDUzLDEzIEBAIGV2YWx1YXRlX3N1YmV4cF9mb3Jfc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgKnBvcykKKyAKKyAgICAgY2FzZSBPUF9WQVJfVkFMVUU6CisgICAgICAgKCpw b3MpICs9IDQ7CistICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFNZTUJPTF9UWVBFIChleHAt PmVsdHNbcGMgKyAyXS5zeW1ib2wpKTsKKy0gICAgICByZXR1cm4KKy0JdmFsdWVfZnJvbV9sb25n ZXN0IChzaXplX3R5cGUsIChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOworKyAgICAgIC8q IFdlIGRvIG5vdCBuZWVkIHRvIGNhbGwgcmVhZF92YXJfdmFsdWUgYnV0IHRoZSBvYmplY3QgZXZh bHVhdGlvbiBtYXkKKysJIG5lZWQgdG8gaGF2ZSBleGVjdXRlZCBvYmplY3RfYWRkcmVzc19zZXQg d2hpY2ggbmVlZHMgdmFsaWQKKysJIFNZTUJPTF9WQUxVRV9BRERSRVNTIG9mIHRoZSBzeW1ib2wu ICBTdGlsbCBWQUxVRSByZXR1cm5lZCBieQorKwkgcmVhZF92YXJfdmFsdWUgd2UgbGVmdCBhcyBs YXp5LiAgKi8KKysgICAgICB0eXBlID0gdmFsdWVfdHlwZSAocmVhZF92YXJfdmFsdWUgKGV4cC0+ ZWx0c1twYyArIDJdLnN5bWJvbCwKKysJCQkJCWRlcHJlY2F0ZWRfc2FmZV9nZXRfc2VsZWN0ZWRf ZnJhbWUgKCkpKTsKKysgICAgICByZXR1cm4gdmFsdWVfZnJvbV9sb25nZXN0IChzaXplX3R5cGUs IChMT05HRVNUKSBUWVBFX0xFTkdUSCAodHlwZSkpOworIAorICAgICBkZWZhdWx0OgorICAgICAg IHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVMTF9UWVBFLCBleHAsIHBvcywgRVZBTF9BVk9JRF9T SURFX0VGRkVDVFMpOworZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBiL2dkYi9mLWxhbmcuaAor aW5kZXggZjViYjgyZC4uMjljZjViYSAxMDA2NDQKKy0tLSBhL2dkYi9mLWxhbmcuaAorKysrIGIv Z2RiL2YtbGFuZy5oCitAQCAtMjgsNiArMjgsMTAgQEAgZXh0ZXJuIHZvaWQgZl9lcnJvciAoY2hh ciAqKTsJLyogRGVmaW5lZCBpbiBmLWV4cC55ICovCisgZXh0ZXJuIHZvaWQgZl9wcmludF90eXBl IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBjaGFyICosIHN0cnVjdCB1aV9maWxlICosIGludCwKKyAJ CQkgIGludCk7CisgCisrZXh0ZXJuIGNvbnN0IGNoYXIgKmZfb2JqZWN0X2FkZHJlc3NfZGF0YV92 YWxpZF9wcmludF90b19zdHJlYW0KKysgIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSk7CisrZXh0ZXJuIHZvaWQgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29y X2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CisrCisgZXh0ZXJuIGludCBmX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKiwgY29uc3QgZ2RiX2J5dGUgKiwgaW50LCBDT1JFX0FERFIsCisgCQkJc3Ry dWN0IHVpX2ZpbGUgKiwgaW50LAorIAkJCWNvbnN0IHN0cnVjdCB2YWx1ZSAqLAorZGlmZiAtLWdp dCBhL2dkYi9mLXR5cGVwcmludC5jIGIvZ2RiL2YtdHlwZXByaW50LmMKK2luZGV4IGQzNWEyNTUu LmRlYzgxZDUgMTAwNjQ0CistLS0gYS9nZGIvZi10eXBlcHJpbnQuYworKysrIGIvZ2RiL2YtdHlw ZXByaW50LmMKK0BAIC0zMiw3ICszMiw3IEBACisgI2luY2x1ZGUgImdkYmNvcmUuaCIKKyAjaW5j bHVkZSAidGFyZ2V0LmgiCisgI2luY2x1ZGUgImYtbGFuZy5oIgorLQorKyNpbmNsdWRlICJkd2Fy ZjJsb2MuaCIKKyAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgorICNpbmNsdWRlIDxlcnJuby5oPgor IAorQEAgLTQ5LDYgKzQ5LDM0IEBAIHZvaWQgZl90eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChz dHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIHZvaWQgZl90eXBlX3ByaW50X2Jhc2Ug KHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KTsKKyAMCisgCisrY29u c3QgY2hhciAqCisrZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAo c3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pCisr eworKyAgY29uc3QgY2hhciAqbXNnOworKworKyAgbXNnID0gb2JqZWN0X2FkZHJlc3NfZGF0YV9u b3RfdmFsaWQgKHR5cGUpOworKyAgaWYgKG1zZyAhPSBOVUxMKQorKyAgICB7CisrICAgICAgLyog QXNzdW1pbmcgdGhlIGNvbnRlbnQgcHJpbnRlZCB0byBTVFJFQU0gc2hvdWxkIG5vdCBiZSBsb2Nh bGl6ZWQuICAqLworKyAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIjwlcz4iLCBtc2cp OworKyAgICB9CisrCisrICByZXR1cm4gbXNnOworK30KKysKKyt2b2lkCisrZl9vYmplY3RfYWRk cmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyt7CisrICBjb25z dCBjaGFyICptc2c7CisrCisrICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAo dHlwZSk7CisrICBpZiAobXNnICE9IE5VTEwpCisrICAgIHsKKysgICAgICBlcnJvciAoXygiQ2Fu bm90IGFjY2VzcyBpdCBiZWNhdXNlIHRoZSAlcy4iKSwgXyhtc2cpKTsKKysgICAgfQorK30KKysK KyAvKiBMRVZFTCBpcyB0aGUgZGVwdGggdG8gaW5kZW50IGxpbmVzIGJ5LiAgKi8KKyAKKyB2b2lk CitAQCAtNTgsNiArODYsOSBAQCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBjaGFyICp2YXJzdHJpbmcsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCisgICBlbnVtIHR5cGVf Y29kZSBjb2RlOworICAgaW50IGRlbWFuZ2xlZF9hcmdzOworIAorKyAgaWYgKGZfb2JqZWN0X2Fk ZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0gKHR5cGUsIHN0cmVhbSkgIT0gTlVMTCkK KysgICAgcmV0dXJuOworKworICAgZl90eXBlX3ByaW50X2Jhc2UgKHR5cGUsIHN0cmVhbSwgc2hv dywgbGV2ZWwpOworICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CisgICBpZiAoKHZhcnN0cmlu ZyAhPSBOVUxMICYmICp2YXJzdHJpbmcgIT0gJ1wwJykKK0BAIC0xNjUsNiArMTk2LDkgQEAgZl90 eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSwKKyAKKyAgIFFVSVQ7CisgCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBU WVBFX0NPREVfVFlQRURFRikKKysgICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CisrCisgICBzd2l0 Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisgICAgIHsKKyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6 CitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQuYyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4 IDg1ZjY5OGQuLjJmNzJiOTcgMTAwNjQ0CistLS0gYS9nZGIvZi12YWxwcmludC5jCisrKysgYi9n ZGIvZi12YWxwcmludC5jCitAQCAtNTQsMTUgKzU0LDE3IEBAIGludCBmNzdfYXJyYXlfb2Zmc2V0 X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07CisgLyogVGhlIGZvbGxvd2luZyBtYWNybyBn aXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUgbnRoIGRpbWVuc2lvbiwgV2hlcmUgCisgICAgbiBpcyAx IGJhc2VkLiAqLworIAorLSNkZWZpbmUgRjc3X0RJTV9TSVpFKG4pIChmNzdfYXJyYXlfb2Zmc2V0 X3RibFtuXVsxXSkKKysjZGVmaW5lIEY3N19ESU1fQ09VTlQobikgKGY3N19hcnJheV9vZmZzZXRf dGJsW25dWzFdKQorIAorLS8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMgdGhlIG9mZnNldCBmb3Ig cm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworKy8qIFRoZSBmb2xsb3dpbmcgZ2l2ZXMgdXMg dGhlIGVsZW1lbnQgc2l6ZSBmb3Igcm93IG4gd2hlcmUgbiBpcyAxLWJhc2VkLiAqLworIAorLSNk ZWZpbmUgRjc3X0RJTV9PRkZTRVQobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzBdKQorKyNk ZWZpbmUgRjc3X0RJTV9CWVRFX1NUUklERShuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0p CisgCisgaW50CisgZjc3X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyB7Cisr ICBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHR5cGUpOworKworICAgaWYg KFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfSVNfVU5ERUZJTkVEICh0eXBlKSkKKyAgICAgZXJyb3Ig KF8oIkxvd2VyIGJvdW5kIG1heSBub3QgYmUgJyonIGluIEY3NyIpKTsKKyAKK0BAIC03MiwxNCAr NzQsMTcgQEAgZjc3X2dldF9sb3dlcmJvdW5kIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyBpbnQKKyBm NzdfZ2V0X3VwcGVyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQorIHsKKysgIGZfb2JqZWN0X2Fk ZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAodHlwZSk7CisrCisgICBpZiAoVFlQRV9BUlJBWV9V UFBFUl9CT1VORF9JU19VTkRFRklORUQgKHR5cGUpKQorICAgICB7CistICAgICAgLyogV2UgaGF2 ZSBhbiBhc3N1bWVkIHNpemUgYXJyYXkgb24gb3VyIGhhbmRzLiAgQXNzdW1lIHRoYXQKKy0JIHVw cGVyX2JvdW5kID09IGxvd2VyX2JvdW5kIHNvIHRoYXQgd2Ugc2hvdyBhdCBsZWFzdCAxIGVsZW1l bnQuCistCSBJZiB0aGUgdXNlciB3YW50cyB0byBzZWUgbW9yZSBlbGVtZW50cywgbGV0IGhpbSBt YW51YWxseSBhc2sgZm9yICdlbQorLQkgYW5kIHdlJ2xsIHN1YnNjcmlwdCB0aGUgYXJyYXkgYW5k IHNob3cgaGltLiAgKi8KKysgICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBv biBvdXIgaGFuZHMuICBBcyB0eXBlX2xlbmd0aF9nZXQKKysJIGFscmVhZHkgYXNzdW1lcyBhIGxl bmd0aCB6ZXJvIG9mIGFycmF5cyB3aXRoIHVuZGVyZmluZWQgYm91bmRzIFZBTEFERFIKKysJIHBh c3NlZCB0byB0aGUgRm9ydHJhbiBmdW5jdGlvbnMgZG9lcyBub3QgY29udGFpbmVkIHRoZSByZWFs IGluZmVyaW9yCisrCSBtZW1vcnkgY29udGVudC4gIFVzZXIgc2hvdWxkIHJlcXVlc3QgcHJpbnRp bmcgb2Ygc3BlY2lmaWMgYXJyYXkKKysJIGVsZW1lbnRzIGluc3RlYWQuICAqLworIAorLSAgICAg IHJldHVybiBmNzdfZ2V0X2xvd2VyYm91bmQgKHR5cGUpOworKyAgICAgIHJldHVybiBmNzdfZ2V0 X2xvd2VyYm91bmQgKHR5cGUpIC0gMTsKKyAgICAgfQorIAorICAgcmV0dXJuIFRZUEVfQVJSQVlf VVBQRVJfQk9VTkRfVkFMVUUgKHR5cGUpOworQEAgLTEzNCwyNCArMTM5LDI5IEBAIGY3N19jcmVh dGVfYXJyYXlwcmludF9vZmZzZXRfdGJsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSkKKyAgICAgICB1cHBlciA9IGY3N19nZXRfdXBwZXJib3VuZCAodG1wX3R5cGUp OworICAgICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CisgCistICAg ICAgRjc3X0RJTV9TSVpFIChuZGltZW4pID0gdXBwZXIgLSBsb3dlciArIDE7CisrICAgICAgRjc3 X0RJTV9DT1VOVCAobmRpbWVuKSA9IHVwcGVyIC0gbG93ZXIgKyAxOworKworKyAgICAgIEY3N19E SU1fQllURV9TVFJJREUgKG5kaW1lbikgPQorKyAgICAgICAgVFlQRV9BUlJBWV9CWVRFX1NUUklE RV9WQUxVRSAodG1wX3R5cGUpOworIAorICAgICAgIHRtcF90eXBlID0gVFlQRV9UQVJHRVRfVFlQ RSAodG1wX3R5cGUpOworICAgICAgIG5kaW1lbisrOworICAgICB9CisgCistICAvKiBOb3cgd2Ug bXVsdGlwbHkgZWx0bGVuIGJ5IGFsbCB0aGUgb2Zmc2V0cywgc28gdGhhdCBsYXRlciB3ZSAKKysg IC8qIE5vdyB3ZSBtdWx0aXBseSBlbHRsZW4gYnkgYWxsIHRoZSBCWVRFX1NUUklERXMsIHNvIHRo YXQgbGF0ZXIgd2UKKyAgICAgIGNhbiBwcmludCBvdXQgYXJyYXkgZWxlbWVudHMgY29ycmVjdGx5 LiAgVXAgdGlsbCBub3cgd2UgCistICAgICBrbm93IGFuIG9mZnNldCB0byBhcHBseSB0byBnZXQg dGhlIGl0ZW0gYnV0IHdlIGFsc28gCisrICAgICBrbm93IGFuIGVsdGxlbiB0byBhcHBseSB0byBn ZXQgdGhlIGl0ZW0gYnV0IHdlIGFsc28KKyAgICAgIGhhdmUgdG8ga25vdyBob3cgbXVjaCB0byBh ZGQgdG8gZ2V0IHRvIHRoZSBuZXh0IGl0ZW0gKi8KKyAKKyAgIG5kaW1lbi0tOworICAgZWx0bGVu ID0gVFlQRV9MRU5HVEggKHRtcF90eXBlKTsKKy0gIEY3N19ESU1fT0ZGU0VUIChuZGltZW4pID0g ZWx0bGVuOworKyAgaWYgKEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPT0gMCkKKysgICAg Rjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9IGVsdGxlbjsKKyAgIHdoaWxlICgtLW5kaW1l biA+IDApCisgICAgIHsKKy0gICAgICBlbHRsZW4gKj0gRjc3X0RJTV9TSVpFIChuZGltZW4gKyAx KTsKKy0gICAgICBGNzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxlbjsKKysgICAgICBlbHRs ZW4gKj0gRjc3X0RJTV9DT1VOVCAobmRpbWVuICsgMSk7CisrICAgICAgaWYgKEY3N19ESU1fQllU RV9TVFJJREUgKG5kaW1lbikgPT0gMCkKKysJRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9 IGVsdGxlbjsKKyAgICAgfQorIH0KKyAKK0BAIC0xNzIsMzQgKzE4MiwzNCBAQCBmNzdfcHJpbnRf YXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAK KyAgIGlmIChuc3MgIT0gbmRpbWVuc2lvbnMpCisgICAgIHsKKy0gICAgICBmb3IgKGkgPSAwOyAo aSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4KTsg aSsrKQorKyAgICAgIGZvciAoaSA9IDA7IChpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSAmJiAoKmVs dHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4KTsgaSsrKQorIAl7CisgCSAgZnByaW50Zl9maWx0ZXJl ZCAoc3RyZWFtLCAiKCAiKTsKKyAJICBmNzdfcHJpbnRfYXJyYXlfMSAobnNzICsgMSwgbmRpbWVu c2lvbnMsIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorLQkJCSAgICAgdmFsYWRkciArIGkgKiBG NzdfRElNX09GRlNFVCAobnNzKSwKKy0JCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9PRkZT RVQgKG5zcyksCisrCQkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5z cyksCisrCQkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5zcyksCisg CQkJICAgICBzdHJlYW0sIHJlY3Vyc2UsIHZhbCwgb3B0aW9ucywgZWx0cyk7CisgCSAgZnByaW50 Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSAiKTsKKyAJfQorLSAgICAgIGlmICgqZWx0cyA+PSBvcHRp b25zLT5wcmludF9tYXggJiYgaSA8IEY3N19ESU1fU0laRSAobnNzKSkgCisrICAgICAgaWYgKCpl bHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9DT1VOVCAobnNzKSkKKyAJ ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CisgICAgIH0KKyAgIGVsc2UKKyAgICAg eworLSAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX1NJWkUgKG5zcykgJiYgKCplbHRzKSA8 IG9wdGlvbnMtPnByaW50X21heDsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgRjc3X0RJTV9DT1VO VCAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4OworIAkgICBpKyssICgqZWx0 cykrKykKKyAJeworIAkgIHZhbF9wcmludCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkg ICAgIHZhbGFkZHIgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwKKysJCSAgICAg dmFsYWRkciArIGkgKiBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW5zaW9ucyksCisgCQkgICAg IDAsCistCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9PRkZTRVQgKG5kaW1lbnNpb25zKSwK KysJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW5zaW9ucyks CisgCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCBjdXJyZW50X2xhbmd1YWdl KTsKKyAKKy0JICBpZiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpCisrCSAgaWYgKGkg IT0gKEY3N19ESU1fQ09VTlQgKG5zcykgLSAxKSkKKyAJICAgIGZwcmludGZfZmlsdGVyZWQgKHN0 cmVhbSwgIiwgIik7CisgCisgCSAgaWYgKCgqZWx0cyA9PSBvcHRpb25zLT5wcmludF9tYXggLSAx KQorLQkgICAgICAmJiAoaSAhPSAoRjc3X0RJTV9TSVpFIChuc3MpIC0gMSkpKQorKwkgICAgICAm JiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNzKSAtIDEpKSkKKyAJICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIi4uLiIpOworIAl9CisgICAgIH0KK0BAIC0yNTYsNiArMjY2LDkgQEAgZl92 YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50 IGVtYmVkZGVkX29mZnNldCwKKyAgIENPUkVfQUREUiBhZGRyOworICAgaW50IGluZGV4OworIAor KyAgaWYgKGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9wcmludF90b19zdHJlYW0gKHR5cGUs IHN0cmVhbSkgIT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CisrCisgICBDSEVDS19UWVBFREVGICh0 eXBlKTsKKyAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKKyAgICAgeworZGlmZiAtLWdpdCBh L2dkYi9maW5kY21kLmMgYi9nZGIvZmluZGNtZC5jCitpbmRleCBhYzYzYTllLi5lOWJhNDVjIDEw MDY0NAorLS0tIGEvZ2RiL2ZpbmRjbWQuYworKysrIGIvZ2RiL2ZpbmRjbWQuYworQEAgLTQ1LDYg KzQ1LDQxIEBAIHB1dF9iaXRzIChiZmRfdWludDY0X3QgZGF0YSwgY2hhciAqYnVmLCBpbnQgYml0 cywgYmZkX2Jvb2xlYW4gYmlnX3ApCisgICAgIH0KKyB9CisgCisrLyogQWxsb2NhdGVzIGEgYnVm ZmVyIGluICpQQVRURVJOX0JVRiwgd2l0aCBhIGhhcmQtY29kZWQgaW5pdGlhbCBzaXplIHdoaWNo CisrICAgd2lsbCBiZSByZXR1cm5lZCBpbiAqUEFUVEVSTl9CVUZfU0laRS4gKlBBVFRFUk5fQlVG X0VORCBwb2ludHMgdG8gdGhlIHNhbWUKKysgICBwbGFjZSBhcyAqUEFUVEVSTl9CVUYsIGluZGlj YXRpbmcgdGhhdCB0aGUgYnVmZmVyIGlzIGluaXRpYWxseSBlbXB0eS4gICovCisrCisrdm9pZAor K2FsbG9jYXRlX3BhdHRlcm5fYnVmZmVyIChjaGFyICoqcGF0dGVybl9idWYsIGNoYXIgKipwYXR0 ZXJuX2J1Zl9lbmQsCisrCQkJIFVMT05HRVNUICpwYXR0ZXJuX2J1Zl9zaXplKQorK3sKKysjZGVm aW5lIElOSVRJQUxfUEFUVEVSTl9CVUZfU0laRSAxMDAKKysgICpwYXR0ZXJuX2J1Zl9zaXplID0g SU5JVElBTF9QQVRURVJOX0JVRl9TSVpFOworKyAgKnBhdHRlcm5fYnVmID0geG1hbGxvYyAoKnBh dHRlcm5fYnVmX3NpemUpOworKyAgKnBhdHRlcm5fYnVmX2VuZCA9ICpwYXR0ZXJuX2J1ZjsKKyt9 CisrCisrLyogR3Jvd3MgKlBBVFRFUk5fQlVGIGJ5IGEgZmFjdG9yIG9mIHR3byBpZiBpdCdzIG5v dCBsYXJnZSBlbm91Z2ggdG8gaG9sZAorKyAgIFZBTF9CWVRFUyBtb3JlIGJ5dGVzICBvciBhIDY0 LWJpdCB2YWx1ZSwgd2hpY2hldmVyIGlzIGxhcmdlci4KKysgICAqUEFUVEVSTl9CVUZfRU5EIGlz IHVwZGF0ZWQgYXMgbmVjZXNzYXJ5LiAgKi8KKysKKyt2b2lkCisraW5jcmVhc2VfcGF0dGVybl9i dWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZiwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKKysJCQkg VUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUsIGludCB2YWxfYnl0ZXMpCisreworKyAgICAvKiBL ZWVwIGl0IHNpbXBsZSBhbmQgYXNzdW1lIHNpemUgPT0gJ2cnIHdoZW4gd2F0Y2hpbmcgZm9yIHdo ZW4gd2UKKysgICAgICAgbmVlZCB0byBncm93IHRoZSBwYXR0ZXJuIGJ1Zi4gICovCisrICAgIGlm ICgoKnBhdHRlcm5fYnVmX2VuZCAtICpwYXR0ZXJuX2J1ZiArIG1heCAodmFsX2J5dGVzLCBzaXpl b2YgKGludDY0X3QpKSkKKysJPiAqcGF0dGVybl9idWZfc2l6ZSkKKysgICAgICB7CisrCXNpemVf dCBjdXJyZW50X29mZnNldCA9ICpwYXR0ZXJuX2J1Zl9lbmQgLSAqcGF0dGVybl9idWY7CisrCisr CSpwYXR0ZXJuX2J1Zl9zaXplICo9IDI7CisrCSpwYXR0ZXJuX2J1ZiA9IHhyZWFsbG9jICgqcGF0 dGVybl9idWYsICpwYXR0ZXJuX2J1Zl9zaXplKTsKKysJKnBhdHRlcm5fYnVmX2VuZCA9ICpwYXR0 ZXJuX2J1ZiArIGN1cnJlbnRfb2Zmc2V0OworKyAgICAgIH0KKyt9CisrCisgLyogU3Vicm91dGlu ZSBvZiBmaW5kX2NvbW1hbmQgdG8gc2ltcGxpZnkgaXQuCisgICAgUGFyc2UgdGhlIGFyZ3VtZW50 cyBvZiB0aGUgImZpbmQiIGNvbW1hbmQuICAqLworIAorQEAgLTYxLDggKzk2LDcgQEAgcGFyc2Vf ZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAqbWF4X2NvdW50cCwKKyAgIGNoYXIgKnBh dHRlcm5fYnVmOworICAgLyogQ3VycmVudCBzaXplIG9mIHNlYXJjaCBwYXR0ZXJuIGJ1ZmZlci4K KyAgICAgIFdlIHJlYWxsb2Mgc3BhY2UgYXMgbmVlZGVkLiAgKi8KKy0jZGVmaW5lIElOSVRJQUxf UEFUVEVSTl9CVUZfU0laRSAxMDAKKy0gIFVMT05HRVNUIHBhdHRlcm5fYnVmX3NpemUgPSBJTklU SUFMX1BBVFRFUk5fQlVGX1NJWkU7CisrICBVTE9OR0VTVCBwYXR0ZXJuX2J1Zl9zaXplOworICAg LyogUG9pbnRlciB0byBvbmUgcGFzdCB0aGUgbGFzdCBpbi11c2UgcGFydCBvZiBwYXR0ZXJuX2J1 Zi4gICovCisgICBjaGFyICpwYXR0ZXJuX2J1Zl9lbmQ7CisgICBVTE9OR0VTVCBwYXR0ZXJuX2xl bjsKK0BAIC03NSw4ICsxMDksNyBAQCBwYXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3MsIFVMT05H RVNUICptYXhfY291bnRwLAorICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgZXJyb3IgKF8oIk1p c3Npbmcgc2VhcmNoIHBhcmFtZXRlcnMuIikpOworIAorLSAgcGF0dGVybl9idWYgPSB4bWFsbG9j IChwYXR0ZXJuX2J1Zl9zaXplKTsKKy0gIHBhdHRlcm5fYnVmX2VuZCA9IHBhdHRlcm5fYnVmOwor KyAgYWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKCZwYXR0ZXJuX2J1ZiwgJnBhdHRlcm5fYnVmX2Vu ZCwgJnBhdHRlcm5fYnVmX3NpemUpOworICAgb2xkX2NsZWFudXBzID0gbWFrZV9jbGVhbnVwIChm cmVlX2N1cnJlbnRfY29udGVudHMsICZwYXR0ZXJuX2J1Zik7CisgCisgICAvKiBHZXQgc2VhcmNo IGdyYW51bGFyaXR5IGFuZC9vciBtYXggY291bnQgaWYgc3BlY2lmaWVkLgorQEAgLTE3NSwxNyAr MjA4LDkgQEAgcGFyc2VfZmluZF9hcmdzIChjaGFyICphcmdzLCBVTE9OR0VTVCAqbWF4X2NvdW50 cCwKKyAgICAgICB2ID0gcGFyc2VfdG9fY29tbWFfYW5kX2V2YWwgKCZzKTsKKyAgICAgICB2YWxf Ynl0ZXMgPSBUWVBFX0xFTkdUSCAodmFsdWVfdHlwZSAodikpOworIAorLSAgICAgIC8qIEtlZXAg aXQgc2ltcGxlIGFuZCBhc3N1bWUgc2l6ZSA9PSAnZycgd2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3 ZQorLQkgbmVlZCB0byBncm93IHRoZSBwYXR0ZXJuIGJ1Zi4gICovCistICAgICAgaWYgKChwYXR0 ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1ZiArIG1heCAodmFsX2J5dGVzLCBzaXplb2YgKGludDY0 X3QpKSkKKy0JICA+IHBhdHRlcm5fYnVmX3NpemUpCistCXsKKy0JICBzaXplX3QgY3VycmVudF9v ZmZzZXQgPSBwYXR0ZXJuX2J1Zl9lbmQgLSBwYXR0ZXJuX2J1ZjsKKysgICAgICBpbmNyZWFzZV9w YXR0ZXJuX2J1ZmZlciAoJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9idWZfZW5kLAorKwkJCSAgICAg ICAmcGF0dGVybl9idWZfc2l6ZSwgdmFsX2J5dGVzKTsKKyAKKy0JICBwYXR0ZXJuX2J1Zl9zaXpl ICo9IDI7CistCSAgcGF0dGVybl9idWYgPSB4cmVhbGxvYyAocGF0dGVybl9idWYsIHBhdHRlcm5f YnVmX3NpemUpOworLQkgIHBhdHRlcm5fYnVmX2VuZCA9IHBhdHRlcm5fYnVmICsgY3VycmVudF9v ZmZzZXQ7CistCX0KKyAKKyAgICAgICBpZiAoc2l6ZSAhPSAnXDAnKQorIAl7CitAQCAtMjQwLDYg KzI2NSw0NSBAQCBwYXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291 bnRwLAorICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NsZWFudXBzKTsKKyB9CisgCisrLyogRHJp dmVzIHRhcmdldF9zZWFyY2hfbWVtb3J5IHRvIHN3ZWVwIHRocm91Z2ggdGhlIHNwZWNpZmllZCBz ZWFyY2ggc3BhY2UsCisrICAgcG9zc2libHkgaW4gc2V2ZXJhbCBpdGVyYXRpb25zICh3aXRoIG9u ZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gZm9yIGVhY2gKKysgICBpdGVyYXRpb24pLiAgKlNUQVJU X0FERFIgaXMgdGhlIGFkZHJlc3Mgd2hlcmUgdGhlIHNlYXJjaCBzdGFydHMsIGFuZCBpcworKyAg IHVwZGF0ZWQgdG8gdGhlIG5leHQgc3RhcnRpbmcgYWRkcmVzcyB0byBjb250aW51ZSB0aGUgc2Vh cmNoLgorKyAgICpTRUFSQ0hfU1BBQ0VfTEVOIGlzIHRoZSBhbW91bnQgb2YgYnl0ZXMgd2hpY2gg d2lsbCBiZSBzZWFyY2hlZCwgYW5kIGlzCisrICAgdXBkYXRlZCBmb3IgdGhlIG5leHQgaXRlcmF0 aW9uLiBQQVRURVJOX0JVRiBob2xkcyB0aGUgcGF0dGVybiB0byBiZSBzZWFyY2hlZAorKyAgIGZv ciwgUEFUVEVSTl9MRU4gaXMgdGhlIHNpemUgb2YgdGhlIHBhdHRlcm4gaW4gYnl0ZXMuICBJZiBh IG1hdGNoIGlzIGZvdW5kLAorKyAgIGl0J3MgYWRkcmVzcyBpcyBwdXQgaW4gKkZPVU5EX0FERFIu CisrCisrICAgUmV0dXJucyAxIGlmIGZvdW5kLCAwIGlmIG5vdCBmb3VuZCwgYW5kIC0xIGlmIHRo ZXJlIHdhcyBhbiBlcnJvciByZXF1aXJpbmcKKysgICBoYWx0aW5nIG9mIHRoZSBzZWFyY2ggKGUu Zy4gbWVtb3J5IHJlYWQgZXJyb3IpLiAgKi8KKysKKytpbnQKKytzZWFyY2hfbWVtb3J5IChDT1JF X0FERFIgKnN0YXJ0X2FkZHIsIFVMT05HRVNUICpzZWFyY2hfc3BhY2VfbGVuLAorKwkgICAgICAg Y29uc3QgY2hhciAqcGF0dGVybl9idWYsIFVMT05HRVNUIHBhdHRlcm5fbGVuLAorKwkgICAgICAg Q09SRV9BRERSICpmb3VuZF9hZGRyKQorK3sKKysgIC8qIE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRo aXMgaXRlcmF0aW9uIHRvIHRoZSBuZXh0IGl0ZXJhdGlvbi4gICovCisrICBVTE9OR0VTVCBuZXh0 X2l0ZXJfaW5jcjsKKysgIGludCBmb3VuZDsKKysgICAgCisrICBmb3VuZCA9IHRhcmdldF9zZWFy Y2hfbWVtb3J5ICgqc3RhcnRfYWRkciwgKnNlYXJjaF9zcGFjZV9sZW4sCisrCQkJCXBhdHRlcm5f YnVmLCBwYXR0ZXJuX2xlbiwgZm91bmRfYWRkcik7CisrICBpZiAoZm91bmQgPD0gMCkKKysgICAg cmV0dXJuIGZvdW5kOworKworKyAgLyogQmVnaW4gbmV4dCBpdGVyYXRpb24gYXQgb25lIGJ5dGUg cGFzdCB0aGlzIG1hdGNoLiAgKi8KKysgIG5leHRfaXRlcl9pbmNyID0gKCpmb3VuZF9hZGRyIC0g KnN0YXJ0X2FkZHIpICsgMTsKKysKKysgIC8qIEZvciByb2J1c3RuZXNzLCB3ZSBkb24ndCBsZXQg c2VhcmNoX3NwYWNlX2xlbiBnbyAtdmUgaGVyZS4gICovCisrICBpZiAoKnNlYXJjaF9zcGFjZV9s ZW4gPj0gbmV4dF9pdGVyX2luY3IpCisrICAgICpzZWFyY2hfc3BhY2VfbGVuIC09IG5leHRfaXRl cl9pbmNyOworKyAgZWxzZQorKyAgICAqc2VhcmNoX3NwYWNlX2xlbiA9IDA7CisrICAqc3RhcnRf YWRkciArPSBuZXh0X2l0ZXJfaW5jcjsKKysKKysgIHJldHVybiBmb3VuZDsKKyt9CisrCisgc3Rh dGljIHZvaWQKKyBmaW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKKyB7CitA QCAtMjcwLDEyICszMzQsMTEgQEAgZmluZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90 dHkpCisgICB3aGlsZSAoc2VhcmNoX3NwYWNlX2xlbiA+PSBwYXR0ZXJuX2xlbgorIAkgJiYgZm91 bmRfY291bnQgPCBtYXhfY291bnQpCisgICAgIHsKKy0gICAgICAvKiBPZmZzZXQgZnJvbSBzdGFy dCBvZiB0aGlzIGl0ZXJhdGlvbiB0byB0aGUgbmV4dCBpdGVyYXRpb24uICAqLworLSAgICAgIFVM T05HRVNUIG5leHRfaXRlcl9pbmNyOworICAgICAgIENPUkVfQUREUiBmb3VuZF9hZGRyOworLSAg ICAgIGludCBmb3VuZCA9IHRhcmdldF9zZWFyY2hfbWVtb3J5IChzdGFydF9hZGRyLCBzZWFyY2hf c3BhY2VfbGVuLAorLQkJCQkJcGF0dGVybl9idWYsIHBhdHRlcm5fbGVuLCAmZm91bmRfYWRkcik7 CisrICAgICAgaW50IGZvdW5kOworIAorKyAgICAgIGZvdW5kID0gc2VhcmNoX21lbW9yeSAoJnN0 YXJ0X2FkZHIsICZzZWFyY2hfc3BhY2VfbGVuLCBwYXR0ZXJuX2J1ZiwKKysJCQkgICAgIHBhdHRl cm5fbGVuLCAmZm91bmRfYWRkcik7CisgICAgICAgaWYgKGZvdW5kIDw9IDApCisgCWJyZWFrOwor IAorQEAgLTI4MywxNiArMzQ2LDYgQEAgZmluZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJv bV90dHkpCisgICAgICAgcHJpbnRmX2ZpbHRlcmVkICgiXG4iKTsKKyAgICAgICArK2ZvdW5kX2Nv dW50OworICAgICAgIGxhc3RfZm91bmRfYWRkciA9IGZvdW5kX2FkZHI7CistCistICAgICAgLyog QmVnaW4gbmV4dCBpdGVyYXRpb24gYXQgb25lIGJ5dGUgcGFzdCB0aGlzIG1hdGNoLiAgKi8KKy0g ICAgICBuZXh0X2l0ZXJfaW5jciA9IChmb3VuZF9hZGRyIC0gc3RhcnRfYWRkcikgKyAxOworLQor LSAgICAgIC8qIEZvciByb2J1c3RuZXNzLCB3ZSBkb24ndCBsZXQgc2VhcmNoX3NwYWNlX2xlbiBn byAtdmUgaGVyZS4gICovCistICAgICAgaWYgKHNlYXJjaF9zcGFjZV9sZW4gPj0gbmV4dF9pdGVy X2luY3IpCistCXNlYXJjaF9zcGFjZV9sZW4gLT0gbmV4dF9pdGVyX2luY3I7CistICAgICAgZWxz ZQorLQlzZWFyY2hfc3BhY2VfbGVuID0gMDsKKy0gICAgICBzdGFydF9hZGRyICs9IG5leHRfaXRl cl9pbmNyOworICAgICB9CisgCisgICAvKiBSZWNvcmQgYW5kIHByaW50IHRoZSByZXN1bHRzLiAg Ki8KK2RpZmYgLS1naXQgYS9nZGIvZmluZHZhci5jIGIvZ2RiL2ZpbmR2YXIuYworaW5kZXggZTBj YTEyYy4uZGU2MzExYSAxMDA2NDQKKy0tLSBhL2dkYi9maW5kdmFyLmMKKysrKyBiL2dkYi9maW5k dmFyLmMKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgInVzZXItcmVncy5oIgogICNpbmNs dWRlICJibG9jay5oIgogICNpbmNsdWRlICJvYmpmaWxlcy5oIgogKyNpbmNsdWRlICJkd2FyZjJs b2MuaCIKICAKLSAvKiBCYXNpYyBieXRlLXN3YXBwaW5nIHJvdXRpbmVzLiAgQWxsICdleHRyYWN0 JyBmdW5jdGlvbnMgcmV0dXJuIGEKLSAgICBob3N0LWZvcm1hdCBpbnRlZ2VyIGZyb20gYSB0YXJn ZXQtZm9ybWF0IGludGVnZXIgYXQgQUREUiB3aGljaCBpcwotQEAgLTQwMSwyNyArNDAyLDE2IEBA IHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0gLyogR2l2ZW4g YSBzdHJ1Y3Qgc3ltYm9sIGZvciBhIHZhcmlhYmxlLAotICAgIGFuZCBhIHN0YWNrIGZyYW1lIGlk LCByZWFkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKLSAgICBhbmQgcmV0dXJuIGEgKHBvaW50 ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKLS0gICBJZiB0aGUg dmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuICAqLwotKyAg IElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHplcm8gcG9pbnRlci4K LSsgICBXZSBoYXZlIHRvIGZpcnN0IGZpbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZhcmlhYmxlIGJl Zm9yZSBhbGxvY2F0aW5nIHN0cnVjdAotKyAgIHZhbHVlIHRvIHJldHVybiBhcyBpdHMgc2l6ZSBt YXkgZGVwZW5kIG9uIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MgcG9zc2libHkKLSsgICB1c2Vk IGJ5IGl0cyB0eXBlLiAgKi8KKyAvKiBCYXNpYyBieXRlLXN3YXBwaW5nIHJvdXRpbmVzLiAgQWxs ICdleHRyYWN0JyBmdW5jdGlvbnMgcmV0dXJuIGEKKyAgICBob3N0LWZvcm1hdCBpbnRlZ2VyIGZy b20gYSB0YXJnZXQtZm9ybWF0IGludGVnZXIgYXQgQUREUiB3aGljaCBpcworQEAgLTQwMSwyNyAr NDAyLDE2IEBAIHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0pCisg LyogR2l2ZW4gYSBzdHJ1Y3Qgc3ltYm9sIGZvciBhIHZhcmlhYmxlLAorICAgIGFuZCBhIHN0YWNr IGZyYW1lIGlkLCByZWFkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKKyAgICBhbmQgcmV0dXJu IGEgKHBvaW50ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKKy0g ICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIu ICAqLworKyAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHplcm8g cG9pbnRlci4KKysgICBXZSBoYXZlIHRvIGZpcnN0IGZpbmQgdGhlIGFkZHJlc3Mgb2YgdGhlIHZh cmlhYmxlIGJlZm9yZSBhbGxvY2F0aW5nIHN0cnVjdAorKyAgIHZhbHVlIHRvIHJldHVybiBhcyBp dHMgc2l6ZSBtYXkgZGVwZW5kIG9uIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MgcG9zc2libHkK KysgICB1c2VkIGJ5IGl0cyB0eXBlLiAgKi8KKyAKKyBzdHJ1Y3QgdmFsdWUgKgorIHJlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyB7 CistICBzdHJ1Y3QgdmFsdWUgKnY7CisgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IFNZTUJPTF9UWVBF ICh2YXIpOworICAgQ09SRV9BRERSIGFkZHI7CistICBpbnQgbGVuOworLQorLSAgaWYgKFNZTUJP TF9DTEFTUyAodmFyKSA9PSBMT0NfQ09NUFVURUQKKy0gICAgICB8fCBTWU1CT0xfQ0xBU1MgKHZh cikgPT0gTE9DX1JFR0lTVEVSKQorLSAgICAvKiBUaGVzZSBjYXNlcyBkbyBub3QgdXNlIFYuICAq LworLSAgICB2ID0gTlVMTDsKKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHYgPSBhbGxvY2F0ZV92 YWx1ZSAodHlwZSk7CistICAgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsJLyogVGhl IG1vc3QgbGlrZWx5IHBvc3NpYmlsaXR5LiAgKi8KKy0gICAgfQorLQorLSAgbGVuID0gVFlQRV9M RU5HVEggKHR5cGUpOworIAorICAgaWYgKHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lICh2YXIpKQor ICAgICBnZGJfYXNzZXJ0IChmcmFtZSk7CitAQCAtNDI5LDMzICs0MTksNDMgQEAgcmVhZF92YXJf dmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAg c3dpdGNoIChTWU1CT0xfQ0xBU1MgKHZhcikpCisgICAgIHsKKyAgICAgY2FzZSBMT0NfQ09OU1Q6 CistICAgICAgLyogUHV0IHRoZSBjb25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLwor LSAgICAgIHN0b3JlX3NpZ25lZF9pbnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBsZW4s CistCQkJICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAorLQkJ CSAgICAoTE9OR0VTVCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKKy0gICAgICBWQUxVRV9MVkFMICh2 KSA9IG5vdF9sdmFsOworLSAgICAgIHJldHVybiB2OworKyAgICAgIHsKKysJLyogUHV0IHRoZSBj b25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLworKwlzdHJ1Y3QgdmFsdWUgKnYgPSBh bGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCVZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CisrCXN0 b3JlX3NpZ25lZF9pbnRlZ2VyICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBUWVBFX0xFTkdUSCAo dHlwZSksCisrCQkJICAgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBl KSksCisrCQkJICAgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAodmFyKSk7CisrCXJldHVybiB2 OworKyAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfTEFCRUw6CistICAgICAgLyogUHV0IHRoZSBj b25zdGFudCBiYWNrIGluIHRhcmdldCBmb3JtYXQuICAqLworLSAgICAgIGlmIChvdmVybGF5X2Rl YnVnZ2luZykKKy0JeworLQkgIENPUkVfQUREUiBhZGRyCistCSAgICA9IHN5bWJvbF9vdmVybGF5 ZWRfYWRkcmVzcyAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZhciksCistCQkJCQlTWU1CT0xfT0JK X1NFQ1RJT04gKHZhcikpOworKyAgICAgIHsKKysJLyogUHV0IHRoZSBjb25zdGFudCBiYWNrIGlu IHRhcmdldCBmb3JtYXQuICAqLworKwlzdHJ1Y3QgdmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAo dHlwZSk7CisrCVZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CisrCWlmIChvdmVybGF5X2RlYnVn Z2luZykKKysJICB7CisrCSAgICBDT1JFX0FERFIgYWRkcgorKwkgICAgICA9IHN5bWJvbF9vdmVy bGF5ZWRfYWRkcmVzcyAoU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZhciksCisrCQkJCQkgIFNZTUJP TF9PQkpfU0VDVElPTiAodmFyKSk7CisgCistCSAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVf Y29udGVudHNfcmF3ICh2KSwgdHlwZSwgYWRkcik7CistCX0KKy0gICAgICBlbHNlCistCXN0b3Jl X3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsCistCQkJICAgICAg U1lNQk9MX1ZBTFVFX0FERFJFU1MgKHZhcikpOworLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbm90 X2x2YWw7CistICAgICAgcmV0dXJuIHY7CisrCSAgICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1 ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLCBhZGRyKTsKKysJICB9CisrCWVsc2UKKysJICBzdG9y ZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLAorKwkJCQlTWU1C T0xfVkFMVUVfQUREUkVTUyAodmFyKSk7CisrCXJldHVybiB2OworKyAgICAgIH0KKyAKKyAgICAg Y2FzZSBMT0NfQ09OU1RfQllURVM6CistICAgICAgbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcg KHYpLCBTWU1CT0xfVkFMVUVfQllURVMgKHZhciksIGxlbik7CistICAgICAgVkFMVUVfTFZBTCAo dikgPSBub3RfbHZhbDsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrCXN0cnVjdCB2YWx1 ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKKysJVkFMVUVfTFZBTCAodikgPSBub3RfbHZh bDsKKysJbWVtY3B5ICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCBTWU1CT0xfVkFMVUVfQllURVMg KHZhciksCisrCQlUWVBFX0xFTkdUSCAodHlwZSkpOworKwlyZXR1cm4gdjsKKysgICAgICB9Cisg CisgICAgIGNhc2UgTE9DX1NUQVRJQzoKKyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCitA QCAtNDk2LDEyICs0OTYsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIExP Q19CTE9DSzoKKy0gICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCistCXNldF92YWx1ZV9hZGRy ZXNzICh2LCBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MKKy0JICAoQkxPQ0tfU1RBUlQgKFNZTUJP TF9CTE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSkpOworLSAgICAg IGVsc2UKKy0Jc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tf VkFMVUUgKHZhcikpKTsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrICAgICAgICBDT1JF X0FERFIgYWRkcjsKKysJc3RydWN0IHZhbHVlICp2OworKworKwlpZiAob3ZlcmxheV9kZWJ1Z2dp bmcpCisrCSAgYWRkciA9IHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVzcworKwkgICAgKEJMT0NLX1NU QVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikp OworKwllbHNlCisrCSAgYWRkciA9IEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZh cikpOworKwkvKiBBRERSIGlzIHNldCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZ UEVERUYgZm9yCisrCSAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworKwlvYmplY3Rf YWRkcmVzc19zZXQgKGFkZHIpOworKwl2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxV RV9MVkFMICh2KSA9IGx2YWxfbWVtb3J5OworKwlzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7 CisrCXJldHVybiB2OworKyAgICAgIH0KKyAKKyAgICAgY2FzZSBMT0NfUkVHSVNURVI6CisgICAg IGNhc2UgTE9DX1JFR1BBUk1fQUREUjoKK0BAIC01MjAsNyArNTMxLDYgQEAgcmVhZF92YXJfdmFs dWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAkgICAg ICBlcnJvciAoXygiVmFsdWUgb2YgcmVnaXN0ZXIgdmFyaWFibGUgbm90IGF2YWlsYWJsZS4iKSk7 CisgCisgCSAgICBhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVndmFsKTsKKy0JICAgIFZBTFVF X0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CisgCSAgfQorIAllbHNlCisgCSAgeworQEAgLTU2Mywx OCArNTczLDMzIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBicmVhazsKKyAKKyAgICAgY2FzZSBMT0NfT1BUSU1J WkVEX09VVDoKKy0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworLSAgICAgIHNldF92 YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAxKTsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7Cisr ICAgICAgICBzdHJ1Y3QgdmFsdWUgKnYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCisrCVZB TFVFX0xWQUwgKHYpID0gbm90X2x2YWw7CisrCXNldF92YWx1ZV9vcHRpbWl6ZWRfb3V0ICh2LCAx KTsKKysJcmV0dXJuIHY7CisrICAgICAgfQorIAorICAgICBkZWZhdWx0OgorICAgICAgIGVycm9y IChfKCJDYW5ub3QgbG9vayB1cCB2YWx1ZSBvZiBhIGJvdGNoZWQgc3ltYm9sLiIpKTsKKyAgICAg ICBicmVhazsKKyAgICAgfQorIAorLSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOworLSAg c2V0X3ZhbHVlX2xhenkgKHYsIDEpOworLSAgcmV0dXJuIHY7CisrICB7CisrICAgIHN0cnVjdCB2 YWx1ZSAqdjsKKysKKysgICAgLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUn cyBDSEVDS19UWVBFREVGIGZvcgorKyAgICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTLiAg Ki8KKysgICAgb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRyKTsKKysgICAgdiA9IGFsbG9jYXRlX3Zh bHVlICh0eXBlKTsKKysgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKysgICAgc2V0 X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOworKworKyAgICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7 CisrCisrICAgIHJldHVybiB2OworKyAgfQorIH0KKyAKKyAvKiBJbnN0YWxsIGRlZmF1bHQgYXR0 cmlidXRlcyBmb3IgcmVnaXN0ZXIgdmFsdWVzLiAgKi8KK0BAIC02MTEsMTAgKzYzNiwxMSBAQCBz dHJ1Y3QgdmFsdWUgKgorIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBp bnQgcmVnbnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworICAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOworLSAgc3RydWN0IHR5cGUgKnR5 cGUxID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisgICBzdHJ1Y3QgdmFsdWUgKnY7CisgCistICBp ZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZTEpKQor KyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOworKworKyAgaWYgKGdkYmFyY2hfY29udmVy dF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQorICAgICB7CisgICAgICAgLyog VGhlIElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhlCisg ICAgICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0IG5l ZWQgdG8KK0BAIC02MjgsNyArNjU0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5 cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBW QUxVRV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxVRV9S RUdOVU0gKHYpID0gcmVnbnVtOworICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdk YmFyY2gsCistCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlMSwgdmFsdWVfY29udGVudHNfcmF3ICh2 KSk7CisrCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsK KyAgICAgfQorICAgZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYmNtZC5oIGIvZ2Ri L2dkYmNtZC5oCitpbmRleCA2YTIzMGMwLi5kODdhODEzIDEwMDY0NAorLS0tIGEvZ2RiL2dkYmNt ZC5oCisrKysgYi9nZGIvZ2RiY21kLmgKK0BAIC0xMjQsNiArMTI0LDEwIEBAIGV4dGVybiBzdHJ1 Y3QgY21kX2xpc3RfZWxlbWVudCAqc2V0Y2hlY2tsaXN0OworIAorIGV4dGVybiBzdHJ1Y3QgY21k X2xpc3RfZWxlbWVudCAqc2hvd2NoZWNrbGlzdDsKKyAKKysvKiBDaGFpbiBjb250YWluaW5nIGFs bCBkZWZpbmVkICJzYXZlIiBzdWJjb21tYW5kcy4gICovCisrCisrZXh0ZXJuIHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7CisrCisgZXh0ZXJuIHZvaWQgZXhlY3V0ZV9jb21t YW5kIChjaGFyICosIGludCk7CisgCisgZW51bSBjb21tYW5kX2NvbnRyb2xfdHlwZSBleGVjdXRl X2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKK2RpZmYgLS1naXQgYS9n ZGIvZ2RiaW5pdC5pbiBiL2dkYi9nZGJpbml0LmluCitpbmRleCBmZmI3ZjUzLi5hMmU3ZTk0IDEw MDY0NAorLS0tIGEvZ2RiL2dkYmluaXQuaW4KKysrKyBiL2dkYi9nZGJpbml0LmluCitAQCAtMSw1 ICsxLDE1IEBACisgZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgZGVidWdnaW5n IGdkYi5cbgorIAorKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBhbmQgInJlcXVpcmUiIGNv bW1hbmQuCisrcHl0aG9uCisrZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoCisrZ2RiLmRhdGFk aXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCisrZ2RiLnB5dGhvbmxpYmRpciA9 IGdkYi5kYXRhZGlyCisrZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGlyICsgJy9nZGInXQorK3N5 cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKKytlbmQKKytzb3VyY2UgQHNyY2RpckAvcHl0 aG9uL2xpYi9nZGIvX19pbml0X18ucHkKKysKKyBzZXQgY29tcGxhaW50cyAxCisgCisgYiBpbnRl cm5hbF9lcnJvcgorZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBiL2dkYi9nZGJ0aHJlYWQu aAoraW5kZXggY2QyNGVhZi4uOTYzODM2OCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0aHJlYWQuaAor KysrIGIvZ2RiL2dkYnRocmVhZC5oCitAQCAtNjYsNiArNjYsOSBAQCBzdHJ1Y3QgdGhyZWFkX2lu Zm8KKyAgIC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLwor ICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQ7CisgCisrICAvKiBF eGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLworKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKKysKKyAgIC8qIFJhbmdlIHRvIHNpbmdsZSBzdGVw IHdpdGhpbi4KKyAKKyAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9uZCB0byBhIHNpbmds ZS1zdGVwIHNpZ25hbCBieSBjb250aW51aW5nCitAQCAtMTg1LDYgKzE4OCwxMCBAQCBzdHJ1Y3Qg dGhyZWFkX2luZm8KKyAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFzIGJlZW4gZXhwbGljaXRs eSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCisgICBpbnQgc3RvcF9yZXF1ZXN0ZWQ7CisgCisrICAv KiBUaGUgaW5pdGlhdGluZyBmcmFtZSBvZiBhIG5leHRpbmcgb3BlcmF0aW9uLCB1c2VkIGZvciBk ZWNpZGluZworKyAgICAgd2hpY2ggZXhjZXB0aW9ucyB0byBpbnRlcmNlcHQuICAqLworKyAgc3Ry dWN0IGZyYW1lX2lkIGluaXRpYXRpbmdfZnJhbWU7CisrCisgICAvKiBQcml2YXRlIGRhdGEgdXNl ZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1lbnRhdGlvbi4gICovCisgICBzdHJ1Y3QgcHJp dmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKKyAKK0BAIC0yMjEsNiArMjI4LDkgQEAgZXh0ZXJu IHZvaWQgZGVsZXRlX3RocmVhZF9zaWxlbnQgKHB0aWRfdCk7CisgLyogRGVsZXRlIGEgc3RlcF9y ZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJlYWQgZGF0YWJhc2UuICovCisgZXh0ZXJuIHZv aWQgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsK KyAKKysvKiBEZWxldGUgYW4gZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IGZyb20gdGhlIHRo cmVhZCBkYXRhYmFzZS4gKi8KKytleHRlcm4gdm9pZCBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7CisrCisgLyogVHJhbnNsYXRlIHRoZSBp bnRlZ2VyIHRocmVhZCBpZCAoR0RCJ3MgaG9tZWdyb3duIGlkLCBub3QgdGhlIHN5c3RlbSdzKQor ICAgIGludG8gYSAicGlkIiAod2hpY2ggbWF5IGJlIG92ZXJsb2FkZWQgd2l0aCBleHRyYSB0aHJl YWQgaW5mb3JtYXRpb24pLiAgKi8KKyBleHRlcm4gcHRpZF90IHRocmVhZF9pZF90b19waWQgKGlu dCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXgg NDQzZjZmNy4uZDg1MmExNCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIv Z2RidHlwZXMuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2lu Y2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFzaHRhYi5oIgorKyNpbmNsdWRlICJv YnNlcnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3YXJmMmxv Yy5oIgorIAorIAorIC8qIEZsb2F0Zm9ybWF0IHBhaXJzLiAgKi8KK0BAIC0xMjMsNiArMTI2LDEx IEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwgaW50 KTsKKyBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7 Cisgc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGludCk7Cisg CisrLyogVGhlIGhhc2ggdGFibGUgaG9sZGluZyBhbGwgZGlzY2FyZGFibGUgYHN0cnVjdCB0eXBl IConIHJlZmVyZW5jZXMuICAqLworK3N0YXRpYyBodGFiX3QgdHlwZV9kaXNjYXJkYWJsZV90YWJs ZTsKKysKKysvKiBDdXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBU WVBFX0RJU0NBUkRBQkxFX0FHRS4gICovCisrc3RhdGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2Fn ZV9jdXJyZW50OworIAorIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJTEUtYXNzb2NpYXRlZCB0eXBl IHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4gIFNwYWNlIGZv ciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCitAQCAtMTUzLDYgKzE2MSwzOSBAQCBh bGxvY190eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIHJldHVybiB0eXBlOworIH0K KyAKKysvKiBEZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxl Y3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCisrICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNl ZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQorKyAgIGJl aW5nIGRlYWxsb2NhdGVkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NldF90eXBlX2FzX2Rpc2Nh cmRhYmxlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyt7CisrICB2b2lkICoqc2xvdDsKKysKKysgIGdk Yl9hc3NlcnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7CisrCisrICBUWVBFX0RJU0NBUkRB QkxFICh0eXBlKSA9IDE7CisrICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rp c2NhcmRhYmxlX2FnZV9jdXJyZW50OworKworKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBl X2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlLCBJTlNFUlQpOworKyAgZ2RiX2Fzc2VydCAoISpzbG90 KTsKKysgICpzbG90ID0gdHlwZTsKKyt9CisrCisrLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtl IGFsbG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKKysgICBz dGF0ZSBvZiBQQVJFTlRfVFlQRS4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKythbGxv Y190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQorK3sKKysgIHN0cnVj dCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50X3R5cGUpOworKworKyAg aWYgKFRZUEVfRElTQ0FSREFCTEUgKHBhcmVudF90eXBlKSkKKysgICAgc2V0X3R5cGVfYXNfZGlz Y2FyZGFibGUgKG5ld190eXBlKTsKKysKKysgIHJldHVybiBuZXdfdHlwZTsKKyt9CisrCisgLyog QWxsb2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxs IGl0CisgICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVy ZSBpcyBhbGxvY2F0ZWQKKyAgICBvbiB0aGUgaGVhcC4gICovCitAQCAtMjc4LDcgKzMxOSw3IEBA IG1ha2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBl cHRyKQorIAorICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBu ZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCisgICAgIHsKKy0gICAgICBudHlwZSA9IGFsbG9jX3R5 cGVfY29weSAodHlwZSk7CisrICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlw ZSk7CisgICAgICAgaWYgKHR5cGVwdHIpCisgCSp0eXBlcHRyID0gbnR5cGU7CisgICAgIH0KK0BA IC0zNTUsNyArMzk2LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVw dHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLworICAgICB7CistICAg ICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOworKyAgICAgIG50eXBlID0gYWxsb2Nf dHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlmICh0eXBlcHRyKQorIAkqdHlwZXB0ciA9 IG50eXBlOworICAgICB9CitAQCAtNzI2LDYgKzc2Nyw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChz dHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAorICAgICBU WVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwor ICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKKyAgIFRZUEVfSElH SF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKKysgIFRZUEVfQllURV9TVFJJREUg KHJlc3VsdF90eXBlKSA9IDA7CisgCisgICBpZiAobG93X2JvdW5kID49IDApCisgICAgIFRZUEVf VU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7CitAQCAtODI1LDI2ICs4NjcsNDUgQEAgY3JlYXRl X2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKKyAKKyAgIFRZUEVfQ09ERSAo cmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOworICAgVFlQRV9UQVJHRVRfVFlQRSAocmVz dWx0X3R5cGUpID0gZWxlbWVudF90eXBlOworLSAgaWYgKGdldF9kaXNjcmV0ZV9ib3VuZHMgKHJh bmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCistICAgIGxvd19ib3VuZCA9 IGhpZ2hfYm91bmQgPSAwOworLSAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVudF90eXBlKTsKKy0gIC8q IEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBBZGEgYXJyYXlzIGNh biBiZQorLSAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxl ciB0aGFuIHRoZSBsb3dfYm91bmQuCistICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVu Z3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KKy0gIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kKQor LSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKKy0gIGVsc2UKKy0gICAgVFlQRV9M RU5HVEggKHJlc3VsdF90eXBlKSA9CistICAgICAgVFlQRV9MRU5HVEggKGVsZW1lbnRfdHlwZSkg KiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOworICAgVFlQRV9ORklFTERTIChyZXN1bHRf dHlwZSkgPSAxOworICAgVFlQRV9GSUVMRFMgKHJlc3VsdF90eXBlKSA9CisgICAgIChzdHJ1Y3Qg ZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0cnVjdCBmaWVsZCkp OworICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRfdHlwZSkgPSByYW5nZV90eXBlOworICAgVFlQ RV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9IC0xOworIAorLSAgLyogVFlQRV9GTEFHX1RB UkdFVF9TVFVCIHdpbGwgdGFrZSBjYXJlIG9mIHplcm8gbGVuZ3RoIGFycmF5cyAqLworKyAgLyog RFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVudGltZSBpbmZvcm1hdGlvbiBsaWtlCisrICAg ICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5vdCBiZWluZyBhdmFpbGFibGUgZHVyaW5nIHRo ZQorKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCisrICBpZiAoVFlQRV9SQU5HRV9E QVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVAor KyAgICAgIHx8IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZCAhPSBSQU5H RV9CT1VORF9LSU5EX0NPTlNUQU5UCisrICAgICAgfHwgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVE IChyYW5nZV90eXBlKSAKKysgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5n ZV90eXBlKSAKKysgICAgICB8fCBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5nZV90eXBlLCAmbG93 X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQorKyAgICB7CisrICAgICAgbG93X2JvdW5kID0gMDsK KysgICAgICBoaWdoX2JvdW5kID0gLTE7CisrICAgIH0KKysKKysgIC8qIEJlIGNhcmVmdWwgd2hl biBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBBZGEgYXJyYXlzIGNhbiBiZQorKyAgICAgZW1w dHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3df Ym91bmQuCisrICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6 ZXJvLiAgVFlQRV9UQVJHRVRfU1RVQiBuZWVkcyB0bworKyAgICAgYmUgY2hlY2tlZCBhcyBpdCBt YXkgaGF2ZSBkZXBlbmRlbmNpZXMgb24gRFdBUkYgYmxvY2tzIGRlcGVuZGluZyBvbgorKyAgICAg cnVudGltZSBpbmZvcm1hdGlvbiBub3QgYXZhaWxhYmxlIGR1cmluZyB0aGUgQ1JFQVRFX0FSUkFZ X1RZUEUgdGltZS4gICovCisrICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3VuZCB8fCBUWVBFX1RB UkdFVF9TVFVCIChlbGVtZW50X3R5cGUpKQorKyAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUp ID0gMDsKKysgIGVsc2UKKysgICAgeworKyAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlw ZSk7CisrICAgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CisrCVRZUEVfTEVOR1RIIChl bGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysgICAgfQorKwor ICAgaWYgKFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPT0gMCkKKy0gICAgVFlQRV9UQVJHRVRf U1RVQiAocmVzdWx0X3R5cGUpID0gMTsKKysgICAgeworKyAgICAgIC8qIFRoZSByZWFsIHNpemUg d2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMgaW5zdGFuY2VzIGJ5CisrCSBDSEVDS19UWVBF REVGLiAgKi8KKysgICAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAg ICB9CisgCisgICByZXR1cm4gcmVzdWx0X3R5cGU7CisgfQorQEAgLTEzNTMsNiArMTQxNCwxMDUg QEAgc3R1Yl9ub25hbWVfY29tcGxhaW50ICh2b2lkKQorICAgY29tcGxhaW50ICgmc3ltZmlsZV9j b21wbGFpbnRzLCBfKCJzdHViIHR5cGUgaGFzIE5VTEwgbmFtZSIpKTsKKyB9CisgCisrLyogQ2Fs Y3VsYXRlIHRoZSBtZW1vcnkgbGVuZ3RoIG9mIGFycmF5IFRZUEUuCisrCisrICAgVEFSR0VUX1RZ UEUgc2hvdWxkIGJlIHNldCB0byBgY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkpJyBhcworKyAgIGEgcGVyZm9ybWFuY2UgaGludC4gIEZlZWwgZnJlZSB0byBwYXNzIE5VTEwu ICBTZXQgRlVMTF9TUEFOIHRvIHJldHVybiB0aGUKKysgICBzaXplIGluY2wuIHRoZSBwb3NzaWJs ZSBwYWRkaW5nIG9mIHRoZSBsYXN0IGVsZW1lbnQgLSBpdCBtYXkgZGlmZmVyIGZyb20gdGhlCisr ICAgY2xlYXJlZCBGVUxMX1NQQU4gcmV0dXJuIHZhbHVlICh0aGUgZXhwZWN0ZWQgU0laRU9GKSBm b3Igbm9uLXplcm8KKysgICBUWVBFX0JZVEVfU1RSSURFIHZhbHVlcy4gICovCisrCisrc3RhdGlj IExPTkdFU1QKKyt0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlw ZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4pCisreworKyAgc3RydWN0IHR5cGUgKnJhbmdl X3R5cGU7CisrICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0gMCcgZm9yIGEgZmFsc2Ug R0NDIHdhcm5pbmcuICAqLworKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVudF9zaXplLCByZXR2YWw7 CisrCisrICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfQVJSQVkKKysgICAgICAm JiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCisrICAgIHJldHVybiBUWVBF X0xFTkdUSCAodHlwZSk7CisrCisrICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5E IGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCisrICAgICBGb3J0cmFuIGFy cmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4g YmUKKysgICAgIHplcm8tbGVuZ3RoLiAgKi8KKysgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25v dF92YWxpZCAodHlwZSkpCisrICAgIHJldHVybiAwOworKworKyAgcmFuZ2VfdHlwZSA9IFRZUEVf SU5ERVhfVFlQRSAodHlwZSk7CisrICBpZiAoVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChyYW5n ZV90eXBlKQorKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUp KQorKyAgICByZXR1cm4gMDsKKysgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBl KSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7CisrICAvKiBJdCBtYXkgaGFwcGVu IGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBkYXRhLiAgKi8K KysgIGlmIChjb3VudCA8IDApCisrICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0eXBlICVzIGhh cyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKKysJICAgICBUWVBFX05BTUUgKHR5cGUpLCBwbG9u Z2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKKysJICAgICBwbG9uZ2VzdCAoVFlQ RV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOworKyAgLyogVGhlIGNvZGUgYmVsb3cgZG9lcyBu b3QgaGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLworKyAgaWYgKGNvdW50IDw9IDApCisrICAg IHJldHVybiAwOworKyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3VudCA+IDEpCisrICAgIHsKKysgICAg ICAvKiBXZSBkbyBub3QgdXNlIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpIGhl cmUgYXMgd2Ugd2FudCB0bworKyAgICAgICAgIGZvcmNlIEZVTExfU1BBTiB0byAxLiAgKi8KKysg ICAgICBieXRlX3N0cmlkZSA9IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOworKyAgICAg IGlmIChieXRlX3N0cmlkZSA9PSAwKQorKyAgICAgICAgeworKwkgIGlmICh0YXJnZXRfdHlwZSA9 PSBOVUxMKQorKwkgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSk7CisrCSAgYnl0ZV9zdHJpZGUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90 eXBlLCBOVUxMLCAxKTsKKysJfQorKyAgICB9CisrCisrICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2 YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMCBpZiBpdHMgbGVuZ3RoCisrICAg ICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyB0aGF0IGZvciB4IDwg MCwKKysgICAgIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01BWCArIDEsIHdoaWNoIGlz IHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCisrICAgICBieSBDLCBidXQgaXMgdXN1YWxseSB0 cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJlIHVuc2lnbmVkCisrICAgICB3 aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZhY3QgdGhhdCBoaWdoX2Jv dW5kLWxvd19ib3VuZCBpcworKyAgICAgYWx3YXlzIHJlcHJlc2VudGFibGUgaW4gVUxPTkdFU1Qg YW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQrMQorKyAgICAgb3ZlcmZsb3dzLCBpdCBv dmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIGRlY2lkZSB0 bworKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVfTEVOR1RIIGZyb20g dW5zaWduZWQgaW50IHRvIFVMT05HRVNULgorKyAgICAgKi8KKysKKysgIGlmIChmdWxsX3NwYW4p CisrICAgIHsKKysgICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3RyaWRlOworKyAgICAgIGlm IChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3RyaWRlIHx8IHJldHZhbCA+ IFVJTlRfTUFYKQorKwlyZXR2YWwgPSAwOworKyAgICAgIHJldHVybiByZXR2YWw7CisrICAgIH0K KysgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQorKyAgICB0YXJnZXRfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKKysgIGVsZW1lbnRfc2l6ZSA9IHR5cGVf bGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOworKyAgcmV0dmFsID0gKGNvdW50IC0g MSkgKiBieXRlX3N0cmlkZSArIGVsZW1lbnRfc2l6ZTsKKysgIGlmIChyZXR2YWwgPCBlbGVtZW50 X3NpemUKKysgICAgICB8fCAoYnl0ZV9zdHJpZGUgIT0gMAorKyAgICAgICAgICAmJiAocmV0dmFs IC0gZWxlbWVudF9zaXplKSAvIGJ5dGVfc3RyaWRlICE9IGNvdW50IC0gMSkKKysgICAgICB8fCBy ZXR2YWwgPiBVSU5UX01BWCkKKysgICAgcmV0dmFsID0gMDsKKysgIHJldHVybiByZXR2YWw7Cisr fQorKworKy8qIFByZXBhcmUgVFlQRSBhZnRlciBiZWluZyByZWFkIGluIGJ5IHRoZSBiYWNrZW5k LiAgQ3VycmVudGx5IHRoaXMgZnVuY3Rpb24KKysgICBvbmx5IHByb3BhZ2F0ZXMgdGhlIFRZUEVf RFlOQU1JQyBmbGFnLiAgKi8KKysKKyt2b2lkCisrZmluYWxpemVfdHlwZSAoc3RydWN0IHR5cGUg KnR5cGUpCisreworKyAgaW50IGk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERT ICh0eXBlKTsgKytpKQorKyAgICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSAmJiBUWVBF X0RZTkFNSUMgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpKQorKyAgICAgIGJyZWFrOworKwor KyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGlnbm9yZWQgaGVyZS4gICovCisrICBpZiAoaSA8 IFRZUEVfTkZJRUxEUyAodHlwZSkKKysgICAgICB8fCAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBl KSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkpKQorKyAgICAgIHx8 IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSkpCisrICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAxOworK30KKysKKyAvKiBB ZGRlZCBieSBCcnlhbiBCb3JlaGFtLCBLZXdpbGwsIFN1biBTZXAgMTcgMTg6MDc6MTcgMTk4OS4K KyAKKyAgICBJZiB0aGlzIGlzIGEgc3R1YmJlZCBzdHJ1Y3QgKGkuZS4gZGVjbGFyZWQgYXMgc3Ry dWN0IGZvbyAqKSwgc2VlIGlmCitAQCAtMTQ4Niw1MiArMTY0NiwzNiBAQCBjaGVja190eXBlZGVm IChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAgICAgICAgIH0KKyAgICAgfQorIAorLSAgaWYgKFRZUEVf VEFSR0VUX1NUVUIgKHR5cGUpKQorKyAgLyogY29weV90eXBlX3JlY3Vyc2l2ZSBhdXRvbWF0aWNh bGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5nIG9ubHkKKysgICAgIGNvbnN0 YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiAgKi8K KysgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQorKyAgICB7CisrICAgICAgaHRhYl90IGNvcGll ZF90eXBlczsKKysgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZV9vbGQgPSB0eXBlOworKworKyAgICAg IGNvcGllZF90eXBlcyA9IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAoTlVMTCk7CisrICAgICAg dHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90eXBlcyk7CisrICAgICAg aHRhYl9kZWxldGUgKGNvcGllZF90eXBlcyk7CisrCisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9E WU5BTUlDICh0eXBlKSA9PSAwKTsKKysgICAgfQorKworKyAgaWYgKFRZUEVfVEFSR0VUX1NUVUIg KHR5cGUpIHx8IFRZUEVfRFlOQU1JQyAodHlwZSkpCisgICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlw ZSAqcmFuZ2VfdHlwZTsKKyAgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190 eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CiAgCi0gc3RydWN0IHZhbHVlICoKLSBy ZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJh bWUpCi0gewotLSAgc3RydWN0IHZhbHVlICp2OwotICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1C T0xfVFlQRSAodmFyKTsKLSAgIENPUkVfQUREUiBhZGRyOwotLSAgaW50IGxlbjsKKysgICAgICBp ZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKKysJVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkgPSB0YXJn ZXRfdHlwZTsKKyAgICAgICBpZiAoVFlQRV9TVFVCICh0YXJnZXRfdHlwZSkgfHwgVFlQRV9UQVJH RVRfU1RVQiAodGFyZ2V0X3R5cGUpKQorIAl7CisgCSAgLyogRW1wdHkuICAqLworIAl9CisgICAg ICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKKy0JICAgICAg ICYmIFRZUEVfTkZJRUxEUyAodHlwZSkgPT0gMQorLQkgICAgICAgJiYgKFRZUEVfQ09ERSAocmFu Z2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSkpCistCQkgICA9PSBUWVBFX0NPREVfUkFO R0UpKQorKwkgICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfU1RSSU5HKQor IAl7CisgCSAgLyogTm93IHJlY29tcHV0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBhcnJheSB0eXBlLCBi YXNlZCBvbiBpdHMKKy0JICAgICBudW1iZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlw ZSdzIGxlbmd0aC4KKy0JICAgICBXYXRjaCBvdXQgZm9yIEFkYSBudWxsIEFkYSBhcnJheXMgd2hl cmUgdGhlIGhpZ2ggYm91bmQKKy0JICAgICBpcyBzbWFsbGVyIHRoYW4gdGhlIGxvdyBib3VuZC4g Ki8KKy0JICBjb25zdCBMT05HRVNUIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5nZV90 eXBlKTsKKy0JICBjb25zdCBMT05HRVNUIGhpZ2hfYm91bmQgPSBUWVBFX0hJR0hfQk9VTkQgKHJh bmdlX3R5cGUpOworLQkgIFVMT05HRVNUIGxlbjsKIC0KLS0gIGlmIChTWU1CT0xfQ0xBU1MgKHZh cikgPT0gTE9DX0NPTVBVVEVECi0tICAgICAgfHwgU1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19S RUdJU1RFUikKLS0gICAgLyogVGhlc2UgY2FzZXMgZG8gbm90IHVzZSBWLiAgKi8KLS0gICAgdiA9 IE5VTEw7Ci0tICBlbHNlCi0tICAgIHsKLS0gICAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUp OwotLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CS8qIFRoZSBtb3N0IGxpa2Vs eSBwb3NzaWJpbGl0eS4gICovCi0tICAgIH0KKy0JICBpZiAoaGlnaF9ib3VuZCA8IGxvd19ib3Vu ZCkKKy0JICAgIGxlbiA9IDA7CistCSAgZWxzZQorLQkgICAgeworLQkgICAgICAvKiBGb3Igbm93 LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMAorLQkJIGlm IGl0cyBsZW5ndGggZXhjZWVkcyBVSU5UX01BWC4gIFRoZSBjb2RlIGJlbG93IGFzc3VtZXMKKy0J CSB0aGF0IGZvciB4IDwgMCwgKFVMT05HRVNUKSB4ID09IC14ICsgVUxPTkdFU1RfTUFYICsgMSwK Ky0JCSB3aGljaCBpcyB0ZWNobmljYWxseSBub3QgZ3VhcmFudGVlZCBieSBDLCBidXQgaXMgdXN1 YWxseSB0cnVlCistCQkgKGJlY2F1c2UgaXQgd291bGQgYmUgdHJ1ZSBpZiB4IHdlcmUgdW5zaWdu ZWQgd2l0aCBpdHMKKy0JCSBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZhY3QgdGhh dAorLQkJIGhpZ2hfYm91bmQtbG93X2JvdW5kIGlzIGFsd2F5cyByZXByZXNlbnRhYmxlIGluCist CQkgVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQrMSBvdmVyZmxvd3Ms CistCQkgaXQgb3ZlcmZsb3dzIHRvIDAuICBXZSBtdXN0IGNoYW5nZSB0aGVzZSB0ZXN0cyBpZiB3 ZSAKKy0JCSBkZWNpZGUgdG8gaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVfTEVO R1RICistCQkgZnJvbSB1bnNpZ25lZCBpbnQgdG8gVUxPTkdFU1QuICovCistCSAgICAgIFVMT05H RVNUIHVsb3cgPSBsb3dfYm91bmQsIHVoaWdoID0gaGlnaF9ib3VuZDsKKy0JICAgICAgVUxPTkdF U1QgdGxlbiA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7CiAtCi0tICBsZW4gPSBUWVBFX0xF TkdUSCAodHlwZSk7CistCSAgICAgIGxlbiA9IHRsZW4gKiAodWhpZ2ggLSB1bG93ICsgMSk7Cist CSAgICAgIGlmICh0bGVuID09IDAgfHwgKGxlbiAvIHRsZW4gLSAxICsgdWxvdykgIT0gdWhpZ2gg CistCQkgIHx8IGxlbiA+IFVJTlRfTUFYKQorLQkJbGVuID0gMDsKKy0JICAgIH0KKy0JICBUWVBF X0xFTkdUSCAodHlwZSkgPSBsZW47CisrCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUg dGFyZ2V0IHR5cGUncyBsZW5ndGguICAqLworKwkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IHR5cGVf bGVuZ3RoX2dldCAodHlwZSwgdGFyZ2V0X3R5cGUsIDApOworIAkgIFRZUEVfVEFSR0VUX1NUVUIg KHR5cGUpID0gMDsKKyAJfQorICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQ RV9DT0RFX1JBTkdFKQorQEAgLTE1MzksOSArMTY4MywxMiBAQCBjaGVja190eXBlZGVmIChzdHJ1 Y3QgdHlwZSAqdHlwZSkKKyAJICBUWVBFX0xFTkdUSCAodHlwZSkgPSBUWVBFX0xFTkdUSCAodGFy Z2V0X3R5cGUpOworIAkgIFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpID0gMDsKKyAJfQorKyAgICAg IFRZUEVfRFlOQU1JQyAodHlwZSkgPSAwOworICAgICB9CisrCisgICAvKiBDYWNoZSBUWVBFX0xF TkdUSCBmb3IgZnV0dXJlIHVzZS4gICovCisgICBUWVBFX0xFTkdUSCAob3JpZ190eXBlKSA9IFRZ UEVfTEVOR1RIICh0eXBlKTsKKysKKyAgIHJldHVybiB0eXBlOworIH0KICAKLSAgIGlmIChzeW1i b2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKLSAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAg LTQyOSwzMyArNDE5LDQzIEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0 cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSAgIHN3aXRjaCAoU1lNQk9MX0NMQVNTICh2YXIpKQot ICAgICB7Ci0gICAgIGNhc2UgTE9DX0NPTlNUOgotLSAgICAgIC8qIFB1dCB0aGUgY29uc3RhbnQg YmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KLS0gICAgICBzdG9yZV9zaWduZWRfaW50ZWdlciAo dmFsdWVfY29udGVudHNfcmF3ICh2KSwgbGVuLAotLQkJCSAgICBnZGJhcmNoX2J5dGVfb3JkZXIg KGdldF90eXBlX2FyY2ggKHR5cGUpKSwKLS0JCQkgICAgKExPTkdFU1QpIFNZTUJPTF9WQUxVRSAo dmFyKSk7Ci0tICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1cm4g djsKLSsgICAgICB7Ci0rCS8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0 LiAgKi8KLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKwlWQUxV RV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwlzdG9yZV9zaWduZWRfaW50ZWdlciAodmFsdWVfY29u dGVudHNfcmF3ICh2KSwgVFlQRV9MRU5HVEggKHR5cGUpLAotKwkJCSAgICAgIGdkYmFyY2hfYnl0 ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAotKwkJCSAgICAgIChMT05HRVNUKSBTWU1C T0xfVkFMVUUgKHZhcikpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9CitAQCAtMTgxMSw2ICsxOTU4 LDggQEAgaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxh Z3MsCisgICAgIFRZUEVfTk9UVEVYVCAodHlwZSkgPSAxOworICAgaWYgKGZsYWdzICYgVFlQRV9G TEFHX0ZJWEVEX0lOU1RBTkNFKQorICAgICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7 CisrICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfR05VX0lGVU5DKQorKyAgICBUWVBFX0dOVV9JRlVO QyAodHlwZSkgPSAxOwogIAotICAgICBjYXNlIExPQ19MQUJFTDoKLS0gICAgICAvKiBQdXQgdGhl IGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCi0tICAgICAgaWYgKG92ZXJsYXlf ZGVidWdnaW5nKQotLQl7Ci0tCSAgQ09SRV9BRERSIGFkZHIKLS0JICAgID0gc3ltYm9sX292ZXJs YXllZF9hZGRyZXNzIChTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSwKLS0JCQkJCVNZTUJPTF9P QkpfU0VDVElPTiAodmFyKSk7Ci0rICAgICAgewotKwkvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sg aW4gdGFyZ2V0IGZvcm1hdC4gICovCi0rCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVl ICh0eXBlKTsKLSsJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSsJaWYgKG92ZXJsYXlfZGVi dWdnaW5nKQotKwkgIHsKLSsJICAgIENPUkVfQUREUiBhZGRyCi0rCSAgICAgID0gc3ltYm9sX292 ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSwKLSsJCQkJCSAgU1lN Qk9MX09CSl9TRUNUSU9OICh2YXIpKTsKKyAgIGlmIChuYW1lKQorICAgICBUWVBFX05BTUUgKHR5 cGUpID0gb2JzYXZlc3RyaW5nIChuYW1lLCBzdHJsZW4gKG5hbWUpLAorQEAgLTMwMDYsMzMgKzMx NTUsNDIgQEAgdHlwZV9wYWlyX2VxIChjb25zdCB2b2lkICppdGVtX2xocywgY29uc3Qgdm9pZCAq aXRlbV9yaHMpCisgfQogIAotLQkgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRz X3JhdyAodiksIHR5cGUsIGFkZHIpOwotLQl9Ci0tICAgICAgZWxzZQotLQlzdG9yZV90eXBlZF9h ZGRyZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLAotLQkJCSAgICAgIFNZTUJPTF9W QUxVRV9BRERSRVNTICh2YXIpKTsKLS0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwot LSAgICAgIHJldHVybiB2OwotKwkgICAgc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVu dHNfcmF3ICh2KSwgdHlwZSwgYWRkcik7Ci0rCSAgfQotKwllbHNlCi0rCSAgc3RvcmVfdHlwZWRf YWRkcmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKLSsJCQkJU1lNQk9MX1ZBTFVF X0FERFJFU1MgKHZhcikpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9CisgLyogQWxsb2NhdGUgdGhl IGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdhbGsKKy0gICB0eXBl cyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9ic3RhY2ssIGJlY2F1c2UK Ky0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLworKyAgIHR5cGVzIHdpdGhv dXQgZHVwbGljYXRlcy4gICAqLwogIAotICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKLS0gICAg ICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFy KSwgbGVuKTsKLS0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotLSAgICAgIHJldHVy biB2OwotKyAgICAgIHsKLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUp OwotKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRz X3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKLSsJCVRZUEVfTEVOR1RIICh0eXBl KSk7Ci0rCXJldHVybiB2OwotKyAgICAgIH0KKyBodGFiX3QKKyBjcmVhdGVfY29waWVkX3R5cGVz X2hhc2ggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKy0gIHJldHVybiBodGFiX2NyZWF0 ZV9hbGxvY19leCAoMSwgdHlwZV9wYWlyX2hhc2gsIHR5cGVfcGFpcl9lcSwKKy0JCQkgICAgICAg TlVMTCwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgICAgaGFzaHRhYl9vYnN0 YWNrX2FsbG9jYXRlLAorLQkJCSAgICAgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAg aWYgKG9iamZpbGUgPT0gTlVMTCkKKysgICAgeworKyAgICAgIC8qIE5VTEwgT0JKRklMRSBpcyBm b3IgVFlQRV9EWU5BTUlDIHR5cGVzIGFscmVhZHkgY29udGFpbmVkIGluCisrCSBPQkpGSUxFX01B TExPQyBtZW1vcnksIHN1Y2ggYXMgdGhvc2UgZnJvbSBWQUxVRV9ISVNUT1JZX0NIQUlOLiAgVGFi bGUKKysJIGVsZW1lbnQgZW50cmllcyBnZXQgYWxsb2NhdGVkIGJ5IHhtYWxsb2MgLSBzbyB1c2Ug eGZyZWUuICAqLworKyAgICAgIHJldHVybiBodGFiX2NyZWF0ZSAoMSwgdHlwZV9wYWlyX2hhc2gs IHR5cGVfcGFpcl9lcSwgeGZyZWUpOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICAv KiBVc2UgT0JKRklMRSdzIG9ic3RhY2ssIGJlY2F1c2UgT0JKRklMRSBpcyBhYm91dCB0byBiZSBk ZWxldGVkLiAgVGFibGUKKysJIGVsZW1lbnQgZW50cmllcyBnZXQgYWxsb2NhdGVkIGJ5IHhtYWxs b2MgLSBzbyB1c2UgeGZyZWUuICAqLworKyAgICAgIHJldHVybiBodGFiX2NyZWF0ZV9hbGxvY19l eCAoMSwgdHlwZV9wYWlyX2hhc2gsIHR5cGVfcGFpcl9lcSwKKysJCQkJICAgeGZyZWUsICZvYmpm aWxlLT5vYmpmaWxlX29ic3RhY2ssCisrCQkJCSAgIGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwK KysJCQkJICAgZHVtbXlfb2JzdGFja19kZWFsbG9jYXRlKTsKKysgICAgfQorIH0KICAKLSAgICAg Y2FzZSBMT0NfU1RBVElDOgotICAgICAgIGlmIChvdmVybGF5X2RlYnVnZ2luZykKLUBAIC00OTYs MTIgKzQ5NiwyMyBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAgICAgYnJlYWs7CistLyogUmVjdXJzaXZlbHkgY29weSAo ZGVlcCBjb3B5KSBUWVBFLCBpZiBpdCBpcyBhc3NvY2lhdGVkIHdpdGgKKy0gICBPQkpGSUxFLiAg UmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nIG1hbGxvYywgYSBzYXZlZCB0eXBlIGlm CistICAgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwg b3IgVFlQRSBpZiBpdCBpcworLSAgIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCisr LyogQSBoZWxwZXIgZm9yIGNvcHlfdHlwZV9yZWN1cnNpdmUuICBUaGlzIGRvZXMgYWxsIHRoZSB3 b3JrLiAgT0JKRklMRSBpcyB1c2VkCisrICAgb25seSBmb3IgYW4gYXNzZXJ0aW9uIGNoZWNraW5n LiAgKi8KICAKLSAgICAgY2FzZSBMT0NfQkxPQ0s6Ci0tICAgICAgaWYgKG92ZXJsYXlfZGVidWdn aW5nKQotLQlzZXRfdmFsdWVfYWRkcmVzcyAodiwgc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCi0t CSAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NF Q1RJT04gKHZhcikpKTsKLS0gICAgICBlbHNlCi0tCXNldF92YWx1ZV9hZGRyZXNzICh2LCBCTE9D S19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSk7Ci0tICAgICAgcmV0dXJuIHY7Ci0r ICAgICAgewotKyAgICAgICAgQ09SRV9BRERSIGFkZHI7Ci0rCXN0cnVjdCB2YWx1ZSAqdjsKLSsK LSsJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotKwkgIGFkZHIgPSBzeW1ib2xfb3ZlcmxheWVkX2Fk ZHJlc3MKLSsJICAgIChCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lN Qk9MX09CSl9TRUNUSU9OICh2YXIpKTsKLSsJZWxzZQotKwkgIGFkZHIgPSBCTE9DS19TVEFSVCAo U1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKTsKLSsJLyogQUREUiBpcyBzZXQgaGVyZSBmb3IgQUxM T0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZvcgotKwkgICBEV19PUF9wdXNoX29iamVjdF9h ZGRyZXNzLiAgKi8KLSsJb2JqZWN0X2FkZHJlc3Nfc2V0IChhZGRyKTsKLSsJdiA9IGFsbG9jYXRl X3ZhbHVlICh0eXBlKTsKLSsJVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSsJc2V0X3Zh bHVlX2FkZHJlc3MgKHYsIGFkZHIpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9Cistc3RydWN0IHR5 cGUgKgorLWNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKKy0J CSAgICAgc3RydWN0IHR5cGUgKnR5cGUsCistCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCisr c3RhdGljIHN0cnVjdCB0eXBlICoKKytjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCAKKysJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCSAgICAgICBo dGFiX3QgY29waWVkX3R5cGVzKQorIHsKKyAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFp cjsKKyAgIHZvaWQgKipzbG90OworICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwogIAotICAgICBj YXNlIExPQ19SRUdJU1RFUjoKLSAgICAgY2FzZSBMT0NfUkVHUEFSTV9BRERSOgotQEAgLTUyMCw3 ICs1MzEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUpCi0gCSAgICAgIGVycm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2YXJp YWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKKy0gIGlmICghIFRZUEVfT0JKRklMRV9PV05FRCAodHlw ZSkpCisrICBpZiAoISBUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpICYmICFUWVBFX0RZTkFNSUMg KHR5cGUpKQorICAgICByZXR1cm4gdHlwZTsKICAKLSAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRy ZXNzIChyZWd2YWwpOwotLQkgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSAJICB9 Ci0gCWVsc2UKLSAJICB7Ci1AQCAtNTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIGJyZWFr OworICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4g b3RoZXIgb2JqZmlsZXM7CitAQCAtMzA0Nyw4ICszMjA1LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2Fy Y2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKKyAKKyAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcg dHlwZSB0byB0aGUgaGFzaCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQorLSAgICAgd2UgZW5j b3VudGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICov CistICBzdG9yZWQgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBz aXplb2YgKHN0cnVjdCB0eXBlX3BhaXIpKTsKKysgICAgIHdlIGVuY291bnRlciB0aGlzIHR5cGUg YWdhaW4gZHVyaW5nIGEgcmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKKysgICAg IGJlIGFsbG9jYXRlZCBmcm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1vdmlu ZyBPQkpGSUxFLCB0aGlzCisrICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJlZSBp cyBjYWxsZWQgZm9yIGl0IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KKysgIHN0b3JlZCA9IHhtYWxs b2MgKHNpemVvZiAoKnN0b3JlZCkpOworICAgc3RvcmVkLT5vbGQgPSB0eXBlOworICAgc3RvcmVk LT5uZXcgPSBuZXdfdHlwZTsKKyAgICpzbG90ID0gc3RvcmVkOworQEAgLTMwNTksNiArMzIxOSwx OSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIFRZ UEVfT0JKRklMRV9PV05FRCAobmV3X3R5cGUpID0gMDsKKyAgIFRZUEVfT1dORVIgKG5ld190eXBl KS5nZGJhcmNoID0gZ2V0X3R5cGVfYXJjaCAodHlwZSk7CiAgCi0gICAgIGNhc2UgTE9DX09QVElN SVpFRF9PVVQ6Ci0tICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICBzZXRf dmFsdWVfb3B0aW1pemVkX291dCAodiwgMSk7Ci0tICAgICAgcmV0dXJuIHY7Ci0rICAgICAgewot KyAgICAgICAgc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKyAgLyog VFlQRV9NQUlOX1RZUEUgbWVtb3J5IGNvcHkgYWJvdmUgcmV3cm90ZSB0aGUgVFlQRV9ESVNDQVJE QUJMRSBmbGFnIHNvIHdlCisrICAgICBuZWVkIHRvIGluaXRpYWxpemUgaXQgYWdhaW4uICBBbmQg ZXZlbiBpZiBUWVBFIHdhcyBhbHJlYWR5IGRpc2NhcmRhYmxlCisrICAgICBORVdfVFlQRSBzbyBm YXIgaXMgbm90IHJlZ2lzdGVyZWQgaW4gVFlQRV9ESVNDQVJEQUJMRV9UQUJMRS4gICovCisrICBU WVBFX0RJU0NBUkRBQkxFIChuZXdfdHlwZSkgPSAwOworKyAgc2V0X3R5cGVfYXNfZGlzY2FyZGFi bGUgKG5ld190eXBlKTsKICsKLSsJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSsJc2V0X3Zh bHVlX29wdGltaXplZF9vdXQgKHYsIDEpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9Ci0gCi0gICAg IGRlZmF1bHQ6Ci0gICAgICAgZXJyb3IgKF8oIkNhbm5vdCBsb29rIHVwIHZhbHVlIG9mIGEgYm90 Y2hlZCBzeW1ib2wuIikpOwotICAgICAgIGJyZWFrOwotICAgICB9CisrICAvKiBQcmUtY2xlYXIg dGhlIGZpZWxkcyBwcm9jZXNzZWQgYnkgZGVsZXRlX21haW5fdHlwZS4gIElmIERXQVJGIGJsb2Nr CisrICAgICBldmFsdWF0aW9ucyBiZWxvdyBjYWxsIGVycm9yIHdlIHdvdWxkIGxlYXZlIGFuIHVu ZnJlZWFibGUgVFlQRS4gICovCisrICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSBOVUxM OworKyAgVFlQRV9WUFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSBOVUxMOworKyAgVFlQRV9ORklF TERTIChuZXdfdHlwZSkgPSAwOworKyAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IE5VTEw7Cisr CisgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKKyAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkgPSB4 c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKKyAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBlKSkK K0BAIC0zMDY3LDEyICszMjQwLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAorICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQRV9J TlNUQU5DRV9GTEFHUyAodHlwZSk7CisgICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQRV9M RU5HVEggKHR5cGUpOwogIAotLSAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFkZHIpOwotLSAgc2V0 X3ZhbHVlX2xhenkgKHYsIDEpOwotLSAgcmV0dXJuIHY7Ci0rICB7Ci0rICAgIHN0cnVjdCB2YWx1 ZSAqdjsKKysgIGlmIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKQorKyAgICB7CisrICAgICAg Z2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpKTsKICsKLSsgICAgLyog QUREUiBpcyBzZXQgaGVyZSBmb3IgQUxMT0NBVEVfVkFMVUUncyBDSEVDS19UWVBFREVGIGZvcgot KyAgICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTLiAgKi8KLSsgICAgb2JqZWN0X2FkZHJl c3Nfc2V0IChhZGRyKTsKLSsgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsgICAgVkFM VUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSsgICAgc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIGFk ZHIpOworKyAgICAgIGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FMTE9DQVRF RCAobmV3X3R5cGUpKSkKKysgICAgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpID0g MTsKKysgICAgICBUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgfQogKwot KyAgICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7CisrICBpZiAoVFlQRV9BU1NPQ0lBVEVEIChuZXdf dHlwZSkpCisrICAgIHsKKysgICAgICBnZGJfYXNzZXJ0ICghVFlQRV9OT1RfQVNTT0NJQVRFRCAo bmV3X3R5cGUpKTsKICsKLSsgICAgcmV0dXJuIHY7Ci0rICB9Ci0gfQotIAotIC8qIEluc3RhbGwg ZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciByZWdpc3RlciB2YWx1ZXMuICAqLwotQEAgLTYxMSwxMCAr NjM2LDExIEBAIHN0cnVjdCB2YWx1ZSAqCi0gdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5 cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKLSB7Ci0gICBz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChmcmFtZSk7Ci0tICBzdHJ1 Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVmICh0eXBlKTsKLSAgIHN0cnVjdCB2YWx1ZSAq djsKLSAKLS0gIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAoZ2RiYXJjaCwgcmVnbnVt LCB0eXBlMSkpCi0rICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CisrICAgICAgaWYgKCFk d2FyZl9sb2NleHByX2JhdG9uX2V2YWwgKFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpKSkKKysg ICAgICAgIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSA9IDE7CisrICAgICAgVFlQRV9B U1NPQ0lBVEVEIChuZXdfdHlwZSkgPSBOVUxMOworKyAgICB9CiArCi0rICBpZiAoZ2RiYXJjaF9j b252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZSkpCi0gICAgIHsKLSAgICAg ICAvKiBUaGUgSVNBL0FCSSBuZWVkIHRvIHNvbWV0aGluZyB3ZWlyZCB3aGVuIG9idGFpbmluZyB0 aGUKLSAgICAgICAgICBzcGVjaWZpZWQgdmFsdWUgZnJvbSB0aGlzIHJlZ2lzdGVyLiAgSXQgbWln aHQgbmVlZCB0bwotQEAgLTYyOCw3ICs2NTQsNyBAQCB2YWx1ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAg ICAgIFZBTFVFX0ZSQU1FX0lEICh2KSA9IGdldF9mcmFtZV9pZCAoZnJhbWUpOwotICAgICAgIFZB TFVFX1JFR05VTSAodikgPSByZWdudW07Ci0gICAgICAgZ2RiYXJjaF9yZWdpc3Rlcl90b192YWx1 ZSAoZ2RiYXJjaCwKLS0JCQkJIGZyYW1lLCByZWdudW0sIHR5cGUxLCB2YWx1ZV9jb250ZW50c19y YXcgKHYpKTsKLSsJCQkJIGZyYW1lLCByZWdudW0sIHR5cGUsIHZhbHVlX2NvbnRlbnRzX3JhdyAo dikpOwotICAgICB9Ci0gICBlbHNlCisrICBpZiAoIVRZUEVfREFUQV9MT0NBVElPTl9JU19BRERS IChuZXdfdHlwZSkKKysgICAgICAmJiBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5l d190eXBlKSkKKysgICAgeworKyAgICAgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBl KQorKyAgICAgICAgICB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrCVRZUEVf REFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgICBlbHNl CisrCXsKKysJICBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpID0gMTsKKysJ ICBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRv bl9ldmFsCisrCQkJCSAgICAoVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlw ZSkpOworKwl9CisrICAgIH0KKysKKyAgIC8qIENvcHkgdGhlIGZpZWxkcy4gICovCisgICBpZiAo VFlQRV9ORklFTERTICh0eXBlKSkKICAgICAgewotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQu aCBiL2dkYi9nZGJ0aHJlYWQuaAotaW5kZXggY2QyNGVhZi4uOTYzODM2OCAxMDA2NDQKLS0tLSBh L2dkYi9nZGJ0aHJlYWQuaAotKysrIGIvZ2RiL2dkYnRocmVhZC5oCi1AQCAtNjYsNiArNjYsOSBA QCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1l IGJyZWFrcG9pbnQuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFr cG9pbnQ7CisgICAgICAgaW50IGksIG5maWVsZHM7CiAgCi0rICAvKiBFeGNlcHRpb24tcmVzdW1l IGJyZWFrcG9pbnQuICAqLwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludDsKKysgICAgICAvKiBUWVBFX0NPREVfUkFOR0UgdXNlcyBUWVBFX1JBTkdFX0RB VEEgb2YgdGhlIHVuaW9uIHdpdGggVFlQRV9GSUVMRFMuICAqLworKyAgICAgIGdkYl9hc3NlcnQg KFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKTsKICsKLSAgIC8qIFJhbmdlIHRv IHNpbmdsZSBzdGVwIHdpdGhpbi4KLSAKLSAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVzcG9u ZCB0byBhIHNpbmdsZS1zdGVwIHNpZ25hbCBieSBjb250aW51aW5nCi1AQCAtMTg1LDYgKzE4OCwx MCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFzIGJl ZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCi0gICBpbnQgc3RvcF9yZXF1ZXN0 ZWQ7CisgICAgICAgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7CisrICAgICAgVFlQRV9O RklFTERTIChuZXdfdHlwZSkgPSBuZmllbGRzOworICAgICAgIFRZUEVfRklFTERTIChuZXdfdHlw ZSkgPSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3QgZmllbGQpOworICAgICAgIGZvciAoaSA9IDA7 IGkgPCBuZmllbGRzOyBpKyspCisgCXsKK0BAIC0zMDgxLDggKzMyOTAsOCBAQCBjb3B5X3R5cGVf cmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJICBUWVBFX0ZJRUxEX0JJVFNJ WkUgKG5ld190eXBlLCBpKSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7CisgCSAgaWYg KFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpCisgCSAgICBUWVBFX0ZJRUxEX1RZUEUgKG5ld190 eXBlLCBpKQorLQkgICAgICA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIFRZUEVfRklF TERfVFlQRSAodHlwZSwgaSksCistCQkJCSAgICAgY29waWVkX3R5cGVzKTsKKysJICAgICAgPSBj b3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSks CisrCQkJCSAgICAgICBjb3BpZWRfdHlwZXMpOworIAkgIGlmIChUWVBFX0ZJRUxEX05BTUUgKHR5 cGUsIGkpKQorIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkgPSAKKyAJICAgICAg eHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7CitAQCAtMzEwOSwyNCArMzMxOCwx NjYgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCX0K KyAgICAgfQogIAotKyAgLyogVGhlIGluaXRpYXRpbmcgZnJhbWUgb2YgYSBuZXh0aW5nIG9wZXJh dGlvbiwgdXNlZCBmb3IgZGVjaWRpbmcKLSsgICAgIHdoaWNoIGV4Y2VwdGlvbnMgdG8gaW50ZXJj ZXB0LiAgKi8KLSsgIHN0cnVjdCBmcmFtZV9pZCBpbml0aWF0aW5nX2ZyYW1lOworKyAgLyogQm90 aCBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9DSyBhbmQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lT X0NPVU5UIHdlcmUKKysgICAgIHBvc3NpYmx5IGNvbnZlcnRlZC4gICovCisrICBUWVBFX0RZTkFN SUMgKG5ld190eXBlKSA9IDA7CisrCisgICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJv dW5kcyBpbmZvcm1hdGlvbi4gKi8KKy0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09E RV9SQU5HRSkKKysgIGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0Up CisgICAgIHsKKyAgICAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9IHhtYWxsb2MgKHNp emVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOworICAgICAgICpUWVBFX1JBTkdFX0RBVEEgKG5l d190eXBlKSA9ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOworKworKyAgICAgIHN3aXRjaCAoVFlQ RV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9V TkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBi b3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUg Y29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5k IFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLwor KwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lB VEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAg eworKwkgICAgICAvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhvdyB0byBmaW5k IHRoZSBsYW5ndWFnZT8gICovCisrCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSAw OworKwkgICAgICBUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7CisrCSAg ICB9CisrCSAgZWxzZQorKwkgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IGR3YXJmX2xv Y2V4cHJfYmF0b25fZXZhbAorKwkJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51 LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQg PSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIGJyZWFrOworKwljYXNlIFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKKysJICB7CisrCSAgICBDT1JFX0FERFIgYWRkcjsKKysK KysJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBp dHMgb2JqZmlsZSBzbworKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFu dCBieSBDSEVDS19UWVBFREVGLgorKwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBF X05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgICAqLworKwkg ICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKKysJICAgICAgICAmJiAhIFRZ UEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCisrCSAg ICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCisrCQkgIChUWVBFX1JBTkdFX0RBVEEg KG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0LAorKwkJICAgVFlQRV9SQU5H RV9EQVRBIChuZXdfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QudHlwZSwgJmFkZHIpKQorKwkg ICAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gYWRkcjsKKysJICAgIGVsc2UKKysJICAg ICAgeworKwkJLyogV2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFuIGJ1dCBob3cgdG8gZmluZCB0 aGUgbGFuZ3VhZ2U/ICAqLworKwkJVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7CisrCQlU WVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7CisrCSAgICAgIH0KKysJICAg IFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRf Q09OU1RBTlQ7CisrCSAgfQorKwkgIGJyZWFrOworKwl9CisrCisrICAgICAgc3dpdGNoIChUWVBF X1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9V TkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBi b3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUg Y29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5k IFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLwor KwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lB VEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAg eworKwkgICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChu ZXdfdHlwZSkgLSAxOworKwkgICAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlw ZSkgPSAxOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5 cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJICAgICAgIChUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEg KG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICBi cmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAgeworKwkg ICAgQ09SRV9BRERSIGFkZHI7CisrCisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2Jh dG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0IGlzIGV4cGVj dGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICAgIFRZUEVf Tk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBU WVBFLgorKwkgICAgICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5 cGUpCisrCSAgICAgICAgJiYgISBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgJiYgaGFz X3N0YWNrX2ZyYW1lcyAoKQorKwkgICAgICAgICYmIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAor KwkJICAgICAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlz dC5sb2NsaXN0LAorKwkJICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUu ZHdhcmZfbG9jbGlzdC50eXBlLAorKwkJICAgICAgICZhZGRyKSkKKysJICAgICAgVFlQRV9ISUdI X0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAgZWxzZQorKwkgICAgICB7CisrCQlUWVBF X0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOwor KwkJVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKKysJICAgICAgfQor KwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5E X0tJTkRfQ09OU1RBTlQ7CisrCSAgfQorKwkgIGJyZWFrOworKwl9CisrCisrICAgICAgc3dpdGNo IChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZCkKKysJeworKwlj YXNlIFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ6CisrCSAgYnJlYWs7CisrCWNhc2UgUkFOR0Vf Qk9VTkRfS0lORF9EV0FSRl9CTE9DSzoKKysJICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uJyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICBpdCBpcyBleHBlY3Rl ZCB0byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCisrCSAgICAgVFlQRV9OT1Rf QUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUu CisrCSAgICAgKi8KKysJICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQ RV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpCisrCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1l cyAoKSkKKysJICAgIFRZUEVfQllURV9TVFJJREUgKG5ld190eXBlKSA9IDA7CisrCSAgZWxzZQor KwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9l dmFsCisrCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJm X2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2lu ZAorKwkgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIGJyZWFrOworKwljYXNl IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKKysJICB7CisrCSAgICBDT1JFX0FERFIg YWRkciA9IDA7CiArCi0gICAvKiBQcml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3Rv ciBpbXBsZW1lbnRhdGlvbi4gICovCi0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJp dmF0ZTsKLSAKLUBAIC0yMjEsNiArMjI4LDkgQEAgZXh0ZXJuIHZvaWQgZGVsZXRlX3RocmVhZF9z aWxlbnQgKHB0aWRfdCk7Ci0gLyogRGVsZXRlIGEgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCBmcm9t IHRoZSB0aHJlYWQgZGF0YWJhc2UuICovCi0gZXh0ZXJuIHZvaWQgZGVsZXRlX3N0ZXBfcmVzdW1l X2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRfaW5mbyAqKTsKLSAKLSsvKiBEZWxldGUgYW4gZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IGZyb20gdGhlIHRocmVhZCBkYXRhYmFzZS4gKi8KLStl eHRlcm4gdm9pZCBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhy ZWFkX2luZm8gKik7CisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0 b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJl IG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICAgIFRZUEVfTk9UX0FMTE9D QVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgorKwkg ICAgICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCisrCQkm JiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgp KQorKwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKKysJICAgICAgIChUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCisr CQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0 LnR5cGUsCisrCQkmYWRkcik7CisrCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBh ZGRyOworKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQK KysJICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIH0KKysJICBicmVhazsK KysJfQogKwotIC8qIFRyYW5zbGF0ZSB0aGUgaW50ZWdlciB0aHJlYWQgaWQgKEdEQidzIGhvbWVn cm93biBpZCwgbm90IHRoZSBzeXN0ZW0ncykKLSAgICBpbnRvIGEgInBpZCIgKHdoaWNoIG1heSBi ZSBvdmVybG9hZGVkIHdpdGggZXh0cmEgdGhyZWFkIGluZm9ybWF0aW9uKS4gICovCi0gZXh0ZXJu IHB0aWRfdCB0aHJlYWRfaWRfdG9fcGlkIChpbnQpOwotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBl cy5jIGIvZ2RiL2dkYnR5cGVzLmMKLWluZGV4IDQ0M2Y2ZjcuLmQ4NTJhMTQgMTAwNjQ0Ci0tLS0g YS9nZGIvZ2RidHlwZXMuYwotKysrIGIvZ2RiL2dkYnR5cGVzLmMKLUBAIC0zOSw2ICszOSw5IEBA Ci0gI2luY2x1ZGUgImNwLWFiaS5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0gI2luY2x1 ZGUgImhhc2h0YWIuaCIKLSsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKLSsjaW5jbHVkZSAiZHdhcmYy ZXhwci5oIgotKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKysgICAgICAvKiBDb252ZXJ0IFRZUEVf UkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCBpbnRvIGEgcmVndWxhciBib3VuZC4gICovCisrICAg ICAgaWYgKFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAobmV3X3R5cGUpKQorKwl7Cisr CSAgVFlQRV9ISUdIX0JPVU5EIChuZXdfdHlwZSkgPSBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUp CisrCQkJCSAgICAgICArIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpIC0gMTsKKysJICBUWVBF X1JBTkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSA9IDA7CisrCX0KKyAgICAgfQog IAorICAgLyogQ29weSBwb2ludGVycyB0byBvdGhlciB0eXBlcy4gICovCisgICBpZiAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSkpCisgICAgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IAor LSAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUsIAorLQkJCSAgIFRZUEVfVEFSR0VU X1RZUEUgKHR5cGUpLAorLQkJCSAgIGNvcGllZF90eXBlcyk7CisrICAgICAgY29weV90eXBlX3Jl Y3Vyc2l2ZV8xIChvYmpmaWxlLCAKKysJCQkgICAgIFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAor KwkJCSAgICAgY29waWVkX3R5cGVzKTsKKyAgIGlmIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUp KQorICAgICBUWVBFX1ZQVFJfQkFTRVRZUEUgKG5ld190eXBlKSA9IAorLSAgICAgIGNvcHlfdHlw ZV9yZWN1cnNpdmUgKG9iamZpbGUsCistCQkJICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSwK Ky0JCQkgICBjb3BpZWRfdHlwZXMpOworKyAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAob2Jq ZmlsZSwKKysJCQkgICAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCisrCQkJICAgICBjb3Bp ZWRfdHlwZXMpOworICAgLyogTWF5YmUgY29weSB0aGUgdHlwZV9zcGVjaWZpYyBiaXRzLgogIAot IC8qIEZsb2F0Zm9ybWF0IHBhaXJzLiAgKi8KLUBAIC0xMjMsNiArMTI2LDExIEBAIHN0YXRpYyB2 b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZpZWxkICosIGludCwgaW50KTsKLSBzdGF0aWMg dm9pZCBkdW1wX2ZuX2ZpZWxkbGlzdHMgKHN0cnVjdCB0eXBlICosIGludCk7Ci0gc3RhdGljIHZv aWQgcHJpbnRfY3BsdXNfc3R1ZmYgKHN0cnVjdCB0eXBlICosIGludCk7CisgICAgICBOT1RFIGRy b3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UK K0BAIC0zMTQzLDYgKzM0OTQsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsCisgICByZXR1cm4gbmV3X3R5cGU7CisgfQogIAotKy8qIFRoZSBoYXNoIHRh YmxlIGhvbGRpbmcgYWxsIGRpc2NhcmRhYmxlIGBzdHJ1Y3QgdHlwZSAqJyByZWZlcmVuY2VzLiAg Ki8KLStzdGF0aWMgaHRhYl90IHR5cGVfZGlzY2FyZGFibGVfdGFibGU7CisrLyogUmVjdXJzaXZl bHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVz aW5nCisrICAgbWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQg VFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwKKysgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3Nv Y2lhdGVkIHdpdGggT0JKRklMRS4gICovCiArCi0rLyogQ3VycmVudCB0eXBlX2Rpc2NhcmRhYmxl X2NoZWNrIHBhc3MgdXNlZCBmb3IgVFlQRV9ESVNDQVJEQUJMRV9BR0UuICAqLwotK3N0YXRpYyBp bnQgdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudDsKLSAKLSAvKiBBbGxvY2F0ZSBhIG5ldyBP QkpGSUxFLWFzc29jaWF0ZWQgdHlwZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3aXRoIHNv bWUgZGVmYXVsdHMuICBTcGFjZSBmb3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAot QEAgLTE1Myw2ICsxNjEsMzkgQEAgYWxsb2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUp Ci0gICByZXR1cm4gdHlwZTsKKytzdHJ1Y3QgdHlwZSAqCisrY29weV90eXBlX3JlY3Vyc2l2ZSAo c3RydWN0IHR5cGUgKnR5cGUsCisrCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCisreworKyAg cmV0dXJuIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgdHlwZSwg Y29waWVkX3R5cGVzKTsKKyt9CisrCisgLyogTWFrZSBhIGNvcHkgb2YgdGhlIGdpdmVuIFRZUEUs IGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCisgICAgdHlwZXMgYXJlIG5vdCBw cmVzZXJ2ZWQuCisgICAgCitAQCAtMzE2NSw2ICszNTI3LDE5OSBAQCBjb3B5X3R5cGUgKGNvbnN0 IHN0cnVjdCB0eXBlICp0eXBlKQorICAgcmV0dXJuIG5ld190eXBlOwogIH0KICAKLSsvKiBEZWNs YXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJl ZV9hbGxfdHlwZXMuCi0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFj aCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2Nh dGVkLiAgKi8KKysvKiBDYWxsYmFjayB0eXBlIGZvciBtYWluX3R5cGVfY3Jhd2wuICAqLworK3R5 cGVkZWYgaW50ICgqbWFpbl90eXBlX2NyYXdsX2l0ZXIpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9p ZCAqZGF0YSk7CisrCisrLyogSXRlcmF0ZSBhbGwgbWFpbl90eXBlIHN0cnVjdHVyZXMgcmVhY2hh YmxlIHRocm91Z2ggYW55IGBzdHJ1Y3QgdHlwZSAqJyBmcm9tCisrICAgVFlQRS4gIElURVIgd2ls bCBiZSBjYWxsZWQgb25seSBmb3Igb25lIHR5cGUgb2YgZWFjaCBtYWluX3R5cGUsIHVzZQorKyAg IFRZUEVfQ0hBSU4gdHJhdmVyc2FsIHRvIGZpbmQgYWxsIHRoZSB0eXBlIGluc3RhbmNlcy4gIElU RVIgaXMgYmVpbmcgY2FsbGVkCisrICAgZm9yIGVhY2ggbWFpbl90eXBlIGZvdW5kLiAgSVRFUiBy ZXR1cm5zIG5vbi16ZXJvIGlmIG1haW5fdHlwZV9jcmF3bCBzaG91bGQKKysgICBkZXB0aC1maXJz dCBlbnRlciB0aGUgc3BlY2lmaWMgdHlwZS4gIElURVIgbXVzdCBwcm92aWRlIHNvbWUgZGV0ZWN0 aW9uIGZvcgorKyAgIHJlZW50ZXJpbmcgdGhlIHNhbWUgbWFpbl90eXBlIGFzIHRoaXMgZnVuY3Rp b24gd291bGQgb3RoZXJ3aXNlIGVuZGxlc3NseQorKyAgIGxvb3AuICAqLwogKwogK3N0YXRpYyB2 b2lkCi0rc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK21haW5f dHlwZV9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9pdGVyIGl0ZXIs IHZvaWQgKmRhdGEpCiArewotKyAgdm9pZCAqKnNsb3Q7CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9p dGVyOworKyAgaW50IGk7CiArCi0rICBnZGJfYXNzZXJ0ICghVFlQRV9ESVNDQVJEQUJMRSAodHlw ZSkpOworKyAgaWYgKCF0eXBlKQorKyAgICByZXR1cm47CiArCi0rICBUWVBFX0RJU0NBUkRBQkxF ICh0eXBlKSA9IDE7Ci0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2Nh cmRhYmxlX2FnZV9jdXJyZW50OworKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9 PSBOVUxMKTsKICsKLSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90 YWJsZSwgdHlwZSwgSU5TRVJUKTsKLSsgIGdkYl9hc3NlcnQgKCEqc2xvdCk7Ci0rICAqc2xvdCA9 IHR5cGU7Ci0rfQorKyAgLyogYHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMg dW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gICovCisrICBnZGJfYXNzZXJ0ICgoVFlQRV9D T0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCisrCSAgICAgICAmJiBUWVBFX0NPREUgKHR5 cGUpICE9IFRZUEVfQ09ERV9VTklPTikKKysJICAgICAgfHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0 eXBlKSk7CiArCi0rLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0IHBy ZXNlcnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJFTlRfVFlQ RS4gICovCisrICBpZiAoISgqaXRlcikgKHR5cGUsIGRhdGEpKQorKyAgICByZXR1cm47CiArCi0r c3RhdGljIHN0cnVjdCB0eXBlICoKLSthbGxvY190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUg KnBhcmVudF90eXBlKQotK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVf Y29weSAocGFyZW50X3R5cGUpOworKyAgLyogSXRlcmF0ZSBhbGwgdGhlIHR5cGUgaW5zdGFuY2Vz IG9mIHRoaXMgbWFpbl90eXBlLiAgKi8KKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbworKyAg ICB7CisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9NQUlOX1RZUEUgKHR5cGVfaXRlcikgPT0gVFlQ RV9NQUlOX1RZUEUgKHR5cGUpKTsKICsKLSsgIGlmIChUWVBFX0RJU0NBUkRBQkxFIChwYXJlbnRf dHlwZSkpCi0rICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7CisrICAgICAg bWFpbl90eXBlX2NyYXdsIChUWVBFX1BPSU5URVJfVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOwor KyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9SRUZFUkVOQ0VfVFlQRSAodHlwZSksIGl0ZXIs IGRhdGEpOwogKwotKyAgcmV0dXJuIG5ld190eXBlOworKyAgICAgIHR5cGVfaXRlciA9IFRZUEVf Q0hBSU4gKHR5cGVfaXRlcik7CisrICAgIH0KKysgIHdoaWxlICh0eXBlX2l0ZXIgIT0gdHlwZSk7 CisrCisrICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgaSsrKQorKyAgICBt YWluX3R5cGVfY3Jhd2wgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksIGl0ZXIsIGRhdGEpOwor KworKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwgaXRlciwgZGF0 YSk7CisrICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksIGl0ZXIs IGRhdGEpOwogK30KICsKLSAvKiBBbGxvY2F0ZSBhIG5ldyBHREJBUkNILWFzc29jaWF0ZWQgdHlw ZSBzdHJ1Y3R1cmUgYW5kIGZpbGwgaXQKLSAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBm b3IgdGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAotICAgIG9uIHRoZSBoZWFwLiAgKi8K LUBAIC0yNzgsNyArMzE5LDcgQEAgbWFrZV9wb2ludGVyX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBl LCBzdHJ1Y3QgdHlwZSAqKnR5cGVwdHIpCi0gCi0gICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBl cHRyID09IDApCS8qIFdlJ2xsIG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KLSAgICAgewotLSAg ICAgIG50eXBlID0gYWxsb2NfdHlwZV9jb3B5ICh0eXBlKTsKLSsgICAgICBudHlwZSA9IGFsbG9j X3R5cGVfYXNfcGFyZW50ICh0eXBlKTsKLSAgICAgICBpZiAodHlwZXB0cikKLSAJKnR5cGVwdHIg PSBudHlwZTsKLSAgICAgfQotQEAgLTM1NSw3ICszOTYsNyBAQCBtYWtlX3JlZmVyZW5jZV90eXBl IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5 cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9u ZS4gICovCi0gICAgIHsKLS0gICAgICBudHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0r ICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5 cGVwdHIpCi0gCSp0eXBlcHRyID0gbnR5cGU7Ci0gICAgIH0KLUBAIC03MjYsNiArNzY3LDcgQEAg Y3JlYXRlX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwgc3RydWN0IHR5cGUg KmluZGV4X3R5cGUsCi0gICAgIFRZUEVfWkFMTE9DIChyZXN1bHRfdHlwZSwgc2l6ZW9mIChzdHJ1 Y3QgcmFuZ2VfYm91bmRzKSk7Ci0gICBUWVBFX0xPV19CT1VORCAocmVzdWx0X3R5cGUpID0gbG93 X2JvdW5kOwotICAgVFlQRV9ISUdIX0JPVU5EIChyZXN1bHRfdHlwZSkgPSBoaWdoX2JvdW5kOwot KyAgVFlQRV9CWVRFX1NUUklERSAocmVzdWx0X3R5cGUpID0gMDsKLSAKLSAgIGlmIChsb3dfYm91 bmQgPj0gMCkKLSAgICAgVFlQRV9VTlNJR05FRCAocmVzdWx0X3R5cGUpID0gMTsKLUBAIC04MjUs MjYgKzg2Nyw0NSBAQCBjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3VsdF90eXBl LAotIAotICAgVFlQRV9DT0RFIChyZXN1bHRfdHlwZSkgPSBUWVBFX0NPREVfQVJSQVk7Ci0gICBU WVBFX1RBUkdFVF9UWVBFIChyZXN1bHRfdHlwZSkgPSBlbGVtZW50X3R5cGU7Ci0tICBpZiAoZ2V0 X2Rpc2NyZXRlX2JvdW5kcyAocmFuZ2VfdHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQpIDwg MCkKLS0gICAgbG93X2JvdW5kID0gaGlnaF9ib3VuZCA9IDA7Ci0tICBDSEVDS19UWVBFREVGIChl bGVtZW50X3R5cGUpOwotLSAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxl bmd0aC4gIEFkYSBhcnJheXMgY2FuIGJlCi0tICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGln aF9ib3VuZCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KLS0gICAgIEluIHN1Y2gg Y2FzZXMsIHRoZSBhcnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICAqLwotLSAgaWYgKGhpZ2hf Ym91bmQgPCBsb3dfYm91bmQpCi0tICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwot LSAgZWxzZQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0KLS0gICAgICBUWVBFX0xF TkdUSCAoZWxlbWVudF90eXBlKSAqIChoaWdoX2JvdW5kIC0gbG93X2JvdW5kICsgMSk7Ci0gICBU WVBFX05GSUVMRFMgKHJlc3VsdF90eXBlKSA9IDE7Ci0gICBUWVBFX0ZJRUxEUyAocmVzdWx0X3R5 cGUpID0KLSAgICAgKHN0cnVjdCBmaWVsZCAqKSBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNp emVvZiAoc3RydWN0IGZpZWxkKSk7Ci0gICBUWVBFX0lOREVYX1RZUEUgKHJlc3VsdF90eXBlKSA9 IHJhbmdlX3R5cGU7Ci0gICBUWVBFX1ZQVFJfRklFTEROTyAocmVzdWx0X3R5cGUpID0gLTE7Ci0g Ci0tICAvKiBUWVBFX0ZMQUdfVEFSR0VUX1NUVUIgd2lsbCB0YWtlIGNhcmUgb2YgemVybyBsZW5n dGggYXJyYXlzICovCi0rICAvKiBEV0FSRiBibG9ja3MgbWF5IGRlcGVuZCBvbiBydW50aW1lIGlu Zm9ybWF0aW9uIGxpa2UKLSsgICAgIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1Mgbm90IGJlaW5n IGF2YWlsYWJsZSBkdXJpbmcgdGhlCi0rICAgICBDUkVBVEVfQVJSQVlfVFlQRSB0aW1lLiAgKi8K LSsgIGlmIChUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCAhPSBSQU5HRV9C T1VORF9LSU5EX0NPTlNUQU5UCi0rICAgICAgfHwgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBl KS0+aGlnaC5raW5kICE9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQKLSsgICAgICB8fCBUWVBF X0xPV19CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpIAotKyAgICAgIHx8IFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpIAotKyAgICAgIHx8IGdldF9kaXNjcmV0ZV9ib3Vu ZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi0rICAgIHsKLSsg ICAgICBsb3dfYm91bmQgPSAwOwotKyAgICAgIGhpZ2hfYm91bmQgPSAtMTsKLSsgICAgfQorKy8q IEEgaGVscGVyIGZvciBkZWxldGVfdHlwZSB3aGljaCBkZWxldGVzIGEgbWFpbl90eXBlIGFuZCB0 aGUgdGhpbmdzIHRvIHdoaWNoCisrICAgaXQgcmVmZXJzLiAgVFlQRSBpcyBhIHR5cGUgd2hvc2Ug bWFpbl90eXBlIHdlIHdpc2ggdG8gZGVzdHJveS4gICovCiArCi0rICAvKiBCZSBjYXJlZnVsIHdo ZW4gc2V0dGluZyB0aGUgYXJyYXkgbGVuZ3RoLiAgQWRhIGFycmF5cyBjYW4gYmUKLSsgICAgIGVt cHR5IGFycmF5cyB3aXRoIHRoZSBoaWdoX2JvdW5kIGJlaW5nIHNtYWxsZXIgdGhhbiB0aGUgbG93 X2JvdW5kLgotKyAgICAgSW4gc3VjaCBjYXNlcywgdGhlIGFycmF5IGxlbmd0aCBzaG91bGQgYmUg emVyby4gIFRZUEVfVEFSR0VUX1NUVUIgbmVlZHMgdG8KLSsgICAgIGJlIGNoZWNrZWQgYXMgaXQg bWF5IGhhdmUgZGVwZW5kZW5jaWVzIG9uIERXQVJGIGJsb2NrcyBkZXBlbmRpbmcgb24KLSsgICAg IHJ1bnRpbWUgaW5mb3JtYXRpb24gbm90IGF2YWlsYWJsZSBkdXJpbmcgdGhlIENSRUFURV9BUlJB WV9UWVBFIHRpbWUuICAqLwotKyAgaWYgKGhpZ2hfYm91bmQgPCBsb3dfYm91bmQgfHwgVFlQRV9U QVJHRVRfU1RVQiAoZWxlbWVudF90eXBlKSkKLSsgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBl KSA9IDA7Ci0rICBlbHNlCisrc3RhdGljIHZvaWQKKytkZWxldGVfbWFpbl90eXBlIChzdHJ1Y3Qg dHlwZSAqdHlwZSkKKyt7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FS REFCTEUgKHR5cGUpKTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVM TCk7CisrCisrICB4ZnJlZSAoVFlQRV9OQU1FICh0eXBlKSk7CisrICB4ZnJlZSAoVFlQRV9UQUdf TkFNRSAodHlwZSkpOworKworKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7 ICsraSkKICsgICAgewotKyAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7Ci0rICAg ICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0rCVRZUEVfTEVOR1RIIChlbGVtZW50X3R5 cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKKysgICAgICB4ZnJlZSAoVFlQRV9G SUVMRF9OQU1FICh0eXBlLCBpKSk7CisrCisrICAgICAgaWYgKFRZUEVfRklFTERfTE9DX0tJTkQg KHR5cGUsIGkpID09IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FKQorKwl4ZnJlZSAoVFlQRV9GSUVM RF9TVEFUSUNfUEhZU05BTUUgKHR5cGUsIGkpKTsKICsgICAgfQorKyAgeGZyZWUgKFRZUEVfRklF TERTICh0eXBlKSk7CiArCi0gICBpZiAoVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9PSAwKQot LSAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAgZ2RiX2Fzc2VydCAo IUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7CisrCisrICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUg KHR5cGUpKTsKKyt9CisrCisrLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2VzIG9uIFRZUEVfQ0hB SU4gb2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKKysgICBtYWluX3R5cGUuICBU WVBFIG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJtYW5lbnQgbm9yIG9i amZpbGUKKysgICBhc3NvY2lhdGVkLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2RlbGV0ZV90eXBl X2NoYWluIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyt7CisrICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVy LCAqdHlwZV9pdGVyX3RvX2ZyZWU7CisrCisrICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxF ICh0eXBlKSk7CisrICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwor KworKyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7CisrCisrICB0eXBlX2l0ZXIgPSB0eXBlOwor KyAgZG8KICsgICAgewotKyAgICAgIC8qIFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBm b3Igc3BlY2lmaWMgaW5zdGFuY2VzIGJ5Ci0rCSBDSEVDS19UWVBFREVGLiAgKi8KLSsgICAgICBU WVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOworKyAgICAgIHR5cGVfaXRlcl90b19m cmVlID0gdHlwZV9pdGVyOworKyAgICAgIHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRl cik7CisrICAgICAgeGZyZWUgKHR5cGVfaXRlcl90b19mcmVlKTsKICsgICAgfQotIAotICAgcmV0 dXJuIHJlc3VsdF90eXBlOwotIH0KLUBAIC0xMzUzLDYgKzE0MTQsMTA1IEBAIHN0dWJfbm9uYW1l X2NvbXBsYWludCAodm9pZCkKLSAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygi c3R1YiB0eXBlIGhhcyBOVUxMIG5hbWUiKSk7Ci0gfQotIAotKy8qIENhbGN1bGF0ZSB0aGUgbWVt b3J5IGxlbmd0aCBvZiBhcnJheSBUWVBFLgorKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsK Kyt9CiArCi0rICAgVEFSR0VUX1RZUEUgc2hvdWxkIGJlIHNldCB0byBgY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpJyBhcwotKyAgIGEgcGVyZm9ybWFuY2UgaGludC4gIEZl ZWwgZnJlZSB0byBwYXNzIE5VTEwuICBTZXQgRlVMTF9TUEFOIHRvIHJldHVybiB0aGUKLSsgICBz aXplIGluY2wuIHRoZSBwb3NzaWJsZSBwYWRkaW5nIG9mIHRoZSBsYXN0IGVsZW1lbnQgLSBpdCBt YXkgZGlmZmVyIGZyb20gdGhlCi0rICAgY2xlYXJlZCBGVUxMX1NQQU4gcmV0dXJuIHZhbHVlICh0 aGUgZXhwZWN0ZWQgU0laRU9GKSBmb3Igbm9uLXplcm8KLSsgICBUWVBFX0JZVEVfU1RSSURFIHZh bHVlcy4gICovCisrLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZS4g ICovCiArCi0rc3RhdGljIExPTkdFU1QKLSt0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4pCisrc3RhdGljIGhh c2h2YWxfdAorK3R5cGVfZGlzY2FyZGFibGVfaGFzaCAoY29uc3Qgdm9pZCAqcCkKICt7Ci0rICBz dHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSsgIExPTkdFU1QgYnl0ZV9zdHJpZGUgPSAwOwkvKiBg PSAwJyBmb3IgYSBmYWxzZSBHQ0Mgd2FybmluZy4gICovCi0rICBMT05HRVNUIGNvdW50LCBlbGVt ZW50X3NpemUsIHJldHZhbDsKKysgIGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlID0gcDsKICsKLSsg IGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9BUlJBWQotKyAgICAgICYmIFRZUEVf Q09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1NUUklORykKLSsgICAgcmV0dXJuIFRZUEVfTEVOR1RI ICh0eXBlKTsKKysgIHJldHVybiBodGFiX2hhc2hfcG9pbnRlciAoVFlQRV9NQUlOX1RZUEUgKHR5 cGUpKTsKKyt9CiArCi0rICAvKiBBdm9pZCBleGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBp bnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCi0rICAgICBGb3J0cmFuIGFycmF5cy4g IFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKLSsg ICAgIHplcm8tbGVuZ3RoLiAgKi8KLSsgIGlmIChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxp ZCAodHlwZSkpCi0rICAgIHJldHVybiAwOworKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBl X2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KICsKLSsgIHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZ UEUgKHR5cGUpOwotKyAgaWYgKFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAocmFuZ2VfdHlwZSkK LSsgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSkKKytzdGF0 aWMgaW50CisrdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYikKKyt7CisrICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7CisrICBjb25zdCBzdHJ1 Y3QgdHlwZSAqcmlnaHQgPSBiOworKworKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9 PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOworK30KKysKKysvKiBBIGhlbHBlciBmb3IgdHlwZV9t YXJrX3VzZWQuICAqLworKworK3N0YXRpYyBpbnQKKyt0eXBlX21hcmtfdXNlZF9jcmF3bCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKKyt7CisrICBpZiAoIVRZUEVfRElTQ0FSREFC TEUgKHR5cGUpKQogKyAgICByZXR1cm4gMDsKLSsgIGNvdW50ID0gVFlQRV9ISUdIX0JPVU5EIChy YW5nZV90eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7Ci0rICAvKiBJdCBt YXkgaGFwcGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2FyYmFnZSBk YXRhLiAgKi8KLSsgIGlmIChjb3VudCA8IDApCi0rICAgIHdhcm5pbmcgKF8oIlJhbmdlIGZvciB0 eXBlICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKLSsJICAgICBUWVBFX05BTUUgKHR5 cGUpLCBwbG9uZ2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKLSsJICAgICBwbG9u Z2VzdCAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOwotKyAgLyogVGhlIGNvZGUgYmVs b3cgZG9lcyBub3QgaGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLwotKyAgaWYgKGNvdW50IDw9 IDApCisrCisrICBpZiAoVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5cGUpID09IHR5cGVfZGlzY2Fy ZGFibGVfYWdlX2N1cnJlbnQpCiArICAgIHJldHVybiAwOwotKyAgaWYgKGZ1bGxfc3BhbiB8fCBj b3VudCA+IDEpCi0rICAgIHsKLSsgICAgICAvKiBXZSBkbyBub3QgdXNlIFRZUEVfQVJSQVlfQllU RV9TVFJJREVfVkFMVUUgKHR5cGUpIGhlcmUgYXMgd2Ugd2FudCB0bwotKyAgICAgICAgIGZvcmNl IEZVTExfU1BBTiB0byAxLiAgKi8KLSsgICAgICBieXRlX3N0cmlkZSA9IFRZUEVfQllURV9TVFJJ REUgKHJhbmdlX3R5cGUpOwotKyAgICAgIGlmIChieXRlX3N0cmlkZSA9PSAwKQotKyAgICAgICAg ewotKwkgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQotKwkgICAgdGFyZ2V0X3R5cGUgPSBjaGVj a190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rCSAgYnl0ZV9zdHJpZGUgPSB0 eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsJfQotKyAgICB9CiArCi0r ICAvKiBGb3Igbm93LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8g YmUgMCBpZiBpdHMgbGVuZ3RoCi0rICAgICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVs b3cgYXNzdW1lcyB0aGF0IGZvciB4IDwgMCwKLSsgICAgIChVTE9OR0VTVCkgeCA9PSAteCArIFVM T05HRVNUX01BWCArIDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCi0rICAg ICBieSBDLCBidXQgaXMgdXN1YWxseSB0cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYg eCB3ZXJlIHVuc2lnbmVkCi0rICAgICB3aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVz ZXMgdGhlIGZhY3QgdGhhdCBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcwotKyAgICAgYWx3YXlzIHJl cHJlc2VudGFibGUgaW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQr MQotKyAgICAgb3ZlcmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRo ZXNlIHRlc3RzIGlmIHdlIGRlY2lkZSB0bwotKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0 aW9uIG9mIFRZUEVfTEVOR1RIIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULgotKyAgICAg Ki8KKysgIFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdl X2N1cnJlbnQ7CiArCi0rICBpZiAoZnVsbF9zcGFuKQotKyAgICB7Ci0rICAgICAgcmV0dmFsID0g Y291bnQgKiBieXRlX3N0cmlkZTsKLSsgICAgICBpZiAoY291bnQgPT0gMCB8fCByZXR2YWwgLyBj b3VudCAhPSBieXRlX3N0cmlkZSB8fCByZXR2YWwgPiBVSU5UX01BWCkKLSsJcmV0dmFsID0gMDsK LSsgICAgICByZXR1cm4gcmV0dmFsOwotKyAgICB9Ci0rICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVM TCkKLSsgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0 eXBlKSk7Ci0rICBlbGVtZW50X3NpemUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBO VUxMLCAxKTsKLSsgIHJldHZhbCA9IChjb3VudCAtIDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50 X3NpemU7Ci0rICBpZiAocmV0dmFsIDwgZWxlbWVudF9zaXplCi0rICAgICAgfHwgKGJ5dGVfc3Ry aWRlICE9IDAKLSsgICAgICAgICAgJiYgKHJldHZhbCAtIGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0 cmlkZSAhPSBjb3VudCAtIDEpCi0rICAgICAgfHwgcmV0dmFsID4gVUlOVF9NQVgpCi0rICAgIHJl dHZhbCA9IDA7Ci0rICByZXR1cm4gcmV0dmFsOworKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNh bC4gICovCisrICByZXR1cm4gMTsKICt9CiArCi0rLyogUHJlcGFyZSBUWVBFIGFmdGVyIGJlaW5n IHJlYWQgaW4gYnkgdGhlIGJhY2tlbmQuICBDdXJyZW50bHkgdGhpcyBmdW5jdGlvbgotKyAgIG9u bHkgcHJvcGFnYXRlcyB0aGUgVFlQRV9EWU5BTUlDIGZsYWcuICAqLworKy8qIE1hcmsgVFlQRSBh bmQgaXRzIGNvbm5lY3RlZCB0eXBlcyBhcyB1c2VkIGluIHRoaXMgZnJlZV9hbGxfdHlwZXMgcGFz cy4gICovCiArCiArdm9pZAotK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK3R5 cGVfbWFya191c2VkIChzdHJ1Y3QgdHlwZSAqdHlwZSkKICt7Ci0rICBpbnQgaTsKKysgIGlmICh0 eXBlID09IE5VTEwpCisrICAgIHJldHVybjsKICsKLSsgIGZvciAoaSA9IDA7IGkgPCBUWVBFX05G SUVMRFMgKHR5cGUpOyArK2kpCi0rICAgIGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpICYm IFRZUEVfRFlOQU1JQyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkpCi0rICAgICAgYnJlYWs7 CisrICBpZiAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKQorKyAgICByZXR1cm47CiArCi0rICAv KiBGSVhNRTogY3BsdXNfc3R1ZmYgaXMgaWdub3JlZCBoZXJlLiAgKi8KLSsgIGlmIChpIDwgVFlQ RV9ORklFTERTICh0eXBlKQotKyAgICAgIHx8IChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpICYm IFRZUEVfRFlOQU1JQyAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkpCi0rICAgICAgfHwgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpICYmIFRZUEVfRFlOQU1JQyAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpKSkKLSsgICAgVFlQRV9EWU5BTUlDICh0eXBlKSA9IDE7CisrICBtYWluX3R5cGVfY3Jh d2wgKHR5cGUsIHR5cGVfbWFya191c2VkX2NyYXdsLCBOVUxMKTsKICt9CiArCi0gLyogQWRkZWQg YnkgQnJ5YW4gQm9yZWhhbSwgS2V3aWxsLCBTdW4gU2VwIDE3IDE4OjA3OjE3IDE5ODkuCi0gCi0g ICAgSWYgdGhpcyBpcyBhIHN0dWJiZWQgc3RydWN0IChpLmUuIGRlY2xhcmVkIGFzIHN0cnVjdCBm b28gKiksIHNlZSBpZgotQEAgLTE0ODYsNTIgKzE2NDYsMzYgQEAgY2hlY2tfdHlwZWRlZiAoc3Ry dWN0IHR5cGUgKnR5cGUpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gIGlmIChUWVBFX1RBUkdF VF9TVFVCICh0eXBlKSkKLSsgIC8qIGNvcHlfdHlwZV9yZWN1cnNpdmUgYXV0b21hdGljYWxseSBt YWtlcyB0aGUgcmVzdWx0aW5nIHR5cGUgY29udGFpbmluZyBvbmx5Ci0rICAgICBjb25zdGFudCB2 YWx1ZXMgZXhwZWN0ZWQgYnkgdGhlIGNhbGxlcnMgb2YgdGhpcyBmdW5jdGlvbi4gICovCi0rICBp ZiAoVFlQRV9EWU5BTUlDICh0eXBlKSkKLSsgICAgewotKyAgICAgIGh0YWJfdCBjb3BpZWRfdHlw ZXM7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xkID0gdHlwZTsKKysvKiBBIHRyYXZlcnNl IGNhbGxiYWNrIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55Cisr ICAgdHlwZV9kaXNjYXJkYWJsZSB3aG9zZSByZWZlcmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVu dXNlZCBsaW5rKS4gICovCiArCi0rICAgICAgY29waWVkX3R5cGVzID0gY3JlYXRlX2NvcGllZF90 eXBlc19oYXNoIChOVUxMKTsKLSsgICAgICB0eXBlID0gY29weV90eXBlX3JlY3Vyc2l2ZSAodHlw ZSwgY29waWVkX3R5cGVzKTsKLSsgICAgICBodGFiX2RlbGV0ZSAoY29waWVkX3R5cGVzKTsKKytz dGF0aWMgaW50CisrdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUgKHZvaWQgKipzbG90LCB2b2lkICp1 bnVzZWQpCisreworKyAgc3RydWN0IHR5cGUgKnR5cGUgPSAqc2xvdDsKICsKLSsgICAgICBnZGJf YXNzZXJ0IChUWVBFX0RZTkFNSUMgKHR5cGUpID09IDApOworKyAgZ2RiX2Fzc2VydCAoVFlQRV9E SVNDQVJEQUJMRSAodHlwZSkpOworKworKyAgaWYgKFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBl KSAhPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50KQorKyAgICB7CisrICAgICAgZGVsZXRl X3R5cGVfY2hhaW4gKHR5cGUpOworKworKyAgICAgIGh0YWJfY2xlYXJfc2xvdCAodHlwZV9kaXNj YXJkYWJsZV90YWJsZSwgc2xvdCk7CiArICAgIH0KICsKLSsgIGlmIChUWVBFX1RBUkdFVF9TVFVC ICh0eXBlKSB8fCBUWVBFX0RZTkFNSUMgKHR5cGUpKQotICAgICB7Ci0tICAgICAgc3RydWN0IHR5 cGUgKnJhbmdlX3R5cGU7Ci0gICAgICAgc3RydWN0IHR5cGUgKnRhcmdldF90eXBlID0gY2hlY2tf dHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSkpOwotIAotKyAgICAgIGlmIChUWVBFX0RZ TkFNSUMgKHR5cGUpKQotKwlUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSA9IHRhcmdldF90eXBlOwot ICAgICAgIGlmIChUWVBFX1NUVUIgKHRhcmdldF90eXBlKSB8fCBUWVBFX1RBUkdFVF9TVFVCICh0 YXJnZXRfdHlwZSkpCi0gCXsKLSAJICAvKiBFbXB0eS4gICovCi0gCX0KLSAgICAgICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQotLQkgICAgICAgJiYgVFlQRV9O RklFTERTICh0eXBlKSA9PSAxCi0tCSAgICAgICAmJiAoVFlQRV9DT0RFIChyYW5nZV90eXBlID0g VFlQRV9JTkRFWF9UWVBFICh0eXBlKSkKLS0JCSAgID09IFRZUEVfQ09ERV9SQU5HRSkpCi0rCSAg ICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcpCi0gCXsKLSAJICAv KiBOb3cgcmVjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHR5cGUsIGJhc2VkIG9uIGl0 cwotLQkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3Ro LgotLQkgICAgIFdhdGNoIG91dCBmb3IgQWRhIG51bGwgQWRhIGFycmF5cyB3aGVyZSB0aGUgaGln aCBib3VuZAotLQkgICAgIGlzIHNtYWxsZXIgdGhhbiB0aGUgbG93IGJvdW5kLiAqLwotLQkgIGNv bnN0IExPTkdFU1QgbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpOwotLQkg IGNvbnN0IExPTkdFU1QgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSk7 Ci0tCSAgVUxPTkdFU1QgbGVuOwotLQotLQkgIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kKQot LQkgICAgbGVuID0gMDsKLS0JICBlbHNlCi0tCSAgICB7Ci0tCSAgICAgIC8qIEZvciBub3csIHdl IGNvbnNlcnZhdGl2ZWx5IHRha2UgdGhlIGFycmF5IGxlbmd0aCB0byBiZSAwCi0tCQkgaWYgaXRz IGxlbmd0aCBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcwotLQkJIHRo YXQgZm9yIHggPCAwLCAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLAotLQkJ IHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkIGJ5IEMsIGJ1dCBpcyB1c3VhbGx5 IHRydWUKLS0JCSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZCB3 aXRoIGl0cwotLQkJIGhpZ2gtb3JkZXIgYml0IG9uKS4gSXQgdXNlcyB0aGUgZmFjdCB0aGF0Ci0t CQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2VudGFibGUgaW4KLS0JCSBV TE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92ZXJmbG93cywKLS0J CSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIAot LQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgVFlQRV9MRU5HVEgK LS0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gKi8KLS0JICAgICAgVUxPTkdFU1Qg dWxvdyA9IGxvd19ib3VuZCwgdWhpZ2ggPSBoaWdoX2JvdW5kOwotLQkgICAgICBVTE9OR0VTVCB0 bGVuID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKLS0KLS0JICAgICAgbGVuID0gdGxlbiAq ICh1aGlnaCAtIHVsb3cgKyAxKTsKLS0JICAgICAgaWYgKHRsZW4gPT0gMCB8fCAobGVuIC8gdGxl biAtIDEgKyB1bG93KSAhPSB1aGlnaCAKLS0JCSAgfHwgbGVuID4gVUlOVF9NQVgpCi0tCQlsZW4g PSAwOwotLQkgICAgfQotLQkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IGxlbjsKLSsJICAgICBudW1i ZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4gICovCi0rCSAgVFlQ RV9MRU5HVEggKHR5cGUpID0gdHlwZV9sZW5ndGhfZ2V0ICh0eXBlLCB0YXJnZXRfdHlwZSwgMCk7 Ci0gCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOwotIAl9Ci0gICAgICAgZWxzZSBpZiAo VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCi1AQCAtMTUzOSw5ICsxNjgzLDEy IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0eXBlICp0eXBlKQotIAkgIFRZUEVfTEVOR1RIICh0 eXBlKSA9IFRZUEVfTEVOR1RIICh0YXJnZXRfdHlwZSk7Ci0gCSAgVFlQRV9UQVJHRVRfU1RVQiAo dHlwZSkgPSAwOwotIAl9Ci0rICAgICAgVFlQRV9EWU5BTUlDICh0eXBlKSA9IDA7Ci0gICAgIH0K KysgIHJldHVybiAxOworK30KKysKKysvKiBGcmVlIGFsbCB0aGUgcmVjbGFpbWFibGUgdHlwZXMg dGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGFuZCB0aGF0IGhhdmUKKysgICBjdXJyZW50bHkgemVy byByZWZlcmVuY2UgY291bnRlci4KKysKKysgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhZnRl ciBlYWNoIGNvbW1hbmQsIHN1Y2Nlc3NmdWwgb3Igbm90LiAgVXNlIHRoaXMKKysgICBjbGVhbnVw IG9ubHkgaW4gdGhlIEdEQiBpZGxlIHN0YXRlIGFzIEdEQiBvbmx5IG1hcmtzIHRob3NlIHR5cGVz IHVzZWQgYnkKKysgICBnbG9iYWxseSB0cmFja2VkIG9iamVjdHMgKHdpdGggbm8gYXV0b3Zhcmlh YmxlIHJlZmVyZW5jZXMgdHJhY2tpbmcpLiAgKi8KICsKLSAgIC8qIENhY2hlIFRZUEVfTEVOR1RI IGZvciBmdXR1cmUgdXNlLiAgKi8KLSAgIFRZUEVfTEVOR1RIIChvcmlnX3R5cGUpID0gVFlQRV9M RU5HVEggKHR5cGUpOworK3ZvaWQKKytmcmVlX2FsbF90eXBlcyAodm9pZCkKKyt7CisrICAvKiBN YXJrIGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJlIHZpc2l0 ZWQgYWZ0ZXIgZWFjaAorKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxlIGVudHJp ZXMgYWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCisrICAgICB2YWx1ZS4gICovCisrICB0 eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7CiArCi0gICByZXR1cm4gdHlwZTsKLSB9 Ci0gCi1AQCAtMTgxMSw2ICsxOTU4LDggQEAgaW5pdF90eXBlIChlbnVtIHR5cGVfY29kZSBjb2Rl LCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCi0gICAgIFRZUEVfTk9UVEVYVCAodHlwZSkgPSAxOwot ICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFKQotICAgICBUWVBFX0ZJWEVE X0lOU1RBTkNFICh0eXBlKSA9IDE7Ci0rICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfR05VX0lGVU5D KQotKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAxOworKyAgb2JzZXJ2ZXJfbm90aWZ5X21h cmtfdXNlZCAoKTsKKysKKysgIGh0YWJfdHJhdmVyc2UgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUs IHR5cGVfZGlzY2FyZGFibGVfcmVtb3ZlLCBOVUxMKTsKKyt9CiAgCi0gICBpZiAobmFtZSkKLSAg ICAgVFlQRV9OQU1FICh0eXBlKSA9IG9ic2F2ZXN0cmluZyAobmFtZSwgc3RybGVuIChuYW1lKSwK LUBAIC0zMDA2LDMzICszMTU1LDQyIEBAIHR5cGVfcGFpcl9lcSAoY29uc3Qgdm9pZCAqaXRlbV9s aHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQotIH0KKyAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGlu aXRpYWxpemUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8KICAKLSAvKiBBbGxvY2F0 ZSB0aGUgaGFzaCB0YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsawotLSAg IHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gIFdlIHVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVj YXVzZQotLSAgIE9CSkZJTEUgaXMgYWJvdXQgdG8gYmUgZGVsZXRlZC4gICovCi0rICAgdHlwZXMg d2l0aG91dCBkdXBsaWNhdGVzLiAgICovCitAQCAtMzUxMSw2ICs0MDY2LDggQEAgZ2RidHlwZXNf cG9zdF9pbml0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgICAgPSBsb29rdXBfcG9pbnRl cl90eXBlIChidWlsdGluX3R5cGUtPmJ1aWx0aW5fdm9pZCk7CisgICBidWlsdGluX3R5cGUtPmJ1 aWx0aW5fZnVuY19wdHIKKyAgICAgPSBsb29rdXBfcG9pbnRlcl90eXBlIChsb29rdXBfZnVuY3Rp b25fdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpKTsKKysgIGJ1aWx0aW5fdHlwZS0+ YnVpbHRpbl9mdW5jX2Z1bmMKKysgICAgPSBsb29rdXBfZnVuY3Rpb25fdHlwZSAoYnVpbHRpbl90 eXBlLT5idWlsdGluX2Z1bmNfcHRyKTsKICAKLSBodGFiX3QKLSBjcmVhdGVfY29waWVkX3R5cGVz X2hhc2ggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorICAgLyogVGhpcyB0eXBlIHJlcHJlc2Vu dHMgYSBHREIgaW50ZXJuYWwgZnVuY3Rpb24uICAqLworICAgYnVpbHRpbl90eXBlLT5pbnRlcm5h bF9mbgorQEAgLTM2MjQsNiArNDE4MSwxOCBAQCBvYmpmaWxlX3R5cGUgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKQorIAkJICI8dGV4dCB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4iLCBvYmpmaWxl KTsKKyAgIFRZUEVfVEFSR0VUX1RZUEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJv bCkKKyAgICAgPSBvYmpmaWxlX3R5cGUtPmJ1aWx0aW5faW50OworKyAgb2JqZmlsZV90eXBlLT5u b2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbAorKyAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RF X0ZVTkMsIDEsIFRZUEVfRkxBR19HTlVfSUZVTkMsCisrCQkgIjx0ZXh0IGdudS1pbmRpcmVjdC1m dW5jdGlvbiB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4iLAorKwkJIG9iamZpbGUpOworKyAgVFlQ RV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJv bCkKKysgICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7CisrICBvYmpmaWxl X3R5cGUtPm5vZGVidWdfZ290X3BsdF9zeW1ib2wKKysgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09E RV9QVFIsIGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gpIC8gOCwgMCwKKysJCSAiPHRleHQgZnJv bSBqdW1wIHNsb3QgaW4gLmdvdC5wbHQsIG5vIGRlYnVnIGluZm8+IiwKKysJCSBvYmpmaWxlKTsK KysgIFRZUEVfVEFSR0VUX1RZUEUgKG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJv bCkKKysgICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9zeW1ib2w7CisgICBvYmpmaWxl X3R5cGUtPm5vZGVidWdfZGF0YV9zeW1ib2wKKyAgICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9J TlQsCisgCQkgZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoKSAvIEhPU1RfQ0hBUl9CSVQsIDAsCitA QCAtMzY3OCw2ICs0MjQ3LDExIEBAIHZvaWQKKyBfaW5pdGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkK ICB7Ci0tICByZXR1cm4gaHRhYl9jcmVhdGVfYWxsb2NfZXggKDEsIHR5cGVfcGFpcl9oYXNoLCB0 eXBlX3BhaXJfZXEsCi0tCQkJICAgICAgIE5VTEwsICZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss Ci0tCQkJICAgICAgIGhhc2h0YWJfb2JzdGFja19hbGxvY2F0ZSwKLS0JCQkgICAgICAgZHVtbXlf b2JzdGFja19kZWFsbG9jYXRlKTsKLSsgIGlmIChvYmpmaWxlID09IE5VTEwpCi0rICAgIHsKLSsg ICAgICAvKiBOVUxMIE9CSkZJTEUgaXMgZm9yIFRZUEVfRFlOQU1JQyB0eXBlcyBhbHJlYWR5IGNv bnRhaW5lZCBpbgotKwkgT0JKRklMRV9NQUxMT0MgbWVtb3J5LCBzdWNoIGFzIHRob3NlIGZyb20g VkFMVUVfSElTVE9SWV9DSEFJTi4gIFRhYmxlCi0rCSBlbGVtZW50IGVudHJpZXMgZ2V0IGFsbG9j YXRlZCBieSB4bWFsbG9jIC0gc28gdXNlIHhmcmVlLiAgKi8KLSsgICAgICByZXR1cm4gaHRhYl9j cmVhdGUgKDEsIHR5cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJfZXEsIHhmcmVlKTsKLSsgICAgfQot KyAgZWxzZQotKyAgICB7Ci0rICAgICAgLyogVXNlIE9CSkZJTEUncyBvYnN0YWNrLCBiZWNhdXNl IE9CSkZJTEUgaXMgYWJvdXQgdG8gYmUgZGVsZXRlZC4gIFRhYmxlCi0rCSBlbGVtZW50IGVudHJp ZXMgZ2V0IGFsbG9jYXRlZCBieSB4bWFsbG9jIC0gc28gdXNlIHhmcmVlLiAgKi8KLSsgICAgICBy ZXR1cm4gaHRhYl9jcmVhdGVfYWxsb2NfZXggKDEsIHR5cGVfcGFpcl9oYXNoLCB0eXBlX3BhaXJf ZXEsCi0rCQkJCSAgIHhmcmVlLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCQkgICBo YXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0rCQkJCSAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0 ZSk7Ci0rICAgIH0KLSB9CisgICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9kYXRhX3JlZ2lzdGVy X3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsKKysKKysgIHR5cGVfZGlzY2FyZGFibGVf dGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMjAsIHR5cGVfZGlzY2FyZGFibGVfaGFzaCwKKysJ CQkJCSAgICAgdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCwgTlVMTCwKKysJCQkJCSAgICAgeGNhbGxv YywgeGZyZWUpOworKworICAgb2JqZmlsZV90eXBlX2RhdGEgPSByZWdpc3Rlcl9vYmpmaWxlX2Rh dGEgKCk7CiAgCi0tLyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBUWVBFLCBpZiBpdCBp cyBhc3NvY2lhdGVkIHdpdGgKLS0gICBPQkpGSUxFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2Nh dGVkIHVzaW5nIG1hbGxvYywgYSBzYXZlZCB0eXBlIGlmCi0tICAgd2UgaGF2ZSBhbHJlYWR5IHZp c2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwgb3IgVFlQRSBpZiBpdCBpcwotLSAgIG5v dCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCi0rLyogQSBoZWxwZXIgZm9yIGNvcHlfdHlw ZV9yZWN1cnNpdmUuICBUaGlzIGRvZXMgYWxsIHRoZSB3b3JrLiAgT0JKRklMRSBpcyB1c2VkCi0r ICAgb25seSBmb3IgYW4gYXNzZXJ0aW9uIGNoZWNraW5nLiAgKi8KKyAgIGFkZF9zZXRzaG93X3pp bnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAor ZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IDA4NTI3 MGUuLmNiMmI4OGUgMTAwNjQ0CistLS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5 cGVzLmgKK0BAIC0xNzEsNiArMTcxLDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKKyAgIFRZUEVf RkxBR19GSVhFRF9JTlNUQU5DRSA9ICgxIDw8IDE1KSwKKyAgIFRZUEVfRkxBR19TVFVCX1NVUFBP UlRFRCA9ICgxIDw8IDE2KSwKKyAgIFRZUEVfRkxBR19OT1RURVhUID0gKDEgPDwgMTcpLAorKyAg VFlQRV9GTEFHX0dOVV9JRlVOQyA9ICgxIDw8IDE4KSwKICAKLS1zdHJ1Y3QgdHlwZSAqCi0tY29w eV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIAotLQkJICAgICBzdHJ1 Y3QgdHlwZSAqdHlwZSwKLS0JCSAgICAgaHRhYl90IGNvcGllZF90eXBlcykKLStzdGF0aWMgc3Ry dWN0IHR5cGUgKgotK2NvcHlfdHlwZV9yZWN1cnNpdmVfMSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIAotKwkJICAgICAgIHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAgICAgIGh0YWJfdCBjb3Bp ZWRfdHlwZXMpCi0gewotICAgc3RydWN0IHR5cGVfcGFpciAqc3RvcmVkLCBwYWlyOwotICAgdm9p ZCAqKnNsb3Q7Ci0gICBzdHJ1Y3QgdHlwZSAqbmV3X3R5cGU7CisgICAvKiBVc2VkIGZvciBlcnJv ci1jaGVja2luZy4gICovCisgICBUWVBFX0ZMQUdfTUlOID0gVFlQRV9GTEFHX1VOU0lHTkVECitA QCAtMjE0LDYgKzIxNSwxMSBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAotLSAg aWYgKCEgVFlQRV9PQkpGSUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9P V05FRCAodHlwZSkgJiYgIVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOwor ICNkZWZpbmUgVFlQRV9UQVJHRVRfU1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3Rh cmdldF9zdHViKQogIAotICAgLyogVGhpcyB0eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBh bnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7Ci1AQCAtMzA0Nyw4ICszMjA1LDEwIEBAIGNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBh bGxvY190eXBlX2FyY2ggKGdldF90eXBlX2FyY2ggKHR5cGUpKTsKKysvKiBUeXBlIG5lZWRzIHRv IGJlIGV2YWx1YXRlZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyByZXN1bHRzIG11c3Qg bm90IGJlCisrICAgc3RpY2t5LiAgKi8KKysKKysjZGVmaW5lIFRZUEVfRFlOQU1JQyh0KQkJKFRZ UEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19keW5hbWljKQorKworIC8qIFN0YXRpYyB0eXBlLiAgSWYg dGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAorICAqIGEgc3RhdGljIG1v ZGlmaWVyLgorICAqIE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMg ZGF0YSBtZW1iZXJzCitAQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxh Z192YWx1ZQogIAotICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRh YmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCi0tICAgICB3ZSBlbmNvdW50ZXIgdGhpcyB0eXBlIGFn YWluIGR1cmluZyBhIHJlY3Vyc2l2ZSBjYWxsIGJlbG93LiAgKi8KLS0gIHN0b3JlZCA9IG9ic3Rh Y2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoc3RydWN0IHR5cGVf cGFpcikpOwotKyAgICAgd2UgZW5jb3VudGVyIHRoaXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1 cnNpdmUgY2FsbCBiZWxvdy4gIE1lbW9yeSBjb3VsZAotKyAgICAgYmUgYWxsb2NhdGVkIGZyb20g T0JKRklMRSBpbiB0aGUgY2FzZSB3ZSB3aWxsIGJlIHJlbW92aW5nIE9CSkZJTEUsIHRoaXMKLSsg ICAgIG9wdGltaXphdGlvbiBpcyBtaXNzZWQgYW5kIHhmcmVlIGlzIGNhbGxlZCBmb3IgaXQgZnJv bSBDT1BJRURfVFlQRVMuICAqLwotKyAgc3RvcmVkID0geG1hbGxvYyAoc2l6ZW9mICgqc3RvcmVk KSk7Ci0gICBzdG9yZWQtPm9sZCA9IHR5cGU7Ci0gICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOwot ICAgKnNsb3QgPSBzdG9yZWQ7Ci1AQCAtMzA1OSw2ICszMjE5LDE5IEBAIGNvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgVFlQRV9PQkpGSUxFX09XTkVEIChu ZXdfdHlwZSkgPSAwOwotICAgVFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlw ZV9hcmNoICh0eXBlKTsKKyAjZGVmaW5lIFRZUEVfTk9UVEVYVCh0KQkJKFRZUEVfTUFJTl9UWVBF ICh0KS0+ZmxhZ19ub3R0ZXh0KQogIAotKyAgLyogVFlQRV9NQUlOX1RZUEUgbWVtb3J5IGNvcHkg YWJvdmUgcmV3cm90ZSB0aGUgVFlQRV9ESVNDQVJEQUJMRSBmbGFnIHNvIHdlCi0rICAgICBuZWVk IHRvIGluaXRpYWxpemUgaXQgYWdhaW4uICBBbmQgZXZlbiBpZiBUWVBFIHdhcyBhbHJlYWR5IGRp c2NhcmRhYmxlCi0rICAgICBORVdfVFlQRSBzbyBmYXIgaXMgbm90IHJlZ2lzdGVyZWQgaW4gVFlQ RV9ESVNDQVJEQUJMRV9UQUJMRS4gICovCi0rICBUWVBFX0RJU0NBUkRBQkxFIChuZXdfdHlwZSkg PSAwOwotKyAgc2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBlKTsKKysvKiBVc2VkIG9u bHkgZm9yIFRZUEVfQ09ERV9GVU5DIHdoZXJlIGl0IHNwZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlv bgorKyAgIGFkZHJlc3MgaXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9U QVJHRVRfVFlQRSBkZXRlcm1pbmVzIHRoZQorKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5 cGUgdG8gYmUgcHJlc2VudGVkIHRvIHVzZXIuICAqLwogKwotKyAgLyogUHJlLWNsZWFyIHRoZSBm aWVsZHMgcHJvY2Vzc2VkIGJ5IGRlbGV0ZV9tYWluX3R5cGUuICBJZiBEV0FSRiBibG9jawotKyAg ICAgZXZhbHVhdGlvbnMgYmVsb3cgY2FsbCBlcnJvciB3ZSB3b3VsZCBsZWF2ZSBhbiB1bmZyZWVh YmxlIFRZUEUuICAqLwotKyAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUpID0gTlVMTDsKLSsg IFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0gTlVMTDsKLSsgIFRZUEVfTkZJRUxEUyAo bmV3X3R5cGUpID0gMDsKLSsgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBOVUxMOworKyNkZWZp bmUgVFlQRV9HTlVfSUZVTkModCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMp CiArCi0gICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKLSAgICAgVFlQRV9OQU1FIChuZXdfdHlwZSkg PSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKLSAgIGlmIChUWVBFX1RBR19OQU1FICh0eXBl KSkKLUBAIC0zMDY3LDEyICszMjQwLDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAotICAgVFlQRV9JTlNUQU5DRV9GTEFHUyAobmV3X3R5cGUpID0gVFlQ RV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7Ci0gICBUWVBFX0xFTkdUSCAobmV3X3R5cGUpID0gVFlQ RV9MRU5HVEggKHR5cGUpOworIC8qIFR5cGUgb3duZXIuICBJZiBUWVBFX09CSkZJTEVfT1dORUQg aXMgdHJ1ZSwgdGhlIHR5cGUgaXMgb3duZWQgYnkKKyAgICB0aGUgb2JqZmlsZSByZXRyaWV2ZWQg YXMgVFlQRV9PQkpGSUxFLiAgT3RoZXJ3ZWlzZSwgdGhlIHR5cGUgaXMKKyAgICBvd25lZCBieSBh biBhcmNoaXRlY3R1cmU7IFRZUEVfT0JKRklMRSBpcyBOVUxMIGluIHRoaXMgY2FzZS4gICovCitA QCAtMjg1LDYgKzI5Nyw0OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQogIAotKyAg aWYgKFRZUEVfQUxMT0NBVEVEIChuZXdfdHlwZSkpCi0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0 ICghVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkpOworICNkZWZpbmUgVFlQRV9ERUNMQVJF RF9DTEFTUyh0KSAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQorIAor Ky8qIERlZmluZSB0aGlzIHR5cGUgYXMgYmVpbmcgcmVjbGFpbWFibGUgZHVyaW5nIGZyZWVfYWxs X3R5cGVzLiAgVHlwZSBpcworKyAgIHJlcXVpcmVkIHRvIGJlIGhhdmUgVFlQRV9PQkpGSUxFIHNl dCB0byBOVUxMLiAgU2V0dGluZyB0aGlzIGZsYWcgcmVxdWlyZXMKKysgICBpbml0aWFsaXppbmcg VFlQRV9ESVNDQVJEQUJMRV9BR0UsIHNlZSBhbGxvY190eXBlX2Rpc2NhcmRhYmxlLiAgKi8KICsK LSsgICAgICBpZiAoIWR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoVFlQRV9BTExPQ0FURUQgKG5l d190eXBlKSkpCi0rICAgICAgICBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSA9IDE7Ci0r ICAgICAgVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSA9IE5VTEw7Ci0rICAgIH0KKysjZGVmaW5l IFRZUEVfRElTQ0FSREFCTEUodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kaXNjYXJkYWJs ZSkKICsKLSsgIGlmIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkKLSsgICAgewotKyAgICAg IGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpOworKy8qIE1hcmtl ciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkgdGhp cworKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGluZyBwYXNzLiAgQ3Vy cmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCisrICAgYnkgVFlQRV9ESVNDQVJEQUJMRV9BR0VfQ1VS UkVOVC4gICovCiArCi0rICAgICAgaWYgKCFkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwgKFRZUEVf QVNTT0NJQVRFRCAobmV3X3R5cGUpKSkKLSsgICAgICAgIFRZUEVfTk9UX0FTU09DSUFURUQgKG5l d190eXBlKSA9IDE7Ci0rICAgICAgVFlQRV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSBOVUxMOwot KyAgICB9CisrI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlOX1RZUEUg KHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKICsKLSsgIGlmICghVFlQRV9EQVRBX0xPQ0FUSU9O X0lTX0FERFIgKG5ld190eXBlKQotKyAgICAgICYmIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9C TE9DSyAobmV3X3R5cGUpKQorKy8qIElzIEhJR0hfQk9VTkQgYSBsb3ctYm91bmQgcmVsYXRpdmUg Y291bnQgKDEpIG9yIHRoZSBoaWdoIGJvdW5kIGl0c2VsZiAoMCk/ICAqLworKworKyNkZWZpbmUg VFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UKHJhbmdlX3R5cGUpIFwKKysgIChUWVBFX01B SU5fVFlQRSAocmFuZ2VfdHlwZSktPmZsYWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCkKKysK KysvKiBOb3QgYWxsb2NhdGVkLiAgVFlQRV9BTExPQ0FURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1 Y2ggY2FzZS4gIElmIHRoaXMgZmxhZworKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0 KSBpcyBOVUxMIHRoZW4gdGhlIHR5cGUgaXMgYWxsb2NhdGVkLiAgSWYgdGhpcworKyAgIGZsYWcg aXMgdW5zZXQgYW5kIFRZUEVfQUxMT0NBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJG IGJsb2NrCisrICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc3RhdGUuICAqLwor KworKyNkZWZpbmUgVFlQRV9OT1RfQUxMT0NBVEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZs YWdfbm90X2FsbG9jYXRlZCkKKysKKysvKiBOb3QgYXNzb2NpYXRlZC4gIFRZUEVfQVNTT0NJQVRF RCh0KSBtdXN0IGJlIE5VTEwgaW4gc3VjaCBjYXNlLiAgSWYgdGhpcyBmbGFnCisrICAgaXMgdW5z ZXQgYW5kIFRZUEVfQVNTT0NJQVRFRCh0KSBpcyBOVUxMIHRoZW4gdGhlIHR5cGUgaXMgYXNzb2Np YXRlZC4gIElmCisrICAgdGhpcyBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkg aXMgbm90IE5VTEwgdGhlbiBpdHMgRFdBUkYgYmxvY2sKKysgICBkZXRlcm1pbmVzIHRoZSBhY3R1 YWwgYXNzb2NpYXRpb24gc3RhdGUuICAqLworKworKyNkZWZpbmUgVFlQRV9OT1RfQVNTT0NJQVRF RCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hc3NvY2lhdGVkKQorKworKy8qIEFk ZHJlc3Mgb2YgdGhlIGFjdHVhbCBkYXRhIGFzIGZvciBEV19BVF9kYXRhX2xvY2F0aW9uLiAgSXRz IGR3YXJmIGJsb2NrIG11c3QKKysgICBub3QgYmUgZXZhbHVhdGVkIHVubGVzcyBib3RoIFRZUEVf Tk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUKKysgICBmYWxzZS4gIElm IFRZUEVfREFUQV9MT0NBVElPTl9JU19BRERSIHNldCB0aGVuIFRZUEVfREFUQV9MT0NBVElPTl9B RERSIHZhbHVlCisrICAgaXMgdGhlIGFjdHVhbCBkYXRhIGFkZHJlc3MgdmFsdWUuICBJZiB1bnNl dCBhbmQKKysgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgaXMgTlVMTCB0aGVuIHRo ZSB2YWx1ZSBpcyB0aGUgbm9ybWFsCisrICAgdmFsdWVfcmF3X2FkZHJlc3MuICBJZiB1bnNldCBh bmQgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLIGlzIG5vdCBOVUxMCisrICAgdGhlbiBp dHMgRFdBUkYgYmxvY2sgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGRhdGEgYWRkcmVzcy4gICovCisr CisrI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUih0KSBcCisrICAoVFlQRV9NQUlO X1RZUEUgKHQpLT5mbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkcikKKysKKyAvKiBDb25zdGFudCB0 eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFzIGEKKyAgKiBj b25zdCBtb2RpZmllci4KKyAgKi8KK0BAIC0zODksMTEgKzQ0MywxOSBAQCBzdHJ1Y3QgbWFpbl90 eXBlCisgICB1bnNpZ25lZCBpbnQgZmxhZ192ZWN0b3IgOiAxOworICAgdW5zaWduZWQgaW50IGZs YWdfc3R1Yl9zdXBwb3J0ZWQgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfbm90dGV4dCA6IDE7 CisrICB1bnNpZ25lZCBpbnQgZmxhZ19nbnVfaWZ1bmMgOiAxOworICAgdW5zaWduZWQgaW50IGZs YWdfZml4ZWRfaW5zdGFuY2UgOiAxOworICAgdW5zaWduZWQgaW50IGZsYWdfb2JqZmlsZV9vd25l ZCA6IDE7CisgICAvKiBUcnVlIGlmIHRoaXMgdHlwZSB3YXMgZGVjbGFyZWQgd2l0aCAiY2xhc3Mi IHJhdGhlciB0aGFuCisgICAgICAic3RydWN0Ii4gICovCisgICB1bnNpZ25lZCBpbnQgZmxhZ19k ZWNsYXJlZF9jbGFzcyA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZSA6IDE7 CisrICB1bnNpZ25lZCBpbnQgZmxhZ19kaXNjYXJkYWJsZV9hZ2UgOiAxOworKyAgdW5zaWduZWQg aW50IGZsYWdfZHluYW1pYyA6IDE7CisrICB1bnNpZ25lZCBpbnQgZmxhZ19yYW5nZV9oaWdoX2Jv dW5kX2lzX2NvdW50IDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hbGxvY2F0ZWQgOiAx OworKyAgdW5zaWduZWQgaW50IGZsYWdfbm90X2Fzc29jaWF0ZWQgOiAxOworKyAgdW5zaWduZWQg aW50IGZsYWdfZGF0YV9sb2NhdGlvbl9pc19hZGRyIDogMTsKKyAKKyAgIC8qIEEgZGlzY3JpbWlu YW50IHRlbGxpbmcgdXMgd2hpY2ggZmllbGQgb2YgdGhlIHR5cGVfc3BlY2lmaWMgdW5pb24KKyAg ICAgIGlzIGJlaW5nIHVzZWQgZm9yIHRoaXMgdHlwZSwgaWYgYW55LiAgKi8KK0BAIC00NjcsNiAr NTI5LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKKyAKKyAgIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlw ZTsKKyAKKysgIC8qIEZvciBEV19BVF9kYXRhX2xvY2F0aW9uLiAgKi8KKysgIHVuaW9uCiArICAg IHsKLSsgICAgICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsgICAgICAgICAg fHwgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpKQotKwlUWVBFX0RBVEFfTE9DQVRJT05f RFdBUkZfQkxPQ0sgKG5ld190eXBlKSA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgVFlQ RV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgKG5ld190eXBlKSA9IDE7Ci0rCSAgVFlQRV9EQVRBX0xP Q0FUSU9OX0FERFIgKG5ld190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAotKwkJCQkg ICAgKFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpKTsKLSsJfQorKyAg ICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7CisrICAgICAgQ09S RV9BRERSIGFkZHI7CiArICAgIH0KKysgIGRhdGFfbG9jYXRpb247CiArCi0gICAvKiBDb3B5IHRo ZSBmaWVsZHMuICAqLwotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0gICAgIHsKLSAgICAg ICBpbnQgaSwgbmZpZWxkczsKLSAKLSsgICAgICAvKiBUWVBFX0NPREVfUkFOR0UgdXNlcyBUWVBF X1JBTkdFX0RBVEEgb2YgdGhlIHVuaW9uIHdpdGggVFlQRV9GSUVMRFMuICAqLwotKyAgICAgIGdk Yl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKTsKKysgIC8qIEZv ciBEV19BVF9hbGxvY2F0ZWQuICAqLworKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICph bGxvY2F0ZWQ7CiArCi0gICAgICAgbmZpZWxkcyA9IFRZUEVfTkZJRUxEUyAodHlwZSk7Ci0rICAg ICAgVFlQRV9ORklFTERTIChuZXdfdHlwZSkgPSBuZmllbGRzOwotICAgICAgIFRZUEVfRklFTERT IChuZXdfdHlwZSkgPSBYQ0FMTE9DIChuZmllbGRzLCBzdHJ1Y3QgZmllbGQpOwotICAgICAgIGZv ciAoaSA9IDA7IGkgPCBuZmllbGRzOyBpKyspCi0gCXsKLUBAIC0zMDgxLDggKzMyOTAsOCBAQCBj b3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJICBUWVBFX0ZJ RUxEX0JJVFNJWkUgKG5ld190eXBlLCBpKSA9IFRZUEVfRklFTERfQklUU0laRSAodHlwZSwgaSk7 Ci0gCSAgaWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpCi0gCSAgICBUWVBFX0ZJRUxEX1RZ UEUgKG5ld190eXBlLCBpKQotLQkgICAgICA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKG9iamZpbGUs IFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksCi0tCQkJCSAgICAgY29waWVkX3R5cGVzKTsKLSsJ ICAgICAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIFRZUEVfRklFTERfVFlQRSAo dHlwZSwgaSksCi0rCQkJCSAgICAgICBjb3BpZWRfdHlwZXMpOwotIAkgIGlmIChUWVBFX0ZJRUxE X05BTUUgKHR5cGUsIGkpKQotIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkgPSAK LSAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAtMzEwOSwy NCArMzMxOCwxNjYgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCi0gCX0KLSAgICAgfQotIAotKyAgLyogQm90aCBGSUVMRF9MT0NfS0lORF9EV0FSRl9CTE9D SyBhbmQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIHdlcmUKLSsgICAgIHBvc3NpYmx5 IGNvbnZlcnRlZC4gICovCi0rICBUWVBFX0RZTkFNSUMgKG5ld190eXBlKSA9IDA7CisrICAvKiBG b3IgRFdfQVRfYXNzb2NpYXRlZC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g KmFzc29jaWF0ZWQ7CiArCi0gICAvKiBGb3IgcmFuZ2UgdHlwZXMsIGNvcHkgdGhlIGJvdW5kcyBp bmZvcm1hdGlvbi4gKi8KLS0gIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5H RSkKLSsgIGlmIChUWVBFX0NPREUgKG5ld190eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCisgICAv KiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBlYWNoIGZp ZWxkLgorICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBpcyBvbmUg ImZpZWxkIiwKKyAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRoZSBzZXQg b3IgYXJyYXkuCitAQCAtNTQwLDEzICs2MTYsMzQgQEAgc3RydWN0IG1haW5fdHlwZQorIAorICAg ICBzdHJ1Y3QgcmFuZ2VfYm91bmRzCiAgICAgIHsKLSAgICAgICBUWVBFX1JBTkdFX0RBVEEgKG5l d190eXBlKSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwotICAgICAg ICpUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKSA9ICpUWVBFX1JBTkdFX0RBVEEgKHR5cGUpOwot KwotKyAgICAgIHN3aXRjaCAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kKQor KyAgICAgIHN0cnVjdAogKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJ ICBicmVhazsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBz dHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBz bwotKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQ RURFRi4KLSsJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQg YXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExP Q0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAg ICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgIHVuaW9uCiArCSAgICB7Ci0rCSAgICAg IC8qIFdlIHNob3VsZCBzZXQgMSBmb3IgRm9ydHJhbiBidXQgaG93IHRvIGZpbmQgdGhlIGxhbmd1 YWdlPyAgKi8KLSsJICAgICAgVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSA9IDA7Ci0rCSAgICAg IFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKKysJICAgICAgTE9OR0VT VCBjb25zdGFudDsKKysJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpkd2FyZl9i bG9jazsKKysJICAgICAgc3RydWN0CisrCQl7CisrCQkgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9i YXRvbiAqbG9jbGlzdDsKKysJCSAgc3RydWN0IHR5cGUgKnR5cGU7CisrCQl9CisrCSAgICAgIGR3 YXJmX2xvY2xpc3Q7CiArCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9MT1dfQk9VTkQgKG5l d190eXBlKSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAotKwkJCQkoVFlQRV9SQU5HRV9EQVRB IChuZXdfdHlwZSktPmxvdy51LmR3YXJmX2Jsb2NrKTsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKG5l d190eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIGJyZWFr OwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKLSsJICB7Ci0rCSAgICBD T1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24n IGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQg dG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQRV9OT1Rf QUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUu Ci0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkK LSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3Rh Y2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCi0rCQkg IChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC5sb2NsaXN0 LAotKwkJICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3Qu dHlwZSwgJmFkZHIpKQotKwkgICAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gYWRkcjsK LSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJLyogV2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFu IGJ1dCBob3cgdG8gZmluZCB0aGUgbGFuZ3VhZ2U/ICAqLwotKwkJVFlQRV9MT1dfQk9VTkQgKG5l d190eXBlKSA9IDA7Ci0rCQlUWVBFX0xPV19CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9IDE7 Ci0rCSAgICAgIH0KLSsJICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCA9 IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgfQotKwkgIGJyZWFrOwotKwl9Ci0rCi0r ICAgICAgc3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kKQotKwl7 Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVhazsKLSsJY2FzZSBS QU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgIGl0IGlzIGV4 cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICBUWVBF X05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3Ig VFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8 fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwgISBoYXNfc3RhY2tf ZnJhbWVzICgpKQorKwkgIHU7CisrCSAgZW51bSByYW5nZV9ib3VuZF9raW5kCiArCSAgICB7Ci0r CSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190 eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKG5ld190eXBlKSA9 IDE7CisrCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQsCisrCSAgICAgIFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfQkxPQ0ssCisrCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9D TElTVAogKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUp ID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJICAgICAgIChUWVBFX1JBTkdFX0RBVEEg KG5ld190eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrKTsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKG5l d190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICBicmVh azsKLSsJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6Ci0rCSAgewotKwkgICAg Q09SRV9BRERSIGFkZHI7Ci0rCi0rCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9u JyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICAgIGl0IGlzIGV4cGVjdGVk IHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICAgIFRZUEVfTk9U X0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBF LgotKwkgICAgICAgKi8KLSsJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUp Ci0rCSAgICAgICAgJiYgISBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgJiYgaGFzX3N0 YWNrX2ZyYW1lcyAoKQotKwkgICAgICAgICYmIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAotKwkJ ICAgICAgKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfbG9jbGlzdC5s b2NsaXN0LAotKwkJICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdh cmZfbG9jbGlzdC50eXBlLAotKwkJICAgICAgICZhZGRyKSkKLSsJICAgICAgVFlQRV9ISUdIX0JP VU5EIChuZXdfdHlwZSkgPSBhZGRyOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlUWVBFX0hJ R0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgLSAxOwotKwkJ VFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAgICAgfQotKwkg ICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gua2luZCA9IFJBTkdFX0JPVU5EX0tJ TkRfQ09OU1RBTlQ7Ci0rCSAgfQotKwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgICAgc3dpdGNoIChU WVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZCkKLSsJewotKwljYXNl IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ6Ci0rCSAgYnJlYWs7Ci0rCWNhc2UgUkFOR0VfQk9V TkRfS0lORF9EV0FSRl9CTE9DSzoKLSsJICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u JyBpcyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICBpdCBpcyBleHBlY3RlZCB0 byBiZSBtYWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgVFlQRV9OT1RfQUxM T0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCi0r CSAgICAgKi8KLSsJICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQRV9O T1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpCi0rCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1lcyAo KSkKLSsJICAgIFRZUEVfQllURV9TVFJJREUgKG5ld190eXBlKSA9IDA7Ci0rCSAgZWxzZQotKwkg ICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFs Ci0rCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Js b2NrKTsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAot KwkgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJB TkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoKLSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRk ciA9IDA7Ci0rCi0rCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBpcyB0b28g Ym91bmQgdG8gaXRzIG9iamZpbGUgc28KLSsJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1h ZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAgICAgIFRZUEVfTk9UX0FMTE9DQVRF RCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgotKwkgICAg ICAgKi8KLSsJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCi0rCQkmJiAh IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpKQot KwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJICAgICAgIChUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQlU WVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LnR5 cGUsCi0rCQkmYWRkcik7Ci0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBhZGRy OwotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQKLSsJ ICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOwotKwkgIH0KLSsJICBicmVhazsKLSsJ fQotKwotKyAgICAgIC8qIENvbnZlcnQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIGlu dG8gYSByZWd1bGFyIGJvdW5kLiAgKi8KLSsgICAgICBpZiAoVFlQRV9SQU5HRV9ISUdIX0JPVU5E X0lTX0NPVU5UIChuZXdfdHlwZSkpCi0rCXsKLSsJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBl KSA9IFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkKLSsJCQkJICAgICAgICsgVFlQRV9ISUdIX0JP VU5EIChuZXdfdHlwZSkgLSAxOwotKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAo bmV3X3R5cGUpID0gMDsKKysJICBraW5kOwogKwl9Ci0gICAgIH0KKyAgICAgICAvKiBMb3cgYm91 bmQgb2YgcmFuZ2UuICovCistCistICAgICAgTE9OR0VTVCBsb3c7CistCisrICAgICAgbG93LAor ICAgICAgIC8qIEhpZ2ggYm91bmQgb2YgcmFuZ2UuICovCistCistICAgICAgTE9OR0VTVCBoaWdo OworKyAgICAgIGhpZ2gsCisrICAgICAgLyogQnl0ZSBzdHJpZGUgb2YgcmFuZ2UuICovCisrICAg ICAgYnl0ZV9zdHJpZGU7CiAgCi0gICAvKiBDb3B5IHBvaW50ZXJzIHRvIG90aGVyIHR5cGVzLiAg Ki8KLSAgIGlmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkKLSAgICAgVFlQRV9UQVJHRVRfVFlQ RSAobmV3X3R5cGUpID0gCi0tICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgCi0t CQkJICAgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCi0tCQkJICAgY29waWVkX3R5cGVzKTsKLSsg ICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIAotKwkJCSAgICAgVFlQRV9UQVJH RVRfVFlQRSAodHlwZSksCi0rCQkJICAgICBjb3BpZWRfdHlwZXMpOwotICAgaWYgKFRZUEVfVlBU Ul9CQVNFVFlQRSAodHlwZSkpCi0gICAgIFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0g Ci0tICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKLS0JCQkgICBUWVBFX1ZQVFJf QkFTRVRZUEUgKHR5cGUpLAotLQkJCSAgIGNvcGllZF90eXBlcyk7Ci0rICAgICAgY29weV90eXBl X3JlY3Vyc2l2ZV8xIChvYmpmaWxlLAotKwkJCSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBl KSwKLSsJCQkgICAgIGNvcGllZF90eXBlcyk7Ci0gICAvKiBNYXliZSBjb3B5IHRoZSB0eXBlX3Nw ZWNpZmljIGJpdHMuCisgICAgICAgLyogRmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1 ZXMgb2YgbG93IGFuZCBoaWdoIGFyZQorICAgICAgICAgIHZhbGlkLiAgV2hlbiB0cnVlLCB0aGUg cmVzcGVjdGl2ZSByYW5nZSB2YWx1ZSBpcworQEAgLTg4OSw5ICs5ODYsOSBAQCBleHRlcm4gdm9p ZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKKyAjZGVmaW5lIFRZUEVf UE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKKyAjZGVmaW5l IFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBl CisgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgorLS8qIE5v dGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlwZSwgeW91IGhhdmUgdG8gY2FsbCBj aGVja190eXBlZGVmLgorLSAgIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xF TkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAorLSAgIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBj aGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQorKy8qIE5vdGUgdGhhdCBp ZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9yIFNUUklORyB0eXBlLCB5b3UgaGF2ZSB0 byBjYWxsCisrICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRo ZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgorKyAgIHR5cGUsIHNvIHlvdSBvbmx5IGhhdmUg dG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQorICAgIGNh bGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4g ICovCisgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCisg LyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlv dSB3YW50IHRoZSByZWFsCitAQCAtODk5LDExICs5OTYsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2Nh dGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CisgI2RlZmluZSBUWVBFX0NPREUodGhp c3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29kZQorICNkZWZpbmUgVFlQRV9ORklF TERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMKKyAjZGVmaW5l IFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5k cy5maWVsZHMKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyh0aGlzdHlw ZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5kd2FyZl9ibG9jawor KyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBF ICh0aGlzdHlwZSktPmRhdGFfbG9jYXRpb24uYWRkcgorKyNkZWZpbmUgVFlQRV9BTExPQ0FURUQo dGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFsbG9jYXRlZAorKyNkZWZpbmUg VFlQRV9BU1NPQ0lBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hc3Nv Y2lhdGVkCiAgCi0gICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90IGNvcHkgdGhl IEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zMTQzLDYgKzM0OTQsMTcgQEAgY29weV90eXBl X3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gICByZXR1cm4gbmV3X3R5cGU7 Ci0gfQorICNkZWZpbmUgVFlQRV9JTkRFWF9UWVBFKHR5cGUpIFRZUEVfRklFTERfVFlQRSAodHlw ZSwgMCkKKyAjZGVmaW5lIFRZUEVfUkFOR0VfREFUQSh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUo dGhpc3R5cGUpLT5mbGRzX2JuZHMuYm91bmRzCistI2RlZmluZSBUWVBFX0xPV19CT1VORChyYW5n ZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdworLSNkZWZpbmUgVFlQRV9I SUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaAor KyNkZWZpbmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdl X3R5cGUpLT5sb3cudS5jb25zdGFudAorKyNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5 cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGlnaC51LmNvbnN0YW50CisrI2RlZmlu ZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBl KS0+Ynl0ZV9zdHJpZGUudS5jb25zdGFudAorICNkZWZpbmUgVFlQRV9MT1dfQk9VTkRfVU5ERUZJ TkVEKHJhbmdlX3R5cGUpIFwKKyAgICBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvd191 bmRlZmluZWQKKyAjZGVmaW5lIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkg XAorQEAgLTkyMCw3ICsxMDIyLDE0IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5 cGUgKHN0cnVjdCB0eXBlICopOworICAgIChUWVBFX0hJR0hfQk9VTkQoVFlQRV9JTkRFWF9UWVBF KChhcnJheXR5cGUpKSkpCiAgCi0rLyogUmVjdXJzaXZlbHkgY29weSAoZGVlcCBjb3B5KSBUWVBF LiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nCi0rICAgbWFsbG9jLCBhIHNhdmVk IHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVT KSwKLSsgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICov Ci0rCi0rc3RydWN0IHR5cGUgKgotK2NvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCB0eXBlICp0 eXBlLAotKwkJICAgICBodGFiX3QgY29waWVkX3R5cGVzKQotK3sKLSsgIHJldHVybiBjb3B5X3R5 cGVfcmVjdXJzaXZlXzEgKFRZUEVfT0JKRklMRSAodHlwZSksIHR5cGUsIGNvcGllZF90eXBlcyk7 Ci0rfQorICNkZWZpbmUgVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9WQUxVRShhcnJheXR5cGUpIFwK Ky0gICAoVFlQRV9MT1dfQk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCisrICBU WVBFX0xPV19CT1VORCAoVFlQRV9JTkRFWF9UWVBFIChhcnJheXR5cGUpKQogKwotIC8qIE1ha2Ug YSBjb3B5IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVy ZW5jZQotICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgotICAgIAotQEAgLTMxNjUsNiArMzUy NywxOTkgQEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIHJldHVybiBu ZXdfdHlwZTsKLSB9CisrLyogVFlQRV9CWVRFX1NUUklERSAoVFlQRV9JTkRFWF9UWVBFIChhcnJh eXR5cGUpKSB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlCisrICAgZWxlbWVudCBzaXplIGlmIG5vIHNw ZWNpZmljIHN0cmlkZSB2YWx1ZSBpcyBrbm93bi4gICovCisrI2RlZmluZSBUWVBFX0FSUkFZX0JZ VEVfU1RSSURFX1ZBTFVFKGFycmF5dHlwZSkJCVwKKysgIChUWVBFX0JZVEVfU1RSSURFIChUWVBF X0lOREVYX1RZUEUgKGFycmF5dHlwZSkpID09IDAJXAorKyAgID8gVFlQRV9MRU5HVEggKFRZUEVf VEFSR0VUX1RZUEUgKGFycmF5dHlwZSkpCQlcCisrICAgOiBUWVBFX0JZVEVfU1RSSURFIChUWVBF X0lOREVYX1RZUEUgKGFycmF5dHlwZSkpKQogIAotKy8qIENhbGxiYWNrIHR5cGUgZm9yIG1haW5f dHlwZV9jcmF3bC4gICovCi0rdHlwZWRlZiBpbnQgKCptYWluX3R5cGVfY3Jhd2xfaXRlcikgKHN0 cnVjdCB0eXBlICp0eXBlLCB2b2lkICpkYXRhKTsKLSsKLSsvKiBJdGVyYXRlIGFsbCBtYWluX3R5 cGUgc3RydWN0dXJlcyByZWFjaGFibGUgdGhyb3VnaCBhbnkgYHN0cnVjdCB0eXBlIConIGZyb20K LSsgICBUWVBFLiAgSVRFUiB3aWxsIGJlIGNhbGxlZCBvbmx5IGZvciBvbmUgdHlwZSBvZiBlYWNo IG1haW5fdHlwZSwgdXNlCi0rICAgVFlQRV9DSEFJTiB0cmF2ZXJzYWwgdG8gZmluZCBhbGwgdGhl IHR5cGUgaW5zdGFuY2VzLiAgSVRFUiBpcyBiZWluZyBjYWxsZWQKLSsgICBmb3IgZWFjaCBtYWlu X3R5cGUgZm91bmQuICBJVEVSIHJldHVybnMgbm9uLXplcm8gaWYgbWFpbl90eXBlX2NyYXdsIHNo b3VsZAotKyAgIGRlcHRoLWZpcnN0IGVudGVyIHRoZSBzcGVjaWZpYyB0eXBlLiAgSVRFUiBtdXN0 IHByb3ZpZGUgc29tZSBkZXRlY3Rpb24gZm9yCi0rICAgcmVlbnRlcmluZyB0aGUgc2FtZSBtYWlu X3R5cGUgYXMgdGhpcyBmdW5jdGlvbiB3b3VsZCBvdGhlcndpc2UgZW5kbGVzc2x5Ci0rICAgbG9v cC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSttYWluX3R5cGVfY3Jhd2wgKHN0cnVjdCB0eXBlICp0 eXBlLCBtYWluX3R5cGVfY3Jhd2xfaXRlciBpdGVyLCB2b2lkICpkYXRhKQotK3sKLSsgIHN0cnVj dCB0eXBlICp0eXBlX2l0ZXI7Ci0rICBpbnQgaTsKLSsKLSsgIGlmICghdHlwZSkKLSsgICAgcmV0 dXJuOwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMKTsKKyAv KiBDKysgKi8KKyAKK0BAIC0xMTQxLDYgKzEyNTAsMTAgQEAgc3RydWN0IGJ1aWx0aW5fdHlwZQor ICAgICAgKCopICgpIGNhbiBzZXJ2ZXIgYXMgYSBnZW5lcmljIGZ1bmN0aW9uIHBvaW50ZXIuICAq LworICAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19wdHI7CisgCisrICAvKiBgZnVuY3Rpb24g cmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24gKHJldHVybmluZyB2b2lkKScgdHlwZS4KKysg ICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0eXBlIGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQu ICAqLworKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5fZnVuY19mdW5jOwogKwotKyAgLyogYHN0cnVj dCBjcGx1c19zdHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5j dGlvbi4gICovCi0rICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVf U1RSVUNUCi0rCSAgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTikK LSsJICAgICAgfHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7CisgCisgICAvKiBTcGVjaWFs LXB1cnBvc2UgdHlwZXMuICAqLworIAorQEAgLTExODEsNiArMTI5NCw4IEBAIHN0cnVjdCBvYmpm aWxlX3R5cGUKKyAKKyAgIC8qIFR5cGVzIHVzZWQgZm9yIHN5bWJvbHMgd2l0aCBubyBkZWJ1ZyBp bmZvcm1hdGlvbi4gICovCisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X3N5bWJvbDsKKysg IHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbDsKKysgIHN0cnVjdCB0 eXBlICpub2RlYnVnX2dvdF9wbHRfc3ltYm9sOworICAgc3RydWN0IHR5cGUgKm5vZGVidWdfZGF0 YV9zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z191bmtub3duX3N5bWJvbDsKKyAgIHN0 cnVjdCB0eXBlICpub2RlYnVnX3Rsc19zeW1ib2w7CitAQCAtMTMyOCw2ICsxNDQzLDE4IEBAIGV4 dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVj dCB0eXBlICosCisgCQkJCSAgICAgICBzdHJ1Y3QgdHlwZSAqKTsKKyBleHRlcm4gc3RydWN0IHR5 cGUgKmxvb2t1cF9hcnJheV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Cisg CisrZXh0ZXJuIENPUkVfQUREUiB0eXBlX3JhbmdlX2FueV9maWVsZF9pbnRlcm5hbCAoc3RydWN0 IHR5cGUgKnJhbmdlX3R5cGUsCisrCQkJCQkJaW50IGZpZWxkbm8pOwogKwotKyAgaWYgKCEoKml0 ZXIpICh0eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuOworK2V4dGVybiBpbnQgdHlwZV9yYW5nZV9o aWdoX2JvdW5kX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSk7CiArCi0rICAvKiBJ dGVyYXRlIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMgb2YgdGhpcyBtYWluX3R5cGUuICAqLwotKyAg dHlwZV9pdGVyID0gdHlwZTsKLSsgIGRvCi0rICAgIHsKLSsgICAgICBnZGJfYXNzZXJ0IChUWVBF X01BSU5fVFlQRSAodHlwZV9pdGVyKSA9PSBUWVBFX01BSU5fVFlQRSAodHlwZSkpOworK2V4dGVy biBpbnQgdHlwZV9yYW5nZV9jb3VudF9ib3VuZF9pbnRlcm5hbCAoc3RydWN0IHR5cGUgKnJhbmdl X3R5cGUpOwogKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9QT0lOVEVSX1RZUEUgKHR5 cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfUkVGRVJFTkNF X1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKKytleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2Vf Ynl0ZV9zdHJpZGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCQkJCSAg c3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSk7CiArCi0rICAgICAgdHlwZV9pdGVyID0gVFlQRV9D SEFJTiAodHlwZV9pdGVyKTsKLSsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsK KytleHRlcm4gdm9pZCBmaW5hbGl6ZV90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSk7CiArCi0rICBm b3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgaSsrKQotKyAgICBtYWluX3R5cGVf Y3Jhd2wgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSksIGl0ZXIsIGRhdGEpOworIGV4dGVybiBz dHJ1Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlw ZSAqLAorIAkJCQkJc3RydWN0IHR5cGUgKik7CisgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBf c3RyaW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKK0BAIC0xMzcwLDYg KzE0OTcsOCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwg c3RydWN0IHR5cGUgKik7CisgCisgZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVj dCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKKyAKKytleHRlcm4gdm9pZCB0eXBlX21hcmtfdXNl ZCAoc3RydWN0IHR5cGUgKnR5cGUpOwogKwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1RBUkdF VF9UWVBFICh0eXBlKSwgaXRlciwgZGF0YSk7Ci0rICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVfVlBU Ul9CQVNFVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOwotK30KKyAvKiBPdmVybG9hZCByZXNvbHV0 aW9uICovCisgCisgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBdKQorQEAg LTE0MzIsMTAgKzE1NjEsMTEgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRfdHlwZSAo Y2hhciAqLCBpbnQpOworIAorIGV4dGVybiBodGFiX3QgY3JlYXRlX2NvcGllZF90eXBlc19oYXNo IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCistZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5 X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKy0JCQkJCSBzdHJ1Y3Qg dHlwZSAqdHlwZSwKKytleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCB0eXBlICp0eXBlLAorIAkJCQkJIGh0YWJfdCBjb3BpZWRfdHlwZXMpOworIAorIGV4dGVy biBzdHJ1Y3QgdHlwZSAqY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CisgCisr ZXh0ZXJuIHZvaWQgZnJlZV9hbGxfdHlwZXMgKHZvaWQpOwogKwotKy8qIEEgaGVscGVyIGZvciBk ZWxldGVfdHlwZSB3aGljaCBkZWxldGVzIGEgbWFpbl90eXBlIGFuZCB0aGUgdGhpbmdzIHRvIHdo aWNoCi0rICAgaXQgcmVmZXJzLiAgVFlQRSBpcyBhIHR5cGUgd2hvc2UgbWFpbl90eXBlIHdlIHdp c2ggdG8gZGVzdHJveS4gICovCisgI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KK2RpZmYgLS1naXQg YS9nZGIvaTM4Ni1saW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCitpbmRleCA0ZmNl MWFjLi4xNDRhODk5IDEwMDY0NAorLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKKysrKyBiL2dk Yi9pMzg2LWxpbnV4LW5hdC5jCitAQCAtNzQ3LDYgKzc0NywyMSBAQCBpMzg2X2xpbnV4X2RyX3Vu c2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQorICAgICB9CisgfQorIAorKy8qIFNlZSBp Mzg2X2RyX2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9saW51eF9k cl9zZXRfY29udHJvbAorKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0aGV5IHdv dWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKKysgICAoaTM4Nl9saW51eF9kcikuICAqLwog KwogK3N0YXRpYyB2b2lkCi0rZGVsZXRlX21haW5fdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpCisr aTM4Nl9saW51eF9kcl9kZXRhY2ggKHZvaWQpCiArewotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNz ZXJ0IChUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJ TEUgKHR5cGUpID09IE5VTEwpOwotKwotKyAgeGZyZWUgKFRZUEVfTkFNRSAodHlwZSkpOwotKyAg eGZyZWUgKFRZUEVfVEFHX05BTUUgKHR5cGUpKTsKKysgIGludCByZWdudW07CiArCi0rICBmb3Ig KGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytpKQotKyAgICB7Ci0rICAgICAgeGZy ZWUgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOworKyAgaTM4Nl9saW51eF9kcl9zZXQgKGlu ZmVyaW9yX3B0aWQsIERSX0NPTlRST0wsIDApOworKyAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0 dXMgKH4wVUwpOworKyAgZm9yIChyZWdudW0gPSBEUl9GSVJTVEFERFI7IHJlZ251bSA8PSBEUl9M QVNUQUREUjsgcmVnbnVtKyspCisrICAgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlk LCByZWdudW0sIDApOworK30KICsKLSsgICAgICBpZiAoVFlQRV9GSUVMRF9MT0NfS0lORCAodHlw ZSwgaSkgPT0gRklFTERfTE9DX0tJTkRfUEhZU05BTUUpCi0rCXhmcmVlIChUWVBFX0ZJRUxEX1NU QVRJQ19QSFlTTkFNRSAodHlwZSwgaSkpOwotKyAgICB9Ci0rICB4ZnJlZSAoVFlQRV9GSUVMRFMg KHR5cGUpKTsKKyBzdGF0aWMgdm9pZAorIGkzODZfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0 aWQpCisgeworQEAgLTk3Niw2ICs5OTEsNyBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAo dm9pZCkKKyAgIGkzODZfZHJfbG93LnJlc2V0X2FkZHIgPSBpMzg2X2xpbnV4X2RyX3Jlc2V0X2Fk ZHI7CisgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl9nZXRfc3RhdHVz OworICAgaTM4Nl9kcl9sb3cudW5zZXRfc3RhdHVzID0gaTM4Nl9saW51eF9kcl91bnNldF9zdGF0 dXM7CisrICBpMzg2X2RyX2xvdy5kZXRhY2ggPSBpMzg2X2xpbnV4X2RyX2RldGFjaDsKKyAgIGkz ODZfc2V0X2RlYnVnX3JlZ2lzdGVyX2xlbmd0aCAoNCk7CisgCisgICAvKiBPdmVycmlkZSB0aGUg ZGVmYXVsdCBwdHJhY2UgcmVzdW1lIG1ldGhvZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL2kzODYt bmF0LmMgYi9nZGIvaTM4Ni1uYXQuYworaW5kZXggZWFhMzY0NC4uMDkyMWM3ZSAxMDA2NDQKKy0t LSBhL2dkYi9pMzg2LW5hdC5jCisrKysgYi9nZGIvaTM4Ni1uYXQuYworQEAgLTUzMyw2ICs1MzMs MTcgQEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGlu dCB0eXBlLAorICAgcmV0dXJuIHJldHZhbDsKKyB9CisgCisrLyogU2VlIHRhcmdldF9kZXRhY2hf d2F0Y2hwb2ludHMuICAqLwogKwotKyAgZ2RiX2Fzc2VydCAoIUhBVkVfQ1BMVVNfU1RSVUNUICh0 eXBlKSk7Cisrc3RhdGljIGludAorK2kzODZfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorK3sK KysgIGlmIChpMzg2X2RyX2xvdy5kZXRhY2gpCisrICAgIGkzODZfZHJfbG93LmRldGFjaCAoKTsK ICsKLSsgIHhmcmVlIChUWVBFX01BSU5fVFlQRSAodHlwZSkpOworKyAgcmV0dXJuIDA7CiArfQog KwotKy8qIERlbGV0ZSBhbGwgdGhlIGluc3RhbmNlcyBvbiBUWVBFX0NIQUlOIG9mIFRZUEUsIGlu Y2x1ZGluZyB0aGVpciByZWZlcmVuY2VkCi0rICAgbWFpbl90eXBlLiAgVFlQRSBtdXN0IGJlIGEg cmVjbGFpbWFibGUgdHlwZSAtIG5laXRoZXIgcGVybWFuZW50IG5vciBvYmpmaWxlCi0rICAgYXNz b2NpYXRlZC4gICovCisgLyogUmV0dXJuIG5vbi16ZXJvIGlmIHdlIGNhbiB3YXRjaCBhIG1lbW9y eSByZWdpb24gdGhhdCBzdGFydHMgYXQKKyAgICBhZGRyZXNzIEFERFIgYW5kIHdob3NlIGxlbmd0 aCBpcyBMRU4gYnl0ZXMuICAqLworIAorQEAgLTY4NSw2ICs2OTYsNyBAQCBpMzg2X3VzZV93YXRj aHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKnQpCisgICB0LT50b19zdG9wcGVkX2RhdGFfYWRk cmVzcyA9IGkzODZfc3RvcHBlZF9kYXRhX2FkZHJlc3M7CisgICB0LT50b19pbnNlcnRfd2F0Y2hw b2ludCA9IGkzODZfaW5zZXJ0X3dhdGNocG9pbnQ7CisgICB0LT50b19yZW1vdmVfd2F0Y2hwb2lu dCA9IGkzODZfcmVtb3ZlX3dhdGNocG9pbnQ7CisrICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMg PSBpMzg2X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX2luc2VydF9od19icmVha3BvaW50 ID0gaTM4Nl9pbnNlcnRfaHdfYnJlYWtwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV9od19icmVha3Bv aW50ID0gaTM4Nl9yZW1vdmVfaHdfYnJlYWtwb2ludDsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL2kz ODYtbmF0LmggYi9nZGIvaTM4Ni1uYXQuaAoraW5kZXggNzMxN2U3ZC4uZWE5MTRhNSAxMDA2NDQK Ky0tLSBhL2dkYi9pMzg2LW5hdC5oCisrKysgYi9nZGIvaTM4Ni1uYXQuaAorQEAgLTYyLDYgKzYy LDEwIEBAIGV4dGVybiB2b2lkIGkzODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1Y3QgdGFyZ2V0X29w cyAqKTsKKyAgICAgICB1bnNldF9zdGF0dXMgICAgICAgICAgICAgLS0gdW5zZXQgdGhlIHNwZWNp ZmllZCBiaXRzIG9mIHRoZSBkZWJ1ZworIAkJCQkgIHN0YXR1cyAoRFI2KSByZWdpc3RlciBmb3Ig YWxsIExXUHMKKyAKKysgICAgICBkZXRhY2ggICAgICAgICAgICAgICAgICAgLS0gY2xlYXIgYWxs IGRlYnVnIHJlZ2lzdGVycyBvZiBvbmx5IHRoZQorKwkJCQkgIElORkVSSU9SX1BUSUQgdGFzayB3 aXRob3V0IGFmZmVjdGluZyBhbnkKKysJCQkJICByZWdpc3RlciBjYWNoZXMuCisrCisgICAgQWRk aXRpb25hbGx5LCB0aGUgbmF0aXZlIGZpbGUgc2hvdWxkIHNldCB0aGUgZGVidWdfcmVnaXN0ZXJf bGVuZ3RoCisgICAgZmllbGQgdG8gNCBvciA4IGRlcGVuZGluZyBvbiB0aGUgbnVtYmVyIG9mIGJ5 dGVzIHVzZWQgZm9yCisgICAgZGV1YmcgcmVnaXN0ZXJzLiAgKi8KK0BAIC03Myw2ICs3Nyw3IEBA IHN0cnVjdCBpMzg2X2RyX2xvd190eXBlCisgICAgIHZvaWQgKCpyZXNldF9hZGRyKSAoaW50KTsK KyAgICAgdW5zaWduZWQgbG9uZyAoKmdldF9zdGF0dXMpICh2b2lkKTsKKyAgICAgdm9pZCAoKnVu c2V0X3N0YXR1cykgKHVuc2lnbmVkIGxvbmcpOworKyAgICB2b2lkICgqZGV0YWNoKSAodm9pZCk7 CisgICAgIGludCBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGg7CisgICB9OworIAorZGlmZiAtLWdpdCBh L2dkYi9pbmZjYWxsLmMgYi9nZGIvaW5mY2FsbC5jCitpbmRleCAwYzlhM2FmLi45NTdlYzFkIDEw MDY0NAorLS0tIGEvZ2RiL2luZmNhbGwuYworKysrIGIvZ2RiL2luZmNhbGwuYworQEAgLTIyNSw2 ICsyMjUsNTYgQEAgdmFsdWVfYXJnX2NvZXJjZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0 cnVjdCB2YWx1ZSAqYXJnLAorICAgcmV0dXJuIHZhbHVlX2Nhc3QgKHR5cGUsIGFyZyk7CisgfQor IAorKy8qIENhbGwgZ251LWlmdW5jIChTVFRfR05VX0lGVU5DIC0gYSBmdW5jdGlvbiByZXR1cm5p bmcgYWRkcmVzc3Mgb2YgYSByZWFsCisrICAgZnVuY3Rpb24gdG8gY2FsbCkuICBQQyBpcyB0aGUg Z251LWlmdW5jIGZ1bmN0aW9uIGVudHJ5LiAgRnVuY3Rpb24gcmV0dXJucworKyAgIGZ1bmN0aW9u IGVudHJ5IG9mIHRoZSBnbnUtaWZ1bmMtcmVzb2x2ZWQgZnVuY3Rpb24gdG8gY2FsbC4gIElmIFJF VFZBTF9UWVBFUAorKyAgIGlzIG5vdCBOVUxMIGZpbGwgaW4gKlJFVFZBTF9UWVBFUCB3aXRoIHJl dHVybiB0eXBlIG9mIHRoZSBnbnUtaWZ1bmMtcmVzb2x2ZWQKKysgICBmdW5jdGlvbiB0byBjYWxs LiAgS2VlcCAqUkVUVkFMX1RZUEVQIGludGFjdCBpZiB0aGUgcmV0dXJuIHR5cGUgY291bGQgbm90 IGJlCisrICAgZm91bmQuICAqLwogKwotK3N0YXRpYyB2b2lkCi0rZGVsZXRlX3R5cGVfY2hhaW4g KHN0cnVjdCB0eXBlICp0eXBlKQorK3N0YXRpYyBDT1JFX0FERFIKKytnbnVfaWZ1bmNfcmVzb2x2 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKICt7Ci0rICBzdHJ1Y3Qg dHlwZSAqdHlwZV9pdGVyLCAqdHlwZV9pdGVyX3RvX2ZyZWU7Ci0rCi0rICBnZGJfYXNzZXJ0IChU WVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5 cGUpID09IE5VTEwpOwotKwotKyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7CisrICBjaGFyICpu YW1lX2F0X3BjOworKyAgQ09SRV9BRERSIHN0YXJ0X2F0X3BjLCBhZGRyZXNzOworKyAgc3RydWN0 IHR5cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9m dW5jX2Z1bmM7CisrICBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCAqYWRkcmVzc192YWw7CiArCi0r ICB0eXBlX2l0ZXIgPSB0eXBlOwotKyAgZG8KKysgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rp b24gKHBjLCAmbmFtZV9hdF9wYywgJnN0YXJ0X2F0X3BjLCBOVUxMKQorKyAgICAgICYmIHN0YXJ0 X2F0X3BjID09IHBjKQogKyAgICB7Ci0rICAgICAgdHlwZV9pdGVyX3RvX2ZyZWUgPSB0eXBlX2l0 ZXI7Ci0rICAgICAgdHlwZV9pdGVyID0gVFlQRV9DSEFJTiAodHlwZV9pdGVyKTsKLSsgICAgICB4 ZnJlZSAodHlwZV9pdGVyX3RvX2ZyZWUpOworKyAgICAgIGlmIChyZXNvbHZlX2dudV9pZnVuYyAo bmFtZV9hdF9wYywgJmFkZHJlc3MpKQorKwlyZXR1cm4gYWRkcmVzczsKICsgICAgfQotKyAgd2hp bGUgKHR5cGVfaXRlciAhPSB0eXBlKTsKLSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlw ZV9kaXNjYXJkYWJsZV90YWJsZS4gICovCi0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlz Y2FyZGFibGVfaGFzaCAoY29uc3Qgdm9pZCAqcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAq dHlwZSA9IHA7Ci0rCi0rICByZXR1cm4gaHRhYl9oYXNoX3BvaW50ZXIgKFRZUEVfTUFJTl9UWVBF ICh0eXBlKSk7Ci0rfQotKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRh YmxlX3RhYmxlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAo Y29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAq bGVmdCA9IGE7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJu IFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsK LSsvKiBBIGhlbHBlciBmb3IgdHlwZV9tYXJrX3VzZWQuICAqLworKyAgZWxzZQorKyAgICBuYW1l X2F0X3BjID0gTlVMTDsKICsKLStzdGF0aWMgaW50Ci0rdHlwZV9tYXJrX3VzZWRfY3Jhd2wgKHN0 cnVjdCB0eXBlICp0eXBlLCB2b2lkICp1bnVzZWQpCi0rewotKyAgaWYgKCFUWVBFX0RJU0NBUkRB QkxFICh0eXBlKSkKLSsgICAgcmV0dXJuIDA7CisrICBmdW5jdGlvbiA9IGFsbG9jYXRlX3ZhbHVl IChmdW5jX2Z1bmNfdHlwZSk7CisrICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24sIHBjKTsK ICsKLSsgIGlmIChUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJs ZV9hZ2VfY3VycmVudCkKLSsgICAgcmV0dXJuIDA7CisrICAvKiBnbnUtaWZ1bmNzIGhhdmUgbm8g YXJndW1lbnRzLiAgRlVOQ1RJT04gaXMgdGhlIGZ1bmN0aW9uIGVudHJ5IGFkZHJlc3MKKysgICAg IHdoaWxlIEFERFJFU1MgaXMgYSBwb3NzaWJsZSBmdW5jdGlvbiBkZXNjcmlwdG9yLi4gICovCisr ICBhZGRyZXNzX3ZhbCA9IGNhbGxfZnVuY3Rpb25fYnlfaGFuZCAoZnVuY3Rpb24sIDAsIE5VTEwp OworKyAgYWRkcmVzcyA9IHZhbHVlX2FzX2FkZHJlc3MgKGFkZHJlc3NfdmFsKTsKICsKLSsgIFRZ UEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7 CisrICBpZiAobmFtZV9hdF9wYykKKysgICAgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJj aCwgbmFtZV9hdF9wYywgYWRkcmVzcyk7CiArCi0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2Fs LiAgKi8KLSsgIHJldHVybiAxOworKyAgcmV0dXJuIGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNf cHRyX2FkZHIgKGdkYmFyY2gsIGFkZHJlc3MsICZjdXJyZW50X3RhcmdldCk7CiArfQogKwotKy8q IE1hcmsgVFlQRSBhbmQgaXRzIGNvbm5lY3RlZCB0eXBlcyBhcyB1c2VkIGluIHRoaXMgZnJlZV9h bGxfdHlwZXMgcGFzcy4gICovCi0rCi0rdm9pZAotK3R5cGVfbWFya191c2VkIChzdHJ1Y3QgdHlw ZSAqdHlwZSkKKytzdGF0aWMgc3RydWN0IHR5cGUgKgorK2ZpbmRfZnVuY3Rpb25fcmV0dXJuX3R5 cGUgKENPUkVfQUREUiBwYykKICt7Ci0rICBpZiAodHlwZSA9PSBOVUxMKQotKyAgICByZXR1cm47 CisrICBzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CiArCi0rICBp ZiAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKQotKyAgICByZXR1cm47CisrICBpZiAoc3ltICE9 IE5VTEwgJiYgQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAoc3ltKSkgPT0gcGMKKysg ICAgICAmJiBTWU1CT0xfVFlQRSAoc3ltKSAhPSBOVUxMKQorKyAgICByZXR1cm4gVFlQRV9UQVJH RVRfVFlQRSAoU1lNQk9MX1RZUEUgKHN5bSkpOwogKwotKyAgbWFpbl90eXBlX2NyYXdsICh0eXBl LCB0eXBlX21hcmtfdXNlZF9jcmF3bCwgTlVMTCk7CisrICByZXR1cm4gTlVMTDsKICt9CiArCi0r LyogQSB0cmF2ZXJzZSBjYWxsYmFjayBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSB3aGljaCBy ZW1vdmVzIGFueQotKyAgIHR5cGVfZGlzY2FyZGFibGUgd2hvc2UgcmVmZXJlbmNlIGNvdW50IGlz IG5vdyB6ZXJvICh1bnVzZWQgbGluaykuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX2Rpc2Nh cmRhYmxlX3JlbW92ZSAodm9pZCAqKnNsb3QsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBzdHJ1Y3Qg dHlwZSAqdHlwZSA9ICpzbG90OwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVNDQVJEQUJMRSAo dHlwZSkpOwotKwotKyAgaWYgKFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBlKSAhPSB0eXBlX2Rp c2NhcmRhYmxlX2FnZV9jdXJyZW50KQotKyAgICB7Ci0rICAgICAgZGVsZXRlX3R5cGVfY2hhaW4g KHR5cGUpOwotKwotKyAgICAgIGh0YWJfY2xlYXJfc2xvdCAodHlwZV9kaXNjYXJkYWJsZV90YWJs ZSwgc2xvdCk7CisgLyogRGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0 dXJuIHR5cGUgZnJvbSBpdHMgdmFsdWUuCisgICAgQ2FsbHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rp b24gaXMgbm90IHZhbGlkIGZvciBjYWxsaW5nLiAgKi8KKyAKK0BAIC0yMzMsNyArMjgzLDYgQEAg ZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAq KnJldHZhbF90eXBlKQorIHsKKyAgIHN0cnVjdCB0eXBlICpmdHlwZSA9IGNoZWNrX3R5cGVkZWYg KHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF90eXBlX2FyY2ggKGZ0eXBlKTsKKy0gIGVudW0gdHlwZV9jb2RlIGNvZGUgPSBUWVBFX0NPREUg KGZ0eXBlKTsKKyAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0gTlVMTDsKKyAgIENPUkVfQURE UiBmdW5hZGRyOworIAorQEAgLTI0MSwyNCArMjkwLDM0IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAo c3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKKyAgICAg IHBhcnQgb2YgaXQuICAqLworIAorICAgLyogRGV0ZXJtaW5lIGFkZHJlc3MgdG8gY2FsbC4gICov CistICBpZiAoY29kZSA9PSBUWVBFX0NPREVfRlVOQyB8fCBjb2RlID09IFRZUEVfQ09ERV9NRVRI T0QpCistICAgIHsKKy0gICAgICBmdW5hZGRyID0gdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24pOwor LSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CistICAgIH0KKy0g IGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKKysgIGlmIChUWVBFX0NPREUgKGZ0eXBl KSA9PSBUWVBFX0NPREVfRlVOQworKyAgICAgIHx8IFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVf Q09ERV9NRVRIT0QpCisrICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNzIChmdW5jdGlvbik7Cisr ICBlbHNlIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorICAgICB7Cisg ICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0aW9uKTsKKyAgICAgICBmdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKSk7CisgICAgICAgaWYg KFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisgCSAgfHwgVFlQRV9DT0RFIChm dHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKKysJZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9m cm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCisrCQkJCQkJICAgICAgJmN1cnJl bnRfdGFyZ2V0KTsKICsgICAgfQorKyAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09E RV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkK KysgICAgeworKyAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7CiAr Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogRnJlZSBhbGwgdGhlIHJlY2xhaW1hYmxlIHR5cGVz IHRoYXQgaGF2ZSBiZWVuIGFsbG9jYXRlZCBhbmQgdGhhdCBoYXZlCi0rICAgY3VycmVudGx5IHpl cm8gcmVmZXJlbmNlIGNvdW50ZXIuCi0rCi0rICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0 ZXIgZWFjaCBjb21tYW5kLCBzdWNjZXNzZnVsIG9yIG5vdC4gIFVzZSB0aGlzCi0rICAgY2xlYW51 cCBvbmx5IGluIHRoZSBHREIgaWRsZSBzdGF0ZSBhcyBHREIgb25seSBtYXJrcyB0aG9zZSB0eXBl cyB1c2VkIGJ5Ci0rICAgZ2xvYmFsbHkgdHJhY2tlZCBvYmplY3RzICh3aXRoIG5vIGF1dG92YXJp YWJsZSByZWZlcmVuY2VzIHRyYWNraW5nKS4gICovCisrICAgICAgaWYgKFRZUEVfR05VX0lGVU5D IChmdHlwZSkpCisgCXsKKy0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKKy0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKKy0J ICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOworKwkgIGZ1bmFkZHIgPSBn bnVfaWZ1bmNfcmVzb2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7CiArCisrCSAgLyogU2tpcCBxdWVy eWluZyB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCisrCSAg ICAgYXNrZWQgZm9yLiAgKi8KKysJICBpZiAocmV0dmFsX3R5cGUpCisrCSAgICB2YWx1ZV90eXBl ID0gZmluZF9mdW5jdGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisgCX0KKyAgICAgfQorLSAg ZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfSU5UKQorKyAgZWxzZSBpZiAoVFlQRV9DT0RFIChm dHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKKyAgICAgeworICAgICAgIC8qIEhhbmRsZSB0aGUgY2Fz ZSBvZiBmdW5jdGlvbnMgbGFja2luZyBkZWJ1Z2dpbmcgaW5mby4KKyAgICAgICAgICBUaGVpciB2 YWx1ZXMgYXJlIGNoYXJhY3RlcnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCitk aWZmIC0tZ2l0IGEvZ2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCitpbmRleCBjNGNkYjA2Li5k MjEzZjZhIDEwMDY0NAorLS0tIGEvZ2RiL2luZmNtZC5jCisrKysgYi9nZGIvaW5mY21kLmMKK0BA IC04MjIsNyArODIyLDcgQEAgbmV4dGlfY29tbWFuZCAoY2hhciAqY291bnRfc3RyaW5nLCBpbnQg ZnJvbV90dHkpCisgICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmluZyk7CisgfQorIAorLXN0YXRp YyB2b2lkCiArdm9pZAotK2ZyZWVfYWxsX3R5cGVzICh2b2lkKQotK3sKLSsgIC8qIE1hcmsgYSBu ZXcgcGFzcy4gIEFzIEdEQiBjaGVja3MgYWxsIHRoZSBlbnRyaWVzIHdlcmUgdmlzaXRlZCBhZnRl ciBlYWNoCi0rICAgICBwYXNzIHRoZXJlIGNhbm5vdCBiZSBhbnkgc3RhbGUgZW50cmllcyBhbHJl YWR5IGNvbnRhaW5pbmcgdGhlIGNoYW5nZWQKLSsgICAgIHZhbHVlLiAgKi8KLSsgIHR5cGVfZGlz Y2FyZGFibGVfYWdlX2N1cnJlbnQgXj0gMTsKLSsKLSsgIG9ic2VydmVyX25vdGlmeV9tYXJrX3Vz ZWQgKCk7CisgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpCisg eworICAgaW50IHRocmVhZCA9ICogKGludCAqKSBhcmc7CitAQCAtODYyLDEwICs4NjIsMTMgQEAg c3RlcF8xIChpbnQgc2tpcF9zdWJyb3V0aW5lcywgaW50IHNpbmdsZV9pbnN0LCBjaGFyICpjb3Vu dF9zdHJpbmcpCisgCisgICBpZiAoIXNpbmdsZV9pbnN0IHx8IHNraXBfc3Vicm91dGluZXMpCQkv KiBsZWF2ZSBzaSBjb21tYW5kIGFsb25lICovCisgICAgIHsKKysgICAgICBzdHJ1Y3QgdGhyZWFk X2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwogKwotKyAgaHRhYl90cmF2ZXJzZSAodHlw ZV9kaXNjYXJkYWJsZV90YWJsZSwgdHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30K KyAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQorICAJdGhyZWFkID0g cGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CiAgCi0gLyogSGVscGVyIGZ1bmN0aW9u cyB0byBpbml0aWFsaXplIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyB0eXBlcy4gICovCisgICAgICAg c2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgICAgICB0cC0+aW5pdGlhdGluZ19m cmFtZSA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkpOwogIAotQEAgLTM1MTEs NiArNDA2Niw4IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gp Ci0gICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQp OwotICAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCi0gICAgID0gbG9va3VwX3BvaW50 ZXJfdHlwZSAobG9va3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lk KSk7Ci0rICBidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCi0rICAgID0gbG9va3VwX2Z1 bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CisgICAgICAgbWFr ZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0aHJlYWQpOwor ICAgICB9CitAQCAtMTIxOSw2ICsxMjIyLDE1IEBAIHNpZ25hbF9jb21tYW5kIChjaGFyICpzaWdu dW1fZXhwLCBpbnQgZnJvbV90dHkpCisgICBwcm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2ln LCAwKTsKKyB9CiAgCi0gICAvKiBUaGlzIHR5cGUgcmVwcmVzZW50cyBhIEdEQiBpbnRlcm5hbCBm dW5jdGlvbi4gICovCi0gICBidWlsdGluX3R5cGUtPmludGVybmFsX2ZuCi1AQCAtMzYyNCw2ICs0 MTgxLDE4IEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gCQkgIjx0 ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9iamZpbGUpOwotICAgVFlQRV9UQVJHRVRf VFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfc3ltYm9sKQotICAgICA9IG9iamZpbGVf dHlwZS0+YnVpbHRpbl9pbnQ7Ci0rICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1 bmNfc3ltYm9sCi0rICAgID0gaW5pdF90eXBlIChUWVBFX0NPREVfRlVOQywgMSwgVFlQRV9GTEFH X0dOVV9JRlVOQywKLSsJCSAiPHRleHQgZ251LWluZGlyZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBu byBkZWJ1ZyBpbmZvPiIsCi0rCQkgb2JqZmlsZSk7Ci0rICBUWVBFX1RBUkdFVF9UWVBFIChvYmpm aWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sKQotKyAgICA9IG9iamZpbGVf dHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSsgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19nb3Rf cGx0X3N5bWJvbAotKyAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX1BUUiwgZ2RiYXJjaF9hZGRy X2JpdCAoZ2RiYXJjaCkgLyA4LCAwLAotKwkJICI8dGV4dCBmcm9tIGp1bXAgc2xvdCBpbiAuZ290 LnBsdCwgbm8gZGVidWcgaW5mbz4iLAotKwkJIG9iamZpbGUpOwotKyAgVFlQRV9UQVJHRVRfVFlQ RSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sKQotKyAgICA9IG9iamZpbGVf dHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKLSAgIG9iamZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRh X3N5bWJvbAotICAgICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0lOVCwKLSAJCSBnZGJhcmNoX2lu dF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwgMCwKLUBAIC0zNjc4LDYgKzQyNDcsMTEg QEAgdm9pZAotIF9pbml0aWFsaXplX2dkYnR5cGVzICh2b2lkKQotIHsKLSAgIGdkYnR5cGVzX2Rh dGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9pbml0IChnZGJ0eXBlc19wb3N0X2luaXQp OwotKwotKyAgdHlwZV9kaXNjYXJkYWJsZV90YWJsZSA9IGh0YWJfY3JlYXRlX2FsbG9jICgyMCwg dHlwZV9kaXNjYXJkYWJsZV9oYXNoLAotKwkJCQkJICAgICB0eXBlX2Rpc2NhcmRhYmxlX2VxdWFs LCBOVUxMLAotKwkJCQkJICAgICB4Y2FsbG9jLCB4ZnJlZSk7CisrLyogQSBjb250aW51YXRpb24g Y2FsbGJhY2sgZm9yIHVudGlsX25leHRfY29tbWFuZC4gICovCiArCi0gICBvYmpmaWxlX3R5cGVf ZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKLSAKLSAgIGFkZF9zZXRzaG93X3ppbnRl Z2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywgXygiXAotZGlm ZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKLWluZGV4IDA4NTI3MGUu LmNiMmI4OGUgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RidHlwZXMuaAotKysrIGIvZ2RiL2dkYnR5cGVz LmgKLUBAIC0xNzEsNiArMTcxLDcgQEAgZW51bSB0eXBlX2ZsYWdfdmFsdWUKLSAgIFRZUEVfRkxB R19GSVhFRF9JTlNUQU5DRSA9ICgxIDw8IDE1KSwKLSAgIFRZUEVfRkxBR19TVFVCX1NVUFBPUlRF RCA9ICgxIDw8IDE2KSwKLSAgIFRZUEVfRkxBR19OT1RURVhUID0gKDEgPDwgMTcpLAotKyAgVFlQ RV9GTEFHX0dOVV9JRlVOQyA9ICgxIDw8IDE4KSwKKytzdGF0aWMgdm9pZAorK3VudGlsX25leHRf Y29udGludWF0aW9uICh2b2lkICphcmcpCisreworKyAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9 IGFyZzsKKysgIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKHRwLT5udW0pOworK30KKysKKyAv KiBQcm9jZWVkIHVudGlsIHdlIHJlYWNoIGEgZGlmZmVyZW50IHNvdXJjZSBsaW5lIHdpdGggcGMg Z3JlYXRlciB0aGFuCisgICAgb3VyIGN1cnJlbnQgb25lIG9yIGV4aXQgdGhlIGZ1bmN0aW9uLiAg V2Ugc2tpcCBjYWxscyBpbiBib3RoIGNhc2VzLgogIAotICAgLyogVXNlZCBmb3IgZXJyb3ItY2hl Y2tpbmcuICAqLwotICAgVFlQRV9GTEFHX01JTiA9IFRZUEVfRkxBR19VTlNJR05FRAotQEAgLTIx NCw2ICsyMTUsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKK0BAIC0xMjM1LDYg KzEyNDcsOCBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAgIHN0cnVjdCBz eW1ib2wgKmZ1bmM7CisgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKyAgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CisrICBpbnQgdGhyZWFkID0gdHAt Pm51bTsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CiAgCi0gI2RlZmluZSBUWVBFX1RB UkdFVF9TVFVCKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCisgICBj bGVhcl9wcm9jZWVkX3N0YXR1cyAoKTsKKyAgIHNldF9zdGVwX2ZyYW1lICgpOworQEAgLTEyNzAs NyArMTI4NCwxOSBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKICAKLSsvKiBU eXBlIG5lZWRzIHRvIGJlIGV2YWx1YXRlZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyBy ZXN1bHRzIG11c3Qgbm90IGJlCi0rICAgc3RpY2t5LiAgKi8KKyAgIHRwLT5zdGVwX211bHRpID0g MDsJCS8qIE9ubHkgb25lIGNhbGwgdG8gcHJvY2VlZCAqLworIAorKyAgc2V0X2xvbmdqbXBfYnJl YWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lk IChmcmFtZSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2Jy ZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiArCi0rI2RlZmluZSBUWVBFX0RZTkFNSUModCkJ CShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZHluYW1pYykKKyAgIHByb2NlZWQgKChDT1JFX0FE RFIpIC0xLCBUQVJHRVRfU0lHTkFMX0RFRkFVTFQsIDEpOwogKwotIC8qIFN0YXRpYyB0eXBlLiAg SWYgdGhpcyBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAotICAqIGEgc3RhdGlj IG1vZGlmaWVyLgotICAqIE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0 aWMgZGF0YSBtZW1iZXJzCi1AQCAtMjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2Vf ZmxhZ192YWx1ZQorKyAgaWYgKHRhcmdldF9jYW5fYXN5bmNfcCAoKSAmJiBpc19ydW5uaW5nIChp bmZlcmlvcl9wdGlkKSkKKysgICAgeworKyAgICAgIGRpc2NhcmRfY2xlYW51cHMgKG9sZF9jaGFp bik7CisrICAgICAgYWRkX2NvbnRpbnVhdGlvbiAodHAsIHVudGlsX25leHRfY29udGludWF0aW9u LCB0cCwgTlVMTCk7CisrICAgIH0KKysgIGVsc2UKKysgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFp bik7CisgfQogIAotICNkZWZpbmUgVFlQRV9OT1RURVhUKHQpCQkoVFlQRV9NQUlOX1RZUEUgKHQp LT5mbGFnX25vdHRleHQpCisgc3RhdGljIHZvaWQKK0BAIC0xNDYzLDYgKzE0ODksNyBAQCBmaW5p c2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKKyAgIGlmIChicyAhPSBOVUxMICYm IHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKKyAgICAgb2JzZXJ2ZXJfbm90aWZ5X25vcm1hbF9zdG9w IChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7CisgICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJl YWtwb2ludCk7CisrICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbmZlcmlvcl90aHJlYWQg KCktPm51bSk7CisgfQogIAotKy8qIFVzZWQgb25seSBmb3IgVFlQRV9DT0RFX0ZVTkMgd2hlcmUg aXQgc3BlY2lmaWVzIHRoZSByZWFsIGZ1bmN0aW9uCi0rICAgYWRkcmVzcyBpcyByZXR1cm5lZCBi eSB0aGlzIGZ1bmN0aW9uIGNhbGwuICBUWVBFX1RBUkdFVF9UWVBFIGRldGVybWluZXMgdGhlCi0r ICAgZmluYWwgcmV0dXJuZWQgZnVuY3Rpb24gdHlwZSB0byBiZSBwcmVzZW50ZWQgdG8gdXNlci4g ICovCi0rCi0rI2RlZmluZSBUWVBFX0dOVV9JRlVOQyh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5m bGFnX2dudV9pZnVuYykKLSsKLSAvKiBUeXBlIG93bmVyLiAgSWYgVFlQRV9PQkpGSUxFX09XTkVE IGlzIHRydWUsIHRoZSB0eXBlIGlzIG93bmVkIGJ5Ci0gICAgdGhlIG9iamZpbGUgcmV0cmlldmVk IGFzIFRZUEVfT0JKRklMRS4gIE90aGVyd2Vpc2UsIHRoZSB0eXBlIGlzCi0gICAgb3duZWQgYnkg YW4gYXJjaGl0ZWN0dXJlOyBUWVBFX09CSkZJTEUgaXMgTlVMTCBpbiB0aGlzIGNhc2UuICAqLwot QEAgLTI4NSw2ICsyOTcsNDggQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKKyBzdGF0 aWMgdm9pZAorQEAgLTE1NDYsNiArMTU3Myw3IEBAIGZpbmlzaF9mb3J3YXJkIChzdHJ1Y3Qgc3lt Ym9sICpmdW5jdGlvbiwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgc3RydWN0IGJyZWFr cG9pbnQgKmJyZWFrcG9pbnQ7CisgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOworICAgc3Ry dWN0IGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzICpjYXJnczsKKysgIGludCB0aHJl YWQgPSB0cC0+bnVtOwogIAotICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAoVFlQRV9N QUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQorICAgc2FsID0gZmluZF9wY19saW5l IChnZXRfZnJhbWVfcGMgKGZyYW1lKSwgMCk7CisgICBzYWwucGMgPSBnZXRfZnJhbWVfcGMgKGZy YW1lKTsKK0BAIC0xNTU2LDYgKzE1ODQsMTAgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1i b2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCi0rLyogRGVmaW5lIHRo aXMgdHlwZSBhcyBiZWluZyByZWNsYWltYWJsZSBkdXJpbmcgZnJlZV9hbGxfdHlwZXMuICBUeXBl IGlzCi0rICAgcmVxdWlyZWQgdG8gYmUgaGF2ZSBUWVBFX09CSkZJTEUgc2V0IHRvIE5VTEwuICBT ZXR0aW5nIHRoaXMgZmxhZyByZXF1aXJlcwotKyAgIGluaXRpYWxpemluZyBUWVBFX0RJU0NBUkRB QkxFX0FHRSwgc2VlIGFsbG9jX3R5cGVfZGlzY2FyZGFibGUuICAqLwotKwotKyNkZWZpbmUgVFlQ RV9ESVNDQVJEQUJMRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlKQot KwotKy8qIE1hcmtlciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJr X3VzZWQgYnkgdGhpcwotKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGlu ZyBwYXNzLiAgQ3VycmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCi0rICAgYnkgVFlQRV9ESVNDQVJE QUJMRV9BR0VfQ1VSUkVOVC4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0 KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKLSsKLSsvKiBJcyBI SUdIX0JPVU5EIGEgbG93LWJvdW5kIHJlbGF0aXZlIGNvdW50ICgxKSBvciB0aGUgaGlnaCBib3Vu ZCBpdHNlbGYgKDApPyAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19D T1VOVChyYW5nZV90eXBlKSBcCi0rICAoVFlQRV9NQUlOX1RZUEUgKHJhbmdlX3R5cGUpLT5mbGFn X3JhbmdlX2hpZ2hfYm91bmRfaXNfY291bnQpCi0rCi0rLyogTm90IGFsbG9jYXRlZC4gIFRZUEVf QUxMT0NBVEVEKHQpIG11c3QgYmUgTlVMTCBpbiBzdWNoIGNhc2UuICBJZiB0aGlzIGZsYWcKLSsg ICBpcyB1bnNldCBhbmQgVFlQRV9BTExPQ0FURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlz IGFsbG9jYXRlZC4gIElmIHRoaXMKLSsgICBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRF RCh0KSBpcyBub3QgTlVMTCB0aGVuIGl0cyBEV0FSRiBibG9jawotKyAgIGRldGVybWluZXMgdGhl IGFjdHVhbCBhbGxvY2F0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FMTE9D QVRFRCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0ZWQpCi0rCi0rLyog Tm90IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2gg Y2FzZS4gIElmIHRoaXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkg aXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgotKyAgIHRoaXMgZmxhZyBp cyB1bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJG IGJsb2NrCi0rICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0YXRlLiAgKi8K LSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FTU09DSUFURUQodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ ZmxhZ19ub3RfYXNzb2NpYXRlZCkKLSsKLSsvKiBBZGRyZXNzIG9mIHRoZSBhY3R1YWwgZGF0YSBh cyBmb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4gIEl0cyBkd2FyZiBibG9jayBtdXN0Ci0rICAgbm90 IGJlIGV2YWx1YXRlZCB1bmxlc3MgYm90aCBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9U X0FTU09DSUFURUQgYXJlCi0rICAgZmFsc2UuICBJZiBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQURE UiBzZXQgdGhlbiBUWVBFX0RBVEFfTE9DQVRJT05fQUREUiB2YWx1ZQotKyAgIGlzIHRoZSBhY3R1 YWwgZGF0YSBhZGRyZXNzIHZhbHVlLiAgSWYgdW5zZXQgYW5kCi0rICAgVFlQRV9EQVRBX0xPQ0FU SU9OX0RXQVJGX0JMT0NLIGlzIE5VTEwgdGhlbiB0aGUgdmFsdWUgaXMgdGhlIG5vcm1hbAotKyAg IHZhbHVlX3Jhd19hZGRyZXNzLiAgSWYgdW5zZXQgYW5kIFRZUEVfREFUQV9MT0NBVElPTl9EV0FS Rl9CTE9DSyBpcyBub3QgTlVMTAotKyAgIHRoZW4gaXRzIERXQVJGIGJsb2NrIGRldGVybWluZXMg dGhlIGFjdHVhbCBkYXRhIGFkZHJlc3MuICAqLwotKwotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FU SU9OX0lTX0FERFIodCkgXAotKyAgKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kYXRhX2xvY2F0 aW9uX2lzX2FkZHIpCisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFrcG9p bnQgKGJyZWFrcG9pbnQpOworIAorKyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsK KysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7CisrICBtYWtl X2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CiAr Ci0gLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGluZyB0 eXBlIGhhcyBhCi0gICogY29uc3QgbW9kaWZpZXIuCi0gICovCi1AQCAtMzg5LDExICs0NDMsMTkg QEAgc3RydWN0IG1haW5fdHlwZQotICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsKLSAg IHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKLSAgIHVuc2lnbmVkIGludCBm bGFnX25vdHRleHQgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5jIDogMTsKLSAg IHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKLSAgIHVuc2lnbmVkIGludCBm bGFnX29iamZpbGVfb3duZWQgOiAxOwotICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUgd2FzIGRlY2xh cmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgotICAgICAgInN0cnVjdCIuICAqLwotICAgdW5z aWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdf ZGlzY2FyZGFibGUgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGVfYWdlIDog MTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2R5bmFtaWMgOiAxOwotKyAgdW5zaWduZWQgaW50IGZs YWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxhZ19u b3RfYWxsb2NhdGVkIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hc3NvY2lhdGVkIDog MTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkciA6IDE7CisgICB0 cC0+cHJvY2VlZF90b19maW5pc2ggPSAxOyAgICAvKiBXZSB3YW50IHN0b3BfcmVnaXN0ZXJzLCBw bGVhc2UuLi4gICovCisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNhcmdzKSk7CiAgCi0g ICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxkIG9mIHRoZSB0eXBlX3Nw ZWNpZmljIHVuaW9uCi0gICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlzIHR5cGUsIGlmIGFueS4g ICovCi1AQCAtNDY3LDYgKzUyOSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCitkaWZmIC0tZ2l0IGEv Z2RiL2luZmVyaW9yLmggYi9nZGIvaW5mZXJpb3IuaAoraW5kZXggNWFiZWM2OC4uZTMwOTI3NyAx MDA2NDQKKy0tLSBhL2dkYi9pbmZlcmlvci5oCisrKysgYi9nZGIvaW5mZXJpb3IuaAorQEAgLTI5 MSw2ICsyOTEsOCBAQCBleHRlcm4gdm9pZCBpbnRlcnJ1cHRfdGFyZ2V0X2NvbW1hbmQgKGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSk7CiAgCi0gICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7Cisg ZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF8xIChpbnQgYWxsX3RocmVhZHMpOwogIAotKyAg LyogRm9yIERXX0FUX2RhdGFfbG9jYXRpb24uICAqLwotKyAgdW5pb24KLSsgICAgewotKyAgICAg IHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7Ci0rICAgICAgQ09SRV9B RERSIGFkZHI7Ci0rICAgIH0KLSsgIGRhdGFfbG9jYXRpb247Ci0rCi0rICAvKiBGb3IgRFdfQVRf YWxsb2NhdGVkLiAgKi8KLSsgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYWxsb2NhdGVk OwotKwotKyAgLyogRm9yIERXX0FUX2Fzc29jaWF0ZWQuICAqLwotKyAgc3RydWN0IGR3YXJmMl9s b2NleHByX2JhdG9uICphc3NvY2lhdGVkOworK2V4dGVybiB2b2lkIGRlbGV0ZV9sb25nam1wX2Jy ZWFrcG9pbnRfY2xlYW51cCAodm9pZCAqYXJnKTsKICsKLSAgIC8qIEZvciBzdHJ1Y3R1cmUgYW5k IHVuaW9uIHR5cGVzLCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQuCi0gICAgICBGb3Igc2V0 IGFuZCBwYXNjYWwgYXJyYXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmllbGQiLAotICAgICAgd2hv c2UgdHlwZSBpcyB0aGUgZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBhcnJheS4KLUBAIC01NDAs MTMgKzYxNiwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgZXh0ZXJuIHZvaWQgZGV0YWNoX2NvbW1h bmQgKGNoYXIgKiwgaW50KTsKICAKLSAgICAgc3RydWN0IHJhbmdlX2JvdW5kcwotICAgICB7Ci0r ICAgICAgc3RydWN0Ci0rCXsKLSsJICB1bmlvbgotKwkgICAgewotKwkgICAgICBMT05HRVNUIGNv bnN0YW50OwotKwkgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmR3YXJmX2Jsb2Nr OwotKwkgICAgICBzdHJ1Y3QKLSsJCXsKLSsJCSAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9u ICpsb2NsaXN0OwotKwkJICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsJCX0KLSsJICAgICAgZHdhcmZf bG9jbGlzdDsKLSsJICAgIH0KLSsJICB1OwotKwkgIGVudW0gcmFuZ2VfYm91bmRfa2luZAotKwkg ICAgewotKwkgICAgICBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5ULAotKwkgICAgICBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLLAotKwkgICAgICBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xP Q0xJU1QKLSsJICAgIH0KLSsJICBraW5kOwotKwl9Ci0gICAgICAgLyogTG93IGJvdW5kIG9mIHJh bmdlLiAqLwotLQotLSAgICAgIExPTkdFU1QgbG93OwotLQotKyAgICAgIGxvdywKLSAgICAgICAv KiBIaWdoIGJvdW5kIG9mIHJhbmdlLiAqLwotLQotLSAgICAgIExPTkdFU1QgaGlnaDsKLSsgICAg ICBoaWdoLAotKyAgICAgIC8qIEJ5dGUgc3RyaWRlIG9mIHJhbmdlLiAqLwotKyAgICAgIGJ5dGVf c3RyaWRlOworIGV4dGVybiB2b2lkIG5vdGljZV9uZXdfaW5mZXJpb3IgKHB0aWRfdCwgaW50LCBp bnQpOworZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYworaW5kZXggNTdm MmFiOC4uNTc2MmE3ZiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZydW4uYworKysrIGIvZ2RiL2luZnJ1 bi5jCitAQCAtNDUsNiArNDUsOCBAQAorICNpbmNsdWRlICJsYW5ndWFnZS5oIgorICNpbmNsdWRl ICJzb2xpYi5oIgorICNpbmNsdWRlICJtYWluLmgiCisrI2luY2x1ZGUgImRpY3Rpb25hcnkuaCIK KysjaW5jbHVkZSAiYmxvY2suaCIKKyAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgorICNpbmNsdWRl ICJtaS9taS1jb21tb24uaCIKKyAjaW5jbHVkZSAiZXZlbnQtdG9wLmgiCitAQCAtMzY3LDYgKzM2 OSw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQorICAgICAgcGFyZW50IHRocmVhZCBzdHJ1Y3R1cmUn cyBydW4gY29udHJvbCByZWxhdGVkIGZpZWxkcywgbm90IGp1c3QgdGhlc2UuCisgICAgICBJbml0 aWFsaXplZCB0byBhdm9pZCAibWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCIgd2FybmluZ3MgZnJv bSBnY2MuICAqLworICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQg PSBOVUxMOworKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2lu dCA9IE5VTEw7CisgICBDT1JFX0FERFIgc3RlcF9yYW5nZV9zdGFydCA9IDA7CisgICBDT1JFX0FE RFIgc3RlcF9yYW5nZV9lbmQgPSAwOworICAgc3RydWN0IGZyYW1lX2lkIHN0ZXBfZnJhbWVfaWQg PSB7IDAgfTsKK0BAIC00MTksNiArNDIyLDggQEAgZm9sbG93X2ZvcmsgKHZvaWQpCisgCSAgICBz dGVwX3JhbmdlX3N0YXJ0ID0gdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQ7CisgCSAgICBzdGVwX3Jhbmdl X2VuZCA9IHRwLT5zdGVwX3JhbmdlX2VuZDsKKyAJICAgIHN0ZXBfZnJhbWVfaWQgPSB0cC0+c3Rl cF9mcmFtZV9pZDsKKysJICAgIGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAorKwkgICAgICA9 IGNsb25lX21vbWVudGFyeV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3Bv aW50KTsKICAKLSAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBv ZiBsb3cgYW5kIGhpZ2ggYXJlCi0gICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNw ZWN0aXZlIHJhbmdlIHZhbHVlIGlzCi1AQCAtODg5LDkgKzk4Niw5IEBAIGV4dGVybiB2b2lkIGFs bG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOwotICNkZWZpbmUgVFlQRV9QT0lO VEVSX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSktPnBvaW50ZXJfdHlwZQotICNkZWZpbmUgVFlQ RV9SRUZFUkVOQ0VfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cmVmZXJlbmNlX3R5cGUKLSAj ZGVmaW5lIFRZUEVfQ0hBSU4odGhpc3R5cGUpICh0aGlzdHlwZSktPmNoYWluCi0tLyogTm90ZSB0 aGF0IGlmIHRoaXN0eXBlIGlzIGEgVFlQRURFRiB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsIGNoZWNr X3R5cGVkZWYuCi0tICAgQnV0IGNoZWNrX3R5cGVkZWYgZG9lcyBzZXQgdGhlIFRZUEVfTEVOR1RI IG9mIHRoZSBUWVBFREVGIHR5cGUsCi0tICAgc28geW91IG9ubHkgaGF2ZSB0byBjYWxsIGNoZWNr X3R5cGVkZWYgb25jZS4gIFNpbmNlIGFsbG9jYXRlX3ZhbHVlCi0rLyogTm90ZSB0aGF0IGlmIHRo aXN0eXBlIGlzIGEgVFlQRURFRiwgQVJSQVkgb3IgU1RSSU5HIHR5cGUsIHlvdSBoYXZlIHRvIGNh bGwKLSsgICBjaGVja190eXBlZGVmLiAgQnV0IGNoZWNrX3R5cGVkZWYgZG9lcyBzZXQgdGhlIFRZ UEVfTEVOR1RIIG9mIHRoZSBUWVBFREVGCi0rICAgdHlwZSwgc28geW91IG9ubHkgaGF2ZSB0byBj YWxsIGNoZWNrX3R5cGVkZWYgb25jZS4gIFNpbmNlIGFsbG9jYXRlX3ZhbHVlCi0gICAgY2FsbHMg Y2hlY2tfdHlwZWRlZiwgVFlQRV9MRU5HVEggKFZBTFVFX1RZUEUgKFgpKSBpcyBzYWZlLiAgKi8K LSAjZGVmaW5lIFRZUEVfTEVOR1RIKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5sZW5ndGgKLSAvKiBO b3RlIHRoYXQgVFlQRV9DT0RFIGNhbiBiZSBUWVBFX0NPREVfVFlQRURFRiwgc28gaWYgeW91IHdh bnQgdGhlIHJlYWwKLUBAIC04OTksMTEgKzk5NiwxNiBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9n bmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfQ09ERSh0aGlzdHlw ZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5jb2RlCi0gI2RlZmluZSBUWVBFX05GSUVMRFMo dGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxkcwotICNkZWZpbmUgVFlQ RV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Zmxkc19ibmRzLmZp ZWxkcwotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JMT0NLKHRoaXN0eXBlKSBU WVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmR3YXJmX2Jsb2NrCi0rI2Rl ZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fQUREUih0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRo aXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5hZGRyCi0rI2RlZmluZSBUWVBFX0FMTE9DQVRFRCh0aGlz dHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRoaXN0eXBlKS0+YWxsb2NhdGVkCi0rI2RlZmluZSBUWVBF X0FTU09DSUFURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmFzc29jaWF0 ZWQKKyAJICAgIC8qIEZvciBub3csIGRlbGV0ZSB0aGUgcGFyZW50J3Mgc3IgYnJlYWtwb2ludCwg b3RoZXJ3aXNlLAorIAkgICAgICAgcGFyZW50L2NoaWxkIHNyIGJyZWFrcG9pbnRzIGFyZSBjb25z aWRlcmVkIGR1cGxpY2F0ZXMsCitAQCAtNDI5LDYgKzQzNCw3IEBAIGZvbGxvd19mb3JrICh2b2lk KQorIAkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQgPSAwOworIAkgICAgdHAtPnN0ZXBfcmFuZ2Vf ZW5kID0gMDsKKyAJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gbnVsbF9mcmFtZV9pZDsKKysJICAg IGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKKyAJICB9CiAgCi0gI2Rl ZmluZSBUWVBFX0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQotICNk ZWZpbmUgVFlQRV9SQU5HRV9EQVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSkt PmZsZHNfYm5kcy5ib3VuZHMKLS0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUpIFRZ UEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93Ci0tI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQo cmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCi0rI2RlZmluZSBU WVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxv dy51LmNvbnN0YW50Ci0rI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9S QU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoLnUuY29uc3RhbnQKLSsjZGVmaW5lIFRZUEVfQllU RV9TVFJJREUocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5ieXRlX3N0 cmlkZS51LmNvbnN0YW50Ci0gI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklORUQocmFuZ2Vf dHlwZSkgXAotICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3VuZGVmaW5lZAot ICNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi1AQCAtOTIw LDcgKzEwMjIsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0 IHR5cGUgKik7Ci0gICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlw ZSkpKSkKKyAJcGFyZW50ID0gaW5mZXJpb3JfcHRpZDsKK0BAIC00NzAsNiArNDc2LDggQEAgZm9s bG93X2ZvcmsgKHZvaWQpCisgCQkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQgPSBzdGVwX3Jhbmdl X3N0YXJ0OworIAkJICAgIHRwLT5zdGVwX3JhbmdlX2VuZCA9IHN0ZXBfcmFuZ2VfZW5kOworIAkJ ICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gc3RlcF9mcmFtZV9pZDsKKysJCSAgICB0cC0+ZXhjZXB0 aW9uX3Jlc3VtZV9icmVha3BvaW50CisrCQkgICAgICA9IGV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludDsKKyAJCSAgfQorIAkJZWxzZQorIAkJICB7CitAQCAtNTIzLDYgKzUzMSw5IEBAIGZvbGxv d19pbmZlcmlvcl9yZXNldF9icmVha3BvaW50cyAodm9pZCkKKyAgIGlmICh0cC0+c3RlcF9yZXN1 bWVfYnJlYWtwb2ludCkKKyAgICAgYnJlYWtwb2ludF9yZV9zZXRfdGhyZWFkICh0cC0+c3RlcF9y ZXN1bWVfYnJlYWtwb2ludCk7CiAgCi0gI2RlZmluZSBUWVBFX0FSUkFZX0xPV0VSX0JPVU5EX1ZB TFVFKGFycmF5dHlwZSkgXAotLSAgIChUWVBFX0xPV19CT1VORChUWVBFX0lOREVYX1RZUEUoKGFy cmF5dHlwZSkpKSkKLSsgIFRZUEVfTE9XX0JPVU5EIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlw ZSkpCisrICBpZiAodHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKKysgICAgYnJlYWtw b2ludF9yZV9zZXRfdGhyZWFkICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKICsK LSsvKiBUWVBFX0JZVEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpIHdpdGgg YSBmYWxsYmFjayB0byB0aGUKLSsgICBlbGVtZW50IHNpemUgaWYgbm8gc3BlY2lmaWMgc3RyaWRl IHZhbHVlIGlzIGtub3duLiAgKi8KLSsjZGVmaW5lIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFM VUUoYXJyYXl0eXBlKQkJXAotKyAgKFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAo YXJyYXl0eXBlKSkgPT0gMAlcCi0rICAgPyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAo YXJyYXl0eXBlKSkJCVwKLSsgICA6IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAo YXJyYXl0eXBlKSkpCisgICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMgaW4gdGhlIGNoaWxk LiAgVGhlIHVzZXIgbWF5IGhhdmUgc2V0CisgICAgICBicmVha3BvaW50cyBhZnRlciBjYXRjaGlu ZyB0aGUgZm9yaywgaW4gd2hpY2ggY2FzZSB0aG9zZQorICAgICAgd2VyZSBuZXZlciBzZXQgaW4g dGhlIGNoaWxkLCBidXQgb25seSBpbiB0aGUgcGFyZW50LiAgVGhpcyBtYWtlcworQEAgLTc2MCw2 ICs3NzEsNyBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhlY2RfcGF0aG5hbWUp CisgICAvKiBJZiB0aGVyZSB3YXMgb25lLCBpdCdzIGdvbmUgbm93LiAgV2UgY2Fubm90IHRydWx5 IHN0ZXAtdG8tbmV4dAorICAgICAgc3RhdGVtZW50IHRocm91Z2ggYW4gZXhlYygpLiAqLworICAg dGgtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOworKyAgdGgtPmV4Y2VwdGlvbl9yZXN1 bWVfYnJlYWtwb2ludCA9IE5VTEw7CisgICB0aC0+c3RlcF9yYW5nZV9zdGFydCA9IDA7CisgICB0 aC0+c3RlcF9yYW5nZV9lbmQgPSAwOwogIAotIC8qIEMrKyAqLworQEAgLTIxOTAsNiArMjIwMiw4 IEBAIHN0YXRpYyB2b2lkIGluc2VydF9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2F0X3NhbCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgCQkJCQkJICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNy X3NhbCwKKyAJCQkJCQkgIHN0cnVjdCBmcmFtZV9pZCBzcl9pZCk7Cisgc3RhdGljIHZvaWQgaW5z ZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICosIENPUkVfQURE Uik7Cisrc3RhdGljIHZvaWQgY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlv bl9jb250cm9sX3N0YXRlICosCisrCQkJCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqLCBzdHJ1Y3Qg c3ltYm9sICopOwogIAotQEAgLTExNDEsNiArMTI1MCwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBl Ci0gICAgICAoKikgKCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4g ICovCi0gICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyBzdGF0aWMgdm9pZCBzdG9w X3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Cisgc3RhdGlj IHZvaWQgcHJlcGFyZV90b193YWl0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVj cyk7CitAQCAtMjMxMyw2ICsyMzI3LDcgQEAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRf Y2FsbGJhY2sgKHN0cnVjdCB0aHJlYWRfaW5mbyAqaW5mbywgdm9pZCAqZGF0YSkKKyAgICAgcmV0 dXJuIDA7CiAgCi0rICAvKiBgZnVuY3Rpb24gcmV0dXJuaW5nIHBvaW50ZXIgdG8gZnVuY3Rpb24g KHJldHVybmluZyB2b2lkKScgdHlwZS4KLSsgICAgIFRoZSBmaW5hbCB2b2lkIHJldHVybiB0eXBl IGlzIG5vdCBzaWduaWZpY2FudCBmb3IgaXQuICAqLwotKyAgc3RydWN0IHR5cGUgKmJ1aWx0aW5f ZnVuY19mdW5jOwotKworICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOwor KyAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7CisgICByZXR1cm4g MDsKKyB9CiAgCi0gICAvKiBTcGVjaWFsLXB1cnBvc2UgdHlwZXMuICAqLworQEAgLTIzMzcsNiAr MjM1Miw3IEBAIGRlbGV0ZV9zdGVwX3RocmVhZF9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh2b2lk KQorICAgICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CiAg Ci1AQCAtMTE4MSw2ICsxMjk0LDggQEAgc3RydWN0IG9iamZpbGVfdHlwZQorICAgICAgIGRlbGV0 ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7CisrICAgICAgZGVsZXRlX2V4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCAodHApOworICAgICB9CisgICBlbHNlCisgICAgIC8qIEluIGFsbC1z dG9wIG1vZGUsIGRlbGV0ZSBhbGwgc3RlcC1yZXN1bWUgYW5kIGxvbmdqbXAtcmVzdW1lCitAQCAt MzI0MSw2ICszMjU3LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlv bl9jb250cm9sX3N0YXRlICplY3MpCiAgCi0gICAvKiBUeXBlcyB1c2VkIGZvciBzeW1ib2xzIHdp dGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAqLwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGV4 dF9zeW1ib2w7Ci0rICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X2dudV9pZnVuY19zeW1ib2w7 Ci0rICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19nb3RfcGx0X3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBl ICpub2RlYnVnX2RhdGFfc3ltYm9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdW5rbm93bl9z eW1ib2w7Ci0gICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9sOwotQEAgLTEzMjgsNiAr MTQ0MywxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3Qg dHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkgICAgICAgc3RydWN0IHR5cGUgKik7Ci0gZXh0 ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwg aW50LCBpbnQpOworICAgICAgIHN0b3BfcGMgPSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFk X3JlZ2NhY2hlIChlY3MtPnB0aWQpKTsKICAKLStleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2Vf YW55X2ZpZWxkX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQlpbnQg ZmllbGRubyk7Ci0rCi0rZXh0ZXJuIGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwg KHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291 bnRfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4g Q09SRV9BRERSIHR5cGVfcmFuZ2VfYnl0ZV9zdHJpZGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpy YW5nZV90eXBlLAotKwkJCQkJCSAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSk7Ci0rCi0rZXh0 ZXJuIHZvaWQgZmluYWxpemVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpOworKyAgICAgIC8qIENs ZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2gg Y291bGQKKysJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNf c2lnbmFsLiAgKi8KKysgICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKICsK LSBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwg c3RydWN0IHR5cGUgKiwKLSAJCQkJCXN0cnVjdCB0eXBlICopOwotIGV4dGVybiBzdHJ1Y3QgdHlw ZSAqbG9va3VwX3N0cmluZ19yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7Ci1A QCAtMTM3MCw2ICsxNDk3LDggQEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVj dCB0eXBlICosIHN0cnVjdCB0eXBlICopOworICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9w X2Jwc3RhdAorIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0 X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAorIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7CitA QCAtMzMyOCw2ICszMzQ4LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1 dGlvbl9jb250cm9sX3N0YXRlICplY3MpCiAgCi0gZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0 b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB2YWx1ZSAqKTsKKyAgICAgICBzdG9wX3BjID0gcmVn Y2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7CiAgCi0rZXh0 ZXJuIHZvaWQgdHlwZV9tYXJrX3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKTsKKysgICAgICAvKiBD bGVhciBXQVRDSFBPSU5UX1RSSUdHRVJFRCB2YWx1ZXMgZnJvbSBwcmV2aW91cyBzdG9wIHdoaWNo IGNvdWxkCisrCSBjb25mdXNlIGJwc3RhdF9zdG9wX3N0YXR1cyBhbmQgYnBzdGF0X2V4cGxhaW5z X3NpZ25hbC4gICovCisrICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkICgmZWNzLT53cyk7CiAr Ci0gLyogT3ZlcmxvYWQgcmVzb2x1dGlvbiAqLworICAgICAgIC8qIERvIHdoYXRldmVyIGlzIG5l Y2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBvZiB0aGUgdmZvcmsuICAqLworICAgICAgIGhh bmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQgKDEpOwogIAotICNkZWZpbmUgTEVOR1RIX01B VENIKGJ2KSAoKGJ2KS0+cmFua1swXSkKLUBAIC0xNDMyLDEwICsxNTYxLDExIEBAIGV4dGVybiB2 b2lkIG1haW50ZW5hbmNlX3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKK0BAIC00MDc2LDIzICs0 MTAwLDMzIEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90ZXN0OgogIAotIGV4dGVybiBodGFiX3QgY3Jl YXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisgCWVjcy0+ ZXZlbnRfdGhyZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOwogIAotLWV4dGVybiBz dHJ1Y3QgdHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs Ci0tCQkJCQkgc3RydWN0IHR5cGUgKnR5cGUsCi0rZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5 cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSAJCQkJCSBodGFiX3QgY29waWVkX3R5 cGVzKTsKKy0JaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQorLQkg ICAgfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLCBmcmFtZSwgJmptcF9i dWZfcGMpKQorKwlpZiAod2hhdC5pc19sb25nam1wKQorIAkgIHsKKy0JICAgIGlmIChkZWJ1Z19p bmZydW4pCistCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKKysJICAg IGlmICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXRfcCAoZ2RiYXJjaCkKKysJCXx8ICFnZGJh cmNoX2dldF9sb25nam1wX3RhcmdldCAoZ2RiYXJjaCwKKysJCQkJCQlmcmFtZSwgJmptcF9idWZf cGMpKQorKwkgICAgICB7CisrCQlpZiAoZGVidWdfaW5mcnVuKQorKwkJICBmcHJpbnRmX3VuZmls dGVyZWQgKGdkYl9zdGRsb2csICJcCisgaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9S RVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClcbiIpOworLQkgICAga2VlcF9nb2lu ZyAoZWNzKTsKKy0JICAgIHJldHVybjsKKy0JICB9CisrCQlrZWVwX2dvaW5nIChlY3MpOworKwkJ cmV0dXJuOworKwkgICAgICB9CiAgCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGUgKGNv bnN0IHN0cnVjdCB0eXBlICp0eXBlKTsKKy0JLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUg Y3VycmVudCBzdGVwLXJlc3VtZSBicmVha3BvaW50CistCSAgIHdpdGggYSBsb25nam1wLXJlc3Vt ZSBicmVha3BvaW50LiAgKi8KKy0JZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ ZXZlbnRfdGhyZWFkKTsKKysJICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJl bnQgc3RlcC1yZXN1bWUgYnJlYWtwb2ludAorKwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1l IGJyZWFrcG9pbnQuICAqLworKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVj cy0+ZXZlbnRfdGhyZWFkKTsKICAKLStleHRlcm4gdm9pZCBmcmVlX2FsbF90eXBlcyAodm9pZCk7 CistCS8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLworLQlpbnNl cnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoZ2RiYXJjaCwgam1wX2J1Zl9wYyk7CisrCSAg ICAvKiBJbnNlcnQgYSBicmVha3BvaW50IGF0IHJlc3VtZSBhZGRyZXNzLiAgKi8KKysJICAgIGlu c2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKKysJ ICB9CisrCWVsc2UKKysJICB7CisrCSAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jID0gZ2V0X2ZyYW1l X2Z1bmN0aW9uIChmcmFtZSk7CisgCisrCSAgICBpZiAoZnVuYykKKysJICAgICAgY2hlY2tfZXhj ZXB0aW9uX3Jlc3VtZSAoZWNzLCBmcmFtZSwgZnVuYyk7CisrCSAgfQorIAlrZWVwX2dvaW5nIChl Y3MpOworIAlyZXR1cm47CisgCitAQCAtNDEwMSw4ICs0MTM1LDUyIEBAIGluZnJ1bjogQlBTVEFU X1dIQVRfU0VUX0xPTkdKTVBfUkVTVU1FICghZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQpXG4i KTsKKyAJICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csCisgCQkJICAgICAgImluZnJ1 bjogQlBTVEFUX1dIQVRfQ0xFQVJfTE9OR0pNUF9SRVNVTUVcbiIpOworIAorLQlnZGJfYXNzZXJ0 IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCAhPSBOVUxMKTsKKy0J ZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKysJaWYg KHdoYXQuaXNfbG9uZ2ptcCkKKysJICB7CisrCSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3Ro cmVhZC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCAhPSBOVUxMKTsKKysJICAgIGRlbGV0ZV9zdGVw X3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7CisrCSAgfQorKwllbHNlCisr CSAgeworKwkgICAgLyogVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgdG8gY29uc2lkZXIuCisrCisr CSAgICAgICAxLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBubyBsb25nZXIgZXhpc3RzLiAgSW4gdGhp cyBjYXNlCisrCSAgICAgICB3ZSBtdXN0IHN0b3AsIGJlY2F1c2UgdGhlIGV4Y2VwdGlvbiBoYXMg Z29uZSB0b28gZmFyLgorKworKwkgICAgICAgMi4gVGhlIGluaXRpYXRpbmcgZnJhbWUgZXhpc3Rz LCBhbmQgaXMgdGhlIHNhbWUgYXMgdGhlCisrCSAgICAgICBjdXJyZW50IGZyYW1lLiAgV2Ugc3Rv cCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhhcyBiZWVuCisrCSAgICAgICBjYXVnaHQuCisrCisr CSAgICAgICAzLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMgYW5kIGlzIGRpZmZlcmVudCBm cm9tCisrCSAgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlv biBoYXMgYmVlbgorKwkgICAgICAgY2F1Z2h0IGJlbmVhdGggdGhlIGluaXRpYXRpbmcgZnJhbWUs IHNvIGtlZXAgZ29pbmcuICAqLworKwkgICAgc3RydWN0IGZyYW1lX2luZm8gKmluaXRfZnJhbWUK KysJICAgICAgPSBmcmFtZV9maW5kX2J5X2lkIChlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGlu Z19mcmFtZSk7CisrCisrCSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0 aW9uX3Jlc3VtZV9icmVha3BvaW50ICE9IE5VTEwpOworKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOworKworKwkgICAgaWYgKGluaXRf ZnJhbWUpCisrCSAgICAgIHsKKysJCXN0cnVjdCBmcmFtZV9pZCBjdXJyZW50X2lkCisrCQkgID0g Z2V0X2ZyYW1lX2lkIChnZXRfY3VycmVudF9mcmFtZSAoKSk7CisrCQlpZiAoZnJhbWVfaWRfZXEg KGN1cnJlbnRfaWQsCisrCQkJCSBlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFtZSkp CisrCQkgIHsKKysJCSAgICAvKiBDYXNlIDIuICBGYWxsIHRocm91Z2guICAqLworKwkJICB9Cisr CQllbHNlCisrCQkgIHsKKysJCSAgICAvKiBDYXNlIDMuICAqLworKwkJICAgIGtlZXBfZ29pbmcg KGVjcyk7CisrCQkgICAgcmV0dXJuOworKwkJICB9CisrCSAgICAgIH0KKysKKysJICAgIC8qIEZv ciBDYXNlcyAxIGFuZCAyLCByZW1vdmUgdGhlIHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQsCisrCSAg ICAgICBpZiBpdCBleGlzdHMuICAqLworKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9p bnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKysJICB9CisgCisgCWVjcy0+ZXZlbnRfdGhyZWFkLT5z dG9wX3N0ZXAgPSAxOworIAlwcmludF9zdG9wX3JlYXNvbiAoRU5EX1NURVBQSU5HX1JBTkdFLCAw KTsKK0BAIC01MDcwLDYgKzUxNDgsOTcgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9p bnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCisgICAgIHNldF9tb21l bnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2RiYXJjaCwgcGMsIGJwX2xvbmdqbXBfcmVzdW1lKTsK KyB9CisgCisrLyogSW5zZXJ0IGFuIGV4Y2VwdGlvbiByZXN1bWUgYnJlYWtwb2ludC4gIFRQIGlz IHRoZSB0aHJlYWQgdGhyb3dpbmcKKysgICB0aGUgZXhjZXB0aW9uLiAgVGhlIGJsb2NrIEIgaXMg dGhlIGJsb2NrIG9mIHRoZSB1bndpbmRlciBkZWJ1ZyBob29rCisrICAgZnVuY3Rpb24uICBGUkFN RSBpcyB0aGUgZnJhbWUgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCB0byB0aGlzCisrICAgZnVu Y3Rpb24uICBTWU0gaXMgdGhlIHN5bWJvbCBvZiB0aGUgZnVuY3Rpb24gYXJndW1lbnQgaG9sZGlu ZyB0aGUKKysgICB0YXJnZXQgUEMgb2YgdGhlIGV4Y2VwdGlvbi4gICovCisrCisrc3RhdGljIHZv aWQKKytpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwLAorKwkJCQkgICAgc3RydWN0IGJsb2NrICpiLAorKwkJCQkgICAgc3RydWN0IGZyYW1l X2luZm8gKmZyYW1lLAorKwkJCQkgICAgc3RydWN0IHN5bWJvbCAqc3ltKQorK3sKKysgIHN0cnVj dCBnZGJfZXhjZXB0aW9uIGU7CisrCisrICAvKiBXZSB3YW50IHRvIGlnbm9yZSBlcnJvcnMgaGVy ZS4gICovCisrICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAg IHN0cnVjdCBzeW1ib2wgKnZzeW07CisrICAgICAgc3RydWN0IHZhbHVlICp2YWx1ZTsKKysgICAg ICBDT1JFX0FERFIgaGFuZGxlcjsKKysgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7CisrCisr ICAgICAgdnN5bSA9IGxvb2t1cF9zeW1ib2wgKFNZTUJPTF9MSU5LQUdFX05BTUUgKHN5bSksIGIs IFZBUl9ET01BSU4sIE5VTEwpOworKyAgICAgIHZhbHVlID0gcmVhZF92YXJfdmFsdWUgKHZzeW0s IGZyYW1lKTsKKysgICAgICAvKiBJZiB0aGUgdmFsdWUgd2FzIG9wdGltaXplZCBvdXQsIHJldmVy dCB0byB0aGUgb2xkIGJlaGF2aW9yLiAgKi8KKysgICAgICBpZiAoISB2YWx1ZV9vcHRpbWl6ZWRf b3V0ICh2YWx1ZSkpCisrCXsKKysJICBoYW5kbGVyID0gdmFsdWVfYXNfYWRkcmVzcyAodmFsdWUp OwogKwotICNlbmRpZiAvKiBHREJUWVBFU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL2kzODYtbGlu dXgtbmF0LmMgYi9nZGIvaTM4Ni1saW51eC1uYXQuYwotaW5kZXggNGZjZTFhYy4uMTQ0YTg5OSAx MDA2NDQKLS0tLSBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvaTM4Ni1saW51eC1u YXQuYwotQEAgLTc0Nyw2ICs3NDcsMjEgQEAgaTM4Nl9saW51eF9kcl91bnNldF9zdGF0dXMgKHVu c2lnbmVkIGxvbmcgbWFzaykKLSAgICAgfQotIH0KLSAKLSsvKiBTZWUgaTM4Nl9kcl9sb3dfdHlw ZS5kZXRhY2guICBEbyBub3QgdXNlIHdyYXBwZXJzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wK LSsgICBvciBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHIgYXMgdGhleSB3b3VsZCBtb2RpZnkgdGhl IHJlZ2lzdGVyIGNhY2hlCi0rICAgKGkzODZfbGludXhfZHIpLiAgKi8KKysJICBpZiAoZGVidWdf aW5mcnVuKQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAorKwkJCQkiaW5m cnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKKysJCQkJKHVuc2lnbmVkIGxvbmcpIGhh bmRsZXIpOworKworKwkgIGJwID0gc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZXRf ZnJhbWVfYXJjaCAoZnJhbWUpLAorKwkJCQkJICAgICAgIGhhbmRsZXIsIGJwX2V4Y2VwdGlvbl9y ZXN1bWUpOworKwkgIGJwLT50aHJlYWQgPSB0cC0+bnVtOworKwkgIGluZmVyaW9yX3RocmVhZCAo KS0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gYnA7CisrCX0KKysgICAgfQorK30KKysK KysvKiBUaGlzIGlzIGNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBpbnRlcmNlcHRl ZC4gIENoZWNrIHRvCisrICAgc2VlIHdoZXRoZXIgdGhlIGV4Y2VwdGlvbidzIGRlc3RpbmF0aW9u IGlzIG9mIGludGVyZXN0LCBhbmQgaWYgc28sCisrICAgc2V0IGFuIGV4Y2VwdGlvbiByZXN1bWUg YnJlYWtwb2ludCB0aGVyZS4gICovCiArCiArc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX2Rl dGFjaCAodm9pZCkKKytjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKmVjcywKKysJCQlzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHN0cnVjdCBz eW1ib2wgKmZ1bmMpCiArewotKyAgaW50IHJlZ251bTsKKysgIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGU7CiArCi0rICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgRFJfQ09OVFJPTCwg MCk7Ci0rICBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAofjBVTCk7Ci0rICBmb3IgKHJlZ251 bSA9IERSX0ZJUlNUQUREUjsgcmVnbnVtIDw9IERSX0xBU1RBRERSOyByZWdudW0rKykKLSsgICAg aTM4Nl9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIHJlZ251bSwgMCk7CisrICBUUllfQ0FU Q0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAgIHN0cnVjdCBibG9jayAqYjsK KysgICAgICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOworKyAgICAgIHN0cnVjdCBzeW1ib2wg KnN5bTsKKysgICAgICBpbnQgYXJnbm8gPSAwOworKworKyAgICAgIC8qIFRoZSBleGNlcHRpb24g YnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3BvaW50IG9uCisrCSB0aGUgdW53 aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBhczoKKysJIAorKwkgdm9pZCBfVW53aW5kX0Rl YnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKKysJIAorKwkgVGhlIENGQSBhcmd1 bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRyb2wgaXMKKysJIGFib3V0IHRv IGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGluYXRpb24gUEMuCisrCSAKKysJ IFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCBIQU5E TEVSLgorKwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVudCBidXQgaXQgYXZvaWRzIGlz c3VlcyBpbiBnZGIKKysJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FSRiBDRkEsIGFuZCBpdCBhbHNv IHdvcmtzIGV2ZW4gaW4gd2VpcmQKKysJIGNhc2VzIHN1Y2ggYXMgdGhyb3dpbmcgYW4gZXhjZXB0 aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCisrCSBoYW5kbGVyLiAgKi8KKysKKysgICAgICBiID0g U1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKKysgICAgICBBTExfQkxPQ0tfU1lNQk9MUyAoYiwg aXRlciwgc3ltKQorKwl7CisrCSAgaWYgKCFTWU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkpCisrCSAg ICBjb250aW51ZTsKKysKKysJICBpZiAoYXJnbm8gPT0gMCkKKysJICAgICsrYXJnbm87CisrCSAg ZWxzZQorKwkgICAgeworKwkgICAgICBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50 IChlY3MtPmV2ZW50X3RocmVhZCwKKysJCQkJCQkgIGIsIGZyYW1lLCBzeW0pOworKwkgICAgICBi cmVhazsKKysJICAgIH0KKysJfQorKyAgICB9CiArfQogKwogIHN0YXRpYyB2b2lkCi0gaTM4Nl9s aW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyBzdG9wX3N0ZXBwaW5nIChzdHJ1Y3QgZXhl Y3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKICB7Ci1AQCAtOTc2LDYgKzk5MSw3IEBAIF9pbml0 aWFsaXplX2kzODZfbGludXhfbmF0ICh2b2lkKQotICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9 IGkzODZfbGludXhfZHJfcmVzZXRfYWRkcjsKLSAgIGkzODZfZHJfbG93LmdldF9zdGF0dXMgPSBp Mzg2X2xpbnV4X2RyX2dldF9zdGF0dXM7Ci0gICBpMzg2X2RyX2xvdy51bnNldF9zdGF0dXMgPSBp Mzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKLSsgIGkzODZfZHJfbG93LmRldGFjaCA9IGkzODZf bGludXhfZHJfZGV0YWNoOwotICAgaTM4Nl9zZXRfZGVidWdfcmVnaXN0ZXJfbGVuZ3RoICg0KTsK LSAKLSAgIC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHB0cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8K LWRpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dkYi9pMzg2LW5hdC5jCi1pbmRleCBlYWEz NjQ0Li4wOTIxYzdlIDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbmF0LmMKLSsrKyBiL2dkYi9pMzg2 LW5hdC5jCi1AQCAtNTMzLDYgKzUzMywxNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCi0gICByZXR1cm4gcmV0dmFsOworZGlmZiAt LWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYworaW5kZXggOTNhZGZjZC4u MzQ0MTJhNiAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC1uYXQuYworKysrIGIvZ2RiL2xpbnV4LW5h dC5jCitAQCAtMjU4Nyw2ICsyNTg3LDM5IEBAIGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVz cyAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSICphZGRyX3ApCisgICByZXR1cm4g bHAtPnN0b3BwZWRfZGF0YV9hZGRyZXNzX3A7CiAgfQogIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNo X3dhdGNocG9pbnRzLiAgKi8KKysvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHdp dGggbXVsdGl0aHJlYWRlZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKKysgICB3YXRjaHBvaW50 cyBmcm9tIGFsbCB0aGUgTFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9QVElEIHdpbGwgYmUg dGhlCisrICAgbm9uLXRocmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElTVCB3aWxsIHN0aWxs IGNvbnRhaW4gYWxsIHRoZSB0aHJlYWRzIG9mCisrICAgdGhlIHBhcmVudCBiZWluZyBkZXRhY2hl ZC4gICovCiArCiArc3RhdGljIGludAotK2kzODZfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQor K2xpbnV4X25hdF9kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCiArewotKyAgaWYgKGkzODZfZHJf bG93LmRldGFjaCkKLSsgICAgaTM4Nl9kcl9sb3cuZGV0YWNoICgpOworKyAgc3RydWN0IGx3cF9p bmZvICpscDsKKysgIGludCBmb3VuZCA9IDAsIHJldHZhbCA9IDA7CisrICBwdGlkX3QgZmlsdGVy ID0gcGlkX3RvX3B0aWQgKHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkpOworKyAgc3RydWN0 IGNsZWFudXAgKm9sZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRpZCAoKTsKICsKLSsgIHJldHVy biAwOworKyAgZm9yIChscCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKKysgICAgaWYg KHB0aWRfbWF0Y2ggKGxwLT5wdGlkLCBmaWx0ZXIpKQorKyAgICAgIHsKKysJaW5mZXJpb3JfcHRp ZCA9IGxwLT5wdGlkOworKwlyZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2lu dHMgKCk7CisrCWZvdW5kID0gMTsKKysgICAgICB9CisrCisrICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKKysKKysgIGlmICghZm91bmQpCisrICAgIHsKKysgICAgICBnZGJfYXNzZXJ0ICghaXNf bHdwIChpbmZlcmlvcl9wdGlkKSk7CisrCisrICAgICAgcmV0dmFsIHw9IGxpbnV4X29wcy0+dG9f ZGV0YWNoX3dhdGNocG9pbnRzICgpOworKyAgICB9CisrCisrICByZXR1cm4gcmV0dmFsOwogK30K ICsKLSAvKiBSZXR1cm4gbm9uLXplcm8gaWYgd2UgY2FuIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB0 aGF0IHN0YXJ0cyBhdAotICAgIGFkZHJlc3MgQUREUiBhbmQgd2hvc2UgbGVuZ3RoIGlzIExFTiBi eXRlcy4gICovCisgLyogV2FpdCB1bnRpbCBMUCBpcyBzdG9wcGVkLiAgKi8KICAKLUBAIC02ODUs NiArNjk2LDcgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQot ICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNz OwotICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50Owot ICAgdC0+dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OwotKyAg dC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gICB0 LT50b19pbnNlcnRfaHdfYnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7Ci0g ICB0LT50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7 Ci0gfQotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKLWluZGV4 IDczMTdlN2QuLmVhOTE0YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuaAotKysrIGIvZ2Ri L2kzODYtbmF0LmgKLUBAIC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRj aHBvaW50cyAoc3RydWN0IHRhcmdldF9vcHMgKik7Ci0gICAgICAgdW5zZXRfc3RhdHVzICAgICAg ICAgICAgIC0tIHVuc2V0IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKLSAJCQkJICBz dGF0dXMgKERSNikgcmVnaXN0ZXIgZm9yIGFsbCBMV1BzCisgc3RhdGljIGludAorQEAgLTU2MDYs NiArNTYzOSw4IEBAIGxpbnV4X25hdF9hZGRfdGFyZ2V0IChzdHJ1Y3QgdGFyZ2V0X29wcyAqdCkK KyAgIHQtPnRvX3RocmVhZF9hZGRyZXNzX3NwYWNlID0gbGludXhfbmF0X3RocmVhZF9hZGRyZXNz X3NwYWNlOworICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gbGludXhfbmF0X3N0b3Bw ZWRfYnlfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gbGludXhf bmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworKyAgaWYgKGxpbnV4X29wcy0+dG9fZGV0YWNoX3dh dGNocG9pbnRzKQorKyAgICB0LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBsaW51eF9uYXRfZGV0 YWNoX3dhdGNocG9pbnRzOwogIAotKyAgICAgIGRldGFjaCAgICAgICAgICAgICAgICAgICAtLSBj bGVhciBhbGwgZGVidWcgcmVnaXN0ZXJzIG9mIG9ubHkgdGhlCi0rCQkJCSAgSU5GRVJJT1JfUFRJ RCB0YXNrIHdpdGhvdXQgYWZmZWN0aW5nIGFueQotKwkJCQkgIHJlZ2lzdGVyIGNhY2hlcy4KKyAg IHQtPnRvX2Nhbl9hc3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOworICAgdC0+dG9faXNf YXN5bmNfcCA9IGxpbnV4X25hdF9pc19hc3luY19wOworZGlmZiAtLWdpdCBhL2dkYi9saW51eC10 ZGVwLmMgYi9nZGIvbGludXgtdGRlcC5jCitpbmRleCAwN2ZkNjdjLi4yNTI0MjUwIDEwMDY0NAor LS0tIGEvZ2RiL2xpbnV4LXRkZXAuYworKysrIGIvZ2RiL2xpbnV4LXRkZXAuYworQEAgLTIzLDYg KzIzLDggQEAKKyAjaW5jbHVkZSAiYXV4di5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5j bHVkZSAiZWxmL2NvbW1vbi5oIgorKyNpbmNsdWRlICJ2YWx1ZS5oIgorKyNpbmNsdWRlICJpbmZj YWxsLmgiCisgCisgLyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJl cyB0aGF0IGRvbid0CisgICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0 cnVjdHVyZS4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKK2luZGV4 IGJmZDEyMTMuLjcyZmFhYmQgMTAwNjQ0CistLS0gYS9nZGIvbWFpbi5jCisrKysgYi9nZGIvbWFp bi5jCitAQCAtMzksNiArMzksNyBAQAorIAorICNpbmNsdWRlICJpbnRlcnBzLmgiCisgI2luY2x1 ZGUgIm1haW4uaCIKKysjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgorICNpbmNsdWRlICJzb3Vy Y2UuaCIKKyAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCisgI2luY2x1ZGUgInB5dGhvbi9weXRo b24uaCIKK0BAIC0yNTksNiArMjYwLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAg IGNoYXIgKmNkYXJnID0gTlVMTDsKKyAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7CisgCisrICBpbnQg cHl0aG9uX3NjcmlwdCA9IDA7CisrCisgICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQgd2Ug Y2FuIHRha2UgdGhlaXIgYWRkcmVzcyBpbiBhbiBpbml0aWFsaXplci4gICovCisgICBzdGF0aWMg aW50IHByaW50X2hlbHA7CisgICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247CitAQCAtNDQzLDEw ICs0NDYsMTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKKyAgICAgICB7ImFyZ3MiLCBu b19hcmd1bWVudCwgJnNldF9hcmdzLCAxfSwKKyAgICAgICB7ImwiLCByZXF1aXJlZF9hcmd1bWVu dCwgMCwgJ2wnfSwKKyAgICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQiLCBub19hcmd1bWVudCwg JnJldHVybl9jaGlsZF9yZXN1bHQsIDF9LAorKyNpZiBIQVZFX1BZVEhPTgorKyAgICAgIHsicHl0 aG9uIiwgbm9fYXJndW1lbnQsIDAsICdQJ30sCisrICAgICAgeyJQIiwgbm9fYXJndW1lbnQsIDAs ICdQJ30sCisrI2VuZGlmCisgICAgICAgezAsIG5vX2FyZ3VtZW50LCAwLCAwfQorICAgICB9Owor IAorLSAgICB3aGlsZSAoMSkKKysgICAgd2hpbGUgKCFweXRob25fc2NyaXB0KQorICAgICAgIHsK KyAJaW50IG9wdGlvbl9pbmRleDsKKyAKK0BAIC00NjQsNiArNDcxLDkgQEAgY2FwdHVyZWRfbWFp biAodm9pZCAqZGF0YSkKKyAJICBjYXNlIDA6CisgCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1 c3Qgc2V0cyBhIGZsYWcuICAqLworIAkgICAgYnJlYWs7CisrCSAgY2FzZSAnUCc6CisrCSAgICBw eXRob25fc2NyaXB0ID0gMTsKKysJICAgIGJyZWFrOworIAkgIGNhc2UgT1BUX1NFOgorIAkgICAg c3ltYXJnID0gb3B0YXJnOworIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKK0BAIC02NTAsNyArNjYw LDMxIEBAIGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKKyAKKyAgIC8qIE5vdyB0aGF0 IGdkYl9pbml0IGhhcyBjcmVhdGVkIHRoZSBpbml0aWFsIGluZmVyaW9yLCB3ZSdyZSBpbiBwb3Np dGlvbgorICAgICAgdG8gc2V0IGFyZ3MgZm9yIHRoYXQgaW5mZXJpb3IuICAqLworLSAgaWYgKHNl dF9hcmdzKQorKyAgaWYgKHB5dGhvbl9zY3JpcHQpCisrICAgIHsKKysgICAgICAvKiBUaGUgZmly c3QgYXJndW1lbnQgaXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRlLCBhbmQKKysJIHN1YnNl cXVlbnQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCBmb3IKKysJIHByb2Nlc3Np bmcgdGhlcmUuICAqLworKyAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykKKysJeworKwkgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGVyciwKKysJCQkgICAgICBfKCIlczogUHl0aG9uIHNjcmlw dCBmaWxlIG5hbWUgcmVxdWlyZWRcbiIpLAorKwkJCSAgICAgIGFyZ3ZbMF0pOworKwkgIGV4aXQg KDEpOworKwl9CiArCi0gICAgQWRkaXRpb25hbGx5LCB0aGUgbmF0aXZlIGZpbGUgc2hvdWxkIHNl dCB0aGUgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoCi0gICAgZmllbGQgdG8gNCBvciA4IGRlcGVuZGlu ZyBvbiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHVzZWQgZm9yCi0gICAgZGV1YmcgcmVnaXN0ZXJzLiAg Ki8KLUBAIC03Myw2ICs3Nyw3IEBAIHN0cnVjdCBpMzg2X2RyX2xvd190eXBlCi0gICAgIHZvaWQg KCpyZXNldF9hZGRyKSAoaW50KTsKLSAgICAgdW5zaWduZWQgbG9uZyAoKmdldF9zdGF0dXMpICh2 b2lkKTsKLSAgICAgdm9pZCAoKnVuc2V0X3N0YXR1cykgKHVuc2lnbmVkIGxvbmcpOwotKyAgICB2 b2lkICgqZGV0YWNoKSAodm9pZCk7Ci0gICAgIGludCBkZWJ1Z19yZWdpc3Rlcl9sZW5ndGg7Ci0g ICB9OworKyAgICAgIC8qIEZJWE1FOiBzaG91bGQgaGFuZGxlIGluZmVyaW9yIEkvTyBpbnRlbGxp Z2VudGx5IGhlcmUuCisrCSBFLmcuLCBzaG91bGQgYmUgcG9zc2libGUgdG8gcnVuIGdkYiBpbiBw aXBlbGluZSBhbmQgaGF2ZQorKwkgUHl0aG9uIChhbmQgZ2RiKSBvdXRwdXQgZ28gdG8gc3RkZXJy IG9yIGZpbGU7IGFuZCBpZiBhCisrCSBwcm9tcHQgaXMgbmVlZGVkLCBvcGVuIHRoZSB0dHkuICAq LworKyAgICAgIHF1aWV0ID0gMTsKKysgICAgICAvKiBGSVhNRTogc2hvdWxkIHJlYWQgLmdkYmlu aXQgaWYsIGFuZCBvbmx5IGlmLCBhIHByb21wdCBpcworKwkgcmVxdWVzdGVkIGJ5IHRoZSBzY3Jp cHQuICBUaG91Z2guLi4gbWF5YmUgdGhpcyBpcyBub3QKKysJIGlkZWFsPyAgKi8KKysgICAgICAv KiBGSVhNRTogbGlrZXdpc2UsIHJlYWRpbmcgaW4gaGlzdG9yeS4gICovCisrICAgICAgaW5oaWJp dF9nZGJpbml0ID0gMTsKKysgICAgfQorKyAgZWxzZSBpZiAoc2V0X2FyZ3MpCisgICAgIHsKKyAg ICAgICAvKiBUaGUgcmVtYWluaW5nIG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9u cyBmb3IgdGhlCisgCSBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZp bGUsIGFuZCB0aGUgcmVzdAorQEAgLTg5MCw3ICs5MjQsOCBAQCBDYW4ndCBhdHRhY2ggdG8gcHJv Y2VzcyBhbmQgc3BlY2lmeSBhIGNvcmUgZmlsZSBhdCB0aGUgc2FtZSB0aW1lLiIpKTsKKyAgIHhm cmVlIChjbWRhcmcpOwogIAotZGlmZiAtLWdpdCBhL2dkYi9pbmZjYWxsLmMgYi9nZGIvaW5mY2Fs bC5jCi1pbmRleCAwYzlhM2FmLi45NTdlYzFkIDEwMDY0NAotLS0tIGEvZ2RiL2luZmNhbGwuYwot KysrIGIvZ2RiL2luZmNhbGwuYwotQEAgLTIyNSw2ICsyMjUsNTYgQEAgdmFsdWVfYXJnX2NvZXJj ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0cnVjdCB2YWx1ZSAqYXJnLAotICAgcmV0dXJu IHZhbHVlX2Nhc3QgKHR5cGUsIGFyZyk7CisgICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBh ZnRlciBhbGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuIHJlYWQuICovCistICBpbml0X2hp c3RvcnkgKCk7CisrICBpZiAoIXB5dGhvbl9zY3JpcHQpCisrICAgIGluaXRfaGlzdG9yeSAoKTsK KyAKKyAgIGlmIChiYXRjaF9mbGFnKQorICAgICB7CitAQCAtOTAxLDEzICs5MzYsMjUgQEAgQ2Fu J3QgYXR0YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjb3JlIGZpbGUgYXQgdGhlIHNhbWUg dGltZS4iKSk7CisgICAvKiBTaG93IHRpbWUgYW5kL29yIHNwYWNlIHVzYWdlLiAgKi8KKyAgIGRv X2NsZWFudXBzIChwcmVfc3RhdF9jaGFpbik7CisgCistICAvKiBOT1RFOiBjYWduZXkvMTk5OS0x MS0wNzogVGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKKy0gICAgIG1vdmluZyB0 aGlzIGxvb3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCgpCist ICAgICBpbnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0aGluZyBob2xk aW5nIGJhY2sgdGhhdAorLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0gaGFzIGJlZW4g ZWxpbWluYXRlZC4gKi8KKy0gIHdoaWxlICgxKQorKyNpZiBIQVZFX1BZVEhPTgorKyAgaWYgKHB5 dGhvbl9zY3JpcHQpCisgICAgIHsKKy0gICAgICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1h bmRfbG9vcCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7CisrICAgICAgZXh0ZXJuIGludCBwYWdp bmF0aW9uX2VuYWJsZWQ7CisrICAgICAgcGFnaW5hdGlvbl9lbmFibGVkID0gMDsKKysgICAgICBy dW5fcHl0aG9uX3NjcmlwdCAoYXJnYyAtIG9wdGluZCwgJmFyZ3Zbb3B0aW5kXSk7CisrICAgICAg cmV0dXJuIDE7CisrICAgIH0KKysgIGVsc2UKKysjZW5kaWYKKysgICAgeworKyAgICAgIC8qIE5P VEU6IGNhZ25leS8xOTk5LTExLTA3OiBUaGVyZSBpcyBwcm9iYWJseSBubyByZWFzb24gZm9yIG5v dAorKwkgbW92aW5nIHRoaXMgbG9vcCBhbmQgdGhlIGNvZGUgZm91bmQgaW4gY2FwdHVyZWRfY29t bWFuZF9sb29wKCkKKysJIGludG8gdGhlIGNvbW1hbmRfbG9vcCgpIHByb3Blci4gIFRoZSBtYWlu IHRoaW5nIGhvbGRpbmcgYmFjayB0aGF0CisrCSBjaGFuZ2UgLSBTRVRfVE9QX0xFVkVMKCkgLSBo YXMgYmVlbiBlbGltaW5hdGVkLiAqLworKyAgICAgIHdoaWxlICgxKQorKwl7CisrCSAgY2F0Y2hf ZXJyb3JzIChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOwor Kwl9CisgICAgIH0KKyAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRfY29tbWFu ZC4gICovCisgfQorQEAgLTkzOSw3ICs5ODYsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1 aV9maWxlICpzdHJlYW0pCisgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCisgVGhpcyBpcyB0aGUg R05VIGRlYnVnZ2VyLiAgVXNhZ2U6XG5cblwKKyAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJs ZS1maWxlIFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCistICAgIGdkYiBbb3B0aW9uc10g LS1hcmdzIGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAorKyAg ICBnZGIgW29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50 cyAuLi5dXG4iKSwgc3RyZWFtKTsKKysjaWYgSEFWRV9QWVRIT04KKysgIGZwdXRzX3VuZmlsdGVy ZWQgKF8oIlwKKysgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtz Y3JpcHQtYXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOworKyNlbmRpZgorKyAgZnB1dHNfdW5m aWx0ZXJlZCAoXygiXG5cCisgT3B0aW9uczpcblxuXAorICIpLCBzdHJlYW0pOworICAgZnB1dHNf dW5maWx0ZXJlZCAoXygiXAorQEAgLTk3Nyw3ICsxMDI5LDEzIEBAIE9wdGlvbnM6XG5cblwKKyAg IC0tbncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCisgICAtLW54ICAg ICAgICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CisgICBmcHV0c191bmZpbHRlcmVk IChnZGJpbml0LCBzdHJlYW0pOworLSAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCisr ICBmcHV0c191bmZpbHRlcmVkIChfKCIgZmlsZS5cbiIpLCBzdHJlYW0pOworKyNpZiBIQVZFX1BZ VEhPTgorKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorKyAgLS1weXRob24sIC1QICAgICAgIEZv bGxvd2luZyBhcmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xuXAorKyAg ICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHNjcmlwdC5cbiIpLCBz dHJlYW0pOworKyNlbmRpZgorKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAorICAgLS1xdWlldCAg ICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAorICAg LS1yZWFkbm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vz cy5cblwKKyAiKSwgc3RyZWFtKTsKK2RpZmYgLS1naXQgYS9nZGIvbWFpbnQuYyBiL2dkYi9tYWlu dC5jCitpbmRleCAyOGZkNjEwLi40ZTIxNDc2IDEwMDY0NAorLS0tIGEvZ2RiL21haW50LmMKKysr KyBiL2dkYi9tYWludC5jCitAQCAtOTA5LDQgKzkwOSwxMiBAQCBXaGVuIGVuYWJsZWQgR0RCIGlz IHByb2ZpbGVkLiIpLAorIAkJCSAgIHNob3dfbWFpbnRlbmFuY2VfcHJvZmlsZV9wLAorIAkJCSAg ICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKKyAJCQkgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRs aXN0KTsKKysgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImdkYl9kYXRhZGlyIiwgY2xhc3Nf bWFpbnRlbmFuY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdkYl9kYXRhZGlyLCBf KCJTZXQgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAg IF8oIlNob3cgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAorKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIF8oIlwKKytXaGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRvIHNlYXJj aCBmb3IgZGF0YSBmaWxlcy4iKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBO VUxMLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRfY21kbGlz dCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0 KTsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQt dmFyLmMKK2luZGV4IDMxMGFkZTkuLmQ4NzEwYTEgMTAwNjQ0CistLS0gYS9nZGIvbWkvbWktY21k LXZhci5jCisrKysgYi9nZGIvbWkvbWktY21kLXZhci5jCitAQCAtNzAyLDcgKzcwMiw2IEBAIG1p X2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCisg ICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIC8qIEdldCB2YXJvYmogaGFuZGxlLCBpZiBh IHZhbGlkIHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVkICovCisgICAgICAgc3RydWN0IHZhcm9i aiAqdmFyID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOworIAorICAgICAgIHZhcm9ial91cGRh dGVfb25lICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7CitkaWZmIC0tZ2l0 IGEvZ2RiL21pbnN5bXMuYyBiL2dkYi9taW5zeW1zLmMKK2luZGV4IGNiNDU0NWMuLjkyZDQwMjcg MTAwNjQ0CistLS0gYS9nZGIvbWluc3ltcy5jCisrKysgYi9nZGIvbWluc3ltcy5jCitAQCAtMzM3 LDggKzMzNyw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICpuYW1l LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZikKKyAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNo X25leHQpCisgCSAgICB7CisgCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUg KG1zeW1ib2wpLCBuYW1lKSA9PSAwICYmCistCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09 IG1zdF90ZXh0IHx8CistCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3Rl eHQpKQorKwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAorKwkJICAgfHwg TVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJCSAgIHx8IE1T WU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCisgCQl7CisgCQkgIHN3aXRj aCAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSkKKyAJCSAgICB7CitAQCAtNzAwLDYgKzcwMSwxNiBA QCBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKKyAgIHJldHVybiBs b29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwogIH0KICAKLSsv KiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFk ZHJlc3NzIG9mIGEgcmVhbAotKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1p ZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKLSsgICBmdW5jdGlvbiBlbnRy eSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxf VFlQRVAKLSsgICBpcyBub3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4g dHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkCi0rICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtl ZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQot KyAgIGZvdW5kLiAgKi8KKysvKiBSZXR1cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9u IGltcGxlbWVudGluZyBnbnUtaWZ1bmMgc2VsZWN0aW9uLiAgKi8KICsKLStzdGF0aWMgQ09SRV9B RERSCi0rZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FE RFIgcGMpCisraW50CisraW5fZ251X2lmdW5jX3N0dWIgKENPUkVfQUREUiBwYykKICt7Ci0rICBj aGFyICpuYW1lX2F0X3BjOwotKyAgQ09SRV9BRERSIHN0YXJ0X2F0X3BjLCBhZGRyZXNzOwotKyAg c3RydWN0IHR5cGUgKmZ1bmNfZnVuY190eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9mdW5jX2Z1bmM7Ci0rICBzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCAqYWRkcmVzc192YWw7 Ci0rCi0rICBpZiAoZmluZF9wY19wYXJ0aWFsX2Z1bmN0aW9uIChwYywgJm5hbWVfYXRfcGMsICZz dGFydF9hdF9wYywgTlVMTCkKLSsgICAgICAmJiBzdGFydF9hdF9wYyA9PSBwYykKLSsgICAgewot KyAgICAgIGlmIChyZXNvbHZlX2dudV9pZnVuYyAobmFtZV9hdF9wYywgJmFkZHJlc3MpKQotKwly ZXR1cm4gYWRkcmVzczsKLSsgICAgfQotKyAgZWxzZQotKyAgICBuYW1lX2F0X3BjID0gTlVMTDsK LSsKLSsgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBlKTsKLSsgIHNl dF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOwotKwotKyAgLyogZ251LWlmdW5jcyBoYXZl IG5vIGFyZ3VtZW50cy4gIEZVTkNUSU9OIGlzIHRoZSBmdW5jdGlvbiBlbnRyeSBhZGRyZXNzCi0r ICAgICB3aGlsZSBBRERSRVNTIGlzIGEgcG9zc2libGUgZnVuY3Rpb24gZGVzY3JpcHRvci4uICAq LwotKyAgYWRkcmVzc192YWwgPSBjYWxsX2Z1bmN0aW9uX2J5X2hhbmQgKGZ1bmN0aW9uLCAwLCBO VUxMKTsKLSsgIGFkZHJlc3MgPSB2YWx1ZV9hc19hZGRyZXNzIChhZGRyZXNzX3ZhbCk7Ci0rCi0r ICBpZiAobmFtZV9hdF9wYykKLSsgICAgZ251X2lmdW5jX3JlY29yZF9jYWNoZSAoZ2RiYXJjaCwg bmFtZV9hdF9wYywgYWRkcmVzcyk7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wg PSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKICsKLSsgIHJldHVybiBnZGJhcmNo X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyZXNzLCAmY3VycmVudF90 YXJnZXQpOworKyAgcmV0dXJuIG1zeW1ib2wgJiYgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBt c3RfdGV4dF9nbnVfaWZ1bmM7CiArfQogKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rZmluZF9m dW5jdGlvbl9yZXR1cm5fdHlwZSAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wg KnN5bSA9IGZpbmRfcGNfZnVuY3Rpb24gKHBjKTsKLSsKLSsgIGlmIChzeW0gIT0gTlVMTCAmJiBC TE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFIChzeW0pKSA9PSBwYwotKyAgICAgICYmIFNZ TUJPTF9UWVBFIChzeW0pICE9IE5VTEwpCi0rICAgIHJldHVybiBUWVBFX1RBUkdFVF9UWVBFIChT WU1CT0xfVFlQRSAoc3ltKSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9CisgLyogRmluZCB0aGUg bWluaW1hbCBzeW1ib2wgbmFtZWQgTkFNRSwgYW5kIHJldHVybiBib3RoIHRoZSBtaW5zeW0KKyAg ICBzdHJ1Y3QgYW5kIGl0cyBvYmpmaWxlLiAgVGhpcyBvbmx5IGNoZWNrcyB0aGUgbGlua2FnZSBu YW1lLiAgU2V0cworICAgICpPQkpGSUxFX1AgYW5kIHJldHVybnMgdGhlIG1pbmltYWwgc3ltYm9s LCBpZiBpdCBpcyBmb3VuZC4gIElmIGl0CitAQCAtNzY5LDYgKzc4MCw3IEBAIHByaW1fcmVjb3Jk X21pbmltYWxfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lLCBDT1JFX0FERFIgYWRkcmVzcywKKyAg IHN3aXRjaCAobXNfdHlwZSkKKyAgICAgeworICAgICBjYXNlIG1zdF90ZXh0OgorKyAgICBjYXNl IG1zdF90ZXh0X2dudV9pZnVuYzoKKyAgICAgY2FzZSBtc3RfZmlsZV90ZXh0OgorICAgICBjYXNl IG1zdF9zb2xpYl90cmFtcG9saW5lOgorICAgICAgIHNlY3Rpb24gPSBTRUNUX09GRl9URVhUIChv YmpmaWxlKTsKK0BAIC0xMjM1LDcgKzEyNDcsOCBAQCBmaW5kX3NvbGliX3RyYW1wb2xpbmVfdGFy Z2V0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIENPUkVfQUREUiBwYykKKyAgICAgeworICAg ICAgIEFMTF9NU1lNQk9MUyAob2JqZmlsZSwgbXN5bWJvbCkKKyAgICAgICB7CistCWlmIChNU1lN Qk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0CisrCWlmICgoTVNZTUJPTF9UWVBFIChtc3lt Ym9sKSA9PSBtc3RfdGV4dAorKwkgICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3Rf dGV4dF9nbnVfaWZ1bmMpCisgCSAgICAmJiBzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1z eW1ib2wpLAorIAkJICAgICAgIFNZTUJPTF9MSU5LQUdFX05BTUUgKHRzeW1ib2wpKSA9PSAwKQor IAkgIHJldHVybiBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bWJvbCk7CitkaWZmIC0tZ2l0IGEv Z2RiL3AtbGFuZy5jIGIvZ2RiL3AtbGFuZy5jCitpbmRleCAwODczOGFjLi42NGQyZTlmIDEwMDY0 NAorLS0tIGEvZ2RiL3AtbGFuZy5jCisrKysgYi9nZGIvcC1sYW5nLmMKK0BAIC0yMjIsNyArMjIy LDExIEBAIHBhc2NhbF9wcmludHN0ciAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgc3RydWN0IHR5 cGUgKnR5cGUsCisgICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQgPSAwOworICAgaW50IGlu X3F1b3RlcyA9IDA7CisgICBpbnQgbmVlZF9jb21tYSA9IDA7CistICBpbnQgd2lkdGggPSBUWVBF X0xFTkdUSCAodHlwZSk7CisrICBpbnQgd2lkdGg7CiArCi0gLyogRGV0ZXJtaW5lIGEgZnVuY3Rp b24ncyBhZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJvbSBpdHMgdmFsdWUuCi0gICAgQ2Fs bHMgZXJyb3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZhbGlkIGZvciBjYWxsaW5nLiAgKi8K KysgIC8qIFByZXNlcnZlIFRZUEUncyBvcmlnaW5hbCB0eXBlLCBqdXN0IHNldCBpdHMgTEVOR1RI LiAgKi8KKysgIGNoZWNrX3R5cGVkZWYgKHR5cGUpOworKyAgd2lkdGggPSBUWVBFX0xFTkdUSCAo dHlwZSk7CiAgCi1AQCAtMjMzLDcgKzI4Myw2IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0 IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKLSB7Ci0gICBzdHJ1 Y3QgdHlwZSAqZnR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChmdW5jdGlvbikpOwot ICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoIChmdHlwZSk7Ci0tICBl bnVtIHR5cGVfY29kZSBjb2RlID0gVFlQRV9DT0RFIChmdHlwZSk7Ci0gICBzdHJ1Y3QgdHlwZSAq dmFsdWVfdHlwZSA9IE5VTEw7Ci0gICBDT1JFX0FERFIgZnVuYWRkcjsKKyAgIC8qIElmIHRoZSBz dHJpbmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVudHMnLCBhbmQK KyAgICAgIHRoZSBsYXN0IGJ5dGUgb2YgaXQgaXMgYSBudWxsLCB3ZSBkb24ndCBwcmludCB0aGF0 LCBpbiB0cmFkaXRpb25hbCBDCitkaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9w LXZhbHByaW50LmMKK2luZGV4IDRkMzliZWQuLmQwZGRlYmMgMTAwNjQ0CistLS0gYS9nZGIvcC12 YWxwcmludC5jCisrKysgYi9nZGIvcC12YWxwcmludC5jCitAQCAtMzgsNiArMzgsNyBAQAorICNp bmNsdWRlICJwLWxhbmcuaCIKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImNwLXN1 cHBvcnQuaCIKKysjaW5jbHVkZSAiZHdhcmYybG9jLmgiCisgDAogIAotQEAgLTI0MSwyNCArMjkw LDM0IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0 IHR5cGUgKipyZXR2YWxfdHlwZSkKLSAgICAgIHBhcnQgb2YgaXQuICAqLwogIAotICAgLyogRGV0 ZXJtaW5lIGFkZHJlc3MgdG8gY2FsbC4gICovCi0tICBpZiAoY29kZSA9PSBUWVBFX0NPREVfRlVO QyB8fCBjb2RlID09IFRZUEVfQ09ERV9NRVRIT0QpCi0tICAgIHsKLS0gICAgICBmdW5hZGRyID0g dmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24pOwotLSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdF VF9UWVBFIChmdHlwZSk7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BU UikKLSsgIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfRlVOQwotKyAgICAgIHx8 IFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpCi0rICAgIGZ1bmFkZHIgPSB2 YWx1ZV9hZGRyZXNzIChmdW5jdGlvbik7Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9 PSBUWVBFX0NPREVfUFRSKQotICAgICB7Ci0gICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2FkZHJl c3MgKGZ1bmN0aW9uKTsKLSAgICAgICBmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VU X1RZUEUgKGZ0eXBlKSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09E RV9GVU5DCi0gCSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKLSsJ ZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1 bmFkZHIsCi0rCQkJCQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKK0BAIC02OCw4ICs2OSwyNyBA QCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCisgICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOworICAgTE9OR0VTVCB2YWw7CisgICBD T1JFX0FERFIgYWRkcjsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgc3RydWN0IHR5 cGUgKnNhdmVkX3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRy ZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwor KyAgdHlwZSA9IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7CisrICBp ZiAodHlwZSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9h ZGRyZXNzX2RhdGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBnZGJf Zmx1c2ggKHN0cmVhbSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJl dHVybiAwOwogKyAgICB9Ci0rICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZV TkMKLSsgICAgICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorKyAg aWYgKGFkZHJlc3MgIT0gc2F2ZWRfYWRkcmVzcykKICsgICAgewotKyAgICAgIHZhbHVlX3R5cGUg PSBUWVBFX1RBUkdFVF9UWVBFIChmdHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfR05VX0lGVU5D IChmdHlwZSkpCi0gCXsKLS0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19w dHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKLS0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLS0J ICB2YWx1ZV90eXBlID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIGZ1bmFkZHIgPSBn bnVfaWZ1bmNfcmVzb2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7Ci0rCi0rCSAgLyogU2tpcCBxdWVy eWluZyB0aGUgZnVuY3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCi0rCSAg ICAgYXNrZWQgZm9yLiAgKi8KLSsJICBpZiAocmV0dmFsX3R5cGUpCi0rCSAgICB2YWx1ZV90eXBl ID0gZmluZF9mdW5jdGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7CisrICAgICAgc2l6ZV90IGxl bmd0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKKyAKKy0gIENIRUNLX1RZUEVERUYgKHR5cGUpOwor KyAgICAgIHZhbGFkZHIgPSB4bWFsbG9jIChsZW5ndGgpOworKyAgICAgIG1ha2VfY2xlYW51cCAo eGZyZWUsIChnZGJfYnl0ZSAqKSB2YWxhZGRyKTsKKysgICAgICByZWFkX21lbW9yeSAoYWRkcmVz cywgKGdkYl9ieXRlICopIHZhbGFkZHIsIGxlbmd0aCk7CisrICAgIH0KKyAgIHN3aXRjaCAoVFlQ RV9DT0RFICh0eXBlKSkKKyAgICAgeworICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKK0BAIC0x MjUsOCArMTQ1LDkgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLAorIAkJeworIAkJICBpID0gMDsKKyAJCX0KKy0JICAgICAgdmFs X3ByaW50X2FycmF5X2VsZW1lbnRzICh0eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LCBh ZGRyZXNzLCBzdHJlYW0sCistCQkJCQlyZWN1cnNlLCBvcmlnaW5hbF92YWx1ZSwgb3B0aW9ucywg aSk7CisrCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc2F2ZWRfdHlwZSwgdmFsYWRk ciArIGVtYmVkZGVkX29mZnNldCwKKysJCQkJCXNhdmVkX2FkZHJlc3MsIHN0cmVhbSwgcmVjdXJz ZSwKKysJCQkJCW9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKKyAJICAgICAgZnByaW50Zl9m aWx0ZXJlZCAoc3RyZWFtLCAifSIpOworIAkgICAgfQorIAkgIGJyZWFrOworQEAgLTE2NCw2ICsx ODUsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCisgCSAgLyogVHJ5IHRvIHByaW50IHdoYXQgZnVuY3Rpb24gaXQgcG9pbnRz IHRvLiAgKi8KKyAJICBwcmludF9hZGRyZXNzX2RlbWFuZ2xlIChnZGJhcmNoLCBhZGRyLCBzdHJl YW0sIGRlbWFuZ2xlKTsKKyAJICAvKiBSZXR1cm4gdmFsdWUgaXMgaXJyZWxldmFudCBleGNlcHQg Zm9yIHN0cmluZyBwb2ludGVycy4gICovCisrCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworIAkg IHJldHVybiAoMCk7CiAgCX0KKyAKK0BAIC0yNTIsNiArMjc0LDcgQEAgcGFzY2FsX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorICAgICAgIC8q IFJldHVybiBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBpbmNsdWRpbmcgdGhlIHRlcm1p bmF0aW5nCisgCSAnXDAnIGlmIHdlIHJlYWNoZWQgdGhlIGVuZC4gIHZhbF9wcmludF9zdHJpbmcg dGFrZXMgY2FyZSBpbmNsdWRpbmcKKyAJIHRoZSB0ZXJtaW5hdGluZyAnXDAnIGlmIG5lY2Vzc2Fy eS4gICovCisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgICAgIHJldHVybiBpOwor IAorICAgICAgIGJyZWFrOworQEAgLTU1NCw2ICs1NzcsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgICAgICAgZXJyb3Ig KF8oIkludmFsaWQgcGFzY2FsIHR5cGUgY29kZSAlZCBpbiBzeW1ib2wgdGFibGUuIiksIFRZUEVf Q09ERSAodHlwZSkpOwogICAgICB9Ci0tICBlbHNlIGlmIChjb2RlID09IFRZUEVfQ09ERV9JTlQp Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQotICAgICB7 Ci0gICAgICAgLyogSGFuZGxlIHRoZSBjYXNlIG9mIGZ1bmN0aW9ucyBsYWNraW5nIGRlYnVnZ2lu ZyBpbmZvLgotICAgICAgICAgIFRoZWlyIHZhbHVlcyBhcmUgY2hhcmFjdGVycyBzaW5jZSB0aGVp ciBhZGRyZXNzZXMgYXJlIGNoYXIgKi8KLWRpZmYgLS1naXQgYS9nZGIvaW5mY21kLmMgYi9nZGIv aW5mY21kLmMKLWluZGV4IGM0Y2RiMDYuLmQyMTNmNmEgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mY21k LmMKLSsrKyBiL2dkYi9pbmZjbWQuYwotQEAgLTgyMiw3ICs4MjIsNyBAQCBuZXh0aV9jb21tYW5k IChjaGFyICpjb3VudF9zdHJpbmcsIGludCBmcm9tX3R0eSkKLSAgIHN0ZXBfMSAoMSwgMSwgY291 bnRfc3RyaW5nKTsKKyAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKKysgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKKyAgIHJldHVybiAoMCk7CiAgfQorIAwKK2RpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBi L2dkYi9wYXJzZS5jCitpbmRleCBjODg1YzZhLi5jYmY5YzY1IDEwMDY0NAorLS0tIGEvZ2RiL3Bh cnNlLmMKKysrKyBiL2dkYi9wYXJzZS5jCitAQCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBf bXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQorICAgcGMgPSBnZGJhcmNo X2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCAmY3VycmVudF90YXJn ZXQpOworICAgaWYgKHBjICE9IGFkZHIpCisgICAgIHsKKysgICAgICBzdHJ1Y3QgbWluaW1hbF9z eW1ib2wgKmlmdW5jX21zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKKysK KyAgICAgICAvKiBJbiB0aGlzIGNhc2UsIGFzc3VtZSB3ZSBoYXZlIGEgY29kZSBzeW1ib2wgaW5z dGVhZCBvZgorIAkgYSBkYXRhIHN5bWJvbC4gICovCistICAgICAgdHlwZSA9IG1zdF90ZXh0Owor KworKyAgICAgIGlmIChpZnVuY19tc3ltICE9IE5VTEwgJiYgTVNZTUJPTF9UWVBFIChpZnVuY19t c3ltKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJICAmJiBTWU1CT0xfVkFMVUVfQUREUkVTUyAo aWZ1bmNfbXN5bSkgPT0gcGMpCisrCXsKKysJICAvKiBBIGZ1bmN0aW9uIGRlc2NyaXB0b3IgaGFz IGJlZW4gcmVzb2x2ZWQgYnV0IFBDIGlzIHN0aWxsIGluIHRoZQorKwkgICAgIGdudS1pZnVuYyBy ZXNvbHZlciBib2R5IChzdWNoIGFzIGJlY2F1c2UgaW5mZXJpb3IgZG9lcyBub3QgcnVuIHRvCisr CSAgICAgYmUgYWJsZSB0byBjYWxsIGl0KS4gICovCisrCSAgdHlwZSA9IG1zdF90ZXh0X2dudV9p ZnVuYzsKKysJfQorKyAgICAgIGVsc2UKKysJdHlwZSA9IG1zdF90ZXh0OworICAgICAgIHNlY3Rp b24gPSBOVUxMOworICAgICAgIGFkZHIgPSBwYzsKKyAgICAgfQorQEAgLTUyMSw2ICs1MzMsMTEg QEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKKyAg ICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdf dGV4dF9zeW1ib2wpOworICAgICAgIGJyZWFrOwogIAotLXN0YXRpYyB2b2lkCi0rdm9pZAotIGRl bGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCAodm9pZCAqYXJnKQotIHsKLSAgIGludCB0 aHJlYWQgPSAqIChpbnQgKikgYXJnOwotQEAgLTg2MiwxMCArODYyLDEzIEBAIHN0ZXBfMSAoaW50 IHNraXBfc3Vicm91dGluZXMsIGludCBzaW5nbGVfaW5zdCwgY2hhciAqY291bnRfc3RyaW5nKQor KyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKKysgICAgICB3cml0ZV9leHBfZWx0X3R5cGUg KG9iamZpbGVfdHlwZSAob2JqZmlsZSkKKysJCQkJCSAgICAgICAtPm5vZGVidWdfdGV4dF9nbnVf aWZ1bmNfc3ltYm9sKTsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBtc3RfZGF0YToKKyAg ICAgY2FzZSBtc3RfZmlsZV9kYXRhOgorICAgICBjYXNlIG1zdF9ic3M6CitAQCAtNTI4LDYgKzU0 NSwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9s KQorICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9k ZWJ1Z19kYXRhX3N5bWJvbCk7CisgICAgICAgYnJlYWs7CiAgCi0gICBpZiAoIXNpbmdsZV9pbnN0 IHx8IHNraXBfc3Vicm91dGluZXMpCQkvKiBsZWF2ZSBzaSBjb21tYW5kIGFsb25lICovCi0gICAg IHsKLSsgICAgICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwor KyAgICBjYXNlIG1zdF9zbG90X2dvdF9wbHQ6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChv YmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX2dvdF9wbHRfc3ltYm9sKTsKKysgICAgICBi cmVhazsKICsKLSAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQotICAJ dGhyZWFkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CisgICAgIGRlZmF1bHQ6 CisgICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2Rl YnVnX3Vua25vd25fc3ltYm9sKTsKKyAgICAgICBicmVhazsKK0BAIC0xNDEyLDYgKzE0MzMsNyBA QCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogIAotICAgICAg IHNldF9sb25nam1wX2JyZWFrcG9pbnQgKHRocmVhZCk7Ci0rICAgICAgdHAtPmluaXRpYXRpbmdf ZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKKyBpbnQKKyBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKysJ CQkgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAorIAkJ CSBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAJCQkJCSAg ICAgIHZvaWQgKmRhdGEpLAorIAkJCSB2b2lkICpkYXRhKQorQEAgLTE0NTMsNyArMTQ3NSw3IEBA IG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9z LAorIAkgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5cGU7Cisg CSAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7CiAgCi0g ICAgICAgbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAsICZ0 aHJlYWQpOwotICAgICB9Ci1AQCAtMTIxOSw2ICsxMjIyLDE1IEBAIHNpZ25hbF9jb21tYW5kIChj aGFyICpzaWdudW1fZXhwLCBpbnQgZnJvbV90dHkpCi0gICBwcm9jZWVkICgoQ09SRV9BRERSKSAt MSwgb3Vyc2lnLCAwKTsKLSB9CistCSAgICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykg KG9iamZpbGUsIGRhdGEpKQorKwkgICAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgq b2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgCSAgICAgIHJldHVybiAxOworIAkgIH0K KyAgICAgICB9CitAQCAtMTQ3MSw3ICsxNDkzLDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQg KHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCiAgCi0rLyogQSBjb250aW51YXRpb24g Y2FsbGJhY2sgZm9yIHVudGlsX25leHRfY29tbWFuZC4gICovCi0rCi0rc3RhdGljIHZvaWQKLSt1 bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCB0aHJlYWRf aW5mbyAqdHAgPSBhcmc7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50ICh0cC0+bnVtKTsK LSt9Ci0rCi0gLyogUHJvY2VlZCB1bnRpbCB3ZSByZWFjaCBhIGRpZmZlcmVudCBzb3VyY2UgbGlu ZSB3aXRoIHBjIGdyZWF0ZXIgdGhhbgotICAgIG91ciBjdXJyZW50IG9uZSBvciBleGl0IHRoZSBm dW5jdGlvbi4gIFdlIHNraXAgY2FsbHMgaW4gYm90aCBjYXNlcy4KKyAJLyogQ2hlY2sgb2JqZmls ZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KKyAJICAgU1lNQk9MX09CSl9T RUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KKy0JaWYgKCgqb2JqZmlsZV9mdW5jKSAo U1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisrCWlmIChvYmpmaWxlX2Z1 bmMKKysJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2Jq ZmlsZSwgZGF0YSkpCisgCSAgcmV0dXJuIDE7CiAgCi1AQCAtMTIzNSw2ICsxMjQ3LDggQEAgdW50 aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qgc3ltYm9sICpmdW5jOwot ICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRw ID0gaW5mZXJpb3JfdGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqb2xkX2NoYWluOworIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNl ZCB0aGUgY29kZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLworQEAgLTE0ODQsMjQgKzE1MDcs MjcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGlu dCBwb3MsCiAgCi0gICBjbGVhcl9wcm9jZWVkX3N0YXR1cyAoKTsKLSAgIHNldF9zdGVwX2ZyYW1l ICgpOwotQEAgLTEyNzAsNyArMTI4NCwxOSBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9t X3R0eSkKKyAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhl eSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCiAgCi0gICB0cC0+c3RlcF9tdWx0aSA9IDA7CQkv KiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KKy0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZSkKKysgIGlmICh0eXBlICYmIHR5cGVfZnVuYyAmJiAoKnR5cGVfZnVuYykgKHR5cGUs IGRhdGEpKQorKyAgICByZXR1cm4gMTsKKysgIGlmICh0eXBlICYmIFRZUEVfT0JKRklMRSAodHlw ZSkgJiYgb2JqZmlsZV9mdW5jCisgICAgICAgJiYgKCpvYmpmaWxlX2Z1bmMpIChUWVBFX09CSkZJ TEUgKHR5cGUpLCBkYXRhKSkKKyAgICAgcmV0dXJuIDE7CistICBpZiAob2JqZmlsZSAmJiAoKm9i amZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQorKyAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9m dW5jICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisgICAgIHJldHVybiAxOwog IAotKyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKLSsgIHRwLT5pbml0aWF0aW5n X2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Ci0rICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFu dXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7Ci0rCi0gICBw cm9jZWVkICgoQ09SRV9BRERSKSAtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAxKTsKLSsKLSsg IGlmICh0YXJnZXRfY2FuX2FzeW5jX3AgKCkgJiYgaXNfcnVubmluZyAoaW5mZXJpb3JfcHRpZCkp Ci0rICAgIHsKLSsgICAgICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKyAgICAgIGFk ZF9jb250aW51YXRpb24gKHRwLCB1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiwgdHAsIE5VTEwpOwot KyAgICB9Ci0rICBlbHNlCi0rICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworICAgcmV0dXJu IDA7CiAgfQogIAotIHN0YXRpYyB2b2lkCi1AQCAtMTQ2Myw2ICsxNDg5LDcgQEAgZmluaXNoX2Nv bW1hbmRfY29udGludWF0aW9uICh2b2lkICphcmcpCi0gICBpZiAoYnMgIT0gTlVMTCAmJiB0cC0+ cHJvY2VlZF90b19maW5pc2gpCi0gICAgIG9ic2VydmVyX25vdGlmeV9ub3JtYWxfc3RvcCAoYnMs IDEgLyogcHJpbnQgZnJhbWUgKi8pOwotICAgZGVsZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9p bnQpOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAoaW5mZXJpb3JfdGhyZWFkICgpLT5u dW0pOwotIH0KKy0vKiBDYWxsIE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUg Zm91bmQgYmVpbmcgcmVmZXJlbmNlZCBieSBFWFAuCistICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2 ZXIgY2FsbGVkIHdpdGggTlVMTCBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KKy0g ICBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUg ZnVuY3Rpb25zIHJldHVybnMKKy0gICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5v bi16ZXJvIHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJldHVybmVkIHRvCistICAgdGhlIGNhbGxlci4g IE90aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xl IEVYUC4KKy0gICAqLworKy8qIENhbGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFu eSBUWVBFIGFuZCBPQkpGSUxFIGZvdW5kIGJlaW5nCisrICAgcmVmZXJlbmNlZCBieSBFWFAuICBU aGUgZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAorKyAg IE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBs aWVkIERBVEEgcG9pbnRlci4KKysgICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5v bi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikgbm9uLXplcm8KKysgICB2YWx1ZSBpcyBpbW1l ZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJu ZWQKKysgICBhZnRlciBpdGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLwogIAotIHN0YXRp YyB2b2lkCi1AQCAtMTU0Niw2ICsxNTczLDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1i b2wgKmZ1bmN0aW9uLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICBzdHJ1Y3QgYnJlYWtw b2ludCAqYnJlYWtwb2ludDsKLSAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gICBzdHJ1 Y3QgZmluaXNoX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3MgKmNhcmdzOwotKyAgaW50IHRocmVh ZCA9IHRwLT5udW07Cisgc3RhdGljIGludAorIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLAorKwkgICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lk ICpkYXRhKSwKKyAJICAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgdm9pZCAqZGF0YSksCisgCSAgICAgdm9pZCAqZGF0YSkKKyB7CitAQCAtMTUxNiw3ICsx NTQyLDkgQEAgZXhwX2l0ZXJhdGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCiAgCi0gICBzYWwg PSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKLSAgIHNhbC5wYyA9IGdl dF9mcmFtZV9wYyAoZnJhbWUpOwotQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9yd2Fy ZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAg ICAgICBwb3MgPSBlbmRwb3MgLSBvcGxlbjsKKyAgICAgICBpZiAoZXhwLT5sYW5ndWFnZV9kZWZu LT5sYV9leHBfZGVzYy0+b3BlcmF0b3JfY2hlY2sgKGV4cCwgcG9zLAorLQkJCQkJCQkgICBvYmpm aWxlX2Z1bmMsIGRhdGEpKQorKwkJCQkJCQkgICB0eXBlX2Z1bmMsCisrCQkJCQkJCSAgIG9iamZp bGVfZnVuYywKKysJCQkJCQkJICAgZGF0YSkpCisgCXJldHVybiAxOwogIAotICAgb2xkX2NoYWlu ID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50KTsKKyAgICAgICBl bmRwb3MgPSBwb3M7CitAQCAtMTU0Nyw3ICsxNTc1LDI2IEBAIGV4cF91c2VzX29iamZpbGUgKHN0 cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorIHsKKyAgIGdk Yl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmsgPT0gTlVM TCk7CiAgCi0rICBzZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQpOwotKyAgdHAtPmluaXRp YXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAoZGVs ZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKKy0gIHJldHVybiBleHBf aXRlcmF0ZSAoZXhwLCBleHBfdXNlc19vYmpmaWxlX2l0ZXIsIG9iamZpbGUpOworKyAgcmV0dXJu IGV4cF9pdGVyYXRlIChleHAsIE5VTEwsIGV4cF91c2VzX29iamZpbGVfaXRlciwgb2JqZmlsZSk7 CisrfQogKwotICAgdHAtPnByb2NlZWRfdG9fZmluaXNoID0gMTsgICAgLyogV2Ugd2FudCBzdG9w X3JlZ2lzdGVycywgcGxlYXNlLi4uICAqLwotICAgY2FyZ3MgPSB4bWFsbG9jIChzaXplb2YgKCpj YXJncykpOwotIAotZGlmZiAtLWdpdCBhL2dkYi9pbmZlcmlvci5oIGIvZ2RiL2luZmVyaW9yLmgK LWluZGV4IDVhYmVjNjguLmUzMDkyNzcgMTAwNjQ0Ci0tLS0gYS9nZGIvaW5mZXJpb3IuaAotKysr IGIvZ2RiL2luZmVyaW9yLmgKLUBAIC0yOTEsNiArMjkxLDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJy dXB0X3RhcmdldF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvbV90dHkpOwotIAotIGV4dGVy biB2b2lkIGludGVycnVwdF90YXJnZXRfMSAoaW50IGFsbF90aHJlYWRzKTsKLSAKLStleHRlcm4g dm9pZCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFyZyk7CisrLyog SGVscGVyIGZvciBleHBfdHlwZXNfbWFya191c2VkLiAgKi8KICsKLSBleHRlcm4gdm9pZCBkZXRh Y2hfY29tbWFuZCAoY2hhciAqLCBpbnQpOwotIAotIGV4dGVybiB2b2lkIG5vdGljZV9uZXdfaW5m ZXJpb3IgKHB0aWRfdCwgaW50LCBpbnQpOwotZGlmZiAtLWdpdCBhL2dkYi9pbmZydW4uYyBiL2dk Yi9pbmZydW4uYwotaW5kZXggNTdmMmFiOC4uNTc2MmE3ZiAxMDA2NDQKLS0tLSBhL2dkYi9pbmZy dW4uYwotKysrIGIvZ2RiL2luZnJ1bi5jCi1AQCAtNDUsNiArNDUsOCBAQAotICNpbmNsdWRlICJs YW5ndWFnZS5oIgotICNpbmNsdWRlICJzb2xpYi5oIgotICNpbmNsdWRlICJtYWluLmgiCi0rI2lu Y2x1ZGUgImRpY3Rpb25hcnkuaCIKLSsjaW5jbHVkZSAiYmxvY2suaCIKLSAjaW5jbHVkZSAiZ2Ri X2Fzc2VydC5oIgotICNpbmNsdWRlICJtaS9taS1jb21tb24uaCIKLSAjaW5jbHVkZSAiZXZlbnQt dG9wLmgiCi1AQCAtMzY3LDYgKzM2OSw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQotICAgICAgcGFy ZW50IHRocmVhZCBzdHJ1Y3R1cmUncyBydW4gY29udHJvbCByZWxhdGVkIGZpZWxkcywgbm90IGp1 c3QgdGhlc2UuCi0gICAgICBJbml0aWFsaXplZCB0byBhdm9pZCAibWF5IGJlIHVzZWQgdW5pbml0 aWFsaXplZCIgd2FybmluZ3MgZnJvbSBnY2MuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOwotKyAgc3RydWN0IGJyZWFrcG9pbnQgKmV4Y2Vw dGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICBDT1JFX0FERFIgc3RlcF9yYW5nZV9z dGFydCA9IDA7Ci0gICBDT1JFX0FERFIgc3RlcF9yYW5nZV9lbmQgPSAwOwotICAgc3RydWN0IGZy YW1lX2lkIHN0ZXBfZnJhbWVfaWQgPSB7IDAgfTsKLUBAIC00MTksNiArNDIyLDggQEAgZm9sbG93 X2ZvcmsgKHZvaWQpCi0gCSAgICBzdGVwX3JhbmdlX3N0YXJ0ID0gdHAtPnN0ZXBfcmFuZ2Vfc3Rh cnQ7Ci0gCSAgICBzdGVwX3JhbmdlX2VuZCA9IHRwLT5zdGVwX3JhbmdlX2VuZDsKLSAJICAgIHN0 ZXBfZnJhbWVfaWQgPSB0cC0+c3RlcF9mcmFtZV9pZDsKLSsJICAgIGV4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludAotKwkgICAgICA9IGNsb25lX21vbWVudGFyeV9icmVha3BvaW50ICh0cC0+ZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKLSAKLSAJICAgIC8qIEZvciBub3csIGRlbGV0ZSB0 aGUgcGFyZW50J3Mgc3IgYnJlYWtwb2ludCwgb3RoZXJ3aXNlLAotIAkgICAgICAgcGFyZW50L2No aWxkIHNyIGJyZWFrcG9pbnRzIGFyZSBjb25zaWRlcmVkIGR1cGxpY2F0ZXMsCi1AQCAtNDI5LDYg KzQzNCw3IEBAIGZvbGxvd19mb3JrICh2b2lkKQotIAkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3RhcnQg PSAwOwotIAkgICAgdHAtPnN0ZXBfcmFuZ2VfZW5kID0gMDsKLSAJICAgIHRwLT5zdGVwX2ZyYW1l X2lkID0gbnVsbF9mcmFtZV9pZDsKLSsJICAgIGRlbGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFr cG9pbnQgKHRwKTsKLSAJICB9Ci0gCi0gCXBhcmVudCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtNDcw LDYgKzQ3Niw4IEBAIGZvbGxvd19mb3JrICh2b2lkKQotIAkJICAgIHRwLT5zdGVwX3JhbmdlX3N0 YXJ0ID0gc3RlcF9yYW5nZV9zdGFydDsKLSAJCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSBzdGVw X3JhbmdlX2VuZDsKLSAJCSAgICB0cC0+c3RlcF9mcmFtZV9pZCA9IHN0ZXBfZnJhbWVfaWQ7Ci0r CQkgICAgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludAotKwkJICAgICAgPSBleGNlcHRp b25fcmVzdW1lX2JyZWFrcG9pbnQ7Ci0gCQkgIH0KLSAJCWVsc2UKLSAJCSAgewotQEAgLTUyMyw2 ICs1MzEsOSBAQCBmb2xsb3dfaW5mZXJpb3JfcmVzZXRfYnJlYWtwb2ludHMgKHZvaWQpCi0gICBp ZiAodHAtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQpCi0gICAgIGJyZWFrcG9pbnRfcmVfc2V0X3Ro cmVhZCAodHAtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQpOwotIAotKyAgaWYgKHRwLT5leGNlcHRp b25fcmVzdW1lX2JyZWFrcG9pbnQpCi0rICAgIGJyZWFrcG9pbnRfcmVfc2V0X3RocmVhZCAodHAt PmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCk7Cisrc3RhdGljIGludAorK2V4cF90eXBlc19t YXJrX3VzZWRfaXRlciAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKKyt7CisrICB0 eXBlX21hcmtfdXNlZCAodHlwZSk7CiArCi0gICAvKiBSZWluc2VydCBhbGwgYnJlYWtwb2ludHMg aW4gdGhlIGNoaWxkLiAgVGhlIHVzZXIgbWF5IGhhdmUgc2V0Ci0gICAgICBicmVha3BvaW50cyBh ZnRlciBjYXRjaGluZyB0aGUgZm9yaywgaW4gd2hpY2ggY2FzZSB0aG9zZQotICAgICAgd2VyZSBu ZXZlciBzZXQgaW4gdGhlIGNoaWxkLCBidXQgb25seSBpbiB0aGUgcGFyZW50LiAgVGhpcyBtYWtl cwotQEAgLTc2MCw2ICs3NzEsNyBAQCBmb2xsb3dfZXhlYyAocHRpZF90IHBpZCwgY2hhciAqZXhl Y2RfcGF0aG5hbWUpCi0gICAvKiBJZiB0aGVyZSB3YXMgb25lLCBpdCdzIGdvbmUgbm93LiAgV2Ug Y2Fubm90IHRydWx5IHN0ZXAtdG8tbmV4dAotICAgICAgc3RhdGVtZW50IHRocm91Z2ggYW4gZXhl YygpLiAqLwotICAgdGgtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgPSBOVUxMOwotKyAgdGgtPmV4 Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICB0aC0+c3RlcF9yYW5nZV9zdGFy dCA9IDA7Ci0gICB0aC0+c3RlcF9yYW5nZV9lbmQgPSAwOworKyAgLyogQ29udGludWUgdGhlIHRy YXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKKyt9CisrCisrLyogQ2FsbCB0eXBlX21hcmtfdXNl ZCBmb3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCisrCisrdm9pZAorK2V4cF90eXBl c19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApCisreworKyAgZXhwX2l0ZXJhdGUg KGV4cCwgZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyLCBOVUxMLCBOVUxMKTsKKyB9CiAgCi1AQCAt MjE5MCw2ICsyMjAyLDggQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9p bnRfYXRfc2FsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJCQkgIHN0cnVjdCBzeW10 YWJfYW5kX2xpbmUgc3Jfc2FsLAotIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKLSBz dGF0aWMgdm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFy Y2ggKiwgQ09SRV9BRERSKTsKLStzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChz dHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKLSsJCQkJICAgIHN0cnVjdCBmcmFtZV9p bmZvICosIHN0cnVjdCBzeW1ib2wgKik7Cisgdm9pZAorZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXIt ZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKK2luZGV4IGJiNzlhZTEuLmZiYmQ2MDAgMTAwNjQ0 CistLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAorKysrIGIvZ2RiL3BhcnNlci1kZWZzLmgKK0BAIC0x OTQsNiArMTk0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25z dCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAorIAkJCQkgICAgICBpbnQgKik7Cisg CisgZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwgaW50IHBvcywKKysJCQkJICAgIGludCAoKnR5cGVfZnVuYykgKHN0cnVjdCB0eXBlICp0 eXBlLAorKwkJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAorIAkJCQkgICAgaW50ICgqb2JqZmlsZV9m dW5jKQorIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAor IAkJCQkgICAgdm9pZCAqZGF0YSk7CitAQCAtMjg1LDYgKzI4Nyw3IEBAIHN0cnVjdCBleHBfZGVz Y3JpcHRvcgorICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8g dGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCisgICAgICAgIHNob3VsZCBiZSByZXR1cm5lZC4g ICovCisgICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50IHBvcywKKysJCQkgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9p ZCAqZGF0YSksCisgCQkJICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCisgCQkJCQkJdm9pZCAqZGF0YSksCisgCQkJICAgdm9pZCAqZGF0YSk7CitAQCAtMzIz LDQgKzMyNiw4IEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJpbnRmIChGSUxFICosIGNvbnN0IGNo YXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsKICAKLSBzdGF0aWMgdm9pZCBzdG9w X3N0ZXBwaW5nIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcyk7Ci0gc3RhdGlj IHZvaWQgcHJlcGFyZV90b193YWl0IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVj cyk7Ci1AQCAtMjMxMyw2ICsyMzI3LDcgQEAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRf Y2FsbGJhY2sgKHN0cnVjdCB0aHJlYWRfaW5mbyAqaW5mbywgdm9pZCAqZGF0YSkKLSAgICAgcmV0 dXJuIDA7CisgZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCi0gICBkZWxldGVfc3RlcF9yZXN1bWVf YnJlYWtwb2ludCAoaW5mbyk7Ci0rICBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50 IChpbmZvKTsKLSAgIHJldHVybiAwOworK2V4dGVybiBpbnQgZXhwX3VzZXNfb2JqZmlsZSAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworKworK2V4dGVy biB2b2lkIGV4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9uICpleHApOworKwor ICNlbmRpZiAvKiBQQVJTRVJfREVGU19IICovCitkaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1u YXQuYyBiL2dkYi9wcGMtbGludXgtbmF0LmMKK2luZGV4IGU4ZDk2ZjYuLjhiZjA5N2MgMTAwNjQ0 CistLS0gYS9nZGIvcHBjLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCitA QCAtMjAxMCw2ICsyMDEwLDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCBydywKKyAgIHJldHVybiByZXQ7CiAgfQogIAotQEAgLTIz MzcsNiArMjM1Miw3IEBAIGRlbGV0ZV9zdGVwX3RocmVhZF9zdGVwX3Jlc3VtZV9icmVha3BvaW50 ICh2b2lkKQotICAgICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQg KCk7Ci0gCi0gICAgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKLSsgICAg ICBkZWxldGVfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ICh0cCk7Ci0gICAgIH0KKysvKiBT ZWUgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50cy4gIERvIG5vdCB1c2Ugd3JhcHBlcgorKyAgIHBw Y19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCBhcyBpdCB3b3VsZCBtb2RpZnkgdGhlIHJlZ2lzdGVy IGNhY2hlCisrICAgKHNhdmVkX2RhYnJfdmFsdWUpLiAgKi8KKysKKytzdGF0aWMgaW50CisrcHBj X2xpbnV4X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBwaWRfdCB0aWQ7CisrCisr ICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0 aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOworKworKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NF VF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCisrICAgIHJldHVybiAtMTsKKysgIHJl dHVybiAwOworK30KKysKKyBzdGF0aWMgdm9pZAorIHBwY19saW51eF9uZXdfdGhyZWFkIChwdGlk X3QgcHRpZCkKKyB7CitAQCAtMjM0OSw2ICsyMzY3LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4 X25hdCAodm9pZCkKKyAgIHQtPnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19s aW51eF9yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQ7CisgICB0LT50b19pbnNlcnRfd2F0Y2hw b2ludCA9IHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV93YXRj aHBvaW50ID0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dh dGNocG9pbnRzID0gcHBjX2xpbnV4X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX3N0b3Bw ZWRfYnlfd2F0Y2hwb2ludCA9IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0 LT50b19zdG9wcGVkX2RhdGFfYWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVz czsKKyAgIHQtPnRvX3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0 Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZTsKK2RpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBi L2dkYi9wcmludGNtZC5jCitpbmRleCA1ZmZhMDk5Li41OGQ5Yzc5IDEwMDY0NAorLS0tIGEvZ2Ri L3ByaW50Y21kLmMKKysrKyBiL2dkYi9wcmludGNtZC5jCitAQCAtOTcxLDYgKzk3MSwxMSBAQCBw cmludF9jb21tYW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCiAg ICBlbHNlCi0gICAgIC8qIEluIGFsbC1zdG9wIG1vZGUsIGRlbGV0ZSBhbGwgc3RlcC1yZXN1bWUg YW5kIGxvbmdqbXAtcmVzdW1lCi1AQCAtMzI0MSw2ICszMjU3LDEwIEBAIGhhbmRsZV9pbmZlcmlv cl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAg c3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRp ZCkpOworICAgICB2YWwgPSBhY2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7CiAgCi0rICAgICAgLyog Q2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGlj aCBjb3VsZAotKwkgY29uZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWlu c19zaWduYWwuICAqLwotKyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwor KyAgLyogRG8gbm90IHRyeSB0byBPQkpFQ1RfQUREUkVTU19TRVQgaGVyZSBhbnl0aGluZy4gIFdl IGFyZSBpbnRlcmVzdGVkIGluIHRoZQorKyAgICAgc291cmNlIHZhcmlhYmxlIGJhc2UgYWRkcmVz c2VzIGFzIGZvdW5kIGJ5IFJFQURfVkFSX1ZBTFVFLiAgVGhlIHZhbHVlIGhlcmUKKysgICAgIGNh biBiZSBhbHJlYWR5IGEgY2FsY3VsYXRlZCBleHByZXNzaW9uIGFkZHJlc3MgaW5hcHByb3ByaWF0 ZSBmb3IKKysgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLwogKwotICAgICAgIGVj cy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdAotIAk9IGJwc3RhdF9zdG9wX3N0YXR1cyAoZ2V0 X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpLAotIAkJCSAgICAgIHN0 b3BfcGMsIGVjcy0+cHRpZCk7Ci1AQCAtMzMyOCw2ICszMzQ4LDEwIEBAIGhhbmRsZV9pbmZlcmlv cl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gCi0gICAgICAg c3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJlYWRfcmVnY2FjaGUgKGVjcy0+cHRp ZCkpOwotIAotKyAgICAgIC8qIENsZWFyIFdBVENIUE9JTlRfVFJJR0dFUkVEIHZhbHVlcyBmcm9t IHByZXZpb3VzIHN0b3Agd2hpY2ggY291bGQKLSsJIGNvbmZ1c2UgYnBzdGF0X3N0b3Bfc3RhdHVz IGFuZCBicHN0YXRfZXhwbGFpbnNfc2lnbmFsLiAgKi8KLSsgICAgICB3YXRjaHBvaW50c190cmln Z2VyZWQgKCZlY3MtPndzKTsKKyAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAmJiB2YWx1ZV90eXBl ICh2YWwpICYmCisgCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwpKSAhPSBUWVBFX0NP REVfVk9JRCkpCisgICAgIHsKK0BAIC0xNDcxLDYgKzE0NzYsMjIgQEAgeF9jb21tYW5kIChjaGFy ICpleHAsIGludCBmcm9tX3R0eSkKKyAJc2V0X2ludGVybmFsdmFyIChsb29rdXBfaW50ZXJuYWx2 YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOworICAgICB9CisgfQogKwotICAgICAgIC8q IERvIHdoYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBvZiB0aGUgdmZv cmsuICAqLwotICAgICAgIGhhbmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQgKDEpOwotIAot QEAgLTQwNzYsMjMgKzQxMDAsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6Ci0gCi0gCWVj cy0+ZXZlbnRfdGhyZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOwotIAotLQlpZiAo IWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCi0tCSAgICB8fCAhZ2RiYXJj aF9nZXRfbG9uZ2ptcF90YXJnZXQgKGdkYmFyY2gsIGZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCWlm ICh3aGF0LmlzX2xvbmdqbXApCi0gCSAgewotLQkgICAgaWYgKGRlYnVnX2luZnJ1bikKLS0JICAg ICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAotKwkgICAgaWYgKCFnZGJhcmNo X2dldF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQotKwkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdq bXBfdGFyZ2V0IChnZGJhcmNoLAotKwkJCQkJCWZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCSAgICAg IHsKLSsJCWlmIChkZWJ1Z19pbmZydW4pCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0 ZGxvZywgIlwKLSBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFy Y2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7Ci0tCSAgICBrZWVwX2dvaW5nIChlY3MpOwotLQkg ICAgcmV0dXJuOwotLQkgIH0KLSsJCWtlZXBfZ29pbmcgKGVjcyk7Ci0rCQlyZXR1cm47Ci0rCSAg ICAgIH0KLSAKLS0JLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJl c3VtZSBicmVha3BvaW50Ci0tCSAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAg Ki8KLS0JZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsK LSsJICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUg YnJlYWtwb2ludAotKwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAq LwotKwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFk KTsKKysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9t IHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3ByaW50X3R5cGVz X21hcmtfdXNlZCAodm9pZCkKKyt7CisrICBzdHJ1Y3QgZGlzcGxheSAqZDsKKysKKysgIGlmIChs YXN0X2V4YW1pbmVfdmFsdWUpCisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChsYXN0 X2V4YW1pbmVfdmFsdWUpKTsKKysKKysgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBk LT5uZXh0KQorKyAgICBpZiAoZC0+ZXhwKQorKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQt PmV4cCk7CisrfQorKworIAwKICAKLS0JLyogSW5zZXJ0IGEgYnJlYWtwb2ludCBhdCByZXN1bWUg YWRkcmVzcy4gICovCi0tCWluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNo LCBqbXBfYnVmX3BjKTsKLSsJICAgIC8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFk ZHJlc3MuICAqLwotKwkgICAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFy Y2gsIGptcF9idWZfcGMpOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIHN0cnVjdCBzeW1i b2wgKmZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsKKyAvKiBBZGQgYW4gZXhwcmVz c2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgorQEAgLTI4NjksNCArMjg5MCw2IEBAIFNo b3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1i b2w+LiIpLCBOVUxMLAorICAgYWRkX2NvbSAoImV2YWwiLCBub19jbGFzcywgZXZhbF9jb21tYW5k LCBfKCJcCisgQ29udmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIsIGFy ZzMsIC4uLiwgYXJnbiB0b1xuXAorIGEgY29tbWFuZCBsaW5lLCBhbmQgY2FsbCBpdC4iKSk7Cisr CisrICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJrX3VzZWQpOwor IH0KK2RpZmYgLS1naXQgYS9nZGIvcHN5bXRhYi5jIGIvZ2RiL3BzeW10YWIuYworaW5kZXggMzY3 Y2YxZS4uYzEyMDg5NCAxMDA2NDQKKy0tLSBhL2dkYi9wc3ltdGFiLmMKKysrKyBiL2dkYi9wc3lt dGFiLmMKK0BAIC00MjEsNiArNDIxLDE0IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKKyAgIHJldHVybiBOVUxMOworIH0KICAKLSsJICAgIGlm IChmdW5jKQotKwkgICAgICBjaGVja19leGNlcHRpb25fcmVzdW1lIChlY3MsIGZyYW1lLCBmdW5j KTsKLSsJICB9Ci0gCWtlZXBfZ29pbmcgKGVjcyk7Ci0gCXJldHVybjsKKytzdGF0aWMgdm9pZAor K3ByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZ19wc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCisrCQkJCSAgICAgIGludCBraW5kLCBjb25zdCBjaGFyICpuYW1lLAorKwkJCQkgICAg ICBkb21haW5fZW51bSBkb21haW4pCisreworKyAgLyogTm90aGluZy4gICovCisrfQorKworIC8q IExvb2ssIGluIHBhcnRpYWxfc3ltdGFiIFBTVCwgZm9yIHN5bWJvbCB3aG9zZSBuYXR1cmFsIG5h bWUgaXMgTkFNRS4KKyAgICBDaGVjayB0aGUgZ2xvYmFsIHN5bWJvbHMgaWYgR0xPQkFMLCB0aGUg c3RhdGljIHN5bWJvbHMgaWYgbm90LiAqLwogIAotQEAgLTQxMDEsOCArNDEzNSw1MiBAQCBpbmZy dW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBf dGFyZ2V0KVxuIik7Ci0gCSAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotIAkJCSAg ICAgICJpbmZydW46IEJQU1RBVF9XSEFUX0NMRUFSX0xPTkdKTVBfUkVTVU1FXG4iKTsKK0BAIC05 NDEsNyArOTQ5LDcgQEAgcHN5bXRhYl90b19mdWxsbmFtZSAoc3RydWN0IHBhcnRpYWxfc3ltdGFi ICpwcykKKyAgIHJldHVybiBOVUxMOworIH0KICAKLS0JZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90 aHJlYWQtPnN0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7Ci0tCWRlbGV0ZV9zdGVwX3Jl c3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCWlmICh3aGF0LmlzX2xvbmdq bXApCi0rCSAgewotKwkgICAgZ2RiX2Fzc2VydCAoZWNzLT5ldmVudF90aHJlYWQtPnN0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7Ci0rCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtw b2ludCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIC8q IFRoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHRvIGNvbnNpZGVyLgorLXN0YXRpYyBjaGFyICoKKytz dGF0aWMgY29uc3QgY2hhciAqCisgZmluZF9zeW1ib2xfZmlsZV9mcm9tX3BhcnRpYWwgKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBjaGFyICpuYW1lKQorIHsKKyAgIHN0cnVjdCBwYXJ0 aWFsX3N5bXRhYiAqcHN0OworQEAgLTExOTksNiArMTIwNyw3IEBAIGNvbnN0IHN0cnVjdCBxdWlj a19zeW1ib2xfZnVuY3Rpb25zIHBzeW1fZnVuY3Rpb25zID0KKyAgIGZvcmdldF9jYWNoZWRfc291 cmNlX2luZm9fcGFydGlhbCwKKyAgIGxvb2t1cF9zeW10YWJfdmlhX3BhcnRpYWxfc3ltdGFiLAor ICAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMsCisrICBwcmVfZXhwYW5kX3N5bXRhYnNfbWF0 Y2hpbmdfcHN5bXRhYnMsCisgICBwcmludF9wc3ltdGFiX3N0YXRzX2Zvcl9vYmpmaWxlLAorICAg ZHVtcF9wc3ltdGFic19mb3Jfb2JqZmlsZSwKKyAgIHJlbG9jYXRlX3BzeW10YWJzLAorZGlmZiAt LWdpdCBhL2dkYi9wc3ltdGFiLmggYi9nZGIvcHN5bXRhYi5oCitpbmRleCA5YjhjOGRmLi5kZThi NjdlIDEwMDY0NAorLS0tIGEvZ2RiL3BzeW10YWIuaAorKysrIGIvZ2RiL3BzeW10YWIuaAorQEAg LTEsNiArMSw2IEBACisgLyogUHVibGljIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGRlZmluaXRpb25z LgorIAorLSAgIENvcHlyaWdodCAoQykgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KKysgICBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCisgCisgICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorIAorQEAgLTI4LDQgKzI4 LDYgQEAgdm9pZCBtYXBfcGFydGlhbF9zeW1ib2xfZmlsZW5hbWVzICh2b2lkICgqKSAoY29uc3Qg Y2hhciAqLCBjb25zdCBjaGFyICosCisgCisgZXh0ZXJuIGNvbnN0IHN0cnVjdCBxdWlja19zeW1i b2xfZnVuY3Rpb25zIHBzeW1fZnVuY3Rpb25zOworIAorK2V4dGVybiBjb25zdCBzdHJ1Y3QgcXVp Y2tfc3ltYm9sX2Z1bmN0aW9ucyBkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9uczsKKysKKyAjZW5k aWYgLyogUFNZTVRBQl9IICovCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1l SXRlcmF0b3IucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQorbmV3IGZp bGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjU2NTQ1NDYKKy0tLSAvZGV2L251bGwKKysr KyBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5CitAQCAtMCwwICsxLDMzIEBA CisrIyBJdGVyYXRvciBvdmVyIGZyYW1lcy4KKysKKysjIENvcHlyaWdodCAoQykgMjAwOCwgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisrCisrY2xhc3MgRnJhbWVJdGVyYXRvcjoKKysgICAgIiIiQW4gaXRlcmF0b3Ig dGhhdCBpdGVyYXRlcyBvdmVyIGZyYW1lcy4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxm LCBmcmFtZSk6CisrICAgICAgICAiSW5pdGlhbGl6ZSBhIEZyYW1lSXRlcmF0b3IuICBGUkFNRSBp cyB0aGUgc3RhcnRpbmcgZnJhbWUuIgorKyAgICAgICAgc2VsZi5mcmFtZSA9IGZyYW1lCisrCisr ICAgIGRlZiBfX2l0ZXJfXyAoc2VsZik6CisrICAgICAgICByZXR1cm4gc2VsZgorKworKyAgICBk ZWYgbmV4dCAoc2VsZik6CisrICAgICAgICByZXN1bHQgPSBzZWxmLmZyYW1lCisrICAgICAgICBp ZiByZXN1bHQgaXMgTm9uZToKKysgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uCisrICAg ICAgICBzZWxmLmZyYW1lID0gcmVzdWx0Lm9sZGVyICgpCisrICAgICAgICByZXR1cm4gcmVzdWx0 CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weSBiL2dkYi9w eXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwLi5iNzkwYTU0CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvRnJhbWVXcmFwcGVyLnB5CitAQCAtMCwwICsxLDExMiBAQAorKyMgV3JhcHBlciBBUEkgZm9y IGZyYW1lcy4KKysKKysjIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisraW1w b3J0IGdkYgorKworKyMgRklYTUU6IGFyZ3VhYmx5IGFsbCB0aGlzIHNob3VsZCBiZSBvbiBGcmFt ZSBzb21laG93LgorK2NsYXNzIEZyYW1lV3JhcHBlcjoKKysgICAgZGVmIF9faW5pdF9fIChzZWxm LCBmcmFtZSk6CisrICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWU7CisrCisrICAgIGRlZiB3cml0 ZV9zeW1ib2wgKHNlbGYsIHN0cmVhbSwgc3ltLCBibG9jayk6CisrICAgICAgICBpZiBsZW4gKHN5 bS5saW5rYWdlX25hbWUpOgorKyAgICAgICAgICAgIG5zeW0sIGlzX2ZpZWxkX29mX3RoaXMgPSBn ZGIubG9va3VwX3N5bWJvbCAoc3ltLmxpbmthZ2VfbmFtZSwgYmxvY2spCisrICAgICAgICAgICAg aWYgbnN5bS5hZGRyX2NsYXNzICE9IGdkYi5TWU1CT0xfTE9DX1JFR0lTVEVSOgorKyAgICAgICAg ICAgICAgICBzeW0gPSBuc3ltCisrCisrICAgICAgICBzdHJlYW0ud3JpdGUgKHN5bS5wcmludF9u YW1lICsgIj0iKQorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHZhbCA9IHNlbGYucmVhZF92 YXIgKHN5bSkKKysgICAgICAgICAgICBpZiB2YWwgIT0gTm9uZToKKysgICAgICAgICAgICAgICAg dmFsID0gc3RyICh2YWwpCisrICAgICAgICAjIEZJWE1FOiB3b3VsZCBiZSBuaWNlIHRvIGhhdmUg YSBtb3JlIHByZWNpc2UgZXhjZXB0aW9uIGhlcmUuCisrICAgICAgICBleGNlcHQgUnVudGltZUVy cm9yLCB0ZXh0OgorKyAgICAgICAgICAgIHZhbCA9IHRleHQKKysgICAgICAgIGlmIHZhbCA9PSBO b25lOgorKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIj8/PyIpCisrICAgICAgICBlbHNlOgor KyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoc3RyICh2YWwpKQorKworKyAgICBkZWYgcHJpbnRf ZnJhbWVfbG9jYWxzIChzZWxmLCBzdHJlYW0sIGZ1bmMpOgorKyAgICAgICAgaWYgbm90IGZ1bmM6 CisrICAgICAgICAgICAgcmV0dXJuCisrCisrICAgICAgICBmaXJzdCA9IFRydWUKKysgICAgICAg IGJsb2NrID0gZnVuYy52YWx1ZQorKworKyAgICAgICAgZm9yIHN5bSBpbiBibG9jazoKKysgICAg ICAgICAgICBpZiBzeW0uaXNfYXJndW1lbnQ6CisrICAgICAgICAgICAgICAgIGNvbnRpbnVlOwor KworKyAgICAgICAgICAgIHNlbGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5bSwgYmxvY2spCisr ICAgICAgICAgICAgc3RyZWFtLndyaXRlICgnXG4nKQorKworKyAgICBkZWYgcHJpbnRfZnJhbWVf YXJncyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKKysgICAgICAgIGlmIG5vdCBmdW5jOgorKyAgICAg ICAgICAgIHJldHVybgorKworKyAgICAgICAgZmlyc3QgPSBUcnVlCisrICAgICAgICBibG9jayA9 IGZ1bmMudmFsdWUKKysKKysgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6CisrICAgICAgICAgICAg aWYgbm90IHN5bS5pc19hcmd1bWVudDoKKysgICAgICAgICAgICAgICAgY29udGludWU7CisrCisr ICAgICAgICAgICAgaWYgbm90IGZpcnN0OgorKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUg KCIsICIpCisrCisrICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0cmVhbSwgc3ltLCBi bG9jaykKKysgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCisrCisrICAgICMgRklYTUU6IHRoaXMg c2hvdWxkIHByb2JhYmx5IGp1c3QgYmUgYSBtZXRob2Qgb24gZ2RiLkZyYW1lLgorKyAgICAjIEJ1 dCB0aGVuIHdlIG5lZWQgc3RyZWFtIHdyYXBwZXJzLgorKyAgICBkZWYgZGVzY3JpYmUgKHNlbGYs IHN0cmVhbSwgZnVsbCk6CisrICAgICAgICBpZiBzZWxmLnR5cGUgKCkgPT0gZ2RiLkRVTU1ZX0ZS QU1FOgorKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiA8ZnVuY3Rpb24gY2FsbGVkIGZyb20g Z2RiPlxuIikKKysgICAgICAgIGVsaWYgc2VsZi50eXBlICgpID09IGdkYi5TSUdUUkFNUF9GUkFN RToKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgPHNpZ25hbCBoYW5kbGVyIGNhbGxlZD5c biIpCisrICAgICAgICBlbHNlOgorKyAgICAgICAgICAgIHNhbCA9IHNlbGYuZmluZF9zYWwgKCkK KysgICAgICAgICAgICBwYyA9IHNlbGYucGMgKCkKKysgICAgICAgICAgICBuYW1lID0gc2VsZi5u YW1lICgpCisrICAgICAgICAgICAgaWYgbm90IG5hbWU6CisrICAgICAgICAgICAgICAgIG5hbWUg PSAiPz8iCisrICAgICAgICAgICAgaWYgcGMgIT0gc2FsLnBjIG9yIG5vdCBzYWwuc3ltdGFiOgor KyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgMHglMDh4IGluIiAlIHBjKQorKyAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIiAiICsgbmFtZSArICIgKCIpCisrCisrICAgICAgICAgICAg ZnVuYyA9IHNlbGYuZnVuY3Rpb24gKCkKKysgICAgICAgICAgICBzZWxmLnByaW50X2ZyYW1lX2Fy Z3MgKHN0cmVhbSwgZnVuYykKKysKKysgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIpIikKKysK KysgICAgICAgICAgICBpZiBzYWwuc3ltdGFiIGFuZCBzYWwuc3ltdGFiLmZpbGVuYW1lOgorKyAg ICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgYXQgIiArIHNhbC5zeW10YWIuZmlsZW5hbWUp CisrICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIjoiICsgc3RyIChzYWwubGluZSkpCisr CisrICAgICAgICAgICAgaWYgbm90IHNlbGYubmFtZSAoKSBvciAobm90IHNhbC5zeW10YWIgb3Ig bm90IHNhbC5zeW10YWIuZmlsZW5hbWUpOgorKyAgICAgICAgICAgICAgICBsaWIgPSBnZGIuc29s aWJfYWRkcmVzcyAocGMpCisrICAgICAgICAgICAgICAgIGlmIGxpYjoKKysgICAgICAgICAgICAg ICAgICAgIHN0cmVhbS53cml0ZSAoIiBmcm9tICIgKyBsaWIpCisrCisrICAgICAgICAgICAgc3Ry ZWFtLndyaXRlICgiXG4iKQorKworKyAgICAgICAgICAgIGlmIGZ1bGw6CisrICAgICAgICAgICAg ICAgIHNlbGYucHJpbnRfZnJhbWVfbG9jYWxzIChzdHJlYW0sIGZ1bmMpCisrCisrICAgIGRlZiBf X2dldGF0dHJfXyAoc2VsZiwgbmFtZSk6CisrICAgICAgICByZXR1cm4gZ2V0YXR0ciAoc2VsZi5m cmFtZSwgbmFtZSkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkg Yi9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0Citp bmRleCAwMDAwMDAwLi5iMzc1YzY4CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvX19pbml0X18ucHkKK0BAIC0wLDAgKzEsMTkgQEAKKysjIFN0YXJ0dXAgY29kZS4KKysK KysjIENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysK KysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQorKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysj CisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrCisrIyBMb2FkIHRoZSByZXF1aXJlIGNv bW1hbmQgYnkgZGVmYXVsdC4KKytpbXBvcnQgZ2RiLmNvbW1hbmQucmVxdWlyZQorZGlmZiAtLWdp dCBhL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIv YmFja3RyYWNlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmJhYWI1 ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQor QEAgLTAsMCArMSw0MiBAQAorKyMgRmlsdGVyaW5nIGJhY2t0cmFjZS4KKysKKysjIENvcHlyaWdo dCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisrCisraW1wb3J0IGdkYgorK2ltcG9ydCBpdGVydG9vbHMKKysK KysjIE91ciBvbmx5IGV4cG9ydHMuCisrX19hbGxfXyA9IFsncHVzaF9mcmFtZV9maWx0ZXInLCAn Y3JlYXRlX2ZyYW1lX2ZpbHRlciddCisrCisrZnJhbWVfZmlsdGVyID0gTm9uZQorKworK2RlZiBw dXNoX2ZyYW1lX2ZpbHRlciAoY29uc3RydWN0b3IpOgorKyAgICAiIiJSZWdpc3RlciBhIG5ldyBi YWNrdHJhY2UgZmlsdGVyIGNsYXNzIHdpdGggdGhlICdiYWNrdHJhY2UnIGNvbW1hbmQuCisrVGhl IGZpbHRlciB3aWxsIGJlIHBhc3NlZCBhbiBpdGVyYXRvciBhcyBhbiBhcmd1bWVudC4gIFRoZSBp dGVyYXRvcgorK3dpbGwgcmV0dXJuIGdkYi5GcmFtZS1saWtlIG9iamVjdHMuICBUaGUgZmlsdGVy IHNob3VsZCBpbiB0dXJuIGFjdCBhcworK2FuIGl0ZXJhdG9yIHJldHVybmluZyBzdWNoIG9iamVj dHMuIiIiCisrICAgIGdsb2JhbCBmcmFtZV9maWx0ZXIKKysgICAgaWYgZnJhbWVfZmlsdGVyID09 IE5vbmU6CisrICAgICAgICBmcmFtZV9maWx0ZXIgPSBjb25zdHJ1Y3RvcgorKyAgICBlbHNlOgor KyAgICAgICAgZnJhbWVfZmlsdGVyID0gbGFtYmRhIGl0ZXJhdG9yOiBjb25zdHJ1Y3RvciAoZnJh bWVfZmlsdGVyIChpdGVyYXRvcikpCisrCisrZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIp OgorKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCisrICAgIGlmIGZyYW1lX2ZpbHRlciBpcyBOb25l OgorKyAgICAgICAgcmV0dXJuIGl0ZXIKKysgICAgcmV0dXJuIGZyYW1lX2ZpbHRlciAoaXRlcikK ICsKLSsJICAgICAgIDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMuICBJ biB0aGlzIGNhc2UKLSsJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9u IGhhcyBnb25lIHRvbyBmYXIuCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvX19pbml0X18ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9fX2luaXRfXy5weQor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjhiMTM3ODkKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL19faW5pdF9fLnB5CitAQCAtMCww ICsxIEBACiArCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMsIGFuZCBp cyB0aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJhbWUuICBXZSBzdG9wLCBiZWNh dXNlIHRoZSBleGNlcHRpb24gaGFzIGJlZW4KLSsJICAgICAgIGNhdWdodC4KK2RpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weSBiL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL2FsaWFzLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u OTZiNjYxOAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv YWxpYXMucHkKK0BAIC0wLDAgKzEsNTkgQEAKKysjIEFsaWFzIGNvbW1hbmQuCiArCi0rCSAgICAg ICAzLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMgYW5kIGlzIGRpZmZlcmVudCBmcm9tCi0r CSAgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIFRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBoYXMg YmVlbgotKwkgICAgICAgY2F1Z2h0IGJlbmVhdGggdGhlIGluaXRpYXRpbmcgZnJhbWUsIHNvIGtl ZXAgZ29pbmcuICAqLwotKwkgICAgc3RydWN0IGZyYW1lX2luZm8gKmluaXRfZnJhbWUKLSsJICAg ICAgPSBmcmFtZV9maW5kX2J5X2lkIChlY3MtPmV2ZW50X3RocmVhZC0+aW5pdGlhdGluZ19mcmFt ZSk7CisrIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCi0rCSAgICBnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+ZXhjZXB0aW9uX3Jlc3Vt ZV9icmVha3BvaW50ICE9IE5VTEwpOwotKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJl YWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K KysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KICsKLSsJICAgIGlmIChpbml0X2ZyYW1lKQotKwkgICAgICB7Ci0rCQlzdHJ1Y3QgZnJhbWVf aWQgY3VycmVudF9pZAotKwkJICA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUgKCkp OwotKwkJaWYgKGZyYW1lX2lkX2VxIChjdXJyZW50X2lkLAotKwkJCQkgZWNzLT5ldmVudF90aHJl YWQtPmluaXRpYXRpbmdfZnJhbWUpKQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAyLiAgRmFsbCB0 aHJvdWdoLiAgKi8KLSsJCSAgfQotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgLyogQ2FzZSAzLiAg Ki8KLSsJCSAgICBrZWVwX2dvaW5nIChlY3MpOwotKwkJICAgIHJldHVybjsKLSsJCSAgfQotKwkg ICAgICB9CisraW1wb3J0IGdkYgorKworK2NsYXNzIEFsaWFzSW1wbGVtZW50YXRpb24gKGdkYi5D b21tYW5kKToKKysgICAgZGVmIF9faW5pdF9fIChzZWxmLCBuYW1lLCByZWFsLCBkb2MpOgorKyAg ICAgICAgIyBIYXZlIHRvIHNldCBfX2RvY19fIGJlZm9yZSB0aGUgc3VwZXIgaW5pdCBjYWxsLgor KyAgICAgICAgIyBJdCB3b3VsZCBiZSBuaWNlIGlmIGdkYidzIGhlbHAgbG9va2VkIHVwIF9fZG9j X18gZHluYW1pY2FsbHkuCisrICAgICAgICBzZWxmLl9fZG9jX18gPSBkb2MKKysgICAgICAgICMg Tm90ZTogbm8gZ29vZCB3YXkgdG8gY29tcGxldGUgOigKKysgICAgICAgIHN1cGVyIChBbGlhc0lt cGxlbWVudGF0aW9uLCBzZWxmKS5fX2luaXRfXyAobmFtZSwgZ2RiLkNPTU1BTkRfTk9ORSkKKysg ICAgICAgIHNlbGYucmVhbCA9IHJlYWwKKysKKysgICAgZGVmIGludm9rZShzZWxmLCBhcmcsIGZy b21fdHR5KToKKysgICAgICAgIGdkYi5leGVjdXRlIChzZWxmLnJlYWwgKyAnICcgKyBhcmcsIGZy b21fdHR5KQorKworK2NsYXNzIEFsaWFzQ29tbWFuZCAoZ2RiLkNvbW1hbmQpOgorKyAgICAiIiJB bGlhcyBvbmUgY29tbWFuZCB0byBhbm90aGVyLgorK0luIHRoZSBzaW1wbGVzdCBmb3JtLCB0aGUg Zmlyc3Qgd29yZCBpcyB0aGUgbmFtZSBvZiB0aGUgYWxpYXMsIGFuZAorK3RoZSByZW1haW5pbmcg d29yZHMgYXJlIHRoZSB0aGUgZXhwYW5zaW9uLgorK0FuICc9JyBieSBpdHNlbGYgY2FuIGJlIHVz ZWQgdG8gZGVmaW5lIGEgbXVsdGktd29yZCBhbGlhczsgd29yZHMKKytiZWZvcmUgdGhlICc9JyBh cmUgdGhlIG5hbWUgb2YgdGhlIG5ldyBjb21tYW5kLiIiIgorKworKyAgICBkZWYgX19pbml0X18g KHNlbGYpOgorKyAgICAgICAgIyBDb21wbGV0aW9uIGlzIG5vdCBxdWl0ZSByaWdodCBoZXJlLgor KyAgICAgICAgc3VwZXIgKEFsaWFzQ29tbWFuZCwgc2VsZikuX19pbml0X18gKCJhbGlhcyIsIGdk Yi5DT01NQU5EX05PTkUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiLkNPTVBMRVRFX0NPTU1BTkQpCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFy ZywgZnJvbV90dHkpOgorKyAgICAgICAgc2VsZi5kb250X3JlcGVhdCAoKQorKyAgICAgICAgIyBX aXRob3V0IHNvbWUgZm9ybSBvZiBxdW90aW5nIHdlIGNhbid0IGFsaWFzIGEgbXVsdGktd29yZAor KyAgICAgICAgIyBjb21tYW5kIHRvIGFub3RoZXIgY29tbWFuZC4KKysgICAgICAgIGFyZ3MgPSBh cmcuc3BsaXQoKQorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIHN0YXJ0ID0gYXJncy5pbmRl eCAoJz0nKQorKyAgICAgICAgICAgIGVuZCA9IHN0YXJ0ICsgMQorKyAgICAgICAgZXhjZXB0IFZh bHVlRXJyb3I6CisrICAgICAgICAgICAgc3RhcnQgPSAxCisrICAgICAgICAgICAgZW5kID0gMQor KyAgICAgICAgdGFyZ2V0ID0gIiAiLmpvaW4oYXJnc1tlbmQ6XSkKKysgICAgICAgIEFsaWFzSW1w bGVtZW50YXRpb24gKCIgIi5qb2luIChhcmdzWzA6c3RhcnRdKSwgdGFyZ2V0LAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIlRoaXMgY29tbWFuZCBpcyBhbiBhbGlhcyBmb3IgJyVzJy4i ICUgdGFyZ2V0KQorKworK0FsaWFzQ29tbWFuZCgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9s aWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv YmFja3RyYWNlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZWM5YTUy NworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3Ry YWNlLnB5CitAQCAtMCwwICsxLDEwNiBAQAorKyMgTmV3IGJhY2t0cmFjZSBjb21tYW5kLgogKwot KwkgICAgLyogRm9yIENhc2VzIDEgYW5kIDIsIHJlbW92ZSB0aGUgc3RlcC1yZXN1bWUgYnJlYWtw b2ludCwKLSsJICAgICAgIGlmIGl0IGV4aXN0cy4gICovCi0rCSAgICBkZWxldGVfc3RlcF9yZXN1 bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwkgIH0KLSAKLSAJZWNzLT5ldmVu dF90aHJlYWQtPnN0b3Bfc3RlcCA9IDE7Ci0gCXByaW50X3N0b3BfcmVhc29uIChFTkRfU1RFUFBJ TkdfUkFOR0UsIDApOwotQEAgLTUwNzAsNiArNTE0OCw5NyBAQCBpbnNlcnRfbG9uZ2ptcF9yZXN1 bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKLSAg ICAgc2V0X21vbWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2pt cF9yZXN1bWUpOwotIH0KLSAKLSsvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3Bv aW50LiAgVFAgaXMgdGhlIHRocmVhZCB0aHJvd2luZwotKyAgIHRoZSBleGNlcHRpb24uICBUaGUg YmxvY2sgQiBpcyB0aGUgYmxvY2sgb2YgdGhlIHVud2luZGVyIGRlYnVnIGhvb2sKLSsgICBmdW5j dGlvbi4gIEZSQU1FIGlzIHRoZSBmcmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsIHRvIHRo aXMKLSsgICBmdW5jdGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBmdW5jdGlvbiBhcmd1 bWVudCBob2xkaW5nIHRoZQotKyAgIHRhcmdldCBQQyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8KKysj IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKLStzdGF0aWMgdm9pZAotK2luc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0 cnVjdCB0aHJlYWRfaW5mbyAqdHAsCi0rCQkJCSAgICBzdHJ1Y3QgYmxvY2sgKmIsCi0rCQkJCSAg ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0p Ci0rewotKyAgc3RydWN0IGdkYl9leGNlcHRpb24gZTsKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCi0rICAvKiBXZSB3YW50IHRvIGlnbm9yZSBlcnJvcnMgaGVyZS4gICovCi0rICBU UllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBzeW1i b2wgKnZzeW07Ci0rICAgICAgc3RydWN0IHZhbHVlICp2YWx1ZTsKLSsgICAgICBDT1JFX0FERFIg aGFuZGxlcjsKLSsgICAgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnA7CisraW1wb3J0IGdkYgorK2lt cG9ydCBnZGIuYmFja3RyYWNlCisraW1wb3J0IGl0ZXJ0b29scworK2Zyb20gZ2RiLkZyYW1lSXRl cmF0b3IgaW1wb3J0IEZyYW1lSXRlcmF0b3IKKytmcm9tIGdkYi5GcmFtZVdyYXBwZXIgaW1wb3J0 IEZyYW1lV3JhcHBlcgorK2ltcG9ydCBzeXMKKysKKytjbGFzcyBSZXZlcnNlQmFja3RyYWNlUGFy YW1ldGVyIChnZGIuUGFyYW1ldGVyKToKKysgICAgIiIiVGhlIG5ldy1iYWNrdHJhY2UgY29tbWFu ZCBjYW4gc2hvdyBiYWNrdHJhY2VzIGluICdyZXZlcnNlJyBvcmRlci4KKytUaGlzIG1lYW5zIHRo YXQgdGhlIGlubmVybW9zdCBmcmFtZSB3aWxsIGJlIHByaW50ZWQgbGFzdC4KKytOb3RlIHRoYXQg cmV2ZXJzZSBiYWNrdHJhY2VzIGFyZSBtb3JlIGV4cGVuc2l2ZSB0byBjb21wdXRlLiIiIgorKwor KyAgICBzZXRfZG9jID0gIkVuYWJsZSBvciBkaXNhYmxlIHJldmVyc2UgYmFja3RyYWNlcy4iCisr ICAgIHNob3dfZG9jID0gIlNob3cgd2hldGhlciBiYWNrdHJhY2VzIHdpbGwgYmUgcHJpbnRlZCBp biByZXZlcnNlIG9yZGVyLiIKKysKKysgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorKyAgICAgICAg Z2RiLlBhcmFtZXRlci5fX2luaXRfXyAoc2VsZiwgInJldmVyc2UtYmFja3RyYWNlIiwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5EX1NUQUNLLCBnZGIuUEFSQU1f Qk9PTEVBTikKKysgICAgICAgICMgRGVmYXVsdCB0byBjb21wYXRpYmlsaXR5IHdpdGggZ2RiLgor KyAgICAgICAgc2VsZi52YWx1ZSA9IEZhbHNlCisrCisrY2xhc3MgRmlsdGVyaW5nQmFja3RyYWNl IChnZGIuQ29tbWFuZCk6CisrICAgICIiIlByaW50IGJhY2t0cmFjZSBvZiBhbGwgc3RhY2sgZnJh bWVzLCBvciBpbm5lcm1vc3QgQ09VTlQgZnJhbWVzLgorK1dpdGggYSBuZWdhdGl2ZSBhcmd1bWVu dCwgcHJpbnQgb3V0ZXJtb3N0IC1DT1VOVCBmcmFtZXMuCisrVXNlIG9mIHRoZSAnZnVsbCcgcXVh bGlmaWVyIGFsc28gcHJpbnRzIHRoZSB2YWx1ZXMgb2YgdGhlIGxvY2FsIHZhcmlhYmxlcy4KKytV c2Ugb2YgdGhlICdyYXcnIHF1YWxpZmllciBhdm9pZHMgYW55IGZpbHRlcmluZyBieSBsb2FkYWJs ZSBtb2R1bGVzLgorKyIiIgorKworKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAg IyBGSVhNRTogdGhpcyBpcyBub3Qgd29ya2luZyBxdWl0ZSB3ZWxsIGVub3VnaCB0byByZXBsYWNl CisrICAgICAgICAjICJiYWNrdHJhY2UiIHlldC4KKysgICAgICAgIGdkYi5Db21tYW5kLl9faW5p dF9fIChzZWxmLCAibmV3LWJhY2t0cmFjZSIsIGdkYi5DT01NQU5EX1NUQUNLKQorKyAgICAgICAg c2VsZi5yZXZlcnNlID0gUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlcigpCisrCisrICAgIGRlZiBy ZXZlcnNlX2l0ZXIgKHNlbGYsIGl0ZXIpOgorKyAgICAgICAgcmVzdWx0ID0gW10KKysgICAgICAg IGZvciBpdGVtIGluIGl0ZXI6CisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCAoaXRlbSkKKysg ICAgICAgIHJlc3VsdC5yZXZlcnNlKCkKKysgICAgICAgIHJldHVybiByZXN1bHQKKysKKysgICAg ZGVmIGZpbmFsX24gKHNlbGYsIGl0ZXIsIHgpOgorKyAgICAgICAgcmVzdWx0ID0gW10KKysgICAg ICAgIGZvciBpdGVtIGluIGl0ZXI6CisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCAoaXRlbSkK KysgICAgICAgIHJldHVybiByZXN1bHRbeDpdCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFy ZywgZnJvbV90dHkpOgorKyAgICAgICAgaSA9IDAKKysgICAgICAgIGNvdW50ID0gMAorKyAgICAg ICAgZmlsdGVyID0gVHJ1ZQorKyAgICAgICAgZnVsbCA9IEZhbHNlCisrCisrICAgICAgICBmb3Ig d29yZCBpbiBhcmcuc3BsaXQgKCIgIik6CisrICAgICAgICAgICAgaWYgd29yZCA9PSAnJzoKKysg ICAgICAgICAgICAgICAgY29udGludWUKKysgICAgICAgICAgICBlbGlmIHdvcmQgPT0gJ3Jhdyc6 CisrICAgICAgICAgICAgICAgIGZpbHRlciA9IEZhbHNlCisrICAgICAgICAgICAgZWxpZiB3b3Jk ID09ICdmdWxsJzoKKysgICAgICAgICAgICAgICAgZnVsbCA9IFRydWUKKysgICAgICAgICAgICBl bHNlOgorKyAgICAgICAgICAgICAgICBjb3VudCA9IGludCAod29yZCkKKysKKysgICAgICAgICMg RklYTUU6IHByb3ZpZGUgb3B0aW9uIHRvIHN0YXJ0IGF0IHNlbGVjdGVkIGZyYW1lCisrICAgICAg ICAjIEhvd2V2ZXIsIHNob3VsZCBzdGlsbCBudW1iZXIgYXMgaWYgc3RhcnRpbmcgZnJvbSBuZXdl c3QKKysJbmV3ZXN0X2ZyYW1lID0gZ2RiLnNlbGVjdGVkX3RocmVhZCAoKS5uZXdlc3RfZnJhbWUg KCkKKysgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaW1hcCAoRnJhbWVXcmFwcGVyLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBGcmFtZUl0ZXJhdG9yIChuZXdlc3RfZnJhbWUpKQor KyAgICAgICAgaWYgZmlsdGVyOgorKyAgICAgICAgICAgIGl0ZXIgPSBnZGIuYmFja3RyYWNlLmNy ZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpCisrCisrICAgICAgICAjIE5vdyB3cmFwIGluIGFuIGl0 ZXJhdG9yIHRoYXQgbnVtYmVycyB0aGUgZnJhbWVzLgorKyAgICAgICAgaXRlciA9IGl0ZXJ0b29s cy5pemlwIChpdGVydG9vbHMuY291bnQgKDApLCBpdGVyKQorKworKyAgICAgICAgIyBSZXZlcnNl IGlmIHRoZSB1c2VyIHdhbnRlZCB0aGF0LgorKyAgICAgICAgaWYgc2VsZi5yZXZlcnNlLnZhbHVl OgorKyAgICAgICAgICAgIGl0ZXIgPSBzZWxmLnJldmVyc2VfaXRlciAoaXRlcikKKysKKysgICAg ICAgICMgRXh0cmFjdCBzdWItcmFuZ2UgdXNlciB3YW50cy4KKysgICAgICAgIGlmIGNvdW50IDwg MDoKKysgICAgICAgICAgICBpdGVyID0gc2VsZi5maW5hbF9uIChpdGVyLCBjb3VudCkKKysgICAg ICAgIGVsaWYgY291bnQgPiAwOgorKyAgICAgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaXNsaWNl IChpdGVyLCAwLCBjb3VudCkKKysKKysgICAgICAgIGZvciBwYWlyIGluIGl0ZXI6CisrICAgICAg ICAgICAgc3lzLnN0ZG91dC53cml0ZSAoIiMlLTJkIiAlIHBhaXJbMF0pCisrICAgICAgICAgICAg cGFpclsxXS5kZXNjcmliZSAoc3lzLnN0ZG91dCwgZnVsbCkKKysKKytGaWx0ZXJpbmdCYWNrdHJh Y2UoKQorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJv cnMucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5CituZXcg ZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNmZhNDhmZgorLS0tIC9kZXYvbnVsbAor KysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQorQEAgLTAs MCArMSwzNyBAQAorKyMgSWdub3JlIGVycm9ycyBpbiB1c2VyIGNvbW1hbmRzLgogKwotKyAgICAg IHZzeW0gPSBsb29rdXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pLCBiLCBWQVJf RE9NQUlOLCBOVUxMKTsKLSsgICAgICB2YWx1ZSA9IHJlYWRfdmFyX3ZhbHVlICh2c3ltLCBmcmFt ZSk7Ci0rICAgICAgLyogSWYgdGhlIHZhbHVlIHdhcyBvcHRpbWl6ZWQgb3V0LCByZXZlcnQgdG8g dGhlIG9sZCBiZWhhdmlvci4gICovCi0rICAgICAgaWYgKCEgdmFsdWVfb3B0aW1pemVkX291dCAo dmFsdWUpKQotKwl7Ci0rCSAgaGFuZGxlciA9IHZhbHVlX2FzX2FkZHJlc3MgKHZhbHVlKTsKKysj IENvcHlyaWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSsJ ICBpZiAoZGVidWdfaW5mcnVuKQotKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LAotKwkJCQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKLSsJCQkJKHVuc2ln bmVkIGxvbmcpIGhhbmRsZXIpOworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLSsJ ICBicCA9IHNldF9tb21lbnRhcnlfYnJlYWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZy YW1lKSwKLSsJCQkJCSAgICAgICBoYW5kbGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKLSsJICBi cC0+dGhyZWFkID0gdHAtPm51bTsKLSsJICBpbmZlcmlvcl90aHJlYWQgKCktPmV4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCA9IGJwOwotKwl9Ci0rICAgIH0KLSt9CisraW1wb3J0IGdkYgogKwot Ky8qIFRoaXMgaXMgY2FsbGVkIHdoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGludGVyY2VwdGVk LiAgQ2hlY2sgdG8KLSsgICBzZWUgd2hldGhlciB0aGUgZXhjZXB0aW9uJ3MgZGVzdGluYXRpb24g aXMgb2YgaW50ZXJlc3QsIGFuZCBpZiBzbywKLSsgICBzZXQgYW4gZXhjZXB0aW9uIHJlc3VtZSBi cmVha3BvaW50IHRoZXJlLiAgKi8KKytjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29t bWFuZCk6CisrICAgICIiIkV4ZWN1dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVy cm9ycy4KKytPbmx5IG9uZS1saW5lIGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCisrVGhpcyBpcyBw cmltYXJpbHkgdXNlZnVsIGluIHNjcmlwdHMuIiIiCiArCi0rc3RhdGljIHZvaWQKLStjaGVja19l eGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcywKLSsJ CQlzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsIHN0cnVjdCBzeW1ib2wgKmZ1bmMpCi0rewotKyAg c3RydWN0IGdkYl9leGNlcHRpb24gZTsKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAg ICAgIHN1cGVyIChJZ25vcmVFcnJvcnNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoImlnbm9yZS1l cnJvcnMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBnZGIuQ09NTUFORF9PQlNDVVJFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEZJWE1FLi4uCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9DT01NQU5EKQogKwot KyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3Qg YmxvY2sgKmI7Ci0rICAgICAgc3RydWN0IGRpY3RfaXRlcmF0b3IgaXRlcjsKLSsgICAgICBzdHJ1 Y3Qgc3ltYm9sICpzeW07Ci0rICAgICAgaW50IGFyZ25vID0gMDsKKysgICAgZGVmIGludm9rZSAo c2VsZiwgYXJnLCBmcm9tX3R0eSk6CisrICAgICAgICB0cnk6CisrICAgICAgICAgICAgZ2RiLmV4 ZWN1dGUgKGFyZywgZnJvbV90dHkpCisrICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAgcGFz cwogKwotKyAgICAgIC8qIFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVj aWZpYyBicmVha3BvaW50IG9uCi0rCSB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJl ZCBhczoKLSsJIAotKwkgdm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpo YW5kbGVyKTsKLSsJIAotKwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRv IHdoaWNoIGNvbnRyb2wgaXMKLSsJIGFib3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBp cyB0aGUgZGVzdGluYXRpb24gUEMuCi0rCSAKLSsJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQg YSB0ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCBIQU5ETEVSLgotKwkgVGhpcyBpcyBub3QgZXh0cmVt ZWx5IGVmZmljaWVudCBidXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIKLSsJIHdpdGggY29tcHV0 aW5nIHRoZSBEV0FSRiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKLSsJIGNh c2VzIHN1Y2ggYXMgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCi0r CSBoYW5kbGVyLiAgKi8KKytJZ25vcmVFcnJvcnNDb21tYW5kICgpCitkaWZmIC0tZ2l0IGEvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFob2xlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvcGFob2xlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjFh MGJmMAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcGFo b2xlLnB5CitAQCAtMCwwICsxLDc1IEBACisrIyBwYWhvbGUgY29tbWFuZCBmb3IgZ2RiCiArCi0r ICAgICAgYiA9IFNZTUJPTF9CTE9DS19WQUxVRSAoZnVuYyk7Ci0rICAgICAgQUxMX0JMT0NLX1NZ TUJPTFMgKGIsIGl0ZXIsIHN5bSkKLSsJewotKwkgIGlmICghU1lNQk9MX0lTX0FSR1VNRU5UIChz eW0pKQotKwkgICAgY29udGludWU7CisrIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rCSAgaWYgKGFyZ25vID09IDApCi0rCSAgICAr K2FyZ25vOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgaW5zZXJ0X2V4Y2VwdGlvbl9yZXN1 bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQsCi0rCQkJCQkJICBiLCBmcmFtZSwgc3lt KTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotK30KKysjIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisrIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZQorKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCiArCi0gc3RhdGljIHZvaWQKLSBzdG9wX3N0ZXBwaW5nIChzdHJ1 Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2xp bnV4LW5hdC5jIGIvZ2RiL2xpbnV4LW5hdC5jCi1pbmRleCA5M2FkZmNkLi4zNDQxMmE2IDEwMDY0 NAotLS0tIGEvZ2RiL2xpbnV4LW5hdC5jCi0rKysgYi9nZGIvbGludXgtbmF0LmMKLUBAIC0yNTg3 LDYgKzI1ODcsMzkgQEAgbGludXhfbmF0X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFy Z2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKLSAgIHJldHVybiBscC0+c3RvcHBlZF9k YXRhX2FkZHJlc3NfcDsKLSB9Ci0gCi0rLyogSW4gYHNldCBmb2xsb3ctZm9yay1tb2RlIGNoaWxk JyB3aXRoIG11bHRpdGhyZWFkZWQgcGFyZW50IHdlIG5lZWQgdG8gZGV0YWNoCi0rICAgd2F0Y2hw b2ludHMgZnJvbSBhbGwgdGhlIExXUHMuICBJbiBzdWNoIGNhc2UgSU5GRVJJT1JfUFRJRCB3aWxs IGJlIHRoZQotKyAgIG5vbi10aHJlYWRlZCBuZXcgY2hpbGQgd2hpbGUgTFdQX0xJU1Qgd2lsbCBz dGlsbCBjb250YWluIGFsbCB0aGUgdGhyZWFkcyBvZgotKyAgIHRoZSBwYXJlbnQgYmVpbmcgZGV0 YWNoZWQuICAqLworK2ltcG9ydCBnZGIKKysKKytjbGFzcyBQYWhvbGUgKGdkYi5Db21tYW5kKToK KysgICAgIiIiU2hvdyB0aGUgaG9sZXMgaW4gYSBzdHJ1Y3R1cmUuCisrVGhpcyBjb21tYW5kIHRh a2VzIGEgc2luZ2xlIGFyZ3VtZW50LCBhIHR5cGUgbmFtZS4KKytJdCBwcmludHMgdGhlIHR5cGUg YW5kIGRpc3BsYXlzIGNvbW1lbnRzIHNob3dpbmcgd2hlcmUgaG9sZXMgYXJlLiIiIgorKworKyAg ICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAgc3VwZXIgKFBhaG9sZSwgc2VsZikuX19p bml0X18gKCJwYWhvbGUiLCBnZGIuQ09NTUFORF9OT05FLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9TWU1CT0wpCisrCisrICAgIGRlZiBwYWhv bGUgKHNlbGYsIHR5cGUsIGxldmVsLCBuYW1lKToKKysgICAgICAgIGlmIG5hbWUgaXMgTm9uZToK KysgICAgICAgICAgICBuYW1lID0gJycKKysgICAgICAgIHRhZyA9IHR5cGUudGFnCisrICAgICAg ICBpZiB0YWcgaXMgTm9uZToKKysgICAgICAgICAgICB0YWcgPSAnJworKyAgICAgICAgcHJpbnQg JyVzc3RydWN0ICVzIHsnICUgKCcgJyAqICgyICogbGV2ZWwpLCB0YWcpCisrICAgICAgICBiaXRw b3MgPSAwCisrICAgICAgICBmb3IgZmllbGQgaW4gdHlwZS5maWVsZHMgKCk6CisrICAgICAgICAg ICAgIyBTa2lwIHN0YXRpYyBmaWVsZHMuCisrICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIgKGZp ZWxkLCAoJ2JpdHBvcycpKToKKysgICAgICAgICAgICAgICAgY29udGludWUKKysKKysgICAgICAg ICAgICBmdHlwZSA9IGZpZWxkLnR5cGUuc3RyaXBfdHlwZWRlZnMoKQorKworKyAgICAgICAgICAg IGlmIGJpdHBvcyAhPSBmaWVsZC5iaXRwb3M6CisrICAgICAgICAgICAgICAgIGhvbGUgPSBmaWVs ZC5iaXRwb3MgLSBiaXRwb3MKKysgICAgICAgICAgICAgICAgcHJpbnQgJyAgLyogWFhYICVkIGJp dCBob2xlLCB0cnkgdG8gcGFjayAqLycgJSBob2xlCisrICAgICAgICAgICAgICAgIGJpdHBvcyA9 IGZpZWxkLmJpdHBvcworKyAgICAgICAgICAgIGlmIGZpZWxkLmJpdHNpemUgPiAwOgorKyAgICAg ICAgICAgICAgICBmaWVsZHNpemUgPSBmaWVsZC5iaXRzaXplCisrICAgICAgICAgICAgZWxzZToK KysgICAgICAgICAgICAgICAgIyBUQVJHRVRfQ0hBUl9CSVQgaGVyZS4uLgorKyAgICAgICAgICAg ICAgICBmaWVsZHNpemUgPSA4ICogZnR5cGUuc2l6ZW9mCisrCisrICAgICAgICAgICAgIyBUQVJH RVRfQ0hBUl9CSVQKKysgICAgICAgICAgICBwcmludCAnIC8qICUzZCAlM2QgKi8nICUgKGludCAo Yml0cG9zIC8gOCksIGludCAoZmllbGRzaXplIC8gOCkpLAorKyAgICAgICAgICAgIGJpdHBvcyA9 IGJpdHBvcyArIGZpZWxkc2l6ZQorKworKyAgICAgICAgICAgIGlmIGZ0eXBlLmNvZGUgPT0gZ2Ri LlRZUEVfQ09ERV9TVFJVQ1Q6CisrICAgICAgICAgICAgICAgIHNlbGYucGFob2xlIChmdHlwZSwg bGV2ZWwgKyAxLCBmaWVsZC5uYW1lKQorKyAgICAgICAgICAgIGVsc2U6CisrICAgICAgICAgICAg ICAgIHByaW50ICcgJyAqICgyICsgMiAqIGxldmVsKSwKKysgICAgICAgICAgICAgICAgcHJpbnQg JyVzICVzJyAlIChzdHIgKGZ0eXBlKSwgZmllbGQubmFtZSkKKysKKysgICAgICAgIHByaW50ICcg JyAqICgxNCArIDIgKiBsZXZlbCksCisrICAgICAgICBwcmludCAnfSAlcycgJSBuYW1lCisrCisr ICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgdHlwZSA9IGdk Yi5sb29rdXBfdHlwZSAoYXJnKQorKyAgICAgICAgdHlwZSA9IHR5cGUuc3RyaXBfdHlwZWRlZnMg KCkKKysgICAgICAgIGlmIHR5cGUuY29kZSAhPSBnZGIuVFlQRV9DT0RFX1NUUlVDVDoKKysgICAg ICAgICAgICByYWlzZSBUeXBlRXJyb3IsICclcyBpcyBub3QgYSBzdHJ1Y3QgdHlwZScgJSBhcmcK KysgICAgICAgIHByaW50ICcgJyAqIDE0LAorKyAgICAgICAgc2VsZi5wYWhvbGUgKHR5cGUsIDAs ICcnKQorKworK1BhaG9sZSgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1h bmQvcmVxdWlyZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZmJjMWU4CistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CitAQCAtMCwwICsx LDU3IEBACisrIyBEZW1hbmQtbG9hZGluZyBjb21tYW5kcy4KICsKLStzdGF0aWMgaW50Ci0rbGlu dXhfbmF0X2RldGFjaF93YXRjaHBvaW50cyAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8g KmxwOwotKyAgaW50IGZvdW5kID0gMCwgcmV0dmFsID0gMDsKLSsgIHB0aWRfdCBmaWx0ZXIgPSBw aWRfdG9fcHRpZCAocHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rICBzdHJ1Y3QgY2xl YW51cCAqb2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOworKyMgQ29weXJpZ2h0IChD KSAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgZm9yIChs cCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfbWF0Y2ggKGxw LT5wdGlkLCBmaWx0ZXIpKQotKyAgICAgIHsKLSsJaW5mZXJpb3JfcHRpZCA9IGxwLT5wdGlkOwot KwlyZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rCWZvdW5k ID0gMTsKLSsgICAgICB9CisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2Us IG9yCisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAorKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM QVIgUFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt b3JlIGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFt LiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotKyAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7CisraW1wb3J0IGdkYgorK2ltcG9ydCBvcworKworK2NsYXNz IFJlcXVpcmVDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAgICIiIlByZWZpeCBjb21tYW5kIGZv ciByZXF1aXJpbmcgZmVhdHVyZXMuIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Cisr ICAgICAgICBzdXBlciAoUmVxdWlyZUNvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgicmVxdWlyZSIs CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09N TUFORF9TVVBQT1JULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZ2RiLkNPTVBMRVRFX05PTkUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBUcnVlKQorKworK2NsYXNzIFJlcXVpcmVTdWJjb21tYW5kIChnZGIu Q29tbWFuZCk6CisrICAgICIiIkRlbWFuZC1sb2FkIGEgY29tbWFuZCBieSBuYW1lLiIiIgorKwor KyAgICBkZWYgX19pbml0X18gKHNlbGYsIG5hbWUpOgorKyAgICAgICAgc2VsZi5fX2RvY19fID0g IkRlbWFuZC1sb2FkIGEgJXMgYnkgbmFtZS4iICUgbmFtZQorKyAgICAgICAgc3VwZXIgKFJlcXVp cmVTdWJjb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInJlcXVpcmUgJXMiICUgbmFtZSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01NQU5E X1NVUFBPUlQpCisrICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCisrCisrICAgIGRlZiBpbnZva2Ug KHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgZm9yIGNtZCBpbiBhcmcuc3BsaXQoKToK KysgICAgICAgICAgICBleGVjICgnaW1wb3J0IGdkYi4nICsgc2VsZi5uYW1lICsgJy4nICsgY21k LCBnbG9iYWxzICgpKQorKworKyAgICBkZWYgY29tcGxldGUgKHNlbGYsIHRleHQsIHdvcmQpOgor KyAgICAgICAgZGlyID0gZ2RiLnB5dGhvbmRpciArICcvZ2RiLycgKyBzZWxmLm5hbWUKKysgICAg ICAgIHJlc3VsdCA9IFtdCisrICAgICAgICBmb3IgZmlsZSBpbiBvcy5saXN0ZGlyKGRpcik6Cisr ICAgICAgICAgICAgaWYgbm90IGZpbGUuc3RhcnRzd2l0aCAod29yZCkgb3Igbm90IGZpbGUuZW5k c3dpdGggKCcucHknKToKKysgICAgICAgICAgICAgICAgY29udGludWUKKysgICAgICAgICAgICBm ZWF0dXJlID0gZmlsZVswOi0zXQorKyAgICAgICAgICAgIGlmIGZlYXR1cmUgPT0gJ3JlcXVpcmUn IG9yIGZlYXR1cmUgPT0gJ19faW5pdF9fJzoKKysgICAgICAgICAgICAgICAgY29udGludWUKKysg ICAgICAgICAgICByZXN1bHQuYXBwZW5kIChmZWF0dXJlKQorKyAgICAgICAgcmV0dXJuIHJlc3Vs dAorKworK1JlcXVpcmVDb21tYW5kKCkKKytSZXF1aXJlU3ViY29tbWFuZCgiY29tbWFuZCIpCisr UmVxdWlyZVN1YmNvbW1hbmQoImZ1bmN0aW9uIikKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9zYXZlX2JyZWFrcG9pbnRzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Nv bW1hbmQvc2F2ZV9icmVha3BvaW50cy5weQorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLjYxNDMxODcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL3NhdmVfYnJlYWtwb2ludHMucHkKK0BAIC0wLDAgKzEsNjUgQEAKKysjIFNhdmUgYnJl YWtwb2ludHMuCiArCi0rICBpZiAoIWZvdW5kKQotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAo IWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOworKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwotKyAgICAgIHJldHZhbCB8PSBsaW51eF9v cHMtPnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKLSsgICAgfQorKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Cisr aW1wb3J0IGdkYgorKworK2NsYXNzIFNhdmVQcmVmaXhDb21tYW5kIChnZGIuQ29tbWFuZCk6Cisr ICAiUHJlZml4IGNvbW1hbmQgZm9yIHNhdmluZyB0aGluZ3MuIgorKworKyAgZGVmIF9faW5pdF9f IChzZWxmKToKKysgICAgc3VwZXIgKFNhdmVQcmVmaXhDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAo InNhdmUiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZGIuQ09NTUFORF9TVVBQT1JULAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBnZGIuQ09NUExFVEVfTk9ORSwgVHJ1ZSkKKysKKytjbGFzcyBTYXZlQnJlYWtw b2ludHNDb21tYW5kIChnZGIuQ29tbWFuZCk6CisrICAgICIiIlNhdmUgdGhlIGN1cnJlbnQgYnJl YWtwb2ludHMgdG8gYSBmaWxlLgorK1RoaXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVu dCwgYSBmaWxlIG5hbWUuCisrVGhlIGJyZWFrcG9pbnRzIGNhbiBiZSByZXN0b3JlZCB1c2luZyB0 aGUgJ3NvdXJjZScgY29tbWFuZC4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysg ICAgICAgIHN1cGVyIChTYXZlQnJlYWtwb2ludHNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNh dmUgYnJlYWtwb2ludHMiLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JULAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfRklMRU5B TUUpCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAg c2VsZi5kb250X3JlcGVhdCAoKQorKyAgICAgICAgYnBzID0gZ2RiLmJyZWFrcG9pbnRzICgpCisr ICAgICAgICBpZiBicHMgaXMgTm9uZToKKysgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3Is ICdObyBicmVha3BvaW50cyB0byBzYXZlJworKyAgICAgICAgd2l0aCBvcGVuIChhcmcuc3RyaXAg KCksICd3JykgYXMgZjoKKysgICAgICAgICAgICBmb3IgYnAgaW4gYnBzOgorKyAgICAgICAgICAg ICAgICBwcmludCA+PiBmLCAiYnJlYWsiLCBicC5sb2NhdGlvbiwKKysgICAgICAgICAgICAgICAg aWYgYnAudGhyZWFkIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4g ZiwgIiB0aHJlYWQiLCBicC50aHJlYWQsCisrICAgICAgICAgICAgICAgIGlmIGJwLmNvbmRpdGlv biBpcyBub3QgTm9uZToKKysgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIgaWYiLCBi cC5jb25kaXRpb24sCisrICAgICAgICAgICAgICAgIHByaW50ID4+IGYKKysgICAgICAgICAgICAg ICAgaWYgbm90IGJwLmVuYWJsZWQ6CisrICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAi ZGlzYWJsZSAkYnBudW0iCisrICAgICAgICAgICAgICAgICMgTm90ZTogd2UgZG9uJ3Qgc2F2ZSB0 aGUgaWdub3JlIGNvdW50OyB0aGVyZSBkb2Vzbid0CisrICAgICAgICAgICAgICAgICMgc2VlbSB0 byBiZSBtdWNoIHBvaW50LgorKyAgICAgICAgICAgICAgICBjb21tYW5kcyA9IGJwLmNvbW1hbmRz CisrICAgICAgICAgICAgICAgIGlmIGNvbW1hbmRzIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAg ICAgICAgICAgcHJpbnQgPj4gZiwgImNvbW1hbmRzIgorKyAgICAgICAgICAgICAgICAgICAgIyBO b3RlIHRoYXQgQ09NTUFORFMgaGFzIGEgdHJhaWxpbmcgbmV3bGluZS4KKysgICAgICAgICAgICAg ICAgICAgIHByaW50ID4+IGYsIGNvbW1hbmRzLAorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQg Pj4gZiwgImVuZCIKKysgICAgICAgICAgICAgICAgcHJpbnQgPj4gZgorKworK1NhdmVQcmVmaXhD b21tYW5kICgpCisrU2F2ZUJyZWFrcG9pbnRzQ29tbWFuZCAoKQorZGlmZiAtLWdpdCBhL2dkYi9w eXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFu ZC91cHRvLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmFmNTRlZAor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weQor QEAgLTAsMCArMSwxMjkgQEAKKysjIHVwdG8gY29tbWFuZC4KKysKKysjIENvcHlyaWdodCAoQykg MjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBp cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Cisr IyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFz IHB1Ymxpc2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uCiArCi0rICByZXR1cm4gcmV0dmFsOwotK30KKytpbXBvcnQgZ2RiCisraW1w b3J0IHJlCisrZnJvbSBnZGIuRnJhbWVJdGVyYXRvciBpbXBvcnQgRnJhbWVJdGVyYXRvcgorK2Zy b20gZ2RiLkZyYW1lV3JhcHBlciBpbXBvcnQgRnJhbWVXcmFwcGVyCisrCisrY2xhc3MgVXB0b1By ZWZpeCAoZ2RiLkNvbW1hbmQpOgorKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgorKyAgICAgICAg c3VwZXIgKFVwdG9QcmVmaXgsIHNlbGYpLl9faW5pdF9fICgidXB0byIsIGdkYi5DT01NQU5EX1NU QUNLLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgg PSBUcnVlKQorKworK2NsYXNzIFVwdG9JbXBsZW1lbnRhdGlvbiAoZ2RiLkNvbW1hbmQpOgorKyAg ICBkZWYgX19pbml0X18gKHNlbGYsIHN1YmNvbW1hbmQpOgorKyAgICAgICAgc3VwZXIgKFVwdG9J bXBsZW1lbnRhdGlvbiwgc2VsZikuX19pbml0X18gKCJ1cHRvICIgKyBzdWJjb21tYW5kLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01N QU5EX1NUQUNLKQorKworKyAgICBkZWYgc2VhcmNoIChzZWxmKToKKysgICAgICAgIHNhdmVkID0g Z2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICBpdGVyID0gRnJhbWVJdGVyYXRvciAoc2F2 ZWQpCisrICAgICAgICBmb3VuZCA9IEZhbHNlCisrICAgICAgICB0cnk6CisrICAgICAgICAgICAg Zm9yIGZyYW1lIGluIGl0ZXI6CisrICAgICAgICAgICAgICAgIGZyYW1lLnNlbGVjdCAoKQorKyAg ICAgICAgICAgICAgICB0cnk6CisrICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmZpbHRlciAo ZnJhbWUpOgorKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIgPSBGcmFtZVdyYXBwZXIg KGZyYW1lKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXIuZGVzY3JpYmUgKHN5cy5z dGRvdXQsIEZhbHNlKQorKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgorKyAgICAgICAg ICAgICAgICBleGNlcHQ6CisrICAgICAgICAgICAgICAgICAgICBwYXNzCisrICAgICAgICBleGNl cHQ6CisrICAgICAgICAgICAgcGFzcworKyAgICAgICAgc2F2ZWQuc2VsZWN0ICgpCisrICAgICAg ICByYWlzZSBSdW50aW1lRXJyb3IsICdDb3VsZCBub3QgZmluZCBhIG1hdGNoaW5nIGZyYW1lJwor KworKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKKysgICAgICAgIHNlbGYu cnggPSByZS5jb21waWxlIChhcmcpCisrICAgICAgICBzZWxmLnNlYXJjaCAoKQorKworK2NsYXNz IFVwdG9TeW1ib2xDb21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgorKyAgICAiIiJTZWxlY3Qg YW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQgb24gc3ltYm9sLgorK1Ro ZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1 cCB0aGUKKytzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIHN5bWJvbCBt YXRjaGVzIHRoZSByZWd1bGFyCisrZXhwcmVzc2lvbi4iIiIKKysKKysgICAgZGVmIF9faW5pdF9f IChzZWxmKToKKysgICAgICAgIHN1cGVyIChVcHRvU3ltYm9sQ29tbWFuZCwgc2VsZikuX19pbml0 X18gKCJzeW1ib2wiKQorKworKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6CisrICAgICAg ICBuYW1lID0gZnJhbWUubmFtZSAoKQorKyAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKysg ICAgICAgICAgICBpZiBzZWxmLnJ4LnNlYXJjaCAobmFtZSkgaXMgbm90IE5vbmU6CisrICAgICAg ICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICByZXR1cm4gRmFsc2UKKysKKytjbGFzcyBV cHRvU291cmNlQ29tbWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKKysgICAgIiIiU2VsZWN0IGFu ZCBwcmludCBzb21lIGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIHNvdXJjZSBmaWxlLgor K1RoZSBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3Zl cyB1cCB0aGUKKytzdGFjaywgc3RvcHBpbmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIHNvdXJj ZSBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUKKytyZWd1bGFyIGV4cHJlc3Npb24uIiIiCisrCisrICAg IGRlZiBfX2luaXRfXyAoc2VsZik6CisrICAgICAgICBzdXBlciAoVXB0b1NvdXJjZUNvbW1hbmQs IHNlbGYpLl9faW5pdF9fICgic291cmNlIikKKysKKysgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJh bWUpOgorKyAgICAgICAgbmFtZSA9IGZyYW1lLmZpbmRfc2FsICgpLnN5bXRhYi5maWxlbmFtZQor KyAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICBpZiBzZWxmLnJ4LnNl YXJjaCAobmFtZSkgaXMgbm90IE5vbmU6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisr ICAgICAgICByZXR1cm4gRmFsc2UKKysKKytjbGFzcyBVcHRvT2JqZWN0Q29tbWFuZCAoVXB0b0lt cGxlbWVudGF0aW9uKToKKysgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21lIGNhbGxpbmcgc3Rh Y2sgZnJhbWUsIGJhc2VkIG9uIG9iamVjdCBmaWxlLgorK1RoZSBhcmd1bWVudCBpcyBhIHJlZ3Vs YXIgZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0aGUKKytzdGFjaywgc3RvcHBp bmcgYXQgdGhlIGZpcnN0IGZyYW1lIHdob3NlIG9iamVjdCBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUK KytyZWd1bGFyIGV4cHJlc3Npb24uIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Cisr ICAgICAgICBzdXBlciAoVXB0b09iamVjdENvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgib2JqZWN0 IikKKysKKysgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgorKyAgICAgICAgbmFtZSA9IGZy YW1lLmZpbmRfc2FsICgpLnN5bXRhYi5vYmpmaWxlLmZpbGVuYW1lCisrICAgICAgICBpZiBuYW1l IGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIGlmIHNlbGYucnguc2VhcmNoIChuYW1lKSBpcyBu b3QgTm9uZToKKysgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKysgICAgICAgIHJldHVybiBG YWxzZQorKworK2NsYXNzIFVwdG9XaGVyZUNvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6Cisr ICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBv biBleHByZXNzaW9uLgorK1RoZSBhcmd1bWVudCBpcyBhbiBleHByZXNzaW9uLiAgVGhpcyBjb21t YW5kIG1vdmVzIHVwIHRoZSBzdGFjaywKKytwYXJzaW5nIGFuZCBldmFsdWF0aW5nIHRoZSBleHBy ZXNzaW9uIGluIGVhY2ggZnJhbWUuICBUaGlzIHN0b3BzIHdoZW4KKyt0aGUgZXhwcmVzc2lvbiBl dmFsdWF0ZXMgdG8gYSBub24temVybyAodHJ1ZSkgdmFsdWUuIiIiCisrCisrICAgIGRlZiBfX2lu aXRfXyAoc2VsZik6CisrICAgICAgICBzdXBlciAoVXB0b1doZXJlQ29tbWFuZCwgc2VsZikuX19p bml0X18gKCJ3aGVyZSIpCisrCisrICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKKysgICAg ICAgIHRyeToKKysgICAgICAgICAgICBpZiBnZGIucGFyc2VfYW5kX2V2YWwgKHNlbGYuZXhwcmVz c2lvbik6CisrICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisrICAgICAgICBleGNlcHQ6Cisr ICAgICAgICAgICAgcGFzcworKyAgICAgICAgcmV0dXJuIEZhbHNlCisrCisrICAgIGRlZiBpbnZv a2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgorKyAgICAgICAgc2VsZi5leHByZXNzaW9uID0gYXJn CisrICAgICAgICBzZWxmLnNlYXJjaCAoKQorKworK1VwdG9QcmVmaXggKCkKKytVcHRvU3ltYm9s Q29tbWFuZCAoKQorK1VwdG9Tb3VyY2VDb21tYW5kICgpCisrVXB0b09iamVjdENvbW1hbmQgKCkK KytVcHRvV2hlcmVDb21tYW5kICgpCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1 bmN0aW9uL19faW5pdF9fLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9f LnB5CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGIxMzc4OQorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CitA QCAtMCwwICsxIEBACiArCi0gLyogV2FpdCB1bnRpbCBMUCBpcyBzdG9wcGVkLiAgKi8KLSAKLSBz dGF0aWMgaW50Ci1AQCAtNTYwNiw2ICs1NjM5LDggQEAgbGludXhfbmF0X2FkZF90YXJnZXQgKHN0 cnVjdCB0YXJnZXRfb3BzICp0KQotICAgdC0+dG9fdGhyZWFkX2FkZHJlc3Nfc3BhY2UgPSBsaW51 eF9uYXRfdGhyZWFkX2FkZHJlc3Nfc3BhY2U7Ci0gICB0LT50b19zdG9wcGVkX2J5X3dhdGNocG9p bnQgPSBsaW51eF9uYXRfc3RvcHBlZF9ieV93YXRjaHBvaW50OwotICAgdC0+dG9fc3RvcHBlZF9k YXRhX2FkZHJlc3MgPSBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2FkZHJlc3M7Ci0rICBpZiAobGlu dXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMpCi0rICAgIHQtPnRvX2RldGFjaF93YXRjaHBv aW50cyA9IGxpbnV4X25hdF9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gCi0gICB0LT50b19jYW5fYXN5 bmNfcCA9IGxpbnV4X25hdF9jYW5fYXN5bmNfcDsKLSAgIHQtPnRvX2lzX2FzeW5jX3AgPSBsaW51 eF9uYXRfaXNfYXN5bmNfcDsKLWRpZmYgLS1naXQgYS9nZGIvbGludXgtdGRlcC5jIGIvZ2RiL2xp bnV4LXRkZXAuYwotaW5kZXggMDdmZDY3Yy4uMjUyNDI1MCAxMDA2NDQKLS0tLSBhL2dkYi9saW51 eC10ZGVwLmMKLSsrKyBiL2dkYi9saW51eC10ZGVwLmMKLUBAIC0yMyw2ICsyMyw4IEBACi0gI2lu Y2x1ZGUgImF1eHYuaCIKLSAjaW5jbHVkZSAidGFyZ2V0LmgiCi0gI2luY2x1ZGUgImVsZi9jb21t b24uaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAiaW5mY2FsbC5oIgotIAotIC8q IFRoaXMgZnVuY3Rpb24gaXMgc3VpdGFibGUgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndAot ICAgIGV4dGVuZC9vdmVycmlkZSB0aGUgc3RhbmRhcmQgc2lnaW5mbyBzdHJ1Y3R1cmUuICAqLwot ZGlmZiAtLWdpdCBhL2dkYi9taS9taS1jbWQtdmFyLmMgYi9nZGIvbWkvbWktY21kLXZhci5jCi1p bmRleCAzMTBhZGU5Li5kODcxMGExIDEwMDY0NAotLS0tIGEvZ2RiL21pL21pLWNtZC12YXIuYwot KysrIGIvZ2RiL21pL21pLWNtZC12YXIuYwotQEAgLTcwMiw3ICs3MDIsNiBAQCBtaV9jbWRfdmFy X3VwZGF0ZSAoY2hhciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQotICAgICB9Ci0g ICBlbHNlCi0gICAgIHsKLS0gICAgICAvKiBHZXQgdmFyb2JqIGhhbmRsZSwgaWYgYSB2YWxpZCB2 YXIgb2JqIG5hbWUgd2FzIHNwZWNpZmllZCAqLwotICAgICAgIHN0cnVjdCB2YXJvYmogKnZhciA9 IHZhcm9ial9nZXRfaGFuZGxlIChuYW1lKTsKLSAKLSAgICAgICB2YXJvYmpfdXBkYXRlX29uZSAo dmFyLCBwcmludF92YWx1ZXMsIDEgLyogZXhwbGljaXQgKi8pOwotZGlmZiAtLWdpdCBhL2dkYi9t aW5zeW1zLmMgYi9nZGIvbWluc3ltcy5jCi1pbmRleCBjYjQ1NDVjLi45MmQ0MDI3IDEwMDY0NAot LS0tIGEvZ2RiL21pbnN5bXMuYwotKysrIGIvZ2RiL21pbnN5bXMuYwotQEAgLTMzNyw4ICszMzcs OSBAQCBsb29rdXBfbWluaW1hbF9zeW1ib2xfdGV4dCAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0 IG9iamZpbGUgKm9iamYpCi0gCSAgICAgICBtc3ltYm9sID0gbXN5bWJvbC0+aGFzaF9uZXh0KQot IAkgICAgewotIAkgICAgICBpZiAoc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9s KSwgbmFtZSkgPT0gMCAmJgotLQkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4 dCB8fAotLQkJICAgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0KSkKLSsJ CSAgKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKLSsJCSAgIHx8IE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCQkgICB8fCBNU1lNQk9MX1RZ UEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQotIAkJewotIAkJICBzd2l0Y2ggKE1TWU1C T0xfVFlQRSAobXN5bWJvbCkpCi0gCQkgICAgewotQEAgLTcwMCw2ICs3MDEsMTYgQEAgbG9va3Vw X21pbmltYWxfc3ltYm9sX2J5X3BjIChDT1JFX0FERFIgcGMpCi0gICByZXR1cm4gbG9va3VwX21p bmltYWxfc3ltYm9sX2J5X3BjX3NlY3Rpb24gKHBjLCBOVUxMKTsKLSB9Ci0gCi0rLyogUmV0dXJu IG5vbi16ZXJvIGlmZiBQQyBpcyBpbiBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgZ251LWlmdW5jIHNl bGVjdGlvbi4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2Nh bGxlcl9pcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yYjljNWM3CistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CitAQCAtMCww ICsxLDU4IEBACisrIyBDYWxsZXItaXMgZnVuY3Rpb25zLgogKwotK2ludAotK2luX2dudV9pZnVu Y19zdHViIChDT1JFX0FERFIgcGMpCi0rewotKyAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3lt Ym9sID0gbG9va3VwX21pbmltYWxfc3ltYm9sX2J5X3BjIChwYyk7CisrIyBDb3B5cmlnaHQgKEMp IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rICByZXR1cm4gbXN5bWJv bCAmJiBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVuYzsKLSt9Cisr IyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg YW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyMgYnV0IFdJVEhPVVQg QU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0 aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIwor KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotIC8qIEZpbmQgdGhlIG1pbmltYWwgc3lt Ym9sIG5hbWVkIE5BTUUsIGFuZCByZXR1cm4gYm90aCB0aGUgbWluc3ltCi0gICAgc3RydWN0IGFu ZCBpdHMgb2JqZmlsZS4gIFRoaXMgb25seSBjaGVja3MgdGhlIGxpbmthZ2UgbmFtZS4gIFNldHMK LSAgICAqT0JKRklMRV9QIGFuZCByZXR1cm5zIHRoZSBtaW5pbWFsIHN5bWJvbCwgaWYgaXQgaXMg Zm91bmQuICBJZiBpdAotQEAgLTc2OSw2ICs3ODAsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5 bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCi0gICBzd2l0Y2ggKG1z X3R5cGUpCi0gICAgIHsKLSAgICAgY2FzZSBtc3RfdGV4dDoKLSsgICAgY2FzZSBtc3RfdGV4dF9n bnVfaWZ1bmM6Ci0gICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoKLSAgICAgY2FzZSBtc3Rfc29saWJf dHJhbXBvbGluZToKLSAgICAgICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7Ci1A QCAtMTIzNSw3ICsxMjQ3LDggQEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLCBDT1JFX0FERFIgcGMpCi0gICAgIHsKLSAgICAgICBBTExfTVNZ TUJPTFMgKG9iamZpbGUsIG1zeW1ib2wpCi0gICAgICAgewotLQlpZiAoTVNZTUJPTF9UWVBFICht c3ltYm9sKSA9PSBtc3RfdGV4dAotKwlpZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0 X3RleHQKLSsJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lm dW5jKQotIAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKLSAJ CSAgICAgICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKLSAJICByZXR1cm4g U1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOwotZGlmZiAtLWdpdCBhL2dkYi9wLWxhbmcu YyBiL2dkYi9wLWxhbmcuYwotaW5kZXggMDg3MzhhYy4uNjRkMmU5ZiAxMDA2NDQKLS0tLSBhL2dk Yi9wLWxhbmcuYwotKysrIGIvZ2RiL3AtbGFuZy5jCi1AQCAtMjIyLDcgKzIyMiwxMSBAQCBwYXNj YWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBlICp0eXBlLAot ICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsKLSAgIGludCBpbl9xdW90ZXMgPSAw OwotICAgaW50IG5lZWRfY29tbWEgPSAwOwotLSAgaW50IHdpZHRoID0gVFlQRV9MRU5HVEggKHR5 cGUpOwotKyAgaW50IHdpZHRoOworK2ltcG9ydCBnZGIKKytpbXBvcnQgcmUKKysKKytjbGFzcyBD YWxsZXJJcyAoZ2RiLkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxp bmcgZnVuY3Rpb24ncyBuYW1lIGlzIGVxdWFsIHRvIGEgc3RyaW5nLgorK1RoaXMgZnVuY3Rpb24g dGFrZXMgb25lIG9yIHR3byBhcmd1bWVudHMuCisrVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBu YW1lIG9mIGEgZnVuY3Rpb247IGlmIHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKKytuYW1lIGlzIGVx dWFsIHRvIHRoaXMgYXJndW1lbnQsIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgorK1RoZSBv cHRpb25hbCBzZWNvbmQgYXJndW1lbnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFj ayBmcmFtZXMKKyt0byB0cmF2ZXJzZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhl IGRlZmF1bHQgaXMgMS4iIiIKKysKKysgICAgZGVmIF9faW5pdF9fIChzZWxmKToKKysgICAgICAg IHN1cGVyIChDYWxsZXJJcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQorKworKyAgICBk ZWYgaW52b2tlIChzZWxmLCBuYW1lLCBuZnJhbWVzID0gMSk6CisrICAgICAgICBmcmFtZSA9IGdk Yi5zZWxlY3RlZF9mcmFtZSAoKQorKyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6CisrICAgICAg ICAgICAgZnJhbWUgPSBmcmFtZS5vbGRlciAoKQorKyAgICAgICAgICAgIG5mcmFtZXMgPSBuZnJh bWVzIC0gMQorKyAgICAgICAgcmV0dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJpbmcgKCkK KysKKytjbGFzcyBDYWxsZXJNYXRjaGVzIChnZGIuRnVuY3Rpb24pOgorKyAgICAiIiJSZXR1cm4g VHJ1ZSBpZiB0aGUgY2FsbGluZyBmdW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KKytU aGlzIGZ1bmN0aW9uIHRha2VzIG9uZSBvciB0d28gYXJndW1lbnRzLgorK1RoZSBmaXJzdCBhcmd1 bWVudCBpcyBhIHJlZ3VsYXIgZXhwcmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncwor K25hbWUgaXMgbWF0Y2hlZCBieSB0aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMg VHJ1ZS4KKytUaGUgb3B0aW9uYWwgc2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24g aG93IG1hbnkgc3RhY2sgZnJhbWVzCisrdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBm dW5jdGlvbi4gIFRoZSBkZWZhdWx0IGlzIDEuIiIiCisrCisrICAgIGRlZiBfX2luaXRfXyAoc2Vs Zik6CisrICAgICAgICBzdXBlciAoQ2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18gKCJjYWxs ZXJfbWF0Y2hlcyIpCisrCisrICAgIGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAx KToKKysgICAgICAgIGZyYW1lID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgpCisrICAgICAgICB3aGls ZSBuZnJhbWVzID4gMDoKKysgICAgICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCisrICAg ICAgICAgICAgbmZyYW1lcyA9IG5mcmFtZXMgLSAxCisrICAgICAgICByZXR1cm4gcmUubWF0Y2gg KG5hbWUuc3RyaW5nICgpLCBmcmFtZS5uYW1lICgpKSBpcyBub3QgTm9uZQorKworK0NhbGxlcklz KCkKKytDYWxsZXJNYXRjaGVzKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVu Y3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUu cHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kZWJiM2JiCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKK0BA IC0wLDAgKzEsNDcgQEAKKysjIEluLXNjb3BlIGZ1bmN0aW9uLgogKwotKyAgLyogUHJlc2VydmUg VFlQRSdzIG9yaWdpbmFsIHR5cGUsIGp1c3Qgc2V0IGl0cyBMRU5HVEguICAqLwotKyAgY2hlY2tf dHlwZWRlZiAodHlwZSk7Ci0rICB3aWR0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgIC8q IElmIHRoZSBzdHJpbmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVu dHMnLCBhbmQKLSAgICAgIHRoZSBsYXN0IGJ5dGUgb2YgaXQgaXMgYSBudWxsLCB3ZSBkb24ndCBw cmludCB0aGF0LCBpbiB0cmFkaXRpb25hbCBDCi1kaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQu YyBiL2dkYi9wLXZhbHByaW50LmMKLWluZGV4IDRkMzliZWQuLmQwZGRlYmMgMTAwNjQ0Ci0tLS0g YS9nZGIvcC12YWxwcmludC5jCi0rKysgYi9nZGIvcC12YWxwcmludC5jCi1AQCAtMzgsNiArMzgs NyBAQAotICNpbmNsdWRlICJwLWxhbmcuaCIKLSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2luY2x1 ZGUgImNwLXN1cHBvcnQuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIAotQEAg LTY4LDggKzY5LDI3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7Ci0gICBMT05H RVNUIHZhbDsKLSAgIENPUkVfQUREUiBhZGRyOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87 Ci0rICBzdHJ1Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7Ci0rICBDT1JFX0FERFIgc2F2ZWRf YWRkcmVzcyA9IGFkZHJlc3M7Ci0rICAKLSsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxf Y2xlYW51cCwgMCk7Ci0rICB0eXBlID0gb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUsICZh ZGRyZXNzKTsKLSsgIGlmICh0eXBlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcHV0c19maWx0 ZXJlZCAob2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHNhdmVkX3R5cGUpLCBzdHJlYW0p OwotKyAgICAgIGdkYl9mbHVzaCAoc3RyZWFtKTsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190 byk7Ci0rICAgICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgIGlmIChhZGRyZXNzICE9IHNhdmVkX2Fk ZHJlc3MpCi0rICAgIHsKLSsgICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5cGUp OwotIAotLSAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7Ci0rICAgICAgdmFsYWRkciA9IHhtYWxsb2Mg KGxlbmd0aCk7Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICopIHZhbGFk ZHIpOwotKyAgICAgIHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFsYWRkciwg bGVuZ3RoKTsKLSsgICAgfQotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci0g ICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotQEAgLTEyNSw4ICsxNDUsOSBAQCBwYXNjYWxfdmFs X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQl7 Ci0gCQkgIGkgPSAwOwotIAkJfQotLQkgICAgICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5 cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLS0JCQkJCXJl Y3Vyc2UsIG9yaWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKLSsJICAgICAgdmFsX3ByaW50X2Fy cmF5X2VsZW1lbnRzIChzYXZlZF90eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LAotKwkJ CQkJc2F2ZWRfYWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLAotKwkJCQkJb3JpZ2luYWxfdmFsdWUs IG9wdGlvbnMsIGkpOwotIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7Ci0g CSAgICB9Ci0gCSAgYnJlYWs7Ci1AQCAtMTY0LDYgKzE4NSw3IEBAIHBhc2NhbF92YWxfcHJpbnQg KHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAvKiBUcnkg dG8gcHJpbnQgd2hhdCBmdW5jdGlvbiBpdCBwb2ludHMgdG8uICAqLwotIAkgIHByaW50X2FkZHJl c3NfZGVtYW5nbGUgKGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwgZGVtYW5nbGUpOwotIAkgIC8qIFJl dHVybiB2YWx1ZSBpcyBpcnJlbGV2YW50IGV4Y2VwdCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8K LSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gCSAgcmV0dXJuICgwKTsKLSAJfQotIAotQEAg LTI1Miw2ICsyNzQsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29u c3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gICAgICAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFyYWN0 ZXJzIHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJICdcMCcgaWYgd2UgcmVh Y2hlZCB0aGUgZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJlIGluY2x1ZGluZwotIAkg dGhlIHRlcm1pbmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgICAgICBkb19jbGVhbnVw cyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuIGk7Ci0gCi0gICAgICAgYnJlYWs7Ci1AQCAtNTU0 LDYgKzU3Nyw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBn ZGJfYnl0ZSAqdmFsYWRkciwKLSAgICAgICBlcnJvciAoXygiSW52YWxpZCBwYXNjYWwgdHlwZSBj b2RlICVkIGluIHN5bWJvbCB0YWJsZS4iKSwgVFlQRV9DT0RFICh0eXBlKSk7Ci0gICAgIH0KLSAg IGdkYl9mbHVzaCAoc3RyZWFtKTsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgIHJldHVy biAoMCk7Ci0gfQotIAwKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1p bmRleCBjODg1YzZhLi5jYmY5YzY1IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBiL2dk Yi9wYXJzZS5jCi1AQCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0 IG1pbmltYWxfc3ltYm9sICptc3ltYm9sKQotICAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9m dW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRyLCAmY3VycmVudF90YXJnZXQpOwotICAgaWYgKHBj ICE9IGFkZHIpCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmlmdW5jX21z eW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKKysjIENvcHlyaWdodCAoQykg MjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLSAgICAgICAvKiBJbiB0aGlz IGNhc2UsIGFzc3VtZSB3ZSBoYXZlIGEgY29kZSBzeW1ib2wgaW5zdGVhZCBvZgotIAkgYSBkYXRh IHN5bWJvbC4gICovCi0tICAgICAgdHlwZSA9IG1zdF90ZXh0OworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KICsKLSsgICAgICBpZiAoaWZ1bmNfbXN5bSAhPSBOVUxMICYmIE1TWU1CT0xf VFlQRSAoaWZ1bmNfbXN5bSkgPT0gbXN0X3RleHRfZ251X2lmdW5jCi0rCSAgJiYgU1lNQk9MX1ZB TFVFX0FERFJFU1MgKGlmdW5jX21zeW0pID09IHBjKQotKwl7Ci0rCSAgLyogQSBmdW5jdGlvbiBk ZXNjcmlwdG9yIGhhcyBiZWVuIHJlc29sdmVkIGJ1dCBQQyBpcyBzdGlsbCBpbiB0aGUKLSsJICAg ICBnbnUtaWZ1bmMgcmVzb2x2ZXIgYm9keSAoc3VjaCBhcyBiZWNhdXNlIGluZmVyaW9yIGRvZXMg bm90IHJ1biB0bwotKwkgICAgIGJlIGFibGUgdG8gY2FsbCBpdCkuICAqLwotKwkgIHR5cGUgPSBt c3RfdGV4dF9nbnVfaWZ1bmM7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXR5cGUgPSBtc3RfdGV4dDsK LSAgICAgICBzZWN0aW9uID0gTlVMTDsKLSAgICAgICBhZGRyID0gcGM7Ci0gICAgIH0KLUBAIC01 MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wg Km1zeW1ib2wpCi0gICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZp bGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBt c3RfdGV4dF9nbnVfaWZ1bmM6Ci0rICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5 cGUgKG9iamZpbGUpCi0rCQkJCQkgICAgICAgLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJv bCk7Ci0rICAgICAgYnJlYWs7CisraW1wb3J0IGdkYgogKwotICAgICBjYXNlIG1zdF9kYXRhOgot ICAgICBjYXNlIG1zdF9maWxlX2RhdGE6Ci0gICAgIGNhc2UgbXN0X2JzczoKLUBAIC01MjgsNiAr NTQ1LDEwIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1i b2wpCi0gICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5u b2RlYnVnX2RhdGFfc3ltYm9sKTsKLSAgICAgICBicmVhazsKLSAKLSsgICAgY2FzZSBtc3Rfc2xv dF9nb3RfcGx0OgotKyAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpm aWxlKS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbCk7Ci0rICAgICAgYnJlYWs7CisrY2xhc3MgSW5T Y29wZSAoZ2RiLkZ1bmN0aW9uKToKKysgICAgIiIiUmV0dXJuIFRydWUgaWYgYWxsIHRoZSBnaXZl biB2YXJpYWJsZXMgb3IgbWFjcm9zIGFyZSBpbiBzY29wZS4KKytUYWtlcyBvbmUgYXJndW1lbnQg Zm9yIGVhY2ggdmFyaWFibGUgbmFtZSB0byBiZSBjaGVja2VkLiIiIgogKwotICAgICBkZWZhdWx0 OgotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpmaWxlKS0+bm9k ZWJ1Z191bmtub3duX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci1AQCAtMTQxMiw2ICsxNDMzLDcg QEAgcGFyc2VyX2ZwcmludGYgKEZJTEUgKngsIGNvbnN0IGNoYXIgKnksIC4uLikKLSAKLSBpbnQK LSBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBv cywKLSsJCQkgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEp LAotIAkJCSBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJ CQkJCSAgICAgIHZvaWQgKmRhdGEpLAotIAkJCSB2b2lkICpkYXRhKQotQEAgLTE0NTMsNyArMTQ3 NSw3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBp bnQgcG9zLAotIAkgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBlbHRzW3BvcyArIDIgKyBhcmddLnR5 cGU7Ci0gCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVfT0JKRklMRSAodHlwZSk7 Ci0gCi0tCSAgICBpZiAob2JqZmlsZSAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEp KQotKwkgICAgaWYgKG9iamZpbGUgJiYgb2JqZmlsZV9mdW5jICYmICgqb2JqZmlsZV9mdW5jKSAo b2JqZmlsZSwgZGF0YSkpCi0gCSAgICAgIHJldHVybiAxOwotIAkgIH0KLSAgICAgICB9Ci1AQCAt MTQ3MSw3ICsxNDkzLDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCBwb3MsCi0gCi0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgdGhlIHZhcmlh YmxlIGl0c2VsZiBpcyBwbGFjZWQuCi0gCSAgIFNZTUJPTF9PQkpfU0VDVElPTiAoc3ltYm9sKSBt YXkgYmUgTlVMTC4gICovCi0tCWlmICgoKm9iamZpbGVfZnVuYykgKFNZTUJPTF9TWU1UQUIgKHN5 bWJvbCktPm9iamZpbGUsIGRhdGEpKQotKwlpZiAob2JqZmlsZV9mdW5jCi0rCSAgICAmJiAoKm9i amZpbGVfZnVuYykgKFNZTUJPTF9TWU1UQUIgKHN5bWJvbCktPm9iamZpbGUsIGRhdGEpKQotIAkg IHJldHVybiAxOwotIAotIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIGlzIHBsYWNlZCB0aGUgY29k ZSB0b3VjaGluZyB0aGUgdmFyaWFibGUuICAqLwotQEAgLTE0ODQsMjQgKzE1MDcsMjcgQEAgb3Bl cmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCi0g Ci0gICAvKiBJbnZva2UgY2FsbGJhY2tzIGZvciBUWVBFIGFuZCBPQkpGSUxFIGlmIHRoZXkgd2Vy ZSBzZXQgYXMgbm9uLU5VTEwuICAqLwotIAotLSAgaWYgKHR5cGUgJiYgVFlQRV9PQkpGSUxFICh0 eXBlKQotKyAgaWYgKHR5cGUgJiYgdHlwZV9mdW5jICYmICgqdHlwZV9mdW5jKSAodHlwZSwgZGF0 YSkpCi0rICAgIHJldHVybiAxOwotKyAgaWYgKHR5cGUgJiYgVFlQRV9PQkpGSUxFICh0eXBlKSAm JiBvYmpmaWxlX2Z1bmMKLSAgICAgICAmJiAoKm9iamZpbGVfZnVuYykgKFRZUEVfT0JKRklMRSAo dHlwZSksIGRhdGEpKQotICAgICByZXR1cm4gMTsKLS0gIGlmIChvYmpmaWxlICYmICgqb2JqZmls ZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCi0rICBpZiAob2JqZmlsZSAmJiBvYmpmaWxlX2Z1bmMg JiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAgICAgcmV0dXJuIDE7Ci0gCi0g ICByZXR1cm4gMDsKLSB9Ci0gCi0tLyogQ2FsbCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFu ZCBPQkpGSUxFIGZvdW5kIGJlaW5nIHJlZmVyZW5jZWQgYnkgRVhQLgotLSAgIFRoZSBmdW5jdGlv bnMgYXJlIG5ldmVyIGNhbGxlZCB3aXRoIE5VTEwgT0JKRklMRS4gIEZ1bmN0aW9ucyBnZXQgcGFz c2VkIGFuCi0tICAgYXJiaXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuICBJZiBh bnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zCi0tICAgbm9uLXplcm8gdmFsdWUgdGhlbiAoYW55 IG90aGVyKSBub24temVybyB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0bwotLSAgIHRo ZSBjYWxsZXIuICBPdGhlcndpc2UgemVybyBpcyByZXR1cm5lZCBhZnRlciBpdGVyYXRpbmcgdGhy b3VnaCB3aG9sZSBFWFAuCi0tICAgKi8KLSsvKiBDYWxsIFRZUEVfRlVOQyBhbmQgT0JKRklMRV9G VU5DIGZvciBhbnkgVFlQRSBhbmQgT0JKRklMRSBmb3VuZCBiZWluZwotKyAgIHJlZmVyZW5jZWQg YnkgRVhQLiAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVMTCBUWVBFIG9y IE5VTEwKLSsgICBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4gYXJiaXRyYXJ5IGNh bGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuCi0rICAgSWYgYW55IG9mIHRoZSBmdW5jdGlvbnMg cmV0dXJucyBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvCi0rICAgdmFs dWUgaXMgaW1tZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJv IGlzIHJldHVybmVkCi0rICAgYWZ0ZXIgaXRlcmF0aW5nIHRocm91Z2ggd2hvbGUgRVhQLiAgKi8K LSAKLSBzdGF0aWMgaW50Ci0gZXhwX2l0ZXJhdGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0r CSAgICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpLAot IAkgICAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lk ICpkYXRhKSwKLSAJICAgICB2b2lkICpkYXRhKQotIHsKLUBAIC0xNTE2LDcgKzE1NDIsOSBAQCBl eHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysgICAgZGVmIF9faW5pdF9fIChz ZWxmKToKKysJc3VwZXIgKEluU2NvcGUsIHNlbGYpLl9faW5pdF9fICgiaW5fc2NvcGUiKQorKwor KyAgICBkZWYgaW52b2tlIChzZWxmLCAqdmFycyk6CisrICAgICAgICBpZiBsZW4gKHZhcnMpID09 IDA6CisrCSAgICByYWlzZSBUeXBlRXJyb3IsICJpbl9zY29wZSB0YWtlcyBhdCBsZWFzdCBvbmUg YXJndW1lbnQiCisrCisrICAgICAgICAjIGdkYi5WYWx1ZSBpc24ndCBoYXNoYWJsZSBzbyBpdCBj YW4ndCBiZSBwdXQgaW4gYSBtYXAuCisrCSMgQ29udmVydCB0byBzdHJpbmcgZmlyc3QuCisrCXdh bnRlZCA9IHNldCAobWFwIChsYW1iZGEgeDogeC5zdHJpbmcgKCksIHZhcnMpKQorKwlmb3VuZCA9 IHNldCAoKQorKwlibG9jayA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKS5ibG9jayAoKQorKwl3aGls ZSBibG9jazoKKysJICAgIGZvciBzeW0gaW4gYmxvY2s6CisrCQlpZiAoc3ltLmlzX2FyZ3VtZW50 IG9yIHN5bS5pc19jb25zdGFudAorKwkJICAgICAgb3Igc3ltLmlzX2Z1bmN0aW9uIG9yIHN5bS5p c192YXJpYWJsZSk6CisrCQkgICAgaWYgc3ltLm5hbWUgaW4gd2FudGVkOgorKwkJCWZvdW5kLmFk ZCAoc3ltLm5hbWUpCisrCisrCSAgICBibG9jayA9IGJsb2NrLnN1cGVyYmxvY2sKKysKKysJcmV0 dXJuIHdhbnRlZCA9PSBmb3VuZAorKworK0luU2NvcGUgKCkKK2RpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5LWNtZC5jIGIvZ2RiL3B5dGhvbi9weS1jbWQuYworaW5kZXggMmNmZjRiYS4uOTI1NTMz NiAxMDA2NDQKKy0tLSBhL2dkYi9weXRob24vcHktY21kLmMKKysrKyBiL2dkYi9weXRob24vcHkt Y21kLmMKK0BAIC00OSw4ICs0OSw3IEBAIHN0YXRpYyBzdHJ1Y3QgY21kcHlfY29tcGxldGVyIGNv bXBsZXRlcnNbXSA9CiAgCi0gICAgICAgcG9zID0gZW5kcG9zIC0gb3BsZW47Ci0gICAgICAgaWYg KGV4cC0+bGFuZ3VhZ2VfZGVmbi0+bGFfZXhwX2Rlc2MtPm9wZXJhdG9yX2NoZWNrIChleHAsIHBv cywKLS0JCQkJCQkJICAgb2JqZmlsZV9mdW5jLCBkYXRhKSkKLSsJCQkJCQkJICAgdHlwZV9mdW5j LAotKwkJCQkJCQkgICBvYmpmaWxlX2Z1bmMsCi0rCQkJCQkJCSAgIGRhdGEpKQotIAlyZXR1cm4g MTsKKyAjZGVmaW5lIE5fQ09NUExFVEVSUyAoc2l6ZW9mIChjb21wbGV0ZXJzKSAvIHNpemVvZiAo Y29tcGxldGVyc1swXSkpCiAgCi0gICAgICAgZW5kcG9zID0gcG9zOwotQEAgLTE1NDcsNyArMTU3 NSwyNiBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSkKKy0vKiBBIGdkYiBjb21tYW5kLiAgRm9yIHRoZSB0aW1lIGJlaW5n IG9ubHkgb3JkaW5hcnkgY29tbWFuZHMgKG5vdAorLSAgIHNldC9zaG93IGNvbW1hbmRzKSBhcmUg YWxsb3dlZC4gICovCisrLyogQSBnZGIgY29tbWFuZC4gICovCisgc3RydWN0IGNtZHB5X29iamVj dAogIHsKLSAgIGdkYl9hc3NlcnQgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFj a2xpbmsgPT0gTlVMTCk7Ci0gCi0tICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgZXhwX3VzZXNf b2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKLSsgIHJldHVybiBleHBfaXRlcmF0ZSAoZXhwLCBOVUxM LCBleHBfdXNlc19vYmpmaWxlX2l0ZXIsIG9iamZpbGUpOwotK30KKyAgIFB5T2JqZWN0X0hFQUQK K2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LWhvb2tzLmMgYi9nZGIvcHl0aG9uL3B5LWhvb2tz LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hMzE0MGJjCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvcHl0aG9uL3B5LWhvb2tzLmMKK0BAIC0wLDAgKzEsNTAgQEAKKysv KiBOb3RpZmljYXRpb25zIGZyb20gZ2RiIHRvIFB5dGhvbgogKwotKy8qIEhlbHBlciBmb3IgZXhw X3R5cGVzX21hcmtfdXNlZC4gICovCisrICAgQ29weXJpZ2h0IChDKSAyMDA4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgogKwotK3N0YXRpYyBpbnQKLStleHBfdHlwZXNfbWFya191c2Vk X2l0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICp1bnVzZWQpCisrICAgVGhpcyBmaWxlIGlz IHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1z IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt cGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj b3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAg Ki8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgor KyNpbmNsdWRlICJjaGFyc2V0LmgiCisrI2luY2x1ZGUgInB5dGhvbi5oIgorKyNpbmNsdWRlICJw eXRob24taW50ZXJuYWwuaCIKKysjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKKysKKytQeU9iamVjdCAq CisrZ2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24gKGNvbnN0IGNoYXIgKm5hbWUpCiArewotKyAgdHlw ZV9tYXJrX3VzZWQgKHR5cGUpOworKyAgUHlPYmplY3QgKmhvb2tzOworKyAgUHlPYmplY3QgKnJl c3VsdDsKICsKLSsgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLwotKyAgcmV0dXJuIDA7 CisrICBpZiAoISBQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChnZGJfbW9kdWxlLCAiaG9va3MiKSkK KysgICAgcmV0dXJuIE5VTEw7CisrICBob29rcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGdk Yl9tb2R1bGUsICJob29rcyIpOworKyAgaWYgKCEgaG9va3MpCisrICAgIHJldHVybiBOVUxMOwor KyAgLyogVGhlIGNhc3QgaXMgYmVjYXVzZSB0aGUgUHl0aG9uIGZ1bmN0aW9uIGRvZXNuJ3QgZGVj bGFyZSBjb25zdCBhcmd1bWVudC4KKysgICAgIFRoaXMgaXMgYSBwcm9ibGVtIGluIFB5dGhvbiB2 ZXJzaW9uIDIuNCwgYnV0IG5vdCBpbiAyLjUuICAqLworKyAgaWYgKCEgUHlPYmplY3RfSGFzQXR0 clN0cmluZyAoaG9va3MsIChjaGFyICopIG5hbWUpKQorKyAgICB7CisrICAgICAgUHlfREVDUkVG IChob29rcyk7CisrICAgICAgcmV0dXJuIE5VTEw7CisrICAgIH0KKysgIC8qIFRoZSBjYXN0IGlz IGJlY2F1c2UgdGhlIFB5dGhvbiBmdW5jdGlvbiBkb2Vzbid0IGRlY2xhcmUgY29uc3QgYXJndW1l bnQuCisrICAgICBUaGlzIGlzIGEgcHJvYmxlbSBpbiBQeXRob24gdmVyc2lvbiAyLjQsIGJ1dCBu b3QgaW4gMi41LiAgKi8KKysgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGhvb2tz LCAoY2hhciAqKSBuYW1lKTsKKysgIFB5X0RFQ1JFRiAoaG9va3MpOworKyAgcmV0dXJuIHJlc3Vs dDsKICt9CitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1tZW1idWYuYyBiL2dkYi9weXRob24v cHktbWVtYnVmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43YmMyOTRj CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL3B5LW1lbWJ1Zi5jCitAQCAtMCwwICsx LDI2OCBAQAorKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gdGhlIGluZmVyaW9yIG1lbW9yeS4KICsK LSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgdHlwZSBjb250YWluZWQgaW4gRVhQLiAg Ki8KKysgICBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCiArCi0rdm9pZAotK2V4cF90eXBlc19tYXJrX3VzZWQgKHN0cnVjdCBleHByZXNzaW9u ICpleHApCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorKworKyAgIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93 d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNs dWRlICJleGNlcHRpb25zLmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKysjaW5jbHVkZSAicHl0 aG9uLWludGVybmFsLmgiCisrCisrdHlwZWRlZiBzdHJ1Y3QgeworKyAgUHlPYmplY3RfSEVBRAor KyAgdm9pZCAqYnVmZmVyOworKworKyAgLyogVGhlc2UgYXJlIGtlcHQganVzdCBmb3IgbWJweV9z dHIuICAqLworKyAgQ09SRV9BRERSIGFkZHI7CisrICBDT1JFX0FERFIgbGVuZ3RoOworK30gbWVt YnVmX29iamVjdDsKKysKKytzdGF0aWMgUHlUeXBlT2JqZWN0IG1lbWJ1Zl9vYmplY3RfdHlwZTsK KysKKysvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZGIucmVhZF9tZW1vcnkgKGFkZHJlc3MsIGxlbmd0 aCkuCisrICAgUmV0dXJucyBhIFB5dGhvbiBidWZmZXIgb2JqZWN0IHdpdGggTEVOR1RIIGJ5dGVz IG9mIHRoZSBpbmZlcmlvcidzIG1lbW9yeQorKyAgIGF0IEFERFJFU1MuIEJvdGggYXJndW1lbnRz IGFyZSBpbnRlZ2Vycy4gICovCisrCisrUHlPYmplY3QgKgorK2dkYnB5X3JlYWRfbWVtb3J5IChQ eU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiArewotKyAgZXhwX2l0ZXJhdGUgKGV4cCwg ZXhwX3R5cGVzX21hcmtfdXNlZF9pdGVyLCBOVUxMLCBOVUxMKTsKLSB9Ci0gCi0gdm9pZAotZGlm ZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKLWluZGV4IGJi NzlhZTEuLmZiYmQ2MDAgMTAwNjQ0Ci0tLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAotKysrIGIvZ2Ri L3BhcnNlci1kZWZzLmgKLUBAIC0xOTQsNiArMTk0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3Jf bGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsIGludCAqLAot IAkJCQkgICAgICBpbnQgKik7Ci0gCi0gZXh0ZXJuIGludCBvcGVyYXRvcl9jaGVja19zdGFuZGFy ZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkJICAgIGludCAoKnR5cGVf ZnVuYykgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJCQkJCSAgICAgIHZvaWQgKmRhdGEpLAotIAkJ CQkgICAgaW50ICgqb2JqZmlsZV9mdW5jKQotIAkJCQkgICAgICAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUsIHZvaWQgKmRhdGEpLAotIAkJCQkgICAgdm9pZCAqZGF0YSk7Ci1AQCAtMjg1LDYgKzI4 Nyw3IEBAIHN0cnVjdCBleHBfZGVzY3JpcHRvcgotICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1t ZWRpYXRlbHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCi0gICAgICAg IHNob3VsZCBiZSByZXR1cm5lZC4gICovCi0gICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSsJCQkgICBpbnQgKCp0eXBlX2Z1bmMpIChz dHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCi0gCQkJICAgaW50ICgqb2JqZmlsZV9mdW5j KSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0gCQkJCQkJdm9pZCAqZGF0YSksCi0gCQkJICAg dm9pZCAqZGF0YSk7Ci1AQCAtMzIzLDQgKzMyNiw4IEBAIGV4dGVybiB2b2lkIHBhcnNlcl9mcHJp bnRmIChGSUxFICosIGNvbnN0IGNoYXIgKiwgLi4uKSBBVFRSSUJVVEVfUFJJTlRGICgyLCAzKTsK LSAKLSBleHRlcm4gaW50IGV4cF91c2VzX29iamZpbGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAs IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSAKLStleHRlcm4gaW50IGV4cF91c2VzX29iamZp bGUgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKKysg IGludCBlcnJvciA9IDA7CisrICBDT1JFX0FERFIgYWRkciwgbGVuZ3RoOworKyAgdm9pZCAqYnVm ZmVyID0gTlVMTDsKKysgIG1lbWJ1Zl9vYmplY3QgKm1lbWJ1Zl9vYmo7CisrICBQeU9iamVjdCAq YWRkcl9vYmosICpsZW5ndGhfb2JqOworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzID0gTlVM TDsKKysgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKKysKKysgIGlmICgh IFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJPTyIsICZhZGRyX29iaiwgJmxlbmd0aF9vYmopKQor KyAgICByZXR1cm4gTlVMTDsKICsKLStleHRlcm4gdm9pZCBleHBfdHlwZXNfbWFya191c2VkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKTsKKysgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFT S19BTEwpCisrICAgIHsKKysgICAgICBpZiAoIWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29i aiwgJmFkZHIpCisrCSAgfHwgIWdldF9hZGRyX2Zyb21fcHl0aG9uIChsZW5ndGhfb2JqLCAmbGVu Z3RoKSkKKysJeworKwkgIGVycm9yID0gMTsKKysJICBicmVhazsKKysJfQogKwotICNlbmRpZiAv KiBQQVJTRVJfREVGU19IICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3BwYy1saW51eC1uYXQuYyBiL2dk Yi9wcGMtbGludXgtbmF0LmMKLWluZGV4IGU4ZDk2ZjYuLjhiZjA5N2MgMTAwNjQ0Ci0tLS0gYS9n ZGIvcHBjLWxpbnV4LW5hdC5jCi0rKysgYi9nZGIvcHBjLWxpbnV4LW5hdC5jCi1AQCAtMjAxMCw2 ICsyMDEwLDI0IEBAIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIs IGludCBsZW4sIGludCBydywKLSAgIHJldHVybiByZXQ7Ci0gfQotIAotKy8qIFNlZSB0YXJnZXRf ZGV0YWNoX3dhdGNocG9pbnRzLiAgRG8gbm90IHVzZSB3cmFwcGVyCi0rICAgcHBjX2xpbnV4X3Jl bW92ZV93YXRjaHBvaW50IGFzIGl0IHdvdWxkIG1vZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsg ICAoc2F2ZWRfZGFicl92YWx1ZSkuICAqLworKyAgICAgIGJ1ZmZlciA9IHhtYWxsb2MgKGxlbmd0 aCk7CisrICAgICAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBidWZmZXIpOwogKwot K3N0YXRpYyBpbnQKLStwcGNfbGludXhfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lkKQorKyAgICAg IHJlYWRfbWVtb3J5IChhZGRyLCBidWZmZXIsIGxlbmd0aCk7CisrICAgIH0KKysgIEdEQl9QWV9I QU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOworKworKyAgaWYgKGVycm9yKQorKyAgICByZXR1cm4g TlVMTDsKKysKKysgIGRpc2NhcmRfY2xlYW51cHMgKGNsZWFudXBzKTsKKysKKysgIG1lbWJ1Zl9v YmogPSBQeU9iamVjdF9OZXcgKG1lbWJ1Zl9vYmplY3QsICZtZW1idWZfb2JqZWN0X3R5cGUpOwor KyAgaWYgKG1lbWJ1Zl9vYmogPT0gTlVMTCkKKysgICAgeworKyAgICAgIHhmcmVlIChidWZmZXIp OworKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfTWVtb3J5RXJyb3IsCisrCQkgICAgICAg IkNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnkgYnVmZmVyIG9iamVjdC4iKTsKKysgICAgICByZXR1 cm4gTlVMTDsKKysgICAgfQorKworKyAgbWVtYnVmX29iai0+YnVmZmVyID0gYnVmZmVyOworKyAg bWVtYnVmX29iai0+YWRkciA9IGFkZHI7CisrICBtZW1idWZfb2JqLT5sZW5ndGggPSBsZW5ndGg7 CisrCisrICByZXR1cm4gUHlCdWZmZXJfRnJvbVJlYWRXcml0ZU9iamVjdCAoKFB5T2JqZWN0ICop IG1lbWJ1Zl9vYmosIDAsCisrCQkJCSAgICAgICBQeV9FTkRfT0ZfQlVGRkVSKTsKKyt9CisrCisr LyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLndyaXRlX21lbW9yeSAoYWRkcmVzcywgYnVmZmVyIFss IGxlbmd0aF0pLgorKyAgIFdyaXRlcyB0aGUgY29udGVudHMgb2YgQlVGRkVSIChhIFB5dGhvbiBv YmplY3Qgc3VwcG9ydGluZyB0aGUgcmVhZCBidWZmZXIKKysgICBwcm90b2NvbCkgYXQgQUREUkVT UyBpbiB0aGUgaW5mZXJpb3IncyBtZW1vcnkuICBXcml0ZSBMRU5HVEggYnl0ZXMgZnJvbQorKyAg IEJVRkZFUiwgb3IgaXRzIGVudGlyZSBjb250ZW50cyBpZiB0aGUgYXJndW1lbnQgaXMgbm90IHBy b3ZpZGVkLiAgVGhlCisrICAgZnVuY3Rpb24gcmV0dXJucyBub3RoaW5nLiAgKi8KKysKKytQeU9i amVjdCAqCisrZ2RicHlfd3JpdGVfbWVtb3J5IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFy Z3MpCiArewotKyAgcGlkX3QgdGlkOworKyAgaW50IGJ1Zl9sZW4sIGVycm9yID0gMDsKKysgIGNv bnN0IGNoYXIgKmJ1ZmZlcjsKKysgIENPUkVfQUREUiBhZGRyLCBsZW5ndGg7CisrICBQeU9iamVj dCAqYWRkcl9vYmosICpsZW5ndGhfb2JqID0gTlVMTDsKKysgIHZvbGF0aWxlIHN0cnVjdCBnZGJf ZXhjZXB0aW9uIGV4Y2VwdDsKKysKKysgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJP cyN8TyIsICZhZGRyX29iaiwgJmJ1ZmZlciwgJmJ1Zl9sZW4sCisrCQkJICAmbGVuZ3RoX29iaikp CisrICAgIHJldHVybiBOVUxMOwogKwotKyAgdGlkID0gVElER0VUIChpbmZlcmlvcl9wdGlkKTsK LSsgIGlmICh0aWQgPT0gMCkKLSsgICAgdGlkID0gUElER0VUIChpbmZlcmlvcl9wdGlkKTsKKysg IFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCisrICAgIHsKKysgICAgICBpZiAo IWdldF9hZGRyX2Zyb21fcHl0aG9uIChhZGRyX29iaiwgJmFkZHIpKQorKwl7CisrCSAgZXJyb3Ig PSAxOworKwkgIGJyZWFrOworKwl9CisrICAgICAgCisrICAgICAgaWYgKCFsZW5ndGhfb2JqKQor KwlsZW5ndGggPSBidWZfbGVuOworKyAgICAgIGVsc2UgaWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhv biAobGVuZ3RoX29iaiwgJmxlbmd0aCkpCisrCXsKKysJICBlcnJvciA9IDE7CisrCSAgYnJlYWs7 CisrCX0KICsKLSsgIGlmIChwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgTlVMTCwg TlVMTCkgPCAwKQotKyAgICByZXR1cm4gLTE7Ci0rICByZXR1cm4gMDsKKysgICAgICB3cml0ZV9t ZW1vcnkgKGFkZHIsIGJ1ZmZlciwgbGVuZ3RoKTsKKysgICAgfQorKyAgR0RCX1BZX0hBTkRMRV9F WENFUFRJT04gKGV4Y2VwdCk7CisrCisrICBpZiAoZXJyb3IpCisrICAgIHJldHVybiBOVUxMOwor KworKyAgUHlfUkVUVVJOX05PTkU7CiArfQogKwotIHN0YXRpYyB2b2lkCi0gcHBjX2xpbnV4X25l d190aHJlYWQgKHB0aWRfdCBwdGlkKQotIHsKLUBAIC0yMzQ5LDYgKzIzNjcsNyBAQCBfaW5pdGlh bGl6ZV9wcGNfbGludXhfbmF0ICh2b2lkKQotICAgdC0+dG9fcmVnaW9uX29rX2Zvcl9od193YXRj aHBvaW50ID0gcHBjX2xpbnV4X3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludDsKLSAgIHQtPnRv X2luc2VydF93YXRjaHBvaW50ID0gcHBjX2xpbnV4X2luc2VydF93YXRjaHBvaW50OwotICAgdC0+ dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQ7Ci0rICB0 LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgPSBwcGNfbGludXhfZGV0YWNoX3dhdGNocG9pbnRzOwot ICAgdC0+dG9fc3RvcHBlZF9ieV93YXRjaHBvaW50ID0gcHBjX2xpbnV4X3N0b3BwZWRfYnlfd2F0 Y2hwb2ludDsKLSAgIHQtPnRvX3N0b3BwZWRfZGF0YV9hZGRyZXNzID0gcHBjX2xpbnV4X3N0b3Bw ZWRfZGF0YV9hZGRyZXNzOwotICAgdC0+dG9fd2F0Y2hwb2ludF9hZGRyX3dpdGhpbl9yYW5nZSA9 IHBwY19saW51eF93YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlOwotZGlmZiAtLWdpdCBhL2dk Yi9wcmludGNtZC5jIGIvZ2RiL3ByaW50Y21kLmMKLWluZGV4IDVmZmEwOTkuLjU4ZDljNzkgMTAw NjQ0Ci0tLS0gYS9nZGIvcHJpbnRjbWQuYwotKysrIGIvZ2RiL3ByaW50Y21kLmMKLUBAIC05NzEs NiArOTcxLDExIEBAIHByaW50X2NvbW1hbmRfMSAoY2hhciAqZXhwLCBpbnQgaW5zcGVjdCwgaW50 IHZvaWRwcmludCkKLSAgIGVsc2UKLSAgICAgdmFsID0gYWNjZXNzX3ZhbHVlX2hpc3RvcnkgKDAp OwotIAotKyAgLyogRG8gbm90IHRyeSB0byBPQkpFQ1RfQUREUkVTU19TRVQgaGVyZSBhbnl0aGlu Zy4gIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRoZQotKyAgICAgc291cmNlIHZhcmlhYmxlIGJhc2Ug YWRkcmVzc2VzIGFzIGZvdW5kIGJ5IFJFQURfVkFSX1ZBTFVFLiAgVGhlIHZhbHVlIGhlcmUKLSsg ICAgIGNhbiBiZSBhbHJlYWR5IGEgY2FsY3VsYXRlZCBleHByZXNzaW9uIGFkZHJlc3MgaW5hcHBy b3ByaWF0ZSBmb3IKLSsgICAgIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MuICAqLworKy8qIERl c3RydWN0b3Igb2YgTWVtYnVmIG9iamVjdHMuICAqLworKworK3N0YXRpYyB2b2lkCisrbWJweV9k ZWFsbG9jIChQeU9iamVjdCAqc2VsZikKKyt7CisrICB4ZnJlZSAoKChtZW1idWZfb2JqZWN0ICop IHNlbGYpLT5idWZmZXIpOworKyAgc2VsZi0+b2JfdHlwZS0+dHBfZnJlZSAoc2VsZik7CisrfQor KworKy8qIFJldHVybiBhIGRlc2NyaXB0aW9uIG9mIHRoZSBNZW1idWYgb2JqZWN0LiAgKi8KKysK KytzdGF0aWMgUHlPYmplY3QgKgorK21icHlfc3RyIChQeU9iamVjdCAqc2VsZikKKyt7CisrICBt ZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9vYmplY3QgKikgc2VsZjsKKysKKysg IHJldHVybiBQeVN0cmluZ19Gcm9tRm9ybWF0ICgibWVtb3J5IGJ1ZmZlciBmb3IgYWRkcmVzcyAl cywgJXMgYnl0ZXMgbG9uZyIsCisrCQkJICAgICAgcGFkZHJlc3MgKG1lbWJ1Zl9vYmotPmFkZHIp LAorKwkJCSAgICAgIHB1bG9uZ2VzdCAobWVtYnVmX29iai0+bGVuZ3RoKSk7CisrfQogKwotICAg aWYgKHZvaWRwcmludCB8fCAodmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKLSAJCSAgICBUWVBF X0NPREUgKHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKLSAgICAgewotQEAg LTE0NzEsNiArMTQ3NiwyMiBAQCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQot IAlzZXRfaW50ZXJuYWx2YXIgKGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWlu ZV92YWx1ZSk7Ci0gICAgIH0KLSB9Cisrc3RhdGljIFB5X3NzaXplX3QKKytnZXRfcmVhZF9idWZm ZXIgKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHNlZ21lbnQsIHZvaWQgKipwdHJwdHIpCisr eworKyAgbWVtYnVmX29iamVjdCAqbWVtYnVmX29iaiA9IChtZW1idWZfb2JqZWN0ICopIHNlbGY7 CiArCi0rLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVzIHJlZmVyZW5jZWQgZnJv bSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCisrICBpZiAoc2VnbWVudCkKKysgICAgeworKyAg ICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfU3lzdGVtRXJyb3IsCisrCQkgICAgICAgIlRoZSBt ZW1vcnkgYnVmZmVyIHN1cHBvcnRzIG9ubHkgb25lIHNlZ21lbnQuIik7CisrICAgICAgcmV0dXJu IC0xOworKyAgICB9CiArCi0rc3RhdGljIHZvaWQKLStwcmludF90eXBlc19tYXJrX3VzZWQgKHZv aWQpCisrICAqcHRycHRyID0gbWVtYnVmX29iai0+YnVmZmVyOworKworKyAgcmV0dXJuIG1lbWJ1 Zl9vYmotPmxlbmd0aDsKKyt9CisrCisrc3RhdGljIFB5X3NzaXplX3QKKytnZXRfd3JpdGVfYnVm ZmVyIChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzZWdtZW50LCB2b2lkICoqcHRycHRyKQog K3sKLSsgIHN0cnVjdCBkaXNwbGF5ICpkOworKyAgcmV0dXJuIGdldF9yZWFkX2J1ZmZlciAoc2Vs Ziwgc2VnbWVudCwgcHRycHRyKTsKKyt9CiArCi0rICBpZiAobGFzdF9leGFtaW5lX3ZhbHVlKQot KyAgICB0eXBlX21hcmtfdXNlZCAodmFsdWVfdHlwZSAobGFzdF9leGFtaW5lX3ZhbHVlKSk7Cisr c3RhdGljIFB5X3NzaXplX3QKKytnZXRfc2VnX2NvdW50IChQeU9iamVjdCAqc2VsZiwgUHlfc3Np emVfdCAqbGVucCkKKyt7CisrICBpZiAobGVucCkKKysgICAgKmxlbnAgPSAoKG1lbWJ1Zl9vYmpl Y3QgKikgc2VsZiktPmxlbmd0aDsKICsKLSsgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQg PSBkLT5uZXh0KQotKyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQg KGQtPmV4cCk7CisrICByZXR1cm4gMTsKICt9CiArCi0gDAotIAotIC8qIEFkZCBhbiBleHByZXNz aW9uIHRvIHRoZSBhdXRvLWRpc3BsYXkgY2hhaW4uCi1AQCAtMjg2OSw0ICsyODkwLDYgQEAgU2hv dyBwcmludGluZyBvZiBzb3VyY2UgZmlsZW5hbWUgYW5kIGxpbmUgbnVtYmVyIHdpdGggPHN5bWJv bD4uIiksIE5VTEwsCi0gICBhZGRfY29tICgiZXZhbCIsIG5vX2NsYXNzLCBldmFsX2NvbW1hbmQs IF8oIlwKLSBDb252ZXJ0IFwicHJpbnRmIGZvcm1hdCBzdHJpbmdcIiwgYXJnMSwgYXJnMiwgYXJn MywgLi4uLCBhcmduIHRvXG5cCi0gYSBjb21tYW5kIGxpbmUsIGFuZCBjYWxsIGl0LiIpKTsKKytz dGF0aWMgUHlfc3NpemVfdAorK2dldF9jaGFyX2J1ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3Nz aXplX3Qgc2VnbWVudCwgY2hhciAqKnB0cnB0cikKKyt7CisrICB2b2lkICpwdHIgPSBOVUxMOwor KyAgUHlfc3NpemVfdCByZXQ7CiArCi0rICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmlu dF90eXBlc19tYXJrX3VzZWQpOwotIH0KKysgIHJldCA9IGdldF9yZWFkX2J1ZmZlciAoc2VsZiwg c2VnbWVudCwgJnB0cik7CisrICAqcHRycHRyID0gKGNoYXIgKikgcHRyOworKworKyAgcmV0dXJu IHJldDsKKyt9CisrCisrLyogUHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBhIGRlY2VudCB3YXkgdG8g Z2V0IGNvbXBhdGliaWxpdHkgaGVyZS4gICovCisrI2lmIEhBVkVfTElCUFlUSE9OMl80CisrI2Rl ZmluZSBDSEFSQlVGRkVSUFJPQ19OQU1FIGdldGNoYXJidWZmZXJwcm9jCisrI2Vsc2UKKysjZGVm aW5lIENIQVJCVUZGRVJQUk9DX05BTUUgY2hhcmJ1ZmZlcnByb2MKKysjZW5kaWYKKysKKytzdGF0 aWMgUHlCdWZmZXJQcm9jcyBidWZmZXJfcHJvY3MgPSB7CisrICBnZXRfcmVhZF9idWZmZXIsCisr ICBnZXRfd3JpdGVfYnVmZmVyLAorKyAgZ2V0X3NlZ19jb3VudCwKKysgIC8qIFRoZSBjYXN0IGhl cmUgd29ya3MgYXJvdW5kIGEgZGlmZmVyZW5jZSBiZXR3ZWVuIFB5dGhvbiAyLjQgYW5kCisrICAg ICBQeXRob24gMi41LiAgKi8KKysgIChDSEFSQlVGRkVSUFJPQ19OQU1FKSBnZXRfY2hhcl9idWZm ZXIKKyt9OworKworK3N0YXRpYyBQeVR5cGVPYmplY3QgbWVtYnVmX29iamVjdF90eXBlID0gewor KyAgUHlPYmplY3RfSEVBRF9JTklUIChOVUxMKQorKyAgMCwJCQkJICAvKm9iX3NpemUqLworKyAg ImdkYi5NZW1idWYiLAkJCSAgLyp0cF9uYW1lKi8KKysgIHNpemVvZiAobWVtYnVmX29iamVjdCks CSAgLyp0cF9iYXNpY3NpemUqLworKyAgMCwJCQkJICAvKnRwX2l0ZW1zaXplKi8KKysgIG1icHlf ZGVhbGxvYywJCQkgIC8qdHBfZGVhbGxvYyovCisrICAwLAkJCQkgIC8qdHBfcHJpbnQqLworKyAg MCwJCQkJICAvKnRwX2dldGF0dHIqLworKyAgMCwJCQkJICAvKnRwX3NldGF0dHIqLworKyAgMCwJ CQkJICAvKnRwX2NvbXBhcmUqLworKyAgMCwJCQkJICAvKnRwX3JlcHIqLworKyAgMCwJCQkJICAv KnRwX2FzX251bWJlciovCisrICAwLAkJCQkgIC8qdHBfYXNfc2VxdWVuY2UqLworKyAgMCwJCQkJ ICAvKnRwX2FzX21hcHBpbmcqLworKyAgMCwJCQkJICAvKnRwX2hhc2ggKi8KKysgIDAsCQkJCSAg Lyp0cF9jYWxsKi8KKysgIG1icHlfc3RyLAkJCSAgLyp0cF9zdHIqLworKyAgMCwJCQkJICAvKnRw X2dldGF0dHJvKi8KKysgIDAsCQkJCSAgLyp0cF9zZXRhdHRybyovCisrICAmYnVmZmVyX3Byb2Nz LAkJICAvKnRwX2FzX2J1ZmZlciovCisrICBQeV9UUEZMQUdTX0RFRkFVTFQsCQkgIC8qdHBfZmxh Z3MqLworKyAgIkdEQiBtZW1vcnkgYnVmZmVyIG9iamVjdCIsIAkgIC8qdHBfZG9jKi8KKysgIDAs CQkJCSAgLyogdHBfdHJhdmVyc2UgKi8KKysgIDAsCQkJCSAgLyogdHBfY2xlYXIgKi8KKysgIDAs CQkJCSAgLyogdHBfcmljaGNvbXBhcmUgKi8KKysgIDAsCQkJCSAgLyogdHBfd2Vha2xpc3RvZmZz ZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaXRlciAqLworKyAgMCwJCQkJICAvKiB0cF9pdGVybmV4 dCAqLworKyAgMCwJCQkJICAvKiB0cF9tZXRob2RzICovCisrICAwLAkJCQkgIC8qIHRwX21lbWJl cnMgKi8KKysgIDAsCQkJCSAgLyogdHBfZ2V0c2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2Jhc2Ug Ki8KKysgIDAsCQkJCSAgLyogdHBfZGljdCAqLworKyAgMCwJCQkJICAvKiB0cF9kZXNjcl9nZXQg Ki8KKysgIDAsCQkJCSAgLyogdHBfZGVzY3Jfc2V0ICovCisrICAwLAkJCQkgIC8qIHRwX2RpY3Rv ZmZzZXQgKi8KKysgIDAsCQkJCSAgLyogdHBfaW5pdCAqLworKyAgMCwJCQkJICAvKiB0cF9hbGxv YyAqLworKyAgUHlUeXBlX0dlbmVyaWNOZXcJCSAgLyogdHBfbmV3ICovCisrfTsKKysKKyt2b2lk CisrZ2RicHlfaW5pdGlhbGl6ZV9tZW1idWYgKHZvaWQpCisreworKyAgaWYgKFB5VHlwZV9SZWFk eSAoJm1lbWJ1Zl9vYmplY3RfdHlwZSkgPCAwKQorKyAgICByZXR1cm47CisrCisrICBQeV9JTkNS RUYgKCZtZW1idWZfb2JqZWN0X3R5cGUpOworKyAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9k dWxlLCAiTWVtYnVmIiwgKFB5T2JqZWN0ICopICZtZW1idWZfb2JqZWN0X3R5cGUpOworK30KK2Rp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMgYi9nZGIvcHl0aG9uL3B5LXBy ZXR0eXByaW50LmMKK2luZGV4IDQzNGM4YTUuLmIyMmM1NTcgMTAwNjQ0CistLS0gYS9nZGIvcHl0 aG9uL3B5LXByZXR0eXByaW50LmMKKysrKyBiL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwor QEAgLTIwNCwxMCArMjA0LDEwIEBAIHByZXR0eV9wcmludF9vbmVfdmFsdWUgKFB5T2JqZWN0ICpw cmludGVyLCBzdHJ1Y3QgdmFsdWUgKipvdXRfdmFsdWUpCisgCSAgICAgICYmIHJlc3VsdCAhPSBQ eV9Ob25lKQorIAkgICAgeworIAkgICAgICAqb3V0X3ZhbHVlID0gY29udmVydF92YWx1ZV9mcm9t X3B5dGhvbiAocmVzdWx0KTsKKy0JICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQorLQkJKm91 dF92YWx1ZSA9IE5VTEw7CistCSAgICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKKy0JICAgICAgcmVz dWx0ID0gTlVMTDsKKysgCSAgICAgIGlmIChQeUVycl9PY2N1cnJlZCAoKSkKKysgCQkqb3V0X3Zh bHVlID0gTlVMTDsKKysgCSAgICAgIFB5X0RFQ1JFRiAocmVzdWx0KTsKKysgCSAgICAgIHJlc3Vs dCA9IE5VTEw7CisgCSAgICB9CisgCX0KKyAgICAgfQorQEAgLTcwMCwxNCArNzAwLDcgQEAgZ2Ri cHlfZ2V0X3Zhcm9ial9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHZhbHVlICp2YWx1ZSkKKyB7Cisg ICBQeU9iamVjdCAqdmFsX29iajsKKyAgIFB5T2JqZWN0ICpwcmV0dHlfcHJpbnRlciA9IE5VTEw7 CistICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CisgCistICBUUllfQ0FU Q0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorLSAgICB7CistICAgICAgdmFsdWUgPSB2YWx1 ZV9jb3B5ICh2YWx1ZSk7CistICAgIH0KKy0gIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNl cHQpOworLSAgCisgICB2YWxfb2JqID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0ICh2YWx1ZSk7Cisg ICBpZiAoISB2YWxfb2JqKQorICAgICByZXR1cm4gTlVMTDsKIGRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL3B5LXR5cGUuYyBiL2dkYi9weXRob24vcHktdHlwZS5jCiBpbmRleCBiOTAxMjU1Li40ZmYx OGU1IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weS10eXBlLmMKQEAgLTU5NTcsNiArMTAyNjMs NDQwIEBAIGluZGV4IDIwMjQwMjEuLmU4YmUxMmQgMTAwNjQ0CiAgfQogIAogIAwKK2RpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5oIGIvZ2RiL3B5dGhvbi9weXRob24taW50 ZXJuYWwuaAoraW5kZXggMmI4ZDMwMS4uMGFmOTljOCAxMDA2NDQKKy0tLSBhL2dkYi9weXRob24v cHl0aG9uLWludGVybmFsLmgKKysrKyBiL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKK0BA IC04MiwxMCArODIsMTEgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm47Cisgc3RydWN0IHByb2dyYW1f c3BhY2U7CisgCisgZXh0ZXJuIFB5T2JqZWN0ICpnZGJfbW9kdWxlOworLWV4dGVybiBQeVR5cGVP YmplY3QgdmFsdWVfb2JqZWN0X3R5cGU7CisgZXh0ZXJuIFB5VHlwZU9iamVjdCBibG9ja19vYmpl Y3RfdHlwZTsKKytleHRlcm4gUHlUeXBlT2JqZWN0IHZhbHVlX29iamVjdF90eXBlOworIGV4dGVy biBQeVR5cGVPYmplY3Qgc3ltYm9sX29iamVjdF90eXBlOworIAorKy8qIFVzZWQgaW4gcHl0aG9u LWluZmVyaW9yLmMuICAqLworIHR5cGVkZWYgc3RydWN0CisgeworICAgUHlPYmplY3RfSEVBRAor QEAgLTEyNiw2ICsxMjcsMTAgQEAgUHlPYmplY3QgKmJsb2NrX3RvX2Jsb2NrX29iamVjdCAoc3Ry dWN0IGJsb2NrICpibG9jaywgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIFB5T2JqZWN0ICp2 YWx1ZV90b192YWx1ZV9vYmplY3QgKHN0cnVjdCB2YWx1ZSAqdik7CisgUHlPYmplY3QgKnR5cGVf dG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICopOworIFB5T2JqZWN0ICpmcmFtZV9pbmZvX3Rv X2ZyYW1lX29iamVjdCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKTsKKytQeU9iamVjdCAqZnJh bWVfaW5mb190b19mcmFtZV9vYmplY3QgKHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSk7CisrdGhy ZWFkX29iamVjdCAqY3JlYXRlX3RocmVhZF9vYmplY3QgKHN0cnVjdCB0aHJlYWRfaW5mbyAqdHAp OworK3RocmVhZF9vYmplY3QgKmZpbmRfdGhyZWFkX29iamVjdCAocHRpZF90IHB0aWQpOworK1B5 T2JqZWN0ICpmaW5kX2luZmVyaW9yX29iamVjdCAoaW50IHBpZCk7CisgCisgUHlPYmplY3QgKnBz cGFjZV90b19wc3BhY2Vfb2JqZWN0IChzdHJ1Y3QgcHJvZ3JhbV9zcGFjZSAqKTsKKyBQeU9iamVj dCAqcHNweV9nZXRfcHJpbnRlcnMgKFB5T2JqZWN0ICosIHZvaWQgKik7CitAQCAtMTQ1LDggKzE1 MCwxMSBAQCBzdHJ1Y3QgdHlwZSAqdHlwZV9vYmplY3RfdG9fdHlwZSAoUHlPYmplY3QgKm9iaik7 Cisgc3RydWN0IHN5bXRhYiAqc3ltdGFiX29iamVjdF90b19zeW10YWIgKFB5T2JqZWN0ICpvYmop OworIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbF9vYmplY3RfdG9fc3ltdGFiX2FuZF9saW5l IChQeU9iamVjdCAqb2JqKTsKKyAKKytQeU9iamVjdCAqZ2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24g KGNvbnN0IGNoYXIgKik7Cisgdm9pZCBnZGJweV9pbml0aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7 CisrCisgdm9pZCBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCk7Cisrdm9pZCBnZGJweV9p bml0aWFsaXplX2JyZWFrcG9pbnRzICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfZnJh bWVzICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfc3ltdGFicyAodm9pZCk7Cisgdm9p ZCBnZGJweV9pbml0aWFsaXplX2NvbW1hbmRzICh2b2lkKTsKK0BAIC0xNTQsNiArMTYyLDcgQEAg dm9pZCBnZGJweV9pbml0aWFsaXplX3N5bWJvbHMgKHZvaWQpOworIHZvaWQgZ2RicHlfaW5pdGlh bGl6ZV9zeW10YWJzICh2b2lkKTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfYmxvY2tzICh2b2lk KTsKKyB2b2lkIGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpOworK3ZvaWQgZ2RicHlfaW5p dGlhbGl6ZV9ibG9ja3MgKHZvaWQpOworIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9mdW5jdGlvbnMg KHZvaWQpOworIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9wc3BhY2UgKHZvaWQpOworIHZvaWQgZ2Ri cHlfaW5pdGlhbGl6ZV9vYmpmaWxlICh2b2lkKTsKK0BAIC0xNzEsNiArMTgwLDEyIEBAIHN0cnVj dCBjbGVhbnVwICplbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisg ZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpweXRob25fZ2RiYXJjaDsKKyBleHRlcm4gY29uc3Qgc3Ry dWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5ndWFnZTsKKyAKKytjaGFyICpnZGJweV9wYXJz ZV9jb21tYW5kX25hbWUgKGNoYXIgKnRleHQsCisrCQkJCXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50 ICoqKmJhc2VfbGlzdCwKKysJCQkJc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKipzdGFydF9saXN0 KTsKKysKKytQeU9iamVjdCAqZ2RicHlfcGFyYW1ldGVyX3ZhbHVlIChlbnVtIHZhcl90eXBlcywg dm9pZCAqKTsKKysKKyAvKiBVc2UgdGhpcyBhZnRlciBhIFRSWV9FWENFUFQgdG8gdGhyb3cgdGhl IGFwcHJvcHJpYXRlIFB5dGhvbgorICAgIGV4Y2VwdGlvbi4gICovCisgI2RlZmluZSBHREJfUFlf SEFORExFX0VYQ0VQVElPTihFeGNlcHRpb24pCQkJCVwKK0BAIC0yMjEsMTMgKzIzNiwxNCBAQCBp bnQgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9iamVjdCAqb2JqKTsKKyBQeU9iamVjdCAqYXBw bHlfdmFyb2JqX3ByZXR0eV9wcmludGVyIChQeU9iamVjdCAqcHJpbnRfb2JqLAorIAkJCQkgICAg ICAgc3RydWN0IHZhbHVlICoqcmVwbGFjZW1lbnQpOworIFB5T2JqZWN0ICpnZGJweV9nZXRfdmFy b2JqX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdmFsdWUgKnZhbHVlKTsKKytQeU9iamVjdCAqZ2Ri cHlfaW5zdGFudGlhdGVfcHJpbnRlciAoUHlPYmplY3QgKmNvbnMsIFB5T2JqZWN0ICp2YWx1ZSk7 CisgY2hhciAqZ2RicHlfZ2V0X2Rpc3BsYXlfaGludCAoUHlPYmplY3QgKnByaW50ZXIpOworIFB5 T2JqZWN0ICpnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqYXJncyk7CisgCistZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9kb2NfY3N0OworIGV4dGVybiBQ eU9iamVjdCAqZ2RicHlfY2hpbGRyZW5fY3N0OworIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfdG9f c3RyaW5nX2NzdDsKKyBleHRlcm4gUHlPYmplY3QgKmdkYnB5X2Rpc3BsYXlfaGludF9jc3Q7Cisr ZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9kb2NfY3N0OworIGV4dGVybiBQeU9iamVjdCAqZ2RicHlf ZW5hYmxlZF9jc3Q7CisgCisgZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9nZGJlcnJvcl9leGM7Citk aWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBiL2dkYi9weXRob24vcHl0aG9uLmMKK2lu ZGV4IDY2ODAxMjYuLjJlZWUzMWYgMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5jCisr KysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlICJ2 YWx1ZS5oIgorICNpbmNsdWRlICJsYW5ndWFnZS5oIgorICNpbmNsdWRlICJleGNlcHRpb25zLmgi CisrI2luY2x1ZGUgImV2ZW50LWxvb3AuaCIKKyAKKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAKK0BA IC00MiwxMCArNDMsMTcgQEAgc3RhdGljIGludCBnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSAx OworICNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgorICNpbmNsdWRlICJjaGFyc2V0LmgiCisg I2luY2x1ZGUgInRvcC5oIgorKyNpbmNsdWRlICJzb2xpYi5oIgorICNpbmNsdWRlICJweXRob24t aW50ZXJuYWwuaCIKKysjaW5jbHVkZSAibGluZXNwZWMuaCIKKysjaW5jbHVkZSAic3ltdGFiLmgi CisrI2luY2x1ZGUgInNvdXJjZS5oIgorICNpbmNsdWRlICJ2ZXJzaW9uLmgiCisrI2luY2x1ZGUg ImluZmVyaW9yLmgiCisrI2luY2x1ZGUgImdkYnRocmVhZC5oIgorICNpbmNsdWRlICJ0YXJnZXQu aCIKKyAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCisrI2luY2x1ZGUgImV2ZW50LXRvcC5oIgorIAor IHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW107CisgCitAQCAtNDEzLDYgKzQyMSwxMDUg QEAgZXhlY3V0ZV9nZGJfY29tbWFuZCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQ eU9iamVjdCAqa3cpCisgICBQeV9SRVRVUk5fTk9ORTsKKyB9CisgCisrLyogSW1wbGVtZW50YXRp b24gb2YgZ2RiLnNvbGliX2FkZHJlc3MgKExvbmcpIC0+IFN0cmluZy4KKysgICBSZXR1cm5zIHRo ZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBob2xkaW5nIGEgZ2l2ZW4gYWRkcmVzcywgb3Ig Tm9uZS4gICovCisrCisrc3RhdGljIFB5T2JqZWN0ICoKKytnZGJweV9zb2xpYl9hZGRyZXNzIChQ eU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCisreworKyAgdW5zaWduZWQgbG9uZyBsb25n IHBjOworKyAgY2hhciAqc29uYW1lOworKyAgUHlPYmplY3QgKnN0cl9vYmo7CisrCisrICBpZiAo IVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJLIiwgJnBjKSkKKysgICAgcmV0dXJuIE5VTEw7Cisr CisrICBzb25hbWUgPSBzb2xpYl9uYW1lX2Zyb21fYWRkcmVzcyAoY3VycmVudF9wcm9ncmFtX3Nw YWNlLCBwYyk7CisrICBpZiAoc29uYW1lKQorKyAgICBzdHJfb2JqID0gUHlTdHJpbmdfRGVjb2Rl IChzb25hbWUsIHN0cmxlbiAoc29uYW1lKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxMKTsKKysgIGVs c2UKKysgICAgeworKyAgICAgIHN0cl9vYmogPSBQeV9Ob25lOworKyAgICAgIFB5X0lOQ1JFRiAo UHlfTm9uZSk7CisrICAgIH0KKysKKysgIHJldHVybiBzdHJfb2JqOworK30KKysKKysvKiBBIFB5 dGhvbiBmdW5jdGlvbiB3aGljaCBpcyBhIHdyYXBwZXIgZm9yIGRlY29kZV9saW5lXzEuICAqLwor KworK3N0YXRpYyBQeU9iamVjdCAqCisrZ2RicHlfZGVjb2RlX2xpbmUgKFB5T2JqZWN0ICpzZWxm LCBQeU9iamVjdCAqYXJncykKKyt7CisrICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FscyA9 IHsgTlVMTCwgMCB9OyAvKiBJbml0aWFsaXplIHRvIGFwcGVhc2UgZ2NjLiAgKi8KKysgIHN0cnVj dCBzeW10YWJfYW5kX2xpbmUgc2FsOworKyAgY2hhciAqYXJnID0gTlVMTDsKKysgIGludCBmcmVl X3NhbHMgPSAwLCBpOworKyAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CisrICB2b2xhdGlsZSBz dHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CisrCisrICBpZiAoISBQeUFyZ19QYXJzZVR1cGxl IChhcmdzLCAifHMiLCAmYXJnKSkKKysgICAgcmV0dXJuIE5VTEw7CisrCisrICBUUllfQ0FUQ0gg KGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQorKyAgICB7CisrICAgICAgaWYgKGFyZykKKysJewor KwkgIGNoYXIgKmNvcHk7CisrCisrCSAgYXJnID0gc3RyZHVwIChhcmcpOworKwkgIGNvcHkgPSBh cmc7CisrCisrCSAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZjb3B5LCAwLCAwLCAwLCAwLCAwKTsK KysJICBmcmVlX3NhbHMgPSAxOworKwl9CisrICAgICAgZWxzZQorKwl7CisrCSAgc2V0X2RlZmF1 bHRfc291cmNlX3N5bXRhYl9hbmRfbGluZSAoKTsKKysJICBzYWwgPSBnZXRfY3VycmVudF9zb3Vy Y2Vfc3ltdGFiX2FuZF9saW5lICgpOworKwkgIHNhbHMuc2FscyA9ICZzYWw7CisrCSAgc2Fscy5u ZWx0cyA9IDE7CisrCX0KKysgICAgfQorKyAgaWYgKGFyZykKKysgICAgeGZyZWUgKGFyZyk7Cisr CisrICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCisrICAgIHsKKysgICAgICBpZiAoZnJlZV9zYWxz KQorKwl4ZnJlZSAoc2Fscy5zYWxzKTsKKysgICAgICAvKiBXZSBrbm93IHRoaXMgd2lsbCBhbHdh eXMgdGhyb3cuICAqLworKyAgICAgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQpOwor KyAgICB9CisrCisrICBpZiAoc2Fscy5uZWx0cykKKysgICAgeworKyAgICAgIHJlc3VsdCA9IFB5 VHVwbGVfTmV3IChzYWxzLm5lbHRzKTsKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0 czsgKytpKQorKwl7CisrCSAgUHlPYmplY3QgKm9iajsKKysJICBjaGFyICpzdHI7CisrCisrCSAg b2JqID0gc3ltdGFiX2FuZF9saW5lX3RvX3NhbF9vYmplY3QgKHNhbHMuc2Fsc1tpXSk7CisrCSAg aWYgKCEgb2JqKQorKwkgICAgeworKwkgICAgICBQeV9ERUNSRUYgKHJlc3VsdCk7CisrCSAgICAg IHJlc3VsdCA9IE5VTEw7CisrCSAgICAgIGJyZWFrOworKwkgICAgfQorKworKwkgIFB5VHVwbGVf U2V0SXRlbSAocmVzdWx0LCBpLCBvYmopOworKwl9CisrICAgIH0KKysKKysgIGlmIChmcmVlX3Nh bHMpCisrICAgIHhmcmVlIChzYWxzLnNhbHMpOworKworKyAgaWYgKHJlc3VsdCkKKysgICAgcmV0 dXJuIHJlc3VsdDsKKysgIFB5X1JFVFVSTl9OT05FOworK30KKysKKyAvKiBQYXJzZSBhIHN0cmlu ZyBhbmQgZXZhbHVhdGUgaXQgYXMgYW4gZXhwcmVzc2lvbi4gICovCisgc3RhdGljIFB5T2JqZWN0 ICoKKyBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQorQEAgLTQ1Myw2ICs1NjAsMTE0IEBAIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJl YW0sIGNvbnN0IGNoYXIgKmZpbGUpCisgCisgDAorIAorKy8qIFBvc3RpbmcgYW5kIGhhbmRsaW5n IGV2ZW50cy4gICovCisrCisrLyogQSBzaW5nbGUgZXZlbnQuICAqLworK3N0cnVjdCBnZGJweV9l dmVudAorK3sKKysgIC8qIFRoZSBQeXRob24gZXZlbnQuICBUaGlzIGlzIGp1c3QgYSBjYWxsYWJs ZSBvYmplY3QuICAqLworKyAgUHlPYmplY3QgKmV2ZW50OworKyAgLyogVGhlIG5leHQgZXZlbnQu ICAqLworKyAgc3RydWN0IGdkYnB5X2V2ZW50ICpuZXh0OworK307CisrCisrLyogQWxsIHBlbmRp bmcgZXZlbnRzLiAgKi8KKytzdGF0aWMgc3RydWN0IGdkYnB5X2V2ZW50ICpnZGJweV9ldmVudF9s aXN0OworKy8qIFRoZSBmaW5hbCBsaW5rIG9mIHRoZSBldmVudCBsaXN0LiAgKi8KKytzdGF0aWMg c3RydWN0IGdkYnB5X2V2ZW50ICoqZ2RicHlfZXZlbnRfbGlzdF9lbmQ7CisrCisrLyogV2UgdXNl IGEgZmlsZSBoYW5kbGVyLCBhbmQgbm90IGFuIGFzeW5jIGhhbmRsZXIsIHNvIHRoYXQgd2UgY2Fu CisrICAgd2FrZSB1cCB0aGUgbWFpbiB0aHJlYWQgZXZlbiB3aGVuIGl0IGlzIGJsb2NrZWQgaW4g cG9sbCgpLiAgKi8KKytzdGF0aWMgaW50IGdkYnB5X2V2ZW50X2Zkc1syXTsKKysKKysvKiBUaGUg ZmlsZSBoYW5kbGVyIGNhbGxiYWNrLiAgVGhpcyByZWFkcyBmcm9tIHRoZSBpbnRlcm5hbCBwaXBl LCBhbmQKKysgICB0aGVuIHByb2Nlc3NlcyB0aGUgUHl0aG9uIGV2ZW50IHF1ZXVlLiAgVGhpcyB3 aWxsIGFsd2F5cyBiZSBydW4gaW4KKysgICB0aGUgbWFpbiBnZGIgdGhyZWFkLiAgKi8KKytzdGF0 aWMgdm9pZAorK2dkYnB5X3J1bl9ldmVudHMgKGludCBlcnIsIGdkYl9jbGllbnRfZGF0YSBpZ25v cmUpCisreworKyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXA7CisrICBjaGFyIGJ1ZmZlclsxMDBd OworKyAgaW50IHI7CisrCisrICBjbGVhbnVwID0gZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJy ZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworKworKyAgLyogSnVzdCByZWFkIHdoYXRl dmVyIGlzIGF2YWlsYWJsZSBvbiB0aGUgZmQuICBJdCBpcyByZWxhdGl2ZWx5CisrICAgICBoYXJt bGVzcyBpZiB0aGVyZSBhcmUgYW55IGJ5dGVzIGxlZnQgb3Zlci4gICovCisrICByID0gcmVhZCAo Z2RicHlfZXZlbnRfZmRzWzBdLCBidWZmZXIsIHNpemVvZiAoYnVmZmVyKSk7CisrCisrICB3aGls ZSAoZ2RicHlfZXZlbnRfbGlzdCkKKysgICAgeworKyAgICAgIC8qIERpc3BhdGNoaW5nIHRoZSBl dmVudCBtaWdodCBwdXNoIGEgbmV3IGVsZW1lbnQgb250byB0aGUgZXZlbnQKKysJIGxvb3AsIHNv IHdlIHVwZGF0ZSBoZXJlICJhdG9taWNhbGx5IGVub3VnaCIuICAqLworKyAgICAgIHN0cnVjdCBn ZGJweV9ldmVudCAqaXRlbSA9IGdkYnB5X2V2ZW50X2xpc3Q7CisrICAgICAgZ2RicHlfZXZlbnRf bGlzdCA9IGdkYnB5X2V2ZW50X2xpc3QtPm5leHQ7CisrICAgICAgaWYgKGdkYnB5X2V2ZW50X2xp c3QgPT0gTlVMTCkKKysJZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSAmZ2RicHlfZXZlbnRfbGlzdDsK KysKKysgICAgICAvKiBJZ25vcmUgZXJyb3JzLiAgKi8KKysgICAgICBQeU9iamVjdF9DYWxsT2Jq ZWN0IChpdGVtLT5ldmVudCwgTlVMTCk7CisrCisrICAgICAgUHlfREVDUkVGIChpdGVtLT5ldmVu dCk7CisrICAgICAgeGZyZWUgKGl0ZW0pOworKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoY2xl YW51cCk7CisrfQorKworKy8qIFN1Ym1pdCBhbiBldmVudCB0byB0aGUgZ2RiIHRocmVhZC4gICov Cisrc3RhdGljIFB5T2JqZWN0ICoKKytnZGJweV9wb3N0X2V2ZW50IChQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MpCisreworKyAgc3RydWN0IGdkYnB5X2V2ZW50ICpldmVudDsKKysgIFB5 T2JqZWN0ICpmdW5jOworKyAgaW50IHdha2V1cDsKKysKKysgIGlmICghUHlBcmdfUGFyc2VUdXBs ZSAoYXJncywgIk8iLCAmZnVuYykpCisrICAgIHJldHVybiBOVUxMOworKworKyAgaWYgKCFQeUNh bGxhYmxlX0NoZWNrIChmdW5jKSkKKysgICAgeworKyAgICAgIFB5RXJyX1NldFN0cmluZyAoUHlF eGNfUnVudGltZUVycm9yLCAiUG9zdGVkIGV2ZW50IGlzIG5vdCBjYWxsYWJsZSIpOworKyAgICAg IHJldHVybiBOVUxMOworKyAgICB9CisrCisrICBQeV9JTkNSRUYgKGZ1bmMpOworKworKyAgLyog RnJvbSBoZXJlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGZ1bmN0aW9uLCB3ZSBoYXZlIHRoZSBHSUws IHNvIHdlCisrICAgICBjYW4gb3BlcmF0ZSBvbiBvdXIgZ2xvYmFsIGRhdGEgc3RydWN0dXJlcyB3 aXRob3V0IHdvcnJ5aW5nLiAgKi8KKysgIHdha2V1cCA9IGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVM TDsKKysKKysgIGV2ZW50ID0gWE5FVyAoc3RydWN0IGdkYnB5X2V2ZW50KTsKKysgIGV2ZW50LT5l dmVudCA9IGZ1bmM7CisrICBldmVudC0+bmV4dCA9IE5VTEw7CisrICAqZ2RicHlfZXZlbnRfbGlz dF9lbmQgPSBldmVudDsKKysgIGdkYnB5X2V2ZW50X2xpc3RfZW5kID0gJmV2ZW50LT5uZXh0Owor KworKyAgLyogV2FrZSB1cCBnZGIgd2hlbiBuZWVkZWQuICAqLworKyAgaWYgKHdha2V1cCkKKysg ICAgeworKyAgICAgIGNoYXIgYyA9ICdxJzsJCS8qIEFueXRoaW5nLiAqLworKyAgICAgIGlmICh3 cml0ZSAoZ2RicHlfZXZlbnRfZmRzWzFdLCAmYywgMSkgIT0gMSkKKysgICAgICAgIHJldHVybiBQ eUVycl9TZXRGcm9tRXJybm8gKFB5RXhjX0lPRXJyb3IpOworKyAgICB9CisrCisrICBQeV9SRVRV Uk5fTk9ORTsKKyt9CisrCisrLyogSW5pdGlhbGl6ZSB0aGUgUHl0aG9uIGV2ZW50IGhhbmRsZXIu ICAqLworK3N0YXRpYyB2b2lkCisrZ2RicHlfaW5pdGlhbGl6ZV9ldmVudHMgKHZvaWQpCisrewor KyAgaWYgKCFwaXBlIChnZGJweV9ldmVudF9mZHMpKQorKyAgICB7CisrICAgICAgZ2RicHlfZXZl bnRfbGlzdF9lbmQgPSAmZ2RicHlfZXZlbnRfbGlzdDsKKysgICAgICBhZGRfZmlsZV9oYW5kbGVy IChnZGJweV9ldmVudF9mZHNbMF0sIGdkYnB5X3J1bl9ldmVudHMsIE5VTEwpOworKyAgICB9Cisr fQorKworKwwKKysKKyAvKiBQcmludGluZy4gICovCisgCisgLyogQSBweXRob24gZnVuY3Rpb24g dG8gd3JpdGUgYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGdkYidzIGZpbHRlcmVkCitAQCAtNDk4LDYg KzcxMyw1MyBAQCBnZGJweV9wcmludF9zdGFjayAodm9pZCkKKyAKKyAvKiBSZXR1cm4gdGhlIGN1 cnJlbnQgUHJvZ3NwYWNlLgorICAgIFRoZXJlIGFsd2F5cyBpcyBvbmUuICAqLworKy8qIFRydWUg aWYgJ2dkYiAtUCcgd2FzIHVzZWQsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBy dW5uaW5nX3B5dGhvbl9zY3JpcHQ7CisrCisrLyogVHJ1ZSBpZiB3ZSBhcmUgY3VycmVudGx5IGlu IGEgY2FsbCB0byAnZ2RiLmNsaScsIGZhbHNlIG90aGVyd2lzZS4gICovCisrc3RhdGljIGludCBp bl9jbGk7CisrCisrLyogRW50ZXIgdGhlIGNvbW1hbmQgbG9vcC4gICovCisrCisrc3RhdGljIFB5 T2JqZWN0ICoKKytnZGJweV9jbGkgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2Vk MikKKyt7CisrICBpZiAoISBydW5uaW5nX3B5dGhvbl9zY3JpcHQgfHwgaW5fY2xpKQorKyAgICBy ZXR1cm4gUHlFcnJfRm9ybWF0IChQeUV4Y19SdW50aW1lRXJyb3IsICJjYW5ub3QgaW52b2tlIENM SSByZWN1cnNpdmVseSIpOworKworKyAgaW5fY2xpID0gMTsKKysgIGNsaV9jb21tYW5kX2xvb3Ag KCk7CisrICBpbl9jbGkgPSAwOworKworKyAgUHlfUkVUVVJOX05PTkU7CisrfQorKworKy8qIFNl dCB1cCB0aGUgUHl0aG9uIGFyZ3VtZW50IHZlY3RvciBhbmQgZXZhbHVhdGUgYSBzY3JpcHQuICBU aGlzIGlzCisrICAgdXNlZCB0byBpbXBsZW1lbnQgJ2dkYiAtUCcuICAqLworKworK3ZvaWQKKyty dW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysgIEZJTEUgKmlu cHV0OworKworKyAgLyogV2UgbmV2ZXIgZnJlZSB0aGlzLCBzaW5jZSB3ZSBwbGFuIHRvIGV4aXQg YXQgdGhlIGVuZC4gICovCisrICBlbnN1cmVfcHl0aG9uX2VudiAoZ2V0X2N1cnJlbnRfYXJjaCAo KSwgY3VycmVudF9sYW5ndWFnZSk7CisrCisrICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOwor KyAgUHlTeXNfU2V0QXJndiAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKKysgIGlucHV0ID0gZm9wZW4g KGFyZ3ZbMF0sICJyIik7CisrICBpZiAoISBpbnB1dCkKKysgICAgeworKyAgICAgIGZwcmludGYg KHN0ZGVyciwgImNvdWxkIG5vdCBvcGVuICVzOiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVy cm5vKSk7CisrICAgICAgZXhpdCAoMSk7CisrICAgIH0KKysgIFB5UnVuX1NpbXBsZUZpbGUgKGlu cHV0LCBhcmd2WzBdKTsKKysgIGZjbG9zZSAoaW5wdXQpOworKyAgZXhpdCAoMCk7CisrfQorKwor KwwKKysKKyAKKyBzdGF0aWMgUHlPYmplY3QgKgorIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFj ZSAoUHlPYmplY3QgKnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQorQEAgLTc1OSw2ICsxMDIx LDcgQEAgRW5hYmxlcyBvciBkaXNhYmxlcyBwcmludGluZyBvZiBQeXRob24gc3RhY2sgdHJhY2Vz LiIpLAorICAgZ2RicHlfaW5pdGlhbGl6ZV9sYXp5X3N0cmluZyAoKTsKKyAgIGdkYnB5X2luaXRp YWxpemVfdGhyZWFkICgpOworICAgZ2RicHlfaW5pdGlhbGl6ZV9pbmZlcmlvciAoKTsKKysgIGdk YnB5X2luaXRpYWxpemVfZXZlbnRzICgpOworIAorICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiaW1w b3J0IGdkYiIpOworICAgUHlSdW5fU2ltcGxlU3RyaW5nICgiZ2RiLnByZXR0eV9wcmludGVycyA9 IFtdIik7CitAQCAtODI2LDYgKzEwODksOCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9k c1tdID0KKyAgICAgIkdldCBhIHZhbHVlIGZyb20gaGlzdG9yeSIgfSwKKyAgIHsgImV4ZWN1dGUi LCAoUHlDRnVuY3Rpb24pIGV4ZWN1dGVfZ2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhf S0VZV09SRFMsCisgICAgICJFeGVjdXRlIGEgZ2RiIGNvbW1hbmQiIH0sCisrICB7ICJjbGkiLCBn ZGJweV9jbGksIE1FVEhfTk9BUkdTLAorKyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCisgICB7 ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJhbWV0ZXIsIE1FVEhfVkFSQVJHUywKKyAgICAgIlJldHVy biBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1ZSIgfSwKKyAKK0BAIC04NjQsMTEgKzExMjksMjEgQEAg YSBib29sZWFuIGluZGljYXRpbmcgaWYgbmFtZSBpcyBhIGZpZWxkIG9mIHRoZSBjdXJyZW50IGlt cGxpZWQgYXJndW1lbnRcblwKKyBgdGhpcycgKHdoZW4gdGhlIGN1cnJlbnQgbGFuZ3VhZ2UgaXMg b2JqZWN0LW9yaWVudGVkKS4iIH0sCisgICB7ICJibG9ja19mb3JfcGMiLCBnZGJweV9ibG9ja19m b3JfcGMsIE1FVEhfVkFSQVJHUywKKyAgICAgIlJldHVybiB0aGUgYmxvY2sgY29udGFpbmluZyB0 aGUgZ2l2ZW4gcGMgdmFsdWUsIG9yIE5vbmUuIiB9LAorKyAgeyAic29saWJfYWRkcmVzcyAoTG9u ZykgLT4gU3RyaW5nLlxuXAorK1JldHVybiB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkg aG9sZGluZyBhIGdpdmVuIGFkZHJlc3MsIG9yIE5vbmUuIiB9LAorKworKyAgeyAiZGVjb2RlX2xp bmUiLCBnZGJweV9kZWNvZGVfbGluZSwgTUVUSF9WQVJBUkdTLAorKyAgICAiRGVjb2RlIGEgc3Ry aW5nIGFyZ3VtZW50IHRoZSB3YXkgdGhhdCAnYnJlYWsnIG9yICdlZGl0JyBkb2VzLlxuXAorK1Jl dHVybiBhIHR1cGxlIGhvbGRpbmcgdGhlIGZpbGUgbmFtZSAob3IgTm9uZSkgYW5kIGxpbmUgbnVt YmVyIChvciBOb25lKS5cblwKKytOb3RlOiBtYXkgbGF0ZXIgY2hhbmdlIHRvIHJldHVybiBhbiBv YmplY3QuIiB9LAorICAgeyAicGFyc2VfYW5kX2V2YWwiLCBnZGJweV9wYXJzZV9hbmRfZXZhbCwg TUVUSF9WQVJBUkdTLAorICAgICAicGFyc2VfYW5kX2V2YWwgKFN0cmluZykgLT4gVmFsdWUuXG5c CisgUGFyc2UgU3RyaW5nIGFzIGFuIGV4cHJlc3Npb24sIGV2YWx1YXRlIGl0LCBhbmQgcmV0dXJu IHRoZSByZXN1bHQgYXMgYSBWYWx1ZS4iCisgICB9LAorIAorKyAgeyAicG9zdF9ldmVudCIsIGdk YnB5X3Bvc3RfZXZlbnQsIE1FVEhfVkFSQVJHUywKKysgICAgIlBvc3QgYW4gZXZlbnQgaW50byBn ZGIncyBldmVudCBsb29wLiIgfSwKKysKKyAgIHsgInRhcmdldF9jaGFyc2V0IiwgZ2RicHlfdGFy Z2V0X2NoYXJzZXQsIE1FVEhfTk9BUkdTLAorICAgICAidGFyZ2V0X2NoYXJzZXQgKCkgLT4gc3Ry aW5nLlxuXAorIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0YXJnZXQgY2hhcnNldC4i IH0sCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9u LmgKK2luZGV4IGFmZmQ0YTQuLjU0MDc4NzggMTAwNjQ0CistLS0gYS9nZGIvcHl0aG9uL3B5dGhv bi5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCitAQCAtMjgsNiArMjgsOCBAQCB2b2lkIGV2 YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwor IAorIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAq ZmlsZSk7CisgCisrdm9pZCBydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2 KTsKKysKKyBpbnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwg Y29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCisgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwg Q09SRV9BRERSIGFkZHJlc3MsCisgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50 IHJlY3Vyc2UsCiBkaWZmIC0tZ2l0IGEvZ2RiL3NvbGliLXN2cjQuYyBiL2dkYi9zb2xpYi1zdnI0 LmMKIGluZGV4IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAtLS0gYS9nZGIvc29saWItc3ZyNC5j CkBAIC01OTcxLDYgKzEwNzExLDg0IEBAIGluZGV4IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAg fQogIAogIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUncyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUg dGhlIGVudHJ5LXBvaW50CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxl LmMKK2luZGV4IGFiNTFmYTQuLmJhYmU5Y2YgMTAwNjQ0CistLS0gYS9nZGIvc3ltZmlsZS5jCisr KysgYi9nZGIvc3ltZmlsZS5jCitAQCAtMTA1OSw2ICsxMDU5LDkgQEAgc3ltYm9sX2ZpbGVfYWRk X3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICphYmZkLAorICAgY29uc3QgY2hhciAqbmFtZSA9 IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOworICAgY29uc3QgaW50IGZyb21fdHR5ID0gYWRkX2Zs YWdzICYgU1lNRklMRV9WRVJCT1NFOworIAorKyAgaWYgKHJlYWRub3dfc3ltYm9sX2ZpbGVzKQor KyAgICBmbGFncyB8PSBPQkpGX1JFQUROT1c7CisrCisgICBteV9jbGVhbnVwcyA9IG1ha2VfY2xl YW51cF9iZmRfY2xvc2UgKGFiZmQpOworIAorICAgLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1 cnAgaWYgd2UnZCBiZQorQEAgLTEwOTUsNyArMTA5OCw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRo X2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwKKyAgICAgIHRoZSBnZGIgc3RhcnR1cCBjb21t YW5kIGxpbmUgb3Igb24gYSBwZXIgc3ltYm9sIGZpbGUgYmFzaXMuICBFeHBhbmQKKyAgICAgIGFs bCBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMgZm9yIHRoaXMgb2JqZmlsZSBpZiBzby4gKi8KKyAKKy0g IGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cpIHx8IHJlYWRub3dfc3ltYm9sX2ZpbGVzKQorKyAg aWYgKChmbGFncyAmIE9CSkZfUkVBRE5PVykpCisgICAgIHsKKyAgICAgICBpZiAoZnJvbV90dHkg fHwgaW5mb192ZXJib3NlKQorIAl7CitAQCAtMTUzNSw3ICsxNTM4LDcgQEAgc3ltYm9sX2ZpbGVf Y29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQorIHZvaWQKKyBzZXRfaW5pdGlhbF9s YW5ndWFnZSAodm9pZCkKKyB7CistICBjaGFyICpmaWxlbmFtZTsKKysgIGNvbnN0IGNoYXIgKmZp bGVuYW1lOworICAgZW51bSBsYW5ndWFnZSBsYW5nID0gbGFuZ3VhZ2VfdW5rbm93bjsKKyAKKyAg IGZpbGVuYW1lID0gZmluZF9tYWluX2ZpbGVuYW1lICgpOworQEAgLTI2NjIsNyArMjY2NSw3IEBA IGluaXRfZmlsZW5hbWVfbGFuZ3VhZ2VfdGFibGUgKHZvaWQpCisgfQorIAorIGVudW0gbGFuZ3Vh Z2UKKy1kZWR1Y2VfbGFuZ3VhZ2VfZnJvbV9maWxlbmFtZSAoY2hhciAqZmlsZW5hbWUpCisrZGVk dWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQorIHsKKyAg IGludCBpOworICAgY2hhciAqY3A7CitkaWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuaCBiL2dkYi9z eW1maWxlLmgKK2luZGV4IGQ1M2M0NjUuLjU4MTUzNTQgMTAwNjQ0CistLS0gYS9nZGIvc3ltZmls ZS5oCisrKysgYi9nZGIvc3ltZmlsZS5oCitAQCAtMTcxLDYgKzE3MSwxNSBAQCBzdHJ1Y3QgcXVp Y2tfc3ltYm9sX2Z1bmN0aW9ucworIAkJCQkgICBpbnQga2luZCwgY29uc3QgY2hhciAqbmFtZSwK KyAJCQkJICAgZG9tYWluX2VudW0gZG9tYWluKTsKKyAKKysgIC8qIFRoaXMgaXMgY2FsbGVkIHRv IGV4cGFuZCBzeW1ib2wgdGFibGVzIGJlZm9yZSBsb29raW5nIHVwIGEKKysgICAgIHN5bWJvbC4g IEEgYmFja2VuZCBjYW4gY2hvb3NlIHRvIGltcGxlbWVudCB0aGlzIGFuZCB0aGVuIGhhdmUgaXRz CisrICAgICBgbG9va3VwX3N5bWJvbCcgaG9vayBhbHdheXMgcmV0dXJuIE5VTEwsIG9yIHRoZSBy ZXZlcnNlLiAgKEl0CisrICAgICBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gaW1wbGVtZW50IGJvdGgu KSAgVGhlIGFyZ3VtZW50cyBhcmUgYXMgZm9yCisrICAgICBgbG9va3VwX3N5bWJvbCcuICAqLwor KyAgdm9pZCAoKnByZV9leHBhbmRfc3ltdGFic19tYXRjaGluZykgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAorKwkJCQkgICAgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCisrCQkJCSAg ICAgICBkb21haW5fZW51bSBkb21haW4pOworKworICAgLyogUHJpbnQgc3RhdGlzdGljcyBhYm91 dCBhbnkgaW5kaWNlcyBsb2FkZWQgZm9yIE9CSkZJTEUuICBUaGUKKyAgICAgIHN0YXRpc3RpY3Mg c2hvdWxkIGJlIHByaW50ZWQgdG8gZ2RiX3N0ZG91dC4gIFRoaXMgaXMgdXNlZCBmb3IKKyAgICAg ICJtYWludCBwcmludCBzdGF0aXN0aWNzIi4gICovCitAQCAtMjAxLDcgKzIxMCw3IEBAIHN0cnVj dCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCisgCisgICAvKiBSZXR1cm4gdGhlIGZpbGUgbmFtZSBv ZiB0aGUgZmlsZSBob2xkaW5nIHRoZSBzeW1ib2wgaW4gT0JKRklMRQorICAgICAgbmFtZWQgTkFN RS4gIElmIG5vIHN1Y2ggc3ltYm9sIGV4aXN0cyBpbiBPQkpGSUxFLCByZXR1cm4gTlVMTC4gICov CistICBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwg Y29uc3QgY2hhciAqbmFtZSk7CisrICBjb25zdCBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7CisgCisgICAvKiBUaGlz IG1ldGhvZCBpcyBzcGVjaWZpYyB0byBBZGEuICBJdCB3YWxrcyB0aGUgcGFydGlhbCBzeW1ib2wK KyAgICAgIHRhYmxlcyBvZiBPQkpGSUxFIGxvb2tpbmcgZm9yIGEgbmFtZSBtYXRjaC4gIFdJTERf TUFUQ0ggYW5kCitAQCAtNTY2LDYgKzU3NSw3IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5j cmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lkKTsKKyAKKyBleHRlcm4gaW50IGR3YXJmMl9oYXNf aW5mbyAoc3RydWN0IG9iamZpbGUgKik7CisgCisrZXh0ZXJuIGludCBkd2FyZjJfaW5pdGlhbGl6 ZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKKyBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRf cHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICopOworIGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9m cmFtZV9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKKyAKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlz Yy5jIGIvZ2RiL3N5bW1pc2MuYwogaW5kZXggNjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKIC0tLSBh L2dkYi9zeW1taXNjLmMKQEAgLTU5ODYsMTAgKzEwODA0LDk3IEBAIGluZGV4IDYyZTZiOTcuLjAw ZGM2MTMgMTAwNjQ0CiAgCSAgbXNfdHlwZSA9ICdTJzsKICAJICBicmVhazsKIGRpZmYgLS1naXQg YS9nZGIvc3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKLWluZGV4IDk0NzJjMjQuLjU2MWVlNTAgMTAw NjQ0CitpbmRleCA5NDcyYzI0Li5jM2IxNzkyIDEwMDY0NAogLS0tIGEvZ2RiL3N5bXRhYi5jCiAr KysgYi9nZGIvc3ltdGFiLmMKLUBAIC0yOTE0LDcgKzI5MTQsNyBAQCBzZWFyY2hfc3ltYm9scyAo Y2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1td LAorQEAgLTEyOTUsMTYgKzEyOTUsMjUgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50 IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAorICAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jazsKKyAgIHN0cnVjdCBzeW10YWIgKnM7CisgCistICBBTExfUFJJTUFSWV9TWU1UQUJTIChv YmpmaWxlLCBzKQorKyAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorICAgeworLSAgICBidiA9IEJM T0NLVkVDVE9SIChzKTsKKy0gICAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2Nr X2luZGV4KTsKKy0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRv bWFpbik7CistICAgIGlmIChzeW0pCistICAgICAgeworLQlibG9ja19mb3VuZCA9IGJsb2NrOwor LQlyZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7CistICAgICAgfQor KyAgICBpZiAob2JqZmlsZS0+c2YpCisrICAgICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5k X3N5bXRhYnNfbWF0Y2hpbmcgKG9iamZpbGUsCisrCQkJCQkJICAgIGJsb2NrX2luZGV4LAorKwkJ CQkJCSAgICBuYW1lLCBkb21haW4pOworKworKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpm aWxlLCBzKQorKyAgICAgIGlmIChzLT5wcmltYXJ5KQorKwl7CisrCSAgYnYgPSBCTE9DS1ZFQ1RP UiAocyk7CisrCSAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsK KysJICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKKysJ ICBpZiAoc3ltKQorKwkgICAgeworKwkgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOworKwkgICAg ICByZXR1cm4gZml4dXBfc3ltYm9sX3NlY3Rpb24gKHN5bSwgb2JqZmlsZSk7CisrCSAgICB9Cisr CX0KKyAgIH0KKyAKKyAgIHJldHVybiBOVUxMOworQEAgLTE1NDcsMTUgKzE1NTYsMjQgQEAgYmFz aWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCisgICAgICBvZiB0 aGUgZGVzaXJlZCBuYW1lIGFzIGEgZ2xvYmFsLCB0aGVuIGRvIHBzeW10YWItdG8tc3ltdGFiCisg ICAgICBjb252ZXJzaW9uIG9uIHRoZSBmbHkgYW5kIHJldHVybiB0aGUgZm91bmQgc3ltYm9sLiAg Ki8KKyAKKy0gIEFMTF9QUklNQVJZX1NZTVRBQlMgKG9iamZpbGUsIHMpCisrICBBTExfT0JKRklM RVMgKG9iamZpbGUpCisgICB7CistICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOworLSAgICBibG9j ayA9IEJMT0NLVkVDVE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKKy0gICAgc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOworLSAgICBpZiAo c3ltICYmICFUWVBFX0lTX09QQVFVRSAoU1lNQk9MX1RZUEUgKHN5bSkpKQorLSAgICAgIHsKKy0J cmV0dXJuIFNZTUJPTF9UWVBFIChzeW0pOworLSAgICAgIH0KKysgICAgaWYgKG9iamZpbGUtPnNm KQorKyAgICAgIG9iamZpbGUtPnNmLT5xZi0+cHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChv YmpmaWxlLAorKwkJCQkJCSAgICBHTE9CQUxfQkxPQ0ssCisrCQkJCQkJICAgIG5hbWUsIFNUUlVD VF9ET01BSU4pOworKworKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQorKyAg ICAgIGlmIChzLT5wcmltYXJ5KQorKwl7CisrCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CisrCSAg YmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7CisrCSAgc3ltID0g bG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOworKwkgIGlm IChzeW0gJiYgIVRZUEVfSVNfT1BBUVVFIChTWU1CT0xfVFlQRSAoc3ltKSkpCisrCSAgICB7Cisr CSAgICAgIHJldHVybiBTWU1CT0xfVFlQRSAoc3ltKTsKKysJICAgIH0KKysJfQorICAgfQorIAor ICAgQUxMX09CSkZJTEVTIChvYmpmaWxlKQorQEAgLTE1OTksMTQgKzE2MTcsMTYgQEAgYmFzaWNf bG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIgKm5hbWUpCisgLyogRklYTUU6ICBX aGF0IGFib3V0IGxhbmd1YWdlcyB3aXRob3V0IG1haW4oKSBvciBzcGVjaWFsbHkgbGlua2VkCisg ICAgZXhlY3V0YWJsZXMgdGhhdCBoYXZlIG5vIG1haW4oKSA/ICovCisgCistY2hhciAqCisrY29u c3QgY2hhciAqCisgZmluZF9tYWluX2ZpbGVuYW1lICh2b2lkKQorIHsKKyAgIHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlOworLSAgY2hhciAqcmVzdWx0LCAqbmFtZSA9IG1haW5fbmFtZSAoKTsKKysg IGNoYXIgKm5hbWUgPSBtYWluX25hbWUgKCk7CisgCisgICBBTExfT0JKRklMRVMgKG9iamZpbGUp CisgICB7CisrICAgIGNvbnN0IGNoYXIgKnJlc3VsdDsKKysKKyAgICAgaWYgKCFvYmpmaWxlLT5z ZikKKyAgICAgICBjb250aW51ZTsKKyAgICAgcmVzdWx0ID0gb2JqZmlsZS0+c2YtPnFmLT5maW5k X3N5bWJvbF9maWxlIChvYmpmaWxlLCBuYW1lKTsKK0BAIC0yOTE0LDcgKzI5MzQsNyBAQCBzZWFy Y2hfc3ltYm9scyAoY2hhciAqcmVnZXhwLCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBj aGFyICpmaWxlc1tdLAogICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczNb XQogICAgICA9IHttc3RfZmlsZV9kYXRhLCBtc3Rfc29saWJfdHJhbXBvbGluZSwgbXN0X2Ficywg bXN0X3Vua25vd259OwogICAgc3RhdGljIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczRb XQpAQCAtNTk5OSw3ICsxMDkwNCw3IEBAIGluZGV4IDk0NzJjMjQuLjU2MWVlNTAgMTAwNjQ0CiAg ICBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUgb3VydHlwZTI7CiAgICBlbnVtIG1pbmltYWxfc3lt Ym9sX3R5cGUgb3VydHlwZTM7CiBkaWZmIC0tZ2l0IGEvZ2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRh Yi5oCi1pbmRleCBiZWRjMTBhLi5mNWRkY2IxIDEwMDY0NAoraW5kZXggYmVkYzEwYS4uZGMyODRl NCAxMDA2NDQKIC0tLSBhL2dkYi9zeW10YWIuaAogKysrIGIvZ2RiL3N5bXRhYi5oCiBAQCAtMjc3 LDYgKzI3Nyw5IEBAIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZQpAQCAtNjA0OSw2ICsxMDk1NCwy NCBAQCBpbmRleCBiZWRjMTBhLi5mNWRkY2IxIDEwMDY0NAogIGV4dGVybiBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKgogICAgICBsb29rdXBfbWluaW1hbF9zeW1ib2xfYW5kX29iamZpbGUgKGNvbnN0 IGNoYXIgKiwKICAJCQkJICAgICAgIHN0cnVjdCBvYmpmaWxlICoqKTsKK0BAIC0xMTM3LDcgKzEx NTYsNyBAQCBleHRlcm4gY2hhciAqKm1ha2Vfc291cmNlX2ZpbGVzX2NvbXBsZXRpb25fbGlzdCAo Y2hhciAqLCBjaGFyICopOworIAorIGludCBtYXRjaGluZ19vYmpfc2VjdGlvbnMgKHN0cnVjdCBv Ympfc2VjdGlvbiAqLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKik7CisgCistZXh0ZXJuIGNoYXIgKmZp bmRfbWFpbl9maWxlbmFtZSAodm9pZCk7CisrZXh0ZXJuIGNvbnN0IGNoYXIgKmZpbmRfbWFpbl9m aWxlbmFtZSAodm9pZCk7CisgCisgZXh0ZXJuIHN0cnVjdCBzeW10YWIgKmZpbmRfbGluZV9zeW10 YWIgKHN0cnVjdCBzeW10YWIgKiwgaW50LCBpbnQgKiwgaW50ICopOworIAorQEAgLTExNTAsNyAr MTE2OSw3IEBAIGV4dGVybiB2b2lkIHNraXBfcHJvbG9ndWVfc2FsIChzdHJ1Y3Qgc3ltdGFiX2Fu ZF9saW5lICopOworIAorIGV4dGVybiB2b2lkIGNsZWFyX3N5bXRhYl91c2VycyAodm9pZCk7Cisg CistZXh0ZXJuIGVudW0gbGFuZ3VhZ2UgZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNo YXIgKik7CisrZXh0ZXJuIGVudW0gbGFuZ3VhZ2UgZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5h bWUgKGNvbnN0IGNoYXIgKik7CisgCisgLyogc3ltdGFiLmMgKi8KKyAKIGRpZmYgLS1naXQgYS9n ZGIvdGFyZ2V0LmMgYi9nZGIvdGFyZ2V0LmMKIGluZGV4IDg2MmRmNGUuLmE4ZjFiZGQgMTAwNjQ0 CiAtLS0gYS9nZGIvdGFyZ2V0LmMKQEAgLTYxMDksNyArMTEwMzIsNyBAQCBpbmRleCA4NjJkZjRl Li5hOGYxYmRkIDEwMDY0NAogICAgY3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJl c3MgPSBkZWJ1Z190b19zdG9wcGVkX2RhdGFfYWRkcmVzczsKICAgIGN1cnJlbnRfdGFyZ2V0LnRv X3dhdGNocG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJf d2l0aGluX3JhbmdlOwogZGlmZiAtLWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAot aW5kZXggM2M4YzAxNy4uZTk1MDNkZSAxMDA2NDQKK2luZGV4IDNjOGMwMTcuLjYwOGE3NDIgMTAw NjQ0CiAtLS0gYS9nZGIvdGFyZ2V0LmgKICsrKyBiL2dkYi90YXJnZXQuaAogQEAgLTQzMyw2ICs0 MzMsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwpAQCAtNjEzNiw2ICsxMTA1OSwyNSBAQCBpbmRleCAz YzhjMDE3Li5lOTUwM2RlIDEwMDY0NAogICNkZWZpbmUgdGFyZ2V0X2luc2VydF9od19icmVha3Bv aW50KGdkYmFyY2gsIGJwX3RndCkgXAogICAgICAgKCpjdXJyZW50X3RhcmdldC50b19pbnNlcnRf aHdfYnJlYWtwb2ludCkgKGdkYmFyY2gsIGJwX3RndCkKICAKK0BAIC0xMzY5LDYgKzEzNzksMTgg QEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21lbW9yeSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUxPTkdFU1QgcGF0dGVybl9sZW4s CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09SRV9BRERSICpmb3VuZF9hZGRy cCk7CisgCisrLyogVXRpbGl0eSBmdW5jdGlvbnMgd2hpY2ggY2FuIGJlIHVzZWQgYnkgc2VhcmNo X21lbW9yeSBpbXBsZW1lbnRhdGlvbnMuICAqLworKworK3ZvaWQgYWxsb2NhdGVfcGF0dGVybl9i dWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZnAsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCisrCQkJ ICAgICAgVUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUpOworKworK3ZvaWQgaW5jcmVhc2VfcGF0 dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZnAsIGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQs CisrCQkJICAgICAgVUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUsIGludCB2YWxfYnl0ZXMpOwor KworK2ludCBzZWFyY2hfbWVtb3J5IChDT1JFX0FERFIgKnN0YXJ0X2FkZHIsIFVMT05HRVNUICpz ZWFyY2hfc3BhY2VfbGVuLAorKwkJICAgY29uc3QgY2hhciAqcGF0dGVybl9idWYsIFVMT05HRVNU IHBhdHRlcm5fbGVuLAorKwkJICAgQ09SRV9BRERSICpmb3VuZF9hZGRyKTsKKysKKyAvKiBUcmFj ZXBvaW50LXJlbGF0ZWQgb3BlcmF0aW9ucy4gICovCisgCisgI2RlZmluZSB0YXJnZXRfdHJhY2Vf aW5pdCgpIFwKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEt cG9pbnRlci1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LWZvby5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uODNmYWFmNgpAQCAt OTI2Nyw2ICsxNDIwOSwyMSBAQCBpbmRleCAwMDAwMDAwLi4yMjZkYzVkCiArICBoID0gJ2gnCiAr ICBjYWxsIGZvbyAoZywgaCkKICtlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5n ZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAoraW5k ZXggMWFlZDI1Mi4uNTkzYWE1NSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9z ZWxmdGVzdC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKK0BA IC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9uZXh0cyB7fSB7CisgCQlzZXQgZGVz Y3JpcHRpb24gInN0ZXAgb3ZlciB0dHlhcmcgaW5pdGlhbGl6YXRpb24iCisgCQlzZXQgY29tbWFu ZCAic3RlcCIKKyAJICAgIH0KKysJICAgIC1yZSAiLipweXRob25fc2NyaXB0ID0gMC4qJGdkYl9w cm9tcHQgJCIgeworKwkJc2V0IGRlc2NyaXB0aW9uICJzdGVwIG92ZXIgcHl0aG9uX3NjcmlwdCBp bml0aWFsaXphdGlvbiIKKysJCXNldCBjb21tYW5kICJzdGVwIgorKwkgICAgfQorIAkgICAgLXJl ICIuKnByZV9zdGF0X2NoYWluID0gbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFudXAuKiRnZGJfcHJv bXB0ICQiIHsKKyAJCXNldCBkZXNjcmlwdGlvbiAibmV4dCBvdmVyIG1ha2VfY29tbWFuZF9zdGF0 c19jbGVhbnVwIGFuZCBldmVyeXRoaW5nIGl0IGNhbGxzIgorIAkJc2V0IGNvbW1hbmQgIm5leHQi CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmphdmEvam5wZS5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAw MDAwLi41NWFhODBkCkBAIC05NzcxLDYgKzE0NzI4LDEyNCBAQCBpbmRleCAwMDAwMDAwLi4yOTU2 MDJkCiArICBzIDo9ICd0ZXN0JyMwJ3N0cmluZyc7CiArICB3cml0ZWxuKHMpOyB7IHNldCBicmVh a3BvaW50IDIgaGVyZSB9CiArZW5kLgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1jbWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAKK2lu ZGV4IDBmMjUwZDIuLjg0ZTUwMzggMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktY21kLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAK K0BAIC0yMCwyNCArMjAsNiBAQCBpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKyAgICAgc3RyYWNlICR0 cmFjZWxldmVsCisgfQorIAorLSMgVXNhZ2U6IGdkYl9weV90ZXN0X211bHRpcGxlIE5BTUUgSU5Q VVQgUkVTVUxUIHtJTlBVVCBSRVNVTFR9Li4uCistIyBSdW4gYSB0ZXN0IG5hbWVkIE5BTUUsIGNv bnNpc3Rpbmcgb2YgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQuCistIyBBZnRlciBlYWNoIGlucHV0 IGxpbmUgSU5QVVQsIHNlYXJjaCBmb3IgcmVzdWx0IGxpbmUgUkVTVUxULgorLSMgU3VjY2VlZCBp ZiBhbGwgcmVzdWx0cyBhcmUgc2VlbjsgZmFpbCBvdGhlcndpc2UuCistcHJvYyBnZGJfcHlfdGVz dF9tdWx0aXBsZSB7bmFtZSBhcmdzfSB7CistICAgIGdsb2JhbCBnZGJfcHJvbXB0CistICAgIGZv cmVhY2gge2lucHV0IHJlc3VsdH0gJGFyZ3MgeworLQlpZiB7W2dkYl90ZXN0X211bHRpcGxlICRp bnB1dCAiJG5hbWUgLSAkaW5wdXQiIHsKKy0JICAgIC1yZSAiXFtcclxuXF0qKCRyZXN1bHQpXFtc clxuXF0rKCRnZGJfcHJvbXB0IHwgKj4pJCIgeworLQkJcGFzcyAiJG5hbWUgLSAkaW5wdXQiCist CSAgICB9CistCX1dfSB7CistCSAgICByZXR1cm4gMQorLQl9CistICAgIH0KKy0gICAgcmV0dXJu IDAKKy19CistCisgIyBTdGFydCB3aXRoIGEgZnJlc2ggZ2RiLgorIAorIGdkYl9leGl0CitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKK2luZGV4IGUxMjEyZDMuLjc3ZjQ0ZjUgMTAw NjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCitAQCAtODksOCArODksNiBAQCBn ZGJfcHlfdGVzdF9zaWxlbnRfY21kICJweXRob24gZjAgPSBmMS5uZXdlciAoKSIgImdldCBmaXJz dCBmcmFtZSIgMAorIAorIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0g ZjEiICIgPSBGYWxzZSIgInRlc3QgZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgorIGdkYl90 ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgPT0gZjAiICIgPSBUcnVlIiAidGVzdCBl cXVhbGl0eSBjb21wYXJpc29uICh0cnVlKSIKKy1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1 bHQgPScsIGYwICE9IGYxIiAiID0gVHJ1ZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29uICh0 cnVlKSIKKy1nZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwICE9IGYwIiAiID0g RmFsc2UiICJ0ZXN0IGluZXF1YWxpdHkgY29tcGFyaXNvbiAoZmFsc2UpIgorIGdkYl90ZXN0ICJw eXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQgKCkiICIgPSBUcnVlIiAidGVzdCBG cmFtZS5pc192YWxpZCIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLm5h bWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKKyBnZGJfdGVzdCAicHl0aG9uIHByaW50 ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1BTF9GUkFNRSIgIiA9IFRydWUiICJ0 ZXN0IEZyYW1lLnR5cGUiCitAQCAtMTA1LDMgKzEwMyw1IEBAIGdkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAucmVhZF92YXIgKCd2YXJpYWJsZV93aGljaF9zdXJlbHlfZG9lc250 X2V4CisgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAoJ2En KSIgIiA9IDEiICJ0ZXN0IEZyYW1lLnJlYWRfdmFyIC0gc3VjY2VzcyIKKyAKKyBnZGJfdGVzdCAi cHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGdkYi5zZWxlY3RlZF9mcmFtZSAoKSA9PSBmMSIgIiA9 IFRydWUiICJ0ZXN0IGdkYi5zZWxlY3RlZF9mcmFtZSIKKysKKytnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwLmJsb2NrICgpIiAiPGdkYi5CbG9jayBvYmplY3QgYXQgMHhcW1xb OnhkaWdpdDpcXVxdKz4iICJ0ZXN0IEZyYW1lLmJsb2NrIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1mdW5jdGlvbi5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRo b24vcHktZnVuY3Rpb24uZXhwCitpbmRleCAzOGM1NjkzLi5lN2YwMDM3IDEwMDY0NAorLS0tIGEv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cAorQEAgLTIwLDI0ICsyMCw2IEBAIGlmICR0 cmFjZWxldmVsIHRoZW4geworICAgICBzdHJhY2UgJHRyYWNlbGV2ZWwKKyB9CisgCistIyBVc2Fn ZTogZ2RiX3B5X3Rlc3RfbXVsdGlwbGUgTkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0u Li4KKy0jIFJ1biBhIHRlc3QgbmFtZWQgTkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5l cyBvZiBpbnB1dC4KKy0jIEFmdGVyIGVhY2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciBy ZXN1bHQgbGluZSBSRVNVTFQuCistIyBTdWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBm YWlsIG90aGVyd2lzZS4KKy1wcm9jIGdkYl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsK Ky0gICAgZ2xvYmFsIGdkYl9wcm9tcHQKKy0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJn cyB7CistCWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewor LQkgICAgLXJlICJcW1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikk IiB7CistCQlwYXNzICIkbmFtZSAtICRpbnB1dCIKKy0JICAgIH0KKy0JfV19IHsKKy0JICAgIHJl dHVybiAxCistCX0KKy0gICAgfQorLSAgICByZXR1cm4gMAorLX0KKy0KKyAjIFN0YXJ0IHdpdGgg YSBmcmVzaCBnZGIuCisgCisgZ2RiX2V4aXQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktcHJldHR5cHJpbnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXByZXR0eXByaW50LmV4cAoraW5kZXggM2IyYWFkZC4uMDNiYmYzZSAxMDA2NDQKKy0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAKK0BAIC0xMDIsNiArMTAyLDggQEAg cHJvYyBydW5fbGFuZ190ZXN0cyB7bGFuZ30geworICAgICBnZGJfdGVzdCAicHJpbnQgZXN0cmlu ZyIgIlwiZW1iZWRkZWQgeFxcXFwyMDFcXFxcMjAyXFxcXDIwM1xcXFwyMDRcIiIKKyAgICAgZ2Ri X3Rlc3QgInByaW50IGMiICIgPSBjb250YWluZXIgXCJjb250YWluZXJcIiB3aXRoIDIgZWxlbWVu dHMgPSB7JG5sICouMC4gPSAyMywkbmwgKi4xLiA9IDcyJG5sfSIKKyAKKysgICAgZ2RiX3Rlc3Qg InByaW50IG51bGxzdHIiICJSdW50aW1lRXJyb3I6IEVycm9yIHJlYWRpbmcgc3RyaW5nIGZyb20g aW5mZXJpb3IuKiIKKysKKyAgICAgZ2RiX3Rlc3QgInByaW50IG5zdHlwZSIgIiA9IHskbmwgKi4w LiA9IDcsJG5sICouMS4gPSA0MiRubH0iCisgICAgIGdkYl90ZXN0ICJjb250aW51ZSIgIlByb2dy YW0gZXhpdGVkIG5vcm1hbGx5XC4iCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3B5LXZhbHVlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5l eHAKK2luZGV4IGEyNGJjMTEuLmUzMDQzYmMgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHktdmFsdWUuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt dmFsdWUuZXhwCitAQCAtMzEzLDYgKzMxMywxNSBAQCBwcm9jIHRlc3RfdmFsdWVfYWZ0ZXJfZGVh dGgge30geworICAgICAicHJpbnQgdmFsdWUncyB0eXBlIgorIH0KKyAKKysjIFJlZ3Jlc3Npb24g dGVzdCBmb3IgYSBjYXN0IGZhaWx1cmUuICBUaGUgYnVnIHdhcyB0aGF0IGlmIHdlIGNhc3QgYQor KyMgdmFsdWUgdG8gaXRzIG93biB0eXBlLCBnZGIgY291bGQgY3Jhc2guICBUaGlzIGhhcHBlbmVk IGJlY2F1c2Ugd2UKKysjIGNvdWxkIGVuZCB1cCBkb3VibGUtZnJlZWluZyBhIHN0cnVjdCB2YWx1 ZS4KKytwcm9jIHRlc3RfY2FzdF9yZWdyZXNzaW9uIHt9IHsKKysgIGdkYl90ZXN0ICJweXRob24g diA9IGdkYi5WYWx1ZSg1KSIgIiIgImNyZWF0ZSB2YWx1ZSBmb3IgY2FzdCB0ZXN0IgorKyAgZ2Ri X3Rlc3QgInB5dGhvbiB2ID0gdi5jYXN0KHYudHlwZSkiICIiICJjYXN0IHZhbHVlIGZvciBjYXN0 IHRlc3QiCisrICBnZGJfdGVzdCAicHl0aG9uIHByaW50IHYiICI1IiAicHJpbnQgdmFsdWUgZm9y IGNhc3QgdGVzdCIKKyt9CisrCisgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGludmFsaWQgc3Vic2Ny aXB0IG9wZXJhdGlvbnMuICBUaGUgYnVnIHdhcyB0aGF0CisgIyB0aGUgdHlwZSBvZiB0aGUgdmFs dWUgd2FzIG5vdCBiZWluZyBjaGVja2VkIGJlZm9yZSBhbGxvd2luZyBhCisgIyBzdWJzY3JpcHQg b3BlcmF0aW9uIHRvIHByb2NlZWQuCitAQCAtNDM3LDYgKzQ0Niw3IEBAIGlmICFbcnVudG9fbWFp bl0gdGhlbiB7CisgdGVzdF92YWx1ZV9pbl9pbmZlcmlvcgorIHRlc3RfbGF6eV9zdHJpbmdzCisg dGVzdF92YWx1ZV9hZnRlcl9kZWF0aAorK3Rlc3RfY2FzdF9yZWdyZXNzaW9uCisgCisgIyBUaGUg Zm9sbG93aW5nIHRlc3QgcmVjb21waWxlcyB0aGUgYmluYXJ5IHRvIHRlc3QgZWl0aGVyIEMgb3Ig QysrCisgIyB2YWx1ZXMuIAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv d2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0 Y2hwb2ludC1mb3JrLWZvcmtvZmYuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAw MDAuLjRkYzMwOGIKQEAgLTEwMzE0LDYgKzE1Mzg5LDE4IEBAIGluZGV4IDAwMDAwMDAuLjFkYzkz YWIKICtpZiB7W2lzdGFyZ2V0ICIqLSotbGludXgqIl19IHsKICsgICAgdGVzdCBjaGlsZCBGT0xM T1dfQ0hJTEQKICt9CitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK2luZGV4IGI1YjMzNjIuLmQ5MTZlOTQgMTAwNjQ0Cist LS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwCitAQCAtMjcsNiArMjcsNyBAQCBpZiB7JHRvb2wgPT0gIiJ9IHsKKyB9CisgCisgbG9h ZF9saWIgbGliZ2xvc3MuZXhwCisrbG9hZF9saWIgcHl0aG9uLXN1cHBvcnQuZXhwCisgCisgZ2xv YmFsIEdEQgorIAogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAgYi9n ZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCiBpbmRleCA5NjkxYmMxLi4xM2VhOGI1IDEwMDY0 NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cApAQCAtMTAzNDksNiArMTU0MzYs NjUgQEAgaW5kZXggOTY5MWJjMS4uMTNlYThiNSAxMDA2NDQKICAgICAgfQogICAgICBzZXQgcGFz Y2FsX2luaXRfZG9uZSAxCiAgfSAgIAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL3B5 dGhvbi1zdXBwb3J0LmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAor bmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI4ZTk4MzYKKy0tLSAvZGV2L251 bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvbGliL3B5dGhvbi1zdXBwb3J0LmV4cAorQEAgLTAsMCAr MSw1MyBAQAorK2dsb2JhbCBweXRob25fc3VwcG9ydGVkX3NhdmVkCisrCisrIyBSZXR1cm4gMSBp ZiBQeXRob24gc2NyaXB0aW5nIGlzIHN1cHBvcnRlZCBpbiBHREIsIDAgaWYgbm90LgorK3Byb2Mg cHl0aG9uX3N1cHBvcnRlZCB7IH0geworKyAgZ2xvYmFsIGdkYl9wcm9tcHQKKysgIGdsb2JhbCBw eXRob25fc3VwcG9ydGVkX3NhdmVkCisrCisrICBpZiBbaW5mbyBleGlzdHMgcHl0aG9uX3N1cHBv cnRlZF9zYXZlZF0geworKyAgICAgIHZlcmJvc2UgInB5dGhvbl9zdXBwb3J0ZWQ6ICByZXR1cm5p bmcgc2F2ZWQgJHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQiIDIKKysgICAgICByZXR1cm4gJHB5dGhv bl9zdXBwb3J0ZWRfc2F2ZWQKKysgIH0KKysKKysgIGdkYl90ZXN0X211bHRpcGxlICJweXRob24g cHJpbnQgJ2hlbGxvLCB3b3JsZCEnIiAidmVyaWZ5IHB5dGhvbiBzdXBwb3J0IiB7CisrICAgIC1y ZSAibm90IHN1cHBvcnRlZC4qJGdkYl9wcm9tcHQgJCIJeworKyAgICAgIHJldHVybiBbc2V0IHB5 dGhvbl9zdXBwb3J0ZWRfc2F2ZWQgMF0KKysgICAgfQorKyAgICAtcmUgIiRnZGJfcHJvbXB0ICQi CXsKKysgICAgICByZXR1cm4gW3NldCBweXRob25fc3VwcG9ydGVkX3NhdmVkIDFdCisrICAgIH0K KysgIH0KKysKKysgIHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQgMF0KKyt9Cisr CisrIyBSdW4gYSBjb21tYW5kIGluIEdEQiwgYW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRo b24gZXhjZXB0aW9uIGlzIHRocm93bi4KKysjIElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9y dCBhIHBhc3MgaWYgbm8gZXhjZXB0aW9uIGlzIHRocm93bi4KKytwcm9jIGdkYl9weV90ZXN0X3Np bGVudF9jbWQge2NtZCBuYW1lIHJlcG9ydF9wYXNzfSB7CisrICBnbG9iYWwgZ2RiX3Byb21wdAor KworKyAgZ2RiX3Rlc3RfbXVsdGlwbGUgJGNtZCAkbmFtZSB7CisrICAgICAgLXJlICJUcmFjZWJh Y2suKiRnZGJfcHJvbXB0ICQiICB7IGZhaWwgJG5hbWUgfQorKyAgICAgIC1yZSAiJGdkYl9wcm9t cHQgJCIJICAgICAgeyBpZiAkcmVwb3J0X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQorKyAgfQorK30K KysKKysjIFVzYWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5Q VVQgUkVTVUxUfS4uLgorKyMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11 bHRpcGxlIGxpbmVzIG9mIGlucHV0LgorKyMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBz ZWFyY2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VMVC4KKysjIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMg YXJlIHNlZW47IGZhaWwgb3RoZXJ3aXNlLgorK3Byb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25h bWUgYXJnc30geworKyAgICBnbG9iYWwgZ2RiX3Byb21wdAorKworKyAgICBmb3JlYWNoIHtpbnB1 dCByZXN1bHR9ICRhcmdzIHsKKysJaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1l IC0gJGlucHV0IiB7CisrCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2Ri X3Byb21wdCB8ICo+KSQiIHsKKysJCXBhc3MgIiRuYW1lIC0gJGlucHV0IgorKwkgICAgfQorKwl9 XX0geworKwkgICAgcmV0dXJuIDEKKysJfQorKyAgICB9CisrICAgIHJldHVybiAwCisrfQogZGlm ZiAtLWdpdCBhL2dkYi90aHJlYWQuYyBiL2dkYi90aHJlYWQuYwogaW5kZXggMmZkYzdmOS4uMmE1 ZDBmMSAxMDA2NDQKIC0tLSBhL2dkYi90aHJlYWQuYwoKZGlmZiAtLWdpdCBhL2dkYi1iejU3NTI5 Mi1kZWxheWVkLXBoeXNuYW1lLnBhdGNoIGIvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUu cGF0Y2gKaW5kZXggNWU2NTk3NC4uZTE1MzkxZCAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTc1MjkyLWRl bGF5ZWQtcGh5c25hbWUucGF0Y2gKKysrIGIvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUu cGF0Y2gKQEAgLTksMTEgKzksMTEgQEAgTmVpdGhlciBpdHMgb2JzdGFjay1sZWFrLnBhdGNoIG5v cgogCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA1L21zZzAwMjcx Lmh0bWwKIGlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxpc3QgaXMgdXNlZCBpbnN0ZWFkLgogCi1J bmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMyAwMDozNDowMC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAx MC0wNy0xMyAyMjoyNToxOC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMTYsNiArMjE2LDI4IEBAIHN0 cnVjdCBjb21wX3VuaXRfaGVhZAorLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvZHdh cmYycmVhZC5jCTIwMTAtMDctMjIgMTE6NTk6MTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu MS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjIgMTI6MDA6MDguMDAwMDAw MDAwICswMjAwCitAQCAtMjUzLDYgKzI1MywyOCBAQCBzdHJ1Y3QgY29tcF91bml0X2hlYWQKICAg IHVuc2lnbmVkIGludCBmaXJzdF9kaWVfb2Zmc2V0OwogIH07CiAgCkBAIC00Miw3ICs0Miw3IEBA IEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAvKiBJbnRlcm5h bCBzdGF0ZSB3aGVuIGRlY29kaW5nIGEgcGFydGljdWxhciBjb21waWxhdGlvbiB1bml0LiAgKi8K ICBzdHJ1Y3QgZHdhcmYyX2N1CiAgewotQEAgLTI5NCw2ICszMTYsMTAgQEAgc3RydWN0IGR3YXJm Ml9jdQorQEAgLTMzMSw2ICszNTMsMTAgQEAgc3RydWN0IGR3YXJmMl9jdQogICAgLyogSGVhZGVy IGRhdGEgZnJvbSB0aGUgbGluZSB0YWJsZSwgZHVyaW5nIGZ1bGwgc3ltYm9sIHByb2Nlc3Npbmcu ICAqLwogICAgc3RydWN0IGxpbmVfaGVhZGVyICpsaW5lX2hlYWRlcjsKICAKQEAgLTUzLDE3ICs1 MywxNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgICAv KiBNYXJrIHVzZWQgd2hlbiByZWxlYXNpbmcgY2FjaGVkIGRpZXMuICAqLwogICAgdW5zaWduZWQg aW50IG1hcmsgOiAxOwogIAotQEAgLTExNDIsNiArMTE2OCw5IEBAIHN0YXRpYyBzdHJ1Y3QgdHlw ZSAqZ2V0X2RpZV90eXBlIChzdHJ1Y3QKLSBzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uICpkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uCi0gICAoc3RydWN0IGF0dHJpYnV0ZSAq YXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpOworQEAgLTEyMzksNiArMTI2NSw5IEBAIHN0YXRp YyBnZGJfYnl0ZSAqcGFydGlhbF9yZWFkX2NvbXBfdW5pdF8KKyBzdGF0aWMgdm9pZCBpbml0X2N1 X2RpZV9yZWFkZXIgKHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCisgCQkJCXN0cnVj dCBkd2FyZjJfY3UgKmN1KTsKICAKICtzdGF0aWMgY29uc3QgY2hhciAqZHdhcmYyX3BoeXNuYW1l IChjaGFyICpuYW1lLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICsJCQkJICAgIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KTsKICsKLSAvKiBUcnkgdG8gbG9jYXRlIHRoZSBzZWN0aW9ucyB3ZSBuZWVkIGZv ciBEV0FSRiAyIGRlYnVnZ2luZwotICAgIGluZm9ybWF0aW9uIGFuZCByZXR1cm4gdHJ1ZSBpZiB3 ZSBoYXZlIGVub3VnaCB0byBkbyBzb21ldGhpbmcuICAqLworICNpZiBXT1JEU19CSUdFTkRJQU4K ICAKLUBAIC0zMTM3LDYgKzMxNjYsNTggQEAgbG9hZF9mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3 YXJmMl9wZXJfYworIC8qIENvbnZlcnQgVkFMVUUgYmV0d2VlbiBiaWctIGFuZCBsaXR0bGUtZW5k aWFuLiAgKi8KK0BAIC00MTAzLDYgKzQxMzIsNTggQEAgbG9hZF9mdWxsX2NvbXBfdW5pdCAoc3Ry dWN0IGR3YXJmMl9wZXJfYwogICAgZGlzY2FyZF9jbGVhbnVwcyAoZnJlZV9jdV9jbGVhbnVwKTsK ICB9CiAgCkBAIC0xMjIsOCArMTIyLDggQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L2R3YXJmMnJlYWQuYwogIC8qIEdlbmVyYXRlIGZ1bGwgc3ltYm9sIGluZm9ybWF0aW9uIGZvciBQ U1QgYW5kIENVLCB3aG9zZSBESUVzIGhhdmUKICAgICBhbHJlYWR5IGJlZW4gbG9hZGVkIGludG8g bWVtb3J5LiAgKi8KICAKLUBAIC0zMTQ4LDcgKzMyMjksNyBAQCBwcm9jZXNzX2Z1bGxfY29tcF91 bml0IChzdHJ1Y3QgZHdhcmYyX3BlCi0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBzdC0+ b2JqZmlsZTsKK0BAIC00MTEzLDcgKzQxOTQsNyBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChz dHJ1Y3QgZHdhcmYyX3BlCisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+b2Jq ZmlsZTsKICAgIENPUkVfQUREUiBsb3dwYywgaGlnaHBjOwogICAgc3RydWN0IHN5bXRhYiAqc3lt dGFiOwogLSAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CkBAIC0xMzEsNyArMTMxLDcgQEAgSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogICAgQ09SRV9BRERSIGJh c2VhZGRyOwogIAogICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZz ZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7Ci1AQCAtMzE1OCwxMSArMzIzOSwyMiBAQCBw cm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCitAQCAtNDEyMywxMSArNDIw NCwyMiBAQCBwcm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCiAgCiAgICBj dS0+bGlzdF9pbl9zY29wZSA9ICZmaWxlX3N5bWJvbHM7CiAgCkBAIC0xNTQsNyArMTU0LDcgQEAg SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogICAgLyogU29tZSBj b21waWxlcnMgZG9uJ3QgZGVmaW5lIGEgRFdfQVRfaGlnaF9wYyBhdHRyaWJ1dGUgZm9yIHRoZQog ICAgICAgY29tcGlsYXRpb24gdW5pdC4gIElmIHRoZSBEV19BVF9oaWdoX3BjIGlzIG1pc3Npbmcs IHN5bnRoZXNpemUKICAgICAgIGl0LCBieSBzY2FubmluZyB0aGUgRElFJ3MgYmVsb3cgdGhlIGNv bXBpbGF0aW9uIHVuaXQuICAqLwotQEAgLTQ4NTQsNyArNDk0Niw2IEBAIGR3YXJmMl9hZGRfbWVt YmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKK0BAIC01ODM4LDcgKzU5MzAsNiBAQCBkd2FyZjJf YWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCiAgICBpbnQgaTsKICAgIHN0cnVjdCBm bl9maWVsZCAqZm5wOwogICAgY2hhciAqZmllbGRuYW1lOwpAQCAtMTYyLDcgKzE2Miw3IEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAgIHN0cnVjdCBuZXh0 Zm5maWVsZCAqbmV3X2ZuZmllbGQ7CiAgICBzdHJ1Y3QgdHlwZSAqdGhpc190eXBlOwogIAotQEAg LTQ4NjYsOSArNDk1Nyw2IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5m byAKK0BAIC01ODUwLDkgKzU5NDEsNiBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZp ZWxkX2luZm8gCiAgICBpZiAoZmllbGRuYW1lID09IE5VTEwpCiAgICAgIHJldHVybjsKICAKQEAg LTE3Miw3ICsxNzIsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVh ZC5jCiAgICAvKiBMb29rIHVwIG1lbWJlciBmdW5jdGlvbiBuYW1lIGluIGZpZWxkbGlzdC4gICov CiAgICBmb3IgKGkgPSAwOyBpIDwgZmlwLT5uZm5maWVsZHM7IGkrKykKICAgICAgewotQEAgLTQ4 OTQsNyArNDk4Miw3IEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAK K0BAIC01ODc4LDcgKzU5NjYsNyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxk X2luZm8gCiAgICAgICAgZmxwLT5uYW1lID0gZmllbGRuYW1lOwogICAgICAgIGZscC0+bGVuZ3Ro ID0gMDsKICAgICAgICBmbHAtPmhlYWQgPSBOVUxMOwpAQCAtMTgxLDcgKzE4MSw3IEBAIEluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAgICAgfQogIAogICAgLyog Q3JlYXRlIGEgbmV3IG1lbWJlciBmdW5jdGlvbiBmaWVsZCBhbmQgY2hhaW4gaXQgdG8gdGhlIGZp ZWxkIGxpc3QKLUBAIC00OTA4LDkgKzQ5OTYsMTkgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0 cnVjdCBmaWVsZF9pbmZvIAorQEAgLTU4OTIsOSArNTk4MCwxOSBAQCBkd2FyZjJfYWRkX21lbWJl cl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCiAgCiAgICAvKiBGaWxsIGluIHRoZSBtZW1iZXIgZnVu Y3Rpb24gZmllbGQgaW5mby4gICovCiAgICBmbnAgPSAmbmV3X2ZuZmllbGQtPmZuZmllbGQ7CkBA IC0yMDQsNyArMjA0LDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJl YWQuYwogICAgZm5wLT50eXBlID0gYWxsb2NfdHlwZSAob2JqZmlsZSk7CiAgICB0aGlzX3R5cGUg PSByZWFkX3R5cGVfZGllIChkaWUsIGN1KTsKICAgIGlmICh0aGlzX3R5cGUgJiYgVFlQRV9DT0RF ICh0aGlzX3R5cGUpID09IFRZUEVfQ09ERV9GVU5DKQotQEAgLTQ5MzYsNyArNTAzNCw3IEBAIGR3 YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKK0BAIC01OTIwLDcgKzYwMTgs NyBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCiAgICAgIH0KICAg IGVsc2UKICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJtZW1iZXIgZnVu Y3Rpb24gdHlwZSBtaXNzaW5nIGZvciAnJXMnIiksCkBAIC0yMTMsNyArMjEzLDcgQEAgSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgLyogR2V0IGZjb250 ZXh0IGZyb20gRFdfQVRfY29udGFpbmluZ190eXBlIGlmIHByZXNlbnQuICAqLwogICAgaWYgKGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvbnRhaW5pbmdfdHlwZSwgY3UpICE9IE5VTEwpCi1AQCAt NzMxNSw3ICs3NDEzLDkgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUg KgorQEAgLTgyOTksNyArODM5Nyw5IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdk Yl9ieXRlICoKICAJCSAgICAgIHx8IGxhc3RfZGllLT50YWcgPT0gRFdfVEFHX2ludGVyZmFjZV90 eXBlCiAgCQkgICAgICB8fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19zdHJ1Y3R1cmVfdHlwZQog IAkJICAgICAgfHwgbGFzdF9kaWUtPnRhZyA9PSBEV19UQUdfdW5pb25fdHlwZSkpCkBAIC0yMjQs MTAgKzIyNCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5j CiAgCQkgICYmIChsYXN0X2RpZS0+dGFnID09IERXX1RBR19zdWJwcm9ncmFtCiAgCQkgICAgICB8 fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19sZXhpY2FsX2Jsb2NrKSkpKQogIAl7Ci1JbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCitJ bmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2 NS5TCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAw MDAwICswMDAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvcHIxMTQ2NS5TCTIwMTAtMDctMTMgMjI6MjQ6NDguMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCTIwMTAt MDctMjIgMTE6NTk6MjkuMDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM1NSBAQAogKy8qIENv cHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKwpAQCAtNTg0LDEw ICs1ODQsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL3ByMTE0NjUuUwogKy5MQVNGNDoKICsJLnN0cmluZwkiR05VIEMrKyA0LjQuMiIKICsJ LmlkZW50CSJHQ0M6IChHTlUpIDQuNC4yIgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCitJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcyMS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9wcjExNDY1LmV4cAkyMDEw LTA3LTEzIDIyOjI0OjQ4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjEuOTAuMjAxMDA3MjEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCTIwMTAtMDctMjIgMTE6NTk6Mjku MDAwMDAwMDAwICswMjAwCiBAQCAtMCwwICsxLDM5IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItZ2RiLWFkZC1p bmRleC1zY3JpcHQucGF0Y2ggYi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKbmV3IGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTIyZTM3ZAotLS0gL2Rldi9udWxsCisrKyBi L2dkYi1nZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDExOSBAQAoraHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDcvbXNnMDAxODQuaHRtbAorU3Vi amVjdDogUmU6IFswLzRdIFJGQzogYWRkIERXQVJGIGluZGV4IHN1cHBvcnQKKworPj4+Pj4gIlRv bSIgPT0gVG9tIFRyb21leSA8dHJvbWV5QHJlZGhhdC5jb20+IHdyaXRlczoKKworVG9tPiBUaGlz IHBhdGNoIHNlcmllcyBhZGRzIHN1cHBvcnQgZm9yIGEgRFdBUkYgaW5kZXggdG8gZ2RiLgorCitS b2xhbmQgc3VnZ2VzdGVkIHdlIHdyYXAgdXAgdGhlIGluZGV4LWNyZWF0aW9uIGNvZGUgaW50byBh IGhlbHBlcgorc2NyaXB0LgorCitJJ20gbm90IHN1cmUgaWYgdGhpcyBpcyBzb21ldGhpbmcgcGVv cGxlIHdvdWxkIHdhbnQgaW4gZ2RiIHByb3BlciwgYnV0IEkKK2ZpZ3VyZWQgSSB3b3VsZCBzZW5k IGl0IGhlcmUganVzdCBpbiBjYXNlLgorCitUb20KKworMjAxMC0wNy0wOSAgVG9tIFRyb21leSAg PHRyb21leUByZWRoYXQuY29tPgorCisJKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1vbmx5KTogSW5z dGFsbCBnZGItYWRkLWluZGV4LgorCSogZ2RiLWFkZC1pbmRleDogTmV3IGZpbGUuCisKKzIwMTAt MDctMDkgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKworCSogZ2RiLnRleGluZm8g KEluZGV4IEZpbGVzKTogTWVudGlvbiBnZGItYWRkLWluZGV4LgorCis+RnJvbSAzMDcxNGZlNzE5 ZTYxYmFlYTAzZDBkYzU3OTNlYjBkNTY0ZmFlYmI3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQor RnJvbTogVG9tIFRyb21leSA8dHJvbWV5QHJlZGhhdC5jb20+CitEYXRlOiBGcmksIDkgSnVsIDIw MTAgMTE6MTc6NTQgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIGFkZCBnZGItYWRkLWluZGV4 CitTdWJqZWN0OiBbUEFUQ0ggNC80XSBhZGQgZ2RiLWFkZC1pbmRleAorCistLS0KKyBnZGIvQ2hh bmdlTG9nICAgICAgIHwgICAgNSArKysrKworIGdkYi9NYWtlZmlsZS5pbiAgICAgfCAgIDExICsr KysrKysrKystCisgZ2RiL2RvYy9DaGFuZ2VMb2cgICB8ICAgIDQgKysrKworIGdkYi9kb2MvZ2Ri LnRleGluZm8gfCAgICA4ICsrKysrKysrCisgZ2RiL2dkYi1hZGQtaW5kZXggICB8ICAgMzAgKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrCisgNSBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDc1NSBnZGIvZ2RiLWFkZC1p bmRleAorCitkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCitp bmRleCA2ZGJiMjg0Li44MjEwYTJjIDEwMDY0NAorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKysg Yi9nZGIvTWFrZWZpbGUuaW4KK0BAIC0xMDE4LDcgKzEwMTgsMTYgQEAgaW5zdGFsbC1vbmx5OiAk KENPTkZJR19JTlNUQUxMKSB4bWwtc3lzY2FsbC1pbnN0YWxsCisgCQkkKFNIRUxMKSAkKHNyY2Rp cikvLi4vbWtpbnN0YWxsZGlycyBcCisgCQkJJChERVNURElSKSQobWFuMWRpcikgOyBcCisgCQkk KElOU1RBTExfREFUQSkgJChzcmNkaXIpL2dkYi4xIFwKKy0JCQkkKERFU1RESVIpJChtYW4xZGly KS8kJHRyYW5zZm9ybWVkX25hbWUuMQorKwkJCSQoREVTVERJUikkKG1hbjFkaXIpLyQkdHJhbnNm b3JtZWRfbmFtZS4xOyBcCisrCXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zv cm1fbmFtZSknOyBcCisrCQkJICBlY2hvIGdkYi1hZGQtaW5kZXggfCBzZWQgLWUgIiQkdCJgIDsg XAorKwkJaWYgdGVzdCAieCQkdHJhbnNmb3JtZWRfbmFtZSIgPSB4OyB0aGVuIFwKKysJCSAgdHJh bnNmb3JtZWRfbmFtZT1nZGItYWRkLWluZGV4IDsgXAorKwkJZWxzZSBcCisrCQkgIHRydWUgOyBc CisrCQlmaSA7IFwKKysJCSQoSU5TVEFMTF9QUk9HUkFNKSAkKHNyY2RpcikvZ2RiLWFkZC1pbmRl eCBcCisrCQkJJChERVNURElSKSQoYmluZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUkKEVYRUVYVCkK KyAJQCQoTUFLRSkgRE89aW5zdGFsbCAiRE9ESVJTPSQoU1VCRElSUykiICQoRkxBR1NfVE9fUEFT Uykgc3ViZGlyX2RvCisgLlBIT05ZOiBpbnN0YWxsLXR1aQorIGluc3RhbGwtdHVpOgorZGlmZiAt LWdpdCBhL2dkYi9kb2MvZ2RiLnRleGluZm8gYi9nZGIvZG9jL2dkYi50ZXhpbmZvCitpbmRleCA2 OTE0MWUzLi40NTdlNmI0IDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9nZGIudGV4aW5mbworKysrIGIv Z2RiL2RvYy9nZGIudGV4aW5mbworQEAgLTE1MDQ1LDYgKzE1MDQ1LDE0IEBAIFRoZXJlIGFyZSBj dXJyZW50bHkgc29tZSBsaW1pdGF0aW9uIG9uIGluZGljZXMuICBUaGV5IG9ubHkgd29yayB3aGVu CisgZm9yIERXQVJGIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwgbm90IHN0YWJzLiAgQW5kLCB0aGV5 IGRvIG5vdAorIGN1cnJlbnRseSB3b3JrIGZvciBwcm9ncmFtcyB1c2luZyBBZGEuCisgCisrQHZh bHVle0dEQk59IGNvbWVzIHdpdGggYSBwcm9ncmFtLCBAY29tbWFuZHtnZGItYWRkLWluZGV4fSwg d2hpY2ggY2FuCisrYmUgdXNlZCB0byBhZGQgdGhlIGluZGV4IHRvIGEgc3ltYm9sIGZpbGUuICBJ dCB0YWtlcyB0aGUgc3ltYm9sIGZpbGUKKythcyBpdHMgb25seSBhcmd1bWVudDoKKysKKytAc21h bGxleGFtcGxlCisrJCBnZGItYWRkLWluZGV4IHN5bWZpbGUKKytAZW5kIHNtYWxsZXhhbXBsZQor KworIAorIEBub2RlIFN5bWJvbCBFcnJvcnMKKyBAc2VjdGlvbiBFcnJvcnMgUmVhZGluZyBTeW1i b2wgRmlsZXMKK2RpZmYgLS1naXQgYS9nZGIvZ2RiLWFkZC1pbmRleCBiL2dkYi9nZGItYWRkLWlu ZGV4CituZXcgZmlsZSBtb2RlIDEwMDc1NQoraW5kZXggMDAwMDAwMC4uYzlhMDNiMAorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL2dkYi1hZGQtaW5kZXgKK0BAIC0wLDAgKzEsMzAgQEAKKysjISAv YmluL3NoCisrCisrIyBBZGQgYSAuZ2RiX2luZGV4IHNlY3Rpb24gdG8gYSBmaWxlLgorKworKyMg Q29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytmaWxlPSIkMSIKKytkaXI9IiR7ZmlsZSUvKn0i CisrCisrIyBXZSBkb24ndCBjYXJlIGlmIGdkYiBnaXZlcyBhbiBlcnJvci4KKytnZGIgLS1iYXRj aC1zaWxlbnQgLWV4ICJmaWxlICRmaWxlIiAtZXggInNhdmUgZ2RiLWluZGV4ICRkIiA+IC9kZXYv bnVsbCAyPiYxCisrCisraWYgdGVzdCAtZiAiJHtmaWxlfS5nZGItaW5kZXgiOyB0aGVuCisrICAg b2JqY29weSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5kZXg9IiR7ZmlsZX0uZ2RiLWluZGV4IiAtLXNl dC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5kZXg9cmVhZG9ubHkgIiRmaWxlIiAiJGZpbGUiCisrICAg cm0gLWYgIiR7ZmlsZX0uZ2RiLWluZGV4IgorK2ZpCisrCisrZXhpdCAwCistLSAKKzEuNi4yLjUK KwoKZGlmZiAtLWdpdCBhL2dkYi5zcGVjIGIvZ2RiLnNwZWMKaW5kZXggZDRlY2MwYi4uNmNjYjIy ZiAxMDA2NDQKLS0tIGEvZ2RiLnNwZWMKKysrIGIvZ2RiLnNwZWMKQEAgLTM2LDcgKzM2LDcgQEAg VmVyc2lvbjogNy4xLjkwLjIwMTAwNzIxCiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5z IGEgbGVhZGluZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScg aXMgbm90IGEgcGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNv bXBhdGlibGUgZm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogMyV7P193aXRoX3Vwc3RyZWFtOi51 cHN0cmVhbX0le2Rpc3R9CitSZWxlYXNlOiA0JXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7 ZGlzdH0KIAogTGljZW5zZTogR1BMdjMrIGFuZCBHUEx2Mysgd2l0aCBleGNlcHRpb25zIGFuZCBH UEx2MisgYW5kIEdQTHYyKyB3aXRoIGV4Y2VwdGlvbnMgYW5kIEdQTCsgYW5kIExHUEx2MisgYW5k IEdGREwgYW5kIEJTRCBhbmQgUHVibGljIERvbWFpbgogR3JvdXA6IERldmVsb3BtZW50L0RlYnVn Z2VycwpAQCAtNDE3LDYgKzQxNyw5IEBAIFBhdGNoNDg3OiBnZGItYno1NjI3NjMtcHJldHR5LXBy aW50LTJkLXZlY3RvcnMtbGlic3RkY3h4LnBhdGNoCiAjIEZpeCBwcmVsaW5rZWQgZXhlY3V0YWJs ZXMgd2l0aCBzZXBkZWJ1ZyBhbmQgY29weSByZWxvY2F0aW9ucyAoQlogNjE0NjU5KS4KIFBhdGNo NDg5OiBnZGItYno2MTQ2NTktcHJlbGluay1keW5ic3MucGF0Y2gKIAorIyBQcm92aWRlIC91c3Iv YmluL2dkYi1hZGQtaW5kZXggZm9yIHJwbS1idWlsZCAoVG9tIFRyb21leSkuCitQYXRjaDQ5MTog Z2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCisKIEJ1aWxkUmVxdWlyZXM6IG5jdXJzZXMt ZGV2ZWwlez9faXNhfSB0ZXhpbmZvIGdldHRleHQgZmxleCBiaXNvbiBleHBhdC1kZXZlbCV7P19p c2F9CiBSZXF1aXJlczogcmVhZGxpbmUlez9faXNhfQogQnVpbGRSZXF1aXJlczogcmVhZGxpbmUt ZGV2ZWwlez9faXNhfQpAQCAtNjY3LDYgKzY3MCw3IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIv bTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICNwYXRjaDQ4NyAtcDEKICVwYXRj aDQxNSAtcDEKICVwYXRjaDQ4OSAtcDEKKyVwYXRjaDQ5MSAtcDEKIAogJXBhdGNoMzkzIC1wMQog JXBhdGNoMzM1IC1wMQpAQCAtOTcyLDYgKzk3Niw3IEBAIGZpCiAle19tYW5kaXJ9LyovZ3N0YWNr LjEqCiAlaWYgMCV7IT9lbDU6MX0KICV7X2JpbmRpcn0vcHN0YWNrCisle19iaW5kaXJ9L2dkYi1h ZGQtaW5kZXgKICV7X21hbmRpcn0vKi9wc3RhY2suMSoKICVlbmRpZiAjIDAleyE/ZWw1OjF9CiAl ZW5kaWYgIyAwJXshP193aXRoX3Vwc3RyZWFtOjF9CkBAIC05OTQsNyArOTk5LDEyIEBAIGZpCiAl ZW5kaWYKIAogJWNoYW5nZWxvZwotKiBUaHUgSnVsIDIyIDIwMTAgRGF2aWQgTWFsY29sbSA8ZG1h bGNvbG1AcmVkaGF0LmNvbT4gLSA3LjEuOTAuMjAxMDA3MjEtMworKiBUaHUgSnVsIDIyIDIwMTAg SmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNy4xLjkwLjIwMTAw NzIxLTQuZmMxNAorLSBJbXBvcnQgYXJjaGVyLXRyb21leS1weXRob24uCistIEltcG9ydCBhcmNo ZXItdHJvbWV5LW9wdGlvbmFsLXBzeW10YWIgKGFzIHByZXNlbnQgaW4gRlNGIEdEQiBwb3N0LTcu MikuCisgIC0gUHJvdmlkZSAvdXNyL2Jpbi9nZGItYWRkLWluZGV4IGZvciBycG0tYnVpbGQgKFRv bSBUcm9tZXkpLgorCisqIFRodSBKdWwgMjIgMjAxMCBEYXZpZCBNYWxjb2xtIDxkbWFsY29sbUBy ZWRoYXQuY29tPiAtIDcuMS45MC4yMDEwMDcyMS0zLmZjMTQKIC0gUmVidWlsdCBmb3IgaHR0cHM6 Ly9mZWRvcmFwcm9qZWN0Lm9yZy93aWtpL0ZlYXR1cmVzL1B5dGhvbl8yLjcvTWFzc1JlYnVpbGQK IAogKiBXZWQgSnVsIDIxIDIwMTAgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+IC0gNy4xLjkwLjIwMTAwNzIxLTIuZmMxNAo=