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: - Upgrade to the FSF GDB gdb-6.8.50 snapshot: 6.8.50.20090818 Date: Sat, 27 Jun 2026 23:54:20 GMT Message-ID: <178260446072.1.14702474404411799936.rpms-gdb-a97b573f83a4@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: a97b573f83a459c4d23b0dd888491106da807cc0 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvZ2RiCiAgICAgICAgICAgIEJyYW5jaCA6IGdkYi0xNy4yLXJlYmFzZS1mNDQK ICAgICAgICAgICAgQ29tbWl0IDogYTk3YjU3M2Y4M2E0NTljNGQyM2IwZGQ4ODg0OTExMDZkYTgw N2NjMAogICAgICAgICAgICBBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amtyYXRvY2hAZmVkb3Jh cHJvamVjdC5vcmc+CiAgICAgICAgICAgIERhdGUgICA6IDIwMDktMDgtMThUMTg6NTE6MTcrMDA6 MDAKICAgICAgICAgICAgU3RhdHMgIDogKzE3NTAvLTIzMzcgaW4gNyBmaWxlKHMpCiAgICAgICAg ICAgIFVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvZ2RiL2MvYTk3 YjU3M2Y4M2E0NTljNGQyM2IwZGQ4ODg0OTExMDZkYTgwN2NjMD9icmFuY2g9Z2RiLTE3LjItcmVi YXNlLWY0NAoKICAgICAgICAgICAgTG9nOgogICAgICAgICAgICAtIFVwZ3JhZGUgdG8gdGhlIEZT RiBHREIgZ2RiLTYuOC41MCBzbmFwc2hvdDogNi44LjUwLjIwMDkwODE4Ci0gYXJjaGVyLWphbmty YXRvY2h2aWwtZmVkb3JhMTIgY29tbWl0OgogICAgNWUwZDFjYzc0ZjExOTM5MWEyYzNhZTI1ZWY1 NzQ5ZmMyODY3NGYwNgoKLS0tCmRpZmYgLS1naXQgYS8uY3ZzaWdub3JlIGIvLmN2c2lnbm9yZQpp bmRleCA5ZmMxNTk1Li5jODhmNjFiIDEwMDY0NAotLS0gYS8uY3ZzaWdub3JlCisrKyBiLy5jdnNp Z25vcmUKQEAgLTEgKzEgQEAKLWdkYi02LjguNTAuMjAwOTA4MTEudGFyLmJ6MgorZ2RiLTYuOC41 MC4yMDA5MDgxOC50YXIuYnoyCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5 MDcucGF0Y2ggYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAppbmRleCA5M2EzZmU3 Li5iY2JmYWU4IDEwMDY0NAotLS0gYS9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaAor KysgYi9nZGItNi4zLXJlYWRuZXZlci0yMDA1MDkwNy5wYXRjaApAQCAtMTEsMTAgKzExLDEwIEBA CiAKICAgICAgICAgKiBnZGIudGV4aW5mbyAoRmlsZSBPcHRpb25zKTogRG9jdW1lbnQgLS1yZWFk bmV2ZXIuCiAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9kb2MvZ2RiLnRleGluZm8K K0luZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9kb2MvZ2RiLnRleGluZm8KID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAyLm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5 LTA4LTAzIDA5OjUwOjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LTA4LTAzIDEyOjI5OjU4LjAwMDAwMDAwMCArMDIwMAor LS0tIGdkYi02LjguNTAuMjAwOTA4MTEub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMDktMDgt MTMgMTA6MTQ6MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMDktMDgtMTMgMTA6MTQ6MTguMDAwMDAwMDAwICswMjAwCiBAQCAt OTkxLDYgKzk5MSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3ltYm9sIHRh CiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBhcyBpdCBp cyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1dHVyZSBv cGVyYXRpb25zIGZhc3Rlci4KQEAgLTI4LDEwICsyOCwxMCBAQCBJbmRleDogZ2RiLTYuOC41MC4y MDA5MDgwMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBub2RlIE1vZGUg T3B0aW9ucwotSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL21haW4uYworSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MTEvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAu MjAwOTA4MDIub3JpZy9nZGIvbWFpbi5jCTIwMDktMDgtMDMgMTI6Mjk6MDMuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvbWFpbi5jCTIwMDktMDgtMDMgMTI6Mjk6 NTguMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTYuOC41MC4yMDA5MDgxMS5vcmlnL2dkYi9tYWlu LmMJMjAwOS0wOC0xMyAxMDoxNDoxNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNi44LjUwLjIw MDkwODExL2dkYi9tYWluLmMJMjAwOS0wOC0xMyAxMDoxNDoxOC4wMDAwMDAwMDAgKzAyMDAKIEBA IC0zODIsNiArMzgyLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7Inhk YiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2Fy Z3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKQEAgLTQ4LDExICs0OCwxMSBAQCBJbmRleDogZ2Ri LTYuOC41MC4yMDA5MDgwMi9nZGIvbWFpbi5jCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZp bHRlcmVkIChfKCJcCiAgICAtLXNlPUZJTEUgICAgICAgICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZp bGUgYW5kIGV4ZWN1dGFibGUgZmlsZS5cblwKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAyL2dk Yi9zeW1maWxlLmMKK0luZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi9zeW1maWxlLmMKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAyLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDA5 LTA4LTAzIDEyOjI4OjE0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDIv Z2RiL3N5bWZpbGUuYwkyMDA5LTA4LTAzIDEyOjI5OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTc4 LDYgKzc4LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAorLS0t IGdkYi02LjguNTAuMjAwOTA4MTEub3JpZy9nZGIvc3ltZmlsZS5jCTIwMDktMDgtMTMgMTA6MTQ6 MTUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvc3ltZmlsZS5j CTIwMDktMDgtMTMgMTA6MTQ6MTguMDAwMDAwMDAwICswMjAwCitAQCAtNzksNiArNzksNyBAQCBz dGF0aWMgdm9pZCBjbGVhcl9zeW10YWJfdXNlcnNfY2xlYW51cCAoCiAgCiAgLyogR2xvYmFsIHZh cmlhYmxlcyBvd25lZCBieSB0aGlzIGZpbGUgKi8KICBpbnQgcmVhZG5vd19zeW1ib2xfZmlsZXM7 CS8qIFJlYWQgZnVsbCBzeW1ib2xzIGltbWVkaWF0ZWx5ICovCkBAIC02MCwxOSArNjAsMTkgQEAg SW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDIvZ2RiL3N5bWZpbGUuYwogIAogIC8qIEV4dGVybmFs IHZhcmlhYmxlcyBhbmQgZnVuY3Rpb25zIHJlZmVyZW5jZWQuICovCiAgCi1JbmRleDogZ2RiLTYu OC41MC4yMDA5MDgwMi9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTYuOC41MC4yMDA5MDgx MS9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAwOS0wOC0wMyAwOTo1MDo1Ny4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi9kd2FyZjJyZWFkLmMJMjAwOS0wOC0wMyAxMjoz MTowMS4wMDAwMDAwMDAgKzAyMDAKLUBAIC01Miw2ICs1Miw3IEBACi0gI2luY2x1ZGUgImp2LWxh bmcuaCIKKy0tLSBnZGItNi44LjUwLjIwMDkwODExLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDA5 LTA4LTEzIDEwOjE0OjE1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi02LjguNTAuMjAwOTA4MTEv Z2RiL2R3YXJmMnJlYWQuYwkyMDA5LTA4LTEzIDEwOjE0OjI5LjAwMDAwMDAwMCArMDIwMAorQEAg LTUzLDYgKzUzLDcgQEAKICAjaW5jbHVkZSAidHlwZXByaW50LmgiCiAgI2luY2x1ZGUgInZlYy5o IgorICNpbmNsdWRlICJibG9jay5oIgogKyNpbmNsdWRlICJ0b3AuaCIKICAKICAjaW5jbHVkZSA8 ZmNudGwuaD4KICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEyMjUsNyArMTIyNiw4IEBA IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKK0BAIC0xMjQ1LDcgKzEy NDYsOCBAQCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCiAgCiAgICAg ICAgYmZkX21hcF9vdmVyX3NlY3Rpb25zIChvYmpmaWxlLT5vYmZkLCBkd2FyZjJfbG9jYXRlX3Nl Y3Rpb25zLCBOVUxMKTsKICAgICAgfQpAQCAtODIsMTAgKzgyLDEwIEBAIEluZGV4OiBnZGItNi44 LjUwLjIwMDkwODAyL2dkYi9kd2FyZjJyZWFkLmMKICAJICAmJiBkd2FyZjJfcGVyX29iamZpbGUt PmFiYnJldi5hc2VjdGlvbiAhPSBOVUxMKTsKICB9CiAgCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5 MDgwMi9nZGIvdG9wLmgKK0luZGV4OiBnZGItNi44LjUwLjIwMDkwODExL2dkYi90b3AuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDIub3JpZy9nZGIvdG9wLmgJMjAwOS0wMS0w MyAwNjo1Nzo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAyL2dkYi90 b3AuaAkyMDA5LTA4LTAzIDEyOjI5OjU4LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi02LjguNTAu MjAwOTA4MTEub3JpZy9nZGIvdG9wLmgJMjAwOS0wMS0wMyAwNjo1Nzo1My4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNi44LjUwLjIwMDkwODExL2dkYi90b3AuaAkyMDA5LTA4LTEzIDEwOjE0OjE4 LjAwMDAwMDAwMCArMDIwMAogQEAgLTU5LDYgKzU5LDcgQEAgZXh0ZXJuIHZvaWQgc2V0X3Byb21w dCAoY2hhciAqKTsKICAKICAvKiBGcm9tIHJhbmRvbSBwbGFjZXMuICAqLwoKZGlmZiAtLWdpdCBh L2dkYi02LjYtbXVsdGlmb3JrLWRlYnVncmVnLnBhdGNoIGIvZ2RiLTYuNi1tdWx0aWZvcmstZGVi dWdyZWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwNjllZTguLjAwMDAw MDAKLS0tIGEvZ2RiLTYuNi1tdWx0aWZvcmstZGVidWdyZWcucGF0Y2gKKysrIC9kZXYvbnVsbApA QCAtMSwxMzMxICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDA4LTAxL21zZzAwMDQyLmh0bWwKLVsgQmFja3BvcnRlZCBmb3IgR0RCLTYuNiAob25seSByZW1v dmVkIHRoZSBuZXcgZmlsZSBpbmNsdXNpb24pLiBdCi0KLSsKLQotMjAwNy0wOS0xNiAgRGFuaWVs IEphY29ib3dpdHogIDxkYW5AY29kZXNvdXJjZXJ5LmNvbT4KLQkgICAgSmVmZiBKb2huc3RvbiAg PGpqb2huc3RuQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi50ZXhpbmZvIChTZXR0aW5nIFdhdGNocG9p bnRzKTogQWRqdXN0IHdhcm5pbmcgdGV4dCBhYm91dAotCW11bHRpLXRocmVhZGVkIHdhdGNocG9p bnRzLgotCi0yMDA3LTEyLTE1ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhh dC5jb20+Ci0KLQkqIGdkYi50ZXhpbmZvIChTZXR0aW5nIFdhdGNocG9pbnRzKTogTmV3IHBhcmFn cmFwaCBvbiB0aGUgc29mdHdhcmUKLQl3YXRjaHBvaW50cyBzYWZldHkgd3J0IGBzZXQgc2NoZWR1 bGVyLWxvY2tpbmcnLgotCi0yMDA4LTAzLTAxICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdEQi02LjhwcmUuCi0KLTIwMDgtMDMtMzEgIEph biBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnRocmVh ZHMvd2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyAoZm9ya29mZik6IE5ldyBkZWxheSBhZnRlciB0 aGUKLQlwYXJlbnQvY2hpbGQgbWVzc2FnZXMgdG8gZml4IGEgcmFjZS4KLQotMjAwOC0wNS0yOCAg SmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBzMzkwLW5h dC5jIChzMzkwX2ZpeF93YXRjaF9wb2ludHMpOiBGaXggaXRzIGNvbXBpbGF0aW9uIGZhaWx1cmUK LQktIHJlbmFtZSBpdCB0byBTMzkwX0ZJWF9XQVRDSF9QT0lOVFNfTElTVC4KLQotSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MDMvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDA5LTA4LTA0 IDA3OjE3OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2Ft ZDY0LWxpbnV4LW5hdC5jCTIwMDktMDgtMDQgMDc6MTc6NTguMDAwMDAwMDAwICswMjAwCi1AQCAt NDExLDI1ICs0MTEsNDMgQEAgYW1kNjRfbGludXhfZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJl ZwotIHN0YXRpYyB2b2lkCi0gYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxv bmcgY29udHJvbCkKLSB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7 Ci0tCi0gICBhbWQ2NF9saW51eF9kcltEUl9DT05UUk9MXSA9IGNvbnRyb2w7Ci0tICBBTExfTFdQ UyAobHAsIHB0aWQpCi0tICAgIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfQ09OVFJPTCwg Y29udHJvbCk7Ci0rCi0rICAvKiBJMzg2X0RFVEFDSF9CUkVBS1BPSU5UUyBtYXkgbmVlZCB0byBy ZXNldCB0aGUgcmVnaXN0ZXJzIG9uIHNpbmdsZSBwcm9jZXNzCi0rICAgICBub3QgbGlzdGVkIGZv ciBBTExfTFdQUy4gICovCi0rCi0rICBpZiAocHRpZF9nZXRfbHdwIChpbmZlcmlvcl9wdGlkKSA9 PSAwKQotKyAgICBhbWQ2NF9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NPTlRST0ws IGNvbnRyb2wpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IGx3cF9pbmZvICpscDsK LSsgICAgICBwdGlkX3QgcHRpZDsKLSsKLSsgICAgICBBTExfTFdQUyAobHAsIHB0aWQpCi0rCWFt ZDY0X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfQ09OVFJPTCwgY29udHJvbCk7Ci0rICAgIH0KLSB9 Ci0gCi0gc3RhdGljIHZvaWQKLSBhbWQ2NF9saW51eF9kcl9zZXRfYWRkciAoaW50IHJlZ251bSwg Q09SRV9BRERSIGFkZHIpCi0gewotLSAgc3RydWN0IGx3cF9pbmZvICpscDsKLS0gIHB0aWRfdCBw dGlkOwotLQotICAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RB RERSIC0gRFJfRklSU1RBRERSKTsKLSAKLSAgIGFtZDY0X2xpbnV4X2RyW0RSX0ZJUlNUQUREUiAr IHJlZ251bV0gPSBhZGRyOwotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICBhbWQ2NF9saW51 eF9kcl9zZXQgKHB0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7Ci0rCi0rICAvKiBJ Mzg2X0RFVEFDSF9CUkVBS1BPSU5UUyBtYXkgbmVlZCB0byByZXNldCB0aGUgcmVnaXN0ZXJzIG9u IHNpbmdsZSBwcm9jZXNzCi0rICAgICBub3QgbGlzdGVkIGZvciBBTExfTFdQUy4gICovCi0rCi0r ICBpZiAocHRpZF9nZXRfbHdwIChpbmZlcmlvcl9wdGlkKSA9PSAwKQotKyAgICBhbWQ2NF9saW51 eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7Ci0r ICBlbHNlCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotKyAgICAgIHB0aWRf dCBwdGlkOwotKwotKyAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkKLSsJYW1kNjRfbGludXhfZHJf c2V0IChwdGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwotKyAgICB9Ci0gfQotIAot IHN0YXRpYyB2b2lkCi1AQCAtNDU0LDYgKzQ3Miw0MiBAQCBhbWQ2NF9saW51eF9uZXdfdGhyZWFk IChwdGlkX3QgcHRpZCkKLSAKLSAgIGFtZDY0X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfQ09OVFJP TCwgYW1kNjRfbGludXhfZHJbRFJfQ09OVFJPTF0pOwotIH0KLSsKLSsvKiBUT19GT0xMT1dfRk9S SyBzdG9yZXMgaGVyZSB0aGUgUElEIHVuZGVyIERFVEFDSF9CUkVBS1BPSU5UUyBmb3IgdGhlIGNo aWxkCi0rICAgcHJvY2VzcyBvZiB0cmFjZWQgRk9SSy4gIFdlIG11c3QgY2xlYXIgc3VjaCB3YXRj aHBvaW50cyBvbmx5IG9uY2UgZHVyaW5nCi0rICAgREVUQUNIX0JSRUFLUE9JTlRTLiAgKi8KLSsK LStzdGF0aWMgaW50IGFtZDY0X2xpbnV4X2RldGFjaF9icmVha3BvaW50c19waWQ7Ci0rCi0rLyog UmVtb3ZlIGEgd2F0Y2hwb2ludCB0aGF0IHdhdGNoZWQgdGhlIG1lbW9yeSByZWdpb24gd2hpY2gg c3RhcnRzIGF0Ci0rICAgYWRkcmVzcyBBRERSLCB3aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLCBh bmQgZm9yIGFjY2Vzc2VzIG9mIHRoZQotKyAgIHR5cGUgVFlQRS4gIFJldHVybiAwIG9uIHN1Y2Nl c3MsIC0xIG9uIGZhaWx1cmUuICAqLwotK2ludAotK2FtZDY0X2xpbnV4X3JlbW92ZV93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUpCi0rewotKyAgaWYgKHB0aWRf Z2V0X3BpZCAoaW5mZXJpb3JfcHRpZCkgPT0gYW1kNjRfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRz X3BpZCkKLSsgICAgcmV0dXJuIDA7Ci0rICAvKiBGT0xMT1ctRk9SSy1NT0RFIENISUxEIHJ1bnMg bGF0ZXIgdGhlIENISUxEIHdpdGggbm8gcmVzdHJpY3Rpb25zLiAgKi8KLSsgIGFtZDY0X2xpbnV4 X2RldGFjaF9icmVha3BvaW50c19waWQgPSAwOwotKwotKyAgcmV0dXJuIHRhcmdldF9yZW1vdmVf d2F0Y2hwb2ludCAoYWRkciwgbGVuLCB0eXBlKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQKLSthbWQ2 NF9saW51eF9kZXRhY2hfYnJlYWtwb2ludHMgKGludCBkZXRhY2hlZF9waWQpCi0rewotKyAgc3Ry dWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IHNhdmVfaW5mZXJpb3JfcHRpZCAoKTsKLSsgIGludCBp OwotKyAgZXh0ZXJuIHZvaWQgaTM4Nl9kZXRhY2hfYnJlYWtwb2ludHMgKGludCBkZXRhY2hlZF9w aWQpOwotKwotKyAgYW1kNjRfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCA9IGRldGFjaGVk X3BpZDsKLSsgIC8qIERlcGVuZCBvbiBgIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCknIGZvciB0aGUg STM4Nl8qIG1hY3Jvcy4gICovCi0rICBpbmZlcmlvcl9wdGlkID0gcGlkX3RvX3B0aWQgKGRldGFj aGVkX3BpZCk7Ci0rCi0rICBpMzg2X2RldGFjaF9icmVha3BvaW50cyAoZGV0YWNoZWRfcGlkKTsK LSsKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotK30KLSAMCi0gCi0gLyogVGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQgYnkgbGlidGhyZWFkX2RiIGFzIHBhcnQgb2YgaXRzIGhhbmRsaW5nIG9m Ci1AQCAtNzY3LDYgKzgyMSw0MiBAQCBhbWQ2NF9saW51eF9zaWdpbmZvX2ZpeHVwIChzdHJ1Y3Qg c2lnaW5mCi0gICAgIHJldHVybiAwOwotIH0KLSAKLStzdGF0aWMgaW50ICgqYW1kNjRfbGludXhf c3VwZXJfZm9sbG93X2ZvcmspIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotKwkJCQkJICAgICBp bnQgZm9sbG93X2NoaWxkKTsKLSsKLSsvKiBXZSBuZWVkIHRvIGR1cGxpY2F0ZSB0aGUgTElOVVhf Q0hJTERfRk9MTE9XX0ZPUksgYmVoYXZpb3IgaGVyZSBhbmQgY2F0Y2ggaXRzCi0rICAgY2FsbGVk IERFVEFDSF9CUkVBS1BPSU5UUyB0byBhdm9pZCBjb3JydXB0aW5nIG91ciBsb2NhbCByZWdpc3Rl cnMgbWlycm9yLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rYW1kNjRfbGludXhfZm9sbG93X2Zvcmsg KHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIGludCBmb2xsb3dfY2hpbGQpCi0rewotKyAgcHRpZF90 IGxhc3RfcHRpZDsKLSsgIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyBsYXN0X3N0YXR1czsKLSsg IGludCBoYXNfdmZvcmtlZDsKLSsgIGludCBwYXJlbnRfcGlkLCBjaGlsZF9waWQ7Ci0rCi0rICBn ZXRfbGFzdF90YXJnZXRfc3RhdHVzICgmbGFzdF9wdGlkLCAmbGFzdF9zdGF0dXMpOwotKyAgaGFz X3Zmb3JrZWQgPSAobGFzdF9zdGF0dXMua2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfVkZPUktFRCk7 Ci0rICBwYXJlbnRfcGlkID0gcHRpZF9nZXRfbHdwIChsYXN0X3B0aWQpOwotKyAgaWYgKHBhcmVu dF9waWQgPT0gMCkKLSsgICAgcGFyZW50X3BpZCA9IHB0aWRfZ2V0X3BpZCAobGFzdF9wdGlkKTsK LSsgIGNoaWxkX3BpZCA9IHB0aWRfZ2V0X2x3cCAobGFzdF9zdGF0dXMudmFsdWUucmVsYXRlZF9w aWQpOwotKyAgaWYgKGNoaWxkX3BpZCA9PSAwKQotKyAgICBjaGlsZF9waWQgPSBwdGlkX2dldF9w aWQgKGxhc3Rfc3RhdHVzLnZhbHVlLnJlbGF0ZWRfcGlkKTsKLSsKLSsgIGlmICghIGZvbGxvd19j aGlsZCkKLSsgICAgewotKyAgICAgIGFtZDY0X2xpbnV4X2RldGFjaF9icmVha3BvaW50cyAoY2hp bGRfcGlkKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYgKCEgaGFzX3Zmb3Jr ZWQpCi0rCWFtZDY0X2xpbnV4X2RldGFjaF9icmVha3BvaW50cyAoY2hpbGRfcGlkKTsKLSsgICAg fQotKwotKyAgcmV0dXJuICgqYW1kNjRfbGludXhfc3VwZXJfZm9sbG93X2ZvcmspIChvcHMsIGZv bGxvd19jaGlsZCk7Ci0rfQotKwotIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5jZSAt V21pc3NpbmctcHJvdG90eXBlcy4gICovCi0gdm9pZCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51eF9u YXQgKHZvaWQpOwotIAotQEAgLTgwOSw2ICs4OTksOSBAQCBfaW5pdGlhbGl6ZV9hbWQ2NF9saW51 eF9uYXQgKHZvaWQpCi0gICBsaW51eF9lbGZjb3JlX3dyaXRlX3Byc3RhdHVzID0gYW1kNjRfbGlu dXhfZWxmY29yZV93cml0ZV9wcnN0YXR1czsKLSAgIGxpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJl ZyA9IGFtZDY0X2xpbnV4X2VsZmNvcmVfd3JpdGVfcHJmcHJlZzsKLSAKLSsgIGFtZDY0X2xpbnV4 X3N1cGVyX2ZvbGxvd19mb3JrID0gdC0+dG9fZm9sbG93X2Zvcms7Ci0rICB0LT50b19mb2xsb3df Zm9yayA9IGFtZDY0X2xpbnV4X2ZvbGxvd19mb3JrOwotKwotICAgLyogUmVnaXN0ZXIgdGhlIHRh cmdldC4gICovCi0gICBsaW51eF9uYXRfYWRkX3RhcmdldCAodCk7Ci0gICBsaW51eF9uYXRfc2V0 X25ld190aHJlYWQgKHQsIGFtZDY0X2xpbnV4X25ld190aHJlYWQpOwotSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDMvZ2RiL2kzODYtbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44 LjUwLjIwMDkwODAzLm9yaWcvZ2RiL2kzODYtbGludXgtbmF0LmMJMjAwOS0wOC0wNCAwNzoxNzox OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pMzg2LWxpbnV4 LW5hdC5jCTIwMDktMDgtMDQgMDc6MjY6NDMuMDAwMDAwMDAwICswMjAwCi1AQCAtNjM3LDIxICs2 MzcsNDIgQEAgaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZwotICAgcHRp ZF90IHB0aWQ7Ci0gCi0gICBpMzg2X2xpbnV4X2RyW0RSX0NPTlRST0xdID0gY29udHJvbDsKLS0g IEFMTF9MV1BTIChscCwgcHRpZCkKLS0gICAgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWQsIERSX0NP TlRST0wsIGNvbnRyb2wpOwotKwotKyAgLyogSTM4Nl9ERVRBQ0hfQlJFQUtQT0lOVFMgbWF5IG5l ZWQgdG8gcmVzZXQgdGhlIHJlZ2lzdGVycyBvbiBzaW5nbGUgcHJvY2VzcwotKyAgICAgbm90IGxp c3RlZCBmb3IgQUxMX0xXUFMuICAqLwotKwotKyAgaWYgKHB0aWRfZ2V0X2x3cCAoaW5mZXJpb3Jf cHRpZCkgPT0gMCkKLSsgICAgaTM4Nl9saW51eF9kcl9zZXQgKGluZmVyaW9yX3B0aWQsIERSX0NP TlRST0wsIGNvbnRyb2wpOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IGx3cF9pbmZv ICpscDsKLSsgICAgICBwdGlkX3QgcHRpZDsKLSsKLSsgICAgICBBTExfTFdQUyAobHAsIHB0aWQp Ci0rCWkzODZfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKLSsgICAg fQotIH0KLSAKLSBzdGF0aWMgdm9pZAotIGkzODZfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdu dW0sIENPUkVfQUREUiBhZGRyKQotIHsKLS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0tICBwdGlk X3QgcHRpZDsKLS0KLSAgIGdkYl9hc3NlcnQgKHJlZ251bSA+PSAwICYmIHJlZ251bSA8PSBEUl9M QVNUQUREUiAtIERSX0ZJUlNUQUREUik7Ci0gCi0gICBpMzg2X2xpbnV4X2RyW0RSX0ZJUlNUQURE UiArIHJlZ251bV0gPSBhZGRyOwotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICBpMzg2X2xp bnV4X2RyX3NldCAocHRpZCwgRFJfRklSU1RBRERSICsgcmVnbnVtLCBhZGRyKTsKLSsKLSsgIC8q IEkzODZfREVUQUNIX0JSRUFLUE9JTlRTIG1heSBuZWVkIHRvIHJlc2V0IHRoZSByZWdpc3RlcnMg b24gc2luZ2xlIHByb2Nlc3MKLSsgICAgIG5vdCBsaXN0ZWQgZm9yIEFMTF9MV1BTLiAgKi8KLSsK LSsgIGlmIChwdGlkX2dldF9sd3AgKGluZmVyaW9yX3B0aWQpID09IDApCi0rICAgIGkzODZfbGlu dXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwot KyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IGx3cF9pbmZvICpscDsKLSsgICAgICBwdGlk X3QgcHRpZDsKLSsKLSsgICAgICBBTExfTFdQUyAobHAsIHB0aWQpCi0rCWkzODZfbGludXhfZHJf c2V0IChwdGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwotKyAgICB9Ci0gfQotIAot IHN0YXRpYyB2b2lkCi1AQCAtNjc2LDYgKzY5Nyw0MiBAQCBpMzg2X2xpbnV4X25ld190aHJlYWQg KHB0aWRfdCBwdGlkKQotIAotICAgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWQsIERSX0NPTlRST0ws IGkzODZfbGludXhfZHJbRFJfQ09OVFJPTF0pOwotIH0KLSsKLSsvKiBUT19GT0xMT1dfRk9SSyBz dG9yZXMgaGVyZSB0aGUgUElEIHVuZGVyIERFVEFDSF9CUkVBS1BPSU5UUyBmb3IgdGhlIGNoaWxk Ci0rICAgcHJvY2VzcyBvZiB0cmFjZWQgRk9SSy4gIFdlIG11c3QgY2xlYXIgc3VjaCB3YXRjaHBv aW50cyBvbmx5IG9uY2UgZHVyaW5nCi0rICAgREVUQUNIX0JSRUFLUE9JTlRTLiAgKi8KLSsKLStz dGF0aWMgaW50IGkzODZfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZDsKLSsKLSsvKiBSZW1v dmUgYSB3YXRjaHBvaW50IHRoYXQgd2F0Y2hlZCB0aGUgbWVtb3J5IHJlZ2lvbiB3aGljaCBzdGFy dHMgYXQKLSsgICBhZGRyZXNzIEFERFIsIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0ZXMsIGFuZCBm b3IgYWNjZXNzZXMgb2YgdGhlCi0rICAgdHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2Vzcywg LTEgb24gZmFpbHVyZS4gICovCi0raW50Ci0raTM4Nl9saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKQotK3sKLSsgIGlmIChwdGlkX2dldF9w aWQgKGluZmVyaW9yX3B0aWQpID09IGkzODZfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCkK LSsgICAgcmV0dXJuIDA7Ci0rICAvKiBGT0xMT1ctRk9SSy1NT0RFIENISUxEIHJ1bnMgbGF0ZXIg dGhlIENISUxEIHdpdGggbm8gcmVzdHJpY3Rpb25zLiAgKi8KLSsgIGkzODZfbGludXhfZGV0YWNo X2JyZWFrcG9pbnRzX3BpZCA9IDA7Ci0rCi0rICByZXR1cm4gdGFyZ2V0X3JlbW92ZV93YXRjaHBv aW50IChhZGRyLCBsZW4sIHR5cGUpOwotK30KLSsKLStzdGF0aWMgdm9pZAotK2kzODZfbGludXhf ZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgZGV0YWNoZWRfcGlkKQotK3sKLSsgIHN0cnVjdCBjbGVh bnVwICpvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7Ci0rICBpbnQgaTsKLSsgIGV4 dGVybiB2b2lkIGkzODZfZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgZGV0YWNoZWRfcGlkKTsKLSsK LSsgIGkzODZfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCA9IGRldGFjaGVkX3BpZDsKLSsg IC8qIERlcGVuZCBvbiBgIWlzX2x3cCAoaW5mZXJpb3JfcHRpZCknIGZvciB0aGUgSTM4Nl8qIG1h Y3Jvcy4gICovCi0rICBpbmZlcmlvcl9wdGlkID0gcGlkX3RvX3B0aWQgKGRldGFjaGVkX3BpZCk7 Ci0rCi0rICBpMzg2X2RldGFjaF9icmVha3BvaW50cyAoZGV0YWNoZWRfcGlkKTsKLSsKLSsgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotK30KLSAMCi0gCi0gLyogQ2FsbGVkIGJ5IGxpYnRocmVh ZF9kYi4gIFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSB0aHJlYWQgbG9jYWwKLUBAIC04MTgsNiAr ODc1LDQwIEBAIGkzODZfbGludXhfY2hpbGRfcG9zdF9zdGFydHVwX2luZmVyaW9yICgKLSAgIHN1 cGVyX3Bvc3Rfc3RhcnR1cF9pbmZlcmlvciAocHRpZCk7Ci0gfQotIAotK3N0YXRpYyBpbnQgKCpp Mzg2X2xpbnV4X3N1cGVyX2ZvbGxvd19mb3JrKSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSsJ CQkJCSAgICBpbnQgZm9sbG93X2NoaWxkKTsKLSsKLSsvKiBXZSBuZWVkIHRvIGR1cGxpY2F0ZSB0 aGUgTElOVVhfQ0hJTERfRk9MTE9XX0ZPUksgYmVoYXZpb3IgaGVyZSBhbmQgY2F0Y2ggaXRzCi0r ICAgY2FsbGVkIERFVEFDSF9CUkVBS1BPSU5UUyB0byBhdm9pZCBjb3JydXB0aW5nIG91ciBsb2Nh bCByZWdpc3RlcnMgbWlycm9yLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0raTM4Nl9saW51eF9mb2xs b3dfZm9yayAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgaW50IGZvbGxvd19jaGlsZCkKLSt7Ci0r ICBwdGlkX3QgbGFzdF9wdGlkOwotKyAgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzIGxhc3Rfc3Rh dHVzOwotKyAgaW50IGhhc192Zm9ya2VkOwotKyAgaW50IHBhcmVudF9waWQsIGNoaWxkX3BpZDsK LSsKLSsgIGdldF9sYXN0X3RhcmdldF9zdGF0dXMgKCZsYXN0X3B0aWQsICZsYXN0X3N0YXR1cyk7 Ci0rICBoYXNfdmZvcmtlZCA9IChsYXN0X3N0YXR1cy5raW5kID09IFRBUkdFVF9XQUlUS0lORF9W Rk9SS0VEKTsKLSsgIHBhcmVudF9waWQgPSBwdGlkX2dldF9sd3AgKGxhc3RfcHRpZCk7Ci0rICBp ZiAocGFyZW50X3BpZCA9PSAwKQotKyAgICBwYXJlbnRfcGlkID0gcHRpZF9nZXRfcGlkIChsYXN0 X3B0aWQpOwotKyAgY2hpbGRfcGlkID0gcHRpZF9nZXRfcGlkIChsYXN0X3N0YXR1cy52YWx1ZS5y ZWxhdGVkX3BpZCk7Ci0rCi0rICBpZiAoISBmb2xsb3dfY2hpbGQpCi0rICAgIHsKLSsgICAgICBp Mzg2X2xpbnV4X2RldGFjaF9icmVha3BvaW50cyAoY2hpbGRfcGlkKTsKLSsgICAgfQotKyAgZWxz ZQotKyAgICB7Ci0rICAgICAgaWYgKCEgaGFzX3Zmb3JrZWQpCi0rCWkzODZfbGludXhfZGV0YWNo X2JyZWFrcG9pbnRzIChjaGlsZF9waWQpOwotKyAgICB9Ci0rCi0rICByZXR1cm4gKCppMzg2X2xp bnV4X3N1cGVyX2ZvbGxvd19mb3JrKSAob3BzLCBmb2xsb3dfY2hpbGQpOwotK30KLSsKLSB2b2lk Ci0gX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQgKHZvaWQpCi0gewotQEAgLTg0NSw2ICs5MzYs OSBAQCBfaW5pdGlhbGl6ZV9pMzg2X2xpbnV4X25hdCAodm9pZCkKLSAgIHQtPnRvX2ZldGNoX3Jl Z2lzdGVycyA9IGkzODZfbGludXhfZmV0Y2hfaW5mZXJpb3JfcmVnaXN0ZXJzOwotICAgdC0+dG9f c3RvcmVfcmVnaXN0ZXJzID0gaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnM7Ci0g Ci0rICBpMzg2X2xpbnV4X3N1cGVyX2ZvbGxvd19mb3JrID0gdC0+dG9fZm9sbG93X2Zvcms7Ci0r ICB0LT50b19mb2xsb3dfZm9yayA9IGkzODZfbGludXhfZm9sbG93X2Zvcms7Ci0rCi0gICAvKiBS ZWdpc3RlciB0aGUgdGFyZ2V0LiAgKi8KLSAgIGxpbnV4X25hdF9hZGRfdGFyZ2V0ICh0KTsKLSAg IGxpbnV4X25hdF9zZXRfbmV3X3RocmVhZCAodCwgaTM4Nl9saW51eF9uZXdfdGhyZWFkKTsKLUlu ZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pMzg2LW5hdC5jCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9pMzg2LW5hdC5jCTIwMDktMDgtMDQgMDc6MTc6 MTkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvaTM4Ni1uYXQu YwkyMDA5LTA4LTA0IDA3OjE3OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTUyMCw2ICs1MjAsMTgg QEAgaTM4Nl9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIAotICAgcmV0dXJuIHJl dHZhbDsKLSB9Ci0gCi0rdm9pZAotK2kzODZfZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgZGV0YWNo ZWRfcGlkKQotK3sKLSsgIGludCBpOwotKwotKyAgLyogRG8gbm90IHRvdWNoIGFueSBEUl9NSVJS T1Igb3IgRFJfQ09OVFJPTF9NSVJST1IgbWlycm9ycyBoZXJlLiAgKi8KLSsgIGkzODZfZHJfbG93 LnNldF9jb250cm9sICgwKTsKLSsgIGlmIChpMzg2X2RyX2xvdy5yZXNldF9hZGRyKQotKyAgICBB TExfREVCVUdfUkVHSVNURVJTKGkpCi0rICAgICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciAoaSk7 Ci0rfQotKwotIC8qIFJldHVybiBub24temVybyBpZiB3ZSBjYW4gd2F0Y2ggYSBtZW1vcnkgcmVn aW9uIHRoYXQgc3RhcnRzIGF0Ci0gICAgYWRkcmVzcyBBRERSIGFuZCB3aG9zZSBsZW5ndGggaXMg TEVOIGJ5dGVzLiAgKi8KLSAKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9pYTY0LWxp bnV4LW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMy5vcmlnL2dkYi9p YTY0LWxpbnV4LW5hdC5jCTIwMDktMDgtMDQgMDc6MTc6MTkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvaWE2NC1saW51eC1uYXQuYwkyMDA5LTA4LTA0IDA3OjE3 OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTU4Myw2ICs1ODMsMTIgQEAgaWE2NF9saW51eF9pbnNl cnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIAotICAgcmV0dXJuIDA7Ci0gfQotIAotKy8qIFRPX0ZP TExPV19GT1JLIHN0b3JlcyBoZXJlIHRoZSBQSUQgdW5kZXIgREVUQUNIX0JSRUFLUE9JTlRTIGZv ciB0aGUgY2hpbGQKLSsgICBwcm9jZXNzIG9mIHRyYWNlZCBGT1JLLiAgV2UgbXVzdCBjbGVhciBz dWNoIHdhdGNocG9pbnRzIG9ubHkgb25jZSBkdXJpbmcKLSsgICBERVRBQ0hfQlJFQUtQT0lOVFMu ICAqLwotKwotK3N0YXRpYyBpbnQgaWE2NF9saW51eF9kZXRhY2hfYnJlYWtwb2ludHNfcGlkOwot KwotIHN0YXRpYyBpbnQKLSBpYTY0X2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIg YWRkciwgaW50IGxlbiwgaW50IHR5cGUpCi0gewotQEAgLTU5MCw2ICs1OTYsMTEgQEAgaWE2NF9s aW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIAotICAgbG9uZyBkYnJfYWRkciwgZGJy X21hc2s7Ci0gICBpbnQgbWF4X3dhdGNocG9pbnRzID0gNDsKLSAKLSsgIGlmIChwdGlkX2dldF9w aWQgKGluZmVyaW9yX3B0aWQpID09IGlhNjRfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCkK LSsgICAgcmV0dXJuIDA7Ci0rICAvKiBGT0xMT1ctRk9SSy1NT0RFIENISUxEIHJ1bnMgbGF0ZXIg dGhlIENISUxEIHdpdGggbm8gcmVzdHJpY3Rpb25zLiAgKi8KLSsgIGlhNjRfbGludXhfZGV0YWNo X2JyZWFrcG9pbnRzX3BpZCA9IDA7Ci0rCi0gICBpZiAobGVuIDw9IDAgfHwgIWlzX3Bvd2VyX29m XzIgKGxlbikpCi0gICAgIHJldHVybiAtMTsKLSAKLUBAIC02MTcsNiArNjI4LDIyIEBAIGlhNjRf bGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiAKLSB9Ci0gCi0gc3RhdGljIHZvaWQK LStpYTY0X2xpbnV4X2RldGFjaF9icmVha3BvaW50cyAoaW50IGRldGFjaGVkX3BpZCkKLSt7Ci0r ICBpbnQgaWR4LCBpOwotKyAgbG9uZyBkYnJfYWRkciwgZGJyX21hc2s7Ci0rICBpbnQgbWF4X3dh dGNocG9pbnRzID0gNDsKLSsKLSsgIGlhNjRfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCA9 IGRldGFjaGVkX3BpZDsKLSsKLSsgIC8qIERvIG5vdCB0b3VjaCBhbnkgREVCVUdfUkVHSVNURVJT IG1pcnJvcnMgaGVyZS4gICovCi0rICBkYnJfYWRkciA9IDA7Ci0rICBkYnJfbWFzayA9IDA7Ci0r ICBmb3IgKGlkeCA9IDA7IGlkeCA8IG1heF93YXRjaHBvaW50czsgaWR4KyspCi0rICAgIHN0b3Jl X2RlYnVnX3JlZ2lzdGVyX3BhaXIgKHB0aWRfYnVpbGQgKGRldGFjaGVkX3BpZCwgMCwgMCksIGlk eCwgJmRicl9hZGRyLCAmZGJyX21hc2spOwotK30KLSsKLStzdGF0aWMgdm9pZAotIGlhNjRfbGlu dXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCi0gewotICAgaW50IGksIGFueTsKLUBAIC04MDcs NiArODM0LDQwIEBAIGlhNjRfbGludXhfeGZlcl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X28KLSAJ CQkgICAgIG9mZnNldCwgbGVuKTsKLSB9Ci0gCi0rc3RhdGljIGludCAoKmlhNjRfbGludXhfc3Vw ZXJfZm9sbG93X2ZvcmspIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotKwkJCQkJICAgIGludCBm b2xsb3dfY2hpbGQpOwotKwotKy8qIFdlIG5lZWQgdG8gZHVwbGljYXRlIHRoZSBMSU5VWF9DSElM RF9GT0xMT1dfRk9SSyBiZWhhdmlvciBoZXJlIGFuZCBjYXRjaCBpdHMKLSsgICBjYWxsZWQgREVU QUNIX0JSRUFLUE9JTlRTIHRvIGF2b2lkIGNvcnJ1cHRpbmcgb3VyIGxvY2FsIHJlZ2lzdGVycyBt aXJyb3IuICAqLwotKwotK2ludAotK2lhNjRfbGludXhfZm9sbG93X2ZvcmsgKHN0cnVjdCB0YXJn ZXRfb3BzICpvcHMsIGludCBmb2xsb3dfY2hpbGQpCi0rewotKyAgcHRpZF90IGxhc3RfcHRpZDsK LSsgIHN0cnVjdCB0YXJnZXRfd2FpdHN0YXR1cyBsYXN0X3N0YXR1czsKLSsgIGludCBoYXNfdmZv cmtlZDsKLSsgIGludCBwYXJlbnRfcGlkLCBjaGlsZF9waWQ7Ci0rCi0rICBnZXRfbGFzdF90YXJn ZXRfc3RhdHVzICgmbGFzdF9wdGlkLCAmbGFzdF9zdGF0dXMpOwotKyAgaGFzX3Zmb3JrZWQgPSAo bGFzdF9zdGF0dXMua2luZCA9PSBUQVJHRVRfV0FJVEtJTkRfVkZPUktFRCk7Ci0rICBwYXJlbnRf cGlkID0gcHRpZF9nZXRfbHdwIChsYXN0X3B0aWQpOwotKyAgaWYgKHBhcmVudF9waWQgPT0gMCkK LSsgICAgcGFyZW50X3BpZCA9IHB0aWRfZ2V0X3BpZCAobGFzdF9wdGlkKTsKLSsgIGNoaWxkX3Bp ZCA9IHB0aWRfZ2V0X3BpZCAobGFzdF9zdGF0dXMudmFsdWUucmVsYXRlZF9waWQpOwotKwotKyAg aWYgKCEgZm9sbG93X2NoaWxkKQotKyAgICB7Ci0rICAgICAgaWE2NF9saW51eF9kZXRhY2hfYnJl YWtwb2ludHMgKGNoaWxkX3BpZCk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGlm ICghIGhhc192Zm9ya2VkKQotKwlpYTY0X2xpbnV4X2RldGFjaF9icmVha3BvaW50cyAoY2hpbGRf cGlkKTsKLSsgICAgfQotKwotKyAgcmV0dXJuICgqaWE2NF9saW51eF9zdXBlcl9mb2xsb3dfZm9y aykgKG9wcywgZm9sbG93X2NoaWxkKTsKLSt9Ci0rCi0gdm9pZCBfaW5pdGlhbGl6ZV9pYTY0X2xp bnV4X25hdCAodm9pZCk7Ci0gCi0gLyoKLUBAIC05MDEsNiArOTYyLDkgQEAgX2luaXRpYWxpemVf aWE2NF9saW51eF9uYXQgKHZvaWQpCi0gICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IGlhNjRf bGludXhfaW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICB0LT50b19yZW1vdmVfd2F0Y2hwb2ludCA9IGlh NjRfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQ7Ci0gCi0rICBpYTY0X2xpbnV4X3N1cGVyX2ZvbGxv d19mb3JrID0gdC0+dG9fZm9sbG93X2Zvcms7Ci0rICB0LT50b19mb2xsb3dfZm9yayA9IGlhNjRf bGludXhfZm9sbG93X2Zvcms7Ci0rCi0gICAvKiBSZWdpc3RlciB0aGUgdGFyZ2V0LiAgKi8KLSAg IGxpbnV4X25hdF9hZGRfdGFyZ2V0ICh0KTsKLSAgIGxpbnV4X25hdF9zZXRfbmV3X3RocmVhZCAo dCwgaWE2NF9saW51eF9uZXdfdGhyZWFkKTsKLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dk Yi9wcGMtbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9y aWcvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDA5LTA4LTA0IDA3OjE3OjE5LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3BwYy1saW51eC1uYXQuYwkyMDA5LTA4LTA0 IDA3OjE3OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEzNzcsNiArMTM3NywxMiBAQCBwcGNfbGlu dXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhCi0gICByZXR1cm4gMDsKLSB9Ci0gCi0r LyogVE9fRk9MTE9XX0ZPUksgc3RvcmVzIGhlcmUgdGhlIFBJRCB1bmRlciBERVRBQ0hfQlJFQUtQ T0lOVFMgZm9yIHRoZSBjaGlsZAotKyAgIHByb2Nlc3Mgb2YgdHJhY2VkIEZPUksuICBXZSBtdXN0 IGNsZWFyIHN1Y2ggd2F0Y2hwb2ludHMgb25seSBvbmNlIGR1cmluZwotKyAgIERFVEFDSF9CUkVB S1BPSU5UUy4gICovCi0rCi0rc3RhdGljIGludCBwcGNfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRz X3BpZDsKLSsKLSBzdGF0aWMgaW50Ci0gcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JF X0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3KQotIHsKLUBAIC0xMzg0LDYgKzEzOTAsMTEgQEAg cHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYQotICAgcHRpZF90IHB0aWQ7 Ci0gICBsb25nIGRhYnJfdmFsdWUgPSAwOwotIAotKyAgaWYgKHB0aWRfZ2V0X3BpZCAoaW5mZXJp b3JfcHRpZCkgPT0gcHBjX2xpbnV4X2RldGFjaF9icmVha3BvaW50c19waWQpCi0rICAgIHJldHVy biAwOwotKyAgLyogRk9MTE9XLUZPUkstTU9ERSBDSElMRCBydW5zIGxhdGVyIHRoZSBDSElMRCB3 aXRoIG5vIHJlc3RyaWN0aW9ucy4gICovCi0rICBwcGNfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRz X3BpZCA9IDA7Ci0rCi0gICBzYXZlZF9kYWJyX3ZhbHVlID0gMDsKLSAgIEFMTF9MV1BTIChscCwg cHRpZCkKLSAgICAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChwdGlk KSwgMCwgc2F2ZWRfZGFicl92YWx1ZSkgPCAwKQotQEAgLTEzOTcsNiArMTQwOCwxNSBAQCBwcGNf bGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCi0gICBwdHJhY2UgKFBUUkFDRV9TRVRfREVC VUdSRUcsIFRJREdFVCAocHRpZCksIDAsIHNhdmVkX2RhYnJfdmFsdWUpOwotIH0KLSAKLStzdGF0 aWMgdm9pZAotK3BwY19saW51eF9kZXRhY2hfYnJlYWtwb2ludHMgKGludCBkZXRhY2hlZF9waWQp Ci0rewotKyAgcHBjX2xpbnV4X2RldGFjaF9icmVha3BvaW50c19waWQgPSBkZXRhY2hlZF9waWQ7 Ci0rCi0rICAvKiBEbyBub3QgdG91Y2ggdGhlIFNBVkVEX0RBQlJfVkFMVUUgbWlycm9yIGhlcmUu ICAqLwotKyAgcHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCBkZXRhY2hlZF9waWQsIDAsIDAp OwotK30KLSsKLSBzdGF0aWMgaW50Ci0gcHBjX2xpbnV4X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChz dHJ1Y3QgdGFyZ2V0X29wcyAqdGFyZ2V0LCBDT1JFX0FERFIgKmFkZHJfcCkKLSB7Ci1AQCAtMTYy OSw2ICsxNjQ5LDQwIEBAIHBwY19saW51eF9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgdGFyZ2UK LSAgIHJldHVybiBpc2EyMDU/IHRkZXNjX3Bvd2VycGNfaXNhMjA1XzMybCA6IHRkZXNjX3Bvd2Vy cGNfMzJsOwotIH0KLSAKLStzdGF0aWMgaW50ICgqcHBjX2xpbnV4X3N1cGVyX2ZvbGxvd19mb3Jr KSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywKLSsJCQkJCSAgIGludCBmb2xsb3dfY2hpbGQpOwot KwotKy8qIFdlIG5lZWQgdG8gZHVwbGljYXRlIHRoZSBMSU5VWF9DSElMRF9GT0xMT1dfRk9SSyBi ZWhhdmlvciBoZXJlIGFuZCBjYXRjaCBpdHMKLSsgICBjYWxsZWQgREVUQUNIX0JSRUFLUE9JTlRT IHRvIGF2b2lkIGNvcnJ1cHRpbmcgb3VyIGxvY2FsIHJlZ2lzdGVycyBtaXJyb3IuICAqLwotKwot K2ludAotK3BwY19saW51eF9mb2xsb3dfZm9yayAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywgaW50 IGZvbGxvd19jaGlsZCkKLSt7Ci0rICBwdGlkX3QgbGFzdF9wdGlkOwotKyAgc3RydWN0IHRhcmdl dF93YWl0c3RhdHVzIGxhc3Rfc3RhdHVzOwotKyAgaW50IGhhc192Zm9ya2VkOwotKyAgaW50IHBh cmVudF9waWQsIGNoaWxkX3BpZDsKLSsKLSsgIGdldF9sYXN0X3RhcmdldF9zdGF0dXMgKCZsYXN0 X3B0aWQsICZsYXN0X3N0YXR1cyk7Ci0rICBoYXNfdmZvcmtlZCA9IChsYXN0X3N0YXR1cy5raW5k ID09IFRBUkdFVF9XQUlUS0lORF9WRk9SS0VEKTsKLSsgIHBhcmVudF9waWQgPSBwdGlkX2dldF9s d3AgKGxhc3RfcHRpZCk7Ci0rICBpZiAocGFyZW50X3BpZCA9PSAwKQotKyAgICBwYXJlbnRfcGlk ID0gcHRpZF9nZXRfcGlkIChsYXN0X3B0aWQpOwotKyAgY2hpbGRfcGlkID0gcHRpZF9nZXRfcGlk IChsYXN0X3N0YXR1cy52YWx1ZS5yZWxhdGVkX3BpZCk7Ci0rCi0rICBpZiAoISBmb2xsb3dfY2hp bGQpCi0rICAgIHsKLSsgICAgICBwcGNfbGludXhfZGV0YWNoX2JyZWFrcG9pbnRzIChjaGlsZF9w aWQpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBpZiAoISBoYXNfdmZvcmtlZCkK LSsJcHBjX2xpbnV4X2RldGFjaF9icmVha3BvaW50cyAoY2hpbGRfcGlkKTsKLSsgICAgfQotKwot KyAgcmV0dXJuICgqcHBjX2xpbnV4X3N1cGVyX2ZvbGxvd19mb3JrKSAob3BzLCBmb2xsb3dfY2hp bGQpOwotK30KLSsKLSB2b2lkIF9pbml0aWFsaXplX3BwY19saW51eF9uYXQgKHZvaWQpOwotIAot IHZvaWQKLUBAIC0xNjU1LDYgKzE3MDksOSBAQCBfaW5pdGlhbGl6ZV9wcGNfbGludXhfbmF0ICh2 b2lkKQotICAgdC0+dG9fcmVhZF9kZXNjcmlwdGlvbiA9IHBwY19saW51eF9yZWFkX2Rlc2NyaXB0 aW9uOwotICAgdC0+dG9fYXV4dl9wYXJzZSA9IHBwY19saW51eF9hdXh2X3BhcnNlOwotIAotKyAg cHBjX2xpbnV4X3N1cGVyX2ZvbGxvd19mb3JrID0gdC0+dG9fZm9sbG93X2Zvcms7Ci0rICB0LT50 b19mb2xsb3dfZm9yayA9IHBwY19saW51eF9mb2xsb3dfZm9yazsKLSsKLSAgIC8qIFJlZ2lzdGVy IHRoZSB0YXJnZXQuICAqLwotICAgbGludXhfbmF0X2FkZF90YXJnZXQgKHQpOwotICAgbGludXhf bmF0X3NldF9uZXdfdGhyZWFkICh0LCBwcGNfbGludXhfbmV3X3RocmVhZCk7Ci1JbmRleDogZ2Ri LTYuOC41MC4yMDA5MDgwMy9nZGIvczM5MC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02Ljgu NTAuMjAwOTA4MDMub3JpZy9nZGIvczM5MC1uYXQuYwkyMDA5LTA4LTA0IDA3OjE3OjE5LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3MzOTAtbmF0LmMJMjAwOS0w OC0wNCAwNzoxNzo1OC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yODUsMjEgKzI4NSwxNSBAQCBzMzkw X3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1zMzkw X2ZpeF93YXRjaF9wb2ludHMgKHB0aWRfdCBwdGlkKQotK3MzOTBfZml4X3dhdGNoX3BvaW50c19s aXN0IChpbnQgdGlkLCBzdHJ1Y3Qgd2F0Y2hfYXJlYSAqYXJlYV9saXN0KQotIHsKLS0gIGludCB0 aWQ7Ci0tCi0gICBwZXJfc3RydWN0IHBlcl9pbmZvOwotICAgcHRyYWNlX2FyZWEgcGFyZWE7Ci0g Ci0gICBDT1JFX0FERFIgd2F0Y2hfbG9fYWRkciA9IChDT1JFX0FERFIpLTEsIHdhdGNoX2hpX2Fk ZHIgPSAwOwotICAgc3RydWN0IHdhdGNoX2FyZWEgKmFyZWE7Ci0gCi0tICB0aWQgPSBUSURHRVQg KHB0aWQpOwotLSAgaWYgKHRpZCA9PSAwKQotLSAgICB0aWQgPSBQSURHRVQgKHB0aWQpOwotLQot LSAgZm9yIChhcmVhID0gd2F0Y2hfYmFzZTsgYXJlYTsgYXJlYSA9IGFyZWEtPm5leHQpCi0rICBm b3IgKGFyZWEgPSBhcmVhX2xpc3Q7IGFyZWE7IGFyZWEgPSBhcmVhLT5uZXh0KQotICAgICB7Ci0g ICAgICAgd2F0Y2hfbG9fYWRkciA9IG1pbiAod2F0Y2hfbG9fYWRkciwgYXJlYS0+bG9fYWRkcik7 Ci0gICAgICAgd2F0Y2hfaGlfYWRkciA9IG1heCAod2F0Y2hfaGlfYWRkciwgYXJlYS0+aGlfYWRk cik7Ci1AQCAtMzExLDcgKzMwNSw3IEBAIHMzOTBfZml4X3dhdGNoX3BvaW50cyAocHRpZF90IHB0 aWQpCi0gICBpZiAocHRyYWNlIChQVFJBQ0VfUEVFS1VTUl9BUkVBLCB0aWQsICZwYXJlYSkgPCAw KQotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCByZXRyaWV2ZSB3YXRjaHBvaW50 IHN0YXR1cyIpKTsKLSAKLS0gIGlmICh3YXRjaF9iYXNlKQotKyAgaWYgKGFyZWFfbGlzdCkKLSAg ICAgewotICAgICAgIHBlcl9pbmZvLmNvbnRyb2xfcmVncy5iaXRzLmVtX3N0b3JhZ2VfYWx0ZXJh dGlvbiA9IDE7Ci0gICAgICAgcGVyX2luZm8uY29udHJvbF9yZWdzLmJpdHMuc3RvcmFnZV9hbHRf c3BhY2VfY3RsID0gMTsKLUBAIC0zMjgsNiArMzIyLDE4IEBAIHMzOTBfZml4X3dhdGNoX3BvaW50 cyAocHRpZF90IHB0aWQpCi0gICAgIHBlcnJvcl93aXRoX25hbWUgKF8oIkNvdWxkbid0IG1vZGlm eSB3YXRjaHBvaW50IHN0YXR1cyIpKTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStzMzkwX2ZpeF93 YXRjaF9wb2ludHMgKHB0aWRfdCBwdGlkKQotK3sKLSsgIGludCB0aWQ7Ci0rCi0rICB0aWQgPSBU SURHRVQgKHB0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQgPSBQSURHRVQgKHB0aWQp OwotKwotKyAgczM5MF9maXhfd2F0Y2hfcG9pbnRzX2xpc3QgKHRpZCwgd2F0Y2hfYmFzZSk7Ci0r fQotKwotIHN0YXRpYyBpbnQKLSBzMzkwX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRk ciwgaW50IGxlbiwgaW50IHR5cGUpCi0gewotQEAgLTM0OSw2ICszNTUsMTIgQEAgczM5MF9pbnNl cnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIAotICAgcmV0dXJuIDA7Ci0gfQotIAotKy8q IFRPX0ZPTExPV19GT1JLIHN0b3JlcyBoZXJlIHRoZSBQSUQgdW5kZXIgREVUQUNIX0JSRUFLUE9J TlRTIGZvciB0aGUgY2hpbGQKLSsgICBwcm9jZXNzIG9mIHRyYWNlZCBGT1JLLiAgV2UgbXVzdCBj bGVhciBzdWNoIHdhdGNocG9pbnRzIG9ubHkgb25jZSBkdXJpbmcKLSsgICBERVRBQ0hfQlJFQUtQ T0lOVFMuICAqLwotKwotK3N0YXRpYyBpbnQgczM5MF9kZXRhY2hfYnJlYWtwb2ludHNfcGlkOwot KwotIHN0YXRpYyBpbnQKLSBzMzkwX3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwg aW50IGxlbiwgaW50IHR5cGUpCi0gewotQEAgLTM1Niw2ICszNjgsMTEgQEAgczM5MF9yZW1vdmVf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIAotICAgcHRpZF90IHB0aWQ7Ci0gICBzdHJ1Y3Qg d2F0Y2hfYXJlYSAqYXJlYSwgKipwYXJlYTsKLSAKLSsgIGlmIChwdGlkX2dldF9waWQgKGluZmVy aW9yX3B0aWQpID09IHMzOTBfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCkKLSsgICAgcmV0dXJuIDA7 Ci0rICAvKiBGT0xMT1ctRk9SSy1NT0RFIENISUxEIHJ1bnMgbGF0ZXIgdGhlIENISUxEIHdpdGgg bm8gcmVzdHJpY3Rpb25zLiAgKi8KLSsgIHMzOTBfZGV0YWNoX2JyZWFrcG9pbnRzX3BpZCA9IDA7 Ci0rCi0gICBmb3IgKHBhcmVhID0gJndhdGNoX2Jhc2U7ICpwYXJlYTsgcGFyZWEgPSAmKCpwYXJl YSktPm5leHQpCi0gICAgIGlmICgoKnBhcmVhKS0+bG9fYWRkciA9PSBhZGRyCi0gCSYmICgqcGFy ZWEpLT5oaV9hZGRyID09IGFkZHIgKyBsZW4gLSAxKQotQEAgLTM2Myw4ICszODAsMTAgQEAgczM5 MF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIAotIAotICAgaWYgKCEqcGFyZWEp Ci0gICAgIHsKLSsjaWYgMCAvKiBSZWQgSGF0IGZvcmsvdGhyZWFkcyB3YXRjaHBvaW50cyBjaGFu Z2VzIG1heSB0cmlnZ2VyIGl0LiAgKi8KLSAgICAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9z dGRlcnIsCi0gCQkJICAiQXR0ZW1wdCB0byByZW1vdmUgbm9uZXhpc3RlbnQgd2F0Y2hwb2ludC5c biIpOwotKyNlbmRpZgotICAgICAgIHJldHVybiAtMTsKLSAgICAgfQotIAotQEAgLTM3Nyw2ICsz OTYsMTUgQEAgczM5MF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIAotICAgcmV0 dXJuIDA7Ci0gfQotIAotK3N0YXRpYyB2b2lkCi0rczM5MF9kZXRhY2hfYnJlYWtwb2ludHMgKGlu dCBkZXRhY2hlZF9waWQpCi0rewotKyAgczM5MF9kZXRhY2hfYnJlYWtwb2ludHNfcGlkID0gZGV0 YWNoZWRfcGlkOwotKwotKyAgLyogRG8gbm90IHRvdWNoIHRoZSBXQVRDSF9CQVNFIGhlcmUuICAq LwotKyAgczM5MF9maXhfd2F0Y2hfcG9pbnRzX2xpc3QgKGRldGFjaGVkX3BpZCwgTlVMTCk7Ci0r fQotKwotIHN0YXRpYyBpbnQKLSBzMzkwX2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUs IGludCBjbnQsIGludCBvdGhlcnR5cGUpCi0gewotQEAgLTM4OSw2ICs0MTcsMzkgQEAgczM5MF9y ZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgKENPUkVfQQotICAgcmV0dXJuIDE7Ci0gfQotIAot K3N0YXRpYyBpbnQgKCpzMzkwX3N1cGVyX2ZvbGxvd19mb3JrKSAoc3RydWN0IHRhcmdldF9vcHMg Km9wcywgaW50IGZvbGxvd19jaGlsZCk7Ci0rCi0rLyogV2UgbmVlZCB0byBkdXBsaWNhdGUgdGhl IExJTlVYX0NISUxEX0ZPTExPV19GT1JLIGJlaGF2aW9yIGhlcmUgYW5kIGNhdGNoIGl0cwotKyAg IGNhbGxlZCBERVRBQ0hfQlJFQUtQT0lOVFMgdG8gYXZvaWQgY29ycnVwdGluZyBvdXIgbG9jYWwg cmVnaXN0ZXJzIG1pcnJvci4gICovCi0rCi0raW50Ci0rczM5MF9mb2xsb3dfZm9yayAoc3RydWN0 IHRhcmdldF9vcHMgKm9wcywgaW50IGZvbGxvd19jaGlsZCkKLSt7Ci0rICBwdGlkX3QgbGFzdF9w dGlkOwotKyAgc3RydWN0IHRhcmdldF93YWl0c3RhdHVzIGxhc3Rfc3RhdHVzOwotKyAgaW50IGhh c192Zm9ya2VkOwotKyAgaW50IHBhcmVudF9waWQsIGNoaWxkX3BpZDsKLSsKLSsgIGdldF9sYXN0 X3RhcmdldF9zdGF0dXMgKCZsYXN0X3B0aWQsICZsYXN0X3N0YXR1cyk7Ci0rICBoYXNfdmZvcmtl ZCA9IChsYXN0X3N0YXR1cy5raW5kID09IFRBUkdFVF9XQUlUS0lORF9WRk9SS0VEKTsKLSsgIHBh cmVudF9waWQgPSBwdGlkX2dldF9sd3AgKGxhc3RfcHRpZCk7Ci0rICBpZiAocGFyZW50X3BpZCA9 PSAwKQotKyAgICBwYXJlbnRfcGlkID0gcHRpZF9nZXRfcGlkIChsYXN0X3B0aWQpOwotKyAgY2hp bGRfcGlkID0gcHRpZF9nZXRfcGlkIChsYXN0X3N0YXR1cy52YWx1ZS5yZWxhdGVkX3BpZCk7Ci0r Ci0rICBpZiAoISBmb2xsb3dfY2hpbGQpCi0rICAgIHsKLSsgICAgICBzMzkwX2RldGFjaF9icmVh a3BvaW50cyAoY2hpbGRfcGlkKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgaWYg KCEgaGFzX3Zmb3JrZWQpCi0rCXMzOTBfZGV0YWNoX2JyZWFrcG9pbnRzIChjaGlsZF9waWQpOwot KyAgICB9Ci0rCi0rICByZXR1cm4gKCpzMzkwX3N1cGVyX2ZvbGxvd19mb3JrKSAob3BzLCBmb2xs b3dfY2hpbGQpOwotK30KLSsKLSAKLSB2b2lkIF9pbml0aWFsaXplX3MzOTBfbmF0ICh2b2lkKTsK LSAKLUBAIC00MTIsNiArNDczLDkgQEAgX2luaXRpYWxpemVfczM5MF9uYXQgKHZvaWQpCi0gICB0 LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IHMzOTBfaW5zZXJ0X3dhdGNocG9pbnQ7Ci0gICB0LT50 b19yZW1vdmVfd2F0Y2hwb2ludCA9IHMzOTBfcmVtb3ZlX3dhdGNocG9pbnQ7Ci0gCi0rICBzMzkw X3N1cGVyX2ZvbGxvd19mb3JrID0gdC0+dG9fZm9sbG93X2Zvcms7Ci0rICB0LT50b19mb2xsb3df Zm9yayA9IHMzOTBfZm9sbG93X2Zvcms7Ci0rCi0gICAvKiBSZWdpc3RlciB0aGUgdGFyZ2V0LiAg Ki8KLSAgIGxpbnV4X25hdF9hZGRfdGFyZ2V0ICh0KTsKLSAgIGxpbnV4X25hdF9zZXRfbmV3X3Ro cmVhZCAodCwgczM5MF9maXhfd2F0Y2hfcG9pbnRzKTsKLUluZGV4OiBnZGItNi44LjUwLjIwMDkw ODAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCTIwMDktMDgtMDQgMDc6MTc6NTguMDAwMDAwMDAwICsw MjAwCi1AQCAtMCwwICsxLDE3MiBAQAotKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdh dGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgotKwotKyAgIENvcHlyaWdo dCAyMDA4Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAgIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2lu Y2x1ZGUgPGVycm5vLmg+Ci0rCi0rc3RhdGljIHZvaWQgZGVsYXkgKHZvaWQpCi0rewotKyAgaW50 IGkgPSB1c2xlZXAgKDEwMDAwMDAgLyAxMDApOwotKyAgYXNzZXJ0IChpID09IDAgfHwgZXJybm8g PT0gRUlOVFIpOwotK30KLSsKLSsjaWYgZGVmaW5lZCBGT0xMT1dfUEFSRU5UCi0rCi0rc3RhdGlj IHZvaWQgZm9ya29mZiAoaW50IG5yKQotK3sKLSsgIHBpZF90IGNoaWxkLCBwaWRfZ290OwotKyAg aW50IGV4aXRfY29kZSA9IDQyICsgbnI7Ci0rICBpbnQgc3RhdHVzLCBpOwotKwotKyAgY2hpbGQg PSBmb3JrICgpOwotKyAgc3dpdGNoIChjaGlsZCkKLSsgICAgewotKyAgICBjYXNlIC0xOgotKyAg ICAgIGFzc2VydCAoMCk7Ci0rICAgIGNhc2UgMDoKLSsgICAgICBwcmludGYgKCJjaGlsZCVkOiAl ZFxuIiwgbnIsIChpbnQpIGdldHBpZCAoKSk7Ci0rICAgICAgLyogRGVsYXkgdG8gZ2V0IGJvdGgg dGhlICJjaGlsZCVkIiBhbmQgInBhcmVudCVkIiBtZXNzYWdlIHByaW50ZWQgd2l0aG91dAotKwkg YSByYWNlIGJyZWFraW5nIGV4cGVjdCBieSBpdHMgZW5kbGVzcyB3YWl0IG9uIGAkZ2RiX3Byb21w dCQnOgotKwkgQnJlYWtwb2ludCAzLCBicmVha3BvaW50ICgpIGF0IC4uLy4uLy4uL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmM6MzMKLSsJIDMzICAgICAgfQotKwkg KGdkYikgcGFyZW50MjogMTQyMjMgICovCi0rICAgICAgaSA9IHNsZWVwICgxKTsKLSsgICAgICBh c3NlcnQgKGkgPT0gMCk7Ci0rCi0rICAgICAgLyogV2UgbXVzdCBub3QgZ2V0IGNhdWdodCBoZXJl IChhZ2FpbnN0IGEgZm9yZ290dGVuIGJyZWFrcG9pbnQpLiAgKi8KLSsgICAgICB2YXIrKzsKLSsg ICAgICBicmVha3BvaW50ICgpOwotKwotKyAgICAgIF9leGl0IChleGl0X2NvZGUpOwotKyAgICBk ZWZhdWx0OgotKyAgICAgIHByaW50ZiAoInBhcmVudCVkOiAlZFxuIiwgbnIsIChpbnQpIGNoaWxk KTsKLSsgICAgICAvKiBEZWxheSB0byBnZXQgYm90aCB0aGUgImNoaWxkJWQiIGFuZCAicGFyZW50 JWQiIG1lc3NhZ2UgcHJpbnRlZCwgc2VlCi0rCSBhYm92ZS4gICovCi0rICAgICAgaSA9IHNsZWVw ICgxKTsKLSsgICAgICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICAgICAgcGlkX2dvdCA9IHdhaXQg KCZzdGF0dXMpOwotKyAgICAgIGFzc2VydCAocGlkX2dvdCA9PSBjaGlsZCk7Ci0rICAgICAgYXNz ZXJ0IChXSUZFWElURUQgKHN0YXR1cykpOwotKyAgICAgIGFzc2VydCAoV0VYSVRTVEFUVVMgKHN0 YXR1cykgPT0gZXhpdF9jb2RlKTsKLSsKLSsgICAgICAvKiBXZSBtdXN0IGdldCBjYXVnaHQgaGVy ZSAoYWdhaW5zdCBhIGZhbHNlIHdhdGNocG9pbnQgcmVtb3ZhbCkuICAqLwotKyAgICAgIGJyZWFr cG9pbnQgKCk7Ci0rICAgIH0KLSt9Ci0rCi0rI2VsaWYgZGVmaW5lZCBGT0xMT1dfQ0hJTEQKLSsK LStzdGF0aWMgdm9sYXRpbGUgaW50IHVzcjFfZ290OwotKwotK3N0YXRpYyB2b2lkIGhhbmRsZXJf dXNyMSAoaW50IHNpZ25vKQotK3sKLSsgIHVzcjFfZ290Kys7Ci0rfQotKwotK3N0YXRpYyB2b2lk IGZvcmtvZmYgKGludCBucikKLSt7Ci0rICBwaWRfdCBjaGlsZDsKLSsgIGludCBpLCBsb29wOwot KyAgc3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9sZGFjdDsKLSsjaWZkZWYgVEhSRUFECi0rICB2b2lk ICp0aHJlYWRfcmVzdWx0OwotKyNlbmRpZgotKwotKyAgbWVtc2V0ICgmYWN0LCAwLCBzaXplb2Yg YWN0KTsKLSsgIGFjdC5zYV9mbGFncyA9IFNBX1JFU1RBUlQ7Ci0rICBhY3Quc2FfaGFuZGxlciA9 IGhhbmRsZXJfdXNyMTsKLSsgIHNpZ2VtcHR5c2V0ICgmYWN0LnNhX21hc2spOwotKyAgaSA9IHNp Z2FjdGlvbiAoU0lHVVNSMSwgJmFjdCwgJm9sZGFjdCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0r Ci0rICBjaGlsZCA9IGZvcmsgKCk7Ci0rICBzd2l0Y2ggKGNoaWxkKQotKyAgICB7Ci0rICAgIGNh c2UgLTE6Ci0rICAgICAgYXNzZXJ0ICgwKTsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBwcmludGYg KCJwYXJlbnQlZDogJWRcbiIsIG5yLCAoaW50KSBjaGlsZCk7Ci0rCi0rICAgICAgLyogU2xlZXAg Zm9yIGEgd2hpbGUgdG8gcG9zc2libHkgZ2V0IGluY29ycmVjdGx5IEFUVEFDSF9USFJFQURlZCBi eSBHREIKLSsgICAgICAgICB0cmFjaW5nIHRoZSBjaGlsZCBmb3JrIHdpdGggbm8gbG9uZ2VyIHZh bGlkIHRocmVhZC9sd3AgZW50cmllcyBvZiB0aGUKLSsgICAgICAgICBwYXJlbnQuICAqLwotKwot KyAgICAgIGkgPSBzbGVlcCAoMik7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKwotKyAgICAg IC8qIFdlIG11c3Qgbm90IGdldCBjYXVnaHQgaGVyZSAoYWdhaW5zdCBhIGZvcmdvdHRlbiBicmVh a3BvaW50KS4gICovCi0rCi0rICAgICAgdmFyKys7Ci0rICAgICAgYnJlYWtwb2ludCAoKTsKLSsK LSsjaWZkZWYgVEhSRUFECi0rICAgICAgLyogQW5kIG5laXRoZXIgZ290IGNhdWdodCBvdXIgdGhy ZWFkLiAgKi8KLSsKLSsgICAgICBzdGVwID0gOTk7Ci0rICAgICAgaSA9IHB0aHJlYWRfam9pbiAo dGhyZWFkLCAmdGhyZWFkX3Jlc3VsdCk7Ci0rICAgICAgYXNzZXJ0IChpID09IDApOwotKyAgICAg IGFzc2VydCAodGhyZWFkX3Jlc3VsdCA9PSAodm9pZCAqKSA5OVVMKTsKLSsjZW5kaWYKLSsKLSsg ICAgICAvKiBCZSBzdXJlIG91ciBjaGlsZCBrbm93cyB3ZSBkaWQgbm90IGdldCBjYXVnaHQgYWJv dmUuICAqLwotKwotKyAgICAgIGkgPSBraWxsIChjaGlsZCwgU0lHVVNSMSk7Ci0rICAgICAgYXNz ZXJ0IChpID09IDApOwotKwotKyAgICAgIC8qIFNsZWVwIGZvciBhIHdoaWxlIHRvIGNoZWNrIEdE QidzIGBpbmZvIHRocmVhZHMnIG5vIGxvbmdlciB0cmFja3MgdXMgaW4KLSsgICAgICAgICB0aGUg Y2hpbGQgZm9yay4gICovCi0rCi0rICAgICAgaSA9IHNsZWVwICgyKTsKLSsgICAgICBhc3NlcnQg KGkgPT0gMCk7Ci0rCi0rICAgICAgX2V4aXQgKDApOwotKyAgICBjYXNlIDA6Ci0rICAgICAgcHJp bnRmICgiY2hpbGQlZDogJWRcbiIsIG5yLCAoaW50KSBnZXRwaWQgKCkpOwotKwotKyAgICAgIC8q IExldCB0aGUgcGFyZW50IHNpZ25hbCB1cyBhYm91dCBpdHMgc3VjY2Vzcy4gIEJlIGNhcmVmdWwg b2YgcmFjZXMuICAqLwotKwotKyAgICAgIGZvciAobG9vcCA9IDA7IGxvb3AgPCAxMDAwOyBsb29w KyspCi0rICAgICAgICB7Ci0rCSAgLyogUGFyZW50IGVpdGhlciBkaWVkIChhbmQgVVNSMV9HT1Qg aXMgemVybykgb3IgaXQgc3VjY2VlZGVkLiAgKi8KLSsJICBpZiAoa2lsbCAoZ2V0cHBpZCAoKSwg MCkgIT0gMCkKLSsJICAgIGJyZWFrOwotKwkgIC8qIFBhcmVudCBzdWNjZWVkZWQ/ICAqLwotKwkg IGlmICh1c3IxX2dvdCkKLSsJICAgIGJyZWFrOwotKwotKwkgIGRlbGF5ICgpOwotKwl9Ci0rICAg ICAgYXNzZXJ0ICh1c3IxX2dvdCk7Ci0rCi0rICAgICAgLyogV2UgbXVzdCBnZXQgY2F1Z2h0IGhl cmUgKGFnYWluc3QgYSBmYWxzZSB3YXRjaHBvaW50IHJlbW92YWwpLiAgKi8KLSsKLSsgICAgICBi cmVha3BvaW50ICgpOwotKyAgICB9Ci0rCi0rICBpID0gc2lnYWN0aW9uIChTSUdVU1IxLCAmb2xk YWN0LCBOVUxMKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSt9Ci0rCi0rI2Vsc2UKLSsjIGVycm9y ICIhRk9MTE9XX1BBUkVOVCAmJiAhRk9MTE9XX0NISUxEIgotKyNlbmRpZgotSW5kZXg6IGdkYi02 LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmst bXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYwkyMDA5LTA4LTA0IDA3OjE3OjU4LjAwMDAwMDAwMCAr MDIwMAotQEAgLTAsMCArMSwxNTQgQEAKLSsvKiBUZXN0IGNhc2UgZm9yIGZvcmdvdHRlbiBody13 YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KLSsKLSsgICBDb3B5cmln aHQgMjAwOAotKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg ZmlsZSBpcyBwYXJ0IG9mIEdEQi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAg IEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLSsgICBCb3N0 b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNp bmNsdWRlIDx1bmlzdGQuaD4KLSsjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSsjaW5jbHVkZSA8c3Rk aW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSsKLSsj aW5jbHVkZSA8YXNtL3VuaXN0ZC5oPgotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZGVmaW5lIGdl dHRpZCgpIHN5c2NhbGwgKF9fTlJfZ2V0dGlkKQotKwotKy8qIE5vbi1hdG9taWMgYHZhcisrJyBz aG91bGQgbm90IGh1cnQgYXMgd2Ugc3luY2hyb25pemUgdGhlIHRocmVhZHMgYnkgdGhlIFNURVAK LSsgICB2YXJpYWJsZS4gIEhpdC1jb21tZW50cyBuZWVkIHRvIGJlIGR1cGxpY2l0ZSB0aGVyZSB0 byBjYXRjaCBib3RoIGF0LXN0b3BzCi0rICAgYW5kIGJlaGluZC1zdG9wcywgZGVwZW5kaW5nIG9u IHRoZSB0YXJnZXQuICAqLwotKwotK3N0YXRpYyB2b2xhdGlsZSBpbnQgdmFyOwotKwotK3N0YXRp YyB2b2lkIGR1bW15ICh2b2lkKQotK3sKLSt9Ci0rCi0rc3RhdGljIHZvaWQgYnJlYWtwb2ludCAo dm9pZCkKLSt7Ci0rfQotKwotKy8qIEluY2x1ZGUgaGVyZSB0aGUgZnVuY3Rpb25zOgotKyAgIHN0 YXRpYyB2b2lkIGZvcmtvZmYgKGludCBucik7Ci0rICAgc3RhdGljIHZvaWQgZGVsYXkgKHZvaWQp OyAgKi8KLSsKLStzdGF0aWMgcHRocmVhZF90IHRocmVhZDsKLStzdGF0aWMgdm9sYXRpbGUgaW50 IHN0ZXA7Ci0rI2RlZmluZSBUSFJFQUQKLSsKLSsjaW5jbHVkZSAid2F0Y2hwb2ludC1mb3JrLWZv cmtvZmYuYyIKLSsKLStzdGF0aWMgdm9pZCAqc3RhcnQgKHZvaWQgKmFyZykKLSt7Ci0rICBpZiAo c3RlcCA+PSAzKQotKyAgICBnb3RvIHN0ZXBfMzsKLSsKLSsgIHdoaWxlIChzdGVwICE9IDEpCi0r ICAgIGRlbGF5ICgpOwotKwotKyAgdmFyKys7CS8qIHZhbGlkaXR5LXRocmVhZC1CICovCi0rICBk dW1teSAoKTsJLyogdmFsaWRpdHktdGhyZWFkLUIgKi8KLSsgIHN0ZXAgPSAyOwotKyAgd2hpbGUg KHN0ZXAgIT0gMykKLSsgICAgewotKyAgICAgIGlmIChzdGVwID09IDk5KQotKyAgICAgICAgZ290 byBzdGVwXzk5OwotKyAgICAgIGRlbGF5ICgpOwotKyAgICB9Ci0rCi0rc3RlcF8zOgotKyAgaWYg KHN0ZXAgPj0gNSkKLSsgICAgZ290byBzdGVwXzU7Ci0rCi0rICB2YXIrKzsJLyogYWZ0ZXItZm9y azEtQiAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVyLWZvcmsxLUIgKi8KLSsgIHN0ZXAgPSA0Owot KyAgd2hpbGUgKHN0ZXAgIT0gNSkKLSsgICAgewotKyAgICAgIGlmIChzdGVwID09IDk5KQotKyAg ICAgICAgZ290byBzdGVwXzk5OwotKyAgICAgIGRlbGF5ICgpOwotKyAgICB9Ci0rCi0rc3RlcF81 OgotKyAgdmFyKys7CS8qIGFmdGVyLWZvcmsyLUIgKi8KLSsgIGR1bW15ICgpOwkvKiBhZnRlci1m b3JrMi1CICovCi0rICByZXR1cm4gKHZvaWQgKikgNVVMOwotKwotK3N0ZXBfOTk6Ci0rICAvKiBX ZSBtdXN0IG5vdCBnZXQgY2F1Z2h0IGhlcmUgKGFnYWluc3QgYSBmb3Jnb3R0ZW4gYnJlYWtwb2lu dCkuICAqLwotKyAgdmFyKys7Ci0rICBicmVha3BvaW50ICgpOwotKyAgcmV0dXJuICh2b2lkICop IDk5VUw7Ci0rfQotKwotK2ludCBtYWluICh2b2lkKQotK3sKLSsgIGludCBpOwotKyAgdm9pZCAq dGhyZWFkX3Jlc3VsdDsKLSsKLSsgIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKLSsgIHByaW50ZiAo Im1haW46ICVkXG4iLCAoaW50KSBnZXR0aWQgKCkpOwotKwotKyAgLyogR2VuZXJhbCB3YXRjaHBv aW50cyB2YWxpZGl0eS4gICovCi0rICB2YXIrKzsJLyogdmFsaWRpdHktZmlyc3QgKi8KLSsgIGR1 bW15ICgpOwkvKiB2YWxpZGl0eS1maXJzdCAqLwotKwotKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgm dGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICB2 YXIrKzsJLyogdmFsaWRpdHktdGhyZWFkLUEgKi8KLSsgIGR1bW15ICgpOwkvKiB2YWxpZGl0eS10 aHJlYWQtQSAqLwotKyAgc3RlcCA9IDE7Ci0rICB3aGlsZSAoc3RlcCAhPSAyKQotKyAgICBkZWxh eSAoKTsKLSsKLSsgIC8qIEhhcmR3YXJlIHdhdGNocG9pbnRzIGdvdCBkaXNhcm1lZCBoZXJlLiAg Ki8KLSsgIGZvcmtvZmYgKDEpOwotKwotKyAgdmFyKys7CS8qIGFmdGVyLWZvcmsxLUEgKi8KLSsg IGR1bW15ICgpOwkvKiBhZnRlci1mb3JrMS1BICovCi0rICBzdGVwID0gMzsKLSsjaWZkZWYgRk9M TE9XX0NISUxECi0rICAvKiBTcGF3biBuZXcgdGhyZWFkIGFzIGl0IHdhcyBkZWxldGVkIGluIHRo ZSBjaGlsZCBvZiBGT1JLLiAgKi8KLSsgIGkgPSBwdGhyZWFkX2NyZWF0ZSAoJnRocmVhZCwgTlVM TCwgc3RhcnQsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDApOwotKyNlbmRpZgotKyAgd2hpbGUg KHN0ZXAgIT0gNCkKLSsgICAgZGVsYXkgKCk7Ci0rCi0rICAvKiBBIHNhbml0eSBjaGVjayBmb3Ig ZG91YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAqLwotKyAgZm9ya29mZiAoMik7 Ci0rCi0rICB2YXIrKzsJLyogYWZ0ZXItZm9yazItQSAqLwotKyAgZHVtbXkgKCk7CS8qIGFmdGVy LWZvcmsyLUEgKi8KLSsgIHN0ZXAgPSA1OwotKyNpZmRlZiBGT0xMT1dfQ0hJTEQKLSsgIC8qIFNw YXduIG5ldyB0aHJlYWQgYXMgaXQgd2FzIGRlbGV0ZWQgaW4gdGhlIGNoaWxkIG9mIEZPUksuICAq LwotKyAgaSA9IHB0aHJlYWRfY3JlYXRlICgmdGhyZWFkLCBOVUxMLCBzdGFydCwgTlVMTCk7Ci0r ICBhc3NlcnQgKGkgPT0gMCk7Ci0rI2VuZGlmCi0rCi0rICBpID0gcHRocmVhZF9qb2luICh0aHJl YWQsICZ0aHJlYWRfcmVzdWx0KTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsgIGFzc2VydCAodGhy ZWFkX3Jlc3VsdCA9PSAodm9pZCAqKSA1VUwpOwotKwotKyAgcmV0dXJuIDA7Ci0rfQotSW5kZXg6 IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50 LWZvcmsuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmsuYwkyMDA5LTA4LTA0IDA3OjE3OjU4LjAwMDAwMDAwMCAr MDIwMAotQEAgLTAsMCArMSw1NiBAQAotKy8qIFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdh dGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYgb2YgYSBwcm9jZXNzLgotKwotKyAgIENvcHlyaWdo dCAyMDA4Ci0rICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAg Rm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAgIEJvc3Rv biwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsKLSsjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0rI2lu Y2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzeXMvd2FpdC5oPgotKyNpbmNsdWRlIDxzdGRp by5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLStzdGF0aWMgdm9sYXRpbGUgaW50IHZhcjsK LSsKLStzdGF0aWMgdm9pZCBicmVha3BvaW50ICh2b2lkKQotK3sKLSt9Ci0rCi0rLyogSW5jbHVk ZSBoZXJlIHRoZSBmdW5jdGlvbjoKLSsgICBzdGF0aWMgdm9pZCBmb3Jrb2ZmIChpbnQgbnIpOyAg Ki8KLSsKLSsjaW5jbHVkZSAid2F0Y2hwb2ludC1mb3JrLWZvcmtvZmYuYyIKLSsKLStpbnQgbWFp biAodm9pZCkKLSt7Ci0rICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7Ci0rICBwcmludGYgKCJtYWlu OiAlZFxuIiwgKGludCkgZ2V0cGlkICgpKTsKLSsKLSsgIC8qIEdlbmVyYWwgd2F0Y2hwb2ludHMg dmFsaWRpdHkuICAqLwotKyAgdmFyKys7Ci0rICAvKiBIYXJkd2FyZSB3YXRjaHBvaW50cyBnb3Qg ZGlzYXJtZWQgaGVyZS4gICovCi0rICBmb3Jrb2ZmICgxKTsKLSsgIC8qIFRoaXMgd2F0Y2hwb2lu dCBnb3QgbG9zdCBiZWZvcmUuICAqLwotKyAgdmFyKys7Ci0rICAvKiBBIHNhbml0eSBjaGVjayBm b3IgZG91YmxlIGhhcmR3YXJlIHdhdGNocG9pbnRzIHJlbW92YWwuICAqLwotKyAgZm9ya29mZiAo Mik7Ci0rICB2YXIrKzsKLSsKLSsgIHJldHVybiAwOwotK30KLUluZGV4OiBnZGItNi44LjUwLjIw MDkwODAzL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHBvaW50LWZvcmsuZXhwCTIwMDktMDgtMDQgMDc6MTc6NTguMDAwMDAwMDAwICswMjAwCi1AQCAt MCwwICsxLDE0MCBAQAotKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVGVzdCBjYXNl IGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nl c3MuCi0rCi0rcHJvYyB0ZXN0IHt0eXBlIHN5bWJvbH0gewotKyAgICBnbG9iYWwgb2JqZGlyIHN1 YmRpciBzcmNkaXIKLSsKLSsgICAgZ2xvYmFsIHBmX3ByZWZpeAotKyAgICBzZXQgcHJlZml4X3Rl c3QgJHBmX3ByZWZpeAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAiJHR5cGU6IgotKyAgICBzZXQg cHJlZml4X210ICRwZl9wcmVmaXgKLSsKLSsgICAgIyBubyB0aHJlYWRzCi0rCi0rICAgIHNldCBw Zl9wcmVmaXggJHByZWZpeF9tdAotKyAgICBsYXBwZW5kIHBmX3ByZWZpeCAic2luZ2xldGhyZWFk ZWQ6IgotKwotKyAgICBzZXQgdGVzdGZpbGUgd2F0Y2hwb2ludC1mb3JrCi0rICAgIHNldCBzcmNm aWxlICR7dGVzdGZpbGV9LmMKLSsgICAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfQotKwotKyAgICBpZiAgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRp cn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgImRlYnVnIGFkZGl0aW9uYWxf ZmxhZ3M9LUQkc3ltYm9sIl0gIT0gIiIgfSB7Ci0rCXVudGVzdGVkICJDb3VsZG4ndCBjb21waWxl IHRlc3QgcHJvZ3JhbSIKLSsJcmV0dXJuIC0xCi0rICAgIH0KLSsKLSsgICAgZ2RiX2V4aXQKLSsg ICAgZ2RiX3N0YXJ0Ci0rICAgIGdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1YmRpcgot KyAgICBnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rICAgIGdkYl90ZXN0ICJzZXQgZm9sbG93LWZv cmstbW9kZSAkdHlwZSIKLSsgICAgIyBUZXN0Y2FzZSB1c2VzIGl0IGZvciB0aGUgYGZvbGxvdy1m b3JrLW1vZGUgY2hpbGQnIHR5cGUuCi0rICAgIGdkYl90ZXN0ICJoYW5kbGUgU0lHVVNSMSBub3N0 b3Agbm9wcmludCBwYXNzIgotKwotKyAgICBpZiB7ICFbcnVudG9fbWFpbl0gfSB0aGVuIHsKLSsJ Z2RiX3N1cHByZXNzX3Rlc3RzCi0rCXJldHVybgotKyAgICB9Ci0rCi0rICAgICMgSW5zdGFsbCB0 aGUgd2F0Y2hwb2ludCBvbmx5IGFmdGVyIGdldHRpbmcgaW50byBNQUlOIC0gd29ya2Fyb3VuZCBz b21lIFBQQwotKyAgICAjIHByb2JsZW0uCi0rICAgIGdkYl90ZXN0ICJ3YXRjaCB2YXIiICJhdGNo cG9pbnQgMjogdmFyIiAiU2V0IHRoZSB3YXRjaHBvaW50IgotKwotKyAgICAjIEl0IGlzIG5ldmVy IGhpdCBidXQgaXQgc2hvdWxkIG5vdCBiZSBsZWZ0IG92ZXIgaW4gdGhlIGZvcmsoKWVkLW9mZiBj aGlsZC4KLSsgICAgZ2RiX2JyZWFrcG9pbnQgImJyZWFrcG9pbnQiCi0rCi0rICAgIGdkYl90ZXN0 ICJjb250aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAwLipO ZXcgdmFsdWUgPSAxLipmb3Jrb2ZmICpcXCgxXFwpLioiICJ3YXRjaHBvaW50cyB3b3JrIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9pbnQu KiIgImJyZWFrcG9pbnQgYWZ0ZXIgdGhlIGZpcnN0IGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250 aW51ZSIgXAotKwkgICAgICJhdGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSAxLipOZXcgdmFs dWUgPSAyLipmb3Jrb2ZmICpcXCgyXFwpLioiICJ3YXRjaHBvaW50IGFmdGVyIHRoZSBmaXJzdCBm b3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJy ZWFrcG9pbnQuKiIgImJyZWFrcG9pbnQgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgotKyAgICBnZGJf dGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0g Mi4qTmV3IHZhbHVlID0gMy4qcmV0dXJuICowOyIgIndhdGNocG9pbnQgYWZ0ZXIgdGhlIHNlY29u ZCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiICJDb250aW51aW5nLi4qUHJvZ3JhbSBl eGl0ZWQgbm9ybWFsbHkuIiAiZmluaXNoIgotKwotKwotKyAgICAjIHRocmVhZHMKLSsKLSsgICAg c2V0IHBmX3ByZWZpeCAkcHJlZml4X210Ci0rICAgIGxhcHBlbmQgcGZfcHJlZml4ICJtdWx0aXRo cmVhZGVkOiIKLSsKLSsgICAgc2V0IHRlc3RmaWxlIHdhdGNocG9pbnQtZm9yay1tdAotKyAgICBz ZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rICAgIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1 YmRpcn0vJHt0ZXN0ZmlsZX0KLSsKLSsgICAgaWYgIHsgW2dkYl9jb21waWxlX3B0aHJlYWRzICIk e3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlICJk ZWJ1ZyBhZGRpdGlvbmFsX2ZsYWdzPS1EJHN5bWJvbCJdICE9ICIiIH0gewotKwl1bnRlc3RlZCAi Q291bGRuJ3QgY29tcGlsZSB0ZXN0IHByb2dyYW0iCi0rCXJldHVybiAtMQotKyAgICB9Ci0rCi0r ICAgIGdkYl9leGl0Ci0rICAgIGdkYl9zdGFydAotKyAgICBnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKLSsgICAgZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKyAgICBnZGJfdGVz dCAic2V0IGZvbGxvdy1mb3JrLW1vZGUgJHR5cGUiCi0rICAgICMgVGVzdGNhc2UgdXNlcyBpdCBm b3IgdGhlIGBmb2xsb3ctZm9yay1tb2RlIGNoaWxkJyB0eXBlLgotKyAgICBnZGJfdGVzdCAiaGFu ZGxlIFNJR1VTUjEgbm9zdG9wIG5vcHJpbnQgcGFzcyIKLSsKLSsgICAgaWYgeyAhW3J1bnRvX21h aW5dIH0gdGhlbiB7Ci0rCWdkYl9zdXBwcmVzc190ZXN0cwotKwlyZXR1cm4KLSsgICAgfQotKwot KyAgICAjIEluc3RhbGwgdGhlIHdhdGNocG9pbnQgb25seSBhZnRlciBnZXR0aW5nIGludG8gTUFJ TiAtIHdvcmthcm91bmQgc29tZSBQUEMKLSsgICAgIyBwcm9ibGVtLgotKyAgICBnZGJfdGVzdCAi d2F0Y2ggdmFyIiAiYXRjaHBvaW50IDI6IHZhciIgIlNldCB0aGUgd2F0Y2hwb2ludCIKLSsKLSsg ICAgIyBJdCBpcyBuZXZlciBoaXQgYnV0IGl0IHNob3VsZCBub3QgYmUgbGVmdCBvdmVyIGluIHRo ZSBmb3JrKCllZC1vZmYgY2hpbGQuCi0rICAgIGdkYl9icmVha3BvaW50ICJicmVha3BvaW50Igot KwotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4q T2xkIHZhbHVlID0gMC4qTmV3IHZhbHVlID0gMS4qdmFsaWRpdHktZmlyc3QuKiIgInNpbmdsZXRo cmVhZCB3YXRjaHBvaW50cyB3b3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAg ICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gMS4qTmV3IHZhbHVlID0gMi4qdmFsaWRp dHktdGhyZWFkLUEuKiIgIm11bHRpdGhyZWFkZWQgd2F0Y2hwb2ludHMgd29yayBhdCBBIgotKyAg ICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZh bHVlID0gMi4qTmV3IHZhbHVlID0gMy4qdmFsaWRpdHktdGhyZWFkLUIuKiIgIm11bHRpdGhyZWFk ZWQgd2F0Y2hwb2ludHMgd29yayBhdCBCIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJ ICAgICAicmVha3BvaW50IDMsIGJyZWFrcG9pbnQuKiIgImJyZWFrcG9pbnQgKEEpIGFmdGVyIHRo ZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAiYXRjaHBv aW50IDI6IHZhci4qT2xkIHZhbHVlID0gMy4qTmV3IHZhbHVlID0gNC4qYWZ0ZXItZm9yazEtQS4q IiAid2F0Y2hwb2ludCBBIGFmdGVyIHRoZSBmaXJzdCBmb3JrIgotKyAgICBnZGJfdGVzdCAiY29u dGludWUiIFwKLSsJICAgICAiYXRjaHBvaW50IDI6IHZhci4qT2xkIHZhbHVlID0gNC4qTmV3IHZh bHVlID0gNS4qYWZ0ZXItZm9yazEtQi4qIiAid2F0Y2hwb2ludCBCIGFmdGVyIHRoZSBmaXJzdCBm b3JrIgotKyAgICBnZGJfdGVzdCAiY29udGludWUiIFwKLSsJICAgICAicmVha3BvaW50IDMsIGJy ZWFrcG9pbnQuKiIgImJyZWFrcG9pbnQgKEEpIGFmdGVyIHRoZSBzZWNvbmQgZm9yayIKLSsgICAg Z2RiX3Rlc3QgImNvbnRpbnVlIiBcCi0rCSAgICAgImF0Y2hwb2ludCAyOiB2YXIuKk9sZCB2YWx1 ZSA9IDUuKk5ldyB2YWx1ZSA9IDYuKmFmdGVyLWZvcmsyLUEuKiIgIndhdGNocG9pbnQgQSBhZnRl ciB0aGUgc2Vjb25kIGZvcmsiCi0rICAgIGdkYl90ZXN0ICJjb250aW51ZSIgXAotKwkgICAgICJh dGNocG9pbnQgMjogdmFyLipPbGQgdmFsdWUgPSA2LipOZXcgdmFsdWUgPSA3LiphZnRlci1mb3Jr Mi1CLioiICJ3YXRjaHBvaW50IEIgYWZ0ZXIgdGhlIHNlY29uZCBmb3JrIgotKyAgICBnZGJfdGVz dCAiY29udGludWUiICJDb250aW51aW5nLi4qUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHkuIiAiZmlu aXNoIgotKwotKwotKyAgICAjIGNsZWFudXAKLSsKLSsgICAgc2V0IHBmX3ByZWZpeCAkcHJlZml4 X3Rlc3QKLSt9Ci0rCi0rdGVzdCBwYXJlbnQgRk9MTE9XX1BBUkVOVAotKwotKyMgT25seSBHTlUv TGludXggaXMga25vd24gdG8gc3VwcG9ydCBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnLgot K2lmIHtbaXN0YXJnZXQgIiotKi1saW51eCoiXX0gewotKyAgICB0ZXN0IGNoaWxkIEZPTExPV19D SElMRAotK30KLUluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9kb2MvZ2RiLnRleGluZm8K LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDA5LTA4LTA0IDA3OjE3OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAu MjAwOTA4MDMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDA5LTA4LTA0IDA3OjE3OjU4LjAwMDAwMDAw MCArMDIwMAotQEAgLTM2MjUsNiArMzYyNSwxNCBAQCBjb25maWRlbnQgdGhhdCBubyBvdGhlciB0 aHJlYWQgY2FuIGJlY29tCi0gc29mdHdhcmUgd2F0Y2hwb2ludHMgYXMgdXN1YWwuICBIb3dldmVy LCBAdmFsdWV7R0RCTn0gbWF5IG5vdCBub3RpY2UKLSB3aGVuIGEgbm9uLWN1cnJlbnQgdGhyZWFk J3MgYWN0aXZpdHkgY2hhbmdlcyB0aGUgZXhwcmVzc2lvbi4gIChIYXJkd2FyZQotIHdhdGNocG9p bnRzLCBpbiBjb250cmFzdCwgd2F0Y2ggYW4gZXhwcmVzc2lvbiBpbiBhbGwgdGhyZWFkcy4pCi0r Ci0rU29mdHdhcmUgd2F0Y2hwb2ludHMgc2luZ2xlLXN0ZXAgdGhlIGN1cnJlbnQgdGhyZWFkIHRv IHRyYWNrIHRoZSBjaGFuZ2VzLgotK090aGVyIHRocmVhZHMgYXJlIGxlZnQgZnJlZWx5IHJ1bm5p bmcgb24gQGNvZGV7Y29udGludWV9OyB0aGVyZWZvcmUsIHRoZWlyCi0rY2hhbmdlcyBjYW5ub3Qg YmUgY2F1Z2h0LiAgVG8gZ2V0IG1vcmUgcmVsaWFibGUgc29mdHdhcmUgd2F0Y2hwb2ludHMsIHBs ZWFzZQotK3VzZSBAY29kZXtzZXQgc2NoZWR1bGVyLWxvY2tpbmcgb259LiAgVGhlIGRlZmF1bHQg Zm9yIFJlZCBIYXQvRmVkb3JhCi0rQHZhbHVle0dEQk59IGlzIEBjb2Rle3NldCBzY2hlZHVsZXIt bG9ja2luZyBzdGVwfSwgd2hpY2ggbWFrZXMgdGhlIHNvZnR3YXJlCi0rd2F0Y2hwb2ludHMgc2Fm ZSBmb3IgdGhlIEBjb2Rle3N0ZXB9IGNvbW1hbmQsIGJ1dCBub3QgZm9yIHRoZSBAY29kZXtjb250 aW51ZX0KLStjb21tYW5kLiAgQHhyZWZ7VGhyZWFkIFN0b3BzfS4KLSBAZW5kIHF1b3RhdGlvbgot IAotIEB4cmVme3NldCByZW1vdGUgaGFyZHdhcmUtd2F0Y2hwb2ludC1saW1pdH0uCi1JbmRleDog Z2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvY29uZmlnL2kzODYvbm0tbGludXgu aAkyMDA5LTA4LTA0IDA3OjE3OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi02LjguNTAuMjAw OTA4MDMvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgJMjAwOS0wOC0wNCAwNzoxNzo1OC4wMDAw MDAwMDAgKzAyMDAKLUBAIC0yOSw0ICsyOSwxNCBAQAotICNkZWZpbmUgRklMTF9GUFhSRUdTRVQK LSAjZW5kaWYKLSAKLSsvKiBSZW1vdmUgYSB3YXRjaHBvaW50IHRoYXQgd2F0Y2hlZCB0aGUgbWVt b3J5IHJlZ2lvbiB3aGljaCBzdGFydHMgYXQKLSsgKiAgICBhZGRyZXNzIEFERFIsIHdob3NlIGxl bmd0aCBpcyBMRU4gYnl0ZXMsIGFuZCBmb3IgYWNjZXNzZXMgb2YgdGhlCi0rICogICAgICAgdHlw ZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFpbHVyZS4gICovCi0rZXh0ZXJu IGludCBpMzg2X2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHR5cGUpOwotKwotKy8qIE92ZXJyaWRlIGJhc2ljIGkzODYgbWFjcm9zIGZvciB3YXRj aHBvaW50IGFuZCBoYXJkd2FyZSBicmVha3BvaW50Ci0rICAgaW5zZXJ0aW9uL3JlbW92YWwgdG8g c3VwcG9ydCB0aHJlYWRzLiAgKi8KLSsjZGVmaW5lIHRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludChh ZGRyLCBsZW4sIHR5cGUpIFwKLSsgIGkzODZfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKGFkZHIs IGxlbiwgdHlwZSkKLSsKLSAjZW5kaWYgLyogbm0tbGludXguaCAqLwotSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDMvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4NjQuaAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCTIw MDktMDgtMDQgMDc6MTc6MTkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgw My9nZGIvY29uZmlnL2kzODYvbm0tbGludXg2NC5oCTIwMDktMDgtMDQgMDc6MTc6NTguMDAwMDAw MDAwICswMjAwCi1AQCAtNTEsNCArNTEsMTQgQEAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgYW1kNjRf bGludXhfZHJfZ2V0XwotICNkZWZpbmUgSTM4Nl9EUl9MT1dfR0VUX1NUQVRVUygpIFwKLSAgIGFt ZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKCkKLSAKLSsvKiBSZW1vdmUgYSB3YXRjaHBvaW50IHRo YXQgd2F0Y2hlZCB0aGUgbWVtb3J5IHJlZ2lvbiB3aGljaCBzdGFydHMgYXQKLSsgKiAgICBhZGRy ZXNzIEFERFIsIHdob3NlIGxlbmd0aCBpcyBMRU4gYnl0ZXMsIGFuZCBmb3IgYWNjZXNzZXMgb2Yg dGhlCi0rICogICAgICAgdHlwZSBUWVBFLiAgUmV0dXJuIDAgb24gc3VjY2VzcywgLTEgb24gZmFp bHVyZS4gICovCi0rZXh0ZXJuIGludCBhbWQ2NF9saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlKTsKLSsKLSsvKiBPdmVycmlkZSBiYXNpYyBh bWQ2NCBtYWNyb3MgZm9yIHdhdGNocG9pbnQgYW5kIGhhcmR3YXJlIGJyZWFrcG9pbnQKLSsgICBp bnNlcnRpb24vcmVtb3ZhbCB0byBzdXBwb3J0IHRocmVhZHMuICAqLwotKyNkZWZpbmUgdGFyZ2V0 X3JlbW92ZV93YXRjaHBvaW50KGFkZHIsIGxlbiwgdHlwZSkgXAotKyAgYW1kNjRfbGludXhfcmVt b3ZlX3dhdGNocG9pbnQgKGFkZHIsIGxlbiwgdHlwZSkKLSsKLSAjZW5kaWYgLyogbm0tbGludXg2 NC5oICovCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGFyZ2V0LmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODAzLm9yaWcvZ2RiL3RhcmdldC5oCTIwMDktMDgtMDQg MDc6MTc6MTkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvdGFy Z2V0LmgJMjAwOS0wOC0wNCAwNzozNToxMy4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMTE0LDExICsx MTE0LDE1IEBAIGV4dGVybiBjaGFyICpub3JtYWxfcGlkX3RvX3N0ciAocHRpZF90IHAKLSAgICBm b3Igd3JpdGUsIDEgZm9yIHJlYWQsIGFuZCAyIGZvciByZWFkL3dyaXRlIGFjY2Vzc2VzLiAgUmV0 dXJucyAwIGZvcgotICAgIHN1Y2Nlc3MsIG5vbi16ZXJvIGZvciBmYWlsdXJlLiAgKi8KLSAKLSsj aWZuZGVmIHRhcmdldF9pbnNlcnRfd2F0Y2hwb2ludAotICNkZWZpbmUJdGFyZ2V0X2luc2VydF93 YXRjaHBvaW50KGFkZHIsIGxlbiwgdHlwZSkJXAotICAgICAgKCpjdXJyZW50X3RhcmdldC50b19p bnNlcnRfd2F0Y2hwb2ludCkgKGFkZHIsIGxlbiwgdHlwZSkKLSsjZW5kaWYKLSAKLSsjaWZuZGVm IHRhcmdldF9yZW1vdmVfd2F0Y2hwb2ludAotICNkZWZpbmUJdGFyZ2V0X3JlbW92ZV93YXRjaHBv aW50KGFkZHIsIGxlbiwgdHlwZSkJXAotICAgICAgKCpjdXJyZW50X3RhcmdldC50b19yZW1vdmVf d2F0Y2hwb2ludCkgKGFkZHIsIGxlbiwgdHlwZSkKLSsjZW5kaWYKLSAKLSAjZGVmaW5lIHRhcmdl dF9pbnNlcnRfaHdfYnJlYWtwb2ludChnZGJhcmNoLCBicF90Z3QpIFwKLSAgICAgICgqY3VycmVu dF90YXJnZXQudG9faW5zZXJ0X2h3X2JyZWFrcG9pbnQpIChnZGJhcmNoLCBicF90Z3QpCgpkaWZm IC0tZ2l0IGEvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaCBiL2dkYi02LjgtZm9y dHJhbi10YWctY29uc3RhbnQucGF0Y2gKaW5kZXggODYxNDM5NS4uYTdjYzFkZCAxMDA2NDQKLS0t IGEvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaAorKysgYi9nZGItNi44LWZvcnRy YW4tdGFnLWNvbnN0YW50LnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdkYi02LjguNTAu MjAwOTA4MDMvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MTEvZ2Ri L2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi02LjguNTAuMjAwOTA4MDMub3JpZy9n ZGIvZHdhcmYycmVhZC5jCTIwMDktMDgtMDQgMDY6MzI6NTguMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTYuOC41MC4yMDA5MDgwMy9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDgtMDQgMDY6MzM6MTgu MDAwMDAwMDAwICswMjAwCi1AQCAtMjQ1OSw2ICsyNDU5LDcgQEAgc2Nhbl9wYXJ0aWFsX3N5bWJv bHMgKHN0cnVjdCBwYXJ0aWFsX2RpZQorLS0tIGdkYi02LjguNTAuMjAwOTA4MTEub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMDktMDgtMTMgMTA6MTQ6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTYuOC41MC4yMDA5MDgxMS9nZGIvZHdhcmYycmVhZC5jCTIwMDktMDgtMTMgMTA6MjI6MzYuMDAw MDAwMDAwICswMjAwCitAQCAtMjQ4MCw2ICsyNDgwLDcgQEAgc2Nhbl9wYXJ0aWFsX3N5bWJvbHMg KHN0cnVjdCBwYXJ0aWFsX2RpZQogIAkgICAgICBhZGRfcGFydGlhbF9zdWJwcm9ncmFtIChwZGks IGxvd3BjLCBoaWdocGMsIG5lZWRfcGMsIGN1KTsKICAJICAgICAgYnJlYWs7CiAgCSAgICBjYXNl IERXX1RBR192YXJpYWJsZToKQEAgLTEwLDcgKzEwLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAw OTA4MDMvZ2RiL2R3YXJmMnJlYWQuYwogIAkgICAgY2FzZSBEV19UQUdfdHlwZWRlZjoKICAJICAg IGNhc2UgRFdfVEFHX3VuaW9uX3R5cGU6CiAgCSAgICAgIGlmICghcGRpLT5pc19kZWNsYXJhdGlv bikKLUBAIC0yNjU0LDYgKzI2NTUsNyBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0 aWFsX2RpZV9pCitAQCAtMjY3NSw2ICsyNjc2LDcgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1 Y3QgcGFydGlhbF9kaWVfaQogIAl9CiAgICAgICAgYnJlYWs7CiAgICAgIGNhc2UgRFdfVEFHX3Zh cmlhYmxlOgpAQCAtMTgsNyArMTgsMTUgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2Ri L2R3YXJmMnJlYWQuYwogICAgICAgIGlmIChwZGktPmlzX2V4dGVybmFsKQogIAl7CiAgCSAgLyog R2xvYmFsIFZhcmlhYmxlLgotQEAgLTQ3OTAsNyArNDc5Miw4IEBAIGR3YXJmMl9hZGRfZmllbGQg KHN0cnVjdCBmaWVsZF9pbmZvICpmaXAKK0BAIC0yODA1LDYgKzI4MDcsNyBAQCBkaWVfbmVlZHNf bmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpCisgICAgICAgcmV0dXJuIDE7CisgCisgICAg IGNhc2UgRFdfVEFHX3ZhcmlhYmxlOgorKyAgICBjYXNlIERXX1RBR19jb25zdGFudDoKKyAgICAg ICB7CisgCXN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisgCWF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9zcGVjaWZpY2F0aW9uLCBjdSk7CitAQCAtNDc0MSw3ICs0NzQ0LDggQEAgZHdhcmYy X2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcAogIAkgIGZpcC0+bm9uX3B1YmxpY19m aWVsZHMgPSAxOwogIAl9CiAgICAgIH0KQEAgLTI4LDcgKzM2LDcgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDMvZ2RiL2R3YXJmMnJlYWQuYwogICAgICB7CiAgICAgICAgLyogQysrIHN0YXRp YyBtZW1iZXIuICAqLwogIAotQEAgLTUyOTcsNyArNTMwMCw4IEBAIHJlYWRfc3RydWN0dXJlX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGkKK0BAIC01MjMzLDcgKzUyMzcsOCBAQCByZWFkX3N0cnVj dHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpCiAgICAgICAgd2hpbGUgKGNoaWxkX2RpZSAm JiBjaGlsZF9kaWUtPnRhZykKICAJewogIAkgIGlmIChjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdf bWVtYmVyCkBAIC0zOCw3ICs0Niw3IEBAIEluZGV4OiBnZGItNi44LjUwLjIwMDkwODAzL2dkYi9k d2FyZjJyZWFkLmMKICAJICAgIHsKICAJICAgICAgLyogTk9URTogY2FybHRvbi8yMDAyLTExLTA1 OiBBIEMrKyBzdGF0aWMgZGF0YSBtZW1iZXIKICAJCSBzaG91bGQgYmUgYSBEV19UQUdfbWVtYmVy IHRoYXQgaXMgYSBkZWNsYXJhdGlvbiwgYnV0Ci1AQCAtNTQxNiw2ICs1NDIwLDcgQEAgcHJvY2Vz c19zdHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbworQEAgLTUzNTIsNiArNTM1Nyw3IEBA IHByb2Nlc3Nfc3RydWN0dXJlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8KICAgICAgewogICAgICAg IGlmIChjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVyCiAgCSAgfHwgY2hpbGRfZGllLT50 YWcgPT0gRFdfVEFHX3ZhcmlhYmxlCkBAIC00NiwxNSArNTQsMTUgQEAgSW5kZXg6IGdkYi02Ljgu NTAuMjAwOTA4MDMvZ2RiL2R3YXJmMnJlYWQuYwogIAkgIHx8IGNoaWxkX2RpZS0+dGFnID09IERX X1RBR19pbmhlcml0YW5jZSkKICAJewogIAkgIC8qIERvIG5vdGhpbmcuICAqLwotQEAgLTY5MjYs NiArNjkzMSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdkYl9ieXRlICoKK0BA IC02OTgwLDYgKzY5ODYsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0 ZSAqCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX3N1YnByb2dyYW0KICAJICAmJiBhYmJy ZXYtPnRhZyAhPSBEV19UQUdfbGV4aWNhbF9ibG9jawogIAkgICYmIGFiYnJldi0+dGFnICE9IERX X1RBR192YXJpYWJsZQogKwkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19jb25zdGFudAogIAkg ICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UKKyAJICAmJiBhYmJyZXYtPnRhZyAh PSBEV19UQUdfbW9kdWxlCiAgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX21lbWJlcikKLSAJ ewotQEAgLTcwMzMsNiArNzAzOSw3IEBAIGxvYWRfcGFydGlhbF9kaWVzIChiZmQgKmFiZmQsIGdk Yl9ieXRlICoKK0BAIC03MDg4LDYgKzcwOTUsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICph YmZkLCBnZGJfYnl0ZSAqCiAgICAgICAgaWYgKGxvYWRfYWxsCiAgCSAgfHwgYWJicmV2LT50YWcg PT0gRFdfVEFHX3N1YnByb2dyYW0KICAJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdfdmFyaWFi bGUKQEAgLTYyLDcgKzcwLDcgQEAgSW5kZXg6IGdkYi02LjguNTAuMjAwOTA4MDMvZ2RiL2R3YXJm MnJlYWQuYwogIAkgIHx8IGFiYnJldi0+dGFnID09IERXX1RBR19uYW1lc3BhY2UKICAJICB8fCBw YXJ0X2RpZS0+aXNfZGVjbGFyYXRpb24pCiAgCXsKLUBAIC04ODQwLDYgKzg4NDcsMTEgQEAgbmV3 X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorQEAgLTg5MDEsNiArODkwOSwx MSBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0CiAgCSAgLyogRG8g bm90IGFkZCB0aGUgc3ltYm9sIHRvIGFueSBsaXN0cy4gIEl0IHdpbGwgYmUgZm91bmQgdmlhCiAg CSAgICAgQkxPQ0tfRlVOQ1RJT04gZnJvbSB0aGUgYmxvY2t2ZWN0b3IuICAqLwogIAkgIGJyZWFr OwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4 IDllZDljZGYuLjE1Y2Q3ZWQgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2Ri LWFyY2hlci5wYXRjaApAQCAtMiw3ICsyLDcgQEAgaHR0cDovL3NvdXJjZXdhcmUub3JnL2dkYi93 aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJC cmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoKLWNvbW1pdCAyODg4ZmFmZTYzODg5NzU3 YzZmZDI3Y2NjMmYyNTY2MWQ0M2ZkMWE0Citjb21taXQgNWUwZDFjYzc0ZjExOTM5MWEyYzNhZTI1 ZWY1NzQ5ZmMyODY3NGYwNgogCiBicmFuY2ggYGFyY2hlcicgLSB0aGUgbWVyZ2Ugb2YgYnJhbmNo ZXM6CiBhcmNoZXItdHJvbWV5LWNhbGwtZnJhbWUtY2ZhCkBAIC0xMiwxMCArMTIsMTIgQEAgYXJj aGVyLWphbmtyYXRvY2h2aWwtdmxhCiBhcmNoZXItamFua3JhdG9jaHZpbC1taXNjCiBhcmNoZXIt a2VpdGhzLWV4cHItY3VtdWxhdGl2ZQogYXJjaGVyLXRyb21leS1weXRob24KK2FyY2hlci1qYW5r cmF0b2NodmlsLWZvcnRyYW4tbW9kdWxlCithcmNoZXItamFua3JhdG9jaHZpbC13YXRjaHBvaW50 CiAKIAogZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5k ZXggY2NjNGRiOC4uNDk2YzlmMiAxMDA2NDQKK2luZGV4IDljMmI5YzcuLjAzMmIwY2YgMTAwNjQ0 CiAtLS0gYS9nZGIvTWFrZWZpbGUuaW4KICsrKyBiL2dkYi9NYWtlZmlsZS5pbgogQEAgLTE2Niw2 ICsxNjYsMTMgQEAgSU5UTF9DRkxBR1MgPSBASU5DSU5UTEAKQEAgLTcwLDcgKzcyLDcgQEAgaW5k ZXggY2NjNGRiOC4uNDk2YzlmMiAxMDA2NDQKICAJcHl0aG9uL3B5dGhvbi10eXBlLmMgXAogIAlw eXRob24vcHl0aG9uLXV0aWxzLmMgXAogIAlweXRob24vcHl0aG9uLXZhbHVlLmMKLUBAIC03NDYs NyArNzY5LDcgQEAgY29uZmlnL3JzNjAwMC9ubS1yczYwMDAuaCB0b3AuaCBic2Qta3ZtLmggZ2Ri LXN0YWJzLmggcmVnZ3JvdXBzLmggXAorQEAgLTc0NSw3ICs3NjgsNyBAQCBjb25maWcvcnM2MDAw L25tLXJzNjAwMC5oIHRvcC5oIGJzZC1rdm0uaCBnZGItc3RhYnMuaCByZWdncm91cHMuaCBcCiAg YW5ub3RhdGUuaCBzaW0tcmVnbm8uaCBkaWN0aW9uYXJ5LmggZGZwLmggbWFpbi5oIGZyYW1lLXVu d2luZC5oCVwKICByZW1vdGUtZmlsZWlvLmggaTM4Ni1saW51eC10ZGVwLmggdmF4LXRkZXAuaCBv YmpjLWxhbmcuaCBcCiAgc2VudGluZWwtZnJhbWUuaCBiY2FjaGUuaCBzeW1maWxlLmggd2luZG93 cy10ZGVwLmggbGludXgtdGRlcC5oIFwKQEAgLTc5LDcgKzgxLDcgQEAgaW5kZXggY2NjNGRiOC4u NDk2YzlmMiAxMDA2NDQKICAKICAjIEhlYWRlciBmaWxlcyB0aGF0IGFscmVhZHkgaGF2ZSBzcmNk aXIgaW4gdGhlbSwgb3Igd2hpY2ggYXJlIGluIG9iamRpci4KICAKLUBAIC04NjMsNyArODg2LDcg QEAgZ2VuZXJhdGVkX2ZpbGVzID0gY29uZmlnLmggb2JzZXJ2ZXIuaCBvYnNlcnZlci5pbmMgYWRh LWxleC5jIFwKK0BAIC04NjIsNyArODg1LDcgQEAgZ2VuZXJhdGVkX2ZpbGVzID0gY29uZmlnLmgg b2JzZXJ2ZXIuaCBvYnNlcnZlci5pbmMgYWRhLWxleC5jIFwKICAJJChDT01QSUxFKSAkPAogIAkk KFBPU1RDT01QSUxFKQogIApAQCAtODgsMTEgKzkwLDExIEBAIGluZGV4IGNjYzRkYjguLjQ5NmM5 ZjIgMTAwNjQ0CiAgCUAkKE1BS0UpICQoRkxBR1NfVE9fUEFTUykgRE89YWxsICJET0RJUlM9YGVj aG8gJChTVUJESVJTKSB8IHNlZCAncy90ZXN0c3VpdGUvLydgIiBzdWJkaXJfZG8KICAuUEhPTlk6 IGFsbC10dWkKICBhbGwtdHVpOiAkKFRVSSkkKEVYRUVYVCkKLUBAIC0xMjE5LDYgKzEyNDIsMTIg QEAgc3RhbXAtaDogJChzcmNkaXIpL2NvbmZpZy5pbiBjb25maWcuc3RhdHVzCitAQCAtMTIxOCw2 ICsxMjQxLDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1cwog IAkgIENPTkZJR19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKLSsuZ2Ri aW5pdDogZ2RiaW5pdC5pbiBjb25maWcuc3RhdHVzCisrLmdkYmluaXQ6ICQoc3JjZGlyKS9nZGJp bml0LmluIGNvbmZpZy5zdGF0dXMKICsJQ09ORklHX0ZJTEVTPSIuZ2RiaW5pdDpnZGJpbml0Lmlu IiBcCiArCSAgQ09ORklHX0NPTU1BTkRTPSBcCiArCSAgQ09ORklHX0hFQURFUlM9IFwKQEAgLTEw MSw3ICsxMDMsNyBAQCBpbmRleCBjY2M0ZGI4Li40OTZjOWYyIDEwMDY0NAogIGNvbmZpZy5zdGF0 dXM6ICQoc3JjZGlyKS9jb25maWd1cmUgY29uZmlndXJlLnRndCBjb25maWd1cmUuaG9zdAogIAkk KFNIRUxMKSBjb25maWcuc3RhdHVzIC0tcmVjaGVjawogIAotQEAgLTE5MTgsNiArMTk0NywxNCBA QCBweXRob24ubzogJChzcmNkaXIpL3B5dGhvbi9weXRob24uYworQEAgLTE5MTcsNiArMTk0Niwx NCBAQCBweXRob24ubzogJChzcmNkaXIpL3B5dGhvbi9weXRob24uYwogIAkkKENPTVBJTEUpICQo UFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weXRob24uYwogIAkkKFBPU1RDT01QSUxF KQogIApAQCAtMTE2LDcgKzExOCw3IEBAIGluZGV4IGNjYzRkYjguLjQ5NmM5ZjIgMTAwNjQ0CiAg cHl0aG9uLWNtZC5vOiAkKHNyY2RpcikvcHl0aG9uL3B5dGhvbi1jbWQuYwogIAkkKENPTVBJTEUp ICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weXRob24tY21kLmMKICAJJChQT1NU Q09NUElMRSkKLUBAIC0xOTMwLDE0ICsxOTY3LDM4IEBAIHB5dGhvbi1mdW5jdGlvbi5vOiAkKHNy Y2RpcikvcHl0aG9uL3B5dGhvbi1mdW5jdGlvbi5jCitAQCAtMTkyOSwxNCArMTk2NiwzOCBAQCBw eXRob24tZnVuY3Rpb24ubzogJChzcmNkaXIpL3B5dGhvbi9weXRob24tZnVuY3Rpb24uYwogIAkk KENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weXRob24tZnVuY3Rp b24uYwogIAkkKFBPU1RDT01QSUxFKQogIApAQCAtMTU1LDcgKzE1Nyw3IEBAIGluZGV4IGNjYzRk YjguLjQ5NmM5ZjIgMTAwNjQ0CiAgcHl0aG9uLXR5cGUubzogJChzcmNkaXIpL3B5dGhvbi9weXRo b24tdHlwZS5jCiAgCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0aG9u L3B5dGhvbi10eXBlLmMKICAJJChQT1NUQ09NUElMRSkKLUBAIC0xOTUwLDYgKzIwMTEsMzYgQEAg cHl0aG9uLXZhbHVlLm86ICQoc3JjZGlyKS9weXRob24vcHl0aG9uLXZhbHVlLmMKK0BAIC0xOTQ5 LDYgKzIwMTAsMzYgQEAgcHl0aG9uLXZhbHVlLm86ICQoc3JjZGlyKS9weXRob24vcHl0aG9uLXZh bHVlLmMKICAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHl0 aG9uLXZhbHVlLmMKICAJJChQT1NUQ09NUElMRSkKICAKQEAgLTI4OSw3ICsyOTEsNyBAQCBpbmRl eCA5YjVkMmM2Li42MTY3NmE5IDEwMDY0NAogICAgYWRhX2R1bXBfc3ViZXhwX2JvZHksCiAgICBh ZGFfZXZhbHVhdGVfc3ViZXhwCiBkaWZmIC0tZ2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2su YwotaW5kZXggMTg4OWVjZC4uNDk4ZTcxMCAxMDA2NDQKK2luZGV4IDE4ODllY2QuLjM3ZmEzNDIg MTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suYwogKysrIGIvZ2RiL2Jsb2NrLmMKIEBAIC0yMjMsOCAr MjIzLDkgQEAgYmxvY2tfc2V0X3Njb3BlIChzdHJ1Y3QgYmxvY2sgKmJsb2NrLCBjb25zdCBjaGFy ICpzY29wZSwKQEAgLTMwNCw3ICszMDYsMTEgQEAgaW5kZXggMTg4OWVjZC4uNDk4ZTcxMCAxMDA2 NDQKICAKICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoKICBibG9ja191c2luZyAoY29uc3Qgc3RydWN0 IGJsb2NrICpibG9jaykKLUBAIC0zMTcsMyArMzE4LDIxIEBAIGFsbG9jYXRlX2Jsb2NrIChzdHJ1 Y3Qgb2JzdGFjayAqb2JzdGFjaykKK0BAIC0zMTQsNiArMzE1LDI1IEBAIGFsbG9jYXRlX2Jsb2Nr IChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKKyAgIEJMT0NLX1NVUEVSQkxPQ0sgKGJsKSA9IE5V TEw7CisgICBCTE9DS19ESUNUIChibCkgPSBOVUxMOworICAgQkxPQ0tfTkFNRVNQQUNFIChibCkg PSBOVUxMOworKyAgQkxPQ0tfRk9SVFJBTl9VU0UgKGJsKSA9IE5VTEw7CiAgCiAgICByZXR1cm4g Ymw7CiAgfQpAQCAtMzI3LDEwICszMzMsMzQgQEAgaW5kZXggMTg4OWVjZC4uNDk4ZTcxMCAxMDA2 NDQKICsgIHJldHVybiBTWU1CT0xfU1lNVEFCIChmdW5jKS0+b2JqZmlsZTsKICt9CiBkaWZmIC0t Z2l0IGEvZ2RiL2Jsb2NrLmggYi9nZGIvYmxvY2suaAotaW5kZXggNTNlNzM3MS4uODI5MGFkYyAx MDA2NDQKK2luZGV4IDUzZTczNzEuLmQzNzNmOGEgMTAwNjQ0CiAtLS0gYS9nZGIvYmxvY2suaAog KysrIGIvZ2RiL2Jsb2NrLmgKLUBAIC0xNjYsNCArMTY2LDYgQEAgZXh0ZXJuIGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2tfZ2xvYmFsX2Jsb2NrIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKTsK K0BAIC05Niw2ICs5NiwxNSBAQCBzdHJ1Y3QgYmxvY2sKKyAgICAgY3BsdXNfc3BlY2lmaWM7Cisg ICB9CisgICBsYW5ndWFnZV9zcGVjaWZpYzsKKysKKysgIC8qIEZJWE1FOiBJdCBzaG91bGQgYmUg aW4gdGhlIExBTkdVQUdFX1NQRUNJRklDIHJlZ2lvbiBidXQgdGhlCisrICAgICBCTE9DS19OQU1F U1BBQ0UgYWNjZXNzb3IgaXMgbm90IHByb3RlY3RlZCBieSB0aGUgQyBsYW5ndWFnZSBjaGVjay4g ICovCisrCisrICBzdHJ1Y3QKKysgICAgeworKyAgICAgIHN0cnVjdCBmb3J0cmFuX3VzaW5nICp1 c2U7CisrICAgIH0KKysgIGZvcnRyYW5fc3BlY2lmaWM7CisgfTsKKyAKKyAjZGVmaW5lIEJMT0NL X1NUQVJUKGJsKQkJKGJsKS0+c3RhcnRhZGRyCitAQCAtMTA0LDYgKzExMyw3IEBAIHN0cnVjdCBi bG9jaworICNkZWZpbmUgQkxPQ0tfU1VQRVJCTE9DSyhibCkJKGJsKS0+c3VwZXJibG9jaworICNk ZWZpbmUgQkxPQ0tfRElDVChibCkJCShibCktPmRpY3QKKyAjZGVmaW5lIEJMT0NLX05BTUVTUEFD RShibCkgICAoYmwpLT5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZpYy5uYW1lc3BhY2UK KysjZGVmaW5lIEJMT0NLX0ZPUlRSQU5fVVNFKGJsKQkoYmwpLT5mb3J0cmFuX3NwZWNpZmljLnVz ZQorIAorIC8qIE1hY3JvIHRvIGxvb3AgdGhyb3VnaCBhbGwgc3ltYm9scyBpbiBhIGJsb2NrIEJM LCBpbiBubyBwYXJ0aWN1bGFyCisgICAgb3JkZXIuICBJVEVSIGhlbHBzIGtlZXAgdHJhY2sgb2Yg dGhlIGl0ZXJhdGlvbiwgYW5kIHNob3VsZCBiZSBhCitAQCAtMTY2LDQgKzE3Niw2IEBAIGV4dGVy biBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF9ibG9jayAoY29uc3Qgc3RydWN0IGJs b2NrICpibG9jayk7CiAgCiAgZXh0ZXJuIHN0cnVjdCBibG9jayAqYWxsb2NhdGVfYmxvY2sgKHN0 cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKICAKQEAgLTE3MTgsMjYgKzE3NDgsMzAgQEAgaW5kZXgg NjI4MDBiOC4uOTdkNTg3YiAxMDA2NDQKICAJCQl7ICQkID0gJDEuY29tcDsKICAJCQkgIGlmICgk MikgJCQgPSBmaWxsX2NvbXAgKERFTUFOR0xFX0NPTVBPTkVOVF9MT0NBTF9OQU1FLCAkJCwgJDIp OyB9CiBkaWZmIC0tZ2l0IGEvZ2RiL2NwLW5hbWVzcGFjZS5jIGIvZ2RiL2NwLW5hbWVzcGFjZS5j Ci1pbmRleCBkMmQ4ZjJlLi5jYzI1OWU3IDEwMDY0NAoraW5kZXggZDJkOGYyZS4uNTgwNWEzMCAx MDA2NDQKIC0tLSBhL2dkYi9jcC1uYW1lc3BhY2UuYwogKysrIGIvZ2RiL2NwLW5hbWVzcGFjZS5j Ci1AQCAtMzUsMTUgKzM1LDcgQEAKLSBzdGF0aWMgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3BfY29w eV91c2luZ3MgKHN0cnVjdCB1c2luZ19kaXJlY3QgKnVzaW5nLAorQEAgLTM2LDE0ICszNiwxNyBA QCBzdGF0aWMgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3BfY29weV91c2luZ3MgKHN0cnVjdCB1c2lu Z19kaXJlY3QgKnVzaW5nLAogIAkJCQkJICAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKICAK LS1zdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hh ciAqbmFtZSwKKyBzdGF0aWMgc3RydWN0IHN5bWJvbCAqbG9va3VwX25hbWVzcGFjZV9zY29wZSAo Y29uc3QgY2hhciAqbmFtZSwKIC0JCQkJCSAgICAgIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwK LS0JCQkJCSAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCi0tCQkJCQkgICAgICBjb25z dCBkb21haW5fZW51bSBkb21haW4sCi0tCQkJCQkgICAgICBjb25zdCBjaGFyICpzY29wZSwKLS0J CQkJCSAgICAgIGludCBzY29wZV9sZW4pOwotLQorIAkJCQkJICAgICAgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKKyAJCQkJCSAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbiwKKyAJCQkJ CSAgICAgIGNvbnN0IGNoYXIgKnNjb3BlLAorIAkJCQkJICAgICAgaW50IHNjb3BlX2xlbik7Cisg Cisrc3RhdGljIHN0cnVjdCBzeW1ib2wgKmNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChj b25zdCBjaGFyICpuYW1lc3BhY2UsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbik7CisrCiAgc3RhdGljIHN0cnVjdCBzeW1ib2wg Kmxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKIC0JCQkJCSAgY29uc3QgY2hh ciAqbGlua2FnZV9uYW1lLAogIAkJCQkJICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogIAkJ CQkJICBjb25zdCBkb21haW5fZW51bSBkb21haW4sCiAgCQkJCQkgIGludCBhbm9ueW1vdXNfbmFt ZXNwYWNlKTsKLUBAIC0xMTksNyArMTExLDcgQEAgY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVz cGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCkKK0BAIC0xMTksNyArMTIyLDcgQEAg Y3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVzcGFjZXMgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5 bWJvbCkKICAJCSBhbm9ueW1vdXMgbmFtZXNwYWNlLiAgU28gYWRkIHN5bWJvbHMgaW4gaXQgdG8g dGhlCiAgCQkgbmFtZXNwYWNlIGdpdmVuIGJ5IHRoZSBwcmV2aW91cyBjb21wb25lbnQgaWYgdGhl cmUgaXMKICAJCSBvbmUsIG9yIHRvIHRoZSBnbG9iYWwgbmFtZXNwYWNlIGlmIHRoZXJlIGlzbid0 LiAgKi8KQEAgLTE3NDYsNyArMTc4MCw3IEBAIGluZGV4IGQyZDhmMmUuLmNjMjU5ZTcgMTAwNjQ0 CiAgCSAgICB9CiAgCSAgLyogVGhlICIrIDIiIGlzIGZvciB0aGUgIjo6Ii4gICovCiAgCSAgcHJl dmlvdXNfY29tcG9uZW50ID0gbmV4dF9jb21wb25lbnQgKyAyOwotQEAgLTEzNCw3ICsxMjYsOCBA QCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAq c3ltYm9sKQorQEAgLTEzNCw3ICsxMzcsOCBAQCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNw YWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAqc3ltYm9sKQogICAgIGhhcyBhbHJlYWR5IGJlZW4g YWRkZWQsIGRvbid0IGFkZCBpdCB0d2ljZS4gICovCiAgCiAgdm9pZApAQCAtMTc1Niw3ICsxNzkw LDcgQEAgaW5kZXggZDJkOGYyZS4uY2MyNTllNyAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgdXNpbmdf ZGlyZWN0ICpjdXJyZW50OwogICAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV3OwotQEAgLTE0OCw3 ICsxNDEsOCBAQCBjcF9hZGRfdXNpbmdfZGlyZWN0aXZlIChjb25zdCBjaGFyICpkZXN0LCBjb25z dCBjaGFyICpzcmMpCitAQCAtMTQ4LDcgKzE1Miw4IEBAIGNwX2FkZF91c2luZ19kaXJlY3RpdmUg KGNvbnN0IGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKICAJcmV0dXJuOwogICAgICB9CiAg CkBAIC0xNzY2LDcgKzE4MDAsNyBAQCBpbmRleCBkMmQ4ZjJlLi5jYzI1OWU3IDEwMDY0NAogIAog IH0KICAKLUBAIC0yMDEsNyArMTk1LDEwIEBAIGNwX2lzX2Fub255bW91cyAoY29uc3QgY2hhciAq bmFtZXNwYWNlKQorQEAgLTIwMSw3ICsyMDYsMTAgQEAgY3BfaXNfYW5vbnltb3VzIChjb25zdCBj aGFyICpuYW1lc3BhY2UpCiAgfQogIAogIC8qIENyZWF0ZSBhIG5ldyBzdHJ1Y3QgdXNpbmcgZGly ZWN0IHdoaWNoIGltcG9ydHMgdGhlIG5hbWVzcGFjZSBTUkMKQEAgLTE3NzgsNyArMTgxMiw3IEBA IGluZGV4IGQyZDhmMmUuLmNjMjU5ZTcgMTAwNjQ0CiAgICAgU2V0IGl0cyBuZXh0IG1lbWJlciBp biB0aGUgbGlua2VkIGxpc3QgdG8gTkVYVDsgYWxsb2NhdGUgYWxsIG1lbW9yeQogICAgIHVzaW5n IHhtYWxsb2MuICBJdCBjb3BpZXMgdGhlIHN0cmluZ3MsIHNvIE5BTUUgY2FuIGJlIGEgdGVtcG9y YXJ5CiAgICAgc3RyaW5nLiAgKi8KLUBAIC0yMDksMTMgKzIwNiwxOSBAQCBjcF9pc19hbm9ueW1v dXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSkKK0BAIC0yMDksMTQgKzIxNywyMSBAQCBjcF9pc19h bm9ueW1vdXMgKGNvbnN0IGNoYXIgKm5hbWVzcGFjZSkKICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICoK ICBjcF9hZGRfdXNpbmcgKGNvbnN0IGNoYXIgKmRlc3QsCiAgICAgICAgICAgICAgICBjb25zdCBj aGFyICpzcmMsCkBAIC0xNzk4LDkgKzE4MzIsMTEgQEAgaW5kZXggZDJkOGYyZS4uY2MyNTllNyAx MDA2NDQKICsgIHJldHZhbC0+ZGVjbGFyYXRpb24gPSBzYXZlc3RyaW5nIChkZWNsYXJhdGlvbiwg c3RybGVuIChkZWNsYXJhdGlvbikpOwogKyAgcmV0dmFsLT5saW5lX251bWJlciA9IGxpbmVfbnVt YmVyOwogICAgcmV0dmFsLT5uZXh0ID0gbmV4dDsKKysgIHJldHZhbC0+c2VhcmNoZWQgPSAwOwog IAogICAgcmV0dXJuIHJldHZhbDsKLUBAIC0yNDEsMTAgKzI0NCwxNiBAQCBjcF9jb3B5X3VzaW5n cyAoc3RydWN0IHVzaW5nX2RpcmVjdCAqdXNpbmcsCisgfQorQEAgLTI0MSwxMCArMjU2LDE4IEBA IGNwX2NvcHlfdXNpbmdzIChzdHJ1Y3QgdXNpbmdfZGlyZWN0ICp1c2luZywKICAJCQkJICAgIG9i c3RhY2spOwogICAgICAgIHJldHZhbC0+aW1wb3J0X2Rlc3QgPSBvYnNhdmVzdHJpbmcgKHVzaW5n LT5pbXBvcnRfZGVzdCwgc3RybGVuICh1c2luZy0+aW1wb3J0X2Rlc3QpLAogIAkJCQkgICAgb2Jz dGFjayk7CkBAIC0xODEwLDYgKzE4NDYsOCBAQCBpbmRleCBkMmQ4ZjJlLi5jYzI1OWU3IDEwMDY0 NAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic3RhY2spOwogICAgICAg IHJldHZhbC0+bmV4dCA9IGNwX2NvcHlfdXNpbmdzICh1c2luZy0+bmV4dCwgb2JzdGFjayk7CiAg CisrICAgICAgcmV0dmFsLT5zZWFyY2hlZCA9IHVzaW5nLT5zZWFyY2hlZDsKKysKICAgICAgICB4 ZnJlZSAodXNpbmctPmltcG9ydF9zcmMpOwogICAgICAgIHhmcmVlICh1c2luZy0+aW1wb3J0X2Rl c3QpOwogKyAgICAgIHhmcmVlICh1c2luZy0+YWxpYXMpOwpAQCAtMTgxNyw3ICsxODU1LDcgQEAg aW5kZXggZDJkOGYyZS4uY2MyNTllNyAxMDA2NDQKICAgICAgICB4ZnJlZSAodXNpbmcpOwogIAog ICAgICAgIHJldHVybiByZXR2YWw7Ci1AQCAtMjYxLDEyICsyNzAsNDIgQEAgY3BfY29weV91c2lu Z3MgKHN0cnVjdCB1c2luZ19kaXJlY3QgKnVzaW5nLAorQEAgLTI2MSwxMiArMjg0LDQ4IEBAIGNw X2NvcHlfdXNpbmdzIChzdHJ1Y3QgdXNpbmdfZGlyZWN0ICp1c2luZywKICAKICBzdHJ1Y3Qgc3lt Ym9sICoKICBjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLApAQCAt MTgyNywzMSArMTg2NSwzNyBAQCBpbmRleCBkMmQ4ZjJlLi5jYzI1OWU3IDEwMDY0NAogIHsKIC0g IHJldHVybiBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBsaW5rYWdlX25hbWUsIGJsb2Nr LCBkb21haW4sCiAtCQkJCSBibG9ja19zY29wZSAoYmxvY2spLCAwKTsKLSsgIHN0cnVjdCBzeW1i b2wgKnN5bTsKLSsgIGNvbnN0IGNoYXIqIHNjb3BlID0gYmxvY2tfc2NvcGUgKGJsb2NrKTsgCisr ICBzdHJ1Y3Qgc3ltYm9sICpzeW07IAorKyAgY29uc3QgY2hhciAqc2NvcGUgPSBibG9ja19zY29w ZSAoYmxvY2spOwogKwotKyAgc3ltID0gbG9va3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgYmxv Y2ssIGRvbWFpbiwgc2NvcGUgLCAwLCAwKTsKLSsgIGlmICggc3ltICE9IE5VTEwpCisrICBzeW0g PSBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChuYW1lLCBibG9jaywgZG9tYWluLCBzY29wZSwgMCk7 CisrICBpZiAoc3ltICE9IE5VTEwpCiArICAgIHJldHVybiBzeW07CiArCi0rICByZXR1cm4gY3Bf bG9va3VwX3N5bWJvbF9uYW1lc3BhY2VfaW5jcmVtZW50YWwoc2NvcGUsIG5hbWUsIGJsb2NrLCBk b21haW4pOworKyAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlKHNjb3BlLCBuYW1l LCBibG9jaywgZG9tYWluKTsKICt9CiArCisrLyogU2VhcmNoZXMgZm9yIE5BTUUgaW4gdGhlIGN1 cnJlbnQgbmFtZXNwYWNlLCBhbmQgYnkgYXBwbHlpbmcgcmVsZXZhbnQgaW1wb3J0CisrICAgc3Rh dGVtZW50cyBiZWxvbmdpbmcgdG8gQkxPQ0sgYW5kIGl0cyBwYXJlbnRzLiAgU0NPUEUgaXMgdGhl IG5hbWVzcGFjZQorKyAgIHNjb3BlIG9mIHRoZSBjb250ZXh0IGluIHdoaWNoIHRoZSBzZWFyY2gg aXMgYmVpbmcgZXZhbHVhdGVkLiAgKi8KKysKICtzdHJ1Y3Qgc3ltYm9sKgotK2NwX2xvb2t1cF9z eW1ib2xfbmFtZXNwYWNlX2luY3JlbWVudGFsIChjb25zdCBjaGFyICpzY29wZSwKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9t YWluX2VudW0gZG9tYWluKQorK2NwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFy ICpzY29wZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQog K3sKICsgIHN0cnVjdCBzeW1ib2wgKnN5bTsKICsKLSsgIHN5bSA9IGNwX2xvb2t1cF9zeW1ib2xf bmFtZXNwYWNlIChzY29wZSwgbmFtZSwgYmxvY2ssIGRvbWFpbiwgMCk7CisrICAvKiBGaXJzdCwg dHJ5IHRvIGZpbmQgdGhlIHN5bWJvbCBpbiB0aGUgZ2l2ZW4gbmFtZXNwYWNlLiAgKi8KKysgIHN5 bSA9IGNwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChzY29wZSwgbmFtZSwgYmxvY2ssIGRv bWFpbik7CiArICBpZiAoIHN5bSAhPSBOVUxMKQogKyAgICByZXR1cm4gc3ltOwotKworKyAgICAK KysgIC8qIFNlYXJjaCBmb3IgbmFtZSBpbiBuYW1lc3BhY2VzIGltcG9ydGVkIHRvIHRoaXMgYW5k IHBhcmVudCBibG9ja3MuICAqLwogKyAgd2hpbGUgKGJsb2NrICE9IE5VTEwpCiArICAgIHsKLSsg ICAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMoc2NvcGUsIG5hbWUsIGJsb2NrLCBk b21haW4sMCk7CisrICAgICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRzKHNjb3BlLG5h bWUsIGJsb2NrLCBkb21haW4sMCk7CiArCiArICAgICAgaWYgKHN5bSkKICsgICAgICAgIHJldHVy biBzeW07CkBAIC0xODYzLDcgKzE5MDcsNyBAQCBpbmRleCBkMmQ4ZjJlLi5jYzI1OWU3IDEwMDY0 NAogIH0KICAKICAvKiBMb29rdXAgTkFNRSBhdCBuYW1lc3BhY2Ugc2NvcGUgKG9yLCBpbiBDIHRl cm1zLCBpbiBzdGF0aWMgYW5kCi1AQCAtMjg0LDEzICszMjMsMTMgQEAgY3BfbG9va3VwX3N5bWJv bF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC0yODQsOSArMzQzLDggQEAgY3BfbG9v a3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKICAgICAiQTo6eCIsIGFuZCBp ZiB0aGF0IGNhbGwgZmFpbHMsIHRoZW4gdGhlIGZpcnN0IGNhbGwgbG9va3MgZm9yCiAgICAgIngi LiAgKi8KICAKQEAgLTE4NzQsMzAgKzE5MTgsMjMgQEAgaW5kZXggZDJkOGYyZS4uY2MyNTllNyAx MDA2NDQKICAJCQljb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAogIAkJCWNvbnN0IGRvbWFpbl9l bnVtIGRvbWFpbiwKICAJCQljb25zdCBjaGFyICpzY29wZSwKLS0JCQlpbnQgc2NvcGVfbGVuKQot KwkJCWludCBzY29wZV9sZW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlY2xhcmF0 aW9uX29ubHkpCi0gewotICAgY2hhciAqbmFtZXNwYWNlOwotIAotQEAgLTMwOCw4ICszNDcsOCBA QCBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAorQEAgLTMwOCw4ICsz NjYsNyBAQCBsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAogIAkgIG5l d19zY29wZV9sZW4gKz0gMjsKICAJfQogICAgICAgIG5ld19zY29wZV9sZW4gKz0gY3BfZmluZF9m aXJzdF9jb21wb25lbnQgKHNjb3BlICsgbmV3X3Njb3BlX2xlbik7CiAtICAgICAgc3ltID0gbG9v a3VwX25hbWVzcGFjZV9zY29wZSAobmFtZSwgbGlua2FnZV9uYW1lLCBibG9jaywKIC0JCQkJICAg IGRvbWFpbiwgc2NvcGUsIG5ld19zY29wZV9sZW4pOwotKyAgICAgIHN5bSA9IGxvb2t1cF9uYW1l c3BhY2Vfc2NvcGUgKG5hbWUsIGJsb2NrLCBkb21haW4sIHNjb3BlLCBuZXdfc2NvcGVfbGVuLAot KwkJCQkgICAgZGVjbGFyYXRpb25fb25seSk7CisrICAgICAgc3ltID0gbG9va3VwX25hbWVzcGFj ZV9zY29wZSAobmFtZSwgYmxvY2ssIGRvbWFpbiwgc2NvcGUsIG5ld19zY29wZV9sZW4pOwogICAg ICAgIGlmIChzeW0gIT0gTlVMTCkKICAJcmV0dXJuIHN5bTsKICAgICAgfQotQEAgLTMyMCwyNSAr MzU5LDUwIEBAIGxvb2t1cF9uYW1lc3BhY2Vfc2NvcGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAt MzIwLDI1ICszNzcsNTUgQEAgbG9va3VwX25hbWVzcGFjZV9zY29wZSAoY29uc3QgY2hhciAqbmFt ZSwKICAgIG5hbWVzcGFjZSA9IGFsbG9jYSAoc2NvcGVfbGVuICsgMSk7CiAgICBzdHJuY3B5IChu YW1lc3BhY2UsIHNjb3BlLCBzY29wZV9sZW4pOwogICAgbmFtZXNwYWNlW3Njb3BlX2xlbl0gPSAn XDAnOwogLSAgcmV0dXJuIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChuYW1lc3BhY2UsIG5h bWUsIGxpbmthZ2VfbmFtZSwKIC0JCQkJICAgICBibG9jaywgZG9tYWluKTsKLSsgIHJldHVybiBj cF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAobmFtZXNwYWNlLCBuYW1lLCBibG9jaywgZG9tYWlu LCBkZWNsYXJhdGlvbl9vbmx5KTsKKysgIHJldHVybiBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVz cGFjZSAobmFtZXNwYWNlLCBuYW1lLGJsb2NrLCBkb21haW4pOwogIH0KICAKIC0vKiBMb29rIHVw IE5BTUUgaW4gdGhlIEMrKyBuYW1lc3BhY2UgTkFNRVNQQUNFLCBhcHBseWluZyB0aGUgdXNpbmcK QEAgLTE5MDUsMTQgKzE5NDIsMTEgQEAgaW5kZXggZDJkOGYyZS4uY2MyNTllNyAxMDA2NDQKICsv KiBMb29rIHVwIE5BTUUgaW4gdGhlIEMrKyBuYW1lc3BhY2UgTkFNRVNQQUNFLiBPdGhlciBhcmd1 bWVudHMgYXJlIGFzIGluCiAgICAgY3BfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCiAgCi0g c3RydWN0IHN5bWJvbCAqCi0gY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIg Km5hbWVzcGFjZSwKLSAJCQkgICAgY29uc3QgY2hhciAqbmFtZSwKLS0JCQkgICAgY29uc3QgY2hh ciAqbGlua2FnZV9uYW1lLAotIAkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotLQkJ CSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCi0rCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbiwKLSsJCQkgICAgaW50IGRlY2xhcmF0aW9uX29ubHkpCisrc3RhdGljIHN0cnVjdCBz eW1ib2wgKgorK2NwX2xvb2t1cF9zeW1ib2xfaW5fbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1l c3BhY2UsCisrCQkJICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsCisrCQkJICAgICAgIGNvbnN0IHN0 cnVjdCBibG9jayAqYmxvY2ssCisrCQkJICAgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikK ICt7CiArCiArICBpZiAobmFtZXNwYWNlWzBdID09ICdcMCcpCkBAIC0xOTM0LDM5ICsxOTY4LDU0 IEBAIGluZGV4IGQyZDhmMmUuLmNjMjU5ZTcgMTAwNjQ0CiArLyogU2VhcmNoIGZvciBOQU1FIGJ5 IGFwcGx5aW5nIGFsbCBpbXBvcnQgc3RhdGVtZW50cyBiZWxvbmdpbmcKICsgICB0byBCTE9DSyB3 aGljaCBhcmUgYXBwbGljYWJsZSBpbiBTQ09QRS4gICovCiArCi0rc3RydWN0IHN5bWJvbCAqCisg c3RydWN0IHN5bWJvbCAqCistY3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGNvbnN0IGNoYXIg Km5hbWVzcGFjZSwKKy0JCQkgICAgY29uc3QgY2hhciAqbmFtZSwKKy0JCQkgICAgY29uc3QgY2hh ciAqbGlua2FnZV9uYW1lLAorLQkJCSAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAorLQkJ CSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiArY3BfbG9va3VwX3N5bWJvbF9pbXBvcnRz IChjb25zdCBjaGFyICpzY29wZSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqbmFtZSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2Vu dW0gZG9tYWluLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25f b25seSkKICB7Ci0gICBjb25zdCBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpjdXJyZW50OworLSAgY29u c3Qgc3RydWN0IHVzaW5nX2RpcmVjdCAqY3VycmVudDsKIC0gIHN0cnVjdCBzeW1ib2wgKnN5bTsK KysgIHN0cnVjdCB1c2luZ19kaXJlY3QgKmN1cnJlbnQ7CiArICBzdHJ1Y3Qgc3ltYm9sICpzeW0g PSBOVUxMOwogIAogLSAgLyogRmlyc3QsIGdvIHRocm91Z2ggdGhlIHVzaW5nIGRpcmVjdGl2ZXMu ICBJZiBhbnkgb2YgdGhlbSBhZGQgbmV3CisrICBpZighZGVjbGFyYXRpb25fb25seSkKKysgIC8q IEZpcnN0LCB0cnkgdG8gZmluZCB0aGUgc3ltYm9sIGluIHRoZSBnaXZlbiBuYW1lc3BhY2UuICAq LworKyAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHNjb3BlLCBuYW1lLCBi bG9jaywgZG9tYWluKTsKKysgIGlmICggc3ltICE9IE5VTEwpCisrICAgIHJldHVybiBzeW07Cisr CiArICAvKiBHbyB0aHJvdWdoIHRoZSB1c2luZyBkaXJlY3RpdmVzLiAgSWYgYW55IG9mIHRoZW0g YWRkIG5ldwogICAgICAgbmFtZXMgdG8gdGhlIG5hbWVzcGFjZSB3ZSdyZSBzZWFyY2hpbmcgaW4s IHNlZSBpZiB3ZSBjYW4gZmluZCBhCiAgICAgICBtYXRjaCBieSBhcHBseWluZyB0aGVtLiAgKi8K ICAKLUBAIC0zNDYsMzkgKzQxMCw2NSBAQCBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY29u c3QgY2hhciAqbmFtZXNwYWNlLAorQEAgLTM0NiwzOSArNDMzLDcwIEBAIGNwX2xvb2t1cF9zeW1i b2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCiAgICAgICAgIGN1cnJlbnQgIT0g TlVMTDsKICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQtPm5leHQpCiAgICAgIHsKIC0gICAgICBp ZiAoc3RyY21wIChuYW1lc3BhY2UsIGN1cnJlbnQtPmltcG9ydF9kZXN0KSA9PSAwKQogKyAgICAg IGludCBjdXJyZW50X2xpbmUgPSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZ2V0X2N1cnJl bnRfZnJhbWUgKCkpLCAwKS5saW5lOwotKyAgICAgIAorKyAgCiArICAgICAgLyogSWYgdGhlIGlt cG9ydCBkZXN0aW5hdGlvbiBpcyB0aGUgY3VycmVudCBzY29wZSBvciBvbmUgb2YgaXRzIGFuY2Vz dG9ycyB0aGVuCiArICAgICAgICAgaXQgaXMgYXBwbGljYWJsZS4gICovCi0rICAgICAgaWYgKHN0 cm5jbXAgKHNjb3BlLCBjdXJyZW50LT5pbXBvcnRfZGVzdCwgc3RybGVuKGN1cnJlbnQtPmltcG9y dF9kZXN0KSkgPT0gMCAmJiBjdXJyZW50LT5saW5lX251bWJlciA8IGN1cnJlbnRfbGluZSApCisr ICAgICAgaWYgKHN0cm5jbXAgKHNjb3BlLCBjdXJyZW50LT5pbXBvcnRfZGVzdCwKKysgICAgICAg ICAgc3RybGVuKGN1cnJlbnQtPmltcG9ydF9kZXN0KSkgPT0gMCAmJgorKyAgICAgICAgICBjdXJy ZW50LT5saW5lX251bWJlciA8IGN1cnJlbnRfbGluZSAmJgorKyAgICAgICAgICAhY3VycmVudC0+ c2VhcmNoZWQpCiAgCXsKIC0JICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAoY3Vy cmVudC0+aW1wb3J0X3NyYywKIC0JCQkJCSAgICBuYW1lLAogLQkJCQkJICAgIGxpbmthZ2VfbmFt ZSwKIC0JCQkJCSAgICBibG9jaywKIC0JCQkJCSAgICBkb21haW4pOwotLQkgIGlmIChzeW0gIT0g TlVMTCkKKysJICBjdXJyZW50LT5zZWFyY2hlZCA9IDE7CiArCSAgLyogSWYgdGhlcmUgaXMgYW4g aW1wb3J0IG9mIGEgc2luZ2xlIGRlY2xhcmF0aW9uLCBjb21wYXJlIHRoZSBpbXBvcnRlZAogKwkg ICAgIGRlY2xhcmF0aW9uIHdpdGggdGhlIHNvdWdodCBvdXQgbmFtZS4gSWYgdGhlcmUgaXMgYSBt YXRjaCBwYXNzCiArCSAgICAgY3VycmVudC0+aW1wb3J0X3NyYyBhcyBOQU1FU1BBQ0UgdG8gZGly ZWN0IHRoZSBzZWFyY2ggdG93YXJkcyB0aGUKQEAgLTE5NzUsMTYgKzIwMjQsMTYgQEAgaW5kZXgg ZDJkOGYyZS4uY2MyNTllNyAxMDA2NDQKICsJICAgIHsKICsJICAgIGlmIChzdHJjbXAgKG5hbWUs IGN1cnJlbnQtPmRlY2xhcmF0aW9uKSA9PSAwKQogKwkgICAgICB7Ci0rCSAgICAgICAgc3ltID0g Y3BfbG9va3VwX3N5bWJvbF9uYW1lc3BhY2UgKGN1cnJlbnQtPmltcG9ydF9zcmMsCisrCSAgICAg ICAgc3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKGN1cnJlbnQtPmltcG9ydF9z cmMsCiArCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsCiAr CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLAotKwkgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCi0rCSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uX29ubHkpOworKwkg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4pOwogKwkgICAg ICB9CiArCSAgICB9CiArCSAgIAogKwkgIGlmIChkZWNsYXJhdGlvbl9vbmx5KQogKyAgICAgICAg ICAgIHsKKysgICAgICAgICAgICAgIGN1cnJlbnQtPnNlYXJjaGVkID0gMDsKICsgICAgICAgICAg ICAgIGlmIChzeW0pCiArICAgICAgICAgICAgICAgIHsKICsgICAgICAgICAgICAgICAgICByZXR1 cm4gc3ltOwpAQCAtMTk5OCwyNCArMjA0NywyNiBAQCBpbmRleCBkMmQ4ZjJlLi5jYzI1OWU3IDEw MDY0NAogKwkgICAgICAgc291Z2h0IG5hbWUuIFBhc3MgY3VycmVudC0+aW5uZXIgYXMgdGhlIE5B TUUgdG8gZGlyZWN0IHRoZQogKwkgICAgICAgc2VhcmNoIHRvd2FyZHMgdGhlIGFsaWFzZWQgbmFt ZXNwYWNlICovCiArCSAgICB7Ci0rCSAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFj ZSAoc2NvcGUsCisrCSAgICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX2luX25hbWVzcGFjZSAoc2Nv cGUsCiArCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudC0+aW1w b3J0X3NyYywKICsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywK LSsJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb21haW4sCi0rICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0aW9uX29ubHkp OworKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbWFpbik7CiArCSAg ICB9IGVsc2UgaWYgKHN0cmNtcCAoIiIsIGN1cnJlbnQtPmFsaWFzKSA9PSAwKXsKICsJICAgIC8q IElmIHRoaXMgaW1wb3J0IHN0YXRlbWVudCBjcmVhdGVzIG5vIGFsaWFzLCBwYXNzIGN1cnJlbnQt PmlubmVyIGFzCiArCSAgICAgICBOQU1FU1BBQ0UgdG8gZGlyZWN0IHRoZSBzZWFyY2ggdG93YXJk cyB0aGUgaW1wb3J0ZWQgbmFtZXNwYWNlLiAqLwotKwkgICAgICBzeW0gPSBjcF9sb29rdXBfc3lt Ym9sX25hbWVzcGFjZSAoY3VycmVudC0+aW1wb3J0X3NyYywKKysJICAgICAgc3ltID0gY3BfbG9v a3VwX3N5bWJvbF9pbXBvcnRzIChjdXJyZW50LT5pbXBvcnRfc3JjLAogKwkJICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBuYW1lLAogKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBibG9jaywKICsJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9tYWluLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY2xhcmF0 aW9uX29ubHkpOworKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKICsJICAg IH0KICsKLSsJICBpZiAoc3ltICE9IE5VTEwpewotIAkgICAgcmV0dXJuIHN5bTsKLSsJICB9Cisr CSAgY3VycmVudC0+c2VhcmNoZWQgPSAwOworIAkgIGlmIChzeW0gIT0gTlVMTCkKKy0JICAgIHJl dHVybiBzeW07CisrCSAgICB7CisrCSAgICAgIHJldHVybiBzeW07CisrCSAgICB9CiAgCX0KICAg ICAgfQogIApAQCAtMjA0NCw3ICsyMDk1LDcgQEAgaW5kZXggZDJkOGYyZS4uY2MyNTllNyAxMDA2 NDQKICB9CiAgCiAgLyogTG9vayB1cCBOQU1FIGluIEJMT0NLJ3Mgc3RhdGljIGJsb2NrIGFuZCBp biBnbG9iYWwgYmxvY2tzLiAgSWYKLUBAIC0zODgsMTcgKzQ3OCwxNSBAQCBjcF9sb29rdXBfc3lt Ym9sX25hbWVzcGFjZSAoY29uc3QgY2hhciAqbmFtZXNwYWNlLAorQEAgLTM4OCwxNyArNTA2LDE1 IEBAIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChjb25zdCBjaGFyICpuYW1lc3BhY2UsCiAg CiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgogIGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hh ciAqbmFtZSwKQEAgLTIwNjMsNyArMjExNCw3IEBAIGluZGV4IGQyZDhmMmUuLmNjMjU5ZTcgMTAw NjQ0CiAgICBpZiAoYW5vbnltb3VzX25hbWVzcGFjZSkKICAgICAgewogICAgICAgIC8qIFN5bWJv bHMgZGVmaW5lZCBpbiBhbm9ueW1vdXMgbmFtZXNwYWNlcyBoYXZlIGV4dGVybmFsIGxpbmthZ2UK LUBAIC00MDgsMTIgKzQ5NiwxMSBAQCBsb29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5h bWUsCitAQCAtNDA4LDEyICs1MjQsMTEgQEAgbG9va3VwX3N5bWJvbF9maWxlIChjb25zdCBjaGFy ICpuYW1lLAogICAgICAgIGNvbnN0IHN0cnVjdCBibG9jayAqZ2xvYmFsX2Jsb2NrID0gYmxvY2tf Z2xvYmFsX2Jsb2NrIChibG9jayk7CiAgICAgICAgCiAgICAgICAgaWYgKGdsb2JhbF9ibG9jayAh PSBOVUxMKQpAQCAtMjA3OCw3ICsyMTI5LDcgQEAgaW5kZXggZDJkOGYyZS4uY2MyNTllNyAxMDA2 NDQKICAgICAgfQogIAogICAgaWYgKHN5bSAhPSBOVUxMKQotQEAgLTQzNCw2ICs1MjEsNyBAQCBs b29rdXBfc3ltYm9sX2ZpbGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNDM0LDYgKzU0OSw3IEBA IGxvb2t1cF9zeW1ib2xfZmlsZSAoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICBzeW0gPSBsb29r dXBfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAobmFtZSk7CiAgICAgICAgaWYgKHN5bSAhPSBO VUxMKQogIAlyZXR1cm4gc3ltOwpAQCAtMjA4NiwxOCArMjEzNywxOCBAQCBpbmRleCBkMmQ4ZjJl Li5jYzI1OWU3IDEwMDY0NAogICAgICB9CiAgCiAgICByZXR1cm4gTlVMTDsKLUBAIC00NjMsOSAr NTUxLDggQEAgY3BfbG9va3VwX25lc3RlZF90eXBlIChzdHJ1Y3QgdHlwZSAqcGFyZW50X3R5cGUs CitAQCAtNDYxLDkgKzU3Nyw4IEBAIGNwX2xvb2t1cF9uZXN0ZWRfdHlwZSAoc3RydWN0IHR5cGUg KnBhcmVudF90eXBlLAorIAkgICBsb29rdXBfc3ltYm9sX25hbWVzcGFjZSB3b3JrcyB3aGVuIGxv b2tpbmcgdGhlbSB1cC4gICovCisgCiAgCWNvbnN0IGNoYXIgKnBhcmVudF9uYW1lID0gVFlQRV9U QUdfTkFNRSAocGFyZW50X3R5cGUpOwotIAlzdHJ1Y3Qgc3ltYm9sICpzeW0gPSBjcF9sb29rdXBf c3ltYm9sX25hbWVzcGFjZSAocGFyZW50X25hbWUsCistCXN0cnVjdCBzeW1ib2wgKnN5bSA9IGNw X2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlIChwYXJlbnRfbmFtZSwKKysJc3RydWN0IHN5bWJvbCAq c3ltID0gY3BfbG9va3VwX3N5bWJvbF9pbl9uYW1lc3BhY2UgKHBhcmVudF9uYW1lLAogIAkJCQkJ CQkgbmVzdGVkX25hbWUsCiAtCQkJCQkJCSBOVUxMLAogIAkJCQkJCQkgYmxvY2ssCi0tCQkJCQkJ CSBWQVJfRE9NQUlOKTsKLSsJCQkJCQkJIFZBUl9ET01BSU4sMCk7CisgCQkJCQkJCSBWQVJfRE9N QUlOKTsKICAJaWYgKHN5bSA9PSBOVUxMIHx8IFNZTUJPTF9DTEFTUyAoc3ltKSAhPSBMT0NfVFlQ RURFRikKLSAJICByZXR1cm4gTlVMTDsKLSAJZWxzZQotQEAgLTcwOSw3ICs3OTYsNyBAQCBjaGVj a19vbmVfcG9zc2libGVfbmFtZXNwYWNlX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgaW50IGxl biwKK0BAIC03MDksNyArODI0LDcgQEAgY2hlY2tfb25lX3Bvc3NpYmxlX25hbWVzcGFjZV9zeW1i b2wgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBsZW4sCiAgCiAgICBtZW1jcHkgKG5hbWVfY29weSwg bmFtZSwgbGVuKTsKICAgIG5hbWVfY29weVtsZW5dID0gJ1wwJzsKQEAgLTIxMDYsNyArMjE1Nyw3 IEBAIGluZGV4IGQyZDhmMmUuLmNjMjU5ZTcgMTAwNjQ0CiAgCiAgICBpZiAoc3ltID09IE5VTEwp CiAgICAgIHsKLUBAIC03NDksNyArODM2LDcgQEAgbG9va3VwX3Bvc3NpYmxlX25hbWVzcGFjZV9z eW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUpCitAQCAtNzQ5LDcgKzg2NCw3IEBAIGxvb2t1cF9wb3Nz aWJsZV9uYW1lc3BhY2Vfc3ltYm9sIChjb25zdCBjaGFyICpuYW1lKQogICAgICAgIHN0cnVjdCBz eW1ib2wgKnN5bTsKICAKICAgICAgICBzeW0gPSBsb29rdXBfYmxvY2tfc3ltYm9sIChnZXRfcG9z c2libGVfbmFtZXNwYWNlX2Jsb2NrIChvYmpmaWxlKSwKQEAgLTIyMzcsMTAgKzIyODgsMTAgQEAg aW5kZXggZjEyZDc4NS4uY2ExMDAwNyAxMDA2NDQKICBfaW5pdGlhbGl6ZV9jcF9zdXBwb3J0ICh2 b2lkKQogIHsKIGRpZmYgLS1naXQgYS9nZGIvY3Atc3VwcG9ydC5oIGIvZ2RiL2NwLXN1cHBvcnQu aAotaW5kZXggYjVhNWM1Zi4uZjEyNmJlZCAxMDA2NDQKK2luZGV4IGI1YTVjNWYuLjAyMmYxMDIg MTAwNjQ0CiAtLS0gYS9nZGIvY3Atc3VwcG9ydC5oCiArKysgYi9nZGIvY3Atc3VwcG9ydC5oCi1A QCAtMzgsMTQgKzM4LDI5IEBAIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQ7CitAQCAtMzgsMTUg KzM4LDMzIEBAIHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQ7CiAgCiAgLyogVGhpcyBzdHJ1Y3Qg aXMgZGVzaWduZWQgdG8gc3RvcmUgZGF0YSBmcm9tIHVzaW5nIGRpcmVjdGl2ZXMuICBJdAogICAg IHNheXMgdGhhdCBuYW1lcyBmcm9tIG5hbWVzcGFjZSBJTVBPUlRfU1JDIHNob3VsZCBiZSB2aXNp YmxlIHdpdGhpbgpAQCAtMjI3MSw5ICsyMzIyLDEzIEBAIGluZGV4IGI1YTVjNWYuLmYxMjZiZWQg MTAwNjQ0CiArICBpbnQgbGluZV9udW1iZXI7CiArCiAgICBzdHJ1Y3QgdXNpbmdfZGlyZWN0ICpu ZXh0OworKworKyAgLyogVXNlZCBkdXJpbmcgaW1wb3J0IHNlYXJjaCB0byB0ZW1wb3Jhcmx5IG1h cmsgdGhpcyBub2RlIGFzIHNlYXJjZWQuICAqLworKyAgaW50IHNlYXJjaGVkOwogIH07CiAgCi1A QCAtNTQsNiArNjksNyBAQCBzdHJ1Y3QgdXNpbmdfZGlyZWN0CisgCitAQCAtNTQsNiArNzIsNyBA QCBzdHJ1Y3QgdXNpbmdfZGlyZWN0CiAgCiAgZXh0ZXJuIGNoYXIgKmNwX2Nhbm9uaWNhbGl6ZV9z dHJpbmcgKGNvbnN0IGNoYXIgKnN0cmluZyk7CiAgCkBAIC0yMjgxLDcgKzIzMzYsNyBAQCBpbmRl eCBiNWE1YzVmLi5mMTI2YmVkIDEwMDY0NAogIGV4dGVybiBjaGFyICpjcF9jbGFzc19uYW1lX2Zy b21fcGh5c25hbWUgKGNvbnN0IGNoYXIgKnBoeXNuYW1lKTsKICAKICBleHRlcm4gY2hhciAqbWV0 aG9kX25hbWVfZnJvbV9waHlzbmFtZSAoY29uc3QgY2hhciAqcGh5c25hbWUpOwotQEAgLTcyLDE1 ICs4OCwyMyBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqKm1ha2Vfc3ltYm9sX292ZXJsb2FkX2xp c3QgKGNvbnN0IGNoYXIgKiwKK0BAIC03MiwxNSArOTEsMjMgQEAgZXh0ZXJuIHN0cnVjdCBzeW1i b2wgKiptYWtlX3N5bWJvbF9vdmVybG9hZF9saXN0IChjb25zdCBjaGFyICosCiAgZXh0ZXJuIHN0 cnVjdCB0eXBlICpjcF9sb29rdXBfcnR0aV90eXBlIChjb25zdCBjaGFyICpuYW1lLAogIAkJCQkJ IHN0cnVjdCBibG9jayAqYmxvY2spOwogIApAQCAtMjMwNiw3ICsyMzYxLDcgQEAgaW5kZXggYjVh NWM1Zi4uZjEyNmJlZCAxMDA2NDQKICAJCQkJCSAgc3RydWN0IHVzaW5nX2RpcmVjdCAqbmV4dCk7 CiAgCiAgZXh0ZXJuIHZvaWQgY3BfaW5pdGlhbGl6ZV9uYW1lc3BhY2UgKHZvaWQpOwotQEAgLTk3 LDE1ICsxMjEsMzIgQEAgZXh0ZXJuIHZvaWQgY3Bfc2V0X2Jsb2NrX3Njb3BlIChjb25zdCBzdHJ1 Y3Qgc3ltYm9sICpzeW1ib2wsCitAQCAtOTcsMTUgKzEyNCwxOSBAQCBleHRlcm4gdm9pZCBjcF9z ZXRfYmxvY2tfc2NvcGUgKGNvbnN0IHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwKICBleHRlcm4gdm9p ZCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAq c3ltYm9sKTsKICAKICBleHRlcm4gc3RydWN0IHN5bWJvbCAqY3BfbG9va3VwX3N5bWJvbF9ub25s b2NhbCAoY29uc3QgY2hhciAqbmFtZSwKQEAgLTIzMTQsMTggKzIzNjksNiBAQCBpbmRleCBiNWE1 YzVmLi5mMTI2YmVkIDEwMDY0NAogIAkJCQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAog IAkJCQkJCSBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwogIAotK2V4dGVybiBzdHJ1Y3Qgc3lt Ym9sICpsb29rdXBfbmFtZXNwYWNlX3Njb3BlIChjb25zdCBjaGFyICpuYW1lLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sg KmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBkb21haW5fZW51bSBkb21haW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNjb3BlLAotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2NvcGVfbGVuLAotKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVjbGFyYXRpb25fb25seSk7Ci0r Ci0rZXh0ZXJuIHN0cnVjdCBzeW1ib2wqIGNwX2xvb2t1cF9zeW1ib2xfbmFtZXNwYWNlX2luY3Jl bWVudGFsIChjb25zdCBjaGFyICpzY29wZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29uc3QgY2hhciAqbmFtZSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKLSsK ICtzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX2ltcG9ydHMgKGNvbnN0IGNoYXIgKnNj b3BlLAogKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqbmFtZSwKICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IHN0cnVjdCBibG9jayAqYmxvY2ssCkBAIC0yMzM5LDggKzIzODIsNyBAQCBpbmRleCBiNWE1YzVm Li5mMTI2YmVkIDEwMDY0NAogLQkJCQkJCSAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNo YXIgKm5hbWUsCiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlY2xh cmF0aW9uX29ubHkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKICAKICBleHRlcm4gc3RydWN0IHR5 cGUgKmNwX2xvb2t1cF9uZXN0ZWRfdHlwZSAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlLAogIAkJ CQkJICAgY29uc3QgY2hhciAqbmVzdGVkX25hbWUsCkBAIC0zMjMwLDcgKzMyNzIsNyBAQCBpbmRl eCA0OTg0ZjMxLi5mY2YxYjVkIDEwMDY0NAogIFRoaXMgb2JzZXJ2ZXIgaXMgdXNlZCBmb3IgaW50 ZXJuYWwgdGVzdGluZy4gIERvIG5vdCB1c2UuICAKICBTZWUgdGVzdHN1aXRlL2dkYi5nZGIvb2Jz ZXJ2ZXIuZXhwLgogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjItZnJhbWUuYyBiL2dkYi9kd2FyZjIt ZnJhbWUuYwotaW5kZXggMGY2ZGE0MC4uZmM3MDMwOSAxMDA2NDQKK2luZGV4IDQyN2Y1OGYuLmZj NzAzMDkgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYyLWZyYW1lLmMKICsrKyBiL2dkYi9kd2FyZjIt ZnJhbWUuYwogQEAgLTM4LDYgKzM4LDcgQEAKQEAgLTMyNTUsMTggKzMyOTcsNyBAQCBpbmRleCAw ZjZkYTQwLi5mYzcwMzA5IDEwMDY0NAogIG5vX2dldF90bHNfYWRkcmVzcyAodm9pZCAqYmF0b24s IENPUkVfQUREUiBvZmZzZXQpCiAgewogICAgaW50ZXJuYWxfZXJyb3IgKF9fRklMRV9fLCBfX0xJ TkVfXywKLUBAIC0zNTIsMjQgKzM2MCwyOSBAQCBleGVjdXRlX3N0YWNrX29wIChnZGJfYnl0ZSAq ZXhwLCBVTE9OR0VTVCBsZW4sIGludCBhZGRyX3NpemUsCi0gewotICAgc3RydWN0IGR3YXJmX2V4 cHJfY29udGV4dCAqY3R4OwotICAgQ09SRV9BRERSIHJlc3VsdDsKLSsgIHN0cnVjdCBjbGVhbnVw ICpvbGRfY2hhaW47Ci0gCi0gICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotKyAg b2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwot KwotICAgY3R4LT5nZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotICAgY3R4 LT5hZGRyX3NpemUgPSBhZGRyX3NpemU7Ci0gICBjdHgtPmJhdG9uID0gdGhpc19mcmFtZTsKK0BA IC0zNjMsMTQgKzM3MSwxNiBAQCBleGVjdXRlX3N0YWNrX29wIChnZGJfYnl0ZSAqZXhwLCBVTE9O R0VTVCBsZW4sIGludCBhZGRyX3NpemUsCiAgICBjdHgtPnJlYWRfcmVnID0gcmVhZF9yZWc7CiAg ICBjdHgtPnJlYWRfbWVtID0gcmVhZF9tZW07CiAgICBjdHgtPmdldF9mcmFtZV9iYXNlID0gbm9f Z2V0X2ZyYW1lX2Jhc2U7CkBAIC0zMjgyLDEyICszMzEzLDkgQEAgaW5kZXggMGY2ZGE0MC4uZmM3 MDMwOSAxMDA2NDQKICAgICAgcmVzdWx0ID0gcmVhZF9yZWcgKHRoaXNfZnJhbWUsIHJlc3VsdCk7 CiArICAvKiBGSVhNRSAqLwogIAotLSAgZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKGN0eCk7Ci0r ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwog IAotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci1AQCAtMTI0Nyw2ICsxMjYwLDE0IEBAIGR3YXJmMl9m cmFtZV9iYXNlX3NuaWZmZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQorQEAgLTEy NTAsNiArMTI2MCwxNCBAQCBkd2FyZjJfZnJhbWVfYmFzZV9zbmlmZmVyIChzdHJ1Y3QgZnJhbWVf aW5mbyAqdGhpc19mcmFtZSkKICAKICAgIHJldHVybiBOVUxMOwogIH0KQEAgLTMzMDIsNyArMzMz MCw3IEBAIGluZGV4IDBmNmRhNDAuLmZjNzAzMDkgMTAwNjQ0CiAgDAogIGNvbnN0IHN0cnVjdCBv YmpmaWxlX2RhdGEgKmR3YXJmMl9mcmFtZV9vYmpmaWxlX2RhdGE7CiAgCi1AQCAtMTUzNiw2ICsx NTU3LDE0IEBAIGR3YXJmMl9mcmFtZV9maW5kX2ZkZSAoQ09SRV9BRERSICpwYykKK0BAIC0xNTM5 LDYgKzE1NTcsMTQgQEAgZHdhcmYyX2ZyYW1lX2ZpbmRfZmRlIChDT1JFX0FERFIgKnBjKQogICAg ICAgIENPUkVfQUREUiBvZmZzZXQ7CiAgICAgICAgQ09SRV9BRERSIHNlZWtfcGM7CiAgCkBAIC0z MzMxLDMzICszMzU5LDEwIEBAIGluZGV4IGIyMDM2NjEuLmRkMDNkNTkgMTAwNjQ0CiArCiAgI2Vu ZGlmIC8qIGR3YXJmMi1mcmFtZS5oICovCiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIuYyBi L2dkYi9kd2FyZjJleHByLmMKLWluZGV4IDhkYmY5NzYuLjIyOGVhZTcgMTAwNjQ0CitpbmRleCAy NzIxMDY1Li4yMjhlYWU3IDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwogKysrIGIvZ2Ri L2R3YXJmMmV4cHIuYwotQEAgLTYxLDYgKzYxLDIyIEBAIGZyZWVfZHdhcmZfZXhwcl9jb250ZXh0 IChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgpCi0gICB4ZnJlZSAoY3R4KTsKLSB9Ci0g Ci0rLyogSGVscGVyIGZvciBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQuICAq LwotKwotK3N0YXRpYyB2b2lkCi0rZnJlZV9kd2FyZl9leHByX2NvbnRleHRfY2xlYW51cCAodm9p ZCAqYXJnKQotK3sKLSsgIGZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChhcmcpOwotK30KLSsKLSsv KiBSZXR1cm4gYSBjbGVhbnVwIHRoYXQgY2FsbHMgZnJlZV9kd2FyZl9leHByX2NvbnRleHQuICAq LwotKwotK3N0cnVjdCBjbGVhbnVwICoKLSttYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2Nv bnRleHQgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCkKLSt7Ci0rICByZXR1cm4gbWFr ZV9jbGVhbnVwIChmcmVlX2R3YXJmX2V4cHJfY29udGV4dF9jbGVhbnVwLCBjdHgpOwotK30KLSsK LSAvKiBFeHBhbmQgdGhlIG1lbW9yeSBhbGxvY2F0ZWQgdG8gQ1RYJ3Mgc3RhY2sgdG8gY29udGFp biBhdCBsZWFzdAotICAgIE5FRUQgbW9yZSBlbGVtZW50cyB0aGFuIGFyZSBjdXJyZW50bHkgdXNl ZC4gICovCi0gCi1AQCAtMTA5LDggKzEyNSw3IEBAIGR3YXJmX2V4cHJfZmV0Y2ggKHN0cnVjdCBk d2FyZl9leHByX2NvbnRleHQgKmN0eCwgaW50IG4pCitAQCAtMTI1LDggKzEyNSw3IEBAIGR3YXJm X2V4cHJfZmV0Y2ggKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgaW50IG4pCiAgCiAg LyogQWRkIGEgbmV3IHBpZWNlIHRvIENUWCdzIHBpZWNlIGxpc3QuICAqLwogIHN0YXRpYyB2b2lk CkBAIC0zMzY3LDcgKzMzNzIsNyBAQCBpbmRleCA4ZGJmOTc2Li4yMjhlYWU3IDEwMDY0NAogIHsK ICAgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwOwogIAotQEAgLTEyNSw5ICsxNDAsMTUgQEAg YWRkX3BpZWNlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCitAQCAtMTQxLDkgKzE0 MCwxNSBAQCBhZGRfcGllY2UgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAqIHNpemVvZiAoc3RydWN0IGR3YXJmX2V4cHJfcGllY2Up KTsKICAKICAgIHAgPSAmY3R4LT5waWVjZXNbY3R4LT5udW1fcGllY2VzIC0gMV07CkBAIC0zMzg1 LDcgKzMzOTAsNyBAQCBpbmRleCA4ZGJmOTc2Li4yMjhlYWU3IDEwMDY0NAogIH0KICAKICAvKiBF dmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiBhdCBBRERSIChMRU4gYnl0ZXMgbG9uZykgdXNpbmcgdGhl IGNvbnRleHQKLUBAIC0yNzEsNiArMjkyLDIxIEBAIHNpZ25lZF9hZGRyZXNzX3R5cGUgKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgYWRkcl9zaXplKQorQEAgLTI4Nyw2ICsyOTIsMjEgQEAg c2lnbmVkX2FkZHJlc3NfdHlwZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCBhZGRyX3Np emUpCiAgICAgIH0KICB9CiAgDApAQCAtMzQwNyw3ICszNDEyLDcgQEAgaW5kZXggOGRiZjk3Ni4u MjI4ZWFlNyAxMDA2NDQKICAvKiBUaGUgZW5naW5lIGZvciB0aGUgZXhwcmVzc2lvbiBldmFsdWF0 b3IuICBVc2luZyB0aGUgY29udGV4dCBpbiBDVFgsCiAgICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Np b24gYmV0d2VlbiBPUF9QVFIgYW5kIE9QX0VORC4gICovCiAgCi1AQCAtMjc5LDggKzMxNSw3IEBA IGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKK0BAIC0y OTUsOCArMzE1LDcgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4 dCAqY3R4LAogIAkJICBnZGJfYnl0ZSAqb3BfcHRyLCBnZGJfYnl0ZSAqb3BfZW5kKQogIHsKICAg IGVudW0gYmZkX2VuZGlhbiBieXRlX29yZGVyID0gZ2RiYXJjaF9ieXRlX29yZGVyIChjdHgtPmdk YmFyY2gpOwpAQCAtMzQxNyw3ICszNDIyLDcgQEAgaW5kZXggOGRiZjk3Ni4uMjI4ZWFlNyAxMDA2 NDQKICAgIGN0eC0+aW5pdGlhbGl6ZWQgPSAxOyAgLyogRGVmYXVsdCBpcyBpbml0aWFsaXplZC4g ICovCiAgCiAgICBpZiAoY3R4LT5yZWN1cnNpb25fZGVwdGggPiBjdHgtPm1heF9yZWN1cnNpb25f ZGVwdGgpCi1AQCAtNDIwLDIwICs0NTUsMzYgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3 YXJmX2V4cHJfY29udGV4dCAqY3R4LAorQEAgLTQzNiwyMCArNDU1LDM2IEBAIGV4ZWN1dGVfc3Rh Y2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKICAJCSAgICJ1c2VkIGVpdGhl ciBhbG9uZSBvciBpbiBjb25qdWN0aW9uIHdpdGggRFdfT1BfcGllY2UuIikpOwogIAogIAkgIHJl c3VsdCA9IG9wIC0gRFdfT1BfcmVnMDsKQEAgLTM0NjAsNyArMzQ2NSw3IEBAIGluZGV4IDhkYmY5 NzYuLjIyOGVhZTcgMTAwNjQ0CiAgCWNhc2UgRFdfT1BfYnJlZzA6CiAgCWNhc2UgRFdfT1BfYnJl ZzE6CiAgCWNhc2UgRFdfT1BfYnJlZzI6Ci1AQCAtNDk4LDExICs1NDksMTIgQEAgZXhlY3V0ZV9z dGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAorQEAgLTUxNCwxMSArNTQ5 LDEyIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwK ICAJICAgIChjdHgtPmdldF9mcmFtZV9iYXNlKSAoY3R4LT5iYXRvbiwgJmRhdGFzdGFydCwgJmRh dGFsZW4pOwogIAkgICAgZHdhcmZfZXhwcl9ldmFsIChjdHgsIGRhdGFzdGFydCwgZGF0YWxlbik7 CiAgCSAgICByZXN1bHQgPSBkd2FyZl9leHByX2ZldGNoIChjdHgsIDApOwpAQCAtMzQ3NSw3ICsz NDgwLDcgQEAgaW5kZXggOGRiZjk3Ni4uMjI4ZWFlNyAxMDA2NDQKICAJICB9CiAgCSAgYnJlYWs7 CiAgCWNhc2UgRFdfT1BfZHVwOgotQEAgLTcwMCw2ICs3NTIsMTAgQEAgZXhlY3V0ZV9zdGFja19v cCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAorQEAgLTcxNiw2ICs3NTIsMTAgQEAg ZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LAogIAkgIH0K ICAJICBicmVhazsKICAKQEAgLTM0ODYsNyArMzQ5MSw3IEBAIGluZGV4IDhkYmY5NzYuLjIyOGVh ZTcgMTAwNjQ0CiAgCWNhc2UgRFdfT1BfR05VX3B1c2hfdGxzX2FkZHJlc3M6CiAgCSAgLyogVmFy aWFibGUgaXMgYXQgYSBjb25zdGFudCBvZmZzZXQgaW4gdGhlIHRocmVhZC1sb2NhbAogIAkgIHN0 b3JhZ2UgYmxvY2sgaW50byB0aGUgb2JqZmlsZSBmb3IgdGhlIGN1cnJlbnQgdGhyZWFkIGFuZAot QEAgLTczOCwxMiArNzk0LDEzIEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHBy X2NvbnRleHQgKmN0eCwKK0BAIC03NTQsMTIgKzc5NCwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChz dHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCiAgICAgICAgICAgICAgLyogUmVjb3Jk IHRoZSBwaWVjZS4gICovCiAgICAgICAgICAgICAgb3BfcHRyID0gcmVhZF91bGViMTI4IChvcF9w dHIsIG9wX2VuZCwgJnNpemUpOwpAQCAtMzUwNSw3ICszNTEwLDcgQEAgaW5kZXggOGRiZjk3Ni4u MjI4ZWFlNyAxMDA2NDQKICAgICAgICAgICAgfQogICAgICAgICAgICBnb3RvIG5vX3B1c2g7CiAg Ci1AQCAtNzU1LDYgKzgxMiwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0ICpjdHgsCitAQCAtNzcxLDYgKzgxMiwxMyBAQCBleGVjdXRlX3N0YWNrX29wIChz dHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCSAgY3R4LT5pbml0aWFsaXplZCA9IDA7 CiAgCSAgZ290byBub19wdXNoOwogIApAQCAtMzUyMCw3ICszNTI1LDcgQEAgaW5kZXggOGRiZjk3 Ni4uMjI4ZWFlNyAxMDA2NDQKICAJICBlcnJvciAoXygiVW5oYW5kbGVkIGR3YXJmIGV4cHJlc3Np b24gb3Bjb2RlIDB4JXgiKSwgb3ApOwogIAl9CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJmMmV4cHIu aCBiL2dkYi9kd2FyZjJleHByLmgKLWluZGV4IDcwNDc5MjIuLjU5N2MyZGUgMTAwNjQ0CitpbmRl eCAyMzA2ZTQ5Li41OTdjMmRlIDEwMDY0NAogLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAogKysrIGIv Z2RiL2R3YXJmMmV4cHIuaAogQEAgLTIzLDYgKzIzLDE5IEBACkBAIC0zNjQyLDE3ICszNjQ3LDgg QEAgaW5kZXggNzA0NzkyMi4uNTk3YzJkZSAxMDA2NDQKICAKICAgIC8qIFRoZSBsZW5ndGggb2Yg dGhlIHBpZWNlLCBpbiBieXRlcy4gICovCiAgICBVTE9OR0VTVCBzaXplOwotQEAgLTEzMSw2ICsx NTksOCBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9waWVjZQotIAotIHN0cnVjdCBkd2FyZl9leHByX2Nv bnRleHQgKm5ld19kd2FyZl9leHByX2NvbnRleHQgKHZvaWQpOwotIHZvaWQgZnJlZV9kd2FyZl9l eHByX2NvbnRleHQgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCk7Ci0rc3RydWN0IGNs ZWFudXAgKgotKyAgICBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2NvbnRleHQgKHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCk7Ci0gCi0gdm9pZCBkd2FyZl9leHByX3B1c2ggKHN0 cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwgQ09SRV9BRERSIHZhbHVlKTsKLSB2b2lkIGR3 YXJmX2V4cHJfcG9wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgpOwogZGlmZiAtLWdp dCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYwotaW5kZXggMDcxYjVhYy4uN2Iy ZTQ4OCAxMDA2NDQKK2luZGV4IDFkZjZhOWYuLmMxMDEzNzEgMTAwNjQ0CiAtLS0gYS9nZGIvZHdh cmYybG9jLmMKICsrKyBiL2dkYi9kd2FyZjJsb2MuYwogQEAgLTM2LDYgKzM2LDcgQEAKQEAgLTM3 OTcsNiArMzc5Myw4IEBAIGluZGV4IDA3MWI1YWMuLjdiMmU0ODggMTAwNjQ0CiArICBiYXRvbi5v YmplY3RfYWRkcmVzcyA9IG9iamVjdF9hZGRyZXNzOwogKwogKyAgY3R4ID0gbmV3X2R3YXJmX2V4 cHJfY29udGV4dCAoKTsKKysgIG1ha2VfY2xlYW51cF9mcmVlX2R3YXJmX2V4cHJfY29udGV4dCAo Y3R4KTsKKysKICsgIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKGJhdG9uLm9iamZp bGUpOwogKyAgY3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1 KTsKICsgIGN0eC0+YmF0b24gPSAmYmF0b247CkBAIC0zODA3LDggKzM4MDUsNiBAQCBpbmRleCAw NzFiNWFjLi43YjJlNDg4IDEwMDY0NAogKyAgY3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9l eHByX3Rsc19hZGRyZXNzOwogKyAgY3R4LT5nZXRfb2JqZWN0X2FkZHJlc3MgPSBkd2FyZl9leHBy X29iamVjdF9hZGRyZXNzOwogKwotKyAgbWFrZV9jbGVhbnVwICgobWFrZV9jbGVhbnVwX2Z0eXBl ICopIGZyZWVfZHdhcmZfZXhwcl9jb250ZXh0LCBjdHgpOwotKwogKyAgZHdhcmZfZXhwcl9ldmFs IChjdHgsIGRhdGEsIHNpemUpOwogKwogKyAgLyogSXQgd2FzIHVzZWQgb25seSBkdXJpbmcgZHdh cmZfZXhwcl9ldmFsLiAgKi8KQEAgLTM4NDIsMjUgKzM4MzgsMjcgQEAgaW5kZXggMDcxYjVhYy4u N2IyZTQ4OCAxMDA2NDQKICAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2NyaXB0aW9uLCBzdGFy dGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZpbmQgdGhlIGN1cnJl bnQgbG9jYXRpb24gb2YgdmFyaWFibGUgVkFSIGluIHRoZSBjb250ZXh0CiAgICAgb2YgRlJBTUUu ICAqLwotQEAgLTIxMyw4ICszNDcsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVj dCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTIxMyw5ICszNDcs OCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLAogIAkJCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVy X2N1KQogIHsKICAgIHN0cnVjdCB2YWx1ZSAqcmV0dmFsOwogLSAgc3RydWN0IGR3YXJmX2V4cHJf YmF0b24gYmF0b247CiAgICBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHg7Ci0rICBzdHJ1 Y3QgY2xlYW51cCAqYmFja190byA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKKy0g IHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisrICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWlu ID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwogIAogICAgaWYgKHNpemUgPT0gMCkK ICAgICAgewotQEAgLTIyNCwxOSArMzU4LDggQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC0yMjUsMjEg KzM1OCw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICAgICAgcmV0dXJuIHJldHZhbDsKICAgICAgfQog IAogLSAgYmF0b24uZnJhbWUgPSBmcmFtZTsKIC0gIGJhdG9uLm9iamZpbGUgPSBkd2FyZjJfcGVy X2N1X29iamZpbGUgKHBlcl9jdSk7Ci0rICBjdHggPSBkd2FyZl9leHByX3ByZXBfY3R4IChmcmFt ZSwgZGF0YSwgc2l6ZSwgcGVyX2N1KTsKLSAKKy0KIC0gIGN0eCA9IG5ld19kd2FyZl9leHByX2Nv bnRleHQgKCk7CistICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZnJlZV9kd2FyZl9leHByX2Nv bnRleHQgKGN0eCk7CistCiAtICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChiYXRv bi5vYmpmaWxlKTsKIC0gIGN0eC0+YWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUg KHBlcl9jdSk7CiAtICBjdHgtPmJhdG9uID0gJmJhdG9uOwpAQCAtMzg2OCwxMiArMzg2NiwxMyBA QCBpbmRleCAwNzFiNWFjLi43YjJlNDg4IDEwMDY0NAogLSAgY3R4LT5yZWFkX21lbSA9IGR3YXJm X2V4cHJfcmVhZF9tZW07CiAtICBjdHgtPmdldF9mcmFtZV9iYXNlID0gZHdhcmZfZXhwcl9mcmFt ZV9iYXNlOwogLSAgY3R4LT5nZXRfdGxzX2FkZHJlc3MgPSBkd2FyZl9leHByX3Rsc19hZGRyZXNz OwotLQorKyAgY3R4ID0gZHdhcmZfZXhwcl9wcmVwX2N0eCAoZnJhbWUsIGRhdGEsIHNpemUsIHBl cl9jdSk7CisgCiAtICBkd2FyZl9leHByX2V2YWwgKGN0eCwgZGF0YSwgc2l6ZSk7CiAgICBpZiAo Y3R4LT5udW1fcGllY2VzID4gMCkKICAgICAgewogICAgICAgIGludCBpOwotQEAgLTI0OCw0MSAr MzcxLDEyMCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAgLTI1MSwzNiArMzcxLDExNSBAQCBkd2FyZjJf ZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLAogICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm51bV9waWVjZXM7IGkrKykKICAJ ewogIAkgIHN0cnVjdCBkd2FyZl9leHByX3BpZWNlICpwID0gJmN0eC0+cGllY2VzW2ldOwpAQCAt NDAxMiwxMyArNDAxMSw3IEBAIGluZGV4IDA3MWI1YWMuLjdiMmU0ODggMTAwNjQ0CiAgICAgIH0K ICAKICAgIHNldF92YWx1ZV9pbml0aWFsaXplZCAocmV0dmFsLCBjdHgtPmluaXRpYWxpemVkKTsK LSAKLS0gIGZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotKyAgZG9fY2xlYW51cHMgKGJh Y2tfdG8pOwotIAotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci1AQCAtMzI3LDYgKzUyOSwxNSBAQCBu ZWVkc19mcmFtZV9mcmFtZV9iYXNlICh2b2lkICpiYXRvbiwgZ2RiX2J5dGUgKipzdGFydCwgc2l6 ZV90ICogbGVuZ3RoKQorQEAgLTMzMCw2ICs1MjksMTUgQEAgbmVlZHNfZnJhbWVfZnJhbWVfYmFz ZSAodm9pZCAqYmF0b24sIGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAqIGxlbmd0aCkKICAgIG5m X2JhdG9uLT5uZWVkc19mcmFtZSA9IDE7CiAgfQogIApAQCAtNDAzNCwyMCArNDAyNyw3IEBAIGlu ZGV4IDA3MWI1YWMuLjdiMmU0ODggMTAwNjQ0CiAgLyogVGhyZWFkLWxvY2FsIGFjY2Vzc2VzIGRv IHJlcXVpcmUgYSBmcmFtZS4gICovCiAgc3RhdGljIENPUkVfQUREUgogIG5lZWRzX2ZyYW1lX3Rs c19hZGRyZXNzICh2b2lkICpiYXRvbiwgQ09SRV9BRERSIG9mZnNldCkKLUBAIC0zNDYsMjEgKzU1 NywyNSBAQCBkd2FyZjJfbG9jX2Rlc2NfbmVlZHNfZnJhbWUgKGdkYl9ieXRlICpkYXRhLCB1bnNp Z25lZCBzaG9ydCBzaXplLAotICAgc3RydWN0IG5lZWRzX2ZyYW1lX2JhdG9uIGJhdG9uOwotICAg c3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4OwotICAgaW50IGluX3JlZzsKLSsgIHN0cnVj dCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gCi0gICBiYXRvbi5uZWVkc19mcmFtZSA9IDA7Ci0gCi0g ICBjdHggPSBuZXdfZHdhcmZfZXhwcl9jb250ZXh0ICgpOwotKyAgb2xkX2NoYWluID0gbWFrZV9j bGVhbnVwX2ZyZWVfZHdhcmZfZXhwcl9jb250ZXh0IChjdHgpOwotKwotICAgY3R4LT5nZGJhcmNo ID0gZ2V0X29iamZpbGVfYXJjaCAoZHdhcmYyX3Blcl9jdV9vYmpmaWxlIChwZXJfY3UpKTsKLSAg IGN0eC0+YWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7Ci0gICBj dHgtPmJhdG9uID0gJmJhdG9uOworQEAgLTM2MiwxMSArNTcwLDEyIEBAIGR3YXJmMl9sb2NfZGVz Y19uZWVkc19mcmFtZSAoZ2RiX2J5dGUgKmRhdGEsIHVuc2lnbmVkIHNob3J0IHNpemUsCiAgICBj dHgtPnJlYWRfcmVnID0gbmVlZHNfZnJhbWVfcmVhZF9yZWc7CiAgICBjdHgtPnJlYWRfbWVtID0g bmVlZHNfZnJhbWVfcmVhZF9tZW07CiAgICBjdHgtPmdldF9mcmFtZV9iYXNlID0gbmVlZHNfZnJh bWVfZnJhbWVfYmFzZTsKQEAgLTQwNjEsNyArNDA0MSw3IEBAIGluZGV4IDA3MWI1YWMuLjdiMmU0 ODggMTAwNjQ0CiAgCiAgICBpZiAoY3R4LT5udW1fcGllY2VzID4gMCkKICAgICAgewotQEAgLTM2 OSwxMSArNTg0LDExIEBAIGR3YXJmMl9sb2NfZGVzY19uZWVkc19mcmFtZSAoZ2RiX2J5dGUgKmRh dGEsIHVuc2lnbmVkIHNob3J0IHNpemUsCitAQCAtMzc1LDcgKzU4NCw3IEBAIGR3YXJmMl9sb2Nf ZGVzY19uZWVkc19mcmFtZSAoZ2RiX2J5dGUgKmRhdGEsIHVuc2lnbmVkIHNob3J0IHNpemUsCiAg ICAgICAgLyogSWYgdGhlIGxvY2F0aW9uIGhhcyBzZXZlcmFsIHBpZWNlcywgYW5kIGFueSBvZiB0 aGVtIGFyZSBpbgogICAgICAgICAgIHJlZ2lzdGVycywgdGhlbiB3ZSB3aWxsIG5lZWQgYSBmcmFt ZSB0byBmZXRjaCB0aGVtIGZyb20uICAqLwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBjdHgtPm51 bV9waWVjZXM7IGkrKykKQEAgLTQwNzAsMTIgKzQwNTAsNyBAQCBpbmRleCAwNzFiNWFjLi43YjJl NDg4IDEwMDY0NAogICAgICAgICAgICBpbl9yZWcgPSAxOwogICAgICB9CiAgCi0tICBmcmVlX2R3 YXJmX2V4cHJfY29udGV4dCAoY3R4KTsKLSsgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotIAot ICAgcmV0dXJuIGJhdG9uLm5lZWRzX2ZyYW1lIHx8IGluX3JlZzsKLSB9Ci1AQCAtNjAxLDcgKzgx Niw3IEBAIHN0YXRpYyBpbnQKK0BAIC02MDcsNyArODE2LDcgQEAgc3RhdGljIGludAogIGxvY2xp c3RfZGVzY3JpYmVfbG9jYXRpb24gKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSkKICB7CiAgICAvKiBGSVhNRTogQ291bGQgcHJpbnQgdGhlIGVudGlyZSBsaXN0 IG9mIGxvY2F0aW9ucy4gICovCkBAIC00MDg0LDcgKzQwNTksNyBAQCBpbmRleCAwNzFiNWFjLi43 YjJlNDg4IDEwMDY0NAogICAgcmV0dXJuIDE7CiAgfQogIAotQEAgLTYxNywxNiArODMyLDU2IEBA IGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTYyMywxNiArODMyLDU2IEBAIGxvY2xpc3RfdHJhY2Vw b2ludF92YXJfcmVmIChzdHJ1Y3Qgc3ltYm9sICpzeW1ib2wsIHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAogIAogICAgZGF0YSA9IGZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoZGxiYXRvbiwgJnNp emUsIGF4LT5zY29wZSk7CiAgICBpZiAoZGF0YSA9PSBOVUxMKQpAQCAtNDE2MSw3ICs0MTM2LDcg QEAgaW5kZXggMGJmY2ZjYS4uMDEwMThkNiAxMDA2NDQKICAKICAjZW5kaWYgLyogZHdhcmYybG9j LmggKi8KIGRpZmYgLS1naXQgYS9nZGIvZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYwot aW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKK2luZGV4IDQ0NWJhYjguLjJlMGE0YmMgMTAw NjQ0CiAtLS0gYS9nZGIvZHdhcmYycmVhZC5jCiArKysgYi9nZGIvZHdhcmYycmVhZC5jCiBAQCAt MSw4ICsxLDcgQEAKQEAgLTQxNzQsNyArNDE0OSw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2Yzkg MTAwNjQ0CiAgCiAgICAgQWRhcHRlZCBieSBHYXJ5IEZ1bmNrIChnYXJ5QGludHJlcGlkLmNvbSks IEludHJlcGlkIFRlY2hub2xvZ3ksCiAgICAgSW5jLiAgd2l0aCBzdXBwb3J0IGZyb20gRmxvcmlk YSBTdGF0ZSBVbml2ZXJzaXR5ICh1bmRlciBjb250cmFjdAotQEAgLTQ4LDYgKzQ3LDExIEBACitA QCAtNDgsNiArNDcsMTIgQEAKICAjaW5jbHVkZSAiZ2RiY21kLmgiCiAgI2luY2x1ZGUgImJsb2Nr LmgiCiAgI2luY2x1ZGUgImFkZHJtYXAuaCIKQEAgLTQxODMsMTAgKzQxNTgsMTEgQEAgaW5kZXgg NDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICsjaW5jbHVkZSAianYtbGFuZy5oIgogKyNpbmNsdWRl ICJ0eXBlcHJpbnQuaCIKICsjaW5jbHVkZSAidmVjLmgiCisrI2luY2x1ZGUgImJsb2NrLmgiCiAg CiAgI2luY2x1ZGUgPGZjbnRsLmg+CiAgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC05Myw3 ICs5Nyw3IEBAIHR5cGVkZWYgc3RydWN0IHB1Ym5hbWVzX2hlYWRlcgorQEAgLTkzLDcgKzk4LDcg QEAgdHlwZWRlZiBzdHJ1Y3QgcHVibmFtZXNfaGVhZGVyCiAgX1BVQk5BTUVTX0hFQURFUjsKICAj ZGVmaW5lIF9BQ1RVQUxfUFVCTkFNRVNfSEVBREVSX1NJWkUgMTMKICAKQEAgLTQxOTUsNyArNDE3 MSw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICAgQmVjYXVzZSBvZiBhbGln bm1lbnQgY29uc3RyYWludHMsIHRoaXMgc3RydWN0dXJlIGhhcyBwYWRkaW5nIGFuZCBjYW5ub3QK ICAgICBiZSBtYXBwZWQgZGlyZWN0bHkgb250byB0aGUgYmVnaW5uaW5nIG9mIHRoZSAuZGVidWdf aW5mbyBzZWN0aW9uLiAgKi8KICB0eXBlZGVmIHN0cnVjdCBhcmFuZ2VzX2hlYWRlcgotQEAgLTE1 MCw3ICsxNTQsMTAgQEAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8KK0BAIC0xNTAsNyArMTU1 LDEwIEBAIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvCiAgICBhc2VjdGlvbiAqYXNlY3Rpb247 CiAgICBnZGJfYnl0ZSAqYnVmZmVyOwogICAgYmZkX3NpemVfdHlwZSBzaXplOwpAQCAtNDIwNyw3 ICs0MTgzLDI3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgfTsKICAKICBzdHJ1 Y3QgZHdhcmYyX3Blcl9vYmpmaWxlCi1AQCAtNDc0LDggKzQ4MSw4IEBAIHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvCitAQCAtMzM2LDYgKzM0NCwxOSBAQCBzdHJ1Y3QgZHdhcmYyX2N1CisgCisgICAv KiBGaWVsZCBgcmFuZ2VzX29mZnNldCcgaXMgZmlsbGVkIGluOyBmbGFnIGFzIHRoZSB2YWx1ZSBt YXkgYmUgemVyby4gICovCisgICB1bnNpZ25lZCBpbnQgaGFzX3Jhbmdlc19vZmZzZXQgOiAxOwor KworKyAgLyogRmllbGRzIGFyZSB2YWxpZCBhY2NvcmRpbmcgdG8gdGhlIExBTkdVQUdFIGZpZWxk LiAgKi8KKysgIHVuaW9uCisrICAgIHsKKysgICAgICAvKiBsYW5ndWFnZV9mb3J0cmFuICovCisr ICAgICAgc3RydWN0CisrICAgICAgICB7CisrCSAgLyogTW9kdWxlIG5hbWVzIGltcG9ydGVkIHRv IHRoZSBibG9jayBiZWluZyBjdXJyZW50bHkgcmVhZCBpbi4gICovCisrCSAgc3RydWN0IGZvcnRy YW5fdXNpbmcgKnVzZTsKKysJfQorKyAgICAgIGZvcnRyYW47CisrICAgIH0KKysgIGxhbmd1YWdl X3NwZWNpZmljOworIH07CisgCisgLyogUGVyc2lzdGVudCBkYXRhIGhlbGQgZm9yIGEgY29tcGls YXRpb24gdW5pdCwgZXZlbiB3aGVuIG5vdAorQEAgLTQ3NCw4ICs0OTUsOCBAQCBzdHJ1Y3QgcGFy dGlhbF9kaWVfaW5mbwogICAgICAvKiBEV0FSRi0yIHRhZyBmb3IgdGhpcyBESUUuICAqLwogICAg ICBFTlVNX0JJVEZJRUxEKGR3YXJmX3RhZykgdGFnIDogMTY7CiAgCkBAIC00MjE4LDcgKzQyMTQs NyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgICB1bnNpZ25lZCBpbnQgbGFu Z3VhZ2UgOiA4OwogIAogICAgICAvKiBBc3NvcnRlZCBmbGFncyBkZXNjcmliaW5nIHRoZSBkYXRh IGZvdW5kIGluIHRoaXMgRElFLiAgKi8KLUBAIC00OTUsOCArNTAyLDcgQEAgc3RydWN0IHBhcnRp YWxfZGllX2luZm8KK0BAIC00OTUsOCArNTE2LDcgQEAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8K ICAgICAgdW5zaWduZWQgaW50IGhhc19ieXRlX3NpemUgOiAxOwogIAogICAgICAvKiBUaGUgbmFt ZSBvZiB0aGlzIERJRS4gIE5vcm1hbGx5IHRoZSB2YWx1ZSBvZiBEV19BVF9uYW1lLCBidXQKQEAg LTQyMjgsNyArNDIyNCw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICAgIGNo YXIgKm5hbWU7CiAgICAgIGNoYXIgKmRpcm5hbWU7CiAgCi1AQCAtNjkxLDYgKzY5NywxMSBAQCBz dHJ1Y3QgZmllbGRfaW5mbworQEAgLTY5MSw2ICs3MTEsMTEgQEAgc3RydWN0IGZpZWxkX2luZm8K ICAgICAgaW50IG5mbmZpZWxkczsKICAgIH07CiAgCkBAIC00MjQwLDcgKzQyMzYsNyBAQCBpbmRl eCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIC8qIE9uZSBpdGVtIG9uIHRoZSBxdWV1ZSBvZiBj b21waWxhdGlvbiB1bml0cyB0byByZWFkIGluIGZ1bGwgc3ltYm9scwogICAgIGZvci4gICovCiAg c3RydWN0IGR3YXJmMl9xdWV1ZV9pdGVtCi1AQCAtODAyLDcgKzgxMywxMCBAQCBzdGF0aWMgdm9p ZCBzY2FuX3BhcnRpYWxfc3ltYm9scyAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKiwKK0BAIC04 MDIsNyArODI3LDEwIEBAIHN0YXRpYyB2b2lkIHNjYW5fcGFydGlhbF9zeW1ib2xzIChzdHJ1Y3Qg cGFydGlhbF9kaWVfaW5mbyAqLAogIHN0YXRpYyB2b2lkIGFkZF9wYXJ0aWFsX3N5bWJvbCAoc3Ry dWN0IHBhcnRpYWxfZGllX2luZm8gKiwKICAJCQkJc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKQEAg LTQyNTIsNyArNDI0OCw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgCiAgc3Rh dGljIHZvaWQgYWRkX3BhcnRpYWxfbmFtZXNwYWNlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAq cGRpLAogIAkJCQkgICBDT1JFX0FERFIgKmxvd3BjLCBDT1JFX0FERFIgKmhpZ2hwYywKLUBAIC04 MjcsNiArODQxLDEwIEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRhYiAoc3Ry dWN0IHBhcnRpYWxfc3ltdGFiICopOworQEAgLTgyNyw2ICs4NTUsMTAgQEAgc3RhdGljIHZvaWQg ZHdhcmYyX3BzeW10YWJfdG9fc3ltdGFiIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKik7CiAgCiAg c3RhdGljIHZvaWQgcHN5bXRhYl90b19zeW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICop OwogIApAQCAtNDI2Myw3ICs0MjU5LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQK ICBzdGF0aWMgdm9pZCBkd2FyZjJfcmVhZF9hYmJyZXZzIChiZmQgKmFiZmQsIHN0cnVjdCBkd2Fy ZjJfY3UgKmN1KTsKICAKICBzdGF0aWMgdm9pZCBkd2FyZjJfZnJlZV9hYmJyZXZfdGFibGUgKHZv aWQgKik7Ci1AQCAtOTQ3LDggKzk2NSwxMyBAQCBzdGF0aWMgc3RydWN0IHR5cGUgKnRhZ190eXBl X3RvX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOworQEAgLTk0 Nyw4ICs5NzksMTMgQEAgc3RhdGljIHN0cnVjdCB0eXBlICp0YWdfdHlwZV90b190eXBlIChzdHJ1 Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKICAKICBzdGF0aWMgc3RydWN0IHR5 cGUgKnJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICop OwogIApAQCAtNDI3Nyw3ICs0MjczLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQK ICBzdGF0aWMgY2hhciAqdHlwZW5hbWVfY29uY2F0IChzdHJ1Y3Qgb2JzdGFjayAqLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnByZWZpeCwgCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3VmZml4LAotQEAgLTk2Niw3ICs5ODks OCBAQCBzdGF0aWMgaW50IGR3YXJmMl9yYW5nZXNfcmVhZCAodW5zaWduZWQsIENPUkVfQUREUiAq LCBDT1JFX0FERFIgKiwKK0BAIC05NjYsNyArMTAwMyw4IEBAIHN0YXRpYyBpbnQgZHdhcmYyX3Jh bmdlc19yZWFkICh1bnNpZ25lZCwgQ09SRV9BRERSICosIENPUkVfQUREUiAqLAogIAkJCSAgICAg ICBzdHJ1Y3QgZHdhcmYyX2N1ICosIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqKTsKICAKICBzdGF0 aWMgaW50IGR3YXJmMl9nZXRfcGNfYm91bmRzIChzdHJ1Y3QgZGllX2luZm8gKiwKQEAgLTQyODcs NyArNDI4Myw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgCiAgc3RhdGljIHZv aWQgZ2V0X3Njb3BlX3BjX2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICosCiAgCQkJCSBDT1JFX0FE RFIgKiwgQ09SRV9BRERSICosCi1AQCAtOTkwLDEzICsxMDE0LDEyIEBAIHN0YXRpYyB2b2lkIGR3 YXJmMl9hdHRhY2hfZm5fZmllbGRzX3RvX3R5cGUgKHN0cnVjdCBmaWVsZF9pbmZvICosCitAQCAt OTkwLDE3ICsxMDI4LDI1IEBAIHN0YXRpYyB2b2lkIGR3YXJmMl9hdHRhY2hfZm5fZmllbGRzX3Rv X3R5cGUgKHN0cnVjdCBmaWVsZF9pbmZvICosCiAgCiAgc3RhdGljIHZvaWQgcHJvY2Vzc19zdHJ1 Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwogIApA QCAtNDMwMyw3ICs0Mjk5LDMwIEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgc3Rh dGljIHZvaWQgcmVhZF9tb2R1bGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSk7CiAgCiAgc3RhdGljIHZvaWQgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqKTsKLUBAIC0xMDc4LDcgKzExMDEsOCBA QCBzdGF0aWMgaW50IGlzX3JlZl9hdHRyIChzdHJ1Y3QgYXR0cmlidXRlICopOworIAorK3N0YXRp YyBzdHJ1Y3QgdHlwZSAqcmVhZF9tb2R1bGVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsCisr CQkJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKKysKKytzdGF0aWMgdm9pZCByZWFkX2Zv cnRyYW5faW1wb3J0ZWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKysJCQkJCSAgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpOworKworK3N0YXRpYyB2b2lkIHJlYWRfZm9ydHJhbl9pbXBvcnRl ZF9kZWNsYXJhdGlvbiAoc3RydWN0IGRpZV9pbmZvICpkaWUsCisrCQkJCQkgICAgICAgc3RydWN0 IGR3YXJmMl9jdSAqY3UpOworKworIHN0YXRpYyBjb25zdCBjaGFyICpuYW1lc3BhY2VfbmFtZSAo c3RydWN0IGRpZV9pbmZvICpkaWUsCisgCQkJCSAgIGludCAqaXNfYW5vbnltb3VzLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICopOworIAorQEAgLTEwMzYsNiArMTA4Miw5IEBAIHN0YXRpYyB2b2lkIHByb2Nl c3NfZGllIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IGR3YXJmMl9jdSAqKTsKKyAKKyBzdGF0 aWMgY2hhciAqZHdhcmYyX2xpbmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBk d2FyZjJfY3UgKik7CisgCisrc3RhdGljIGNoYXIgKmZvcnRyYW5fbW9kdWxlX2xpbmthZ2VfbmFt ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsCisrCQkJCQkgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsK KysKKyBzdGF0aWMgY2hhciAqZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVj dCBkd2FyZjJfY3UgKiwKKyAJCQkJICAgICAgIHN0cnVjdCBvYnN0YWNrICopOworIAorQEAgLTEw NzgsNyArMTEyNyw4IEBAIHN0YXRpYyBpbnQgaXNfcmVmX2F0dHIgKHN0cnVjdCBhdHRyaWJ1dGUg Kik7CiAgCiAgc3RhdGljIHVuc2lnbmVkIGludCBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0IChz dHJ1Y3QgYXR0cmlidXRlICopOwogIApAQCAtNDMxMyw3ICs0MzMyLDcgQEAgaW5kZXggNDQ1YmFi OC4uNjU1NTZjOSAxMDA2NDQKICAKICBzdGF0aWMgc3RydWN0IGRpZV9pbmZvICpmb2xsb3dfZGll X3JlZl9vcl9zaWcgKHN0cnVjdCBkaWVfaW5mbyAqLAogIAkJCQkJICAgICAgIHN0cnVjdCBhdHRy aWJ1dGUgKiwKLUBAIC0xMTUwLDYgKzExNzQsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2Nv bXBfdW5pdHMgKHZvaWQpOworQEAgLTExNTAsNiArMTIwMCw5IEBAIHN0YXRpYyB2b2lkIGFnZV9j YWNoZWRfY29tcF91bml0cyAodm9pZCk7CiAgCiAgc3RhdGljIHZvaWQgZnJlZV9vbmVfY2FjaGVk X2NvbXBfdW5pdCAodm9pZCAqKTsKICAKQEAgLTQzMjMsNyArNDM0Miw3IEBAIGluZGV4IDQ0NWJh YjguLjY1NTU2YzkgMTAwNjQ0CiAgc3RhdGljIHN0cnVjdCB0eXBlICpzZXRfZGllX3R5cGUgKHN0 cnVjdCBkaWVfaW5mbyAqLCBzdHJ1Y3QgdHlwZSAqLAogIAkJCQkgIHN0cnVjdCBkd2FyZjJfY3Ug Kik7CiAgCi1AQCAtMTE2OSwyMiArMTE5NiwzMSBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJf bWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CitAQCAtMTE2OSwyMiArMTIyMiwz MSBAQCBzdGF0aWMgdm9pZCBkd2FyZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKik7CiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCkBAIC00MzY0LDcgKzQzODMs NyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIH0KICAKICAvKiBXaGVuIGxvYWRp bmcgc2VjdGlvbnMsIHdlIGNhbiBlaXRoZXIgbG9vayBmb3IgIi48bmFtZT4iLCBvciBmb3IKLUBA IC0xMjc3LDEwICsxMzEzLDEzIEBAIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMgKGJmZCAqYWJmZCwg YXNlY3Rpb24gKnNlY3RwLCB2b2lkICppZ25vcmVfcHRyKQorQEAgLTEyNzcsMTAgKzEzMzksMTMg QEAgZHdhcmYyX2xvY2F0ZV9zZWN0aW9ucyAoYmZkICphYmZkLCBhc2VjdGlvbiAqc2VjdHAsIHZv aWQgKmlnbm9yZV9wdHIpCiAgfQogIAogIC8qIERlY29tcHJlc3MgYSBzZWN0aW9uIHRoYXQgd2Fz IGNvbXByZXNzZWQgdXNpbmcgemxpYi4gIFN0b3JlIHRoZQpAQCAtNDM4MCw3ICs0Mzk5LDcgQEAg aW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAgICAgICAgICAgICAgICAgICAgICAgICAg Z2RiX2J5dGUgKipvdXRidWYsIGJmZF9zaXplX3R5cGUgKm91dHNpemUpCiAgewogICAgYmZkICph YmZkID0gb2JqZmlsZS0+b2JmZDsKLUBAIC0xMjk3LDYgKzEzMzYsNyBAQCB6bGliX2RlY29tcHJl c3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKK0BA IC0xMjk3LDYgKzEzNjIsNyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKICAgIHpfc3RyZWFtIHN0cm07CiAgICBpbnQg cmM7CiAgICBpbnQgaGVhZGVyX3NpemUgPSAxMjsKQEAgLTQzODgsNyArNDQwNyw3IEBAIGluZGV4 IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgCiAgICBpZiAoYmZkX3NlZWsgKGFiZmQsIHNlY3Rw LT5maWxlcG9zLCBTRUVLX1NFVCkgIT0gMAogICAgICAgIHx8IGJmZF9icmVhZCAoY29tcHJlc3Nl ZF9idWZmZXIsIGNvbXByZXNzZWRfc2l6ZSwgYWJmZCkgIT0gY29tcHJlc3NlZF9zaXplKQotQEAg LTEzMjYsOCArMTM2NiwxMyBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKK0BAIC0xMzI2LDggKzEzOTIsMTMgQEAgemxp Yl9kZWNvbXByZXNzX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBhc2VjdGlvbiAq c2VjdHAsCiAgICBzdHJtLmF2YWlsX2luID0gY29tcHJlc3NlZF9zaXplIC0gaGVhZGVyX3NpemU7 CiAgICBzdHJtLm5leHRfaW4gPSAoQnl0ZWYqKSBjb21wcmVzc2VkX2J1ZmZlciArIGhlYWRlcl9z aXplOwogICAgc3RybS5hdmFpbF9vdXQgPSB1bmNvbXByZXNzZWRfc2l6ZTsKQEAgLTQ0MDQsNyAr NDQyMyw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICByYyA9IGluZmxhdGVJ bml0ICgmc3RybSk7CiAgICB3aGlsZSAoc3RybS5hdmFpbF9pbiA+IDApCiAgICAgIHsKLUBAIC0x MzQ4LDI2ICsxMzkzLDEzNiBAQCB6bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGFzZWN0aW9uICpzZWN0cCwKK0BAIC0xMzQ4LDI2ICsxNDE5LDE3NiBAQCB6 bGliX2RlY29tcHJlc3Nfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGFzZWN0aW9u ICpzZWN0cCwKICAgICAgZXJyb3IgKF8oIkR3YXJmIEVycm9yOiBjb25jbHVkaW5nIERXQVJGIHVu Y29tcHJlc3Npb24gaW4gJyVzJzogJWQiKSwKICAgICAgICAgICAgIGJmZF9nZXRfZmlsZW5hbWUg KGFiZmQpLCByYyk7CiAgCkBAIC00NDYwLDkgKzQ0NzksMjggQEAgaW5kZXggNDQ1YmFiOC4uNjU1 NTZjOSAxMDA2NDQKICsgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZCwgc2VnbWVudF9zaXpl LCBkZWx0YTsKICsgICAgICBMT05HRVNUIGluZm9fb2Zmc2V0OwogKyAgICAgIHN0cnVjdCBkd2Fy ZjJfY3UgY3U7CisrICAgICAgY2hhciAqZW5kX3B0cjsKICsKICsgICAgICBjdV9oZWFkZXIuaW5p dGlhbF9sZW5ndGhfc2l6ZSA9IDA7CisrICAgICAgZW5kX3B0ciA9IGFyYW5nZXNfcHRyOwogKyAg ICAgIGFyYW5nZXNfcHRyID0gcmVhZF9jb21wX3VuaXRfaGVhZCAoJmN1X2hlYWRlciwgYXJhbmdl c19wdHIsIGFiZmQpOworKyAgICAgIGVuZF9wdHIgKz0gY3VfaGVhZGVyLmluaXRpYWxfbGVuZ3Ro X3NpemUgKyBjdV9oZWFkZXIubGVuZ3RoOworKworKyAgICAgIC8qIFNhbml0eSBjaGVjay4gICov CisrICAgICAgaWYgKGVuZF9wdHIgLSBhcmFuZ2VzX3B0ciA+PSBkd2FyZjJfcGVyX29iamZpbGUt PmFyYW5nZXMuc2l6ZSkKKysJeworKwkgIGRvX2NsZWFudXBzIChvbGQpOworKwkgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywKKysJCSAgICAgXygiYXJhbmdlcyBlbnRyeSBydW5zIG9m ZiBlbmQgb2YgYC5kZWJ1Z19hcmFuZ2VzJyBzZWN0aW9uLCBpZ25vcmVkIikpOworKwkgIHJldHVy bjsKKysJfQorKyAgICAgIGlmIChjdV9oZWFkZXIuYWRkcl9zaXplID09IDApCisrCXsKKysJICBk b19jbGVhbnVwcyAob2xkKTsKKysJICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisr CQkgICAgIF8oImFyYW5nZXMgZW50cnkgaGFzIHplcm8gYWRkcl9zaXplLCBpZ25vcmVkIikpOwor KwkgIHJldHVybjsKKysJfQogKwogKyAgICAgIHNlZ21lbnRfc2l6ZSA9IHJlYWRfMV9ieXRlIChh YmZkLCBhcmFuZ2VzX3B0cik7CiArICAgICAgYXJhbmdlc19wdHIgKz0gMTsKQEAgLTQ0ODksOSAr NDUyNywzMCBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogKwkgIGlmIChhZGRyZXNz ID09IDAgJiYgbGVuZ3RoID09IDApCiArCSAgICBicmVhazsKICsKKysJICBpZiAobGVuZ3RoID09 IDApCisrCSAgICB7CisrCSAgICAgIGRvX2NsZWFudXBzIChvbGQpOworKwkgICAgICBjb21wbGFp bnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkJIF8oImFyYW5nZXMgZW50cnkgaGFzIHplcm8g bGVuZ3RoLCBpZ25vcmVkIikpOworKwkgICAgICByZXR1cm47CisrCSAgICB9CisrCiArCSAgYWRk cmVzcyArPSBiYXNlYWRkcjsKICsKLSsJICBhZGRybWFwX3NldF9lbXB0eSAobXV0YWJsZV9tYXAs IGFkZHJlc3MsIGFkZHJlc3MgKyBsZW5ndGgsIG9iamZpbGUpOworKwkgIGFkZHJtYXBfc2V0X2Vt cHR5IChtdXRhYmxlX21hcCwgYWRkcmVzcywgYWRkcmVzcyArIGxlbmd0aCAtIDEsCisrCQkJICAg ICBvYmpmaWxlKTsKKysJfQorKworKyAgICAgIC8qIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgR0ND IGluY29ycmVjdGx5IHN0YXJ0ZWQgdGhlIGFyYW5nZQorKwkgd2l0aCBhICgwLDApIHBhaXIuICBJ ZiB3ZSBlbmNvdW50ZXIgYW55IG9kZGl0eSB3aGlsZSByZWFkaW5nCisrCSB0aGUgc2VjdGlvbiwg anVzdCBhYmFuZG9uIHRoZSBhdHRlbXB0OyBmYWxsaW5nIGJhY2sgdG8gdGhlCisrCSBzbG93ZXIg Y29kZSBpcyBhbHdheXMgc2FmZS4gICovCisrICAgICAgaWYgKGFyYW5nZXNfcHRyICE9IGVuZF9w dHIpCisrCXsKKysJICBkb19jbGVhbnVwcyAob2xkKTsKKysJICBjb21wbGFpbnQgKCZzeW1maWxl X2NvbXBsYWludHMsCisrCQkgICAgIF8oImFyYW5nZXMgZW50cnkgZW5kcyBlYXJseSwgaWdub3Jl ZCIpKTsKKysJICByZXR1cm47CiArCX0KICsgICAgfQogKwpAQCAtNDU0Niw3ICs0NjA1LDcgQEAg aW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAKICAgIGlmIChpbmZvLT5hc2VjdGlvbiA9 PSBOVUxMIHx8IGluZm8tPnNpemUgPT0gMCkKICAgICAgcmV0dXJuOwotQEAgLTEzODAsNyArMTUz NSw3IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1 Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKK0BAIC0xMzgwLDcgKzE2MDEsNyBAQCBkd2Fy ZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9z ZWN0aW9uX2luZm8gKmluZm8pCiAgICAgICAgLyogVXBvbiBkZWNvbXByZXNzaW9uLCB1cGRhdGUg dGhlIGJ1ZmZlciBhbmQgaXRzIHNpemUuICAqLwogICAgICAgIGlmIChzdHJuY21wIChoZWFkZXIs ICJaTElCIiwgc2l6ZW9mIChoZWFkZXIpKSA9PSAwKQogICAgICAgICAgewpAQCAtNDU1NSw3ICs0 NjE0LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAJCQkJICAgJmluZm8tPnNp emUpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgICB9Ci1AQCAtMTQwMyw3ICsxNTU4LDcg QEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorQEAgLTE0MDMsNyArMTYyNCw3IEBAIGR3YXJmMl9y ZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyAqaW5mbykKICAKICAgICAgICBpZiAocmV0YnVmICE9IE1BUF9GQUlMRUQpCiAgCXsK QEAgLTQ1NjQsNyArNDYyMyw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgCSAg aW5mby0+YnVmZmVyID0gcmV0YnVmICsgKHNlY3RwLT5maWxlcG9zICYgKHBhZ2VzaXplIC0gMSkp IDsKICAJICByZXR1cm47CiAgCX0KLUBAIC0xNDExLDggKzE1NjYsMTUgQEAgZHdhcmYyX3JlYWRf c2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9p bmZvICppbmZvKQorQEAgLTE0MTEsOCArMTYzMiwxNSBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8p CiAgI2VuZGlmCiAgCiAgICAvKiBJZiB3ZSBnZXQgaGVyZSwgd2UgYXJlIGEgbm9ybWFsLCBub3Qt Y29tcHJlc3NlZCBzZWN0aW9uLiAgKi8KQEAgLTQ1ODIsNyArNDY0MSw3IEBAIGluZGV4IDQ0NWJh YjguLjY1NTU2YzkgMTAwNjQ0CiAgCiAgICAvKiBXaGVuIGRlYnVnZ2luZyAubyBmaWxlcywgd2Ug bWF5IG5lZWQgdG8gYXBwbHkgcmVsb2NhdGlvbnM7IHNlZQogICAgICAgaHR0cDovL3NvdXJjZXdh cmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMDItMDQvbXNnMDAxMzYuaHRtbCAuCi1AQCAtMTQyMSw2 ICsxNTgzLDggQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUs IHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZvKQorQEAgLTE0MjEsNiArMTY0OSw4IEBA IGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyAqaW5mbykKICAgIHJldGJ1ZiA9IHN5bWZpbGVfcmVsb2NhdGVfZGVi dWdfc2VjdGlvbiAoYWJmZCwgc2VjdHAsIGJ1Zik7CiAgICBpZiAocmV0YnVmICE9IE5VTEwpCiAg ICAgIHsKQEAgLTQ1OTEsNyArNDY1MCw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0 CiAgICAgICAgaW5mby0+YnVmZmVyID0gcmV0YnVmOwogICAgICAgIHJldHVybjsKICAgICAgfQot QEAgLTE0MjksNiArMTU5MywxOSBAQCBkd2FyZjJfcmVhZF9zZWN0aW9uIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgc3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gKmluZm8pCitAQCAtMTQyOSw2 ICsxNjU5LDE5IEBAIGR3YXJmMl9yZWFkX3NlY3Rpb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbykKICAgICAgICB8fCBiZmRfYnJlYWQg KGJ1ZiwgaW5mby0+c2l6ZSwgYWJmZCkgIT0gaW5mby0+c2l6ZSkKICAgICAgZXJyb3IgKF8oIkR3 YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAnJXMnIiksCiAgCSAgIGJmZF9n ZXRfZmlsZW5hbWUgKGFiZmQpKTsKQEAgLTQ2MTEsNyArNDY3MCw3IEBAIGluZGV4IDQ0NWJhYjgu LjY1NTU2YzkgMTAwNjQ0CiAgfQogIAogIC8qIEZpbGwgaW4gU0VDVFAsIEJVRlAgYW5kIFNJWkVQ IHdpdGggc2VjdGlvbiBpbmZvLCBnaXZlbiBPQkpGSUxFIGFuZAotQEAgLTE2NjYsMTEgKzE4NDMs NyBAQCBkd2FyZjJfY3JlYXRlX2luY2x1ZGVfcHN5bXRhYiAoY2hhciAqbmFtZSwgc3RydWN0IHBh cnRpYWxfc3ltdGFiICpwc3QsCitAQCAtMTY2NiwxMSArMTkwOSw3IEBAIGR3YXJmMl9jcmVhdGVf aW5jbHVkZV9wc3ltdGFiIChjaGFyICpuYW1lLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwK ICAKICAvKiBSZWFkIHRoZSBMaW5lIE51bWJlciBQcm9ncmFtIGRhdGEgYW5kIGV4dHJhY3QgdGhl IGxpc3Qgb2YgZmlsZXMKICAgICBpbmNsdWRlZCBieSB0aGUgc291cmNlIGZpbGUgcmVwcmVzZW50 ZWQgYnkgUFNULiAgQnVpbGQgYW4gaW5jbHVkZQpAQCAtNDYyNCw3ICs0NjgzLDcgQEAgaW5kZXgg NDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9idWlsZF9p bmNsdWRlX3BzeW10YWJzIChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLUBAIC0xODEyLDYgKzE5ODUs MzcgQEAgbG9va3VwX3NpZ25hdHVyZWRfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIFVM T05HRVNUIHNpZykKK0BAIC0xODEyLDYgKzIwNTEsMzcgQEAgbG9va3VwX3NpZ25hdHVyZWRfdHlw ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIFVMT05HRVNUIHNpZykKICAgIHJldHVybiBlbnRy eTsKICB9CiAgCkBAIC00NjYyLDcgKzQ3MjEsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEw MDY0NAogIC8qIFN1YnJvdXRpbmUgb2YgcHJvY2Vzc190eXBlX2NvbXBfdW5pdCBhbmQgZHdhcmYy X2J1aWxkX3BzeW10YWJzX2hhcmQKICAgICB0byBjb21iaW5lIHRoZSBjb21tb24gcGFydHMuCiAg ICAgUHJvY2VzcyBhIGNvbXBpbGF0aW9uIHVuaXQgZm9yIGEgcHN5bXRhYi4KLUBAIC0xODc4LDcg KzIwODIsNyBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKK0BAIC0xODc4LDcgKzIxNDgsNyBAQCBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgICAgfQogIAogICAgLyogU2V0IHRoZSBsYW5ndWFn ZSB3ZSdyZSBkZWJ1Z2dpbmcuICAqLwpAQCAtNDY3MSw3ICs0NzMwLDcgQEAgaW5kZXggNDQ1YmFi OC4uNjU1NTZjOSAxMDA2NDQKICAKICAgIC8qIEFsbG9jYXRlIGEgbmV3IHBhcnRpYWwgc3ltYm9s IHRhYmxlIHN0cnVjdHVyZS4gICovCiAgICBwc3QgPSBzdGFydF9wc3ltdGFiX2NvbW1vbiAob2Jq ZmlsZSwgb2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLAotQEAgLTE5MjksOCArMjEzMyw4IEBAIHBy b2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTE5 MjksOCArMjE5OSw4IEBAIHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAogICAgICB9CiAgICBlbHNlIGlmIChjb21wX3VuaXRfZGllLmhhc19wY19pbmZv CiAgCSAgICYmIGNvbXBfdW5pdF9kaWUubG93cGMgPCBjb21wX3VuaXRfZGllLmhpZ2hwYykKQEAg LTQ2ODIsNyArNDc0MSw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICAgIGFk ZHJtYXBfc2V0X2VtcHR5IChvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwLAogIAkJICAgICAgIGNv bXBfdW5pdF9kaWUubG93cGMgKyBiYXNlYWRkciwKICAJCSAgICAgICBjb21wX3VuaXRfZGllLmhp Z2hwYyArIGJhc2VhZGRyIC0gMSwgcHN0KTsKLUBAIC0yMzYxLDcgKzI1NjUsNyBAQCBwYXJ0aWFs X2RpZV9wYXJlbnRfc2NvcGUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksCitAQCAtMjM2 MSw3ICsyNjMxLDcgQEAgcGFydGlhbF9kaWVfcGFyZW50X3Njb3BlIChzdHJ1Y3QgcGFydGlhbF9k aWVfaW5mbyAqcGRpLAogIAkgaWdub3JpbmcgdGhlbS4gICovCiAgICAgICAgY29tcGxhaW50ICgm c3ltZmlsZV9jb21wbGFpbnRzLAogIAkJIF8oInVuaGFuZGxlZCBjb250YWluaW5nIERJRSB0YWcg JWQgZm9yIERJRSBhdCAlZCIpLApAQCAtNDY5MSw3ICs0NzUwLDcgQEAgaW5kZXggNDQ1YmFiOC4u NjU1NTZjOSAxMDA2NDQKICAgICAgICBwYXJlbnQtPnNjb3BlID0gZ3JhbmRwYXJlbnRfc2NvcGU7 CiAgICAgIH0KICAKLUBAIC0yMzc2LDEyICsyNTgwLDIyIEBAIHBhcnRpYWxfZGllX2Z1bGxfbmFt ZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKK0BAIC0yMzc2LDEyICsyNjQ2LDIyIEBA IHBhcnRpYWxfZGllX2Z1bGxfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBkaSwKICAJ CSAgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBjaGFyICpwYXJlbnRfc2NvcGU7 CkBAIC00NzE4LDcgKzQ3NzcsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIH0K ICAKICBzdGF0aWMgdm9pZAotQEAgLTIzOTcsMTIgKzI2MTEsOSBAQCBhZGRfcGFydGlhbF9zeW1i b2wgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor QEAgLTIzOTcsMTIgKzI2NzcsOSBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFs X2RpZV9pbmZvICpwZGksIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAogICAgYmFzZWFkZHIgPSBB Tk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxl KSk7CiAgCkBAIC00NzM0LDcgKzQ3OTMsMjAgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2 NDQKICAKICAgIGlmIChhY3R1YWxfbmFtZSA9PSBOVUxMKQogICAgICBhY3R1YWxfbmFtZSA9IHBk aS0+bmFtZTsKLUBAIC0yNTM0LDIyICsyNzQ1LDYgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1 Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0yNDkz LDYgKzI3NzAsMTIgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5m byAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAJCQkgICAmb2JqZmlsZS0+Z2xvYmFsX3Bz eW1ib2xzLAorIAkJCSAgIDAsIChDT1JFX0FERFIpIDAsIGN1LT5sYW5ndWFnZSwgb2JqZmlsZSk7 CisgICAgICAgYnJlYWs7CisrICAgIGNhc2UgRFdfVEFHX21vZHVsZToKKysgICAgICBhZGRfcHN5 bWJvbF90b19saXN0IChhY3R1YWxfbmFtZSwgc3RybGVuIChhY3R1YWxfbmFtZSksCisrCQkJICAg TU9EVUxFX0RPTUFJTiwgTE9DX1NUQVRJQywKKysJCQkgICAmb2JqZmlsZS0+Z2xvYmFsX3BzeW1i b2xzLAorKwkJCSAgIDAsIChDT1JFX0FERFIpIDAsIGN1LT5sYW5ndWFnZSwgb2JqZmlsZSk7Cisr ICAgICAgYnJlYWs7CisgICAgIGNhc2UgRFdfVEFHX2NsYXNzX3R5cGU6CisgICAgIGNhc2UgRFdf VEFHX2ludGVyZmFjZV90eXBlOgorICAgICBjYXNlIERXX1RBR19zdHJ1Y3R1cmVfdHlwZToKK0BA IC0yNTM0LDIyICsyODE3LDYgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9k aWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgICBicmVhazsKICAgICAg fQogIApAQCAtNDc1Nyw3ICs0ODI5LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQK ICAgIGlmIChidWlsdF9hY3R1YWxfbmFtZSkKICAgICAgeGZyZWUgKGFjdHVhbF9uYW1lKTsKICB9 Ci1AQCAtMjU1OSw5ICsyNzU0LDkgQEAgYWRkX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlh bF9kaWVfaW5mbyAqcGRpLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0yNTU5LDkgKzI4MjYs OSBAQCBhZGRfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGksIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgIG5hbWUgbGlzdGVkIGluIHRoZSBkaWUuICAqLwogIAog IHN0YXRpYyBpbnQKQEAgLTQ3NjksNyArNDg0MSw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2Yzkg MTAwNjQ0CiAgICAgIHsKICAgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNlOgogICAgICBjYXNlIERX X1RBR190eXBlZGVmOgotQEAgLTI1NzEsNyArMjc2NiwyMyBAQCBwZGlfbmVlZHNfbmFtZXNwYWNl IChlbnVtIGR3YXJmX3RhZyB0YWcpCitAQCAtMjU3MSw3ICsyODM4LDIzIEBAIHBkaV9uZWVkc19u YW1lc3BhY2UgKGVudW0gZHdhcmZfdGFnIHRhZykKICAgICAgY2FzZSBEV19UQUdfdW5pb25fdHlw ZToKICAgICAgY2FzZSBEV19UQUdfZW51bWVyYXRpb25fdHlwZToKICAgICAgY2FzZSBEV19UQUdf ZW51bWVyYXRvcjoKQEAgLTQ3OTMsNyArNDg2NSwyNCBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5 IDEwMDY0NAogICAgICBkZWZhdWx0OgogICAgICAgIHJldHVybiAwOwogICAgICB9Ci1AQCAtMjcw MCwyNyArMjkxMSw2IEBAIGd1ZXNzX3N0cnVjdHVyZV9uYW1lIChzdHJ1Y3QgcGFydGlhbF9kaWVf aW5mbyAqc3RydWN0X3BkaSwKK0BAIC0yNjA0LDEyICsyODg3LDEyIEBAIHN0YXRpYyB2b2lkCisg YWRkX3BhcnRpYWxfbW9kdWxlIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGRpLCBDT1JFX0FE RFIgKmxvd3BjLAorIAkJICAgIENPUkVfQUREUiAqaGlnaHBjLCBpbnQgbmVlZF9wYywgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCisgeworLSAgLyogTm93IHNjYW4gcGFydGlhbCBzeW1ib2xzIGluIHRo YXQgbW9kdWxlLgorKyAgLyogQWRkIGEgc3ltYm9sIGZvciB0aGUgbW9kdWxlLiAgKi8KKyAKKy0g ICAgIEZJWE1FOiBTdXBwb3J0IHRoZSBzZXBhcmF0ZSBGb3J0cmFuIG1vZHVsZSBuYW1lc3BhY2Vz LiAgKi8KKysgIGFkZF9wYXJ0aWFsX3N5bWJvbCAocGRpLCBjdSk7CisgCistICBpZiAocGRpLT5o YXNfY2hpbGRyZW4pCistICAgIHNjYW5fcGFydGlhbF9zeW1ib2xzIChwZGktPmRpZV9jaGlsZCwg bG93cGMsIGhpZ2hwYywgbmVlZF9wYywgY3UpOworKyAgLyogUGFydGlhbCBzeW1ib2xzIGluIHRo YXQgbW9kdWxlIGFyZSBub3Qgc2Nhbm5lZCBhcyB0aGV5IGFyZSBuZXZlciBnbG9iYWxseQorKyAg ICAgdmlzaWJsZS4gIFRoZXkgZ2V0IGltcG9ydGVkIHRvIHRoZSBzcGVjaWZpYyBzY29wZXMgb24g dGhlIGZ1bGwgcmVhZC4gICovCisgfQorIAorIC8qIFJlYWQgYSBwYXJ0aWFsIGRpZSBjb3JyZXNw b25kaW5nIHRvIGEgc3VicHJvZ3JhbSBhbmQgY3JlYXRlIGEgcGFydGlhbAorQEAgLTI3MDAsMjcg KzI5ODMsNiBAQCBndWVzc19zdHJ1Y3R1cmVfbmFtZSAoc3RydWN0IHBhcnRpYWxfZGllX2luZm8g KnN0cnVjdF9wZGksCiAgCiAgICAgICAgaWYgKHJlYWxfcGRpLT5kaWVfcGFyZW50ICE9IE5VTEwp CiAgCXJldHVybjsKQEAgLTQ4MjEsNyArNDkxMCw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2Yzkg MTAwNjQ0CiAgICAgIH0KICB9CiAgCi1AQCAtMzE3MCw3ICszMzYwLDYgQEAgcHJvY2Vzc19mdWxs X2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQorQEAgLTMxNzAs NyArMzQzMiw2IEBAIHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSkKICAgIENPUkVfQUREUiBsb3dwYywgaGlnaHBjOwogICAgc3RydWN0IHN5 bXRhYiAqc3ltdGFiOwogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CkBAIC00ODI5LDcgKzQ5 MTgsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgQ09SRV9BRERSIGJhc2Vh ZGRyOwogIAogICAgYmFzZWFkZHIgPSBBTk9GRlNFVCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRz LCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7Ci1AQCAtMzE4MCwzMCArMzM2OSw3IEBAIHByb2Nl c3NfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKK0BA IC0zMTgwLDMwICszNDQxLDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1KQogIAogICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmZmlsZV9z eW1ib2xzOwogIApAQCAtNDg2MSw3ICs0OTUwLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAx MDA2NDQKICAKICAgIC8qIERvIGxpbmUgbnVtYmVyIGRlY29kaW5nIGluIHJlYWRfZmlsZV9zY29w ZSAoKSAqLwogICAgcHJvY2Vzc19kaWUgKGN1LT5kaWVzLCBjdSk7Ci1AQCAtMzIzNCw2ICszNDAw LDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq cGVyX2N1KQorQEAgLTMyMzQsNiArMzQ3Miw3IEBAIHByb2Nlc3NfZnVsbF9jb21wX3VuaXQgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKICBzdGF0aWMgdm9pZAogIHByb2Nlc3Nf ZGllIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgewpAQCAt NDg2OSw3ICs0OTU4LDIyIEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICBzd2l0 Y2ggKGRpZS0+dGFnKQogICAgICB7CiAgICAgIGNhc2UgRFdfVEFHX3BhZGRpbmc6Ci1AQCAtMzMx Miw0MiArMzQ3OSw2OSBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorQEAgLTMyOTcsNiArMzUzNiwxNCBAQCBwcm9jZXNzX2RpZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICBjYXNlIERXX1RB R19pbXBvcnRlZF9kZWNsYXJhdGlvbjoKKyAgICAgY2FzZSBEV19UQUdfaW1wb3J0ZWRfbW9kdWxl OgorICAgICAgIHByb2Nlc3NpbmdfaGFzX25hbWVzcGFjZV9pbmZvID0gMTsKKysgICAgICBpZiAo Y3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4pCisrCXsKKysJICBpZiAoZGllLT50YWcg PT0gRFdfVEFHX2ltcG9ydGVkX2RlY2xhcmF0aW9uKQorKwkgICAgcmVhZF9mb3J0cmFuX2ltcG9y dGVkX2RlY2xhcmF0aW9uIChkaWUsIGN1KTsKKysJICBlbHNlCisrCSAgICByZWFkX2ZvcnRyYW5f aW1wb3J0ZWRfbW9kdWxlIChkaWUsIGN1KTsKKysJICBicmVhazsKKysJfQorICAgICAgIGlmIChk aWUtPmNoaWxkICE9IE5VTEwgJiYgKGRpZS0+dGFnID09IERXX1RBR19pbXBvcnRlZF9kZWNsYXJh dGlvbgorIAkJCQkgfHwgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2ZvcnRyYW4pKQorIAljb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIlRhZyAnJXMnIGhhcyB1bmV4cGVjdGVkIGNo aWxkcmVuIiksCitAQCAtMzMxMiw0MiArMzU1OSw2OSBAQCBwcm9jZXNzX2RpZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIC8qIFJldHVybiB0aGUgZnVsbHkg cXVhbGlmaWVkIG5hbWUgb2YgRElFLCBiYXNlZCBvbiBpdHMgRFdfQVRfbmFtZS4KICAgICBJZiBz Y29wZSBxdWFsaWZpZXJzIGFyZSBhcHByb3ByaWF0ZSB0aGV5IHdpbGwgYmUgYWRkZWQuICBUaGUg cmVzdWx0CiAgICAgd2lsbCBiZSBhbGxvY2F0ZWQgb24gdGhlIG9iamZpbGVfb2JzdGFjaywgb3Ig TlVMTCBpZiB0aGUgRElFIGRvZXMKQEAgLTQ5NjEsNyArNTA2NSw3IEBAIGluZGV4IDQ0NWJhYjgu LjY1NTU2YzkgMTAwNjQ0CiAgCiAgc3RhdGljIHZvaWQKICByZWFkX2ltcG9ydF9zdGF0ZW1lbnQg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLUBAIC0zMzU2LDkg KzM1NTAsMTUgQEAgcmVhZF9pbXBvcnRfc3RhdGVtZW50IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtMzM1Niw5ICszNjMwLDE1IEBAIHJlYWRfaW1wb3J0 X3N0YXRlbWVudCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQog ICAgc3RydWN0IGRpZV9pbmZvICppbXBvcnRlZF9kaWU7CiAgICBjb25zdCBjaGFyICppbXBvcnRl ZF9uYW1lOwogICAgY29uc3QgY2hhciAqaW1wb3J0ZWRfbmFtZV9wcmVmaXg7CkBAIC00OTc5LDcg KzUwODMsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgaW1wb3J0X2F0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9pbXBvcnQsIGN1KTsKICAgIGlmIChpbXBvcnRfYXR0 ciA9PSBOVUxMKQogICAgICB7Ci1AQCAtMzQwNiwyOSArMzYwNiw0NSBAQCByZWFkX2ltcG9ydF9z dGF0ZW1lbnQgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BA IC0zNDA2LDI5ICszNjg2LDQ1IEBAIHJlYWRfaW1wb3J0X3N0YXRlbWVudCAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgICAgIHJldHVybjsKICAgICAgfQog IApAQCAtNTAzOCw3ICs1MTQyLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICB9 CiAgCiAgc3RhdGljIHZvaWQKLUBAIC0zNjc2LDcgKzM4OTIsNyBAQCB1bnNpZ25lZF9pbnRfY29t cGFyIChjb25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCitAQCAtMzY3Niw3ICszOTcyLDcg QEAgdW5zaWduZWRfaW50X2NvbXBhciAoY29uc3Qgdm9pZCAqYXAsIGNvbnN0IHZvaWQgKmJwKQog IAogICAgcmV0dXJuIChhID4gYikgLSAoYiA+IGEpOwogIH0KQEAgLTUwNDcsNyArNTE1MSw3IEBA IGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgLyogRFdfQVRfYWJzdHJhY3Rfb3JpZ2lu IGluaGVyaXRzIHdob2xlIERJRXMgKG5vdCBqdXN0IHRoZWlyIGF0dHJpYnV0ZXMpLgogICAgIElu aGVyaXQgb25seSB0aGUgY2hpbGRyZW4gb2YgdGhlIERXX0FUX2Fic3RyYWN0X29yaWdpbiBESUUg bm90IGJlaW5nIGFscmVhZHkKICAgICByZWZlcmVuY2VkIGJ5IERXX0FUX2Fic3RyYWN0X29yaWdp biBmcm9tIHRoZSBjaGlsZHJlbiBvZiB0aGUgY3VycmVudCBESUUuICAqLwotQEAgLTM2OTcsNiAr MzkxMywxNCBAQCBpbmhlcml0X2Fic3RyYWN0X2RpZXMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC0zNjk3LDYgKzM5OTMsMTQgQEAgaW5oZXJpdF9hYnN0 cmFjdF9kaWVzIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAg ICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogIAogICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX2Fic3RyYWN0X29yaWdpbiwgY3UpOwpAQCAtNTA2Miw3ICs1MTY2LDcgQEAgaW5kZXgg NDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAgIGlmICghYXR0cikKICAgICAgcmV0dXJuOwogIAot QEAgLTM3OTUsNiArNDAxOSw3IEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM3OTUsNiArNDA5OSw3IEBAIHJlYWRfZnVu Y19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAg Y2hhciAqbmFtZTsKICAgIENPUkVfQUREUiBiYXNlYWRkcjsKICAgIHN0cnVjdCBibG9jayAqYmxv Y2s7CkBAIC01MDcwLDcgKzUxNzQsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAog ICAgaW50IGlubGluZWRfZnVuYyA9IChkaWUtPnRhZyA9PSBEV19UQUdfaW5saW5lZF9zdWJyb3V0 aW5lKTsKICAKICAgIGlmIChpbmxpbmVkX2Z1bmMpCi1AQCAtMzgxMywxMyArNDAzOCwyMyBAQCBy ZWFkX2Z1bmNfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC0zODEzLDEzICs0MTE4LDIzIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAogICAgYmFzZWFkZHIgPSBBTk9GRlNF VCAob2JqZmlsZS0+c2VjdGlvbl9vZmZzZXRzLCBTRUNUX09GRl9URVhUIChvYmpmaWxlKSk7CiAg CkBAIC01MDk3LDEzICs1MjAxLDEyIEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAg ICBsb3dwYyArPSBiYXNlYWRkcjsKICAgIGhpZ2hwYyArPSBiYXNlYWRkcjsKICAKLUBAIC0zODQ2 LDE0ICs0MDgxLDEyIEBAIHJlYWRfZnVuY19zY29wZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTM4NDYsMTQgKzQxNjEsMTkgQEAgcmVhZF9mdW5jX3Nj b3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBj dS0+bGlzdF9pbl9zY29wZSA9ICZsb2NhbF9zeW1ib2xzOwogIAogLSAgaWYgKGRpZS0+Y2hpbGQg IT0gTlVMTCkKLSsgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7Ci0rICB3aGlsZSAoY2hpbGRfZGll ICYmIGNoaWxkX2RpZS0+dGFnKQorKyAgc3dpdGNoIChjdS0+bGFuZ3VhZ2UpCiAgICAgIHsKIC0g ICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwogLSAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYg Y2hpbGRfZGllLT50YWcpCkBAIC01MTExLDEzICs1MjE0LDM1IEBAIGluZGV4IDQ0NWJhYjguLjY1 NTU2YzkgMTAwNjQ0CiAtCSAgcHJvY2Vzc19kaWUgKGNoaWxkX2RpZSwgY3UpOwogLQkgIGNoaWxk X2RpZSA9IHNpYmxpbmdfZGllIChjaGlsZF9kaWUpOwogLQl9CisrICAgIGNhc2UgbGFuZ3VhZ2Vf Zm9ydHJhbjoKKysgICAgICBjdS0+bGFuZ3VhZ2Vfc3BlY2lmaWMuZm9ydHJhbi51c2UgPSBOVUxM OworKyAgICAgIGJyZWFrOworKyAgICB9CisrCisrICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwor KyAgd2hpbGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUtPnRhZykKKysgICAgewogKyAgICAgIHBy b2Nlc3NfZGllIChjaGlsZF9kaWUsIGN1KTsKICsgICAgICBjaGlsZF9kaWUgPSBzaWJsaW5nX2Rp ZSAoY2hpbGRfZGllKTsKICsgICAgICBkaWVfY2hpbGRyZW4rKzsKICAgICAgfQogIAogICAgaW5o ZXJpdF9hYnN0cmFjdF9kaWVzIChkaWUsIGN1KTsKLUBAIC0zOTA1LDcgKzQxMzgsNyBAQCByZWFk X2xleGljYWxfYmxvY2tfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC0zODY5LDYgKzQxODksMTMgQEAgcmVhZF9mdW5jX3Njb3BlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgCQkJZGV0ZXJtaW5lX3ByZWZp eCAoZGllLCBjdSksCisgCQkJcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8pOworIAorKyAg c3dpdGNoIChjdS0+bGFuZ3VhZ2UpCisrICAgIHsKKysgICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFu OgorKyAgICAgIEJMT0NLX0ZPUlRSQU5fVVNFIChibG9jaykgPSBjdS0+bGFuZ3VhZ2Vfc3BlY2lm aWMuZm9ydHJhbi51c2U7CisrICAgICAgYnJlYWs7CisrICAgIH0KKysKKyAgIC8qIElmIHdlIGhh dmUgYWRkcmVzcyByYW5nZXMsIHJlY29yZCB0aGVtLiAgKi8KKyAgIGR3YXJmMl9yZWNvcmRfYmxv Y2tfcmFuZ2VzIChkaWUsIGJsb2NrLCBiYXNlYWRkciwgY3UpOworICAgCitAQCAtMzkwNSw3ICs0 MjMyLDcgQEAgcmVhZF9sZXhpY2FsX2Jsb2NrX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgICBhcyBtdWx0aXBsZSBsZXhpY2FsIGJsb2Nrcz8g IEhhbmRsaW5nIGNoaWxkcmVuIGluIGEgc2FuZSB3YXkgd291bGQKICAgICAgIGJlIG5hc3R5LiAg TWlnaHQgYmUgZWFzaWVyIHRvIHByb3Blcmx5IGV4dGVuZCBnZW5lcmljIGJsb2NrcyB0byAKICAg ICAgIGRlc2NyaWJlIHJhbmdlcy4gICovCkBAIC01MTI2LDcgKzUyNTEsNyBAQCBpbmRleCA0NDVi YWI4Li42NTU1NmM5IDEwMDY0NAogICAgICByZXR1cm47CiAgICBsb3dwYyArPSBiYXNlYWRkcjsK ICAgIGhpZ2hwYyArPSBiYXNlYWRkcjsKLUBAIC0zOTIyLDcgKzQxNTUsNyBAQCByZWFkX2xleGlj YWxfYmxvY2tfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKK0BAIC0zOTIyLDcgKzQyNDksNyBAQCByZWFkX2xleGljYWxfYmxvY2tfc2NvcGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgfQogICAgbmV3ID0g cG9wX2NvbnRleHQgKCk7CiAgCkBAIC01MTM1LDcgKzUyNjAsNyBAQCBpbmRleCA0NDViYWI4Li42 NTU1NmM5IDEwMDY0NAogICAgICB7CiAgICAgICAgc3RydWN0IGJsb2NrICpibG9jawogICAgICAg ICAgPSBmaW5pc2hfYmxvY2sgKDAsICZsb2NhbF9zeW1ib2xzLCBuZXctPm9sZF9ibG9ja3MsIG5l dy0+c3RhcnRfYWRkciwKLUBAIC00MDc3LDcgKzQzMTAsOCBAQCBkd2FyZjJfcmFuZ2VzX3JlYWQg KHVuc2lnbmVkIG9mZnNldCwgQ09SRV9BRERSICpsb3dfcmV0dXJuLAorQEAgLTQwNzcsNyArNDQw NCw4IEBAIGR3YXJmMl9yYW5nZXNfcmVhZCAodW5zaWduZWQgb2Zmc2V0LCBDT1JFX0FERFIgKmxv d19yZXR1cm4sCiAgICAgZGlzY29udGludW91cywgaS5lLiBkZXJpdmVkIGZyb20gRFdfQVRfcmFu Z2VzIGluZm9ybWF0aW9uLiAgKi8KICBzdGF0aWMgaW50CiAgZHdhcmYyX2dldF9wY19ib3VuZHMg KHN0cnVjdCBkaWVfaW5mbyAqZGllLCBDT1JFX0FERFIgKmxvd3BjLApAQCAtNTE0NSw3ICs1Mjcw LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICB7CiAgICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwogICAgQ09SRV9BRERSIGxvdyA9IDA7Ci1AQCAtNDEwNSw3ICs0MzM5LDcgQEAg ZHdhcmYyX2dldF9wY19ib3VuZHMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBDT1JFX0FERFIgKmxv d3BjLAorQEAgLTQxMDUsNyArNDQzMyw3IEBAIGR3YXJmMl9nZXRfcGNfYm91bmRzIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgQ09SRV9BRERSICpsb3dwYywKICAJewogIAkgIC8qIFZhbHVlIG9mIHRo ZSBEV19BVF9yYW5nZXMgYXR0cmlidXRlIGlzIHRoZSBvZmZzZXQgaW4gdGhlCiAgCSAgICAgLmRl YnVnX3JhbmdlcyBzZWN0aW9uLiAgKi8KQEAgLTUxNTQsNyArNTI3OSw3IEBAIGluZGV4IDQ0NWJh YjguLjY1NTU2YzkgMTAwNjQ0CiAgCSAgICByZXR1cm4gMDsKICAJICAvKiBGb3VuZCBkaXNjb250 aW51b3VzIHJhbmdlIG9mIGFkZHJlc3Nlcy4gICovCiAgCSAgcmV0ID0gLTE7Ci1AQCAtNDE0NCw3 ICs0Mzc4LDcgQEAgZHdhcmYyX2dldF9zdWJwcm9ncmFtX3BjX2JvdW5kcyAoc3RydWN0IGRpZV9p bmZvICpkaWUsCitAQCAtNDE0NCw3ICs0NDcyLDcgQEAgZHdhcmYyX2dldF9zdWJwcm9ncmFtX3Bj X2JvdW5kcyAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgICBDT1JFX0FERFIgbG93LCBoaWdoOwog ICAgc3RydWN0IGRpZV9pbmZvICpjaGlsZCA9IGRpZS0+Y2hpbGQ7CiAgCkBAIC01MTYzLDcgKzUy ODgsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgICB7CiAgICAgICAgKmxv d3BjID0gbWluICgqbG93cGMsIGxvdyk7CiAgICAgICAgKmhpZ2hwYyA9IG1heCAoKmhpZ2hwYywg aGlnaCk7Ci1AQCAtNDE4MSw3ICs0NDE1LDcgQEAgZ2V0X3Njb3BlX3BjX2JvdW5kcyAoc3RydWN0 IGRpZV9pbmZvICpkaWUsCitAQCAtNDE4MSw3ICs0NTA5LDcgQEAgZ2V0X3Njb3BlX3BjX2JvdW5k cyAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgICBDT1JFX0FERFIgYmVzdF9oaWdoID0gKENPUkVf QUREUikgMDsKICAgIENPUkVfQUREUiBjdXJyZW50X2xvdywgY3VycmVudF9oaWdoOwogIApAQCAt NTE3Miw3ICs1Mjk3LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAgICAgewog ICAgICAgIGJlc3RfbG93ID0gY3VycmVudF9sb3c7CiAgICAgICAgYmVzdF9oaWdoID0gY3VycmVu dF9oaWdoOwotQEAgLTQzODQsMjEgKzQ2MTgsOCBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3Qg ZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC00Mzg0LDIxICs0NzEy LDggQEAgZHdhcmYyX2FkZF9maWVsZCAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRp ZV9pbmZvICpkaWUsCiAgICAgICAgLyogR2V0IGJpdCBvZmZzZXQgb2YgZmllbGQuICAqLwogICAg ICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9kYXRhX21lbWJlcl9sb2NhdGlvbiwg Y3UpOwogICAgICAgIGlmIChhdHRyKQpAQCAtNTE5Niw3ICs1MzIxLDcgQEAgaW5kZXggNDQ1YmFi OC4uNjU1NTZjOSAxMDA2NDQKICAgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRf Yml0X29mZnNldCwgY3UpOwogICAgICAgIGlmIChhdHRyKQogIAl7Ci1AQCAtNDQ3Niw3ICs0Njk3 LDExIEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBk aWVfaW5mbyAqZGllLAorQEAgLTQ0NzYsNyArNDc5MSwxMSBAQCBkd2FyZjJfYWRkX2ZpZWxkIChz dHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgICAgICBpZiAo ZmllbGRuYW1lID09IE5VTEwpCiAgCXJldHVybjsKICAKQEAgLTUyMDksNyArNTMzNCw3IEBAIGlu ZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICAgICAgcGh5c25hbWUgPSBkd2FyZjJfbGlu a2FnZV9uYW1lIChkaWUsIGN1KTsKICAKICAgICAgICAvKiBUaGUgbmFtZSBpcyBhbHJlYWR5IGFs bG9jYXRlZCBhbG9uZyB3aXRoIHRoaXMgb2JqZmlsZSwgc28gd2UgZG9uJ3QKLUBAIC00NDkwLDcg KzQ3MTUsNyBAQCBkd2FyZjJfYWRkX2ZpZWxkIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1 Y3QgZGllX2luZm8gKmRpZSwKK0BAIC00NDkwLDcgKzQ4MDksNyBAQCBkd2FyZjJfYWRkX2ZpZWxk IChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAgICAgICAv KiBDKysgYmFzZSBjbGFzcyBmaWVsZC4gICovCiAgICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uLCBjdSk7CiAgICAgICAgaWYgKGF0dHIpCkBA IC01MjE4LDcgKzUzNDMsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIAkJCSAg ICAgICAqIGJpdHNfcGVyX2J5dGUpOwogICAgICAgIEZJRUxEX0JJVFNJWkUgKCpmcCkgPSAwOwog ICAgICAgIEZJRUxEX1RZUEUgKCpmcCkgPSBkaWVfdHlwZSAoZGllLCBjdSk7Ci1AQCAtNDYwNyw3 ICs0ODMyLDExIEBAIGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlw LCBzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC00NjA3LDcgKzQ5MjYsMTEgQEAgZHdhcmYyX2Fk ZF9tZW1iZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGll LAogICAgaWYgKGZpZWxkbmFtZSA9PSBOVUxMKQogICAgICByZXR1cm47CiAgCkBAIC01MjMxLDcg KzUzNTYsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgcGh5c25hbWUgPSBk d2FyZjJfbGlua2FnZV9uYW1lIChkaWUsIGN1KTsKICAKICAgIC8qIExvb2sgdXAgbWVtYmVyIGZ1 bmN0aW9uIG5hbWUgaW4gZmllbGRsaXN0LiAgKi8KLUBAIC00NjUyLDcgKzQ4ODEsNyBAQCBkd2Fy ZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gKmZpcCwgc3RydWN0IGRpZV9pbmZv ICpkaWUsCitAQCAtNDY1Miw3ICs0OTc1LDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVj dCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAogICAgLyogVGhlIG5hbWUg aXMgYWxyZWFkeSBhbGxvY2F0ZWQgYWxvbmcgd2l0aCB0aGlzIG9iamZpbGUsIHNvIHdlIGRvbid0 CiAgICAgICBuZWVkIHRvIGR1cGxpY2F0ZSBpdCBmb3IgdGhlIHR5cGUuICAqLwogICAgZm5wLT5w aHlzbmFtZSA9IHBoeXNuYW1lID8gcGh5c25hbWUgOiAiIjsKQEAgLTUyNDAsNyArNTM2NSw3IEBA IGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICB0aGlzX3R5cGUgPSByZWFkX3R5cGVf ZGllIChkaWUsIGN1KTsKICAgIGlmICh0aGlzX3R5cGUgJiYgVFlQRV9DT0RFICh0aGlzX3R5cGUp ID09IFRZUEVfQ09ERV9GVU5DKQogICAgICB7Ci1AQCAtNDcwOSwyMiArNDkzOCw3IEBAIGR3YXJm Ml9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAqZmlwLCBzdHJ1Y3QgZGllX2luZm8g KmRpZSwKK0BAIC00NzA5LDIyICs1MDMyLDcgQEAgZHdhcmYyX2FkZF9tZW1iZXJfZm4gKHN0cnVj dCBmaWVsZF9pbmZvICpmaXAsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAogICAgLyogR2V0IGluZGV4 IGluIHZpcnR1YWwgZnVuY3Rpb24gdGFibGUgaWYgaXQgaXMgYSB2aXJ0dWFsIG1lbWJlciBmdW5j dGlvbi4gICovCiAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfdnRhYmxlX2VsZW1f bG9jYXRpb24sIGN1KTsKICAgIGlmIChhdHRyKQpAQCAtNTI2NCw3ICs1Mzg5LDcgQEAgaW5kZXgg NDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICB9CiAgCiAgLyogQ3JlYXRlIHRoZSB2ZWN0b3Igb2Yg bWVtYmVyIGZ1bmN0aW9uIGZpZWxkcywgYW5kIGF0dGFjaCBpdCB0byB0aGUgdHlwZS4gICovCi1A QCAtNDgzNiw3ICs1MDUwLDcgQEAgcXVpcmtfZ2NjX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNDgzNiw3ICs1 MTQ0LDcgQEAgcXVpcmtfZ2NjX21lbWJlcl9mdW5jdGlvbl9wb2ludGVyIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAgIHJldHVybiBOVUxMOwogIAogICAg ZG9tYWluX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChUWVBFX0ZJRUxEX1RZUEUgKHBmbl90eXBl LCAwKSk7CkBAIC01MjczLDcgKzUzOTgsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0 NAogICAgc21hc2hfdG9fbWV0aG9kX3R5cGUgKHR5cGUsIGRvbWFpbl90eXBlLCBUWVBFX1RBUkdF VF9UWVBFIChwZm5fdHlwZSksCiAgCQkJVFlQRV9GSUVMRFMgKHBmbl90eXBlKSwgVFlQRV9ORklF TERTIChwZm5fdHlwZSksCiAgCQkJVFlQRV9WQVJBUkdTIChwZm5fdHlwZSkpOwotQEAgLTQ4ODks NyArNTEwMyw3IEBAIHJlYWRfc3RydWN0dXJlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC00ODg5LDcgKzUxOTcsNyBAQCByZWFkX3N0cnVjdHVy ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICAg ICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7CiAgICAgIH0KICAKQEAgLTUy ODIsNyArNTQwNyw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICBJTklUX0NQ TFVTX1NQRUNJRklDICh0eXBlKTsKICAKICAgIG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7 Ci1AQCAtNDg5OCwxNCArNTExMiwxOCBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNDg5OCwxNCArNTIwNiwxOCBA QCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCiAgICAgICAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwogIAkg IHx8IGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQogIAl7CkBAIC01MzA0LDcgKzU0Mjks NyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIAl9CiAgICAgIH0KICAKLUBAIC01 MTE1LDcgKzUzMzMsNyBAQCByZWFkX2VudW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC01MTE1LDcgKzU0MjcsNyBAQCByZWFkX2Vu dW1lcmF0aW9uX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKICAgICAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHR5cGUsIGN1KTsKICAgICAgfQog IApAQCAtNTMxMyw3ICs1NDM4LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAK ICAgIFRZUEVfQ09ERSAodHlwZSkgPSBUWVBFX0NPREVfRU5VTTsKICAgIG5hbWUgPSBkd2FyZjJf ZnVsbF9uYW1lIChkaWUsIGN1KTsKLUBAIC01MTQzLDUxICs1MzYxLDYgQEAgcmVhZF9lbnVtZXJh dGlvbl90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitA QCAtNTE0Myw1MSArNTQ1NSw2IEBAIHJlYWRfZW51bWVyYXRpb25fdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAo ZGllLCB0eXBlLCBjdSk7CiAgfQogIApAQCAtNTM2NSw3ICs1NDkwLDcgQEAgaW5kZXggNDQ1YmFi OC4uNjU1NTZjOSAxMDA2NDQKICAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBkaWUgd2hpY2ggYmVn aW5zIGFuIGVudW1lcmF0aW9uLCBwcm9jZXNzIGFsbAogICAgIHRoZSBkaWVzIHRoYXQgZGVmaW5l IHRoZSBtZW1iZXJzIG9mIHRoZSBlbnVtZXJhdGlvbiwgYW5kIGNyZWF0ZSB0aGUKICAgICBzeW1i b2wgZm9yIHRoZSBlbnVtZXJhdGlvbiB0eXBlLgotQEAgLTUyNjUsNiArNTQzOCwyOSBAQCBwcm9j ZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCitAQCAtNTI2NSw2ICs1NTMyLDI5IEBAIHByb2Nlc3NfZW51bWVyYXRpb25fc2Nv cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIG5ld19z eW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7CiAgfQogIApAQCAtNTM5NSw3ICs1NTIwLDcgQEAg aW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAvKiBFeHRyYWN0IGFsbCBpbmZvcm1hdGlv biBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0aGUgRElF J3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1lbnNpb25h bAogICAgIGFycmF5cy4gICovCi1AQCAtNTI3OCw3ICs1NDc0LDcgQEAgcmVhZF9hcnJheV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTI3OCw3 ICs1NTY4LDcgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlw ZSwgKmluZGV4X3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKICAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CkBAIC01NDA0LDcgKzU1MjksNyBAQCBpbmRleCA0NDVi YWI4Li42NTU1NmM5IDEwMDY0NAogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFy ICpuYW1lOwogIAotQEAgLTUzMjUsMTYgKzU1MjEsMTEgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTMyNSwxNiArNTYx NSwxMSBAQCByZWFkX2FycmF5X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAgIHR5cGUgPSBlbGVtZW50X3R5cGU7CiAgCiAgICBpZiAocmVhZF9hcnJh eV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKQEAgLTU0MjYsNyArNTU1MSw3 IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgCiAgICAvKiBVbmRlcnN0YW5kIER3 YXJmMiBzdXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAg dGhlIFBvd2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRl IHRvIHRoZQotQEAgLTU0MDEsNDkgKzU1OTIsODMgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRp ZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorQEAgLTU0MDEsNDkgKzU2ODYsODMg QEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQogICAgcmV0dXJuIHNldF9kaWVfdHlwZSAoZGllLCBzZXRfdHlwZSwgY3UpOwogIH0KICAK QEAgLTU0NzcsOSArNTYwMiw5IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiArICAg ICAgLyogQXJ0aWZpY2lhbCB0eXBlIHRvIGJlIHVzZWQgb25seSBieSBgaW5mbyBjb21tb24nLiAg Ki8KICsgICAgICBUWVBFX05BTUUgKHR5cGUpID0gIjxjb21tb24+IjsKICsKLSAgICAgICBjaGls ZF9kaWUgPSBkaWUtPmNoaWxkOwotICAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGll LT50YWcpCi0gCXsKKysgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOworKyAgICAgIHdoaWxl IChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCisrCXsKICsJICBUWVBFX05GSUVMRFMgKHR5 cGUpKys7CiArCSAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7CiArCX0KQEAg LTU0OTEsOSArNTYxNiw5IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiArCQkJCSAg ICAgKiBUWVBFX05GSUVMRFMgKHR5cGUpKTsKICsgICAgICAKICsgICAgICBmaWVsZCA9IFRZUEVf RklFTERTICh0eXBlKTsKLSsgICAgICBjaGlsZF9kaWUgPSBkaWUtPmNoaWxkOwotKyAgICAgIHdo aWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcpCi0rCXsKKyAgICAgICBjaGlsZF9kaWUg PSBkaWUtPmNoaWxkOworICAgICAgIHdoaWxlIChjaGlsZF9kaWUgJiYgY2hpbGRfZGllLT50YWcp CisgCXsKICsJICAvKiBDcmVhdGUgdGhlIHN5bWJvbCBpbiB0aGUgRFdfVEFHX2NvbW1vbl9ibG9j ayBibG9jayBpbiB0aGUgY3VycmVudAogKwkgICAgIHN5bWJvbCBzY29wZS4gICovCiAgCSAgc3lt ID0gbmV3X3N5bWJvbCAoY2hpbGRfZGllLCBOVUxMLCBjdSk7CkBAIC01NTI5LDcgKzU2NTQsNyBA QCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgICB9CiAgfQogIAotQEAgLTU1MTEs NyArNTczNiw3IEBAIHJlYWRfbmFtZXNwYWNlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0 IGR3YXJmMl9jdSAqY3UpCitAQCAtNTUxMSw3ICs1ODMwLDcgQEAgcmVhZF9uYW1lc3BhY2UgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgICAgICBpZiAoaXNf YW5vbnltb3VzKQogIAl7CiAgCSAgY29uc3QgY2hhciAqcHJldmlvdXNfcHJlZml4ID0gZGV0ZXJt aW5lX3ByZWZpeCAoZGllLCBjdSk7CkBAIC01NTM4LDcgKzU2NjMsMTY2IEBAIGluZGV4IDQ0NWJh YjguLjY1NTU2YzkgMTAwNjQ0CiAgCX0KICAgICAgfQogIAotQEAgLTU3MDUsMjkgKzU5MzAsOTMg QEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKK0BAIC01NTI3LDIwICs1ODQ2LDE1NSBAQCByZWFkX25hbWVzcGFjZSAoc3Ry dWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorICAgICB9CisgfQorIAor LS8qIFJlYWQgYSBGb3J0cmFuIG1vZHVsZS4gICovCisrLyogUmVhZCBhIEZvcnRyYW4gbW9kdWxl IGFzIGdsb2JhbCBzeW1ib2wgd2hpY2ggY2FuIGJlIGxhdGVyIGxvb2tlZCB1cCBieQorKyAgIGZf bG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCisgCisgc3RhdGljIHZvaWQKKyByZWFkX21vZHVs ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIHsKKy0gIHN0 cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllID0gZGllLT5jaGlsZDsKKysgIHN0cnVjdCB0eXBlICp0 eXBlOworIAorLSAgLyogRklYTUU6IFN1cHBvcnQgdGhlIHNlcGFyYXRlIEZvcnRyYW4gbW9kdWxl IG5hbWVzcGFjZXMuICAqLworKyAgdHlwZSA9IHJlYWRfbW9kdWxlX3R5cGUgKGRpZSwgY3UpOwor IAorKyAgaWYgKHR5cGUpCisrICAgIG5ld19zeW1ib2wgKGRpZSwgdHlwZSwgY3UpOworK30KKysK KysvKiBSZWFkIGEgRm9ydHJhbiBtb2R1bGUgYXMgdHlwZS4KKysKKysgICBNb2R1bGVzIHByZXNl bnQgb25seSBhcyBkZWNsYXJhdGlvbnMgLSBiZWluZyB1c2VkIG9ubHkgZm9yIERXX0FUX2ltcG9y dCBvZgorKyAgIERXX1RBR19pbXBvcnRlZF9tb2R1bGUgLSBhcmUgaWdub3JlZCBoZXJlLiAgVGhl eSBhcmUgcmVhZCBpbiBvbmx5IGluIGZvcm0gb2YKKysgICB0aGUgbW9kdWxlIG5hbWUgYnkgcmVh ZF9mb3J0cmFuX2ltcG9ydGVkX21vZHVsZS4gICovCisrCisrc3RhdGljIHN0cnVjdCB0eXBlICoK KytyZWFkX21vZHVsZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9j dSAqY3UpCisreworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsKKysg IHN0cnVjdCBkaWVfaW5mbyAqY2hpbGRfZGllOworKyAgc3RydWN0IHR5cGUgKnR5cGU7CisrICBj aGFyICptb2R1bGVfbmFtZTsKKysgIHN0cnVjdCBjb250ZXh0X3N0YWNrICpuZXc7CisrICBzdHJ1 Y3QgcGVuZGluZyAqc2F2ZV9maWxlX3N5bWJvbHM7CisrICBzdHJ1Y3QgcGVuZGluZyAqc2F2ZV9n bG9iYWxfc3ltYm9sczsKKysgIHN0cnVjdCBwZW5kaW5nICoqc2F2ZV9saXN0X2luX3Njb3BlOwor KworKyAgaWYgKGRpZV9pc19kZWNsYXJhdGlvbiAoZGllLCBjdSkpCisrICAgIHJldHVybiBOVUxM OworKworKyAgbW9kdWxlX25hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CisrICBpZiAoIW1v ZHVsZV9uYW1lKQorKyAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIkRXX1RB R19tb2R1bGUgaGFzIG5vIG5hbWUsIG9mZnNldCAweCV4IiksCisrICAgICAgICAgICAgICAgZGll LT5vZmZzZXQpOworKyAgdHlwZSA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX01PRFVMRSwgMCwgMCwg bW9kdWxlX25hbWUsIG9iamZpbGUpOworKworKyAgLyogQ3JlYXRlIGEgY29udGV4dCBmb3IgcmVh ZGluZyB0aGUgbW9kdWxlIHZhcmlhYmxlcy4gICovCisrCisrICBuZXcgPSBwdXNoX2NvbnRleHQg KDAsIDApOworKworKyAgc2F2ZV9maWxlX3N5bWJvbHMgPSBmaWxlX3N5bWJvbHM7CisrICBmaWxl X3N5bWJvbHMgPSBOVUxMOworKyAgc2F2ZV9nbG9iYWxfc3ltYm9scyA9IGdsb2JhbF9zeW1ib2xz OworKyAgZ2xvYmFsX3N5bWJvbHMgPSBOVUxMOworKyAgc2F2ZV9saXN0X2luX3Njb3BlID0gY3Ut Pmxpc3RfaW5fc2NvcGU7CisrCisrICAvKiBQcm9jZXNzIHRoZSBjaGlsZCBESUVzLiAgKi8KKysK KysgIGNoaWxkX2RpZSA9IGRpZS0+Y2hpbGQ7CisgICB3aGlsZSAoY2hpbGRfZGllICYmIGNoaWxk X2RpZS0+dGFnKQorICAgICB7CisrICAgICAgLyogQW55IERXX1RBR19zdWJwcm9ncmFtIHdpbGwg cmVzZXQgTElTVF9JTl9TQ09QRSB0byBMT0NBTF9TWU1CT0xTLiAgKi8KKysgICAgICBjdS0+bGlz dF9pbl9zY29wZSA9ICZnbG9iYWxfc3ltYm9sczsKKysKKyAgICAgICBwcm9jZXNzX2RpZSAoY2hp bGRfZGllLCBjdSk7CisgICAgICAgY2hpbGRfZGllID0gc2libGluZ19kaWUgKGNoaWxkX2RpZSk7 CisgICAgIH0KKysKKysgIC8qIEZpbmlzaCB0aGlzIG1vZHVsZSBhbmQgcmVzdG9yZSB0aGUgY29u dGV4dC4gICovCisrCisrICBUWVBFX01PRFVMRV9CTE9DSyAodHlwZSkgPSBmaW5pc2hfYmxvY2sg KE5VTEwsICZnbG9iYWxfc3ltYm9scywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgbmV3LT5vbGRfYmxvY2tzLCAwLCAwLCBvYmpmaWxlKTsKKysKKysgIGlmIChm aWxlX3N5bWJvbHMpCisrICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygiRFdf VEFHX21vZHVsZSBjb250YWlucyBzdGF0aWMgc3ltYm9scyIpKTsKKysgIGlmIChsb2NhbF9zeW1i b2xzKQorKyAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIkRXX1RBR19tb2R1 bGUgY29udGFpbnMgbG9jYWwgc3ltYm9scyIpKTsKKysgIGlmIChwYXJhbV9zeW1ib2xzKQorKyAg ICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsIF8oIkRXX1RBR19tb2R1bGUgY29udGFp bnMgZnVuY3Rpb24gIgorKwkJCQkgICAgICAicGFyYW1ldGVycyIpKTsKKysKKysgIGZpbGVfc3lt Ym9scyA9IHNhdmVfZmlsZV9zeW1ib2xzOworKyAgZ2xvYmFsX3N5bWJvbHMgPSBzYXZlX2dsb2Jh bF9zeW1ib2xzOworKyAgY3UtPmxpc3RfaW5fc2NvcGUgPSBzYXZlX2xpc3RfaW5fc2NvcGU7Cisr CisrICBwb3BfY29udGV4dCAoKTsKKysKKysgIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBjdSk7 CisrCisrICByZXR1cm4gdHlwZTsKKyt9CisrCisrLyogSW1wb3J0IGEgRm9ydHJhbiBtb2R1bGUu ICBPbmx5IHN0b3JlIHRoZSBtb2R1bGUgbmFtZSBmb3IgaXRzIGxhdGVyIGxvb2t1cCBieQorKyAg IGZfbG9va3VwX3N5bWJvbF9ub25sb2NhbC4gICovCisrCisrc3RhdGljIHZvaWQKKytyZWFkX2Zv cnRyYW5faW1wb3J0ZWRfbW9kdWxlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJm Ml9jdSAqY3UpCisreworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+b2JqZmlsZTsK KysgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisrICBzdHJ1Y3QgZGllX2luZm8gKm1vZHVsZV9k aWU7CisrICBjaGFyICptb2R1bGVfbmFtZTsKKysgIHN0cnVjdCBmb3J0cmFuX3VzaW5nICp1c2U7 CisrCisrICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfaW1wb3J0LCBjdSk7CisrICBp ZiAoYXR0ciA9PSBOVUxMKQorKyAgICByZXR1cm47CisrCisrICBtb2R1bGVfZGllID0gZm9sbG93 X2RpZV9yZWYgKGRpZSwgYXR0ciwgJmN1KTsKKysgIG1vZHVsZV9uYW1lID0gZHdhcmYyX25hbWUg KG1vZHVsZV9kaWUsIGN1KTsKKysgIGlmIChtb2R1bGVfbmFtZSA9PSBOVUxMKQorKyAgICB7Cisr ICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJIF8oIkltcG9ydGVkIERJ RSBhdCBvZmZzZXQgMHgleCBoYXMgbm8gbmFtZSIpLCBkaWUtPm9mZnNldCk7CisrICAgICAgcmV0 dXJuOworKyAgICB9CisrCisrICAvKiBGb3J0cmFuIGRvZXMgbm90IGFsbG93IGFueSBkdXBsaWNp dHkgYmV0d2VlbiBsb2NhbCBhbmQgYW55IG9mIHRoZSBpbXBvcnRlZAorKyAgICAgc3ltYm9scy4g IFRoZXJlZm9yZSB0aGUgb3JkZXIgb2YgdGhlIFVTRSBzdGF0ZW1lbnRzIGlzIG5vdCBwb3J0YW50 LgorKyAgICAgZ2ZvcnRyYW4gcHJpbnRzOgorKyAgICAgRXJyb3I6IE5hbWUgJ1gnIGF0ICgxKSBp cyBhbiBhbWJpZ3VvdXMgcmVmZXJlbmNlIHRvICdYJyBmcm9tIG1vZHVsZSAnWScgICovCisrCisr ICB1c2UgPSBvYnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2Yg KCp1c2UpCisrCQkJCQkJICArIHN0cmxlbiAobW9kdWxlX25hbWUpKTsKKysgIHN0cmNweSAodXNl LT5tb2R1bGVfbmFtZSwgbW9kdWxlX25hbWUpOworKyAgZ2RiX2Fzc2VydCAoY3UtPmxhbmd1YWdl ID09IGxhbmd1YWdlX2ZvcnRyYW4pOworKyAgdXNlLT5uZXh0ID0gY3UtPmxhbmd1YWdlX3NwZWNp ZmljLmZvcnRyYW4udXNlOworKyAgY3UtPmxhbmd1YWdlX3NwZWNpZmljLmZvcnRyYW4udXNlID0g dXNlOworK30KKysKKysvKiBJbXBvcnQgYSBzaW5nbGUgRm9ydHJhbiBkZWNsYXJhdGlvbiBhbmQg cG9zc2libHkgcmVuYW1lIGl0LiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3JlYWRfZm9ydHJhbl9p bXBvcnRlZF9kZWNsYXJhdGlvbiAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KQorK3sKKysgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7CisrICBzdHJ1Y3QgZGllX2lu Zm8gKmltcG9ydGVkX2RpZTsKKysgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysgIGNoYXIgKnJlbmFt ZSA9IGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKKysKKysgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF9pbXBvcnQsIGN1KTsKKysgIGlmIChhdHRyID09IE5VTEwpCisrICAgIHsKKysgICAg ICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkgXygiRm9ydHJhbiBEV19UQUdf aW1wb3J0ZWRfZGVjbGFyYXRpb24gaXMgbWlzc2luZyAiCisrCQkgICAiRFdfQVRfaW1wb3J0IGF0 IG9mZnNldCAweCV4IiksIGRpZS0+b2Zmc2V0KTsKKysgICAgICByZXR1cm47CisrICAgIH0KKysg IGltcG9ydGVkX2RpZSA9IGZvbGxvd19kaWVfcmVmIChkaWUsIGF0dHIsICZjdSk7CisrCisrICBz eW0gPSBuZXdfc3ltYm9sIChpbXBvcnRlZF9kaWUsIE5VTEwsIGN1KTsKKysKKysgIGlmIChzeW0g JiYgcmVuYW1lKQorKyAgICAoc3ltKS0+Z2luZm8ubGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNfc3Bl Y2lmaWMuZGVtYW5nbGVkX25hbWUgPSByZW5hbWU7CisgfQorIAorIC8qIFJldHVybiB0aGUgbmFt ZSBvZiB0aGUgbmFtZXNwYWNlIHJlcHJlc2VudGVkIGJ5IERJRS4gIFNldAorQEAgLTU3MDUsMjkg KzYxNTksOTMgQEAgcmVhZF90YWdfc3RyaW5nX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29i amZpbGVfYXJjaCAob2JqZmlsZSk7CiAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUs ICppbmRleF90eXBlLCAqY2hhcl90eXBlOwogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKQEAg LTU2NDYsNyArNTkzMCw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICBjaGFy X3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2Ri YXJjaCk7CiAgICB0eXBlID0gY3JlYXRlX3N0cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJh bmdlX3R5cGUpOwogIAotQEAgLTU4MjIsNyArNjExMSw2IEBAIHN0YXRpYyBzdHJ1Y3QgdHlwZSAq CitAQCAtNTgyMiw3ICs2MzQwLDYgQEAgc3RhdGljIHN0cnVjdCB0eXBlICoKICByZWFkX3R5cGVk ZWYgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwpAQCAtNTY1NCw3ICs1OTM4LDcg QEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAgIGNvbnN0IGNoYXIgKm5hbWUgPSBO VUxMOwogICAgc3RydWN0IHR5cGUgKnRoaXNfdHlwZTsKICAKLUBAIC01OTMwLDggKzYyMTgsNyBA QCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKK0BAIC01OTMwLDggKzY0NDcsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAgIHN0cnVjdCB0eXBlICpi YXNlX3R5cGU7CiAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKICAgIHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHI7CkBAIC01NjY0LDcgKzU5NDgsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEw MDY0NAogICAgY2hhciAqbmFtZTsKICAgIAogICAgYmFzZV90eXBlID0gZGllX3R5cGUgKGRpZSwg Y3UpOwotQEAgLTU5NDQsNDIgKzYyMzEsOTEgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtNTk0NCw0MiArNjQ2MCw5 MSBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKICAJCSAgICAgMCwgTlVMTCwgY3UtPm9iamZpbGUpOwogICAgICB9CiAgCkBA IC01Nzg1LDcgKzYwNjksMTUgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAKICAg IG5hbWUgPSBkd2FyZjJfbmFtZSAoZGllLCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC02NjcwLDkg KzcwMDYsNiBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFy dF9kaWUsCitAQCAtNjQ1MCw2ICs3MDE1LDcgQEAgbG9hZF9wYXJ0aWFsX2RpZXMgKGJmZCAqYWJm ZCwgZ2RiX2J5dGUgKmJ1ZmZlciwgZ2RiX2J5dGUgKmluZm9fcHRyLAorIAkgICYmIGFiYnJldi0+ dGFnICE9IERXX1RBR19sZXhpY2FsX2Jsb2NrCisgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFH X3ZhcmlhYmxlCisgCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX25hbWVzcGFjZQorKwkgICYm IGFiYnJldi0+dGFnICE9IERXX1RBR19tb2R1bGUKKyAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19U QUdfbWVtYmVyKQorIAl7CisgCSAgLyogT3RoZXJ3aXNlIHdlIHNraXAgdG8gdGhlIG5leHQgc2li bGluZywgaWYgYW55LiAgKi8KK0BAIC02NjcwLDkgKzcyMzYsNiBAQCByZWFkX3BhcnRpYWxfZGll IChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWUsCiAgCSAgaWYgKHBhcnRfZGllLT5k aXJuYW1lID09IE5VTEwpCiAgCSAgICBwYXJ0X2RpZS0+ZGlybmFtZSA9IERXX1NUUklORyAoJmF0 dHIpOwogIAkgIGJyZWFrOwpAQCAtNTc5NSw3ICs2MDg3LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1 NTZjOSAxMDA2NDQKICAJY2FzZSBEV19BVF9sb3dfcGM6CiAgCSAgaGFzX2xvd19wY19hdHRyID0g MTsKICAJICBwYXJ0X2RpZS0+bG93cGMgPSBEV19BRERSICgmYXR0cik7Ci1AQCAtNjc0NCwxMCAr NzA3NywxMCBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFy dF9kaWUsCitAQCAtNjc0NCwxMCArNzMwNywxMCBAQCByZWFkX3BhcnRpYWxfZGllIChzdHJ1Y3Qg cGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWUsCiAgCSAgZWxzZQogIAkgICAgcGFydF9kaWUtPnNp YmxpbmcgPSBidWZmZXIgKyBkd2FyZjJfZ2V0X3JlZl9kaWVfb2Zmc2V0ICgmYXR0cik7CiAgCSAg YnJlYWs7CkBAIC01ODEwLDcgKzYxMDIsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0 NAogICAgICAgICAgY2FzZSBEV19BVF9ieXRlX3NpemU6CiAgICAgICAgICAgIHBhcnRfZGllLT5o YXNfYnl0ZV9zaXplID0gMTsKICAgICAgICAgICAgYnJlYWs7Ci1AQCAtNjc4OSwxMyArNzEyMiw2 IEBAIHJlYWRfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwYXJ0X2RpZSwK K0BAIC02Nzg5LDEzICs3MzUyLDYgQEAgcmVhZF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxf ZGllX2luZm8gKnBhcnRfZGllLAogIAkgIHx8IGR3YXJmMl9wZXJfb2JqZmlsZS0+aGFzX3NlY3Rp b25fYXRfemVybykpCiAgICAgIHBhcnRfZGllLT5oYXNfcGNfaW5mbyA9IDE7CiAgCkBAIC01ODI0 LDcgKzYxMTYsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgcmV0dXJuIGlu Zm9fcHRyOwogIH0KICAKLUBAIC02OTA0LDcgKzcyMzAsOCBAQCBmaXh1cF9wYXJ0aWFsX2RpZSAo c3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnBhcnRfZGllLAorQEAgLTY5MDQsNyArNzQ2MCw4IEBA IGZpeHVwX3BhcnRpYWxfZGllIChzdHJ1Y3QgcGFydGlhbF9kaWVfaW5mbyAqcGFydF9kaWUsCiAg ICAvKiBJZiB3ZSBmb3VuZCBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUgYW5kIHRoZSBESUUgaGFzIG5v IG5hbWUsIHRyeQogICAgICAgdG8gZmluZCBhIG5hbWUgaW4gdGhlIHJlZmVycmVkIHRvIERJRS4g ICovCiAgCkBAIC01ODM0LDcgKzYxMjYsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0 NAogICAgICB7CiAgICAgICAgc3RydWN0IHBhcnRpYWxfZGllX2luZm8gKnNwZWNfZGllOwogIAot QEAgLTgyNDQsMTAgKzg1NzEsMTIgQEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJp YnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorQEAgLTgyNDQsMTAgKzg4MDEsMTIgQEAg dmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJv bCAqc3ltLAogICAgICAgKGkuZS4gd2hlbiB0aGUgdmFsdWUgb2YgYSByZWdpc3RlciBvciBtZW1v cnkgbG9jYXRpb24gaXMKICAgICAgIHJlZmVyZW5jZWQsIG9yIGEgdGhyZWFkLWxvY2FsIGJsb2Nr LCBldGMuKS4gIFRoZW4gYWdhaW4sIGl0IG1pZ2h0CiAgICAgICBub3QgYmUgd29ydGh3aGlsZS4g IEknbSBhc3N1bWluZyB0aGF0IGl0IGlzbid0IHVubGVzcyBwZXJmb3JtYW5jZQpAQCAtNTg0OSw3 ICs2MTQxLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICB9CiAgCiAgLyogR2l2 ZW4gYSBwb2ludGVyIHRvIGEgRFdBUkYgaW5mb3JtYXRpb24gZW50cnksIGZpZ3VyZSBvdXQgaWYg d2UgbmVlZAotQEAgLTgyNjksMjEgKzg1OTgsMjQgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04 MjY5LDIxICs4ODI4LDMwIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgCiAgICBiYXNlYWRkciA9IEFO T0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9iamZpbGUp KTsKICAKQEAgLTU4NzgsMTAgKzYxNzAsMTYgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2 NDQKICsKICsgICAgICBsaW5rYWdlbmFtZSA9IGR3YXJmMl9saW5rYWdlX25hbWUgKGRpZSwgY3Up OwogKyAgICAgIFNZTUJPTF9TRVRfTkFNRVMgKHN5bSwgbGlua2FnZW5hbWUsIHN0cmxlbiAobGlu a2FnZW5hbWUpLCBvYmpmaWxlKTsKKysgICAgICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdl X2ZvcnRyYW4pCisrCXsKKysJICAoc3ltKS0+Z2luZm8ubGFuZ3VhZ2Vfc3BlY2lmaWMuY3BsdXNf c3BlY2lmaWMuZGVtYW5nbGVkX25hbWUgPQorKwkgICAgU1lNQk9MX0xJTktBR0VfTkFNRSAoc3lt KTsKKysJICBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pID0gZm9ydHJhbl9tb2R1bGVfbGlua2Fn ZV9uYW1lIChkaWUsIGN1KTsKKysJfQogIAogICAgICAgIC8qIERlZmF1bHQgYXNzdW1wdGlvbnMu CiAgICAgICAgICAgVXNlIHRoZSBwYXNzZWQgdHlwZSBvciBkZWNvZGUgaXQgZnJvbSB0aGUgZGll LiAgKi8KLUBAIC04MzgxLDcgKzg3MTMsMTUgQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZv ICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04Mzgx LDkgKzg5NDksMjggQEAgbmV3X3N5bWJvbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0 eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJICBpZiAoYXR0cikKICAJICAgIHsK ICAJICAgICAgdmFyX2RlY29kZV9sb2NhdGlvbiAoYXR0ciwgc3ltLCBjdSk7CkBAIC01ODk1LDkg KzYxOTMsMjMgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICsJCWF0dHIyID0gTlVM TDsKICsKICAJICAgICAgaWYgKGF0dHIyICYmIChEV19VTlNORCAoYXR0cjIpICE9IDApKQotIAkJ YWRkX3N5bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CistCQlhZGRfc3ltYm9s X3RvX2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKKysJCXsKKysJCSAgLyogV29ya2Fyb3Vu ZCBnZm9ydHJhbiBQUiBkZWJ1Zy80MDA0MCAtIGl0IHVzZXMKKysJCSAgICAgRFdfQVRfbG9jYXRp b24gZm9yIHZhcmlhYmxlcyBpbiAtZlBJQyBsaWJyYXJpZXMgd2hpY2ggbWF5CisrCQkgICAgIGdl dCBvdmVycmlkZW4gYnkgb3RoZXIgbGlicmFyaWVzL2V4ZWN1dGFibGUgYW5kIGdldAorKwkJICAg ICBhIGRpZmZlcmVudCBhZGRyZXNzLiAgUmVzb2x2ZSBpdCBieSAuZHluc3ltIGluc3RlYWQuICAq LworKworKwkJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4gJiYgZGllLT5w YXJlbnQKKysJCSAgICAgICYmIGRpZS0+cGFyZW50LT50YWcgPT0gRFdfVEFHX21vZHVsZSkKKysJ CSAgICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfVU5SRVNPTFZFRDsKKysKKysJCSAgYWRkX3N5 bWJvbF90b19saXN0IChzeW0sICZnbG9iYWxfc3ltYm9scyk7CisrCQl9CiAgCSAgICAgIGVsc2UK LUBAIC04NTEzLDcgKzg4NTMsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAkJYWRkX3N5bWJvbF90 b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsKKyAJICAgIH0KK0BAIC04NTEzLDcgKzkx MDAsNyBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBj dS0+bGlzdF9pbl9zY29wZSk7CiAgCSAgYnJlYWs7CiAgCWNhc2UgRFdfVEFHX2VudW1lcmF0b3I6 CkBAIC01OTA2LDcgKzYyMTgsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIAkg IGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb25zdF92YWx1ZSwgY3UpOwogIAkgIGlm IChhdHRyKQogIAkgICAgewotQEAgLTg1MzcsNiArODg3NywxMSBAQCBuZXdfc3ltYm9sIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQorQEAgLTg1MzcsNiArOTEyNCwxNiBAQCBuZXdfc3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogIAkgIFNZTUJPTF9D TEFTUyAoc3ltKSA9IExPQ19UWVBFREVGOwogIAkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAm Z2xvYmFsX3N5bWJvbHMpOwogIAkgIGJyZWFrOwpAQCAtNTkxNSwxMCArNjIyNywxNSBAQCBpbmRl eCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogKwkgIFNZTUJPTF9ET01BSU4gKHN5bSkgPSBDT01N T05fQkxPQ0tfRE9NQUlOOwogKwkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCBjdS0+bGlzdF9p bl9zY29wZSk7CiArCSAgYnJlYWs7CisrCWNhc2UgRFdfVEFHX21vZHVsZToKKysJICBTWU1CT0xf Q0xBU1MgKHN5bSkgPSBMT0NfU1RBVElDOworKwkgIFNZTUJPTF9ET01BSU4gKHN5bSkgPSBNT0RV TEVfRE9NQUlOOworKwkgIGFkZF9zeW1ib2xfdG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMp OworKwkgIGJyZWFrOwogIAlkZWZhdWx0OgogIAkgIC8qIE5vdCBhIHRhZyB3ZSByZWNvZ25pemUu ICBIb3BlZnVsbHkgd2UgYXJlbid0IHByb2Nlc3NpbmcKICAJICAgICB0cmFzaCBkYXRhLCBidXQg c2luY2Ugd2UgbXVzdCBzcGVjaWZpY2FsbHkgaWdub3JlIHRoaW5ncwotQEAgLTg1NTAsOCArODg5 NSw3IEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlw ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCitAQCAtODU1MCw4ICs5MTQ3LDcgQEAgbmV3X3N5bWJv bCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYy X2N1ICpjdSkKICAgICAgICAvKiBGb3IgdGhlIGJlbmVmaXQgb2Ygb2xkIHZlcnNpb25zIG9mIEdD QywgY2hlY2sgZm9yIGFub255bW91cwogIAkgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgZGVtYW5n bGVkIG5hbWUuICAqLwogICAgICAgIGlmICghcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8K QEAgLTU5MjgsNyArNjI0NSwxNiBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIAlj cF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltKTsKICAgICAgfQogICAgcmV0dXJu IChzeW0pOwotQEAgLTg4MDgsNiArOTE1Miw5IEBAIHJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVf aW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKK0BAIC04ODAyLDEyICs5Mzk4LDE4IEBA IHJlYWRfdHlwZV9kaWUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKKyAgICAgY2FzZSBEV19UQUdfbmFtZXNwYWNlOgorICAgICAgIHRoaXNfdHlwZSA9IHJlYWRf bmFtZXNwYWNlX3R5cGUgKGRpZSwgY3UpOworICAgICAgIGJyZWFrOworKyAgICBjYXNlIERXX1RB R19tb2R1bGU6CisrICAgICAgdGhpc190eXBlID0gcmVhZF9tb2R1bGVfdHlwZSAoZGllLCBjdSk7 CisrICAgICAgYnJlYWs7CisgICAgIGRlZmF1bHQ6CisgICAgICAgY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLCBfKCJ1bmV4cGVjdGVkIHRhZyBpbiByZWFkX3R5cGVfZGllOiAnJXMnIiks CisgCQkgZHdhcmZfdGFnX25hbWUgKGRpZS0+dGFnKSk7CiAgICAgICAgYnJlYWs7CiAgICAgIH0K ICAKQEAgLTU5MzgsNyArNjI2NCw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAg ICByZXR1cm4gdGhpc190eXBlOwogIH0KICAKLUBAIC04ODg5LDEwICs5MjM2LDk3IEBAIGRldGVy bWluZV9wcmVmaXggKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC04ODg5LDEwICs5NDkxLDk3IEBAIGRldGVybWluZV9wcmVmaXggKHN0cnVjdCBkaWVfaW5m byAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICAJICAgICBTbyBpdCBkb2VzIG5vdCBuZWVk IGEgcHJlZml4LiAgKi8KICAJICByZXR1cm4gIiI7CiAgICAgICAgZGVmYXVsdDoKQEAgLTYwMzcs MjMgKzYzNjMsMjMgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAvKiBSZXR1cm4g YSBuZXdseS1hbGxvY2F0ZWQgc3RyaW5nIGZvcm1lZCBieSBjb25jYXRlbmF0aW5nIFBSRUZJWCBh bmQKICAgICBTVUZGSVggd2l0aCBhcHByb3ByaWF0ZSBzZXBhcmF0b3IuICBJZiBQUkVGSVggb3Ig U1VGRklYIGlzIE5VTEwgb3IgZW1wdHksIHRoZW4KICAgICBzaW1wbHkgY29weSB0aGUgU1VGRklY IG9yIFBSRUZJWCwgcmVzcGVjdGl2ZWx5LiAgSWYgT0JTIGlzIG5vbi1udWxsLAotQEAgLTg5NDgs MTQgKzkzODIsNzUgQEAgc3RhdGljIGNoYXIgKgorQEAgLTg5NDgsMTQgKzk2MzcsMTA4IEBAIHN0 YXRpYyBjaGFyICoKICBkd2FyZjJfbGlua2FnZV9uYW1lIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgewogICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKICsg IGNoYXIgKm5hbWU7CiArCiArICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOworKworKyAg LyogVGhlc2UgYXJlIHRoZSBvbmx5IGxhbmd1YWdlcyB3ZSBrbm93IGhvdyB0byBxdWFsaWZ5IG5h bWVzIGluLiAgKi8KKysgIGlmIChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfY3BsdXMKKysgICAg ICAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfamF2YSkKKysgICAgcmV0dXJuIG5hbWU7CiAg CiAtICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfTUlQU19saW5rYWdlX25hbWUsIGN1 KTsKIC0gIGlmIChhdHRyICYmIERXX1NUUklORyAoYXR0cikpCiAtICAgIHJldHVybiBEV19TVFJJ TkcgKGF0dHIpOwogLSAgcmV0dXJuIGR3YXJmMl9uYW1lIChkaWUsIGN1KTsKLSsgIC8qIFRoZXNl IGFyZSB0aGUgb25seSBsYW5ndWFnZXMgd2Uga25vdyBob3cgdG8gcXVhbGlmeSBuYW1lcyBpbi4g ICovCi0rICBpZiAoY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2NwbHVzCi0rICAgICAgJiYgY3Ut Pmxhbmd1YWdlICE9IGxhbmd1YWdlX2phdmEpCi0rICAgIHJldHVybiBuYW1lOwotKwogKyAgaWYg KGRpZV9uZWVkc19uYW1lc3BhY2UgKGRpZSwgY3UpKQogKyAgICB7CiArICAgICAgbG9uZyBsZW5n dGg7CkBAIC02MTE0LDE0ICs2NDQwLDQ3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0 CiAgfQogIAogLS8qIEdldCBuYW1lIG9mIGEgZGllLCByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQu ICAqLwotKy8qIENhbm9uaWNhbGl6ZSB0aGUgbmFtZSBvZiB0aGUgZ2l2ZW4gRElFLiAgKi8KLSAK LSBzdGF0aWMgY2hhciAqCi0gZHdhcmYyX2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICpuYW1lLCBz dHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLUBAIC0xMDE4MSwxMSArMTA2NzYsMTIgQEAgZHdhcmYyX2dl dF9yZWZfZGllX29mZnNldCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKLSAgIHJldHVybiAwOwot IH0KLSAKKysvKiBSZXR1cm4gdGhlIGZ1bGx5IHF1YWxpZmllZCAuc3ltdGFiIG5hbWUgZm9yIHN5 bWJvbHMgY29udGFpbmVkIGluIEZvcnRyYW4KKysgICBtb2R1bGVzLiAgUmV0dXJuIERXQVJGMl9O QU1FIG90aGVyd2lzZS4gICovCisrCisrc3RhdGljIGNoYXIgKgorK2ZvcnRyYW5fbW9kdWxlX2xp bmthZ2VfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQor K3sKKysgIGNoYXIgKm5hbWU7CisrCisrICBnZGJfYXNzZXJ0IChjdS0+bGFuZ3VhZ2UgPT0gbGFu Z3VhZ2VfZm9ydHJhbik7CisrCisrICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwgY3UpOworKwor KyAgaWYgKG5hbWUgJiYgZGllLT5wYXJlbnQgJiYgZGllLT5wYXJlbnQtPnRhZyA9PSBEV19UQUdf bW9kdWxlKQorKyAgICB7CisrICAgICAgY2hhciAqbW9kdWxlX25hbWUgPSBkd2FyZjJfbmFtZSAo ZGllLT5wYXJlbnQsIGN1KTsKKysKKysgICAgICBpZiAobW9kdWxlX25hbWUpCisrCXsKKysJICBj aGFyICpyZXR2YWw7CisrCisrCSAgLyogYF9fbW9kdWxlbmFtZV9NT0RfdmFyaWFibGVuYW1lMCcu ICAqLworKwkgIHJldHZhbCA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLAorKwkJCQkgIDIgKyBzdHJsZW4gKG1vZHVsZV9uYW1lKSArIDUgKyBzdHJsZW4gKG5h bWUpCisrCQkJCSAgKyAxKTsKKysJICBzcHJpbnRmIChyZXR2YWwsICJfXyVzX01PRF8lcyIsIG1v ZHVsZV9uYW1lLCBuYW1lKTsKKysKKysJICByZXR1cm4gcmV0dmFsOworKwl9CisrICAgIH0KKysK KysgIHJldHVybiBuYW1lOworK30KKysKKysvKiBDYW5vbmljYWxpemUgdGhlIG5hbWUgb2YgdGhl IGdpdmVuIERJRS4gICovCisgCisgc3RhdGljIGNoYXIgKgorIGR3YXJmMl9jYW5vbmljYWxpemVf bmFtZSAoY2hhciAqbmFtZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCitAQCAtMTAxODEsMTEgKzEw OTY0LDEyIEBAIGR3YXJmMl9nZXRfcmVmX2RpZV9vZmZzZXQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0 dHIpCisgICByZXR1cm4gMDsKKyB9CisgCiAtLyogUmV0dXJuIHRoZSBjb25zdGFudCB2YWx1ZSBo ZWxkIGJ5IHRoZSBnaXZlbiBhdHRyaWJ1dGUuICBSZXR1cm4gLTEKICsvKiBSZXR1cm4gdGhlIGNv bnN0YW50IHZhbHVlIGhlbGQgYnkgdGhlIGdpdmVuIGF0dHJpYnV0ZS4gIFJldHVybiBERUZBVUxU X1ZBTFVFCiAgICAgaWYgdGhlIHZhbHVlIGhlbGQgYnkgdGhlIGF0dHJpYnV0ZSBpcyBub3QgY29u c3RhbnQuICAqLwpAQCAtNjEzNCw3ICs2NDkzLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAx MDA2NDQKICB7CiAgICBpZiAoYXR0ci0+Zm9ybSA9PSBEV19GT1JNX3NkYXRhKQogICAgICByZXR1 cm4gRFdfU05EIChhdHRyKTsKLUBAIC0xMDE5NSw2ICsxMDY5MSw4IEBAIGR3YXJmMl9nZXRfYXR0 cl9jb25zdGFudF92YWx1ZSAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgaW50IGRlZmF1bHRfdmFs dWUpCitAQCAtMTAxOTUsNiArMTA5NzksOCBAQCBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFs dWUgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIGludCBkZWZhdWx0X3ZhbHVlKQogICAgICAgICAg ICAgfHwgYXR0ci0+Zm9ybSA9PSBEV19GT1JNX2RhdGE0CiAgICAgICAgICAgICB8fCBhdHRyLT5m b3JtID09IERXX0ZPUk1fZGF0YTgpCiAgICAgIHJldHVybiBEV19VTlNORCAoYXR0cik7CkBAIC02 MTQzLDcgKzY1MDIsNyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgZWxzZQog ICAgICB7CiAgICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJBdHRyaWJ1 dGUgdmFsdWUgaXMgbm90IGEgY29uc3RhbnQgKCVzKSIpLAotQEAgLTEwOTkwLDggKzExNDg4LDYg QEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQg aW50IG9mZnNldCwKK0BAIC0xMDk5MCw4ICsxMTc3Niw2IEBAIGR3YXJmX2RlY29kZV9tYWNyb3Mg KHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAgewogICAgZ2Ri X2J5dGUgKm1hY19wdHIsICptYWNfZW5kOwogICAgc3RydWN0IG1hY3JvX3NvdXJjZV9maWxlICpj dXJyZW50X2ZpbGUgPSAwOwpAQCAtNjE1Miw3ICs2NTExLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1 NTZjOSAxMDA2NDQKICAKICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPm1hY2luZm8uYnVmZmVy ID09IE5VTEwpCiAgICAgIHsKLUBAIC0xMDk5OSwyOSArMTE0OTUsMTkgQEAgZHdhcmZfZGVjb2Rl X21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKK0BA IC0xMDk5OSwyOSArMTE3ODMsMTkgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVf aGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKICAgICAgICByZXR1cm47CiAgICAgIH0K ICAKQEAgLTYxODcsNyArNjU0Niw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAg ICAgICAgICB9CiAgCiAgICAgICAgbWFjaW5mb190eXBlID0gcmVhZF8xX2J5dGUgKGFiZmQsIG1h Y19wdHIpOwotQEAgLTExMDMyLDkyICsxMTUxOCw3IEBAIGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0 cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCitAQCAtMTEwMzIsOTIg KzExODA2LDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwg dW5zaWduZWQgaW50IG9mZnNldCwKICAgICAgICAgICAgLyogQSB6ZXJvIG1hY2luZm8gdHlwZSBp bmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgbWFjcm8KICAgICAgICAgICAgICAgaW5mb3JtYXRpb24u ICAqLwogICAgICAgICAgY2FzZSAwOgpAQCAtNjI4MSw3ICs2NjQwLDcgQEAgaW5kZXggNDQ1YmFi OC4uNjU1NTZjOSAxMDA2NDQKICAKICAgICAgICAgIGNhc2UgRFdfTUFDSU5GT19kZWZpbmU6CiAg ICAgICAgICBjYXNlIERXX01BQ0lORk9fdW5kZWY6Ci1AQCAtMTExMzIsMzEgKzExNTMzLDE5IEBA IGR3YXJmX2RlY29kZV9tYWNyb3MgKHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGlu dCBvZmZzZXQsCitAQCAtMTExMzIsMzEgKzExODIxLDE5IEBAIGR3YXJmX2RlY29kZV9tYWNyb3Mg KHN0cnVjdCBsaW5lX2hlYWRlciAqbGgsIHVuc2lnbmVkIGludCBvZmZzZXQsCiAgICAgICAgICAg ICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwogIAogICAgICAgICAgICAgIGlmICghIGN1cnJlbnRf ZmlsZSkKQEAgLTYzMjQsNyArNjY4Myw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0 CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYnJlYWs7CiAgCi1AQCAtMTExNzAsMjIgKzExNTU5 LDkgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVfaGVhZGVyICpsaCwgdW5zaWdu ZWQgaW50IG9mZnNldCwKK0BAIC0xMTE3MCwyMiArMTE4NDcsOSBAQCBkd2FyZl9kZWNvZGVfbWFj cm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAogICAgICAg ICAgICAgIGZpbGUgPSByZWFkX3Vuc2lnbmVkX2xlYjEyOCAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVz X3JlYWQpOwogICAgICAgICAgICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKICAKQEAgLTYzNTAs NyArNjcwOSw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICAgICAgICAgIH0K ICAgICAgICAgICAgYnJlYWs7CiAgCi1AQCAtMTEyMzksNyArMTE2MTUsNyBAQCBkd2FyZl9kZWNv ZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAor QEAgLTExMjM5LDcgKzExOTAzLDcgQEAgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0IGxpbmVf aGVhZGVyICpsaCwgdW5zaWduZWQgaW50IG9mZnNldCwKICAgICAgICAgICAgfQogICAgICAgICAg ICBicmVhazsKICAgICAgICAgIH0KQEAgLTYzNTksNyArNjcxOCw3IEBAIGluZGV4IDQ0NWJhYjgu LjY1NTU2YzkgMTAwNjQ0CiAgfQogIAogIC8qIENoZWNrIGlmIHRoZSBhdHRyaWJ1dGUncyBmb3Jt IGlzIGEgRFdfRk9STV9ibG9jayoKLUBAIC0xMTI5OSw2ICsxMTY3NSwzNCBAQCBhdHRyX2Zvcm1f aXNfY29uc3RhbnQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIpCitAQCAtMTEyOTksNiArMTE5NjMs MzQgQEAgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChzdHJ1Y3QgYXR0cmlidXRlICphdHRyKQogICAg ICB9CiAgfQogIApAQCAtNjM5NCw3ICs2NzUzLDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAx MDA2NDQKICBzdGF0aWMgdm9pZAogIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0 IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCSAgICAgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi1AQCAtMTEzMjgsMzUgKzExNzMyLDI1IEBAIGR3YXJmMl9zeW1ib2xfbWFy a19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAor QEAgLTExMzI4LDM1ICsxMjAyMCwyNSBAQCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0 cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAgICAgICBTWU1CT0xf Q09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwogICAgICAgIFNZTUJP TF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwogICAgICB9CkBAIC02NDQ1LDcgKzY4MDQs NyBAQCBpbmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogICAgICB9CiAgfQogIAotQEAgLTEx NjQ0LDYgKzEyMDM4LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9s aHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorQEAgLTExNjQ0LDYgKzEyMzI2LDMxIEBAIG9mZnNl dF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhz KQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApA QCAtNjQ3Nyw3ICs2ODM2LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICAvKiBT ZXQgdGhlIHR5cGUgYXNzb2NpYXRlZCB3aXRoIERJRSB0byBUWVBFLiAgU2F2ZSBpdCBpbiBDVSdz IGhhc2gKICAgICB0YWJsZSBpZiBuZWNlc3NhcnkuICBGb3IgY29udmVuaWVuY2UsIHJldHVybiBU WVBFLiAgKi8KICAKLUBAIC0xMTY1Miw2ICsxMjA3MSw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkK K0BAIC0xMTY1Miw2ICsxMjM1OSw4IEBAIHNldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpk aWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CiAgICBzdHJ1 Y3QgZHdhcmYyX29mZnNldF9hbmRfdHlwZSAqKnNsb3QsIG9mczsKICAKQEAgLTY0ODYsNyArNjg0 NSw3IEBAIGluZGV4IDQ0NWJhYjguLjY1NTU2YzkgMTAwNjQ0CiAgICBpZiAoY3UtPnR5cGVfaGFz aCA9PSBOVUxMKQogICAgICB7CiAgICAgICAgZ2RiX2Fzc2VydCAoY3UtPnBlcl9jdSAhPSBOVUxM KTsKLUBAIC0xMTc5NCwyMyArMTIyMTUsMTMgQEAgc2hvd19kd2FyZjJfY21kIChjaGFyICphcmdz LCBpbnQgZnJvbV90dHkpCitAQCAtMTE3OTQsMjMgKzEyNTAzLDEzIEBAIHNob3dfZHdhcmYyX2Nt ZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQogICAgY21kX3Nob3dfbGlzdCAoc2hvd19kd2Fy ZjJfY21kbGlzdCwgZnJvbV90dHksICIiKTsKICB9CiAgCkBAIC02NTE0LDcgKzY4NzMsNyBAQCBp bmRleCA0NDViYWI4Li42NTU1NmM5IDEwMDY0NAogIH0KICAKICAvKiBtdW5tYXAgZGVidWcgc2Vj dGlvbnMgZm9yIE9CSkZJTEUsIGlmIG5lY2Vzc2FyeS4gICovCi1AQCAtMTE4MTksMTUgKzEyMjMw LDE1IEBAIHN0YXRpYyB2b2lkCitAQCAtMTE4MTksMTUgKzEyNTE4LDE1IEBAIHN0YXRpYyB2b2lk CiAgZHdhcmYyX3Blcl9vYmpmaWxlX2NsZWFudXAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2 b2lkICpkKQogIHsKICAgIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmRhdGEgPSBkOwpAQCAt NjUzOSw3ICs2ODk4LDcgQEAgaW5kZXggNDQ1YmFiOC4uNjU1NTZjOSAxMDA2NDQKICB9CiAgCiAg dm9pZCBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCk7Ci1AQCAtMTE4MzUsNiArMTIyNDYs NyBAQCB2b2lkIF9pbml0aWFsaXplX2R3YXJmMl9yZWFkICh2b2lkKTsKK0BAIC0xMTgzNSw2ICsx MjUzNCw3IEBAIHZvaWQgX2luaXRpYWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpOwogIHZvaWQKICBf aW5pdGlhbGl6ZV9kd2FyZjJfcmVhZCAodm9pZCkKICB7CkBAIC02OTUwLDEwICs3MzA5LDE5IEBA IGluZGV4IGMwNGM4ZjQuLmRkY2Q0NjAgMTAwNjQ0CiAgICB7ICJpbnRlZ2VyIiwgSU5UX0tFWVdP UkQsIEJJTk9QX0VORCB9LAogICAgeyAibG9naWNhbCIsIExPR0lDQUxfS0VZV09SRCwgQklOT1Bf RU5EIH0sCiBkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5jIGIvZ2RiL2YtbGFuZy5jCi1pbmRleCAx OWMxMzE2Li44ZDJhNTM4IDEwMDY0NAoraW5kZXggMTljMTMxNi4uNGNjMmE0MCAxMDA2NDQKIC0t LSBhL2dkYi9mLWxhbmcuYwogKysrIGIvZ2RiL2YtbGFuZy5jCi1AQCAtNTUsMjAgKzU1LDYgQEAg dHlwZWRlZiBzdHJ1Y3Qgc2F2ZWRfYmZfc3ltbnVtIFNBVkVEX0JGLCAqU0FWRURfQkZfUFRSOwor QEAgLTMxLDYgKzMxLDggQEAKKyAjaW5jbHVkZSAiZi1sYW5nLmgiCisgI2luY2x1ZGUgInZhbHBy aW50LmgiCisgI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgImJsb2NrLmgiCisrI2luY2x1 ZGUgImdkYl9hc3NlcnQuaCIKKyAKKyAKKyAvKiBGb2xsb3dpbmcgaXMgZHViaW91cyBzdHVmZiB0 aGF0IGhhZCBiZWVuIGluIHRoZSB4Y29mZiByZWFkZXIuICovCitAQCAtNTUsMjAgKzU3LDYgQEAg dHlwZWRlZiBzdHJ1Y3Qgc2F2ZWRfYmZfc3ltbnVtIFNBVkVEX0JGLCAqU0FWRURfQkZfUFRSOwog IC8qIExvY2FsIGZ1bmN0aW9ucyAqLwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2ZfbGFu Z3VhZ2UgKHZvaWQpOwpAQCAtNjk3NCw3ICs3MzQyLDcgQEAgaW5kZXggMTljMTMxNi4uOGQyYTUz OCAxMDA2NDQKICAKICBzdGF0aWMgdm9pZCBmX3ByaW50Y2hhciAoaW50IGMsIHN0cnVjdCB0eXBl ICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqIHN0cmVhbSk7CiAgc3RhdGljIHZvaWQgZl9lbWl0X2No YXIgKGludCBjLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKLUBAIC0yNTksNiArMjQ1LDcgQEAgZW51bSBm X3ByaW1pdGl2ZV90eXBlcyB7CitAQCAtMjU5LDYgKzI0Nyw3IEBAIGVudW0gZl9wcmltaXRpdmVf dHlwZXMgewogICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsLAogICAgZl9wcmltaXRpdmVfdHlw ZV9sb2dpY2FsX3MxLAogICAgZl9wcmltaXRpdmVfdHlwZV9sb2dpY2FsX3MyLApAQCAtNjk4Miw3 ICs3MzUwLDcgQEAgaW5kZXggMTljMTMxNi4uOGQyYTUzOCAxMDA2NDQKICAgIGZfcHJpbWl0aXZl X3R5cGVfaW50ZWdlciwKICAgIGZfcHJpbWl0aXZlX3R5cGVfaW50ZWdlcl9zMiwKICAgIGZfcHJp bWl0aXZlX3R5cGVfcmVhbCwKLUBAIC0yODksNiArMjc2LDggQEAgZl9sYW5ndWFnZV9hcmNoX2lu Zm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTI4OSw2ICsyNzgsOCBAQCBmX2xhbmd1 YWdlX2FyY2hfaW5mbyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICAgID0gYnVpbHRpbi0+ YnVpbHRpbl9sb2dpY2FsX3MxOwogICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0b3IgW2ZfcHJp bWl0aXZlX3R5cGVfbG9naWNhbF9zMl0KICAgICAgPSBidWlsdGluLT5idWlsdGluX2xvZ2ljYWxf czI7CkBAIC02OTkxLDcgKzczNTksNjMgQEAgaW5kZXggMTljMTMxNi4uOGQyYTUzOCAxMDA2NDQK ICAgIGxhaS0+cHJpbWl0aXZlX3R5cGVfdmVjdG9yIFtmX3ByaW1pdGl2ZV90eXBlX3JlYWxdCiAg ICAgID0gYnVpbHRpbi0+YnVpbHRpbl9yZWFsOwogICAgbGFpLT5wcmltaXRpdmVfdHlwZV92ZWN0 b3IgW2ZfcHJpbWl0aXZlX3R5cGVfcmVhbF9zOF0KLUBAIC0zNzIsNiArMzYxLDEwIEBAIGJ1aWxk X2ZvcnRyYW5fdHlwZXMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorQEAgLTMwNiw2ICsyOTcs NDYgQEAgZl9sYW5ndWFnZV9hcmNoX2luZm8gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorICAg bGFpLT5ib29sX3R5cGVfZGVmYXVsdCA9IGJ1aWx0aW4tPmJ1aWx0aW5fbG9naWNhbF9zMjsKKyB9 CisgCisrLyogRmluZCBpZiBOQU1FIGlzIG5vdCBjb250YWluZWQgaW4gYW55IG9mIHRoZSBGb3J0 cmFuIG1vZHVsZXMgaW1wb3J0ZWQgYnkgdGhlCisrICAgRm9ydHJhbiBVU0Ugc3RhdGVtZW50Lgor KworKyAgIEFzIEZvcnRyYW4gaGFzIG5vIG5lc3RlZCBibG9ja3Mgc3VjaCBsb29rdXAgY2FuIGJl IHByb2Nlc3NlZCBmcm9tCisrICAgbG9va3VwX3N5bWJvbF9ub25sb2NhbCAtIHdoZW4gbm8gbG9j YWwgYmxvY2tzIGNvdWxkIHNhdGlzZnkgdGhlIGxvb2t1cC4gICovCisrCisrc3RhdGljIHN0cnVj dCBzeW1ib2wgKgorK2ZfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwK KysJCQkgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCisrCQkJICBjb25zdCBkb21haW5fZW51 bSBkb21haW4pCisreworKyAgc3RydWN0IGZvcnRyYW5fdXNpbmcgKnVzZTsKKysKKysgIGlmICgh YmxvY2spCisrICAgIHJldHVybiBOVUxMOworKworKyAgZm9yICh1c2UgPSBCTE9DS19GT1JUUkFO X1VTRSAoYmxvY2spOyB1c2U7IHVzZSA9IHVzZS0+bmV4dCkKKysgICAgeworKyAgICAgIHN0cnVj dCBzeW1ib2wgKnN5bTsKKysgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZTsKKysgICAgICBzdHJ1Y3Qg c3ltYm9sICpyZXR2YWw7CisrCisrICAgICAgc3ltID0gbG9va3VwX3N5bWJvbF9nbG9iYWwgKHVz ZS0+bW9kdWxlX25hbWUsIGJsb2NrLCBNT0RVTEVfRE9NQUlOKTsKKysKKysgICAgICAvKiBNb2R1 bGUgbmFtZSBsb29rdXAgc2hvdWxkIG5vdCBmYWlsIHdpdGggY29ycmVjdCBkZWJ1ZyBpbmZvLiAg Ki8KKysgICAgICBpZiAoc3ltID09IE5VTEwpCisrCWNvbnRpbnVlOworKworKyAgICAgIHR5cGUg PSBTWU1CT0xfVFlQRSAoc3ltKTsKKysgICAgICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9NT0RVTEUpOworKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVfTU9EVUxFX0JM T0NLICh0eXBlKSAhPSBOVUxMKTsKKysKKysgICAgICByZXR2YWwgPSBsb29rdXBfYmxvY2tfc3lt Ym9sIChUWVBFX01PRFVMRV9CTE9DSyAodHlwZSksIG5hbWUsIGRvbWFpbik7CisrICAgICAgaWYg KHJldHZhbCkKKysJcmV0dXJuIHJldHZhbDsKKysgICAgfQorKworKyAgcmV0dXJuIE5VTEw7Cisr fQorKworIC8qIFRoaXMgaXMgZGVjbGFyZWQgaW4gYy1sYW5nLmggYnV0IGl0IGlzIHNpbGx5IHRv IGltcG9ydCB0aGF0IGZpbGUgZm9yIHdoYXQKKyAgICBpcyBhbHJlYWR5IGp1c3QgYSBoYWNrLiAq LworIGV4dGVybiBpbnQgY192YWx1ZV9wcmludCAoc3RydWN0IHZhbHVlICosIHN0cnVjdCB1aV9m aWxlICosCitAQCAtMzMzLDcgKzM2NCw3IEBAIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuIGZf bGFuZ3VhZ2VfZGVmbiA9CisgICBjX3ZhbHVlX3ByaW50LAkJLyogRklYTUUgKi8KKyAgIE5VTEws CQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHNraXBfdHJhbXBvbGluZSAqLworICAgTlVMTCwgICAg ICAgICAgICAgICAgICAgIAkvKiBuYW1lX29mX3RoaXMgKi8KKy0gIGJhc2ljX2xvb2t1cF9zeW1i b2xfbm9ubG9jYWwsCS8qIGxvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKi8KKysgIGZfbG9va3VwX3N5 bWJvbF9ub25sb2NhbCwJLyogbG9va3VwX3N5bWJvbF9ub25sb2NhbCAqLworICAgYmFzaWNfbG9v a3VwX3RyYW5zcGFyZW50X3R5cGUsLyogbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKi8KKyAgIE5V TEwsCQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIHN5bWJvbCBkZW1hbmdsZXIgKi8KKyAgIE5VTEws CQkJCS8qIExhbmd1YWdlIHNwZWNpZmljIGNsYXNzX25hbWVfZnJvbV9waHlzbmFtZSAqLworQEAg LTM3Miw2ICs0MDMsMTAgQEAgYnVpbGRfZm9ydHJhbl90eXBlcyAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpCiAgICAgID0gYXJjaF9ib29sZWFuX3R5cGUgKGdkYmFyY2gsIGdkYmFyY2hfc2hvcnRf Yml0IChnZGJhcmNoKSwgMSwKICAJCQkgImxvZ2ljYWwqMiIpOwogIApAQCAtNzAwMiw3ICs3NDI2 LDcgQEAgaW5kZXggMTljMTMxNi4uOGQyYTUzOCAxMDA2NDQKICAgIGJ1aWx0aW5fZl90eXBlLT5i dWlsdGluX2ludGVnZXIKICAgICAgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgZ2RiYXJj aF9pbnRfYml0IChnZGJhcmNoKSwgMCwKICAJCQkgImludGVnZXIiKTsKLUBAIC00MTgsMzk1ICs0 MTEsMyBAQCBfaW5pdGlhbGl6ZV9mX2xhbmd1YWdlICh2b2lkKQorQEAgLTQxOCwzOTUgKzQ1Mywz IEBAIF9pbml0aWFsaXplX2ZfbGFuZ3VhZ2UgKHZvaWQpCiAgCiAgICBhZGRfbGFuZ3VhZ2UgKCZm X2xhbmd1YWdlX2RlZm4pOwogIH0KQEAgLTczOTksNyArNzgyMyw3IEBAIGluZGV4IDE5YzEzMTYu LjhkMmE1MzggMTAwNjQ0CiAtfQogLSNlbmRpZgogZGlmZiAtLWdpdCBhL2dkYi9mLWxhbmcuaCBi L2dkYi9mLWxhbmcuaAotaW5kZXggNzExYmRiYS4uY2QyZjgwNCAxMDA2NDQKK2luZGV4IDcxMWJk YmEuLjlkN2Q5MmIgMTAwNjQ0CiAtLS0gYS9nZGIvZi1sYW5nLmgKICsrKyBiL2dkYi9mLWxhbmcu aAogQEAgLTI4LDYgKzI4LDEwIEBAIGV4dGVybiB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERl ZmluZWQgaW4gZi1leHAueSAqLwpAQCAtNzQ2Myw2ICs3ODg3LDE3IEBAIGluZGV4IDcxMWJkYmEu LmNkMmY4MDQgMTAwNjQ0CiAgICBzdHJ1Y3QgdHlwZSAqYnVpbHRpbl9yZWFsOwogICAgc3RydWN0 IHR5cGUgKmJ1aWx0aW5fcmVhbF9zODsKICAgIHN0cnVjdCB0eXBlICpidWlsdGluX3JlYWxfczE2 OworQEAgLTEyNSwzICs5NywxMCBAQCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUKKyAvKiBSZXR1cm4g dGhlIEZvcnRyYW4gdHlwZSB0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBhcmNoaXRlY3R1cmUuICAq LworIGV4dGVybiBjb25zdCBzdHJ1Y3QgYnVpbHRpbl9mX3R5cGUgKmJ1aWx0aW5fZl90eXBlIChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisgCisrLyogTGlzdCBvZiBtb2R1bGUgbmFtZXMgYmVp bmcgaW1wb3J0ZWQgYnkgYSBibG9jayB0aG91Z2ggQkxPQ0tfRk9SVFJBTl9VU0UuICAqLworKwor K3N0cnVjdCBmb3J0cmFuX3VzaW5nCisrICB7CisrICAgIHN0cnVjdCBmb3J0cmFuX3VzaW5nICpu ZXh0OworKyAgICBjaGFyIG1vZHVsZV9uYW1lWzFdOworKyAgfTsKIGRpZmYgLS1naXQgYS9nZGIv Zi10eXBlcHJpbnQuYyBiL2dkYi9mLXR5cGVwcmludC5jCiBpbmRleCA2Yzk2NjhmLi44NTJiOWE4 IDEwMDY0NAogLS0tIGEvZ2RiL2YtdHlwZXByaW50LmMKQEAgLTgyOTgsNyArODczMyw3IEBAIGlu ZGV4IDhjMDI3YzkuLmQyMDFmNzYgMTAwNjQ0CiAgICBlbHNlCiAgICAgIHsKIGRpZmYgLS1naXQg YS9nZGIvZnJhbWUuYyBiL2dkYi9mcmFtZS5jCi1pbmRleCA2N2UwNjA3Li40OWMzMDEzIDEwMDY0 NAoraW5kZXggNjdlMDYwNy4uN2RjZjJjYiAxMDA2NDQKIC0tLSBhL2dkYi9mcmFtZS5jCiArKysg Yi9nZGIvZnJhbWUuYwogQEAgLTExMDksNiArMTEwOSwxNCBAQCBoYXNfc3RhY2tfZnJhbWVzICh2 b2lkKQpAQCAtODMxNiw3ICs4NzUxLDcgQEAgaW5kZXggNjdlMDYwNy4uNDljMzAxMyAxMDA2NDQK ICAgIC8qIERvbid0IHRyeSB0byByZWFkIGZyb20gYSBkZWFkIHRocmVhZC4gICovCiAgICBpZiAo aXNfZXhpdGVkIChpbmZlcmlvcl9wdGlkKSkKICAgICAgcmV0dXJuIDA7Ci1AQCAtMTg0Myw2ICsx ODUxLDE1IEBAIGdldF9mcmFtZV9hcmdzX2FkZHJlc3MgKHN0cnVjdCBmcmFtZV9pbmZvICpmaSkK K0BAIC0xODQzLDYgKzE4NTEsMTcgQEAgZ2V0X2ZyYW1lX2FyZ3NfYWRkcmVzcyAoc3RydWN0IGZy YW1lX2luZm8gKmZpKQogICAgcmV0dXJuIGZpLT5iYXNlLT50aGlzX2FyZ3MgKGZpLCAmZmktPmJh c2VfY2FjaGUpOwogIH0KICAKQEAgLTgzMjYsNiArODc2MSw4IEBAIGluZGV4IDY3ZTA2MDcuLjQ5 YzMwMTMgMTAwNjQ0CiAraW50CiArZnJhbWVfdW53aW5kZXJfaXMgKHN0cnVjdCBmcmFtZV9pbmZv ICpmaSwgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCAqdW53aW5kZXIpCiAreworKyAgaWYgKGZp LT51bndpbmQgPT0gTlVMTCkKKysgICAgZmktPnVud2luZCA9IGZyYW1lX3Vud2luZF9maW5kX2J5 X2ZyYW1lIChmaSwgJmZpLT5wcm9sb2d1ZV9jYWNoZSk7CiArICByZXR1cm4gZmktPnVud2luZCA9 PSB1bndpbmRlcjsKICt9CiArCkBAIC05NjEwLDEwICsxMDA0NywxOSBAQCBpbmRleCAyZjc3ZGNh Li44MTQ2MTc1IDEwMDY0NAogIAogICAgYWRkX3NldHNob3dfemludGVnZXJfY21kICgib3Zlcmxv YWQiLCBub19jbGFzcywgJm92ZXJsb2FkX2RlYnVnLCBfKCJcCiBkaWZmIC0tZ2l0IGEvZ2RiL2dk YnR5cGVzLmggYi9nZGIvZ2RidHlwZXMuaAotaW5kZXggYmU2ZWQ1NS4uY2Y4YzRkOCAxMDA2NDQK K2luZGV4IGJlNmVkNTUuLjZhNTFhNGUgMTAwNjQ0CiAtLS0gYS9nZGIvZ2RidHlwZXMuaAogKysr IGIvZ2RiL2dkYnR5cGVzLmgKLUBAIC0yMTMsNiArMjEzLDExIEBAIGVudW0gdHlwZV9pbnN0YW5j ZV9mbGFnX3ZhbHVlCitAQCAtMTM3LDYgKzEzNyw4IEBAIGVudW0gdHlwZV9jb2RlCisgCisgICAg IFRZUEVfQ09ERV9ERUNGTE9BVCwJCS8qIERlY2ltYWwgZmxvYXRpbmcgcG9pbnQuICAqLworIAor KyAgICBUWVBFX0NPREVfTU9EVUxFLAkJLyogRm9ydHJhbiBtb2R1bGUuICAqLworKworICAgICAv KiBJbnRlcm5hbCBmdW5jdGlvbiB0eXBlLiAgKi8KKyAgICAgVFlQRV9DT0RFX0lOVEVSTkFMX0ZV TkNUSU9OCisgICB9OworQEAgLTIxMyw2ICsyMTUsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2Zs YWdfdmFsdWUKICAKICAjZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBF ICh0KS0+ZmxhZ190YXJnZXRfc3R1YikKICAKQEAgLTk2MjUsNyArMTAwNzEsNyBAQCBpbmRleCBi ZTZlZDU1Li5jZjhjNGQ4IDEwMDY0NAogIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQs IHRoZSBjb3JyZXNwb25kaW5nIHR5cGUgaGFkIAogICAqIGEgc3RhdGljIG1vZGlmaWVyLgogICAq IE5vdGU6IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJz Ci1AQCAtMjc4LDYgKzI4Myw0OCBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorQEAg LTI3OCw2ICsyODUsNDggQEAgZW51bSB0eXBlX2luc3RhbmNlX2ZsYWdfdmFsdWUKICAjZGVmaW5l IFRZUEVfT1dORVIodCkgVFlQRV9NQUlOX1RZUEUodCktPm93bmVyCiAgI2RlZmluZSBUWVBFX09C SkZJTEUodCkgKFRZUEVfT0JKRklMRV9PV05FRCh0KT8gVFlQRV9PV05FUih0KS5vYmpmaWxlIDog TlVMTCkKICAKQEAgLTk2NzQsNyArMTAxMjAsNyBAQCBpbmRleCBiZTZlZDU1Li5jZjhjNGQ4IDEw MDY0NAogIC8qIENvbnN0YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRp bmcgdHlwZSBoYXMgYQogICAqIGNvbnN0IG1vZGlmaWVyLgogICAqLwotQEAgLTM2NSw2ICs0MTIs MTMgQEAgc3RydWN0IG1haW5fdHlwZQorQEAgLTM2NSw2ICs0MTQsMTMgQEAgc3RydWN0IG1haW5f dHlwZQogICAgdW5zaWduZWQgaW50IGZsYWdfbm90dGV4dCA6IDE7CiAgICB1bnNpZ25lZCBpbnQg ZmxhZ19maXhlZF9pbnN0YW5jZSA6IDE7CiAgICB1bnNpZ25lZCBpbnQgZmxhZ19vYmpmaWxlX293 bmVkIDogMTsKQEAgLTk2ODgsNyArMTAxMzQsNyBAQCBpbmRleCBiZTZlZDU1Li5jZjhjNGQ4IDEw MDY0NAogIAogICAgLyogTnVtYmVyIG9mIGZpZWxkcyBkZXNjcmliZWQgZm9yIHRoaXMgdHlwZS4g IFRoaXMgZmllbGQgYXBwZWFycyBhdAogICAgICAgdGhpcyBsb2NhdGlvbiBiZWNhdXNlIGl0IHBh Y2tzIG5pY2VseSBoZXJlLiAgKi8KLUBAIC00MzEsNiArNDg1LDIwIEBAIHN0cnVjdCBtYWluX3R5 cGUKK0BAIC00MzEsNiArNDg3LDIwIEBAIHN0cnVjdCBtYWluX3R5cGUKICAKICAgIHN0cnVjdCB0 eXBlICp0YXJnZXRfdHlwZTsKICAKQEAgLTk3MDksNyArMTAxNTUsMTcgQEAgaW5kZXggYmU2ZWQ1 NS4uY2Y4YzRkOCAxMDA2NDQKICAgIC8qIEZvciBzdHJ1Y3R1cmUgYW5kIHVuaW9uIHR5cGVzLCBh IGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQuCiAgICAgICBGb3Igc2V0IGFuZCBwYXNjYWwgYXJy YXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmllbGQiLAogICAgICAgd2hvc2UgdHlwZSBpcyB0aGUg ZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBhcnJheS4KLUBAIC04MTIsOSArODgwLDkgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfY3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworQEAg LTUzOCw2ICs2MDgsOSBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgICAgICAgIHN1cHBvcnRpbmcgbXVs dGlwbGUgQUJJcy4gIFJpZ2h0IG5vdyB0aGlzIGlzIG9ubHkgZmV0Y2hlZCBmcm9tCisgICAgICAg IHRoZSBEd2FyZi0yIERXX0FUX2NhbGxpbmdfY29udmVudGlvbiBhdHRyaWJ1dGUuICAqLworICAg ICB1bnNpZ25lZCBjYWxsaW5nX2NvbnZlbnRpb247CisrCisrICAgIC8qIEZvciBUWVBFX0NPREVf TU9EVUxFLCB0aGUgbGlzdCBvZiBzeW1ib2xzIGNvbnRhaW5lZCBpbiB0aGUgbW9kdWxlLiAgKi8K KysgICAgc3RydWN0IGJsb2NrICptb2R1bGVfYmxvY2s7CisgICB9IHR5cGVfc3BlY2lmaWM7Cisg fTsKKyAKK0BAIC04MTIsOSArODg1LDkgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfY3BsdXNfc3Ry dWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOwogICNkZWZpbmUgVFlQRV9QT0lOVEVSX1RZUEUodGhp c3R5cGUpICh0aGlzdHlwZSktPnBvaW50ZXJfdHlwZQogICNkZWZpbmUgVFlQRV9SRUZFUkVOQ0Vf VFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cmVmZXJlbmNlX3R5cGUKICAjZGVmaW5lIFRZUEVf Q0hBSU4odGhpc3R5cGUpICh0aGlzdHlwZSktPmNoYWluCkBAIC05NzIyLDcgKzEwMTc4LDcgQEAg aW5kZXggYmU2ZWQ1NS4uY2Y4YzRkOCAxMDA2NDQKICAgICBjYWxscyBjaGVja190eXBlZGVmLCBU WVBFX0xFTkdUSCAoVkFMVUVfVFlQRSAoWCkpIGlzIHNhZmUuICAqLwogICNkZWZpbmUgVFlQRV9M RU5HVEgodGhpc3R5cGUpICh0aGlzdHlwZSktPmxlbmd0aAogIC8qIE5vdGUgdGhhdCBUWVBFX0NP REUgY2FuIGJlIFRZUEVfQ09ERV9UWVBFREVGLCBzbyBpZiB5b3Ugd2FudCB0aGUgcmVhbAotQEAg LTgyMywyMyArODkxLDQ0IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2NwbHVzX3N0cnVjdF90eXBl IChzdHJ1Y3QgdHlwZSAqKTsKK0BAIC04MjMsMjMgKzg5Niw0NCBAQCBleHRlcm4gdm9pZCBhbGxv Y2F0ZV9jcGx1c19zdHJ1Y3RfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBUWVBFX05G SUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+bmZpZWxkcwogICNkZWZp bmUgVFlQRV9GSUVMRFModGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ZmllbGRz CiAgI2RlZmluZSBUWVBFX1RFTVBMQVRFX0FSR1ModGhpc3R5cGUpIFRZUEVfQ1BMVVNfU1BFQ0lG SUModGhpc3R5cGUpLT50ZW1wbGF0ZV9hcmdzCkBAIC05Nzc3LDcgKzEwMjMzLDE1IEBAIGluZGV4 IGJlNmVkNTUuLmNmOGM0ZDggMTAwNjQ0CiAgCiAgLyogQysrICovCiAgCi1AQCAtMTEzMSw3ICsx MjIwLDcgQEAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBmbG9hdGZvcm1hdCAqZmxvYXRmb3JtYXRzX2li bV9sb25nX2RvdWJsZVtCRkRfRU5ESUFOX1VOS05PV04KK0BAIC04NTUsNiArOTQ5LDcgQEAgZXh0 ZXJuIHZvaWQgYWxsb2NhdGVfY3BsdXNfc3RydWN0X3R5cGUgKHN0cnVjdCB0eXBlICopOworICNk ZWZpbmUgVFlQRV9DUExVU19TUEVDSUZJQyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5 cGUpLT50eXBlX3NwZWNpZmljLmNwbHVzX3N0dWZmCisgI2RlZmluZSBUWVBFX0ZMT0FURk9STUFU KHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMuZmxvYXRm b3JtYXQKKyAjZGVmaW5lIFRZUEVfQ0FMTElOR19DT05WRU5USU9OKHRoaXN0eXBlKSBUWVBFX01B SU5fVFlQRSh0aGlzdHlwZSktPnR5cGVfc3BlY2lmaWMuY2FsbGluZ19jb252ZW50aW9uCisrI2Rl ZmluZSBUWVBFX01PRFVMRV9CTE9DSyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUp LT50eXBlX3NwZWNpZmljLm1vZHVsZV9ibG9jaworICNkZWZpbmUgVFlQRV9CQVNFQ0xBU1ModGhp c3R5cGUsaW5kZXgpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+ZmllbGRzW2luZGV4XS50eXBl CisgI2RlZmluZSBUWVBFX05fQkFTRUNMQVNTRVModGhpc3R5cGUpIFRZUEVfQ1BMVVNfU1BFQ0lG SUModGhpc3R5cGUpLT5uX2Jhc2VjbGFzc2VzCisgI2RlZmluZSBUWVBFX0JBU0VDTEFTU19OQU1F KHRoaXN0eXBlLGluZGV4KSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZpZWxkc1tpbmRleF0u bmFtZQorQEAgLTExMzEsNyArMTIyNiw3IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgZmxvYXRmb3Jt YXQgKmZsb2F0Zm9ybWF0c19pYm1fbG9uZ19kb3VibGVbQkZEX0VORElBTl9VTktOT1dOCiAgICAg VXNlIGFsbG9jX3R5cGVfYXJjaCB0byBhbGxvY2F0ZSBhIHR5cGUgb3duZWQgYnkgYW4gYXJjaGl0 ZWN0dXJlLgogICAgIFVzZSBhbGxvY190eXBlX2NvcHkgdG8gYWxsb2NhdGUgYSB0eXBlIHdpdGgg dGhlIHNhbWUgb3duZXIgYXMgYQogICAgIHByZS1leGlzdGluZyB0ZW1wbGF0ZSB0eXBlLCBubyBt YXR0ZXIgd2hldGhlciBvYmpmaWxlIG9yIGdkYmFyY2guICAqLwpAQCAtOTc4Niw3ICsxMDI1MCw3 IEBAIGluZGV4IGJlNmVkNTUuLmNmOGM0ZDggMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICph bGxvY190eXBlX2FyY2ggKHN0cnVjdCBnZGJhcmNoICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAq YWxsb2NfdHlwZV9jb3B5IChjb25zdCBzdHJ1Y3QgdHlwZSAqKTsKICAKLUBAIC0xMjI2LDYgKzEz MTUsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHR5cGUgKiwKK0BAIC0xMjI2LDYgKzEzMjEsMTggQEAgZXh0ZXJuIHN0cnVj dCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwK ICAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3Vw X2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTk4MDUs NyArMTAyNjksNyBAQCBpbmRleCBiZTZlZDU1Li5jZjhjNGQ4IDEwMDY0NAogIGV4dGVybiBzdHJ1 Y3QgdHlwZSAqY3JlYXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAq LAogIAkJCQkJc3RydWN0IHR5cGUgKik7CiAgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfc3Ry aW5nX3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKLUBAIC0xMjYyLDYgKzEz NjMsOCBAQCBleHRlcm4gaW50IGdldF9kaXNjcmV0ZV9ib3VuZHMgKHN0cnVjdCB0eXBlICosIExP TkdFU1QgKiwgTE9OR0VTVCAqKTsKK0BAIC0xMjYyLDYgKzEzNjksOCBAQCBleHRlcm4gaW50IGdl dF9kaXNjcmV0ZV9ib3VuZHMgKHN0cnVjdCB0eXBlICosIExPTkdFU1QgKiwgTE9OR0VTVCAqKTsK ICAKICBleHRlcm4gaW50IGlzX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAq KTsKICAKQEAgLTk4MTQsNyArMTAyNzgsNyBAQCBpbmRleCBiZTZlZDU1Li5jZjhjNGQ4IDEwMDY0 NAogIC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KICAKICAjZGVmaW5lIExFTkdUSF9NQVRDSChi dikgKChidiktPnJhbmtbMF0pCi1AQCAtMTMyNCwxMCArMTQyNywxNSBAQCBleHRlcm4gdm9pZCBt YWludGVuYW5jZV9wcmludF90eXBlIChjaGFyICosIGludCk7CitAQCAtMTMyNCwxMCArMTQzMywx NSBAQCBleHRlcm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFyICosIGludCk7CiAg CiAgZXh0ZXJuIGh0YWJfdCBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlKTsKICAKQEAgLTk5MTEsNyArMTAzNzUsNyBAQCBpbmRleCA2YjY4ZTdkLi41MDk1 MTgwIDEwMDY0NAogICAgZHVtcF9zdWJleHBfYm9keV9zdGFuZGFyZCwKICAgIGV2YWx1YXRlX3N1 YmV4cF9qYXZhCiBkaWZmIC0tZ2l0IGEvZ2RiL2xhbmd1YWdlLmggYi9nZGIvbGFuZ3VhZ2UuaAot aW5kZXggYmEzN2ZhYS4uYThlNDFkMiAxMDA2NDQKK2luZGV4IGM2NTBlMDcuLjY2MGZkZjYgMTAw NjQ0CiAtLS0gYS9nZGIvbGFuZ3VhZ2UuaAogKysrIGIvZ2RiL2xhbmd1YWdlLmgKIEBAIC0yMzcs NyArMjM3LDYgQEAgc3RydWN0IGxhbmd1YWdlX2RlZm4KQEAgLTk5MjMsNyArMTAzODcsNyBAQCBp bmRleCBiYTM3ZmFhLi5hOGU0MWQyIDEwMDY0NAogIAkJCQkJCSBjb25zdCBkb21haW5fZW51bSk7 CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL2xpbmVzcGVjLmMgYi9nZGIvbGluZXNwZWMuYwotaW5kZXgg ZGViZTg2Zi4uZTE3YTBiNiAxMDA2NDQKK2luZGV4IDNlOTQzYTEuLjNiODk1NmMgMTAwNjQ0CiAt LS0gYS9nZGIvbGluZXNwZWMuYwogKysrIGIvZ2RiL2xpbmVzcGVjLmMKIEBAIC0zMCw2ICszMCw3 IEBACkBAIC05OTM0LDcgKzEwMzk4LDcgQEAgaW5kZXggZGViZTg2Zi4uZTE3YTBiNiAxMDA2NDQK ICAjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKICAjaW5jbHVkZSAiYmxvY2suaCIKICAjaW5jbHVk ZSAib2JqYy1sYW5nLmgiCi1AQCAtODQwLDEzICs4NDEsMzMgQEAgZGVjb2RlX2xpbmVfMSAoY2hh ciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IHN5bXRhYiAqZGVmYXVsdF9zeW10 YWIsCitAQCAtODM5LDEzICs4NDAsMzMgQEAgZGVjb2RlX2xpbmVfMSAoY2hhciAqKmFyZ3B0ciwg aW50IGZ1bmZpcnN0bGluZSwgc3RydWN0IHN5bXRhYiAqZGVmYXVsdF9zeW10YWIsCiAgICAgIH0K ICAgIGVsc2UgaWYgKHBhcmVuX3BvaW50ZXIgIT0gTlVMTCkKICAgICAgewpAQCAtOTk2OSw3ICsx MDQzMyw3IEBAIGluZGV4IGRlYmU4NmYuLmUxN2EwYjYgMTAwNjQ0CiAgICAvKiBLZWVwIGFueSB0 ZW1wbGF0ZSBwYXJhbWV0ZXJzICovCiAgICBpZiAoKnAgPT0gJzwnKQogICAgICBwID0gZmluZF90 ZW1wbGF0ZV9uYW1lX2VuZCAocCk7Ci1AQCAtMTI1OCw3ICsxMjc5LDEwIEBAIGRlY29kZV9jb21w b3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmljYWws CitAQCAtMTI1Nyw3ICsxMjc4LDEwIEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwg aW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmljYWwsCiAgICAgICAgLyogTW92ZSBwb2lu dGVyIGFoZWFkIHRvIG5leHQgZG91YmxlLWNvbG9uLiAgKi8KICAgICAgICB3aGlsZSAoKnAgJiYg KHBbMF0gIT0gJyAnKSAmJiAocFswXSAhPSAnXHQnKSAmJiAocFswXSAhPSAnXCcnKSkKICAJewpA QCAtOTk4MSw3ICsxMDQ0NSw3IEBAIGluZGV4IGRlYmU4NmYuLmUxN2EwYjYgMTAwNjQ0CiAgCSAg ICB7CiAgCSAgICAgIHRlbXBfZW5kID0gZmluZF90ZW1wbGF0ZV9uYW1lX2VuZCAocCk7CiAgCSAg ICAgIGlmICghdGVtcF9lbmQpCi1AQCAtMTMzNSw2ICsxMzU5LDE2IEBAIGRlY29kZV9jb21wb3Vu ZCAoY2hhciAqKmFyZ3B0ciwgaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmljYWwsCitA QCAtMTMzNCw2ICsxMzU4LDE2IEBAIGRlY29kZV9jb21wb3VuZCAoY2hhciAqKmFyZ3B0ciwgaW50 IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmljYWwsCiAgCSAgd2hpbGUgKCpwICYmICpwICE9 ICcgJyAmJiAqcCAhPSAnXHQnICYmICpwICE9ICcsJyAmJiAqcCAhPSAnOicpCiAgCSAgICBwKys7 CiAgCSAgLyogQXQgdGhpcyBwb2ludCBwLT4iIi4gIFN0cmluZyBlbmRlZC4gICovCkBAIC05OTk4 LDcgKzEwNDYyLDcgQEAgaW5kZXggZGViZTg2Zi4uZTE3YTBiNiAxMDA2NDQKICAJfQogIAogICAg ICAgIC8qIEFsbG9jYXRlIG91ciBvd24gY29weSBvZiB0aGUgc3Vic3RyaW5nIGJldHdlZW4gYXJn cHRyIGFuZAotQEAgLTE0MDgsNiArMTQ0Miw3IEBAIGxvb2t1cF9wcmVmaXhfc3ltIChjaGFyICoq YXJncHRyLCBjaGFyICpwKQorQEAgLTE0MDcsNiArMTQ0MSw3IEBAIGxvb2t1cF9wcmVmaXhfc3lt IChjaGFyICoqYXJncHRyLCBjaGFyICpwKQogIHsKICAgIGNoYXIgKnAxOwogICAgY2hhciAqY29w eTsKQEAgLTEwMDA2LDcgKzEwNDcwLDcgQEAgaW5kZXggZGViZTg2Zi4uZTE3YTBiNiAxMDA2NDQK ICAKICAgIC8qIEV4dHJhY3QgdGhlIGNsYXNzIG5hbWUuICAqLwogICAgcDEgPSBwOwotQEAgLTE0 MjYsNyArMTQ2MSwyNiBAQCBsb29rdXBfcHJlZml4X3N5bSAoY2hhciAqKmFyZ3B0ciwgY2hhciAq cCkKK0BAIC0xNDI1LDcgKzE0NjAsMjYgQEAgbG9va3VwX3ByZWZpeF9zeW0gKGNoYXIgKiphcmdw dHIsIGNoYXIgKnApCiAgICAvKiBBdCB0aGlzIHBvaW50IHAxLT4iOjppbkE6OmZ1biIsIHAtPiJp bkE6OmZ1biIgY29weS0+IkFBQSIsCiAgICAgICBhcmdwdHItPiJpbkE6OmZ1biIgKi8KICAKQEAg LTEwMDM0LDcgKzEwNDk4LDcgQEAgaW5kZXggZGViZTg2Zi4uZTE3YTBiNiAxMDA2NDQKICB9CiAg CiAgLyogVGhpcyBmaW5kcyB0aGUgbWV0aG9kIENPUFkgaW4gdGhlIGNsYXNzIHdob3NlIHR5cGUg aXMgVCBhbmQgd2hvc2UKLUBAIC0xNzgxLDcgKzE4MzUsNyBAQCBzeW1ib2xfZm91bmQgKGludCBm dW5maXJzdGxpbmUsIGNoYXIgKioqY2Fub25pY2FsLCBjaGFyICpjb3B5LAorQEAgLTE3ODAsNyAr MTgzNCw3IEBAIHN5bWJvbF9mb3VuZCAoaW50IGZ1bmZpcnN0bGluZSwgY2hhciAqKipjYW5vbmlj YWwsIGNoYXIgKmNvcHksCiAgCXsKICAJICBzdHJ1Y3QgYmxvY2t2ZWN0b3IgKmJ2ID0gQkxPQ0tW RUNUT1IgKFNZTUJPTF9TWU1UQUIgKHN5bSkpOwogIAkgIHN0cnVjdCBibG9jayAqYiA9IEJMT0NL VkVDVE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsKQEAgLTEwMjQ5LDEwICsxMDcxMyw3OSBA QCBpbmRleCBhYWM4MmU5Li42MjYyOTJjIDEwMDY0NAogICAgVFlQRV9DUExVU19TUEVDSUZJQyAo dCkgPSAoc3RydWN0IGNwbHVzX3N0cnVjdF90eXBlICopICZjcGx1c19zdHJ1Y3RfZGVmYXVsdDsK ICAgIHJldHVybiB0OwogZGlmZiAtLWdpdCBhL2dkYi9taS9taS1jbWQtdmFyLmMgYi9nZGIvbWkv bWktY21kLXZhci5jCi1pbmRleCAwY2YwM2Q5Li4xOTEzYzQ5IDEwMDY0NAoraW5kZXggMGNmMDNk OS4uZDZhODVkOSAxMDA2NDQKIC0tLSBhL2dkYi9taS9taS1jbWQtdmFyLmMKICsrKyBiL2dkYi9t aS9taS1jbWQtdmFyLmMKLUBAIC0zNjksMjQgKzM2OSwzNSBAQCBtaV9jbWRfdmFyX2xpc3RfY2hp bGRyZW4gKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKK0BAIC00MSw3ICs0 MSw3IEBAIHN0YXRpYyB2b2lkIHZhcm9ial91cGRhdGVfb25lIChzdHJ1Y3QgdmFyb2JqICp2YXIs CisgCQkJICAgICAgZW51bSBwcmludF92YWx1ZXMgcHJpbnRfdmFsdWVzLAorIAkJCSAgICAgIGlu dCBleHBsaWNpdCk7CisgCistc3RhdGljIGludCBtaV9wcmludF92YWx1ZV9wIChzdHJ1Y3QgdHlw ZSAqdHlwZSwgZW51bSBwcmludF92YWx1ZXMgcHJpbnRfdmFsdWVzKTsKKytzdGF0aWMgaW50IG1p X3ByaW50X3ZhbHVlX3AgKHN0cnVjdCB2YXJvYmogKnZhciwgZW51bSBwcmludF92YWx1ZXMgcHJp bnRfdmFsdWVzKTsKKyAKKyAvKiBQcmludCB2YXJpYWJsZSBvYmplY3QgVkFSLiAgVGhlIFBSSU5U X1ZBTFVFUyBwYXJhbWV0ZXIgY29udHJvbHMKKyAgICBpZiB0aGUgdmFsdWUgc2hvdWxkIGJlIHBy aW50ZWQuICBUaGUgUFJJTlRfRVhQUkVTU0lPTiBwYXJhbWV0ZXIKK0BAIC01OSw4ICs1OSwxMiBA QCBwcmludF92YXJvYmogKHN0cnVjdCB2YXJvYmogKnZhciwgZW51bSBwcmludF92YWx1ZXMgcHJp bnRfdmFsdWVzLAorICAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImV4cCIsIHZhcm9i al9nZXRfZXhwcmVzc2lvbiAodmFyKSk7CisgICB1aV9vdXRfZmllbGRfaW50ICh1aW91dCwgIm51 bWNoaWxkIiwgdmFyb2JqX2dldF9udW1fY2hpbGRyZW4gKHZhcikpOworICAgCistICBpZiAobWlf cHJpbnRfdmFsdWVfcCAodmFyb2JqX2dldF9nZGJfdHlwZSAodmFyKSwgcHJpbnRfdmFsdWVzKSkK Ky0gICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ2YWx1ZSIsIHZhcm9ial9nZXRfdmFs dWUgKHZhcikpOworKyAgaWYgKG1pX3ByaW50X3ZhbHVlX3AgKHZhciwgcHJpbnRfdmFsdWVzKSkK KysgICAgeworKyAgICAgIGNoYXIgKnZhbCA9IHZhcm9ial9nZXRfdmFsdWUgKHZhcik7CisrICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ2YWx1ZSIsIHZhbCk7CisrICAgICAgeGZy ZWUgKHZhbCk7CisrICAgIH0KKyAKKyAgIHR5cGUgPSB2YXJvYmpfZ2V0X3R5cGUgKHZhcik7Cisg ICBpZiAodHlwZSAhPSBOVUxMKQorQEAgLTIyMyw2ICsyMjcsNyBAQCBtaV9jbWRfdmFyX3NldF9m b3JtYXQgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKKyB7CisgICBlbnVt IHZhcm9ial9kaXNwbGF5X2Zvcm1hdHMgZm9ybWF0OworICAgc3RydWN0IHZhcm9iaiAqdmFyOwor KyAgY2hhciAqdmFsOworIAorICAgaWYgKGFyZ2MgIT0gMikKKyAgICAgZXJyb3IgKF8oIm1pX2Nt ZF92YXJfc2V0X2Zvcm1hdDogVXNhZ2U6IE5BTUUgRk9STUFULiIpKTsKK0BAIC0yMzksNyArMjQ0 LDkgQEAgbWlfY21kX3Zhcl9zZXRfZm9ybWF0IChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwg aW50IGFyZ2MpCisgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgImZvcm1hdCIsIHZhcm9i al9mb3JtYXRfc3RyaW5nWyhpbnQpIGZvcm1hdF0pOworICAKKyAgIC8qIFJlcG9ydCB0aGUgdmFs dWUgaW4gdGhlIG5ldyBmb3JtYXQgKi8KKy0gIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAi dmFsdWUiLCB2YXJvYmpfZ2V0X3ZhbHVlICh2YXIpKTsKKysgIHZhbCA9IHZhcm9ial9nZXRfdmFs dWUgKHZhcik7CisrICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInZhbHVlIiwgdmFsKTsK KysgIHhmcmVlICh2YWwpOworIH0KKyAKKyB2b2lkCitAQCAtMzM3LDExICszNDQsMTIgQEAgTXVz dCBiZTogMCBvciBcIiVzXCIsIDEgb3IgXCIlc1wiLCAyIG9yIFwiJXNcIiIpLAorIH0KKyAKKyAv KiBSZXR1cm4gMSBpZiBnaXZlbiB0aGUgYXJndW1lbnQgUFJJTlRfVkFMVUVTIHdlIHNob3VsZCBk aXNwbGF5CistICAgYSB2YWx1ZSBvZiB0eXBlIFRZUEUuICAqLworKyAgIHRoZSB2YXJvYmogVkFS LiAgKi8KKyAKKyBzdGF0aWMgaW50CistbWlfcHJpbnRfdmFsdWVfcCAoc3RydWN0IHR5cGUgKnR5 cGUsIGVudW0gcHJpbnRfdmFsdWVzIHByaW50X3ZhbHVlcykKKyttaV9wcmludF92YWx1ZV9wIChz dHJ1Y3QgdmFyb2JqICp2YXIsIGVudW0gcHJpbnRfdmFsdWVzIHByaW50X3ZhbHVlcykKKyB7Cisr ICBzdHJ1Y3QgdHlwZSAqdHlwZTsKKyAKKyAgIGlmIChwcmludF92YWx1ZXMgPT0gUFJJTlRfTk9f VkFMVUVTKQorICAgICByZXR1cm4gMDsKK0BAIC0zNDksNiArMzU3LDEwIEBAIG1pX3ByaW50X3Zh bHVlX3AgKHN0cnVjdCB0eXBlICp0eXBlLCBlbnVtIHByaW50X3ZhbHVlcyBwcmludF92YWx1ZXMp CisgICBpZiAocHJpbnRfdmFsdWVzID09IFBSSU5UX0FMTF9WQUxVRVMpCisgICAgIHJldHVybiAx OworIAorKyAgaWYgKHZhcm9ial9wcmV0dHlfcHJpbnRlZF9wICh2YXIpKQorKyAgICByZXR1cm4g MTsKKysKKysgIHR5cGUgPSB2YXJvYmpfZ2V0X2dkYl90eXBlICh2YXIpOworICAgaWYgKHR5cGUg PT0gTlVMTCkKKyAgICAgcmV0dXJuIDE7CisgICBlbHNlCitAQCAtMzY5LDI0ICszODEsMzUgQEAg bWlfY21kX3Zhcl9saXN0X2NoaWxkcmVuIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50 IGFyZ2MpCiAgICBzdHJ1Y3QgdmFyb2JqICp2YXI7ICAKICAgIFZFQyh2YXJvYmpfcCkgKmNoaWxk cmVuOwogICAgc3RydWN0IHZhcm9iaiAqY2hpbGQ7CkBAIC0xMDI5NCw3ICsxMDgyNyw3IEBAIGlu ZGV4IDBjZjAzZDkuLjE5MTNjNDkgMTAwNjQ0CiAgICAgIHByaW50X3ZhbHVlcyA9IG1pX3BhcnNl X3ZhbHVlc19vcHRpb24gKGFyZ3ZbMF0pOwogICAgZWxzZQogICAgICBwcmludF92YWx1ZXMgPSBQ UklOVF9OT19WQUxVRVM7Ci1AQCAtMzk4LDIxICs0MDksMjggQEAgbWlfY21kX3Zhcl9saXN0X2No aWxkcmVuIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCitAQCAtMzk4LDIx ICs0MjEsMjggQEAgbWlfY21kX3Zhcl9saXN0X2NoaWxkcmVuIChjaGFyICpjb21tYW5kLCBjaGFy ICoqYXJndiwgaW50IGFyZ2MpCiAgICAgICAgeGZyZWUgKGRpc3BsYXlfaGludCk7CiAgICAgIH0K ICAKQEAgLTEwMzM2LDcgKzEwODY5LDQ2IEBAIGluZGV4IDBjZjAzZDkuLjE5MTNjNDkgMTAwNjQ0 CiAgfQogIAogIHZvaWQKLUBAIC02NDQsNyArNjYyLDYgQEAgbWlfY21kX3Zhcl91cGRhdGUgKGNo YXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKK0BAIC01MzgsMTYgKzU2OCwyNCBA QCBtaV9jbWRfdmFyX2V2YWx1YXRlX2V4cHJlc3Npb24gKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiph cmd2LCBpbnQgYXJnYykKKyAgIHZhciA9IHZhcm9ial9nZXRfaGFuZGxlIChhcmd2W29wdGluZF0p OworICAgIAorICAgaWYgKGZvcm1hdEZvdW5kKQorLSAgICB1aV9vdXRfZmllbGRfc3RyaW5nICh1 aW91dCwgInZhbHVlIiwgdmFyb2JqX2dldF9mb3JtYXR0ZWRfdmFsdWUgKHZhciwgZm9ybWF0KSk7 CisrICAgIHsKKysgICAgICBjaGFyICp2YWwgPSB2YXJvYmpfZ2V0X2Zvcm1hdHRlZF92YWx1ZSAo dmFyLCBmb3JtYXQpOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidmFsdWUi LCB2YWwpOworKyAgICAgIHhmcmVlICh2YWwpOworKyAgICB9CisgICBlbHNlCistICAgIHVpX291 dF9maWVsZF9zdHJpbmcgKHVpb3V0LCAidmFsdWUiLCB2YXJvYmpfZ2V0X3ZhbHVlICh2YXIpKTsK KysgICAgeworKyAgICAgIGNoYXIgKnZhbCA9IHZhcm9ial9nZXRfdmFsdWUgKHZhcik7CisrICAg ICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ2YWx1ZSIsIHZhbCk7CisrICAgICAgeGZy ZWUgKHZhbCk7CisrICAgIH0KKyB9CisgCisgdm9pZAorIG1pX2NtZF92YXJfYXNzaWduIChjaGFy ICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCisgeworICAgc3RydWN0IHZhcm9iaiAq dmFyOworLSAgY2hhciAqZXhwcmVzc2lvbjsKKysgIGNoYXIgKmV4cHJlc3Npb24sICp2YWw7Cisg CisgICBpZiAoYXJnYyAhPSAyKQorICAgICBlcnJvciAoXygibWlfY21kX3Zhcl9hc3NpZ246IFVz YWdlOiBOQU1FIEVYUFJFU1NJT04uIikpOworQEAgLTU2Myw3ICs2MDEsOSBAQCBtaV9jbWRfdmFy X2Fzc2lnbiAoY2hhciAqY29tbWFuZCwgY2hhciAqKmFyZ3YsIGludCBhcmdjKQorICAgaWYgKCF2 YXJvYmpfc2V0X3ZhbHVlICh2YXIsIGV4cHJlc3Npb24pKQorICAgICBlcnJvciAoXygibWlfY21k X3Zhcl9hc3NpZ246IENvdWxkIG5vdCBhc3NpZ24gZXhwcmVzc2lvbiB0byB2YXJpYWJsZSBvYmpl Y3QiKSk7CisgCistICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInZhbHVlIiwgdmFyb2Jq X2dldF92YWx1ZSAodmFyKSk7CisrICB2YWwgPSB2YXJvYmpfZ2V0X3ZhbHVlICh2YXIpOworKyAg dWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ2YWx1ZSIsIHZhbCk7CisrICB4ZnJlZSAodmFs KTsKKyB9CisgCisgLyogVHlwZSB1c2VkIGZvciBwYXJhbWV0ZXJzIHBhc3NpbmcgdG8gbWlfY21k X3Zhcl91cGRhdGVfaXRlci4gICovCitAQCAtNjQ0LDcgKzY4NCw2IEBAIG1pX2NtZF92YXJfdXBk YXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCiAgICAgIH0KICAgIGVs c2UKICAgICAgewpAQCAtMTAzNDQsNyArMTA5MTYsMjIgQEAgaW5kZXggMGNmMDNkOS4uMTkxM2M0 OSAxMDA2NDQKICAgICAgICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAo bmFtZSk7CiAgCiAgICAgICAgdmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJpbnRfdmFsdWVzLCAx IC8qIGV4cGxpY2l0ICovKTsKLUBAIC02OTksMTEgKzcxNiwxMSBAQCB2YXJvYmpfdXBkYXRlX29u ZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBlbnVtIHByaW50X3ZhbHVlcyBwcmludF92YWx1ZXMsCitA QCAtNjc4LDggKzcxNywxMiBAQCB2YXJvYmpfdXBkYXRlX29uZSAoc3RydWN0IHZhcm9iaiAqdmFy LCBlbnVtIHByaW50X3ZhbHVlcyBwcmludF92YWx1ZXMsCisgICAgICAgc3dpdGNoIChyLT5zdGF0 dXMpCisgCXsKKyAJY2FzZSBWQVJPQkpfSU5fU0NPUEU6CistCSAgaWYgKG1pX3ByaW50X3ZhbHVl X3AgKHZhcm9ial9nZXRfZ2RiX3R5cGUgKHItPnZhcm9iaiksIHByaW50X3ZhbHVlcykpCistCSAg ICB1aV9vdXRfZmllbGRfc3RyaW5nICh1aW91dCwgInZhbHVlIiwgdmFyb2JqX2dldF92YWx1ZSAo ci0+dmFyb2JqKSk7CisrCSAgaWYgKG1pX3ByaW50X3ZhbHVlX3AgKHItPnZhcm9iaiwgcHJpbnRf dmFsdWVzKSkKKysJICAgIHsKKysJICAgICAgY2hhciAqdmFsID0gdmFyb2JqX2dldF92YWx1ZSAo ci0+dmFyb2JqKTsKKysJICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlvdXQsICJ2YWx1ZSIs IHZhbCk7CisrCSAgICAgIHhmcmVlICh2YWwpOworKwkgICAgfQorIAkgIHVpX291dF9maWVsZF9z dHJpbmcgKHVpb3V0LCAiaW5fc2NvcGUiLCAidHJ1ZSIpOworIAkgIGJyZWFrOworICAgICAgICAg Y2FzZSBWQVJPQkpfTk9UX0lOX1NDT1BFOgorQEAgLTY5OSwxMSArNzQyLDExIEBAIHZhcm9ial91 cGRhdGVfb25lIChzdHJ1Y3QgdmFyb2JqICp2YXIsIGVudW0gcHJpbnRfdmFsdWVzIHByaW50X3Zh bHVlcywKICAJfQogIAogICAgICAgIGlmIChyLT50eXBlX2NoYW5nZWQpCkBAIC0xMDM2MSw3ICsx MDk0OCw3IEBAIGluZGV4IDBjZjAzZDkuLjE5MTNjNDkgMTAwNjQ0CiAgCiAgICAgICAgZGlzcGxh eV9oaW50ID0gdmFyb2JqX2dldF9kaXNwbGF5X2hpbnQgKHZhcik7CiAgICAgICAgaWYgKGRpc3Bs YXlfaGludCkKLUBAIC03MTQsMjYgKzczMSw1OCBAQCB2YXJvYmpfdXBkYXRlX29uZSAoc3RydWN0 IHZhcm9iaiAqdmFyLCBlbnVtIHByaW50X3ZhbHVlcyBwcmludF92YWx1ZXMsCitAQCAtNzE0LDI2 ICs3NTcsNTggQEAgdmFyb2JqX3VwZGF0ZV9vbmUgKHN0cnVjdCB2YXJvYmogKnZhciwgZW51bSBw cmludF92YWx1ZXMgcHJpbnRfdmFsdWVzLAogIAogICAgICAgIGlmIChyLT5jaGlsZHJlbl9jaGFu Z2VkKQogIAl7CkBAIC0xMDQ5Nyw3ICsxMTA4NCw3IEBAIGluZGV4IGE4NDAwM2YuLjkyNGMxYzUg MTAwNjQ0CiAgICBkZWZhdWx0X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6IGR1bW15 IEZJWE1FIHRpbCBpbXBsZW0gc3ltIHJlbG9jICovCiAgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVu dHMsCS8qIHN5bV9zZWdtZW50czogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbQogZGlmZiAt LWdpdCBhL2dkYi9vYmpmaWxlcy5jIGIvZ2RiL29iamZpbGVzLmMKLWluZGV4IDU4NmY1ZDAuLjZk MDQ1MWMgMTAwNjQ0CitpbmRleCA5MmRiNjVlLi40ZDM5MTEyIDEwMDY0NAogLS0tIGEvZ2RiL29i amZpbGVzLmMKICsrKyBiL2dkYi9vYmpmaWxlcy5jCiBAQCAtNTAsNyArNTAsNiBAQApAQCAtMTA1 MjUsNyArMTExMTIsNyBAQCBpbmRleCA1ODZmNWQwLi42ZDA0NTFjIDEwMDY0NAogICAgLyogQmVm b3JlIHRoZSBzeW1ib2wgdGFibGUgY29kZSB3YXMgcmVkb25lIHRvIG1ha2UgaXQgZWFzaWVyIHRv CiAgICAgICBzZWxlY3RpdmVseSBsb2FkIGFuZCByZW1vdmUgaW5mb3JtYXRpb24gcGFydGljdWxh ciB0byBhIHNwZWNpZmljCiAgICAgICBsaW5rYWdlIHVuaXQsIGdkYiB1c2VkIHRvIGRvIHRoZXNl IHRoaW5ncyB3aGVuZXZlciB0aGUgbW9ub2xpdGhpYwotQEAgLTcxNCw2ICs3MTUsMjAgQEAgaGF2 ZV9wYXJ0aWFsX3N5bWJvbHMgKHZvaWQpCitAQCAtNzE2LDYgKzcxNywyMCBAQCBoYXZlX3BhcnRp YWxfc3ltYm9scyAodm9pZCkKICAJcmV0dXJuIDE7CiAgICAgICAgfQogICAgfQpAQCAtMTI4OTQs MTAgKzEzNDgxLDEwIEBAIGluZGV4IDUyOGFjYTYuLjA0YjNmZDEgMTAwNjQ0CiAgICAgIHJldHVy biAtMTsKICAKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi1mcmFtZS5jIGIvZ2RiL3B5 dGhvbi9weXRob24tZnJhbWUuYwotaW5kZXggYTk3MDA5Zi4uM2QyZjYxZiAxMDA2NDQKK2luZGV4 IDI3OTQxNWMuLjVkOGNlMGEgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi1mcmFtZS5j CiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi1mcmFtZS5jCi1AQCAtMjAzLDEwICsyMDMsNTkgQEAg ZnJhcHlfcGMgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK0BAIC0yMDIsMTAgKzIw Miw1OSBAQCBmcmFweV9wYyAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogICAgcmV0 dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZyAocGMpOwogIH0KICAKQEAgLTEyOTU4LDcg KzEzNTQ1LDcgQEAgaW5kZXggYTk3MDA5Zi4uM2QyZjYxZiAxMDA2NDQKICBmcmFtZV9pbmZvX3Rv X2ZyYW1lX29iamVjdCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIHsKICAgIGZyYW1lX29i amVjdCAqZnJhbWVfb2JqOwotQEAgLTIzNiw3ICsyODUsNyBAQCBmcmFtZV9pbmZvX3RvX2ZyYW1l X29iamVjdCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorQEAgLTIzNSw3ICsyODQsNyBAQCBm cmFtZV9pbmZvX3RvX2ZyYW1lX29iamVjdCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogIAog ICAgZnJhbWVfb2JqLT5nZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKICAKQEAgLTEy OTY3LDcgKzEzNTU0LDcgQEAgaW5kZXggYTk3MDA5Zi4uM2QyZjYxZiAxMDA2NDQKICB9CiAgCiAg LyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLkZyYW1lLm9sZGVyIChzZWxmKSAtPiBnZGIuRnJhbWUu Ci1AQCAtMjk3LDcgKzM0NiwzMCBAQCBmcmFweV9uZXdlciAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzKQorQEAgLTI5Niw3ICszNDUsMzAgQEAgZnJhcHlfbmV3ZXIgKFB5T2JqZWN0ICpz ZWxmLCBQeU9iamVjdCAqYXJncykKICAgIHJldHVybiBuZXh0X29iajsKICB9CiAgCkBAIC0xMjk5 OSw3ICsxMzU4Niw3IEBAIGluZGV4IGE5NzAwOWYuLjNkMmY2MWYgMTAwNjQ0CiAgICAgUmV0dXJu cyB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHZhcmlhYmxlIGluIHRoaXMgZnJhbWUuICBUaGUgYXJn dW1lbnQgbXVzdCBiZQogICAgIGEgc3RyaW5nLiAgUmV0dXJucyBOb25lIGlmIEdEQiBjYW4ndCBm aW5kIHRoZSBzcGVjaWZpZWQgdmFyaWFibGUuICAqLwogIAotQEAgLTMxMyw3ICszODUsOSBAQCBm cmFweV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorQEAgLTMxMiw3 ICszODQsOSBAQCBmcmFweV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQogICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAiTyIsICZzeW1fb2JqKSkKICAgICAg cmV0dXJuIE5VTEw7CiAgCkBAIC0xMzAxMCw3ICsxMzU5Nyw3IEBAIGluZGV4IGE5NzAwOWYuLjNk MmY2MWYgMTAwNjQ0CiAgICAgIHsKICAgICAgICBjaGFyICp2YXJfbmFtZTsKICAgICAgICBzdHJ1 Y3QgYmxvY2sgKmJsb2NrID0gTlVMTDsKLUBAIC0zNjYsNiArNDQwLDI1IEBAIGZyYXB5X3JlYWRf dmFyIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitAQCAtMzY1LDYgKzQzOSwyNSBA QCBmcmFweV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogICAgUHlf UkVUVVJOX05PTkU7CiAgfQogIApAQCAtMTMwMzYsNyArMTM2MjMsNyBAQCBpbmRleCBhOTcwMDlm Li4zZDJmNjFmIDEwMDY0NAogIC8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5zZWxlY3RlZF9mcmFt ZSAoKSAtPiBnZGIuRnJhbWUuCiAgICAgUmV0dXJucyB0aGUgc2VsZWN0ZWQgZnJhbWUgb2JqZWN0 LiAgKi8KICAKLUBAIC0zNzMsNyArNDY2LDcgQEAgUHlPYmplY3QgKgorQEAgLTM3Miw3ICs0NjUs NyBAQCBQeU9iamVjdCAqCiAgZ2RicHlfc2VsZWN0ZWRfZnJhbWUgKFB5T2JqZWN0ICpzZWxmLCBQ eU9iamVjdCAqYXJncykKICB7CiAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWU7CkBAIC0xMzA0 NSw3ICsxMzYzMiw3IEBAIGluZGV4IGE5NzAwOWYuLjNkMmY2MWYgMTAwNjQ0CiAgICB2b2xhdGls ZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7CiAgCiAgICBUUllfQ0FUQ0ggKGV4Y2VwdCwg UkVUVVJOX01BU0tfQUxMKQotQEAgLTM4Myw3ICs0NzYsNyBAQCBnZGJweV9zZWxlY3RlZF9mcmFt ZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorQEAgLTM4Miw3ICs0NzUsNyBAQCBn ZGJweV9zZWxlY3RlZF9mcmFtZSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogICAg ICB9CiAgICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKICAKQEAgLTEzMDU0LDcg KzEzNjQxLDcgQEAgaW5kZXggYTk3MDA5Zi4uM2QyZjYxZiAxMDA2NDQKICB9CiAgCiAgLyogSW1w bGVtZW50YXRpb24gb2YgZ2RiLnN0b3BfcmVhc29uX3N0cmluZyAoSW50ZWdlcikgLT4gU3RyaW5n LgotQEAgLTQ4NSwxNSArNTc4LDI2IEBAIFJldHVybiB0aGUgcmVhc29uIHdoeSBpdCdzIG5vdCBw b3NzaWJsZSB0byBmaW5kIGZyYW1lcyBvbGRlciB0aGFuIHRoaXMuIiB9LAorQEAgLTQ4NCwxNSAr NTc3LDI2IEBAIFJldHVybiB0aGUgcmVhc29uIHdoeSBpdCdzIG5vdCBwb3NzaWJsZSB0byBmaW5k IGZyYW1lcyBvbGRlciB0aGFuIHRoaXMuIiB9LAogICAgeyAicGMiLCBmcmFweV9wYywgTUVUSF9O T0FSR1MsCiAgICAgICJwYyAoKSAtPiBMb25nLlxuXAogIFJldHVybiB0aGUgZnJhbWUncyByZXN1 bWUgYWRkcmVzcy4iIH0sCkBAIC0xNTM4NSw3ICsxNTk3Miw3IEBAIGluZGV4IDAwMDAwMDAuLjFm NTkxYTgKICsgIFB5VHlwZV9HZW5lcmljTmV3CQkgIC8qIHRwX25ldyAqLwogK307CiBkaWZmIC0t Z2l0IGEvZ2RiL3B5dGhvbi9weXRob24tcHJldHR5cHJpbnQuYyBiL2dkYi9weXRob24vcHl0aG9u LXByZXR0eXByaW50LmMKLWluZGV4IDVkNjk2YzguLjViZTU0YjQgMTAwNjQ0CitpbmRleCA1ZDY5 NmM4Li5hNjM0OGJhIDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weXRob24tcHJldHR5cHJpbnQu YwogKysrIGIvZ2RiL3B5dGhvbi9weXRob24tcHJldHR5cHJpbnQuYwogQEAgLTEyMSw2ICsxMjEs NyBAQCBmaW5kX3ByZXR0eV9wcmludGVyIChQeU9iamVjdCAqdmFsdWUpCkBAIC0xNTQxMCw3ICsx NTk5Nyw3IEBAIGluZGV4IDVkNjk2YzguLjViZTU0YjQgMTAwNjQ0CiArCQkvKiBXZSBtdXN0IGlu Y3JlbWVudCB0aGUgdmFsdWUncyByZWZjb3VudCwgYmVjYXVzZSB3ZQogKwkJICAgYXJlIGFib3V0 IHRvIGRlY3JlZiBSRVNVTFQsIGFuZCB0aGlzIG1heSByZXN1bHQgaW4KICsJCSAgIHRoZSB2YWx1 ZSBiZWluZyBkZXN0cm95ZWQuICAqLwotKwkJcmVsZWFzZV92YWx1ZSAoKm91dF92YWx1ZSk7Cisr CQl2YWx1ZV9pbmNyZWYgKCpvdXRfdmFsdWUpOwogKyAJICAgICAgUHlfREVDUkVGIChyZXN1bHQp OwogKyAJICAgICAgcmVzdWx0ID0gTlVMTDsKICAJICAgIH0KQEAgLTE2MTAyLDcgKzE2Njg5LDcg QEAgaW5kZXggMDAwMDAwMC4uODMwZTU4NgogKyAgc2FsX29iamVjdF9nZXRzZXQJCSAgLyogdHBf Z2V0c2V0ICovCiArfTsKIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi10eXBlLmMgYi9n ZGIvcHl0aG9uL3B5dGhvbi10eXBlLmMKLWluZGV4IGUxODUxMTIuLmI1NWNlOWEgMTAwNjQ0Citp bmRleCBmMjMyNDhjLi5iNDFkODY4IDEwMDY0NAogLS0tIGEvZ2RiL3B5dGhvbi9weXRob24tdHlw ZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi10eXBlLmMKIEBAIC0yNyw2ICsyNyw4IEBACkBA IC0xNjQ3MiwyNyArMTcwNTksMTggQEAgaW5kZXggNDljMDQzNy4uODRhNDc2ZSAxMDA2NDQKICsg IHJldHVybiAxOwogK30KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi12YWx1ZS5jIGIv Z2RiL3B5dGhvbi9weXRob24tdmFsdWUuYwotaW5kZXggZGQzYzkxOS4uZGM3NjY5MiAxMDA2NDQK K2luZGV4IGM0MjE3ZDUuLmYxZGE2NjAgMTAwNjQ0CiAtLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi12 YWx1ZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5dGhvbi12YWx1ZS5jCi1AQCAtMjUsMTUgKzI1LDcg QEAKK0BAIC0yNSw2ICsyNSw3IEBACiAgI2luY2x1ZGUgImxhbmd1YWdlLmgiCiAgI2luY2x1ZGUg ImRmcC5oIgogICNpbmNsdWRlICJ2YWxwcmludC5oIgotLQotLS8qIExpc3Qgb2YgYWxsIHZhbHVl cyB3aGljaCBhcmUgY3VycmVudGx5IGV4cG9zZWQgdG8gUHl0aG9uLiBJdCBpcwotLSAgIG1haW50 YWluZWQgc28gdGhhdCB3aGVuIGFuIG9iamZpbGUgaXMgZGlzY2FyZGVkLCBwcmVzZXJ2ZV92YWx1 ZXMKLS0gICBjYW4gY29weSB0aGUgdmFsdWVzJyB0eXBlcyBpZiBuZWVkZWQuICBUaGlzIGlzIGRl Y2xhcmVkCi0tICAgdW5jb25kaXRpb25hbGx5IHRvIHJlZHVjZSB0aGUgbnVtYmVyIG9mIHVzZXMg b2YgSEFWRV9QWVRIT04gaW4gdGhlCi0tICAgZ2VuZXJpYyBjb2RlLiAgKi8KLS0vKiBUaGlzIHZh cmlhYmxlIGlzIHVubmVjZXNzYXJpbHkgaW5pdGlhbGl6ZWQgdG8gTlVMTCBpbiBvcmRlciB0byAK LS0gICB3b3JrIGFyb3VuZCBhIGxpbmtlciBidWcgb24gTWFjT1MuICAqLwotLXN0cnVjdCB2YWx1 ZSAqdmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7CiArI2luY2x1ZGUgIm9ic2VydmVyLmgiCiAgCiAg I2lmZGVmIEhBVkVfUFlUSE9OCiAgCi1AQCAtNTIsMjYgKzQ0LDQzIEBAIHN0cnVjdCB2YWx1ZSAq dmFsdWVzX2luX3B5dGhvbiA9IE5VTEw7CitAQCAtNDMsNiArNDQsMTAgQEAKICAvKiBQeXRob24n cyBsb25nIHR5cGUgY29ycmVzcG9uZHMgdG8gQydzIGxvbmcgbG9uZyB0eXBlLiAgKi8KICAjZGVm aW5lIGJ1aWx0aW5fdHlwZV9weWxvbmcgYnVpbHRpbl90eXBlIChweXRob25fZ2RiYXJjaCktPmJ1 aWx0aW5fbG9uZ19sb25nCiAgCkBAIC0xNjUwMywxMDYgKzE3MDgxLDcgQEAgaW5kZXggZGQzYzkx OS4uZGM3NjY5MiAxMDA2NDQKICAjZGVmaW5lIGJ1aWx0aW5fdHlwZV9weWJvb2wgXAogICAgbGFu Z3VhZ2VfYm9vbF90eXBlIChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoKQogIAotICNk ZWZpbmUgYnVpbHRpbl90eXBlX3B5Y2hhciBcCi0gICBsYW5ndWFnZV9zdHJpbmdfY2hhcl90eXBl IChweXRob25fbGFuZ3VhZ2UsIHB5dGhvbl9nZGJhcmNoKQotIAotLXR5cGVkZWYgc3RydWN0IHsK LSt0eXBlZGVmIHN0cnVjdCB2YWx1ZV9vYmplY3QgewotICAgUHlPYmplY3RfSEVBRAotKyAgc3Ry dWN0IHZhbHVlX29iamVjdCAqbmV4dDsKLSAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7Ci0gICBQeU9i amVjdCAqYWRkcmVzczsKLSAgIFB5T2JqZWN0ICp0eXBlOwotIH0gdmFsdWVfb2JqZWN0OwotIAot Ky8qIExpc3Qgb2YgYWxsIHZhbHVlcyB3aGljaCBhcmUgY3VycmVudGx5IGV4cG9zZWQgdG8gUHl0 aG9uLiBJdCBpcwotKyAgIG1haW50YWluZWQgc28gdGhhdCB3aGVuIGFuIG9iamZpbGUgaXMgZGlz Y2FyZGVkLCBwcmVzZXJ2ZV92YWx1ZXMKLSsgICBjYW4gY29weSB0aGUgdmFsdWVzJyB0eXBlcyBp ZiBuZWVkZWQuICAqLwotKy8qIFRoaXMgdmFyaWFibGUgaXMgdW5uZWNlc3NhcmlseSBpbml0aWFs aXplZCB0byBOVUxMIGluIG9yZGVyIHRvCi0rICAgd29yayBhcm91bmQgYSBsaW5rZXIgYnVnIG9u IE1hY09TLiAgKi8KLStzdGF0aWMgdmFsdWVfb2JqZWN0ICp2YWx1ZXNfaW5fcHl0aG9uID0gTlVM TDsKLSsKLSAvKiBDYWxsZWQgYnkgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB3aGVuIGRlYWxsb2Nh dGluZyBhIHZhbHVlIG9iamVjdC4gICovCi0gc3RhdGljIHZvaWQKLSB2YWxweV9kZWFsbG9jIChQ eU9iamVjdCAqb2JqKQotIHsKLSAgIHZhbHVlX29iamVjdCAqc2VsZiA9ICh2YWx1ZV9vYmplY3Qg Kikgb2JqOwotKyAgdmFsdWVfb2JqZWN0ICoqaXRlcjsKLSAKLS0gIHZhbHVlX3JlbW92ZV9mcm9t X2xpc3QgKCZ2YWx1ZXNfaW5fcHl0aG9uLCBzZWxmLT52YWx1ZSk7Ci0rICAvKiBSZW1vdmUgT0JK IGZyb20gdGhlIGdsb2JhbCBsaXN0LiAgKi8KLSsgIGl0ZXIgPSAmdmFsdWVzX2luX3B5dGhvbjsK LSsgIHdoaWxlICgqaXRlciAhPSBzZWxmKQotKyAgICBpdGVyID0gJigqaXRlciktPm5leHQ7Ci0r ICAqaXRlciA9ICgqaXRlciktPm5leHQ7Ci0gCi0gICB2YWx1ZV9mcmVlIChzZWxmLT52YWx1ZSk7 Ci0gCi1AQCAtMTIyLDExICsxMzEsMjMgQEAgdmFscHlfbmV3IChQeVR5cGVPYmplY3QgKnN1YnR5 cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMpCi0gICB2YWx1ZV9vYmotPmFk ZHJlc3MgPSBOVUxMOwotICAgdmFsdWVfb2JqLT50eXBlID0gTlVMTDsKLSAgIHJlbGVhc2VfdmFs dWUgKHZhbHVlKTsKLS0gIHZhbHVlX3ByZXBlbmRfdG9fbGlzdCAoJnZhbHVlc19pbl9weXRob24s IHZhbHVlKTsKLSsgIHZhbHVlX29iai0+bmV4dCA9IHZhbHVlc19pbl9weXRob247Ci0rICB2YWx1 ZXNfaW5fcHl0aG9uID0gdmFsdWVfb2JqOwotIAotICAgcmV0dXJuIChQeU9iamVjdCAqKSB2YWx1 ZV9vYmo7Ci0gfQotIAotKy8qIEl0ZXJhdGUgb3ZlciBhbGwgdGhlIFZhbHVlIG9iamVjdHMsIGNh bGxpbmcgcHJlc2VydmVfb25lX3ZhbHVlIG9uCi0rICAgZWFjaC4gICovCi0rdm9pZAotK3ByZXNl cnZlX3B5dGhvbl92YWx1ZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBodGFiX3QgY29waWVk X3R5cGVzKQotK3sKLSsgIHZhbHVlX29iamVjdCAqaXRlcjsKLSsKLSsgIGZvciAoaXRlciA9IHZh bHVlc19pbl9weXRob247IGl0ZXI7IGl0ZXIgPSBpdGVyLT5uZXh0KQotKyAgICBwcmVzZXJ2ZV9v bmVfdmFsdWUgKGl0ZXItPnZhbHVlLCBvYmpmaWxlLCBjb3BpZWRfdHlwZXMpOwotK30KLSsKLSAv KiBHaXZlbiBhIHZhbHVlIG9mIGEgcG9pbnRlciB0eXBlLCBhcHBseSB0aGUgQyB1bmFyeSAqIG9w ZXJhdG9yIHRvIGl0LiAgKi8KLSBzdGF0aWMgUHlPYmplY3QgKgotIHZhbHB5X2RlcmVmZXJlbmNl IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi1AQCAtNTQzLDkgKzU2NCw3IEBAIHZh bHB5X25lZ2F0aXZlIChQeU9iamVjdCAqc2VsZikKLSBzdGF0aWMgUHlPYmplY3QgKgotIHZhbHB5 X3Bvc2l0aXZlIChQeU9iamVjdCAqc2VsZikKLSB7Ci0tICBzdHJ1Y3QgdmFsdWUgKmNvcHkgPSB2 YWx1ZV9jb3B5ICgoKHZhbHVlX29iamVjdCAqKSBzZWxmKS0+dmFsdWUpOwotLQotLSAgcmV0dXJu IHZhbHVlX3RvX3ZhbHVlX29iamVjdCAoY29weSk7Ci0rICByZXR1cm4gdmFsdWVfdG9fdmFsdWVf b2JqZWN0ICgoKHZhbHVlX29iamVjdCAqKSBzZWxmKS0+dmFsdWUpOwotIH0KLSAKLSBzdGF0aWMg UHlPYmplY3QgKgotQEAgLTgwMywxMyArODIyLDE1IEBAIHZhbHVlX3RvX3ZhbHVlX29iamVjdCAo c3RydWN0IHZhbHVlICp2YWwpCi0gICAgICAgdmFsX29iai0+YWRkcmVzcyA9IE5VTEw7Ci0gICAg ICAgdmFsX29iai0+dHlwZSA9IE5VTEw7Ci0gICAgICAgcmVsZWFzZV92YWx1ZSAodmFsKTsKLS0g ICAgICB2YWx1ZV9wcmVwZW5kX3RvX2xpc3QgKCZ2YWx1ZXNfaW5fcHl0aG9uLCB2YWwpOwotKyAg ICAgIHZhbF9vYmotPm5leHQgPSB2YWx1ZXNfaW5fcHl0aG9uOwotKyAgICAgIHZhbHVlc19pbl9w eXRob24gPSB2YWxfb2JqOwotICAgICB9Ci0gCi0gICByZXR1cm4gKFB5T2JqZWN0ICopIHZhbF9v Ymo7Ci0gfQotIAotLS8qIFJldHVybnMgdmFsdWUgc3RydWN0dXJlIGNvcnJlc3BvbmRpbmcgdG8g dGhlIGdpdmVuIHZhbHVlIG9iamVjdC4gICovCi0rLyogUmV0dXJucyBhIGJvcnJvd2VkIHJlZmVy ZW5jZSB0byB0aGUgc3RydWN0IHZhbHVlIGNvcnJlc3BvbmRpbmcgdG8KLSsgICB0aGUgZ2l2ZW4g dmFsdWUgb2JqZWN0LiAgKi8KLSBzdHJ1Y3QgdmFsdWUgKgotIHZhbHVlX29iamVjdF90b192YWx1 ZSAoUHlPYmplY3QgKnNlbGYpCi0gewotQEAgLTgyMSw3ICs4NDIsOCBAQCB2YWx1ZV9vYmplY3Rf dG9fdmFsdWUgKFB5T2JqZWN0ICpzZWxmKQotIH0KLSAKLSAvKiBUcnkgdG8gY29udmVydCBhIFB5 dGhvbiB2YWx1ZSB0byBhIGdkYiB2YWx1ZS4gIElmIHRoZSB2YWx1ZSBjYW5ub3QKLS0gICBiZSBj b252ZXJ0ZWQsIHNldCBhIFB5dGhvbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMLiAgKi8KLSsg ICBiZSBjb252ZXJ0ZWQsIHNldCBhIFB5dGhvbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMLiAg UmV0dXJucyBhCi0rICAgYm9ycm93ZWQgcmVmZXJlbmNlIHRvIHRoZSByZXN1bHRpbmcgc3RydWN0 IHZhbHVlLiAgKi8KLSAKLSBzdHJ1Y3QgdmFsdWUgKgotIGNvbnZlcnRfdmFsdWVfZnJvbV9weXRo b24gKFB5T2JqZWN0ICpvYmopCi1AQCAtODUzLDcgKzg3NSwzNCBAQCBjb252ZXJ0X3ZhbHVlX2Zy b21fcHl0aG9uIChQeU9iamVjdCAqb2JqKQorQEAgLTg4Myw3ICs4ODgsMzQgQEAgY29udmVydF92 YWx1ZV9mcm9tX3B5dGhvbiAoUHlPYmplY3QgKm9iaikKICAJewogIAkgIExPTkdFU1QgbCA9IFB5 TG9uZ19Bc0xvbmdMb25nIChvYmopOwogIApAQCAtMTY2MzgsMjEgKzE3MTE3LDcgQEAgaW5kZXgg ZGQzYzkxOS4uZGM3NjY5MiAxMDA2NDQKICAJICAgIHZhbHVlID0gdmFsdWVfZnJvbV9sb25nZXN0 IChidWlsdGluX3R5cGVfcHlsb25nLCBsKTsKICAJfQogICAgICAgIGVsc2UgaWYgKFB5RmxvYXRf Q2hlY2sgKG9iaikpCi1AQCAtODc2LDcgKzkyNSwxMiBAQCBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0 aG9uIChQeU9iamVjdCAqb2JqKQotIAkgICAgfQotIAl9Ci0gICAgICAgZWxzZSBpZiAoUHlPYmpl Y3RfVHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSkpCi0tCXZhbHVlID0gdmFsdWVf Y29weSAoKCh2YWx1ZV9vYmplY3QgKikgb2JqKS0+dmFsdWUpOwotKwl7Ci0rCSAgLyogVGhpcyBs ZXRzIGNhbGxlcnMgZnJlZWx5IGRlY3JlZiB0aGUgVmFsdWUgd3JhcHBlciBvYmplY3QKLSsJICAg ICBhbmQgbm90IHdvcnJ5IGFib3V0IHdoZXRoZXIgb3Igbm90IHRoZSB2YWx1ZSB3aWxsCi0rCSAg ICAgZGlzYXBwZWFyLiAgKi8KLSsJICB2YWx1ZSA9IHZhbHVlX2NvcHkgKCgodmFsdWVfb2JqZWN0 ICopIG9iaiktPnZhbHVlKTsKLSsJfQotICAgICAgIGVsc2UKLSAJUHlFcnJfRm9ybWF0IChQeUV4 Y19UeXBlRXJyb3IsIF8oIkNvdWxkIG5vdCBjb252ZXJ0IFB5dGhvbiBvYmplY3Q6ICVzIiksCi0g CQkgICAgICBQeVN0cmluZ19Bc1N0cmluZyAoUHlPYmplY3RfU3RyIChvYmopKSk7Ci1AQCAtOTEy LDYgKzk2NiwyNSBAQCBnZGJweV9oaXN0b3J5IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFy Z3MpCitAQCAtOTQyLDYgKzk3NCwyNSBAQCBnZGJweV9oaXN0b3J5IChQeU9iamVjdCAqc2VsZiwg UHlPYmplY3QgKmFyZ3MpCiAgICByZXR1cm4gdmFsdWVfdG9fdmFsdWVfb2JqZWN0IChyZXNfdmFs KTsKICB9CiAgCkBAIC0xNjY3OCw3ICsxNzE0Myw3IEBAIGluZGV4IGRkM2M5MTkuLmRjNzY2OTIg MTAwNjQ0CiAgdm9pZAogIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2b2lkKQogIHsKLUBAIC05 MjIsNiArOTk1LDggQEAgZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZvaWQpCitAQCAtOTUyLDYg KzEwMDMsOCBAQCBnZGJweV9pbml0aWFsaXplX3ZhbHVlcyAodm9pZCkKICAgIFB5TW9kdWxlX0Fk ZE9iamVjdCAoZ2RiX21vZHVsZSwgIlZhbHVlIiwgKFB5T2JqZWN0ICopICZ2YWx1ZV9vYmplY3Rf dHlwZSk7CiAgCiAgICB2YWx1ZXNfaW5fcHl0aG9uID0gTlVMTDsKQEAgLTE2Njg3LDE5ICsxNzE1 Miw2IEBAIGluZGV4IGRkM2M5MTkuLmRjNzY2OTIgMTAwNjQ0CiAgfQogIAogIAwKLUBAIC0xMDE5 LDQgKzEwOTQsMTIgQEAgUHlUeXBlT2JqZWN0IHZhbHVlX29iamVjdF90eXBlID0gewotICAgdmFs cHlfbmV3CQkJICAvKiB0cF9uZXcgKi8KLSB9OwotIAotKyNlbHNlCi0rCi0rdm9pZAotK3ByZXNl cnZlX3B5dGhvbl92YWx1ZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBodGFiX3QgY29waWVk X3R5cGVzKQotK3sKLSsgIC8qIE5vdGhpbmcuICAqLwotK30KLSsKLSAjZW5kaWYgLyogSEFWRV9Q WVRIT04gKi8KIGRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi5jIGIvZ2RiL3B5dGhvbi9w eXRob24uYwogaW5kZXggMjU0YmQyOC4uNWEyYTlhZSAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24v cHl0aG9uLmMKQEAgLTE3MjE2LDE1ICsxNzY2OCwxMSBAQCBpbmRleCAyNTRiZDI4Li41YTJhOWFl IDEwMDY0NAogICAgICAiV3JpdGUgYSBzdHJpbmcgdXNpbmcgZ2RiJ3MgZmlsdGVyZWQgc3RyZWFt LiIgfSwKICAgIHsgImZsdXNoIiwgZ2RicHlfZmx1c2gsIE1FVEhfTk9BUkdTLAogZGlmZiAtLWdp dCBhL2dkYi9weXRob24vcHl0aG9uLmggYi9nZGIvcHl0aG9uL3B5dGhvbi5oCi1pbmRleCAzM2Iw NDM3Li5iYmI2MTg0IDEwMDY0NAoraW5kZXggZTk3MDE4MC4uYmJiNjE4NCAxMDA2NDQKIC0tLSBh L2dkYi9weXRob24vcHl0aG9uLmgKICsrKyBiL2dkYi9weXRob24vcHl0aG9uLmgKLUBAIC0yMiwx NCArMjIsMTggQEAKK0BAIC0yNCw2ICsyNCwxMCBAQAogIAotICNpbmNsdWRlICJ2YWx1ZS5oIgot IAotLWV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlc19pbl9weXRob247Ci0tCiAgdm9pZCBldmFs X3B5dGhvbl9mcm9tX2NvbnRyb2xfY29tbWFuZCAoc3RydWN0IGNvbW1hbmRfbGluZSAqKTsKICAK ICt2b2lkIHNvdXJjZV9weXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNoYXIgKmZpbGUpOwpA QCAtMTcyMzQsMTIgKzE3NjgyLDYgQEAgaW5kZXggMzNiMDQzNy4uYmJiNjE4NCAxMDA2NDQKICBp bnQgYXBwbHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2Ri X2J5dGUgKnZhbGFkZHIsCiAgCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERS IGFkZHJlc3MsCiAgCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2Us Ci0gCQkJICAgICAgY29uc3Qgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgKm9wdGlvbnMsCi0g CQkJICAgICAgY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlKTsKLSAKLSt2b2lk IHByZXNlcnZlX3B5dGhvbl92YWx1ZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBodGFiX3Qg Y29waWVkX3R5cGVzKTsKLSsKLSAjZW5kaWYgLyogR0RCX1BZVEhPTl9IICovCiBkaWZmIC0tZ2l0 IGEvZ2RiL3NjbS1sYW5nLmMgYi9nZGIvc2NtLWxhbmcuYwogaW5kZXggZGUzNDg5NC4uMDc1MThi MCAxMDA2NDQKIC0tLSBhL2dkYi9zY20tbGFuZy5jCkBAIC0xNzQ2Nyw3ICsxNzkwOSw3IEBAIGlu ZGV4IDFjMzc4MDEuLjU5NGViMTYgMTAwNjQ0CiAgCSAgcHJpbnRfdmFyaWFibGVfYW5kX3ZhbHVl IChOVUxMLCBzeW0sIGZyYW1lLCBzdHJlYW0sIDQgKiBudW1fdGFicyk7CiAgCSAgYnJlYWs7CiBk aWZmIC0tZ2l0IGEvZ2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKLWluZGV4IGMxODJmYWEu LjU1MGQwNmEgMTAwNjQ0CitpbmRleCA1MTUxOTY2Li5hY2NhNTM3IDEwMDY0NAogLS0tIGEvZ2Ri L3N5bWZpbGUuYwogKysrIGIvZ2RiL3N5bWZpbGUuYwogQEAgLTkyOCw2ICs5MjgsMTcgQEAgbmV3 X3N5bWZpbGVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCBhZGRfZmxhZ3Mp CkBAIC0xNzU1MCw3ICsxNzk5Miw3IEBAIGluZGV4IGMxODJmYWEuLjU1MGQwNmEgMTAwNjQ0CiAg ICBpZiAoZnJvbV90dHkpCiAgICAgIHByaW50Zl91bmZpbHRlcmVkIChfKCJObyBzeW1ib2wgZmls ZSBub3cuXG4iKSk7CiAgfQotQEAgLTI0MzcsMTMgKzI0NTgsMTUgQEAgcmVyZWFkX3N5bWJvbHMg KHZvaWQpCitAQCAtMjQzNiwxMyArMjQ1NywxNSBAQCByZXJlYWRfc3ltYm9scyAodm9pZCkKICAJ ICAgICAgICAgemVybyBpcyBPSyBzaW5jZSBkYnhyZWFkLmMgYWxzbyBkb2VzIHdoYXQgaXQgbmVl ZHMgdG8gZG8gaWYKICAJICAgICAgICAgb2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLnNpemUgaXMg MC4gICovCiAgCSAgICAgICgqb2JqZmlsZS0+c2YtPnN5bV9yZWFkKSAob2JqZmlsZSwgMCk7CkBA IC0xNzU2Nyw3ICsxODAwOSw3IEBAIGluZGV4IGMxODJmYWEuLjU1MGQwNmEgMTAwNjQ0CiAgCSAg ICAgIC8qIFdlJ3JlIGRvbmUgcmVhZGluZyB0aGUgc3ltYm9sIGZpbGU7IGZpbmlzaCBvZmYgY29t cGxhaW50cy4gICovCiAgCSAgICAgIGNsZWFyX2NvbXBsYWludHMgKCZzeW1maWxlX2NvbXBsYWlu dHMsIDAsIDEpOwogIAotQEAgLTI3NDEsNyArMjc2NCw3IEBAIGFsbG9jYXRlX3N5bXRhYiAoY2hh ciAqZmlsZW5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQorQEAgLTI3NDAsNyArMjc2Myw3 IEBAIGFsbG9jYXRlX3N5bXRhYiAoY2hhciAqZmlsZW5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlKQogIH0KICAKICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKgpAQCAtMTc1NzYsNyArMTgwMTgs NyBAQCBpbmRleCBjMTgyZmFhLi41NTBkMDZhIDEwMDY0NAogIHsKICAgIHN0cnVjdCBwYXJ0aWFs X3N5bXRhYiAqcHN5bXRhYjsKICAKLUBAIC0zMDU1LDcgKzMwNzgsOCBAQCBhZ2FpbjI6CitAQCAt MzA1NCw3ICszMDc3LDggQEAgYWdhaW4yOgogIAogIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqCiAg c3RhcnRfcHN5bXRhYl9jb21tb24gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLApAQCAtMTc2NTMs NyArMTgwOTUsNyBAQCBpbmRleCBlYjM1MzY5Li5kZmQ4YzhjIDEwMDY0NAogIAkgIHsKICAJICAg IHByaW50Zl9maWx0ZXJlZCAoIkdsb2JhbCBzeW1ib2wgYCIpOwogZGlmZiAtLWdpdCBhL2dkYi9z eW10YWIuYyBiL2dkYi9zeW10YWIuYwotaW5kZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKK2lu ZGV4IGM4ODE1NmEuLjljMTAyYzAgMTAwNjQ0CiAtLS0gYS9nZGIvc3ltdGFiLmMKICsrKyBiL2dk Yi9zeW10YWIuYwogQEAgLTQyLDYgKzQyLDcgQEAKQEAgLTE3NzA1LDcgKzE4MTQ3LDE3IEBAIGlu ZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgICB7CiAgICAgIGlmIChGSUxFTkFNRV9DTVAg KG5hbWUsIHBzdC0+ZmlsZW5hbWUpID09IDApCiAgICAgICAgewotQEAgLTQ3NCw3ICs0NzMsNyBA QCBzeW1ib2xfZmluZF9kZW1hbmdsZWRfbmFtZSAoc3RydWN0IGdlbmVyYWxfc3ltYm9sX2luZm8g KmdzeW1ib2wsCitAQCAtNDE0LDcgKzQxMyw4IEBAIHN5bWJvbF9pbml0X2xhbmd1YWdlX3NwZWNp ZmljIChzdHJ1Y3QgZ2VuZXJhbF9zeW1ib2xfaW5mbyAqZ3N5bWJvbCwKKyAgIGdzeW1ib2wtPmxh bmd1YWdlID0gbGFuZ3VhZ2U7CisgICBpZiAoZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf Y3BsdXMKKyAgICAgICB8fCBnc3ltYm9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhCistICAg ICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vfb2JqYykKKysgICAgICB8fCBnc3lt Ym9sLT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9vYmpjCisrICAgICAgfHwgZ3N5bWJvbC0+bGFuZ3Vh Z2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikKKyAgICAgeworICAgICAgIGdzeW1ib2wtPmxhbmd1YWdl X3NwZWNpZmljLmNwbHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lID0gTlVMTDsKKyAgICAgfQor QEAgLTQ3NCw3ICs0NzQsNyBAQCBzeW1ib2xfZmluZF9kZW1hbmdsZWRfbmFtZSAoc3RydWN0IGdl bmVyYWxfc3ltYm9sX2luZm8gKmdzeW1ib2wsCiAgICAgICAgfHwgZ3N5bWJvbC0+bGFuZ3VhZ2Ug PT0gbGFuZ3VhZ2VfYXV0bykKICAgICAgewogICAgICAgIGRlbWFuZ2xlZCA9CkBAIC0xNzcxNCw3 ICsxODE2NiwyMyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogICAgICAgIGlmIChk ZW1hbmdsZWQgIT0gTlVMTCkKICAJewogIAkgIGdzeW1ib2wtPmxhbmd1YWdlID0gbGFuZ3VhZ2Vf Y3BsdXM7Ci1AQCAtODY4LDcgKzg2NywxMyBAQCBmaW5kX3BjX3NlY3RfcHN5bXRhYiAoQ09SRV9B RERSIHBjLCBzdHJ1Y3Qgb2JqX3NlY3Rpb24gKnNlY3Rpb24pCitAQCAtNjMzLDYgKzYzMyw3IEBA IHN5bWJvbF9uYXR1cmFsX25hbWUgKGNvbnN0IHN0cnVjdCBnZW5lcmFsX3N5bWJvbF9pbmZvICpn c3ltYm9sKQorICAgICBjYXNlIGxhbmd1YWdlX2NwbHVzOgorICAgICBjYXNlIGxhbmd1YWdlX2ph dmE6CisgICAgIGNhc2UgbGFuZ3VhZ2Vfb2JqYzoKKysgICAgY2FzZSBsYW5ndWFnZV9mb3J0cmFu OgorICAgICAgIGlmIChnc3ltYm9sLT5sYW5ndWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZpYy5k ZW1hbmdsZWRfbmFtZSAhPSBOVUxMKQorIAlyZXR1cm4gZ3N5bWJvbC0+bGFuZ3VhZ2Vfc3BlY2lm aWMuY3BsdXNfc3BlY2lmaWMuZGVtYW5nbGVkX25hbWU7CisgICAgICAgYnJlYWs7CitAQCAtNjU4 LDYgKzY1OSw3IEBAIHN5bWJvbF9kZW1hbmdsZWRfbmFtZSAoY29uc3Qgc3RydWN0IGdlbmVyYWxf c3ltYm9sX2luZm8gKmdzeW1ib2wpCisgICAgIGNhc2UgbGFuZ3VhZ2VfY3BsdXM6CisgICAgIGNh c2UgbGFuZ3VhZ2VfamF2YToKKyAgICAgY2FzZSBsYW5ndWFnZV9vYmpjOgorKyAgICBjYXNlIGxh bmd1YWdlX2ZvcnRyYW46CisgICAgICAgaWYgKGdzeW1ib2wtPmxhbmd1YWdlX3NwZWNpZmljLmNw bHVzX3NwZWNpZmljLmRlbWFuZ2xlZF9uYW1lICE9IE5VTEwpCisgCXJldHVybiBnc3ltYm9sLT5s YW5ndWFnZV9zcGVjaWZpYy5jcGx1c19zcGVjaWZpYy5kZW1hbmdsZWRfbmFtZTsKKyAgICAgICBi cmVhazsKK0BAIC04NjgsNyArODcwLDEzIEBAIGZpbmRfcGNfc2VjdF9wc3ltdGFiIChDT1JFX0FE RFIgcGMsIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbikKICAgICAgIHRoYW4gdGhlIGxhdGVy IHVzZWQgVEVYVExPVy9URVhUSElHSCBvbmUuICAqLwogIAogICAgQUxMX09CSkZJTEVTIChvYmpm aWxlKQpAQCAtMTc3MjksNyArMTgxOTcsNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0 NAogICAgICAgIHsKICAJc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3Q7CiAgCi1AQCAtOTAxLDYg KzkwNiw3IEBAIGZpbmRfcGNfc2VjdF9wc3ltdGFiIChDT1JFX0FERFIgcGMsIHN0cnVjdCBvYmpf c2VjdGlvbiAqc2VjdGlvbikKK0BAIC05MDEsNiArOTA5LDcgQEAgZmluZF9wY19zZWN0X3BzeW10 YWIgKENPUkVfQUREUiBwYywgc3RydWN0IG9ial9zZWN0aW9uICpzZWN0aW9uKQogIAkgICAgcmV0 dXJuIHBzdDsKICAJICB9CiAgICAgICAgfQpAQCAtMTc3MzcsNyArMTgyMDUsNyBAQCBpbmRleCBj ODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogIAogICAgLyogRXhpc3RpbmcgUFNZTVRBQlNfQUREUk1B UCBtYXBwaW5nIGlzIHByZXNlbnQgZXZlbiBmb3IgUEFSVElBTF9TWU1UQUJzCiAgICAgICB3aGlj aCBzdGlsbCBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgZnVsbCBTWU1UQUJzIHJlYWQuICBCdXQgaXQg aXMgbm90Ci1AQCAtMTE2OCw2ICsxMTc0LDIyIEBAIGZpeHVwX3BzeW1ib2xfc2VjdGlvbiAoc3Ry dWN0IHBhcnRpYWxfc3ltYm9sICpwc3ltLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKK0BAIC0x MTY4LDYgKzExNzcsMjIgQEAgZml4dXBfcHN5bWJvbF9zZWN0aW9uIChzdHJ1Y3QgcGFydGlhbF9z eW1ib2wgKnBzeW0sIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQogICAgcmV0dXJuIHBzeW07CiAg fQogIApAQCAtMTc3NjAsNyArMTgyMjgsNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0 NAogIC8qIEZpbmQgdGhlIGRlZmluaXRpb24gZm9yIGEgc3BlY2lmaWVkIHN5bWJvbCBuYW1lIE5B TUUKICAgICBpbiBkb21haW4gRE9NQUlOLCB2aXNpYmxlIGZyb20gbGV4aWNhbCBibG9jayBCTE9D Sy4KICAgICBSZXR1cm5zIHRoZSBzdHJ1Y3Qgc3ltYm9sIHBvaW50ZXIsIG9yIHplcm8gaWYgbm8g c3ltYm9sIGlzIGZvdW5kLgotQEAgLTExOTQsMTAgKzEyMTYsMTQgQEAgbG9va3VwX3N5bWJvbF9p bl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywK K0BAIC0xMTk0LDEwICsxMjE5LDE0IEBAIGxvb2t1cF9zeW1ib2xfaW5fbGFuZ3VhZ2UgKGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCiAgewogICAgY2hhciAqZGVt YW5nbGVkX25hbWUgPSBOVUxMOwogICAgY29uc3QgY2hhciAqbW9kaWZpZWRfbmFtZSA9IE5VTEw7 CkBAIC0xNzc3Niw3ICsxODI0NCw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAg ICBtb2RpZmllZF9uYW1lID0gbmFtZTsKICAKICAgIC8qIElmIHdlIGFyZSB1c2luZyBDKysgb3Ig SmF2YSwgZGVtYW5nbGUgdGhlIG5hbWUgYmVmb3JlIGRvaW5nIGEgbG9va3VwLCBzbwotQEAgLTEy MDcsNyArMTIzMyw2IEBAIGxvb2t1cF9zeW1ib2xfaW5fbGFuZ3VhZ2UgKGNvbnN0IGNoYXIgKm5h bWUsIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCitAQCAtMTIwNyw3ICsxMjM2LDYgQEAgbG9v a3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJs b2NrICpibG9jaywKICAgICAgICBkZW1hbmdsZWRfbmFtZSA9IGNwbHVzX2RlbWFuZ2xlIChuYW1l LCBETUdMX0FOU0kgfCBETUdMX1BBUkFNUyk7CiAgICAgICAgaWYgKGRlbWFuZ2xlZF9uYW1lKQog IAl7CkBAIC0xNzc4NCw3ICsxODI1Miw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0 CiAgCSAgbW9kaWZpZWRfbmFtZSA9IGRlbWFuZ2xlZF9uYW1lOwogIAkgIG1ha2VfY2xlYW51cCAo eGZyZWUsIGRlbWFuZ2xlZF9uYW1lKTsKICAJfQotQEAgLTEyMjksNyArMTI1NCw2IEBAIGxvb2t1 cF9zeW1ib2xfaW5fbGFuZ3VhZ2UgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBibG9j ayAqYmxvY2ssCitAQCAtMTIyOSw3ICsxMjU3LDYgQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFn ZSAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKICAJCSAgICAg IAkJICAgICAgIERNR0xfQU5TSSB8IERNR0xfUEFSQU1TIHwgRE1HTF9KQVZBKTsKICAgICAgICBp ZiAoZGVtYW5nbGVkX25hbWUpCiAgCXsKQEAgLTE3NzkyLDcgKzE4MjYwLDcgQEAgaW5kZXggYzg4 MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICAJICBtb2RpZmllZF9uYW1lID0gZGVtYW5nbGVkX25hbWU7 CiAgCSAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgZGVtYW5nbGVkX25hbWUpOwogIAl9Ci1AQCAtMTI0 OCw4ICsxMjcyLDggQEAgbG9va3VwX3N5bWJvbF9pbl9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFt ZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKK0BAIC0xMjQ4LDggKzEyNzUsOCBAQCBsb29r dXBfc3ltYm9sX2luX2xhbmd1YWdlIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzdHJ1Y3QgYmxv Y2sgKmJsb2NrLAogICAgICAgIG1vZGlmaWVkX25hbWUgPSBjb3B5OwogICAgICB9CiAgCkBAIC0x NzgwMyw3ICsxODI3MSw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgICBkb19j bGVhbnVwcyAoY2xlYW51cCk7CiAgCiAgICByZXR1cm4gcmV0dXJudmFsOwotQEAgLTEyNzMsOSAr MTI5Nyw5IEBAIGxvb2t1cF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHN0cnVjdCBi bG9jayAqYmxvY2ssCitAQCAtMTI3Myw5ICsxMzAwLDkgQEAgbG9va3VwX3N5bWJvbCAoY29uc3Qg Y2hhciAqbmFtZSwgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKICAgICB3ZWxsLiAgKi8KICAK ICBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCkBAIC0xNzgxNiw3ICsxODI4NCw3IEBAIGluZGV4IGM4 ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgewogICAgc3RydWN0IHN5bWJvbCAqc3ltOwogICAgY29u c3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmdkZWY7Ci1AQCAtMTI5MSw1NSArMTMxNSwxOSBA QCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqbGlua2Fn ZV9uYW1lLAorQEAgLTEyOTEsNTUgKzEzMTgsMTkgQEAgbG9va3VwX3N5bWJvbF9hdXggKGNvbnN0 IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKICAgIC8qIFNlYXJjaCBzcGVj aWZpZWQgYmxvY2sgYW5kIGl0cyBzdXBlcmlvcnMuICBEb24ndCBzZWFyY2gKICAgICAgIFNUQVRJ Q19CTE9DSyBvciBHTE9CQUxfQkxPQ0suICAqLwogIApAQCAtMTc4NzksNyArMTgzNDcsNyBAQCBp bmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogICAgaWYgKHN5bSAhPSBOVUxMKQogICAgICBy ZXR1cm4gc3ltOwogIAotQEAgLTEzNDksMTEgKzEzMzcsMTEgQEAgbG9va3VwX3N5bWJvbF9hdXgg KGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFtZSwKK0BAIC0xMzQ5LDEx ICsxMzQwLDExIEBAIGxvb2t1cF9zeW1ib2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBj aGFyICpsaW5rYWdlX25hbWUsCiAgICAgICBkZXNpcmVkIG5hbWUgYXMgYSBmaWxlLWxldmVsIHN0 YXRpYywgdGhlbiBkbyBwc3ltdGFiLXRvLXN5bXRhYgogICAgICAgY29udmVyc2lvbiBvbiB0aGUg Zmx5IGFuZCByZXR1cm4gdGhlIGZvdW5kIHN5bWJvbC4gKi8KICAKQEAgLTE3ODkzLDcgKzE4MzYx LDcgQEAgaW5kZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICAgIGlmIChzeW0gIT0gTlVMTCkK ICAgICAgcmV0dXJuIHN5bTsKICAKLUBAIC0xMzY0LDMwICsxMzUyLDgxIEBAIGxvb2t1cF9zeW1i b2xfYXV4IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpsaW5rYWdlX25hbWUsCitAQCAt MTM2NCwzMCArMTM1NSw4MSBAQCBsb29rdXBfc3ltYm9sX2F1eCAoY29uc3QgY2hhciAqbmFtZSwg Y29uc3QgY2hhciAqbGlua2FnZV9uYW1lLAogICAgIERvbid0IHNlYXJjaCBTVEFUSUNfQkxPQ0sg b3IgR0xPQkFMX0JMT0NLLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHN5bWJvbCAqCkBAIC0xNzk4 Nyw3ICsxODQ1NSw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgCiAgICByZXR1 cm4gTlVMTDsKICB9Ci1AQCAtMTQxNiwxMyArMTQ1NSwxMiBAQCBsb29rdXBfb2JqZmlsZV9mcm9t X2Jsb2NrIChjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrKQorQEAgLTE0MTYsMTMgKzE0NTgsMTIg QEAgbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaykK ICAgICBibG9ja19mb3VuZCBhcHByb3ByaWF0ZWx5LiAgKi8KICAKICBzdHJ1Y3Qgc3ltYm9sICoK QEAgLTE4MDAzLDcgKzE4NDcxLDcgQEAgaW5kZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICAg IGlmIChzeW0pCiAgICAgIHsKICAgICAgICBibG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE0Mzgs NyArMTQ3Niw2IEBAIGxvb2t1cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLCBj b25zdCBjaGFyICpsaW5rYWdlX25hbWUsCitAQCAtMTQzOCw3ICsxNDc5LDYgQEAgbG9va3VwX3N5 bWJvbF9hdXhfYmxvY2sgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmxpbmthZ2VfbmFt ZSwKICBzdHJ1Y3Qgc3ltYm9sICoKICBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9tX29iamZpbGUg KGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQkgICBjb25zdCBjaGFyICpuYW1l LApAQCAtMTgwMTEsNyArMTg0NzksNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAog IAkJCQkgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiAgewogICAgc3RydWN0IHN5bWJvbCAq c3ltOwotQEAgLTE0NTIsNyArMTQ4OSw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2Jq ZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTQ1Miw3ICsxNDkyLDcg QEAgbG9va3VwX2dsb2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKICAgIHsKICAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CiAgICAgIGJsb2Nr ID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBHTE9CQUxfQkxPQ0spOwpAQCAtMTgwMjAsNyArMTg0 ODgsNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogICAgICBpZiAoc3ltKQogICAg ICAgIHsKICAJYmxvY2tfZm91bmQgPSBibG9jazsKLUBAIC0xNDYxLDIzICsxNDk4LDIzIEBAIGxv b2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qgc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCitAQCAtMTQ2MSwyMyArMTUwMSwyMyBAQCBsb29rdXBfZ2xvYmFsX3N5bWJvbF9mcm9t X29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgfQogIAogICAgLyog Tm93IGdvIHRocm91Z2ggcHN5bXRhYnMuICAqLwpAQCAtMTgwNDgsNyArMTg1MTYsNyBAQCBpbmRl eCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogIAogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAgLTE0 ODgsOCArMTUyNSw3IEBAIGxvb2t1cF9nbG9iYWxfc3ltYm9sX2Zyb21fb2JqZmlsZSAoY29uc3Qg c3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTQ4OCw4ICsxNTI4LDcgQEAgbG9va3VwX2ds b2JhbF9zeW1ib2xfZnJvbV9vYmpmaWxlIChjb25zdCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwK ICAgICBzdGF0aWMgc3ltYm9scy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgpAQCAt MTgwNTgsNyArMTg1MjYsNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogIAkJCSAg IGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICB7CiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci1A QCAtMTUwMiw3ICsxNTM4LDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2Nr X2luZGV4LAorQEAgLTE1MDIsNyArMTU0MSw3IEBAIGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMg KGludCBibG9ja19pbmRleCwKICAgIHsKICAgICAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7CiAgICAg IGJsb2NrID0gQkxPQ0tWRUNUT1JfQkxPQ0sgKGJ2LCBibG9ja19pbmRleCk7CkBAIC0xODA2Nyw3 ICsxODUzNSw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgICAgIGlmIChzeW0p CiAgICAgICAgewogIAlibG9ja19mb3VuZCA9IGJsb2NrOwotQEAgLTE1MjAsNyArMTU1Niw2IEBA IGxvb2t1cF9zeW1ib2xfYXV4X3N5bXRhYnMgKGludCBibG9ja19pbmRleCwKK0BAIC0xNTIwLDcg KzE1NTksNiBAQCBsb29rdXBfc3ltYm9sX2F1eF9zeW10YWJzIChpbnQgYmxvY2tfaW5kZXgsCiAg CiAgc3RhdGljIHN0cnVjdCBzeW1ib2wgKgogIGxvb2t1cF9zeW1ib2xfYXV4X3BzeW10YWJzIChp bnQgYmxvY2tfaW5kZXgsIGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0xODA3NSw3ICsxODU0Myw3IEBA IGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgCQkJICAgIGNvbnN0IGRvbWFpbl9lbnVt IGRvbWFpbikKICB7CiAgICBzdHJ1Y3Qgc3ltYm9sICpzeW07Ci1AQCAtMTUzMSwxNiArMTU2Niwx NSBAQCBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBj aGFyICpuYW1lLAorQEAgLTE1MzEsMTYgKzE1NjksMTUgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5 bXRhYnMgKGludCBibG9ja19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKICAgIHN0cnVjdCBzeW10 YWIgKnM7CiAgICBjb25zdCBpbnQgcHN5bXRhYl9pbmRleCA9IChibG9ja19pbmRleCA9PSBHTE9C QUxfQkxPQ0sgPyAxIDogMCk7CiAgCkBAIC0xODA5NSw3ICsxODU2Myw3IEBAIGluZGV4IGM4ODE1 NmEuLmIyNjk0OTEgMTAwNjQ0CiAgCWlmICghc3ltKQogIAkgIHsKICAJICAgIC8qIFRoaXMgc2hv dWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IGFzIGEgbGFzdCByZXNvcnQgdHJ5Ci1AQCAtMTU1Nyw3 ICsxNTkxLDcgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9ja19pbmRleCwg Y29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNTU3LDcgKzE1OTQsNyBAQCBsb29rdXBfc3ltYm9sX2F1 eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAogIAkgICAgYmxv Y2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsCiAgCQkJCSAgICAgICBibG9ja19pbmRleCA9PSBH TE9CQUxfQkxPQ0sgPwogIAkJCQkgICAgICAgU1RBVElDX0JMT0NLIDogR0xPQkFMX0JMT0NLKTsK QEAgLTE4MTA0LDcgKzE4NTcyLDcgQEAgaW5kZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICAJ ICAgIGlmICghc3ltKQogIAkgICAgICBlcnJvciAoXygiSW50ZXJuYWw6ICVzIHN5bWJvbCBgJXMn IGZvdW5kIGluICVzIHBzeW10YWIgYnV0IG5vdCBpbiBzeW10YWIuXG4lcyBtYXkgYmUgYW4gaW5s aW5lZCBmdW5jdGlvbiwgb3IgbWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cbihpZiBhIHRlbXBs YXRlLCB0cnkgc3BlY2lmeWluZyBhbiBpbnN0YW50aWF0aW9uOiAlczx0eXBlPikuIiksCiAgCQkg ICAgIGJsb2NrX2luZGV4ID09IEdMT0JBTF9CTE9DSyA/ICJnbG9iYWwiIDogInN0YXRpYyIsCi1A QCAtMTU3Niw3ICsxNjEwLDYgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKGludCBibG9j a19pbmRleCwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNTc2LDcgKzE2MTMsNiBAQCBsb29rdXBf c3ltYm9sX2F1eF9wc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFyICpuYW1lLAog IAogIHN0cnVjdCBzeW1ib2wgKgogIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0 IGNoYXIgKm5hbWUsCkBAIC0xODExMiw3ICsxODU4MCw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0 OTEgMTAwNjQ0CiAgCQkJICAgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywKICAJCQkgICAg ICBjb25zdCBkb21haW5fZW51bSBkb21haW4pCiAgewotQEAgLTE2MTAsMTEgKzE2NDMsMTEgQEAg YmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNjEw LDExICsxNjQ2LDExIEBAIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIg Km5hbWUsCiAgICAgICB0aGFuIHRoYXQgb25lLCBzbyBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCB3 b3JyeSBhYm91dCB0aGF0IGZvcgogICAgICAgbm93LiAgKi8KICAKQEAgLTE4MTI2LDcgKzE4NTk0 LDcgQEAgaW5kZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICB9CiAgCiAgLyogTG9va3VwIGEg c3ltYm9sIGluIHRoZSBzdGF0aWMgYmxvY2sgYXNzb2NpYXRlZCB0byBCTE9DSywgaWYgdGhlcmUK LUBAIC0xNjIyLDE0ICsxNjU1LDEzIEBAIGJhc2ljX2xvb2t1cF9zeW1ib2xfbm9ubG9jYWwgKGNv bnN0IGNoYXIgKm5hbWUsCitAQCAtMTYyMiwxNCArMTY1OCwxMyBAQCBiYXNpY19sb29rdXBfc3lt Ym9sX25vbmxvY2FsIChjb25zdCBjaGFyICpuYW1lLAogIAogIHN0cnVjdCBzeW1ib2wgKgogIGxv b2t1cF9zeW1ib2xfc3RhdGljIChjb25zdCBjaGFyICpuYW1lLApAQCAtMTgxNDIsNyArMTg2MTAs NyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogICAgZWxzZQogICAgICByZXR1cm4g TlVMTDsKICB9Ci1AQCAtMTYzOSw3ICsxNjcxLDYgQEAgbG9va3VwX3N5bWJvbF9zdGF0aWMgKGNv bnN0IGNoYXIgKm5hbWUsCitAQCAtMTYzOSw3ICsxNjc0LDYgQEAgbG9va3VwX3N5bWJvbF9zdGF0 aWMgKGNvbnN0IGNoYXIgKm5hbWUsCiAgCiAgc3RydWN0IHN5bWJvbCAqCiAgbG9va3VwX3N5bWJv bF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0xODE1MCw3ICsxODYxOCw3IEBAIGluZGV4 IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgCQkgICAgICBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJs b2NrLAogIAkJICAgICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKQogIHsKLUBAIC0xNjQ5LDE1 ICsxNjgwLDE1IEBAIGxvb2t1cF9zeW1ib2xfZ2xvYmFsIChjb25zdCBjaGFyICpuYW1lLAorQEAg LTE2NDksMTUgKzE2ODMsMTUgQEAgbG9va3VwX3N5bWJvbF9nbG9iYWwgKGNvbnN0IGNoYXIgKm5h bWUsCiAgICAvKiBDYWxsIGxpYnJhcnktc3BlY2lmaWMgbG9va3VwIHByb2NlZHVyZS4gICovCiAg ICBvYmpmaWxlID0gbG9va3VwX29iamZpbGVfZnJvbV9ibG9jayAoYmxvY2spOwogICAgaWYgKG9i amZpbGUgIT0gTlVMTCkKQEAgLTE4MTY5LDcgKzE4NjM3LDcgQEAgaW5kZXggYzg4MTU2YS4uYjI2 OTQ5MSAxMDA2NDQKICB9CiAgCiAgaW50Ci1AQCAtMTY4MSwxNCArMTcxMiwxMSBAQCBzeW1ib2xf bWF0Y2hlc19kb21haW4gKGVudW0gbGFuZ3VhZ2Ugc3ltYm9sX2xhbmd1YWdlLAorQEAgLTE2ODEs MTQgKzE3MTUsMTEgQEAgc3ltYm9sX21hdGNoZXNfZG9tYWluIChlbnVtIGxhbmd1YWdlIHN5bWJv bF9sYW5ndWFnZSwKICB9CiAgCiAgLyogTG9vaywgaW4gcGFydGlhbF9zeW10YWIgUFNULCBmb3Ig c3ltYm9sIHdob3NlIG5hdHVyYWwgbmFtZSBpcyBOQU1FLgpAQCAtMTgxODYsNyArMTg2NTQsNyBA QCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAogIHsKICAgIHN0cnVjdCBwYXJ0aWFsX3N5 bWJvbCAqdGVtcDsKICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnN0YXJ0LCAqKnBzeW07Ci1A QCAtMTc0MCw5ICsxNzY4LDcgQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlh bF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNzQwLDkgKzE3NzEsNyBAQCBs b29rdXBfcGFydGlhbF9zeW1ib2wgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0LCBjb25zdCBj aGFyICpuYW1lLAogIAlpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLCBfKCJmYWls ZWQgaW50ZXJuYWwgY29uc2lzdGVuY3kgY2hlY2siKSk7CiAgCiAgICAgICAgd2hpbGUgKHRvcCA8 PSByZWFsX3RvcApAQCAtMTgxOTcsNyArMTg2NjUsNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkx IDEwMDY0NAogIAl7CiAgCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9MX0xBTkdV QUdFICgqdG9wKSwKICAJCQkJICAgICBTWU1CT0xfRE9NQUlOICgqdG9wKSwgZG9tYWluKSkKLUBA IC0xNzU5LDE1ICsxNzg1LDkgQEAgbG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlh bF9zeW10YWIgKnBzdCwgY29uc3QgY2hhciAqbmFtZSwKK0BAIC0xNzU5LDE1ICsxNzg4LDkgQEAg bG9va3VwX3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCwgY29uc3Qg Y2hhciAqbmFtZSwKICAgICAgICBmb3IgKHBzeW0gPSBzdGFydDsgcHN5bSA8IHN0YXJ0ICsgbGVu Z3RoOyBwc3ltKyspCiAgCXsKICAJICBpZiAoc3ltYm9sX21hdGNoZXNfZG9tYWluIChTWU1CT0xf TEFOR1VBR0UgKCpwc3ltKSwKQEAgLTE4MjE2LDcgKzE4Njg0LDcgQEAgaW5kZXggYzg4MTU2YS4u YjI2OTQ5MSAxMDA2NDQKICAJfQogICAgICB9CiAgCi1AQCAtMTgwOSwyMiArMTgyOSwyNSBAQCBi YXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC0xODA5 LDIyICsxODMyLDI1IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFy ICpuYW1lKQogICAgewogICAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKICAgICAgYmxvY2sgPSBC TE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIEdMT0JBTF9CTE9DSyk7CkBAIC0xODI0Nyw3ICsxODcxNSw3 IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgCWlmICghc3ltKQogIAkgIHsKICAJ ICAgIC8qIFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSwgYnV0IGFzIGEgbGFzdCByZXNvcnQK LUBAIC0xODMzLDcgKzE4NTYsNyBAQCBiYXNpY19sb29rdXBfdHJhbnNwYXJlbnRfdHlwZSAoY29u c3QgY2hhciAqbmFtZSkKK0BAIC0xODMzLDcgKzE4NTksNyBAQCBiYXNpY19sb29rdXBfdHJhbnNw YXJlbnRfdHlwZSAoY29uc3QgY2hhciAqbmFtZSkKICAJICAgICAqIHRoZSBwc3ltdGFiIGdldHMg aXQgd3JvbmcgaW4gc29tZSBjYXNlcy4KICAJICAgICAqLwogIAkgICAgYmxvY2sgPSBCTE9DS1ZF Q1RPUl9CTE9DSyAoYnYsIFNUQVRJQ19CTE9DSyk7CkBAIC0xODI1Niw3ICsxODcyNCw3IEBAIGlu ZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgCSAgICBpZiAoIXN5bSkKICAJICAgICAgZXJy b3IgKF8oIkludGVybmFsOiBnbG9iYWwgc3ltYm9sIGAlcycgZm91bmQgaW4gJXMgcHN5bXRhYiBi dXQgbm90IGluIHN5bXRhYi5cblwKICAlcyBtYXkgYmUgYW4gaW5saW5lZCBmdW5jdGlvbiwgb3Ig bWF5IGJlIGEgdGVtcGxhdGUgZnVuY3Rpb25cblwKLUBAIC0xODU3LDIxICsxODgwLDI2IEBAIGJh c2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQorQEAgLTE4NTcs MjEgKzE4ODMsMjYgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUgKGNvbnN0IGNoYXIg Km5hbWUpCiAgICB7CiAgICAgIGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwogICAgICBibG9jayA9IEJM T0NLVkVDVE9SX0JMT0NLIChidiwgU1RBVElDX0JMT0NLKTsKQEAgLTE4Mjg3LDcgKzE4NzU1LDcg QEAgaW5kZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICAJaWYgKCFzeW0pCiAgCSAgewogIAkg ICAgLyogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5LCBidXQgYXMgYSBsYXN0IHJlc29ydAot QEAgLTE4ODAsNyArMTkwOCw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3BhcmVudF90eXBlIChjb25z dCBjaGFyICpuYW1lKQorQEAgLTE4ODAsNyArMTkxMSw3IEBAIGJhc2ljX2xvb2t1cF90cmFuc3Bh cmVudF90eXBlIChjb25zdCBjaGFyICpuYW1lKQogIAkgICAgICogdGhlIHBzeW10YWIgZ2V0cyBp dCB3cm9uZyBpbiBzb21lIGNhc2VzLgogIAkgICAgICovCiAgCSAgICBibG9jayA9IEJMT0NLVkVD VE9SX0JMT0NLIChidiwgR0xPQkFMX0JMT0NLKTsKQEAgLTE4Mjk2LDcgKzE4NzY0LDcgQEAgaW5k ZXggYzg4MTU2YS4uYjI2OTQ5MSAxMDA2NDQKICAJICAgIGlmICghc3ltKQogIAkgICAgICBlcnJv ciAoXygiSW50ZXJuYWw6IHN0YXRpYyBzeW1ib2wgYCVzJyBmb3VuZCBpbiAlcyBwc3ltdGFiIGJ1 dCBub3QgaW4gc3ltdGFiLlxuXAogICVzIG1heSBiZSBhbiBpbmxpbmVkIGZ1bmN0aW9uLCBvciBt YXkgYmUgYSB0ZW1wbGF0ZSBmdW5jdGlvblxuXAotQEAgLTE5MDUsOSArMTkzMywyMyBAQCBmaW5k X21haW5fcHN5bXRhYiAodm9pZCkKK0BAIC0xOTA1LDkgKzE5MzYsMjMgQEAgZmluZF9tYWluX3Bz eW10YWIgKHZvaWQpCiAgICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdDsKICAgIHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlOwogIApAQCAtMTgzMjIsNyArMTg3OTAsNyBAQCBpbmRleCBjODgxNTZh Li5iMjY5NDkxIDEwMDY0NAogICAgICAgIHsKICAJcmV0dXJuIChwc3QpOwogICAgICAgIH0KLUBA IC0xOTI1LDE0ICsxOTY3LDEwIEBAIGZpbmRfbWFpbl9wc3ltdGFiICh2b2lkKQorQEAgLTE5MjUs MTQgKzE5NzAsMTAgQEAgZmluZF9tYWluX3BzeW10YWIgKHZvaWQpCiAgICAgc2VhcmNoIG9uIHRo ZSBzeW1ib2xzLiAgRWFjaCBzeW1ib2wgd2hpY2ggaXMgbWFya2VkIGFzIGJlaW5nIGEgT2JqQy9D KysKICAgICBzeW1ib2wgKGxhbmd1YWdlX2NwbHVzIG9yIGxhbmd1YWdlX29iamMgc2V0KSBoYXMg Ym90aCB0aGUgZW5jb2RlZCBhbmQKICAgICBub24tZW5jb2RlZCBuYW1lcyB0ZXN0ZWQgZm9yIGEg bWF0Y2guCkBAIC0xODMzNyw3ICsxODgwNSw3IEBAIGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAw NjQ0CiAgCQkgICAgIGNvbnN0IGRvbWFpbl9lbnVtIGRvbWFpbikKICB7CiAgICBzdHJ1Y3QgZGlj dF9pdGVyYXRvciBpdGVyOwotQEAgLTE5NDUsOSArMTk4Myw3IEBAIGxvb2t1cF9ibG9ja19zeW1i b2wgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMTk0 NSw5ICsxOTg2LDcgQEAgbG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2NrICpi bG9jaywgY29uc3QgY2hhciAqbmFtZSwKICAJICAgc3ltID0gZGljdF9pdGVyX25hbWVfbmV4dCAo bmFtZSwgJml0ZXIpKQogIAl7CiAgCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9M X0xBTkdVQUdFIChzeW0pLApAQCAtMTgzNDgsNyArMTg4MTYsNyBAQCBpbmRleCBjODgxNTZhLi5i MjY5NDkxIDEwMDY0NAogIAkgICAgcmV0dXJuIHN5bTsKICAJfQogICAgICAgIHJldHVybiBOVUxM OwotQEAgLTE5NjcsOSArMjAwMyw3IEBAIGxvb2t1cF9ibG9ja19zeW1ib2wgKGNvbnN0IHN0cnVj dCBibG9jayAqYmxvY2ssIGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtMTk2Nyw5ICsyMDA2LDcgQEAg bG9va3VwX2Jsb2NrX3N5bWJvbCAoY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywgY29uc3QgY2hh ciAqbmFtZSwKICAJICAgc3ltID0gZGljdF9pdGVyX25hbWVfbmV4dCAobmFtZSwgJml0ZXIpKQog IAl7CiAgCSAgaWYgKHN5bWJvbF9tYXRjaGVzX2RvbWFpbiAoU1lNQk9MX0xBTkdVQUdFIChzeW0p LApAQCAtMTgzNTksNyArMTg4MjcsNyBAQCBpbmRleCBjODgxNTZhLi5iMjY5NDkxIDEwMDY0NAog IAkgICAgewogIAkgICAgICBzeW1fZm91bmQgPSBzeW07CiAgCSAgICAgIGlmICghU1lNQk9MX0lT X0FSR1VNRU5UIChzeW0pKQotQEAgLTMxNzIsNyArMzIwNiw3IEBAIHNlYXJjaF9zeW1ib2xzIChj aGFyICpyZWdleHAsIGRvbWFpbl9lbnVtIGtpbmQsIGludCBuZmlsZXMsIGNoYXIgKmZpbGVzW10s CitAQCAtMzE3Miw3ICszMjA5LDcgQEAgc2VhcmNoX3N5bWJvbHMgKGNoYXIgKnJlZ2V4cCwgZG9t YWluX2VudW0ga2luZCwgaW50IG5maWxlcywgY2hhciAqZmlsZXNbXSwKICAgICAgIG1hdGNoaW5n IHRoZSByZWdleHAuICBUaGF0IHdheSB3ZSBkb24ndCBoYXZlIHRvIHJlcHJvZHVjZSBhbGwgb2YK ICAgICAgIHRoZSBtYWNoaW5lcnkgYmVsb3cuICovCiAgCkBAIC0xODM2OSw3ICsxODgzNyw3IEBA IGluZGV4IGM4ODE1NmEuLmIyNjk0OTEgMTAwNjQ0CiAgICAgIHN0cnVjdCBwYXJ0aWFsX3N5bWJv bCAqKmJvdW5kLCAqKmdib3VuZCwgKipzYm91bmQ7CiAgICAgIGludCBrZWVwX2dvaW5nID0gMTsK IGRpZmYgLS1naXQgYS9nZGIvc3ltdGFiLmggYi9nZGIvc3ltdGFiLmgKLWluZGV4IDc0MGQ0ZTAu LjEzZTUyMWEgMTAwNjQ0CitpbmRleCA3NDBkNGUwLi40NjFmZjk1IDEwMDY0NAogLS0tIGEvZ2Ri L3N5bXRhYi5oCiArKysgYi9nZGIvc3ltdGFiLmgKIEBAIC0xNzEsOSArMTcxLDYgQEAgZXh0ZXJu IENPUkVfQUREUiBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKENPUkVfQUREUiwgc3RydWN0IG9i al9zZWN0aW9uICopOwpAQCAtMTgzODIsNyArMTg4NTAsNyBAQCBpbmRleCA3NDBkNGUwLi4xM2U1 MjFhIDEwMDY0NAogIC8qIEluaXRpYWxpemVzIHRoZSBsYW5ndWFnZSBkZXBlbmRlbnQgcG9ydGlv biBvZiBhIHN5bWJvbAogICAgIGRlcGVuZGluZyB1cG9uIHRoZSBsYW5ndWFnZSBmb3IgdGhlIHN5 bWJvbC4gKi8KICAjZGVmaW5lIFNZTUJPTF9JTklUX0xBTkdVQUdFX1NQRUNJRklDKHN5bWJvbCxs YW5ndWFnZSkgXAotQEAgLTM5NCw3ICszOTEsMTAgQEAgdHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVt X3RhZworQEAgLTM5NCw3ICszOTEsMTMgQEAgdHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3RhZwog ICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKICAgIC8qIEFsbCBkZWZpbmVkIHR5cGVzICovCkBAIC0x ODM5MCwxMSArMTg4NTgsMTQgQEAgaW5kZXggNzQwZDRlMC4uMTNlNTIxYSAxMDA2NDQKICsgIFRZ UEVTX0RPTUFJTiwKICsKICsgIC8qIEZvcnRyYW4gY29tbW9uIGJsb2Nrcy4gIFRoZWlyIG5hbWlu ZyBtdXN0IGJlIHNlcGFyYXRlIGZyb20gVkFSX0RPTUFJTi4gICovCi0rICBDT01NT05fQkxPQ0tf RE9NQUlOCisrICBDT01NT05fQkxPQ0tfRE9NQUlOLAorKworKyAgLyogRm9ydHJhbiBtb2R1bGUu ICBUaGVpciBuYW1pbmcgbXVzdCBiZSBzZXBhcmF0ZS4gICovCisrICBNT0RVTEVfRE9NQUlOCiAg fQogIGRvbWFpbl9lbnVtOwogIAotQEAgLTk5MCw3ICs5OTAsNiBAQCBleHRlcm4gc3RydWN0IHN5 bWJvbCAqbG9va3VwX3N5bWJvbCAoY29uc3QgY2hhciAqLCBjb25zdCBzdHJ1Y3QgYmxvY2sgKiwK K0BAIC05OTAsNyArOTkzLDYgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2wg KGNvbnN0IGNoYXIgKiwgY29uc3Qgc3RydWN0IGJsb2NrICosCiAgICAgdGhhdCBjYW4ndCB0aGlu ayBvZiBhbnl0aGluZyBiZXR0ZXIgdG8gZG8uICAqLwogIAogIGV4dGVybiBzdHJ1Y3Qgc3ltYm9s ICpiYXNpY19sb29rdXBfc3ltYm9sX25vbmxvY2FsIChjb25zdCBjaGFyICosCkBAIC0xODQwMiw3 ICsxODg3Myw3IEBAIGluZGV4IDc0MGQ0ZTAuLjEzZTUyMWEgMTAwNjQ0CiAgCQkJCQkJICAgIGNv bnN0IHN0cnVjdCBibG9jayAqLAogIAkJCQkJCSAgICBjb25zdCBkb21haW5fZW51bSk7CiAgCi1A QCAtMTAwMSw3ICsxMDAwLDYgQEAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmJhc2ljX2xvb2t1cF9z eW1ib2xfbm9ubG9jYWwgKGNvbnN0IGNoYXIgKiwKK0BAIC0xMDAxLDcgKzEwMDMsNiBAQCBleHRl cm4gc3RydWN0IHN5bWJvbCAqYmFzaWNfbG9va3VwX3N5bWJvbF9ub25sb2NhbCAoY29uc3QgY2hh ciAqLAogICAgIGlzIG9uZTsgZG8gbm90aGluZyBpZiBCTE9DSyBpcyBOVUxMIG9yIGEgZ2xvYmFs IGJsb2NrLiAgKi8KICAKICBleHRlcm4gc3RydWN0IHN5bWJvbCAqbG9va3VwX3N5bWJvbF9zdGF0 aWMgKGNvbnN0IGNoYXIgKm5hbWUsCkBAIC0xODQxMCw3ICsxODg4MSw3IEBAIGluZGV4IDc0MGQ0 ZTAuLjEzZTUyMWEgMTAwNjQ0CiAgCQkJCQkgICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jaywK ICAJCQkJCSAgICBjb25zdCBkb21haW5fZW51bSBkb21haW4pOwogIAotQEAgLTEwMDksNyArMTAw Nyw2IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX3N0YXRpYyAoY29uc3Qg Y2hhciAqbmFtZSwKK0BAIC0xMDA5LDcgKzEwMTAsNiBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAq bG9va3VwX3N5bWJvbF9zdGF0aWMgKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgbmVjZXNzYXJ5KS4g ICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1cF9zeW1ib2xfZ2xvYmFsIChjb25z dCBjaGFyICpuYW1lLApAQCAtMTg0MTgsNyArMTg4ODksNyBAQCBpbmRleCA3NDBkNGUwLi4xM2U1 MjFhIDEwMDY0NAogIAkJCQkJICAgIGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2ssCiAgCQkJCQkg ICAgY29uc3QgZG9tYWluX2VudW0gZG9tYWluKTsKICAKLUBAIC0xMDE4LDIxICsxMDE1LDE4IEBA IGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAq bmFtZSwKK0BAIC0xMDE4LDIxICsxMDE4LDE4IEBAIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpsb29r dXBfc3ltYm9sX2dsb2JhbCAoY29uc3QgY2hhciAqbmFtZSwKICAgICB3aWxsIGZpeCB1cCB0aGUg c3ltYm9sIGlmIG5lY2Vzc2FyeS4gICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW1ib2wgKmxvb2t1 cF9zeW1ib2xfYXV4X2Jsb2NrIChjb25zdCBjaGFyICpuYW1lLApAQCAtMTg0NDAsNyArMTg5MTEs NyBAQCBpbmRleCA3NDBkNGUwLi4xM2U1MjFhIDEwMDY0NAogIAkJCQkJICAgY29uc3QgZG9tYWlu X2VudW0pOwogIAogIC8qIGxvb2t1cCBhIFtzdHJ1Y3QsIHVuaW9uLCBlbnVtXSBieSBuYW1lLCB3 aXRoaW4gYSBzcGVjaWZpZWQgYmxvY2sgKi8KLUBAIC0xMDYyLDYgKzEwNTYsOCBAQCBleHRlcm4g dm9pZCBjbGVhcl9wY19mdW5jdGlvbl9jYWNoZSAodm9pZCk7CitAQCAtMTA2Miw2ICsxMDU5LDgg QEAgZXh0ZXJuIHZvaWQgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUgKHZvaWQpOwogIAogIC8qIGZy b20gc3ltdGFiLmM6ICovCiAgCkBAIC0xODQ0OSw3ICsxODkyMCw3IEBAIGluZGV4IDc0MGQ0ZTAu LjEzZTUyMWEgMTAwNjQ0CiAgLyogbG9va3VwIHBhcnRpYWwgc3ltYm9sIHRhYmxlIGJ5IGZpbGVu YW1lICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqbG9va3VwX3BhcnRpYWxf c3ltdGFiIChjb25zdCBjaGFyICopOwotQEAgLTEzNTYsNyArMTM1Miw2IEBAIGV4dGVybiAvKmNv bnN0ICovIGNoYXIgKm1haW5fbmFtZSAodm9pZCk7CitAQCAtMTM1Niw3ICsxMzU1LDYgQEAgZXh0 ZXJuIC8qY29uc3QgKi8gY2hhciAqbWFpbl9uYW1lICh2b2lkKTsKICAvKiBDaGVjayBnbG9iYWwg c3ltYm9scyBpbiBvYmpmaWxlLiAgKi8KICBzdHJ1Y3Qgc3ltYm9sICpsb29rdXBfZ2xvYmFsX3N5 bWJvbF9mcm9tX29iamZpbGUgKGNvbnN0IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogIAkJCQkJ CSAgY29uc3QgY2hhciAqbmFtZSwKQEAgLTE4NDk3LDExNCArMTg5NjgsNiBAQCBpbmRleCAyYzc0 M2U5Li5lZjI5NjEwIDEwMDY0NAogIAwKICAvKiBTdHVmZiB0aGF0IHNob3VsZCBiZSBzaGFyZWQg YW1vbmcgdGhlIHZhcmlvdXMgcmVtb3RlIHRhcmdldHMuICAqLwogIAotZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvQ2hhbmdlTG9nIGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLWluZGV4IDc5 OTNhYzUuLjE4MWI3NTIgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwotKysr IGIvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLUBAIC0xMjYzLDYgKzEyNjMsMTAzIEBACi0gCWdk Yl9zdGFydF9jbWQuCi0gCVVzZSBydW50b19tYWluIGJlZm9yZSBhbnkgdGVzdCB0aGF0IHJlcXVp cmVzIGV4ZWN1dGlvbi4KLSAKLSsyMDA4LTEwLTIzICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhh dC5jb20+Ci0rCi0rCSogZ2RiLnB5dGhvbi9weXRob24tcHJldHR5cHJpbnQuZXhwIChydW5fbGFu Z190ZXN0cyk6IFRlc3QKLSsJcHJpbnRpbmcgYSByZWZlcmVuY2UuCi0rCSogZ2RiLnB5dGhvbi9w eXRob24tcHJldHR5cHJpbnQuYyAobWFpbik6IEFkZCByZWZlcmVuY2UuCi0rCi0rMjAwOC0xMC0y MyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwotKwkqIGdkYi5weXRob24vcHl0 aG9uLXByZXR0eXByaW50LmV4cCAocnVuX2xhbmdfdGVzdHMpOiBUZXN0Ci0rCXByaW50aW5nICdj c3RyaW5nJy4KLSsJKiBnZGIucHl0aG9uL3B5dGhvbi1wcmV0dHlwcmludC5jIChtYWluKTogTmV3 IGxvY2FsICdjc3RyaW5nJy4KLSsKLSsyMDA4LTEwLTIyICBUb20gVHJvbWV5ICA8dHJvbWV5QHJl ZGhhdC5jb20+Ci0rCi0rCSogbGliL21pLXN1cHBvcnQuZXhwIChtaV9saXN0X3Zhcm9ial9jaGls ZHJlbl9yYW5nZSk6IE5ldyBwcm9jLgotKwkobWlfbGlzdF92YXJvYmpfY2hpbGRyZW4pOiBVc2Ug aXQuCi0rCSogZ2RiLnB5dGhvbi9weXRob24tbWkuZXhwOiBBZGQgLXZhci1zZXQtdmlzdWFsaXpl ciB0ZXN0cywKLSsJLXZhci1zZXQtY2hpbGQtcmFuZ2UgdGVzdHMuCi0rCi0rMjAwOC0xMC0yMiAg VG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwotKwkqIGdkYi5weXRob24vcHl0aG9u LXByZXR0eXByaW50LnB5IChDb250YWluZXJQcmludGVyLnRvX3N0cmluZyk6Ci0rCVJlbmFtZSBm cm9tICdoZWFkZXInLgotKwotKzIwMDgtMTAtMjIgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0 LmNvbT4KLSsKLSsJKiBnZGIucHl0aG9uL3B5dGhvbi1wcmV0dHlwcmludC5weTogQWRkIE1JIHBy ZXR0eSBwcmludGVyLgotKwkqIGdkYi5weXRob24vcHl0aG9uLW1pLmV4cDogTmV3IGZpbGUuCi0r CSogbGliL21pLXN1cHBvcnQuZXhwIChtaV9jaGlsZF9yZWdleHApOiBOZXcgcHJvYy4KLSsJKG1p X2xpc3RfdmFyb2JqX2NoaWxkcmVuKTogVXNlIGl0LgotKwkobWlfdmFyb2JqX3VwZGF0ZV9keW5h bWljKTogTmV3IHByb2MuCi0rCShtaV9nZXRfZmVhdHVyZXMpOiBOZXcgcHJvYy4KLSsKLSsyMDA4 LTEwLTIxICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotKwkKLSsJ KiBnZGIucHl0aG9uL3B5dGhvbi1wcmV0dHlwcmludC5leHAsCi0rCWdkYi5weXRob24vcHl0aG9u LXByZXR0eXByaW50LmMsCi0rCWdkYi5weXRob24vcHl0aG9uLXByZXR0eXByaW50LnB5OiBNb3Jl IEMrKyB0ZXN0cy4KLSsJCi0rMjAwOC0xMC0yMSAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQu Y29tPgotKwotKwkqIGdkYi5weXRob24vcHl0aG9uLXByZXR0eXByaW50LmV4cCAocnVuX2xhbmdf dGVzdHMpOiBEb24ndCBleHBlY3QKLSsJcXVvdGVzLgotKwotKzIwMDgtMTAtMjAgIFRvbSBUcm9t ZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiBnZGIucHl0aG9uL3B5dGhvbi1wcmV0dHlw cmludC5leHA6IEZpeGVkIGNvbW1lbnQuCi0rCi0rMjAwOC0xMC0yMCAgVG9tIFRyb21leSAgPHRy b21leUByZWRoYXQuY29tPgotKwotKwkqIGdkYi5weXRob24vTWFrZWZpbGUuaW4gKEVYRUNVVEFC TEVTKTogQWRkIHB5dGhvbi1wcmV0dHlwcmludC4KLSsKLSsyMDA4LTEwLTIwICBUb20gVHJvbWV5 ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZ2RiLnB5dGhvbi9weXRob24tcHJldHR5cHJp bnQuZXhwIChydW5fbGFuZ190ZXN0cyk6IEFkZCB0ZXN0cy4KLSsJKiBnZGIucHl0aG9uL3B5dGhv bi1wcmV0dHlwcmludC5jIChzdHJpbmdfcmVwciwgY29udGFpbmVyKTogTmV3Ci0rCXR5cGVzLgot KwkoYXJyYXkpOiBOZXcgZ2xvYmFsLgotKwkoenp6X3R5cGUpOiBOZXcgdHlwZWRlZi4KLSsJKG1h a2Vfc3RyaW5nLCBtYWtlX2NvbnRhaW5lciwgYWRkX2l0ZW0pOiBOZXcgZnVuY3Rpb25zLgotKwko bWFpbik6IEFkZCB2YXJpYWJsZXMuCi0rCSogZ2RiLnB5dGhvbi9weXRob24tcHJldHR5cHJpbnQu cHkgKHN0cmluZ19wcmludCk6IE5ldyBmdW5jdGlvbi4KLSsJKENvbnRhaW5lclByaW50ZXIpOiBO ZXcgY2xhc3MuCi0rCi0rMjAwOC0xMC0yMCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29t PgotKwotKwkqIGdkYi5weXRob24vcHl0aG9uLXByZXR0eXByaW50LmV4cCAocnVuX2xhbmdfdGVz dHMpOiBVc2UgcHl0aG9uJ3MKLSsJZXhlY2ZpbGUgdG8gcmVhZCAucHkgZmlsZS4KLSsJKiBnZGIu cHl0aG9uL3B5dGhvbi1wcmV0dHlwcmludC5weTogUmVtb3ZlICdweXRob24nIGNvbW1hbmQuCi0r Ci0rMjAwOC0xMC0xNyAgUGF1bCBQbHV6aG5pa292ICA8cHBsdXpobmlrb3ZAZ29vZ2xlLmNvbT4K LSsJCi0rCSogZ2RiLnB5dGhvbi9weXRob24tcHJldHR5cHJpbnQuZXhwLAotKwlnZGIucHl0aG9u L3B5dGhvbi1wcmV0dHlwcmludC5jLAotKwlnZGIucHl0aG9uL3B5dGhvbi1wcmV0dHlwcmludC5w eTogQWRkIEMrKyB0ZXN0cy4KLSsJCi0rMjAwOC0xMC0xNyAgUGF1bCBQbHV6aG5pa292ICA8cHBs dXpobmlrb3ZAZ29vZ2xlLmNvbT4KLSsJCi0rCSogZ2RiLnB5dGhvbi9weXRob24tcHJldHR5cHJp bnQuZXhwLAotKwlnZGIucHl0aG9uL3B5dGhvbi1wcmV0dHlwcmludC5jLAotKwlnZGIucHl0aG9u L3B5dGhvbi1wcmV0dHlwcmludC5weTogTmV3IHRlc3QgZm9yIHByZXR0eQotKwlwcmludGluZy4K LSsJCi0rMjAwOC0xMC0xNiAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwotKwkq IGdkYi5weXRob24vTWFrZWZpbGUuaW46IE5ldyBmaWxlLgotKwkqIGNvbmZpZ3VyZTogUmVidWls ZC4KLSsJKiBjb25maWd1cmUuYWM6IEFkZCBnZGIucHl0aG9uL01ha2VmaWxlLgotKwotKzIwMDgt MTAtMTQgIFBhdWwgUGx1emhuaWtvdiAgPHBwbHV6aG5pa292QGdvb2dsZS5jb20+Ci0rCi0rCSog Z2RiLnB5dGhvbi9weXRob24tdmFsdWUuYzogUHJldmVudCBnY2MgZnJvbSBvcHRpbWl6aW5nIGFy Z3ZbXSBvdXQuCi0rCQotKzIwMDgtMTAtMTQgIFBhdWwgUGx1emhuaWtvdiAgPHBwbHV6aG5pa292 QGdvb2dsZS5jb20+Ci0rCi0rCSogTWFrZWZpbGUuaW46IEFkZCBnZGIucHl0aG9uIHRvIEFMTF9T VUJESVJTCi0rCQotIDIwMDgtMTAtMjMgIFBlZHJvIEFsdmVzICA8cGVkcm9AY29kZXNvdXJjZXJ5 LmNvbT4KLSAKLSAJKiBsaWIvbWktc3VwcG9ydC5leHAgKG1pX2V4cGVjdF9pbnRlcnJ1cHQpOiBF eHBlY3Qgc2lnbmFsIDAKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3Bvd2Vy cGMtcG93ZXI3LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvcG93ZXJwYy1wb3dlcjcuZXhw CiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uYWUzMDFkYgpAQCAtMTk1MTYs MTAgKzE5ODc5LDEwIEBAIGluZGV4IDcxY2U0YWEuLmFmMGU1ZjggMTAwNjQ0CiArICAgIH0KICt9 CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cCBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2UvaGVscC5leHAKLWluZGV4IDVmYzY4MGIuLmQyNzFjODEgMTAwNjQ0Citp bmRleCBkNzZjYzM2Li40OTZmZjE4IDEwMDY0NAogLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9oZWxwLmV4cAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9oZWxwLmV4cAotQEAgLTYw NSw3ICs2MDUsNyBAQCBnZGJfdGVzdCAiaGVscCBzdGVwaSIgIlN0ZXAgb25lIGluc3RydWN0aW9u IGV4YWN0bHlcLlxbXHJcblxdK0FyZ3VtZW50IE4gbWVhbnMgZAorQEAgLTYwNiw3ICs2MDYsNyBA QCBnZGJfdGVzdCAiaGVscCBzdGVwaSIgIlN0ZXAgb25lIGluc3RydWN0aW9uIGV4YWN0bHlcLlxb XHJcblxdK0FyZ3VtZW50IE4gbWVhbnMgZAogIGdkYl90ZXN0ICJoZWxwIHNpZ25hbCIgIkNvbnRp bnVlIHByb2dyYW0gZ2l2aW5nIGl0IHNpZ25hbC4qIiAiaGVscCBzaWduYWwiCiAgIyB0ZXN0IGhl bHAgc291cmNlCiAgIyB2eGdkYiByZWFkcyAudnhnZGJpbml0CkBAIC0yMDkzNiwxMCArMjEyOTks MTAgQEAgaW5kZXggMDAwMDAwMC4uZTUwODEwMwogK2dkYl90ZXN0ICJwcmludCBhYmMiICI9IDMz IgogZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUu Y2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3BhY2UtcmVjdXJzaXZlLmNjCiBuZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uY2I3MTJmYQoraW5kZXggMDAwMDAwMC4uODQ2 MDVhNgogLS0tIC9kZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNl LXJlY3Vyc2l2ZS5jYwotQEAgLTAsMCArMSwxNiBAQAorQEAgLTAsMCArMSwzMCBAQAogK25hbWVz cGFjZSBBewogKyAgaW50IGF4ID0gOTsKICt9CkBAIC0yMDk1MiwxNyArMjEzMTUsMzAgQEAgaW5k ZXggMDAwMDAwMC4uY2I3MTJmYQogKyAgdXNpbmcgbmFtZXNwYWNlIEI7CiArfQogKworKy8vLS0t LS0tLS0tLS0tLS0tCisrbmFtZXNwYWNlIER7CisrICB1c2luZyBuYW1lc3BhY2UgRDsKKysgIGlu dCBkeCA9IDk5OworK30KKyt1c2luZyBuYW1lc3BhY2UgQzsKKysKKysvLy0tLS0tLS0tLS0tLS0t LQorK25hbWVzcGFjZXsKKysgIG5hbWVzcGFjZXsKKysgICAgaW50IHh4ID0gOTk5OworKyAgfQor K30KKysKICtpbnQgbWFpbigpewotKyAgdXNpbmcgbmFtZXNwYWNlIEM7Ci0rICByZXR1cm4gYXg7 CisrICB1c2luZyBuYW1lc3BhY2UgRDsKKysgIHJldHVybiBheCArIGR4ICsgeHg7CiArfQotXCBO byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvbmFtZXNwYWNlLXJlY3Vyc2l2ZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uYW1lc3Bh Y2UtcmVjdXJzaXZlLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjRl NmFkMjAKK2luZGV4IDAwMDAwMDAuLmViYzg5OGYKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25hbWVzcGFjZS1yZWN1cnNpdmUuZXhwCi1AQCAtMCwwICsxLDUzIEBA CitAQCAtMCwwICsxLDY2IEBACiArIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0yMTAwNSwxNyArMjEzODEsMzAgQEAg aW5kZXggMDAwMDAwMC4uNGU2YWQyMAogK2dkYl9yZWluaXRpYWxpemVfZGlyICRzcmNkaXIvJHN1 YmRpcgogK2dkYl9sb2FkICR7YmluZmlsZX0KICsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgdGVzdCBwcmludGluZyBvZiBuYW1lc3BhY2UgaW1wb3J0 ZWQgd2l0aGluCi0rIyB0aGUgZnVuY3Rpb24uCi0rCiAraWYgIVtydW50b19tYWluXSB0aGVuIHsK ICsgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBtYWluIgogKyAgICBjb250 aW51ZQogK30KICsKLStzZXR1cF94ZmFpbCAqLSotKgorKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyB0ZXN0IHByaW50aW5nIGZyb20gbmFtZXNwYWNlIGlt cG9ydGVkIGludG8KKysjIGltcG9ydGVkIG5hbWVzcGFjZQorKwogK2dkYl90ZXN0ICJwcmludCBh eCIgIj0gOSIKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IworKyMgdGVzdCB0aGF0IGdkYiBjYW4gcHJpbnQgd2l0aG91dCBmYWxsaW5nIAorKyMgaW50byBz ZWFyY2ggbG9vcAorKworK2dkYl90ZXN0ICJwcmludCBkeCIgIj0gOTkiCisrCisrIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIHRlc3QgcHJpbnRpbmcgZnJv bSBuYW1lc3BhY2UgaW1wb3J0ZWQgaW50bworKyMgaW1wb3J0ZWQgbmFtZXNwYWNlIHdoZXJlIGlt cG9ydHMgYXJlIGltcGxpY2l0CisrIyBhbm9ueW1vdXMgbmFtZXNwYWNlIGltcG9ydHMuCisrCisr Z2RiX3Rlc3QgInByaW50IHh4IiAiPSA5OTkiCisrCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmFtZXNw YWNlLXVzaW5nLmNjCiBpbmRleCA0Nzg2ZmQ1Li44ZmY1NjIyIDEwMDY0NAogLS0tIGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuY3AvbmFtZXNwYWNlLXVzaW5nLmNjCkBAIC0yMjA0NSw1OCArMjI0MzQsMjUw IEBAIGluZGV4IDAwMDAwMDAuLjAwZDY3ZmMKICtmb3Ige3NldCBpIDF9IHskaSA8IDV9IHtpbmNy IGl9IHsKICsgICAgZ2RiX3Rlc3QgInNpIiAiYXJnID0gNzciICJzdGVwICRpIGZvciBjYWxsLWZy YW1lLWNmYSIKICt9Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJpcHBlZC5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMgYi9nZGIvdGVz dHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMuUwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWlu ZGV4IDAwMDAwMDAuLjFmMDJkOTAKK2luZGV4IDAwMDAwMDAuLmQ1YjljYTUKIC0tLSAvZGV2L251 bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwotQEAgLTAs MCArMSw0MiBAQAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLlMK K0BAIC0wLDAgKzEsMTQwIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhl IEdOVSBkZWJ1Z2dlci4KICsKLSsgICBDb3B5cmlnaHQgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KKysgICBDb3B5cmlnaHQgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKICsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogKyAgIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBv ZiB0aGUgTGljZW5zZSwgb3IKKysgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKyAgIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCiArCiArICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiArICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICsgICBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCiArICAg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgCisrCiArICAg WW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0 aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAt IFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCisrICAgYWxv bmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uICAqLwogKworKy8qIFRlc3QgLmRlYnVnX2FyYW5nZXMgY29udGFpbmluZyB6ZXJv IGFkZHJlc3Nfc2l6ZS4gICovCiArCi0rLyogVGhlIGZ1bmN0aW9uIGBmdW5jMScgdHJhY2VkIGlu dG8gbXVzdCBoYXZlIGRlYnVnIGluZm8gb24gb2Zmc2V0ID4gMDsKLSsgICAoRFdfVU5TTkQgKGF0 dHIpKS4gIFRoaXMgaXMgdGhlIHJlYXNvbiBvZiBgZnVuYzAnIGV4aXN0ZW5jZS4gICovCisrLyog RHVtbXkgZnVuY3Rpb24gdG8gcHJvdmlkZSBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IuICAqLwogKwot K3ZvaWQKLStmdW5jMChpbnQgYSwgaW50IGIpCi0rewotK30KKysJLnRleHQKKysuTGJlZ2luX3Rl eHQxOgorKwkuZ2xvYmwgbWFpbgorKwkudHlwZSBtYWluLCAlZnVuY3Rpb24KKyttYWluOgorKy5M YmVnaW5fbWFpbjoKKysJLmludCAwCisrLkxlbmRfbWFpbjoKKysJLnNpemUgbWFpbiwgLi1tYWlu CisrLkxlbmRfdGV4dDE6CiArCi0rLyogYGZ1bmMxJyBiZWluZyB0cmFjZWQgaW50byBtdXN0IGhh dmUgc29tZSBhcmd1bWVudHMgdG8gZHVtcC4gICovCisrLyogRGVidWcgaW5mb3JtYXRpb24gKi8K ICsKLSt2b2lkCi0rZnVuYzEoaW50IGEsIGludCBiKQotK3sKLSsgIGZ1bmMwIChhLGIpOwotK30K KysJLnNlY3Rpb24gLmRlYnVnX2luZm8KKysuTGN1MV9iZWdpbjoKKysJLyogQ1UgaGVhZGVyICov CisrCS40Ynl0ZQkuTGN1MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0 aW9uIFVuaXQgKi8KKysuTGN1MV9zdGFydDoKKysJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lv biAqLworKwkuNGJ5dGUJLkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNl Y3Rpb24gKi8KKysJLmJ5dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KICsKLStpbnQKLSttYWlu KHZvaWQpCi0rewotKyAgZnVuYzEgKDEsIDIpOwotKyAgcmV0dXJuIDA7Ci0rfQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi4xYzZlODRhCi0tLS0gL2Rldi9udWxsCisrCS8qIENVIGRpZSAqLworKwku dWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBpbGVfdW5pdCAqLworKwkuNGJ5dGUJ LkxlbmRfdGV4dDEJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS40Ynl0ZQkuTGJlZ2luX3RleHQx CQkJLyogRFdfQVRfbG93X3BjICovCisrCS5hc2NpaQkiZmlsZTEudHh0XDAiCQkJLyogRFdfQVRf bmFtZSAqLworKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyogRFdfQVRfcHJvZHVjZXIgKi8K KysJLmJ5dGUJMQkJCQkvKiBEV19BVF9sYW5ndWFnZSAoQykgKi8KKysKKysJLyogbWFpbiAqLwor KwkudWxlYjEyOAkyCQkJLyogQWJicmV2OiBEV19UQUdfc3VicHJvZ3JhbSAqLworKwkuYnl0ZQkJ MQkJCS8qIERXX0FUX2V4dGVybmFsICovCisrCS5ieXRlCQkxCQkJLyogRFdfQVRfZGVjbF9maWxl ICovCisrCS5ieXRlCQkyCQkJLyogRFdfQVRfZGVjbF9saW5lICovCisrCS5hc2NpaQkJIm1haW5c MCIJCS8qIERXX0FUX25hbWUgKi8KKysJLjRieXRlCQkuTHR5cGVfaW50LS5MY3UxX2JlZ2luCS8q IERXX0FUX3R5cGUgKi8KKysJLjRieXRlCQkuTGJlZ2luX21haW4JLyogRFdfQVRfbG93X3BjICov CisrCS40Ynl0ZQkJLkxlbmRfbWFpbgkJLyogRFdfQVRfaGlnaF9wYyAqLworKwkuYnl0ZQkJMQkJ CS8qIERXX0FUX2ZyYW1lX2Jhc2U6IGxlbmd0aCAqLworKwkuYnl0ZQkJMHg1NQkJCS8qIERXX0FU X2ZyYW1lX2Jhc2U6IERXX09QX3JlZzUgKi8KKysKKysuTHR5cGVfaW50OgorKwkudWxlYjEyOAkz CQkJLyogQWJicmV2OiBEV19UQUdfYmFzZV90eXBlICovCisrCS5hc2NpaQkJImludFwwIgkJCS8q IERXX0FUX25hbWUgKi8KKysJLmJ5dGUJCTQJCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KKysJLmJ5 dGUJCTUJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKworKwkuYnl0ZQkJMAkJCS8qIEVuZCBvZiBj aGlsZHJlbiBvZiBDVSAqLworKworKy5MY3UxX2VuZDoKKysKKysvKiBBYmJyZXYgdGFibGUgKi8K KysJLnNlY3Rpb24gLmRlYnVnX2FiYnJldgorKy5MYWJicmV2MV9iZWdpbjoKKysJLnVsZWIxMjgJ MQkJCS8qIEFiYnJldiBjb2RlICovCisrCS51bGViMTI4CTB4MTEJCQkvKiBEV19UQUdfY29tcGls ZV91bml0ICovCisrCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4 MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCisrCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRk ciAqLworKwkudWxlYjEyOAkweDExCQkJLyogRFdfQVRfbG93X3BjICovCisrCS51bGViMTI4CTB4 MQkJCS8qIERXX0ZPUk1fYWRkciAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICov CisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4CTB4MjUJ CQkvKiBEV19BVF9wcm9kdWNlciAqLworKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmlu ZyAqLworKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KKysJLnVsZWIxMjgJ MHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LworKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLworKworKwkudWxlYjEyOAkyCQkJLyog QWJicmV2IGNvZGUgKi8KKysJLnVsZWIxMjgJMHgyZQkJCS8qIERXX1RBR19zdWJwcm9ncmFtICov CisrCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCisrCS51bGViMTI4CTB4M2YJCQkvKiBE V19BVF9leHRlcm5hbCAqLworKwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KKysJ LnVsZWIxMjgJMHgzYQkJCS8qIERXX0FUX2RlY2xfZmlsZSAqLworKwkudWxlYjEyOAkweGIJCQkv KiBEV19GT1JNX2RhdGExICovCisrCS51bGViMTI4CTB4M2IJCQkvKiBEV19BVF9kZWNsX2xpbmUg Ki8KKysJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLworKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov CisrCS51bGViMTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCisrCS51bGViMTI4CTB4MTMJCQkv KiBEV19GT1JNX3JlZjQgKi8KKysJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwor KwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KKysJLnVsZWIxMjgJMHgxMgkJCS8q IERXX0FUX2hpZ2hfcGMgKi8KKysJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCisr CS51bGViMTI4CTB4NDAJCQkvKiBEV19BVF9mcmFtZV9iYXNlICovCisrCS51bGViMTI4CTB4YQkJ CS8qIERXX0ZPUk1fYmxvY2sxICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisr CS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrCS51bGViMTI4CTMJCQkvKiBBYmJy ZXYgY29kZSAqLworKwkudWxlYjEyOAkweDI0CQkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLworKwku Ynl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLworKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9u YW1lICovCisrCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCisrCS51bGViMTI4 CTB4YgkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLworKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JN X2RhdGExICovCisrCS51bGViMTI4CTB4M2UJCQkvKiBEV19BVF9lbmNvZGluZyAqLworKwkudWxl YjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5h dG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisrCS5ieXRlCQkweDAJ CQkvKiBUZXJtaW5hdG9yICovCisrCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCisrCisr LyogYXJhbmdlcyB0YWJsZSAqLworKwkuc2VjdGlvbiAuZGVidWdfYXJhbmdlcworKwkubG9uZwku TGFyYW5nZXNfZW5kIC0gMWYKKysxOgorKwkuMmJ5dGUJMgkJCQkvKiBhcmFuZ2VzIFZlcnNpb24g Ki8KKysJLjRieXRlCS5MY3UxX2JlZ2luIC0gLmRlYnVnX2luZm8JLyogT2Zmc2V0IGludG8gLmRl YnVnX2luZm8gc2VjdGlvbiAqLworKwkvKiBUaGUgR0RCIGNyYXNoZXIgaXMgdGhpcyB6ZXJvIHZh bHVlLiAgKi8KKysJLmJ5dGUJCTAJCQkvKiBhcmFuZ2VzIGFkZHJlc3Nfc2l6ZSAqLworKwkuYnl0 ZQkJMAkJCS8qIGFyYW5nZXMgc2VnbWVudF9zaXplICovCisrCisrLkxhcmFuZ2VzX2VuZDoKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWFyYW5nZXMuZXhwIGIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1hcmFuZ2VzLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjM5NjMyZDUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmR3YXJmMi9kdzItYXJhbmdlcy5leHAKK0BAIC0wLDAgKzEsNDAgQEAKKysjIENv cHlyaWdodCAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0 aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK KysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh cnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS IFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y ZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4g IElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKysjIFRlc3Qg LmRlYnVnX2FyYW5nZXMgY29udGFpbmluZyB6ZXJvIGFkZHJlc3Nfc2l6ZS4KKysKKysjIFRoaXMg dGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5k IHVzZSBnYXMuCisrIyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4K KytpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUq XQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQorKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1v cGVuYnNkKl0KKysgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KKysgICAgJiYgIVtpc3Rh cmdldCBwb3dlcnBjLSotZWFiaSpdfSB7CisrICAgIHJldHVybiAwICAKKyt9CisrCisrc2V0IHRl c3RmaWxlICJkdzItYXJhbmdlcyIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5TCisrc2V0IGJp bmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorKworK2lmICB7IFtnZGJfY29t cGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0 YWJsZSB7bm9kZWJ1Z31dICE9ICIiIH0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrY2xlYW5f cmVzdGFydCAkdGVzdGZpbGUKKysKKysjIEZhaWxlZCBnZGJfbG9hZCB3b3VsZCBhYm9ydCB0aGUg dGVzdGNhc2UgZXhlY3V0aW9uIGVhcmxpZXIuCisrcGFzcyAiZmlsZSBsb2FkZWQiCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uMWYwMmQ5MAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCitAQCAtMCwwICsxLDQyIEBACisrLyogVGhpcyB0ZXN0 Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KKysKKysgICBDb3B5cmlnaHQg MjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysgICBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor KyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisrICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgICAoYXQgeW91ciBvcHRpb24pIGFueSBs YXRlciB2ZXJzaW9uLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrICAgTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAgIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrIAorKyAgIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKKysgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0 ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKKysgICBVU0EuICAqLworKworKworKy8qIFRo ZSBmdW5jdGlvbiBgZnVuYzEnIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBkZWJ1ZyBpbmZvIG9uIG9m ZnNldCA+IDA7CisrICAgKERXX1VOU05EIChhdHRyKSkuICBUaGlzIGlzIHRoZSByZWFzb24gb2Yg YGZ1bmMwJyBleGlzdGVuY2UuICAqLworKworK3ZvaWQKKytmdW5jMChpbnQgYSwgaW50IGIpCisr eworK30KKysKKysvKiBgZnVuYzEnIGJlaW5nIHRyYWNlZCBpbnRvIG11c3QgaGF2ZSBzb21lIGFy Z3VtZW50cyB0byBkdW1wLiAgKi8KKysKKyt2b2lkCisrZnVuYzEoaW50IGEsIGludCBiKQorK3sK KysgIGZ1bmMwIChhLGIpOworK30KKysKKytpbnQKKyttYWluKHZvaWQpCisreworKyAgZnVuYzEg KDEsIDIpOworKyAgcmV0dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItc3RyaXBwZWQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1z dHJpcHBlZC5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xYzZlODRh CistLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlw cGVkLmV4cAogQEAgLTAsMCArMSw3OSBAQAogKyMgQ29weXJpZ2h0IDIwMDYgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0yMjU4NiwxMCArMjMxNjcsMTAgQEAgaW5kZXggMDAwMDAw MC4uZTQ5MmIzYQogK2VuZCBwcm9ncmFtIHJlcHJvCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy5leHAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5mODljZjZiCitp bmRleCAwMDAwMDAwLi4wY2NlYmUwCiAtLS0gL2Rldi9udWxsCiArKysgYi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCi1AQCAtMCwwICsxLDE1OCBAQAorQEAgLTAsMCArMSwx NDUgQEAKICsjIENvcHlyaWdodCAyMDA3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKQEAgLTIyNzM1LDE5ICsyMzMxNiw2IEBAIGluZGV4IDAwMDAwMDAu LmY4OWNmNmIKICtnZGJfdGVzdCAicCB2YXJ0KDMsOCkiICJcXCRcWzAtOVxdKiA9IDkiCiArIyBt YXBzIHRvIGZvbzo6dmFyeSgxLDMpCiArZ2RiX3Rlc3QgInAgdmFydCgyLDkpIiAiXFwkXFswLTlc XSogPSAxMCIKLSsKLStzZXQgdGVzdCAicXVpdCAjMSIKLStnZGJfdGVzdF9tdWx0aXBsZSAicXVp dCIgJHRlc3QgewotKyAgICAtcmUgIlRoZSBwcm9ncmFtIGlzIHJ1bm5pbmcuICBRdWl0IGFueXdh eSBcXChhbmQga2lsbCBpdFxcKVxcPyBcXCh5IG9yIG5cXCkgIiB7Ci0rCXBhc3MgJHRlc3QKLSsg ICAgfQotK30KLStzZXQgdGVzdCAicXVpdCAjMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAieSIgJHRl c3QgewotKyAgICBlb2YgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9CiBkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy5mOTAKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAw Li4wZjQzNTY0CkBAIC0yMjg1Miw2ICsyMzQyMCwxMjggQEAgaW5kZXggMDAwMDAwMC4uMGY0MzU2 NAogKyAgaWYgKHggKDEsIDEpIC5uZS4gOCAub3IuIHggKDIsIDIpIC5uZS4gOSAub3IuIHggKDEs IDIpIC5uZS4gNCkgY2FsbCBhYm9ydAogKyAgaWYgKHggKDMsIDEpIC5uZS4gMTApIGNhbGwgYWJv cnQKICtlbmQKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnkt bW9kdWxlLWxpYi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9kdWxl LWxpYi5mOTAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42MzY5ZDM0Cist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLWxpYi5mOTAKK0BAIC0wLDAgKzEsMjggQEAKKyshIENvcHlyaWdodCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyEgCisrISBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyEgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKKyshIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCisrISAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgor KyEgCisrISBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKKyshIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrISBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrISBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyEgCisrISBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyEgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrCisrbW9kdWxlIGxpYgorKyAgICAgICAgaW50ZWdlciA6OiB2YXJfaSA9IDEKKytjb250 YWlucworKyAgICAgICAgc3Vicm91dGluZSBsaWJfZnVuYworKyAgICAgICAgaWYgKHZhcl9pIC5u ZS4gMSkgY2FsbCBhYm9ydAorKyAgICAgICAgdmFyX2kgPSAyCisrICAgICAgICBlbmQgc3Vicm91 dGluZSBsaWJfZnVuYworK2VuZCBtb2R1bGUgbGliCisrCisrbW9kdWxlIGxpYm1hbnkKKysgICAg ICAgIGludGVnZXIgOjogdmFyX2ogPSAzCisrICAgICAgICBpbnRlZ2VyIDo6IHZhcl9rID0gNAor K2VuZCBtb2R1bGUgbGlibWFueQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vbGlicmFyeS1tb2R1bGUtbWFpbi5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xp YnJhcnktbW9kdWxlLW1haW4uZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uZGU2M2E2NQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9saWJyYXJ5LW1vZHVsZS1tYWluLmY5MAorQEAgLTAsMCArMSwyMyBAQAorKyEgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrISAKKyshIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 CisrISBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyEgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKKyshIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCisrISAKKyshIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyEgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyshIE1FUkNIQU5UQUJJTElU WSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyshIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrISAKKyshIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl CisrISBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KKysKKysgICAgICAgIHVzZSBsaWIKKysJdXNlIGxpYm1hbnksIG9u bHk6IHZhcl9qCisrICAgICAgICBpZiAodmFyX2kgLm5lLiAxKSBjYWxsIGFib3J0CisrCWNhbGwg bGliX2Z1bmMKKysgICAgICAgIGlmICh2YXJfaSAubmUuIDIpIGNhbGwgYWJvcnQKKysgICAgICAg IGlmICh2YXJfaiAubmUuIDMpIGNhbGwgYWJvcnQKKysgICAgICAgIHZhcl9pID0gdmFyX2kgICAg ICAgICAgICAgICAgICEgaS1pcy0yCisrZW5kCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2xpYnJhcnktbW9kdWxlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LjRiNGVhNGMKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bGlicmFyeS1tb2R1bGUuZXhwCitAQCAtMCwwICsxLDUzIEBACisrIyBDb3B5cmlnaHQgMjAwOSBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgcHJvZ3JhbSBpcyBmcmVl IHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrIyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQorKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24g MyBvZiB0aGUgTGljZW5zZSwgb3IKKysjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp b24uCisrIworKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisrCisrc2V0IHRlc3RmaWxlICJsaWJyYXJ5LW1vZHVsZSIKKytzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS1tYWluLmY5MAorK3NldCBzcmNsaWJmaWxlICR7dGVzdGZpbGV9LWxpYi5mOTAK KytzZXQgbGliZmlsZSAke3Rlc3RmaWxlfS1saWIuc28KKytzZXQgYmluZmlsZSAke3Rlc3RmaWxl fQorKworKyMgUmVxdWlyZWQgZm9yIC1mUElDIGJ5IGdkYl9jb21waWxlX3NobGliLgorK2lmIFtn ZXRfY29tcGlsZXJfaW5mbyBub3QtdXNlZF0geworKyAgIHdhcm5pbmcgIkNvdWxkIG5vdCBnZXQg Y29tcGlsZXIgaW5mbyIKKysgICByZXR1cm4gLTEKKyt9CisrCisraWYgIHsgW2dkYl9jb21waWxl X3NobGliICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjbGliZmlsZX0iICRvYmpkaXIvJHN1YmRp ci8kbGliZmlsZSB7ZGVidWcgZjc3fV0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlICR7c3JjbGliZmlsZX0iCisrICAgIHJldHVybiAtMQorK30KKysKKysjIHByZXBh cmVfZm9yX3Rlc3RpbmcgY2Fubm90IGJlIHVzZWQgYXMgbGlua2luZyB3aXRoICRsaWJmaWxlIGNh bm5vdCBiZSBwYXNzZWQKKysjIGp1c3QgZm9yIHRoZSBsaW5raW5nIHBoYXNlIChhbmQgbm90IHRo ZSBzb3VyY2UgY29tcGlsYXRpb24gcGhhc2UpLiAgQW5kIGFueQorKyMgd2FybmluZ3Mgb24gaWdu b3JlZCAkbGliZmlsZSBhYm9ydCB0aGUgcHJvY2Vzcy4KKysKKytpZiAgeyBbZ2RiX2NvbXBpbGUg W2xpc3QgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRpci8kbGliZmlsZV0g JG9iamRpci8kc3ViZGlyLyRiaW5maWxlIGV4ZWN1dGFibGUge2RlYnVnIGY3N31dICE9ICIiIH0g eworKyAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgorKyAgICByZXR1 cm4gLTEKKyt9CisrCisrY2xlYW5fcmVzdGFydCAkYmluZmlsZQorKworK2lmICFbcnVudG8gTUFJ Tl9fXSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gYnJlYWtwb2ludCBNQUlO X18iCisrICAgIGNvbnRpbnVlCisrfQorKworK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJpLWlzLTIiXQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJpLWlzLTIiICIu KmktaXMtMi4qIgorK2dkYl90ZXN0ICJwcmludCB2YXJfaSIgIiA9IDIiCisrZ2RiX3Rlc3QgInBy aW50IHZhcl9qIiAiID0gMyIKKytnZGJfdGVzdCAicHJpbnQgdmFyX2siICJObyBzeW1ib2wgXCJ2 YXJfa1wiIGluIGN1cnJlbnQgY29udGV4dFxcLiIKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2xvZ2ljYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9sb2dp Y2FsLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLmVmNzZmNDMKQEAg LTIyOTQxLDEyICsyMzYzMSwxMDQgQEAgaW5kZXggMDAwMDAwMC4uNDIyOTMwNAogKyAgbDggPSAu VFJVRS4KICsgIGwgPSAuRkFMU0UuCQkJCQkhIHN0b3AtaGVyZQogK2VuZAorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vbW9kdWxlLmV4cAoraW5kZXggMzQyY2NlZS4uYzgzNmMzYyAxMDA2NDQKKy0tLSBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCitAQCAtMTUsMjEgKzE1LDMxIEBACisgCisgc2V0IHRl c3RmaWxlICJtb2R1bGUiCisgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCistc2V0IGJpbmZp bGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQorIAorLWlmICB7IFtnZGJfY29tcGls ZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJs ZSB7ZGVidWcgZjc3IHF1aWV0fV0gIT0gIiIgfSB7CistICAgIHVudGVzdGVkICJDb3VsZG4ndCBj b21waWxlICR7c3JjZmlsZX0iCisraWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAkdGVzdGZpbGUu ZXhwICR0ZXN0ZmlsZSAkc3JjZmlsZSB7ZGVidWcgZjc3fV0gfSB7CisgICAgIHJldHVybiAtMQor IH0KKyAKKy1nZGJfZXhpdAorLWdkYl9zdGFydAorLWdkYl9yZWluaXRpYWxpemVfZGlyICRzcmNk aXIvJHN1YmRpcgorLWdkYl9sb2FkICR7YmluZmlsZX0KKy0KKyBpZiAhW3J1bnRvIE1BSU5fX10g dGhlbiB7CisgICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIGJyZWFrcG9pbnQgTUFJTl9fIgor ICAgICBjb250aW51ZQorIH0KKyAKKy1nZGJfdGVzdCAicHJpbnQgaSIgIiA9IDQyIgorKyMgRG8g bm90IHVzZSBzaW1wbGUgc2luZ2xlLWxldHRlciBuYW1lcyBhcyBHREIgd291bGQgcGljayB1cCBm b3IgZXhwZWN0ZWRseQorKyMgbm9uZXhpc3Rpbmcgc3ltYm9scyBzb21lIHN0YXRpYyB2YXJpYWJs ZXMgZnJvbSBzeXN0ZW0gbGlicmFyaWVzIGRlYnVnaW5mb3MuCisrCisrZ2RiX2JyZWFrcG9pbnQg W2dkYl9nZXRfbGluZV9udW1iZXIgImktaXMtMSJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9p bnQgImktaXMtMSIgIi4qaS1pcy0xLioiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9pIiAiID0gMSIg InByaW50IHZhcl9pIHZhbHVlIDEiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9u dW1iZXIgImktaXMtMiJdCisrZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImktaXMtMiIgIi4q aS1pcy0yLioiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9pIiAiID0gMiIgInByaW50IHZhcl9pIHZh bHVlIDIiCisrCisrZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgImEtYi1jLWQi XQorK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJhLWItYy1kIiAiLiphLWItYy1kLioiCisr Z2RiX3Rlc3QgInByaW50IHZhcl9hIiAiTm8gc3ltYm9sIFwidmFyX2FcIiBpbiBjdXJyZW50IGNv bnRleHRcXC4iCisrZ2RiX3Rlc3QgInByaW50IHZhcl9iIiAiID0gMTEiCisrZ2RiX3Rlc3QgInBy aW50IHZhcl9jIiAiTm8gc3ltYm9sIFwidmFyX2NcIiBpbiBjdXJyZW50IGNvbnRleHRcXC4iCisr Z2RiX3Rlc3QgInByaW50IHZhcl9kIiAiID0gMTIiCisrZ2RiX3Rlc3QgInByaW50IHZhcl9pIiAi ID0gMTQiICJwcmludCB2YXJfaSB2YWx1ZSAxNCIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL21vZHVsZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVs ZS5mOTAKK2luZGV4IDUwMWNjYzguLjExODkzMWQgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL21vZHVsZS5mOTAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bW9kdWxlLmY5MAorQEAgLTEzLDEwICsxMywzNyBAQAorICEgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAhIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LgorIAorLW1vZHVsZSBtb2QKKy0gICAgICAgIGludGVnZXIgOjogaSA9IDQyCistZW5kIG1v ZHVsZSBtb2QKKyttb2R1bGUgbW9kMQorKyAgICAgICAgaW50ZWdlciA6OiB2YXJfaSA9IDEKKytl bmQgbW9kdWxlIG1vZDEKKyAKKy0gICAgICAgIHVzZSBtb2QKKy0gICAgICAgIHByaW50ICosIGkK Kyttb2R1bGUgbW9kMgorKyAgICAgICAgaW50ZWdlciA6OiB2YXJfaSA9IDIKKytlbmQgbW9kdWxl IG1vZDIKKysKKyttb2R1bGUgbW9kbWFueQorKyAgICAgICAgaW50ZWdlciA6OiB2YXJfYSA9IDEw LCB2YXJfYiA9IDExLCB2YXJfYyA9IDEyLCB2YXJfaSA9IDE0CisrZW5kIG1vZHVsZSBtb2RtYW55 CisrCisrICAgICAgICBzdWJyb3V0aW5lIHN1YjEKKysgICAgICAgIHVzZSBtb2QxCisrICAgICAg ICBpZiAodmFyX2kgLm5lLiAxKSBjYWxsIGFib3J0CisrICAgICAgICB2YXJfaSA9IHZhcl9pICAg ICAgICAgICAgICAgICAgICAgICAgICEgaS1pcy0xCisrICAgICAgICBlbmQKKysKKysgICAgICAg IHN1YnJvdXRpbmUgc3ViMgorKyAgICAgICAgdXNlIG1vZDIKKysgICAgICAgIGlmICh2YXJfaSAu bmUuIDIpIGNhbGwgYWJvcnQKKysgICAgICAgIHZhcl9pID0gdmFyX2kgICAgICAgICAgICAgICAg ICAgICAgICAgISBpLWlzLTIKKysgICAgICAgIGVuZAorKworKyAgICAgICAgdXNlIG1vZG1hbnks IG9ubHk6IHZhcl9iLCB2YXJfZCA9PiB2YXJfYywgdmFyX2kKKysKKysgICAgICAgIGNhbGwgc3Vi MQorKyAgICAgICAgY2FsbCBzdWIyCisrCisrICAgICAgICBpZiAodmFyX2IgLm5lLiAxMSkgY2Fs bCBhYm9ydAorKyAgICAgICAgaWYgKHZhcl9kIC5uZS4gMTIpIGNhbGwgYWJvcnQKKysgICAgICAg IGlmICh2YXJfaSAubmUuIDE0KSBjYWxsIGFib3J0CisrICAgICAgICB2YXJfYiA9IHZhcl9iICAg ICAgICAgICAgICAgICAgICAgICAgICEgYS1iLWMtZAorIGVuZAogZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmV4cAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmFiNzIy MDYKK2luZGV4IDAwMDAwMDAuLmIxMTIwYzMKIC0tLSAvZGV2L251bGwKICsrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAotQEAgLTAsMCArMSw3MiBAQAorQEAgLTAsMCAr MSw1OSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1 dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMjMwMDYsMTkgKzIzNzg4LDYgQEAgaW5kZXggMDAwMDAw MC4uYWI3MjIwNgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJ2YXItZmluaXNoIgogK2dk Yl90ZXN0ICJwIGUiICJcXCRcWzAtOVxdKiA9ICdlICAgJyIgInAgZSByZS1zZXQiCiArZ2RiX3Rl c3QgInAgZiIgIlxcJFxbMC05XF0qID0gXFwoXFwoICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCggJ2YyICAnLCAnZiAgICcsICdmICAg JywgJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnXFwpIFxcKCAnZiAgICcsICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICdcXCkgXFwpIiAicCAqZiByZS1z ZXQiCi0rCi0rc2V0IHRlc3QgInF1aXQgIzEiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInF1aXQiICR0 ZXN0IHsKLSsgICAgLXJlICJUaGUgcHJvZ3JhbSBpcyBydW5uaW5nLiAgUXVpdCBhbnl3YXkgXFwo YW5kIGtpbGwgaXRcXClcXD8gXFwoeSBvciBuXFwpICIgewotKwlwYXNzICR0ZXN0Ci0rICAgIH0K LSt9Ci0rc2V0IHRlc3QgInF1aXQgIzIiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInkiICR0ZXN0IHsK LSsgICAgZW9mIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rfQogZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmY5MAogbmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjIyNmRj NWQKQEAgLTI0NDU1LDcgKzI1MjI0LDcgQEAgaW5kZXggYTdhYzNjOC4uODE1YzgyZCAxMDA2NDQK ICB9CiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCi1pbmRleCBkZTQ5NDE4 Li4yMzdlNTc1IDEwMDY0NAoraW5kZXggY2I1MWUwOC4uYjEyNmE4YSAxMDA2NDQKIC0tLSBhL2dk Yi90b3AuYwogKysrIGIvZ2RiL3RvcC5jCiBAQCAtMzc4LDYgKzM3OCw3IEBAIGV4ZWN1dGVfY29t bWFuZCAoY2hhciAqcCwgaW50IGZyb21fdHR5KQpAQCAtMjQ0NjcsNyArMjUyMzYsNyBAQCBpbmRl eCBkZTQ5NDE4Li4yMzdlNTc1IDEwMDY0NAogICAgLyogRm9yY2UgY2xlYW51cCBvZiBhbnkgYWxs b2NhIGFyZWFzIGlmIHVzaW5nIEMgYWxsb2NhIGluc3RlYWQgb2YKICAgICAgIGEgYnVpbHRpbiBh bGxvY2EuICAqLwogZGlmZiAtLWdpdCBhL2dkYi90eXBlcHJpbnQuYyBiL2dkYi90eXBlcHJpbnQu YwotaW5kZXggODEzM2FkMC4uMGFmNjJlMSAxMDA2NDQKK2luZGV4IGYwOTAyMzEuLmZjMTVlYzEg MTAwNjQ0CiAtLS0gYS9nZGIvdHlwZXByaW50LmMKICsrKyBiL2dkYi90eXBlcHJpbnQuYwogQEAg LTM1LDYgKzM1LDggQEAKQEAgLTI0NDg5LDcgKzI1MjU4LDcgQEAgaW5kZXggODEzM2FkMC4uMGFm NjJlMSAxMDA2NDQKICAgIExBX1BSSU5UX1RZUEUgKHR5cGUsIHZhcnN0cmluZywgc3RyZWFtLCBz aG93LCAwKTsKICB9CiAgCi1AQCAtMTE1LDcgKzEyMCw4IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4 cCwgaW50IHNob3cpCitAQCAtMTE0LDcgKzExOSw4IEBAIHdoYXRpc19leHAgKGNoYXIgKmV4cCwg aW50IHNob3cpCiAgewogICAgc3RydWN0IGV4cHJlc3Npb24gKmV4cHI7CiAgICBzdHJ1Y3QgdmFs dWUgKnZhbDsKQEAgLTI0NDk5LDcgKzI1MjY4LDcgQEAgaW5kZXggODEzM2FkMC4uMGFmNjJlMSAx MDA2NDQKICAgIHN0cnVjdCB0eXBlICpyZWFsX3R5cGUgPSBOVUxMOwogICAgc3RydWN0IHR5cGUg KnR5cGU7CiAgICBpbnQgZnVsbCA9IDA7Ci1AQCAtMTI2LDEyICsxMzIsMTMgQEAgd2hhdGlzX2V4 cCAoY2hhciAqZXhwLCBpbnQgc2hvdykKK0BAIC0xMjUsMTIgKzEzMSwxMyBAQCB3aGF0aXNfZXhw IChjaGFyICpleHAsIGludCBzaG93KQogICAgaWYgKGV4cCkKICAgICAgewogICAgICAgIGV4cHIg PSBwYXJzZV9leHByZXNzaW9uIChleHApOwpAQCAtMjQ1MTQsNyArMjUyODMsNyBAQCBpbmRleCA4 MTMzYWQwLi4wYWY2MmUxIDEwMDY0NAogICAgdHlwZSA9IHZhbHVlX3R5cGUgKHZhbCk7CiAgCiAg ICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7Ci1AQCAtMTY4LDggKzE3NSw3IEBAIHdo YXRpc19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCitAQCAtMTY3LDggKzE3NCw3IEBAIHdoYXRp c19leHAgKGNoYXIgKmV4cCwgaW50IHNob3cpCiAgICB0eXBlX3ByaW50ICh0eXBlLCAiIiwgZ2Ri X3N0ZG91dCwgc2hvdyk7CiAgICBwcmludGZfZmlsdGVyZWQgKCJcbiIpOwogIApAQCAtMjQ1NDMs NyArMjUzMTIsNyBAQCBpbmRleCBmNTYxMzEwLi5kMjYxYzc5IDEwMDY0NAogK3ZvaWQgY190eXBl X3ByaW50X2FyZ3MgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgZW51bSBs YW5ndWFnZSk7CiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvZ2RiL3VpLWZpbGUuYyBiL2dkYi91aS1m aWxlLmMKLWluZGV4IDAyYTAzMTQuLjVjOGM5NmUgMTAwNjQ0CitpbmRleCA1Mjc5MTdjLi4wN2Q5 NTlhIDEwMDY0NAogLS0tIGEvZ2RiL3VpLWZpbGUuYwogKysrIGIvZ2RiL3VpLWZpbGUuYwogQEAg LTIyLDYgKzIyLDcgQEAKQEAgLTI0NTYzLDggKzI1MzMyLDggQEAgaW5kZXggMDJhMDMxNC4uNWM4 Yzk2ZSAxMDA2NDQKICAKICBzdHJ1Y3QgYWNjdW11bGF0ZWRfdWlfZmlsZQogIHsKLUBAIC0yOTcs NiArMjk4LDIzIEBAIHVpX2ZpbGVfeHN0cmR1cCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsCi0gICAq bGVuZ3RoID0gYWNjLmxlbmd0aDsKK0BAIC0yOTcsNiArMjk4LDIzIEBAIHVpX2ZpbGVfeHN0cmR1 cCAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGxvbmcgKmxlbmd0aCkKKyAgICAgKmxlbmd0aCA9IGFj Yy5sZW5ndGg7CiAgICByZXR1cm4gYWNjLmJ1ZmZlcjsKICB9CiArCkBAIC0yNDU4OCw3ICsyNTM1 Nyw3IEBAIGluZGV4IDAyYTAzMTQuLjVjOGM5NmUgMTAwNjQ0CiAgLyogQSBwdXJlIG1lbW9yeSBi YXNlZCBgYHN0cnVjdCB1aV9maWxlJycgdGhhdCBjYW4gYmUgdXNlZCBhbiBvdXRwdXQKICAgICBi dWZmZXIuIFRoZSBidWZmZXJzIGFjY3VtdWxhdGVkIGNvbnRlbnRzIGFyZSBhdmFpbGFibGUgdmlh CiBkaWZmIC0tZ2l0IGEvZ2RiL3VpLWZpbGUuaCBiL2dkYi91aS1maWxlLmgKLWluZGV4IDE1NjJk NWEuLmQ4NmE3ZWIgMTAwNjQ0CitpbmRleCBiZjk5MTVjLi4yMzMyMDZjIDEwMDY0NAogLS0tIGEv Z2RiL3VpLWZpbGUuaAogKysrIGIvZ2RiL3VpLWZpbGUuaAogQEAgLTE5LDYgKzE5LDcgQEAKQEAg LTI0NjAwLDcgKzI1MzY5LDcgQEAgaW5kZXggMTU2MmQ1YS4uZDg2YTdlYiAxMDA2NDQKICAKICAv KiBDcmVhdGUgYSBnZW5lcmljIHVpX2ZpbGUgb2JqZWN0IHdpdGggbnVsbCBtZXRob2RzLiAqLwog QEAgLTc3LDcgKzc4LDEwIEBAIGV4dGVybiB2b2lkIHVpX2ZpbGVfcHV0IChzdHJ1Y3QgdWlfZmls ZSAqc3JjLCB1aV9maWxlX3B1dF9tZXRob2RfZnR5cGUgKndyaXRlLCB2Ci0gICAgYXBwZW5kZWQg TlVMLiAqLworICAgIG1pbnVzIHRoYXQgYXBwZW5kZWQgTlVMLiAqLwogIGV4dGVybiBjaGFyICp1 aV9maWxlX3hzdHJkdXAgKHN0cnVjdCB1aV9maWxlICpmaWxlLCBsb25nICpsZW5ndGgpOwogIAog LQpAQCAtMjQ2MTIsMTAgKzI1MzgxLDEwIEBAIGluZGV4IDE1NjJkNWEuLmQ4NmE3ZWIgMTAwNjQ0 CiAgZXh0ZXJuIGxvbmcgdWlfZmlsZV9yZWFkIChzdHJ1Y3QgdWlfZmlsZSAqZmlsZSwgY2hhciAq YnVmLCBsb25nIGxlbmd0aF9idWYpOwogIAogZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2Ri L3V0aWxzLmMKLWluZGV4IGEyNjZiMDIuLjNkOTUzZTMgMTAwNjQ0CitpbmRleCA1ZmEyZjI2Li5m OTg1ZmE5IDEwMDY0NAogLS0tIGEvZ2RiL3V0aWxzLmMKICsrKyBiL2dkYi91dGlscy5jCi1AQCAt MjYwNSw3ICsyNjA1LDEwIEBAIGZwcmludGZfc3ltYm9sX2ZpbHRlcmVkIChzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLCBjaGFyICpuYW1lLAorQEAgLTI2MDQsNyArMjYwNCwxMCBAQCBmcHJpbnRmX3N5 bWJvbF9maWx0ZXJlZCAoc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgY2hhciAqbmFtZSwKICAgICBB cyBhbiBleHRyYSBoYWNrLCBzdHJpbmcxPT0iRk9PKEFSR1MpIiBtYXRjaGVzIHN0cmluZzI9PSJG T08iLgogICAgIFRoaXMgImZlYXR1cmUiIGlzIHVzZWZ1bCB3aGVuIHNlYXJjaGluZyBmb3IgbWF0 Y2hpbmcgQysrIGZ1bmN0aW9uIG5hbWVzCiAgICAgKHN1Y2ggYXMgaWYgdGhlIHVzZXIgdHlwZXMg J2JyZWFrIEZPTycsIHdoZXJlIEZPTyBpcyBhIG1hbmdsZWQgQysrCkBAIC0yNDYyNyw3ICsyNTM5 Niw3IEBAIGluZGV4IGEyNjZiMDIuLjNkOTUzZTMgMTAwNjQ0CiAgCiAgaW50CiAgc3RyY21wX2l3 IChjb25zdCBjaGFyICpzdHJpbmcxLCBjb25zdCBjaGFyICpzdHJpbmcyKQotQEAgLTI2MzAsNyAr MjYzMyw3IEBAIHN0cmNtcF9pdyAoY29uc3QgY2hhciAqc3RyaW5nMSwgY29uc3QgY2hhciAqc3Ry aW5nMikKK0BAIC0yNjI5LDcgKzI2MzIsNyBAQCBzdHJjbXBfaXcgKGNvbnN0IGNoYXIgKnN0cmlu ZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCiAgCSAgc3RyaW5nMisrOwogIAl9CiAgICAgIH0KQEAg LTI0NzI3LDcgKzI1NDk2LDcgQEAgaW5kZXggYTljODc1ZC4uMTJmNmYwNyAxMDA2NDQKICB9CiAg CiBkaWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCi1pbmRleCA1ZTVjNGVk Li40NDZhNGQxIDEwMDY0NAoraW5kZXggNWU1YzRlZC4uN2FlZGJmZCAxMDA2NDQKIC0tLSBhL2dk Yi92YWxvcHMuYwogKysrIGIvZ2RiL3ZhbG9wcy5jCiBAQCAtMzgsNiArMzgsNyBAQApAQCAtMjUw ODYsNyArMjU4NTUsNyBAQCBpbmRleCA1ZTVjNGVkLi40NDZhNGQxIDEwMDY0NAogICAgc3RydWN0 IHZhbHVlICpyZXN1bHQ7CiAgCiAtICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25hbWVzcGFjZSAo bmFtZXNwYWNlX25hbWUsIG5hbWUsIE5VTEwsCi0rICBzeW0gPSBjcF9sb29rdXBfc3ltYm9sX25h bWVzcGFjZV9pbmNyZW1lbnRhbChuYW1lc3BhY2VfbmFtZSwgbmFtZSwKKysgIHN5bSA9IGNwX2xv b2t1cF9zeW1ib2xfbmFtZXNwYWNlKG5hbWVzcGFjZV9uYW1lLCBuYW1lLAogIAkJCQkgICAgZ2V0 X3NlbGVjdGVkX2Jsb2NrICgwKSwgCiAgCQkJCSAgICBWQVJfRE9NQUlOKTsKICAKQEAgLTI1MTMw LDcgKzI1ODk5LDcgQEAgaW5kZXggY2JiNWQ5NC4uY2YzNWJmMCAxMDA2NDQKICAJICArK3JlcHM7 CiAgCSAgKytyZXAxOwogZGlmZiAtLWdpdCBhL2dkYi92YWx1ZS5jIGIvZ2RiL3ZhbHVlLmMKLWlu ZGV4IDY1YTVhYTkuLmZhMzlkM2QgMTAwNjQ0CitpbmRleCA5N2YyMzZjLi44YWY2YWUxIDEwMDY0 NAogLS0tIGEvZ2RiL3ZhbHVlLmMKICsrKyBiL2dkYi92YWx1ZS5jCiBAQCAtMzcsOCArMzcsMTAg QEAKQEAgLTI1MTY5LDcgKzI1OTM4LDcgQEAgaW5kZXggNjVhNWFhOS4uZmEzOWQzZCAxMDA2NDQK ICAgIFZBTFVFX0xWQUwgKHZhbCkgPSBub3RfbHZhbDsKICAgIHZhbC0+bG9jYXRpb24uYWRkcmVz cyA9IDA7CiAgICBWQUxVRV9GUkFNRV9JRCAodmFsKSA9IG51bGxfZnJhbWVfaWQ7Ci1AQCAtMzY3 LDYgKzM3OSw4IEBAIHZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpCitAQCAtMzQyLDYg KzM1NCw4IEBAIHZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUpCiAgdm9pZAogIGRlcHJl Y2F0ZWRfc2V0X3ZhbHVlX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCB0eXBlICp0 eXBlKQogIHsKQEAgLTI1MTc4LDkxICsyNTk0NywxNyBAQCBpbmRleCA2NWE1YWE5Li5mYTM5ZDNk IDEwMDY0NAogICAgdmFsdWUtPnR5cGUgPSB0eXBlOwogIH0KICAKLUBAIC02MjMsMjcgKzYzNywy OCBAQCB2YWx1ZV9mcmVlIChzdHJ1Y3QgdmFsdWUgKnZhbCkKLSB7Ci0gICBpZiAodmFsKQotICAg ICB7Ci0tICAgICAgZ2RiX2Fzc2VydCAodmFsLT5yZWZlcmVuY2VfY291bnQgPiAwKTsKLS0gICAg ICB2YWwtPnJlZmVyZW5jZV9jb3VudC0tOwotLSAgICAgIGlmICh2YWwtPnJlZmVyZW5jZV9jb3Vu dCA+IDApCi0tCXJldHVybjsKLSsgICAgICAvKiBJZiB0aGUgY291bnQgd2FzIGFscmVhZHkgMCwg dGhlbiB0aGUgdmFsdWUgd2FzIG9uIHRoZQotKwkgYWxsX3ZhbHVlcyBsaXN0LCBhbmQgd2UgbXVz dCBiZSBmcmVlaW5nIGJhY2sgdG8gc29tZQotKwkgcG9pbnQuICAqLwotKyAgICAgIGlmICh2YWwt PnJlZmNvdW50IDw9IDEpCi0rCXsKLSsJICB0eXBlX2RlY3JlZiAodmFsLT50eXBlKTsKLSsJICB0 eXBlX2RlY3JlZiAodmFsLT5lbmNsb3NpbmdfdHlwZSk7Ci0gCi0tICAgICAgLyogSWYgdGhlcmUn cyBhbiBhc3NvY2lhdGVkIHBhcmVudCB2YWx1ZSwgZHJvcCBvdXIgcmVmZXJlbmNlIHRvCi0tCSBp dC4gICovCi0tICAgICAgaWYgKHZhbC0+cGFyZW50ICE9IE5VTEwpCi0tCXZhbHVlX2ZyZWUgKHZh bC0+cGFyZW50KTsKLSsJICBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFsX2NvbXB1dGVkKQot KwkgICAgewotKwkgICAgICBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB2YWwtPmxvY2F0aW9u LmNvbXB1dGVkLmZ1bmNzOwotIAotLSAgICAgIGlmIChWQUxVRV9MVkFMICh2YWwpID09IGx2YWxf Y29tcHV0ZWQpCi0tCXsKLS0JICBzdHJ1Y3QgbHZhbF9mdW5jcyAqZnVuY3MgPSB2YWwtPmxvY2F0 aW9uLmNvbXB1dGVkLmZ1bmNzOwotKwkgICAgICBpZiAoZnVuY3MtPmZyZWVfY2xvc3VyZSkKLSsJ CWZ1bmNzLT5mcmVlX2Nsb3N1cmUgKHZhbCk7Ci0rCSAgICB9Ci0gCi0tCSAgaWYgKGZ1bmNzLT5m cmVlX2Nsb3N1cmUpCi0tCSAgICBmdW5jcy0+ZnJlZV9jbG9zdXJlICh2YWwpOwotKwkgIHhmcmVl ICh2YWwtPmNvbnRlbnRzKTsKLSsJICB4ZnJlZSAodmFsKTsKLSAJfQotLQotLSAgICAgIHhmcmVl ICh2YWwtPmNvbnRlbnRzKTsKLSsgICAgICBlbHNlCi0rCS0tdmFsLT5yZWZjb3VudDsKLSAgICAg fQotLSAgeGZyZWUgKHZhbCk7Ci0gfQorQEAgLTYwOCw2ICs2MjIsOSBAQCB2YWx1ZV9mcmVlIChz dHJ1Y3QgdmFsdWUgKnZhbCkKKyAgICAgICBpZiAodmFsLT5wYXJlbnQgIT0gTlVMTCkKKyAJdmFs dWVfZnJlZSAodmFsLT5wYXJlbnQpOwogIAotIC8qIEZyZWUgYWxsIHZhbHVlcyBhbGxvY2F0ZWQg c2luY2UgTUFSSyB3YXMgb2J0YWluZWQgYnkgdmFsdWVfbWFyawotQEAgLTY4NiwyMiArNzAxLDI2 IEBAIGZyZWVfYWxsX3ZhbHVlcyAodm9pZCkKLSB2b2lkCi0gcmVsZWFzZV92YWx1ZSAoc3RydWN0 IHZhbHVlICp2YWwpCi0gewotLSAgc3RydWN0IHZhbHVlICp2OwotLQotLSAgaWYgKGFsbF92YWx1 ZXMgPT0gdmFsKQotLSAgICB7Ci0tICAgICAgYWxsX3ZhbHVlcyA9IHZhbC0+bmV4dDsKLS0gICAg ICByZXR1cm47Ci0tICAgIH0KLS0KLS0gIGZvciAodiA9IGFsbF92YWx1ZXM7IHY7IHYgPSB2LT5u ZXh0KQotKyAgLyogSWYgdGhlIHJlZmVyZW5jZSBjb3VudCBpcyBub256ZXJvLCB0aGVuIHdlIGhh dmUgYWxyZWFkeSByZW1vdmVkCi0rICAgICB0aGUgaXRlbSBmcm9tIHRoZSBsaXN0LCBzbyB0aGVy ZSBpcyBubyByZWFzb24gdG8gZG8gaXQgYWdhaW4uICAqLwotKyAgaWYgKHZhbC0+cmVmY291bnQg PT0gMCkKLSAgICAgewotLSAgICAgIGlmICh2LT5uZXh0ID09IHZhbCkKLSsgICAgICBpZiAoYWxs X3ZhbHVlcyA9PSB2YWwpCi0rCWFsbF92YWx1ZXMgPSB2YWwtPm5leHQ7Ci0rICAgICAgZWxzZQor KyAgICAgIHR5cGVfZGVjcmVmICh2YWwtPnR5cGUpOworKyAgICAgIHR5cGVfZGVjcmVmICh2YWwt PmVuY2xvc2luZ190eXBlKTsKKysKKyAgICAgICBpZiAoVkFMVUVfTFZBTCAodmFsKSA9PSBsdmFs X2NvbXB1dGVkKQogIAl7Ci0tCSAgdi0+bmV4dCA9IHZhbC0+bmV4dDsKLS0JICBicmVhazsKLSsJ ICBzdHJ1Y3QgdmFsdWUgKnY7Ci0rCSAgZm9yICh2ID0gYWxsX3ZhbHVlczsgdjsgdiA9IHYtPm5l eHQpCi0rCSAgICB7Ci0rCSAgICAgIGlmICh2LT5uZXh0ID09IHZhbCkKLSsJCXsKLSsJCSAgdi0+ bmV4dCA9IHZhbC0+bmV4dDsKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAgICB9Ci0gCX0KLSAgICAg fQotKyAgKyt2YWwtPnJlZmNvdW50OwotIH0KLSAKLSAvKiBSZWxlYXNlIGFsbCB2YWx1ZXMgdXAg dG8gbWFyayAgKi8KLUBAIC03MzYsNiArNzU1LDkgQEAgdmFsdWVfY29weSAoc3RydWN0IHZhbHVl ICphcmcpCisgCSAgc3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gdmFsLT5sb2NhdGlvbi5jb21w dXRlZC5mdW5jczsKK0BAIC03MTEsNiArNzI4LDkgQEAgdmFsdWVfY29weSAoc3RydWN0IHZhbHVl ICphcmcpCiAgICAgIHZhbCA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKGVuY2xfdHlwZSk7CiAgICBl bHNlCiAgICAgIHZhbCA9IGFsbG9jYXRlX3ZhbHVlIChlbmNsX3R5cGUpOwpAQCAtMjUyNzIsNyAr MjU5NjcsNyBAQCBpbmRleCA2NWE1YWE5Li5mYTM5ZDNkIDEwMDY0NAogICAgdmFsLT50eXBlID0g YXJnLT50eXBlOwogICAgVkFMVUVfTFZBTCAodmFsKSA9IFZBTFVFX0xWQUwgKGFyZyk7CiAgICB2 YWwtPmxvY2F0aW9uID0gYXJnLT5sb2NhdGlvbjsKLUBAIC03NzEsMTIgKzc5MywxNSBAQCB2YWx1 ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKK0BAIC03NDYsMTIgKzc2NiwxNSBAQCB2YWx1ZV9j b3B5IChzdHJ1Y3QgdmFsdWUgKmFyZykKICB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2Nh dGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsIHN0cnVjdCB2YWx1ZSAqd2hvbGUpCiAgewpA QCAtMjUyODgsNyArMjU5ODMsNyBAQCBpbmRleCA2NWE1YWE5Li5mYTM5ZDNkIDEwMDY0NAogICAg aWYgKFZBTFVFX0xWQUwgKHdob2xlKSA9PSBsdmFsX2NvbXB1dGVkKQogICAgICB7CiAgICAgICAg c3RydWN0IGx2YWxfZnVuY3MgKmZ1bmNzID0gd2hvbGUtPmxvY2F0aW9uLmNvbXB1dGVkLmZ1bmNz OwotQEAgLTc4NCw2ICs4MDksMTAgQEAgc2V0X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3Ry dWN0IHZhbHVlICpjb21wb25lbnQsIHN0cnVjdCB2YWx1ZSAqd2hvbGUpCitAQCAtNzU5LDYgKzc4 MiwxMCBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBv bmVudCwgc3RydWN0IHZhbHVlICp3aG9sZSkKICAgICAgICBpZiAoZnVuY3MtPmNvcHlfY2xvc3Vy ZSkKICAgICAgICAgIGNvbXBvbmVudC0+bG9jYXRpb24uY29tcHV0ZWQuY2xvc3VyZSA9IGZ1bmNz LT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsKICAgICAgfQpAQCAtMjUyOTksNyArMjU5OTQsNyBAQCBp bmRleCA2NWE1YWE5Li5mYTM5ZDNkIDEwMDY0NAogIH0KICAKICAMCi1AQCAtOTE0LDYgKzk0Mywy OSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21fdHR5KQorQEAgLTg4OSw2 ICs5MTYsMjkgQEAgc2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKICAg ICAgICBudW1fZXhwWzFdID0gJ1wwJzsKICAgICAgfQogIH0KQEAgLTI1MzI5LDcgKzI2MDI0LDcg QEAgaW5kZXggNjVhNWFhOS4uZmEzOWQzZCAxMDA2NDQKICAMCiAgLyogSW50ZXJuYWwgdmFyaWFi bGVzLiAgVGhlc2UgYXJlIHZhcmlhYmxlcyB3aXRoaW4gdGhlIGRlYnVnZ2VyCiAgICAgdGhhdCBo b2xkIHZhbHVlcyBhc3NpZ25lZCBieSBkZWJ1Z2dlciBjb21tYW5kcy4KLUBAIC0xMzg4LDYgKzE0 NDAsMzcgQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gs CitAQCAtMTM2Myw2ICsxNDEzLDM3IEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAogICAgcmV0dXJuICgqaWZuLT5oYW5kbGVyKSAoZ2RiYXJjaCwgbGFu Z3VhZ2UsIGlmbi0+Y29va2llLCBhcmdjLCBhcmd2KTsKICB9CiAgCkBAIC0yNTM2NywxMyArMjYw NjIsNyBAQCBpbmRleCA2NWE1YWE5Li5mYTM5ZDNkIDEwMDY0NAogIC8qIFRoZSAnZnVuY3Rpb24n IGNvbW1hbmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEKICAgICBwbGFjZWhv bGRlciB0byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMgaXMgYWxzbyB1c2Vk IGFzCiAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFuZCB0aGF0IGlzIGNy ZWF0ZWQgd2hlbgotQEAgLTE0MzAsMTYgKzE1MTMsMTUgQEAgYWRkX2ludGVybmFsX2Z1bmN0aW9u IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpkb2MsCi0gLyogVXBkYXRlIFZBTFVFIGJl Zm9yZSBkaXNjYXJkaW5nIE9CSkZJTEUuICBDT1BJRURfVFlQRVMgaXMgdXNlZCB0bwotICAgIHBy ZXZlbnQgY3ljbGVzIC8gZHVwbGljYXRlcy4gICovCi0gCi0tc3RhdGljIHZvaWQKLSt2b2lkCi0g cHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKK0BAIC0xNDEwLDExICsxNDkxLDEwIEBAIHByZXNlcnZlX29uZV92YWx1ZSAoc3Ry dWN0IHZhbHVlICp2YWx1ZSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkgICAgaHRhYl90 IGNvcGllZF90eXBlcykKICB7CiAgICBpZiAoVFlQRV9PQkpGSUxFICh2YWx1ZS0+dHlwZSkgPT0g b2JqZmlsZSkKQEAgLTI1Mzg3LDcgKzI2MDc2LDcgQEAgaW5kZXggNjVhNWFhOS4uZmEzOWQzZCAx MDA2NDQKICAJCQkJCQkgY29waWVkX3R5cGVzKTsKICB9CiAgCi1AQCAtMTQ1NCw3ICsxNTM2LDcg QEAgcHJlc2VydmVfb25lX2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCitAQCAtMTQyOSw3ICsxNTA5LDcgQEAgcHJlc2VydmVfb25l X2ludGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9i amZpbGUsCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfU0NBTEFSOgogICAgICAgIGlmICh2YXItPnUu c2NhbGFyLnR5cGUgJiYgVFlQRV9PQkpGSUxFICh2YXItPnUuc2NhbGFyLnR5cGUpID09IG9iamZp bGUpCiAgCXZhci0+dS5zY2FsYXIudHlwZQpAQCAtMjUzOTYsMTcgKzI2MDg1LDcgQEAgaW5kZXgg NjVhNWFhOS4uZmEzOWQzZCAxMDA2NDQKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBJTlRF Uk5BTFZBUl9WQUxVRToKLUBAIC0xNDkwLDggKzE1NzIsNyBAQCBwcmVzZXJ2ZV92YWx1ZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgZm9yICh2YXIgPSBpbnRlcm5hbHZhcnM7IHZhcjsg dmFyID0gdmFyLT5uZXh0KQotICAgICBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHZhciwgb2Jq ZmlsZSwgY29waWVkX3R5cGVzKTsKLSAKLS0gIGZvciAodmFsID0gdmFsdWVzX2luX3B5dGhvbjsg dmFsOyB2YWwgPSB2YWwtPm5leHQpCi0tICAgIHByZXNlcnZlX29uZV92YWx1ZSAodmFsLCBvYmpm aWxlLCBjb3BpZWRfdHlwZXMpOwotKyAgcHJlc2VydmVfcHl0aG9uX3ZhbHVlcyAob2JqZmlsZSwg Y29waWVkX3R5cGVzKTsKLSAKLSAgIGh0YWJfZGVsZXRlIChjb3BpZWRfdHlwZXMpOwotIH0KLUBA IC0xODU3LDYgKzE5MzgsOCBAQCB2YWx1ZV9jaGFuZ2VfZW5jbG9zaW5nX3R5cGUgKHN0cnVjdCB2 YWx1ZSAqdmFsLCBzdHJ1Y3QgdHlwZSAqbmV3X2VuY2xfdHlwZSkKK0BAIC0xODMxLDYgKzE5MTEs OCBAQCB2YWx1ZV9jaGFuZ2VfZW5jbG9zaW5nX3R5cGUgKHN0cnVjdCB2YWx1ZSAqdmFsLCBzdHJ1 Y3QgdHlwZSAqbmV3X2VuY2xfdHlwZSkKICAgICAgdmFsLT5jb250ZW50cyA9CiAgICAgICAgKGdk Yl9ieXRlICopIHhyZWFsbG9jICh2YWwtPmNvbnRlbnRzLCBUWVBFX0xFTkdUSCAobmV3X2VuY2xf dHlwZSkpOwogIApAQCAtMjU0MTUsNyArMjYwOTQsNyBAQCBpbmRleCA2NWE1YWE5Li5mYTM5ZDNk IDEwMDY0NAogICAgdmFsLT5lbmNsb3NpbmdfdHlwZSA9IG5ld19lbmNsX3R5cGU7CiAgICByZXR1 cm4gdmFsOwogIH0KLUBAIC0xOTIxLDYgKzIwMDQsOCBAQCB2YWx1ZV9wcmltaXRpdmVfZmllbGQg KHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKK0BAIC0xODk1LDYgKzE5NzcsOCBAQCB2 YWx1ZV9wcmltaXRpdmVfZmllbGQgKHN0cnVjdCB2YWx1ZSAqYXJnMSwgaW50IG9mZnNldCwKICAJ ICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRzX2FsbF9yYXcgKHYpLCB2YWx1ZV9jb250ZW50c19hbGxf cmF3IChhcmcxKSwKICAJCSAgVFlQRV9MRU5HVEggKHZhbHVlX2VuY2xvc2luZ190eXBlIChhcmcx KSkpOwogIAl9CkBAIC0yNTQyNCw3ICsyNjEwMyw3IEBAIGluZGV4IDY1YTVhYTkuLmZhMzlkM2Qg MTAwNjQ0CiAgICAgICAgdi0+dHlwZSA9IHR5cGU7CiAgICAgICAgdi0+b2Zmc2V0ID0gdmFsdWVf b2Zmc2V0IChhcmcxKTsKICAgICAgICB2LT5lbWJlZGRlZF9vZmZzZXQgPSAob2Zmc2V0ICsgdmFs dWVfZW1iZWRkZWRfb2Zmc2V0IChhcmcxKQotQEAgLTIxNzEsNiArMjI1Niw0MiBAQCBwYWNrX2xv bmcgKGdkYl9ieXRlICpidWYsIHN0cnVjdCB0eXBlICp0eXBlLCBMT05HRVNUIG51bSkKK0BAIC0y MTQ1LDYgKzIyMjksNDIgQEAgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAq dHlwZSwgTE9OR0VTVCBudW0pCiAgfQogIAogIApAQCAtMjU0NjcsNyArMjYxNDYsNyBAQCBpbmRl eCA2NWE1YWE5Li5mYTM5ZDNkIDEwMDY0NAogIC8qIENvbnZlcnQgQyBudW1iZXJzIGludG8gbmV3 bHkgYWxsb2NhdGVkIHZhbHVlcy4gICovCiAgCiAgc3RydWN0IHZhbHVlICoKLUBAIC0yMTg0LDYg KzIzMDUsMTkgQEAgdmFsdWVfZnJvbV9sb25nZXN0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9OR0VT VCBudW0pCitAQCAtMjE1OCw2ICsyMjc4LDE5IEBAIHZhbHVlX2Zyb21fbG9uZ2VzdCAoc3RydWN0 IHR5cGUgKnR5cGUsIExPTkdFU1QgbnVtKQogIH0KICAKICAKQEAgLTI1NDg3LDcgKzI2MTY2LDcg QEAgaW5kZXggNjVhNWFhOS4uZmEzOWQzZCAxMDA2NDQKICAvKiBDcmVhdGUgYSB2YWx1ZSByZXBy ZXNlbnRpbmcgYSBwb2ludGVyIG9mIHR5cGUgVFlQRSB0byB0aGUgYWRkcmVzcwogICAgIEFERFIu ICAqLwogIHN0cnVjdCB2YWx1ZSAqCi1AQCAtMjM0Miw0ICsyNDc2LDggQEAgVkFSSUFCTEUgaXMg YWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CitAQCAtMjMxNiw0ICsyNDQ5LDggQEAgVkFSSUFCTEUg aXMgYWxyZWFkeSBpbml0aWFsaXplZC4iKSk7CiAgICBhZGRfcHJlZml4X2NtZCAoImZ1bmN0aW9u Iiwgbm9fY2xhc3MsIGZ1bmN0aW9uX2NvbW1hbmQsIF8oIlwKICBQbGFjZWhvbGRlciBjb21tYW5k IGZvciBzaG93aW5nIGhlbHAgb24gY29udmVuaWVuY2UgZnVuY3Rpb25zLiIpLAogIAkJICAmZnVu Y3Rpb25saXN0LCAiZnVuY3Rpb24gIiwgMCwgJmNtZGxpc3QpOwpAQCAtMjU0OTcsMTAgKzI2MTc2 LDEwIEBAIGluZGV4IDY1YTVhYTkuLmZhMzlkM2QgMTAwNjQ0CiArICBvYnNlcnZlcl9hdHRhY2hf bWFya191c2VkICh2YWx1ZV90eXBlc19tYXJrX3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIv dmFsdWUuaCBiL2dkYi92YWx1ZS5oCi1pbmRleCAyOWFkNzgzLi5jMzU3ZDgwIDEwMDY0NAoraW5k ZXggNmY2Yjc1Ni4uYjljYTY1MCAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5oCiArKysgYi9nZGIv dmFsdWUuaAotQEAgLTM0NCwxMSArMzQ0LDE2IEBAIGV4dGVybiBMT05HRVNUIHVucGFja19maWVs ZF9hc19sb25nIChzdHJ1Y3QgdHlwZSAqdHlwZSwKK0BAIC0zMzksMTEgKzMzOSwxNiBAQCBleHRl cm4gTE9OR0VTVCB1bnBhY2tfZmllbGRfYXNfbG9uZyAoc3RydWN0IHR5cGUgKnR5cGUsCiAgZXh0 ZXJuIHZvaWQgcGFja19sb25nIChnZGJfYnl0ZSAqYnVmLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgTE9O R0VTVCBudW0pOwogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fbG9uZ2VzdCAo c3RydWN0IHR5cGUgKnR5cGUsIExPTkdFU1QgbnVtKTsKQEAgLTI1NTE3LDcgKzI2MTk2LDcgQEAg aW5kZXggMjlhZDc4My4uYzM1N2Q4MCAxMDA2NDQKICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1 ZV9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsKICBleHRlcm4gc3RydWN0 IHZhbHVlICp2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwgQ09SRV9BRERSIGFkZHIp OwogIAotQEAgLTQzOCw2ICs0NDMsNyBAQCBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9zdHJ1 Y3RfZWx0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLAorQEAgLTQzMyw2ICs0MzgsNyBAQCBleHRlcm4g c3RydWN0IHZhbHVlICp2YWx1ZV9zdHJ1Y3RfZWx0IChzdHJ1Y3QgdmFsdWUgKiphcmdwLAogIAog IGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FnZ3JlZ2F0ZV9lbHQgKHN0cnVjdCB0eXBlICpj dXJ0eXBlLAogIAkJCQkJICBjaGFyICpuYW1lLApAQCAtMjU1MjUsMTYgKzI2MjA0LDcgQEAgaW5k ZXggMjlhZDc4My4uYzM1N2Q4MCAxMDA2NDQKICAJCQkJCSAgaW50IHdhbnRfYWRkcmVzcywKICAJ CQkJCSAgZW51bSBub3NpZGUgbm9zaWRlKTsKICAKLUBAIC02NjQsNiArNjcwLDggQEAgZXh0ZXJu IHZvaWQgcHJlc2VydmVfdmFsdWVzIChzdHJ1Y3Qgb2JqZmlsZSAqKTsKLSAKLSBleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9jb3B5IChzdHJ1Y3QgdmFsdWUgKik7Ci0gCi0rZXh0ZXJuIHZvaWQg cHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKiwgc3RydWN0IG9iamZpbGUgKiwgaHRh Yl90KTsKLSsKLSAvKiBGcm9tIHZhbG9wcy5jICovCi0gCi0gZXh0ZXJuIHN0cnVjdCB2YWx1ZSAq dmFyeWluZ190b19zbGljZSAoc3RydWN0IHZhbHVlICopOwotQEAgLTY4MSw3ICs2ODksNyBAQCBl eHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9hbGxvY2F0ZV9zcGFjZV9pbl9pbmZlcmlvciAoaW50 KTsKK0BAIC02NzgsNyArNjg0LDcgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYWxsb2Nh dGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf b2ZfbG9jYWwgKGNvbnN0IGNoYXIgKm5hbWUsIGludCBjb21wbGFpbik7CiAgCiAgZXh0ZXJuIHN0 cnVjdCB2YWx1ZSAqdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5 LApAQCAtMjU1NDQsNyArMjYyMTQsNyBAQCBpbmRleCAyOWFkNzgzLi5jMzU3ZDgwIDEwMDY0NAog IC8qIFVzZXIgZnVuY3Rpb24gaGFuZGxlci4gICovCiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3Zhcm9i ai5jIGIvZ2RiL3Zhcm9iai5jCi1pbmRleCA0YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAoraW5kZXgg ZmJlOGZmOC4uMWJmYzVlNCAxMDA2NDQKIC0tLSBhL2dkYi92YXJvYmouYwogKysrIGIvZ2RiL3Zh cm9iai5jCiBAQCAtMjYsOSArMjYsMTIgQEAKQEAgLTI1Nzc2LDcgKzI2NDQ2LDcgQEAgaW5kZXgg NGE5NDk4OC4uZjI2NTRmMCAxMDA2NDQKICAgIFB5T2JqZWN0ICpwcmludGVyID0gdmFyLT5wcmV0 dHlfcHJpbnRlcjsKICAKICAgIGJhY2tfdG8gPSB2YXJvYmpfZW5zdXJlX3B5dGhvbl9lbnYgKHZh cik7Ci1AQCAtODYyLDk2ICs5NTgsMTAzIEBAIHVwZGF0ZV9keW5hbWljX3Zhcm9ial9jaGlsZHJl biAoc3RydWN0IHZhcm9iaiAqdmFyLAorQEAgLTg2Miw4NyArOTU4LDEwMyBAQCB1cGRhdGVfZHlu YW1pY192YXJvYmpfY2hpbGRyZW4gKHN0cnVjdCB2YXJvYmogKnZhciwKICAgICAgICByZXR1cm4g MDsKICAgICAgfQogIApAQCAtMjU4MzksNTEgKzI2NTA5LDQ0IEBAIGluZGV4IDRhOTQ5ODguLmYy NjU0ZjAgMTAwNjQ0CiAtICAgICAgY2hhciAqbmFtZTsKIC0gICAgICBzdHJ1Y3QgY2xlYW51cCAq aW5uZXI7CiAtICAgICAgCi0tICAgICAgaWYgKCFpdGVtKQotLQlicmVhazsKLS0gICAgICBpbm5l ciA9IG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGl0ZW0pOwogKyAgICAgIFB5T2JqZWN0ICppdGVt OwotIAotLSAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoaXRlbSwgInNPIiwgJm5hbWUsICZw eV92KSkKLS0JZXJyb3IgKF8oIkludmFsaWQgaXRlbSBmcm9tIHRoZSBjaGlsZCBsaXN0IikpOwot LSAgICAgIAotLSAgICAgIGlmIChQeU9iamVjdF9UeXBlQ2hlY2sgKHB5X3YsICZ2YWx1ZV9vYmpl Y3RfdHlwZSkpCisrCiArICAgICAgLyogU2VlIGlmIHRoZXJlIHdhcyBhIGxlZnRvdmVyIGZyb20g bGFzdCB0aW1lLiAgKi8KICsgICAgICBpZiAodmFyLT5zYXZlZF9pdGVtKQotIAl7Ci0tCSAgLyog SWYgd2UganVzdCBjYWxsIGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gZm9yIHRoaXMgdHlwZSwK LS0JICAgICB3ZSB3b24ndCBrbm93IHdobyBvd25zIHRoZSByZXN1bHQuICBGb3IgdGhpcyBvbmUg Y2FzZSB3ZQotLQkgICAgIG5lZWQgdG8gY29weSB0aGUgcmVzdWx0aW5nIHZhbHVlLiAgKi8KLS0J ICB2ID0gdmFsdWVfb2JqZWN0X3RvX3ZhbHVlIChweV92KTsKLS0JICB2ID0gdmFsdWVfY29weSAo dik7CisrCXsKICsJICBpdGVtID0gdmFyLT5zYXZlZF9pdGVtOwogKwkgIHZhci0+c2F2ZWRfaXRl bSA9IE5VTEw7Ci0gCX0KLSAgICAgICBlbHNlCi0tCXYgPSBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0 aG9uIChweV92KTsKKysJfQorKyAgICAgIGVsc2UKICsJaXRlbSA9IFB5SXRlcl9OZXh0ICh2YXIt PmNoaWxkX2l0ZXIpOworKworICAgICAgIGlmICghaXRlbSkKKyAJYnJlYWs7CistICAgICAgaW5u ZXIgPSBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChpdGVtKTsKKyAKKy0gICAgICBpZiAoIVB5QXJn X1BhcnNlVHVwbGUgKGl0ZW0sICJzTyIsICZuYW1lLCAmcHlfdikpCistCWVycm9yIChfKCJJbnZh bGlkIGl0ZW0gZnJvbSB0aGUgY2hpbGQgbGlzdCIpKTsKKy0gICAgICAKKy0gICAgICB2ID0gY29u dmVydF92YWx1ZV9mcm9tX3B5dGhvbiAocHlfdik7CisrICAgICAgLyogV2UgZG9uJ3Qgd2FudCB0 byBwdXNoIHRoZSBleHRyYSBjaGlsZCBvbiBhbnkgcmVwb3J0IGxpc3QuICAqLworKyAgICAgIGlm ICh0byA8IDAgfHwgaSA8IHRvKQorKwl7CisrCSAgUHlPYmplY3QgKnB5X3Y7CisrCSAgY2hhciAq bmFtZTsKKysJICBzdHJ1Y3QgdmFsdWUgKnY7CisrCSAgc3RydWN0IGNsZWFudXAgKmlubmVyOwog IAogLSAgICAgIC8qIFRPRE86IFRoaXMgYXNzdW1lIHRoZSBuYW1lIG9mIHRoZSBpLXRoIGNoaWxk IG5ldmVyIGNoYW5nZXMuICAqLwotKyAgICAgIGlmICghaXRlbSkKLSsJYnJlYWs7CisrCSAgaW5u ZXIgPSBtYWtlX2NsZWFudXBfcHlfZGVjcmVmIChpdGVtKTsKICAKIC0gICAgICAvKiBOb3cgc2Vl IHdoYXQgdG8gZG8gaGVyZS4gICovCiAtICAgICAgaWYgKFZFQ19sZW5ndGggKHZhcm9ial9wLCB2 YXItPmNoaWxkcmVuKSA8IGkgKyAxKQotKyAgICAgIC8qIFdlIGRvbid0IHdhbnQgdG8gcHVzaCB0 aGUgZXh0cmEgY2hpbGQgb24gYW55IHJlcG9ydCBsaXN0LiAgKi8KLSsgICAgICBpZiAodG8gPCAw IHx8IGkgPCB0bykKLSAJeworLQl7CiAtCSAgLyogVGhlcmUncyBubyBjaGlsZCB5ZXQuICAqLwog LQkgIHN0cnVjdCB2YXJvYmogKmNoaWxkID0gdmFyb2JqX2FkZF9jaGlsZCAodmFyLCBuYW1lLCB2 KTsKIC0JICBpZiAobmV3X2FuZF91bmNoYW5nZWQpCiAtCSAgICBWRUNfc2FmZV9wdXNoICh2YXJv YmpfcCwgKm5ld19hbmRfdW5jaGFuZ2VkLCBjaGlsZCk7CiAtCSAgY2hpbGRyZW5fY2hhbmdlZCA9 IDE7Ci0rCSAgUHlPYmplY3QgKnB5X3Y7Ci0rCSAgY2hhciAqbmFtZTsKLSsJICBzdHJ1Y3QgdmFs dWUgKnY7Ci0rCSAgc3RydWN0IGNsZWFudXAgKmlubmVyOwotKwotKwkgIGlubmVyID0gbWFrZV9j bGVhbnVwX3B5X2RlY3JlZiAoaXRlbSk7Ci0rCiArCSAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlIChp dGVtLCAic08iLCAmbmFtZSwgJnB5X3YpKQogKwkgICAgZXJyb3IgKF8oIkludmFsaWQgaXRlbSBm cm9tIHRoZSBjaGlsZCBsaXN0IikpOwogKwpAQCAtMjU5NDQsNyArMjY2MDcsNyBAQCBpbmRleCA0 YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAogICAgcmV0dXJuIDE7CiAgI2Vsc2UKICAgIGdkYl9hc3Nl cnQgKDAgJiYgInNob3VsZCBuZXZlciBiZSBjYWxsZWQgaWYgUHl0aG9uIGlzIG5vdCBlbmFibGVk Iik7Ci1AQCAtOTY0LDggKzEwNjcsNyBAQCB2YXJvYmpfZ2V0X251bV9jaGlsZHJlbiAoc3RydWN0 IHZhcm9iaiAqdmFyKQorQEAgLTk1NSw4ICsxMDY3LDcgQEAgdmFyb2JqX2dldF9udW1fY2hpbGRy ZW4gKHN0cnVjdCB2YXJvYmogKnZhcikKICAgIGlmICh2YXItPm51bV9jaGlsZHJlbiA9PSAtMSkK ICAgICAgewogICAgICAgIGludCBjaGFuZ2VkOwpAQCAtMjU5NTQsNyArMjY2MTcsNyBAQCBpbmRl eCA0YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAogIAl2YXItPm51bV9jaGlsZHJlbiA9IG51bWJlcl9v Zl9jaGlsZHJlbiAodmFyKTsKICAgICAgfQogIAotQEAgLTk3Niw3ICsxMDc4LDcgQEAgdmFyb2Jq X2dldF9udW1fY2hpbGRyZW4gKHN0cnVjdCB2YXJvYmogKnZhcikKK0BAIC05NjcsNyArMTA3OCw3 IEBAIHZhcm9ial9nZXRfbnVtX2NoaWxkcmVuIChzdHJ1Y3QgdmFyb2JqICp2YXIpCiAgICAgdGhl IHJldHVybiBjb2RlIGlzIHRoZSBudW1iZXIgb2Ygc3VjaCBjaGlsZHJlbiBvciAtMSBvbiBlcnJv ciAqLwogIAogIFZFQyAodmFyb2JqX3ApKgpAQCAtMjU5NjMsMjIgKzI2NjI2LDI3IEBAIGluZGV4 IDRhOTQ5ODguLmYyNjU0ZjAgMTAwNjQ0CiAgewogICAgc3RydWN0IHZhcm9iaiAqY2hpbGQ7CiAg ICBjaGFyICpuYW1lOwotQEAgLTk4OCw4ICsxMDkwLDEyIEBAIHZhcm9ial9saXN0X2NoaWxkcmVu IChzdHJ1Y3QgdmFyb2JqICp2YXIpCitAQCAtOTc1LDEyICsxMDg2LDE2IEBAIHZhcm9ial9saXN0 X2NoaWxkcmVuIChzdHJ1Y3QgdmFyb2JqICp2YXIpCisgCisgICB2YXItPmNoaWxkcmVuX3JlcXVl c3RlZCA9IDE7CisgCistICBpZiAodmFyLT5wcmV0dHlfcHJpbnRlcgorKyAgaWYgKHZhci0+cHJl dHR5X3ByaW50ZXIpCisrICAgIHsKICAgICAgICAvKiBUaGlzLCBpbiB0aGVvcnksIGNhbiByZXN1 bHQgaW4gdGhlIG51bWJlciBvZiBjaGlsZHJlbiBjaGFuZ2luZyB3aXRob3V0CiAgCSBmcm9udGVu ZCBub3RpY2luZy4gIEJ1dCB3ZWxsLCBjYWxsaW5nIC12YXItbGlzdC1jaGlsZHJlbiBvbiB0aGUg c2FtZQogIAkgdmFyb2JqIHR3aWNlIGlzIG5vdCBzb21ldGhpbmcgYSBzYW5lIGZyb250ZW5kIHdv dWxkIGRvLiAgKi8KIC0gICAgICAmJiB1cGRhdGVfZHluYW1pY192YXJvYmpfY2hpbGRyZW4gKHZh ciwgTlVMTCwgTlVMTCwgJmNoaWxkcmVuX2NoYW5nZWQpKQogLSAgICByZXR1cm4gdmFyLT5jaGls ZHJlbjsKLSsgICAgICAmJiB1cGRhdGVfZHluYW1pY192YXJvYmpfY2hpbGRyZW4gKHZhciwgTlVM TCwgTlVMTCwgJmNoaWxkcmVuX2NoYW5nZWQsCi0rCQkJCQkgMCwgKnRvKSkKLSsgICAgeworKyAg ICAgIHVwZGF0ZV9keW5hbWljX3Zhcm9ial9jaGlsZHJlbiAodmFyLCBOVUxMLCBOVUxMLCAmY2hp bGRyZW5fY2hhbmdlZCwKKysJCQkJICAgICAgMCwgKnRvKTsKICsgICAgICByZXN0cmljdF9yYW5n ZSAodmFyLT5jaGlsZHJlbiwgZnJvbSwgdG8pOwogKyAgICAgIHJldHVybiB2YXItPmNoaWxkcmVu OwogKyAgICB9CiAgCiAgICBpZiAodmFyLT5udW1fY2hpbGRyZW4gPT0gLTEpCiAgICAgIHZhci0+ bnVtX2NoaWxkcmVuID0gbnVtYmVyX29mX2NoaWxkcmVuICh2YXIpOwotQEAgLTEwMTUsMTAgKzEx MjEsMTAgQEAgdmFyb2JqX2xpc3RfY2hpbGRyZW4gKHN0cnVjdCB2YXJvYmogKnZhcikKK0BAIC0x MDA2LDEwICsxMTIxLDEwIEBAIHZhcm9ial9saXN0X2NoaWxkcmVuIChzdHJ1Y3QgdmFyb2JqICp2 YXIpCiAgCSAgbmFtZSA9IG5hbWVfb2ZfY2hpbGQgKHZhciwgaSk7CiAgCSAgZXhpc3RpbmcgPSBj cmVhdGVfY2hpbGQgKHZhciwgaSwgbmFtZSk7CiAgCSAgVkVDX3JlcGxhY2UgKHZhcm9ial9wLCB2 YXItPmNoaWxkcmVuLCBpLCBleGlzdGluZyk7CkBAIC0yNTk5MCw3ICsyNjY1OCw3IEBAIGluZGV4 IDRhOTQ5ODguLmYyNjU0ZjAgMTAwNjQ0CiAgICByZXR1cm4gdmFyLT5jaGlsZHJlbjsKICB9CiAg Ci1AQCAtMTAyOSw3ICsxMTM1LDYgQEAgdmFyb2JqX2FkZF9jaGlsZCAoc3RydWN0IHZhcm9iaiAq dmFyLCBjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3QgdmFsdWUgKnZhbHVlKQorQEAgLTEwMjAsNyAr MTEzNSw2IEBAIHZhcm9ial9hZGRfY2hpbGQgKHN0cnVjdCB2YXJvYmogKnZhciwgY29uc3QgY2hh ciAqbmFtZSwgc3RydWN0IHZhbHVlICp2YWx1ZSkKICAJCQkJCVZFQ19sZW5ndGggKHZhcm9ial9w LCB2YXItPmNoaWxkcmVuKSwgCiAgCQkJCQluYW1lLCB2YWx1ZSk7CiAgICBWRUNfc2FmZV9wdXNo ICh2YXJvYmpfcCwgdmFyLT5jaGlsZHJlbiwgdik7CkBAIC0yNTk5OCw3ICsyNjY2NiwyMCBAQCBp bmRleCA0YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAogICAgcmV0dXJuIHY7CiAgfQogIAotQEAgLTEx NjgsNiArMTI3MywxMTUgQEAgdmFyb2JqX3NldF92YWx1ZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBj aGFyICpleHByZXNzaW9uKQorQEAgLTEwODIsNiArMTE5NiwxMiBAQCB2YXJvYmpfZ2V0X2F0dHJp YnV0ZXMgKHN0cnVjdCB2YXJvYmogKnZhcikKKyAgIHJldHVybiBhdHRyaWJ1dGVzOworIH0KKyAK KytpbnQKKyt2YXJvYmpfcHJldHR5X3ByaW50ZWRfcCAoc3RydWN0IHZhcm9iaiAqdmFyKQorK3sK KysgIHJldHVybiB2YXItPnByZXR0eV9wcmludGVyICE9IE5VTEw7CisrfQorKworIGNoYXIgKgor IHZhcm9ial9nZXRfZm9ybWF0dGVkX3ZhbHVlIChzdHJ1Y3QgdmFyb2JqICp2YXIsCisgCQkJICAg IGVudW0gdmFyb2JqX2Rpc3BsYXlfZm9ybWF0cyBmb3JtYXQpCitAQCAtMTE1OSw2ICsxMjc5LDEx NSBAQCB2YXJvYmpfc2V0X3ZhbHVlIChzdHJ1Y3QgdmFyb2JqICp2YXIsIGNoYXIgKmV4cHJlc3Np b24pCiAgICByZXR1cm4gMTsKICB9CiAgCkBAIC0yNjExNCw3ICsyNjc5NSwyOCBAQCBpbmRleCA0 YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAogIC8qIEFzc2lnbiBhIG5ldyB2YWx1ZSB0byBhIHZhcmlh YmxlIG9iamVjdC4gIElmIElOSVRJQUwgaXMgbm9uLXplcm8sCiAgICAgdGhpcyBpcyB0aGUgZmly c3QgYXNzaWduZW1lbnQgYWZ0ZXIgdGhlIHZhcmlhYmxlIG9iamVjdCB3YXMganVzdAogICAgIGNy ZWF0ZWQsIG9yIGNoYW5nZWQgdHlwZS4gIEluIHRoYXQgY2FzZSwganVzdCBhc3NpZ24gdGhlIHZh bHVlIAotQEAgLTEyNzQsNyArMTQ4OCw3IEBAIGluc3RhbGxfbmV3X3ZhbHVlIChzdHJ1Y3QgdmFy b2JqICp2YXIsIHN0cnVjdCB2YWx1ZSAqdmFsdWUsIGludCBpbml0aWFsKQorQEAgLTExOTksMTAg KzE0MjgsNyBAQCBpbnN0YWxsX25ld192YWx1ZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBzdHJ1Y3Qg dmFsdWUgKnZhbHVlLCBpbnQgaW5pdGlhbCkKKyAgICAgIHRoYXQgaW4gQysrIGEgcmVmZXJlbmNl IGlzIG5vdCByZWJpbmRhYmxlLCBpdCBjYW5ub3QKKyAgICAgIG1lYW5pbmdmdWxseSBjaGFuZ2Uu ICBTbywgZ2V0IGhvbGQgb2YgdGhlIHJlYWwgdmFsdWUuICAqLworICAgaWYgKHZhbHVlKQorLSAg ICB7CistICAgICAgdmFsdWUgPSBjb2VyY2VfcmVmICh2YWx1ZSk7CistICAgICAgcmVsZWFzZV92 YWx1ZSAodmFsdWUpOworLSAgICB9CisrICAgIHZhbHVlID0gY29lcmNlX3JlZiAodmFsdWUpOwor IAorICAgaWYgKHZhci0+dHlwZSAmJiBUWVBFX0NPREUgKHZhci0+dHlwZSkgPT0gVFlQRV9DT0RF X1VOSU9OKQorICAgICAvKiBGb3IgdW5pb25zLCB3ZSBuZWVkIHRvIGZldGNoIHRoZSB2YWx1ZSBp bXBsaWNpdGx5IGJlY2F1c2UKK0BAIC0xMjQ5LDcgKzE0NzUsNyBAQCBpbnN0YWxsX25ld192YWx1 ZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBpbnQgaW5pdGlhbCkK KyAgICAgIHZhbHVlcy4gIERvbid0IGdldCBzdHJpbmcgcmVuZGVyaW5nIGlmIHRoZSB2YWx1ZSBp cworICAgICAgbGF6eSAtLSBpZiBpdCBpcywgdGhlIGNvZGUgYWJvdmUgaGFzIGRlY2lkZWQgdGhh dCB0aGUgdmFsdWUKKyAgICAgIHNob3VsZCBub3QgYmUgZmV0Y2hlZC4gICovCistICBpZiAodmFs dWUgJiYgIXZhbHVlX2xhenkgKHZhbHVlKSkKKysgIGlmICh2YWx1ZSAmJiAhdmFsdWVfbGF6eSAo dmFsdWUpICYmICF2YXItPnByZXR0eV9wcmludGVyKQorICAgICBwcmludF92YWx1ZSA9IHZhbHVl X2dldF9wcmludF92YWx1ZSAodmFsdWUsIHZhci0+Zm9ybWF0LCB2YXIpOworIAorICAgLyogSWYg dGhlIHR5cGUgaXMgY2hhbmdlYWJsZSwgY29tcGFyZSB0aGUgb2xkIGFuZCB0aGUgbmV3IHZhbHVl cy4KK0BAIC0xMjY1LDcgKzE0OTEsNyBAQCBpbnN0YWxsX25ld192YWx1ZSAoc3RydWN0IHZhcm9i aiAqdmFyLCBzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBpbnQgaW5pdGlhbCkKICAJewogIAkgIGNoYW5n ZWQgPSAxOwogIAl9CkBAIC0yNjEyMyw3ICsyNjgyNSwxNiBAQCBpbmRleCA0YTk0OTg4Li5mMjY1 NGYwIDEwMDY0NAogIAl7CiAgCSAgLyogVHJ5IHRvIGNvbXBhcmUgdGhlIHZhbHVlcy4gIFRoYXQg cmVxdWlyZXMgdGhhdCBib3RoCiAgCSAgICAgdmFsdWVzIGFyZSBub24tbGF6eS4gICovCi1AQCAt MTMyOCw2NSArMTU0MiwzMiBAQCBpbnN0YWxsX25ld192YWx1ZSAoc3RydWN0IHZhcm9iaiAqdmFy LCBzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBpbnQgaW5pdGlhbCkKK0BAIC0xMzEwLDYgKzE1MzYsOCBA QCBpbnN0YWxsX25ld192YWx1ZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBzdHJ1Y3QgdmFsdWUgKnZh bHVlLCBpbnQgaW5pdGlhbCkKKyAgIGlmICh2YXItPnZhbHVlICE9IE5VTEwgJiYgdmFyLT52YWx1 ZSAhPSB2YWx1ZSkKKyAgICAgdmFsdWVfZnJlZSAodmFyLT52YWx1ZSk7CisgICB2YXItPnZhbHVl ID0gdmFsdWU7CisrICBpZiAodmFsdWUgIT0gTlVMTCkKKysgICAgdmFsdWVfaW5jcmVmICh2YWx1 ZSk7CisgICBpZiAodmFyLT5wcmludF92YWx1ZSkKKyAgICAgeGZyZWUgKHZhci0+cHJpbnRfdmFs dWUpOworICAgdmFyLT5wcmludF92YWx1ZSA9IHByaW50X3ZhbHVlOworQEAgLTEzMTksNjUgKzE1 NDcsMzIgQEAgaW5zdGFsbF9uZXdfdmFsdWUgKHN0cnVjdCB2YXJvYmogKnZhciwgc3RydWN0IHZh bHVlICp2YWx1ZSwgaW50IGluaXRpYWwpCiAgICAgIHZhci0+bm90X2ZldGNoZWQgPSAwOwogICAg dmFyLT51cGRhdGVkID0gMDsKICAKQEAgLTI2MjA2LDcgKzI2OTE3LDcgQEAgaW5kZXggNGE5NDk4 OC4uZjI2NTRmMCAxMDA2NDQKICB9CiAgCiAgdm9pZCAKLUBAIC0xNDA0LDMxICsxNTg1LDE5IEBA IHZhcm9ial9zZXRfdmlzdWFsaXplciAoc3RydWN0IHZhcm9iaiAqdmFyLCBjb25zdCBjaGFyICp2 aXN1YWxpemVyKQorQEAgLTEzOTUsMzEgKzE1OTAsMTkgQEAgdmFyb2JqX3NldF92aXN1YWxpemVy IChzdHJ1Y3QgdmFyb2JqICp2YXIsIGNvbnN0IGNoYXIgKnZpc3VhbGl6ZXIpCiAgICBtYWtlX2Ns ZWFudXBfcHlfZGVjcmVmIChnbG9iYWxzKTsKICAKICAgIGNvbnN0cnVjdG9yID0gUHlSdW5fU3Ry aW5nICh2aXN1YWxpemVyLCBQeV9ldmFsX2lucHV0LCBnbG9iYWxzLCBnbG9iYWxzKTsKQEAgLTI2 MjE5LDkgKzI2OTMwLDkgQEAgaW5kZXggNGE5NDk4OC4uZjI2NTRmMCAxMDA2NDQKIC0gICAgfQog LSAgZWxzZQogLSAgICBwcmV0dHlfcHJpbnRlciA9IGluc3RhbnRpYXRlX3ByZXR0eV9wcmludGVy IChjb25zdHJ1Y3RvciwgdmFyLT52YWx1ZSk7Ci0gCi0tICBQeV9YREVDUkVGIChjb25zdHJ1Y3Rv cik7CiAtCistICBQeV9YREVDUkVGIChjb25zdHJ1Y3Rvcik7CisgCiAtICBpZiAoISBwcmV0dHlf cHJpbnRlcikKICsgIGlmICghIGNvbnN0cnVjdG9yKQogICAgICB7CkBAIC0yNjI0NCw3ICsyNjk1 NSw3IEBAIGluZGV4IDRhOTQ5ODguLmYyNjU0ZjAgMTAwNjQ0CiAgCiAgICBkb19jbGVhbnVwcyAo YmFja190byk7CiAgI2Vsc2UKLUBAIC0xNTQzLDcgKzE3MTIsNyBAQCBWRUModmFyb2JqX3VwZGF0 ZV9yZXN1bHQpICp2YXJvYmpfdXBkYXRlIChzdHJ1Y3QgdmFyb2JqICoqdmFycCwgaW50IGV4cGxp Y2l0KQorQEAgLTE1MzQsNyArMTcxNyw3IEBAIFZFQyh2YXJvYmpfdXBkYXRlX3Jlc3VsdCkgKnZh cm9ial91cGRhdGUgKHN0cnVjdCB2YXJvYmogKip2YXJwLCBpbnQgZXhwbGljaXQpCiAgCSBVSSwg c28gd2UgbmVlZCBub3QgYm90aGVyIGdldHRpbmcgaXQuICAqLwogICAgICAgIGlmICh2LT5wcmV0 dHlfcHJpbnRlcikKICAJewpAQCAtMjYyNTMsNyArMjY5NjQsNyBAQCBpbmRleCA0YTk0OTg4Li5m MjY1NGYwIDEwMDY0NAogIAkgIGludCBpLCBjaGlsZHJlbl9jaGFuZ2VkOwogIAkgIHZhcm9ial9w IHRtcDsKICAKLUBAIC0xNTU1LDI4ICsxNzI0LDI4IEBAIFZFQyh2YXJvYmpfdXBkYXRlX3Jlc3Vs dCkgKnZhcm9ial91cGRhdGUgKHN0cnVjdCB2YXJvYmogKip2YXJwLCBpbnQgZXhwbGljaXQpCitA QCAtMTU0NiwyOCArMTcyOSwyOCBAQCBWRUModmFyb2JqX3VwZGF0ZV9yZXN1bHQpICp2YXJvYmpf dXBkYXRlIChzdHJ1Y3QgdmFyb2JqICoqdmFycCwgaW50IGV4cGxpY2l0KQogIAogIAkgIC8qIElm IHVwZGF0ZV9keW5hbWljX3Zhcm9ial9jaGlsZHJlbiByZXR1cm5zIDAsIHRoZW4gd2UgaGF2ZQog IAkgICAgIGEgbm9uLWNvbmZvcm1pbmcgcHJldHR5LXByaW50ZXIsIHNvIHdlIHNraXAgaXQuICAq LwpAQCAtMjYyOTQsNyArMjcwMDUsNyBAQCBpbmRleCA0YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAog IAkgICAgICBjb250aW51ZTsKICAJICAgIH0KICAJfQotQEAgLTE4NjQsNyArMjAzMywxMiBAQCBu ZXdfdmFyaWFibGUgKHZvaWQpCitAQCAtMTg1NSw3ICsyMDM4LDEyIEBAIG5ld192YXJpYWJsZSAo dm9pZCkKICAgIHZhci0+ZnJvemVuID0gMDsKICAgIHZhci0+bm90X2ZldGNoZWQgPSAwOwogICAg dmFyLT5jaGlsZHJlbl9yZXF1ZXN0ZWQgPSAwOwpAQCAtMjYzMDcsNyArMjcwMTgsNyBAQCBpbmRl eCA0YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAogIAogICAgcmV0dXJuIHZhcjsKICB9Ci1AQCAtMTg5 NCw3ICsyMDY4LDEwIEBAIGZyZWVfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhcikKK0BAIC0x ODg1LDcgKzIwNzMsMTAgQEAgZnJlZV92YXJpYWJsZSAoc3RydWN0IHZhcm9iaiAqdmFyKQogICAg aWYgKHZhci0+cHJldHR5X3ByaW50ZXIpCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgY2xlYW51cCAq Y2xlYW51cCA9IHZhcm9ial9lbnN1cmVfcHl0aG9uX2VudiAodmFyKTsKQEAgLTI2MzE5LDcgKzI3 MDMwLDcgQEAgaW5kZXggNGE5NDk4OC4uZjI2NTRmMCAxMDA2NDQKICAgICAgICBkb19jbGVhbnVw cyAoY2xlYW51cCk7CiAgICAgIH0KICAjZW5kaWYKLUBAIC0xOTI3LDYgKzIxMDQsMTggQEAgbWFr ZV9jbGVhbnVwX2ZyZWVfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhcikKK0BAIC0xOTE4LDYg KzIxMDksMTggQEAgbWFrZV9jbGVhbnVwX2ZyZWVfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZh cikKICAgIHJldHVybiBtYWtlX2NsZWFudXAgKGRvX2ZyZWVfdmFyaWFibGVfY2xlYW51cCwgdmFy KTsKICB9CiAgCkBAIC0yNjMzOCw3ICsyNzA0OSw3IEBAIGluZGV4IDRhOTQ5ODguLmYyNjU0ZjAg MTAwNjQ0CiAgLyogVGhpcyByZXR1cm5zIHRoZSB0eXBlIG9mIHRoZSB2YXJpYWJsZS4gSXQgYWxz byBza2lwcyBwYXN0IHR5cGVkZWZzCiAgICAgdG8gcmV0dXJuIHRoZSByZWFsIHR5cGUgb2YgdGhl IHZhcmlhYmxlLgogIAotQEAgLTIxNDEsNiArMjMzMCw4IEBAIHZhbHVlX29mX3Jvb3QgKHN0cnVj dCB2YXJvYmogKip2YXJfaGFuZGxlLCBpbnQgKnR5cGVfY2hhbmdlZCkKK0BAIC0yMTMyLDYgKzIz MzUsOCBAQCB2YWx1ZV9vZl9yb290IChzdHJ1Y3QgdmFyb2JqICoqdmFyX2hhbmRsZSwgaW50ICp0 eXBlX2NoYW5nZWQpCiAgICAgICAgZWxzZQogIAl7CiAgCSAgdG1wX3Zhci0+b2JqX25hbWUgPSB4 c3RyZHVwICh2YXItPm9ial9uYW1lKTsKQEAgLTI2MzQ3LDcgKzI3MDU4LDMyIEBAIGluZGV4IDRh OTQ5ODguLmYyNjU0ZjAgMTAwNjQ0CiAgCSAgdmFyb2JqX2RlbGV0ZSAodmFyLCBOVUxMLCAwKTsK ICAKICAJICBpbnN0YWxsX3ZhcmlhYmxlICh0bXBfdmFyKTsKLUBAIC0zMTczLDYgKzMzNjQsMTkg QEAgamF2YV92YWx1ZV9vZl92YXJpYWJsZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBlbnVtIHZhcm9i al9kaXNwbGF5X2Zvcm1hdHMgZm9ybWF0KQorQEAgLTIxNjYsNyArMjM3MSwxMSBAQCBzdGF0aWMg Y2hhciAqCisgbXlfdmFsdWVfb2ZfdmFyaWFibGUgKHN0cnVjdCB2YXJvYmogKnZhciwgZW51bSB2 YXJvYmpfZGlzcGxheV9mb3JtYXRzIGZvcm1hdCkKKyB7CisgICBpZiAodmFyLT5yb290LT5pc192 YWxpZCkKKy0gICAgcmV0dXJuICgqdmFyLT5yb290LT5sYW5nLT52YWx1ZV9vZl92YXJpYWJsZSkg KHZhciwgZm9ybWF0KTsKKysgICAgeworKyAgICAgIGlmICh2YXItPnByZXR0eV9wcmludGVyKQor KwlyZXR1cm4gdmFsdWVfZ2V0X3ByaW50X3ZhbHVlICh2YXItPnZhbHVlLCB2YXItPmZvcm1hdCwg dmFyKTsKKysgICAgICByZXR1cm4gKCp2YXItPnJvb3QtPmxhbmctPnZhbHVlX29mX3ZhcmlhYmxl KSAodmFyLCBmb3JtYXQpOworKyAgICB9CisgICBlbHNlCisgICAgIHJldHVybiBOVUxMOworIH0K K0BAIC0yOTU0LDEwICszMTYzLDcgQEAgY3BsdXNfZGVzY3JpYmVfY2hpbGQgKHN0cnVjdCB2YXJv YmogKnBhcmVudCwgaW50IGluZGV4LAorIAkgICAgKmNuYW1lID0geHN0cmR1cCAoVFlQRV9GSUVM RF9OQU1FICh0eXBlLCBpbmRleCkpOworIAorIAkgIGlmIChjdmFsdWUgJiYgdmFsdWUpCistCSAg ICB7CistCSAgICAgICpjdmFsdWUgPSB2YWx1ZV9jYXN0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUs IGluZGV4KSwgdmFsdWUpOworLQkgICAgICByZWxlYXNlX3ZhbHVlICgqY3ZhbHVlKTsKKy0JICAg IH0KKysJICAgICpjdmFsdWUgPSB2YWx1ZV9jYXN0IChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGlu ZGV4KSwgdmFsdWUpOworIAorIAkgIGlmIChjdHlwZSkKKyAJICAgIHsKK0BAIC0zMTYzLDYgKzMz NjksMTkgQEAgamF2YV92YWx1ZV9vZl92YXJpYWJsZSAoc3RydWN0IHZhcm9iaiAqdmFyLCBlbnVt IHZhcm9ial9kaXNwbGF5X2Zvcm1hdHMgZm9ybWF0KQogICAgcmV0dXJuIGNwbHVzX3ZhbHVlX29m X3ZhcmlhYmxlICh2YXIsIGZvcm1hdCk7CiAgfQogIApAQCAtMjYzNjcsNyArMjcxMDMsNyBAQCBp bmRleCA0YTk0OTg4Li5mMjY1NGYwIDEwMDY0NAogIC8qIEl0ZXJhdGUgYWxsIHRoZSBleGlzdGlu ZyBfcm9vdF8gVkFST0JKcyBhbmQgY2FsbCB0aGUgRlVOQyBjYWxsYmFjayBmb3IgdGhlbQogICAg IHdpdGggYW4gYXJiaXRyYXJ5IGNhbGxlciBzdXBwbGllZCBEQVRBIHBvaW50ZXIuICAqLwogIAot QEAgLTMxOTAsNiArMzM5NCw0MyBAQCBhbGxfcm9vdF92YXJvYmpzICh2b2lkICgqZnVuYykgKHN0 cnVjdCB2YXJvYmogKnZhciwgdm9pZCAqZGF0YSksIHZvaWQgKmRhdGEpCitAQCAtMzE4MCw2ICsz Mzk5LDQzIEBAIGFsbF9yb290X3Zhcm9ianMgKHZvaWQgKCpmdW5jKSAoc3RydWN0IHZhcm9iaiAq dmFyLCB2b2lkICpkYXRhKSwgdm9pZCAqZGF0YSkKICAgICAgICAoKmZ1bmMpICh2YXJfcm9vdC0+ cm9vdHZhciwgZGF0YSk7CiAgICAgIH0KICB9CkBAIC0yNjQxMiw3ICsyNzE0OCw3IEBAIGluZGV4 IDRhOTQ5ODguLmYyNjU0ZjAgMTAwNjQ0CiAgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfdmFyb2Jq ICh2b2lkKTsKICB2b2lkCiBkaWZmIC0tZ2l0IGEvZ2RiL3Zhcm9iai5oIGIvZ2RiL3Zhcm9iai5o Ci1pbmRleCA3Mjk3MjQzLi4wNzQ0Y2MzIDEwMDY0NAoraW5kZXggNzI5NzI0My4uZjQzYzU5MyAx MDA2NDQKIC0tLSBhL2dkYi92YXJvYmouaAogKysrIGIvZ2RiL3Zhcm9iai5oCiBAQCAtNzgsNiAr NzgsMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgdmFyb2JqX3VwZGF0ZV9yZXN1bHRfdApAQCAtMjY0NTYs NyArMjcxOTIsNyBAQCBpbmRleCA3Mjk3MjQzLi4wNzQ0Y2MzIDEwMDY0NAogIAogIGV4dGVybiBj aGFyICp2YXJvYmpfZ2V0X3R5cGUgKHN0cnVjdCB2YXJvYmogKnZhcik7CiAgCi1AQCAtMTQ5LDYg KzE2NiwxMSBAQCBleHRlcm4gaW50IHZhcm9ial9lZGl0YWJsZV9wIChzdHJ1Y3QgdmFyb2JqICp2 YXIpOworQEAgLTE0OSw2ICsxNjYsMTMgQEAgZXh0ZXJuIGludCB2YXJvYmpfZWRpdGFibGVfcCAo c3RydWN0IHZhcm9iaiAqdmFyKTsKICAKICBleHRlcm4gaW50IHZhcm9ial9mbG9hdGluZ19wIChz dHJ1Y3QgdmFyb2JqICp2YXIpOwogIApAQCAtMjY0NjcsNiArMjcyMDMsOCBAQCBpbmRleCA3Mjk3 MjQzLi4wNzQ0Y2MzIDEwMDY0NAogK2V4dGVybiB2b2lkIHZhcm9ial9lbmFibGVfcHJldHR5X3By aW50aW5nICh2b2lkKTsKICsKICtleHRlcm4gaW50IHZhcm9ial9oYXNfbW9yZSAoc3RydWN0IHZh cm9iaiAqdmFyLCBpbnQgdG8pOworKworK2V4dGVybiBpbnQgdmFyb2JqX3ByZXR0eV9wcmludGVk X3AgKHN0cnVjdCB2YXJvYmogKnZhcik7CiAgCiAgI2VuZGlmIC8qIFZBUk9CSl9IICovCiBkaWZm IC0tZ2l0IGEvZ2RiL3hjb2ZmcmVhZC5jIGIvZ2RiL3hjb2ZmcmVhZC5jCgpkaWZmIC0tZ2l0IGEv Z2RiLnNwZWMgYi9nZGIuc3BlYwppbmRleCA3NTQzNTQ2Li42ODE1ZTI1IDEwMDY0NAotLS0gYS9n ZGIuc3BlYworKysgYi9nZGIuc3BlYwpAQCAtMTAsMTEgKzEwLDExIEBAIE5hbWU6IGdkYiV7P193 aXRoX2RlYnVnOi1kZWJ1Z30KICMgU2V0IHZlcnNpb24gdG8gY29udGVudHMgb2YgZ2RiL3ZlcnNp b24uaW4uCiAjIE5PVEU6IHRoZSBGU0YgZ2RiIHZlcnNpb25zIGFyZSBudW1iZXJlZCBOLk0gZm9y IG9mZmljaWFsIHJlbGVhc2VzLCBsaWtlIDYuMyAKICMgYW5kLCBzaW5jZSBKYW51YXJ5IDIwMDUs IFguWS5aLmRhdGUgZm9yIGRhaWx5IHNuYXBzaG90cywgbGlrZSA2LjMuNTAuMjAwNTAxMTIgIyAo ZGFpbHkgc25hcHNob3QgZnJvbSBtYWlsaW5lKSwgb3IgNi4zLjAuMjAwNDAxMTIgKGhlYWQgb2Yg dGhlIHJlbGVhc2UgYnJhbmNoKS4KLVZlcnNpb246IDYuOC41MC4yMDA5MDgxMQorVmVyc2lvbjog Ni44LjUwLjIwMDkwODE4CiAKICMgVGhlIHJlbGVhc2UgYWx3YXlzIGNvbnRhaW5zIGEgbGVhZGlu ZyByZXNlcnZlZCBudW1iZXIsIHN0YXJ0IGl0IGF0IDEuCiAjIGB1cHN0cmVhbScgaXMgbm90IGEg cGFydCBvZiBgbmFtZScgdG8gc3RheSBmdWxseSBycG0gZGVwZW5kZW5jaWVzIGNvbXBhdGlibGUg Zm9yIHRoZSB0ZXN0aW5nLgotUmVsZWFzZTogNCV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0l ez9kaXN0fQorUmVsZWFzZTogMSV7P193aXRoX3Vwc3RyZWFtOi51cHN0cmVhbX0lez9kaXN0fQog CiBMaWNlbnNlOiBHUEx2MysKIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMKQEAgLTIxOCw4 ICsyMTgsOCBAQCBQYXRjaDIyOTogZ2RiLTYuMy1iejE0MDUzMi1wcGMtdW53aW5kaW5nLXRlc3Qu cGF0Y2gKICMgVGVzdGNhc2UgZm9yIGV4ZWMoKSBmcm9tIHRocmVhZGVkIHByb2dyYW0gKEJaIDIw MjY4OSkuCiBQYXRjaDIzMTogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZyb20tcHRocmVhZC10ZXN0 LnBhdGNoCiAKLSMgQmFja3BvcnRlZCBwb3N0IGdkYi02LjguNTAuMjAwOTA4MTEgc25hcHNob3Qg Zml4dXBzLgotI1BhdGNoMjMyOiBnZGItNi44LjUwLjIwMDkwODExLXVwc3RyZWFtLnBhdGNoCisj IEJhY2twb3J0ZWQgcG9zdCBnZGItNi44LjUwLjIwMDkwODE4IHNuYXBzaG90IGZpeHVwcy4KKyNQ YXRjaDIzMjogZ2RiLTYuOC41MC4yMDA5MDgxOC11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNl IGZvciBQUEMgUG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCku CiBQYXRjaDIzNDogZ2RiLTYuNi1iejIzMDAwMC1wb3dlcjYtZGlzYXNzZW1ibHktdGVzdC5wYXRj aApAQCAtMjY1LDExICsyNjUsNiBAQCBQYXRjaDI3MTogZ2RiLTYuNS1iejI0Mzg0NS1zdGFsZS10 ZXN0aW5nLXpvbWJpZS10ZXN0LnBhdGNoCiBQYXRjaDI3NDogZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS5wYXRjaAogUGF0Y2gzNTM6IGdkYi02LjYtYnVpbGRpZC1sb2NhdGUtcnBtLnBhdGNoCiAKLSMg Rml4IGhhcmR3YXJlIHdhdGNocG9pbnRzIGFmdGVyIGluZmVyaW9yIGZvcmtzLW9mZiBzb21lIHBy b2Nlc3MuCi0jIFRocmVhZGVkIGBzZXQgZm9sbG93LWZvcmstbW9kZSBjaGlsZCcgc3RpbGwgbm90 IGZpeGVkIHRoZXJlLCBnbGliYyBmaXhlcyByZXFkLgotIyBgc2V0IGRldGFjaC1vbi1mb3JrIG9m Zicgbm90IGZpeGVkIHRoZXJlIGluIGdlbmVyYWwgLSBpdCBhbHJlYWR5IGFzc2VydC1mYWlscy4K LVBhdGNoMjgwOiBnZGItNi42LW11bHRpZm9yay1kZWJ1Z3JlZy5wYXRjaAotCiAjIEZpeCBkaXNw bGF5aW5nIG9mIG51bWVyaWMgY2hhciBhcnJheXMgYXMgc3RyaW5ncyAoQlogMjI0MTI4KS4KIFBh dGNoMjgyOiBnZGItNi43LWNoYXJzaWduLXRlc3QucGF0Y2gKIApAQCAtNTIxLDcgKzUxNiw2IEBA IHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhw LmMKICVwYXRjaDI3MSAtcDEKICVwYXRjaDI3NCAtcDEKICVwYXRjaDM1MyAtcDEKLSVwYXRjaDI4 MCAtcDEKICVwYXRjaDI4MiAtcDEKICVwYXRjaDI4NCAtcDEKICVwYXRjaDI4NyAtcDEKQEAgLTgy Nyw2ICs4MjEsMTAgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFR1ZSBBdWcgMTggMjAw OSBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA2LjguNTAuMjAw OTA4MTgtMQorLSBVcGdyYWRlIHRvIHRoZSBGU0YgR0RCIGdkYi02LjguNTAgc25hcHNob3Q6IDYu OC41MC4yMDA5MDgxOAorLSBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExMiBjb21taXQ6IDVl MGQxY2M3NGYxMTkzOTFhMmMzYWUyNWVmNTc0OWZjMjg2NzRmMDYKKwogKiBXZWQgQXVnIDEyIDIw MDkgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+IC0gNi44LjUwLjIw MDkwODExLTQKIC0gRml4IG1pbm9yIHJlZ3Jlc3Npb25zIGludHJvZHVjZWQgYnkgdGhlIHJlYmFz ZSBmcm9tIEYtMTEgKDYuOC41MC4yMDA5MDMwMikuCiAKCmRpZmYgLS1naXQgYS9zb3VyY2VzIGIv c291cmNlcwppbmRleCBmZmJhY2MyLi42ZWY2YjFlIDEwMDY0NAotLS0gYS9zb3VyY2VzCisrKyBi L3NvdXJjZXMKQEAgLTEgKzEgQEAKLWYzZTBjZmNlMTI3OTgyZDBmMTQ3NzcxODhkOGZhNGM1ICBn ZGItNi44LjUwLjIwMDkwODExLnRhci5iejIKKzYzZDg0OGNmZGQ5YTQzYTliMmI0MTJhMjIwZDAw MzY2ICBnZGItNi44LjUwLjIwMDkwODE4LnRhci5iejIK