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] fix-dup-patch: - Rebase to FSF GDB 7.2.50.20101117 (which is a 7.3 pre-release). Date: Thu, 23 Jul 2026 18:29:35 GMT Message-ID: <178483137516.1.15248544911371229155.rpms-gdb-e00e5eae57c2@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: fix-dup-patch X-Git-Rev: e00e5eae57c22a7c6fce5dfc2d49f75bbe1e3579 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGZpeC1kdXAtcGF0Y2gKQ29tbWl0IDogZTAwZTVlYWU1N2MyMmE3YzZmY2U1ZGZjMmQ0OWY3NWJi ZTFlMzU3OQpBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KRGF0ZSAgIDogMjAxMC0xMS0xN1QwMzo1ODoxNiswMTowMApTdGF0cyAgOiArNTEyOC8tMTY0 NTYgaW4gNDkgZmlsZShzKQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9y cG1zL2dkYi9jL2UwMGU1ZWFlNTdjMjJhN2M2ZmNlNWRmYzJkNDlmNzViYmUxZTM1Nzk/YnJhbmNo PWZpeC1kdXAtcGF0Y2gKCkxvZzoKLSBSZWJhc2UgdG8gRlNGIEdEQiA3LjIuNTAuMjAxMDExMTcg KHdoaWNoIGlzIGEgNy4zIHByZS1yZWxlYXNlKS4KCi0tLQpkaWZmIC0tZ2l0IGEvLmdpdGlnbm9y ZSBiLy5naXRpZ25vcmUKaW5kZXggODE4YjFlNi4uMmJmYTYwOSAxMDA2NDQKLS0tIGEvLmdpdGln bm9yZQorKysgYi8uZ2l0aWdub3JlCkBAIC0xICsxIEBACi1nZGItNy4yLnRhci5iejIKK2dkYi03 LjIuNTAuMjAxMDExMTcudGFyLmJ6MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtYnoyMzE4MzItb2Jz dGFjay0yZ2IucGF0Y2ggYi9nZGItNi4zLWJ6MjMxODMyLW9ic3RhY2stMmdiLnBhdGNoCmluZGV4 IDQ3YmQ2OGIuLjM4NzQyY2QgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtYnoyMzE4MzItb2JzdGFjay0y Z2IucGF0Y2gKKysrIGIvZ2RiLTYuMy1iejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRjaApAQCAtMSwx MSArMSwxMSBAQAogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVn LmNnaT9pZD0yMzE4MzIKIAogCi1JbmRleDogZ2RiLTYuOC9nZGIvc3ltbWlzYy5jCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltbWlzYy5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYu OC5vcmlnL2dkYi9zeW1taXNjLmMJMjAwOC0wMy0xNyAxNjowNjoyNC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNi44L2dkYi9zeW1taXNjLmMJMjAwOC0wNy0xNCAxMDoyNzo1MC4wMDAwMDAwMDAg KzAyMDAKLUBAIC0yMzAsOCArMjMwLDggQEAgcHJpbnRfb2JqZmlsZV9zdGF0aXN0aWNzICh2b2lk KQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvc3ltbWlzYy5jCTIwMTAtMTEtMTYg MDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3lt bWlzYy5jCTIwMTAtMTEtMTYgMDg6MDM6MDguMDAwMDAwMDAwICswMTAwCitAQCAtMTg2LDggKzE4 Niw4IEBAIHByaW50X29iamZpbGVfc3RhdGlzdGljcyAodm9pZCkKICAgICAgaWYgKE9CSlNUQVQg KG9iamZpbGUsIHN6X3N0cnRhYikgPiAwKQogICAgICAgIHByaW50Zl9maWx0ZXJlZCAoXygiICBT cGFjZSB1c2VkIGJ5IGEub3V0IHN0cmluZyB0YWJsZXM6ICVkXG4iKSwKICAJCSAgICAgICBPQkpT VEFUIChvYmpmaWxlLCBzel9zdHJ0YWIpKTsKQEAgLTE0LDEyICsxNCwxMiBAQCBJbmRleDogZ2Ri LTYuOC9nZGIvc3ltbWlzYy5jCiArICAgIHByaW50Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1v cnkgdXNlZCBmb3Igb2JqZmlsZSBvYnN0YWNrOiAlbGRcbiIpLAogKwkJICAgICAobG9uZykgb2Jz dGFja19tZW1vcnlfdXNlZCAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaykpOwogICAgICBwcmlu dGZfZmlsdGVyZWQgKF8oIiAgVG90YWwgbWVtb3J5IHVzZWQgZm9yIHBzeW1ib2wgY2FjaGU6ICVk XG4iKSwKLSAJCSAgICAgYmNhY2hlX21lbW9yeV91c2VkIChvYmpmaWxlLT5wc3ltYm9sX2NhY2hl KSk7Ci0gICAgIHByaW50Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3IgbWFj cm8gY2FjaGU6ICVkXG4iKSwKLUluZGV4OiBnZGItNi44L2luY2x1ZGUvb2JzdGFjay5oCisgCQkg ICAgIGJjYWNoZV9tZW1vcnlfdXNlZCAocHN5bWJvbF9iY2FjaGVfZ2V0X2JjYWNoZQorIAkJICAg ICAgICAgICAgICAgICAgICAgICAgICAob2JqZmlsZS0+cHN5bWJvbF9jYWNoZSkpKTsKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2luY2x1ZGUvb2JzdGFjay5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTYuOC5vcmlnL2luY2x1ZGUvb2JzdGFjay5oCTIwMDUtMDUtMTAgMTI6MjE6MDguMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTYuOC9pbmNsdWRlL29ic3RhY2suaAkyMDA4LTA3LTE0IDEwOjI3 OjUwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9pbmNsdWRl L29ic3RhY2suaAkyMDA4LTEwLTIxIDAxOjAzOjMxLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvaW5jbHVkZS9vYnN0YWNrLmgJMjAxMC0xMS0xNiAwODowMjozNy4wMDAw MDAwMDAgKzAxMDAKIEBAIC0xODgsMzEgKzE4OCwzMSBAQCBzdHJ1Y3Qgb2JzdGFjawkJLyogY29u dHJvbCBjdXJyZW50IG9iamVjCiAgCiAgLyogRGVjbGFyZSB0aGUgZXh0ZXJuYWwgZnVuY3Rpb25z IHdlIHVzZTsgdGhleSBhcmUgaW4gb2JzdGFjay5jLiAgKi8KQEAgLTEzNCwxMCArMTM0LDEwIEBA IEluZGV4OiBnZGItNi44L2luY2x1ZGUvb2JzdGFjay5oCiAgCSAgICA9IChoKS0+dGVtcCArIChj aGFyICopIChoKS0+Y2h1bmspCQkJCVwKICAgICA6ICgoKG9ic3RhY2tfZnJlZSkgKChoKSwgKGgp LT50ZW1wICsgKGNoYXIgKikgKGgpLT5jaHVuayksIDApLCAwKSkpCiAgCi1JbmRleDogZ2RiLTYu OC9saWJpYmVydHkvb2JzdGFjay5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9saWJpYmVy dHkvb2JzdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC5vcmlnL2xpYmliZXJ0eS9vYnN0 YWNrLmMJMjAwNS0wNS0xMCAxNzozMzozMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44L2xp YmliZXJ0eS9vYnN0YWNrLmMJMjAwOC0wNy0xNCAxMDoyNzo1MC4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvbGliaWJlcnR5L29ic3RhY2suYwkyMDA1LTA1LTEw IDE3OjMzOjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvbGliaWJl cnR5L29ic3RhY2suYwkyMDEwLTExLTE2IDA4OjAyOjM3LjAwMDAwMDAwMCArMDEwMAogQEAgLTQ0 LDkgKzQ0LDExIEBACiAgI2lmICFkZWZpbmVkIChfTElCQykgJiYgZGVmaW5lZCAoX19HTlVfTElC UkFSWV9fKSAmJiBfX0dOVV9MSUJSQVJZX18gPiAxCiAgI2luY2x1ZGUgPGdudS12ZXJzaW9ucy5o PgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtZ3N0YWNrLTIwMDUwNDExLnBhdGNoIGIvZ2RiLTYuMy1n c3RhY2stMjAwNTA0MTEucGF0Y2gKaW5kZXggMmQ5OTQyOC4uOThkNWJiMCAxMDA2NDQKLS0tIGEv Z2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKKysrIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0 MTEucGF0Y2gKQEAgLTQsMjAgKzQsMjAgQEAKIAl0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwuCiAJ KiBnc3RhY2suc2gsIGdzdGFjay4xOiBOZXcgZmlsZXMuCiAKLUluZGV4OiBnZGItNy4yL2dkYi9N YWtlZmlsZS5pbgorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2VmaWxlLmluCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEwLTA5LTAzIDA5 OjM3OjU1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL01ha2VmaWxlLmluCTIwMTAt MDktMDMgMDk6Mzg6NDUuMDAwMDAwMDAwICswMjAwCi1AQCAtMTAxMCw3ICsxMDEwLDcgQEAgaW5z dGFsbDogYWxsIGluc3RhbGwtb25seSAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2Ri L01ha2VmaWxlLmluCTIwMTAtMTEtMDUgMTU6MzE6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvTWFrZWZpbGUuaW4JMjAxMC0xMS0xNiAwNzo1NjoxMC4wMDAw MDAwMDAgKzAxMDAKK0BAIC05NzIsNyArOTcyLDcgQEAgZ2RiLno6Z2RiLjEKKyBpbnN0YWxsOiBh bGwKKyAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsLW9ubHkKICAKLSAjIFRoZSAi aW5zdGFsbC1vbmx5IiB0YXJnZXQgYWxzbyBpbnN0YWxscyB0aGUgc3lzY2FsbHMnIFhNTCBmaWxl cyBpbgotICMgdGhlIHN5c3RlbS4KLS1pbnN0YWxsLW9ubHk6ICQoQ09ORklHX0lOU1RBTEwpIHht bC1zeXNjYWxsLWluc3RhbGwKLStpbnN0YWxsLW9ubHk6IGluc3RhbGwtZ3N0YWNrICQoQ09ORklH X0lOU1RBTEwpIHhtbC1zeXNjYWxsLWluc3RhbGwKKy1pbnN0YWxsLW9ubHk6ICQoQ09ORklHX0lO U1RBTEwpCisraW5zdGFsbC1vbmx5OiBpbnN0YWxsLWdzdGFjayAkKENPTkZJR19JTlNUQUxMKQog IAl0cmFuc2Zvcm1lZF9uYW1lPWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJzsgXAogIAkJ CSAgZWNobyBnZGIgfCBzZWQgLWUgIiQkdCJgIDsgXAogIAkJaWYgdGVzdCAieCQkdHJhbnNmb3Jt ZWRfbmFtZSIgPSB4OyB0aGVuIFwKLUBAIC0xMDQ2LDcgKzEwNDYsMjUgQEAgaW5zdGFsbC10dWk6 CitAQCAtMTAwOCw3ICsxMDA4LDI1IEBAIGluc3RhbGwtdHVpOgogIGluc3RhbGwtcHl0aG9uOgog IAkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERFU1RESVIpJChHREJfREFU QURJUikvcHl0aG9uL2dkYgogIApAQCAtNDQsNyArNDQsNyBAQCBJbmRleDogZ2RiLTcuMi9nZGIv TWFrZWZpbGUuaW4KICAJdHJhbnNmb3JtZWRfbmFtZT1gdD0nJChwcm9ncmFtX3RyYW5zZm9ybV9u YW1lKSc7IFwKICAJCQkgIGVjaG8gZ2RiIHwgc2VkIC1lICQkdGAgOyBcCiAgCQlpZiB0ZXN0ICJ4 JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4gXAotQEAgLTEwNjgsNiArMTA4NiwxNyBAQCB1 bmluc3RhbGwtdHVpOgorQEAgLTEwMzAsNiArMTA0OCwxNyBAQCB1bmluc3RhbGwtdHVpOgogIAkJ ZmkgOyBcCiAgCQlybSAtZiAkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZSQo RVhFRVhUKSBcCiAgCQkgICAgICAkKERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25h bWUuMQpAQCAtNjIsMTAgKzYyLDEwIEBAIEluZGV4OiBnZGItNy4yL2dkYi9NYWtlZmlsZS5pbgog IAogICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVpbHQgc3RhbmRhbG9uZSBmb3IgdGVz dGluZy4KICB0ZXN0LWNwLW5hbWUtcGFyc2VyLm86IGNwLW5hbWUtcGFyc2VyLmMKLUluZGV4OiBn ZGItNy4yL2dkYi9nc3RhY2suc2gKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nc3Rh Y2suc2gKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi9nc3RhY2suc2gJMjAxMC0wOS0wMyAwOTozODox Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nc3RhY2suc2gJ MjAxMC0xMS0xNiAwNzo1NTo0Ny4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsNDggQEAKICsj IS9iaW4vc2gKICsKQEAgLTExNSwxMCArMTE1LDEwIEBAIEluZGV4OiBnZGItNy4yL2dkYi9nc3Rh Y2suc2gKICsgICAgLWUgJ3MvXlwoKGdkYikgXCkqLy8nIFwKICsgICAgLWUgJy9eIy9wJyBcCiAr ICAgIC1lICcvXlRocmVhZC9wJwotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9nc3RhY2suZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2dzdGFjay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ3N0YWNrLmV4cAkyMDEwLTA5LTAzIDA5OjM4OjEyLjAwMDAwMDAwMCArMDIwMAorKysrIGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3RhY2suZXhwCTIwMTAt MTEtMTYgMDc6NTU6NDcuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDcxIEBACiArIyBDb3B5 cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xOTEs MTAgKzE5MSwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFj ay5leHAKICtnZGJfZXhpdAogKwogK3JlbW90ZV9leGVjIGhvc3QgImtpbGwgLTkgJHBpZCIKLUlu ZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmMKK0luZGV4OiBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmMKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0YWNrLmMJMjAxMC0wOS0wMyAwOToz ODoxMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZ3N0YWNrLmMJMjAxMC0xMS0xNiAwNzo1NTo0Ny4wMDAwMDAwMDAgKzAxMDAK IEBAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIw Ni5wYXRjaCBiL2dkYi02LjMtbGFyZ2UtY29yZS0yMDA1MTIwNi5wYXRjaAppbmRleCA4Nzg5YTZh Li4zYmU3NDZhIDEwMDY0NAotLS0gYS9nZGItNi4zLWxhcmdlLWNvcmUtMjAwNTEyMDYucGF0Y2gK KysrIGIvZ2RiLTYuMy1sYXJnZS1jb3JlLTIwMDUxMjA2LnBhdGNoCkBAIC0yNSwxMCArMjUsMTAg QEAKIAogCVBvcnQgdG8gR0RCLTYuNy4KIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3N5bWZpbGUtbWVtLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW1maWxlLW1l bS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9zeW1maWxl LW1lbS5jCTIwMTAtMDEtMDEgMDg6MzE6NDIuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS45 MC4yMDEwMDcxMS9nZGIvc3ltZmlsZS1tZW0uYwkyMDEwLTA3LTEyIDEwOjQ2OjI0LjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvc3ltZmlsZS1tZW0uYwky MDEwLTAxLTAxIDA4OjMxOjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3N5bWZpbGUtbWVtLmMJMjAxMC0xMS0xNiAwODowMDozNy4wMDAwMDAwMDAgKzAxMDAK IEBAIC01Nyw2ICs1NywxNCBAQAogICNpbmNsdWRlICJlbGYvY29tbW9uLmgiCiAgCkBAIC01Mywx MCArNTMsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3N5bWZpbGUtbWVtLmMK ICAgIGlmIChuYmZkID09IE5VTEwpCiAgICAgIGVycm9yIChfKCJGYWlsZWQgdG8gcmVhZCBhIHZh bGlkIG9iamVjdCBmaWxlIGltYWdlIGZyb20gbWVtb3J5LiIpKTsKICAKLUluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3RhcmdldC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90 YXJnZXQuYwkyMDEwLTA3LTEyIDEwOjAwOjU2LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5jCTIwMTAtMDctMTIgMTA6NDc6MDQuMDAwMDAwMDAwICsw MjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90YXJnZXQuYwkyMDEwLTExLTE2 IDA3OjUzOjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rh cmdldC5jCTIwMTAtMTEtMTYgMDg6MDA6MzcuMDAwMDAwMDAwICswMTAwCiBAQCAtNTgsNyArNTgs NyBAQCBzdGF0aWMgaW50IG5vc3ltYm9sIChjaGFyICosIENPUkVfQUREUiAqCiAgCiAgc3RhdGlj IHZvaWQgdGNvbXBsYWluICh2b2lkKSBBVFRSSUJVVEVfTk9SRVRVUk47CkBAIC04NCw3ICs4NCw3 IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwogIAkgICAgbm9tZW1v cnkpOwogICAgZGVfZmF1bHQgKHRvX2ZpbGVzX2luZm8sCiAgCSAgICAodm9pZCAoKikgKHN0cnVj dCB0YXJnZXRfb3BzICopKQotQEAgLTE1MjYsNyArMTUyNiw3IEBAIHRhcmdldF94ZmVyX3BhcnRp YWwgKHN0cnVjdCB0YXJnZXRfb3BzICoKK0BAIC0xNTUwLDcgKzE1NTAsNyBAQCB0YXJnZXRfeGZl cl9wYXJ0aWFsIChzdHJ1Y3QgdGFyZ2V0X29wcyAqCiAgICAgaXQgbWFrZXMgbm8gcHJvZ3Jlc3Ms IGFuZCB0aGVuIHJldHVybiBob3cgbXVjaCB3YXMgdHJhbnNmZXJyZWQpLiAqLwogIAogIGludApA QCAtOTMsNyArOTMsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGFyZ2V0LmMK ICB7CiAgICAvKiBEaXNwYXRjaCB0byB0aGUgdG9wbW9zdCB0YXJnZXQsIG5vdCB0aGUgZmxhdHRl bmVkIGN1cnJlbnRfdGFyZ2V0LgogICAgICAgTWVtb3J5IGFjY2Vzc2VzIGNoZWNrIHRhcmdldC0+ dG9faGFzXyhhbGxfKW1lbW9yeSwgYW5kIHRoZQotQEAgLTE1NDIsNyArMTU0Miw3IEBAIHRhcmdl dF9yZWFkX21lbW9yeSAoQ09SRV9BRERSIG1lbWFkZHIsIGcKK0BAIC0xNTY2LDcgKzE1NjYsNyBA QCB0YXJnZXRfcmVhZF9tZW1vcnkgKENPUkVfQUREUiBtZW1hZGRyLCBnCiAgICAgdGhlIHRhcmdl dCdzIHN0YWNrLiAgVGhpcyBtYXkgdHJpZ2dlciBkaWZmZXJlbnQgY2FjaGUgYmVoYXZpb3IuICAq LwogIAogIGludApAQCAtMTAyLDcgKzEwMiw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzEx L2dkYi90YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRoZSB0b3Btb3N0IHRhcmdldCwg bm90IHRoZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAgICBNZW1vcnkgYWNjZXNzZXMg Y2hlY2sgdGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQgdGhlCi1AQCAtMTU2MSw3ICsx NTYxLDcgQEAgdGFyZ2V0X3JlYWRfc3RhY2sgKENPUkVfQUREUiBtZW1hZGRyLCBnZAorQEAgLTE1 ODUsNyArMTU4NSw3IEBAIHRhcmdldF9yZWFkX3N0YWNrIChDT1JFX0FERFIgbWVtYWRkciwgZ2QK ICAgICBDYWxsZXJzIHRoYXQgY2FuIGRlYWwgd2l0aCBwYXJ0aWFsIHdyaXRlcyBzaG91bGQgY2Fs bCB0YXJnZXRfd3JpdGUuICAqLwogIAogIGludApAQCAtMTExLDcgKzExMSw3IEBAIEluZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuYwogIHsKICAgIC8qIERpc3BhdGNoIHRvIHRo ZSB0b3Btb3N0IHRhcmdldCwgbm90IHRoZSBmbGF0dGVuZWQgY3VycmVudF90YXJnZXQuCiAgICAg ICBNZW1vcnkgYWNjZXNzZXMgY2hlY2sgdGFyZ2V0LT50b19oYXNfKGFsbF8pbWVtb3J5LCBhbmQg dGhlCi1AQCAtMzIxOCw4ICszMjE4LDggQEAgZGVidWdfdG9fcHJlcGFyZV90b19zdG9yZSAoc3Ry dWN0IHJlZ2NhYworQEAgLTMzNDgsOCArMzM0OCw4IEBAIGRlYnVnX3RvX3ByZXBhcmVfdG9fc3Rv cmUgKHN0cnVjdCByZWdjYWMKICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgInRh cmdldF9wcmVwYXJlX3RvX3N0b3JlICgpXG4iKTsKICB9CiAgCkBAIC0xMjIsNyArMTIyLDcgQEAg SW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5jCiAgCQkJICAgICAgaW50IHdy aXRlLCBzdHJ1Y3QgbWVtX2F0dHJpYiAqYXR0cmliLAogIAkJCSAgICAgIHN0cnVjdCB0YXJnZXRf b3BzICp0YXJnZXQpCiAgewotQEAgLTMyMjksOCArMzIyOSw4IEBAIGRlcHJlY2F0ZWRfZGVidWdf eGZlcl9tZW1vcnkgKENPUkVfQUREUiAKK0BAIC0zMzU5LDggKzMzNTksOCBAQCBkZXByZWNhdGVk X2RlYnVnX3hmZXJfbWVtb3J5IChDT1JFX0FERFIgCiAgCQkJCQkJYXR0cmliLCB0YXJnZXQpOwog IAogICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtMTMzLDExICsxMzMsMTEg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5jCiAgCQkgICAgICB3cml0 ZSA/ICJ3cml0ZSIgOiAicmVhZCIsIHJldHZhbCk7CiAgCiAgICBpZiAocmV0dmFsID4gMCkKLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuaAorSW5kZXg6IGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcx MS5vcmlnL2dkYi90YXJnZXQuaAkyMDEwLTA3LTEyIDEwOjAwOjU2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3RhcmdldC5oCTIwMTAtMDctMTIgMTA6NDY6MjQu MDAwMDAwMDAwICswMjAwCi1AQCAtNDE3LDEwICs0MTcsMTAgQEAgc3RydWN0IHRhcmdldF9vcHMK Ky0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTAtMTEtMTYgMDc6 NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGFyZ2V0 LmgJMjAxMC0xMS0xNiAwODowMDozNy4wMDAwMDAwMDAgKzAxMDAKK0BAIC00MjksMTAgKzQyOSwx MCBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICAgICBOT1RFOiBjYWduZXkvMjAwNC0xMC0wMTog VGhpcyBoYXMgYmVlbiBlbnRpcmVseSBzdXBlcnNlZWRlZCBieQogICAgICAgICB0b194ZmVyX3Bh cnRpYWwgYW5kIGluZmVyaW9yIGluaGVyaXRhbmNlLiAgKi8KICAKQEAgLTE1Miw3ICsxNTIsNyBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGFyZ2V0LmgKICAKICAgICAgdm9pZCAo KnRvX2ZpbGVzX2luZm8pIChzdHJ1Y3QgdGFyZ2V0X29wcyAqKTsKICAgICAgaW50ICgqdG9faW5z ZXJ0X2JyZWFrcG9pbnQpIChzdHJ1Y3QgZ2RiYXJjaCAqLCBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8g Kik7Ci1AQCAtODM4LDEyICs4MzgsMTIgQEAgZXh0ZXJuIHZvaWQgdGFyZ2V0X2RjYWNoZV9pbnZh bGlkYXRlICh2bworQEAgLTg0NiwxMiArODQ2LDEyIEBAIGV4dGVybiB2b2lkIHRhcmdldF9kY2Fj aGVfaW52YWxpZGF0ZSAodm8KICAKICBleHRlcm4gaW50IHRhcmdldF9yZWFkX3N0cmluZyAoQ09S RV9BRERSLCBjaGFyICoqLCBpbnQsIGludCAqKTsKICAKQEAgLTE2OCwxMCArMTY4LDEwIEBAIElu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90YXJnZXQuaAogIAogIC8qIEZldGNoZXMgdGhl IHRhcmdldCdzIG1lbW9yeSBtYXAuICBJZiBvbmUgaXMgZm91bmQgaXQgaXMgc29ydGVkCiAgICAg YW5kIHJldHVybmVkLCBhZnRlciBzb21lIGNvbnNpc3RlbmN5IGNoZWNraW5nLiAgT3RoZXJ3aXNl LCBOVUxMCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZGNhY2hlLmMKK0luZGV4OiBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kY2FjaGUuYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEu OTAuMjAxMDA3MTEub3JpZy9nZGIvZGNhY2hlLmMJMjAxMC0wNS0xNCAxOTo1MzoxNS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kY2FjaGUuYwkyMDEwLTA3LTEy IDEwOjQ2OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9n ZGIvZGNhY2hlLmMJMjAxMC0wNS0xNCAxOTo1MzoxNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi9kY2FjaGUuYwkyMDEwLTExLTE2IDA4OjAwOjM3LjAwMDAwMDAw MCArMDEwMAogQEAgLTQ2NSwxMCArNDY1LDEwIEBAIGRjYWNoZV9mcmVlIChEQ0FDSEUgKmRjYWNo ZSkKICAgICBOT1RFOiBUaGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSB0b194ZmVyX3BhcnRpYWwg aW50ZXJmYWNlLCBpbiB3aGljaAogICAgIHBvc2l0aXZlIHZhbHVlcyBsZXNzIHRoYW4gTEVOIG1l YW4gZnVydGhlciB0cmFuc2ZlcnMgbWF5IGJlIHBvc3NpYmxlLiAgKi8KQEAgLTE4NSwxMCArMTg1 LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kY2FjaGUuYwogIHsKICAgIGlu dCBpOwogICAgaW50IHJlczsKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kY2FjaGUu aAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RjYWNoZS5oCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9kY2FjaGUuaAkyMDEwLTAxLTAxIDA4OjMx OjMwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2RjYWNoZS5o CTIwMTAtMDctMTIgMTA6NDY6MjQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEw MTExNi5vcmlnL2dkYi9kY2FjaGUuaAkyMDEwLTAxLTAxIDA4OjMxOjMwLjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RjYWNoZS5oCTIwMTAtMTEtMTYgMDg6MDA6 MzcuMDAwMDAwMDAwICswMTAwCiBAQCAtMzUsOCArMzUsOCBAQCB2b2lkIGRjYWNoZV9mcmVlIChE Q0FDSEUgKik7CiAgCiAgLyogU2ltcGxlIHRvIGNhbGwgZnJvbSA8cmVtb3RlPl94ZmVyX21lbW9y eSAqLwpAQCAtMjAwLDEwICsyMDAsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L2RjYWNoZS5oCiAgCiAgdm9pZCBkY2FjaGVfdXBkYXRlIChEQ0FDSEUgKmRjYWNoZSwgQ09SRV9B RERSIG1lbWFkZHIsIGdkYl9ieXRlICpteWFkZHIsCiAgCQkgICAgaW50IGxlbik7Ci1JbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dk Yi9leGVjLmMJMjAxMC0wNS0xNCAyMDozNToxMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9leGVjLmMJMjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAwMDAgKzAy MDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2V4ZWMuYwkyMDEwLTA4LTMxIDIw OjA4OjQzLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2V4ZWMu YwkyMDEwLTExLTE2IDA4OjAwOjM3LjAwMDAwMDAwMCArMDEwMAogQEAgLTU3MSw3ICs1NzEsNyBA QCBtYXBfdm1hcCAoYmZkICphYmZkLCBiZmQgKmFyY2gpCiAgfQogIAwKQEAgLTIxMywxMSArMjEz LDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmMKICBzZWN0aW9uX3Rh YmxlX3hmZXJfbWVtb3J5X3BhcnRpYWwgKGdkYl9ieXRlICpyZWFkYnVmLCBjb25zdCBnZGJfYnl0 ZSAqd3JpdGVidWYsCiAgCQkJCSAgIFVMT05HRVNUIG9mZnNldCwgTE9OR0VTVCBsZW4sCiAgCQkJ CSAgIHN0cnVjdCB0YXJnZXRfc2VjdGlvbiAqc2VjdGlvbnMsCi1JbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9s aW51eC1uYXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv bGludXgtbmF0LmMJMjAxMC0wNy0xMiAxMDo0NDozNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9saW51eC1uYXQuYwkyMDEwLTA3LTEyIDEwOjQ2OjI0LjAwMDAw MDAwMCArMDIwMAotQEAgLTUxOTcsNyArNTE5Nyw3IEBAIGxpbnV4X3hmZXJfcGFydGlhbCAoc3Ry dWN0IHRhcmdldF9vcHMgKm8KKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4 LW5hdC5jCTIwMTAtMTEtMTYgMDg6MDA6MjYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMJMjAxMC0xMS0xNiAwODowMDozNy4wMDAwMDAwMDAg KzAxMDAKK0BAIC01MjUxLDcgKzUyNTEsNyBAQCBsaW51eF94ZmVyX3BhcnRpYWwgKHN0cnVjdCB0 YXJnZXRfb3BzICpvCiAgI2VuZGlmCiAgICAgICAgaWYgKGl0ZXJhdGVfb3Zlcl9sd3BzIChpYTY0 X2xpbnV4X2NoZWNrX3N0YWNrX3JlZ2lvbiwgJnJhbmdlKSAhPSBOVUxMKQogIAl7IC8qIFRoaXMg cmVnaW9uIGNvbnRhaW5zIGlhNjQgcnNlIHJlZ2lzdGVycywgd2UgaGF2ZSB0byByZS1yZWFkLiAg Ki8KQEAgLTIyNiwxMCArMjI2LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9s aW51eC1uYXQuYwogIAogIAkgIC8qIFJlLXJlYWQgcmVnaXN0ZXIgc3RhY2sgYXJlYS4gICovCiAg CSAgeHhmZXIgPSBzdXBlcl94ZmVyX3BhcnRpYWwgKG9wcywgb2JqZWN0LCBhbm5leCwKLUluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9yZW1vdGUuYworSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL3JlbW90ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi9yZW1vdGUuYwkyMDEwLTA3LTA3IDE4OjE1OjE2LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3JlbW90ZS5jCTIwMTAtMDctMTIgMTA6NDY6MjQuMDAw MDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9yZW1vdGUuYwky MDEwLTExLTA0IDA1OjQ4OjIxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3JlbW90ZS5jCTIwMTAtMTEtMTYgMDg6MDA6MzcuMDAwMDAwMDAwICswMTAwCiBAQCAt MjUsNiArMjUsNyBAQAogICNpbmNsdWRlICJnZGJfc3RyaW5nLmgiCiAgI2luY2x1ZGUgPGN0eXBl Lmg+CkBAIC0yNjksMTEgKzI2OSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv cmVtb3RlLmMKICB9CiAgCiAgLyogU2VuZHMgYSBwYWNrZXQgd2l0aCBjb250ZW50IGRldGVybWlu ZWQgYnkgdGhlIHByaW50ZiBmb3JtYXQgc3RyaW5nCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvcmVtb3RlLXNpbS5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvcmVtb3Rl LXNpbS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9yZW1v dGUtc2ltLmMJMjAxMC0wNS0xNiAyMzoxMToxNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0wNy0xMiAxMDo0NjoyNC4wMDAwMDAw MDAgKzAyMDAKLUBAIC03NTksMTEgKzc1OSwxNCBAQCBnZGJzaW1fcHJlcGFyZV90b19zdG9yZSAo c3RydWN0IHJlZ2NhY2hlCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9yZW1vdGUt c2ltLmMJMjAxMC0wOC0xMCAwNjozOToyNi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi9yZW1vdGUtc2ltLmMJMjAxMC0xMS0xNiAwODowMToxNi4wMDAwMDAwMDAg KzAxMDAKK0BAIC0xMDU1LDExICsxMDU1LDEzIEBAIGdkYnNpbV9wcmVwYXJlX3RvX3N0b3JlIChz dHJ1Y3QgcmVnY2FjaGUKICAKICAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdHJhbnNm ZXJyZWQuICovCiAgCkBAIC0yODYsMTQgKzI4NiwxMyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvcmVtb3RlLXNpbS5jCiAgewogKyAgLyogQ29udmVydCB0byBsZW4gdHlwZSB0aGF0 IHNpbV9yZWFkIGFuZCBzaW1fd3JpdGUgY2FuIGhhbmRsZS4gICovCiArICBpbnQgeGZlcl9sZW4g PSAoaW50KWxlbjsKLSsKLSAgIC8qIElmIG5vIHByb2dyYW0gaXMgcnVubmluZyB5ZXQsIHRoZW4g aWdub3JlIHRoZSBzaW11bGF0b3IgZm9yCi0gICAgICBtZW1vcnkuICBQYXNzIHRoZSByZXF1ZXN0 IGRvd24gdG8gdGhlIG5leHQgdGFyZ2V0LCBob3BlZnVsbHkKLSAgICAgIGFuIGV4ZWMgZmlsZS4g ICovCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZXhlYy5oCisgICBzdHJ1Y3Qgc2lt X2luZmVyaW9yX2RhdGEgKnNpbV9kYXRhCisgICAgID0gZ2V0X3NpbV9pbmZlcmlvcl9kYXRhIChj dXJyZW50X2luZmVyaW9yICgpLCBTSU1fSU5TVEFOQ0VfTk9UX05FRURFRCk7CisgCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZXhlYy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45 MC4yMDEwMDcxMS5vcmlnL2dkYi9leGVjLmgJMjAxMC0wMS0wMSAwODozMTozMS4wMDAwMDAwMDAg KzAxMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9leGVjLmgJMjAxMC0wNy0xMiAxMDo0 NjoyNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2V4 ZWMuaAkyMDEwLTAxLTAxIDA4OjMxOjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL2V4ZWMuaAkyMDEwLTExLTE2IDA4OjAwOjM3LjAwMDAwMDAwMCArMDEwMAog QEAgLTYwLDcgKzYwLDcgQEAgZXh0ZXJuIGludCByZXNpemVfc2VjdGlvbl90YWJsZSAoc3RydWN0 IAogIAogICAgIE9uZSwgYW5kIG9ubHkgb25lLCBvZiByZWFkYnVmIG9yIHdyaXRlYnVmIG11c3Qg YmUgbm9uLU5VTEwuICAqLwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVhZG5ldmVyLTIwMDUwOTA3 LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKaW5kZXggN2NkYzBmNy4u NTE5NjQzZCAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKKysr IGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTExLDExICsxMSwxMSBAQAog CiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERvY3VtZW50IC0tcmVhZG5l dmVyLgogCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZG9jL2dkYi50ZXhpbmZvCitJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0w Ny0yMyAyMDo1ODo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzIxL2dk Yi9kb2MvZ2RiLnRleGluZm8JMjAxMC0wNy0yMyAyMDo1OToxNS4wMDAwMDAwMDAgKzAyMDAKLUBA IC05OTgsNiArOTk4LDEyIEBAIFJlYWQgZWFjaCBzeW1ib2wgZmlsZSdzIGVudGlyZSBzeW1ib2wg dGEKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDEw LTExLTEyIDIxOjQ5OjQxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2RvYy9nZGIudGV4aW5mbwkyMDEwLTExLTE2IDA3OjU5OjMxLjAwMDAwMDAwMCArMDEwMAor QEAgLTEwMDEsNiArMTAwMSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBlbnRpcmUgc3lt Ym9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVtZW50YWxseSBh cyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0IG1ha2VzIGZ1 dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KICAKQEAgLTI4LDExICsyOCwxMSBAQCBJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQogIAogIEBu b2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL21haW4uYwor SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL21haW4uYwogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvbWFpbi5jCTIwMTAtMDctMjMgMjA6NTg6NTUuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvbWFpbi5jCTIwMTAtMDct MjMgMjA6NTk6MTUuMDAwMDAwMDAwICswMjAwCi1AQCAtMzkxLDYgKzM5MSw3IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9tYWlu LmMJMjAxMC0xMS0xNiAwNzo1OToyMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9tYWluLmMJMjAxMC0xMS0xNiAwNzo1OTo1OS4wMDAwMDAwMDAgKzAxMDAKK0BA IC0zOTAsNiArMzkwLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAgICB7Inhk YiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIsIG5vX2Fy Z3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBub19hcmd1bWVu dCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDE4ICs0MCwxOCBAQCBJbmRleDog Z2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvbWFpbi5jCiAgICAgICAgeyJyIiwgbm9fYXJndW1lbnQs ICZyZWFkbm93X3N5bWJvbF9maWxlcywgMX0sCiAgICAgICAgeyJxdWlldCIsIG5vX2FyZ3VtZW50 LCAmcXVpZXQsIDF9LAogICAgICAgIHsicSIsIG5vX2FyZ3VtZW50LCAmcXVpZXQsIDF9LAotQEAg LTEwMzgsNiArMTAzOSw3IEBAIE9wdGlvbnM6XG5cblwKLSAgIGZwdXRzX3VuZmlsdGVyZWQgKF8o IlwKK0BAIC05ODIsNiArOTgzLDcgQEAgT3B0aW9uczpcblxuXAorICAgZnB1dHNfdW5maWx0ZXJl ZCAoXygiIGZpbGUuXG5cCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50IHZlcnNp b24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVsbHkgcmVh ZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogKyAgLS1yZWFkbmV2ZXIgICAgICAg IERvIG5vdCByZWFkIHN5bWJvbCBmaWxlcy5cblwKICAiKSwgc3RyZWFtKTsKICAgIGZwdXRzX3Vu ZmlsdGVyZWQgKF8oIlwKICAgIC0tc2U9RklMRSAgICAgICAgICBVc2UgRklMRSBhcyBzeW1ib2wg ZmlsZSBhbmQgZXhlY3V0YWJsZSBmaWxlLlxuXAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEv Z2RiL3N5bWZpbGUuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIvc3ltZmlsZS5jCTIw MTAtMDctMjMgMjA6NTg6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcy MS9nZGIvc3ltZmlsZS5jCTIwMTAtMDctMjMgMjA6NTk6MTUuMDAwMDAwMDAwICswMjAwCistLS0g Z2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9zeW1maWxlLmMJMjAxMC0xMC0xNyAyMDo0OTo0 Ni4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW1maWxlLmMJ MjAxMC0xMS0xNiAwNzo1OTozMS4wMDAwMDAwMDAgKzAxMDAKIEBAIC04MCw2ICs4MCw3IEBAIHN0 YXRpYyB2b2lkIGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwICgKICAKICAvKiBHbG9iYWwgdmFy aWFibGVzIG93bmVkIGJ5IHRoaXMgZmlsZSAqLwpAQCAtNjAsMTkgKzYwLDE5IEBAIEluZGV4OiBn ZGItNy4xLjkwLjIwMTAwNzIxL2dkYi9zeW1maWxlLmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJs ZXMgYW5kIGZ1bmN0aW9ucyByZWZlcmVuY2VkLiAqLwogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MjEvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2R3 YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MjEub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMDctMjMgMjA6NTg6NTMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMDctMjMgMjA6NTk6MjYuMDAw MDAwMDAwICswMjAwCi1AQCAtNTQsNiArNTQsNyBAQAotICNpbmNsdWRlICJleGNlcHRpb25zLmgi Ci0gI2luY2x1ZGUgImdkYl9zdGF0LmgiCi0gI2luY2x1ZGUgImNvbXBsZXRlci5oIgorLS0tIGdk Yi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDc6NTQ6 MDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMTEtMTYgMDg6MDA6MTguMDAwMDAwMDAwICswMTAwCitAQCAtNTcsNiArNTcsNyBA QAorICNpbmNsdWRlICJ2ZWMuaCIKKyAjaW5jbHVkZSAiYy1sYW5nLmgiCisgI2luY2x1ZGUgInZh bHByaW50LmgiCiArI2luY2x1ZGUgInRvcC5oIgogIAogICNpbmNsdWRlIDxmY250bC5oPgogICNp bmNsdWRlICJnZGJfc3RyaW5nLmgiCi1AQCAtMTI4Myw4ICsxMjg0LDkgQEAgZHdhcmYyX2hhc19p bmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZQorQEAgLTEzNTYsOCArMTM1Nyw5IEBAIGR3YXJm Ml9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKICAgICAgICBiZmRfbWFwX292ZXJf c2VjdGlvbnMgKG9iamZpbGUtPm9iZmQsIGR3YXJmMl9sb2NhdGVfc2VjdGlvbnMsIE5VTEwpOwog ICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSA9IG9iamZpbGU7CiAgICAgIH0KQEAg LTg0LDEwICs4NCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZHdhcmYycmVh ZC5jCiAgfQogIAogIC8qIFdoZW4gbG9hZGluZyBzZWN0aW9ucywgd2UgY2FuIGVpdGhlciBsb29r IGZvciAiLjxuYW1lPiIsIG9yIGZvcgotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MjEvZ2RiL3Rv cC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdG9wLmgKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4xLjkwLjIwMTAwNzIxLm9yaWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6Mzku MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdG9wLmgJMjAxMC0w Ny0yMyAyMDo1OToxNS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9y aWcvZ2RiL3RvcC5oCTIwMTAtMDQtMDcgMTg6NTQ6MzkuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdG9wLmgJMjAxMC0xMS0xNiAwNzo1OTozMS4wMDAwMDAwMDAg KzAxMDAKIEBAIC02MSw2ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNoYXIgKik7 CiAgCiAgLyogRnJvbSByYW5kb20gcGxhY2VzLiAgKi8KCmRpZmYgLS1naXQgYS9nZGItNi4zLXRl c3QtcGllLTIwMDUwMTA3LnBhdGNoIGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApp bmRleCA0NDBiMjgzLi44MjQ1NTRlIDEwMDY0NAotLS0gYS9nZGItNi4zLXRlc3QtcGllLTIwMDUw MTA3LnBhdGNoCisrKyBiL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcucGF0Y2gKQEAgLTEsMjUg KzEsMjUgQEAKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvY29uZmln dXJlLmFjCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2NvbmZpZ3Vy ZS5hYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuOTAuMjAxMDAzMDYub3JpZy9nZGIvdGVzdHN1 aXRlL2NvbmZpZ3VyZS5hYwkyMDEwLTAyLTE5IDIwOjE2OjM2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMC0wMy0w NiAyMzoxOTo1Ni4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAxMC0xMS0wNSAxNTozMToyOS4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFj CTIwMTAtMTEtMTYgMDc6NTY6NTMuMDAwMDAwMDAwICswMTAwCiBAQCAtMTQ0LDYgKzE0NCw2IEBA IEFDX09VVFBVVChbTWFrZWZpbGUgXAogICAgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFr ZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBcCiAgICBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIu c2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxlIFwKICAgIGdkYi5taS9NYWtlZmlsZSBn ZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgXAotLSAgZ2RiLm9iamMvTWFr ZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIFwKLSsgIGdkYi5vYmpj L01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01h a2VmaWxlIFwKKy0gIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9w dC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIFwKKysgIGdkYi5vYmpjL01ha2VmaWxlIGdk Yi5vcGVuY2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdk Yi5waWUvTWFrZWZpbGUgXAogICAgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtl ZmlsZSBcCiAgICBnZGIudGhyZWFkcy9NYWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnht bC9NYWtlZmlsZV0pCi1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2Nv bmZpZ3VyZQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1 cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjkwLjIwMTAwMzA2Lm9yaWcvZ2RiL3Rlc3RzdWl0 ZS9jb25maWd1cmUJMjAxMC0wMi0xOSAyMDoxNjozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTAtMDMtMDYgMjM6MjA6 MTIuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0 c3VpdGUvY29uZmlndXJlCTIwMTAtMTEtMDUgMTU6MzE6MjkuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZQkyMDEwLTExLTE2IDA3 OjU3OjU5LjAwMDAwMDAwMCArMDEwMAogQEAgLTM1MTUsNyArMzUxNSw3IEBAIGRvbmUKICAKICAK ICAKLS1hY19jb25maWdfZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9N YWtlZmlsZSBnZGIuYXJjaC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2Vm aWxlIGdkYi5jcC9NYWtlZmlsZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5kd2FyZjIvTWFrZWZp bGUgZ2RiLmZvcnRyYW4vTWFrZWZpbGUgZ2RiLnNlcnZlci9NYWtlZmlsZSBnZGIuamF2YS9NYWtl ZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2RiLm11bHRpL01ha2Vm aWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmls ZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi50aHJlYWRzL01h a2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIgotK2FjX2NvbmZpZ19m aWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGIuYWRhL01ha2VmaWxlIGdkYi5hcmNo L01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUgZ2RiLmNwL01ha2Vm aWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9N YWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxlIGdkYi5taS9NYWtl ZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkvTWFrZWZpbGUgZ2RiLm9iamMvTWFr ZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZp bGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIudGhyZWFkcy9N YWtlZmlsZSBnZGIudHJhY2UvTWFrZWZpbGUgZ2RiLnhtbC9NYWtlZmlsZSIKKy1hY19jb25maWdf ZmlsZXM9IiRhY19jb25maWdfZmlsZXMgTWFrZWZpbGUgZ2RiLmFkYS9NYWtlZmlsZSBnZGIuYXJj aC9NYWtlZmlsZSBnZGIuYXNtL01ha2VmaWxlIGdkYi5iYXNlL01ha2VmaWxlIGdkYi5jcC9NYWtl ZmlsZSBnZGIuZGlzYXNtL01ha2VmaWxlIGdkYi5kd2FyZjIvTWFrZWZpbGUgZ2RiLmZvcnRyYW4v TWFrZWZpbGUgZ2RiLnNlcnZlci9NYWtlZmlsZSBnZGIuamF2YS9NYWtlZmlsZSBnZGIubWkvTWFr ZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2RiLm11bHRpL01ha2VmaWxlIGdkYi5vYmpjL01h a2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucHl0aG9uL01h a2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFj ZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUiCisrYWNfY29u ZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2Ri LmFyY2gvTWFrZWZpbGUgZ2RiLmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY3Av TWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5mb3J0 cmFuL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUgZ2RiLm1p L01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBnZGIub2Jq Yy9NYWtlZmlsZSBnZGIub3B0L01ha2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnBpZS9N YWtlZmlsZSBnZGIucHl0aG9uL01ha2VmaWxlIGdkYi5yZXZlcnNlL01ha2VmaWxlIGdkYi50aHJl YWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIGdkYi5vcGVu Y2wvTWFrZWZpbGUiCiAgCiAgY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCiAgIyBUaGlzIGZpbGUg aXMgYSBzaGVsbCBzY3JpcHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCkBA IC0zMSwxMCArMzEsMTAgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0 ZS9jb25maWd1cmUKICAgICAgImdkYi5weXRob24vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRD T05GSUdfRklMRVMgZ2RiLnB5dGhvbi9NYWtlZmlsZSIgOzsKICAgICAgImdkYi5yZXZlcnNlL01h a2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdkYi5yZXZlcnNlL01ha2VmaWxl IiA7OwogICAgICAiZ2RiLnRocmVhZHMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdf RklMRVMgZ2RiLnRocmVhZHMvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMw Ni9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuOTAu MjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIwMTAtMDMtMDYgMjM6MTk6 MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYXR0YWNoLmMJMjAxMC0xMS0xNiAwNzo1NjozNC4wMDAwMDAwMDAgKzAxMDAKIEBA IC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRl ZCBvdXRzaWRlIG9mIGdkYiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVz LCBpdCBzaW1wbHkgc3BpbnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBA QCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYv Z2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYv bnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuOTAu MjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDEwLTAzLTA2IDIzOjE5 OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2F0dGFjaDIuYwkyMDEwLTExLTE2IDA3OjU2OjM0LjAwMDAwMDAwMCArMDEwMAog QEAgLTAsMCArMSwyNCBAQAogKy8qIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFy dGVkIG91dHNpZGUgb2YgZ2RiLCBhbmQgdGhlbgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRo dXMsIGl0IHNpbXBseSBzcGlucyBpbiBhIGxvb3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEw IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRh Y2gyLmMKICsgICAgfQogKyAgcmV0dXJuICgwKTsKICt9Ci1JbmRleDogZ2RiLTcuMC45MC4yMDEw MDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuYworSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjkw LjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5jCTIwMTAtMDMtMDYgMjM6MTk6 MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYnJlYWsuYwkyMDEwLTExLTE2IDA3OjU2OjM0LjAwMDAwMDAwMCArMDEwMAogQEAg LTAsMCArMSwxNDYgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgogKwpAQCAtMjM2LDEwICsyMzYsMTAgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAx MDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7 CiArfQotSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2Jy ZWFrMS5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUv YnJlYWsxLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9icmVhazEuYwkyMDEwLTAzLTA2IDIzOjE5OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTAtMTEt MTYgMDc6NTY6MzQuMDAwMDAwMDAwICswMTAwCiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0 ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCAr Mjg1LDEwIEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBp ZS9icmVhazEuYwogK3ZvaWQgbWFya2VyMyAoYSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBi cmVha3BvaW50IDE4IGhlcmUgKi8KICt2b2lkIG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNl dCBicmVha3BvaW50IDEzIGhlcmUgKi8KICsjZW5kaWYKLUluZGV4OiBnZGItNy4wLjkwLjIwMTAw MzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAt LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxMC0w My0wNiAyMzoxOTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi90ZXN0c3VpdGUvZ2RiLnBpZS9jb3JlbWFrZXIuYwkyMDEwLTExLTE2IDA3OjU2OjM0LjAwMDAw MDAwMCArMDEwMAogQEAgLTAsMCArMSwxNDIgQEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5Mywg MTk5NCwgMTk5NSwgMTk5NiwgMTk5OQogKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgpAQCAtNDMyLDEwICs0MzIsMTAgQEAgSW5kZXg6IGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDog Z2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5k ZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRh Y2guZXhwCTIwMTAtMDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDEwLTExLTE2IDA3 OjU2OjM0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw0MjMgQEAKICsjICAgQ29weXJpZ2h0 IDE5OTcsIDE5OTksIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04 NjAsMTAgKzg2MCwxMCBAQCBJbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYXR0YWNoLmV4cAogK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAK LUluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5l eHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVh ay5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAw MDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBp ZS9icmVhay5leHAJMjAxMC0wMy0wNiAyMzoxOTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAxMC0xMS0x NiAwNzo1NjozNC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsOTY2IEBACiArIyAgIENvcHly aWdodCAxOTg4LCAxOTkwLCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk1LCAxOTk2LCAxOTk3LCAxOTk4 LCAxOTk5LAogKyMgICAyMDAwLCAyMDAyLCAyMDAzLCAyMDA0CkBAIC0xODMxLDEwICsxODMxLDEw IEBAIEluZGV4OiBnZGItNy4wLjkwLjIwMTAwMzA2L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVh ay5leHAKICsgICAgc2VuZF9nZGIgInNldCBhcmdzIG1haW5cbiIKICsgICAgZ2RiX2V4cGVjdCAt cmUgIi4qJGdkYl9wcm9tcHQgJCIge30KICt9Ci1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9n ZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu MC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTAtMDMt MDYgMjM6MTk6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv dGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCTIwMTAtMTEtMTYgMDc6NTY6MzQuMDAwMDAw MDAwICswMTAwCiBAQCAtMCwwICsxLDIzMyBAQAogKyMgQ29weXJpZ2h0IDE5OTIsIDE5OTMsIDE5 OTQsIDE5OTUsIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAKICsjIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgpAQCAtMjA2OSwxMCArMjA2OSwxMCBAQCBJbmRleDogZ2RiLTcuMC45 MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZWZpbGUuZXhwCiArZ2RiX3Rlc3Qg InVwIiAiI1xbMC05XF0qICpcWzAtOXhhLWZIJ1xdKiBpbiAuKiBcXCguKlxcKS4qIiAidXAgaW4g Y29yZWZpbGUuZXhwIChyZWluaXQpIgogKwogK2dkYl90ZXN0ICJjb3JlIiAiTm8gY29yZSBmaWxl IG5vdy4iCi1JbmRleDogZ2RiLTcuMC45MC4yMDEwMDMwNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUv TWFrZWZpbGUuaW4KK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9NYWtlZmlsZS5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjAuOTAuMjAxMDAzMDYvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL01ha2VmaWxlLmluCTIwMTAtMDMtMDYgMjM6MTk6MzEuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZp bGUuaW4JMjAxMC0xMS0xNiAwNzo1NjozNC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMTkg QEAKICtWUEFUSCA9IEBzcmNkaXJACiArc3JjZGlyID0gQHNyY2RpckAKCmRpZmYgLS1naXQgYS9n ZGItNi41LWJ6MTg1MzM3LXJlc29sdmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoIGIv Z2RiLTYuNS1iejE4NTMzNy1yZXNvbHZlLXRscy13aXRob3V0LWRlYnVnaW5mby12Mi5wYXRjaApp bmRleCA5NGMwMDcyLi4zMDA4NTBlIDEwMDY0NAotLS0gYS9nZGItNi41LWJ6MTg1MzM3LXJlc29s dmUtdGxzLXdpdGhvdXQtZGVidWdpbmZvLXYyLnBhdGNoCisrKyBiL2dkYi02LjUtYnoxODUzMzct cmVzb2x2ZS10bHMtd2l0aG91dC1kZWJ1Z2luZm8tdjIucGF0Y2gKQEAgLTMwLDExICszMCwxMSBA QCBnbGliYy1kZWJ1Z2luZm8tMi43LTIueDg2XzY0OiAvdXNyL2xpYi9kZWJ1Zy9saWI2NC9saWJj LnNvLjYuZGVidWc6CiAgIDw4MWEyPiAgICAgRFdfQVRfbmFtZSAgICAgICAgOiAoaW5kaXJlY3Qg c3RyaW5nLCBvZmZzZXQ6IDB4MjgwZSk6IF9fZXJybm9fbG9jYXRpb24KICAgPDgxYTg+ICAgICBE V19BVF9NSVBTX2xpbmthZ2VfbmFtZTogKGluZGlyZWN0IHN0cmluZywgb2Zmc2V0OiAweDI4MDgp OiAqX19HSV9fX2Vycm5vX2xvY2F0aW9uCiAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dk Yi9nZGJ0eXBlcy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlwZXMuYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZ2RidHlwZXMuYwky MDEwLTAxLTI4IDEyOjUyOjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAx MjgvZ2RiL2dkYnR5cGVzLmMJMjAxMC0wMS0yOCAxMjo1Mjo0OC4wMDAwMDAwMDAgKzAxMDAKLUBA IC0zOTc4LDYgKzM5NzgsOSBAQCBnZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJhcmNoICpn ZGJhCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9nZGJ0eXBlcy5jCTIwMTAtMTEt MTYgMDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv Z2RidHlwZXMuYwkyMDEwLTExLTE2IDA4OjAxOjMzLjAwMDAwMDAwMCArMDEwMAorQEAgLTQyNjIs NiArNDI2Miw5IEBAIGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmEKICAg ICAgPSBhcmNoX3R5cGUgKGdkYmFyY2gsIFRZUEVfQ09ERV9JTlRFUk5BTF9GVU5DVElPTiwgMCwK ICAJCSAiPGludGVybmFsIGZ1bmN0aW9uPiIpOwogIApAQCAtNDQsMTEgKzQ0LDExIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5jCiAgICByZXR1cm4gYnVpbHRpbl90 eXBlOwogIH0KICAKLUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9nZGJ0eXBlcy5oCitJ bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlwZXMuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjAuNTAuMjAxMDAxMjgub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEwLTAxLTI4IDEyOjUy OjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2dkYnR5cGVz LmgJMjAxMC0wMS0yOCAxMjo1Mjo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMjQ1LDYgKzEyNDUs OCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dk Yi9nZGJ0eXBlcy5oCTIwMTAtMTEtMTYgMDc6NTM6NTkuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlwZXMuaAkyMDEwLTExLTE2IDA4OjAxOjMzLjAwMDAw MDAwMCArMDEwMAorQEAgLTEyOTQsNiArMTI5NCw4IEBAIHN0cnVjdCBidWlsdGluX3R5cGUKICAK ICAgIC8qIFRoaXMgdHlwZSBpcyB1c2VkIHRvIHJlcHJlc2VudCBhIEdEQiBpbnRlcm5hbCBmdW5j dGlvbi4gICovCiAgICBzdHJ1Y3QgdHlwZSAqaW50ZXJuYWxfZm47CkBAIC01NywxMSArNTcsMTEg QEAgSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL2dkYnR5cGVzLmgKICB9OwogIAogIC8q IFJldHVybiB0aGUgdHlwZSB0YWJsZSBmb3IgdGhlIHNwZWNpZmllZCBhcmNoaXRlY3R1cmUuICAq LwotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3BhcnNlLmMKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi9wYXJzZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEw MDEyOC5vcmlnL2dkYi9wYXJzZS5jCTIwMTAtMDEtMjggMTI6NTI6MTkuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIvcGFyc2UuYwkyMDEwLTAxLTI4IDEyOjUzOjIw LjAwMDAwMDAwMCArMDEwMAotQEAgLTUwOSw3ICs1MDksMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wg KHN0cnVjdCBtaW5pbWFsX3N5bWJvbAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIv cGFyc2UuYwkyMDEwLTExLTE2IDA3OjUzOjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL3BhcnNlLmMJMjAxMC0xMS0xNiAwODowMTozMy4wMDAwMDAwMDAgKzAx MDAKK0BAIC01MzAsNyArNTMwLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWluaW1h bF9zeW1ib2wKICAgICAgY2FzZSBtc3RfdGV4dDoKICAgICAgY2FzZSBtc3RfZmlsZV90ZXh0Ogog ICAgICBjYXNlIG1zdF9zb2xpYl90cmFtcG9saW5lOgpAQCAtNzQsMTIgKzc0LDEyIEBAIEluZGV4 OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi9wYXJzZS5jCiAgICAgICAgYnJlYWs7CiAgCiAgICAg IGNhc2UgbXN0X3RleHRfZ251X2lmdW5jOgotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2Ri L3RhcmdldC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGFyZ2V0LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTI4Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAtMDEt MjggMTI6NTI6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIv dGFyZ2V0LmMJMjAxMC0wMS0yOCAxMjo1Mjo0OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xMDAwLDYg KzEwMDAsMjUgQEAgcG9wX2FsbF90YXJnZXRzIChpbnQgcXVpdHRpbmcpCi0gICBwb3BfYWxsX3Rh cmdldHNfYWJvdmUgKGR1bW15X3N0cmF0dW0sIHF1aXR0aW5nKTsKKy0tLSBnZGItNy4yLjUwLjIw MTAxMTE2Lm9yaWcvZ2RiL3RhcmdldC5jCTIwMTAtMTEtMTYgMDg6MDA6MzcuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGFyZ2V0LmMJMjAxMC0xMS0xNiAwODow MTo1Mi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDY3LDYgKzEwNjcsMjUgQEAgdGFyZ2V0X2lzX3B1 c2hlZCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCisgICByZXR1cm4gMDsKICB9CiAgCiArc3RhdGlj IGludApAQCAtMTA0LDcgKzEwNCw3IEBAIEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90 YXJnZXQuYwogIC8qIFVzaW5nIHRoZSBvYmpmaWxlIHNwZWNpZmllZCBpbiBPQkpGSUxFLCBmaW5k IHRoZSBhZGRyZXNzIGZvciB0aGUKICAgICBjdXJyZW50IHRocmVhZCdzIHRocmVhZC1sb2NhbCBz dG9yYWdlIHdpdGggb2Zmc2V0IE9GRlNFVC4gICovCiAgQ09SRV9BRERSCi1AQCAtMTA5MCw3ICsx MTA5LDI4IEBAIHRhcmdldF90cmFuc2xhdGVfdGxzX2FkZHJlc3MgKHN0cnVjdCBvYmoKK0BAIC0x MTU3LDcgKzExNzYsMjggQEAgdGFyZ2V0X3RyYW5zbGF0ZV90bHNfYWRkcmVzcyAoc3RydWN0IG9i agogICAgLyogSXQgd291bGRuJ3QgYmUgd3JvbmcgaGVyZSB0byB0cnkgYSBnZGJhcmNoIG1ldGhv ZCwgdG9vOyBmaW5kaW5nCiAgICAgICBUTFMgaXMgYW4gQUJJLXNwZWNpZmljIHRoaW5nLiAgQnV0 IHdlIGRvbid0IGRvIHRoYXQgeWV0LiAgKi8KICAgIGVsc2UKQEAgLTEzNCwxMCArMTM0LDEwIEBA IEluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90YXJnZXQuYwogIAogICAgcmV0dXJuIGFk ZHI7CiAgfQotSW5kZXg6IGdkYi03LjAuNTAuMjAxMDAxMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1lcnJuby5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWVycm5vLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4wLjUwLjIwMTAwMTI4L2dk Yi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwkyMDEwLTAxLTI4IDEyOjUyOjQ4LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1lcnJuby5jCTIwMTAtMTEtMTYgMDg6MDE6MzMuMDAwMDAwMDAwICswMTAwCiBA QCAtMCwwICsxLDI4IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdO VSBkZWJ1Z2dlci4KICsKQEAgLTE2NywxMCArMTY3LDEwIEBAIEluZGV4OiBnZGItNy4wLjUwLjIw MTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uYwogKwogKyAgcmV0dXJu IDA7CS8qIGJyZWFrcG9pbnQgKi8KICt9Ci1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDEyOC9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1lcnJuby5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K IC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4wLjUwLjIwMTAwMTI4L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItZXJybm8uZXhw CTIwMTAtMDEtMjggMTI6NTI6NDguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWVycm5vLmV4cAkyMDEwLTExLTE2IDA4 OjAxOjMzLjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw2MCBAQAogKyMgQ29weXJpZ2h0IDIw MDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEvZ2RiLTYu Ni1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5w YXRjaAppbmRleCAzMDgzMmM2Li40NDE2ZTY4IDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQt bG9jYXRlLXJwbS5wYXRjaAorKysgYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApA QCAtMSw3ICsxLDcgQEAKLUluZGV4OiBnZGItNy4yL2dkYi9ldmVudC10b3AuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDEwLTA2LTI2IDA4OjQ0OjQ3LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAw MDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9ldmVudC10b3AuYwky MDEwLTA5LTExIDE4OjAwOjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL2V2ZW50LXRvcC5jCTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBA QCAtMzMsNiArMzMsNyBAQAogICNpbmNsdWRlICJjbGkvY2xpLXNjcmlwdC5oIiAgICAgLyogZm9y IHJlc2V0X2NvbW1hbmRfbmVzdF9kZXB0aCAqLwogICNpbmNsdWRlICJtYWluLmgiCkBAIC0yOCwx MCArMjgsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2V2ZW50LXRvcC5jCiAgICAvKiBFYWNoIGlu dGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVzIG9uIGRpc3BsYXlpbmcgdGhlIGNvbW1hbmQKICAg ICAgIHByb21wdC4gICovCiAgICBpZiAoIWN1cnJlbnRfaW50ZXJwX2Rpc3BsYXlfcHJvbXB0X3Ag KCkpCi1JbmRleDogZ2RiLTcuMi9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvZWxmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9lbGZy ZWFkLmMJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dk Yi9lbGZyZWFkLmMJMjAxMC0xMC0wNiAyMjozOTo1Mi4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEwLTExLTE2IDA4OjA0OjE4LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2VsZnJlYWQuYwkyMDEw LTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAogQEAgLTQyLDYgKzQyLDcgQEAKICAjaW5j bHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJnZGJjbWQuaCIKQEAgLTQ2NCwxMSArNDY0LDEx IEBAIEluZGV4OiBnZGItNy4yL2dkYi9lbGZyZWFkLmMKICB9CiAgCiAgc3RhdGljIGNoYXIgKgot SW5kZXg6IGdkYi03LjIvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvc3ltZmlsZS5o CTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvc3lt ZmlsZS5oCTIwMTAtMTAtMDYgMjI6Mzk6NTIuMDAwMDAwMDAwICswMjAwCi1AQCAtNTc3LDYgKzU3 Nyw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2FkZHJfZ2UKKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3N5bWZpbGUuaAkyMDEwLTExLTE2IDA4OjA0OjE4LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3N5bWZpbGUuaAkyMDEw LTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEwMAorQEAgLTU1Miw2ICs1NTIsOCBAQCBleHRl cm4gc3RydWN0IGJ1aWxkX2lkICpidWlsZF9pZF9hZGRyX2dlCiAgZXh0ZXJuIGNoYXIgKmJ1aWxk X2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkLAogIAkJCQkgICBjaGFy ICoqbGlua19yZXR1cm4sIGludCBhZGRfZGVidWdfc3VmZml4KTsKICBleHRlcm4gdm9pZCBkZWJ1 Z19wcmludF9taXNzaW5nIChjb25zdCBjaGFyICpiaW5hcnksIGNvbnN0IGNoYXIgKmRlYnVnKTsK QEAgLTQ3NywxMSArNDc3LDExIEBAIEluZGV4OiBnZGItNy4yL2dkYi9zeW1maWxlLmgKICAKICAv KiBGcm9tIGR3YXJmMnJlYWQuYyAqLwogIAotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9s aWIvZ2RiLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9saWIv Z2RiLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9n ZGIuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9n ZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTM1OSw3ICsxMzU5LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewor LS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIw MTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAw ICswMTAwCitAQCAtMTM1OCw3ICsxMzU4LDcgQEAgcHJvYyBkZWZhdWx0X2dkYl9zdGFydCB7IH0g ewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKICAJfQogICAg ICB9CkBAIC00OTAsMTAgKzQ5MCwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2xp Yi9nZGIuZXhwCiAgICAgIHNlbmRfZ2RiICJzZXQgYnVpbGQtaWQtdmVyYm9zZSAwXG4iCiAgICAg IGdkYl9leHBlY3QgMTAgewogIAktcmUgIiRnZGJfcHJvbXB0ICQiIHsKLUluZGV4OiBnZGItNy4y L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjIub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDEwLTEwLTA2IDIy OjM5OjMyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWkt c3VwcG9ydC5leHAJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAx MC0xMS0xNiAwODowNDoxOC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAw MDAwMDAwICswMTAwCiBAQCAtMjIxLDcgKzIyMSw3IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3Rh cnQgeyBhcmdzIH0gewogIAkgICAgfQogICAgICAJfQpAQCAtNTAzLDEwICs1MDMsMTAgQEAgSW5k ZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICAgICAgc2VuZF9n ZGIgIjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEw IHsKICAJLXJlICIuKjE5MC1nZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9u ZVxyXG4kbWlfZ2RiX3Byb21wdCQiIHsKLUluZGV4OiBnZGItNy4yL2dkYi90dWkvdHVpLWludGVy cC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEwLTA1LTE4 IDAwOjIxOjQzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3R1aS90dWktaW50ZXJw LmMJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIw MTAxMTE2Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMC0wNS0xOCAwMDoyMTo0My4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90dWkvdHVpLWludGVycC5j CTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBAQCAtMzAsNiArMzAsNyBAQAog ICNpbmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90dWktaW8uaCIKQEAgLTUyNCwx MCArNTI0LDEwIEBAIEluZGV4OiBnZGItNy4yL2dkYi90dWkvdHVpLWludGVycC5jCiAgICAgICAg LyogVGVsbCByZWFkbGluZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBpcyBhbmQgd2hhdCBm dW5jdGlvbgogICAgICAgICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVyIGEgd2hvbGUgbGlu ZSBpcyByZWFkLiBUaGlzIGFsc28KICAgICAgICAgICBkaXNwbGF5cyB0aGUgZmlyc3QgcHJvbXB0 LiAgKi8KLUluZGV4OiBnZGItNy4yL2dkYi9hY2xvY2FsLm00CitJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvYWNsb2NhbC5tNAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIv YWNsb2NhbC5tNAkyMDEwLTA1LTIzIDAyOjU2OjU5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjIvZ2RiL2FjbG9jYWwubTQJMjAxMC0xMC0wNiAyMjozOTozMi4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2FjbG9jYWwubTQJMjAxMC0wNS0yMyAwMjo1 Njo1OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9hY2xvY2Fs Lm00CTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBAQCAtMTksNiArMTksMTYy IEBAIFlvdSBoYXZlIGFub3RoZXIgdmVyc2lvbiBvZiBhdXRvY29uZi4gIEkKICBJZiB5b3UgaGF2 ZSBwcm9ibGVtcywgeW91IG1heSBuZWVkIHRvIHJlZ2VuZXJhdGUgdGhlIGJ1aWxkIHN5c3RlbSBl bnRpcmVseS4KICBUbyBkbyBzbywgdXNlIHRoZSBwcm9jZWR1cmUgZG9jdW1lbnRlZCBieSB0aGUg cGFja2FnZSwgdHlwaWNhbGx5IGBhdXRvcmVjb25mJy5dKV0pCkBAIC02OTEsMTAgKzY5MSwxMCBA QCBJbmRleDogZ2RiLTcuMi9nZGIvYWNsb2NhbC5tNAogICMgQ29weXJpZ2h0IChDKSAyMDAyLCAy MDAzLCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KICAjCiAgIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbgotSW5kZXg6IGdkYi03LjIvZ2RiL2NvbmZpZy5pbgorSW5kZXg6IGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL2NvbmZpZy5pbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9n ZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi9nZGIvY29uZmlnLmluCTIwMTAtMTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCist LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9jb25maWcuaW4JMjAxMC0wOS0wMiAxOTox MjozNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9jb25maWcu aW4JMjAxMC0xMS0xNiAwODoxNDoyNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC00Niw2ICs0Niw5IEBA CiAgLyogRGVmaW5lIHRvIEJGRCdzIGRlZmF1bHQgdGFyZ2V0IHZlY3Rvci4gKi8KICAjdW5kZWYg REVGQVVMVF9CRkRfVkVDCkBAIC03MDUsNyArNzA1LDcgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2Nv bmZpZy5pbgogIC8qIERlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2Fn ZXMgdG8gdGhlIHVzZXIncyBuYXRpdmUKICAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAg I3VuZGVmIEVOQUJMRV9OTFMKLUBAIC0yMzEsNiArMjM0LDkgQEAKK0BAIC0yMzIsNiArMjM1LDkg QEAKICAvKiBEZWZpbmUgaWYgUHl0aG9uIDIuNyBpcyBiZWluZyB1c2VkLiAqLwogICN1bmRlZiBI QVZFX0xJQlBZVEhPTjJfNwogIApAQCAtNzE1LDEwICs3MTUsMTAgQEAgSW5kZXg6IGdkYi03LjIv Z2RiL2NvbmZpZy5pbgogIC8qIERlZmluZSBpZiBsaWJ1bndpbmQgbGlicmFyeSBpcyBiZWluZyB1 c2VkLiAqLwogICN1bmRlZiBIQVZFX0xJQlVOV0lORAogIAotSW5kZXg6IGdkYi03LjIvZ2RiL2Nv bmZpZ3VyZQorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZQogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvY29uZmlndXJlCTIwMTAtMTAtMDYgMjI6Mzk6MzEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmlndXJlCTIwMTAtMTAtMDYgMjI6 Mzk6MzIuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9j b25maWd1cmUJMjAxMC0xMS0wNSAwMjo1MDoxNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi9jb25maWd1cmUJMjAxMC0xMS0xNiAwODoxNTozMy4wMDAwMDAwMDAg KzAxMDAKIEBAIC02NzksNiArNjc5LDkgQEAgUkVQT1JUX0JVR1NfVE8KICBQS0dWRVJTSU9OCiAg VEFSR0VUX09CUwpAQCAtNzI2LDE4ICs3MjYsMTggQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2NvbmZp Z3VyZQogK1JQTV9MSUJTCiArUlBNX0NGTEFHUwogK1BLR19DT05GSUcKLSBweXRob25kaXIKLSBH REJfREFUQURJUl9QQVRICiAgR0RCX0RBVEFESVIKLUBAIC05NDgsNiArOTUxLDcgQEAgd2l0aF9z ZXBhcmF0ZV9kZWJ1Z19kaXIKKyBERUJVR0RJUgorIGFtX19mYXN0ZGVwQ0NfRkFMU0UKK0BAIC05 NDUsNiArOTQ4LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKKyB3aXRoX3NlcGFyYXRl X2RlYnVnX2RpcgogIHdpdGhfZ2RiX2RhdGFkaXIKICB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCi0g d2l0aF9weXRob25kaXIKICt3aXRoX3JwbQogIGVuYWJsZV90YXJnZXRzCiAgZW5hYmxlXzY0X2Jp dF9iZmQKICBlbmFibGVfZ2RiY2xpCi1AQCAtOTg4LDYgKzk5Miw5IEBAIExERkxBR1MKK0BAIC05 ODYsNiArOTkwLDkgQEAgTERGTEFHUwogIExJQlMKICBDUFBGTEFHUwogIENQUApAQCAtNzQ3LDE2 ICs3NDcsMTYgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2NvbmZpZ3VyZQogIFlBQ0MKICBZRkxBR1MK ICBYTUtNRicKLUBAIC0xNjUzLDYgKzE2NjAsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKK0BAIC0x NjQ5LDYgKzE2NTYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFtEQVRBRElSL2dkYl0KLSAgIC0td2l0aC1weXRob25kaXIgICAgICAgIGluc3RhbGwg UHl0aG9uIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICBbREFUQURJUi9nZGIvcHl0aG9uXQorICAgLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgK KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBw YXRoIGZvciBzb3VyY2UgZmlsZXMKICsgIC0td2l0aC1ycG0gICAgICAgICAgICAgIHF1ZXJ5IHJw bSBkYXRhYmFzZSBmb3IgbWlzc2luZyBkZWJ1Z2luZm9zICh5ZXMvbm8sCiArICAgICAgICAgICAg ICAgICAgICAgICAgICBkZWYuIGF1dG89bGlicnBtLnNvKQogICAgLS13aXRoLWxpYnVud2luZCAg ICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAogICAgLS13aXRoLWN1 cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0ZXJt Y2FwCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtMTY4OCw2ICsxNjk3 LDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CitAQCAtMTY4NCw2 ICsxNjkzLDkgQEAgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CiAgICBD UFBGTEFHUyAgICBDL0MrKy9PYmplY3RpdmUgQyBwcmVwcm9jZXNzb3IgZmxhZ3MsIGUuZy4gLUk8 aW5jbHVkZSBkaXI+IGlmCiAgICAgICAgICAgICAgICB5b3UgaGF2ZSBoZWFkZXJzIGluIGEgbm9u c3RhbmRhcmQgZGlyZWN0b3J5IDxpbmNsdWRlIGRpcj4KICAgIENQUCAgICAgICAgIEMgcHJlcHJv Y2Vzc29yCkBAIC03NjYsNyArNzY2LDcgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2NvbmZpZ3VyZQog ICAgWUFDQyAgICAgICAgVGhlIGBZZXQgQW5vdGhlciBDIENvbXBpbGVyJyBpbXBsZW1lbnRhdGlv biB0byB1c2UuIERlZmF1bHRzIHRvCiAgICAgICAgICAgICAgICB0aGUgZmlyc3QgcHJvZ3JhbSBm b3VuZCBvdXQgb2Y6IGBiaXNvbiAteScsIGBieWFjYycsIGB5YWNjJy4KICAgIFlGTEFHUyAgICAg IFRoZSBsaXN0IG9mIGFyZ3VtZW50cyB0aGF0IHdpbGwgYmUgcGFzc2VkIGJ5IGRlZmF1bHQgdG8g JFlBQ0MuCi1AQCAtNzk1MSw2ICs3OTYzLDQ4NSBAQCBfQUNFT0YKK0BAIC03ODgxLDYgKzc4OTMs NDg2IEBAIF9BQ0VPRgogIGZpCiAgCiAgCkBAIC0xMjQ5LDE2ICsxMjQ5LDE3IEBAIEluZGV4OiBn ZGItNy4yL2dkYi9jb25maWd1cmUKICsgICAgZmkKICsgIGZpCiArZmkKKysKICAKICAKLSAKLUlu ZGV4OiBnZGItNy4yL2dkYi9jb25maWd1cmUuYWMKKyBzdWJkaXJzPSIkc3ViZGlycyBkb2MgdGVz dHN1aXRlIgorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2NvbmZpZ3VyZS5hYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMTAtMDYgMjI6 Mzk6MzEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvY29uZmlndXJlLmFjCTIwMTAt MTAtMDYgMjI6Mzk6MzIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTUyLDYgKzE1MiwxOTggQEAgZWxz ZQotIGZpCi0gQUNfU1VCU1QocHl0aG9uZGlyKQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3Jp Zy9nZGIvY29uZmlndXJlLmFjCTIwMTAtMTEtMDUgMDI6NTA6MTguMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29uZmlndXJlLmFjCTIwMTAtMTEtMTYgMDg6MTU6 MTAuMDAwMDAwMDAwICswMTAwCitAQCAtMTA4LDYgKzEwOCwxOTkgQEAgQVNfSEVMUF9TVFJJTkco Wy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcworICAgICAgICAgICAgICAgW1JlbG9jYXRlZCBkaXJl Y3RvcnkgZm9yIHNvdXJjZSBmaWxlcy4gXSkKKyBdKQogIAogKyMgSW50ZWdyYXRpb24gd2l0aCBy cG0gbGlicmFyeSB0byBzdXBwb3J0IG1pc3NpbmcgZGVidWdpbmZvIHN1Z2dlc3Rpb25zLgogKyMg LS13aXRob3V0LXJwbTogRGlzYWJsZSBhbnkgcnBtIHN1cHBvcnQuCkBAIC0xNDUyLDEzICsxNDUz LDE0IEBAIEluZGV4OiBnZGItNy4yL2dkYi9jb25maWd1cmUuYWMKICsgICAgZmkKICsgIGZpCiAr ZmkKLSAKKysgCiAgQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKICAKLUluZGV4OiBn ZGItNy4yL2dkYi9hY2luY2x1ZGUubTQKKyAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBhbHRl cm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9hY2luY2x1ZGUubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL2FjaW5j bHVkZS5tNAkyMDEwLTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIv Z2RiL2FjaW5jbHVkZS5tNAkyMDEwLTEwLTA2IDIyOjM5OjMyLjAwMDAwMDAwMCArMDIwMAorLS0t IGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvYWNpbmNsdWRlLm00CTIwMTAtMDUtMjcgMDU6 NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYWNpbmNs dWRlLm00CTIwMTAtMTEtMTYgMDg6MTQ6MjYuMDAwMDAwMDAwICswMTAwCiBAQCAtMSwzICsxLDUg QEAKICsjIHNlcmlhbCAxCiArCkBAIC0xNDc0LDExICsxNDc2LDExIEBAIEluZGV4OiBnZGItNy4y L2dkYi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMgQUNfUFJPR19DQ19TVERDCiAgIyBAbWFpbmRl eCBQUk9HX0NDX1NUREMKICAjIEBvdmluZGV4IENDCi1JbmRleDogZ2RiLTcuMi9nZGIvY29yZWxv dy5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMC0xMC0wNiAyMjozOTozOS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9jb3JlbG93LmMJMjAxMC0xMC0wNiAyMjozOTo1 Mi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMzEsNyArMzMxLDcgQEAgYnVpbGRfaWRfbG9jYXRlX2V4 ZWMgKGludCBmcm9tX3R0eSkKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2NvcmVs b3cuYwkyMDEwLTExLTE2IDA4OjA0OjE4LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL2NvcmVsb3cuYwkyMDEwLTExLTE2IDA4OjE0OjI2LjAwMDAwMDAwMCArMDEw MAorQEAgLTMxNyw3ICszMTcsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZyb21fdHR5 KQogICAgICAgICAgc3ltZmlsZV9vYmpmaWxlLT5mbGFncyB8PSBPQkpGX0JVSUxEX0lEX0NPUkVf TE9BREVEOwogICAgICB9CiAgICBlbHNlCgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1iejIyOTUxNy1n Y29yZS13aXRob3V0LXRlcm1pbmFsLnBhdGNoIGIvZ2RiLTYuNi1iejIyOTUxNy1nY29yZS13aXRo b3V0LXRlcm1pbmFsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODZiYjlk Li4wMDAwMDAwCi0tLSBhL2dkYi02LjYtYnoyMjk1MTctZ2NvcmUtd2l0aG91dC10ZXJtaW5hbC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0yMDA3LTA0LTIyICBKYW4gS3Jh dG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiX2djb3JlLnNoOiBS ZWRpcmVjdCBHREIgZnJvbSBgPC9kZXYvbnVsbCcuCi0KLTIwMDctMDQtMjIgIEphbiBLcmF0b2No dmlsIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9nY29yZWJnLmV4 cCwgZ2RiLmJhc2UvZ2NvcmViZy5jOiBOZXcgZmlsZXMuCi0KLQotLS0tIGdkYi02LjYtb3JpZy9n ZGIvZ2RiX2djb3JlLnNoCTIwMDUtMTItMTcgMTc6MzM6NTkuMDAwMDAwMDAwIC0wNTAwCi0rKysg Z2RiLTYuNi9nZGIvZ2RiX2djb3JlLnNoCTIwMDctMDQtMjIgMDU6NDI6NTAuMDAwMDAwMDAwIC0w NDAwCi1AQCAtNzEsNyArNzEsOSBAQAotIHF1aXQKLSBFT0YKLSAKLS0JZ2RiIC14ICR0bXBmaWxl IC1iYXRjaAotKwkjIGA8L2Rldi9udWxsJyB0byBhdm9pZCB0b3VjaGluZyBpbnRlcmFjdGl2ZSB0 ZXJtaW5hbCBpZiBpdCBpcwotKwkjIGF2YWlsYWJsZSBidXQgbm90IGFjY2Vzc2libGUgKFNJR1RU SU4gcmlzaykKLSsJZ2RiIC14ICR0bXBmaWxlIC1iYXRjaCA8L2Rldi9udWxsCi0gCi0gCWlmIFsg LXIgJG5hbWUuJHBpZCBdIDsgdGhlbiAKLSAJICAgIHJjPTAKLS0tLSAvZGV2L251bGwJMSBKYW4g MTk3MCAwMDowMDowMCAtMDAwMAotKysrIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9nY29yZWJn LmMJMjUgRmViIDIwMDcgMTI6MjE6MjAgLTAwMDAKLUBAIC0wLDAgKzEsNDMgQEAKLSsjaW5jbHVk ZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5o PgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rCi0raW50IG1h aW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBwaWRfdCBwaWQgPSAwOwotKyAgcGlk X3QgcHBpZDsKLSsgIGNoYXIgYnVmWzI1Nl07Ci0rCi0rICBpZiAoYXJnYyAhPSA0KQotKyAgICB7 Ci0rICAgICAgZnByaW50ZiAoc3RkZXJyLCAiU3ludGF4OiAlcyB7c3RhbmRhcmR8ZGV0YWNoZWR9 IDxnY29yZSBjb21tYW5kPiA8Y29yZSBvdXRwdXQgZmlsZT5cbiIsCi0rCSAgICAgICBhcmd2WzBd KTsKLSsgICAgICBleGl0ICgxKTsKLSsgICAgfQotKwotKyAgcGlkID0gZm9yayAoKTsKLSsKLSsg IHN3aXRjaCAocGlkKQotKyAgICB7Ci0rICAgICAgY2FzZSAwOgotKyAgICAgICAgaWYgKHN0cmNt cCAoYXJndlsxXSwgImRldGFjaGVkIikgPT0gMCkKLSsJICBzZXRwZ3JwICgpOwotKwlwcGlkID0g Z2V0cHBpZCAoKTsKLSsJc3ByaW50ZiAoYnVmLCAic2ggJXMgLW8gJXMgJWQiLCBhcmd2WzJdLCBh cmd2WzNdLCAoaW50KSBwcGlkKTsKLSsJc3lzdGVtIChidWYpOwotKwlraWxsIChwcGlkLCBTSUdU RVJNKTsKLSsJYnJlYWs7Ci0rCi0rICAgICAgY2FzZSAtMToKLSsJcGVycm9yICgiZm9yayBlcnJc biIpOwotKwlleGl0ICgxKTsKLSsJYnJlYWs7Ci0rCi0rICAgICAgZGVmYXVsdDoKLSsJc2xlZXAg KDYwKTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDA7Ci0rfQotLS0tIC9kZXYvbnVsbAkxIEphbiAx OTcwIDAwOjAwOjAwIC0wMDAwCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2djb3JlYmcu ZXhwCTI1IEZlYiAyMDA3IDEyOjIxOjIwIC0wMDAwCi1AQCAtMCwwICsxLDExMyBAQAotKyMgQ29w eXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMgCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMgCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZy ZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRl IDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIFBsZWFzZSBlbWFpbCBh bnkgYnVncywgY29tbWVudHMsIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhpcyBmaWxlIHRvOgotKyMg YnVnLWdkYkBwcmVwLmFpLm1pdC5lZHUKLSsKLSsjIFRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBK YW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4uCi0rIyBUaGlzIGlzIGEg dGVzdCBmb3IgYGdkYl9nY29yZS5zaCcgZnVuY3Rpb25hbGl0eS4KLSsjIEl0IGFsc28gdGVzdHMg YSByZWdyZXNzaW9uIHdpdGggYGdkYl9nY29yZS5zaCcgYmVpbmcgcnVuIHdpdGhvdXQgaXRzCi0r IyBhY2Nlc3NpYmxlIHRlcm1pbmFsLgotKwotK2lmICFbaW5mbyBleGlzdHMgR0NPUkVdIHsKLSsg ICAgc2V0IEdDT1JFICIke3NyY2Rpcn0vLi4vZ2RiX2djb3JlLnNoIgotK30KLSt2ZXJib3NlICJ1 c2luZyBHQ09SRSA9ICRHQ09SRSIgMgotKwotK3NldCB0ZXN0ZmlsZSAiZ2NvcmViZyIKLStzZXQg c3JjZmlsZSAgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICAke29iamRpcn0vJHtzdWJkaXJ9 LyR7dGVzdGZpbGV9Ci0rc2V0IGNvcmVmaWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0udGVzdAotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3Ny Y2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKLSsgICAg IHVudGVzdGVkIGdjb3JlYmcuZXhwCi0rICAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBDbGVhbnVw LgotKwotK3Byb2MgY29yZV9jbGVhbiB7fSB7Ci0rICAgIGdsb2JhbCBjb3JlZmlsZQotKwotKyAg ICBmb3JlYWNoIGZpbGUgW2dsb2IgLW5vY29tcGxhaW4gW2pvaW4gW2xpc3QgJGNvcmVmaWxlICpd ICIiXV0gewotKwl2ZXJib3NlICJEZWxldGUgZmlsZSAkZmlsZSIgMQotKwlyZW1vdGVfZmlsZSB0 YXJnZXQgZGVsZXRlICRmaWxlCi0rICAgIH0KLSt9Ci0rY29yZV9jbGVhbgotK3JlbW90ZV9maWxl IHRhcmdldCBkZWxldGUgIi4vZ2RiIgotKwotKyMgR2VuZXJhdGUgdGhlIGNvcmUgZmlsZS4KLSsK LSsjIFByb3ZpZGUgYC4vZ2RiJyBmb3IgYGdkYl9nY29yZS5zaCcgcnVubmluZyBpdCBhcyBhIGJh cmUgYGdkYicgY29tbWFuZC4KLSsjIFNldHVwIGFsc28gYCRQQVRIJyBhcHByb3ByaWF0ZWx5Lgot KyMgSWYgR0RCIHdhcyBub3QgZm91bmQgbGV0IGBnZGJfZ2NvcmUuc2gnIHRvIGZpbmQgdGhlIHN5 c3RlbSBHREIgYnkgYCRQQVRIJy4KLStpZiB7JEdEQiAhPSAiZ2RiIn0gewotKyAgICBmaWxlIGxp bmsgLi9nZGIgJEdEQgotK30KLStnbG9iYWwgZW52Ci0rc2V0IG9sZHBhdGggJGVudihQQVRIKQot K3NldCBlbnYoUEFUSCkgW2pvaW4gW2xpc3QgLiAkZW52KFBBVEgpXSAiOiJdCi0rdmVyYm9zZSAi UEFUSCA9ICRlbnYoUEFUSCkiIDIKLSsKLSsjIFRlc3QgZmlsZSBib2R5LgotKyMgJGRldGFjaGVk ID09ICJzdGFuZGFyZCIgfHwgJGRldGFjaGVkID09ICJkZXRhY2hlZCIKLSsKLStwcm9jIHRlc3Rf Ym9keSB7IGRldGFjaGVkIH0gewotKyAgICBnbG9iYWwgYmluZmlsZQotKyAgICBnbG9iYWwgR0NP UkUKLSsgICAgZ2xvYmFsIGNvcmVmaWxlCi0rCi0rICAgIHNldCByZXMgW3JlbW90ZV9zcGF3biB0 YXJnZXQgIiRiaW5maWxlICRkZXRhY2hlZCAkR0NPUkUgJGNvcmVmaWxlIl0KLSsgICAgaWYgeyAk cmVzIDwgMCB8fCAkcmVzID09ICIiIH0gewotKwlmYWlsICJTcGF3bmluZyAkZGV0YWNoZWQgZ2Nv cmUiCi0rCXJldHVybiAxCi0rICAgIH0KLSsgICAgcGFzcyAiU3Bhd25pbmcgJGRldGFjaGVkIGdj b3JlIgotKyAgICByZW1vdGVfZXhwZWN0IHRhcmdldCAyMCB7Ci0rCXRpbWVvdXQgewotKwkgICAg ZmFpbCAiU3Bhd25lZCAkZGV0YWNoZWQgZ2NvcmUgZmluaXNoZWQiCi0rCSAgICByZW1vdGVfZXhl YyB0YXJnZXQgImtpbGwgLTkgLVtleHBfcGlkIC1pICRyZXNdIgotKwkgICAgcmV0dXJuIDEKLSsJ fQotKwllb2YgewotKwkgICAgcGFzcyAiU3Bhd25lZCAkZGV0YWNoZWQgZ2NvcmUgZmluaXNoZWQi Ci0rCSAgICByZW1vdGVfd2FpdCB0YXJnZXQgMjAKLSsJfQotKyAgICB9Ci0rCi0rICAgIGlmIHsx ID09IFtsbGVuZ3RoIFtnbG9iIC1ub2NvbXBsYWluIFtqb2luIFtsaXN0ICRjb3JlZmlsZSAqXSAi Il1dXX0gewotKwlwYXNzICJDb3JlIGZpbGUgZ2VuZXJhdGVkIGJ5ICRkZXRhY2hlZCBnY29yZSIK LSsgICAgfSBlbHNlIHsKLSsJZmFpbCAiQ29yZSBmaWxlIGdlbmVyYXRlZCBieSAkZGV0YWNoZWQg Z2NvcmUiCi0rICAgIH0KLSsgICAgY29yZV9jbGVhbgotK30KLSsKLSsjIEZpcnN0IGEgZ2VuZXJh bCBgZ2RiX2djb3JlLnNoJyBzcGF3biB3aXRoIGl0cyBjb250cm9sbGluZyB0ZXJtaW5hbCBhdmFp bGFibGUuCi0rCi0rdGVzdF9ib2R5IHN0YW5kYXJkCi0rCi0rIyBBbmQgbm93IGBnZGJfZ2NvcmUu c2gnIHNwYXduIHdpdGhvdXQgaXRzIGNvbnRyb2xsaW5nIHRlcm1pbmFsIGF2YWlsYWJsZS4KLSsj IEl0IGlzIHNwYXduZWQgdGhyb3VnaCBgZ2NvcmViZy5jJyB1c2luZyBzZXRwZ3JwICgpLgotKwot K3Rlc3RfYm9keSBkZXRhY2hlZAotKwotKwotKyMgQ2xlYW51cC4KLSsKLStzZXQgZW52KFBBVEgp ICRvbGRwYXRoCi0rcmVtb3RlX2ZpbGUgdGFyZ2V0IGRlbGV0ZSAiLi9nZGIiCgpkaWZmIC0tZ2l0 IGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaCBi L2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKaW5k ZXggMGViOGE0NC4uZjE5NzEyZSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2lu Zy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaAorKysgYi9nZGItNi42LXNjaGVkdWxlcl9sb2Nr aW5nLXN0ZXAtc3ctd2F0Y2hwb2ludHMyLnBhdGNoCkBAIC0yMSwxMCArMjEsMTAgQEAKIAogCVBv cnQgdG8gR0RCLTYuOHByZS4KIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2luZmVy aW9yLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZlcmlvci5oCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9pbmZlcmlvci5oCTIwMTAtMDct MTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv aW5mZXJpb3IuaAkyMDEwLTA3LTEyIDEwOjA0OjI1LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDEwLTA2LTI0IDE3OjE3OjMwLjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZmVyaW9yLmgJMjAx MC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xOTgsNyArMTk4LDE1IEBAIGV4 dGVybiB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZvaWQpOwogIC8qIFRoZSBgcmVzdW1lJyByb3V0 aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBzcGVjaWFsIGNpcmN1bXN0YW5jZXMuCiAgICAg Tm9ybWFsbHksIHVzZSBgcHJvY2VlZCcsIHdoaWNoIGhhbmRsZXMgYSBsb3Qgb2YgYm9va2tlZXBp bmcuICAqLwpAQCAtNDIsMTEgKzQyLDExIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9pbmZlcmlvci5oCiAgCiAgLyogRnJvbSBtaXNjIGZpbGVzICovCiAgCi1JbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9pbmZydW4uYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIv aW5mcnVuLmMJMjAxMC0wNy0xMiAxMDowMDo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwkyMDEwLTA3LTEyIDEwOjA1OjI2LjAwMDAwMDAwMCAr MDIwMAotQEAgLTc2LDcgKzc2LDcgQEAgc3RhdGljIGludCBmb2xsb3dfZm9yayAodm9pZCk7Cist LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9pbmZydW4uYwkyMDEwLTExLTE2IDA3OjUz OjU5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZnJ1bi5j CTIwMTAtMTEtMTYgMDc6NTU6MjMuMDAwMDAwMDAwICswMTAwCitAQCAtNzQsNyArNzQsNyBAQCBz dGF0aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKICBzdGF0aWMgdm9pZCBzZXRfc2NoZWRsb2Nr X2Z1bmMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKICAJCQkJc3RydWN0IGNtZF9saXN0X2Vs ZW1lbnQgKmMpOwogIApAQCAtNTUsNyArNTUsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvaW5mcnVuLmMKICAKICBzdGF0aWMgaW50IGN1cnJlbnRseV9zdGVwcGluZ19vcl9uZXh0 aW5nX2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAogIAkJCQkJCSAgIHZvaWQgKmRh dGEpOwotQEAgLTE1NDksNyArMTU0OSw3IEBAIG1heWJlX3NvZnR3YXJlX3NpbmdsZXN0ZXAgKHN0 cnVjdCBnZGJhcmMKK0BAIC0xNTU3LDcgKzE1NTcsNyBAQCBtYXliZV9zb2Z0d2FyZV9zaW5nbGVz dGVwIChzdHJ1Y3QgZ2RiYXJjCiAgICAgU1RFUCBub256ZXJvIGlmIHdlIHNob3VsZCBzdGVwICh6 ZXJvIHRvIGNvbnRpbnVlIGluc3RlYWQpLgogICAgIFNJRyBpcyB0aGUgc2lnbmFsIHRvIGdpdmUg dGhlIGluZmVyaW9yICh6ZXJvIGZvciBub25lKS4gICovCiAgdm9pZApAQCAtNjQsOCArNjQsOCBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKICB7CiAgICBpbnQgc2hv dWxkX3Jlc3VtZSA9IDE7CiAgICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NsZWFudXBzID0gbWFrZV9j bGVhbnVwIChyZXN1bWVfY2xlYW51cHMsIDApOwotQEAgLTE1NjIsMTAgKzE1NjIsMTIgQEAgcmVz dW1lIChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZwotICAgUVVJVDsKK0BAIC0xNTg5 LDEwICsxNTg5LDEyIEBAIHJlc3VtZSAoaW50IHN0ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcK KyAgICAgfQogIAogICAgaWYgKGRlYnVnX2luZnJ1bikKIC0gICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLApAQCAtODEsNyArODEsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvaW5mcnVuLmMKICAKICAgIC8qIE5vcm1hbGx5LCBieSB0aGUgdGltZSB3ZSByZWFjaCBg cmVzdW1lJywgdGhlIGJyZWFrcG9pbnRzIGFyZSBlaXRoZXIKICAgICAgIHJlbW92ZWQgb3IgaW5z ZXJ0ZWQsIGFzIGFwcHJvcHJpYXRlLiAgVGhlIGV4Y2VwdGlvbiBpcyBpZiB3ZSdyZSBzaXR0aW5n Ci1AQCAtMTY3OCw5ICsxNjgwLDEwIEBAIGEgY29tbWFuZCBsaWtlIGByZXR1cm4nIG9yIGBqdW1w JyB0byBjb24KK0BAIC0xNzEwLDkgKzE3MTIsMTAgQEAgYSBjb21tYW5kIGxpa2UgYHJldHVybicg b3IgYGp1bXAnIHRvIGNvbgogIAkgICAgIGluZGl2aWR1YWxseS4gICovCiAgCSAgcmVzdW1lX3B0 aWQgPSBpbmZlcmlvcl9wdGlkOwogIAl9CkBAIC05NCw3ICs5NCw3IEBAIEluZGV4OiBnZGItNy4x LjkwLjIwMTAwNzExL2dkYi9pbmZydW4uYwogIAl7CiAgCSAgLyogVXNlci1zZXR0YWJsZSAnc2No ZWR1bGVyJyBtb2RlIHJlcXVpcmVzIHNvbG8gdGhyZWFkIHJlc3VtZS4gKi8KICAJICByZXN1bWVf cHRpZCA9IGluZmVyaW9yX3B0aWQ7Ci1AQCAtMTg4OSw3ICsxODkyLDcgQEAgcHJvY2VlZCAoQ09S RV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTE5MjEsNyArMTkyNCw3IEBAIHByb2Nl ZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAgIHN0cnVjdCB0aHJlYWRfaW5m byAqdHA7CiAgICBDT1JFX0FERFIgcGM7CiAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNl OwpAQCAtMTAzLDcgKzEwMyw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZy dW4uYwogIAogICAgLyogSWYgd2UncmUgc3RvcHBlZCBhdCBhIGZvcmsvdmZvcmssIGZvbGxvdyB0 aGUgYnJhbmNoIHNldCBieSB0aGUKICAgICAgICJzZXQgZm9sbG93LWZvcmstbW9kZSIgY29tbWFu ZDsgb3RoZXJ3aXNlLCB3ZSdsbCBqdXN0IHByb2NlZWQKLUBAIC0xOTI0LDEzICsxOTI3LDEzIEBA IHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0xOTU2LDEzICsx OTU5LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAJICAg YWN0dWFsbHkgYmUgZXhlY3V0aW5nIHRoZSBicmVha3BvaW50IGluc24gYW55d2F5LgogIAkgICBX ZSdsbCBiZSAodW4tKWV4ZWN1dGluZyB0aGUgcHJldmlvdXMgaW5zdHJ1Y3Rpb24uICAqLwogIApA QCAtMTE5LDcgKzExOSw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4u YwogICAgICB9CiAgICBlbHNlCiAgICAgIHsKLUBAIC0xOTcxLDEzICsxOTc0LDEzIEBAIHByb2Nl ZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKK0BAIC0yMDAzLDEzICsyMDA2LDEz IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRhcmdldF9zaWcKICAJIGlzIHJlcXVp cmVkIGl0IHJldHVybnMgVFJVRSBhbmQgc2V0cyB0aGUgY3VycmVudCB0aHJlYWQgdG8KICAJIHRo ZSBvbGQgdGhyZWFkLiAqLwogICAgICAgIGlmIChwcmVwYXJlX3RvX3Byb2NlZWQgKHN0ZXApKQpA QCAtMTM1LDcgKzEzNSw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9pbmZydW4u YwogICAgICB7CiAgICAgICAgdHAtPnRyYXBfZXhwZWN0ZWQgPSAxOwogICAgICAgIC8qIElmIGRp c3BsYWNlZCBzdGVwcGluZyBpcyBlbmFibGVkLCB3ZSBjYW4gc3RlcCBvdmVyIHRoZQotQEAgLTIw NjQsOCArMjA2NywxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2ln CitAQCAtMjA5Niw4ICsyMDk5LDEzIEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBlbnVtIHRh cmdldF9zaWcKICAgIC8qIFJlc2V0IHRvIG5vcm1hbCBzdGF0ZS4gICovCiAgICBpbml0X2luZndh aXRfc3RhdGUgKCk7CiAgCkBAIC0xNTAsNyArMTUwLDcgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAx MDA3MTEvZ2RiL2luZnJ1bi5jCiAgCiAgICAvKiBXYWl0IGZvciBpdCB0byBzdG9wIChpZiBub3Qg c3RhbmRhbG9uZSkKICAgICAgIGFuZCBpbiBhbnkgY2FzZSBkZWNvZGUgd2h5IGl0IHN0b3BwZWQs IGFuZCBhY3QgYWNjb3JkaW5nbHkuICAqLwotQEAgLTQ5MDMsMTMgKzQ5MTEsMTggQEAgaW5mcnVu OiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAorQEAgLTQ4NTksMTMgKzQ4NjcsMTgg QEAgaW5mcnVuOiBub3Qgc3dpdGNoaW5nIGJhY2sgdG8gc3RlcHBlZCB0aAogIAogIC8qIElzIHRo cmVhZCBUUCBpbiB0aGUgbWlkZGxlIG9mIHNpbmdsZS1zdGVwcGluZz8gICovCiAgCkBAIC0xNzQs MTEgKzE3NCwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvaW5mcnVuLmMKICB9 CiAgCiAgLyogUmV0dXJucyB0cnVlIGlmIGFueSB0aHJlYWQgKmJ1dCogdGhlIG9uZSBwYXNzZWQg aW4gImRhdGEiIGlzIGluIHRoZQotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2xpbnV4 LW5hdC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAt MDctMTIgMTA6MDA6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvbGludXgtbmF0LmMJMjAxMC0wNy0xMiAxMDowNDoyNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0y ODI3LDcgKzI4MjcsMTAgQEAgY291bnRfZXZlbnRzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8g KgorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0xMS0x NiAwNzo1Mzo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9s aW51eC1uYXQuYwkyMDEwLTExLTE2IDA3OjU0OjM2LjAwMDAwMDAwMCArMDEwMAorQEAgLTI4ODMs NyArMjg4MywxMCBAQCBjb3VudF9ldmVudHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqCiAg c3RhdGljIGludAogIHNlbGVjdF9zaW5nbGVzdGVwX2x3cF9jYWxsYmFjayAoc3RydWN0IGx3cF9p bmZvICpscCwgdm9pZCAqZGF0YSkKICB7CkBAIC0xOTAsMTAgKzE5MCwxMCBAQCBJbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvbGludXgtbmF0LmMKICAgICAgcmV0dXJuIDE7CiAgICBlbHNl CiAgICAgIHJldHVybiAwOwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2xpbnV4LW5h dC5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDYt MTEgMTQ6MTA6MTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv bGludXgtbmF0LmgJMjAxMC0wNy0xMiAxMDowNDoyNS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDctMjcgMjI6NTE6Mzcu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgJ MjAxMC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKIEBAIC01NSw4ICs1NSw4IEBAIHN0 cnVjdCBsd3BfaW5mbwogICAgLyogSWYgbm9uLXplcm8sIGEgcGVuZGluZyB3YWl0IHN0YXR1cy4g ICovCiAgICBpbnQgc3RhdHVzOwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtc3RlcC10aHJlYWQtZXhp dC5wYXRjaCBiL2dkYi02LjYtc3RlcC10aHJlYWQtZXhpdC5wYXRjaAppbmRleCBjZTgwMjMyLi4y MmFmYmVhIDEwMDY0NAotLS0gYS9nZGItNi42LXN0ZXAtdGhyZWFkLWV4aXQucGF0Y2gKKysrIGIv Z2RiLTYuNi1zdGVwLXRocmVhZC1leGl0LnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5kZXg6IGdk Yi02LjguNTAuMjAwOTA4MTEvZ2RiL2xpbnV4LW5hdC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvbGludXgtbmF0LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNi44LjUwLjIwMDkwODEx Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMDktMDgtMTIgMDc6MjE6MjAuMDAwMDAwMDAwICswMjAw Ci0rKysgZ2RiLTYuOC41MC4yMDA5MDgxMS9nZGIvbGludXgtbmF0LmMJMjAwOS0wOC0xMiAwODox MToyNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNjU2LDE2ICsxNjU2LDE4IEBAIHJlc3VtZV9zZXRf Y2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9y aWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDc6NTg6MTUuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMJMjAxMC0xMS0xNiAwNzo1OTow Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xODYzLDE2ICsxODYzLDE4IEBAIHJlc3VtZV9zZXRfY2Fs bGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAKICAKICBzdGF0aWMgdm9pZAogIGxpbnV4X25hdF9y ZXN1bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsCkBAIC0yMSw5ICsyMSw5IEBAIEluZGV4OiBn ZGItNi44LjUwLjIwMDkwODExL2dkYi9saW51eC1uYXQuYwogKwkJCShzdGVwID09IFJFU1VNRV9T VEVQX05FRURFRAogKwkJCSA/ICJuZWVkZWQiIDogKHN0ZXAgPyAic3RlcCIgOiAicmVzdW1lIikp LAogIAkJCXRhcmdldF9waWRfdG9fc3RyIChwdGlkKSwKLSAJCQlzaWdubyA/IHN0cnNpZ25hbCAo c2lnbm8pIDogIjAiLAotIAkJCXRhcmdldF9waWRfdG9fc3RyIChpbmZlcmlvcl9wdGlkKSk7Ci1A QCAtMjYyNSwxMCArMjYyNywzNCBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQs IGludCBzCisgCQkJKHNpZ25vICE9IFRBUkdFVF9TSUdOQUxfMAorIAkJCSA/IHN0cnNpZ25hbCAo dGFyZ2V0X3NpZ25hbF90b19ob3N0IChzaWdubykpIDogIjAiKSwKK0BAIC0zMTcxLDEwICszMTcz LDM0IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50IHMKICAKICAgICAg ICBpZiAobnVtX2x3cHMgKEdFVF9QSUQgKGxwLT5wdGlkKSkgPiAxKQogICAgICAgICB7CgpkaWZm IC0tZ2l0IGEvZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJmYWNlX3R5cGUtZml4LnBhdGNo IGIvZ2RiLTYuNy1iejQyNjYwMC1EV19UQUdfaW50ZXJmYWNlX3R5cGUtZml4LnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTk0ODZjLi4wMDAwMDAwCi0tLSBhL2dkYi02Ljct Yno0MjY2MDAtRFdfVEFHX2ludGVyZmFjZV90eXBlLWZpeC5wYXRjaAorKysgL2Rldi9udWxsCkBA IC0xLDQxICswLDAgQEAKLU9yaWdpbmFsIHBhdGNoIHdhczoKLWh0dHA6Ly9zb3VyY2V3YXJlLm9y Zy9tbC9nZGItcGF0Y2hlcy8yMDA3LTEyL21zZzAwMzk3Lmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJl Lm9yZy9tbC9nZGItY3ZzLzIwMDctMTIvbXNnMDAxMjMuaHRtbAotCi1leHRlbmRlZCBmb3IgdGhl IFJIRUwgc2FmZXR5OgotCi0yMDA3LTEyLTI4ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQkqIGR3YXJmMnJlYWQuYyAoZml4dXBfcGFydGlhbF9kaWUpOiBQ cm92aWRlIGZ1bGwKLQlgRFdfVEFHX2NsYXNzX3R5cGUnLXR5cGUgYmFja2luZyBmb3IgYERXX1RB R19pbnRlcmZhY2VfdHlwZScsIGV2ZW4gZm9yCi0JbmFtZXNwYWNlcyB3aGljaCBzaG91bGQgbm90 IGFwcGx5IGZvciBKYXZhIGBEV19UQUdfaW50ZXJmYWNlX3R5cGUnLgotCi0yMDA4LTAyLTI0ICBK YW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQb3J0IHRvIEdE Qi02LjhwcmUuCi0KLUluZGV4OiAuL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLVJDUyBm aWxlOiAvY3ZzL3NyYy9zcmMvZ2RiL2R3YXJmMnJlYWQuYyx2Ci1yZXRyaWV2aW5nIHJldmlzaW9u IDEuMjQ1Ci1kaWZmIC11IC1wIC1yMS4yNDUgZHdhcmYycmVhZC5jCi0tLS0gLi9nZGIvZHdhcmYy cmVhZC5jCTI2IERlYyAyMDA3IDEyOjM2OjE4IC0wMDAwCTEuMjQ1Ci0rKysgLi9nZGIvZHdhcmYy cmVhZC5jCTI3IERlYyAyMDA3IDIzOjI1OjQ5IC0wMDAwCi1AQCAtNTg4Nyw3ICs1ODg3LDggQEAg Zml4dXBfcGFydGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbgotIAotICAgLyogU2V0IGRl ZmF1bHQgbmFtZXMgZm9yIHNvbWUgdW5uYW1lZCBESUVzLiAgKi8KLSAgIGlmIChwYXJ0X2RpZS0+ bmFtZSA9PSBOVUxMICYmIChwYXJ0X2RpZS0+dGFnID09IERXX1RBR19zdHJ1Y3R1cmVfdHlwZQot LQkJCQkgfHwgcGFydF9kaWUtPnRhZyA9PSBEV19UQUdfY2xhc3NfdHlwZSkpCi0rCQkJCSB8fCBw YXJ0X2RpZS0+dGFnID09IERXX1RBR19jbGFzc190eXBlCi0rCQkJCSB8fCBwYXJ0X2RpZS0+dGFn ID09IERXX1RBR19pbnRlcmZhY2VfdHlwZSkpCi0gICAgIHBhcnRfZGllLT5uYW1lID0gIihhbm9u eW1vdXMgY2xhc3MpIjsKLSAKLSAgIGlmIChwYXJ0X2RpZS0+bmFtZSA9PSBOVUxMICYmIHBhcnRf ZGllLT50YWcgPT0gRFdfVEFHX25hbWVzcGFjZSkKLUBAIC01ODk1LDYgKzU4OTYsNyBAQCBmaXh1 cF9wYXJ0aWFsX2RpZSAoc3RydWN0IHBhcnRpYWxfZGllX2luCi0gCi0gICBpZiAocGFydF9kaWUt PnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUKLSAgICAgICB8fCBwYXJ0X2RpZS0+dGFnID09 IERXX1RBR19jbGFzc190eXBlCi0rICAgICAgfHwgcGFydF9kaWUtPnRhZyA9PSBEV19UQUdfaW50 ZXJmYWNlX3R5cGUKLSAgICAgICB8fCBwYXJ0X2RpZS0+dGFnID09IERXX1RBR191bmlvbl90eXBl KQotICAgICBndWVzc19zdHJ1Y3R1cmVfbmFtZSAocGFydF9kaWUsIGN1KTsKLSB9CgpkaWZmIC0t Z2l0IGEvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaCBiL2dkYi02LjgtZm9ydHJh bi10YWctY29uc3RhbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyODM5 ODQuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuOC1mb3J0cmFuLXRhZy1jb25zdGFudC5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcv Z2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEyIDIzOjA3OjM1LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAy LjAwMDAwMDAwMCArMDIwMAotQEAgLTIyNTEsNiArMjI1MSw3IEBAIHNjYW5fcGFydGlhbF9zeW1i b2xzIChzdHJ1Y3QgcGFydGlhbF9kaWUKLSAJICAgICAgYWRkX3BhcnRpYWxfc3VicHJvZ3JhbSAo cGRpLCBsb3dwYywgaGlnaHBjLCBuZWVkX3BjLCBjdSk7Ci0gCSAgICAgIGJyZWFrOwotIAkgICAg Y2FzZSBEV19UQUdfdmFyaWFibGU6Ci0rCSAgICBjYXNlIERXX1RBR19jb25zdGFudDoKLSAJICAg IGNhc2UgRFdfVEFHX3R5cGVkZWY6Ci0gCSAgICBjYXNlIERXX1RBR191bmlvbl90eXBlOgotIAkg ICAgICBpZiAoIXBkaS0+aXNfZGVjbGFyYXRpb24pCi1AQCAtMjQ1Miw2ICsyNDUzLDcgQEAgYWRk X3BhcnRpYWxfc3ltYm9sIChzdHJ1Y3QgcGFydGlhbF9kaWVfaQotIAl9Ci0gICAgICAgYnJlYWs7 Ci0gICAgIGNhc2UgRFdfVEFHX3ZhcmlhYmxlOgotKyAgICBjYXNlIERXX1RBR19jb25zdGFudDoK LSAgICAgICBpZiAocGRpLT5pc19leHRlcm5hbCkKLSAJewotIAkgIC8qIEdsb2JhbCBWYXJpYWJs ZS4KLUBAIC0zMjg5LDYgKzMyOTEsNyBAQCBkaWVfbmVlZHNfbmFtZXNwYWNlIChzdHJ1Y3QgZGll X2luZm8gKmRpCi0gICAgICAgcmV0dXJuIDE7Ci0gCi0gICAgIGNhc2UgRFdfVEFHX3ZhcmlhYmxl OgotKyAgICBjYXNlIERXX1RBR19jb25zdGFudDoKLSAgICAgICAvKiBXZSBvbmx5IG5lZWQgdG8g cHJlZml4ICJnbG9iYWxseSIgdmlzaWJsZSB2YXJpYWJsZXMuICBUaGVzZSBpbmNsdWRlCi0gCSBh bnkgdmFyaWFibGUgbWFya2VkIHdpdGggRFdfQVRfZXh0ZXJuYWwgb3IgYW55IHZhcmlhYmxlIHRo YXQKLSAJIGxpdmVzIGluIGEgbmFtZXNwYWNlLiAgW1ZhcmlhYmxlcyBpbiBhbm9ueW1vdXMgbmFt ZXNwYWNlcwotQEAgLTQ2MzgsNyArNDY0MSw4IEBAIGR3YXJmMl9hZGRfZmllbGQgKHN0cnVjdCBm aWVsZF9pbmZvICpmaXAKLSAJICBmaXAtPm5vbl9wdWJsaWNfZmllbGRzID0gMTsKLSAJfQotICAg ICB9Ci0tICBlbHNlIGlmIChkaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVyIHx8IGRpZS0+dGFnID09 IERXX1RBR192YXJpYWJsZSkKLSsgIGVsc2UgaWYgKGRpZS0+dGFnID09IERXX1RBR19tZW1iZXIg fHwgZGllLT50YWcgPT0gRFdfVEFHX3ZhcmlhYmxlCi0rCSAgIHx8IGRpZS0+dGFnID09IERXX1RB R19jb25zdGFudCkKLSAgICAgewotICAgICAgIC8qIEMrKyBzdGF0aWMgbWVtYmVyLiAgKi8KLSAK LUBAIC01MjUwLDcgKzUyNTQsOCBAQCByZWFkX3N0cnVjdHVyZV90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpCi0gICAgICAgd2hpbGUgKGNoaWxkX2RpZSAmJiBjaGlsZF9kaWUtPnRhZykKLSAJewot IAkgIGlmIChjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfbWVtYmVyCi0tCSAgICAgIHx8IGNoaWxk X2RpZS0+dGFnID09IERXX1RBR192YXJpYWJsZSkKLSsJICAgICAgfHwgY2hpbGRfZGllLT50YWcg PT0gRFdfVEFHX3ZhcmlhYmxlCi0rCSAgICAgIHx8IGNoaWxkX2RpZS0+dGFnID09IERXX1RBR19j b25zdGFudCkKLSAJICAgIHsKLSAJICAgICAgLyogTk9URTogY2FybHRvbi8yMDAyLTExLTA1OiBB IEMrKyBzdGF0aWMgZGF0YSBtZW1iZXIKLSAJCSBzaG91bGQgYmUgYSBEV19UQUdfbWVtYmVyIHRo YXQgaXMgYSBkZWNsYXJhdGlvbiwgYnV0Ci1AQCAtNTM5Niw2ICs1NDAxLDcgQEAgcHJvY2Vzc19z dHJ1Y3R1cmVfc2NvcGUgKHN0cnVjdCBkaWVfaW5mbwotICAgICB7Ci0gICAgICAgaWYgKGNoaWxk X2RpZS0+dGFnID09IERXX1RBR19tZW1iZXIKLSAJICB8fCBjaGlsZF9kaWUtPnRhZyA9PSBEV19U QUdfdmFyaWFibGUKLSsJICB8fCBjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfY29uc3RhbnQKLSAJ ICB8fCBjaGlsZF9kaWUtPnRhZyA9PSBEV19UQUdfaW5oZXJpdGFuY2UpCi0gCXsKLSAJICAvKiBE byBub3RoaW5nLiAgKi8KLUBAIC03MTA5LDYgKzcxMTUsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAo YmZkICphYmZkLCBnZGJfYnl0ZSAqCi0gCSAgJiYgYWJicmV2LT50YWcgIT0gRFdfVEFHX3N1YnBy b2dyYW0KLSAJICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbGV4aWNhbF9ibG9jawotIAkgICYm IGFiYnJldi0+dGFnICE9IERXX1RBR192YXJpYWJsZQotKwkgICYmIGFiYnJldi0+dGFnICE9IERX X1RBR19jb25zdGFudAotIAkgICYmIGFiYnJldi0+dGFnICE9IERXX1RBR19uYW1lc3BhY2UKLSAJ ICAmJiBhYmJyZXYtPnRhZyAhPSBEV19UQUdfbW9kdWxlCi0gCSAgJiYgYWJicmV2LT50YWcgIT0g RFdfVEFHX21lbWJlcikKLUBAIC03MjE3LDYgKzcyMjQsNyBAQCBsb2FkX3BhcnRpYWxfZGllcyAo YmZkICphYmZkLCBnZGJfYnl0ZSAqCi0gICAgICAgaWYgKGxvYWRfYWxsCi0gCSAgfHwgYWJicmV2 LT50YWcgPT0gRFdfVEFHX3N1YnByb2dyYW0KLSAJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdf dmFyaWFibGUKLSsJICB8fCBhYmJyZXYtPnRhZyA9PSBEV19UQUdfY29uc3RhbnQKLSAJICB8fCBh YmJyZXYtPnRhZyA9PSBEV19UQUdfbmFtZXNwYWNlCi0gCSAgfHwgcGFydF9kaWUtPmlzX2RlY2xh cmF0aW9uKQotIAl7Ci1AQCAtOTA1OSw2ICs5MDY3LDExIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QKLSAJICAvKiBEbyBub3QgYWRkIHRoZSBzeW1ib2wgdG8gYW55 IGxpc3RzLiAgSXQgd2lsbCBiZSBmb3VuZCB2aWEKLSAJICAgICBCTE9DS19GVU5DVElPTiBmcm9t IHRoZSBibG9ja3ZlY3Rvci4gICovCi0gCSAgYnJlYWs7Ci0rCWNhc2UgRFdfVEFHX2NvbnN0YW50 OgotKwkgIFNZTUJPTF9UWVBFIChzeW0pID0gbWFrZV9jdl90eXBlICgxLAotKwkJCQkJICAgIFRZ UEVfVk9MQVRJTEUgKFNZTUJPTF9UWVBFIChzeW0pKSwKLSsJCQkJCSAgICBTWU1CT0xfVFlQRSAo c3ltKSwgTlVMTCk7Ci0rCSAgLyogUEFTU1RIUlUgKi8KLSAJY2FzZSBEV19UQUdfdmFyaWFibGU6 Ci0gCWNhc2UgRFdfVEFHX21lbWJlcjoKLSAJICAvKiBDb21waWxhdGlvbiB3aXRoIG1pbmltYWwg ZGVidWcgaW5mbyBtYXkgcmVzdWx0IGluIHZhcmlhYmxlcwoKZGlmZiAtLWdpdCBhL2dkYi1hcmNo ZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUtYWRkb25z LWtlZXAtZGlzYWJsZWQucGF0Y2gKaW5kZXggZTgxYThkZC4uNzQxZjY4NCAxMDA2NDQKLS0tIGEv Z2RiLWFyY2hlci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKKysrIGIvZ2RiLWFyY2hl ci1waWUtYWRkb25zLWtlZXAtZGlzYWJsZWQucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEw MDcxMS5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9icmVha3BvaW50LmMJMjAxMC0wNy0x MyAwMDozODowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMDE1OSw2ICsxMDE1OSw1MCBAQCB1cGRh dGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCistLS0gZ2RiLTcuMi41MC4yMDEw MTExNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0xMS0xNiAwNzo1Mzo1OC4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9icmVha3BvaW50LmMJMjAxMC0xMS0x NiAwODoyODo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMDI0OSw2ICsxMDI0OSw1MCBAQCB1cGRh dGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVhCiAgICB1cGRhdGVfZ2xvYmFsX2xv Y2F0aW9uX2xpc3QgKDEpOwogIH0KICAKQEAgLTUzLDIzICs1MywyMyBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvYnJlYWtwb2ludC5jCiAgLyogUmVzZXQgYSBicmVha3BvaW50IGdp dmVuIGl0J3Mgc3RydWN0IGJyZWFrcG9pbnQgKiBCSU5ULgogICAgIFRoZSB2YWx1ZSB3ZSByZXR1 cm4gZW5kcyB1cCBiZWluZyB0aGUgcmV0dXJuIHZhbHVlIGZyb20gY2F0Y2hfZXJyb3JzLgogICAg IFVudXNlZCBpbiB0aGlzIGNhc2UuICAqLwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L2JyZWFrcG9pbnQuaAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2JyZWFrcG9pbnQu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvYnJlYWtwb2lu dC5oCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvYnJlYWtwb2ludC5oCTIwMTAtMDctMTMgMDA6Mzc6MzQuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTA4OCw0ICsxMDg4LDcgQEAgZXh0ZXJuIHZvaWQgY2hlY2tfdHJhY2Vwb2ludF9j b21tYW5kIChjaAotIGV4dGVybiB2b2lkIHN0YXJ0X3JicmVha19icmVha3BvaW50cyAodm9pZCk7 Ci0gZXh0ZXJuIHZvaWQgZW5kX3JicmVha19icmVha3BvaW50cyAodm9pZCk7CistLS0gZ2RiLTcu Mi41MC4yMDEwMTExNi5vcmlnL2dkYi9icmVha3BvaW50LmgJMjAxMC0xMS0xNiAwNzo1Mzo1OC4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9icmVha3BvaW50LmgJ MjAxMC0xMS0xNiAwODoyOTowNi4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xMTI4LDQgKzExMjgsNyBA QCBleHRlcm4gdm9pZCBlbmRfcmJyZWFrX2JyZWFrcG9pbnRzICh2b2lkCisgZXh0ZXJuIHN0cnVj dCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGludCAoKikgKHN0cnVjdCBi cmVha3BvaW50ICosCisgCQkJCQkJCSAgICAgdm9pZCAqKSwgdm9pZCAqKTsKICAKICtleHRlcm4g dm9pZCBicmVha3BvaW50c19yZWxvY2F0ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiArCQkJ CSAgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpOwogKwogICNlbmRpZiAvKiAhZGVmaW5l ZCAoQlJFQUtQT0lOVF9IKSAqLwotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL29iamZp bGVzLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9vYmpmaWxlcy5jCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9vYmpmaWxlcy5jCTIwMTAtMDUt MTYgMDI6NDY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv b2JqZmlsZXMuYwkyMDEwLTA3LTEzIDAwOjM3OjE5LjAwMDAwMDAwMCArMDIwMAotQEAgLTgzNCw2 ICs4MzQsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaQorLS0t IGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvb2JqZmlsZXMuYwkyMDEwLTEwLTE3IDE5OjQ1 OjE2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL29iamZpbGVz LmMJMjAxMC0xMS0xNiAwODoyODo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC04NDQsNiArODQ0LDEx IEBAIG9iamZpbGVfcmVsb2NhdGUxIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKICAJCQkJb2JqX3Nl Y3Rpb25fYWRkciAocykpOwogICAgICB9CiAgCgpkaWZmIC0tZ2l0IGEvZ2RiLWFyY2hlci1waWUt YWRkb25zLnBhdGNoIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCmluZGV4IDRiY2M0YjQu LjY3Y2EzNGEgMTAwNjQ0Ci0tLSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaAorKysgYi9n ZGItYXJjaGVyLXBpZS1hZGRvbnMucGF0Y2gKQEAgLTEsOCArMSw4IEBACi1JbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvZHdhcmYycmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMyAwMDoyNjoyNS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0xMyAwMDoz NDowMC4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NzM3LDcgKzU3MzcsMTIgQEAgcmVhZF9jb21tb25f YmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3Jp Zy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MjU6MjEuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MjY6 MzUuMDAwMDAwMDAwICswMTAwCitAQCAtNzMyNSw3ICs3MzI1LDEyIEBAIHJlYWRfY29tbW9uX2Js b2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICB7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRy OwogICAgc3RydWN0IHN5bWJvbCAqc3ltOwpAQCAtMTYsNyArMTYsNyBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgCiAgICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfbG9jYXRpb24sIGN1KTsKICAgIGlmIChhdHRyKQotQEAgLTU3NDYsNiArNTc1 MSw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC03MzM0 LDYgKzczMzksNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAg ICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCiAgICAgICAgICB7CiAgICAgICAg ICAgIGJhc2UgPSBkZWNvZGVfbG9jZGVzYyAoRFdfQkxPQ0sgKGF0dHIpLCBjdSk7CkBAIC0yNCw3 ICsyNCw3IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICAg ICAgICAgIH0KICAgICAgICBlbHNlIGlmIChhdHRyX2Zvcm1faXNfc2VjdGlvbl9vZmZzZXQgKGF0 dHIpKQogICAgICAgICAgewotQEAgLTU4MDcsMTIgKzU4MTMsMTUgQEAgcmVhZF9jb21tb25fYmxv Y2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTczOTUsMTIgKzc0MDEsMTUgQEAgcmVhZF9j b21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAogIAkgICAgICBlbHNlCiAgCQlkd2Fy ZjJfY29tcGxleF9sb2NhdGlvbl9leHByX2NvbXBsYWludCAoKTsKICAKQEAgLTQyLDcgKzQyLDcg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogIAkgIGVsc2UK ICAJICAgIFNFVF9GSUVMRF9QSFlTTkFNRSAoKmZpZWxkLCBTWU1CT0xfTElOS0FHRV9OQU1FIChz eW0pKTsKICAJICBGSUVMRF9UWVBFICgqZmllbGQpID0gU1lNQk9MX1RZUEUgKHN5bSk7Ci1AQCAt NTgyNiw3ICs1ODM1LDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGll LAorQEAgLTc0MTQsNyArNzQyMyw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwKICAKICAgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKICAg ICAgICAvKiBTWU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0cyBm aWVsZHMgYXJlIHN0YXRpYy4gICovCkBAIC01MSwxMCArNTEsMTAgQEAgSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgICAgIHNldF9kaWVfdHlwZSAoZGll LCB0eXBlLCBjdSk7CiAgICAgIH0KLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9nZGJ0 eXBlcy5oCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidHlwZXMuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDEwLTA3 LTEyIDIzOjA3OjM0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L2dkYnR5cGVzLmgJMjAxMC0wNy0xMyAwMDozNDowMC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGIt Ny4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMC0xMS0xNiAwODowMTozMy4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nZGJ0eXBlcy5oCTIw MTAtMTEtMTYgMDg6MjY6MzUuMDAwMDAwMDAwICswMTAwCiBAQCAtMzk1LDYgKzM5NSw3IEBAIGVu dW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgZW51bSBmaWVsZF9sb2Nfa2luZAogICAgewpA QCAtNjMsNyArNjMsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZ2RidHlwZXMu aAogICAgICBGSUVMRF9MT0NfS0lORF9QSFlTQUREUiwJLyogcGh5c2FkZHIgKi8KICAgICAgRklF TERfTE9DX0tJTkRfUEhZU05BTUUJLyogcGh5c25hbWUgKi8KICAgIH07Ci1AQCAtNTc3LDYgKzU3 OCw3IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01NzYsNiArNTc3LDcgQEAgc3RydWN0IG1haW5f dHlwZQogIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRoZSB0YXJnZXQpIG9mIHRoZSBzdGF0aWMg ZmllbGQuCiAgCSAgIE90aGVyd2lzZSwgcGh5c25hbWUgaXMgdGhlIG1hbmdsZWQgbGFiZWwgb2Yg dGhlIHN0YXRpYyBmaWVsZC4gKi8KICAKQEAgLTcxLDcgKzcxLDcgQEAgSW5kZXg6IGdkYi03LjEu OTAuMjAxMDA3MTEvZ2RiL2dkYnR5cGVzLmgKICAJQ09SRV9BRERSIHBoeXNhZGRyOwogIAljaGFy ICpwaHlzbmFtZTsKICAgICAgICB9Ci1AQCAtMTA3Myw2ICsxMDc1LDcgQEAgZXh0ZXJuIHZvaWQg YWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTExMDEsNiArMTEwMyw3IEBAIGV4dGVy biB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIEZJRUxEX0xPQ19L SU5EKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jX2tpbmQpCiAgI2RlZmluZSBGSUVMRF9CSVRQT1Mo dGhpc2ZsZCkgKCh0aGlzZmxkKS5sb2MuYml0cG9zKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BI WVNOQU1FKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNuYW1lKQpAQCAtNzksNyArNzksNyBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgRklF TERfU1RBVElDX1BIWVNBRERSKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLnBoeXNhZGRyKQogICNk ZWZpbmUgU0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAogICAgKEZJRUxEX0xP Q19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLUBAIC0xMDgwLDYg KzEwODMsNyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAt MTEwOCw2ICsxMTExLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3Ry dQogICNkZWZpbmUgU0VUX0ZJRUxEX1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUpCQkJXAogICAgKEZJ RUxEX0xPQ19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkJXAogICAg IEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAodGhpc2ZsZCkgPSAobmFtZSkpCkBAIC04Nyw3ICs4Nyw3 IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBT RVRfRklFTERfUEhZU0FERFIodGhpc2ZsZCwgYWRkcikJCQlcCiAgICAoRklFTERfTE9DX0tJTkQg KHRoaXNmbGQpID0gRklFTERfTE9DX0tJTkRfUEhZU0FERFIsCQlcCiAgICAgRklFTERfU1RBVElD X1BIWVNBRERSICh0aGlzZmxkKSA9IChhZGRyKSkKLUBAIC0xMDkyLDYgKzEwOTYsNyBAQCBleHRl cm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTEyMCw2ICsxMTI0LDcg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNkZWZpbmUgVFlQ RV9GSUVMRF9MT0NfS0lORCh0aGlzdHlwZSwgbikgRklFTERfTE9DX0tJTkQgKFRZUEVfRklFTEQg KHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklFTERfQklUUE9TKHRoaXN0eXBlLCBuKSBG SUVMRF9CSVRQT1MgKFRZUEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKICAjZGVmaW5lIFRZUEVfRklF TERfU1RBVElDX1BIWVNOQU1FKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU05BTUUgKFRZ UEVfRklFTEQgKHRoaXN0eXBlLCBuKSkKQEAgLTk1LDEwICs5NSwxMCBAQCBJbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvZ2RidHlwZXMuaAogICNkZWZpbmUgVFlQRV9GSUVMRF9TVEFUSUNf UEhZU0FERFIodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTQUREUiAoVFlQRV9GSUVMRCAo dGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9BUlRJRklDSUFMKHRoaXN0eXBlLCBu KSBGSUVMRF9BUlRJRklDSUFMKFRZUEVfRklFTEQodGhpc3R5cGUsbikpCiAgI2RlZmluZSBUWVBF X0ZJRUxEX0JJVFNJWkUodGhpc3R5cGUsIG4pIEZJRUxEX0JJVFNJWkUoVFlQRV9GSUVMRCh0aGlz dHlwZSxuKSkKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9qdi1sYW5nLmMKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9qdi1sYW5nLmMKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2p2LWxhbmcuYwkyMDEwLTA1LTE3IDE5OjE4OjM5LjAw MDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL2p2LWxhbmcuYwkyMDEw LTA3LTEzIDAwOjM0OjAwLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9nZGIvanYtbGFuZy5jCTIwMTAtMDgtMDkgMjE6NDI6NDcuMDAwMDAwMDAwICswMjAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvanYtbGFuZy5jCTIwMTAtMTEtMTYgMDg6MjY6MzUu MDAwMDAwMDAwICswMTAwCiBAQCAtNDA5LDcgKzQwOSw4IEBAIGphdmFfbGlua19jbGFzc190eXBl IChzdHJ1Y3QgZ2RiYXJjaCAqZ2QKICAKICAgIGZpZWxkcyA9IE5VTEw7CkBAIC0xMTksMTEgKzEx OSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvanYtbGFuZy5jCiAgICAgICAg ZWxzZQogIAlUWVBFX0ZJRUxEX0JJVFBPUyAodHlwZSwgaSkgPSA4ICogYm9mZnNldDsKICAgICAg ICBpZiAoYWNjZmxhZ3MgJiAweDgwMDApCS8qIEZJRUxEX1VOUkVTT0xWRURfRkxBRyAqLwotSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3ZhbHVlLmMKK0luZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi92YWx1ZS5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5v cmlnL2dkYi92YWx1ZS5jCTIwMTAtMDctMTIgMjM6MDc6MzMuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdmFsdWUuYwkyMDEwLTA3LTEzIDAwOjM1OjIxLjAwMDAw MDAwMCArMDIwMAotQEAgLTE5NDMsNyArMTk0Myw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3Ry dWN0IHR5cGUgKnR5cGUsIGkKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3ZhbHVl LmMJMjAxMC0xMS0xNiAwNzo1NDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi92YWx1ZS5jCTIwMTAtMTEtMTYgMDg6MjY6MzUuMDAwMDAwMDAwICswMTAwCitA QCAtMTk2NSw3ICsxOTY1LDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlw ZSwgaQogICAgICB7CiAgICAgIGNhc2UgRklFTERfTE9DX0tJTkRfUEhZU0FERFI6CiAgICAgICAg cmV0dmFsID0gdmFsdWVfYXRfbGF6eSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBmaWVsZG5vKSwK QEAgLTEzMywxMyArMTMzLDMgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3ZhbHVl LmMKICAgICAgICBicmVhazsKICAgICAgY2FzZSBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRToKICAg ICAgewotQEAgLTE5NzcsNyArMTk3OCw4IEBAIHZhbHVlX3N0YXRpY19maWVsZCAoc3RydWN0IHR5 cGUgKnR5cGUsIGkKLSAgCX0KLSAgICAgICBpZiAocmV0dmFsICYmIFZBTFVFX0xWQUwgKHJldHZh bCkgPT0gbHZhbF9tZW1vcnkpCi0gCVNFVF9GSUVMRF9QSFlTQUREUiAoVFlQRV9GSUVMRCAodHlw ZSwgZmllbGRubyksCi0tCQkJICAgIHZhbHVlX2FkZHJlc3MgKHJldHZhbCkpOwotKwkJCSAgICB2 YWx1ZV9hZGRyZXNzIChyZXR2YWwpCi0rCQkJICAgIC0gKFRZUEVfT0JKRklMRSAodHlwZSkgPT0g TlVMTCA/IDAgOiBBTk9GRlNFVCAoVFlQRV9PQkpGSUxFICh0eXBlKS0+c2VjdGlvbl9vZmZzZXRz LCBTRUNUX09GRl9URVhUIChUWVBFX09CSkZJTEUgKHR5cGUpKSkpKTsKLSAgICAgICBicmVhazsK LSAgICAgfQotICAgICBkZWZhdWx0OgoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIucGF0Y2ggYi9n ZGItYXJjaGVyLnBhdGNoCmluZGV4IDQzZmRhOWUuLmVmMzY0ZDUgMTAwNjQ0Ci0tLSBhL2dkYi1h cmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiwxMjcgKzIsMjMgQEAgaHR0 cDovL3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL1Byb2plY3RBcmNoZXIKIGh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9nZGIvd2lraS9BcmNoZXJCcmFuY2hNYW5hZ2VtZW50CiAKIEdJVCBzbmFwc2hvdDoK LWNvbW1pdCA3NGZmZjU4ZDAwNzZmZTk3YzZjOTlkNjVmYTU4MTI2MzE1MjY2NjQ2Citjb21taXQg OWRkMDYxZjEwZTdkM2E4YThjMmQ5ZmZhMjQ5MmEwOGVmYjkxZjI5MwogCiBicmFuY2ggYGFyY2hl cicgLSB0aGUgbWVyZ2Ugb2YgYnJhbmNoZXM6CiBhcmNoZXItamFua3JhdG9jaHZpbC12bGEKIGFy Y2hlci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQzCiBhcmNoZXItamFua3JhdG9jaHZpbC1pZnVu YwotYXJjaGVyLXBtdWxkb29uLW5leHQtb3Zlci10aHJvdzIKLWFyY2hlci10cm9tZXktcHl0aG9u IChub3QgYSBtZXJnZSkKLWFyY2hlci10cm9tZXktb3B0aW9uYWwtcHN5bXRhYiAoY2hlcnJ5LXBp Y2tlZCBmcm9tIHBvc3QtNy4yIG1hc3RlcikKKyNhcmNoZXItcG11bGRvb24tbmV4dC1vdmVyLXRo cm93MgorI2FyY2hlci10cm9tZXktcHl0aG9uIChub3QgYSBtZXJnZSkKKyNhcmNoZXItdHJvbWV5 LW9wdGlvbmFsLXBzeW10YWIgKGNoZXJyeS1waWNrZWQgZnJvbSBwb3N0LTcuMiBtYXN0ZXIpCiAj VE9ETzphcmNoZXItdHJvbWV5LXRocmVhZGVkLWR3YXJmCiAKIAotZGlmZiAtLWdpdCBhL2dkYi9N YWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgotaW5kZXggZjA3YmM4Yi4uMzcwM2RjYSAxMDA2 NDQKLS0tLSBhL2dkYi9NYWtlZmlsZS5pbgotKysrIGIvZ2RiL01ha2VmaWxlLmluCi1AQCAtMTY5 LDYgKzE2OSwxMiBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAot IFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAK LSAKLSAjIERpZCB0aGUgdXNlciBnaXZlIHVzIGEgLS13aXRoLWdkYi1kYXRhZGlyIG9wdGlvbj8K LStHREJfREFUQURJUl9QQVRIID0gQEdEQl9EQVRBRElSX1BBVEhACi0rCi0rIyBUaGUgYXJndW1l bnQgdG8gLS13aXRoLXB5dGhvbmRpci4gIElmIG5vdCBnaXZlbiwgdGhpcyBpcwotKyMgR0RCX0RB VEFESVJfUEFUSC9weXRob24uCi0rcHl0aG9uZGlyID0gQHB5dGhvbmRpckAKLSsKLSBHREJfREFU QURJUiA9IEBHREJfREFUQURJUkAKLSAKLSAjIEhlbHBlciBjb2RlIGZyb20gZ251bGliLgotQEAg LTI5NSwxMyArMzAxLDEzIEBAIFNVQkRJUl9QWVRIT05fU1JDUyA9IFwKLSAJcHl0aG9uL3B5LWNt ZC5jIFwKLSAJcHl0aG9uL3B5LWZyYW1lLmMgXAotIAlweXRob24vcHktZnVuY3Rpb24uYyBcCi0r CXB5dGhvbi9weS1ob29rcy5jIFwKLSAJcHl0aG9uL3B5LWluZmVyaW9yLmMgXAotIAlweXRob24v cHktaW5mdGhyZWFkLmMgXAotIAlweXRob24vcHktbGF6eS1zdHJpbmcuYyBcCi0gCXB5dGhvbi9w eS1vYmpmaWxlLmMgXAotIAlweXRob24vcHktcGFyYW0uYyBcCi0gCXB5dGhvbi9weS1wcmV0dHlw cmludC5jIFwKLS0JcHl0aG9uL3B5LXByb2dzcGFjZS5jIFwKLSAJcHl0aG9uL3B5LXN5bWJvbC5j IFwKLSAJcHl0aG9uL3B5LXN5bXRhYi5jIFwKLSAJcHl0aG9uL3B5LXR5cGUuYyBcCi1AQCAtNzgw LDggKzc4Niw4IEBAIGNvbmZpZy9yczYwMDAvbm0tcnM2MDAwLmggdG9wLmggYnNkLWt2bS5oIGdk Yi1zdGFicy5oIHJlZ2dyb3Vwcy5oIFwKLSBhbm5vdGF0ZS5oIHNpbS1yZWduby5oIGRpY3Rpb25h cnkuaCBkZnAuaCBtYWluLmggZnJhbWUtdW53aW5kLmgJXAotIHJlbW90ZS1maWxlaW8uaCBpMzg2 LWxpbnV4LXRkZXAuaCB2YXgtdGRlcC5oIG9iamMtbGFuZy5oIFwKLSBzZW50aW5lbC1mcmFtZS5o IGJjYWNoZS5oIHN5bWZpbGUuaCB3aW5kb3dzLXRkZXAuaCBsaW51eC10ZGVwLmggXAotLWdkYl91 c2xlZXAuaCBqaXQuaCB4bWwtc3lzY2FsbC5oIGFkYS1vcGVyYXRvci5pbmMgbWljcm9ibGF6ZS10 ZGVwLmggXAotLXBzeW10YWIuaCBwc3ltcHJpdi5oCi0rZ2RiX3VzbGVlcC5oIGppdC5oIHB5dGhv bi9weXRob24uaCBweXRob24vcHl0aG9uLWludGVybmFsLmggXAotK3htbC1zeXNjYWxsLmggYWRh LW9wZXJhdG9yLmluYyBtaWNyb2JsYXplLXRkZXAuaAotIAotICMgSGVhZGVyIGZpbGVzIHRoYXQg YWxyZWFkeSBoYXZlIHNyY2RpciBpbiB0aGVtLCBvciB3aGljaCBhcmUgaW4gb2JqZGlyLgotIAot QEAgLTEzMDEsNiArMTMwNywxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZp Zy5zdGF0dXMKLSAJICBDT05GSUdfTElOS1M9IFwKLSAJICAkKFNIRUxMKSBjb25maWcuc3RhdHVz Ci0gCi0rLmdkYmluaXQ6ICQoc3JjZGlyKS9nZGJpbml0LmluIGNvbmZpZy5zdGF0dXMKLSsJQ09O RklHX0ZJTEVTPSIuZ2RiaW5pdDpnZGJpbml0LmluIiBcCi0rCSAgQ09ORklHX0NPTU1BTkRTPSBc Ci0rCSAgQ09ORklHX0hFQURFUlM9IFwKLSsJICAkKFNIRUxMKSBjb25maWcuc3RhdHVzCi0rCi0g Y29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZSBjb25maWd1cmUudGd0IGNvbmZpZ3Vy ZS5ob3N0Ci0gCSQoU0hFTEwpIGNvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCi0gCi1AQCAtMjAyNCw2 ICsyMDM2LDEwIEBAIHB5LWZ1bmN0aW9uLm86ICQoc3JjZGlyKS9weXRob24vcHktZnVuY3Rpb24u YwotIAkkKENPTVBJTEUpICQoUFlUSE9OX0NGTEFHUykgJChzcmNkaXIpL3B5dGhvbi9weS1mdW5j dGlvbi5jCi0gCSQoUE9TVENPTVBJTEUpCi0gCi0rcHktaG9va3MubzogJChzcmNkaXIpL3B5dGhv bi9weS1ob29rcy5jCi0rCSQoQ09NUElMRSkgJChQWVRIT05fQ0ZMQUdTKSAkKHNyY2RpcikvcHl0 aG9uL3B5LWhvb2tzLmMKLSsJJChQT1NUQ09NUElMRSkKLSsKLSBweS1pbmZlcmlvci5vOiAkKHNy Y2RpcikvcHl0aG9uL3B5LWluZmVyaW9yLmMKLSAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1Mp ICQoc3JjZGlyKS9weXRob24vcHktaW5mZXJpb3IuYwotIAkkKFBPU1RDT01QSUxFKQotQEAgLTIw NzIsNiArMjA4OCwzNiBAQCBweS12YWx1ZS5vOiAkKHNyY2RpcikvcHl0aG9uL3B5LXZhbHVlLmMK LSAJJChDT01QSUxFKSAkKFBZVEhPTl9DRkxBR1MpICQoc3JjZGlyKS9weXRob24vcHktdmFsdWUu YwotIAkkKFBPU1RDT01QSUxFKQotIAotKyMgQWxsIHB5dGhvbiBsaWJyYXJ5IGZpbGVzLCB3aXRo IHRoZSAicHl0aG9uL2xpYiIgc3RyaXBwZWQgb2ZmLgotKyMgTm90ZSB0aGF0IHdlIHNob3VsZCBv bmx5IGluc3RhbGwgZmlsZXMgaW4gdGhlICJnZGIiIG1vZHVsZS4KLStQWV9GSUxFUyA9IGdkYi9G cmFtZUl0ZXJhdG9yLnB5IGdkYi9GcmFtZVdyYXBwZXIucHkgZ2RiL2NvbW1hbmQvYWxpYXMucHkg XAotKyAgICBnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgZ2RiL2NvbW1hbmQvcmVxdWlyZS5weSBc Ci0rICAgIGdkYi9jb21tYW5kL3BhaG9sZS5weSBnZGIvY29tbWFuZC91cHRvLnB5IGdkYi9jb21t YW5kL19faW5pdF9fLnB5IFwKLSsgICAgZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weSBnZGIv Y29tbWFuZC9zYXZlX2JyZWFrcG9pbnRzLnB5IFwKLSsgICAgZ2RiL2Z1bmN0aW9uL2NhbGxlcl9p cy5weSBnZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgXAotKyAgICBnZGIvZnVuY3Rpb24vX19pbml0 X18ucHkgZ2RiL2JhY2t0cmFjZS5weSBnZGIvX19pbml0X18ucHkKLSsKLSsjIEluc3RhbGwgdGhl IFB5dGhvbiBsaWJyYXJ5LiAgUHl0aG9uIGxpYnJhcnkgZmlsZXMgZ28gdW5kZXIKLSsjICQocHl0 aG9uZGlyKS4KLStpbnN0YWxsLXB5dGhvbjoKLSsJZmlsZXM9JyQoUFlfRklMRVMpJzsgZm9yIGZp bGUgaW4gJCRmaWxlczsgZG8gXAotKwkgIGRpcj1gZWNobyAiJCRmaWxlIiB8IHNlZCAncywvW14v XSokJCwsJ2A7IFwKLSsJICAkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERF U1RESVIpJChweXRob25kaXIpLyQkZGlyOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGly KS9weXRob24vbGliLyQkZmlsZSAkKERFU1RESVIpJChweXRob25kaXIpLyQkZmlsZTsgXAotKwlk b25lCi0rCi0rIyBPdGhlciBwYWNrYWdlcyBtYXkgaGF2ZSB0aGVpciBmaWxlcyBpbnN0YWxsZWQg aW4gJChweXRob25kaXIpLgotK3VuaW5zdGFsbC1weXRob246Ci0rCWZpbGVzPSckKFBZX0ZJTEVT KSc7IGZvciBmaWxlIGluICQkZmlsZXM7IGRvIFwKLSsJICBzbGFzaGRpcj1gZWNobyAiLyQkZmls ZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCi0rCSAgcm0gLWYgJChERVNURElSKSQocHl0aG9u ZGlyKS8kJGZpbGU7IFwKLSsJICB3aGlsZSB0ZXN0ICJ4JCRmaWxlIiAhPSAieCQkc2xhc2hkaXIi OyBkbyBcCi0rCSAgICBybWRpciAyPi9kZXYvbnVsbCAiJChERVNURElSKSQocHl0aG9uZGlyKSQk c2xhc2hkaXIiOyBcCi0rCSAgICBmaWxlPSIkJHNsYXNoZGlyIjsgXAotKwkgICAgc2xhc2hkaXI9 YGVjaG8gIiQkZmlsZSIgfCBzZWQgJ3MsL1teL10qJCQsLCdgOyBcCi0rCSAgZG9uZSBcCi0rCWRv bmUKLSsKLSAjCi0gIyBEZXBlbmRlbmN5IHRyYWNraW5nLiAgTW9zdCBvZiB0aGlzIGlzIGNvbmRp dGlvbmFsIG9uIEdOVSBNYWtlIGJlaW5nCi0gIyBmb3VuZCBieSBjb25maWd1cmU7IGlmIEdOVSBN YWtlIGlzIG5vdCBmb3VuZCwgd2UgZmFsbCBiYWNrIHRvIGEKIGRpZmYgLS1naXQgYS9nZGIvYWRh LWxhbmcuYyBiL2dkYi9hZGEtbGFuZy5jCi1pbmRleCAxZDRjMzhiLi5jYWZiODhlIDEwMDY0NAor aW5kZXggZWE3MWVhMi4uY2NkN2IyOSAxMDA2NDQKIC0tLSBhL2dkYi9hZGEtbGFuZy5jCiArKysg Yi9nZGIvYWRhLWxhbmcuYwotQEAgLTExMTE0LDYgKzExMTE0LDcgQEAgYWRhX29wZXJhdG9yX2xl bmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBjLCBpbnQgKm9wbGVucCwK K0BAIC0xMTI1MCw2ICsxMTI1MCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0IHN0cnVj dCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCiAgCiAgc3RhdGljIGludAog IGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAg LTEzMCw3ICsyNiw3IEBAIGluZGV4IDFkNGMzOGIuLmNhZmI4OGUgMTAwNjQ0CiAgCQkgICAgaW50 ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAog IAkJICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTExMTI4LDEyICsxMTEyOSwxNSBAQCBhZGFfb3Bl cmF0b3JfY2hlY2sgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCitAQCAtMTEyNjQs MTIgKzExMjY1LDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCwgaW50IHBvcywKICAJYnJlYWs7CiAgCiAgICAgICAgZGVmYXVsdDoKQEAgLTE0OSw3ICs0NSw3 IEBAIGluZGV4IDFkNGMzOGIuLmNhZmI4OGUgMTAwNjQ0CiAgICAgIHJldHVybiAxOwogIAogZGlm ZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9hbWQ2NC1saW51eC1uYXQuYwot aW5kZXggYzBlZGMxMC4uMTdkMzZiNSAxMDA2NDQKK2luZGV4IDE2ZTk3YTIuLjNhNWQ1N2UgMTAw NjQ0CiAtLS0gYS9nZGIvYW1kNjQtbGludXgtbmF0LmMKICsrKyBiL2dkYi9hbWQ2NC1saW51eC1u YXQuYwogQEAgLTM3NSw2ICszNzUsMjAgQEAgYW1kNjRfbGludXhfZHJfdW5zZXRfc3RhdHVzICh1 bnNpZ25lZCBsb25nIG1hc2spCkBAIC0xNzMsNyArNjksNyBAQCBpbmRleCBjMGVkYzEwLi4xN2Qz NmI1IDEwMDY0NAogIAogIHN0YXRpYyB2b2lkCiAgYW1kNjRfbGludXhfbmV3X3RocmVhZCAocHRp ZF90IHB0aWQpCi1AQCAtNzk2LDYgKzgxMCw3IEBAIF9pbml0aWFsaXplX2FtZDY0X2xpbnV4X25h dCAodm9pZCkKK0BAIC04MDAsNiArODE0LDcgQEAgX2luaXRpYWxpemVfYW1kNjRfbGludXhfbmF0 ICh2b2lkKQogICAgaTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9IGFtZDY0X2xpbnV4X2RyX3Jlc2V0 X2FkZHI7CiAgICBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzID0gYW1kNjRfbGludXhfZHJfZ2V0X3N0 YXR1czsKICAgIGkzODZfZHJfbG93LnVuc2V0X3N0YXR1cyA9IGFtZDY0X2xpbnV4X2RyX3Vuc2V0 X3N0YXR1czsKQEAgLTI4OSw3ICsxODUsNyBAQCBpbmRleCAwMzQ4YmY0Li5mMDFkMGVlIDEwMDY0 NAogIAogIC8qIFJldHVybiB0aGUgaW5uZXJtb3N0IHN0YWNrIGZyYW1lIGV4ZWN1dGluZyBpbnNp ZGUgb2YgQkxPQ0ssCiBkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuYyBiL2dkYi9icmVha3Bv aW50LmMKLWluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CitpbmRleCA2YjU1MzEzLi5iMTUy ZWRhIDEwMDY0NAogLS0tIGEvZ2RiL2JyZWFrcG9pbnQuYwogKysrIGIvZ2RiL2JyZWFrcG9pbnQu YwogQEAgLTYyLDYgKzYyLDcgQEAKQEAgLTMxMCw3ICsyMDYsNyBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogIHN0YXRpYyBpbnQgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICop OwogIAogIHN0YXRpYyB2b2lkIGNsZWFyX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLUBAIC0xMDYs NiArMTEwLDkgQEAgc3RhdGljIHZvaWQgYnJlYWtfY29tbWFuZF8xIChjaGFyICosIGludCwgaW50 KTsKK0BAIC0xMDQsNiArMTA4LDkgQEAgc3RhdGljIHZvaWQgYnJlYWtfY29tbWFuZF8xIChjaGFy ICosIGludCwgaW50KTsKICAKICBzdGF0aWMgdm9pZCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2lu dCAqKTsKICAKQEAgLTMyMCw3ICsyMTYsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0 NAogIC8qIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBpbiBnZGJ0ayBzb3VyY2VzIGFuZCB0aHVzIGNh biBub3QgYmUgbWFkZSBzdGF0aWMuICAqLwogIHN0cnVjdCBicmVha3BvaW50ICpzZXRfcmF3X2Jy ZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIAkJCQkJICAgICAgc3RydWN0IHN5 bXRhYl9hbmRfbGluZSwKLUBAIC0yMzAsNiArMjM3LDEwIEBAIHN0YXRpYyB2b2lkIGRpc2FibGVf dHJhY2VfY29tbWFuZCAoY2hhciAqLCBpbnQpOworQEAgLTIxOSw2ICsyMjYsMTAgQEAgc3RhdGlj IHZvaWQgZGlzYWJsZV90cmFjZV9jb21tYW5kIChjaGFyICosIGludCk7CiAgCiAgc3RhdGljIHZv aWQgdHJhY2VfcGFzc19jb21tYW5kIChjaGFyICosIGludCk7CiAgCkBAIC0zMzEsMTYgKzIyNyw3 IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgLyogQXNzdW1pbmcgd2UncmUgY3Jl YXRpbmcgYSBzdGF0aWMgdHJhY2Vwb2ludCwgZG9lcyBTIGxvb2sgbGlrZSBhCiAgICAgc3RhdGlj IHRyYWNlcG9pbnQgbWFya2VyIHNwZWMgKCItbSBNQVJLRVJfSUQiKT8gICovCiAgI2RlZmluZSBp c19tYXJrZXJfc3BlYyhzKQkJCQkJCVwKLUBAIC00MzAsNyArNDQxLDcgQEAgc3RhdGljIGludCB0 cmFjZXBvaW50X2NvdW50OwotIAotIHN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYnJl YWtwb2ludF9zZXRfY21kbGlzdDsKLSBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKmJy ZWFrcG9pbnRfc2hvd19jbWRsaXN0OwotLXN0YXRpYyBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAq c2F2ZV9jbWRsaXN0OwotK3N0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzYXZlX2NtZGxpc3Q7Ci0g Ci0gLyogUmV0dXJuIHdoZXRoZXIgYSBicmVha3BvaW50IGlzIGFuIGFjdGl2ZSBlbmFibGVkIGJy ZWFrcG9pbnQuICAqLwotIHN0YXRpYyBpbnQKLUBAIC0xMjUyLDYgKzEyNjMsMjIgQEAgd2F0Y2hw b2ludF9pbl90aHJlYWRfc2NvcGUgKHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTEyNDEsNiAr MTI1MiwyMiBAQCB3YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoc3RydWN0IGJyZWFrcG9pbnQg KmIpCiAgCSAgICAgICYmICFpc19leGVjdXRpbmcgKGluZmVyaW9yX3B0aWQpKSk7CiAgfQogIApA QCAtMzYzLDcgKzI1MCw3IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgLyogQXNz dW1pbmcgdGhhdCBCIGlzIGEgd2F0Y2hwb2ludDoKICAgICAtIFJlcGFyc2Ugd2F0Y2hwb2ludCBl eHByZXNzaW9uLCBpZiBSRVBBUlNFIGlzIG5vbi16ZXJvCiAgICAgLSBFdmFsdWF0ZSBleHByZXNz aW9uIGFuZCBzdG9yZSB0aGUgcmVzdWx0IGluIEItPnZhbAotQEAgLTEzMDcsNiArMTMzNCw4IEBA IHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgaW50IHJlcGFyc2UpCitA QCAtMTI5Niw2ICsxMzIzLDggQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50 ICpiLCBpbnQgcmVwYXJzZSkKICAgIHN0cnVjdCBmcmFtZV9pZCBzYXZlZF9mcmFtZV9pZDsKICAg IGludCBmcmFtZV9zYXZlZDsKICAKQEAgLTM3Miw3ICsyNTksNyBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogICAgLyogSWYgdGhpcyBpcyBhIGxvY2FsIHdhdGNocG9pbnQsIHdlIG9u bHkgd2FudCB0byBjaGVjayBpZiB0aGUKICAgICAgIHdhdGNocG9pbnQgZnJhbWUgaXMgaW4gc2Nv cGUgaWYgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIHRoZSB0aHJlYWQKICAgICAgIHRoYXQgd2FzIHVz ZWQgdG8gY3JlYXRlIHRoZSB3YXRjaHBvaW50LiAgKi8KLUBAIC0xNTEwLDEzICsxNTM5LDcgQEAg dXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLCBpbnQgcmVwYXJzZSkKK0BA IC0xNTAwLDEzICsxNTI5LDcgQEAgdXBkYXRlX3dhdGNocG9pbnQgKHN0cnVjdCBicmVha3BvaW50 ICpiLCBpbnQgcmVwYXJzZSkKICBXYXRjaHBvaW50ICVkIGRlbGV0ZWQgYmVjYXVzZSB0aGUgcHJv Z3JhbSBoYXMgbGVmdCB0aGUgYmxvY2tcblwKICBpbiB3aGljaCBpdHMgZXhwcmVzc2lvbiBpcyB2 YWxpZC5cbiIpLAogIAkJICAgICAgIGItPm51bWJlcik7CkBAIC0zODcsNjkgKzI3NCw3IEBAIGlu ZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgICAgIH0KICAKICAgIC8qIFJlc3RvcmUgdGhl IHNlbGVjdGVkIGZyYW1lLiAgKi8KLUBAIC0yMjAxLDYgKzIyMjQsMzMgQEAgY3JlYXRlX3N0ZF90 ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQgKGNvbnN0IGNoYXIgKmZ1bmNfbmFtZSkKLSAgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwotIH0KLSAKLSsvKiBJbnN0YWxsIGEgbWFzdGVyIGJyZWFr cG9pbnQgb24gdGhlIHVud2luZGVyJ3MgZGVidWcgaG9vay4gICovCi0rCi0rdm9pZAotK2NyZWF0 ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCi0rewotKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGU7Ci0rCi0rICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0rICAgIHsKLSsgICAg ICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmRlYnVnX2hvb2s7Ci0rCi0rICAgICAgZGVidWdfaG9v ayA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0ICgiX1Vud2luZF9EZWJ1Z0hvb2siLCBvYmpm aWxlKTsKLSsgICAgICBpZiAoZGVidWdfaG9vayAhPSBOVUxMKQotKwl7Ci0rCSAgc3RydWN0IGJy ZWFrcG9pbnQgKmI7Ci0rCi0rCSAgYiA9IGNyZWF0ZV9pbnRlcm5hbF9icmVha3BvaW50IChnZXRf b2JqZmlsZV9hcmNoIChvYmpmaWxlKSwKLSsJCQkJCSAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKGRl YnVnX2hvb2spLAotKwkJCQkJICBicF9leGNlcHRpb25fbWFzdGVyKTsKLSsJICBiLT5hZGRyX3N0 cmluZyA9IHhzdHJkdXAgKCJfVW53aW5kX0RlYnVnSG9vayIpOwotKwkgIGItPmVuYWJsZV9zdGF0 ZSA9IGJwX2Rpc2FibGVkOwotKwl9Ci0rICAgIH0KLSsKLSsgIHVwZGF0ZV9nbG9iYWxfbG9jYXRp b25fbGlzdCAoMSk7Ci0rfQotKwotIHZvaWQKLSB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhl YyAodm9pZCkKLSB7Ci1AQCAtMjI0Miw3ICsyMjkyLDggQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2Fm dGVyX2V4ZWMgKHZvaWQpCi0gICAgIC8qIFRocmVhZCBldmVudCBicmVha3BvaW50cyBtdXN0IGJl IHNldCBhbmV3IGFmdGVyIGFuIGV4ZWMoKSwKLSAgICAgICAgYXMgbXVzdCBvdmVybGF5IGV2ZW50 IGFuZCBsb25nam1wIG1hc3RlciBicmVha3BvaW50cy4gICovCi0gICAgIGlmIChiLT50eXBlID09 IGJwX3RocmVhZF9ldmVudCB8fCBiLT50eXBlID09IGJwX292ZXJsYXlfZXZlbnQKLS0JfHwgYi0+ dHlwZSA9PSBicF9sb25nam1wX21hc3RlciB8fCBiLT50eXBlID09IGJwX3N0ZF90ZXJtaW5hdGVf bWFzdGVyKQotKwl8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0g YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKLSsJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFz dGVyKQotICAgICAgIHsKLSAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAljb250aW51ZTsKLUBA IC0yMjU3LDcgKzIzMDgsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9pZCkK LSAKLSAgICAgLyogTG9uZ2ptcCBhbmQgbG9uZ2ptcC1yZXN1bWUgYnJlYWtwb2ludHMgYXJlIGFs c28gbWVhbmluZ2xlc3MKLSAgICAgICAgYWZ0ZXIgYW4gZXhlYy4gICovCi0tICAgIGlmIChiLT50 eXBlID09IGJwX2xvbmdqbXAgfHwgYi0+dHlwZSA9PSBicF9sb25nam1wX3Jlc3VtZSkKLSsgICAg aWYgKGItPnR5cGUgPT0gYnBfbG9uZ2ptcCB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1l Ci0rCXx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9uIHx8IGItPnR5cGUgPT0gYnBfZXhjZXB0aW9u X3Jlc3VtZSkKLSAgICAgICB7Ci0gCWRlbGV0ZV9icmVha3BvaW50IChiKTsKLSAJY29udGludWU7 Ci1AQCAtMjMxOSw2ICsyMzcxLDcgQEAgdXBkYXRlX2JyZWFrcG9pbnRzX2FmdGVyX2V4ZWMgKHZv aWQpCi0gICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJfYnJlYWtwb2ludCAoInNpZ2xvbmdqbXAiKTsK LSAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgiX3NpZ2xvbmdqbXAiKTsKLSAg IGNyZWF0ZV9zdGRfdGVybWluYXRlX21hc3Rlcl9icmVha3BvaW50ICgic3RkOjp0ZXJtaW5hdGUo KSIpOwotKyAgY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAoKTsKLSB9Ci0gCi0g aW50Ci1AQCAtMjM0Niw2ICsyMzk5LDggQEAgZGV0YWNoX2JyZWFrcG9pbnRzIChpbnQgcGlkKQor QEAgLTIzNTQsNiArMjM3Nyw4IEBAIGRldGFjaF9icmVha3BvaW50cyAoaW50IHBpZCkKICAgIC8q IERldGFjaCBzaW5nbGUtc3RlcCBicmVha3BvaW50cyBhcyB3ZWxsLiAgKi8KICAgIGRldGFjaF9z aW5nbGVfc3RlcF9icmVha3BvaW50cyAoKTsKICAKQEAgLTQ1OCw3ICsyODMsNyBAQCBpbmRleCA2 YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiAgICBy ZXR1cm4gdmFsOwogIH0KLUBAIC0yNDQ3LDkgKzI1MDIsMTEgQEAgcmVtb3ZlX2JyZWFrcG9pbnRf MSAoc3RydWN0IGJwX2xvY2F0aW9uICpiLCBpbnNlcnRpb25fc3RhdGVfdCBpcykKK0BAIC0yNDU1 LDkgKzI0ODAsMTEgQEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uICpi LCBpbnNlcnRpb25fc3RhdGVfdCBpcykKICAJcmV0dXJuIHZhbDsKICAgICAgICBiLT5pbnNlcnRl ZCA9IChpcyA9PSBtYXJrX2luc2VydGVkKTsKICAgICAgfQpAQCAtNDcyLDI5ICsyOTcsNyBAQCBp bmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgICAgIHZhbCA9IHRhcmdldF9yZW1vdmVf d2F0Y2hwb2ludCAoYi0+YWRkcmVzcywgYi0+bGVuZ3RoLAogIAkJCQkgICAgICBiLT53YXRjaHBv aW50X3R5cGUsIGItPm93bmVyLT5jb25kX2V4cCk7CiAgCi1AQCAtMzIzNyw2ICszMjk0LDEyIEBA IHByaW50X2l0X3R5cGljYWwgKGJwc3RhdCBicykKLSAgICAgICByZXN1bHQgPSBQUklOVF9OT1RI SU5HOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0r ICAgICAgLyogVGhlc2Ugc2hvdWxkIG5ldmVyIGJlIGVuYWJsZWQuICAqLwotKyAgICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiRXhjZXB0aW9uIE1hc3RlciBCcmVha3BvaW50OiBnZGIgc2hvdWxkIG5v dCBzdG9wIVxuIikpOwotKyAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7Ci0rICAgICAgYnJl YWs7Ci0rCi0gICAgIGNhc2UgYnBfd2F0Y2hwb2ludDoKLSAgICAgY2FzZSBicF9oYXJkd2FyZV93 YXRjaHBvaW50OgotICAgICAgIGFubm90YXRlX3dhdGNocG9pbnQgKGItPm51bWJlcik7Ci1AQCAt MzMyNCw2ICszMzg3LDggQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQotICAgICBjYXNl IGJwX25vbmU6Ci0gICAgIGNhc2UgYnBfbG9uZ2ptcDoKLSAgICAgY2FzZSBicF9sb25nam1wX3Jl c3VtZToKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0rICAgIGNhc2UgYnBfZXhjZXB0aW9uX3Jl c3VtZToKLSAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKLSAgICAgY2FzZSBicF93YXRjaHBvaW50 X3Njb3BlOgotICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtMzMzMSw2ICszMzk2LDggQEAg cHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQorQEAgLTMzNDIsNiArMzM2OSw4IEBAIHByaW50 X2l0X3R5cGljYWwgKGJwc3RhdCBicykKICAgICAgY2FzZSBicF90cmFjZXBvaW50OgogICAgICBj YXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CkBAIC01MDMs MTYgKzMwNiwxNiBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgICBkZWZhdWx0 OgogICAgICAgIHJlc3VsdCA9IFBSSU5UX1VOS05PV047CiAgICAgICAgYnJlYWs7Ci1AQCAtMzU0 OSw2ICszNjE2LDggQEAgd2F0Y2hwb2ludF9jaGVjayAodm9pZCAqcCkKLSAgIGdkYl9hc3NlcnQg KGJzLT5icmVha3BvaW50X2F0LT5vd25lciAhPSBOVUxMKTsKLSAgIGIgPSBicy0+YnJlYWtwb2lu dF9hdC0+b3duZXI7CitAQCAtMzU2Miw2ICszNTkxLDggQEAgd2F0Y2hwb2ludF9jaGVjayAodm9p ZCAqcCkKKyAgIGdkYl9hc3NlcnQgKGJzLT5icmVha3BvaW50X2F0ICE9IE5VTEwpOworICAgYiA9 IGJzLT5icmVha3BvaW50X2F0OwogIAogKyAgZ2RiX2Fzc2VydCAoaXNfd2F0Y2hwb2ludCAoYikp OwogKwogICAgLyogSWYgdGhpcyBpcyBhIGxvY2FsIHdhdGNocG9pbnQsIHdlIG9ubHkgd2FudCB0 byBjaGVjayBpZiB0aGUKICAgICAgIHdhdGNocG9pbnQgZnJhbWUgaXMgaW4gc2NvcGUgaWYgdGhl IGN1cnJlbnQgdGhyZWFkIGlzIHRoZSB0aHJlYWQKICAgICAgIHRoYXQgd2FzIHVzZWQgdG8gY3Jl YXRlIHRoZSB3YXRjaHBvaW50LiAgKi8KLUBAIC0zNjU1LDEzICszNzI0LDcgQEAgd2F0Y2hwb2lu dF9jaGVjayAodm9pZCAqcCkKK0BAIC0zNjY4LDEzICszNjk5LDcgQEAgd2F0Y2hwb2ludF9jaGVj ayAodm9pZCAqcCkKICAgICAgICB1aV9vdXRfdGV4dCAodWlvdXQsICIgZGVsZXRlZCBiZWNhdXNl IHRoZSBwcm9ncmFtIGhhcyBsZWZ0IHRoZSBibG9jayBpblxuXAogIHdoaWNoIGl0cyBleHByZXNz aW9uIGlzIHZhbGlkLlxuIik7ICAgICAKICAKQEAgLTUyNyw3ICszMzAsNyBAQCBpbmRleCA2YTY4 NjRjLi41ZGYzMzZkIDEwMDY0NAogIAogICAgICAgIHJldHVybiBXUF9ERUxFVEVEOwogICAgICB9 Ci1AQCAtMzczMCw4ICszNzkzLDEyIEBAIGJwc3RhdF9jaGVja19sb2NhdGlvbiAoY29uc3Qgc3Ry dWN0IGJwX2xvY2F0aW9uICpibCwKK0BAIC0zNzQzLDggKzM3NjgsMTIgQEAgYnBzdGF0X2NoZWNr X2xvY2F0aW9uIChjb25zdCBzdHJ1Y3QgYnBfbG9jYXRpb24gKmJsLAogIAogIC8qIElmIEJTIHJl ZmVycyB0byBhIHdhdGNocG9pbnQsIGRldGVybWluZSBpZiB0aGUgd2F0Y2hlZCB2YWx1ZXMKICAg ICBoYXMgYWN0dWFsbHkgY2hhbmdlZCwgYW5kIHdlIHNob3VsZCBzdG9wLiAgSWYgbm90LCBzZXQg QlMtPnN0b3AKQEAgLTU0Miw3ICszNDUsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0 NAogIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCiAgewogICAgY29uc3Qgc3Ry dWN0IGJwX2xvY2F0aW9uICpibDsKLUBAIC0zODY1LDkgKzM5MzIsNyBAQCBicHN0YXRfY2hlY2tf d2F0Y2hwb2ludCAoYnBzdGF0IGJzKQorQEAgLTM4NzgsOSArMzkwNyw3IEBAIGJwc3RhdF9jaGVj a193YXRjaHBvaW50IChicHN0YXQgYnMpCiAgCSAgICBjYXNlIDA6CiAgCSAgICAgIC8qIEVycm9y IGZyb20gY2F0Y2hfZXJyb3JzLiAgKi8KICAJICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJXYXRj aHBvaW50ICVkIGRlbGV0ZWQuXG4iKSwgYi0+bnVtYmVyKTsKQEAgLTU1Myw3ICszNTYsNyBAQCBp bmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIAkgICAgICAvKiBXZSd2ZSBhbHJlYWR5IHBy aW50ZWQgd2hhdCBuZWVkcyB0byBiZSBwcmludGVkLiAgKi8KICAJICAgICAgYnMtPnByaW50X2l0 ID0gcHJpbnRfaXRfZG9uZTsKICAJICAgICAgYnJlYWs7Ci1AQCAtMzg4MSw4ICszOTQ2LDEwIEBA IGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCitAQCAtMzg5NCw4ICszOTIxLDEw IEBAIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicHN0YXQgYnMpCiAgCSAgICAgYW55dGhpbmcg Zm9yIHRoaXMgd2F0Y2hwb2ludC4gICovCiAgCSAgYnMtPnByaW50X2l0ID0gcHJpbnRfaXRfbm9v cDsKICAJICBicy0+c3RvcCA9IDA7CkBAIC01NjQsMTYgKzM2NywxNiBAQCBpbmRleCA2YTY4NjRj Li41ZGYzMzZkIDEwMDY0NAogIH0KICAKICAKLUBAIC0zOTE0LDcgKzM5ODEsNyBAQCBicHN0YXRf Y2hlY2tfYnJlYWtwb2ludF9jb25kaXRpb25zIChicHN0YXQgYnMsIHB0aWRfdCBwdGlkKQotIAkg d2F0Y2hwb2ludCBhcyB0cmlnZ2VyZWQgc28gdGhhdCB3ZSB3aWxsIGhhbmRsZSB0aGUKLSAJIG91 dC1vZi1zY29wZSBldmVudC4gIFdlJ2xsIGdldCB0byB0aGUgd2F0Y2hwb2ludCBuZXh0Ci0gCSBp dGVyYXRpb24uICAqLwotLSAgICAgIGlmIChiLT50eXBlID09IGJwX3dhdGNocG9pbnRfc2NvcGUp Ci0rICAgICAgaWYgKGItPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSAmJiBiLT5yZWxhdGVk X2JyZWFrcG9pbnQgIT0gYikKLSAJYi0+cmVsYXRlZF9icmVha3BvaW50LT53YXRjaHBvaW50X3Ry aWdnZXJlZCA9IHdhdGNoX3RyaWdnZXJlZF95ZXM7Ci0gCi0gICAgICAgaWYgKGlzX3dhdGNocG9p bnQgKGIpKQotQEAgLTQwNDUsNiArNDExMiw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0 IGFkZHJlc3Nfc3BhY2UgKmFzcGFjZSwKK0BAIC00MDM1LDcgKzQwNjQsNyBAQCBicHN0YXRfc3Rv cF9zdGF0dXMgKHN0cnVjdCBhZGRyZXNzX3NwYWNlICphc3BhY2UsCisgICBzdHJ1Y3QgYnBfbG9j YXRpb24gKmJsOworICAgc3RydWN0IGJwX2xvY2F0aW9uICpsb2M7CisgICAvKiBGaXJzdCBpdGVt IG9mIGFsbG9jYXRlZCBicHN0YXQncy4gICovCistICBicHN0YXQgYnNfaGVhZCA9IE5VTEwsICpi c19saW5rID0gJmJzX2hlYWQ7CisrICBicHN0YXQgYnNfaGVhZCA9IE5VTEwsICpic19saW5rID0g JmJzX2hlYWQsICpic19saW5rX25leHQ7CisgICAvKiBQb2ludGVyIHRvIHRoZSBsYXN0IHRoaW5n IGluIHRoZSBjaGFpbiBjdXJyZW50bHkuICAqLworICAgYnBzdGF0IGJzOworICAgaW50IGl4Owor QEAgLTQwNTYsNiArNDA4NSw4IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nf c3BhY2UgKmFzcGFjZSwKICAKICAgICAgICBmb3IgKGJsID0gYi0+bG9jOyBibCAhPSBOVUxMOyBi bCA9IGJsLT5uZXh0KQogIAl7CkBAIC01ODIsNDMgKzM4NSw0NSBAQCBpbmRleCA2YTY4NjRjLi41 ZGYzMzZkIDEwMDY0NAogIAkgIC8qIEZvciBoYXJkd2FyZSB3YXRjaHBvaW50cywgd2UgbG9vayBv bmx5IGF0IHRoZSBmaXJzdCBsb2NhdGlvbi4KICAJICAgICBUaGUgd2F0Y2hwb2ludF9jaGVjayBm dW5jdGlvbiB3aWxsIHdvcmsgb24gdGhlIGVudGlyZSBleHByZXNzaW9uLAogIAkgICAgIG5vdCB0 aGUgaW5kaXZpZHVhbCBsb2NhdGlvbnMuICBGb3IgcmVhZCB3YXRjaHBvaW50cywgdGhlCi1AQCAt NDA2Miw2ICs0MTMxLDcgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFj ZSAqYXNwYWNlLAotIAkgIC8qIENvbWUgaGVyZSBpZiBpdCdzIGEgd2F0Y2hwb2ludCwgb3IgaWYg dGhlIGJyZWFrIGFkZHJlc3MgbWF0Y2hlcyAqLwotIAotIAkgIGJzID0gYnBzdGF0X2FsbG9jIChi bCwgYnMpOwkvKiBBbGxvYyBhIGJwc3RhdCB0byBleHBsYWluIHN0b3AgKi8KLSsJICBnZGJfYXNz ZXJ0IChic19wcmV2LT5uZXh0ID09IGJzKTsKLSAKLSAJICAvKiBBc3N1bWUgd2Ugc3RvcC4gIFNo b3VsZCB3ZSBmaW5kIHdhdGNocG9pbnQgdGhhdCBpcyBub3QgYWN0dWFsbHkKLSAJICAgICB0cmln Z2VyZWQsIG9yIGlmIGNvbmRpdGlvbiBvZiBicmVha3BvaW50IGlzIGZhbHNlLCB3ZSdsbCByZXNl dAotQEAgLTQwNjksMTMgKzQxMzksMjMgQEAgYnBzdGF0X3N0b3Bfc3RhdHVzIChzdHJ1Y3QgYWRk cmVzc19zcGFjZSAqYXNwYWNlLAotIAkgIGJzLT5zdG9wID0gMTsKLSAJICBicy0+cHJpbnQgPSAx OwotIAotLQkgIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicyk7Ci0tCSAgaWYgKCFicy0+c3Rv cCkKLS0JICAgIGNvbnRpbnVlOwotKwkgIGlmICghYnBzdGF0X2NoZWNrX3dhdGNocG9pbnQgKGJz KSkKLSsJICAgIHsKLSsJICAgICAgLyogRW5zdXJlIGJwc3RhdF9leHBsYWluc19zaWduYWwgc3Rh eXMgZmFsc2UgaWYgdGhpcyBCTCBjb3VsZCBub3QgYmUKLSsJCSB0aGUgY2F1c2Ugb2YgdGhpcyB0 cmFwLiAgKi8KLSsKLSsJICAgICAgZ2RiX2Fzc2VydCAoYnMtPnByaW50X2l0ID09IHByaW50X2l0 X25vb3ApOwotKwkgICAgICBnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOwotKwkgICAgICB4ZnJlZSAo YnMpOwotKwkgICAgICBicyA9IGJzX3ByZXY7Ci0rCSAgICAgIGJzLT5uZXh0ID0gTlVMTDsKLSsJ ICAgICAgY29udGludWU7Ci0rCSAgICB9CitAQCAtNDA4NCw3ICs0MTE1LDcgQEAgYnBzdGF0X3N0 b3Bfc3RhdHVzIChzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlLAorIAkgICAgIHdhdGNocG9p bnQgYXMgdHJpZ2dlcmVkIHNvIHRoYXQgd2Ugd2lsbCBoYW5kbGUgdGhlCisgCSAgICAgb3V0LW9m LXNjb3BlIGV2ZW50LiAgV2UnbGwgZ2V0IHRvIHRoZSB3YXRjaHBvaW50IG5leHQKKyAJICAgICBp dGVyYXRpb24uICAqLworLQkgIGlmIChiLT50eXBlID09IGJwX3dhdGNocG9pbnRfc2NvcGUpCisr CSAgaWYgKGItPnR5cGUgPT0gYnBfd2F0Y2hwb2ludF9zY29wZSAmJiBiLT5yZWxhdGVkX2JyZWFr cG9pbnQgIT0gYikKKyAJICAgIGItPnJlbGF0ZWRfYnJlYWtwb2ludC0+d2F0Y2hwb2ludF90cmln Z2VyZWQgPSB3YXRjaF90cmlnZ2VyZWRfeWVzOworIAl9CisgICAgIH0KK0BAIC00MTA4LDE0ICs0 MTM5LDI2IEBAIGJwc3RhdF9zdG9wX3N0YXR1cyAoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKmFzcGFj ZSwKICAKLSAJICBpZiAoYi0+dHlwZSA9PSBicF90aHJlYWRfZXZlbnQgfHwgYi0+dHlwZSA9PSBi cF9vdmVybGF5X2V2ZW50Ci0gCSAgICAgIHx8IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIK LS0JICAgICAgfHwgYi0+dHlwZSA9PSBicF9zdGRfdGVybWluYXRlX21hc3RlcikKLSsJICAgICAg fHwgYi0+dHlwZSA9PSBicF9zdGRfdGVybWluYXRlX21hc3RlcgotKwkgICAgICB8fCBiLT50eXBl ID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpCi0gCSAgICAvKiBXZSBkbyBub3Qgc3RvcCBmb3IgdGhl c2UuICAqLwotIAkgICAgYnMtPnN0b3AgPSAwOwotIAkgIGVsc2UKLUBAIC00MTc2LDcgKzQyNTYs NyBAQCBoYW5kbGVfaml0X2V2ZW50ICh2b2lkKQorICAgcmVtb3ZlZF9hbnkgPSAwOworIAorLSAg Zm9yIChicyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCisrICBmb3IgKGJz X2xpbmsgPSAmYnNfaGVhZDsgKmJzX2xpbmsgIT0gTlVMTDsgYnNfbGluayA9IGJzX2xpbmtfbmV4 dCkKKyAgICAgeworKyAgICAgIGJzID0gKmJzX2xpbms7CisrICAgICAgYnNfbGlua19uZXh0ID0g JmJzLT5uZXh0OworKworICAgICAgIGlmICghYnMtPnN0b3ApCisgCWNvbnRpbnVlOworIAorICAg ICAgIGJwc3RhdF9jaGVja193YXRjaHBvaW50IChicyk7CisgICAgICAgaWYgKCFicy0+c3RvcCkK Ky0JY29udGludWU7CisrCXsKKysJICAvKiBFbnN1cmUgYnBzdGF0X2V4cGxhaW5zX3NpZ25hbCBz dGF5cyBmYWxzZSBpZiB0aGlzIEJMIGNvdWxkIG5vdCBiZQorKwkgICAgIHRoZSBjYXVzZSBvZiB0 aGlzIHRyYXAuICAqLworKworKwkgIGdkYl9hc3NlcnQgKGJzLT5wcmludF9pdCA9PSBwcmludF9p dF9ub29wKTsKKysJICBnZGJfYXNzZXJ0ICghYnMtPnN0b3ApOworKwkgIGJzX2xpbmtfbmV4dCA9 IGJzX2xpbms7CisrCSAgeGZyZWUgKGJzKTsKKysJICBjb250aW51ZTsKKysJfQorIAorICAgICAg IGIgPSBicy0+YnJlYWtwb2ludF9hdDsKKyAKK0BAIC00MjA1LDcgKzQyNDgsNyBAQCBoYW5kbGVf aml0X2V2ZW50ICh2b2lkKQogIC8qIERlY2lkZSB3aGF0IGluZnJ1biBuZWVkcyB0byBkbyB3aXRo IHRoaXMgYnBzdGF0LiAgKi8KICAKICBzdHJ1Y3QgYnBzdGF0X3doYXQKQEAgLTYyNyw3ICs0MzIs NyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIHsKICAgIHN0cnVjdCBicHN0YXRf d2hhdCByZXR2YWw7CiAgICAvKiBXZSBuZWVkIHRvIGRlZmVyIGNhbGxpbmcgYHNvbGliX2FkZCcs IGFzIGFkZGluZyBuZXcgc3ltYm9scwotQEAgLTQxODQsMTEgKzQyNjQsMTMgQEAgYnBzdGF0X3do YXQgKGJwc3RhdCBicykKK0BAIC00MjEzLDExICs0MjU2LDEyIEBAIGJwc3RhdF93aGF0IChicHN0 YXQgYnMpCiAgICAgICBhbmQgaGVuY2UgbWF5IGNsZWFyIHVucHJvY2Vzc2VkIGVudHJpZXMgaW4g dGhlIEJTIGNoYWluLiAgKi8KICAgIGludCBzaGxpYl9ldmVudCA9IDA7CiAgICBpbnQgaml0X2V2 ZW50ID0gMDsKQEAgLTYzNSwzOCArNDQwLDEzIEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAw NjQ0CiAgCiAgICByZXR2YWwubWFpbl9hY3Rpb24gPSBCUFNUQVRfV0hBVF9LRUVQX0NIRUNLSU5H OwogICAgcmV0dmFsLmNhbGxfZHVtbXkgPSBTVE9QX05PTkU7Ci0rICByZXR2YWwuaXNfbG9uZ2pt cCA9IDA7CiAgCiAtICBmb3IgKDsgYnMgIT0gTlVMTDsgYnMgPSBicy0+bmV4dCkKICsgIGZvciAo YnMgPSBic19oZWFkOyBicyAhPSBOVUxMOyBicyA9IGJzLT5uZXh0KQogICAgICB7CiAgICAgICAg LyogRXh0cmFjdCB0aGlzIEJTJ3MgYWN0aW9uLiAgQWZ0ZXIgcHJvY2Vzc2luZyBlYWNoIEJTLCB3 ZSBjaGVjawogIAkgaWYgaXRzIGFjdGlvbiBvdmVycmlkZXMgYWxsIHdlJ3ZlIHNlZW0gc28gZmFy LiAgKi8KLUBAIC00MjQyLDEwICs0MzI0LDE1IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnMpCi0g CSAgICB9Ci0gCSAgYnJlYWs7Ci0gCWNhc2UgYnBfbG9uZ2ptcDoKLSsJY2FzZSBicF9leGNlcHRp b246Ci0gCSAgdGhpc19hY3Rpb24gPSBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUU7Ci0r CSAgcmV0dmFsLmlzX2xvbmdqbXAgPSBicy0+YnJlYWtwb2ludF9hdC0+b3duZXItPnR5cGUgPT0g YnBfbG9uZ2ptcDsKLSAJICBicmVhazsKLSAJY2FzZSBicF9sb25nam1wX3Jlc3VtZToKLSsJY2Fz ZSBicF9leGNlcHRpb25fcmVzdW1lOgotIAkgIHRoaXNfYWN0aW9uID0gQlBTVEFUX1dIQVRfQ0xF QVJfTE9OR0pNUF9SRVNVTUU7Ci0rCSAgcmV0dmFsLmlzX2xvbmdqbXAKLSsJICAgID0gYnMtPmJy ZWFrcG9pbnRfYXQtPm93bmVyLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1lOwotIAkgIGJyZWFr OwotIAljYXNlIGJwX3N0ZXBfcmVzdW1lOgotIAkgIGlmIChicy0+c3RvcCkKLUBAIC00MjYxLDYg KzQzNDgsNyBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQotIAljYXNlIGJwX292ZXJsYXlfZXZl bnQ6Ci0gCWNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6Ci0gCWNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9t YXN0ZXI6Ci0rCWNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKLSAJICB0aGlzX2FjdGlvbiA9IEJQ U1RBVF9XSEFUX1NJTkdMRTsKLSAJICBicmVhazsKLSAJY2FzZSBicF9jYXRjaHBvaW50OgotQEAg LTQzMTMsNiArNDQwMSwyMCBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQorQEAgLTQzNDIsNiAr NDM4NiwyMCBAQCBicHN0YXRfd2hhdCAoYnBzdGF0IGJzKQogIAkgICAgIG91dCBhbHJlYWR5LiAg Ki8KICAJICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElORV9fLAogIAkJCSAgXygiYnBz dGF0X3doYXQ6IHRyYWNlcG9pbnQgZW5jb3VudGVyZWQiKSk7CkBAIC02ODcsNyArNDY3LDcgQEAg aW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAJZGVmYXVsdDoKICAJICBpbnRlcm5hbF9l cnJvciAoX19GSUxFX18sIF9fTElORV9fLAogIAkJCSAgXygiYnBzdGF0X3doYXQ6IHVuaGFuZGxl ZCBicHR5cGUgJWQiKSwgKGludCkgYnB0eXBlKTsKLUBAIC00MzUwLDYgKzQ0NTIsMjMgQEAgYnBz dGF0X3doYXQgKGJwc3RhdCBicykKK0BAIC00Mzc5LDYgKzQ0MzcsMjEgQEAgYnBzdGF0X3doYXQg KGJwc3RhdCBicykKICAgICAgICBoYW5kbGVfaml0X2V2ZW50ICgpOwogICAgICB9CiAgCkBAIC02 OTUsMTUgKzQ3NSwxMyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogKyAgICB7CiAr ICAgICAgaWYgKGJzLT5icmVha3BvaW50X2F0ID09IE5VTEwpCiArCWNvbnRpbnVlOwotKyAgICAg IGlmIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXIgPT0gTlVMTCkKLSsJY29udGludWU7Ci0rICAg ICAgc3dpdGNoIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXItPnR5cGUpCisrICAgICAgc3dpdGNo IChicy0+YnJlYWtwb2ludF9hdC0+dHlwZSkKICsJewogKwljYXNlIGJwX2dudV9pZnVuY19yZXNv bHZlcjoKLSsJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoYnMtPmJyZWFrcG9pbnRfYXQtPm93 bmVyKTsKKysJICBnbnVfaWZ1bmNfcmVzb2x2ZXJfc3RvcCAoYnMtPmJyZWFrcG9pbnRfYXQpOwog KwkgIGJyZWFrOwogKwljYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0rCSAgZ251 X2lmdW5jX3Jlc29sdmVyX3JldHVybl9zdG9wIChicy0+YnJlYWtwb2ludF9hdC0+b3duZXIpOwor KwkgIGdudV9pZnVuY19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoYnMtPmJyZWFrcG9pbnRfYXQpOwog KwkgIGJyZWFrOwogKwl9CiArICAgIH0KQEAgLTcxMSw0NSArNDg5LDE2IEBAIGluZGV4IDZhNjg2 NGMuLjVkZjMzNmQgMTAwNjQ0CiAgICByZXR1cm4gcmV0dmFsOwogIH0KICAKLUBAIC00NDYxLDYg KzQ1ODAsOCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9p bnQgKmIsCi0gICAgIHticF9hY2Nlc3Nfd2F0Y2hwb2ludCwgImFjYyB3YXRjaHBvaW50In0sCi0g ICAgIHticF9sb25nam1wLCAibG9uZ2ptcCJ9LAotICAgICB7YnBfbG9uZ2ptcF9yZXN1bWUsICJs b25nam1wIHJlc3VtZSJ9LAotKyAgICB7YnBfZXhjZXB0aW9uLCAiZXhjZXB0aW9uIn0sCi0rICAg IHticF9leGNlcHRpb25fcmVzdW1lLCAiZXhjZXB0aW9uIHJlc3VtZSJ9LAotICAgICB7YnBfc3Rl cF9yZXN1bWUsICJzdGVwIHJlc3VtZSJ9LAotICAgICB7YnBfd2F0Y2hwb2ludF9zY29wZSwgIndh dGNocG9pbnQgc2NvcGUifSwKLSAgICAge2JwX2NhbGxfZHVtbXksICJjYWxsIGR1bW15In0sCi1A QCAtNDQ3MCwxMSArNDU5MSwxNCBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3Ry dWN0IGJyZWFrcG9pbnQgKmIsCi0gICAgIHticF9vdmVybGF5X2V2ZW50LCAib3ZlcmxheSBldmVu dHMifSwKLSAgICAge2JwX2xvbmdqbXBfbWFzdGVyLCAibG9uZ2ptcCBtYXN0ZXIifSwKLSAgICAg e2JwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLCAic3RkOjp0ZXJtaW5hdGUgbWFzdGVyIn0sCi0rICAg IHticF9leGNlcHRpb25fbWFzdGVyLCAiZXhjZXB0aW9uIG1hc3RlciJ9LAotICAgICB7YnBfY2F0 Y2hwb2ludCwgImNhdGNocG9pbnQifSwKLSAgICAge2JwX3RyYWNlcG9pbnQsICJ0cmFjZXBvaW50 In0sCitAQCAtNDQ5Nyw2ICs0NTcwLDggQEAgYnB0eXBlX3N0cmluZyAoZW51bSBicHR5cGUgdHlw ZSkKICAgICAge2JwX2Zhc3RfdHJhY2Vwb2ludCwgImZhc3QgdHJhY2Vwb2ludCJ9LAogICAgICB7 YnBfc3RhdGljX3RyYWNlcG9pbnQsICJzdGF0aWMgdHJhY2Vwb2ludCJ9LAogICAgICB7YnBfaml0 X2V2ZW50LCAiaml0IGV2ZW50cyJ9LAogKyAgICB7YnBfZ251X2lmdW5jX3Jlc29sdmVyLCAiZ251 LWlmdW5jIHJlc29sdmVyIn0sCiArICAgIHticF9nbnVfaWZ1bmNfcmVzb2x2ZXJfcmV0dXJuLCAi Z251LWZ1bmMgcmVzb2x2ZXIgcmV0dXJuIn0sCiAgICB9OwotICAgCi0gICBzdGF0aWMgY2hhciBi cGVuYWJsZXNbXSA9ICJueW5ueSI7Ci1AQCAtNDU5NSw2ICs0NzE5LDggQEAgcHJpbnRfb25lX2Jy ZWFrcG9pbnRfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAotICAgICAgIGNhc2UgYnBf ZmluaXNoOgotICAgICAgIGNhc2UgYnBfbG9uZ2ptcDoKLSAgICAgICBjYXNlIGJwX2xvbmdqbXBf cmVzdW1lOgotKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9uOgotKyAgICAgIGNhc2UgYnBfZXhjZXB0 aW9uX3Jlc3VtZToKLSAgICAgICBjYXNlIGJwX3N0ZXBfcmVzdW1lOgotICAgICAgIGNhc2UgYnBf d2F0Y2hwb2ludF9zY29wZToKLSAgICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAtNDYwNCwx MCArNDczMCwxMyBAQCBwcmludF9vbmVfYnJlYWtwb2ludF9sb2NhdGlvbiAoc3RydWN0IGJyZWFr cG9pbnQgKmIsCi0gICAgICAgY2FzZSBicF9vdmVybGF5X2V2ZW50OgotICAgICAgIGNhc2UgYnBf bG9uZ2ptcF9tYXN0ZXI6Ci0gICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKLSsg ICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gICAgICAgY2FzZSBicF90cmFjZXBvaW50 OgorIAorICAgaWYgKCgoaW50KSB0eXBlID49IChzaXplb2YgKGJwdHlwZXMpIC8gc2l6ZW9mIChi cHR5cGVzWzBdKSkpCitAQCAtNDY0Myw2ICs0NzE4LDggQEAgcHJpbnRfb25lX2JyZWFrcG9pbnRf bG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiLAogICAgICAgIGNhc2UgYnBfZmFzdF90cmFj ZXBvaW50OgogICAgICAgIGNhc2UgYnBfc3RhdGljX3RyYWNlcG9pbnQ6CiAgICAgICAgY2FzZSBi cF9qaXRfZXZlbnQ6CkBAIC03NTgsNyArNTA3LDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAx MDA2NDQKICAJaWYgKG9wdHMuYWRkcmVzc3ByaW50KQogIAkgIHsKICAJICAgIGFubm90YXRlX2Zp ZWxkICg0KTsKLUBAIC00ODg4LDcgKzUwMTcsOCBAQCB1c2VyX3NldHRhYmxlX2JyZWFrcG9pbnQg KGNvbnN0IHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTQ5MjMsNyArNTAwMCw4IEBAIHVzZXJf c2V0dGFibGVfYnJlYWtwb2ludCAoY29uc3Qgc3RydWN0IGJyZWFrcG9pbnQgKmIpCiAgCSAgfHwg Yi0+dHlwZSA9PSBicF9jYXRjaHBvaW50CiAgCSAgfHwgYi0+dHlwZSA9PSBicF9oYXJkd2FyZV9i cmVha3BvaW50CiAgCSAgfHwgaXNfdHJhY2Vwb2ludCAoYikKQEAgLTc2OCwzNCArNTE3LDI0IEBA IGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgfQogIAkKICAvKiBQcmludCBpbmZvcm1h dGlvbiBvbiB1c2VyIHNldHRhYmxlIGJyZWFrcG9pbnQgKHdhdGNocG9pbnQsIGV0YykKLUBAIC01 MzM0LDYgKzU0NjQsOCBAQCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQg KmJwdCkKLSAgICAgY2FzZSBicF9maW5pc2g6Ci0gICAgIGNhc2UgYnBfbG9uZ2ptcDoKLSAgICAg Y2FzZSBicF9sb25nam1wX3Jlc3VtZToKLSsgICAgY2FzZSBicF9leGNlcHRpb246Ci0rICAgIGNh c2UgYnBfZXhjZXB0aW9uX3Jlc3VtZToKLSAgICAgY2FzZSBicF9zdGVwX3Jlc3VtZToKLSAgICAg Y2FzZSBicF93YXRjaHBvaW50X3Njb3BlOgotICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci1AQCAt NTM0NCw2ICs1NDc2LDkgQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVjdCBicmVha3BvaW50 ICpicHQpCitAQCAtNTM4OSw2ICs1NDY3LDggQEAgYWxsb2NhdGVfYnBfbG9jYXRpb24gKHN0cnVj dCBicmVha3BvaW50ICpicHQpCiAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICBjYXNlIGJw X2xvbmdqbXBfbWFzdGVyOgogICAgICBjYXNlIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyOgogKyAg ICBjYXNlIGJwX2dudV9pZnVuY19yZXNvbHZlcjoKICsgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVz b2x2ZXJfcmV0dXJuOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6CiAgICAgICAgbG9j LT5sb2NfdHlwZSA9IGJwX2xvY19zb2Z0d2FyZV9icmVha3BvaW50OwogICAgICAgIGJyZWFrOwog ICAgICBjYXNlIGJwX2hhcmR3YXJlX2JyZWFrcG9pbnQ6Ci1AQCAtNTQyMCw2ICs1NTU1LDcgQEAg c2V0X3Jhd19icmVha3BvaW50X3dpdGhvdXRfbG9jYXRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAotICAgYi0+c3lzY2FsbHNfdG9fYmVfY2F1Z2h0ID0gTlVMTDsKK0BAIC01NDc3LDYgKzU1 NTcsNyBAQCBzZXRfcmF3X2JyZWFrcG9pbnRfd2l0aG91dF9sb2NhdGlvbiAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCiAgICBiLT5vcHMgPSBOVUxMOwogICAgYi0+Y29uZGl0aW9uX25vdF9wYXJz ZWQgPSAwOworICAgYi0+cHlfYnBfb2JqZWN0ID0gTlVMTDsKICsgIGItPnJlbGF0ZWRfYnJlYWtw b2ludCA9IGI7CiAgCiAgICAvKiBBZGQgdGhpcyBicmVha3BvaW50IHRvIHRoZSBlbmQgb2YgdGhl IGNoYWluCiAgICAgICBzbyB0aGF0IGEgbGlzdCBvZiBicmVha3BvaW50cyB3aWxsIGNvbWUgb3V0 IGluIG9yZGVyCi1AQCAtNTQzOSw3ICs1NTc1LDcgQEAgc2V0X3Jhd19icmVha3BvaW50X3dpdGhv dXRfbG9jYXRpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorQEAgLTU0OTYsNyArNTU3Nyw3 IEBAIHNldF9yYXdfYnJlYWtwb2ludF93aXRob3V0X2xvY2F0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAq Z2RiYXJjaCwKICAKICAvKiBJbml0aWFsaXplIGxvYy0+ZnVuY3Rpb25fbmFtZS4gICovCiAgc3Rh dGljIHZvaWQKQEAgLTgwNCw3ICs1NDMsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0 NAogIHsKICAgIGdkYl9hc3NlcnQgKGxvYy0+b3duZXIgIT0gTlVMTCk7CiAgCi1AQCAtNTQ0Nyw4 ICs1NTgzLDI5IEBAIHNldF9icmVha3BvaW50X2xvY2F0aW9uX2Z1bmN0aW9uIChzdHJ1Y3QgYnBf bG9jYXRpb24gKmxvYykKK0BAIC01NTA0LDggKzU1ODUsMjkgQEAgc2V0X2JyZWFrcG9pbnRfbG9j YXRpb25fZnVuY3Rpb24gKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jKQogICAgICAgIHx8IGxvYy0+ b3duZXItPnR5cGUgPT0gYnBfaGFyZHdhcmVfYnJlYWtwb2ludAogICAgICAgIHx8IGlzX3RyYWNl cG9pbnQgKGxvYy0+b3duZXIpKQogICAgICB7CkBAIC04MzYsNyArNTc1LDcgQEAgaW5kZXggNmE2 ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAgICAgICBpZiAobG9jLT5mdW5jdGlvbl9uYW1lKQogIAls b2MtPmZ1bmN0aW9uX25hbWUgPSB4c3RyZHVwIChsb2MtPmZ1bmN0aW9uX25hbWUpOwogICAgICB9 Ci1AQCAtNTUyMSw3ICs1Njc4LDggQEAgc2V0X3Jhd19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwKK0BAIC01NTc4LDcgKzU2ODAsOCBAQCBzZXRfcmF3X2JyZWFrcG9pbnQgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogICAgYi0+bG9jLT5zZWN0aW9uID0gc2FsLnNlY3Rpb247 CiAgICBiLT5saW5lX251bWJlciA9IHNhbC5saW5lOwogIApAQCAtODQ2LDQxICs1ODUsNyBAQCBp bmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogIAogICAgYnJlYWtwb2ludHNfY2hhbmdlZCAo KTsKICAKLUBAIC01NTQ4LDggKzU3MDYsNyBAQCBtYWtlX2JyZWFrcG9pbnRfcGVybWFuZW50IChz dHJ1Y3QgYnJlYWtwb2ludCAqYikKLSB9Ci0gCi0gLyogQ2FsbCB0aGlzIHJvdXRpbmUgd2hlbiBz dGVwcGluZyBhbmQgbmV4dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50Ci0tICAgaWYgd2UgZG8g YSBsb25nam1wKCkgaW4gVEhSRUFELiAgV2hlbiB3ZSBoaXQgdGhhdCBicmVha3BvaW50LCBjYWxs Ci0tICAgc2V0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQoKSB0byBmaWd1cmUgb3V0IHdoZXJl IHdlIGFyZSBnb2luZy4gKi8KLSsgICBpZiB3ZSBkbyBhIGxvbmdqbXAoKSBvciAndGhyb3cnIGlu IFRIUkVBRC4gICovCi0gCi0gdm9pZAotIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJl YWQpCi1AQCAtNTU2MiwxMSArNTcxOSwxMiBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQg dGhyZWFkKQotICAgICAgY2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJl cXVlc3RlZCB0aHJlYWQuICAqLwotICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCi0g ICAgIGlmIChiLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCi0tCSYmIGItPnR5cGUg PT0gYnBfbG9uZ2ptcF9tYXN0ZXIpCi0rCSYmIChiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVy Ci0rCSAgICB8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQotICAgICAgIHsKLSAJ c3RydWN0IGJyZWFrcG9pbnQgKmNsb25lID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGIp OwotIAotLQljbG9uZS0+dHlwZSA9IGJwX2xvbmdqbXA7Ci0rCWNsb25lLT50eXBlID0gYi0+dHlw ZSA9PSBicF9sb25nam1wX21hc3RlciA/IGJwX2xvbmdqbXAgOiBicF9leGNlcHRpb247Ci0gCWNs b25lLT50aHJlYWQgPSB0aHJlYWQ7Ci0gICAgICAgfQotIH0KLUBAIC01NTc4LDcgKzU3MzYsNyBA QCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQotICAgc3RydWN0IGJyZWFr cG9pbnQgKmIsICp0ZW1wOwotIAotICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCi0t ICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdqbXApCi0rICAgIGlmIChiLT50eXBlID09IGJwX2xv bmdqbXAgfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb24pCi0gICAgICAgewotIAlpZiAoYi0+dGhy ZWFkID09IHRocmVhZCkKLSAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7Ci1AQCAtNjU5NSw3ICs2 NzUzLDcgQEAgY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpv cmlnKQorQEAgLTY2NTIsNyArNjc1NSw3IEBAIGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChz dHJ1Y3QgYnJlYWtwb2ludCAqb3JpZykKICAKICAgIGNvcHkgPSBzZXRfcmF3X2JyZWFrcG9pbnRf d2l0aG91dF9sb2NhdGlvbiAob3JpZy0+Z2RiYXJjaCwgb3JpZy0+dHlwZSk7CiAgICBjb3B5LT5s b2MgPSBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoY29weSk7CkBAIC04ODksNyArNTk0LDcgQEAgaW5k ZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAKICAgIGNvcHktPmxvYy0+Z2RiYXJjaCA9IG9y aWctPmxvYy0+Z2RiYXJjaDsKICAgIGNvcHktPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBvcmln LT5sb2MtPnJlcXVlc3RlZF9hZGRyZXNzOwotQEAgLTY2OTQsNiArNjg1Miw3IEBAIG1lbnRpb24g KHN0cnVjdCBicmVha3BvaW50ICpiKQorQEAgLTY3NTEsNiArNjg1NCw3IEBAIG1lbnRpb24gKHN0 cnVjdCBicmVha3BvaW50ICpiKQogIAlkb19jbGVhbnVwcyAodWlfb3V0X2NoYWluKTsKICAJYnJl YWs7CiAgICAgICAgY2FzZSBicF9icmVha3BvaW50OgpAQCAtODk3LDcgKzYwMiw3IEBAIGluZGV4 IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAgCWlmICh1aV9vdXRfaXNfbWlfbGlrZV9wICh1aW91 dCkpCiAgCSAgewogIAkgICAgc2F5X3doZXJlID0gMDsKLUBAIC02NzA0LDYgKzY4NjMsOCBAQCBt ZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKK0BAIC02NzYxLDYgKzY4NjUsOCBAQCBtZW50 aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKICAJZWxzZQogIAkgIHByaW50Zl9maWx0ZXJlZCAo XygiQnJlYWtwb2ludCIpKTsKICAJcHJpbnRmX2ZpbHRlcmVkIChfKCIgJWQiKSwgYi0+bnVtYmVy KTsKQEAgLTkwNiwyNSArNjExLDE1IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0CiAg CXNheV93aGVyZSA9IDE7CiAgCWJyZWFrOwogICAgICAgIGNhc2UgYnBfaGFyZHdhcmVfYnJlYWtw b2ludDoKLUBAIC02NzUwLDYgKzY5MTEsOCBAQCBtZW50aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAq YikKLSAgICAgICBjYXNlIGJwX2ZpbmlzaDoKLSAgICAgICBjYXNlIGJwX2xvbmdqbXA6Ci0gICAg ICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKLSsgICAgICBjYXNlIGJwX2V4Y2VwdGlvbjoKLSsg ICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6Ci0gICAgICAgY2FzZSBicF9zdGVwX3Jlc3Vt ZToKLSAgICAgICBjYXNlIGJwX2NhbGxfZHVtbXk6Ci0gICAgICAgY2FzZSBicF9zdGRfdGVybWlu YXRlOgotQEAgLTY3NjAsNiArNjkyMyw4IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpi KQorQEAgLTY4MTcsNiArNjkyMyw3IEBAIG1lbnRpb24gKHN0cnVjdCBicmVha3BvaW50ICpiKQog ICAgICAgIGNhc2UgYnBfaml0X2V2ZW50OgogICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6 CiAgICAgICAgY2FzZSBicF9zdGRfdGVybWluYXRlX21hc3RlcjoKICsgICAgICBjYXNlIGJwX2du dV9pZnVuY19yZXNvbHZlcl9yZXR1cm46Ci0rICAgICAgY2FzZSBicF9leGNlcHRpb25fbWFzdGVy OgogIAlicmVhazsKICAgICAgICB9CiAgCi1AQCAtNjgyMCw3ICs2OTg1LDggQEAgYWRkX2xvY2F0 aW9uX3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVha3BvaW50ICpiLAorQEAgLTY4NzcsNyArNjk4 NCw4IEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwK ICAgIGdkYl9hc3NlcnQgKGxvYy0+cHNwYWNlICE9IE5VTEwpOwogICAgbG9jLT5zZWN0aW9uID0g c2FsLT5zZWN0aW9uOwogIApAQCAtOTM0LDYxICs2MjksNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYz MzZkIDEwMDY0NAogICAgcmV0dXJuIGxvYzsKICB9CiAgDAotQEAgLTgzNDYsNiArODUxMiw3IEBA IHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl9hcmdzCi0gewotICAgc3Ry dWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7Ci0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtw b2ludDI7Ci0rICBpbnQgdGhyZWFkX251bTsKLSB9OwotIAotIC8qIFRoaXMgZnVuY3Rpb24gaXMg Y2FsbGVkIGJ5IGZldGNoX2luZmVyaW9yX2V2ZW50IHZpYSB0aGUKLUBAIC04MzYwLDYgKzg1Mjcs NyBAQCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQotICAgZGVs ZXRlX2JyZWFrcG9pbnQgKGEtPmJyZWFrcG9pbnQpOwotICAgaWYgKGEtPmJyZWFrcG9pbnQyKQot ICAgICBkZWxldGVfYnJlYWtwb2ludCAoYS0+YnJlYWtwb2ludDIpOwotKyAgZGVsZXRlX2xvbmdq bXBfYnJlYWtwb2ludCAoYS0+dGhyZWFkX251bSk7Ci0gfQotIAotIHZvaWQKLUBAIC04MzcxLDYg Kzg1MzksOCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSwg aW50IGFueXdoZXJlKQotICAgc3RydWN0IGJyZWFrcG9pbnQgKmJyZWFrcG9pbnQ7Ci0gICBzdHJ1 Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDIgPSBOVUxMOwotICAgc3RydWN0IGNsZWFudXAgKm9s ZF9jaGFpbjsKLSsgIGludCB0aHJlYWQ7Ci0rICBzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwOwotIAot ICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7Ci0gCi1AQCAtODQwOSw2ICs4NTc5LDkgQEAgdW50 aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkK LSAKLSAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtw b2ludCk7Ci0gCi0rICB0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSsgIHRocmVhZCA9IHRwLT5u dW07Ci0rCi0gICAvKiBLZWVwIHdpdGhpbiB0aGUgY3VycmVudCBmcmFtZSwgb3IgaW4gZnJhbWVz IGNhbGxlZCBieSB0aGUgY3VycmVudAotICAgICAgb25lLiAgKi8KLSAKLUBAIC04NDIxLDYgKzg1 OTQsMTAgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGlu dCBhbnl3aGVyZSkKLSAJCQkJCSAgICAgIGZyYW1lX3Vud2luZF9jYWxsZXJfaWQgKGZyYW1lKSwK LSAJCQkJCSAgICAgIGJwX3VudGlsKTsKLSAgICAgICBtYWtlX2NsZWFudXBfZGVsZXRlX2JyZWFr cG9pbnQgKGJyZWFrcG9pbnQyKTsKLSsKLSsgICAgICBzZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0 aHJlYWQpOwotKyAgICAgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZnJhbWVfdW53aW5kX2NhbGxl cl9pZCAoZnJhbWUpOwotKyAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtw b2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKLSAgICAgfQotIAotICAgcHJvY2VlZCAoLTEsIFRBUkdF VF9TSUdOQUxfREVGQVVMVCwgMCk7Ci1AQCAtODQzNyw2ICs4NjE0LDcgQEAgdW50aWxfYnJlYWtf Y29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHksIGludCBhbnl3aGVyZSkKLSAKLSAgICAg ICBhcmdzLT5icmVha3BvaW50ID0gYnJlYWtwb2ludDsKLSAgICAgICBhcmdzLT5icmVha3BvaW50 MiA9IGJyZWFrcG9pbnQyOwotKyAgICAgIGFyZ3MtPnRocmVhZF9udW0gPSB0aHJlYWQ7Ci0gCi0g ICAgICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKLSAgICAgICBhZGRfY29udGludWF0 aW9uIChpbmZlcmlvcl90aHJlYWQgKCksCi1AQCAtOTU2NCwxMiArOTc0MiwyMiBAQCBkZWxldGVf YnJlYWtwb2ludCAoc3RydWN0IGJyZWFrcG9pbnQgKmJwdCkKK0BAIC05NzEyLDEyICs5ODIwLDIy IEBAIGRlbGV0ZV9icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQogIAogICAgLyog QXQgbGVhc3QgYXZvaWQgdGhpcyBzdGFsZSByZWZlcmVuY2UgdW50aWwgdGhlIHJlZmVyZW5jZSBj b3VudGluZyBvZgogICAgICAgYnJlYWtwb2ludHMgZ2V0cyByZXNvbHZlZC4gICovCkBAIC0xMDE2 LDIzICs2NTcsNyBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0NAogICAgICB9CiAgCiAg ICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9kZWxldGVkIChicHQtPm51bWJlcik7Ci1AQCAt OTY1OCw2ICs5ODQ2LDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5 KQotIAkgICAgJiYgYi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50Ci0gCSAgICAmJiBiLT50eXBl ICE9IGJwX2xvbmdqbXBfbWFzdGVyCi0gCSAgICAmJiBiLT50eXBlICE9IGJwX3N0ZF90ZXJtaW5h dGVfbWFzdGVyCi0rCSAgICAmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKLSAJICAg ICYmIGItPm51bWJlciA+PSAwKQotIAkgIHsKLSAJICAgIGJyZWFrc190b19kZWxldGUgPSAxOwot QEAgLTk2NzksNiArOTg2OCw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9t X3R0eSkKLSAJCSYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAotIAkJJiYgYi0+dHlwZSAh PSBicF9sb25nam1wX21hc3RlcgotIAkJJiYgYi0+dHlwZSAhPSBicF9zdGRfdGVybWluYXRlX21h c3RlcgotKwkJJiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25fbWFzdGVyCi0gCQkmJiBiLT5udW1i ZXIgPj0gMCkKLSAJICAgICAgZGVsZXRlX2JyZWFrcG9pbnQgKGIpOwotIAkgIH0KLUBAIC05ODg3 LDYgKzEwMDc3LDkgQEAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRpb25zIChzdHJ1Y3QgYnJlYWtw b2ludCAqYiwKK0BAIC0xMDA0OSw2ICsxMDE2Nyw5IEBAIHVwZGF0ZV9icmVha3BvaW50X2xvY2F0 aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgICAgIHJldHVybjsKICAKICAgIGItPmxvYyA9 IE5VTEw7CkBAIC0xMDQyLDcgKzY2Nyw3IEBAIGluZGV4IDZhNjg2NGMuLjVkZjMzNmQgMTAwNjQ0 CiAgCiAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQogICAgICB7Ci1AQCAtOTkx MywxMSArMTAxMDYsNyBAQCB1cGRhdGVfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHN0cnVjdCBicmVh a3BvaW50ICpiLAorQEAgLTEwMDc1LDExICsxMDE5Niw3IEBAIHVwZGF0ZV9icmVha3BvaW50X2xv Y2F0aW9ucyAoc3RydWN0IGJyZWFrcG9pbnQgKmIsCiAgCSAgICB9CiAgCX0KICAKQEAgLTEwNTUs NyArNjgwLDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAJYi0+c291cmNlX2Zp bGUgPSB4c3RyZHVwIChzYWxzLnNhbHNbaV0uc3ltdGFiLT5maWxlbmFtZSk7CiAgCiAgICAgICAg aWYgKGItPmxpbmVfbnVtYmVyID09IDApCi1AQCAtOTk5OSw2ICsxMDE4OCw3IEBAIGJyZWFrcG9p bnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKK0BAIC0xMDE2MSw2ICsxMDI3OCw3IEBAIGJyZWFr cG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF90cmFjZXBvaW50Ogog ICAgICBjYXNlIGJwX2Zhc3RfdHJhY2Vwb2ludDoKICAgICAgY2FzZSBicF9zdGF0aWNfdHJhY2Vw b2ludDoKQEAgLTEwNjMsMzQgKzY4OCwxNSBAQCBpbmRleCA2YTY4NjRjLi41ZGYzMzZkIDEwMDY0 NAogICAgICAgIC8qIERvIG5vdCBhdHRlbXB0IHRvIHJlLXNldCBicmVha3BvaW50cyBkaXNhYmxl ZCBkdXJpbmcgc3RhcnR1cC4gICovCiAgICAgICAgaWYgKGItPmVuYWJsZV9zdGF0ZSA9PSBicF9z dGFydHVwX2Rpc2FibGVkKQogIAlyZXR1cm4gMDsKLUBAIC0xMDEzOSw2ICsxMDMyOSw3IEBAIGJy ZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9vdmVybGF5X2V2 ZW50OgotICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgotICAgICBjYXNlIGJwX3N0ZF90ZXJt aW5hdGVfbWFzdGVyOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9tYXN0ZXI6Ci0gICAgICAgZGVs ZXRlX2JyZWFrcG9pbnQgKGIpOwotICAgICAgIGJyZWFrOwotIAotQEAgLTEwMTYyLDcgKzEwMzUz LDEwIEBAIGJyZWFrcG9pbnRfcmVfc2V0X29uZSAodm9pZCAqYmludCkKLSAgICAgY2FzZSBicF9z dGVwX3Jlc3VtZToKK0BAIC0xMDMyNSw2ICsxMDQ0Myw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0X29u ZSAodm9pZCAqYmludCkKICAgICAgY2FzZSBicF9sb25nam1wOgogICAgICBjYXNlIGJwX2xvbmdq bXBfcmVzdW1lOgotKyAgICBjYXNlIGJwX2V4Y2VwdGlvbjoKLSsgICAgY2FzZSBicF9leGNlcHRp b25fcmVzdW1lOgogICAgICBjYXNlIGJwX2ppdF9ldmVudDoKICsgICAgY2FzZSBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXJfcmV0dXJuOgogICAgICAgIGJyZWFrOwogICAgICB9CiAgCi1AQCAtMTAyMDUs NiArMTAzOTksNyBAQCBicmVha3BvaW50X3JlX3NldCAodm9pZCkKLSAgIGNyZWF0ZV9sb25nam1w X21hc3Rlcl9icmVha3BvaW50ICgic2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX2xvbmdqbXBfbWFz dGVyX2JyZWFrcG9pbnQgKCJfc2lnbG9uZ2ptcCIpOwotICAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVf bWFzdGVyX2JyZWFrcG9pbnQgKCJzdGQ6OnRlcm1pbmF0ZSgpIik7Ci0rICBjcmVhdGVfZXhjZXB0 aW9uX21hc3Rlcl9icmVha3BvaW50ICgpOwotIH0KLSAMCi0gLyogUmVzZXQgdGhlIHRocmVhZCBu dW1iZXIgb2YgdGhpcyBicmVha3BvaW50OgotQEAgLTEwMzM0LDExICsxMDUyOSwyMCBAQCBtYXBf YnJlYWtwb2ludF9udW1iZXJzIChjaGFyICphcmdzLCB2b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3Qg YnJlYWtwb2ludCAqLAorQEAgLTEwNDk2LDExICsxMDYxNSwyNSBAQCBtYXBfYnJlYWtwb2ludF9u dW1iZXJzIChjaGFyICphcmdzLCB2b2lkICgqZnVuY3Rpb24pIChzdHJ1Y3QgYnJlYWtwb2ludCAq LAogIAkgIEFMTF9CUkVBS1BPSU5UU19TQUZFIChiLCB0bXApCiAgCSAgICBpZiAoYi0+bnVtYmVy ID09IG51bSkKICAJICAgICAgewpAQCAtMTEwOSwxMyArNzE1LDE4IEBAIGluZGV4IDZhNjg2NGMu LjVkZjMzNmQgMTAwNjQ0CiArCQkgICAgLyogRlVOQ1RJT04gY2FuIGJlIGFsc28gZGVsZXRlX2Jy ZWFrcG9pbnQuICAqLwogKwkJICAgIG5leHRfcmVsYXRlZF9iID0gcmVsYXRlZF9icmVha3BvaW50 LT5yZWxhdGVkX2JyZWFrcG9pbnQ7CiArCQkgICAgZnVuY3Rpb24gKHJlbGF0ZWRfYnJlYWtwb2lu dCwgZGF0YSk7CisrCisrCQkgICAgLyogRm9yIGRlbGV0ZV9icmVha3BvaW50IG9mIHRoZSBsYXN0 IGVudHJ5IG9mIHRoZSByaW5nIHdlCisrCQkgICAgICAgd2VyZSB0cmF2ZXJzaW5nIHdlIHdvdWxk IG5ldmVyIGdldCBiYWNrIHRvIEIuICAqLworKwkJICAgIGlmIChuZXh0X3JlbGF0ZWRfYiA9PSBy ZWxhdGVkX2JyZWFrcG9pbnQpCisrCQkgICAgICBicmVhazsKICsJCSAgICByZWxhdGVkX2JyZWFr cG9pbnQgPSBuZXh0X3JlbGF0ZWRfYjsKICsJCSAgfQogKwkJd2hpbGUgKHJlbGF0ZWRfYnJlYWtw b2ludCAhPSBiKTsKICAJCWJyZWFrOwogIAkgICAgICB9CiAgCSAgaWYgKG1hdGNoID09IDApCi1A QCAtMTE0MjgsNiArMTE2MzIsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCitAQCAtMTE2MDQsNiAr MTE3MzcsMjIgQEAgYWxsX3RyYWNlcG9pbnRzICgpCiAgICByZXR1cm4gdHBfdmVjOwogIH0KICAK QEAgLTExMzgsNyArNzQ5LDcgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICAMCiAg LyogVGhpcyBoZWxwIHN0cmluZyBpcyB1c2VkIGZvciB0aGUgYnJlYWssIGhicmVhaywgdGJyZWFr IGFuZCB0aGJyZWFrIGNvbW1hbmRzLgogICAgIEl0IGlzIGRlZmluZWQgYXMgYSBtYWNybyB0byBw cmV2ZW50IGR1cGxpY2F0aW9uLgotQEAgLTExNDk3LDYgKzExNzE3LDEwNyBAQCBzYXZlX2NvbW1h bmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQorQEAgLTExNjczLDYgKzExODIyLDEwNyBAQCBz YXZlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQogICAgaGVscF9saXN0IChzYXZl X2NtZGxpc3QsICJzYXZlICIsIC0xLCBnZGJfc3Rkb3V0KTsKICB9CiAgCkBAIC0xMjQzLDQ0ICs4 NTQsMjAgQEAgaW5kZXggNmE2ODY0Yy4uNWRmMzM2ZCAxMDA2NDQKICsgIHVwZGF0ZV9icmVha3Bv aW50X2xvY2F0aW9ucyAoYiwgc2Fscyk7CiArfQogKwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9icmVh a3BvaW50ICh2b2lkKQotIHsKLUBAIC0xMjAyMiw0ICsxMjM0Myw1IEBAIGluZmVyaW9yIGluIGFs bC1zdG9wIG1vZGUsIGdkYiBiZWhhdmVzIGFzIGlmIGFsd2F5cy1pbnNlcnRlZCBtb2RlIGlzIG9m Zi4iKSwKKyBzdHJ1Y3QgYnJlYWtwb2ludCAqCisgaXRlcmF0ZV9vdmVyX2JyZWFrcG9pbnRzIChp bnQgKCpjYWxsYmFjaykgKHN0cnVjdCBicmVha3BvaW50ICosIHZvaWQgKiksCisgCQkJICB2b2lk ICpkYXRhKQorQEAgLTEyMjIyLDQgKzEyNDcyLDUgQEAgaW5mZXJpb3IgaW4gYWxsLXN0b3AgbW9k ZSwgZ2RiIGJlaGF2ZXMgYXMgaWYgYWx3YXlzLWluc2VydGVkIG1vZGUgaXMgb2ZmLiIpLAogICAg YXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9pbnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFj aF9hYm91dF90b19wcm9jZWVkIChicmVha3BvaW50X2Fib3V0X3RvX3Byb2NlZWQpOwogKyAgb2Jz ZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAoYnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwogIH0K IGRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5oIGIvZ2RiL2JyZWFrcG9pbnQuaAotaW5kZXgg NmY1ZDA1MC4uZDBjM2NjMSAxMDA2NDQKK2luZGV4IGUzNGMyZDMuLjRhYWRkNTcgMTAwNjQ0CiAt LS0gYS9nZGIvYnJlYWtwb2ludC5oCiArKysgYi9nZGIvYnJlYWtwb2ludC5oCi1AQCAtNTYsNiAr NTYsMTMgQEAgZW51bSBicHR5cGUKLSAgICAgYnBfbG9uZ2ptcCwJCQkvKiBzZWNyZXQgYnJlYWtw b2ludCB0byBmaW5kIGxvbmdqbXAoKSAqLwotICAgICBicF9sb25nam1wX3Jlc3VtZSwJCS8qIHNl Y3JldCBicmVha3BvaW50IHRvIGVzY2FwZSBsb25nam1wKCkgKi8KLSAKLSsgICAgLyogQW4gaW50 ZXJuYWwgYnJlYWtwb2ludCB0aGF0IGlzIGluc3RhbGxlZCBvbiB0aGUgdW53aW5kZXIncwotKyAg ICAgICBkZWJ1ZyBob29rLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uLAotKyAgICAvKiBBbiBpbnRl cm5hbCBicmVha3BvaW50IHRoYXQgaXMgc2V0IGF0IHRoZSBwb2ludCB3aGVyZSBhbgotKyAgICAg ICBleGNlcHRpb24gd2lsbCBsYW5kLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uX3Jlc3VtZSwKLSsK LSAgICAgLyogVXNlZCBieSB3YWl0X2Zvcl9pbmZlcmlvciBmb3Igc3RlcHBpbmcgb3ZlciBzdWJy b3V0aW5lIGNhbGxzLCBmb3IKLSAgICAgICAgc3RlcHBpbmcgb3ZlciBzaWduYWwgaGFuZGxlcnMs IGFuZCBmb3Igc2tpcHBpbmcgcHJvbG9ndWVzLiAgKi8KLSAgICAgYnBfc3RlcF9yZXN1bWUsCi1A QCAtMTI1LDYgKzEzMiw5IEBAIGVudW0gYnB0eXBlCi0gICAgIC8qIE1hc3RlciBjb3BpZXMgb2Yg c3RkOjp0ZXJtaW5hdGUgYnJlYWtwb2ludHMuICAqLwotICAgICBicF9zdGRfdGVybWluYXRlX21h c3RlciwKLSAKLSsgICAgLyogTGlrZSBicF9sb25nam1wX21hc3RlciwgYnV0IGZvciBleGNlcHRp b25zLiAgKi8KLSsgICAgYnBfZXhjZXB0aW9uX21hc3RlciwKLSsKLSAgICAgYnBfY2F0Y2hwb2lu dCwKLSAKLSAgICAgYnBfdHJhY2Vwb2ludCwKLUBAIC0xMzMsNiArMTQzLDkgQEAgZW51bSBicHR5 cGUKK0BAIC0xMzgsNiArMTM4LDkgQEAgZW51bSBicHR5cGUKICAKICAgICAgLyogRXZlbnQgZm9y IEpJVCBjb21waWxlZCBjb2RlIGdlbmVyYXRpb24gb3IgZGVsZXRpb24uICAqLwogICAgICBicF9q aXRfZXZlbnQsCkBAIC0xMjkwLDQxNCArODc3LDMwIEBAIGluZGV4IDZmNWQwNTAuLmQwYzNjYzEg MTAwNjQ0CiAgICB9OwogIAogIC8qIFN0YXRlcyBvZiBlbmFibGVtZW50IG9mIGJyZWFrcG9pbnQu ICovCi1AQCAtNjUzLDYgKzY2NiwxMCBAQCBzdHJ1Y3QgYnBzdGF0X3doYXQKLSAgICAgICAgY29u dGludWluZyBmcm9tIGEgY2FsbCBkdW1teSB3aXRob3V0IHBvcHBpbmcgdGhlIGZyYW1lIGlzIG5v dCBhCi0gICAgICAgIHVzZWZ1bCBvbmUpLiAgKi8KLSAgICAgZW51bSBzdG9wX3N0YWNrX2tpbmQg Y2FsbF9kdW1teTsKLSsKLSsgICAgLyogVXNlZCBmb3IgQlBTVEFUX1dIQVRfU0VUX0xPTkdKTVBf UkVTVU1FLiAgVHJ1ZSBpZiB3ZSBhcmUKLSsgICAgICAgaGFuZGxpbmcgYSBsb25nam1wLCBmYWxz ZSBpZiB3ZSBhcmUgaGFuZGxpbmcgYW4gZXhjZXB0aW9uLiAgKi8KLSsgICAgaW50IGlzX2xvbmdq bXA7Ci0gICB9OwotIAotIC8qIFRoZSBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGZvciBwcmludF9i cHN0YXQsIHByaW50X2l0X25vcm1hbCwKIGRpZmYgLS1naXQgYS9nZGIvYy10eXBlcHJpbnQuYyBi L2dkYi9jLXR5cGVwcmludC5jCi1pbmRleCA5MjZhZTJmLi5hNTliOTY1IDEwMDY0NAoraW5kZXgg MDRmODEyNy4uMmUyOWViMiAxMDA2NDQKIC0tLSBhL2dkYi9jLXR5cGVwcmludC5jCiArKysgYi9n ZGIvYy10eXBlcHJpbnQuYwotQEAgLTU4NSw3ICs1ODUsMTMgQEAgY190eXBlX3ByaW50X3ZhcnNw ZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAJ ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIpOwotIAotICAgICAgIGZwcmludGZfZmlsdGVy ZWQgKHN0cmVhbSwgIlsiKTsKLS0gICAgICBpZiAoVFlQRV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSA+IDAKLSsgICAgICBpZiAoVFlQRV9SQU5HRV9EQVRBIChUWVBFX0lOREVYX1RZ UEUgKHR5cGUpKS0+aGlnaC5raW5kCi0rCSAgIT0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVCkK LSsJewotKwkgIC8qIE5vIF8oKSAtIHByaW50ZWQgc291cmNlcyBzaG91bGQgbm90IGJlIGxvY2Fs ZSBkZXBlbmRlbnQuICAqLwotKwkgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgInZhcmlhYmxl Iik7Ci0rCX0KLSsgICAgICBlbHNlIGlmIChUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAo dHlwZSkpID4gMAotIAkmJiAhVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9JU19VTkRFRklORUQgKHR5 cGUpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsCi0gCQkJICAoVFlQRV9MRU5H VEggKHR5cGUpCi1kaWZmIC0tZ2l0IGEvZ2RiL2NvbmZpZy5pbiBiL2dkYi9jb25maWcuaW4KLWlu ZGV4IDFmYzQ1N2QuLmY0Yzg0NmEgMTAwNjQ0Ci0tLS0gYS9nZGIvY29uZmlnLmluCi0rKysgYi9n ZGIvY29uZmlnLmluCi1AQCAtNTAsMTEgKzUwLDEwIEBACi0gICAgbGFuZ3VhZ2UgaXMgcmVxdWVz dGVkLiAqLwotICN1bmRlZiBFTkFCTEVfTkxTCi0gCi0tLyogbG9vayBmb3IgZ2xvYmFsIHNlcGFy YXRlIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoIFtEQVRBRElSL2dkYl0gKi8KLSsvKiBHbG9iYWwg ZGlyZWN0b3J5IGZvciBHREIgZGF0YSBmaWxlcy4gKi8KLSAjdW5kZWYgR0RCX0RBVEFESVIKLSAK LS0vKiBEZWZpbmUgaWYgdGhlIGdkYi1kYXRhZGlyIGRpcmVjdG9yeSBzaG91bGQgYmUgcmVsb2Nh dGVkIHdoZW4gR0RCIGlzIG1vdmVkLgotLSAgICovCi0rLyogRGVmaW5lIGlmIEdEQiBkYXRhZGly IHNob3VsZCBiZSByZWxvY2F0ZWQgd2hlbiBHREIgaXMgbW92ZWQuICovCi0gI3VuZGVmIEdEQl9E QVRBRElSX1JFTE9DQVRBQkxFCi0gCi0gLyogRGVmaW5lIHRvIGJlIGEgc3RyaW5nIG5hbWluZyB0 aGUgZGVmYXVsdCBob3N0IGNoYXJhY3RlciBzZXQuICovCi1AQCAtNzY5LDYgKzc2OCw5IEBACi0g ICAgJ3B0cmRpZmZfdCcuICovCi0gI3VuZGVmIFBUUkRJRkZfVF9TVUZGSVgKLSAKLSsvKiBEZWZp bmUgdG8gaW5zdGFsbCBwYXRoIGZvciBQeXRob24gc291cmNlcyAqLwotKyN1bmRlZiBQWVRIT05E SVIKLSsKLSAvKiBEZWZpbmUgaWYgdGhlIHB5dGhvbiBkaXJlY3Rvcnkgc2hvdWxkIGJlIHJlbG9j YXRlZCB3aGVuIEdEQiBpcyBtb3ZlZC4gKi8KLSAjdW5kZWYgUFlUSE9OX1BBVEhfUkVMT0NBVEFC TEUKLSAKLWRpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlIGIvZ2RiL2NvbmZpZ3VyZQotaW5kZXgg MDQxZmZjMS4uODI0M2FiYiAxMDA3NTUKLS0tLSBhL2dkYi9jb25maWd1cmUKLSsrKyBiL2dkYi9j b25maWd1cmUKLUBAIC02NzksNiArNjc5LDggQEAgUkVQT1JUX0JVR1NfVE8KLSBQS0dWRVJTSU9O Ci0gVEFSR0VUX09CUwotIHN1YmRpcnMKLStweXRob25kaXIKLStHREJfREFUQURJUl9QQVRICi0g R0RCX0RBVEFESVIKLSBERUJVR0RJUgotIGFtX19mYXN0ZGVwQ0NfRkFMU0UKLUBAIC05NDUsNiAr OTQ3LDcgQEAgZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKLSB3aXRoX3NlcGFyYXRlX2RlYnVn X2RpcgotIHdpdGhfZ2RiX2RhdGFkaXIKLSB3aXRoX3JlbG9jYXRlZF9zb3VyY2VzCi0rd2l0aF9w eXRob25kaXIKLSBlbmFibGVfdGFyZ2V0cwotIGVuYWJsZV82NF9iaXRfYmZkCi0gZW5hYmxlX2dk YmNsaQotQEAgLTE2NDYsNiArMTY0OSwxMCBAQCBPcHRpb25hbCBQYWNrYWdlczoKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KLSAgIC0td2l0aC1yZWxvY2F0ZWQtc291 cmNlcz1QQVRICi0gICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHJlbG9j YXRlIHRoaXMgcGF0aCBmb3Igc291cmNlIGZpbGVzCi0rICAtLXdpdGgtZ2RiLWRhdGFkaXIgICAg ICBsb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGF0YSBmaWxlcyBpbiB0aGlzIHBhdGgKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgIFtEQVRBRElSL2dkYl0KLSsgIC0td2l0aC1weXRob25kaXIg ICAgICAgIGluc3RhbGwgUHl0aG9uIGRhdGEgZmlsZXMgaW4gdGhpcyBwYXRoCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICBbREFUQURJUi9nZGIvcHl0aG9uXQotICAgLS13aXRoLWxpYnVud2lu ZCAgICAgICAgdXNlIGxpYnVud2luZCBmcmFtZSB1bndpbmRpbmcgc3VwcG9ydAotICAgLS13aXRo LWN1cnNlcyAgICAgICAgICAgdXNlIHRoZSBjdXJzZXMgbGlicmFyeSBpbnN0ZWFkIG9mIHRoZSB0 ZXJtY2FwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5Ci1AQCAtNzg3OCw2ICs3 ODg1LDczIEBAIF9BQ0VPRgotIGZpCi0gCi0gCi0rIyBHREIncyBkYXRhZGlyIHJlbG9jYXRpb24K LSsKLStnZGJkYXRhZGlyPSR7ZGF0YWRpcn0vZ2RiCi0rCi0rCi0rIyBDaGVjayB3aGV0aGVyIC0t d2l0aC1nZGItZGF0YWRpciB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2dkYl9kYXRhZGly K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfZ2RiX2RhdGFkaXI7IGdkYmRh dGFkaXI9IiR7d2l0aHZhbH0iCi0rZmkKLSsKLSsKLSsKLSsgIHRlc3QgIngkcHJlZml4IiA9IHhO T05FICYmIHByZWZpeD0iJGFjX2RlZmF1bHRfcHJlZml4IgotKyAgdGVzdCAieCRleGVjX3ByZWZp eCIgPSB4Tk9ORSAmJiBleGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotKyAgYWNfZGVmaW5lX2Rpcj1g ZXZhbCBlY2hvICRnZGJkYXRhZGlyYAotKyAgYWNfZGVmaW5lX2Rpcj1gZXZhbCBlY2hvICRhY19k ZWZpbmVfZGlyYAotKwotK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSsjZGVmaW5lIEdEQl9E QVRBRElSICIkYWNfZGVmaW5lX2RpciIKLStfQUNFT0YKLSsKLSsKLSsKLStpZiB0ZXN0ICJ4JGV4 ZWNfcHJlZml4IiA9IHhOT05FIHx8IHRlc3QgIngkZXhlY19wcmVmaXgiID0gJ3gke3ByZWZpeH0n OyB0aGVuCi0rICBpZiB0ZXN0ICJ4JHByZWZpeCIgPSB4Tk9ORTsgdGhlbgotKyAgICB0ZXN0X3By ZWZpeD0vdXNyL2xvY2FsCi0rICBlbHNlCi0rICAgIHRlc3RfcHJlZml4PSRwcmVmaXgKLSsgIGZp Ci0rZWxzZQotKyAgdGVzdF9wcmVmaXg9JGV4ZWNfcHJlZml4Ci0rZmkKLSsKLStjYXNlICR7Z2Ri ZGF0YWRpcn0gaW4KLSsgICIke3Rlc3RfcHJlZml4fSJ8IiR7dGVzdF9wcmVmaXh9LyIqfFwKLSsg ICcke2V4ZWNfcHJlZml4fSd8JyR7ZXhlY19wcmVmaXh9LycqKQotKwotKyRhc19lY2hvICIjZGVm aW5lIEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFIDEiID4+Y29uZmRlZnMuaAotKwotKyAgOzsKLStl c2FjCi0rR0RCX0RBVEFESVJfUEFUSD0ke2dkYmRhdGFkaXJ9Ci0rCi0rCi0rCi0rIyBDaGVjayB3 aGV0aGVyIC0td2l0aC1weXRob25kaXIgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9weXRo b25kaXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9weXRob25kaXI7IHB5 dGhvbmRpcj0iJHt3aXRodmFsfSIKLStlbHNlCi0rICBweXRob25kaXI9bm8KLStmaQotKwotKwot KyMgSWYgdGhlIHVzZXIgcGFzc2VkIGluIGEgcGF0aCwgZGVmaW5lIGl0LiAgT3RoZXJ3aXNlLCBj b21wdXRlIGl0IGF0Ci0rIyBydW50aW1lIGJhc2VkIG9uIHRoZSBwb3NzaWJseS1yZWxvY2F0YWJs ZSBkYXRhZGlyLgotK2lmIHRlc3QgIiRweXRob25kaXIiID0gIm5vIjsgdGhlbgotKyAgcHl0aG9u ZGlyPSckKEdEQl9EQVRBRElSX1BBVEgpL3B5dGhvbicKLStlbHNlCi0rCi0rY2F0ID4+Y29uZmRl ZnMuaCA8PF9BQ0VPRgotKyNkZWZpbmUgUFlUSE9ORElSICIkcHl0aG9uZGlyIgotK19BQ0VPRgot KwotK2ZpCi0rCi0rCi0rCi0gCi0gCi0gc3ViZGlycz0iJHN1YmRpcnMgZG9jIHRlc3RzdWl0ZSIK LUBAIC0xMDkxOSw2ICsxMDk5Myw3IEBAICRhc19lY2hvICIjZGVmaW5lIEhBVkVfUFlUSE9OIDEi ID4+Y29uZmRlZnMuaAotICAgQ09ORklHX0RFUFM9IiRDT05GSUdfREVQUyBcJChTVUJESVJfUFlU SE9OX0RFUFMpIgotICAgQ09ORklHX1NSQ1M9IiRDT05GSUdfU1JDUyBcJChTVUJESVJfUFlUSE9O X1NSQ1MpIgotICAgQ09ORklHX0lOU1RBTEw9IiRDT05GSUdfSU5TVEFMTCBpbnN0YWxsLXB5dGhv biIKLSsgIENPTkZJR19VTklOU1RBTEw9IiRDT05GSUdfVU5JTlNUQUxMIHVuaW5zdGFsbC1weXRo b24iCi0gICBFTkFCTEVfQ0ZMQUdTPSIkRU5BQkxFX0NGTEFHUyBcJChTVUJESVJfUFlUSE9OX0NG TEFHUykiCi0gCi0gICAjIEZsYWdzIG5lZWRlZCB0byBjb21waWxlIFB5dGhvbiBjb2RlICh0YWtl biBmcm9tIHB5dGhvbi1jb25maWcgLS1jZmxhZ3MpLgotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1 cmUuYWMgYi9nZGIvY29uZmlndXJlLmFjCi1pbmRleCBiNjljM2I2Li40ZTg5NTU4IDEwMDY0NAot LS0tIGEvZ2RiL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2RiL2NvbmZpZ3VyZS5hYwotQEAgLTEwOCw2 ICsxMDgsNTEgQEAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1yZWxvY2F0ZWQtc291cmNlcz1QQVRI XSwgW2F1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXQKLSAgICAgICAgICAgICAgIFtSZWxv Y2F0ZWQgZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMuIF0pCi0gXSkKK0BAIC01NzksNyArNTc5 LDEzIEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0sCisgCSAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiKSIp OwogIAotKyMgR0RCJ3MgZGF0YWRpciByZWxvY2F0aW9uCi0rCi0rZ2RiZGF0YWRpcj0ke2RhdGFk aXJ9L2dkYgotKwotK0FDX0FSR19XSVRIKFtnZGItZGF0YWRpcl0sCi0rICBbQVNfSEVMUF9TVFJJ TkcoWy0td2l0aC1nZGItZGF0YWRpcl0sCi0rICAgICAgICAgICAgICAgICAgW2xvb2sgZm9yIGds b2JhbCBzZXBhcmF0ZSBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJUi9nZGJdXSldLCBb Z2RiZGF0YWRpcj0iJHt3aXRodmFsfSJdKQotKwotK0FDX0RFRklORV9ESVIoR0RCX0RBVEFESVIs IGdkYmRhdGFkaXIsCi0rICAgICAgICAgICAgICBbR2xvYmFsIGRpcmVjdG9yeSBmb3IgR0RCIGRh dGEgZmlsZXMuIF0pCi0rCi0raWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSB4Tk9ORSB8fCB0ZXN0 ICJ4JGV4ZWNfcHJlZml4IiA9ICd4JHtwcmVmaXh9JzsgdGhlbgotKyAgaWYgdGVzdCAieCRwcmVm aXgiID0geE5PTkU7IHRoZW4KLSsgICAgdGVzdF9wcmVmaXg9L3Vzci9sb2NhbAotKyAgZWxzZQot KyAgICB0ZXN0X3ByZWZpeD0kcHJlZml4Ci0rICBmaQotK2Vsc2UKLSsgIHRlc3RfcHJlZml4PSRl eGVjX3ByZWZpeAotK2ZpCi0rCi0rY2FzZSAke2dkYmRhdGFkaXJ9IGluCi0rICAiJHt0ZXN0X3By ZWZpeH0ifCIke3Rlc3RfcHJlZml4fS8iKnxcCi0rICAnJHtleGVjX3ByZWZpeH0nfCcke2V4ZWNf cHJlZml4fS8nKikKLSsgICAgQUNfREVGSU5FKEdEQl9EQVRBRElSX1JFTE9DQVRBQkxFLCAxLCBb RGVmaW5lIGlmIEdEQiBkYXRhZGlyIHNob3VsZCBiZSByZWxvY2F0ZWQgd2hlbiBHREIgaXMgbW92 ZWQuXSkKLSsgIDs7Ci0rZXNhYwotK0dEQl9EQVRBRElSX1BBVEg9JHtnZGJkYXRhZGlyfQotK0FD X1NVQlNUKEdEQl9EQVRBRElSX1BBVEgpCi0rCi0rQUNfQVJHX1dJVEgoW3B5dGhvbmRpcl0sCi0r ICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1weXRob25kaXJdLAotKyAgICAgICAgICAgICAgICAg IFtpbnN0YWxsIFB5dGhvbiBkYXRhIGZpbGVzIGluIHRoaXMgcGF0aCBbREFUQURJUi9nZGIvcHl0 aG9uXV0pXSwgW3B5dGhvbmRpcj0iJHt3aXRodmFsfSJdLCBbcHl0aG9uZGlyPW5vXSkKLSsKLSsj IElmIHRoZSB1c2VyIHBhc3NlZCBpbiBhIHBhdGgsIGRlZmluZSBpdC4gIE90aGVyd2lzZSwgY29t cHV0ZSBpdCBhdAotKyMgcnVudGltZSBiYXNlZCBvbiB0aGUgcG9zc2libHktcmVsb2NhdGFibGUg ZGF0YWRpci4KLStpZiB0ZXN0ICIkcHl0aG9uZGlyIiA9ICJubyI7IHRoZW4KLSsgIHB5dGhvbmRp cj0nJChHREJfREFUQURJUl9QQVRIKS9weXRob24nCi0rZWxzZQotKyAgQUNfREVGSU5FX1VOUVVP VEVEKFBZVEhPTkRJUiwgIiRweXRob25kaXIiLAotKyAgICAgIFtEZWZpbmUgdG8gaW5zdGFsbCBw YXRoIGZvciBQeXRob24gc291cmNlc10pCi0rZmkKLStBQ19TVUJTVChweXRob25kaXIpCi0rCi0r Ci0gQUNfQ09ORklHX1NVQkRJUlMoZG9jIHRlc3RzdWl0ZSkKLSAKLSAjIENoZWNrIHdoZXRoZXIg dG8gc3VwcG9ydCBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLUBAIC04MzMsNiAr ODc4LDcgQEAgaWYgdGVzdCAiJHtoYXZlX2xpYnB5dGhvbn0iICE9IG5vOyB0aGVuCi0gICBDT05G SUdfREVQUz0iJENPTkZJR19ERVBTIFwkKFNVQkRJUl9QWVRIT05fREVQUykiCi0gICBDT05GSUdf U1JDUz0iJENPTkZJR19TUkNTIFwkKFNVQkRJUl9QWVRIT05fU1JDUykiCi0gICBDT05GSUdfSU5T VEFMTD0iJENPTkZJR19JTlNUQUxMIGluc3RhbGwtcHl0aG9uIgotKyAgQ09ORklHX1VOSU5TVEFM TD0iJENPTkZJR19VTklOU1RBTEwgdW5pbnN0YWxsLXB5dGhvbiIKLSAgIEVOQUJMRV9DRkxBR1M9 IiRFTkFCTEVfQ0ZMQUdTIFwkKFNVQkRJUl9QWVRIT05fQ0ZMQUdTKSIKLSAKLSAgICMgRmxhZ3Mg bmVlZGVkIHRvIGNvbXBpbGUgUHl0aG9uIGNvZGUgKHRha2VuIGZyb20gcHl0aG9uLWNvbmZpZyAt LWNmbGFncykuCi1kaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dkYi9kb2MvZ2Ri LnRleGluZm8KLWluZGV4IDY1ZDQ4OTkuLjk2NzY3YjAgMTAwNjQ0Ci0tLS0gYS9nZGIvZG9jL2dk Yi50ZXhpbmZvCi0rKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCi1AQCAtMTE2Miw2ICsxMTYyLDE2 IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgotIFJ1biB1c2luZyBAdmFye2RldmljZX0gZm9yIHlv dXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCi0gQGMgRklYTUU6IGtpbmdk b24gdGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRlLgotIAotK0BpdGVt IC1QCi0rQGNpbmRleCBAY29kZXstUH0KLStAaXRlbXggLS1weXRob24KLStAY2luZGV4IEBjb2Rl ey0tcHl0aG9ufQotK0NoYW5nZSBpbnRlcnByZXRhdGlvbiBvZiBjb21tYW5kIGxpbmUgc28gdGhh dCB0aGUgYXJndW1lbnQgaW1tZWRpYXRlbHkKLStmb2xsb3dpbmcgdGhpcyBzd2l0Y2ggaXMgdGFr ZW4gdG8gYmUgdGhlIG5hbWUgb2YgYSBQeXRob24gc2NyaXB0IGZpbGUuCi0rVGhpcyBvcHRpb24g c3RvcHMgb3B0aW9uIHByb2Nlc3Npbmc7IHN1YnNlcXVlbnQgb3B0aW9ucyBhcmUgcGFzc2VkIHRv Ci0rUHl0aG9uIGFzIEBjb2Rle3N5cy5hcmd2fS4gIFRoaXMgb3B0aW9uIGlzIG9ubHkgYXZhaWxh YmxlIGlmIFB5dGhvbgotK3NjcmlwdGluZyBzdXBwb3J0IHdhcyBlbmFibGVkIHdoZW4gQHZhbHVl e0dEQk59IHdhcyBjb25maWd1cmVkLgotKwotIEBjIHJlc29sdmUgdGhlIHNpdHVhdGlvbiBvZiB0 aGVzZSBldmVudHVhbGx5Ci0gQGl0ZW0gLXR1aQotIEBjaW5kZXggQGNvZGV7LS10dWl9Ci1AQCAt MTQzMDgsNiArMTQzMTgsNyBAQCBwcm9ncmFtLiAgVG8gZGVidWcgYSBjb3JlIGR1bXAgb2YgYSBw cmV2aW91cyBydW4sIHlvdSBtdXN0IGFsc28gdGVsbAotIEBtZW51Ci0gKiBGaWxlczo6ICAgICAg ICAgICAgICAgICAgICAgICBDb21tYW5kcyB0byBzcGVjaWZ5IGZpbGVzCi0gKiBTZXBhcmF0ZSBE ZWJ1ZyBGaWxlczo6ICAgICAgICBEZWJ1Z2dpbmcgaW5mb3JtYXRpb24gaW4gc2VwYXJhdGUgZmls ZXMKLSsqIEluZGV4IEZpbGVzOjogICAgICAgICAgICAgICAgIEluZGV4IGZpbGVzIHNwZWVkIHVw IEdEQgotICogU3ltYm9sIEVycm9yczo6ICAgICAgICAgICAgICAgRXJyb3JzIHJlYWRpbmcgc3lt Ym9sIGZpbGVzCi0gKiBEYXRhIEZpbGVzOjogICAgICAgICAgICAgICAgICBHREIgZGF0YSBmaWxl cwotIEBlbmQgbWVudQotQEAgLTE1MTk3LDYgKzE1MjA4LDQ2IEBAIGdudV9kZWJ1Z2xpbmtfY3Jj MzIgKHVuc2lnbmVkIGxvbmcgY3JjLAotIFRoaXMgY29tcHV0YXRpb24gZG9lcyBub3QgYXBwbHkg dG8gdGhlIGBgYnVpbGQgSUQnJyBtZXRob2QuCi0gCi0gCi0rQG5vZGUgSW5kZXggRmlsZXMKLStA c2VjdGlvbiBJbmRleCBGaWxlcyBTcGVlZCBVcCBAdmFsdWV7R0RCTn0KLStAY2luZGV4IGluZGV4 IGZpbGVzCi0rQGNpbmRleCBAc2FtcHsuZ2RiX2luZGV4fSBzZWN0aW9uCi0rCi0rV2hlbiBAdmFs dWV7R0RCTn0gZmluZHMgYSBzeW1ib2wgZmlsZSwgaXQgc2NhbnMgdGhlIHN5bWJvbHMgaW4gdGhl Ci0rZmlsZSBpbiBvcmRlciB0byBjb25zdHJ1Y3QgYW4gaW50ZXJuYWwgc3ltYm9sIHRhYmxlLiAg VGhpcyBsZXRzIG1vc3QKLStAdmFsdWV7R0RCTn0gb3BlcmF0aW9ucyB3b3JrIHF1aWNrbHktLS1h dCB0aGUgY29zdCBvZiBhIGRlbGF5IGVhcmx5Ci0rb24uICBGb3IgbGFyZ2UgcHJvZ3JhbXMsIHRo aXMgZGVsYXkgY2FuIGJlIHF1aXRlIGxlbmd0aHksIHNvCi0rQHZhbHVle0dEQk59IHByb3ZpZGVz IGEgd2F5IHRvIGJ1aWxkIGFuIGluZGV4LCB3aGljaCBzcGVlZHMgdXAKLStzdGFydHVwLgotKwot K1RoZSBpbmRleCBpcyBzdG9yZWQgYXMgYSBzZWN0aW9uIGluIHRoZSBzeW1ib2wgZmlsZS4gIEB2 YWx1ZXtHREJOfSBjYW4KLSt3cml0ZSB0aGUgaW5kZXggdG8gYSBmaWxlLCB0aGVuIHlvdSBjYW4g cHV0IGl0IGludG8gdGhlIHN5bWJvbCBmaWxlCi0rdXNpbmcgQGNvbW1hbmR7b2JqY29weX0uCi0r Ci0rVG8gY3JlYXRlIGFuIGluZGV4IGZpbGUsIHVzZSB0aGUgQGNvZGV7c2F2ZSBnZGItaW5kZXh9 IGNvbW1hbmQ6Ci0rCi0rQHRhYmxlIEBjb2RlCi0rQGl0ZW0gc2F2ZSBnZGItaW5kZXggQHZhcntk aXJlY3Rvcnl9Ci0rQGtpbmRleCBzYXZlIGdkYi1pbmRleAotK0NyZWF0ZSBhbiBpbmRleCBmaWxl IGZvciBlYWNoIHN5bWJvbCBmaWxlIGN1cnJlbnRseSBrbm93biBieQotK0B2YWx1ZXtHREJOfS4g IEVhY2ggZmlsZSBpcyBuYW1lZCBhZnRlciBpdHMgY29ycmVzcG9uZGluZyBzeW1ib2wgZmlsZSwK LSt3aXRoIEBzYW1wey5nZGItaW5kZXh9IGFwcGVuZGVkLCBhbmQgaXMgd3JpdHRlbiBpbnRvIHRo ZSBnaXZlbgotK0B2YXJ7ZGlyZWN0b3J5fS4KLStAZW5kIHRhYmxlCi0rCi0rT25jZSB5b3UgaGF2 ZSBjcmVhdGVkIGFuIGluZGV4IGZpbGUgeW91IGNhbiBtZXJnZSBpdCBpbnRvIHlvdXIgc3ltYm9s Ci0rZmlsZSwgaGVyZSBuYW1lZCBAZmlsZXtzeW1maWxlfSwgdXNpbmcgQGNvbW1hbmR7b2JqY29w eX06Ci0rCi0rQHNtYWxsZXhhbXBsZQotKyQgb2JqY29weSAtLWFkZC1zZWN0aW9uIC5nZGJfaW5k ZXg9c3ltZmlsZS5nZGItaW5kZXggXAotKyAgICAtLXNldC1zZWN0aW9uLWZsYWdzIC5nZGJfaW5k ZXg9cmVhZG9ubHkgc3ltZmlsZSBzeW1maWxlCi0rQGVuZCBzbWFsbGV4YW1wbGUKLSsKLStUaGVy ZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRhdGlvbiBvbiBpbmRpY2VzLiAgVGhleSBvbmx5IHdv cmsgd2hlbgotK2ZvciBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24sIG5vdCBzdGFicy4gIEFu ZCwgdGhleSBkbyBub3QKLStjdXJyZW50bHkgd29yayBmb3IgcHJvZ3JhbXMgdXNpbmcgQWRhLgot KwotKwotIEBub2RlIFN5bWJvbCBFcnJvcnMKLSBAc2VjdGlvbiBFcnJvcnMgUmVhZGluZyBTeW1i b2wgRmlsZXMKLSAKLUBAIC0yMDM0OSw4ICsyMDQwMCw2IEBAIGNvbnRhaW5pbmcgQGNvZGV7ZW5k fS4gIEZvciBleGFtcGxlOgotIAotIEBzbWFsbGV4YW1wbGUKLSAoQHZhbHVle0dEQlB9KSBweXRo b24KLS1UeXBlIHB5dGhvbiBzY3JpcHQKLS1FbmQgd2l0aCBhIGxpbmUgc2F5aW5nIGp1c3QgImVu ZCIuCi0gPnByaW50IDIzCi0gPmVuZAotIDIzCi1AQCAtMjAzNjMsNiArMjA0MTIsMTQgQEAgaW4g YSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCB1c2luZyBAY29kZXttYWlu dCBzZXQKLSBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZSBkZWZhdWx0LCB0 aGVuIFB5dGhvbiBzdGFjawotIHByaW50aW5nIGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRo ZW4gUHl0aG9uIHN0YWNrIHByaW50aW5nIGlzCi0gZGlzYWJsZWQuCi0rCi0rQGtpbmRleCBtYWlu dCBzZXQgcHl0aG9uIGF1dG8tbG9hZAotK0BpdGVtIG1haW50IHNldCBweXRob24gYXV0by1sb2Fk Ci0rQnkgZGVmYXVsdCwgQHZhbHVle0dEQk59IHdpbGwgYXR0ZW1wdCB0byBhdXRvbWF0aWNhbGx5 IGxvYWQgUHl0aG9uCi0rY29kZSB3aGVuIGFuIG9iamVjdCBmaWxlIGlzIG9wZW5lZC4gIFRoaXMg Y2FuIGJlIGNvbnRyb2xsZWQgdXNpbmcKLStAY29kZXttYWludCBzZXQgcHl0aG9uIGF1dG8tbG9h ZH06IGlmIEBjb2Rle29ufSwgdGhlIGRlZmF1bHQsIHRoZW4KLStQeXRob24gYXV0by1sb2FkaW5n IGlzIGVuYWJsZWQ7IGlmIEBjb2Rle29mZn0sIHRoZW4gUHl0aG9uCi0rYXV0by1sb2FkaW5nIGlz IGRpc2FibGVkLgotIEBlbmQgdGFibGUKKyAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiWyIp OworLQlpZiAoZ2V0X2FycmF5X2JvdW5kcyAodHlwZSwgJmxvd19ib3VuZCwgJmhpZ2hfYm91bmQp KQorKwlpZiAoVFlQRV9SQU5HRV9EQVRBIChUWVBFX0lOREVYX1RZUEUgKHR5cGUpKS0+aGlnaC5r aW5kCisrCSAgICAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UKQorKwkgIHsKKysJICAgIC8q IE5vIF8oKSAtIHByaW50ZWQgc291cmNlcyBzaG91bGQgbm90IGJlIGxvY2FsZSBkZXBlbmRlbnQu ICAqLworKwkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAidmFyaWFibGUiKTsKKysJICB9 CisrCWVsc2UgaWYgKGdldF9hcnJheV9ib3VuZHMgKHR5cGUsICZsb3dfYm91bmQsICZoaWdoX2Jv dW5kKSkKKyAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIlZCIsIChpbnQpIChoaWdoX2Jv dW5kIC0gbG93X2JvdW5kICsgMSkpOworIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJdIik7 CiAgCi0gSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBleGVjdXRlIGEgUHl0aG9uIHNjcmlwdCBmcm9t IHRoZSBAdmFsdWV7R0RCTn0KLUBAIC0yMDM4NCw2ICsyMDQ0MSwxNCBAQCBhbmQgdGh1cyBpcyBh bHdheXMgYXZhaWxhYmxlLgotIEBjaW5kZXggcHl0aG9uIGFwaQotIEBjaW5kZXggcHJvZ3JhbW1p bmcgaW4gcHl0aG9uCi0gCi0rWW91IGNhbiBnZXQgcXVpY2sgb25saW5lIGhlbHAgZm9yIEB2YWx1 ZXtHREJOfSdzIFB5dGhvbiBBUEkgYnkgaXNzdWluZwotK3RoZSBjb21tYW5kIEB3e0BrYmR7cHl0 aG9uIGhlbHAgKGdkYil9fS4KLSsKLStGdW5jdGlvbnMgYW5kIG1ldGhvZHMgd2hpY2ggaGF2ZSB0 d28gb3IgbW9yZSBvcHRpb25hbCBhcmd1bWVudHMgYWxsb3cKLSt0aGVtIHRvIGJlIHNwZWNpZmll ZCB1c2luZyBrZXl3b3JkIHN5bnRheC4gIFRoaXMgYWxsb3dzIHBhc3Npbmcgc29tZQotK29wdGlv bmFsIGFyZ3VtZW50cyB3aGlsZSBza2lwcGluZyBvdGhlcnMuICBFeGFtcGxlOgotK0B3e0Bjb2Rl e2dkYi5zb21lX2Z1bmN0aW9uICgnZm9vJywgYmFyID0gMSwgYmF6ID0gMil9fS4KLSsKLSBAY2lu ZGV4IHB5dGhvbiBzdGRvdXQKLSBAY2luZGV4IHB5dGhvbiBwYWdpbmF0aW9uCi0gQXQgc3RhcnR1 cCwgQHZhbHVle0dEQk59IG92ZXJyaWRlcyBQeXRob24ncyBAY29kZXtzeXMuc3Rkb3V0fSBhbmQK LUBAIC0yMDM5NSw3ICsyMDQ2MCw3IEBAIHNpdHVhdGlvbiwgYSBQeXRob24gQGNvZGV7S2V5Ym9h cmRJbnRlcnJ1cHR9IGV4Y2VwdGlvbiBpcyB0aHJvd24uCi0gQG1lbnUKLSAqIEJhc2ljIFB5dGhv bjo6ICAgICAgICAgICAgICAgIEJhc2ljIFB5dGhvbiBGdW5jdGlvbnMuCi0gKiBFeGNlcHRpb24g SGFuZGxpbmc6OgotLSogVmFsdWVzIEZyb20gSW5mZXJpb3I6OgotKyogVmFsdWVzIEZyb20gSW5m ZXJpb3I6OglQeXRob24gcmVwcmVzZW50YXRpb24gb2YgdmFsdWVzLgotICogVHlwZXMgSW4gUHl0 aG9uOjogICAgICAgICAgICAgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mIHR5cGVzLgotICogUHJl dHR5IFByaW50aW5nIEFQSTo6ICAgICAgICAgUHJldHR5LXByaW50aW5nIHZhbHVlcy4KLSAqIFNl bGVjdGluZyBQcmV0dHktUHJpbnRlcnM6OiAgIEhvdyBHREIgY2hvb3NlcyBhIHByZXR0eS1wcmlu dGVyLgotQEAgLTIwNDU2LDYgKzIwNTIxLDEyIEBAIFJldHVybiBhIHNlcXVlbmNlIGhvbGRpbmcg YWxsIG9mIEB2YWx1ZXtHREJOfSdzIGJyZWFrcG9pbnRzLgotIEB4cmVme0JyZWFrcG9pbnRzIElu IFB5dGhvbn0sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotIEBlbmQgZGVmdW4KLSAKLStAZmluZGV4 IGdkYi5icmVha3BvaW50cwotK0BkZWZ1biBicmVha3BvaW50cwotK1JldHVybiBhIHNlcXVlbmNl IGhvbGRpbmcgYWxsIG9mIEB2YWx1ZXtHREJOfSdzIGJyZWFrcG9pbnRzLgotK0B4cmVme0JyZWFr cG9pbnRzIEluIFB5dGhvbn0sIGZvciBtb3JlIGluZm9ybWF0aW9uLgotK0BlbmQgZGVmdW4KLSsK LSBAZmluZGV4IGdkYi5wYXJhbWV0ZXIKLSBAZGVmdW4gcGFyYW1ldGVyIHBhcmFtZXRlcgotIFJl dHVybiB0aGUgdmFsdWUgb2YgYSBAdmFsdWV7R0RCTn0gcGFyYW1ldGVyLiAgQHZhcntwYXJhbWV0 ZXJ9IGlzIGEKLUBAIC0yMDQ3Miw2ICsyMDU0Myw3IEBAIGEgUHl0aG9uIHZhbHVlIG9mIHRoZSBh cHByb3ByaWF0ZSB0eXBlLCBhbmQgcmV0dXJuZWQuCi0gQGRlZnVuIGhpc3RvcnkgbnVtYmVyCi0g UmV0dXJuIGEgdmFsdWUgZnJvbSBAdmFsdWV7R0RCTn0ncyB2YWx1ZSBoaXN0b3J5IChAcHhyZWZ7 VmFsdWUKLSBIaXN0b3J5fSkuICBAdmFye251bWJlcn0gaW5kaWNhdGVzIHdoaWNoIGhpc3Rvcnkg ZWxlbWVudCB0byByZXR1cm4uCi0rCi0gSWYgQHZhcntudW1iZXJ9IGlzIG5lZ2F0aXZlLCB0aGVu IEB2YWx1ZXtHREJOfSB3aWxsIHRha2UgaXRzIGFic29sdXRlIHZhbHVlCi0gYW5kIGNvdW50IGJh Y2t3YXJkIGZyb20gdGhlIGxhc3QgZWxlbWVudCAoaS5lLiwgdGhlIG1vc3QgcmVjZW50IGVsZW1l bnQpIHRvCi0gZmluZCB0aGUgdmFsdWUgdG8gcmV0dXJuLiAgSWYgQHZhcntudW1iZXJ9IGlzIHpl cm8sIHRoZW4gQHZhbHVle0dEQk59IHdpbGwKLUBAIC0yMDQ5Niw2ICsyMDU2OCwyMSBAQCBjb21w dXRlIHZhbHVlcywgZm9yIGV4YW1wbGUsIGl0IGlzIHRoZSBvbmx5IHdheSB0byBnZXQgdGhlIHZh bHVlIG9mIGEKLSBjb252ZW5pZW5jZSB2YXJpYWJsZSAoQHB4cmVme0NvbnZlbmllbmNlIFZhcnN9 KSBhcyBhIEBjb2Rle2dkYi5WYWx1ZX0uCi0gQGVuZCBkZWZ1bgotIAotK0BmaW5kZXggZ2RiLnBv c3RfZXZlbnQKLStAZGVmdW4gcG9zdF9ldmVudCBldmVudAotK1B1dCBAdmFye2V2ZW50fSwgYSBj YWxsYWJsZSBvYmplY3QgdGFraW5nIG5vIGFyZ3VtZW50cywgaW50bwotK0B2YWx1ZXtHREJOfSdz IGludGVybmFsIGV2ZW50IHF1ZXVlLiAgVGhpcyBjYWxsYWJsZSB3aWxsIGJlIGludm9rZWQgYXQK LStzb21lIGxhdGVyIHBvaW50LCBkdXJpbmcgQHZhbHVle0dEQk59J3MgZXZlbnQgcHJvY2Vzc2lu Zy4gIEV2ZW50cwotK3Bvc3RlZCB1c2luZyBAY29kZXtwb3N0X2V2ZW50fSB3aWxsIGJlIHJ1biBp biB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleQotK3dlcmUgcG9zdGVkOyBob3dldmVyLCB0aGVyZSBp cyBubyB3YXkgdG8ga25vdyB3aGVuIHRoZXkgd2lsbCBiZQotK3Byb2Nlc3NlZCByZWxhdGl2ZSB0 byBvdGhlciBldmVudHMgaW5zaWRlIEB2YWx1ZXtHREJOfS4KLSsKLStAdmFsdWV7R0RCTn0gaXMg bm90IHRocmVhZC1zYWZlLiAgSWYgeW91ciBQeXRob24gcHJvZ3JhbSB1c2VzIG11bHRpcGxlCi0r dGhyZWFkcywgeW91IG11c3QgYmUgY2FyZWZ1bCB0byBvbmx5IGNhbGwgQHZhbHVle0dEQk59LXNw ZWNpZmljCi0rZnVuY3Rpb25zIGluIHRoZSBtYWluIEB2YWx1ZXtHREJOfSB0aHJlYWQuICBAY29k ZXtwb3N0X2V2ZW50fSBlbnN1cmVzCi0rdGhpcy4KLStAZW5kIGRlZnVuCi0rCi0gQGZpbmRleCBn ZGIud3JpdGUKLSBAZGVmdW4gd3JpdGUgc3RyaW5nCi0gUHJpbnQgYSBzdHJpbmcgdG8gQHZhbHVl e0dEQk59J3MgcGFnaW5hdGVkIHN0YW5kYXJkIG91dHB1dCBzdHJlYW0uCiBkaWZmIC0tZ2l0IGEv Z2RiL2RvYy9nZGJpbnQudGV4aW5mbyBiL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KLWluZGV4IDU0 MTg3ZGQuLjMyMGI1MDEgMTAwNjQ0CitpbmRleCA0YTExMmFhLi43YjZiZWQ0IDEwMDY0NAogLS0t IGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwot QEAgLTIxMDIsNiArMjEwMiwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUg c3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAorQEAgLTIxMDQsNiArMjEwNCwx OCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBoYW5kbGUgc3ltYm9scyBpbmNyZW1lbnRh bGx5LiAgRm9yIGluc3RhbmNlLAogIHdlIGNyZWF0ZSBAZGZue3BhcnRpYWwgc3ltYm9sIHRhYmxl c30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAgc3ltYm9scywgYW5kIG9ubHkgZXhwYW5k IHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4gbmVjZXNzYXJ5LgogIApAQCAtMTcxNiw3 ICs5MTksNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIFN5bWJv bCBSZWFkaW5nCiAgCiAgQGNpbmRleCBzeW1ib2wgcmVhZGluZwotQEAgLTIxOTQsNiArMjIwNiw3 IEBAIHN5bXRhYi4gIFVwb24gcmV0dXJuLCBAY29kZXtwc3QtPnJlYWRpbn0gc2hvdWxkIGhhdmUg YmVlbiBzZXQgdG8gMSwgYW5kCitAQCAtMjE5Niw2ICsyMjA4LDcgQEAgc3ltdGFiLiAgVXBvbiBy ZXR1cm4sIEBjb2Rle3BzdC0+cmVhZGlufSBzaG91bGQgaGF2ZSBiZWVuIHNldCB0byAxLCBhbmQK ICB6ZXJvIGlmIHRoZXJlIHdlcmUgbm8gc3ltYm9scyBpbiB0aGF0IHBhcnQgb2YgdGhlIHN5bWJv bCBmaWxlLgogIEBlbmQgdGFibGUKICAKQEAgLTE3MjQsNyArOTI3LDcgQEAgaW5kZXggNTQxODdk ZC4uMzIwYjUwMSAxMDA2NDQKICBAc2VjdGlvbiBQYXJ0aWFsIFN5bWJvbCBUYWJsZXMKICAKICBA dmFsdWV7R0RCTn0gaGFzIHRocmVlIHR5cGVzIG9mIHN5bWJvbCB0YWJsZXM6Ci1AQCAtMjI5NSw2 ICsyMzA4LDcgQEAgYW5kIHBhcnRpYWwgc3ltYm9sIHRhYmxlcyBiZWhpbmQgYSBzZXQgb2YgZnVu Y3Rpb24gcG9pbnRlcnMga25vd24gYXMKK0BAIC0yMjk3LDYgKzIzMTAsNyBAQCBhbmQgcGFydGlh bCBzeW1ib2wgdGFibGVzIGJlaGluZCBhIHNldCBvZiBmdW5jdGlvbiBwb2ludGVycyBrbm93biBh cwogIHRoZSBAZGZue3F1aWNrIHN5bWJvbCBmdW5jdGlvbnN9LiAgVGhlc2UgYXJlIGRvY3VtZW50 ZWQgaW4KICBAZmlsZXtzeW1maWxlLmh9LgogIApAQCAtMTczMiw3ICs5MzUsNyBAQCBpbmRleCA1 NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIFR5cGVzCiAgCiAgQHVubnVtYmVyZWRz dWJzZWMgRnVuZGFtZW50YWwgVHlwZXMgKGUuZy4sIEBjb2Rle0ZUX1ZPSUR9LCBAY29kZXtGVF9C T09MRUFOfSkuCi1AQCAtMjMxNyw2ICsyMzMxLDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtU WVBFX0NPREVfKn0gdHlwZSwgYW5kIGFyZSBkaXN0aW5ndWlzaGVkIGJ5CitAQCAtMjMxOSw2ICsy MzMzLDcgQEAgdHlwZXMgbWFwIHRvIG9uZSBAY29kZXtUWVBFX0NPREVfKn0gdHlwZSwgYW5kIGFy ZSBkaXN0aW5ndWlzaGVkIGJ5CiAgb3RoZXIgbWVtYmVycyBvZiB0aGUgdHlwZSBzdHJ1Y3QsIHN1 Y2ggYXMgd2hldGhlciB0aGUgdHlwZSBpcyBzaWduZWQKICBvciB1bnNpZ25lZCwgYW5kIGhvdyBt YW55IGJpdHMgaXQgdXNlcy4KICAKQEAgLTE3NDAsNyArOTQzLDcgQEAgaW5kZXggNTQxODdkZC4u MzIwYjUwMSAxMDA2NDQKICBAdW5udW1iZXJlZHN1YnNlYyBCdWlsdGluIFR5cGVzIChlLmcuLCBA Y29kZXtidWlsdGluX3R5cGVfdm9pZH0sIEBjb2Rle2J1aWx0aW5fdHlwZV9jaGFyfSkuCiAgCiAg VGhlc2UgYXJlIGluc3RhbmNlcyBvZiB0eXBlIHN0cnVjdHMgdGhhdCByb3VnaGx5IGNvcnJlc3Bv bmQgdG8KLUBAIC0yMzMxLDYgKzIzNDYsNyBAQCBvbmx5IG9uZSBpbnN0YW5jZSBleGlzdHMsIHdo aWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMgYXMgbWFueQorQEAgLTIzMzMsNiArMjM0OCw3IEBA IG9ubHkgb25lIGluc3RhbmNlIGV4aXN0cywgd2hpbGUgQGZpbGV7Yy1sYW5nLmN9IGJ1aWxkcyBh cyBtYW55CiAgQGNvZGV7VFlQRV9DT0RFX0lOVH0gdHlwZXMgYXMgbmVlZGVkLCB3aXRoIGVhY2gg b25lIGFzc29jaWF0ZWQgd2l0aAogIHNvbWUgcGFydGljdWxhciBvYmpmaWxlLgogIApAQCAtMTc0 OCw3ICs5NTEsNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIE9i amVjdCBGaWxlIEZvcm1hdHMKICBAY2luZGV4IG9iamVjdCBmaWxlIGZvcm1hdHMKICAKLUBAIC0y NDE2LDYgKzI0MzIsNyBAQCBTT00sIHdoaWNoIGlzIGEgY3Jvc3MtbGFuZ3VhZ2UgQUJJKS4KK0BA IC0yNDE4LDYgKzI0MzQsNyBAQCBTT00sIHdoaWNoIGlzIGEgY3Jvc3MtbGFuZ3VhZ2UgQUJJKS4K ICAKICBUaGUgU09NIHJlYWRlciBpcyBpbiBAZmlsZXtzb21yZWFkLmN9LgogIApAQCAtMTc1Niw3 ICs5NTksNyBAQCBpbmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIERlYnVn Z2luZyBGaWxlIEZvcm1hdHMKICAKICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIGNoYXJhY3Rlcmlz dGljcyBvZiBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gdGhhdAotQEAgLTI0ODcsNiArMjUwNCw3IEBA IERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgorQEAgLTI0ODksNiAr MjUwNiw3IEBAIERXQVJGIDMgaXMgYW4gaW1wcm92ZWQgdmVyc2lvbiBvZiBEV0FSRiAyLgogIEBj aW5kZXggU09NIGRlYnVnZ2luZyBpbmZvCiAgTGlrZSBDT0ZGLCB0aGUgU09NIGRlZmluaXRpb24g aW5jbHVkZXMgZGVidWdnaW5nIGluZm9ybWF0aW9uLgogIApAQCAtMTc2NCw3ICs5NjcsNyBAQCBp bmRleCA1NDE4N2RkLi4zMjBiNTAxIDEwMDY0NAogIEBzZWN0aW9uIEFkZGluZyBhIE5ldyBTeW1i b2wgUmVhZGVyIHRvIEB2YWx1ZXtHREJOfQogIAogIEBjaW5kZXggYWRkaW5nIGRlYnVnZ2luZyBp bmZvIHJlYWRlcgotQEAgLTI1MDksNiArMjUyNyw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxl bWVudGVkIGJ5IG9uZSBvYmplY3QgZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAorQEAgLTI1MTEs NiArMjUyOSw3IEBAIHdpbGwgb25seSBldmVyIGJlIGltcGxlbWVudGVkIGJ5IG9uZSBvYmplY3Qg ZmlsZSBmb3JtYXQgbWF5IGJlIGNhbGxlZAogIGRpcmVjdGx5LiAgVGhpcyBpbnRlcmZhY2Ugc2hv dWxkIGJlIGRlc2NyaWJlZCBpbiBhIGZpbGUKICBAZmlsZXtiZmQvbGliQHZhcnt4eXp9Lmh9LCB3 aGljaCBpcyBpbmNsdWRlZCBieSBAdmFsdWV7R0RCTn0uCiAgCkBAIC0xNzcyLDcgKzk3NSw3IEBA IGluZGV4IDU0MTg3ZGQuLjMyMGI1MDEgMTAwNjQ0CiAgQHNlY3Rpb24gTWVtb3J5IE1hbmFnZW1l bnQgZm9yIFN5bWJvbCBGaWxlcwogIAogIE1vc3QgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGxv YWRlZCBzeW1ib2wgZmlsZSBpcyBzdG9yZWQgb24KLUBAIC0yNTIwLDEwICsyNTM5LDQ1IEBAIHJl bGVhc2VkIHdoZW4gdGhlIG9iamZpbGUgaXMgdW5sb2FkZWQgb3IgcmVsb2FkZWQuICBUaGVyZWZv cmUgb25lCitAQCAtMjUyMiwxMCArMjU0MSw0NSBAQCByZWxlYXNlZCB3aGVuIHRoZSBvYmpmaWxl IGlzIHVubG9hZGVkIG9yIHJlbG9hZGVkLiAgVGhlcmVmb3JlIG9uZQogIG9iamZpbGUgbXVzdCBu b3QgcmVmZXJlbmNlIHN5bWJvbCBvciB0eXBlIGRhdGEgZnJvbSBhbm90aGVyIG9iamZpbGU7CiAg dGhleSBjb3VsZCBiZSB1bmxvYWRlZCBhdCBkaWZmZXJlbnQgdGltZXMuCiAgCkBAIC0xODc4LDIz ICsxMDgxLDEwIEBAIGluZGV4IDYxYjhmMDAuLmQ5NGMwM2MgMTAwNjQ0CiAgICAvKiBUaGUgY3Vy cmVudCBkZXB0aCBvZiBkd2FyZiBleHByZXNzaW9uIHJlY3Vyc2lvbiwgdmlhIERXX09QX2NhbGwq LAogICAgICAgRFdfT1BfZmJyZWcsIERXX09QX3B1c2hfb2JqZWN0X2FkZHJlc3MsIGV0Yy4sIGFu ZCB0aGUgbWF4aW11bQogZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJs b2MuYwotaW5kZXggZjU5YmM0MC4uN2ZmMGVmOSAxMDA2NDQKK2luZGV4IGIyYWVjZjIuLmFmYzc5 MDcgMTAwNjQ0CiAtLS0gYS9nZGIvZHdhcmYybG9jLmMKICsrKyBiL2dkYi9kd2FyZjJsb2MuYwot QEAgLTQ4LDYgKzQ4LDEyIEBAIHN0YXRpYyB2b2lkCi0gZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEg KHN0cnVjdCBzeW1ib2wgKmZyYW1lZnVuYywgQ09SRV9BRERSIHBjLAotIAkJCSBjb25zdCBnZGJf Ynl0ZSAqKnN0YXJ0LCBzaXplX3QgKmxlbmd0aCk7Ci0gCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAq ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCQkJCSAgICAg ICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCi0rCQkJCQkgICAgICAgY29uc3QgZ2RiX2J5dGUg KmRhdGEsCi0rCQkJCQkgICAgICAgdW5zaWduZWQgc2hvcnQgc2l6ZSwKLSsJCQkJCSAgICAgc3Ry dWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KTsKLSsKLSAvKiBBIGhlbHBlciBmdW5jdGlv biBmb3IgZGVhbGluZyB3aXRoIGxvY2F0aW9uIGxpc3RzLiAgR2l2ZW4gYQotICAgIHN5bWJvbCBi YXRvbiAoQkFUT04pIGFuZCBhIHBjIHZhbHVlIChQQyksIGZpbmQgdGhlIGFwcHJvcHJpYXRlCi0g ICAgbG9jYXRpb24gZXhwcmVzc2lvbiwgc2V0ICpMT0NFWFBSX0xFTkdUSCwgYW5kIHJldHVybiBh IHBvaW50ZXIKLUBAIC0xMjcsNiArMTMzLDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KK0BA IC0xMjcsNiArMTI3LDkgQEAgc3RydWN0IGR3YXJmX2V4cHJfYmF0b24KICB7CiAgICBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWU7CiAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3U7 CkBAIC0xOTA0LDcgKzEwOTQsNyBAQCBpbmRleCBmNTliYzQwLi43ZmYwZWY5IDEwMDY0NAogIH07 CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9ucyBmb3IgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjLiAg Ki8KLUBAIC0xOTUsMjMgKzIwNCwzMyBAQCBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0 IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIgcGMsCitAQCAtMTk1LDIzICsxOTgsMzMgQEAg ZHdhcmZfZXhwcl9mcmFtZV9iYXNlXzEgKHN0cnVjdCBzeW1ib2wgKmZyYW1lZnVuYywgQ09SRV9B RERSIHBjLAogICAgICAgIHN5bWJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChmcmFtZWZ1 bmMpOwogICAgICAgICpzdGFydCA9IGZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoc3ltYmF0b24s IGxlbmd0aCwgcGMpOwogICAgICB9CkBAIC0xOTQ3LDcgKzExMzcsNyBAQCBpbmRleCBmNTliYzQw Li43ZmYwZWY5IDEwMDY0NAogIH0KICAKICAvKiBIZWxwZXIgZnVuY3Rpb24gZm9yIGR3YXJmMl9l dmFsdWF0ZV9sb2NfZGVzYy4gIENvbXB1dGVzIHRoZSBDRkEgZm9yCi1AQCAtMjYzLDYgKzI4Miwx NTggQEAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpj dHgsIHNpemVfdCBkaWVfb2Zmc2V0KQorQEAgLTI2Myw2ICsyNzYsMTU4IEBAIGR3YXJmX2V4cHJf ZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAqY3R4LCBzaXplX3QgZGllX29m ZnNldCkKICAgIHJldHVybiBwZXJfY3VfZHdhcmZfY2FsbCAoY3R4LCBkaWVfb2Zmc2V0LCBkZWJh dG9uLT5wZXJfY3UpOwogIH0KICAKQEAgLTIxMDYsNyArMTI5Niw3IEBAIGluZGV4IGY1OWJjNDAu LjdmZjBlZjkgMTAwNjQ0CiAgc3RydWN0IHBpZWNlX2Nsb3N1cmUKICB7CiAgICAvKiBSZWZlcmVu Y2UgY291bnQuICAqLwotQEAgLTg4NywxMCArMTA1OCw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC04 ODcsMTAgKzEwNTIsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgCQkJICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICpwZXJfY3UpCiAgewogICAgc3RydWN0IHZhbHVlICpyZXR2YWw7CkBAIC0yMTE4LDcg KzEzMDgsNyBAQCBpbmRleCBmNTliYzQwLi43ZmYwZWY5IDEwMDY0NAogIAogICAgaWYgKHNpemUg PT0gMCkKICAgICAgewotQEAgLTkwMCwyNCArMTA2OSw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2Nf ZGVzYyAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKK0BAIC05 MDAsMjQgKzEwNjMsOCBAQCBkd2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2MgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiAgICAgICAgcmV0dXJuIHJldHZhbDsKICAg ICAgfQogIApAQCAtMjE0NCw3ICsxMzM0LDcgQEAgaW5kZXggZjU5YmM0MC4uN2ZmMGVmOSAxMDA2 NDQKICAgIGlmIChjdHgtPm51bV9waWVjZXMgPiAwKQogICAgICB7CiAgICAgICAgc3RydWN0IHBp ZWNlX2Nsb3N1cmUgKmM7Ci1AQCAtOTUxLDYgKzExMDQsMTEgQEAgZHdhcmYyX2V2YWx1YXRlX2xv Y19kZXNjIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAorQEAg LTk1MSw2ICsxMDk4LDExIEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYyAoc3RydWN0IHR5cGUg KnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICAJICAgIENPUkVfQUREUiBhZGRyZXNz ID0gZHdhcmZfZXhwcl9mZXRjaF9hZGRyZXNzIChjdHgsIDApOwogIAkgICAgaW50IGluX3N0YWNr X21lbW9yeSA9IGR3YXJmX2V4cHJfZmV0Y2hfaW5fc3RhY2tfbWVtb3J5IChjdHgsIDApOwogIApA QCAtMjE1Niw3ICsxMzQ2LDcgQEAgaW5kZXggZjU5YmM0MC4uN2ZmMGVmOSAxMDA2NDQKICAJICAg IHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAJICAgIFZBTFVFX0xWQUwgKHJldHZh bCkgPSBsdmFsX21lbW9yeTsKICAJICAgIHNldF92YWx1ZV9sYXp5IChyZXR2YWwsIDEpOwotQEAg LTI1OTAsMTEgKzI3NDgsNTEgQEAgbG9jbGlzdF90cmFjZXBvaW50X3Zhcl9yZWYgKHN0cnVjdCBz eW1ib2wgKnN5bWJvbCwgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCitAQCAtMjU4NywxMSArMjcz OSw1MSBAQCBsb2NsaXN0X3RyYWNlcG9pbnRfdmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9s LCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAJCQkgZGxiYXRvbi0+cGVyX2N1KTsKICB9CiAg CkBAIC0yMjExLDEwICsxNDAxLDEwIEBAIGluZGV4IGY1OWJjNDAuLjdmZjBlZjkgMTAwNjQ0CiAr ICBtaXNzaW5nX3RyYWNlcG9pbnRfdmFyX3JlZgogK307CiBkaWZmIC0tZ2l0IGEvZ2RiL2R3YXJm MmxvYy5oIGIvZ2RiL2R3YXJmMmxvYy5oCi1pbmRleCA4MjZiYzQ1Li4xZTdkOGRjIDEwMDY0NAor aW5kZXggYTJjZmU3Zi4uZjJkMDdlZiAxMDA2NDQKIC0tLSBhL2dkYi9kd2FyZjJsb2MuaAogKysr IGIvZ2RiL2R3YXJmMmxvYy5oCi1AQCAtODYsNSArODYsMTQgQEAgc3RydWN0IGR3YXJmMl9sb2Ns aXN0X2JhdG9uCitAQCAtOTYsNSArOTYsMTQgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9u CiAgCiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2Nl eHByX2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2Fy ZjJfbG9jbGlzdF9mdW5jczsKQEAgLTIyMzAsMTQyICsxNDIwLDEwIEBAIGluZGV4IDgyNmJjNDUu LjFlN2Q4ZGMgMTAwNjQ0CiAgCiAgI2VuZGlmIC8qIGR3YXJmMmxvYy5oICovCiBkaWZmIC0tZ2l0 IGEvZ2RiL2R3YXJmMnJlYWQuYyBiL2dkYi9kd2FyZjJyZWFkLmMKLWluZGV4IDFlNzUyMzUuLmQ1 NGUyNjYgMTAwNjQ0CitpbmRleCA0MDRmYWY4Li5lMzcyYWZiIDEwMDY0NAogLS0tIGEvZ2RiL2R3 YXJmMnJlYWQuYwogKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTUxLDYgKzUxLDkgQEAKLSAj aW5jbHVkZSAidHlwZXByaW50LmgiCi0gI2luY2x1ZGUgImp2LWxhbmcuaCIKLSAjaW5jbHVkZSAi cHN5bXByaXYuaCIKLSsjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgotKyNpbmNsdWRlICJnZGJfc3Rh dC5oIgotKyNpbmNsdWRlICJjb21wbGV0ZXIuaCIKLSAKLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAj aW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEyOSw2ICsxMzIsMzMgQEAgc3RydWN0IGR3YXJm Ml9zZWN0aW9uX2luZm8KLSAgIGludCByZWFkaW47Ci0gfTsKLSAKLSsvKiBBbGwgb2Zmc2V0cyBp biB0aGUgaW5kZXggYXJlIG9mIHRoaXMgdHlwZS4gIEl0IG11c3QgYmUKLSsgICBhcmNoaXRlY3R1 cmUtaW5kZXBlbmRlbnQuICAqLwotK3R5cGVkZWYgdWludDMyX3Qgb2Zmc2V0X3R5cGU7Ci0rCi0r REVGX1ZFQ19JIChvZmZzZXRfdHlwZSk7Ci0rCi0rLyogQSBkZXNjcmlwdGlvbiBvZiB0aGUgbWFw cGVkIGluZGV4LiAgVGhlIGZpbGUgZm9ybWF0IGlzIGRlc2NyaWJlZCBpbgotKyAgIGEgY29tbWVu dCBieSB0aGUgY29kZSB0aGF0IHdyaXRlcyB0aGUgaW5kZXguICAqLwotK3N0cnVjdCBtYXBwZWRf aW5kZXgKLSt7Ci0rICAvKiBUaGUgdG90YWwgbGVuZ3RoIG9mIHRoZSBidWZmZXIuICAqLwotKyAg b2ZmX3QgdG90YWxfc2l6ZTsKLSsgIC8qIEEgcG9pbnRlciB0byB0aGUgYWRkcmVzcyB0YWJsZSBk YXRhLiAgKi8KLSsgIGNvbnN0IGdkYl9ieXRlICphZGRyZXNzX3RhYmxlOwotKyAgLyogU2l6ZSBv ZiB0aGUgYWRkcmVzcyB0YWJsZSBkYXRhIGluIGJ5dGVzLiAgKi8KLSsgIG9mZnNldF90eXBlIGFk ZHJlc3NfdGFibGVfc2l6ZTsKLSsgIC8qIFRoZSBoYXNoIHRhYmxlLiAgKi8KLSsgIGNvbnN0IG9m ZnNldF90eXBlICppbmRleF90YWJsZTsKLSsgIC8qIFNpemUgaW4gc2xvdHMsIGVhY2ggc2xvdCBp cyAyIG9mZnNldF90eXBlcy4gICovCi0rICBvZmZzZXRfdHlwZSBpbmRleF90YWJsZV9zbG90czsK LSsgIC8qIEEgcG9pbnRlciB0byB0aGUgY29uc3RhbnQgcG9vbC4gICovCi0rICBjb25zdCBjaGFy ICpjb25zdGFudF9wb29sOwotK307Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpkd2FyZjJfcGVyX2N1X2RhdGFfcHRyOwotK0RFRl9WRUNfUCAoZHdhcmYyX3Blcl9jdV9k YXRhX3B0cik7Ci0rCi0gc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZQotIHsKLSAgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvIGluZm87Ci1AQCAtMTQxLDYgKzE3MSw3IEBAIHN0cnVjdCBkd2Fy ZjJfcGVyX29iamZpbGUKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIHR5cGVzOwotICAg c3RydWN0IGR3YXJmMl9zZWN0aW9uX2luZm8gZnJhbWU7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyBlaF9mcmFtZTsKLSsgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvIGdkYl9pbmRl eDsKLSAKLSAgIC8qIEJhY2sgbGluay4gICovCi0gICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsK LUBAIC0xNjMsNiArMTk0LDEyIEBAIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUKLSAgIC8qIEEg ZmxhZyBpbmRpY2F0aW5nIHdldGhlciB0aGlzIG9iamZpbGUgaGFzIGEgc2VjdGlvbiBsb2FkZWQg YXQgYQotICAgICAgVk1BIG9mIDAuICAqLwotICAgaW50IGhhc19zZWN0aW9uX2F0X3plcm87Ci0r Ci0rICAvKiBUcnVlIGlmIHdlIGFyZSB1c2luZyB0aGUgbWFwcGVkIGluZGV4LiAgKi8KLSsgIHVu c2lnbmVkIGNoYXIgdXNpbmdfaW5kZXg7Ci0rCi0rICAvKiBUaGUgbWFwcGVkIGluZGV4LiAgKi8K LSsgIHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4X3RhYmxlOwotIH07Ci0gCi0gc3RhdGljIHN0 cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmR3YXJmMl9wZXJfb2JqZmlsZTsKLUBAIC0xODIsNiAr MjE5LDcgQEAgc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX29iamZpbGUgKmR3YXJmMl9wZXJfb2Jq ZmlsZTsKLSAjZGVmaW5lIFRZUEVTX1NFQ1RJT04gICAgImRlYnVnX3R5cGVzIgotICNkZWZpbmUg RlJBTUVfU0VDVElPTiAgICAiZGVidWdfZnJhbWUiCi0gI2RlZmluZSBFSF9GUkFNRV9TRUNUSU9O ICJlaF9mcmFtZSIKLSsjZGVmaW5lIEdEQl9JTkRFWF9TRUNUSU9OICJnZGJfaW5kZXgiCi0gCi0g LyogbG9jYWwgZGF0YSB0eXBlcyAqLwotIAotQEAgLTMwNyw2ICszNDUsMzIgQEAgc3RydWN0IGR3 YXJmMl9jdQotICAgdW5zaWduZWQgaW50IGhhc19uYW1lc3BhY2VfaW5mbyA6IDE7Ci0gfTsKLSAK LSsvKiBXaGVuIHVzaW5nIHRoZSBpbmRleCAoYW5kIHRodXMgbm90IHVzaW5nIHBzeW10YWJzKSwg ZWFjaCBDVSBoYXMgYW4KLSsgICBvYmplY3Qgb2YgdGhpcyB0eXBlLiAgVGhpcyBpcyB1c2VkIHRv IGhvbGQgaW5mb3JtYXRpb24gbmVlZGVkIGJ5Ci0rICAgdGhlIHZhcmlvdXMgInF1aWNrIiBtZXRo b2RzLiAgKi8KLStzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9xdWlja19kYXRhCi0rewotKyAgLyogVGhl IGxpbmUgdGFibGUuICBUaGlzIGNhbiBiZSBOVUxMIGlmIHRoZXJlIHdhcyBubyBsaW5lIHRhYmxl LiAgKi8KLSsgIHN0cnVjdCBsaW5lX2hlYWRlciAqbGluZXM7Ci0rCi0rICAvKiBUaGUgZmlsZSBu YW1lcyBmcm9tIHRoZSBsaW5lIHRhYmxlLiAgKi8KLSsgIGNvbnN0IGNoYXIgKipmaWxlX25hbWVz OwotKyAgLyogVGhlIGZpbGUgbmFtZXMgZnJvbSB0aGUgbGluZSB0YWJsZSBhZnRlciBiZWluZyBy dW4gdGhyb3VnaAotKyAgICAgZ2RiX3JlYWxwYXRoLiAgKi8KLSsgIGNvbnN0IGNoYXIgKipmdWxs X25hbWVzOwotKwotKyAgLyogVGhlIGNvcnJlc3BvbmRpbmcgc3ltYm9sIHRhYmxlLiAgVGhpcyBp cyBOVUxMIGlmIHN5bWJvbHMgZm9yIHRoaXMKLSsgICAgIENVIGhhdmUgbm90IHlldCBiZWVuIHJl YWQuICAqLwotKyAgc3RydWN0IHN5bXRhYiAqc3ltdGFiOwotKwotKyAgLyogQSB0ZW1wb3Jhcnkg bWFyayBiaXQgdXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIGFsbCBDVXMgaW4KLSsgICAgIGV4cGFu ZF9zeW10YWJzX21hdGNoaW5nLiAgKi8KLSsgIHVuc2lnbmVkIGludCBtYXJrIDogMTsKLSsKLSsg IC8qIFRydWUgaWYgd2UndmUgdHJpZWQgdG8gcmVhZCB0aGUgbGluZSB0YWJsZS4gICovCi0rICB1 bnNpZ25lZCBpbnQgcmVhZF9saW5lcyA6IDE7Ci0rfTsKLSsKLSAvKiBQZXJzaXN0ZW50IGRhdGEg aGVsZCBmb3IgYSBjb21waWxhdGlvbiB1bml0LCBldmVuIHdoZW4gbm90Ci0gICAgcHJvY2Vzc2lu ZyBpdC4gIFdlIHB1dCBhIHBvaW50ZXIgdG8gdGhpcyBzdHJ1Y3R1cmUgaW4gdGhlCi0gICAgcmVh ZF9zeW10YWJfcHJpdmF0ZSBmaWVsZCBvZiB0aGUgcHN5bXRhYi4gIElmIHdlIGVuY291bnRlcgot QEAgLTM0NywxMCArNDExLDIxIEBAIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEKLSAgICAgIGl0 LiAgKi8KLSAgIGh0YWJfdCB0eXBlX2hhc2g7Ci0gCi0tICAvKiBUaGUgcGFydGlhbCBzeW1ib2wg dGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcGlsYXRpb24gdW5pdCwKLS0gICAgIG9yIE5V TEwgZm9yIHBhcnRpYWwgdW5pdHMgKHdoaWNoIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0ZWQKLS0g ICAgIHN5bXRhYikuICAqLwotLSAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiOwotKyAg LyogVGhlIGNvcnJlc3BvbmRpbmcgb2JqZmlsZS4gICovCi0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZTsKLSsKLSsgIC8qIFdoZW4gdXNpbmcgcGFydGlhbCBzeW1ib2wgdGFibGVzLCB0aGUgJ3Bz eW10YWInIGZpZWxkIGlzIGFjdGl2ZS4KLSsgICAgIE90aGVyd2lzZSB0aGUgJ3F1aWNrJyBmaWVs ZCBpcyBhY3RpdmUuICAqLwotKyAgdW5pb24KLSsgIHsKLSsgICAgLyogVGhlIHBhcnRpYWwgc3lt Ym9sIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXBpbGF0aW9uIHVuaXQsCi0rICAgICAg IG9yIE5VTEwgZm9yIHBhcnRpYWwgdW5pdHMgKHdoaWNoIGRvIG5vdCBoYXZlIGFuIGFzc29jaWF0 ZWQKLSsgICAgICAgc3ltdGFiKS4gICovCi0rICAgIHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN5 bXRhYjsKLSsKLSsgICAgLyogRGF0YSBuZWVkZWQgYnkgdGhlICJxdWljayIgZnVuY3Rpb25zLiAg Ki8KLSsgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSAqcXVpY2s7Ci0rICB9IHY7 Ci0gfTsKLSAKLSAvKiBFbnRyeSBpbiB0aGUgc2lnbmF0dXJlZF90eXBlcyBoYXNoIHRhYmxlLiAg Ki8KLUBAIC0xMDgzLDYgKzExNTgsOSBAQCBzdGF0aWMgaW50IGF0dHJfZm9ybV9pc19zZWN0aW9u X29mZnNldCAoc3RydWN0IGF0dHJpYnV0ZSAqKTsKK0BAIC0xMjIxLDYgKzEyMjEsOSBAQCBzdGF0 aWMgaW50IGF0dHJfZm9ybV9pc19zZWN0aW9uX29mZnNldCAoc3RydWN0IGF0dHJpYnV0ZSAqKTsK ICAKICBzdGF0aWMgaW50IGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAq KTsKICAKQEAgLTIzNzUsNyArMTQzMyw3IEBAIGluZGV4IDFlNzUyMzUuLmQ1NGUyNjYgMTAwNjQ0 CiAgc3RhdGljIHZvaWQgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmli dXRlICphdHRyLAogIAkJCQkJIHN0cnVjdCBzeW1ib2wgKnN5bSwKICAJCQkJCSBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSk7Ci1AQCAtMTExMyw2ICsxMTkxLDkgQEAgc3RhdGljIHZvaWQgYWdlX2NhY2hl ZF9jb21wX3VuaXRzICh2b2lkKTsKK0BAIC0xMjUxLDYgKzEyNTQsOSBAQCBzdGF0aWMgdm9pZCBh Z2VfY2FjaGVkX2NvbXBfdW5pdHMgKHZvaWQpOwogIAogIHN0YXRpYyB2b2lkIGZyZWVfb25lX2Nh Y2hlZF9jb21wX3VuaXQgKHZvaWQgKik7CiAgCkBAIC0yMzg1LDc2NjkgKzE0NDMsMzUyOSBAQCBp bmRleCAxZTc1MjM1Li5kNTRlMjY2IDEwMDY0NAogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0X2Rp ZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICBzdHJ1Y3Qg ZHdhcmYyX2N1ICopOwogIAotQEAgLTExMzIsNiArMTIxMyw1NiBAQCBzdGF0aWMgdm9pZCBkd2Fy ZjJfY2xlYXJfbWFya3MgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKik7CitAQCAtMTI3NSw2 ICsxMjgxLDkgQEAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGVfYXRfb2Zmc2V0ICh1 bnNpZ25lZCBpbnQsCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICpnZXRfZGllX3R5cGUgKHN0cnVj dCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSk7CiAgCiArc3RhdGljIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbgogKyAg KHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKICsKLStzdGF0 aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAqZHVtbXkpOwotKwotK3N0YXRpYyB2 b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAot KwkJCSAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwotKwotK3N0YXRpYyB2b2lkIHByb2Nl c3NfcXVldWUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLSsKLStzdGF0aWMgdm9pZCBmaW5k X2ZpbGVfYW5kX2RpcmVjdG9yeSAoc3RydWN0IGRpZV9pbmZvICpkaWUsCi0rCQkJCSAgICAgc3Ry dWN0IGR3YXJmMl9jdSAqY3UsCi0rCQkJCSAgICAgY2hhciAqKm5hbWUsIGNoYXIgKipjb21wX2Rp cik7Ci0rCi0rc3RhdGljIGNoYXIgKmZpbGVfZnVsbF9uYW1lIChpbnQgZmlsZSwgc3RydWN0IGxp bmVfaGVhZGVyICpsaCwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKmNvbXBfZGlyKTsKLSsKLStzdGF0 aWMgZ2RiX2J5dGUgKnBhcnRpYWxfcmVhZF9jb21wX3VuaXRfaGVhZCAoc3RydWN0IGNvbXBfdW5p dF9oZWFkICpoZWFkZXIsCi0rCQkJCQkgICAgICBnZGJfYnl0ZSAqaW5mb19wdHIsCi0rCQkJCQkg ICAgICBnZGJfYnl0ZSAqYnVmZmVyLAotKwkJCQkJICAgICAgdW5zaWduZWQgaW50IGJ1ZmZlcl9z aXplLAotKwkJCQkJICAgICAgYmZkICphYmZkKTsKLSsKLStzdGF0aWMgdm9pZCBpbml0X2N1X2Rp ZV9yZWFkZXIgKHN0cnVjdCBkaWVfcmVhZGVyX3NwZWNzICpyZWFkZXIsCi0rCQkJCXN0cnVjdCBk d2FyZjJfY3UgKmN1KTsKKyBzdGF0aWMgdm9pZCBkd2FyZjJfcmVsZWFzZV9xdWV1ZSAodm9pZCAq ZHVtbXkpOworIAorIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9w ZXJfY3VfZGF0YSAqcGVyX2N1LAorQEAgLTcxMTIsNiArNzEyMSwyOSBAQCBwcm9jZXNzX2VudW1l cmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CisgICBuZXdfc3ltYm9sIChkaWUsIHRoaXNfdHlwZSwgY3UpOworIH0KKyAKKysvKiBDcmVhdGUg YSBuZXcgYXJyYXkgZGltZW5zaW9uIHJlZmVyZW5jaW5nIGl0cyB0YXJnZXQgdHlwZSBUWVBFLgog KwotKyNpZiBXT1JEU19CSUdFTkRJQU4KKysgICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5cyBhcmUg aW50ZXJuYWxseSByZXByZXNlbnRlZCBhcyBhIHN0YWNrIG9mCisrICAgc2luZ2xlZGltZW5zaW9u YWwgYXJyYXlzIGJlaW5nIHJlZmVyZW5jZWQgYnkgdGhlaXIgVFlQRV9UQVJHRVRfVFlQRS4gICov CiArCi0rLyogQ29udmVydCBWQUxVRSBiZXR3ZWVuIGJpZy0gYW5kIGxpdHRsZS1lbmRpYW4uICAq LwotK3N0YXRpYyBvZmZzZXRfdHlwZQotK2J5dGVfc3dhcCAob2Zmc2V0X3R5cGUgdmFsdWUpCisr c3RhdGljIHN0cnVjdCB0eXBlICoKKytjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCSAgICAgICBzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiArewotKyAgb2Zmc2V0X3R5 cGUgcmVzdWx0OwotKwotKyAgcmVzdWx0ID0gKHZhbHVlICYgMHhmZikgPDwgMjQ7Ci0rICByZXN1 bHQgfD0gKHZhbHVlICYgMHhmZjAwKSA8PCA4OwotKyAgcmVzdWx0IHw9ICh2YWx1ZSAmIDB4ZmYw MDAwKSA+PiA4OwotKyAgcmVzdWx0IHw9ICh2YWx1ZSAmIDB4ZmYwMDAwMDApID4+IDI0OwotKyAg cmV0dXJuIHJlc3VsdDsKLSt9CisrICB0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5 cGUsIHJhbmdlX3R5cGUpOwogKwotKyNkZWZpbmUgTUFZQkVfU1dBUChWKSAgYnl0ZV9zd2FwIChW KQorKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0ZXMgbmVlZCB0byBiZSBmZXRjaGVk IGJ5CisrICAgICBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgPG11bHRpX2Y3N19zdWJzY3JpcHQ+ J3MgY2FsbCBvZgorKyAgICAgdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIG9ubHkgZm9yIHRoZSBp bm5lcm1vc3QgYXJyYXkgdHlwZS4gICovCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGllLCB0 eXBlLCBjdSk7CiArCi0rI2Vsc2UKLSsjZGVmaW5lIE1BWUJFX1NXQVAoVikgKFYpCi0rI2VuZGlm IC8qIFdPUkRTX0JJR0VORElBTiAqLworKyAgLyogVGhlc2UgZ2VuZXJpYyB0eXBlIGF0dHJpYnV0 ZXMgYXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCisrICAgICB2YWxpZGl0eSB3 aGlsZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAqLworKyAgZmV0Y2hf ZGllX3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwgY3UpOwogKwotKy8qIFRoZSBzdWZmaXgg Zm9yIGFuIGluZGV4IGZpbGUuICAqLwotKyNkZWZpbmUgSU5ERVhfU1VGRklYICIuZ2RiLWluZGV4 IgorKyAgcmV0dXJuIHR5cGU7CisrfQogKwotIC8qIFRyeSB0byBsb2NhdGUgdGhlIHNlY3Rpb25z IHdlIG5lZWQgZm9yIERXQVJGIDIgZGVidWdnaW5nCi0gICAgaW5mb3JtYXRpb24gYW5kIHJldHVy biB0cnVlIGlmIHdlIGhhdmUgZW5vdWdoIHRvIGRvIHNvbWV0aGluZy4gICovCisgLyogRXh0cmFj dCBhbGwgaW5mb3JtYXRpb24gZnJvbSBhIERXX1RBR19hcnJheV90eXBlIERJRSBhbmQgcHV0IGl0 IGluCisgICAgdGhlIERJRSdzIHR5cGUgZmllbGQuICBGb3Igbm93LCB0aGlzIG9ubHkgaGFuZGxl cyBvbmUgZGltZW5zaW9uYWwKKyAgICBhcnJheXMuICAqLworQEAgLTcxMjUsNyArNzE1Nyw3IEBA IHJlYWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3Ug KmN1KQorICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90 eXBlOworICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CisgICBzdHJ1Y3QgYXR0 cmlidXRlICphdHRyOworLSAgaW50IG5kaW0gPSAwOworKyAgaW50IG5kaW0gPSAwLCBpOworICAg c3RydWN0IGNsZWFudXAgKmJhY2tfdG87CisgICBjaGFyICpuYW1lOwogIAotQEAgLTEyMzAsNiAr MTM2MSwxMSBAQCBkd2FyZjJfbG9jYXRlX3NlY3Rpb25zIChiZmQgKmFiZmQsIGFzZWN0aW9uICpz ZWN0cCwgdm9pZCAqaWdub3JlX3B0cikKLSAgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVz LmFzZWN0aW9uID0gc2VjdHA7Ci0gICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXpl ID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoc2Vj dGlvbl9pc19wIChzZWN0cC0+bmFtZSwgR0RCX0lOREVYX1NFQ1RJT04pKQotKyAgICB7Ci0rICAg ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24gPSBzZWN0cDsKLSsgICAg ICBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5zaXplID0gYmZkX2dldF9zZWN0aW9uX3Np emUgKHNlY3RwKTsKLSsgICAgfQorQEAgLTcxNzgsMTcgKzcyMTAsMTEgQEAgcmVhZF9hcnJheV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICB0eXBl ID0gZWxlbWVudF90eXBlOwogIAotICAgaWYgKChiZmRfZ2V0X3NlY3Rpb25fZmxhZ3MgKGFiZmQs IHNlY3RwKSAmIFNFQ19MT0FEKQotICAgICAgICYmIGJmZF9zZWN0aW9uX3ZtYSAoYWJmZCwgc2Vj dHApID09IDApCi1AQCAtMTM1Myw4NyArMTQ4OSw5NDAgQEAgZHdhcmYyX3JlYWRfc2VjdGlvbiAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICppbmZv KQotICAgaWYgKHBhZ2VzaXplID09IDApCi0gICAgIHBhZ2VzaXplID0gZ2V0cGFnZXNpemUgKCk7 CisgICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikK Ky0gICAgeworLSAgICAgIGludCBpID0gMDsKKy0KKy0gICAgICB3aGlsZSAoaSA8IG5kaW0pCist CXR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVMTCwgdHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7 CistICAgIH0KKy0gIGVsc2UKKy0gICAgeworLSAgICAgIHdoaWxlIChuZGltLS0gPiAwKQorLQl0 eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEwsIHR5cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsK Ky0gICAgfQorKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRpbTsgaSsrKQorKyAgICAgIHR5cGUgPSBj cmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwg Y3UpOworKyAgZWxzZSAvKiAocmVhZF9hcnJheV9vcmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jv d19tYWpvcikgKi8KKysgICAgZm9yIChpID0gbmRpbSAtIDE7IGkgPj0gMDsgaS0tKQorKyAgICAg IHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNb aV0sIGRpZSwgY3UpOwogIAotLSAgLyogT25seSB0cnkgdG8gbW1hcCBzZWN0aW9ucyB3aGljaCBh cmUgbGFyZ2UgZW5vdWdoOiB3ZSBkb24ndCB3YW50IHRvCi0tICAgICB3YXN0ZSBzcGFjZSBkdWUg dG8gZnJhZ21lbnRhdGlvbi4gIEFsc28sIG9ubHkgdHJ5IG1tYXAgZm9yIHNlY3Rpb25zCi0tICAg ICB3aXRob3V0IHJlbG9jYXRpb25zLiAgKi8KLSsgIC8qIE9ubHkgdHJ5IHRvIG1tYXAgc2VjdGlv bnMgd2hpY2ggYXJlIGxhcmdlIGVub3VnaDogd2UgZG9uJ3Qgd2FudCB0bwotKyAgICAgd2FzdGUg c3BhY2UgZHVlIHRvIGZyYWdtZW50YXRpb24uICBBbHNvLCBvbmx5IHRyeSBtbWFwIGZvciBzZWN0 aW9ucwotKyAgICAgd2l0aG91dCByZWxvY2F0aW9ucy4gICovCi0rCi0rICBpZiAoaW5mby0+c2l6 ZSA+IDQgKiBwYWdlc2l6ZSAmJiAoc2VjdHAtPmZsYWdzICYgU0VDX1JFTE9DKSA9PSAwKQotKyAg ICB7Ci0rICAgICAgb2ZmX3QgcGdfb2Zmc2V0ID0gc2VjdHAtPmZpbGVwb3MgJiB+KHBhZ2VzaXpl IC0gMSk7Ci0rICAgICAgc2l6ZV90IG1hcF9sZW5ndGggPSBpbmZvLT5zaXplICsgc2VjdHAtPmZp bGVwb3MgLSBwZ19vZmZzZXQ7Ci0rICAgICAgY2FkZHJfdCByZXRidWYgPSBiZmRfbW1hcCAoYWJm ZCwgMCwgbWFwX2xlbmd0aCwgUFJPVF9SRUFELAotKwkJCQkgTUFQX1BSSVZBVEUsIHBnX29mZnNl dCk7Ci0rCi0rICAgICAgaWYgKHJldGJ1ZiAhPSBNQVBfRkFJTEVEKQotKwl7Ci0rCSAgaW5mby0+ d2FzX21tYXBwZWQgPSAxOwotKwkgIGluZm8tPmJ1ZmZlciA9IHJldGJ1ZiArIChzZWN0cC0+Zmls ZXBvcyAmIChwYWdlc2l6ZSAtIDEpKSA7Ci0rI2lmIEhBVkVfUE9TSVhfTUFEVklTRQotKwkgIHBv c2l4X21hZHZpc2UgKHJldGJ1ZiwgbWFwX2xlbmd0aCwgUE9TSVhfTUFEVl9XSUxMTkVFRCk7Ci0r I2VuZGlmCi0rCSAgcmV0dXJuOwotKwl9Ci0rICAgIH0KLSsjZW5kaWYKKyAgIC8qIFVuZGVyc3Rh bmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9uCisg ICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBhdHRy aWJ1dGUgdG8gdGhlCitAQCAtNzY4MSwyOSArNzcwNywxMTQgQEAgcmVhZF90YWdfc3RyaW5nX3R5 cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKKyAgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CisgICBzdHJ1 Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOworICAg c3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIHVuc2lnbmVkIGludCBsZW5ndGg7CisrICBpbnQg bGVuZ3RoOwogKwotKyAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90LWNv bXByZXNzZWQgc2VjdGlvbi4gICovCi0rICBpbmZvLT5idWZmZXIgPSBidWYKLSsgICAgPSBvYnN0 YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKKysgIGlu ZGV4X3R5cGUgPSBvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5idWlsdGluX2ludDsKKysgIC8qIFJB TkdFX1RZUEUgaXMgYWxsb2NhdGVkIGZyb20gT0JKRklMRSwgbm90IGFzIGEgcGVybWFuZW50IHR5 cGUuICAqLworKyAgcmFuZ2VfdHlwZSA9IGFsbG9jX3R5cGUgKG9iamZpbGUpOworKyAgLyogTE9X X0JPVU5EIGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLworKyAgcmFu Z2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChyYW5nZV90eXBlLCBpbmRleF90eXBlLCAwLCAt MSk7CiArCi0rICAvKiBXaGVuIGRlYnVnZ2luZyAubyBmaWxlcywgd2UgbWF5IG5lZWQgdG8gYXBw bHkgcmVsb2NhdGlvbnM7IHNlZQotKyAgICAgaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1w YXRjaGVzLzIwMDItMDQvbXNnMDAxMzYuaHRtbCAuCi0rICAgICBXZSBuZXZlciBjb21wcmVzcyBz ZWN0aW9ucyBpbiAubyBmaWxlcywgc28gd2Ugb25seSBuZWVkIHRvCi0rICAgICB0cnkgdGhpcyB3 aGVuIHRoZSBzZWN0aW9uIGlzIG5vdCBjb21wcmVzc2VkLiAgKi8KLSsgIHJldGJ1ZiA9IHN5bWZp bGVfcmVsb2NhdGVfZGVidWdfc2VjdGlvbiAob2JqZmlsZSwgc2VjdHAsIGJ1Zik7Ci0rICBpZiAo cmV0YnVmICE9IE5VTEwpCisrICAvKiBDL0MrKyBzaG91bGQgcHJvYmFibHkgaGF2ZSB0aGUgbG93 IGJvdW5kIDAgYnV0IEMvQysrIGRvZXMgbm90IHVzZQorKyAgICAgRFdfVEFHX3N0cmluZ190eXBl LiAgKi8KKysgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IDE7CisgCisgICBhdHRyID0g ZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3UpOworLSAgaWYgKGF0dHIp CistICAgIHsKKy0gICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7CisrICBpZiAoYXR0ciAm JiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogKyAgICB7Ci0rICAgICAgaW5mby0+YnVmZmVy ID0gcmV0YnVmOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgaWYgKGJmZF9zZWVrIChh YmZkLCBzZWN0cC0+ZmlsZXBvcywgU0VFS19TRVQpICE9IDAKLSsgICAgICB8fCBiZmRfYnJlYWQg KGJ1ZiwgaW5mby0+c2l6ZSwgYWJmZCkgIT0gaW5mby0+c2l6ZSkKLSsgICAgZXJyb3IgKF8oIkR3 YXJmIEVycm9yOiBDYW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAnJXMnIiksCi0rCSAgIGJmZF9n ZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSt9Ci0rCi0rLyogRmlsbCBpbiBTRUNUUCwgQlVGUCBhbmQg U0laRVAgd2l0aCBzZWN0aW9uIGluZm8sIGdpdmVuIE9CSkZJTEUgYW5kCi0rICAgU0VDVElPTl9O QU1FLiAqLwotKwotK3ZvaWQKLStkd2FyZjJfZ2V0X3NlY3Rpb25faW5mbyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgYXNlY3Rpb24gKipzZWN0cCwgZ2RiX2J5dGUgKipidWZwLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICBiZmRfc2l6ZV90eXBlICpzaXplcCkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYy X3Blcl9vYmpmaWxlICpkYXRhCi0rICAgID0gb2JqZmlsZV9kYXRhIChvYmpmaWxlLCBkd2FyZjJf b2JqZmlsZV9kYXRhX2tleSk7Ci0rICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqaW5mbzsK LSsKLSsgIC8qIFdlIG1heSBzZWUgYW4gb2JqZmlsZSB3aXRob3V0IGFueSBEV0FSRiwgaW4gd2hp Y2ggY2FzZSB3ZSBqdXN0Ci0rICAgICByZXR1cm4gbm90aGluZy4gICovCi0rICBpZiAoZGF0YSA9 PSBOVUxMKQotKyAgICB7Ci0rICAgICAgKnNlY3RwID0gTlVMTDsKLSsgICAgICAqYnVmcCA9IE5V TEw7Ci0rICAgICAgKnNpemVwID0gMDsKLSsgICAgICByZXR1cm47Ci0rICAgIH0KLSsgIGlmIChz ZWN0aW9uX2lzX3AgKHNlY3Rpb25fbmFtZSwgRUhfRlJBTUVfU0VDVElPTikpCi0rICAgIGluZm8g PSAmZGF0YS0+ZWhfZnJhbWU7Ci0rICBlbHNlIGlmIChzZWN0aW9uX2lzX3AgKHNlY3Rpb25fbmFt ZSwgRlJBTUVfU0VDVElPTikpCi0rICAgIGluZm8gPSAmZGF0YS0+ZnJhbWU7Ci0rICBlbHNlCi0r ICAgIGdkYl9hc3NlcnQgKDApOwotKwotKyAgaWYgKGluZm8tPmFzZWN0aW9uICE9IE5VTEwgJiYg aW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1ZmZlciA9PSBOVUxMKQotKyAgICAvKiBXZSBoYXZl bid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHlldC4gIERvIGl0IG5vdy4gICovCi0rICAgIGR3YXJm Ml9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGluZm8pOworKyAgICAgIC8qIFNlY3VyaXR5IGNoZWNr IGZvciBhIHNpemUgb3ZlcmZsb3cuICAqLworKyAgICAgIGlmIChEV19CTE9DSyAoYXR0ciktPnNp emUgKyAyIDwgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKQorKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdl X3R5cGUpID0gMTsKKysgICAgICAvKiBFeHRlbmQgdGhlIERXQVJGIGJsb2NrIGJ5IGEgbmV3IERX X09QX2RlcmVmL0RXX09QX2RlcmVmX3NpemUKKysJIGluc3RydWN0aW9uIGFzIERXX0FUX3N0cmlu Z19sZW5ndGggc3BlY2lmaWVzIHRoZSBsZW5ndGggbG9jYXRpb24sIG5vdAorKwkgaXRzIHZhbHVl LiAgKi8KKysgICAgICBlbHNlCisrCXsKKysJICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24g Kmxlbmd0aF9iYXRvbiA9IE5VTEw7CisrCSAgc3RydWN0IGR3YXJmX2Jsb2NrICpibGsgPSBEV19C TE9DSyAoYXR0cik7CiArCi0rICAqc2VjdHAgPSBpbmZvLT5hc2VjdGlvbjsKLSsgICpidWZwID0g aW5mby0+YnVmZmVyOwotKyAgKnNpemVwID0gaW5mby0+c2l6ZTsKLSt9CisrCSAgLyogVHVybiBh bnkgc2luZ2xlIERXX09QX3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQgY2xlYXJpbmcKKysJ ICAgICBEV19PUF9kZXJlZiogaW4gc3VjaCBjYXNlLiAgKi8KICsKLSsMCisrCSAgaWYgKGJsay0+ c2l6ZSA9PSAxICYmIGJsay0+ZGF0YVswXSA+PSBEV19PUF9yZWcwCisrCSAgICAgICYmIGJsay0+ ZGF0YVswXSA8PSBEV19PUF9yZWczMSkKKysJICAgIGxlbmd0aF9iYXRvbiA9IGR3YXJmMl9hdHRy X3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICBlbHNlIGlmIChibGstPnNpemUgPiAx ICYmIGJsay0+ZGF0YVswXSA9PSBEV19PUF9yZWd4KQorKwkgICAgeworKwkgICAgICBVTE9OR0VT VCB1bG9uZ2VzdDsKKysJICAgICAgY29uc3QgZ2RiX2J5dGUgKmVuZDsKICsKLSsvKiBSZWFkIGlu IHRoZSBzeW1ib2xzIGZvciBQRVJfQ1UuICBPQkpGSUxFIGlzIHRoZSBvYmpmaWxlIGZyb20gd2hp Y2gKLSsgICB0aGlzIENVIGNhbWUuICAqLwotK3N0YXRpYyB2b2lkCi0rZHcyX2RvX2luc3RhbnRp YXRlX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICAgc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1KQotK3sKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwor KwkgICAgICBlbmQgPSByZWFkX3VsZWIxMjggKCZibGstPmRhdGFbMV0sICZibGstPmRhdGFbYmxr LT5zaXplXSwKKysJCQkJICAmdWxvbmdlc3QpOworKwkgICAgICBpZiAoZW5kID09ICZibGstPmRh dGFbYmxrLT5zaXplXSkKKysJCWxlbmd0aF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJf YmF0b24gKGF0dHIsIGN1KTsKKysJICAgIH0KICsKLSsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAg KGR3YXJmMl9yZWxlYXNlX3F1ZXVlLCBOVUxMKTsKKysJICBpZiAobGVuZ3RoX2JhdG9uID09IE5V TEwpCisrCSAgICB7CisrCSAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnNpemVfYXR0cjsKKysJICAg ICAgZ2RiX2J5dGUgKmRhdGE7CiArCi0rICBxdWV1ZV9jb21wX3VuaXQgKHBlcl9jdSwgb2JqZmls ZSk7CisrCSAgICAgIGxlbmd0aF9iYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+Y29tcF91bml0 X29ic3RhY2ssCisrCQkJCQkgICAgc2l6ZW9mICgqbGVuZ3RoX2JhdG9uKSk7CisrCSAgICAgIGxl bmd0aF9iYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysJICAgICAgbGVuZ3RoX2JhdG9uLT5z aXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplICsgMjsKKysJICAgICAgZGF0YSA9IG9ic3RhY2tf YWxsb2MgKCZjdS0+Y29tcF91bml0X29ic3RhY2ssCisrCQkJCSAgICBsZW5ndGhfYmF0b24tPnNp emUpOworKwkgICAgICBsZW5ndGhfYmF0b24tPmRhdGEgPSBkYXRhOworKwkgICAgICBtZW1jcHkg KGRhdGEsIERXX0JMT0NLIChhdHRyKS0+ZGF0YSwgRFdfQkxPQ0sgKGF0dHIpLT5zaXplKTsKICsK LSsgIGlmIChwZXJfY3UtPmZyb21fZGVidWdfdHlwZXMpCi0rICAgIHJlYWRfc2lnbmF0dXJlZF90 eXBlX2F0X29mZnNldCAob2JqZmlsZSwgcGVyX2N1LT5vZmZzZXQpOwotKyAgZWxzZQotKyAgICBs b2FkX2Z1bGxfY29tcF91bml0IChwZXJfY3UsIG9iamZpbGUpOworKwkgICAgICAvKiBEV19BVF9C WVRFX1NJWkUgZXhpc3RpbmcgdG9nZXRoZXIgd2l0aCBEV19BVF9TVFJJTkdfTEVOR1RICisrCQkg c3BlY2lmaWVzIHRoZSBzaXplIG9mIGFuIGludGVnZXIgdG8gZmV0Y2guICAqLworKwkgICAgICBz aXplX2F0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKysJICAg ICAgaWYgKHNpemVfYXR0cikKKysJCXsKKysJCSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemVd ID0gRFdfT1BfZGVyZWZfc2l6ZTsKKysJCSAgZGF0YVtEV19CTE9DSyAoYXR0ciktPnNpemUgKyAx XSA9IERXX1VOU05EIChzaXplX2F0dHIpOworKwkJICBpZiAoZGF0YVtEV19CTE9DSyAoYXR0cikt PnNpemUgKyAxXSAhPSBEV19VTlNORCAoc2l6ZV9hdHRyKSkKKysJCSAgICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsCisrCQkJICAgICAgIF8oIkRXX0FUX3N0cmluZ19sZW5ndGgncyBE V19BVF9ieXRlX3NpemUgIgorKwkJCQkgImludGVnZXIgZXhjZWVkcyB0aGUgYnl0ZSBzaXplIHN0 b3JhZ2UiKSk7CisrCQl9CisrCSAgICAgIGVsc2UKKysJCXsKKysJCSAgZGF0YVtEV19CTE9DSyAo YXR0ciktPnNpemVdID0gRFdfT1BfZGVyZWY7CisrCQkgIGRhdGFbRFdfQkxPQ0sgKGF0dHIpLT5z aXplICsgMV0gPSBEV19PUF9ub3A7CisrCQl9CisrCSAgICB9CiArCi0rICBwcm9jZXNzX3F1ZXVl IChvYmpmaWxlKTsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQK KysJICAgID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdFX0RB VEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247CisrCSAg VFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCX0KKyAgICAgfQorICAgZWxzZQorICAg ICB7CistICAgICAgLyogY2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlICov CisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKKysJewor KwkgIC8qIFdlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBhIGNvbnN0YW50IGFkZHJlc3Mgd2hl cmUgdGhlIGxvY2F0aW9uCisrCSAgICAgc2hvdWxkIGJlIHJlYWQgZnJvbSAtIGF0dHJfZm9ybV9p c19ibG9jayBpcyBleHBlY3RlZCBpbnN0ZWFkLiAgU2VlCisrCSAgICAgRFdBUkYgZm9yIHRoZSBE V19BVF9TVFJJTkdfTEVOR1RIIHZzLiBEV19BVF9CWVRFX1NJWkUgZGlmZmVyZW5jZS4KKysJICAg ICAqLworKwkgIC8qIFBBU1NUSFJVICovCisrCX0KICsKLSsgIC8qIEFnZSB0aGUgY2FjaGUsIHJl bGVhc2luZyBjb21waWxhdGlvbiB1bml0cyB0aGF0IGhhdmUgbm90Ci0rICAgICBiZWVuIHVzZWQg cmVjZW50bHkuICAqLwotKyAgYWdlX2NhY2hlZF9jb21wX3VuaXRzICgpOworICAgICAgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9ieXRlX3NpemUsIGN1KTsKKy0gICAgICBpZiAoYXR0 cikKKy0gICAgICAgIHsKKy0gICAgICAgICAgbGVuZ3RoID0gRFdfVU5TTkQgKGF0dHIpOworLSAg ICAgICAgfQorKyAgICAgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCisr CXsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKKysJICAgID0g UkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKKysJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdl X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhw cl9iYXRvbiAoYXR0ciwgY3UpOworKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwor Kwl9CisrICAgICAgZWxzZSBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIp KQorKwlUWVBFX0hJR0hfQk9VTkQgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0 YW50X3ZhbHVlIChhdHRyLCAwKTsKKyAgICAgICBlbHNlCistICAgICAgICB7CistICAgICAgICAg IGxlbmd0aCA9IDE7CistICAgICAgICB9CisrCVRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkg PSAxOworICAgICB9CisgCistICBpbmRleF90eXBlID0gb2JqZmlsZV90eXBlIChvYmpmaWxlKS0+ YnVpbHRpbl9pbnQ7CistICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGlu ZGV4X3R5cGUsIDEsIGxlbmd0aCk7CisgICBjaGFyX3R5cGUgPSBsYW5ndWFnZV9zdHJpbmdfY2hh cl90eXBlIChjdS0+bGFuZ3VhZ2VfZGVmbiwgZ2RiYXJjaCk7CisgICB0eXBlID0gY3JlYXRlX3N0 cmluZ190eXBlIChOVUxMLCBjaGFyX3R5cGUsIHJhbmdlX3R5cGUpOworIAorQEAgLTc5ODUsOCAr ODA5Niw3IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVj dCBkd2FyZjJfY3UgKmN1KQorICAgc3RydWN0IHR5cGUgKmJhc2VfdHlwZTsKKyAgIHN0cnVjdCB0 eXBlICpyYW5nZV90eXBlOworICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKKy0gIExPTkdFU1Qg bG93ID0gMDsKKy0gIExPTkdFU1QgaGlnaCA9IC0xOworKyAgTE9OR0VTVCBsb3c7CisgICBjaGFy ICpuYW1lOworICAgTE9OR0VTVCBuZWdhdGl2ZV9tYXNrOworIAorQEAgLTc5OTksNDggKzgxMDks MTI1IEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQorICAgaWYgKHJhbmdlX3R5cGUpCisgICAgIHJldHVybiByYW5nZV90eXBl OworIAorLSAgaWYgKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorLSAgICB7Cist ICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91bmQgb2YgMSwgaWYgbm90IGdpdmVu LiAgKi8KKy0gICAgICBsb3cgPSAxOworLSAgICB9CisrICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hf Qk9VTkQgYXJlIHNldCBmb3IgcmVhbCBiZWxvdy4gICovCisrICByYW5nZV90eXBlID0gY3JlYXRl X3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlwZSwgMCwgLTEpOwogKwotKyAgZG9fY2xlYW51cHMg KGJhY2tfdG8pOwotK30KKysgIG5lZ2F0aXZlX21hc2sgPSAKKysgICAgKExPTkdFU1QpIC0xIDw8 IChUWVBFX0xFTkdUSCAoYmFzZV90eXBlKSAqIFRBUkdFVF9DSEFSX0JJVCAtIDEpOwogKwotKy8q IEVuc3VyZSB0aGF0IHRoZSBzeW1ib2xzIGZvciBQRVJfQ1UgaGF2ZSBiZWVuIHJlYWQgaW4uICBP QkpGSUxFIGlzCi0rICAgdGhlIG9iamZpbGUgZnJvbSB3aGljaCB0aGlzIENVIGNhbWUuICBSZXR1 cm5zIHRoZSByZXN1bHRpbmcgc3ltYm9sCi0rICAgdGFibGUuICAqLwotK3N0YXRpYyBzdHJ1Y3Qg c3ltdGFiICoKLStkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSsJCQlzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCi0rewotKyAgaWYgKCFw ZXJfY3UtPnYucXVpY2stPnN5bXRhYikKKysgIC8qIEV4Y2x1ZGUgbGFuZ3VhZ2VfYWRhIGZyb20g YW55IFRZUEVfRFlOQU1JQyBjb25zdHJ1Y3RzIGJlbG93LiAgR0RCIEFkYQorKyAgICAgc3VwcG9y dHMgaW1wbGVtZW50cyB0aGUgZHluYW1pYyBib3VuZHMgaW4gYSBub24tRFdBUkYgd2F5IGFuZCB0 aGUKKysgICAgIGV4aXN0aW5nIERXQVJGIGR5bmFtaWMgYm91bmRzIGFyZSBpbnZhbGlkLCBsZWFk aW5nIHRvIG1lbW9yeSBhY2Nlc3MKKysgICAgIGVycm9ycy4gICovCisgCistICAvKiBGSVhNRTog Rm9yIHZhcmlhYmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291bGQgYmUKKy0gICAg IGEgdmFyaWFibGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdlJ2xsIGFsbG93IGl0 LAorLSAgICAgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4gICovCisgICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKKy0gIGlmIChhdHRy KQorLSAgICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwor KyAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2Ug IT0gbGFuZ3VhZ2VfYWRhKQogKyAgICB7Ci0rICAgICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG8g PSBtYWtlX2NsZWFudXAgKGZyZWVfY2FjaGVkX2NvbXBfdW5pdHMsIE5VTEwpOwotKyAgICAgIGlu Y3JlbWVudF9yZWFkaW5nX3N5bXRhYiAoKTsKLSsgICAgICBkdzJfZG9faW5zdGFudGlhdGVfc3lt dGFiIChvYmpmaWxlLCBwZXJfY3UpOwotKyAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysg ICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5E X0tJTkRfRFdBUkZfQkxPQ0s7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ bG93LnUuZHdhcmZfYmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAo YXR0ciwgY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAg IC8qIEZvciBzZXR0aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBt aXNzaW5nLiAgKi8KKysgICAgICBsb3cgPSAwOwogKyAgICB9Ci0rICByZXR1cm4gcGVyX2N1LT52 LnF1aWNrLT5zeW10YWI7Ci0rfQotKwotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQga25vd3Mg aG93IHRvIHJlYWQgYSA2NC1iaXQgdmFsdWUgaW4gYSB3YXkKLSsgICB0aGF0IGRvZXNuJ3QgbWFr ZSBnZGIgZGllLiAgUmV0dXJucyAxIGlmIHRoZSBjb252ZXJzaW9uIHdlbnQgb2ssIDAKLSsgICBv dGhlcndpc2UuICAqLwotK3N0YXRpYyBpbnQKLStleHRyYWN0X2N1X3ZhbHVlIChjb25zdCBjaGFy ICpieXRlcywgVUxPTkdFU1QgKnJlc3VsdCkKLSt7Ci0rICBpZiAoc2l6ZW9mIChVTE9OR0VTVCkg PCA4KQorKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikgJiYgY3UtPmxhbmd1 YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewotKyAgICAgIGludCBpOworKyAgICAgIHN0cnVj dCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKKysgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRf Y3UgPSBjdTsKKysgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7CiArCi0r ICAgICAgLyogSWdub3JlIHRoZSB1cHBlciA0IGJ5dGVzIGlmIHRoZXkgYXJlIGFsbCB6ZXJvLiAg Ki8KLSsgICAgICBmb3IgKGkgPSAwOyBpIDwgNDsgKytpKQotKwlpZiAoYnl0ZXNbaSArIDRdICE9 IDApCi0rCSAgcmV0dXJuIDA7CisrICAgICAgdGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29y X3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1KTsKKysgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRf Y3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUpOworKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3 YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19BVF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKICsKLSsg ICAgICAqcmVzdWx0ID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChieXRlcywgNCwgQkZEX0VO RElBTl9MSVRUTEUpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy5r aW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVfUkFOR0Vf REFUQSAocmFuZ2VfdHlwZSktPmxvdy51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAorKyAgICAgICAg PSBkd2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9j dSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LnUuZHdhcmZfbG9j bGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGllLCB0YXJnZXRfY3UpOwor KyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIC8qIEZvciBzZXR0 aW5nIGEgZGVmYXVsdCBpZiBEV19BVF9VUFBFUl9CT1VORCB3b3VsZCBiZSBtaXNzaW5nLiAgKi8K KysgICAgICBsb3cgPSAwOwogKyAgICB9CiArICBlbHNlCi0rICAgICpyZXN1bHQgPSBleHRyYWN0 X3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7Ci0rICByZXR1 cm4gMTsKLSt9Ci0rCi0rLyogUmVhZCB0aGUgQ1UgbGlzdCBmcm9tIHRoZSBtYXBwZWQgaW5kZXgs IGFuZCB1c2UgaXQgdG8gY3JlYXRlIGFsbAotKyAgIHRoZSBDVSBvYmplY3RzIGZvciB0aGlzIG9i amZpbGUuICBSZXR1cm4gMCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywKLSsgICAxIGlmIGV2ZXJ5 dGhpbmcgd2VudCBvay4gICovCi0rc3RhdGljIGludAotK2NyZWF0ZV9jdXNfZnJvbV9pbmRleCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4LAotKwkJ ICAgICAgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1l bnRzKQotK3sKLSsgIG9mZnNldF90eXBlIGk7Ci0rICBjb25zdCBjaGFyICplbnRyeTsKLSsKLSsg IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzID0gY3VfbGlzdF9lbGVtZW50cyAvIDI7 Ci0rICBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzCi0rICAgID0gb2JzdGFja19h bGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCSAgICAgZHdhcmYyX3Blcl9vYmpm aWxlLT5uX2NvbXBfdW5pdHMKLSsJCSAgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKikpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGN1X2xpc3RfZWxlbWVudHM7IGkgKz0g MikKICsgICAgewotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnRoZV9jdTsKLSsg ICAgICBVTE9OR0VTVCBvZmZzZXQsIGxlbmd0aDsKLSsKLSsgICAgICBpZiAoIWV4dHJhY3RfY3Vf dmFsdWUgKGN1X2xpc3QsICZvZmZzZXQpCi0rCSAgfHwgIWV4dHJhY3RfY3VfdmFsdWUgKGN1X2xp c3QgKyA4LCAmbGVuZ3RoKSkKLSsJcmV0dXJuIDA7Ci0rICAgICAgY3VfbGlzdCArPSAyICogODsK LSsKLSsgICAgICB0aGVfY3UgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2Jz dGFjaywKLSsJCQkgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSk7Ci0rICAgICAgdGhl X2N1LT5vZmZzZXQgPSBvZmZzZXQ7Ci0rICAgICAgdGhlX2N1LT5sZW5ndGggPSBsZW5ndGg7Ci0r ICAgICAgdGhlX2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKLSsgICAgICB0aGVfY3UtPnYucXVpY2sg PSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJCXN0cnVj dCBkd2FyZjJfcGVyX2N1X3F1aWNrX2RhdGEpOwotKyAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+ YWxsX2NvbXBfdW5pdHNbaSAvIDJdID0gdGhlX2N1OworKyAgICAgIGlmIChhdHRyICYmIGF0dHJf Zm9ybV9pc19jb25zdGFudCAoYXR0cikpCisrCWxvdyA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFu dF92YWx1ZSAoYXR0ciwgMCk7CisrICAgICAgZWxzZQorKwl7CisrCSAgaWYgKGN1LT5sYW5ndWFn ZSA9PSBsYW5ndWFnZV9mb3J0cmFuKQorKwkgICAgeworKwkgICAgICAvKiBGT1JUUkFOIGltcGxp ZXMgYSBsb3dlciBib3VuZCBvZiAxLCBpZiBub3QgZ2l2ZW4uICAqLworKwkgICAgICBsb3cgPSAx OworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIHsKKysJICAgICAgLyogQWNjb3JkaW5nIHRvIERX QVJGIHdlIHNob3VsZCBhc3N1bWUgdGhlIHZhbHVlIDAgb25seSBmb3IKKysJCSBMQU5HVUFHRV9D IGFuZCBMQU5HVUFHRV9DUExVUy4gICovCisrCSAgICAgIGxvdyA9IDA7CisrCSAgICB9CisrCX0K KysgICAgICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZl X21hc2spKQorKwlsb3cgfD0gbmVnYXRpdmVfbWFzazsKKysgICAgICBUWVBFX0xPV19CT1VORCAo cmFuZ2VfdHlwZSkgPSBsb3c7CisrICAgICAgaWYgKGxvdyA+PSAwKQorKwlUWVBFX1VOU0lHTkVE IChyYW5nZV90eXBlKSA9IDE7CisrICAgIH0KKyAKKyAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGll LCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOworLSAgaWYgKGF0dHIpCisrICBpZiAoIWF0dHIgfHwg KCFhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpICYmICFhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0 dHIpCisrCQkmJiAhaXNfcmVmX2F0dHIgKGF0dHIpKSkKKyAgICAgeworLSAgICAgIGlmIChhdHRy LT5mb3JtID09IERXX0ZPUk1fYmxvY2sxIHx8IGlzX3JlZl9hdHRyIChhdHRyKSkKKy0gICAgICAg IHsKKy0gICAgICAgICAgLyogR0NDIGVuY29kZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQgb3Ig ZHluYW1pYyBsZW5ndGgKKy0gICAgICAgICAgICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0dHJp YnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUuCistICAgICAgICAgICAgIEZJWE1FOiBHREIg ZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSBkeW5hbWljCistICAgICAgICAgICAgIGFy cmF5cyBwcm9wZXJseSwgdHJlYXQgdGhlbSBhcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZAorLSAg ICAgICAgICAgICBsZW5ndGggZm9yIG5vdy4KKy0KKy0gICAgICAgICAgICAgRklYTUU6IGppbWIv MjAwMy0wOS0yMjogR0RCIGRvZXMgbm90IHJlYWxseSBrbm93CistICAgICAgICAgICAgIGhvdyB0 byBoYW5kbGUgYXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0aAorLSAgICAgICAgICAgICBlaXRo ZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRoZW0gYXMgemVyby1sZW5ndGgKKy0gICAgICAgICAgICAg YXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIHVwcGVyIGJvdW5kIGdpdmVuCistICAgICAg ICAgICAgIHRoZSBsb3dlciBib3VuZCB3ZSd2ZSBjb21wdXRlZCBhYm92ZS4gICovCistICAgICAg ICAgIGhpZ2ggPSBsb3cgLSAxOworLSAgICAgICAgfQorLSAgICAgIGVsc2UKKy0gICAgICAgIGhp Z2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworKyAgICAgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOworKyAgICAgIC8qIEl0IGRv ZXMgbm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNzbHkgaW5lZmZlY3RpdmUgaW4gY2hlY2tfdHlw ZWRlZi4gICovCisrICAgICAgaWYgKGF0dHIgJiYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikg fHwgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkpCisrICAgICAgCXsKKysJICBUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKHJhbmdlX3R5cGUpID0gMTsKKysJICBUWVBFX0RZTkFN SUMgKHJhbmdlX3R5cGUpID0gMTsKKysJfQorKyAgICAgIC8qIFBhc3MgaXQgbm93IGFzIHRoZSBy ZWd1bGFyIERXX0FUX3VwcGVyX2JvdW5kLiAgKi8KICsgICAgfQogKwotKyAgcmV0dXJuIDE7Ci0r fQotKwotKy8qIFJlYWQgdGhlIGFkZHJlc3MgbWFwIGRhdGEgZnJvbSB0aGUgbWFwcGVkIGluZGV4 LCBhbmQgdXNlIGl0IHRvCi0rICAgcG9wdWxhdGUgdGhlIG9iamZpbGUncyBwc3ltdGFic19hZGRy bWFwLiAgKi8KLStzdGF0aWMgdm9pZAotK2NyZWF0ZV9hZGRybWFwX2Zyb21faW5kZXggKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgbWFwcGVkX2luZGV4ICppbmRleCkKLSt7Ci0rICBj b25zdCBnZGJfYnl0ZSAqaXRlciwgKmVuZDsKLSsgIHN0cnVjdCBvYnN0YWNrIHRlbXBfb2JzdGFj azsKLSsgIHN0cnVjdCBhZGRybWFwICptdXRhYmxlX21hcDsKLSsgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwOwotKyAgQ09SRV9BRERSIGJhc2VhZGRyOwotKwotKyAgb2JzdGFja19pbml0ICgmdGVt cF9vYnN0YWNrKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmdGVt cF9vYnN0YWNrKTsKLSsgIG11dGFibGVfbWFwID0gYWRkcm1hcF9jcmVhdGVfbXV0YWJsZSAoJnRl bXBfb2JzdGFjayk7Ci0rCi0rICBpdGVyID0gaW5kZXgtPmFkZHJlc3NfdGFibGU7Ci0rICBlbmQg PSBpdGVyICsgaW5kZXgtPmFkZHJlc3NfdGFibGVfc2l6ZTsKLSsKLSsgIGJhc2VhZGRyID0gQU5P RkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkp OwotKwotKyAgd2hpbGUgKGl0ZXIgPCBlbmQpCisrICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNf YmxvY2sgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEpCiArICAgIHsKLSsg ICAgICBVTE9OR0VTVCBoaSwgbG8sIGN1X2luZGV4OwotKyAgICAgIGxvID0gZXh0cmFjdF91bnNp Z25lZF9pbnRlZ2VyIChpdGVyLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSk7Ci0rICAgICAgaXRlciAr PSA4OwotKyAgICAgIGhpID0gZXh0cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChpdGVyLCA4LCBCRkRf RU5ESUFOX0xJVFRMRSk7Ci0rICAgICAgaXRlciArPSA4OwotKyAgICAgIGN1X2luZGV4ID0gZXh0 cmFjdF91bnNpZ25lZF9pbnRlZ2VyIChpdGVyLCA0LCBCRkRfRU5ESUFOX0xJVFRMRSk7Ci0rICAg ICAgaXRlciArPSA0OwotKyAgICAgIAotKyAgICAgIGFkZHJtYXBfc2V0X2VtcHR5IChtdXRhYmxl X21hcCwgbG8gKyBiYXNlYWRkciwgaGkgKyBiYXNlYWRkciAtIDEsCi0rCQkJIGR3YXJmMl9wZXJf b2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbY3VfaW5kZXhdKTsKKysgICAgICBUWVBFX1JBTkdFX0RB VEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NL OworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9ibG9j ayA9CisrCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7CisrICAg ICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CiArICAgIH0KKysgIGVsc2UgaWYgKGF0 dHIgJiYgaXNfcmVmX2F0dHIgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFnZV9hZGEp CisrICAgIHsKKysgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9kaWU7CisrICAgICAgc3Ry dWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7CisrICAgICAgc3RydWN0IGF0dHJpYnV0ZSAq dGFyZ2V0X2xvY19hdHRyOwogKwotKyAgb2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1hcCA9IGFkZHJt YXBfY3JlYXRlX2ZpeGVkIChtdXRhYmxlX21hcCwKLSsJCQkJCQkgICAgJm9iamZpbGUtPm9iamZp bGVfb2JzdGFjayk7Ci0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8qIFRoZSBo YXNoIGZ1bmN0aW9uIGZvciBzdHJpbmdzIGluIHRoZSBtYXBwZWQgaW5kZXguICBUaGlzIGlzIHRo ZQotKyAgIHNhbWUgYXMgdGhlIGhhc2h0YWIuYyBoYXNoIGZ1bmN0aW9uLCBidXQgd2Uga2VlcCBh IHNlcGFyYXRlIGNvcHkgdG8KLSsgICBtYWludGFpbiBjb250cm9sIG92ZXIgdGhlIGltcGxlbWVu dGF0aW9uLiAgVGhpcyBpcyBuZWNlc3NhcnkKLSsgICBiZWNhdXNlIHRoZSBoYXNoIGZ1bmN0aW9u IGlzIHRpZWQgdG8gdGhlIGZvcm1hdCBvZiB0aGUgbWFwcGVkIGluZGV4Ci0rICAgZmlsZS4gICov Ci0rc3RhdGljIGhhc2h2YWxfdAotK21hcHBlZF9pbmRleF9zdHJpbmdfaGFzaCAoY29uc3Qgdm9p ZCAqcCkKLSt7Ci0rICBjb25zdCB1bnNpZ25lZCBjaGFyICpzdHIgPSAoY29uc3QgdW5zaWduZWQg Y2hhciAqKSBwOwotKyAgaGFzaHZhbF90IHIgPSAwOwotKyAgdW5zaWduZWQgY2hhciBjOwotKwot KyAgd2hpbGUgKChjID0gKnN0cisrKSAhPSAwKQotKyAgICByID0gciAqIDY3ICsgYyAtIDExMzsK LSsKLSsgIHJldHVybiByOwotK30KLSsKLSsvKiBGaW5kIGEgc2xvdCBpbiB0aGUgbWFwcGVkIGlu ZGV4IElOREVYIGZvciB0aGUgb2JqZWN0IG5hbWVkIE5BTUUuCi0rICAgSWYgTkFNRSBpcyBmb3Vu ZCwgc2V0ICpWRUNfT1VUIHRvIHBvaW50IHRvIHRoZSBDVSB2ZWN0b3IgaW4gdGhlCi0rICAgY29u c3RhbnQgcG9vbCBhbmQgcmV0dXJuIDEuICBJZiBOQU1FIGNhbm5vdCBiZSBmb3VuZCwgcmV0dXJu IDAuICAqLwotK3N0YXRpYyBpbnQKLStmaW5kX3Nsb3RfaW5fbWFwcGVkX2hhc2ggKHN0cnVjdCBt YXBwZWRfaW5kZXggKmluZGV4LCBjb25zdCBjaGFyICpuYW1lLAotKwkJCSAgb2Zmc2V0X3R5cGUg Kip2ZWNfb3V0KQotK3sKLSsgIG9mZnNldF90eXBlIGhhc2ggPSBtYXBwZWRfaW5kZXhfc3RyaW5n X2hhc2ggKG5hbWUpOwotKyAgb2Zmc2V0X3R5cGUgc2xvdCwgc3RlcDsKKysgICAgICB0YXJnZXRf ZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3UpOworKyAg ICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7CisrICAg ICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FUX2xvY2F0 aW9uLCB0YXJnZXRfY3UpOwogKwotKyAgc2xvdCA9IGhhc2ggJiAoaW5kZXgtPmluZGV4X3RhYmxl X3Nsb3RzIC0gMSk7Ci0rICBzdGVwID0gKChoYXNoICogMTcpICYgKGluZGV4LT5pbmRleF90YWJs ZV9zbG90cyAtIDEpKSB8IDE7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOworKyAgICAgIFRZUEVf UkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKKysg ICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0 YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gudS5k d2FyZl9sb2NsaXN0LnR5cGUKKysgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdl dF9jdSk7CisrICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisgICAgIH0KKyAg IGVsc2UKKyAgICAgeworLSAgICAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3Vu dCwgY3UpOworLSAgICAgIGlmIChhdHRyKQorKyAgICAgIExPTkdFU1QgaGlnaDsKICsKLSsgIGZv ciAoOzspCisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkK KysJaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7CisrICAg ICAgZWxzZQorIAl7CistCSAgaW50IGNvdW50ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3Zh bHVlIChhdHRyLCAxKTsKKy0JICBoaWdoID0gbG93ICsgY291bnQgLSAxOworKwkgIC8qIEFkYSBl eHBlY3RzIGFuIGVtcHR5IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLworKwkg IGlmIChjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorKwkgICAgVFlQRV9ISUdIX0JPVU5E X1VOREVGSU5FRCAocmFuZ2VfdHlwZSkgPSAxOworKwkgIGhpZ2ggPSBsb3cgLSAxOworIAl9Cisr ICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChoaWdoICYgbmVnYXRpdmVf bWFzaykpCisrCWhpZ2ggfD0gbmVnYXRpdmVfbWFzazsKKysgICAgICBUWVBFX0hJR0hfQk9VTkQg KHJhbmdlX3R5cGUpID0gaGlnaDsKKyAgICAgfQorIAorICAgLyogRHdhcmYtMiBzcGVjaWZpY2F0 aW9ucyBleHBsaWNpdGx5IGFsbG93cyB0byBjcmVhdGUgc3VicmFuZ2UgdHlwZXMKK0BAIC04MDgy LDIwICs4MjY5LDQxIEBAIHJlYWRfc3VicmFuZ2VfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUs IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQorIAl9CisgICAgIH0KKyAKKy0gIG5lZ2F0aXZlX21hc2sg PQorLSAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VU X0NIQVJfQklUIC0gMSk7CistICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxv dyAmIG5lZ2F0aXZlX21hc2spKQorLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKKy0gIGlmICgh VFlQRV9VTlNJR05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQorLSAg ICBoaWdoIHw9IG5lZ2F0aXZlX21hc2s7CisrICAvKiBEV19BVF9iaXRfc3RyaWRlIGlzIGN1cnJl bnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCisrICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKKysgIGlmIChhdHRyICYmIGF0 dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkK ICsgICAgewotKyAgICAgIC8qIENvbnZlcnQgYSBzbG90IG51bWJlciB0byBhbiBvZmZzZXQgaW50 byB0aGUgdGFibGUuICAqLwotKyAgICAgIG9mZnNldF90eXBlIGkgPSAyICogc2xvdDsKLSsgICAg ICBjb25zdCBjaGFyICpzdHI7Ci0rICAgICAgaWYgKGluZGV4LT5pbmRleF90YWJsZVtpXSA9PSAw ICYmIGluZGV4LT5pbmRleF90YWJsZVtpICsgMV0gPT0gMCkKLSsJcmV0dXJuIDA7Ci0rCi0rICAg ICAgc3RyID0gaW5kZXgtPmNvbnN0YW50X3Bvb2wgKyBNQVlCRV9TV0FQIChpbmRleC0+aW5kZXhf dGFibGVbaV0pOwotKyAgICAgIGlmICghc3RyY21wIChuYW1lLCBzdHIpKQotKwl7Ci0rCSAgKnZl Y19vdXQgPSAob2Zmc2V0X3R5cGUgKikgKGluZGV4LT5jb25zdGFudF9wb29sCi0rCQkJCSAgICAg ICsgTUFZQkVfU1dBUCAoaW5kZXgtPmluZGV4X3RhYmxlW2kgKyAxXSkpOwotKwkgIHJldHVybiAx OwotKwl9Ci0rCi0rICAgICAgc2xvdCA9IChzbG90ICsgc3RlcCkgJiAoaW5kZXgtPmluZGV4X3Rh YmxlX3Nsb3RzIC0gMSk7CisrICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0 ZV9zdHJpZGUua2luZAorKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOwor KyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLnUuZHdhcmZf YmxvY2sgPQorKwkJCQkJZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwor KyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwogKyAgICB9Ci0rfQotKwotKy8q IFJlYWQgdGhlIGluZGV4IGZpbGUuICBJZiBldmVyeXRoaW5nIHdlbnQgb2ssIGluaXRpYWxpemUg dGhlICJxdWljayIKLSsgICBlbGVtZW50cyBvZiBhbGwgdGhlIENVcyBhbmQgcmV0dXJuIDEuICBP dGhlcndpc2UsIHJldHVybiAwLiAgKi8KLStzdGF0aWMgaW50Ci0rZHdhcmYyX3JlYWRfaW5kZXgg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIGNoYXIgKmFkZHI7Ci0rICBzdHJ1Y3Qg bWFwcGVkX2luZGV4ICptYXA7Ci0rICBvZmZzZXRfdHlwZSAqbWV0YWRhdGE7Ci0rICBjb25zdCBn ZGJfYnl0ZSAqY3VfbGlzdDsKLSsgIG9mZnNldF90eXBlIGN1X2xpc3RfZWxlbWVudHM7Ci0rCi0r ICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYXNlY3Rpb24gPT0gTlVMTAotKyAg ICAgIHx8IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4LnNpemUgPT0gMCkKLSsgICAgcmV0 dXJuIDA7Ci0rICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYyX3Blcl9vYmpm aWxlLT5nZGJfaW5kZXgpOwotKwotKyAgYWRkciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2lu ZGV4LmJ1ZmZlcjsKLSsgIC8qIFZlcnNpb24gY2hlY2suICAqLwotKyAgaWYgKE1BWUJFX1NXQVAg KCoob2Zmc2V0X3R5cGUgKikgYWRkcikgIT0gMSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBtYXAg PSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IG1hcHBl ZF9pbmRleCk7Ci0rICBtYXAtPnRvdGFsX3NpemUgPSBkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9p bmRleC5zaXplOwotKwotKyAgbWV0YWRhdGEgPSAob2Zmc2V0X3R5cGUgKikgKGFkZHIgKyBzaXpl b2YgKG9mZnNldF90eXBlKSk7Ci0rICBjdV9saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFk YXRhWzBdKTsKLSsgIGN1X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhWzFd KSAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzBdKSkKLSsJCSAgICAgIC8gOCk7Ci0rICBtYXAtPmFk ZHJlc3NfdGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbMV0pOwotKyAgbWFwLT5h ZGRyZXNzX3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pCi0rCQkJICAgICAt IE1BWUJFX1NXQVAgKG1ldGFkYXRhWzFdKSk7Ci0rICBtYXAtPmluZGV4X3RhYmxlID0gKG9mZnNl dF90eXBlICopIChhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbMl0pKTsKLSsgIG1hcC0+aW5k ZXhfdGFibGVfc2xvdHMgPSAoKE1BWUJFX1NXQVAgKG1ldGFkYXRhWzNdKQotKwkJCSAgICAgLSBN QVlCRV9TV0FQIChtZXRhZGF0YVsyXSkpCi0rCQkJICAgIC8gKDIgKiBzaXplb2YgKG9mZnNldF90 eXBlKSkpOwotKyAgbWFwLT5jb25zdGFudF9wb29sID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFk YXRhWzNdKTsKLSsKLSsgIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBtYXAs IGN1X2xpc3QsIGN1X2xpc3RfZWxlbWVudHMpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGNyZWF0 ZV9hZGRybWFwX2Zyb21faW5kZXggKG9iamZpbGUsIG1hcCk7Ci0rCi0rICBkd2FyZjJfcGVyX29i amZpbGUtPmluZGV4X3RhYmxlID0gbWFwOwotKyAgZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19p bmRleCA9IDE7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZm9yIHRoZSAi cXVpY2siIGZ1bmN0aW9ucyB3aGljaCBzZXRzIHRoZSBnbG9iYWwKLSsgICBkd2FyZjJfcGVyX29i amZpbGUgYWNjb3JkaW5nIHRvIE9CSkZJTEUuICAqLwotK3N0YXRpYyB2b2lkCi0rZHcyX3NldHVw IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBkd2FyZjJfcGVyX29iamZpbGUgPSBv YmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2RhdGFfa2V5KTsKLSsgIGdkYl9h c3NlcnQgKGR3YXJmMl9wZXJfb2JqZmlsZSk7Ci0rfQotKwotKy8qIEEgaGVscGVyIGZvciB0aGUg InF1aWNrIiBmdW5jdGlvbnMgd2hpY2ggYXR0ZW1wdHMgdG8gcmVhZCB0aGUgbGluZQotKyAgIHRh YmxlIGZvciBUSElTX0NVLiAgKi8KLStzdGF0aWMgdm9pZAotK2R3Ml9yZXF1aXJlX2xpbmVfaGVh ZGVyIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqdGhpc19jdSkKLSt7Ci0rICBiZmQgKmFiZmQgPSBvYmpmaWxlLT5vYmZkOwotKyAgc3Ry dWN0IGxpbmVfaGVhZGVyICpsaCA9IE5VTEw7Ci0rICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwot KyAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBzOwotKyAgc3RydWN0IGRpZV9pbmZvICpjb21wX3Vu aXRfZGllOwotKyAgZ2RiX2J5dGUgKmJlZ19vZl9jb21wX3VuaXQsICppbmZvX3B0ciwgKmJ1ZmZl cjsKLSsgIGludCBoYXNfY2hpbGRyZW4sIGk7Ci0rICBzdHJ1Y3QgZHdhcmYyX2N1IGN1OwotKyAg dW5zaWduZWQgaW50IGJ5dGVzX3JlYWQsIGJ1ZmZlcl9zaXplOwotKyAgc3RydWN0IGRpZV9yZWFk ZXJfc3BlY3MgcmVhZGVyX3NwZWNzOwotKyAgY2hhciAqbmFtZSwgKmNvbXBfZGlyOwotKwotKyAg aWYgKHRoaXNfY3UtPnYucXVpY2stPnJlYWRfbGluZXMpCi0rICAgIHJldHVybjsKLSsgIHRoaXNf Y3UtPnYucXVpY2stPnJlYWRfbGluZXMgPSAxOwotKwotKyAgbWVtc2V0ICgmY3UsIDAsIHNpemVv ZiAoY3UpKTsKLSsgIGN1Lm9iamZpbGUgPSBvYmpmaWxlOwotKyAgb2JzdGFja19pbml0ICgmY3Uu Y29tcF91bml0X29ic3RhY2spOwotKwotKyAgY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKGZyZWVf c3RhY2tfY29tcF91bml0LCAmY3UpOwotKwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAob2JqZmls ZSwgJmR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mbyk7Ci0rICBidWZmZXJfc2l6ZSA9IGR3YXJmMl9w ZXJfb2JqZmlsZS0+aW5mby5zaXplOwotKyAgYnVmZmVyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5p bmZvLmJ1ZmZlcjsKLSsgIGluZm9fcHRyID0gYnVmZmVyICsgdGhpc19jdS0+b2Zmc2V0OwotKyAg YmVnX29mX2NvbXBfdW5pdCA9IGluZm9fcHRyOwotKwotKyAgaW5mb19wdHIgPSBwYXJ0aWFsX3Jl YWRfY29tcF91bml0X2hlYWQgKCZjdS5oZWFkZXIsIGluZm9fcHRyLAotKwkJCQkJICBidWZmZXIs IGJ1ZmZlcl9zaXplLAotKwkJCQkJICBhYmZkKTsKLSsKLSsgIC8qIENvbXBsZXRlIHRoZSBjdV9o ZWFkZXIuICAqLwotKyAgY3UuaGVhZGVyLm9mZnNldCA9IGJlZ19vZl9jb21wX3VuaXQgLSBidWZm ZXI7Ci0rICBjdS5oZWFkZXIuZmlyc3RfZGllX29mZnNldCA9IGluZm9fcHRyIC0gYmVnX29mX2Nv bXBfdW5pdDsKLSsKLSsgIHRoaXNfY3UtPmN1ID0gJmN1OwotKyAgY3UucGVyX2N1ID0gdGhpc19j dTsKLSsKLSsgIGR3YXJmMl9yZWFkX2FiYnJldnMgKGFiZmQsICZjdSk7Ci0rICBtYWtlX2NsZWFu dXAgKGR3YXJmMl9mcmVlX2FiYnJldl90YWJsZSwgJmN1KTsKLSsKLSsgIGlmICh0aGlzX2N1LT5m cm9tX2RlYnVnX3R5cGVzKQotKyAgICBpbmZvX3B0ciArPSA4IC8qc2lnbmF0dXJlKi8gKyBjdS5o ZWFkZXIub2Zmc2V0X3NpemU7Ci0rICBpbml0X2N1X2RpZV9yZWFkZXIgKCZyZWFkZXJfc3BlY3Ms ICZjdSk7Ci0rICBpbmZvX3B0ciA9IHJlYWRfZnVsbF9kaWUgKCZyZWFkZXJfc3BlY3MsICZjb21w X3VuaXRfZGllLCBpbmZvX3B0ciwKLSsJCQkgICAgJmhhc19jaGlsZHJlbik7Ci0rCi0rICBhdHRy ID0gZHdhcmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX3N0bXRfbGlzdCwgJmN1KTsKLSsg IGlmIChhdHRyKQorKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAoYXR0cikgJiYgY3Ut Pmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKICsgICAgewotKyAgICAgIHVuc2lnbmVkIGludCBs aW5lX29mZnNldCA9IERXX1VOU05EIChhdHRyKTsKLSsgICAgICBsaCA9IGR3YXJmX2RlY29kZV9s aW5lX2hlYWRlciAobGluZV9vZmZzZXQsIGFiZmQsICZjdSk7CisrICAgICAgc3RydWN0IGRpZV9p bmZvICp0YXJnZXRfZGllOworKyAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKnRhcmdldF9jdSA9IGN1 OworKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2NfYXR0cjsKKyAKKy0gIHJhbmdl X3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCBsb3csIGhpZ2gpOwor KyAgICAgIHRhcmdldF9kaWUgPSBmb2xsb3dfZGllX3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRh cmdldF9jdSk7CisrICAgICAgZ2RiX2Fzc2VydCAodGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5v YmpmaWxlKTsKKysgICAgICB0YXJnZXRfbG9jX2F0dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2Rp ZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdldF9jdSk7CisgCistICAvKiBNYXJrIGFycmF5cyB3aXRo IGR5bmFtaWMgbGVuZ3RoIGF0IGxlYXN0IGFzIGFuIGFycmF5IG9mIHVuc3BlY2lmaWVkCistICAg ICBsZW5ndGguICBHREIgY291bGQgY2hlY2sgdGhlIGJvdW5kYXJ5IGJ1dCBiZWZvcmUgaXQgZ2V0 cyBpbXBsZW1lbnRlZCBhdAorLSAgICAgbGVhc3QgYWxsb3cgYWNjZXNzaW5nIHRoZSBhcnJheSBl bGVtZW50cy4gICovCistICBpZiAoYXR0ciAmJiBhdHRyLT5mb3JtID09IERXX0ZPUk1fYmxvY2sx KQorLSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CisrICAg ICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAorKyAgICAg ICAgPSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q7CisrICAgICAgVFlQRV9SQU5HRV9E QVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKKysg ICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRyLCB0 YXJnZXRfY3UpOworKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3Ry aWRlLnUuZHdhcmZfbG9jbGlzdC50eXBlCisrICAgICAgICA9IGRpZV90eXBlICh0YXJnZXRfZGll LCB0YXJnZXRfY3UpOworKyAgICAgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwogKyAg ICB9Ci0rICBpZiAobGggPT0gTlVMTCkKKysgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lz X2NvbnN0YW50IChhdHRyKSkKICsgICAgewotKyAgICAgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7 Ci0rICAgICAgcmV0dXJuOworKyAgICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0g ZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKKysgICAgICBpZiAoVFlQ RV9CWVRFX1NUUklERSAocmFuZ2VfdHlwZSkgPT0gMCkKKysJY29tcGxhaW50ICgmc3ltZmlsZV9j b21wbGFpbnRzLAorKwkJICAgXygiRm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBv cnRlZCB2YWx1ZSAwIikpOwogKyAgICB9CisgCisgICBuYW1lID0gZHdhcmYyX25hbWUgKGRpZSwg Y3UpOworICAgaWYgKG5hbWUpCitAQCAtMTA1NTksMTAgKzEwNzY3LDEyIEBAIHZhcl9kZWNvZGVf bG9jYXRpb24gKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKKyAg ICAgIChpLmUuIHdoZW4gdGhlIHZhbHVlIG9mIGEgcmVnaXN0ZXIgb3IgbWVtb3J5IGxvY2F0aW9u IGlzCisgICAgICByZWZlcmVuY2VkLCBvciBhIHRocmVhZC1sb2NhbCBibG9jaywgZXRjLikuICBU aGVuIGFnYWluLCBpdCBtaWdodAorICAgICAgbm90IGJlIHdvcnRod2hpbGUuICBJJ20gYXNzdW1p bmcgdGhhdCBpdCBpc24ndCB1bmxlc3MgcGVyZm9ybWFuY2UKKy0gICAgIG9yIG1lbW9yeSBudW1i ZXJzIHNob3cgbWUgb3RoZXJ3aXNlLiAgKi8KKysgICAgIG9yIG1lbW9yeSBudW1iZXJzIHNob3cg bWUgb3RoZXJ3aXNlLgorKyAgICAgCisrICAgICBTWU1CT0xfQ0xBU1MgbWF5IGdldCBvdmVycmlk ZW4gYnkgZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkLiAgKi8KKyAKKy0gIGR3YXJmMl9zeW1i b2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7CisgICBTWU1CT0xfQ0xBU1MgKHN5bSkg PSBMT0NfQ09NUFVURUQ7CisrICBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKGF0dHIsIHN5 bSwgY3UpOworIH0KKyAKKyAvKiBHaXZlbiBhIHBvaW50ZXIgdG8gYSBEV0FSRiBpbmZvcm1hdGlv biBlbnRyeSwgZmlndXJlIG91dCBpZiB3ZSBuZWVkCitAQCAtMTA2MDAsNiArMTA4MTAsOCBAQCBu ZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwg c3RydWN0IGR3YXJmMl9jdSAqY3UsCisgICAgICAgZWxzZQorIAlzeW0gPSBPQlNUQUNLX1pBTExP QyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3RydWN0IHN5bWJvbCk7CisgICAgICAgT0JK U1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOworKyAgICAgIC8qIFNvbWUgbWV0aG9kcyBhcmUgY2Fs bGVkIHcvbyBjaGVja2luZyBTWU1CT0xfQ09NUFVURURfT1BTIHZhbGlkaXR5LiAgKi8KKysgICAg ICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOworIAor ICAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBkZW1hbmds ZWQgZm9ybSAoaWYgYW55KS4gICovCisgICAgICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAoc3ltLCBj dS0+bGFuZ3VhZ2UpOworQEAgLTExMzY3LDYgKzExNTc5LDkgQEAgcmVhZF90eXBlX2RpZV8xIChz dHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgICAgICAgYnJlYWs7 CisgICAgIH0KKyAKKysgIGlmICh0aGlzX3R5cGUpCisrICAgIGZpbmFsaXplX3R5cGUgKHRoaXNf dHlwZSk7CiArCi0rICBmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoY29tcF91bml0X2RpZSwgJmN1 LCAmbmFtZSwgJmNvbXBfZGlyKTsKLSsKLSsgIHRoaXNfY3UtPnYucXVpY2stPmxpbmVzID0gbGg7 CisgICByZXR1cm4gdGhpc190eXBlOworIH0KKyAKK0BAIC0xNDExOSw2NyArMTQzMzQsMTAyIEBA IGF0dHJfZm9ybV9pc19jb25zdGFudCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0cikKKyAgICAgfQor IH0KKyAKKy1zdGF0aWMgdm9pZAorLWR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0 IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IHN5bWJvbCAqc3ltLAorLQkJCSAgICAgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCisrLyogQ29udmVydCBEV19CTE9DSyBpbnRvIHN0cnVjdCBkd2FyZjJfbG9j ZXhwcl9iYXRvbi4gIEFUVFIgbXVzdCBiZSBhIERXX0JMT0NLCisrICAgYXR0cmlidXRlIHR5cGUu ICAqLwogKwotKyAgdGhpc19jdS0+di5xdWljay0+ZmlsZV9uYW1lcwotKyAgICA9IG9ic3RhY2tf YWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkgICAgIGxoLT5udW1fZmlsZV9u YW1lcyAqIHNpemVvZiAoY2hhciAqKSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgbGgtPm51bV9maWxl X25hbWVzOyArK2kpCi0rICAgIHRoaXNfY3UtPnYucXVpY2stPmZpbGVfbmFtZXNbaV0gPSBmaWxl X2Z1bGxfbmFtZSAoaSArIDEsIGxoLCBjb21wX2Rpcik7Cisrc3RhdGljIHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbiAqCisrZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoc3RydWN0IGF0 dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCisgeworLSAgaWYgKGF0dHJfZm9y bV9pc19zZWN0aW9uX29mZnNldCAoYXR0cikKKy0gICAgICAvKiAiLmRlYnVnX2xvYyIgbWF5IG5v dCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5IGJlIG91dHNpZGUKKy0JIHRoZSBzZWN0 aW9uLiAgSWYgc28sIGZhbGwgdGhyb3VnaCB0byB0aGUgY29tcGxhaW50IGluIHRoZQorLQkgb3Ro ZXIgYnJhbmNoLiAgKi8KKy0gICAgICAmJiBEV19VTlNORCAoYXR0cikgPCBkd2FyZjJfcGVyX29i amZpbGUtPmxvYy5zaXplKQorLSAgICB7CistICAgICAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2Jh dG9uICpiYXRvbjsKKysgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisgCist ICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywKKy0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CistICAg ICAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgZ2RiX2Fzc2VydCAoYmF0b24t PnBlcl9jdSk7CisrICBnZGJfYXNzZXJ0IChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKTsKKyAK Ky0gICAgICBkd2FyZjJfcmVhZF9zZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUs CistCQkJICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jKTsKKysgIGJhdG9uID0gb2JzdGFja19h bGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmJhdG9uKSk7Cisr ICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJf Y3UpOworIAorLSAgICAgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcgdGhlIGxvY2F0aW9uIGxp c3QgaXMsIGJ1dCBtYWtlIHN1cmUgd2UKKy0JIGRvbid0IHJ1biBvZmYgdGhlIGVkZ2Ugb2YgdGhl IHNlY3Rpb24uICAqLworLSAgICAgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5s b2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKKy0gICAgICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9w ZXJfb2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsKKy0gICAgICBiYXRvbi0+ YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKKy0gICAgICBpZiAoY3UtPmJhc2Vfa25v d24gPT0gMCkKKy0JY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorLQkJICAgXygiTG9j YXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIp KTsKKysgIC8qIE5vdGUgdGhhdCB3ZSdyZSBqdXN0IGNvcHlpbmcgdGhlIGJsb2NrJ3MgZGF0YSBw b2ludGVyCisrICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9p bnRpbmcgaW50byB0aGUKKysgICAgIGluZm9fYnVmZmVyIGZvciBTWU0ncyBvYmpmaWxlOyByaWdo dCBub3cgd2UgbmV2ZXIgcmVsZWFzZQorKyAgICAgdGhhdCBidWZmZXIsIGJ1dCB3aGVuIHdlIGRv IGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5CisrICAgICBuZWVkIHRvIGNoYW5nZS4gICovCisr ICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKKysgIGJhdG9uLT5kYXRhID0g RFdfQkxPQ0sgKGF0dHIpLT5kYXRhOworKyAgZ2RiX2Fzc2VydCAoYmF0b24tPnNpemUgPT0gMCB8 fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKICsKLSsgIGRvX2NsZWFudXBzIChjbGVhbnVwcyk7Cisr ICByZXR1cm4gYmF0b247CiArfQogKwotKy8qIEEgaGVscGVyIGZvciB0aGUgInF1aWNrIiBmdW5j dGlvbnMgd2hpY2ggY29tcHV0ZXMgYW5kIGNhY2hlcyB0aGUKLSsgICByZWFsIHBhdGggZm9yIGEg Z2l2ZW4gZmlsZSBuYW1lIGZyb20gdGhlIGxpbmUgdGFibGUuCi0rICAgZHcyX3JlcXVpcmVfbGlu ZV9oZWFkZXIgbXVzdCBoYXZlIGJlZW4gY2FsbGVkIGJlZm9yZSB0aGlzIGlzCi0rICAgaW52b2tl ZC4gICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKgotK2R3Ml9yZXF1aXJlX2Z1bGxfcGF0aCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqY3UsCi0rCQkgICAgICAgaW50IGluZGV4KQorK3N0YXRpYyBzdHJ1Y3QgZHdhcmYyX2xvY2xp c3RfYmF0b24gKgorK2R3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24gKHN0cnVjdCBhdHRyaWJ1 dGUgKmF0dHIsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGlmICghY3UtPnYucXVpY2st PmZ1bGxfbmFtZXMpCi0rICAgIGN1LT52LnF1aWNrLT5mdWxsX25hbWVzCi0rICAgICAgPSBPQlNU QUNLX0NBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQljdS0+di5xdWljay0+ bGluZXMtPm51bV9maWxlX25hbWVzLAotKwkJCXNpemVvZiAoY2hhciAqKSk7CisrICBzdHJ1Y3Qg ZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwogKwotKyAgaWYgKCFjdS0+di5xdWljay0+ZnVs bF9uYW1lc1tpbmRleF0pCi0rICAgIGN1LT52LnF1aWNrLT5mdWxsX25hbWVzW2luZGV4XQotKyAg ICAgID0gZ2RiX3JlYWxwYXRoIChjdS0+di5xdWljay0+ZmlsZV9uYW1lc1tpbmRleF0pOworKyAg LyogRFdfQVRfbG9jYXRpb24gb2YgdGhlIHJlZmVyZW5jZWQgRElFIG1heSBiZSBtaXNzaW5nIGlm IHRoZSByZWZlcmVuY2VkCisrICAgICB2YXJpYWJsZSBoYXMgYmVlbiBvcHRpbWl6ZWQgb3V0LiAg Ki8KKysgIGlmICghYXR0cikKKysgICAgcmV0dXJuIE5VTEw7CisgCisrICBkd2FyZjJfcmVhZF9z ZWN0aW9uIChkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUsCisrCQkgICAgICAgJmR3YXJmMl9w ZXJfb2JqZmlsZS0+bG9jKTsKICsKLSsgIHJldHVybiBjdS0+di5xdWljay0+ZnVsbF9uYW1lc1tp bmRleF07Ci0rfQorKyAgaWYgKCEoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRyKQor KwkvKiAiLmRlYnVnX2xvYyIgbWF5IG5vdCBleGlzdCBhdCBhbGwsIG9yIHRoZSBvZmZzZXQgbWF5 IGJlIG91dHNpZGUKKysJICAgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRo ZSBjb21wbGFpbnQgaW4gdGhlCisrCSAgIG90aGVyIGJyYW5jaC4gICovCisrCSYmIERXX1VOU05E IChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpKQorKyAgICByZXR1cm4gTlVM TDsKICsKLStzdGF0aWMgc3RydWN0IHN5bXRhYiAqCi0rZHcyX2ZpbmRfbGFzdF9zb3VyY2Vfc3lt dGFiIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBpbnQgaW5kZXg7Ci0rICBkdzJf c2V0dXAgKG9iamZpbGUpOwotKyAgaW5kZXggPSBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91 bml0cyAtIDE7Ci0rICByZXR1cm4gZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwKLSsJ CQkJIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaW5kZXhdKTsKKysgIGJhdG9u ID0gb2JzdGFja19hbGxvYyAoJmN1LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCisrCQkJIHNp emVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CisrICBiYXRvbi0+cGVyX2N1ID0g Y3UtPnBlcl9jdTsKKysgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOworKworKyAgLyogV2Ug ZG9uJ3Qga25vdyBob3cgbG9uZyB0aGUgbG9jYXRpb24gbGlzdCBpcywgYnV0IG1ha2Ugc3VyZSB3 ZQorKyAgICAgZG9uJ3QgcnVuIG9mZiB0aGUgZWRnZSBvZiB0aGUgc2VjdGlvbi4gICovCisrICBi YXRvbi0+c2l6ZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUgLSBEV19VTlNORCAoYXR0 cik7CisrICBiYXRvbi0+ZGF0YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLmJ1ZmZlciArIERX X1VOU05EIChhdHRyKTsKKysgIGJhdG9uLT5iYXNlX2FkZHJlc3MgPSBjdS0+YmFzZV9hZGRyZXNz OworKyAgaWYgKGN1LT5iYXNlX2tub3duID09IDApCisrICAgIGNvbXBsYWludCAoJnN5bWZpbGVf Y29tcGxhaW50cywKKysJICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0IHNwZWNp ZnlpbmcgdGhlIENVIGJhc2UgYWRkcmVzcy4iKSk7CisrCisrICByZXR1cm4gYmF0b247CiArfQog KworKy8qIFNZTSBtYXkgZ2V0IGl0cyBTWU1CT0xfQ0xBU1Mgb3ZlcnJpZGVuIG9uIGludmFsaWQg QVRUUiBjb250ZW50LiAgKi8KKysKICtzdGF0aWMgdm9pZAotK2R3Ml9mb3JnZXRfY2FjaGVkX3Nv dXJjZV9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytkd2FyZjJfc3ltYm9sX21hcmtf Y29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKKysJ CQkgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGludCBpOworKyAgc3RydWN0IGR3 YXJmMl9sb2NsaXN0X2JhdG9uICpsb2NsaXN0X2JhdG9uOwogKwotKyAgZHcyX3NldHVwIChvYmpm aWxlKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0 czsgKytpKQorKyAgbG9jbGlzdF9iYXRvbiA9IGR3YXJmMl9hdHRyX3RvX2xvY2xpc3RfYmF0b24g KGF0dHIsIGN1KTsKKysgIGlmIChsb2NsaXN0X2JhdG9uKQogKyAgICB7Ci0rICAgICAgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3Vu aXRzW2ldOwotKwotKyAgICAgIGlmIChjdS0+di5xdWljay0+ZnVsbF9uYW1lcykKLSsJewotKwkg IGludCBqOwotKwotKwkgIGZvciAoaiA9IDA7IGogPCBjdS0+di5xdWljay0+bGluZXMtPm51bV9m aWxlX25hbWVzOyArK2opCi0rCSAgICB4ZnJlZSAoKHZvaWQgKikgY3UtPnYucXVpY2stPmZ1bGxf bmFtZXNbal0pOwotKwl9CisgICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZkd2Fy ZjJfbG9jbGlzdF9mdW5jczsKKy0gICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBi YXRvbjsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkgPSBsb2NsaXN0X2JhdG9u OwogKyAgICB9Ci0rfQotKwotK3N0YXRpYyBpbnQKLStkdzJfbG9va3VwX3N5bXRhYiAoc3RydWN0 IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkgICBjb25zdCBjaGFyICpm dWxsX3BhdGgsIGNvbnN0IGNoYXIgKnJlYWxfcGF0aCwKLSsJCSAgIHN0cnVjdCBzeW10YWIgKipy ZXN1bHQpCi0rewotKyAgaW50IGk7Ci0rICBpbnQgY2hlY2tfYmFzZW5hbWUgPSBsYmFzZW5hbWUg KG5hbWUpID09IG5hbWU7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpiYXNlX2N1ID0g TlVMTDsKLSsKLSsgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgZHdh cmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKLSsgICAgewotKyAgICAgIGludCBq OwotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpm aWxlLT5hbGxfY29tcF91bml0c1tpXTsKLSsKLSsgICAgICBpZiAoY3UtPnYucXVpY2stPnN5bXRh YikKLSsJY29udGludWU7Ci0rCi0rICAgICAgZHcyX3JlcXVpcmVfbGluZV9oZWFkZXIgKG9iamZp bGUsIGN1KTsKLSsgICAgICBpZiAoIWN1LT52LnF1aWNrLT5saW5lcykKLSsJY29udGludWU7Ci0r Ci0rICAgICAgZm9yIChqID0gMDsgaiA8IGN1LT52LnF1aWNrLT5saW5lcy0+bnVtX2ZpbGVfbmFt ZXM7ICsraikKLSsJewotKwkgIGNvbnN0IGNoYXIgKnRoaXNfbmFtZSA9IGN1LT52LnF1aWNrLT5m aWxlX25hbWVzW2pdOwotKwotKwkgIGlmIChGSUxFTkFNRV9DTVAgKG5hbWUsIHRoaXNfbmFtZSkg PT0gMCkKLSsJICAgIHsKLSsJICAgICAgKnJlc3VsdCA9IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIg KG9iamZpbGUsIGN1KTsKLSsJICAgICAgcmV0dXJuIDE7Ci0rCSAgICB9Ci0rCi0rCSAgaWYgKGNo ZWNrX2Jhc2VuYW1lICYmICEgYmFzZV9jdQotKwkgICAgICAmJiBGSUxFTkFNRV9DTVAgKGxiYXNl bmFtZSAodGhpc19uYW1lKSwgbmFtZSkgPT0gMCkKLSsJICAgIGJhc2VfY3UgPSBjdTsKLSsKLSsJ ICBpZiAoZnVsbF9wYXRoICE9IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGNvbnN0IGNoYXIgKnRo aXNfZnVsbF9uYW1lID0gZHcyX3JlcXVpcmVfZnVsbF9wYXRoIChvYmpmaWxlLAotKwkJCQkJCQkJ ICBjdSwgaik7Ci0rCi0rCSAgICAgIGlmICh0aGlzX2Z1bGxfbmFtZQotKwkJICAmJiBGSUxFTkFN RV9DTVAgKGZ1bGxfcGF0aCwgdGhpc19mdWxsX25hbWUpID09IDApCi0rCQl7Ci0rCQkgICpyZXN1 bHQgPSBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0rCQkgIHJldHVybiAx OwotKwkJfQotKwkgICAgfQotKwotKwkgIGlmIChyZWFsX3BhdGggIT0gTlVMTCkKLSsJICAgIHsK LSsJICAgICAgY29uc3QgY2hhciAqdGhpc19mdWxsX25hbWUgPSBkdzJfcmVxdWlyZV9mdWxsX3Bh dGggKG9iamZpbGUsCi0rCQkJCQkJCQkgIGN1LCBqKTsKLSsKLSsJICAgICAgaWYgKHRoaXNfZnVs bF9uYW1lICE9IE5VTEwpCi0rCQl7Ci0rCQkgIGNoYXIgKnJwID0gZ2RiX3JlYWxwYXRoICh0aGlz X2Z1bGxfbmFtZSk7Ci0rCQkgIGlmIChycCAhPSBOVUxMICYmIEZJTEVOQU1FX0NNUCAocmVhbF9w YXRoLCBycCkgPT0gMCkKLSsJCSAgICB7Ci0rCQkgICAgICB4ZnJlZSAocnApOwotKwkJICAgICAg KnJlc3VsdCA9IGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1KTsKLSsJCSAgICAg IHJldHVybiAxOwotKwkJICAgIH0KLSsJCSAgeGZyZWUgKHJwKTsKLSsJCX0KLSsJICAgIH0KLSsJ fQotKyAgICB9Ci0rCi0rICBpZiAoYmFzZV9jdSkKKysgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19i bG9jayAoYXR0cikpCiArICAgIHsKLSsgICAgICAqcmVzdWx0ID0gZHcyX2luc3RhbnRpYXRlX3N5 bXRhYiAob2JqZmlsZSwgYmFzZV9jdSk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsg IHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgc3RydWN0IHN5bXRhYiAqCi0rZHcyX2xvb2t1cF9z eW1ib2wgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgYmxvY2tfaW5kZXgsCi0rCQkgICBj b25zdCBjaGFyICpuYW1lLCBkb21haW5fZW51bSBkb21haW4pCi0rewotKyAgLyogV2UgZG8gYWxs IHRoZSB3b3JrIGluIHRoZSBwcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgaG9vawotKyAgICAg aW5zdGVhZC4gICovCi0rICByZXR1cm4gTlVMTDsKLSt9CisrICAgICAgU1lNQk9MX0NPTVBVVEVE X09QUyAoc3ltKSA9ICZkd2FyZjJfbG9jZXhwcl9mdW5jczsKKysgICAgICBTWU1CT0xfTE9DQVRJ T05fQkFUT04gKHN5bSkgPSBkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRyLCBjdSk7 CisgICAgIH0KKyAgIGVsc2UKKyAgICAgeworLSAgICAgIHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9i YXRvbiAqYmF0b247CisrICAgICAgZHdhcmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2NvbXBsYWlu dCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKKysJCQkJCSAgICAgU1lNQk9MX05BVFVSQUxfTkFN RSAoc3ltKSk7CisgCistICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUt Pm9iamZpbGVfb2JzdGFjaywKKy0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NleHBy X2JhdG9uKSk7CistICAgICAgYmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7CistICAgICAgZ2Ri X2Fzc2VydCAoYmF0b24tPnBlcl9jdSk7CisrICAgICAgLyogU29tZSBtZXRob2RzIGFyZSBjYWxs ZWQgdy9vIGNoZWNraW5nIFNZTUJPTF9DT01QVVRFRF9PUFMgdmFsaWRpdHkuICAqLworIAorLSAg ICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorLQl7CistCSAgLyogTm90ZSB0aGF0 IHdlJ3JlIGp1c3QgY29weWluZyB0aGUgYmxvY2sncyBkYXRhIHBvaW50ZXIKKy0JICAgICBoZXJl LCBub3QgdGhlIGFjdHVhbCBkYXRhLiAgV2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKKy0J ICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5ldmVyIHJl bGVhc2UKKy0JICAgICB0aGF0IGJ1ZmZlciwgYnV0IHdoZW4gd2UgZG8gY2xlYW4gdXAgcHJvcGVy bHkgdGhpcyBtYXkKKy0JICAgICBuZWVkIHRvIGNoYW5nZS4gICovCistCSAgYmF0b24tPnNpemUg PSBEV19CTE9DSyAoYXR0ciktPnNpemU7CistCSAgYmF0b24tPmRhdGEgPSBEV19CTE9DSyAoYXR0 ciktPmRhdGE7CistCX0KKy0gICAgICBlbHNlCistCXsKKy0JICBkd2FyZjJfaW52YWxpZF9hdHRy aWJfY2xhc3NfY29tcGxhaW50ICgibG9jYXRpb24gZGVzY3JpcHRpb24iLAorLQkJCQkJCSBTWU1C T0xfTkFUVVJBTF9OQU1FIChzeW0pKTsKKy0JICBiYXRvbi0+c2l6ZSA9IDA7CistCSAgYmF0b24t PmRhdGEgPSBOVUxMOworLQl9CisrICAgICAgU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9ICZk d2FyZjJfbWlzc2luZ19mdW5jczsKKysgICAgICBTWU1CT0xfTE9DQVRJT05fQkFUT04gKHN5bSkg PSBOVUxMOworIAorLSAgICAgIFNZTUJPTF9DT01QVVRFRF9PUFMgKHN5bSkgPSAmZHdhcmYyX2xv Y2V4cHJfZnVuY3M7CistICAgICAgU1lNQk9MX0xPQ0FUSU9OX0JBVE9OIChzeW0pID0gYmF0b247 CisrICAgICAgLyogRm9yIGZ1bmN0aW9ucyBhIG1pc3NpbmcgRFdfQVRfZnJhbWVfYmFzZSBkb2Vz IG5vdCBvcHRpbWl6ZSBvdXQgdGhlCisrCSB3aG9sZSBmdW5jdGlvbiBkZWZpbml0aW9uLCBvbmx5 IGl0cyBmcmFtZSBiYXNlIHJlc29sdmluZy4gICovCisrICAgICAgaWYgKGF0dHItPm5hbWUgPT0g RFdfQVRfbG9jYXRpb24pCisrCVNZTUJPTF9DTEFTUyAoc3ltKSA9IExPQ19PUFRJTUlaRURfT1VU OworICAgICB9CisgfQorIAorQEAgLTE0NTMzLDYgKzE0NzgzLDMxIEBAIG9mZnNldF9hbmRfdHlw ZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQorICAgcmV0 dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5vZmZzZXQ7CisgfQorIAorKy8qIEZpbGwg aW4gZ2VuZXJpYyBhdHRyaWJ1dGVzIGFwcGxpY2FibGUgZm9yIHR5cGUgRElFcy4gICovCiArCi0r LyogQSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBleHBhbmRzIGFsbCBzeW10YWJzIHRoYXQgaG9sZCBh biBvYmplY3QKLSsgICBuYW1lZCBOQU1FLiAgKi8KICtzdGF0aWMgdm9pZAotK2R3Ml9kb19leHBh bmRfc3ltdGFic19tYXRjaGluZyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIg Km5hbWUpCisrZmV0Y2hfZGllX3R5cGVfYXR0cnMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1 Y3QgdHlwZSAqdHlwZSwKKysJCSAgICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogK3sKLSsgIGR3 Ml9zZXR1cCAob2JqZmlsZSk7CisrICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogKwotKyAgaWYg KGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUpCi0rICAgIHsKLSsgICAgICBvZmZzZXRf dHlwZSAqdmVjOworKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2RhdGFfbG9jYXRp b24sIGN1KTsKKysgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQorKyAgICBUWVBFX0RB VEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpID0gZHdhcmYyX2F0dHJfdG9fbG9jZXhwcl9i YXRvbiAoYXR0ciwKKysJCQkJCQkJCQkgIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX0RBVEFf TE9DQVRJT05fSVNfQUREUiAodHlwZSkpOwogKwotKyAgICAgIGlmIChmaW5kX3Nsb3RfaW5fbWFw cGVkX2hhc2ggKGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUsCi0rCQkJCSAgICBuYW1l LCAmdmVjKSkKLSsJewotKwkgIG9mZnNldF90eXBlIGksIGxlbiA9IE1BWUJFX1NXQVAgKCp2ZWMp OwotKwkgIGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkKLSsJICAgIHsKLSsJICAgICAgb2Zmc2V0 X3R5cGUgY3VfaW5kZXggPSBNQVlCRV9TV0FQICh2ZWNbaSArIDFdKTsKLSsJICAgICAgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3U7Ci0rCSAgICAgIGN1ID0gZHdhcmYyX3Blcl9vYmpmaWxl LT5hbGxfY29tcF91bml0c1tjdV9pbmRleF07Ci0rCSAgICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10 YWIgKG9iamZpbGUsIGN1KTsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rfQorKyAgYXR0ciA9IGR3 YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOworKyAgaWYgKGF0dHJfZm9ybV9p c19ibG9jayAoYXR0cikpCisrICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRy X3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9B TExPQ0FURUQgKHR5cGUpKTsKICsKLStzdGF0aWMgdm9pZAotK2R3Ml9wcmVfZXhwYW5kX3N5bXRh YnNfbWF0Y2hpbmcgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgaW50IGtpbmQsIGNv bnN0IGNoYXIgKm5hbWUsCi0rCQkJCSBkb21haW5fZW51bSBkb21haW4pCi0rewotKyAgZHcyX2Rv X2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLCBuYW1lKTsKKysgIGF0dHIgPSBkd2Fy ZjJfYXR0ciAoZGllLCBEV19BVF9hc3NvY2lhdGVkLCBjdSk7CisrICBpZiAoYXR0cl9mb3JtX2lz X2Jsb2NrIChhdHRyKSkKKysgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRy X3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9B U1NPQ0lBVEVEICh0eXBlKSk7CiArfQogKwotK3N0YXRpYyB2b2lkCi0rZHcyX3ByaW50X3N0YXRz IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSt7Ci0rICBpbnQgaSwgY291bnQ7Ci0rCi0rICBk dzJfc2V0dXAgKG9iamZpbGUpOwotKyAgY291bnQgPSAwOwotKyAgZm9yIChpID0gMDsgaSA8IGR3 YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0rICAgIHsKLSsgICAgICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBf dW5pdHNbaV07CisgLyogU2V0IHRoZSB0eXBlIGFzc29jaWF0ZWQgd2l0aCBESUUgdG8gVFlQRS4g IFNhdmUgaXQgaW4gQ1UncyBoYXNoCisgICAgdGFibGUgaWYgbmVjZXNzYXJ5LiAgRm9yIGNvbnZl bmllbmNlLCByZXR1cm4gVFlQRS4KKyAKK0BAIC0xNDU1OCw2ICsxNDgzMyw4IEBAIHNldF9kaWVf dHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKKyAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gY3UtPm9iamZpbGU7Cisg ICBodGFiX3QgKnR5cGVfaGFzaF9wdHI7CisgCisrICBmZXRjaF9kaWVfdHlwZV9hdHRycyAoZGll LCB0eXBlLCBjdSk7CiArCi0rICAgICAgaWYgKCFjdS0+di5xdWljay0+c3ltdGFiKQotKwkrK2Nv dW50OwotKyAgICB9Ci0rICBwcmludGZfZmlsdGVyZWQgKF8oIiAgTnVtYmVyIG9mIHVucmVhZCBD VXM6ICVkXG4iKSwgY291bnQpOwotK30KKyAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0 aGF0IHRoZSBnbmF0LXNwZWNpZmljIGRhdGEgaXMgYWx3YXlzCisgICAgICBpbml0aWFsaXplZCAo aWYgbm90IGFscmVhZHkgc2V0KS4gIFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQorICAgICAg d2Ugc2hvdWxkIG5vdCBiZSBkb2luZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVh IGlzCitkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKK2luZGV4IDI3 MGY5M2YuLmE1ODljMjMgMTAwNjQ0CistLS0gYS9nZGIvZWxmcmVhZC5jCisrKysgYi9nZGIvZWxm cmVhZC5jCitAQCAtMzcsNiArMzcsNyBAQAorICNpbmNsdWRlICJjb21wbGFpbnRzLmgiCisgI2lu Y2x1ZGUgImRlbWFuZ2xlLmgiCisgI2luY2x1ZGUgInBzeW1wcml2LmgiCisrI2luY2x1ZGUgImdk YnR5cGVzLmgiCisgCisgZXh0ZXJuIHZvaWQgX2luaXRpYWxpemVfZWxmcmVhZCAodm9pZCk7Cisg CitAQCAtMTgzLDcgKzE4NCw4IEBAIHJlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAq bmFtZSwgaW50IG5hbWVfbGVuLCBpbnQgY29weV9uYW1lLAorIHsKKyAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CisgCistICBpZiAobXNfdHlw ZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQpCisrICBpZiAobXNfdHlw ZSA9PSBtc3RfdGV4dCB8fCBtc190eXBlID09IG1zdF9maWxlX3RleHQKKysgICAgICB8fCBtc190 eXBlID09IG1zdF90ZXh0X2dudV9pZnVuYykKKyAgICAgYWRkcmVzcyA9IGdkYmFyY2hfc21hc2hf dGV4dF9hZGRyZXNzIChnZGJhcmNoLCBhZGRyZXNzKTsKKyAKKyAgIHJldHVybiBwcmltX3JlY29y ZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBuYW1lX2xlbiwgY29weV9uYW1lLCBhZGRyZXNz LAorQEAgLTM5MSw3ICszOTMsMTAgQEAgZWxmX3N5bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwgaW50IHR5cGUsCisgCSAgICB7CisgCSAgICAgIGlmIChzeW0tPmZsYWdzICYgKEJT Rl9HTE9CQUwgfCBCU0ZfV0VBSykpCisgCQl7CistCQkgIG1zX3R5cGUgPSBtc3RfdGV4dDsKKysJ CSAgaWYgKHN5bS0+ZmxhZ3MgJiBCU0ZfR05VX0lORElSRUNUX0ZVTkNUSU9OKQorKwkJICAgIG1z X3R5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7CisrCQkgIGVsc2UKKysJCSAgICBtc190eXBlID0g bXN0X3RleHQ7CisgCQl9CisgCSAgICAgIGVsc2UgaWYgKChzeW0tPm5hbWVbMF0gPT0gJy4nICYm IHN5bS0+bmFtZVsxXSA9PSAnTCcpCisgCQkgICAgICAgfHwgKChzeW0tPmZsYWdzICYgQlNGX0xP Q0FMKQorQEAgLTU3Miw2ICs1NzcsMjUwIEBAIGVsZl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGludCB0eXBlLAorICAgICB9CisgfQorIAorKy8qIEZJWE1FOiBEZWxheSBp dCB0aHJvdWdoIGVsZl9zeW1fZm5zLiAgKi8KICsKICtzdGF0aWMgdm9pZAotK2R3Ml9kdW1wIChz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKytlbGZfcmVsX3BsdF9yZWFkIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCiArewotKyAgLyogTm90aGlu ZyB3b3J0aCBwcmludGluZy4gICovCi0rfQorKyAgYmZkICpvYmZkID0gb2JqZmlsZS0+b2JmZDsK KysgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRf ZGF0YSAob2JmZCk7CisrICBhc2VjdGlvbiAqcGx0LCAqcmVscGx0LCAqZ290X3BsdDsKKysgIHVu c2lnbmVkIHU7CisrICBpbnQgcGx0X2VsZl9pZHg7CisrICBiZmRfc2l6ZV90eXBlIHJlbG9jX2Nv dW50LCByZWxvYzsKKysgIGNoYXIgKnN0cmluZ19idWZmZXIgPSBOVUxMOworKyAgc2l6ZV90IHN0 cmluZ19idWZmZXJfc2l6ZSA9IDA7CisrICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKKysgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsKKysgIHN0cnVjdCB0eXBl ICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZGF0YV9wdHI7Cisr ICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOwogKwotK3N0YXRpYyB2 b2lkCi0rZHcyX3JlbG9jYXRlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rp b25fb2Zmc2V0cyAqbmV3X29mZnNldHMsCi0rCSAgICAgIHN0cnVjdCBzZWN0aW9uX29mZnNldHMg KmRlbHRhKQotK3sKLSsgIC8qIFRoZXJlJ3Mgbm90aGluZyB0byByZWxvY2F0ZSBoZXJlLiAgKi8K LSt9CisrICBpZiAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNrbGluaykKKysg ICAgcmV0dXJuOwogKwotK3N0YXRpYyB2b2lkCi0rZHcyX2V4cGFuZF9zeW10YWJzX2Zvcl9mdW5j dGlvbiAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCSBjb25zdCBjaGFyICpmdW5jX25h bWUpCi0rewotKyAgZHcyX2RvX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLCBmdW5j X25hbWUpOwotK30KKysgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBs dCIpOworKyAgaWYgKHBsdCA9PSBOVUxMKQorKyAgICByZXR1cm47CisrICBwbHRfZWxmX2lkeCA9 IGVsZl9zZWN0aW9uX2RhdGEgKHBsdCktPnRoaXNfaWR4OwogKwotK3N0YXRpYyB2b2lkCi0rZHcy X2V4cGFuZF9hbGxfc3ltdGFicyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgaW50 IGk7CisrICBnb3RfcGx0ID0gYmZkX2dldF9zZWN0aW9uX2J5X25hbWUgKG9iZmQsICIuZ290LnBs dCIpOworKyAgaWYgKGdvdF9wbHQgPT0gTlVMTCkKKysgICAgcmV0dXJuOwogKwotKyAgZHcyX3Nl dHVwIChvYmpmaWxlKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5f Y29tcF91bml0czsgKytpKQotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgLyogVGhp cyBzZWFyY2ggYWxnb3JpdGhtIGlzIGZyb20gX2JmZF9lbGZfY2Fub25pY2FsaXplX2R5bmFtaWNf cmVsb2MuICAqLworKyAgZm9yIChyZWxwbHQgPSBvYmZkLT5zZWN0aW9uczsgcmVscGx0ICE9IE5V TEw7IHJlbHBsdCA9IHJlbHBsdC0+bmV4dCkKKysgICAgaWYgKGVsZl9zZWN0aW9uX2RhdGEgKHJl bHBsdCktPnRoaXNfaGRyLnNoX2luZm8gPT0gcGx0X2VsZl9pZHgKKysJJiYgKGVsZl9zZWN0aW9u X2RhdGEgKHJlbHBsdCktPnRoaXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTAorKwkgICAgfHwgZWxm X3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfdHlwZSA9PSBTSFRfUkVMQSkpCisr ICAgICAgYnJlYWs7CisrICBpZiAocmVscGx0ID09IE5VTEwpCisrICAgIHJldHVybjsKICsKLSsg ICAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0rICAgIH0KLSt9Cisr ICBpZiAoISBiZWQtPnMtPnNsdXJwX3JlbG9jX3RhYmxlIChvYmZkLCByZWxwbHQsIGR5bl9zeW1i b2xfdGFibGUsIFRSVUUpKQorKyAgICByZXR1cm47CiArCi0rc3RhdGljIHZvaWQKLStkdzJfZXhw YW5kX3N5bXRhYnNfd2l0aF9maWxlbmFtZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJ CSAgY29uc3QgY2hhciAqZmlsZW5hbWUpCi0rewotKyAgaW50IGk7CisrICBiYWNrX3RvID0gbWFr ZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29udGVudHMsICZzdHJpbmdfYnVmZmVyKTsKICsKLSsg IGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0rICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpm aWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIHJlbG9jX2NvdW50ID0gcmVscGx0LT5zaXplIC8g ZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hfZW50c2l6ZTsKKysgIGZvciAo cmVsb2MgPSAwOyByZWxvYyA8IHJlbG9jX2NvdW50OyByZWxvYysrKQogKyAgICB7Ci0rICAgICAg aW50IGo7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVy X29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOworKyAgICAgIGNvbnN0IGNoYXIgKm5hbWUsICpu YW1lX2dvdF9wbHQ7CisrICAgICAgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltOworKyAgICAg IENPUkVfQUREUiBhZGRyZXNzOworKyAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCA9ICJAZ290LnBs dCI7CisrICAgICAgc2l6ZV90IHN1ZmZpeF9sZW4gPSBzdHJsZW4gKHN1ZmZpeCk7CisrICAgICAg c2l6ZV90IG5hbWVfbGVuOwogKwotKyAgICAgIGlmIChjdS0+di5xdWljay0+c3ltdGFiKQotKwlj b250aW51ZTsKKysgICAgICBuYW1lID0gYmZkX2FzeW1ib2xfbmFtZSAoKnJlbHBsdC0+cmVsb2Nh dGlvbltyZWxvY10uc3ltX3B0cl9wdHIpOworKyAgICAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1l KTsKKysgICAgICBhZGRyZXNzID0gcmVscGx0LT5yZWxvY2F0aW9uW3JlbG9jXS5hZGRyZXNzOwog KwotKyAgICAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChvYmpmaWxlLCBjdSk7Ci0rICAgICAg aWYgKCFjdS0+di5xdWljay0+bGluZXMpCisrICAgICAgLyogRG9lcyB0aGUgcG9pbnRlciByZXNp ZGUgaW4gdGhlIC5nb3QucGx0IHNlY3Rpb24/ICAqLworKyAgICAgIGlmICghKGJmZF9nZXRfc2Vj dGlvbl92bWEgKG9iZmQsIGdvdF9wbHQpIDw9IGFkZHJlc3MKKysgICAgICAgICAgICAmJiBhZGRy ZXNzIDwgYmZkX2dldF9zZWN0aW9uX3ZtYSAob2JmZCwgZ290X3BsdCkKKysJCQkgKyBiZmRfZ2V0 X3NlY3Rpb25fc2l6ZSAoZ290X3BsdCkpKQogKwljb250aW51ZTsKICsKLSsgICAgICBmb3IgKGog PSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lczsgKytqKQorKyAgICAg IC8qIFdlIGNhbm5vdCBjaGVjayBpZiBOQU1FIGlzIGEgcmVmZXJlbmNlIHRvIG1zdF90ZXh0X2du dV9pZnVuYyBhcyBpbgorKwkgT0JKRklMRSB0aGUgc3ltYm9sIGlzIHVuZGVmaW5lZCBhbmQgdGhl IG9iamZpbGUgaGF2aW5nIE5BTUUgZGVmaW5lZAorKwkgbWF5IG5vdCB5ZXQgaGF2ZSBiZWVuIGxv YWRlZC4gICovCisrCisrICAgICAgaWYgKHN0cmluZ19idWZmZXJfc2l6ZSA8IG5hbWVfbGVuICsg c3VmZml4X2xlbikKICsJewotKwkgIGNvbnN0IGNoYXIgKnRoaXNfbmFtZSA9IGN1LT52LnF1aWNr LT5maWxlX25hbWVzW2pdOwotKwkgIGlmIChzdHJjbXAgKHRoaXNfbmFtZSwgZmlsZW5hbWUpID09 IDApCi0rCSAgICB7Ci0rCSAgICAgIGR3Ml9pbnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsIGN1 KTsKLSsJICAgICAgYnJlYWs7Ci0rCSAgICB9CisrCSAgc3RyaW5nX2J1ZmZlcl9zaXplID0gMiAq IChuYW1lX2xlbiArIHN1ZmZpeF9sZW4pOworKwkgIHN0cmluZ19idWZmZXIgPSB4cmVhbGxvYyAo c3RyaW5nX2J1ZmZlciwgc3RyaW5nX2J1ZmZlcl9zaXplKTsKICsJfQorKyAgICAgIG1lbWNweSAo c3RyaW5nX2J1ZmZlciwgbmFtZSwgbmFtZV9sZW4pOworKyAgICAgIG1lbWNweSAoJnN0cmluZ19i dWZmZXJbbmFtZV9sZW5dLCBzdWZmaXgsIHN1ZmZpeF9sZW4pOworKworKyAgICAgIG1zeW0gPSBy ZWNvcmRfbWluaW1hbF9zeW1ib2wgKHN0cmluZ19idWZmZXIsIG5hbWVfbGVuICsgc3VmZml4X2xl biwgMSwKKysJCQkJICAgIGFkZHJlc3MsIG1zdF9zbG90X2dvdF9wbHQsIGdvdF9wbHQsCisrCQkJ CSAgICBvYmpmaWxlKTsKKysgICAgICBpZiAobXN5bSkKKysJTVNZTUJPTF9TSVpFIChtc3ltKSA9 IHB0cl9zaXplOwogKyAgICB9CisrCisrICBkb19jbGVhbnVwcyAoYmFja190byk7CiArfQogKwot K3N0YXRpYyBjb25zdCBjaGFyICoKLStkdzJfZmluZF9zeW1ib2xfZmlsZSAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCisrLyogRnVuY3Rpb24gZG9lcyBub3QgY2hl Y2sgZm9yIHBvc3NpYmx5IGNyZWF0ZWQgZHVwbGljaXRpZXMgaW4gdGhlIGNhY2hlLgorKyAgIENo ZWNrIGl0IGJ5IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIGZpcnN0LiAgKi8KKysKKytzdGF0 aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoKKytnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hl Y2tlZCAoY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQkJICBDT1JFX0FERFIgZnVuY3Rp b25fYWRkcmVzcykKICt7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdTsKLSsgIG9m ZnNldF90eXBlICp2ZWM7CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW0sICptc3ltX25l dzsKKysgIGFzZWN0aW9uICpzZWN0OworKyAgc3RydWN0IG9iamZpbGUgKm9iamZpbGU7CisrICBj aGFyICpmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3Q7CiArCi0rICBkdzJfc2V0dXAgKG9iamZp bGUpOwotKwotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlKQorKyAgbXN5 bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY3Rpb25fYWRkcmVzcyk7CisrICBp ZiAobXN5bSA9PSBOVUxMKQorKyAgICByZXR1cm4gTlVMTDsKKysgIGlmIChTWU1CT0xfVkFMVUVf QUREUkVTUyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKICsgICAgcmV0dXJuIE5VTEw7Cisr ICAvKiBtaW5pbWFsIHN5bWJvbHMgaGF2ZSBhbHdheXMgU1lNQk9MX09CSl9TRUNUSU9OIG5vbi1O VUxMLiAgKi8KKysgIHNlY3QgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT50aGVfYmZkX3Nl Y3Rpb247CisrICBvYmpmaWxlID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3ltKS0+b2JqZmlsZTsK ICsKLSsgIGlmICghZmluZF9zbG90X2luX21hcHBlZF9oYXNoIChkd2FyZjJfcGVyX29iamZpbGUt PmluZGV4X3RhYmxlLAotKwkJCQkgbmFtZSwgJnZlYykpCisrICAvKiBJZiAucGx0IGp1bXBzIGJh Y2sgdG8gLnBsdCB0aGUgc3ltYm9sIGlzIHN0aWxsIGRlZmVycmVkIGZvciBsYXRlcgorKyAgICAg cmVzb2x1dGlvbiBhbmQgaXQgaGFzIG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRo aXMgc3ltYm9sIGNhbgorKyAgICAgcmVzaWRlIGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5j dGlvbiBkZXNjcmlwdG9yLiAgKi8KKysgIGlmIChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1l IChvYmpmaWxlLT5vYmZkLCBzZWN0KSwgIi5wbHQiKSA9PSAwKQogKyAgICByZXR1cm4gTlVMTDsK ICsKLSsgIC8qIE5vdGUgdGhhdCB0aGlzIGp1c3QgbG9va3MgYXQgdGhlIHZlcnkgZmlyc3Qgb25l IG5hbWVkIE5BTUUgLS0gYnV0Ci0rICAgICBhY3R1YWxseSB3ZSBhcmUgbG9va2luZyBmb3IgYSBm dW5jdGlvbi4gIGZpbmRfbWFpbl9maWxlbmFtZQotKyAgICAgc2hvdWxkIGJlIHJld3JpdHRlbiBz byB0aGF0IGl0IGRvZXNuJ3QgcmVxdWlyZSBhIGN1c3RvbSBob29rLiAgSXQKLSsgICAgIGNvdWxk IGp1c3QgdXNlIHRoZSBvcmRpbmFyeSBzeW1ib2wgdGFibGVzLiAgKi8KLSsgIC8qIHZlY1swXSBp cyB0aGUgbGVuZ3RoLCB3aGljaCBtdXN0IGFsd2F5cyBiZSA+MC4gICovCi0rICBjdSA9IGR3YXJm Ml9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbTUFZQkVfU1dBUCAodmVjWzFdKV07CisrICBm dW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QgPSBhbGxvY2EgKHN0cmxlbiAoZnVuY3Rpb25fbmFt ZSkKKysJCQkJCSsgc3RybGVuICgiQGdudS1pZnVuYy10Z3QiKSArIDEpOworKyAgc3ByaW50ZiAo ZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LCAiJXNAZ251LWlmdW5jLXRndCIsIGZ1bmN0aW9u X25hbWUpOwogKwotKyAgZHcyX3JlcXVpcmVfbGluZV9oZWFkZXIgKG9iamZpbGUsIGN1KTsKLSsg IGlmICghY3UtPnYucXVpY2stPmxpbmVzKQotKyAgICByZXR1cm4gTlVMTDsKKysgIC8qIENyZWF0 ZSBuZXcgYWxpYXMgIkBnbnUtaWZ1bmMtdGd0IiBmb3IgTVNZTS4gICovCisrICBtc3ltX25ldyA9 IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LAorKwkJ CQkgICAgc3RybGVuIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QpLCAxLAorKwkJCQkgICAg U1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pLAorKwkJCQkgICAgTVNZTUJPTF9UWVBFIChtc3lt KSwgc2VjdCwgb2JqZmlsZSk7CisrICAvKiBTaG91bGQgbm90IGhhcHBlbi4gICovCisrICBpZiAo bXN5bV9uZXcgPT0gTlVMTCkKKysgICAgcmV0dXJuIDA7CiArCi0rICByZXR1cm4gY3UtPnYucXVp Y2stPmZpbGVfbmFtZXNbY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lcyAtIDFdOwor KyAgLyogb2JqZmlsZS0+bXN5bWJvbHMgYXJyYXkgaXMgYWxyZWFkeSBhbGxvY2F0ZWQgb24gb2Jz dGFjayBhbmQgaXQgY2Fubm90IGJlCisrICAgICBlYXNpbHkgZXh0ZW5kZWQuICBUaGVyZWZvcmUg PHRhYj4tY29tcGxldGlvbiBvbiBzeW1ib2wgbmFtZXMgd2lsbCBuZXZlcgorKyAgICAgc2hvdyB0 aGUgQGdudS1pZnVuYy10Z3Qgc3ltYm9sLiAgTGluayBpdCBhdCBsZWFzdCB0byB0aGUgaGFzaCB0 YWJsZSBzbworKyAgICAgdGhhdCByZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSBjYW4gZmluZCBp dC4gICovCisrICBhZGRfbWluc3ltX3RvX2hhc2hfdGFibGUgKG1zeW1fbmV3LCBvYmpmaWxlLT5t c3ltYm9sX2hhc2gpOworKyAgICAKKysgIE1TWU1CT0xfU0laRSAobXN5bV9uZXcpID0gTVNZTUJP TF9TSVpFIChtc3ltKTsKKysgIHJldHVybiBtc3ltX25ldzsKICt9CiArCi0rc3RhdGljIHZvaWQK LStkdzJfbWFwX2FkYV9zeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCSAgICAg aW50ICgqd2lsZF9tYXRjaCkgKGNvbnN0IGNoYXIgKiwgaW50LCBjb25zdCBjaGFyICopLAotKwkJ ICAgICBpbnQgKCppc19uYW1lX3N1ZmZpeCkgKGNvbnN0IGNoYXIgKiksCi0rCQkgICAgIHZvaWQg KCpjYWxsYmFjaykgKHN0cnVjdCBvYmpmaWxlICosCi0rCQkJCSAgICAgICBzdHJ1Y3Qgc3ltdGFi ICosIHZvaWQgKiksCi0rCQkgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGludCBnbG9iYWwsCi0rCQkg ICAgIGRvbWFpbl9lbnVtIG5hbWVzcGFjZSwgaW50IHdpbGQsCi0rCQkgICAgIHZvaWQgKmRhdGEp Ci0rewotKyAgLyogRm9yIG5vdywgd2UgZG9uJ3Qgc3VwcG9ydCBBZGEsIHNvIHRoaXMgZnVuY3Rp b24gY2FuJ3QgYmUKLSsgICAgIHJlYWNoZWQuICAqLwotKyAgaW50ZXJuYWxfZXJyb3IgKF9fRklM RV9fLCBfX0xJTkVfXywKLSsJCSAgXygibWFwX2FkYV9zeW10YWJzIGNhbGxlZCB2aWEgaW5kZXgg bWV0aG9kIikpOwotK30KKysvKiBDaGVjayBmaXJzdCB0aGUgY2FjaGUgaWYgaXQgLSB1bmxpa2Vs eSAtIGhhcyBub3QgYmVlbiBwb3B1bGF0ZWQgc2luY2UKKysgICBicF9nbnVfaWZ1bmNfcmVzb2x2 ZXIgaGFzIGJlZW4gY3JlYXRlZC4gIGdudV9pZnVuY19yZWNvcmRfY2FjaGVfdW5jaGVja2VkCisr ICAgY291bGQgY3JlYXRlIGEgZHVwbGljYXRlIHN5bWJvbCBvdGhlcndpc2UuICAqLwogKwotK3N0 YXRpYyB2b2lkCi0rZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKLSsJCQkgICAgIGludCAoKmZpbGVfbWF0Y2hlcikgKGNvbnN0IGNoYXIgKiwgdm9p ZCAqKSwKLSsJCQkgICAgIGludCAoKm5hbWVfbWF0Y2hlcikgKGNvbnN0IGNoYXIgKiwgdm9pZCAq KSwKLSsJCQkgICAgIGRvbWFpbl9lbnVtIGtpbmQsCi0rCQkJICAgICB2b2lkICpkYXRhKQorK3Zv aWQKKytnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29u c3QgY2hhciAqZnVuY3Rpb25fbmFtZSwKKysJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykK ICt7Ci0rICBpbnQgaTsKLSsgIG9mZnNldF90eXBlIGl0ZXI7Ci0rCi0rICBkdzJfc2V0dXAgKG9i amZpbGUpOwotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlKQotKyAgICBy ZXR1cm47CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CiArCi0rICBmb3IgKGkgPSAw OyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKysgIG1zeW0gPSBy ZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7CisrICBpZiAobXN5bSA9 PSBOVUxMKQorKyAgICBnbnVfaWZ1bmNfcmVjb3JkX2NhY2hlX3VuY2hlY2tlZCAoZnVuY3Rpb25f bmFtZSwgZnVuY3Rpb25fYWRkcmVzcyk7CisrICBlbHNlIGlmIChTWU1CT0xfVkFMVUVfQUREUkVT UyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKICsgICAgewotKyAgICAgIGludCBqOwotKyAg ICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5h bGxfY29tcF91bml0c1tpXTsKKysgICAgICAvKiBUaGlzIGNhc2UgaW5kaWNhdGVzIGJ1Z2d5IGlu ZmVyaW9yIHByb2dyYW0uICBHREIgd291bGQgbmVlZCB0byB1cGRhdGUKKysJIGl0cyBNU1lNIGNh Y2hlIHN5bWJvbCBmb3IgZnVuY3Rpb25fYWRkcmVzcy4gIEFueXdheSBGVU5DVElPTl9OQU1FIGlz CisrCSBuZXZlciBub3JtYWxseSBmb3VuZCBpbiB0aGUgY2FzZSBhcyBpbiBzdWNoIGNhc2Ugbm8K KysJIGJwX2dudV9pZnVuY19yZXNvbHZlciB3b3VsZCBiZSBjcmVhdGVkIGluIHRoZSBmaXJzdCBw bGFjZS4gICovCiArCi0rICAgICAgY3UtPnYucXVpY2stPm1hcmsgPSAwOwotKyAgICAgIGlmIChj dS0+di5xdWljay0+c3ltdGFiKQotKwljb250aW51ZTsKKysgICAgICB3YXJuaW5nIChfKCJnbnUt aW5kaXJlY3QtZnVuY3Rpb24gXCIlc1wiIGhhcyBjaGFuZ2VkIGl0cyByZXNvbHZlZCAiCisrCQkg ImZ1bmN0aW9uX2FkZHJlc3MgZnJvbSAlcyB0byAlczsgR0RCIGlzIHVzaW5nIHRoZSBmb3JtZXIg b25lIiksCisrCSAgICAgICBmdW5jdGlvbl9uYW1lLCBwYWRkcmVzcyAoZ2RiYXJjaCwgU1lNQk9M X1ZBTFVFX0FERFJFU1MgKG1zeW0pKSwKKysJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBmdW5j dGlvbl9hZGRyZXNzKSk7CisrICAgIH0KKyt9CiArCi0rICAgICAgZHcyX3JlcXVpcmVfbGluZV9o ZWFkZXIgKG9iamZpbGUsIGN1KTsKLSsgICAgICBpZiAoIWN1LT52LnF1aWNrLT5saW5lcykKLSsJ Y29udGludWU7Cisrc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCisrcmVzb2x2ZV9nbnVf aWZ1bmNfYnlfZ290IChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lKQorK3sKKysgIGNoYXIgKmZ1 bmN0aW9uX25hbWVfZ290X3BsdDsKKysgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwogKwotKyAg ICAgIGZvciAoaiA9IDA7IGogPCBjdS0+di5xdWljay0+bGluZXMtPm51bV9maWxlX25hbWVzOyAr K2opCi0rCXsKLSsJICBpZiAoZmlsZV9tYXRjaGVyIChjdS0+di5xdWljay0+ZmlsZV9uYW1lc1tq XSwgZGF0YSkpCi0rCSAgICB7Ci0rCSAgICAgIGN1LT52LnF1aWNrLT5tYXJrID0gMTsKLSsJICAg ICAgYnJlYWs7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQorKyAgZnVuY3Rpb25fbmFtZV9nb3RfcGx0 ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpICsgc3RybGVuICgiQGdvdC5wbHQiKQor KwkJCQkgICsgMSk7CisrICBzcHJpbnRmIChmdW5jdGlvbl9uYW1lX2dvdF9wbHQsICIlc0Bnb3Qu cGx0IiwgZnVuY3Rpb25fbmFtZSk7CiArCi0rICBmb3IgKGl0ZXIgPSAwOwotKyAgICAgICBpdGVy IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7Ci0r ICAgICAgICsraXRlcikKKysgIEFMTF9QU1BBQ0VfT0JKRklMRVMgKGN1cnJlbnRfcHJvZ3JhbV9z cGFjZSwgb2JqZmlsZSkKICsgICAgewotKyAgICAgIG9mZnNldF90eXBlIGlkeCA9IDIgKiBpdGVy OwotKyAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICAgICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVj X2xlbiwgdmVjX2lkeDsKKysgICAgICBiZmQgKm9iZmQgPSBvYmpmaWxlLT5vYmZkOworKyAgICAg IHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsKKysgICAgICBzdHJ1 Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2RhdGFf cHRyOworKyAgICAgIHNpemVfdCBwdHJfc2l6ZSA9IFRZUEVfTEVOR1RIIChwdHJfdHlwZSk7Cisr ICAgICAgQ09SRV9BRERSIHBvaW50ZXJfYWRkcmVzcywgZnVuY3Rpb25fYWRkcmVzczsKKysgICAg ICBhc2VjdGlvbiAqcGx0OworKyAgICAgIGdkYl9ieXRlICpidWYgPSBhbGxvY2EgKHB0cl9zaXpl KTsKKysgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CiArCi0rICAgICAgaWYgKGR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lkeF0gPT0gMAotKwkg ICYmIGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lkeCArIDFd ID09IDApCisrICAgICAgbXN5bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbCAoZnVuY3Rpb25fbmFt ZV9nb3RfcGx0LCBOVUxMLCBvYmpmaWxlKTsKKysgICAgICBpZiAobXN5bSA9PSBOVUxMKQorKwlj b250aW51ZTsKKysgICAgICBpZiAoTVNZTUJPTF9UWVBFIChtc3ltKSAhPSBtc3Rfc2xvdF9nb3Rf cGx0KQogKwljb250aW51ZTsKKysgICAgICBwb2ludGVyX2FkZHJlc3MgPSBTWU1CT0xfVkFMVUVf QUREUkVTUyAobXN5bSk7CiArCi0rICAgICAgbmFtZSA9IChkd2FyZjJfcGVyX29iamZpbGUtPmlu ZGV4X3RhYmxlLT5jb25zdGFudF9wb29sCi0rCSAgICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5p bmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4XSk7CisrICAgICAgcGx0ID0gYmZkX2dldF9zZWN0 aW9uX2J5X25hbWUgKG9iZmQsICIucGx0Iik7CisrICAgICAgaWYgKHBsdCA9PSBOVUxMKQorKwlj b250aW51ZTsKICsKLSsgICAgICBpZiAoISAoKm5hbWVfbWF0Y2hlcikgKG5hbWUsIGRhdGEpKQor KyAgICAgIGlmIChNU1lNQk9MX1NJWkUgKG1zeW0pICE9IHB0cl9zaXplKQorKwljb250aW51ZTsK KysgICAgICBpZiAodGFyZ2V0X3JlYWRfbWVtb3J5IChwb2ludGVyX2FkZHJlc3MsIGJ1ZiwgcHRy X3NpemUpICE9IDApCiArCWNvbnRpbnVlOworKyAgICAgIGZ1bmN0aW9uX2FkZHJlc3MgPSBleHRy YWN0X3R5cGVkX2FkZHJlc3MgKGJ1ZiwgcHRyX3R5cGUpOwogKwotKyAgICAgIC8qIFRoZSBuYW1l IHdhcyBtYXRjaGVkLCBub3cgZXhwYW5kIGNvcnJlc3BvbmRpbmcgQ1VzIHRoYXQgd2VyZQotKwkg bWFya2VkLiAgKi8KLSsgICAgICB2ZWMgPSAob2Zmc2V0X3R5cGUgKikgKGR3YXJmMl9wZXJfb2Jq ZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKLSsJCQkgICAgICsgZHdhcmYyX3Blcl9v YmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVbaWR4ICsgMV0pOwotKyAgICAgIHZlY19s ZW4gPSBNQVlCRV9TV0FQICh2ZWNbMF0pOwotKyAgICAgIGZvciAodmVjX2lkeCA9IDA7IHZlY19p ZHggPCB2ZWNfbGVuOyArK3ZlY19pZHgpCi0rCXsKLSsJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9k YXRhICpjdQotKwkgICAgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW01BWUJF X1NXQVAgKHZlY1t2ZWNfaWR4ICsgMV0pXTsKLSsJICBpZiAoY3UtPnYucXVpY2stPm1hcmspCi0r CSAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBjdSk7Ci0rCX0KKysgICAgICBt c3ltID0gZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGZ1bmN0aW9uX25hbWUsIGZ1 bmN0aW9uX2FkZHJlc3MpOworKyAgICAgIGlmIChtc3ltID09IE5VTEwpCisrCWNvbnRpbnVlOwor KyAgICAgIHJldHVybiBtc3ltOwogKyAgICB9CisrCisrICByZXR1cm4gTlVMTDsKICt9CiArCi0r c3RhdGljIHN0cnVjdCBzeW10YWIgKgotK2R3Ml9maW5kX3BjX3NlY3Rfc3ltdGFiIChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkgc3RydWN0IG1pbmltYWxfc3ltYm9sICptc3ltYm9sLAot KwkJCSBDT1JFX0FERFIgcGMsCi0rCQkJIHN0cnVjdCBvYmpfc2VjdGlvbiAqc2VjdGlvbiwKLSsJ CQkgaW50IHdhcm5faWZfcmVhZGluKQorK3N0cnVjdCBtaW5pbWFsX3N5bWJvbCAqCisrcmVzb2x2 ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUpCiArewotKyAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqZGF0YTsKLSsKLSsgIGR3Ml9zZXR1cCAob2JqZmls ZSk7Ci0rCi0rICBpZiAoIW9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXApCi0rICAgIHJldHVybiBO VUxMOwotKwotKyAgZGF0YSA9IGFkZHJtYXBfZmluZCAob2JqZmlsZS0+cHN5bXRhYnNfYWRkcm1h cCwgcGMpOwotKyAgaWYgKCFkYXRhKQotKyAgICByZXR1cm4gTlVMTDsKKysgIGNoYXIgKmZ1bmN0 aW9uX25hbWVfZ251X2lmdW5jX3RndDsKICsKLSsgIGlmICh3YXJuX2lmX3JlYWRpbiAmJiBkYXRh LT52LnF1aWNrLT5zeW10YWIpCi0rICAgIHdhcm5pbmcgKF8oIihJbnRlcm5hbCBlcnJvcjogcGMg JXMgaW4gcmVhZCBpbiBDVSwgYnV0IG5vdCBpbiBzeW10YWIuKVxuIiksCi0rCSAgICAgcGFkZHJl c3MgKGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpLCBwYykpOworKyAgZnVuY3Rpb25fbmFtZV9n bnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUpCisrCQkJCQkrIHN0 cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKKysgIHNwcmludGYgKGZ1bmN0aW9uX25hbWVf Z251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9uYW1lKTsKICsKLSsg IHJldHVybiBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxlLCBkYXRhKTsKKysgIHJldHVy biBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgTlVM TCwgTlVMTCk7CiArfQogKwotK3N0YXRpYyB2b2lkCi0rZHcyX21hcF9zeW1ib2xfbmFtZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgICAgdm9pZCAoKmZ1bikgKGNvbnN0IGNoYXIg Kiwgdm9pZCAqKSwKLSsJCSAgICAgIHZvaWQgKmRhdGEpCisraW50CisrcmVzb2x2ZV9nbnVfaWZ1 bmMgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIENPUkVfQUREUiAqZnVuY3Rpb25fYWRkcmVz c3ApCiArewotKyAgb2Zmc2V0X3R5cGUgaXRlcjsKLSsgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0g Ci0tICBpZiAoaW5mby0+c2l6ZSA+IDQgKiBwYWdlc2l6ZSAmJiAoc2VjdHAtPmZsYWdzICYgU0VD X1JFTE9DKSA9PSAwKQotKyAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlKQot KyAgICByZXR1cm47CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07CiArCi0rICBmb3Ig KGl0ZXIgPSAwOwotKyAgICAgICBpdGVyIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJs ZS0+aW5kZXhfdGFibGVfc2xvdHM7Ci0rICAgICAgICsraXRlcikKLSAgICAgewotLSAgICAgIG9m Zl90IHBnX29mZnNldCA9IHNlY3RwLT5maWxlcG9zICYgfihwYWdlc2l6ZSAtIDEpOwotLSAgICAg IHNpemVfdCBtYXBfbGVuZ3RoID0gaW5mby0+c2l6ZSArIHNlY3RwLT5maWxlcG9zIC0gcGdfb2Zm c2V0OwotLSAgICAgIGNhZGRyX3QgcmV0YnVmID0gYmZkX21tYXAgKGFiZmQsIDAsIG1hcF9sZW5n dGgsIFBST1RfUkVBRCwKLS0JCQkJIE1BUF9QUklWQVRFLCBwZ19vZmZzZXQpOwotKyAgICAgIG9m ZnNldF90eXBlIGlkeCA9IDIgKiBpdGVyOwotKyAgICAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0rICAg ICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVjX2xlbiwgdmVjX2lkeDsKLSAKLS0gICAgICBpZiAocmV0 YnVmICE9IE1BUF9GQUlMRUQpCi0tCXsKLS0JICBpbmZvLT53YXNfbW1hcHBlZCA9IDE7Ci0tCSAg aW5mby0+YnVmZmVyID0gcmV0YnVmICsgKHNlY3RwLT5maWxlcG9zICYgKHBhZ2VzaXplIC0gMSkp IDsKLS0jaWYgSEFWRV9QT1NJWF9NQURWSVNFCi0tCSAgcG9zaXhfbWFkdmlzZSAocmV0YnVmLCBt YXBfbGVuZ3RoLCBQT1NJWF9NQURWX1dJTExORUVEKTsKLS0jZW5kaWYKLS0JICByZXR1cm47Ci0t CX0KLSsgICAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFi bGVbaWR4XSA9PSAwCi0rCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5k ZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkKLSsJY29udGludWU7CisrICBtc3ltID0gcmVzb2x2ZV9n bnVfaWZ1bmNfYnlfY2FjaGUgKGZ1bmN0aW9uX25hbWUpOworKyAgaWYgKG1zeW0gIT0gTlVMTCkK KysgICAgeworKyAgICAgICpmdW5jdGlvbl9hZGRyZXNzcCA9IFNZTUJPTF9WQUxVRV9BRERSRVNT IChtc3ltKTsKKysgICAgICByZXR1cm4gMTsKKysgICAgfQogKwotKyAgICAgIG5hbWUgPSAoZHdh cmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+Y29uc3RhbnRfcG9vbAotKwkgICAgICArIGR3 YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGUtPmluZGV4X3RhYmxlW2lkeF0pOworKyAgbXN5 bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2dvdCAoZnVuY3Rpb25fbmFtZSk7CisrICBpZiAobXN5 bSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgKmZ1bmN0aW9uX2FkZHJlc3NwID0gU1lNQk9MX1ZB TFVFX0FERFJFU1MgKG1zeW0pOworKyAgICAgIHJldHVybiAxOworKyAgICB9CiArCi0rICAgICAg KCpmdW4pIChuYW1lLCBkYXRhKTsKLSAgICAgfQotLSNlbmRpZgorKyAgcmV0dXJuIDA7CiArfQot IAotLSAgLyogSWYgd2UgZ2V0IGhlcmUsIHdlIGFyZSBhIG5vcm1hbCwgbm90LWNvbXByZXNzZWQg c2VjdGlvbi4gICovCi0tICBpbmZvLT5idWZmZXIgPSBidWYKLS0gICAgPSBvYnN0YWNrX2FsbG9j ICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBpbmZvLT5zaXplKTsKLStzdGF0aWMgdm9pZAot K2R3Ml9tYXBfc3ltYm9sX2ZpbGVuYW1lcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJ ICB2b2lkICgqZnVuKSAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIHZvaWQgKiksCi0rCQkJ ICB2b2lkICpkYXRhKQotK3sKLSsgIGludCBpOwotIAotLSAgLyogV2hlbiBkZWJ1Z2dpbmcgLm8g ZmlsZXMsIHdlIG1heSBuZWVkIHRvIGFwcGx5IHJlbG9jYXRpb25zOyBzZWUKLS0gICAgIGh0dHA6 Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDAyLTA0L21zZzAwMTM2Lmh0bWwgLgot LSAgICAgV2UgbmV2ZXIgY29tcHJlc3Mgc2VjdGlvbnMgaW4gLm8gZmlsZXMsIHNvIHdlIG9ubHkg bmVlZCB0bwotLSAgICAgdHJ5IHRoaXMgd2hlbiB0aGUgc2VjdGlvbiBpcyBub3QgY29tcHJlc3Nl ZC4gICovCi0tICByZXRidWYgPSBzeW1maWxlX3JlbG9jYXRlX2RlYnVnX3NlY3Rpb24gKG9iamZp bGUsIHNlY3RwLCBidWYpOwotLSAgaWYgKHJldGJ1ZiAhPSBOVUxMKQotKyAgZHcyX3NldHVwIChv YmpmaWxlKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91 bml0czsgKytpKQotICAgICB7Ci0tICAgICAgaW5mby0+YnVmZmVyID0gcmV0YnVmOwotLSAgICAg IHJldHVybjsKLSsgICAgICBpbnQgajsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07CiArCi0rICAgICAg aWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0rCWNvbnRpbnVlOwotKwotKyAgICAgIGR3Ml9yZXF1 aXJlX2xpbmVfaGVhZGVyIChvYmpmaWxlLCBjdSk7Ci0rICAgICAgaWYgKCFjdS0+di5xdWljay0+ bGluZXMpCi0rCWNvbnRpbnVlOworIHN0cnVjdCBidWlsZF9pZAorICAgeworICAgICBzaXplX3Qg c2l6ZTsKK0BAIC04MDAsNiArMTA0OSw4IEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLCBpbnQgc3ltZmlsZV9mbGFncykKKyAJICAgICAgIGJmZF9lcnJtc2cgKGJm ZF9nZXRfZXJyb3IgKCkpKTsKKyAKKyAgICAgICBlbGZfc3ltdGFiX3JlYWQgKG9iamZpbGUsIFNU X0RZTkFNSUMsIGR5bnN5bWNvdW50LCBkeW5fc3ltYm9sX3RhYmxlLCAwKTsKICsKLSsgICAgICBm b3IgKGogPSAwOyBqIDwgY3UtPnYucXVpY2stPmxpbmVzLT5udW1fZmlsZV9uYW1lczsgKytqKQot Kwl7Ci0rCSAgY29uc3QgY2hhciAqdGhpc19mdWxsX25hbWUgPSBkdzJfcmVxdWlyZV9mdWxsX3Bh dGggKG9iamZpbGUsIGN1LCBqKTsKLSsJICAoKmZ1bikgKGN1LT52LnF1aWNrLT5maWxlX25hbWVz W2pdLCB0aGlzX2Z1bGxfbmFtZSwgZGF0YSk7Ci0rCX0KKysgICAgICBlbGZfcmVsX3BsdF9yZWFk IChvYmpmaWxlLCBkeW5fc3ltYm9sX3RhYmxlKTsKICAgICAgfQotK30KICAKLS0gIGlmIChiZmRf c2VlayAoYWJmZCwgc2VjdHAtPmZpbGVwb3MsIFNFRUtfU0VUKSAhPSAwCi0tICAgICAgfHwgYmZk X2JyZWFkIChidWYsIGluZm8tPnNpemUsIGFiZmQpICE9IGluZm8tPnNpemUpCi0tICAgIGVycm9y IChfKCJEd2FyZiBFcnJvcjogQ2FuJ3QgcmVhZCBEV0FSRiBkYXRhIGZyb20gJyVzJyIpLAotLQkg ICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0rc3RhdGljIGludAotK2R3Ml9oYXNfc3ltYm9s cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgcmV0dXJuIDE7Ci0gfQorICAgLyog QWRkIHN5bnRoZXRpYyBzeW1ib2xzIC0gZm9yIGluc3RhbmNlLCBuYW1lcyBmb3IgYW55IFBMVCBl bnRyaWVzLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvZXZhbC5jIGIvZ2RiL2V2YWwuYworaW5kZXgg MTZlOThhZS4uNGZhNGQ1ZiAxMDA2NDQKKy0tLSBhL2dkYi9ldmFsLmMKKysrKyBiL2dkYi9ldmFs LmMKK0BAIC00NCw2ICs0NCw3IEBACisgI2luY2x1ZGUgIm9iamZpbGVzLmgiCisgI2luY2x1ZGUg InB5dGhvbi9weXRob24uaCIKKyAjaW5jbHVkZSAid3JhcHBlci5oIgorKyNpbmNsdWRlICJkd2Fy ZjJsb2MuaCIKICAKLS0vKiBGaWxsIGluIFNFQ1RQLCBCVUZQIGFuZCBTSVpFUCB3aXRoIHNlY3Rp b24gaW5mbywgZ2l2ZW4gT0JKRklMRSBhbmQKLS0gICBTRUNUSU9OX05BTUUuICovCi0rY29uc3Qg c3RydWN0IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgZHdhcmYyX2dkYl9pbmRleF9mdW5jdGlvbnMg PQotK3sKLSsgIGR3Ml9oYXNfc3ltYm9scywKLSsgIGR3Ml9maW5kX2xhc3Rfc291cmNlX3N5bXRh YiwKLSsgIGR3Ml9mb3JnZXRfY2FjaGVkX3NvdXJjZV9pbmZvLAotKyAgZHcyX2xvb2t1cF9zeW10 YWIsCi0rICBkdzJfbG9va3VwX3N5bWJvbCwKLSsgIGR3Ml9wcmVfZXhwYW5kX3N5bXRhYnNfbWF0 Y2hpbmcsCi0rICBkdzJfcHJpbnRfc3RhdHMsCi0rICBkdzJfZHVtcCwKLSsgIGR3Ml9yZWxvY2F0 ZSwKLSsgIGR3Ml9leHBhbmRfc3ltdGFic19mb3JfZnVuY3Rpb24sCi0rICBkdzJfZXhwYW5kX2Fs bF9zeW10YWJzLAotKyAgZHcyX2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5hbWUsCi0rICBkdzJf ZmluZF9zeW1ib2xfZmlsZSwKLSsgIGR3Ml9tYXBfYWRhX3N5bXRhYnMsCi0rICBkdzJfZXhwYW5k X3N5bXRhYnNfbWF0Y2hpbmcsCi0rICBkdzJfZmluZF9wY19zZWN0X3N5bXRhYiwKLSsgIGR3Ml9t YXBfc3ltYm9sX25hbWVzLAotKyAgZHcyX21hcF9zeW1ib2xfZmlsZW5hbWVzCi0rfTsKKyAjaW5j bHVkZSAiZ2RiX2Fzc2VydC5oIgogIAotLXZvaWQKLS1kd2FyZjJfZ2V0X3NlY3Rpb25faW5mbyAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKnNlY3Rpb25fbmFtZSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgYXNlY3Rpb24gKipzZWN0cCwgZ2RiX2J5dGUgKipidWZwLAot LSAgICAgICAgICAgICAgICAgICAgICAgICBiZmRfc2l6ZV90eXBlICpzaXplcCkKLS17Ci0tICBz dHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpkYXRhCi0tICAgID0gb2JqZmlsZV9kYXRhIChvYmpm aWxlLCBkd2FyZjJfb2JqZmlsZV9kYXRhX2tleSk7Ci0tICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25f aW5mbyAqaW5mbzsKLSsvKiBJbml0aWFsaXplIGZvciByZWFkaW5nIERXQVJGIGZvciB0aGlzIG9i amZpbGUuICBSZXR1cm4gMCBpZiB0aGlzCi0rICAgZmlsZSB3aWxsIHVzZSBwc3ltdGFicywgb3Ig MSBpZiB1c2luZyB0aGUgR05VIGluZGV4LiAgKi8KLSAKLS0gIC8qIFdlIG1heSBzZWUgYW4gb2Jq ZmlsZSB3aXRob3V0IGFueSBEV0FSRiwgaW4gd2hpY2ggY2FzZSB3ZSBqdXN0Ci0tICAgICByZXR1 cm4gbm90aGluZy4gICovCi0tICBpZiAoZGF0YSA9PSBOVUxMKQotK2ludAotK2R3YXJmMl9pbml0 aWFsaXplX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotK3sKLSsgIC8qIElmIHdl J3JlIGFib3V0IHRvIHJlYWQgZnVsbCBzeW1ib2xzLCBkb24ndCBib3RoZXIgd2l0aCB0aGUKLSsg ICAgIGluZGljZXMuICBJbiB0aGlzIGNhc2Ugd2UgYWxzbyBkb24ndCBjYXJlIGlmIHNvbWUgb3Ro ZXIgZGVidWcKLSsgICAgIGZvcm1hdCBpcyBtYWtpbmcgcHN5bXRhYnMsIGJlY2F1c2UgdGhleSBh cmUgYWxsIGFib3V0IHRvIGJlCi0rICAgICBleHBhbmRlZCBhbnl3YXkuICAqLwotKyAgaWYgKChv YmpmaWxlLT5mbGFncyAmIE9CSkZfUkVBRE5PVykpCi0gICAgIHsKLS0gICAgICAqc2VjdHAgPSBO VUxMOwotLSAgICAgICpidWZwID0gTlVMTDsKLS0gICAgICAqc2l6ZXAgPSAwOwotLSAgICAgIHJl dHVybjsKLSsgICAgICBpbnQgaTsKLSsKLSsgICAgICBkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5n X2luZGV4ID0gMTsKLSsgICAgICBjcmVhdGVfYWxsX2NvbXBfdW5pdHMgKG9iamZpbGUpOwotKwot KyAgICAgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsg KytpKQotKwl7Ci0rCSAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVy X29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwotKwotKwkgIGN1LT52LnF1aWNrID0gT0JTVEFD S19aQUxMT0MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCi0rCQkJCQlzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9xdWlja19kYXRhKTsKLSsJfQotKwotKyAgICAgIC8qIFJldHVybiAxIHNvIHRoYXQg Z2RiIHNlZXMgdGhlICJxdWljayIgZnVuY3Rpb25zLiAgSG93ZXZlciwKLSsJIHRoZXNlIGZ1bmN0 aW9ucyB3aWxsIGJlIG5vLW9wcyBiZWNhdXNlIHdlIHdpbGwgaGF2ZSBleHBhbmRlZAotKwkgYWxs IHN5bXRhYnMuICAqLwotKyAgICAgIHJldHVybiAxOwotICAgICB9Ci0tICBpZiAoc2VjdGlvbl9p c19wIChzZWN0aW9uX25hbWUsIEVIX0ZSQU1FX1NFQ1RJT04pKQotLSAgICBpbmZvID0gJmRhdGEt PmVoX2ZyYW1lOwotLSAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0aW9uX25hbWUsIEZSQU1F X1NFQ1RJT04pKQotLSAgICBpbmZvID0gJmRhdGEtPmZyYW1lOwotLSAgZWxzZQotLSAgICBnZGJf YXNzZXJ0ICgwKTsKK0BAIC04MDYsNiArODA3LDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk IChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgICBpbnQgc2F2ZV9wb3MxOworICAgc3RydWN0 IHN5bWJvbCAqZnVuY3Rpb24gPSBOVUxMOworICAgY2hhciAqZnVuY3Rpb25fbmFtZSA9IE5VTEw7 CisrICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwogIAotLSAgaWYgKGluZm8tPmFzZWN0aW9u ICE9IE5VTEwgJiYgaW5mby0+c2l6ZSAhPSAwICYmIGluZm8tPmJ1ZmZlciA9PSBOVUxMKQotLSAg ICAvKiBXZSBoYXZlbid0IHJlYWQgdGhpcyBzZWN0aW9uIGluIHlldC4gIERvIGl0IG5vdy4gICov Ci0tICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKG9iamZpbGUsIGluZm8pOwotKyAgaWYgKGR3YXJm Ml9yZWFkX2luZGV4IChvYmpmaWxlKSkKLSsgICAgcmV0dXJuIDE7CisgICBwYyA9ICgqcG9zKSsr OworICAgb3AgPSBleHAtPmVsdHNbcGNdLm9wY29kZTsKK0BAIC0xODIyLDYgKzE4MjQsOCBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAJICAg ICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAoZXhwLT5nZGJhcmNoKS0+YnVpbHRp bl9pbnQsCisgCQkJCSBub3RfbHZhbCk7CisgCSAgICB9CisrCSAgZWxzZSBpZiAoVFlQRV9HTlVf SUZVTkMgKGZ0eXBlKSkKKysJICAgIHJldHVybiBhbGxvY2F0ZV92YWx1ZSAoVFlQRV9UQVJHRVRf VFlQRSAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKSk7CisgCSAgZWxzZSBpZiAoVFlQRV9UQVJH RVRfVFlQRSAoZnR5cGUpKQorIAkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RBUkdF VF9UWVBFIChmdHlwZSkpOworIAkgIGVsc2UKK0BAIC0xODQ4LDYgKzE4NTIsOCBAQCBldmFsdWF0 ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKLS0gICpzZWN0 cCA9IGluZm8tPmFzZWN0aW9uOwotLSAgKmJ1ZnAgPSBpbmZvLT5idWZmZXI7Ci0tICAqc2l6ZXAg PSBpbmZvLT5zaXplOwotKyAgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChvYmpmaWxlKTsKLSsgIHJl dHVybiAwOwotIH0KKyAgICAgICAvKiBGaXJzdCBkZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBh cmUgZGVhbGluZyB3aXRoLiAgKi8KKyAgICAgICBhcmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxM X1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOworKyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51 cCAobnVsbF9jbGVhbnVwLCAwKTsKKysgICAgICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jh d19hZGRyZXNzIChhcmcxKSk7CisgICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5 cGUgKGFyZzEpKTsKKyAgICAgICBjb2RlID0gVFlQRV9DT0RFICh0eXBlKTsKICAKLSsMCi0rCi0g LyogQnVpbGQgYSBwYXJ0aWFsIHN5bWJvbCB0YWJsZS4gICovCitAQCAtMTg2OCw2ICsxODc0LDcg QEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisg CSAgICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworIAkgICAgfQorIAl9IAorKyAgICAgIGRv X2NsZWFudXBzIChvbGRfY2hhaW4pOwogIAotIHZvaWQKLUBAIC0xNjk5LDYgKzI2ODgsNyBAQCBj cmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0g ICAgICAgdHlwZV9zaWctPnNpZ25hdHVyZSA9IHNpZ25hdHVyZTsKLSAgICAgICB0eXBlX3NpZy0+ b2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgIHR5cGVfc2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zm c2V0OwotKyAgICAgIHR5cGVfc2lnLT5wZXJfY3Uub2JqZmlsZSA9IG9iamZpbGU7Ci0gCi0gICAg ICAgc2xvdCA9IGh0YWJfZmluZF9zbG90ICh0eXBlc19odGFiLCB0eXBlX3NpZywgSU5TRVJUKTsK LSAgICAgICBnZGJfYXNzZXJ0IChzbG90ICE9IE5VTEwpOwotQEAgLTE4OTcsNyArMjg4Nyw3IEBA IHByb2Nlc3NfcHN5bXRhYl9jb21wX3VuaXQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAg LyogU3RvcmUgdGhlIGZ1bmN0aW9uIHRoYXQgcmVhZHMgaW4gdGhlIHJlc3Qgb2YgdGhlIHN5bWJv bCB0YWJsZSAqLwotICAgcHN0LT5yZWFkX3N5bXRhYiA9IGR3YXJmMl9wc3ltdGFiX3RvX3N5bXRh YjsKLSAKLS0gIHRoaXNfY3UtPnBzeW10YWIgPSBwc3Q7Ci0rICB0aGlzX2N1LT52LnBzeW10YWIg PSBwc3Q7Ci0gCi0gICBkd2FyZjJfZmluZF9iYXNlX2FkZHJlc3MgKGNvbXBfdW5pdF9kaWUsICZj dSk7Ci0gCi1AQCAtMjE4Miw2ICszMTcyLDcgQEAgY3JlYXRlX2FsbF9jb21wX3VuaXRzIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgICBtZW1zZXQgKHRoaXNfY3UsIDAsIHNpemVvZiAo KnRoaXNfY3UpKTsKLSAgICAgICB0aGlzX2N1LT5vZmZzZXQgPSBvZmZzZXQ7Ci0gICAgICAgdGhp c19jdS0+bGVuZ3RoID0gbGVuZ3RoICsgaW5pdGlhbF9sZW5ndGhfc2l6ZTsKLSsgICAgICB0aGlz X2N1LT5vYmpmaWxlID0gb2JqZmlsZTsKLSAKLSAgICAgICBpZiAobl9jb21wX3VuaXRzID09IG5f YWxsb2NhdGVkKQorICAgICAgIHN3aXRjaCAoY29kZSkKICAJewotQEAgLTI2MTMsNyArMzYwNCw3 IEBAIGFkZF9wYXJ0aWFsX3N1YnByb2dyYW0gKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmZvICpwZGks Ci0gCSAgICAgIGFkZHJtYXBfc2V0X2VtcHR5IChvYmpmaWxlLT5wc3ltdGFic19hZGRybWFwLAot IAkJCQkgcGRpLT5sb3dwYyArIGJhc2VhZGRyLAotIAkJCQkgcGRpLT5oaWdocGMgLSAxICsgYmFz ZWFkZHIsCi0tCQkJCSBjdS0+cGVyX2N1LT5wc3ltdGFiKTsKLSsJCQkJIGN1LT5wZXJfY3UtPnYu cHN5bXRhYik7Ci0gCSAgICB9Ci0gICAgICAgICAgIGlmICghcGRpLT5pc19kZWNsYXJhdGlvbikK LSAJICAgIC8qIElnbm9yZSBzdWJwcm9ncmFtIERJRXMgdGhhdCBkbyBub3QgaGF2ZSBhIG5hbWUs IHRoZXkgYXJlCi1AQCAtMjg4NSw3ICszODc2LDYgQEAgbG9jYXRlX3BkaV9zaWJsaW5nIChzdHJ1 Y3QgcGFydGlhbF9kaWVfaW5mbyAqb3JpZ19wZGksCi0gc3RhdGljIHZvaWQKLSBkd2FyZjJfcHN5 bXRhYl90b19zeW10YWIgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHN0KQotIHsKLS0gIC8qIEZJ WE1FOiBUaGlzIGlzIGJhcmVseSBtb3JlIHRoYW4gYSBzdHViLiAgKi8KLSAgIGlmIChwc3QgIT0g TlVMTCkKLSAgICAgewotICAgICAgIGlmIChwc3QtPnJlYWRpbikKLUBAIC0yOTU4LDcgKzM5NDgs OSBAQCBwcm9jZXNzX3F1ZXVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgICAgIG1heSBs b2FkIGEgbmV3IENVLCBhZGRpbmcgaXQgdG8gdGhlIGVuZCBvZiB0aGUgcXVldWUuICAqLwotICAg Zm9yIChpdGVtID0gZHdhcmYyX3F1ZXVlOyBpdGVtICE9IE5VTEw7IGR3YXJmMl9xdWV1ZSA9IGl0 ZW0gPSBuZXh0X2l0ZW0pCi0gICAgIHsKLS0gICAgICBpZiAoaXRlbS0+cGVyX2N1LT5wc3ltdGFi ICYmICFpdGVtLT5wZXJfY3UtPnBzeW10YWItPnJlYWRpbikKLSsgICAgICBpZiAoZHdhcmYyX3Bl cl9vYmpmaWxlLT51c2luZ19pbmRleAotKwkgID8gIWl0ZW0tPnBlcl9jdS0+di5xdWljay0+c3lt dGFiCi0rCSAgOiAoaXRlbS0+cGVyX2N1LT52LnBzeW10YWIgJiYgIWl0ZW0tPnBlcl9jdS0+di5w c3ltdGFiLT5yZWFkaW4pKQotIAlwcm9jZXNzX2Z1bGxfY29tcF91bml0IChpdGVtLT5wZXJfY3Up OwotIAotICAgICAgIGl0ZW0tPnBlcl9jdS0+cXVldWVkID0gMDsKLUBAIC0zMDM1LDIyICs0MDI3 LDcgQEAgcHN5bXRhYl90b19zeW10YWJfMSAoc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QpCi0g ICAgICAgcmV0dXJuOwotICAgICB9CitAQCAtMjMyNSwxMyArMjMzMiwxOSBAQCBldmFsdWF0ZV9z dWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKKyAgICAgICB7CisgCWlu dCBzdWJzY3JpcHRfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107CisgCWludCBhcnJheV9zaXplX2Fy cmF5W01BWF9GT1JUUkFOX0RJTVNdOworKwlpbnQgYnl0ZV9zdHJpZGVfYXJyYXlbTUFYX0ZPUlRS QU5fRElNU107CisgCWludCBuZGltZW5zaW9ucyA9IDEsIGk7CisgCXN0cnVjdCB0eXBlICp0bXBf dHlwZTsKKyAJaW50IG9mZnNldF9pdGVtOwkvKiBUaGUgYXJyYXkgb2Zmc2V0IHdoZXJlIHRoZSBp dGVtIGxpdmVzICovCisrCUNPUkVfQUREUiBvZmZzZXRfYnl0ZTsJLyogYnl0ZV9zdHJpZGUgYmFz ZWQgb2Zmc2V0ICAqLworKwl1bnNpZ25lZCBlbGVtZW50X3NpemU7CiAgCi0tICBiYWNrX3RvID0g bWFrZV9jbGVhbnVwIChkd2FyZjJfcmVsZWFzZV9xdWV1ZSwgTlVMTCk7Ci0tCi0tICBxdWV1ZV9j b21wX3VuaXQgKHBlcl9jdSwgcHN0LT5vYmpmaWxlKTsKLS0KLS0gIGlmIChwZXJfY3UtPmZyb21f ZGVidWdfdHlwZXMpCi0tICAgIHJlYWRfc2lnbmF0dXJlZF90eXBlX2F0X29mZnNldCAocHN0LT5v YmpmaWxlLCBwZXJfY3UtPm9mZnNldCk7Ci0tICBlbHNlCi0tICAgIGxvYWRfZnVsbF9jb21wX3Vu aXQgKHBlcl9jdSwgcHN0LT5vYmpmaWxlKTsKLS0KLS0gIHByb2Nlc3NfcXVldWUgKHBzdC0+b2Jq ZmlsZSk7Ci0tCi0tICAvKiBBZ2UgdGhlIGNhY2hlLCByZWxlYXNpbmcgY29tcGlsYXRpb24gdW5p dHMgdGhhdCBoYXZlIG5vdAotLSAgICAgYmVlbiB1c2VkIHJlY2VudGx5LiAgKi8KLS0gIGFnZV9j YWNoZWRfY29tcF91bml0cyAoKTsKLS0KLS0gIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsgIGR3 Ml9kb19pbnN0YW50aWF0ZV9zeW10YWIgKHBzdC0+b2JqZmlsZSwgcGVyX2N1KTsKLSB9CisgCWlm IChuYXJncyA+IE1BWF9GT1JUUkFOX0RJTVMpCisgCSAgZXJyb3IgKF8oIlRvbyBtYW55IHN1YnNj cmlwdHMgZm9yIEY3NyAoJWQgTWF4KSIpLCBNQVhfRk9SVFJBTl9ESU1TKTsKICAKLSAvKiBMb2Fk IHRoZSBESUVzIGFzc29jaWF0ZWQgd2l0aCBQRVJfQ1UgaW50byBtZW1vcnkuICAqLwotQEAgLTMx MzAsOSArNDEwNyw4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKnBlcl9jdSwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gc3RhdGljIHZvaWQKLSBw cm9jZXNzX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3Up Ci0gewotLSAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3QgPSBwZXJfY3UtPnBzeW10YWI7Ci0g ICBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSA9IHBlcl9jdS0+Y3U7Ci0tICBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSA9IHBzdC0+b2JqZmlsZTsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVy X2N1LT5vYmpmaWxlOwotICAgQ09SRV9BRERSIGxvd3BjLCBoaWdocGM7Ci0gICBzdHJ1Y3Qgc3lt dGFiICpzeW10YWI7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLUBAIC0zMTY1LDggKzQx NDEsMTUgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0 YSAqcGVyX2N1KQotICAgICB7Ci0gICAgICAgc3ltdGFiLT5sYW5ndWFnZSA9IGN1LT5sYW5ndWFn ZTsKLSAgICAgfQotLSAgcHN0LT5zeW10YWIgPSBzeW10YWI7Ci0tICBwc3QtPnJlYWRpbiA9IDE7 CisrCW9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKKysJb2JqZWN0 X2FkZHJlc3Nfc2V0ICh2YWx1ZV9yYXdfYWRkcmVzcyAoYXJnMSkpOwogKwotKyAgaWYgKGR3YXJm Ml9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXgpCi0rICAgIHBlcl9jdS0+di5xdWljay0+c3ltdGFi ID0gc3ltdGFiOwotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFi ICpwc3QgPSBwZXJfY3UtPnYucHN5bXRhYjsKLSsgICAgICBwc3QtPnN5bXRhYiA9IHN5bXRhYjsK LSsgICAgICBwc3QtPnJlYWRpbiA9IDE7Ci0rICAgIH0KKyAJdG1wX3R5cGUgPSBjaGVja190eXBl ZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CisgCW5kaW1lbnNpb25zID0gY2FsY19mNzdfYXJyYXlf ZGltcyAodHlwZSk7CiAgCi0gICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gfQotQEAgLTM1NTcs NiArNDU0MCw0NiBAQCBmcmVlX2N1X2xpbmVfaGVhZGVyICh2b2lkICphcmcpCi0gfQorQEAgLTIz NjEsNiArMjM3NCw5IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4 cGVjdF90eXBlLAorIAkgICAgdXBwZXIgPSBmNzdfZ2V0X3VwcGVyYm91bmQgKHRtcF90eXBlKTsK KyAJICAgIGxvd2VyID0gZjc3X2dldF9sb3dlcmJvdW5kICh0bXBfdHlwZSk7CiAgCi0gc3RhdGlj IHZvaWQKLStmaW5kX2ZpbGVfYW5kX2RpcmVjdG9yeSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAotKwkJCSBjaGFyICoqbmFtZSwgY2hhciAqKmNvbXBfZGlyKQot K3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rCi0rICAqbmFtZSA9IE5VTEw7Ci0rICAq Y29tcF9kaXIgPSBOVUxMOwotKwotKyAgLyogRmluZCB0aGUgZmlsZW5hbWUuICBEbyBub3QgdXNl IGR3YXJmMl9uYW1lIGhlcmUsIHNpbmNlIHRoZSBmaWxlbmFtZQotKyAgICAgaXMgbm90IGEgc291 cmNlIGxhbmd1YWdlIGlkZW50aWZpZXIuICAqLwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUs IERXX0FUX25hbWUsIGN1KTsKLSsgIGlmIChhdHRyKQotKyAgICB7Ci0rICAgICAgKm5hbWUgPSBE V19TVFJJTkcgKGF0dHIpOwotKyAgICB9Ci0rCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfY29tcF9kaXIsIGN1KTsKLSsgIGlmIChhdHRyKQotKyAgICAqY29tcF9kaXIgPSBEV19T VFJJTkcgKGF0dHIpOwotKyAgZWxzZSBpZiAoKm5hbWUgIT0gTlVMTCAmJiBJU19BQlNPTFVURV9Q QVRIICgqbmFtZSkpCi0rICAgIHsKLSsgICAgICAqY29tcF9kaXIgPSBsZGlybmFtZSAoKm5hbWUp OwotKyAgICAgIGlmICgqY29tcF9kaXIgIT0gTlVMTCkKLSsJbWFrZV9jbGVhbnVwICh4ZnJlZSwg KmNvbXBfZGlyKTsKLSsgICAgfQotKyAgaWYgKCpjb21wX2RpciAhPSBOVUxMKQotKyAgICB7Ci0r ICAgICAgLyogSXJpeCA2LjIgbmF0aXZlIGNjIHByZXBlbmRzIDxtYWNoaW5lPi46IHRvIHRoZSBj b21waWxhdGlvbgotKwkgZGlyZWN0b3J5LCBnZXQgcmlkIG9mIGl0LiAgKi8KLSsgICAgICBjaGFy ICpjcCA9IHN0cmNociAoKmNvbXBfZGlyLCAnOicpOwotKwotKyAgICAgIGlmIChjcCAmJiBjcCAh PSAqY29tcF9kaXIgJiYgY3BbLTFdID09ICcuJyAmJiBjcFsxXSA9PSAnLycpCi0rCSpjb21wX2Rp ciA9IGNwICsgMTsKLSsgICAgfQotKwotKyAgaWYgKCpuYW1lID09IE5VTEwpCi0rICAgICpuYW1l ID0gIjx1bmtub3duPiI7Ci0rfQorKwkgICAgYnl0ZV9zdHJpZGVfYXJyYXlbbmFyZ3MgLSBpIC0g MV0gPQorKwkJCQkJVFlQRV9BUlJBWV9CWVRFX1NUUklERV9WQUxVRSAodG1wX3R5cGUpOwogKwot K3N0YXRpYyB2b2lkCi0gcmVhZF9maWxlX3Njb3BlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0gewotICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBjdS0+ b2JqZmlsZTsKLUBAIC0zNTgyLDM1ICs0NjA1LDcgQEAgcmVhZF9maWxlX3Njb3BlIChzdHJ1Y3Qg ZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBsb3dwYyArPSBiYXNlYWRk cjsKLSAgIGhpZ2hwYyArPSBiYXNlYWRkcjsKLSAKLS0gIC8qIEZpbmQgdGhlIGZpbGVuYW1lLiAg RG8gbm90IHVzZSBkd2FyZjJfbmFtZSBoZXJlLCBzaW5jZSB0aGUgZmlsZW5hbWUKLS0gICAgIGlz IG5vdCBhIHNvdXJjZSBsYW5ndWFnZSBpZGVudGlmaWVyLiAgKi8KLS0gIGF0dHIgPSBkd2FyZjJf YXR0ciAoZGllLCBEV19BVF9uYW1lLCBjdSk7Ci0tICBpZiAoYXR0cikKLS0gICAgewotLSAgICAg IG5hbWUgPSBEV19TVFJJTkcgKGF0dHIpOwotLSAgICB9Ci0tCi0tICBhdHRyID0gZHdhcmYyX2F0 dHIgKGRpZSwgRFdfQVRfY29tcF9kaXIsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICBjb21wX2Rp ciA9IERXX1NUUklORyAoYXR0cik7Ci0tICBlbHNlIGlmIChuYW1lICE9IE5VTEwgJiYgSVNfQUJT T0xVVEVfUEFUSCAobmFtZSkpCi0tICAgIHsKLS0gICAgICBjb21wX2RpciA9IGxkaXJuYW1lIChu YW1lKTsKLS0gICAgICBpZiAoY29tcF9kaXIgIT0gTlVMTCkKLS0JbWFrZV9jbGVhbnVwICh4ZnJl ZSwgY29tcF9kaXIpOwotLSAgICB9Ci0tICBpZiAoY29tcF9kaXIgIT0gTlVMTCkKLS0gICAgewot LSAgICAgIC8qIElyaXggNi4yIG5hdGl2ZSBjYyBwcmVwZW5kcyA8bWFjaGluZT4uOiB0byB0aGUg Y29tcGlsYXRpb24KLS0JIGRpcmVjdG9yeSwgZ2V0IHJpZCBvZiBpdC4gICovCi0tICAgICAgY2hh ciAqY3AgPSBzdHJjaHIgKGNvbXBfZGlyLCAnOicpOwotLQotLSAgICAgIGlmIChjcCAmJiBjcCAh PSBjb21wX2RpciAmJiBjcFstMV0gPT0gJy4nICYmIGNwWzFdID09ICcvJykKLS0JY29tcF9kaXIg PSBjcCArIDE7Ci0tICAgIH0KLS0KLS0gIGlmIChuYW1lID09IE5VTEwpCi0tICAgIG5hbWUgPSAi PHVua25vd24+IjsKLSsgIGZpbmRfZmlsZV9hbmRfZGlyZWN0b3J5IChkaWUsIGN1LCAmbmFtZSwg JmNvbXBfZGlyKTsKKyAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0gPSB1cHBl ciAtIGxvd2VyICsgMTsKICAKLSAgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sYW5n dWFnZSwgY3UpOwotICAgaWYgKGF0dHIpCi1AQCAtNTUyOSw2ICs2NTI0LDI5IEBAIHByb2Nlc3Nf ZW51bWVyYXRpb25fc2NvcGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKLSAgIG5ld19zeW1ib2wgKGRpZSwgdGhpc190eXBlLCBjdSk7Ci0gfQorIAkgICAgLyog WmVyby1ub3JtYWxpemUgc3Vic2NyaXB0cyBzbyB0aGF0IG9mZnNldHRpbmcgd2lsbCB3b3JrLiAq LworQEAgLTIzNzksMTMgKzIzOTUsMjUgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCisgCSAgICAgIHRtcF90eXBlID0gY2hlY2tfdHlwZWRlZiAo VFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKyAJICB9CiAgCi0rLyogQ3JlYXRlIGEgbmV3 IGFycmF5IGRpbWVuc2lvbiByZWZlcmVuY2luZyBpdHMgdGFyZ2V0IHR5cGUgVFlQRS4KLSsKLSsg ICBNdWx0aWRpbWVuc2lvbmFsIGFycmF5cyBhcmUgaW50ZXJuYWxseSByZXByZXNlbnRlZCBhcyBh IHN0YWNrIG9mCi0rICAgc2luZ2xlZGltZW5zaW9uYWwgYXJyYXlzIGJlaW5nIHJlZmVyZW5jZWQg YnkgdGhlaXIgVFlQRV9UQVJHRVRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB0eXBlICoK LStjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVj dCB0eXBlICpyYW5nZV90eXBlLAotKwkJCSAgICAgICBzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3Ry dWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgdHlwZSA9IGNyZWF0ZV9hcnJheV90eXBlIChOVUxM LCB0eXBlLCByYW5nZV90eXBlKTsKLSsKLSsgIC8qIFRoZXNlIGdlbmVyaWMgdHlwZSBhdHRyaWJ1 dGVzIG5lZWQgdG8gYmUgZmV0Y2hlZCBieQotKyAgICAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJk IDxtdWx0aV9mNzdfc3Vic2NyaXB0PidzIGNhbGwgb2YKLSsgICAgIHZhbHVlX3N1YnNjcmlwdGVk X3J2YWx1ZSBvbmx5IGZvciB0aGUgaW5uZXJtb3N0IGFycmF5IHR5cGUuICAqLwotKyAgZmV0Y2hf ZGllX3R5cGVfYXR0cnMgKGRpZSwgdHlwZSwgY3UpOwotKwotKyAgLyogVGhlc2UgZ2VuZXJpYyB0 eXBlIGF0dHJpYnV0ZXMgYXJlIGNoZWNrZWQgZm9yIGFsbG9jYXRlZC9hc3NvY2lhdGVkCi0rICAg ICB2YWxpZGl0eSB3aGlsZSBhY2Nlc3NpbmcgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0suICAq LwotKyAgZmV0Y2hfZGllX3R5cGVfYXR0cnMgKGRpZSwgcmFuZ2VfdHlwZSwgY3UpOworKwkvKiBL ZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3X2dldF9sb3dlcmJvdW5kIGNhbGxz IGFib3ZlLiAgKi8KKysJZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7CiArCi0rICByZXR1cm4gdHlw ZTsKLSt9CisgCS8qIE5vdyBsZXQgdXMgY2FsY3VsYXRlIHRoZSBvZmZzZXQgZm9yIHRoaXMgaXRl bSAqLworIAorLQlvZmZzZXRfaXRlbSA9IHN1YnNjcmlwdF9hcnJheVtuZGltZW5zaW9ucyAtIDFd OworKwlvZmZzZXRfaXRlbSA9IDA7CisrCW9mZnNldF9ieXRlID0gMDsKICsKLSAvKiBFeHRyYWN0 IGFsbCBpbmZvcm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQg aW4KLSAgICB0aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVz IG9uZSBkaW1lbnNpb25hbAotICAgIGFycmF5cy4gICovCi1AQCAtNTU0Miw3ICs2NTYwLDcgQEAg cmVhZF9hcnJheV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAq Y3UpCi0gICBzdHJ1Y3QgdHlwZSAqZWxlbWVudF90eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5 cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqKnJhbmdlX3R5cGVzID0gTlVMTDsKLSAgIHN0cnVjdCBhdHRy aWJ1dGUgKmF0dHI7Ci0tICBpbnQgbmRpbSA9IDA7Ci0rICBpbnQgbmRpbSA9IDAsIGk7Ci0gICBz dHJ1Y3QgY2xlYW51cCAqYmFja190bzsKLSAgIGNoYXIgKm5hbWU7CisrCWZvciAoaSA9IG5kaW1l bnNpb25zIC0gMTsgaSA+PSAwOyAtLWkpCisrCSAgeworKwkgICAgb2Zmc2V0X2l0ZW0gKj0gYXJy YXlfc2l6ZV9hcnJheVtpXTsKKysJICAgIGlmIChieXRlX3N0cmlkZV9hcnJheVtpXSA9PSAwKQor KwkgICAgICBvZmZzZXRfaXRlbSArPSBzdWJzY3JpcHRfYXJyYXlbaV07CisrCSAgICBlbHNlCisr CSAgICAgIG9mZnNldF9ieXRlICs9IHN1YnNjcmlwdF9hcnJheVtpXSAqIGJ5dGVfc3RyaWRlX2Fy cmF5W2ldOworKwkgIH0KICAKLUBAIC01NTk1LDE3ICs2NjEzLDExIEBAIHJlYWRfYXJyYXlfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotICAgdHlwZSA9 IGVsZW1lbnRfdHlwZTsKKy0JZm9yIChpID0gbmRpbWVuc2lvbnMgLSAxOyBpID4gMDsgLS1pKQor LQkgIG9mZnNldF9pdGVtID0KKy0JICAgIGFycmF5X3NpemVfYXJyYXlbaSAtIDFdICogb2Zmc2V0 X2l0ZW0gKyBzdWJzY3JpcHRfYXJyYXlbaSAtIDFdOworKwllbGVtZW50X3NpemUgPSBUWVBFX0xF TkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAodG1wX3R5cGUpKTsKKysJb2Zmc2V0X2J5dGUgKz0gb2Zm c2V0X2l0ZW0gKiBlbGVtZW50X3NpemU7CiAgCi0gICBpZiAocmVhZF9hcnJheV9vcmRlciAoZGll LCBjdSkgPT0gRFdfT1JEX2NvbF9tYWpvcikKLS0gICAgewotLSAgICAgIGludCBpID0gMDsKLS0K LS0gICAgICB3aGlsZSAoaSA8IG5kaW0pCi0tCXR5cGUgPSBjcmVhdGVfYXJyYXlfdHlwZSAoTlVM TCwgdHlwZSwgcmFuZ2VfdHlwZXNbaSsrXSk7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgewotLSAg ICAgIHdoaWxlIChuZGltLS0gPiAwKQotLQl0eXBlID0gY3JlYXRlX2FycmF5X3R5cGUgKE5VTEws IHR5cGUsIHJhbmdlX3R5cGVzW25kaW1dKTsKLS0gICAgfQotKyAgICBmb3IgKGkgPSAwOyBpIDwg bmRpbTsgaSsrKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2RpbWVuc2lvbiAo dHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOwotKyAgZWxzZSAvKiAocmVhZF9hcnJheV9v cmRlciAoZGllLCBjdSkgPT0gRFdfT1JEX3Jvd19tYWpvcikgKi8KLSsgICAgZm9yIChpID0gbmRp bSAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICAgIHR5cGUgPSBjcmVhdGVfc2luZ2xlX2FycmF5X2Rp bWVuc2lvbiAodHlwZSwgcmFuZ2VfdHlwZXNbaV0sIGRpZSwgY3UpOworIAkvKiBMZXQgdXMgbm93 IHBsYXkgYSBkaXJ0eSB0cmljazogd2Ugd2lsbCB0YWtlIGFyZzEgCisgCSAgIHdoaWNoIGlzIGEg dmFsdWUgbm9kZSBwb2ludGluZyB0byB0aGUgdG9wbW9zdCBsZXZlbAorQEAgLTIzOTUsNyArMjQy Myw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBl LAorIAkgICByZXR1cm5zIHRoZSBjb3JyZWN0IHR5cGUgdmFsdWUgKi8KICAKLSAgIC8qIFVuZGVy c3RhbmQgRHdhcmYyIHN1cHBvcnQgZm9yIHZlY3RvciB0eXBlcyAobGlrZSB0aGV5IG9jY3VyIG9u Ci0gICAgICB0aGUgUG93ZXJQQyB3LyBBbHRpVmVjKS4gIEdjYyBqdXN0IGFkZHMgYW5vdGhlciBh dHRyaWJ1dGUgdG8gdGhlCi1AQCAtNjA1OSwyOSArNzA3MSwxMTQgQEAgcmVhZF90YWdfc3RyaW5n X3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7Ci0gICBz dHJ1Y3QgdHlwZSAqdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBlLCAqY2hhcl90eXBlOwot ICAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLS0gIHVuc2lnbmVkIGludCBsZW5ndGg7Ci0rICBp bnQgbGVuZ3RoOwotKwotKyAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1 aWx0aW5faW50OwotKyAgLyogUkFOR0VfVFlQRSBpcyBhbGxvY2F0ZWQgZnJvbSBPQkpGSUxFLCBu b3QgYXMgYSBwZXJtYW5lbnQgdHlwZS4gICovCi0rICByYW5nZV90eXBlID0gYWxsb2NfdHlwZSAo b2JqZmlsZSk7Ci0rICAvKiBMT1dfQk9VTkQgYW5kIEhJR0hfQk9VTkQgYXJlIHNldCBmb3IgcmVh bCBiZWxvdy4gICovCi0rICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKHJhbmdlX3R5 cGUsIGluZGV4X3R5cGUsIDAsIC0xKTsKLSsKLSsgIC8qIEMvQysrIHNob3VsZCBwcm9iYWJseSBo YXZlIHRoZSBsb3cgYm91bmQgMCBidXQgQy9DKysgZG9lcyBub3QgdXNlCi0rICAgICBEV19UQUdf c3RyaW5nX3R5cGUuICAqLwotKyAgVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpID0gMTsKKyAJ ZGVwcmVjYXRlZF9zZXRfdmFsdWVfdHlwZSAoYXJnMSwgdG1wX3R5cGUpOworLQlyZXR1cm4gdmFs dWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcmcxLCBvZmZzZXRfaXRlbSwgMCk7CisrCXJldHVybiB2 YWx1ZV9zdWJzY3JpcHRlZF9ydmFsdWUgKGFyZzEsIG9mZnNldF9ieXRlKTsKKyAgICAgICB9CiAg Ci0gICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfc3RyaW5nX2xlbmd0aCwgY3UpOwot LSAgaWYgKGF0dHIpCi0tICAgIHsKLS0gICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7Ci0r ICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQotKyAgICB7Ci0rICAgICAg LyogU2VjdXJpdHkgY2hlY2sgZm9yIGEgc2l6ZSBvdmVyZmxvdy4gICovCi0rICAgICAgaWYgKERX X0JMT0NLIChhdHRyKS0+c2l6ZSArIDIgPCBEV19CTE9DSyAoYXR0ciktPnNpemUpCi0rCVRZUEVf SElHSF9CT1VORCAocmFuZ2VfdHlwZSkgPSAxOwotKyAgICAgIC8qIEV4dGVuZCB0aGUgRFdBUkYg YmxvY2sgYnkgYSBuZXcgRFdfT1BfZGVyZWYvRFdfT1BfZGVyZWZfc2l6ZQotKwkgaW5zdHJ1Y3Rp b24gYXMgRFdfQVRfc3RyaW5nX2xlbmd0aCBzcGVjaWZpZXMgdGhlIGxlbmd0aCBsb2NhdGlvbiwg bm90Ci0rCSBpdHMgdmFsdWUuICAqLwotKyAgICAgIGVsc2UKKyAgICAgY2FzZSBCSU5PUF9MT0dJ Q0FMX0FORDoKK0BAIC0yNjI5LDE0ICsyNjU3LDIyIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorICAgICAgIGlmIChleHBlY3RfdHlwZSAmJiBU WVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQorIAlleHBlY3RfdHlwZSA9 IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7CisgICAgICAg YXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUpOwor KyAgICAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCAwKTsKKysgICAg ICBvYmplY3RfYWRkcmVzc19zZXQgKHZhbHVlX3Jhd19hZGRyZXNzIChhcmcxKSk7CisgICAgICAg dHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZzEpKTsKKyAgICAgICBpZiAoVFlQ RV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EUFRSCisgCSAgfHwgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfTUVNQkVSUFRSKQorIAllcnJvciAoXygiQXR0ZW1wdCB0byBkZXJl ZmVyZW5jZSBwb2ludGVyIHRvIG1lbWJlciB3aXRob3V0IGFuIG9iamVjdCIpKTsKKyAgICAgICBp ZiAobm9zaWRlID09IEVWQUxfU0tJUCkKKy0JZ290byBub3NpZGVyZXQ7CiArCXsKLSsJICBzdHJ1 Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmxlbmd0aF9iYXRvbiA9IE5VTEw7Ci0rCSAgc3RydWN0 IGR3YXJmX2Jsb2NrICpibGsgPSBEV19CTE9DSyAoYXR0cik7Ci0rCi0rCSAgLyogVHVybiBhbnkg c2luZ2xlIERXX09QX3JlZyogaW50byBEV19PUF9icmVnKigwKSBidXQgY2xlYXJpbmcKLSsJICAg ICBEV19PUF9kZXJlZiogaW4gc3VjaCBjYXNlLiAgKi8KLSsKLSsJICBpZiAoYmxrLT5zaXplID09 IDEgJiYgYmxrLT5kYXRhWzBdID49IERXX09QX3JlZzAKLSsJICAgICAgJiYgYmxrLT5kYXRhWzBd IDw9IERXX09QX3JlZzMxKQotKwkgICAgbGVuZ3RoX2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9j ZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKwkgIGVsc2UgaWYgKGJsay0+c2l6ZSA+IDEgJiYgYmxr LT5kYXRhWzBdID09IERXX09QX3JlZ3gpCisrCSAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Cisr CSAgZ290byBub3NpZGVyZXQ7CisrCX0KKyAgICAgICBpZiAodW5vcF91c2VyX2RlZmluZWRfcCAo b3AsIGFyZzEpKQorLQlyZXR1cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsKKysJ eworKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKwkgIHJldHVybiB2YWx1ZV94X3Vub3Ag KGFyZzEsIG9wLCBub3NpZGUpOworKwl9CisgICAgICAgZWxzZSBpZiAobm9zaWRlID09IEVWQUxf QVZPSURfU0lERV9FRkZFQ1RTKQorIAl7CisgCSAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVl X3R5cGUgKGFyZzEpKTsKK0BAIC0yNjQ1LDEyICsyNjgxLDE4IEBAIGV2YWx1YXRlX3N1YmV4cF9z dGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgIC8qIEluIEMgeW91IGNhbiBk ZXJlZmVyZW5jZSBhbiBhcnJheSB0byBnZXQgdGhlIDFzdCBlbHQuICAqLworIAkgICAgICB8fCBU WVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorIAkgICAgKQorLQkgICAgcmV0dXJu IHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLAorLQkJCSAgICAgICBsdmFsX21l bW9yeSk7CiArCSAgICB7Ci0rCSAgICAgIFVMT05HRVNUIHVsb25nZXN0OwotKwkgICAgICBjb25z dCBnZGJfYnl0ZSAqZW5kOwotKwotKwkgICAgICBlbmQgPSByZWFkX3VsZWIxMjggKCZibGstPmRh dGFbMV0sICZibGstPmRhdGFbYmxrLT5zaXplXSwKLSsJCQkJICAmdWxvbmdlc3QpOwotKwkgICAg ICBpZiAoZW5kID09ICZibGstPmRhdGFbYmxrLT5zaXplXSkKLSsJCWxlbmd0aF9iYXRvbiA9IGR3 YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKysJICAgICAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisrCSAgICAgIHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RBUkdFVF9U WVBFICh0eXBlKSwKKysJCQkJIGx2YWxfbWVtb3J5KTsKICsJICAgIH0KLSsKLSsJICBpZiAobGVu Z3RoX2JhdG9uID09IE5VTEwpCisgCSAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBF X0NPREVfSU5UKQorLQkgICAgLyogR0RCIGFsbG93cyBkZXJlZmVyZW5jaW5nIGFuIGludC4gICov CistCSAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5i dWlsdGluX2ludCwKKy0JCQkgICAgICAgbHZhbF9tZW1vcnkpOwogKwkgICAgewotKwkgICAgICBz dHJ1Y3QgYXR0cmlidXRlICpzaXplX2F0dHI7Ci0rCSAgICAgIGdkYl9ieXRlICpkYXRhOwotKwot KwkgICAgICBsZW5ndGhfYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPmNvbXBfdW5pdF9vYnN0 YWNrLAotKwkJCQkJICAgIHNpemVvZiAoKmxlbmd0aF9iYXRvbikpOwotKwkgICAgICBsZW5ndGhf YmF0b24tPnBlcl9jdSA9IGN1LT5wZXJfY3U7Ci0rCSAgICAgIGxlbmd0aF9iYXRvbi0+c2l6ZSA9 IERXX0JMT0NLIChhdHRyKS0+c2l6ZSArIDI7Ci0rCSAgICAgIGRhdGEgPSBvYnN0YWNrX2FsbG9j ICgmY3UtPmNvbXBfdW5pdF9vYnN0YWNrLAotKwkJCQkgICAgbGVuZ3RoX2JhdG9uLT5zaXplKTsK LSsJICAgICAgbGVuZ3RoX2JhdG9uLT5kYXRhID0gZGF0YTsKLSsJICAgICAgbWVtY3B5IChkYXRh LCBEV19CTE9DSyAoYXR0ciktPmRhdGEsIERXX0JMT0NLIChhdHRyKS0+c2l6ZSk7Ci0rCi0rCSAg ICAgIC8qIERXX0FUX0JZVEVfU0laRSBleGlzdGluZyB0b2dldGhlciB3aXRoIERXX0FUX1NUUklO R19MRU5HVEgKLSsJCSBzcGVjaWZpZXMgdGhlIHNpemUgb2YgYW4gaW50ZWdlciB0byBmZXRjaC4g ICovCi0rCSAgICAgIHNpemVfYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2J5dGVfc2l6 ZSwgY3UpOwotKwkgICAgICBpZiAoc2l6ZV9hdHRyKQotKwkJewotKwkJICBkYXRhW0RXX0JMT0NL IChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZl9zaXplOwotKwkJICBkYXRhW0RXX0JMT0NLIChh dHRyKS0+c2l6ZSArIDFdID0gRFdfVU5TTkQgKHNpemVfYXR0cik7Ci0rCQkgIGlmIChkYXRhW0RX X0JMT0NLIChhdHRyKS0+c2l6ZSArIDFdICE9IERXX1VOU05EIChzaXplX2F0dHIpKQotKwkJICAg IGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgICAgXygiRFdfQVRfc3Ry aW5nX2xlbmd0aCdzIERXX0FUX2J5dGVfc2l6ZSAiCi0rCQkJCSAiaW50ZWdlciBleGNlZWRzIHRo ZSBieXRlIHNpemUgc3RvcmFnZSIpKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICBk YXRhW0RXX0JMT0NLIChhdHRyKS0+c2l6ZV0gPSBEV19PUF9kZXJlZjsKLSsJCSAgZGF0YVtEV19C TE9DSyAoYXR0ciktPnNpemUgKyAxXSA9IERXX09QX25vcDsKLSsJCX0KKysJICAgICAgZG9fY2xl YW51cHMgKG9sZF9jaGFpbik7CisrCSAgICAgIC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVuY2luZyBh biBpbnQuICAqLworKwkgICAgICByZXR1cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAt PmdkYmFyY2gpLT5idWlsdGluX2ludCwKKysJCQkJIGx2YWxfbWVtb3J5KTsKICsJICAgIH0KLSsK LSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQKLSsJICAgID0gUkFO R0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsJICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5 cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPSBsZW5ndGhfYmF0b247Ci0rCSAgVFlQRV9EWU5BTUlD IChyYW5nZV90eXBlKSA9IDE7Ci0rCX0KLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAg LyogY2hlY2sgZm9yIHRoZSBEV19BVF9ieXRlX3NpemUgYXR0cmlidXRlICovCi0rICAgICAgaWYg KGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKKyAJICBlbHNlCisgCSAgICBl cnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUu IikpOworIAl9CitAQCAtMjY2MCw5ICsyNzAyLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAorIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJs ZXMgYXJlIHJhcmUgZW5vdWdoIHRoYXQKKyAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNl ZW0gdG8gYmUgYSBtaXN0YWtlLiAgKi8KKyAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBU WVBFX0NPREVfSU5UKQorLQlyZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAt PmdkYmFyY2gpLT5idWlsdGluX2ludCwKKy0JCQkgICAgICAoQ09SRV9BRERSKSB2YWx1ZV9hc19h ZGRyZXNzIChhcmcxKSk7CistICAgICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7CiArCXsKLSsJ ICAvKiBXZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgYSBjb25zdGFudCBhZGRyZXNzIHdoZXJl IHRoZSBsb2NhdGlvbgotKwkgICAgIHNob3VsZCBiZSByZWFkIGZyb20gLSBhdHRyX2Zvcm1faXNf YmxvY2sgaXMgZXhwZWN0ZWQgaW5zdGVhZC4gIFNlZQotKwkgICAgIERXQVJGIGZvciB0aGUgRFdf QVRfU1RSSU5HX0xFTkdUSCB2cy4gRFdfQVRfQllURV9TSVpFIGRpZmZlcmVuY2UuCi0rCSAgICAg Ki8KLSsJICAvKiBQQVNTVEhSVSAqLwotKwl9Ci0rCi0gICAgICAgYXR0ciA9IGR3YXJmMl9hdHRy IChkaWUsIERXX0FUX2J5dGVfc2l6ZSwgY3UpOwotLSAgICAgIGlmIChhdHRyKQotLSAgICAgICAg ewotLSAgICAgICAgICBsZW5ndGggPSBEV19VTlNORCAoYXR0cik7Ci0tICAgICAgICB9Ci0rICAg ICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLSsJewotKwkgIFRZUEVf UkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gua2luZAotKwkgICAgPSBSQU5HRV9CT1VORF9L SU5EX0RXQVJGX0JMT0NLOwotKwkgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu dS5kd2FyZl9ibG9jayA9Ci0rCQkJCQlkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChhdHRy LCBjdSk7Ci0rCSAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7CisrCSAgZG9fY2xlYW51 cHMgKG9sZF9jaGFpbik7CisrCSAgcmV0dXJuIHZhbHVlX2F0X2xhenkgKGJ1aWx0aW5fdHlwZSAo ZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCisrCQkJCShDT1JFX0FERFIpIHZhbHVlX2FzX2Fk ZHJlc3MgKGFyZzEpKTsKICsJfQotKyAgICAgIGVsc2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lz X2NvbnN0YW50IChhdHRyKSkKLSsJVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGR3YXJm Ml9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0gICAgICAgZWxzZQotLSAgICAg ICAgewotLSAgICAgICAgICBsZW5ndGggPSAxOwotLSAgICAgICAgfQotKwlUWVBFX0hJR0hfQk9V TkQgKHJhbmdlX3R5cGUpID0gMTsKLSAgICAgfQorKyAgICAgIGFyZzEgPSB2YWx1ZV9pbmQgKGFy ZzEpOworKyAgICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIHJldHVybiBhcmcx OwogIAotLSAgaW5kZXhfdHlwZSA9IG9iamZpbGVfdHlwZSAob2JqZmlsZSktPmJ1aWx0aW5faW50 OwotLSAgcmFuZ2VfdHlwZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBpbmRleF90eXBlLCAx LCBsZW5ndGgpOwotICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vfc3RyaW5nX2NoYXJfdHlwZSAoY3Ut Pmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwotICAgdHlwZSA9IGNyZWF0ZV9zdHJpbmdfdHlwZSAo TlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKKyAgICAgY2FzZSBVTk9QX0FERFI6CisgICAg ICAgLyogQysrOiBjaGVjayBmb3IgYW5kIGhhbmRsZSBwb2ludGVyIHRvIG1lbWJlcnMuICAqLwor QEAgLTMwMDgsNyArMzA1NSw3IEBAIGV2YWx1YXRlX3N1YmV4cF93aXRoX2NvZXJjaW9uIChzdHJ1 Y3QgZXhwcmVzc2lvbiAqZXhwLAorIHsKKyAgIGVudW0gZXhwX29wY29kZSBvcDsKKyAgIGludCBw YzsKKy0gIHN0cnVjdCB2YWx1ZSAqdmFsOworKyAgc3RydWN0IHZhbHVlICp2YWwgPSBOVUxMOwor ICAgc3RydWN0IHN5bWJvbCAqdmFyOworICAgc3RydWN0IHR5cGUgKnR5cGU7CiAgCi1AQCAtNjMy NCw2MCArNzQyMSwxMzYgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRp ZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0gICBzdHJ1Y3QgdHlwZSAqYmFzZV90eXBlOwotICAg c3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7Ci0gICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwotLSAg TE9OR0VTVCBsb3cgPSAwOwotLSAgTE9OR0VTVCBoaWdoID0gLTE7Ci0rICBMT05HRVNUIGxvdzsK LSAgIGNoYXIgKm5hbWU7Ci0gICBMT05HRVNUIG5lZ2F0aXZlX21hc2s7CitAQCAtMzAxOSwxMyAr MzA2NiwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCwKKyAgICAgeworICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKKyAgICAgICB2YXIgPSBl eHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CisrICAgICAgLyogYWRkcmVzc19vZl92YXJpYWJsZSB3 aWxsIGNhbGwgb2JqZWN0X2FkZHJlc3Nfc2V0IGZvciBjaGVja190eXBlZGVmLgorKwkgQ2FsbCBp dCBvbmx5IGlmIHJlcXVpcmVkIGFzIGl0IGNhbiBlcnJvci1vdXQgb24gVkFSIGluIHJlZ2lzdGVy LiAgKi8KKysgICAgICBpZiAoVFlQRV9EWU5BTUlDIChTWU1CT0xfVFlQRSAodmFyKSkpCisrCXZh bCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOwor ICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmIChTWU1CT0xfVFlQRSAodmFyKSk7CisgICAgICAg aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCisgCSAgJiYgIVRZUEVfVkVD VE9SICh0eXBlKQorIAkgICYmIENBU1RfSVNfQ09OVkVSU0lPTiAoZXhwLT5sYW5ndWFnZV9kZWZu KSkKKyAJeworIAkgICgqcG9zKSArPSA0OworLQkgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUg KHZhciwgZXhwLT5lbHRzW3BjICsgMV0uYmxvY2spOworKwkgIGlmICghdmFsKQorKwkgICAgdmFs ID0gYWRkcmVzc19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7Cisg CSAgcmV0dXJuIHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFSR0VUX1RZ UEUgKHR5cGUpKSwKKyAJCQkgICAgIHZhbCk7CisgCX0KK0BAIC0zMDc3LDkgKzMxMjksMTMgQEAg ZXZhbHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAq cG9zKQogIAotICAgYmFzZV90eXBlID0gZGllX3R5cGUgKGRpZSwgY3UpOwotKyAgLyogUHJlc2Vy dmUgQkFTRV9UWVBFJ3Mgb3JpZ2luYWwgdHlwZSwganVzdCBzZXQgaXRzIExFTkdUSC4gICovCi0r ICBjaGVja190eXBlZGVmIChiYXNlX3R5cGUpOworICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKKyAg ICAgICAoKnBvcykgKz0gNDsKKy0gICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAoU1lNQk9MX1RZ UEUgKGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbCkpOworLSAgICAgIHJldHVybgorLQl2YWx1ZV9m cm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7Cisr ICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8gY2FsbCByZWFkX3Zhcl92YWx1ZSBidXQgdGhlIG9i amVjdCBldmFsdWF0aW9uIG1heQorKwkgbmVlZCB0byBoYXZlIGV4ZWN1dGVkIG9iamVjdF9hZGRy ZXNzX3NldCB3aGljaCBuZWVkcyB2YWxpZAorKwkgU1lNQk9MX1ZBTFVFX0FERFJFU1Mgb2YgdGhl IHN5bWJvbC4gIFN0aWxsIFZBTFVFIHJldHVybmVkIGJ5CisrCSByZWFkX3Zhcl92YWx1ZSB3ZSBs ZWZ0IGFzIGxhenkuICAqLworKyAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChyZWFkX3Zhcl92YWx1 ZSAoZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sLAorKwkJCQkJZGVwcmVjYXRlZF9zYWZlX2dldF9z ZWxlY3RlZF9mcmFtZSAoKSkpOworKyAgICAgIHJldHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKHNp emVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7CiAgCi0gICAvKiBUaGUgZGll X3R5cGUgY2FsbCBhYm92ZSBtYXkgaGF2ZSBhbHJlYWR5IHNldCB0aGUgdHlwZSBmb3IgdGhpcyBE SUUuICAqLwotICAgcmFuZ2VfdHlwZSA9IGdldF9kaWVfdHlwZSAoZGllLCBjdSk7Ci0gICBpZiAo cmFuZ2VfdHlwZSkKLSAgICAgcmV0dXJuIHJhbmdlX3R5cGU7CisgICAgIGRlZmF1bHQ6CisgICAg ICAgdmFsID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lE X1NJREVfRUZGRUNUUyk7CitkaWZmIC0tZ2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5o CitpbmRleCBmNWJiODJkLi4yOWNmNWJhIDEwMDY0NAorLS0tIGEvZ2RiL2YtbGFuZy5oCisrKysg Yi9nZGIvZi1sYW5nLmgKK0BAIC0yOCw2ICsyOCwxMCBAQCBleHRlcm4gdm9pZCBmX2Vycm9yIChj aGFyICopOwkvKiBEZWZpbmVkIGluIGYtZXhwLnkgKi8KKyBleHRlcm4gdm9pZCBmX3ByaW50X3R5 cGUgKHN0cnVjdCB0eXBlICosIGNvbnN0IGNoYXIgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAor IAkJCSAgaW50KTsKICAKLS0gIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfZm9ydHJhbikK LS0gICAgewotLSAgICAgIC8qIEZPUlRSQU4gaW1wbGllcyBhIGxvd2VyIGJvdW5kIG9mIDEsIGlm IG5vdCBnaXZlbi4gICovCi0tICAgICAgbG93ID0gMTsKLS0gICAgfQotKyAgLyogTE9XX0JPVU5E IGFuZCBISUdIX0JPVU5EIGFyZSBzZXQgZm9yIHJlYWwgYmVsb3cuICAqLwotKyAgcmFuZ2VfdHlw ZSA9IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIDAsIC0xKTsKLSsKLSsgIG5l Z2F0aXZlX21hc2sgPSAKLSsgICAgKExPTkdFU1QpIC0xIDw8IChUWVBFX0xFTkdUSCAoYmFzZV90 eXBlKSAqIFRBUkdFVF9DSEFSX0JJVCAtIDEpOworK2V4dGVybiBjb25zdCBjaGFyICpmX29iamVj dF9hZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtCisrICAoc3RydWN0IHR5cGUgKnR5 cGUsIHN0cnVjdCB1aV9maWxlICpzdHJlYW0pOworK2V4dGVybiB2b2lkIGZfb2JqZWN0X2FkZHJl c3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5cGUgKnR5cGUpOwogKwotKyAgLyogRXhj bHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cu ICBHREIgQWRhCi0rICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBp biBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQotKyAgICAgZXhpc3RpbmcgRFdBUkYgZHluYW1pYyBi b3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFjY2VzcwotKyAgICAgZXJyb3Jz LiAgKi8KKyBleHRlcm4gaW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJf Ynl0ZSAqLCBpbnQsIENPUkVfQUREUiwKKyAJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCisgCQkJ Y29uc3Qgc3RydWN0IHZhbHVlICosCitkaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50LmMgYi9n ZGIvZi10eXBlcHJpbnQuYworaW5kZXggZDM1YTI1NS4uZGVjODFkNSAxMDA2NDQKKy0tLSBhL2dk Yi9mLXR5cGVwcmludC5jCisrKysgYi9nZGIvZi10eXBlcHJpbnQuYworQEAgLTMyLDcgKzMyLDcg QEAKKyAjaW5jbHVkZSAiZ2RiY29yZS5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVk ZSAiZi1sYW5nLmgiCistCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorICNpbmNsdWRlICJnZGJf c3RyaW5nLmgiCisgI2luY2x1ZGUgPGVycm5vLmg+CiAgCi0tICAvKiBGSVhNRTogRm9yIHZhcmlh YmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291bGQgYmUKLS0gICAgIGEgdmFyaWFi bGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdlJ2xsIGFsbG93IGl0LAotLSAgICAg YnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4gICovCi0gICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAgICBs b3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOwotKyAgaWYgKGF0 dHIgJiYgYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3Vh Z2VfYWRhKQorQEAgLTQ5LDYgKzQ5LDM0IEBAIHZvaWQgZl90eXBlX3ByaW50X3ZhcnNwZWNfcHJl Zml4IChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlfZmlsZSAqLAorIHZvaWQgZl90eXBlX3ByaW50 X2Jhc2UgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1aV9maWxlICosIGludCwgaW50KTsKKyAMCisg CisrY29uc3QgY2hhciAqCisrZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0 cmVhbSAoc3RydWN0IHR5cGUgKnR5cGUsCisrCQkJCQkgICAgIHN0cnVjdCB1aV9maWxlICpzdHJl YW0pCisreworKyAgY29uc3QgY2hhciAqbXNnOworKworKyAgbXNnID0gb2JqZWN0X2FkZHJlc3Nf ZGF0YV9ub3RfdmFsaWQgKHR5cGUpOworKyAgaWYgKG1zZyAhPSBOVUxMKQogKyAgICB7Ci0rICAg ICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9CT1VORF9L SU5EX0RXQVJGX0JMT0NLOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxv dy51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0 dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAv KiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlz c2luZy4gICovCi0rICAgICAgbG93ID0gMDsKKysgICAgICAvKiBBc3N1bWluZyB0aGUgY29udGVu dCBwcmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCisrICAgICAg ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7CiArICAgIH0KLSsgIGVsc2Ug aWYgKGF0dHIgJiYgaXNfcmVmX2F0dHIgKGF0dHIpICYmIGN1LT5sYW5ndWFnZSAhPSBsYW5ndWFn ZV9hZGEpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9kaWU7Ci0rICAg ICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7Ci0rICAgICAgc3RydWN0IGF0dHJp YnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwogKwotKyAgICAgIHRhcmdldF9kaWUgPSBmb2xsb3dfZGll X3JlZl9vcl9zaWcgKGRpZSwgYXR0ciwgJnRhcmdldF9jdSk7Ci0rICAgICAgZ2RiX2Fzc2VydCAo dGFyZ2V0X2N1LT5vYmpmaWxlID09IGN1LT5vYmpmaWxlKTsKLSsgICAgICB0YXJnZXRfbG9jX2F0 dHIgPSBkd2FyZjJfYXR0ciAodGFyZ2V0X2RpZSwgRFdfQVRfbG9jYXRpb24sIHRhcmdldF9jdSk7 CisrICByZXR1cm4gbXNnOworK30KICsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5 cGUpLT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QK LSsgICAgICAgID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAodGFyZ2V0X2xvY19hdHRy LCB0YXJnZXRfY3UpOwotKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmxvdy51 LmR3YXJmX2xvY2xpc3QudHlwZQotKyAgICAgICAgPSBkaWVfdHlwZSAodGFyZ2V0X2RpZSwgdGFy Z2V0X2N1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICAv KiBGb3Igc2V0dGluZyBhIGRlZmF1bHQgaWYgRFdfQVRfVVBQRVJfQk9VTkQgd291bGQgYmUgbWlz c2luZy4gICovCi0rICAgICAgbG93ID0gMDsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAg ICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsJbG93ID0gZHdh cmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBlbHNlCi0rCXsK LSsJICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2ZvcnRyYW4pCi0rCSAgICB7Ci0rCSAg ICAgIC8qIEZPUlRSQU4gaW1wbGllcyBhIGxvd2VyIGJvdW5kIG9mIDEsIGlmIG5vdCBnaXZlbi4g ICovCi0rCSAgICAgIGxvdyA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAg ICAvKiBBY2NvcmRpbmcgdG8gRFdBUkYgd2Ugc2hvdWxkIGFzc3VtZSB0aGUgdmFsdWUgMCBvbmx5 IGZvcgotKwkJIExBTkdVQUdFX0MgYW5kIExBTkdVQUdFX0NQTFVTLiAgKi8KLSsJICAgICAgbG93 ID0gMDsKLSsJICAgIH0KLSsJfQotKyAgICAgIGlmICghVFlQRV9VTlNJR05FRCAoYmFzZV90eXBl KSAmJiAobG93ICYgbmVnYXRpdmVfbWFzaykpCi0rCWxvdyB8PSBuZWdhdGl2ZV9tYXNrOwotKyAg ICAgIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSA9IGxvdzsKLSsgICAgICBpZiAobG93ID49 IDApCi0rCVRZUEVfVU5TSUdORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgfQotIAotICAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX3VwcGVyX2JvdW5kLCBjdSk7Ci0tICBpZiAoYXR0 cikKLSsgIGlmICghYXR0ciB8fCAoIWF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgIWF0dHJf Zm9ybV9pc19jb25zdGFudCAoYXR0cikKLSsJCSYmICFpc19yZWZfYXR0ciAoYXR0cikpKQotICAg ICB7Ci0tICAgICAgaWYgKGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9jazEgfHwgaXNfcmVmX2F0 dHIgKGF0dHIpKQotLSAgICAgICAgewotLSAgICAgICAgICAvKiBHQ0MgZW5jb2RlcyBhcnJheXMg d2l0aCB1bnNwZWNpZmllZCBvciBkeW5hbWljIGxlbmd0aAotLSAgICAgICAgICAgICB3aXRoIGEg RFdfRk9STV9ibG9jazEgYXR0cmlidXRlIG9yIGEgcmVmZXJlbmNlIGF0dHJpYnV0ZS4KLS0gICAg ICAgICAgICAgRklYTUU6IEdEQiBkb2VzIG5vdCB5ZXQga25vdyBob3cgdG8gaGFuZGxlIGR5bmFt aWMKLS0gICAgICAgICAgICAgYXJyYXlzIHByb3Blcmx5LCB0cmVhdCB0aGVtIGFzIGFycmF5cyB3 aXRoIHVuc3BlY2lmaWVkCi0tICAgICAgICAgICAgIGxlbmd0aCBmb3Igbm93LgotLQotLSAgICAg ICAgICAgICBGSVhNRTogamltYi8yMDAzLTA5LTIyOiBHREIgZG9lcyBub3QgcmVhbGx5IGtub3cK LS0gICAgICAgICAgICAgaG93IHRvIGhhbmRsZSBhcnJheXMgb2YgdW5zcGVjaWZpZWQgbGVuZ3Ro Ci0tICAgICAgICAgICAgIGVpdGhlcjsgd2UganVzdCByZXByZXNlbnQgdGhlbSBhcyB6ZXJvLWxl bmd0aAotLSAgICAgICAgICAgICBhcnJheXMuICBDaG9vc2UgYW4gYXBwcm9wcmlhdGUgdXBwZXIg Ym91bmQgZ2l2ZW4KLS0gICAgICAgICAgICAgdGhlIGxvd2VyIGJvdW5kIHdlJ3ZlIGNvbXB1dGVk IGFib3ZlLiAgKi8KLS0gICAgICAgICAgaGlnaCA9IGxvdyAtIDE7Ci0tICAgICAgICB9Ci0tICAg ICAgZWxzZQotLSAgICAgICAgaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9jb25zdGFudF92YWx1ZSAo YXR0ciwgMSk7Ci0rICAgICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBj dSk7Ci0rICAgICAgLyogSXQgZG9lcyBub3QgaHVydCBidXQgaXQgaXMgbmVlZGxlc3NseSBpbmVm ZmVjdGl2ZSBpbiBjaGVja190eXBlZGVmLiAgKi8KLSsgICAgICBpZiAoYXR0ciAmJiAoYXR0cl9m b3JtX2lzX2Jsb2NrIChhdHRyKSB8fCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKGF0dHIpKSkKLSsg ICAgICAJewotKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAocmFuZ2VfdHlwZSkg PSAxOwotKwkgIFRZUEVfRFlOQU1JQyAocmFuZ2VfdHlwZSkgPSAxOwotKwl9Ci0rICAgICAgLyog UGFzcyBpdCBub3cgYXMgdGhlIHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQuICAqLwotKyAgICB9 Cisrdm9pZAorK2Zfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9vcl9lcnJvciAoc3RydWN0IHR5 cGUgKnR5cGUpCisreworKyAgY29uc3QgY2hhciAqbXNnOwogKwotKyAgaWYgKGF0dHIgJiYgYXR0 cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQor KyAgbXNnID0gb2JqZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHR5cGUpOworKyAgaWYgKG1z ZyAhPSBOVUxMKQogKyAgICB7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+ aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsgICAgICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2sgPQotKwkJCQkJZHdhcmYy X2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwgY3UpOwotKyAgICAgIFRZUEVfRFlOQU1JQyAo cmFuZ2VfdHlwZSkgPSAxOworKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0IGJlY2F1 c2UgdGhlICVzLiIpLCBfKG1zZykpOwogKyAgICB9Ci0rICBlbHNlIGlmIChhdHRyICYmIGlzX3Jl Zl9hdHRyIChhdHRyKSAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotKyAgICB7Ci0r ICAgICAgc3RydWN0IGRpZV9pbmZvICp0YXJnZXRfZGllOwotKyAgICAgIHN0cnVjdCBkd2FyZjJf Y3UgKnRhcmdldF9jdSA9IGN1OwotKyAgICAgIHN0cnVjdCBhdHRyaWJ1dGUgKnRhcmdldF9sb2Nf YXR0cjsKLSsKLSsgICAgICB0YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUs IGF0dHIsICZ0YXJnZXRfY3UpOwotKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmls ZSA9PSBjdS0+b2JqZmlsZSk7Ci0rICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIg KHRhcmdldF9kaWUsIERXX0FUX2xvY2F0aW9uLCB0YXJnZXRfY3UpOworK30KICsKLSsgICAgICBU WVBFX1JBTkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5E X0RXQVJGX0xPQ0xJU1Q7Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+aGln aC51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBkd2FyZjJfYXR0cl90b19sb2Ns aXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7Ci0rICAgICAgVFlQRV9SQU5H RV9EQVRBIChyYW5nZV90eXBlKS0+aGlnaC51LmR3YXJmX2xvY2xpc3QudHlwZQotKyAgICAgICAg PSBkaWVfdHlwZSAodGFyZ2V0X2RpZSwgdGFyZ2V0X2N1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMg KHJhbmdlX3R5cGUpID0gMTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgYXR0ciA9 IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0tICAgICAgaWYgKGF0dHIpCi0r ICAgICAgTE9OR0VTVCBoaWdoOworIC8qIExFVkVMIGlzIHRoZSBkZXB0aCB0byBpbmRlbnQgbGlu ZXMgYnkuICAqLworIAorIHZvaWQKK0BAIC01OCw2ICs4Niw5IEBAIGZfcHJpbnRfdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmluZywgc3RydWN0IHVpX2ZpbGUgKnN0 cmVhbSwKKyAgIGVudW0gdHlwZV9jb2RlIGNvZGU7CisgICBpbnQgZGVtYW5nbGVkX2FyZ3M7Cisg CisrICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlw ZSwgc3RyZWFtKSAhPSBOVUxMKQorKyAgICByZXR1cm47CiArCi0rICAgICAgaWYgKGF0dHIgJiYg YXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsJaGlnaCA9IGR3YXJmMl9nZXRfYXR0cl9j b25zdGFudF92YWx1ZSAoYXR0ciwgMCk7Ci0rICAgICAgZWxzZQotIAl7Ci0tCSAgaW50IGNvdW50 ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAxKTsKLS0JICBoaWdoID0g bG93ICsgY291bnQgLSAxOwotKwkgIFRZUEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5 cGUpID0gMTsKLSsJICBoaWdoID0gbG93IC0gMTsKLSAJfQotKyAgICAgIGlmICghVFlQRV9VTlNJ R05FRCAoYmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQotKwloaWdoIHw9IG5l Z2F0aXZlX21hc2s7Ci0rICAgICAgVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSA9IGhpZ2g7 Ci0gICAgIH0KKyAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBlLCBzdHJlYW0sIHNob3csIGxldmVs KTsKKyAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOworICAgaWYgKCh2YXJzdHJpbmcgIT0gTlVM TCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCitAQCAtMTY1LDYgKzE5Niw5IEBAIGZfdHlwZV9wcmlu dF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB1aV9maWxlICpzdHJl YW0sCiAgCi0gICAvKiBEd2FyZi0yIHNwZWNpZmljYXRpb25zIGV4cGxpY2l0bHkgYWxsb3dzIHRv IGNyZWF0ZSBzdWJyYW5nZSB0eXBlcwotQEAgLTY0MTksMjAgKzc1OTIsNDEgQEAgcmVhZF9zdWJy YW5nZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0g CX0KLSAgICAgfQorICAgUVVJVDsKICAKLS0gIG5lZ2F0aXZlX21hc2sgPQotLSAgICAoTE9OR0VT VCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNlX3R5cGUpICogVEFSR0VUX0NIQVJfQklUIC0gMSk7 Ci0tICBpZiAoIVRZUEVfVU5TSUdORUQgKGJhc2VfdHlwZSkgJiYgKGxvdyAmIG5lZ2F0aXZlX21h c2spKQotLSAgICBsb3cgfD0gbmVnYXRpdmVfbWFzazsKLS0gIGlmICghVFlQRV9VTlNJR05FRCAo YmFzZV90eXBlKSAmJiAoaGlnaCAmIG5lZ2F0aXZlX21hc2spKQotLSAgICBoaWdoIHw9IG5lZ2F0 aXZlX21hc2s7Ci0rICAvKiBEV19BVF9iaXRfc3RyaWRlIGlzIGN1cnJlbnRseSB1bnN1cHBvcnRl ZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwg RFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKLSsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSsgICAgewotKyAgICAg IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmJ5dGVfc3RyaWRlLmtpbmQKLSsgICAgICAg ID0gUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSzsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEg KHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2Jsb2NrID0KLSsJCQkJCWR3YXJmMl9h dHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgICAgICBUWVBFX0RZTkFNSUMgKHJh bmdlX3R5cGUpID0gMTsKLSsgICAgfQotKyAgZWxzZSBpZiAoYXR0ciAmJiBpc19yZWZfYXR0ciAo YXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSsgICAgewotKyAgICAgIHN0 cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJn ZXRfY3UgPSBjdTsKLSsgICAgICBzdHJ1Y3QgYXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Cisr ICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfVFlQRURFRikKKysgICAgQ0hFQ0tf VFlQRURFRiAodHlwZSk7CisrCisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisgICAgIHsK KyAgICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CitkaWZmIC0tZ2l0IGEvZ2RiL2YtdmFscHJpbnQu YyBiL2dkYi9mLXZhbHByaW50LmMKK2luZGV4IGUyN2Y3OWUuLjkzMzIyYTIgMTAwNjQ0CistLS0g YS9nZGIvZi12YWxwcmludC5jCisrKysgYi9nZGIvZi12YWxwcmludC5jCitAQCAtNTQsMTUgKzU0 LDE3IEBAIGludCBmNzdfYXJyYXlfb2Zmc2V0X3RibFtNQVhfRk9SVFJBTl9ESU1TICsgMV1bMl07 CisgLyogVGhlIGZvbGxvd2luZyBtYWNybyBnaXZlcyB1cyB0aGUgc2l6ZSBvZiB0aGUgbnRoIGRp bWVuc2lvbiwgV2hlcmUgCisgICAgbiBpcyAxIGJhc2VkLiAqLwogIAotLSAgcmFuZ2VfdHlwZSA9 IGNyZWF0ZV9yYW5nZV90eXBlIChOVUxMLCBiYXNlX3R5cGUsIGxvdywgaGlnaCk7Ci0rICAgICAg dGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1 KTsKLSsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUp OwotKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19B VF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKKy0jZGVmaW5lIEY3N19ESU1fU0laRShuKSAoZjc3X2Fy cmF5X29mZnNldF90Ymxbbl1bMV0pCisrI2RlZmluZSBGNzdfRElNX0NPVU5UKG4pIChmNzdfYXJy YXlfb2Zmc2V0X3RibFtuXVsxXSkKICAKLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBs ZW5ndGggYXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4g IEdEQiBjb3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVu dGVkIGF0Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAg Ki8KLS0gIGlmIChhdHRyICYmIGF0dHItPmZvcm0gPT0gRFdfRk9STV9ibG9jazEpCi0tICAgIFRZ UEVfSElHSF9CT1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLSsgICAgICBUWVBFX1JB TkdFX0RBVEEgKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS5raW5kCi0rICAgICAgICA9IFJBTkdF X0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDsKLSsgICAgICBUWVBFX1JBTkdFX0RBVEEgKHJhbmdl X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3QubG9jbGlzdAotKyAgICAgICAgPSBk d2FyZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uICh0YXJnZXRfbG9jX2F0dHIsIHRhcmdldF9jdSk7 Ci0rICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2Fy Zl9sb2NsaXN0LnR5cGUKLSsgICAgICAgID0gZGllX3R5cGUgKHRhcmdldF9kaWUsIHRhcmdldF9j dSk7Ci0rICAgICAgVFlQRV9EWU5BTUlDIChyYW5nZV90eXBlKSA9IDE7Ci0rICAgIH0KLSsgIGVs c2UgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsgICAgewotKyAg ICAgIFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0 YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBpZiAoVFlQRV9CWVRFX1NUUklERSAocmFuZ2Vf dHlwZSkgPT0gMCkKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgXygi Rm91bmQgRFdfQVRfYnl0ZV9zdHJpZGUgd2l0aCB1bnN1cHBvcnRlZCB2YWx1ZSAwIikpOwotKyAg ICB9CistLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0IGZvciByb3cgbiB3aGVy ZSBuIGlzIDEtYmFzZWQuICovCisrLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgZWxlbWVu dCBzaXplIGZvciByb3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICovCiAgCi0gICBuYW1lID0gZHdh cmYyX25hbWUgKGRpZSwgY3UpOwotICAgaWYgKG5hbWUpCi1AQCAtODcxMiwxMCArOTkwNiwxMiBA QCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qgc3lt Ym9sICpzeW0sCi0gICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJlZ2lzdGVyIG9yIG1l bW9yeSBsb2NhdGlvbiBpcwotICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJlYWQtbG9jYWwgYmxv Y2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKLSAgICAgIG5vdCBiZSB3b3J0aHdoaWxl LiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1hbmNlCi0tICAgICBv ciBtZW1vcnkgbnVtYmVycyBzaG93IG1lIG90aGVyd2lzZS4gICovCi0rICAgICBvciBtZW1vcnkg bnVtYmVycyBzaG93IG1lIG90aGVyd2lzZS4KLSsgICAgIAotKyAgICAgU1lNQk9MX0NMQVNTIG1h eSBnZXQgb3ZlcnJpZGVuIGJ5IGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZC4gICovCistI2Rl ZmluZSBGNzdfRElNX09GRlNFVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCisrI2Rl ZmluZSBGNzdfRElNX0JZVEVfU1RSSURFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkK ICAKLS0gIGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoYXR0ciwgc3ltLCBjdSk7Ci0gICBT WU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfQ09NUFVURUQ7Ci0rICBkd2FyZjJfc3ltYm9sX21hcmtf Y29tcHV0ZWQgKGF0dHIsIHN5bSwgY3UpOwotIH0KKyBpbnQKKyBmNzdfZ2V0X2xvd2VyYm91bmQg KHN0cnVjdCB0eXBlICp0eXBlKQorIHsKKysgIGZfb2JqZWN0X2FkZHJlc3NfZGF0YV92YWxpZF9v cl9lcnJvciAodHlwZSk7CisrCisgICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VORF9JU19VTkRF RklORUQgKHR5cGUpKQorICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5vdCBiZSAnKicg aW4gRjc3IikpOwogIAotIC8qIEdpdmVuIGEgcG9pbnRlciB0byBhIERXQVJGIGluZm9ybWF0aW9u IGVudHJ5LCBmaWd1cmUgb3V0IGlmIHdlIG5lZWQKLUBAIC04NzQ2LDYgKzk5NDIsOCBAQCBuZXdf c3ltYm9sIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotIAkJCQkJICAgICBzaXplb2YgKHN0cnVjdCBzeW1ib2wpKTsKLSAgICAg ICBPQkpTVEFUIChvYmpmaWxlLCBuX3N5bXMrKyk7Ci0gICAgICAgbWVtc2V0IChzeW0sIDAsIHNp emVvZiAoc3RydWN0IHN5bWJvbCkpOwotKyAgICAgIC8qIFNvbWUgbWV0aG9kcyBhcmUgY2FsbGVk IHcvbyBjaGVja2luZyBTWU1CT0xfQ09NUFVURURfT1BTIHZhbGlkaXR5LiAgKi8KLSsgICAgICBT WU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOworQEAgLTcy LDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQorIGlu dAorIGY3N19nZXRfdXBwZXJib3VuZCAoc3RydWN0IHR5cGUgKnR5cGUpCisgeworKyAgZl9vYmpl Y3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vycm9yICh0eXBlKTsKKysKKyAgIGlmIChUWVBFX0FS UkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5FRCAodHlwZSkpCisgICAgIHsKKy0gICAgICAvKiBX ZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJheSBvbiBvdXIgaGFuZHMuICBBc3N1bWUgdGhhdAor LQkgdXBwZXJfYm91bmQgPT0gbG93ZXJfYm91bmQgc28gdGhhdCB3ZSBzaG93IGF0IGxlYXN0IDEg ZWxlbWVudC4KKy0JIElmIHRoZSB1c2VyIHdhbnRzIHRvIHNlZSBtb3JlIGVsZW1lbnRzLCBsZXQg aGltIG1hbnVhbGx5IGFzayBmb3IgJ2VtCistCSBhbmQgd2UnbGwgc3Vic2NyaXB0IHRoZSBhcnJh eSBhbmQgc2hvdyBoaW0uICAqLworKyAgICAgIC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFy cmF5IG9uIG91ciBoYW5kcy4gIEFzIHR5cGVfbGVuZ3RoX2dldAorKwkgYWxyZWFkeSBhc3N1bWVz IGEgbGVuZ3RoIHplcm8gb2YgYXJyYXlzIHdpdGggdW5kZXJmaW5lZCBib3VuZHMgVkFMQUREUgor KwkgcGFzc2VkIHRvIHRoZSBGb3J0cmFuIGZ1bmN0aW9ucyBkb2VzIG5vdCBjb250YWluZWQgdGhl IHJlYWwgaW5mZXJpb3IKKysJIG1lbW9yeSBjb250ZW50LiAgVXNlciBzaG91bGQgcmVxdWVzdCBw cmludGluZyBvZiBzcGVjaWZpYyBhcnJheQorKwkgZWxlbWVudHMgaW5zdGVhZC4gICovCiAgCi0g ICAgICAgLyogQ2FjaGUgdGhpcyBzeW1ib2wncyBuYW1lIGFuZCB0aGUgbmFtZSdzIGRlbWFuZ2xl ZCBmb3JtIChpZiBhbnkpLiAgKi8KLSAgICAgICBTWU1CT0xfTEFOR1VBR0UgKHN5bSkgPSBjdS0+ bGFuZ3VhZ2U7Ci1AQCAtOTM3NSw2ICsxMDU3Myw5IEBAIHJlYWRfdHlwZV9kaWUgKHN0cnVjdCBk aWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKLSAgICAgICBicmVhazsKKy0gICAg ICByZXR1cm4gZjc3X2dldF9sb3dlcmJvdW5kICh0eXBlKTsKKysgICAgICByZXR1cm4gZjc3X2dl dF9sb3dlcmJvdW5kICh0eXBlKSAtIDE7CiAgICAgIH0KICAKLSsgIGlmICh0aGlzX3R5cGUpCi0r ICAgIGZpbmFsaXplX3R5cGUgKHRoaXNfdHlwZSk7CisgICByZXR1cm4gVFlQRV9BUlJBWV9VUFBF Ul9CT1VORF9WQUxVRSAodHlwZSk7CitAQCAtMTM0LDI0ICsxMzksMjkgQEAgZjc3X2NyZWF0ZV9h cnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAq c3RyZWFtKQorICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7Cisg ICAgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKKyAKKy0gICAgICBG NzdfRElNX1NJWkUgKG5kaW1lbikgPSB1cHBlciAtIGxvd2VyICsgMTsKKysgICAgICBGNzdfRElN X0NPVU5UIChuZGltZW4pID0gdXBwZXIgLSBsb3dlciArIDE7CiArCi0gICByZXR1cm4gdGhpc190 eXBlOwotIH0KKysgICAgICBGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0KKysgICAgICAg IFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHRtcF90eXBlKTsKKyAKKyAgICAgICB0bXBf dHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKTsKKyAgICAgICBuZGltZW4rKzsKKyAg ICAgfQorIAorLSAgLyogTm93IHdlIG11bHRpcGx5IGVsdGxlbiBieSBhbGwgdGhlIG9mZnNldHMs IHNvIHRoYXQgbGF0ZXIgd2UgCisrICAvKiBOb3cgd2UgbXVsdGlwbHkgZWx0bGVuIGJ5IGFsbCB0 aGUgQllURV9TVFJJREVzLCBzbyB0aGF0IGxhdGVyIHdlCisgICAgICBjYW4gcHJpbnQgb3V0IGFy cmF5IGVsZW1lbnRzIGNvcnJlY3RseS4gIFVwIHRpbGwgbm93IHdlIAorLSAgICAga25vdyBhbiBv ZmZzZXQgdG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvIAorKyAgICAga25vdyBh biBlbHRsZW4gdG8gYXBwbHkgdG8gZ2V0IHRoZSBpdGVtIGJ1dCB3ZSBhbHNvCisgICAgICBoYXZl IHRvIGtub3cgaG93IG11Y2ggdG8gYWRkIHRvIGdldCB0byB0aGUgbmV4dCBpdGVtICovCiAgCi1A QCAtMTE5NzksNjcgKzEzMTgwLDEwMiBAQCBhdHRyX2Zvcm1faXNfY29uc3RhbnQgKHN0cnVjdCBh dHRyaWJ1dGUgKmF0dHIpCisgICBuZGltZW4tLTsKKyAgIGVsdGxlbiA9IFRZUEVfTEVOR1RIICh0 bXBfdHlwZSk7CistICBGNzdfRElNX09GRlNFVCAobmRpbWVuKSA9IGVsdGxlbjsKKysgIGlmIChG NzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID09IDApCisrICAgIEY3N19ESU1fQllURV9TVFJJ REUgKG5kaW1lbikgPSBlbHRsZW47CisgICB3aGlsZSAoLS1uZGltZW4gPiAwKQorICAgICB7Cist ICAgICAgZWx0bGVuICo9IEY3N19ESU1fU0laRSAobmRpbWVuICsgMSk7CistICAgICAgRjc3X0RJ TV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47CisrICAgICAgZWx0bGVuICo9IEY3N19ESU1fQ09V TlQgKG5kaW1lbiArIDEpOworKyAgICAgIGlmIChGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4p ID09IDApCisrCUY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbikgPSBlbHRsZW47CiAgICAgIH0K ICB9CiAgCi0tc3RhdGljIHZvaWQKLS1kd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVj dCBhdHRyaWJ1dGUgKmF0dHIsIHN0cnVjdCBzeW1ib2wgKnN5bSwKLS0JCQkgICAgIHN0cnVjdCBk d2FyZjJfY3UgKmN1KQotKy8qIENvbnZlcnQgRFdfQkxPQ0sgaW50byBzdHJ1Y3QgZHdhcmYyX2xv Y2V4cHJfYmF0b24uICBBVFRSIG11c3QgYmUgYSBEV19CTE9DSwotKyAgIGF0dHJpYnV0ZSB0eXBl LiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICoKLStkd2FyZjJf YXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdh cmYyX2N1ICpjdSkKLSB7Ci0tICBpZiAoYXR0cl9mb3JtX2lzX3NlY3Rpb25fb2Zmc2V0IChhdHRy KQotLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwgb3IgdGhlIG9m ZnNldCBtYXkgYmUgb3V0c2lkZQotLQkgdGhlIHNlY3Rpb24uICBJZiBzbywgZmFsbCB0aHJvdWdo IHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCi0tCSBvdGhlciBicmFuY2guICAqLwotLSAgICAgICYm IERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLnNpemUpCi0tICAgIHsK LS0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJhdG9uOwotKyAgc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKK0BAIC0xNzIsMzQgKzE4MiwzNCBAQCBmNzdfcHJp bnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpb25zLCBzdHJ1Y3QgdHlwZSAqdHlwZSwK ICAKLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9v YnN0YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsK LS0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAgICBnZGJfYXNzZXJ0IChi YXRvbi0+cGVyX2N1KTsKLSsgIGdkYl9hc3NlcnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikp OworICAgaWYgKG5zcyAhPSBuZGltZW5zaW9ucykKKyAgICAgeworLSAgICAgIGZvciAoaSA9IDA7 IChpIDwgRjc3X0RJTV9TSVpFIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgp OyBpKyspCisrICAgICAgZm9yIChpID0gMDsgKGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgq ZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCisgCXsKKyAJICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIoICIpOworIAkgIGY3N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGlt ZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgICB2YWxhZGRyICsgaSAq IEY3N19ESU1fT0ZGU0VUIChuc3MpLAorLQkJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09G RlNFVCAobnNzKSwKKysJCQkgICAgIHZhbGFkZHIgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAo bnNzKSwKKysJCQkgICAgIGFkZHJlc3MgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwK KyAJCQkgICAgIHN0cmVhbSwgcmVjdXJzZSwgdmFsLCBvcHRpb25zLCBlbHRzKTsKKyAJICBmcHJp bnRmX2ZpbHRlcmVkIChzdHJlYW0sICIpICIpOworIAl9CistICAgICAgaWYgKCplbHRzID49IG9w dGlvbnMtPnByaW50X21heCAmJiBpIDwgRjc3X0RJTV9TSVpFIChuc3MpKSAKKysgICAgICBpZiAo KmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRfbWF4ICYmIGkgPCBGNzdfRElNX0NPVU5UIChuc3MpKQor IAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKKyAgICAgfQorICAgZWxzZQorICAg ICB7CistICAgICAgZm9yIChpID0gMDsgaSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMp IDwgb3B0aW9ucy0+cHJpbnRfbWF4OworKyAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX0NP VU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXg7CisgCSAgIGkrKywgKCpl bHRzKSsrKQorIAl7CisgCSAgdmFsX3ByaW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKKy0J CSAgICAgdmFsYWRkciArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAorKwkJICAg ICB2YWxhZGRyICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKKyAJCSAg ICAgMCwKKy0JCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMp LAorKwkJICAgICBhZGRyZXNzICsgaSAqIEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25z KSwKKyAJCSAgICAgc3RyZWFtLCByZWN1cnNlLCB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3Vh Z2UpOwogIAotLSAgICAgIGR3YXJmMl9yZWFkX3NlY3Rpb24gKGR3YXJmMl9wZXJfb2JqZmlsZS0+ b2JqZmlsZSwKLS0JCQkgICAmZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2MpOwotKyAgYmF0b24gPSBv YnN0YWNrX2FsbG9jICgmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc2l6ZW9mICgqYmF0 b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2RiX2Fzc2VydCAoYmF0 b24tPnBlcl9jdSk7CistCSAgaWYgKGkgIT0gKEY3N19ESU1fU0laRSAobnNzKSAtIDEpKQorKwkg IGlmIChpICE9IChGNzdfRElNX0NPVU5UIChuc3MpIC0gMSkpCisgCSAgICBmcHJpbnRmX2ZpbHRl cmVkIChzdHJlYW0sICIsICIpOwogIAotLSAgICAgIC8qIFdlIGRvbid0IGtub3cgaG93IGxvbmcg dGhlIGxvY2F0aW9uIGxpc3QgaXMsIGJ1dCBtYWtlIHN1cmUgd2UKLS0JIGRvbid0IHJ1biBvZmYg dGhlIGVkZ2Ugb2YgdGhlIHNlY3Rpb24uICAqLwotLSAgICAgIGJhdG9uLT5zaXplID0gZHdhcmYy X3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLS0gICAgICBiYXRvbi0+ ZGF0YSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+bG9jLmJ1ZmZlciArIERXX1VOU05EIChhdHRyKTsK LS0gICAgICBiYXRvbi0+YmFzZV9hZGRyZXNzID0gY3UtPmJhc2VfYWRkcmVzczsKLS0gICAgICBp ZiAoY3UtPmJhc2Vfa25vd24gPT0gMCkKLS0JY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRz LAotLQkJICAgXygiTG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1Ug YmFzZSBhZGRyZXNzLiIpKTsKLSsgIC8qIE5vdGUgdGhhdCB3ZSdyZSBqdXN0IGNvcHlpbmcgdGhl IGJsb2NrJ3MgZGF0YSBwb2ludGVyCi0rICAgICBoZXJlLCBub3QgdGhlIGFjdHVhbCBkYXRhLiAg V2UncmUgc3RpbGwgcG9pbnRpbmcgaW50byB0aGUKLSsgICAgIGluZm9fYnVmZmVyIGZvciBTWU0n cyBvYmpmaWxlOyByaWdodCBub3cgd2UgbmV2ZXIgcmVsZWFzZQotKyAgICAgdGhhdCBidWZmZXIs IGJ1dCB3aGVuIHdlIGRvIGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5Ci0rICAgICBuZWVkIHRv IGNoYW5nZS4gICovCi0rICBiYXRvbi0+c2l6ZSA9IERXX0JMT0NLIChhdHRyKS0+c2l6ZTsKLSsg IGJhdG9uLT5kYXRhID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwotKyAgZ2RiX2Fzc2VydCAoYmF0 b24tPnNpemUgPT0gMCB8fCBiYXRvbi0+ZGF0YSAhPSBOVUxMKTsKLSsKLSsgIHJldHVybiBiYXRv bjsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqCi0rZHdhcmYy X2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3RydWN0IGR3 YXJmMl9jdSAqY3UpCi0rewotKyAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICpiYXRvbjsK LSsKLSsgIC8qIERXX0FUX2xvY2F0aW9uIG9mIHRoZSByZWZlcmVuY2VkIERJRSBtYXkgYmUgbWlz c2luZyBpZiB0aGUgcmVmZXJlbmNlZAotKyAgICAgdmFyaWFibGUgaGFzIGJlZW4gb3B0aW1pemVk IG91dC4gICovCi0rICBpZiAoIWF0dHIpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgZHdhcmYy X3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLAotKwkJICAgICAgICZk d2FyZjJfcGVyX29iamZpbGUtPmxvYyk7Ci0rCi0rICBpZiAoIShhdHRyX2Zvcm1faXNfc2VjdGlv bl9vZmZzZXQgKGF0dHIpCi0rCS8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0IGF0IGFsbCwg b3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQotKwkgICB0aGUgc2VjdGlvbi4gIElmIHNvLCBm YWxsIHRocm91Z2ggdG8gdGhlIGNvbXBsYWludCBpbiB0aGUKLSsJICAgb3RoZXIgYnJhbmNoLiAg Ki8KLSsJJiYgRFdfVU5TTkQgKGF0dHIpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5sb2Muc2l6ZSkp Ci0rICAgIHJldHVybiBOVUxMOwotKwotKyAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xp c3RfYmF0b24pKTsKLSsgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwotKyAgZ2RiX2Fzc2Vy dCAoYmF0b24tPnBlcl9jdSk7Ci0rCi0rICAvKiBXZSBkb24ndCBrbm93IGhvdyBsb25nIHRoZSBs b2NhdGlvbiBsaXN0IGlzLCBidXQgbWFrZSBzdXJlIHdlCi0rICAgICBkb24ndCBydW4gb2ZmIHRo ZSBlZGdlIG9mIHRoZSBzZWN0aW9uLiAgKi8KLSsgIGJhdG9uLT5zaXplID0gZHdhcmYyX3Blcl9v YmpmaWxlLT5sb2Muc2l6ZSAtIERXX1VOU05EIChhdHRyKTsKLSsgIGJhdG9uLT5kYXRhID0gZHdh cmYyX3Blcl9vYmpmaWxlLT5sb2MuYnVmZmVyICsgRFdfVU5TTkQgKGF0dHIpOwotKyAgYmF0b24t PmJhc2VfYWRkcmVzcyA9IGN1LT5iYXNlX2FkZHJlc3M7Ci0rICBpZiAoY3UtPmJhc2Vfa25vd24g PT0gMCkKLSsgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkgICAgICAgXygi TG9jYXRpb24gbGlzdCB1c2VkIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNz LiIpKTsKLSsKLSsgIHJldHVybiBiYXRvbjsKLSt9Ci0rCi0rLyogU1lNIG1heSBnZXQgaXRzIFNZ TUJPTF9DTEFTUyBvdmVycmlkZW4gb24gaW52YWxpZCBBVFRSIGNvbnRlbnQuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0rZHdhcmYyX3N5bWJvbF9tYXJrX2NvbXB1dGVkIChzdHJ1Y3QgYXR0cmlidXRl ICphdHRyLCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCi0rCQkJICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSkKLSt7Ci0rICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3RfYmF0b247Ci0g Ci0rICBsb2NsaXN0X2JhdG9uID0gZHdhcmYyX2F0dHJfdG9fbG9jbGlzdF9iYXRvbiAoYXR0ciwg Y3UpOwotKyAgaWYgKGxvY2xpc3RfYmF0b24pCi0rICAgIHsKLSAgICAgICBTWU1CT0xfQ09NUFVU RURfT1BTIChzeW0pID0gJmR3YXJmMl9sb2NsaXN0X2Z1bmNzOwotLSAgICAgIFNZTUJPTF9MT0NB VElPTl9CQVRPTiAoc3ltKSA9IGJhdG9uOwotKyAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAo c3ltKSA9IGxvY2xpc3RfYmF0b247Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGF0dHJfZm9ybV9pc19i bG9jayAoYXR0cikpCi0rICAgIHsKLSsgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0g JmR3YXJmMl9sb2NleHByX2Z1bmNzOwotKyAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3lt KSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKKyAJICBpZiAoKCpl bHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCistCSAgICAgICYmIChpICE9IChGNzdfRElN X1NJWkUgKG5zcykgLSAxKSkpCisrCSAgICAgICYmIChpICE9IChGNzdfRElNX0NPVU5UIChuc3Mp IC0gMSkpKQorIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7CisgCX0KICAg ICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICpiYXRvbjsKLSsgICAgICBkd2FyZjJfaW52YWxpZF9hdHRyaWJfY2xhc3NfY29tcGxhaW50ICgi bG9jYXRpb24gZGVzY3JpcHRpb24iLAotKwkJCQkJICAgICBTWU1CT0xfTkFUVVJBTF9OQU1FIChz eW0pKTsKLSAKLS0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2Jq ZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0 b24pKTsKLS0gICAgICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKLS0gICAgICBnZGJfYXNz ZXJ0IChiYXRvbi0+cGVyX2N1KTsKLSsgICAgICAvKiBTb21lIG1ldGhvZHMgYXJlIGNhbGxlZCB3 L28gY2hlY2tpbmcgU1lNQk9MX0NPTVBVVEVEX09QUyB2YWxpZGl0eS4gICovCitAQCAtMjU2LDYg KzI2Niw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsIGludCBlbWJlZGRlZF9vZmZzZXQsCisgICBDT1JFX0FERFIgYWRkcjsKKyAgIGlu dCBpbmRleDsKICAKLS0gICAgICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkKLS0Jewot LQkgIC8qIE5vdGUgdGhhdCB3ZSdyZSBqdXN0IGNvcHlpbmcgdGhlIGJsb2NrJ3MgZGF0YSBwb2lu dGVyCi0tCSAgICAgaGVyZSwgbm90IHRoZSBhY3R1YWwgZGF0YS4gIFdlJ3JlIHN0aWxsIHBvaW50 aW5nIGludG8gdGhlCi0tCSAgICAgaW5mb19idWZmZXIgZm9yIFNZTSdzIG9iamZpbGU7IHJpZ2h0 IG5vdyB3ZSBuZXZlciByZWxlYXNlCi0tCSAgICAgdGhhdCBidWZmZXIsIGJ1dCB3aGVuIHdlIGRv IGNsZWFuIHVwIHByb3Blcmx5IHRoaXMgbWF5Ci0tCSAgICAgbmVlZCB0byBjaGFuZ2UuICAqLwot LQkgIGJhdG9uLT5zaXplID0gRFdfQkxPQ0sgKGF0dHIpLT5zaXplOwotLQkgIGJhdG9uLT5kYXRh ID0gRFdfQkxPQ0sgKGF0dHIpLT5kYXRhOwotLQl9Ci0tICAgICAgZWxzZQotLQl7Ci0tCSAgZHdh cmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2NvbXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9u IiwKLS0JCQkJCQkgU1lNQk9MX05BVFVSQUxfTkFNRSAoc3ltKSk7Ci0tCSAgYmF0b24tPnNpemUg PSAwOwotLQkgIGJhdG9uLT5kYXRhID0gTlVMTDsKLS0JfQotKyAgICAgIFNZTUJPTF9DT01QVVRF RF9PUFMgKHN5bSkgPSAmZHdhcmYyX21pc3NpbmdfZnVuY3M7Ci0rICAgICAgU1lNQk9MX0xPQ0FU SU9OX0JBVE9OIChzeW0pID0gTlVMTDsKKysgIGlmIChmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFs aWRfcHJpbnRfdG9fc3RyZWFtICh0eXBlLCBzdHJlYW0pICE9IE5VTEwpCisrICAgIHJldHVybiAw OworKworICAgQ0hFQ0tfVFlQRURFRiAodHlwZSk7CisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlw ZSkpCisgICAgIHsKK2RpZmYgLS1naXQgYS9nZGIvZmluZHZhci5jIGIvZ2RiL2ZpbmR2YXIuYwor aW5kZXggZTBjYTEyYy4uZGU2MzExYSAxMDA2NDQKKy0tLSBhL2dkYi9maW5kdmFyLmMKKysrKyBi L2dkYi9maW5kdmFyLmMKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgInVzZXItcmVncy5o IgorICNpbmNsdWRlICJibG9jay5oIgorICNpbmNsdWRlICJvYmpmaWxlcy5oIgorKyNpbmNsdWRl ICJkd2FyZjJsb2MuaCIKICAKLS0gICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChzeW0pID0gJmR3 YXJmMl9sb2NleHByX2Z1bmNzOwotLSAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRPTiAoc3ltKSA9 IGJhdG9uOwotKyAgICAgIC8qIEZvciBmdW5jdGlvbnMgYSBtaXNzaW5nIERXX0FUX2ZyYW1lX2Jh c2UgZG9lcyBub3Qgb3B0aW1pemUgb3V0IHRoZQotKwkgd2hvbGUgZnVuY3Rpb24gZGVmaW5pdGlv biwgb25seSBpdHMgZnJhbWUgYmFzZSByZXNvbHZpbmcuICAqLwotKyAgICAgIGlmIChhdHRyLT5u YW1lID09IERXX0FUX2xvY2F0aW9uKQotKwlTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfT1BUSU1J WkVEX09VVDsKLSAgICAgfQotIH0KKyAvKiBCYXNpYyBieXRlLXN3YXBwaW5nIHJvdXRpbmVzLiAg QWxsICdleHRyYWN0JyBmdW5jdGlvbnMgcmV0dXJuIGEKKyAgICBob3N0LWZvcm1hdCBpbnRlZ2Vy IGZyb20gYSB0YXJnZXQtZm9ybWF0IGludGVnZXIgYXQgQUREUiB3aGljaCBpcworQEAgLTQwMSwy NyArNDAyLDE2IEBAIHN5bWJvbF9yZWFkX25lZWRzX2ZyYW1lIChzdHJ1Y3Qgc3ltYm9sICpzeW0p CisgLyogR2l2ZW4gYSBzdHJ1Y3Qgc3ltYm9sIGZvciBhIHZhcmlhYmxlLAorICAgIGFuZCBhIHN0 YWNrIGZyYW1lIGlkLCByZWFkIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUKKyAgICBhbmQgcmV0 dXJuIGEgKHBvaW50ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAK Ky0gICBJZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50 ZXIuICAqLworKyAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91bmQsIHJldHVybiBhIHpl cm8gcG9pbnRlci4KKysgICBXZSBoYXZlIHRvIGZpcnN0IGZpbmQgdGhlIGFkZHJlc3Mgb2YgdGhl IHZhcmlhYmxlIGJlZm9yZSBhbGxvY2F0aW5nIHN0cnVjdAorKyAgIHZhbHVlIHRvIHJldHVybiBh cyBpdHMgc2l6ZSBtYXkgZGVwZW5kIG9uIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MgcG9zc2li bHkKKysgICB1c2VkIGJ5IGl0cyB0eXBlLiAgKi8KICAKLUBAIC0xMjA1MCw3ICsxMzI4Niw3IEBA IGR3YXJmMl9zeW1ib2xfbWFya19jb21wdXRlZCAoc3RydWN0IGF0dHJpYnV0ZSAqYXR0ciwgc3Ry dWN0IHN5bWJvbCAqc3ltLAotIHN0cnVjdCBvYmpmaWxlICoKLSBkd2FyZjJfcGVyX2N1X29iamZp bGUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKKyBzdHJ1Y3QgdmFsdWUgKgor IHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKICB7Ci0tICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+cHN5bXRhYi0+ b2JqZmlsZTsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOwor LSAgc3RydWN0IHZhbHVlICp2OworICAgc3RydWN0IHR5cGUgKnR5cGUgPSBTWU1CT0xfVFlQRSAo dmFyKTsKKyAgIENPUkVfQUREUiBhZGRyOworLSAgaW50IGxlbjsKKy0KKy0gIGlmIChTWU1CT0xf Q0xBU1MgKHZhcikgPT0gTE9DX0NPTVBVVEVECistICAgICAgfHwgU1lNQk9MX0NMQVNTICh2YXIp ID09IExPQ19SRUdJU1RFUikKKy0gICAgLyogVGhlc2UgY2FzZXMgZG8gbm90IHVzZSBWLiAgKi8K Ky0gICAgdiA9IE5VTEw7CistICBlbHNlCistICAgIHsKKy0gICAgICB2ID0gYWxsb2NhdGVfdmFs dWUgKHR5cGUpOworLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CS8qIFRoZSBt b3N0IGxpa2VseSBwb3NzaWJpbGl0eS4gICovCistICAgIH0KKy0KKy0gIGxlbiA9IFRZUEVfTEVO R1RIICh0eXBlKTsKICAKLSAgIC8qIFJldHVybiB0aGUgbWFzdGVyIG9iamZpbGUsIHNvIHRoYXQg d2UgY2FuIHJlcG9ydCBhbmQgbG9vayB1cCB0aGUKLSAgICAgIGNvcnJlY3QgZmlsZSBjb250YWlu aW5nIHRoaXMgdmFyaWFibGUuICAqLwotQEAgLTEyMDcwLDcgKzEzMzA2LDcgQEAgZHdhcmYyX3Bl cl9jdV9hZGRyX3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSAgIGVs c2UKLSAgICAgewotICAgICAgIC8qIElmIHRoZSBDVSBpcyBub3QgY3VycmVudGx5IHJlYWQgaW4s IHdlIHJlLXJlYWQgaXRzIGhlYWRlci4gICovCi0tICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGUgPSBwZXJfY3UtPnBzeW10YWItPm9iamZpbGU7Ci0rICAgICAgc3RydWN0IG9iamZpbGUgKm9i amZpbGUgPSBwZXJfY3UtPm9iamZpbGU7Ci0gICAgICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmls ZSAqcGVyX29iamZpbGUKLSAJPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxl X2RhdGFfa2V5KTsKLSAgICAgICBnZGJfYnl0ZSAqaW5mb19wdHIgPSBwZXJfb2JqZmlsZS0+aW5m by5idWZmZXIgKyBwZXJfY3UtPm9mZnNldDsKLUBAIC0xMjA5Miw3ICsxMzMyOCw3IEBAIGR3YXJm Ml9wZXJfY3Vfb2Zmc2V0X3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkK LSAgIGVsc2UKKyAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkKKyAgICAgZ2Ri X2Fzc2VydCAoZnJhbWUpOworQEAgLTQyOSwzMyArNDE5LDQzIEBAIHJlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgIHN3aXRjaCAo U1lNQk9MX0NMQVNTICh2YXIpKQogICAgICB7Ci0gICAgICAgLyogSWYgdGhlIENVIGlzIG5vdCBj dXJyZW50bHkgcmVhZCBpbiwgd2UgcmUtcmVhZCBpdHMgaGVhZGVyLiAgKi8KLS0gICAgICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+cHN5bXRhYi0+b2JqZmlsZTsKLSsgICAgICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IHBlcl9jdS0+b2JqZmlsZTsKLSAgICAgICBzdHJ1Y3Qg ZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJfb2JqZmlsZQotIAk9IG9iamZpbGVfZGF0YSAob2JqZmls ZSwgZHdhcmYyX29iamZpbGVfZGF0YV9rZXkpOwotICAgICAgIGdkYl9ieXRlICppbmZvX3B0ciA9 IHBlcl9vYmpmaWxlLT5pbmZvLmJ1ZmZlciArIHBlcl9jdS0+b2Zmc2V0OwotQEAgLTEyMTEyLDcg KzEzMzQ4LDcgQEAgZHdhcmYyX3Blcl9jdV9vZmZzZXRfc2l6ZSAoc3RydWN0IGR3YXJmMl9wZXJf Y3VfZGF0YSAqcGVyX2N1KQotIENPUkVfQUREUgotIGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQg KHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSB7Ci0tICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSA9IHBlcl9jdS0+cHN5bXRhYi0+b2JqZmlsZTsKLSsgIHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlID0gcGVyX2N1LT5vYmpmaWxlOworICAgICBjYXNlIExPQ19DT05TVDoKKy0gICAg ICAvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCistICAgICAg c3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIGxlbiwKKy0JCQkg ICAgZ2RiYXJjaF9ieXRlX29yZGVyIChnZXRfdHlwZV9hcmNoICh0eXBlKSksCistCQkJICAgIChM T05HRVNUKSBTWU1CT0xfVkFMVUUgKHZhcikpOworLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbm90 X2x2YWw7CistICAgICAgcmV0dXJuIHY7CisrICAgICAgeworKwkvKiBQdXQgdGhlIGNvbnN0YW50 IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCisrCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRl X3ZhbHVlICh0eXBlKTsKKysJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKysJc3RvcmVfc2ln bmVkX2ludGVnZXIgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFRZUEVfTEVOR1RIICh0eXBlKSwK KysJCQkgICAgICBnZGJhcmNoX2J5dGVfb3JkZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKKysJ CQkgICAgICAoTE9OR0VTVCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKKysJcmV0dXJuIHY7CisrICAg ICAgfQogIAotICAgcmV0dXJuIEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNF Q1RfT0ZGX1RFWFQgKG9iamZpbGUpKTsKLSB9Ci1AQCAtMTIzMzQsNiArMTM1NzAsMzAgQEAgZHdh cmYyX2ZyZWVfb2JqZmlsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gICAvKiBDYWNoZWQg RElFIHRyZWVzIHVzZSB4bWFsbG9jIGFuZCB0aGUgY29tcF91bml0X29ic3RhY2suICAqLwotICAg ZnJlZV9jYWNoZWRfY29tcF91bml0cyAoTlVMTCk7CisgICAgIGNhc2UgTE9DX0xBQkVMOgorLSAg ICAgIC8qIFB1dCB0aGUgY29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KKy0gICAg ICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCistCXsKKy0JICBDT1JFX0FERFIgYWRkcgorLQkgICAg PSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAor LQkJCQkJU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKKysgICAgICB7CisrCS8qIFB1dCB0aGUg Y29uc3RhbnQgYmFjayBpbiB0YXJnZXQgZm9ybWF0LiAgKi8KKysJc3RydWN0IHZhbHVlICp2ID0g YWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworKwlp ZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCisrCSAgeworKwkgICAgQ09SRV9BRERSIGFkZHIKKysJICAg ICAgPSBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIp LAorKwkJCQkJICBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwogIAotKyAgaWYgKGR3YXJmMl9w ZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXgpCi0rICAgIHsKLSsgICAgICBpbnQgaTsKLSsKLSsgICAg ICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkK LSsJewotKwkgIGludCBqOwotKwkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdh cmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91bml0c1tpXTsKLSsKLSsJICBpZiAoIWN1LT52LnF1 aWNrLT5saW5lcykKLSsJICAgIGNvbnRpbnVlOwotKwotKwkgIGZvciAoaiA9IDA7IGogPCBjdS0+ di5xdWljay0+bGluZXMtPm51bV9maWxlX25hbWVzOyArK2opCi0rCSAgICB7Ci0rCSAgICAgIGlm IChjdS0+di5xdWljay0+ZmlsZV9uYW1lcykKLSsJCXhmcmVlICgodm9pZCAqKSBjdS0+di5xdWlj ay0+ZmlsZV9uYW1lc1tqXSk7Ci0rCSAgICAgIGlmIChjdS0+di5xdWljay0+ZnVsbF9uYW1lcykK LSsJCXhmcmVlICgodm9pZCAqKSBjdS0+di5xdWljay0+ZnVsbF9uYW1lc1tqXSk7Ci0rCSAgICB9 Ci0rCi0rCSAgZnJlZV9saW5lX2hlYWRlciAoY3UtPnYucXVpY2stPmxpbmVzKTsKLSsJfQotKyAg ICB9Ci0rCi0gICAvKiBFdmVyeXRoaW5nIGVsc2Ugc2hvdWxkIGJlIG9uIHRoZSBvYmpmaWxlIG9i c3RhY2suICAqLwotIH0KKy0JICBzdG9yZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19y YXcgKHYpLCB0eXBlLCBhZGRyKTsKKy0JfQorLSAgICAgIGVsc2UKKy0Jc3RvcmVfdHlwZWRfYWRk cmVzcyAodmFsdWVfY29udGVudHNfcmF3ICh2KSwgdHlwZSwKKy0JCQkgICAgICBTWU1CT0xfVkFM VUVfQUREUkVTUyAodmFyKSk7CistICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKKy0g ICAgICByZXR1cm4gdjsKKysJICAgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRz X3JhdyAodiksIHR5cGUsIGFkZHIpOworKwkgIH0KKysJZWxzZQorKwkgIHN0b3JlX3R5cGVkX2Fk ZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsCisrCQkJCVNZTUJPTF9WQUxVRV9B RERSRVNTICh2YXIpKTsKKysJcmV0dXJuIHY7CisrICAgICAgfQogIAotQEAgLTEyMzY4LDYgKzEz NjI4LDMxIEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9saHMsIGNvbnN0 IHZvaWQgKml0ZW1fcmhzKQotICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBvZnNfcmhzLT5v ZmZzZXQ7Ci0gfQorICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKKy0gICAgICBtZW1jcHkgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwgbGVuKTsKKy0g ICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworLSAgICAgIHJldHVybiB2OworKyAgICAg IHsKKysJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKwlWQUxVRV9M VkFMICh2KSA9IG5vdF9sdmFsOworKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZ TUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKKysJCVRZUEVfTEVOR1RIICh0eXBlKSk7CisrCXJldHVy biB2OworKyAgICAgIH0KICAKLSsvKiBGaWxsIGluIGdlbmVyaWMgYXR0cmlidXRlcyBhcHBsaWNh YmxlIGZvciB0eXBlIERJRXMuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rZmV0Y2hfZGllX3R5cGVf YXR0cnMgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAg IHN0cnVjdCBkd2FyZjJfY3UgKmN1KQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Cisg ICAgIGNhc2UgTE9DX1NUQVRJQzoKKyAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCitAQCAt NDk2LDEyICs0OTYsMjMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNlIExPQ19C TE9DSzoKKy0gICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCistCXNldF92YWx1ZV9hZGRyZXNz ICh2LCBzeW1ib2xfb3ZlcmxheWVkX2FkZHJlc3MKKy0JICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9C TE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSkpOworLSAgICAgIGVs c2UKKy0Jc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tfVkFM VUUgKHZhcikpKTsKKy0gICAgICByZXR1cm4gdjsKKysgICAgICB7CisrICAgICAgICBDT1JFX0FE RFIgYWRkcjsKKysJc3RydWN0IHZhbHVlICp2OwogKwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChk aWUsIERXX0FUX2RhdGFfbG9jYXRpb24sIGN1KTsKLSsgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sg KGF0dHIpKQotKyAgICBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKHR5cGUpID0gZHdh cmYyX2F0dHJfdG9fbG9jZXhwcl9iYXRvbiAoYXR0ciwKLSsJCQkJCQkJCQkgIGN1KTsKLSsgIGdk Yl9hc3NlcnQgKCFUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiAodHlwZSkpOwotKwotKyAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2FsbG9jYXRlZCwgY3UpOwotKyAgaWYgKGF0dHJf Zm9ybV9pc19ibG9jayAoYXR0cikpCi0rICAgIFRZUEVfQUxMT0NBVEVEICh0eXBlKSA9IGR3YXJm Ml9hdHRyX3RvX2xvY2V4cHJfYmF0b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBF X05PVF9BTExPQ0FURUQgKHR5cGUpKTsKLSsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBE V19BVF9hc3NvY2lhdGVkLCBjdSk7Ci0rICBpZiAoYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSkK LSsgICAgVFlQRV9BU1NPQ0lBVEVEICh0eXBlKSA9IGR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsIGN1KTsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEICh0eXBl KSk7Ci0rfQotKwotIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lhdGVkIHdpdGggRElFIHRvIFRZUEUu ICBTYXZlIGl0IGluIENVJ3MgaGFzaAotICAgIHRhYmxlIGlmIG5lY2Vzc2FyeS4gIEZvciBjb252 ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCisrCWlmIChvdmVybGF5X2RlYnVnZ2luZykKKysJICBhZGRy ID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCisrCSAgICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9C TE9DS19WQUxVRSAodmFyKSksIFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7CisrCWVsc2UKKysJ ICBhZGRyID0gQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSk7CisrCS8qIEFE RFIgaXMgc2V0IGhlcmUgZm9yIEFMTE9DQVRFX1ZBTFVFJ3MgQ0hFQ0tfVFlQRURFRiBmb3IKKysJ ICAgRFdfT1BfcHVzaF9vYmplY3RfYWRkcmVzcy4gICovCisrCW9iamVjdF9hZGRyZXNzX3NldCAo YWRkcik7CisrCXYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CisrCVZBTFVFX0xWQUwgKHYpID0g bHZhbF9tZW1vcnk7CisrCXNldF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKKysJcmV0dXJuIHY7 CisrICAgICAgfQogIAotQEAgLTEyMzkxLDYgKzEzNjc2LDggQEAgc2V0X2RpZV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQotIHsKLSAgIHN0cnVjdCBkd2FyZjJfb2Zmc2V0X2FuZF90eXBlICoqc2xvdCwgb2ZzOworICAg ICBjYXNlIExPQ19SRUdJU1RFUjoKKyAgICAgY2FzZSBMT0NfUkVHUEFSTV9BRERSOgorQEAgLTUy MCw3ICs1MzEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCisgCSAgICAgIGVycm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2 YXJpYWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKICAKLSsgIGZldGNoX2RpZV90eXBlX2F0dHJzIChk aWUsIHR5cGUsIGN1KTsKKyAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRyZXNzIChyZWd2YWwpOwor LQkgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKKyAJICB9CisgCWVsc2UKKyAJICB7 CitAQCAtNTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZh ciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQorICAgICAgIGJyZWFrOworIAorICAgICBjYXNl IExPQ19PUFRJTUlaRURfT1VUOgorLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7Cist ICAgICAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHYsIDEpOworLSAgICAgIHJldHVybiB2Owor KyAgICAgIHsKKysgICAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBl KTsKICsKLSAgIC8qIEZvciBBZGEgdHlwZXMsIG1ha2Ugc3VyZSB0aGF0IHRoZSBnbmF0LXNwZWNp ZmljIGRhdGEgaXMgYWx3YXlzCi0gICAgICBpbml0aWFsaXplZCAoaWYgbm90IGFscmVhZHkgc2V0 KS4gIFRoZXJlIGFyZSBhIGZldyB0eXBlcyB3aGVyZQotICAgICAgd2Ugc2hvdWxkIG5vdCBiZSBk b2luZyBzbywgYmVjYXVzZSB0aGUgdHlwZS1zcGVjaWZpYyBhcmVhIGlzCi1AQCAtMTI1OTEsOCAr MTM4NzgsNTY3IEBAIGR3YXJmMl9wZXJfb2JqZmlsZV9mcmVlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwgdm9pZCAqZCkKLSAgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPnR5cGVzKTsK LSAgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLSAgIG11bm1hcF9zZWN0 aW9uX2J1ZmZlciAoJmRhdGEtPmVoX2ZyYW1lKTsKLSsgIG11bm1hcF9zZWN0aW9uX2J1ZmZlciAo JmRhdGEtPmdkYl9pbmRleCk7Ci0rfQorKwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOworKwlz ZXRfdmFsdWVfb3B0aW1pemVkX291dCAodiwgMSk7CisrCXJldHVybiB2OworKyAgICAgIH0KKyAK KyAgICAgZGVmYXVsdDoKKyAgICAgICBlcnJvciAoXygiQ2Fubm90IGxvb2sgdXAgdmFsdWUgb2Yg YSBib3RjaGVkIHN5bWJvbC4iKSk7CisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKy0gIHNldF92 YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKKy0gIHNldF92YWx1ZV9sYXp5ICh2LCAxKTsKKy0gIHJl dHVybiB2OworKyAgeworKyAgICBzdHJ1Y3QgdmFsdWUgKnY7CiArCi0rDAorKyAgICAvKiBBRERS IGlzIHNldCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9yCisrICAg ICAgIERXX09QX1BVU0hfT0JKRUNUX0FERFJFU1MuICAqLworKyAgICBvYmplY3RfYWRkcmVzc19z ZXQgKGFkZHIpOworKyAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOworKyAgICBWQUxVRV9M VkFMICh2KSA9IGx2YWxfbWVtb3J5OworKyAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7 CiArCi0rLyogVGhlIGNvbnRlbnRzIG9mIHRoZSBoYXNoIHRhYmxlIHdlIGNyZWF0ZSB3aGVuIGJ1 aWxkaW5nIHRoZSBzdHJpbmcKLSsgICB0YWJsZS4gICovCi0rc3RydWN0IHN0cnRhYl9lbnRyeQot K3sKLSsgIG9mZnNldF90eXBlIG9mZnNldDsKLSsgIGNvbnN0IGNoYXIgKnN0cjsKLSt9OworKyAg ICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7CiArCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgYSBzdHJ0 YWJfZW50cnkuICAqLwotK3N0YXRpYyBoYXNodmFsX3QKLStoYXNoX3N0cnRhYl9lbnRyeSAoY29u c3Qgdm9pZCAqZSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RydGFiX2VudHJ5ICplbnRyeSA9IGU7 Ci0rICByZXR1cm4gbWFwcGVkX2luZGV4X3N0cmluZ19oYXNoIChlbnRyeS0+c3RyKTsKLSt9Cisr ICAgIHJldHVybiB2OworKyAgfQorIH0KKyAKKyAvKiBJbnN0YWxsIGRlZmF1bHQgYXR0cmlidXRl cyBmb3IgcmVnaXN0ZXIgdmFsdWVzLiAgKi8KK0BAIC02MTEsMTAgKzYzNiwxMSBAQCBzdHJ1Y3Qg dmFsdWUgKgorIHZhbHVlX2Zyb21fcmVnaXN0ZXIgKHN0cnVjdCB0eXBlICp0eXBlLCBpbnQgcmVn bnVtLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgeworICAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAoZnJhbWUpOworLSAgc3RydWN0IHR5cGUgKnR5cGUxID0g Y2hlY2tfdHlwZWRlZiAodHlwZSk7CisgICBzdHJ1Y3QgdmFsdWUgKnY7CisgCistICBpZiAoZ2Ri YXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwgdHlwZTEpKQorKyAgdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwogKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciBh IHN0cnRhYl9lbnRyeS4gICovCi0rc3RhdGljIGludAotK2VxX3N0cnRhYl9lbnRyeSAoY29uc3Qg dm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RydGFiX2VudHJ5 ICplYSA9IGE7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RydGFiX2VudHJ5ICplYiA9IGI7Ci0rICByZXR1 cm4gIXN0cmNtcCAoZWEtPnN0ciwgZWItPnN0cik7Ci0rfQorKyAgaWYgKGdkYmFyY2hfY29udmVy dF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQorICAgICB7CisgICAgICAgLyog VGhlIElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5pbmcgdGhlCisg ICAgICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0IG1pZ2h0IG5l ZWQgdG8KK0BAIC02MjgsNyArNjU0LDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5 cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKKyAgICAgICBW QUxVRV9GUkFNRV9JRCAodikgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKKyAgICAgICBWQUxVRV9S RUdOVU0gKHYpID0gcmVnbnVtOworICAgICAgIGdkYmFyY2hfcmVnaXN0ZXJfdG9fdmFsdWUgKGdk YmFyY2gsCistCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlMSwgdmFsdWVfY29udGVudHNfcmF3ICh2 KSk7CisrCQkJCSBmcmFtZSwgcmVnbnVtLCB0eXBlLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsK KyAgICAgfQorICAgZWxzZQorICAgICB7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9n ZGIvZ2RidHlwZXMuYworaW5kZXggZDk2ZDBmOC4uNGJlYmNkYSAxMDA2NDQKKy0tLSBhL2dkYi9n ZGJ0eXBlcy5jCisrKysgYi9nZGIvZ2RidHlwZXMuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5j bHVkZSAiY3AtYWJpLmgiCisgI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFz aHRhYi5oIgorKyNpbmNsdWRlICJvYnNlcnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgi CisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAorIAorIC8qIEluaXRpYWxpemUgQkFETkVTUyBj b25zdGFudHMuICAqLworQEAgLTE0NSw2ICsxNDgsMTEgQEAgc3RhdGljIHZvaWQgcHJpbnRfYXJn X3R5cGVzIChzdHJ1Y3QgZmllbGQgKiwgaW50LCBpbnQpOworIHN0YXRpYyB2b2lkIGR1bXBfZm5f ZmllbGRsaXN0cyAoc3RydWN0IHR5cGUgKiwgaW50KTsKKyBzdGF0aWMgdm9pZCBwcmludF9jcGx1 c19zdHVmZiAoc3RydWN0IHR5cGUgKiwgaW50KTsKKyAKKysvKiBUaGUgaGFzaCB0YWJsZSBob2xk aW5nIGFsbCBkaXNjYXJkYWJsZSBgc3RydWN0IHR5cGUgKicgcmVmZXJlbmNlcy4gICovCisrc3Rh dGljIGh0YWJfdCB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlOwogKwotKy8qIENyZWF0ZSBhIHN0cnRh Yl9lbnRyeSBoYXNoIHRhYmxlLiAgKi8KLStzdGF0aWMgaHRhYl90Ci0rY3JlYXRlX3N0cnRhYiAo dm9pZCkKLSt7Ci0rICByZXR1cm4gaHRhYl9jcmVhdGVfYWxsb2MgKDEwMCwgaGFzaF9zdHJ0YWJf ZW50cnksIGVxX3N0cnRhYl9lbnRyeSwKLSsJCQkgICAgeGZyZWUsIHhjYWxsb2MsIHhmcmVlKTsK LSt9CisrLyogQ3VycmVudCB0eXBlX2Rpc2NhcmRhYmxlX2NoZWNrIHBhc3MgdXNlZCBmb3IgVFlQ RV9ESVNDQVJEQUJMRV9BR0UuICAqLworK3N0YXRpYyBpbnQgdHlwZV9kaXNjYXJkYWJsZV9hZ2Vf Y3VycmVudDsKKyAKKyAvKiBBbGxvY2F0ZSBhIG5ldyBPQkpGSUxFLWFzc29jaWF0ZWQgdHlwZSBz dHJ1Y3R1cmUgYW5kIGZpbGwgaXQKKyAgICB3aXRoIHNvbWUgZGVmYXVsdHMuICBTcGFjZSBmb3Ig dGhlIHR5cGUgc3RydWN0dXJlIGlzIGFsbG9jYXRlZAorQEAgLTE3NSw2ICsxODMsMzkgQEAgYWxs b2NfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCisgICByZXR1cm4gdHlwZTsKKyB9Cisg CisrLyogRGVjbGFyZSBUWVBFIGFzIGRpc2NhcmRhYmxlIG9uIG5leHQgZ2FyYmFnZSBjb2xsZWN0 aW9uIGJ5IGZyZWVfYWxsX3R5cGVzLgorKyAgIFlvdSBtdXN0IGNhbGwgdHlwZV9tYXJrX3VzZWQg ZHVyaW5nIGVhY2ggZnJlZV9hbGxfdHlwZXMgdG8gcHJvdGVjdCBUWVBFIGZyb20KKysgICBiZWlu ZyBkZWFsbG9jYXRlZC4gICovCiArCi0rLyogQWRkIGEgc3RyaW5nIHRvIHRoZSBjb25zdGFudCBw b29sLiAgUmV0dXJuIHRoZSBzdHJpbmcncyBvZmZzZXQgaW4KLSsgICBob3N0IG9yZGVyLiAgKi8K LStzdGF0aWMgb2Zmc2V0X3R5cGUKLSthZGRfc3RyaW5nIChodGFiX3QgdGFibGUsIHN0cnVjdCBv YnN0YWNrICpjcG9vbCwgY29uc3QgY2hhciAqc3RyKQorK3N0YXRpYyB2b2lkCisrc2V0X3R5cGVf YXNfZGlzY2FyZGFibGUgKHN0cnVjdCB0eXBlICp0eXBlKQogK3sKICsgIHZvaWQgKipzbG90Owot KyAgc3RydWN0IHN0cnRhYl9lbnRyeSBlbnRyeTsKLSsgIHN0cnVjdCBzdHJ0YWJfZW50cnkgKnJl c3VsdDsKICsKLSsgIGVudHJ5LnN0ciA9IHN0cjsKLSsgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAo dGFibGUsICZlbnRyeSwgSU5TRVJUKTsKLSsgIGlmICgqc2xvdCkKLSsgICAgcmVzdWx0ID0gKnNs b3Q7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSBYTkVXIChzdHJ1Y3Qgc3RydGFi X2VudHJ5KTsKLSsgICAgICByZXN1bHQtPm9mZnNldCA9IG9ic3RhY2tfb2JqZWN0X3NpemUgKGNw b29sKTsKLSsgICAgICByZXN1bHQtPnN0ciA9IHN0cjsKLSsgICAgICBvYnN0YWNrX2dyb3dfc3Ry MCAoY3Bvb2wsIHN0cik7Ci0rICAgICAgKnNsb3QgPSByZXN1bHQ7Ci0rICAgIH0KLSsgIHJldHVy biByZXN1bHQtPm9mZnNldDsKLSt9Ci0rCi0rLyogQW4gZW50cnkgaW4gdGhlIHN5bWJvbCB0YWJs ZS4gICovCi0rc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeQotK3sKLSsgIC8qIFRoZSBuYW1lIG9m IHRoZSBzeW1ib2wuICAqLwotKyAgY29uc3QgY2hhciAqbmFtZTsKLSsgIC8qIFRoZSBvZmZzZXQg b2YgdGhlIG5hbWUgaW4gdGhlIGNvbnN0YW50IHBvb2wuICAqLwotKyAgb2Zmc2V0X3R5cGUgaW5k ZXhfb2Zmc2V0OwotKyAgLyogQSBzb3J0ZWQgdmVjdG9yIG9mIHRoZSBpbmRpY2VzIG9mIGFsbCB0 aGUgQ1VzIHRoYXQgaG9sZCBhbiBvYmplY3QKLSsgICAgIG9mIHRoaXMgbmFtZS4gICovCi0rICBW RUMgKG9mZnNldF90eXBlKSAqY3VfaW5kaWNlczsKLSt9OwotKwotKy8qIFRoZSBzeW1ib2wgdGFi bGUuICBUaGlzIGlzIGEgcG93ZXItb2YtMi1zaXplZCBoYXNoIHRhYmxlLiAgKi8KLStzdHJ1Y3Qg bWFwcGVkX3N5bXRhYgotK3sKLSsgIG9mZnNldF90eXBlIG5fZWxlbWVudHM7Ci0rICBvZmZzZXRf dHlwZSBzaXplOwotKyAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKmRhdGE7Ci0rfTsKKysg IGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7CiArCi0rLyogSGFzaCBmdW5j dGlvbiBmb3IgYSBzeW10YWJfaW5kZXhfZW50cnkuICAqLwotK3N0YXRpYyBoYXNodmFsX3QKLSto YXNoX3N5bXRhYl9lbnRyeSAoY29uc3Qgdm9pZCAqZSkKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3lt dGFiX2luZGV4X2VudHJ5ICplbnRyeSA9IGU7Ci0rICByZXR1cm4gaXRlcmF0aXZlX2hhc2ggKFZF Q19hZGRyZXNzIChvZmZzZXRfdHlwZSwgZW50cnktPmN1X2luZGljZXMpLAotKwkJCSBzaXplb2Yg KG9mZnNldF90eXBlKSAqIFZFQ19sZW5ndGggKG9mZnNldF90eXBlLAotKwkJCQkJCQkgICAgZW50 cnktPmN1X2luZGljZXMpLAotKwkJCSAwKTsKLSt9CisrICBUWVBFX0RJU0NBUkRBQkxFICh0eXBl KSA9IDE7CisrICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxl X2FnZV9jdXJyZW50OwogKwotKy8qIEVxdWFsaXR5IGZ1bmN0aW9uIGZvciBhIHN5bXRhYl9pbmRl eF9lbnRyeS4gICovCi0rc3RhdGljIGludAotK2VxX3N5bXRhYl9lbnRyeSAoY29uc3Qgdm9pZCAq YSwgY29uc3Qgdm9pZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5 ICplYSA9IGE7Ci0rICBjb25zdCBzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5ICplYiA9IGI7Ci0r ICBpbnQgbGVuID0gVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGVhLT5jdV9pbmRpY2VzKTsKLSsg IGlmIChsZW4gIT0gVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGViLT5jdV9pbmRpY2VzKSkKLSsg ICAgcmV0dXJuIDA7Ci0rICByZXR1cm4gIW1lbWNtcCAoVkVDX2FkZHJlc3MgKG9mZnNldF90eXBl LCBlYS0+Y3VfaW5kaWNlcyksCi0rCQkgIFZFQ19hZGRyZXNzIChvZmZzZXRfdHlwZSwgZWItPmN1 X2luZGljZXMpLAotKwkJICBzaXplb2YgKG9mZnNldF90eXBlKSAqIGxlbik7CisrICBzbG90ID0g aHRhYl9maW5kX3Nsb3QgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5cGUsIElOU0VSVCk7Cisr ICBnZGJfYXNzZXJ0ICghKnNsb3QpOworKyAgKnNsb3QgPSB0eXBlOwogK30KICsKLSsvKiBEZXN0 cm95IGEgc3ltdGFiX2luZGV4X2VudHJ5LiAgKi8KLStzdGF0aWMgdm9pZAotK2RlbGV0ZV9zeW10 YWJfZW50cnkgKHZvaWQgKnApCi0rewotKyAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqZW50 cnkgPSBwOwotKyAgVkVDX2ZyZWUgKG9mZnNldF90eXBlLCBlbnRyeS0+Y3VfaW5kaWNlcyk7Ci0r ICB4ZnJlZSAoZW50cnkpOwotK30KKysvKiBBbGxvY2F0ZSBhIG5ldyB0eXBlIGxpa2UgYWxsb2Nf dHlwZSBidXQgcHJlc2VydmUgZm9yIGl0IHRoZSBkaXNjYXJkYWJpbGl0eQorKyAgIHN0YXRlIG9m IFBBUkVOVF9UWVBFLiAgKi8KICsKLSsvKiBDcmVhdGUgYSBoYXNoIHRhYmxlIGhvbGRpbmcgc3lt dGFiX2luZGV4X2VudHJ5IG9iamVjdHMuICAqLwotK3N0YXRpYyBodGFiX3QKLStjcmVhdGVfaW5k ZXhfdGFibGUgKHZvaWQpCisrc3RhdGljIHN0cnVjdCB0eXBlICoKKythbGxvY190eXBlX2FzX3Bh cmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBlKQogK3sKLSsgIHJldHVybiBodGFiX2NyZWF0 ZV9hbGxvYyAoMTAwLCBoYXNoX3N5bXRhYl9lbnRyeSwgZXFfc3ltdGFiX2VudHJ5LAotKwkJCSAg ICBkZWxldGVfc3ltdGFiX2VudHJ5LCB4Y2FsbG9jLCB4ZnJlZSk7Ci0rfQorKyAgc3RydWN0IHR5 cGUgKm5ld190eXBlID0gYWxsb2NfdHlwZV9jb3B5IChwYXJlbnRfdHlwZSk7CiArCi0rLyogQ3Jl YXRlIGEgbmV3IG1hcHBlZCBzeW10YWIgb2JqZWN0LiAgKi8KLStzdGF0aWMgc3RydWN0IG1hcHBl ZF9zeW10YWIgKgotK2NyZWF0ZV9tYXBwZWRfc3ltdGFiICh2b2lkKQotK3sKLSsgIHN0cnVjdCBt YXBwZWRfc3ltdGFiICpzeW10YWIgPSBYTkVXIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYik7Ci0rICBz eW10YWItPm5fZWxlbWVudHMgPSAwOwotKyAgc3ltdGFiLT5zaXplID0gMTAyNDsKLSsgIHN5bXRh Yi0+ZGF0YSA9IFhDTkVXVkVDIChzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5ICosIHN5bXRhYi0+ c2l6ZSk7Ci0rICByZXR1cm4gc3ltdGFiOwotK30KKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFIChw YXJlbnRfdHlwZSkpCisrICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7CiAr Ci0rLyogRGVzdHJveSBhIG1hcHBlZF9zeW10YWIuICAqLwotK3N0YXRpYyB2b2lkCi0rY2xlYW51 cF9tYXBwZWRfc3ltdGFiICh2b2lkICpwKQotK3sKLSsgIHN0cnVjdCBtYXBwZWRfc3ltdGFiICpz eW10YWIgPSBwOwotKyAgLyogVGhlIGNvbnRlbnRzIG9mIHRoZSBhcnJheSBhcmUgZnJlZWQgd2hl biB0aGUgb3RoZXIgaGFzaCB0YWJsZSBpcwotKyAgICAgZGVzdHJveWVkLiAgKi8KLSsgIHhmcmVl IChzeW10YWItPmRhdGEpOwotKyAgeGZyZWUgKHN5bXRhYik7CisrICByZXR1cm4gbmV3X3R5cGU7 CiArfQogKwotKy8qIEZpbmQgYSBzbG90IGluIFNZTVRBQiBmb3IgdGhlIHN5bWJvbCBOQU1FLiAg UmV0dXJucyBhIHBvaW50ZXIgdG8KLSsgICB0aGUgc2xvdC4gICovCi0rc3RhdGljIHN0cnVjdCBz eW10YWJfaW5kZXhfZW50cnkgKioKLStmaW5kX3Nsb3QgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpz eW10YWIsIGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgb2Zmc2V0X3R5cGUgaW5kZXgsIHN0ZXAs IGhhc2ggPSBtYXBwZWRfaW5kZXhfc3RyaW5nX2hhc2ggKG5hbWUpOwotKwotKyAgaW5kZXggPSBo YXNoICYgKHN5bXRhYi0+c2l6ZSAtIDEpOwotKyAgc3RlcCA9ICgoaGFzaCAqIDE3KSAmIChzeW10 YWItPnNpemUgLSAxKSkgfCAxOwotKwotKyAgZm9yICg7OykKLSsgICAgewotKyAgICAgIGlmICgh c3ltdGFiLT5kYXRhW2luZGV4XSB8fCAhc3RyY21wIChuYW1lLCBzeW10YWItPmRhdGFbaW5kZXhd LT5uYW1lKSkKLSsJcmV0dXJuICZzeW10YWItPmRhdGFbaW5kZXhdOwotKyAgICAgIGluZGV4ID0g KGluZGV4ICsgc3RlcCkgJiAoc3ltdGFiLT5zaXplIC0gMSk7Ci0rICAgIH0KLSB9CisgLyogQWxs b2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0 CisgICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBp cyBhbGxvY2F0ZWQKKyAgICBvbiB0aGUgaGVhcC4gICovCitAQCAtMzAwLDcgKzM0MSw3IEBAIG1h a2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IHR5cGUgKip0eXBlcHRy KQogIAotKy8qIEV4cGFuZCBTWU1UQUIncyBoYXNoIHRhYmxlLiAgKi8KLStzdGF0aWMgdm9pZAot K2hhc2hfZXhwYW5kIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiKQotK3sKLSsgIG9mZnNl dF90eXBlIG9sZF9zaXplID0gc3ltdGFiLT5zaXplOwotKyAgb2Zmc2V0X3R5cGUgaTsKLSsgIHN0 cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKipvbGRfZW50cmllcyA9IHN5bXRhYi0+ZGF0YTsKLSsK LSsgIHN5bXRhYi0+c2l6ZSAqPSAyOwotKyAgc3ltdGFiLT5kYXRhID0gWENORVdWRUMgKHN0cnVj dCBzeW10YWJfaW5kZXhfZW50cnkgKiwgc3ltdGFiLT5zaXplKTsKLSsKLSsgIGZvciAoaSA9IDA7 IGkgPCBvbGRfc2l6ZTsgKytpKQorICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9PSAw KQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCisgICAgIHsKKy0gICAgICBudHlw ZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7CisrICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2Fz X3BhcmVudCAodHlwZSk7CisgICAgICAgaWYgKHR5cGVwdHIpCisgCSp0eXBlcHRyID0gbnR5cGU7 CisgICAgIH0KK0BAIC0zNzcsNyArNDE4LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAoc3RydWN0 IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlmICh0eXBlcHRyID09 IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAqLwor ICAgICB7CistICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOworKyAgICAgIG50 eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlmICh0eXBlcHRyKQor IAkqdHlwZXB0ciA9IG50eXBlOworICAgICB9CitAQCAtNzQ4LDYgKzc4OSw3IEBAIGNyZWF0ZV9y YW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90 eXBlLAorICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdl X2JvdW5kcykpOworICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsK KyAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKKysgIFRZUEVf QllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7CisgCisgICBpZiAobG93X2JvdW5kID49IDAp CisgICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7CitAQCAtODkxLDI2ICs5MzMs NDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKKyAKKyAg IFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOworICAgVFlQRV9UQVJH RVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOworLSAgaWYgKGdldF9kaXNjcmV0 ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCistICAg IGxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOworLSAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVudF90 eXBlKTsKKy0gIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBB ZGEgYXJyYXlzIGNhbiBiZQorLSAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQg YmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCistICAgICBJbiBzdWNoIGNhc2VzLCB0 aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KKy0gIGlmIChoaWdoX2JvdW5kIDwg bG93X2JvdW5kKQorLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKKy0gIGVsc2UK Ky0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CistICAgICAgVFlQRV9MRU5HVEggKGVs ZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOworICAgVFlQRV9ORklF TERTIChyZXN1bHRfdHlwZSkgPSAxOworICAgVFlQRV9GSUVMRFMgKHJlc3VsdF90eXBlKSA9Cisg ICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2YgKHN0 cnVjdCBmaWVsZCkpOworICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRfdHlwZSkgPSByYW5nZV90 eXBlOworICAgVFlQRV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9IC0xOworIAorLSAgLyog VFlQRV9GTEFHX1RBUkdFVF9TVFVCIHdpbGwgdGFrZSBjYXJlIG9mIHplcm8gbGVuZ3RoIGFycmF5 cyAqLworKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVudGltZSBpbmZvcm1hdGlv biBsaWtlCisrICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5vdCBiZWluZyBhdmFpbGFi bGUgZHVyaW5nIHRoZQorKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCisrICBpZiAo VFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgIT0gUkFOR0VfQk9VTkRfS0lO RF9DT05TVEFOVAorKyAgICAgIHx8IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhpZ2gu a2luZCAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UCisrICAgICAgfHwgVFlQRV9MT1dfQk9V TkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKKysgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRfVU5E RUZJTkVEIChyYW5nZV90eXBlKSAKKysgICAgICB8fCBnZXRfZGlzY3JldGVfYm91bmRzIChyYW5n ZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQogKyAgICB7Ci0rICAgICAgaWYg KG9sZF9lbnRyaWVzW2ldKQotKwl7Ci0rCSAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqKnNs b3QgPSBmaW5kX3Nsb3QgKHN5bXRhYiwKLSsJCQkJCQkJb2xkX2VudHJpZXNbaV0tPm5hbWUpOwot KwkgICpzbG90ID0gb2xkX2VudHJpZXNbaV07Ci0rCX0KKysgICAgICBsb3dfYm91bmQgPSAwOwor KyAgICAgIGhpZ2hfYm91bmQgPSAtMTsKICsgICAgfQogKwotKyAgeGZyZWUgKG9sZF9lbnRyaWVz KTsKLSt9Ci0rCi0rLyogQWRkIGFuIGVudHJ5IHRvIFNZTVRBQi4gIE5BTUUgaXMgdGhlIG5hbWUg b2YgdGhlIHN5bWJvbC4gIENVX0lOREVYCi0rICAgaXMgdGhlIGluZGV4IG9mIHRoZSBDVSBpbiB3 aGljaCB0aGUgc3ltYm9sIGFwcGVhcnMuICAqLwotK3N0YXRpYyB2b2lkCi0rYWRkX2luZGV4X2Vu dHJ5IChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiLCBjb25zdCBjaGFyICpuYW1lLAotKwkJ IG9mZnNldF90eXBlIGN1X2luZGV4KQotK3sKLSsgIHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkg KipzbG90OwotKwotKyAgKytzeW10YWItPm5fZWxlbWVudHM7Ci0rICBpZiAoNCAqIHN5bXRhYi0+ bl9lbGVtZW50cyAvIDMgPj0gc3ltdGFiLT5zaXplKQotKyAgICBoYXNoX2V4cGFuZCAoc3ltdGFi KTsKLSsKLSsgIHNsb3QgPSBmaW5kX3Nsb3QgKHN5bXRhYiwgbmFtZSk7Ci0rICBpZiAoISpzbG90 KQotKyAgICB7Ci0rICAgICAgKnNsb3QgPSBYTkVXIChzdHJ1Y3Qgc3ltdGFiX2luZGV4X2VudHJ5 KTsKLSsgICAgICAoKnNsb3QpLT5uYW1lID0gbmFtZTsKLSsgICAgICAoKnNsb3QpLT5jdV9pbmRp Y2VzID0gTlVMTDsKLSsgICAgfQotKyAgLyogRG9uJ3QgcHVzaCBhbiBpbmRleCB0d2ljZS4gIER1 ZSB0byBob3cgd2UgYWRkIGVudHJpZXMgd2Ugb25seQotKyAgICAgaGF2ZSB0byBjaGVjayB0aGUg bGFzdCBvbmUuICAqLyAKLSsgIGlmIChWRUNfZW1wdHkgKG9mZnNldF90eXBlLCAoKnNsb3QpLT5j dV9pbmRpY2VzKQotKyAgICAgIHx8IFZFQ19sZW5ndGggKG9mZnNldF90eXBlLCAoKnNsb3QpLT5j dV9pbmRpY2VzKSAhPSBjdV9pbmRleCkKLSsgICAgVkVDX3NhZmVfcHVzaCAob2Zmc2V0X3R5cGUs ICgqc2xvdCktPmN1X2luZGljZXMsIGN1X2luZGV4KTsKLSt9Ci0rCi0rLyogQWRkIGEgdmVjdG9y IG9mIGluZGljZXMgdG8gdGhlIGNvbnN0YW50IHBvb2wuICAqLwotK3N0YXRpYyBvZmZzZXRfdHlw ZQotK2FkZF9pbmRpY2VzX3RvX2Nwb29sIChodGFiX3QgaW5kZXhfdGFibGUsIHN0cnVjdCBvYnN0 YWNrICpjcG9vbCwKLSsJCSAgICAgIHN0cnVjdCBzeW10YWJfaW5kZXhfZW50cnkgKmVudHJ5KQot K3sKLSsgIHZvaWQgKipzbG90OwotKwotKyAgc2xvdCA9IGh0YWJfZmluZF9zbG90IChpbmRleF90 YWJsZSwgZW50cnksIElOU0VSVCk7Ci0rICBpZiAoISpzbG90KQotKyAgICB7Ci0rICAgICAgb2Zm c2V0X3R5cGUgbGVuID0gVkVDX2xlbmd0aCAob2Zmc2V0X3R5cGUsIGVudHJ5LT5jdV9pbmRpY2Vz KTsKLSsgICAgICBvZmZzZXRfdHlwZSB2YWwgPSBNQVlCRV9TV0FQIChsZW4pOwotKyAgICAgIG9m ZnNldF90eXBlIGl0ZXI7Ci0rICAgICAgaW50IGk7Ci0rCi0rICAgICAgKnNsb3QgPSBlbnRyeTsK LSsgICAgICBlbnRyeS0+aW5kZXhfb2Zmc2V0ID0gb2JzdGFja19vYmplY3Rfc2l6ZSAoY3Bvb2wp OwotKwotKyAgICAgIG9ic3RhY2tfZ3JvdyAoY3Bvb2wsICZ2YWwsIHNpemVvZiAodmFsKSk7Ci0r ICAgICAgZm9yIChpID0gMDsKLSsJICAgVkVDX2l0ZXJhdGUgKG9mZnNldF90eXBlLCBlbnRyeS0+ Y3VfaW5kaWNlcywgaSwgaXRlcik7Ci0rCSAgICsraSkKLSsJewotKwkgIHZhbCA9IE1BWUJFX1NX QVAgKGl0ZXIpOwotKwkgIG9ic3RhY2tfZ3JvdyAoY3Bvb2wsICZ2YWwsIHNpemVvZiAodmFsKSk7 Ci0rCX0KLSsgICAgfQorKyAgLyogQmUgY2FyZWZ1bCB3aGVuIHNldHRpbmcgdGhlIGFycmF5IGxl bmd0aC4gIEFkYSBhcnJheXMgY2FuIGJlCisrICAgICBlbXB0eSBhcnJheXMgd2l0aCB0aGUgaGln aF9ib3VuZCBiZWluZyBzbWFsbGVyIHRoYW4gdGhlIGxvd19ib3VuZC4KKysgICAgIEluIHN1Y2gg Y2FzZXMsIHRoZSBhcnJheSBsZW5ndGggc2hvdWxkIGJlIHplcm8uICBUWVBFX1RBUkdFVF9TVFVC IG5lZWRzIHRvCisrICAgICBiZSBjaGVja2VkIGFzIGl0IG1heSBoYXZlIGRlcGVuZGVuY2llcyBv biBEV0FSRiBibG9ja3MgZGVwZW5kaW5nIG9uCisrICAgICBydW50aW1lIGluZm9ybWF0aW9uIG5v dCBhdmFpbGFibGUgZHVyaW5nIHRoZSBDUkVBVEVfQVJSQVlfVFlQRSB0aW1lLiAgKi8KKysgIGlm IChoaWdoX2JvdW5kIDwgbG93X2JvdW5kIHx8IFRZUEVfVEFSR0VUX1NUVUIgKGVsZW1lbnRfdHlw ZSkpCisrICAgIFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPSAwOwogKyAgZWxzZQogKyAgICB7 Ci0rICAgICAgc3RydWN0IHN5bXRhYl9pbmRleF9lbnRyeSAqb2xkX2VudHJ5ID0gKnNsb3Q7Ci0r ICAgICAgZW50cnktPmluZGV4X29mZnNldCA9IG9sZF9lbnRyeS0+aW5kZXhfb2Zmc2V0OwotKyAg ICAgIGVudHJ5ID0gb2xkX2VudHJ5OwotKyAgICB9Ci0rICByZXR1cm4gZW50cnktPmluZGV4X29m ZnNldDsKLSt9Ci0rCi0rLyogV3JpdGUgdGhlIG1hcHBlZCBoYXNoIHRhYmxlIFNZTVRBQiB0byB0 aGUgb2JzdGFjayBPVVRQVVQsIHdpdGgKLSsgICBjb25zdGFudCBwb29sIGVudHJpZXMgZ29pbmcg aW50byB0aGUgb2JzdGFjayBDUE9PTC4gICovCi0rc3RhdGljIHZvaWQKLSt3cml0ZV9oYXNoX3Rh YmxlIChzdHJ1Y3QgbWFwcGVkX3N5bXRhYiAqc3ltdGFiLAotKwkJICBzdHJ1Y3Qgb2JzdGFjayAq b3V0cHV0LCBzdHJ1Y3Qgb2JzdGFjayAqY3Bvb2wpCi0rewotKyAgb2Zmc2V0X3R5cGUgaTsKLSsg IGh0YWJfdCBpbmRleF90YWJsZTsKLSsgIGh0YWJfdCBzdHJfdGFibGU7Ci0rCi0rICBpbmRleF90 YWJsZSA9IGNyZWF0ZV9pbmRleF90YWJsZSAoKTsKLSsgIHN0cl90YWJsZSA9IGNyZWF0ZV9zdHJ0 YWIgKCk7Ci0rICAvKiBXZSBhZGQgYWxsIHRoZSBpbmRleCB2ZWN0b3JzIHRvIHRoZSBjb25zdGFu dCBwb29sIGZpcnN0LCB0bwotKyAgICAgZW5zdXJlIGFsaWdubWVudCBpcyBvay4gICovCi0rICBm b3IgKGkgPSAwOyBpIDwgc3ltdGFiLT5zaXplOyArK2kpCi0rICAgIHsKLSsgICAgICBpZiAoc3lt dGFiLT5kYXRhW2ldKQotKwlhZGRfaW5kaWNlc190b19jcG9vbCAoaW5kZXhfdGFibGUsIGNwb29s LCBzeW10YWItPmRhdGFbaV0pOworKyAgICAgIENIRUNLX1RZUEVERUYgKGVsZW1lbnRfdHlwZSk7 CisrICAgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9CisrCVRZUEVfTEVOR1RIIChlbGVt ZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKICsgICAgfQogKwotKyAg LyogTm93IHdyaXRlIG91dCB0aGUgaGFzaCB0YWJsZS4gICovCi0rICBmb3IgKGkgPSAwOyBpIDwg c3ltdGFiLT5zaXplOyArK2kpCisgICBpZiAoVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9PSAw KQorLSAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlwZSkgPSAxOwogKyAgICB7Ci0rICAg ICAgb2Zmc2V0X3R5cGUgc3RyX29mZiwgdmVjX29mZjsKLSsKLSsgICAgICBpZiAoc3ltdGFiLT5k YXRhW2ldKQotKwl7Ci0rCSAgc3RyX29mZiA9IGFkZF9zdHJpbmcgKHN0cl90YWJsZSwgY3Bvb2ws IHN5bXRhYi0+ZGF0YVtpXS0+bmFtZSk7Ci0rCSAgdmVjX29mZiA9IHN5bXRhYi0+ZGF0YVtpXS0+ aW5kZXhfb2Zmc2V0OwotKwl9Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyogV2hpbGUgMCBpcyBh IHZhbGlkIGNvbnN0YW50IHBvb2wgaW5kZXgsIGl0IGlzIG5vdCB2YWxpZAotKwkgICAgIHRvIGhh dmUgMCBmb3IgYm90aCBvZmZzZXRzLiAgKi8KLSsJICBzdHJfb2ZmID0gMDsKLSsJICB2ZWNfb2Zm ID0gMDsKLSsJfQotKwotKyAgICAgIHN0cl9vZmYgPSBNQVlCRV9TV0FQIChzdHJfb2ZmKTsKLSsg ICAgICB2ZWNfb2ZmID0gTUFZQkVfU1dBUCAodmVjX29mZik7Ci0rCi0rICAgICAgb2JzdGFja19n cm93IChvdXRwdXQsICZzdHJfb2ZmLCBzaXplb2YgKHN0cl9vZmYpKTsKLSsgICAgICBvYnN0YWNr X2dyb3cgKG91dHB1dCwgJnZlY19vZmYsIHNpemVvZiAodmVjX29mZikpOworKyAgICAgIC8qIFRo ZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMgaW5zdGFuY2VzIGJ5Cisr CSBDSEVDS19UWVBFREVGLiAgKi8KKysgICAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRfdHlw ZSkgPSAxOwogKyAgICB9CisgCisgICByZXR1cm4gcmVzdWx0X3R5cGU7CisgfQorQEAgLTE0MTMs NiArMTQ3NCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxhaW50ICh2b2lkKQorICAgY29tcGxhaW50 ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5cGUgaGFzIE5VTEwgbmFtZSIpKTsKKyB9 CisgCisrLyogQ2FsY3VsYXRlIHRoZSBtZW1vcnkgbGVuZ3RoIG9mIGFycmF5IFRZUEUuCiArCi0r ICBodGFiX2RlbGV0ZSAoc3RyX3RhYmxlKTsKLSsgIGh0YWJfZGVsZXRlIChpbmRleF90YWJsZSk7 Ci0rfQorKyAgIFRBUkdFVF9UWVBFIHNob3VsZCBiZSBzZXQgdG8gYGNoZWNrX3R5cGVkZWYgKFRZ UEVfVEFSR0VUX1RZUEUgKHR5cGUpKScgYXMKKysgICBhIHBlcmZvcm1hbmNlIGhpbnQuICBGZWVs IGZyZWUgdG8gcGFzcyBOVUxMLiAgU2V0IEZVTExfU1BBTiB0byByZXR1cm4gdGhlCisrICAgc2l6 ZSBpbmNsLiB0aGUgcG9zc2libGUgcGFkZGluZyBvZiB0aGUgbGFzdCBlbGVtZW50IC0gaXQgbWF5 IGRpZmZlciBmcm9tIHRoZQorKyAgIGNsZWFyZWQgRlVMTF9TUEFOIHJldHVybiB2YWx1ZSAodGhl IGV4cGVjdGVkIFNJWkVPRikgZm9yIG5vbi16ZXJvCisrICAgVFlQRV9CWVRFX1NUUklERSB2YWx1 ZXMuICAqLwogKwotKy8qIFdyaXRlIGFuIGFkZHJlc3MgZW50cnkgdG8gQUREUl9PQlNUQUNLLiAg VGhlIGFkZHJlc3NlcyBhcmUgdGFrZW4KLSsgICBmcm9tIFBTVDsgQ1VfSU5ERVggaXMgdGhlIGlu ZGV4IG9mIHRoZSBDVSBpbiB0aGUgdmVjdG9yIG9mIGFsbAotKyAgIENVcy4gICovCi0rc3RhdGlj IHZvaWQKLSthZGRfYWRkcmVzc19lbnRyeSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkg ICBzdHJ1Y3Qgb2JzdGFjayAqYWRkcl9vYnN0YWNrLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBz dCwKLSsJCSAgIHVuc2lnbmVkIGludCBjdV9pbmRleCkKKytzdGF0aWMgTE9OR0VTVAorK3R5cGVf bGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSwg aW50IGZ1bGxfc3BhbikKICt7Ci0rICBvZmZzZXRfdHlwZSBvZmZzZXQ7Ci0rICBjaGFyIGFkZHJb OF07Ci0rICBDT1JFX0FERFIgYmFzZWFkZHI7CisrICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsK KysgIExPTkdFU1QgYnl0ZV9zdHJpZGUgPSAwOwkvKiBgPSAwJyBmb3IgYSBmYWxzZSBHQ0Mgd2Fy bmluZy4gICovCisrICBMT05HRVNUIGNvdW50LCBlbGVtZW50X3NpemUsIHJldHZhbDsKICsKLSsg IGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZf VEVYVCAob2JqZmlsZSkpOworKyAgaWYgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX0FS UkFZCisrICAgICAgJiYgVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSSU5HKQorKyAg ICByZXR1cm4gVFlQRV9MRU5HVEggKHR5cGUpOwogKwotKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdl ciAoYWRkciwgOCwgQkZEX0VORElBTl9MSVRUTEUsIHBzdC0+dGV4dGxvdyAtIGJhc2VhZGRyKTsK LSsgIG9ic3RhY2tfZ3JvdyAoYWRkcl9vYnN0YWNrLCBhZGRyLCA4KTsKLSsgIHN0b3JlX3Vuc2ln bmVkX2ludGVnZXIgKGFkZHIsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBwc3QtPnRleHRoaWdoIC0g YmFzZWFkZHIpOwotKyAgb2JzdGFja19ncm93IChhZGRyX29ic3RhY2ssIGFkZHIsIDgpOwotKyAg b2Zmc2V0ID0gTUFZQkVfU1dBUCAoY3VfaW5kZXgpOwotKyAgb2JzdGFja19ncm93IChhZGRyX29i c3RhY2ssICZvZmZzZXQsIHNpemVvZiAob2Zmc2V0X3R5cGUpKTsKLSt9CisrICAvKiBBdm9pZCBl eGVjdXRpbmcgVFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29j aWF0ZWQpCisrICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5l dmVyIGJlIHVzZWQgc28gdGhleSBjYW4gYmUKKysgICAgIHplcm8tbGVuZ3RoLiAgKi8KKysgIGlm IChvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCisrICAgIHJldHVybiAwOwog KwotKy8qIEFkZCBhIGxpc3Qgb2YgcGFydGlhbCBzeW1ib2xzIHRvIFNZTVRBQi4gICovCi0rc3Rh dGljIHZvaWQKLSt3cml0ZV9wc3ltYm9scyAoc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYiwK LSsJCXN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAqKnBzeW1wLAotKwkJaW50IGNvdW50LAotKwkJb2Zm c2V0X3R5cGUgY3VfaW5kZXgpCi0rewotKyAgZm9yICg7IGNvdW50LS0gPiAwOyArK3BzeW1wKQor KyAgcmFuZ2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7CisrICBpZiAoVFlQRV9MT1df Qk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKQorKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9V TkRFRklORUQgKHJhbmdlX3R5cGUpKQorKyAgICByZXR1cm4gMDsKKysgIGNvdW50ID0gVFlQRV9I SUdIX0JPVU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7 CisrICAvKiBJdCBtYXkgaGFwcGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5p bmcgZ2FyYmFnZSBkYXRhLiAgKi8KKysgIGlmIChjb3VudCA8IDApCisrICAgIHdhcm5pbmcgKF8o IlJhbmdlIGZvciB0eXBlICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKKysJICAgICBU WVBFX05BTUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwK KysJICAgICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOworKyAgLyog VGhlIGNvZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLworKyAg aWYgKGNvdW50IDw9IDApCisrICAgIHJldHVybiAwOworKyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3Vu dCA+IDEpCiArICAgIHsKLSsgICAgICBpZiAoU1lNQk9MX0xBTkdVQUdFICgqcHN5bXApID09IGxh bmd1YWdlX2FkYSkKLSsJZXJyb3IgKF8oIkFkYSBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZCBi eSB0aGUgaW5kZXgiKSk7Ci0rICAgICAgYWRkX2luZGV4X2VudHJ5IChzeW10YWIsIFNZTUJPTF9O QVRVUkFMX05BTUUgKCpwc3ltcCksIGN1X2luZGV4KTsKKysgICAgICAvKiBXZSBkbyBub3QgdXNl IFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHR5cGUpIGhlcmUgYXMgd2Ugd2FudCB0bwor KyAgICAgICAgIGZvcmNlIEZVTExfU1BBTiB0byAxLiAgKi8KKysgICAgICBieXRlX3N0cmlkZSA9 IFRZUEVfQllURV9TVFJJREUgKHJhbmdlX3R5cGUpOworKyAgICAgIGlmIChieXRlX3N0cmlkZSA9 PSAwKQorKyAgICAgICAgeworKwkgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQorKwkgICAgdGFy Z2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrCSAg Ynl0ZV9zdHJpZGUgPSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKKysJ fQogKyAgICB9Ci0rfQogKwotKy8qIFdyaXRlIHRoZSBjb250ZW50cyBvZiBhbiAoInVuZmluaXNo ZWQiKSBvYnN0YWNrIHRvIEZJTEUuICBUaHJvdyBhbgotKyAgIGV4Y2VwdGlvbiBpZiB0aGVyZSBp cyBhbiBlcnJvci4gICovCi0rc3RhdGljIHZvaWQKLSt3cml0ZV9vYnN0YWNrIChGSUxFICpmaWxl LCBzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKLSt7Ci0rICBpZiAoZndyaXRlIChvYnN0YWNrX2Jh c2UgKG9ic3RhY2spLCAxLCBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNrKSwKLSsJICAgICAg ZmlsZSkKLSsgICAgICAhPSBvYnN0YWNrX29iamVjdF9zaXplIChvYnN0YWNrKSkKLSsgICAgZXJy b3IgKF8oImNvdWxkbid0IGRhdGEgd3JpdGUgdG8gZmlsZSIpKTsKLSt9CisrICAvKiBGb3Igbm93 LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMCBpZiBpdHMg bGVuZ3RoCisrICAgICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcyB0 aGF0IGZvciB4IDwgMCwKKysgICAgIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01BWCAr IDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCisrICAgICBieSBDLCBidXQg aXMgdXN1YWxseSB0cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJlIHVuc2ln bmVkCisrICAgICB3aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZhY3Qg dGhhdCBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcworKyAgICAgYWx3YXlzIHJlcHJlc2VudGFibGUg aW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQrMQorKyAgICAgb3Zl cmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlm IHdlIGRlY2lkZSB0bworKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZUEVf TEVOR1RIIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULgorKyAgICAgKi8KICsKLSsvKiBV bmxpbmsgYSBmaWxlIGlmIHRoZSBhcmd1bWVudCBpcyBub3QgTlVMTC4gICovCi0rc3RhdGljIHZv aWQKLSt1bmxpbmtfaWZfc2V0ICh2b2lkICpwKQotK3sKLSsgIGNoYXIgKipmaWxlbmFtZSA9IHA7 Ci0rICBpZiAoKmZpbGVuYW1lKQotKyAgICB1bmxpbmsgKCpmaWxlbmFtZSk7CisrICBpZiAoZnVs bF9zcGFuKQorKyAgICB7CisrICAgICAgcmV0dmFsID0gY291bnQgKiBieXRlX3N0cmlkZTsKKysg ICAgICBpZiAoY291bnQgPT0gMCB8fCByZXR2YWwgLyBjb3VudCAhPSBieXRlX3N0cmlkZSB8fCBy ZXR2YWwgPiBVSU5UX01BWCkKKysJcmV0dmFsID0gMDsKKysgICAgICByZXR1cm4gcmV0dmFsOwor KyAgICB9CisrICBpZiAodGFyZ2V0X3R5cGUgPT0gTlVMTCkKKysgICAgdGFyZ2V0X3R5cGUgPSBj aGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7CisrICBlbGVtZW50X3NpemUg PSB0eXBlX2xlbmd0aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKKysgIHJldHZhbCA9IChj b3VudCAtIDEpICogYnl0ZV9zdHJpZGUgKyBlbGVtZW50X3NpemU7CisrICBpZiAocmV0dmFsIDwg ZWxlbWVudF9zaXplCisrICAgICAgfHwgKGJ5dGVfc3RyaWRlICE9IDAKKysgICAgICAgICAgJiYg KHJldHZhbCAtIGVsZW1lbnRfc2l6ZSkgLyBieXRlX3N0cmlkZSAhPSBjb3VudCAtIDEpCisrICAg ICAgfHwgcmV0dmFsID4gVUlOVF9NQVgpCisrICAgIHJldHZhbCA9IDA7CisrICByZXR1cm4gcmV0 dmFsOwogK30KICsKLSsvKiBDcmVhdGUgYW4gaW5kZXggZmlsZSBmb3IgT0JKRklMRSBpbiB0aGUg ZGlyZWN0b3J5IERJUi4gICovCi0rc3RhdGljIHZvaWQKLSt3cml0ZV9wc3ltdGFic190b19pbmRl eCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKmRpcikKKysvKiBQcmVwYXJl IFRZUEUgYWZ0ZXIgYmVpbmcgcmVhZCBpbiBieSB0aGUgYmFja2VuZC4gIEN1cnJlbnRseSB0aGlz IGZ1bmN0aW9uCisrICAgb25seSBwcm9wYWdhdGVzIHRoZSBUWVBFX0RZTkFNSUMgZmxhZy4gICov CisrCisrdm9pZAorK2ZpbmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKQogK3sKLSsgIHN0 cnVjdCBjbGVhbnVwICpjbGVhbnVwOwotKyAgY2hhciAqZmlsZW5hbWUsICpjbGVhbnVwX2ZpbGVu YW1lOwotKyAgc3RydWN0IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29uc3RhbnRf cG9vbCwgc3ltdGFiX29ic3RhY2ssIGN1X2xpc3Q7CiArICBpbnQgaTsKLSsgIEZJTEUgKm91dF9m aWxlOwotKyAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKLSsgIG9mZnNldF90eXBlIHZh bCwgc2l6ZV9vZl9jb250ZW50cywgdG90YWxfbGVuOwotKyAgc3RydWN0IHN0YXQgc3Q7Ci0rICBj aGFyIGJ1Zls4XTsKLSsKLSsgIGlmICghb2JqZmlsZS0+cHN5bXRhYnMpCi0rICAgIHJldHVybjsK LSsgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnVzaW5nX2luZGV4KQotKyAgICBlcnJvciAoXygi Q2Fubm90IHVzZSBhbiBpbmRleCB0byBjcmVhdGUgdGhlIGluZGV4IikpOwogKwotKyAgaWYgKHN0 YXQgKG9iamZpbGUtPm5hbWUsICZzdCkgPCAwKQotKyAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJD b3VsZCBub3Qgc3RhdCIpKTsKLSsKLSsgIGZpbGVuYW1lID0gY29uY2F0IChkaXIsIFNMQVNIX1NU UklORywgbGJhc2VuYW1lIChvYmpmaWxlLT5uYW1lKSwKLSsJCSAgICAgSU5ERVhfU1VGRklYLCAo Y2hhciAqKSBOVUxMKTsKLSsgIGNsZWFudXAgPSBtYWtlX2NsZWFudXAgKHhmcmVlLCBmaWxlbmFt ZSk7Ci0rCi0rICBvdXRfZmlsZSA9IGZvcGVuIChmaWxlbmFtZSwgIndiIik7Ci0rICBpZiAoIW91 dF9maWxlKQotKyAgICBlcnJvciAoXygiQ2FuJ3Qgb3BlbiBgJXMnIGZvciB3cml0aW5nIiksIGZp bGVuYW1lKTsKLSsKLSsgIGNsZWFudXBfZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSsgIG1ha2VfY2xl YW51cCAodW5saW5rX2lmX3NldCwgJmNsZWFudXBfZmlsZW5hbWUpOwotKwotKyAgc3ltdGFiID0g Y3JlYXRlX21hcHBlZF9zeW10YWIgKCk7Ci0rICBtYWtlX2NsZWFudXAgKGNsZWFudXBfbWFwcGVk X3N5bXRhYiwgc3ltdGFiKTsKLSsKLSsgIG9ic3RhY2tfaW5pdCAoJmFkZHJfb2JzdGFjayk7Ci0r ICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmYWRkcl9vYnN0YWNrKTsKKysgIGZvciAoaSA9 IDA7IGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpOyArK2kpCisrICAgIGlmIChUWVBFX0ZJRUxEX1RZ UEUgKHR5cGUsIGkpICYmIFRZUEVfRFlOQU1JQyAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkp CisrICAgICAgYnJlYWs7CiArCi0rICBvYnN0YWNrX2luaXQgKCZjdV9saXN0KTsKLSsgIG1ha2Vf Y2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZjdV9saXN0KTsKKysgIC8qIEZJWE1FOiBjcGx1c19zdHVm ZiBpcyBpZ25vcmVkIGhlcmUuICAqLworKyAgaWYgKGkgPCBUWVBFX05GSUVMRFMgKHR5cGUpCisr ICAgICAgfHwgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBF X1ZQVFJfQkFTRVRZUEUgKHR5cGUpKSkKKysgICAgICB8fCAoVFlQRV9UQVJHRVRfVFlQRSAodHlw ZSkgJiYgVFlQRV9EWU5BTUlDIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkpKQorKyAgICBUWVBF X0RZTkFNSUMgKHR5cGUpID0gMTsKKyt9CiArCi0rICBmb3IgKGkgPSAwOyBpIDwgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKKyAvKiBGaW5kIHRoZSByZWFsIHR5cGUgb2Yg VFlQRS4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVhbCB0eXBlLAorICAgIGFmdGVyIHJl bW92aW5nIGFsbCBsYXllcnMgb2YgdHlwZWRlZnMsIGFuZCBjb21wbGV0aW5nIG9wYXF1ZSBvciBz dHViCisgICAgdHlwZXMuICBDb21wbGV0aW9uIGNoYW5nZXMgdGhlIFRZUEUgYXJndW1lbnQsIGJ1 dCBzdHJpcHBpbmcgb2YKK0BAIC0xNTc1LDUyICsxNzM1LDM2IEBAIGNoZWNrX3R5cGVkZWYgKHN0 cnVjdCB0eXBlICp0eXBlKQorICAgICAgICAgfQorICAgICB9CisgCistICBpZiAoVFlQRV9UQVJH RVRfU1RVQiAodHlwZSkpCisrICAvKiBjb3B5X3R5cGVfcmVjdXJzaXZlIGF1dG9tYXRpY2FsbHkg bWFrZXMgdGhlIHJlc3VsdGluZyB0eXBlIGNvbnRhaW5pbmcgb25seQorKyAgICAgY29uc3RhbnQg dmFsdWVzIGV4cGVjdGVkIGJ5IHRoZSBjYWxsZXJzIG9mIHRoaXMgZnVuY3Rpb24uICAqLworKyAg aWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07Ci0r ICAgICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3ltdGFiID0gY3UtPnYucHN5bXRhYjsKLSsg ICAgICBnZGJfYnl0ZSB2YWxbOF07Ci0rCi0rICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwK LSsJCSAgICAgIG9iamZpbGUtPmdsb2JhbF9wc3ltYm9scy5saXN0ICsgcHN5bXRhYi0+Z2xvYmFs c19vZmZzZXQsCi0rCQkgICAgICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBpKTsKLSsgICAgICB3 cml0ZV9wc3ltYm9scyAoc3ltdGFiLAotKwkJICAgICAgb2JqZmlsZS0+c3RhdGljX3BzeW1ib2xz Lmxpc3QgKyBwc3ltdGFiLT5zdGF0aWNzX29mZnNldCwKLSsJCSAgICAgIHBzeW10YWItPm5fc3Rh dGljX3N5bXMsIGkpOwotKwotKyAgICAgIGFkZF9hZGRyZXNzX2VudHJ5IChvYmpmaWxlLCAmYWRk cl9vYnN0YWNrLCBwc3ltdGFiLCBpKTsKLSsKLSsgICAgICBzdG9yZV91bnNpZ25lZF9pbnRlZ2Vy ICh2YWwsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBjdS0+b2Zmc2V0KTsKLSsgICAgICBvYnN0YWNr X2dyb3cgKCZjdV9saXN0LCB2YWwsIDgpOwotKyAgICAgIHN0b3JlX3Vuc2lnbmVkX2ludGVnZXIg KHZhbCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGN1LT5sZW5ndGgpOwotKyAgICAgIG9ic3RhY2tf Z3JvdyAoJmN1X2xpc3QsIHZhbCwgOCk7Ci0rICAgIH0KLSsKLSsgIG9ic3RhY2tfaW5pdCAoJmNv bnN0YW50X3Bvb2wpOwotKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tfZnJlZSAoJmNvbnN0YW50X3Bv b2wpOwotKyAgb2JzdGFja19pbml0ICgmc3ltdGFiX29ic3RhY2spOwotKyAgbWFrZV9jbGVhbnVw X29ic3RhY2tfZnJlZSAoJnN5bXRhYl9vYnN0YWNrKTsKLSsgIHdyaXRlX2hhc2hfdGFibGUgKHN5 bXRhYiwgJnN5bXRhYl9vYnN0YWNrLCAmY29uc3RhbnRfcG9vbCk7Ci0rCi0rICBvYnN0YWNrX2lu aXQgKCZjb250ZW50cyk7Ci0rICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgmY29udGVudHMp OwotKyAgc2l6ZV9vZl9jb250ZW50cyA9IDUgKiBzaXplb2YgKG9mZnNldF90eXBlKTsKLSsgIHRv dGFsX2xlbiA9IHNpemVfb2ZfY29udGVudHM7Ci0rCi0rICAvKiBUaGUgdmVyc2lvbiBudW1iZXIu ICAqLwotKyAgdmFsID0gTUFZQkVfU1dBUCAoMSk7Ci0rICBvYnN0YWNrX2dyb3cgKCZjb250ZW50 cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKLSsKLSsgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIENVIGxp c3QgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUuICAqLwotKyAgdmFsID0gTUFZQkVfU1dBUCAo dG90YWxfbGVuKTsKLSsgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZh bCkpOwotKyAgdG90YWxfbGVuICs9IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZjdV9saXN0KTsKLSsK LSsgIC8qIFRoZSBvZmZzZXQgb2YgdGhlIGFkZHJlc3MgdGFibGUgZnJvbSB0aGUgc3RhcnQgb2Yg dGhlIGZpbGUuICAqLwotKyAgdmFsID0gTUFZQkVfU1dBUCAodG90YWxfbGVuKTsKLSsgIG9ic3Rh Y2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOwotKyAgdG90YWxfbGVuICs9 IG9ic3RhY2tfb2JqZWN0X3NpemUgKCZhZGRyX29ic3RhY2spOwotKwotKyAgLyogVGhlIG9mZnNl dCBvZiB0aGUgc3ltYm9sIHRhYmxlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLiAgKi8KLSsg IHZhbCA9IE1BWUJFX1NXQVAgKHRvdGFsX2xlbik7Ci0rICBvYnN0YWNrX2dyb3cgKCZjb250ZW50 cywgJnZhbCwgc2l6ZW9mICh2YWwpKTsKLSsgIHRvdGFsX2xlbiArPSBvYnN0YWNrX29iamVjdF9z aXplICgmc3ltdGFiX29ic3RhY2spOwotKwotKyAgLyogVGhlIG9mZnNldCBvZiB0aGUgY29uc3Rh bnQgcG9vbCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi0rICB2YWwgPSBNQVlCRV9T V0FQICh0b3RhbF9sZW4pOwotKyAgb2JzdGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNpemVv ZiAodmFsKSk7Ci0rICB0b3RhbF9sZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJmNvbnN0YW50 X3Bvb2wpOwotKwotKyAgZ2RiX2Fzc2VydCAob2JzdGFja19vYmplY3Rfc2l6ZSAoJmNvbnRlbnRz KSA9PSBzaXplX29mX2NvbnRlbnRzKTsKLSsKLSsgIHdyaXRlX29ic3RhY2sgKG91dF9maWxlLCAm Y29udGVudHMpOwotKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZjdV9saXN0KTsKLSsgIHdy aXRlX29ic3RhY2sgKG91dF9maWxlLCAmYWRkcl9vYnN0YWNrKTsKLSsgIHdyaXRlX29ic3RhY2sg KG91dF9maWxlLCAmc3ltdGFiX29ic3RhY2spOwotKyAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUs ICZjb25zdGFudF9wb29sKTsKLSsKLSsgIGZjbG9zZSAob3V0X2ZpbGUpOwotKwotKyAgLyogV2Ug d2FudCB0byBrZWVwIHRoZSBmaWxlLCBzbyB3ZSBzZXQgY2xlYW51cF9maWxlbmFtZSB0byBOVUxM Ci0rICAgICBoZXJlLiAgU2VlIHVubGlua19pZl9zZXQuICAqLwotKyAgY2xlYW51cF9maWxlbmFt ZSA9IE5VTEw7Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8qIFRoZSBt YXBwZWQgaW5kZXggZmlsZSBmb3JtYXQgaXMgZGVzaWduZWQgdG8gYmUgZGlyZWN0bHkgbW1hcCgp YWJsZQotKyAgIG9uIGFueSBhcmNoaXRlY3R1cmUuICBJbiBtb3N0IGNhc2VzLCBhIGRhdHVtIGlz IHJlcHJlc2VudGVkIHVzaW5nIGEKLSsgICBsaXR0bGUtZW5kaWFuIDMyLWJpdCBpbnRlZ2VyIHZh bHVlLCBjYWxsZWQgYW4gb2Zmc2V0X3R5cGUuICBCaWcKLSsgICBlbmRpYW4gbWFjaGluZXMgbXVz dCBieXRlLXN3YXAgdGhlIHZhbHVlcyBiZWZvcmUgdXNpbmcgdGhlbS4KLSsgICBFeGNlcHRpb25z IHRvIHRoaXMgcnVsZSBhcmUgbm90ZWQuICBUaGUgZGF0YSBpcyBsYWlkIG91dCBzdWNoIHRoYXQK LSsgICBhbGlnbm1lbnQgaXMgYWx3YXlzIHJlc3BlY3RlZC4KLSsKLSsgICBBIG1hcHBlZCBpbmRl eCBjb25zaXN0cyBvZiBzZXZlcmFsIHNlY3Rpb25zLgotKwotKyAgIDEuIFRoZSBmaWxlIGhlYWRl ci4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMsIG9mIG9mZnNldF90eXBlCi0rICAgdW5s ZXNzIG90aGVyd2lzZSBub3RlZDoKLSsgICBbMF0gVGhlIHZlcnNpb24gbnVtYmVyLiAgQ3VycmVu dGx5IDEuCi0rICAgWzFdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBv ZiB0aGUgQ1UgbGlzdC4KLSsgICBbMl0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IGZpbGUsIG9mIHRoZSBhZGRyZXNzIHNlY3Rpb24uCi0rICAgWzNdIFRoZSBvZmZzZXQsIGZyb20g dGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgc3ltYm9sIHRhYmxlLgotKyAgIFs0XSBUaGUg b2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhlIGNvbnN0YW50IHBvb2wu Ci0rCi0rICAgMi4gVGhlIENVIGxpc3QuICBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgcGFpcnMgb2Yg NjQtYml0Ci0rICAgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBUaGUgZmlyc3QgZWxlbWVudCBpbiBl YWNoIHBhaXIgaXMgdGhlIG9mZnNldAotKyAgIG9mIGEgQ1UgaW4gdGhlIC5kZWJ1Z19pbmZvIHNl Y3Rpb24uICBUaGUgc2Vjb25kIGVsZW1lbnQgaW4gZWFjaAotKyAgIHBhaXIgaXMgdGhlIGxlbmd0 aCBvZiB0aGF0IENVLiAgUmVmZXJlbmNlcyB0byBhIENVIGVsc2V3aGVyZSBpbiB0aGUKLSsgICBt YXAgYXJlIGRvbmUgdXNpbmcgYSBDVSBpbmRleCwgd2hpY2ggaXMganVzdCB0aGUgMC1iYXNlZCBp bmRleCBpbnRvCi0rICAgdGhpcyB0YWJsZS4KLSsKLSsgICAzLiBUaGUgYWRkcmVzcyBzZWN0aW9u LiAgVGhlIGFkZHJlc3Mgc2VjdGlvbiBjb25zaXN0cyBvZiBhIHNlcXVlbmNlCi0rICAgb2YgYWRk cmVzcyBlbnRyaWVzLiAgRWFjaCBhZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBlbGVtZW50cy4KLSsg ICBbMF0gVGhlIGxvdyBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUtZW5kaWFuIHZh bHVlLgotKyAgIFsxXSBUaGUgaGlnaCBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUt ZW5kaWFuIHZhbHVlLgotKyAgIFsyXSBUaGUgQ1UgaW5kZXguICBUaGlzIGlzIGFuIG9mZnNldF90 eXBlIHZhbHVlLgotKwotKyAgIDQuIFRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlzIGEgaGFzaCB0 YWJsZS4gIFRoZSBzaXplIG9mIHRoZSBoYXNoCi0rICAgdGFibGUgaXMgYWx3YXlzIGEgcG93ZXIg b2YgMi4gIFRoZSBpbml0aWFsIGhhc2ggYW5kIHRoZSBzdGVwIGFyZQotKyAgIGN1cnJlbnRseSBk ZWZpbmVkIGJ5IHRoZSBgZmluZF9zbG90JyBmdW5jdGlvbi4KLSsKLSsgICBFYWNoIHNsb3QgaW4g dGhlIGhhc2ggdGFibGUgY29uc2lzdHMgb2YgYSBwYWlyIG9mIG9mZnNldF90eXBlCi0rICAgdmFs dWVzLiAgVGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBvZmZzZXQgb2YgdGhlIHN5bWJvbCdzIG5hbWUg aW4gdGhlCi0rICAgY29uc3RhbnQgcG9vbC4gIFRoZSBzZWNvbmQgdmFsdWUgaXMgdGhlIG9mZnNl dCBvZiB0aGUgQ1UgdmVjdG9yIGluCi0rICAgdGhlIGNvbnN0YW50IHBvb2wuCi0rCi0rICAgSWYg Ym90aCB2YWx1ZXMgYXJlIDAsIHRoZW4gdGhpcyBzbG90IGluIHRoZSBoYXNoIHRhYmxlIGlzIGVt cHR5LgotKyAgIFRoaXMgaXMgb2sgYmVjYXVzZSB3aGlsZSAwIGlzIGEgdmFsaWQgY29uc3RhbnQg cG9vbCBpbmRleCwgaXQKLSsgICBjYW5ub3QgYmUgYSB2YWxpZCBpbmRleCBmb3IgYm90aCBhIHN0 cmluZyBhbmQgYSBDVSB2ZWN0b3IuCi0rCi0rICAgQSBzdHJpbmcgaW4gdGhlIGNvbnN0YW50IHBv b2wgaXMgc3RvcmVkIGFzIGEgXDAtdGVybWluYXRlZCBzdHJpbmcsCi0rICAgYXMgeW91J2QgZXhw ZWN0LgotKwotKyAgIEEgQ1UgdmVjdG9yIGluIHRoZSBjb25zdGFudCBwb29sIGlzIGEgc2VxdWVu Y2Ugb2Ygb2Zmc2V0X3R5cGUKLSsgICB2YWx1ZXMuICBUaGUgZmlyc3QgdmFsdWUgaXMgdGhlIG51 bWJlciBvZiBDVSBpbmRpY2VzIGluIHRoZSB2ZWN0b3IuCi0rICAgRWFjaCBzdWJzZXF1ZW50IHZh bHVlIGlzIHRoZSBpbmRleCBvZiBhIENVIGluIHRoZSBDVSBsaXN0LiAgVGhpcwotKyAgIGVsZW1l bnQgaW4gdGhlIGhhc2ggdGFibGUgaXMgdXNlZCB0byBpbmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5l IHRoZQotKyAgIHN5bWJvbC4KLSsKLSsgICA1LiBUaGUgY29uc3RhbnQgcG9vbC4gIFRoaXMgaXMg c2ltcGx5IGEgYnVuY2ggb2YgYnl0ZXMuICBJdCBpcwotKyAgIG9yZ2FuaXplZCBzbyB0aGF0IGFs aWdubWVudCBpcyBjb3JyZWN0OiBDVSB2ZWN0b3JzIGFyZSBzdG9yZWQKLSsgICBmaXJzdCwgZm9s bG93ZWQgYnkgc3RyaW5ncy4gICovCi0rc3RhdGljIHZvaWQKLStzYXZlX2dkYl9pbmRleF9jb21t YW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZTsKLSsKLSsgIGlmICghYXJnIHx8ICEqYXJnKQotKyAgICBlcnJvciAoXygidXNhZ2U6IHNh dmUgZ2RiLWluZGV4IERJUkVDVE9SWSIpKTsKLSsKLSsgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkK LSsgIHsKLSsgICAgc3RydWN0IHN0YXQgc3Q7Ci0rCi0rICAgIC8qIElmIHRoZSBvYmpmaWxlIGRv ZXMgbm90IGNvcnJlc3BvbmQgdG8gYW4gYWN0dWFsIGZpbGUsIHNraXAgaXQuICAqLwotKyAgICBp ZiAoc3RhdCAob2JqZmlsZS0+bmFtZSwgJnN0KSA8IDApCi0rICAgICAgY29udGludWU7Ci0rCi0r ICAgIGR3YXJmMl9wZXJfb2JqZmlsZSA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZHdhcmYyX29i amZpbGVfZGF0YV9rZXkpOwotKyAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlKQotKyAgICAgIHsK LSsJdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OworKyAgICAgIGh0YWJfdCBj b3BpZWRfdHlwZXM7CisrICAgICAgc3RydWN0IHR5cGUgKnR5cGVfb2xkID0gdHlwZTsKICsKLSsJ VFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0VSUk9SKQotKwkgIHsKLSsJICAgIHdyaXRl X3BzeW10YWJzX3RvX2luZGV4IChvYmpmaWxlLCBhcmcpOwotKwkgIH0KLSsJaWYgKGV4Y2VwdC5y ZWFzb24gPCAwKQotKwkgIGV4Y2VwdGlvbl9mcHJpbnRmIChnZGJfc3RkZXJyLCBleGNlcHQsCi0r CQkJICAgICBfKCJFcnJvciB3aGlsZSB3cml0aW5nIGluZGV4IGZvciBgJXMnOiAiKSwKLSsJCQkg ICAgIG9iamZpbGUtPm5hbWUpOwotKyAgICAgIH0KLSsgIH0KLSt9CisrICAgICAgY29waWVkX3R5 cGVzID0gY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChOVUxMKTsKKysgICAgICB0eXBlID0gY29w eV90eXBlX3JlY3Vyc2l2ZSAodHlwZSwgY29waWVkX3R5cGVzKTsKKysgICAgICBodGFiX2RlbGV0 ZSAoY29waWVkX3R5cGVzKTsKICsKLSsMCisrICAgICAgZ2RiX2Fzc2VydCAoVFlQRV9EWU5BTUlD ICh0eXBlKSA9PSAwKTsKKysgICAgfQogKwotIGludCBkd2FyZjJfYWx3YXlzX2Rpc2Fzc2VtYmxl OworKyAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpIHx8IFRZUEVfRFlOQU1JQyAodHlwZSkp CisgICAgIHsKKy0gICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKKyAgICAgICBzdHJ1Y3Qg dHlwZSAqdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBl KSk7CiAgCi0gc3RhdGljIHZvaWQKLUBAIC0xMjYwOSw2ICsxNDQ1NSw4IEBAIHZvaWQgX2luaXRp YWxpemVfZHdhcmYyX3JlYWQgKHZvaWQpOwotIHZvaWQKLSBfaW5pdGlhbGl6ZV9kd2FyZjJfcmVh ZCAodm9pZCkKLSB7Ci0rICBzdHJ1Y3QgY21kX2xpc3RfZWxlbWVudCAqYzsKLSsKLSAgIGR3YXJm Ml9vYmpmaWxlX2RhdGFfa2V5Ci0gICAgID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhX3dpdGhfY2xl YW51cCAoTlVMTCwgZHdhcmYyX3Blcl9vYmpmaWxlX2ZyZWUpOworKyAgICAgIGlmIChUWVBFX0RZ TkFNSUMgKHR5cGUpKQorKwlUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSA9IHRhcmdldF90eXBlOwor ICAgICAgIGlmIChUWVBFX1NUVUIgKHRhcmdldF90eXBlKSB8fCBUWVBFX1RBUkdFVF9TVFVCICh0 YXJnZXRfdHlwZSkpCisgCXsKKyAJICAvKiBFbXB0eS4gICovCisgCX0KKyAgICAgICBlbHNlIGlm IChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJBWQorLQkgICAgICAgJiYgVFlQRV9O RklFTERTICh0eXBlKSA9PSAxCistCSAgICAgICAmJiAoVFlQRV9DT0RFIChyYW5nZV90eXBlID0g VFlQRV9JTkRFWF9UWVBFICh0eXBlKSkKKy0JCSAgID09IFRZUEVfQ09ERV9SQU5HRSkpCisrCSAg ICAgICB8fCBUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9TVFJJTkcpCisgCXsKKyAJICAv KiBOb3cgcmVjb21wdXRlIHRoZSBsZW5ndGggb2YgdGhlIGFycmF5IHR5cGUsIGJhc2VkIG9uIGl0 cworLQkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3Ro LgorLQkgICAgIFdhdGNoIG91dCBmb3IgQWRhIG51bGwgQWRhIGFycmF5cyB3aGVyZSB0aGUgaGln aCBib3VuZAorLQkgICAgIGlzIHNtYWxsZXIgdGhhbiB0aGUgbG93IGJvdW5kLiAqLworLQkgIGNv bnN0IExPTkdFU1QgbG93X2JvdW5kID0gVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpOworLQkg IGNvbnN0IExPTkdFU1QgaGlnaF9ib3VuZCA9IFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSk7 CistCSAgVUxPTkdFU1QgbGVuOworLQorLQkgIGlmIChoaWdoX2JvdW5kIDwgbG93X2JvdW5kKQor LQkgICAgbGVuID0gMDsKKy0JICBlbHNlCistCSAgICB7CistCSAgICAgIC8qIEZvciBub3csIHdl IGNvbnNlcnZhdGl2ZWx5IHRha2UgdGhlIGFycmF5IGxlbmd0aCB0byBiZSAwCistCQkgaWYgaXRz IGxlbmd0aCBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1lcworLQkJIHRo YXQgZm9yIHggPCAwLCAoVUxPTkdFU1QpIHggPT0gLXggKyBVTE9OR0VTVF9NQVggKyAxLAorLQkJ IHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkIGJ5IEMsIGJ1dCBpcyB1c3VhbGx5 IHRydWUKKy0JCSAoYmVjYXVzZSBpdCB3b3VsZCBiZSB0cnVlIGlmIHggd2VyZSB1bnNpZ25lZCB3 aXRoIGl0cworLQkJIGhpZ2gtb3JkZXIgYml0IG9uKS4gSXQgdXNlcyB0aGUgZmFjdCB0aGF0Cist CQkgaGlnaF9ib3VuZC1sb3dfYm91bmQgaXMgYWx3YXlzIHJlcHJlc2VudGFibGUgaW4KKy0JCSBV TE9OR0VTVCBhbmQgdGhhdCBpZiBoaWdoX2JvdW5kLWxvd19ib3VuZCsxIG92ZXJmbG93cywKKy0J CSBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3RzIGlmIHdlIAor LQkJIGRlY2lkZSB0byBpbmNyZWFzZSB0aGUgcmVwcmVzZW50YXRpb24gb2YgVFlQRV9MRU5HVEgK Ky0JCSBmcm9tIHVuc2lnbmVkIGludCB0byBVTE9OR0VTVC4gKi8KKy0JICAgICAgVUxPTkdFU1Qg dWxvdyA9IGxvd19ib3VuZCwgdWhpZ2ggPSBoaWdoX2JvdW5kOworLQkgICAgICBVTE9OR0VTVCB0 bGVuID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKKy0KKy0JICAgICAgbGVuID0gdGxlbiAq ICh1aGlnaCAtIHVsb3cgKyAxKTsKKy0JICAgICAgaWYgKHRsZW4gPT0gMCB8fCAobGVuIC8gdGxl biAtIDEgKyB1bG93KSAhPSB1aGlnaCAKKy0JCSAgfHwgbGVuID4gVUlOVF9NQVgpCistCQlsZW4g PSAwOworLQkgICAgfQorLQkgIFRZUEVfTEVOR1RIICh0eXBlKSA9IGxlbjsKKysJICAgICBudW1i ZXIgb2YgZWxlbWVudHMgYW5kIHRoZSB0YXJnZXQgdHlwZSdzIGxlbmd0aC4gICovCisrCSAgVFlQ RV9MRU5HVEggKHR5cGUpID0gdHlwZV9sZW5ndGhfZ2V0ICh0eXBlLCB0YXJnZXRfdHlwZSwgMCk7 CisgCSAgVFlQRV9UQVJHRVRfU1RVQiAodHlwZSkgPSAwOworIAl9CisgICAgICAgZWxzZSBpZiAo VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfUkFOR0UpCitAQCAtMTYyOCw2ICsxNzcyLDcg QEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCisgCSAgVFlQRV9MRU5HVEggKHR5 cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKKyAJICBUWVBFX1RBUkdFVF9TVFVCICh0 eXBlKSA9IDA7CisgCX0KKysgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUpID0gMDsKKyAgICAgfQog IAotQEAgLTEyNjU2LDQgKzE0NTA0LDkgQEAgVGhlIHZhbHVlIGlzIHRoZSBtYXhpbXVtIGRlcHRo IHRvIHByaW50LiIpLAotIAkJCSAgICBOVUxMLAotIAkJCSAgICBOVUxMLAotIAkJCSAgICAmc2V0 ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7Ci0rCi0rICBjID0gYWRkX2NtZCAoImdkYi1pbmRl eCIsIGNsYXNzX2ZpbGVzLCBzYXZlX2dkYl9pbmRleF9jb21tYW5kLAotKwkgICAgICAgXygiU2F2 ZSBhIC5nZGItaW5kZXggZmlsZSIpLAotKwkgICAgICAgJnNhdmVfY21kbGlzdCk7Ci0rICBzZXRf Y21kX2NvbXBsZXRlciAoYywgZmlsZW5hbWVfY29tcGxldGVyKTsKLSB9Ci1kaWZmIC0tZ2l0IGEv Z2RiL2VsZnJlYWQuYyBiL2dkYi9lbGZyZWFkLmMKLWluZGV4IDhjMDA5MzguLmEyNTBjNTggMTAw NjQ0Ci0tLS0gYS9nZGIvZWxmcmVhZC5jCi0rKysgYi9nZGIvZWxmcmVhZC5jCi1AQCAtMzcsOSAr MzcsMTMgQEAKLSAjaW5jbHVkZSAiY29tcGxhaW50cy5oIgotICNpbmNsdWRlICJkZW1hbmdsZS5o IgotICNpbmNsdWRlICJwc3ltcHJpdi5oIgotKyNpbmNsdWRlICJnZGJ0eXBlcy5oIgorICAgdHlw ZSA9IG1ha2VfcXVhbGlmaWVkX3R5cGUgKHR5cGUsIGluc3RhbmNlX2ZsYWdzLCBOVUxMKTsKK0BA IC0xOTAyLDYgKzIwNDcsOCBAQCBpbml0X3R5cGUgKGVudW0gdHlwZV9jb2RlIGNvZGUsIGludCBs ZW5ndGgsIGludCBmbGFncywKKyAgICAgVFlQRV9TVFVCX1NVUFBPUlRFRCAodHlwZSkgPSAxOwor ICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RBTkNFKQorICAgICBUWVBFX0ZJWEVE X0lOU1RBTkNFICh0eXBlKSA9IDE7CisrICBpZiAoZmxhZ3MgJiBUWVBFX0ZMQUdfR05VX0lGVU5D KQorKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAxOwogIAotIGV4dGVybiB2b2lkIF9pbml0 aWFsaXplX2VsZnJlYWQgKHZvaWQpOworICAgaWYgKG5hbWUpCisgICAgIFRZUEVfTkFNRSAodHlw ZSkgPSBvYnNhdmVzdHJpbmcgKG5hbWUsIHN0cmxlbiAobmFtZSksCitAQCAtMzE5NCwzMyArMzM0 MSw0MiBAQCB0eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICpp dGVtX3JocykKKyB9CiAgCi0rLyogRm9yd2FyZCBkZWNsYXJhdGlvbi4gICovCi0rc3RhdGljIHN0 cnVjdCBzeW1fZm5zIGVsZl9zeW1fZm5zX2dkYl9pbmRleDsKLSsKLSAvKiBUaGUgc3RydWN0IGVs ZmluZm8gaXMgYXZhaWxhYmxlIG9ubHkgZHVyaW5nIEVMRiBzeW1ib2wgdGFibGUgYW5kCi0gICAg cHN5bXRhYiByZWFkaW5nLiAgSXQgaXMgZGVzdHJveWVkIGF0IHRoZSBjb21wbGV0aW9uIG9mIHBz eW10YWItcmVhZGluZy4KLSAgICBJdCdzIGxvY2FsIHRvIGVsZl9zeW1maWxlX3JlYWQuICAqLwot QEAgLTE4MCw3ICsxODQsOCBAQCByZWNvcmRfbWluaW1hbF9zeW1ib2wgKGNvbnN0IGNoYXIgKm5h bWUsIGludCBuYW1lX2xlbiwgaW50IGNvcHlfbmFtZSwKKyAvKiBBbGxvY2F0ZSB0aGUgaGFzaCB0 YWJsZSB1c2VkIGJ5IGNvcHlfdHlwZV9yZWN1cnNpdmUgdG8gd2FsaworLSAgIHR5cGVzIHdpdGhv dXQgZHVwbGljYXRlcy4gIFdlIHVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZQorLSAgIE9C SkZJTEUgaXMgYWJvdXQgdG8gYmUgZGVsZXRlZC4gICovCisrICAgdHlwZXMgd2l0aG91dCBkdXBs aWNhdGVzLiAgICovCisgCisgaHRhYl90CisgY3JlYXRlX2NvcGllZF90eXBlc19oYXNoIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdl dF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOworLSAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4 ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorLQkJCSAgICAgICBOVUxMLCAmb2Jq ZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAorLQkJCSAgICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2Nh dGUsCistCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0ZSk7CisrICBpZiAob2JqZmls ZSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgLyogTlVMTCBPQkpGSUxFIGlzIGZvciBUWVBFX0RZ TkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQgaW4KKysJIE9CSkZJTEVfTUFMTE9DIG1lbW9y eSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJU1RPUllfQ0hBSU4uICBUYWJsZQorKwkgZWxl bWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICov CisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWly X2VxLCB4ZnJlZSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIC8qIFVzZSBPQkpG SUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICBU YWJsZQorKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAtIHNvIHVz ZSB4ZnJlZS4gICovCisrICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBl X3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAorKwkJCQkgICB4ZnJlZSwgJm9iamZpbGUtPm9iamZp bGVfb2JzdGFjaywKKysJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2FsbG9jYXRlLAorKwkJCQkgICBk dW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOworKyAgICB9CisgfQogIAotLSAgaWYgKG1zX3R5cGUg PT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0KQotKyAgaWYgKG1zX3R5cGUg PT0gbXN0X3RleHQgfHwgbXNfdHlwZSA9PSBtc3RfZmlsZV90ZXh0Ci0rICAgICAgfHwgbXNfdHlw ZSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMpCi0gICAgIGFkZHJlc3MgPSBnZGJhcmNoX3NtYXNoX3Rl eHRfYWRkcmVzcyAoZ2RiYXJjaCwgYWRkcmVzcyk7CistLyogUmVjdXJzaXZlbHkgY29weSAoZGVl cCBjb3B5KSBUWVBFLCBpZiBpdCBpcyBhc3NvY2lhdGVkIHdpdGgKKy0gICBPQkpGSUxFLiAgUmV0 dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5nIG1hbGxvYywgYSBzYXZlZCB0eXBlIGlmCist ICAgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQRSAodXNpbmcgQ09QSUVEX1RZUEVTKSwgb3Ig VFlQRSBpZiBpdCBpcworLSAgIG5vdCBhc3NvY2lhdGVkIHdpdGggT0JKRklMRS4gICovCisrLyog QSBoZWxwZXIgZm9yIGNvcHlfdHlwZV9yZWN1cnNpdmUuICBUaGlzIGRvZXMgYWxsIHRoZSB3b3Jr LiAgT0JKRklMRSBpcyB1c2VkCisrICAgb25seSBmb3IgYW4gYXNzZXJ0aW9uIGNoZWNraW5nLiAg Ki8KICAKLSAgIHJldHVybiBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbF9mdWxsIChuYW1lLCBu YW1lX2xlbiwgY29weV9uYW1lLCBhZGRyZXNzLAotQEAgLTM4OCw3ICszOTMsMTAgQEAgZWxmX3N5 bXRhYl9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgaW50IHR5cGUsCi0gCSAgICB7Ci0g CSAgICAgIGlmIChzeW0tPmZsYWdzICYgKEJTRl9HTE9CQUwgfCBCU0ZfV0VBSykpCi0gCQl7Ci0t CQkgIG1zX3R5cGUgPSBtc3RfdGV4dDsKLSsJCSAgaWYgKHN5bS0+ZmxhZ3MgJiBCU0ZfR05VX0lO RElSRUNUX0ZVTkNUSU9OKQotKwkJICAgIG1zX3R5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0r CQkgIGVsc2UKLSsJCSAgICBtc190eXBlID0gbXN0X3RleHQ7Ci0gCQl9Ci0gCSAgICAgIGVsc2Ug aWYgKChzeW0tPm5hbWVbMF0gPT0gJy4nICYmIHN5bS0+bmFtZVsxXSA9PSAnTCcpCi0gCQkgICAg ICAgfHwgKChzeW0tPmZsYWdzICYgQlNGX0xPQ0FMKQotQEAgLTU2OSw2ICs1NzcsMjUwIEBAIGVs Zl9zeW10YWJfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGludCB0eXBlLAotICAgICB9 Ci0gfQorLXN0cnVjdCB0eXBlICoKKy1jb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwgCistCQkgICAgIHN0cnVjdCB0eXBlICp0eXBlLAorLQkJICAgICBodGFiX3Qg Y29waWVkX3R5cGVzKQorK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrY29weV90eXBlX3JlY3Vyc2l2 ZV8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgCisrCQkgICAgICAgc3RydWN0IHR5cGUgKnR5 cGUsCisrCQkgICAgICAgaHRhYl90IGNvcGllZF90eXBlcykKKyB7CisgICBzdHJ1Y3QgdHlwZV9w YWlyICpzdG9yZWQsIHBhaXI7CisgICB2b2lkICoqc2xvdDsKKyAgIHN0cnVjdCB0eXBlICpuZXdf dHlwZTsKICAKLSsvKiBGSVhNRTogRGVsYXkgaXQgdGhyb3VnaCBlbGZfc3ltX2Zucy4gICovCi0r Ci0rc3RhdGljIHZvaWQKLStlbGZfcmVsX3BsdF9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgYXN5bWJvbCAqKmR5bl9zeW1ib2xfdGFibGUpCi0rewotKyAgYmZkICpvYmZkID0gb2JqZmls ZS0+b2JmZDsKLSsgIGNvbnN0IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxm X2JhY2tlbmRfZGF0YSAob2JmZCk7Ci0rICBhc2VjdGlvbiAqcGx0LCAqcmVscGx0LCAqZ290X3Bs dDsKLSsgIHVuc2lnbmVkIHU7Ci0rICBpbnQgcGx0X2VsZl9pZHg7Ci0rICBiZmRfc2l6ZV90eXBl IHJlbG9jX2NvdW50LCByZWxvYzsKLSsgIGNoYXIgKnN0cmluZ19idWZmZXIgPSBOVUxMOwotKyAg c2l6ZV90IHN0cmluZ19idWZmZXJfc2l6ZSA9IDA7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqYmFja190 bzsKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+Z2RiYXJjaDsKLSsgIHN0 cnVjdCB0eXBlICpwdHJfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZGF0 YV9wdHI7Ci0rICBzaXplX3QgcHRyX3NpemUgPSBUWVBFX0xFTkdUSCAocHRyX3R5cGUpOwotKwot KyAgaWYgKG9iamZpbGUtPnNlcGFyYXRlX2RlYnVnX29iamZpbGVfYmFja2xpbmspCi0rICAgIHJl dHVybjsKLSsKLSsgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBsdCIp OwotKyAgaWYgKHBsdCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rICBwbHRfZWxmX2lkeCA9IGVs Zl9zZWN0aW9uX2RhdGEgKHBsdCktPnRoaXNfaWR4OwotKwotKyAgZ290X3BsdCA9IGJmZF9nZXRf c2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLmdvdC5wbHQiKTsKLSsgIGlmIChnb3RfcGx0ID09IE5V TEwpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIFRoaXMgc2VhcmNoIGFsZ29yaXRobSBpcyBmcm9t IF9iZmRfZWxmX2Nhbm9uaWNhbGl6ZV9keW5hbWljX3JlbG9jLiAgKi8KLSsgIGZvciAocmVscGx0 ID0gb2JmZC0+c2VjdGlvbnM7IHJlbHBsdCAhPSBOVUxMOyByZWxwbHQgPSByZWxwbHQtPm5leHQp Ci0rICAgIGlmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5zaF9pbmZvID09 IHBsdF9lbGZfaWR4Ci0rCSYmIChlbGZfc2VjdGlvbl9kYXRhIChyZWxwbHQpLT50aGlzX2hkci5z aF90eXBlID09IFNIVF9SRUwKLSsJICAgIHx8IGVsZl9zZWN0aW9uX2RhdGEgKHJlbHBsdCktPnRo aXNfaGRyLnNoX3R5cGUgPT0gU0hUX1JFTEEpKQotKyAgICAgIGJyZWFrOwotKyAgaWYgKHJlbHBs dCA9PSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0rICBpZiAoISBiZWQtPnMtPnNsdXJwX3JlbG9j X3RhYmxlIChvYmZkLCByZWxwbHQsIGR5bl9zeW1ib2xfdGFibGUsIFRSVUUpKQotKyAgICByZXR1 cm47CistICBpZiAoISBUWVBFX09CSkZJTEVfT1dORUQgKHR5cGUpKQorKyAgaWYgKCEgVFlQRV9P QkpGSUxFX09XTkVEICh0eXBlKSAmJiAhVFlQRV9EWU5BTUlDICh0eXBlKSkKKyAgICAgcmV0dXJu IHR5cGU7CisgCisgICAvKiBUaGlzIHR5cGUgc2hvdWxkbid0IGJlIHBvaW50aW5nIHRvIGFueSB0 eXBlcyBpbiBvdGhlciBvYmpmaWxlczsKK0BAIC0zMjM1LDggKzMzOTEsMTAgQEAgY29weV90eXBl X3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgICBuZXdfdHlwZSA9IGFsbG9j X3R5cGVfYXJjaCAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpOworIAorICAgLyogV2UgbXVzdCBhZGQg dGhlIG5ldyB0eXBlIHRvIHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCistICAg ICB3ZSBlbmNvdW50ZXIgdGhpcyB0eXBlIGFnYWluIGR1cmluZyBhIHJlY3Vyc2l2ZSBjYWxsIGJl bG93LiAgKi8KKy0gIHN0b3JlZCA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29i c3RhY2ssIHNpemVvZiAoc3RydWN0IHR5cGVfcGFpcikpOworKyAgICAgd2UgZW5jb3VudGVyIHRo aXMgdHlwZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gIE1lbW9yeSBjb3Vs ZAorKyAgICAgYmUgYWxsb2NhdGVkIGZyb20gT0JKRklMRSBpbiB0aGUgY2FzZSB3ZSB3aWxsIGJl IHJlbW92aW5nIE9CSkZJTEUsIHRoaXMKKysgICAgIG9wdGltaXphdGlvbiBpcyBtaXNzZWQgYW5k IHhmcmVlIGlzIGNhbGxlZCBmb3IgaXQgZnJvbSBDT1BJRURfVFlQRVMuICAqLworKyAgc3RvcmVk ID0geG1hbGxvYyAoc2l6ZW9mICgqc3RvcmVkKSk7CisgICBzdG9yZWQtPm9sZCA9IHR5cGU7Cisg ICBzdG9yZWQtPm5ldyA9IG5ld190eXBlOworICAgKnNsb3QgPSBzdG9yZWQ7CitAQCAtMzI0Nyw2 ICszNDA1LDE5IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAorICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkgPSAwOworICAgVFlQRV9PV05FUiAo bmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0eXBlKTsKKyAKKysgIC8qIFRZUEVf TUFJTl9UWVBFIG1lbW9yeSBjb3B5IGFib3ZlIHJld3JvdGUgdGhlIFRZUEVfRElTQ0FSREFCTEUg ZmxhZyBzbyB3ZQorKyAgICAgbmVlZCB0byBpbml0aWFsaXplIGl0IGFnYWluLiAgQW5kIGV2ZW4g aWYgVFlQRSB3YXMgYWxyZWFkeSBkaXNjYXJkYWJsZQorKyAgICAgTkVXX1RZUEUgc28gZmFyIGlz IG5vdCByZWdpc3RlcmVkIGluIFRZUEVfRElTQ0FSREFCTEVfVEFCTEUuICAqLworKyAgVFlQRV9E SVNDQVJEQUJMRSAobmV3X3R5cGUpID0gMDsKKysgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChu ZXdfdHlwZSk7CiArCi0rICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChmcmVlX2N1cnJlbnRfY29u dGVudHMsICZzdHJpbmdfYnVmZmVyKTsKKysgIC8qIFByZS1jbGVhciB0aGUgZmllbGRzIHByb2Nl c3NlZCBieSBkZWxldGVfbWFpbl90eXBlLiAgSWYgRFdBUkYgYmxvY2sKKysgICAgIGV2YWx1YXRp b25zIGJlbG93IGNhbGwgZXJyb3Igd2Ugd291bGQgbGVhdmUgYW4gdW5mcmVlYWJsZSBUWVBFLiAg Ki8KKysgIFRZUEVfVEFSR0VUX1RZUEUgKG5ld190eXBlKSA9IE5VTEw7CisrICBUWVBFX1ZQVFJf QkFTRVRZUEUgKG5ld190eXBlKSA9IE5VTEw7CisrICBUWVBFX05GSUVMRFMgKG5ld190eXBlKSA9 IDA7CisrICBUWVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gTlVMTDsKICsKLSsgIHJlbG9jX2NvdW50 ID0gcmVscGx0LT5zaXplIC8gZWxmX3NlY3Rpb25fZGF0YSAocmVscGx0KS0+dGhpc19oZHIuc2hf ZW50c2l6ZTsKLSsgIGZvciAocmVsb2MgPSAwOyByZWxvYyA8IHJlbG9jX2NvdW50OyByZWxvYysr KQorICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCisgICAgIFRZUEVfTkFNRSAobmV3X3R5cGUpID0g eHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7CisgICBpZiAoVFlQRV9UQUdfTkFNRSAodHlwZSkp CitAQCAtMzI1NSwxMiArMzQyNiw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwKKyAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9IFRZUEVf SU5TVEFOQ0VfRkxBR1MgKHR5cGUpOworICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9IFRZUEVf TEVOR1RIICh0eXBlKTsKKyAKKysgIGlmIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKQogKyAg ICB7Ci0rICAgICAgY29uc3QgY2hhciAqbmFtZSwgKm5hbWVfZ290X3BsdDsKLSsgICAgICBzdHJ1 Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW07Ci0rICAgICAgQ09SRV9BRERSIGFkZHJlc3M7Ci0rICAg ICAgY29uc3QgY2hhciAqc3VmZml4ID0gIkBnb3QucGx0IjsKLSsgICAgICBzaXplX3Qgc3VmZml4 X2xlbiA9IHN0cmxlbiAoc3VmZml4KTsKLSsgICAgICBzaXplX3QgbmFtZV9sZW47CisrICAgICAg Z2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpKTsKICsKLSsgICAgICBu YW1lID0gYmZkX2FzeW1ib2xfbmFtZSAoKnJlbHBsdC0+cmVsb2NhdGlvbltyZWxvY10uc3ltX3B0 cl9wdHIpOwotKyAgICAgIG5hbWVfbGVuID0gc3RybGVuIChuYW1lKTsKLSsgICAgICBhZGRyZXNz ID0gcmVscGx0LT5yZWxvY2F0aW9uW3JlbG9jXS5hZGRyZXNzOworKyAgICAgIGlmICghZHdhcmZf bG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUpKSkKKysgICAgICAg IFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpID0gMTsKKysgICAgICBUWVBFX0FMTE9DQVRF RCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgfQogKwotKyAgICAgIC8qIERvZXMgdGhlIHBvaW50 ZXIgcmVzaWRlIGluIHRoZSAuZ290LnBsdCBzZWN0aW9uPyAgKi8KLSsgICAgICBpZiAoIShiZmRf Z2V0X3NlY3Rpb25fdm1hIChvYmZkLCBnb3RfcGx0KSA8PSBhZGRyZXNzCi0rICAgICAgICAgICAg JiYgYWRkcmVzcyA8IGJmZF9nZXRfc2VjdGlvbl92bWEgKG9iZmQsIGdvdF9wbHQpCi0rCQkJICsg YmZkX2dldF9zZWN0aW9uX3NpemUgKGdvdF9wbHQpKSkKLSsJY29udGludWU7CisrICBpZiAoVFlQ RV9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpCisrICAgIHsKKysgICAgICBnZGJfYXNzZXJ0ICghVFlQ RV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpKTsKICsKLSsgICAgICAvKiBXZSBjYW5ub3QgY2hl Y2sgaWYgTkFNRSBpcyBhIHJlZmVyZW5jZSB0byBtc3RfdGV4dF9nbnVfaWZ1bmMgYXMgaW4KLSsJ IE9CSkZJTEUgdGhlIHN5bWJvbCBpcyB1bmRlZmluZWQgYW5kIHRoZSBvYmpmaWxlIGhhdmluZyBO QU1FIGRlZmluZWQKLSsJIG1heSBub3QgeWV0IGhhdmUgYmVlbiBsb2FkZWQuICAqLworKyAgICAg IGlmICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBl KSkpCisrICAgICAgICBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSAxOworKyAgICAg IFRZUEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKKysgICAgfQogKwotKyAgICAgIGlm IChzdHJpbmdfYnVmZmVyX3NpemUgPCBuYW1lX2xlbiArIHN1ZmZpeF9sZW4pCisrICBpZiAoIVRZ UEVfREFUQV9MT0NBVElPTl9JU19BRERSIChuZXdfdHlwZSkKKysgICAgICAmJiBUWVBFX0RBVEFf TE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSkKKysgICAgeworKyAgICAgIGlmIChUWVBF X05PVF9BTExPQ0FURUQgKG5ld190eXBlKQorKyAgICAgICAgICB8fCBUWVBFX05PVF9BU1NPQ0lB VEVEIChuZXdfdHlwZSkpCisrCVRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyAobmV3X3R5 cGUpID0gTlVMTDsKKysgICAgICBlbHNlCiArCXsKLSsJICBzdHJpbmdfYnVmZmVyX3NpemUgPSAy ICogKG5hbWVfbGVuICsgc3VmZml4X2xlbik7Ci0rCSAgc3RyaW5nX2J1ZmZlciA9IHhyZWFsbG9j IChzdHJpbmdfYnVmZmVyLCBzdHJpbmdfYnVmZmVyX3NpemUpOworKwkgIFRZUEVfREFUQV9MT0NB VElPTl9JU19BRERSIChuZXdfdHlwZSkgPSAxOworKwkgIFRZUEVfREFUQV9MT0NBVElPTl9BRERS IChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKKysJCQkJICAgIChUWVBFX0RB VEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBlKSk7CiArCX0KLSsgICAgICBtZW1jcHkg KHN0cmluZ19idWZmZXIsIG5hbWUsIG5hbWVfbGVuKTsKLSsgICAgICBtZW1jcHkgKCZzdHJpbmdf YnVmZmVyW25hbWVfbGVuXSwgc3VmZml4LCBzdWZmaXhfbGVuKTsKLSsKLSsgICAgICBtc3ltID0g cmVjb3JkX21pbmltYWxfc3ltYm9sIChzdHJpbmdfYnVmZmVyLCBuYW1lX2xlbiArIHN1ZmZpeF9s ZW4sIDEsCi0rCQkJCSAgICBhZGRyZXNzLCBtc3Rfc2xvdF9nb3RfcGx0LCBnb3RfcGx0LAotKwkJ CQkgICAgb2JqZmlsZSk7Ci0rICAgICAgaWYgKG1zeW0pCi0rCU1TWU1CT0xfU0laRSAobXN5bSkg PSBwdHJfc2l6ZTsKICsgICAgfQogKwotKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotK30KLSsK LSsvKiBGdW5jdGlvbiBkb2VzIG5vdCBjaGVjayBmb3IgcG9zc2libHkgY3JlYXRlZCBkdXBsaWNp dGllcyBpbiB0aGUgY2FjaGUuCi0rICAgQ2hlY2sgaXQgYnkgcmVzb2x2ZV9nbnVfaWZ1bmNfYnlf Y2FjaGUgZmlyc3QuICAqLworICAgLyogQ29weSB0aGUgZmllbGRzLiAgKi8KKyAgIGlmIChUWVBF X05GSUVMRFMgKHR5cGUpKQorICAgICB7CisgICAgICAgaW50IGksIG5maWVsZHM7CisgCisrICAg ICAgLyogVFlQRV9DT0RFX1JBTkdFIHVzZXMgVFlQRV9SQU5HRV9EQVRBIG9mIHRoZSB1bmlvbiB3 aXRoIFRZUEVfRklFTERTLiAgKi8KKysgICAgICBnZGJfYXNzZXJ0IChUWVBFX0NPREUgKHR5cGUp ICE9IFRZUEVfQ09ERV9SQU5HRSk7CiArCi0rc3RhdGljIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAq Ci0rZ251X2lmdW5jX3JlY29yZF9jYWNoZV91bmNoZWNrZWQgKGNvbnN0IGNoYXIgKmZ1bmN0aW9u X25hbWUsCi0rCQkJCSAgQ09SRV9BRERSIGZ1bmN0aW9uX2FkZHJlc3MpCi0rewotKyAgc3RydWN0 IG1pbmltYWxfc3ltYm9sICptc3ltLCAqbXN5bV9uZXc7Ci0rICBhc2VjdGlvbiAqc2VjdDsKLSsg IHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotKyAgY2hhciAqZnVuY3Rpb25fbmFtZV9nbnVfaWZ1 bmNfdGd0OworICAgICAgIG5maWVsZHMgPSBUWVBFX05GSUVMRFMgKHR5cGUpOworKyAgICAgIFRZ UEVfTkZJRUxEUyAobmV3X3R5cGUpID0gbmZpZWxkczsKKyAgICAgICBUWVBFX0ZJRUxEUyAobmV3 X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsKKyAgICAgICBmb3IgKGkg PSAwOyBpIDwgbmZpZWxkczsgaSsrKQorIAl7CitAQCAtMzI2OSw4ICszNDc2LDggQEAgY29weV90 eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgCSAgVFlQRV9GSUVMRF9C SVRTSVpFIChuZXdfdHlwZSwgaSkgPSBUWVBFX0ZJRUxEX0JJVFNJWkUgKHR5cGUsIGkpOworIAkg IGlmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpKQorIAkgICAgVFlQRV9GSUVMRF9UWVBFIChu ZXdfdHlwZSwgaSkKKy0JICAgICAgPSBjb3B5X3R5cGVfcmVjdXJzaXZlIChvYmpmaWxlLCBUWVBF X0ZJRUxEX1RZUEUgKHR5cGUsIGkpLAorLQkJCQkgICAgIGNvcGllZF90eXBlcyk7CisrCSAgICAg ID0gY29weV90eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLCBUWVBFX0ZJRUxEX1RZUEUgKHR5cGUs IGkpLAorKwkJCQkgICAgICAgY29waWVkX3R5cGVzKTsKKyAJICBpZiAoVFlQRV9GSUVMRF9OQU1F ICh0eXBlLCBpKSkKKyAJICAgIFRZUEVfRklFTERfTkFNRSAobmV3X3R5cGUsIGkpID0gCisgCSAg ICAgIHhzdHJkdXAgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOworQEAgLTMyOTcsMjQgKzM1 MDQsMTY2IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAor IAl9CisgICAgIH0KKyAKKysgIC8qIEJvdGggRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sgYW5k IFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCB3ZXJlCisrICAgICBwb3NzaWJseSBjb252 ZXJ0ZWQuICAqLworKyAgVFlQRV9EWU5BTUlDIChuZXdfdHlwZSkgPSAwOwogKwotKyAgbXN5bSA9 IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoZnVuY3Rpb25fYWRkcmVzcyk7Ci0rICBpZiAo bXN5bSA9PSBOVUxMKQotKyAgICByZXR1cm4gTlVMTDsKLSsgIGlmIChTWU1CT0xfVkFMVUVfQURE UkVTUyAobXN5bSkgIT0gZnVuY3Rpb25fYWRkcmVzcykKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICAv KiBtaW5pbWFsIHN5bWJvbHMgaGF2ZSBhbHdheXMgU1lNQk9MX09CSl9TRUNUSU9OIG5vbi1OVUxM LiAgKi8KLSsgIHNlY3QgPSBTWU1CT0xfT0JKX1NFQ1RJT04gKG1zeW0pLT50aGVfYmZkX3NlY3Rp b247Ci0rICBvYmpmaWxlID0gU1lNQk9MX09CSl9TRUNUSU9OIChtc3ltKS0+b2JqZmlsZTsKKyAg IC8qIEZvciByYW5nZSB0eXBlcywgY29weSB0aGUgYm91bmRzIGluZm9ybWF0aW9uLiAqLworLSAg aWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1JBTkdFKQorKyAgaWYgKFRZUEVfQ09E RSAobmV3X3R5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKKyAgICAgeworICAgICAgIFRZUEVfUkFO R0VfREFUQSAobmV3X3R5cGUpID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRz KSk7CisgICAgICAgKlRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0VfREFU QSAodHlwZSk7CiArCi0rICAvKiBJZiAucGx0IGp1bXBzIGJhY2sgdG8gLnBsdCB0aGUgc3ltYm9s IGlzIHN0aWxsIGRlZmVycmVkIGZvciBsYXRlcgotKyAgICAgcmVzb2x1dGlvbiBhbmQgaXQgaGFz IG5vIHVzZSBmb3IgR0RCLiAgQmVzaWRlcyAiLnRleHQiIHRoaXMgc3ltYm9sIGNhbgotKyAgICAg cmVzaWRlIGFsc28gaW4gIi5vcGQiIGZvciBwcGM2NCBmdW5jdGlvbiBkZXNjcmlwdG9yLiAgKi8K LSsgIGlmIChzdHJjbXAgKGJmZF9nZXRfc2VjdGlvbl9uYW1lIChvYmpmaWxlLT5vYmZkLCBzZWN0 KSwgIi5wbHQiKSA9PSAwKQotKyAgICByZXR1cm4gTlVMTDsKKysgICAgICBzd2l0Y2ggKFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cua2luZCkKKysJeworKwljYXNlIFJBTkdFX0JPVU5E X0tJTkRfQ09OU1RBTlQ6CisrCSAgYnJlYWs7CisrCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FS Rl9CTE9DSzoKKysJICAvKiBgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uJyBpcyB0b28gYm91 bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBtYWRlIGNv bnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCisrCSAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBU WVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgKi8KKysJ ICBpZiAoVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkgfHwgVFlQRV9OT1RfQVNTT0NJQVRF RCAobmV3X3R5cGUpCisrCSAgICAgIHx8ICEgaGFzX3N0YWNrX2ZyYW1lcyAoKSkKKysJICAgIHsK KysJICAgICAgLyogV2Ugc2hvdWxkIHNldCAxIGZvciBGb3J0cmFuIGJ1dCBob3cgdG8gZmluZCB0 aGUgbGFuZ3VhZ2U/ICAqLworKwkgICAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUpID0gMDsK KysJICAgICAgVFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOworKwkgICAg fQorKwkgIGVsc2UKKysJICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBkd2FyZl9sb2Nl eHByX2JhdG9uX2V2YWwKKysJCQkJKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5k d2FyZl9ibG9jayk7CisrCSAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0g UkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VO RF9LSU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAgeworKwkgICAgQ09SRV9BRERSIGFkZHI7CiArCi0r ICBmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QgPSBhbGxvY2EgKHN0cmxlbiAoZnVuY3Rpb25f bmFtZSkKLSsJCQkJCSsgc3RybGVuICgiQGdudS1pZnVuYy10Z3QiKSArIDEpOwotKyAgc3ByaW50 ZiAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LCAiJXNAZ251LWlmdW5jLXRndCIsIGZ1bmN0 aW9uX25hbWUpOworKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbicgaXMgdG9v IGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCisrCSAgICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBt YWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCisrCSAgICAgICBUWVBFX05PVF9BTExPQ0FU RUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAg ICAgICovCisrCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQorKwkgICAg ICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFja19mcmFt ZXMgKCkKKysJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKKysJCSAgKFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCisrCQkg ICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBlLCAm YWRkcikpCisrCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOworKwkgICAg ZWxzZQorKwkgICAgICB7CisrCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhv dyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCisrCQlUWVBFX0xPV19CT1VORCAobmV3X3R5cGUp ID0gMDsKKysJCVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKKysJICAg ICAgfQorKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0gUkFOR0Vf Qk9VTkRfS0lORF9DT05TVEFOVDsKKysJICB9CisrCSAgYnJlYWs7CisrCX0KICsKLSsgIC8qIENy ZWF0ZSBuZXcgYWxpYXMgIkBnbnUtaWZ1bmMtdGd0IiBmb3IgTVNZTS4gICovCi0rICBtc3ltX25l dyA9IHJlY29yZF9taW5pbWFsX3N5bWJvbCAoZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0LAot KwkJCQkgICAgc3RybGVuIChmdW5jdGlvbl9uYW1lX2dudV9pZnVuY190Z3QpLCAxLAotKwkJCQkg ICAgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW0pLAotKwkJCQkgICAgTVNZTUJPTF9UWVBFICht c3ltKSwgc2VjdCwgb2JqZmlsZSk7Ci0rICAvKiBTaG91bGQgbm90IGhhcHBlbi4gICovCi0rICBp ZiAobXN5bV9uZXcgPT0gTlVMTCkKLSsgICAgcmV0dXJuIDA7CisrICAgICAgc3dpdGNoIChUWVBF X1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kKQorKwl7CisrCWNhc2UgUkFOR0VfQk9V TkRfS0lORF9DT05TVEFOVDoKKysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0JMT0NLOgorKwkgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24nIGlzIHRvbyBi b3VuZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgIGl0IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUg Y29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICBUWVBFX05PVF9BTExPQ0FURUQgYW5k IFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KKysJICAgICAqLwor KwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lB VEVEIChuZXdfdHlwZSkKKysJICAgICAgfHwgISBoYXNfc3RhY2tfZnJhbWVzICgpKQorKwkgICAg eworKwkgICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVfTE9XX0JPVU5EIChu ZXdfdHlwZSkgLSAxOworKwkgICAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlw ZSkgPSAxOworKwkgICAgfQorKwkgIGVsc2UKKysJICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5 cGUpID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCisrCQkJICAgICAgIChUWVBFX1JBTkdFX0RB VEEgKG5ld190eXBlKS0+aGlnaC51LmR3YXJmX2Jsb2NrKTsKKysJICBUWVBFX1JBTkdFX0RBVEEg KG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKKysJICBi cmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAgeworKwkg ICAgQ09SRV9BRERSIGFkZHI7CiArCi0rICAvKiBvYmpmaWxlLT5tc3ltYm9scyBhcnJheSBpcyBh bHJlYWR5IGFsbG9jYXRlZCBvbiBvYnN0YWNrIGFuZCBpdCBjYW5ub3QgYmUKLSsgICAgIGVhc2ls eSBleHRlbmRlZC4gIFRoZXJlZm9yZSA8dGFiPi1jb21wbGV0aW9uIG9uIHN5bWJvbCBuYW1lcyB3 aWxsIG5ldmVyCi0rICAgICBzaG93IHRoZSBAZ251LWlmdW5jLXRndCBzeW1ib2wuICBMaW5rIGl0 IGF0IGxlYXN0IHRvIHRoZSBoYXNoIHRhYmxlIHNvCi0rICAgICB0aGF0IHJlc29sdmVfZ251X2lm dW5jX2J5X2NhY2hlIGNhbiBmaW5kIGl0LiAgKi8KLSsgIGFkZF9taW5zeW1fdG9faGFzaF90YWJs ZSAobXN5bV9uZXcsIG9iamZpbGUtPm1zeW1ib2xfaGFzaCk7Ci0rICAgIAotKyAgTVNZTUJPTF9T SVpFIChtc3ltX25ldykgPSBNU1lNQk9MX1NJWkUgKG1zeW0pOwotKyAgcmV0dXJuIG1zeW1fbmV3 OwotK30KKysJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3Vu ZCB0byBpdHMgb2JqZmlsZSBzbworKwkgICAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBj b25zdGFudCBieSBDSEVDS19UWVBFREVGLgorKwkgICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFu ZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9yIFRZUEUuCisrCSAgICAgICAq LworKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKKysJICAgICAgICAm JiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgp CisrCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9iYXRvbl9ldmFsCisrCQkgICAgICAoVFlQRV9S QU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCisrCQkg ICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5 cGUsCisrCQkgICAgICAgJmFkZHIpKQorKwkgICAgICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBl KSA9IGFkZHI7CisrCSAgICBlbHNlCisrCSAgICAgIHsKKysJCVRZUEVfSElHSF9CT1VORCAobmV3 X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKSAtIDE7CisrCQlUWVBFX0hJR0hfQk9V TkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOworKwkgICAgICB9CisrCSAgICBUWVBFX1JBTkdF X0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsK KysJICB9CisrCSAgYnJlYWs7CisrCX0KICsKLSsvKiBDaGVjayBmaXJzdCB0aGUgY2FjaGUgaWYg aXQgLSB1bmxpa2VseSAtIGhhcyBub3QgYmVlbiBwb3B1bGF0ZWQgc2luY2UKLSsgICBicF9nbnVf aWZ1bmNfcmVzb2x2ZXIgaGFzIGJlZW4gY3JlYXRlZC4gIGdudV9pZnVuY19yZWNvcmRfY2FjaGVf dW5jaGVja2VkCi0rICAgY291bGQgY3JlYXRlIGEgZHVwbGljYXRlIHN5bWJvbCBvdGhlcndpc2Uu ICAqLworKyAgICAgIHN3aXRjaCAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3Ry aWRlLmtpbmQpCisrCXsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgorKwkgIGJy ZWFrOworKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxPQ0s6CisrCSAgLyogYHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCisr CSAgICAgaXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVG LgorKwkgICAgIFRZUEVfTk9UX0FMTE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUg bm90IHZhbGlkIGZvciBUWVBFLgorKwkgICAgICovCisrCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRF RCAobmV3X3R5cGUpIHx8IFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKQorKwkgICAgICB8 fCAhIGhhc19zdGFja19mcmFtZXMgKCkpCisrCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlw ZSkgPSAwOworKwkgIGVsc2UKKysJICAgIFRZUEVfQllURV9TVFJJREUgKG5ld190eXBlKSA9IGR3 YXJmX2xvY2V4cHJfYmF0b25fZXZhbAorKwkJCShUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+ Ynl0ZV9zdHJpZGUudS5kd2FyZl9ibG9jayk7CisrCSAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlw ZSktPmJ5dGVfc3RyaWRlLmtpbmQKKysJICAgID0gUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsK KysJICBicmVhazsKKysJY2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0xPQ0xJU1Q6CisrCSAg eworKwkgICAgQ09SRV9BRERSIGFkZHIgPSAwOwogKwotK3ZvaWQKLStnbnVfaWZ1bmNfcmVjb3Jk X2NhY2hlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFt ZSwKLSsJCQlDT1JFX0FERFIgZnVuY3Rpb25fYWRkcmVzcykKLSt7Ci0rICBzdHJ1Y3QgbWluaW1h bF9zeW1ib2wgKm1zeW07CisrCSAgICAvKiBgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uJyBp cyB0b28gYm91bmQgdG8gaXRzIG9iamZpbGUgc28KKysJICAgICAgIGl0IGlzIGV4cGVjdGVkIHRv IGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KKysJICAgICAgIFRZUEVfTk9UX0FM TE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgor KwkgICAgICAgKi8KKysJICAgIGlmICghIFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpCisr CQkmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVz ICgpKQorKwkgICAgICBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKKysJICAgICAgIChUWVBFX1JB TkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3Qs CisrCQlUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9zdHJpZGUudS5kd2FyZl9sb2Ns aXN0LnR5cGUsCisrCQkmYWRkcik7CisrCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkg PSBhZGRyOworKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3RyaWRlLmtp bmQKKysJICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOworKwkgIH0KKysJICBicmVh azsKKysJfQogKwotKyAgbXN5bSA9IHJlc29sdmVfZ251X2lmdW5jX2J5X2NhY2hlIChmdW5jdGlv bl9uYW1lKTsKLSsgIGlmIChtc3ltID09IE5VTEwpCi0rICAgIGdudV9pZnVuY19yZWNvcmRfY2Fj aGVfdW5jaGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNzKTsKLSsgIGVsc2Ug aWYgKFNZTUJPTF9WQUxVRV9BRERSRVNTIChtc3ltKSAhPSBmdW5jdGlvbl9hZGRyZXNzKQotKyAg ICB7Ci0rICAgICAgLyogVGhpcyBjYXNlIGluZGljYXRlcyBidWdneSBpbmZlcmlvciBwcm9ncmFt LiAgR0RCIHdvdWxkIG5lZWQgdG8gdXBkYXRlCi0rCSBpdHMgTVNZTSBjYWNoZSBzeW1ib2wgZm9y IGZ1bmN0aW9uX2FkZHJlc3MuICBBbnl3YXkgRlVOQ1RJT05fTkFNRSBpcwotKwkgbmV2ZXIgbm9y bWFsbHkgZm91bmQgaW4gdGhlIGNhc2UgYXMgaW4gc3VjaCBjYXNlIG5vCi0rCSBicF9nbnVfaWZ1 bmNfcmVzb2x2ZXIgd291bGQgYmUgY3JlYXRlZCBpbiB0aGUgZmlyc3QgcGxhY2UuICAqLworKyAg ICAgIC8qIENvbnZlcnQgVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5UIGludG8gYSByZWd1 bGFyIGJvdW5kLiAgKi8KKysgICAgICBpZiAoVFlQRV9SQU5HRV9ISUdIX0JPVU5EX0lTX0NPVU5U IChuZXdfdHlwZSkpCisrCXsKKysJICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IFRZUEVf TE9XX0JPVU5EIChuZXdfdHlwZSkKKysJCQkJICAgICAgICsgVFlQRV9ISUdIX0JPVU5EIChuZXdf dHlwZSkgLSAxOworKwkgIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVCAobmV3X3R5cGUp ID0gMDsKKysJfQorICAgICB9CisgCisgICAvKiBDb3B5IHBvaW50ZXJzIHRvIG90aGVyIHR5cGVz LiAgKi8KKyAgIGlmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSkKKyAgICAgVFlQRV9UQVJHRVRf VFlQRSAobmV3X3R5cGUpID0gCistICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwg CistCQkJICAgVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksCistCQkJICAgY29waWVkX3R5cGVzKTsK KysgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsIAorKwkJCSAgICAgVFlQRV9U QVJHRVRfVFlQRSAodHlwZSksCisrCQkJICAgICBjb3BpZWRfdHlwZXMpOworICAgaWYgKFRZUEVf VlBUUl9CQVNFVFlQRSAodHlwZSkpCisgICAgIFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUp ID0gCistICAgICAgY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwKKy0JCQkgICBUWVBFX1ZQ VFJfQkFTRVRZUEUgKHR5cGUpLAorLQkJCSAgIGNvcGllZF90eXBlcyk7CisrICAgICAgY29weV90 eXBlX3JlY3Vyc2l2ZV8xIChvYmpmaWxlLAorKwkJCSAgICAgVFlQRV9WUFRSX0JBU0VUWVBFICh0 eXBlKSwKKysJCQkgICAgIGNvcGllZF90eXBlcyk7CisgICAvKiBNYXliZSBjb3B5IHRoZSB0eXBl X3NwZWNpZmljIGJpdHMuCisgCisgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTogV2UgZG8gbm90 IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKK0BAIC0zMzMxLDYgKzM2ODAsMTcgQEAg Y29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCisgICByZXR1cm4g bmV3X3R5cGU7CisgfQorIAorKy8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRS4g IFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1c2luZworKyAgIG1hbGxvYywgYSBzYXZlZCB0 eXBlIGlmIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIFRZUEUgKHVzaW5nIENPUElFRF9UWVBFUyks CisrICAgb3IgVFlQRSBpZiBpdCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIE9CSkZJTEUuICAqLwog KwotKyAgICAgIHdhcm5pbmcgKF8oImdudS1pbmRpcmVjdC1mdW5jdGlvbiBcIiVzXCIgaGFzIGNo YW5nZWQgaXRzIHJlc29sdmVkICIKLSsJCSAiZnVuY3Rpb25fYWRkcmVzcyBmcm9tICVzIHRvICVz OyBHREIgaXMgdXNpbmcgdGhlIGZvcm1lciBvbmUiKSwKLSsJICAgICAgIGZ1bmN0aW9uX25hbWUs IHBhZGRyZXNzIChnZGJhcmNoLCBTWU1CT0xfVkFMVUVfQUREUkVTUyAobXN5bSkpLAotKwkgICAg ICAgcGFkZHJlc3MgKGdkYmFyY2gsIGZ1bmN0aW9uX2FkZHJlc3MpKTsKLSsgICAgfQorK3N0cnVj dCB0eXBlICoKKytjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKysJCSAg ICAgaHRhYl90IGNvcGllZF90eXBlcykKKyt7CisrICByZXR1cm4gY29weV90eXBlX3JlY3Vyc2l2 ZV8xIChUWVBFX09CSkZJTEUgKHR5cGUpLCB0eXBlLCBjb3BpZWRfdHlwZXMpOwogK30KICsKLStz dGF0aWMgc3RydWN0IG1pbmltYWxfc3ltYm9sICoKLStyZXNvbHZlX2dudV9pZnVuY19ieV9nb3Qg KGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUpCisgLyogTWFrZSBhIGNvcHkgb2YgdGhlIGdpdmVu IFRZUEUsIGV4Y2VwdCB0aGF0IHRoZSBwb2ludGVyICYgcmVmZXJlbmNlCisgICAgdHlwZXMgYXJl IG5vdCBwcmVzZXJ2ZWQuCisgICAgCitAQCAtMzM1Myw2ICszNzEzLDE5OSBAQCBjb3B5X3R5cGUg KGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKQorICAgcmV0dXJuIG5ld190eXBlOworIH0KKyAKKysv KiBDYWxsYmFjayB0eXBlIGZvciBtYWluX3R5cGVfY3Jhd2wuICAqLworK3R5cGVkZWYgaW50ICgq bWFpbl90eXBlX2NyYXdsX2l0ZXIpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSk7Cisr CisrLyogSXRlcmF0ZSBhbGwgbWFpbl90eXBlIHN0cnVjdHVyZXMgcmVhY2hhYmxlIHRocm91Z2gg YW55IGBzdHJ1Y3QgdHlwZSAqJyBmcm9tCisrICAgVFlQRS4gIElURVIgd2lsbCBiZSBjYWxsZWQg b25seSBmb3Igb25lIHR5cGUgb2YgZWFjaCBtYWluX3R5cGUsIHVzZQorKyAgIFRZUEVfQ0hBSU4g dHJhdmVyc2FsIHRvIGZpbmQgYWxsIHRoZSB0eXBlIGluc3RhbmNlcy4gIElURVIgaXMgYmVpbmcg Y2FsbGVkCisrICAgZm9yIGVhY2ggbWFpbl90eXBlIGZvdW5kLiAgSVRFUiByZXR1cm5zIG5vbi16 ZXJvIGlmIG1haW5fdHlwZV9jcmF3bCBzaG91bGQKKysgICBkZXB0aC1maXJzdCBlbnRlciB0aGUg c3BlY2lmaWMgdHlwZS4gIElURVIgbXVzdCBwcm92aWRlIHNvbWUgZGV0ZWN0aW9uIGZvcgorKyAg IHJlZW50ZXJpbmcgdGhlIHNhbWUgbWFpbl90eXBlIGFzIHRoaXMgZnVuY3Rpb24gd291bGQgb3Ro ZXJ3aXNlIGVuZGxlc3NseQorKyAgIGxvb3AuICAqLworKworK3N0YXRpYyB2b2lkCisrbWFpbl90 eXBlX2NyYXdsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgbWFpbl90eXBlX2NyYXdsX2l0ZXIgaXRlciwg dm9pZCAqZGF0YSkKICt7Ci0rICBjaGFyICpmdW5jdGlvbl9uYW1lX2dvdF9wbHQ7Ci0rICBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKKysgIHN0cnVjdCB0eXBlICp0eXBlX2l0ZXI7CisrICBpbnQg aTsKICsKLSsgIGZ1bmN0aW9uX25hbWVfZ290X3BsdCA9IGFsbG9jYSAoc3RybGVuIChmdW5jdGlv bl9uYW1lKSArIHN0cmxlbiAoIkBnb3QucGx0IikKLSsJCQkJICArIDEpOwotKyAgc3ByaW50ZiAo ZnVuY3Rpb25fbmFtZV9nb3RfcGx0LCAiJXNAZ290LnBsdCIsIGZ1bmN0aW9uX25hbWUpOworKyAg aWYgKCF0eXBlKQorKyAgICByZXR1cm47CiArCi0rICBBTExfUFNQQUNFX09CSkZJTEVTIChjdXJy ZW50X3Byb2dyYW1fc3BhY2UsIG9iamZpbGUpCi0rICAgIHsKLSsgICAgICBiZmQgKm9iZmQgPSBv YmpmaWxlLT5vYmZkOwotKyAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gb2JqZmlsZS0+ Z2RiYXJjaDsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqcHRyX3R5cGUgPSBidWlsdGluX3R5cGUgKGdk YmFyY2gpLT5idWlsdGluX2RhdGFfcHRyOwotKyAgICAgIHNpemVfdCBwdHJfc2l6ZSA9IFRZUEVf TEVOR1RIIChwdHJfdHlwZSk7Ci0rICAgICAgQ09SRV9BRERSIHBvaW50ZXJfYWRkcmVzcywgZnVu Y3Rpb25fYWRkcmVzczsKLSsgICAgICBhc2VjdGlvbiAqcGx0OwotKyAgICAgIGdkYl9ieXRlICpi dWYgPSBhbGxvY2EgKHB0cl9zaXplKTsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1z eW07CisrICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwogKwotKyAg ICAgIG1zeW0gPSBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVfZ290X3BsdCwg TlVMTCwgb2JqZmlsZSk7Ci0rICAgICAgaWYgKG1zeW0gPT0gTlVMTCkKLSsJY29udGludWU7Ci0r ICAgICAgaWYgKE1TWU1CT0xfVFlQRSAobXN5bSkgIT0gbXN0X3Nsb3RfZ290X3BsdCkKLSsJY29u dGludWU7Ci0rICAgICAgcG9pbnRlcl9hZGRyZXNzID0gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1z eW0pOwotKwotKyAgICAgIHBsdCA9IGJmZF9nZXRfc2VjdGlvbl9ieV9uYW1lIChvYmZkLCAiLnBs dCIpOwotKyAgICAgIGlmIChwbHQgPT0gTlVMTCkKLSsJY29udGludWU7Ci0rCi0rICAgICAgaWYg KE1TWU1CT0xfU0laRSAobXN5bSkgIT0gcHRyX3NpemUpCi0rCWNvbnRpbnVlOwotKyAgICAgIGlm ICh0YXJnZXRfcmVhZF9tZW1vcnkgKHBvaW50ZXJfYWRkcmVzcywgYnVmLCBwdHJfc2l6ZSkgIT0g MCkKLSsJY29udGludWU7Ci0rICAgICAgZnVuY3Rpb25fYWRkcmVzcyA9IGV4dHJhY3RfdHlwZWRf YWRkcmVzcyAoYnVmLCBwdHJfdHlwZSk7Ci0rCi0rICAgICAgbXN5bSA9IGdudV9pZnVuY19yZWNv cmRfY2FjaGVfdW5jaGVja2VkIChmdW5jdGlvbl9uYW1lLCBmdW5jdGlvbl9hZGRyZXNzKTsKLSsg ICAgICBpZiAobXN5bSA9PSBOVUxMKQotKwljb250aW51ZTsKLSsgICAgICByZXR1cm4gbXN5bTsK LSsgICAgfQotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3N0cnVjdCBtaW5pbWFsX3N5bWJv bCAqCi0rcmVzb2x2ZV9nbnVfaWZ1bmNfYnlfY2FjaGUgKGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25h bWUpCi0rewotKyAgY2hhciAqZnVuY3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0OwotKwotKyAgZnVu Y3Rpb25fbmFtZV9nbnVfaWZ1bmNfdGd0ID0gYWxsb2NhIChzdHJsZW4gKGZ1bmN0aW9uX25hbWUp Ci0rCQkJCQkrIHN0cmxlbiAoIkBnbnUtaWZ1bmMtdGd0IikgKyAxKTsKLSsgIHNwcmludGYgKGZ1 bmN0aW9uX25hbWVfZ251X2lmdW5jX3RndCwgIiVzQGdudS1pZnVuYy10Z3QiLCBmdW5jdGlvbl9u YW1lKTsKLSsKLSsgIHJldHVybiBsb29rdXBfbWluaW1hbF9zeW1ib2wgKGZ1bmN0aW9uX25hbWVf Z251X2lmdW5jX3RndCwgTlVMTCwgTlVMTCk7Ci0rfQotKwotK2ludAotK3Jlc29sdmVfZ251X2lm dW5jIChjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBDT1JFX0FERFIgKmZ1bmN0aW9uX2FkZHJl c3NwKQotK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bTsKLSsKLSsgIG1zeW0gPSBy ZXNvbHZlX2dudV9pZnVuY19ieV9jYWNoZSAoZnVuY3Rpb25fbmFtZSk7Ci0rICBpZiAobXN5bSAh PSBOVUxMKQotKyAgICB7Ci0rICAgICAgKmZ1bmN0aW9uX2FkZHJlc3NwID0gU1lNQk9MX1ZBTFVF X0FERFJFU1MgKG1zeW0pOwotKyAgICAgIHJldHVybiAxOwotKyAgICB9Ci0rCi0rICBtc3ltID0g cmVzb2x2ZV9nbnVfaWZ1bmNfYnlfZ290IChmdW5jdGlvbl9uYW1lKTsKLSsgIGlmIChtc3ltICE9 IE5VTEwpCi0rICAgIHsKLSsgICAgICAqZnVuY3Rpb25fYWRkcmVzc3AgPSBTWU1CT0xfVkFMVUVf QUREUkVTUyAobXN5bSk7Ci0rICAgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAw OwotK30KLSsKLSBzdHJ1Y3QgYnVpbGRfaWQKLSAgIHsKLSAgICAgc2l6ZV90IHNpemU7Ci1AQCAt Nzk3LDYgKzEwNDksOCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgaW50IHN5bWZpbGVfZmxhZ3MpCi0gCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9y ICgpKSk7Ci0gCi0gICAgICAgZWxmX3N5bXRhYl9yZWFkIChvYmpmaWxlLCBTVF9EWU5BTUlDLCBk eW5zeW1jb3VudCwgZHluX3N5bWJvbF90YWJsZSwgMCk7Ci0rCi0rICAgICAgZWxmX3JlbF9wbHRf cmVhZCAob2JqZmlsZSwgZHluX3N5bWJvbF90YWJsZSk7Ci0gICAgIH0KLSAKLSAgIC8qIEFkZCBz eW50aGV0aWMgc3ltYm9scyAtIGZvciBpbnN0YW5jZSwgbmFtZXMgZm9yIGFueSBQTFQgZW50cmll cy4gICovCi1AQCAtODY5LDExICsxMTIzLDkgQEAgZWxmX3N5bWZpbGVfcmVhZCAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIGludCBzeW1maWxlX2ZsYWdzKQotIAkJCQlzdHJfc2VjdC0+ZmlsZXBv cywKLSAJCQkJYmZkX3NlY3Rpb25fc2l6ZSAoYWJmZCwgc3RyX3NlY3QpKTsKLSAgICAgfQotLSAg aWYgKGR3YXJmMl9oYXNfaW5mbyAob2JqZmlsZSkpCi0tICAgIHsKLS0gICAgICAvKiBEV0FSRiAy IHNlY3Rpb25zICovCi0tICAgICAgZHdhcmYyX2J1aWxkX3BzeW10YWJzIChvYmpmaWxlKTsKLS0g ICAgfQotKwotKyAgaWYgKGR3YXJmMl9oYXNfaW5mbyAob2JqZmlsZSkgJiYgZHdhcmYyX2luaXRp YWxpemVfb2JqZmlsZSAob2JqZmlsZSkpCi0rICAgIG9iamZpbGUtPnNmID0gJmVsZl9zeW1fZm5z X2dkYl9pbmRleDsKLSAKLSAgIC8qIElmIHRoZSBmaWxlIGhhcyBpdHMgb3duIHN5bWJvbCB0YWJs ZXMgaXQgaGFzIG5vIHNlcGFyYXRlIGRlYnVnIGluZm8uCi0gICAgICBgLmR5bnN5bScvYC5zeW10 YWInIGdvIHRvIE1TWU1CT0xTLCBgLmRlYnVnX2luZm8nIGdvZXMgdG8gU1lNVEFCUy9QU1lNVEFC Uy4KLUBAIC0xMDQ5LDYgKzEzMDEsMjQgQEAgc3RhdGljIHN0cnVjdCBzeW1fZm5zIGVsZl9zeW1f Zm5zID0KLSAgIE5VTEwJCQkJLyogbmV4dDogcG9pbnRlciB0byBuZXh0IHN0cnVjdCBzeW1fZm5z ICovCi0gfTsKLSAKLSsvKiBUaGUgc2FtZSBhcyBlbGZfc3ltX2ZucywgYnV0IG5vdCByZWdpc3Rl cmVkIGFuZCB1c2VzIHRoZQotKyAgIERXQVJGLXNwZWNpZmljIEdOVSBpbmRleCByYXRoZXIgdGhh biBwc3ltdGFiLiAgKi8KLStzdGF0aWMgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfZ2RiX2lu ZGV4ID0KLSt7Ci0rICBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyLAotKyAgZWxmX25ld19pbml0LAkJ CS8qIHN5bV9uZXdfaW5pdDogaW5pdCBhbnl0aGluZyBnYmwgdG8gZW50aXJlIHN5bWFiICovCi0r ICBlbGZfc3ltZmlsZV9pbml0LAkJLyogc3ltX2luaXQ6IHJlYWQgaW5pdGlhbCBpbmZvLCBzZXR1 cCBmb3Igc3ltX3JlZCgpICovCi0rICBlbGZfc3ltZmlsZV9yZWFkLAkJLyogc3ltX3JlYWQ6IHJl YWQgYSBzeW1ib2wgZmlsZSBpbnRvIHN5bXRhYiAqLwotKyAgZWxmX3N5bWZpbGVfZmluaXNoLAkJ Lyogc3ltX2ZpbmlzaDogZmluaXNoZWQgd2l0aCBmaWxlLCBjbGVhbnVwICovCi0rICBkZWZhdWx0 X3N5bWZpbGVfb2Zmc2V0cywJLyogc3ltX29mZnNldHM6ICBUcmFuc2xhdGUgZXh0LiB0byBpbnQu IHJlbG9jYXRpbiAqLwotKyAgZWxmX3N5bWZpbGVfc2VnbWVudHMsCQkvKiBzeW1fc2VnbWVudHM6 IEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20KLSsJCQkJICAgYSBmaWxlLiAgKi8KLSsgIE5V TEwsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN5bV9yZWFkX2xpbmV0YWJsZSAqLwotKyAg ZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBzeW1fcmVsb2NhdGU6IFJlbG9jYXRlIGEgZGVi dWcgc2VjdGlvbi4gICovCi0rICAmZHdhcmYyX2dkYl9pbmRleF9mdW5jdGlvbnMsCi0rICBOVUxM CQkJCS8qIG5leHQ6IHBvaW50ZXIgdG8gbmV4dCBzdHJ1Y3Qgc3ltX2ZucyAqLwotK307Ci0rCi0g dm9pZAotIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCi0gewotZGlmZiAtLWdpdCBhL2dkYi9l dmFsLmMgYi9nZGIvZXZhbC5jCi1pbmRleCBmZjE3YzM0Li43YjllODcxIDEwMDY0NAotLS0tIGEv Z2RiL2V2YWwuYwotKysrIGIvZ2RiL2V2YWwuYwotQEAgLTQ0LDYgKzQ0LDcgQEAKLSAjaW5jbHVk ZSAib2JqZmlsZXMuaCIKLSAjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJ3 cmFwcGVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotIAotICNpbmNsdWRlICJnZGJfYXNz ZXJ0LmgiCi0gCi1AQCAtNzg4LDYgKzc4OSw3IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotICAgaW50IHNhdmVfcG9zMTsKLSAgIHN0cnVjdCBz eW1ib2wgKmZ1bmN0aW9uID0gTlVMTDsKLSAgIGNoYXIgKmZ1bmN0aW9uX25hbWUgPSBOVUxMOwot KyAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAKLSAgIHBjID0gKCpwb3MpKys7Ci0gICBv cCA9IGV4cC0+ZWx0c1twY10ub3Bjb2RlOwotQEAgLTE3NzIsNiArMTc3NCw4IEBAIGV2YWx1YXRl X3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICByZXR1 cm4gdmFsdWVfemVybyAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwK LSAJCQkJIG5vdF9sdmFsKTsKLSAJICAgIH0KLSsJICBlbHNlIGlmIChUWVBFX0dOVV9JRlVOQyAo ZnR5cGUpKQotKwkgICAgcmV0dXJuIGFsbG9jYXRlX3ZhbHVlIChUWVBFX1RBUkdFVF9UWVBFIChU WVBFX1RBUkdFVF9UWVBFIChmdHlwZSkpKTsKLSAJICBlbHNlIGlmIChUWVBFX1RBUkdFVF9UWVBF IChmdHlwZSkpCi0gCSAgICByZXR1cm4gYWxsb2NhdGVfdmFsdWUgKFRZUEVfVEFSR0VUX1RZUEUg KGZ0eXBlKSk7Ci0gCSAgZWxzZQotQEAgLTE3OTgsNiArMTgwMiw4IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAotICAgICAgIC8qIEZpcnN0 IGRldGVybWluZSB0aGUgdHlwZSBjb2RlIHdlIGFyZSBkZWFsaW5nIHdpdGguICAqLwotICAgICAg IGFyZzEgPSBldmFsdWF0ZV9zdWJleHAgKE5VTExfVFlQRSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0r ICAgICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAg IG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0 eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGNvZGUgPSBU WVBFX0NPREUgKHR5cGUpOwotIAotQEAgLTE4MTgsNiArMTgyNCw3IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICBjb2RlID0gVFlQ RV9DT0RFICh0eXBlKTsKLSAJICAgIH0KLSAJfSAKLSsgICAgICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKLSAKLSAgICAgICBzd2l0Y2ggKGNvZGUpCi0gCXsKLUBAIC0yMjU0LDEzICsyMjYxLDE5 IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAot ICAgICAgIHsKLSAJaW50IHN1YnNjcmlwdF9hcnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLSAJaW50 IGFycmF5X3NpemVfYXJyYXlbTUFYX0ZPUlRSQU5fRElNU107Ci0rCWludCBieXRlX3N0cmlkZV9h cnJheVtNQVhfRk9SVFJBTl9ESU1TXTsKLSAJaW50IG5kaW1lbnNpb25zID0gMSwgaTsKLSAJc3Ry dWN0IHR5cGUgKnRtcF90eXBlOwotIAlpbnQgb2Zmc2V0X2l0ZW07CS8qIFRoZSBhcnJheSBvZmZz ZXQgd2hlcmUgdGhlIGl0ZW0gbGl2ZXMgKi8KLSsJQ09SRV9BRERSIG9mZnNldF9ieXRlOwkvKiBi eXRlX3N0cmlkZSBiYXNlZCBvZmZzZXQgICovCi0rCXVuc2lnbmVkIGVsZW1lbnRfc2l6ZTsKLSAK LSAJaWYgKG5hcmdzID4gTUFYX0ZPUlRSQU5fRElNUykKLSAJICBlcnJvciAoXygiVG9vIG1hbnkg c3Vic2NyaXB0cyBmb3IgRjc3ICglZCBNYXgpIiksIE1BWF9GT1JUUkFOX0RJTVMpOwotIAotKwlv bGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwgMCk7Ci0rCW9iamVjdF9hZGRy ZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSsKLSAJdG1wX3R5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci0gCW5kaW1lbnNpb25zID0gY2FsY19mNzdf YXJyYXlfZGltcyAodHlwZSk7Ci0gCi1AQCAtMjI5MCw2ICsyMzAzLDkgQEAgZXZhbHVhdGVfc3Vi ZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gCSAgICB1cHBlciA9IGY3 N19nZXRfdXBwZXJib3VuZCAodG1wX3R5cGUpOwotIAkgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2Vy Ym91bmQgKHRtcF90eXBlKTsKLSAKLSsJICAgIGJ5dGVfc3RyaWRlX2FycmF5W25hcmdzIC0gaSAt IDFdID0KLSsJCQkJCVRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUgKHRtcF90eXBlKTsKLSsK LSAJICAgIGFycmF5X3NpemVfYXJyYXlbbmFyZ3MgLSBpIC0gMV0gPSB1cHBlciAtIGxvd2VyICsg MTsKLSAKLSAJICAgIC8qIFplcm8tbm9ybWFsaXplIHN1YnNjcmlwdHMgc28gdGhhdCBvZmZzZXR0 aW5nIHdpbGwgd29yay4gKi8KLUBAIC0yMzA4LDEzICsyMzI0LDI1IEBAIGV2YWx1YXRlX3N1YmV4 cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAotIAkgICAgICB0bXBfdHlwZSA9 IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHRtcF90eXBlKSk7Ci0gCSAgfQotIAot KwkvKiBLZXB0IGZvciB0aGUgZjc3X2dldF91cHBlcmJvdW5kIC8gZjc3X2dldF9sb3dlcmJvdW5k IGNhbGxzIGFib3ZlLiAgKi8KLSsJZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCi0gCS8qIE5v dyBsZXQgdXMgY2FsY3VsYXRlIHRoZSBvZmZzZXQgZm9yIHRoaXMgaXRlbSAqLwotIAotLQlvZmZz ZXRfaXRlbSA9IHN1YnNjcmlwdF9hcnJheVtuZGltZW5zaW9ucyAtIDFdOwotKwlvZmZzZXRfaXRl bSA9IDA7Ci0rCW9mZnNldF9ieXRlID0gMDsKLSsKLSsJZm9yIChpID0gbmRpbWVuc2lvbnMgLSAx OyBpID49IDA7IC0taSkKLSsJICB7Ci0rCSAgICBvZmZzZXRfaXRlbSAqPSBhcnJheV9zaXplX2Fy cmF5W2ldOwotKwkgICAgaWYgKGJ5dGVfc3RyaWRlX2FycmF5W2ldID09IDApCi0rCSAgICAgIG9m ZnNldF9pdGVtICs9IHN1YnNjcmlwdF9hcnJheVtpXTsKLSsJICAgIGVsc2UKLSsJICAgICAgb2Zm c2V0X2J5dGUgKz0gc3Vic2NyaXB0X2FycmF5W2ldICogYnl0ZV9zdHJpZGVfYXJyYXlbaV07Ci0r CSAgfQotIAotLQlmb3IgKGkgPSBuZGltZW5zaW9ucyAtIDE7IGkgPiAwOyAtLWkpCi0tCSAgb2Zm c2V0X2l0ZW0gPQotLQkgICAgYXJyYXlfc2l6ZV9hcnJheVtpIC0gMV0gKiBvZmZzZXRfaXRlbSAr IHN1YnNjcmlwdF9hcnJheVtpIC0gMV07Ci0rCWVsZW1lbnRfc2l6ZSA9IFRZUEVfTEVOR1RIIChU WVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSkpOwotKwlvZmZzZXRfYnl0ZSArPSBvZmZzZXRfaXRl bSAqIGVsZW1lbnRfc2l6ZTsKLSAKLSAJLyogTGV0IHVzIG5vdyBwbGF5IGEgZGlydHkgdHJpY2s6 IHdlIHdpbGwgdGFrZSBhcmcxIAotIAkgICB3aGljaCBpcyBhIHZhbHVlIG5vZGUgcG9pbnRpbmcg dG8gdGhlIHRvcG1vc3QgbGV2ZWwKLUBAIC0yMzI0LDcgKzIzNTIsNyBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAgcmV0dXJucyB0aGUg Y29ycmVjdCB0eXBlIHZhbHVlICovCi0gCi0gCWRlcHJlY2F0ZWRfc2V0X3ZhbHVlX3R5cGUgKGFy ZzEsIHRtcF90eXBlKTsKLS0JcmV0dXJuIHZhbHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoYXJnMSwg b2Zmc2V0X2l0ZW0sIDApOwotKwlyZXR1cm4gdmFsdWVfc3Vic2NyaXB0ZWRfcnZhbHVlIChhcmcx LCBvZmZzZXRfYnl0ZSk7Ci0gICAgICAgfQotIAotICAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5E OgotQEAgLTI1NTgsMTQgKzI1ODYsMjIgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1 Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCi0gICAgICAgaWYgKGV4cGVjdF90eXBlICYmIFRZUEVfQ09E RSAoZXhwZWN0X3R5cGUpID09IFRZUEVfQ09ERV9QVFIpCi0gCWV4cGVjdF90eXBlID0gVFlQRV9U QVJHRVRfVFlQRSAoY2hlY2tfdHlwZWRlZiAoZXhwZWN0X3R5cGUpKTsKLSAgICAgICBhcmcxID0g ZXZhbHVhdGVfc3ViZXhwIChleHBlY3RfdHlwZSwgZXhwLCBwb3MsIG5vc2lkZSk7Ci0rICAgICAg b2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwotKyAgICAgIG9iamVj dF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKGFyZzEpKTsKLSAgICAgICB0eXBlID0g Y2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnMSkpOwotICAgICAgIGlmIChUWVBFX0NPREUg KHR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0RQVFIKLSAJICB8fCBUWVBFX0NPREUgKHR5cGUpID09 IFRZUEVfQ09ERV9NRU1CRVJQVFIpCi0gCWVycm9yIChfKCJBdHRlbXB0IHRvIGRlcmVmZXJlbmNl IHBvaW50ZXIgdG8gbWVtYmVyIHdpdGhvdXQgYW4gb2JqZWN0IikpOwotICAgICAgIGlmIChub3Np ZGUgPT0gRVZBTF9TS0lQKQotLQlnb3RvIG5vc2lkZXJldDsKLSsJewotKwkgIGRvX2NsZWFudXBz IChvbGRfY2hhaW4pOwotKwkgIGdvdG8gbm9zaWRlcmV0OwotKwl9Ci0gICAgICAgaWYgKHVub3Bf dXNlcl9kZWZpbmVkX3AgKG9wLCBhcmcxKSkKLS0JcmV0dXJuIHZhbHVlX3hfdW5vcCAoYXJnMSwg b3AsIG5vc2lkZSk7Ci0rCXsKLSsJICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsJICByZXR1 cm4gdmFsdWVfeF91bm9wIChhcmcxLCBvcCwgbm9zaWRlKTsKLSsJfQotICAgICAgIGVsc2UgaWYg KG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykKLSAJewotIAkgIHR5cGUgPSBjaGVj a190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAtMjU3NCwxMiArMjYxMCwxOCBAQCBl dmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKLSAJICAv KiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2UgYW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAg Ki8KLSAJICAgICAgfHwgVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKLSAJICAg ICkKLS0JICAgIHJldHVybiB2YWx1ZV96ZXJvIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLS0J CQkgICAgICAgbHZhbF9tZW1vcnkpOwotKwkgICAgewotKwkgICAgICBkb19jbGVhbnVwcyAob2xk X2NoYWluKTsKLSsJICAgICAgcmV0dXJuIHZhbHVlX3plcm8gKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpLAotKwkJCQkgbHZhbF9tZW1vcnkpOwotKwkgICAgfQotIAkgIGVsc2UgaWYgKFRZUEVfQ09E RSAodHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkKLS0JICAgIC8qIEdEQiBhbGxvd3MgZGVyZWZlcmVu Y2luZyBhbiBpbnQuICAqLwotLQkgICAgcmV0dXJuIHZhbHVlX3plcm8gKGJ1aWx0aW5fdHlwZSAo ZXhwLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQsCi0tCQkJICAgICAgIGx2YWxfbWVtb3J5KTsKLSsJ ICAgIHsKLSsJICAgICAgZG9fY2xlYW51cHMgKG9sZF9jaGFpbik7Ci0rCSAgICAgIC8qIEdEQiBh bGxvd3MgZGVyZWZlcmVuY2luZyBhbiBpbnQuICAqLwotKwkgICAgICByZXR1cm4gdmFsdWVfemVy byAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2ludCwKLSsJCQkJIGx2YWxf bWVtb3J5KTsKLSsJICAgIH0KLSAJICBlbHNlCi0gCSAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0 YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikpOwotIAl9Ci1AQCAtMjU4OSw5 ICsyNjMxLDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVj dF90eXBlLAotIAkgZG8uICAibG9uZyBsb25nIiB2YXJpYWJsZXMgYXJlIHJhcmUgZW5vdWdoIHRo YXQKLSAJIEJVSUxUSU5fVFlQRV9MT05HRVNUIHdvdWxkIHNlZW0gdG8gYmUgYSBtaXN0YWtlLiAg Ki8KLSAgICAgICBpZiAoVFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfSU5UKQotLQlyZXR1 cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFyY2gpLT5idWlsdGluX2lu dCwKLS0JCQkgICAgICAoQ09SRV9BRERSKSB2YWx1ZV9hc19hZGRyZXNzIChhcmcxKSk7Ci0tICAg ICAgcmV0dXJuIHZhbHVlX2luZCAoYXJnMSk7Ci0rCXsKLSsJICBkb19jbGVhbnVwcyAob2xkX2No YWluKTsKLSsJICByZXR1cm4gdmFsdWVfYXRfbGF6eSAoYnVpbHRpbl90eXBlIChleHAtPmdkYmFy Y2gpLT5idWlsdGluX2ludCwKLSsJCQkJKENPUkVfQUREUikgdmFsdWVfYXNfYWRkcmVzcyAoYXJn MSkpOwotKwl9Ci0rICAgICAgYXJnMSA9IHZhbHVlX2luZCAoYXJnMSk7Ci0rICAgICAgZG9fY2xl YW51cHMgKG9sZF9jaGFpbik7Ci0rICAgICAgcmV0dXJuIGFyZzE7Ci0gCi0gICAgIGNhc2UgVU5P UF9BRERSOgotICAgICAgIC8qIEMrKzogY2hlY2sgZm9yIGFuZCBoYW5kbGUgcG9pbnRlciB0byBt ZW1iZXJzLiAgKi8KLUBAIC0yOTMzLDcgKzI5ODAsNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9j b2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKLSB7Ci0gICBlbnVtIGV4cF9vcGNvZGUg b3A7Ci0gICBpbnQgcGM7Ci0tICBzdHJ1Y3QgdmFsdWUgKnZhbDsKLSsgIHN0cnVjdCB2YWx1ZSAq dmFsID0gTlVMTDsKLSAgIHN0cnVjdCBzeW1ib2wgKnZhcjsKLSAgIHN0cnVjdCB0eXBlICp0eXBl OwotIAotQEAgLTI5NDQsMTIgKzI5OTEsMTcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNp b24gKHN0cnVjdCBleHByZXNzaW9uICpleHAsCi0gICAgIHsKLSAgICAgY2FzZSBPUF9WQVJfVkFM VUU6Ci0gICAgICAgdmFyID0gZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sOwotKyAgICAgIC8qIGFk ZHJlc3Nfb2ZfdmFyaWFibGUgd2lsbCBjYWxsIG9iamVjdF9hZGRyZXNzX3NldCBmb3IgY2hlY2tf dHlwZWRlZi4KLSsJIENhbGwgaXQgb25seSBpZiByZXF1aXJlZCBhcyBpdCBjYW4gZXJyb3Itb3V0 IG9uIFZBUiBpbiByZWdpc3Rlci4gICovCi0rICAgICAgaWYgKFRZUEVfRFlOQU1JQyAoU1lNQk9M X1RZUEUgKHZhcikpKQotKwl2YWwgPSBhZGRyZXNzX29mX3ZhcmlhYmxlICh2YXIsIGV4cC0+ZWx0 c1twYyArIDFdLmJsb2NrKTsKLSAgICAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAoU1lNQk9MX1RZ UEUgKHZhcikpOwotICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9BUlJB WQotIAkgICYmIENBU1RfSVNfQ09OVkVSU0lPTiAoZXhwLT5sYW5ndWFnZV9kZWZuKSkKLSAJewot IAkgICgqcG9zKSArPSA0OwotLQkgIHZhbCA9IGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHZhciwgZXhw LT5lbHRzW3BjICsgMV0uYmxvY2spOwotKwkgIGlmICghdmFsKQotKwkgICAgdmFsID0gYWRkcmVz c19vZl92YXJpYWJsZSAodmFyLCBleHAtPmVsdHNbcGMgKyAxXS5ibG9jayk7Ci0gCSAgcmV0dXJu IHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUp KSwKLSAJCQkgICAgIHZhbCk7Ci0gCX0KLUBAIC0zMDAxLDkgKzMwNTMsMTMgQEAgZXZhbHVhdGVf c3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCAqcG9zKQotIAot ICAgICBjYXNlIE9QX1ZBUl9WQUxVRToKLSAgICAgICAoKnBvcykgKz0gNDsKLS0gICAgICB0eXBl ID0gY2hlY2tfdHlwZWRlZiAoU1lNQk9MX1RZUEUgKGV4cC0+ZWx0c1twYyArIDJdLnN5bWJvbCkp OwotLSAgICAgIHJldHVybgotLQl2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdF U1QpIFRZUEVfTEVOR1RIICh0eXBlKSk7Ci0rICAgICAgLyogV2UgZG8gbm90IG5lZWQgdG8gY2Fs bCByZWFkX3Zhcl92YWx1ZSBidXQgdGhlIG9iamVjdCBldmFsdWF0aW9uIG1heQotKwkgbmVlZCB0 byBoYXZlIGV4ZWN1dGVkIG9iamVjdF9hZGRyZXNzX3NldCB3aGljaCBuZWVkcyB2YWxpZAotKwkg U1lNQk9MX1ZBTFVFX0FERFJFU1Mgb2YgdGhlIHN5bWJvbC4gIFN0aWxsIFZBTFVFIHJldHVybmVk IGJ5Ci0rCSByZWFkX3Zhcl92YWx1ZSB3ZSBsZWZ0IGFzIGxhenkuICAqLwotKyAgICAgIHR5cGUg PSB2YWx1ZV90eXBlIChyZWFkX3Zhcl92YWx1ZSAoZXhwLT5lbHRzW3BjICsgMl0uc3ltYm9sLAot KwkJCQkJZGVwcmVjYXRlZF9zYWZlX2dldF9zZWxlY3RlZF9mcmFtZSAoKSkpOwotKyAgICAgIHJl dHVybiB2YWx1ZV9mcm9tX2xvbmdlc3QgKHNpemVfdHlwZSwgKExPTkdFU1QpIFRZUEVfTEVOR1RI ICh0eXBlKSk7Ci0gCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgdmFsID0gZXZhbHVhdGVfc3ViZXhw IChOVUxMX1RZUEUsIGV4cCwgcG9zLCBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUyk7Ci1kaWZmIC0t Z2l0IGEvZ2RiL2YtbGFuZy5oIGIvZ2RiL2YtbGFuZy5oCi1pbmRleCBmNWJiODJkLi4yOWNmNWJh IDEwMDY0NAotLS0tIGEvZ2RiL2YtbGFuZy5oCi0rKysgYi9nZGIvZi1sYW5nLmgKLUBAIC0yOCw2 ICsyOCwxMCBAQCBleHRlcm4gdm9pZCBmX2Vycm9yIChjaGFyICopOwkvKiBEZWZpbmVkIGluIGYt ZXhwLnkgKi8KLSBleHRlcm4gdm9pZCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICosIGNvbnN0 IGNoYXIgKiwgc3RydWN0IHVpX2ZpbGUgKiwgaW50LAotIAkJCSAgaW50KTsKLSAKLStleHRlcm4g Y29uc3QgY2hhciAqZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbQot KyAgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKTsKLStleHRlcm4g dm9pZCBmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJyb3IgKHN0cnVjdCB0eXBlICp0 eXBlKTsKLSsKLSBleHRlcm4gaW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBn ZGJfYnl0ZSAqLCBpbnQsIENPUkVfQUREUiwKLSAJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCi0g CQkJY29uc3Qgc3RydWN0IHZhbHVlICosCi1kaWZmIC0tZ2l0IGEvZ2RiL2YtdHlwZXByaW50LmMg Yi9nZGIvZi10eXBlcHJpbnQuYwotaW5kZXggZDM1YTI1NS4uZGVjODFkNSAxMDA2NDQKLS0tLSBh L2dkYi9mLXR5cGVwcmludC5jCi0rKysgYi9nZGIvZi10eXBlcHJpbnQuYwotQEAgLTMyLDcgKzMy LDcgQEAKLSAjaW5jbHVkZSAiZ2RiY29yZS5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5j bHVkZSAiZi1sYW5nLmgiCi0tCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotICNpbmNsdWRlICJn ZGJfc3RyaW5nLmgiCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1AQCAtNDksNiArNDksMzQgQEAg dm9pZCBmX3R5cGVfcHJpbnRfdmFyc3BlY19wcmVmaXggKHN0cnVjdCB0eXBlICosIHN0cnVjdCB1 aV9maWxlICosCi0gdm9pZCBmX3R5cGVfcHJpbnRfYmFzZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0 IHVpX2ZpbGUgKiwgaW50LCBpbnQpOwotIAwKLSAKLStjb25zdCBjaGFyICoKLStmX29iamVjdF9h ZGRyZXNzX2RhdGFfdmFsaWRfcHJpbnRfdG9fc3RyZWFtIChzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJ CQkJCSAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSt7Ci0rICBjb25zdCBjaGFyICptc2c7 Ci0rCi0rICBtc2cgPSBvYmplY3RfYWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSk7Ci0rICBp ZiAobXNnICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBBc3N1bWluZyB0aGUgY29udGVudCBw cmludGVkIHRvIFNUUkVBTSBzaG91bGQgbm90IGJlIGxvY2FsaXplZC4gICovCi0rICAgICAgZnBy aW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiPCVzPiIsIG1zZyk7Ci0rICAgIH0KLSsKLSsgIHJldHVy biBtc2c7Ci0rfQotKwotK3ZvaWQKLStmX29iamVjdF9hZGRyZXNzX2RhdGFfdmFsaWRfb3JfZXJy b3IgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGNvbnN0IGNoYXIgKm1zZzsKLSsKLSsgIG1z ZyA9IG9iamVjdF9hZGRyZXNzX2RhdGFfbm90X3ZhbGlkICh0eXBlKTsKLSsgIGlmIChtc2cgIT0g TlVMTCkKLSsgICAgewotKyAgICAgIGVycm9yIChfKCJDYW5ub3QgYWNjZXNzIGl0IGJlY2F1c2Ug dGhlICVzLiIpLCBfKG1zZykpOwotKyAgICB9Ci0rfQotKwotIC8qIExFVkVMIGlzIHRoZSBkZXB0 aCB0byBpbmRlbnQgbGluZXMgYnkuICAqLwotIAotIHZvaWQKLUBAIC01OCw2ICs4Niw5IEBAIGZf cHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGNoYXIgKnZhcnN0cmluZywgc3Ry dWN0IHVpX2ZpbGUgKnN0cmVhbSwKLSAgIGVudW0gdHlwZV9jb2RlIGNvZGU7Ci0gICBpbnQgZGVt YW5nbGVkX2FyZ3M7Ci0gCi0rICBpZiAoZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX3ByaW50 X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAgICByZXR1cm47Ci0rCi0gICBm X3R5cGVfcHJpbnRfYmFzZSAodHlwZSwgc3RyZWFtLCBzaG93LCBsZXZlbCk7Ci0gICBjb2RlID0g VFlQRV9DT0RFICh0eXBlKTsKLSAgIGlmICgodmFyc3RyaW5nICE9IE5VTEwgJiYgKnZhcnN0cmlu ZyAhPSAnXDAnKQotQEAgLTE2NSw2ICsxOTYsOSBAQCBmX3R5cGVfcHJpbnRfdmFyc3BlY19zdWZm aXggKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtLAotIAotICAgUVVJ VDsKLSAKLSsgIGlmIChUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9UWVBFREVGKQotKyAg ICBDSEVDS19UWVBFREVGICh0eXBlKTsKLSsKLSAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkK LSAgICAgewotICAgICBjYXNlIFRZUEVfQ09ERV9BUlJBWToKLWRpZmYgLS1naXQgYS9nZGIvZi12 YWxwcmludC5jIGIvZ2RiL2YtdmFscHJpbnQuYwotaW5kZXggODVmNjk4ZC4uMmY3MmI5NyAxMDA2 NDQKLS0tLSBhL2dkYi9mLXZhbHByaW50LmMKLSsrKyBiL2dkYi9mLXZhbHByaW50LmMKLUBAIC01 NCwxNSArNTQsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFOX0RJTVMg KyAxXVsyXTsKLSAvKiBUaGUgZm9sbG93aW5nIG1hY3JvIGdpdmVzIHVzIHRoZSBzaXplIG9mIHRo ZSBudGggZGltZW5zaW9uLCBXaGVyZSAKLSAgICBuIGlzIDEgYmFzZWQuICovCi0gCi0tI2RlZmlu ZSBGNzdfRElNX1NJWkUobikgKGY3N19hcnJheV9vZmZzZXRfdGJsW25dWzFdKQotKyNkZWZpbmUg Rjc3X0RJTV9DT1VOVChuKSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMV0pCi0gCi0tLyogVGhl IGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgb2Zmc2V0IGZvciByb3cgbiB3aGVyZSBuIGlzIDEtYmFz ZWQuICovCi0rLyogVGhlIGZvbGxvd2luZyBnaXZlcyB1cyB0aGUgZWxlbWVudCBzaXplIGZvciBy b3cgbiB3aGVyZSBuIGlzIDEtYmFzZWQuICovCi0gCi0tI2RlZmluZSBGNzdfRElNX09GRlNFVChu KSAoZjc3X2FycmF5X29mZnNldF90Ymxbbl1bMF0pCi0rI2RlZmluZSBGNzdfRElNX0JZVEVfU1RS SURFKG4pIChmNzdfYXJyYXlfb2Zmc2V0X3RibFtuXVswXSkKLSAKLSBpbnQKLSBmNzdfZ2V0X2xv d2VyYm91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIHsKLSsgIGZfb2JqZWN0X2FkZHJlc3NfZGF0 YV92YWxpZF9vcl9lcnJvciAodHlwZSk7Ci0rCi0gICBpZiAoVFlQRV9BUlJBWV9MT1dFUl9CT1VO RF9JU19VTkRFRklORUQgKHR5cGUpKQotICAgICBlcnJvciAoXygiTG93ZXIgYm91bmQgbWF5IG5v dCBiZSAnKicgaW4gRjc3IikpOwotIAotQEAgLTcyLDE0ICs3NCwxNyBAQCBmNzdfZ2V0X2xvd2Vy Ym91bmQgKHN0cnVjdCB0eXBlICp0eXBlKQotIGludAotIGY3N19nZXRfdXBwZXJib3VuZCAoc3Ry dWN0IHR5cGUgKnR5cGUpCi0gewotKyAgZl9vYmplY3RfYWRkcmVzc19kYXRhX3ZhbGlkX29yX2Vy cm9yICh0eXBlKTsKLSsKLSAgIGlmIChUWVBFX0FSUkFZX1VQUEVSX0JPVU5EX0lTX1VOREVGSU5F RCAodHlwZSkpCi0gICAgIHsKLS0gICAgICAvKiBXZSBoYXZlIGFuIGFzc3VtZWQgc2l6ZSBhcnJh eSBvbiBvdXIgaGFuZHMuICBBc3N1bWUgdGhhdAotLQkgdXBwZXJfYm91bmQgPT0gbG93ZXJfYm91 bmQgc28gdGhhdCB3ZSBzaG93IGF0IGxlYXN0IDEgZWxlbWVudC4KLS0JIElmIHRoZSB1c2VyIHdh bnRzIHRvIHNlZSBtb3JlIGVsZW1lbnRzLCBsZXQgaGltIG1hbnVhbGx5IGFzayBmb3IgJ2VtCi0t CSBhbmQgd2UnbGwgc3Vic2NyaXB0IHRoZSBhcnJheSBhbmQgc2hvdyBoaW0uICAqLwotKyAgICAg IC8qIFdlIGhhdmUgYW4gYXNzdW1lZCBzaXplIGFycmF5IG9uIG91ciBoYW5kcy4gIEFzIHR5cGVf bGVuZ3RoX2dldAotKwkgYWxyZWFkeSBhc3N1bWVzIGEgbGVuZ3RoIHplcm8gb2YgYXJyYXlzIHdp dGggdW5kZXJmaW5lZCBib3VuZHMgVkFMQUREUgotKwkgcGFzc2VkIHRvIHRoZSBGb3J0cmFuIGZ1 bmN0aW9ucyBkb2VzIG5vdCBjb250YWluZWQgdGhlIHJlYWwgaW5mZXJpb3IKLSsJIG1lbW9yeSBj b250ZW50LiAgVXNlciBzaG91bGQgcmVxdWVzdCBwcmludGluZyBvZiBzcGVjaWZpYyBhcnJheQot KwkgZWxlbWVudHMgaW5zdGVhZC4gICovCi0gCi0tICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJi b3VuZCAodHlwZSk7Ci0rICAgICAgcmV0dXJuIGY3N19nZXRfbG93ZXJib3VuZCAodHlwZSkgLSAx OwotICAgICB9Ci0gCi0gICByZXR1cm4gVFlQRV9BUlJBWV9VUFBFUl9CT1VORF9WQUxVRSAodHlw ZSk7Ci1AQCAtMTM0LDI0ICsxMzksMjkgQEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90 YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQotICAgICAgIHVw cGVyID0gZjc3X2dldF91cHBlcmJvdW5kICh0bXBfdHlwZSk7Ci0gICAgICAgbG93ZXIgPSBmNzdf Z2V0X2xvd2VyYm91bmQgKHRtcF90eXBlKTsKLSAKLS0gICAgICBGNzdfRElNX1NJWkUgKG5kaW1l bikgPSB1cHBlciAtIGxvd2VyICsgMTsKLSsgICAgICBGNzdfRElNX0NPVU5UIChuZGltZW4pID0g dXBwZXIgLSBsb3dlciArIDE7Ci0rCi0rICAgICAgRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVu KSA9Ci0rICAgICAgICBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0bXBfdHlwZSk7Ci0g Ci0gICAgICAgdG1wX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFICh0bXBfdHlwZSk7Ci0gICAgICAg bmRpbWVuKys7Ci0gICAgIH0KLSAKLS0gIC8qIE5vdyB3ZSBtdWx0aXBseSBlbHRsZW4gYnkgYWxs IHRoZSBvZmZzZXRzLCBzbyB0aGF0IGxhdGVyIHdlIAotKyAgLyogTm93IHdlIG11bHRpcGx5IGVs dGxlbiBieSBhbGwgdGhlIEJZVEVfU1RSSURFcywgc28gdGhhdCBsYXRlciB3ZQotICAgICAgY2Fu IHByaW50IG91dCBhcnJheSBlbGVtZW50cyBjb3JyZWN0bHkuICBVcCB0aWxsIG5vdyB3ZSAKLS0g ICAgIGtub3cgYW4gb2Zmc2V0IHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQgd2UgYWxzbyAK LSsgICAgIGtub3cgYW4gZWx0bGVuIHRvIGFwcGx5IHRvIGdldCB0aGUgaXRlbSBidXQgd2UgYWxz bwotICAgICAgaGF2ZSB0byBrbm93IGhvdyBtdWNoIHRvIGFkZCB0byBnZXQgdG8gdGhlIG5leHQg aXRlbSAqLwotIAotICAgbmRpbWVuLS07Ci0gICBlbHRsZW4gPSBUWVBFX0xFTkdUSCAodG1wX3R5 cGUpOwotLSAgRjc3X0RJTV9PRkZTRVQgKG5kaW1lbikgPSBlbHRsZW47Ci0rICBpZiAoRjc3X0RJ TV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAwKQotKyAgICBGNzdfRElNX0JZVEVfU1RSSURFIChu ZGltZW4pID0gZWx0bGVuOwotICAgd2hpbGUgKC0tbmRpbWVuID4gMCkKLSAgICAgewotLSAgICAg IGVsdGxlbiAqPSBGNzdfRElNX1NJWkUgKG5kaW1lbiArIDEpOwotLSAgICAgIEY3N19ESU1fT0ZG U0VUIChuZGltZW4pID0gZWx0bGVuOwotKyAgICAgIGVsdGxlbiAqPSBGNzdfRElNX0NPVU5UIChu ZGltZW4gKyAxKTsKLSsgICAgICBpZiAoRjc3X0RJTV9CWVRFX1NUUklERSAobmRpbWVuKSA9PSAw KQotKwlGNzdfRElNX0JZVEVfU1RSSURFIChuZGltZW4pID0gZWx0bGVuOwotICAgICB9Ci0gfQot IAotQEAgLTE3MiwzNCArMTgyLDM0IEBAIGY3N19wcmludF9hcnJheV8xIChpbnQgbnNzLCBpbnQg bmRpbWVuc2lvbnMsIHN0cnVjdCB0eXBlICp0eXBlLAotIAotICAgaWYgKG5zcyAhPSBuZGltZW5z aW9ucykKLSAgICAgewotLSAgICAgIGZvciAoaSA9IDA7IChpIDwgRjc3X0RJTV9TSVpFIChuc3Mp ICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9tYXgpOyBpKyspCi0rICAgICAgZm9yIChpID0g MDsgKGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBvcHRpb25zLT5wcmludF9t YXgpOyBpKyspCi0gCXsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIoICIpOwotIAkg IGY3N19wcmludF9hcnJheV8xIChuc3MgKyAxLCBuZGltZW5zaW9ucywgVFlQRV9UQVJHRVRfVFlQ RSAodHlwZSksCi0tCQkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1fT0ZGU0VUIChuc3MpLAot LQkJCSAgICAgYWRkcmVzcyArIGkgKiBGNzdfRElNX09GRlNFVCAobnNzKSwKLSsJCQkgICAgIHZh bGFkZHIgKyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwKLSsJCQkgICAgIGFkZHJlc3Mg KyBpICogRjc3X0RJTV9CWVRFX1NUUklERSAobnNzKSwKLSAJCQkgICAgIHN0cmVhbSwgcmVjdXJz ZSwgdmFsLCBvcHRpb25zLCBlbHRzKTsKLSAJICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIp ICIpOwotIAl9Ci0tICAgICAgaWYgKCplbHRzID49IG9wdGlvbnMtPnByaW50X21heCAmJiBpIDwg Rjc3X0RJTV9TSVpFIChuc3MpKSAKLSsgICAgICBpZiAoKmVsdHMgPj0gb3B0aW9ucy0+cHJpbnRf bWF4ICYmIGkgPCBGNzdfRElNX0NPVU5UIChuc3MpKQotIAlmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIuLi4iKTsKLSAgICAgfQotICAgZWxzZQotICAgICB7Ci0tICAgICAgZm9yIChpID0gMDsg aSA8IEY3N19ESU1fU0laRSAobnNzKSAmJiAoKmVsdHMpIDwgb3B0aW9ucy0+cHJpbnRfbWF4Owot KyAgICAgIGZvciAoaSA9IDA7IGkgPCBGNzdfRElNX0NPVU5UIChuc3MpICYmICgqZWx0cykgPCBv cHRpb25zLT5wcmludF9tYXg7Ci0gCSAgIGkrKywgKCplbHRzKSsrKQotIAl7Ci0gCSAgdmFsX3By aW50IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLS0JCSAgICAgdmFsYWRkciArIGkgKiBGNzdf RElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAotKwkJICAgICB2YWxhZGRyICsgaSAqIEY3N19ESU1f QllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAgMCwKLS0JCSAgICAgYWRkcmVzcyAr IGkgKiBGNzdfRElNX09GRlNFVCAobmRpbWVuc2lvbnMpLAotKwkJICAgICBhZGRyZXNzICsgaSAq IEY3N19ESU1fQllURV9TVFJJREUgKG5kaW1lbnNpb25zKSwKLSAJCSAgICAgc3RyZWFtLCByZWN1 cnNlLCB2YWwsIG9wdGlvbnMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotIAotLQkgIGlmIChpICE9IChG NzdfRElNX1NJWkUgKG5zcykgLSAxKSkKLSsJICBpZiAoaSAhPSAoRjc3X0RJTV9DT1VOVCAobnNz KSAtIDEpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLCAiKTsKLSAKLSAJICBp ZiAoKCplbHRzID09IG9wdGlvbnMtPnByaW50X21heCAtIDEpCi0tCSAgICAgICYmIChpICE9IChG NzdfRElNX1NJWkUgKG5zcykgLSAxKSkpCi0rCSAgICAgICYmIChpICE9IChGNzdfRElNX0NPVU5U IChuc3MpIC0gMSkpKQotIAkgICAgZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiLi4uIik7Ci0g CX0KLSAgICAgfQotQEAgLTI1Niw2ICsyNjYsOSBAQCBmX3ZhbF9wcmludCAoc3RydWN0IHR5cGUg KnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLCBpbnQgZW1iZWRkZWRfb2Zmc2V0LAotICAg Q09SRV9BRERSIGFkZHI7Ci0gICBpbnQgaW5kZXg7Ci0gCi0rICBpZiAoZl9vYmplY3RfYWRkcmVz c19kYXRhX3ZhbGlkX3ByaW50X3RvX3N0cmVhbSAodHlwZSwgc3RyZWFtKSAhPSBOVUxMKQotKyAg ICByZXR1cm4gMDsKLSsKLSAgIENIRUNLX1RZUEVERUYgKHR5cGUpOwotICAgc3dpdGNoIChUWVBF X0NPREUgKHR5cGUpKQotICAgICB7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2ZpbmRjbWQuYyBiL2dkYi9m aW5kY21kLmMKLWluZGV4IGFjNjNhOWUuLmU5YmE0NWMgMTAwNjQ0Ci0tLS0gYS9nZGIvZmluZGNt ZC5jCi0rKysgYi9nZGIvZmluZGNtZC5jCi1AQCAtNDUsNiArNDUsNDEgQEAgcHV0X2JpdHMgKGJm ZF91aW50NjRfdCBkYXRhLCBjaGFyICpidWYsIGludCBiaXRzLCBiZmRfYm9vbGVhbiBiaWdfcCkK LSAgICAgfQotIH0KLSAKLSsvKiBBbGxvY2F0ZXMgYSBidWZmZXIgaW4gKlBBVFRFUk5fQlVGLCB3 aXRoIGEgaGFyZC1jb2RlZCBpbml0aWFsIHNpemUgd2hpY2gKLSsgICB3aWxsIGJlIHJldHVybmVk IGluICpQQVRURVJOX0JVRl9TSVpFLiAqUEFUVEVSTl9CVUZfRU5EIHBvaW50cyB0byB0aGUgc2Ft ZQotKyAgIHBsYWNlIGFzICpQQVRURVJOX0JVRiwgaW5kaWNhdGluZyB0aGF0IHRoZSBidWZmZXIg aXMgaW5pdGlhbGx5IGVtcHR5LiAgKi8KLSsKLSt2b2lkCi0rYWxsb2NhdGVfcGF0dGVybl9idWZm ZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZiwgY2hhciAqKnBhdHRlcm5fYnVmX2VuZCwKLSsJCQkgVUxP TkdFU1QgKnBhdHRlcm5fYnVmX3NpemUpCi0rewotKyNkZWZpbmUgSU5JVElBTF9QQVRURVJOX0JV Rl9TSVpFIDEwMAotKyAgKnBhdHRlcm5fYnVmX3NpemUgPSBJTklUSUFMX1BBVFRFUk5fQlVGX1NJ WkU7Ci0rICAqcGF0dGVybl9idWYgPSB4bWFsbG9jICgqcGF0dGVybl9idWZfc2l6ZSk7Ci0rICAq cGF0dGVybl9idWZfZW5kID0gKnBhdHRlcm5fYnVmOwotK30KLSsKLSsvKiBHcm93cyAqUEFUVEVS Tl9CVUYgYnkgYSBmYWN0b3Igb2YgdHdvIGlmIGl0J3Mgbm90IGxhcmdlIGVub3VnaCB0byBob2xk Ci0rICAgVkFMX0JZVEVTIG1vcmUgYnl0ZXMgIG9yIGEgNjQtYml0IHZhbHVlLCB3aGljaGV2ZXIg aXMgbGFyZ2VyLgotKyAgICpQQVRURVJOX0JVRl9FTkQgaXMgdXBkYXRlZCBhcyBuZWNlc3Nhcnku ICAqLwotKwotK3ZvaWQKLStpbmNyZWFzZV9wYXR0ZXJuX2J1ZmZlciAoY2hhciAqKnBhdHRlcm5f YnVmLCBjaGFyICoqcGF0dGVybl9idWZfZW5kLAotKwkJCSBVTE9OR0VTVCAqcGF0dGVybl9idWZf c2l6ZSwgaW50IHZhbF9ieXRlcykKLSt7Ci0rICAgIC8qIEtlZXAgaXQgc2ltcGxlIGFuZCBhc3N1 bWUgc2l6ZSA9PSAnZycgd2hlbiB3YXRjaGluZyBmb3Igd2hlbiB3ZQotKyAgICAgICBuZWVkIHRv IGdyb3cgdGhlIHBhdHRlcm4gYnVmLiAgKi8KLSsgICAgaWYgKCgqcGF0dGVybl9idWZfZW5kIC0g KnBhdHRlcm5fYnVmICsgbWF4ICh2YWxfYnl0ZXMsIHNpemVvZiAoaW50NjRfdCkpKQotKwk+ICpw YXR0ZXJuX2J1Zl9zaXplKQotKyAgICAgIHsKLSsJc2l6ZV90IGN1cnJlbnRfb2Zmc2V0ID0gKnBh dHRlcm5fYnVmX2VuZCAtICpwYXR0ZXJuX2J1ZjsKLSsKLSsJKnBhdHRlcm5fYnVmX3NpemUgKj0g MjsKLSsJKnBhdHRlcm5fYnVmID0geHJlYWxsb2MgKCpwYXR0ZXJuX2J1ZiwgKnBhdHRlcm5fYnVm X3NpemUpOwotKwkqcGF0dGVybl9idWZfZW5kID0gKnBhdHRlcm5fYnVmICsgY3VycmVudF9vZmZz ZXQ7Ci0rICAgICAgfQotK30KLSsKLSAvKiBTdWJyb3V0aW5lIG9mIGZpbmRfY29tbWFuZCB0byBz aW1wbGlmeSBpdC4KLSAgICBQYXJzZSB0aGUgYXJndW1lbnRzIG9mIHRoZSAiZmluZCIgY29tbWFu ZC4gICovCi0gCi1AQCAtNjEsOCArOTYsNyBAQCBwYXJzZV9maW5kX2FyZ3MgKGNoYXIgKmFyZ3Ms IFVMT05HRVNUICptYXhfY291bnRwLAotICAgY2hhciAqcGF0dGVybl9idWY7Ci0gICAvKiBDdXJy ZW50IHNpemUgb2Ygc2VhcmNoIHBhdHRlcm4gYnVmZmVyLgotICAgICAgV2UgcmVhbGxvYyBzcGFj ZSBhcyBuZWVkZWQuICAqLwotLSNkZWZpbmUgSU5JVElBTF9QQVRURVJOX0JVRl9TSVpFIDEwMAot LSAgVUxPTkdFU1QgcGF0dGVybl9idWZfc2l6ZSA9IElOSVRJQUxfUEFUVEVSTl9CVUZfU0laRTsK LSsgIFVMT05HRVNUIHBhdHRlcm5fYnVmX3NpemU7Ci0gICAvKiBQb2ludGVyIHRvIG9uZSBwYXN0 IHRoZSBsYXN0IGluLXVzZSBwYXJ0IG9mIHBhdHRlcm5fYnVmLiAgKi8KLSAgIGNoYXIgKnBhdHRl cm5fYnVmX2VuZDsKLSAgIFVMT05HRVNUIHBhdHRlcm5fbGVuOwotQEAgLTc1LDggKzEwOSw3IEBA IHBhcnNlX2ZpbmRfYXJncyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm1heF9jb3VudHAsCi0gICBp ZiAoYXJncyA9PSBOVUxMKQotICAgICBlcnJvciAoXygiTWlzc2luZyBzZWFyY2ggcGFyYW1ldGVy cy4iKSk7Ci0gCi0tICBwYXR0ZXJuX2J1ZiA9IHhtYWxsb2MgKHBhdHRlcm5fYnVmX3NpemUpOwot LSAgcGF0dGVybl9idWZfZW5kID0gcGF0dGVybl9idWY7Ci0rICBhbGxvY2F0ZV9wYXR0ZXJuX2J1 ZmZlciAoJnBhdHRlcm5fYnVmLCAmcGF0dGVybl9idWZfZW5kLCAmcGF0dGVybl9idWZfc2l6ZSk7 Ci0gICBvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKGZyZWVfY3VycmVudF9jb250ZW50cywg JnBhdHRlcm5fYnVmKTsKLSAKLSAgIC8qIEdldCBzZWFyY2ggZ3JhbnVsYXJpdHkgYW5kL29yIG1h eCBjb3VudCBpZiBzcGVjaWZpZWQuCi1AQCAtMTc1LDE3ICsyMDgsOSBAQCBwYXJzZV9maW5kX2Fy Z3MgKGNoYXIgKmFyZ3MsIFVMT05HRVNUICptYXhfY291bnRwLAotICAgICAgIHYgPSBwYXJzZV90 b19jb21tYV9hbmRfZXZhbCAoJnMpOwotICAgICAgIHZhbF9ieXRlcyA9IFRZUEVfTEVOR1RIICh2 YWx1ZV90eXBlICh2KSk7Ci0gCi0tICAgICAgLyogS2VlcCBpdCBzaW1wbGUgYW5kIGFzc3VtZSBz aXplID09ICdnJyB3aGVuIHdhdGNoaW5nIGZvciB3aGVuIHdlCi0tCSBuZWVkIHRvIGdyb3cgdGhl IHBhdHRlcm4gYnVmLiAgKi8KLS0gICAgICBpZiAoKHBhdHRlcm5fYnVmX2VuZCAtIHBhdHRlcm5f YnVmICsgbWF4ICh2YWxfYnl0ZXMsIHNpemVvZiAoaW50NjRfdCkpKQotLQkgID4gcGF0dGVybl9i dWZfc2l6ZSkKLS0JewotLQkgIHNpemVfdCBjdXJyZW50X29mZnNldCA9IHBhdHRlcm5fYnVmX2Vu ZCAtIHBhdHRlcm5fYnVmOwotKyAgICAgIGluY3JlYXNlX3BhdHRlcm5fYnVmZmVyICgmcGF0dGVy bl9idWYsICZwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgICZwYXR0ZXJuX2J1Zl9zaXplLCB2 YWxfYnl0ZXMpOwotIAotLQkgIHBhdHRlcm5fYnVmX3NpemUgKj0gMjsKLS0JICBwYXR0ZXJuX2J1 ZiA9IHhyZWFsbG9jIChwYXR0ZXJuX2J1ZiwgcGF0dGVybl9idWZfc2l6ZSk7Ci0tCSAgcGF0dGVy bl9idWZfZW5kID0gcGF0dGVybl9idWYgKyBjdXJyZW50X29mZnNldDsKLS0JfQotIAotICAgICAg IGlmIChzaXplICE9ICdcMCcpCi0gCXsKLUBAIC0yNDAsNiArMjY1LDQ1IEBAIHBhcnNlX2ZpbmRf YXJncyAoY2hhciAqYXJncywgVUxPTkdFU1QgKm1heF9jb3VudHAsCi0gICBkaXNjYXJkX2NsZWFu dXBzIChvbGRfY2xlYW51cHMpOwotIH0KLSAKLSsvKiBEcml2ZXMgdGFyZ2V0X3NlYXJjaF9tZW1v cnkgdG8gc3dlZXAgdGhyb3VnaCB0aGUgc3BlY2lmaWVkIHNlYXJjaCBzcGFjZSwKLSsgICBwb3Nz aWJseSBpbiBzZXZlcmFsIGl0ZXJhdGlvbnMgKHdpdGggb25lIGNhbGwgdG8gdGhpcyBmdW5jdGlv biBmb3IgZWFjaAotKyAgIGl0ZXJhdGlvbikuICAqU1RBUlRfQUREUiBpcyB0aGUgYWRkcmVzcyB3 aGVyZSB0aGUgc2VhcmNoIHN0YXJ0cywgYW5kIGlzCi0rICAgdXBkYXRlZCB0byB0aGUgbmV4dCBz dGFydGluZyBhZGRyZXNzIHRvIGNvbnRpbnVlIHRoZSBzZWFyY2guCi0rICAgKlNFQVJDSF9TUEFD RV9MRU4gaXMgdGhlIGFtb3VudCBvZiBieXRlcyB3aGljaCB3aWxsIGJlIHNlYXJjaGVkLCBhbmQg aXMKLSsgICB1cGRhdGVkIGZvciB0aGUgbmV4dCBpdGVyYXRpb24uIFBBVFRFUk5fQlVGIGhvbGRz IHRoZSBwYXR0ZXJuIHRvIGJlIHNlYXJjaGVkCi0rICAgZm9yLCBQQVRURVJOX0xFTiBpcyB0aGUg c2l6ZSBvZiB0aGUgcGF0dGVybiBpbiBieXRlcy4gIElmIGEgbWF0Y2ggaXMgZm91bmQsCi0rICAg aXQncyBhZGRyZXNzIGlzIHB1dCBpbiAqRk9VTkRfQUREUi4KLSsKLSsgICBSZXR1cm5zIDEgaWYg Zm91bmQsIDAgaWYgbm90IGZvdW5kLCBhbmQgLTEgaWYgdGhlcmUgd2FzIGFuIGVycm9yIHJlcXVp cmluZwotKyAgIGhhbHRpbmcgb2YgdGhlIHNlYXJjaCAoZS5nLiBtZW1vcnkgcmVhZCBlcnJvciku ICAqLwotKwotK2ludAotK3NlYXJjaF9tZW1vcnkgKENPUkVfQUREUiAqc3RhcnRfYWRkciwgVUxP TkdFU1QgKnNlYXJjaF9zcGFjZV9sZW4sCi0rCSAgICAgICBjb25zdCBjaGFyICpwYXR0ZXJuX2J1 ZiwgVUxPTkdFU1QgcGF0dGVybl9sZW4sCi0rCSAgICAgICBDT1JFX0FERFIgKmZvdW5kX2FkZHIp Ci0rewotKyAgLyogT2Zmc2V0IGZyb20gc3RhcnQgb2YgdGhpcyBpdGVyYXRpb24gdG8gdGhlIG5l eHQgaXRlcmF0aW9uLiAgKi8KLSsgIFVMT05HRVNUIG5leHRfaXRlcl9pbmNyOwotKyAgaW50IGZv dW5kOwotKyAgICAKLSsgIGZvdW5kID0gdGFyZ2V0X3NlYXJjaF9tZW1vcnkgKCpzdGFydF9hZGRy LCAqc2VhcmNoX3NwYWNlX2xlbiwKLSsJCQkJcGF0dGVybl9idWYsIHBhdHRlcm5fbGVuLCBmb3Vu ZF9hZGRyKTsKLSsgIGlmIChmb3VuZCA8PSAwKQotKyAgICByZXR1cm4gZm91bmQ7Ci0rCi0rICAv KiBCZWdpbiBuZXh0IGl0ZXJhdGlvbiBhdCBvbmUgYnl0ZSBwYXN0IHRoaXMgbWF0Y2guICAqLwot KyAgbmV4dF9pdGVyX2luY3IgPSAoKmZvdW5kX2FkZHIgLSAqc3RhcnRfYWRkcikgKyAxOwotKwot KyAgLyogRm9yIHJvYnVzdG5lc3MsIHdlIGRvbid0IGxldCBzZWFyY2hfc3BhY2VfbGVuIGdvIC12 ZSBoZXJlLiAgKi8KLSsgIGlmICgqc2VhcmNoX3NwYWNlX2xlbiA+PSBuZXh0X2l0ZXJfaW5jcikK LSsgICAgKnNlYXJjaF9zcGFjZV9sZW4gLT0gbmV4dF9pdGVyX2luY3I7Ci0rICBlbHNlCi0rICAg ICpzZWFyY2hfc3BhY2VfbGVuID0gMDsKLSsgICpzdGFydF9hZGRyICs9IG5leHRfaXRlcl9pbmNy OwotKwotKyAgcmV0dXJuIGZvdW5kOwotK30KLSsKLSBzdGF0aWMgdm9pZAotIGZpbmRfY29tbWFu ZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KQotIHsKLUBAIC0yNzAsMTIgKzMzNCwxMSBAQCBm aW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgIHdoaWxlIChzZWFyY2hf c3BhY2VfbGVuID49IHBhdHRlcm5fbGVuCi0gCSAmJiBmb3VuZF9jb3VudCA8IG1heF9jb3VudCkK LSAgICAgewotLSAgICAgIC8qIE9mZnNldCBmcm9tIHN0YXJ0IG9mIHRoaXMgaXRlcmF0aW9uIHRv IHRoZSBuZXh0IGl0ZXJhdGlvbi4gICovCi0tICAgICAgVUxPTkdFU1QgbmV4dF9pdGVyX2luY3I7 Ci0gICAgICAgQ09SRV9BRERSIGZvdW5kX2FkZHI7Ci0tICAgICAgaW50IGZvdW5kID0gdGFyZ2V0 X3NlYXJjaF9tZW1vcnkgKHN0YXJ0X2FkZHIsIHNlYXJjaF9zcGFjZV9sZW4sCi0tCQkJCQlwYXR0 ZXJuX2J1ZiwgcGF0dGVybl9sZW4sICZmb3VuZF9hZGRyKTsKLSsgICAgICBpbnQgZm91bmQ7Ci0g Ci0rICAgICAgZm91bmQgPSBzZWFyY2hfbWVtb3J5ICgmc3RhcnRfYWRkciwgJnNlYXJjaF9zcGFj ZV9sZW4sIHBhdHRlcm5fYnVmLAotKwkJCSAgICAgcGF0dGVybl9sZW4sICZmb3VuZF9hZGRyKTsK LSAgICAgICBpZiAoZm91bmQgPD0gMCkKLSAJYnJlYWs7Ci0gCi1AQCAtMjgzLDE2ICszNDYsNiBA QCBmaW5kX2NvbW1hbmQgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkKLSAgICAgICBwcmludGZf ZmlsdGVyZWQgKCJcbiIpOwotICAgICAgICsrZm91bmRfY291bnQ7Ci0gICAgICAgbGFzdF9mb3Vu ZF9hZGRyID0gZm91bmRfYWRkcjsKLS0KLS0gICAgICAvKiBCZWdpbiBuZXh0IGl0ZXJhdGlvbiBh dCBvbmUgYnl0ZSBwYXN0IHRoaXMgbWF0Y2guICAqLwotLSAgICAgIG5leHRfaXRlcl9pbmNyID0g KGZvdW5kX2FkZHIgLSBzdGFydF9hZGRyKSArIDE7Ci0tCi0tICAgICAgLyogRm9yIHJvYnVzdG5l c3MsIHdlIGRvbid0IGxldCBzZWFyY2hfc3BhY2VfbGVuIGdvIC12ZSBoZXJlLiAgKi8KLS0gICAg ICBpZiAoc2VhcmNoX3NwYWNlX2xlbiA+PSBuZXh0X2l0ZXJfaW5jcikKLS0Jc2VhcmNoX3NwYWNl X2xlbiAtPSBuZXh0X2l0ZXJfaW5jcjsKLS0gICAgICBlbHNlCi0tCXNlYXJjaF9zcGFjZV9sZW4g PSAwOwotLSAgICAgIHN0YXJ0X2FkZHIgKz0gbmV4dF9pdGVyX2luY3I7Ci0gICAgIH0KLSAKLSAg IC8qIFJlY29yZCBhbmQgcHJpbnQgdGhlIHJlc3VsdHMuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9m aW5kdmFyLmMgYi9nZGIvZmluZHZhci5jCi1pbmRleCBlMGNhMTJjLi5kZTYzMTFhIDEwMDY0NAot LS0tIGEvZ2RiL2ZpbmR2YXIuYwotKysrIGIvZ2RiL2ZpbmR2YXIuYwotQEAgLTM1LDYgKzM1LDcg QEAKLSAjaW5jbHVkZSAidXNlci1yZWdzLmgiCi0gI2luY2x1ZGUgImJsb2NrLmgiCi0gI2luY2x1 ZGUgIm9iamZpbGVzLmgiCi0rI2luY2x1ZGUgImR3YXJmMmxvYy5oIgotIAotIC8qIEJhc2ljIGJ5 dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4gYQot ICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBhdCBB RERSIHdoaWNoIGlzCi1AQCAtNDAxLDI3ICs0MDIsMTYgQEAgc3ltYm9sX3JlYWRfbmVlZHNfZnJh bWUgKHN0cnVjdCBzeW1ib2wgKnN5bSkKLSAvKiBHaXZlbiBhIHN0cnVjdCBzeW1ib2wgZm9yIGEg dmFyaWFibGUsCi0gICAgYW5kIGEgc3RhY2sgZnJhbWUgaWQsIHJlYWQgdGhlIHZhbHVlIG9mIHRo ZSB2YXJpYWJsZQotICAgIGFuZCByZXR1cm4gYSAocG9pbnRlciB0byBhKSBzdHJ1Y3QgdmFsdWUg Y29udGFpbmluZyB0aGUgdmFsdWUuIAotLSAgIElmIHRoZSB2YXJpYWJsZSBjYW5ub3QgYmUgZm91 bmQsIHJldHVybiBhIHplcm8gcG9pbnRlci4gICovCi0rICAgSWYgdGhlIHZhcmlhYmxlIGNhbm5v dCBiZSBmb3VuZCwgcmV0dXJuIGEgemVybyBwb2ludGVyLgotKyAgIFdlIGhhdmUgdG8gZmlyc3Qg ZmluZCB0aGUgYWRkcmVzcyBvZiB0aGUgdmFyaWFibGUgYmVmb3JlIGFsbG9jYXRpbmcgc3RydWN0 Ci0rICAgdmFsdWUgdG8gcmV0dXJuIGFzIGl0cyBzaXplIG1heSBkZXBlbmQgb24gRFdfT1BfUFVT SF9PQkpFQ1RfQUREUkVTUyBwb3NzaWJseQotKyAgIHVzZWQgYnkgaXRzIHR5cGUuICAqLwotIAot IHN0cnVjdCB2YWx1ZSAqCi0gcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQotIHsKLS0gIHN0cnVjdCB2YWx1ZSAqdjsKLSAgIHN0cnVj dCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7Ci0gICBDT1JFX0FERFIgYWRkcjsKLS0g IGludCBsZW47Ci0tCi0tICBpZiAoU1lNQk9MX0NMQVNTICh2YXIpID09IExPQ19DT01QVVRFRAot LSAgICAgIHx8IFNZTUJPTF9DTEFTUyAodmFyKSA9PSBMT0NfUkVHSVNURVIpCi0tICAgIC8qIFRo ZXNlIGNhc2VzIGRvIG5vdCB1c2UgVi4gICovCi0tICAgIHYgPSBOVUxMOwotLSAgZWxzZQotLSAg ICB7Ci0tICAgICAgdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLS0gICAgICBWQUxVRV9MVkFM ICh2KSA9IGx2YWxfbWVtb3J5OwkvKiBUaGUgbW9zdCBsaWtlbHkgcG9zc2liaWxpdHkuICAqLwot LSAgICB9Ci0tCi0tICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0gCi0gICBpZiAoc3ltYm9s X3JlYWRfbmVlZHNfZnJhbWUgKHZhcikpCi0gICAgIGdkYl9hc3NlcnQgKGZyYW1lKTsKLUBAIC00 MjksMzMgKzQxOSw0MyBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1 Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICBzd2l0Y2ggKFNZTUJPTF9DTEFTUyAodmFyKSkKLSAg ICAgewotICAgICBjYXNlIExPQ19DT05TVDoKLS0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJh Y2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCi0tICAgICAgc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZh bHVlX2NvbnRlbnRzX3JhdyAodiksIGxlbiwKLS0JCQkgICAgZ2RiYXJjaF9ieXRlX29yZGVyIChn ZXRfdHlwZV9hcmNoICh0eXBlKSksCi0tCQkJICAgIChMT05HRVNUKSBTWU1CT0xfVkFMVUUgKHZh cikpOwotLSAgICAgIFZBTFVFX0xWQUwgKHYpID0gbm90X2x2YWw7Ci0tICAgICAgcmV0dXJuIHY7 Ci0rICAgICAgewotKwkvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4g ICovCi0rCXN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsJVkFMVUVf TFZBTCAodikgPSBub3RfbHZhbDsKLSsJc3RvcmVfc2lnbmVkX2ludGVnZXIgKHZhbHVlX2NvbnRl bnRzX3JhdyAodiksIFRZUEVfTEVOR1RIICh0eXBlKSwKLSsJCQkgICAgICBnZGJhcmNoX2J5dGVf b3JkZXIgKGdldF90eXBlX2FyY2ggKHR5cGUpKSwKLSsJCQkgICAgICAoTE9OR0VTVCkgU1lNQk9M X1ZBTFVFICh2YXIpKTsKLSsJcmV0dXJuIHY7Ci0rICAgICAgfQotIAotICAgICBjYXNlIExPQ19M QUJFTDoKLS0gICAgICAvKiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4g ICovCi0tICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotLQl7Ci0tCSAgQ09SRV9BRERSIGFk ZHIKLS0JICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xfVkFMVUVfQUREUkVT UyAodmFyKSwKLS0JCQkJCVNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci0rICAgICAgewotKwkv KiBQdXQgdGhlIGNvbnN0YW50IGJhY2sgaW4gdGFyZ2V0IGZvcm1hdC4gICovCi0rCXN0cnVjdCB2 YWx1ZSAqdiA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKLSsJVkFMVUVfTFZBTCAodikgPSBub3Rf bHZhbDsKLSsJaWYgKG92ZXJsYXlfZGVidWdnaW5nKQotKwkgIHsKLSsJICAgIENPUkVfQUREUiBh ZGRyCi0rCSAgICAgID0gc3ltYm9sX292ZXJsYXllZF9hZGRyZXNzIChTWU1CT0xfVkFMVUVfQURE UkVTUyAodmFyKSwKLSsJCQkJCSAgU1lNQk9MX09CSl9TRUNUSU9OICh2YXIpKTsKLSAKLS0JICBz dG9yZV90eXBlZF9hZGRyZXNzICh2YWx1ZV9jb250ZW50c19yYXcgKHYpLCB0eXBlLCBhZGRyKTsK LS0JfQotLSAgICAgIGVsc2UKLS0Jc3RvcmVfdHlwZWRfYWRkcmVzcyAodmFsdWVfY29udGVudHNf cmF3ICh2KSwgdHlwZSwKLS0JCQkgICAgICBTWU1CT0xfVkFMVUVfQUREUkVTUyAodmFyKSk7Ci0t ICAgICAgVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLS0gICAgICByZXR1cm4gdjsKLSsJICAg IHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIHR5cGUsIGFkZHIp OwotKwkgIH0KLSsJZWxzZQotKwkgIHN0b3JlX3R5cGVkX2FkZHJlc3MgKHZhbHVlX2NvbnRlbnRz X3JhdyAodiksIHR5cGUsCi0rCQkJCVNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpKTsKLSsJcmV0 dXJuIHY7Ci0rICAgICAgfQotIAotICAgICBjYXNlIExPQ19DT05TVF9CWVRFUzoKLS0gICAgICBt ZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3JhdyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwg bGVuKTsKLS0gICAgICBWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotLSAgICAgIHJldHVybiB2 OwotKyAgICAgIHsKLSsJc3RydWN0IHZhbHVlICp2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwot KwlWQUxVRV9MVkFMICh2KSA9IG5vdF9sdmFsOwotKwltZW1jcHkgKHZhbHVlX2NvbnRlbnRzX3Jh dyAodiksIFNZTUJPTF9WQUxVRV9CWVRFUyAodmFyKSwKLSsJCVRZUEVfTEVOR1RIICh0eXBlKSk7 Ci0rCXJldHVybiB2OwotKyAgICAgIH0KLSAKLSAgICAgY2FzZSBMT0NfU1RBVElDOgotICAgICAg IGlmIChvdmVybGF5X2RlYnVnZ2luZykKLUBAIC00OTYsMTIgKzQ5NiwyMyBAQCByZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCi0gICAg ICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgTE9DX0JMT0NLOgotLSAgICAgIGlmIChvdmVybGF5X2Rl YnVnZ2luZykKLS0Jc2V0X3ZhbHVlX2FkZHJlc3MgKHYsIHN5bWJvbF9vdmVybGF5ZWRfYWRkcmVz cwotLQkgIChCTE9DS19TVEFSVCAoU1lNQk9MX0JMT0NLX1ZBTFVFICh2YXIpKSwgU1lNQk9MX09C Sl9TRUNUSU9OICh2YXIpKSk7Ci0tICAgICAgZWxzZQotLQlzZXRfdmFsdWVfYWRkcmVzcyAodiwg QkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSkpOwotLSAgICAgIHJldHVybiB2 OwotKyAgICAgIHsKLSsgICAgICAgIENPUkVfQUREUiBhZGRyOwotKwlzdHJ1Y3QgdmFsdWUgKnY7 Ci0rCi0rCWlmIChvdmVybGF5X2RlYnVnZ2luZykKLSsJICBhZGRyID0gc3ltYm9sX292ZXJsYXll ZF9hZGRyZXNzCi0rCSAgICAoQkxPQ0tfU1RBUlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSks IFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci0rCWVsc2UKLSsJICBhZGRyID0gQkxPQ0tfU1RB UlQgKFNZTUJPTF9CTE9DS19WQUxVRSAodmFyKSk7Ci0rCS8qIEFERFIgaXMgc2V0IGhlcmUgZm9y IEFMTE9DQVRFX1ZBTFVFJ3MgQ0hFQ0tfVFlQRURFRiBmb3IKLSsJICAgRFdfT1BfcHVzaF9vYmpl Y3RfYWRkcmVzcy4gICovCi0rCW9iamVjdF9hZGRyZXNzX3NldCAoYWRkcik7Ci0rCXYgPSBhbGxv Y2F0ZV92YWx1ZSAodHlwZSk7Ci0rCVZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7Ci0rCXNl dF92YWx1ZV9hZGRyZXNzICh2LCBhZGRyKTsKLSsJcmV0dXJuIHY7Ci0rICAgICAgfQotIAotICAg ICBjYXNlIExPQ19SRUdJU1RFUjoKLSAgICAgY2FzZSBMT0NfUkVHUEFSTV9BRERSOgotQEAgLTUy MCw3ICs1MzEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi0gCSAgICAgIGVycm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2 YXJpYWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKLSAKLSAJICAgIGFkZHIgPSB2YWx1ZV9hc19hZGRy ZXNzIChyZWd2YWwpOwotLQkgICAgVkFMVUVfTFZBTCAodikgPSBsdmFsX21lbW9yeTsKLSAJICB9 Ci0gCWVsc2UKLSAJICB7Ci1AQCAtNTYzLDE4ICs1NzMsMzMgQEAgcmVhZF92YXJfdmFsdWUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQotICAgICAgIGJyZWFr OwotIAotICAgICBjYXNlIExPQ19PUFRJTUlaRURfT1VUOgotLSAgICAgIFZBTFVFX0xWQUwgKHYp ID0gbm90X2x2YWw7Ci0tICAgICAgc2V0X3ZhbHVlX29wdGltaXplZF9vdXQgKHYsIDEpOwotLSAg ICAgIHJldHVybiB2OwotKyAgICAgIHsKLSsgICAgICAgIHN0cnVjdCB2YWx1ZSAqdiA9IGFsbG9j YXRlX3ZhbHVlICh0eXBlKTsKLSsKLSsJVkFMVUVfTFZBTCAodikgPSBub3RfbHZhbDsKLSsJc2V0 X3ZhbHVlX29wdGltaXplZF9vdXQgKHYsIDEpOwotKwlyZXR1cm4gdjsKLSsgICAgICB9Ci0gCi0g ICAgIGRlZmF1bHQ6Ci0gICAgICAgZXJyb3IgKF8oIkNhbm5vdCBsb29rIHVwIHZhbHVlIG9mIGEg Ym90Y2hlZCBzeW1ib2wuIikpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gCi0tICBzZXRfdmFs dWVfYWRkcmVzcyAodiwgYWRkcik7Ci0tICBzZXRfdmFsdWVfbGF6eSAodiwgMSk7Ci0tICByZXR1 cm4gdjsKLSsgIHsKLSsgICAgc3RydWN0IHZhbHVlICp2OwotKwotKyAgICAvKiBBRERSIGlzIHNl dCBoZXJlIGZvciBBTExPQ0FURV9WQUxVRSdzIENIRUNLX1RZUEVERUYgZm9yCi0rICAgICAgIERX X09QX1BVU0hfT0JKRUNUX0FERFJFU1MuICAqLwotKyAgICBvYmplY3RfYWRkcmVzc19zZXQgKGFk ZHIpOwotKyAgICB2ID0gYWxsb2NhdGVfdmFsdWUgKHR5cGUpOwotKyAgICBWQUxVRV9MVkFMICh2 KSA9IGx2YWxfbWVtb3J5OwotKyAgICBzZXRfdmFsdWVfYWRkcmVzcyAodiwgYWRkcik7Ci0rCi0r ICAgIHNldF92YWx1ZV9sYXp5ICh2LCAxKTsKLSsKLSsgICAgcmV0dXJuIHY7Ci0rICB9Ci0gfQot IAotIC8qIEluc3RhbGwgZGVmYXVsdCBhdHRyaWJ1dGVzIGZvciByZWdpc3RlciB2YWx1ZXMuICAq LwotQEAgLTYxMSwxMCArNjM2LDExIEBAIHN0cnVjdCB2YWx1ZSAqCi0gdmFsdWVfZnJvbV9yZWdp c3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKLSB7Ci0gICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoIChm cmFtZSk7Ci0tICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVmICh0eXBlKTsKLSAg IHN0cnVjdCB2YWx1ZSAqdjsKLSAKLS0gIGlmIChnZGJhcmNoX2NvbnZlcnRfcmVnaXN0ZXJfcCAo Z2RiYXJjaCwgcmVnbnVtLCB0eXBlMSkpCi0rICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7 Ci0rCi0rICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwg dHlwZSkpCi0gICAgIHsKLSAgICAgICAvKiBUaGUgSVNBL0FCSSBuZWVkIHRvIHNvbWV0aGluZyB3 ZWlyZCB3aGVuIG9idGFpbmluZyB0aGUKLSAgICAgICAgICBzcGVjaWZpZWQgdmFsdWUgZnJvbSB0 aGlzIHJlZ2lzdGVyLiAgSXQgbWlnaHQgbmVlZCB0bwotQEAgLTYyOCw3ICs2NTQsNyBAQCB2YWx1 ZV9mcm9tX3JlZ2lzdGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaW50IHJlZ251bSwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lKQotICAgICAgIFZBTFVFX0ZSQU1FX0lEICh2KSA9IGdldF9mcmFtZV9p ZCAoZnJhbWUpOwotICAgICAgIFZBTFVFX1JFR05VTSAodikgPSByZWdudW07Ci0gICAgICAgZ2Ri YXJjaF9yZWdpc3Rlcl90b192YWx1ZSAoZ2RiYXJjaCwKLS0JCQkJIGZyYW1lLCByZWdudW0sIHR5 cGUxLCB2YWx1ZV9jb250ZW50c19yYXcgKHYpKTsKLSsJCQkJIGZyYW1lLCByZWdudW0sIHR5cGUs IHZhbHVlX2NvbnRlbnRzX3JhdyAodikpOwotICAgICB9Ci0gICBlbHNlCi0gICAgIHsKLWRpZmYg LS1naXQgYS9nZGIvZ2RiY21kLmggYi9nZGIvZ2RiY21kLmgKLWluZGV4IDc4MTUxZGQuLmRhMTE2 ODYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ2RiY21kLmgKLSsrKyBiL2dkYi9nZGJjbWQuaAotQEAgLTEy NCw2ICsxMjQsMTAgQEAgZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzZXRjaGVja2xp c3Q7Ci0gCi0gZXh0ZXJuIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpzaG93Y2hlY2tsaXN0Owot IAotKy8qIENoYWluIGNvbnRhaW5pbmcgYWxsIGRlZmluZWQgInNhdmUiIHN1YmNvbW1hbmRzLiAg Ki8KLSsKLStleHRlcm4gc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnNhdmVfY21kbGlzdDsKLSsK LSBleHRlcm4gdm9pZCBleGVjdXRlX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKLSBleHRlcm4gY2hh ciAqZXhlY3V0ZV9jb21tYW5kX3RvX3N0cmluZyAoY2hhciAqcCwgaW50IGZyb21fdHR5KTsKLSAK LWRpZmYgLS1naXQgYS9nZGIvZ2RiaW5pdC5pbiBiL2dkYi9nZGJpbml0LmluCi1pbmRleCBmZmI3 ZjUzLi5hMmU3ZTk0IDEwMDY0NAotLS0tIGEvZ2RiL2dkYmluaXQuaW4KLSsrKyBiL2dkYi9nZGJp bml0LmluCi1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRoZSBlbnZpcm9ubWVu dCBmb3IgZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRob24gbGlicmFyeSBh bmQgInJlcXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNw YXRoCi0rZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9uL2xpYicpCi0rZ2Ri LnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0gW2dkYi5kYXRhZGly ICsgJy9nZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikKLStlbmQKLStzb3Vy Y2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLSsKLSBzZXQgY29tcGxhaW50 cyAxCi0gCi0gYiBpbnRlcm5hbF9lcnJvcgotZGlmZiAtLWdpdCBhL2dkYi9nZGJ0aHJlYWQuaCBi L2dkYi9nZGJ0aHJlYWQuaAotaW5kZXggY2QyNGVhZi4uOTYzODM2OCAxMDA2NDQKLS0tLSBhL2dk Yi9nZGJ0aHJlYWQuaAotKysrIGIvZ2RiL2dkYnRocmVhZC5oCi1AQCAtNjYsNiArNjYsOSBAQCBz dHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFN0ZXAtcmVzdW1lIG9yIGxvbmdqbXAtcmVzdW1lIGJy ZWFrcG9pbnQuICAqLwotICAgc3RydWN0IGJyZWFrcG9pbnQgKnN0ZXBfcmVzdW1lX2JyZWFrcG9p bnQ7Ci0gCi0rICAvKiBFeGNlcHRpb24tcmVzdW1lIGJyZWFrcG9pbnQuICAqLwotKyAgc3RydWN0 IGJyZWFrcG9pbnQgKmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludDsKLSsKLSAgIC8qIFJhbmdl IHRvIHNpbmdsZSBzdGVwIHdpdGhpbi4KLSAKLSAgICAgIElmIHRoaXMgaXMgbm9uemVybywgcmVz cG9uZCB0byBhIHNpbmdsZS1zdGVwIHNpZ25hbCBieSBjb250aW51aW5nCi1AQCAtMTg1LDYgKzE4 OCwxMCBAQCBzdHJ1Y3QgdGhyZWFkX2luZm8KLSAgIC8qIFRydWUgaWYgdGhpcyB0aHJlYWQgaGFz IGJlZW4gZXhwbGljaXRseSByZXF1ZXN0ZWQgdG8gc3RvcC4gICovCi0gICBpbnQgc3RvcF9yZXF1 ZXN0ZWQ7Ci0gCi0rICAvKiBUaGUgaW5pdGlhdGluZyBmcmFtZSBvZiBhIG5leHRpbmcgb3BlcmF0 aW9uLCB1c2VkIGZvciBkZWNpZGluZwotKyAgICAgd2hpY2ggZXhjZXB0aW9ucyB0byBpbnRlcmNl cHQuICAqLwotKyAgc3RydWN0IGZyYW1lX2lkIGluaXRpYXRpbmdfZnJhbWU7Ci0rCi0gICAvKiBQ cml2YXRlIGRhdGEgdXNlZCBieSB0aGUgdGFyZ2V0IHZlY3RvciBpbXBsZW1lbnRhdGlvbi4gICov Ci0gICBzdHJ1Y3QgcHJpdmF0ZV90aHJlYWRfaW5mbyAqcHJpdmF0ZTsKLSAKLUBAIC0yMjEsNiAr MjI4LDkgQEAgZXh0ZXJuIHZvaWQgZGVsZXRlX3RocmVhZF9zaWxlbnQgKHB0aWRfdCk7Ci0gLyog RGVsZXRlIGEgc3RlcF9yZXN1bWVfYnJlYWtwb2ludCBmcm9tIHRoZSB0aHJlYWQgZGF0YWJhc2Uu ICovCi0gZXh0ZXJuIHZvaWQgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0 aHJlYWRfaW5mbyAqKTsKLSAKLSsvKiBEZWxldGUgYW4gZXhjZXB0aW9uX3Jlc3VtZV9icmVha3Bv aW50IGZyb20gdGhlIHRocmVhZCBkYXRhYmFzZS4gKi8KLStleHRlcm4gdm9pZCBkZWxldGVfZXhj ZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKik7Ci0rCi0gLyog VHJhbnNsYXRlIHRoZSBpbnRlZ2VyIHRocmVhZCBpZCAoR0RCJ3MgaG9tZWdyb3duIGlkLCBub3Qg dGhlIHN5c3RlbSdzKQotICAgIGludG8gYSAicGlkIiAod2hpY2ggbWF5IGJlIG92ZXJsb2FkZWQg d2l0aCBleHRyYSB0aHJlYWQgaW5mb3JtYXRpb24pLiAgKi8KLSBleHRlcm4gcHRpZF90IHRocmVh ZF9pZF90b19waWQgKGludCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2Ri dHlwZXMuYwotaW5kZXggNDQzZjZmNy4uZDg1MmExNCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJ0eXBl cy5jCi0rKysgYi9nZGIvZ2RidHlwZXMuYwotQEAgLTM5LDYgKzM5LDkgQEAKLSAjaW5jbHVkZSAi Y3AtYWJpLmgiCi0gI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAjaW5jbHVkZSAiaGFzaHRhYi5o IgotKyNpbmNsdWRlICJvYnNlcnZlci5oIgotKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCi0rI2lu Y2x1ZGUgImR3YXJmMmxvYy5oIgotIAotIAotIC8qIEZsb2F0Zm9ybWF0IHBhaXJzLiAgKi8KLUBA IC0xMjMsNiArMTI2LDExIEBAIHN0YXRpYyB2b2lkIHByaW50X2FyZ190eXBlcyAoc3RydWN0IGZp ZWxkICosIGludCwgaW50KTsKLSBzdGF0aWMgdm9pZCBkdW1wX2ZuX2ZpZWxkbGlzdHMgKHN0cnVj dCB0eXBlICosIGludCk7Ci0gc3RhdGljIHZvaWQgcHJpbnRfY3BsdXNfc3R1ZmYgKHN0cnVjdCB0 eXBlICosIGludCk7Ci0gCi0rLyogVGhlIGhhc2ggdGFibGUgaG9sZGluZyBhbGwgZGlzY2FyZGFi bGUgYHN0cnVjdCB0eXBlIConIHJlZmVyZW5jZXMuICAqLwotK3N0YXRpYyBodGFiX3QgdHlwZV9k aXNjYXJkYWJsZV90YWJsZTsKLSsKLSsvKiBDdXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sg cGFzcyB1c2VkIGZvciBUWVBFX0RJU0NBUkRBQkxFX0FHRS4gICovCi0rc3RhdGljIGludCB0eXBl X2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwotIAotIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJTEUt YXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAotICAgIHdpdGggc29tZSBkZWZh dWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCi1AQCAtMTUz LDYgKzE2MSwzOSBAQCBhbGxvY190eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSAgIHJl dHVybiB0eXBlOwotIH0KLSAKLSsvKiBEZWNsYXJlIFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4 dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9hbGxfdHlwZXMuCi0rICAgWW91IG11c3QgY2Fs bCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBmcmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZ UEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK3Nl dF90eXBlX2FzX2Rpc2NhcmRhYmxlIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICB2b2lkICoq c2xvdDsKLSsKLSsgIGdkYl9hc3NlcnQgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0r ICBUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSA9IDE7Ci0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAo dHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OwotKwotKyAgc2xvdCA9IGh0YWJf ZmluZF9zbG90ICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlLCBJTlNFUlQpOwotKyAgZ2Ri X2Fzc2VydCAoISpzbG90KTsKLSsgICpzbG90ID0gdHlwZTsKLSt9Ci0rCi0rLyogQWxsb2NhdGUg YSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0IHByZXNlcnZlIGZvciBpdCB0aGUgZGlzY2Fy ZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJFTlRfVFlQRS4gICovCi0rCi0rc3RhdGljIHN0cnVj dCB0eXBlICoKLSthbGxvY190eXBlX2FzX3BhcmVudCAoc3RydWN0IHR5cGUgKnBhcmVudF90eXBl KQotK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVfY29weSAocGFyZW50 X3R5cGUpOwotKwotKyAgaWYgKFRZUEVfRElTQ0FSREFCTEUgKHBhcmVudF90eXBlKSkKLSsgICAg c2V0X3R5cGVfYXNfZGlzY2FyZGFibGUgKG5ld190eXBlKTsKLSsKLSsgIHJldHVybiBuZXdfdHlw ZTsKLSt9Ci0rCi0gLyogQWxsb2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3Ry dWN0dXJlIGFuZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRo ZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLSAgICBvbiB0aGUgaGVhcC4gICovCi1AQCAt Mjc4LDcgKzMxOSw3IEBAIG1ha2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IHR5cGUgKip0eXBlcHRyKQotIAotICAgaWYgKHR5cGVwdHIgPT0gMCB8fCAqdHlwZXB0ciA9 PSAwKQkvKiBXZSdsbCBuZWVkIHRvIGFsbG9jYXRlIG9uZS4gICovCi0gICAgIHsKLS0gICAgICBu dHlwZSA9IGFsbG9jX3R5cGVfY29weSAodHlwZSk7Ci0rICAgICAgbnR5cGUgPSBhbGxvY190eXBl X2FzX3BhcmVudCAodHlwZSk7Ci0gICAgICAgaWYgKHR5cGVwdHIpCi0gCSp0eXBlcHRyID0gbnR5 cGU7Ci0gICAgIH0KLUBAIC0zNTUsNyArMzk2LDcgQEAgbWFrZV9yZWZlcmVuY2VfdHlwZSAoc3Ry dWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKLSAKLSAgIGlmICh0eXBlcHRy ID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBvbmUuICAq LwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOwotKyAgICAg IG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOwotICAgICAgIGlmICh0eXBlcHRy KQotIAkqdHlwZXB0ciA9IG50eXBlOwotICAgICB9Ci1AQCAtNzI2LDYgKzc2Nyw3IEBAIGNyZWF0 ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRl eF90eXBlLAotICAgICBUWVBFX1pBTExPQyAocmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJh bmdlX2JvdW5kcykpOwotICAgVFlQRV9MT1dfQk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3Vu ZDsKLSAgIFRZUEVfSElHSF9CT1VORCAocmVzdWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKLSsgIFRZ UEVfQllURV9TVFJJREUgKHJlc3VsdF90eXBlKSA9IDA7Ci0gCi0gICBpZiAobG93X2JvdW5kID49 IDApCi0gICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1AQCAtODI1LDI2ICs4 NjcsNDUgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdHlwZSwKLSAK LSAgIFRZUEVfQ09ERSAocmVzdWx0X3R5cGUpID0gVFlQRV9DT0RFX0FSUkFZOwotICAgVFlQRV9U QVJHRVRfVFlQRSAocmVzdWx0X3R5cGUpID0gZWxlbWVudF90eXBlOwotLSAgaWYgKGdldF9kaXNj cmV0ZV9ib3VuZHMgKHJhbmdlX3R5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSA8IDApCi0t ICAgIGxvd19ib3VuZCA9IGhpZ2hfYm91bmQgPSAwOwotLSAgQ0hFQ0tfVFlQRURFRiAoZWxlbWVu dF90eXBlKTsKLS0gIC8qIEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGgu ICBBZGEgYXJyYXlzIGNhbiBiZQotLSAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91 bmQgYmVpbmcgc21hbGxlciB0aGFuIHRoZSBsb3dfYm91bmQuCi0tICAgICBJbiBzdWNoIGNhc2Vz LCB0aGUgYXJyYXkgbGVuZ3RoIHNob3VsZCBiZSB6ZXJvLiAgKi8KLS0gIGlmIChoaWdoX2JvdW5k IDwgbG93X2JvdW5kKQotLSAgICBUWVBFX0xFTkdUSCAocmVzdWx0X3R5cGUpID0gMDsKLS0gIGVs c2UKLS0gICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0tICAgICAgVFlQRV9MRU5HVEgg KGVsZW1lbnRfdHlwZSkgKiAoaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwotICAgVFlQRV9O RklFTERTIChyZXN1bHRfdHlwZSkgPSAxOwotICAgVFlQRV9GSUVMRFMgKHJlc3VsdF90eXBlKSA9 Ci0gICAgIChzdHJ1Y3QgZmllbGQgKikgVFlQRV9aQUxMT0MgKHJlc3VsdF90eXBlLCBzaXplb2Yg KHN0cnVjdCBmaWVsZCkpOwotICAgVFlQRV9JTkRFWF9UWVBFIChyZXN1bHRfdHlwZSkgPSByYW5n ZV90eXBlOwotICAgVFlQRV9WUFRSX0ZJRUxETk8gKHJlc3VsdF90eXBlKSA9IC0xOwotIAotLSAg LyogVFlQRV9GTEFHX1RBUkdFVF9TVFVCIHdpbGwgdGFrZSBjYXJlIG9mIHplcm8gbGVuZ3RoIGFy cmF5cyAqLwotKyAgLyogRFdBUkYgYmxvY2tzIG1heSBkZXBlbmQgb24gcnVudGltZSBpbmZvcm1h dGlvbiBsaWtlCi0rICAgICBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIG5vdCBiZWluZyBhdmFp bGFibGUgZHVyaW5nIHRoZQotKyAgICAgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCi0rICBp ZiAoVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgIT0gUkFOR0VfQk9VTkRf S0lORF9DT05TVEFOVAotKyAgICAgIHx8IFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlwZSktPmhp Z2gua2luZCAhPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UCi0rICAgICAgfHwgVFlQRV9MT1df Qk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSAKLSsgICAgICB8fCBUWVBFX0hJR0hfQk9VTkRf VU5ERUZJTkVEIChyYW5nZV90eXBlKSAKLSsgICAgICB8fCBnZXRfZGlzY3JldGVfYm91bmRzIChy YW5nZV90eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkgPCAwKQotKyAgICB7Ci0rICAgICAg bG93X2JvdW5kID0gMDsKLSsgICAgICBoaWdoX2JvdW5kID0gLTE7Ci0rICAgIH0KLSsKLSsgIC8q IEJlIGNhcmVmdWwgd2hlbiBzZXR0aW5nIHRoZSBhcnJheSBsZW5ndGguICBBZGEgYXJyYXlzIGNh biBiZQotKyAgICAgZW1wdHkgYXJyYXlzIHdpdGggdGhlIGhpZ2hfYm91bmQgYmVpbmcgc21hbGxl ciB0aGFuIHRoZSBsb3dfYm91bmQuCi0rICAgICBJbiBzdWNoIGNhc2VzLCB0aGUgYXJyYXkgbGVu Z3RoIHNob3VsZCBiZSB6ZXJvLiAgVFlQRV9UQVJHRVRfU1RVQiBuZWVkcyB0bwotKyAgICAgYmUg Y2hlY2tlZCBhcyBpdCBtYXkgaGF2ZSBkZXBlbmRlbmNpZXMgb24gRFdBUkYgYmxvY2tzIGRlcGVu ZGluZyBvbgotKyAgICAgcnVudGltZSBpbmZvcm1hdGlvbiBub3QgYXZhaWxhYmxlIGR1cmluZyB0 aGUgQ1JFQVRFX0FSUkFZX1RZUEUgdGltZS4gICovCi0rICBpZiAoaGlnaF9ib3VuZCA8IGxvd19i b3VuZCB8fCBUWVBFX1RBUkdFVF9TVFVCIChlbGVtZW50X3R5cGUpKQotKyAgICBUWVBFX0xFTkdU SCAocmVzdWx0X3R5cGUpID0gMDsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIENIRUNLX1RZUEVE RUYgKGVsZW1lbnRfdHlwZSk7Ci0rICAgICAgVFlQRV9MRU5HVEggKHJlc3VsdF90eXBlKSA9Ci0r CVRZUEVfTEVOR1RIIChlbGVtZW50X3R5cGUpICogKGhpZ2hfYm91bmQgLSBsb3dfYm91bmQgKyAx KTsKLSsgICAgfQotKwotICAgaWYgKFRZUEVfTEVOR1RIIChyZXN1bHRfdHlwZSkgPT0gMCkKLS0g ICAgVFlQRV9UQVJHRVRfU1RVQiAocmVzdWx0X3R5cGUpID0gMTsKLSsgICAgewotKyAgICAgIC8q IFRoZSByZWFsIHNpemUgd2lsbCBiZSBjb21wdXRlZCBmb3Igc3BlY2lmaWMgaW5zdGFuY2VzIGJ5 Ci0rCSBDSEVDS19UWVBFREVGLiAgKi8KLSsgICAgICBUWVBFX1RBUkdFVF9TVFVCIChyZXN1bHRf dHlwZSkgPSAxOwotKyAgICB9Ci0gCi0gICByZXR1cm4gcmVzdWx0X3R5cGU7Ci0gfQotQEAgLTEz NTMsNiArMTQxNCwxMDUgQEAgc3R1Yl9ub25hbWVfY29tcGxhaW50ICh2b2lkKQotICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJzdHViIHR5cGUgaGFzIE5VTEwgbmFtZSIpKTsK LSB9Ci0gCi0rLyogQ2FsY3VsYXRlIHRoZSBtZW1vcnkgbGVuZ3RoIG9mIGFycmF5IFRZUEUuCi0r Ci0rICAgVEFSR0VUX1RZUEUgc2hvdWxkIGJlIHNldCB0byBgY2hlY2tfdHlwZWRlZiAoVFlQRV9U QVJHRVRfVFlQRSAodHlwZSkpJyBhcwotKyAgIGEgcGVyZm9ybWFuY2UgaGludC4gIEZlZWwgZnJl ZSB0byBwYXNzIE5VTEwuICBTZXQgRlVMTF9TUEFOIHRvIHJldHVybiB0aGUKLSsgICBzaXplIGlu Y2wuIHRoZSBwb3NzaWJsZSBwYWRkaW5nIG9mIHRoZSBsYXN0IGVsZW1lbnQgLSBpdCBtYXkgZGlm ZmVyIGZyb20gdGhlCi0rICAgY2xlYXJlZCBGVUxMX1NQQU4gcmV0dXJuIHZhbHVlICh0aGUgZXhw ZWN0ZWQgU0laRU9GKSBmb3Igbm9uLXplcm8KLSsgICBUWVBFX0JZVEVfU1RSSURFIHZhbHVlcy4g ICovCi0rCi0rc3RhdGljIExPTkdFU1QKLSt0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0 eXBlLCBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGUsIGludCBmdWxsX3NwYW4pCi0rewotKyAgc3Ry dWN0IHR5cGUgKnJhbmdlX3R5cGU7Ci0rICBMT05HRVNUIGJ5dGVfc3RyaWRlID0gMDsJLyogYD0g MCcgZm9yIGEgZmFsc2UgR0NDIHdhcm5pbmcuICAqLwotKyAgTE9OR0VTVCBjb3VudCwgZWxlbWVu dF9zaXplLCByZXR2YWw7Ci0rCi0rICBpZiAoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVf QVJSQVkKLSsgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9TVFJJTkcpCi0r ICAgIHJldHVybiBUWVBFX0xFTkdUSCAodHlwZSk7Ci0rCi0rICAvKiBBdm9pZCBleGVjdXRpbmcg VFlQRV9ISUdIX0JPVU5EIGZvciBpbnZhbGlkICh1bmFsbG9jYXRlZC91bmFzc29jaWF0ZWQpCi0r ICAgICBGb3J0cmFuIGFycmF5cy4gIFRoZSBhbGxvY2F0ZWQgZGF0YSB3aWxsIG5ldmVyIGJlIHVz ZWQgc28gdGhleSBjYW4gYmUKLSsgICAgIHplcm8tbGVuZ3RoLiAgKi8KLSsgIGlmIChvYmplY3Rf YWRkcmVzc19kYXRhX25vdF92YWxpZCAodHlwZSkpCi0rICAgIHJldHVybiAwOwotKwotKyAgcmFu Z2VfdHlwZSA9IFRZUEVfSU5ERVhfVFlQRSAodHlwZSk7Ci0rICBpZiAoVFlQRV9MT1dfQk9VTkRf VU5ERUZJTkVEIChyYW5nZV90eXBlKQotKyAgICAgIHx8IFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKHJhbmdlX3R5cGUpKQotKyAgICByZXR1cm4gMDsKLSsgIGNvdW50ID0gVFlQRV9ISUdIX0JP VU5EIChyYW5nZV90eXBlKSAtIFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSArIDE7Ci0rICAv KiBJdCBtYXkgaGFwcGVuIGZvciB3cm9uZyBEV0FSRiBhbm5vdGF0aW9ucyByZXR1cm5pbmcgZ2Fy YmFnZSBkYXRhLiAgKi8KLSsgIGlmIChjb3VudCA8IDApCi0rICAgIHdhcm5pbmcgKF8oIlJhbmdl IGZvciB0eXBlICVzIGhhcyBpbnZhbGlkIGJvdW5kcyAlcy4uJXMiKSwKLSsJICAgICBUWVBFX05B TUUgKHR5cGUpLCBwbG9uZ2VzdCAoVFlQRV9MT1dfQk9VTkQgKHJhbmdlX3R5cGUpKSwKLSsJICAg ICBwbG9uZ2VzdCAoVFlQRV9ISUdIX0JPVU5EIChyYW5nZV90eXBlKSkpOwotKyAgLyogVGhlIGNv ZGUgYmVsb3cgZG9lcyBub3QgaGFuZGxlIGNvdW50ID09IDAgcmlnaHQuICAqLwotKyAgaWYgKGNv dW50IDw9IDApCi0rICAgIHJldHVybiAwOwotKyAgaWYgKGZ1bGxfc3BhbiB8fCBjb3VudCA+IDEp Ci0rICAgIHsKLSsgICAgICAvKiBXZSBkbyBub3QgdXNlIFRZUEVfQVJSQVlfQllURV9TVFJJREVf VkFMVUUgKHR5cGUpIGhlcmUgYXMgd2Ugd2FudCB0bwotKyAgICAgICAgIGZvcmNlIEZVTExfU1BB TiB0byAxLiAgKi8KLSsgICAgICBieXRlX3N0cmlkZSA9IFRZUEVfQllURV9TVFJJREUgKHJhbmdl X3R5cGUpOwotKyAgICAgIGlmIChieXRlX3N0cmlkZSA9PSAwKQotKyAgICAgICAgewotKwkgIGlm ICh0YXJnZXRfdHlwZSA9PSBOVUxMKQotKwkgICAgdGFyZ2V0X3R5cGUgPSBjaGVja190eXBlZGVm IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0rCSAgYnl0ZV9zdHJpZGUgPSB0eXBlX2xlbmd0 aF9nZXQgKHRhcmdldF90eXBlLCBOVUxMLCAxKTsKLSsJfQotKyAgICB9Ci0rCi0rICAvKiBGb3Ig bm93LCB3ZSBjb25zZXJ2YXRpdmVseSB0YWtlIHRoZSBhcnJheSBsZW5ndGggdG8gYmUgMCBpZiBp dHMgbGVuZ3RoCi0rICAgICBleGNlZWRzIFVJTlRfTUFYLiAgVGhlIGNvZGUgYmVsb3cgYXNzdW1l cyB0aGF0IGZvciB4IDwgMCwKLSsgICAgIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNUX01B WCArIDEsIHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBndWFyYW50ZWVkCi0rICAgICBieSBDLCBi dXQgaXMgdXN1YWxseSB0cnVlIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3ZXJlIHVu c2lnbmVkCi0rICAgICB3aXRoIGl0cyBoaWdoLW9yZGVyIGJpdCBvbikuIEl0IHVzZXMgdGhlIGZh Y3QgdGhhdCBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcwotKyAgICAgYWx3YXlzIHJlcHJlc2VudGFi bGUgaW4gVUxPTkdFU1QgYW5kIHRoYXQgaWYgaGlnaF9ib3VuZC1sb3dfYm91bmQrMQotKyAgICAg b3ZlcmZsb3dzLCBpdCBvdmVyZmxvd3MgdG8gMC4gIFdlIG11c3QgY2hhbmdlIHRoZXNlIHRlc3Rz IGlmIHdlIGRlY2lkZSB0bwotKyAgICAgaW5jcmVhc2UgdGhlIHJlcHJlc2VudGF0aW9uIG9mIFRZ UEVfTEVOR1RIIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULgotKyAgICAgKi8KLSsKLSsg IGlmIChmdWxsX3NwYW4pCi0rICAgIHsKLSsgICAgICByZXR2YWwgPSBjb3VudCAqIGJ5dGVfc3Ry aWRlOwotKyAgICAgIGlmIChjb3VudCA9PSAwIHx8IHJldHZhbCAvIGNvdW50ICE9IGJ5dGVfc3Ry aWRlIHx8IHJldHZhbCA+IFVJTlRfTUFYKQotKwlyZXR2YWwgPSAwOwotKyAgICAgIHJldHVybiBy ZXR2YWw7Ci0rICAgIH0KLSsgIGlmICh0YXJnZXRfdHlwZSA9PSBOVUxMKQotKyAgICB0YXJnZXRf dHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKTsKLSsgIGVsZW1l bnRfc2l6ZSA9IHR5cGVfbGVuZ3RoX2dldCAodGFyZ2V0X3R5cGUsIE5VTEwsIDEpOwotKyAgcmV0 dmFsID0gKGNvdW50IC0gMSkgKiBieXRlX3N0cmlkZSArIGVsZW1lbnRfc2l6ZTsKLSsgIGlmIChy ZXR2YWwgPCBlbGVtZW50X3NpemUKLSsgICAgICB8fCAoYnl0ZV9zdHJpZGUgIT0gMAotKyAgICAg ICAgICAmJiAocmV0dmFsIC0gZWxlbWVudF9zaXplKSAvIGJ5dGVfc3RyaWRlICE9IGNvdW50IC0g MSkKLSsgICAgICB8fCByZXR2YWwgPiBVSU5UX01BWCkKLSsgICAgcmV0dmFsID0gMDsKLSsgIHJl dHVybiByZXR2YWw7Ci0rfQotKwotKy8qIFByZXBhcmUgVFlQRSBhZnRlciBiZWluZyByZWFkIGlu IGJ5IHRoZSBiYWNrZW5kLiAgQ3VycmVudGx5IHRoaXMgZnVuY3Rpb24KLSsgICBvbmx5IHByb3Bh Z2F0ZXMgdGhlIFRZUEVfRFlOQU1JQyBmbGFnLiAgKi8KLSsKLSt2b2lkCi0rZmluYWxpemVfdHlw ZSAoc3RydWN0IHR5cGUgKnR5cGUpCi0rewotKyAgaW50IGk7Ci0rCi0rICBmb3IgKGkgPSAwOyBp IDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytpKQotKyAgICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBpKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgaSkpKQotKyAg ICAgIGJyZWFrOwotKwotKyAgLyogRklYTUU6IGNwbHVzX3N0dWZmIGlzIGlnbm9yZWQgaGVyZS4g ICovCi0rICBpZiAoaSA8IFRZUEVfTkZJRUxEUyAodHlwZSkKLSsgICAgICB8fCAoVFlQRV9WUFRS X0JBU0VUWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMgKFRZUEVfVlBUUl9CQVNFVFlQRSAodHlw ZSkpKQotKyAgICAgIHx8IChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSAmJiBUWVBFX0RZTkFNSUMg KFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpKSkpCi0rICAgIFRZUEVfRFlOQU1JQyAodHlwZSkgPSAx OwotK30KLSsKLSAvKiBBZGRlZCBieSBCcnlhbiBCb3JlaGFtLCBLZXdpbGwsIFN1biBTZXAgMTcg MTg6MDc6MTcgMTk4OS4KLSAKLSAgICBJZiB0aGlzIGlzIGEgc3R1YmJlZCBzdHJ1Y3QgKGkuZS4g ZGVjbGFyZWQgYXMgc3RydWN0IGZvbyAqKSwgc2VlIGlmCi1AQCAtMTQ4Niw1MiArMTY0NiwzNiBA QCBjaGVja190eXBlZGVmIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgICAgICAgIH0KLSAgICAgfQot IAotLSAgaWYgKFRZUEVfVEFSR0VUX1NUVUIgKHR5cGUpKQotKyAgLyogY29weV90eXBlX3JlY3Vy c2l2ZSBhdXRvbWF0aWNhbGx5IG1ha2VzIHRoZSByZXN1bHRpbmcgdHlwZSBjb250YWluaW5nIG9u bHkKLSsgICAgIGNvbnN0YW50IHZhbHVlcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycyBvZiB0aGlz IGZ1bmN0aW9uLiAgKi8KLSsgIGlmIChUWVBFX0RZTkFNSUMgKHR5cGUpKQotKyAgICB7Ci0rICAg ICAgaHRhYl90IGNvcGllZF90eXBlczsKLSsgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZV9vbGQgPSB0 eXBlOwotKwotKyAgICAgIGNvcGllZF90eXBlcyA9IGNyZWF0ZV9jb3BpZWRfdHlwZXNfaGFzaCAo TlVMTCk7Ci0rICAgICAgdHlwZSA9IGNvcHlfdHlwZV9yZWN1cnNpdmUgKHR5cGUsIGNvcGllZF90 eXBlcyk7Ci0rICAgICAgaHRhYl9kZWxldGUgKGNvcGllZF90eXBlcyk7Ci0rCi0rICAgICAgZ2Ri X2Fzc2VydCAoVFlQRV9EWU5BTUlDICh0eXBlKSA9PSAwKTsKLSsgICAgfQotKwotKyAgaWYgKFRZ UEVfVEFSR0VUX1NUVUIgKHR5cGUpIHx8IFRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHsKLS0g ICAgICBzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZTsKLSAgICAgICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0 X3R5cGUgPSBjaGVja190eXBlZGVmIChUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSk7Ci0gCi0rICAg ICAgaWYgKFRZUEVfRFlOQU1JQyAodHlwZSkpCi0rCVRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpID0g dGFyZ2V0X3R5cGU7Ci0gICAgICAgaWYgKFRZUEVfU1RVQiAodGFyZ2V0X3R5cGUpIHx8IFRZUEVf VEFSR0VUX1NUVUIgKHRhcmdldF90eXBlKSkKLSAJewotIAkgIC8qIEVtcHR5LiAgKi8KLSAJfQot ICAgICAgIGVsc2UgaWYgKFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX0FSUkFZCi0tCSAg ICAgICAmJiBUWVBFX05GSUVMRFMgKHR5cGUpID09IDEKLS0JICAgICAgICYmIChUWVBFX0NPREUg KHJhbmdlX3R5cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpKQotLQkJICAgPT0gVFlQRV9DT0RF X1JBTkdFKSkKLSsJICAgICAgIHx8IFRZUEVfQ09ERSAodHlwZSkgPT0gVFlQRV9DT0RFX1NUUklO RykKLSAJewotIAkgIC8qIE5vdyByZWNvbXB1dGUgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkgdHlw ZSwgYmFzZWQgb24gaXRzCi0tCSAgICAgbnVtYmVyIG9mIGVsZW1lbnRzIGFuZCB0aGUgdGFyZ2V0 IHR5cGUncyBsZW5ndGguCi0tCSAgICAgV2F0Y2ggb3V0IGZvciBBZGEgbnVsbCBBZGEgYXJyYXlz IHdoZXJlIHRoZSBoaWdoIGJvdW5kCi0tCSAgICAgaXMgc21hbGxlciB0aGFuIHRoZSBsb3cgYm91 bmQuICovCi0tCSAgY29uc3QgTE9OR0VTVCBsb3dfYm91bmQgPSBUWVBFX0xPV19CT1VORCAocmFu Z2VfdHlwZSk7Ci0tCSAgY29uc3QgTE9OR0VTVCBoaWdoX2JvdW5kID0gVFlQRV9ISUdIX0JPVU5E IChyYW5nZV90eXBlKTsKLS0JICBVTE9OR0VTVCBsZW47Ci0tCi0tCSAgaWYgKGhpZ2hfYm91bmQg PCBsb3dfYm91bmQpCi0tCSAgICBsZW4gPSAwOwotLQkgIGVsc2UKLS0JICAgIHsKLS0JICAgICAg LyogRm9yIG5vdywgd2UgY29uc2VydmF0aXZlbHkgdGFrZSB0aGUgYXJyYXkgbGVuZ3RoIHRvIGJl IDAKLS0JCSBpZiBpdHMgbGVuZ3RoIGV4Y2VlZHMgVUlOVF9NQVguICBUaGUgY29kZSBiZWxvdyBh c3N1bWVzCi0tCQkgdGhhdCBmb3IgeCA8IDAsIChVTE9OR0VTVCkgeCA9PSAteCArIFVMT05HRVNU X01BWCArIDEsCi0tCQkgd2hpY2ggaXMgdGVjaG5pY2FsbHkgbm90IGd1YXJhbnRlZWQgYnkgQywg YnV0IGlzIHVzdWFsbHkgdHJ1ZQotLQkJIChiZWNhdXNlIGl0IHdvdWxkIGJlIHRydWUgaWYgeCB3 ZXJlIHVuc2lnbmVkIHdpdGggaXRzCi0tCQkgaGlnaC1vcmRlciBiaXQgb24pLiBJdCB1c2VzIHRo ZSBmYWN0IHRoYXQKLS0JCSBoaWdoX2JvdW5kLWxvd19ib3VuZCBpcyBhbHdheXMgcmVwcmVzZW50 YWJsZSBpbgotLQkJIFVMT05HRVNUIGFuZCB0aGF0IGlmIGhpZ2hfYm91bmQtbG93X2JvdW5kKzEg b3ZlcmZsb3dzLAotLQkJIGl0IG92ZXJmbG93cyB0byAwLiAgV2UgbXVzdCBjaGFuZ2UgdGhlc2Ug dGVzdHMgaWYgd2UgCi0tCQkgZGVjaWRlIHRvIGluY3JlYXNlIHRoZSByZXByZXNlbnRhdGlvbiBv ZiBUWVBFX0xFTkdUSAotLQkJIGZyb20gdW5zaWduZWQgaW50IHRvIFVMT05HRVNULiAqLwotLQkg ICAgICBVTE9OR0VTVCB1bG93ID0gbG93X2JvdW5kLCB1aGlnaCA9IGhpZ2hfYm91bmQ7Ci0tCSAg ICAgIFVMT05HRVNUIHRsZW4gPSBUWVBFX0xFTkdUSCAodGFyZ2V0X3R5cGUpOwotLQotLQkgICAg ICBsZW4gPSB0bGVuICogKHVoaWdoIC0gdWxvdyArIDEpOwotLQkgICAgICBpZiAodGxlbiA9PSAw IHx8IChsZW4gLyB0bGVuIC0gMSArIHVsb3cpICE9IHVoaWdoIAotLQkJICB8fCBsZW4gPiBVSU5U X01BWCkKLS0JCWxlbiA9IDA7Ci0tCSAgICB9Ci0tCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gbGVu OwotKwkgICAgIG51bWJlciBvZiBlbGVtZW50cyBhbmQgdGhlIHRhcmdldCB0eXBlJ3MgbGVuZ3Ro LiAgKi8KLSsJICBUWVBFX0xFTkdUSCAodHlwZSkgPSB0eXBlX2xlbmd0aF9nZXQgKHR5cGUsIHRh cmdldF90eXBlLCAwKTsKLSAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7Ci0gCX0KLSAg ICAgICBlbHNlIGlmIChUWVBFX0NPREUgKHR5cGUpID09IFRZUEVfQ09ERV9SQU5HRSkKLUBAIC0x NTM5LDkgKzE2ODMsMTIgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0IHR5cGUgKnR5cGUpCi0gCSAg VFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5HVEggKHRhcmdldF90eXBlKTsKLSAJICBUWVBF X1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7Ci0gCX0KLSsgICAgICBUWVBFX0RZTkFNSUMgKHR5cGUp ID0gMDsKLSAgICAgfQotKwotICAgLyogQ2FjaGUgVFlQRV9MRU5HVEggZm9yIGZ1dHVyZSB1c2Uu ICAqLwotICAgVFlQRV9MRU5HVEggKG9yaWdfdHlwZSkgPSBUWVBFX0xFTkdUSCAodHlwZSk7Ci0r Ci0gICByZXR1cm4gdHlwZTsKLSB9Ci0gCi1AQCAtMTgxMSw2ICsxOTU4LDggQEAgaW5pdF90eXBl IChlbnVtIHR5cGVfY29kZSBjb2RlLCBpbnQgbGVuZ3RoLCBpbnQgZmxhZ3MsCi0gICAgIFRZUEVf Tk9UVEVYVCAodHlwZSkgPSAxOwotICAgaWYgKGZsYWdzICYgVFlQRV9GTEFHX0ZJWEVEX0lOU1RB TkNFKQotICAgICBUWVBFX0ZJWEVEX0lOU1RBTkNFICh0eXBlKSA9IDE7Ci0rICBpZiAoZmxhZ3Mg JiBUWVBFX0ZMQUdfR05VX0lGVU5DKQotKyAgICBUWVBFX0dOVV9JRlVOQyAodHlwZSkgPSAxOwot IAotICAgaWYgKG5hbWUpCi0gICAgIFRZUEVfTkFNRSAodHlwZSkgPSBvYnNhdmVzdHJpbmcgKG5h bWUsIHN0cmxlbiAobmFtZSksCi1AQCAtMzAwNiwzMyArMzE1NSw0MiBAQCB0eXBlX3BhaXJfZXEg KGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykKLSB9Ci0gCi0gLyog QWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVjdXJzaXZlIHRvIHdh bGsKLS0gICB0eXBlcyB3aXRob3V0IGR1cGxpY2F0ZXMuICBXZSB1c2UgT0JKRklMRSdzIG9ic3Rh Y2ssIGJlY2F1c2UKLS0gICBPQkpGSUxFIGlzIGFib3V0IHRvIGJlIGRlbGV0ZWQuICAqLwotKyAg IHR5cGVzIHdpdGhvdXQgZHVwbGljYXRlcy4gICAqLwotIAotIGh0YWJfdAotIGNyZWF0ZV9jb3Bp ZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0gewotLSAgcmV0dXJuIGh0 YWJfY3JlYXRlX2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotLQkJ CSAgICAgICBOVUxMLCAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJCSAgICAgICBoYXNo dGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJICAgICAgIGR1bW15X29ic3RhY2tfZGVhbGxvY2F0 ZSk7Ci0rICBpZiAob2JqZmlsZSA9PSBOVUxMKQotKyAgICB7Ci0rICAgICAgLyogTlVMTCBPQkpG SUxFIGlzIGZvciBUWVBFX0RZTkFNSUMgdHlwZXMgYWxyZWFkeSBjb250YWluZWQgaW4KLSsJIE9C SkZJTEVfTUFMTE9DIG1lbW9yeSwgc3VjaCBhcyB0aG9zZSBmcm9tIFZBTFVFX0hJU1RPUllfQ0hB SU4uICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQgYnkgeG1hbGxvYyAt IHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRlICgxLCB0eXBlX3Bh aXJfaGFzaCwgdHlwZV9wYWlyX2VxLCB4ZnJlZSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewot KyAgICAgIC8qIFVzZSBPQkpGSUxFJ3Mgb2JzdGFjaywgYmVjYXVzZSBPQkpGSUxFIGlzIGFib3V0 IHRvIGJlIGRlbGV0ZWQuICBUYWJsZQotKwkgZWxlbWVudCBlbnRyaWVzIGdldCBhbGxvY2F0ZWQg YnkgeG1hbGxvYyAtIHNvIHVzZSB4ZnJlZS4gICovCi0rICAgICAgcmV0dXJuIGh0YWJfY3JlYXRl X2FsbG9jX2V4ICgxLCB0eXBlX3BhaXJfaGFzaCwgdHlwZV9wYWlyX2VxLAotKwkJCQkgICB4ZnJl ZSwgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkJICAgaGFzaHRhYl9vYnN0YWNrX2Fs bG9jYXRlLAotKwkJCQkgICBkdW1teV9vYnN0YWNrX2RlYWxsb2NhdGUpOwotKyAgICB9Ci0gfQot IAotLS8qIFJlY3Vyc2l2ZWx5IGNvcHkgKGRlZXAgY29weSkgVFlQRSwgaWYgaXQgaXMgYXNzb2Np YXRlZCB3aXRoCi0tICAgT0JKRklMRS4gIFJldHVybiBhIG5ldyB0eXBlIGFsbG9jYXRlZCB1c2lu ZyBtYWxsb2MsIGEgc2F2ZWQgdHlwZSBpZgotLSAgIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkIFRZ UEUgKHVzaW5nIENPUElFRF9UWVBFUyksIG9yIFRZUEUgaWYgaXQgaXMKLS0gICBub3QgYXNzb2Np YXRlZCB3aXRoIE9CSkZJTEUuICAqLwotKy8qIEEgaGVscGVyIGZvciBjb3B5X3R5cGVfcmVjdXJz aXZlLiAgVGhpcyBkb2VzIGFsbCB0aGUgd29yay4gIE9CSkZJTEUgaXMgdXNlZAotKyAgIG9ubHkg Zm9yIGFuIGFzc2VydGlvbiBjaGVja2luZy4gICovCi0gCi0tc3RydWN0IHR5cGUgKgotLWNvcHlf dHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCAKLS0JCSAgICAgc3RydWN0 IHR5cGUgKnR5cGUsCi0tCQkgICAgIGh0YWJfdCBjb3BpZWRfdHlwZXMpCi0rc3RhdGljIHN0cnVj dCB0eXBlICoKLStjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LCAKLSsJCSAgICAgICBzdHJ1Y3QgdHlwZSAqdHlwZSwKLSsJCSAgICAgICBodGFiX3QgY29waWVk X3R5cGVzKQotIHsKLSAgIHN0cnVjdCB0eXBlX3BhaXIgKnN0b3JlZCwgcGFpcjsKLSAgIHZvaWQg KipzbG90OwotICAgc3RydWN0IHR5cGUgKm5ld190eXBlOwotIAotLSAgaWYgKCEgVFlQRV9PQkpG SUxFX09XTkVEICh0eXBlKSkKLSsgIGlmICghIFRZUEVfT0JKRklMRV9PV05FRCAodHlwZSkgJiYg IVRZUEVfRFlOQU1JQyAodHlwZSkpCi0gICAgIHJldHVybiB0eXBlOwotIAotICAgLyogVGhpcyB0 eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7 Ci1AQCAtMzA0Nyw4ICszMjA1LDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotICAgbmV3X3R5cGUgPSBhbGxvY190eXBlX2FyY2ggKGdldF90eXBlX2Fy Y2ggKHR5cGUpKTsKLSAKLSAgIC8qIFdlIG11c3QgYWRkIHRoZSBuZXcgdHlwZSB0byB0aGUgaGFz aCB0YWJsZSBpbW1lZGlhdGVseSwgaW4gY2FzZQotLSAgICAgd2UgZW5jb3VudGVyIHRoaXMgdHlw ZSBhZ2FpbiBkdXJpbmcgYSByZWN1cnNpdmUgY2FsbCBiZWxvdy4gICovCi0tICBzdG9yZWQgPSBv YnN0YWNrX2FsbG9jICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzaXplb2YgKHN0cnVjdCB0 eXBlX3BhaXIpKTsKLSsgICAgIHdlIGVuY291bnRlciB0aGlzIHR5cGUgYWdhaW4gZHVyaW5nIGEg cmVjdXJzaXZlIGNhbGwgYmVsb3cuICBNZW1vcnkgY291bGQKLSsgICAgIGJlIGFsbG9jYXRlZCBm cm9tIE9CSkZJTEUgaW4gdGhlIGNhc2Ugd2Ugd2lsbCBiZSByZW1vdmluZyBPQkpGSUxFLCB0aGlz Ci0rICAgICBvcHRpbWl6YXRpb24gaXMgbWlzc2VkIGFuZCB4ZnJlZSBpcyBjYWxsZWQgZm9yIGl0 IGZyb20gQ09QSUVEX1RZUEVTLiAgKi8KLSsgIHN0b3JlZCA9IHhtYWxsb2MgKHNpemVvZiAoKnN0 b3JlZCkpOwotICAgc3RvcmVkLT5vbGQgPSB0eXBlOwotICAgc3RvcmVkLT5uZXcgPSBuZXdfdHlw ZTsKLSAgICpzbG90ID0gc3RvcmVkOwotQEAgLTMwNTksNiArMzIxOSwxOSBAQCBjb3B5X3R5cGVf cmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVfT0JKRklMRV9PV05F RCAobmV3X3R5cGUpID0gMDsKLSAgIFRZUEVfT1dORVIgKG5ld190eXBlKS5nZGJhcmNoID0gZ2V0 X3R5cGVfYXJjaCAodHlwZSk7Ci0gCi0rICAvKiBUWVBFX01BSU5fVFlQRSBtZW1vcnkgY29weSBh Ym92ZSByZXdyb3RlIHRoZSBUWVBFX0RJU0NBUkRBQkxFIGZsYWcgc28gd2UKLSsgICAgIG5lZWQg dG8gaW5pdGlhbGl6ZSBpdCBhZ2Fpbi4gIEFuZCBldmVuIGlmIFRZUEUgd2FzIGFscmVhZHkgZGlz Y2FyZGFibGUKLSsgICAgIE5FV19UWVBFIHNvIGZhciBpcyBub3QgcmVnaXN0ZXJlZCBpbiBUWVBF X0RJU0NBUkRBQkxFX1RBQkxFLiAgKi8KLSsgIFRZUEVfRElTQ0FSREFCTEUgKG5ld190eXBlKSA9 IDA7Ci0rICBzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAobmV3X3R5cGUpOwotKwotKyAgLyogUHJl LWNsZWFyIHRoZSBmaWVsZHMgcHJvY2Vzc2VkIGJ5IGRlbGV0ZV9tYWluX3R5cGUuICBJZiBEV0FS RiBibG9jawotKyAgICAgZXZhbHVhdGlvbnMgYmVsb3cgY2FsbCBlcnJvciB3ZSB3b3VsZCBsZWF2 ZSBhbiB1bmZyZWVhYmxlIFRZUEUuICAqLwotKyAgVFlQRV9UQVJHRVRfVFlQRSAobmV3X3R5cGUp ID0gTlVMTDsKLSsgIFRZUEVfVlBUUl9CQVNFVFlQRSAobmV3X3R5cGUpID0gTlVMTDsKLSsgIFRZ UEVfTkZJRUxEUyAobmV3X3R5cGUpID0gMDsKLSsgIFRZUEVfRklFTERTIChuZXdfdHlwZSkgPSBO VUxMOwotKwotICAgaWYgKFRZUEVfTkFNRSAodHlwZSkpCi0gICAgIFRZUEVfTkFNRSAobmV3X3R5 cGUpID0geHN0cmR1cCAoVFlQRV9OQU1FICh0eXBlKSk7Ci0gICBpZiAoVFlQRV9UQUdfTkFNRSAo dHlwZSkpCi1AQCAtMzA2NywxMiArMzI0MCw0OCBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAgIFRZUEVfSU5TVEFOQ0VfRkxBR1MgKG5ld190eXBlKSA9 IFRZUEVfSU5TVEFOQ0VfRkxBR1MgKHR5cGUpOwotICAgVFlQRV9MRU5HVEggKG5ld190eXBlKSA9 IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSsgIGlmIChUWVBFX0FMTE9DQVRFRCAobmV3X3R5cGUp KQotKyAgICB7Ci0rICAgICAgZ2RiX2Fzc2VydCAoIVRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5 cGUpKTsKLSsKLSsgICAgICBpZiAoIWR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbCAoVFlQRV9BTExP Q0FURUQgKG5ld190eXBlKSkpCi0rICAgICAgICBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBl KSA9IDE7Ci0rICAgICAgVFlQRV9BTExPQ0FURUQgKG5ld190eXBlKSA9IE5VTEw7Ci0rICAgIH0K LSsKLSsgIGlmIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkKLSsgICAgewotKyAgICAgIGdk Yl9hc3NlcnQgKCFUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkpOwotKwotKyAgICAgIGlm ICghZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsIChUWVBFX0FTU09DSUFURUQgKG5ld190eXBlKSkp Ci0rICAgICAgICBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkgPSAxOwotKyAgICAgIFRZ UEVfQVNTT0NJQVRFRCAobmV3X3R5cGUpID0gTlVMTDsKLSsgICAgfQotKwotKyAgaWYgKCFUWVBF X0RBVEFfTE9DQVRJT05fSVNfQUREUiAobmV3X3R5cGUpCi0rICAgICAgJiYgVFlQRV9EQVRBX0xP Q0FUSU9OX0RXQVJGX0JMT0NLIChuZXdfdHlwZSkpCi0rICAgIHsKLSsgICAgICBpZiAoVFlQRV9O T1RfQUxMT0NBVEVEIChuZXdfdHlwZSkKLSsgICAgICAgICAgfHwgVFlQRV9OT1RfQVNTT0NJQVRF RCAobmV3X3R5cGUpKQotKwlUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgKG5ld190eXBl KSA9IE5VTEw7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FE RFIgKG5ld190eXBlKSA9IDE7Ci0rCSAgVFlQRV9EQVRBX0xPQ0FUSU9OX0FERFIgKG5ld190eXBl KSA9IGR3YXJmX2xvY2V4cHJfYmF0b25fZXZhbAotKwkJCQkgICAgKFRZUEVfREFUQV9MT0NBVElP Tl9EV0FSRl9CTE9DSyAobmV3X3R5cGUpKTsKLSsJfQotKyAgICB9Ci0rCi0gICAvKiBDb3B5IHRo ZSBmaWVsZHMuICAqLwotICAgaWYgKFRZUEVfTkZJRUxEUyAodHlwZSkpCi0gICAgIHsKLSAgICAg ICBpbnQgaSwgbmZpZWxkczsKLSAKLSsgICAgICAvKiBUWVBFX0NPREVfUkFOR0UgdXNlcyBUWVBF X1JBTkdFX0RBVEEgb2YgdGhlIHVuaW9uIHdpdGggVFlQRV9GSUVMRFMuICAqLwotKyAgICAgIGdk Yl9hc3NlcnQgKFRZUEVfQ09ERSAodHlwZSkgIT0gVFlQRV9DT0RFX1JBTkdFKTsKLSsKLSAgICAg ICBuZmllbGRzID0gVFlQRV9ORklFTERTICh0eXBlKTsKLSsgICAgICBUWVBFX05GSUVMRFMgKG5l d190eXBlKSA9IG5maWVsZHM7Ci0gICAgICAgVFlQRV9GSUVMRFMgKG5ld190eXBlKSA9IFhDQUxM T0MgKG5maWVsZHMsIHN0cnVjdCBmaWVsZCk7Ci0gICAgICAgZm9yIChpID0gMDsgaSA8IG5maWVs ZHM7IGkrKykKLSAJewotQEAgLTMwODEsOCArMzI5MCw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5 cGUsIGkpID0gVFlQRV9GSUVMRF9CSVRTSVpFICh0eXBlLCBpKTsKLSAJICBpZiAoVFlQRV9GSUVM RF9UWVBFICh0eXBlLCBpKSkKLSAJICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCi0t CSAgICAgID0gY29weV90eXBlX3JlY3Vyc2l2ZSAob2JqZmlsZSwgVFlQRV9GSUVMRF9UWVBFICh0 eXBlLCBpKSwKLS0JCQkJICAgICBjb3BpZWRfdHlwZXMpOwotKwkgICAgICA9IGNvcHlfdHlwZV9y ZWN1cnNpdmVfMSAob2JqZmlsZSwgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSwKLSsJCQkJICAg ICAgIGNvcGllZF90eXBlcyk7Ci0gCSAgaWYgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpCi0g CSAgICBUWVBFX0ZJRUxEX05BTUUgKG5ld190eXBlLCBpKSA9IAotIAkgICAgICB4c3RyZHVwIChU WVBFX0ZJRUxEX05BTUUgKHR5cGUsIGkpKTsKLUBAIC0zMTA5LDI0ICszMzE4LDE2NiBAQCBjb3B5 X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJfQotICAgICB9Ci0g Ci0rICAvKiBCb3RoIEZJRUxEX0xPQ19LSU5EX0RXQVJGX0JMT0NLIGFuZCBUWVBFX1JBTkdFX0hJ R0hfQk9VTkRfSVNfQ09VTlQgd2VyZQotKyAgICAgcG9zc2libHkgY29udmVydGVkLiAgKi8KLSsg IFRZUEVfRFlOQU1JQyAobmV3X3R5cGUpID0gMDsKLSsKLSAgIC8qIEZvciByYW5nZSB0eXBlcywg Y29weSB0aGUgYm91bmRzIGluZm9ybWF0aW9uLiAqLwotLSAgaWYgKFRZUEVfQ09ERSAodHlwZSkg PT0gVFlQRV9DT0RFX1JBTkdFKQotKyAgaWYgKFRZUEVfQ09ERSAobmV3X3R5cGUpID09IFRZUEVf Q09ERV9SQU5HRSkKLSAgICAgewotICAgICAgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpID0g eG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgcmFuZ2VfYm91bmRzKSk7Ci0gICAgICAgKlRZUEVfUkFO R0VfREFUQSAobmV3X3R5cGUpID0gKlRZUEVfUkFOR0VfREFUQSAodHlwZSk7Ci0rCi0rICAgICAg c3dpdGNoIChUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LmtpbmQpCi0rCXsKLSsJY2Fz ZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv bicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQg dG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FM TE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgot KwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVf Tk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMg KCkpCi0rCSAgICB7Ci0rCSAgICAgIC8qIFdlIHNob3VsZCBzZXQgMSBmb3IgRm9ydHJhbiBidXQg aG93IHRvIGZpbmQgdGhlIGxhbmd1YWdlPyAgKi8KLSsJICAgICAgVFlQRV9MT1dfQk9VTkQgKG5l d190eXBlKSA9IDA7Ci0rCSAgICAgIFRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUp ID0gMTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICBUWVBFX0xPV19CT1VORCAobmV3X3R5cGUp ID0gZHdhcmZfbG9jZXhwcl9iYXRvbl9ldmFsCi0rCQkJCShUWVBFX1JBTkdFX0RBVEEgKG5ld190 eXBlKS0+bG93LnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUp LT5sb3cua2luZCA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJlYWs7Ci0rCWNh c2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAgIENPUkVfQURE UiBhZGRyOwotKwotKwkgICAgLyogYHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbicgaXMgdG9v IGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgICBpdCBpcyBleHBlY3RlZCB0byBiZSBt YWRlIGNvbnN0YW50IGJ5IENIRUNLX1RZUEVERUYuCi0rCSAgICAgICBUWVBFX05PVF9BTExPQ0FU RUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxpZCBmb3IgVFlQRS4KLSsJICAg ICAgICovCi0rCSAgICBpZiAoISBUWVBFX05PVF9BTExPQ0FURUQgKG5ld190eXBlKQotKwkgICAg ICAgICYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFja19mcmFt ZXMgKCkKLSsJICAgICAgICAmJiBkd2FyZl9sb2NsaXN0X2JhdG9uX2V2YWwKLSsJCSAgKFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5sb3cudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQkg ICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+bG93LnUuZHdhcmZfbG9jbGlzdC50eXBlLCAm YWRkcikpCi0rCSAgICAgIFRZUEVfTE9XX0JPVU5EIChuZXdfdHlwZSkgPSBhZGRyOwotKwkgICAg ZWxzZQotKwkgICAgICB7Ci0rCQkvKiBXZSBzaG91bGQgc2V0IDEgZm9yIEZvcnRyYW4gYnV0IGhv dyB0byBmaW5kIHRoZSBsYW5ndWFnZT8gICovCi0rCQlUWVBFX0xPV19CT1VORCAobmV3X3R5cGUp ID0gMDsKLSsJCVRZUEVfTE9XX0JPVU5EX1VOREVGSU5FRCAobmV3X3R5cGUpID0gMTsKLSsJICAg ICAgfQotKwkgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmxvdy5raW5kID0gUkFOR0Vf Qk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsgICAgICBz d2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQpCi0rCXsKLSsJY2Fz ZSBSQU5HRV9CT1VORF9LSU5EX0NPTlNUQU5UOgotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JP VU5EX0tJTkRfRFdBUkZfQkxPQ0s6Ci0rCSAgLyogYHN0cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRv bicgaXMgdG9vIGJvdW5kIHRvIGl0cyBvYmpmaWxlIHNvCi0rCSAgICAgaXQgaXMgZXhwZWN0ZWQg dG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgIFRZUEVfTk9UX0FM TE9DQVRFRCBhbmQgVFlQRV9OT1RfQVNTT0NJQVRFRCBhcmUgbm90IHZhbGlkIGZvciBUWVBFLgot KwkgICAgICovCi0rCSAgaWYgKFRZUEVfTk9UX0FMTE9DQVRFRCAobmV3X3R5cGUpIHx8IFRZUEVf Tk9UX0FTU09DSUFURUQgKG5ld190eXBlKQotKwkgICAgICB8fCAhIGhhc19zdGFja19mcmFtZXMg KCkpCi0rCSAgICB7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9M T1dfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgICAgIFRZUEVfSElHSF9CT1VORF9VTkRFRklO RUQgKG5ld190eXBlKSA9IDE7Ci0rCSAgICB9Ci0rCSAgZWxzZQotKwkgICAgVFlQRV9ISUdIX0JP VU5EIChuZXdfdHlwZSkgPSBkd2FyZl9sb2NleHByX2JhdG9uX2V2YWwKLSsJCQkgICAgICAgKFRZ UEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVf UkFOR0VfREFUQSAobmV3X3R5cGUpLT5oaWdoLmtpbmQgPSBSQU5HRV9CT1VORF9LSU5EX0NPTlNU QU5UOwotKwkgIGJyZWFrOwotKwljYXNlIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVDoK LSsJICB7Ci0rCSAgICBDT1JFX0FERFIgYWRkcjsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYy X2xvY2xpc3RfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAg aXQgaXMgZXhwZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkg ICAgICAgVFlQRV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3Qg dmFsaWQgZm9yIFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NB VEVEIChuZXdfdHlwZSkKLSsJICAgICAgICAmJiAhIFRZUEVfTk9UX0FTU09DSUFURUQgKG5ld190 eXBlKSAmJiBoYXNfc3RhY2tfZnJhbWVzICgpCi0rCSAgICAgICAgJiYgZHdhcmZfbG9jbGlzdF9i YXRvbl9ldmFsCi0rCQkgICAgICAoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmhpZ2gudS5k d2FyZl9sb2NsaXN0LmxvY2xpc3QsCi0rCQkgICAgICAgVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlw ZSktPmhpZ2gudS5kd2FyZl9sb2NsaXN0LnR5cGUsCi0rCQkgICAgICAgJmFkZHIpKQotKwkgICAg ICBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSA9IGFkZHI7Ci0rCSAgICBlbHNlCi0rCSAgICAg IHsKLSsJCVRZUEVfSElHSF9CT1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190 eXBlKSAtIDE7Ci0rCQlUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChuZXdfdHlwZSkgPSAxOwot KwkgICAgICB9Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+aGlnaC5raW5kID0g UkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSsKLSsg ICAgICBzd2l0Y2ggKFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS5raW5k KQotKwl7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVDoKLSsJICBicmVhazsKLSsJ Y2FzZSBSQU5HRV9CT1VORF9LSU5EX0RXQVJGX0JMT0NLOgotKwkgIC8qIGBzdHJ1Y3QgZHdhcmYy X2xvY2V4cHJfYmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgIGl0 IGlzIGV4cGVjdGVkIHRvIGJlIG1hZGUgY29uc3RhbnQgYnkgQ0hFQ0tfVFlQRURFRi4KLSsJICAg ICBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQgYXJlIG5vdCB2YWxp ZCBmb3IgVFlQRS4KLSsJICAgICAqLwotKwkgIGlmIChUWVBFX05PVF9BTExPQ0FURUQgKG5ld190 eXBlKSB8fCBUWVBFX05PVF9BU1NPQ0lBVEVEIChuZXdfdHlwZSkKLSsJICAgICAgfHwgISBoYXNf c3RhY2tfZnJhbWVzICgpKQotKwkgICAgVFlQRV9CWVRFX1NUUklERSAobmV3X3R5cGUpID0gMDsK LSsJICBlbHNlCi0rCSAgICBUWVBFX0JZVEVfU1RSSURFIChuZXdfdHlwZSkgPSBkd2FyZl9sb2Nl eHByX2JhdG9uX2V2YWwKLSsJCQkoVFlQRV9SQU5HRV9EQVRBIChuZXdfdHlwZSktPmJ5dGVfc3Ry aWRlLnUuZHdhcmZfYmxvY2spOwotKwkgIFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRl X3N0cmlkZS5raW5kCi0rCSAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgYnJl YWs7Ci0rCWNhc2UgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9MT0NMSVNUOgotKwkgIHsKLSsJICAg IENPUkVfQUREUiBhZGRyID0gMDsKLSsKLSsJICAgIC8qIGBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24nIGlzIHRvbyBib3VuZCB0byBpdHMgb2JqZmlsZSBzbwotKwkgICAgICAgaXQgaXMgZXhw ZWN0ZWQgdG8gYmUgbWFkZSBjb25zdGFudCBieSBDSEVDS19UWVBFREVGLgotKwkgICAgICAgVFlQ RV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZSBub3QgdmFsaWQgZm9y IFRZUEUuCi0rCSAgICAgICAqLwotKwkgICAgaWYgKCEgVFlQRV9OT1RfQUxMT0NBVEVEIChuZXdf dHlwZSkKLSsJCSYmICEgVFlQRV9OT1RfQVNTT0NJQVRFRCAobmV3X3R5cGUpICYmIGhhc19zdGFj a19mcmFtZXMgKCkpCi0rCSAgICAgIGR3YXJmX2xvY2xpc3RfYmF0b25fZXZhbAotKwkgICAgICAg KFRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3YXJmX2xvY2xpc3Qu bG9jbGlzdCwKLSsJCVRZUEVfUkFOR0VfREFUQSAobmV3X3R5cGUpLT5ieXRlX3N0cmlkZS51LmR3 YXJmX2xvY2xpc3QudHlwZSwKLSsJCSZhZGRyKTsKLSsJICAgIFRZUEVfQllURV9TVFJJREUgKG5l d190eXBlKSA9IGFkZHI7Ci0rCSAgICBUWVBFX1JBTkdFX0RBVEEgKG5ld190eXBlKS0+Ynl0ZV9z dHJpZGUua2luZAotKwkgICAgICA9IFJBTkdFX0JPVU5EX0tJTkRfQ09OU1RBTlQ7Ci0rCSAgfQot KwkgIGJyZWFrOwotKwl9Ci0rCi0rICAgICAgLyogQ29udmVydCBUWVBFX1JBTkdFX0hJR0hfQk9V TkRfSVNfQ09VTlQgaW50byBhIHJlZ3VsYXIgYm91bmQuICAqLwotKyAgICAgIGlmIChUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQgKG5ld190eXBlKSkKLSsJewotKwkgIFRZUEVfSElHSF9C T1VORCAobmV3X3R5cGUpID0gVFlQRV9MT1dfQk9VTkQgKG5ld190eXBlKQotKwkJCQkgICAgICAg KyBUWVBFX0hJR0hfQk9VTkQgKG5ld190eXBlKSAtIDE7Ci0rCSAgVFlQRV9SQU5HRV9ISUdIX0JP VU5EX0lTX0NPVU5UIChuZXdfdHlwZSkgPSAwOwotKwl9Ci0gICAgIH0KLSAKLSAgIC8qIENvcHkg cG9pbnRlcnMgdG8gb3RoZXIgdHlwZXMuICAqLwotICAgaWYgKFRZUEVfVEFSR0VUX1RZUEUgKHR5 cGUpKQotICAgICBUWVBFX1RBUkdFVF9UWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5 cGVfcmVjdXJzaXZlIChvYmpmaWxlLCAKLS0JCQkgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwK LS0JCQkgICBjb3BpZWRfdHlwZXMpOwotKyAgICAgIGNvcHlfdHlwZV9yZWN1cnNpdmVfMSAob2Jq ZmlsZSwgCi0rCQkJICAgICBUWVBFX1RBUkdFVF9UWVBFICh0eXBlKSwKLSsJCQkgICAgIGNvcGll ZF90eXBlcyk7Ci0gICBpZiAoVFlQRV9WUFRSX0JBU0VUWVBFICh0eXBlKSkKLSAgICAgVFlQRV9W UFRSX0JBU0VUWVBFIChuZXdfdHlwZSkgPSAKLS0gICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlIChv YmpmaWxlLAotLQkJCSAgIFRZUEVfVlBUUl9CQVNFVFlQRSAodHlwZSksCi0tCQkJICAgY29waWVk X3R5cGVzKTsKLSsgICAgICBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKG9iamZpbGUsCi0rCQkJICAg ICBUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUpLAotKwkJCSAgICAgY29waWVkX3R5cGVzKTsKLSAg IC8qIE1heWJlIGNvcHkgdGhlIHR5cGVfc3BlY2lmaWMgYml0cy4KLSAKLSAgICAgIE5PVEUgZHJv dy8yMDA1LTEyLTA5OiBXZSBkbyBub3QgY29weSB0aGUgQysrLXNwZWNpZmljIGJpdHMgbGlrZQot QEAgLTMxNDMsNiArMzQ5NCwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0rLyogUmVjdXJzaXZlbHkg Y29weSAoZGVlcCBjb3B5KSBUWVBFLiAgUmV0dXJuIGEgbmV3IHR5cGUgYWxsb2NhdGVkIHVzaW5n Ci0rICAgbWFsbG9jLCBhIHNhdmVkIHR5cGUgaWYgd2UgaGF2ZSBhbHJlYWR5IHZpc2l0ZWQgVFlQ RSAodXNpbmcgQ09QSUVEX1RZUEVTKSwKLSsgICBvciBUWVBFIGlmIGl0IGlzIG5vdCBhc3NvY2lh dGVkIHdpdGggT0JKRklMRS4gICovCi0rCi0rc3RydWN0IHR5cGUgKgotK2NvcHlfdHlwZV9yZWN1 cnNpdmUgKHN0cnVjdCB0eXBlICp0eXBlLAotKwkJICAgICBodGFiX3QgY29waWVkX3R5cGVzKQot K3sKLSsgIHJldHVybiBjb3B5X3R5cGVfcmVjdXJzaXZlXzEgKFRZUEVfT0JKRklMRSAodHlwZSks IHR5cGUsIGNvcGllZF90eXBlcyk7Ci0rfQotKwotIC8qIE1ha2UgYSBjb3B5IG9mIHRoZSBnaXZl biBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQotICAgIHR5cGVzIGFy ZSBub3QgcHJlc2VydmVkLgotICAgIAotQEAgLTMxNjUsNiArMzUyNywxOTkgQEAgY29weV90eXBl IChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKLSAgIHJldHVybiBuZXdfdHlwZTsKLSB9Ci0gCi0r LyogQ2FsbGJhY2sgdHlwZSBmb3IgbWFpbl90eXBlX2NyYXdsLiAgKi8KLSt0eXBlZGVmIGludCAo Km1haW5fdHlwZV9jcmF3bF9pdGVyKSAoc3RydWN0IHR5cGUgKnR5cGUsIHZvaWQgKmRhdGEpOwot KwotKy8qIEl0ZXJhdGUgYWxsIG1haW5fdHlwZSBzdHJ1Y3R1cmVzIHJlYWNoYWJsZSB0aHJvdWdo IGFueSBgc3RydWN0IHR5cGUgKicgZnJvbQotKyAgIFRZUEUuICBJVEVSIHdpbGwgYmUgY2FsbGVk IG9ubHkgZm9yIG9uZSB0eXBlIG9mIGVhY2ggbWFpbl90eXBlLCB1c2UKLSsgICBUWVBFX0NIQUlO IHRyYXZlcnNhbCB0byBmaW5kIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMuICBJVEVSIGlzIGJlaW5n IGNhbGxlZAotKyAgIGZvciBlYWNoIG1haW5fdHlwZSBmb3VuZC4gIElURVIgcmV0dXJucyBub24t emVybyBpZiBtYWluX3R5cGVfY3Jhd2wgc2hvdWxkCi0rICAgZGVwdGgtZmlyc3QgZW50ZXIgdGhl IHNwZWNpZmljIHR5cGUuICBJVEVSIG11c3QgcHJvdmlkZSBzb21lIGRldGVjdGlvbiBmb3IKLSsg ICByZWVudGVyaW5nIHRoZSBzYW1lIG1haW5fdHlwZSBhcyB0aGlzIGZ1bmN0aW9uIHdvdWxkIG90 aGVyd2lzZSBlbmRsZXNzbHkKLSsgICBsb29wLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK21haW5f dHlwZV9jcmF3bCAoc3RydWN0IHR5cGUgKnR5cGUsIG1haW5fdHlwZV9jcmF3bF9pdGVyIGl0ZXIs IHZvaWQgKmRhdGEpCi0rewotKyAgc3RydWN0IHR5cGUgKnR5cGVfaXRlcjsKLSsgIGludCBpOwot KwotKyAgaWYgKCF0eXBlKQotKyAgICByZXR1cm47Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX09C SkZJTEUgKHR5cGUpID09IE5VTEwpOwotKwotKyAgLyogYHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlw ZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkgdGhpcyBmdW5jdGlvbi4gICovCi0rICBnZGJf YXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBUWVBFX0NPREVfU1RSVUNUCi0rCSAgICAgICAm JiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09ERV9VTklPTikKLSsJICAgICAgfHwgIUhBVkVf Q1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICBpZiAoISgqaXRlcikgKHR5cGUsIGRhdGEpKQot KyAgICByZXR1cm47Ci0rCi0rICAvKiBJdGVyYXRlIGFsbCB0aGUgdHlwZSBpbnN0YW5jZXMgb2Yg dGhpcyBtYWluX3R5cGUuICAqLwotKyAgdHlwZV9pdGVyID0gdHlwZTsKLSsgIGRvCi0rICAgIHsK LSsgICAgICBnZGJfYXNzZXJ0IChUWVBFX01BSU5fVFlQRSAodHlwZV9pdGVyKSA9PSBUWVBFX01B SU5fVFlQRSAodHlwZSkpOwotKwotKyAgICAgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9QT0lOVEVS X1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsgICAgICBtYWluX3R5cGVfY3Jhd2wgKFRZUEVf UkVGRVJFTkNFX1RZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKLSsKLSsgICAgICB0eXBlX2l0ZXIg PSBUWVBFX0NIQUlOICh0eXBlX2l0ZXIpOwotKyAgICB9Ci0rICB3aGlsZSAodHlwZV9pdGVyICE9 IHR5cGUpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxEUyAodHlwZSk7IGkrKykK LSsgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGkpLCBpdGVyLCBk YXRhKTsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9UQVJHRVRfVFlQRSAodHlwZSksIGl0 ZXIsIGRhdGEpOwotKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1ZQVFJfQkFTRVRZUEUgKHR5cGUp LCBpdGVyLCBkYXRhKTsKLSt9Ci0rCi0rLyogQSBoZWxwZXIgZm9yIGRlbGV0ZV90eXBlIHdoaWNo IGRlbGV0ZXMgYSBtYWluX3R5cGUgYW5kIHRoZSB0aGluZ3MgdG8gd2hpY2gKLSsgICBpdCByZWZl cnMuICBUWVBFIGlzIGEgdHlwZSB3aG9zZSBtYWluX3R5cGUgd2Ugd2lzaCB0byBkZXN0cm95LiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK2RlbGV0ZV9tYWluX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBl KQotK3sKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVNDQVJEQUJMRSAodHlw ZSkpOwotKyAgZ2RiX2Fzc2VydCAoVFlQRV9PQkpGSUxFICh0eXBlKSA9PSBOVUxMKTsKLSsKLSsg IHhmcmVlIChUWVBFX05BTUUgKHR5cGUpKTsKLSsgIHhmcmVlIChUWVBFX1RBR19OQU1FICh0eXBl KSk7Ci0rCi0rICBmb3IgKGkgPSAwOyBpIDwgVFlQRV9ORklFTERTICh0eXBlKTsgKytpKQotKyAg ICB7Ci0rICAgICAgeGZyZWUgKFRZUEVfRklFTERfTkFNRSAodHlwZSwgaSkpOwotKwotKyAgICAg IGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBpKSA9PSBGSUVMRF9MT0NfS0lORF9QSFlT TkFNRSkKLSsJeGZyZWUgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FICh0eXBlLCBpKSk7Ci0r ICAgIH0KLSsgIHhmcmVlIChUWVBFX0ZJRUxEUyAodHlwZSkpOwotKwotKyAgZ2RiX2Fzc2VydCAo IUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7Ci0rCi0rICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUg KHR5cGUpKTsKLSt9Ci0rCi0rLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2VzIG9uIFRZUEVfQ0hB SU4gb2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKLSsgICBtYWluX3R5cGUuICBU WVBFIG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJtYW5lbnQgbm9yIG9i amZpbGUKLSsgICBhc3NvY2lhdGVkLiAgKi8KLSsKLStzdGF0aWMgdm9pZAotK2RlbGV0ZV90eXBl X2NoYWluIChzdHJ1Y3QgdHlwZSAqdHlwZSkKLSt7Ci0rICBzdHJ1Y3QgdHlwZSAqdHlwZV9pdGVy LCAqdHlwZV9pdGVyX3RvX2ZyZWU7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBFX0RJU0NBUkRBQkxF ICh0eXBlKSk7Ci0rICBnZGJfYXNzZXJ0IChUWVBFX09CSkZJTEUgKHR5cGUpID09IE5VTEwpOwot KwotKyAgZGVsZXRlX21haW5fdHlwZSAodHlwZSk7Ci0rCi0rICB0eXBlX2l0ZXIgPSB0eXBlOwot KyAgZG8KLSsgICAgewotKyAgICAgIHR5cGVfaXRlcl90b19mcmVlID0gdHlwZV9pdGVyOwotKyAg ICAgIHR5cGVfaXRlciA9IFRZUEVfQ0hBSU4gKHR5cGVfaXRlcik7Ci0rICAgICAgeGZyZWUgKHR5 cGVfaXRlcl90b19mcmVlKTsKLSsgICAgfQotKyAgd2hpbGUgKHR5cGVfaXRlciAhPSB0eXBlKTsK LSt9Ci0rCi0rLyogSGFzaCBmdW5jdGlvbiBmb3IgdHlwZV9kaXNjYXJkYWJsZV90YWJsZS4gICov Ci0rCi0rc3RhdGljIGhhc2h2YWxfdAotK3R5cGVfZGlzY2FyZGFibGVfaGFzaCAoY29uc3Qgdm9p ZCAqcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSA9IHA7Ci0rCi0rICByZXR1cm4g aHRhYl9oYXNoX3BvaW50ZXIgKFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7Ci0rfQotKwotKy8qIEVx dWFsaXR5IGZ1bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KLSsKLStzdGF0 aWMgaW50Ci0rdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9p ZCAqYikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgdHlwZSAqbGVmdCA9IGE7Ci0rICBjb25zdCBzdHJ1 Y3QgdHlwZSAqcmlnaHQgPSBiOwotKwotKyAgcmV0dXJuIFRZUEVfTUFJTl9UWVBFIChsZWZ0KSA9 PSBUWVBFX01BSU5fVFlQRSAocmlnaHQpOwotK30KLSsKLSsvKiBBIGhlbHBlciBmb3IgdHlwZV9t YXJrX3VzZWQuICAqLwotKwotK3N0YXRpYyBpbnQKLSt0eXBlX21hcmtfdXNlZF9jcmF3bCAoc3Ry dWN0IHR5cGUgKnR5cGUsIHZvaWQgKnVudXNlZCkKLSt7Ci0rICBpZiAoIVRZUEVfRElTQ0FSREFC TEUgKHR5cGUpKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChUWVBFX0RJU0NBUkRBQkxFX0FH RSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCkKLSsgICAgcmV0dXJuIDA7 Ci0rCi0rICBUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2Fn ZV9jdXJyZW50OwotKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICByZXR1 cm4gMTsKLSt9Ci0rCi0rLyogTWFyayBUWVBFIGFuZCBpdHMgY29ubmVjdGVkIHR5cGVzIGFzIHVz ZWQgaW4gdGhpcyBmcmVlX2FsbF90eXBlcyBwYXNzLiAgKi8KLSsKLSt2b2lkCi0rdHlwZV9tYXJr X3VzZWQgKHN0cnVjdCB0eXBlICp0eXBlKQotK3sKLSsgIGlmICh0eXBlID09IE5VTEwpCi0rICAg IHJldHVybjsKLSsKLSsgIGlmICghVFlQRV9ESVNDQVJEQUJMRSAodHlwZSkpCi0rICAgIHJldHVy bjsKLSsKLSsgIG1haW5fdHlwZV9jcmF3bCAodHlwZSwgdHlwZV9tYXJrX3VzZWRfY3Jhd2wsIE5V TEwpOwotK30KLSsKLSsvKiBBIHRyYXZlcnNlIGNhbGxiYWNrIGZvciB0eXBlX2Rpc2NhcmRhYmxl X3RhYmxlIHdoaWNoIHJlbW92ZXMgYW55Ci0rICAgdHlwZV9kaXNjYXJkYWJsZSB3aG9zZSByZWZl cmVuY2UgY291bnQgaXMgbm93IHplcm8gKHVudXNlZCBsaW5rKS4gICovCi0rCi0rc3RhdGljIGlu dAotK3R5cGVfZGlzY2FyZGFibGVfcmVtb3ZlICh2b2lkICoqc2xvdCwgdm9pZCAqdW51c2VkKQot K3sKLSsgIHN0cnVjdCB0eXBlICp0eXBlID0gKnNsb3Q7Ci0rCi0rICBnZGJfYXNzZXJ0IChUWVBF X0RJU0NBUkRBQkxFICh0eXBlKSk7Ci0rCi0rICBpZiAoVFlQRV9ESVNDQVJEQUJMRV9BR0UgKHR5 cGUpICE9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQpCi0rICAgIHsKLSsgICAgICBkZWxl dGVfdHlwZV9jaGFpbiAodHlwZSk7Ci0rCi0rICAgICAgaHRhYl9jbGVhcl9zbG90ICh0eXBlX2Rp c2NhcmRhYmxlX3RhYmxlLCBzbG90KTsKLSsgICAgfQotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwot Ky8qIEZyZWUgYWxsIHRoZSByZWNsYWltYWJsZSB0eXBlcyB0aGF0IGhhdmUgYmVlbiBhbGxvY2F0 ZWQgYW5kIHRoYXQgaGF2ZQotKyAgIGN1cnJlbnRseSB6ZXJvIHJlZmVyZW5jZSBjb3VudGVyLgot KwotKyAgIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFmdGVyIGVhY2ggY29tbWFuZCwgc3VjY2Vz c2Z1bCBvciBub3QuICBVc2UgdGhpcwotKyAgIGNsZWFudXAgb25seSBpbiB0aGUgR0RCIGlkbGUg c3RhdGUgYXMgR0RCIG9ubHkgbWFya3MgdGhvc2UgdHlwZXMgdXNlZCBieQotKyAgIGdsb2JhbGx5 IHRyYWNrZWQgb2JqZWN0cyAod2l0aCBubyBhdXRvdmFyaWFibGUgcmVmZXJlbmNlcyB0cmFja2lu ZykuICAqLwotKwotK3ZvaWQKLStmcmVlX2FsbF90eXBlcyAodm9pZCkKLSt7Ci0rICAvKiBNYXJr IGEgbmV3IHBhc3MuICBBcyBHREIgY2hlY2tzIGFsbCB0aGUgZW50cmllcyB3ZXJlIHZpc2l0ZWQg YWZ0ZXIgZWFjaAotKyAgICAgcGFzcyB0aGVyZSBjYW5ub3QgYmUgYW55IHN0YWxlIGVudHJpZXMg YWxyZWFkeSBjb250YWluaW5nIHRoZSBjaGFuZ2VkCi0rICAgICB2YWx1ZS4gICovCi0rICB0eXBl X2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50IF49IDE7Ci0rCi0rICBvYnNlcnZlcl9ub3RpZnlfbWFy a191c2VkICgpOwotKwotKyAgaHRhYl90cmF2ZXJzZSAodHlwZV9kaXNjYXJkYWJsZV90YWJsZSwg dHlwZV9kaXNjYXJkYWJsZV9yZW1vdmUsIE5VTEwpOwotK30KLSAKLSAvKiBIZWxwZXIgZnVuY3Rp b25zIHRvIGluaXRpYWxpemUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8KLSAKLUBA IC0zNTExLDYgKzQwNjYsOCBAQCBnZGJ0eXBlc19wb3N0X2luaXQgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKQotICAgICA9IGxvb2t1cF9wb2ludGVyX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRp bl92b2lkKTsKLSAgIGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cgotICAgICA9IGxvb2t1 cF9wb2ludGVyX3R5cGUgKGxvb2t1cF9mdW5jdGlvbl90eXBlIChidWlsdGluX3R5cGUtPmJ1aWx0 aW5fdm9pZCkpOwotKyAgYnVpbHRpbl90eXBlLT5idWlsdGluX2Z1bmNfZnVuYwotKyAgICA9IGxv b2t1cF9mdW5jdGlvbl90eXBlIChidWlsdGluX3R5cGUtPmJ1aWx0aW5fZnVuY19wdHIpOwotIAot ICAgLyogVGhpcyB0eXBlIHJlcHJlc2VudHMgYSBHREIgaW50ZXJuYWwgZnVuY3Rpb24uICAqLwot ICAgYnVpbHRpbl90eXBlLT5pbnRlcm5hbF9mbgotQEAgLTM2MjQsNiArNDE4MSwxOCBAQCBvYmpm aWxlX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotIAkJICI8dGV4dCB2YXJpYWJsZSwg bm8gZGVidWcgaW5mbz4iLCBvYmpmaWxlKTsKLSAgIFRZUEVfVEFSR0VUX1RZUEUgKG9iamZpbGVf dHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbCkKLSAgICAgPSBvYmpmaWxlX3R5cGUtPmJ1aWx0aW5f aW50OwotKyAgb2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbAotKyAg ICA9IGluaXRfdHlwZSAoVFlQRV9DT0RFX0ZVTkMsIDEsIFRZUEVfRkxBR19HTlVfSUZVTkMsCi0r CQkgIjx0ZXh0IGdudS1pbmRpcmVjdC1mdW5jdGlvbiB2YXJpYWJsZSwgbm8gZGVidWcgaW5mbz4i LAotKwkJIG9iamZpbGUpOwotKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2Rl YnVnX3RleHRfZ251X2lmdW5jX3N5bWJvbCkKLSsgICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdf dGV4dF9zeW1ib2w7Ci0rICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfZ290X3BsdF9zeW1ib2wKLSsg ICAgPSBpbml0X3R5cGUgKFRZUEVfQ09ERV9QVFIsIGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gp IC8gOCwgMCwKLSsJCSAiPHRleHQgZnJvbSBqdW1wIHNsb3QgaW4gLmdvdC5wbHQsIG5vIGRlYnVn IGluZm8+IiwKLSsJCSBvYmpmaWxlKTsKLSsgIFRZUEVfVEFSR0VUX1RZUEUgKG9iamZpbGVfdHlw ZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbCkKLSsgICAgPSBvYmpmaWxlX3R5cGUtPm5vZGVidWdf dGV4dF9zeW1ib2w7Ci0gICBvYmpmaWxlX3R5cGUtPm5vZGVidWdfZGF0YV9zeW1ib2wKLSAgICAg PSBpbml0X3R5cGUgKFRZUEVfQ09ERV9JTlQsCi0gCQkgZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNo KSAvIEhPU1RfQ0hBUl9CSVQsIDAsCi1AQCAtMzY3OCw2ICs0MjQ3LDExIEBAIHZvaWQKLSBfaW5p dGlhbGl6ZV9nZGJ0eXBlcyAodm9pZCkKLSB7Ci0gICBnZGJ0eXBlc19kYXRhID0gZ2RiYXJjaF9k YXRhX3JlZ2lzdGVyX3Bvc3RfaW5pdCAoZ2RidHlwZXNfcG9zdF9pbml0KTsKLSsKLSsgIHR5cGVf ZGlzY2FyZGFibGVfdGFibGUgPSBodGFiX2NyZWF0ZV9hbGxvYyAoMjAsIHR5cGVfZGlzY2FyZGFi bGVfaGFzaCwKLSsJCQkJCSAgICAgdHlwZV9kaXNjYXJkYWJsZV9lcXVhbCwgTlVMTCwKLSsJCQkJ CSAgICAgeGNhbGxvYywgeGZyZWUpOwotKwotICAgb2JqZmlsZV90eXBlX2RhdGEgPSByZWdpc3Rl cl9vYmpmaWxlX2RhdGEgKCk7Ci0gCi0gICBhZGRfc2V0c2hvd196aW50ZWdlcl9jbWQgKCJvdmVy bG9hZCIsIG5vX2NsYXNzLCAmb3ZlcmxvYWRfZGVidWcsIF8oIlwKLWRpZmYgLS1naXQgYS9nZGIv Z2RidHlwZXMuaCBiL2dkYi9nZGJ0eXBlcy5oCi1pbmRleCAwODUyNzBlLi5jYjJiODhlIDEwMDY0 NAotLS0tIGEvZ2RiL2dkYnR5cGVzLmgKLSsrKyBiL2dkYi9nZGJ0eXBlcy5oCi1AQCAtMTcxLDYg KzE3MSw3IEBAIGVudW0gdHlwZV9mbGFnX3ZhbHVlCi0gICBUWVBFX0ZMQUdfRklYRURfSU5TVEFO Q0UgPSAoMSA8PCAxNSksCi0gICBUWVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQgPSAoMSA8PCAxNiks Ci0gICBUWVBFX0ZMQUdfTk9UVEVYVCA9ICgxIDw8IDE3KSwKLSsgIFRZUEVfRkxBR19HTlVfSUZV TkMgPSAoMSA8PCAxOCksCi0gCi0gICAvKiBVc2VkIGZvciBlcnJvci1jaGVja2luZy4gICovCi0g ICBUWVBFX0ZMQUdfTUlOID0gVFlQRV9GTEFHX1VOU0lHTkVECi1AQCAtMjE0LDYgKzIxNSwxMSBA QCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQotIAotICNkZWZpbmUgVFlQRV9UQVJHRVRf U1RVQih0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX3RhcmdldF9zdHViKQotIAotKy8qIFR5 cGUgbmVlZHMgdG8gYmUgZXZhbHVhdGVkIG9uIGVhY2ggQ0hFQ0tfVFlQRURFRiBhbmQgaXRzIHJl c3VsdHMgbXVzdCBub3QgYmUKLSsgICBzdGlja3kuICAqLwotKwotKyNkZWZpbmUgVFlQRV9EWU5B TUlDKHQpCQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2R5bmFtaWMpCi0rCi0gLyogU3RhdGlj IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcgdHlwZSBoYWQgCi0gICog YSBzdGF0aWMgbW9kaWZpZXIuCi0gICogTm90ZTogVGhpcyBtYXkgYmUgdW5uZWNlc3NhcnksIHNp bmNlIHN0YXRpYyBkYXRhIG1lbWJlcnMKLUBAIC0yNzEsNiArMjc3LDEyIEBAIGVudW0gdHlwZV9p bnN0YW5jZV9mbGFnX3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX05PVFRFWFQodCkJCShUWVBFX01B SU5fVFlQRSAodCktPmZsYWdfbm90dGV4dCkKLSAKLSsvKiBVc2VkIG9ubHkgZm9yIFRZUEVfQ09E RV9GVU5DIHdoZXJlIGl0IHNwZWNpZmllcyB0aGUgcmVhbCBmdW5jdGlvbgotKyAgIGFkZHJlc3Mg aXMgcmV0dXJuZWQgYnkgdGhpcyBmdW5jdGlvbiBjYWxsLiAgVFlQRV9UQVJHRVRfVFlQRSBkZXRl cm1pbmVzIHRoZQotKyAgIGZpbmFsIHJldHVybmVkIGZ1bmN0aW9uIHR5cGUgdG8gYmUgcHJlc2Vu dGVkIHRvIHVzZXIuICAqLwotKwotKyNkZWZpbmUgVFlQRV9HTlVfSUZVTkModCkJKFRZUEVfTUFJ Tl9UWVBFICh0KS0+ZmxhZ19nbnVfaWZ1bmMpCi0rCi0gLyogVHlwZSBvd25lci4gIElmIFRZUEVf T0JKRklMRV9PV05FRCBpcyB0cnVlLCB0aGUgdHlwZSBpcyBvd25lZCBieQotICAgIHRoZSBvYmpm aWxlIHJldHJpZXZlZCBhcyBUWVBFX09CSkZJTEUuICBPdGhlcndlaXNlLCB0aGUgdHlwZSBpcwot ICAgIG93bmVkIGJ5IGFuIGFyY2hpdGVjdHVyZTsgVFlQRV9PQkpGSUxFIGlzIE5VTEwgaW4gdGhp cyBjYXNlLiAgKi8KLUBAIC0yODUsNiArMjk3LDQ4IEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFn X3ZhbHVlCi0gCi0gI2RlZmluZSBUWVBFX0RFQ0xBUkVEX0NMQVNTKHQpIChUWVBFX01BSU5fVFlQ RSAodCktPmZsYWdfZGVjbGFyZWRfY2xhc3MpCi0gCi0rLyogRGVmaW5lIHRoaXMgdHlwZSBhcyBi ZWluZyByZWNsYWltYWJsZSBkdXJpbmcgZnJlZV9hbGxfdHlwZXMuICBUeXBlIGlzCi0rICAgcmVx dWlyZWQgdG8gYmUgaGF2ZSBUWVBFX09CSkZJTEUgc2V0IHRvIE5VTEwuICBTZXR0aW5nIHRoaXMg ZmxhZyByZXF1aXJlcwotKyAgIGluaXRpYWxpemluZyBUWVBFX0RJU0NBUkRBQkxFX0FHRSwgc2Vl IGFsbG9jX3R5cGVfZGlzY2FyZGFibGUuICAqLwotKwotKyNkZWZpbmUgVFlQRV9ESVNDQVJEQUJM RSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlKQotKwotKy8qIE1hcmtl ciB0aGlzIHR5cGUgaGFzIGJlZW4gdmlzaXRlZCBieSB0aGUgdHlwZV9tYXJrX3VzZWQgYnkgdGhp cwotKyAgIG1hcmstYW5kLXN3ZWVwIHR5cGVzIGdhcmJhZ2UgY29sbGVjdGluZyBwYXNzLiAgQ3Vy cmVudCBwYXNzIGlzIHJlcHJlc2VudGVkCi0rICAgYnkgVFlQRV9ESVNDQVJEQUJMRV9BR0VfQ1VS UkVOVC4gICovCi0rCi0rI2RlZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlO X1RZUEUgKHQpLT5mbGFnX2Rpc2NhcmRhYmxlX2FnZSkKLSsKLSsvKiBJcyBISUdIX0JPVU5EIGEg bG93LWJvdW5kIHJlbGF0aXZlIGNvdW50ICgxKSBvciB0aGUgaGlnaCBib3VuZCBpdHNlbGYgKDAp PyAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfUkFOR0VfSElHSF9CT1VORF9JU19DT1VOVChyYW5nZV90 eXBlKSBcCi0rICAoVFlQRV9NQUlOX1RZUEUgKHJhbmdlX3R5cGUpLT5mbGFnX3JhbmdlX2hpZ2hf Ym91bmRfaXNfY291bnQpCi0rCi0rLyogTm90IGFsbG9jYXRlZC4gIFRZUEVfQUxMT0NBVEVEKHQp IG11c3QgYmUgTlVMTCBpbiBzdWNoIGNhc2UuICBJZiB0aGlzIGZsYWcKLSsgICBpcyB1bnNldCBh bmQgVFlQRV9BTExPQ0FURUQodCkgaXMgTlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFsbG9jYXRlZC4g IElmIHRoaXMKLSsgICBmbGFnIGlzIHVuc2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBub3Qg TlVMTCB0aGVuIGl0cyBEV0FSRiBibG9jawotKyAgIGRldGVybWluZXMgdGhlIGFjdHVhbCBhbGxv Y2F0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5lIFRZUEVfTk9UX0FMTE9DQVRFRCh0KQkoVFlQ RV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0ZWQpCi0rCi0rLyogTm90IGFzc29jaWF0 ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElmIHRo aXMgZmxhZwotKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkgaXMgTlVMTCB0aGVu IHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgotKyAgIHRoaXMgZmxhZyBpcyB1bnNldCBhbmQg VFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCi0rICAg ZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0YXRlLiAgKi8KLSsKLSsjZGVmaW5l IFRZUEVfTk9UX0FTU09DSUFURUQodCkJKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19ub3RfYXNz b2NpYXRlZCkKLSsKLSsvKiBBZGRyZXNzIG9mIHRoZSBhY3R1YWwgZGF0YSBhcyBmb3IgRFdfQVRf ZGF0YV9sb2NhdGlvbi4gIEl0cyBkd2FyZiBibG9jayBtdXN0Ci0rICAgbm90IGJlIGV2YWx1YXRl ZCB1bmxlc3MgYm90aCBUWVBFX05PVF9BTExPQ0FURUQgYW5kIFRZUEVfTk9UX0FTU09DSUFURUQg YXJlCi0rICAgZmFsc2UuICBJZiBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUiBzZXQgdGhlbiBU WVBFX0RBVEFfTE9DQVRJT05fQUREUiB2YWx1ZQotKyAgIGlzIHRoZSBhY3R1YWwgZGF0YSBhZGRy ZXNzIHZhbHVlLiAgSWYgdW5zZXQgYW5kCi0rICAgVFlQRV9EQVRBX0xPQ0FUSU9OX0RXQVJGX0JM T0NLIGlzIE5VTEwgdGhlbiB0aGUgdmFsdWUgaXMgdGhlIG5vcm1hbAotKyAgIHZhbHVlX3Jhd19h ZGRyZXNzLiAgSWYgdW5zZXQgYW5kIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyBpcyBu b3QgTlVMTAotKyAgIHRoZW4gaXRzIERXQVJGIGJsb2NrIGRldGVybWluZXMgdGhlIGFjdHVhbCBk YXRhIGFkZHJlc3MuICAqLwotKwotKyNkZWZpbmUgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIo dCkgXAotKyAgKFRZUEVfTUFJTl9UWVBFICh0KS0+ZmxhZ19kYXRhX2xvY2F0aW9uX2lzX2FkZHIp Ci0rCi0gLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVzcG9uZGlu ZyB0eXBlIGhhcyBhCi0gICogY29uc3QgbW9kaWZpZXIuCi0gICovCi1AQCAtMzg5LDExICs0NDMs MTkgQEAgc3RydWN0IG1haW5fdHlwZQotICAgdW5zaWduZWQgaW50IGZsYWdfdmVjdG9yIDogMTsK LSAgIHVuc2lnbmVkIGludCBmbGFnX3N0dWJfc3VwcG9ydGVkIDogMTsKLSAgIHVuc2lnbmVkIGlu dCBmbGFnX25vdHRleHQgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5jIDogMTsK LSAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKLSAgIHVuc2lnbmVkIGlu dCBmbGFnX29iamZpbGVfb3duZWQgOiAxOwotICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUgd2FzIGRl Y2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgotICAgICAgInN0cnVjdCIuICAqLwotICAg dW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOwotKyAgdW5zaWduZWQgaW50IGZs YWdfZGlzY2FyZGFibGUgOiAxOwotKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFibGVfYWdl IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2R5bmFtaWMgOiAxOwotKyAgdW5zaWduZWQgaW50 IGZsYWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCA6IDE7Ci0rICB1bnNpZ25lZCBpbnQgZmxh Z19ub3RfYWxsb2NhdGVkIDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hc3NvY2lhdGVk IDogMTsKLSsgIHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkciA6IDE7Ci0g Ci0gICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxkIG9mIHRoZSB0eXBl X3NwZWNpZmljIHVuaW9uCi0gICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlzIHR5cGUsIGlmIGFu eS4gICovCi1AQCAtNDY3LDYgKzUyOSwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCi0gCi0gICBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7Ci0gCi0rICAvKiBGb3IgRFdfQVRfZGF0YV9sb2NhdGlvbi4g ICovCi0rICB1bmlvbgotKyAgICB7Ci0rICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9u ICpkd2FyZl9ibG9jazsKLSsgICAgICBDT1JFX0FERFIgYWRkcjsKLSsgICAgfQotKyAgZGF0YV9s b2NhdGlvbjsKLSsKLSsgIC8qIEZvciBEV19BVF9hbGxvY2F0ZWQuICAqLwotKyAgc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uICphbGxvY2F0ZWQ7Ci0rCi0rICAvKiBGb3IgRFdfQVRfYXNzb2Np YXRlZC4gICovCi0rICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFzc29jaWF0ZWQ7Ci0r Ci0gICAvKiBGb3Igc3RydWN0dXJlIGFuZCB1bmlvbiB0eXBlcywgYSBkZXNjcmlwdGlvbiBvZiBl YWNoIGZpZWxkLgotICAgICAgRm9yIHNldCBhbmQgcGFzY2FsIGFycmF5IHR5cGVzLCB0aGVyZSBp cyBvbmUgImZpZWxkIiwKLSAgICAgIHdob3NlIHR5cGUgaXMgdGhlIGRvbWFpbiB0eXBlIG9mIHRo ZSBzZXQgb3IgYXJyYXkuCi1AQCAtNTQwLDEzICs2MTYsMzQgQEAgc3RydWN0IG1haW5fdHlwZQot IAotICAgICBzdHJ1Y3QgcmFuZ2VfYm91bmRzCi0gICAgIHsKLSsgICAgICBzdHJ1Y3QKLSsJewot KwkgIHVuaW9uCi0rCSAgICB7Ci0rCSAgICAgIExPTkdFU1QgY29uc3RhbnQ7Ci0rCSAgICAgIHN0 cnVjdCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqZHdhcmZfYmxvY2s7Ci0rCSAgICAgIHN0cnVjdAot KwkJewotKwkJICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmxvY2xpc3Q7Ci0rCQkgIHN0 cnVjdCB0eXBlICp0eXBlOwotKwkJfQotKwkgICAgICBkd2FyZl9sb2NsaXN0OwotKwkgICAgfQot KwkgIHU7Ci0rCSAgZW51bSByYW5nZV9ib3VuZF9raW5kCi0rCSAgICB7Ci0rCSAgICAgIFJBTkdF X0JPVU5EX0tJTkRfQ09OU1RBTlQsCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfQkxP Q0ssCi0rCSAgICAgIFJBTkdFX0JPVU5EX0tJTkRfRFdBUkZfTE9DTElTVAotKwkgICAgfQotKwkg IGtpbmQ7Ci0rCX0KLSAgICAgICAvKiBMb3cgYm91bmQgb2YgcmFuZ2UuICovCi0tCi0tICAgICAg TE9OR0VTVCBsb3c7Ci0tCi0rICAgICAgbG93LAotICAgICAgIC8qIEhpZ2ggYm91bmQgb2YgcmFu Z2UuICovCi0tCi0tICAgICAgTE9OR0VTVCBoaWdoOwotKyAgICAgIGhpZ2gsCi0rICAgICAgLyog Qnl0ZSBzdHJpZGUgb2YgcmFuZ2UuICovCi0rICAgICAgYnl0ZV9zdHJpZGU7Ci0gCi0gICAgICAg LyogRmxhZ3MgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSB2YWx1ZXMgb2YgbG93IGFuZCBoaWdoIGFy ZQotICAgICAgICAgIHZhbGlkLiAgV2hlbiB0cnVlLCB0aGUgcmVzcGVjdGl2ZSByYW5nZSB2YWx1 ZSBpcwotQEAgLTg4OSw5ICs5ODYsOSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90 eXBlIChzdHJ1Y3QgdHlwZSAqKTsKLSAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBl KSAodGhpc3R5cGUpLT5wb2ludGVyX3R5cGUKLSAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUo dGhpc3R5cGUpICh0aGlzdHlwZSktPnJlZmVyZW5jZV90eXBlCi0gI2RlZmluZSBUWVBFX0NIQUlO KHRoaXN0eXBlKSAodGhpc3R5cGUpLT5jaGFpbgotLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBp cyBhIFRZUEVERUYgdHlwZSwgeW91IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmLgotLSAgIEJ1 dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0 eXBlLAotLSAgIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBT aW5jZSBhbGxvY2F0ZV92YWx1ZQotKy8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVE RUYsIEFSUkFZIG9yIFNUUklORyB0eXBlLCB5b3UgaGF2ZSB0byBjYWxsCi0rICAgY2hlY2tfdHlw ZWRlZi4gIEJ1dCBjaGVja190eXBlZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUg VFlQRURFRgotKyAgIHR5cGUsIHNvIHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVm IG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQotICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZ UEVfTEVOR1RIIChWQUxVRV9UWVBFIChYKSkgaXMgc2FmZS4gICovCi0gI2RlZmluZSBUWVBFX0xF TkdUSCh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+bGVuZ3RoCi0gLyogTm90ZSB0aGF0IFRZUEVfQ09E RSBjYW4gYmUgVFlQRV9DT0RFX1RZUEVERUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCi1AQCAt ODk5LDExICs5OTYsMTYgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3Ry dWN0IHR5cGUgKik7Ci0gI2RlZmluZSBUWVBFX0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBF KHRoaXN0eXBlKS0+Y29kZQotICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01B SU5fVFlQRSh0aGlzdHlwZSktPm5maWVsZHMKLSAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBl KSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKLSsjZGVmaW5lIFRZ UEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUgKHRo aXN0eXBlKS0+ZGF0YV9sb2NhdGlvbi5kd2FyZl9ibG9jawotKyNkZWZpbmUgVFlQRV9EQVRBX0xP Q0FUSU9OX0FERFIodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmRhdGFfbG9j YXRpb24uYWRkcgotKyNkZWZpbmUgVFlQRV9BTExPQ0FURUQodGhpc3R5cGUpIFRZUEVfTUFJTl9U WVBFICh0aGlzdHlwZSktPmFsbG9jYXRlZAotKyNkZWZpbmUgVFlQRV9BU1NPQ0lBVEVEKHRoaXN0 eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hc3NvY2lhdGVkCi0gCi0gI2RlZmluZSBU WVBFX0lOREVYX1RZUEUodHlwZSkgVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKQotICNkZWZpbmUg VFlQRV9SQU5HRV9EQVRBKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmZsZHNf Ym5kcy5ib3VuZHMKLS0jZGVmaW5lIFRZUEVfTE9XX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFO R0VfREFUQShyYW5nZV90eXBlKS0+bG93Ci0tI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2Vf dHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5oaWdoCi0rI2RlZmluZSBUWVBFX0xP V19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSktPmxvdy51LmNv bnN0YW50Ci0rI2RlZmluZSBUWVBFX0hJR0hfQk9VTkQocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9E QVRBKHJhbmdlX3R5cGUpLT5oaWdoLnUuY29uc3RhbnQKLSsjZGVmaW5lIFRZUEVfQllURV9TVFJJ REUocmFuZ2VfdHlwZSkgVFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5ieXRlX3N0cmlkZS51 LmNvbnN0YW50Ci0gI2RlZmluZSBUWVBFX0xPV19CT1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkg XAotICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+bG93X3VuZGVmaW5lZAotICNkZWZp bmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChyYW5nZV90eXBlKSBcCi1AQCAtOTIwLDcgKzEw MjIsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUg Kik7Ci0gICAgKFRZUEVfSElHSF9CT1VORChUWVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkK LSAKLSAjZGVmaW5lIFRZUEVfQVJSQVlfTE9XRVJfQk9VTkRfVkFMVUUoYXJyYXl0eXBlKSBcCi0t ICAgKFRZUEVfTE9XX0JPVU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQotKyAgVFlQ RV9MT1dfQk9VTkQgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkKLSsKLSsvKiBUWVBFX0JZ VEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpIHdpdGggYSBmYWxsYmFjayB0 byB0aGUKLSsgICBlbGVtZW50IHNpemUgaWYgbm8gc3BlY2lmaWMgc3RyaWRlIHZhbHVlIGlzIGtu b3duLiAgKi8KLSsjZGVmaW5lIFRZUEVfQVJSQVlfQllURV9TVFJJREVfVkFMVUUoYXJyYXl0eXBl KQkJXAotKyAgKFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkg PT0gMAlcCi0rICAgPyBUWVBFX0xFTkdUSCAoVFlQRV9UQVJHRVRfVFlQRSAoYXJyYXl0eXBlKSkJ CVwKLSsgICA6IFRZUEVfQllURV9TVFJJREUgKFRZUEVfSU5ERVhfVFlQRSAoYXJyYXl0eXBlKSkp Ci0gCi0gLyogQysrICovCi0gCi1AQCAtMTE0MSw2ICsxMjUwLDEwIEBAIHN0cnVjdCBidWlsdGlu X3R5cGUKLSAgICAgICgqKSAoKSBjYW4gc2VydmVyIGFzIGEgZ2VuZXJpYyBmdW5jdGlvbiBwb2lu dGVyLiAgKi8KLSAgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfcHRyOwotIAotKyAgLyogYGZ1 bmN0aW9uIHJldHVybmluZyBwb2ludGVyIHRvIGZ1bmN0aW9uIChyZXR1cm5pbmcgdm9pZCknIHR5 cGUuCi0rICAgICBUaGUgZmluYWwgdm9pZCByZXR1cm4gdHlwZSBpcyBub3Qgc2lnbmlmaWNhbnQg Zm9yIGl0LiAgKi8KLSsgIHN0cnVjdCB0eXBlICpidWlsdGluX2Z1bmNfZnVuYzsKLSsKLSAKLSAg IC8qIFNwZWNpYWwtcHVycG9zZSB0eXBlcy4gICovCi0gCi1AQCAtMTE4MSw2ICsxMjk0LDggQEAg c3RydWN0IG9iamZpbGVfdHlwZQotIAotICAgLyogVHlwZXMgdXNlZCBmb3Igc3ltYm9scyB3aXRo IG5vIGRlYnVnIGluZm9ybWF0aW9uLiAgKi8KLSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3RleHRf c3ltYm9sOwotKyAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sOwot KyAgc3RydWN0IHR5cGUgKm5vZGVidWdfZ290X3BsdF9zeW1ib2w7Ci0gICBzdHJ1Y3QgdHlwZSAq bm9kZWJ1Z19kYXRhX3N5bWJvbDsKLSAgIHN0cnVjdCB0eXBlICpub2RlYnVnX3Vua25vd25fc3lt Ym9sOwotICAgc3RydWN0IHR5cGUgKm5vZGVidWdfdGxzX3N5bWJvbDsKLUBAIC0xMzI4LDYgKzE0 NDMsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVhdGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5 cGUgKiwgc3RydWN0IHR5cGUgKiwKLSAJCQkJICAgICAgIHN0cnVjdCB0eXBlICopOwotIGV4dGVy biBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3JhbmdlX3R5cGUgKHN0cnVjdCB0eXBlICosIGlu dCwgaW50KTsKLSAKLStleHRlcm4gQ09SRV9BRERSIHR5cGVfcmFuZ2VfYW55X2ZpZWxkX2ludGVy bmFsIChzdHJ1Y3QgdHlwZSAqcmFuZ2VfdHlwZSwKLSsJCQkJCQlpbnQgZmllbGRubyk7Ci0rCi0r ZXh0ZXJuIGludCB0eXBlX3JhbmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpy YW5nZV90eXBlKTsKLSsKLStleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRfYm91bmRfaW50ZXJu YWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKLSsKLStleHRlcm4gQ09SRV9BRERSIHR5cGVf cmFuZ2VfYnl0ZV9zdHJpZGVfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAotKwkJ CQkJCSAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSk7Ci0rCi0rZXh0ZXJuIHZvaWQgZmluYWxp emVfdHlwZSAoc3RydWN0IHR5cGUgKnR5cGUpOwotKwotIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3Jl YXRlX3N0cmluZ190eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAotIAkJCQkJc3Ry dWN0IHR5cGUgKik7Ci0gZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfc3RyaW5nX3JhbmdlX3R5 cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKLUBAIC0xMzcwLDYgKzE0OTcsOCBAQCBleHRl cm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKik7 Ci0gCi0gZXh0ZXJuIGludCBpc191bmlxdWVfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVj dCB2YWx1ZSAqKTsKLSAKLStleHRlcm4gdm9pZCB0eXBlX21hcmtfdXNlZCAoc3RydWN0IHR5cGUg KnR5cGUpOwotKwotIC8qIE92ZXJsb2FkIHJlc29sdXRpb24gKi8KLSAKLSAjZGVmaW5lIExFTkdU SF9NQVRDSChidikgKChidiktPnJhbmtbMF0pCi1AQCAtMTQzMiwxMCArMTU2MSwxMSBAQCBleHRl cm4gdm9pZCBtYWludGVuYW5jZV9wcmludF90eXBlIChjaGFyICosIGludCk7Ci0gCi0gZXh0ZXJu IGh0YWJfdCBjcmVhdGVfY29waWVkX3R5cGVzX2hhc2ggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KTsKLSAKLS1leHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAotLQkJCQkJIHN0cnVjdCB0eXBlICp0eXBlLAotK2V4dGVybiBzdHJ1 Y3QgdHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IHR5cGUgKnR5cGUsCi0gCQkJCQkg aHRhYl90IGNvcGllZF90eXBlcyk7Ci0gCi0gZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGUg KGNvbnN0IHN0cnVjdCB0eXBlICp0eXBlKTsKLSAKLStleHRlcm4gdm9pZCBmcmVlX2FsbF90eXBl cyAodm9pZCk7Ci0rCi0gI2VuZGlmIC8qIEdEQlRZUEVTX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIv aTM4Ni1saW51eC1uYXQuYyBiL2dkYi9pMzg2LWxpbnV4LW5hdC5jCi1pbmRleCA0ZmNlMWFjLi4x NDRhODk5IDEwMDY0NAotLS0tIGEvZ2RiL2kzODYtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9pMzg2 LWxpbnV4LW5hdC5jCi1AQCAtNzQ3LDYgKzc0NywyMSBAQCBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0 YXR1cyAodW5zaWduZWQgbG9uZyBtYXNrKQotICAgICB9Ci0gfQotIAotKy8qIFNlZSBpMzg2X2Ry X2xvd190eXBlLmRldGFjaC4gIERvIG5vdCB1c2Ugd3JhcHBlcnMgaTM4Nl9saW51eF9kcl9zZXRf Y29udHJvbAotKyAgIG9yIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciBhcyB0aGV5IHdvdWxkIG1v ZGlmeSB0aGUgcmVnaXN0ZXIgY2FjaGUKLSsgICAoaTM4Nl9saW51eF9kcikuICAqLwotKwotK3N0 YXRpYyB2b2lkCi0raTM4Nl9saW51eF9kcl9kZXRhY2ggKHZvaWQpCi0rewotKyAgaW50IHJlZ251 bTsKLSsKLSsgIGkzODZfbGludXhfZHJfc2V0IChpbmZlcmlvcl9wdGlkLCBEUl9DT05UUk9MLCAw KTsKLSsgIGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzICh+MFVMKTsKLSsgIGZvciAocmVnbnVt ID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0gRFJfTEFTVEFERFI7IHJlZ251bSsrKQotKyAgICBp Mzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3JfcHRpZCwgcmVnbnVtLCAwKTsKLSt9Ci0rCi0gc3Rh dGljIHZvaWQKLSBpMzg2X2xpbnV4X25ld190aHJlYWQgKHB0aWRfdCBwdGlkKQotIHsKLUBAIC05 NzYsNiArOTkxLDcgQEAgX2luaXRpYWxpemVfaTM4Nl9saW51eF9uYXQgKHZvaWQpCi0gICBpMzg2 X2RyX2xvdy5yZXNldF9hZGRyID0gaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyOwotICAgaTM4Nl9k cl9sb3cuZ2V0X3N0YXR1cyA9IGkzODZfbGludXhfZHJfZ2V0X3N0YXR1czsKLSAgIGkzODZfZHJf bG93LnVuc2V0X3N0YXR1cyA9IGkzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzOwotKyAgaTM4Nl9k cl9sb3cuZGV0YWNoID0gaTM4Nl9saW51eF9kcl9kZXRhY2g7Ci0gICBpMzg2X3NldF9kZWJ1Z19y ZWdpc3Rlcl9sZW5ndGggKDQpOwotIAotICAgLyogT3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHRyYWNl IHJlc3VtZSBtZXRob2QuICAqLwotZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5jIGIvZ2RiL2kz ODYtbmF0LmMKLWluZGV4IGVhYTM2NDQuLjA5MjFjN2UgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1u YXQuYwotKysrIGIvZ2RiL2kzODYtbmF0LmMKLUBAIC01MzMsNiArNTMzLDE3IEBAIGkzODZfcmVt b3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgdHlwZSwKLSAgIHJl dHVybiByZXR2YWw7Ci0gfQotIAotKy8qIFNlZSB0YXJnZXRfZGV0YWNoX3dhdGNocG9pbnRzLiAg Ki8KLSsKLStzdGF0aWMgaW50Ci0raTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHMgKHZvaWQpCi0rewot KyAgaWYgKGkzODZfZHJfbG93LmRldGFjaCkKLSsgICAgaTM4Nl9kcl9sb3cuZGV0YWNoICgpOwot KwotKyAgcmV0dXJuIDA7Ci0rfQotKwotIC8qIFJldHVybiBub24temVybyBpZiB3ZSBjYW4gd2F0 Y2ggYSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0Ci0gICAgYWRkcmVzcyBBRERSIGFuZCB3 aG9zZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KLSAKLUBAIC02ODUsNiArNjk2LDcgQEAgaTM4 Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQotICAgdC0+dG9fc3RvcHBl ZF9kYXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOwotICAgdC0+dG9faW5z ZXJ0X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OwotICAgdC0+dG9fcmVtb3Zl X3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OwotKyAgdC0+dG9fZGV0YWNoX3dh dGNocG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gICB0LT50b19pbnNlcnRfaHdf YnJlYWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7Ci0gICB0LT50b19yZW1vdmVf aHdfYnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7Ci0gfQotZGlmZiAtLWdp dCBhL2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKLWluZGV4IDczMTdlN2QuLmVhOTE0 YTUgMTAwNjQ0Ci0tLS0gYS9nZGIvaTM4Ni1uYXQuaAotKysrIGIvZ2RiL2kzODYtbmF0LmgKLUBA IC02Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0 IHRhcmdldF9vcHMgKik7Ci0gICAgICAgdW5zZXRfc3RhdHVzICAgICAgICAgICAgIC0tIHVuc2V0 IHRoZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKLSAJCQkJICBzdGF0dXMgKERSNikgcmVn aXN0ZXIgZm9yIGFsbCBMV1BzCi0gCi0rICAgICAgZGV0YWNoICAgICAgICAgICAgICAgICAgIC0t IGNsZWFyIGFsbCBkZWJ1ZyByZWdpc3RlcnMgb2Ygb25seSB0aGUKLSsJCQkJICBJTkZFUklPUl9Q VElEIHRhc2sgd2l0aG91dCBhZmZlY3RpbmcgYW55Ci0rCQkJCSAgcmVnaXN0ZXIgY2FjaGVzLgot KwotICAgIEFkZGl0aW9uYWxseSwgdGhlIG5hdGl2ZSBmaWxlIHNob3VsZCBzZXQgdGhlIGRlYnVn X3JlZ2lzdGVyX2xlbmd0aAotICAgIGZpZWxkIHRvIDQgb3IgOCBkZXBlbmRpbmcgb24gdGhlIG51 bWJlciBvZiBieXRlcyB1c2VkIGZvcgotICAgIGRldWJnIHJlZ2lzdGVycy4gICovCi1AQCAtNzMs NiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZQotICAgICB2b2lkICgqcmVzZXRfYWRk cikgKGludCk7Ci0gICAgIHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdHVzKSAodm9pZCk7Ci0gICAg IHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKLSsgICAgdm9pZCAoKmRldGFj aCkgKHZvaWQpOwotICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3RoOwotICAgfTsKLSAKLWRp ZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwotaW5kZXggMGM5YTNhZi4u OTU3ZWMxZCAxMDA2NDQKLS0tLSBhL2dkYi9pbmZjYWxsLmMKLSsrKyBiL2dkYi9pbmZjYWxsLmMK LUBAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2FyZ19jb2VyY2UgKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKLSAgIHJldHVybiB2YWx1ZV9jYXN0ICh0eXBlLCBh cmcpOwotIH0KLSAKLSsvKiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9JRlVOQyAtIGEgZnVuY3Rp b24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVhbAotKyAgIGZ1bmN0aW9uIHRvIGNhbGwpLiAg UEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0aW9uIHJldHVybnMKLSsg ICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkIGZ1bmN0aW9uIHRvIGNh bGwuICBJZiBSRVRWQUxfVFlQRVAKLSsgICBpcyBub3QgTlVMTCBmaWxsIGluICpSRVRWQUxfVFlQ RVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVkCi0rICAgZnVuY3Rp b24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYgdGhlIHJldHVybiB0eXBl IGNvdWxkIG5vdCBiZQotKyAgIGZvdW5kLiAgKi8KLSsKLStzdGF0aWMgQ09SRV9BRERSCi0rZ251 X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JFX0FERFIgcGMpCi0r ewotKyAgY2hhciAqbmFtZV9hdF9wYzsKLSsgIENPUkVfQUREUiBzdGFydF9hdF9wYywgYWRkcmVz czsKLSsgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJj aCktPmJ1aWx0aW5fZnVuY19mdW5jOwotKyAgc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgKmFkZHJl c3NfdmFsOwotKwotKyAgaWYgKGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lX2F0 X3BjLCAmc3RhcnRfYXRfcGMsIE5VTEwpCi0rICAgICAgJiYgc3RhcnRfYXRfcGMgPT0gcGMpCi0r ICAgIHsKLSsgICAgICBpZiAocmVzb2x2ZV9nbnVfaWZ1bmMgKG5hbWVfYXRfcGMsICZhZGRyZXNz KSkKLSsJcmV0dXJuIGFkZHJlc3M7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgbmFtZV9hdF9wYyA9 IE5VTEw7Ci0rCi0rICBmdW5jdGlvbiA9IGFsbG9jYXRlX3ZhbHVlIChmdW5jX2Z1bmNfdHlwZSk7 Ci0rICBzZXRfdmFsdWVfYWRkcmVzcyAoZnVuY3Rpb24sIHBjKTsKLSsKLSsgIC8qIGdudS1pZnVu Y3MgaGF2ZSBubyBhcmd1bWVudHMuICBGVU5DVElPTiBpcyB0aGUgZnVuY3Rpb24gZW50cnkgYWRk cmVzcwotKyAgICAgd2hpbGUgQUREUkVTUyBpcyBhIHBvc3NpYmxlIGZ1bmN0aW9uIGRlc2NyaXB0 b3IuLiAgKi8KLSsgIGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChmdW5jdGlv biwgMCwgTlVMTCk7Ci0rICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVzc192YWwp OwotKwotKyAgaWYgKG5hbWVfYXRfcGMpCi0rICAgIGdudV9pZnVuY19yZWNvcmRfY2FjaGUgKGdk YmFyY2gsIG5hbWVfYXRfcGMsIGFkZHJlc3MpOwotKwotKyAgcmV0dXJuIGdkYmFyY2hfY29udmVy dF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHJlc3MsICZjdXJyZW50X3RhcmdldCk7 Ci0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCi0rZmluZF9mdW5jdGlvbl9yZXR1cm5fdHlw ZSAoQ09SRV9BRERSIHBjKQotK3sKLSsgIHN0cnVjdCBzeW1ib2wgKnN5bSA9IGZpbmRfcGNfZnVu Y3Rpb24gKHBjKTsKLSsKLSsgIGlmIChzeW0gIT0gTlVMTCAmJiBCTE9DS19TVEFSVCAoU1lNQk9M X0JMT0NLX1ZBTFVFIChzeW0pKSA9PSBwYwotKyAgICAgICYmIFNZTUJPTF9UWVBFIChzeW0pICE9 IE5VTEwpCi0rICAgIHJldHVybiBUWVBFX1RBUkdFVF9UWVBFIChTWU1CT0xfVFlQRSAoc3ltKSk7 Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0gLyogRGV0ZXJtaW5lIGEgZnVuY3Rpb24ncyBh ZGRyZXNzIGFuZCBpdHMgcmV0dXJuIHR5cGUgZnJvbSBpdHMgdmFsdWUuCi0gICAgQ2FsbHMgZXJy b3IoKSBpZiB0aGUgZnVuY3Rpb24gaXMgbm90IHZhbGlkIGZvciBjYWxsaW5nLiAgKi8KLSAKLUBA IC0yMzMsNyArMjgzLDYgQEAgZmluZF9mdW5jdGlvbl9hZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0 aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBlKQotIHsKLSAgIHN0cnVjdCB0eXBlICpmdHlw ZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGZ1bmN0aW9uKSk7Ci0gICBzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCA9IGdldF90eXBlX2FyY2ggKGZ0eXBlKTsKLS0gIGVudW0gdHlwZV9jb2Rl IGNvZGUgPSBUWVBFX0NPREUgKGZ0eXBlKTsKLSAgIHN0cnVjdCB0eXBlICp2YWx1ZV90eXBlID0g TlVMTDsKLSAgIENPUkVfQUREUiBmdW5hZGRyOwotIAotQEAgLTI0MSwyNCArMjkwLDM0IEBAIGZp bmRfZnVuY3Rpb25fYWRkciAoc3RydWN0IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipy ZXR2YWxfdHlwZSkKLSAgICAgIHBhcnQgb2YgaXQuICAqLwotIAotICAgLyogRGV0ZXJtaW5lIGFk ZHJlc3MgdG8gY2FsbC4gICovCi0tICBpZiAoY29kZSA9PSBUWVBFX0NPREVfRlVOQyB8fCBjb2Rl ID09IFRZUEVfQ09ERV9NRVRIT0QpCi0tICAgIHsKLS0gICAgICBmdW5hZGRyID0gdmFsdWVfYWRk cmVzcyAoZnVuY3Rpb24pOwotLSAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdFVF9UWVBFIChm dHlwZSk7Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGNvZGUgPT0gVFlQRV9DT0RFX1BUUikKLSsgIGlm IChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfRlVOQwotKyAgICAgIHx8IFRZUEVfQ09E RSAoZnR5cGUpID09IFRZUEVfQ09ERV9NRVRIT0QpCi0rICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRy ZXNzIChmdW5jdGlvbik7Ci0rICBlbHNlIGlmIChUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NP REVfUFRSKQotICAgICB7Ci0gICAgICAgZnVuYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKGZ1bmN0 aW9uKTsKLSAgICAgICBmdHlwZSA9IGNoZWNrX3R5cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGZ0 eXBlKSk7Ci0gICAgICAgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0g CSAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX01FVEhPRCkKLSsJZnVuYWRkciA9 IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCi0r CQkJCQkJICAgICAgJmN1cnJlbnRfdGFyZ2V0KTsKLSsgICAgfQotKyAgaWYgKFRZUEVfQ09ERSAo ZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCi0rICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0g VFlQRV9DT0RFX01FVEhPRCkKLSsgICAgewotKyAgICAgIHZhbHVlX3R5cGUgPSBUWVBFX1RBUkdF VF9UWVBFIChmdHlwZSk7Ci0rCi0rICAgICAgaWYgKFRZUEVfR05VX0lGVU5DIChmdHlwZSkpCi0g CXsKLS0JICBmdW5hZGRyID0gZ2RiYXJjaF9jb252ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2Ri YXJjaCwgZnVuYWRkciwKLS0JCQkJCQkJJmN1cnJlbnRfdGFyZ2V0KTsKLS0JICB2YWx1ZV90eXBl ID0gVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpOwotKwkgIGZ1bmFkZHIgPSBnbnVfaWZ1bmNfcmVz b2x2ZSAoZ2RiYXJjaCwgZnVuYWRkcik7Ci0rCi0rCSAgLyogU2tpcCBxdWVyeWluZyB0aGUgZnVu Y3Rpb24gc3ltYm9sIGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCi0rCSAgICAgYXNrZWQgZm9y LiAgKi8KLSsJICBpZiAocmV0dmFsX3R5cGUpCi0rCSAgICB2YWx1ZV90eXBlID0gZmluZF9mdW5j dGlvbl9yZXR1cm5fdHlwZSAoZnVuYWRkcik7Ci0gCX0KLSAgICAgfQotLSAgZWxzZSBpZiAoY29k ZSA9PSBUWVBFX0NPREVfSU5UKQotKyAgZWxzZSBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX0lOVCkKLSAgICAgewotICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlv bnMgbGFja2luZyBkZWJ1Z2dpbmcgaW5mby4KLSAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNo YXJhY3RlcnMgc2luY2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCi1kaWZmIC0tZ2l0IGEv Z2RiL2luZmNtZC5jIGIvZ2RiL2luZmNtZC5jCi1pbmRleCBjNGNkYjA2Li5kMjEzZjZhIDEwMDY0 NAotLS0tIGEvZ2RiL2luZmNtZC5jCi0rKysgYi9nZGIvaW5mY21kLmMKLUBAIC04MjIsNyArODIy LDcgQEAgbmV4dGlfY29tbWFuZCAoY2hhciAqY291bnRfc3RyaW5nLCBpbnQgZnJvbV90dHkpCi0g ICBzdGVwXzEgKDEsIDEsIGNvdW50X3N0cmluZyk7Ci0gfQotIAotLXN0YXRpYyB2b2lkCi0rdm9p ZAotIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCAodm9pZCAqYXJnKQotIHsKLSAg IGludCB0aHJlYWQgPSAqIChpbnQgKikgYXJnOwotQEAgLTg2MiwxMCArODYyLDEzIEBAIHN0ZXBf MSAoaW50IHNraXBfc3Vicm91dGluZXMsIGludCBzaW5nbGVfaW5zdCwgY2hhciAqY291bnRfc3Ry aW5nKQotIAotICAgaWYgKCFzaW5nbGVfaW5zdCB8fCBza2lwX3N1YnJvdXRpbmVzKQkJLyogbGVh dmUgc2kgY29tbWFuZCBhbG9uZSAqLwotICAgICB7Ci0rICAgICAgc3RydWN0IHRocmVhZF9pbmZv ICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKLSsKLSAgICAgICBpZiAoaW5fdGhyZWFkX2xpc3Qg KGluZmVyaW9yX3B0aWQpKQotICAJdGhyZWFkID0gcGlkX3RvX3RocmVhZF9pZCAoaW5mZXJpb3Jf cHRpZCk7Ci0gCi0gICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKLSsgICAg ICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZ2V0X2N1cnJlbnRfZnJhbWUg KCkpOwotIAotICAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9j bGVhbnVwLCAmdGhyZWFkKTsKLSAgICAgfQotQEAgLTEyMTksNiArMTIyMiwxNSBAQCBzaWduYWxf Y29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwgaW50IGZyb21fdHR5KQotICAgcHJvY2VlZCAoKENP UkVfQUREUikgLTEsIG91cnNpZywgMCk7Ci0gfQotIAotKy8qIEEgY29udGludWF0aW9uIGNhbGxi YWNrIGZvciB1bnRpbF9uZXh0X2NvbW1hbmQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rdW50aWxf bmV4dF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKLSt7Ci0rICBzdHJ1Y3QgdGhyZWFkX2luZm8g KnRwID0gYXJnOwotKyAgZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCAodHAtPm51bSk7Ci0rfQot KwotIC8qIFByb2NlZWQgdW50aWwgd2UgcmVhY2ggYSBkaWZmZXJlbnQgc291cmNlIGxpbmUgd2l0 aCBwYyBncmVhdGVyIHRoYW4KLSAgICBvdXIgY3VycmVudCBvbmUgb3IgZXhpdCB0aGUgZnVuY3Rp b24uICBXZSBza2lwIGNhbGxzIGluIGJvdGggY2FzZXMuCi0gCi1AQCAtMTIzNSw2ICsxMjQ3LDgg QEAgdW50aWxfbmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gICBzdHJ1Y3Qgc3ltYm9sICpm dW5jOwotICAgc3RydWN0IHN5bXRhYl9hbmRfbGluZSBzYWw7Ci0gICBzdHJ1Y3QgdGhyZWFkX2lu Zm8gKnRwID0gaW5mZXJpb3JfdGhyZWFkICgpOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0r ICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotIAotICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMg KCk7Ci0gICBzZXRfc3RlcF9mcmFtZSAoKTsKLUBAIC0xMjcwLDcgKzEyODQsMTkgQEAgdW50aWxf bmV4dF9jb21tYW5kIChpbnQgZnJvbV90dHkpCi0gCi0gICB0cC0+c3RlcF9tdWx0aSA9IDA7CQkv KiBPbmx5IG9uZSBjYWxsIHRvIHByb2NlZWQgKi8KLSAKLSsgIHNldF9sb25nam1wX2JyZWFrcG9p bnQgKHRocmVhZCk7Ci0rICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAoZnJh bWUpOwotKyAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwIChkZWxldGVfbG9uZ2ptcF9icmVha3Bv aW50X2NsZWFudXAsICZ0aHJlYWQpOwotKwotICAgcHJvY2VlZCAoKENPUkVfQUREUikgLTEsIFRB UkdFVF9TSUdOQUxfREVGQVVMVCwgMSk7Ci0rCi0rICBpZiAodGFyZ2V0X2Nhbl9hc3luY19wICgp ICYmIGlzX3J1bm5pbmcgKGluZmVyaW9yX3B0aWQpKQotKyAgICB7Ci0rICAgICAgZGlzY2FyZF9j bGVhbnVwcyAob2xkX2NoYWluKTsKLSsgICAgICBhZGRfY29udGludWF0aW9uICh0cCwgdW50aWxf bmV4dF9jb250aW51YXRpb24sIHRwLCBOVUxMKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBkb19j bGVhbnVwcyAob2xkX2NoYWluKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0xNDYzLDYgKzE0 ODksNyBAQCBmaW5pc2hfY29tbWFuZF9jb250aW51YXRpb24gKHZvaWQgKmFyZykKLSAgIGlmIChi cyAhPSBOVUxMICYmIHRwLT5wcm9jZWVkX3RvX2ZpbmlzaCkKLSAgICAgb2JzZXJ2ZXJfbm90aWZ5 X25vcm1hbF9zdG9wIChicywgMSAvKiBwcmludCBmcmFtZSAqLyk7Ci0gICBkZWxldGVfYnJlYWtw b2ludCAoYS0+YnJlYWtwb2ludCk7Ci0rICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50IChpbmZl cmlvcl90aHJlYWQgKCktPm51bSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTU0Niw2ICsx NTczLDcgQEAgZmluaXNoX2ZvcndhcmQgKHN0cnVjdCBzeW1ib2wgKmZ1bmN0aW9uLCBzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZnJhbWUpCi0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKLSAg IHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47Ci0gICBzdHJ1Y3QgZmluaXNoX2NvbW1hbmRfY29u dGludWF0aW9uX2FyZ3MgKmNhcmdzOwotKyAgaW50IHRocmVhZCA9IHRwLT5udW07Ci0gCi0gICBz YWwgPSBmaW5kX3BjX2xpbmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKLSAgIHNhbC5wYyA9 IGdldF9mcmFtZV9wYyAoZnJhbWUpOwotQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9y d2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rpb24sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK LSAKLSAgIG9sZF9jaGFpbiA9IG1ha2VfY2xlYW51cF9kZWxldGVfYnJlYWtwb2ludCAoYnJlYWtw b2ludCk7Ci0gCi0rICBzZXRfbG9uZ2ptcF9icmVha3BvaW50ICh0aHJlYWQpOwotKyAgdHAtPmlu aXRpYXRpbmdfZnJhbWUgPSBnZXRfZnJhbWVfaWQgKGZyYW1lKTsKLSsgIG1ha2VfY2xlYW51cCAo ZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKLSsKLSAgIHRwLT5w cm9jZWVkX3RvX2ZpbmlzaCA9IDE7ICAgIC8qIFdlIHdhbnQgc3RvcF9yZWdpc3RlcnMsIHBsZWFz ZS4uLiAgKi8KLSAgIGNhcmdzID0geG1hbGxvYyAoc2l6ZW9mICgqY2FyZ3MpKTsKLSAKLWRpZmYg LS1naXQgYS9nZGIvaW5mZXJpb3IuaCBiL2dkYi9pbmZlcmlvci5oCi1pbmRleCA1YWJlYzY4Li5l MzA5Mjc3IDEwMDY0NAotLS0tIGEvZ2RiL2luZmVyaW9yLmgKLSsrKyBiL2dkYi9pbmZlcmlvci5o Ci1AQCAtMjkxLDYgKzI5MSw4IEBAIGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRfY29tbWFu ZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5KTsKLSAKLSBleHRlcm4gdm9pZCBpbnRlcnJ1cHRf dGFyZ2V0XzEgKGludCBhbGxfdGhyZWFkcyk7Ci0gCi0rZXh0ZXJuIHZvaWQgZGVsZXRlX2xvbmdq bXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpOwotKwotIGV4dGVybiB2b2lkIGRldGFj aF9jb21tYW5kIChjaGFyICosIGludCk7Ci0gCi0gZXh0ZXJuIHZvaWQgbm90aWNlX25ld19pbmZl cmlvciAocHRpZF90LCBpbnQsIGludCk7Ci1kaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5jIGIvZ2Ri L2luZnJ1bi5jCi1pbmRleCA1NGIxZDlmLi41OGQwNDVhIDEwMDY0NAotLS0tIGEvZ2RiL2luZnJ1 bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC00NSw2ICs0NSw4IEBACi0gI2luY2x1ZGUgImxh bmd1YWdlLmgiCi0gI2luY2x1ZGUgInNvbGliLmgiCi0gI2luY2x1ZGUgIm1haW4uaCIKLSsjaW5j bHVkZSAiZGljdGlvbmFyeS5oIgotKyNpbmNsdWRlICJibG9jay5oIgotICNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCi0gI2luY2x1ZGUgIm1pL21pLWNvbW1vbi5oIgotICNpbmNsdWRlICJldmVudC10 b3AuaCIKLUBAIC0zNjcsNiArMzY5LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCi0gICAgICBwYXJl bnQgdGhyZWFkIHN0cnVjdHVyZSdzIHJ1biBjb250cm9sIHJlbGF0ZWQgZmllbGRzLCBub3QganVz dCB0aGVzZS4KLSAgICAgIEluaXRpYWxpemVkIHRvIGF2b2lkICJtYXkgYmUgdXNlZCB1bmluaXRp YWxpemVkIiB3YXJuaW5ncyBmcm9tIGdjYy4gICovCi0gICBzdHJ1Y3QgYnJlYWtwb2ludCAqc3Rl cF9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0rICBzdHJ1Y3QgYnJlYWtwb2ludCAqZXhjZXB0 aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSAgIENPUkVfQUREUiBzdGVwX3JhbmdlX3N0 YXJ0ID0gMDsKLSAgIENPUkVfQUREUiBzdGVwX3JhbmdlX2VuZCA9IDA7Ci0gICBzdHJ1Y3QgZnJh bWVfaWQgc3RlcF9mcmFtZV9pZCA9IHsgMCB9OwotQEAgLTQxOSw2ICs0MjIsOCBAQCBmb2xsb3df Zm9yayAodm9pZCkKLSAJICAgIHN0ZXBfcmFuZ2Vfc3RhcnQgPSB0cC0+c3RlcF9yYW5nZV9zdGFy dDsKLSAJICAgIHN0ZXBfcmFuZ2VfZW5kID0gdHAtPnN0ZXBfcmFuZ2VfZW5kOwotIAkgICAgc3Rl cF9mcmFtZV9pZCA9IHRwLT5zdGVwX2ZyYW1lX2lkOwotKwkgICAgZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50Ci0rCSAgICAgID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKHRwLT5leGNl cHRpb25fcmVzdW1lX2JyZWFrcG9pbnQpOwotIAotIAkgICAgLyogRm9yIG5vdywgZGVsZXRlIHRo ZSBwYXJlbnQncyBzciBicmVha3BvaW50LCBvdGhlcndpc2UsCi0gCSAgICAgICBwYXJlbnQvY2hp bGQgc3IgYnJlYWtwb2ludHMgYXJlIGNvbnNpZGVyZWQgZHVwbGljYXRlcywKLUBAIC00MjksNiAr NDM0LDcgQEAgZm9sbG93X2ZvcmsgKHZvaWQpCi0gCSAgICB0cC0+c3RlcF9yYW5nZV9zdGFydCA9 IDA7Ci0gCSAgICB0cC0+c3RlcF9yYW5nZV9lbmQgPSAwOwotIAkgICAgdHAtPnN0ZXBfZnJhbWVf aWQgPSBudWxsX2ZyYW1lX2lkOwotKwkgICAgZGVsZXRlX2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtw b2ludCAodHApOwotIAkgIH0KLSAKLSAJcGFyZW50ID0gaW5mZXJpb3JfcHRpZDsKLUBAIC00NzAs NiArNDc2LDggQEAgZm9sbG93X2ZvcmsgKHZvaWQpCi0gCQkgICAgdHAtPnN0ZXBfcmFuZ2Vfc3Rh cnQgPSBzdGVwX3JhbmdlX3N0YXJ0OwotIAkJICAgIHRwLT5zdGVwX3JhbmdlX2VuZCA9IHN0ZXBf cmFuZ2VfZW5kOwotIAkJICAgIHRwLT5zdGVwX2ZyYW1lX2lkID0gc3RlcF9mcmFtZV9pZDsKLSsJ CSAgICB0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50Ci0rCQkgICAgICA9IGV4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludDsKLSAJCSAgfQotIAkJZWxzZQotIAkJICB7Ci1AQCAtNTIzLDYg KzUzMSw5IEBAIGZvbGxvd19pbmZlcmlvcl9yZXNldF9icmVha3BvaW50cyAodm9pZCkKLSAgIGlm ICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCkKLSAgICAgYnJlYWtwb2ludF9yZV9zZXRfdGhy ZWFkICh0cC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCk7Ci0gCi0rICBpZiAodHAtPmV4Y2VwdGlv bl9yZXN1bWVfYnJlYWtwb2ludCkKLSsgICAgYnJlYWtwb2ludF9yZV9zZXRfdGhyZWFkICh0cC0+ ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKLSsKLSAgIC8qIFJlaW5zZXJ0IGFsbCBicmVh a3BvaW50cyBpbiB0aGUgY2hpbGQuICBUaGUgdXNlciBtYXkgaGF2ZSBzZXQKLSAgICAgIGJyZWFr cG9pbnRzIGFmdGVyIGNhdGNoaW5nIHRoZSBmb3JrLCBpbiB3aGljaCBjYXNlIHRob3NlCi0gICAg ICB3ZXJlIG5ldmVyIHNldCBpbiB0aGUgY2hpbGQsIGJ1dCBvbmx5IGluIHRoZSBwYXJlbnQuICBU aGlzIG1ha2VzCi1AQCAtNzYwLDYgKzc3MSw3IEBAIGZvbGxvd19leGVjIChwdGlkX3QgcGlkLCBj aGFyICpleGVjZF9wYXRobmFtZSkKLSAgIC8qIElmIHRoZXJlIHdhcyBvbmUsIGl0J3MgZ29uZSBu b3cuICBXZSBjYW5ub3QgdHJ1bHkgc3RlcC10by1uZXh0Ci0gICAgICBzdGF0ZW1lbnQgdGhyb3Vn aCBhbiBleGVjKCkuICovCi0gICB0aC0+c3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0r ICB0aC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSAgIHRoLT5zdGVwX3Jh bmdlX3N0YXJ0ID0gMDsKLSAgIHRoLT5zdGVwX3JhbmdlX2VuZCA9IDA7Ci0gCi1AQCAtMjE5MCw2 ICsyMjAyLDggQEAgc3RhdGljIHZvaWQgaW5zZXJ0X3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnRfYXRf c2FsIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSAJCQkJCQkgIHN0cnVjdCBzeW10YWJfYW5k X2xpbmUgc3Jfc2FsLAotIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKLSBzdGF0aWMg dm9pZCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwg Q09SRV9BRERSKTsKLStzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3Qg ZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKiwKLSsJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICos IHN0cnVjdCBzeW1ib2wgKik7Ci0gCi0gc3RhdGljIHZvaWQgc3RvcF9zdGVwcGluZyAoc3RydWN0 IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwotIHN0YXRpYyB2b2lkIHByZXBhcmVfdG9f d2FpdCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOwotQEAgLTIzMTMsNiAr MjMyNyw3IEBAIGRlbGV0ZV9zdGVwX3Jlc3VtZV9icmVha3BvaW50X2NhbGxiYWNrIChzdHJ1Y3Qg dGhyZWFkX2luZm8gKmluZm8sIHZvaWQgKmRhdGEpCi0gICAgIHJldHVybiAwOwotIAotICAgZGVs ZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGluZm8pOwotKyAgZGVsZXRlX2V4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCAoaW5mbyk7Ci0gICByZXR1cm4gMDsKLSB9Ci0gCi1AQCAtMjMzNyw2 ICsyMzUyLDcgQEAgZGVsZXRlX3N0ZXBfdGhyZWFkX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHZv aWQpCi0gICAgICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsK LSAKLSAgICAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAodHApOwotKyAgICAgIGRl bGV0ZV9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHRwKTsKLSAgICAgfQotICAgZWxzZQot ICAgICAvKiBJbiBhbGwtc3RvcCBtb2RlLCBkZWxldGUgYWxsIHN0ZXAtcmVzdW1lIGFuZCBsb25n am1wLXJlc3VtZQotQEAgLTMyNDEsNiArMzI1NywxMCBAQCBoYW5kbGVfaW5mZXJpb3JfZXZlbnQg KHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotIAotICAgICAgIHN0b3BfcGMg PSByZWdjYWNoZV9yZWFkX3BjIChnZXRfdGhyZWFkX3JlZ2NhY2hlIChlY3MtPnB0aWQpKTsKLSAK LSsgICAgICAvKiBDbGVhciBXQVRDSFBPSU5UX1RSSUdHRVJFRCB2YWx1ZXMgZnJvbSBwcmV2aW91 cyBzdG9wIHdoaWNoIGNvdWxkCi0rCSBjb25mdXNlIGJwc3RhdF9zdG9wX3N0YXR1cyBhbmQgYnBz dGF0X2V4cGxhaW5zX3NpZ25hbC4gICovCi0rICAgICAgd2F0Y2hwb2ludHNfdHJpZ2dlcmVkICgm ZWNzLT53cyk7Ci0rCi0gICAgICAgZWNzLT5ldmVudF90aHJlYWQtPnN0b3BfYnBzdGF0Ci0gCT0g YnBzdGF0X3N0b3Bfc3RhdHVzIChnZXRfcmVnY2FjaGVfYXNwYWNlIChnZXRfY3VycmVudF9yZWdj YWNoZSAoKSksCi0gCQkJICAgICAgc3RvcF9wYywgZWNzLT5wdGlkKTsKLUBAIC0zMzI4LDYgKzMz NDgsMTAgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xf c3RhdGUgKmVjcykKLSAKLSAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3Ro cmVhZF9yZWdjYWNoZSAoZWNzLT5wdGlkKSk7Ci0gCi0rICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lO VF9UUklHR0VSRUQgdmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAotKwkgY29u ZnVzZSBicHN0YXRfc3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLwot KyAgICAgIHdhdGNocG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwotKwotICAgICAgIC8qIERv IHdoYXRldmVyIGlzIG5lY2Vzc2FyeSB0byB0aGUgcGFyZW50IGJyYW5jaCBvZiB0aGUgdmZvcmsu ICAqLwotICAgICAgIGhhbmRsZV92Zm9ya19jaGlsZF9leGVjX29yX2V4aXQgKDEpOwotIAotQEAg LTQwNzYsMjMgKzQxMDAsMzMgQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6Ci0gCi0gCWVjcy0+ ZXZlbnRfdGhyZWFkLT5zdGVwcGluZ19vdmVyX2JyZWFrcG9pbnQgPSAxOwotIAotLQlpZiAoIWdk YmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0X3AgKGdkYmFyY2gpCi0tCSAgICB8fCAhZ2RiYXJjaF9n ZXRfbG9uZ2ptcF90YXJnZXQgKGdkYmFyY2gsIGZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCWlmICh3 aGF0LmlzX2xvbmdqbXApCi0gCSAgewotLQkgICAgaWYgKGRlYnVnX2luZnJ1bikKLS0JICAgICAg ZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiXAotKwkgICAgaWYgKCFnZGJhcmNoX2dl dF9sb25nam1wX3RhcmdldF9wIChnZGJhcmNoKQotKwkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBf dGFyZ2V0IChnZGJhcmNoLAotKwkJCQkJCWZyYW1lLCAmam1wX2J1Zl9wYykpCi0rCSAgICAgIHsK LSsJCWlmIChkZWJ1Z19pbmZydW4pCi0rCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxv ZywgIlwKLSBpbmZydW46IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hf Z2V0X2xvbmdqbXBfdGFyZ2V0KVxuIik7Ci0tCSAgICBrZWVwX2dvaW5nIChlY3MpOwotLQkgICAg cmV0dXJuOwotLQkgIH0KLSsJCWtlZXBfZ29pbmcgKGVjcyk7Ci0rCQlyZXR1cm47Ci0rCSAgICAg IH0KLSAKLS0JLyogV2UncmUgZ29pbmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3Vt ZSBicmVha3BvaW50Ci0tCSAgIHdpdGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAgKi8K LS0JZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKLSsJ ICAgIC8qIFdlJ3JlIGdvaW5nIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJl YWtwb2ludAotKwkgICAgICAgd2l0aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLwot KwkgICAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsK LSAKLS0JLyogSW5zZXJ0IGEgYnJlYWtwb2ludCBhdCByZXN1bWUgYWRkcmVzcy4gICovCi0tCWlu c2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKLSsJ ICAgIC8qIEluc2VydCBhIGJyZWFrcG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLwotKwkgICAg aW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKGdkYmFyY2gsIGptcF9idWZfcGMpOwot KwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJh bWVfZnVuY3Rpb24gKGZyYW1lKTsKLSAKLSsJICAgIGlmIChmdW5jKQotKwkgICAgICBjaGVja19l eGNlcHRpb25fcmVzdW1lIChlY3MsIGZyYW1lLCBmdW5jKTsKLSsJICB9Ci0gCWtlZXBfZ29pbmcg KGVjcyk7Ci0gCXJldHVybjsKLSAKLUBAIC00MTAxLDggKzQxMzUsNTIgQEAgaW5mcnVuOiBCUFNU QVRfV0hBVF9TRVRfTE9OR0pNUF9SRVNVTUUgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldClc biIpOwotIAkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAJCQkgICAgICAiaW5m cnVuOiBCUFNUQVRfV0hBVF9DTEVBUl9MT05HSk1QX1JFU1VNRVxuIik7Ci0gCi0tCWdkYl9hc3Nl cnQgKGVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50ICE9IE5VTEwpOwot LQlkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwlp ZiAod2hhdC5pc19sb25nam1wKQotKwkgIHsKLSsJICAgIGdkYl9hc3NlcnQgKGVjcy0+ZXZlbnRf dGhyZWFkLT5zdGVwX3Jlc3VtZV9icmVha3BvaW50ICE9IE5VTEwpOwotKwkgICAgZGVsZXRlX3N0 ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKLSsJICB9Ci0rCWVsc2UK LSsJICB7Ci0rCSAgICAvKiBUaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB0byBjb25zaWRlci4KLSsK LSsJICAgICAgIDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMuICBJbiB0 aGlzIGNhc2UKLSsJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhh cyBnb25lIHRvbyBmYXIuCi0rCi0rCSAgICAgICAyLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlz dHMsIGFuZCBpcyB0aGUgc2FtZSBhcyB0aGUKLSsJICAgICAgIGN1cnJlbnQgZnJhbWUuICBXZSBz dG9wLCBiZWNhdXNlIHRoZSBleGNlcHRpb24gaGFzIGJlZW4KLSsJICAgICAgIGNhdWdodC4KLSsK LSsJICAgICAgIDMuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4aXN0cyBhbmQgaXMgZGlmZmVyZW50 IGZyb20KLSsJICAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgVGhpcyBtZWFucyB0aGUgZXhjZXB0 aW9uIGhhcyBiZWVuCi0rCSAgICAgICBjYXVnaHQgYmVuZWF0aCB0aGUgaW5pdGlhdGluZyBmcmFt ZSwgc28ga2VlcCBnb2luZy4gICovCi0rCSAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqaW5pdF9mcmFt ZQotKwkgICAgICA9IGZyYW1lX2ZpbmRfYnlfaWQgKGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0aWF0 aW5nX2ZyYW1lKTsKLSsKLSsJICAgIGdkYl9hc3NlcnQgKGVjcy0+ZXZlbnRfdGhyZWFkLT5leGNl cHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgIT0gTlVMTCk7Ci0rCSAgICBkZWxldGVfZXhjZXB0aW9u X3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCk7Ci0rCi0rCSAgICBpZiAoaW5p dF9mcmFtZSkKLSsJICAgICAgewotKwkJc3RydWN0IGZyYW1lX2lkIGN1cnJlbnRfaWQKLSsJCSAg PSBnZXRfZnJhbWVfaWQgKGdldF9jdXJyZW50X2ZyYW1lICgpKTsKLSsJCWlmIChmcmFtZV9pZF9l cSAoY3VycmVudF9pZCwKLSsJCQkJIGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0aWF0aW5nX2ZyYW1l KSkKLSsJCSAgewotKwkJICAgIC8qIENhc2UgMi4gIEZhbGwgdGhyb3VnaC4gICovCi0rCQkgIH0K LSsJCWVsc2UKLSsJCSAgewotKwkJICAgIC8qIENhc2UgMy4gICovCi0rCQkgICAga2VlcF9nb2lu ZyAoZWNzKTsKLSsJCSAgICByZXR1cm47Ci0rCQkgIH0KLSsJICAgICAgfQotKwotKwkgICAgLyog Rm9yIENhc2VzIDEgYW5kIDIsIHJlbW92ZSB0aGUgc3RlcC1yZXN1bWUgYnJlYWtwb2ludCwKLSsJ ICAgICAgIGlmIGl0IGV4aXN0cy4gICovCi0rCSAgICBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtw b2ludCAoZWNzLT5ldmVudF90aHJlYWQpOwotKwkgIH0KLSAKLSAJZWNzLT5ldmVudF90aHJlYWQt PnN0b3Bfc3RlcCA9IDE7Ci0gCXByaW50X3N0b3BfcmVhc29uIChFTkRfU1RFUFBJTkdfUkFOR0Us IDApOwotQEAgLTUwNzAsNiArNTE0OCw5NyBAQCBpbnNlcnRfbG9uZ2ptcF9yZXN1bWVfYnJlYWtw b2ludCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBwYykKLSAgICAgc2V0X21v bWVudGFyeV9icmVha3BvaW50X2F0X3BjIChnZGJhcmNoLCBwYywgYnBfbG9uZ2ptcF9yZXN1bWUp OwotIH0KLSAKLSsvKiBJbnNlcnQgYW4gZXhjZXB0aW9uIHJlc3VtZSBicmVha3BvaW50LiAgVFAg aXMgdGhlIHRocmVhZCB0aHJvd2luZwotKyAgIHRoZSBleGNlcHRpb24uICBUaGUgYmxvY2sgQiBp cyB0aGUgYmxvY2sgb2YgdGhlIHVud2luZGVyIGRlYnVnIGhvb2sKLSsgICBmdW5jdGlvbi4gIEZS QU1FIGlzIHRoZSBmcmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBjYWxsIHRvIHRoaXMKLSsgICBm dW5jdGlvbi4gIFNZTSBpcyB0aGUgc3ltYm9sIG9mIHRoZSBmdW5jdGlvbiBhcmd1bWVudCBob2xk aW5nIHRoZQotKyAgIHRhcmdldCBQQyBvZiB0aGUgZXhjZXB0aW9uLiAgKi8KLSsKLStzdGF0aWMg dm9pZAotK2luc2VydF9leGNlcHRpb25fcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdCB0aHJlYWRf aW5mbyAqdHAsCi0rCQkJCSAgICBzdHJ1Y3QgYmxvY2sgKmIsCi0rCQkJCSAgICBzdHJ1Y3QgZnJh bWVfaW5mbyAqZnJhbWUsCi0rCQkJCSAgICBzdHJ1Y3Qgc3ltYm9sICpzeW0pCi0rewotKyAgc3Ry dWN0IGdkYl9leGNlcHRpb24gZTsKLSsKLSsgIC8qIFdlIHdhbnQgdG8gaWdub3JlIGVycm9ycyBo ZXJlLiAgKi8KLSsgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7Ci0rICAg ICAgc3RydWN0IHN5bWJvbCAqdnN5bTsKLSsgICAgICBzdHJ1Y3QgdmFsdWUgKnZhbHVlOwotKyAg ICAgIENPUkVfQUREUiBoYW5kbGVyOwotKyAgICAgIHN0cnVjdCBicmVha3BvaW50ICpicDsKLSsK LSsgICAgICB2c3ltID0gbG9va3VwX3N5bWJvbCAoU1lNQk9MX0xJTktBR0VfTkFNRSAoc3ltKSwg YiwgVkFSX0RPTUFJTiwgTlVMTCk7Ci0rICAgICAgdmFsdWUgPSByZWFkX3Zhcl92YWx1ZSAodnN5 bSwgZnJhbWUpOwotKyAgICAgIC8qIElmIHRoZSB2YWx1ZSB3YXMgb3B0aW1pemVkIG91dCwgcmV2 ZXJ0IHRvIHRoZSBvbGQgYmVoYXZpb3IuICAqLwotKyAgICAgIGlmICghIHZhbHVlX29wdGltaXpl ZF9vdXQgKHZhbHVlKSkKLSsJewotKwkgIGhhbmRsZXIgPSB2YWx1ZV9hc19hZGRyZXNzICh2YWx1 ZSk7Ci0rCi0rCSAgaWYgKGRlYnVnX2luZnJ1bikKLSsJICAgIGZwcmludGZfdW5maWx0ZXJlZCAo Z2RiX3N0ZGxvZywKLSsJCQkJImluZnJ1bjogZXhjZXB0aW9uIHJlc3VtZSBhdCAlbHhcbiIsCi0r CQkJCSh1bnNpZ25lZCBsb25nKSBoYW5kbGVyKTsKLSsKLSsJICBicCA9IHNldF9tb21lbnRhcnlf YnJlYWtwb2ludF9hdF9wYyAoZ2V0X2ZyYW1lX2FyY2ggKGZyYW1lKSwKLSsJCQkJCSAgICAgICBo YW5kbGVyLCBicF9leGNlcHRpb25fcmVzdW1lKTsKLSsJICBicC0+dGhyZWFkID0gdHAtPm51bTsK LSsJICBpbmZlcmlvcl90aHJlYWQgKCktPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IGJw OwotKwl9Ci0rICAgIH0KLSt9Ci0rCi0rLyogVGhpcyBpcyBjYWxsZWQgd2hlbiBhbiBleGNlcHRp b24gaGFzIGJlZW4gaW50ZXJjZXB0ZWQuICBDaGVjayB0bwotKyAgIHNlZSB3aGV0aGVyIHRoZSBl eGNlcHRpb24ncyBkZXN0aW5hdGlvbiBpcyBvZiBpbnRlcmVzdCwgYW5kIGlmIHNvLAotKyAgIHNl dCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFrcG9pbnQgdGhlcmUuICAqLwotKwotK3N0YXRpYyB2 b2lkCi0rY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0 YXRlICplY3MsCi0rCQkJc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBzdHJ1Y3Qgc3ltYm9sICpm dW5jKQotK3sKLSsgIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rCi0rICBUUllfQ0FUQ0ggKGUs IFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBibG9jayAqYjsKLSsgICAg ICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOwotKyAgICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsK LSsgICAgICBpbnQgYXJnbm8gPSAwOwotKwotKyAgICAgIC8qIFRoZSBleGNlcHRpb24gYnJlYWtw b2ludCBpcyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3BvaW50IG9uCi0rCSB0aGUgdW53aW5kZXIn cyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBhczoKLSsJIAotKwkgdm9pZCBfVW53aW5kX0RlYnVnSG9v ayAodm9pZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKLSsJIAotKwkgVGhlIENGQSBhcmd1bWVudCBp bmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRyb2wgaXMKLSsJIGFib3V0IHRvIGJlIHRy YW5zZmVycmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGluYXRpb24gUEMuCi0rCSAKLSsJIFdlIGln bm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludCBhdCBIQU5ETEVSLgot KwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVudCBidXQgaXQgYXZvaWRzIGlzc3VlcyBp biBnZGIKLSsJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FSRiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtz IGV2ZW4gaW4gd2VpcmQKLSsJIGNhc2VzIHN1Y2ggYXMgdGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZy b20gaW5zaWRlIGEgc2lnbmFsCi0rCSBoYW5kbGVyLiAgKi8KLSsKLSsgICAgICBiID0gU1lNQk9M X0JMT0NLX1ZBTFVFIChmdW5jKTsKLSsgICAgICBBTExfQkxPQ0tfU1lNQk9MUyAoYiwgaXRlciwg c3ltKQotKwl7Ci0rCSAgaWYgKCFTWU1CT0xfSVNfQVJHVU1FTlQgKHN5bSkpCi0rCSAgICBjb250 aW51ZTsKLSsKLSsJICBpZiAoYXJnbm8gPT0gMCkKLSsJICAgICsrYXJnbm87Ci0rCSAgZWxzZQot KwkgICAgewotKwkgICAgICBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50IChlY3Mt PmV2ZW50X3RocmVhZCwKLSsJCQkJCQkgIGIsIGZyYW1lLCBzeW0pOwotKwkgICAgICBicmVhazsK LSsJICAgIH0KLSsJfQotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gc3RvcF9zdGVwcGlu ZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpCi0gewotZGlmZiAtLWdpdCBh L2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYwotaW5kZXggOTNhZGZjZC4uMzQ0MTJh NiAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuYwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1A QCAtMjU4Nyw2ICsyNTg3LDM5IEBAIGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzcyAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywgQ09SRV9BRERSICphZGRyX3ApCi0gICByZXR1cm4gbHAtPnN0 b3BwZWRfZGF0YV9hZGRyZXNzX3A7Ci0gfQotIAotKy8qIEluIGBzZXQgZm9sbG93LWZvcmstbW9k ZSBjaGlsZCcgd2l0aCBtdWx0aXRocmVhZGVkIHBhcmVudCB3ZSBuZWVkIHRvIGRldGFjaAotKyAg IHdhdGNocG9pbnRzIGZyb20gYWxsIHRoZSBMV1BzLiAgSW4gc3VjaCBjYXNlIElORkVSSU9SX1BU SUQgd2lsbCBiZSB0aGUKLSsgICBub24tdGhyZWFkZWQgbmV3IGNoaWxkIHdoaWxlIExXUF9MSVNU IHdpbGwgc3RpbGwgY29udGFpbiBhbGwgdGhlIHRocmVhZHMgb2YKLSsgICB0aGUgcGFyZW50IGJl aW5nIGRldGFjaGVkLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rbGludXhfbmF0X2RldGFjaF93YXRj aHBvaW50cyAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotKyAgaW50IGZvdW5k ID0gMCwgcmV0dmFsID0gMDsKLSsgIHB0aWRfdCBmaWx0ZXIgPSBwaWRfdG9fcHRpZCAocHRpZF9n ZXRfcGlkIChpbmZlcmlvcl9wdGlkKSk7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluID0g c2F2ZV9pbmZlcmlvcl9wdGlkICgpOwotKwotKyAgZm9yIChscCA9IGx3cF9saXN0OyBscDsgbHAg PSBscC0+bmV4dCkKLSsgICAgaWYgKHB0aWRfbWF0Y2ggKGxwLT5wdGlkLCBmaWx0ZXIpKQotKyAg ICAgIHsKLSsJaW5mZXJpb3JfcHRpZCA9IGxwLT5wdGlkOwotKwlyZXR2YWwgfD0gbGludXhfb3Bz LT50b19kZXRhY2hfd2F0Y2hwb2ludHMgKCk7Ci0rCWZvdW5kID0gMTsKLSsgICAgICB9Ci0rCi0r ICBkb19jbGVhbnVwcyAob2xkX2NoYWluKTsKLSsKLSsgIGlmICghZm91bmQpCi0rICAgIHsKLSsg ICAgICBnZGJfYXNzZXJ0ICghaXNfbHdwIChpbmZlcmlvcl9wdGlkKSk7Ci0rCi0rICAgICAgcmV0 dmFsIHw9IGxpbnV4X29wcy0+dG9fZGV0YWNoX3dhdGNocG9pbnRzICgpOwotKyAgICB9Ci0rCi0r ICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSAvKiBXYWl0IHVudGlsIExQIGlzIHN0b3BwZWQuICAq LwotIAotIHN0YXRpYyBpbnQKLUBAIC01NjA2LDYgKzU2MzksOCBAQCBsaW51eF9uYXRfYWRkX3Rh cmdldCAoc3RydWN0IHRhcmdldF9vcHMgKnQpCi0gICB0LT50b190aHJlYWRfYWRkcmVzc19zcGFj ZSA9IGxpbnV4X25hdF90aHJlYWRfYWRkcmVzc19zcGFjZTsKLSAgIHQtPnRvX3N0b3BwZWRfYnlf d2F0Y2hwb2ludCA9IGxpbnV4X25hdF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7Ci0gICB0LT50b19z dG9wcGVkX2RhdGFfYWRkcmVzcyA9IGxpbnV4X25hdF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKLSsg IGlmIChsaW51eF9vcHMtPnRvX2RldGFjaF93YXRjaHBvaW50cykKLSsgICAgdC0+dG9fZGV0YWNo X3dhdGNocG9pbnRzID0gbGludXhfbmF0X2RldGFjaF93YXRjaHBvaW50czsKLSAKLSAgIHQtPnRv X2Nhbl9hc3luY19wID0gbGludXhfbmF0X2Nhbl9hc3luY19wOwotICAgdC0+dG9faXNfYXN5bmNf cCA9IGxpbnV4X25hdF9pc19hc3luY19wOwotZGlmZiAtLWdpdCBhL2dkYi9saW51eC10ZGVwLmMg Yi9nZGIvbGludXgtdGRlcC5jCi1pbmRleCAwN2ZkNjdjLi4yNTI0MjUwIDEwMDY0NAotLS0tIGEv Z2RiL2xpbnV4LXRkZXAuYwotKysrIGIvZ2RiL2xpbnV4LXRkZXAuYwotQEAgLTIzLDYgKzIzLDgg QEAKLSAjaW5jbHVkZSAiYXV4di5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAi ZWxmL2NvbW1vbi5oIgotKyNpbmNsdWRlICJ2YWx1ZS5oIgotKyNpbmNsdWRlICJpbmZjYWxsLmgi Ci0gCi0gLyogVGhpcyBmdW5jdGlvbiBpcyBzdWl0YWJsZSBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0 IGRvbid0Ci0gICAgZXh0ZW5kL292ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaWdpbmZvIHN0cnVjdHVy ZS4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL21haW4uYyBiL2dkYi9tYWluLmMKLWluZGV4IGJmZDEy MTMuLjcyZmFhYmQgMTAwNjQ0Ci0tLS0gYS9nZGIvbWFpbi5jCi0rKysgYi9nZGIvbWFpbi5jCi1A QCAtMzksNiArMzksNyBAQAotIAotICNpbmNsdWRlICJpbnRlcnBzLmgiCi0gI2luY2x1ZGUgIm1h aW4uaCIKLSsjaW5jbHVkZSAicHl0aG9uL3B5dGhvbi5oIgotICNpbmNsdWRlICJzb3VyY2UuaCIK LSAjaW5jbHVkZSAiY2xpL2NsaS1jbWRzLmgiCi0gI2luY2x1ZGUgInB5dGhvbi9weXRob24uaCIK LUBAIC0yNTksNiArMjYwLDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgIGNoYXIg KmNkYXJnID0gTlVMTDsKLSAgIGNoYXIgKnR0eWFyZyA9IE5VTEw7Ci0gCi0rICBpbnQgcHl0aG9u X3NjcmlwdCA9IDA7Ci0rCi0gICAvKiBUaGVzZSBhcmUgc3RhdGljIHNvIHRoYXQgd2UgY2FuIHRh a2UgdGhlaXIgYWRkcmVzcyBpbiBhbiBpbml0aWFsaXplci4gICovCi0gICBzdGF0aWMgaW50IHBy aW50X2hlbHA7Ci0gICBzdGF0aWMgaW50IHByaW50X3ZlcnNpb247Ci1AQCAtNDQzLDEwICs0NDYs MTQgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKLSAgICAgICB7ImFyZ3MiLCBub19hcmd1 bWVudCwgJnNldF9hcmdzLCAxfSwKLSAgICAgICB7ImwiLCByZXF1aXJlZF9hcmd1bWVudCwgMCwg J2wnfSwKLSAgICAgICB7InJldHVybi1jaGlsZC1yZXN1bHQiLCBub19hcmd1bWVudCwgJnJldHVy bl9jaGlsZF9yZXN1bHQsIDF9LAotKyNpZiBIQVZFX1BZVEhPTgotKyAgICAgIHsicHl0aG9uIiwg bm9fYXJndW1lbnQsIDAsICdQJ30sCi0rICAgICAgeyJQIiwgbm9fYXJndW1lbnQsIDAsICdQJ30s Ci0rI2VuZGlmCi0gICAgICAgezAsIG5vX2FyZ3VtZW50LCAwLCAwfQotICAgICB9OwotIAotLSAg ICB3aGlsZSAoMSkKLSsgICAgd2hpbGUgKCFweXRob25fc2NyaXB0KQotICAgICAgIHsKLSAJaW50 IG9wdGlvbl9pbmRleDsKLSAKLUBAIC00NjQsNiArNDcxLDkgQEAgY2FwdHVyZWRfbWFpbiAodm9p ZCAqZGF0YSkKLSAJICBjYXNlIDA6Ci0gCSAgICAvKiBMb25nIG9wdGlvbiB0aGF0IGp1c3Qgc2V0 cyBhIGZsYWcuICAqLwotIAkgICAgYnJlYWs7Ci0rCSAgY2FzZSAnUCc6Ci0rCSAgICBweXRob25f c2NyaXB0ID0gMTsKLSsJICAgIGJyZWFrOwotIAkgIGNhc2UgT1BUX1NFOgotIAkgICAgc3ltYXJn ID0gb3B0YXJnOwotIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02NTAsNyArNjYwLDMxIEBA IGV4dGVybiBpbnQgZ2RidGtfdGVzdCAoY2hhciAqKTsKLSAKLSAgIC8qIE5vdyB0aGF0IGdkYl9p bml0IGhhcyBjcmVhdGVkIHRoZSBpbml0aWFsIGluZmVyaW9yLCB3ZSdyZSBpbiBwb3NpdGlvbgot ICAgICAgdG8gc2V0IGFyZ3MgZm9yIHRoYXQgaW5mZXJpb3IuICAqLwotLSAgaWYgKHNldF9hcmdz KQotKyAgaWYgKHB5dGhvbl9zY3JpcHQpCi0rICAgIHsKLSsgICAgICAvKiBUaGUgZmlyc3QgYXJn dW1lbnQgaXMgYSBweXRob24gc2NyaXB0IHRvIGV2YWx1YXRlLCBhbmQKLSsJIHN1YnNlcXVlbnQg YXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHNjcmlwdCBmb3IKLSsJIHByb2Nlc3NpbmcgdGhl cmUuICAqLwotKyAgICAgIGlmIChvcHRpbmQgPj0gYXJnYykKLSsJewotKwkgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGVyciwKLSsJCQkgICAgICBfKCIlczogUHl0aG9uIHNjcmlwdCBmaWxl IG5hbWUgcmVxdWlyZWRcbiIpLAotKwkJCSAgICAgIGFyZ3ZbMF0pOwotKwkgIGV4aXQgKDEpOwot Kwl9Ci0rCi0rICAgICAgLyogRklYTUU6IHNob3VsZCBoYW5kbGUgaW5mZXJpb3IgSS9PIGludGVs bGlnZW50bHkgaGVyZS4KLSsJIEUuZy4sIHNob3VsZCBiZSBwb3NzaWJsZSB0byBydW4gZ2RiIGlu IHBpcGVsaW5lIGFuZCBoYXZlCi0rCSBQeXRob24gKGFuZCBnZGIpIG91dHB1dCBnbyB0byBzdGRl cnIgb3IgZmlsZTsgYW5kIGlmIGEKLSsJIHByb21wdCBpcyBuZWVkZWQsIG9wZW4gdGhlIHR0eS4g ICovCi0rICAgICAgcXVpZXQgPSAxOwotKyAgICAgIC8qIEZJWE1FOiBzaG91bGQgcmVhZCAuZ2Ri aW5pdCBpZiwgYW5kIG9ubHkgaWYsIGEgcHJvbXB0IGlzCi0rCSByZXF1ZXN0ZWQgYnkgdGhlIHNj cmlwdC4gIFRob3VnaC4uLiBtYXliZSB0aGlzIGlzIG5vdAotKwkgaWRlYWw/ICAqLwotKyAgICAg IC8qIEZJWE1FOiBsaWtld2lzZSwgcmVhZGluZyBpbiBoaXN0b3J5LiAgKi8KLSsgICAgICBpbmhp Yml0X2dkYmluaXQgPSAxOwotKyAgICB9Ci0rICBlbHNlIGlmIChzZXRfYXJncykKLSAgICAgewot ICAgICAgIC8qIFRoZSByZW1haW5pbmcgb3B0aW9ucyBhcmUgdGhlIGNvbW1hbmQtbGluZSBvcHRp b25zIGZvciB0aGUKLSAJIGluZmVyaW9yLiAgVGhlIGZpcnN0IG9uZSBpcyB0aGUgc3ltL2V4ZWMg ZmlsZSwgYW5kIHRoZSByZXN0Ci1AQCAtODkwLDcgKzkyNCw4IEBAIENhbid0IGF0dGFjaCB0byBw cm9jZXNzIGFuZCBzcGVjaWZ5IGEgY29yZSBmaWxlIGF0IHRoZSBzYW1lIHRpbWUuIikpOwotICAg eGZyZWUgKGNtZGFyZyk7Ci0gCi0gICAvKiBSZWFkIGluIHRoZSBvbGQgaGlzdG9yeSBhZnRlciBh bGwgdGhlIGNvbW1hbmQgZmlsZXMgaGF2ZSBiZWVuIHJlYWQuICovCi0tICBpbml0X2hpc3Rvcnkg KCk7Ci0rICBpZiAoIXB5dGhvbl9zY3JpcHQpCi0rICAgIGluaXRfaGlzdG9yeSAoKTsKLSAKLSAg IGlmIChiYXRjaF9mbGFnKQotICAgICB7Ci1AQCAtOTAxLDEzICs5MzYsMjUgQEAgQ2FuJ3QgYXR0 YWNoIHRvIHByb2Nlc3MgYW5kIHNwZWNpZnkgYSBjb3JlIGZpbGUgYXQgdGhlIHNhbWUgdGltZS4i KSk7Ci0gICAvKiBTaG93IHRpbWUgYW5kL29yIHNwYWNlIHVzYWdlLiAgKi8KLSAgIGRvX2NsZWFu dXBzIChwcmVfc3RhdF9jaGFpbik7Ci0gCi0tICAvKiBOT1RFOiBjYWduZXkvMTk5OS0xMS0wNzog VGhlcmUgaXMgcHJvYmFibHkgbm8gcmVhc29uIGZvciBub3QKLS0gICAgIG1vdmluZyB0aGlzIGxv b3AgYW5kIHRoZSBjb2RlIGZvdW5kIGluIGNhcHR1cmVkX2NvbW1hbmRfbG9vcCgpCi0tICAgICBp bnRvIHRoZSBjb21tYW5kX2xvb3AoKSBwcm9wZXIuICBUaGUgbWFpbiB0aGluZyBob2xkaW5nIGJh Y2sgdGhhdAotLSAgICAgY2hhbmdlIC0gU0VUX1RPUF9MRVZFTCgpIC0gaGFzIGJlZW4gZWxpbWlu YXRlZC4gKi8KLS0gIHdoaWxlICgxKQotKyNpZiBIQVZFX1BZVEhPTgotKyAgaWYgKHB5dGhvbl9z Y3JpcHQpCi0gICAgIHsKLS0gICAgICBjYXRjaF9lcnJvcnMgKGNhcHR1cmVkX2NvbW1hbmRfbG9v cCwgMCwgIiIsIFJFVFVSTl9NQVNLX0FMTCk7Ci0rICAgICAgZXh0ZXJuIGludCBwYWdpbmF0aW9u X2VuYWJsZWQ7Ci0rICAgICAgcGFnaW5hdGlvbl9lbmFibGVkID0gMDsKLSsgICAgICBydW5fcHl0 aG9uX3NjcmlwdCAoYXJnYyAtIG9wdGluZCwgJmFyZ3Zbb3B0aW5kXSk7Ci0rICAgICAgcmV0dXJu IDE7Ci0rICAgIH0KLSsgIGVsc2UKLSsjZW5kaWYKLSsgICAgewotKyAgICAgIC8qIE5PVEU6IGNh Z25leS8xOTk5LTExLTA3OiBUaGVyZSBpcyBwcm9iYWJseSBubyByZWFzb24gZm9yIG5vdAotKwkg bW92aW5nIHRoaXMgbG9vcCBhbmQgdGhlIGNvZGUgZm91bmQgaW4gY2FwdHVyZWRfY29tbWFuZF9s b29wKCkKLSsJIGludG8gdGhlIGNvbW1hbmRfbG9vcCgpIHByb3Blci4gIFRoZSBtYWluIHRoaW5n IGhvbGRpbmcgYmFjayB0aGF0Ci0rCSBjaGFuZ2UgLSBTRVRfVE9QX0xFVkVMKCkgLSBoYXMgYmVl biBlbGltaW5hdGVkLiAqLwotKyAgICAgIHdoaWxlICgxKQotKwl7Ci0rCSAgY2F0Y2hfZXJyb3Jz IChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOwotKwl9Ci0g ICAgIH0KLSAgIC8qIE5vIGV4aXQgLS0gZXhpdCBpcyB0aHJvdWdoIHF1aXRfY29tbWFuZC4gICov Ci0gfQotQEAgLTkzOSw3ICs5ODYsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxl ICpzdHJlYW0pCi0gICBmcHV0c191bmZpbHRlcmVkIChfKCJcCi0gVGhpcyBpcyB0aGUgR05VIGRl YnVnZ2VyLiAgVXNhZ2U6XG5cblwKLSAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxl IFtjb3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCi0tICAgIGdkYiBbb3B0aW9uc10gLS1hcmdz IGV4ZWN1dGFibGUtZmlsZSBbaW5mZXJpb3ItYXJndW1lbnRzIC4uLl1cblxuXAotKyAgICBnZGIg W29wdGlvbnNdIC0tYXJncyBleGVjdXRhYmxlLWZpbGUgW2luZmVyaW9yLWFyZ3VtZW50cyAuLi5d XG4iKSwgc3RyZWFtKTsKLSsjaWYgSEFWRV9QWVRIT04KLSsgIGZwdXRzX3VuZmlsdGVyZWQgKF8o IlwKLSsgICAgZ2RiIFtvcHRpb25zXSBbLS1weXRob258LVBdIHNjcmlwdC1maWxlIFtzY3JpcHQt YXJndW1lbnRzIC4uLl1cbiIpLCBzdHJlYW0pOwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJl ZCAoXygiXG5cCi0gT3B0aW9uczpcblxuXAotICIpLCBzdHJlYW0pOwotICAgZnB1dHNfdW5maWx0 ZXJlZCAoXygiXAotQEAgLTk3Nyw3ICsxMDI5LDEzIEBAIE9wdGlvbnM6XG5cblwKLSAgIC0tbncJ CSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCi0gICAtLW54ICAgICAgICAg ICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7Ci0gICBmcHV0c191bmZpbHRlcmVkIChnZGJp bml0LCBzdHJlYW0pOwotLSAgZnB1dHNfdW5maWx0ZXJlZCAoXygiIGZpbGUuXG5cCi0rICBmcHV0 c191bmZpbHRlcmVkIChfKCIgZmlsZS5cbiIpLCBzdHJlYW0pOwotKyNpZiBIQVZFX1BZVEhPTgot KyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotKyAgLS1weXRob24sIC1QICAgICAgIEZvbGxvd2lu ZyBhcmd1bWVudCBpcyBQeXRob24gc2NyaXB0IGZpbGU7IHJlbWFpbmluZ1xuXAotKyAgICAgICAg ICAgICAgICAgICAgIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHNjcmlwdC5cbiIpLCBzdHJlYW0p OwotKyNlbmRpZgotKyAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotICAgLS1xdWlldCAgICAgICAg ICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAotICAgLS1yZWFk bm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vzcy5cblwK LSAiKSwgc3RyZWFtKTsKLWRpZmYgLS1naXQgYS9nZGIvbWFpbnQuYyBiL2dkYi9tYWludC5jCi1p bmRleCAyOGZkNjEwLi40ZTIxNDc2IDEwMDY0NAotLS0tIGEvZ2RiL21haW50LmMKLSsrKyBiL2dk Yi9tYWludC5jCi1AQCAtOTA5LDQgKzkwOSwxMiBAQCBXaGVuIGVuYWJsZWQgR0RCIGlzIHByb2Zp bGVkLiIpLAotIAkJCSAgIHNob3dfbWFpbnRlbmFuY2VfcHJvZmlsZV9wLAotIAkJCSAgICZtYWlu dGVuYW5jZV9zZXRfY21kbGlzdCwKLSAJCQkgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsK LSsgIGFkZF9zZXRzaG93X2ZpbGVuYW1lX2NtZCAoImdkYl9kYXRhZGlyIiwgY2xhc3NfbWFpbnRl bmFuY2UsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgJmdkYl9kYXRhZGlyLCBfKCJTZXQg R0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlNo b3cgR0RCJ3MgZGF0YWRpciBwYXRoLiIpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF8o IlwKLStXaGVuIHNldCwgR0RCIHVzZXMgdGhlIHNwZWNpZmllZCBwYXRoIHRvIHNlYXJjaCBmb3Ig ZGF0YSBmaWxlcy4iKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICZtYWludGVuYW5jZV9zZXRfY21kbGlzdCwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAmbWFpbnRlbmFuY2Vfc2hvd19jbWRsaXN0KTsKLSB9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL21pL21pLWNtZC12YXIuYyBiL2dkYi9taS9taS1jbWQtdmFyLmMK LWluZGV4IDMxMGFkZTkuLmQ4NzEwYTEgMTAwNjQ0Ci0tLS0gYS9nZGIvbWkvbWktY21kLXZhci5j Ci0rKysgYi9nZGIvbWkvbWktY21kLXZhci5jCi1AQCAtNzAyLDcgKzcwMiw2IEBAIG1pX2NtZF92 YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFyICoqYXJndiwgaW50IGFyZ2MpCi0gICAgIH0K LSAgIGVsc2UKLSAgICAgewotLSAgICAgIC8qIEdldCB2YXJvYmogaGFuZGxlLCBpZiBhIHZhbGlk IHZhciBvYmogbmFtZSB3YXMgc3BlY2lmaWVkICovCi0gICAgICAgc3RydWN0IHZhcm9iaiAqdmFy ID0gdmFyb2JqX2dldF9oYW5kbGUgKG5hbWUpOwotIAotICAgICAgIHZhcm9ial91cGRhdGVfb25l ICh2YXIsIHByaW50X3ZhbHVlcywgMSAvKiBleHBsaWNpdCAqLyk7Ci1kaWZmIC0tZ2l0IGEvZ2Ri L21pbnN5bXMuYyBiL2dkYi9taW5zeW1zLmMKLWluZGV4IGNiNDU0NWMuLjkyZDQwMjcgMTAwNjQ0 Ci0tLS0gYS9nZGIvbWluc3ltcy5jCi0rKysgYi9nZGIvbWluc3ltcy5jCi1AQCAtMzM3LDggKzMz Nyw5IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF90ZXh0IChjb25zdCBjaGFyICpuYW1lLCBzdHJ1 Y3Qgb2JqZmlsZSAqb2JqZikKLSAJICAgICAgIG1zeW1ib2wgPSBtc3ltYm9sLT5oYXNoX25leHQp Ci0gCSAgICB7Ci0gCSAgICAgIGlmIChzdHJjbXAgKFNZTUJPTF9MSU5LQUdFX05BTUUgKG1zeW1i b2wpLCBuYW1lKSA9PSAwICYmCi0tCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90 ZXh0IHx8Ci0tCQkgICBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF9maWxlX3RleHQpKQot KwkJICAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwkJICAgfHwgTVNZTUJP TF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKLSsJCSAgIHx8IE1TWU1CT0xf VFlQRSAobXN5bWJvbCkgPT0gbXN0X2ZpbGVfdGV4dCkpCi0gCQl7Ci0gCQkgIHN3aXRjaCAoTVNZ TUJPTF9UWVBFIChtc3ltYm9sKSkKLSAJCSAgICB7Ci1AQCAtNzAwLDYgKzcwMSwxNiBAQCBsb29r dXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUiBwYykKLSAgIHJldHVybiBsb29rdXBf bWluaW1hbF9zeW1ib2xfYnlfcGNfc2VjdGlvbiAocGMsIE5VTEwpOwotIH0KLSAKLSsvKiBSZXR1 cm4gbm9uLXplcm8gaWZmIFBDIGlzIGluIGZ1bmN0aW9uIGltcGxlbWVudGluZyBnbnUtaWZ1bmMg c2VsZWN0aW9uLiAgKi8KLSsKLStpbnQKLStpbl9nbnVfaWZ1bmNfc3R1YiAoQ09SRV9BRERSIHBj KQotK3sKLSsgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCA9IGxvb2t1cF9taW5pbWFs X3N5bWJvbF9ieV9wYyAocGMpOwotKwotKyAgcmV0dXJuIG1zeW1ib2wgJiYgTVNZTUJPTF9UWVBF IChtc3ltYm9sKSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmM7Ci0rfQotKwotIC8qIEZpbmQgdGhlIG1p bmltYWwgc3ltYm9sIG5hbWVkIE5BTUUsIGFuZCByZXR1cm4gYm90aCB0aGUgbWluc3ltCi0gICAg c3RydWN0IGFuZCBpdHMgb2JqZmlsZS4gIFRoaXMgb25seSBjaGVja3MgdGhlIGxpbmthZ2UgbmFt ZS4gIFNldHMKLSAgICAqT0JKRklMRV9QIGFuZCByZXR1cm5zIHRoZSBtaW5pbWFsIHN5bWJvbCwg aWYgaXQgaXMgZm91bmQuICBJZiBpdAotQEAgLTc2OSw2ICs3ODAsNyBAQCBwcmltX3JlY29yZF9t aW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAqbmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCi0gICBz d2l0Y2ggKG1zX3R5cGUpCi0gICAgIHsKLSAgICAgY2FzZSBtc3RfdGV4dDoKLSsgICAgY2FzZSBt c3RfdGV4dF9nbnVfaWZ1bmM6Ci0gICAgIGNhc2UgbXN0X2ZpbGVfdGV4dDoKLSAgICAgY2FzZSBt c3Rfc29saWJfdHJhbXBvbGluZToKLSAgICAgICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2Jq ZmlsZSk7Ci1AQCAtMTIzNSw3ICsxMjQ3LDggQEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3Rhcmdl dCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLCBDT1JFX0FERFIgcGMpCi0gICAgIHsKLSAgICAg ICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1zeW1ib2wpCi0gICAgICAgewotLQlpZiAoTVNZTUJP TF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4dAotKwlpZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJv bCkgPT0gbXN0X3RleHQKLSsJICAgIHx8IE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3Rl eHRfZ251X2lmdW5jKQotIAkgICAgJiYgc3RyY21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3lt Ym9sKSwKLSAJCSAgICAgICBTWU1CT0xfTElOS0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKLSAJ ICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJFU1MgKG1zeW1ib2wpOwotZGlmZiAtLWdpdCBhL2dk Yi9wLWxhbmcuYyBiL2dkYi9wLWxhbmcuYwotaW5kZXggMDg3MzhhYy4uNjRkMmU5ZiAxMDA2NDQK LS0tLSBhL2dkYi9wLWxhbmcuYwotKysrIGIvZ2RiL3AtbGFuZy5jCi1AQCAtMjIyLDcgKzIyMiwx MSBAQCBwYXNjYWxfcHJpbnRzdHIgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIHN0cnVjdCB0eXBl ICp0eXBlLAotICAgdW5zaWduZWQgaW50IHRoaW5nc19wcmludGVkID0gMDsKLSAgIGludCBpbl9x dW90ZXMgPSAwOwotICAgaW50IG5lZWRfY29tbWEgPSAwOwotLSAgaW50IHdpZHRoID0gVFlQRV9M RU5HVEggKHR5cGUpOwotKyAgaW50IHdpZHRoOwotKwotKyAgLyogUHJlc2VydmUgVFlQRSdzIG9y aWdpbmFsIHR5cGUsIGp1c3Qgc2V0IGl0cyBMRU5HVEguICAqLwotKyAgY2hlY2tfdHlwZWRlZiAo dHlwZSk7Ci0rICB3aWR0aCA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAKLSAgIC8qIElmIHRoZSBz dHJpbmcgd2FzIG5vdCB0cnVuY2F0ZWQgZHVlIHRvIGBzZXQgcHJpbnQgZWxlbWVudHMnLCBhbmQK LSAgICAgIHRoZSBsYXN0IGJ5dGUgb2YgaXQgaXMgYSBudWxsLCB3ZSBkb24ndCBwcmludCB0aGF0 LCBpbiB0cmFkaXRpb25hbCBDCi1kaWZmIC0tZ2l0IGEvZ2RiL3AtdmFscHJpbnQuYyBiL2dkYi9w LXZhbHByaW50LmMKLWluZGV4IDRkMzliZWQuLmQwZGRlYmMgMTAwNjQ0Ci0tLS0gYS9nZGIvcC12 YWxwcmludC5jCi0rKysgYi9nZGIvcC12YWxwcmludC5jCi1AQCAtMzgsNiArMzgsNyBAQAotICNp bmNsdWRlICJwLWxhbmcuaCIKLSAjaW5jbHVkZSAiY3AtYWJpLmgiCi0gI2luY2x1ZGUgImNwLXN1 cHBvcnQuaCIKLSsjaW5jbHVkZSAiZHdhcmYybG9jLmgiCi0gDAotIAotIAotQEAgLTY4LDggKzY5 LDI3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0 ZSAqdmFsYWRkciwKLSAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7Ci0gICBMT05HRVNUIHZhbDsK LSAgIENPUkVfQUREUiBhZGRyOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87Ci0rICBzdHJ1 Y3QgdHlwZSAqc2F2ZWRfdHlwZSA9IHR5cGU7Ci0rICBDT1JFX0FERFIgc2F2ZWRfYWRkcmVzcyA9 IGFkZHJlc3M7Ci0rICAKLSsgIGJhY2tfdG8gPSBtYWtlX2NsZWFudXAgKG51bGxfY2xlYW51cCwg MCk7Ci0rICB0eXBlID0gb2JqZWN0X2FkZHJlc3NfZ2V0X2RhdGEgKHR5cGUsICZhZGRyZXNzKTsK LSsgIGlmICh0eXBlID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBmcHV0c19maWx0ZXJlZCAob2Jq ZWN0X2FkZHJlc3NfZGF0YV9ub3RfdmFsaWQgKHNhdmVkX3R5cGUpLCBzdHJlYW0pOwotKyAgICAg IGdkYl9mbHVzaCAoc3RyZWFtKTsKLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rICAg ICAgcmV0dXJuIDA7Ci0rICAgIH0KLSsgIGlmIChhZGRyZXNzICE9IHNhdmVkX2FkZHJlc3MpCi0r ICAgIHsKLSsgICAgICBzaXplX3QgbGVuZ3RoID0gVFlQRV9MRU5HVEggKHR5cGUpOwotIAotLSAg Q0hFQ0tfVFlQRURFRiAodHlwZSk7Ci0rICAgICAgdmFsYWRkciA9IHhtYWxsb2MgKGxlbmd0aCk7 Ci0rICAgICAgbWFrZV9jbGVhbnVwICh4ZnJlZSwgKGdkYl9ieXRlICopIHZhbGFkZHIpOwotKyAg ICAgIHJlYWRfbWVtb3J5IChhZGRyZXNzLCAoZ2RiX2J5dGUgKikgdmFsYWRkciwgbGVuZ3RoKTsK LSsgICAgfQotICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQotICAgICB7Ci0gICAgIGNhc2Ug VFlQRV9DT0RFX0FSUkFZOgotQEAgLTEyNSw4ICsxNDUsOSBAQCBwYXNjYWxfdmFsX3ByaW50IChz dHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCi0gCQl7Ci0gCQkgIGkg PSAwOwotIAkJfQotLQkgICAgICB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHR5cGUsIHZhbGFk ZHIgKyBlbWJlZGRlZF9vZmZzZXQsIGFkZHJlc3MsIHN0cmVhbSwKLS0JCQkJCXJlY3Vyc2UsIG9y aWdpbmFsX3ZhbHVlLCBvcHRpb25zLCBpKTsKLSsJICAgICAgdmFsX3ByaW50X2FycmF5X2VsZW1l bnRzIChzYXZlZF90eXBlLCB2YWxhZGRyICsgZW1iZWRkZWRfb2Zmc2V0LAotKwkJCQkJc2F2ZWRf YWRkcmVzcywgc3RyZWFtLCByZWN1cnNlLAotKwkJCQkJb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMs IGkpOwotIAkgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICJ9Iik7Ci0gCSAgICB9Ci0g CSAgYnJlYWs7Ci1AQCAtMTY0LDYgKzE4NSw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0 eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKLSAJICAvKiBUcnkgdG8gcHJpbnQg d2hhdCBmdW5jdGlvbiBpdCBwb2ludHMgdG8uICAqLwotIAkgIHByaW50X2FkZHJlc3NfZGVtYW5n bGUgKGdkYmFyY2gsIGFkZHIsIHN0cmVhbSwgZGVtYW5nbGUpOwotIAkgIC8qIFJldHVybiB2YWx1 ZSBpcyBpcnJlbGV2YW50IGV4Y2VwdCBmb3Igc3RyaW5nIHBvaW50ZXJzLiAgKi8KLSsJICBkb19j bGVhbnVwcyAoYmFja190byk7Ci0gCSAgcmV0dXJuICgwKTsKLSAJfQotIAotQEAgLTI1Miw2ICsy NzQsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5 dGUgKnZhbGFkZHIsCi0gICAgICAgLyogUmV0dXJuIG51bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50 ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJICdcMCcgaWYgd2UgcmVhY2hlZCB0aGUg ZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJlIGluY2x1ZGluZwotIAkgdGhlIHRlcm1p bmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsgICAgICBkb19jbGVhbnVwcyAoYmFja190 byk7Ci0gICAgICAgcmV0dXJuIGk7Ci0gCi0gICAgICAgYnJlYWs7Ci1AQCAtNTU0LDYgKzU3Nyw3 IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAq dmFsYWRkciwKLSAgICAgICBlcnJvciAoXygiSW52YWxpZCBwYXNjYWwgdHlwZSBjb2RlICVkIGlu IHN5bWJvbCB0YWJsZS4iKSwgVFlQRV9DT0RFICh0eXBlKSk7Ci0gICAgIH0KLSAgIGdkYl9mbHVz aCAoc3RyZWFtKTsKLSsgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSAgIHJldHVybiAoMCk7Ci0g fQotIAwKLWRpZmYgLS1naXQgYS9nZGIvcGFyc2UuYyBiL2dkYi9wYXJzZS5jCi1pbmRleCBjODg1 YzZhLi5jYmY5YzY1IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlLmMKLSsrKyBiL2dkYi9wYXJzZS5j Ci1AQCAtNDg3LDkgKzQ4NywyMSBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxf c3ltYm9sICptc3ltYm9sKQotICAgcGMgPSBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9h ZGRyIChnZGJhcmNoLCBhZGRyLCAmY3VycmVudF90YXJnZXQpOwotICAgaWYgKHBjICE9IGFkZHIp Ci0gICAgIHsKLSsgICAgICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmlmdW5jX21zeW0gPSBsb29r dXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKLSsKLSAgICAgICAvKiBJbiB0aGlzIGNhc2Us IGFzc3VtZSB3ZSBoYXZlIGEgY29kZSBzeW1ib2wgaW5zdGVhZCBvZgotIAkgYSBkYXRhIHN5bWJv bC4gICovCi0tICAgICAgdHlwZSA9IG1zdF90ZXh0OwotKwotKyAgICAgIGlmIChpZnVuY19tc3lt ICE9IE5VTEwgJiYgTVNZTUJPTF9UWVBFIChpZnVuY19tc3ltKSA9PSBtc3RfdGV4dF9nbnVfaWZ1 bmMKLSsJICAmJiBTWU1CT0xfVkFMVUVfQUREUkVTUyAoaWZ1bmNfbXN5bSkgPT0gcGMpCi0rCXsK LSsJICAvKiBBIGZ1bmN0aW9uIGRlc2NyaXB0b3IgaGFzIGJlZW4gcmVzb2x2ZWQgYnV0IFBDIGlz IHN0aWxsIGluIHRoZQotKwkgICAgIGdudS1pZnVuYyByZXNvbHZlciBib2R5IChzdWNoIGFzIGJl Y2F1c2UgaW5mZXJpb3IgZG9lcyBub3QgcnVuIHRvCi0rCSAgICAgYmUgYWJsZSB0byBjYWxsIGl0 KS4gICovCi0rCSAgdHlwZSA9IG1zdF90ZXh0X2dudV9pZnVuYzsKLSsJfQotKyAgICAgIGVsc2UK LSsJdHlwZSA9IG1zdF90ZXh0OwotICAgICAgIHNlY3Rpb24gPSBOVUxMOwotICAgICAgIGFkZHIg PSBwYzsKLSAgICAgfQotQEAgLTUyMSw2ICs1MzMsMTEgQEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0 cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKLSAgICAgICB3cml0ZV9leHBfZWx0X3R5cGUg KG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdfdGV4dF9zeW1ib2wpOwotICAgICAgIGJy ZWFrOwotIAotKyAgICBjYXNlIG1zdF90ZXh0X2dudV9pZnVuYzoKLSsgICAgICB3cml0ZV9leHBf ZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSkKLSsJCQkJCSAgICAgICAtPm5vZGVidWdf dGV4dF9nbnVfaWZ1bmNfc3ltYm9sKTsKLSsgICAgICBicmVhazsKLSsKLSAgICAgY2FzZSBtc3Rf ZGF0YToKLSAgICAgY2FzZSBtc3RfZmlsZV9kYXRhOgotICAgICBjYXNlIG1zdF9ic3M6Ci1AQCAt NTI4LDYgKzU0NSwxMCBAQCB3cml0ZV9leHBfbXN5bWJvbCAoc3RydWN0IG1pbmltYWxfc3ltYm9s ICptc3ltYm9sKQotICAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAob2JqZmlsZV90eXBlIChvYmpm aWxlKS0+bm9kZWJ1Z19kYXRhX3N5bWJvbCk7Ci0gICAgICAgYnJlYWs7Ci0gCi0rICAgIGNhc2Ug bXN0X3Nsb3RfZ290X3BsdDoKLSsgICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlw ZSAob2JqZmlsZSktPm5vZGVidWdfZ290X3BsdF9zeW1ib2wpOwotKyAgICAgIGJyZWFrOworKyAg LyogYHN0cnVjdCBjcGx1c19zdHJ1Y3RfdHlwZScgaGFuZGxpbmcgaXMgdW5zdXBwb3J0ZWQgYnkg dGhpcyBmdW5jdGlvbi4gICovCisrICBnZGJfYXNzZXJ0ICgoVFlQRV9DT0RFICh0eXBlKSAhPSBU WVBFX0NPREVfU1RSVUNUCisrCSAgICAgICAmJiBUWVBFX0NPREUgKHR5cGUpICE9IFRZUEVfQ09E RV9VTklPTikKKysJICAgICAgfHwgIUhBVkVfQ1BMVVNfU1RSVUNUICh0eXBlKSk7CiArCi0gICAg IGRlZmF1bHQ6Ci0gICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZp bGUpLT5ub2RlYnVnX3Vua25vd25fc3ltYm9sKTsKLSAgICAgICBicmVhazsKLUBAIC0xNDEyLDYg KzE0MzMsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQot IAotIGludAotIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhw LCBpbnQgcG9zLAotKwkJCSBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9p ZCAqZGF0YSksCi0gCQkJIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAotIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCi0gCQkJIHZvaWQgKmRhdGEpCi1AQCAtMTQ1 Myw3ICsxNDc1LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCi0gCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiAr IGFyZ10udHlwZTsKLSAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxF ICh0eXBlKTsKLSAKLS0JICAgIGlmIChvYmpmaWxlICYmICgqb2JqZmlsZV9mdW5jKSAob2JqZmls ZSwgZGF0YSkpCi0rCSAgICBpZiAob2JqZmlsZSAmJiBvYmpmaWxlX2Z1bmMgJiYgKCpvYmpmaWxl X2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSAJICAgICAgcmV0dXJuIDE7Ci0gCSAgfQotICAgICAg IH0KLUBAIC0xNDcxLDcgKzE0OTMsOCBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKLSAKLSAJLyogQ2hlY2sgb2JqZmlsZSB3aGVyZSB0 aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KLSAJICAgU1lNQk9MX09CSl9TRUNUSU9OIChz eW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KLS0JaWYgKCgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZ TVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCi0rCWlmIChvYmpmaWxlX2Z1bmMKLSsJICAg ICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0 YSkpCi0gCSAgcmV0dXJuIDE7Ci0gCi0gCS8qIENoZWNrIG9iamZpbGUgd2hlcmUgaXMgcGxhY2Vk IHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICovCi1AQCAtMTQ4NCwyNCArMTUwNywy NyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50 IHBvcywKLSAKLSAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9yIFRZUEUgYW5kIE9CSkZJTEUgaWYg dGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCi0gCi0tICBpZiAodHlwZSAmJiBUWVBFX09C SkZJTEUgKHR5cGUpCi0rICBpZiAodHlwZSAmJiB0eXBlX2Z1bmMgJiYgKCp0eXBlX2Z1bmMpICh0 eXBlLCBkYXRhKSkKLSsgICAgcmV0dXJuIDE7Ci0rICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUg KHR5cGUpICYmIG9iamZpbGVfZnVuYwotICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9P QkpGSUxFICh0eXBlKSwgZGF0YSkpCi0gICAgIHJldHVybiAxOwotLSAgaWYgKG9iamZpbGUgJiYg KCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKLSsgIGlmIChvYmpmaWxlICYmIG9iamZp bGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUsIGRhdGEpKQotICAgICByZXR1cm4g MTsKLSAKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBDYWxsIE9CSkZJTEVfRlVOQyBmb3IgYW55 IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcgcmVmZXJlbmNlZCBieSBFWFAuCi0tICAgVGhl IGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVMTCBPQkpGSUxFLiAgRnVuY3Rpb25z IGdldCBwYXNzZWQgYW4KLS0gICBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRl ci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMKLS0gICBub24temVybyB2YWx1ZSB0 aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVlIGlzIGltbWVkaWF0ZWx5IHJldHVybmVkIHRv Ci0tICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvIGlzIHJldHVybmVkIGFmdGVyIGl0ZXJh dGluZyB0aHJvdWdoIHdob2xlIEVYUC4KLS0gICAqLwotKy8qIENhbGwgVFlQRV9GVU5DIGFuZCBP QkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpGSUxFIGZvdW5kIGJlaW5nCi0rICAgcmVm ZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25zIGFyZSBuZXZlciBjYWxsZWQgd2l0aCBOVUxM IFRZUEUgb3IgTlVMTAotKyAgIE9CSkZJTEUuICBGdW5jdGlvbnMgZ2V0IHBhc3NlZCBhbiBhcmJp dHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4KLSsgICBJZiBhbnkgb2YgdGhlIGZ1 bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVlIHRoZW4gKGFueSBvdGhlcikgbm9uLXplcm8K LSsgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgT3RoZXJ3 aXNlIHplcm8gaXMgcmV0dXJuZWQKLSsgICBhZnRlciBpdGVyYXRpbmcgdGhyb3VnaCB3aG9sZSBF WFAuICAqLwotIAotIHN0YXRpYyBpbnQKLSBleHBfaXRlcmF0ZSAoc3RydWN0IGV4cHJlc3Npb24g KmV4cCwKLSsJICAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAq ZGF0YSksCi0gCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZp bGUsIHZvaWQgKmRhdGEpLAotIAkgICAgIHZvaWQgKmRhdGEpCi0gewotQEAgLTE1MTYsNyArMTU0 Miw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAotIAotICAgICAgIHBv cyA9IGVuZHBvcyAtIG9wbGVuOwotICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4 cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCi0tCQkJCQkJCSAgIG9iamZpbGVfZnVu YywgZGF0YSkpCi0rCQkJCQkJCSAgIHR5cGVfZnVuYywKLSsJCQkJCQkJICAgb2JqZmlsZV9mdW5j LAotKwkJCQkJCQkgICBkYXRhKSkKLSAJcmV0dXJuIDE7Ci0gCi0gICAgICAgZW5kcG9zID0gcG9z OwotQEAgLTE1NDcsNyArMTU3NSwyNiBAQCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0gICBnZGJfYXNzZXJ0IChv YmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2tsaW5rID09IE5VTEwpOwotIAotLSAg cmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIGV4cF91c2VzX29iamZpbGVfaXRlciwgb2JqZmlsZSk7 Ci0rICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwgZXhwX3VzZXNfb2JqZmlsZV9pdGVy LCBvYmpmaWxlKTsKLSt9CisrICBpZiAoISgqaXRlcikgKHR5cGUsIGRhdGEpKQorKyAgICByZXR1 cm47CiArCi0rLyogSGVscGVyIGZvciBleHBfdHlwZXNfbWFya191c2VkLiAgKi8KKysgIC8qIEl0 ZXJhdGUgYWxsIHRoZSB0eXBlIGluc3RhbmNlcyBvZiB0aGlzIG1haW5fdHlwZS4gICovCisrICB0 eXBlX2l0ZXIgPSB0eXBlOworKyAgZG8KKysgICAgeworKyAgICAgIGdkYl9hc3NlcnQgKFRZUEVf TUFJTl9UWVBFICh0eXBlX2l0ZXIpID09IFRZUEVfTUFJTl9UWVBFICh0eXBlKSk7CiArCi0rc3Rh dGljIGludAotK2V4cF90eXBlc19tYXJrX3VzZWRfaXRlciAoc3RydWN0IHR5cGUgKnR5cGUsIHZv aWQgKnVudXNlZCkKLSt7Ci0rICB0eXBlX21hcmtfdXNlZCAodHlwZSk7CisrICAgICAgbWFpbl90 eXBlX2NyYXdsIChUWVBFX1BPSU5URVJfVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOworKyAgICAg IG1haW5fdHlwZV9jcmF3bCAoVFlQRV9SRUZFUkVOQ0VfVFlQRSAodHlwZSksIGl0ZXIsIGRhdGEp OwogKwotKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCi0rICByZXR1cm4gMDsKKysg ICAgICB0eXBlX2l0ZXIgPSBUWVBFX0NIQUlOICh0eXBlX2l0ZXIpOworKyAgICB9CisrICB3aGls ZSAodHlwZV9pdGVyICE9IHR5cGUpOworKworKyAgZm9yIChpID0gMDsgaSA8IFRZUEVfTkZJRUxE UyAodHlwZSk7IGkrKykKKysgICAgbWFpbl90eXBlX2NyYXdsIChUWVBFX0ZJRUxEX1RZUEUgKHR5 cGUsIGkpLCBpdGVyLCBkYXRhKTsKKysKKysgIG1haW5fdHlwZV9jcmF3bCAoVFlQRV9UQVJHRVRf VFlQRSAodHlwZSksIGl0ZXIsIGRhdGEpOworKyAgbWFpbl90eXBlX2NyYXdsIChUWVBFX1ZQVFJf QkFTRVRZUEUgKHR5cGUpLCBpdGVyLCBkYXRhKTsKICt9CiArCi0rLyogQ2FsbCB0eXBlX21hcmtf dXNlZCBmb3IgYW55IHR5cGUgY29udGFpbmVkIGluIEVYUC4gICovCisrLyogQSBoZWxwZXIgZm9y IGRlbGV0ZV90eXBlIHdoaWNoIGRlbGV0ZXMgYSBtYWluX3R5cGUgYW5kIHRoZSB0aGluZ3MgdG8g d2hpY2gKKysgICBpdCByZWZlcnMuICBUWVBFIGlzIGEgdHlwZSB3aG9zZSBtYWluX3R5cGUgd2Ug d2lzaCB0byBkZXN0cm95LiAgKi8KICsKLSt2b2lkCi0rZXhwX3R5cGVzX21hcmtfdXNlZCAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cCkKKytzdGF0aWMgdm9pZAorK2RlbGV0ZV9tYWluX3R5cGUgKHN0 cnVjdCB0eXBlICp0eXBlKQogK3sKLSsgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJr X3VzZWRfaXRlciwgTlVMTCwgTlVMTCk7Ci0gfQotIAotIHZvaWQKLWRpZmYgLS1naXQgYS9nZGIv cGFyc2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCi1pbmRleCBiYjc5YWUxLi5mYmJkNjAw IDEwMDY0NAotLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKLSsrKyBiL2dkYi9wYXJzZXItZGVmcy5o Ci1AQCAtMTk0LDYgKzE5NCw4IEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFy ZCAoY29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwKLSAJCQkJICAgICAgaW50 ICopOwotIAotIGV4dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHBy ZXNzaW9uICpleHAsIGludCBwb3MsCi0rCQkJCSAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3Qg dHlwZSAqdHlwZSwKLSsJCQkJCQkgICAgICB2b2lkICpkYXRhKSwKLSAJCQkJICAgIGludCAoKm9i amZpbGVfZnVuYykKLSAJCQkJICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpk YXRhKSwKLSAJCQkJICAgIHZvaWQgKmRhdGEpOwotQEAgLTI4NSw2ICsyODcsNyBAQCBzdHJ1Y3Qg ZXhwX2Rlc2NyaXB0b3IKLSAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVy bmVkIHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybwotICAgICAgICBzaG91bGQgYmUgcmV0 dXJuZWQuICAqLwotICAgICBpbnQgKCpvcGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9u ICpleHAsIGludCBwb3MsCi0rCQkJICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5 cGUsIHZvaWQgKmRhdGEpLAotIAkJCSAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpm aWxlICpvYmpmaWxlLAotIAkJCQkJCXZvaWQgKmRhdGEpLAotIAkJCSAgIHZvaWQgKmRhdGEpOwot QEAgLTMyMyw0ICszMjYsOCBAQCBleHRlcm4gdm9pZCBwYXJzZXJfZnByaW50ZiAoRklMRSAqLCBj b25zdCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5URiAoMiwgMyk7Ci0gCi0gZXh0ZXJuIGlu dCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSk7Ci0gCi0rZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhw cmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CisrICBpbnQgaTsKICsKLStl eHRlcm4gdm9pZCBleHBfdHlwZXNfbWFya191c2VkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwKTsK KysgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsKKysgIGdkYl9hc3NlcnQg KFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CiArCi0gI2VuZGlmIC8qIFBBUlNFUl9ERUZT X0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvcHBjLWxpbnV4LW5hdC5jIGIvZ2RiL3BwYy1saW51eC1u YXQuYwotaW5kZXggMThkZGVlNy4uNjUyYjAyYSAxMDA2NDQKLS0tLSBhL2dkYi9wcGMtbGludXgt bmF0LmMKLSsrKyBiL2dkYi9wcGMtbGludXgtbmF0LmMKLUBAIC0yMDEwLDYgKzIwMTAsMjQgQEAg cHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50 IHJ3LAotICAgcmV0dXJuIHJldDsKLSB9Ci0gCi0rLyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hw b2ludHMuICBEbyBub3QgdXNlIHdyYXBwZXIKLSsgICBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9p bnQgYXMgaXQgd291bGQgbW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQotKyAgIChzYXZlZF9kYWJy X3ZhbHVlKS4gICovCisrICB4ZnJlZSAoVFlQRV9OQU1FICh0eXBlKSk7CisrICB4ZnJlZSAoVFlQ RV9UQUdfTkFNRSAodHlwZSkpOwogKwotK3N0YXRpYyBpbnQKLStwcGNfbGludXhfZGV0YWNoX3dh dGNocG9pbnRzICh2b2lkKQotK3sKLSsgIHBpZF90IHRpZDsKKysgIGZvciAoaSA9IDA7IGkgPCBU WVBFX05GSUVMRFMgKHR5cGUpOyArK2kpCisrICAgIHsKKysgICAgICB4ZnJlZSAoVFlQRV9GSUVM RF9OQU1FICh0eXBlLCBpKSk7CiArCi0rICB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOwot KyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQgPSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAg ICAgIGlmIChUWVBFX0ZJRUxEX0xPQ19LSU5EICh0eXBlLCBpKSA9PSBGSUVMRF9MT0NfS0lORF9Q SFlTTkFNRSkKKysJeGZyZWUgKFRZUEVfRklFTERfU1RBVElDX1BIWVNOQU1FICh0eXBlLCBpKSk7 CisrICAgIH0KKysgIHhmcmVlIChUWVBFX0ZJRUxEUyAodHlwZSkpOwogKwotKyAgaWYgKHB0cmFj ZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCBOVUxMLCBOVUxMKSA8IDApCi0rICAgIHJldHVy biAtMTsKLSsgIHJldHVybiAwOworKyAgZ2RiX2Fzc2VydCAoIUhBVkVfQ1BMVVNfU1RSVUNUICh0 eXBlKSk7CisrCisrICB4ZnJlZSAoVFlQRV9NQUlOX1RZUEUgKHR5cGUpKTsKICt9CiArCi0gc3Rh dGljIHZvaWQKLSBwcGNfbGludXhfbmV3X3RocmVhZCAocHRpZF90IHB0aWQpCi0gewotQEAgLTIz NDksNiArMjM2Nyw3IEBAIF9pbml0aWFsaXplX3BwY19saW51eF9uYXQgKHZvaWQpCi0gICB0LT50 b19yZWdpb25fb2tfZm9yX2h3X3dhdGNocG9pbnQgPSBwcGNfbGludXhfcmVnaW9uX29rX2Zvcl9o d193YXRjaHBvaW50OwotICAgdC0+dG9faW5zZXJ0X3dhdGNocG9pbnQgPSBwcGNfbGludXhfaW5z ZXJ0X3dhdGNocG9pbnQ7Ci0gICB0LT50b19yZW1vdmVfd2F0Y2hwb2ludCA9IHBwY19saW51eF9y ZW1vdmVfd2F0Y2hwb2ludDsKLSsgIHQtPnRvX2RldGFjaF93YXRjaHBvaW50cyA9IHBwY19saW51 eF9kZXRhY2hfd2F0Y2hwb2ludHM7Ci0gICB0LT50b19zdG9wcGVkX2J5X3dhdGNocG9pbnQgPSBw cGNfbGludXhfc3RvcHBlZF9ieV93YXRjaHBvaW50OwotICAgdC0+dG9fc3RvcHBlZF9kYXRhX2Fk ZHJlc3MgPSBwcGNfbGludXhfc3RvcHBlZF9kYXRhX2FkZHJlc3M7Ci0gICB0LT50b193YXRjaHBv aW50X2FkZHJfd2l0aGluX3JhbmdlID0gcHBjX2xpbnV4X3dhdGNocG9pbnRfYWRkcl93aXRoaW5f cmFuZ2U7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3ByaW50Y21kLmMgYi9nZGIvcHJpbnRjbWQuYwotaW5k ZXggNWZmYTA5OS4uNThkOWM3OSAxMDA2NDQKLS0tLSBhL2dkYi9wcmludGNtZC5jCi0rKysgYi9n ZGIvcHJpbnRjbWQuYwotQEAgLTk3MSw2ICs5NzEsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChjaGFy ICpleHAsIGludCBpbnNwZWN0LCBpbnQgdm9pZHByaW50KQotICAgZWxzZQotICAgICB2YWwgPSBh Y2Nlc3NfdmFsdWVfaGlzdG9yeSAoMCk7Ci0gCi0rICAvKiBEbyBub3QgdHJ5IHRvIE9CSkVDVF9B RERSRVNTX1NFVCBoZXJlIGFueXRoaW5nLiAgV2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlCi0rICAg ICBzb3VyY2UgdmFyaWFibGUgYmFzZSBhZGRyZXNzZXMgYXMgZm91bmQgYnkgUkVBRF9WQVJfVkFM VUUuICBUaGUgdmFsdWUgaGVyZQotKyAgICAgY2FuIGJlIGFscmVhZHkgYSBjYWxjdWxhdGVkIGV4 cHJlc3Npb24gYWRkcmVzcyBpbmFwcHJvcHJpYXRlIGZvcgotKyAgICAgRFdfT1BfcHVzaF9vYmpl Y3RfYWRkcmVzcy4gICovCisrLyogRGVsZXRlIGFsbCB0aGUgaW5zdGFuY2VzIG9uIFRZUEVfQ0hB SU4gb2YgVFlQRSwgaW5jbHVkaW5nIHRoZWlyIHJlZmVyZW5jZWQKKysgICBtYWluX3R5cGUuICBU WVBFIG11c3QgYmUgYSByZWNsYWltYWJsZSB0eXBlIC0gbmVpdGhlciBwZXJtYW5lbnQgbm9yIG9i amZpbGUKKysgICBhc3NvY2lhdGVkLiAgKi8KICsKLSAgIGlmICh2b2lkcHJpbnQgfHwgKHZhbCAm JiB2YWx1ZV90eXBlICh2YWwpICYmCi0gCQkgICAgVFlQRV9DT0RFICh2YWx1ZV90eXBlICh2YWwp KSAhPSBUWVBFX0NPREVfVk9JRCkpCi0gICAgIHsKLUBAIC0xNDcxLDYgKzE0NzYsMjIgQEAgeF9j b21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKLSAJc2V0X2ludGVybmFsdmFyIChsb29r dXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwotICAgICB9Ci0gfQor K3N0YXRpYyB2b2lkCisrZGVsZXRlX3R5cGVfY2hhaW4gKHN0cnVjdCB0eXBlICp0eXBlKQorK3sK KysgIHN0cnVjdCB0eXBlICp0eXBlX2l0ZXIsICp0eXBlX2l0ZXJfdG9fZnJlZTsKICsKLSsvKiBD YWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RC IHNvdXJjZSBmaWxlLiAgKi8KKysgIGdkYl9hc3NlcnQgKFRZUEVfRElTQ0FSREFCTEUgKHR5cGUp KTsKKysgIGdkYl9hc3NlcnQgKFRZUEVfT0JKRklMRSAodHlwZSkgPT0gTlVMTCk7CiArCi0rc3Rh dGljIHZvaWQKLStwcmludF90eXBlc19tYXJrX3VzZWQgKHZvaWQpCisrICBkZWxldGVfbWFpbl90 eXBlICh0eXBlKTsKKysKKysgIHR5cGVfaXRlciA9IHR5cGU7CisrICBkbworKyAgICB7CisrICAg ICAgdHlwZV9pdGVyX3RvX2ZyZWUgPSB0eXBlX2l0ZXI7CisrICAgICAgdHlwZV9pdGVyID0gVFlQ RV9DSEFJTiAodHlwZV9pdGVyKTsKKysgICAgICB4ZnJlZSAodHlwZV9pdGVyX3RvX2ZyZWUpOwor KyAgICB9CisrICB3aGlsZSAodHlwZV9pdGVyICE9IHR5cGUpOworK30KKysKKysvKiBIYXNoIGZ1 bmN0aW9uIGZvciB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLiAgKi8KKysKKytzdGF0aWMgaGFzaHZh bF90CisrdHlwZV9kaXNjYXJkYWJsZV9oYXNoIChjb25zdCB2b2lkICpwKQogK3sKLSsgIHN0cnVj dCBkaXNwbGF5ICpkOworKyAgY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUgPSBwOwogKwotKyAgaWYg KGxhc3RfZXhhbWluZV92YWx1ZSkKLSsgICAgdHlwZV9tYXJrX3VzZWQgKHZhbHVlX3R5cGUgKGxh c3RfZXhhbWluZV92YWx1ZSkpOworKyAgcmV0dXJuIGh0YWJfaGFzaF9wb2ludGVyIChUWVBFX01B SU5fVFlQRSAodHlwZSkpOworK30KICsKLSsgIGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQg PSBkLT5uZXh0KQotKyAgICBpZiAoZC0+ZXhwKQotKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQg KGQtPmV4cCk7CisrLyogRXF1YWxpdHkgZnVuY3Rpb24gZm9yIHR5cGVfZGlzY2FyZGFibGVfdGFi bGUuICAqLworKworK3N0YXRpYyBpbnQKKyt0eXBlX2Rpc2NhcmRhYmxlX2VxdWFsIChjb25zdCB2 b2lkICphLCBjb25zdCB2b2lkICpiKQorK3sKKysgIGNvbnN0IHN0cnVjdCB0eXBlICpsZWZ0ID0g YTsKKysgIGNvbnN0IHN0cnVjdCB0eXBlICpyaWdodCA9IGI7CisrCisrICByZXR1cm4gVFlQRV9N QUlOX1RZUEUgKGxlZnQpID09IFRZUEVfTUFJTl9UWVBFIChyaWdodCk7CiArfQogKwotIAwKLSAK LSAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgotQEAgLTI4 NjksNCArMjg5MCw2IEBAIFNob3cgcHJpbnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5l IG51bWJlciB3aXRoIDxzeW1ib2w+LiIpLCBOVUxMLAotICAgYWRkX2NvbSAoImV2YWwiLCBub19j bGFzcywgZXZhbF9jb21tYW5kLCBfKCJcCi0gQ29udmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5n XCIsIGFyZzEsIGFyZzIsIGFyZzMsIC4uLiwgYXJnbiB0b1xuXAotIGEgY29tbWFuZCBsaW5lLCBh bmQgY2FsbCBpdC4iKSk7CisrLyogQSBoZWxwZXIgZm9yIHR5cGVfbWFya191c2VkLiAgKi8KICsK LSsgIG9ic2VydmVyX2F0dGFjaF9tYXJrX3VzZWQgKHByaW50X3R5cGVzX21hcmtfdXNlZCk7Ci0g fQotZGlmZiAtLWdpdCBhL2dkYi9wc3ltdGFiLmMgYi9nZGIvcHN5bXRhYi5jCi1pbmRleCA5N2E0 ZWVjLi5mY2UxOWM5IDEwMDY0NAotLS0tIGEvZ2RiL3BzeW10YWIuYwotKysrIGIvZ2RiL3BzeW10 YWIuYwotQEAgLTQyMSw2ICs0MjEsMTQgQEAgbG9va3VwX3N5bWJvbF9hdXhfcHN5bXRhYnMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotICAgcmV0dXJuIE5VTEw7Ci0gfQotIAotK3N0YXRpYyB2 b2lkCi0rcHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nX3BzeW10YWJzIChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZSwKLSsJCQkJICAgICAgaW50IGtpbmQsIGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJ CSAgICAgIGRvbWFpbl9lbnVtIGRvbWFpbikKKytzdGF0aWMgaW50CisrdHlwZV9tYXJrX3VzZWRf Y3Jhd2wgKHN0cnVjdCB0eXBlICp0eXBlLCB2b2lkICp1bnVzZWQpCiArewotKyAgLyogTm90aGlu Zy4gICovCisrICBpZiAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKQorKyAgICByZXR1cm4gMDsK KysKKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFX0FHRSAodHlwZSkgPT0gdHlwZV9kaXNjYXJkYWJs ZV9hZ2VfY3VycmVudCkKKysgICAgcmV0dXJuIDA7CisrCisrICBUWVBFX0RJU0NBUkRBQkxFX0FH RSAodHlwZSkgPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50OworKworKyAgLyogQ29udGlu dWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMTsKICt9CiArCi0gLyogTG9vaywgaW4g cGFydGlhbF9zeW10YWIgUFNULCBmb3Igc3ltYm9sIHdob3NlIG5hdHVyYWwgbmFtZSBpcyBOQU1F LgotICAgIENoZWNrIHRoZSBnbG9iYWwgc3ltYm9scyBpZiBHTE9CQUwsIHRoZSBzdGF0aWMgc3lt Ym9scyBpZiBub3QuICovCi0gCi1AQCAtOTQxLDcgKzk0OSw3IEBAIHBzeW10YWJfdG9fZnVsbG5h bWUgKHN0cnVjdCBwYXJ0aWFsX3N5bXRhYiAqcHMpCi0gICByZXR1cm4gTlVMTDsKLSB9Ci0gCi0t c3RhdGljIGNoYXIgKgotK3N0YXRpYyBjb25zdCBjaGFyICoKLSBmaW5kX3N5bWJvbF9maWxlX2Zy b21fcGFydGlhbCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNvbnN0IGNoYXIgKm5hbWUpCi0g ewotICAgc3RydWN0IHBhcnRpYWxfc3ltdGFiICpwc3Q7Ci1AQCAtMTE5OSw2ICsxMjA3LDcgQEAg Y29uc3Qgc3RydWN0IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgcHN5bV9mdW5jdGlvbnMgPQotICAg Zm9yZ2V0X2NhY2hlZF9zb3VyY2VfaW5mb19wYXJ0aWFsLAotICAgbG9va3VwX3N5bXRhYl92aWFf cGFydGlhbF9zeW10YWIsCi0gICBsb29rdXBfc3ltYm9sX2F1eF9wc3ltdGFicywKLSsgIHByZV9l eHBhbmRfc3ltdGFic19tYXRjaGluZ19wc3ltdGFicywKLSAgIHByaW50X3BzeW10YWJfc3RhdHNf Zm9yX29iamZpbGUsCi0gICBkdW1wX3BzeW10YWJzX2Zvcl9vYmpmaWxlLAotICAgcmVsb2NhdGVf cHN5bXRhYnMsCi1kaWZmIC0tZ2l0IGEvZ2RiL3BzeW10YWIuaCBiL2dkYi9wc3ltdGFiLmgKLWlu ZGV4IDliOGM4ZGYuLmRlOGI2N2UgMTAwNjQ0Ci0tLS0gYS9nZGIvcHN5bXRhYi5oCi0rKysgYi9n ZGIvcHN5bXRhYi5oCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQdWJsaWMgcGFydGlhbCBzeW1ib2wg dGFibGUgZGVmaW5pdGlvbnMuCi0gCi0tICAgQ29weXJpZ2h0IChDKSAyMDA5IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLSAgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIu Ci0gCi1AQCAtMjgsNCArMjgsNiBAQCB2b2lkIG1hcF9wYXJ0aWFsX3N5bWJvbF9maWxlbmFtZXMg KHZvaWQgKCopIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLSAKLSBleHRlcm4gY29uc3Qg c3RydWN0IHF1aWNrX3N5bWJvbF9mdW5jdGlvbnMgcHN5bV9mdW5jdGlvbnM7Ci0gCi0rZXh0ZXJu IGNvbnN0IHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zIGR3YXJmMl9nZGJfaW5kZXhfZnVu Y3Rpb25zOwotKwotICNlbmRpZiAvKiBQU1lNVEFCX0ggKi8KLWRpZmYgLS1naXQgYS9nZGIvcHl0 aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weSBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0 ZXJhdG9yLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNTY1NDU0Ngot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkK LUBAIC0wLDAgKzEsMzMgQEAKLSsjIEl0ZXJhdG9yIG92ZXIgZnJhbWVzLgorKy8qIE1hcmsgVFlQ RSBhbmQgaXRzIGNvbm5lY3RlZCB0eXBlcyBhcyB1c2VkIGluIHRoaXMgZnJlZV9hbGxfdHlwZXMg cGFzcy4gICovCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisrdm9pZAorK3R5cGVfbWFya191c2VkIChzdHJ1Y3QgdHlwZSAqdHlw ZSkKKyt7CisrICBpZiAodHlwZSA9PSBOVUxMKQorKyAgICByZXR1cm47CiArCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorKyAgaWYgKCFUWVBFX0RJU0NBUkRBQkxFICh0eXBlKSkKKysg ICAgcmV0dXJuOwogKwotK2NsYXNzIEZyYW1lSXRlcmF0b3I6Ci0rICAgICIiIkFuIGl0ZXJhdG9y IHRoYXQgaXRlcmF0ZXMgb3ZlciBmcmFtZXMuIiIiCisrICBtYWluX3R5cGVfY3Jhd2wgKHR5cGUs IHR5cGVfbWFya191c2VkX2NyYXdsLCBOVUxMKTsKKyt9CiArCi0rICAgIGRlZiBfX2luaXRfXyAo c2VsZiwgZnJhbWUpOgotKyAgICAgICAgIkluaXRpYWxpemUgYSBGcmFtZUl0ZXJhdG9yLiAgRlJB TUUgaXMgdGhlIHN0YXJ0aW5nIGZyYW1lLiIKLSsgICAgICAgIHNlbGYuZnJhbWUgPSBmcmFtZQor Ky8qIEEgdHJhdmVyc2UgY2FsbGJhY2sgZm9yIHR5cGVfZGlzY2FyZGFibGVfdGFibGUgd2hpY2gg cmVtb3ZlcyBhbnkKKysgICB0eXBlX2Rpc2NhcmRhYmxlIHdob3NlIHJlZmVyZW5jZSBjb3VudCBp cyBub3cgemVybyAodW51c2VkIGxpbmspLiAgKi8KICsKLSsgICAgZGVmIF9faXRlcl9fIChzZWxm KToKLSsgICAgICAgIHJldHVybiBzZWxmCisrc3RhdGljIGludAorK3R5cGVfZGlzY2FyZGFibGVf cmVtb3ZlICh2b2lkICoqc2xvdCwgdm9pZCAqdW51c2VkKQorK3sKKysgIHN0cnVjdCB0eXBlICp0 eXBlID0gKnNsb3Q7CiArCi0rICAgIGRlZiBuZXh0IChzZWxmKToKLSsgICAgICAgIHJlc3VsdCA9 IHNlbGYuZnJhbWUKLSsgICAgICAgIGlmIHJlc3VsdCBpcyBOb25lOgotKyAgICAgICAgICAgIHJh aXNlIFN0b3BJdGVyYXRpb24KLSsgICAgICAgIHNlbGYuZnJhbWUgPSByZXN1bHQub2xkZXIgKCkK LSsgICAgICAgIHJldHVybiByZXN1bHQKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv RnJhbWVXcmFwcGVyLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQotbmV3 IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmI3OTBhNTQKLS0tLSAvZGV2L251bGwK LSsrKyBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLUBAIC0wLDAgKzEsMTEy IEBACi0rIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVzLgorKyAgZ2RiX2Fzc2VydCAoVFlQRV9ESVND QVJEQUJMRSAodHlwZSkpOwogKwotKyMgQ29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgaWYgKFRZUEVfRElTQ0FSREFCTEVfQUdFICh0eXBl KSAhPSB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9jdXJyZW50KQorKyAgICB7CisrICAgICAgZGVsZXRl X3R5cGVfY2hhaW4gKHR5cGUpOwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysg ICAgICBodGFiX2NsZWFyX3Nsb3QgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHNsb3QpOworKyAg ICB9CiArCi0raW1wb3J0IGdkYgotKwotKyMgRklYTUU6IGFyZ3VhYmx5IGFsbCB0aGlzIHNob3Vs ZCBiZSBvbiBGcmFtZSBzb21laG93LgotK2NsYXNzIEZyYW1lV3JhcHBlcjoKLSsgICAgZGVmIF9f aW5pdF9fIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICBzZWxmLmZyYW1lID0gZnJhbWU7Ci0rCi0r ICAgIGRlZiB3cml0ZV9zeW1ib2wgKHNlbGYsIHN0cmVhbSwgc3ltLCBibG9jayk6Ci0rICAgICAg ICBpZiBsZW4gKHN5bS5saW5rYWdlX25hbWUpOgotKyAgICAgICAgICAgIG5zeW0sIGlzX2ZpZWxk X29mX3RoaXMgPSBnZGIubG9va3VwX3N5bWJvbCAoc3ltLmxpbmthZ2VfbmFtZSwgYmxvY2spCi0r ICAgICAgICAgICAgaWYgbnN5bS5hZGRyX2NsYXNzICE9IGdkYi5TWU1CT0xfTE9DX1JFR0lTVEVS OgotKyAgICAgICAgICAgICAgICBzeW0gPSBuc3ltCi0rCi0rICAgICAgICBzdHJlYW0ud3JpdGUg KHN5bS5wcmludF9uYW1lICsgIj0iKQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIHZhbCA9 IHNlbGYucmVhZF92YXIgKHN5bSkKLSsgICAgICAgICAgICBpZiB2YWwgIT0gTm9uZToKLSsgICAg ICAgICAgICAgICAgdmFsID0gc3RyICh2YWwpCi0rICAgICAgICAjIEZJWE1FOiB3b3VsZCBiZSBu aWNlIHRvIGhhdmUgYSBtb3JlIHByZWNpc2UgZXhjZXB0aW9uIGhlcmUuCi0rICAgICAgICBleGNl cHQgUnVudGltZUVycm9yLCB0ZXh0OgotKyAgICAgICAgICAgIHZhbCA9IHRleHQKLSsgICAgICAg IGlmIHZhbCA9PSBOb25lOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIj8/PyIpCi0rICAg ICAgICBlbHNlOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoc3RyICh2YWwpKQotKwotKyAg ICBkZWYgcHJpbnRfZnJhbWVfbG9jYWxzIChzZWxmLCBzdHJlYW0sIGZ1bmMpOgotKyAgICAgICAg aWYgbm90IGZ1bmM6Ci0rICAgICAgICAgICAgcmV0dXJuCi0rCi0rICAgICAgICBmaXJzdCA9IFRy dWUKLSsgICAgICAgIGJsb2NrID0gZnVuYy52YWx1ZQotKwotKyAgICAgICAgZm9yIHN5bSBpbiBi bG9jazoKLSsgICAgICAgICAgICBpZiBzeW0uaXNfYXJndW1lbnQ6Ci0rICAgICAgICAgICAgICAg IGNvbnRpbnVlOwotKwotKyAgICAgICAgICAgIHNlbGYud3JpdGVfc3ltYm9sIChzdHJlYW0sIHN5 bSwgYmxvY2spCi0rICAgICAgICAgICAgc3RyZWFtLndyaXRlICgnXG4nKQotKwotKyAgICBkZWYg cHJpbnRfZnJhbWVfYXJncyAoc2VsZiwgc3RyZWFtLCBmdW5jKToKLSsgICAgICAgIGlmIG5vdCBm dW5jOgotKyAgICAgICAgICAgIHJldHVybgotKwotKyAgICAgICAgZmlyc3QgPSBUcnVlCi0rICAg ICAgICBibG9jayA9IGZ1bmMudmFsdWUKLSsKLSsgICAgICAgIGZvciBzeW0gaW4gYmxvY2s6Ci0r ICAgICAgICAgICAgaWYgbm90IHN5bS5pc19hcmd1bWVudDoKLSsgICAgICAgICAgICAgICAgY29u dGludWU7Ci0rCi0rICAgICAgICAgICAgaWYgbm90IGZpcnN0OgotKyAgICAgICAgICAgICAgICBz dHJlYW0ud3JpdGUgKCIsICIpCi0rCi0rICAgICAgICAgICAgc2VsZi53cml0ZV9zeW1ib2wgKHN0 cmVhbSwgc3ltLCBibG9jaykKLSsgICAgICAgICAgICBmaXJzdCA9IEZhbHNlCi0rCi0rICAgICMg RklYTUU6IHRoaXMgc2hvdWxkIHByb2JhYmx5IGp1c3QgYmUgYSBtZXRob2Qgb24gZ2RiLkZyYW1l LgotKyAgICAjIEJ1dCB0aGVuIHdlIG5lZWQgc3RyZWFtIHdyYXBwZXJzLgotKyAgICBkZWYgZGVz Y3JpYmUgKHNlbGYsIHN0cmVhbSwgZnVsbCk6Ci0rICAgICAgICBpZiBzZWxmLnR5cGUgKCkgPT0g Z2RiLkRVTU1ZX0ZSQU1FOgotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiA8ZnVuY3Rpb24g Y2FsbGVkIGZyb20gZ2RiPlxuIikKLSsgICAgICAgIGVsaWYgc2VsZi50eXBlICgpID09IGdkYi5T SUdUUkFNUF9GUkFNRToKLSsgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgPHNpZ25hbCBoYW5k bGVyIGNhbGxlZD5cbiIpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHNhbCA9IHNlbGYu ZmluZF9zYWwgKCkKLSsgICAgICAgICAgICBwYyA9IHNlbGYucGMgKCkKLSsgICAgICAgICAgICBu YW1lID0gc2VsZi5uYW1lICgpCi0rICAgICAgICAgICAgaWYgbm90IG5hbWU6Ci0rICAgICAgICAg ICAgICAgIG5hbWUgPSAiPz8iCi0rICAgICAgICAgICAgaWYgcGMgIT0gc2FsLnBjIG9yIG5vdCBz YWwuc3ltdGFiOgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgMHglMDh4IGluIiAl IHBjKQotKyAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiAiICsgbmFtZSArICIgKCIpCi0rCi0r ICAgICAgICAgICAgZnVuYyA9IHNlbGYuZnVuY3Rpb24gKCkKLSsgICAgICAgICAgICBzZWxmLnBy aW50X2ZyYW1lX2FyZ3MgKHN0cmVhbSwgZnVuYykKLSsKLSsgICAgICAgICAgICBzdHJlYW0ud3Jp dGUgKCIpIikKLSsKLSsgICAgICAgICAgICBpZiBzYWwuc3ltdGFiIGFuZCBzYWwuc3ltdGFiLmZp bGVuYW1lOgotKyAgICAgICAgICAgICAgICBzdHJlYW0ud3JpdGUgKCIgYXQgIiArIHNhbC5zeW10 YWIuZmlsZW5hbWUpCi0rICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIjoiICsgc3RyIChz YWwubGluZSkpCi0rCi0rICAgICAgICAgICAgaWYgbm90IHNlbGYubmFtZSAoKSBvciAobm90IHNh bC5zeW10YWIgb3Igbm90IHNhbC5zeW10YWIuZmlsZW5hbWUpOgotKyAgICAgICAgICAgICAgICBs aWIgPSBnZGIuc29saWJfYWRkcmVzcyAocGMpCi0rICAgICAgICAgICAgICAgIGlmIGxpYjoKLSsg ICAgICAgICAgICAgICAgICAgIHN0cmVhbS53cml0ZSAoIiBmcm9tICIgKyBsaWIpCi0rCi0rICAg ICAgICAgICAgc3RyZWFtLndyaXRlICgiXG4iKQotKwotKyAgICAgICAgICAgIGlmIGZ1bGw6Ci0r ICAgICAgICAgICAgICAgIHNlbGYucHJpbnRfZnJhbWVfbG9jYWxzIChzdHJlYW0sIGZ1bmMpCi0r Ci0rICAgIGRlZiBfX2dldGF0dHJfXyAoc2VsZiwgbmFtZSk6Ci0rICAgICAgICByZXR1cm4gZ2V0 YXR0ciAoc2VsZi5mcmFtZSwgbmFtZSkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv X19pbml0X18ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLW5ldyBmaWxlIG1v ZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iMzc1YzY4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLUBAIC0wLDAgKzEsMTkgQEAKLSsjIFN0YXJ0 dXAgY29kZS4KKysgIHJldHVybiAxOworK30KICsKLSsjIENvcHlyaWdodCAoQykgMjAwOCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysvKiBGcmVlIGFsbCB0aGUgcmVjbGFpbWFibGUg dHlwZXMgdGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGFuZCB0aGF0IGhhdmUKKysgICBjdXJyZW50 bHkgemVybyByZWZlcmVuY2UgY291bnRlci4KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCisrICAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYWZ0ZXIgZWFjaCBjb21tYW5kLCBzdWNj ZXNzZnVsIG9yIG5vdC4gIFVzZSB0aGlzCisrICAgY2xlYW51cCBvbmx5IGluIHRoZSBHREIgaWRs ZSBzdGF0ZSBhcyBHREIgb25seSBtYXJrcyB0aG9zZSB0eXBlcyB1c2VkIGJ5CisrICAgZ2xvYmFs bHkgdHJhY2tlZCBvYmplY3RzICh3aXRoIG5vIGF1dG92YXJpYWJsZSByZWZlcmVuY2VzIHRyYWNr aW5nKS4gICovCiArCi0rIyBMb2FkIHRoZSByZXF1aXJlIGNvbW1hbmQgYnkgZGVmYXVsdC4KLStp bXBvcnQgZ2RiLmNvbW1hbmQucmVxdWlyZQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dk Yi9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvYmFja3RyYWNlLnB5Ci1uZXcgZmls ZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMmJhYWI1ZgotLS0tIC9kZXYvbnVsbAotKysr IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQotQEAgLTAsMCArMSw0MiBAQAotKyMg RmlsdGVyaW5nIGJhY2t0cmFjZS4KKyt2b2lkCisrZnJlZV9hbGxfdHlwZXMgKHZvaWQpCisrewor KyAgLyogTWFyayBhIG5ldyBwYXNzLiAgQXMgR0RCIGNoZWNrcyBhbGwgdGhlIGVudHJpZXMgd2Vy ZSB2aXNpdGVkIGFmdGVyIGVhY2gKKysgICAgIHBhc3MgdGhlcmUgY2Fubm90IGJlIGFueSBzdGFs ZSBlbnRyaWVzIGFscmVhZHkgY29udGFpbmluZyB0aGUgY2hhbmdlZAorKyAgICAgdmFsdWUuICAq LworKyAgdHlwZV9kaXNjYXJkYWJsZV9hZ2VfY3VycmVudCBePSAxOwogKwotKyMgQ29weXJpZ2h0 IChDKSAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgb2JzZXJ2ZXJfbm90 aWZ5X21hcmtfdXNlZCAoKTsKICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrICBo dGFiX3RyYXZlcnNlICh0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlLCB0eXBlX2Rpc2NhcmRhYmxlX3Jl bW92ZSwgTlVMTCk7CisrfQorIAorIC8qIEhlbHBlciBmdW5jdGlvbnMgdG8gaW5pdGlhbGl6ZSBh cmNoaXRlY3R1cmUtc3BlY2lmaWMgdHlwZXMuICAqLworIAorQEAgLTM3MDEsNiArNDI1NCw4IEBA IGdkYnR5cGVzX3Bvc3RfaW5pdCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisgICAgID0gbG9v a3VwX3BvaW50ZXJfdHlwZSAoYnVpbHRpbl90eXBlLT5idWlsdGluX3ZvaWQpOworICAgYnVpbHRp bl90eXBlLT5idWlsdGluX2Z1bmNfcHRyCisgICAgID0gbG9va3VwX3BvaW50ZXJfdHlwZSAobG9v a3VwX2Z1bmN0aW9uX3R5cGUgKGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl92b2lkKSk7CisrICBidWls dGluX3R5cGUtPmJ1aWx0aW5fZnVuY19mdW5jCisrICAgID0gbG9va3VwX2Z1bmN0aW9uX3R5cGUg KGJ1aWx0aW5fdHlwZS0+YnVpbHRpbl9mdW5jX3B0cik7CisgCisgICAvKiBUaGlzIHR5cGUgcmVw cmVzZW50cyBhIEdEQiBpbnRlcm5hbCBmdW5jdGlvbi4gICovCisgICBidWlsdGluX3R5cGUtPmlu dGVybmFsX2ZuCitAQCAtMzgxNCw2ICs0MzY5LDE4IEBAIG9iamZpbGVfdHlwZSAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUpCisgCQkgIjx0ZXh0IHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsIG9i amZpbGUpOworICAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX3RleHRf c3ltYm9sKQorICAgICA9IG9iamZpbGVfdHlwZS0+YnVpbHRpbl9pbnQ7CisrICBvYmpmaWxlX3R5 cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNfc3ltYm9sCisrICAgID0gaW5pdF90eXBlIChUWVBF X0NPREVfRlVOQywgMSwgVFlQRV9GTEFHX0dOVV9JRlVOQywKKysJCSAiPHRleHQgZ251LWluZGly ZWN0LWZ1bmN0aW9uIHZhcmlhYmxlLCBubyBkZWJ1ZyBpbmZvPiIsCisrCQkgb2JqZmlsZSk7Cisr ICBUWVBFX1RBUkdFVF9UWVBFIChvYmpmaWxlX3R5cGUtPm5vZGVidWdfdGV4dF9nbnVfaWZ1bmNf c3ltYm9sKQorKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKKysgIG9i amZpbGVfdHlwZS0+bm9kZWJ1Z19nb3RfcGx0X3N5bWJvbAorKyAgICA9IGluaXRfdHlwZSAoVFlQ RV9DT0RFX1BUUiwgZ2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJjaCkgLyA4LCAwLAorKwkJICI8dGV4 dCBmcm9tIGp1bXAgc2xvdCBpbiAuZ290LnBsdCwgbm8gZGVidWcgaW5mbz4iLAorKwkJIG9iamZp bGUpOworKyAgVFlQRV9UQVJHRVRfVFlQRSAob2JqZmlsZV90eXBlLT5ub2RlYnVnX2dvdF9wbHRf c3ltYm9sKQorKyAgICA9IG9iamZpbGVfdHlwZS0+bm9kZWJ1Z190ZXh0X3N5bWJvbDsKKyAgIG9i amZpbGVfdHlwZS0+bm9kZWJ1Z19kYXRhX3N5bWJvbAorICAgICA9IGluaXRfdHlwZSAoVFlQRV9D T0RFX0lOVCwKKyAJCSBnZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gpIC8gSE9TVF9DSEFSX0JJVCwg MCwKK0BAIC0zODY4LDYgKzQ0MzUsMTEgQEAgdm9pZAorIF9pbml0aWFsaXplX2dkYnR5cGVzICh2 b2lkKQorIHsKKyAgIGdkYnR5cGVzX2RhdGEgPSBnZGJhcmNoX2RhdGFfcmVnaXN0ZXJfcG9zdF9p bml0IChnZGJ0eXBlc19wb3N0X2luaXQpOwogKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgaXRlcnRv b2xzCisrICB0eXBlX2Rpc2NhcmRhYmxlX3RhYmxlID0gaHRhYl9jcmVhdGVfYWxsb2MgKDIwLCB0 eXBlX2Rpc2NhcmRhYmxlX2hhc2gsCisrCQkJCQkgICAgIHR5cGVfZGlzY2FyZGFibGVfZXF1YWws IE5VTEwsCisrCQkJCQkgICAgIHhjYWxsb2MsIHhmcmVlKTsKICsKLSsjIE91ciBvbmx5IGV4cG9y dHMuCi0rX19hbGxfXyA9IFsncHVzaF9mcmFtZV9maWx0ZXInLCAnY3JlYXRlX2ZyYW1lX2ZpbHRl ciddCisgICBvYmpmaWxlX3R5cGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKKyAK KyAgIGFkZF9zZXRzaG93X3ppbnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVy bG9hZF9kZWJ1ZywgXygiXAorZGlmZiAtLWdpdCBhL2dkYi9nZGJ0eXBlcy5oIGIvZ2RiL2dkYnR5 cGVzLmgKK2luZGV4IDUxZWI0NDUuLjYyN2U1YWYgMTAwNjQ0CistLS0gYS9nZGIvZ2RidHlwZXMu aAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKK0BAIC0xNzAsNiArMTcwLDcgQEAgZW51bSB0eXBlX2Zs YWdfdmFsdWUKKyAgIFRZUEVfRkxBR19WRUNUT1IgPSAoMSA8PCAxNSksCisgICBUWVBFX0ZMQUdf RklYRURfSU5TVEFOQ0UgPSAoMSA8PCAxNiksCisgICBUWVBFX0ZMQUdfU1RVQl9TVVBQT1JURUQg PSAoMSA8PCAxNyksCisrICBUWVBFX0ZMQUdfR05VX0lGVU5DID0gKDEgPDwgMTgpLAorIAorICAg LyogVXNlZCBmb3IgZXJyb3ItY2hlY2tpbmcuICAqLworICAgVFlQRV9GTEFHX01JTiA9IFRZUEVf RkxBR19VTlNJR05FRAorQEAgLTIxNCw2ICsyMTUsMTEgQEAgZW51bSB0eXBlX2luc3RhbmNlX2Zs YWdfdmFsdWUKKyAKKyAjZGVmaW5lIFRZUEVfVEFSR0VUX1NUVUIodCkJKFRZUEVfTUFJTl9UWVBF ICh0KS0+ZmxhZ190YXJnZXRfc3R1YikKKyAKKysvKiBUeXBlIG5lZWRzIHRvIGJlIGV2YWx1YXRl ZCBvbiBlYWNoIENIRUNLX1RZUEVERUYgYW5kIGl0cyByZXN1bHRzIG11c3Qgbm90IGJlCisrICAg c3RpY2t5LiAgKi8KICsKLStmcmFtZV9maWx0ZXIgPSBOb25lCisrI2RlZmluZSBUWVBFX0RZTkFN SUModCkJCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZHluYW1pYykKICsKLStkZWYgcHVzaF9m cmFtZV9maWx0ZXIgKGNvbnN0cnVjdG9yKToKLSsgICAgIiIiUmVnaXN0ZXIgYSBuZXcgYmFja3Ry YWNlIGZpbHRlciBjbGFzcyB3aXRoIHRoZSAnYmFja3RyYWNlJyBjb21tYW5kLgotK1RoZSBmaWx0 ZXIgd2lsbCBiZSBwYXNzZWQgYW4gaXRlcmF0b3IgYXMgYW4gYXJndW1lbnQuICBUaGUgaXRlcmF0 b3IKLSt3aWxsIHJldHVybiBnZGIuRnJhbWUtbGlrZSBvYmplY3RzLiAgVGhlIGZpbHRlciBzaG91 bGQgaW4gdHVybiBhY3QgYXMKLSthbiBpdGVyYXRvciByZXR1cm5pbmcgc3VjaCBvYmplY3RzLiIi IgotKyAgICBnbG9iYWwgZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2ZpbHRlciA9PSBOb25l OgotKyAgICAgICAgZnJhbWVfZmlsdGVyID0gY29uc3RydWN0b3IKLSsgICAgZWxzZToKLSsgICAg ICAgIGZyYW1lX2ZpbHRlciA9IGxhbWJkYSBpdGVyYXRvcjogY29uc3RydWN0b3IgKGZyYW1lX2Zp bHRlciAoaXRlcmF0b3IpKQorIC8qIFN0YXRpYyB0eXBlLiAgSWYgdGhpcyBpcyBzZXQsIHRoZSBj b3JyZXNwb25kaW5nIHR5cGUgaGFkIAorICAqIGEgc3RhdGljIG1vZGlmaWVyLgorICAqIE5vdGU6 IFRoaXMgbWF5IGJlIHVubmVjZXNzYXJ5LCBzaW5jZSBzdGF0aWMgZGF0YSBtZW1iZXJzCitAQCAt MjcxLDYgKzI3NywxMiBAQCBlbnVtIHR5cGVfaW5zdGFuY2VfZmxhZ192YWx1ZQorIAorICNkZWZp bmUgVFlQRV9OT1RURVhUKHQpCShUWVBFX0lOU1RBTkNFX0ZMQUdTICh0KSAmIFRZUEVfSU5TVEFO Q0VfRkxBR19OT1RURVhUKQorIAorKy8qIFVzZWQgb25seSBmb3IgVFlQRV9DT0RFX0ZVTkMgd2hl cmUgaXQgc3BlY2lmaWVzIHRoZSByZWFsIGZ1bmN0aW9uCisrICAgYWRkcmVzcyBpcyByZXR1cm5l ZCBieSB0aGlzIGZ1bmN0aW9uIGNhbGwuICBUWVBFX1RBUkdFVF9UWVBFIGRldGVybWluZXMgdGhl CisrICAgZmluYWwgcmV0dXJuZWQgZnVuY3Rpb24gdHlwZSB0byBiZSBwcmVzZW50ZWQgdG8gdXNl ci4gICovCiArCi0rZGVmIGNyZWF0ZV9mcmFtZV9maWx0ZXIgKGl0ZXIpOgotKyAgICBnbG9iYWwg ZnJhbWVfZmlsdGVyCi0rICAgIGlmIGZyYW1lX2ZpbHRlciBpcyBOb25lOgotKyAgICAgICAgcmV0 dXJuIGl0ZXIKLSsgICAgcmV0dXJuIGZyYW1lX2ZpbHRlciAoaXRlcikKKysjZGVmaW5lIFRZUEVf R05VX0lGVU5DKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZ251X2lmdW5jKQogKwotZGlm ZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL19faW5pdF9fLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvX19pbml0X18ucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1p bmRleCAwMDAwMDAwLi44YjEzNzg5Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9fX2luaXRfXy5weQotQEAgLTAsMCArMSBAQAorIC8qIFR5cGUgb3duZXIu ICBJZiBUWVBFX09CSkZJTEVfT1dORUQgaXMgdHJ1ZSwgdGhlIHR5cGUgaXMgb3duZWQgYnkKKyAg ICB0aGUgb2JqZmlsZSByZXRyaWV2ZWQgYXMgVFlQRV9PQkpGSUxFLiAgT3RoZXJ3ZWlzZSwgdGhl IHR5cGUgaXMKKyAgICBvd25lZCBieSBhbiBhcmNoaXRlY3R1cmU7IFRZUEVfT0JKRklMRSBpcyBO VUxMIGluIHRoaXMgY2FzZS4gICovCitAQCAtMjg1LDYgKzI5Nyw0OCBAQCBlbnVtIHR5cGVfaW5z dGFuY2VfZmxhZ192YWx1ZQorIAorICNkZWZpbmUgVFlQRV9ERUNMQVJFRF9DTEFTUyh0KSAoVFlQ RV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RlY2xhcmVkX2NsYXNzKQorIAorKy8qIERlZmluZSB0aGlz IHR5cGUgYXMgYmVpbmcgcmVjbGFpbWFibGUgZHVyaW5nIGZyZWVfYWxsX3R5cGVzLiAgVHlwZSBp cworKyAgIHJlcXVpcmVkIHRvIGJlIGhhdmUgVFlQRV9PQkpGSUxFIHNldCB0byBOVUxMLiAgU2V0 dGluZyB0aGlzIGZsYWcgcmVxdWlyZXMKKysgICBpbml0aWFsaXppbmcgVFlQRV9ESVNDQVJEQUJM RV9BR0UsIHNlZSBhbGxvY190eXBlX2Rpc2NhcmRhYmxlLiAgKi8KICsKLWRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9j b21tYW5kL2FsaWFzLnB5Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uOTZi NjYxOAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxp YXMucHkKLUBAIC0wLDAgKzEsNTkgQEAKLSsjIEFsaWFzIGNvbW1hbmQuCisrI2RlZmluZSBUWVBF X0RJU0NBUkRBQkxFKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfZGlzY2FyZGFibGUpCiAr Ci0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisr LyogTWFya2VyIHRoaXMgdHlwZSBoYXMgYmVlbiB2aXNpdGVkIGJ5IHRoZSB0eXBlX21hcmtfdXNl ZCBieSB0aGlzCisrICAgbWFyay1hbmQtc3dlZXAgdHlwZXMgZ2FyYmFnZSBjb2xsZWN0aW5nIHBh c3MuICBDdXJyZW50IHBhc3MgaXMgcmVwcmVzZW50ZWQKKysgICBieSBUWVBFX0RJU0NBUkRBQkxF X0FHRV9DVVJSRU5ULiAgKi8KICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVy bXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMg dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGlj ZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMg VGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w bGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHBy b2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrI2Rl ZmluZSBUWVBFX0RJU0NBUkRBQkxFX0FHRSh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2Rp c2NhcmRhYmxlX2FnZSkKICsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgQWxpYXNJbXBsZW1lbnRh dGlvbiAoZ2RiLkNvbW1hbmQpOgotKyAgICBkZWYgX19pbml0X18gKHNlbGYsIG5hbWUsIHJlYWws IGRvYyk6Ci0rICAgICAgICAjIEhhdmUgdG8gc2V0IF9fZG9jX18gYmVmb3JlIHRoZSBzdXBlciBp bml0IGNhbGwuCi0rICAgICAgICAjIEl0IHdvdWxkIGJlIG5pY2UgaWYgZ2RiJ3MgaGVscCBsb29r ZWQgdXAgX19kb2NfXyBkeW5hbWljYWxseS4KLSsgICAgICAgIHNlbGYuX19kb2NfXyA9IGRvYwot KyAgICAgICAgIyBOb3RlOiBubyBnb29kIHdheSB0byBjb21wbGV0ZSA6KAotKyAgICAgICAgc3Vw ZXIgKEFsaWFzSW1wbGVtZW50YXRpb24sIHNlbGYpLl9faW5pdF9fIChuYW1lLCBnZGIuQ09NTUFO RF9OT05FKQotKyAgICAgICAgc2VsZi5yZWFsID0gcmVhbAotKwotKyAgICBkZWYgaW52b2tlKHNl bGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgZ2RiLmV4ZWN1dGUgKHNlbGYucmVhbCArICcg JyArIGFyZywgZnJvbV90dHkpCi0rCi0rY2xhc3MgQWxpYXNDb21tYW5kIChnZGIuQ29tbWFuZCk6 Ci0rICAgICIiIkFsaWFzIG9uZSBjb21tYW5kIHRvIGFub3RoZXIuCi0rSW4gdGhlIHNpbXBsZXN0 IGZvcm0sIHRoZSBmaXJzdCB3b3JkIGlzIHRoZSBuYW1lIG9mIHRoZSBhbGlhcywgYW5kCi0rdGhl IHJlbWFpbmluZyB3b3JkcyBhcmUgdGhlIHRoZSBleHBhbnNpb24uCi0rQW4gJz0nIGJ5IGl0c2Vs ZiBjYW4gYmUgdXNlZCB0byBkZWZpbmUgYSBtdWx0aS13b3JkIGFsaWFzOyB3b3JkcwotK2JlZm9y ZSB0aGUgJz0nIGFyZSB0aGUgbmFtZSBvZiB0aGUgbmV3IGNvbW1hbmQuIiIiCi0rCi0rICAgIGRl ZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICAjIENvbXBsZXRpb24gaXMgbm90IHF1aXRlIHJp Z2h0IGhlcmUuCi0rICAgICAgICBzdXBlciAoQWxpYXNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAo ImFsaWFzIiwgZ2RiLkNPTU1BTkRfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfQ09NTUFORCkKLSsKLSsgICAgZGVmIGludm9r ZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLmRvbnRfcmVwZWF0ICgpCi0r ICAgICAgICAjIFdpdGhvdXQgc29tZSBmb3JtIG9mIHF1b3Rpbmcgd2UgY2FuJ3QgYWxpYXMgYSBt dWx0aS13b3JkCi0rICAgICAgICAjIGNvbW1hbmQgdG8gYW5vdGhlciBjb21tYW5kLgotKyAgICAg ICAgYXJncyA9IGFyZy5zcGxpdCgpCi0rICAgICAgICB0cnk6Ci0rICAgICAgICAgICAgc3RhcnQg PSBhcmdzLmluZGV4ICgnPScpCi0rICAgICAgICAgICAgZW5kID0gc3RhcnQgKyAxCi0rICAgICAg ICBleGNlcHQgVmFsdWVFcnJvcjoKLSsgICAgICAgICAgICBzdGFydCA9IDEKLSsgICAgICAgICAg ICBlbmQgPSAxCi0rICAgICAgICB0YXJnZXQgPSAiICIuam9pbihhcmdzW2VuZDpdKQotKyAgICAg ICAgQWxpYXNJbXBsZW1lbnRhdGlvbiAoIiAiLmpvaW4gKGFyZ3NbMDpzdGFydF0pLCB0YXJnZXQs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBjb21tYW5kIGlzIGFuIGFsaWFz IGZvciAnJXMnLiIgJSB0YXJnZXQpCi0rCi0rQWxpYXNDb21tYW5kKCkKLWRpZmYgLS1naXQgYS9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9n ZGIvY29tbWFuZC9iYWNrdHJhY2UucHkKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAw MDAwLi5lYzlhNTI3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29t bWFuZC9iYWNrdHJhY2UucHkKLUBAIC0wLDAgKzEsMTA2IEBACi0rIyBOZXcgYmFja3RyYWNlIGNv bW1hbmQuCisrLyogSXMgSElHSF9CT1VORCBhIGxvdy1ib3VuZCByZWxhdGl2ZSBjb3VudCAoMSkg b3IgdGhlIGhpZ2ggYm91bmQgaXRzZWxmICgwKT8gICovCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIw MDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrI2RlZmluZSBUWVBFX1JB TkdFX0hJR0hfQk9VTkRfSVNfQ09VTlQocmFuZ2VfdHlwZSkgXAorKyAgKFRZUEVfTUFJTl9UWVBF IChyYW5nZV90eXBlKS0+ZmxhZ19yYW5nZV9oaWdoX2JvdW5kX2lzX2NvdW50KQogKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysvKiBOb3QgYWxsb2NhdGVkLiAgVFlQRV9BTExPQ0FU RUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2FzZS4gIElmIHRoaXMgZmxhZworKyAgIGlzIHVu c2V0IGFuZCBUWVBFX0FMTE9DQVRFRCh0KSBpcyBOVUxMIHRoZW4gdGhlIHR5cGUgaXMgYWxsb2Nh dGVkLiAgSWYgdGhpcworKyAgIGZsYWcgaXMgdW5zZXQgYW5kIFRZUEVfQUxMT0NBVEVEKHQpIGlz IG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJsb2NrCisrICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFs IGFsbG9jYXRpb24gc3RhdGUuICAqLwogKwotK2ltcG9ydCBnZGIKLStpbXBvcnQgZ2RiLmJhY2t0 cmFjZQotK2ltcG9ydCBpdGVydG9vbHMKLStmcm9tIGdkYi5GcmFtZUl0ZXJhdG9yIGltcG9ydCBG cmFtZUl0ZXJhdG9yCi0rZnJvbSBnZGIuRnJhbWVXcmFwcGVyIGltcG9ydCBGcmFtZVdyYXBwZXIK LStpbXBvcnQgc3lzCi0rCi0rY2xhc3MgUmV2ZXJzZUJhY2t0cmFjZVBhcmFtZXRlciAoZ2RiLlBh cmFtZXRlcik6Ci0rICAgICIiIlRoZSBuZXctYmFja3RyYWNlIGNvbW1hbmQgY2FuIHNob3cgYmFj a3RyYWNlcyBpbiAncmV2ZXJzZScgb3JkZXIuCi0rVGhpcyBtZWFucyB0aGF0IHRoZSBpbm5lcm1v c3QgZnJhbWUgd2lsbCBiZSBwcmludGVkIGxhc3QuCi0rTm90ZSB0aGF0IHJldmVyc2UgYmFja3Ry YWNlcyBhcmUgbW9yZSBleHBlbnNpdmUgdG8gY29tcHV0ZS4iIiIKLSsKLSsgICAgc2V0X2RvYyA9 ICJFbmFibGUgb3IgZGlzYWJsZSByZXZlcnNlIGJhY2t0cmFjZXMuIgotKyAgICBzaG93X2RvYyA9 ICJTaG93IHdoZXRoZXIgYmFja3RyYWNlcyB3aWxsIGJlIHByaW50ZWQgaW4gcmV2ZXJzZSBvcmRl ci4iCi0rCi0rICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSsgICAgICAgIGdkYi5QYXJhbWV0ZXIu X19pbml0X18gKHNlbGYsICJyZXZlcnNlLWJhY2t0cmFjZSIsCi0rICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSywgZ2RiLlBBUkFNX0JPT0xFQU4pCi0rICAg ICAgICAjIERlZmF1bHQgdG8gY29tcGF0aWJpbGl0eSB3aXRoIGdkYi4KLSsgICAgICAgIHNlbGYu dmFsdWUgPSBGYWxzZQotKwotK2NsYXNzIEZpbHRlcmluZ0JhY2t0cmFjZSAoZ2RiLkNvbW1hbmQp OgotKyAgICAiIiJQcmludCBiYWNrdHJhY2Ugb2YgYWxsIHN0YWNrIGZyYW1lcywgb3IgaW5uZXJt b3N0IENPVU5UIGZyYW1lcy4KLStXaXRoIGEgbmVnYXRpdmUgYXJndW1lbnQsIHByaW50IG91dGVy bW9zdCAtQ09VTlQgZnJhbWVzLgotK1VzZSBvZiB0aGUgJ2Z1bGwnIHF1YWxpZmllciBhbHNvIHBy aW50cyB0aGUgdmFsdWVzIG9mIHRoZSBsb2NhbCB2YXJpYWJsZXMuCi0rVXNlIG9mIHRoZSAncmF3 JyBxdWFsaWZpZXIgYXZvaWRzIGFueSBmaWx0ZXJpbmcgYnkgbG9hZGFibGUgbW9kdWxlcy4KLSsi IiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgICMgRklYTUU6IHRoaXMg aXMgbm90IHdvcmtpbmcgcXVpdGUgd2VsbCBlbm91Z2ggdG8gcmVwbGFjZQotKyAgICAgICAgIyAi YmFja3RyYWNlIiB5ZXQuCi0rICAgICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyAoc2VsZiwgIm5l dy1iYWNrdHJhY2UiLCBnZGIuQ09NTUFORF9TVEFDSykKLSsgICAgICAgIHNlbGYucmV2ZXJzZSA9 IFJldmVyc2VCYWNrdHJhY2VQYXJhbWV0ZXIoKQotKwotKyAgICBkZWYgcmV2ZXJzZV9pdGVyIChz ZWxmLCBpdGVyKToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBmb3IgaXRlbSBpbiBp dGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAgICAgICByZXN1bHQu cmV2ZXJzZSgpCi0rICAgICAgICByZXR1cm4gcmVzdWx0Ci0rCi0rICAgIGRlZiBmaW5hbF9uIChz ZWxmLCBpdGVyLCB4KToKLSsgICAgICAgIHJlc3VsdCA9IFtdCi0rICAgICAgICBmb3IgaXRlbSBp biBpdGVyOgotKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQgKGl0ZW0pCi0rICAgICAgICByZXR1 cm4gcmVzdWx0W3g6XQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToK LSsgICAgICAgIGkgPSAwCi0rICAgICAgICBjb3VudCA9IDAKLSsgICAgICAgIGZpbHRlciA9IFRy dWUKLSsgICAgICAgIGZ1bGwgPSBGYWxzZQotKwotKyAgICAgICAgZm9yIHdvcmQgaW4gYXJnLnNw bGl0ICgiICIpOgotKyAgICAgICAgICAgIGlmIHdvcmQgPT0gJyc6Ci0rICAgICAgICAgICAgICAg IGNvbnRpbnVlCi0rICAgICAgICAgICAgZWxpZiB3b3JkID09ICdyYXcnOgotKyAgICAgICAgICAg ICAgICBmaWx0ZXIgPSBGYWxzZQotKyAgICAgICAgICAgIGVsaWYgd29yZCA9PSAnZnVsbCc6Ci0r ICAgICAgICAgICAgICAgIGZ1bGwgPSBUcnVlCi0rICAgICAgICAgICAgZWxzZToKLSsgICAgICAg ICAgICAgICAgY291bnQgPSBpbnQgKHdvcmQpCi0rCi0rICAgICAgICAjIEZJWE1FOiBwcm92aWRl IG9wdGlvbiB0byBzdGFydCBhdCBzZWxlY3RlZCBmcmFtZQotKyAgICAgICAgIyBIb3dldmVyLCBz aG91bGQgc3RpbGwgbnVtYmVyIGFzIGlmIHN0YXJ0aW5nIGZyb20gbmV3ZXN0Ci0rCW5ld2VzdF9m cmFtZSA9IGdkYi5zZWxlY3RlZF90aHJlYWQgKCkubmV3ZXN0X2ZyYW1lICgpCi0rICAgICAgICBp dGVyID0gaXRlcnRvb2xzLmltYXAgKEZyYW1lV3JhcHBlciwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgRnJhbWVJdGVyYXRvciAobmV3ZXN0X2ZyYW1lKSkKLSsgICAgICAgIGlmIGZp bHRlcjoKLSsgICAgICAgICAgICBpdGVyID0gZ2RiLmJhY2t0cmFjZS5jcmVhdGVfZnJhbWVfZmls dGVyIChpdGVyKQotKwotKyAgICAgICAgIyBOb3cgd3JhcCBpbiBhbiBpdGVyYXRvciB0aGF0IG51 bWJlcnMgdGhlIGZyYW1lcy4KLSsgICAgICAgIGl0ZXIgPSBpdGVydG9vbHMuaXppcCAoaXRlcnRv b2xzLmNvdW50ICgwKSwgaXRlcikKLSsKLSsgICAgICAgICMgUmV2ZXJzZSBpZiB0aGUgdXNlciB3 YW50ZWQgdGhhdC4KLSsgICAgICAgIGlmIHNlbGYucmV2ZXJzZS52YWx1ZToKLSsgICAgICAgICAg ICBpdGVyID0gc2VsZi5yZXZlcnNlX2l0ZXIgKGl0ZXIpCi0rCi0rICAgICAgICAjIEV4dHJhY3Qg c3ViLXJhbmdlIHVzZXIgd2FudHMuCi0rICAgICAgICBpZiBjb3VudCA8IDA6Ci0rICAgICAgICAg ICAgaXRlciA9IHNlbGYuZmluYWxfbiAoaXRlciwgY291bnQpCi0rICAgICAgICBlbGlmIGNvdW50 ID4gMDoKLSsgICAgICAgICAgICBpdGVyID0gaXRlcnRvb2xzLmlzbGljZSAoaXRlciwgMCwgY291 bnQpCi0rCi0rICAgICAgICBmb3IgcGFpciBpbiBpdGVyOgotKyAgICAgICAgICAgIHN5cy5zdGRv dXQud3JpdGUgKCIjJS0yZCIgJSBwYWlyWzBdKQotKyAgICAgICAgICAgIHBhaXJbMV0uZGVzY3Jp YmUgKHN5cy5zdGRvdXQsIGZ1bGwpCi0rCi0rRmlsdGVyaW5nQmFja3RyYWNlKCkKLWRpZmYgLS1n aXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJyb3JzLnB5IGIvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKLUBAIC0wLDAgKzEsMzcgQEAKLSsj IElnbm9yZSBlcnJvcnMgaW4gdXNlciBjb21tYW5kcy4KKysjZGVmaW5lIFRZUEVfTk9UX0FMTE9D QVRFRCh0KQkoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX25vdF9hbGxvY2F0ZWQpCiArCi0rIyBD b3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogTm90 IGFzc29jaWF0ZWQuICBUWVBFX0FTU09DSUFURUQodCkgbXVzdCBiZSBOVUxMIGluIHN1Y2ggY2Fz ZS4gIElmIHRoaXMgZmxhZworKyAgIGlzIHVuc2V0IGFuZCBUWVBFX0FTU09DSUFURUQodCkgaXMg TlVMTCB0aGVuIHRoZSB0eXBlIGlzIGFzc29jaWF0ZWQuICBJZgorKyAgIHRoaXMgZmxhZyBpcyB1 bnNldCBhbmQgVFlQRV9BU1NPQ0lBVEVEKHQpIGlzIG5vdCBOVUxMIHRoZW4gaXRzIERXQVJGIGJs b2NrCisrICAgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIGFzc29jaWF0aW9uIHN0YXRlLiAgKi8KICsK LSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp dCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsj Ci0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8 aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrI2RlZmluZSBUWVBFX05PVF9BU1NPQ0lB VEVEKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfbm90X2Fzc29jaWF0ZWQpCisrCisrLyog QWRkcmVzcyBvZiB0aGUgYWN0dWFsIGRhdGEgYXMgZm9yIERXX0FUX2RhdGFfbG9jYXRpb24uICBJ dHMgZHdhcmYgYmxvY2sgbXVzdAorKyAgIG5vdCBiZSBldmFsdWF0ZWQgdW5sZXNzIGJvdGggVFlQ RV9OT1RfQUxMT0NBVEVEIGFuZCBUWVBFX05PVF9BU1NPQ0lBVEVEIGFyZQorKyAgIGZhbHNlLiAg SWYgVFlQRV9EQVRBX0xPQ0FUSU9OX0lTX0FERFIgc2V0IHRoZW4gVFlQRV9EQVRBX0xPQ0FUSU9O X0FERFIgdmFsdWUKKysgICBpcyB0aGUgYWN0dWFsIGRhdGEgYWRkcmVzcyB2YWx1ZS4gIElmIHVu c2V0IGFuZAorKyAgIFRZUEVfREFUQV9MT0NBVElPTl9EV0FSRl9CTE9DSyBpcyBOVUxMIHRoZW4g dGhlIHZhbHVlIGlzIHRoZSBub3JtYWwKKysgICB2YWx1ZV9yYXdfYWRkcmVzcy4gIElmIHVuc2V0 IGFuZCBUWVBFX0RBVEFfTE9DQVRJT05fRFdBUkZfQkxPQ0sgaXMgbm90IE5VTEwKKysgICB0aGVu IGl0cyBEV0FSRiBibG9jayBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgZGF0YSBhZGRyZXNzLiAgKi8K ICsKLStpbXBvcnQgZ2RiCisrI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fSVNfQUREUih0KSBc CisrICAoVFlQRV9NQUlOX1RZUEUgKHQpLT5mbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkcikKICsK LStjbGFzcyBJZ25vcmVFcnJvcnNDb21tYW5kIChnZGIuQ29tbWFuZCk6Ci0rICAgICIiIkV4ZWN1 dGUgYSBzaW5nbGUgY29tbWFuZCwgaWdub3JpbmcgYWxsIGVycm9ycy4KLStPbmx5IG9uZS1saW5l IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuCi0rVGhpcyBpcyBwcmltYXJpbHkgdXNlZnVsIGluIHNj cmlwdHMuIiIiCisgLyogQ29uc3RhbnQgdHlwZS4gIElmIHRoaXMgaXMgc2V0LCB0aGUgY29ycmVz cG9uZGluZyB0eXBlIGhhcyBhCisgICogY29uc3QgbW9kaWZpZXIuCisgICovCitAQCAtMzg4LDEx ICs0NDIsMTkgQEAgc3RydWN0IG1haW5fdHlwZQorICAgdW5zaWduZWQgaW50IGZsYWdfdmFyYXJn cyA6IDE7CisgICB1bnNpZ25lZCBpbnQgZmxhZ192ZWN0b3IgOiAxOworICAgdW5zaWduZWQgaW50 IGZsYWdfc3R1Yl9zdXBwb3J0ZWQgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZ251X2lmdW5j IDogMTsKKyAgIHVuc2lnbmVkIGludCBmbGFnX2ZpeGVkX2luc3RhbmNlIDogMTsKKyAgIHVuc2ln bmVkIGludCBmbGFnX29iamZpbGVfb3duZWQgOiAxOworICAgLyogVHJ1ZSBpZiB0aGlzIHR5cGUg d2FzIGRlY2xhcmVkIHdpdGggImNsYXNzIiByYXRoZXIgdGhhbgorICAgICAgInN0cnVjdCIuICAq LworICAgdW5zaWduZWQgaW50IGZsYWdfZGVjbGFyZWRfY2xhc3MgOiAxOworKyAgdW5zaWduZWQg aW50IGZsYWdfZGlzY2FyZGFibGUgOiAxOworKyAgdW5zaWduZWQgaW50IGZsYWdfZGlzY2FyZGFi bGVfYWdlIDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX2R5bmFtaWMgOiAxOworKyAgdW5zaWdu ZWQgaW50IGZsYWdfcmFuZ2VfaGlnaF9ib3VuZF9pc19jb3VudCA6IDE7CisrICB1bnNpZ25lZCBp bnQgZmxhZ19ub3RfYWxsb2NhdGVkIDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX25vdF9hc3Nv Y2lhdGVkIDogMTsKKysgIHVuc2lnbmVkIGludCBmbGFnX2RhdGFfbG9jYXRpb25faXNfYWRkciA6 IDE7CisgCisgICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVzIHdoaWNoIGZpZWxkIG9mIHRo ZSB0eXBlX3NwZWNpZmljIHVuaW9uCisgICAgICBpcyBiZWluZyB1c2VkIGZvciB0aGlzIHR5cGUs IGlmIGFueS4gICovCitAQCAtNDY2LDYgKzUyOCwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgCisg ICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CisgCisrICAvKiBGb3IgRFdfQVRfZGF0YV9sb2Nh dGlvbi4gICovCisrICB1bmlvbgorKyAgICB7CisrICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHBy X2JhdG9uICpkd2FyZl9ibG9jazsKKysgICAgICBDT1JFX0FERFIgYWRkcjsKKysgICAgfQorKyAg ZGF0YV9sb2NhdGlvbjsKICsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1 cGVyIChJZ25vcmVFcnJvcnNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoImlnbm9yZS1lcnJvcnMi LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn ZGIuQ09NTUFORF9PQlNDVVJFLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAjIEZJWE1FLi4uCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9DT01NQU5EKQorKyAgLyogRm9y IERXX0FUX2FsbG9jYXRlZC4gICovCisrICBzdHJ1Y3QgZHdhcmYyX2xvY2V4cHJfYmF0b24gKmFs bG9jYXRlZDsKICsKLSsgICAgZGVmIGludm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAg ICAgICB0cnk6Ci0rICAgICAgICAgICAgZ2RiLmV4ZWN1dGUgKGFyZywgZnJvbV90dHkpCi0rICAg ICAgICBleGNlcHQ6Ci0rICAgICAgICAgICAgcGFzcworKyAgLyogRm9yIERXX0FUX2Fzc29jaWF0 ZWQuICAqLworKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICphc3NvY2lhdGVkOwogKwot K0lnbm9yZUVycm9yc0NvbW1hbmQgKCkKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9wYWhvbGUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yMWEwYmYwCi0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKLUBAIC0wLDAg KzEsNzUgQEAKLSsjIHBhaG9sZSBjb21tYW5kIGZvciBnZGIKKyAgIC8qIEZvciBzdHJ1Y3R1cmUg YW5kIHVuaW9uIHR5cGVzLCBhIGRlc2NyaXB0aW9uIG9mIGVhY2ggZmllbGQuCisgICAgICBGb3Ig c2V0IGFuZCBwYXNjYWwgYXJyYXkgdHlwZXMsIHRoZXJlIGlzIG9uZSAiZmllbGQiLAorICAgICAg d2hvc2UgdHlwZSBpcyB0aGUgZG9tYWluIHR5cGUgb2YgdGhlIHNldCBvciBhcnJheS4KK0BAIC01 MzksMTMgKzYxNSwzNCBAQCBzdHJ1Y3QgbWFpbl90eXBlCisgCisgICAgIHN0cnVjdCByYW5nZV9i b3VuZHMKKyAgICAgeworKyAgICAgIHN0cnVjdAorKwl7CisrCSAgdW5pb24KKysJICAgIHsKKysJ ICAgICAgTE9OR0VTVCBjb25zdGFudDsKKysJICAgICAgc3RydWN0IGR3YXJmMl9sb2NleHByX2Jh dG9uICpkd2FyZl9ibG9jazsKKysJICAgICAgc3RydWN0CisrCQl7CisrCQkgIHN0cnVjdCBkd2Fy ZjJfbG9jbGlzdF9iYXRvbiAqbG9jbGlzdDsKKysJCSAgc3RydWN0IHR5cGUgKnR5cGU7CisrCQl9 CisrCSAgICAgIGR3YXJmX2xvY2xpc3Q7CisrCSAgICB9CisrCSAgdTsKKysJICBlbnVtIHJhbmdl X2JvdW5kX2tpbmQKKysJICAgIHsKKysJICAgICAgUkFOR0VfQk9VTkRfS0lORF9DT05TVEFOVCwK KysJICAgICAgUkFOR0VfQk9VTkRfS0lORF9EV0FSRl9CTE9DSywKKysJICAgICAgUkFOR0VfQk9V TkRfS0lORF9EV0FSRl9MT0NMSVNUCisrCSAgICB9CisrCSAga2luZDsKKysJfQorICAgICAgIC8q IExvdyBib3VuZCBvZiByYW5nZS4gKi8KKy0KKy0gICAgICBMT05HRVNUIGxvdzsKKy0KKysgICAg ICBsb3csCisgICAgICAgLyogSGlnaCBib3VuZCBvZiByYW5nZS4gKi8KKy0KKy0gICAgICBMT05H RVNUIGhpZ2g7CisrICAgICAgaGlnaCwKKysgICAgICAvKiBCeXRlIHN0cmlkZSBvZiByYW5nZS4g Ki8KKysgICAgICBieXRlX3N0cmlkZTsKKyAKKyAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdo ZXRoZXIgdGhlIHZhbHVlcyBvZiBsb3cgYW5kIGhpZ2ggYXJlCisgICAgICAgICAgdmFsaWQuICBX aGVuIHRydWUsIHRoZSByZXNwZWN0aXZlIHJhbmdlIHZhbHVlIGlzCitAQCAtOTE3LDkgKzEwMTQs OSBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsK KyAjZGVmaW5lIFRZUEVfUE9JTlRFUl9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5wb2ludGVy X3R5cGUKKyAjZGVmaW5lIFRZUEVfUkVGRVJFTkNFX1RZUEUodGhpc3R5cGUpICh0aGlzdHlwZSkt PnJlZmVyZW5jZV90eXBlCisgI2RlZmluZSBUWVBFX0NIQUlOKHRoaXN0eXBlKSAodGhpc3R5cGUp LT5jaGFpbgorLS8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYgdHlwZSwgeW91 IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmLgorLSAgIEJ1dCBjaGVja190eXBlZGVmIGRvZXMg c2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRiB0eXBlLAorLSAgIHNvIHlvdSBvbmx5 IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0ZV92YWx1ZQor Ky8qIE5vdGUgdGhhdCBpZiB0aGlzdHlwZSBpcyBhIFRZUEVERUYsIEFSUkFZIG9yIFNUUklORyB0 eXBlLCB5b3UgaGF2ZSB0byBjYWxsCisrICAgY2hlY2tfdHlwZWRlZi4gIEJ1dCBjaGVja190eXBl ZGVmIGRvZXMgc2V0IHRoZSBUWVBFX0xFTkdUSCBvZiB0aGUgVFlQRURFRgorKyAgIHR5cGUsIHNv IHlvdSBvbmx5IGhhdmUgdG8gY2FsbCBjaGVja190eXBlZGVmIG9uY2UuICBTaW5jZSBhbGxvY2F0 ZV92YWx1ZQorICAgIGNhbGxzIGNoZWNrX3R5cGVkZWYsIFRZUEVfTEVOR1RIIChWQUxVRV9UWVBF IChYKSkgaXMgc2FmZS4gICovCisgI2RlZmluZSBUWVBFX0xFTkdUSCh0aGlzdHlwZSkgKHRoaXN0 eXBlKS0+bGVuZ3RoCisgLyogTm90ZSB0aGF0IFRZUEVfQ09ERSBjYW4gYmUgVFlQRV9DT0RFX1RZ UEVERUYsIHNvIGlmIHlvdSB3YW50IHRoZSByZWFsCitAQCAtOTI3LDExICsxMDI0LDE2IEBAIGV4 dGVybiB2b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworICNkZWZp bmUgVFlQRV9DT0RFKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlwZSktPmNvZGUKKyAj ZGVmaW5lIFRZUEVfTkZJRUxEUyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5u ZmllbGRzCisgI2RlZmluZSBUWVBFX0ZJRUxEUyh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUodGhp c3R5cGUpLT5mbGRzX2JuZHMuZmllbGRzCisrI2RlZmluZSBUWVBFX0RBVEFfTE9DQVRJT05fRFdB UkZfQkxPQ0sodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFICh0aGlzdHlwZSktPmRhdGFfbG9jYXRp b24uZHdhcmZfYmxvY2sKKysjZGVmaW5lIFRZUEVfREFUQV9MT0NBVElPTl9BRERSKHRoaXN0eXBl KSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5kYXRhX2xvY2F0aW9uLmFkZHIKKysjZGVmaW5l IFRZUEVfQUxMT0NBVEVEKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSAodGhpc3R5cGUpLT5hbGxv Y2F0ZWQKKysjZGVmaW5lIFRZUEVfQVNTT0NJQVRFRCh0aGlzdHlwZSkgVFlQRV9NQUlOX1RZUEUg KHRoaXN0eXBlKS0+YXNzb2NpYXRlZAorIAorICNkZWZpbmUgVFlQRV9JTkRFWF9UWVBFKHR5cGUp IFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkKKyAjZGVmaW5lIFRZUEVfUkFOR0VfREFUQSh0aGlz dHlwZSkgVFlQRV9NQUlOX1RZUEUodGhpc3R5cGUpLT5mbGRzX2JuZHMuYm91bmRzCistI2RlZmlu ZSBUWVBFX0xPV19CT1VORChyYW5nZV90eXBlKSBUWVBFX1JBTkdFX0RBVEEocmFuZ2VfdHlwZSkt PmxvdworLSNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFU QShyYW5nZV90eXBlKS0+aGlnaAorKyNkZWZpbmUgVFlQRV9MT1dfQk9VTkQocmFuZ2VfdHlwZSkg VFlQRV9SQU5HRV9EQVRBKHJhbmdlX3R5cGUpLT5sb3cudS5jb25zdGFudAorKyNkZWZpbmUgVFlQ RV9ISUdIX0JPVU5EKHJhbmdlX3R5cGUpIFRZUEVfUkFOR0VfREFUQShyYW5nZV90eXBlKS0+aGln aC51LmNvbnN0YW50CisrI2RlZmluZSBUWVBFX0JZVEVfU1RSSURFKHJhbmdlX3R5cGUpIFRZUEVf UkFOR0VfREFUQShyYW5nZV90eXBlKS0+Ynl0ZV9zdHJpZGUudS5jb25zdGFudAorICNkZWZpbmUg VFlQRV9MT1dfQk9VTkRfVU5ERUZJTkVEKHJhbmdlX3R5cGUpIFwKKyAgICBUWVBFX1JBTkdFX0RB VEEocmFuZ2VfdHlwZSktPmxvd191bmRlZmluZWQKKyAjZGVmaW5lIFRZUEVfSElHSF9CT1VORF9V TkRFRklORUQocmFuZ2VfdHlwZSkgXAorQEAgLTk0OCw3ICsxMDUwLDE0IEBAIGV4dGVybiB2b2lk IGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnVjdCB0eXBlICopOworICAgIChUWVBFX0hJR0hf Qk9VTkQoVFlQRV9JTkRFWF9UWVBFKChhcnJheXR5cGUpKSkpCisgCisgI2RlZmluZSBUWVBFX0FS UkFZX0xPV0VSX0JPVU5EX1ZBTFVFKGFycmF5dHlwZSkgXAorLSAgIChUWVBFX0xPV19CT1VORChU WVBFX0lOREVYX1RZUEUoKGFycmF5dHlwZSkpKSkKKysgIFRZUEVfTE9XX0JPVU5EIChUWVBFX0lO REVYX1RZUEUgKGFycmF5dHlwZSkpCiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrLyogVFlQRV9CWVRFX1NUUklERSAoVFlQRV9J TkRFWF9UWVBFIChhcnJheXR5cGUpKSB3aXRoIGEgZmFsbGJhY2sgdG8gdGhlCisrICAgZWxlbWVu dCBzaXplIGlmIG5vIHNwZWNpZmljIHN0cmlkZSB2YWx1ZSBpcyBrbm93bi4gICovCisrI2RlZmlu ZSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFKGFycmF5dHlwZSkJCVwKKysgIChUWVBFX0JZ VEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpID09IDAJXAorKyAgID8gVFlQ RV9MRU5HVEggKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5dHlwZSkpCQlcCisrICAgOiBUWVBFX0JZ VEVfU1RSSURFIChUWVBFX0lOREVYX1RZUEUgKGFycmF5dHlwZSkpKQorIAorIC8qIEMrKyAqLwor IAorQEAgLTExNzYsNiArMTI4NSwxMCBAQCBzdHJ1Y3QgYnVpbHRpbl90eXBlCisgICAgICAoKikg KCkgY2FuIHNlcnZlciBhcyBhIGdlbmVyaWMgZnVuY3Rpb24gcG9pbnRlci4gICovCisgICBzdHJ1 Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX3B0cjsKKyAKKysgIC8qIGBmdW5jdGlvbiByZXR1cm5pbmcg cG9pbnRlciB0byBmdW5jdGlvbiAocmV0dXJuaW5nIHZvaWQpJyB0eXBlLgorKyAgICAgVGhlIGZp bmFsIHZvaWQgcmV0dXJuIHR5cGUgaXMgbm90IHNpZ25pZmljYW50IGZvciBpdC4gICovCisrICBz dHJ1Y3QgdHlwZSAqYnVpbHRpbl9mdW5jX2Z1bmM7CiArCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJs aXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJz aW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0 IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0 IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRO RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LgorIAorICAgLyogU3BlY2lhbC1wdXJwb3NlIHR5cGVzLiAgKi8KKyAKK0BAIC0xMjE2 LDYgKzEzMjksOCBAQCBzdHJ1Y3Qgb2JqZmlsZV90eXBlCisgCisgICAvKiBUeXBlcyB1c2VkIGZv ciBzeW1ib2xzIHdpdGggbm8gZGVidWcgaW5mb3JtYXRpb24uICAqLworICAgc3RydWN0IHR5cGUg Km5vZGVidWdfdGV4dF9zeW1ib2w7CisrICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190ZXh0X2dudV9p ZnVuY19zeW1ib2w7CisrICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z19nb3RfcGx0X3N5bWJvbDsKKyAg IHN0cnVjdCB0eXBlICpub2RlYnVnX2RhdGFfc3ltYm9sOworICAgc3RydWN0IHR5cGUgKm5vZGVi dWdfdW5rbm93bl9zeW1ib2w7CisgICBzdHJ1Y3QgdHlwZSAqbm9kZWJ1Z190bHNfc3ltYm9sOwor QEAgLTEzNjMsNiArMTQ3OCwxOCBAQCBleHRlcm4gc3RydWN0IHR5cGUgKmNyZWF0ZV9hcnJheV90 eXBlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdHlwZSAqLAorIAkJCQkgICAgICAgc3RydWN0IHR5 cGUgKik7CisgZXh0ZXJuIHN0cnVjdCB0eXBlICpsb29rdXBfYXJyYXlfcmFuZ2VfdHlwZSAoc3Ry dWN0IHR5cGUgKiwgaW50LCBpbnQpOworIAorK2V4dGVybiBDT1JFX0FERFIgdHlwZV9yYW5nZV9h bnlfZmllbGRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlLAorKwkJCQkJCWludCBm aWVsZG5vKTsKICsKLStpbXBvcnQgZ2RiCi0rCi0rY2xhc3MgUGFob2xlIChnZGIuQ29tbWFuZCk6 Ci0rICAgICIiIlNob3cgdGhlIGhvbGVzIGluIGEgc3RydWN0dXJlLgotK1RoaXMgY29tbWFuZCB0 YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSB0eXBlIG5hbWUuCi0rSXQgcHJpbnRzIHRoZSB0eXBl IGFuZCBkaXNwbGF5cyBjb21tZW50cyBzaG93aW5nIHdoZXJlIGhvbGVzIGFyZS4iIiIKLSsKLSsg ICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChQYWhvbGUsIHNlbGYpLl9f aW5pdF9fICgicGFob2xlIiwgZ2RiLkNPTU1BTkRfTk9ORSwKLSsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfU1lNQk9MKQotKwotKyAgICBkZWYgcGFo b2xlIChzZWxmLCB0eXBlLCBsZXZlbCwgbmFtZSk6Ci0rICAgICAgICBpZiBuYW1lIGlzIE5vbmU6 Ci0rICAgICAgICAgICAgbmFtZSA9ICcnCi0rICAgICAgICB0YWcgPSB0eXBlLnRhZwotKyAgICAg ICAgaWYgdGFnIGlzIE5vbmU6Ci0rICAgICAgICAgICAgdGFnID0gJycKLSsgICAgICAgIHByaW50 ICclc3N0cnVjdCAlcyB7JyAlICgnICcgKiAoMiAqIGxldmVsKSwgdGFnKQotKyAgICAgICAgYml0 cG9zID0gMAotKyAgICAgICAgZm9yIGZpZWxkIGluIHR5cGUuZmllbGRzICgpOgotKyAgICAgICAg ICAgICMgU2tpcCBzdGF0aWMgZmllbGRzLgotKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyIChm aWVsZCwgKCdiaXRwb3MnKSk6Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rCi0rICAgICAg ICAgICAgZnR5cGUgPSBmaWVsZC50eXBlLnN0cmlwX3R5cGVkZWZzKCkKLSsKLSsgICAgICAgICAg ICBpZiBiaXRwb3MgIT0gZmllbGQuYml0cG9zOgotKyAgICAgICAgICAgICAgICBob2xlID0gZmll bGQuYml0cG9zIC0gYml0cG9zCi0rICAgICAgICAgICAgICAgIHByaW50ICcgIC8qIFhYWCAlZCBi aXQgaG9sZSwgdHJ5IHRvIHBhY2sgKi8nICUgaG9sZQotKyAgICAgICAgICAgICAgICBiaXRwb3Mg PSBmaWVsZC5iaXRwb3MKLSsgICAgICAgICAgICBpZiBmaWVsZC5iaXRzaXplID4gMDoKLSsgICAg ICAgICAgICAgICAgZmllbGRzaXplID0gZmllbGQuYml0c2l6ZQotKyAgICAgICAgICAgIGVsc2U6 Ci0rICAgICAgICAgICAgICAgICMgVEFSR0VUX0NIQVJfQklUIGhlcmUuLi4KLSsgICAgICAgICAg ICAgICAgZmllbGRzaXplID0gOCAqIGZ0eXBlLnNpemVvZgotKwotKyAgICAgICAgICAgICMgVEFS R0VUX0NIQVJfQklUCi0rICAgICAgICAgICAgcHJpbnQgJyAvKiAlM2QgJTNkICovJyAlIChpbnQg KGJpdHBvcyAvIDgpLCBpbnQgKGZpZWxkc2l6ZSAvIDgpKSwKLSsgICAgICAgICAgICBiaXRwb3Mg PSBiaXRwb3MgKyBmaWVsZHNpemUKLSsKLSsgICAgICAgICAgICBpZiBmdHlwZS5jb2RlID09IGdk Yi5UWVBFX0NPREVfU1RSVUNUOgotKyAgICAgICAgICAgICAgICBzZWxmLnBhaG9sZSAoZnR5cGUs IGxldmVsICsgMSwgZmllbGQubmFtZSkKLSsgICAgICAgICAgICBlbHNlOgotKyAgICAgICAgICAg ICAgICBwcmludCAnICcgKiAoMiArIDIgKiBsZXZlbCksCi0rICAgICAgICAgICAgICAgIHByaW50 ICclcyAlcycgJSAoc3RyIChmdHlwZSksIGZpZWxkLm5hbWUpCi0rCi0rICAgICAgICBwcmludCAn ICcgKiAoMTQgKyAyICogbGV2ZWwpLAotKyAgICAgICAgcHJpbnQgJ30gJXMnICUgbmFtZQotKwot KyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsgICAgICAgIHR5cGUgPSBn ZGIubG9va3VwX3R5cGUgKGFyZykKLSsgICAgICAgIHR5cGUgPSB0eXBlLnN0cmlwX3R5cGVkZWZz ICgpCi0rICAgICAgICBpZiB0eXBlLmNvZGUgIT0gZ2RiLlRZUEVfQ09ERV9TVFJVQ1Q6Ci0rICAg ICAgICAgICAgcmFpc2UgVHlwZUVycm9yLCAnJXMgaXMgbm90IGEgc3RydWN0IHR5cGUnICUgYXJn Ci0rICAgICAgICBwcmludCAnICcgKiAxNCwKLSsgICAgICAgIHNlbGYucGFob2xlICh0eXBlLCAw LCAnJykKLSsKLStQYWhvbGUoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL3JlcXVpcmUucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5Ci1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMWZiYzFlOAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQotQEAgLTAsMCAr MSw1NyBAQAotKyMgRGVtYW5kLWxvYWRpbmcgY29tbWFuZHMuCisrZXh0ZXJuIGludCB0eXBlX3Jh bmdlX2hpZ2hfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBlICpyYW5nZV90eXBlKTsKICsKLSsj IENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K KytleHRlcm4gaW50IHR5cGVfcmFuZ2VfY291bnRfYm91bmRfaW50ZXJuYWwgKHN0cnVjdCB0eXBl ICpyYW5nZV90eXBlKTsKICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisrZXh0ZXJu IENPUkVfQUREUiB0eXBlX3JhbmdlX2J5dGVfc3RyaWRlX2ludGVybmFsIChzdHJ1Y3QgdHlwZSAq cmFuZ2VfdHlwZSwKKysJCQkJCQkgIHN0cnVjdCB0eXBlICplbGVtZW50X3R5cGUpOwogKwotK2lt cG9ydCBnZGIKLStpbXBvcnQgb3MKLSsKLStjbGFzcyBSZXF1aXJlQ29tbWFuZCAoZ2RiLkNvbW1h bmQpOgotKyAgICAiIiJQcmVmaXggY29tbWFuZCBmb3IgcmVxdWlyaW5nIGZlYXR1cmVzLiIiIgot KwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFJlcXVpcmVDb21t YW5kLCBzZWxmKS5fX2luaXRfXyAoInJlcXVpcmUiLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ2RiLkNPTU1BTkRfU1VQUE9SVCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYi5DT01QTEVURV9OT05FLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKLSsK LStjbGFzcyBSZXF1aXJlU3ViY29tbWFuZCAoZ2RiLkNvbW1hbmQpOgotKyAgICAiIiJEZW1hbmQt bG9hZCBhIGNvbW1hbmQgYnkgbmFtZS4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmLCBu YW1lKToKLSsgICAgICAgIHNlbGYuX19kb2NfXyA9ICJEZW1hbmQtbG9hZCBhICVzIGJ5IG5hbWUu IiAlIG5hbWUKLSsgICAgICAgIHN1cGVyIChSZXF1aXJlU3ViY29tbWFuZCwgc2VsZikuX19pbml0 X18gKCJyZXF1aXJlICVzIiAlIG5hbWUsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JUKQotKyAgICAgICAgc2VsZi5u YW1lID0gbmFtZQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZyb21fdHR5KToKLSsg ICAgICAgIGZvciBjbWQgaW4gYXJnLnNwbGl0KCk6Ci0rICAgICAgICAgICAgZXhlYyAoJ2ltcG9y dCBnZGIuJyArIHNlbGYubmFtZSArICcuJyArIGNtZCwgZ2xvYmFscyAoKSkKLSsKLSsgICAgZGVm IGNvbXBsZXRlIChzZWxmLCB0ZXh0LCB3b3JkKToKLSsgICAgICAgIGRpciA9IGdkYi5weXRob25k aXIgKyAnL2dkYi8nICsgc2VsZi5uYW1lCi0rICAgICAgICByZXN1bHQgPSBbXQotKyAgICAgICAg Zm9yIGZpbGUgaW4gb3MubGlzdGRpcihkaXIpOgotKyAgICAgICAgICAgIGlmIG5vdCBmaWxlLnN0 YXJ0c3dpdGggKHdvcmQpIG9yIG5vdCBmaWxlLmVuZHN3aXRoICgnLnB5Jyk6Ci0rICAgICAgICAg ICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgZmVhdHVyZSA9IGZpbGVbMDotM10KLSsgICAg ICAgICAgICBpZiBmZWF0dXJlID09ICdyZXF1aXJlJyBvciBmZWF0dXJlID09ICdfX2luaXRfXyc6 Ci0rICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0rICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCAo ZmVhdHVyZSkKLSsgICAgICAgIHJldHVybiByZXN1bHQKLSsKLStSZXF1aXJlQ29tbWFuZCgpCi0r UmVxdWlyZVN1YmNvbW1hbmQoImNvbW1hbmQiKQotK1JlcXVpcmVTdWJjb21tYW5kKCJmdW5jdGlv biIpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvc2F2ZV9icmVha3Bv aW50cy5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3NhdmVfYnJlYWtwb2ludHMucHkK LW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi42MTQzMTg3Ci0tLS0gL2Rldi9u dWxsCi0rKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9zYXZlX2JyZWFrcG9pbnRzLnB5 Ci1AQCAtMCwwICsxLDY1IEBACi0rIyBTYXZlIGJyZWFrcG9pbnRzLgorK2V4dGVybiB2b2lkIGZp bmFsaXplX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlKTsKICsKLSsjIENvcHlyaWdodCAoQykgMjAw OCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBleHRlcm4gc3RydWN0IHR5 cGUgKmNyZWF0ZV9zdHJpbmdfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKKyAJ CQkJCXN0cnVjdCB0eXBlICopOworIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX3N0cmluZ19y YW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAqLCBpbnQsIGludCk7CitAQCAtMTQwOCw2ICsxNTM1LDgg QEAgZXh0ZXJuIGludCBpc19wdWJsaWNfYW5jZXN0b3IgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0 eXBlICopOworIAorIGV4dGVybiBpbnQgaXNfdW5pcXVlX2FuY2VzdG9yIChzdHJ1Y3QgdHlwZSAq LCBzdHJ1Y3QgdmFsdWUgKik7CisgCisrZXh0ZXJuIHZvaWQgdHlwZV9tYXJrX3VzZWQgKHN0cnVj dCB0eXBlICp0eXBlKTsKICsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhl IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5z ZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGll ZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dy YW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgLyogT3Zl cmxvYWQgcmVzb2x1dGlvbiAqLworIAorICNkZWZpbmUgTEVOR1RIX01BVENIKGJ2KSAoKGJ2KS0+ cmFua1swXSkKK0BAIC0xNDc4LDEwICsxNjA3LDExIEBAIGV4dGVybiB2b2lkIG1haW50ZW5hbmNl X3ByaW50X3R5cGUgKGNoYXIgKiwgaW50KTsKKyAKKyBleHRlcm4gaHRhYl90IGNyZWF0ZV9jb3Bp ZWRfdHlwZXNfaGFzaCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOworIAorLWV4dGVybiBzdHJ1 Y3QgdHlwZSAqY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCist CQkJCQkgc3RydWN0IHR5cGUgKnR5cGUsCisrZXh0ZXJuIHN0cnVjdCB0eXBlICpjb3B5X3R5cGVf cmVjdXJzaXZlIChzdHJ1Y3QgdHlwZSAqdHlwZSwKKyAJCQkJCSBodGFiX3QgY29waWVkX3R5cGVz KTsKKyAKKyBleHRlcm4gc3RydWN0IHR5cGUgKmNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUg KnR5cGUpOworIAorK2V4dGVybiB2b2lkIGZyZWVfYWxsX3R5cGVzICh2b2lkKTsKICsKLStmcm9t IF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0raW1wb3J0IGdkYgotKwotK2NsYXNz IFNhdmVQcmVmaXhDb21tYW5kIChnZGIuQ29tbWFuZCk6Ci0rICAiUHJlZml4IGNvbW1hbmQgZm9y IHNhdmluZyB0aGluZ3MuIgotKwotKyAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgc3VwZXIg KFNhdmVQcmVmaXhDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNhdmUiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVVBQT1JULAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NUExF VEVfTk9ORSwgVHJ1ZSkKLSsKLStjbGFzcyBTYXZlQnJlYWtwb2ludHNDb21tYW5kIChnZGIuQ29t bWFuZCk6Ci0rICAgICIiIlNhdmUgdGhlIGN1cnJlbnQgYnJlYWtwb2ludHMgdG8gYSBmaWxlLgot K1RoaXMgY29tbWFuZCB0YWtlcyBhIHNpbmdsZSBhcmd1bWVudCwgYSBmaWxlIG5hbWUuCi0rVGhl IGJyZWFrcG9pbnRzIGNhbiBiZSByZXN0b3JlZCB1c2luZyB0aGUgJ3NvdXJjZScgY29tbWFuZC4i IiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChTYXZlQnJl YWtwb2ludHNDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoInNhdmUgYnJlYWtwb2ludHMiLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIu Q09NTUFORF9TVVBQT1JULAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBnZGIuQ09NUExFVEVfRklMRU5BTUUpCi0rCi0rICAgIGRlZiBpbnZv a2UgKHNlbGYsIGFyZywgZnJvbV90dHkpOgotKyAgICAgICAgc2VsZi5kb250X3JlcGVhdCAoKQot KyAgICAgICAgYnBzID0gZ2RiLmJyZWFrcG9pbnRzICgpCi0rICAgICAgICBpZiBicHMgaXMgTm9u ZToKLSsgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IsICdObyBicmVha3BvaW50cyB0byBz YXZlJwotKyAgICAgICAgd2l0aCBvcGVuIChhcmcuc3RyaXAgKCksICd3JykgYXMgZjoKLSsgICAg ICAgICAgICBmb3IgYnAgaW4gYnBzOgotKyAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAiYnJl YWsiLCBicC5sb2NhdGlvbiwKLSsgICAgICAgICAgICAgICAgaWYgYnAudGhyZWFkIGlzIG5vdCBO b25lOgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgIiB0aHJlYWQiLCBicC50aHJl YWQsCi0rICAgICAgICAgICAgICAgIGlmIGJwLmNvbmRpdGlvbiBpcyBub3QgTm9uZToKLSsgICAg ICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIgaWYiLCBicC5jb25kaXRpb24sCi0rICAgICAg ICAgICAgICAgIHByaW50ID4+IGYKLSsgICAgICAgICAgICAgICAgaWYgbm90IGJwLmVuYWJsZWQ6 Ci0rICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAiZGlzYWJsZSAkYnBudW0iCi0rICAg ICAgICAgICAgICAgICMgTm90ZTogd2UgZG9uJ3Qgc2F2ZSB0aGUgaWdub3JlIGNvdW50OyB0aGVy ZSBkb2Vzbid0Ci0rICAgICAgICAgICAgICAgICMgc2VlbSB0byBiZSBtdWNoIHBvaW50LgotKyAg ICAgICAgICAgICAgICBjb21tYW5kcyA9IGJwLmNvbW1hbmRzCi0rICAgICAgICAgICAgICAgIGlm IGNvbW1hbmRzIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwg ImNvbW1hbmRzIgotKyAgICAgICAgICAgICAgICAgICAgIyBOb3RlIHRoYXQgQ09NTUFORFMgaGFz IGEgdHJhaWxpbmcgbmV3bGluZS4KLSsgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIGNv bW1hbmRzLAotKyAgICAgICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgImVuZCIKLSsgICAgICAg ICAgICAgICAgcHJpbnQgPj4gZgotKwotK1NhdmVQcmVmaXhDb21tYW5kICgpCi0rU2F2ZUJyZWFr cG9pbnRzQ29tbWFuZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5k L3VwdG8ucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5Ci1uZXcgZmlsZSBt b2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZmFmNTRlZAotLS0tIC9kZXYvbnVsbAotKysrIGIv Z2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvdXB0by5weQotQEAgLTAsMCArMSwxMjkgQEAKLSsj IHVwdG8gY29tbWFuZC4KKyAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLworZGlmZiAtLWdpdCBhL2dk Yi9pMzg2LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKK2luZGV4IDRmY2UxYWMu LjE0NGE4OTkgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYworKysrIGIvZ2RiL2kz ODYtbGludXgtbmF0LmMKK0BAIC03NDcsNiArNzQ3LDIxIEBAIGkzODZfbGludXhfZHJfdW5zZXRf c3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCisgICAgIH0KKyB9CisgCisrLyogU2VlIGkzODZf ZHJfbG93X3R5cGUuZGV0YWNoLiAgRG8gbm90IHVzZSB3cmFwcGVycyBpMzg2X2xpbnV4X2RyX3Nl dF9jb250cm9sCisrICAgb3IgaTM4Nl9saW51eF9kcl9yZXNldF9hZGRyIGFzIHRoZXkgd291bGQg bW9kaWZ5IHRoZSByZWdpc3RlciBjYWNoZQorKyAgIChpMzg2X2xpbnV4X2RyKS4gICovCiArCi0r IyBDb3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrc3Rh dGljIHZvaWQKKytpMzg2X2xpbnV4X2RyX2RldGFjaCAodm9pZCkKKyt7CisrICBpbnQgcmVnbnVt OwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmli dXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0 IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMg ZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBX SVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m Ci0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysgIGkzODZfbGludXhfZHJfc2V0 IChpbmZlcmlvcl9wdGlkLCBEUl9DT05UUk9MLCAwKTsKKysgIGkzODZfbGludXhfZHJfdW5zZXRf c3RhdHVzICh+MFVMKTsKKysgIGZvciAocmVnbnVtID0gRFJfRklSU1RBRERSOyByZWdudW0gPD0g RFJfTEFTVEFERFI7IHJlZ251bSsrKQorKyAgICBpMzg2X2xpbnV4X2RyX3NldCAoaW5mZXJpb3Jf cHRpZCwgcmVnbnVtLCAwKTsKKyt9CiArCi0raW1wb3J0IGdkYgotK2ltcG9ydCByZQotK2Zyb20g Z2RiLkZyYW1lSXRlcmF0b3IgaW1wb3J0IEZyYW1lSXRlcmF0b3IKLStmcm9tIGdkYi5GcmFtZVdy YXBwZXIgaW1wb3J0IEZyYW1lV3JhcHBlcgotKwotK2NsYXNzIFVwdG9QcmVmaXggKGdkYi5Db21t YW5kKToKLSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChVcHRvUHJl Zml4LCBzZWxmKS5fX2luaXRfXyAoInVwdG8iLCBnZGIuQ09NTUFORF9TVEFDSywKLSsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4ID0gVHJ1ZSkKLSsKLStj bGFzcyBVcHRvSW1wbGVtZW50YXRpb24gKGdkYi5Db21tYW5kKToKLSsgICAgZGVmIF9faW5pdF9f IChzZWxmLCBzdWJjb21tYW5kKToKLSsgICAgICAgIHN1cGVyIChVcHRvSW1wbGVtZW50YXRpb24s IHNlbGYpLl9faW5pdF9fICgidXB0byAiICsgc3ViY29tbWFuZCwKLSsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGIuQ09NTUFORF9TVEFDSykKLSsK LSsgICAgZGVmIHNlYXJjaCAoc2VsZik6Ci0rICAgICAgICBzYXZlZCA9IGdkYi5zZWxlY3RlZF9m cmFtZSAoKQotKyAgICAgICAgaXRlciA9IEZyYW1lSXRlcmF0b3IgKHNhdmVkKQotKyAgICAgICAg Zm91bmQgPSBGYWxzZQotKyAgICAgICAgdHJ5OgotKyAgICAgICAgICAgIGZvciBmcmFtZSBpbiBp dGVyOgotKyAgICAgICAgICAgICAgICBmcmFtZS5zZWxlY3QgKCkKLSsgICAgICAgICAgICAgICAg dHJ5OgotKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5maWx0ZXIgKGZyYW1lKToKLSsgICAg ICAgICAgICAgICAgICAgICAgICB3cmFwcGVyID0gRnJhbWVXcmFwcGVyIChmcmFtZSkKLSsgICAg ICAgICAgICAgICAgICAgICAgICB3cmFwcGVyLmRlc2NyaWJlIChzeXMuc3Rkb3V0LCBGYWxzZSkK LSsgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KLSsgICAgICAgICAgICAgICAgZXhjZXB0 OgotKyAgICAgICAgICAgICAgICAgICAgcGFzcwotKyAgICAgICAgZXhjZXB0OgotKyAgICAgICAg ICAgIHBhc3MKLSsgICAgICAgIHNhdmVkLnNlbGVjdCAoKQotKyAgICAgICAgcmFpc2UgUnVudGlt ZUVycm9yLCAnQ291bGQgbm90IGZpbmQgYSBtYXRjaGluZyBmcmFtZScKLSsKLSsgICAgZGVmIGlu dm9rZSAoc2VsZiwgYXJnLCBmcm9tX3R0eSk6Ci0rICAgICAgICBzZWxmLnJ4ID0gcmUuY29tcGls ZSAoYXJnKQotKyAgICAgICAgc2VsZi5zZWFyY2ggKCkKLSsKLStjbGFzcyBVcHRvU3ltYm9sQ29t bWFuZCAoVXB0b0ltcGxlbWVudGF0aW9uKToKLSsgICAgIiIiU2VsZWN0IGFuZCBwcmludCBzb21l IGNhbGxpbmcgc3RhY2sgZnJhbWUsIGJhc2VkIG9uIHN5bWJvbC4KLStUaGUgYXJndW1lbnQgaXMg YSByZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCi0rc3RhY2ss IHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9zZSBzeW1ib2wgbWF0Y2hlcyB0aGUgcmVn dWxhcgotK2V4cHJlc3Npb24uIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAg ICAgICBzdXBlciAoVXB0b1N5bWJvbENvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgic3ltYm9sIikK LSsKLSsgICAgZGVmIGZpbHRlciAoc2VsZiwgZnJhbWUpOgotKyAgICAgICAgbmFtZSA9IGZyYW1l Lm5hbWUgKCkKLSsgICAgICAgIGlmIG5hbWUgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgaWYg c2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICByZXR1 cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJuIEZhbHNlCi0rCi0rY2xhc3MgVXB0b1NvdXJjZUNvbW1h bmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6Ci0rICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBj YWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNlZCBvbiBzb3VyY2UgZmlsZS4KLStUaGUgYXJndW1lbnQg aXMgYSByZWd1bGFyIGV4cHJlc3Npb24uICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCi0rc3Rh Y2ssIHN0b3BwaW5nIGF0IHRoZSBmaXJzdCBmcmFtZSB3aG9zZSBzb3VyY2UgZmlsZSBuYW1lIG1h dGNoZXMgdGhlCi0rcmVndWxhciBleHByZXNzaW9uLiIiIgotKwotKyAgICBkZWYgX19pbml0X18g KHNlbGYpOgotKyAgICAgICAgc3VwZXIgKFVwdG9Tb3VyY2VDb21tYW5kLCBzZWxmKS5fX2luaXRf XyAoInNvdXJjZSIpCi0rCi0rICAgIGRlZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAg IG5hbWUgPSBmcmFtZS5maW5kX3NhbCAoKS5zeW10YWIuZmlsZW5hbWUKLSsgICAgICAgIGlmIG5h bWUgaXMgbm90IE5vbmU6Ci0rICAgICAgICAgICAgaWYgc2VsZi5yeC5zZWFyY2ggKG5hbWUpIGlz IG5vdCBOb25lOgotKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgcmV0dXJu IEZhbHNlCi0rCi0rY2xhc3MgVXB0b09iamVjdENvbW1hbmQgKFVwdG9JbXBsZW1lbnRhdGlvbik6 Ci0rICAgICIiIlNlbGVjdCBhbmQgcHJpbnQgc29tZSBjYWxsaW5nIHN0YWNrIGZyYW1lLCBiYXNl ZCBvbiBvYmplY3QgZmlsZS4KLStUaGUgYXJndW1lbnQgaXMgYSByZWd1bGFyIGV4cHJlc3Npb24u ICBUaGlzIGNvbW1hbmQgbW92ZXMgdXAgdGhlCi0rc3RhY2ssIHN0b3BwaW5nIGF0IHRoZSBmaXJz dCBmcmFtZSB3aG9zZSBvYmplY3QgZmlsZSBuYW1lIG1hdGNoZXMgdGhlCi0rcmVndWxhciBleHBy ZXNzaW9uLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKyAgICAgICAgc3VwZXIg KFVwdG9PYmplY3RDb21tYW5kLCBzZWxmKS5fX2luaXRfXyAoIm9iamVjdCIpCi0rCi0rICAgIGRl ZiBmaWx0ZXIgKHNlbGYsIGZyYW1lKToKLSsgICAgICAgIG5hbWUgPSBmcmFtZS5maW5kX3NhbCAo KS5zeW10YWIub2JqZmlsZS5maWxlbmFtZQotKyAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToK LSsgICAgICAgICAgICBpZiBzZWxmLnJ4LnNlYXJjaCAobmFtZSkgaXMgbm90IE5vbmU6Ci0rICAg ICAgICAgICAgICAgIHJldHVybiBUcnVlCi0rICAgICAgICByZXR1cm4gRmFsc2UKLSsKLStjbGFz cyBVcHRvV2hlcmVDb21tYW5kIChVcHRvSW1wbGVtZW50YXRpb24pOgotKyAgICAiIiJTZWxlY3Qg YW5kIHByaW50IHNvbWUgY2FsbGluZyBzdGFjayBmcmFtZSwgYmFzZWQgb24gZXhwcmVzc2lvbi4K LStUaGUgYXJndW1lbnQgaXMgYW4gZXhwcmVzc2lvbi4gIFRoaXMgY29tbWFuZCBtb3ZlcyB1cCB0 aGUgc3RhY2ssCi0rcGFyc2luZyBhbmQgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbiBpbiBlYWNo IGZyYW1lLiAgVGhpcyBzdG9wcyB3aGVuCi0rdGhlIGV4cHJlc3Npb24gZXZhbHVhdGVzIHRvIGEg bm9uLXplcm8gKHRydWUpIHZhbHVlLiIiIgotKwotKyAgICBkZWYgX19pbml0X18gKHNlbGYpOgot KyAgICAgICAgc3VwZXIgKFVwdG9XaGVyZUNvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgid2hlcmUi KQotKwotKyAgICBkZWYgZmlsdGVyIChzZWxmLCBmcmFtZSk6Ci0rICAgICAgICB0cnk6Ci0rICAg ICAgICAgICAgaWYgZ2RiLnBhcnNlX2FuZF9ldmFsIChzZWxmLmV4cHJlc3Npb24pOgotKyAgICAg ICAgICAgICAgICByZXR1cm4gVHJ1ZQotKyAgICAgICAgZXhjZXB0OgotKyAgICAgICAgICAgIHBh c3MKLSsgICAgICAgIHJldHVybiBGYWxzZQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcs IGZyb21fdHR5KToKLSsgICAgICAgIHNlbGYuZXhwcmVzc2lvbiA9IGFyZwotKyAgICAgICAgc2Vs Zi5zZWFyY2ggKCkKLSsKLStVcHRvUHJlZml4ICgpCi0rVXB0b1N5bWJvbENvbW1hbmQgKCkKLStV cHRvU291cmNlQ29tbWFuZCAoKQotK1VwdG9PYmplY3RDb21tYW5kICgpCi0rVXB0b1doZXJlQ29t bWFuZCAoKQotZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRf Xy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQotbmV3IGZpbGUg bW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjhiMTM3ODkKLS0tLSAvZGV2L251bGwKLSsrKyBi L2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9fX2luaXRfXy5weQotQEAgLTAsMCArMSBAQAor IHN0YXRpYyB2b2lkCisgaTM4Nl9saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyB7CitA QCAtOTc2LDYgKzk5MSw3IEBAIF9pbml0aWFsaXplX2kzODZfbGludXhfbmF0ICh2b2lkKQorICAg aTM4Nl9kcl9sb3cucmVzZXRfYWRkciA9IGkzODZfbGludXhfZHJfcmVzZXRfYWRkcjsKKyAgIGkz ODZfZHJfbG93LmdldF9zdGF0dXMgPSBpMzg2X2xpbnV4X2RyX2dldF9zdGF0dXM7CisgICBpMzg2 X2RyX2xvdy51bnNldF9zdGF0dXMgPSBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1czsKKysgIGkz ODZfZHJfbG93LmRldGFjaCA9IGkzODZfbGludXhfZHJfZGV0YWNoOworICAgaTM4Nl9zZXRfZGVi dWdfcmVnaXN0ZXJfbGVuZ3RoICg0KTsKKyAKKyAgIC8qIE92ZXJyaWRlIHRoZSBkZWZhdWx0IHB0 cmFjZSByZXN1bWUgbWV0aG9kLiAgKi8KK2RpZmYgLS1naXQgYS9nZGIvaTM4Ni1uYXQuYyBiL2dk Yi9pMzg2LW5hdC5jCitpbmRleCBlYWEzNjQ0Li4wOTIxYzdlIDEwMDY0NAorLS0tIGEvZ2RiL2kz ODYtbmF0LmMKKysrKyBiL2dkYi9pMzg2LW5hdC5jCitAQCAtNTMzLDYgKzUzMywxNyBAQCBpMzg2 X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUsCisg ICByZXR1cm4gcmV0dmFsOworIH0KKyAKKysvKiBTZWUgdGFyZ2V0X2RldGFjaF93YXRjaHBvaW50 cy4gICovCiArCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxl cl9pcy5weSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKLW5ldyBm aWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yYjljNWM3Ci0tLS0gL2Rldi9udWxsCi0r KysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5Ci1AQCAtMCwwICsx LDU4IEBACi0rIyBDYWxsZXItaXMgZnVuY3Rpb25zLgorK3N0YXRpYyBpbnQKKytpMzg2X2RldGFj aF93YXRjaHBvaW50cyAodm9pZCkKKyt7CisrICBpZiAoaTM4Nl9kcl9sb3cuZGV0YWNoKQorKyAg ICBpMzg2X2RyX2xvdy5kZXRhY2ggKCk7CiArCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICByZXR1cm4gMDsKKyt9CiArCi0rIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1v ZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVp dGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFu eSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0 aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJ TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdO VSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cu Z251Lm9yZy9saWNlbnNlcy8+LgorIC8qIFJldHVybiBub24temVybyBpZiB3ZSBjYW4gd2F0Y2gg YSBtZW1vcnkgcmVnaW9uIHRoYXQgc3RhcnRzIGF0CisgICAgYWRkcmVzcyBBRERSIGFuZCB3aG9z ZSBsZW5ndGggaXMgTEVOIGJ5dGVzLiAgKi8KKyAKK0BAIC02ODUsNiArNjk2LDcgQEAgaTM4Nl91 c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+dG9fc3RvcHBlZF9k YXRhX2FkZHJlc3MgPSBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzOworICAgdC0+dG9faW5zZXJ0 X3dhdGNocG9pbnQgPSBpMzg2X2luc2VydF93YXRjaHBvaW50OworICAgdC0+dG9fcmVtb3ZlX3dh dGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNo cG9pbnRzID0gaTM4Nl9kZXRhY2hfd2F0Y2hwb2ludHM7CisgICB0LT50b19pbnNlcnRfaHdfYnJl YWtwb2ludCA9IGkzODZfaW5zZXJ0X2h3X2JyZWFrcG9pbnQ7CisgICB0LT50b19yZW1vdmVfaHdf YnJlYWtwb2ludCA9IGkzODZfcmVtb3ZlX2h3X2JyZWFrcG9pbnQ7CisgfQorZGlmZiAtLWdpdCBh L2dkYi9pMzg2LW5hdC5oIGIvZ2RiL2kzODYtbmF0LmgKK2luZGV4IDczMTdlN2QuLmVhOTE0YTUg MTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1uYXQuaAorKysrIGIvZ2RiL2kzODYtbmF0LmgKK0BAIC02 Miw2ICs2MiwxMCBAQCBleHRlcm4gdm9pZCBpMzg2X3VzZV93YXRjaHBvaW50cyAoc3RydWN0IHRh cmdldF9vcHMgKik7CisgICAgICAgdW5zZXRfc3RhdHVzICAgICAgICAgICAgIC0tIHVuc2V0IHRo ZSBzcGVjaWZpZWQgYml0cyBvZiB0aGUgZGVidWcKKyAJCQkJICBzdGF0dXMgKERSNikgcmVnaXN0 ZXIgZm9yIGFsbCBMV1BzCisgCisrICAgICAgZGV0YWNoICAgICAgICAgICAgICAgICAgIC0tIGNs ZWFyIGFsbCBkZWJ1ZyByZWdpc3RlcnMgb2Ygb25seSB0aGUKKysJCQkJICBJTkZFUklPUl9QVElE IHRhc2sgd2l0aG91dCBhZmZlY3RpbmcgYW55CisrCQkJCSAgcmVnaXN0ZXIgY2FjaGVzLgogKwot K2ltcG9ydCBnZGIKLStpbXBvcnQgcmUKLSsKLStjbGFzcyBDYWxsZXJJcyAoZ2RiLkZ1bmN0aW9u KToKLSsgICAgIiIiUmV0dXJuIFRydWUgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncyBuYW1lIGlz IGVxdWFsIHRvIGEgc3RyaW5nLgotK1RoaXMgZnVuY3Rpb24gdGFrZXMgb25lIG9yIHR3byBhcmd1 bWVudHMuCi0rVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHRoZSBuYW1lIG9mIGEgZnVuY3Rpb247IGlm IHRoZSBjYWxsaW5nIGZ1bmN0aW9uJ3MKLStuYW1lIGlzIGVxdWFsIHRvIHRoaXMgYXJndW1lbnQs IHRoaXMgZnVuY3Rpb24gcmV0dXJucyBUcnVlLgotK1RoZSBvcHRpb25hbCBzZWNvbmQgYXJndW1l bnQgdGVsbHMgdGhpcyBmdW5jdGlvbiBob3cgbWFueSBzdGFjayBmcmFtZXMKLSt0byB0cmF2ZXJz ZSB0byBmaW5kIHRoZSBjYWxsaW5nIGZ1bmN0aW9uLiAgVGhlIGRlZmF1bHQgaXMgMS4iIiIKLSsK LSsgICAgZGVmIF9faW5pdF9fIChzZWxmKToKLSsgICAgICAgIHN1cGVyIChDYWxsZXJJcywgc2Vs ZikuX19pbml0X18gKCJjYWxsZXJfaXMiKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBuYW1l LCBuZnJhbWVzID0gMSk6Ci0rICAgICAgICBmcmFtZSA9IGdkYi5zZWxlY3RlZF9mcmFtZSAoKQot KyAgICAgICAgd2hpbGUgbmZyYW1lcyA+IDA6Ci0rICAgICAgICAgICAgZnJhbWUgPSBmcmFtZS5v bGRlciAoKQotKyAgICAgICAgICAgIG5mcmFtZXMgPSBuZnJhbWVzIC0gMQotKyAgICAgICAgcmV0 dXJuIGZyYW1lLm5hbWUgKCkgPT0gbmFtZS5zdHJpbmcgKCkKLSsKLStjbGFzcyBDYWxsZXJNYXRj aGVzIChnZGIuRnVuY3Rpb24pOgotKyAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0aGUgY2FsbGluZyBm dW5jdGlvbidzIG5hbWUgbWF0Y2hlcyBhIHN0cmluZy4KLStUaGlzIGZ1bmN0aW9uIHRha2VzIG9u ZSBvciB0d28gYXJndW1lbnRzLgotK1RoZSBmaXJzdCBhcmd1bWVudCBpcyBhIHJlZ3VsYXIgZXhw cmVzc2lvbjsgaWYgdGhlIGNhbGxpbmcgZnVuY3Rpb24ncwotK25hbWUgaXMgbWF0Y2hlZCBieSB0 aGlzIGFyZ3VtZW50LCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgVHJ1ZS4KLStUaGUgb3B0aW9uYWwg c2Vjb25kIGFyZ3VtZW50IHRlbGxzIHRoaXMgZnVuY3Rpb24gaG93IG1hbnkgc3RhY2sgZnJhbWVz Ci0rdG8gdHJhdmVyc2UgdG8gZmluZCB0aGUgY2FsbGluZyBmdW5jdGlvbi4gIFRoZSBkZWZhdWx0 IGlzIDEuIiIiCi0rCi0rICAgIGRlZiBfX2luaXRfXyAoc2VsZik6Ci0rICAgICAgICBzdXBlciAo Q2FsbGVyTWF0Y2hlcywgc2VsZikuX19pbml0X18gKCJjYWxsZXJfbWF0Y2hlcyIpCi0rCi0rICAg IGRlZiBpbnZva2UgKHNlbGYsIG5hbWUsIG5mcmFtZXMgPSAxKToKLSsgICAgICAgIGZyYW1lID0g Z2RiLnNlbGVjdGVkX2ZyYW1lICgpCi0rICAgICAgICB3aGlsZSBuZnJhbWVzID4gMDoKLSsgICAg ICAgICAgICBmcmFtZSA9IGZyYW1lLm9sZGVyICgpCi0rICAgICAgICAgICAgbmZyYW1lcyA9IG5m cmFtZXMgLSAxCi0rICAgICAgICByZXR1cm4gcmUubWF0Y2ggKG5hbWUuc3RyaW5nICgpLCBmcmFt ZS5uYW1lICgpKSBpcyBub3QgTm9uZQotKwotK0NhbGxlcklzKCkKLStDYWxsZXJNYXRjaGVzKCkK LWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLW5ldyBmaWxlIG1vZGUgMTAw NjQ0Ci1pbmRleCAwMDAwMDAwLi5kZWJiM2JiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvcHl0 aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKLUBAIC0wLDAgKzEsNDcgQEAKLSsjIElu LXNjb3BlIGZ1bmN0aW9uLgorICAgIEFkZGl0aW9uYWxseSwgdGhlIG5hdGl2ZSBmaWxlIHNob3Vs ZCBzZXQgdGhlIGRlYnVnX3JlZ2lzdGVyX2xlbmd0aAorICAgIGZpZWxkIHRvIDQgb3IgOCBkZXBl bmRpbmcgb24gdGhlIG51bWJlciBvZiBieXRlcyB1c2VkIGZvcgorICAgIGRldWJnIHJlZ2lzdGVy cy4gICovCitAQCAtNzMsNiArNzcsNyBAQCBzdHJ1Y3QgaTM4Nl9kcl9sb3dfdHlwZQorICAgICB2 b2lkICgqcmVzZXRfYWRkcikgKGludCk7CisgICAgIHVuc2lnbmVkIGxvbmcgKCpnZXRfc3RhdHVz KSAodm9pZCk7CisgICAgIHZvaWQgKCp1bnNldF9zdGF0dXMpICh1bnNpZ25lZCBsb25nKTsKKysg ICAgdm9pZCAoKmRldGFjaCkgKHZvaWQpOworICAgICBpbnQgZGVidWdfcmVnaXN0ZXJfbGVuZ3Ro OworICAgfTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvaW5mY2FsbC5jIGIvZ2RiL2luZmNhbGwuYwor aW5kZXggN2Y2MGU1Ni4uYjdhY2ZjNiAxMDA2NDQKKy0tLSBhL2dkYi9pbmZjYWxsLmMKKysrKyBi L2dkYi9pbmZjYWxsLmMKK0BAIC0yMjUsNiArMjI1LDU2IEBAIHZhbHVlX2FyZ19jb2VyY2UgKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1Y3QgdmFsdWUgKmFyZywKKyAgIHJldHVybiB2YWx1 ZV9jYXN0ICh0eXBlLCBhcmcpOworIH0KKyAKKysvKiBDYWxsIGdudS1pZnVuYyAoU1RUX0dOVV9J RlVOQyAtIGEgZnVuY3Rpb24gcmV0dXJuaW5nIGFkZHJlc3NzIG9mIGEgcmVhbAorKyAgIGZ1bmN0 aW9uIHRvIGNhbGwpLiAgUEMgaXMgdGhlIGdudS1pZnVuYyBmdW5jdGlvbiBlbnRyeS4gIEZ1bmN0 aW9uIHJldHVybnMKKysgICBmdW5jdGlvbiBlbnRyeSBvZiB0aGUgZ251LWlmdW5jLXJlc29sdmVk IGZ1bmN0aW9uIHRvIGNhbGwuICBJZiBSRVRWQUxfVFlQRVAKKysgICBpcyBub3QgTlVMTCBmaWxs IGluICpSRVRWQUxfVFlQRVAgd2l0aCByZXR1cm4gdHlwZSBvZiB0aGUgZ251LWlmdW5jLXJlc29s dmVkCisrICAgZnVuY3Rpb24gdG8gY2FsbC4gIEtlZXAgKlJFVFZBTF9UWVBFUCBpbnRhY3QgaWYg dGhlIHJldHVybiB0eXBlIGNvdWxkIG5vdCBiZQorKyAgIGZvdW5kLiAgKi8KICsKLSsjIENvcHly aWdodCAoQykgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKytzdGF0aWMgQ09S RV9BRERSCisrZ251X2lmdW5jX3Jlc29sdmUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBDT1JF X0FERFIgcGMpCisreworKyAgY2hhciAqbmFtZV9hdF9wYzsKKysgIENPUkVfQUREUiBzdGFydF9h dF9wYywgYWRkcmVzczsKKysgIHN0cnVjdCB0eXBlICpmdW5jX2Z1bmNfdHlwZSA9IGJ1aWx0aW5f dHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fZnVuY19mdW5jOworKyAgc3RydWN0IHZhbHVlICpmdW5j dGlvbiwgKmFkZHJlc3NfdmFsOwogKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7 IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r IyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0r IyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl IHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv cHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMg cHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysg IGlmIChmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZV9hdF9wYywgJnN0YXJ0X2F0 X3BjLCBOVUxMKQorKyAgICAgICYmIHN0YXJ0X2F0X3BjID09IHBjKQorKyAgICB7CisrICAgICAg aWYgKHJlc29sdmVfZ251X2lmdW5jIChuYW1lX2F0X3BjLCAmYWRkcmVzcykpCisrCXJldHVybiBh ZGRyZXNzOworKyAgICB9CisrICBlbHNlCisrICAgIG5hbWVfYXRfcGMgPSBOVUxMOwogKwotK2lt cG9ydCBnZGIKKysgIGZ1bmN0aW9uID0gYWxsb2NhdGVfdmFsdWUgKGZ1bmNfZnVuY190eXBlKTsK KysgIHNldF92YWx1ZV9hZGRyZXNzIChmdW5jdGlvbiwgcGMpOwogKwotK2NsYXNzIEluU2NvcGUg KGdkYi5GdW5jdGlvbik6Ci0rICAgICIiIlJldHVybiBUcnVlIGlmIGFsbCB0aGUgZ2l2ZW4gdmFy aWFibGVzIG9yIG1hY3JvcyBhcmUgaW4gc2NvcGUuCi0rVGFrZXMgb25lIGFyZ3VtZW50IGZvciBl YWNoIHZhcmlhYmxlIG5hbWUgdG8gYmUgY2hlY2tlZC4iIiIKKysgIC8qIGdudS1pZnVuY3MgaGF2 ZSBubyBhcmd1bWVudHMuICBGVU5DVElPTiBpcyB0aGUgZnVuY3Rpb24gZW50cnkgYWRkcmVzcwor KyAgICAgd2hpbGUgQUREUkVTUyBpcyBhIHBvc3NpYmxlIGZ1bmN0aW9uIGRlc2NyaXB0b3IuLiAg Ki8KKysgIGFkZHJlc3NfdmFsID0gY2FsbF9mdW5jdGlvbl9ieV9oYW5kIChmdW5jdGlvbiwgMCwg TlVMTCk7CisrICBhZGRyZXNzID0gdmFsdWVfYXNfYWRkcmVzcyAoYWRkcmVzc192YWwpOwogKwot KyAgICBkZWYgX19pbml0X18gKHNlbGYpOgotKwlzdXBlciAoSW5TY29wZSwgc2VsZikuX19pbml0 X18gKCJpbl9zY29wZSIpCisrICBpZiAobmFtZV9hdF9wYykKKysgICAgZ251X2lmdW5jX3JlY29y ZF9jYWNoZSAoZ2RiYXJjaCwgbmFtZV9hdF9wYywgYWRkcmVzcyk7CiArCi0rICAgIGRlZiBpbnZv a2UgKHNlbGYsICp2YXJzKToKLSsgICAgICAgIGlmIGxlbiAodmFycykgPT0gMDoKLSsJICAgIHJh aXNlIFR5cGVFcnJvciwgImluX3Njb3BlIHRha2VzIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIKKysg IHJldHVybiBnZGJhcmNoX2NvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIChnZGJhcmNoLCBhZGRy ZXNzLCAmY3VycmVudF90YXJnZXQpOworK30KICsKLSsgICAgICAgICMgZ2RiLlZhbHVlIGlzbid0 IGhhc2hhYmxlIHNvIGl0IGNhbid0IGJlIHB1dCBpbiBhIG1hcC4KLSsJIyBDb252ZXJ0IHRvIHN0 cmluZyBmaXJzdC4KLSsJd2FudGVkID0gc2V0IChtYXAgKGxhbWJkYSB4OiB4LnN0cmluZyAoKSwg dmFycykpCi0rCWZvdW5kID0gc2V0ICgpCi0rCWJsb2NrID0gZ2RiLnNlbGVjdGVkX2ZyYW1lICgp LmJsb2NrICgpCi0rCXdoaWxlIGJsb2NrOgotKwkgICAgZm9yIHN5bSBpbiBibG9jazoKLSsJCWlm IChzeW0uaXNfYXJndW1lbnQgb3Igc3ltLmlzX2NvbnN0YW50Ci0rCQkgICAgICBvciBzeW0uaXNf ZnVuY3Rpb24gb3Igc3ltLmlzX3ZhcmlhYmxlKToKLSsJCSAgICBpZiBzeW0ubmFtZSBpbiB3YW50 ZWQ6Ci0rCQkJZm91bmQuYWRkIChzeW0ubmFtZSkKKytzdGF0aWMgc3RydWN0IHR5cGUgKgorK2Zp bmRfZnVuY3Rpb25fcmV0dXJuX3R5cGUgKENPUkVfQUREUiBwYykKKyt7CisrICBzdHJ1Y3Qgc3lt Ym9sICpzeW0gPSBmaW5kX3BjX2Z1bmN0aW9uIChwYyk7CiArCi0rCSAgICBibG9jayA9IGJsb2Nr LnN1cGVyYmxvY2sKKysgIGlmIChzeW0gIT0gTlVMTCAmJiBCTE9DS19TVEFSVCAoU1lNQk9MX0JM T0NLX1ZBTFVFIChzeW0pKSA9PSBwYworKyAgICAgICYmIFNZTUJPTF9UWVBFIChzeW0pICE9IE5V TEwpCisrICAgIHJldHVybiBUWVBFX1RBUkdFVF9UWVBFIChTWU1CT0xfVFlQRSAoc3ltKSk7CiAr Ci0rCXJldHVybiB3YW50ZWQgPT0gZm91bmQKKysgIHJldHVybiBOVUxMOworK30KICsKLStJblNj b3BlICgpCi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1jbWQuYyBiL2dkYi9weXRob24vcHkt Y21kLmMKLWluZGV4IDJjZmY0YmEuLjkyNTUzMzYgMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5 LWNtZC5jCi0rKysgYi9nZGIvcHl0aG9uL3B5LWNtZC5jCi1AQCAtNDksOCArNDksNyBAQCBzdGF0 aWMgc3RydWN0IGNtZHB5X2NvbXBsZXRlciBjb21wbGV0ZXJzW10gPQotIAotICNkZWZpbmUgTl9D T01QTEVURVJTIChzaXplb2YgKGNvbXBsZXRlcnMpIC8gc2l6ZW9mIChjb21wbGV0ZXJzWzBdKSkK KyAvKiBEZXRlcm1pbmUgYSBmdW5jdGlvbidzIGFkZHJlc3MgYW5kIGl0cyByZXR1cm4gdHlwZSBm cm9tIGl0cyB2YWx1ZS4KKyAgICBDYWxscyBlcnJvcigpIGlmIHRoZSBmdW5jdGlvbiBpcyBub3Qg dmFsaWQgZm9yIGNhbGxpbmcuICAqLwogIAotLS8qIEEgZ2RiIGNvbW1hbmQuICBGb3IgdGhlIHRp bWUgYmVpbmcgb25seSBvcmRpbmFyeSBjb21tYW5kcyAobm90Ci0tICAgc2V0L3Nob3cgY29tbWFu ZHMpIGFyZSBhbGxvd2VkLiAgKi8KLSsvKiBBIGdkYiBjb21tYW5kLiAgKi8KLSBzdHJ1Y3QgY21k cHlfb2JqZWN0CitAQCAtMjMzLDcgKzI4Myw2IEBAIGZpbmRfZnVuY3Rpb25fYWRkciAoc3RydWN0 IHZhbHVlICpmdW5jdGlvbiwgc3RydWN0IHR5cGUgKipyZXR2YWxfdHlwZSkKICB7Ci0gICBQeU9i amVjdF9IRUFECi1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1ob29rcy5jIGIvZ2RiL3B5dGhv bi9weS1ob29rcy5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYTMxNDBi YwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3B5dGhvbi9weS1ob29rcy5jCi1AQCAtMCwwICsx LDUwIEBACi0rLyogTm90aWZpY2F0aW9ucyBmcm9tIGdkYiB0byBQeXRob24KLSsKLSsgICBDb3B5 cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgorICAgc3RydWN0IHR5cGUgKmZ0eXBlID0gY2hlY2tfdHlw ZWRlZiAodmFsdWVfdHlwZSAoZnVuY3Rpb24pKTsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo ID0gZ2V0X3R5cGVfYXJjaCAoZnR5cGUpOworLSAgZW51bSB0eXBlX2NvZGUgY29kZSA9IFRZUEVf Q09ERSAoZnR5cGUpOworICAgc3RydWN0IHR5cGUgKnZhbHVlX3R5cGUgPSBOVUxMOworICAgQ09S RV9BRERSIGZ1bmFkZHI7CisgCitAQCAtMjQxLDI0ICsyOTAsMzQgQEAgZmluZF9mdW5jdGlvbl9h ZGRyIChzdHJ1Y3QgdmFsdWUgKmZ1bmN0aW9uLCBzdHJ1Y3QgdHlwZSAqKnJldHZhbF90eXBlKQor ICAgICAgcGFydCBvZiBpdC4gICovCisgCisgICAvKiBEZXRlcm1pbmUgYWRkcmVzcyB0byBjYWxs LiAgKi8KKy0gIGlmIChjb2RlID09IFRZUEVfQ09ERV9GVU5DIHx8IGNvZGUgPT0gVFlQRV9DT0RF X01FVEhPRCkKKy0gICAgeworLSAgICAgIGZ1bmFkZHIgPSB2YWx1ZV9hZGRyZXNzIChmdW5jdGlv bik7CistICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKKy0gICAg fQorLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NPREVfUFRSKQorKyAgaWYgKFRZUEVfQ09ERSAo ZnR5cGUpID09IFRZUEVfQ09ERV9GVU5DCisrICAgICAgfHwgVFlQRV9DT0RFIChmdHlwZSkgPT0g VFlQRV9DT0RFX01FVEhPRCkKKysgICAgZnVuYWRkciA9IHZhbHVlX2FkZHJlc3MgKGZ1bmN0aW9u KTsKKysgIGVsc2UgaWYgKFRZUEVfQ09ERSAoZnR5cGUpID09IFRZUEVfQ09ERV9QVFIpCisgICAg IHsKKyAgICAgICBmdW5hZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAoZnVuY3Rpb24pOworICAgICAg IGZ0eXBlID0gY2hlY2tfdHlwZWRlZiAoVFlQRV9UQVJHRVRfVFlQRSAoZnR5cGUpKTsKKyAgICAg ICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0ZVTkMKKyAJICB8fCBUWVBFX0NP REUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVUSE9EKQorKwlmdW5hZGRyID0gZ2RiYXJjaF9jb252 ZXJ0X2Zyb21fZnVuY19wdHJfYWRkciAoZ2RiYXJjaCwgZnVuYWRkciwKKysJCQkJCQkgICAgICAm Y3VycmVudF90YXJnZXQpOworKyAgICB9CisrICBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQ RV9DT0RFX0ZVTkMKKysgICAgICB8fCBUWVBFX0NPREUgKGZ0eXBlKSA9PSBUWVBFX0NPREVfTUVU SE9EKQorKyAgICB7CisrICAgICAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBl KTsKICsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3Ry aWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsg ICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyAgICAgIGlmIChUWVBFX0dO VV9JRlVOQyAoZnR5cGUpKQorIAl7CistCSAgZnVuYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9t X2Z1bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGZ1bmFkZHIsCistCQkJCQkJCSZjdXJyZW50X3Rhcmdl dCk7CistCSAgdmFsdWVfdHlwZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGZ0eXBlKTsKKysJICBmdW5h ZGRyID0gZ251X2lmdW5jX3Jlc29sdmUgKGdkYmFyY2gsIGZ1bmFkZHIpOwogKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs LAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD VUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv ciBtb3JlIGRldGFpbHMuCisrCSAgLyogU2tpcCBxdWVyeWluZyB0aGUgZnVuY3Rpb24gc3ltYm9s IGlmIG5vIFJFVFZBTF9UWVBFIGhhcyBiZWVuCisrCSAgICAgYXNrZWQgZm9yLiAgKi8KKysJICBp ZiAocmV0dmFsX3R5cGUpCisrCSAgICB2YWx1ZV90eXBlID0gZmluZF9mdW5jdGlvbl9yZXR1cm5f dHlwZSAoZnVuYWRkcik7CisgCX0KKyAgICAgfQorLSAgZWxzZSBpZiAoY29kZSA9PSBUWVBFX0NP REVfSU5UKQorKyAgZWxzZSBpZiAoVFlQRV9DT0RFIChmdHlwZSkgPT0gVFlQRV9DT0RFX0lOVCkK KyAgICAgeworICAgICAgIC8qIEhhbmRsZSB0aGUgY2FzZSBvZiBmdW5jdGlvbnMgbGFja2luZyBk ZWJ1Z2dpbmcgaW5mby4KKyAgICAgICAgICBUaGVpciB2YWx1ZXMgYXJlIGNoYXJhY3RlcnMgc2lu Y2UgdGhlaXIgYWRkcmVzc2VzIGFyZSBjaGFyICovCitkaWZmIC0tZ2l0IGEvZ2RiL2luZnJ1bi5j IGIvZ2RiL2luZnJ1bi5jCitpbmRleCBmNmIwMGRhLi41NmU1NThiIDEwMDY0NAorLS0tIGEvZ2Ri L2luZnJ1bi5jCisrKysgYi9nZGIvaW5mcnVuLmMKK0BAIC0zMjY3LDYgKzMyNjcsMTAgQEAgaGFu ZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykK KyAKKyAgICAgICBzdG9wX3BjID0gcmVnY2FjaGVfcmVhZF9wYyAoZ2V0X3RocmVhZF9yZWdjYWNo ZSAoZWNzLT5wdGlkKSk7CisgCisrICAgICAgLyogQ2xlYXIgV0FUQ0hQT0lOVF9UUklHR0VSRUQg dmFsdWVzIGZyb20gcHJldmlvdXMgc3RvcCB3aGljaCBjb3VsZAorKwkgY29uZnVzZSBicHN0YXRf c3RvcF9zdGF0dXMgYW5kIGJwc3RhdF9leHBsYWluc19zaWduYWwuICAqLworKyAgICAgIHdhdGNo cG9pbnRzX3RyaWdnZXJlZCAoJmVjcy0+d3MpOwogKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLworICAgICAgIGVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX2Jwc3RhdAorIAk9IGJw c3RhdF9zdG9wX3N0YXR1cyAoZ2V0X3JlZ2NhY2hlX2FzcGFjZSAoZ2V0X2N1cnJlbnRfcmVnY2Fj aGUgKCkpLAorIAkJCSAgICAgIHN0b3BfcGMsIGVjcy0+cHRpZCk7CitAQCAtMzM1NCw2ICszMzU4 LDEwIEBAIGhhbmRsZV9pbmZlcmlvcl9ldmVudCAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0 YXRlICplY3MpCisgCisgICAgICAgc3RvcF9wYyA9IHJlZ2NhY2hlX3JlYWRfcGMgKGdldF90aHJl YWRfcmVnY2FjaGUgKGVjcy0+cHRpZCkpOworIAorKyAgICAgIC8qIENsZWFyIFdBVENIUE9JTlRf VFJJR0dFUkVEIHZhbHVlcyBmcm9tIHByZXZpb3VzIHN0b3Agd2hpY2ggY291bGQKKysJIGNvbmZ1 c2UgYnBzdGF0X3N0b3Bfc3RhdHVzIGFuZCBicHN0YXRfZXhwbGFpbnNfc2lnbmFsLiAgKi8KKysg ICAgICB3YXRjaHBvaW50c190cmlnZ2VyZWQgKCZlY3MtPndzKTsKICsKLSsjaW5jbHVkZSAiZGVm cy5oIgotKyNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgotKyNpbmNsdWRlICJjaGFyc2V0Lmgi Ci0rI2luY2x1ZGUgInB5dGhvbi5oIgotKyNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsj aW5jbHVkZSAib2JzZXJ2ZXIuaCIKKyAgICAgICAvKiBEbyB3aGF0ZXZlciBpcyBuZWNlc3Nhcnkg dG8gdGhlIHBhcmVudCBicmFuY2ggb2YgdGhlIHZmb3JrLiAgKi8KKyAgICAgICBoYW5kbGVfdmZv cmtfY2hpbGRfZXhlY19vcl9leGl0ICgxKTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0 LmMgYi9nZGIvbGludXgtbmF0LmMKK2luZGV4IDBlMTgwMzQuLjk2ODk1ZGIgMTAwNjQ0CistLS0g YS9nZGIvbGludXgtbmF0LmMKKysrKyBiL2dkYi9saW51eC1uYXQuYworQEAgLTI2MDcsNiArMjYw NywzOSBAQCBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2FkZHJlc3MgKHN0cnVjdCB0YXJnZXRfb3Bz ICpvcHMsIENPUkVfQUREUiAqYWRkcl9wKQorICAgcmV0dXJuIGxwLT5zdG9wcGVkX2RhdGFfYWRk cmVzc19wOworIH0KKyAKKysvKiBJbiBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHdpdGgg bXVsdGl0aHJlYWRlZCBwYXJlbnQgd2UgbmVlZCB0byBkZXRhY2gKKysgICB3YXRjaHBvaW50cyBm cm9tIGFsbCB0aGUgTFdQcy4gIEluIHN1Y2ggY2FzZSBJTkZFUklPUl9QVElEIHdpbGwgYmUgdGhl CisrICAgbm9uLXRocmVhZGVkIG5ldyBjaGlsZCB3aGlsZSBMV1BfTElTVCB3aWxsIHN0aWxsIGNv bnRhaW4gYWxsIHRoZSB0aHJlYWRzIG9mCisrICAgdGhlIHBhcmVudCBiZWluZyBkZXRhY2hlZC4g ICovCiArCi0rUHlPYmplY3QgKgotK2dkYnB5X2dldF9ob29rX2Z1bmN0aW9uIChjb25zdCBjaGFy ICpuYW1lKQorK3N0YXRpYyBpbnQKKytsaW51eF9uYXRfZGV0YWNoX3dhdGNocG9pbnRzICh2b2lk KQogK3sKLSsgIFB5T2JqZWN0ICpob29rczsKLSsgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0rCi0rICBp ZiAoISBQeU9iamVjdF9IYXNBdHRyU3RyaW5nIChnZGJfbW9kdWxlLCAiaG9va3MiKSkKLSsgICAg cmV0dXJuIE5VTEw7Ci0rICBob29rcyA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGdkYl9tb2R1 bGUsICJob29rcyIpOwotKyAgaWYgKCEgaG9va3MpCi0rICAgIHJldHVybiBOVUxMOwotKyAgLyog VGhlIGNhc3QgaXMgYmVjYXVzZSB0aGUgUHl0aG9uIGZ1bmN0aW9uIGRvZXNuJ3QgZGVjbGFyZSBj b25zdCBhcmd1bWVudC4KLSsgICAgIFRoaXMgaXMgYSBwcm9ibGVtIGluIFB5dGhvbiB2ZXJzaW9u IDIuNCwgYnV0IG5vdCBpbiAyLjUuICAqLwotKyAgaWYgKCEgUHlPYmplY3RfSGFzQXR0clN0cmlu ZyAoaG9va3MsIChjaGFyICopIG5hbWUpKQotKyAgICB7Ci0rICAgICAgUHlfREVDUkVGIChob29r cyk7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsgIC8qIFRoZSBjYXN0IGlzIGJlY2F1 c2UgdGhlIFB5dGhvbiBmdW5jdGlvbiBkb2Vzbid0IGRlY2xhcmUgY29uc3QgYXJndW1lbnQuCi0r ICAgICBUaGlzIGlzIGEgcHJvYmxlbSBpbiBQeXRob24gdmVyc2lvbiAyLjQsIGJ1dCBub3QgaW4g Mi41LiAgKi8KLSsgIHJlc3VsdCA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKGhvb2tzLCAoY2hh ciAqKSBuYW1lKTsKLSsgIFB5X0RFQ1JFRiAoaG9va3MpOwotKyAgcmV0dXJuIHJlc3VsdDsKLSt9 Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS1tZW1idWYuYyBiL2dkYi9weXRob24vcHktbWVt YnVmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi43YmMyOTRjCi0tLS0g L2Rldi9udWxsCi0rKysgYi9nZGIvcHl0aG9uL3B5LW1lbWJ1Zi5jCi1AQCAtMCwwICsxLDI2OCBA QAotKy8qIFB5dGhvbiBpbnRlcmZhY2UgdG8gdGhlIGluZmVyaW9yIG1lbW9yeS4KLSsKLSsgICBD b3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAg aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBw dWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVy IHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3Bl IHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgIHN0cnVjdCBsd3BfaW5m byAqbHA7CisrICBpbnQgZm91bmQgPSAwLCByZXR2YWwgPSAwOworKyAgcHRpZF90IGZpbHRlciA9 IHBpZF90b19wdGlkIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKKysgIHN0cnVjdCBj bGVhbnVwICpvbGRfY2hhaW4gPSBzYXZlX2luZmVyaW9yX3B0aWQgKCk7CiArCi0rICAgWW91IHNo b3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisrICBmb3IgKGxwID0gbHdwX2xpc3Q7IGxwOyBscCA9 IGxwLT5uZXh0KQorKyAgICBpZiAocHRpZF9tYXRjaCAobHAtPnB0aWQsIGZpbHRlcikpCisrICAg ICAgeworKwlpbmZlcmlvcl9wdGlkID0gbHAtPnB0aWQ7CisrCXJldHZhbCB8PSBsaW51eF9vcHMt PnRvX2RldGFjaF93YXRjaHBvaW50cyAoKTsKKysJZm91bmQgPSAxOworKyAgICAgIH0KICsKLSsj aW5jbHVkZSAiZGVmcy5oIgotKyNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImdk YmNvcmUuaCIKLSsjaW5jbHVkZSAicHl0aG9uLWludGVybmFsLmgiCisrICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKICsKLSt0eXBlZGVmIHN0cnVjdCB7Ci0rICBQeU9iamVjdF9IRUFECi0rICB2 b2lkICpidWZmZXI7CisrICBpZiAoIWZvdW5kKQorKyAgICB7CisrICAgICAgZ2RiX2Fzc2VydCAo IWlzX2x3cCAoaW5mZXJpb3JfcHRpZCkpOwogKwotKyAgLyogVGhlc2UgYXJlIGtlcHQganVzdCBm b3IgbWJweV9zdHIuICAqLwotKyAgQ09SRV9BRERSIGFkZHI7Ci0rICBDT1JFX0FERFIgbGVuZ3Ro OwotK30gbWVtYnVmX29iamVjdDsKKysgICAgICByZXR2YWwgfD0gbGludXhfb3BzLT50b19kZXRh Y2hfd2F0Y2hwb2ludHMgKCk7CisrICAgIH0KICsKLStzdGF0aWMgUHlUeXBlT2JqZWN0IG1lbWJ1 Zl9vYmplY3RfdHlwZTsKKysgIHJldHVybiByZXR2YWw7CisrfQogKwotKy8qIEltcGxlbWVudGF0 aW9uIG9mIGdkYi5yZWFkX21lbW9yeSAoYWRkcmVzcywgbGVuZ3RoKS4KLSsgICBSZXR1cm5zIGEg UHl0aG9uIGJ1ZmZlciBvYmplY3Qgd2l0aCBMRU5HVEggYnl0ZXMgb2YgdGhlIGluZmVyaW9yJ3Mg bWVtb3J5Ci0rICAgYXQgQUREUkVTUy4gQm90aCBhcmd1bWVudHMgYXJlIGludGVnZXJzLiAgKi8K KyAvKiBDb21tb25seSBhbnkgYnJlYWtwb2ludCAvIHdhdGNocG9pbnQgZ2VuZXJhdGUgb25seSBT SUdUUkFQLiAgKi8KKyAKKyBzdGF0aWMgaW50CitAQCAtNTY2MCw2ICs1NjkzLDggQEAgbGludXhf bmF0X2FkZF90YXJnZXQgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQorICAgdC0+dG9fdGhyZWFkX2Fk ZHJlc3Nfc3BhY2UgPSBsaW51eF9uYXRfdGhyZWFkX2FkZHJlc3Nfc3BhY2U7CisgICB0LT50b19z dG9wcGVkX2J5X3dhdGNocG9pbnQgPSBsaW51eF9uYXRfc3RvcHBlZF9ieV93YXRjaHBvaW50Owor ICAgdC0+dG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBsaW51eF9uYXRfc3RvcHBlZF9kYXRhX2Fk ZHJlc3M7CisrICBpZiAobGludXhfb3BzLT50b19kZXRhY2hfd2F0Y2hwb2ludHMpCisrICAgIHQt PnRvX2RldGFjaF93YXRjaHBvaW50cyA9IGxpbnV4X25hdF9kZXRhY2hfd2F0Y2hwb2ludHM7Cisg CisgICB0LT50b19jYW5fYXN5bmNfcCA9IGxpbnV4X25hdF9jYW5fYXN5bmNfcDsKKyAgIHQtPnRv X2lzX2FzeW5jX3AgPSBsaW51eF9uYXRfaXNfYXN5bmNfcDsKK2RpZmYgLS1naXQgYS9nZGIvbGlu dXgtdGRlcC5jIGIvZ2RiL2xpbnV4LXRkZXAuYworaW5kZXggYzUxZWRlOS4uZWY4Y2JkYSAxMDA2 NDQKKy0tLSBhL2dkYi9saW51eC10ZGVwLmMKKysrKyBiL2dkYi9saW51eC10ZGVwLmMKK0BAIC0y NCw2ICsyNCw4IEBACisgI2luY2x1ZGUgInRhcmdldC5oIgorICNpbmNsdWRlICJlbGYvY29tbW9u LmgiCisgI2luY2x1ZGUgImluZmVyaW9yLmgiCisrI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1 ZGUgImluZmNhbGwuaCIKKyAKKyBzdGF0aWMgc3RydWN0IGdkYmFyY2hfZGF0YSAqbGludXhfZ2Ri YXJjaF9kYXRhX2hhbmRsZTsKKyAKK2RpZmYgLS1naXQgYS9nZGIvbWkvbWktY21kLXZhci5jIGIv Z2RiL21pL21pLWNtZC12YXIuYworaW5kZXggMzEwYWRlOS4uZDg3MTBhMSAxMDA2NDQKKy0tLSBh L2dkYi9taS9taS1jbWQtdmFyLmMKKysrKyBiL2dkYi9taS9taS1jbWQtdmFyLmMKK0BAIC03MDIs NyArNzAyLDYgQEAgbWlfY21kX3Zhcl91cGRhdGUgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2 LCBpbnQgYXJnYykKKyAgICAgfQorICAgZWxzZQorICAgICB7CistICAgICAgLyogR2V0IHZhcm9i aiBoYW5kbGUsIGlmIGEgdmFsaWQgdmFyIG9iaiBuYW1lIHdhcyBzcGVjaWZpZWQgKi8KKyAgICAg ICBzdHJ1Y3QgdmFyb2JqICp2YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFtZSk7CisgCisgICAg ICAgdmFyb2JqX3VwZGF0ZV9vbmUgKHZhciwgcHJpbnRfdmFsdWVzLCAxIC8qIGV4cGxpY2l0ICov KTsKK2RpZmYgLS1naXQgYS9nZGIvbWluc3ltcy5jIGIvZ2RiL21pbnN5bXMuYworaW5kZXggMGE1 N2U3Ny4uNmJlNzRkZiAxMDA2NDQKKy0tLSBhL2dkYi9taW5zeW1zLmMKKysrKyBiL2dkYi9taW5z eW1zLmMKK0BAIC0zMzcsOCArMzM3LDkgQEAgbG9va3VwX21pbmltYWxfc3ltYm9sX3RleHQgKGNv bnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmKQorIAkgICAgICAgbXN5bWJvbCA9 IG1zeW1ib2wtPmhhc2hfbmV4dCkKKyAJICAgIHsKKyAJICAgICAgaWYgKHN0cmNtcCAoU1lNQk9M X0xJTktBR0VfTkFNRSAobXN5bWJvbCksIG5hbWUpID09IDAgJiYKKy0JCSAgKE1TWU1CT0xfVFlQ RSAobXN5bWJvbCkgPT0gbXN0X3RleHQgfHwKKy0JCSAgIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkg PT0gbXN0X2ZpbGVfdGV4dCkpCisrCQkgIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90 ZXh0CisrCQkgICB8fCBNU1lNQk9MX1RZUEUgKG1zeW1ib2wpID09IG1zdF90ZXh0X2dudV9pZnVu YworKwkJICAgfHwgTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfZmlsZV90ZXh0KSkKKyAJ CXsKKyAJCSAgc3dpdGNoIChNU1lNQk9MX1RZUEUgKG1zeW1ib2wpKQorIAkJICAgIHsKK0BAIC03 MDAsNiArNzAxLDE2IEBAIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAoQ09SRV9BRERSIHBj KQorICAgcmV0dXJuIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19zZWN0aW9uIChwYywgTlVM TCk7CisgfQorIAorKy8qIFJldHVybiBub24temVybyBpZmYgUEMgaXMgaW4gZnVuY3Rpb24gaW1w bGVtZW50aW5nIGdudS1pZnVuYyBzZWxlY3Rpb24uICAqLwogKwotK1B5T2JqZWN0ICoKLStnZGJw eV9yZWFkX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQorK2ludAorK2lu X2dudV9pZnVuY19zdHViIChDT1JFX0FERFIgcGMpCiArewotKyAgaW50IGVycm9yID0gMDsKLSsg IENPUkVfQUREUiBhZGRyLCBsZW5ndGg7Ci0rICB2b2lkICpidWZmZXIgPSBOVUxMOwotKyAgbWVt YnVmX29iamVjdCAqbWVtYnVmX29iajsKLSsgIFB5T2JqZWN0ICphZGRyX29iaiwgKmxlbmd0aF9v Ymo7Ci0rICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMgPSBOVUxMOwotKyAgdm9sYXRpbGUgc3Ry dWN0IGdkYl9leGNlcHRpb24gZXhjZXB0OwotKwotKyAgaWYgKCEgUHlBcmdfUGFyc2VUdXBsZSAo YXJncywgIk9PIiwgJmFkZHJfb2JqLCAmbGVuZ3RoX29iaikpCi0rICAgIHJldHVybiBOVUxMOwot KwotKyAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVSTl9NQVNLX0FMTCkKLSsgICAgewotKyAgICAg IGlmICghZ2V0X2FkZHJfZnJvbV9weXRob24gKGFkZHJfb2JqLCAmYWRkcikKLSsJICB8fCAhZ2V0 X2FkZHJfZnJvbV9weXRob24gKGxlbmd0aF9vYmosICZsZW5ndGgpKQotKwl7Ci0rCSAgZXJyb3Ig PSAxOwotKwkgIGJyZWFrOwotKwl9CisrICBzdHJ1Y3QgbWluaW1hbF9zeW1ib2wgKm1zeW1ib2wg PSBsb29rdXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKHBjKTsKICsKLSsgICAgICBidWZmZXIgPSB4 bWFsbG9jIChsZW5ndGgpOwotKyAgICAgIGNsZWFudXBzID0gbWFrZV9jbGVhbnVwICh4ZnJlZSwg YnVmZmVyKTsKKysgIHJldHVybiBtc3ltYm9sICYmIE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0g bXN0X3RleHRfZ251X2lmdW5jOworK30KICsKLSsgICAgICByZWFkX21lbW9yeSAoYWRkciwgYnVm ZmVyLCBsZW5ndGgpOworIC8qIEZpbmQgdGhlIG1pbmltYWwgc3ltYm9sIG5hbWVkIE5BTUUsIGFu ZCByZXR1cm4gYm90aCB0aGUgbWluc3ltCisgICAgc3RydWN0IGFuZCBpdHMgb2JqZmlsZS4gIFRo aXMgb25seSBjaGVja3MgdGhlIGxpbmthZ2UgbmFtZS4gIFNldHMKKyAgICAqT0JKRklMRV9QIGFu ZCByZXR1cm5zIHRoZSBtaW5pbWFsIHN5bWJvbCwgaWYgaXQgaXMgZm91bmQuICBJZiBpdAorQEAg LTc2OSw2ICs3ODAsNyBAQCBwcmltX3JlY29yZF9taW5pbWFsX3N5bWJvbCAoY29uc3QgY2hhciAq bmFtZSwgQ09SRV9BRERSIGFkZHJlc3MsCisgICBzd2l0Y2ggKG1zX3R5cGUpCisgICAgIHsKKyAg ICAgY2FzZSBtc3RfdGV4dDoKKysgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6CisgICAgIGNh c2UgbXN0X2ZpbGVfdGV4dDoKKyAgICAgY2FzZSBtc3Rfc29saWJfdHJhbXBvbGluZToKKyAgICAg ICBzZWN0aW9uID0gU0VDVF9PRkZfVEVYVCAob2JqZmlsZSk7CitAQCAtMTIzNCw3ICsxMjQ2LDgg QEAgZmluZF9zb2xpYl90cmFtcG9saW5lX3RhcmdldCAoc3RydWN0IGZyYW1lX2luZm8gKmZyYW1l LCBDT1JFX0FERFIgcGMpCisgICAgIHsKKyAgICAgICBBTExfTVNZTUJPTFMgKG9iamZpbGUsIG1z eW1ib2wpCisgICAgICAgeworLQlpZiAoTVNZTUJPTF9UWVBFIChtc3ltYm9sKSA9PSBtc3RfdGV4 dAorKwlpZiAoKE1TWU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHQKKysJICAgIHx8IE1T WU1CT0xfVFlQRSAobXN5bWJvbCkgPT0gbXN0X3RleHRfZ251X2lmdW5jKQorIAkgICAgJiYgc3Ry Y21wIChTWU1CT0xfTElOS0FHRV9OQU1FIChtc3ltYm9sKSwKKyAJCSAgICAgICBTWU1CT0xfTElO S0FHRV9OQU1FICh0c3ltYm9sKSkgPT0gMCkKKyAJICByZXR1cm4gU1lNQk9MX1ZBTFVFX0FERFJF U1MgKG1zeW1ib2wpOworZGlmZiAtLWdpdCBhL2dkYi9wLXZhbHByaW50LmMgYi9nZGIvcC12YWxw cmludC5jCitpbmRleCA0NGEyZDcyLi5lM2FlYWQ0IDEwMDY0NAorLS0tIGEvZ2RiL3AtdmFscHJp bnQuYworKysrIGIvZ2RiL3AtdmFscHJpbnQuYworQEAgLTM4LDYgKzM4LDcgQEAKKyAjaW5jbHVk ZSAicC1sYW5nLmgiCisgI2luY2x1ZGUgImNwLWFiaS5oIgorICNpbmNsdWRlICJjcC1zdXBwb3J0 LmgiCisrI2luY2x1ZGUgImR3YXJmMmxvYy5oIgorIAwKKyAKKyAKK0BAIC02OCw4ICs2OSwyNyBA QCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZh bGFkZHIsCisgICBzdHJ1Y3QgdHlwZSAqY2hhcl90eXBlOworICAgTE9OR0VTVCB2YWw7CisgICBD T1JFX0FERFIgYWRkcjsKKysgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOworKyAgc3RydWN0IHR5 cGUgKnNhdmVkX3R5cGUgPSB0eXBlOworKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRy ZXNzOworKyAgCisrICBiYWNrX3RvID0gbWFrZV9jbGVhbnVwIChudWxsX2NsZWFudXAsIDApOwor KyAgdHlwZSA9IG9iamVjdF9hZGRyZXNzX2dldF9kYXRhICh0eXBlLCAmYWRkcmVzcyk7CisrICBp ZiAodHlwZSA9PSBOVUxMKQorKyAgICB7CisrICAgICAgZnB1dHNfZmlsdGVyZWQgKG9iamVjdF9h ZGRyZXNzX2RhdGFfbm90X3ZhbGlkIChzYXZlZF90eXBlKSwgc3RyZWFtKTsKKysgICAgICBnZGJf Zmx1c2ggKHN0cmVhbSk7CisrICAgICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworKyAgICAgIHJl dHVybiAwOwogKyAgICB9Ci0rICBHREJfUFlfSEFORExFX0VYQ0VQVElPTiAoZXhjZXB0KTsKLSsK LSsgIGlmIChlcnJvcikKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBkaXNjYXJkX2NsZWFudXBz IChjbGVhbnVwcyk7Ci0rCi0rICBtZW1idWZfb2JqID0gUHlPYmplY3RfTmV3IChtZW1idWZfb2Jq ZWN0LCAmbWVtYnVmX29iamVjdF90eXBlKTsKLSsgIGlmIChtZW1idWZfb2JqID09IE5VTEwpCisr ICBpZiAoYWRkcmVzcyAhPSBzYXZlZF9hZGRyZXNzKQogKyAgICB7Ci0rICAgICAgeGZyZWUgKGJ1 ZmZlcik7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQeUV4Y19NZW1vcnlFcnJvciwKLSsJCSAg ICAgICAiQ291bGQgbm90IGFsbG9jYXRlIG1lbW9yeSBidWZmZXIgb2JqZWN0LiIpOwotKyAgICAg IHJldHVybiBOVUxMOworKyAgICAgIHNpemVfdCBsZW5ndGggPSBUWVBFX0xFTkdUSCAodHlwZSk7 CisgCistICBDSEVDS19UWVBFREVGICh0eXBlKTsKKysgICAgICB2YWxhZGRyID0geG1hbGxvYyAo bGVuZ3RoKTsKKysgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCAoZ2RiX2J5dGUgKikgdmFsYWRk cik7CisrICAgICAgcmVhZF9tZW1vcnkgKGFkZHJlc3MsIChnZGJfYnl0ZSAqKSB2YWxhZGRyLCBs ZW5ndGgpOwogKyAgICB9CisgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCisgICAgIHsKKyAg ICAgY2FzZSBUWVBFX0NPREVfQVJSQVk6CitAQCAtMTI1LDggKzE0NSw5IEBAIHBhc2NhbF92YWxf cHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKKyAJCXsK KyAJCSAgaSA9IDA7CisgCQl9CistCSAgICAgIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAodHlw ZSwgdmFsYWRkciArIGVtYmVkZGVkX29mZnNldCwgYWRkcmVzcywgc3RyZWFtLAorLQkJCQkJcmVj dXJzZSwgb3JpZ2luYWxfdmFsdWUsIG9wdGlvbnMsIGkpOworKwkgICAgICB2YWxfcHJpbnRfYXJy YXlfZWxlbWVudHMgKHNhdmVkX3R5cGUsIHZhbGFkZHIgKyBlbWJlZGRlZF9vZmZzZXQsCisrCQkJ CQlzYXZlZF9hZGRyZXNzLCBzdHJlYW0sIHJlY3Vyc2UsCisrCQkJCQlvcmlnaW5hbF92YWx1ZSwg b3B0aW9ucywgaSk7CisgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0iKTsKKyAJ ICAgIH0KKyAJICBicmVhazsKK0BAIC0xNjQsNiArMTg1LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAo c3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorIAkgIC8qIFRyeSB0 byBwcmludCB3aGF0IGZ1bmN0aW9uIGl0IHBvaW50cyB0by4gICovCisgCSAgcHJpbnRfYWRkcmVz c19kZW1hbmdsZSAoZ2RiYXJjaCwgYWRkciwgc3RyZWFtLCBkZW1hbmdsZSk7CisgCSAgLyogUmV0 dXJuIHZhbHVlIGlzIGlycmVsZXZhbnQgZXhjZXB0IGZvciBzdHJpbmcgcG9pbnRlcnMuICAqLwor KwkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKyAJICByZXR1cm4gKDApOworIAl9CisgCitAQCAt MjU0LDYgKzI3Niw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25z dCBnZGJfYnl0ZSAqdmFsYWRkciwKKyAgICAgICAvKiBSZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3Rl cnMgcHJpbnRlZCwgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZworIAkgJ1wwJyBpZiB3ZSByZWFj aGVkIHRoZSBlbmQuICB2YWxfcHJpbnRfc3RyaW5nIHRha2VzIGNhcmUgaW5jbHVkaW5nCisgCSB0 aGUgdGVybWluYXRpbmcgJ1wwJyBpZiBuZWNlc3NhcnkuICAqLworKyAgICAgIGRvX2NsZWFudXBz IChiYWNrX3RvKTsKKyAgICAgICByZXR1cm4gaTsKKyAKKyAgICAgICBicmVhazsKK0BAIC01NTYs NiArNTc5LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdk Yl9ieXRlICp2YWxhZGRyLAorICAgICAgIGVycm9yIChfKCJJbnZhbGlkIHBhc2NhbCB0eXBlIGNv ZGUgJWQgaW4gc3ltYm9sIHRhYmxlLiIpLCBUWVBFX0NPREUgKHR5cGUpKTsKKyAgICAgfQorICAg Z2RiX2ZsdXNoIChzdHJlYW0pOworKyAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOworICAgcmV0dXJu ICgwKTsKKyB9CisgDAorZGlmZiAtLWdpdCBhL2dkYi9wYXJzZS5jIGIvZ2RiL3BhcnNlLmMKK2lu ZGV4IDE4MDM4ZWQuLjE0MzhhZTAgMTAwNjQ0CistLS0gYS9nZGIvcGFyc2UuYworKysrIGIvZ2Ri L3BhcnNlLmMKK0BAIC00ODcsOSArNDg3LDIxIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3Qg bWluaW1hbF9zeW1ib2wgKm1zeW1ib2wpCisgICBwYyA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1 bmNfcHRyX2FkZHIgKGdkYmFyY2gsIGFkZHIsICZjdXJyZW50X3RhcmdldCk7CisgICBpZiAocGMg IT0gYWRkcikKKyAgICAgeworKyAgICAgIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqaWZ1bmNfbXN5 bSA9IGxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wYyAocGMpOwogKwotKyAgbWVtYnVmX29iai0+ YnVmZmVyID0gYnVmZmVyOwotKyAgbWVtYnVmX29iai0+YWRkciA9IGFkZHI7Ci0rICBtZW1idWZf b2JqLT5sZW5ndGggPSBsZW5ndGg7Ci0rCi0rICByZXR1cm4gUHlCdWZmZXJfRnJvbVJlYWRXcml0 ZU9iamVjdCAoKFB5T2JqZWN0ICopIG1lbWJ1Zl9vYmosIDAsCi0rCQkJCSAgICAgICBQeV9FTkRf T0ZfQlVGRkVSKTsKLSt9Ci0rCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLndyaXRlX21lbW9y eSAoYWRkcmVzcywgYnVmZmVyIFssIGxlbmd0aF0pLgotKyAgIFdyaXRlcyB0aGUgY29udGVudHMg b2YgQlVGRkVSIChhIFB5dGhvbiBvYmplY3Qgc3VwcG9ydGluZyB0aGUgcmVhZCBidWZmZXIKLSsg ICBwcm90b2NvbCkgYXQgQUREUkVTUyBpbiB0aGUgaW5mZXJpb3IncyBtZW1vcnkuICBXcml0ZSBM RU5HVEggYnl0ZXMgZnJvbQotKyAgIEJVRkZFUiwgb3IgaXRzIGVudGlyZSBjb250ZW50cyBpZiB0 aGUgYXJndW1lbnQgaXMgbm90IHByb3ZpZGVkLiAgVGhlCi0rICAgZnVuY3Rpb24gcmV0dXJucyBu b3RoaW5nLiAgKi8KLSsKLStQeU9iamVjdCAqCi0rZ2RicHlfd3JpdGVfbWVtb3J5IChQeU9iamVj dCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgaW50IGJ1Zl9sZW4sIGVycm9yID0gMDsK LSsgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKLSsgIENPUkVfQUREUiBhZGRyLCBsZW5ndGg7Ci0rICBQ eU9iamVjdCAqYWRkcl9vYmosICpsZW5ndGhfb2JqID0gTlVMTDsKLSsgIHZvbGF0aWxlIHN0cnVj dCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKLSsKLSsgIGlmICghIFB5QXJnX1BhcnNlVHVwbGUgKGFy Z3MsICJPcyN8TyIsICZhZGRyX29iaiwgJmJ1ZmZlciwgJmJ1Zl9sZW4sCi0rCQkJICAmbGVuZ3Ro X29iaikpCi0rICAgIHJldHVybiBOVUxMOworICAgICAgIC8qIEluIHRoaXMgY2FzZSwgYXNzdW1l IHdlIGhhdmUgYSBjb2RlIHN5bWJvbCBpbnN0ZWFkIG9mCisgCSBhIGRhdGEgc3ltYm9sLiAgKi8K Ky0gICAgICB0eXBlID0gbXN0X3RleHQ7CiArCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJO X01BU0tfQUxMKQotKyAgICB7Ci0rICAgICAgaWYgKCFnZXRfYWRkcl9mcm9tX3B5dGhvbiAoYWRk cl9vYmosICZhZGRyKSkKLSsJewotKwkgIGVycm9yID0gMTsKLSsJICBicmVhazsKLSsJfQotKyAg ICAgIAotKyAgICAgIGlmICghbGVuZ3RoX29iaikKLSsJbGVuZ3RoID0gYnVmX2xlbjsKLSsgICAg ICBlbHNlIGlmICghZ2V0X2FkZHJfZnJvbV9weXRob24gKGxlbmd0aF9vYmosICZsZW5ndGgpKQor KyAgICAgIGlmIChpZnVuY19tc3ltICE9IE5VTEwgJiYgTVNZTUJPTF9UWVBFIChpZnVuY19tc3lt KSA9PSBtc3RfdGV4dF9nbnVfaWZ1bmMKKysJICAmJiBTWU1CT0xfVkFMVUVfQUREUkVTUyAoaWZ1 bmNfbXN5bSkgPT0gcGMpCiArCXsKLSsJICBlcnJvciA9IDE7Ci0rCSAgYnJlYWs7CisrCSAgLyog QSBmdW5jdGlvbiBkZXNjcmlwdG9yIGhhcyBiZWVuIHJlc29sdmVkIGJ1dCBQQyBpcyBzdGlsbCBp biB0aGUKKysJICAgICBnbnUtaWZ1bmMgcmVzb2x2ZXIgYm9keSAoc3VjaCBhcyBiZWNhdXNlIGlu ZmVyaW9yIGRvZXMgbm90IHJ1biB0bworKwkgICAgIGJlIGFibGUgdG8gY2FsbCBpdCkuICAqLwor KwkgIHR5cGUgPSBtc3RfdGV4dF9nbnVfaWZ1bmM7CiArCX0KKysgICAgICBlbHNlCisrCXR5cGUg PSBtc3RfdGV4dDsKKyAgICAgICBzZWN0aW9uID0gTlVMTDsKKyAgICAgICBhZGRyID0gcGM7Cisg ICAgIH0KK0BAIC01MjEsNiArNTMzLDExIEBAIHdyaXRlX2V4cF9tc3ltYm9sIChzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKm1zeW1ib2wpCisgICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxl X3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3RleHRfc3ltYm9sKTsKKyAgICAgICBicmVhazsKKyAK KysgICAgY2FzZSBtc3RfdGV4dF9nbnVfaWZ1bmM6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBl IChvYmpmaWxlX3R5cGUgKG9iamZpbGUpCisrCQkJCQkgICAgICAgLT5ub2RlYnVnX3RleHRfZ251 X2lmdW5jX3N5bWJvbCk7CisrICAgICAgYnJlYWs7CiArCi0rICAgICAgd3JpdGVfbWVtb3J5IChh ZGRyLCBidWZmZXIsIGxlbmd0aCk7Ci0rICAgIH0KLSsgIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9O IChleGNlcHQpOwotKwotKyAgaWYgKGVycm9yKQotKyAgICByZXR1cm4gTlVMTDsKLSsKLSsgIFB5 X1JFVFVSTl9OT05FOwotK30KLSsKLSsvKiBEZXN0cnVjdG9yIG9mIE1lbWJ1ZiBvYmplY3RzLiAg Ki8KLSsKLStzdGF0aWMgdm9pZAotK21icHlfZGVhbGxvYyAoUHlPYmplY3QgKnNlbGYpCi0rewot KyAgeGZyZWUgKCgobWVtYnVmX29iamVjdCAqKSBzZWxmKS0+YnVmZmVyKTsKLSsgIHNlbGYtPm9i X3R5cGUtPnRwX2ZyZWUgKHNlbGYpOwotK30KLSsKLSsvKiBSZXR1cm4gYSBkZXNjcmlwdGlvbiBv ZiB0aGUgTWVtYnVmIG9iamVjdC4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoKLSttYnB5X3N0 ciAoUHlPYmplY3QgKnNlbGYpCi0rewotKyAgbWVtYnVmX29iamVjdCAqbWVtYnVmX29iaiA9ICht ZW1idWZfb2JqZWN0ICopIHNlbGY7Ci0rCi0rICByZXR1cm4gUHlTdHJpbmdfRnJvbUZvcm1hdCAo Im1lbW9yeSBidWZmZXIgZm9yIGFkZHJlc3MgJXMsICVzIGJ5dGVzIGxvbmciLAotKwkJCSAgICAg IHBhZGRyZXNzIChtZW1idWZfb2JqLT5hZGRyKSwKLSsJCQkgICAgICBwdWxvbmdlc3QgKG1lbWJ1 Zl9vYmotPmxlbmd0aCkpOwotK30KLSsKLStzdGF0aWMgUHlfc3NpemVfdAotK2dldF9yZWFkX2J1 ZmZlciAoUHlPYmplY3QgKnNlbGYsIFB5X3NzaXplX3Qgc2VnbWVudCwgdm9pZCAqKnB0cnB0cikK LSt7Ci0rICBtZW1idWZfb2JqZWN0ICptZW1idWZfb2JqID0gKG1lbWJ1Zl9vYmplY3QgKikgc2Vs ZjsKLSsKLSsgIGlmIChzZWdtZW50KQotKyAgICB7Ci0rICAgICAgUHlFcnJfU2V0U3RyaW5nIChQ eUV4Y19TeXN0ZW1FcnJvciwKLSsJCSAgICAgICAiVGhlIG1lbW9yeSBidWZmZXIgc3VwcG9ydHMg b25seSBvbmUgc2VnbWVudC4iKTsKLSsgICAgICByZXR1cm4gLTE7Ci0rICAgIH0KLSsKLSsgICpw dHJwdHIgPSBtZW1idWZfb2JqLT5idWZmZXI7CisgICAgIGNhc2UgbXN0X2RhdGE6CisgICAgIGNh c2UgbXN0X2ZpbGVfZGF0YToKKyAgICAgY2FzZSBtc3RfYnNzOgorQEAgLTUyOCw2ICs1NDUsMTAg QEAgd3JpdGVfZXhwX21zeW1ib2wgKHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbXN5bWJvbCkKKyAg ICAgICB3cml0ZV9leHBfZWx0X3R5cGUgKG9iamZpbGVfdHlwZSAob2JqZmlsZSktPm5vZGVidWdf ZGF0YV9zeW1ib2wpOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIG1zdF9zbG90X2dvdF9w bHQ6CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5u b2RlYnVnX2dvdF9wbHRfc3ltYm9sKTsKKysgICAgICBicmVhazsKICsKLSsgIHJldHVybiBtZW1i dWZfb2JqLT5sZW5ndGg7CisgICAgIGRlZmF1bHQ6CisgICAgICAgd3JpdGVfZXhwX2VsdF90eXBl IChvYmpmaWxlX3R5cGUgKG9iamZpbGUpLT5ub2RlYnVnX3Vua25vd25fc3ltYm9sKTsKKyAgICAg ICBicmVhazsKK0BAIC0xNDgxLDYgKzE1MDIsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwg Y29uc3QgY2hhciAqeSwgLi4uKQorIAorIGludAorIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChz dHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAorKwkJCSBpbnQgKCp0eXBlX2Z1bmMpIChz dHJ1Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCisgCQkJIGludCAoKm9iamZpbGVfZnVuYykg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorIAkJCQkJICAgICAgdm9pZCAqZGF0YSksCisgCQkJ IHZvaWQgKmRhdGEpCitAQCAtMTUyMiw3ICsxNTQ0LDcgQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRh cmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwb3MsCisgCSAgICBzdHJ1Y3QgdHlwZSAq dHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsKKyAJICAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKKyAKKy0JICAgIGlmIChvYmpmaWxlICYmICgq b2JqZmlsZV9mdW5jKSAob2JqZmlsZSwgZGF0YSkpCisrCSAgICBpZiAob2JqZmlsZSAmJiBvYmpm aWxlX2Z1bmMgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKKyAJICAgICAgcmV0 dXJuIDE7CisgCSAgfQorICAgICAgIH0KK0BAIC0xNTQwLDcgKzE1NjIsOCBAQCBvcGVyYXRvcl9j aGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKyAKKyAJLyog Q2hlY2sgb2JqZmlsZSB3aGVyZSB0aGUgdmFyaWFibGUgaXRzZWxmIGlzIHBsYWNlZC4KKyAJICAg U1lNQk9MX09CSl9TRUNUSU9OIChzeW1ib2wpIG1heSBiZSBOVUxMLiAgKi8KKy0JaWYgKCgqb2Jq ZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAoc3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisrCWlm IChvYmpmaWxlX2Z1bmMKKysJICAgICYmICgqb2JqZmlsZV9mdW5jKSAoU1lNQk9MX1NZTVRBQiAo c3ltYm9sKS0+b2JqZmlsZSwgZGF0YSkpCisgCSAgcmV0dXJuIDE7CisgCisgCS8qIENoZWNrIG9i amZpbGUgd2hlcmUgaXMgcGxhY2VkIHRoZSBjb2RlIHRvdWNoaW5nIHRoZSB2YXJpYWJsZS4gICov CitAQCAtMTU1MywyNCArMTU3NiwyNyBAQCBvcGVyYXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKKyAKKyAgIC8qIEludm9rZSBjYWxsYmFja3MgZm9y IFRZUEUgYW5kIE9CSkZJTEUgaWYgdGhleSB3ZXJlIHNldCBhcyBub24tTlVMTC4gICovCisgCist ICBpZiAodHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpCisrICBpZiAodHlwZSAmJiB0eXBlX2Z1 bmMgJiYgKCp0eXBlX2Z1bmMpICh0eXBlLCBkYXRhKSkKKysgICAgcmV0dXJuIDE7CisrICBpZiAo dHlwZSAmJiBUWVBFX09CSkZJTEUgKHR5cGUpICYmIG9iamZpbGVfZnVuYworICAgICAgICYmICgq b2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCisgICAgIHJldHVybiAx OworLSAgaWYgKG9iamZpbGUgJiYgKCpvYmpmaWxlX2Z1bmMpIChvYmpmaWxlLCBkYXRhKSkKKysg IGlmIChvYmpmaWxlICYmIG9iamZpbGVfZnVuYyAmJiAoKm9iamZpbGVfZnVuYykgKG9iamZpbGUs IGRhdGEpKQorICAgICByZXR1cm4gMTsKKyAKKyAgIHJldHVybiAwOworIH0KKyAKKy0vKiBDYWxs IE9CSkZJTEVfRlVOQyBmb3IgYW55IFRZUEUgYW5kIE9CSkZJTEUgZm91bmQgYmVpbmcgcmVmZXJl bmNlZCBieSBFWFAuCistICAgVGhlIGZ1bmN0aW9ucyBhcmUgbmV2ZXIgY2FsbGVkIHdpdGggTlVM TCBPQkpGSUxFLiAgRnVuY3Rpb25zIGdldCBwYXNzZWQgYW4KKy0gICBhcmJpdHJhcnkgY2FsbGVy IHN1cHBsaWVkIERBVEEgcG9pbnRlci4gIElmIGFueSBvZiB0aGUgZnVuY3Rpb25zIHJldHVybnMK Ky0gICBub24temVybyB2YWx1ZSB0aGVuIChhbnkgb3RoZXIpIG5vbi16ZXJvIHZhbHVlIGlzIGlt bWVkaWF0ZWx5IHJldHVybmVkIHRvCistICAgdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvIGlz IHJldHVybmVkIGFmdGVyIGl0ZXJhdGluZyB0aHJvdWdoIHdob2xlIEVYUC4KKy0gICAqLworKy8q IENhbGwgVFlQRV9GVU5DIGFuZCBPQkpGSUxFX0ZVTkMgZm9yIGFueSBUWVBFIGFuZCBPQkpGSUxF IGZvdW5kIGJlaW5nCisrICAgcmVmZXJlbmNlZCBieSBFWFAuICBUaGUgZnVuY3Rpb25zIGFyZSBu ZXZlciBjYWxsZWQgd2l0aCBOVUxMIFRZUEUgb3IgTlVMTAorKyAgIE9CSkZJTEUuICBGdW5jdGlv bnMgZ2V0IHBhc3NlZCBhbiBhcmJpdHJhcnkgY2FsbGVyIHN1cHBsaWVkIERBVEEgcG9pbnRlci4K KysgICBJZiBhbnkgb2YgdGhlIGZ1bmN0aW9ucyByZXR1cm5zIG5vbi16ZXJvIHZhbHVlIHRoZW4g KGFueSBvdGhlcikgbm9uLXplcm8KKysgICB2YWx1ZSBpcyBpbW1lZGlhdGVseSByZXR1cm5lZCB0 byB0aGUgY2FsbGVyLiAgT3RoZXJ3aXNlIHplcm8gaXMgcmV0dXJuZWQKKysgICBhZnRlciBpdGVy YXRpbmcgdGhyb3VnaCB3aG9sZSBFWFAuICAqLworIAorIHN0YXRpYyBpbnQKKyBleHBfaXRlcmF0 ZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKKysJICAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1 Y3QgdHlwZSAqdHlwZSwgdm9pZCAqZGF0YSksCisgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdGEpLAorIAkgICAgIHZvaWQgKmRhdGEp CisgeworQEAgLTE1ODUsNyArMTYxMSw5IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLAorIAorICAgICAgIHBvcyA9IGVuZHBvcyAtIG9wbGVuOworICAgICAgIGlmIChleHAt Pmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9kZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCist CQkJCQkJCSAgIG9iamZpbGVfZnVuYywgZGF0YSkpCisrCQkJCQkJCSAgIHR5cGVfZnVuYywKKysJ CQkJCQkJICAgb2JqZmlsZV9mdW5jLAorKwkJCQkJCQkgICBkYXRhKSkKKyAJcmV0dXJuIDE7Cisg CisgICAgICAgZW5kcG9zID0gcG9zOworQEAgLTE2MTYsNyArMTY0NCwyNiBAQCBleHBfdXNlc19v YmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkK KyB7CisgICBnZGJfYXNzZXJ0IChvYmpmaWxlLT5zZXBhcmF0ZV9kZWJ1Z19vYmpmaWxlX2JhY2ts aW5rID09IE5VTEwpOworIAorLSAgcmV0dXJuIGV4cF9pdGVyYXRlIChleHAsIGV4cF91c2VzX29i amZpbGVfaXRlciwgb2JqZmlsZSk7CisrICByZXR1cm4gZXhwX2l0ZXJhdGUgKGV4cCwgTlVMTCwg ZXhwX3VzZXNfb2JqZmlsZV9pdGVyLCBvYmpmaWxlKTsKICt9CiArCi0rc3RhdGljIFB5X3NzaXpl X3QKLStnZXRfd3JpdGVfYnVmZmVyIChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCBzZWdtZW50 LCB2b2lkICoqcHRycHRyKQorKy8qIEhlbHBlciBmb3IgZXhwX3R5cGVzX21hcmtfdXNlZC4gICov CisrCisrc3RhdGljIGludAorK2V4cF90eXBlc19tYXJrX3VzZWRfaXRlciAoc3RydWN0IHR5cGUg KnR5cGUsIHZvaWQgKnVudXNlZCkKICt7Ci0rICByZXR1cm4gZ2V0X3JlYWRfYnVmZmVyIChzZWxm LCBzZWdtZW50LCBwdHJwdHIpOworKyAgdHlwZV9tYXJrX3VzZWQgKHR5cGUpOworKworKyAgLyog Q29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKICt9CiArCi0rc3RhdGlj IFB5X3NzaXplX3QKLStnZXRfc2VnX2NvdW50IChQeU9iamVjdCAqc2VsZiwgUHlfc3NpemVfdCAq bGVucCkKKysvKiBDYWxsIHR5cGVfbWFya191c2VkIGZvciBhbnkgdHlwZSBjb250YWluZWQgaW4g RVhQLiAgKi8KKysKKyt2b2lkCisrZXhwX3R5cGVzX21hcmtfdXNlZCAoc3RydWN0IGV4cHJlc3Np b24gKmV4cCkKICt7Ci0rICBpZiAobGVucCkKLSsgICAgKmxlbnAgPSAoKG1lbWJ1Zl9vYmplY3Qg Kikgc2VsZiktPmxlbmd0aDsKKysgIGV4cF9pdGVyYXRlIChleHAsIGV4cF90eXBlc19tYXJrX3Vz ZWRfaXRlciwgTlVMTCwgTlVMTCk7CisgfQorIAorIHZvaWQKK2RpZmYgLS1naXQgYS9nZGIvcGFy c2VyLWRlZnMuaCBiL2dkYi9wYXJzZXItZGVmcy5oCitpbmRleCAxNjI1NTc1Li5kMDcyZjg2IDEw MDY0NAorLS0tIGEvZ2RiL3BhcnNlci1kZWZzLmgKKysrKyBiL2dkYi9wYXJzZXItZGVmcy5oCitA QCAtMTk0LDYgKzE5NCw4IEBAIGV4dGVybiB2b2lkIG9wZXJhdG9yX2xlbmd0aF9zdGFuZGFyZCAo Y29uc3Qgc3RydWN0IGV4cHJlc3Npb24gKiwgaW50LCBpbnQgKiwKKyAJCQkJICAgICAgaW50ICop OworIAorIGV4dGVybiBpbnQgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIGludCBwb3MsCisrCQkJCSAgICBpbnQgKCp0eXBlX2Z1bmMpIChzdHJ1Y3QgdHlw ZSAqdHlwZSwKKysJCQkJCQkgICAgICB2b2lkICpkYXRhKSwKKyAJCQkJICAgIGludCAoKm9iamZp bGVfZnVuYykKKyAJCQkJICAgICAgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXRh KSwKKyAJCQkJICAgIHZvaWQgKmRhdGEpOworQEAgLTI5MSw2ICsyOTMsNyBAQCBzdHJ1Y3QgZXhw X2Rlc2NyaXB0b3IKKyAgICAgICAgdmFsdWUgc2hvdWxkIGJlIGltbWVkaWF0ZWx5IHJldHVybmVk IHRvIHRoZSBjYWxsZXIuICBPdGhlcndpc2UgemVybworICAgICAgICBzaG91bGQgYmUgcmV0dXJu ZWQuICAqLworICAgICBpbnQgKCpvcGVyYXRvcl9jaGVjaykgKHN0cnVjdCBleHByZXNzaW9uICpl eHAsIGludCBwb3MsCisrCQkJICAgaW50ICgqdHlwZV9mdW5jKSAoc3RydWN0IHR5cGUgKnR5cGUs IHZvaWQgKmRhdGEpLAorIAkJCSAgIGludCAoKm9iamZpbGVfZnVuYykgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLAorIAkJCQkJCXZvaWQgKmRhdGEpLAorIAkJCSAgIHZvaWQgKmRhdGEpOworQEAg LTMyOSw0ICszMzIsOCBAQCBleHRlcm4gdm9pZCBwYXJzZXJfZnByaW50ZiAoRklMRSAqLCBjb25z dCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5URiAoMiwgMyk7CisgCisgZXh0ZXJuIGludCBl eHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSk7CisgCisrZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiArCi0rICByZXR1cm4gMTsKLSt9 CisrZXh0ZXJuIHZvaWQgZXhwX3R5cGVzX21hcmtfdXNlZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4 cCk7CisrCisgI2VuZGlmIC8qIFBBUlNFUl9ERUZTX0ggKi8KK2RpZmYgLS1naXQgYS9nZGIvcHBj LWxpbnV4LW5hdC5jIGIvZ2RiL3BwYy1saW51eC1uYXQuYworaW5kZXggMThkZGVlNy4uNjUyYjAy YSAxMDA2NDQKKy0tLSBhL2dkYi9wcGMtbGludXgtbmF0LmMKKysrKyBiL2dkYi9wcGMtbGludXgt bmF0LmMKK0BAIC0yMDEwLDYgKzIwMTAsMjQgQEAgcHBjX2xpbnV4X3JlbW92ZV93YXRjaHBvaW50 IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAorICAgcmV0dXJuIHJldDsKKyB9Cisg CisrLyogU2VlIHRhcmdldF9kZXRhY2hfd2F0Y2hwb2ludHMuICBEbyBub3QgdXNlIHdyYXBwZXIK KysgICBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgYXMgaXQgd291bGQgbW9kaWZ5IHRoZSBy ZWdpc3RlciBjYWNoZQorKyAgIChzYXZlZF9kYWJyX3ZhbHVlKS4gICovCiArCi0rc3RhdGljIFB5 X3NzaXplX3QKLStnZXRfY2hhcl9idWZmZXIgKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IHNl Z21lbnQsIGNoYXIgKipwdHJwdHIpCisrc3RhdGljIGludAorK3BwY19saW51eF9kZXRhY2hfd2F0 Y2hwb2ludHMgKHZvaWQpCiArewotKyAgdm9pZCAqcHRyID0gTlVMTDsKLSsgIFB5X3NzaXplX3Qg cmV0OworKyAgcGlkX3QgdGlkOwogKwotKyAgcmV0ID0gZ2V0X3JlYWRfYnVmZmVyIChzZWxmLCBz ZWdtZW50LCAmcHRyKTsKLSsgICpwdHJwdHIgPSAoY2hhciAqKSBwdHI7CisrICB0aWQgPSBUSURH RVQgKGluZmVyaW9yX3B0aWQpOworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQg KGluZmVyaW9yX3B0aWQpOwogKwotKyAgcmV0dXJuIHJldDsKKysgIGlmIChwdHJhY2UgKFBUUkFD RV9TRVRfREVCVUdSRUcsIHRpZCwgTlVMTCwgTlVMTCkgPCAwKQorKyAgICByZXR1cm4gLTE7Cisr ICByZXR1cm4gMDsKICt9CiArCi0rLyogUHl0aG9uIGRvZXNuJ3QgcHJvdmlkZSBhIGRlY2VudCB3 YXkgdG8gZ2V0IGNvbXBhdGliaWxpdHkgaGVyZS4gICovCi0rI2lmIEhBVkVfTElCUFlUSE9OMl80 Ci0rI2RlZmluZSBDSEFSQlVGRkVSUFJPQ19OQU1FIGdldGNoYXJidWZmZXJwcm9jCi0rI2Vsc2UK LSsjZGVmaW5lIENIQVJCVUZGRVJQUk9DX05BTUUgY2hhcmJ1ZmZlcnByb2MKLSsjZW5kaWYKKyBz dGF0aWMgdm9pZAorIHBwY19saW51eF9uZXdfdGhyZWFkIChwdGlkX3QgcHRpZCkKKyB7CitAQCAt MjM0OSw2ICsyMzY3LDcgQEAgX2luaXRpYWxpemVfcHBjX2xpbnV4X25hdCAodm9pZCkKKyAgIHQt PnRvX3JlZ2lvbl9va19mb3JfaHdfd2F0Y2hwb2ludCA9IHBwY19saW51eF9yZWdpb25fb2tfZm9y X2h3X3dhdGNocG9pbnQ7CisgICB0LT50b19pbnNlcnRfd2F0Y2hwb2ludCA9IHBwY19saW51eF9p bnNlcnRfd2F0Y2hwb2ludDsKKyAgIHQtPnRvX3JlbW92ZV93YXRjaHBvaW50ID0gcHBjX2xpbnV4 X3JlbW92ZV93YXRjaHBvaW50OworKyAgdC0+dG9fZGV0YWNoX3dhdGNocG9pbnRzID0gcHBjX2xp bnV4X2RldGFjaF93YXRjaHBvaW50czsKKyAgIHQtPnRvX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCA9 IHBwY19saW51eF9zdG9wcGVkX2J5X3dhdGNocG9pbnQ7CisgICB0LT50b19zdG9wcGVkX2RhdGFf YWRkcmVzcyA9IHBwY19saW51eF9zdG9wcGVkX2RhdGFfYWRkcmVzczsKKyAgIHQtPnRvX3dhdGNo cG9pbnRfYWRkcl93aXRoaW5fcmFuZ2UgPSBwcGNfbGludXhfd2F0Y2hwb2ludF9hZGRyX3dpdGhp bl9yYW5nZTsKK2RpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBiL2dkYi9wcmludGNtZC5jCitp bmRleCA1NTg2NzY3Li4xNDRlODUxIDEwMDY0NAorLS0tIGEvZ2RiL3ByaW50Y21kLmMKKysrKyBi L2dkYi9wcmludGNtZC5jCitAQCAtOTcxLDYgKzk3MSwxMSBAQCBwcmludF9jb21tYW5kXzEgKGNo YXIgKmV4cCwgaW50IGluc3BlY3QsIGludCB2b2lkcHJpbnQpCisgICBlbHNlCisgICAgIHZhbCA9 IGFjY2Vzc192YWx1ZV9oaXN0b3J5ICgwKTsKKyAKKysgIC8qIERvIG5vdCB0cnkgdG8gT0JKRUNU X0FERFJFU1NfU0VUIGhlcmUgYW55dGhpbmcuICBXZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUKKysg ICAgIHNvdXJjZSB2YXJpYWJsZSBiYXNlIGFkZHJlc3NlcyBhcyBmb3VuZCBieSBSRUFEX1ZBUl9W QUxVRS4gIFRoZSB2YWx1ZSBoZXJlCisrICAgICBjYW4gYmUgYWxyZWFkeSBhIGNhbGN1bGF0ZWQg ZXhwcmVzc2lvbiBhZGRyZXNzIGluYXBwcm9wcmlhdGUgZm9yCisrICAgICBEV19PUF9wdXNoX29i amVjdF9hZGRyZXNzLiAgKi8KICsKLStzdGF0aWMgUHlCdWZmZXJQcm9jcyBidWZmZXJfcHJvY3Mg PSB7Ci0rICBnZXRfcmVhZF9idWZmZXIsCi0rICBnZXRfd3JpdGVfYnVmZmVyLAotKyAgZ2V0X3Nl Z19jb3VudCwKLSsgIC8qIFRoZSBjYXN0IGhlcmUgd29ya3MgYXJvdW5kIGEgZGlmZmVyZW5jZSBi ZXR3ZWVuIFB5dGhvbiAyLjQgYW5kCi0rICAgICBQeXRob24gMi41LiAgKi8KLSsgIChDSEFSQlVG RkVSUFJPQ19OQU1FKSBnZXRfY2hhcl9idWZmZXIKLSt9OworICAgaWYgKHZvaWRwcmludCB8fCAo dmFsICYmIHZhbHVlX3R5cGUgKHZhbCkgJiYKKyAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUg KHZhbCkpICE9IFRZUEVfQ09ERV9WT0lEKSkKKyAgICAgeworQEAgLTE0NzEsNiArMTQ3NiwyMiBA QCB4X2NvbW1hbmQgKGNoYXIgKmV4cCwgaW50IGZyb21fdHR5KQorIAlzZXRfaW50ZXJuYWx2YXIg KGxvb2t1cF9pbnRlcm5hbHZhciAoIl9fIiksIGxhc3RfZXhhbWluZV92YWx1ZSk7CisgICAgIH0K KyB9CiArCi0rc3RhdGljIFB5VHlwZU9iamVjdCBtZW1idWZfb2JqZWN0X3R5cGUgPSB7Ci0rICBQ eU9iamVjdF9IRUFEX0lOSVQgKE5VTEwpCi0rICAwLAkJCQkgIC8qb2Jfc2l6ZSovCi0rICAiZ2Ri Lk1lbWJ1ZiIsCQkJICAvKnRwX25hbWUqLwotKyAgc2l6ZW9mIChtZW1idWZfb2JqZWN0KSwJICAv KnRwX2Jhc2ljc2l6ZSovCi0rICAwLAkJCQkgIC8qdHBfaXRlbXNpemUqLwotKyAgbWJweV9kZWFs bG9jLAkJCSAgLyp0cF9kZWFsbG9jKi8KLSsgIDAsCQkJCSAgLyp0cF9wcmludCovCi0rICAwLAkJ CQkgIC8qdHBfZ2V0YXR0ciovCi0rICAwLAkJCQkgIC8qdHBfc2V0YXR0ciovCi0rICAwLAkJCQkg IC8qdHBfY29tcGFyZSovCi0rICAwLAkJCQkgIC8qdHBfcmVwciovCi0rICAwLAkJCQkgIC8qdHBf YXNfbnVtYmVyKi8KLSsgIDAsCQkJCSAgLyp0cF9hc19zZXF1ZW5jZSovCi0rICAwLAkJCQkgIC8q dHBfYXNfbWFwcGluZyovCi0rICAwLAkJCQkgIC8qdHBfaGFzaCAqLwotKyAgMCwJCQkJICAvKnRw X2NhbGwqLwotKyAgbWJweV9zdHIsCQkJICAvKnRwX3N0ciovCi0rICAwLAkJCQkgIC8qdHBfZ2V0 YXR0cm8qLwotKyAgMCwJCQkJICAvKnRwX3NldGF0dHJvKi8KLSsgICZidWZmZXJfcHJvY3MsCQkg IC8qdHBfYXNfYnVmZmVyKi8KLSsgIFB5X1RQRkxBR1NfREVGQVVMVCwJCSAgLyp0cF9mbGFncyov Ci0rICAiR0RCIG1lbW9yeSBidWZmZXIgb2JqZWN0IiwgCSAgLyp0cF9kb2MqLwotKyAgMCwJCQkJ ICAvKiB0cF90cmF2ZXJzZSAqLwotKyAgMCwJCQkJICAvKiB0cF9jbGVhciAqLwotKyAgMCwJCQkJ ICAvKiB0cF9yaWNoY29tcGFyZSAqLwotKyAgMCwJCQkJICAvKiB0cF93ZWFrbGlzdG9mZnNldCAq LwotKyAgMCwJCQkJICAvKiB0cF9pdGVyICovCi0rICAwLAkJCQkgIC8qIHRwX2l0ZXJuZXh0ICov Ci0rICAwLAkJCQkgIC8qIHRwX21ldGhvZHMgKi8KLSsgIDAsCQkJCSAgLyogdHBfbWVtYmVycyAq LwotKyAgMCwJCQkJICAvKiB0cF9nZXRzZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfYmFzZSAqLwot KyAgMCwJCQkJICAvKiB0cF9kaWN0ICovCi0rICAwLAkJCQkgIC8qIHRwX2Rlc2NyX2dldCAqLwot KyAgMCwJCQkJICAvKiB0cF9kZXNjcl9zZXQgKi8KLSsgIDAsCQkJCSAgLyogdHBfZGljdG9mZnNl dCAqLwotKyAgMCwJCQkJICAvKiB0cF9pbml0ICovCi0rICAwLAkJCQkgIC8qIHRwX2FsbG9jICov Ci0rICBQeVR5cGVfR2VuZXJpY05ldwkJICAvKiB0cF9uZXcgKi8KLSt9OworKy8qIENhbGwgdHlw ZV9tYXJrX3VzZWQgZm9yIGFueSBUWVBFcyByZWZlcmVuY2VkIGZyb20gdGhpcyBHREIgc291cmNl IGZpbGUuICAqLwogKwotK3ZvaWQKLStnZGJweV9pbml0aWFsaXplX21lbWJ1ZiAodm9pZCkKKytz dGF0aWMgdm9pZAorK3ByaW50X3R5cGVzX21hcmtfdXNlZCAodm9pZCkKICt7Ci0rICBpZiAoUHlU eXBlX1JlYWR5ICgmbWVtYnVmX29iamVjdF90eXBlKSA8IDApCi0rICAgIHJldHVybjsKKysgIHN0 cnVjdCBkaXNwbGF5ICpkOwogKwotKyAgUHlfSU5DUkVGICgmbWVtYnVmX29iamVjdF90eXBlKTsK LSsgIFB5TW9kdWxlX0FkZE9iamVjdCAoZ2RiX21vZHVsZSwgIk1lbWJ1ZiIsIChQeU9iamVjdCAq KSAmbWVtYnVmX29iamVjdF90eXBlKTsKKysgIGlmIChsYXN0X2V4YW1pbmVfdmFsdWUpCisrICAg IHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChsYXN0X2V4YW1pbmVfdmFsdWUpKTsKKysKKysg IGZvciAoZCA9IGRpc3BsYXlfY2hhaW47IGQ7IGQgPSBkLT5uZXh0KQorKyAgICBpZiAoZC0+ZXhw KQorKyAgICAgIGV4cF90eXBlc19tYXJrX3VzZWQgKGQtPmV4cCk7CiArfQotZGlmZiAtLWdpdCBh L2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYyBiL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQu YwotaW5kZXggNDM0YzhhNS4uYjIyYzU1NyAxMDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHktcHJl dHR5cHJpbnQuYwotKysrIGIvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCi1AQCAtMjA0LDEw ICsyMDQsMTAgQEAgcHJldHR5X3ByaW50X29uZV92YWx1ZSAoUHlPYmplY3QgKnByaW50ZXIsIHN0 cnVjdCB2YWx1ZSAqKm91dF92YWx1ZSkKLSAJICAgICAgJiYgcmVzdWx0ICE9IFB5X05vbmUpCi0g CSAgICB7Ci0gCSAgICAgICpvdXRfdmFsdWUgPSBjb252ZXJ0X3ZhbHVlX2Zyb21fcHl0aG9uIChy ZXN1bHQpOwotLQkgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQgKCkpCi0tCQkqb3V0X3ZhbHVlID0g TlVMTDsKLS0JICAgICAgUHlfREVDUkVGIChyZXN1bHQpOwotLQkgICAgICByZXN1bHQgPSBOVUxM OwotKyAJICAgICAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotKyAJCSpvdXRfdmFsdWUgPSBOVUxM OwotKyAJICAgICAgUHlfREVDUkVGIChyZXN1bHQpOwotKyAJICAgICAgcmVzdWx0ID0gTlVMTDsK LSAJICAgIH0KLSAJfQotICAgICB9Ci1AQCAtNzAwLDE0ICs3MDAsNyBAQCBnZGJweV9nZXRfdmFy b2JqX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdmFsdWUgKnZhbHVlKQotIHsKLSAgIFB5T2JqZWN0 ICp2YWxfb2JqOwotICAgUHlPYmplY3QgKnByZXR0eV9wcmludGVyID0gTlVMTDsKLS0gIHZvbGF0 aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGV4Y2VwdDsKKysKKyAMCiAgCi0tICBUUllfQ0FUQ0gg KGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotLSAgICB7Ci0tICAgICAgdmFsdWUgPSB2YWx1ZV9j b3B5ICh2YWx1ZSk7Ci0tICAgIH0KLS0gIEdEQl9QWV9IQU5ETEVfRVhDRVBUSU9OIChleGNlcHQp OwotLSAgCi0gICB2YWxfb2JqID0gdmFsdWVfdG9fdmFsdWVfb2JqZWN0ICh2YWx1ZSk7Ci0gICBp ZiAoISB2YWxfb2JqKQotICAgICByZXR1cm4gTlVMTDsKKyAvKiBBZGQgYW4gZXhwcmVzc2lvbiB0 byB0aGUgYXV0by1kaXNwbGF5IGNoYWluLgorQEAgLTI4NjksNCArMjg5MCw2IEBAIFNob3cgcHJp bnRpbmcgb2Ygc291cmNlIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciB3aXRoIDxzeW1ib2w+LiIp LCBOVUxMLAorICAgYWRkX2NvbSAoImV2YWwiLCBub19jbGFzcywgZXZhbF9jb21tYW5kLCBfKCJc CisgQ29udmVydCBcInByaW50ZiBmb3JtYXQgc3RyaW5nXCIsIGFyZzEsIGFyZzIsIGFyZzMsIC4u LiwgYXJnbiB0b1xuXAorIGEgY29tbWFuZCBsaW5lLCBhbmQgY2FsbCBpdC4iKSk7CisrCisrICBv YnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChwcmludF90eXBlc19tYXJrX3VzZWQpOworIH0KIGRp ZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUuYyBiL2dkYi9weXRob24vcHktdHlwZS5jCi1p bmRleCBiOTAxMjU1Li40ZmYxOGU1IDEwMDY0NAoraW5kZXggODIzMjQzNi4uZTlmYzhhYSAxMDA2 NDQKIC0tLSBhL2dkYi9weXRob24vcHktdHlwZS5jCiArKysgYi9nZGIvcHl0aG9uL3B5LXR5cGUu YwotQEAgLTI3LDYgKzI3LDggQEAKLSAjaW5jbHVkZSAiZGVtYW5nbGUuaCIKLSAjaW5jbHVkZSAi b2JqZmlsZXMuaCIKK0BAIC0yOSw2ICsyOSw4IEBACiAgI2luY2x1ZGUgImxhbmd1YWdlLmgiCisg I2luY2x1ZGUgInZlYy5oIgorICNpbmNsdWRlICJiY2FjaGUuaCIKICsjaW5jbHVkZSAib2JzZXJ2 ZXIuaCIKICsjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgogIAogIHR5cGVkZWYgc3RydWN0IHB5dHlf dHlwZV9vYmplY3QKICB7Ci1AQCAtMzUsMTEgKzM3LDE3IEBAIHR5cGVkZWYgc3RydWN0IHB5dHlf dHlwZV9vYmplY3QKK0BAIC0zNywxMSArMzksMTcgQEAgdHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBl X29iamVjdAogIAogICAgLyogSWYgYSBUeXBlIG9iamVjdCBpcyBhc3NvY2lhdGVkIHdpdGggYW4g b2JqZmlsZSwgaXQgaXMga2VwdCBvbiBhCiAgICAgICBkb3VibHktbGlua2VkIGxpc3QsIHJvb3Rl ZCBpbiB0aGUgb2JqZmlsZS4gIFRoaXMgbGV0cyB1cyBjb3B5IHRoZQpAQCAtMTAwNjYsNyArNDk4 NCw3IEBAIGluZGV4IGI5MDEyNTUuLjRmZjE4ZTUgMTAwNjQ0CiAgc3RhdGljIFB5VHlwZU9iamVj dCB0eXBlX29iamVjdF90eXBlOwogIAogIC8qIEEgRmllbGQgb2JqZWN0LiAgKi8KLUBAIC02MTgs OCArNjI2LDU5IEBAIHR5cHlfc3RyIChQeU9iamVjdCAqc2VsZikKK0BAIC05MTksOCArOTI3LDU5 IEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGlu dCBvcCkKICAKICAMCiAgCkBAIC0xMDEyNiw3ICs1MDQ0LDcgQEAgaW5kZXggYjkwMTI1NS4uNGZm MThlNSAxMDA2NDQKICBzdGF0aWMgdm9pZAogIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9i amZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQogIHsKLUBAIC02MzcsMTIgKzY5NiwxMyBAQCBz YXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkK K0BAIC05MzgsMTIgKzk5NywxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBvYmpmaWxl ICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICAgICAgewogICAgICAgIHR5cGVfb2JqZWN0ICpuZXh0 ID0gb2JqLT5uZXh0OwogIApAQCAtMTAxNDQsNyArNTA2Miw3IEBAIGluZGV4IGI5MDEyNTUuLjRm ZjE4ZTUgMTAwNjQ0CiAgCiAgICAgICAgb2JqID0gbmV4dDsKICAgICAgfQotQEAgLTY1Myw0MiAr NzEzLDI1IEBAIHNhdmVfb2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZv aWQgKmRhdHVtKQorQEAgLTk1NCw0MiArMTAxNCwyNSBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICB9CiAgCiAgc3RhdGljIHZvaWQK QEAgLTEwMTk5LDcgKzUxMTcsNyBAQCBpbmRleCBiOTAxMjU1Li40ZmYxOGU1IDEwMDY0NAogIH0K ICAKICAvKiBDcmVhdGUgYSBuZXcgVHlwZSByZWZlcnJpbmcgdG8gVFlQRS4gICovCi1AQCAtNjk5 LDcgKzc0MiwxMCBAQCB0eXBlX3RvX3R5cGVfb2JqZWN0IChzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BA IC0xMDAwLDcgKzEwNDMsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5 cGUpCiAgCiAgICB0eXBlX29iaiA9IFB5T2JqZWN0X05ldyAodHlwZV9vYmplY3QsICZ0eXBlX29i amVjdF90eXBlKTsKICAgIGlmICh0eXBlX29iaikKQEAgLTEwMjExLDcgKzUxMjksNyBAQCBpbmRl eCBiOTAxMjU1Li40ZmYxOGU1IDEwMDY0NAogIAogICAgcmV0dXJuIChQeU9iamVjdCAqKSB0eXBl X29iajsKICB9Ci1AQCAtNzczLDYgKzgxOSw4IEBAIGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZv aWQpCitAQCAtMTA3NCw2ICsxMTIwLDggQEAgZ2RicHlfaW5pdGlhbGl6ZV90eXBlcyAodm9pZCkK ICAKICAgIFB5X0lOQ1JFRiAoJmZpZWxkX29iamVjdF90eXBlKTsKICAgIFB5TW9kdWxlX0FkZE9i amVjdCAoZ2RiX21vZHVsZSwgIkZpZWxkIiwgKFB5T2JqZWN0ICopICZmaWVsZF9vYmplY3RfdHlw ZSk7CkBAIC0xMDIyMSw0ODMgKzUxMzksNDkgQEAgaW5kZXggYjkwMTI1NS4uNGZmMThlNSAxMDA2 NDQKICAKICAMCiBkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weS12YWx1ZS5jIGIvZ2RiL3B5dGhv bi9weS12YWx1ZS5jCi1pbmRleCAyMDI0MDIxLi5lOGJlMTJkIDEwMDY0NAoraW5kZXggNDQ0NTY1 NS4uOGIwNmZkOCAxMDA2NDQKIC0tLSBhL2dkYi9weXRob24vcHktdmFsdWUuYwogKysrIGIvZ2Ri L3B5dGhvbi9weS12YWx1ZS5jCi1AQCAtMjUsNiArMjUsNyBAQAotICNpbmNsdWRlICJsYW5ndWFn ZS5oIgotICNpbmNsdWRlICJkZnAuaCIKLSAjaW5jbHVkZSAidmFscHJpbnQuaCIKK0BAIC0yOCw2 ICsyOCw3IEBACisgI2luY2x1ZGUgImluZmNhbGwuaCIKKyAjaW5jbHVkZSAiZXhwcmVzc2lvbi5o IgorICNpbmNsdWRlICJjcC1hYmkuaCIKICsjaW5jbHVkZSAib2JzZXJ2ZXIuaCIKICAKICAjaWZk ZWYgSEFWRV9QWVRIT04KICAKLUBAIC0xMDY3LDYgKzEwNjgsMTcgQEAgZ2RicHlfaXNfdmFsdWVf b2JqZWN0IChQeU9iamVjdCAqb2JqKQotICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2Jq LCAmdmFsdWVfb2JqZWN0X3R5cGUpOwotIH0KLSAKLSsvKiBDYWxsIHR5cGVfbWFya191c2VkIGZv ciBhbnkgVFlQRXMgcmVmZXJlbmNlZCBmcm9tIHRoaXMgR0RCIHNvdXJjZSBmaWxlLiAgKi8KLSsK LStzdGF0aWMgdm9pZAotK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQpCi0rewotKyAgdmFs dWVfb2JqZWN0ICppdGVyOwotKwotKyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRl cjsgaXRlciA9IGl0ZXItPm5leHQpCi0rICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChp dGVyLT52YWx1ZSkpOwotK30KLSsKLSB2b2lkCi0gZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMgKHZv aWQpCi0gewotQEAgLTEwNzcsNiArMTA4OSw4IEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2 b2lkKQotICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmpl Y3QgKikgJnZhbHVlX29iamVjdF90eXBlKTsKLSAKLSAgIHZhbHVlc19pbl9weXRob24gPSBOVUxM OwotKwotKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHl0aG9uX3R5cGVzX21hcmtfdXNl ZCk7Ci0gfQotIAotIAwKLWRpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5dGhvbi1pbnRlcm5hbC5o IGIvZ2RiL3B5dGhvbi9weXRob24taW50ZXJuYWwuaAotaW5kZXggMmI4ZDMwMS4uMGFmOTljOCAx MDA2NDQKLS0tLSBhL2dkYi9weXRob24vcHl0aG9uLWludGVybmFsLmgKLSsrKyBiL2dkYi9weXRo b24vcHl0aG9uLWludGVybmFsLmgKLUBAIC04MiwxMCArODIsMTEgQEAgc3RydWN0IGxhbmd1YWdl X2RlZm47Ci0gc3RydWN0IHByb2dyYW1fc3BhY2U7Ci0gCi0gZXh0ZXJuIFB5T2JqZWN0ICpnZGJf bW9kdWxlOwotLWV4dGVybiBQeVR5cGVPYmplY3QgdmFsdWVfb2JqZWN0X3R5cGU7Ci0gZXh0ZXJu IFB5VHlwZU9iamVjdCBibG9ja19vYmplY3RfdHlwZTsKLStleHRlcm4gUHlUeXBlT2JqZWN0IHZh bHVlX29iamVjdF90eXBlOwotIGV4dGVybiBQeVR5cGVPYmplY3Qgc3ltYm9sX29iamVjdF90eXBl OwotIAotKy8qIFVzZWQgaW4gcHl0aG9uLWluZmVyaW9yLmMuICAqLwotIHR5cGVkZWYgc3RydWN0 Ci0gewotICAgUHlPYmplY3RfSEVBRAotQEAgLTEyNiw2ICsxMjcsMTAgQEAgUHlPYmplY3QgKmJs b2NrX3RvX2Jsb2NrX29iamVjdCAoc3RydWN0IGJsb2NrICpibG9jaywgc3RydWN0IG9iamZpbGUg Km9iamZpbGUpOwotIFB5T2JqZWN0ICp2YWx1ZV90b192YWx1ZV9vYmplY3QgKHN0cnVjdCB2YWx1 ZSAqdik7Ci0gUHlPYmplY3QgKnR5cGVfdG9fdHlwZV9vYmplY3QgKHN0cnVjdCB0eXBlICopOwot IFB5T2JqZWN0ICpmcmFtZV9pbmZvX3RvX2ZyYW1lX29iamVjdCAoc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lKTsKLStQeU9iamVjdCAqZnJhbWVfaW5mb190b19mcmFtZV9vYmplY3QgKHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSk7Ci0rdGhyZWFkX29iamVjdCAqY3JlYXRlX3RocmVhZF9vYmplY3Qg KHN0cnVjdCB0aHJlYWRfaW5mbyAqdHApOwotK3RocmVhZF9vYmplY3QgKmZpbmRfdGhyZWFkX29i amVjdCAocHRpZF90IHB0aWQpOwotK1B5T2JqZWN0ICpmaW5kX2luZmVyaW9yX29iamVjdCAoaW50 IHBpZCk7Ci0gCi0gUHlPYmplY3QgKnBzcGFjZV90b19wc3BhY2Vfb2JqZWN0IChzdHJ1Y3QgcHJv Z3JhbV9zcGFjZSAqKTsKLSBQeU9iamVjdCAqcHNweV9nZXRfcHJpbnRlcnMgKFB5T2JqZWN0ICos IHZvaWQgKik7Ci1AQCAtMTQ1LDggKzE1MCwxMSBAQCBzdHJ1Y3QgdHlwZSAqdHlwZV9vYmplY3Rf dG9fdHlwZSAoUHlPYmplY3QgKm9iaik7Ci0gc3RydWN0IHN5bXRhYiAqc3ltdGFiX29iamVjdF90 b19zeW10YWIgKFB5T2JqZWN0ICpvYmopOwotIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbF9v YmplY3RfdG9fc3ltdGFiX2FuZF9saW5lIChQeU9iamVjdCAqb2JqKTsKLSAKLStQeU9iamVjdCAq Z2RicHlfZ2V0X2hvb2tfZnVuY3Rpb24gKGNvbnN0IGNoYXIgKik7Ci0gdm9pZCBnZGJweV9pbml0 aWFsaXplX2F1dG9fbG9hZCAodm9pZCk7Ci0rCi0gdm9pZCBnZGJweV9pbml0aWFsaXplX3ZhbHVl cyAodm9pZCk7Ci0rdm9pZCBnZGJweV9pbml0aWFsaXplX2JyZWFrcG9pbnRzICh2b2lkKTsKLSB2 b2lkIGdkYnB5X2luaXRpYWxpemVfZnJhbWVzICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRpYWxp emVfc3ltdGFicyAodm9pZCk7Ci0gdm9pZCBnZGJweV9pbml0aWFsaXplX2NvbW1hbmRzICh2b2lk KTsKLUBAIC0xNTQsNiArMTYyLDcgQEAgdm9pZCBnZGJweV9pbml0aWFsaXplX3N5bWJvbHMgKHZv aWQpOwotIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9zeW10YWJzICh2b2lkKTsKLSB2b2lkIGdkYnB5 X2luaXRpYWxpemVfYmxvY2tzICh2b2lkKTsKLSB2b2lkIGdkYnB5X2luaXRpYWxpemVfdHlwZXMg KHZvaWQpOwotK3ZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9ibG9ja3MgKHZvaWQpOwotIHZvaWQgZ2Ri cHlfaW5pdGlhbGl6ZV9mdW5jdGlvbnMgKHZvaWQpOwotIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9w c3BhY2UgKHZvaWQpOwotIHZvaWQgZ2RicHlfaW5pdGlhbGl6ZV9vYmpmaWxlICh2b2lkKTsKLUBA IC0xNzEsNiArMTgwLDEyIEBAIHN0cnVjdCBjbGVhbnVwICplbnN1cmVfcHl0aG9uX2VudiAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0gZXh0ZXJuIHN0cnVjdCBnZGJhcmNoICpweXRob25fZ2Ri YXJjaDsKLSBleHRlcm4gY29uc3Qgc3RydWN0IGxhbmd1YWdlX2RlZm4gKnB5dGhvbl9sYW5ndWFn ZTsKLSAKLStjaGFyICpnZGJweV9wYXJzZV9jb21tYW5kX25hbWUgKGNoYXIgKnRleHQsCi0rCQkJ CXN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICoqKmJhc2VfbGlzdCwKLSsJCQkJc3RydWN0IGNtZF9s aXN0X2VsZW1lbnQgKipzdGFydF9saXN0KTsKLSsKLStQeU9iamVjdCAqZ2RicHlfcGFyYW1ldGVy X3ZhbHVlIChlbnVtIHZhcl90eXBlcywgdm9pZCAqKTsKLSsKLSAvKiBVc2UgdGhpcyBhZnRlciBh IFRSWV9FWENFUFQgdG8gdGhyb3cgdGhlIGFwcHJvcHJpYXRlIFB5dGhvbgotICAgIGV4Y2VwdGlv bi4gICovCi0gI2RlZmluZSBHREJfUFlfSEFORExFX0VYQ0VQVElPTihFeGNlcHRpb24pCQkJCVwK LUBAIC0yMjEsMTMgKzIzNiwxNCBAQCBpbnQgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9iamVj dCAqb2JqKTsKLSBQeU9iamVjdCAqYXBwbHlfdmFyb2JqX3ByZXR0eV9wcmludGVyIChQeU9iamVj dCAqcHJpbnRfb2JqLAotIAkJCQkgICAgICAgc3RydWN0IHZhbHVlICoqcmVwbGFjZW1lbnQpOwot IFB5T2JqZWN0ICpnZGJweV9nZXRfdmFyb2JqX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdmFsdWUg KnZhbHVlKTsKLStQeU9iamVjdCAqZ2RicHlfaW5zdGFudGlhdGVfcHJpbnRlciAoUHlPYmplY3Qg KmNvbnMsIFB5T2JqZWN0ICp2YWx1ZSk7Ci0gY2hhciAqZ2RicHlfZ2V0X2Rpc3BsYXlfaGludCAo UHlPYmplY3QgKnByaW50ZXIpOwotIFB5T2JqZWN0ICpnZGJweV9kZWZhdWx0X3Zpc3VhbGl6ZXIg KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncyk7Ci0gCi0tZXh0ZXJuIFB5T2JqZWN0ICpn ZGJweV9kb2NfY3N0OwotIGV4dGVybiBQeU9iamVjdCAqZ2RicHlfY2hpbGRyZW5fY3N0OwotIGV4 dGVybiBQeU9iamVjdCAqZ2RicHlfdG9fc3RyaW5nX2NzdDsKLSBleHRlcm4gUHlPYmplY3QgKmdk YnB5X2Rpc3BsYXlfaGludF9jc3Q7Ci0rZXh0ZXJuIFB5T2JqZWN0ICpnZGJweV9kb2NfY3N0Owot IGV4dGVybiBQeU9iamVjdCAqZ2RicHlfZW5hYmxlZF9jc3Q7Ci0gCi0gZXh0ZXJuIFB5T2JqZWN0 ICpnZGJweV9nZGJlcnJvcl9leGM7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uYyBi L2dkYi9weXRob24vcHl0aG9uLmMKLWluZGV4IDczNDZmYmEuLjM0NzA4YzQgMTAwNjQ0Ci0tLS0g YS9nZGIvcHl0aG9uL3B5dGhvbi5jCi0rKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCi1AQCAtMjgs NiArMjgsNyBAQAotICNpbmNsdWRlICJ2YWx1ZS5oIgotICNpbmNsdWRlICJsYW5ndWFnZS5oIgot ICNpbmNsdWRlICJleGNlcHRpb25zLmgiCi0rI2luY2x1ZGUgImV2ZW50LWxvb3AuaCIKLSAKLSAj aW5jbHVkZSA8Y3R5cGUuaD4KLSAKLUBAIC00MiwxMCArNDMsMTcgQEAgc3RhdGljIGludCBnZGJw eV9zaG91bGRfcHJpbnRfc3RhY2sgPSAxOwotICNpbmNsdWRlICJjbGkvY2xpLWRlY29kZS5oIgot ICNpbmNsdWRlICJjaGFyc2V0LmgiCi0gI2luY2x1ZGUgInRvcC5oIgotKyNpbmNsdWRlICJzb2xp Yi5oIgotICNpbmNsdWRlICJweXRob24taW50ZXJuYWwuaCIKLSsjaW5jbHVkZSAibGluZXNwZWMu aCIKLSsjaW5jbHVkZSAic3ltdGFiLmgiCi0rI2luY2x1ZGUgInNvdXJjZS5oIgotICNpbmNsdWRl ICJ2ZXJzaW9uLmgiCi0rI2luY2x1ZGUgImluZmVyaW9yLmgiCi0rI2luY2x1ZGUgImdkYnRocmVh ZC5oIgotICNpbmNsdWRlICJ0YXJnZXQuaCIKLSAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCi0rI2lu Y2x1ZGUgImV2ZW50LXRvcC5oIgotIAotIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW107 Ci0gCi1AQCAtMzc0LDYgKzM4MiwxMDUgQEAgZXhlY3V0ZV9nZGJfY29tbWFuZCAoUHlPYmplY3Qg KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCi0gICBQeV9SRVRVUk5fTk9ORTsK LSB9Ci0gCi0rLyogSW1wbGVtZW50YXRpb24gb2YgZ2RiLnNvbGliX2FkZHJlc3MgKExvbmcpIC0+ IFN0cmluZy4KLSsgICBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBob2xk aW5nIGEgZ2l2ZW4gYWRkcmVzcywgb3IgTm9uZS4gICovCi0rCi0rc3RhdGljIFB5T2JqZWN0ICoK LStnZGJweV9zb2xpYl9hZGRyZXNzIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0r ewotKyAgdW5zaWduZWQgbG9uZyBsb25nIHBjOwotKyAgY2hhciAqc29uYW1lOwotKyAgUHlPYmpl Y3QgKnN0cl9vYmo7Ci0rCi0rICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUgKGFyZ3MsICJLIiwgJnBj KSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICBzb25hbWUgPSBzb2xpYl9uYW1lX2Zyb21fYWRk cmVzcyAoY3VycmVudF9wcm9ncmFtX3NwYWNlLCBwYyk7Ci0rICBpZiAoc29uYW1lKQotKyAgICBz dHJfb2JqID0gUHlTdHJpbmdfRGVjb2RlIChzb25hbWUsIHN0cmxlbiAoc29uYW1lKSwgaG9zdF9j aGFyc2V0ICgpLCBOVUxMKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHN0cl9vYmogPSBQeV9O b25lOwotKyAgICAgIFB5X0lOQ1JFRiAoUHlfTm9uZSk7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBz dHJfb2JqOwotK30KLSsKLSsvKiBBIFB5dGhvbiBmdW5jdGlvbiB3aGljaCBpcyBhIHdyYXBwZXIg Zm9yIGRlY29kZV9saW5lXzEuICAqLwotKwotK3N0YXRpYyBQeU9iamVjdCAqCi0rZ2RicHlfZGVj b2RlX2xpbmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLSt7Ci0rICBzdHJ1Y3Qg c3ltdGFic19hbmRfbGluZXMgc2FscyA9IHsgTlVMTCwgMCB9OyAvKiBJbml0aWFsaXplIHRvIGFw cGVhc2UgZ2NjLiAgKi8KLSsgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc2FsOwotKyAgY2hhciAq YXJnID0gTlVMTDsKLSsgIGludCBmcmVlX3NhbHMgPSAwLCBpOwotKyAgUHlPYmplY3QgKnJlc3Vs dCA9IE5VTEw7Ci0rICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleGNlcHQ7Ci0rCi0r ICBpZiAoISBQeUFyZ19QYXJzZVR1cGxlIChhcmdzLCAifHMiLCAmYXJnKSkKLSsgICAgcmV0dXJu IE5VTEw7Ci0rCi0rICBUUllfQ0FUQ0ggKGV4Y2VwdCwgUkVUVVJOX01BU0tfQUxMKQotKyAgICB7 Ci0rICAgICAgaWYgKGFyZykKLSsJewotKwkgIGNoYXIgKmNvcHk7Ci0rCi0rCSAgYXJnID0gc3Ry ZHVwIChhcmcpOwotKwkgIGNvcHkgPSBhcmc7Ci0rCi0rCSAgc2FscyA9IGRlY29kZV9saW5lXzEg KCZjb3B5LCAwLCAwLCAwLCAwLCAwKTsKLSsJICBmcmVlX3NhbHMgPSAxOwotKwl9Ci0rICAgICAg ZWxzZQotKwl7Ci0rCSAgc2V0X2RlZmF1bHRfc291cmNlX3N5bXRhYl9hbmRfbGluZSAoKTsKLSsJ ICBzYWwgPSBnZXRfY3VycmVudF9zb3VyY2Vfc3ltdGFiX2FuZF9saW5lICgpOwotKwkgIHNhbHMu c2FscyA9ICZzYWw7Ci0rCSAgc2Fscy5uZWx0cyA9IDE7Ci0rCX0KLSsgICAgfQotKyAgaWYgKGFy ZykKLSsgICAgeGZyZWUgKGFyZyk7Ci0rCi0rICBpZiAoZXhjZXB0LnJlYXNvbiA8IDApCi0rICAg IHsKLSsgICAgICBpZiAoZnJlZV9zYWxzKQotKwl4ZnJlZSAoc2Fscy5zYWxzKTsKLSsgICAgICAv KiBXZSBrbm93IHRoaXMgd2lsbCBhbHdheXMgdGhyb3cuICAqLwotKyAgICAgIEdEQl9QWV9IQU5E TEVfRVhDRVBUSU9OIChleGNlcHQpOwotKyAgICB9Ci0rCi0rICBpZiAoc2Fscy5uZWx0cykKLSsg ICAgewotKyAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3IChzYWxzLm5lbHRzKTsKLSsgICAgICBm b3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQotKwl7Ci0rCSAgUHlPYmplY3QgKm9iajsK LSsJICBjaGFyICpzdHI7Ci0rCi0rCSAgb2JqID0gc3ltdGFiX2FuZF9saW5lX3RvX3NhbF9vYmpl Y3QgKHNhbHMuc2Fsc1tpXSk7Ci0rCSAgaWYgKCEgb2JqKQotKwkgICAgewotKwkgICAgICBQeV9E RUNSRUYgKHJlc3VsdCk7Ci0rCSAgICAgIHJlc3VsdCA9IE5VTEw7Ci0rCSAgICAgIGJyZWFrOwot KwkgICAgfQotKwotKwkgIFB5VHVwbGVfU2V0SXRlbSAocmVzdWx0LCBpLCBvYmopOwotKwl9Ci0r ICAgIH0KLSsKLSsgIGlmIChmcmVlX3NhbHMpCi0rICAgIHhmcmVlIChzYWxzLnNhbHMpOwotKwot KyAgaWYgKHJlc3VsdCkKLSsgICAgcmV0dXJuIHJlc3VsdDsKLSsgIFB5X1JFVFVSTl9OT05FOwot K30KLSsKLSAvKiBQYXJzZSBhIHN0cmluZyBhbmQgZXZhbHVhdGUgaXQgYXMgYW4gZXhwcmVzc2lv bi4gICovCi0gc3RhdGljIFB5T2JqZWN0ICoKLSBnZGJweV9wYXJzZV9hbmRfZXZhbCAoUHlPYmpl Y3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotQEAgLTQxNCw2ICs1MjEsMTE0IEBAIHNvdXJjZV9w eXRob25fc2NyaXB0IChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZpbGUpCi0gCi0gDAotIAot Ky8qIFBvc3RpbmcgYW5kIGhhbmRsaW5nIGV2ZW50cy4gICovCi0rCi0rLyogQSBzaW5nbGUgZXZl bnQuICAqLwotK3N0cnVjdCBnZGJweV9ldmVudAotK3sKLSsgIC8qIFRoZSBQeXRob24gZXZlbnQu ICBUaGlzIGlzIGp1c3QgYSBjYWxsYWJsZSBvYmplY3QuICAqLwotKyAgUHlPYmplY3QgKmV2ZW50 OwotKyAgLyogVGhlIG5leHQgZXZlbnQuICAqLwotKyAgc3RydWN0IGdkYnB5X2V2ZW50ICpuZXh0 OwotK307Ci0rCi0rLyogQWxsIHBlbmRpbmcgZXZlbnRzLiAgKi8KLStzdGF0aWMgc3RydWN0IGdk YnB5X2V2ZW50ICpnZGJweV9ldmVudF9saXN0OwotKy8qIFRoZSBmaW5hbCBsaW5rIG9mIHRoZSBl dmVudCBsaXN0LiAgKi8KLStzdGF0aWMgc3RydWN0IGdkYnB5X2V2ZW50ICoqZ2RicHlfZXZlbnRf bGlzdF9lbmQ7Ci0rCi0rLyogV2UgdXNlIGEgZmlsZSBoYW5kbGVyLCBhbmQgbm90IGFuIGFzeW5j IGhhbmRsZXIsIHNvIHRoYXQgd2UgY2FuCi0rICAgd2FrZSB1cCB0aGUgbWFpbiB0aHJlYWQgZXZl biB3aGVuIGl0IGlzIGJsb2NrZWQgaW4gcG9sbCgpLiAgKi8KLStzdGF0aWMgaW50IGdkYnB5X2V2 ZW50X2Zkc1syXTsKLSsKLSsvKiBUaGUgZmlsZSBoYW5kbGVyIGNhbGxiYWNrLiAgVGhpcyByZWFk cyBmcm9tIHRoZSBpbnRlcm5hbCBwaXBlLCBhbmQKLSsgICB0aGVuIHByb2Nlc3NlcyB0aGUgUHl0 aG9uIGV2ZW50IHF1ZXVlLiAgVGhpcyB3aWxsIGFsd2F5cyBiZSBydW4gaW4KLSsgICB0aGUgbWFp biBnZGIgdGhyZWFkLiAgKi8KLStzdGF0aWMgdm9pZAotK2dkYnB5X3J1bl9ldmVudHMgKGludCBl cnIsIGdkYl9jbGllbnRfZGF0YSBpZ25vcmUpCi0rewotKyAgc3RydWN0IGNsZWFudXAgKmNsZWFu dXA7Ci0rICBjaGFyIGJ1ZmZlclsxMDBdOwotKyAgaW50IHI7Ci0rCi0rICBjbGVhbnVwID0gZW5z dXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOwot KwotKyAgLyogSnVzdCByZWFkIHdoYXRldmVyIGlzIGF2YWlsYWJsZSBvbiB0aGUgZmQuICBJdCBp cyByZWxhdGl2ZWx5Ci0rICAgICBoYXJtbGVzcyBpZiB0aGVyZSBhcmUgYW55IGJ5dGVzIGxlZnQg b3Zlci4gICovCi0rICByID0gcmVhZCAoZ2RicHlfZXZlbnRfZmRzWzBdLCBidWZmZXIsIHNpemVv ZiAoYnVmZmVyKSk7Ci0rCi0rICB3aGlsZSAoZ2RicHlfZXZlbnRfbGlzdCkKLSsgICAgewotKyAg ICAgIC8qIERpc3BhdGNoaW5nIHRoZSBldmVudCBtaWdodCBwdXNoIGEgbmV3IGVsZW1lbnQgb250 byB0aGUgZXZlbnQKLSsJIGxvb3AsIHNvIHdlIHVwZGF0ZSBoZXJlICJhdG9taWNhbGx5IGVub3Vn aCIuICAqLwotKyAgICAgIHN0cnVjdCBnZGJweV9ldmVudCAqaXRlbSA9IGdkYnB5X2V2ZW50X2xp c3Q7Ci0rICAgICAgZ2RicHlfZXZlbnRfbGlzdCA9IGdkYnB5X2V2ZW50X2xpc3QtPm5leHQ7Ci0r ICAgICAgaWYgKGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVMTCkKLSsJZ2RicHlfZXZlbnRfbGlzdF9l bmQgPSAmZ2RicHlfZXZlbnRfbGlzdDsKLSsKLSsgICAgICAvKiBJZ25vcmUgZXJyb3JzLiAgKi8K LSsgICAgICBQeU9iamVjdF9DYWxsT2JqZWN0IChpdGVtLT5ldmVudCwgTlVMTCk7Ci0rCi0rICAg ICAgUHlfREVDUkVGIChpdGVtLT5ldmVudCk7Ci0rICAgICAgeGZyZWUgKGl0ZW0pOwotKyAgICB9 Ci0rCi0rICBkb19jbGVhbnVwcyAoY2xlYW51cCk7Ci0rfQotKwotKy8qIFN1Ym1pdCBhbiBldmVu dCB0byB0aGUgZ2RiIHRocmVhZC4gICovCi0rc3RhdGljIFB5T2JqZWN0ICoKLStnZGJweV9wb3N0 X2V2ZW50IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0rewotKyAgc3RydWN0IGdk YnB5X2V2ZW50ICpldmVudDsKLSsgIFB5T2JqZWN0ICpmdW5jOwotKyAgaW50IHdha2V1cDsKLSsK LSsgIGlmICghUHlBcmdfUGFyc2VUdXBsZSAoYXJncywgIk8iLCAmZnVuYykpCi0rICAgIHJldHVy biBOVUxMOwotKwotKyAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrIChmdW5jKSkKLSsgICAgewotKyAg ICAgIFB5RXJyX1NldFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLCAiUG9zdGVkIGV2ZW50IGlz IG5vdCBjYWxsYWJsZSIpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rICBQeV9J TkNSRUYgKGZ1bmMpOwotKwotKyAgLyogRnJvbSBoZXJlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGZ1 bmN0aW9uLCB3ZSBoYXZlIHRoZSBHSUwsIHNvIHdlCi0rICAgICBjYW4gb3BlcmF0ZSBvbiBvdXIg Z2xvYmFsIGRhdGEgc3RydWN0dXJlcyB3aXRob3V0IHdvcnJ5aW5nLiAgKi8KLSsgIHdha2V1cCA9 IGdkYnB5X2V2ZW50X2xpc3QgPT0gTlVMTDsKLSsKLSsgIGV2ZW50ID0gWE5FVyAoc3RydWN0IGdk YnB5X2V2ZW50KTsKLSsgIGV2ZW50LT5ldmVudCA9IGZ1bmM7Ci0rICBldmVudC0+bmV4dCA9IE5V TEw7Ci0rICAqZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSBldmVudDsKLSsgIGdkYnB5X2V2ZW50X2xp c3RfZW5kID0gJmV2ZW50LT5uZXh0OwotKwotKyAgLyogV2FrZSB1cCBnZGIgd2hlbiBuZWVkZWQu ICAqLwotKyAgaWYgKHdha2V1cCkKLSsgICAgewotKyAgICAgIGNoYXIgYyA9ICdxJzsJCS8qIEFu eXRoaW5nLiAqLwotKyAgICAgIGlmICh3cml0ZSAoZ2RicHlfZXZlbnRfZmRzWzFdLCAmYywgMSkg IT0gMSkKLSsgICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8gKFB5RXhjX0lPRXJyb3Ip OwotKyAgICB9Ci0rCi0rICBQeV9SRVRVUk5fTk9ORTsKLSt9Ci0rCi0rLyogSW5pdGlhbGl6ZSB0 aGUgUHl0aG9uIGV2ZW50IGhhbmRsZXIuICAqLwotK3N0YXRpYyB2b2lkCi0rZ2RicHlfaW5pdGlh bGl6ZV9ldmVudHMgKHZvaWQpCi0rewotKyAgaWYgKCFwaXBlIChnZGJweV9ldmVudF9mZHMpKQot KyAgICB7Ci0rICAgICAgZ2RicHlfZXZlbnRfbGlzdF9lbmQgPSAmZ2RicHlfZXZlbnRfbGlzdDsK LSsgICAgICBhZGRfZmlsZV9oYW5kbGVyIChnZGJweV9ldmVudF9mZHNbMF0sIGdkYnB5X3J1bl9l dmVudHMsIE5VTEwpOwotKyAgICB9Ci0rfQotKwotKwwKLSsKLSAvKiBQcmludGluZy4gICovCi0g Ci0gLyogQSBweXRob24gZnVuY3Rpb24gdG8gd3JpdGUgYSBzaW5nbGUgc3RyaW5nIHVzaW5nIGdk YidzIGZpbHRlcmVkCi1AQCAtNDU5LDYgKzY3NCw1MyBAQCBnZGJweV9wcmludF9zdGFjayAodm9p ZCkKK0BAIC0xMjIwLDYgKzEyMjEsMTcgQEAgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9iamVj dCAqb2JqKQorICAgcmV0dXJuIFB5T2JqZWN0X1R5cGVDaGVjayAob2JqLCAmdmFsdWVfb2JqZWN0 X3R5cGUpOworIH0KICAKLSAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgUHJvZ3NwYWNlLgotICAgIFRo ZXJlIGFsd2F5cyBpcyBvbmUuICAqLwotKy8qIFRydWUgaWYgJ2dkYiAtUCcgd2FzIHVzZWQsIGZh bHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBydW5uaW5nX3B5dGhvbl9zY3JpcHQ7Ci0r Ci0rLyogVHJ1ZSBpZiB3ZSBhcmUgY3VycmVudGx5IGluIGEgY2FsbCB0byAnZ2RiLmNsaScsIGZh bHNlIG90aGVyd2lzZS4gICovCi0rc3RhdGljIGludCBpbl9jbGk7Ci0rCi0rLyogRW50ZXIgdGhl IGNvbW1hbmQgbG9vcC4gICovCisrLyogQ2FsbCB0eXBlX21hcmtfdXNlZCBmb3IgYW55IFRZUEVz IHJlZmVyZW5jZWQgZnJvbSB0aGlzIEdEQiBzb3VyY2UgZmlsZS4gICovCiArCi0rc3RhdGljIFB5 T2JqZWN0ICoKLStnZGJweV9jbGkgKFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2Vk MikKKytzdGF0aWMgdm9pZAorK3B5dGhvbl90eXBlc19tYXJrX3VzZWQgKHZvaWQpCiArewotKyAg aWYgKCEgcnVubmluZ19weXRob25fc2NyaXB0IHx8IGluX2NsaSkKLSsgICAgcmV0dXJuIFB5RXJy X0Zvcm1hdCAoUHlFeGNfUnVudGltZUVycm9yLCAiY2Fubm90IGludm9rZSBDTEkgcmVjdXJzaXZl bHkiKTsKLSsKLSsgIGluX2NsaSA9IDE7Ci0rICBjbGlfY29tbWFuZF9sb29wICgpOwotKyAgaW5f Y2xpID0gMDsKKysgIHZhbHVlX29iamVjdCAqaXRlcjsKICsKLSsgIFB5X1JFVFVSTl9OT05FOwor KyAgZm9yIChpdGVyID0gdmFsdWVzX2luX3B5dGhvbjsgaXRlcjsgaXRlciA9IGl0ZXItPm5leHQp CisrICAgIHR5cGVfbWFya191c2VkICh2YWx1ZV90eXBlIChpdGVyLT52YWx1ZSkpOwogK30KICsK LSsvKiBTZXQgdXAgdGhlIFB5dGhvbiBhcmd1bWVudCB2ZWN0b3IgYW5kIGV2YWx1YXRlIGEgc2Ny aXB0LiAgVGhpcyBpcwotKyAgIHVzZWQgdG8gaW1wbGVtZW50ICdnZGIgLVAnLiAgKi8KLSsKLSt2 b2lkCi0rcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBG SUxFICppbnB1dDsKLSsKLSsgIC8qIFdlIG5ldmVyIGZyZWUgdGhpcywgc2luY2Ugd2UgcGxhbiB0 byBleGl0IGF0IHRoZSBlbmQuICAqLwotKyAgZW5zdXJlX3B5dGhvbl9lbnYgKGdldF9jdXJyZW50 X2FyY2ggKCksIGN1cnJlbnRfbGFuZ3VhZ2UpOworIHZvaWQKKyBnZGJweV9pbml0aWFsaXplX3Zh bHVlcyAodm9pZCkKKyB7CitAQCAtMTIzMCw2ICsxMjQyLDggQEAgZ2RicHlfaW5pdGlhbGl6ZV92 YWx1ZXMgKHZvaWQpCisgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUsICJWYWx1ZSIs IChQeU9iamVjdCAqKSAmdmFsdWVfb2JqZWN0X3R5cGUpOworIAorICAgdmFsdWVzX2luX3B5dGhv biA9IE5VTEw7CiArCi0rICBydW5uaW5nX3B5dGhvbl9zY3JpcHQgPSAxOwotKyAgUHlTeXNfU2V0 QXJndiAoYXJnYyAtIDEsIGFyZ3YgKyAxKTsKLSsgIGlucHV0ID0gZm9wZW4gKGFyZ3ZbMF0sICJy Iik7Ci0rICBpZiAoISBpbnB1dCkKLSsgICAgewotKyAgICAgIGZwcmludGYgKHN0ZGVyciwgImNv dWxkIG5vdCBvcGVuICVzOiAlc1xuIiwgYXJndlswXSwgc3RyZXJyb3IgKGVycm5vKSk7Ci0rICAg ICAgZXhpdCAoMSk7Ci0rICAgIH0KLSsgIFB5UnVuX1NpbXBsZUZpbGUgKGlucHV0LCBhcmd2WzBd KTsKLSsgIGZjbG9zZSAoaW5wdXQpOwotKyAgZXhpdCAoMCk7Ci0rfQotKwotKwwKLSsKLSAKLSBz dGF0aWMgUHlPYmplY3QgKgotIGdkYnB5X2dldF9jdXJyZW50X3Byb2dzcGFjZSAoUHlPYmplY3Qg KnVudXNlZDEsIFB5T2JqZWN0ICp1bnVzZWQyKQotQEAgLTcyMCw2ICs5ODIsNyBAQCBFbmFibGVz IG9yIGRpc2FibGVzIHByaW50aW5nIG9mIFB5dGhvbiBzdGFjayB0cmFjZXMuIiksCi0gICBnZGJw eV9pbml0aWFsaXplX2xhenlfc3RyaW5nICgpOwotICAgZ2RicHlfaW5pdGlhbGl6ZV90aHJlYWQg KCk7Ci0gICBnZGJweV9pbml0aWFsaXplX2luZmVyaW9yICgpOwotKyAgZ2RicHlfaW5pdGlhbGl6 ZV9ldmVudHMgKCk7Ci0gCi0gICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJpbXBvcnQgZ2RiIik7Ci0g ICBQeVJ1bl9TaW1wbGVTdHJpbmcgKCJnZGIucHJldHR5X3ByaW50ZXJzID0gW10iKTsKLUBAIC03 ODcsNiArMTA1MCw4IEBAIHN0YXRpYyBQeU1ldGhvZERlZiBHZGJNZXRob2RzW10gPQotICAgICAi R2V0IGEgdmFsdWUgZnJvbSBoaXN0b3J5IiB9LAotICAgeyAiZXhlY3V0ZSIsIChQeUNGdW5jdGlv bikgZXhlY3V0ZV9nZGJfY29tbWFuZCwgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKLSAg ICAgIkV4ZWN1dGUgYSBnZGIgY29tbWFuZCIgfSwKLSsgIHsgImNsaSIsIGdkYnB5X2NsaSwgTUVU SF9OT0FSR1MsCi0rICAgICJFbnRlciB0aGUgZ2RiIENMSSIgfSwKLSAgIHsgInBhcmFtZXRlciIs IGdkYnB5X3BhcmFtZXRlciwgTUVUSF9WQVJBUkdTLAotICAgICAiUmV0dXJuIGEgZ2RiIHBhcmFt ZXRlcidzIHZhbHVlIiB9LAotIAotQEAgLTgyNSwxMSArMTA5MCwyMSBAQCBhIGJvb2xlYW4gaW5k aWNhdGluZyBpZiBuYW1lIGlzIGEgZmllbGQgb2YgdGhlIGN1cnJlbnQgaW1wbGllZCBhcmd1bWVu dFxuXAotIGB0aGlzJyAod2hlbiB0aGUgY3VycmVudCBsYW5ndWFnZSBpcyBvYmplY3Qtb3JpZW50 ZWQpLiIgfSwKLSAgIHsgImJsb2NrX2Zvcl9wYyIsIGdkYnB5X2Jsb2NrX2Zvcl9wYywgTUVUSF9W QVJBUkdTLAotICAgICAiUmV0dXJuIHRoZSBibG9jayBjb250YWluaW5nIHRoZSBnaXZlbiBwYyB2 YWx1ZSwgb3IgTm9uZS4iIH0sCi0rICB7ICJzb2xpYl9hZGRyZXNzIiwgZ2RicHlfc29saWJfYWRk cmVzcywgTUVUSF9WQVJBUkdTLAotKyAgICAic29saWJfYWRkcmVzcyAoTG9uZykgLT4gU3RyaW5n LlxuXAotK1JldHVybiB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgaG9sZGluZyBhIGdp dmVuIGFkZHJlc3MsIG9yIE5vbmUuIiB9LAotKyAgeyAiZGVjb2RlX2xpbmUiLCBnZGJweV9kZWNv ZGVfbGluZSwgTUVUSF9WQVJBUkdTLAotKyAgICAiRGVjb2RlIGEgc3RyaW5nIGFyZ3VtZW50IHRo ZSB3YXkgdGhhdCAnYnJlYWsnIG9yICdlZGl0JyBkb2VzLlxuXAotK1JldHVybiBhIHR1cGxlIGhv bGRpbmcgdGhlIGZpbGUgbmFtZSAob3IgTm9uZSkgYW5kIGxpbmUgbnVtYmVyIChvciBOb25lKS5c blwKLStOb3RlOiBtYXkgbGF0ZXIgY2hhbmdlIHRvIHJldHVybiBhbiBvYmplY3QuIiB9LAotICAg eyAicGFyc2VfYW5kX2V2YWwiLCBnZGJweV9wYXJzZV9hbmRfZXZhbCwgTUVUSF9WQVJBUkdTLAot ICAgICAicGFyc2VfYW5kX2V2YWwgKFN0cmluZykgLT4gVmFsdWUuXG5cCi0gUGFyc2UgU3RyaW5n IGFzIGFuIGV4cHJlc3Npb24sIGV2YWx1YXRlIGl0LCBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYXMg YSBWYWx1ZS4iCi0gICB9LAotIAotKyAgeyAicG9zdF9ldmVudCIsIGdkYnB5X3Bvc3RfZXZlbnQs IE1FVEhfVkFSQVJHUywKLSsgICAgIlBvc3QgYW4gZXZlbnQgaW50byBnZGIncyBldmVudCBsb29w LiIgfSwKLSsKLSAgIHsgInRhcmdldF9jaGFyc2V0IiwgZ2RicHlfdGFyZ2V0X2NoYXJzZXQsIE1F VEhfTk9BUkdTLAotICAgICAidGFyZ2V0X2NoYXJzZXQgKCkgLT4gc3RyaW5nLlxuXAotIFJldHVy biB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCB0YXJnZXQgY2hhcnNldC4iIH0sCi1kaWZmIC0tZ2l0 IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRob24vcHl0aG9uLmgKLWluZGV4IGFmZmQ0 YTQuLjU0MDc4NzggMTAwNjQ0Ci0tLS0gYS9nZGIvcHl0aG9uL3B5dGhvbi5oCi0rKysgYi9nZGIv cHl0aG9uL3B5dGhvbi5oCi1AQCAtMjgsNiArMjgsOCBAQCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21f Y29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9saW5lICopOwotIAotIHZvaWQgc291cmNl X3B5dGhvbl9zY3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSk7Ci0gCi0rdm9p ZCBydW5fcHl0aG9uX3NjcmlwdCAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KTsKLSsKLSBpbnQgYXBw bHlfdmFsX3ByZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUg KnZhbGFkZHIsCi0gCQkJICAgICAgaW50IGVtYmVkZGVkX29mZnNldCwgQ09SRV9BRERSIGFkZHJl c3MsCi0gCQkJICAgICAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwgaW50IHJlY3Vyc2UsCisrICBv YnNlcnZlcl9hdHRhY2hfbWFya191c2VkIChweXRob25fdHlwZXNfbWFya191c2VkKTsKKyB9Cisg CisgDAogZGlmZiAtLWdpdCBhL2dkYi9zb2xpYi1zdnI0LmMgYi9nZGIvc29saWItc3ZyNC5jCi1p bmRleCAxZjEzNWQ0Li40ODk4MzhkIDEwMDY0NAoraW5kZXggZGIyMTM2MC4uMTg5N2QxMCAxMDA2 NDQKIC0tLSBhL2dkYi9zb2xpYi1zdnI0LmMKICsrKyBiL2dkYi9zb2xpYi1zdnI0LmMKLUBAIC0x Mjc4LDcgKzEyNzgsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUgKENPUkVfQUREUiBw YykKK0BAIC0xMjc2LDcgKzEyNzYsOCBAQCBzdnI0X2luX2R5bnN5bV9yZXNvbHZlX2NvZGUgKENP UkVfQUREUiBwYykKICAJICAgJiYgcGMgPCBpbmZvLT5pbnRlcnBfdGV4dF9zZWN0X2hpZ2gpCiAg CSAgfHwgKHBjID49IGluZm8tPmludGVycF9wbHRfc2VjdF9sb3cKICAJICAgICAgJiYgcGMgPCBp bmZvLT5pbnRlcnBfcGx0X3NlY3RfaGlnaCkKQEAgLTEwNzA3LDg5ICs1MTkxLDExIEBAIGluZGV4 IDFmMTM1ZDQuLjQ4OTgzOGQgMTAwNjQ0CiAgfQogIAogIC8qIEdpdmVuIGFuIGV4ZWN1dGFibGUn cyBBQkZEIGFuZCB0YXJnZXQsIGNvbXB1dGUgdGhlIGVudHJ5LXBvaW50Ci1kaWZmIC0tZ2l0IGEv Z2RiL3N5bWZpbGUuYyBiL2dkYi9zeW1maWxlLmMKLWluZGV4IDQyZjdhZTMuLjM3MWRiMGQgMTAw NjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1AQCAtMTA1OSw2 ICsxMDU5LDkgQEAgc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNfb3Jfb2Zmc2V0cyAoYmZkICph YmZkLAotICAgY29uc3QgY2hhciAqbmFtZSA9IGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpOwotICAg Y29uc3QgaW50IGZyb21fdHR5ID0gYWRkX2ZsYWdzICYgU1lNRklMRV9WRVJCT1NFOwotIAotKyAg aWYgKHJlYWRub3dfc3ltYm9sX2ZpbGVzKQotKyAgICBmbGFncyB8PSBPQkpGX1JFQUROT1c7Ci0r Ci0gICBteV9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cF9iZmRfY2xvc2UgKGFiZmQpOwotIAotICAg LyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIGJ1cnAgaWYgd2UnZCBiZQotQEAgLTEwOTUsNyArMTA5 OCw3IEBAIHN5bWJvbF9maWxlX2FkZF93aXRoX2FkZHJzX29yX29mZnNldHMgKGJmZCAqYWJmZCwK LSAgICAgIHRoZSBnZGIgc3RhcnR1cCBjb21tYW5kIGxpbmUgb3Igb24gYSBwZXIgc3ltYm9sIGZp bGUgYmFzaXMuICBFeHBhbmQKLSAgICAgIGFsbCBwYXJ0aWFsIHN5bWJvbCB0YWJsZXMgZm9yIHRo aXMgb2JqZmlsZSBpZiBzby4gKi8KLSAKLS0gIGlmICgoZmxhZ3MgJiBPQkpGX1JFQUROT1cpIHx8 IHJlYWRub3dfc3ltYm9sX2ZpbGVzKQotKyAgaWYgKChmbGFncyAmIE9CSkZfUkVBRE5PVykpCi0g ICAgIHsKLSAgICAgICBpZiAoZnJvbV90dHkgfHwgaW5mb192ZXJib3NlKQotIAl7Ci1AQCAtMTUz Myw3ICsxNTM2LDcgQEAgc3ltYm9sX2ZpbGVfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21f dHR5KQotIHZvaWQKLSBzZXRfaW5pdGlhbF9sYW5ndWFnZSAodm9pZCkKLSB7Ci0tICBjaGFyICpm aWxlbmFtZTsKLSsgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOwotICAgZW51bSBsYW5ndWFnZSBsYW5n ID0gbGFuZ3VhZ2VfdW5rbm93bjsKLSAKLSAgIGZpbGVuYW1lID0gZmluZF9tYWluX2ZpbGVuYW1l ICgpOwotQEAgLTI2NjAsNyArMjY2Myw3IEBAIGluaXRfZmlsZW5hbWVfbGFuZ3VhZ2VfdGFibGUg KHZvaWQpCi0gfQotIAotIGVudW0gbGFuZ3VhZ2UKLS1kZWR1Y2VfbGFuZ3VhZ2VfZnJvbV9maWxl bmFtZSAoY2hhciAqZmlsZW5hbWUpCi0rZGVkdWNlX2xhbmd1YWdlX2Zyb21fZmlsZW5hbWUgKGNv bnN0IGNoYXIgKmZpbGVuYW1lKQotIHsKLSAgIGludCBpOwotICAgY2hhciAqY3A7Ci1kaWZmIC0t Z2l0IGEvZ2RiL3N5bWZpbGUuaCBiL2dkYi9zeW1maWxlLmgKLWluZGV4IGQ1M2M0NjUuLjU4MTUz NTQgMTAwNjQ0Ci0tLS0gYS9nZGIvc3ltZmlsZS5oCi0rKysgYi9nZGIvc3ltZmlsZS5oCi1AQCAt MTcxLDYgKzE3MSwxNSBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJCQkgICBp bnQga2luZCwgY29uc3QgY2hhciAqbmFtZSwKLSAJCQkJICAgZG9tYWluX2VudW0gZG9tYWluKTsK LSAKLSsgIC8qIFRoaXMgaXMgY2FsbGVkIHRvIGV4cGFuZCBzeW1ib2wgdGFibGVzIGJlZm9yZSBs b29raW5nIHVwIGEKLSsgICAgIHN5bWJvbC4gIEEgYmFja2VuZCBjYW4gY2hvb3NlIHRvIGltcGxl bWVudCB0aGlzIGFuZCB0aGVuIGhhdmUgaXRzCi0rICAgICBgbG9va3VwX3N5bWJvbCcgaG9vayBh bHdheXMgcmV0dXJuIE5VTEwsIG9yIHRoZSByZXZlcnNlLiAgKEl0Ci0rICAgICBkb2Vzbid0IG1h a2Ugc2Vuc2UgdG8gaW1wbGVtZW50IGJvdGguKSAgVGhlIGFyZ3VtZW50cyBhcmUgYXMgZm9yCi0r ICAgICBgbG9va3VwX3N5bWJvbCcuICAqLwotKyAgdm9pZCAoKnByZV9leHBhbmRfc3ltdGFic19t YXRjaGluZykgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgICAgICAgaW50IGtpbmQs IGNvbnN0IGNoYXIgKm5hbWUsCi0rCQkJCSAgICAgICBkb21haW5fZW51bSBkb21haW4pOwotKwot ICAgLyogUHJpbnQgc3RhdGlzdGljcyBhYm91dCBhbnkgaW5kaWNlcyBsb2FkZWQgZm9yIE9CSkZJ TEUuICBUaGUKLSAgICAgIHN0YXRpc3RpY3Mgc2hvdWxkIGJlIHByaW50ZWQgdG8gZ2RiX3N0ZG91 dC4gIFRoaXMgaXMgdXNlZCBmb3IKLSAgICAgICJtYWludCBwcmludCBzdGF0aXN0aWNzIi4gICov Ci1AQCAtMjAxLDcgKzIxMCw3IEBAIHN0cnVjdCBxdWlja19zeW1ib2xfZnVuY3Rpb25zCi0gCi0g ICAvKiBSZXR1cm4gdGhlIGZpbGUgbmFtZSBvZiB0aGUgZmlsZSBob2xkaW5nIHRoZSBzeW1ib2wg aW4gT0JKRklMRQotICAgICAgbmFtZWQgTkFNRS4gIElmIG5vIHN1Y2ggc3ltYm9sIGV4aXN0cyBp biBPQkpGSUxFLCByZXR1cm4gTlVMTC4gICovCi0tICBjaGFyICooKmZpbmRfc3ltYm9sX2ZpbGUp IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqbmFtZSk7Ci0rICBjb25zdCBj aGFyICooKmZpbmRfc3ltYm9sX2ZpbGUpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgY29uc3Qg Y2hhciAqbmFtZSk7Ci0gCi0gICAvKiBUaGlzIG1ldGhvZCBpcyBzcGVjaWZpYyB0byBBZGEuICBJ dCB3YWxrcyB0aGUgcGFydGlhbCBzeW1ib2wKLSAgICAgIHRhYmxlcyBvZiBPQkpGSUxFIGxvb2tp bmcgZm9yIGEgbmFtZSBtYXRjaC4gIFdJTERfTUFUQ0ggYW5kCi1AQCAtNTY2LDYgKzU3NSw3IEBA IGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqaW5jcmVtZW50X3JlYWRpbmdfc3ltdGFiICh2b2lkKTsK LSAKLSBleHRlcm4gaW50IGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKik7Ci0gCi0r ZXh0ZXJuIGludCBkd2FyZjJfaW5pdGlhbGl6ZV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqKTsK LSBleHRlcm4gdm9pZCBkd2FyZjJfYnVpbGRfcHN5bXRhYnMgKHN0cnVjdCBvYmpmaWxlICopOwot IGV4dGVybiB2b2lkIGR3YXJmMl9idWlsZF9mcmFtZV9pbmZvIChzdHJ1Y3Qgb2JqZmlsZSAqKTsK LSAKIGRpZmYgLS1naXQgYS9nZGIvc3ltbWlzYy5jIGIvZ2RiL3N5bW1pc2MuYwotaW5kZXggNjJl NmI5Ny4uMDBkYzYxMyAxMDA2NDQKK2luZGV4IGVmNjMyMTYuLjFjYzkwODIgMTAwNjQ0CiAtLS0g YS9nZGIvc3ltbWlzYy5jCiArKysgYi9nZGIvc3ltbWlzYy5jCi1AQCAtMjYyLDYgKzI2Miw5IEBA IGR1bXBfbXN5bWJvbHMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgdWlfZmlsZSAq b3V0ZmlsZSkKK0BAIC0yNjQsNiArMjY0LDkgQEAgZHVtcF9tc3ltYm9scyAoc3RydWN0IG9iamZp bGUgKm9iamZpbGUsIHN0cnVjdCB1aV9maWxlICpvdXRmaWxlKQogIAljYXNlIG1zdF90ZXh0Ogog IAkgIG1zX3R5cGUgPSAnVCc7CiAgCSAgYnJlYWs7CkBAIC0xMDgwMCwxMTAgKzUyMDYsMjMgQEAg aW5kZXggNjJlNmI5Ny4uMDBkYzYxMyAxMDA2NDQKICAJICBtc190eXBlID0gJ1MnOwogIAkgIGJy ZWFrOwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuYyBiL2dkYi9zeW10YWIuYwotaW5kZXggMmM0 YzllNC4uMjhmMDQ1MCAxMDA2NDQKK2luZGV4IGE2MDIzYjkuLjlkNTc3YjAgMTAwNjQ0CiAtLS0g YS9nZGIvc3ltdGFiLmMKICsrKyBiL2dkYi9zeW10YWIuYwotQEAgLTEyOTUsMTYgKzEyOTUsMjUg QEAgbG9va3VwX3N5bWJvbF9hdXhfc3ltdGFicyAoaW50IGJsb2NrX2luZGV4LCBjb25zdCBjaGFy ICpuYW1lLAotICAgY29uc3Qgc3RydWN0IGJsb2NrICpibG9jazsKLSAgIHN0cnVjdCBzeW10YWIg KnM7Ci0gCi0tICBBTExfUFJJTUFSWV9TWU1UQUJTIChvYmpmaWxlLCBzKQotKyAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQotICAgewotLSAgICBidiA9IEJMT0NLVkVDVE9SIChzKTsKLS0gICAgYmxv Y2sgPSBCTE9DS1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLS0gICAgc3ltID0gbG9v a3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ssIG5hbWUsIGRvbWFpbik7Ci0tICAgIGlmIChzeW0pCi0t ICAgICAgewotLQlibG9ja19mb3VuZCA9IGJsb2NrOwotLQlyZXR1cm4gZml4dXBfc3ltYm9sX3Nl Y3Rpb24gKHN5bSwgb2JqZmlsZSk7Ci0tICAgICAgfQotKyAgICBpZiAob2JqZmlsZS0+c2YpCi0r ICAgICAgb2JqZmlsZS0+c2YtPnFmLT5wcmVfZXhwYW5kX3N5bXRhYnNfbWF0Y2hpbmcgKG9iamZp bGUsCi0rCQkJCQkJICAgIGJsb2NrX2luZGV4LAotKwkJCQkJCSAgICBuYW1lLCBkb21haW4pOwot KwotKyAgICBBTExfT0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQotKyAgICAgIGlmIChzLT5w cmltYXJ5KQotKwl7Ci0rCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0rCSAgYmxvY2sgPSBCTE9D S1ZFQ1RPUl9CTE9DSyAoYnYsIGJsb2NrX2luZGV4KTsKLSsJICBzeW0gPSBsb29rdXBfYmxvY2tf c3ltYm9sIChibG9jaywgbmFtZSwgZG9tYWluKTsKLSsJICBpZiAoc3ltKQotKwkgICAgewotKwkg ICAgICBibG9ja19mb3VuZCA9IGJsb2NrOwotKwkgICAgICByZXR1cm4gZml4dXBfc3ltYm9sX3Nl Y3Rpb24gKHN5bSwgb2JqZmlsZSk7Ci0rCSAgICB9Ci0rCX0KLSAgIH0KLSAKLSAgIHJldHVybiBO VUxMOwotQEAgLTE1NDcsMTUgKzE1NTYsMjQgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5 cGUgKGNvbnN0IGNoYXIgKm5hbWUpCi0gICAgICBvZiB0aGUgZGVzaXJlZCBuYW1lIGFzIGEgZ2xv YmFsLCB0aGVuIGRvIHBzeW10YWItdG8tc3ltdGFiCi0gICAgICBjb252ZXJzaW9uIG9uIHRoZSBm bHkgYW5kIHJldHVybiB0aGUgZm91bmQgc3ltYm9sLiAgKi8KLSAKLS0gIEFMTF9QUklNQVJZX1NZ TVRBQlMgKG9iamZpbGUsIHMpCi0rICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICB7Ci0tICAg IGJ2ID0gQkxPQ0tWRUNUT1IgKHMpOwotLSAgICBibG9jayA9IEJMT0NLVkVDVE9SX0JMT0NLIChi diwgR0xPQkFMX0JMT0NLKTsKLS0gICAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxvY2ss IG5hbWUsIFNUUlVDVF9ET01BSU4pOwotLSAgICBpZiAoc3ltICYmICFUWVBFX0lTX09QQVFVRSAo U1lNQk9MX1RZUEUgKHN5bSkpKQotLSAgICAgIHsKLS0JcmV0dXJuIFNZTUJPTF9UWVBFIChzeW0p OwotLSAgICAgIH0KLSsgICAgaWYgKG9iamZpbGUtPnNmKQotKyAgICAgIG9iamZpbGUtPnNmLT5x Zi0+cHJlX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nIChvYmpmaWxlLAotKwkJCQkJCSAgICBHTE9C QUxfQkxPQ0ssCi0rCQkJCQkJICAgIG5hbWUsIFNUUlVDVF9ET01BSU4pOwotKwotKyAgICBBTExf T0JKRklMRV9TWU1UQUJTIChvYmpmaWxlLCBzKQotKyAgICAgIGlmIChzLT5wcmltYXJ5KQotKwl7 Ci0rCSAgYnYgPSBCTE9DS1ZFQ1RPUiAocyk7Ci0rCSAgYmxvY2sgPSBCTE9DS1ZFQ1RPUl9CTE9D SyAoYnYsIEdMT0JBTF9CTE9DSyk7Ci0rCSAgc3ltID0gbG9va3VwX2Jsb2NrX3N5bWJvbCAoYmxv Y2ssIG5hbWUsIFNUUlVDVF9ET01BSU4pOwotKwkgIGlmIChzeW0gJiYgIVRZUEVfSVNfT1BBUVVF IChTWU1CT0xfVFlQRSAoc3ltKSkpCi0rCSAgICB7Ci0rCSAgICAgIHJldHVybiBTWU1CT0xfVFlQ RSAoc3ltKTsKLSsJICAgIH0KLSsJfQotICAgfQotIAotICAgQUxMX09CSkZJTEVTIChvYmpmaWxl KQotQEAgLTE1OTksMTQgKzE2MTcsMTYgQEAgYmFzaWNfbG9va3VwX3RyYW5zcGFyZW50X3R5cGUg KGNvbnN0IGNoYXIgKm5hbWUpCi0gLyogRklYTUU6ICBXaGF0IGFib3V0IGxhbmd1YWdlcyB3aXRo b3V0IG1haW4oKSBvciBzcGVjaWFsbHkgbGlua2VkCi0gICAgZXhlY3V0YWJsZXMgdGhhdCBoYXZl IG5vIG1haW4oKSA/ICovCi0gCi0tY2hhciAqCi0rY29uc3QgY2hhciAqCi0gZmluZF9tYWluX2Zp bGVuYW1lICh2b2lkKQotIHsKLSAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotLSAgY2hhciAq cmVzdWx0LCAqbmFtZSA9IG1haW5fbmFtZSAoKTsKLSsgIGNoYXIgKm5hbWUgPSBtYWluX25hbWUg KCk7Ci0gCi0gICBBTExfT0JKRklMRVMgKG9iamZpbGUpCi0gICB7Ci0rICAgIGNvbnN0IGNoYXIg KnJlc3VsdDsKLSsKLSAgICAgaWYgKCFvYmpmaWxlLT5zZikKLSAgICAgICBjb250aW51ZTsKLSAg ICAgcmVzdWx0ID0gb2JqZmlsZS0+c2YtPnFmLT5maW5kX3N5bWJvbF9maWxlIChvYmpmaWxlLCBu YW1lKTsKLUBAIC0yOTE0LDcgKzI5MzQsNyBAQCBzZWFyY2hfc3ltYm9scyAoY2hhciAqcmVnZXhw LCBkb21haW5fZW51bSBraW5kLCBpbnQgbmZpbGVzLCBjaGFyICpmaWxlc1tdLAotICAgc3RhdGlj IGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSB0eXBlczNbXQorQEAgLTI5ODgsNyArMjk4OCw3IEBA IHNlYXJjaF9zeW1ib2xzIChjaGFyICpyZWdleHAsIGRvbWFpbl9lbnVtIGtpbmQsIGludCBuZmls ZXMsIGNoYXIgKmZpbGVzW10sCisgICBzdGF0aWMgY29uc3QgZW51bSBtaW5pbWFsX3N5bWJvbF90 eXBlIHR5cGVzM1tdCiAgICAgID0ge21zdF9maWxlX2RhdGEsIG1zdF9zb2xpYl90cmFtcG9saW5l LCBtc3RfYWJzLCBtc3RfdW5rbm93bn07Ci0gICBzdGF0aWMgZW51bSBtaW5pbWFsX3N5bWJvbF90 eXBlIHR5cGVzNFtdCisgICBzdGF0aWMgY29uc3QgZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIHR5 cGVzNFtdCiAtICAgID0ge21zdF9maWxlX2JzcywgbXN0X3RleHQsIG1zdF9hYnMsIG1zdF91bmtu b3dufTsKICsgICAgPSB7bXN0X2ZpbGVfYnNzLCBtc3RfdGV4dF9nbnVfaWZ1bmMsIG1zdF9hYnMs IG1zdF91bmtub3dufTsKICAgIGVudW0gbWluaW1hbF9zeW1ib2xfdHlwZSBvdXJ0eXBlOwogICAg ZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlIG91cnR5cGUyOwogICAgZW51bSBtaW5pbWFsX3N5bWJv bF90eXBlIG91cnR5cGUzOwogZGlmZiAtLWdpdCBhL2dkYi9zeW10YWIuaCBiL2dkYi9zeW10YWIu aAotaW5kZXggYmVkYzEwYS4uZGMyODRlNCAxMDA2NDQKK2luZGV4IGE0MDMyZjguLjk0NGRkMzMg MTAwNjQ0CiAtLS0gYS9nZGIvc3ltdGFiLmgKICsrKyBiL2dkYi9zeW10YWIuaAotQEAgLTI3Nyw2 ICsyNzcsOSBAQCBlbnVtIG1pbmltYWxfc3ltYm9sX3R5cGUKK0BAIC0yOTAsNiArMjkwLDkgQEAg ZW51bSBtaW5pbWFsX3N5bWJvbF90eXBlCiAgewogICAgbXN0X3Vua25vd24gPSAwLAkJLyogVW5r bm93biB0eXBlLCB0aGUgZGVmYXVsdCAqLwogICAgbXN0X3RleHQsCQkJLyogR2VuZXJhbGx5IGV4 ZWN1dGFibGUgaW5zdHJ1Y3Rpb25zICovCkBAIC0xMDkxMyw3ICs1MjMyLDcgQEAgaW5kZXggYmVk YzEwYS4uZGMyODRlNCAxMDA2NDQKICAgIG1zdF9kYXRhLAkJCS8qIEdlbmVyYWxseSBpbml0aWFs aXplZCBkYXRhICovCiAgICBtc3RfYnNzLAkJCS8qIEdlbmVyYWxseSB1bmluaXRpYWxpemVkIGRh dGEgKi8KICAgIG1zdF9hYnMsCQkJLyogR2VuZXJhbGx5IGFic29sdXRlIChub25yZWxvY2F0YWJs ZSkgKi8KLUBAIC05MTcsMTEgKzkyMCwyNSBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqZmluZF9w Y19zZWN0X2Z1bmN0aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKK0BAIC05 NTUsMTEgKzk1OCwyNSBAQCBleHRlcm4gc3RydWN0IHN5bWJvbCAqZmluZF9wY19zZWN0X2Z1bmN0 aW9uIChDT1JFX0FERFIsIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKICAKICAvKiBsb29rdXAgZnVu Y3Rpb24gZnJvbSBhZGRyZXNzLCByZXR1cm4gbmFtZSwgc3RhcnQgYWRkciBhbmQgZW5kIGFkZHIg Ki8KICAKQEAgLTEwOTQxLDcgKzUyNjAsNyBAQCBpbmRleCBiZWRjMTBhLi5kYzI4NGU0IDEwMDY0 NAogIC8qIGxvb2t1cCBwYXJ0aWFsIHN5bWJvbCB0YWJsZSBieSBhZGRyZXNzIGFuZCBzZWN0aW9u ICovCiAgCiAgZXh0ZXJuIHN0cnVjdCBzeW10YWIgKmZpbmRfcGNfc2VjdF9zeW10YWJfdmlhX3Bh cnRpYWwgKENPUkVfQUREUiwKLUBAIC05OTYsNiArMTAxMyw4IEBAIGV4dGVybiBzdHJ1Y3QgbWlu aW1hbF9zeW1ib2wgKmxvb2t1cF9taW5pbWFsX3N5bWJvbF9ieV9wY19uYW1lCitAQCAtMTAzNCw2 ICsxMDUxLDggQEAgZXh0ZXJuIHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqbG9va3VwX21pbmltYWxf c3ltYm9sX2J5X3BjX25hbWUKICAKICBleHRlcm4gc3RydWN0IG1pbmltYWxfc3ltYm9sICpsb29r dXBfbWluaW1hbF9zeW1ib2xfYnlfcGMgKENPUkVfQUREUik7CiAgCkBAIC0xMDk1MCwyNiArNTI2 OSw4IEBAIGluZGV4IGJlZGMxMGEuLmRjMjg0ZTQgMTAwNjQ0CiAgZXh0ZXJuIHN0cnVjdCBtaW5p bWFsX3N5bWJvbCAqCiAgICAgIGxvb2t1cF9taW5pbWFsX3N5bWJvbF9hbmRfb2JqZmlsZSAoY29u c3QgY2hhciAqLAogIAkJCQkgICAgICAgc3RydWN0IG9iamZpbGUgKiopOwotQEAgLTExMzcsNyAr MTE1Niw3IEBAIGV4dGVybiBjaGFyICoqbWFrZV9zb3VyY2VfZmlsZXNfY29tcGxldGlvbl9saXN0 IChjaGFyICosIGNoYXIgKik7Ci0gCi0gaW50IG1hdGNoaW5nX29ial9zZWN0aW9ucyAoc3RydWN0 IG9ial9zZWN0aW9uICosIHN0cnVjdCBvYmpfc2VjdGlvbiAqKTsKLSAKLS1leHRlcm4gY2hhciAq ZmluZF9tYWluX2ZpbGVuYW1lICh2b2lkKTsKLStleHRlcm4gY29uc3QgY2hhciAqZmluZF9tYWlu X2ZpbGVuYW1lICh2b2lkKTsKLSAKLSBleHRlcm4gc3RydWN0IHN5bXRhYiAqZmluZF9saW5lX3N5 bXRhYiAoc3RydWN0IHN5bXRhYiAqLCBpbnQsIGludCAqLCBpbnQgKik7Ci0gCi1AQCAtMTE1MCw3 ICsxMTY5LDcgQEAgZXh0ZXJuIHZvaWQgc2tpcF9wcm9sb2d1ZV9zYWwgKHN0cnVjdCBzeW10YWJf YW5kX2xpbmUgKik7Ci0gCi0gZXh0ZXJuIHZvaWQgY2xlYXJfc3ltdGFiX3VzZXJzICh2b2lkKTsK LSAKLS1leHRlcm4gZW51bSBsYW5ndWFnZSBkZWR1Y2VfbGFuZ3VhZ2VfZnJvbV9maWxlbmFtZSAo Y2hhciAqKTsKLStleHRlcm4gZW51bSBsYW5ndWFnZSBkZWR1Y2VfbGFuZ3VhZ2VfZnJvbV9maWxl bmFtZSAoY29uc3QgY2hhciAqKTsKLSAKLSAvKiBzeW10YWIuYyAqLwotIAogZGlmZiAtLWdpdCBh L2dkYi90YXJnZXQuYyBiL2dkYi90YXJnZXQuYwotaW5kZXggNGNhYmNiZC4uMzRiM2I2MCAxMDA2 NDQKK2luZGV4IDU5ODQxMjUuLjA2NTg5ZDQgMTAwNjQ0CiAtLS0gYS9nZGIvdGFyZ2V0LmMKICsr KyBiL2dkYi90YXJnZXQuYwogQEAgLTEyMyw2ICsxMjMsOCBAQCBzdGF0aWMgaW50IGRlYnVnX3Rv X2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIsIGludCwgaW50LApAQCAtMTA5OTksNyArNTMw MCw3IEBAIGluZGV4IDRjYWJjYmQuLjM0YjNiNjAgMTAwNjQ0CiAgICBkZV9mYXVsdCAodG9fc3Rv cHBlZF9ieV93YXRjaHBvaW50LAogIAkgICAgKGludCAoKikgKHZvaWQpKQogIAkgICAgcmV0dXJu X3plcm8pOwotQEAgLTM0NDAsNiArMzQ0NiwxOSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2lu dCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorQEAgLTM1NzAsNiArMzU3Niwx OSBAQCBkZWJ1Z190b19yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4s IGludCB0eXBlLAogICAgcmV0dXJuIHJldHZhbDsKICB9CiAgCkBAIC0xMTAxOSw3ICs1MzIwLDcg QEAgaW5kZXggNGNhYmNiZC4uMzRiM2I2MCAxMDA2NDQKICBzdGF0aWMgdm9pZAogIGRlYnVnX3Rv X3Rlcm1pbmFsX2luaXQgKHZvaWQpCiAgewotQEAgLTM2ODcsNiArMzcwNiw3IEBAIHNldHVwX3Rh cmdldF9kZWJ1ZyAodm9pZCkKK0BAIC0zODE3LDYgKzM4MzYsNyBAQCBzZXR1cF90YXJnZXRfZGVi dWcgKHZvaWQpCiAgICBjdXJyZW50X3RhcmdldC50b19yZW1vdmVfaHdfYnJlYWtwb2ludCA9IGRl YnVnX3RvX3JlbW92ZV9od19icmVha3BvaW50OwogICAgY3VycmVudF90YXJnZXQudG9faW5zZXJ0 X3dhdGNocG9pbnQgPSBkZWJ1Z190b19pbnNlcnRfd2F0Y2hwb2ludDsKICAgIGN1cnJlbnRfdGFy Z2V0LnRvX3JlbW92ZV93YXRjaHBvaW50ID0gZGVidWdfdG9fcmVtb3ZlX3dhdGNocG9pbnQ7CkBA IC0xMTAyOCwxMCArNTMyOSwxMCBAQCBpbmRleCA0Y2FiY2JkLi4zNGIzYjYwIDEwMDY0NAogICAg Y3VycmVudF90YXJnZXQudG9fc3RvcHBlZF9kYXRhX2FkZHJlc3MgPSBkZWJ1Z190b19zdG9wcGVk X2RhdGFfYWRkcmVzczsKICAgIGN1cnJlbnRfdGFyZ2V0LnRvX3dhdGNocG9pbnRfYWRkcl93aXRo aW5fcmFuZ2UgPSBkZWJ1Z190b193YXRjaHBvaW50X2FkZHJfd2l0aGluX3JhbmdlOwogZGlmZiAt LWdpdCBhL2dkYi90YXJnZXQuaCBiL2dkYi90YXJnZXQuaAotaW5kZXggM2M4YzAxNy4uNjA4YTc0 MiAxMDA2NDQKK2luZGV4IDcyOTBkOTAuLmMwMjZkNzYgMTAwNjQ0CiAtLS0gYS9nZGIvdGFyZ2V0 LmgKICsrKyBiL2dkYi90YXJnZXQuaAotQEAgLTQzMyw2ICs0MzMsNyBAQCBzdHJ1Y3QgdGFyZ2V0 X29wcworQEAgLTQ0NSw2ICs0NDUsNyBAQCBzdHJ1Y3QgdGFyZ2V0X29wcwogICAgICAgICBwcm92 aWRlZCB3aXRoIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldF8qIG1hY3Jvcy4gICovCiAgICAgIGlu dCAoKnRvX3JlbW92ZV93YXRjaHBvaW50KSAoQ09SRV9BRERSLCBpbnQsIGludCwgc3RydWN0IGV4 cHJlc3Npb24gKik7CiAgICAgIGludCAoKnRvX2luc2VydF93YXRjaHBvaW50KSAoQ09SRV9BRERS LCBpbnQsIGludCwgc3RydWN0IGV4cHJlc3Npb24gKik7CkBAIC0xMTAzOSw3ICs1MzQwLDcgQEAg aW5kZXggM2M4YzAxNy4uNjA4YTc0MiAxMDA2NDQKICAKICAgICAgaW50ICgqdG9fc3RvcHBlZF9i eV93YXRjaHBvaW50KSAodm9pZCk7CiAgICAgIGludCB0b19oYXZlX3N0ZXBwYWJsZV93YXRjaHBv aW50OwotQEAgLTEzMTYsNiArMTMxNywxNSBAQCBleHRlcm4gY2hhciAqbm9ybWFsX3BpZF90b19z dHIgKHB0aWRfdCBwdGlkKTsKK0BAIC0xMzI0LDYgKzEzMjUsMTUgQEAgZXh0ZXJuIGNoYXIgKm5v cm1hbF9waWRfdG9fc3RyIChwdGlkX3QgcHRpZCk7CiAgI2RlZmluZQl0YXJnZXRfcmVtb3ZlX3dh dGNocG9pbnQoYWRkciwgbGVuLCB0eXBlLCBjb25kKSBcCiAgICAgICAoKmN1cnJlbnRfdGFyZ2V0 LnRvX3JlbW92ZV93YXRjaHBvaW50KSAoYWRkciwgbGVuLCB0eXBlLCBjb25kKQogIApAQCAtMTEw NTUsMjUgKzUzNTYsNiBAQCBpbmRleCAzYzhjMDE3Li42MDhhNzQyIDEwMDY0NAogICNkZWZpbmUg dGFyZ2V0X2luc2VydF9od19icmVha3BvaW50KGdkYmFyY2gsIGJwX3RndCkgXAogICAgICAgKCpj dXJyZW50X3RhcmdldC50b19pbnNlcnRfaHdfYnJlYWtwb2ludCkgKGdkYmFyY2gsIGJwX3RndCkK ICAKLUBAIC0xMzY5LDYgKzEzNzksMTggQEAgZXh0ZXJuIGludCB0YXJnZXRfc2VhcmNoX21lbW9y eSAoQ09SRV9BRERSIHN0YXJ0X2FkZHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgVUxPTkdFU1QgcGF0dGVybl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgQ09SRV9BRERSICpmb3VuZF9hZGRycCk7Ci0gCi0rLyogVXRpbGl0eSBmdW5jdGlvbnMgd2hp Y2ggY2FuIGJlIHVzZWQgYnkgc2VhcmNoX21lbW9yeSBpbXBsZW1lbnRhdGlvbnMuICAqLwotKwot K3ZvaWQgYWxsb2NhdGVfcGF0dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZnAsIGNoYXIg KipwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgVUxPTkdFU1QgKnBhdHRlcm5fYnVmX3NpemUp OwotKwotK3ZvaWQgaW5jcmVhc2VfcGF0dGVybl9idWZmZXIgKGNoYXIgKipwYXR0ZXJuX2J1ZnAs IGNoYXIgKipwYXR0ZXJuX2J1Zl9lbmQsCi0rCQkJICAgICAgVUxPTkdFU1QgKnBhdHRlcm5fYnVm X3NpemUsIGludCB2YWxfYnl0ZXMpOwotKwotK2ludCBzZWFyY2hfbWVtb3J5IChDT1JFX0FERFIg KnN0YXJ0X2FkZHIsIFVMT05HRVNUICpzZWFyY2hfc3BhY2VfbGVuLAotKwkJICAgY29uc3QgY2hh ciAqcGF0dGVybl9idWYsIFVMT05HRVNUIHBhdHRlcm5fbGVuLAotKwkJICAgQ09SRV9BRERSICpm b3VuZF9hZGRyKTsKLSsKLSAvKiBUcmFjZXBvaW50LXJlbGF0ZWQgb3BlcmF0aW9ucy4gICovCi0g Ci0gI2RlZmluZSB0YXJnZXRfdHJhY2VfaW5pdCgpIFwKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5k ZXggMDAwMDAwMC4uODNmYWFmNgpAQCAtMTI3NzksNDM1ICs3MDYxLDE0NCBAQCBpbmRleCAwMDAw MDAwLi41ZGE3Mzc4CiArIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgogKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KICsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiAg eyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmls ZX0iIGV4ZWN1dGFibGUge2RlYnVnfV0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlIHRlc3QgcHJvZ3JhbSIKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9leGl0 Ci0rZ2RiX3N0YXJ0Ci0rZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8kc3ViZGlyCi0rZ2Ri X2xvYWQgJHtiaW5maWxlfQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICB1bnRlc3RlZCB2 bGEKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3BvaW50IFtnZGJfZ2V0X2xpbmVf bnVtYmVyICJicmVhay1oZXJlIl0KLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJl YWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRlbXAxIiAidHlwZSA9IGNoYXIgXFxcW3Zh cmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDEiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1w MiIgInR5cGUgPSBjaGFyIFxcXFt2YXJpYWJsZVxcXF0iICJmaXJzdDogd2hhdGlzIHRlbXAyIgot K2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDMiICJ0eXBlID0gY2hhciBcXFxbNDhcXFxdIiAiZmlyc3Q6 IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBc XFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBlIHRlbXAxIgotK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMiIg InR5cGUgPSBjaGFyIFxcXFsyNlxcXF0iICJmaXJzdDogcHR5cGUgdGVtcDIiCi0rZ2RiX3Rlc3Qg InB0eXBlIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1w MyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyAyNiB0aW1lcz4iICJm aXJzdDogcHJpbnQgdGVtcDEiCi0rZ2RiX3Rlc3QgInAgdGVtcDIiICIgPSAnMicgPHJlcGVhdHMg MjYgdGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAyIgotK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0g JzMnIDxyZXBlYXRzIDQ4IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1wMyIKLSsKLStnZGJfY29u dGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKLSsKLStnZGJfdGVzdCAid2hhdGlzIHRl bXAxIiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgInNlY29uZDogd2hhdGlzIHRlbXAx IgotK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxd IiAic2Vjb25kOiB3aGF0aXMgdGVtcDIiCi0rZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUg PSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMyIKLSsKLStnZGJfdGVzdCAi cHR5cGUgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1w MSIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbNzhcXFxdIiAic2Vj b25kOiBwdHlwZSB0ZW1wMiIKLStnZGJfdGVzdCAicHR5cGUgdGVtcDMiICJ0eXBlID0gY2hhciBc XFxbNDhcXFxdIiAic2Vjb25kOiBwdHlwZSB0ZW1wMyIKLSsKLStnZGJfdGVzdCAicCB0ZW1wMSIg IiA9ICcxJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAxIgotK2dkYl90 ZXN0ICJwIHRlbXAyIiAiID0gJzInIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQg dGVtcDIiCi0rZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAi c2Vjb25kOiBwcmludCB0ZW1wMyIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9n ZGI5NTkzLmNjIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5jYwotbmV3IGZpbGUgbW9k ZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc4M2M5NjIKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1OTMuY2MKLUBAIC0wLDAgKzEsMTgwIEBACi0rLyogVGhp cyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5 cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBU aGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k L29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAg TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl IHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r Ci0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsgICAqLwotKyNpbmNsdWRlIDxpb3N0 cmVhbT4KLSsKLSt1c2luZyBuYW1lc3BhY2Ugc3RkOwotKwotK2NsYXNzIE5leHRPdmVyVGhyb3dE ZXJpdmF0ZXMKLSt7Ci0rCi0rcHVibGljOgotKwotKwotKyAgLy8gU2luZ2xlIHRocm93IGFuIGV4 Y2VwdGlvbiBpbiB0aGlzIGZ1bmN0aW9uLgotKyAgdm9pZCBmdW5jdGlvbjEoKSAKLSsgIHsKLSsg ICAgdGhyb3cgMjA7Ci0rICB9Ci0rCi0rICAvLyBUaHJvdyBhbiBleGNlcHRpb24gaW4gYW5vdGhl ciBmdW5jdGlvbi4KLSsgIHZvaWQgZnVuY3Rpb24yKCkgCi0rICB7Ci0rICAgIGZ1bmN0aW9uMSgp OwotKyAgfQotKwotKyAgLy8gVGhyb3cgYW4gZXhjZXB0aW9uIGluIGFub3RoZXIgZnVuY3Rpb24s IGJ1dCBoYW5kbGUgaXQKLSsgIC8vIGxvY2FsbHkuCi0rICB2b2lkIGZ1bmN0aW9uMyAoKSAKLSsg IHsKLSsgICAgewotKyAgICAgIHRyeQotKwl7Ci0rCSAgZnVuY3Rpb24xICgpOwotKwl9Ci0rICAg ICAgY2F0Y2ggKC4uLikgCi0rCXsKLSsJICBjb3V0IDw8ICJDYXVnaHQgYW5kIGhhbmRsZWQgZnVu Y3Rpb24xIGV4Y2VwdGlvbiIgPDwgZW5kbDsKLSsJfQotKyAgICB9Ci0rICB9Ci0rCi0rICB2b2lk IHJldGhyb3cgKCkKLSsgIHsKLSsgICAgdHJ5Ci0rICAgICAgewotKwlmdW5jdGlvbjEgKCk7Ci0r ICAgICAgfQotKyAgICBjYXRjaCAoLi4uKQotKyAgICAgIHsKLSsJdGhyb3c7Ci0rICAgICAgfQot KyAgfQotKwotKyAgdm9pZCBmaW5pc2ggKCkKLSsgIHsKLSsgICAgLy8gV2UgdXNlIHRoaXMgdG8g dGVzdCB0aGF0IGEgImZpbmlzaCIgaGVyZSBkb2VzIG5vdCBlbmQgdXAgaW4KLSsgICAgLy8gdGhp cyBmcmFtZSwgYnV0IGluIHRoZSBvbmUgYWJvdmUuCi0rICAgIHRyeQotKyAgICAgIHsKLSsJZnVu Y3Rpb24xICgpOwotKyAgICAgIH0KLSsgICAgY2F0Y2ggKGludCB4KQotKyAgICAgIHsKLSsgICAg ICB9Ci0rICAgIGZ1bmN0aW9uMSAoKTsJCS8vIG1hcmtlciBmb3IgdW50aWwKLSsgIH0KLSsKLSsg IHZvaWQgdW50aWwgKCkKLSsgIHsKLSsgICAgZnVuY3Rpb24xICgpOwotKyAgICBmdW5jdGlvbjEg KCk7CQkvLyB1bnRpbCBoZXJlCi0rICB9Ci0rCi0rfTsKLStOZXh0T3ZlclRocm93RGVyaXZhdGVz IG5leHRfY2FzZXM7Ci0rCi0rCi0raW50IG1haW4gKCkgCi0reyAKLSsgIHRyeQotKyAgICB7Ci0r ICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjEgKCk7Ci0rICAgIH0KLSsgIGNhdGNoICguLi4pCi0r ICAgIHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsKLSsgIHRyeQotKyAgICB7Ci0rICAg ICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7Ci0rICAgIH0KLSsgIGNhdGNoICguLi4pCi0rICAg IHsKLSsgICAgICAvLyBEaXNjYXJkCi0rICAgIH0KLSsKLSsgIHRyeQotKyAgICB7Ci0rICAgICAg Ly8gVGhpcyBpcyBkdXBsaWNhdGVkIHNvIHdlIGNhbiBuZXh0IG92ZXIgb25lIGJ1dCBzdGVwIGlu dG8KLSsgICAgICAvLyBhbm90aGVyLgotKyAgICAgIG5leHRfY2FzZXMuZnVuY3Rpb24yICgpOwot KyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9 Ci0rCi0rICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMyAoKTsKLSsKLSsgIHRyeQotKyAgICB7Ci0rICAg ICAgbmV4dF9jYXNlcy5yZXRocm93ICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7 Ci0rICAgICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICB0cnkKLSsgICAgewotKyAgICAgIC8v IEFub3RoZXIgZHVwbGljYXRlIHNvIHdlIGNhbiB0ZXN0ICJmaW5pc2giLgotKyAgICAgIG5leHRf Y2FzZXMuZnVuY3Rpb24yICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAg ICAgLy8gRGlzY2FyZAotKyAgICB9Ci0rCi0rICAvLyBBbm90aGVyIHRlc3QgZm9yICJmaW5pc2gi LgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLmZpbmlzaCAoKTsKLSsgICAgfQot KyAgY2F0Y2ggKC4uLikKLSsgICAgewotKyAgICB9Ci0rCi0rICAvLyBUZXN0IG9mICJ1bnRpbCIu Ci0rICB0cnkKLSsgICAgewotKyAgICAgIG5leHRfY2FzZXMuZmluaXNoICgpOwotKyAgICB9Ci0r ICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0KLSsKLSsgIC8vIFRlc3Qgb2YgInVudGlsIiB3 aXRoIGFuIGFyZ3VtZW50LgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLnVudGls ICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0KLSsKLSsgIC8vIFRl c3Qgb2YgImFkdmFuY2UiLgotKyAgdHJ5Ci0rICAgIHsKLSsgICAgICBuZXh0X2Nhc2VzLnVudGls ICgpOwotKyAgICB9Ci0rICBjYXRjaCAoLi4uKQotKyAgICB7Ci0rICAgIH0KLSt9Ci0rCi1kaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvZ2RiOTU5My5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5jcC9nZGI5NTkzLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAu LjNkYWQ3Y2EKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2dkYjk1 OTMuZXhwCi1AQCAtMCwwICsxLDE4MiBAQAotKyMgQ29weXJpZ2h0IDIwMDgsIDIwMDkgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotKwotK2lmICR0cmFjZWxldmVsIHRoZW4gewotKyAgICBzdHJhY2UgJHRyYWNlbGV2ZWwK LSt9Ci0rCi0raWYgeyBbc2tpcF9jcGx1c190ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSsKLStzZXQg dGVzdGZpbGUgImdkYjk1OTMiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uY2MKLStzZXQgYmlu ZmlsZSAkb2JqZGlyLyRzdWJkaXIvJHRlc3RmaWxlCi0rCi0rIyBDcmVhdGUgYW5kIHNvdXJjZSB0 aGUgZmlsZSB0aGF0IHByb3ZpZGVzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjb21waWxlcgotKyMg dXNlZCB0byBjb21waWxlIHRoZSB0ZXN0IGNhc2UuCi0raWYgW2dldF9jb21waWxlcl9pbmZvICR7 YmluZmlsZX0gImMrKyJdIHsKLSsgICAgdW50ZXN0ZWQgZ2RiOTU5My5leHAKLSsgICAgcmV0dXJu IC0xCi0rfQorKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg aXQgd2lsbCBiZSB1c2VmdWwsCisrIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyMgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysjCisrIyBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyMgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCiArCi0raWYgeyBbZ2RiX2NvbXBpbGUgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNm aWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUge2RlYnVnIGMrK31dICE9ICIiIH0gewotKyAg ICB1bnRlc3RlZCBnZGI5NTkzLmV4cAorK3NldCB0ZXN0ZmlsZSB2bGEKKytzZXQgc3JjZmlsZSAk e3Rlc3RmaWxlfS5jCisrc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxl fQorK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAi JHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWd9XSAhPSAiIiB9IHsKKysgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogKyAgICByZXR1cm4gLTEKICt9CiArCi0r IyBTb21lIHRhcmdldHMgY2FuJ3QgZG8gZnVuY3Rpb24gY2FsbHMsIHNvIGRvbid0IGV2ZW4gYm90 aGVyIHdpdGggdGhpcwotKyMgdGVzdC4KLStpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYixjYW5u b3RfY2FsbF9mdW5jdGlvbnNdIHsKLSsgICAgc2V0dXBfeGZhaWwgIiotKi0qIiA5NTkzCi0rICAg IGZhaWwgIlRoaXMgdGFyZ2V0IGNhbiBub3QgY2FsbCBmdW5jdGlvbnMiCi0rICAgIGNvbnRpbnVl Ci0rfQotKwogK2dkYl9leGl0CiArZ2RiX3N0YXJ0CiArZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNy Y2Rpci8kc3ViZGlyCiArZ2RiX2xvYWQgJHtiaW5maWxlfQogKwotK2lmICFbcnVudG9fbWFpbl0g dGhlbiB7Ci0rICAgIHBlcnJvciAiY291bGRuJ3QgcnVuIHRvIG1haW4iCi0rICAgIGNvbnRpbnVl Ci0rfSAKLSsKLSsjIFNlZSB3aGV0aGVyIHdlIGhhdmUgdGhlIG5lZWRlZCB1bndpbmRlciBob29r cy4KLStzZXQgb2sgMQotK2dkYl90ZXN0X211bHRpcGxlICJwcmludCBfVW53aW5kX0RlYnVnSG9v ayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7Ci0rICAgIC1yZSAiPSAuKl9VbndpbmRfRGVi dWdIb29rLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlwYXNzICJjaGVjayBmb3IgdW53aW5kZXIg aG9vayIKLSsgICAgfQotKyAgICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQu XHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJIyBQYXNzIHRoZSB0ZXN0IHNvIHdlIGRvbid0IGdldCBi b2d1cyBmYWlscyBpbiB0aGUgcmVzdWx0cy4KLSsJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhv b2siCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsgICAgdW50ZXN0ZWQg Z2RiOTU5My5leHAKKytpZiAhW3J1bnRvX21haW5dIHsKKysgICAgdW50ZXN0ZWQgdmxhCiArICAg IHJldHVybiAtMQogK30KICsKLSsjIFNlZSBodHRwOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEv c2hvd19idWcuY2dpP2lkPTk1OTMKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgICAiLipjYXRj aCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyAxIgotKwotK2dkYl90ZXN0ICJu ZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMi4qIiBcCi0rICAibmV4dCBwYXN0IGNh dGNoIDEiCi0rCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAot KyAgICAibmV4dCBvdmVyIGEgdGhyb3cgMiIKLSsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4q bmV4dF9jYXNlcy5mdW5jdGlvbjIuKiIgXAotKyAgIm5leHQgcGFzdCBjYXRjaCAyIgorK2dkYl9i cmVha3BvaW50IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJicmVhay1oZXJlIl0KICsKLStnZGJfdGVz dCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24xKCkuKiIgXAotKyAgInN0ZXAgaW50byBmdW5jdGlv bjIgMSIKKytnZGJfY29udGludWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKICsKLStnZGJf dGVzdCAibmV4dCIgXAotKyAgICAiLipjYXRjaCAoLi4uKS4qIiBcCi0rICAgICJuZXh0IG92ZXIg YSB0aHJvdyAzIgorK2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbdmFy aWFibGVcXFxdIiAiZmlyc3Q6IHdoYXRpcyB0ZW1wMSIKKytnZGJfdGVzdCAid2hhdGlzIHRlbXAy IiAidHlwZSA9IGNoYXIgXFxcW3ZhcmlhYmxlXFxcXSIgImZpcnN0OiB3aGF0aXMgdGVtcDIiCisr Z2RiX3Rlc3QgIndoYXRpcyB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJmaXJzdDog d2hhdGlzIHRlbXAzIgogKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZ1 bmN0aW9uMy4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDMiCisrZ2RiX3Rlc3QgInB0eXBlIHRl bXAxIiAidHlwZSA9IGNoYXIgXFxcWzI2XFxcXSIgImZpcnN0OiBwdHlwZSB0ZW1wMSIKKytnZGJf dGVzdCAicHR5cGUgdGVtcDIiICJ0eXBlID0gY2hhciBcXFxbMjZcXFxdIiAiZmlyc3Q6IHB0eXBl IHRlbXAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0i ICJmaXJzdDogcHR5cGUgdGVtcDMiCiArCi0rZ2RiX3Rlc3QgIm5leHQiIFwKLSsgICIuKm5leHRf Y2FzZXMucmV0aHJvdy4qIiBcCi0rICAgICJuZXh0IG92ZXIgYSB0aHJvdyA0IgorK2dkYl90ZXN0 ICJwIHRlbXAxIiAiID0gJzEnIDxyZXBlYXRzIDI2IHRpbWVzPiIgImZpcnN0OiBwcmludCB0ZW1w MSIKKytnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyAyNiB0aW1lcz4iICJmaXJz dDogcHJpbnQgdGVtcDIiCisrZ2RiX3Rlc3QgInAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDgg dGltZXM+IiAiZmlyc3Q6IHByaW50IHRlbXAzIgogKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAi LipjYXRjaCAoLi4uKS4qIiBcCi0rICAibmV4dCBvdmVyIGEgcmV0aHJvdyIKKytnZGJfY29udGlu dWVfdG9fYnJlYWtwb2ludCAiYnJlYWstaGVyZSIKICsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAg Ii4qbmV4dF9jYXNlcy5mdW5jdGlvbjIuKiIgXAotKyAgIm5leHQgYWZ0ZXIgYSByZXRocm93Igor K2dkYl90ZXN0ICJ3aGF0aXMgdGVtcDEiICJ0eXBlID0gY2hhciBcXFxbdmFyaWFibGVcXFxdIiAi c2Vjb25kOiB3aGF0aXMgdGVtcDEiCisrZ2RiX3Rlc3QgIndoYXRpcyB0ZW1wMiIgInR5cGUgPSBj aGFyIFxcXFt2YXJpYWJsZVxcXF0iICJzZWNvbmQ6IHdoYXRpcyB0ZW1wMiIKKytnZGJfdGVzdCAi d2hhdGlzIHRlbXAzIiAidHlwZSA9IGNoYXIgXFxcWzQ4XFxcXSIgInNlY29uZDogd2hhdGlzIHRl bXAzIgogKwotK2dkYl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEoKS4qIiBcCi0rICAi c3RlcCBpbnRvIGZ1bmN0aW9uMiAyIgorK2dkYl90ZXN0ICJwdHlwZSB0ZW1wMSIgInR5cGUgPSBj aGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAxIgorK2dkYl90ZXN0ICJwdHlwZSB0 ZW1wMiIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlIHRlbXAyIgorK2dk Yl90ZXN0ICJwdHlwZSB0ZW1wMyIgInR5cGUgPSBjaGFyIFxcXFs0OFxcXF0iICJzZWNvbmQ6IHB0 eXBlIHRlbXAzIgogKwotK2dkYl90ZXN0ICJmaW5pc2giIFwKLSsgICIuKmNhdGNoICguLi4pLioi IFwKLSsgICJmaW5pc2ggMSIKKytnZGJfdGVzdCAicCB0ZW1wMSIgIiA9ICcxJyA8cmVwZWF0cyA3 OCB0aW1lcz4iICJzZWNvbmQ6IHByaW50IHRlbXAxIgorK2dkYl90ZXN0ICJwIHRlbXAyIiAiID0g JzInIDxyZXBlYXRzIDc4IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDIiCisrZ2RiX3Rlc3Qg InAgdGVtcDMiICIgPSAnMycgPHJlcGVhdHMgNDggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1w MyIKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRl LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmMKK25ldyBmaWxl IG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4wMzFlZjkyCistLS0gL2Rldi9udWxsCisrKysg Yi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmMKK0BAIC0wLDAgKzEs MzMgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgogKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLmZpbmlzaCAoKS4qIiBc Ci0rICAibmV4dCBwYXN0IGNhdGNoIDQiCisrICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiArCi0rZ2RiX3Rlc3QgInN0ZXAiIFwKLSsgICIuKmZ1bmN0aW9u MSAoKS4qIiBcCi0rICAic3RlcCBpbnRvIGZpbmlzaCBtZXRob2QiCisrICAgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KICsKLStnZGJfdGVzdCAiZmluaXNoIiBcCi0rICAiLipjYXRjaCAoLi4u KS4qIiBcCi0rICAiZmluaXNoIDIiCisrICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdB UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr ICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICsKLStnZGJf dGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy5maW5pc2ggKCkuKiIgXAotKyAgIm5leHQg cGFzdCBjYXRjaCA1IgorKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl IEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwogKwotK2dk Yl90ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAgInN0ZXAgaW50byBm aW5pc2gsIGZvciB1bnRpbCIKKyt2b2lkCisrZnVuYyAodm9pZCkKKyt7CisrICB2b2xhdGlsZSBp bnQgeCA9IDA7CiArCi0rZ2RiX3Rlc3QgInVudGlsIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIg XAotKyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMSIKKysgIHgrKzsJLyogYnJlYWstaGVyZSAq LworKyAgeCsrOworK30KICsKLStzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAibWFya2Vy IGZvciB1bnRpbCIgJHRlc3RmaWxlLmNjXQorK2ludAorK21haW4gKHZvaWQpCisreworKyAgZnVu YyAoKTsKICsKLStnZGJfdGVzdCAidW50aWwgJGxpbmUiIFwKLSsgICIuKmZ1bmN0aW9uMSAoKS4q IiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDYiCisrICByZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5leHAgYi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2 NDQKK2luZGV4IDAwMDAwMDAuLjQ1YmM2NTAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0 c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCitAQCAtMCwwICsxLDM4IEBACisr IyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKLStnZGJf dGVzdCAidW50aWwiIFwKLSsgICIuKmNhdGNoICguLi4pLioiIFwKLSsgICJ1bnRpbCB3aXRoIG5v IGFyZ3VtZW50IDIiCisrIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy ZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysjIHRoZSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9y CisrIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKyMKKysjIFRoaXMgcHJv Z3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor KyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKKysjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIg UFVSUE9TRS4gIFNlZSB0aGUKKysjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3Jl IGRldGFpbHMuCisrIworKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogKwotK3NldCBsaW5l IFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJ1bnRpbCBoZXJlIiAkdGVzdGZpbGUuY2NdCisrc2V0IHRl c3RmaWxlICJ3YXRjaHBvaW50LWRlbGV0ZSIKKytzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCisr c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQogKwotK2dkYl90ZXN0 ICJuZXh0IiBcCi0rICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioiIFwKLSsgICJuZXh0IHBhc3Qg Y2F0Y2ggNiIKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rl c3RmaWxlfSAke3NyY2ZpbGV9XSB9IHsKKysgICAgdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCisr ICAgIHJldHVybiAtMQorK30KICsKLStnZGJfdGVzdCAic3RlcCIgXAotKyAgIi4qZnVuY3Rpb24x ICgpLioiIFwKLSsgICJzdGVwIGludG8gdW50aWwiCisrIyBJdCBpcyBtb3JlIGNvbXBhdGlibGUg dGhpcyB3YXkuCisrZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2FuLXVzZS1ody13YXRjaHBvaW50 cyAwIgogKwotK2dkYl90ZXN0ICJ1bnRpbCAkbGluZSIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIg XAotKyAgInVudGlsLW92ZXItdGhyb3ciCisraWYgIVtydW50b19tYWluXSB7CisrICAgIHJldHVy biAtMQorK30KICsKLStnZGJfdGVzdCAibmV4dCIgXAotKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAo KS4qIiBcCi0rICAibmV4dCBwYXN0IGNhdGNoIDciCisrIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJl bnQgZnJhbWUgdG8gY3JlYXRlIHJlbGF0ZWQgYnBfd2F0Y2hwb2ludF9zY29wZS4KKytnZGJfYnJl YWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJlciAiYnJlYWstaGVyZSJdCisrZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUiICIuKiBicmVhay1oZXJlIC4qIgogKwotK2dkYl90 ZXN0ICJzdGVwIiBcCi0rICAiLipmdW5jdGlvbjEgKCkuKiIgXAotKyAgInN0ZXAgaW50byB1bnRp bCwgZm9yIGFkdmFuY2UiCisrZ2RiX3Rlc3QgIndhdGNoIHgiIHtXYXRjaHBvaW50IFswLTldKzog eH0KICsKLStnZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAotKyAgIi4qY2F0Y2ggKC4uLikuKiIg XAotKyAgImFkdmFuY2Utb3Zlci10aHJvdyIKKytnZGJfdGVzdF9ub19vdXRwdXQge2RlbGV0ZSAk YnBudW19CiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1s b2NsaXN0LlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwog bmV3IGZpbGUgbW9kZSAxMDA2NDQKIGluZGV4IDAwMDAwMDAuLjdmYjAwZWEKQEAgLTE0MjA1LDE0 NSArODE5Niw2IEBAIGluZGV4IDAwMDAwMDAuLjIyNmRjNWQKICsgIGggPSAnaCcKICsgIGNhbGwg Zm9vIChnLCBoKQogK2VuZAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxm dGVzdC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwCi1pbmRleCBmYzhi Y2NjLi5lMDUzODEzIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0 LmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZ2RiL3NlbGZ0ZXN0LmV4cAotQEAgLTkyLDYg KzkyLDEwIEBAIHByb2MgZG9fc3RlcHNfYW5kX25leHRzIHt9IHsKLSAJCXNldCBkZXNjcmlwdGlv biAic3RlcCBvdmVyIHR0eWFyZyBpbml0aWFsaXphdGlvbiIKLSAJCXNldCBjb21tYW5kICJzdGVw IgotIAkgICAgfQotKwkgICAgLXJlICIuKnB5dGhvbl9zY3JpcHQgPSAwLiokZ2RiX3Byb21wdCAk IiB7Ci0rCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciBweXRob25fc2NyaXB0IGluaXRpYWxp emF0aW9uIgotKwkJc2V0IGNvbW1hbmQgInN0ZXAiCi0rCSAgICB9Ci0gCSAgICAtcmUgIi4qcHJl X3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xlYW51cC4qJGdkYl9wcm9tcHQgJCIg ewotIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFrZV9jb21tYW5kX3N0YXRzX2NsZWFu dXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCi0gCQlzZXQgY29tbWFuZCAibmV4dCIKLWRpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuamF2YS9qbnBlLmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjU1 YWE4MGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5l eHAKLUBAIC0wLDAgKzEsNzQgQEAKLSsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiAk dHJhY2VsZXZlbCB0aGVuIHsKLSsgIHN0cmFjZSAkdHJhY2VsZXZlbAotK30KLSsKLStsb2FkX2xp YiAiamF2YS5leHAiCi0rCi0rc2V0IHRlc3RmaWxlICJqbnBlIgotK3NldCBzcmNmaWxlICR7dGVz dGZpbGV9LmphdmEKLStzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9 Ci0raWYgIHsgW2NvbXBpbGVfamF2YV9mcm9tX3NvdXJjZSAke3NyY2Rpcn0vJHN1YmRpci8ke3Ny Y2ZpbGV9ICR7YmluZmlsZX0gIi1nIl0gIT0gIiIgfSB7Ci0rICAgIHVudGVzdGVkICJDb3VsZG4n dCBjb21waWxlICR7c3JjZGlyfS8kc3ViZGlyLyR7c3JjZmlsZX0iCi0rICAgIHJldHVybiAtMQot K30KLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0rCi0rZ2RiX2V4aXQKLStnZGJfc3Rh cnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLStnZGJfbG9hZCAke2Jp bmZpbGV9Ci0rCi0rc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFrIGhlcmUiICR0 ZXN0ZmlsZS5qYXZhXQotK2dkYl90ZXN0ICJicmVhayAkdGVzdGZpbGUuamF2YTokbGluZSIgIiIK LSsKLStnZGJfdGVzdCAicnVuIiBcCi0rICAiLy8gYnJlYWsgaGVyZS4qIiBcCi0rICAicnVuIGph dmEgbmV4dC1vdmVyLXRocm93IgotKwotKyMgU2VlIHdoZXRoZXIgd2UgaGF2ZSB0aGUgbmVlZGVk IHVud2luZGVyIGhvb2tzLgotK3NldCBvayAxCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IF9V bndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIgewotKyAg ICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJcGFz cyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIKLSsgICAgfQotKyAgICAtcmUgIk5v IHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCSMg UGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4gdGhlIHJlc3VsdHMu Ci0rCXNldHVwX3hmYWlsICotKi0qCi0rCWZhaWwgImNoZWNrIGZvciB1bndpbmRlciBob29rIGlu IGphdmEiCi0rCXNldCBvayAwCi0rICAgIH0KLSt9Ci0raWYgeyEkb2t9IHsKLSsgICAgdW50ZXN0 ZWQgam5wZS5leHAKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0ICJoYW5kbGUgU0lH U0VHViBub3N0b3Agbm9wcmludCIgXAotKyAgIlNJR1NFR1YuKmZhdWx0IiBcCi0rICAiZGlzYWJs ZSBTSUdTRUdWIGZvciBuZXh0LW92ZXItTlBFIgotKwotKyMgVGhlIGxpbmUgd2hlcmUgd2Ugc3Rv cCBkaWZmZXIgYWNjb3JkaW5nIHRvIGdjajsgY2hlY2sganVzdCB3ZSBkaWQgbm90IGFscmVhZHkK LSsjIGV4ZWN1dGUgdGhlIGNhdGNoIHBvaW50LgotKwotK2dkYl90ZXN0ICJuZXh0IiBcCi0rICAi IiBcCi0rICAibmV4dCBvdmVyIE5QRSIKLSsKLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5l X251bWJlciAiY2F0Y2ggcG9pbnQiXQotK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJjYXRj aCBwb2ludCIgIi4qLy8gY2F0Y2ggcG9pbnQuKiIKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5qYXZhL2pucGUuamF2YSBiL2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5qYXZhCi1u ZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMzUyNDgzMAotLS0tIC9kZXYvbnVs bAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuamF2YS9qbnBlLmphdmEKLUBAIC0wLDAgKzEsMzgg QEAKLSsvLyBUZXN0IG5leHQtb3Zlci1OUEUuCi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4KLSsgICAqLwotKwotK3B1YmxpYyBjbGFzcyBqbnBlCi0rewotKyAgcHVibGljIHN0YXRp YyBTdHJpbmcgbnBlICgpCi0rICB7Ci0rICAgIHJldHVybiAoKE9iamVjdCkgbnVsbCkudG9TdHJp bmcoKTsKLSsgIH0KLSsKLSsgIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluIChTdHJpbmdbXSBhcmdz KQotKyAgewotKyAgICB0cnkKLSsgICAgICB7Ci0rCVN5c3RlbS5vdXQucHJpbnRsbiAobnBlICgp KTsgLy8gYnJlYWsgaGVyZQotKyAgICAgIH0KLSsgICAgY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0 aW9uIG4pCi0rICAgICAgewotKwlTeXN0ZW0ub3V0LnByaW50bG4gKCJzdWNjZXNzIik7IC8vIGNh dGNoIHBvaW50Ci0rICAgICAgfQotKyAgfQotK30KIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5v cHQvYXJyYXktZnJvbS1yZWdpc3Rlci1mdW5jLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRl eCAwMDAwMDAwLi43MjlmNDU3CkBAIC0xNDQ0NywxMCArODI5OSwxMCBAQCBpbmRleCAwMDAwMDAw Li5mMmRlNzE4CiArZ2RiX3Rlc3QgInAgYXJyXFswXF0iICJcXCRcWzAtOVxdKyA9IDQyIgogZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9mb3J0cmFuLXN0cmluZy5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5vcHQvZm9ydHJhbi1zdHJpbmcuZXhwCiBuZXcgZmlsZSBtb2RlIDEwMDY0 NAotaW5kZXggMDAwMDAwMC4uZjk5N2VlYworaW5kZXggMDAwMDAwMC4uYzEwOGVhNQogLS0tIC9k ZXYvbnVsbAogKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2ZvcnRyYW4tc3RyaW5nLmV4cAot QEAgLTAsMCArMSw0MSBAQAorQEAgLTAsMCArMSwzOSBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBz b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQpAQCAtMTQ0ODIs MTMgKzgzMzQsMTEgQEAgaW5kZXggMDAwMDAwMC4uZjk5N2VlYwogKyAgICByZXR1cm4gLTEKICt9 CiArCi0raWYgIVtydW50byBNQUlOX19dIHRoZW4geworK2lmICFbcnVudG8gJHNyY2ZpbGU6W2dk Yl9nZXRfbGluZV9udW1iZXIgInMgPSBzIl1dIHRoZW4gewogKyAgICBwZXJyb3IgImNvdWxkbid0 IHJ1biB0byBicmVha3BvaW50IE1BSU5fXyIKICsgICAgY29udGludWUKICt9CiArCi0rZ2RiX2Jy ZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInMgPSBzIl0KLStnZGJfY29udGludWVfdG9f YnJlYWtwb2ludCAicyA9IHMiCiArZ2RiX3Rlc3QgImZyYW1lIiAiLipzPSdmb28nLioiCiArZ2Ri X3Rlc3QgInB0eXBlIHMiICJ0eXBlID0gY2hhcmFjdGVyXFwqMyIKICtnZGJfdGVzdCAicCBzIiAi XFwkXFswLTlcXSogPSAnZm9vJyIKQEAgLTE0NzI0LDE1NCArODU3NCw2IEBAIGluZGV4IDAwMDAw MDAuLjI5NTYwMmQKICsgIHMgOj0gJ3Rlc3QnIzAnc3RyaW5nJzsKICsgIHdyaXRlbG4ocyk7IHsg c2V0IGJyZWFrcG9pbnQgMiBoZXJlIH0KICtlbmQuCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWNtZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktY21k LmV4cAotaW5kZXggMGYyNTBkMi4uODRlNTAzOCAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1jbWQuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHkt Y21kLmV4cAotQEAgLTIwLDI0ICsyMCw2IEBAIGlmICR0cmFjZWxldmVsIHRoZW4gewotICAgICBz dHJhY2UgJHRyYWNlbGV2ZWwKLSB9Ci0gCi0tIyBVc2FnZTogZ2RiX3B5X3Rlc3RfbXVsdGlwbGUg TkFNRSBJTlBVVCBSRVNVTFQge0lOUFVUIFJFU1VMVH0uLi4KLS0jIFJ1biBhIHRlc3QgbmFtZWQg TkFNRSwgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBsaW5lcyBvZiBpbnB1dC4KLS0jIEFmdGVyIGVh Y2ggaW5wdXQgbGluZSBJTlBVVCwgc2VhcmNoIGZvciByZXN1bHQgbGluZSBSRVNVTFQuCi0tIyBT dWNjZWVkIGlmIGFsbCByZXN1bHRzIGFyZSBzZWVuOyBmYWlsIG90aGVyd2lzZS4KLS1wcm9jIGdk Yl9weV90ZXN0X211bHRpcGxlIHtuYW1lIGFyZ3N9IHsKLS0gICAgZ2xvYmFsIGdkYl9wcm9tcHQK LS0gICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7Ci0tCWlmIHtbZ2RiX3Rlc3RfbXVs dGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewotLQkgICAgLXJlICJcW1xyXG5cXSooJHJl c3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7Ci0tCQlwYXNzICIkbmFtZSAtICRp bnB1dCIKLS0JICAgIH0KLS0JfV19IHsKLS0JICAgIHJldHVybiAxCi0tCX0KLS0gICAgfQotLSAg ICByZXR1cm4gMAotLX0KLS0KLSAjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCi0gCi0gZ2RiX2V4 aXQKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAotaW5kZXggZTEyMTJkMy4uNzdm NDRmNSAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAK LSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5leHAKLUBAIC04OSw4ICs4 OSw2IEBAIGdkYl9weV90ZXN0X3NpbGVudF9jbWQgInB5dGhvbiBmMCA9IGYxLm5ld2VyICgpIiAi Z2V0IGZpcnN0IGZyYW1lIiAwCi0gCi0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0n LCBmMCA9PSBmMSIgIiA9IEZhbHNlIiAidGVzdCBlcXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSki Ci0gZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMCA9PSBmMCIgIiA9IFRydWUi ICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKHRydWUpIgotLWdkYl90ZXN0ICJweXRob24gcHJp bnQgJ3Jlc3VsdCA9JywgZjAgIT0gZjEiICIgPSBUcnVlIiAidGVzdCBpbmVxdWFsaXR5IGNvbXBh cmlzb24gKHRydWUpIgotLWdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAgIT0g ZjAiICIgPSBGYWxzZSIgInRlc3QgaW5lcXVhbGl0eSBjb21wYXJpc29uIChmYWxzZSkiCi0gZ2Ri X3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5pc192YWxpZCAoKSIgIiA9IFRydWUi ICJ0ZXN0IEZyYW1lLmlzX3ZhbGlkIgotIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9 JywgZjAubmFtZSAoKSIgIiA9IGYyIiAidGVzdCBGcmFtZS5uYW1lIgotIGdkYl90ZXN0ICJweXRo b24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAudHlwZSAoKSA9PSBnZGIuTk9STUFMX0ZSQU1FIiAiID0g VHJ1ZSIgInRlc3QgRnJhbWUudHlwZSIKLUBAIC0xMDUsMyArMTAzLDUgQEAgZ2RiX3Rlc3QgInB5 dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5yZWFkX3ZhciAoJ3ZhcmlhYmxlX3doaWNoX3N1cmVs eV9kb2VzbnRfZXgKLSBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRf dmFyICgnYScpIiAiID0gMSIgInRlc3QgRnJhbWUucmVhZF92YXIgLSBzdWNjZXNzIgotIAotIGdk Yl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZ2RiLnNlbGVjdGVkX2ZyYW1lICgpID09 IGYxIiAiID0gVHJ1ZSIgInRlc3QgZ2RiLnNlbGVjdGVkX2ZyYW1lIgotKwotK2dkYl90ZXN0ICJw eXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuYmxvY2sgKCkiICI8Z2RiLkJsb2NrIG9iamVjdCBh dCAweFxbXFs6eGRpZ2l0OlxdXF0rPiIgInRlc3QgRnJhbWUuYmxvY2siCi1kaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZ1bmN0aW9uLmV4cCBiL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weS1mdW5jdGlvbi5leHAKLWluZGV4IDM4YzU2OTMuLmU3ZjAwMzcgMTAwNjQ0 Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCi0rKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnVuY3Rpb24uZXhwCi1AQCAtMjAsMjQgKzIwLDYg QEAgaWYgJHRyYWNlbGV2ZWwgdGhlbiB7Ci0gICAgIHN0cmFjZSAkdHJhY2VsZXZlbAotIH0KLSAK LS0jIFVzYWdlOiBnZGJfcHlfdGVzdF9tdWx0aXBsZSBOQU1FIElOUFVUIFJFU1VMVCB7SU5QVVQg UkVTVUxUfS4uLgotLSMgUnVuIGEgdGVzdCBuYW1lZCBOQU1FLCBjb25zaXN0aW5nIG9mIG11bHRp cGxlIGxpbmVzIG9mIGlucHV0LgotLSMgQWZ0ZXIgZWFjaCBpbnB1dCBsaW5lIElOUFVULCBzZWFy Y2ggZm9yIHJlc3VsdCBsaW5lIFJFU1VMVC4KLS0jIFN1Y2NlZWQgaWYgYWxsIHJlc3VsdHMgYXJl IHNlZW47IGZhaWwgb3RoZXJ3aXNlLgotLXByb2MgZ2RiX3B5X3Rlc3RfbXVsdGlwbGUge25hbWUg YXJnc30gewotLSAgICBnbG9iYWwgZ2RiX3Byb21wdAotLSAgICBmb3JlYWNoIHtpbnB1dCByZXN1 bHR9ICRhcmdzIHsKLS0JaWYge1tnZGJfdGVzdF9tdWx0aXBsZSAkaW5wdXQgIiRuYW1lIC0gJGlu cHV0IiB7Ci0tCSAgICAtcmUgIlxbXHJcblxdKigkcmVzdWx0KVxbXHJcblxdKygkZ2RiX3Byb21w dCB8ICo+KSQiIHsKLS0JCXBhc3MgIiRuYW1lIC0gJGlucHV0IgotLQkgICAgfQotLQl9XX0gewot LQkgICAgcmV0dXJuIDEKLS0JfQotLSAgICB9Ci0tICAgIHJldHVybiAwCi0tfQotLQotICMgU3Rh cnQgd2l0aCBhIGZyZXNoIGdkYi4KLSAKLSBnZGJfZXhpdAotZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS1wcmV0dHlwcmludC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5w eXRob24vcHktcHJldHR5cHJpbnQuZXhwCi1pbmRleCAzYjJhYWRkLi4wM2JiZjNlIDEwMDY0NAot LS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAotKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LmV4cAotQEAgLTEwMiw2ICsx MDIsOCBAQCBwcm9jIHJ1bl9sYW5nX3Rlc3RzIHtsYW5nfSB7Ci0gICAgIGdkYl90ZXN0ICJwcmlu dCBlc3RyaW5nIiAiXCJlbWJlZGRlZCB4XFxcXDIwMVxcXFwyMDJcXFxcMjAzXFxcXDIwNFwiIgot ICAgICBnZGJfdGVzdCAicHJpbnQgYyIgIiA9IGNvbnRhaW5lciBcImNvbnRhaW5lclwiIHdpdGgg MiBlbGVtZW50cyA9IHskbmwgKi4wLiA9IDIzLCRubCAqLjEuID0gNzIkbmx9IgotIAotKyAgICBn ZGJfdGVzdCAicHJpbnQgbnVsbHN0ciIgIlJ1bnRpbWVFcnJvcjogRXJyb3IgcmVhZGluZyBzdHJp bmcgZnJvbSBpbmZlcmlvci4qIgotKwotICAgICBnZGJfdGVzdCAicHJpbnQgbnN0eXBlIiAiID0g eyRubCAqLjAuID0gNywkbmwgKi4xLiA9IDQyJG5sfSIKLSAgICAgZ2RiX3Rlc3QgImNvbnRpbnVl IiAiUHJvZ3JhbSBleGl0ZWQgbm9ybWFsbHlcLiIKLSAKLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5 LXZhbHVlLmV4cAotaW5kZXggYTI0YmMxMS4uZTMwNDNiYyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS12YWx1ZS5leHAKLUBAIC0zMTMsNiArMzEzLDE1IEBAIHByb2MgdGVzdF92YWx1ZV9h ZnRlcl9kZWF0aCB7fSB7Ci0gICAgICJwcmludCB2YWx1ZSdzIHR5cGUiCi0gfQotIAotKyMgUmVn cmVzc2lvbiB0ZXN0IGZvciBhIGNhc3QgZmFpbHVyZS4gIFRoZSBidWcgd2FzIHRoYXQgaWYgd2Ug Y2FzdCBhCi0rIyB2YWx1ZSB0byBpdHMgb3duIHR5cGUsIGdkYiBjb3VsZCBjcmFzaC4gIFRoaXMg aGFwcGVuZWQgYmVjYXVzZSB3ZQotKyMgY291bGQgZW5kIHVwIGRvdWJsZS1mcmVlaW5nIGEgc3Ry dWN0IHZhbHVlLgotK3Byb2MgdGVzdF9jYXN0X3JlZ3Jlc3Npb24ge30gewotKyAgZ2RiX3Rlc3Qg InB5dGhvbiB2ID0gZ2RiLlZhbHVlKDUpIiAiIiAiY3JlYXRlIHZhbHVlIGZvciBjYXN0IHRlc3Qi Ci0rICBnZGJfdGVzdCAicHl0aG9uIHYgPSB2LmNhc3Qodi50eXBlKSIgIiIgImNhc3QgdmFsdWUg Zm9yIGNhc3QgdGVzdCIKLSsgIGdkYl90ZXN0ICJweXRob24gcHJpbnQgdiIgIjUiICJwcmludCB2 YWx1ZSBmb3IgY2FzdCB0ZXN0IgotK30KLSsKLSAjIFJlZ3Jlc3Npb24gdGVzdCBmb3IgaW52YWxp ZCBzdWJzY3JpcHQgb3BlcmF0aW9ucy4gIFRoZSBidWcgd2FzIHRoYXQKLSAjIHRoZSB0eXBlIG9m IHRoZSB2YWx1ZSB3YXMgbm90IGJlaW5nIGNoZWNrZWQgYmVmb3JlIGFsbG93aW5nIGEKLSAjIHN1 YnNjcmlwdCBvcGVyYXRpb24gdG8gcHJvY2VlZC4KLUBAIC00MzcsNiArNDQ2LDcgQEAgaWYgIVty dW50b19tYWluXSB0aGVuIHsKLSB0ZXN0X3ZhbHVlX2luX2luZmVyaW9yCi0gdGVzdF9sYXp5X3N0 cmluZ3MKLSB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCi0rdGVzdF9jYXN0X3JlZ3Jlc3Npb24KLSAK LSAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8gdGVzdCBlaXRo ZXIgQyBvciBDKysKLSAjIHZhbHVlcy4gCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu cHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5k ZXggMDAwMDAwMC4uNzAzMTlmZgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIucHl0aG9uL3JoNjM0MTA4LXNvbGliX2FkZHJlc3MuZXhwCi1AQCAtMCwwICsxLDI0IEBACi0r IyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u LCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp c3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0r IyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS UE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRl dGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYg bm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgaHR0cHM6Ly9i dWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02MzQxMDgKLSsKLStnZGJfZXhpdAot K2dkYl9zdGFydAotKwotKyMgU2tpcCBhbGwgdGVzdHMgaWYgUHl0aG9uIHNjcmlwdGluZyBpcyBu b3QgZW5hYmxlZC4KLStpZiB7IFtza2lwX3B5dGhvbl90ZXN0c10gfSB7IGNvbnRpbnVlIH0KLSsK LStnZGJfdGVzdCAicHl0aG9uIHByaW50IGdkYi5zb2xpYl9hZGRyZXNzKC0xKSIgIk5vbmUiICJn ZGIuc29saWJfYWRkcmVzcyBleGlzdHMiCiBkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy93YXRjaHBvaW50LWZvcmstZm9ya29mZi5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5k ZXggMDAwMDAwMC4uNGRjMzA4YgpAQCAtMTU0MTUsMjAgKzkxMTcsOCBAQCBpbmRleCAwMDAwMDAw Li4xZGM5M2FiCiAraWYge1tpc3RhcmdldCAiKi0qLWxpbnV4KiJdfSB7CiArICAgIHRlc3QgY2hp bGQgRk9MTE9XX0NISUxECiArfQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5l eHAgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCi1pbmRleCAyMGUyZmI3Li5iMjdkMjVjIDEw MDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAotKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9saWIvZ2RiLmV4cAotQEAgLTI3LDYgKzI3LDcgQEAgaWYgeyR0b29sID09ICIifSB7Ci0gfQot IAotIGxvYWRfbGliIGxpYmdsb3NzLmV4cAotK2xvYWRfbGliIHB5dGhvbi1zdXBwb3J0LmV4cAot IAotIGdsb2JhbCBHREIKLSAKIGRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwu ZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAotaW5kZXggOTY5MWJjMS4uMTNlYThi NSAxMDA2NDQKK2luZGV4IGFmMGIwMGQuLmUxYThkYzQgMTAwNjQ0CiAtLS0gYS9nZGIvdGVzdHN1 aXRlL2xpYi9wYXNjYWwuZXhwCiArKysgYi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhwCiBA QCAtMzcsNiArMzcsOSBAQCBwcm9jIHBhc2NhbF9pbml0IHt9IHsKQEAgLTE1NDYyLDEwNCArOTE1 MiwxMSBAQCBpbmRleCA5NjkxYmMxLi4xM2VhOGI1IDEwMDY0NAogICAgICB9CiAgICAgIHNldCBw YXNjYWxfaW5pdF9kb25lIDEKICB9ICAgCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9saWIv cHl0aG9uLXN1cHBvcnQuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHl0aG9uLXN1cHBvcnQuZXhw Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uYjhlOTgzNgotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcHl0aG9uLXN1cHBvcnQuZXhwCi1AQCAtMCww ICsxLDUzIEBACi0rZ2xvYmFsIHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQKLSsKLSsjIFJldHVybiAx IGlmIFB5dGhvbiBzY3JpcHRpbmcgaXMgc3VwcG9ydGVkIGluIEdEQiwgMCBpZiBub3QuCi0rcHJv YyBweXRob25fc3VwcG9ydGVkIHsgfSB7Ci0rICBnbG9iYWwgZ2RiX3Byb21wdAotKyAgZ2xvYmFs IHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQKLSsKLSsgIGlmIFtpbmZvIGV4aXN0cyBweXRob25fc3Vw cG9ydGVkX3NhdmVkXSB7Ci0rICAgICAgdmVyYm9zZSAicHl0aG9uX3N1cHBvcnRlZDogIHJldHVy bmluZyBzYXZlZCAkcHl0aG9uX3N1cHBvcnRlZF9zYXZlZCIgMgotKyAgICAgIHJldHVybiAkcHl0 aG9uX3N1cHBvcnRlZF9zYXZlZAotKyAgfQotKwotKyAgZ2RiX3Rlc3RfbXVsdGlwbGUgInB5dGhv biBwcmludCAnaGVsbG8sIHdvcmxkISciICJ2ZXJpZnkgcHl0aG9uIHN1cHBvcnQiIHsKLSsgICAg LXJlICJub3Qgc3VwcG9ydGVkLiokZ2RiX3Byb21wdCAkIgl7Ci0rICAgICAgcmV0dXJuIFtzZXQg cHl0aG9uX3N1cHBvcnRlZF9zYXZlZCAwXQotKyAgICB9Ci0rICAgIC1yZSAiJGdkYl9wcm9tcHQg JCIJewotKyAgICAgIHJldHVybiBbc2V0IHB5dGhvbl9zdXBwb3J0ZWRfc2F2ZWQgMV0KLSsgICAg fQotKyAgfQotKwotKyAgcmV0dXJuIFtzZXQgcHl0aG9uX3N1cHBvcnRlZF9zYXZlZCAwXQotK30K LSsKLSsjIFJ1biBhIGNvbW1hbmQgaW4gR0RCLCBhbmQgcmVwb3J0IGEgZmFpbHVyZSBpZiBhIFB5 dGhvbiBleGNlcHRpb24gaXMgdGhyb3duLgotKyMgSWYgcmVwb3J0X3Bhc3MgaXMgdHJ1ZSwgcmVw b3J0IGEgcGFzcyBpZiBubyBleGNlcHRpb24gaXMgdGhyb3duLgotK3Byb2MgZ2RiX3B5X3Rlc3Rf c2lsZW50X2NtZCB7Y21kIG5hbWUgcmVwb3J0X3Bhc3N9IHsKLSsgIGdsb2JhbCBnZGJfcHJvbXB0 Ci0rCi0rICBnZGJfdGVzdF9tdWx0aXBsZSAkY21kICRuYW1lIHsKLSsgICAgICAtcmUgIlRyYWNl YmFjay4qJGdkYl9wcm9tcHQgJCIgIHsgZmFpbCAkbmFtZSB9Ci0rICAgICAgLXJlICIkZ2RiX3By b21wdCAkIgkgICAgICB7IGlmICRyZXBvcnRfcGFzcyB7IHBhc3MgJG5hbWUgfSB9Ci0rICB9Ci0r fQotKwotKyMgVXNhZ2U6IGdkYl9weV90ZXN0X211bHRpcGxlIE5BTUUgSU5QVVQgUkVTVUxUIHtJ TlBVVCBSRVNVTFR9Li4uCi0rIyBSdW4gYSB0ZXN0IG5hbWVkIE5BTUUsIGNvbnNpc3Rpbmcgb2Yg bXVsdGlwbGUgbGluZXMgb2YgaW5wdXQuCi0rIyBBZnRlciBlYWNoIGlucHV0IGxpbmUgSU5QVVQs IHNlYXJjaCBmb3IgcmVzdWx0IGxpbmUgUkVTVUxULgotKyMgU3VjY2VlZCBpZiBhbGwgcmVzdWx0 cyBhcmUgc2VlbjsgZmFpbCBvdGhlcndpc2UuCi0rcHJvYyBnZGJfcHlfdGVzdF9tdWx0aXBsZSB7 bmFtZSBhcmdzfSB7Ci0rICAgIGdsb2JhbCBnZGJfcHJvbXB0Ci0rCi0rICAgIGZvcmVhY2gge2lu cHV0IHJlc3VsdH0gJGFyZ3MgewotKwlpZiB7W2dkYl90ZXN0X211bHRpcGxlICRpbnB1dCAiJG5h bWUgLSAkaW5wdXQiIHsKLSsJICAgIC1yZSAiXFtcclxuXF0qKCRyZXN1bHQpXFtcclxuXF0rKCRn ZGJfcHJvbXB0IHwgKj4pJCIgewotKwkJcGFzcyAiJG5hbWUgLSAkaW5wdXQiCi0rCSAgICB9Ci0r CX1dfSB7Ci0rCSAgICByZXR1cm4gMQotKwl9Ci0rICAgIH0KLSsgICAgcmV0dXJuIDAKLSt9Ci1k aWZmIC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCi1pbmRleCAwYjI5MWJhLi5h ZTNlNGZmIDEwMDY0NAotLS0tIGEvZ2RiL3RocmVhZC5jCi0rKysgYi9nZGIvdGhyZWFkLmMKLUBA IC05MCw2ICs5MCwxNiBAQCBkZWxldGVfc3RlcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRo cmVhZF9pbmZvICp0cCkKLSAgICAgfQotIH0KLSAKLSt2b2lkCi0rZGVsZXRlX2V4Y2VwdGlvbl9y ZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSt7Ci0rICBpZiAodHAg JiYgdHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCkKLSsgICAgewotKyAgICAgIGRlbGV0 ZV9icmVha3BvaW50ICh0cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50KTsKLSsgICAgICB0 cC0+ZXhjZXB0aW9uX3Jlc3VtZV9icmVha3BvaW50ID0gTlVMTDsKLSsgICAgfQotK30KLSsKLSBz dGF0aWMgdm9pZAotIGNsZWFyX3RocmVhZF9pbmZlcmlvcl9yZXNvdXJjZXMgKHN0cnVjdCB0aHJl YWRfaW5mbyAqdHApCi0gewotQEAgLTEwMyw2ICsxMTMsMTIgQEAgY2xlYXJfdGhyZWFkX2luZmVy aW9yX3Jlc291cmNlcyAoc3RydWN0IHRocmVhZF9pbmZvICp0cCkKLSAgICAgICB0cC0+c3RlcF9y ZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0gICAgIH0KLSAKLSsgIGlmICh0cC0+ZXhjZXB0aW9u X3Jlc3VtZV9icmVha3BvaW50KQotKyAgICB7Ci0rICAgICAgdHAtPmV4Y2VwdGlvbl9yZXN1bWVf YnJlYWtwb2ludC0+ZGlzcG9zaXRpb24gPSBkaXNwX2RlbF9hdF9uZXh0X3N0b3A7Ci0rICAgICAg dHAtPmV4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCA9IE5VTEw7Ci0rICAgIH0KLSsKLSAgIGJw c3RhdF9jbGVhciAoJnRwLT5zdG9wX2Jwc3RhdCk7Ci0gCi0gICBkaXNjYXJkX2FsbF9pbnRlcm1l ZGlhdGVfY29udGludWF0aW9uc190aHJlYWQgKHRwKTsKIGRpZmYgLS1naXQgYS9nZGIvdG9wLmMg Yi9nZGIvdG9wLmMKLWluZGV4IGIyOWU2OGQuLjhlZGFjNzAgMTAwNjQ0CitpbmRleCA2NjgwYzM4 Li4zOGQxY2MyIDEwMDY0NAogLS0tIGEvZ2RiL3RvcC5jCiArKysgYi9nZGIvdG9wLmMKLUBAIC0z MzcsNiArMzM3LDcgQEAgdm9pZAorQEAgLTMzOCw2ICszMzgsNyBAQCB2b2lkCiAgcHJlcGFyZV9l eGVjdXRlX2NvbW1hbmQgKHZvaWQpCiAgewogICAgZnJlZV9hbGxfdmFsdWVzICgpOwpAQCAtMTU2 MjUsNyArOTIyMiw3IEBAIGluZGV4IGNlOWY1NTEuLjVmOWQ3MzkgMTAwNjQ0CiAgCiAgc3RhdGlj IHZvaWQKIGRpZmYgLS1naXQgYS9nZGIvdmFsYXJpdGguYyBiL2dkYi92YWxhcml0aC5jCi1pbmRl eCAwYzQwOTA1Li5hNzgxNjM2IDEwMDY0NAoraW5kZXggN2M1NTNkMS4uODBiZTgyZiAxMDA2NDQK IC0tLSBhL2dkYi92YWxhcml0aC5jCiArKysgYi9nZGIvdmFsYXJpdGguYwogQEAgLTE2MSwxMiAr MTYxLDI2IEBAIHZhbHVlX3N1YnNjcmlwdCAoc3RydWN0IHZhbHVlICphcnJheSwgTE9OR0VTVCBp bmRleCkKQEAgLTE1NzE5LDcgKzkzMTYsNyBAQCBpbmRleCAwYzQwOTA1Li5hNzgxNjM2IDEwMDY0 NAogIH0KICAKIGRpZmYgLS1naXQgYS9nZGIvdmFsb3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4 IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CitpbmRleCA5MzJlMzExLi41Y2U1NjVmIDEwMDY0NAog LS0tIGEvZ2RiL3ZhbG9wcy5jCiArKysgYi9nZGIvdmFsb3BzLmMKIEBAIC0zOCw2ICszOCw3IEBA CkBAIC0xNTczMCw3ICs5MzI3LDcgQEAgaW5kZXggN2ZiYWQxMC4uOGUzMjQwNSAxMDA2NDQKICAK ICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTg1OCw2 ICs4NTksNjUgQEAgdmFsdWVfb25lIChzdHJ1Y3QgdHlwZSAqdHlwZSwgZW51bSBsdmFsX3R5cGUg bHYpCitAQCAtODk3LDYgKzg5OCw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBlICp0eXBlLCBl bnVtIGx2YWxfdHlwZSBsdikKICAgIHJldHVybiB2YWw7CiAgfQogIApAQCAtMTU3OTYsNyArOTM5 Myw3IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAgLyogSGVscGVyIGZ1bmN0aW9u IGZvciB2YWx1ZV9hdCwgdmFsdWVfYXRfbGF6eSwgYW5kIHZhbHVlX2F0X2xhenlfc3RhY2suICAq LwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotQEAgLTk1NiwxNSArMTAxNiwyMSBAQCB2YWx1 ZV9mZXRjaF9sYXp5IChzdHJ1Y3QgdmFsdWUgKnZhbCkKK0BAIC05OTUsMTUgKzEwNTUsMjEgQEAg dmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgIH0KICAgIGVsc2UgaWYg KFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsKQEAgLTE1ODI1LDcgKzk0 MjIsNyBAQCBpbmRleCA3ZmJhZDEwLi44ZTMyNDA1IDEwMDY0NAogIAl9CiAgICAgIH0KICAgIGVs c2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikKLUBAIC0xMzc0LDcgKzE0 NDAsMTggQEAgYWRkcmVzc19vZl92YXJpYWJsZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3Qg YmxvY2sgKmIpCitAQCAtMTQwNyw3ICsxNDczLDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFibGUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9MVkFMICh2 YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwgVFlQRV9D T0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTU4NDUsNyArOTQ0Miw3 IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAgCiAgICAgICAgcmV0dXJuIHZhbHVl X2Zyb21fcG9pbnRlciAobG9va3VwX3BvaW50ZXJfdHlwZSAodHlwZSksIGFkZHIpOwogICAgICB9 Ci1AQCAtMTQ4MSw2ICsxNTU4LDcgQEAgc3RydWN0IHZhbHVlICoKK0BAIC0xNTE1LDYgKzE1OTIs NyBAQCBzdHJ1Y3QgdmFsdWUgKgogIHZhbHVlX2NvZXJjZV9hcnJheSAoc3RydWN0IHZhbHVlICph cmcxKQogIHsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlw ZSAoYXJnMSkpOwpAQCAtMTU4NTMsNyArOTQ1MCw3IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0MDUg MTAwNjQ0CiAgCiAgICAvKiBJZiB0aGUgdXNlciB0cmllcyB0byBkbyBzb21ldGhpbmcgcmVxdWly aW5nIGEgcG9pbnRlciB3aXRoIGFuCiAgICAgICBhcnJheSB0aGF0IGhhcyBub3QgeWV0IGJlZW4g cHVzaGVkIHRvIHRoZSB0YXJnZXQsIHRoZW4gdGhpcyB3b3VsZAotQEAgLTE0OTAsOCArMTU2OCwx MiBAQCB2YWx1ZV9jb2VyY2VfYXJyYXkgKHN0cnVjdCB2YWx1ZSAqYXJnMSkKK0BAIC0xNTI0LDgg KzE2MDIsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgICBp ZiAoVkFMVUVfTFZBTCAoYXJnMSkgIT0gbHZhbF9tZW1vcnkpCiAgICAgIGVycm9yIChfKCJBdHRl bXB0IHRvIHRha2UgYWRkcmVzcyBvZiB2YWx1ZSBub3QgbG9jYXRlZCBpbiBtZW1vcnkuIikpOwog IApAQCAtMTU4NjgsNyArOTQ2NSw3IEBAIGluZGV4IDdmYmFkMTAuLjhlMzI0MDUgMTAwNjQ0CiAg CiAgLyogR2l2ZW4gYSB2YWx1ZSB3aGljaCBpcyBhIGZ1bmN0aW9uLCByZXR1cm4gYSB2YWx1ZSB3 aGljaCBpcyBhIHBvaW50ZXIKIGRpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuYyBiL2dkYi92YWxw cmludC5jCi1pbmRleCBhZDYyNjhlLi5mYjBlZjdhIDEwMDY0NAoraW5kZXggZGRiMTZlNC4uYzRj Mjk2OSAxMDA2NDQKIC0tLSBhL2dkYi92YWxwcmludC5jCiArKysgYi9nZGIvdmFscHJpbnQuYwog QEAgLTM2LDYgKzM2LDcgQEAKQEAgLTE1ODg3LDcgKzk0ODQsNyBAQCBpbmRleCBhZDYyNjhlLi5m YjBlZjdhIDEwMDY0NAogICAgICBjYXNlIFRZUEVfQ09ERV9CSVRTVFJJTkc6CiAgICAgICAgcmV0 dXJuIDA7CiAgICAgIGRlZmF1bHQ6Ci1AQCAtMTE0Miw2ICsxMTQyLDcgQEAgdmFsX3ByaW50X2Fy cmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIs CitAQCAtMTEwNCw2ICsxMTA0LDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3Qg dHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgewogICAgdW5zaWduZWQgaW50 IHRoaW5nc19wcmludGVkID0gMDsKICAgIHVuc2lnbmVkIGxlbjsKQEAgLTE1ODk1LDEwICs5NDky LDEwIEBAIGluZGV4IGFkNjI2OGUuLmZiMGVmN2EgMTAwNjQ0CiAgICBzdHJ1Y3QgdHlwZSAqZWx0 dHlwZSwgKmluZGV4X3R5cGU7CiAgICB1bnNpZ25lZCBlbHRsZW47CiAgICAvKiBQb3NpdGlvbiBv ZiB0aGUgYXJyYXkgZWxlbWVudCB3ZSBhcmUgZXhhbWluaW5nIHRvIHNlZQotQEAgLTExNTAsOSAr MTE1MSwzMyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKK0BAIC0xMTEyLDkgKzExMTMsMzMgQEAgdmFsX3ByaW50 X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFk ZHIsCiAgICAvKiBOdW1iZXIgb2YgcmVwZXRpdGlvbnMgd2UgaGF2ZSBkZXRlY3RlZCBzbyBmYXIu ICAqLwogICAgdW5zaWduZWQgaW50IHJlcHM7Ci0gICBMT05HRVNUIGxvd19ib3VuZF9pbmRleCA9 IDA7CisgICBMT05HRVNUIGxvd19ib3VuZCwgaGlnaF9ib3VuZDsKICsgIHN0cnVjdCBjbGVhbnVw ICpiYWNrX3RvOwogKyAgQ09SRV9BRERSIHNhdmVkX2FkZHJlc3MgPSBhZGRyZXNzOwogKyAgCkBA IC0xNTkzMCwxOCArOTUyNyw4IEBAIGluZGV4IGFkNjI2OGUuLmZiMGVmN2EgMTAwNjQ0CiArICBl bHRsZW4gPSBUWVBFX0FSUkFZX0JZVEVfU1RSSURFX1ZBTFVFICh0eXBlKTsKICAgIGluZGV4X3R5 cGUgPSBUWVBFX0lOREVYX1RZUEUgKHR5cGUpOwogIAotICAgLyogQ29tcHV0ZSB0aGUgbnVtYmVy IG9mIGVsZW1lbnRzIGluIHRoZSBhcnJheS4gIE9uIG1vc3QgYXJyYXlzLAotQEAgLTExNjAsOSAr MTE4NSw2IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNv bnN0IGdkYl9ieXRlICp2YWxhZGRyLAotICAgICAgaXMgc2ltcGx5IHRoZSBzaXplIG9mIHRoZSBh cnJheSBkaXZpZGVkIGJ5IHRoZSBzaXplIG9mIHRoZSBlbGVtZW50cy4KLSAgICAgIEJ1dCBmb3Ig YXJyYXlzIG9mIGVsZW1lbnRzIHdob3NlIHNpemUgaXMgemVybywgd2UgbmVlZCB0byBsb29rIGF0 Ci0gICAgICB0aGUgYm91bmRzLiAgKi8KLS0gIGlmIChlbHRsZW4gIT0gMCkKLS0gICAgbGVuID0g VFlQRV9MRU5HVEggKHR5cGUpIC8gZWx0bGVuOwotLSAgZWxzZQotICAgICB7Ci0gICAgICAgTE9O R0VTVCBsb3csIGhpOwotIAotQEAgLTEyMzYsNiArMTI1OCw4IEBAIHZhbF9wcmludF9hcnJheV9l bGVtZW50cyAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRlICp2YWxhZGRyLAorICAg aWYgKGdldF9hcnJheV9ib3VuZHMgKHR5cGUsICZsb3dfYm91bmQsICZoaWdoX2JvdW5kKSkKK0BA IC0xMTg5LDYgKzEyMTQsOCBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBl ICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRkciwKICAgICAgewogICAgICAgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIi4uLiIpOwogICAgICB9CkBAIC0xNTk1MSw3ICs5NTM4LDcgQEAg aW5kZXggYWQ2MjY4ZS4uZmIwZWY3YSAxMDA2NDQKICAKICAvKiBSZWFkIExFTiBieXRlcyBvZiB0 YXJnZXQgbWVtb3J5IGF0IGFkZHJlc3MgTUVNQUREUiwgcGxhY2luZyB0aGUKIGRpZmYgLS1naXQg YS9nZGIvdmFsdWUuYyBiL2dkYi92YWx1ZS5jCi1pbmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0 NAoraW5kZXggODVjYjYyYS4uMDEzYTlmYyAxMDA2NDQKIC0tLSBhL2dkYi92YWx1ZS5jCiArKysg Yi9nZGIvdmFsdWUuYwogQEAgLTM5LDYgKzM5LDcgQEAKQEAgLTE1OTYyLDcgKzk1NDksNyBAQCBp bmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0NAogIAogICNpbmNsdWRlICJweXRob24vcHl0aG9u LmgiCiAgCi1AQCAtODI4LDEyICs4MjksMTUgQEAgdm9pZAorQEAgLTg1MCwxMiArODUxLDE1IEBA IHZvaWQKICBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBv bmVudCwKICAJCQkgICAgICBjb25zdCBzdHJ1Y3QgdmFsdWUgKndob2xlKQogIHsKQEAgLTE1OTc4 LDcgKzk1NjUsNyBAQCBpbmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0NAogICAgaWYgKHdob2xl LT5sdmFsID09IGx2YWxfY29tcHV0ZWQpCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgbHZhbF9mdW5j cyAqZnVuY3MgPSB3aG9sZS0+bG9jYXRpb24uY29tcHV0ZWQuZnVuY3M7Ci1AQCAtODQxLDYgKzg0 NSwxMiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBv bmVudCwKK0BAIC04NjMsNiArODY3LDEyIEBAIHNldF92YWx1ZV9jb21wb25lbnRfbG9jYXRpb24g KHN0cnVjdCB2YWx1ZSAqY29tcG9uZW50LAogICAgICAgIGlmIChmdW5jcy0+Y29weV9jbG9zdXJl KQogICAgICAgICAgY29tcG9uZW50LT5sb2NhdGlvbi5jb21wdXRlZC5jbG9zdXJlID0gZnVuY3Mt PmNvcHlfY2xvc3VyZSAod2hvbGUpOwogICAgICB9CkBAIC0xNTk5MSw3ICs5NTc4LDcgQEAgaW5k ZXggZDU1MjQwMi4uYjEwMjY5YyAxMDA2NDQKICB9CiAgCiAgDAotQEAgLTk3Myw2ICs5ODMsMjkg QEAgc2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKK0BAIC05OTUsNiAr MTAwNSwyOSBAQCBzaG93X3ZhbHVlcyAoY2hhciAqbnVtX2V4cCwgaW50IGZyb21fdHR5KQogICAg ICAgIG51bV9leHBbMV0gPSAnXDAnOwogICAgICB9CiAgfQpAQCAtMTYwMjEsNyArOTYwOCw3IEBA IGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiAgDAogIC8qIEludGVybmFsIHZhcmlhYmxl cy4gIFRoZXNlIGFyZSB2YXJpYWJsZXMgd2l0aGluIHRoZSBkZWJ1Z2dlcgogICAgIHRoYXQgaG9s ZCB2YWx1ZXMgYXNzaWduZWQgYnkgZGVidWdnZXIgY29tbWFuZHMuCi1AQCAtMTQ1MSw2ICsxNDg0 LDQwIEBAIGNhbGxfaW50ZXJuYWxfZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAor QEAgLTE0NzMsNiArMTUwNiw0MCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gsIGxhbmd1 YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMTYwNjIsNyArOTY0OSw3 IEBAIGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiAgLyogVGhlICdmdW5jdGlvbicgY29t bWFuZC4gIFRoaXMgZG9lcyBub3RoaW5nIC0tIGl0IGlzIGp1c3QgYQogICAgIHBsYWNlaG9sZGVy IHRvIGxldCAiaGVscCBmdW5jdGlvbiBOQU1FIiB3b3JrLiAgVGhpcyBpcyBhbHNvIHVzZWQgYXMK ICAgICB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIHN1Yi1jb21tYW5kIHRoYXQgaXMgY3JlYXRl ZCB3aGVuCi1AQCAtMTQ5OCwxMSArMTU2NSwxMCBAQCBwcmVzZXJ2ZV9vbmVfdmFsdWUgKHN0cnVj dCB2YWx1ZSAqdmFsdWUsIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAorQEAgLTE1MjAsMTEgKzE1 ODcsMTAgQEAgcHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKICAJCSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlm IChUWVBFX09CSkZJTEUgKHZhbHVlLT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtMTYwNzYsNyArOTY2 Myw3IEBAIGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAwNjQ0CiAgCQkJCQkJIGNvcGllZF90eXBl cyk7CiAgfQogIAotQEAgLTE1MTcsMTMgKzE1ODMsMTMgQEAgcHJlc2VydmVfb25lX2ludGVybmFs dmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCitA QCAtMTUzOSwxMyArMTYwNSwxMyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2YXIgKHN0cnVjdCBp bnRlcm5hbHZhciAqdmFyLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKICAgICAgY2FzZSBJTlRF Uk5BTFZBUl9JTlRFR0VSOgogICAgICAgIGlmICh2YXItPnUuaW50ZWdlci50eXBlICYmIFRZUEVf T0JKRklMRSAodmFyLT51LmludGVnZXIudHlwZSkgPT0gb2JqZmlsZSkKICAJdmFyLT51LmludGVn ZXIudHlwZQpAQCAtMTYwOTIsNyArOTY3OSw3IEBAIGluZGV4IGQ1NTI0MDIuLmIxMDI2OWMgMTAw NjQ0CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfVkFMVUU6Ci1AQCAt MjM4Nyw3ICsyNDUzLDI0IEBAIHZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0eXBlICp0eXBl LCBjb25zdCBnZGJfYnl0ZSAqZGVjKQorQEAgLTIzOTksNyArMjQ2NSwyNCBAQCB2YWx1ZV9mcm9t X2RlY2Zsb2F0IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKmRlYykKICBzdHJ1 Y3QgdmFsdWUgKgogIGNvZXJjZV9yZWYgKHN0cnVjdCB2YWx1ZSAqYXJnKQogIHsKQEAgLTE2MTE4 LDcgKzk3MDUsNyBAQCBpbmRleCBkNTUyNDAyLi5iMTAyNjljIDEwMDY0NAogIAogICAgaWYgKFRZ UEVfQ09ERSAodmFsdWVfdHlwZV9hcmdfdG1wKSA9PSBUWVBFX0NPREVfUkVGKQogICAgICBhcmcg PSB2YWx1ZV9hdF9sYXp5IChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlX2FyZ190bXApLAot QEAgLTI0ODUsNCArMjU2OCw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQuIikp OworQEAgLTI0OTcsNCArMjU4MCw4IEBAIFZBUklBQkxFIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQu IikpOwogICAgYWRkX3ByZWZpeF9jbWQgKCJmdW5jdGlvbiIsIG5vX2NsYXNzLCBmdW5jdGlvbl9j b21tYW5kLCBfKCJcCiAgUGxhY2Vob2xkZXIgY29tbWFuZCBmb3Igc2hvd2luZyBoZWxwIG9uIGNv bnZlbmllbmNlIGZ1bmN0aW9ucy4iKSwKICAJCSAgJmZ1bmN0aW9ubGlzdCwgImZ1bmN0aW9uICIs IDAsICZjbWRsaXN0KTsKQEAgLTE2MTI4LDEwICs5NzE1LDEwIEBAIGluZGV4IGQ1NTI0MDIuLmIx MDI2OWMgMTAwNjQ0CiArICBvYnNlcnZlcl9hdHRhY2hfbWFya191c2VkICh2YWx1ZV90eXBlc19t YXJrX3VzZWQpOwogIH0KIGRpZmYgLS1naXQgYS9nZGIvdmFsdWUuaCBiL2dkYi92YWx1ZS5oCi1p bmRleCAxMmNiYzBhLi5hNTA4YmY2IDEwMDY0NAoraW5kZXggZWYyY2I0Zi4uYWM5OWE0YiAxMDA2 NDQKIC0tLSBhL2dkYi92YWx1ZS5oCiArKysgYi9nZGIvdmFsdWUuaAotQEAgLTM3Miw2ICszNzIs MTAgQEAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBl ICp0eXBlLCBET1VCTEVTVCBudW0pOworQEAgLTM3Myw2ICszNzMsMTAgQEAgZXh0ZXJuIHN0cnVj dCB2YWx1ZSAqdmFsdWVfZnJvbV9kb3VibGUgKHN0cnVjdCB0eXBlICp0eXBlLCBET1VCTEVTVCBu dW0pOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2Zyb21fZGVjZmxvYXQgKHN0cnVjdCB0 eXBlICp0eXBlLAogIAkJCQkJICBjb25zdCBnZGJfYnl0ZSAqZGVjYnl0ZXMpOwogIApAQCAtMTYx NDIsNyArOTcyOSw3IEBAIGluZGV4IDEyY2JjMGEuLmE1MDhiZjYgMTAwNjQ0CiAgZXh0ZXJuIHN0 cnVjdCB2YWx1ZSAqdmFsdWVfYXQgKHN0cnVjdCB0eXBlICp0eXBlLCBDT1JFX0FERFIgYWRkcik7 CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVfYXRfbGF6eSAoc3RydWN0IHR5cGUgKnR5cGUs IENPUkVfQUREUiBhZGRyKTsKICAKLUBAIC03MjksNyArNzMzLDcgQEAgZXh0ZXJuIHN0cnVjdCB2 YWx1ZSAqdmFsdWVfYWxsb2NhdGVfc3BhY2VfaW5faW5mZXJpb3IgKGludCk7CitAQCAtNzMzLDcg KzczNyw3IEBAIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX2FsbG9jYXRlX3NwYWNlX2luX2lu ZmVyaW9yIChpbnQpOwogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZhbHVlX29mX2xvY2FsIChjb25z dCBjaGFyICpuYW1lLCBpbnQgY29tcGxhaW4pOwogIAogIGV4dGVybiBzdHJ1Y3QgdmFsdWUgKnZh bHVlX3N1YnNjcmlwdGVkX3J2YWx1ZSAoc3RydWN0IHZhbHVlICphcnJheSwKQEAgLTE2MTUyLDcg Kzk3MzksNyBAQCBpbmRleCAxMmNiYzBhLi5hNTA4YmY2IDEwMDY0NAogIC8qIFVzZXIgZnVuY3Rp b24gaGFuZGxlci4gICovCiAgCiBkaWZmIC0tZ2l0IGEvZ2RiL3Zhcm9iai5jIGIvZ2RiL3Zhcm9i ai5jCi1pbmRleCBiOWI4ZTkxLi5hODFkMjVjIDEwMDY0NAoraW5kZXggMjU1MThkNC4uY2I1ZDhh MiAxMDA2NDQKIC0tLSBhL2dkYi92YXJvYmouYwogKysrIGIvZ2RiL3Zhcm9iai5jCiBAQCAtMjYs NiArMjYsOCBAQAoKZGlmZiAtLWdpdCBhL2dkYi1iejU1NTA3Ni1nY29yZS1zbWFsbC1oZWlnaHQu cGF0Y2ggYi9nZGItYno1NTUwNzYtZ2NvcmUtc21hbGwtaGVpZ2h0LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBhY2FkNjZiLi4wMDAwMDAwCi0tLSBhL2dkYi1iejU1NTA3Ni1n Y29yZS1zbWFsbC1oZWlnaHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi0t LS0gYS9nZGIvZ2RiX2djb3JlLnNoCi0rKysgYi9nZGIvZ2RiX2djb3JlLnNoCi1AQCAtNjQsNiAr NjQsOSBAQCBmb3IgcGlkIGluICQqCi0gZG8KLSAJIyBXcml0ZSBnZGIgc2NyaXB0IGZvciBwaWQg JHBpZC4gIAotIAljYXQgPj4kdG1wZmlsZSA8PEVPRgotK3NldCBwYWdpbmF0aW9uIG9mZgotK3Nl dCB3aWR0aCAwCi0rc2V0IGhlaWdodCAwCi0gYXR0YWNoICRwaWQKLSBnY29yZSAkbmFtZS4kcGlk Ci0gZGV0YWNoCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0 b3JzLnBhdGNoIGIvZ2RiLWJ6NTYyNzYzLXByZXR0eS1wcmludC0yZC12ZWN0b3JzLnBhdGNoCmlu ZGV4IGYxYTg5NzMuLmNlZDc4ZDIgMTAwNjQ0Ci0tLSBhL2dkYi1iejU2Mjc2My1wcmV0dHktcHJp bnQtMmQtdmVjdG9ycy5wYXRjaAorKysgYi9nZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZl Y3RvcnMucGF0Y2gKQEAgLTEyLDEwICsxMiwxMCBAQAogCSogZ2RiLnB5dGhvbi9wcjEwNjU5LmV4 cC4gIE5ldyBmaWxlLgogCSogZ2RiLnB5dGhvbi9wcjEwNjU5LnB5OiBOZXcgZmlsZS4KIAotSW5k ZXg6IGdkYi03LjEvZ2RiL3ZhbHByaW50LmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi92YWxwcmludC5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi92YWxwcmludC5o CTIwMTAtMDYtMzAgMTQ6MDI6MTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdmFs cHJpbnQuaAkyMDEwLTA2LTMwIDE0OjM1OjI0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvdmFscHJpbnQuaAkyMDEwLTExLTAzIDE1OjIxOjU3LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3ZhbHByaW50LmgJMjAxMC0x MS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC05MCw2ICs5MCw5IEBAIHN0cnVjdCB2 YWx1ZV9wcmludF9vcHRpb25zCiAgCiAgICAvKiBJZiBub256ZXJvLCBwcmludCB0aGUgdmFsdWUg aW4gInN1bW1hcnkiIGZvcm0uICAqLwpAQCAtMjYsMTEgKzI2LDExIEBAIEluZGV4OiBnZGItNy4x L2dkYi92YWxwcmludC5oCiAgfTsKICAKICAvKiBUaGUgZ2xvYmFsIHByaW50IG9wdGlvbnMgc2V0 IGJ5IHRoZSB1c2VyLiAgSW4gZ2VuZXJhbCB0aGlzIHNob3VsZAotSW5kZXg6IGdkYi03LjEvZ2Ri L3B5dGhvbi9weS1wcmV0dHlwcmludC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIv cHl0aG9uL3B5LXByZXR0eXByaW50LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLm9yaWcvZ2Ri L3B5dGhvbi9weS1wcmV0dHlwcmludC5jCTIwMTAtMDYtMzAgMTQ6MDE6NDAuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMS9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0wNi0zMCAx NDozNDo0OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zODUsNyArMzg1LDggQEAgcHJpbnRfY2hpbGRy ZW4gKFB5T2JqZWN0ICpwcmludGVyLCBjb25zdAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3Jp Zy9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0xMS0xMiAyMTo0OTo0Mi4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9weXRob24vcHktcHJldHR5cHJp bnQuYwkyMDEwLTExLTE2IDA4OjM2OjMyLjAwMDAwMDAwMCArMDEwMAorQEAgLTQ5OSw3ICs0OTks OCBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIsIGNvbnN0CiAgCiAgICAvKiBV c2UgdGhlIHByZXR0eXByaW50X2FycmF5cyBvcHRpb24gaWYgd2UgYXJlIHByaW50aW5nIGFuIGFy cmF5LAogICAgICAgYW5kIHRoZSBwcmV0dHkgb3B0aW9uIG90aGVyd2lzZS4gICovCkBAIC00MCw3 ICs0MCw3IEBAIEluZGV4OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwogIAog ICAgLyogTWFudWZhY3R1cmUgYSBkdW1teSBQeXRob24gZnJhbWUgdG8gd29yayBhcm91bmQgUHl0 aG9uIDIuNCBidWcsCiAgICAgICB3aGVyZSBpdCBpbnNpc3RzIG9uIGhhdmluZyBhIG5vbi1OVUxM IHRzdGF0ZS0+ZnJhbWUgd2hlbgotQEAgLTM5Nyw2ICszOTgsOSBAQCBwcmludF9jaGlsZHJlbiAo UHlPYmplY3QgKnByaW50ZXIsIGNvbnN0CitAQCAtNTExLDYgKzUxMiw5IEBAIHByaW50X2NoaWxk cmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QKICAgICAgICBnb3RvIGRvbmU7CiAgICAgIH0K ICAgIG1ha2VfY2xlYW51cF9weV9kZWNyZWYgKGZyYW1lKTsKQEAgLTUwLDcgKzUwLDcgQEAgSW5k ZXg6IGdkYi03LjEvZ2RiL3B5dGhvbi9weS1wcmV0dHlwcmludC5jCiAgCiAgICBkb25lX2ZsYWcg PSAwOwogICAgZm9yIChpID0gMDsgaSA8IG9wdGlvbnMtPnByaW50X21heDsgKytpKQotQEAgLTQz MSwxMiArNDM1LDIzIEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29uc3QK K0BAIC01NDUsMTIgKzU0OSwyMyBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIs IGNvbnN0CiAgCSAzLiBPdGhlci4gIEFsd2F5cyBwcmludCBhICIsIi4gICovCiAgICAgICAgaWYg KGkgPT0gMCkKICAJewpAQCAtNzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcuMS9nZGIvcHl0aG9u L3B5LXByZXR0eXByaW50LmMKICAgICAgICBlbHNlIGlmICghIGlzX21hcCB8fCBpICUgMiA9PSAw KQogIAlmcHV0c19maWx0ZXJlZCAocHJldHR5ID8gIiwiIDogIiwgIiwgc3RyZWFtKTsKICAKLUBA IC00NjUsNiArNDgwLDEwIEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRlciwgY29u c3QKK0BAIC01NzksNiArNTk0LDEwIEBAIHByaW50X2NoaWxkcmVuIChQeU9iamVjdCAqcHJpbnRl ciwgY29uc3QKICAKICAgICAgICBpZiAoaXNfbWFwICYmIGkgJSAyID09IDApCiAgCWZwdXRzX2Zp bHRlcmVkICgiWyIsIHN0cmVhbSk7CkBAIC05MCw3ICs5MCw3IEBAIEluZGV4OiBnZGItNy4xL2dk Yi9weXRob24vcHktcHJldHR5cHJpbnQuYwogICAgICAgIGVsc2UgaWYgKGlzX2FycmF5KQogIAl7 CiAgCSAgLyogV2UgcHJpbnQgdGhlIGluZGV4LCBub3Qgd2hhdGV2ZXIgdGhlIGNoaWxkIG1ldGhv ZAotQEAgLTUzOSw3ICs1NTgsMTIgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpwcmludGVy LCBjb25zdAorQEAgLTY1NSw3ICs2NzQsMTIgQEAgcHJpbnRfY2hpbGRyZW4gKFB5T2JqZWN0ICpw cmludGVyLCBjb25zdAogIAkgIGZwdXRzX2ZpbHRlcmVkICgiXG4iLCBzdHJlYW0pOwogIAkgIHBy aW50X3NwYWNlc19maWx0ZXJlZCAoMiAqIHJlY3Vyc2UsIHN0cmVhbSk7CiAgCX0KQEAgLTEwNCwx NSArMTA0LDE1IEBAIEluZGV4OiBnZGItNy4xL2dkYi9weXRob24vcHktcHJldHR5cHJpbnQuYwog ICAgICB9CiAgCiAgIGRvbmU6Ci1AQCAtNTYxLDYgKzU4NSw3IEBAIGFwcGx5X3ZhbF9wcmV0dHlf cHJpbnRlciAoc3RydWN0IHR5cGUgKnQKK0BAIC02NzgsNiArNzAyLDcgQEAgYXBwbHlfdmFsX3By ZXR0eV9wcmludGVyIChzdHJ1Y3QgdHlwZSAqdAogICAgc3RydWN0IGNsZWFudXAgKmNsZWFudXBz OwogICAgaW50IHJlc3VsdCA9IDA7Ci0gICBpbnQgaXNfcHlfbm9uZSA9IDA7CisgICBlbnVtIHN0 cmluZ19yZXByX3Jlc3VsdCBwcmludF9yZXN1bHQ7CiArICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0 aW9ucyAqb3B0aW9uc19jb3B5OwogICAgY2xlYW51cHMgPSBlbnN1cmVfcHl0aG9uX2VudiAoZ2Ri YXJjaCwgbGFuZ3VhZ2UpOwogIAogICAgLyogSW5zdGFudGlhdGUgdGhlIHByaW50ZXIuICAqLwot QEAgLTU4MiwxMiArNjA3LDIzIEBAIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5 cGUgKnQKK0BAIC03MDksOSArNzM0LDIxIEBAIGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3Ry dWN0IHR5cGUgKnQKICAKICAgIC8qIElmIHdlIGFyZSBwcmludGluZyBhIG1hcCwgd2Ugd2FudCBz b21lIHNwZWNpYWwgZm9ybWF0dGluZy4gICovCiAgICBoaW50ID0gZ2RicHlfZ2V0X2Rpc3BsYXlf aGludCAocHJpbnRlcik7CkBAIC0xMjgsMjEgKzEyOCwxNiBAQCBJbmRleDogZ2RiLTcuMS9nZGIv cHl0aG9uL3B5LXByZXR0eXByaW50LmMKICAgIG1ha2VfY2xlYW51cCAoZnJlZV9jdXJyZW50X2Nv bnRlbnRzLCAmaGludCk7CiAgCiAgICAvKiBQcmludCB0aGUgc2VjdGlvbiAqLwotLSAgaXNfcHlf bm9uZSA9IHByaW50X3N0cmluZ19yZXByIChwcmludGVyLCBoaW50LCBzdHJlYW0sIHJlY3Vyc2Us Ci0tCQkJCSAgb3B0aW9ucywgbGFuZ3VhZ2UsIGdkYmFyY2gpOwotLSAgcHJpbnRfY2hpbGRyZW4g KHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9ucywgbGFuZ3VhZ2UsCi0rICBp c19weV9ub25lID0gb3B0aW9uc19jb3B5LT5wcmV0dHlwcmludF9tYXRyaXggPwotKyAgICAxIDog cHJpbnRfc3RyaW5nX3JlcHIgKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwKLSsJCQkgICByZWN1cnNl LCBvcHRpb25zX2NvcHksCi0rCQkJICAgbGFuZ3VhZ2UsIGdkYmFyY2gpOwotKyAgcHJpbnRfY2hp bGRyZW4gKHByaW50ZXIsIGhpbnQsIHN0cmVhbSwgcmVjdXJzZSwgb3B0aW9uc19jb3B5LCBsYW5n dWFnZSwKLSAJCSAgaXNfcHlfbm9uZSk7Ci0gCi0gICByZXN1bHQgPSAxOwotSW5kZXg6IGdkYi03 LjEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkuY2MKKysgIGlmIChvcHRpb25zX2Nv cHktPnByZXR0eXByaW50X21hdHJpeCkKKysgICAgcHJpbnRfcmVzdWx0ID0gc3RyaW5nX3JlcHJf bm9uZTsKKytlbHNlIC8qIFJlZCBIYXQgMkQgbWF0cml4IHBhdGNoICovCisgICBwcmludF9yZXN1 bHQgPSBwcmludF9zdHJpbmdfcmVwciAocHJpbnRlciwgaGludCwgc3RyZWFtLCByZWN1cnNlLAor IAkJCQkgICAgb3B0aW9ucywgbGFuZ3VhZ2UsIGdkYmFyY2gpOworICAgaWYgKHByaW50X3Jlc3Vs dCAhPSBzdHJpbmdfcmVwcl9lcnJvcikKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90 ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmNjCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS9nZGIvdGVz dHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5jYwkyMDEwLTA2LTMwIDE0OjM0OjQ5LjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9u L3ByMTA2NTkuY2MJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAg KzEsNDMgQEAKICsjaW5jbHVkZSA8bGlzdD4KICsjaW5jbHVkZSA8dmVjdG9yPiAgLy8gL3Vzci9p bmNsdWRlL2MrKy80LjQuMS9iaXRzL3ZlY3Rvci50Y2MKQEAgLTE4NywxMCArMTgyLDEwIEBAIElu ZGV4OiBnZGItNy4xL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmNjCiArICAKICsg IHJldHVybiAwOyAgLy8gYnJlYWsKICt9Ci1JbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHIxMDY1OS5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0 c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkuZXhwCTIwMTAtMDYtMzAgMTQ6MzQ6NDkuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24v cHIxMDY1OS5leHAJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAg KzEsODIgQEAKICsjQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu CiArCkBAIC0yNzQsMTAgKzI2OSwxMCBAQCBJbmRleDogZ2RiLTcuMS9nZGIvdGVzdHN1aXRlL2dk Yi5weXRob24vcHIxMDY1OS5leHAKICsjIAogKwogKwotSW5kZXg6IGdkYi03LjEvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3ByMTA2NTkucHkKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9wcjEwNjU5LnB5CiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9u dWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS9nZGIv dGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5weQkyMDEwLTA2LTMwIDE0OjM0OjQ5LjAwMDAw MDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3ByMTA2NTkucHkJMjAxMC0xMS0xNiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKIEBAIC0w LDAgKzEsMTA5IEBACiArIyBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCkBAIC0zODgsMTEgKzM4MywxMSBAQCBJbmRleDogZ2RiLTcuMS9n ZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHIxMDY1OS5weQogK2Zha2VfcHJldHR5X3ByaW50ZXJz X2RpY3QgPSB7fQogKwogK2J1aWxkX2xpYmZha2VjeHhfZGljdGlvbmFyeSAoKQotSW5kZXg6IGdk Yi03LjEvZ2RiL3ZhbHByaW50LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi92YWxw cmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS5vcmlnL2dkYi92YWxwcmludC5jCTIwMTAt MDYtMzAgMTM6NTE6MjYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS9nZGIvdmFscHJpbnQu YwkyMDEwLTA2LTMwIDE0OjM1OjQxLjAwMDAwMDAwMCArMDIwMAotQEAgLTgzLDcgKzgzLDggQEAg c3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgdXNlcl9wcmludF9vcAorLS0tIGdkYi03LjIuNTAu MjAxMDExMTYub3JpZy9nZGIvdmFscHJpbnQuYwkyMDEwLTExLTE2IDA3OjU0OjAwLjAwMDAwMDAw MCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3ZhbHByaW50LmMJMjAxMC0xMS0x NiAwODozMTo1Ni4wMDAwMDAwMDAgKzAxMDAKK0BAIC04NSw3ICs4NSw4IEBAIHN0cnVjdCB2YWx1 ZV9wcmludF9vcHRpb25zIHVzZXJfcHJpbnRfb3AKICAgIDEsCQkJCS8qIHN0YXRpY19maWVsZF9w cmludCAqLwogICAgMSwJCQkJLyogcGFzY2FsX3N0YXRpY19maWVsZF9wcmludCAqLwogICAgMCwJ CQkJLyogcmF3ICovCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUu cGF0Y2ggYi9nZGItYno1NzUyOTItZGVsYXllZC1waHlzbmFtZS5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggZTE1MzkxZC4uMDAwMDAwMAotLS0gYS9nZGItYno1NzUyOTItZGVs YXllZC1waHlzbmFtZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzMCArMCwwIEBACi1NYWRl IG1vcmUgc2FmZSAoYnV0IGxlc3MgZWZmZWN0aXZlKSBieSB1c2luZyBhIGxpbmtlZCBsaXN0Lgot Ci1CYXNlZCBvbjoKLQlSZTogW1JGQV0gRGVsYXllZCBwaHlzbmFtZSBjb21wdXRhdGlvbgotCWh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA1L21zZzAwMjQ4Lmh0bWwK LQotTmVpdGhlciBpdHMgb2JzdGFjay1sZWFrLnBhdGNoIG5vcgotCVtwYXRjaF0gRml4IGR1cGxp Y2F0ZSB0eXBlcyBmb3Igc2luZ2xlIERJRQotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGIt cGF0Y2hlcy8yMDEwLTA1L21zZzAwMjcxLmh0bWwKLWlzIG5lZWRlZCBhcyB0aGUgbGlua2VkIGxp c3QgaXMgdXNlZCBpbnN0ZWFkLgotCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvZHdh cmYycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcyMS5vcmlnL2dkYi9k d2FyZjJyZWFkLmMJMjAxMC0wNy0yMiAxMTo1OToxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4xLjkwLjIwMTAwNzIxL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0wNy0yMiAxMjowMDowOC4wMDAw MDAwMDAgKzAyMDAKLUBAIC0yNTMsNiArMjUzLDI4IEBAIHN0cnVjdCBjb21wX3VuaXRfaGVhZAot ICAgdW5zaWduZWQgaW50IGZpcnN0X2RpZV9vZmZzZXQ7Ci0gfTsKLSAKLSsvKiBUeXBlIHVzZWQg Zm9yIGRlbGF5aW5nIGNvbXB1dGF0aW9uIG9mIG1ldGhvZCBwaHlzbmFtZXMuCi0rICAgU2VlIGNv bW1lbnRzIGZvciBjb21wdXRlX2RlbGF5ZWRfcGh5c25hbWVzLiAgKi8KLStzdHJ1Y3QgZGVsYXll ZF9tZXRob2RfaW5mbwotK3sKLSsgIHN0cnVjdCBkZWxheWVkX21ldGhvZF9pbmZvICpuZXh0Owot KwotKyAgLyogVGhlIHR5cGUgdG8gd2hpY2ggdGhlIG1ldGhvZCBpcyBhdHRhY2hlZCwgaS5lLiwg aXRzIHBhcmVudCBjbGFzcy4gICovCi0rICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSsKLSsgIC8qIFRo ZSBpbmRleCBvZiB0aGUgbWV0aG9kIGluIHRoZSB0eXBlJ3MgZnVuY3Rpb24gZmllbGRsaXN0cy4g ICovCi0rICBpbnQgZm5maWVsZF9pbmRleDsKLSsKLSsgIC8qIFRoZSBpbmRleCBvZiB0aGUgbWV0 aG9kIGluIHRoZSBmaWVsZGxpc3QuICAqLwotKyAgaW50IGluZGV4OwotKwotKyAgLyogVGhlIG5h bWUgb2YgdGhlIERJRS4gICovCi0rICBjb25zdCBjaGFyICpuYW1lOwotKwotKyAgLyogIFRoZSBE SUUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgbWV0aG9kLiAgKi8KLSsgIHN0cnVjdCBkaWVfaW5mbyAq ZGllOwotK307Ci0rCi0gLyogSW50ZXJuYWwgc3RhdGUgd2hlbiBkZWNvZGluZyBhIHBhcnRpY3Vs YXIgY29tcGlsYXRpb24gdW5pdC4gICovCi0gc3RydWN0IGR3YXJmMl9jdQotIHsKLUBAIC0zMzEs NiArMzUzLDEwIEBAIHN0cnVjdCBkd2FyZjJfY3UKLSAgIC8qIEhlYWRlciBkYXRhIGZyb20gdGhl IGxpbmUgdGFibGUsIGR1cmluZyBmdWxsIHN5bWJvbCBwcm9jZXNzaW5nLiAgKi8KLSAgIHN0cnVj dCBsaW5lX2hlYWRlciAqbGluZV9oZWFkZXI7Ci0gCi0rICAvKiBBIGxpc3Qgb2YgbWV0aG9kcyB3 aGljaCBuZWVkIHRvIGhhdmUgcGh5c25hbWVzIGNvbXB1dGVkCi0rICAgICBhZnRlciBhbGwgdHlw ZSBpbmZvcm1hdGlvbiBoYXMgYmVlbiByZWFkLiAgKi8KLSsgIHN0cnVjdCBkZWxheWVkX21ldGhv ZF9pbmZvICptZXRob2RfbGlzdDsKLSsKLSAgIC8qIE1hcmsgdXNlZCB3aGVuIHJlbGVhc2luZyBj YWNoZWQgZGllcy4gICovCi0gICB1bnNpZ25lZCBpbnQgbWFyayA6IDE7Ci0gCi1AQCAtMTIzOSw2 ICsxMjY1LDkgQEAgc3RhdGljIGdkYl9ieXRlICpwYXJ0aWFsX3JlYWRfY29tcF91bml0XwotIHN0 YXRpYyB2b2lkIGluaXRfY3VfZGllX3JlYWRlciAoc3RydWN0IGRpZV9yZWFkZXJfc3BlY3MgKnJl YWRlciwKLSAJCQkJc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotIAotK3N0YXRpYyBjb25zdCBjaGFy ICpkd2FyZjJfcGh5c25hbWUgKGNoYXIgKm5hbWUsIHN0cnVjdCBkaWVfaW5mbyAqZGllLAotKwkJ CQkgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpOwotKwotICNpZiBXT1JEU19CSUdFTkRJQU4KLSAK LSAvKiBDb252ZXJ0IFZBTFVFIGJldHdlZW4gYmlnLSBhbmQgbGl0dGxlLWVuZGlhbi4gICovCi1A QCAtNDEwMyw2ICs0MTMyLDU4IEBAIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJf cGVyX2MKLSAgIGRpc2NhcmRfY2xlYW51cHMgKGZyZWVfY3VfY2xlYW51cCk7Ci0gfQotIAotKy8q IEFkZCBhIERJRSB0byB0aGUgZGVsYXllZCBwaHlzbmFtZSBsaXN0LiAgKi8KLStzdGF0aWMgdm9p ZAotK2FkZF90b19tZXRob2RfbGlzdCAoc3RydWN0IHR5cGUgKnR5cGUsIGludCBmbmZpZWxkX2lu ZGV4LCBpbnQgaW5kZXgsCi0rCQkgICAgY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IGRpZV9pbmZv ICpkaWUsCi0rCQkgICAgc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgc3RydWN0IGRlbGF5 ZWRfbWV0aG9kX2luZm8gKm1pOwotKwotKyAgbWkgPSB4bWFsbG9jIChzaXplb2YgKCptaSkpOwot KyAgbWktPm5leHQgPSBjdS0+bWV0aG9kX2xpc3Q7Ci0rICBjdS0+bWV0aG9kX2xpc3QgPSBtaTsK LSsgIG1pLT50eXBlID0gdHlwZTsKLSsgIG1pLT5mbmZpZWxkX2luZGV4ID0gZm5maWVsZF9pbmRl eDsKLSsgIG1pLT5pbmRleCA9IGluZGV4OwotKyAgbWktPm5hbWUgPSBuYW1lOwotKyAgbWktPmRp ZSA9IGRpZTsKLSt9Ci0rCi0rLyogQ29tcHV0ZSB0aGUgcGh5c25hbWVzIG9mIGFueSBtZXRob2Rz IG9uIHRoZSBDVSdzIG1ldGhvZCBsaXN0LgotKwotKyAgIFRoZSBjb21wdXRhdGlvbiBvZiBtZXRo b2QgcGh5c25hbWVzIGlzIGRlbGF5ZWQgaW4gb3JkZXIgdG8gYXZvaWQgdGhlCi0rICAgKGJhZCkg Y29uZGl0aW9uIHRoYXQgb25lIG9mIHRoZSBtZXRob2QncyBmb3JtYWwgcGFyYW1ldGVycyBpcyBv ZiBhbiBhcyB5ZXQKLSsgICBpbmNvbXBsZXRlIHR5cGUuICAqLwotK3N0YXRpYyB2b2lkCi0rY29t cHV0ZV9kZWxheWVkX3BoeXNuYW1lcyAoc3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rewotKyAgc3Ry dWN0IGRlbGF5ZWRfbWV0aG9kX2luZm8gKm1pOwotKyAgCi0rICBmb3IgKG1pID0gY3UtPm1ldGhv ZF9saXN0OyBtaTsgbWkgPSBtaS0+bmV4dCkKLSsgICAgewotKyAgICAgIGNoYXIgKnBoeXNuYW1l OwotKyAgICAgIHN0cnVjdCBmbl9maWVsZGxpc3QgKmZuX2ZscAotKwk9ICZUWVBFX0ZOX0ZJRUxE TElTVCAobWktPnR5cGUsIG1pLT5mbmZpZWxkX2luZGV4KTsKLSsgICAgICBwaHlzbmFtZSA9IChj aGFyICopIGR3YXJmMl9waHlzbmFtZSAoKGNoYXIgKikgbWktPm5hbWUsIG1pLT5kaWUsIGN1KTsK LSsgICAgICBmbl9mbHAtPmZuX2ZpZWxkc1ttaS0+aW5kZXhdLnBoeXNuYW1lID0gcGh5c25hbWUg PyBwaHlzbmFtZSA6ICIiOwotKyAgICB9Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rbWV0aG9kX2xp c3RfY2xlYW51cCAodm9pZCAqYXJnKQotK3sKLSsgIHN0cnVjdCBkZWxheWVkX21ldGhvZF9pbmZv ICoqbWV0aG9kX2xpc3RfcG9pbnRlciA9IGFyZzsKLSsKLSsgIHdoaWxlICgqbWV0aG9kX2xpc3Rf cG9pbnRlcikKLSsgICAgewotKyAgICAgIHN0cnVjdCBkZWxheWVkX21ldGhvZF9pbmZvICptaSA9 ICptZXRob2RfbGlzdF9wb2ludGVyOwotKwotKyAgICAgICptZXRob2RfbGlzdF9wb2ludGVyID0g bWktPm5leHQ7Ci0rICAgICAgeGZyZWUgKG1pKTsKLSsgICAgfQotK30KLSsKLSAvKiBHZW5lcmF0 ZSBmdWxsIHN5bWJvbCBpbmZvcm1hdGlvbiBmb3IgUFNUIGFuZCBDVSwgd2hvc2UgRElFcyBoYXZl Ci0gICAgYWxyZWFkeSBiZWVuIGxvYWRlZCBpbnRvIG1lbW9yeS4gICovCi0gCi1AQCAtNDExMyw3 ICs0MTk0LDcgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9wZQotICAg c3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBwZXJfY3UtPm9iamZpbGU7Ci0gICBDT1JFX0FERFIg bG93cGMsIGhpZ2hwYzsKLSAgIHN0cnVjdCBzeW10YWIgKnN5bXRhYjsKLS0gIHN0cnVjdCBjbGVh bnVwICpiYWNrX3RvOwotKyAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG8sICpkZWxheWVkX2xpc3Rf Y2xlYW51cDsKLSAgIENPUkVfQUREUiBiYXNlYWRkcjsKLSAKLSAgIGJhc2VhZGRyID0gQU5PRkZT RVQgKG9iamZpbGUtPnNlY3Rpb25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwot QEAgLTQxMjMsMTEgKzQyMDQsMjIgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3 YXJmMl9wZQotIAotICAgY3UtPmxpc3RfaW5fc2NvcGUgPSAmZmlsZV9zeW1ib2xzOwotIAotKyAg LyogSWYgbWV0aG9kcyB3ZXJlIGZvdW5kIGluIHRoZSBwYXJ0aWFsIHN5bWJvbCB0YWJsZSwgd2Ug YWxsb2NhdGUgb25lCi0rICAgICBiaWcgYnVmZmVyIHRvIGhvbGQgdGhlIGVudGlyZSBkZWxheWVk IGxpc3QgZm9yIHRoZSBDVS4gICovCi0rICBkZWxheWVkX2xpc3RfY2xlYW51cCA9IG1ha2VfY2xl YW51cCAobWV0aG9kX2xpc3RfY2xlYW51cCwKLSsJCQkJICAgICAgICZjdS0+bWV0aG9kX2xpc3Qp OwotKwotICAgZHdhcmYyX2ZpbmRfYmFzZV9hZGRyZXNzIChjdS0+ZGllcywgY3UpOwotIAotICAg LyogRG8gbGluZSBudW1iZXIgZGVjb2RpbmcgaW4gcmVhZF9maWxlX3Njb3BlICgpICovCi0gICBw cm9jZXNzX2RpZSAoY3UtPmRpZXMsIGN1KTsKLSAKLSsgIC8qIE5vdyB0aGF0IHdlIGhhdmUgcHJv Y2Vzc2VkIGFsbCB0aGUgRElFcyBpbiB0aGUgQ1UsIGFsbCB0aGUgdHlwZXMgCi0rICAgICBzaG91 bGQgYmUgY29tcGxldGUsIGFuZCBpdCBzaG91bGQgbm93IGJlIHNhZmUgdG8gY29tcHV0ZSBhbGwg b2YgdGhlCi0rICAgICBwaHlzbmFtZXMuICAqLwotKyAgY29tcHV0ZV9kZWxheWVkX3BoeXNuYW1l cyAoY3UpOwotKyAgZG9fY2xlYW51cHMgKGRlbGF5ZWRfbGlzdF9jbGVhbnVwKTsKLSsKLSAgIC8q IFNvbWUgY29tcGlsZXJzIGRvbid0IGRlZmluZSBhIERXX0FUX2hpZ2hfcGMgYXR0cmlidXRlIGZv ciB0aGUKLSAgICAgIGNvbXBpbGF0aW9uIHVuaXQuICBJZiB0aGUgRFdfQVRfaGlnaF9wYyBpcyBt aXNzaW5nLCBzeW50aGVzaXplCi0gICAgICBpdCwgYnkgc2Nhbm5pbmcgdGhlIERJRSdzIGJlbG93 IHRoZSBjb21waWxhdGlvbiB1bml0LiAgKi8KLUBAIC01ODM4LDcgKzU5MzAsNiBAQCBkd2FyZjJf YWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCi0gICBpbnQgaTsKLSAgIHN0cnVjdCBm bl9maWVsZCAqZm5wOwotICAgY2hhciAqZmllbGRuYW1lOwotLSAgY2hhciAqcGh5c25hbWU7Ci0g ICBzdHJ1Y3QgbmV4dGZuZmllbGQgKm5ld19mbmZpZWxkOwotICAgc3RydWN0IHR5cGUgKnRoaXNf dHlwZTsKLSAKLUBAIC01ODUwLDkgKzU5NDEsNiBAQCBkd2FyZjJfYWRkX21lbWJlcl9mbiAoc3Ry dWN0IGZpZWxkX2luZm8gCi0gICBpZiAoZmllbGRuYW1lID09IE5VTEwpCi0gICAgIHJldHVybjsK LSAKLS0gIC8qIEdldCB0aGUgbWFuZ2xlZCBuYW1lLiAgKi8KLS0gIHBoeXNuYW1lID0gKGNoYXIg KikgZHdhcmYyX3BoeXNuYW1lIChmaWVsZG5hbWUsIGRpZSwgY3UpOwotLQotICAgLyogTG9vayB1 cCBtZW1iZXIgZnVuY3Rpb24gbmFtZSBpbiBmaWVsZGxpc3QuICAqLwotICAgZm9yIChpID0gMDsg aSA8IGZpcC0+bmZuZmllbGRzOyBpKyspCi0gICAgIHsKLUBAIC01ODc4LDcgKzU5NjYsNyBAQCBk d2FyZjJfYWRkX21lbWJlcl9mbiAoc3RydWN0IGZpZWxkX2luZm8gCi0gICAgICAgZmxwLT5uYW1l ID0gZmllbGRuYW1lOwotICAgICAgIGZscC0+bGVuZ3RoID0gMDsKLSAgICAgICBmbHAtPmhlYWQg PSBOVUxMOwotLSAgICAgIGZpcC0+bmZuZmllbGRzKys7Ci0rICAgICAgaSA9IGZpcC0+bmZuZmll bGRzKys7Ci0gICAgIH0KLSAKLSAgIC8qIENyZWF0ZSBhIG5ldyBtZW1iZXIgZnVuY3Rpb24gZmll bGQgYW5kIGNoYWluIGl0IHRvIHRoZSBmaWVsZCBsaXN0Ci1AQCAtNTg5Miw5ICs1OTgwLDE5IEBA IGR3YXJmMl9hZGRfbWVtYmVyX2ZuIChzdHJ1Y3QgZmllbGRfaW5mbyAKLSAKLSAgIC8qIEZpbGwg aW4gdGhlIG1lbWJlciBmdW5jdGlvbiBmaWVsZCBpbmZvLiAgKi8KLSAgIGZucCA9ICZuZXdfZm5m aWVsZC0+Zm5maWVsZDsKLS0gIC8qIFRoZSBuYW1lIGlzIGFscmVhZHkgYWxsb2NhdGVkIGFsb25n IHdpdGggdGhpcyBvYmpmaWxlLCBzbyB3ZSBkb24ndAotLSAgICAgbmVlZCB0byBkdXBsaWNhdGUg aXQgZm9yIHRoZSB0eXBlLiAgKi8KLS0gIGZucC0+cGh5c25hbWUgPSBwaHlzbmFtZSA/IHBoeXNu YW1lIDogIiI7Ci0rCi0rICAvKiBEZWxheSBwcm9jZXNzaW5nIG9mIHRoZSBwaHlzbmFtZSB1bnRp bCBsYXRlci4gICovCi0rICBpZiAoY3UtPmxhbmd1YWdlID09IGxhbmd1YWdlX2NwbHVzIHx8IGN1 LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9qYXZhKQotKyAgICB7Ci0rICAgICAgYWRkX3RvX21ldGhv ZF9saXN0ICh0eXBlLCBpLCBmbHAtPmxlbmd0aCAtIDEsIGZpZWxkbmFtZSwKLSsJCQkgIGRpZSwg Y3UpOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBjaGFyICpwaHlzbmFtZSA9IChj aGFyICopIGR3YXJmMl9waHlzbmFtZSAoZmllbGRuYW1lLCBkaWUsIGN1KTsKLSsgICAgICBmbnAt PnBoeXNuYW1lID0gcGh5c25hbWUgPyBwaHlzbmFtZSA6ICIiOwotKyAgICB9Ci0rCi0gICBmbnAt PnR5cGUgPSBhbGxvY190eXBlIChvYmpmaWxlKTsKLSAgIHRoaXNfdHlwZSA9IHJlYWRfdHlwZV9k aWUgKGRpZSwgY3UpOwotICAgaWYgKHRoaXNfdHlwZSAmJiBUWVBFX0NPREUgKHRoaXNfdHlwZSkg PT0gVFlQRV9DT0RFX0ZVTkMpCi1AQCAtNTkyMCw3ICs2MDE4LDcgQEAgZHdhcmYyX2FkZF9tZW1i ZXJfZm4gKHN0cnVjdCBmaWVsZF9pbmZvIAotICAgICB9Ci0gICBlbHNlCi0gICAgIGNvbXBsYWlu dCAoJnN5bWZpbGVfY29tcGxhaW50cywgXygibWVtYmVyIGZ1bmN0aW9uIHR5cGUgbWlzc2luZyBm b3IgJyVzJyIpLAotLQkgICAgICAgcGh5c25hbWUpOwotKwkgICAgICAgZHdhcmYyX2Z1bGxfbmFt ZSAoZmllbGRuYW1lLCBkaWUsIGN1KSk7Ci0gCi0gICAvKiBHZXQgZmNvbnRleHQgZnJvbSBEV19B VF9jb250YWluaW5nX3R5cGUgaWYgcHJlc2VudC4gICovCi0gICBpZiAoZHdhcmYyX2F0dHIgKGRp ZSwgRFdfQVRfY29udGFpbmluZ190eXBlLCBjdSkgIT0gTlVMTCkKLUBAIC04Mjk5LDcgKzgzOTcs OSBAQCBsb2FkX3BhcnRpYWxfZGllcyAoYmZkICphYmZkLCBnZGJfYnl0ZSAqCi0gCQkgICAgICB8 fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19pbnRlcmZhY2VfdHlwZQotIAkJICAgICAgfHwgbGFz dF9kaWUtPnRhZyA9PSBEV19UQUdfc3RydWN0dXJlX3R5cGUKLSAJCSAgICAgIHx8IGxhc3RfZGll LT50YWcgPT0gRFdfVEFHX3VuaW9uX3R5cGUpKQotLQkgICAgICB8fCAoY3UtPmxhbmd1YWdlID09 IGxhbmd1YWdlX2FkYQotKwkgICAgICB8fCAoKGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9hZGEK LSsJCSAgIHx8IGN1LT5sYW5ndWFnZSA9PSBsYW5ndWFnZV9jcGx1cwotKwkJICAgfHwgY3UtPmxh bmd1YWdlID09IGxhbmd1YWdlX2phdmEpCi0gCQkgICYmIChsYXN0X2RpZS0+dGFnID09IERXX1RB R19zdWJwcm9ncmFtCi0gCQkgICAgICB8fCBsYXN0X2RpZS0+dGFnID09IERXX1RBR19sZXhpY2Fs X2Jsb2NrKSkpKQotIAl7Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvcHIxMTQ2NS5TCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcyMS9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvcHIxMTQ2NS5TCTIwMTAtMDctMjIgMTE6NTk6MjkuMDAwMDAw MDAwICswMjAwCi1AQCAtMCwwICsxLDM1NSBAQAotKy8qIENvcHlyaWdodCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3 YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2 ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVj ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25n IHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNl bnNlcy8+LiAgKi8KLSsKLSsvKiBDb21waWxlZCBmcm9tOgotKwotKyAgICBuYW1lc3BhY2UgTgot KyAgICB7Ci0rICAgICAgY2xhc3MgQwotKyAgICAgIHsKLSsgICAgICBwdWJsaWM6Ci0rICAgICAg ICB0eXBlZGVmIHZvaWQgKCp0KSAoQyk7Ci0rICAgICAgICBDICh0KSB7fQotKyAgICAgIH07Ci0r ICAgICAgdHlwZWRlZiBDOjp0IHU7Ci0rICAgICAgdSBmOwotKyAgICAgIEMgYyAoZik7Ci0rICAg IH07Ci0rCi0rICAgIGludAotKyAgICBtYWluICgpCi0rICAgIHsKLSsgICAgICByZXR1cm4gMDsK LSsgICAgfQotKyovCi0rCi0rCS50ZXh0Ci0rX1pOMU4xY0U6CQotKwkuc2VjdGlvbgkuZGVidWdf aW5mbwotK2Q6Ci0rCS5sb25nCS5MZGVidWdfaW5mb19lbmQgLSAxZiAvKiBMZW5ndGggb2YgQ1Ug aW5mbyAqLwotKzE6Ci0rCS4yYnl0ZQkweDIJCS8qIERXQVJGIHZlcnNpb24gbnVtYmVyICovCi0r CS5sb25nCS5MZGVidWdfYWJicmV2MAkvKiBBYmJyZXYgb2Zmc2V0ICovCi0rCS5ieXRlCTB4NAkJ LyogUG9pbnRlciBzaXplICovCi0rZGllYjoJLnVsZWIxMjggMHgxCQkvKiBEV19UQUdfY29tcGls ZV91bml0ICovCi0rCS5sb25nCS5MQVNGNAkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJ MHg0CQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwkubG9uZwkuTEFTRjUJCS8qIERXX0FUX25hbWUg Ki8KLSsJLmxvbmcJLkxBU0Y2CQkvKiBEV19BVF9jb21wX2RpciAqLwotKwkubG9uZwkweDAJCS8q IERXX0FUX2xvd19wYyAqLwotKwkubG9uZwkweDAJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLmxv bmcJMHgwCQkvKiBEV19BVF9lbnRyeV9wYyAqLwotK2RpZTI5OgkudWxlYjEyOCAweDIJCS8qIERX X1RBR19uYW1lc3BhY2UgKi8KLSsJLnN0cmluZwkiTiIJCS8qIERXX0FUX25hbWUgKi8KLStkaWUz MjoJLnVsZWIxMjggMHgzCQkvKiBEV19UQUdfY2xhc3NfdHlwZSAqLwotKwkuc3RyaW5nCSJDIgkJ LyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkweDEJCS8qIERXX0FUX2RlY2xhcmF0aW9uICovCi0r ZGllMzY6CS51bGViMTI4IDB4NAkJLyogRFdfVEFHX3R5cGVkZWYgKi8KLSsJLnN0cmluZwkidSIJ CS8qIERXX0FUX25hbWUgKi8KLSsJLmxvbmcJZGllN2UtZAkJLyogRFdfQVRfdHlwZSAqLwotK2Rp ZTNmOgkudWxlYjEyOCAweDUJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuc3RyaW5nCSJmIgkJ LyogRFdfQVRfbmFtZSAqLwotKwkubG9uZwkuTEFTRjAJCS8qIERXX0FUX01JUFNfbGlua2FnZV9u YW1lICovCi0rCS5sb25nCWRpZTM2LWQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJMHgxCQkv KiBEV19BVF9leHRlcm5hbCAqLwotKwkuYnl0ZQkweDEJCS8qIERXX0FUX2RlY2xhcmF0aW9uICov Ci0rZGllNGU6CS51bGViMTI4IDB4NQkJLyogRFdfVEFHX3ZhcmlhYmxlICovCi0rCS5zdHJpbmcJ ImMiCQkvKiBEV19BVF9uYW1lICovCi0rCS5sb25nCS5MQVNGMQkJLyogRFdfQVRfTUlQU19saW5r YWdlX25hbWUgKi8KLSsJLmxvbmcJZGllNWUtZAkJLyogRFdfQVRfdHlwZSAqLwotKwkuYnl0ZQkw eDEJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS5ieXRlCTB4MQkJLyogRFdfQVRfZGVjbGFyYXRp b24gKi8KLSsJLmJ5dGUJMHgwCi0rZGllNWU6CS51bGViMTI4IDB4NgkJLyogRFdfVEFHX2NsYXNz X3R5cGUgKi8KLSsJLmxvbmcJZGllMzItZAkJLyogRFdfQVRfc3BlY2lmaWNhdGlvbiAqLwotKwku Ynl0ZQkweDEJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotK2RpZTZhOgkudWxlYjEyOCAweDcJCS8q IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8K LSsJLnN0cmluZwkiQyIJCS8qIERXX0FUX25hbWUgKi8KLSsJLmJ5dGUJMHgxCQkvKiBEV19BVF9k ZWNsYXJhdGlvbiAqLwotK2RpZTcxOgkudWxlYjEyOCAweDgJCS8qIERXX1RBR19mb3JtYWxfcGFy YW1ldGVyICovCi0rCS5sb25nCWRpZThmLWQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJMHgx CQkvKiBEV19BVF9hcnRpZmljaWFsICovCi0rZGllNzc6CS51bGViMTI4IDB4OQkJLyogRFdfVEFH X2Zvcm1hbF9wYXJhbWV0ZXIgKi8KLSsJLmxvbmcJZGllN2UtZAkJLyogRFdfQVRfdHlwZSAqLwot KwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rZGllN2U6CS51bGViMTI4IDB4YQkJLyogRFdfVEFH X3BvaW50ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDQJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwku bG9uZwlkaWU4NC1kCQkvKiBEV19BVF90eXBlICovCi0rZGllODQ6CS51bGViMTI4IDB4YgkJLyog RFdfVEFHX3N1YnJvdXRpbmVfdHlwZSAqLwotK2RpZTg5OgkudWxlYjEyOCAweDkJCS8qIERXX1RB R19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCWRpZTVlLWQJCS8qIERXX0FUX3R5cGUgKi8K LSsJLmJ5dGUJMHgwCi0rZGllOGY6CS51bGViMTI4IDB4YQkJLyogRFdfVEFHX3BvaW50ZXJfdHlw ZSAqLwotKwkuYnl0ZQkweDQJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkubG9uZwlkaWU1ZS1k CQkvKiBEV19BVF90eXBlICovCi0rZGllOTU6CS51bGViMTI4IDB4YwkJLyogRFdfVEFHX3N1YnBy b2dyYW0gKi8KLSsJLmxvbmcJZGllNmEtZAkJLyogRFdfQVRfc3BlY2lmaWNhdGlvbiAqLwotKwku Ynl0ZQkweDIJCS8qIERXX0FUX2lubGluZSAqLwotK2RpZTlmOgkudWxlYjEyOCAweGQJCS8qIERX X1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCS5MQVNGNwkJLyogRFdfQVRfbmFtZSAq LwotKwkubG9uZwlkaWVhZi1kCQkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCTB4MQkJLyogRFdf QVRfYXJ0aWZpY2lhbCAqLwotK2RpZWE5OgkudWxlYjEyOCAweDkJCS8qIERXX1RBR19mb3JtYWxf cGFyYW1ldGVyICovCi0rCS5sb25nCWRpZTdlLWQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJ MHgwCi0rZGllYWY6CS51bGViMTI4IDB4ZQkJLyogRFdfVEFHX2NvbnN0X3R5cGUgKi8KLSsJLmxv bmcJZGllOGYtZAkJLyogRFdfQVRfdHlwZSAqLwotK2RpZWI0OgkudWxlYjEyOCAweGYJCS8qIERX X1RBR19zdWJwcm9ncmFtICovCi0rCS5sb25nCWRpZTk1LWQJCS8qIERXX0FUX2Fic3RyYWN0X29y aWdpbiAqLwotKwkubG9uZwlfWk4xTjFjRQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLmxvbmcJX1pO MU4xY0UJLyogRFdfQVRfaGlnaF9wYyAqLwotK2RpZWM5OgkudWxlYjEyOCAweDEwCQkvKiBEV19U QUdfc3VicHJvZ3JhbSAqLwotKwkubG9uZwlkaWU5Zi1kCQkvKiBEV19BVF9hYnN0cmFjdF9vcmln aW4gKi8KLSsJLmJ5dGUJMmYtMWYJCS8qIERXX0FUX2xvY2F0aW9uICovCi0rMToKLSsJLmJ5dGUJ MHg1MAkJLyogRFdfT1BfcmVnMCAqLwotKzI6Ci0rZGllZDE6CS51bGViMTI4IDB4MTAJCS8qIERX X1RBR19mb3JtYWxfcGFyYW1ldGVyICovCi0rCS5sb25nCWRpZWE5LWQJCS8qIERXX0FUX2Fic3Ry YWN0X29yaWdpbiAqLwotKwkuYnl0ZQkyZi0xZgkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgot KwkuYnl0ZQkweDUxCQkvKiBEV19PUF9yZWcxICovCi0rMjoKLSsJLmJ5dGUJMHgwCi0rZGllZGE6 CS51bGViMTI4IDB4MTEJCS8qIERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MQkJLyog RFdfQVRfZXh0ZXJuYWwgKi8KLSsJLmxvbmcJLkxBU0Y4CQkvKiBEV19BVF9uYW1lICovCi0rCS5s b25nCWRpZWYyLWQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmxvbmcJX1pOMU4xY0UJLyogRFdfQVRf bG93X3BjICovCi0rCS5sb25nCV9aTjFOMWNFCS8qIERXX0FUX2hpZ2hfcGMgKi8KLStkaWVmMjoJ LnVsZWIxMjggMHgxMgkJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0ZQkweDQJCS8qIERX X0FUX2J5dGVfc2l6ZSAqLwotKwkuYnl0ZQkweDUJCS8qIERXX0FUX2VuY29kaW5nICovCi0rCS5z dHJpbmcJImludCIJCS8qIERXX0FUX25hbWUgKi8KLStkaWUxNDk6CS51bGViMTI4IDB4MTYJCS8q IERXX1RBR192YXJpYWJsZSAqLwotKwkubG9uZwlkaWU0ZS1kCQkvKiBEV19BVF9zcGVjaWZpY2F0 aW9uICovCi0rCS5ieXRlCTB4NQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLmJ5dGUJMHgzCi0r CS5sb25nCV9aTjFOMWNFCi0rCS5ieXRlCTB4MAotKy5MZGVidWdfaW5mb19lbmQ6Ci0rCS5zZWN0 aW9uCS5kZWJ1Z19hYmJyZXYKLSsuTGRlYnVnX2FiYnJldjA6Ci0rCS51bGViMTI4IDB4MQkJLyog YWJicmV2IGNvZGUqLwotKwkudWxlYjEyOCAweDExCQkvKiBEV19UQUdfY29tcGlsZV91bml0ICov Ci0rCS5ieXRlCTB4MQkJLyogRFdfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4MjUJCS8q IERXX0FUX3Byb2R1Y2VyKi8KLSsJLnVsZWIxMjggMHhlCQkvKiBEV19GT1JNX3N0cnAgKi8KLSsJ LnVsZWIxMjggMHgxMwkJLyogRFdfQVRfbGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjggMHhiCQkvKiBE V19GT1JNX2RhdGExICovCi0rCS51bGViMTI4IDB4MwkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxl YjEyOCAweGUJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOCAweDFiCQkvKiBEV19BVF9j b21wX2RpciAqLwotKwkudWxlYjEyOCAweGUJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEy OCAweDExCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjggMHgxCQkvKiBEV19GT1JNX2Fk ZHIgKi8KLSsJLnVsZWIxMjggMHgxMgkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkudWxlYjEyOCAw eDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOCAweDUyCQkvKiBEV19BVF9lbnRyeV9w YyAqLwotKwkudWxlYjEyOCAweDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MgkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgg MHgzOQkJLyogRFdfVEFHX25hbWVzcGFjZSAqLwotKwkuYnl0ZQkweDEJCS8qIERXX2NoaWxkcmVu X3llcyAqLwotKwkudWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHg4 CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4MwkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjggMHgyCQkvKiBEV19UQUdfY2xh c3NfdHlwZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwkudWxl YjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHg4CQkvKiBEV19GT1JNX3N0 cmluZyAqLwotKwkudWxlYjEyOCAweDNjCQkvKiBEV19BVF9kZWNsYXJhdGlvbiAqLwotKwkudWxl YjEyOCAweGMJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0r CS51bGViMTI4IDB4NAkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjggMHgxNgkJLyogRFdf VEFHX3R5cGVkZWYgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19oYXNfY2hpbGRyZW5fbm8gKi8KLSsJ LnVsZWIxMjggMHgzCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4IDB4OAkJLyogRFdfRk9S TV9zdHJpbmcgKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEy OCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweDUJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MzQJCS8qIERXX1RB R192YXJpYWJsZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwku dWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHg4CQkvKiBEV19GT1JN X3N0cmluZyAqLwotKwkudWxlYjEyOCAweDIwMDcJCS8qIERXX0FUX01JUFNfbGlua2FnZV9uYW1l ICovCi0rCS51bGViMTI4IDB4ZQkJLyogRFdfRk9STV9zdHJwICovCi0rCS51bGViMTI4IDB4NDkJ CS8qIERXX0FUX1RZUEUgKi8KLSsJLnVsZWIxMjggMHgxMwkJLyogRFdfRk9STV9yZWY0ICovCi0r CS51bGViMTI4IDB4M2YJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGViMTI4IDB4YwkJLyog RFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4IDB4M2MJCS8qIERXX0FUX2RlY2xhcmF0aW9uICov Ci0rCS51bGViMTI4IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS5ieXRlCTB4MAotKwkuYnl0 ZQkweDAKLSsJLnVsZWIxMjggMHg2CQkvKiBhYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOCAweDIJ CS8qIERXX1RBR19jbGFzc190eXBlICovCi0rCS5ieXRlCTB4MQkJLyogRFdfaGFzX2NoaWxkcmVu X3llcyAqLwotKwkudWxlYjEyOCAweDQ3CQkvKiBEV19BVF9zcGVjaWZpY2F0aW9uICovCi0rCS51 bGViMTI4IDB4MTMJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweGIJCS8qIERXX0FU X2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOCAweGIJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5 dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEyOCAweDcJCS8qIGFiYnJldiBjb2RlICovCi0r CS51bGViMTI4IDB4MmUJCS8qIERXX1RBR19zdWJwcm9ncmEgKi8KLSsJLmJ5dGUJMHgxCQkvKiBE V19oYXNfY2hpbGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4M2YJCS8qIERXX0FUX2V4dGVybmFs ICovCi0rCS51bGViMTI4IDB4YwkJLyogRFdfRk9STV9mbGFnICovCi0rCS51bGViMTI4IDB4MwkJ LyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOCAweDgJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0r CS51bGViMTI4IDB4M2MJCS8qIERXX0FUX2RlY2xhcmF0aW9uICovCi0rCS51bGViMTI4IDB4YwkJ LyogRFdfRk9STV9mbGFnICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjgg MHg4CQkvKiBhYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOCAweDUJCS8qIERXX1RBR19mb3JtYWxf cGFyYW1ldGVyICovCi0rCS5ieXRlCTB4MAkJLyogRFdfaGFzX2NoaWxkcmVuX25vICovCi0rCS51 bGViMTI4IDB4NDkJCS8qIERXX0FUX3R5cGUgKi8KLSsJLnVsZWIxMjggMHgxMwkJLyogRFdfRk9S TV9yZWY0ICovCi0rCS51bGViMTI4IDB4MzQJCS8qIERXX0FUX2FydGlmaWNpYWwgKi8KLSsJLnVs ZWIxMjggMHhjCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAot KwkudWxlYjEyOCAweDkJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4NQkJLyogRFdf VEFHX2Zvcm1hbF9wYXJhbWV0ZXIgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19oYXNfY2hpbGRyZW5f bm8gKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEz CQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkudWxlYjEy OCAweGEJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4ZgkJLyogRFdfVEFHX3BvaW50 ZXJfdHlwZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwkudWxl YjEyOCAweGIJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkudWxlYjEyOCAweGIJCS8qIERXX0ZP Uk1fZGF0YTEgKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEy OCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweGIJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MTUJCS8qIERXX1RB R19zdWJyb3V0aW5lX3R5cGUgKi8KLSsJLmJ5dGUJMHgxCQkvKiBEV19oYXNfY2hpbGRyZW5feWVz ICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHhjCQkvKiBhYmJyZXYg Y29kZSAqLwotKwkudWxlYjEyOCAweDJlCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYnl0 ZQkweDEJCS8qIERXX2hhc19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjggMHg0NwkJLyogRFdf QVRfc3BlY2lmaWNhdGlvbiAqLwotKwkudWxlYjEyOCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8K LSsJLnVsZWIxMjggMHgyMAkJLyogRFdfQVRfaW5saW5lICovCi0rCS51bGViMTI4IDB4YgkJLyog RFdfRk9STV9kYXRhMSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4 ZAkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjggMHg1CQkvKiBEV19UQUdfZm9ybWFsX3Bh cmFtZXRlciAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwkudWxl YjEyOCAweDMJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjggMHhlCQkvKiBEV19GT1JNX3N0 cnAgKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEyOCAweDEz CQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLnVsZWIxMjggMHgzNAkJLyogRFdfQVRfYXJ0aWZpY2lh bCAqLwotKwkudWxlYjEyOCAweGMJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4ZQkJLyogYWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgg MHgyNgkJLyogRFdfVEFHX2NvbnN0X3R5cGUgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19oYXNfY2hp bGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHg0OQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxlYjEy OCAweDEzCQkvKiBEV19GT1JNX3JlZjQgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwku dWxlYjEyOCAweGYJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MmUJCS8qIERXX1RB R19zdWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MQkJLyogRFdfaGFzX2NoaWxkcmVuX3llcyAqLwot KwkudWxlYjEyOCAweDMxCQkvKiBEV19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLnVsZWIxMjgg MHgxMwkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4IDB4MTEJCS8qIERXX0FUX2xvd19w YyAqLwotKwkudWxlYjEyOCAweDEJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOCAweDEy CQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4IDB4MQkJLyogRFdfRk9STV9hZGRyICov Ci0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnVsZWIxMjggMHgxMAkJLyogYWJicmV2IGNv ZGUgKi8KLSsJLnVsZWIxMjggMHg1CQkvKiBEV19UQUdfZm9ybWFsX3BhcmFtZXRlciAqLwotKwku Ynl0ZQkweDAJCS8qIERXX2hhc19jaGlsZHJlbl9ubyAqLwotKwkudWxlYjEyOCAweDMxCQkvKiBE V19BVF9hYnN0cmFjdF9vcmlnaW4gKi8KLSsJLnVsZWIxMjggMHgxMwkJLyogRFdfRk9STV9yZWY0 ICovCi0rCS51bGViMTI4IDB4MgkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjggMHhh CQkvKiBEV19GT1JNX2Jsb2NrMSAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGVi MTI4IDB4MTEJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MmUJCS8qIERXX1RBR19z dWJwcm9ncmFtICovCi0rCS5ieXRlCTB4MAkJLyogRFdfaGFzX2NoaWxkcmVuX25vICovCi0rCS51 bGViMTI4IDB4M2YJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGViMTI4IDB4YwkJLyogRFdf Rk9STV9mbGFnICovCi0rCS51bGViMTI4IDB4MwkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEy OCAweGUJCS8qIERXX0ZPUk1fc3RycCAqLwotKwkudWxlYjEyOCAweDQ5CQkvKiBEV19BVF90eXBl ICovCi0rCS51bGViMTI4IDB4MTMJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDEx CQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjggMHgxCQkvKiBEV19GT1JNX2FkZHIgKi8K LSsJLnVsZWIxMjggMHgxMgkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkudWxlYjEyOCAweDEJCS8q IERXX0ZPUk1fYWRkciAqLwotKwkuYnl0ZQkweDAKLSsJLmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4 MTIJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4IDB4MjQJCS8qIERXX1RBR19iYXNlX3R5 cGUgKi8KLSsJLmJ5dGUJMHgwCQkvKiBEV19oYXNfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjgg MHhiCQkvKiBEV19BVF9ieXRlX3NpemUgKi8KLSsJLnVsZWIxMjggMHhiCQkvKiBEV19GT1JNX2Rh dGExICovCi0rCS51bGViMTI4IDB4M2UJCS8qIERXX0FUX2VuY29kaW5nICovCi0rCS51bGViMTI4 IDB4YgkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxlYjEyOCAweDMJCS8qIERXX0FUX25hbWUg Ki8KLSsJLnVsZWIxMjggMHg4CQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkuYnl0ZQkweDAKLSsJ LmJ5dGUJMHgwCi0rCS51bGViMTI4IDB4MTYJCS8qIGFiYnJldiBjb2RlICovCi0rCS51bGViMTI4 IDB4MzQJCS8qIERXX1RBR192YXJpYWJsZSAqLwotKwkuYnl0ZQkweDAJCS8qIERXX2hhc19jaGls ZHJlbl9ubyAqLwotKwkudWxlYjEyOCAweDQ3CQkvKiBEV19BVF9zcGVjaWZpY2F0aW9uICovCi0r CS51bGViMTI4IDB4MTMJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOCAweDIJCS8qIERX X0FUX2xvY2F0aW9uICovCi0rCS51bGViMTI4IDB4YQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJ LmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsJLnNlY3Rpb24JLmRlYnVnX3N0 cgotKy5MQVNGMDoKLSsJLnN0cmluZwkiX1pOMU4xZkUiCi0rLkxBU0Y3OgotKwkuc3RyaW5nCSJ0 aGlzIgotKy5MQVNGNjoKLSsJLnN0cmluZwkiIgotKy5MQVNGODoKLSsJLnN0cmluZwkibWFpbiIK LSsuTEFTRjE6Ci0rCS5zdHJpbmcJIl9aTjFOMWNFIgotKy5MQVNGNToKLSsJLnN0cmluZwkicHIx MTQ2NS5jYyIKLSsuTEFTRjQ6Ci0rCS5zdHJpbmcJIkdOVSBDKysgNC40LjIiCi0rCS5pZGVudAki R0NDOiAoR05VKSA0LjQuMiIKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzIxL2dkYi90ZXN0c3Vp dGUvZ2RiLmR3YXJmMi9wcjExNDY1LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MjEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL3ByMTE0NjUuZXhwCTIwMTAtMDctMjIgMTE6NTk6Mjku MDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDM5IEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNv ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRl ciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hl ZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBv ZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24u Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg d2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0 aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2Vz Lz4uCi0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2ggc3Vw cG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcgb2Yg bGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYgIVtp c3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFiaSpd Ci0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4gMCAg Ci0rfQotKwotK3NldCB0ZXN0ZmlsZSAicHIxMTQ2NSIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5TCi0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0ueAotK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotK2lmICB7IFtnZGJfY29tcGlsZSAiJHtzcmNk aXJ9LyR7c3ViZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgb2JqZWN0IHt9XSAhPSAiIiB9 IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2NsZWFuX3Jlc3RhcnQgJGV4ZWN1dGFibGUKLSsK LSsjIFRlc3QgZGVsYXllZCBwaHlzbmFtZSBjb21wdXRhdGlvbnMKLStnZGJfdGVzdCAicCBOOjpj LkMiIHsgPSB7dm9pZCBcKE46OkMgXCosIHZvaWQgXChcKlwpXChOOjpDXClcKX0uKn0KCmRpZmYg LS1naXQgYS9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2ggYi9nZGItYno1OTIw MzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDE2Yzc4OWYuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0xb2Y1LnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1wYXRjaGVzLzIwMTAtMDgvbXNnMDA1NTkuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1jdnMvMjAxMC0wOC9tc2cwMDE5OS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5n ZUxvZwkyMDEwLzA4LzMxIDE4OjA4OjQyCTEuMTIxMjkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwky MDEwLzA4LzMxIDE4OjExOjQ4CTEuMTIxMzAKLSMjIC0xLDUgKzEsMTQgQEAKLSAyMDEwLTA4LTMx ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0rCU1ha2Ug bGludXhfZ2V0X3NpZ2luZm9fdHlwZSBgdHlwZSAqJyB1bmlxdWUuCi0rCSogbGludXgtdGRlcC5j IChsaW51eF9nZGJhcmNoX2RhdGFfaGFuZGxlLCBzdHJ1Y3QgbGludXhfZ2RiYXJjaF9kYXRhKQot KwkoaW5pdF9saW51eF9nZGJhcmNoX2RhdGEsIGdldF9saW51eF9nZGJhcmNoX2RhdGEpOiBOZXcu Ci0rCShsaW51eF9nZXRfc2lnaW5mb190eXBlKTogTmV3IHZhcmlhYmxlIGxpbnV4X2dkYmFyY2hf ZGF0YS4gIEluaXRpYWxpemUKLSsJaXQuICBVc2UgbGludXhfZ2RiYXJjaF9kYXRhLT5zaWdpbmZv X3R5cGUgYXMgYSBwZXJzaXN0ZW50IHN0b3JhZ2UuCi0rCShfaW5pdGlhbGl6ZV9saW51eF90ZGVw KTogTmV3LgotKwotKzIwMTAtMDgtMzEgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxA cmVkaGF0LmNvbT4KLSsKLSAJQ29kZSBjbGVhbnVwLgotIAkqIGRlZnMuaCAoZmluZF9tZW1vcnlf cmVnaW9uX2Z0eXBlKTogTmV3IHR5cGVkZWYuCi0gCShleGVjX3NldF9maW5kX21lbW9yeV9yZWdp b25zKTogVXNlIGl0LgotSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LXRkZXAuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIub3JpZy9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDktMjUgMTU6MzA6NTAu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvbGludXgtdGRlcC5jCTIwMTAtMDktMjUg MTU6MzE6NTQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjYsMTggKzI2LDQyIEBACi0gI2luY2x1ZGUg InZhbHVlLmgiCi0gI2luY2x1ZGUgImluZmNhbGwuaCIKLSAKLStzdGF0aWMgc3RydWN0IGdkYmFy Y2hfZGF0YSAqbGludXhfZ2RiYXJjaF9kYXRhX2hhbmRsZTsKLSsKLStzdHJ1Y3QgbGludXhfZ2Ri YXJjaF9kYXRhCi0rICB7Ci0rICAgIHN0cnVjdCB0eXBlICpzaWdpbmZvX3R5cGU7Ci0rICB9Owot KwotK3N0YXRpYyB2b2lkICoKLStpbml0X2xpbnV4X2dkYmFyY2hfZGF0YSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCi0rewotKyAgcmV0dXJuIEdEQkFSQ0hfT0JTVEFDS19aQUxMT0MgKGdkYmFy Y2gsIHN0cnVjdCBsaW51eF9nZGJhcmNoX2RhdGEpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGxp bnV4X2dkYmFyY2hfZGF0YSAqCi0rZ2V0X2xpbnV4X2dkYmFyY2hfZGF0YSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gpCi0rewotKyAgcmV0dXJuIGdkYmFyY2hfZGF0YSAoZ2RiYXJjaCwgbGludXhf Z2RiYXJjaF9kYXRhX2hhbmRsZSk7Ci0rfQotKwotIC8qIFRoaXMgZnVuY3Rpb24gaXMgc3VpdGFi bGUgZm9yIGFyY2hpdGVjdHVyZXMgdGhhdCBkb24ndAotICAgIGV4dGVuZC9vdmVycmlkZSB0aGUg c3RhbmRhcmQgc2lnaW5mbyBzdHJ1Y3R1cmUuICAqLwotIAotIHN0cnVjdCB0eXBlICoKLSBsaW51 eF9nZXRfc2lnaW5mb190eXBlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKLSB7Ci0rICBzdHJ1 Y3QgbGludXhfZ2RiYXJjaF9kYXRhICpsaW51eF9nZGJhcmNoX2RhdGE7Ci0gICBzdHJ1Y3QgdHlw ZSAqaW50X3R5cGUsICp1aW50X3R5cGUsICpsb25nX3R5cGUsICp2b2lkX3B0cl90eXBlOwotICAg c3RydWN0IHR5cGUgKnVpZF90eXBlLCAqcGlkX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqc2lndmFs X3R5cGUsICpjbG9ja190eXBlOwotICAgc3RydWN0IHR5cGUgKnNpZ2luZm9fdHlwZSwgKnNpZmll bGRzX3R5cGU7Ci0gICBzdHJ1Y3QgdHlwZSAqdHlwZTsKLSAKLSsgIGxpbnV4X2dkYmFyY2hfZGF0 YSA9IGdldF9saW51eF9nZGJhcmNoX2RhdGEgKGdkYmFyY2gpOwotKyAgaWYgKGxpbnV4X2dkYmFy Y2hfZGF0YS0+c2lnaW5mb190eXBlICE9IE5VTEwpCi0rICAgIHJldHVybiBsaW51eF9nZGJhcmNo X2RhdGEtPnNpZ2luZm9fdHlwZTsKLSsKLSAgIGludF90eXBlID0gYXJjaF9pbnRlZ2VyX3R5cGUg KGdkYmFyY2gsIGdkYmFyY2hfaW50X2JpdCAoZ2RiYXJjaCksCi0gCQkJIAkwLCAiaW50Iik7Ci0g ICB1aW50X3R5cGUgPSBhcmNoX2ludGVnZXJfdHlwZSAoZ2RiYXJjaCwgZ2RiYXJjaF9pbnRfYml0 IChnZGJhcmNoKSwKLUBAIC0xMzcsNiArMTYxLDggQEAgbGludXhfZ2V0X3NpZ2luZm9fdHlwZSAo c3RydWN0IGdkYmFyY2ggKgotIAkJCQkgICAgICAgIl9zaWZpZWxkcyIsIHNpZmllbGRzX3R5cGUs Ci0gCQkJCSAgICAgICBUWVBFX0xFTkdUSCAobG9uZ190eXBlKSk7Ci0gCi0rICBsaW51eF9nZGJh cmNoX2RhdGEtPnNpZ2luZm9fdHlwZSA9IHNpZ2luZm9fdHlwZTsKLSsKLSAgIHJldHVybiBzaWdp bmZvX3R5cGU7Ci0gfQotIAotQEAgLTE1NCwzICsxODAsMTAgQEAgbGludXhfaGFzX3NoYXJlZF9h ZGRyZXNzX3NwYWNlICh2b2lkKQotIAotICAgcmV0dXJuIHRhcmdldF9pc191Y2xpbnV4OwotIH0K LSsKLSt2b2lkCi0rX2luaXRpYWxpemVfbGludXhfdGRlcCAodm9pZCkKLSt7Ci0rICBsaW51eF9n ZGJhcmNoX2RhdGFfaGFuZGxlID0KLSsgICAgZ2RiYXJjaF9kYXRhX3JlZ2lzdGVyX3Bvc3RfaW5p dCAoaW5pdF9saW51eF9nZGJhcmNoX2RhdGEpOwotK30KCmRpZmYgLS1naXQgYS9nZGItYno1OTIw MzEtc2lnaW5mby1sb3N0LTJvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTJv ZjUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1MTg0ZTAuLjAwMDAwMDAK LS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0yb2Y1LnBhdGNoCisrKyAvZGV2L251bGwK QEAgLTEsMTM5ICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8y MDEwLTA5L21zZzAwNDMwLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIw MTAtMDkvbXNnMDAxNTIuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8yNCAx MToxNTo1MQkxLjEyMTk5Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8yNCAxMzo0MTo0 MgkxLjEyMjAwCi0jIyAtMSw1ICsxLDEyIEBACi0gMjAxMC0wOS0yNCAgUGVkcm8gQWx2ZXMgIDxw ZWRyb0Bjb2Rlc291cmNlcnkuY29tPgotIAotKwkqIGFtZDY0LWxpbnV4LW5hdC5jIChjb21wYXRf c2lnaW5mb19mcm9tX3NpZ2luZm8pCi0rCShzaWdpbmZvX2Zyb21fY29tcGF0X3NpZ2luZm8pOiBB bHNvIGNvcHkgc2lfcGlkIGFuZCBzaV91aWQgd2hlbgotKwlzaV9jb2RlIGlzIDwgMC4gIENoZWNr IGZvciBzaV9jb2RlID09IFNJX1RJTUVSIGJlZm9yZSBjaGVja2luZyBmb3IKLSsJc2lfY29kZSA8 IDAuCi0rCi0rMjAxMC0wOS0yNCAgUGVkcm8gQWx2ZXMgIDxwZWRyb0Bjb2Rlc291cmNlcnkuY29t PgotKwotIAkqIG9iamZpbGVzLmggKEFMTF9PQkpTRUNUSU9OUyk6IEhhbmRsZSBicmVha3MgaW4g dGhlIGlubmVyIGxvb3AuCi0gCi0gMjAxMC0wOS0yMiAgSm9lbCBCcm9iZWNrZXIgIDxicm9iZWNr ZXJAYWRhY29yZS5jb20+Ci0tLS0gc3JjL2dkYi9hbWQ2NC1saW51eC1uYXQuYwkyMDEwLzA0LzIy IDIwOjAyOjU1CTEuMzIKLSsrKyBzcmMvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTAvMDkvMjQg MTM6NDE6NDMJMS4zMwotQEAgLTU3NCw4ICs1NzQsMTAgQEAKLSAgIHRvLT5zaV9lcnJubyA9IGZy b20tPnNpX2Vycm5vOwotICAgdG8tPnNpX2NvZGUgPSBmcm9tLT5zaV9jb2RlOwotIAotLSAgaWYg KHRvLT5zaV9jb2RlIDwgMCkKLSsgIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKLSAgICAg ewotKyAgICAgIHRvLT5jcHRfc2lfdGltZXJpZCA9IGZyb20tPnNpX3RpbWVyaWQ7Ci0rICAgICAg dG8tPmNwdF9zaV9vdmVycnVuID0gZnJvbS0+c2lfb3ZlcnJ1bjsKLSAgICAgICB0by0+Y3B0X3Np X3B0ciA9IChpbnRwdHJfdCkgZnJvbS0+c2lfcHRyOwotICAgICB9Ci0gICBlbHNlIGlmICh0by0+ c2lfY29kZSA9PSBTSV9VU0VSKQotQEAgLTU4MywxMCArNTg1LDEwIEBACi0gICAgICAgdG8tPmNw dF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7Ci0gICAgICAgdG8tPmNwdF9zaV91aWQgPSBmcm9tLT5z aV91aWQ7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVSKQotKyAg ZWxzZSBpZiAodG8tPnNpX2NvZGUgPCAwKQotICAgICB7Ci0tICAgICAgdG8tPmNwdF9zaV90aW1l cmlkID0gZnJvbS0+c2lfdGltZXJpZDsKLS0gICAgICB0by0+Y3B0X3NpX292ZXJydW4gPSBmcm9t LT5zaV9vdmVycnVuOwotKyAgICAgIHRvLT5jcHRfc2lfcGlkID0gZnJvbS0+c2lfcGlkOwotKyAg ICAgIHRvLT5jcHRfc2lfdWlkID0gZnJvbS0+c2lfdWlkOwotICAgICAgIHRvLT5jcHRfc2lfcHRy ID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC02MjgsOCAr NjMwLDEwIEBACi0gICB0by0+c2lfZXJybm8gPSBmcm9tLT5zaV9lcnJubzsKLSAgIHRvLT5zaV9j b2RlID0gZnJvbS0+c2lfY29kZTsKLSAKLS0gIGlmICh0by0+c2lfY29kZSA8IDApCi0rICBpZiAo dG8tPnNpX2NvZGUgPT0gU0lfVElNRVIpCi0gICAgIHsKLSsgICAgICB0by0+c2lfdGltZXJpZCA9 IGZyb20tPmNwdF9zaV90aW1lcmlkOwotKyAgICAgIHRvLT5zaV9vdmVycnVuID0gZnJvbS0+Y3B0 X3NpX292ZXJydW47Ci0gICAgICAgdG8tPnNpX3B0ciA9ICh2b2lkICopIChpbnRwdHJfdCkgZnJv bS0+Y3B0X3NpX3B0cjsKLSAgICAgfQotICAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVVNF UikKLUBAIC02MzcsMTAgKzY0MSwxMCBAQAotICAgICAgIHRvLT5zaV9waWQgPSBmcm9tLT5jcHRf c2lfcGlkOwotICAgICAgIHRvLT5zaV91aWQgPSBmcm9tLT5jcHRfc2lfdWlkOwotICAgICB9Ci0t ICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKLSsgIGlmICh0by0+c2lfY29kZSA8 IDApCi0gICAgIHsKLS0gICAgICB0by0+c2lfdGltZXJpZCA9IGZyb20tPmNwdF9zaV90aW1lcmlk OwotLSAgICAgIHRvLT5zaV9vdmVycnVuID0gZnJvbS0+Y3B0X3NpX292ZXJydW47Ci0rICAgICAg dG8tPnNpX3BpZCA9IGZyb20tPmNwdF9zaV9waWQ7Ci0rICAgICAgdG8tPnNpX3VpZCA9IGZyb20t PmNwdF9zaV91aWQ7Ci0gICAgICAgdG8tPnNpX3B0ciA9ICh2b2lkICopIChpbnRwdHJfdCkgZnJv bS0+Y3B0X3NpX3B0cjsKLSAgICAgfQotICAgZWxzZQotIyMjIHNyYy9nZGIvZ2Ric2VydmVyL0No YW5nZUxvZwkyMDEwLzA5LzEzIDE5OjExOjAzCTEuNDMxCi0jIyMgc3JjL2dkYi9nZGJzZXJ2ZXIv Q2hhbmdlTG9nCTIwMTAvMDkvMjQgMTM6NDE6NDMJMS40MzIKLSMjIC0xLDMgKzEsMTAgQEAKLSsy MDEwLTA5LTI0ICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2VyeS5jb20+Ci0rCi0rCSog bGludXgteDg2LWxvdy5jIChjb21wYXRfc2lnaW5mb19mcm9tX3NpZ2luZm8pCi0rCShzaWdpbmZv X2Zyb21fY29tcGF0X3NpZ2luZm8pOiBBbHNvIGNvcHkgc2lfcGlkIGFuZCBzaV91aWQgd2hlbgot KwlzaV9jb2RlIGlzIDwgMC4gIENoZWNrIGZvciBzaV9jb2RlID09IFNJX1RJTUVSIGJlZm9yZSBj aGVja2luZyBmb3IKLSsJc2lfY29kZSA8IDAuCi0rCi0gMjAxMC0wOS0xMyAgSm9lbCBCcm9iZWNr ZXIgIDxicm9iZWNrZXJAYWRhY29yZS5jb20+Ci0gCi0gCSogbHlueC1pMzg2LWxvdy5jOiBOZXcg ZmlsZS4KLS0tLSBzcmMvZ2RiL2dkYnNlcnZlci9saW51eC14ODYtbG93LmMJMjAxMC8wOC8yNyAw MDoxNjo0OAkxLjIzCi0rKysgc3JjL2dkYi9nZGJzZXJ2ZXIvbGludXgteDg2LWxvdy5jCTIwMTAv MDkvMjQgMTM6NDE6NDMJMS4yNAotQEAgLTc5Miw4ICs3OTIsMTAgQEAKLSAgIHRvLT5zaV9lcnJu byA9IGZyb20tPnNpX2Vycm5vOwotICAgdG8tPnNpX2NvZGUgPSBmcm9tLT5zaV9jb2RlOwotIAot LSAgaWYgKHRvLT5zaV9jb2RlIDwgMCkKLSsgIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikK LSAgICAgewotKyAgICAgIHRvLT5jcHRfc2lfdGltZXJpZCA9IGZyb20tPnNpX3RpbWVyaWQ7Ci0r ICAgICAgdG8tPmNwdF9zaV9vdmVycnVuID0gZnJvbS0+c2lfb3ZlcnJ1bjsKLSAgICAgICB0by0+ Y3B0X3NpX3B0ciA9IChpbnRwdHJfdCkgZnJvbS0+c2lfcHRyOwotICAgICB9Ci0gICBlbHNlIGlm ICh0by0+c2lfY29kZSA9PSBTSV9VU0VSKQotQEAgLTgwMSwxMCArODAzLDEwIEBACi0gICAgICAg dG8tPmNwdF9zaV9waWQgPSBmcm9tLT5zaV9waWQ7Ci0gICAgICAgdG8tPmNwdF9zaV91aWQgPSBm cm9tLT5zaV91aWQ7Ci0gICAgIH0KLS0gIGVsc2UgaWYgKHRvLT5zaV9jb2RlID09IFNJX1RJTUVS KQotKyAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPCAwKQotICAgICB7Ci0tICAgICAgdG8tPmNwdF9z aV90aW1lcmlkID0gZnJvbS0+c2lfdGltZXJpZDsKLS0gICAgICB0by0+Y3B0X3NpX292ZXJydW4g PSBmcm9tLT5zaV9vdmVycnVuOwotKyAgICAgIHRvLT5jcHRfc2lfcGlkID0gZnJvbS0+c2lfcGlk OwotKyAgICAgIHRvLT5jcHRfc2lfdWlkID0gZnJvbS0+c2lfdWlkOwotICAgICAgIHRvLT5jcHRf c2lfcHRyID0gKGludHB0cl90KSBmcm9tLT5zaV9wdHI7Ci0gICAgIH0KLSAgIGVsc2UKLUBAIC04 NDYsOCArODQ4LDEwIEBACi0gICB0by0+c2lfZXJybm8gPSBmcm9tLT5zaV9lcnJubzsKLSAgIHRv LT5zaV9jb2RlID0gZnJvbS0+c2lfY29kZTsKLSAKLS0gIGlmICh0by0+c2lfY29kZSA8IDApCi0r ICBpZiAodG8tPnNpX2NvZGUgPT0gU0lfVElNRVIpCi0gICAgIHsKLSsgICAgICB0by0+c2lfdGlt ZXJpZCA9IGZyb20tPmNwdF9zaV90aW1lcmlkOwotKyAgICAgIHRvLT5zaV9vdmVycnVuID0gZnJv bS0+Y3B0X3NpX292ZXJydW47Ci0gICAgICAgdG8tPnNpX3B0ciA9ICh2b2lkICopIChpbnRwdHJf dCkgZnJvbS0+Y3B0X3NpX3B0cjsKLSAgICAgfQotICAgZWxzZSBpZiAodG8tPnNpX2NvZGUgPT0g U0lfVVNFUikKLUBAIC04NTUsMTAgKzg1OSwxMCBAQAotICAgICAgIHRvLT5zaV9waWQgPSBmcm9t LT5jcHRfc2lfcGlkOwotICAgICAgIHRvLT5zaV91aWQgPSBmcm9tLT5jcHRfc2lfdWlkOwotICAg ICB9Ci0tICBlbHNlIGlmICh0by0+c2lfY29kZSA9PSBTSV9USU1FUikKLSsgIGVsc2UgaWYgKHRv LT5zaV9jb2RlIDwgMCkKLSAgICAgewotLSAgICAgIHRvLT5zaV90aW1lcmlkID0gZnJvbS0+Y3B0 X3NpX3RpbWVyaWQ7Ci0tICAgICAgdG8tPnNpX292ZXJydW4gPSBmcm9tLT5jcHRfc2lfb3ZlcnJ1 bjsKLSsgICAgICB0by0+c2lfcGlkID0gZnJvbS0+Y3B0X3NpX3BpZDsKLSsgICAgICB0by0+c2lf dWlkID0gZnJvbS0+Y3B0X3NpX3VpZDsKLSAgICAgICB0by0+c2lfcHRyID0gKHZvaWQgKikgKGlu dHB0cl90KSBmcm9tLT5jcHRfc2lfcHRyOwotICAgICB9Ci0gICBlbHNlCgpkaWZmIC0tZ2l0IGEv Z2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC0zb2Y1LnBhdGNoIGIvZ2RiLWJ6NTkyMDMxLXNpZ2lu Zm8tbG9zdC0zb2Y1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDVjODNk Li4wMDAwMDAwCi0tLSBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtM29mNS5wYXRjaAorKysg L2Rldi9udWxsCkBAIC0xLDI1OSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2Ri LXBhdGNoZXMvMjAxMC0wOS9tc2cwMDQzOC5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEwLTA5L21zZzAwMTU2Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTAvMDkvMjQgMTY6MTE6NDQJMS4xMjIwMwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDkv MjQgMTg6MzU6MjAJMS4xMjIwNAotIyMgLTEsMyArMSwxNiBAQAotKzIwMTAtMDktMjQgIEphbiBL cmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSsKLSsJRml4IGxvc3Qgc2ln aW5mb190IGZvciBpbmZlcmlvciBjYWxscy4KLSsJKiBpbmZydW4uYwotKwkoc3RydWN0IGluZmVy aW9yX3RocmVhZF9zdGF0ZSkgPHNpZ2luZm9fZ2RiYXJjaCwgc2lnaW5mb19kYXRhPjogTmV3Lgot Kwkoc2F2ZV9pbmZlcmlvcl90aHJlYWRfc3RhdGUpOiBOZXcgdmFyaWFibGVzIHJlZ2NhY2hlLCBn ZGJhcmNoIGFuZAotKwlzaWdpbmZvX2RhdGEuICBJbml0aWFsaXplIFNJR0lORk9fREFUQSBpZiBn ZGJhcmNoX2dldF9zaWdpbmZvX3R5cGVfcC4KLSsJTW92ZSBJTkZfU1RBVEUgYWxsb2NhdGlvbiBs YXRlciwgcHJlLWNsZWFyIGl0LiAgSW5pdGlhbGl6ZSBSRUdJU1RFUlMKLSsJdXNpbmcgUkVHQ0FD SEUuCi0rCShyZXN0b3JlX2luZmVyaW9yX3RocmVhZF9zdGF0ZSk6IE5ldyB2YXJpYWJsZXMgcmVn Y2FjaGUgYW5kIGdkYmFyY2guCi0rCVJlc3RvcmUgU0lHSU5GT19EQVRBIGZvciBtYXRjaGluZyBH REJBUkNILiAgUmVzdG9yZSBSRUdJU1RFUlMgdXNpbmcKLSsJUkVHQ0FDSEUuICBGcmVlIGFsc28g U0lHSU5GT19EQVRBLgotKwotIDIwMTAtMDktMjQgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0 LmNvbT4KLSAKLSAJKiBkd2FyZjJyZWFkLmMgKGR3Ml9leHBhbmRfc3ltdGFic19tYXRjaGluZyk6 IEFkZCBtaXNzaW5nCi0tLS0gc3JjL2dkYi9pbmZydW4uYwkyMDEwLzA5LzA2IDE0OjIyOjA3CTEu NDUwCi0rKysgc3JjL2dkYi9pbmZydW4uYwkyMDEwLzA5LzI0IDE4OjM1OjI3CTEuNDUxCi1AQCAt NjAzNywxOCArNjAzNyw1NyBAQAotICAgZW51bSB0YXJnZXRfc2lnbmFsIHN0b3Bfc2lnbmFsOwot ICAgQ09SRV9BRERSIHN0b3BfcGM7Ci0gICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2lzdGVyczsKLSsK LSsgIC8qIEZvcm1hdCBvZiBTSUdJTkZPIG9yIE5VTEwgaWYgaXQgaXMgbm90IHByZXNlbnQuICAq LwotKyAgc3RydWN0IGdkYmFyY2ggKnNpZ2luZm9fZ2RiYXJjaDsKLSsKLSsgIC8qIFRoZSBpbmZl cmlvciBmb3JtYXQgZGVwZW5kcyBvbiBTSUdJTkZPX0dEQkFSQ0ggYW5kIGl0IGhhcyBhIGxlbmd0 aCBvZgotKyAgICAgVFlQRV9MRU5HVEggKGdkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZSAoKSkuICBG b3IgZGlmZmVyZW50IGdkYmFyY2ggdGhlCi0rICAgICBjb250ZW50IHdvdWxkIGJlIGludmFsaWQu ICAqLwotKyAgZ2RiX2J5dGUgKnNpZ2luZm9fZGF0YTsKLSB9OwotIAotIHN0cnVjdCBpbmZlcmlv cl90aHJlYWRfc3RhdGUgKgotIHNhdmVfaW5mZXJpb3JfdGhyZWFkX3N0YXRlICh2b2lkKQotIHsK LS0gIHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUgKmluZl9zdGF0ZSA9IFhNQUxMT0MgKHN0 cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUpOwotKyAgc3RydWN0IGluZmVyaW9yX3RocmVhZF9z dGF0ZSAqaW5mX3N0YXRlOwotICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3Ro cmVhZCAoKTsKLSsgIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfY3VycmVudF9yZWdj YWNoZSAoKTsKLSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X3JlZ2NhY2hlX2FyY2gg KHJlZ2NhY2hlKTsKLSsgIGdkYl9ieXRlICpzaWdpbmZvX2RhdGEgPSBOVUxMOwotKwotKyAgaWYg KGdkYmFyY2hfZ2V0X3NpZ2luZm9fdHlwZV9wIChnZGJhcmNoKSkKLSsgICAgewotKyAgICAgIHN0 cnVjdCB0eXBlICp0eXBlID0gZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlIChnZGJhcmNoKTsKLSsg ICAgICBzaXplX3QgbGVuID0gVFlQRV9MRU5HVEggKHR5cGUpOwotKyAgICAgIHN0cnVjdCBjbGVh bnVwICpiYWNrX3RvOwotKwotKyAgICAgIHNpZ2luZm9fZGF0YSA9IHhtYWxsb2MgKGxlbik7Ci0r ICAgICAgYmFja190byA9IG1ha2VfY2xlYW51cCAoeGZyZWUsIHNpZ2luZm9fZGF0YSk7Ci0rCi0r ICAgICAgaWYgKHRhcmdldF9yZWFkICgmY3VycmVudF90YXJnZXQsIFRBUkdFVF9PQkpFQ1RfU0lH TkFMX0lORk8sIE5VTEwsCi0rCQkgICAgICAgc2lnaW5mb19kYXRhLCAwLCBsZW4pID09IGxlbikK LSsJZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7Ci0rICAgICAgZWxzZQotKwl7Ci0rCSAgLyog RXJyb3JzIGlnbm9yZWQuICAqLwotKwkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsJICBzaWdp bmZvX2RhdGEgPSBOVUxMOwotKwl9Ci0rICAgIH0KLSsKLSsgIGluZl9zdGF0ZSA9IFhaQUxMT0Mg KHN0cnVjdCBpbmZlcmlvcl90aHJlYWRfc3RhdGUpOwotKwotKyAgaWYgKHNpZ2luZm9fZGF0YSkK LSsgICAgewotKyAgICAgIGluZl9zdGF0ZS0+c2lnaW5mb19nZGJhcmNoID0gZ2RiYXJjaDsKLSsg ICAgICBpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSA9IHNpZ2luZm9fZGF0YTsKLSsgICAgfQotIAot ICAgaW5mX3N0YXRlLT5zdG9wX3NpZ25hbCA9IHRwLT5zdG9wX3NpZ25hbDsKLSAgIGluZl9zdGF0 ZS0+c3RvcF9wYyA9IHN0b3BfcGM7Ci0gCi0tICBpbmZfc3RhdGUtPnJlZ2lzdGVycyA9IHJlZ2Nh Y2hlX2R1cCAoZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCkpOwotKyAgaW5mX3N0YXRlLT5yZWdpc3Rl cnMgPSByZWdjYWNoZV9kdXAgKHJlZ2NhY2hlKTsKLSAKLSAgIHJldHVybiBpbmZfc3RhdGU7Ci0g fQotQEAgLTYwNTksMTYgKzYwOTgsMjkgQEAKLSByZXN0b3JlX2luZmVyaW9yX3RocmVhZF9zdGF0 ZSAoc3RydWN0IGluZmVyaW9yX3RocmVhZF9zdGF0ZSAqaW5mX3N0YXRlKQotIHsKLSAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7Ci0rICBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlID0gZ2V0X2N1cnJlbnRfcmVnY2FjaGUgKCk7Ci0rICBzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCA9IGdldF9yZWdjYWNoZV9hcmNoIChyZWdjYWNoZSk7Ci0gCi0gICB0cC0+c3Rv cF9zaWduYWwgPSBpbmZfc3RhdGUtPnN0b3Bfc2lnbmFsOwotICAgc3RvcF9wYyA9IGluZl9zdGF0 ZS0+c3RvcF9wYzsKLSAKLSsgIGlmIChpbmZfc3RhdGUtPnNpZ2luZm9fZ2RiYXJjaCA9PSBnZGJh cmNoKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHR5cGUgKnR5cGUgPSBnZGJhcmNoX2dldF9zaWdp bmZvX3R5cGUgKGdkYmFyY2gpOwotKyAgICAgIHNpemVfdCBsZW4gPSBUWVBFX0xFTkdUSCAodHlw ZSk7Ci0rCi0rICAgICAgLyogRXJyb3JzIGlnbm9yZWQuICAqLwotKyAgICAgIHRhcmdldF93cml0 ZSAoJmN1cnJlbnRfdGFyZ2V0LCBUQVJHRVRfT0JKRUNUX1NJR05BTF9JTkZPLCBOVUxMLAotKwkJ ICAgIGluZl9zdGF0ZS0+c2lnaW5mb19kYXRhLCAwLCBsZW4pOwotKyAgICB9Ci0rCi0gICAvKiBU aGUgaW5mZXJpb3IgY2FuIGJlIGdvbmUgaWYgdGhlIHVzZXIgdHlwZXMgInByaW50IGV4aXQoMCki Ci0gICAgICAoYW5kIHBlcmhhcHMgb3RoZXIgdGltZXMpLiAgKi8KLSAgIGlmICh0YXJnZXRfaGFz X2V4ZWN1dGlvbikKLSAgICAgLyogTkI6IFRoZSByZWdpc3RlciB3cml0ZSBnb2VzIHRocm91Z2gg dG8gdGhlIHRhcmdldC4gICovCi0tICAgIHJlZ2NhY2hlX2NweSAoZ2V0X2N1cnJlbnRfcmVnY2Fj aGUgKCksIGluZl9zdGF0ZS0+cmVnaXN0ZXJzKTsKLSsgICAgcmVnY2FjaGVfY3B5IChyZWdjYWNo ZSwgaW5mX3N0YXRlLT5yZWdpc3RlcnMpOwotICAgcmVnY2FjaGVfeGZyZWUgKGluZl9zdGF0ZS0+ cmVnaXN0ZXJzKTsKLSsgIHhmcmVlIChpbmZfc3RhdGUtPnNpZ2luZm9fZGF0YSk7Ci0gICB4ZnJl ZSAoaW5mX3N0YXRlKTsKLSB9Ci0gCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCTIw MTAvMDkvMjIgMjA6MDg6MDQJMS4yNDU2Ci0jIyMgc3JjL2dkYi90ZXN0c3VpdGUvQ2hhbmdlTG9n CTIwMTAvMDkvMjQgMTg6MzU6MjgJMS4yNDU3Ci0jIyAtMSwzICsxLDkgQEAKLSsyMDEwLTA5LTI0 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCUZpeCBs b3N0IHNpZ2luZm9fdCBmb3IgaW5mZXJpb3IgY2FsbHMuCi0rCSogZ2RiLmJhc2Uvc2lnaW5mby1p bmZjYWxsLmV4cDogTmV3IGZpbGUuCi0rCSogZ2RiLmJhc2Uvc2lnaW5mby1pbmZjYWxsLmM6IE5l dyBmaWxlLgotKwotIDIwMTAtMDktMjIgIEpvZWwgQnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNv cmUuY29tPgotIAotIAkqIGdkYi5kd2FyZjIvZHcyLWNvbnN0LlM6IE1pbm9yIChzcGFjZSkgcmVm b3JtYXR0aW5nLgotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2luZm8taW5mY2Fs bC5jCi0rKysgc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnaW5mby1pbmZjYWxsLmMJMjAx MC0wOS0yNSAxMzoyNToyNS4wMDcxNjkwMDAgKzAwMDAKLUBAIC0wLDAgKzEsNzkgQEAKLSsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENv cHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c2lnbmFsLmg+ Ci0rI2luY2x1ZGUgPGFzc2VydC5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8 dW5pc3RkLmg+Ci0rCi0rI2lmbmRlZiBTQV9TSUdJTkZPCi0rIyBlcnJvciAiU0FfU0lHSU5GTyBp cyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0IgotKyNlbmRpZgotKwotK3N0YXRpYyBpbnQKLStjYWxs bWUgKHZvaWQpCi0rewotKyAgcmV0dXJuIDQyOwotK30KLSsKLStzdGF0aWMgaW50Ci0rcGFzcyAo dm9pZCkKLSt7Ci0rICByZXR1cm4gMTsKLSt9Ci0rCi0rc3RhdGljIGludAotK2ZhaWwgKHZvaWQp Ci0rewotKyAgcmV0dXJuIDE7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0raGFuZGxlciAoaW50IHNp Zywgc2lnaW5mb190ICpzaWdpbmZvLCB2b2lkICpjb250ZXh0KQotK3sKLSsgIGFzc2VydCAoc2ln ID09IFNJR1VTUjEpOwotKyAgYXNzZXJ0IChzaWdpbmZvLT5zaV9zaWdubyA9PSBTSUdVU1IxKTsK LSsgIGlmIChzaWdpbmZvLT5zaV9waWQgPT0gZ2V0cGlkICgpKQotKyAgICBwYXNzICgpOwotKyAg ZWxzZQotKyAgICBmYWlsICgpOwotK30KLSsKLStpbnQKLSttYWluICh2b2lkKQotK3sKLSsgIHN0 cnVjdCBzaWdhY3Rpb24gc2E7Ci0rICBpbnQgaTsKLSsKLSsgIGNhbGxtZSAoKTsKLSsKLSsgIG1l bXNldCAoJnNhLCAwLCBzaXplb2YgKHNhKSk7Ci0rICBzYS5zYV9zaWdhY3Rpb24gPSBoYW5kbGVy OwotKyAgc2Euc2FfZmxhZ3MgPSBTQV9TSUdJTkZPOwotKwotKyAgaSA9IHNpZ2VtcHR5c2V0ICgm c2Euc2FfbWFzayk7Ci0rICBhc3NlcnQgKGkgPT0gMCk7Ci0rCi0rICBpID0gc2lnYWN0aW9uIChT SUdVU1IxLCAmc2EsIE5VTEwpOwotKyAgYXNzZXJ0IChpID09IDApOwotKwotKyAgaSA9IHJhaXNl IChTSUdVU1IxKTsKLSsgIGFzc2VydCAoaSA9PSAwKTsKLSsKLSsgIHNsZWVwICg2MDApOwotKyAg cmV0dXJuIDA7Ci0rfQotLS0tIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2luZm8taW5m Y2FsbC5leHAKLSsrKyBzcmMvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdpbmZvLWluZmNhbGwu ZXhwCTIwMTAtMDktMjUgMTM6MjU6MjUuMzU3NzI0MDAwICswMDAwCi1AQCAtMCwwICsxLDQ3IEBA Ci0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsj IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9w dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1 dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBB TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVS Q0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRo ZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0r IyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0 cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raWYgW3RhcmdldF9pbmZvIGV4aXN0cyBn ZGIsbm9zaWduYWxzXSB7Ci0rICAgIHZlcmJvc2UgIlNraXBwaW5nIHNpZ2luZm8taW5mY2FsbC5l eHAgYmVjYXVzZSBvZiBub3NpZ25hbHMuIgotKyAgICBjb250aW51ZQotK30KLSsKLStzZXQgdGVz dGZpbGUgc2lnaW5mby1pbmZjYWxsCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBl eGVjdXRhYmxlICR7dGVzdGZpbGV9Ci0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3Rm aWxlfS5leHAgJGV4ZWN1dGFibGVdIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0raWYgIVty dW50b19tYWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLStnZGJfYnJlYWtwb2ludCAicGFz cyIKLStnZGJfYnJlYWtwb2ludCAiZmFpbCIKLSsKLStnZGJfdGVzdCAiY29udGludWUiICJQcm9n cmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdVU1IxLCAuKiIgImNvbnRpbnVlIHRvIFNJR1VTUjEiCi0r Ci0rZ2RiX3Rlc3QgInAgY2FsbG1lICgpIiAiID0gNDIiCi0rCi0rc2V0IHRlc3QgImNvbnRpbnVl IHRvIHRoZSBoYW5kbGVyIgotK2dkYl90ZXN0X211bHRpcGxlICJjb250aW51ZSIgJHRlc3Qgewot KyAgICAtcmUgIkJyZWFrcG9pbnQgXFswLTlcXSssXFteXHJcblxdKiBwYXNzIC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiQnJlYWtwb2ludCBc WzAtOVxdKyxcW15cclxuXF0qIGZhaWwgLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlmYWlsICR0 ZXN0Ci0rICAgIH0KLSt9CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00 b2Y1LnBhdGNoIGIvZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC00b2Y1LnBhdGNoCmluZGV4IGE3 M2FiMzMuLjI5MDY0NGMgMTAwNjQ0Ci0tLSBhL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9m NS5wYXRjaAorKysgYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0Y2gKQEAgLTc4 LDExICs3OCwxMSBAQCBnZGIvdGVzdHN1aXRlLwogCSogZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJl YWRzLmV4cDogTmV3IGZpbGUuCiAJKiBnZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuYzogTmV3 IGZpbGUuCiAKLUluZGV4OiBnZGItNy4yL2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmln L2dkYi9saW51eC1uYXQuYwkyMDEwLTA5LTI1IDE1OjMwOjU0LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMDktMjUgMTU6Mzc6MjMuMDAwMDAwMDAwICsw MjAwCi1AQCAtMjcwMiw2ICsyNzAyLDggQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdw X2luZm8gKmxwLAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvbGludXgtbmF0LmMJ MjAxMC0xMS0xNiAwODoyMTo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi9saW51eC1uYXQuYwkyMDEwLTExLTE2IDA5OjEyOjI2LjAwMDAwMDAwMCArMDEwMAor QEAgLTI3NTksNiArMjc1OSw4IEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZv ICpscCwKICAgICAgewogICAgICAgIGludCBzdGF0dXM7CiAgCkBAIC05MSwxMSArOTEsMTEgQEAg SW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCiAgICAgICAgc3RhdHVzID0gd2FpdF9sd3Ag KGxwKTsKICAgICAgICBpZiAoc3RhdHVzID09IDApCiAgCXJldHVybiAwOwotQEAgLTI3MjYsMTEw ICsyNzI4LDYxIEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKK0BA IC0yNzgzLDExMCArMjc4NSw2MSBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5m byAqbHAsCiAgCiAgICAgICAgaWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1ApCiAgCXsK LS0JICBpZiAoV1NUT1BTSUcgKHN0YXR1cykgPT0gU0lHVFJBUCkKKy0JICBpZiAobGludXhfbmF0 X3N0YXR1c19pc19ldmVudCAoc3RhdHVzKSkKIC0JICAgIHsKIC0JICAgICAgLyogSWYgYSBMV1Ag b3RoZXIgdGhhbiB0aGUgTFdQIHRoYXQgd2UncmUgcmVwb3J0aW5nIGFuCiAtCSAgICAgICAgIGV2 ZW50IGZvciBoYXMgaGl0IGEgR0RCIGJyZWFrcG9pbnQgKGFzIG9wcG9zZWQgdG8KQEAgLTI0OCw3 ICsyNDgsNyBAQCBJbmRleDogZ2RiLTcuMi9nZGIvbGludXgtbmF0LmMKICAJICBscC0+c2lnbmFs bGVkID0gMDsKICAJfQogICAgICB9Ci1AQCAtMzQxNiw1MiArMzM2OSw2IEBAIHJldHJ5OgorQEAg LTM0NjksNTIgKzM0MjIsNiBAQCByZXRyeToKICAJbHAgPSBOVUxMOwogICAgICB9CiAgCkBAIC0z MDEsMTAgKzMwMSwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvbGludXgtbmF0LmMKICAgIGlmICgh dGFyZ2V0X2Nhbl9hc3luY19wICgpKQogICAgICB7CiAgICAgICAgLyogQ2F1c2VzIFNJR0lOVCB0 byBiZSBwYXNzZWQgb24gdG8gdGhlIGF0dGFjaGVkIHByb2Nlc3MuICAqLwotSW5kZXg6IGdkYi03 LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuYworSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVh ZHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZv LXRocmVhZHMuYwkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMu YwkyMDEwLTExLTE2IDA5OjA4OjQ0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw0NDcgQEAK ICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpA QCAtNzUzLDEwICs3NTMsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9zaWdpbmZvLXRocmVhZHMuYwogKwogKyAgcmV0dXJuIEVYSVRfU1VDQ0VTUzsKICt9Ci1J bmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5l eHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMv c2lnaW5mby10aHJlYWRzLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCTIwMTAtMDktMjUgMTU6MzI6MzIuMDAwMDAwMDAw ICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRz L3NpZ2luZm8tdGhyZWFkcy5leHAJMjAxMC0xMS0xNiAwOTowODo0NC4wMDAwMDAwMDAgKzAxMDAK IEBAIC0wLDAgKzEsOTQgQEAKICsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKwpAQCAtODUyLDEwICs4NTIsMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCiArfQogKwogK2dkYl9jb250 aW51ZV90b19icmVha3BvaW50IGJyZWFrLWF0LWV4aXQgIi4qYnJlYWstYXQtZXhpdC4qIgotSW5k ZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuYwor SW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdz dGVwLXRocmVhZHMuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy9zaWdzdGVwLXRocmVhZHMuYwkyMDEwLTA5LTI1IDE1OjMyOjMyLjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVw LXRocmVhZHMuYwkyMDEwLTExLTE2IDA5OjA4OjQ0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCAr MSw1NCBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCiArCkBAIC05MTEsMTAgKzkxMSwxMCBAQCBJbmRleDogZ2RiLTcuMi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCiArICBzdGFydCAoTlVMTCk7CS8qIG1haW4t c3RhcnQgKi8KICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAJ MjAxMC0wOS0yNSAxNTozMjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAkyMDEwLTEx LTE2IDA5OjA4OjQ0LjAwMDAwMDAwMCArMDEwMAogQEAgLTAsMCArMSw3NCBAQAogKyMgQ29weXJp Z2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCgpkaWZmIC0tZ2l0IGEv Z2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNoIGIvZ2RiLWJ6NTkyMDMxLXNpZ2lu Zm8tbG9zdC01b2Y1LnBhdGNoCmluZGV4IDZiZjkzZWYuLmI4MjEyYmIgMTAwNjQ0Ci0tLSBhL2dk Yi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNW9mNS5wYXRjaAorKysgYi9nZGItYno1OTIwMzEtc2ln aW5mby1sb3N0LTVvZjUucGF0Y2gKQEAgLTI2LDExICsyNiwxMSBAQCBnZGIvCiAJKGxpbnV4X25h dF9zZXRfc2lnaW5mb19maXh1cCk6IFVzZSBQVFJBQ0VfR0VUU0lHSU5GTy4KIAkqIGxpbnV4LW5h dC5oIChzdHJ1Y3QgbHdwX2luZm8pIDxzaWdpbmZvPjogUmVtb3ZlLgogCi1JbmRleDogZ2RiLTcu Mi9nZGIvbGludXgtbmF0LmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9saW51eC1u YXQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvbGludXgtbmF0LmMJMjAxMC0w OS0yNSAxNTozNzoyMy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9saW51eC1uYXQu YwkyMDEwLTA5LTI1IDE1OjM4OjE4LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4NTEsNyArMTg1MSw2 IEBAIHJlc3VtZV9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwgdm8KKy0tLSBnZGItNy4y LjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDk6MTI6MjYuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMJMjAx MC0xMS0xNiAwOToxMzoyMS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xODUwLDcgKzE4NTAsNiBAQCBy ZXN1bWVfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvCiAgCQkJICAgIHRhcmdldF9w aWRfdG9fc3RyIChscC0+cHRpZCkpOwogICAgICAgIGxwLT5zdG9wcGVkID0gMDsKICAgICAgICBs cC0+c3RlcCA9IDA7CkBAIC00Niw3ICs0Niw3IEBAIEluZGV4OiBnZGItNy4yL2dkYi9saW51eC1u YXQuYwogICAgbHAtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IDA7CiAgCiAgICBpZiAoZGVidWdf bGludXhfbmF0KQotQEAgLTI0ODMsMjIgKzI0ODEsNiBAQCB3YWl0X2x3cCAoc3RydWN0IGx3cF9p bmZvICpscCkKK0BAIC0yNTAzLDIyICsyNTAxLDYgQEAgd2FpdF9sd3AgKHN0cnVjdCBsd3BfaW5m byAqbHApCiAgICByZXR1cm4gc3RhdHVzOwogIH0KICAKQEAgLTY5LDcgKzY5LDcgQEAgSW5kZXg6 IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCiAgLyogU2VuZCBhIFNJR1NUT1AgdG8gTFAuICAqLwog IAogIHN0YXRpYyBpbnQKLUBAIC0yNzMwLDkgKzI3MTIsNiBAQCBzdG9wX3dhaXRfY2FsbGJhY2sg KHN0cnVjdCBsd3BfaW5mbyAqbHAsCitAQCAtMjc4Nyw5ICsyNzY5LDYgQEAgc3RvcF93YWl0X2Nh bGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAogIAl7CiAgCSAgLyogVGhlIHRocmVhZCB3YXMg c3RvcHBlZCB3aXRoIGEgc2lnbmFsIG90aGVyIHRoYW4gU0lHU1RPUC4gICovCiAgCkBAIC03OSwx MCArNzksMTAgQEAgSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5jCiAgCSAgc2F2ZV9zaWd0 cmFwIChscCk7CiAgCiAgCSAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLUBAIC0zMTAyLDEyICszMDgx LDcgQEAgbGludXhfbmF0X2ZpbHRlcl9ldmVudCAoaW50IGx3cGlkLCBpbnQgcworQEAgLTMxNTUs MTIgKzMxMzQsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQgbHdwaWQsIGludCBzCiAg ICAgIH0KICAKLSAgIGlmIChXSUZTVE9QUEVEIChzdGF0dXMpICYmIFdTVE9QU0lHIChzdGF0dXMp ID09IFNJR1RSQVApCisgICBpZiAobGludXhfbmF0X3N0YXR1c19pc19ldmVudCAoc3RhdHVzKSkK IC0gICAgewogLSAgICAgIC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVl ZCBpdCBsYXRlci4gICovCiAtICAgICAgc2F2ZV9zaWdpbmZvIChscCk7CkBAIC05Myw3ICs5Myw3 IEBAIEluZGV4OiBnZGItNy4yL2dkYi9saW51eC1uYXQuYwogIAogICAgLyogQ2hlY2sgaWYgdGhl IHRocmVhZCBoYXMgZXhpdGVkLiAgKi8KICAgIGlmICgoV0lGRVhJVEVEIChzdGF0dXMpIHx8IFdJ RlNJR05BTEVEIChzdGF0dXMpKQotQEAgLTM3MDYsNyArMzY4MCw2IEBAIHJlc3VtZV9zdG9wcGVk X3Jlc3VtZWRfbHdwcyAoc3RydWN0IGx3cF8KK0BAIC0zNzYzLDcgKzM3MzcsNiBAQCByZXN1bWVf c3RvcHBlZF9yZXN1bWVkX2x3cHMgKHN0cnVjdCBsd3BfCiAgICAgICAgbGludXhfb3BzLT50b19y ZXN1bWUgKGxpbnV4X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCiAgCQkJ ICAgIGxwLT5zdGVwLCBUQVJHRVRfU0lHTkFMXzApOwogICAgICAgIGxwLT5zdG9wcGVkID0gMDsK QEAgLTEwMSw3ICsxMDEsNyBAQCBJbmRleDogZ2RiLTcuMi9nZGIvbGludXgtbmF0LmMKICAgICAg ICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAgfQogIAotQEAgLTU4NzgsMTEg KzU4NTEsMTkgQEAgbGludXhfbmF0X3NldF9zaWdpbmZvX2ZpeHVwIChzdHJ1Y3QgdGFyZworQEAg LTU5MzIsMTEgKzU5MDUsMTkgQEAgbGludXhfbmF0X3NldF9zaWdpbmZvX2ZpeHVwIChzdHJ1Y3Qg dGFyZwogIHN0cnVjdCBzaWdpbmZvICoKICBsaW51eF9uYXRfZ2V0X3NpZ2luZm8gKHB0aWRfdCBw dGlkKQogIHsKQEAgLTEyNCwxMCArMTI0LDEwIEBAIEluZGV4OiBnZGItNy4yL2dkYi9saW51eC1u YXQuYwogIH0KICAKICAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVuY2UgLVdtaXNzaW5n LXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjIvZ2RiL2xpbnV4LW5hdC5oCitJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmgKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4yLm9yaWcvZ2RiL2xpbnV4LW5hdC5oCTIwMTAtMDktMjUgMTU6MzA6NTAuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMi9nZGIvbGludXgtbmF0LmgJMjAxMC0wOS0yNSAxNTozNzo1Ny4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2xpbnV4LW5hdC5o CTIwMTAtMTEtMTYgMDc6NTQ6MzYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvbGludXgtbmF0LmgJMjAxMC0xMS0xNiAwOToxMjo0NC4wMDAwMDAwMDAgKzAxMDAK IEBAIC01OCwxMCArNTgsNiBAQCBzdHJ1Y3QgbHdwX2luZm8KICAgIC8qIFRoZSBraW5kIG9mIHN0 ZXBwaW5nIG9mIHRoaXMgTFdQLiAgKi8KICAgIGVudW0gcmVzdW1lX3N0ZXAgc3RlcDsKCmRpZmYg LS1naXQgYS9nZGItYno1OTQ1NjAtY29yZS12cy1wcm9jZXNzLnBhdGNoIGIvZ2RiLWJ6NTk0NTYw LWNvcmUtdnMtcHJvY2Vzcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY3 YjlkNC4uMDAwMDAwMAotLS0gYS9nZGItYno1OTQ1NjAtY29yZS12cy1wcm9jZXNzLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMTY0ICswLDAgQEAKLS0tLSAuL2dkYi9kb2MvZ2RiLnRleGluZm8J MjAxMC0wNS0yNCAxOTozNzowMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9kb2MvZ2RiLnRl eGluZm8JMjAxMC0wNS0yNCAxOTozODo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNDc2OCwzMyAr MTQ3NjgsMjEgQEAgYW5kIEBjb2Rle3Nob3cgYXJjaGl0ZWN0dXJlfS4KLSBAY2luZGV4IGFjdGl2 ZSB0YXJnZXRzCi0gQGNpbmRleCBtdWx0aXBsZSB0YXJnZXRzCi0gCi0tVGhlcmUgYXJlIHRocmVl IGNsYXNzZXMgb2YgdGFyZ2V0czogcHJvY2Vzc2VzLCBjb3JlIGZpbGVzLCBhbmQKLS1leGVjdXRh YmxlIGZpbGVzLiAgQHZhbHVle0dEQk59IGNhbiB3b3JrIGNvbmN1cnJlbnRseSBvbiB1cCB0byB0 aHJlZQotLWFjdGl2ZSB0YXJnZXRzLCBvbmUgaW4gZWFjaCBjbGFzcy4gIFRoaXMgYWxsb3dzIHlv dSB0byAoZm9yIGV4YW1wbGUpCi0tc3RhcnQgYSBwcm9jZXNzIGFuZCBpbnNwZWN0IGl0cyBhY3Rp dml0eSB3aXRob3V0IGFiYW5kb25pbmcgeW91ciB3b3JrIG9uCi0tYSBjb3JlIGZpbGUuCi0tCi0t Rm9yIGV4YW1wbGUsIGlmIHlvdSBleGVjdXRlIEBzYW1we2dkYiBhLm91dH0sIHRoZW4gdGhlIGV4 ZWN1dGFibGUgZmlsZQotLUBjb2Rle2Eub3V0fSBpcyB0aGUgb25seSBhY3RpdmUgdGFyZ2V0LiAg SWYgeW91IGRlc2lnbmF0ZSBhIGNvcmUgZmlsZSBhcwotLXdlbGwtLS1wcmVzdW1hYmx5IGZyb20g YSBwcmlvciBydW4gdGhhdCBjcmFzaGVkIGFuZCBjb3JlZHVtcGVkLS0tdGhlbgotLUB2YWx1ZXtH REJOfSBoYXMgdHdvIGFjdGl2ZSB0YXJnZXRzIGFuZCB1c2VzIHRoZW0gaW4gdGFuZGVtLCBsb29r aW5nCi0tZmlyc3QgaW4gdGhlIGNvcmVmaWxlIHRhcmdldCwgdGhlbiBpbiB0aGUgZXhlY3V0YWJs ZSBmaWxlLCB0byBzYXRpc2Z5Ci0tcmVxdWVzdHMgZm9yIG1lbW9yeSBhZGRyZXNzZXMuICAoVHlw aWNhbGx5LCB0aGVzZSB0d28gY2xhc3NlcyBvZiB0YXJnZXQKLS1hcmUgY29tcGxlbWVudGFyeSwg c2luY2UgY29yZSBmaWxlcyBjb250YWluIG9ubHkgYSBwcm9ncmFtJ3MKLS1yZWFkLXdyaXRlIG1l bW9yeS0tLXZhcmlhYmxlcyBhbmQgc28gb24tLS1wbHVzIG1hY2hpbmUgc3RhdHVzLCB3aGlsZQot LWV4ZWN1dGFibGUgZmlsZXMgY29udGFpbiBvbmx5IHRoZSBwcm9ncmFtIHRleHQgYW5kIGluaXRp YWxpemVkIGRhdGEuKQotLQotLVdoZW4geW91IHR5cGUgQGNvZGV7cnVufSwgeW91ciBleGVjdXRh YmxlIGZpbGUgYmVjb21lcyBhbiBhY3RpdmUgcHJvY2VzcwotLXRhcmdldCBhcyB3ZWxsLiAgV2hl biBhIHByb2Nlc3MgdGFyZ2V0IGlzIGFjdGl2ZSwgYWxsIEB2YWx1ZXtHREJOfQotLWNvbW1hbmRz IHJlcXVlc3RpbmcgbWVtb3J5IGFkZHJlc3NlcyByZWZlciB0byB0aGF0IHRhcmdldDsgYWRkcmVz c2VzIGluCi0tYW4gYWN0aXZlIGNvcmUgZmlsZSBvciBleGVjdXRhYmxlIGZpbGUgdGFyZ2V0IGFy ZSBvYnNjdXJlZCB3aGlsZSB0aGUKLS1wcm9jZXNzIHRhcmdldCBpcyBhY3RpdmUuCi0tCi0tVXNl IHRoZSBAY29kZXtjb3JlLWZpbGV9IGFuZCBAY29kZXtleGVjLWZpbGV9IGNvbW1hbmRzIHRvIHNl bGVjdCBhIG5ldwotLWNvcmUgZmlsZSBvciBleGVjdXRhYmxlIHRhcmdldCAoQHB4cmVme0ZpbGVz LCAsQ29tbWFuZHMgdG8gU3BlY2lmeQotLUZpbGVzfSkuICBUbyBzcGVjaWZ5IGFzIGEgdGFyZ2V0 IGEgcHJvY2VzcyB0aGF0IGlzIGFscmVhZHkgcnVubmluZywgdXNlCi0tdGhlIEBjb2Rle2F0dGFj aH0gY29tbWFuZCAoQHB4cmVme0F0dGFjaCwgLERlYnVnZ2luZyBhbiBBbHJlYWR5LXJ1bm5pbmcK LS1Qcm9jZXNzfSkuCi0rVGhlcmUgYXJlIG11bHRpcGxlIGNsYXNzZXMgb2YgdGFyZ2V0cyBzdWNo IGFzOiBwcm9jZXNzZXMsIGV4ZWN1dGFibGUgZmlsZXMgb3IKLStyZWNvcmRpbmcgc2Vzc2lvbnMu ICBDb3JlIGZpbGVzIGJlbG9uZyB0byB0aGUgcHJvY2VzcyBjbGFzcywgdGhlcmUgY2FuIGJlCi0r YWN0aXZlIG9ubHkgb25lIG9mIGEgY29yZSBvciBhIHJ1bm5pbmcgcHJvY2Vzcy4gIE90aGVyd2lz ZSBAdmFsdWV7R0RCTn0gY2FuCi0rd29yayBjb25jdXJyZW50bHkgb24gbXVsdGlwbGUgYWN0aXZl IHRhcmdldHMsIG9uZSBpbiBlYWNoIGNsYXNzLiAgVGhpcyBhbGxvd3MKLSt5b3UgdG8gKGZvciBl eGFtcGxlKSBzdGFydCBhIHByb2Nlc3MgYW5kIGluc3BlY3QgaXRzIGFjdGl2aXR5IHdoaWxlIHN0 aWxsCi0raGF2aW5nIGFjY2VzcyB0byB0aGUgZXhlY3V0YWJsZSBmaWxlIGFmdGVyIHRoZSBwcm9j ZXNzIGZpbmlzaGVzLiAgT3IgaWYgeW91Ci0rc3RhcnQgcHJvY2VzcyByZWNvcmRpbmcgKEBweHJl ZntSZXZlcnNlIEV4ZWN1dGlvbn0pIGFuZCBAY29kZXtyZXZlcnNlLXN0ZXB9Ci0rdGhlcmUgeW91 IGFyZSBwcmVzZW50ZWQgYSB2aXJ0dWFsIGxheWVyIG9mIHRoZSByZWNvcmRpbmcgdGFyZ2V0IHdo aWxlIHRoZQotK3Byb2Nlc3MgdGFyZ2V0IHJlbWFpbnMgc3RvcHBlZCBhdCB0aGUgY2hyb25vbG9n aWNhbGx5IGxhc3QgcG9pbnQgb2YgdGhlIHByb2Nlc3MKLStleGVjdXRpb24uCi0rCi0rVXNlIHRo ZSBAY29kZXtjb3JlLWZpbGV9IGFuZCBAY29kZXtleGVjLWZpbGV9IGNvbW1hbmRzIHRvIHNlbGVj dCBhIG5ldyBjb3JlCi0rZmlsZSBvciBleGVjdXRhYmxlIHRhcmdldCAoQHB4cmVme0ZpbGVzLCAs Q29tbWFuZHMgdG8gU3BlY2lmeSBGaWxlc30pLiAgVG8KLStzcGVjaWZ5IGFzIGEgdGFyZ2V0IGEg cHJvY2VzcyB0aGF0IGlzIGFscmVhZHkgcnVubmluZywgdXNlIHRoZSBAY29kZXthdHRhY2h9Ci0r Y29tbWFuZCAoQHB4cmVme0F0dGFjaCwgLERlYnVnZ2luZyBhbiBBbHJlYWR5LXJ1bm5pbmcgUHJv Y2Vzc30pLgotIAotIEBub2RlIFRhcmdldCBDb21tYW5kcwotIEBzZWN0aW9uIENvbW1hbmRzIGZv ciBNYW5hZ2luZyBUYXJnZXRzCi0tLS0gLi9nZGIvaW5mY21kLmMJMjAxMC0wNS0yNCAxOTozNzow MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyAuL2dkYi9pbmZjbWQuYwkyMDEwLTA1LTI0IDE5OjQxOjIx LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ4Myw2ICs0ODMsMTMgQEAgcnVuX2NvbW1hbmRfMSAoY2hh ciAqYXJncywgaW50IGZyb21fdHR5LAotIAotICAgZG9udF9yZXBlYXQgKCk7Ci0gCi0rICBpZiAo Y29yZV9iZmQpCi0rICAgIHsKLSsgICAgICBjb3JlX2ZpbGVfY29tbWFuZCAoTlVMTCwgZnJvbV90 dHkpOwotKyAgICAgIGlmIChjb3JlX2JmZCkKLSsJd2FybmluZyAoXygiQ29yZSBmaWxlIG5vdCB1 bmxvYWRlZC4iKSk7Ci0rICAgIH0KLSsKLSAgIGtpbGxfaWZfYWxyZWFkeV9ydW5uaW5nIChmcm9t X3R0eSk7Ci0gCi0gICBpbml0X3dhaXRfZm9yX2luZmVyaW9yICgpOwotQEAgLTIzNzMsNiArMjM4 MCwxMyBAQCBhdHRhY2hfY29tbWFuZCAoY2hhciAqYXJncywgaW50IGZyb21fdHR5Ci0gCWVycm9y IChfKCJOb3Qga2lsbGVkLiIpKTsKLSAgICAgfQotIAotKyAgaWYgKGNvcmVfYmZkKQotKyAgICB7 Ci0rICAgICAgY29yZV9maWxlX2NvbW1hbmQgKE5VTEwsIGZyb21fdHR5KTsKLSsgICAgICBpZiAo Y29yZV9iZmQpCi0rCXdhcm5pbmcgKF8oIkNvcmUgZmlsZSBub3QgdW5sb2FkZWQuIikpOwotKyAg ICB9Ci0rCi0gICAvKiBDbGVhbiB1cCBhbnkgbGVmdG92ZXJzIGZyb20gb3RoZXIgcnVucy4gIFNv bWUgb3RoZXIgdGhpbmdzIGZyb20KLSAgICAgIHRoaXMgZnVuY3Rpb24gc2hvdWxkIHByb2JhYmx5 IGJlIG1vdmVkIGludG8gdGFyZ2V0X3ByZV9pbmZlcmlvci4gICovCi0gICB0YXJnZXRfcHJlX2lu ZmVyaW9yIChmcm9tX3R0eSk7Ci0tLS0gLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2NvcmVmaWxl LmV4cAkyMDEwLTAxLTA5IDAxOjE0OjExLjAwMDAwMDAwMCArMDEwMAotKysrIC4vZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9jb3JlZmlsZS5leHAJMjAxMC0wNS0yNCAxOTozODo1Ni4wMDAwMDAwMDAg KzAyMDAKLUBAIC0xODIsMyArMTgyLDYyIEBAIGdkYl9sb2FkICR7YmluZmlsZX0KLSBnZGJfdGVz dCAidXAiICIjXFswLTlcXSogKlxbMC05eGEtZkgnXF0qIGluIC4qIFxcKC4qXFwpLioiICJ1cCBp biBjb3JlZmlsZS5leHAgKHJlaW5pdCkiCi0gCi0gZ2RiX3Rlc3QgImNvcmUiICJObyBjb3JlIGZp bGUgbm93LiIKLSsKLSsKLSsjIFRlc3QgYSBydW4gKHN0YXJ0KSBjb21tYW5kIHdpbGwgY2xlYXIg YW55IGxvYWRlZCBjb3JlIGZpbGUuCi0rCi0rZ2RiX3Rlc3QgImNvcmUtZmlsZSAkY29yZWZpbGUi ICJDb3JlIHdhcyBnZW5lcmF0ZWQgYnkgLioiICJydW46IGxvYWQgY29yZSBhZ2FpbiIKLStnZGJf dGVzdCAiaW5mbyBmaWxlcyIgIlxyXG5Mb2NhbCBjb3JlIGR1bXAgZmlsZTpcclxuLioiICJydW46 IHNhbml0eSBjaGVjayB3ZSBzZWUgdGhlIGNvcmUgZmlsZSIKLSsKLStzZXQgdGVzdCAicnVuOiB3 aXRoIGNvcmUiCi0raWYgW3J1bnRvX21haW5dIHsKLSsgICAgcGFzcyAkdGVzdAotK30gZWxzZSB7 Ci0rICAgIGZhaWwgJHRlc3QKLSt9Ci0rCi0rc2V0IHRlc3QgInJ1bjogY29yZSBmaWxlIGlzIGNs ZWFyZWQiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImluZm8gZmlsZXMiICR0ZXN0IHsKLSsgICAgIlxy XG5Mb2NhbCBjb3JlIGR1bXAgZmlsZTpcclxuLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlmYWls ICR0ZXN0Ci0rICAgIH0KLSsgICAgIlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QK LSsgICAgfQotK30KLSsKLStnZGJfZXhpdAotKwotKwotKyMgVGVzdCBhbiBhdHRhY2ggY29tbWFu ZCB3aWxsIGNsZWFyIGFueSBsb2FkZWQgY29yZSBmaWxlLgotKwotK2lmICFbaXNfcmVtb3RlIHRh cmdldF0gewotKyAgICBzZXQgdGVzdCAiYXR0YWNoOiBzcGF3biBzbGVlcCIKLSsgICAgc2V0IHJl cyBbcmVtb3RlX3NwYXduIGhvc3QgIiRiaW5maWxlIHNsZWVwIl07Ci0rICAgIGlmIHsgJHJlcyA8 IDAgfHwgJHJlcyA9PSAiIiB9IHsKLSsJcGVycm9yICIkdGVzdCBmYWlsZWQuIgotKwlmYWlsICR0 ZXN0Ci0rCXJldHVybgotKyAgICB9Ci0rICAgIHNldCBwaWQgW2V4cF9waWQgLWkgJHJlc10KLSsg ICAgIyBXZSBkbyBub3QgY2FyZSBvZiB0aGUgc3RhcnR1cCBwaGFzZSB3aGVyZSBpdCB3aWxsIGJl IGNhdWdodC4KLSsKLSsgICAgZ2RiX3N0YXJ0Ci0rCi0rICAgIGdkYl90ZXN0ICJjb3JlLWZpbGUg JGNvcmVmaWxlIiAiQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IC4qIiAiYXR0YWNoOiBsb2FkIGNvcmUg YWdhaW4iCi0rICAgIGdkYl90ZXN0ICJpbmZvIGZpbGVzIiAiXHJcbkxvY2FsIGNvcmUgZHVtcCBm aWxlOlxyXG4uKiIgImF0dGFjaDogc2FuaXR5IGNoZWNrIHdlIHNlZSB0aGUgY29yZSBmaWxlIgot KwotKyAgICBnZGJfdGVzdCAiYXR0YWNoICRwaWQiICJBdHRhY2hpbmcgdG8gcHJvY2VzcyAkcGlk XHJcbi4qIiAiYXR0YWNoOiB3aXRoIGNvcmUiCi0rCi0rICAgIHNldCB0ZXN0ICJhdHRhY2g6IGNv cmUgZmlsZSBpcyBjbGVhcmVkIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiaW5mbyBmaWxlcyIg JHRlc3QgewotKwkiXHJcbkxvY2FsIGNvcmUgZHVtcCBmaWxlOlxyXG4uKlxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCSAgICBmYWlsICR0ZXN0Ci0rCX0KLSsJIlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CSAgICBwYXNzICR0ZXN0Ci0rCX0KLSsgICAgfQotKwotKyAgICBnZGJfZXhpdAotK30KLS0tLSAu L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZW1ha2VyLmMJMjAxMC0wMS0wMSAwODozMjowMC4w MDAwMDAwMDAgKzAxMDAKLSsrKyAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvY29yZW1ha2VyLmMJ MjAxMC0wNS0yNCAxOTozODo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzMsOCArMTMzLDE0IEBA IGZ1bmMxICgpCi0gICBmdW5jMiAoKTsKLSB9Ci0gCi0taW50IG1haW4gKCkKLStpbnQKLSttYWlu IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gewotKyAgaWYgKGFyZ2MgPT0gMiAmJiBzdHJjbXAg KGFyZ3ZbMV0sICJzbGVlcCIpID09IDApCi0rICAgIHsKLSsgICAgICBzbGVlcCAoNjApOwotKyAg ICAgIHJldHVybiAwOwotKyAgICB9Ci0gICBtbWFwZGF0YSAoKTsKLSAgIGZ1bmMxICgpOwotICAg cmV0dXJuIDA7CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjE0NjU5LXByZWxpbmstZHluYnNzLnBhdGNo IGIvZ2RiLWJ6NjE0NjU5LXByZWxpbmstZHluYnNzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEw MDY0NAppbmRleCA3NTUxNGVjLi4wMDAwMDAwCi0tLSBhL2dkYi1iejYxNDY1OS1wcmVsaW5rLWR5 bmJzcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxNyArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wNy9tc2cwMDIzNy5odG1sCi1TdWJqZWN0OiBb cGF0Y2hdIEZpeCByZWdyZXNzaW9uIG9uIHByZWxpbmtlZCBleGVjdXRhYmxlcwotCi1IaSwKLQot dGhlcmUgaXMgYSByZWdyZXNzaW9uIHNpbmNlIGdkYi03LjAgZm9yIGEgY29tYmluYXRpb24gb2Y6 Ci0gKiBwcmVsaW5rZWQKLSAqIG1haW4gZXhlY3V0YWJsZQotICogdXNpbmcgc2VwYXJhdGUgZGVi dWcgaW5mbwotICogdXNpbmcgY29weSByZWxvY2F0aW9ucwotCi1JdCBpcyBzaW5jZSBhIHBhdGNo IGZvciBib3RoIFBJRSBhbmQgKEFGQUlLKSBPU1ggc3VwcG9ydDoKLQlbY29tbWl0XSBzeW1zX2Zy b21fb2JqZmlsZTogUmVsYXRpdml6ZSBhbHNvIE1BSU5MSU5FCi0JaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDEvbXNnMDAwODAuaHRtbAotCi13aGljaCBzdGFydGVk IHRvIHVzZSBwcm9ibGVtYXRpYyBhZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSBldmVuIGZvciBtYWlu Ci1leGVjdXRhYmxlcy4gIHByZWxpbms8LT5nZGIgZGlzY3Vzc2lvbiBhdDoKLQlodHRwczovL2J1 Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYxNDY1OQotCi1DdXJyZW50bHkgaW4g dGhlIHVuZm9ydHVuYXRlbHkgZXhlY3V0YWJsZXMgR0RCIGhhcyBpbnZhbGlkIGRpc3BsY2VtZW50 IGZvcgotc3ltYm9scyBpbiAuYnNzOgotCWludCBic3N2YXIsICpic3N2YXJwID0gJmJzc3ZhcjsK LQkoZ2RiKSBwICZic3N2YXIKLQkkMSA9IChpbnQgKikgMHg2MDBiNTQKLQkoZ2RiKSBwIGJzc3Zh cnAKLQkkMiA9IChpbnQgKikgMHg2MDBiNTAKLQotPGFic3RyYWN0LWhpZ2hlci1wb2ludC1vZi12 aWV3PgotYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgY291bGQganVzdCBzaW1wbHkgc3VidHJhY3Qg ZW50cnkgcG9pbnQgYWRkcmVzcyBhbmQKLXByb3ZpZGUgc2luZ2xlIENPUkVfQUREUiBvYmpmaWxl LT5vZmZzZXQgKGluc3RlYWQgb2YgdGhlIGN1cnJlbnQKLXNlY3Rpb25fb2Zmc2V0cyBhcnJheSB3 aXRoIG9mZnNldHMgc3BlY2lmaWMgZm9yIGVhY2ggc2VjdGlvbikuICBMaW51eCBzeXN0ZW1zCi11 c2UgYWx3YXlzIHNpbmdsZSBvZmZzZXQgZm9yIHRoZSB3aG9sZSBvYmpmaWxlLiAgQUZBSUsgdGhl c2UgcGVyLXNlY3Rpb24KLW9mZnNldHMgYXJlIHRoZXJlIGZvciBzb21lIGVtYmVkZGVkIHRhcmdl dHMuICBDdXJpb3VzbHkgR0RCIGFscmVhZHkgdXNlcyBhdAotbWFueSBwbGFjZXMKLQliYXNlYWRk ciA9IEFOT0ZGU0VUIChvYmpmaWxlLT5zZWN0aW9uX29mZnNldHMsIFNFQ1RfT0ZGX1RFWFQgKG9i amZpbGUpKTsKLWluc3RlYWQgb2YgdXNpbmcgb2Zmc2V0IGZvciB0aGUgYXBwcm9wcmlhdGUgc2Vj dGlvbiBhdCB0aGF0IHBsYWNlIGFuZCBub2JvZHkKLWNvbXBsYWlucy4KLTwvYWJzdHJhY3QtaGln aGVyLXBvaW50LW9mLXZpZXc+Ci0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0z MixpNjg2fS1mZWRvcmExMy1saW51eC1nbnUuCi0KLVByb3Bvc2luZyBmb3IgdGhlIGdkYi03LjIg YnJhbmNoLiAgSSBoYWQgcHJvYmxlbXMgZml4aW5nIHVwIG15IGNyYXNoaW5nIFguCi0KLQotVGhh bmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMC0wNy0xNSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBzeW1maWxlLmMgKGFkZHJfc2VjdGlvbl9uYW1lKTog TmV3IGZ1bmN0aW9uLgotCShhZGRyc19zZWN0aW9uX2NvbXBhcik6IFVzZSBpdC4KLQkoYWRkcl9p bmZvX21ha2VfcmVsYXRpdmUpOiBVc2UgaXQuICBNb3ZlIHZhcmlhYmxlIHNlY3RfbmFtZSBpbnRv IGEgbW9yZQotCWlubmVyIGJsb2NrLiAgTWFrZSAiLmR5bmJzcyIgYW5kICIuc2R5bmJzcyIgY2hl Y2tzIG1vcmUgc3RyaWN0LgotCi1nZGIvdGVzdHN1aXRlLwotMjAxMC0wNy0xNSAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JKiBnZGIuYmFzZS9wcmVsaW5r LWxpYi5jIChjb3B5cmVsb2MpOiBOZXcgaW5pdGlhbGl6ZWQgdmFyaWFibGUuCi0JKiBnZGIuYmFz ZS9wcmVsaW5rLmMgKGNvcHlyZWxvYywgYnNzdmFyLCBic3N2YXJwKTogTmV3IHZhcmlhYmxlcy4K LQkobWFpbik6IFVzZSBjb3B5cmVsb2MuCi0JKiBnZGIuYmFzZS9wcmVsaW5rLmV4cCAoc3BsaXQg ZGVidWcgb2YgZXhlY3V0YWJsZSkKLQkoLmR5bmJzcyB2cy4gLmJzcyBhZGRyZXNzIHNoaWZ0KTog TmV3IHRlc3RzLgotCi0tLS0gYS9nZGIvc3ltZmlsZS5jCi0rKysgYi9nZGIvc3ltZmlsZS5jCi1A QCAtNTQ3LDYgKzU0NywyMyBAQCByZWxhdGl2ZV9hZGRyX2luZm9fdG9fc2VjdGlvbl9vZmZzZXRz IChzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpzZWN0aW9uX29mZnNldHMsCi0gICAgIH0KLSB9Ci0g Ci0rLyogVHJhbnNmb3JtIHNlY3Rpb24gbmFtZSBTIGZvciBhIG5hbWUgY29tcGFyaXNvbi4gIHBy ZWxpbmsgY2FuIHNwbGl0IHNlY3Rpb24KLSsgICBgLmJzcycgaW50byB0d28gc2VjdGlvbnMgYC5k eW5ic3MnIGFuZCBgLmJzcycgKGluIHRoaXMgb3JkZXIpLiAgU2ltaWxhcmx5Ci0rICAgcHJlbGlu ayBjYW4gc3BsaXQgYC5zYnNzJyBpbnRvIGAuc2R5bmJzcycgYW5kIGAuc2JzcycuICBVc2Ugdmly dHVhbCBhZGRyZXNzCi0rICAgb2YgdGhlIG5ldyBgLmR5bmJzcycgKGAuc2R5bmJzcycpIHNlY3Rp b24gYXMgdGhlIGFkamFjZW50IG5ldyBgLmJzcycKLSsgICAoYC5zYnNzJykgc2VjdGlvbiBoYXMg aW52YWxpZCAoaW5jcmVhc2VkKSB2aXJ0dWFsIGFkZHJlc3MuICAqLwotKwotK3N0YXRpYyBjb25z dCBjaGFyICoKLSthZGRyX3NlY3Rpb25fbmFtZSAoY29uc3QgY2hhciAqcykKLSt7Ci0rICBpZiAo c3RyY21wIChzLCAiLmR5bmJzcyIpID09IDApCi0rICAgIHJldHVybiAiLmJzcyI7Ci0rICBpZiAo c3RyY21wIChzLCAiLnNkeW5ic3MiKSA9PSAwKQotKyAgICByZXR1cm4gIi5zYnNzIjsKLSsKLSsg IHJldHVybiBzOwotK30KLSsKLSAvKiBxc29ydCBjb21wYXJhdG9yIGZvciBhZGRyc19zZWN0aW9u X3NvcnQuICBTb3J0IGVudHJpZXMgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5Ci0gICAgdGhlaXIgKG5h bWUsIHNlY3RpbmRleCkgcGFpci4gIHNlY3RpbmRleCBtYWtlcyB0aGUgc29ydCBieSBuYW1lIHN0 YWJsZS4gICovCi0gCi1AQCAtNTU3LDcgKzU3NCw3IEBAIGFkZHJzX3NlY3Rpb25fY29tcGFyIChj b25zdCB2b2lkICphcCwgY29uc3Qgdm9pZCAqYnApCi0gICBjb25zdCBzdHJ1Y3Qgb3RoZXJfc2Vj dGlvbnMgKmIgPSAqKChzdHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKiopIGJwKTsKLSAgIGludCByZXR2 YWwsIGFfaWR4LCBiX2lkeDsKLSAKLS0gIHJldHZhbCA9IHN0cmNtcCAoYS0+bmFtZSwgYi0+bmFt ZSk7Ci0rICByZXR2YWwgPSBzdHJjbXAgKGFkZHJfc2VjdGlvbl9uYW1lIChhLT5uYW1lKSwgYWRk cl9zZWN0aW9uX25hbWUgKGItPm5hbWUpKTsKLSAgIGlmIChyZXR2YWwpCi0gICAgIHJldHVybiBy ZXR2YWw7Ci0gCi1AQCAtNjQxLDE0ICs2NTgsMTYgQEAgYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUg KHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsIGJmZCAqYWJmZCkKLSAKLSAgIHdoaWxl ICgqYWRkcnNfc29ydGVkKQotICAgICB7Ci0tICAgICAgY29uc3QgY2hhciAqc2VjdF9uYW1lID0g KCphZGRyc19zb3J0ZWQpLT5uYW1lOwotKyAgICAgIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSA9IGFk ZHJfc2VjdGlvbl9uYW1lICgoKmFkZHJzX3NvcnRlZCktPm5hbWUpOwotIAotICAgICAgIHdoaWxl ICgqYWJmZF9hZGRyc19zb3J0ZWQKLS0JICAgICAmJiBzdHJjbXAgKCgqYWJmZF9hZGRyc19zb3J0 ZWQpLT5uYW1lLCBzZWN0X25hbWUpIDwgMCkKLSsJICAgICAmJiBzdHJjbXAgKGFkZHJfc2VjdGlv bl9uYW1lICgoKmFiZmRfYWRkcnNfc29ydGVkKS0+bmFtZSksCi0rCQkJc2VjdF9uYW1lKSA8IDAp Ci0gCWFiZmRfYWRkcnNfc29ydGVkKys7Ci0gCi0gICAgICAgaWYgKCphYmZkX2FkZHJzX3NvcnRl ZAotLQkgICYmIHN0cmNtcCAoKCphYmZkX2FkZHJzX3NvcnRlZCktPm5hbWUsIHNlY3RfbmFtZSkg PT0gMCkKLSsJICAmJiBzdHJjbXAgKGFkZHJfc2VjdGlvbl9uYW1lICgoKmFiZmRfYWRkcnNfc29y dGVkKS0+bmFtZSksCi0rCQkgICAgIHNlY3RfbmFtZSkgPT0gMCkKLSAJewotIAkgIGludCBpbmRl eF9pbl9hZGRyczsKLSAKLUBAIC02NzYsNyArNjk1LDYgQEAgYWRkcl9pbmZvX21ha2VfcmVsYXRp dmUgKHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbyAqYWRkcnMsIGJmZCAqYWJmZCkKLSAKLSAgIGZv ciAoaSA9IDA7IGkgPCBhZGRycy0+bnVtX3NlY3Rpb25zICYmIGFkZHJzLT5vdGhlcltpXS5uYW1l OyBpKyspCi0gICAgIHsKLS0gICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUgPSBhZGRycy0+b3Ro ZXJbaV0ubmFtZTsKLSAgICAgICBzdHJ1Y3Qgb3RoZXJfc2VjdGlvbnMgKnNlY3QgPSBhZGRyc190 b19hYmZkX2FkZHJzW2ldOwotIAotICAgICAgIGlmIChzZWN0KQotQEAgLTY5NCw2ICs3MTIsOSBA QCBhZGRyX2luZm9fbWFrZV9yZWxhdGl2ZSAoc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICphZGRy cywgYmZkICphYmZkKQotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgLyogYWRkcl9zZWN0aW9u X25hbWUgdHJhbnNmb3JtYXRpb24gaXMgbm90IHVzZWQgZm9yIFNFQ1RfTkFNRS4gICovCi0rCSAg Y29uc3QgY2hhciAqc2VjdF9uYW1lID0gYWRkcnMtPm90aGVyW2ldLm5hbWU7Ci0rCi0gCSAgLyog VGhpcyBzZWN0aW9uIGRvZXMgbm90IGV4aXN0IGluIEFCRkQsIHdoaWNoIGlzIG5vcm1hbGx5Ci0g CSAgICAgdW5leHBlY3RlZCBhbmQgd2Ugd2FudCB0byBpc3N1ZSBhIHdhcm5pbmcuCi0gCi1AQCAt NzA0LDEyICs3MjUsMjAgQEAgYWRkcl9pbmZvX21ha2VfcmVsYXRpdmUgKHN0cnVjdCBzZWN0aW9u X2FkZHJfaW5mbyAqYWRkcnMsIGJmZCAqYWJmZCkKLSAJICAgICBhIHdhcm5pbmcuICBTaGFyZWQg bGlicmFyaWVzIGNvbnRhaW4ganVzdCB0aGUgc2VjdGlvbgotIAkgICAgICIuZ251LmxpYmxpc3Qi IGJ1dCBpdCBpcyBub3QgbWFya2VkIGFzIGxvYWRhYmxlIHRoZXJlLiAgVGhlcmUgaXMKLSAJICAg ICBubyBvdGhlciB3YXkgdG8gaWRlbnRpZnkgdGhlbSB0aGFuIGJ5IHRoZWlyIG5hbWUgYXMgdGhl IHNlY3Rpb25zCi0tCSAgICAgY3JlYXRlZCBieSBwcmVsaW5rIGhhdmUgbm8gc3BlY2lhbCBmbGFn cy4gICovCi0rCSAgICAgY3JlYXRlZCBieSBwcmVsaW5rIGhhdmUgbm8gc3BlY2lhbCBmbGFncy4K LSsKLSsJICAgICBGb3IgdGhlIHNlY3Rpb25zIGAuYnNzJyBhbmQgYC5zYnNzJyBzZWUgYWRkcl9z ZWN0aW9uX25hbWUuICAqLwotIAotIAkgIGlmICghKHN0cmNtcCAoc2VjdF9uYW1lLCAiLmdudS5s aWJsaXN0IikgPT0gMAotIAkJfHwgc3RyY21wIChzZWN0X25hbWUsICIuZ251LmNvbmZsaWN0Iikg PT0gMAotLQkJfHwgc3RyY21wIChzZWN0X25hbWUsICIuZHluYnNzIikgPT0gMAotLQkJfHwgc3Ry Y21wIChzZWN0X25hbWUsICIuc2R5bmJzcyIpID09IDApKQotKwkJfHwgKHN0cmNtcCAoc2VjdF9u YW1lLCAiLmJzcyIpID09IDAKLSsJCSAgICAmJiBpID4gMAotKwkJICAgICYmIHN0cmNtcCAoYWRk cnMtPm90aGVyW2kgLSAxXS5uYW1lLCAiLmR5bmJzcyIpID09IDAKLSsJCSAgICAmJiBhZGRyc190 b19hYmZkX2FkZHJzW2kgLSAxXSAhPSBOVUxMKQotKwkJfHwgKHN0cmNtcCAoc2VjdF9uYW1lLCAi LnNic3MiKSA9PSAwCi0rCQkgICAgJiYgaSA+IDAKLSsJCSAgICAmJiBzdHJjbXAgKGFkZHJzLT5v dGhlcltpIC0gMV0ubmFtZSwgIi5zZHluYnNzIikgPT0gMAotKwkJICAgICYmIGFkZHJzX3RvX2Fi ZmRfYWRkcnNbaSAtIDFdICE9IE5VTEwpKSkKLSAJICAgIHdhcm5pbmcgKF8oInNlY3Rpb24gJXMg bm90IGZvdW5kIGluICVzIiksIHNlY3RfbmFtZSwKLSAJCSAgICAgYmZkX2dldF9maWxlbmFtZSAo YWJmZCkpOwotIAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9wcmVsaW5rLWxpYi5jCi0r KysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ByZWxpbmstbGliLmMKLUBAIC0xNiw2ICsxNiw4 IEBACi0gICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0gKi8KLSAKLStpbnQgY29weXJlbG9jID0gMTsKLSsKLSBp bnQKLSBnICh2b2lkICgqcCkodm9pZCkpCi0gewotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9wcmVsaW5rLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJlbGluay5jCi1AQCAt MTgsNiArMTgsMTEgQEAKLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAKLStleHRlcm4gaW50IGNv cHlyZWxvYzsKLSsKLSsvKiBUZXN0IEdEQiBpdHNlbGYgZmluZHMgYCZic3N2YXInIHJpZ2h0LiAg ICovCi0rc3RhdGljIGludCBic3N2YXIsICpic3N2YXJwID0gJmJzc3ZhcjsKLSsKLSBleHRlcm4g dm9pZCAoKmggKHZvaWQpKSAodm9pZCAoKikodm9pZCkpOwotIAotIGludAotQEAgLTI1LDUgKzMw LDYgQEAgbWFpbiAodm9pZCkKLSB7Ci0gICB2b2lkICgqZikgKHZvaWQgKCopKHZvaWQpKSA9IGgg KCk7Ci0gICBwcmludGYgKCIlcFxuIiwgZik7Ci0rICBwcmludGYgKCIlZFxuIiwgY29weXJlbG9j KTsKLSAgIGYgKDApOwotIH0KLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJlbGluay5l eHAKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcHJlbGluay5leHAKLUBAIC01Nyw2ICs1 NywxMyBAQCBpZiB7JHByZWxpbmtfYXJncyA9PSAiIn0gewotICAgICByZXR1cm4gLTEKLSB9Ci0g Ci0rc2V0IHRlc3QgInNwbGl0IGRlYnVnIG9mIGV4ZWN1dGFibGUiCi0raWYgW2dkYl9nbnVfc3Ry aXBfZGVidWcgJGJpbmZpbGVdIHsKLSsgICAgZmFpbCAkdGVzdAotK30gZWxzZSB7Ci0rICAgIHBh c3MgJHRlc3QKLSt9Ci0rCi0gaWYgIVtwcmVsaW5rX3llcyAkcHJlbGlua19hcmdzXSB7Ci0gICAg ICMgTWF5YmUgd2UgZG9uJ3QgaGF2ZSBwcmVsaW5rLgotICAgICByZXR1cm4gLTEKLUBAIC0xMDUs MyArMTEyLDUgQEAgY2xlYW5fcmVzdGFydCAkZXhlY3V0YWJsZQotIGdkYl90ZXN0X25vX291dHB1 dCAic2V0IHZlcmJvc2Ugb24iCi0gCi0gZ2RiX3Rlc3QgImNvcmUtZmlsZSAkb2JqZGlyLyRzdWJk aXIvcHJlbGluay5jb3JlIiAiVXNpbmcgUElDIFxcKFBvc2l0aW9uIEluZGVwZW5kZW50IENvZGVc XCkgcHJlbGluayBkaXNwbGFjZW1lbnQgMHhcW14wXF1cWzAtOWEtZlxdKiBmb3IgXFteXHJcblxd KltmaWxlIHRhaWwgJHtsaWJmaWxlfV0uKiIgInNlZW4gZGlzcGxhY2VtZW50IG1lc3NhZ2UiCi0r Ci0rZ2RiX3Rlc3QgInAgJmJzc3ZhciA9PSBic3N2YXJwIiAiID0gMSIgIi5keW5ic3MgdnMuIC5i c3MgYWRkcmVzcyBzaGlmdCIKLQoKZGlmZiAtLWdpdCBhL2dkYi1iejYyNzQzMi1sb29wLXN0YXRp Yy1zZWxmLWNsYXNzLnBhdGNoIGIvZ2RiLWJ6NjI3NDMyLWxvb3Atc3RhdGljLXNlbGYtY2xhc3Mu cGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhMDNmMTcuLjAwMDAwMDAKLS0t IGEvZ2RiLWJ6NjI3NDMyLWxvb3Atc3RhdGljLXNlbGYtY2xhc3MucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyODAgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTAtMDkvbXNnMDA0NDAuaHRtbAotU3ViamVjdDogW3BhdGNoXSBGaXggaW5maW5pdGUgbG9v cCBjcmFzaCBvbiBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzCi0KLUhpLAotCi1jbGFzcyBDIHsgc3Rh dGljIEMgczsgfTsgaXMgYSBwcm9ibGVtIGZvciBHREIgYXMgaXQgcmVmZXJlbmNlcyBpdHNlbGYg YW5kIGl0Ci1jYW4gY3Jhc2guICBEb3duc3RyZWFtIEJ1ZzoKLQlodHRwczovL2J1Z3ppbGxhLnJl ZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYyNzQzMgotCi0jMyAgMHgwMDAwMDAwMDAwNWIyY2M1 IGluIGdudXYzX3Bhc3NfYnlfcmVmZXJlbmNlICh0eXBlPTB4MTA0NGQzYzgpIGF0IC4uLy4uL2dk Yi9nbnUtdjMtYWJpLmM6ODQwCi0jNCAgMHgwMDAwMDAwMDAwNWIyY2M1IGluIGdudXYzX3Bhc3Nf YnlfcmVmZXJlbmNlICh0eXBlPTB4MTA0NGQzYzgpIGF0IC4uLy4uL2dkYi9nbnUtdjMtYWJpLmM6 ODQwCi1bLi4uXQotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0t ZmVkb3JhMTMtbGludXgtZ251LgotCi1GWUkgdGhlIC5jYyBmaWxlIGlzIG5vdCByZXByb2R1Y2li bGUgb24gLSBhbmQgb25seSBvbiAtIEZlZG9yYSAxNCBHQ0MsIGZpbGVkOgotCWh0dHBzOi8vYnVn emlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjM3MzE1Ci0KLUkgd291bGQgZXZlbiBj aGVjayBpdCBpbiBpbiBzb21lIHRpbWUuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAx MC0wOS0yNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0J Rml4IEdEQiBjcmFzaCBvbiBpbmZlcmlvciBjYWxscyB3aXRoIHNlbGYtcmVmZXJlbmNpbmcgY2xh c3Nlcy4KLQkqIGdudS12My1hYmkuYyAoZ251djNfcGFzc19ieV9yZWZlcmVuY2UpOiBEbyBub3Qg Y2FsbCBpdHNlbGYgb24gc3RhdGljCi0JbWVtYmVyIGZpZWxkcy4KLQotZ2RiL3Rlc3RzdWl0ZS8K LTIwMTAtMDktMjQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4K LQotCUZpeCBHREIgY3Jhc2ggb24gaW5mZXJpb3IgY2FsbHMgd2l0aCBzZWxmLXJlZmVyZW5jaW5n IGNsYXNzZXMuCi0JKiBnZGIuZHdhcmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1zdGF0aWMuZXhwOiBO ZXcgZmlsZS4KLQkqIGdkYi5kd2FyZjIvZHcyLWNwLWluZmNhbGwtcmVmLXN0YXRpYy1tYWluLmM6 IE5ldyBmaWxlLgotCSogZ2RiLmR3YXJmMi9kdzItY3AtaW5mY2FsbC1yZWYtc3RhdGljLlM6IE5l dyBmaWxlLgotCi0tLS0gYS9nZGIvZ251LXYzLWFiaS5jCi0rKysgYi9nZGIvZ251LXYzLWFiaS5j Ci1AQCAtODM1LDkgKzgzNSwxMCBAQCBnbnV2M19wYXNzX2J5X3JlZmVyZW5jZSAoc3RydWN0IHR5 cGUgKnR5cGUpCi0gICAgICBieSByZWZlcmVuY2UsIHNvIGRvZXMgdGhpcyBjbGFzcy4gIFNpbWls YXJseSBmb3IgbWVtYmVycywgd2hpY2gKLSAgICAgIGFyZSBjb25zdHJ1Y3RlZCB3aGVuZXZlciB0 aGlzIGNsYXNzIGlzLiAgV2UgZG8gbm90IG5lZWQgdG8gd29ycnkKLSAgICAgIGFib3V0IHJlY3Vy c2l2ZSBsb29wcyBoZXJlLCBzaW5jZSB3ZSBhcmUgb25seSBsb29raW5nIGF0IG1lbWJlcnMKLS0g ICAgIG9mIGNvbXBsZXRlIGNsYXNzIHR5cGUuICAqLwotKyAgICAgb2YgY29tcGxldGUgY2xhc3Mg dHlwZS4gIEFsc28gaWdub3JlIGFueSBzdGF0aWMgbWVtYmVycy4gICovCi0gICBmb3IgKGZpZWxk bnVtID0gMDsgZmllbGRudW0gPCBUWVBFX05GSUVMRFMgKHR5cGUpOyBmaWVsZG51bSsrKQotLSAg ICBpZiAoZ251djNfcGFzc19ieV9yZWZlcmVuY2UgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgZmll bGRudW0pKSkKLSsgICAgaWYgKFRZUEVfRklFTERfTE9DX0tJTkQgKHR5cGUsIGZpZWxkbnVtKSA9 PSBGSUVMRF9MT0NfS0lORF9CSVRQT1MKLSsgICAgICAgICYmIGdudXYzX3Bhc3NfYnlfcmVmZXJl bmNlIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbnVtKSkpCi0gICAgICAgcmV0dXJuIDE7 Ci0gCi0gICByZXR1cm4gMDsKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmR3YXJmMi9kdzItY3AtaW5mY2FsbC1yZWYtc3RhdGljLW1haW4uYwotQEAgLTAsMCArMSw1MSBA QAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0r Ci0rICAgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0r ICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgot KyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4g IFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxz LgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3Qs IHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKy8qIGNsYXNzIEMK LSsgICAgIHsKLSsgICAgIHB1YmxpYzoKLSsgICAgICAgc3RhdGljIEMgczsKLSsgICAgIH07Ci0r ICAgQyBDOjpzOwotKyAgIEMgZigpCi0rICAgewotKyAgICAgcmV0dXJuIEM6OnM7Ci0rICAgfSAg Ki8KLSsKLSthc20gKCIuZ2xvYmwgY3VfdGV4dF9zdGFydCIpOwotK2FzbSAoImN1X3RleHRfc3Rh cnQ6Iik7Ci0rCi0rYXNtICgiLmdsb2JsIGZfc3RhcnQiKTsKLSthc20gKCJmX3N0YXJ0OiIpOwot KwotK3ZvaWQKLStmICh2b2lkKQotK3sKLSt9Ci0rCi0rYXNtICgiLmdsb2JsIGZfZW5kIik7Ci0r YXNtICgiZl9lbmQ6Iik7Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmICgpOwotKyAg cmV0dXJuIDA7Ci0rfQotKwotK2FzbSAoIi5nbG9ibCBjdV90ZXh0X2VuZCIpOwotK2FzbSAoImN1 X3RleHRfZW5kOiIpOwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1jcC1pbmZjYWxsLXJlZi1zdGF0aWMuUwotQEAgLTAsMCArMSwxMTUgQEAKLSsvKiBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENv cHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsvKiBEZWJ1ZyBpbmZvcm1hdGlv biAqLwotKwotKwkuc2VjdGlvbiAuZGVidWdfaW5mbwotKy5MY3UxX2JlZ2luOgotKwkvKiBDVSBo ZWFkZXIgKi8KLSsJLjRieXRlCS5MY3UxX2VuZCAtIC5MY3UxX3N0YXJ0CQkvKiBMZW5ndGggb2Yg Q29tcGlsYXRpb24gVW5pdCAqLwotKy5MY3UxX3N0YXJ0OgotKwkuMmJ5dGUJMgkJCQkvKiBEV0FS RiBWZXJzaW9uICovCi0rCS40Ynl0ZQkuTGFiYnJldjFfYmVnaW4JCQkvKiBPZmZzZXQgaW50byBh YmJyZXYgc2VjdGlvbiAqLwotKwkuYnl0ZQk0CQkJCS8qIFBvaW50ZXIgc2l6ZSAqLwotKwotKwkv KiBDVSBkaWUgKi8KLSsJLnVsZWIxMjggMQkJCQkvKiBBYmJyZXY6IERXX1RBR19jb21waWxlX3Vu aXQgKi8KLSsJLjRieXRlCWN1X3RleHRfc3RhcnQJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRi eXRlCWN1X3RleHRfZW5kCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkuYXNjaWkJImZpbGUxLnR4 dFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmFzY2lpCSJHTlUgQyAzLjMuM1wwIgkJCS8qIERX X0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTQJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKERXX0xBTkdf Q19wbHVzX3BsdXMpICovCi0rCi0rLkx0eXBlX2NsYXNzOgotKwkudWxlYjEyOAkzCQkJLyogQWJi cmV2OiBEV19UQUdfY2xhc3NfdHlwZSAqLwotKwkuYXNjaWkJCSJDXDAiCQkJLyogRFdfQVRfbmFt ZSAqLwotKwotKwkudWxlYjEyOAk0CQkJLyogQWJicmV2OiBEV19UQUdfbWVtYmVyICovCi0rCS5h c2NpaQkJInNcMCIJCQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkx0eXBlX2NsYXNzLS5M Y3UxX2JlZ2luIC8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9kZWNsYXJh dGlvbiAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCi0rCS5ieXRlCQkw CQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIERXX1RBR19jbGFzc190eXBlICovCi0rCi0rCS51bGVi MTI4CTUJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5hc2NpaQkJImZcMCIJ CQkvKiBEV19BVF9uYW1lICovCi0rCS40Ynl0ZQkJLkx0eXBlX2NsYXNzLS5MY3UxX2JlZ2luIC8q IERXX0FUX3R5cGUgKi8KLSsJLjRieXRlCQlmX3N0YXJ0CQkJLyogRFdfQVRfbG93X3BjICovCi0r CS40Ynl0ZQkJZl9lbmQJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCi0rCS5ieXRlCQkwCQkJLyog RW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rCi0rLkxjdTFfZW5kOgotKwotKy8qIEFiYnJldiB0 YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwku dWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RB R19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVs ZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19G T1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVs ZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FU X25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIx MjgJMHgyNQkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZP Uk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19BVF9sYW5ndWFnZSAqLwotKwku dWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4 CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDIJCQkvKiBEV19UQUdfY2xhc3Nf dHlwZSAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS51bGViMTI4CTQJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEy OAkweGQJCQkvKiBEV19UQUdfbWVtYmVyICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVu ICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJ LyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHg0OQkJCS8qIERXX0FUX3R5cGUgKi8K LSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0ZPUk1fcmVmNCAqLwotKwkudWxlYjEyOAkweDNjCQkJ LyogRFdfQVRfZGVjbGFyYXRpb24gKi8KLSsJLnVsZWIxMjgJMHhjCQkJLyogRFdfRk9STV9mbGFn ICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkudWxlYjEyOAkw eGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNQkJCS8qIEFi YnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLwot KwkuYnl0ZQkJMAkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19B VF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGVi MTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JN X3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEy OAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hp Z2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0r Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIv ZHcyLWNwLWluZmNhbGwtcmVmLXN0YXRpYy5leHAKLUBAIC0wLDAgKzEsNDkgQEAKLSsjIENvcHly aWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9n cmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2Rp ZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo ZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkg bGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhl IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5U WTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJ VFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91 bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl Ci0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3Lmdu dS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIENoZWNrIHRoYXQgR0RCIGNhbiBjYWxsIEMrKyBmdW5j dGlvbnMgd2hvc2UgcGFyYW1ldGVycyBvciByZXR1cm4gdmFsdWVzIGhhdmUKLSsjIHR5cGUgY29u dGFpbmluZyBhIHN0YXRpYyBtZW1iZXIgb2YgdGhlIHNhbWUgdHlwZS4KLSsKLSsjIFN0aWxsIG5v IEMrKyBjb21waWxlciBpcyB1c2VkLgotK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250 aW51ZSB9Ci0rCi0rIyBUaGlzIHRlc3QgY2FuIG9ubHkgYmUgcnVuIG9uIHRhcmdldHMgd2hpY2gg c3VwcG9ydCBEV0FSRi0yIGFuZCB1c2UgZ2FzLgotKyMgRm9yIG5vdyBwaWNrIGEgc2FtcGxpbmcg b2YgbGlrZWx5IHRhcmdldHMuCi0raWYgeyFbaXN0YXJnZXQgKi0qLWxpbnV4Kl0KLSsgICAgJiYg IVtpc3RhcmdldCAqLSotZ251Kl0KLSsgICAgJiYgIVtpc3RhcmdldCAqLSotZWxmKl0KLSsgICAg JiYgIVtpc3RhcmdldCAqLSotb3BlbmJzZCpdCi0rICAgICYmICFbaXN0YXJnZXQgYXJtLSotZWFi aSpdCi0rICAgICYmICFbaXN0YXJnZXQgcG93ZXJwYy0qLWVhYmkqXX0gewotKyAgICByZXR1cm4g MCAgCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLWNwLWluZmNhbGwtcmVmLXN0YXRpYyIKLStp ZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBbbGlz dCAke3Rlc3RmaWxlfS1tYWluLmMgJHt0ZXN0ZmlsZX0uU10ge31dIH0gewotKyAgICByZXR1cm4g LTEKLSt9Ci0rCi0raWYgIVtydW50b19tYWluXSB0aGVuIHsKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotKyMgbWFpbiBpcyBub3QgcHJvdmlkZWQgYnkgRFdBUkYuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0 ICJzZXQgbGFuZ3VhZ2UgYysrIgotKwotKyMgVGhlcmUgYXJlIG5vIG1hbmdsZWQgbmFtZXMgaW4g RFdBUkYgdG8gc3VnZ2VzdCB0aGUgdjMgQUJJLgotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGNw LWFiaSBnbnUtdjMiCi0rCi0rIyBHREIgY291bGQgY3Jhc2guICBUaGVyZSBpcyBubyBEV19BVF9s b2NhdGlvbiBzbyBpdCBpcyA8b3B0aW1pemVkIG91dD4uCi0rZ2RiX3Rlc3QgInAgZigpIiB7ID0g e3N0YXRpYyBzID0gPG9wdGltaXplZCBvdXQ+fX0KLQoKZGlmZiAtLWdpdCBhL2dkYi1iejYzMTE1 OC1jeHgtdGhpcy1sb29rdXAucGF0Y2ggYi9nZGItYno2MzExNTgtY3h4LXRoaXMtbG9va3VwLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDdhZTA1Li4wMDAwMDAwCi0tLSBh L2dkYi1iejYzMTE1OC1jeHgtdGhpcy1sb29rdXAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwx NCArMCwwIEBACi1odHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTYz MTE1OAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAy MjkuaHRtbAotU3ViamVjdDogW3BhdGNoXSBQUiAxMTk5MiAiUmVncmVzc2lvbjogQysrIHRoaXMg c2NvcGUgc29tZXRpbWVzIGRvZXMgbm90IHdvcmsiCi0KLS0tLSBnZGItNy4yL2dkYi9jLWV4cC55 Lm9yaWcJMjAxMC0wOC0xOSAxNzo1MDowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dk Yi9jLWV4cC55CTIwMTAtMDktMTEgMjA6MzA6MTUuMDAwMDAwMDAwICswMjAwCi1AQCAtMjQyMiw2 ICsyNDIyLDcgQEAgY2xhc3NpZnlfbmFtZSAoc3RydWN0IGJsb2NrICpibG9jaykKLSAKLSAgIGlm IChzeW0gPT0gTlVMTAotICAgICAgICYmIHBhcnNlX2xhbmd1YWdlLT5sYV9sYW5ndWFnZSA9PSBs YW5ndWFnZV9jcGx1cwotKyAgICAgICYmICFpc19hX2ZpZWxkX29mX3RoaXMKLSAgICAgICAmJiAh bG9va3VwX21pbmltYWxfc3ltYm9sIChjb3B5LCBOVUxMLCBOVUxMKSkKLSAgICAgcmV0dXJuIFVO S05PV05fQ1BQX05BTUU7Ci0gCgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjMxNTc1LWdkYi1pbmRleC1u b2JpdHMucGF0Y2ggYi9nZGItYno2MzE1NzUtZ2RiLWluZGV4LW5vYml0cy5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA3YTYxMy4uMDAwMDAwMAotLS0gYS9nZGItYno2MzE1 NzUtZ2RiLWluZGV4LW5vYml0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAK LWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMTgzLmh0 bWwKLVN1YmplY3Q6IFtwYXRjaF0gLmdkYl9pbmRleDogRG8gbm90IGNyYXNoIG9uIE5PQklUUwot Ci1IaSwKLQotZWxmdXRpbHMtMC4xNDggc3RpbGwgZG8gbm90IGNvbnRhaW4gcGF0Y2ggb2YgaXRz IEdJVAotODA0ZTljYTRkNjQ0ZTY0YTYxMjUzMDdjYmYwYTBiODk0NzdkNzYxMSB3aGVyZSB0aGUg LmdkYl9pbmRleCBzZWN0aW9uIGhhcyBiZWVuCi1hbHNvIHNwbGl0IGludG8gdGhlIHNlcGFyYXRl IGRlYnVnIGluZm8gZmlsZS4KLQotRHVlIHRvIGl0IGJpbmFyaWVzIHNwbGl0IHVzaW5nIGVsZnV0 aWxzLTAuMTQ4IGNvbnRhaW4KLSAgWzM4XSAuZ2RiX2luZGV4ICAgICAgICBOT0JJVFMgICAgICAg ICAgIDAwMDAwMDAwMDAwMDAwMDAgIDAwMDAzMzhjCi1pbnN0ZWFkIG9mIGV4cGVjdGVkCi0gIFsy OF0gLmdkYl9pbmRleCAgICAgICAgUFJPR0JJVFMgICAgICAgICAwMDAwMDAwMDAwMDAwMDAwICAw MDAwMjExYwotCi1hbmQgZHVlIHRvIGl0IEdEQiB3aGlsZSByZWFkaW5nIHRoZSBmaWxlIGNhbiBl cnJvcigpIGJ5OgotUmVhZGluZyBzeW1ib2xzIGZyb20geC5kZWJ1Zy4uLkR3YXJmIEVycm9yOiBD YW4ndCByZWFkIERXQVJGIGRhdGEgZnJvbSAneC5kZWJ1ZycKLQotd2hpY2ggc2hvdWxkIG5vdCBi ZSBmYXRhbCBidXQgZHVlIHRvIHNvbWUgb3RoZXIgYnVncyB0aGVyZWluIGl0IGNhbiBjcmFzaCBH REIuCi0KLVRoZSB3cm9uZyBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUgaXMgZm9yIGV4YW1wbGU6 Ci1odHRwOi8va29qaXBrZ3MuZmVkb3JhcHJvamVjdC5vcmcvcGFja2FnZXMvZ2xpYmMvMi4xMi45 MC8xMC94ODZfNjQvZ2xpYmMtZGVidWdpbmZvLTIuMTIuOTAtMTAueDg2XzY0LnJwbQotL3Vzci9s aWIvZGVidWcvbGliNjQvbGlidXRpbC0yLjEyLjkwLnNvLmRlYnVnCi0KLU9LIHRvIGNoZWNrLWlu PwotCi1JdCBkb2VzIG5vdCBhdHRlbXB0IHRvIHVzZSAuZ2RiX2luZGV4IGZyb20gdGhlIG1haW4g YmluYXJ5LCBpdCB3aWxsIGp1c3QKLWRpc2FibGUgLmdkYl9pbmRleCB1c2FnZSBvbiB0aGVzZSBi aW5hcmllcy4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwv Z2RiLWN2cy8yMDEwLTA5L21zZzAwMDYyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIw MTAvMDkvMDggMTk6MDk6NDIJMS4xMjE2MgotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDkv MDggMTk6NDk6MjgJMS4xMjE2MwotIyMgLTEsMyArMSw3IEBACi0rMjAxMC0wOS0wOCAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGR3YXJmMnJlYWQu YyAoZHdhcmYyX3JlYWRfaW5kZXgpOiBSZXR1cm4gb24gbm8gU0VDX0hBU19DT05URU5UUy4KLSsK LSAyMDEwLTA5LTA4ICBEYW5pZWwgSmFjb2Jvd2l0eiAgPGRhbkBjb2Rlc291cmNlcnkuY29tPgot IAotIAkqIGR3YXJmMnJlYWQuYyAocmVhZF9zdHJ1Y3R1cmVfdHlwZSk6IE1vdmUgcHJvY2Vzc2lu ZyBvZgotLS0tIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTAvMDkvMDggMTk6MDk6NDIJMS40NTIK LSsrKyBzcmMvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLzA5LzA4IDE5OjQ5OjI4CTEuNDUzCi1AQCAt MTkwNCw2ICsxOTA0LDEzIEBACi0gICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXgu YXNlY3Rpb24gPT0gTlVMTAotICAgICAgIHx8IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4 LnNpemUgPT0gMCkKLSAgICAgcmV0dXJuIDA7Ci0rCi0rICAvKiBPbGRlciBlbGZ1dGlscyBzdHJp cCB2ZXJzaW9ucyBjb3VsZCBrZWVwIHRoZSBzZWN0aW9uIGluIHRoZSBtYWluCi0rICAgICBleGVj dXRhYmxlIHdoaWxlIHNwbGl0dGluZyBpdCBmb3IgdGhlIHNlcGFyYXRlIGRlYnVnIGluZm8gZmls ZS4gICovCi0rICBpZiAoKGJmZF9nZXRfZmlsZV9mbGFncyAoZHdhcmYyX3Blcl9vYmpmaWxlLT5n ZGJfaW5kZXguYXNlY3Rpb24pCi0rICAgICAgICYgU0VDX0hBU19DT05URU5UUykgPT0gMCkKLSsg ICAgcmV0dXJuIDA7Ci0rCi0gICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAmZHdhcmYy X3Blcl9vYmpmaWxlLT5nZGJfaW5kZXgpOwotIAotICAgYWRkciA9IGR3YXJmMl9wZXJfb2JqZmls ZS0+Z2RiX2luZGV4LmJ1ZmZlcjsKCmRpZmYgLS1naXQgYS9nZGItYno2MzQ2NjAtZ2RicHktbG9h ZC1vbi1hdHRhY2gucGF0Y2ggYi9nZGItYno2MzQ2NjAtZ2RicHktbG9hZC1vbi1hdHRhY2gucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyMjM3NzYuLjAwMDAwMDAKLS0tIGEv Z2RiLWJ6NjM0NjYwLWdkYnB5LWxvYWQtb24tYXR0YWNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAg LTEsNjEgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAt MDkvbXNnMDAzNjUuaHRtbAotU3ViamVjdDogW3BhdGNoXSBweXRob246IGxvYWQgKi1nZGIucHkg Zm9yIHNobGlicyBkdXJpbmcgYXR0YWNoCi0KLUhpLAotCi1jdXJyZW50bHkgaWYgeW91IGF0dGFj aCB0byBvciBsb2FkIGEgY29yZSBmaWxlIGZvciBleGVjdXRhYmxlLCBpdHMgLWdkYi5weQotc2Ny aXB0IGlzIGxvYWRlZC4gIEJ1dCBub25lIC1nZGIucHkgZm9yIHRoZSBzaGFyZWQgbGlicmFyaWVz LgotCi1TcGF3bmVkIG9yIHdpdGggdGhlIGZpeCAobGlic3RkYysrLWdkYi5weSk6Ci0jMSAgMHgw MDAwMDAwMDAwNDAwN2I1IGluIGYgKHM9ImEiKSBhdCAxLkM6NAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBeIGlzIHN0ZDo6c3RyaW5nCi0KLUF0dGFjaGVkL2NvcmUgd2l0aG91dCB0aGUg Zml4OgotIzEgIDB4MDAwMDAwMDAwMDQwMDdiNSBpbiBmIChzPS4uLikgYXQgMS5DOjQKLQotTm8g cmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2ODZ9LWZlZG9yYTEzLWxpbnV4LWdu dS4KLQotTW9zdGx5IG9idmlvdXMsIEkgd2lsbCBjaGVjayBpdCBpbiBsYXRlci4KLQotCi1UaGFu a3MsCi1KYW4KLQotCi1nZGIvCi0yMDEwLTA5LTIyICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIG1haW4uYzogSW5jbHVkZSBvYmpmaWxlcy5oLgotCShj YXB0dXJlZF9tYWluKTogTmV3IHZhcmlhYmxlIG9iamZpbGUuICBDYWxsCi0JbG9hZF9hdXRvX3Nj cmlwdHNfZm9yX29iamZpbGUgZm9yIEFMTF9PQkpGSUxFUy4KLQotLS0tIC4vZ2RiL21haW4uYwky MDEwLTA5LTIyIDEwOjUxOjMyLjAwMDAwMDAwMCArMDIwMAotKysrIC4vZ2RiL21haW4uYwkyMDEw LTA5LTIyIDEwOjUwOjQ0LjAwMDAwMDAwMCArMDIwMAotQEAgLTQzLDYgKzQzLDcgQEAKLSAjaW5j bHVkZSAic291cmNlLmgiCi0gI2luY2x1ZGUgImNsaS9jbGktY21kcy5oIgotICNpbmNsdWRlICJw eXRob24vcHl0aG9uLmgiCi0rI2luY2x1ZGUgIm9iamZpbGVzLmgiCi0gCi0gLyogVGhlIHNlbGVj dGVkIGludGVycHJldGVyLiAgVGhpcyB3aWxsIGJlIHVzZWQgYXMgYSBzZXQgY29tbWFuZAotICAg IHZhcmlhYmxlLCBzbyBpdCBzaG91bGQgYWx3YXlzIGJlIG1hbGxvYydlZCAtIHNpbmNlCi1AQCAt MzIzLDYgKzMyNCw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCi0gCi0gICBpbnQgaTsK LSAgIGludCBzYXZlX2F1dG9fbG9hZDsKLSsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotIAot ICAgc3RydWN0IGNsZWFudXAgKnByZV9zdGF0X2NoYWluID0gbWFrZV9jb21tYW5kX3N0YXRzX2Ns ZWFudXAgKDApOwotIAotQEAgLTk1Nyw4ICs5NTksOCBAQCBDYW4ndCBhdHRhY2ggdG8gcHJvY2Vz cyBhbmQgc3BlY2lmeSBhIGNvCi0gICAgICBXZSB3YWl0IHVudGlsIG5vdyBiZWNhdXNlIGl0IGlz IGNvbW1vbiB0byBhZGQgdG8gdGhlIHNvdXJjZSBzZWFyY2gKLSAgICAgIHBhdGggaW4gbG9jYWxf Z2RiaW5pdC4gICovCi0gICBnZGJweV9nbG9iYWxfYXV0b19sb2FkID0gc2F2ZV9hdXRvX2xvYWQ7 Ci0tICBpZiAoc3ltZmlsZV9vYmpmaWxlICE9IE5VTEwpCi0tICAgIGxvYWRfYXV0b19zY3JpcHRz X2Zvcl9vYmpmaWxlIChzeW1maWxlX29iamZpbGUpOwotKyAgQUxMX09CSkZJTEVTIChvYmpmaWxl KQotKyAgICBsb2FkX2F1dG9fc2NyaXB0c19mb3Jfb2JqZmlsZSAob2JqZmlsZSk7Ci0gCi0gICBm b3IgKGkgPSAwOyBpIDwgbmNtZDsgaSsrKQotICAgICB7Ci0KCmRpZmYgLS1naXQgYS9nZGItYno2 Mzc3NzAtaWZ1bmMtd2F0Y2hwb2ludC1kZWxldGUucGF0Y2ggYi9nZGItYno2Mzc3NzAtaWZ1bmMt d2F0Y2hwb2ludC1kZWxldGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3 MDE1ZGQuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjM3NzcwLWlmdW5jLXdhdGNocG9pbnQtZGVsZXRl LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLWNvbW1pdCAzMGZlZGFkZjIy NGE4YzExOTU3NWZjYzhhNmNlZDUxZjBkNGFlZTlmCi1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBXZWQgU2VwIDI5IDAxOjI1OjM5IDIw MTAgKzAyMDAKLQotICAgIEZpeCB0aGUgY3Jhc2guCi0KLWNvbW1pdCBkMTAxY2U1OTdmMmQ2MTQz ZTlmMDIzYTQ0NDQzNTJiY2VmZmIyNjc5Ci1BdXRob3I6IEphbiBLcmF0b2NodmlsIDxqYW4ua3Jh dG9jaHZpbEByZWRoYXQuY29tPgotRGF0ZTogICBXZWQgU2VwIDI5IDAwOjQyOjM3IDIwMTAgKzAy MDAKLQotICAgIE5ldyB0ZXN0Y2FzZSBmb3I6IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9z aG93X2J1Zy5jZ2k/aWQ9NjM3NzcwCi0KLWRpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIv Z2RiL2JyZWFrcG9pbnQuYwotaW5kZXggZGU1MTIzMS4uMThiNzg2OCAxMDA2NDQKLS0tLSBhL2dk Yi9icmVha3BvaW50LmMKLSsrKyBiL2dkYi9icmVha3BvaW50LmMKLUBAIC0xMDU2MCw2ICsxMDU2 MCwxMSBAQCBtYXBfYnJlYWtwb2ludF9udW1iZXJzIChjaGFyICphcmdzLCB2b2lkICgqZnVuY3Rp b24pIChzdHJ1Y3QgYnJlYWtwb2ludCAqLAotIAkJICAgIC8qIEZVTkNUSU9OIGNhbiBiZSBhbHNv IGRlbGV0ZV9icmVha3BvaW50LiAgKi8KLSAJCSAgICBuZXh0X3JlbGF0ZWRfYiA9IHJlbGF0ZWRf YnJlYWtwb2ludC0+cmVsYXRlZF9icmVha3BvaW50OwotIAkJICAgIGZ1bmN0aW9uIChyZWxhdGVk X2JyZWFrcG9pbnQsIGRhdGEpOwotKwotKwkJICAgIC8qIEZvciBkZWxldGVfYnJlYWtwb2ludCBv ZiB0aGUgbGFzdCBlbnRyeSBvZiB0aGUgcmluZyB3ZQotKwkJICAgICAgIHdlcmUgdHJhdmVyc2lu ZyB3ZSB3b3VsZCBuZXZlciBnZXQgYmFjayB0byBCLiAgKi8KLSsJCSAgICBpZiAobmV4dF9yZWxh dGVkX2IgPT0gcmVsYXRlZF9icmVha3BvaW50KQotKwkJICAgICAgYnJlYWs7Ci0gCQkgICAgcmVs YXRlZF9icmVha3BvaW50ID0gbmV4dF9yZWxhdGVkX2I7Ci0gCQkgIH0KLSAJCXdoaWxlIChyZWxh dGVkX2JyZWFrcG9pbnQgIT0gYik7Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS93YXRjaHBvaW50LWRlbGV0ZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50 LWRlbGV0ZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMDMxZWY5Mgot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRl bGV0ZS5jCi1AQCAtMCwwICsxLDMzIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdE QiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsg eW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRoZSB0 ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0r ICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKwot KyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4gICovCi0rCi0rdm9pZAotK2Z1bmMgKHZvaWQpCi0rewotKyAgdm9sYXRpbGUgaW50IHggPSAw OwotKwotKyAgeCsrOwkvKiBicmVhay1oZXJlICovCi0rICB4Kys7Ci0rfQotKwotK2ludAotK21h aW4gKHZvaWQpCi0rewotKyAgZnVuYyAoKTsKLSsKLSsgIHJldHVybiAwOwotK30KLWRpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtZGVsZXRlLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvd2F0Y2hwb2ludC1kZWxldGUuZXhwCi1uZXcgZmlsZSBtb2RlIDEw MDY0NAotaW5kZXggMDAwMDAwMC4uNDViYzY1MAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS93YXRjaHBvaW50LWRlbGV0ZS5leHAKLUBAIC0wLDAgKzEsMzggQEAK LSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0 aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0 ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsj IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRw Oi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgIndhdGNocG9pbnQt ZGVsZXRlIgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmMKLStzZXQgYmluZmlsZSAke29iamRp cn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9Ci0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAk e3Rlc3RmaWxlfS5leHAgJHt0ZXN0ZmlsZX0gJHtzcmNmaWxlfV0gfSB7Ci0rICAgIHVudGVzdGVk ICR7dGVzdGZpbGV9LmV4cAotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyBJdCBpcyBtb3JlIGNv bXBhdGlibGUgdGhpcyB3YXkuCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0ICJzZXQgY2FuLXVzZS1ody13 YXRjaHBvaW50cyAwIgotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEKLSt9 Ci0rCi0rIyBFbnN1cmUgdGhlcmUgaXMgYSBwYXJlbnQgZnJhbWUgdG8gY3JlYXRlIHJlbGF0ZWQg YnBfd2F0Y2hwb2ludF9zY29wZS4KLStnZGJfYnJlYWtwb2ludCBbZ2RiX2dldF9saW5lX251bWJl ciAiYnJlYWstaGVyZSJdCi0rZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgImJyZWFrLWhlcmUi ICIuKiBicmVhay1oZXJlIC4qIgotKwotK2dkYl90ZXN0ICJ3YXRjaCB4IiB7V2F0Y2hwb2ludCBb MC05XSs6IHh9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0cHV0IHtkZWxldGUgJGJwbnVtfQoKZGlmZiAt LWdpdCBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFvZjMucGF0Y2ggYi9nZGItYno2NDU3NzMt aWZvcnQtY2FzZS0xb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzlm ODhkLi4wMDAwMDAwCi0tLSBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTFvZjMucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dk Yi1wYXRjaGVzLzIwMTAtMTEvbXNnMDAwODQuaHRtbAotU3ViamVjdDogW25ldyB0ZXN0Y2FzZV0g UmVncmVzc2lvbiA3LjEtPjcuMiBmb3IgaUZvcnQgIFtSZTogW1JGQS12Ml0gZHdhcmYgZGVidWcg Zm9ybWF0OiBTdXBwb3J0IERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciBhdHRyaWJ1dGVdCi0KLU9u IEZyaSwgMjEgTWF5IDIwMTAgMjI6NDU6MzUgKzAyMDAsIFBpZXJyZSBNdWxsZXIgd3JvdGU6Ci0+ ICAgVGhhbmtzLCBJIGNvbW1pdHRlZCB0aGUgcGF0Y2guCi0KLWNvbW1pdCA1NzBkNWQwMWRlMzVl ZmZhZGEyNzdhNjk1NTJjMDkwM2E0OTI4MjQxCi1BdXRob3I6IFBpZXJyZSBNdWxsZXIgPG11bGxl ckBpY3MudS1zdHJhc2JnLmZyPgotRGF0ZTogICBGcmkgTWF5IDIxIDIwOjQ1OjE4IDIwMTAgKzAw MDAKLQotCSogZHdhcmYycmVhZC5jIChuZXdfc3ltYm9sKTogSGFuZGxlIERXX0FUX3ZhcmlhYmxl X3BhcmFtZXRlcgotCWF0dHJpYnV0ZS4KLQotCi1QbGVhc2UgcmV2ZXJ0IHRoaXMgcGF0Y2guCi0K LT5Gcm9tIHRoZSBEV0FSRi00IGRlc2NyaXB0aW9uIG9mIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRl ciBJIGRvIG5vdCB0aGluayBpdAotY2hhbmdlcyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIG1lYW5pbmcg aW4gYW55IHdheS4gIEl0IGp1c3Qgc3RhdGVzIHdoaWNoIGRhdGEgY2FuCi1iZSBtb2RpZmllZCBi eSB3aG9tLiAgSSBkbyBub3QgdGhpbmsgdGhpcyBpcyB1c2VmdWwgZm9yIEdEQiBpbiBhbnkgd2F5 LgotCi0KLT4gPiBJIHRoaW5rIGl0IHdvdWxkIGJlIGltcHJvdmVkIGJ5IGEgdGVzdCBjYXNlLCBi dXQgdGhhdCBpcyB1cCB0byB5b3UuCi0+IAotPiAgIFRoaXMgdGVzdCB3b3VsZCBiZSBwYXNjYWwg c3BlY2lmaWMgYW55aG93LAotCi1JIGJlbGlldmUgdGhlIFBhc2NhbCBjb21waWxlciBzaG91bGQg Z2VuZXJhdGUgZGlmZmVyZW50IGRlYnVnIGluZm8uICBGb3IgdGhlCi1gdmFyJyBrZXl3b3JkIHlv dSBjYW4gZWl0aGVyIChhKSB1c2UgRFdfVEFHX3JlZmVyZW5jZV90eXBlIGFuZCBwb2ludAotRFdf QVRfbG9jYXRpb24gYXQgdGhlIHBvaW50ZXIgb3IgKGIpIHVzZSBEV19PUF9kZXJlZiAoYXMgaUZv cnQgZG9lcykgb24gdGhlCi1wYXNzZWQgcG9pbnRlciBhbmQgcG9pbnQgRFdfQVRfbG9jYXRpb24g YXQgdGhlIHZhbHVlIGl0c2VsZi4KLURXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciB3b3VsZCBiZSB0 cnVlIG9ubHkgZm9yIHRoZSAoYSkgY2hvaWNlLgotCi0xCSAgc3Vicm91dGluZSBmIChpKQotMgkg IGludGVnZXIgaQotMwkgIGkgPSAyCi00CSAgZW5kCi01CSAgcHJvZ3JhbSB2YXJwYXJhbQotNgkg IGludGVnZXIgbQotNwkgIG0gPSAxCi04CSAgY2FsbCBmIChtKQotOQkgIHdyaXRlKCosKikgbQot MTAJICBlbmQKLQotZm9yIGlGb3J0IDExLjEgMjAxMDA4MDYgaXQgcmVncmVzc2VkIHRoaXMgY29k ZSwgR0RCLTcuMSBkaXNwbGF5ZWQ6Ci0KLUJyZWFrcG9pbnQgMSwgZiAoaT0xKSBhdCB2YXJwYXJh bS5mOTA6MwotMwkgIGkgPSAyCi0oZ2RiKSBwIGkKLSQxID0gMQotCi13aGlsZSBHREItNy4yIGRp c3BsYXlzOgotCi1CcmVha3BvaW50IDIsIGYgKGk9QDB4MSkgYXQgdmFycGFyYW0uZjkwOjMKLTMJ ICBpID0gMgotKGdkYikgcCBpCi0kMSA9IChSRUYgVE8gLT4gKCBJTlRFR0VSKDQpICkpIEAweDE6 IDxlcnJvciByZWFkaW5nIHZhcmlhYmxlPgotCi0obm90ZSB0aGF0IGAweDEnIEdEQiBjb25zaWRl cnMgYXMgYW4gYWRkcmVzcyBoZXJlKQotCi0KLQotQSBuZXcgdGVzdGNhc2UgZm9yIHRoZSBpRm9y dCB1c2FnZSBjYXNlIGlzIGF0dGFjaGVkLgotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4 Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCi0KLUkgd2lsbCB0aGVu IGNoZWNrLWluIHRoZSB0ZXN0Y2FzZSBvciB5b3UgY2FuIG9yIHNvLgotCi0KLVJlZ2FyZHMsCi1K YW4KLQotCi1nZGIvCi0yMDEwLTExLTA0ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+Ci0KLQlSZXZlcnQ6Ci0JMjAxMC0wNS0yMSAgUGllcnJlIE11bGxlciAgPG11 bGxlckBpY3MudS1zdHJhc2JnLmZyPgotCSogZHdhcmYycmVhZC5jIChuZXdfc3ltYm9sKTogSGFu ZGxlIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlcgotCWF0dHJpYnV0ZS4KLQotZ2RiL3Rlc3RzdWl0 ZS8KLTIwMTAtMTEtMDQgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLQotCSogZHcyLWlmb3J0LXBhcmFtZXRlci1kZWJ1Zy5TOiBOZXcgZmlsZS4KLQkqIGR3Mi1p Zm9ydC1wYXJhbWV0ZXIuYzogTmV3IGZpbGUuCi0JKiBkdzItaWZvcnQtcGFyYW1ldGVyLmV4cDog TmV3IGZpbGUuCi0KLUluZGV4OiBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTExLTA3IDA1OjI0OjAxLjAw MDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTExLTA3IDA1 OjM2OjM0LjAwMDAwMDAwMCArMDEwMAotQEAgLTEwNDc0LDE0ICsxMDQ3NCw2IEBAIG5ld19zeW1i b2wgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QKLSAJICAgIHsKLSAJICAgICAgZHdhcmYy X2NvbnN0X3ZhbHVlIChhdHRyLCBzeW0sIGN1KTsKLSAJICAgIH0KLS0JICBhdHRyID0gZHdhcmYy X2F0dHIgKGRpZSwgRFdfQVRfdmFyaWFibGVfcGFyYW1ldGVyLCBjdSk7Ci0tCSAgaWYgKGF0dHIg JiYgRFdfVU5TTkQgKGF0dHIpKQotLQkgICAgewotLQkgICAgICBzdHJ1Y3QgdHlwZSAqcmVmX3R5 cGU7Ci0tCi0tCSAgICAgIHJlZl90eXBlID0gbG9va3VwX3JlZmVyZW5jZV90eXBlIChTWU1CT0xf VFlQRSAoc3ltKSk7Ci0tCSAgICAgIFNZTUJPTF9UWVBFIChzeW0pID0gcmVmX3R5cGU7Ci0tCSAg ICB9Ci0gCi0gCSAgYWRkX3N5bWJvbF90b19saXN0IChzeW0sIGN1LT5saXN0X2luX3Njb3BlKTsK LSAJICBicmVhazsKLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzIt aWZvcnQtcGFyYW1ldGVyLWRlYnVnLlMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItaWZvcnQtcGFyYW1ldGVyLWRlYnVnLlMJMjAxMC0xMS0wNyAwNTozNjox OC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMTIyIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBp cyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAxMCBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJl ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVi bGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2 ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0 aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9y IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsg ICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4gICovCi0rCi0rCS5zZWN0aW9uIC5kZWJ1Z19pbmZvCi0rLkxjdTFfYmVn aW46Ci0rCS8qIENVIGhlYWRlciAqLwotKwkuNGJ5dGUJLkxjdTFfZW5kIC0gLkxjdTFfc3RhcnQJ CS8qIExlbmd0aCBvZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTFfc3RhcnQ6Ci0rCS4yYnl0 ZQkyCQkJCS8qIERXQVJGIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8q IE9mZnNldCBpbnRvIGFiYnJldiBzZWN0aW9uICovCi0rCS5ieXRlCTQJCQkJLyogUG9pbnRlciBz aXplICovCi0rCi0rCS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdf VEFHX2NvbXBpbGVfdW5pdCAqLwotKwkuYXNjaWkJImZpbGUxLnR4dFwwIgkJCS8qIERXX0FUX25h bWUgKi8KLSsJLmFzY2lpCSJHTlUgQyAzLjMuM1wwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0r CS5ieXRlCTEJCQkJLyogRFdfQVRfbGFuZ3VhZ2UgKEMpICovCi0rCS40Ynl0ZQlmdW5jCQkJCS8q IERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJbWFpbgkJCQkvKiBEV19BVF9oaWdoX3BjICovCi0r Ci0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRl CQkxCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsJLmFzY2lpCQkiZnVuY1wwIgkJLyogRFdfQVRf bmFtZSAqLwotKwkuNGJ5dGUJCWZ1bmMJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLjRieXRlCQlt YWluCQkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwotKwkudWxlYjEyOAkzCQkJLyogQWJicmV2OiBE V19UQUdfZm9ybWFsX3BhcmFtZXRlciAqLwotKwkuYXNjaWkJCSJwYXJhbVwwIgkJLyogRFdfQVRf bmFtZSAqLwotKwkuYnl0ZQkJMQkJCS8qIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRlciAqLwotKwku NGJ5dGUJCS5MdHlwZV9pbnQgLSAuTGN1MV9iZWdpbgkvKiBEV19BVF90eXBlICovCi0rCS5ieXRl CQkyZiAtIDFmCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsxOgkuYnl0ZQkJMwkJCS8qICAgRFdf T1BfYWRkciAqLwotKwkuNGJ5dGUJCXB0cgkJCS8qICAgPGFkZHI+ICovCi0rCS5ieXRlCQkweDYJ CQkvKiAgIERXX09QX2RlcmVmICovCi0rMjoKLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2YgY2hp bGRyZW4gb2YgZnVuYyAqLwotKwotKy5MdHlwZV9pbnQ6Ci0rCS51bGViMTI4CTQJCQkvKiBBYmJy ZXY6IERXX1RBR19iYXNlX3R5cGUgKi8KLSsJLmFzY2lpCQkiaW50XDAiCQkJLyogRFdfQVRfbmFt ZSAqLwotKwkuYnl0ZQkJNAkJCS8qIERXX0FUX2J5dGVfc2l6ZSAqLwotKwkuYnl0ZQkJNQkJCS8q IERXX0FUX2VuY29kaW5nICovCi0rCi0rCS5ieXRlCQkwCQkJLyogRW5kIG9mIGNoaWxkcmVuIG9m IENVICovCi0rLkxjdTFfZW5kOgotKwotKy8qIEFiYnJldiB0YWJsZSAqLwotKwkuc2VjdGlvbiAu ZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgotKwkudWxlYjEyOAkxCQkJLyogQWJicmV2 IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX1RBR19jb21waWxlX3VuaXQgKi8KLSsJ LmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzCQkJLyogRFdfQVRf bmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEy OAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9S TV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8qIERXX0FUX2xhbmd1YWdlICovCi0rCS51 bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERX X0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVs ZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdf Rk9STV9hZGRyICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkw eDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGViMTI4CTIJCQkvKiBBYmJyZXYgY29kZSAq LwotKwkudWxlYjEyOAkweDJlCQkJLyogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTEJ CQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzZgkJCS8qIERXX0FUX2V4dGVybmFs ICovCi0rCS51bGViMTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDMJ CQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICov Ci0rCS51bGViMTI4CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJ LyogRFdfRk9STV9hZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICov Ci0rCS51bGViMTI4CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxl YjEyOAkzCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgwNQkJCS8qIERXX1RBR19m b3JtYWxfcGFyYW1ldGVyICovCi0rCS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51 bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9S TV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHg0YgkJCS8qIERXX0FUX3ZhcmlhYmxlX3BhcmFtZXRl ciAqLwotKwkudWxlYjEyOAkweGIJCQkvKiBEV19GT1JNX2RhdGExICovCi0rCS51bGViMTI4CTB4 NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JNX3JlZjQg Ki8KLSsJLnVsZWIxMjgJMHgyCQkJLyogRFdfQVRfbG9jYXRpb24gKi8KLSsJLnVsZWIxMjgJMHhh CQkJLyogRFdfRk9STV9ibG9jazEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8K LSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLnVsZWIxMjgJNAkJCS8qIEFi YnJldiBjb2RlICovCi0rCS51bGViMTI4CTB4MjQJCQkvKiBEV19UQUdfYmFzZV90eXBlICovCi0r CS5ieXRlCQkwCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51bGViMTI4CTB4MwkJCS8qIERXX0FU X25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIx MjgJMHhiCQkJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZP Uk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgzZQkJCS8qIERXX0FUX2VuY29kaW5nICovCi0rCS51 bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1p bmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsKLSsJLmJ5dGUJCTB4 MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLUlu ZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWZvcnQtcGFyYW1ldGVy LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItaWZvcnQt cGFyYW1ldGVyLmMJMjAxMC0xMS0wNyAwNTozNjoxOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAg KzEsMzEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVn Z2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp YnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg R2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAg IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFt IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAg YnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFu dHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV UlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg ZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLStpbnQg dmFsdWUgPSAweGRlYWRmMDBkOwotK2ludCAqcHRyID0gJnZhbHVlOwotKwotK3ZvaWQKLStmdW5j ICh2b2lkKQotK3sKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0rICBmdW5jICgpOwot KyAgcmV0dXJuIDA7Ci0rfQotSW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYy L2R3Mi1pZm9ydC1wYXJhbWV0ZXIuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRl L2dkYi5kd2FyZjIvZHcyLWlmb3J0LXBhcmFtZXRlci5leHAJMjAxMC0xMS0wNyAwNTozNjoxOC4w MDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsNDAgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUg U29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29m dHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVy IHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVk IGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9m IHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl ZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRo IHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMv Pi4KLSsKLSsjIFZlcmlmeSBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIgZG9lcyBub3QgbW9kaWZ5 IHRoZSBkYXRhIHN0cnVjdHVyZXMgbWVhbmluZwotKyMgZm9yIEdEQiwgYXMgYmVpbmcgdXNlZCBi eSBpRm9ydC4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGlj aCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0rIyBGb3Igbm93IHBpY2sgYSBzYW1wbGlu ZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3RhcmdldCAqLSotbGludXgqXQotKyAgICAm JiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1lbGYqXQotKyAg ICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsgICAgJiYgIVtpc3RhcmdldCBhcm0tKi1l YWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBjLSotZWFiaSpdfSB7Ci0rICAgIHJldHVy biAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLWlmb3J0LXBhcmFtZXRlciIKLSsKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSBbbGlzdCAk e3Rlc3RmaWxlfS5jICR7dGVzdGZpbGV9LWRlYnVnLlNdIHtub2RlYnVnfV0gfSB7Ci0rICAgIHJl dHVybiAtMQotK30KLSsKLStpZiAhW3J1bnRvIGZ1bmNdIHsKLSsgICAgcmV0dXJuIC0xCi0rfQot KwotK2dkYl90ZXN0ICJwL3ggcGFyYW0iICIgPSAweGRlYWRmMDBkIgoKZGlmZiAtLWdpdCBhL2dk Yi1iejY0NTc3My1pZm9ydC1jYXNlLTJvZjMucGF0Y2ggYi9nZGItYno2NDU3NzMtaWZvcnQtY2Fz ZS0yb2YzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODcxYTcwLi4wMDAw MDAwCi0tLSBhL2dkYi1iejY0NTc3My1pZm9ydC1jYXNlLTJvZjMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwyMDQgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTAtMTEvbXNnMDAxMDcuaHRtbAotU3ViamVjdDogW3BhdGNoIDEvMl0gQ29kZSBjbGVhbnVw OiBOZXcgaW5pdF9vbmVfY29tcF91bml0Ci0KLUhpLAotCi11bmlmeSBzb21lIGNvZGUgaW50byBh IGZ1bmN0aW9uLCB0byBiZSBleHRlbmRlZCBpbiB0aGUgbmV4dCBwYXRjaC4KLQotCi1UaGFua3Ms Ci1KYW4KLQotCi1nZGIvCi0yMDEwLTExLTA2ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2No dmlsQHJlZGhhdC5jb20+Ci0KLQlDb2RlIGNsZWFudXAuCi0JKiBkd2FyZjJyZWFkLmMgKGFsbG9j X29uZV9jb21wX3VuaXQpOiBSZW5hbWUgcHJvdG90eXBlIHRvIC4uLgotCShpbml0X29uZV9jb21w X3VuaXQpOiAuLi4gdGhpcyBvbmUuCi0JKHByZXBhcmVfb25lX2NvbXBfdW5pdCk6IE5ldyBwcm90 b3R5cGUuCi0JKGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyLCBwcm9jZXNzX3BzeW10YWJfY29tcF91 bml0KTogVXNlCi0JaW5pdF9vbmVfY29tcF91bml0LgotCShwcm9jZXNzX3BzeW10YWJfY29tcF91 bml0KTogVXNlIHByZXBhcmVfb25lX2NvbXBfdW5pdC4KLQkobG9hZF9wYXJ0aWFsX2NvbXBfdW5p dCk6IFJlbW92ZSB2YXJpYWJsZSBhdHRyLiAgVXNlCi0JaW5pdF9vbmVfY29tcF91bml0IHdpdGgg eG1hbGxvYy4gIFVzZSBwcmVwYXJlX29uZV9jb21wX3VuaXQuCi0JKGxvYWRfZnVsbF9jb21wX3Vu aXQpOiBVc2UgaW5pdF9vbmVfY29tcF91bml0IHdpdGggeG1hbGxvYy4gIFVzZQotCXByZXBhcmVf b25lX2NvbXBfdW5pdC4KLQkocmVhZF9zaWduYXR1cmVkX3R5cGUpOiBSZW1vdmUgdmFyaWFibGUg YXR0ci4gIFVzZSBpbml0X29uZV9jb21wX3VuaXQuCi0JVXNlIHByZXBhcmVfb25lX2NvbXBfdW5p dC4KLQkoYWxsb2Nfb25lX2NvbXBfdW5pdCk6IFJlbmFtZSB0byAuLi4KLQkoaW5pdF9vbmVfY29t cF91bml0KTogLi4uIGhlcmUgYW5kIHJlbW92ZSB0aGVyZSBjYWxsb2MsIG5ldyBwYXJhbWV0ZXIK LQljdS4KLQkocHJlcGFyZV9vbmVfY29tcF91bml0KTogTmV3IGZ1bmN0aW9uLgotCi1JbmRleDog Z2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dk Yi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozNjozNC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMS0wNyAwNTozODoyMS4wMDAwMDAwMDAgKzAx MDAKLUBAIC0xMjE0LDcgKzEyMTQsMTEgQEAgc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2Rh dGEgKmR3YXJmMgotIHN0YXRpYyBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpkd2FyZjJfZmlu ZF9jb21wX3VuaXQKLSAgICh1bnNpZ25lZCBpbnQgb2Zmc2V0LCBzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSk7Ci0gCi0tc3RhdGljIHN0cnVjdCBkd2FyZjJfY3UgKmFsbG9jX29uZV9jb21wX3VuaXQg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKTsKLStzdGF0aWMgdm9pZCBpbml0X29uZV9jb21wX3Vu aXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1LAotKwkJCQlzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7 Ci0rCi0rc3RhdGljIHZvaWQgcHJlcGFyZV9vbmVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSwKLSsJCQkJICAgc3RydWN0IGRpZV9pbmZvICpjb21wX3VuaXRfZGllKTsKLSAKLSBzdGF0 aWMgdm9pZCBmcmVlX29uZV9jb21wX3VuaXQgKHZvaWQgKik7Ci0gCi1AQCAtMTk4MCwxMCArMTk4 NCw3IEBAIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChzdHJ1Y3Qgb2JqZmlsZSAKLSAgICAgcmV0 dXJuOwotICAgdGhpc19jdS0+di5xdWljay0+cmVhZF9saW5lcyA9IDE7Ci0gCi0tICBtZW1zZXQg KCZjdSwgMCwgc2l6ZW9mIChjdSkpOwotLSAgY3Uub2JqZmlsZSA9IG9iamZpbGU7Ci0tICBvYnN0 YWNrX2luaXQgKCZjdS5jb21wX3VuaXRfb2JzdGFjayk7Ci0tCi0rICBpbml0X29uZV9jb21wX3Vu aXQgKCZjdSwgb2JqZmlsZSk7Ci0gICBjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoZnJlZV9zdGFj a19jb21wX3VuaXQsICZjdSk7Ci0gCi0gICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpmaWxlLCAm ZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmZvKTsKLUBAIC0yOTc4LDEwICsyOTc5LDcgQEAgcHJvY2Vz c19wc3ltdGFiX2NvbXBfdW5pdCAoc3RydWN0IG9iamZpbAotICAgQ09SRV9BRERSIGJlc3RfbG93 cGMgPSAwLCBiZXN0X2hpZ2hwYyA9IDA7Ci0gICBzdHJ1Y3QgZGllX3JlYWRlcl9zcGVjcyByZWFk ZXJfc3BlY3M7Ci0gCi0tICBtZW1zZXQgKCZjdSwgMCwgc2l6ZW9mIChjdSkpOwotLSAgY3Uub2Jq ZmlsZSA9IG9iamZpbGU7Ci0tICBvYnN0YWNrX2luaXQgKCZjdS5jb21wX3VuaXRfb2JzdGFjayk7 Ci0tCi0rICBpbml0X29uZV9jb21wX3VuaXQgKCZjdSwgb2JqZmlsZSk7Ci0gICBiYWNrX3RvX2lu bmVyID0gbWFrZV9jbGVhbnVwIChmcmVlX3N0YWNrX2NvbXBfdW5pdCwgJmN1KTsKLSAKLSAgIGlu Zm9fcHRyID0gcGFydGlhbF9yZWFkX2NvbXBfdW5pdF9oZWFkICgmY3UuaGVhZGVyLCBpbmZvX3B0 ciwKLUBAIC0zMDM1LDEyICszMDMzLDcgQEAgcHJvY2Vzc19wc3ltdGFiX2NvbXBfdW5pdCAoc3Ry dWN0IG9iamZpbAotICAgICAgIHJldHVybiBpbmZvX3B0cjsKLSAgICAgfQotIAotLSAgLyogU2V0 IHRoZSBsYW5ndWFnZSB3ZSdyZSBkZWJ1Z2dpbmcuICAqLwotLSAgYXR0ciA9IGR3YXJmMl9hdHRy IChjb21wX3VuaXRfZGllLCBEV19BVF9sYW5ndWFnZSwgJmN1KTsKLS0gIGlmIChhdHRyKQotLSAg ICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05EIChhdHRyKSwgJmN1KTsKLS0gIGVsc2UKLS0gICAg c2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCAmY3UpOwotKyAgcHJlcGFyZV9vbmVf Y29tcF91bml0ICgmY3UsIGNvbXBfdW5pdF9kaWUpOwotIAotICAgLyogQWxsb2NhdGUgYSBuZXcg cGFydGlhbCBzeW1ib2wgdGFibGUgc3RydWN0dXJlLiAgKi8KLSAgIGF0dHIgPSBkd2FyZjJfYXR0 ciAoY29tcF91bml0X2RpZSwgRFdfQVRfbmFtZSwgJmN1KTsKLUBAIC0zMjYzLDcgKzMyNTYsOCBA QCBsb2FkX3BhcnRpYWxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3BlCi0gICBpbmZvX3B0ciA9 IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIgKyB0aGlzX2N1LT5vZmZzZXQ7Ci0gICBi ZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7Ci0gCi0tICBjdSA9IGFsbG9jX29uZV9jb21wX3Vu aXQgKG9iamZpbGUpOwotKyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOwotKyAgaW5pdF9v bmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7Ci0gCi0gICAvKiA/Pz8gTWlzc2luZyBjbGVhbnVw IGZvciBDVT8gICovCi0gCi1AQCAtMzI5MCwxMiArMzI4NCw3IEBAIGxvYWRfcGFydGlhbF9jb21w X3VuaXQgKHN0cnVjdCBkd2FyZjJfcGUKLSAgIGluZm9fcHRyID0gcmVhZF9mdWxsX2RpZSAoJnJl YWRlcl9zcGVjcywgJmNvbXBfdW5pdF9kaWUsIGluZm9fcHRyLAotIAkJCSAgICAmaGFzX2NoaWxk cmVuKTsKLSAKLS0gIC8qIFNldCB0aGUgbGFuZ3VhZ2Ugd2UncmUgZGVidWdnaW5nLiAgKi8KLS0g IGF0dHIgPSBkd2FyZjJfYXR0ciAoY29tcF91bml0X2RpZSwgRFdfQVRfbGFuZ3VhZ2UsIGN1KTsK LS0gIGlmIChhdHRyKQotLSAgICBzZXRfY3VfbGFuZ3VhZ2UgKERXX1VOU05EIChhdHRyKSwgY3Up OwotLSAgZWxzZQotLSAgICBzZXRfY3VfbGFuZ3VhZ2UgKGxhbmd1YWdlX21pbmltYWwsIGN1KTsK LSsgIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoY3UsIGNvbXBfdW5pdF9kaWUpOwotIAotICAgLyog Q2hlY2sgaWYgY29tcCB1bml0IGhhc19jaGlsZHJlbi4KLSAgICAgIElmIHNvLCByZWFkIHRoZSBy ZXN0IG9mIHRoZSBwYXJ0aWFsIHN5bWJvbHMgZnJvbSB0aGlzIGNvbXAgdW5pdC4KLUBAIC00MjI3 LDcgKzQyMTYsOCBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCi0g ICBpbmZvX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5mby5idWZmZXIgKyBvZmZzZXQ7Ci0g ICBiZWdfb2ZfY29tcF91bml0ID0gaW5mb19wdHI7Ci0gCi0tICBjdSA9IGFsbG9jX29uZV9jb21w X3VuaXQgKG9iamZpbGUpOwotKyAgY3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOwotKyAgaW5p dF9vbmVfY29tcF91bml0IChjdSwgb2JqZmlsZSk7Ci0gCi0gICAvKiBJZiBhbiBlcnJvciBvY2N1 cnMgd2hpbGUgbG9hZGluZywgcmVsZWFzZSBvdXIgc3RvcmFnZS4gICovCi0gICBmcmVlX2N1X2Ns ZWFudXAgPSBtYWtlX2NsZWFudXAgKGZyZWVfb25lX2NvbXBfdW5pdCwgY3UpOwotQEAgLTQyNTQs MTEgKzQyNDQsNyBAQCBsb2FkX2Z1bGxfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jCi0g ICAgICBhbGwgb2JqZmlsZXMgbmVlZGVkIGZvciByZWZlcmVuY2VzIGhhdmUgYmVlbiBsb2FkZWQg eWV0LCBhbmQgc3ltYm9sCi0gICAgICB0YWJsZSBwcm9jZXNzaW5nIGlzbid0IGluaXRpYWxpemVk LiAgQnV0IHdlIGhhdmUgdG8gc2V0IHRoZSBDVSBsYW5ndWFnZSwKLSAgICAgIG9yIHdlIHdvbid0 IGJlIGFibGUgdG8gYnVpbGQgdHlwZXMgY29ycmVjdGx5LiAgKi8KLS0gIGF0dHIgPSBkd2FyZjJf YXR0ciAoY3UtPmRpZXMsIERXX0FUX2xhbmd1YWdlLCBjdSk7Ci0tICBpZiAoYXR0cikKLS0gICAg c2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLS0gIGVsc2UKLS0gICAgc2V0 X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBjdSk7Ci0rICBwcmVwYXJlX29uZV9jb21w X3VuaXQgKGN1LCBjdS0+ZGllcyk7Ci0gCi0gICAvKiBTaW1pbGFybHksIGlmIHdlIGRvIG5vdCBy ZWFkIHRoZSBwcm9kdWNlciwgd2UgY2FuIG5vdCBhcHBseQotICAgICAgcHJvZHVjZXItc3BlY2lm aWMgaW50ZXJwcmV0YXRpb24uICAqLwotQEAgLTEyNjE3LDE3ICsxMjYwMywxNSBAQCByZWFkX3Np Z25hdHVyZWRfdHlwZSAoc3RydWN0IG9iamZpbGUgKm9iCi0gICBzdHJ1Y3QgZHdhcmYyX2N1ICpj dTsKLSAgIFVMT05HRVNUIHNpZ25hdHVyZTsKLSAgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvLCAq ZnJlZV9jdV9jbGVhbnVwOwotLSAgc3RydWN0IGF0dHJpYnV0ZSAqYXR0cjsKLSAKLSAgIGR3YXJm Ml9yZWFkX3NlY3Rpb24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzKTsKLSAg IHR5cGVzX3B0ciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+dHlwZXMuYnVmZmVyICsgdHlwZV9zaWct Pm9mZnNldDsKLSAKLSAgIGdkYl9hc3NlcnQgKHR5cGVfc2lnLT5wZXJfY3UuY3UgPT0gTlVMTCk7 Ci0gCi0tICBjdSA9IHhtYWxsb2MgKHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkpOwotLSAgbWVt c2V0IChjdSwgMCwgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2N1KSk7Ci0tICBvYnN0YWNrX2luaXQg KCZjdS0+Y29tcF91bml0X29ic3RhY2spOwotLSAgY3UtPm9iamZpbGUgPSBvYmpmaWxlOwotKyAg Y3UgPSB4bWFsbG9jIChzaXplb2YgKCpjdSkpOwotKyAgaW5pdF9vbmVfY29tcF91bml0IChjdSwg b2JqZmlsZSk7Ci0rCi0gICB0eXBlX3NpZy0+cGVyX2N1LmN1ID0gY3U7Ci0gICBjdS0+cGVyX2N1 ID0gJnR5cGVfc2lnLT5wZXJfY3U7Ci0gCi1AQCAtMTI2NTksMTEgKzEyNjQzLDcgQEAgcmVhZF9z aWduYXR1cmVkX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYgotICAgICAgYWxsIG9iamZpbGVzIG5l ZWRlZCBmb3IgcmVmZXJlbmNlcyBoYXZlIGJlZW4gbG9hZGVkIHlldCwgYW5kIHN5bWJvbAotICAg ICAgdGFibGUgcHJvY2Vzc2luZyBpc24ndCBpbml0aWFsaXplZC4gIEJ1dCB3ZSBoYXZlIHRvIHNl dCB0aGUgQ1UgbGFuZ3VhZ2UsCi0gICAgICBvciB3ZSB3b24ndCBiZSBhYmxlIHRvIGJ1aWxkIHR5 cGVzIGNvcnJlY3RseS4gICovCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGN1LT5kaWVzLCBEV19B VF9sYW5ndWFnZSwgY3UpOwotLSAgaWYgKGF0dHIpCi0tICAgIHNldF9jdV9sYW5ndWFnZSAoRFdf VU5TTkQgKGF0dHIpLCBjdSk7Ci0tICBlbHNlCi0tICAgIHNldF9jdV9sYW5ndWFnZSAobGFuZ3Vh Z2VfbWluaW1hbCwgY3UpOwotKyAgcHJlcGFyZV9vbmVfY29tcF91bml0IChjdSwgY3UtPmRpZXMp OwotIAotICAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotIAotQEAgLTEzNzU1LDE1ICsxMzczNSwy OSBAQCBkd2FyZjJfZmluZF9jb21wX3VuaXQgKHVuc2lnbmVkIGludCBvZmZzCi0gICByZXR1cm4g dGhpc19jdTsKLSB9Ci0gCi0tLyogTWFsbG9jIHNwYWNlIGZvciBhIGR3YXJmMl9jdSBmb3IgT0JK RklMRSBhbmQgaW5pdGlhbGl6ZSBpdC4gICovCi0rLyogSW5pdGlhbGl6ZSBkd2FyZjJfY3UgQ1Ug Zm9yIE9CSkZJTEUgaW4gYSBwcmUtYWxsb2NhdGVkIHNwYWNlLiAgKi8KLSAKLS1zdGF0aWMgc3Ry dWN0IGR3YXJmMl9jdSAqCi0tYWxsb2Nfb25lX2NvbXBfdW5pdCAoc3RydWN0IG9iamZpbGUgKm9i amZpbGUpCi0rc3RhdGljIHZvaWQKLStpbml0X29uZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJf Y3UgKmN1LCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKLSB7Ci0tICBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSA9IHhjYWxsb2MgKDEsIHNpemVvZiAoc3RydWN0IGR3YXJmMl9jdSkpOwotKyAgbWVtc2V0 IChjdSwgMCwgc2l6ZW9mICgqY3UpKTsKLSAgIGN1LT5vYmpmaWxlID0gb2JqZmlsZTsKLSAgIG9i c3RhY2tfaW5pdCAoJmN1LT5jb21wX3VuaXRfb2JzdGFjayk7Ci0tICByZXR1cm4gY3U7Ci0rfQot KwotKy8qIEluaXRpYWlsaXplIGJhc2ljIGZpZWxkcyBvZiBkd2FyZl9jdSBDVSBhY2NvcmRpbmcg dG8gRElFIENPTVBfVU5JVF9ESUUuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rcHJlcGFyZV9vbmVf Y29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwgc3RydWN0IGRpZV9pbmZvICpjb21wX3Vu aXRfZGllKQotK3sKLSsgIHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0rCi0rICAvKiBTZXQgdGhl IGxhbmd1YWdlIHdlJ3JlIGRlYnVnZ2luZy4gICovCi0rICBhdHRyID0gZHdhcmYyX2F0dHIgKGNv bXBfdW5pdF9kaWUsIERXX0FUX2xhbmd1YWdlLCBjdSk7Ci0rICBpZiAoYXR0cikKLSsgICAgc2V0 X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLSsgIGVsc2UKLSsgICAgc2V0X2N1 X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBjdSk7Ci0gfQotIAotIC8qIFJlbGVhc2Ugb25l IGNhY2hlZCBjb21waWxhdGlvbiB1bml0LCBDVS4gIFdlIHVubGluayBpdCBmcm9tIHRoZSB0cmVl CgpkaWZmIC0tZ2l0IGEvZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtM29mMy5wYXRjaCBiL2dkYi1i ejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDA4NGY5ZDIuLjAwMDAwMDAKLS0tIGEvZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtM29mMy5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0OCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0xMS9tc2cwMDEwOC5odG1sCi1TdWJqZWN0OiBbcGF0Y2gg Mi8yXSBpRm9ydCBjb21wYXQuOiBjYXNlIGluc2Vuc2l0aXZlIHN5bWJvbHMgKFBSIDExMzEzKQot Ci1IaSwKLQotaUZvcnQgKEludGVsIEZvcnRyYW4gY29tcGlsZXIpIHByb2R1Y2VzIERJRXMgbGlr ZToKLQotIDwxPjwxZGM+OiBBYmJyZXYgTnVtYmVyOiA2IChEV19UQUdfbW9kdWxlKQotICAgIDwx ZTA+ICAgRFdfQVRfbmFtZSAgICAgICAgOiBNT0QxICAgIAotCi1CdXQgRm9ydHJhbiBpcyBjYXNl IGluc2Vuc2l0aXZlLCB0aGVyZWZvcmUgR0RCIGxvd2VyY2FzZXMgYW55IHVzZXIgaW5wdXQKLWZp cnN0LiAgU3ltYm9scyBjYW5ub3QgbWF0Y2guICBnZm9ydHJhbiBhbHdheXMgcHJvZHVjZXMgbG93 ZXJjYXNlZCBESUUgbmFtZXMuCi0KLUkgd2FzIHRvbGQgYnkgSmFrdWIgSmVsaW5layBHQ0MgZnJv bnRlbmQgd2lsbCBuZXZlciBiZSBwcm9wZXJseSBjYXNlCi1wcmVzZXJ2aW5nIC0gdG8gb3V0cHV0 ICJNb2QxIiBpZiB1c2VyIHN0YXRlZCBpdCBpbiBzdWNoIGNhc2UgaW4gdGhlIHNvdXJjZXMuCi0K LVRoZXJlZm9yZSBHREIgd2lsbCBub3cgbG93ZXJjYXNlIGFueSBjYXNlIGluc2Vuc2l0aXZlIHN5 bWJvbCBuYW1lcyBvbiB0aGVpcgotcmVhZC1pbiBmcm9tIERXQVJGLgotCi1FTEYgc3ltYm9sIHRh YmxlcyBhcmUgY3VycmVudGx5IG5vdCB0b3VjaGVkIC0gdGhlaXIgbWF0Y2hpbmcgdG8gdGhlaXIg Q1UgKGFuZAotdGh1cyB0byB0aGVpciBEV19BVF9pZGVudGlmaWVyX2Nhc2UgLyBEV19BVF9sYW5n dWFnZSkgaXMgZXhwZW5zaXZlIGFuZCBpdCBkb2VzCi1ub3Qgc2VlbSB0byBtZSB0byBiZSBuZWVk ZWQgZm9yIGlGb3J0IGFzIG9ubHkgdGhlIG1vZHVsZSBuYW1lcyBhcmUgdXBwZXJjYXNlZAotdGhl cmUuCi0KLUZvciB0aGUgaUZvcnQgY29tcGF0aWJpbGl0eSB0aGVyZSBpcyBhbHNvIG5lZWRlZDoK LQlbbmV3IHRlc3RjYXNlXSBSZWdyZXNzaW9uIDcuMS0+Ny4yIGZvciBpRm9ydCBbUmU6IFtSRkEt djJdIGR3YXJmIGRlYnVnIGZvcm1hdDogU3VwcG9ydCBEV19BVF92YXJpYWJsZV9wYXJhbWV0ZXIg YXR0cmlidXRlXQotCWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTEx L21zZzAwMDg0Lmh0bWwKLQotTm8gcmVncmVzc2lvbnMgb24ge3g4Nl82NCx4ODZfNjQtbTMyLGk2 ODZ9LWZlZG9yYTE0c25hcHNob3QtbGludXgtZ251LgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdk Yi8KLTIwMTAtMTEtMDcgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNv bT4KLQotCVBSIDExMzEzIC0gY2FzZSBpbnNlbnNpdGl2ZSBpZGVudGlmaWVycyBpbiBEV0FSRiBu b3QgaW4gbG93ZXJjYXNlLgotCSogZHdhcmYycmVhZC5jOiBJbmNsdWRlIGN0eXBlLmguCi0JKHN0 cnVjdCBkd2FyZjJfY3UpIDxjYXNlX3NlbnNpdGl2aXR5PjogTmV3LgotCShzdHJ1Y3QgYXR0cmli dXRlKSA8c3RyaW5nX2lzX2Nhbm9uaWNhbD46IFVwZGF0ZSB0aGUgY29tbWVudC4KLQkoY2Fub25p Y2FsX2Nhc2UpOiBOZXcgZGVjbGFyYXRpb24uCi0JKHJlYWRfcGFydGlhbF9kaWUpOiBDYWxsIGNh bm9uaWNhbF9jYXNlLgotCShjYW5vbmljYWxfY2FzZSk6IE5ldyBmdW5jdGlvbi4KLQkoZHdhcmYy X2Nhbm9uaWNhbGl6ZV9uYW1lKTogVXBkYXRlIHRoZSBmdW5jdGlvbiBjb21tZW50LiAgQ2FsbAot CWNhbm9uaWNhbF9jYXNlLCBhZGp1c3QgdGhlIG9ic3RhY2sgYWxsb2NhdGlvbi4KLQkoZHdhcmYy X25hbWUpOiBDYWxsIGNhbm9uaWNhbF9jYXNlLCBzZXQgRFdfU1RSSU5HX0lTX0NBTk9OSUNBTC4K LQkoaW5pdF9vbmVfY29tcF91bml0LCBwcmVwYXJlX29uZV9jb21wX3VuaXQpOiBTZXQgY3UtPmNh c2Vfc2Vuc2l0aXZpdHkuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTExLTA3ICBKYW4gS3JhdG9j aHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlQUiAxMTMxMyAtIGNhc2UgaW5z ZW5zaXRpdmUgaWRlbnRpZmllcnMgaW4gRFdBUkYgbm90IGluIGxvd2VyY2FzZS4KLQkqIGdkYi5k d2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUtZGVidWcuUzogTmV3LgotCSogZ2RiLmR3YXJmMi9k dzItY2FzZS1pbnNlbnNpdGl2ZS5jOiBOZXcuCi0JKiBnZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vu c2l0aXZlLmV4cDogTmV3LgotCSogZ2RiLm1pL21pLXZhci1jaGlsZC1mLmV4cCAobWlfcnVudG8p OiBVc2UgbG93ZXJjYXNlIG1haW5fXy4KLQotSW5kZXg6IGdkYi03LjIvZ2RiL2R3YXJmMnJlYWQu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEt MDcgMDU6Mzg6MjEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5j CTIwMTAtMTEtMDcgMDU6Mzg6NDcuMDAwMDAwMDAwICswMTAwCi1AQCAtNTUsNiArNTUsNyBAQAot ICNpbmNsdWRlICJnZGJfc3RhdC5oIgotICNpbmNsdWRlICJjb21wbGV0ZXIuaCIKLSAjaW5jbHVk ZSAidG9wLmgiCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0gCi0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0g I2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKLUBAIC0zNzYsNiArMzc3LDEwIEBAIHN0cnVjdCBkd2Fy ZjJfY3UKLSAgICAgIERJRXMgZm9yIG5hbWVzcGFjZXMsIHdlIGRvbid0IG5lZWQgdG8gdHJ5IHRv IGluZmVyIHRoZW0KLSAgICAgIGZyb20gbWFuZ2xlZCBuYW1lcy4gICovCi0gICB1bnNpZ25lZCBp bnQgaGFzX25hbWVzcGFjZV9pbmZvIDogMTsKLSsKLSsgIC8qIEFyZSBpZGVudGlmaWVycyBpbiB0 aGlzIENVIGNhc2Ugc2Vuc2l0aXZlIG9yIHNob3VsZCB0aGV5IGJlIGxvd2VyY2FzZWQKLSsgICAg IGJlZm9yZSBzdG9yaW5nIHRoZW0gaW50byBHREIgc3ltYm9sIHRhYmxlcz8gICovCi0rICBlbnVt IGNhc2Vfc2Vuc2l0aXZpdHkgY2FzZV9zZW5zaXRpdml0eTsKLSB9OwotIAotIC8qIFdoZW4gdXNp bmcgdGhlIGluZGV4IChhbmQgdGh1cyBub3QgdXNpbmcgcHN5bXRhYnMpLCBlYWNoIENVIGhhcyBh bgotQEAgLTYyMSw5ICs2MjYsMTAgQEAgc3RydWN0IGF0dHJpYnV0ZQotICAgICBFTlVNX0JJVEZJ RUxEKGR3YXJmX2F0dHJpYnV0ZSkgbmFtZSA6IDE2OwotICAgICBFTlVNX0JJVEZJRUxEKGR3YXJm X2Zvcm0pIGZvcm0gOiAxNTsKLSAKLS0gICAgLyogSGFzIERXX1NUUklORyBhbHJlYWR5IGJlZW4g dXBkYXRlZCBieSBkd2FyZjJfY2Fub25pY2FsaXplX25hbWU/ICBUaGlzCi0tICAgICAgIGZpZWxk IHNob3VsZCBiZSBpbiB1LnN0ciAoZXhpc3Rpbmcgb25seSBmb3IgRFdfU1RSSU5HKSBidXQgaXQg aXMga2VwdAotLSAgICAgICBoZXJlIGZvciBiZXR0ZXIgc3RydWN0IGF0dHJpYnV0ZSBhbGlnbm1l bnQuICAqLwotKyAgICAvKiBIYXMgRFdfU1RSSU5HIGFscmVhZHkgYmVlbiB1cGRhdGVkIGJ5IGR3 YXJmMl9jYW5vbmljYWxpemVfbmFtZSBvcgotKyAgICAgICBjYW5vbmljYWxfY2FzZT8gIFRoaXMg ZmllbGQgc2hvdWxkIGJlIGluIHUuc3RyIChleGlzdGluZyBvbmx5IGZvcgotKyAgICAgICBEV19T VFJJTkcpIGJ1dCBpdCBpcyBrZXB0IGhlcmUgZm9yIGJldHRlciBzdHJ1Y3QgYXR0cmlidXRlIGFs aWdubWVudC4KLSsgICAgICAgKi8KLSAgICAgdW5zaWduZWQgaW50IHN0cmluZ19pc19jYW5vbmlj YWwgOiAxOwotIAotICAgICB1bmlvbgotQEAgLTExMDksNiArMTExNSw5IEBAIHN0YXRpYyBnZGJf Ynl0ZSAqcmVhZF9mdWxsX2RpZSAoY29uc3Qgc3QKLSAKLSBzdGF0aWMgdm9pZCBwcm9jZXNzX2Rp ZSAoc3RydWN0IGRpZV9pbmZvICosIHN0cnVjdCBkd2FyZjJfY3UgKik7Ci0gCi0rc3RhdGljIGNo YXIgKmNhbm9uaWNhbF9jYXNlIChjaGFyICpuYW1lLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSwKLSsJ CQkgICAgIHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKLSsKLSBzdGF0aWMgY2hhciAqZHdhcmYy X2Nhbm9uaWNhbGl6ZV9uYW1lIChjaGFyICosIHN0cnVjdCBkd2FyZjJfY3UgKiwKLSAJCQkJICAg ICAgIHN0cnVjdCBvYnN0YWNrICopOwotIAotQEAgLTg1ODksNyArODU5OCw4IEBAIHJlYWRfcGFy dGlhbF9kaWUgKHN0cnVjdCBwYXJ0aWFsX2RpZV9pbmYKLSAJICAgIGNhc2UgRFdfVEFHX2VudW1l cmF0b3I6Ci0gCSAgICAgIC8qIFRoZXNlIHRhZ3MgYWx3YXlzIGhhdmUgc2ltcGxlIGlkZW50aWZp ZXJzIGFscmVhZHk7IG5vIG5lZWQKLSAJCSB0byBjYW5vbmljYWxpemUgdGhlbS4gICovCi0tCSAg ICAgIHBhcnRfZGllLT5uYW1lID0gRFdfU1RSSU5HICgmYXR0cik7Ci0rCSAgICAgIHBhcnRfZGll LT5uYW1lID0gY2Fub25pY2FsX2Nhc2UgKERXX1NUUklORyAoJmF0dHIpLCBjdSwKLSsJCQkJCSAg ICAgICAmY3UtPm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0gCSAgICAgIGJyZWFrOwotIAkg ICAgZGVmYXVsdDoKLSAJICAgICAgcGFydF9kaWUtPm5hbWUKLUBAIC0xMTA0Myw3ICsxMTA1Mywz NiBAQCBzaWJsaW5nX2RpZSAoc3RydWN0IGRpZV9pbmZvICpkaWUpCi0gICByZXR1cm4gZGllLT5z aWJsaW5nOwotIH0KLSAKLS0vKiBHZXQgbmFtZSBvZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90 IGZvdW5kLiAgKi8KLSsvKiBDb252ZXJ0IE5BTUUgdG8gdGhlIGxvd2VyIGNhc2UgaWYgQ1UgaXMg Y2FzZV9zZW5zaXRpdmVfb2ZmLiAgQWxsb2NhdGUKLSsgICBtZW1vcnkgb24gT0JTVEFDSyBpZiBu ZWVkZWQsIG90aGVyd2lzZSByZXR1cm4gdGhlIE5BTUUgcG9pbnRlci4gICovCi0rCi0rc3RhdGlj IGNoYXIgKgotK2Nhbm9uaWNhbF9jYXNlIChjaGFyICpuYW1lLCBzdHJ1Y3QgZHdhcmYyX2N1ICpj dSwKLSsJCXN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQotK3sKLSsgIGNoYXIgKnJldHZhbDsKLSsg IGludCBpOwotKwotKyAgaWYgKGN1LT5jYXNlX3NlbnNpdGl2aXR5ID09IGNhc2Vfc2Vuc2l0aXZl X29uKQotKyAgICByZXR1cm4gbmFtZTsKLSsKLSsgIGZvciAoaSA9IDA7IG5hbWVbaV0gIT0gMDsg aSsrKQotKyAgICBpZiAodG9sb3dlciAobmFtZVtpXSkgIT0gbmFtZVtpXSkKLSsgICAgICBicmVh azsKLSsgIGlmIChuYW1lW2ldID09IDApCi0rICAgIHJldHVybiBuYW1lOwotKwotKyAgcmV0dmFs ID0gb2JzdGFja19hbGxvYyAob2JzdGFjaywgc3RybGVuIChuYW1lKSArIDEpOwotKwotKyAgZm9y IChpID0gMDsgbmFtZVtpXSAhPSAwOyBpKyspCi0rICAgIHJldHZhbFtpXSA9IHRvbG93ZXIgKG5h bWVbaV0pOwotKyAgcmV0dmFsW2ldID0gMDsKLSsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwot Ky8qIEdldCBuYW1lIG9mIGEgZGllLCByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQuICBjYW5vbmlj YWxfY2FzZSBpcyBhbHdheXMKLSsgICBhbHJlYWR5IGNhbGxlZCBmb3IgdGhlIHJldHVybmVkIHN0 cmluZy4gICovCi0gCi0gc3RhdGljIGNoYXIgKgotIGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAo Y2hhciAqbmFtZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCi1AQCAtMTEwNTUsMTQgKzExMDk0LDI2 IEBAIGR3YXJmMl9jYW5vbmljYWxpemVfbmFtZSAoY2hhciAqbmFtZSwgc3QKLSAKLSAgICAgICBp ZiAoY2Fub25fbmFtZSAhPSBOVUxMKQotIAl7Ci0tCSAgaWYgKHN0cmNtcCAoY2Fub25fbmFtZSwg bmFtZSkgIT0gMCkKLS0JICAgIG5hbWUgPSBvYnNhdmVzdHJpbmcgKGNhbm9uX25hbWUsIHN0cmxl biAoY2Fub25fbmFtZSksCi0rCSAgY2hhciAqY2FzZWRfbmFtZTsKLSsKLSsJICBjYXNlZF9uYW1l ID0gY2Fub25pY2FsX2Nhc2UgKGNhbm9uX25hbWUsIGN1LCBvYnN0YWNrKTsKLSsKLSsJICAvKiBQ dXNoIENBU0VEX05BTUUgb24gT0JTVEFDSyBvbmx5IGlmIGl0IGlzbid0IGFscmVhZHkgcHVzaGVk IHRoZXJlCi0rCSAgICAgYnkgY2Fub25pY2FsX2Nhc2UgYW5kIGlmIGl0IHdhcyBhbGxvY2F0ZWQg dXNpbmcgeG1hbGxvYyBieQotKwkgICAgIGNwX2Nhbm9uaWNhbGl6ZV9zdHJpbmcuICAqLwotKwkg IGlmIChzdHJjbXAgKGNhbm9uX25hbWUsIGNhc2VkX25hbWUpID09IDAKLSsJICAgICAgJiYgc3Ry Y21wIChjYW5vbl9uYW1lLCBuYW1lKSAhPSAwKQotKwkgICAgbmFtZSA9IG9ic2F2ZXN0cmluZyAo Y2FzZWRfbmFtZSwgc3RybGVuIChjYXNlZF9uYW1lKSwKLSAJCQkJIG9ic3RhY2spOwotKwkgIGVs c2UKLSsJICAgIG5hbWUgPSBjYXNlZF9uYW1lOwotIAkgIHhmcmVlIChjYW5vbl9uYW1lKTsKLSsK LSsJICByZXR1cm4gbmFtZTsKLSAJfQotICAgICB9Ci0gCi0tICByZXR1cm4gbmFtZTsKLSsgIHJl dHVybiBjYW5vbmljYWxfY2FzZSAobmFtZSwgY3UsIG9ic3RhY2spOwotIH0KLSAKLSAvKiBHZXQg bmFtZSBvZiBhIGRpZSwgcmV0dXJuIE5VTEwgaWYgbm90IGZvdW5kLiAgKi8KLUBAIC0xMTA4OCw3 ICsxMTEzOSwxMyBAQCBkd2FyZjJfbmFtZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjCi0g ICAgIGNhc2UgRFdfVEFHX2VudW1lcmF0aW9uX3R5cGU6Ci0gICAgIGNhc2UgRFdfVEFHX2VudW1l cmF0b3I6Ci0gICAgICAgLyogVGhlc2UgdGFncyBhbHdheXMgaGF2ZSBzaW1wbGUgaWRlbnRpZmll cnMgYWxyZWFkeTsgbm8gbmVlZAotLQkgdG8gY2Fub25pY2FsaXplIHRoZW0uICAqLwotKwkgdG8g Y2FsbCBkd2FyZjJfY2Fub25pY2FsaXplX25hbWUgZm9yIHRoZW0uICAqLwotKyAgICAgIGlmICgh RFdfU1RSSU5HX0lTX0NBTk9OSUNBTCAoYXR0cikpCi0rCXsKLSsJICBEV19TVFJJTkcgKGF0dHIp ID0gY2Fub25pY2FsX2Nhc2UgKERXX1NUUklORyAoYXR0ciksIGN1LAotKwkJCQkJICAgICAmY3Ut Pm9iamZpbGUtPm9iamZpbGVfb2JzdGFjayk7Ci0rCSAgRFdfU1RSSU5HX0lTX0NBTk9OSUNBTCAo YXR0cikgPSAxOwotKwl9Ci0gICAgICAgcmV0dXJuIERXX1NUUklORyAoYXR0cik7Ci0gCi0gICAg IGNhc2UgRFdfVEFHX3N1YnByb2dyYW06Ci1AQCAtMTM3NDMsNiArMTM4MDAsNyBAQCBpbml0X29u ZV9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfY3UgKmN1Ci0gICBtZW1zZXQgKGN1LCAwLCBzaXpl b2YgKCpjdSkpOwotICAgY3UtPm9iamZpbGUgPSBvYmpmaWxlOwotICAgb2JzdGFja19pbml0ICgm Y3UtPmNvbXBfdW5pdF9vYnN0YWNrKTsKLSsgIGN1LT5jYXNlX3NlbnNpdGl2aXR5ID0gY2FzZV9z ZW5zaXRpdmVfb247Ci0gfQotIAotIC8qIEluaXRpYWlsaXplIGJhc2ljIGZpZWxkcyBvZiBkd2Fy Zl9jdSBDVSBhY2NvcmRpbmcgdG8gRElFIENPTVBfVU5JVF9ESUUuICAqLwotQEAgLTEzNzU4LDYg KzEzODE2LDEzIEBAIHByZXBhcmVfb25lX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJmMl9jdSAKLSAg ICAgc2V0X2N1X2xhbmd1YWdlIChEV19VTlNORCAoYXR0ciksIGN1KTsKLSAgIGVsc2UKLSAgICAg c2V0X2N1X2xhbmd1YWdlIChsYW5ndWFnZV9taW5pbWFsLCBjdSk7Ci0rCi0rICBhdHRyID0gZHdh cmYyX2F0dHIgKGNvbXBfdW5pdF9kaWUsIERXX0FUX2lkZW50aWZpZXJfY2FzZSwgY3UpOwotKyAg aWYgKGF0dHIpCi0rICAgIGN1LT5jYXNlX3NlbnNpdGl2aXR5ID0gKERXX1VOU05EIChhdHRyKSA9 PSBEV19JRF9jYXNlX3NlbnNpdGl2ZQotKwkJCSAgICA/IGNhc2Vfc2Vuc2l0aXZlX29uIDogY2Fz ZV9zZW5zaXRpdmVfb2ZmKTsKLSsgIGVsc2UKLSsgICAgY3UtPmNhc2Vfc2Vuc2l0aXZpdHkgPSBj dS0+bGFuZ3VhZ2VfZGVmbi0+bGFfY2FzZV9zZW5zaXRpdml0eTsKLSB9Ci0gCi0gLyogUmVsZWFz ZSBvbmUgY2FjaGVkIGNvbXBpbGF0aW9uIHVuaXQsIENVLiAgV2UgdW5saW5rIGl0IGZyb20gdGhl IHRyZWUKLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1p bnNlbnNpdGl2ZS1kZWJ1Zy5TCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLWNhc2UtaW5zZW5zaXRpdmUtZGVidWcuUwkyMDEwLTExLTA3IDA1OjM4OjM1LjAw MDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMjIgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDA0LCAyMDA3 LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAg IFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh bmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3Vy IG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3Ry aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsg ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K LSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBz ZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsJLnNlY3Rpb24gLmRl YnVnX2luZm8KLSsuTGN1MV9iZWdpbjoKLSsJLyogQ1UgaGVhZGVyICovCi0rCS40Ynl0ZQkuTGN1 MV9lbmQgLSAuTGN1MV9zdGFydAkJLyogTGVuZ3RoIG9mIENvbXBpbGF0aW9uIFVuaXQgKi8KLSsu TGN1MV9zdGFydDoKLSsJLjJieXRlCTIJCQkJLyogRFdBUkYgVmVyc2lvbiAqLwotKwkuNGJ5dGUJ LkxhYmJyZXYxX2JlZ2luCQkJLyogT2Zmc2V0IGludG8gYWJicmV2IHNlY3Rpb24gKi8KLSsJLmJ5 dGUJNAkJCQkvKiBQb2ludGVyIHNpemUgKi8KLSsKLSsJLyogQ1UgZGllICovCi0rCS51bGViMTI4 IDIJCQkJLyogQWJicmV2OiBEV19UQUdfY29tcGlsZV91bml0ICovCi0rCS5hc2NpaQkiZmlsZTEu dHh0XDAiCQkJLyogRFdfQVRfbmFtZSAqLwotKwkuYXNjaWkJIkdOVSBDIDMuMy4zXDAiCQkJLyog RFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMgkJCQkvKiBEV19BVF9sYW5ndWFnZSAoRFdfTEFO R19DKSAqLwotKwkuYnl0ZQkzCQkJCS8qIERXX0FUX2lkZW50aWZpZXJfY2FzZSAoRFdfSURfY2Fz ZV9pbnNlbnNpdGl2ZSkgKi8KLSsJLjRieXRlCQlGVU5DX2F0dHIJCS8qIERXX0FUX2xvd19wYyAq LwotKwkuNGJ5dGUJCUZVTkNfbGFuZyAJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsKLSsJLnVsZWIx MjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTEJCQkvKiBE V19BVF9leHRlcm5hbCAqLwotKwkuYXNjaWkJCSJGVU5DX2F0dHJcMCIJCS8qIERXX0FUX25hbWUg Ki8KLSsJLjRieXRlCQlGVU5DX2F0dHIJCS8qIERXX0FUX2xvd19wYyAqLwotKwkuNGJ5dGUJCUZV TkNfbGFuZyAJCS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsKLSsJLmJ5dGUJCTAJCQkvKiBFbmQgb2Yg Y2hpbGRyZW4gb2YgQ1UgKi8KLSsuTGN1MV9lbmQ6Ci0rCi0rLkxjdTJfYmVnaW46Ci0rCS8qIENV IGhlYWRlciAqLwotKwkuNGJ5dGUJLkxjdTJfZW5kIC0gLkxjdTJfc3RhcnQJCS8qIExlbmd0aCBv ZiBDb21waWxhdGlvbiBVbml0ICovCi0rLkxjdTJfc3RhcnQ6Ci0rCS4yYnl0ZQkyCQkJCS8qIERX QVJGIFZlcnNpb24gKi8KLSsJLjRieXRlCS5MYWJicmV2MV9iZWdpbgkJCS8qIE9mZnNldCBpbnRv IGFiYnJldiBzZWN0aW9uICovCi0rCS5ieXRlCTQJCQkJLyogUG9pbnRlciBzaXplICovCi0rCi0r CS8qIENVIGRpZSAqLwotKwkudWxlYjEyOCAxCQkJCS8qIEFiYnJldjogRFdfVEFHX2NvbXBpbGVf dW5pdCAqLwotKwkuYXNjaWkJImZpbGUxLnR4dFwwIgkJCS8qIERXX0FUX25hbWUgKi8KLSsJLmFz Y2lpCSJHTlUgQyAzLjMuM1wwIgkJCS8qIERXX0FUX3Byb2R1Y2VyICovCi0rCS5ieXRlCTgJCQkJ LyogRFdfQVRfbGFuZ3VhZ2UgKERXX0xBTkdfRm9ydHJhbjkwKSAqLwotKwkuNGJ5dGUJCUZVTkNf bGFuZwkJLyogRFdfQVRfbG93X3BjICovCi0rCS40Ynl0ZQkJbWFpbgkJCS8qIERXX0FUX2hpZ2hf cGMgKi8KLSsKLSsJLnVsZWIxMjgJMwkJCS8qIEFiYnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8K LSsJLmJ5dGUJCTEJCQkvKiBEV19BVF9leHRlcm5hbCAqLwotKwkuYXNjaWkJCSJGVU5DX2xhbmdc MCIJCS8qIERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQlGVU5DX2xhbmcJCS8qIERXX0FUX2xvd19w YyAqLwotKwkuNGJ5dGUJCW1haW4JCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCi0rCS5ieXRlCQkw CQkJLyogRW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rLkxjdTJfZW5kOgotKwotKy8qIEFiYnJl diB0YWJsZSAqLwotKwkuc2VjdGlvbiAuZGVidWdfYWJicmV2Ci0rLkxhYmJyZXYxX2JlZ2luOgot KwkudWxlYjEyOAkxCQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERX X1RBR19jb21waWxlX3VuaXQgKi8KLSsJLmJ5dGUJCTEJCQkvKiBoYXNfY2hpbGRyZW4gKi8KLSsJ LnVsZWIxMjgJMHgzCQkJLyogRFdfQVRfbmFtZSAqLwotKwkudWxlYjEyOAkweDgJCQkvKiBEV19G T1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDI1CQkJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJ LnVsZWIxMjgJMHg4CQkJLyogRFdfRk9STV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMwkJCS8q IERXX0FUX2xhbmd1YWdlICovCi0rCS51bGViMTI4CTB4YgkJCS8qIERXX0ZPUk1fZGF0YTEgKi8K LSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxlYjEyOAkweDEJCQkv KiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FUX2hpZ2hfcGMgKi8K LSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS5ieXRlCQkweDAJCQkvKiBU ZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCi0rCS51bGVi MTI4CTIJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEyOAkweDExCQkJLyogRFdfVEFHX2Nv bXBpbGVfdW5pdCAqLwotKwkuYnl0ZQkJMQkJCS8qIGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEy OAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3Ry aW5nICovCi0rCS51bGViMTI4CTB4MjUJCQkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkudWxlYjEy OAkweDgJCQkvKiBEV19GT1JNX3N0cmluZyAqLwotKwkudWxlYjEyOAkweDEzCQkJLyogRFdfQVRf bGFuZ3VhZ2UgKi8KLSsJLnVsZWIxMjgJMHhiCQkJLyogRFdfRk9STV9kYXRhMSAqLwotKwkudWxl YjEyOAkweDQyCQkJLyogRFdfQVRfaWRlbnRpZmllcl9jYXNlICovCi0rCS51bGViMTI4CTB4YgkJ CS8qIERXX0ZPUk1fZGF0YTEgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAq LwotKwkudWxlYjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJ CS8qIERXX0FUX2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICov Ci0rCS5ieXRlCQkweDAJCQkvKiBUZXJtaW5hdG9yICovCi0rCS5ieXRlCQkweDAJCQkvKiBUZXJt aW5hdG9yICovCi0rCi0rCS51bGViMTI4CTMJCQkvKiBBYmJyZXYgY29kZSAqLwotKwkudWxlYjEy OAkweDJlCQkJLyogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmJ5dGUJCTAJCQkvKiBoYXNfY2hp bGRyZW4gKi8KLSsJLnVsZWIxMjgJMHgzZgkJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGVi MTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9u YW1lICovCi0rCS51bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4 CTB4MTEJCQkvKiBEV19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9h ZGRyICovCi0rCS51bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4 CTB4MQkJCS8qIERXX0ZPUk1fYWRkciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAq LwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkuYnl0ZQkJMHgwCQkJLyog VGVybWluYXRvciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotSW5kZXg6IGdk Yi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1jYXNlLWluc2Vuc2l0aXZlLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNp dGl2ZS5jCTIwMTAtMTEtMDcgMDU6Mzg6MzUuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDM2 IEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4K LSsKLSsgICBDb3B5cmlnaHQgMjAwNCwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAgIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0 aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1Mg Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp dmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsgICBhbG9uZyB3 aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5z ZXMvPi4gICovCi0rCi0rLyogVGhpcyBvbmUgaXMgRFdfTEFOR19DIGJ1dCBpdCB1c2VzIERXX0lE X2Nhc2VfaW5zZW5zaXRpdmUuICAqLwotKwotK3ZvaWQKLStGVU5DX2F0dHIgKHZvaWQpCi0rewot K30KLSsKLSsvKiBUaGlzIG9uZSBoYXMgbm8gRFdfQVRfaWRlbnRpZmllcl9jYXNlIGJ1dCBpdCBp cyBEV19MQU5HX0ZvcnRyYW45MC4gICovCi0rCi0rdm9pZAotK0ZVTkNfbGFuZyAodm9pZCkKLSt7 Ci0rfQotKwotK2ludAotK21haW4oKQotK3sKLSsgIHJldHVybiAwOwotK30KLUluZGV4OiBnZGIt Ny4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNpdGl2ZS5leHAKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAw MDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItY2FzZS1pbnNlbnNp dGl2ZS5leHAJMjAxMC0xMS0wNyAwNTozODozNS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEs NDEgQEAKLSsjIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgot KwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl IGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVy YWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlv dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlz dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRI T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0r IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2Vl IDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25s eSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0r IyBGb3Igbm93IHBpY2sgYSBzYW1wbGluZyBvZiBsaWtlbHkgdGFyZ2V0cy4KLStpZiB7IVtpc3Rh cmdldCAqLSotbGludXgqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1nbnUqXQotKyAgICAmJiAh W2lzdGFyZ2V0ICotKi1lbGYqXQotKyAgICAmJiAhW2lzdGFyZ2V0ICotKi1vcGVuYnNkKl0KLSsg ICAgJiYgIVtpc3RhcmdldCBhcm0tKi1lYWJpKl0KLSsgICAgJiYgIVtpc3RhcmdldCBwb3dlcnBj LSotZWFiaSpdfSB7Ci0rICAgIHJldHVybiAwCi0rfQotKwotK3NldCB0ZXN0ZmlsZSAiZHcyLWNh c2UtaW5zZW5zaXRpdmUiCi0rCi0raWYgeyBbcHJlcGFyZV9mb3JfdGVzdGluZyAke3Rlc3RmaWxl fS5leHAgJHt0ZXN0ZmlsZX0gW2xpc3QgJHt0ZXN0ZmlsZX0uYyAke3Rlc3RmaWxlfS1kZWJ1Zy5T XSB7bm9kZWJ1Z31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX3Rlc3Rfbm9fb3V0 cHV0ICJzZXQgbGFuZ3VhZ2UgZm9ydHJhbiIKLSsKLStpZiB7W2dkYl9icmVha3BvaW50ICJmdU5D X2F0dHIiXSA9PSAxfSB7Ci0rICAgIHBhc3MgInNldHRpbmcgYnJlYWtwb2ludCBhdCBmdU5DX2F0 dHIiCi0rfQotKwotK2lmIHtbZ2RiX2JyZWFrcG9pbnQgImZ1TkNfbGFuZyJdID09IDF9IHsKLSsg ICAgcGFzcyAic2V0dGluZyBicmVha3BvaW50IGF0IGZ1TkNfbGFuZyIKLSt9Ci1JbmRleDogZ2Ri LTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4yLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWktdmFyLWNoaWxkLWYuZXhw CTIwMTAtMDEtMDEgMDg6MzI6MDMuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi9nZGIvdGVz dHN1aXRlL2dkYi5taS9taS12YXItY2hpbGQtZi5leHAJMjAxMC0xMS0wNyAwNTozODozNS4wMDAw MDAwMDAgKzAxMDAKLUBAIC0zNiw3ICszNiw3IEBAIGlmIHtbZ2RiX2NvbXBpbGUgIiR7c3JjZGly fS8ke3N1YmRpcn0vJHsKLSBtaV9nZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIK LSBtaV9nZGJfbG9hZCAke2JpbmZpbGV9Ci0gCi0tbWlfcnVudG8gTUFJTl9fCi0rbWlfcnVudG8g bWFpbl9fCi0gCi0gbWlfZ2RiX3Rlc3QgIi12YXItY3JlYXRlIGFycmF5ICogYXJyYXkiIFwKLSAg ICAgIlxcXmRvbmUsbmFtZT1cImFycmF5XCIsbnVtY2hpbGQ9XCIzXCIsdmFsdWU9XCIuKlwiLHR5 cGU9XCJpbnRlZ2VyIFxcKDIsLTE6MVxcKVwiIiBcCgpkaWZmIC0tZ2l0IGEvZ2RiLWV4ZWMtcGll LWFtZDY0LnBhdGNoIGIvZ2RiLWV4ZWMtcGllLWFtZDY0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBlODQwM2FkLi4wMDAwMDAwCi0tLSBhL2dkYi1leGVjLXBpZS1hbWQ2NC5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxOCArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDUxOS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hd IEZpeCBpbmZlcmlvciBleGVjbCBvZiBuZXcgUElFIHg4Nl82NAotCi1IaSwKLQotZ2NjIC1vIDEg MS5jIC1XYWxsIC1nIC1mUElFIC1waWU7IGdkYiAtbnggLi8xIC1leCAnYiBtYWluJyAtZXggciAt ZXggYyAKLQotU3RhcnRpbmcgcHJvZ3JhbTogLi4uL2dkYi8xIAotQnJlYWtwb2ludCAxLCBtYWlu IChhcmdjPTEsIGFyZ3Y9MHg3ZmZmZmZmZmRmZjgpIGF0IDEuYzo3Ci03CSAgc2V0YnVmIChzdGRv dXQsIE5VTEwpOwotQ29udGludWluZy4KLXJlLWV4ZWMKLXByb2Nlc3MgMjgwNTYgaXMgZXhlY3V0 aW5nIG5ldyBwcm9ncmFtOiAuLi4vZ2RiLzEKLUVycm9yIGluIHJlLXNldHRpbmcgYnJlYWtwb2lu dCAxOiBDYW5ub3QgYWNjZXNzIG1lbW9yeSBhdCBhZGRyZXNzIDB4ODBjCi1leGl0Ci1Qcm9ncmFt IGV4aXRlZCBub3JtYWxseS4KLShnZGIpIF8KLQotd2hpbGUgaXQgc2hvdWxkIGJlOgotCi1yZS1l eGVjCi1wcm9jZXNzIDI4MDk1IGlzIGV4ZWN1dGluZyBuZXcgcHJvZ3JhbTogLi4uL2dkYi8xCi1C cmVha3BvaW50IDEsIG1haW4gKGFyZ2M9MiwgYXJndj0weDdmZmZmZmZmZTAwOCkgYXQgMS5jOjcK LTcJICBzZXRidWYgKHN0ZG91dCwgTlVMTCk7Ci0oZ2RiKSBfCi0KLVRoZSBlcnJvciBjb21lcyBm cm9tOgotCi10aHJvd19lcnJvciA8LSBtZW1vcnlfZXJyb3IgPC0gcmVhZF9tZW1vcnkgPC0gcmVh ZF9tZW1vcnlfdW5zaWduZWRfaW50ZWdlciA8LQotYW1kNjRfYW5hbHl6ZV9wcm9sb2d1ZSA8LSBh bWQ2NF9za2lwX3Byb2xvZ3VlIDwtIGdkYmFyY2hfc2tpcF9wcm9sb2d1ZSA8LQotc2tpcF9wcm9s b2d1ZV9zYWwgPC0gZmluZF9mdW5jdGlvbl9zdGFydF9zYWwgPC0gc3ltYm9sX2ZvdW5kIDwtIGRl Y29kZV92YXJpYWJsZQotPC0gZGVjb2RlX2xpbmVfMSA8LSBicmVha3BvaW50X3JlX3NldF9vbmUg PC0gY2F0Y2hfZXJyb3JzIDwtIGJyZWFrcG9pbnRfcmVfc2V0Ci08LSBjbGVhcl9zeW10YWJfdXNl cnMgPC0gbmV3X3N5bWZpbGVfb2JqZmlsZSA8LQotc3ltYm9sX2ZpbGVfYWRkX3dpdGhfYWRkcnNf b3Jfb2Zmc2V0cyA8LSBzeW1ib2xfZmlsZV9hZGRfZnJvbV9iZmQgPC0KLXN5bWJvbF9maWxlX2Fk ZCA8LSBzeW1ib2xfZmlsZV9hZGRfbWFpbl8xIDwtIHN5bWJvbF9maWxlX2FkZF9tYWluIDwtCi1m b2xsb3dfZXhlYwotCi0KLUkgdW5kZXJzdGFuZCB0aGlzIGhhY2sgaXMgbm90IG5pY2UsIHRoZSBj b3JyZWN0IHdheSB3b3VsZCBiZSB0byB1bmlmeSBtb3JlCi1mb2xsb3dfZXhlYyB3aXRoIHBvc3Rf Y3JlYXRlX2luZmVyaW9yLiAgQnV0IEkgY291bGQgYnJlYWsgaXQgZm9yIG5vbi1HTlUvTGludXgK LXRhcmdldHMgYSBsb3QuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixp Njg2fS1mZWRvcmExNHNuYXBzaG90LWxpbnV4LWdudS4KLQotCi1UaGFua3MsCi1KYW4KLQotCi1m b3IgdGhlIGRlbW8gYWJvdmU6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSNpbmNsdWRlIDx1bmlz dGQuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotaW50Ci1tYWlu IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi17Ci0gIHNldGJ1ZiAoc3Rkb3V0LCBOVUxMKTsKLSAg aWYgKGFyZ2MgPT0gMSkKLSAgICB7Ci0gICAgICBwdXRzICgicmUtZXhlYyIpOwotICAgICAgZXhl Y2wgKCIvcHJvYy9zZWxmL2V4ZSIsIGFyZ3ZbMF0sICJmb28iLCBOVUxMKTsKLSAgICAgIGFzc2Vy dCAoMCk7Ci0gICAgfQotICBwdXRzICgiZXhpdCIpOwotICByZXR1cm4gMDsKLX0KLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQotCi0KLWdkYi8KLTIwMTAtMDktMzAgIEphbiBLcmF0b2NodmlsICA8amFu LmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogaW5mcnVuLmMgKGZvbGxvd19leGVjKTogUmVw bGFjZSBzeW1ib2xfZmlsZV9hZGRfbWFpbiBieQotCXN5bWJvbF9maWxlX2FkZCB3aXRoIFNZTUZJ TEVfREVGRVJfQlBfUkVTRVQsIHNldF9pbml0aWFsX2xhbmd1YWdlIGFuZAotCWJyZWFrcG9pbnRf cmVfc2V0LgotCSogbTMyci1yb20uYyAobTMycl9sb2FkLCBtMzJyX3VwbG9hZF9jb21tYW5kKTog VXNlIHBhcmFtZXRlciAwIGZvcgotCWNsZWFyX3N5bXRhYl91c2Vycy4KLQkqIG9iamZpbGVzLmMg KGZyZWVfYWxsX29iamZpbGVzKTogTGlrZXdpc2UuCi0JKiByZW1vdGUtbTMyci1zZGkuYyAobTMy cl9sb2FkKTogTGlrZXdpc2UuCi0JKiBzb2xpYi1zb20uYyAoc29tX3NvbGliX2NyZWF0ZV9pbmZl cmlvcl9ob29rKTogTGlrZXdpc2UuCi0JKiBzeW1maWxlLmMgKG5ld19zeW1maWxlX29iamZpbGUp OiBOZXcgY29tbWVudCBmb3IgYWRkX2ZsYWdzLiAgQ2FsbAotCWNsZWFyX3N5bXRhYl91c2VycyB3 aXRoIEFERF9GTEFHUy4KLQkocmVyZWFkX3N5bWJvbHMpOiBVc2UgcGFyYW1ldGVyIDAgZm9yIGNs ZWFyX3N5bXRhYl91c2Vycy4KLQkoY2xlYXJfc3ltdGFiX3VzZXJzKTogTmV3IHBhcmFtZXRlciBh ZGRfZmxhZ3MuICBEbyBub3QgY2FsbAotCWJyZWFrcG9pbnRfcmVfc2V0IGlmIFNZTUZJTEVfREVG RVJfQlBfUkVTRVQuCi0JKGNsZWFyX3N5bXRhYl91c2Vyc19jbGVhbnVwKTogVXNlIHBhcmFtZXRl ciAwIGZvciBjbGVhcl9zeW10YWJfdXNlcnMuCi0JKiBzeW10YWIuaCAoY2xlYXJfc3ltdGFiX3Vz ZXJzKTogTmV3IHBhcmFtZXRlciBhZGRfZmxhZ3MuCi0KLWdkYi90ZXN0c3VpdGUvCi0yMDEwLTA5 LTMwICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdk Yi5iYXNlL3BpZS1leGVjbC5leHA6IE5ldyBmaWxlLgotCSogZ2RiLmJhc2UvcGllLWV4ZWNsLmM6 IE5ldyBmaWxlLgotCi1JbmRleDogZ2RiLTcuMi9nZGIvaW5mcnVuLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4yLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTAtMTAtMTIgMTg6Mjc6NTguMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvaW5mcnVuLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAw MDAwMDAgKzAyMDAKLUBAIC04NDAsOCArODQwLDE1IEBAIGZvbGxvd19leGVjIChwdGlkX3QgcGlk LCBjaGFyICpleGVjZF9wYXQKLSAgIC8qIFRoYXQgYS5vdXQgaXMgbm93IHRoZSBvbmUgdG8gdXNl LiAqLwotICAgZXhlY19maWxlX2F0dGFjaCAoZXhlY2RfcGF0aG5hbWUsIDApOwotIAotLSAgLyog TG9hZCB0aGUgbWFpbiBmaWxlJ3Mgc3ltYm9scy4gICovCi0tICBzeW1ib2xfZmlsZV9hZGRfbWFp biAoZXhlY2RfcGF0aG5hbWUsIDApOwotKyAgLyogU1lNRklMRV9ERUZFUl9CUF9SRVNFVCBpcyB1 c2VkIGFzIHRoZSBwcm9wZXIgZGlzcGxhY2VtZW50IGZvciBQSUUKLSsgICAgIChQb3NpdGlvbiBJ bmRlcGVuZGVudCBFeGVjdXRhYmxlKSBtYWluIHN5bWJvbCBmaWxlIHdpbGwgZ2V0IGFwcGxpZWQg YnkKLSsgICAgIHNvbGliX2NyZWF0ZV9pbmZlcmlvcl9ob29rIGJlbG93LiAgYnJlYWtwb2ludF9y ZV9zZXQgd291bGQgZmFpbCB0byBpbnNlcnQKLSsgICAgIHRoZSBicmVha3BvaW50cyB3aXRoIHRo ZSB6ZXJvIGRpc3BsYWNlbWVudC4gICovCi0rCi0rICBzeW1ib2xfZmlsZV9hZGQgKGV4ZWNkX3Bh dGhuYW1lLCBTWU1GSUxFX01BSU5MSU5FIHwgU1lNRklMRV9ERUZFUl9CUF9SRVNFVCwKLSsJCSAg IE5VTEwsIDApOwotKwotKyAgc2V0X2luaXRpYWxfbGFuZ3VhZ2UgKCk7Ci0gCi0gI2lmZGVmIFNP TElCX0NSRUFURV9JTkZFUklPUl9IT09LCi0gICBTT0xJQl9DUkVBVEVfSU5GRVJJT1JfSE9PSyAo UElER0VUIChpbmZlcmlvcl9wdGlkKSk7Ci1AQCAtODUxLDYgKzg1OCw4IEBAIGZvbGxvd19leGVj IChwdGlkX3QgcGlkLCBjaGFyICpleGVjZF9wYXQKLSAKLSAgIGppdF9pbmZlcmlvcl9jcmVhdGVk X2hvb2sgKCk7Ci0gCi0rICBicmVha3BvaW50X3JlX3NldCAoKTsKLSsKLSAgIC8qIFJlaW5zZXJ0 IGFsbCBicmVha3BvaW50cy4gIChUaG9zZSB3aGljaCB3ZXJlIHN5bWJvbGljIGhhdmUKLSAgICAg IGJlZW4gcmVzZXQgdG8gdGhlIHByb3BlciBhZGRyZXNzIGluIHRoZSBuZXcgYS5vdXQsIHRoYW5r cwotICAgICAgdG8gc3ltYm9sX2ZpbGVfY29tbWFuZC4uLikgKi8KLUluZGV4OiBnZGItNy4yL2dk Yi9tMzJyLXJvbS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9tMzJyLXJvbS5j CTIwMTAtMDEtMDEgMDg6MzE6MzcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi9nZGIvbTMy ci1yb20uYwkyMDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTE4OCw3ICsx ODgsNyBAQCBtMzJyX2xvYWQgKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnJvbV90dHkpCi0gICAgICB0 aGUgc3RhY2sgbWF5IG5vdCBiZSB2YWxpZCwgYW5kIHRoaW5ncyB3b3VsZCBnZXQgaG9ycmlibHkK LSAgICAgIGNvbmZ1c2VkLi4uICovCi0gCi0tICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7Ci0rICBj bGVhcl9zeW10YWJfdXNlcnMgKDApOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTU1MSw3ICs1 NTEsNyBAQCBtMzJyX3VwbG9hZF9jb21tYW5kIChjaGFyICphcmdzLCBpbnQgZnJvCi0gICAgICB0 aGUgc3RhY2sgbWF5IG5vdCBiZSB2YWxpZCwgYW5kIHRoaW5ncyB3b3VsZCBnZXQgaG9ycmlibHkK LSAgICAgIGNvbmZ1c2VkLi4uICovCi0gCi0tICBjbGVhcl9zeW10YWJfdXNlcnMgKCk7Ci0rICBj bGVhcl9zeW10YWJfdXNlcnMgKDApOwotIH0KLSAKLSAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRv IHNpbGVuY2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLwotSW5kZXg6IGdkYi03LjIvZ2RiL29i amZpbGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAx MC0xMC0xMiAxODoyNzo1Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9vYmpmaWxl cy5jCTIwMTAtMTAtMTIgMTg6Mjk6MzkuMDAwMDAwMDAwICswMjAwCi1AQCAtNjk5LDcgKzY5OSw3 IEBAIGZyZWVfYWxsX29iamZpbGVzICh2b2lkKQotICAgewotICAgICBmcmVlX29iamZpbGUgKG9i amZpbGUpOwotICAgfQotLSAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOwotKyAgY2xlYXJfc3ltdGFi X3VzZXJzICgwKTsKLSB9Ci0gDAotIC8qIFJlbG9jYXRlIE9CSkZJTEUgdG8gTkVXX09GRlNFVFMu ICBUaGVyZSBzaG91bGQgYmUgT0JKRklMRS0+TlVNX1NFQ1RJT05TCi1JbmRleDogZ2RiLTcuMi9n ZGIvcmVtb3RlLW0zMnItc2RpLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3Jl bW90ZS1tMzJyLXNkaS5jCTIwMTAtMDctMDcgMTg6MTU6MTYuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMi9nZGIvcmVtb3RlLW0zMnItc2RpLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAwMDAw MDAgKzAyMDAKLUBAIC0xMzc3LDcgKzEzNzcsNyBAQCBtMzJyX2xvYWQgKGNoYXIgKmFyZ3MsIGlu dCBmcm9tX3R0eSkKLSAgICAgIG1pZ2h0IGJlIHRvIGNhbGwgbm9ybWFsX3N0b3AsIGV4Y2VwdCB0 aGF0IHRoZSBzdGFjayBtYXkgbm90IGJlIHZhbGlkLAotICAgICAgYW5kIHRoaW5ncyB3b3VsZCBn ZXQgaG9ycmlibHkgY29uZnVzZWQuLi4gKi8KLSAKLS0gIGNsZWFyX3N5bXRhYl91c2VycyAoKTsK LSsgIGNsZWFyX3N5bXRhYl91c2VycyAoMCk7Ci0gCi0gICBpZiAoIW5vc3RhcnQpCi0gICAgIHsK LUluZGV4OiBnZGItNy4yL2dkYi9zb2xpYi1zb20uYwotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu b3JpZy9nZGIvc29saWItc29tLmMJMjAxMC0wNS0xNyAwMTo0OTo1OC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4yL2dkYi9zb2xpYi1zb20uYwkyMDEwLTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAw MCArMDIwMAotQEAgLTM1NCw3ICszNTQsNyBAQCBrZWVwX2dvaW5nOgotICAgLyogTWFrZSB0aGUg YnJlYWtwb2ludCBhdCAiX3N0YXJ0IiBhIHNoYXJlZCBsaWJyYXJ5IGV2ZW50IGJyZWFrcG9pbnQu ICAqLwotICAgY3JlYXRlX3NvbGliX2V2ZW50X2JyZWFrcG9pbnQgKHRhcmdldF9nZGJhcmNoLCBh bmFkZHIpOwotIAotLSAgY2xlYXJfc3ltdGFiX3VzZXJzICgpOwotKyAgY2xlYXJfc3ltdGFiX3Vz ZXJzICgwKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUluZGV4OiBnZGItNy4yL2dkYi9zeW1maWxl LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDEwLTEwLTEy IDE4OjI3OjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3N5bWZpbGUuYwkyMDEw LTEwLTEyIDE4OjI5OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwMzYsNyArMTAzNiw3IEBAIHN5 bXNfZnJvbV9vYmpmaWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAKLSAvKiBQZXJmb3JtIHJl cXVpcmVkIGFjdGlvbnMgYWZ0ZXIgZWl0aGVyIHJlYWRpbmcgaW4gdGhlIGluaXRpYWwKLSAgICBz eW1ib2xzIGZvciBhIG5ldyBvYmpmaWxlLCBvciBtYXBwaW5nIGluIHRoZSBzeW1ib2xzIGZyb20g YSByZXVzYWJsZQotLSAgIG9iamZpbGUuICovCi0rICAgb2JqZmlsZS4gIEFERF9GTEFHUyBpcyBh IGJpdG1hc2sgb2YgZW51bSBzeW1maWxlX2FkZF9mbGFncy4gICovCi0gCi0gdm9pZAotIG5ld19z eW1maWxlX29iamZpbGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgYWRkX2ZsYWdzKQot QEAgLTEwNDksNyArMTA0OSw3IEBAIG5ld19zeW1maWxlX29iamZpbGUgKHN0cnVjdCBvYmpmaWxl ICpvYmoKLSAgICAgICAvKiBPSywgbWFrZSBpdCB0aGUgInJlYWwiIHN5bWJvbCBmaWxlLiAgKi8K LSAgICAgICBzeW1maWxlX29iamZpbGUgPSBvYmpmaWxlOwotIAotLSAgICAgIGNsZWFyX3N5bXRh Yl91c2VycyAoKTsKLSsgICAgICBjbGVhcl9zeW10YWJfdXNlcnMgKGFkZF9mbGFncyk7Ci0gICAg IH0KLSAgIGVsc2UgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQX1JFU0VUKSA9PSAw KQotICAgICB7Ci1AQCAtMjUyNyw3ICsyNTI3LDcgQEAgcmVyZWFkX3N5bWJvbHMgKHZvaWQpCi0g ICAgICAgLyogTm90aWZ5IG9iamZpbGVzIHRoYXQgd2UndmUgbW9kaWZpZWQgb2JqZmlsZSBzZWN0 aW9ucy4gICovCi0gICAgICAgb2JqZmlsZXNfY2hhbmdlZCAoKTsKLSAKLS0gICAgICBjbGVhcl9z eW10YWJfdXNlcnMgKCk7Ci0rICAgICAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKLSAgICAgICAv KiBBdCBsZWFzdCBvbmUgb2JqZmlsZSBoYXMgY2hhbmdlZCwgc28gd2UgY2FuIGNvbnNpZGVyIHRo YXQKLSAgICAgICAgICB0aGUgZXhlY3V0YWJsZSB3ZSdyZSBkZWJ1Z2dpbmcgaGFzIGNoYW5nZWQg dG9vLiAgKi8KLSAgICAgICBvYnNlcnZlcl9ub3RpZnlfZXhlY3V0YWJsZV9jaGFuZ2VkICgpOwot QEAgLTI3NDUsMTAgKzI3NDUsMTAgQEAgYWxsb2NhdGVfc3ltdGFiIChjaGFyICpmaWxlbmFtZSwg c3RydWN0IAotIAwKLSAKLSAvKiBSZXNldCBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGluIGdkYiB3aGlj aCBtYXkgY29udGFpbiByZWZlcmVuY2VzIHRvIHN5bWJvbAotLSAgIHRhYmxlIGRhdGEuICAqLwot KyAgIHRhYmxlIGRhdGEuICBBRERfRkxBR1MgaXMgYSBiaXRtYXNrIG9mIGVudW0gc3ltZmlsZV9h ZGRfZmxhZ3MuICAqLwotIAotIHZvaWQKLS1jbGVhcl9zeW10YWJfdXNlcnMgKHZvaWQpCi0rY2xl YXJfc3ltdGFiX3VzZXJzIChpbnQgYWRkX2ZsYWdzKQotIHsKLSAgIC8qIFNvbWVkYXksIHdlIHNo b3VsZCBkbyBiZXR0ZXIgdGhhbiB0aGlzLCBieSBvbmx5IGJsb3dpbmcgYXdheQotICAgICAgdGhl IHRoaW5ncyB0aGF0IHJlYWxseSBuZWVkIHRvIGJlIGJsb3duLiAgKi8KLUBAIC0yNzU4LDcgKzI3 NTgsOCBAQCBjbGVhcl9zeW10YWJfdXNlcnMgKHZvaWQpCi0gICBjbGVhcl9jdXJyZW50X3NvdXJj ZV9zeW10YWJfYW5kX2xpbmUgKCk7Ci0gCi0gICBjbGVhcl9kaXNwbGF5cyAoKTsKLS0gIGJyZWFr cG9pbnRfcmVfc2V0ICgpOwotKyAgaWYgKChhZGRfZmxhZ3MgJiBTWU1GSUxFX0RFRkVSX0JQX1JF U0VUKSA9PSAwKQotKyAgICBicmVha3BvaW50X3JlX3NldCAoKTsKLSAgIHNldF9kZWZhdWx0X2Jy ZWFrcG9pbnQgKDAsIE5VTEwsIDAsIDAsIDApOwotICAgY2xlYXJfcGNfZnVuY3Rpb25fY2FjaGUg KCk7Ci0gICBvYnNlcnZlcl9ub3RpZnlfbmV3X29iamZpbGUgKE5VTEwpOwotQEAgLTI3NzcsNyAr Mjc3OCw3IEBAIGNsZWFyX3N5bXRhYl91c2VycyAodm9pZCkKLSBzdGF0aWMgdm9pZAotIGNsZWFy X3N5bXRhYl91c2Vyc19jbGVhbnVwICh2b2lkICppZ25vcmUpCi0gewotLSAgY2xlYXJfc3ltdGFi X3VzZXJzICgpOwotKyAgY2xlYXJfc3ltdGFiX3VzZXJzICgwKTsKLSB9Ci0gDAotIC8qIE9WRVJM QVlTOgotSW5kZXg6IGdkYi03LjIvZ2RiL3N5bXRhYi5oCi09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu Mi5vcmlnL2dkYi9zeW10YWIuaAkyMDEwLTEwLTEyIDE4OjI3OjU2LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjIvZ2RiL3N5bXRhYi5oCTIwMTAtMTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTE3MCw3ICsxMTcwLDcgQEAgZXh0ZXJuIHZvaWQgc2tpcF9wcm9sb2d1ZV9zYWwg KHN0cnVjdCBzeQotIAotIC8qIHN5bWZpbGUuYyAqLwotIAotLWV4dGVybiB2b2lkIGNsZWFyX3N5 bXRhYl91c2VycyAodm9pZCk7Ci0rZXh0ZXJuIHZvaWQgY2xlYXJfc3ltdGFiX3VzZXJzIChpbnQg YWRkX2ZsYWdzKTsKLSAKLSBleHRlcm4gZW51bSBsYW5ndWFnZSBkZWR1Y2VfbGFuZ3VhZ2VfZnJv bV9maWxlbmFtZSAoY29uc3QgY2hhciAqKTsKLSAKLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvcGllLWV4ZWNsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvcGllLWV4ZWNsLmMJMjAxMC0xMC0xMiAxODoyOToyNC4wMDAwMDAwMDAgKzAyMDAK LUBAIC0wLDAgKzEsNTEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhp cyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2Vm dWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxp ZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5 IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBw cm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8K LSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUg PGFzc2VydC5oPgotKwotK3N0YXRpYyB2b2lkIHBpZV9leGVjbF9tYXJrZXIgKHZvaWQpOwotKwot K2ludAotK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rICBzZXRidWYgKHN0ZG91 dCwgTlVMTCk7Ci0rCi0rI2lmIEJJTiA9PSAxCi0rICBpZiAoYXJnYyA9PSAyKQotKyAgICB7Ci0r ICAgICAgcHJpbnRmICgicGllLWV4ZWNsOiByZS1leGVjOiAlc1xuIiwgYXJndlsxXSk7Ci0rICAg ICAgZXhlY2wgKGFyZ3ZbMV0sIGFyZ3ZbMV0sIE5VTEwpOwotKyAgICAgIGFzc2VydCAoMCk7Ci0r ICAgIH0KLSsjZW5kaWYKLSsKLSsgIHBpZV9leGVjbF9tYXJrZXIgKCk7Ci0rCi0rICByZXR1cm4g MDsKLSt9Ci0rCi0rLyogcGllX2V4ZWNsX21hcmtlciBtdXN0IGJlIG9uIGEgZGlmZmVyZW50IGFk ZHJlc3MgdGhhbiBpbiBgcGllLWV4ZWNsMi5jJy4gICovCi0rCi0rdm9sYXRpbGUgaW50IHY7Ci0r Ci0rc3RhdGljIHZvaWQKLStwaWVfZXhlY2xfbWFya2VyICh2b2lkKQotK3sKLSsgIHYgPSAxOwot K30KLUluZGV4OiBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvcGllLWV4ZWNsLmV4cAot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCAr MDAwMAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9waWUtZXhlY2wuZXhwCTIw MTAtMTAtMTIgMTg6Mjk6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtMCwwICsxLDk0IEBACi0rIyBD b3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rIyBUaGUgcHJvYmxlbSB3YXMgZHVlIHRvIGFtZDY0 X3NraXBfcHJvbG9ndWUgYXR0ZW1wdGluZyB0byBhY2Nlc3MgaW5mZXJpb3IKLSsjIG1lbW9yeSBi ZWZvcmUgdGhlIFBJRSAoUG9zaXRpb24gSW5kZXBlbmRlbnQgRXhlY3V0YWJsZSkgZ2V0cyByZWxv Y2F0ZWQuCi0rCi0raWYgeyAhW2lzdGFyZ2V0ICotbGludXgqXX0gewotKyAgICBjb250aW51ZQot K30KLSsKLStzZXQgdGVzdGZpbGUgInBpZS1leGVjbCIKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxl fS5jCi0rc2V0IGV4ZWN1dGFibGUxICR7dGVzdGZpbGV9MQotK3NldCBleGVjdXRhYmxlMiAke3Rl c3RmaWxlfTIKLStzZXQgYmluZmlsZTEgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke2V4ZWN1dGFibGUx fQotK3NldCBiaW5maWxlMiAke29iamRpcn0vJHtzdWJkaXJ9LyR7ZXhlY3V0YWJsZTJ9Ci0rCi0r IyBVc2UgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYWNjb3JkaW5nIHRvIGBCSU4nIGFzIEdEQiBy ZW1lbWJlcnMgdGhlIHNvdXJjZQotKyMgZmlsZSBuYW1lIG9mIHRoZSBicmVha3BvaW50LgotKwot K3NldCBvcHRzIFtsaXN0IGRlYnVnIHthZGRpdGlvbmFsX2ZsYWdzPS1mUElFIC1waWV9XQotK2lm IHtbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFibGUxICRzcmNmaWxl IFtjb25jYXQgJG9wdHMge2FkZGl0aW9uYWxfZmxhZ3M9LURCSU49MX1dXSA9PSAiIgotKyAgICB8 fCBbYnVpbGRfZXhlY3V0YWJsZSAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFibGUyICRzcmNmaWxl IFtjb25jYXQgJG9wdHMge2FkZGl0aW9uYWxfZmxhZ3M9LURCSU49Mn1dXSA9PSAiIn0gewotKyAg ICByZXR1cm4gLTEKLSt9Ci0rCi0rY2xlYW5fcmVzdGFydCAke2V4ZWN1dGFibGUxfQotKwotK2dk Yl90ZXN0X25vX291dHB1dCAic2V0IGFyZ3MgJHtiaW5maWxlMn0iCi0rCi0raWYgIVtydW50b19t YWluXSB7Ci0rICAgIHJldHVybiAtMQotK30KLSsKLSsjIERvIG5vdCBzdG9wIG9uIGBtYWluJyBh ZnRlciByZS1leGVjLgotK2RlbGV0ZV9icmVha3BvaW50cwotKwotK2dkYl9icmVha3BvaW50ICJw aWVfZXhlY2xfbWFya2VyIgotK2dkYl90ZXN0ICJpbmZvIGJyZWFrcG9pbnRzIiAiLioiICIiCi0r Ci0rc2V0IGFkZHIxICIiCi0rc2V0IHRlc3QgInBpZV9leGVjbF9tYXJrZXIgYWRkcmVzcyBmaXJz dCIKLStnZGJfdGVzdF9tdWx0aXBsZSAicC94ICZwaWVfZXhlY2xfbWFya2VyIiAkdGVzdCB7Ci0r ICAgIC1yZSAiID0gKDB4XFswLTlhLWZcXSspXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJc2V0IGFk ZHIxICRleHBlY3Rfb3V0KDEsc3RyaW5nKQotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSt9Ci0rdmVy Ym9zZSAtbG9nICJhZGRyMSBpcyAkYWRkcjEiCi0rCi0rc2V0IHRlc3QgImNvbnRpbnVlIgotK2dk Yl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJlICJFcnJvciBpbiByZS1zZXR0 aW5nIGJyZWFrcG9pbnQiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiQ2Fubm90 IGFjY2VzcyBtZW1vcnkiIHsKLSsJZmFpbCAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAicGllLWV4 ZWNsOiByZS1leGVjLipleGVjdXRpbmcgbmV3IHByb2dyYW0uKlxyXG5CcmVha3BvaW50IFxbMC05 XF0rLFxbXlxyXG5cXSogcGllX2V4ZWNsX21hcmtlciAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0r CXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStnZGJfdGVzdCAiaW5mbyBicmVha3BvaW50cyIg Ii4qIiAiIgotKwotK3NldCBhZGRyMiAiIgotK3NldCB0ZXN0ICJwaWVfZXhlY2xfbWFya2VyIGFk ZHJlc3Mgc2Vjb25kIgotK2dkYl90ZXN0X211bHRpcGxlICJwL3ggJnBpZV9leGVjbF9tYXJrZXIi ICR0ZXN0IHsKLSsgICAgLXJlICIgPSAoMHhcWzAtOWEtZlxdKylcclxuJGdkYl9wcm9tcHQgJCIg ewotKwlzZXQgYWRkcjIgJGV4cGVjdF9vdXQoMSxzdHJpbmcpCi0rCXBhc3MgJHRlc3QKLSsgICAg fQotK30KLSt2ZXJib3NlIC1sb2cgImFkZHIyIGlzICRhZGRyMiIKLSsKLSsjIEVuc3VyZSB3ZSBj YW5ub3QgZ2V0IGEgZmFsc2UgUEFTUyBhbmQgdGhlIGluZmVyaW9yIGhhcyByZWFsbHkgY2hhbmdl ZC4KLStzZXQgdGVzdCAicGllX2V4ZWNsX21hcmtlciBhZGRyZXNzIGhhcyBjaGFuZ2VkIgotK2lm IFtzdHJpbmcgZXF1YWwgJGFkZHIxICRhZGRyMl0gewotKyAgICBmYWlsICR0ZXN0Ci0rfSBlbHNl IHsKLSsgICAgcGFzcyAkdGVzdAotK30KCmRpZmYgLS1naXQgYS9nZGItZm9ydHJhbi1jb21tb24u cGF0Y2ggYi9nZGItZm9ydHJhbi1jb21tb24ucGF0Y2gKaW5kZXggNjNmYTgxYy4uYTcwYjc4MCAx MDA2NDQKLS0tIGEvZ2RiLWZvcnRyYW4tY29tbW9uLnBhdGNoCisrKyBiL2dkYi1mb3J0cmFuLWNv bW1vbi5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dk Yi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9kd2FyZjJyZWFk LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL2R3YXJmMnJl YWQuYwkyMDEwLTA3LTEzIDAwOjEzOjAyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwkyMDEwLTA3LTEzIDAwOjI2OjI1LjAwMDAwMDAwMCAr MDIwMAotQEAgLTU3MjcsMTIgKzU3MjcsMTQgQEAgcmVhZF9zZXRfdHlwZSAoc3RydWN0IGRpZV9p bmZvICpkaWUsIHN0cgorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvZHdhcmYycmVh ZC5jCTIwMTAtMTEtMTYgMDg6MTk6NTQuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTEtMTYgMDg6MjU6MjEuMDAwMDAwMDAwICsw MTAwCitAQCAtNzMxNSwxMiArNzMxNSwxNCBAQCByZWFkX3NldF90eXBlIChzdHJ1Y3QgZGllX2lu Zm8gKmRpZSwgc3RyCiAgICByZXR1cm4gc2V0X2RpZV90eXBlIChkaWUsIHNldF90eXBlLCBjdSk7 CiAgfQogIApAQCAtMTksNyArMTksNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv ZHdhcmYycmVhZC5jCiAgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyOwogICAgc3RydWN0IHN5bWJv bCAqc3ltOwogICAgQ09SRV9BRERSIGJhc2UgPSAoQ09SRV9BRERSKSAwOwotQEAgLTU3NTcsMTAg KzU3NTksNDAgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAg LTczNDUsMTAgKzczNDcsNDAgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLAogICAgICB9CiAgICBpZiAoZGllLT5jaGlsZCAhPSBOVUxMKQogICAgICB7CkBAIC01OCw5 ICs1OCw5IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9kd2FyZjJyZWFkLmMKICsK ICsJICAvKiBVbmRvY3VtZW50ZWQgaW4gRFdBUkYzLCB3aGVuIGl0IGNhbiBiZSBwcmVzZW50PyAg Ki8KICAJICBhdHRyID0gZHdhcmYyX2F0dHIgKGNoaWxkX2RpZSwgRFdfQVRfZGF0YV9tZW1iZXJf bG9jYXRpb24sIGN1KTsKLSAJICBpZiAoYXR0cikKKyAJICBpZiAoc3ltICE9IE5VTEwgJiYgYXR0 ciAhPSBOVUxMKQogIAkgICAgewotQEAgLTU3NzgsOCArNTgxMCwyNSBAQCByZWFkX2NvbW1vbl9i bG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCitAQCAtNzM2Niw4ICs3Mzk4LDI1IEBAIHJlYWRf Y29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICAgICAgU1lNQk9MX1ZBTFVF X0FERFJFU1MgKHN5bSkgPSBiYXNlICsgYnl0ZV9vZmZzZXQ7CiAgCSAgICAgIGFkZF9zeW1ib2xf dG9fbGlzdCAoc3ltLCAmZ2xvYmFsX3N5bWJvbHMpOwogIAkgICAgfQpAQCAtODYsNyArODYsNyBA QCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgICAgIH0KICB9 CiAgCi1AQCAtOTEwNiw2ICs5MTU1LDEzIEBAIG5ld19zeW1ib2wgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QKK0BAIC0xMDk1NCw2ICsxMTAwMywxMyBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0 cnVjdCBkaWVfaW5mbyAqZGllLCBzCiAgCSAgICB7CiAgCSAgICAgIHZhcl9kZWNvZGVfbG9jYXRp b24gKGF0dHIsIHN5bSwgY3UpOwogIAkgICAgICBhdHRyMiA9IGR3YXJmMl9hdHRyIChkaWUsIERX X0FUX2V4dGVybmFsLCBjdSk7CkBAIC05NywxMiArOTcsMTIgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL2R3YXJmMnJlYWQuYwogKwkJICAmJiBkaWUtPnBhcmVudC0+dGFnID09IERX X1RBR19jb21tb25fYmxvY2spCiArCQlhdHRyMiA9IE5VTEw7CiArCi0gCSAgICAgIGlmIChhdHRy MiAmJiAoRFdfVU5TTkQgKGF0dHIyKSAhPSAwKSkKLSAJCXsKLSAJCSAgc3RydWN0IHBlbmRpbmcg KipsaXN0X3RvX2FkZDsKLUBAIC05Mjc3LDYgKzkzMzMsMTEgQEAgbmV3X3N5bWJvbCAoc3RydWN0 IGRpZV9pbmZvICpkaWUsIHN0cnVjdAorIAkgICAgICBpZiAoU1lNQk9MX0NMQVNTIChzeW0pID09 IExPQ19TVEFUSUMKKyAJCSAgJiYgU1lNQk9MX1ZBTFVFX0FERFJFU1MgKHN5bSkgPT0gMAorIAkJ ICAmJiAhZHdhcmYyX3Blcl9vYmpmaWxlLT5oYXNfc2VjdGlvbl9hdF96ZXJvKQorQEAgLTExMTI2 LDYgKzExMTgyLDExIEBAIG5ld19zeW1ib2xfZnVsbCAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHMK ICAJICBTWU1CT0xfQ0xBU1MgKHN5bSkgPSBMT0NfVFlQRURFRjsKLSAJICBhZGRfc3ltYm9sX3Rv X2xpc3QgKHN5bSwgJmdsb2JhbF9zeW1ib2xzKTsKKyAJICBsaXN0X3RvX2FkZCA9ICZnbG9iYWxf c3ltYm9sczsKICAJICBicmVhazsKICsJY2FzZSBEV19UQUdfY29tbW9uX2Jsb2NrOgogKwkgIFNZ TUJPTF9DTEFTUyAoc3ltKSA9IExPQ19TVEFUSUM7CkBAIC0xMTIsMTAgKzExMiwxMCBAQCBJbmRl eDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZHdhcmYycmVhZC5jCiAgCWRlZmF1bHQ6CiAgCSAg LyogTm90IGEgdGFnIHdlIHJlY29nbml6ZS4gIEhvcGVmdWxseSB3ZSBhcmVuJ3QgcHJvY2Vzc2lu ZwogIAkgICAgIHRyYXNoIGRhdGEsIGJ1dCBzaW5jZSB3ZSBtdXN0IHNwZWNpZmljYWxseSBpZ25v cmUgdGhpbmdzCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZi1sYW5nLmMJMjAxMC0wNy0xMyAwMDoyNDowNC4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9mLWxhbmcuYwkyMDEwLTA3 LTEzIDAwOjI1OjU2LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3Jp Zy9nZGIvZi1sYW5nLmMJMjAxMC0xMS0xNiAwODoyMTo0Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcuYwkyMDEwLTExLTE2IDA4OjIyOjA1LjAwMDAw MDAwMCArMDEwMAogQEAgLTQ0MywyNyArNDQzLDMgQEAgX2luaXRpYWxpemVfZl9sYW5ndWFnZSAo dm9pZCkKICAKICAgIGFkZF9sYW5ndWFnZSAoJmZfbGFuZ3VhZ2VfZGVmbik7CkBAIC0xNDQsMTAg KzE0NCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvZi1sYW5nLmMKIC0gICAg fQogLSAgcmV0dXJuIChOVUxMKTsKIC19Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv Zi1sYW5nLmgKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcuaAogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvZi1sYW5nLmgJMjAxMC0wNy0x MyAwMDoyNDowNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9m LWxhbmcuaAkyMDEwLTA3LTEzIDAwOjI1OjU2LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvZi1sYW5nLmgJMjAxMC0xMS0xNiAwODoyMTo0Ni4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9mLWxhbmcuaAkyMDEwLTExLTE2 IDA4OjIyOjA1LjAwMDAwMDAwMCArMDEwMAogQEAgLTUyLDM2ICs1Miw4IEBAIGVudW0gZjkwX3Jh bmdlX3R5cGUKICAgICAgTk9ORV9CT1VORF9ERUZBVUxUCQkvKiAiKGxvdzpoaWdoKSIgICovCiAg ICB9OwpAQCAtMTg1LDEwICsxODUsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L2YtbGFuZy5oCiAgCiAgLyogV2hlbiByZWFzb25hYmxlIGFycmF5IGJvdW5kcyBjYW5ub3QgYmUg ZmV0Y2hlZCwgc3VjaCBhcyB3aGVuIAogICAgIHlvdSBhc2sgdG8gJ210IHByaW50IHN5bWJvbHMn IGFuZCB0aGVyZSBpcyBubyBzdGFjayBmcmFtZSBhbmQgCi1JbmRleDogZ2RiLTcuMS45MC4yMDEw MDcxMS9nZGIvZi12YWxwcmludC5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZi12 YWxwcmludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi9m LXZhbHByaW50LmMJMjAxMC0wNy0xMyAwMDoyNDoyNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4xLjkwLjIwMTAwNzExL2dkYi9mLXZhbHByaW50LmMJMjAxMC0wNy0xMyAwMDozMjowNS4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2YtdmFscHJpbnQu YwkyMDEwLTExLTE2IDA4OjIxOjQ2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL2YtdmFscHJpbnQuYwkyMDEwLTExLTE2IDA4OjIyOjA1LjAwMDAwMDAwMCArMDEw MAogQEAgLTM0LDYgKzM0LDggQEAKICAjaW5jbHVkZSAiZ2RiY29yZS5oIgogICNpbmNsdWRlICJj b21tYW5kLmgiCkBAIC0zNzEsMTEgKzM3MSwxMSBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcx MS9nZGIvZi12YWxwcmludC5jCiAgfQogIAogIHZvaWQKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAw NzExL2dkYi9zdGFjay5jCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3RhY2suYwog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3RhY2suYwkyMDEw LTA3LTAxIDE3OjM2OjE3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL3N0YWNrLmMJMjAxMC0wNy0xMyAwMDoyOTo0OS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xNDg0 LDYgKzE0ODQsOCBAQCBpdGVyYXRlX292ZXJfYmxvY2tfbG9jYWxzIChzdHJ1Y3QgYmxvY2sgCist LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9zdGFjay5jCTIwMTAtMDktMzAgMTI6Mjk6 MDAuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3RhY2suYwky MDEwLTExLTE2IDA4OjIyOjA1LjAwMDAwMDAwMCArMDEwMAorQEAgLTE0OTAsNiArMTQ5MCw4IEBA IGl0ZXJhdGVfb3Zlcl9ibG9ja19sb2NhbHMgKHN0cnVjdCBibG9jayAKICAJY2FzZSBMT0NfQ09N UFVURUQ6CiAgCSAgaWYgKFNZTUJPTF9JU19BUkdVTUVOVCAoc3ltKSkKICAJICAgIGJyZWFrOwpA QCAtMzg0LDExICszODQsMTEgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3N0YWNr LmMKICAJICAoKmNiKSAoU1lNQk9MX1BSSU5UX05BTUUgKHN5bSksIHN5bSwgY2JfZGF0YSk7CiAg CSAgYnJlYWs7CiAgCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc3ltdGFiLmgKK0lu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW10YWIuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvc3ltdGFiLmgJMjAxMC0wNy0xMiAyMzowNzozMy4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi9zeW10YWIuaAkyMDEw LTA3LTEzIDAwOjI3OjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM5Niw3ICszOTYsMTAgQEAgdHlw ZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3RhZworLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9n ZGIvc3ltdGFiLmgJMjAxMC0xMS0xNiAwNzo1Mzo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi9zeW10YWIuaAkyMDEwLTExLTE2IDA4OjIyOjA1LjAwMDAwMDAw MCArMDEwMAorQEAgLTQwOCw3ICs0MDgsMTAgQEAgdHlwZWRlZiBlbnVtIGRvbWFpbl9lbnVtX3Rh ZwogICAgRlVOQ1RJT05TX0RPTUFJTiwKICAKICAgIC8qIEFsbCBkZWZpbmVkIHR5cGVzICovCkBA IC00MDAsMTAgKzQwMCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvc3ltdGFi LmgKICB9CiAgZG9tYWluX2VudW07CiAgCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5leHAKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21t b24tYmxvY2suZXhwCTIwMTAtMDctMTMgMDA6MjU6NTYuMDAwMDAwMDAwICswMjAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5l eHAJMjAxMC0xMS0xNiAwODoyMjowNS4wMDAwMDAwMDAgKzAxMDAKIEBAIC0wLDAgKzEsMTAxIEBA CiArIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAg LTUwNiwxMCArNTA2LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAogK2dkYl90ZXN0ICJwIGl4X3giICIgPSAx ICoiICJwIGl4X3ggaW4iCiArZ2RiX3Rlc3QgInAgaXlfeSIgIiA9IDIgKiIgInAgaXlfeSBpbiIK ICtnZGJfdGVzdCAicCBpel96MiIgIiA9IDMgKiIgInAgaXpfejIgaW4iCi1JbmRleDogZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2NvbW1vbi1ibG9jay5mOTAK K0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29t bW9uLWJsb2NrLmY5MAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZjkwCTIwMTAtMDctMTMgMDA6MjU6NTYuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2NvbW1vbi1ibG9jay5mOTAJMjAxMC0xMS0xNiAwODoyMjowNS4wMDAwMDAwMDAgKzAxMDAK IEBAIC0wLDAgKzEsNjcgQEAKICshIENvcHlyaWdodCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRh dGlvbiwgSW5jLgogKyEKCmRpZmYgLS1naXQgYS9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0 Y2ggYi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKaW5kZXggYzc3MGE3Ny4uMWMxNDVh YyAxMDA2NDQKLS0tIGEvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCisrKyBiL2dkYi1n ZGItYWRkLWluZGV4LXNjcmlwdC5wYXRjaApAQCAtNDAsMTEgKzQwLDExIEBAIFN1YmplY3Q6IFtQ QVRDSCA0LzRdIGFkZCBnZGItYWRkLWluZGV4CiAgNSBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRp b25zKCspLCAxIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDc1NSBnZGIvZ2RiLWFkZC1p bmRleAogCi1kaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1p bmRleCA2ZGJiMjg0Li44MjEwYTJjIDEwMDY0NAotLS0tIGEvZ2RiL01ha2VmaWxlLmluCi0rKysg Yi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0xMDE4LDcgKzEwMTgsMTYgQEAgaW5zdGFsbC1vbmx5OiAk KENPTkZJR19JTlNUQUxMKSB4bWwtc3lzY2FsbC1pbnN0YWxsCitJbmRleDogZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvTWFrZWZpbGUuaW4KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTAx MTE2Lm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTAtMTEtMTYgMDg6MDM6MTcuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvTWFrZWZpbGUuaW4JMjAxMC0xMS0xNiAw ODo0Nzo0NS4wMDAwMDAwMDAgKzAxMDAKK0BAIC05ODYsNyArOTg2LDE2IEBAIGluc3RhbGwtb25s eTogaW5zdGFsbC1nc3RhY2sgJChDT05GSUdfSU4KICAJCSQoU0hFTEwpICQoc3JjZGlyKS8uLi9t a2luc3RhbGxkaXJzIFwKICAJCQkkKERFU1RESVIpJChtYW4xZGlyKSA7IFwKICAJCSQoSU5TVEFM TF9EQVRBKSAkKHNyY2RpcikvZ2RiLjEgXApAQCAtNjIsMTEgKzYyLDExIEBAIGluZGV4IDZkYmIy ODQuLjgyMTBhMmMgMTAwNjQ0CiAgCUAkKE1BS0UpIERPPWluc3RhbGwgIkRPRElSUz0kKFNVQkRJ UlMpIiAkKEZMQUdTX1RPX1BBU1MpIHN1YmRpcl9kbwogIC5QSE9OWTogaW5zdGFsbC10dWkKICBp bnN0YWxsLXR1aToKLWRpZmYgLS1naXQgYS9nZGIvZG9jL2dkYi50ZXhpbmZvIGIvZ2RiL2RvYy9n ZGIudGV4aW5mbwotaW5kZXggNjkxNDFlMy4uNDU3ZTZiNCAxMDA2NDQKLS0tLSBhL2dkYi9kb2Mv Z2RiLnRleGluZm8KLSsrKyBiL2dkYi9kb2MvZ2RiLnRleGluZm8KLUBAIC0xNTA0NSw2ICsxNTA0 NSwxNCBAQCBUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRhdGlvbiBvbiBpbmRpY2VzLiAg VGhleSBvbmx5IHdvcmsgd2hlbgorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2RvYy9n ZGIudGV4aW5mbworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTAtMTEtMTYgMDg6MDQ6MTguMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTAtMTEtMTYgMDg6NTY6 MzAuMDAwMDAwMDAwICswMTAwCitAQCAtMTU1MDAsNiArMTU1MDAsMTQgQEAgVGhlcmUgYXJlIGN1 cnJlbnRseSBzb21lIGxpbWl0YXRpb24gb24gaQogIGZvciBEV0FSRiBkZWJ1Z2dpbmcgaW5mb3Jt YXRpb24sIG5vdCBzdGFicy4gIEFuZCwgdGhleSBkbyBub3QKICBjdXJyZW50bHkgd29yayBmb3Ig cHJvZ3JhbXMgdXNpbmcgQWRhLgogIApAQCAtNzgsMTQgKzc4LDEzIEBAIGluZGV4IDY5MTQxZTMu LjQ1N2U2YjQgMTAwNjQ0CiArJCBnZGItYWRkLWluZGV4IHN5bWZpbGUKICtAZW5kIHNtYWxsZXhh bXBsZQogKwotIAogIEBub2RlIFN5bWJvbCBFcnJvcnMKICBAc2VjdGlvbiBFcnJvcnMgUmVhZGlu ZyBTeW1ib2wgRmlsZXMKLWRpZmYgLS1naXQgYS9nZGIvZ2RiLWFkZC1pbmRleCBiL2dkYi9nZGIt YWRkLWluZGV4Ci1uZXcgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggMDAwMDAwMC4uYzlhMDNiMAot LS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL2dkYi1hZGQtaW5kZXgKKyAKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi9nZGItYWRkLWluZGV4Cis9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxs CTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvZ2RiLWFkZC1pbmRleAkyMDEwLTExLTE2IDA4OjQ3OjQ1LjAwMDAwMDAwMCArMDEw MAogQEAgLTAsMCArMSwzMCBAQAogKyMhIC9iaW4vc2gKICsKQEAgLTExNyw2ICsxMTYsMyBAQCBp bmRleCAwMDAwMDAwLi5jOWEwM2IwCiArZmkKICsKICtleGl0IDAKLS0tIAotMS42LjIuNQotCgpk aWZmIC0tZ2l0IGEvZ2RiLWdkYmluZGV4LWFkYS1yZWdyZXNzaW9uLnBhdGNoIGIvZ2RiLWdkYmlu ZGV4LWFkYS1yZWdyZXNzaW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5 ZDY3ZDU4Li4wMDAwMDAwCi0tLSBhL2dkYi1nZGJpbmRleC1hZGEtcmVncmVzc2lvbi5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9n ZGItcGF0Y2hlcy8yMDEwLTA5L21zZzAwMjczLmh0bWwKLVN1YmplY3Q6IFtwYXRjaF0gLmdkYl9p bmRleDogRml4IEFkYSByZWdyZXNzaW9uCi0KLUhpLAotCi1vbiBhIHN5c3RlbSB3aXRoIGxpYnJh cmllcyB1c2luZyAuZ2RiX2luZGV4IGFsbCB0aGUgQWRhIHRlc3RjYXNlcyBGQUlMOgotCi1SdW5u aW5nIC4vZ2RiLmFkYS9wcmludF9wYy5leHAgLi4uCi1GQUlMOiBnZGIuYWRhL3ByaW50X3BjLmV4 cDogc3RhcnQgaW5mZXJpb3IgKEdEQiBpbnRlcm5hbCBlcnJvcikKLUZBSUw6IGdkYi5hZGEvcHJp bnRfcGMuZXhwOiBwIC94ICRwYwotCi1kd2FyZjJyZWFkLmM6MjM3NDogaW50ZXJuYWwtZXJyb3I6 IG1hcF9hZGFfc3ltdGFicyBjYWxsZWQgdmlhIGluZGV4IG1ldGhvZAotCi1GQUlsIGlzIG9uIEZl ZG9yYSAxNCBzbmFwc2hvdCB1c2luZyBnY2MtZGVidWdpbmZvLTQuNS4xLTMuZmMxNC54ODZfNjQg ZmlsZToKLQkvdXNyL2xpYi9kZWJ1Zy9saWI2NC9saWJnY2Nfcy00LjUuMS0yMDEwMDkwNy5zby4x LmRlYnVnCi0KLVRoZSByZWdyZXNzaW9ucyBnZXQgZml4ZWQgb24geDg2XzY0LWZlZG9yYTE0c25h cHNob3QtbGludXgtZ251IGJ5IHRoZSBhdHRhY2hlZAotcGF0Y2guICBObyByZWdyZXNzaW9ucyBv biB7eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCi0K LUR1cmluZyBteSB0ZXN0cyB3aXRoIGBzZXQgbGFuZ3VhZ2UgYWRhJyBJIGNvdWxkIG5vdCBsb29r dXAgbm9uLUFkYSBzeW1ib2xzCi1hbnl3YXkgc28gSSBiZWxpZXZlIHRoZSBwYXRjaCBpcyBPSyBi dXQgc3VyZSBpdCBuZWVkcyBhbiBBZGEtd2lzZSByZXZpZXcuCi0KLQotVGhhbmtzLAotSmFuCi0K LQotZ2RiLwotMjAxMC0wOS0xNCAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JKiBkd2FyZjJyZWFkLmMgKGR3Ml9tYXBfYWRhX3N5bXRhYnMpOiBSZW1vdmUg dGhlIGludGVybmFsX2Vycm9yLgotCVVwZGF0ZSB0aGUgY29tbWVudC4KLQotLS0tIGEvZ2RiL2R3 YXJmMnJlYWQuYwotKysrIGIvZ2RiL2R3YXJmMnJlYWQuYwotQEAgLTIzNjksMTAgKzIzNjksOSBA QCBkdzJfbWFwX2FkYV9zeW10YWJzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICAg ZG9tYWluX2VudW0gbmFtZXNwYWNlLCBpbnQgd2lsZCwKLSAJCSAgICAgdm9pZCAqZGF0YSkKLSB7 Ci0tICAvKiBGb3Igbm93LCB3ZSBkb24ndCBzdXBwb3J0IEFkYSwgc28gdGhpcyBmdW5jdGlvbiBj YW4ndCBiZQotLSAgICAgcmVhY2hlZC4gICovCi0tICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18s IF9fTElORV9fLAotLQkJICBfKCJtYXBfYWRhX3N5bXRhYnMgY2FsbGVkIHZpYSBpbmRleCBtZXRo b2QiKSk7Ci0rICAvKiBGb3Igbm93LCB3ZSBkb24ndCBzdXBwb3J0IEFkYS4gIFN0aWxsIHRoZSBm dW5jdGlvbiBjYW4gYmUgY2FsbGVkIGlmIHRoZQotKyAgICAgY3VycmVudCBsYW5ndWFnZSBpcyBB ZGEgZm9yIGEgbm9uLUFkYSBvYmpmaWxlIHVzaW5nIEdOVSBpbmRleC4gIEFzIEFkYQotKyAgICAg ZG9lcyBub3QgbG9vayBmb3Igbm9uLUFkYSBzeW1ib2xzIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGp1 c3QgcmV0dXJuLiAgKi8KLSB9Ci0gCi0gc3RhdGljIHZvaWQKLQoKZGlmZiAtLWdpdCBhL2dkYi1n ZGJpbmRleC1iaWdlbmRpYW4ucGF0Y2ggYi9nZGItZ2RiaW5kZXgtYmlnZW5kaWFuLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGQ0ZjRmLi4wMDAwMDAwCi0tLSBhL2dkYi1n ZGJpbmRleC1iaWdlbmRpYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5NiArMCwwIEBACi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDQzNC5odG1s Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA5L21zZzAwMTU1Lmh0bWwK LQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDkvMjQgMTQ6NDc6NTIJMS4xMjIwMgotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDkvMjQgMTY6MTE6NDQJMS4xMjIwMwotIyMgLTEsMyAr MSw5IEBACi0rMjAxMC0wOS0yNCAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotKwot KwkqIGR3YXJmMnJlYWQuYyAoZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nKTogQWRkIG1pc3Np bmcKLSsJTUFZQkVfU1dBUHMuCi0rCShkdzJfbWFwX3N5bWJvbF9uYW1lcyk6IExpa2V3aXNlLgot KwotIDIwMTAtMDktMjQgIFNhbWkgV2FnaWFhbGxhICA8c3dhZ2lhYWxAcmVkaGF0LmNvbT4KLSAK LSAJKiB2YWxvcHMuYyAoZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCk6IHJlcGxhY2Ug aW5jb3JyZWN0Ci0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC8wOS8yMiAxOToyMjo0NAkx LjQ2MAotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTAvMDkvMjQgMTY6MTE6NDYJMS40NjEK LUBAIC0yMzgyLDEwICsyMzgyLDEyIEBACi0gewotICAgaW50IGk7Ci0gICBvZmZzZXRfdHlwZSBp dGVyOwotKyAgc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXg7Ci0gCi0gICBkdzJfc2V0dXAgKG9i amZpbGUpOwotICAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlKQotICAgICBy ZXR1cm47Ci0rICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFibGU7Ci0gCi0g ICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0gCQkg ICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi1AQCAtMjQx MSwyOCArMjQxMywyNCBAQAotIAl9Ci0gICAgIH0KLSAKLS0gIGZvciAoaXRlciA9IDA7Ci0tICAg ICAgIGl0ZXIgPCBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZV9z bG90czsKLS0gICAgICAgKytpdGVyKQotKyAgZm9yIChpdGVyID0gMDsgaXRlciA8IGluZGV4LT5p bmRleF90YWJsZV9zbG90czsgKytpdGVyKQotICAgICB7Ci0gICAgICAgb2Zmc2V0X3R5cGUgaWR4 ID0gMiAqIGl0ZXI7Ci0gICAgICAgY29uc3QgY2hhciAqbmFtZTsKLSAgICAgICBvZmZzZXRfdHlw ZSAqdmVjLCB2ZWNfbGVuLCB2ZWNfaWR4OwotIAotLSAgICAgIGlmIChkd2FyZjJfcGVyX29iamZp bGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdID09IDAKLS0JICAmJiBkd2FyZjJfcGVy X29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHggKyAxXSA9PSAwKQotKyAgICAg IGlmIChpbmRleC0+aW5kZXhfdGFibGVbaWR4XSA9PSAwICYmIGluZGV4LT5pbmRleF90YWJsZVtp ZHggKyAxXSA9PSAwKQotIAljb250aW51ZTsKLSAKLS0gICAgICBuYW1lID0gKGR3YXJmMl9wZXJf b2JqZmlsZS0+aW5kZXhfdGFibGUtPmNvbnN0YW50X3Bvb2wKLS0JICAgICAgKyBkd2FyZjJfcGVy X29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90YWJsZVtpZHhdKTsKLSsgICAgICBuYW1lID0g aW5kZXgtPmNvbnN0YW50X3Bvb2wgKyBNQVlCRV9TV0FQIChpbmRleC0+aW5kZXhfdGFibGVbaWR4 XSk7Ci0gCi0gICAgICAgaWYgKCEgKCpuYW1lX21hdGNoZXIpIChuYW1lLCBkYXRhKSkKLSAJY29u dGludWU7Ci0gCi0gICAgICAgLyogVGhlIG5hbWUgd2FzIG1hdGNoZWQsIG5vdyBleHBhbmQgY29y cmVzcG9uZGluZyBDVXMgdGhhdCB3ZXJlCi0gCSBtYXJrZWQuICAqLwotLSAgICAgIHZlYyA9IChv ZmZzZXRfdHlwZSAqKSAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+Y29uc3RhbnRf cG9vbAotLQkJCSAgICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5pbmRleF90 YWJsZVtpZHggKyAxXSk7Ci0rICAgICAgdmVjID0gKG9mZnNldF90eXBlICopIChpbmRleC0+Y29u c3RhbnRfcG9vbAotKwkJCSAgICAgKyBNQVlCRV9TV0FQIChpbmRleC0+aW5kZXhfdGFibGVbaWR4 ICsgMV0pKTsKLSAgICAgICB2ZWNfbGVuID0gTUFZQkVfU1dBUCAodmVjWzBdKTsKLSAgICAgICBm b3IgKHZlY19pZHggPSAwOyB2ZWNfaWR4IDwgdmVjX2xlbjsgKyt2ZWNfaWR4KQotIAl7Ci1AQCAt MjQ3NiwyNSArMjQ3NCwyNCBAQAotIAkJICAgICAgdm9pZCAqZGF0YSkKLSB7Ci0gICBvZmZzZXRf dHlwZSBpdGVyOwotKyAgc3RydWN0IG1hcHBlZF9pbmRleCAqaW5kZXg7Ci0rCi0gICBkdzJfc2V0 dXAgKG9iamZpbGUpOwotIAotICAgaWYgKCFkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxl KQotICAgICByZXR1cm47Ci0rICBpbmRleCA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+aW5kZXhfdGFi bGU7Ci0gCi0tICBmb3IgKGl0ZXIgPSAwOwotLSAgICAgICBpdGVyIDwgZHdhcmYyX3Blcl9vYmpm aWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFibGVfc2xvdHM7Ci0tICAgICAgICsraXRlcikKLSsg IGZvciAoaXRlciA9IDA7IGl0ZXIgPCBpbmRleC0+aW5kZXhfdGFibGVfc2xvdHM7ICsraXRlcikK LSAgICAgewotICAgICAgIG9mZnNldF90eXBlIGlkeCA9IDIgKiBpdGVyOwotICAgICAgIGNvbnN0 IGNoYXIgKm5hbWU7Ci0gICAgICAgb2Zmc2V0X3R5cGUgKnZlYywgdmVjX2xlbiwgdmVjX2lkeDsK LSAKLS0gICAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5kZXhfdGFi bGVbaWR4XSA9PSAwCi0tCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5k ZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkKLSsgICAgICBpZiAoaW5kZXgtPmluZGV4X3RhYmxlW2lk eF0gPT0gMCAmJiBpbmRleC0+aW5kZXhfdGFibGVbaWR4ICsgMV0gPT0gMCkKLSAJY29udGludWU7 Ci0gCi0tICAgICAgbmFtZSA9IChkd2FyZjJfcGVyX29iamZpbGUtPmluZGV4X3RhYmxlLT5jb25z dGFudF9wb29sCi0tCSAgICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5pbmRleF90YWJsZS0+aW5k ZXhfdGFibGVbaWR4XSk7Ci0rICAgICAgbmFtZSA9IChpbmRleC0+Y29uc3RhbnRfcG9vbCArIE1B WUJFX1NXQVAgKGluZGV4LT5pbmRleF90YWJsZVtpZHhdKSk7Ci0gCi0gICAgICAgKCpmdW4pIChu YW1lLCBkYXRhKTsKLSAgICAgfQoKZGlmZiAtLWdpdCBhL2dkYi1nZGJpbmRleC12MS10by12Mi5w YXRjaCBiL2dkYi1nZGJpbmRleC12MS10by12Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMmE3YjliNy4uMDAwMDAwMAotLS0gYS9nZGItZ2RiaW5kZXgtdjEtdG8tdjIucGF0 Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2ODkgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUub3Jn L21sL2dkYi1jdnMvMjAxMC0wNy9tc2cwMDEzOS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxv ZwkyMDEwLzA3LzIzIDIxOjEwOjU0CTEuMTIwMTMKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEw LzA3LzIzIDIyOjE1OjEzCTEuMTIwMTQKLSMjIC0xLDMgKzEsMzEgQEAKLSsyMDEwLTA3LTIzICBU b20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+Ci0rCi0rCSogZHdhcmYycmVhZC5jIChzdHJ1 Y3QgZHdhcmYyX3Blcl9vYmpmaWxlKSA8bl90eXBlX2NvbXBfdW5pdHMsCi0rCXR5cGVfY29tcF91 bml0cz46IE5ldyBmaWVsZHMuCi0rCShkdzJfZ2V0X2N1KTogTmV3IGZ1bmN0aW9uLgotKwkoY3Jl YXRlX2N1c19mcm9tX2luZGV4KTogUmVtb3ZlIHVudXNlZCBhcmd1bWVudC4KLSsJKGNyZWF0ZV9z aWduYXR1cmVkX3R5cGVfaGFzaF9mcm9tX2luZGV4KTogTmV3IGZ1bmN0aW9uLgotKwkoY3JlYXRl X2FkZHJtYXBfZnJvbV9pbmRleCk6IFVwZGF0ZS4KLSsJKGR3YXJmMl9yZWFkX2luZGV4KTogSGFu ZGxlIHZlcnNpb24gMi4KLSsJKGR3Ml9maW5kX2xhc3Rfc291cmNlX3N5bXRhYiwgZHcyX2Zvcmdl dF9jYWNoZWRfc291cmNlX2luZm8pCi0rCShkdzJfbG9va3VwX3N5bXRhYiwgZHcyX2RvX2V4cGFu ZF9zeW10YWJzX21hdGNoaW5nKQotKwkoZHcyX3ByaW50X3N0YXRzLCBkdzJfZXhwYW5kX2FsbF9z eW10YWJzKQotKwkoZHcyX2V4cGFuZF9zeW10YWJzX3dpdGhfZmlsZW5hbWUsIGR3Ml9maW5kX3N5 bWJvbF9maWxlKQotKwkoZHcyX2V4cGFuZF9zeW10YWJzX21hdGNoaW5nLCBkdzJfbWFwX3N5bWJv bF9maWxlbmFtZXMpOiBVcGRhdGUuCi0rCShkd2FyZjJfaW5pdGlhbGl6ZV9vYmpmaWxlKTogQ2Fs bCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZS4KLSsJKGFsbG9jYXRlX3NpZ25hdHVyZWRf dHlwZV9oYXNoX3RhYmxlKTogTmV3IGZ1bmN0aW9uLgotKwkoYWRkX3NpZ25hdHVyZWRfdHlwZV9j dV90b19saXN0KTogTGlrZXdpc2UuCi0rCShjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSk6 IFVzZSB0aGVtLiAgU2V0IHR5cGVfY29tcF91bml0cy4KLSsJKHJlYWRfc2lnbmF0dXJlZF90eXBl KTogRW5zdXJlIHNlY3Rpb24gZGF0YSBpcyBhdmFpbGFibGUuCi0rCShhZGRfYWRkcmVzc19lbnRy eSk6IERvbid0IHJlY29yZCBlbXB0eSByYW5nZXMuCi0rCShzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBl X2luZGV4X2RhdGEpOiBOZXcuCi0rCSh3cml0ZV9vbmVfc2lnbmF0dXJlZF90eXBlKTogTmV3IGZ1 bmN0aW9uLgotKwkod3JpdGVfcHN5bXRhYnNfdG9faW5kZXgpOiBXcml0ZSB0eXBlIENVcy4KLSsJ KHNhdmVfZ2RiX2luZGV4X2NvbW1hbmQpOiBVcGRhdGUgY29tbWVudC4KLSsJKHByb2Nlc3NfdHlw ZV9jb21wX3VuaXQpOiBNb3ZlIGluaXRpdGFsaXphdGlvbiBvZgotKwlmcm9tX2RlYnVnX3R5cGVz Li4uCi0rCShjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSk6IC4uLiBoZXJlLgotKwotIDIw MTAtMDctMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLSAK LSAJKiBnZGJfZ2NvcmUuc2ggKHRtcGZpbGUpOiBSZW1vdmUgdGhlIHZhcmlhYmxlLCBpdHMgaW5p dGlhbGl6YXRpb24sCi1JbmRleDogZ2RiLTcuMi9nZGIvZHdhcmYycmVhZC5jCi09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMC0xMiAxODoxMDo0Ny4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9kd2FyZjJyZWFkLmMJMjAxMC0xMC0xMiAx ODoxMToxNi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODQsNiArMTg0LDEyIEBAIHN0cnVjdCBkd2Fy ZjJfcGVyX29iamZpbGUKLSAgIC8qIFRoZSBudW1iZXIgb2YgY29tcGlsYXRpb24gdW5pdHMgaW4g QUxMX0NPTVBfVU5JVFMuICAqLwotICAgaW50IG5fY29tcF91bml0czsKLSAKLSsgIC8qIFRoZSBu dW1iZXIgb2YgLmRlYnVnX3R5cGVzLXJlbGF0ZWQgQ1VzLiAgKi8KLSsgIGludCBuX3R5cGVfY29t cF91bml0czsKLSsKLSsgIC8qIFRoZSAuZGVidWdfdHlwZXMtcmVsYXRlZCBDVXMuICAqLwotKyAg c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqKnR5cGVfY29tcF91bml0czsKLSsKLSAgIC8qIEEg Y2hhaW4gb2YgY29tcGlsYXRpb24gdW5pdHMgdGhhdCBhcmUgY3VycmVudGx5IHJlYWQgaW4sIHNv IHRoYXQKLSAgICAgIHRoZXkgY2FuIGJlIGZyZWVkIGxhdGVyLiAgKi8KLSAgIHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKnJlYWRfaW5fY2hhaW47Ci1AQCAtMTIyNiw2ICsxMjMyLDggQEAgc3Rh dGljIHN0cnVjdCB0eXBlICpzZXRfZGllX3R5cGUgKHN0cnVjdAotIAotIHN0YXRpYyB2b2lkIGNy ZWF0ZV9hbGxfY29tcF91bml0cyAoc3RydWN0IG9iamZpbGUgKik7Ci0gCi0rc3RhdGljIGludCBj cmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUpOwot KwotIHN0YXRpYyB2b2lkIGxvYWRfZnVsbF9jb21wX3VuaXQgKHN0cnVjdCBkd2FyZjJfcGVyX2N1 X2RhdGEgKiwKLSAJCQkJIHN0cnVjdCBvYmpmaWxlICopOwotIAotQEAgLTEyNjksNiArMTI3Nyw4 IEBAIHN0YXRpYyB2b2lkIGluaXRfY3VfZGllX3JlYWRlciAoc3RydWN0IGQKLSBzdGF0aWMgY29u c3QgY2hhciAqZHdhcmYyX3BoeXNuYW1lIChjaGFyICpuYW1lLCBzdHJ1Y3QgZGllX2luZm8gKmRp ZSwKLSAJCQkJICAgIHN0cnVjdCBkd2FyZjJfY3UgKmN1KTsKLSAKLStzdGF0aWMgaHRhYl90IGFs bG9jYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX3RhYmxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSk7Ci0rCi0gI2lmIFdPUkRTX0JJR0VORElBTgotIAotIC8qIENvbnZlcnQgVkFMVUUgYmV0d2Vl biBiaWctIGFuZCBsaXR0bGUtZW5kaWFuLiAgKi8KLUBAIC0xNjQ2LDYgKzE2NTYsMTggQEAgZHcy X2luc3RhbnRpYXRlX3N5bXRhYiAoc3RydWN0IG9iamZpbGUgKgotICAgcmV0dXJuIHBlcl9jdS0+ di5xdWljay0+c3ltdGFiOwotIH0KLSAKLSsvKiBSZXR1cm4gdGhlIENVIGdpdmVuIGl0cyBpbmRl eC4gICovCi0rc3RhdGljIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKgotK2R3Ml9nZXRfY3Ug KGludCBpbmRleCkKLSt7Ci0rICBpZiAoaW5kZXggPj0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2Nv bXBfdW5pdHMpCi0rICAgIHsKLSsgICAgICBpbmRleCAtPSBkd2FyZjJfcGVyX29iamZpbGUtPm5f Y29tcF91bml0czsKLSsgICAgICByZXR1cm4gZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlX2NvbXBf dW5pdHNbaW5kZXhdOwotKyAgICB9Ci0rICByZXR1cm4gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxf Y29tcF91bml0c1tpbmRleF07Ci0rfQotKwotIC8qIEEgaGVscGVyIGZ1bmN0aW9uIHRoYXQga25v d3MgaG93IHRvIHJlYWQgYSA2NC1iaXQgdmFsdWUgaW4gYSB3YXkKLSAgICB0aGF0IGRvZXNuJ3Qg bWFrZSBnZGIgZGllLiAgUmV0dXJucyAxIGlmIHRoZSBjb252ZXJzaW9uIHdlbnQgb2ssIDAKLSAg ICBvdGhlcndpc2UuICAqLwotQEAgLTE2NzIsMTEgKzE2OTQsMTAgQEAgZXh0cmFjdF9jdV92YWx1 ZSAoY29uc3QgY2hhciAqYnl0ZXMsIFVMTwotICAgIHRoZSBDVSBvYmplY3RzIGZvciB0aGlzIG9i amZpbGUuICBSZXR1cm4gMCBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywKLSAgICAxIGlmIGV2ZXJ5 dGhpbmcgd2VudCBvay4gICovCi0gc3RhdGljIGludAotLWNyZWF0ZV9jdXNfZnJvbV9pbmRleCAo c3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHN0cnVjdCBtYXBwZWRfaW5kZXggKmluZGV4LAotLQkJ ICAgICAgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCBvZmZzZXRfdHlwZSBjdV9saXN0X2VsZW1l bnRzKQotK2NyZWF0ZV9jdXNfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIGNv bnN0IGdkYl9ieXRlICpjdV9saXN0LAotKwkJICAgICAgIG9mZnNldF90eXBlIGN1X2xpc3RfZWxl bWVudHMpCi0gewotICAgb2Zmc2V0X3R5cGUgaTsKLS0gIGNvbnN0IGNoYXIgKmVudHJ5OwotIAot ICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgPSBjdV9saXN0X2VsZW1lbnRzIC8g MjsKLSAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHMKLUBAIC0xNzA3LDYgKzE3 MjgsNTggQEAgY3JlYXRlX2N1c19mcm9tX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqbwotICAgcmV0 dXJuIDE7Ci0gfQotIAotKy8qIENyZWF0ZSB0aGUgc2lnbmF0dXJlZCB0eXBlIGhhc2ggdGFibGUg ZnJvbSB0aGUgaW5kZXguICAqLwotK3N0YXRpYyBpbnQKLStjcmVhdGVfc2lnbmF0dXJlZF90eXBl X2hhc2hfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCQljb25zdCBn ZGJfYnl0ZSAqYnl0ZXMsCi0rCQkJCQlvZmZzZXRfdHlwZSBlbGVtZW50cykKLSt7Ci0rICBvZmZz ZXRfdHlwZSBpOwotKyAgaHRhYl90IHR5cGVfaGFzaDsKLSsKLSsgIGR3YXJmMl9wZXJfb2JqZmls ZS0+bl90eXBlX2NvbXBfdW5pdHMgPSBlbGVtZW50cyAvIDM7Ci0rICBkd2FyZjJfcGVyX29iamZp bGUtPnR5cGVfY29tcF91bml0cwotKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2ssCi0rCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5p dHMKLSsJCSAgICAgKiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotKwot KyAgdHlwZV9oYXNoID0gYWxsb2NhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfdGFibGUgKG9iamZp bGUpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGVsZW1lbnRzOyBpICs9IDMpCi0rICAgIHsKLSsg ICAgICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICp0eXBlX3NpZzsKLSsgICAgICBVTE9OR0VTVCBv ZmZzZXQsIHR5cGVfb2Zmc2V0LCBzaWduYXR1cmU7Ci0rICAgICAgdm9pZCAqKnNsb3Q7Ci0rCi0r ICAgICAgaWYgKCFleHRyYWN0X2N1X3ZhbHVlIChieXRlcywgJm9mZnNldCkKLSsJICB8fCAhZXh0 cmFjdF9jdV92YWx1ZSAoYnl0ZXMgKyA4LCAmdHlwZV9vZmZzZXQpKQotKwlyZXR1cm4gMDsKLSsg ICAgICBzaWduYXR1cmUgPSBleHRyYWN0X3Vuc2lnbmVkX2ludGVnZXIgKGJ5dGVzICsgMTYsIDgs IEJGRF9FTkRJQU5fTElUVExFKTsKLSsgICAgICBieXRlcyArPSAzICogODsKLSsKLSsgICAgICB0 eXBlX3NpZyA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJ CQkgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSk7Ci0rICAgICAgdHlwZV9zaWctPnNpZ25hdHVyZSA9 IHNpZ25hdHVyZTsKLSsgICAgICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0OwotKyAgICAgIHR5 cGVfc2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zmc2V0OwotKyAgICAgIHR5cGVfc2lnLT5wZXJf Y3UuZnJvbV9kZWJ1Z190eXBlcyA9IDE7Ci0rICAgICAgdHlwZV9zaWctPnBlcl9jdS5vZmZzZXQg PSBvZmZzZXQ7Ci0rICAgICAgdHlwZV9zaWctPnBlcl9jdS5vYmpmaWxlID0gb2JqZmlsZTsKLSsg ICAgICB0eXBlX3NpZy0+cGVyX2N1LnYucXVpY2sKLSsJPSBPQlNUQUNLX1pBTExPQyAoJm9iamZp bGUtPm9iamZpbGVfb2JzdGFjaywKLSsJCQkgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X3F1aWNrX2Rh dGEpOwotKwotKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAodHlwZV9oYXNoLCB0eXBlX3Np ZywgSU5TRVJUKTsKLSsgICAgICAqc2xvdCA9IHR5cGVfc2lnOwotKwotKyAgICAgIGR3YXJmMl9w ZXJfb2JqZmlsZS0+dHlwZV9jb21wX3VuaXRzW2kgLyAzXSA9ICZ0eXBlX3NpZy0+cGVyX2N1Owot KyAgICB9Ci0rCi0rICBkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMgPSB0eXBl X2hhc2g7Ci0rCi0rICByZXR1cm4gMTsKLSt9Ci0rCi0gLyogUmVhZCB0aGUgYWRkcmVzcyBtYXAg ZGF0YSBmcm9tIHRoZSBtYXBwZWQgaW5kZXgsIGFuZCB1c2UgaXQgdG8KLSAgICBwb3B1bGF0ZSB0 aGUgb2JqZmlsZSdzIHBzeW10YWJzX2FkZHJtYXAuICAqLwotIHN0YXRpYyB2b2lkCi1AQCAtMTcz OCw3ICsxODExLDcgQEAgY3JlYXRlX2FkZHJtYXBfZnJvbV9pbmRleCAoc3RydWN0IG9iamZpbAot ICAgICAgIGl0ZXIgKz0gNDsKLSAgICAgICAKLSAgICAgICBhZGRybWFwX3NldF9lbXB0eSAobXV0 YWJsZV9tYXAsIGxvICsgYmFzZWFkZHIsIGhpICsgYmFzZWFkZHIgLSAxLAotLQkJCSBkd2FyZjJf cGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2N1X2luZGV4XSk7Ci0rCQkJIGR3Ml9nZXRfY3Ug KGN1X2luZGV4KSk7Ci0gICAgIH0KLSAKLSAgIG9iamZpbGUtPnBzeW10YWJzX2FkZHJtYXAgPSBh ZGRybWFwX2NyZWF0ZV9maXhlZCAobXV0YWJsZV9tYXAsCi1AQCAtMTgwNSw4ICsxODc4LDkgQEAg ZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaQotICAgY2hhciAqYWRkcjsK LSAgIHN0cnVjdCBtYXBwZWRfaW5kZXggKm1hcDsKLSAgIG9mZnNldF90eXBlICptZXRhZGF0YTsK LS0gIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0OwotLSAgb2Zmc2V0X3R5cGUgY3VfbGlzdF9lbGVt ZW50czsKLSsgIGNvbnN0IGdkYl9ieXRlICpjdV9saXN0LCAqdHlwZXNfbGlzdDsKLSsgIG9mZnNl dF90eXBlIHZlcnNpb24sIGN1X2xpc3RfZWxlbWVudHMsIHR5cGVzX2xpc3RfZWxlbWVudHM7Ci0r ICBpbnQgaTsKLSAKLSAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPmdkYl9pbmRleC5hc2VjdGlv biA9PSBOVUxMCi0gICAgICAgfHwgZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguc2l6ZSA9 PSAwKQotQEAgLTE4MjIsMjYgKzE4OTYsNTggQEAgZHdhcmYyX3JlYWRfaW5kZXggKHN0cnVjdCBv YmpmaWxlICpvYmpmaQotIAotICAgYWRkciA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+Z2RiX2luZGV4 LmJ1ZmZlcjsKLSAgIC8qIFZlcnNpb24gY2hlY2suICAqLwotLSAgaWYgKE1BWUJFX1NXQVAgKCoo b2Zmc2V0X3R5cGUgKikgYWRkcikgIT0gMSkKLSsgIHZlcnNpb24gPSBNQVlCRV9TV0FQICgqKG9m ZnNldF90eXBlICopIGFkZHIpOwotKyAgaWYgKHZlcnNpb24gPT0gMSkKLSsgICAgewotKyAgICAg IC8qIEluZGV4IHZlcnNpb24gMSBuZWdsZWN0ZWQgdG8gYWNjb3VudCBmb3IgLmRlYnVnX3R5cGVz LiAgU28sCi0rCSBpZiB3ZSBzZWUgLmRlYnVnX3R5cGVzLCB3ZSBjYW5ub3QgdXNlIHRoaXMgaW5k ZXguICAqLwotKyAgICAgIGlmIChkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmFzZWN0aW9uICE9 IE5VTEwKLSsJICAmJiBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLnNpemUgIT0gMCkKLSsJcmV0 dXJuIDA7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHZlcnNpb24gIT0gMikKLSAgICAgcmV0dXJuIDA7 Ci0gCi0gICBtYXAgPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywg c3RydWN0IG1hcHBlZF9pbmRleCk7Ci0gICBtYXAtPnRvdGFsX3NpemUgPSBkd2FyZjJfcGVyX29i amZpbGUtPmdkYl9pbmRleC5zaXplOwotIAotICAgbWV0YWRhdGEgPSAob2Zmc2V0X3R5cGUgKikg KGFkZHIgKyBzaXplb2YgKG9mZnNldF90eXBlKSk7Ci0tICBjdV9saXN0ID0gYWRkciArIE1BWUJF X1NXQVAgKG1ldGFkYXRhWzBdKTsKLS0gIGN1X2xpc3RfZWxlbWVudHMgPSAoKE1BWUJFX1NXQVAg KG1ldGFkYXRhWzFdKSAtIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzBdKSkKLSsKLSsgIGkgPSAwOwot KyAgY3VfbGlzdCA9IGFkZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSk7Ci0rICBjdV9saXN0 X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0pIC0gTUFZQkVfU1dBUCAo bWV0YWRhdGFbaV0pKQotIAkJICAgICAgLyA4KTsKLS0gIG1hcC0+YWRkcmVzc190YWJsZSA9IGFk ZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVsxXSk7Ci0tICBtYXAtPmFkZHJlc3NfdGFibGVfc2l6 ZSA9IChNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkKLS0JCQkgICAgIC0gTUFZQkVfU1dBUCAobWV0 YWRhdGFbMV0pKTsKLS0gIG1hcC0+aW5kZXhfdGFibGUgPSAob2Zmc2V0X3R5cGUgKikgKGFkZHIg KyBNQVlCRV9TV0FQIChtZXRhZGF0YVsyXSkpOwotLSAgbWFwLT5pbmRleF90YWJsZV9zbG90cyA9 ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbM10pCi0tCQkJICAgICAtIE1BWUJFX1NXQVAgKG1ldGFk YXRhWzJdKSkKLSsgICsraTsKLSsKLSsgIGlmICh2ZXJzaW9uID09IDIpCi0rICAgIHsKLSsgICAg ICB0eXBlc19saXN0ID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLSsgICAgICB0 eXBlc19saXN0X2VsZW1lbnRzID0gKChNQVlCRV9TV0FQIChtZXRhZGF0YVtpICsgMV0pCi0rCQkJ ICAgICAgLSBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpCi0rCQkJICAgICAvIDgpOwotKyAgICAg ICsraTsKLSsgICAgfQotKwotKyAgbWFwLT5hZGRyZXNzX3RhYmxlID0gYWRkciArIE1BWUJFX1NX QVAgKG1ldGFkYXRhW2ldKTsKLSsgIG1hcC0+YWRkcmVzc190YWJsZV9zaXplID0gKE1BWUJFX1NX QVAgKG1ldGFkYXRhW2kgKyAxXSkKLSsJCQkgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0p KTsKLSsgICsraTsKLSsKLSsgIG1hcC0+aW5kZXhfdGFibGUgPSAob2Zmc2V0X3R5cGUgKikgKGFk ZHIgKyBNQVlCRV9TV0FQIChtZXRhZGF0YVtpXSkpOwotKyAgbWFwLT5pbmRleF90YWJsZV9zbG90 cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotKwkJCSAgICAgLSBNQVlCRV9TV0FQ IChtZXRhZGF0YVtpXSkpCi0gCQkJICAgIC8gKDIgKiBzaXplb2YgKG9mZnNldF90eXBlKSkpOwot LSAgbWFwLT5jb25zdGFudF9wb29sID0gYWRkciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhWzNdKTsK LSsgICsraTsKLSAKLS0gIGlmICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBtYXAs IGN1X2xpc3QsIGN1X2xpc3RfZWxlbWVudHMpKQotKyAgbWFwLT5jb25zdGFudF9wb29sID0gYWRk ciArIE1BWUJFX1NXQVAgKG1ldGFkYXRhW2ldKTsKLSsKLSsgIGlmICghY3JlYXRlX2N1c19mcm9t X2luZGV4IChvYmpmaWxlLCBjdV9saXN0LCBjdV9saXN0X2VsZW1lbnRzKSkKLSsgICAgcmV0dXJu IDA7Ci0rCi0rICBpZiAodmVyc2lvbiA9PSAyCi0rICAgICAgJiYgdHlwZXNfbGlzdF9lbGVtZW50 cwotKyAgICAgICYmICFjcmVhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfZnJvbV9pbmRleCAob2Jq ZmlsZSwgdHlwZXNfbGlzdCwKLSsJCQkJCQkgIHR5cGVzX2xpc3RfZWxlbWVudHMpKQotICAgICBy ZXR1cm4gMDsKLSAKLSAgIGNyZWF0ZV9hZGRybWFwX2Zyb21faW5kZXggKG9iamZpbGUsIG1hcCk7 Ci1AQCAtMTk2OCw4ICsyMDc0LDcgQEAgZHcyX2ZpbmRfbGFzdF9zb3VyY2Vfc3ltdGFiIChzdHJ1 Y3Qgb2JqZgotICAgaW50IGluZGV4OwotICAgZHcyX3NldHVwIChvYmpmaWxlKTsKLSAgIGluZGV4 ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMgLSAxOwotLSAgcmV0dXJuIGR3Ml9p bnN0YW50aWF0ZV9zeW10YWIgKG9iamZpbGUsCi0tCQkJCSBkd2FyZjJfcGVyX29iamZpbGUtPmFs bF9jb21wX3VuaXRzW2luZGV4XSk7Ci0rICByZXR1cm4gZHcyX2luc3RhbnRpYXRlX3N5bXRhYiAo b2JqZmlsZSwgZHcyX2dldF9jdSAoaW5kZXgpKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0x OTc4LDkgKzIwODMsMTAgQEAgZHcyX2ZvcmdldF9jYWNoZWRfc291cmNlX2luZm8gKHN0cnVjdCBv YgotICAgaW50IGk7Ci0gCi0gICBkdzJfc2V0dXAgKG9iamZpbGUpOwotLSAgZm9yIChpID0gMDsg aSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0rICBmb3IgKGkgPSAw OyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0rCQkgICArIGR3YXJmMl9w ZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gICAgIHsKLS0gICAgICBzdHJ1 Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBf dW5pdHNbaV07Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJfZ2V0 X2N1IChpKTsKLSAKLSAgICAgICBpZiAoY3UtPnYucXVpY2stPmZ1bGxfbmFtZXMpCi0gCXsKLUBA IC0yMDAyLDEwICsyMTA4LDExIEBAIGR3Ml9sb29rdXBfc3ltdGFiIChzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmkKLSAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmJhc2VfY3UgPSBOVUxMOwotIAot ICAgZHcyX3NldHVwIChvYmpmaWxlKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29i amZpbGUtPm5fY29tcF91bml0czsgKytpKQotKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVy X29iamZpbGUtPm5fY29tcF91bml0cwotKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlw ZV9jb21wX3VuaXRzKTsgKytpKQotICAgICB7Ci0gICAgICAgaW50IGo7Ci0tICAgICAgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3Vu aXRzW2ldOwotKyAgICAgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9j dSAoaSk7Ci0gCi0gICAgICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0gCWNvbnRpbnVlOwot QEAgLTIwOTcsOCArMjIwNCw4IEBAIGR3Ml9kb19leHBhbmRfc3ltdGFic19tYXRjaGluZyAoc3Ry dWN0IG8KLSAJICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCi0gCSAgICB7Ci0gCSAgICAgIG9m ZnNldF90eXBlIGN1X2luZGV4ID0gTUFZQkVfU1dBUCAodmVjW2kgKyAxXSk7Ci0tCSAgICAgIHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1OwotLQkgICAgICBjdSA9IGR3YXJmMl9wZXJfb2Jq ZmlsZS0+YWxsX2NvbXBfdW5pdHNbY3VfaW5kZXhdOwotKwkgICAgICBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICpjdSA9IGR3Ml9nZXRfY3UgKGN1X2luZGV4KTsKLSsKLSAJICAgICAgZHcyX2lu c3RhbnRpYXRlX3N5bXRhYiAob2JqZmlsZSwgY3UpOwotIAkgICAgfQotIAl9Ci1AQCAtMjEyMCw5 ICsyMjI3LDEwIEBAIGR3Ml9wcmludF9zdGF0cyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKLSAK LSAgIGR3Ml9zZXR1cCAob2JqZmlsZSk7Ci0gICBjb3VudCA9IDA7Ci0tICBmb3IgKGkgPSAwOyBp IDwgZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHM7ICsraSkKLSsgIGZvciAoaSA9IDA7 IGkgPCAoZHdhcmYyX3Blcl9vYmpmaWxlLT5uX2NvbXBfdW5pdHMKLSsJCSAgICsgZHdhcmYyX3Bl cl9vYmpmaWxlLT5uX3R5cGVfY29tcF91bml0cyk7ICsraSkKLSAgICAgewotLSAgICAgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5hbGxfY29tcF91 bml0c1tpXTsKLSsgICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3Ml9nZXRf Y3UgKGkpOwotIAotICAgICAgIGlmICghY3UtPnYucXVpY2stPnN5bXRhYikKLSAJKytjb3VudDsK LUBAIC0yMTU2LDkgKzIyNjQsMTEgQEAgZHcyX2V4cGFuZF9hbGxfc3ltdGFicyAoc3RydWN0IG9i amZpbGUgKgotICAgaW50IGk7Ci0gCi0gICBkdzJfc2V0dXAgKG9iamZpbGUpOwotLSAgZm9yIChp ID0gMDsgaSA8IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0rCi0rICBm b3IgKGkgPSAwOyBpIDwgKGR3YXJmMl9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0rCQkgICAr IGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gICAgIHsKLS0g ICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+ YWxsX2NvbXBfdW5pdHNbaV07Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3Ug PSBkdzJfZ2V0X2N1IChpKTsKLSAKLSAgICAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpm aWxlLCBjdSk7Ci0gICAgIH0KLUBAIC0yMTcxLDEwICsyMjgxLDExIEBAIGR3Ml9leHBhbmRfc3lt dGFic193aXRoX2ZpbGVuYW1lIChzdHJ1Y3QKLSAgIGludCBpOwotIAotICAgZHcyX3NldHVwIChv YmpmaWxlKTsKLS0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91 bml0czsgKytpKQotKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29t cF91bml0cwotKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsg KytpKQotICAgICB7Ci0gICAgICAgaW50IGo7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3Vf ZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwotKyAgICAg IHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7Ci0gCi0gICAg ICAgaWYgKGN1LT52LnF1aWNrLT5zeW10YWIpCi0gCWNvbnRpbnVlOwotQEAgLTIyMTUsNyArMjMy Niw3IEBAIGR3Ml9maW5kX3N5bWJvbF9maWxlIChzdHJ1Y3Qgb2JqZmlsZSAqb2IKLSAgICAgIHNo b3VsZCBiZSByZXdyaXR0ZW4gc28gdGhhdCBpdCBkb2Vzbid0IHJlcXVpcmUgYSBjdXN0b20gaG9v ay4gIEl0Ci0gICAgICBjb3VsZCBqdXN0IHVzZSB0aGUgb3JkaW5hcnkgc3ltYm9sIHRhYmxlcy4g ICovCi0gICAvKiB2ZWNbMF0gaXMgdGhlIGxlbmd0aCwgd2hpY2ggbXVzdCBhbHdheXMgYmUgPjAu ICAqLwotLSAgY3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW01BWUJFX1NX QVAgKHZlY1sxXSldOwotKyAgY3UgPSBkdzJfZ2V0X2N1IChNQVlCRV9TV0FQICh2ZWNbMV0pKTsK LSAKLSAgIGR3Ml9yZXF1aXJlX2xpbmVfaGVhZGVyIChvYmpmaWxlLCBjdSk7Ci0gICBpZiAoIWN1 LT52LnF1aWNrLT5saW5lcykKLUBAIC0yMjUzLDEwICsyMzY0LDExIEBAIGR3Ml9leHBhbmRfc3lt dGFic19tYXRjaGluZyAoc3RydWN0IG9iamYKLSAgIGlmICghZHdhcmYyX3Blcl9vYmpmaWxlLT5p bmRleF90YWJsZSkKLSAgICAgcmV0dXJuOwotIAotLSAgZm9yIChpID0gMDsgaSA8IGR3YXJmMl9w ZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzOyArK2kpCi0rICBmb3IgKGkgPSAwOyBpIDwgKGR3YXJm Ml9wZXJfb2JqZmlsZS0+bl9jb21wX3VuaXRzCi0rCQkgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+ bl90eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gICAgIHsKLSAgICAgICBpbnQgajsKLS0gICAgICBz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2Nv bXBfdW5pdHNbaV07Ci0rICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJf Z2V0X2N1IChpKTsKLSAKLSAgICAgICBjdS0+di5xdWljay0+bWFyayA9IDA7Ci0gICAgICAgaWYg KGN1LT52LnF1aWNrLT5zeW10YWIpCi1AQCAtMjMwMSw4ICsyNDEzLDkgQEAgZHcyX2V4cGFuZF9z eW10YWJzX21hdGNoaW5nIChzdHJ1Y3Qgb2JqZgotICAgICAgIHZlY19sZW4gPSBNQVlCRV9TV0FQ ICh2ZWNbMF0pOwotICAgICAgIGZvciAodmVjX2lkeCA9IDA7IHZlY19pZHggPCB2ZWNfbGVuOyAr K3ZlY19pZHgpCi0gCXsKLS0JICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdQotLQkgICAg PSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW01BWUJFX1NXQVAgKHZlY1t2ZWNf aWR4ICsgMV0pXTsKLSsJICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpjdTsKLSsKLSsJICBj dSA9IGR3Ml9nZXRfY3UgKE1BWUJFX1NXQVAgKHZlY1t2ZWNfaWR4ICsgMV0pKTsKLSAJICBpZiAo Y3UtPnYucXVpY2stPm1hcmspCi0gCSAgICBkdzJfaW5zdGFudGlhdGVfc3ltdGFiIChvYmpmaWxl LCBjdSk7Ci0gCX0KLUBAIC0yMzcyLDEwICsyNDg1LDExIEBAIGR3Ml9tYXBfc3ltYm9sX2ZpbGVu YW1lcyAoc3RydWN0IG9iamZpbGUKLSAgIGludCBpOwotIAotICAgZHcyX3NldHVwIChvYmpmaWxl KTsKLS0gIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsg KytpKQotKyAgZm9yIChpID0gMDsgaSA8IChkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0 cwotKwkJICAgKyBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzKTsgKytpKQot ICAgICB7Ci0gICAgICAgaW50IGo7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq Y3UgPSBkd2FyZjJfcGVyX29iamZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwotKyAgICAgIHN0cnVj dCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gZHcyX2dldF9jdSAoaSk7Ci0gCi0gICAgICAgaWYg KGN1LT52LnF1aWNrLT5zeW10YWIpCi0gCWNvbnRpbnVlOwotQEAgLTI0MzYsMTAgKzI1NTAsMTIg QEAgZHdhcmYyX2luaXRpYWxpemVfb2JqZmlsZSAoc3RydWN0IG9iamZpbAotIAotICAgICAgIGR3 YXJmMl9wZXJfb2JqZmlsZS0+dXNpbmdfaW5kZXggPSAxOwotICAgICAgIGNyZWF0ZV9hbGxfY29t cF91bml0cyAob2JqZmlsZSk7Ci0rICAgICAgY3JlYXRlX2RlYnVnX3R5cGVzX2hhc2hfdGFibGUg KG9iamZpbGUpOwotIAotLSAgICAgIGZvciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUt Pm5fY29tcF91bml0czsgKytpKQotKyAgICAgIGZvciAoaSA9IDA7IGkgPCAoZHdhcmYyX3Blcl9v YmpmaWxlLT5uX2NvbXBfdW5pdHMKLSsJCSAgICAgICArIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90 eXBlX2NvbXBfdW5pdHMpOyArK2kpCi0gCXsKLS0JICBzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRh ICpjdSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+YWxsX2NvbXBfdW5pdHNbaV07Ci0rCSAgc3RydWN0 IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkdzJfZ2V0X2N1IChpKTsKLSAKLSAJICBjdS0+di5x dWljayA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotIAkJCQkJ c3RydWN0IGR3YXJmMl9wZXJfY3VfcXVpY2tfZGF0YSk7Ci1AQCAtMjY1Myw2ICsyNzY5LDM0IEBA IGVxX3R5cGVfc2lnbmF0dXJlIChjb25zdCB2b2lkICppdGVtX2xocywKLSAgIHJldHVybiBsaHMt PnNpZ25hdHVyZSA9PSByaHMtPnNpZ25hdHVyZTsKLSB9Ci0gCi0rLyogQWxsb2NhdGUgYSBoYXNo IHRhYmxlIGZvciBzaWduYXR1cmVkIHR5cGVzLiAgKi8KLSsKLStzdGF0aWMgaHRhYl90Ci0rYWxs b2NhdGVfc2lnbmF0dXJlZF90eXBlX2hhc2hfdGFibGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl KQotK3sKLSsgIHJldHVybiBodGFiX2NyZWF0ZV9hbGxvY19leCAoNDEsCi0rCQkJICAgICAgIGhh c2hfdHlwZV9zaWduYXR1cmUsCi0rCQkJICAgICAgIGVxX3R5cGVfc2lnbmF0dXJlLAotKwkJCSAg ICAgICBOVUxMLAotKwkJCSAgICAgICAmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotKwkJCSAg ICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0rCQkJICAgICAgIGR1bW15X29ic3RhY2tf ZGVhbGxvY2F0ZSk7Ci0rfQotKwotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRvIGFkZCBhIHNpZ25h dHVyZWQgdHlwZSBDVSB0byBhIGxpc3QuICAqLwotKwotK3N0YXRpYyBpbnQKLSthZGRfc2lnbmF0 dXJlZF90eXBlX2N1X3RvX2xpc3QgKHZvaWQgKipzbG90LCB2b2lkICpkYXR1bSkKLSt7Ci0rICBz dHJ1Y3Qgc2lnbmF0dXJlZF90eXBlICpzaWd0ID0gKnNsb3Q7Ci0rICBzdHJ1Y3QgZHdhcmYyX3Bl cl9jdV9kYXRhICoqKmRhdGFwID0gZGF0dW07Ci0rCi0rICAqKmRhdGFwID0gJnNpZ3QtPnBlcl9j dTsKLSsgICsrKmRhdGFwOwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwotIC8qIENyZWF0ZSB0aGUg aGFzaCB0YWJsZSBvZiBhbGwgZW50cmllcyBpbiB0aGUgLmRlYnVnX3R5cGVzIHNlY3Rpb24uCi0g ICAgVGhlIHJlc3VsdCBpcyB6ZXJvIGlmIHRoZXJlIGlzIGFuIGVycm9yIChlLmcuIG1pc3Npbmcg LmRlYnVnX3R5cGVzIHNlY3Rpb24pLAotICAgIG90aGVyd2lzZSBub24temVyby4JKi8KLUBAIC0y NjYyLDYgKzI4MDYsNyBAQCBjcmVhdGVfZGVidWdfdHlwZXNfaGFzaF90YWJsZSAoc3RydWN0IG9i Ci0gewotICAgZ2RiX2J5dGUgKmluZm9fcHRyOwotICAgaHRhYl90IHR5cGVzX2h0YWI7Ci0rICBz dHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICoqaXRlcjsKLSAKLSAgIGR3YXJmMl9yZWFkX3NlY3Rp b24gKG9iamZpbGUsICZkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzKTsKLSAgIGluZm9fcHRyID0g ZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5idWZmZXI7Ci1AQCAtMjY3MiwxMyArMjgxNyw3IEBA IGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChzdHJ1Y3Qgb2IKLSAgICAgICByZXR1cm4g MDsKLSAgICAgfQotIAotLSAgdHlwZXNfaHRhYiA9IGh0YWJfY3JlYXRlX2FsbG9jX2V4ICg0MSwK LS0JCQkJICAgICBoYXNoX3R5cGVfc2lnbmF0dXJlLAotLQkJCQkgICAgIGVxX3R5cGVfc2lnbmF0 dXJlLAotLQkJCQkgICAgIE5VTEwsCi0tCQkJCSAgICAgJm9iamZpbGUtPm9iamZpbGVfb2JzdGFj aywKLS0JCQkJICAgICBoYXNodGFiX29ic3RhY2tfYWxsb2NhdGUsCi0tCQkJCSAgICAgZHVtbXlf b2JzdGFja19kZWFsbG9jYXRlKTsKLSsgIHR5cGVzX2h0YWIgPSBhbGxvY2F0ZV9zaWduYXR1cmVk X3R5cGVfaGFzaF90YWJsZSAob2JqZmlsZSk7Ci0gCi0gICBpZiAoZHdhcmYyX2RpZV9kZWJ1ZykK LSAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLCAiU2lnbmF0dXJlZCB0eXBlczpc biIpOwotQEAgLTI3MjYsNiArMjg2NSw3IEBAIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxl IChzdHJ1Y3Qgb2IKLSAgICAgICB0eXBlX3NpZy0+b2Zmc2V0ID0gb2Zmc2V0OwotICAgICAgIHR5 cGVfc2lnLT50eXBlX29mZnNldCA9IHR5cGVfb2Zmc2V0OwotICAgICAgIHR5cGVfc2lnLT5wZXJf Y3Uub2JqZmlsZSA9IG9iamZpbGU7Ci0rICAgICAgdHlwZV9zaWctPnBlcl9jdS5mcm9tX2RlYnVn X3R5cGVzID0gMTsKLSAKLSAgICAgICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHR5cGVzX2h0YWIs IHR5cGVfc2lnLCBJTlNFUlQpOwotICAgICAgIGdkYl9hc3NlcnQgKHNsb3QgIT0gTlVMTCk7Ci1A QCAtMjc0MCw2ICsyODgwLDE2IEBAIGNyZWF0ZV9kZWJ1Z190eXBlc19oYXNoX3RhYmxlIChzdHJ1 Y3Qgb2IKLSAKLSAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+c2lnbmF0dXJlZF90eXBlcyA9IHR5cGVz X2h0YWI7Ci0gCi0rICBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRzID0gaHRh Yl9lbGVtZW50cyAodHlwZXNfaHRhYik7Ci0rICBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVfY29t cF91bml0cwotKyAgICA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ss Ci0rCQkgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bl90eXBlX2NvbXBfdW5pdHMKLSsJCSAgICAg KiBzaXplb2YgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKikpOwotKyAgaXRlciA9ICZkd2Fy ZjJfcGVyX29iamZpbGUtPnR5cGVfY29tcF91bml0c1swXTsKLSsgIGh0YWJfdHJhdmVyc2Vfbm9y ZXNpemUgKHR5cGVzX2h0YWIsIGFkZF9zaWduYXR1cmVkX3R5cGVfY3VfdG9fbGlzdCwgJml0ZXIp OwotKyAgZ2RiX2Fzc2VydCAoaXRlciAtICZkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVfY29tcF91 bml0c1swXQotKwkgICAgICA9PSBkd2FyZjJfcGVyX29iamZpbGUtPm5fdHlwZV9jb21wX3VuaXRz KTsKLSsKLSAgIHJldHVybiAxOwotIH0KLSAKLUBAIC0zMDA4LDcgKzMxNTgsNiBAQCBwcm9jZXNz X3R5cGVfY29tcF91bml0ICh2b2lkICoqc2xvdCwgdm9pCi0gICBzdHJ1Y3QgZHdhcmYyX3Blcl9j dV9kYXRhICp0aGlzX2N1OwotIAotICAgdGhpc19jdSA9ICZlbnRyeS0+cGVyX2N1OwotLSAgdGhp c19jdS0+ZnJvbV9kZWJ1Z190eXBlcyA9IDE7Ci0gCi0gICBnZGJfYXNzZXJ0IChkd2FyZjJfcGVy X29iamZpbGUtPnR5cGVzLnJlYWRpbik7Ci0gICBwcm9jZXNzX3BzeW10YWJfY29tcF91bml0IChv YmpmaWxlLCB0aGlzX2N1LAotQEAgLTEyNDgzLDEzICsxMjYzMiwxNiBAQCBzdGF0aWMgdm9pZAot IHJlYWRfc2lnbmF0dXJlZF90eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSAJCSAgICAg IHN0cnVjdCBzaWduYXR1cmVkX3R5cGUgKnR5cGVfc2lnKQotIHsKLS0gIGdkYl9ieXRlICp0eXBl c19wdHIgPSBkd2FyZjJfcGVyX29iamZpbGUtPnR5cGVzLmJ1ZmZlciArIHR5cGVfc2lnLT5vZmZz ZXQ7Ci0rICBnZGJfYnl0ZSAqdHlwZXNfcHRyOwotICAgc3RydWN0IGRpZV9yZWFkZXJfc3BlY3Mg cmVhZGVyX3NwZWNzOwotICAgc3RydWN0IGR3YXJmMl9jdSAqY3U7Ci0gICBVTE9OR0VTVCBzaWdu YXR1cmU7Ci0gICBzdHJ1Y3QgY2xlYW51cCAqYmFja190bywgKmZyZWVfY3VfY2xlYW51cDsKLSAg IHN0cnVjdCBhdHRyaWJ1dGUgKmF0dHI7Ci0gCi0rICBkd2FyZjJfcmVhZF9zZWN0aW9uIChvYmpm aWxlLCAmZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcyk7Ci0rICB0eXBlc19wdHIgPSBkd2FyZjJf cGVyX29iamZpbGUtPnR5cGVzLmJ1ZmZlciArIHR5cGVfc2lnLT5vZmZzZXQ7Ci0rCi0gICBnZGJf YXNzZXJ0ICh0eXBlX3NpZy0+cGVyX2N1LmN1ID09IE5VTEwpOwotIAotICAgY3UgPSB4bWFsbG9j IChzaXplb2YgKHN0cnVjdCBkd2FyZjJfY3UpKTsKLUBAIC0xNDQwMiw2ICsxNDU1NCwxMCBAQCBh ZGRfYWRkcmVzc19lbnRyeSAoc3RydWN0IG9iamZpbGUgKm9iamZpCi0gICBjaGFyIGFkZHJbOF07 Ci0gICBDT1JFX0FERFIgYmFzZWFkZHI7Ci0gCi0rICAvKiBEb24ndCBib3RoZXIgcmVjb3JkaW5n IGVtcHR5IHJhbmdlcy4gICovCi0rICBpZiAocHN0LT50ZXh0bG93ID09IHBzdC0+dGV4dGhpZ2gp Ci0rICAgIHJldHVybjsKLSsKLSAgIGJhc2VhZGRyID0gQU5PRkZTRVQgKG9iamZpbGUtPnNlY3Rp b25fb2Zmc2V0cywgU0VDVF9PRkZfVEVYVCAob2JqZmlsZSkpOwotIAotICAgc3RvcmVfdW5zaWdu ZWRfaW50ZWdlciAoYWRkciwgOCwgQkZEX0VORElBTl9MSVRUTEUsIHBzdC0+dGV4dGxvdyAtIGJh c2VhZGRyKTsKLUBAIC0xNDQ0NywxMyArMTQ2MDMsNTMgQEAgdW5saW5rX2lmX3NldCAodm9pZCAq cCkKLSAgICAgdW5saW5rICgqZmlsZW5hbWUpOwotIH0KLSAKLSsvKiBBIGhlbHBlciBzdHJ1Y3Qg dXNlZCB3aGVuIGl0ZXJhdGluZyBvdmVyIGRlYnVnX3R5cGVzLiAgKi8KLStzdHJ1Y3Qgc2lnbmF0 dXJlZF90eXBlX2luZGV4X2RhdGEKLSt7Ci0rICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsg IHN0cnVjdCBtYXBwZWRfc3ltdGFiICpzeW10YWI7Ci0rICBzdHJ1Y3Qgb2JzdGFjayAqdHlwZXNf bGlzdDsKLSsgIGludCBjdV9pbmRleDsKLSt9OwotKwotKy8qIEEgaGVscGVyIGZ1bmN0aW9uIHRo YXQgd3JpdGVzIGEgc2luZ2xlIHNpZ25hdHVyZWRfdHlwZSB0byBhbgotKyAgIG9ic3RhY2suICAq LwotK3N0YXRpYyBpbnQKLSt3cml0ZV9vbmVfc2lnbmF0dXJlZF90eXBlICh2b2lkICoqc2xvdCwg dm9pZCAqZCkKLSt7Ci0rICBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEgKmluZm8g PSBkOwotKyAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZSAqZW50cnkgPSAoc3RydWN0IHNpZ25hdHVy ZWRfdHlwZSAqKSAqc2xvdDsKLSsgIHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1ID0gJmVu dHJ5LT5wZXJfY3U7Ci0rICBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzeW10YWIgPSBjdS0+di5w c3ltdGFiOwotKyAgZ2RiX2J5dGUgdmFsWzhdOwotKwotKyAgd3JpdGVfcHN5bWJvbHMgKGluZm8t PnN5bXRhYiwKLSsJCSAgaW5mby0+b2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLmxpc3QgKyBwc3lt dGFiLT5nbG9iYWxzX29mZnNldCwKLSsJCSAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaW5mby0+ Y3VfaW5kZXgpOwotKyAgd3JpdGVfcHN5bWJvbHMgKGluZm8tPnN5bXRhYiwKLSsJCSAgaW5mby0+ b2JqZmlsZS0+c3RhdGljX3BzeW1ib2xzLmxpc3QgKyBwc3ltdGFiLT5zdGF0aWNzX29mZnNldCwK LSsJCSAgcHN5bXRhYi0+bl9zdGF0aWNfc3ltcywgaW5mby0+Y3VfaW5kZXgpOwotKwotKyAgc3Rv cmVfdW5zaWduZWRfaW50ZWdlciAodmFsLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSwgZW50cnktPm9m ZnNldCk7Ci0rICBvYnN0YWNrX2dyb3cgKGluZm8tPnR5cGVzX2xpc3QsIHZhbCwgOCk7Ci0rICBz dG9yZV91bnNpZ25lZF9pbnRlZ2VyICh2YWwsIDgsIEJGRF9FTkRJQU5fTElUVExFLCBlbnRyeS0+ dHlwZV9vZmZzZXQpOwotKyAgb2JzdGFja19ncm93IChpbmZvLT50eXBlc19saXN0LCB2YWwsIDgp OwotKyAgc3RvcmVfdW5zaWduZWRfaW50ZWdlciAodmFsLCA4LCBCRkRfRU5ESUFOX0xJVFRMRSwg ZW50cnktPnNpZ25hdHVyZSk7Ci0rICBvYnN0YWNrX2dyb3cgKGluZm8tPnR5cGVzX2xpc3QsIHZh bCwgOCk7Ci0rCi0rICArK2luZm8tPmN1X2luZGV4OwotKwotKyAgcmV0dXJuIDE7Ci0rfQotKwot IC8qIENyZWF0ZSBhbiBpbmRleCBmaWxlIGZvciBPQkpGSUxFIGluIHRoZSBkaXJlY3RvcnkgRElS LiAgKi8KLSBzdGF0aWMgdm9pZAotIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgY29uc3QgY2hhciAqZGlyKQotIHsKLSAgIHN0cnVjdCBjbGVhbnVwICpj bGVhbnVwOwotICAgY2hhciAqZmlsZW5hbWUsICpjbGVhbnVwX2ZpbGVuYW1lOwotLSAgc3RydWN0 IG9ic3RhY2sgY29udGVudHMsIGFkZHJfb2JzdGFjaywgY29uc3RhbnRfcG9vbCwgc3ltdGFiX29i c3RhY2ssIGN1X2xpc3Q7Ci0rICBzdHJ1Y3Qgb2JzdGFjayBjb250ZW50cywgYWRkcl9vYnN0YWNr LCBjb25zdGFudF9wb29sLCBzeW10YWJfb2JzdGFjazsKLSsgIHN0cnVjdCBvYnN0YWNrIGN1X2xp c3QsIHR5cGVzX2N1X2xpc3Q7Ci0gICBpbnQgaTsKLSAgIEZJTEUgKm91dF9maWxlOwotICAgc3Ry dWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKLUBAIC0xNDQ4OSw2ICsxNDY4NSwxMiBAQCB3cml0 ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICBvYnN0YWNrX2luaXQgKCZj dV9saXN0KTsKLSAgIG1ha2VfY2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZjdV9saXN0KTsKLSAKLSsg IG9ic3RhY2tfaW5pdCAoJnR5cGVzX2N1X2xpc3QpOwotKyAgbWFrZV9jbGVhbnVwX29ic3RhY2tf ZnJlZSAoJnR5cGVzX2N1X2xpc3QpOwotKwotKyAgLyogVGhlIGxpc3QgaXMgYWxyZWFkeSBzb3J0 ZWQsIHNvIHdlIGRvbid0IG5lZWQgdG8gZG8gYWRkaXRpb25hbAotKyAgICAgd29yayBoZXJlLiAg QWxzbywgdGhlIGRlYnVnX3R5cGVzIGVudHJpZXMgZG8gbm90IGFwcGVhciBpbgotKyAgICAgYWxs X2NvbXBfdW5pdHMsIGJ1dCBvbmx5IGluIHRoZWlyIG93biBoYXNoIHRhYmxlLiAgKi8KLSAgIGZv ciAoaSA9IDA7IGkgPCBkd2FyZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsgKytpKQotICAg ICB7Ci0gICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqY3UgPSBkd2FyZjJfcGVyX29i amZpbGUtPmFsbF9jb21wX3VuaXRzW2ldOwotQEAgLTE0NTEwLDYgKzE0NzEyLDE5IEBAIHdyaXRl X3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKLSAgICAgICBvYnN0YWNrX2dyb3cg KCZjdV9saXN0LCB2YWwsIDgpOwotICAgICB9Ci0gCi0rICAvKiBXcml0ZSBvdXQgdGhlIC5kZWJ1 Z190eXBlIGVudHJpZXMsIGlmIGFueS4gICovCi0rICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5z aWduYXR1cmVkX3R5cGVzKQotKyAgICB7Ci0rICAgICAgc3RydWN0IHNpZ25hdHVyZWRfdHlwZV9p bmRleF9kYXRhIHNpZ19kYXRhOwotKwotKyAgICAgIHNpZ19kYXRhLm9iamZpbGUgPSBvYmpmaWxl OwotKyAgICAgIHNpZ19kYXRhLnN5bXRhYiA9IHN5bXRhYjsKLSsgICAgICBzaWdfZGF0YS50eXBl c19saXN0ID0gJnR5cGVzX2N1X2xpc3Q7Ci0rICAgICAgc2lnX2RhdGEuY3VfaW5kZXggPSBkd2Fy ZjJfcGVyX29iamZpbGUtPm5fY29tcF91bml0czsKLSsgICAgICBodGFiX3RyYXZlcnNlX25vcmVz aXplIChkd2FyZjJfcGVyX29iamZpbGUtPnNpZ25hdHVyZWRfdHlwZXMsCi0rCQkJICAgICAgd3Jp dGVfb25lX3NpZ25hdHVyZWRfdHlwZSwgJnNpZ19kYXRhKTsKLSsgICAgfQotKwotICAgb2JzdGFj a19pbml0ICgmY29uc3RhbnRfcG9vbCk7Ci0gICBtYWtlX2NsZWFudXBfb2JzdGFja19mcmVlICgm Y29uc3RhbnRfcG9vbCk7Ci0gICBvYnN0YWNrX2luaXQgKCZzeW10YWJfb2JzdGFjayk7Ci1AQCAt MTQ1MTgsMTEgKzE0NzMzLDExIEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2Jq ZmlsZSAKLSAKLSAgIG9ic3RhY2tfaW5pdCAoJmNvbnRlbnRzKTsKLSAgIG1ha2VfY2xlYW51cF9v YnN0YWNrX2ZyZWUgKCZjb250ZW50cyk7Ci0tICBzaXplX29mX2NvbnRlbnRzID0gNSAqIHNpemVv ZiAob2Zmc2V0X3R5cGUpOwotKyAgc2l6ZV9vZl9jb250ZW50cyA9IDYgKiBzaXplb2YgKG9mZnNl dF90eXBlKTsKLSAgIHRvdGFsX2xlbiA9IHNpemVfb2ZfY29udGVudHM7Ci0gCi0gICAvKiBUaGUg dmVyc2lvbiBudW1iZXIuICAqLwotLSAgdmFsID0gTUFZQkVfU1dBUCAoMSk7Ci0rICB2YWwgPSBN QVlCRV9TV0FQICgyKTsKLSAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRlbnRzLCAmdmFsLCBzaXplb2Yg KHZhbCkpOwotIAotICAgLyogVGhlIG9mZnNldCBvZiB0aGUgQ1UgbGlzdCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgZmlsZS4gICovCi1AQCAtMTQ1MzAsNiArMTQ3NDUsMTEgQEAgd3JpdGVfcHN5bXRh YnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlIAotICAgb2JzdGFja19ncm93ICgmY29udGVudHMs ICZ2YWwsIHNpemVvZiAodmFsKSk7Ci0gICB0b3RhbF9sZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6 ZSAoJmN1X2xpc3QpOwotIAotKyAgLyogVGhlIG9mZnNldCBvZiB0aGUgdHlwZXMgQ1UgbGlzdCBm cm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi0rICB2YWwgPSBNQVlCRV9TV0FQICh0b3Rh bF9sZW4pOwotKyAgb2JzdGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNpemVvZiAodmFsKSk7 Ci0rICB0b3RhbF9sZW4gKz0gb2JzdGFja19vYmplY3Rfc2l6ZSAoJnR5cGVzX2N1X2xpc3QpOwot KwotICAgLyogVGhlIG9mZnNldCBvZiB0aGUgYWRkcmVzcyB0YWJsZSBmcm9tIHRoZSBzdGFydCBv ZiB0aGUgZmlsZS4gICovCi0gICB2YWwgPSBNQVlCRV9TV0FQICh0b3RhbF9sZW4pOwotICAgb2Jz dGFja19ncm93ICgmY29udGVudHMsICZ2YWwsIHNpemVvZiAodmFsKSk7Ci1AQCAtMTQ1NDksNiAr MTQ3NjksNyBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gCi0g ICB3cml0ZV9vYnN0YWNrIChvdXRfZmlsZSwgJmNvbnRlbnRzKTsKLSAgIHdyaXRlX29ic3RhY2sg KG91dF9maWxlLCAmY3VfbGlzdCk7Ci0rICB3cml0ZV9vYnN0YWNrIChvdXRfZmlsZSwgJnR5cGVz X2N1X2xpc3QpOwotICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZhZGRyX29ic3RhY2spOwot ICAgd3JpdGVfb2JzdGFjayAob3V0X2ZpbGUsICZzeW10YWJfb2JzdGFjayk7Ci0gICB3cml0ZV9v YnN0YWNrIChvdXRfZmlsZSwgJmNvbnN0YW50X3Bvb2wpOwotQEAgLTE0NTczLDE4ICsxNDc5NCwz MyBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gCi0gICAgMS4g VGhlIGZpbGUgaGVhZGVyLiAgVGhpcyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcywgb2Ygb2Zmc2V0 X3R5cGUKLSAgICB1bmxlc3Mgb3RoZXJ3aXNlIG5vdGVkOgotLSAgIFswXSBUaGUgdmVyc2lvbiBu dW1iZXIuICBDdXJyZW50bHkgMS4KLSsgICBbMF0gVGhlIHZlcnNpb24gbnVtYmVyLiAgQ3VycmVu dGx5IDEgb3IgMi4gIFRoZSBkaWZmZXJlbmNlcyBhcmUKLSsgICBub3RlZCBiZWxvdy4gIFZlcnNp b24gMSBkaWQgbm90IGFjY291bnQgZm9yIC5kZWJ1Z190eXBlcyBzZWN0aW9uczsKLSsgICB0aGUg cHJlc2VuY2Ugb2YgYSAuZGVidWdfdHlwZXMgc2VjdGlvbiBpbnZhbGlkYXRlcyBhbnkgdmVyc2lv biAxCi0rICAgaW5kZXggdGhhdCBtYXkgZXhpc3QuCi0gICAgWzFdIFRoZSBvZmZzZXQsIGZyb20g dGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgQ1UgbGlzdC4KLSsgICBbMS41XSBJbiB2ZXJz aW9uIDIsIHRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUKLSsg ICB0eXBlcyBDVSBsaXN0LiAgVGhpcyBvZmZzZXQgZG9lcyBub3QgYXBwZWFyIGluIHZlcnNpb24g MS4gIE5vdGUKLSsgICB0aGF0IHRoaXMgY2FuIGJlIGVtcHR5LCBpbiB3aGljaCBjYXNlIHRoaXMg b2Zmc2V0IHdpbGwgYmUgZXF1YWwgdG8KLSsgICB0aGUgbmV4dCBvZmZzZXQuCi0gICAgWzJdIFRo ZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgYWRkcmVzcyBzZWN0 aW9uLgotICAgIFszXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2Yg dGhlIHN5bWJvbCB0YWJsZS4KLSAgICBbNF0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2Yg dGhlIGZpbGUsIG9mIHRoZSBjb25zdGFudCBwb29sLgotIAotICAgIDIuIFRoZSBDVSBsaXN0LiAg VGhpcyBpcyBhIHNlcXVlbmNlIG9mIHBhaXJzIG9mIDY0LWJpdAotLSAgIGxpdHRsZS1lbmRpYW4g dmFsdWVzLiAgVGhlIGZpcnN0IGVsZW1lbnQgaW4gZWFjaCBwYWlyIGlzIHRoZSBvZmZzZXQKLS0g ICBvZiBhIENVIGluIHRoZSAuZGVidWdfaW5mbyBzZWN0aW9uLiAgVGhlIHNlY29uZCBlbGVtZW50 IGluIGVhY2gKLS0gICBwYWlyIGlzIHRoZSBsZW5ndGggb2YgdGhhdCBDVS4gIFJlZmVyZW5jZXMg dG8gYSBDVSBlbHNld2hlcmUgaW4gdGhlCi0tICAgbWFwIGFyZSBkb25lIHVzaW5nIGEgQ1UgaW5k ZXgsIHdoaWNoIGlzIGp1c3QgdGhlIDAtYmFzZWQgaW5kZXggaW50bwotLSAgIHRoaXMgdGFibGUu Ci0rICAgbGl0dGxlLWVuZGlhbiB2YWx1ZXMsIHNvcnRlZCBieSB0aGUgQ1Ugb2Zmc2V0LiAgVGhl IGZpcnN0IGVsZW1lbnQKLSsgICBpbiBlYWNoIHBhaXIgaXMgdGhlIG9mZnNldCBvZiBhIENVIGlu IHRoZSAuZGVidWdfaW5mbyBzZWN0aW9uLiAgVGhlCi0rICAgc2Vjb25kIGVsZW1lbnQgaW4gZWFj aCBwYWlyIGlzIHRoZSBsZW5ndGggb2YgdGhhdCBDVS4gIFJlZmVyZW5jZXMKLSsgICB0byBhIENV IGVsc2V3aGVyZSBpbiB0aGUgbWFwIGFyZSBkb25lIHVzaW5nIGEgQ1UgaW5kZXgsIHdoaWNoIGlz Ci0rICAganVzdCB0aGUgMC1iYXNlZCBpbmRleCBpbnRvIHRoaXMgdGFibGUuICBOb3RlIHRoYXQg aWYgdGhlcmUgYXJlCi0rICAgdHlwZSBDVXMsIHRoZW4gY29uY2VwdHVhbGx5IENVcyBhbmQgdHlw ZSBDVXMgZm9ybSBhIHNpbmdsZSBsaXN0IGZvcgotKyAgIHRoZSBwdXJwb3NlcyBvZiBDVSBpbmRp Y2VzLgotKwotKyAgIDIuNSBUaGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgZG9lcyBub3QgYXBwZWFy IGluIGEgdmVyc2lvbiAxIGluZGV4LgotKyAgIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0 cyBvZiA2NC1iaXQgbGl0dGxlLWVuZGlhbiB2YWx1ZXMuICBJbgotKyAgIGEgdHJpcGxldCwgdGhl IGZpcnN0IHZhbHVlIGlzIHRoZSBDVSBvZmZzZXQsIHRoZSBzZWNvbmQgdmFsdWUgaXMKLSsgICB0 aGUgdHlwZSBvZmZzZXQgaW4gdGhlIENVLCBhbmQgdGhlIHRoaXJkIHZhbHVlIGlzIHRoZSB0eXBl Ci0rICAgc2lnbmF0dXJlLiAgVGhlIHR5cGVzIENVIGxpc3QgaXMgbm90IHNvcnRlZC4KLSAKLSAg ICAzLiBUaGUgYWRkcmVzcyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlvbiBjb25zaXN0cyBv ZiBhIHNlcXVlbmNlCi0gICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBhZGRyZXNzIGVudHJ5 IGhhcyB0aHJlZSBlbGVtZW50cy4KCmRpZmYgLS1naXQgYS9nZGItZ2RiaW5kZXgtdjItdG8tdjMu cGF0Y2ggYi9nZGItZ2RiaW5kZXgtdjItdG8tdjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGJiZDcwNDUuLjAwMDAwMDAKLS0tIGEvZ2RiLWdkYmluZGV4LXYyLXRvLXYzLnBh dGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjc4ICswLDAgQEAKLUZZSTogaW5kZXggcHJlLWV4cGFu c2lvbiBmaXgKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTA5L21z ZzAwNDUyLmh0bWwKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTAtMDkvbXNn MDAxNjUuaHRtbAotCi0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8yNyAxNzo0MTozNQkx LjEyMjA2Ci0jIyMgc3JjL2dkYi9DaGFuZ2VMb2cJMjAxMC8wOS8yNyAxODo0MjozNQkxLjEyMjA3 Ci0jIyAtMSw1ICsxLDE3IEBACi0gMjAxMC0wOS0yNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRo YXQuY29tPgotIAotKwkqIGR3YXJmMnJlYWQuYyAoZHdhcmYyX3JlYWRfaW5kZXgpOiBPbmx5IGFs bG93IHZlcnNpb24gMy4KLSsJKHdyaXRlX3BzeW1ib2xzKTogQWRkICdwc3ltc19zZWVuJyBhbmQg J2lzX3N0YXRpYycgYXJndW1lbnRzLgotKwlPbmx5IGVtaXQgYSBnaXZlbiBwc3ltYm9sIG9uY2Uu Ci0rCShzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEpIDxwc3ltc19zZWVuPjogTmV3 IGZpZWxkLgotKwkod3JpdGVfb25lX3NpZ25hdHVyZWRfdHlwZSk6IFVwZGF0ZS4KLSsJKGNsZWFu dXBfaHRhYik6IE5ldyBmdW5jdGlvbi4KLSsJKHdyaXRlX3BzeW10YWJzX3RvX2luZGV4KTogVXBk YXRlLiAgQ3JlYXRlIHBzeW1zX3NlZW4gaGFzaC4gIEJ1bXAKLSsJdmVyc2lvbiB0byAzLgotKwko c2F2ZV9nZGJfaW5kZXhfY29tbWFuZCk6IFVwZGF0ZSBpbmRleCBkb2N1bWVudGF0aW9uLgotKwot KzIwMTAtMDktMjcgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSAJKiBiY2Fj aGUuYyAoZXhwYW5kX2hhc2hfdGFibGUpOiBVc2UgaGFzaF9mdW5jdGlvbiwgbm90IGhhc2guCi0g Ci0gMjAxMC0wOS0yNyAgVG9tIFRyb21leSAgPHRyb21leUByZWRoYXQuY29tPgotSW5kZXg6IGdk Yi03LjIvZ2RiL2R3YXJmMnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIv ZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTE6MjcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMi9nZGIvZHdhcmYycmVhZC5jCTIwMTAtMTAtMTIgMTg6MTI6MDMuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTg5NywxNSArMTg5NywxMCBAQCBkd2FyZjJfcmVhZF9pbmRleCAoc3RydWN0IG9iamZp bGUgKm9iamZpCi0gICBhZGRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5nZGJfaW5kZXguYnVmZmVy OwotICAgLyogVmVyc2lvbiBjaGVjay4gICovCi0gICB2ZXJzaW9uID0gTUFZQkVfU1dBUCAoKihv ZmZzZXRfdHlwZSAqKSBhZGRyKTsKLS0gIGlmICh2ZXJzaW9uID09IDEpCi0tICAgIHsKLS0gICAg ICAvKiBJbmRleCB2ZXJzaW9uIDEgbmVnbGVjdGVkIHRvIGFjY291bnQgZm9yIC5kZWJ1Z190eXBl cy4gIFNvLAotLQkgaWYgd2Ugc2VlIC5kZWJ1Z190eXBlcywgd2UgY2Fubm90IHVzZSB0aGlzIGlu ZGV4LiAgKi8KLS0gICAgICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5hc2VjdGlvbiAh PSBOVUxMCi0tCSAgJiYgZHdhcmYyX3Blcl9vYmpmaWxlLT50eXBlcy5zaXplICE9IDApCi0tCXJl dHVybiAwOwotLSAgICB9Ci0tICBlbHNlIGlmICh2ZXJzaW9uICE9IDIpCi0rICAvKiBWZXJzaW9u cyBlYXJsaWVyIHRoYW4gMyBlbWl0dGVkIGV2ZXJ5IGNvcHkgb2YgYSBwc3ltYm9sLiAgVGhpcwot KyAgICAgY2F1c2VzIHRoZSBpbmRleCB0byBiZWhhdmUgdmVyeSBwb29ybHkgZm9yIGNlcnRhaW4g cmVxdWVzdHMuICBTbywKLSsgICAgIGl0IHNlZW1zIGJldHRlciB0byBqdXN0IGlnbm9yZSBzdWNo IGluZGljZXMuICAqLwotKyAgaWYgKHZlcnNpb24gPCAzKQotICAgICByZXR1cm4gMDsKLSAKLSAg IG1hcCA9IE9CU1RBQ0tfWkFMTE9DICgmb2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLCBzdHJ1Y3Qg bWFwcGVkX2luZGV4KTsKLUBAIC0xOTE5LDE0ICsxOTE0LDExIEBAIGR3YXJmMl9yZWFkX2luZGV4 IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAJCSAgICAgIC8gOCk7Ci0gICArK2k7Ci0gCi0tICBp ZiAodmVyc2lvbiA9PSAyKQotLSAgICB7Ci0tICAgICAgdHlwZXNfbGlzdCA9IGFkZHIgKyBNQVlC RV9TV0FQIChtZXRhZGF0YVtpXSk7Ci0tICAgICAgdHlwZXNfbGlzdF9lbGVtZW50cyA9ICgoTUFZ QkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotLQkJCSAgICAgIC0gTUFZQkVfU1dBUCAobWV0YWRh dGFbaV0pKQotLQkJCSAgICAgLyA4KTsKLS0gICAgICArK2k7Ci0tICAgIH0KLSsgIHR5cGVzX2xp c3QgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotKyAgdHlwZXNfbGlzdF9lbGVt ZW50cyA9ICgoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotKwkJCSAgLSBNQVlCRV9TV0FQ IChtZXRhZGF0YVtpXSkpCi0rCQkJIC8gOCk7Ci0rICArK2k7Ci0gCi0gICBtYXAtPmFkZHJlc3Nf dGFibGUgPSBhZGRyICsgTUFZQkVfU1dBUCAobWV0YWRhdGFbaV0pOwotICAgbWFwLT5hZGRyZXNz X3RhYmxlX3NpemUgPSAoTUFZQkVfU1dBUCAobWV0YWRhdGFbaSArIDFdKQotQEAgLTE5NDQsOCAr MTkzNiw3IEBAIGR3YXJmMl9yZWFkX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmkKLSAgIGlm ICghY3JlYXRlX2N1c19mcm9tX2luZGV4IChvYmpmaWxlLCBjdV9saXN0LCBjdV9saXN0X2VsZW1l bnRzKSkKLSAgICAgcmV0dXJuIDA7Ci0gCi0tICBpZiAodmVyc2lvbiA9PSAyCi0tICAgICAgJiYg dHlwZXNfbGlzdF9lbGVtZW50cwotKyAgaWYgKHR5cGVzX2xpc3RfZWxlbWVudHMKLSAgICAgICAm JiAhY3JlYXRlX3NpZ25hdHVyZWRfdHlwZV9oYXNoX2Zyb21faW5kZXggKG9iamZpbGUsIHR5cGVz X2xpc3QsCi0gCQkJCQkJICB0eXBlc19saXN0X2VsZW1lbnRzKSkKLSAgICAgcmV0dXJuIDA7Ci1A QCAtMTQ1NjgsMTUgKzE0NTU5LDM4IEBAIGFkZF9hZGRyZXNzX2VudHJ5IChzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmkKLSAvKiBBZGQgYSBsaXN0IG9mIHBhcnRpYWwgc3ltYm9scyB0byBTWU1UQUIuICAq LwotIHN0YXRpYyB2b2lkCi0gd3JpdGVfcHN5bWJvbHMgKHN0cnVjdCBtYXBwZWRfc3ltdGFiICpz eW10YWIsCi0rCQlodGFiX3QgcHN5bXNfc2VlbiwKLSAJCXN0cnVjdCBwYXJ0aWFsX3N5bWJvbCAq KnBzeW1wLAotIAkJaW50IGNvdW50LAotLQkJb2Zmc2V0X3R5cGUgY3VfaW5kZXgpCi0rCQlvZmZz ZXRfdHlwZSBjdV9pbmRleCwKLSsJCWludCBpc19zdGF0aWMpCi0gewotICAgZm9yICg7IGNvdW50 LS0gPiAwOyArK3BzeW1wKQotICAgICB7Ci0rICAgICAgdm9pZCAqKnNsb3QsICpsb29rdXA7Ci0r Ci0gICAgICAgaWYgKFNZTUJPTF9MQU5HVUFHRSAoKnBzeW1wKSA9PSBsYW5ndWFnZV9hZGEpCi0g CWVycm9yIChfKCJBZGEgaXMgbm90IGN1cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIGluZGV4Iikp OwotLSAgICAgIGFkZF9pbmRleF9lbnRyeSAoc3ltdGFiLCBTWU1CT0xfTkFUVVJBTF9OQU1FICgq cHN5bXApLCBjdV9pbmRleCk7Ci0rCi0rICAgICAgLyogV2Ugb25seSB3YW50IHRvIGFkZCBhIGdp dmVuIHBzeW1ib2wgb25jZS4gIEhvd2V2ZXIsIHdlIGFsc28KLSsJIHdhbnQgdG8gYWNjb3VudCBm b3Igd2hldGhlciBpdCBpcyBnbG9iYWwgb3Igc3RhdGljLiAgU28sIHdlCi0rCSBtYXkgYWRkIGl0 IHR3aWNlLCB1c2luZyBzbGlnaHRseSBkaWZmZXJlbnQgdmFsdWVzLiAgKi8KLSsgICAgICBpZiAo aXNfc3RhdGljKQotKwl7Ci0rCSAgdWludHB0cl90IHZhbCA9IDEgfCAodWludHB0cl90KSAqcHN5 bXA7Ci0rCi0rCSAgbG9va3VwID0gKHZvaWQgKikgdmFsOwotKwl9Ci0rICAgICAgZWxzZQotKwls b29rdXAgPSAqcHN5bXA7Ci0rCi0rICAgICAgLyogT25seSBhZGQgYSBnaXZlbiBwc3ltYm9sIG9u Y2UuICAqLwotKyAgICAgIHNsb3QgPSBodGFiX2ZpbmRfc2xvdCAocHN5bXNfc2VlbiwgbG9va3Vw LCBJTlNFUlQpOwotKyAgICAgIGlmICghKnNsb3QpCi0rCXsKLSsJICAqc2xvdCA9IGxvb2t1cDsK LSsJICBhZGRfaW5kZXhfZW50cnkgKHN5bXRhYiwgU1lNQk9MX05BVFVSQUxfTkFNRSAoKnBzeW1w KSwgY3VfaW5kZXgpOwotKwl9Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTQ2MDYsNiArMTQ2MjAsNyBA QCBzdHJ1Y3Qgc2lnbmF0dXJlZF90eXBlX2luZGV4X2RhdGEKLSAgIHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlOwotICAgc3RydWN0IG1hcHBlZF9zeW10YWIgKnN5bXRhYjsKLSAgIHN0cnVjdCBvYnN0 YWNrICp0eXBlc19saXN0OwotKyAgaHRhYl90IHBzeW1zX3NlZW47Ci0gICBpbnQgY3VfaW5kZXg7 Ci0gfTsKLSAKLUBAIC0xNDYyMSwxMSArMTQ2MzYsMTUgQEAgd3JpdGVfb25lX3NpZ25hdHVyZWRf dHlwZSAodm9pZCAqKnNsb3QsIAotICAgZ2RiX2J5dGUgdmFsWzhdOwotIAotICAgd3JpdGVfcHN5 bWJvbHMgKGluZm8tPnN5bXRhYiwKLSsJCSAgaW5mby0+cHN5bXNfc2VlbiwKLSAJCSAgaW5mby0+ b2JqZmlsZS0+Z2xvYmFsX3BzeW1ib2xzLmxpc3QgKyBwc3ltdGFiLT5nbG9iYWxzX29mZnNldCwK LS0JCSAgcHN5bXRhYi0+bl9nbG9iYWxfc3ltcywgaW5mby0+Y3VfaW5kZXgpOwotKwkJICBwc3lt dGFiLT5uX2dsb2JhbF9zeW1zLCBpbmZvLT5jdV9pbmRleCwKLSsJCSAgMCk7Ci0gICB3cml0ZV9w c3ltYm9scyAoaW5mby0+c3ltdGFiLAotKwkJICBpbmZvLT5wc3ltc19zZWVuLAotIAkJICBpbmZv LT5vYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMubGlzdCArIHBzeW10YWItPnN0YXRpY3Nfb2Zmc2V0 LAotLQkJICBwc3ltdGFiLT5uX3N0YXRpY19zeW1zLCBpbmZvLT5jdV9pbmRleCk7Ci0rCQkgIHBz eW10YWItPm5fc3RhdGljX3N5bXMsIGluZm8tPmN1X2luZGV4LAotKwkJICAxKTsKLSAKLSAgIHN0 b3JlX3Vuc2lnbmVkX2ludGVnZXIgKHZhbCwgOCwgQkZEX0VORElBTl9MSVRUTEUsIGVudHJ5LT5v ZmZzZXQpOwotICAgb2JzdGFja19ncm93IChpbmZvLT50eXBlc19saXN0LCB2YWwsIDgpOwotQEAg LTE0NjM5LDYgKzE0NjU4LDE0IEBAIHdyaXRlX29uZV9zaWduYXR1cmVkX3R5cGUgKHZvaWQgKipz bG90LCAKLSAgIHJldHVybiAxOwotIH0KLSAKLSsvKiBBIGNsZWFudXAgZnVuY3Rpb24gZm9yIGFu IGh0YWJfdC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStjbGVhbnVwX2h0YWIgKHZvaWQgKmFyZykK LSt7Ci0rICBodGFiX2RlbGV0ZSAoYXJnKTsKLSt9Ci0rCi0gLyogQ3JlYXRlIGFuIGluZGV4IGZp bGUgZm9yIE9CSkZJTEUgaW4gdGhlIGRpcmVjdG9yeSBESVIuICAqLwotIHN0YXRpYyB2b2lkCi0g d3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBjb25zdCBj aGFyICpkaXIpCi1AQCAtMTQ2NTMsNiArMTQ2ODAsNyBAQCB3cml0ZV9wc3ltdGFic190b19pbmRl eCAoc3RydWN0IG9iamZpbGUgCi0gICBvZmZzZXRfdHlwZSB2YWwsIHNpemVfb2ZfY29udGVudHMs IHRvdGFsX2xlbjsKLSAgIHN0cnVjdCBzdGF0IHN0OwotICAgY2hhciBidWZbOF07Ci0rICBodGFi X3QgcHN5bXNfc2VlbjsKLSAKLSAgIGlmICghb2JqZmlsZS0+cHN5bXRhYnMpCi0gICAgIHJldHVy bjsKLUBAIC0xNDY4NSw2ICsxNDcxMywxMCBAQCB3cml0ZV9wc3ltdGFic190b19pbmRleCAoc3Ry dWN0IG9iamZpbGUgCi0gICBvYnN0YWNrX2luaXQgKCZ0eXBlc19jdV9saXN0KTsKLSAgIG1ha2Vf Y2xlYW51cF9vYnN0YWNrX2ZyZWUgKCZ0eXBlc19jdV9saXN0KTsKLSAKLSsgIHBzeW1zX3NlZW4g PSBodGFiX2NyZWF0ZV9hbGxvYyAoMTAwLCBodGFiX2hhc2hfcG9pbnRlciwgaHRhYl9lcV9wb2lu dGVyLAotKwkJCQkgIE5VTEwsIHhjYWxsb2MsIHhmcmVlKTsKLSsgIG1ha2VfY2xlYW51cCAoY2xl YW51cF9odGFiLCBwc3ltc19zZWVuKTsKLSsKLSAgIC8qIFRoZSBsaXN0IGlzIGFscmVhZHkgc29y dGVkLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGRvIGFkZGl0aW9uYWwKLSAgICAgIHdvcmsgaGVyZS4g IEFsc28sIHRoZSBkZWJ1Z190eXBlcyBlbnRyaWVzIGRvIG5vdCBhcHBlYXIgaW4KLSAgICAgIGFs bF9jb21wX3VuaXRzLCBidXQgb25seSBpbiB0aGVpciBvd24gaGFzaCB0YWJsZS4gICovCi1AQCAt MTQ2OTUsMTEgKzE0NzI3LDE1IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2Jq ZmlsZSAKLSAgICAgICBnZGJfYnl0ZSB2YWxbOF07Ci0gCi0gICAgICAgd3JpdGVfcHN5bWJvbHMg KHN5bXRhYiwKLSsJCSAgICAgIHBzeW1zX3NlZW4sCi0gCQkgICAgICBvYmpmaWxlLT5nbG9iYWxf cHN5bWJvbHMubGlzdCArIHBzeW10YWItPmdsb2JhbHNfb2Zmc2V0LAotLQkJICAgICAgcHN5bXRh Yi0+bl9nbG9iYWxfc3ltcywgaSk7Ci0rCQkgICAgICBwc3ltdGFiLT5uX2dsb2JhbF9zeW1zLCBp LAotKwkJICAgICAgMCk7Ci0gICAgICAgd3JpdGVfcHN5bWJvbHMgKHN5bXRhYiwKLSsJCSAgICAg IHBzeW1zX3NlZW4sCi0gCQkgICAgICBvYmpmaWxlLT5zdGF0aWNfcHN5bWJvbHMubGlzdCArIHBz eW10YWItPnN0YXRpY3Nfb2Zmc2V0LAotLQkJICAgICAgcHN5bXRhYi0+bl9zdGF0aWNfc3ltcywg aSk7Ci0rCQkgICAgICBwc3ltdGFiLT5uX3N0YXRpY19zeW1zLCBpLAotKwkJICAgICAgMSk7Ci0g Ci0gICAgICAgYWRkX2FkZHJlc3NfZW50cnkgKG9iamZpbGUsICZhZGRyX29ic3RhY2ssIHBzeW10 YWIsIGkpOwotIAotQEAgLTE0NzE3LDYgKzE0NzUzLDcgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5k ZXggKHN0cnVjdCBvYmpmaWxlIAotICAgICAgIHNpZ19kYXRhLm9iamZpbGUgPSBvYmpmaWxlOwot ICAgICAgIHNpZ19kYXRhLnN5bXRhYiA9IHN5bXRhYjsKLSAgICAgICBzaWdfZGF0YS50eXBlc19s aXN0ID0gJnR5cGVzX2N1X2xpc3Q7Ci0rICAgICAgc2lnX2RhdGEucHN5bXNfc2VlbiA9IHBzeW1z X3NlZW47Ci0gICAgICAgc2lnX2RhdGEuY3VfaW5kZXggPSBkd2FyZjJfcGVyX29iamZpbGUtPm5f Y29tcF91bml0czsKLSAgICAgICBodGFiX3RyYXZlcnNlX25vcmVzaXplIChkd2FyZjJfcGVyX29i amZpbGUtPnNpZ25hdHVyZWRfdHlwZXMsCi0gCQkJICAgICAgd3JpdGVfb25lX3NpZ25hdHVyZWRf dHlwZSwgJnNpZ19kYXRhKTsKLUBAIC0xNDczNCw3ICsxNDc3MSw3IEBAIHdyaXRlX3BzeW10YWJz X3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKLSAgIHRvdGFsX2xlbiA9IHNpemVfb2ZfY29udGVu dHM7Ci0gCi0gICAvKiBUaGUgdmVyc2lvbiBudW1iZXIuICAqLwotLSAgdmFsID0gTUFZQkVfU1dB UCAoMik7Ci0rICB2YWwgPSBNQVlCRV9TV0FQICgzKTsKLSAgIG9ic3RhY2tfZ3JvdyAoJmNvbnRl bnRzLCAmdmFsLCBzaXplb2YgKHZhbCkpOwotIAotICAgLyogVGhlIG9mZnNldCBvZiB0aGUgQ1Ug bGlzdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gICovCi1AQCAtMTQ3OTEsMTggKzE0ODI4 LDE2IEBAIHdyaXRlX3BzeW10YWJzX3RvX2luZGV4IChzdHJ1Y3Qgb2JqZmlsZSAKLSAKLSAgICAx LiBUaGUgZmlsZSBoZWFkZXIuICBUaGlzIGlzIGEgc2VxdWVuY2Ugb2YgdmFsdWVzLCBvZiBvZmZz ZXRfdHlwZQotICAgIHVubGVzcyBvdGhlcndpc2Ugbm90ZWQ6Ci0tICAgWzBdIFRoZSB2ZXJzaW9u IG51bWJlci4gIEN1cnJlbnRseSAxIG9yIDIuICBUaGUgZGlmZmVyZW5jZXMgYXJlCi0tICAgbm90 ZWQgYmVsb3cuICBWZXJzaW9uIDEgZGlkIG5vdCBhY2NvdW50IGZvciAuZGVidWdfdHlwZXMgc2Vj dGlvbnM7Ci0tICAgdGhlIHByZXNlbmNlIG9mIGEgLmRlYnVnX3R5cGVzIHNlY3Rpb24gaW52YWxp ZGF0ZXMgYW55IHZlcnNpb24gMQotLSAgIGluZGV4IHRoYXQgbWF5IGV4aXN0LgotKwotKyAgIFsw XSBUaGUgdmVyc2lvbiBudW1iZXIsIGN1cnJlbnRseSAzLiAgVmVyc2lvbnMgMSBhbmQgMiBhcmUK LSsgICBvYnNvbGV0ZS4KLSAgICBbMV0gVGhlIG9mZnNldCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhl IGZpbGUsIG9mIHRoZSBDVSBsaXN0LgotLSAgIFsxLjVdIEluIHZlcnNpb24gMiwgdGhlIG9mZnNl dCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZQotLSAgIHR5cGVzIENVIGxpc3Qu ICBUaGlzIG9mZnNldCBkb2VzIG5vdCBhcHBlYXIgaW4gdmVyc2lvbiAxLiAgTm90ZQotLSAgIHRo YXQgdGhpcyBjYW4gYmUgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhpcyBvZmZzZXQgd2lsbCBiZSBl cXVhbCB0bwotLSAgIHRoZSBuZXh0IG9mZnNldC4KLS0gICBbMl0gVGhlIG9mZnNldCwgZnJvbSB0 aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBhZGRyZXNzIHNlY3Rpb24uCi0tICAgWzNdIFRo ZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgc3ltYm9sIHRhYmxl LgotLSAgIFs0XSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSwgb2YgdGhl IGNvbnN0YW50IHBvb2wuCi0rICAgWzJdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRo ZSBmaWxlLCBvZiB0aGUgdHlwZXMgQ1UgbGlzdC4KLSsgICBOb3RlIHRoYXQgdGhpcyBzZWN0aW9u IGNhbiBiZSBlbXB0eSwgaW4gd2hpY2ggY2FzZSB0aGlzIG9mZnNldCB3aWxsCi0rICAgYmUgZXF1 YWwgdG8gdGhlIG5leHQgb2Zmc2V0LgotKyAgIFszXSBUaGUgb2Zmc2V0LCBmcm9tIHRoZSBzdGFy dCBvZiB0aGUgZmlsZSwgb2YgdGhlIGFkZHJlc3Mgc2VjdGlvbi4KLSsgICBbNF0gVGhlIG9mZnNl dCwgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIGZpbGUsIG9mIHRoZSBzeW1ib2wgdGFibGUuCi0rICAg WzVdIFRoZSBvZmZzZXQsIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBmaWxlLCBvZiB0aGUgY29uc3Rh bnQgcG9vbC4KLSAKLSAgICAyLiBUaGUgQ1UgbGlzdC4gIFRoaXMgaXMgYSBzZXF1ZW5jZSBvZiBw YWlycyBvZiA2NC1iaXQKLSAgICBsaXR0bGUtZW5kaWFuIHZhbHVlcywgc29ydGVkIGJ5IHRoZSBD VSBvZmZzZXQuICBUaGUgZmlyc3QgZWxlbWVudAotQEAgLTE0ODEzLDE5ICsxNDg0OCwxOSBAQCB3 cml0ZV9wc3ltdGFic190b19pbmRleCAoc3RydWN0IG9iamZpbGUgCi0gICAgdHlwZSBDVXMsIHRo ZW4gY29uY2VwdHVhbGx5IENVcyBhbmQgdHlwZSBDVXMgZm9ybSBhIHNpbmdsZSBsaXN0IGZvcgot ICAgIHRoZSBwdXJwb3NlcyBvZiBDVSBpbmRpY2VzLgotIAotLSAgIDIuNSBUaGUgdHlwZXMgQ1Ug bGlzdC4gIFRoaXMgZG9lcyBub3QgYXBwZWFyIGluIGEgdmVyc2lvbiAxIGluZGV4LgotLSAgIFRo aXMgaXMgYSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBvZiA2NC1iaXQgbGl0dGxlLWVuZGlhbiB2YWx1 ZXMuICBJbgotLSAgIGEgdHJpcGxldCwgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBDVSBvZmZzZXQs IHRoZSBzZWNvbmQgdmFsdWUgaXMKLS0gICB0aGUgdHlwZSBvZmZzZXQgaW4gdGhlIENVLCBhbmQg dGhlIHRoaXJkIHZhbHVlIGlzIHRoZSB0eXBlCi0tICAgc2lnbmF0dXJlLiAgVGhlIHR5cGVzIENV IGxpc3QgaXMgbm90IHNvcnRlZC4KLSsgICAzLiBUaGUgdHlwZXMgQ1UgbGlzdC4gIFRoaXMgaXMg YSBzZXF1ZW5jZSBvZiB0cmlwbGV0cyBvZiA2NC1iaXQKLSsgICBsaXR0bGUtZW5kaWFuIHZhbHVl cy4gIEluIGEgdHJpcGxldCwgdGhlIGZpcnN0IHZhbHVlIGlzIHRoZSBDVQotKyAgIG9mZnNldCwg dGhlIHNlY29uZCB2YWx1ZSBpcyB0aGUgdHlwZSBvZmZzZXQgaW4gdGhlIENVLCBhbmQgdGhlCi0r ICAgdGhpcmQgdmFsdWUgaXMgdGhlIHR5cGUgc2lnbmF0dXJlLiAgVGhlIHR5cGVzIENVIGxpc3Qg aXMgbm90Ci0rICAgc29ydGVkLgotIAotLSAgIDMuIFRoZSBhZGRyZXNzIHNlY3Rpb24uICBUaGUg YWRkcmVzcyBzZWN0aW9uIGNvbnNpc3RzIG9mIGEgc2VxdWVuY2UKLSsgICA0LiBUaGUgYWRkcmVz cyBzZWN0aW9uLiAgVGhlIGFkZHJlc3Mgc2VjdGlvbiBjb25zaXN0cyBvZiBhIHNlcXVlbmNlCi0g ICAgb2YgYWRkcmVzcyBlbnRyaWVzLiAgRWFjaCBhZGRyZXNzIGVudHJ5IGhhcyB0aHJlZSBlbGVt ZW50cy4KLSAgICBbMF0gVGhlIGxvdyBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJpdCBsaXR0bGUt ZW5kaWFuIHZhbHVlLgotICAgIFsxXSBUaGUgaGlnaCBhZGRyZXNzLiAgVGhpcyBpcyBhIDY0LWJp dCBsaXR0bGUtZW5kaWFuIHZhbHVlLgotICAgIFsyXSBUaGUgQ1UgaW5kZXguICBUaGlzIGlzIGFu IG9mZnNldF90eXBlIHZhbHVlLgotIAotLSAgIDQuIFRoZSBzeW1ib2wgdGFibGUuICBUaGlzIGlz IGEgaGFzaCB0YWJsZS4gIFRoZSBzaXplIG9mIHRoZSBoYXNoCi0rICAgNS4gVGhlIHN5bWJvbCB0 YWJsZS4gIFRoaXMgaXMgYSBoYXNoIHRhYmxlLiAgVGhlIHNpemUgb2YgdGhlIGhhc2gKLSAgICB0 YWJsZSBpcyBhbHdheXMgYSBwb3dlciBvZiAyLiAgVGhlIGluaXRpYWwgaGFzaCBhbmQgdGhlIHN0 ZXAgYXJlCi0gICAgY3VycmVudGx5IGRlZmluZWQgYnkgdGhlIGBmaW5kX3Nsb3QnIGZ1bmN0aW9u LgotIAotQEAgLTE0ODQ3LDcgKzE0ODgyLDcgQEAgd3JpdGVfcHN5bXRhYnNfdG9faW5kZXggKHN0 cnVjdCBvYmpmaWxlIAotICAgIGVsZW1lbnQgaW4gdGhlIGhhc2ggdGFibGUgaXMgdXNlZCB0byBp bmRpY2F0ZSB3aGljaCBDVXMgZGVmaW5lIHRoZQotICAgIHN5bWJvbC4KLSAKLS0gICA1LiBUaGUg Y29uc3RhbnQgcG9vbC4gIFRoaXMgaXMgc2ltcGx5IGEgYnVuY2ggb2YgYnl0ZXMuICBJdCBpcwot KyAgIDYuIFRoZSBjb25zdGFudCBwb29sLiAgVGhpcyBpcyBzaW1wbHkgYSBidW5jaCBvZiBieXRl cy4gIEl0IGlzCi0gICAgb3JnYW5pemVkIHNvIHRoYXQgYWxpZ25tZW50IGlzIGNvcnJlY3Q6IENV IHZlY3RvcnMgYXJlIHN0b3JlZAotICAgIGZpcnN0LCBmb2xsb3dlZCBieSBzdHJpbmdzLiAgKi8K LSBzdGF0aWMgdm9pZAoKZGlmZiAtLWdpdCBhL2dkYi1uZXh0LW92ZXItdGhyb3cucGF0Y2ggYi9n ZGItbmV4dC1vdmVyLXRocm93LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLmFjZmVlZjIKLS0tIC9kZXYvbnVsbAorKysgYi9nZGItbmV4dC1vdmVyLXRocm93LnBhdGNo CkBAIC0wLDAgKzEsMTI4MyBAQAoraHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTAtMTAvbXNnMDAxMDkuaHRtbAorU3ViamVjdDogUkZDOiBuZXh0L2ZpbmlzaC9ldGMgLXZz LSBleGNlcHRpb25zCisKK1RoaXMgaXMgYSByZWZyZXNoIG9mOgorCisgICAgaHR0cDovL3d3dy5z b3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDA5LTA1L21zZzAwNjM1Lmh0bWwKKworKFRo ZSB0aHJlYWQgY29udGludWVzIGluIHRoZSBmb2xsb3dpbmcgbW9udGguKQorCitJIHJlYmFzZWQg dGhlIHBhdGNoIGFuZCBhZGRyZXNzZWQgUGVkcm8ncyBjb21tZW50cy4KKworSSBkaWQgbm90IGFk ZCB0aGUgdXNlciBub3RpZmljYXRpb24gdGhhdCBEb3VnIGFza2VkIGZvci4KKworVGhpcyB2ZXJz aW9uIGRvZXMgd29yayBpZiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGZyb20gYSBzaWduYWwgaGFu ZGxlci4KK1RoZSBpbmNsdWRlZCBKYXZhIHRlc3QgY2FzZSBjaGVja3MgdGhhdCAob24gbW9zdCBw bGF0Zm9ybXMpLgorCitCdWlsdCBhbmQgcmVndGVzdGVkIG9uIHg4Ni02NCAoY29tcGlsZSBmYXJt KS4KK1Rlc3RzIGZvciB0aGUgbmV3IGZ1bmN0aW9uYWxpdHkgYXJlIGluY2x1ZGVkLgorCitJJ2Qg YXBwcmVjaWF0ZSBjb21tZW50cy4gIEkgZG9uJ3Qgd2FudCB0byBjb21taXQgdGhpcyB3aXRob3V0 IGEgcmV2aWV3LAorYXMgbXkgZXhwZXJpZW5jZSBpcyB0aGF0IEkgdXN1YWxseSBlcnIgd2hlbiB0 b3VjaGluZyBicmVha3BvaW50cyBvcgoraW5mcnVuLgorCitJZiB5b3Ugd2FudCB0byB0cnkgdGhp cyB5b3Vyc2VsZiwgeW91IHdpbGwgbmVlZCBhIG5ldy1lbm91Z2ggbGliZ2NjLCBvbmUKK3RoYXQg aW5jbHVkZXMgdGhlIG5lY2Vzc2FyeSBkZWJ1Z2dpbmcgaG9vay4KKworVG9tCisKKzIwMTAtMTAt MDYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KKworCSogaW5mcnVuLmMgKGhhbmRs ZV9pbmZlcmlvcl9ldmVudCk6IEhhbmRsZSBleGNlcHRpb24gYnJlYWtwb2ludHMuCisJKGhhbmRs ZV9pbmZlcmlvcl9ldmVudCk6IExpa2V3aXNlLgorCShpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9i cmVha3BvaW50KTogTmV3IGZ1bmN0aW9uLgorCShjaGVja19leGNlcHRpb25fcmVzdW1lKTogTGlr ZXdpc2UuCisJKiBpbmZlcmlvci5oIChkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAp OiBEZWNsYXJlLgorCSogaW5mY21kLmMgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51 cCk6IE5vIGxvbmdlciBzdGF0aWMuCisJKHN0ZXBfMSk6IFNldCB0aHJlYWQncyBpbml0aWF0aW5n IGZyYW1lLgorCSh1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbik6IE5ldyBmdW5jdGlvbi4KKwkodW50 aWxfbmV4dF9jb21tYW5kKTogU3VwcG9ydCBleGNlcHRpb24gYnJlYWtwb2ludHMuCisJKGZpbmlz aF9jb21tYW5kX2NvbnRpbnVhdGlvbik6IERlbGV0ZSBsb25nam1wIGJyZWFrcG9pbnQuCisJKGZp bmlzaF9mb3J3YXJkKTogU3VwcG9ydCBleGNlcHRpb24gYnJlYWtwb2ludHMuCisJKiBnZGJ0aHJl YWQuaCAoc3RydWN0IHRocmVhZF9pbmZvKSA8aW5pdGlhdGluZ19mcmFtZT46IE5ldyBmaWVsZC4K KwkqIGJyZWFrcG9pbnQuaCAoZW51bSBicHR5cGUpIDxicF9leGNlcHRpb24sIGJwX2V4Y2VwdGlv bl9yZXN1bWUsCisJYnBfZXhjZXB0aW9uX21hc3Rlcj46IE5ldyBjb25zdGFudHMuCisJKHN0cnVj dCBicHN0YXRfd2hhdCkgPGlzX2xvbmdqbXA+OiBOZXcgZmllbGQuCisJKiBicmVha3BvaW50LmMg KGNyZWF0ZV9leGNlcHRpb25fbWFzdGVyX2JyZWFrcG9pbnQpOiBOZXcgZnVuY3Rpb24uCisJKHVw ZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjKTogSGFuZGxlIGJwX2V4Y2VwdGlvbl9tYXN0ZXIu ICBDYWxsCisJY3JlYXRlX2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludC4KKwkocHJpbnRfaXRf dHlwaWNhbCk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLCBicF9leGNlcHRpb24uCisJKGJw c3RhdF9zdG9wX3N0YXR1cyk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLgorCShicHN0YXRf d2hhdCk6IEhhbmRsZSBicF9leGNlcHRpb25fbWFzdGVyLCBicF9leGNlcHRpb24sCisJYnBfZXhj ZXB0aW9uX3Jlc3VtZS4KKwkoYnB0eXBlX3N0cmluZyk6IExpa2V3aXNlLgorCShwcmludF9vbmVf YnJlYWtwb2ludF9sb2NhdGlvbik6IExpa2V3aXNlLgorCShhbGxvY2F0ZV9icF9sb2NhdGlvbik6 IExpa2V3aXNlLgorCShzZXRfbG9uZ2ptcF9icmVha3BvaW50KTogSGFuZGxlIGV4Y2VwdGlvbiBi cmVha3BvaW50cy4KKwkoZGVsZXRlX2xvbmdqbXBfYnJlYWtwb2ludCk6IExpa2V3aXNlLgorCSht ZW50aW9uKTogTGlrZXdpc2UuCisJKHN0cnVjdCB1bnRpbF9icmVha19jb21tYW5kX2NvbnRpbnVh dGlvbl9hcmdzKSA8dGhyZWFkX251bT46IE5ldworCWZpZWxkLgorCSh1bnRpbF9icmVha19jb21t YW5kX2NvbnRpbnVhdGlvbik6IENhbGwKKwlkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50LgorCSh1 bnRpbF9icmVha19jb21tYW5kKTogU3VwcG9ydCBleGNlcHRpb24gYnJlYWtwb2ludHMuCisJKGRl bGV0ZV9jb21tYW5kKTogTGlrZXdpc2UuCisJKGJyZWFrcG9pbnRfcmVfc2V0X29uZSk6IExpa2V3 aXNlLgorCShicmVha3BvaW50X3JlX3NldCk6IExpa2V3aXNlLgorCisyMDEwLTEwLTA2ICBUb20g VHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+CisKKwkqIGdkYi5qYXZhL2pucGUuamF2YTogTmV3 IGZpbGUuCisJKiBnZGIuamF2YS9qbnBlLmV4cDogTmV3IGZpbGUuCisJKiBnZGIuY3AvZ2RiOTU5 My5leHA6IE5ldyBmaWxlLgorCSogZ2RiLmNwL2dkYjk1OTMuY2M6IE5ldyBmaWxlLgorCitJbmRl eDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYnJlYWtwb2ludC5jCis9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0g Z2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMC0xMS0xNyAwMjoz ODo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9icmVha3Bv aW50LmMJMjAxMC0xMS0xNyAwMjo0MTo1My4wMDAwMDAwMDAgKzAxMDAKK0BAIC0yMjMyLDYgKzIy MzIsMzMgQEAgY3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQgKAorICAgZG9f Y2xlYW51cHMgKG9sZF9jaGFpbik7CisgfQorIAorKy8qIEluc3RhbGwgYSBtYXN0ZXIgYnJlYWtw b2ludCBvbiB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLiAgKi8KKysKKyt2b2lkCisrY3JlYXRl X2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAodm9pZCkKKyt7CisrICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZTsKKysKKysgIEFMTF9PQkpGSUxFUyAob2JqZmlsZSkKKysgICAgeworKyAgICAg IHN0cnVjdCBtaW5pbWFsX3N5bWJvbCAqZGVidWdfaG9vazsKKysKKysgICAgICBkZWJ1Z19ob29r ID0gbG9va3VwX21pbmltYWxfc3ltYm9sX3RleHQgKCJfVW53aW5kX0RlYnVnSG9vayIsIG9iamZp bGUpOworKyAgICAgIGlmIChkZWJ1Z19ob29rICE9IE5VTEwpCisrCXsKKysJICBzdHJ1Y3QgYnJl YWtwb2ludCAqYjsKKysKKysJICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdldF9v YmpmaWxlX2FyY2ggKG9iamZpbGUpLAorKwkJCQkJICBTWU1CT0xfVkFMVUVfQUREUkVTUyAoZGVi dWdfaG9vayksCisrCQkJCQkgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIpOworKwkgIGItPmFkZHJfc3Ry aW5nID0geHN0cmR1cCAoIl9VbndpbmRfRGVidWdIb29rIik7CisrCSAgYi0+ZW5hYmxlX3N0YXRl ID0gYnBfZGlzYWJsZWQ7CisrCX0KKysgICAgfQorKworKyAgdXBkYXRlX2dsb2JhbF9sb2NhdGlv bl9saXN0ICgxKTsKKyt9CisrCisgdm9pZAorIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVj ICh2b2lkKQorIHsKK0BAIC0yMjczLDcgKzIzMDAsOCBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0 ZXJfZXhlYyAodm9pZCkKKyAgICAgLyogVGhyZWFkIGV2ZW50IGJyZWFrcG9pbnRzIG11c3QgYmUg c2V0IGFuZXcgYWZ0ZXIgYW4gZXhlYygpLAorICAgICAgICBhcyBtdXN0IG92ZXJsYXkgZXZlbnQg YW5kIGxvbmdqbXAgbWFzdGVyIGJyZWFrcG9pbnRzLiAgKi8KKyAgICAgaWYgKGItPnR5cGUgPT0g YnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5cGUgPT0gYnBfb3ZlcmxheV9ldmVudAorLQl8fCBiLT50 eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9t YXN0ZXIpCisrCXx8IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9tYXN0ZXIgfHwgYi0+dHlwZSA9PSBi cF9zdGRfdGVybWluYXRlX21hc3RlcgorKwl8fCBiLT50eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0 ZXIpCisgICAgICAgeworIAlkZWxldGVfYnJlYWtwb2ludCAoYik7CisgCWNvbnRpbnVlOworQEAg LTIyODgsNyArMjMxNiw4IEBAIHVwZGF0ZV9icmVha3BvaW50c19hZnRlcl9leGVjICh2b2lkKQor IAorICAgICAvKiBMb25nam1wIGFuZCBsb25nam1wLXJlc3VtZSBicmVha3BvaW50cyBhcmUgYWxz byBtZWFuaW5nbGVzcworICAgICAgICBhZnRlciBhbiBleGVjLiAgKi8KKy0gICAgaWYgKGItPnR5 cGUgPT0gYnBfbG9uZ2ptcCB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBfcmVzdW1lKQorKyAgICBp ZiAoYi0+dHlwZSA9PSBicF9sb25nam1wIHx8IGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9yZXN1bWUK KysJfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb24gfHwgYi0+dHlwZSA9PSBicF9leGNlcHRpb25f cmVzdW1lKQorICAgICAgIHsKKyAJZGVsZXRlX2JyZWFrcG9pbnQgKGIpOworIAljb250aW51ZTsK K0BAIC0yMzUwLDYgKzIzNzksNyBAQCB1cGRhdGVfYnJlYWtwb2ludHNfYWZ0ZXJfZXhlYyAodm9p ZCkKKyAgIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICgic2lnbG9uZ2ptcCIpOwor ICAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKCJfc2lnbG9uZ2ptcCIpOworICAg Y3JlYXRlX3N0ZF90ZXJtaW5hdGVfbWFzdGVyX2JyZWFrcG9pbnQgKCJzdGQ6OnRlcm1pbmF0ZSgp Iik7CisrICBjcmVhdGVfZXhjZXB0aW9uX21hc3Rlcl9icmVha3BvaW50ICgpOworIH0KKyAKKyBp bnQKK0BAIC0zMjc1LDYgKzMzMDUsMTIgQEAgcHJpbnRfaXRfdHlwaWNhbCAoYnBzdGF0IGJzKQor ICAgICAgIHJlc3VsdCA9IFBSSU5UX05PVEhJTkc7CisgICAgICAgYnJlYWs7CisgCisrICAgIGNh c2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKKysgICAgICAvKiBUaGVzZSBzaG91bGQgbmV2ZXIgYmUg ZW5hYmxlZC4gICovCisrICAgICAgcHJpbnRmX2ZpbHRlcmVkIChfKCJFeGNlcHRpb24gTWFzdGVy IEJyZWFrcG9pbnQ6IGdkYiBzaG91bGQgbm90IHN0b3AhXG4iKSk7CisrICAgICAgcmVzdWx0ID0g UFJJTlRfTk9USElORzsKKysgICAgICBicmVhazsKKysKKyAgICAgY2FzZSBicF93YXRjaHBvaW50 OgorICAgICBjYXNlIGJwX2hhcmR3YXJlX3dhdGNocG9pbnQ6CisgICAgICAgYW5ub3RhdGVfd2F0 Y2hwb2ludCAoYi0+bnVtYmVyKTsKK0BAIC0zMzYyLDYgKzMzOTgsOCBAQCBwcmludF9pdF90eXBp Y2FsIChicHN0YXQgYnMpCisgICAgIGNhc2UgYnBfbm9uZToKKyAgICAgY2FzZSBicF9sb25nam1w OgorICAgICBjYXNlIGJwX2xvbmdqbXBfcmVzdW1lOgorKyAgICBjYXNlIGJwX2V4Y2VwdGlvbjoK KysgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgorICAgICBjYXNlIGJwX3N0ZXBfcmVzdW1l OgorICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6CisgICAgIGNhc2UgYnBfY2FsbF9kdW1t eToKK0BAIC00MTY0LDcgKzQyMDIsOCBAQCBicHN0YXRfc3RvcF9zdGF0dXMgKHN0cnVjdCBhZGRy ZXNzX3NwYWNlCisgCisgCSAgaWYgKGItPnR5cGUgPT0gYnBfdGhyZWFkX2V2ZW50IHx8IGItPnR5 cGUgPT0gYnBfb3ZlcmxheV9ldmVudAorIAkgICAgICB8fCBiLT50eXBlID09IGJwX2xvbmdqbXBf bWFzdGVyCistCSAgICAgIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIpCisr CSAgICAgIHx8IGItPnR5cGUgPT0gYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIKKysJICAgICAgfHwg Yi0+dHlwZSA9PSBicF9leGNlcHRpb25fbWFzdGVyKQorIAkgICAgLyogV2UgZG8gbm90IHN0b3Ag Zm9yIHRoZXNlLiAgKi8KKyAJICAgIGJzLT5zdG9wID0gMDsKKyAJICBlbHNlCitAQCAtNDI2MCw2 ICs0Mjk5LDcgQEAgYnBzdGF0X3doYXQgKGJwc3RhdCBic19oZWFkKQorIAorICAgcmV0dmFsLm1h aW5fYWN0aW9uID0gQlBTVEFUX1dIQVRfS0VFUF9DSEVDS0lORzsKKyAgIHJldHZhbC5jYWxsX2R1 bW15ID0gU1RPUF9OT05FOworKyAgcmV0dmFsLmlzX2xvbmdqbXAgPSAwOworIAorICAgZm9yIChi cyA9IGJzX2hlYWQ7IGJzICE9IE5VTEw7IGJzID0gYnMtPm5leHQpCisgICAgIHsKK0BAIC00MzE1 LDEwICs0MzU1LDE0IEBAIGJwc3RhdF93aGF0IChicHN0YXQgYnNfaGVhZCkKKyAJICAgIH0KKyAJ ICBicmVhazsKKyAJY2FzZSBicF9sb25nam1wOgorKwljYXNlIGJwX2V4Y2VwdGlvbjoKKyAJICB0 aGlzX2FjdGlvbiA9IEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRTsKKysJICByZXR2YWwu aXNfbG9uZ2ptcCA9IGJwdHlwZSA9PSBicF9sb25nam1wOworIAkgIGJyZWFrOworIAljYXNlIGJw X2xvbmdqbXBfcmVzdW1lOgorKwljYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6CisgCSAgdGhpc19h Y3Rpb24gPSBCUFNUQVRfV0hBVF9DTEVBUl9MT05HSk1QX1JFU1VNRTsKKysJICByZXR2YWwuaXNf bG9uZ2ptcCA9IGJwdHlwZSA9PSBicF9sb25nam1wX3Jlc3VtZTsKKyAJICBicmVhazsKKyAJY2Fz ZSBicF9zdGVwX3Jlc3VtZToKKyAJICBpZiAoYnMtPnN0b3ApCitAQCAtNDMzNCw2ICs0Mzc4LDcg QEAgYnBzdGF0X3doYXQgKGJwc3RhdCBic19oZWFkKQorIAljYXNlIGJwX292ZXJsYXlfZXZlbnQ6 CisgCWNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisgCWNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0 ZXI6CisrCWNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKKyAJICB0aGlzX2FjdGlvbiA9IEJQU1RB VF9XSEFUX1NJTkdMRTsKKyAJICBicmVhazsKKyAJY2FzZSBicF9jYXRjaHBvaW50OgorQEAgLTQ1 NTYsNiArNDYwMSw4IEBAIGJwdHlwZV9zdHJpbmcgKGVudW0gYnB0eXBlIHR5cGUpCisgICAgIHti cF9hY2Nlc3Nfd2F0Y2hwb2ludCwgImFjYyB3YXRjaHBvaW50In0sCisgICAgIHticF9sb25nam1w LCAibG9uZ2ptcCJ9LAorICAgICB7YnBfbG9uZ2ptcF9yZXN1bWUsICJsb25nam1wIHJlc3VtZSJ9 LAorKyAgICB7YnBfZXhjZXB0aW9uLCAiZXhjZXB0aW9uIn0sCisrICAgIHticF9leGNlcHRpb25f cmVzdW1lLCAiZXhjZXB0aW9uIHJlc3VtZSJ9LAorICAgICB7YnBfc3RlcF9yZXN1bWUsICJzdGVw IHJlc3VtZSJ9LAorICAgICB7YnBfd2F0Y2hwb2ludF9zY29wZSwgIndhdGNocG9pbnQgc2NvcGUi fSwKKyAgICAge2JwX2NhbGxfZHVtbXksICJjYWxsIGR1bW15In0sCitAQCAtNDU2NSw2ICs0NjEy LDcgQEAgYnB0eXBlX3N0cmluZyAoZW51bSBicHR5cGUgdHlwZSkKKyAgICAge2JwX292ZXJsYXlf ZXZlbnQsICJvdmVybGF5IGV2ZW50cyJ9LAorICAgICB7YnBfbG9uZ2ptcF9tYXN0ZXIsICJsb25n am1wIG1hc3RlciJ9LAorICAgICB7YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXIsICJzdGQ6OnRlcm1p bmF0ZSBtYXN0ZXIifSwKKysgICAge2JwX2V4Y2VwdGlvbl9tYXN0ZXIsICJleGNlcHRpb24gbWFz dGVyIn0sCisgICAgIHticF9jYXRjaHBvaW50LCAiY2F0Y2hwb2ludCJ9LAorICAgICB7YnBfdHJh Y2Vwb2ludCwgInRyYWNlcG9pbnQifSwKKyAgICAge2JwX2Zhc3RfdHJhY2Vwb2ludCwgImZhc3Qg dHJhY2Vwb2ludCJ9LAorQEAgLTQ3MDUsNiArNDc1Myw4IEBAIHByaW50X29uZV9icmVha3BvaW50 X2xvY2F0aW9uIChzdHJ1Y3QgYnIKKyAgICAgICBjYXNlIGJwX2ZpbmlzaDoKKyAgICAgICBjYXNl IGJwX2xvbmdqbXA6CisgICAgICAgY2FzZSBicF9sb25nam1wX3Jlc3VtZToKKysgICAgICBjYXNl IGJwX2V4Y2VwdGlvbjoKKysgICAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1bWU6CisgICAgICAg Y2FzZSBicF9zdGVwX3Jlc3VtZToKKyAgICAgICBjYXNlIGJwX3dhdGNocG9pbnRfc2NvcGU6Cisg ICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgorQEAgLTQ3MTQsNiArNDc2NCw3IEBAIHByaW50X29u ZV9icmVha3BvaW50X2xvY2F0aW9uIChzdHJ1Y3QgYnIKKyAgICAgICBjYXNlIGJwX292ZXJsYXlf ZXZlbnQ6CisgICAgICAgY2FzZSBicF9sb25nam1wX21hc3RlcjoKKyAgICAgICBjYXNlIGJwX3N0 ZF90ZXJtaW5hdGVfbWFzdGVyOgorKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoKKyAg ICAgICBjYXNlIGJwX3RyYWNlcG9pbnQ6CisgICAgICAgY2FzZSBicF9mYXN0X3RyYWNlcG9pbnQ6 CisgICAgICAgY2FzZSBicF9zdGF0aWNfdHJhY2Vwb2ludDoKK0BAIC01NDU3LDYgKzU1MDgsOCBA QCBhbGxvY2F0ZV9icF9sb2NhdGlvbiAoc3RydWN0IGJyZWFrcG9pbnQgCisgICAgIGNhc2UgYnBf ZmluaXNoOgorICAgICBjYXNlIGJwX2xvbmdqbXA6CisgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1 bWU6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uOgorKyAgICBjYXNlIGJwX2V4Y2VwdGlvbl9yZXN1 bWU6CisgICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CisgICAgIGNhc2UgYnBfd2F0Y2hwb2ludF9z Y29wZToKKyAgICAgY2FzZSBicF9jYWxsX2R1bW15OgorQEAgLTU0NjksNiArNTUyMiw3IEBAIGFs bG9jYXRlX2JwX2xvY2F0aW9uIChzdHJ1Y3QgYnJlYWtwb2ludCAKKyAgICAgY2FzZSBicF9zdGRf dGVybWluYXRlX21hc3RlcjoKKyAgICAgY2FzZSBicF9nbnVfaWZ1bmNfcmVzb2x2ZXI6CisgICAg IGNhc2UgYnBfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKKysgICAgY2FzZSBicF9leGNlcHRp b25fbWFzdGVyOgorICAgICAgIGxvYy0+bG9jX3R5cGUgPSBicF9sb2Nfc29mdHdhcmVfYnJlYWtw b2ludDsKKyAgICAgICBicmVhazsKKyAgICAgY2FzZSBicF9oYXJkd2FyZV9icmVha3BvaW50Ogor QEAgLTU3MDgsOCArNTc2Miw3IEBAIG1ha2VfYnJlYWtwb2ludF9wZXJtYW5lbnQgKHN0cnVjdCBi cmVha3AKKyB9CisgCisgLyogQ2FsbCB0aGlzIHJvdXRpbmUgd2hlbiBzdGVwcGluZyBhbmQgbmV4 dGluZyB0byBlbmFibGUgYSBicmVha3BvaW50CistICAgaWYgd2UgZG8gYSBsb25nam1wKCkgaW4g VEhSRUFELiAgV2hlbiB3ZSBoaXQgdGhhdCBicmVha3BvaW50LCBjYWxsCistICAgc2V0X2xvbmdq bXBfcmVzdW1lX2JyZWFrcG9pbnQoKSB0byBmaWd1cmUgb3V0IHdoZXJlIHdlIGFyZSBnb2luZy4g Ki8KKysgICBpZiB3ZSBkbyBhIGxvbmdqbXAoKSBvciAndGhyb3cnIGluIFRIUkVBRC4gICovCisg Cisgdm9pZAorIHNldF9sb25nam1wX2JyZWFrcG9pbnQgKGludCB0aHJlYWQpCitAQCAtNTcyMiwx MSArNTc3NSwxMiBAQCBzZXRfbG9uZ2ptcF9icmVha3BvaW50IChpbnQgdGhyZWFkKQorICAgICAg Y2xvbmVzIG9mIHRob3NlIGFuZCBlbmFibGUgdGhlbSBmb3IgdGhlIHJlcXVlc3RlZCB0aHJlYWQu ICAqLworICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCisgICAgIGlmIChiLT5wc3Bh Y2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCistCSYmIGItPnR5cGUgPT0gYnBfbG9uZ2ptcF9t YXN0ZXIpCisrCSYmIChiLT50eXBlID09IGJwX2xvbmdqbXBfbWFzdGVyCisrCSAgICB8fCBiLT50 eXBlID09IGJwX2V4Y2VwdGlvbl9tYXN0ZXIpKQorICAgICAgIHsKKyAJc3RydWN0IGJyZWFrcG9p bnQgKmNsb25lID0gY2xvbmVfbW9tZW50YXJ5X2JyZWFrcG9pbnQgKGIpOworIAorLQljbG9uZS0+ dHlwZSA9IGJwX2xvbmdqbXA7CisrCWNsb25lLT50eXBlID0gYi0+dHlwZSA9PSBicF9sb25nam1w X21hc3RlciA/IGJwX2xvbmdqbXAgOiBicF9leGNlcHRpb247CisgCWNsb25lLT50aHJlYWQgPSB0 aHJlYWQ7CisgICAgICAgfQorIH0KK0BAIC01NzM4LDcgKzU3OTIsNyBAQCBkZWxldGVfbG9uZ2pt cF9icmVha3BvaW50IChpbnQgdGhyZWFkKQorICAgc3RydWN0IGJyZWFrcG9pbnQgKmIsICp0ZW1w OworIAorICAgQUxMX0JSRUFLUE9JTlRTX1NBRkUgKGIsIHRlbXApCistICAgIGlmIChiLT50eXBl ID09IGJwX2xvbmdqbXApCisrICAgIGlmIChiLT50eXBlID09IGJwX2xvbmdqbXAgfHwgYi0+dHlw ZSA9PSBicF9leGNlcHRpb24pCisgICAgICAgeworIAlpZiAoYi0+dGhyZWFkID09IHRocmVhZCkK KyAJICBkZWxldGVfYnJlYWtwb2ludCAoYik7CitAQCAtNjkxMyw2ICs2OTY3LDggQEAgbWVudGlv biAoc3RydWN0IGJyZWFrcG9pbnQgKmIpCisgICAgICAgY2FzZSBicF9maW5pc2g6CisgICAgICAg Y2FzZSBicF9sb25nam1wOgorICAgICAgIGNhc2UgYnBfbG9uZ2ptcF9yZXN1bWU6CisrICAgICAg Y2FzZSBicF9leGNlcHRpb246CisrICAgICAgY2FzZSBicF9leGNlcHRpb25fcmVzdW1lOgorICAg ICAgIGNhc2UgYnBfc3RlcF9yZXN1bWU6CisgICAgICAgY2FzZSBicF9jYWxsX2R1bW15OgorICAg ICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZToKK0BAIC02OTI0LDYgKzY5ODAsNyBAQCBtZW50aW9u IChzdHJ1Y3QgYnJlYWtwb2ludCAqYikKKyAgICAgICBjYXNlIGJwX2xvbmdqbXBfbWFzdGVyOgor ICAgICAgIGNhc2UgYnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CisgICAgICAgY2FzZSBicF9nbnVf aWZ1bmNfcmVzb2x2ZXJfcmV0dXJuOgorKyAgICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoK KyAJYnJlYWs7CisgICAgICAgfQorIAorQEAgLTg1OTgsNiArODY1NSw3IEBAIHN0cnVjdCB1bnRp bF9icmVha19jb21tYW5kX2NvbnRpbnVhdGlvbl8KKyB7CisgICBzdHJ1Y3QgYnJlYWtwb2ludCAq YnJlYWtwb2ludDsKKyAgIHN0cnVjdCBicmVha3BvaW50ICpicmVha3BvaW50MjsKKysgIGludCB0 aHJlYWRfbnVtOworIH07CisgCisgLyogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYnkgZmV0Y2hf aW5mZXJpb3JfZXZlbnQgdmlhIHRoZQorQEAgLTg2MTIsNiArODY3MCw3IEBAIHVudGlsX2JyZWFr X2NvbW1hbmRfY29udGludWF0aW9uICh2b2lkICoKKyAgIGRlbGV0ZV9icmVha3BvaW50IChhLT5i cmVha3BvaW50KTsKKyAgIGlmIChhLT5icmVha3BvaW50MikKKyAgICAgZGVsZXRlX2JyZWFrcG9p bnQgKGEtPmJyZWFrcG9pbnQyKTsKKysgIGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnQgKGEtPnRo cmVhZF9udW0pOworIH0KKyAKKyB2b2lkCitAQCAtODYyMyw2ICs4NjgyLDggQEAgdW50aWxfYnJl YWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbQorICAgc3RydWN0IGJyZWFrcG9pbnQgKmJy ZWFrcG9pbnQ7CisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDIgPSBOVUxMOworICAg c3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKysgIGludCB0aHJlYWQ7CisrICBzdHJ1Y3QgdGhy ZWFkX2luZm8gKnRwOworIAorICAgY2xlYXJfcHJvY2VlZF9zdGF0dXMgKCk7CisgCitAQCAtODY2 MSw2ICs4NzIyLDkgQEAgdW50aWxfYnJlYWtfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbQor IAorICAgb2xkX2NoYWluID0gbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3Bv aW50KTsKKyAKKysgIHRwID0gaW5mZXJpb3JfdGhyZWFkICgpOworKyAgdGhyZWFkID0gdHAtPm51 bTsKKysKKyAgIC8qIEtlZXAgd2l0aGluIHRoZSBjdXJyZW50IGZyYW1lLCBvciBpbiBmcmFtZXMg Y2FsbGVkIGJ5IHRoZSBjdXJyZW50CisgICAgICBvbmUuICAqLworIAorQEAgLTg2NzMsNiArODcz NywxMCBAQCB1bnRpbF9icmVha19jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tCisgCQkJCQkg ICAgICBmcmFtZV91bndpbmRfY2FsbGVyX2lkIChmcmFtZSksCisgCQkJCQkgICAgICBicF91bnRp bCk7CisgICAgICAgbWFrZV9jbGVhbnVwX2RlbGV0ZV9icmVha3BvaW50IChicmVha3BvaW50Mik7 CisrCisrICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgICAgICB0cC0+ aW5pdGlhdGluZ19mcmFtZSA9IGZyYW1lX3Vud2luZF9jYWxsZXJfaWQgKGZyYW1lKTsKKysgICAg ICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVh ZCk7CisgICAgIH0KKyAKKyAgIHByb2NlZWQgKC0xLCBUQVJHRVRfU0lHTkFMX0RFRkFVTFQsIDAp OworQEAgLTg2ODksNiArODc1Nyw3IEBAIHVudGlsX2JyZWFrX2NvbW1hbmQgKGNoYXIgKmFyZywg aW50IGZyb20KKyAKKyAgICAgICBhcmdzLT5icmVha3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAg ICBhcmdzLT5icmVha3BvaW50MiA9IGJyZWFrcG9pbnQyOworKyAgICAgIGFyZ3MtPnRocmVhZF9u dW0gPSB0aHJlYWQ7CisgCisgICAgICAgZGlzY2FyZF9jbGVhbnVwcyAob2xkX2NoYWluKTsKKyAg ICAgICBhZGRfY29udGludWF0aW9uIChpbmZlcmlvcl90aHJlYWQgKCksCitAQCAtOTk0MCw2ICsx MDAwOSw3IEBAIGRlbGV0ZV9jb21tYW5kIChjaGFyICphcmcsIGludCBmcm9tX3R0eSkKKyAJICAg ICYmIGItPnR5cGUgIT0gYnBfb3ZlcmxheV9ldmVudAorIAkgICAgJiYgYi0+dHlwZSAhPSBicF9s b25nam1wX21hc3RlcgorIAkgICAgJiYgYi0+dHlwZSAhPSBicF9zdGRfdGVybWluYXRlX21hc3Rl cgorKwkgICAgJiYgYi0+dHlwZSAhPSBicF9leGNlcHRpb25fbWFzdGVyCisgCSAgICAmJiBiLT5u dW1iZXIgPj0gMCkKKyAJICB7CisgCSAgICBicmVha3NfdG9fZGVsZXRlID0gMTsKK0BAIC05OTYx LDYgKzEwMDMxLDcgQEAgZGVsZXRlX2NvbW1hbmQgKGNoYXIgKmFyZywgaW50IGZyb21fdHR5KQor IAkJJiYgYi0+dHlwZSAhPSBicF9vdmVybGF5X2V2ZW50CisgCQkmJiBiLT50eXBlICE9IGJwX2xv bmdqbXBfbWFzdGVyCisgCQkmJiBiLT50eXBlICE9IGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyCisr CQkmJiBiLT50eXBlICE9IGJwX2V4Y2VwdGlvbl9tYXN0ZXIKKyAJCSYmIGItPm51bWJlciA+PSAw KQorIAkgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CisgCSAgfQorQEAgLTEwNDcwLDYgKzEw NTQxLDcgQEAgYnJlYWtwb2ludF9yZV9zZXRfb25lICh2b2lkICpiaW50KQorICAgICBjYXNlIGJw X292ZXJsYXlfZXZlbnQ6CisgICAgIGNhc2UgYnBfbG9uZ2ptcF9tYXN0ZXI6CisgICAgIGNhc2Ug YnBfc3RkX3Rlcm1pbmF0ZV9tYXN0ZXI6CisrICAgIGNhc2UgYnBfZXhjZXB0aW9uX21hc3RlcjoK KyAgICAgICBkZWxldGVfYnJlYWtwb2ludCAoYik7CisgICAgICAgYnJlYWs7CisgCitAQCAtMTA0 OTMsNiArMTA1NjUsOCBAQCBicmVha3BvaW50X3JlX3NldF9vbmUgKHZvaWQgKmJpbnQpCisgICAg IGNhc2UgYnBfc3RlcF9yZXN1bWU6CisgICAgIGNhc2UgYnBfbG9uZ2ptcDoKKyAgICAgY2FzZSBi cF9sb25nam1wX3Jlc3VtZToKKysgICAgY2FzZSBicF9leGNlcHRpb246CisrICAgIGNhc2UgYnBf ZXhjZXB0aW9uX3Jlc3VtZToKKyAgICAgY2FzZSBicF9qaXRfZXZlbnQ6CisgICAgIGNhc2UgYnBf Z251X2lmdW5jX3Jlc29sdmVyX3JldHVybjoKKyAgICAgICBicmVhazsKK0BAIC0xMDUzNyw2ICsx MDYxMSw3IEBAIGJyZWFrcG9pbnRfcmVfc2V0ICh2b2lkKQorICAgY3JlYXRlX2xvbmdqbXBfbWFz dGVyX2JyZWFrcG9pbnQgKCJzaWdsb25nam1wIik7CisgICBjcmVhdGVfbG9uZ2ptcF9tYXN0ZXJf YnJlYWtwb2ludCAoIl9zaWdsb25nam1wIik7CisgICBjcmVhdGVfc3RkX3Rlcm1pbmF0ZV9tYXN0 ZXJfYnJlYWtwb2ludCAoInN0ZDo6dGVybWluYXRlKCkiKTsKKysgIGNyZWF0ZV9leGNlcHRpb25f bWFzdGVyX2JyZWFrcG9pbnQgKCk7CisgfQorIAwKKyAvKiBSZXNldCB0aGUgdGhyZWFkIG51bWJl ciBvZiB0aGlzIGJyZWFrcG9pbnQ6CitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvYnJl YWtwb2ludC5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9i cmVha3BvaW50LmgJMjAxMC0xMS0xNyAwMjozODo1OS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi9icmVha3BvaW50LmgJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAw MDAwMDAgKzAxMDAKK0BAIC02MSw2ICs2MSwxMyBAQCBlbnVtIGJwdHlwZQorICAgICBicF9sb25n am1wLAkJCS8qIHNlY3JldCBicmVha3BvaW50IHRvIGZpbmQgbG9uZ2ptcCgpICovCisgICAgIGJw X2xvbmdqbXBfcmVzdW1lLAkJLyogc2VjcmV0IGJyZWFrcG9pbnQgdG8gZXNjYXBlIGxvbmdqbXAo KSAqLworIAorKyAgICAvKiBBbiBpbnRlcm5hbCBicmVha3BvaW50IHRoYXQgaXMgaW5zdGFsbGVk IG9uIHRoZSB1bndpbmRlcidzCisrICAgICAgIGRlYnVnIGhvb2suICAqLworKyAgICBicF9leGNl cHRpb24sCisrICAgIC8qIEFuIGludGVybmFsIGJyZWFrcG9pbnQgdGhhdCBpcyBzZXQgYXQgdGhl IHBvaW50IHdoZXJlIGFuCisrICAgICAgIGV4Y2VwdGlvbiB3aWxsIGxhbmQuICAqLworKyAgICBi cF9leGNlcHRpb25fcmVzdW1lLAorKworICAgICAvKiBVc2VkIGJ5IHdhaXRfZm9yX2luZmVyaW9y IGZvciBzdGVwcGluZyBvdmVyIHN1YnJvdXRpbmUgY2FsbHMsIGZvcgorICAgICAgICBzdGVwcGlu ZyBvdmVyIHNpZ25hbCBoYW5kbGVycywgYW5kIGZvciBza2lwcGluZyBwcm9sb2d1ZXMuICAqLwor ICAgICBicF9zdGVwX3Jlc3VtZSwKK0BAIC0xMzAsNiArMTM3LDkgQEAgZW51bSBicHR5cGUKKyAg ICAgLyogTWFzdGVyIGNvcGllcyBvZiBzdGQ6OnRlcm1pbmF0ZSBicmVha3BvaW50cy4gICovCisg ICAgIGJwX3N0ZF90ZXJtaW5hdGVfbWFzdGVyLAorIAorKyAgICAvKiBMaWtlIGJwX2xvbmdqbXBf bWFzdGVyLCBidXQgZm9yIGV4Y2VwdGlvbnMuICAqLworKyAgICBicF9leGNlcHRpb25fbWFzdGVy LAorKworICAgICBicF9jYXRjaHBvaW50LAorIAorICAgICBicF90cmFjZXBvaW50LAorQEAgLTY3 Miw2ICs2ODIsMTAgQEAgc3RydWN0IGJwc3RhdF93aGF0CisgICAgICAgIGNvbnRpbnVpbmcgZnJv bSBhIGNhbGwgZHVtbXkgd2l0aG91dCBwb3BwaW5nIHRoZSBmcmFtZSBpcyBub3QgYQorICAgICAg ICB1c2VmdWwgb25lKS4gICovCisgICAgIGVudW0gc3RvcF9zdGFja19raW5kIGNhbGxfZHVtbXk7 CisrCisrICAgIC8qIFVzZWQgZm9yIEJQU1RBVF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRS4gIFRy dWUgaWYgd2UgYXJlCisrICAgICAgIGhhbmRsaW5nIGEgbG9uZ2ptcCwgZmFsc2UgaWYgd2UgYXJl IGhhbmRsaW5nIGFuIGV4Y2VwdGlvbi4gICovCisrICAgIGludCBpc19sb25nam1wOworICAgfTsK KyAKKyAvKiBUaGUgcG9zc2libGUgcmV0dXJuIHZhbHVlcyBmb3IgcHJpbnRfYnBzdGF0LCBwcmlu dF9pdF9ub3JtYWwsCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ2RidGhyZWFkLmgK Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL2dkYnRocmVhZC5o CTIwMTAtMTEtMDIgMDI6Mzc6MzEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvZ2RidGhyZWFkLmgJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAK K0BAIC0xODUsNiArMTg1LDEwIEBAIHN0cnVjdCB0aHJlYWRfaW5mbworICAgLyogVHJ1ZSBpZiB0 aGlzIHRocmVhZCBoYXMgYmVlbiBleHBsaWNpdGx5IHJlcXVlc3RlZCB0byBzdG9wLiAgKi8KKyAg IGludCBzdG9wX3JlcXVlc3RlZDsKKyAKKysgIC8qIFRoZSBpbml0aWF0aW5nIGZyYW1lIG9mIGEg bmV4dGluZyBvcGVyYXRpb24sIHVzZWQgZm9yIGRlY2lkaW5nCisrICAgICB3aGljaCBleGNlcHRp b25zIHRvIGludGVyY2VwdC4gICovCisrICBzdHJ1Y3QgZnJhbWVfaWQgaW5pdGlhdGluZ19mcmFt ZTsKKysKKyAgIC8qIFByaXZhdGUgZGF0YSB1c2VkIGJ5IHRoZSB0YXJnZXQgdmVjdG9yIGltcGxl bWVudGF0aW9uLiAgKi8KKyAgIHN0cnVjdCBwcml2YXRlX3RocmVhZF9pbmZvICpwcml2YXRlOwor IAorSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZmNtZC5jCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9pbmZjbWQuYwkyMDEwLTA3LTAxIDE3OjM2 OjE1LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2luZmNtZC5j CTIwMTAtMTEtMTcgMDI6Mzk6MTkuMDAwMDAwMDAwICswMTAwCitAQCAtODIyLDcgKzgyMiw3IEBA IG5leHRpX2NvbW1hbmQgKGNoYXIgKmNvdW50X3N0cmluZywgaW50IGYKKyAgIHN0ZXBfMSAoMSwg MSwgY291bnRfc3RyaW5nKTsKKyB9CisgCistc3RhdGljIHZvaWQKKyt2b2lkCisgZGVsZXRlX2xv bmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwICh2b2lkICphcmcpCisgeworICAgaW50IHRocmVhZCA9 ICogKGludCAqKSBhcmc7CitAQCAtODYyLDEwICs4NjIsMTMgQEAgc3RlcF8xIChpbnQgc2tpcF9z dWJyb3V0aW5lcywgaW50IHNpbmdsZQorIAorICAgaWYgKCFzaW5nbGVfaW5zdCB8fCBza2lwX3N1 YnJvdXRpbmVzKQkJLyogbGVhdmUgc2kgY29tbWFuZCBhbG9uZSAqLworICAgICB7CisrICAgICAg c3RydWN0IHRocmVhZF9pbmZvICp0cCA9IGluZmVyaW9yX3RocmVhZCAoKTsKKysKKyAgICAgICBp ZiAoaW5fdGhyZWFkX2xpc3QgKGluZmVyaW9yX3B0aWQpKQorICAJdGhyZWFkID0gcGlkX3RvX3Ro cmVhZF9pZCAoaW5mZXJpb3JfcHRpZCk7CisgCisgICAgICAgc2V0X2xvbmdqbXBfYnJlYWtwb2lu dCAodGhyZWFkKTsKKysgICAgICB0cC0+aW5pdGlhdGluZ19mcmFtZSA9IGdldF9mcmFtZV9pZCAo Z2V0X2N1cnJlbnRfZnJhbWUgKCkpOworIAorICAgICAgIG1ha2VfY2xlYW51cCAoZGVsZXRlX2xv bmdqbXBfYnJlYWtwb2ludF9jbGVhbnVwLCAmdGhyZWFkKTsKKyAgICAgfQorQEAgLTEyMTksNiAr MTIyMiwxNSBAQCBzaWduYWxfY29tbWFuZCAoY2hhciAqc2lnbnVtX2V4cCwgaW50IGZyCisgICBw cm9jZWVkICgoQ09SRV9BRERSKSAtMSwgb3Vyc2lnLCAwKTsKKyB9CisgCisrLyogQSBjb250aW51 YXRpb24gY2FsbGJhY2sgZm9yIHVudGlsX25leHRfY29tbWFuZC4gICovCisrCisrc3RhdGljIHZv aWQKKyt1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiAodm9pZCAqYXJnKQorK3sKKysgIHN0cnVjdCB0 aHJlYWRfaW5mbyAqdHAgPSBhcmc7CisrICBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50ICh0cC0+ bnVtKTsKKyt9CisrCisgLyogUHJvY2VlZCB1bnRpbCB3ZSByZWFjaCBhIGRpZmZlcmVudCBzb3Vy Y2UgbGluZSB3aXRoIHBjIGdyZWF0ZXIgdGhhbgorICAgIG91ciBjdXJyZW50IG9uZSBvciBleGl0 IHRoZSBmdW5jdGlvbi4gIFdlIHNraXAgY2FsbHMgaW4gYm90aCBjYXNlcy4KKyAKK0BAIC0xMjM1 LDYgKzEyNDcsOCBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAgIHN0cnVj dCBzeW1ib2wgKmZ1bmM7CisgICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbDsKKyAgIHN0cnVj dCB0aHJlYWRfaW5mbyAqdHAgPSBpbmZlcmlvcl90aHJlYWQgKCk7CisrICBpbnQgdGhyZWFkID0g dHAtPm51bTsKKysgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2hhaW47CisgCisgICBjbGVhcl9wcm9j ZWVkX3N0YXR1cyAoKTsKKyAgIHNldF9zdGVwX2ZyYW1lICgpOworQEAgLTEyNzAsNyArMTI4NCwx OSBAQCB1bnRpbF9uZXh0X2NvbW1hbmQgKGludCBmcm9tX3R0eSkKKyAKKyAgIHRwLT5zdGVwX211 bHRpID0gMDsJCS8qIE9ubHkgb25lIGNhbGwgdG8gcHJvY2VlZCAqLworIAorKyAgc2V0X2xvbmdq bXBfYnJlYWtwb2ludCAodGhyZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2Zy YW1lX2lkIChmcmFtZSk7CisrICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25n am1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVhZCk7CisrCisgICBwcm9jZWVkICgoQ09SRV9B RERSKSAtMSwgVEFSR0VUX1NJR05BTF9ERUZBVUxULCAxKTsKKysKKysgIGlmICh0YXJnZXRfY2Fu X2FzeW5jX3AgKCkgJiYgaXNfcnVubmluZyAoaW5mZXJpb3JfcHRpZCkpCisrICAgIHsKKysgICAg ICBkaXNjYXJkX2NsZWFudXBzIChvbGRfY2hhaW4pOworKyAgICAgIGFkZF9jb250aW51YXRpb24g KHRwLCB1bnRpbF9uZXh0X2NvbnRpbnVhdGlvbiwgdHAsIE5VTEwpOworKyAgICB9CisrICBlbHNl CisrICAgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworIH0KKyAKKyBzdGF0aWMgdm9pZAorQEAg LTE0NjMsNiArMTQ4OSw3IEBAIGZpbmlzaF9jb21tYW5kX2NvbnRpbnVhdGlvbiAodm9pZCAqYXJn KQorICAgaWYgKGJzICE9IE5VTEwgJiYgdHAtPnByb2NlZWRfdG9fZmluaXNoKQorICAgICBvYnNl cnZlcl9ub3RpZnlfbm9ybWFsX3N0b3AgKGJzLCAxIC8qIHByaW50IGZyYW1lICovKTsKKyAgIGRl bGV0ZV9icmVha3BvaW50IChhLT5icmVha3BvaW50KTsKKysgIGRlbGV0ZV9sb25nam1wX2JyZWFr cG9pbnQgKGluZmVyaW9yX3RocmVhZCAoKS0+bnVtKTsKKyB9CisgCisgc3RhdGljIHZvaWQKK0BA IC0xNTQ2LDYgKzE1NzMsNyBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5bWJvbCAqZnVuY3Rp b24sCisgICBzdHJ1Y3QgYnJlYWtwb2ludCAqYnJlYWtwb2ludDsKKyAgIHN0cnVjdCBjbGVhbnVw ICpvbGRfY2hhaW47CisgICBzdHJ1Y3QgZmluaXNoX2NvbW1hbmRfY29udGludWF0aW9uX2FyZ3Mg KmNhcmdzOworKyAgaW50IHRocmVhZCA9IHRwLT5udW07CisgCisgICBzYWwgPSBmaW5kX3BjX2xp bmUgKGdldF9mcmFtZV9wYyAoZnJhbWUpLCAwKTsKKyAgIHNhbC5wYyA9IGdldF9mcmFtZV9wYyAo ZnJhbWUpOworQEAgLTE1NTYsNiArMTU4NCwxMCBAQCBmaW5pc2hfZm9yd2FyZCAoc3RydWN0IHN5 bWJvbCAqZnVuY3Rpb24sCisgCisgICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBfZGVsZXRlX2Jy ZWFrcG9pbnQgKGJyZWFrcG9pbnQpOworIAorKyAgc2V0X2xvbmdqbXBfYnJlYWtwb2ludCAodGhy ZWFkKTsKKysgIHRwLT5pbml0aWF0aW5nX2ZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmcmFtZSk7Cisr ICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sb25nam1wX2JyZWFrcG9pbnRfY2xlYW51cCwgJnRocmVh ZCk7CisrCisgICB0cC0+cHJvY2VlZF90b19maW5pc2ggPSAxOyAgICAvKiBXZSB3YW50IHN0b3Bf cmVnaXN0ZXJzLCBwbGVhc2UuLi4gICovCisgICBjYXJncyA9IHhtYWxsb2MgKHNpemVvZiAoKmNh cmdzKSk7CisgCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvaW5mZXJpb3IuaAorPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5mZXJpb3IuaAkyMDEw LTExLTE3IDAyOjM4OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2luZmVyaW9yLmgJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAgKzAxMDAKK0BAIC0y OTksNiArMjk5LDggQEAgZXh0ZXJuIHZvaWQgaW50ZXJydXB0X3RhcmdldF9jb21tYW5kIChjaAor IAorIGV4dGVybiB2b2lkIGludGVycnVwdF90YXJnZXRfMSAoaW50IGFsbF90aHJlYWRzKTsKKyAK KytleHRlcm4gdm9pZCBkZWxldGVfbG9uZ2ptcF9icmVha3BvaW50X2NsZWFudXAgKHZvaWQgKmFy Zyk7CisrCisgZXh0ZXJuIHZvaWQgZGV0YWNoX2NvbW1hbmQgKGNoYXIgKiwgaW50KTsKKyAKKyBl eHRlcm4gdm9pZCBub3RpY2VfbmV3X2luZmVyaW9yIChwdGlkX3QsIGludCwgaW50KTsKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZydW4uYworPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdkYi03 LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvaW5mcnVuLmMJMjAxMC0xMS0xNyAwMjozODo1OS4wMDAw MDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9pbmZydW4uYwkyMDEwLTEx LTE3IDAyOjM5OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTQ1LDYgKzQ1LDggQEAKKyAjaW5jbHVk ZSAibGFuZ3VhZ2UuaCIKKyAjaW5jbHVkZSAic29saWIuaCIKKyAjaW5jbHVkZSAibWFpbi5oIgor KyNpbmNsdWRlICJkaWN0aW9uYXJ5LmgiCisrI2luY2x1ZGUgImJsb2NrLmgiCisgI2luY2x1ZGUg ImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAibWkvbWktY29tbW9uLmgiCisgI2luY2x1ZGUgImV2 ZW50LXRvcC5oIgorQEAgLTIyMjksNiArMjIzMSw4IEBAIHN0YXRpYyB2b2lkIGluc2VydF9zdGVw X3Jlc3VtZV9icmVha3BvaW4KKyAJCQkJCQkgIHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgc3Jfc2Fs LAorIAkJCQkJCSAgc3RydWN0IGZyYW1lX2lkIHNyX2lkKTsKKyBzdGF0aWMgdm9pZCBpbnNlcnRf bG9uZ2ptcF9yZXN1bWVfYnJlYWtwb2ludCAoc3RydWN0IGdkYmFyY2ggKiwgQ09SRV9BRERSKTsK KytzdGF0aWMgdm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2Nv bnRyb2xfc3RhdGUgKiwKKysJCQkJICAgIHN0cnVjdCBmcmFtZV9pbmZvICosIHN0cnVjdCBzeW1i b2wgKik7CisgCisgc3RhdGljIHZvaWQgc3RvcF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9j b250cm9sX3N0YXRlICplY3MpOworIHN0YXRpYyB2b2lkIHByZXBhcmVfdG9fd2FpdCAoc3RydWN0 IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MpOworQEAgLTQxMjEsMjMgKzQxMjUsMzMgQEAg cHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CisgCisgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdGVwcGlu Z19vdmVyX2JyZWFrcG9pbnQgPSAxOworIAorLQlpZiAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFy Z2V0X3AgKGdkYmFyY2gpCistCSAgICB8fCAhZ2RiYXJjaF9nZXRfbG9uZ2ptcF90YXJnZXQgKGdk YmFyY2gsIGZyYW1lLCAmam1wX2J1Zl9wYykpCisrCWlmICh3aGF0LmlzX2xvbmdqbXApCisgCSAg eworLQkgICAgaWYgKGRlYnVnX2luZnJ1bikKKy0JICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLCAiXAorKwkgICAgaWYgKCFnZGJhcmNoX2dldF9sb25nam1wX3RhcmdldF9wIChn ZGJhcmNoKQorKwkJfHwgIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0IChnZGJhcmNoLAorKwkJ CQkJCWZyYW1lLCAmam1wX2J1Zl9wYykpCisrCSAgICAgIHsKKysJCWlmIChkZWJ1Z19pbmZydW4p CisrCQkgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgIlwKKyBpbmZydW46IEJQU1RB VF9XSEFUX1NFVF9MT05HSk1QX1JFU1VNRSAoIWdkYmFyY2hfZ2V0X2xvbmdqbXBfdGFyZ2V0KVxu Iik7CistCSAgICBrZWVwX2dvaW5nIChlY3MpOworLQkgICAgcmV0dXJuOworLQkgIH0KKysJCWtl ZXBfZ29pbmcgKGVjcyk7CisrCQlyZXR1cm47CisrCSAgICAgIH0KKyAKKy0JLyogV2UncmUgZ29p bmcgdG8gcmVwbGFjZSB0aGUgY3VycmVudCBzdGVwLXJlc3VtZSBicmVha3BvaW50CistCSAgIHdp dGggYSBsb25nam1wLXJlc3VtZSBicmVha3BvaW50LiAgKi8KKy0JZGVsZXRlX3N0ZXBfcmVzdW1l X2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKysJICAgIC8qIFdlJ3JlIGdvaW5nIHRv IHJlcGxhY2UgdGhlIGN1cnJlbnQgc3RlcC1yZXN1bWUgYnJlYWtwb2ludAorKwkgICAgICAgd2l0 aCBhIGxvbmdqbXAtcmVzdW1lIGJyZWFrcG9pbnQuICAqLworKwkgICAgZGVsZXRlX3N0ZXBfcmVz dW1lX2JyZWFrcG9pbnQgKGVjcy0+ZXZlbnRfdGhyZWFkKTsKKyAKKy0JLyogSW5zZXJ0IGEgYnJl YWtwb2ludCBhdCByZXN1bWUgYWRkcmVzcy4gICovCistCWluc2VydF9sb25nam1wX3Jlc3VtZV9i cmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVmX3BjKTsKKysJICAgIC8qIEluc2VydCBhIGJyZWFr cG9pbnQgYXQgcmVzdW1lIGFkZHJlc3MuICAqLworKwkgICAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1l X2JyZWFrcG9pbnQgKGdkYmFyY2gsIGptcF9idWZfcGMpOworKwkgIH0KKysJZWxzZQorKwkgIHsK KysJICAgIHN0cnVjdCBzeW1ib2wgKmZ1bmMgPSBnZXRfZnJhbWVfZnVuY3Rpb24gKGZyYW1lKTsK KyAKKysJICAgIGlmIChmdW5jKQorKwkgICAgICBjaGVja19leGNlcHRpb25fcmVzdW1lIChlY3Ms IGZyYW1lLCBmdW5jKTsKKysJICB9CisgCWtlZXBfZ29pbmcgKGVjcyk7CisgCXJldHVybjsKKyAK K0BAIC00MTQ5LDYgKzQxNjMsNTMgQEAgaW5mcnVuOiBCUFNUQVRfV0hBVF9TRVRfTE9OR0pNUF9S RVNVTUUgKAorIAlnZGJfYXNzZXJ0IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yZXN1bWVfYnJl YWtwb2ludCAhPSBOVUxMKTsKKyAJZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKGVjcy0+ ZXZlbnRfdGhyZWFkKTsKKyAKKysJaWYgKCF3aGF0LmlzX2xvbmdqbXApCisrCSAgeworKwkgICAg LyogVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgdG8gY29uc2lkZXIuCisrCSAgICAgICAKKysJICAg ICAgIDEuIFRoZSBpbml0aWF0aW5nIGZyYW1lIG5vIGxvbmdlciBleGlzdHMuICBJbiB0aGlzIGNh c2UKKysJICAgICAgIHdlIG11c3Qgc3RvcCwgYmVjYXVzZSB0aGUgZXhjZXB0aW9uIGhhcyBnb25l IHRvbyBmYXIuCisrCSAgICAgICAKKysJICAgICAgIDIuIFRoZSBpbml0aWF0aW5nIGZyYW1lIGV4 aXN0cywgYW5kIGlzIHRoZSBzYW1lIGFzIHRoZQorKwkgICAgICAgY3VycmVudCBmcmFtZS4KKysJ ICAgICAgIAorKwkgICAgICAgMi4xLiBJZiB3ZSBhcmUgc3RlcHBpbmcsIGRlZmVyIHRvIHRoZSBz dGVwcGluZyBsb2dpYy4KKysJICAgICAgIAorKwkgICAgICAgMi4yLiBPdGhlcndpc2UsIHdlIGFy ZSBub3Qgc3RlcHBpbmcsIHNvIHdlIGFyZSBkb2luZyBhCisrCSAgICAgICAiZmluaXNoIiBhbmQg d2UgaGF2ZSByZWFjaGVkIHRoZSBjYWxsaW5nIGZyYW1lLiAgU28sCisrCSAgICAgICBzdG9wLgor KwkgICAgICAgCisrCSAgICAgICAzLiBUaGUgaW5pdGlhdGluZyBmcmFtZSBleGlzdHMgYW5kIGlz IGRpZmZlcmVudCBmcm9tCisrCSAgICAgICB0aGUgY3VycmVudCBmcmFtZS4gIFRoaXMgbWVhbnMg dGhlIGV4Y2VwdGlvbiBoYXMgYmVlbgorKwkgICAgICAgY2F1Z2h0IGJlbmVhdGggdGhlIGluaXRp YXRpbmcgZnJhbWUsIHNvIGtlZXAgZ29pbmcuICAqLworKwkgICAgc3RydWN0IGZyYW1lX2luZm8g KmluaXRfZnJhbWUKKysJICAgICAgPSBmcmFtZV9maW5kX2J5X2lkIChlY3MtPmV2ZW50X3RocmVh ZC0+aW5pdGlhdGluZ19mcmFtZSk7CisrCSAgICBpZiAoaW5pdF9mcmFtZSkKKysJICAgICAgewor KwkJc3RydWN0IGZyYW1lX2lkIGN1cnJlbnRfaWQKKysJCSAgPSBnZXRfZnJhbWVfaWQgKGdldF9j dXJyZW50X2ZyYW1lICgpKTsKKysJCWlmIChmcmFtZV9pZF9lcSAoY3VycmVudF9pZCwKKysJCQkJ IGVjcy0+ZXZlbnRfdGhyZWFkLT5pbml0aWF0aW5nX2ZyYW1lKSkKKysJCSAgeworKwkJICAgIGlm IChlY3MtPmV2ZW50X3RocmVhZC0+c3RlcF9yYW5nZV9zdGFydCkKKysJCSAgICAgIHsKKysJCQkv KiBDYXNlIDIuMS4gICovCisrCQkJYnJlYWs7CisrCQkgICAgICB9CisrCQkgICAgZWxzZQorKwkJ ICAgICAgeworKwkJCS8qIENhc2UgMi4yOiBmYWxsIHRocm91Z2guICAqLworKwkJICAgICAgfQor KwkJICB9CisrCQllbHNlCisrCQkgIHsKKysJCSAgICAvKiBDYXNlIDMuICAqLworKwkJICAgIGtl ZXBfZ29pbmcgKGVjcyk7CisrCQkgICAgcmV0dXJuOworKwkJICB9CisrCSAgICAgIH0KKysJICB9 CisrCisgCWVjcy0+ZXZlbnRfdGhyZWFkLT5zdG9wX3N0ZXAgPSAxOworIAlwcmludF9lbmRfc3Rl cHBpbmdfcmFuZ2VfcmVhc29uICgpOworIAlzdG9wX3N0ZXBwaW5nIChlY3MpOworQEAgLTUxMjcs NiArNTE4OCwxMDAgQEAgaW5zZXJ0X2xvbmdqbXBfcmVzdW1lX2JyZWFrcG9pbnQgKHN0cnVjdAor ICAgICBzZXRfbW9tZW50YXJ5X2JyZWFrcG9pbnRfYXRfcGMgKGdkYmFyY2gsIHBjLCBicF9sb25n am1wX3Jlc3VtZSk7CisgfQorIAorKy8qIEluc2VydCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFr cG9pbnQuICBUUCBpcyB0aGUgdGhyZWFkIHRocm93aW5nCisrICAgdGhlIGV4Y2VwdGlvbi4gIFRo ZSBibG9jayBCIGlzIHRoZSBibG9jayBvZiB0aGUgdW53aW5kZXIgZGVidWcgaG9vaworKyAgIGZ1 bmN0aW9uLiAgRlJBTUUgaXMgdGhlIGZyYW1lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNhbGwgdG8g dGhpcworKyAgIGZ1bmN0aW9uLiAgU1lNIGlzIHRoZSBzeW1ib2wgb2YgdGhlIGZ1bmN0aW9uIGFy Z3VtZW50IGhvbGRpbmcgdGhlCisrICAgdGFyZ2V0IFBDIG9mIHRoZSBleGNlcHRpb24uICAqLwor KworK3N0YXRpYyB2b2lkCisraW5zZXJ0X2V4Y2VwdGlvbl9yZXN1bWVfYnJlYWtwb2ludCAoc3Ry dWN0IHRocmVhZF9pbmZvICp0cCwKKysJCQkJICAgIHN0cnVjdCBibG9jayAqYiwKKysJCQkJICAg IHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKKysJCQkJICAgIHN0cnVjdCBzeW1ib2wgKnN5bSkK Kyt7CisrICBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBlOworKworKyAgLyogV2Ugd2FudCB0byBpZ25v cmUgZXJyb3JzIGhlcmUuICAqLworKyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19BTEwpCisr ICAgIHsKKysgICAgICBzdHJ1Y3Qgc3ltYm9sICp2c3ltOworKyAgICAgIHN0cnVjdCB2YWx1ZSAq dmFsdWU7CisrICAgICAgQ09SRV9BRERSIGhhbmRsZXI7CisrICAgICAgc3RydWN0IGJyZWFrcG9p bnQgKmJwOworKworKyAgICAgIHZzeW0gPSBsb29rdXBfc3ltYm9sIChTWU1CT0xfTElOS0FHRV9O QU1FIChzeW0pLCBiLCBWQVJfRE9NQUlOLCBOVUxMKTsKKysgICAgICB2YWx1ZSA9IHJlYWRfdmFy X3ZhbHVlICh2c3ltLCBmcmFtZSk7CisrICAgICAgLyogSWYgdGhlIHZhbHVlIHdhcyBvcHRpbWl6 ZWQgb3V0LCByZXZlcnQgdG8gdGhlIG9sZCBiZWhhdmlvci4gICovCisrICAgICAgaWYgKCEgdmFs dWVfb3B0aW1pemVkX291dCAodmFsdWUpKQorKwl7CisrCSAgaGFuZGxlciA9IHZhbHVlX2FzX2Fk ZHJlc3MgKHZhbHVlKTsKKysKKysJICAvKiBXZSdyZSBnb2luZyB0byByZXBsYWNlIHRoZSBjdXJy ZW50IHN0ZXAtcmVzdW1lIGJyZWFrcG9pbnQKKysJICAgICB3aXRoIGFuIGV4Y2VwdGlvbi1yZXN1 bWUgYnJlYWtwb2ludC4gICovCisrCSAgZGVsZXRlX3N0ZXBfcmVzdW1lX2JyZWFrcG9pbnQgKHRw KTsKKysKKysJICBpZiAoZGVidWdfaW5mcnVuKQorKwkgICAgZnByaW50Zl91bmZpbHRlcmVkIChn ZGJfc3RkbG9nLAorKwkJCQkiaW5mcnVuOiBleGNlcHRpb24gcmVzdW1lIGF0ICVseFxuIiwKKysJ CQkJKHVuc2lnbmVkIGxvbmcpIGhhbmRsZXIpOworKworKwkgIGJwID0gc2V0X21vbWVudGFyeV9i cmVha3BvaW50X2F0X3BjIChnZXRfZnJhbWVfYXJjaCAoZnJhbWUpLAorKwkJCQkJICAgICAgIGhh bmRsZXIsIGJwX2V4Y2VwdGlvbl9yZXN1bWUpOworKwkgIGluZmVyaW9yX3RocmVhZCAoKS0+c3Rl cF9yZXN1bWVfYnJlYWtwb2ludCA9IGJwOworKwl9CisrICAgIH0KKyt9CisrCisrLyogVGhpcyBp cyBjYWxsZWQgd2hlbiBhbiBleGNlcHRpb24gaGFzIGJlZW4gaW50ZXJjZXB0ZWQuICBDaGVjayB0 bworKyAgIHNlZSB3aGV0aGVyIHRoZSBleGNlcHRpb24ncyBkZXN0aW5hdGlvbiBpcyBvZiBpbnRl cmVzdCwgYW5kIGlmIHNvLAorKyAgIHNldCBhbiBleGNlcHRpb24gcmVzdW1lIGJyZWFrcG9pbnQg dGhlcmUuICAqLworKworK3N0YXRpYyB2b2lkCisrY2hlY2tfZXhjZXB0aW9uX3Jlc3VtZSAoc3Ry dWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRlICplY3MsCisrCQkJc3RydWN0IGZyYW1lX2luZm8g KmZyYW1lLCBzdHJ1Y3Qgc3ltYm9sICpmdW5jKQorK3sKKysgIHN0cnVjdCBnZGJfZXhjZXB0aW9u IGU7CisrCisrICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0FMTCkKKysgICAgeworKyAgICAg IHN0cnVjdCBibG9jayAqYjsKKysgICAgICBzdHJ1Y3QgZGljdF9pdGVyYXRvciBpdGVyOworKyAg ICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKKysgICAgICBpbnQgYXJnbm8gPSAwOworKworKyAgICAg IC8qIFRoZSBleGNlcHRpb24gYnJlYWtwb2ludCBpcyBhIHRocmVhZC1zcGVjaWZpYyBicmVha3Bv aW50IG9uCisrCSB0aGUgdW53aW5kZXIncyBkZWJ1ZyBob29rLCBkZWNsYXJlZCBhczoKKysJIAor Kwkgdm9pZCBfVW53aW5kX0RlYnVnSG9vayAodm9pZCAqY2ZhLCB2b2lkICpoYW5kbGVyKTsKKysJ IAorKwkgVGhlIENGQSBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGZyYW1lIHRvIHdoaWNoIGNvbnRy b2wgaXMKKysJIGFib3V0IHRvIGJlIHRyYW5zZmVycmVkLiAgSEFORExFUiBpcyB0aGUgZGVzdGlu YXRpb24gUEMuCisrCSAKKysJIFdlIGlnbm9yZSB0aGUgQ0ZBIGFuZCBzZXQgYSB0ZW1wb3Jhcnkg YnJlYWtwb2ludCBhdCBIQU5ETEVSLgorKwkgVGhpcyBpcyBub3QgZXh0cmVtZWx5IGVmZmljaWVu dCBidXQgaXQgYXZvaWRzIGlzc3VlcyBpbiBnZGIKKysJIHdpdGggY29tcHV0aW5nIHRoZSBEV0FS RiBDRkEsIGFuZCBpdCBhbHNvIHdvcmtzIGV2ZW4gaW4gd2VpcmQKKysJIGNhc2VzIHN1Y2ggYXMg dGhyb3dpbmcgYW4gZXhjZXB0aW9uIGZyb20gaW5zaWRlIGEgc2lnbmFsCisrCSBoYW5kbGVyLiAg Ki8KKysKKysgICAgICBiID0gU1lNQk9MX0JMT0NLX1ZBTFVFIChmdW5jKTsKKysgICAgICBBTExf QkxPQ0tfU1lNQk9MUyAoYiwgaXRlciwgc3ltKQorKwl7CisrCSAgaWYgKCFTWU1CT0xfSVNfQVJH VU1FTlQgKHN5bSkpCisrCSAgICBjb250aW51ZTsKKysKKysJICBpZiAoYXJnbm8gPT0gMCkKKysJ ICAgICsrYXJnbm87CisrCSAgZWxzZQorKwkgICAgeworKwkgICAgICBpbnNlcnRfZXhjZXB0aW9u X3Jlc3VtZV9icmVha3BvaW50IChlY3MtPmV2ZW50X3RocmVhZCwKKysJCQkJCQkgIGIsIGZyYW1l LCBzeW0pOworKwkgICAgICBicmVhazsKKysJICAgIH0KKysJfQorKyAgICB9CisrfQorKworIHN0 YXRpYyB2b2lkCisgc3RvcF9zdGVwcGluZyAoc3RydWN0IGV4ZWN1dGlvbl9jb250cm9sX3N0YXRl ICplY3MpCisgeworSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIu Y3AvZ2RiOTU5My5jYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0 ZS9nZGIuY3AvZ2RiOTU5My5jYwkyMDEwLTExLTE3IDAyOjM5OjE5LjAwMDAwMDAwMCArMDEwMAor QEAgLTAsMCArMSwxODAgQEAKKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUg R05VIGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5 b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRl cm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysg ICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBM aWNlbnNlLCBvcgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisr ICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQg YSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgorKyAgICovCisrI2luY2x1ZGUgPGlvc3RyZWFtPgorKworK3VzaW5nIG5hbWVzcGFjZSBzdGQ7 CisrCisrY2xhc3MgTmV4dE92ZXJUaHJvd0Rlcml2YXRlcworK3sKKysKKytwdWJsaWM6CisrCisr CisrICAvLyBTaW5nbGUgdGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoaXMgZnVuY3Rpb24uCisrICB2 b2lkIGZ1bmN0aW9uMSgpIAorKyAgeworKyAgICB0aHJvdyAyMDsKKysgIH0KKysKKysgIC8vIFRo cm93IGFuIGV4Y2VwdGlvbiBpbiBhbm90aGVyIGZ1bmN0aW9uLgorKyAgdm9pZCBmdW5jdGlvbjIo KSAKKysgIHsKKysgICAgZnVuY3Rpb24xKCk7CisrICB9CisrCisrICAvLyBUaHJvdyBhbiBleGNl cHRpb24gaW4gYW5vdGhlciBmdW5jdGlvbiwgYnV0IGhhbmRsZSBpdAorKyAgLy8gbG9jYWxseS4K KysgIHZvaWQgZnVuY3Rpb24zICgpIAorKyAgeworKyAgICB7CisrICAgICAgdHJ5CisrCXsKKysJ ICBmdW5jdGlvbjEgKCk7CisrCX0KKysgICAgICBjYXRjaCAoLi4uKSAKKysJeworKwkgIGNvdXQg PDwgIkNhdWdodCBhbmQgaGFuZGxlZCBmdW5jdGlvbjEgZXhjZXB0aW9uIiA8PCBlbmRsOworKwl9 CisrICAgIH0KKysgIH0KKysKKysgIHZvaWQgcmV0aHJvdyAoKQorKyAgeworKyAgICB0cnkKKysg ICAgICB7CisrCWZ1bmN0aW9uMSAoKTsKKysgICAgICB9CisrICAgIGNhdGNoICguLi4pCisrICAg ICAgeworKwl0aHJvdzsKKysgICAgICB9CisrICB9CisrCisrICB2b2lkIGZpbmlzaCAoKQorKyAg eworKyAgICAvLyBXZSB1c2UgdGhpcyB0byB0ZXN0IHRoYXQgYSAiZmluaXNoIiBoZXJlIGRvZXMg bm90IGVuZCB1cCBpbgorKyAgICAvLyB0aGlzIGZyYW1lLCBidXQgaW4gdGhlIG9uZSBhYm92ZS4K KysgICAgdHJ5CisrICAgICAgeworKwlmdW5jdGlvbjEgKCk7CisrICAgICAgfQorKyAgICBjYXRj aCAoaW50IHgpCisrICAgICAgeworKyAgICAgIH0KKysgICAgZnVuY3Rpb24xICgpOwkJLy8gbWFy a2VyIGZvciB1bnRpbAorKyAgfQorKworKyAgdm9pZCB1bnRpbCAoKQorKyAgeworKyAgICBmdW5j dGlvbjEgKCk7CisrICAgIGZ1bmN0aW9uMSAoKTsJCS8vIHVudGlsIGhlcmUKKysgIH0KKysKKyt9 OworK05leHRPdmVyVGhyb3dEZXJpdmF0ZXMgbmV4dF9jYXNlczsKKysKKysKKytpbnQgbWFpbiAo KSAKKyt7IAorKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMSAoKTsK KysgICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERpc2NhcmQKKysgICAg fQorKworKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLmZ1bmN0aW9uMiAoKTsKKysg ICAgfQorKyAgY2F0Y2ggKC4uLikKKysgICAgeworKyAgICAgIC8vIERpc2NhcmQKKysgICAgfQor KworKyAgdHJ5CisrICAgIHsKKysgICAgICAvLyBUaGlzIGlzIGR1cGxpY2F0ZWQgc28gd2UgY2Fu IG5leHQgb3ZlciBvbmUgYnV0IHN0ZXAgaW50bworKyAgICAgIC8vIGFub3RoZXIuCisrICAgICAg bmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsK KysgICAgICAvLyBEaXNjYXJkCisrICAgIH0KKysKKysgIG5leHRfY2FzZXMuZnVuY3Rpb24zICgp OworKworKyAgdHJ5CisrICAgIHsKKysgICAgICBuZXh0X2Nhc2VzLnJldGhyb3cgKCk7CisrICAg IH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCisrICAgIH0KKysK KysgIHRyeQorKyAgICB7CisrICAgICAgLy8gQW5vdGhlciBkdXBsaWNhdGUgc28gd2UgY2FuIHRl c3QgImZpbmlzaCIuCisrICAgICAgbmV4dF9jYXNlcy5mdW5jdGlvbjIgKCk7CisrICAgIH0KKysg IGNhdGNoICguLi4pCisrICAgIHsKKysgICAgICAvLyBEaXNjYXJkCisrICAgIH0KKysKKysgIC8v IEFub3RoZXIgdGVzdCBmb3IgImZpbmlzaCIuCisrICB0cnkKKysgICAgeworKyAgICAgIG5leHRf Y2FzZXMuZmluaXNoICgpOworKyAgICB9CisrICBjYXRjaCAoLi4uKQorKyAgICB7CisrICAgIH0K KysKKysgIC8vIFRlc3Qgb2YgInVudGlsIi4KKysgIHRyeQorKyAgICB7CisrICAgICAgbmV4dF9j YXNlcy5maW5pc2ggKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisrICAgIHsKKysgICAgfQor KworKyAgLy8gVGVzdCBvZiAidW50aWwiIHdpdGggYW4gYXJndW1lbnQuCisrICB0cnkKKysgICAg eworKyAgICAgIG5leHRfY2FzZXMudW50aWwgKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisr ICAgIHsKKysgICAgfQorKworKyAgLy8gVGVzdCBvZiAiYWR2YW5jZSIuCisrICB0cnkKKysgICAg eworKyAgICAgIG5leHRfY2FzZXMudW50aWwgKCk7CisrICAgIH0KKysgIGNhdGNoICguLi4pCisr ICAgIHsKKysgICAgfQorK30KKysKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL2dkYjk1OTMuZXhwCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdGVzdHN1aXRlL2dkYi5jcC9nZGI5NTkzLmV4cAkyMDEwLTExLTE3IDAyOjM5OjE5LjAwMDAw MDAwMCArMDEwMAorQEAgLTAsMCArMSwxODIgQEAKKysjIENvcHlyaWdodCAyMDA4LCAyMDA5LCAy MDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlz IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysj IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVy c2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg dmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0 aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3Ig RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBh bG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcv bGljZW5zZXMvPi4KKysKKysKKytpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKysgICAgc3RyYWNlICR0 cmFjZWxldmVsCisrfQorKworK2lmIHsgW3NraXBfY3BsdXNfdGVzdHNdIH0geyBjb250aW51ZSB9 CisrCisrc2V0IHRlc3RmaWxlICJnZGI5NTkzIgorK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9LmNj Cisrc2V0IGJpbmZpbGUgJG9iamRpci8kc3ViZGlyLyR0ZXN0ZmlsZQorKworKyMgQ3JlYXRlIGFu ZCBzb3VyY2UgdGhlIGZpbGUgdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY29t cGlsZXIKKysjIHVzZWQgdG8gY29tcGlsZSB0aGUgdGVzdCBjYXNlLgorK2lmIFtnZXRfY29tcGls ZXJfaW5mbyAke2JpbmZpbGV9ICJjKysiXSB7CisrICAgIHVudGVzdGVkIGdkYjk1OTMuZXhwCisr ICAgIHJldHVybiAtMQorK30KKysKKytpZiB7IFtnZGJfY29tcGlsZSAiJHtzcmNkaXJ9LyR7c3Vi ZGlyfS8ke3NyY2ZpbGV9IiAiJHtiaW5maWxlfSIgZXhlY3V0YWJsZSB7ZGVidWcgYysrfV0gIT0g IiIgfSB7CisrICAgIHVudGVzdGVkIGdkYjk1OTMuZXhwCisrICAgIHJldHVybiAtMQorK30KKysK KysjIFNvbWUgdGFyZ2V0cyBjYW4ndCBkbyBmdW5jdGlvbiBjYWxscywgc28gZG9uJ3QgZXZlbiBi b3RoZXIgd2l0aCB0aGlzCisrIyB0ZXN0LgorK2lmIFt0YXJnZXRfaW5mbyBleGlzdHMgZ2RiLGNh bm5vdF9jYWxsX2Z1bmN0aW9uc10geworKyAgICBzZXR1cF94ZmFpbCAiKi0qLSoiIDk1OTMKKysg ICAgZmFpbCAiVGhpcyB0YXJnZXQgY2FuIG5vdCBjYWxsIGZ1bmN0aW9ucyIKKysgICAgY29udGlu dWUKKyt9CisrCisrZ2RiX2V4aXQKKytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAk c3JjZGlyLyRzdWJkaXIKKytnZGJfbG9hZCAke2JpbmZpbGV9CisrCisraWYgIVtydW50b19tYWlu XSB0aGVuIHsKKysgICAgcGVycm9yICJjb3VsZG4ndCBydW4gdG8gbWFpbiIKKysgICAgY29udGlu dWUKKyt9IAorKworKyMgU2VlIHdoZXRoZXIgd2UgaGF2ZSB0aGUgbmVlZGVkIHVud2luZGVyIGhv b2tzLgorK3NldCBvayAxCisrZ2RiX3Rlc3RfbXVsdGlwbGUgInByaW50IF9VbndpbmRfRGVidWdI b29rIiAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2siIHsKKysgICAgLXJlICI9IC4qX1Vud2luZF9E ZWJ1Z0hvb2suKlxyXG4kZ2RiX3Byb21wdCAkIiB7CisrCXBhc3MgImNoZWNrIGZvciB1bndpbmRl ciBob29rIgorKyAgICB9CisrICAgIC1yZSAiTm8gc3ltYm9sIC4qIGluIGN1cnJlbnQgY29udGV4 dC5cclxuJGdkYl9wcm9tcHQgJCIgeworKwkjIFBhc3MgdGhlIHRlc3Qgc28gd2UgZG9uJ3QgZ2V0 IGJvZ3VzIGZhaWxzIGluIHRoZSByZXN1bHRzLgorKwlwYXNzICJjaGVjayBmb3IgdW53aW5kZXIg aG9vayIKKysJc2V0IG9rIDAKKysgICAgfQorK30KKytpZiB7ISRva30geworKyAgICB1bnRlc3Rl ZCBnZGI5NTkzLmV4cAorKyAgICByZXR1cm4gLTEKKyt9CisrCisrIyBTZWUgaHR0cDovL3NvdXJj ZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD05NTkzCisrCisrZ2RiX3Rlc3QgIm5l eHQiIFwKKysgICAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgICAibmV4dCBvdmVyIGEgdGhyb3cg MSIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjIuKiIg XAorKyAgIm5leHQgcGFzdCBjYXRjaCAxIgorKworK2dkYl90ZXN0ICJuZXh0IiBcCisrICAgICIu KmNhdGNoICguLi4pLioiIFwKKysgICAgIm5leHQgb3ZlciBhIHRocm93IDIiCisrCisrZ2RiX3Rl c3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMuZnVuY3Rpb24yLioiIFwKKysgICJuZXh0IHBh c3QgY2F0Y2ggMiIKKysKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgIi4qZnVuY3Rpb24xKCkuKiIg XAorKyAgInN0ZXAgaW50byBmdW5jdGlvbjIgMSIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAg ICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAgICJuZXh0IG92ZXIgYSB0aHJvdyAzIgorKworK2dk Yl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLmZ1bmN0aW9uMy4qIiBcCisrICAibmV4 dCBwYXN0IGNhdGNoIDMiCisrCisrZ2RiX3Rlc3QgIm5leHQiIFwKKysgICIuKm5leHRfY2FzZXMu cmV0aHJvdy4qIiBcCisrICAgICJuZXh0IG92ZXIgYSB0aHJvdyA0IgorKworK2dkYl90ZXN0ICJu ZXh0IiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAibmV4dCBvdmVyIGEgcmV0aHJvdyIK KysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5mdW5jdGlvbjIuKiIgXAor KyAgIm5leHQgYWZ0ZXIgYSByZXRocm93IgorKworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipm dW5jdGlvbjEoKS4qIiBcCisrICAic3RlcCBpbnRvIGZ1bmN0aW9uMiAyIgorKworK2dkYl90ZXN0 ICJmaW5pc2giIFwKKysgICIuKmNhdGNoICguLi4pLioiIFwKKysgICJmaW5pc2ggMSIKKysKKytn ZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5maW5pc2ggKCkuKiIgXAorKyAgIm5l eHQgcGFzdCBjYXRjaCA0IgorKworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipmdW5jdGlvbjEg KCkuKiIgXAorKyAgInN0ZXAgaW50byBmaW5pc2ggbWV0aG9kIgorKworK2dkYl90ZXN0ICJmaW5p c2giIFwKKysgICIuKmNhdGNoICguLi4pLioiIFwKKysgICJmaW5pc2ggMiIKKysKKytnZGJfdGVz dCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy5maW5pc2ggKCkuKiIgXAorKyAgIm5leHQgcGFz dCBjYXRjaCA1IgorKworK2dkYl90ZXN0ICJzdGVwIiBcCisrICAiLipmdW5jdGlvbjEgKCkuKiIg XAorKyAgInN0ZXAgaW50byBmaW5pc2gsIGZvciB1bnRpbCIKKysKKytnZGJfdGVzdCAidW50aWwi IFwKKysgICIuKmNhdGNoIC5pbnQgeC4qIiBcCisrICAidW50aWwgd2l0aCBubyBhcmd1bWVudCAx IgorKworK3NldCBsaW5lIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJtYXJrZXIgZm9yIHVudGlsIiAk dGVzdGZpbGUuY2NdCisrCisrZ2RiX3Rlc3QgInVudGlsICRsaW5lIiBcCisrICAiLipmdW5jdGlv bjEgKCkuKiIgXAorKyAgIm5leHQgcGFzdCBjYXRjaCA2IgorKworK2dkYl90ZXN0ICJ1bnRpbCIg XAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgInVudGlsIHdpdGggbm8gYXJndW1lbnQgMiIK KysKKytzZXQgbGluZSBbZ2RiX2dldF9saW5lX251bWJlciAidW50aWwgaGVyZSIgJHRlc3RmaWxl LmNjXQorKworK2dkYl90ZXN0ICJuZXh0IiBcCisrICAiLipuZXh0X2Nhc2VzLnVudGlsICgpLioi IFwKKysgICJuZXh0IHBhc3QgY2F0Y2ggNiIKKysKKytnZGJfdGVzdCAic3RlcCIgXAorKyAgIi4q ZnVuY3Rpb24xICgpLioiIFwKKysgICJzdGVwIGludG8gdW50aWwiCisrCisrZ2RiX3Rlc3QgInVu dGlsICRsaW5lIiBcCisrICAiLipjYXRjaCAoLi4uKS4qIiBcCisrICAidW50aWwtb3Zlci10aHJv dyIKKysKKytnZGJfdGVzdCAibmV4dCIgXAorKyAgIi4qbmV4dF9jYXNlcy51bnRpbCAoKS4qIiBc CisrICAibmV4dCBwYXN0IGNhdGNoIDciCisrCisrZ2RiX3Rlc3QgInN0ZXAiIFwKKysgICIuKmZ1 bmN0aW9uMSAoKS4qIiBcCisrICAic3RlcCBpbnRvIHVudGlsLCBmb3IgYWR2YW5jZSIKKysKKytn ZGJfdGVzdCAiYWR2YW5jZSAkbGluZSIgXAorKyAgIi4qY2F0Y2ggKC4uLikuKiIgXAorKyAgImFk dmFuY2Utb3Zlci10aHJvdyIKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3Vp dGUvZ2RiLmphdmEvam5wZS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90 ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5leHAJMjAxMC0xMS0xNyAwMjozOToxOS4wMDAwMDAwMDAg KzAxMDAKK0BAIC0wLDAgKzEsNzQgQEAKKysjIENvcHlyaWdodCAyMDA5LCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKworKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysjIGl0IHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5 CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysj CisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs IGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh IGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrIyBhbG9uZyB3aXRoIHRo aXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4K KysKKytpZiAkdHJhY2VsZXZlbCB0aGVuIHsKKysgIHN0cmFjZSAkdHJhY2VsZXZlbAorK30KKysK Kytsb2FkX2xpYiAiamF2YS5leHAiCisrCisrc2V0IHRlc3RmaWxlICJqbnBlIgorK3NldCBzcmNm aWxlICR7dGVzdGZpbGV9LmphdmEKKytzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7 dGVzdGZpbGV9CisraWYgIHsgW2NvbXBpbGVfamF2YV9mcm9tX3NvdXJjZSAke3NyY2Rpcn0vJHN1 YmRpci8ke3NyY2ZpbGV9ICR7YmluZmlsZX0gIi1nIl0gIT0gIiIgfSB7CisrICAgIHVudGVzdGVk ICJDb3VsZG4ndCBjb21waWxlICR7c3JjZGlyfS8kc3ViZGlyLyR7c3JjZmlsZX0iCisrICAgIHJl dHVybiAtMQorK30KKysKKysjIFN0YXJ0IHdpdGggYSBmcmVzaCBnZGIuCisrCisrZ2RiX2V4aXQK KytnZGJfc3RhcnQKKytnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKKytnZGJf bG9hZCAke2JpbmZpbGV9CisrCisrc2V0IGxpbmUgW2dkYl9nZXRfbGluZV9udW1iZXIgImJyZWFr IGhlcmUiICR0ZXN0ZmlsZS5qYXZhXQorK2dkYl90ZXN0ICJicmVhayAkdGVzdGZpbGUuamF2YTok bGluZSIgIiIKKysKKytnZGJfdGVzdCAicnVuIiBcCisrICAiLy8gYnJlYWsgaGVyZS4qIiBcCisr ICAicnVuIGphdmEgbmV4dC1vdmVyLXRocm93IgorKworKyMgU2VlIHdoZXRoZXIgd2UgaGF2ZSB0 aGUgbmVlZGVkIHVud2luZGVyIGhvb2tzLgorK3NldCBvayAxCisrZ2RiX3Rlc3RfbXVsdGlwbGUg InByaW50IF9VbndpbmRfRGVidWdIb29rIiAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2 YSIgeworKyAgICAtcmUgIj0gLipfVW53aW5kX0RlYnVnSG9vay4qXHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJcGFzcyAiY2hlY2sgZm9yIHVud2luZGVyIGhvb2sgaW4gamF2YSIKKysgICAgfQorKyAg ICAtcmUgIk5vIHN5bWJvbCAuKiBpbiBjdXJyZW50IGNvbnRleHQuP1xyXG4kZ2RiX3Byb21wdCAk IiB7CisrCSMgUGFzcyB0aGUgdGVzdCBzbyB3ZSBkb24ndCBnZXQgYm9ndXMgZmFpbHMgaW4gdGhl IHJlc3VsdHMuCisrCXNldHVwX3hmYWlsICotKi0qCisrCWZhaWwgImNoZWNrIGZvciB1bndpbmRl ciBob29rIGluIGphdmEiCisrCXNldCBvayAwCisrICAgIH0KKyt9CisraWYgeyEkb2t9IHsKKysg ICAgdW50ZXN0ZWQgam5wZS5leHAKKysgICAgcmV0dXJuIC0xCisrfQorKworK2dkYl90ZXN0ICJo YW5kbGUgU0lHU0VHViBub3N0b3Agbm9wcmludCIgXAorKyAgIlNJR1NFR1YuKmZhdWx0IiBcCisr ICAiZGlzYWJsZSBTSUdTRUdWIGZvciBuZXh0LW92ZXItTlBFIgorKworKyMgVGhlIGxpbmUgd2hl cmUgd2Ugc3RvcCBkaWZmZXIgYWNjb3JkaW5nIHRvIGdjajsgY2hlY2sganVzdCB3ZSBkaWQgbm90 IGFscmVhZHkKKysjIGV4ZWN1dGUgdGhlIGNhdGNoIHBvaW50LgorKworK2dkYl90ZXN0ICJuZXh0 IiBcCisrICAiIiBcCisrICAibmV4dCBvdmVyIE5QRSIKKysKKytnZGJfYnJlYWtwb2ludCBbZ2Ri X2dldF9saW5lX251bWJlciAiY2F0Y2ggcG9pbnQiXQorK2dkYl9jb250aW51ZV90b19icmVha3Bv aW50ICJjYXRjaCBwb2ludCIgIi4qLy8gY2F0Y2ggcG9pbnQuKiIKK0luZGV4OiBnZGItNy4yLjUw LjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmphdmEvam5wZS5qYXZhCis9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Cist LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5qYXZhL2pucGUuamF2YQkyMDEwLTEx LTE3IDAyOjM5OjE5LjAwMDAwMDAwMCArMDEwMAorQEAgLTAsMCArMSwzOCBAQAorKy8vIFRlc3Qg bmV4dC1vdmVyLU5QRS4KKysvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgorKworKyAgIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgorKworKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl ZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgICB0aGUgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBv cgorKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws CisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg d2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorKyAgIGFsb25nIHdpdGggdGhpcyBwcm9n cmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorKyAgICov CisrCisrcHVibGljIGNsYXNzIGpucGUKKyt7CisrICBwdWJsaWMgc3RhdGljIFN0cmluZyBucGUg KCkKKysgIHsKKysgICAgcmV0dXJuICgoT2JqZWN0KSBudWxsKS50b1N0cmluZygpOworKyAgfQor KworKyAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4gKFN0cmluZ1tdIGFyZ3MpCisrICB7CisrICAg IHRyeQorKyAgICAgIHsKKysJU3lzdGVtLm91dC5wcmludGxuIChucGUgKCkpOyAvLyBicmVhayBo ZXJlCisrICAgICAgfQorKyAgICBjYXRjaCAoTnVsbFBvaW50ZXJFeGNlcHRpb24gbikKKysgICAg ICB7CisrCVN5c3RlbS5vdXQucHJpbnRsbiAoInN1Y2Nlc3MiKTsgLy8gY2F0Y2ggcG9pbnQKKysg ICAgICB9CisrICB9CisrfQoKZGlmZiAtLWdpdCBhL2dkYi1wcjEyMDI4LWRvdWJsZS1mcmVlLnBh dGNoIGIvZ2RiLXByMTIwMjgtZG91YmxlLWZyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IGRlYjIxMTUuLjAwMDAwMDAKLS0tIGEvZ2RiLXByMTIwMjgtZG91YmxlLWZyZWUu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5OSArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5v cmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0wOS9tc2cwMDMyMS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hd IFBSIDEyMDI4ICJHREIgY3Jhc2hlcyBvbiBhIGRvdWJsZSBmcmVlIGR1cmluZyBvdmVybG9hZCBy ZXNvbHV0aW9uIgotCi1vbGRfY2xlYW51cHMgd2FzIGJlaW5nIHNldCB0d2ljZSBtYWtpbmcgdGhl IGxhdGVyIGNhbGwgdG8gCi1kaXNjYXJkX2NsZWFudXBzIGlnbm9yZSB0aGUgZmlyc3QgJ21ha2Vf Y2xlYW51cCcgcmVxdWVzdC4KLQotVGhlIHBhdGNoIGlzIHByb3Bvc2VkIGZvciBib3RoIGhlYWQg YW5kIHRoZSA3LjIgYnJhbmNoLgotCi1UaGlzIGhhcyBiZWVuIHJlZ3Jlc3Npb24gdGVzdGVkIG9u IHg4NjY0IHdpdGggZ2NjLTQuNC40LTEwLmZjMTMKLQotCi1GaXggUFIgMTIwMjg6ICJHREIgY3Jh c2hlcyBvbiBhIGRvdWJsZSBmcmVlIGR1cmluZyBvdmVybG9hZCByZXNvbHV0aW9uICIKLQotMjAx MC0wOS0xNiAgU2FtaSBXYWdpYWFsbGEgIDxzd2FnaWFhbEByZWRoYXQuY29tPgotCi0JUFIgQysr LzEyMDI4Ci0JKiB2YWxvcHMuYyAoZmluZF9vbG9hZF9jaGFtcF9uYW1lc3BhY2VfbG9vcCk6IHJl bW92ZWQgaW5jb3JyZWN0Ci0JJ29sZF9jbGVhbnVwcycgcmVhc3NpZ25tZW50LgotCi0yMDEwLTA5 LTE2ICBTYW1pIFdhZ2lhYWxsYSAgPHN3YWdpYWFsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5jcC9w cjEyMDI4LmNjOiBOZXcuCi0JKiBnZGIuY3AvcHIxMjAyOC5leHA6IE5ldy4KLQotZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguY2MgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjEyMDI4LmNjCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGZjYWI2 YgotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjAyOC5jYwot QEAgLTAsMCArMSwyMSBAQAotK2NsYXNzIEF7fTsKLStjbGFzcyBCe307Ci0rY2xhc3MgQzogcHVi bGljIEIge307Ci0rCi0rbmFtZXNwYWNlIER7Ci0rICBpbnQgZm9vIChBKSB7IHJldHVybiAxMTsg fQotKyAgaW50IGZvbyAoQykgeyByZXR1cm4gMTI7IH0KLSt9Ci0rCi0raW50IG1haW4oKQotK3sK LSsgIEEgYTsKLSsgIEIgYjsKLSsgIEMgYzsKLSsKLSsgIEQ6OmZvbyAoYSk7Ci0rICAvLyAgRDo6 Zm9vIChiKTsKLSsgIEQ6OmZvbyAoYyk7Ci0rCi0rICByZXR1cm4gMDsKLSt9Ci1kaWZmIC0tZ2l0 IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvcHIxMjAyOC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5j cC9wcjEyMDI4LmV4cAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjc0NmM2 YjUKLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmNwL3ByMTIwMjguZXhw Ci1AQCAtMCwwICsxLDI5IEBACi0rIyBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwg b3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBw cm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWws Ci0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3 YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB UiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1v cmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0u ICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0rc2V0IHRl c3RmaWxlIHByMTIwMjgKLStzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jYwotK2lmIHsgW3ByZXBh cmVfZm9yX3Rlc3RpbmcgJHt0ZXN0ZmlsZX0uZXhwICR7dGVzdGZpbGV9ICR7c3JjZmlsZX0ge2Rl YnVnIGMrK31dIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsKLStpZiAhW3J1bnRvX21haW5dIHRoZW4gewot KyAgICBwZXJyb3IgImNvdWxkbid0IHJ1biB0byBicmVha3BvaW50IG1haW4iCi0rICAgIGNvbnRp bnVlCi0rfQotKwotK2dkYl90ZXN0ICJwIEQ6OmZvbyhiKSIgIkNhbm5vdCByZXNvbHZlIGZ1bmN0 aW9uIGZvbyB0byBhbnkgb3ZlcmxvYWRlZCBpbnN0YW5jZSIKLWRpZmYgLS1naXQgYS9nZGIvdmFs b3BzLmMgYi9nZGIvdmFsb3BzLmMKLWluZGV4IDdmYmFkMTAuLjRlODNhMDQgMTAwNjQ0Ci0tLS0g YS9nZGIvdmFsb3BzLmMKLSsrKyBiL2dkYi92YWxvcHMuYwotQEAgLTI3MTUsNyArMjcxNSw3IEBA IGZpbmRfb2xvYWRfY2hhbXBfbmFtZXNwYWNlX2xvb3AgKHN0cnVjdCB0eXBlICoqYXJnX3R5cGVz LCBpbnQgbmFyZ3MsCi0gICAgICBmdW5jdGlvbiBzeW1ib2wgdG8gc3RhcnQgb2ZmIHdpdGguKSAg Ki8KLSAKLSAgIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsICpvbG9hZF9zeW1z KTsKLS0gIG9sZF9jbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAoeGZyZWUsICpvbG9hZF9jaGFtcF9i dik7Ci0rICBtYWtlX2NsZWFudXAgKHhmcmVlLCAqb2xvYWRfY2hhbXBfYnYpOwotICAgbmV3X25h bWVzcGFjZSA9IGFsbG9jYSAobmFtZXNwYWNlX2xlbiArIDEpOwotICAgc3RybmNweSAobmV3X25h bWVzcGFjZSwgcXVhbGlmaWVkX25hbWUsIG5hbWVzcGFjZV9sZW4pOwotICAgbmV3X25hbWVzcGFj ZVtuYW1lc3BhY2VfbGVuXSA9ICdcMCc7CgpkaWZmIC0tZ2l0IGEvZ2RiLXB5dGhvbi1lcnJvci1z dGF0ZS5wYXRjaCBiL2dkYi1weXRob24tZXJyb3Itc3RhdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IGQzZGY1MTguLjAwMDAwMDAKLS0tIGEvZ2RiLXB5dGhvbi1lcnJvci1z dGF0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5MiArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMC0xMC9tc2cwMDE3NS5odG1sCi1TdWJqZWN0OiBS ZTogW3BhdGNoXSBweXRob246IHNhdmUvcmVzdG9yZS9maXggZXJyb3Igc3RhdGUKLQotT24gRnJp LCAwOCBPY3QgMjAxMCAyMjowODoyNyArMDIwMCwgRG91ZyBFdmFucyB3cm90ZToKLT4gVGhlIGNv bW1lbnQgYWJvdmUgdGhpcyBjb2RlIHNheXM6Ci0+IAotPiAgIC8qIE5vdGU6IElmIGFuIGV4Y2Vw dGlvbiBvY2N1cnMgcHl0aG9uIHdpbGwgcHJpbnQgdGhlIHRyYWNlYmFjayBhbmQKLT4gICAgICBj bGVhciB0aGUgZXJyb3IgaW5kaWNhdG9yLiAgKi8KLT4gCi0+IElTVE0gdGhhdCBlaXRoZXIgdGhp cyBjb21tZW50IGlzIHdyb25nIG9yIHRoZSBhYm92ZSBwYXRjaCBpcyB3cm9uZywgb3IKLT4gc29t ZSBjb21iaW5hdGlvbiB0aGVyZW9mLgotCi1UaGlzIGNvbW1lbnQgaXMgcmlnaHQsIFB5dGhvbiBo YXMgbm8gYnVnIHRoZXJlLCBvdGhlciBnZGIvcHl0aG9uLyBjb2RlIGhhcwotYnVncy4gIFRoYXQg aXMgc29tZSBnZGIvcHl0aG9uLyBjb2RlIHJldHVybmVkIHN1Y2Nlc3MgdmFsdWUgd2hpbGUgc3Rp bGwKLWxlYXZpbmcgdGhlIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgU3VjaCBjYXNlIGlzIHVuZGVm aW5lZCBhbmQgdW5jaGVja2VkIGJ5Ci1QeXRob24uICBQeXRob24gZXJyb3Igc3RhdGUgZG9lcyBu b3QgZm9sbG93IHRoZSBlcnJubyBQT1NJWCBzZW1hbnRpY3MKLQlUaGUgc2V0dGluZyBvZiBlcnJu byBhZnRlciBhIHN1Y2Nlc3NmdWwgY2FsbCB0byBhIGZ1bmN0aW9uIGlzCi0JdW5zcGVjaWZpZWQg Wy4uLl0uCi1hcyBQeXRob24gcmVxdWlyZXMgaW5zdGVhZDoKLQlUaGUgUHl0aG9uIGVycm9yIHN0 YXRlIGFmdGVyIGEgc3VjY2Vzc2Z1bCBjYWxsIHRvIGEgZnVuY3Rpb24gbXVzdCBiZQotCWNsZWFy ZWQuCi0KLUkgaGF2ZSBjaGVja2VkIGNhbGxlcnMgb2YgdGhlc2UgZnVuY3Rpb25zLCBhcyBhIGNs b3N1cmUgb24gdGhlIGNhbGxlcnMgb2YgdGhlCi10b3AgcHktdXRpbHMuYyBmdW5jdGlvbnMuICBU aGF0IGRvZXMgbm90IG1lYW4gdGhpcyBQeXRob24gZXJyb3Igc3RhdGUgaGFuZGxpbmcKLXZlcmlm aWNhdGlvbiBpcyBjb21wbGV0ZToKLQlweXRob25fc3RyaW5nX3RvX3VuaWNvZGUgdW5pY29kZV90 b19lbmNvZGVkX3N0cmluZwotCXVuaWNvZGVfdG9fZW5jb2RlZF9weXRob25fc3RyaW5nIHVuaWNv ZGVfdG9fdGFyZ2V0X3N0cmluZwotCXVuaWNvZGVfdG9fdGFyZ2V0X3B5dGhvbl9zdHJpbmcgcHl0 aG9uX3N0cmluZ190b190YXJnZXRfc3RyaW5nCi0JcHl0aG9uX3N0cmluZ190b190YXJnZXRfcHl0 aG9uX3N0cmluZyBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nCi0JdGFyZ2V0X3N0cmluZ190 b191bmljb2RlIGdkYnB5X29ial90b19zdHJpbmcgZ2RicHlfZXhjZXB0aW9uX3RvX3N0cmluZwot CWdldF9hZGRyX2Zyb21fcHl0aG9uIGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24gZnJhcHlfcmVh ZF92YXIKLQlnZGJweV9nZXRfZGlzcGxheV9oaW50IHZhbHB5X2dldGl0ZW0gRklYTUUgc2V0X3Bh cmFtZXRlcl92YWx1ZQotCWNvbXB1dGVfZW51bV92YWx1ZXMgaW5mcHlfcmVhZF9tZW1vcnkgaW5m cHlfd3JpdGVfbWVtb3J5Ci0JaW5mcHlfc2VhcmNoX21lbW9yeSB2YWxweV9uZXcgdmFscHlfY2Fs bCB2YWxweV9iaW5vcCB2YWxweV9yaWNoY29tcGFyZQotCXByZXR0eV9wcmludF9vbmVfdmFsdWUg c2V0X2F0dHIgcGFybXB5X2luaXQKLQotVGhlcmVmb3JlIEkgaGF2ZSByZW1vdmVkIHRoZSBjaGVj ayBhZnRlciBQeVJ1bl9TaW1wbGVGaWxlLgotCi1ObyByZWdyZXNzaW9ucyBvbiB7eDg2XzY0LHg4 Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTRzbmFwc2hvdC1saW51eC1nbnUuCi0KLQotVGhhbmtzLAot SmFuCi0KLQotZ2RiLwotMjAxMC0xMC0wOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZp bEByZWRoYXQuY29tPgotCi0JKiBweXRob24vcHktYnJlYWtwb2ludC5jIChicHB5X3NldF9jb25k aXRpb24pOiBOZXcgY29tbWVudC4KLQkqIHB5dGhvbi9weS1jbWQuYyAoY21kcHlfZnVuY3Rpb24p OiBDYWxsIGFsc28gZ2RicHlfcHJpbnRfc3RhY2sgZm9yCi0JZmFpbGVkIFB5VW5pY29kZV9EZWNv ZGUuCi0JKGNtZHB5X2NvbXBsZXRlcik6IFNraXAgZWxlbWVudCBmb3IgZmFpbGVkCi0JcHl0aG9u X3N0cmluZ190b19ob3N0X3N0cmluZy4KLQkoY21kcHlfaW5pdCk6IFJldHVybiAtMSBvbiBmYWls ZWQgcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZy4KLQkqIHB5dGhvbi9weS1mcmFtZS5jIChm cmFweV9yZWFkX3Zhcik6IEV4dGVuZCB0aGUgZnVuY3Rpb24gY29tbWVudC4KLQkqIHB5dGhvbi9w eS1mdW5jdGlvbi5jIChmbnB5X2luaXQpOiBSZXR1cm4gLTEgb24gZmFpbGVkCi0JcHl0aG9uX3N0 cmluZ190b19ob3N0X3N0cmluZy4KLQkqIHB5dGhvbi9weS1pbmZlcmlvci5jIChpbmZweV9yZWFk X21lbW9yeSwgaW5mcHlfd3JpdGVfbWVtb3J5KTogRXh0ZW5kCi0JdGhlIGZ1bmN0aW9uIGNvbW1l bnQuCi0JKGluZnB5X3NlYXJjaF9tZW1vcnkpOiBFeHRlbmQgdGhlIGZ1bmN0aW9uIGNvbW1lbnQu ICBSZW1vdmUgdGhlCi0JUHlFcnJfU2V0U3RyaW5nIGNhbGwgb24gYWxyZWFkeSBzZXQgZXJyb3Ig c3RhdGUuCi0JKiBweXRob24vcHktcGFyYW0uYyAoc2V0X3BhcmFtZXRlcl92YWx1ZSk6IEV4dGVu ZCB0aGUgZnVuY3Rpb24KLQljb21tZW50LiAgUmV0dXJuIC0xIG9uIGZhaWxlZCBweXRob25fc3Ry aW5nX3RvX2hvc3Rfc3RyaW5nLCB0d2ljZS4KLQkoc2V0X2F0dHIpOiBFeHRlbmQgdGhlIGZ1bmN0 aW9uIGNvbW1lbnQuCi0JKGNvbXB1dGVfZW51bV92YWx1ZXMpOiBFeHRlbmQgdGhlIGZ1bmN0aW9u IGNvbW1lbnQuICBOZXcgdmFyaWFibGUKLQliYWNrX3RvLiAgUHJvdGVjdCBzZWxmLT5lbnVtZXJh dGlvbiBieSBCQUNLX1RPIGNsZWFudXBzLiAgUmV0dXJuIDAgb24KLQlmYWlsZWQgcHl0aG9uX3N0 cmluZ190b19ob3N0X3N0cmluZy4KLQkoZ2V0X2RvY19zdHJpbmcpOiBDYWxsIGdkYnB5X3ByaW50 X3N0YWNrIG9uIGZhaWxlZAotCXB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCi0JKHBhcm1w eV9pbml0KTogRXh0ZW5kIHRoZSBmdW5jdGlvbiBjb21tZW50LgotCSogcHl0aG9uL3B5LXByZXR0 eXByaW50LmMgKHByZXR0eV9wcmludF9vbmVfdmFsdWUpOiBMaWtld2lzZS4KLQkoZ2RicHlfZ2V0 X2Rpc3BsYXlfaGludCwgcHJpbnRfY2hpbGRyZW4pOiBDYWxsIGdkYnB5X3ByaW50X3N0YWNrIG9u Ci0JZmFpbGVkIHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcuCi0JKiBweXRob24vcHktdmFs dWUuYyAodmFscHlfbmV3LCB2YWxweV9nZXRpdGVtLCB2YWxweV9jYWxsKQotCSh2YWxweV9iaW5v cCwgdmFscHlfcmljaGNvbXBhcmUpOiBFeHRlbmQgdGhlIGZ1bmN0aW9uIGNvbW1lbnQuCi0JKiBw eXRob24vcHl0aG9uLmMKLQkoc3RydWN0IHB5dGhvbl9lbnYpIDxlcnJvcl90eXBlLCBlcnJvcl92 YWx1ZSwgZXJyb3JfdHJhY2ViYWNrPjogTmV3Ci0JZmllbGRzLgotCShyZXN0b3JlX3B5dGhvbl9l bnYpOiBIYW5kbGUgUHlFcnJfT2NjdXJyZWQuICBDYWxsIFB5RXJyX1Jlc3RvcmUuCi0JKGVuc3Vy ZV9weXRob25fZW52KTogQ2FsbCBQeUVycl9GZXRjaC4KLQkqIHZhcm9iai5jICh1cGRhdGVfZHlu YW1pY192YXJvYmpfY2hpbGRyZW4pOiBDYWxsIGdkYnB5X3ByaW50X3N0YWNrIG9uCi0JZmFpbGVk IGNvbnZlcnRfdmFsdWVfZnJvbV9weXRob24uCi0JKHZhbHVlX2dldF9wcmludF92YWx1ZSk6IENh bGwgZ2RicHlfcHJpbnRfc3RhY2sgb24gZmFpbGVkCi0JcHl0aG9uX3N0cmluZ190b190YXJnZXRf cHl0aG9uX3N0cmluZy4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTAtMTAtMDkgIEphbiBLcmF0b2No dmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2RiLnB5dGhvbi9weS1lcnJv ci5leHA6IE5ldyBmaWxlLgotCSogZ2RiLnB5dGhvbi9weS1lcnJvci5weTogTmV3IGZpbGUuCi0K LUluZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRob24vcHktYnJlYWtwb2ludC5jCTIwMTAtMTAtMTIgMTg6 Mjc6NTQuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LWJyZWFrcG9p bnQuYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTQyMCw2ICs0MjAs OSBAQCBicHB5X2dldF9jb25kaXRpb24gKFB5T2JqZWN0ICpzZWxmLCB2b2lkCi0gICByZXR1cm4g UHlTdHJpbmdfRGVjb2RlIChzdHIsIHN0cmxlbiAoc3RyKSwgaG9zdF9jaGFyc2V0ICgpLCBOVUxM KTsKLSB9Ci0gCi0rLyogUmV0dXJucyAwIG9uIHN1Y2Nlc3MuICBSZXR1cm5zIC0xIG9uIGVycm9y LCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuCi0rICAgKi8KLSsKLSBzdGF0aWMgaW50Ci0g YnBweV9zZXRfY29uZGl0aW9uIChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKm5ld3ZhbHVlLCB2 b2lkICpjbG9zdXJlKQotIHsKLUluZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktY21kLmMKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhvbi9weS1jbWQuYwkyMDEwLTEwLTEy IDE4OjI3OjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1jbWQu YwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEzOCw3ICsxMzgsMTAg QEAgY21kcHlfZnVuY3Rpb24gKHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50IAotICAgICBhcmdzID0g IiI7Ci0gICBhcmdvYmogPSBQeVVuaWNvZGVfRGVjb2RlIChhcmdzLCBzdHJsZW4gKGFyZ3MpLCBo b3N0X2NoYXJzZXQgKCksIE5VTEwpOwotICAgaWYgKCEgYXJnb2JqKQotLSAgICBlcnJvciAoXygi Q291bGQgbm90IGNvbnZlcnQgYXJndW1lbnRzIHRvIFB5dGhvbiBzdHJpbmcuIikpOwotKyAgICB7 Ci0rICAgICAgZ2RicHlfcHJpbnRfc3RhY2sgKCk7Ci0rICAgICAgZXJyb3IgKF8oIkNvdWxkIG5v dCBjb252ZXJ0IGFyZ3VtZW50cyB0byBQeXRob24gc3RyaW5nLiIpKTsKLSsgICAgfQotIAotICAg dHR5b2JqID0gZnJvbV90dHkgPyBQeV9UcnVlIDogUHlfRmFsc2U7Ci0gICBQeV9JTkNSRUYgKHR0 eW9iaik7Ci1AQCAtMjU1LDYgKzI1OCwxMiBAQCBjbWRweV9jb21wbGV0ZXIgKHN0cnVjdCBjbWRf bGlzdF9lbGVtZW50Ci0gCSAgICAgIGNvbnRpbnVlOwotIAkgICAgfQotIAkgIHJlc3VsdFtvdXRd ID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoZWx0KTsKLSsJICBpZiAocmVzdWx0W291 dF0gPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgLyogU2tpcCBwcm9ibGVtIGVsZW1lbnRzLiAg Ki8KLSsJICAgICAgUHlFcnJfQ2xlYXIgKCk7Ci0rCSAgICAgIGNvbnRpbnVlOwotKwkgICAgfQot IAkgICsrb3V0OwotIAl9Ci0gICAgICAgcmVzdWx0W291dF0gPSBOVUxMOwotQEAgLTQ2NSw3ICs0 NzQsMTUgQEAgY21kcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcgotICAgICAg IFB5T2JqZWN0ICpkc19vYmogPSBQeU9iamVjdF9HZXRBdHRyIChzZWxmLCBnZGJweV9kb2NfY3N0 KTsKLSAKLSAgICAgICBpZiAoZHNfb2JqICYmIGdkYnB5X2lzX3N0cmluZyAoZHNfb2JqKSkKLS0J ZG9jc3RyaW5nID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0cmluZyAoZHNfb2JqKTsKLSsJewot KwkgIGRvY3N0cmluZyA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGRzX29iaik7Ci0r CSAgaWYgKGRvY3N0cmluZyA9PSBOVUxMKQotKwkgICAgewotKwkgICAgICB4ZnJlZSAoY21kX25h bWUpOwotKwkgICAgICB4ZnJlZSAocGZ4X25hbWUpOwotKwkgICAgICByZXR1cm4gLTE7Ci0rCSAg ICB9Ci0rCX0KLSAgICAgfQotICAgaWYgKCEgZG9jc3RyaW5nKQotICAgICBkb2NzdHJpbmcgPSB4 c3RyZHVwIChfKCJUaGlzIGNvbW1hbmQgaXMgbm90IGRvY3VtZW50ZWQuIikpOwotSW5kZXg6IGdk Yi03LjIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmln L2dkYi9weXRob24vcHktZnJhbWUuYwkyMDEwLTA2LTI4IDIzOjE2OjAzLjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjIvZ2RiL3B5dGhvbi9weS1mcmFtZS5jCTIwMTAtMTAtMTIgMTg6Mjg6NTgu MDAwMDAwMDAwICswMjAwCi1AQCAtMzg1LDcgKzM4NSw4IEBAIGZyYXB5X2ZpbmRfc2FsIChQeU9i amVjdCAqc2VsZiwgUHlPYmplY3QKLSAgICBzdGFydCB0aGUgc2VhcmNoIGZyb20gdGhhdCBibG9j aywgb3RoZXJ3aXNlIHNlYXJjaCBmcm9tIHRoZSBmcmFtZSdzCi0gICAgY3VycmVudCBibG9jayAo ZGV0ZXJtaW5lZCBieSBleGFtaW5pbmcgdGhlIHJlc3VtZSBhZGRyZXNzIG9mIHRoZQotICAgIGZy YW1lKS4gIFRoZSB2YXJpYWJsZSBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nIG9yIGFuIGluc3Rh bmNlIG9mIGEKLS0gICBnZGIuU3ltYm9sLiAgVGhlIGJsb2NrIGFyZ3VtZW50IG11c3QgYmUgYW4g aW5zdGFuY2Ugb2YgZ2RiLkJsb2NrLiAgKi8KLSsgICBnZGIuU3ltYm9sLiAgVGhlIGJsb2NrIGFy Z3VtZW50IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgZ2RiLkJsb2NrLiAgUmV0dXJucwotKyAgIE5V TEwgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCi0gc3RhdGljIFB5 T2JqZWN0ICoKLSBmcmFweV9yZWFkX3ZhciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdz KQotIHsKLUluZGV4OiBnZGItNy4yL2dkYi9weXRob24vcHktZnVuY3Rpb24uYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5LWZ1bmN0aW9uLmMJMjAxMC0wNS0xNyAy MzoyMzoyNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi9weXRob24vcHktZnVuY3Rp b24uYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTExMyw3ICsxMTMs MTQgQEAgZm5weV9pbml0IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZwotICAgICB7Ci0g ICAgICAgUHlPYmplY3QgKmRzX29iaiA9IFB5T2JqZWN0X0dldEF0dHJTdHJpbmcgKHNlbGYsICJf X2RvY19fIik7Ci0gICAgICAgaWYgKGRzX29iaiAmJiBnZGJweV9pc19zdHJpbmcgKGRzX29iaikp Ci0tCWRvY3N0cmluZyA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKGRzX29iaik7Ci0r CXsKLSsJICBkb2NzdHJpbmcgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nIChkc19vYmop OwotKwkgIGlmIChkb2NzdHJpbmcgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgUHlfREVDUkVG IChzZWxmKTsKLSsJICAgICAgcmV0dXJuIC0xOwotKwkgICAgfQotKwl9Ci0gICAgIH0KLSAgIGlm ICghIGRvY3N0cmluZykKLSAgICAgZG9jc3RyaW5nID0geHN0cmR1cCAoXygiVGhpcyBmdW5jdGlv biBpcyBub3QgZG9jdW1lbnRlZC4iKSk7Ci1JbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LWlu ZmVyaW9yLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhvbi9weS1pbmZl cmlvci5jCTIwMTAtMDYtMjggMjM6MTY6MDMuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9n ZGIvcHl0aG9uL3B5LWluZmVyaW9yLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAy MDAKLUBAIC0yOTMsNyArMjkzLDggQEAgZ2RicHlfaW5mZXJpb3JzIChQeU9iamVjdCAqdW51c2Vk LCBQeU9iagotIAotIC8qIEltcGxlbWVudGF0aW9uIG9mIGdkYi5yZWFkX21lbW9yeSAoYWRkcmVz cywgbGVuZ3RoKS4KLSAgICBSZXR1cm5zIGEgUHl0aG9uIGJ1ZmZlciBvYmplY3Qgd2l0aCBMRU5H VEggYnl0ZXMgb2YgdGhlIGluZmVyaW9yJ3MKLS0gICBtZW1vcnkgYXQgQUREUkVTUy4gIEJvdGgg YXJndW1lbnRzIGFyZSBpbnRlZ2Vycy4gICovCi0rICAgbWVtb3J5IGF0IEFERFJFU1MuICBCb3Ro IGFyZ3VtZW50cyBhcmUgaW50ZWdlcnMuICBSZXR1cm5zIE5VTEwgb24gZXJyb3IsCi0rICAgd2l0 aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBzdGF0aWMgUHlPYmplY3QgKgotIGluZnB5 X3JlYWRfbWVtb3J5IChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICpr dykKLSB7Ci1AQCAtMzYxLDcgKzM2Miw4IEBAIGluZnB5X3JlYWRfbWVtb3J5IChQeU9iamVjdCAq c2VsZiwgUHlPYmoKLSAgICBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIEJVRkZFUiAoYSBQeXRob24g b2JqZWN0IHN1cHBvcnRpbmcgdGhlIHJlYWQKLSAgICBidWZmZXIgcHJvdG9jb2wpIGF0IEFERFJF U1MgaW4gdGhlIGluZmVyaW9yJ3MgbWVtb3J5LiAgV3JpdGUgTEVOR1RICi0gICAgYnl0ZXMgZnJv bSBCVUZGRVIsIG9yIGl0cyBlbnRpcmUgY29udGVudHMgaWYgdGhlIGFyZ3VtZW50IGlzIG5vdAot LSAgIHByb3ZpZGVkLiAgVGhlIGZ1bmN0aW9uIHJldHVybnMgbm90aGluZy4gICovCi0rICAgcHJv dmlkZWQuICBUaGUgZnVuY3Rpb24gcmV0dXJucyBub3RoaW5nLiAgUmV0dXJucyBOVUxMIG9uIGVy cm9yLCB3aXRoCi0rICAgYSBweXRob24gZXhjZXB0aW9uIHNldC4gICovCi0gc3RhdGljIFB5T2Jq ZWN0ICoKLSBpbmZweV93cml0ZV9tZW1vcnkgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJn cywgUHlPYmplY3QgKmt3KQotIHsKLUBAIC00NzMsNyArNDc1LDggQEAgZ2V0X2NoYXJfYnVmZmVy IChQeU9iamVjdCAqc2VsZiwgUHlfc3NpegotICAgIHNlYXJjaCBmcm9tIEFERFJFU1MuICBQQVRU RVJOIGlzIHRoZSBwYXR0ZXJuIHRvIHNlYXJjaCBmb3IgKGFuZAotICAgIG11c3QgYmUgYSBQeXRo b24gb2JqZWN0IHN1cHBvcnRpbmcgdGhlIGJ1ZmZlciBwcm90b2NvbCkuCi0gICAgUmV0dXJucyBh IFB5dGhvbiBMb25nIG9iamVjdCBob2xkaW5nIHRoZSBhZGRyZXNzIHdoZXJlIHRoZSBwYXR0ZXJu Ci0tICAgd2FzIGxvY2F0ZWQsIG9yIGlmIHRoZSBwYXR0ZXJuIHdhcyBub3QgZm91bmQsIHJldHVy bnMgTm9uZS4gICovCi0rICAgd2FzIGxvY2F0ZWQsIG9yIGlmIHRoZSBwYXR0ZXJuIHdhcyBub3Qg Zm91bmQsIHJldHVybnMgTm9uZS4gIFJldHVybnMgTlVMTAotKyAgIG9uIGVycm9yLCB3aXRoIGEg cHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gaW5mcHlfc2Vh cmNoX21lbW9yeSAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cp Ci0gewotQEAgLTUxMSwxMiArNTE0LDcgQEAgaW5mcHlfc2VhcmNoX21lbW9yeSAoUHlPYmplY3Qg KnNlbGYsIFB5TwotIAl9Ci0gICAgIH0KLSAgIGVsc2UKLS0gICAgewotLSAgICAgIFB5RXJyX1Nl dFN0cmluZyAoUHlFeGNfUnVudGltZUVycm9yLAotLQkJICAgICAgIF8oIkNhbm5vdCBnZXQgc2Vh cmNoIGFkZHJlc3MvcmFuZ2UgZnJvbSBQeXRob24uIikpOwotLQotLSAgICAgIHJldHVybiBOVUxM OwotLSAgICB9Ci0rICAgIHJldHVybiBOVUxMOwotIAotICAgaWYgKCFQeU9iamVjdF9DaGVja1Jl YWRCdWZmZXIgKHBhdHRlcm4pKQotICAgICB7Ci1JbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9uL3B5 LXBhcmFtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhvbi9weS1wYXJh bS5jCTIwMTAtMDUtMTcgMjM6MjM6MjUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMi9nZGIv cHl0aG9uL3B5LXBhcmFtLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xMTAsOCArMTEwLDggQEAgZ2V0X2F0dHIgKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICphdHRy XwotICAgcmV0dXJuIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyIChvYmosIGF0dHJfbmFtZSk7Ci0g fQotIAotLS8qIFNldCBhIHBhcmFtZXRlciB2YWx1ZSBmcm9tIGEgUHl0aG9uIHZhbHVlLiAgUmV0 dXJuIDAgb24gc3VjY2VzcywgLTEKLS0gICBvbiBmYWlsdXJlLiAgKi8KLSsvKiBTZXQgYSBwYXJh bWV0ZXIgdmFsdWUgZnJvbSBhIFB5dGhvbiB2YWx1ZS4gIFJldHVybiAwIG9uIHN1Y2Nlc3MuICBS ZXR1cm5zCi0rICAgLTEgb24gZXJyb3IsIHdpdGggYSBweXRob24gZXhjZXB0aW9uIHNldC4gICov Ci0gc3RhdGljIGludAotIHNldF9wYXJhbWV0ZXJfdmFsdWUgKHBhcm1weV9vYmplY3QgKnNlbGYs IFB5T2JqZWN0ICp2YWx1ZSkKLSB7Ci1AQCAtMTQyLDcgKzE0MiwxMSBAQCBzZXRfcGFyYW1ldGVy X3ZhbHVlIChwYXJtcHlfb2JqZWN0ICpzZWxmCi0gCSAgICBzZWxmLT52YWx1ZS5zdHJpbmd2YWwg PSBOVUxMOwotIAl9Ci0gICAgICAgZWxzZQotLQlzZWxmLT52YWx1ZS5zdHJpbmd2YWwgPSBweXRo b25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nICh2YWx1ZSk7Ci0rCXsKLSsJICBzZWxmLT52YWx1ZS5z dHJpbmd2YWwgPSBweXRob25fc3RyaW5nX3RvX2hvc3Rfc3RyaW5nICh2YWx1ZSk7Ci0rCSAgaWYg KHNlbGYtPnZhbHVlLnN0cmluZ3ZhbCA9PSBOVUxMKQotKwkgICAgcmV0dXJuIC0xOwotKwl9Ci0g ICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgdmFyX2VudW06Ci1AQCAtMTU4LDYgKzE2Miw4IEBA IHNldF9wYXJhbWV0ZXJfdmFsdWUgKHBhcm1weV9vYmplY3QgKnNlbGYKLSAJICB9Ci0gCi0gCXN0 ciA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9zdHJpbmcgKHZhbHVlKTsKLSsJaWYgKHN0ciA9PSBO VUxMKQotKwkgIHJldHVybiAtMTsKLSAJZm9yIChpID0gMDsgc2VsZi0+ZW51bWVyYXRpb25baV07 ICsraSkKLSAJICBpZiAoISBzdHJjbXAgKHNlbGYtPmVudW1lcmF0aW9uW2ldLCBzdHIpKQotIAkg ICAgYnJlYWs7Ci1AQCAtMjU4LDcgKzI2NCw3IEBAIHNldF9wYXJhbWV0ZXJfdmFsdWUgKHBhcm1w eV9vYmplY3QgKnNlbGYKLSAgIHJldHVybiAwOwotIH0KLSAKLS0vKiBTZXQgYW4gYXR0cmlidXRl LiAgKi8KLSsvKiBTZXQgYW4gYXR0cmlidXRlLiAgUmV0dXJucyAtMSBvbiBlcnJvciwgd2l0aCBh IHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBzdGF0aWMgaW50Ci0gc2V0X2F0dHIgKFB5T2Jq ZWN0ICpvYmosIFB5T2JqZWN0ICphdHRyX25hbWUsIFB5T2JqZWN0ICp2YWwpCi0gewotQEAgLTM1 OCwxMiArMzY0LDEzIEBAIGFkZF9zZXRzaG93X2dlbmVyaWMgKGludCBwYXJtY2xhc3MsIGVudW0K LSAgICAgfQotIH0KLSAKLS0vKiBBIGhlbHBlciB3aGljaCBjb21wdXRlcyBlbnVtIHZhbHVlcy4g IFJldHVybnMgMSBvbiBzdWNjZXNzLCAwIG9uCi0tICAgZXJyb3IuICAqLwotKy8qIEEgaGVscGVy IHdoaWNoIGNvbXB1dGVzIGVudW0gdmFsdWVzLiAgUmV0dXJucyAxIG9uIHN1Y2Nlc3MuICBSZXR1 cm5zIDAgb24KLSsgICBlcnJvciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBz dGF0aWMgaW50Ci0gY29tcHV0ZV9lbnVtX3ZhbHVlcyAocGFybXB5X29iamVjdCAqc2VsZiwgUHlP YmplY3QgKmVudW1fdmFsdWVzKQotIHsKLSAgIFB5X3NzaXplX3Qgc2l6ZSwgaTsKLSsgIHN0cnVj dCBjbGVhbnVwICpiYWNrX3RvOwotIAotICAgaWYgKCEgZW51bV92YWx1ZXMpCi0gICAgIHsKLUBA IC0zOTAsNiArMzk3LDcgQEAgY29tcHV0ZV9lbnVtX3ZhbHVlcyAocGFybXB5X29iamVjdCAqc2Vs ZgotICAgICB9Ci0gCi0gICBzZWxmLT5lbnVtZXJhdGlvbiA9IHhtYWxsb2MgKChzaXplICsgMSkg KiBzaXplb2YgKGNoYXIgKikpOwotKyAgYmFja190byA9IG1ha2VfY2xlYW51cCAoZnJlZV9jdXJy ZW50X2NvbnRlbnRzLCAmc2VsZi0+ZW51bWVyYXRpb24pOwotICAgbWVtc2V0IChzZWxmLT5lbnVt ZXJhdGlvbiwgMCwgKHNpemUgKyAxKSAqIHNpemVvZiAoY2hhciAqKSk7Ci0gCi0gICBmb3IgKGkg PSAwOyBpIDwgc2l6ZTsgKytpKQotQEAgLTM5NywxNiArNDA1LDI3IEBAIGNvbXB1dGVfZW51bV92 YWx1ZXMgKHBhcm1weV9vYmplY3QgKnNlbGYKLSAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5U2Vx dWVuY2VfR2V0SXRlbSAoZW51bV92YWx1ZXMsIGkpOwotIAotICAgICAgIGlmICghIGl0ZW0pCi0t CXJldHVybiAwOwotKwl7Ci0rCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKwkgIHJldHVybiAw OwotKwl9Ci0gICAgICAgaWYgKCEgZ2RicHlfaXNfc3RyaW5nIChpdGVtKSkKLSAJewotKwkgIGRv X2NsZWFudXBzIChiYWNrX3RvKTsKLSAJICBQeUVycl9TZXRTdHJpbmcgKFB5RXhjX1J1bnRpbWVF cnJvciwgCi0gCQkJICAgXygiVGhlIGVudW1lcmF0aW9uIGl0ZW0gbm90IGEgc3RyaW5nLiIpKTsK LSAJICByZXR1cm4gMDsKLSAJfQotICAgICAgIHNlbGYtPmVudW1lcmF0aW9uW2ldID0gcHl0aG9u X3N0cmluZ190b19ob3N0X3N0cmluZyAoaXRlbSk7Ci0rICAgICAgaWYgKHNlbGYtPmVudW1lcmF0 aW9uW2ldID09IE5VTEwpCi0rCXsKLSsJICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0rCSAgcmV0 dXJuIDA7Ci0rCX0KLSsgICAgICBtYWtlX2NsZWFudXAgKHhmcmVlLCAoY2hhciAqKSBzZWxmLT5l bnVtZXJhdGlvbltpXSk7Ci0gICAgIH0KLSAKLSsgIGRpc2NhcmRfY2xlYW51cHMgKGJhY2tfdG8p OwotICAgcmV0dXJuIDE7Ci0gfQotIAotQEAgLTQyMiw3ICs0NDEsMTEgQEAgZ2V0X2RvY19zdHJp bmcgKFB5T2JqZWN0ICpvYmplY3QsIFB5T2JqZQotICAgICAgIFB5T2JqZWN0ICpkc19vYmogPSBQ eU9iamVjdF9HZXRBdHRyIChvYmplY3QsIGF0dHIpOwotIAotICAgICAgIGlmIChkc19vYmogJiYg Z2RicHlfaXNfc3RyaW5nIChkc19vYmopKQotLQlyZXN1bHQgPSBweXRob25fc3RyaW5nX3RvX2hv c3Rfc3RyaW5nIChkc19vYmopOwotKwl7Ci0rCSAgcmVzdWx0ID0gcHl0aG9uX3N0cmluZ190b19o b3N0X3N0cmluZyAoZHNfb2JqKTsKLSsJICBpZiAocmVzdWx0ID09IE5VTEwpCi0rCSAgICBnZGJw eV9wcmludF9zdGFjayAoKTsKLSsJfQotICAgICB9Ci0gICBpZiAoISByZXN1bHQpCi0gICAgIHJl c3VsdCA9IHhzdHJkdXAgKF8oIlRoaXMgY29tbWFuZCBpcyBub3QgZG9jdW1lbnRlZC4iKSk7Ci1A QCAtNDQ5LDggKzQ3Miw5IEBAIGdldF9kb2Nfc3RyaW5nIChQeU9iamVjdCAqb2JqZWN0LCBQeU9i amUKLSAKLSAgICBUaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIHBhcmFtZXRlciBpcyB0YWtlbiBm cm9tIHRoZSBkb2Mgc3RyaW5nCi0gICAgZm9yIHRoZSBweXRob24gY2xhc3MuCi0tICAgCi0tKi8K LSsKLSsgICBSZXR1cm5zIC0xIG9uIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQu ICAqLwotKwotIHN0YXRpYyBpbnQKLSBwYXJtcHlfaW5pdCAoUHlPYmplY3QgKnNlbGYsIFB5T2Jq ZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKLSB7Ci1JbmRleDogZ2RiLTcuMi9nZGIvcHl0aG9u L3B5LXByZXR0eXByaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLm9yaWcvZ2RiL3B5dGhv bi9weS1wcmV0dHlwcmludC5jCTIwMTAtMTAtMTIgMTg6Mjc6NTcuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi9nZGIvcHl0aG9uL3B5LXByZXR0eXByaW50LmMJMjAxMC0xMC0xMiAxODoyODo1 OC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODUsOCArMTg1LDggQEAgZmluZF9wcmV0dHlfcHJpbnRl ciAoUHlPYmplY3QgKnZhbHVlKQotICAgIGlzIHJldHVybmVkLiAgSWYgdGhlIGZ1bmN0aW9uIHJl dHVybnMgUHlfTk9ORSB0aGF0IG1lYW5zIHRoZSBwcmV0dHkKLSAgICBwcmludGVyIHJldHVybmVk IHRoZSBQeXRob24gTm9uZSBhcyBhIHZhbHVlLiAgT3RoZXJ3aXNlLCBpZiB0aGUKLSAgICBmdW5j dGlvbiByZXR1cm5zIGEgdmFsdWUsICAqT1VUX1ZBTFVFIGlzIHNldCB0byB0aGUgdmFsdWUsIGFu ZCBOVUxMCi0tICAgaXMgcmV0dXJuZWQuICBPbiBlcnJvciwgKk9VVF9WQUxVRSBpcyBzZXQgdG8g TlVMTCwgYW5kIE5VTEwgaXMKLS0gICByZXR1cm5lZC4gICovCi0rICAgaXMgcmV0dXJuZWQuICBP biBlcnJvciwgKk9VVF9WQUxVRSBpcyBzZXQgdG8gTlVMTCwgTlVMTCBpcwotKyAgIHJldHVybmVk LCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBzZXQuICAqLwotIAotIHN0YXRpYyBQeU9iamVjdCAq Ci0gcHJldHR5X3ByaW50X29uZV92YWx1ZSAoUHlPYmplY3QgKnByaW50ZXIsIHN0cnVjdCB2YWx1 ZSAqKm91dF92YWx1ZSkKLUBAIC0yMzIsNyArMjMyLDExIEBAIGdkYnB5X2dldF9kaXNwbGF5X2hp bnQgKFB5T2JqZWN0ICpwcmludGUKLSAgIGlmIChoaW50KQotICAgICB7Ci0gICAgICAgaWYgKGdk YnB5X2lzX3N0cmluZyAoaGludCkpCi0tCXJlc3VsdCA9IHB5dGhvbl9zdHJpbmdfdG9faG9zdF9z dHJpbmcgKGhpbnQpOwotKwl7Ci0rCSAgcmVzdWx0ID0gcHl0aG9uX3N0cmluZ190b19ob3N0X3N0 cmluZyAoaGludCk7Ci0rCSAgaWYgKHJlc3VsdCA9PSBOVUxMKQotKwkgICAgZ2RicHlfcHJpbnRf c3RhY2sgKCk7Ci0rCX0KLSAgICAgICBQeV9ERUNSRUYgKGhpbnQpOwotICAgICB9Ci0gICBlbHNl Ci1AQCAtNTc0LDcgKzU3OCwxMCBAQCBwcmludF9jaGlsZHJlbiAoUHlPYmplY3QgKnByaW50ZXIs IGNvbnN0Ci0gCSAgZWxzZQotIAkgICAgewotIAkgICAgICBvdXRwdXQgPSBweXRob25fc3RyaW5n X3RvX2hvc3Rfc3RyaW5nIChweV92KTsKLS0JICAgICAgZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwg c3RyZWFtKTsKLSsJICAgICAgaWYgKCFvdXRwdXQpCi0rCQlnZGJweV9wcmludF9zdGFjayAoKTsK LSsJICAgICAgZWxzZQotKwkJZnB1dHNfZmlsdGVyZWQgKG91dHB1dCwgc3RyZWFtKTsKLSAJICAg ICAgeGZyZWUgKG91dHB1dCk7Ci0gCSAgICB9Ci0gCX0KLUluZGV4OiBnZGItNy4yL2dkYi9weXRo b24vcHktdmFsdWUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvcHl0aG9uL3B5 LXZhbHVlLmMJMjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4y L2dkYi9weXRob24vcHktdmFsdWUuYwkyMDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIw MAotQEAgLTExNCw3ICsxMTQsOCBAQCBub3RlX3ZhbHVlICh2YWx1ZV9vYmplY3QgKnZhbHVlX29i aikKLSAgIHZhbHVlc19pbl9weXRob24gPSB2YWx1ZV9vYmo7Ci0gfQotIAotLS8qIENhbGxlZCB3 aGVuIGEgbmV3IGdkYi5WYWx1ZSBvYmplY3QgbmVlZHMgdG8gYmUgYWxsb2NhdGVkLiAgKi8KLSsv KiBDYWxsZWQgd2hlbiBhIG5ldyBnZGIuVmFsdWUgb2JqZWN0IG5lZWRzIHRvIGJlIGFsbG9jYXRl ZC4gIFJldHVybnMgTlVMTCBvbgotKyAgIGVycm9yLCB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlvbiBz ZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gdmFscHlfbmV3IChQeVR5cGVPYmplY3QgKnN1 YnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa2V5d29yZHMpCi0gewotQEAgLTMzNCw3 ICszMzUsNyBAQCB2YWxweV9sZW5ndGggKFB5T2JqZWN0ICpzZWxmKQotIH0KLSAKLSAvKiBHaXZl biBzdHJpbmcgbmFtZSBvZiBhbiBlbGVtZW50IGluc2lkZSBzdHJ1Y3R1cmUsIHJldHVybiBpdHMg dmFsdWUKLS0gICBvYmplY3QuICAqLwotKyAgIG9iamVjdC4gIFJldHVybnMgTlVMTCBvbiBlcnJv ciwgd2l0aCBhIHB5dGhvbiBleGNlcHRpb24gc2V0LiAgKi8KLSBzdGF0aWMgUHlPYmplY3QgKgot IHZhbHB5X2dldGl0ZW0gKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqa2V5KQotIHsKLUBAIC00 NjgsNyArNDY5LDggQEAgZW51bSB2YWxweV9vcGNvZGUKLSAgICgoVFlQRV9DT0RFIChUWVBFKSA9 PSBUWVBFX0NPREVfUkVGKSA/IChUWVBFX1RBUkdFVF9UWVBFIChUWVBFKSkgOiAoVFlQRSkpCi0g Ci0gLyogUmV0dXJucyBhIHZhbHVlIG9iamVjdCB3aGljaCBpcyB0aGUgcmVzdWx0IG9mIGFwcGx5 aW5nIHRoZSBvcGVyYXRpb24KLS0gICBzcGVjaWZpZWQgYnkgT1BDT0RFIHRvIHRoZSBnaXZlbiBh cmd1bWVudHMuICAqLwotKyAgIHNwZWNpZmllZCBieSBPUENPREUgdG8gdGhlIGdpdmVuIGFyZ3Vt ZW50cy4gIFJldHVybnMgTlVMTCBvbiBlcnJvciwgd2l0aAotKyAgIGEgcHl0aG9uIGV4Y2VwdGlv biBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gdmFscHlfYmlub3AgKGVudW0gdmFscHlf b3Bjb2RlIG9wY29kZSwgUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGhlcikKLSB7Ci1AQCAt NzIzLDcgKzcyNSw4IEBAIHZhbHB5X3hvciAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvdGgK LSAgIHJldHVybiB2YWxweV9iaW5vcCAoVkFMUFlfQklUWE9SLCBzZWxmLCBvdGhlcik7Ci0gfQot IAotLS8qIEltcGxlbWVudHMgY29tcGFyaXNvbiBvcGVyYXRpb25zIGZvciB2YWx1ZSBvYmplY3Rz LiAgKi8KLSsvKiBJbXBsZW1lbnRzIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBmb3IgdmFsdWUgb2Jq ZWN0cy4gIFJldHVybnMgTlVMTCBvbiBlcnJvciwKLSsgICB3aXRoIGEgcHl0aG9uIGV4Y2VwdGlv biBzZXQuICAqLwotIHN0YXRpYyBQeU9iamVjdCAqCi0gdmFscHlfcmljaGNvbXBhcmUgKFB5T2Jq ZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKLSB7Ci1JbmRleDogZ2RiLTcuMi9n ZGIvcHl0aG9uL3B5dGhvbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi5vcmlnL2dkYi9weXRo b24vcHl0aG9uLmMJMjAxMC0xMC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4yL2dkYi9weXRob24vcHl0aG9uLmMJMjAxMC0xMC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAy MDAKLUBAIC04Miw2ICs4Miw3IEBAIHN0cnVjdCBweXRob25fZW52Ci0gICBQeUdJTFN0YXRlX1NU QVRFIHN0YXRlOwotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBjb25zdCBzdHJ1Y3Qg bGFuZ3VhZ2VfZGVmbiAqbGFuZ3VhZ2U7Ci0rICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9y X3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOwotIH07Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC04OSw2 ICs5MCwxNiBAQCByZXN0b3JlX3B5dGhvbl9lbnYgKHZvaWQgKnApCi0gewotICAgc3RydWN0IHB5 dGhvbl9lbnYgKmVudiA9IChzdHJ1Y3QgcHl0aG9uX2VudiAqKXA7Ci0gCi0rICAvKiBMZWZ0b3Zl ciBQeXRob24gZXJyb3IgaXMgZm9yYmlkZGVuIGJ5IFB5dGhvbiBFeGNlcHRpb24gSGFuZGxpbmcu ICAqLwotKyAgaWYgKFB5RXJyX09jY3VycmVkICgpKQotKyAgICB7Ci0rICAgICAgLyogVGhpcyBv cmRlciBpcyBzaW1pbGFyIHRvIHRoZSBvbmUgY2FsbGluZyBlcnJvciBhZnRlcndhcmRzLiAqLwot KyAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotKyAgICAgIHdhcm5pbmcgKF8oImludGVybmFs IGVycm9yOiBVbmhhbmRsZWQgUHl0aG9uIGV4Y2VwdGlvbiIpKTsKLSsgICAgfQotKwotKyAgUHlF cnJfUmVzdG9yZSAoZW52LT5lcnJvcl90eXBlLCBlbnYtPmVycm9yX3ZhbHVlLCBlbnYtPmVycm9y X3RyYWNlYmFjayk7Ci0rCi0gICBQeUdJTFN0YXRlX1JlbGVhc2UgKGVudi0+c3RhdGUpOwotICAg cHl0aG9uX2dkYmFyY2ggPSBlbnYtPmdkYmFyY2g7Ci0gICBweXRob25fbGFuZ3VhZ2UgPSBlbnYt Pmxhbmd1YWdlOwotQEAgLTExMSw2ICsxMjIsOSBAQCBlbnN1cmVfcHl0aG9uX2VudiAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyCi0gICBweXRob25fZ2RiYXJjaCA9IGdkYmFyY2g7Ci0gICBweXRob25f bGFuZ3VhZ2UgPSBsYW5ndWFnZTsKLSAKLSsgIC8qIFNhdmUgaXQgYW5kIGVuc3VyZSAhIFB5RXJy X09jY3VycmVkICgpIGFmdGVyd2FyZHMuICAqLwotKyAgUHlFcnJfRmV0Y2ggKCZlbnYtPmVycm9y X3R5cGUsICZlbnYtPmVycm9yX3ZhbHVlLCAmZW52LT5lcnJvcl90cmFjZWJhY2spOwotKyAgCi0g ICByZXR1cm4gbWFrZV9jbGVhbnVwIChyZXN0b3JlX3B5dGhvbl9lbnYsIGVudik7Ci0gfQotIAot SW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVycm9yLmV4cAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVycm9yLmV4cAkyMDEw LTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTAsMCArMSw1NiBAQAotKyMgQ29w eXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0r IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLSsjIFRlc3QgZXJyb3Igd2hpbGUgbG9hZGluZyAq LWdkYi5weS4gIElCTTEwNDcgaXMgY2hvc2VuIGFzIHBvc3NpYmx5IHN1cHBvcnRlZAotKyMgYnkg Z2xpYmMgYnV0IHVuc3VwcG9ydGVkIGJ5IFB5dGhvbgotKwotK3NldCB0ZXN0ZmlsZSAicHktZXJy b3IiCi0rCi0rbG9hZF9saWIgZ2RiLXB5dGhvbi5leHAKLSsKLSsjIFN0YXJ0IHdpdGggYSBmcmVz aCBnZGIuCi0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLSsKLSsjIFNraXAgYWxsIHRlc3RzIGlmIFB5 dGhvbiBzY3JpcHRpbmcgaXMgbm90IGVuYWJsZWQuCi0raWYgeyBbc2tpcF9weXRob25fdGVzdHNd IH0geyBjb250aW51ZSB9Ci0rCi0rc2V0IGNoYXJzZXQgIklCTTEwNDciCi0rCi0rc2V0IHRlc3Qy ICJtYWluIHJlYWNoZWQiCi0rCi0rc2V0IHRlc3QgInNldCBob3N0LWNoYXJzZXQgJGNoYXJzZXQi Ci0rc2V0IHRlc3RfcmVnZXggW3N0cmluZ190b19yZWdleHAgJHRlc3RdCi0rZ2RiX3Rlc3RfbXVs dGlwbGUgJHRlc3QgJHRlc3QgewotKyAgICAtcmUgIl4kdGVzdF9yZWdleFxyXG4kZ2RiX3Byb21w dCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsgICAgfQotKyAgICAtcmUgIl4kdGVzdF9yZWdleFxyXG5V bmRlZmluZWQgaXRlbTogXCIkY2hhcnNldFwiXFwuXHJcbiRnZGJfcHJvbXB0ICQiIHsKLSsJeGZh aWwgJHRlc3QKLSsJdW50ZXN0ZWQgJHRlc3QyCi0rCXNldCB0ZXN0MiAiIgotKyAgICB9Ci0rfQot KwotK2lmIHskdGVzdDIgPT0gIiJ9IHsKLSsgICAgcmV0dXJuIDAKLSt9Ci0rCi0rc2V0IHJlbW90 ZV9weXRob25fZmlsZSBbcmVtb3RlX2Rvd25sb2FkIGhvc3QgJHtzcmNkaXJ9LyR7c3ViZGlyfS8k e3Rlc3RmaWxlfS5weV0KLSsKLSsjIGFyZ2M9TG9va3VwRXJyb3I6IHVua25vd24gZW5jb2Rpbmc6 IElCTTEwNDcKLStnZGJfdGVzdCAic291cmNlICRyZW1vdGVfcHl0aG9uX2ZpbGUiICJUcmFjZWJh Y2suKkNsYXNzTmFtZS4qXHJcbkxvb2t1cEVycm9yOiB1bmtub3duIGVuY29kaW5nOiAkY2hhcnNl dCIgJHRlc3QyCi0rCi0rZ2RiX3Rlc3QgInAgMSIgIiA9IDEiICJubyBkZWxheWVkIGVycm9yIgot SW5kZXg6IGdkYi03LjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWVycm9yLnB5Ci09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZXJyb3IucHkJMjAxMC0x MC0xMiAxODoyODo1OC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMjUgQEAKLSsjIENvcHly aWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg ZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikg YW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGlu IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FS UkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRB QklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMg R05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ug c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGlj ZW5zZQotKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3 dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0rCi0raW1wb3J0IGdkYgotKwotK2NsYXNzIENsYXNzTmFt ZShnZGIuQ29tbWFuZCk6Ci0rICAgICdhJwotKyAgICBkZWYgX19pbml0X18oc2VsZik6Ci0rICAg ICAgICBnZGIuQ29tbWFuZC5fX2luaXRfXyAoc2VsZiwgIkNsYXNzTmFtZSIsIGdkYi5DT01NQU5E X0RBVEEsIHByZWZpeD1UcnVlKQotKyAgICBkZWYgaW52b2tlKHNlbGYsIGFyZ3MsIGZyb21fdHR5 KToKLSsgICAgICAgIHByaW50Ci0rCi0rQ2xhc3NOYW1lKCkKLUluZGV4OiBnZGItNy4yL2dkYi92 YXJvYmouYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIub3JpZy9nZGIvdmFyb2JqLmMJMjAxMC0x MC0xMiAxODoyNzo1NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi92YXJvYmouYwky MDEwLTEwLTEyIDE4OjI4OjU4LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwNTQsNiArMTA1NCw4IEBA IHVwZGF0ZV9keW5hbWljX3Zhcm9ial9jaGlsZHJlbiAoc3RydWN0IHYKLSAJICAgIGVycm9yIChf KCJJbnZhbGlkIGl0ZW0gZnJvbSB0aGUgY2hpbGQgbGlzdCIpKTsKLSAKLSAJICB2ID0gY29udmVy dF92YWx1ZV9mcm9tX3B5dGhvbiAocHlfdik7Ci0rCSAgaWYgKHYgPT0gTlVMTCkKLSsJICAgIGdk YnB5X3ByaW50X3N0YWNrICgpOwotIAkgIGluc3RhbGxfZHluYW1pY19jaGlsZCAodmFyLCBjYW5f bWVudGlvbiA/IGNoYW5nZWQgOiBOVUxMLAotIAkJCQkgY2FuX21lbnRpb24gPyBuZXcgOiBOVUxM LAotIAkJCQkgY2FuX21lbnRpb24gPyB1bmNoYW5nZWQgOiBOVUxMLAotQEAgLTI1NDIsNiArMjU0 NCw4IEBAIHZhbHVlX2dldF9wcmludF92YWx1ZSAoc3RydWN0IHZhbHVlICp2YWwKLSAJCQl0eXBl ID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9jaGFyOwotIAkJCVB5X0RFQ1JFRiAo cHlfc3RyKTsKLSAJCSAgICAgIH0KLSsJCSAgICBlbHNlCi0rCQkgICAgICBnZGJweV9wcmludF9z dGFjayAoKTsKLSAJCSAgfQotIAkJUHlfREVDUkVGIChvdXRwdXQpOwotIAkgICAgICB9CgpkaWZm IC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoCmlu ZGV4IGUxOThkNWQuLmJlMTU4NmUgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1nY2M0NC5wYXRjaAor KysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFNvbWUgZnVuY3Rp b25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQgZ2Zv cnRyYW40NCBhcwogdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUgZnJv bSBnY2MtNC4xLgogCi1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvdmxhLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdmxhLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03 LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0x MS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAw MCArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlIHZsYQogIHNldCBzcmNm aWxlICR7dGVzdGZpbGV9LmMKQEAgLTMyLDEwICszMiwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKICAgICAgdW50ZXN0ZWQgIkNv dWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDog Z2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5l eHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJl YWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0wNy0wNSAyMDowNDoz My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEwLTA3LTEzIDIzOjExOjIyLjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2JyZWFrLWludGVycC5leHAJMjAxMC0xMC0xMiAyMDo0MTowNi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJw LmV4cAkyMDEwLTExLTE2IDA5OjI4OjQwLjAwMDAwMDAwMCArMDEwMAogQEAgLTMzLDkgKzMzLDI5 IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVfbGlifV0gewogICAgICByZXR1cm4g LTEKICB9CkBAIC01NSw4ICs1NSw4IEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAogKwogICMgVXNlIC1zb25hbWUgc28g dGhhdCB0aGUgbmV3IGxpYnJhcnkgZ2V0cyBjb3BpZWQgYnkgYnVpbGRfZXhlY3V0YWJsZV9vd25f bGlicy4KICAKLS1pZiB7W2dkYl9jb21waWxlX3NobGliICR7c3JjZGlyfS8ke3N1YmRpcn0vJHtz cmNmaWxlX2xpYn0gJHtiaW5maWxlX2xpYn0gW2xpc3QgZGVidWcgYWRkaXRpb25hbF9mbGFncz0t V2wsLXNvbmFtZSwke3Rlc3R9LnNvXV0gIT0gIiJ9IHsKLStzZXQgZXJyIFtnZGJfY29tcGlsZV9z aGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7YmluZmlsZV9saWJ9IFts aXN0IGRlYnVnIGFkZGl0aW9uYWxfZmxhZ3M9LVdsLC1zb25hbWUsJHt0ZXN0fS5zb11dCistaWYg e1tnZGJfY29tcGlsZV9zaGxpYiAke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmlsZV9saWJ9ICR7 YmluZmlsZV9saWJ9IFtsaXN0IGRlYnVnIGxkZmxhZ3M9LVdsLC1zb25hbWUsJHt0ZXN0fS5zb11d ICE9ICIifSB7Cisrc2V0IGVyciBbZ2RiX2NvbXBpbGVfc2hsaWIgJHtzcmNkaXJ9LyR7c3ViZGly fS8ke3NyY2ZpbGVfbGlifSAke2JpbmZpbGVfbGlifSBbbGlzdCBkZWJ1ZyBsZGZsYWdzPS1XbCwt c29uYW1lLCR7dGVzdH0uc29dXQogKwogK3Vuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKICtpZiBb aW5mbyBleGlzdHMgb2xkX2NvbXBpbGVyXSB7CkBAIC02NywxMCArNjcsMTAgQEAgSW5kZXg6IGdk Yi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhw CiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAorSW5kZXg6IGdkYi03LjIuNTAu MjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiA9PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEwLTA3LTEzIDAwOjI1OjU2LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21t b24tYmxvY2suZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAwCistLS0gZ2Ri LTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJs b2NrLmV4cAkyMDEwLTExLTE2IDA5OjI2OjU0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIw MTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMjAsNyArMjAsMjUgQEAgc2V0 IHRlc3RmaWxlICJjb21tb24tYmxvY2siCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAg c2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtOTgsMTAgKzk4 LDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vY29tbW9uLWJsb2NrLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3Ny Y2ZpbGV9IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMC0wNy0xMiAyMzowNzozMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHdhcmYtc3RyaWRlLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIwMAorLS0t IGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJm LXN0cmlkZS5leHAJMjAxMC0xMS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4 cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTI3LDcgKzI3LDI1IEBA CiAgc2V0IHRlc3RmaWxlIGR3YXJmLXN0cmlkZQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5 MApAQCAtMTI5LDEwICsxMjksMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0K ICAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v ZHluYW1pYy5leHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vZHluYW1pYy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzEx Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDEwLTA3LTEyIDIz OjA3OjMzLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAw MCArMDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL2R5bmFtaWMuZXhwCTIwMTAtMTEtMTYgMDk6MjY6NTAuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMu ZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMjUsNyArMjUsMjUg QEAgc2V0IHRlc3RmaWxlICJkeW5hbWljIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAog IHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTE2MCwxMCAr MTYwLDEwIEBAIEluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZHluYW1pYy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNm aWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKK0luZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCTIwMTAtMDYtMDMgMDA6NDE6NTYuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2xpYnJhcnktbW9kdWxlLmV4cAkyMDEwLTA2LTAzIDAwOjQxOjU2LjAwMDAwMDAwMCArMDIwMAor KysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5 LW1vZHVsZS5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yNSwx NiArMjUsMzQgQEAgaWYgW2dldF9jb21waWxlcl9pbmZvIG5vdC11c2VkXSB7CiAgICAgcmV0dXJu IC0xCiAgfQpAQCAtMjAzLDEwICsyMDMsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKICAgICAgdW50ZXN0 ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUu ZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L21vZHVsZS5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1bGUuZXhwCTIwMTAtMDYtMDMgMDE6MDE6MDEuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL21vZHVsZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9tb2R1 bGUuZXhwCTIwMTAtMDktMjIgMjE6MjI6NDQuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMC0xMS0x NiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0xNiw3ICsxNiwyNSBAQAogIHNldCB0ZXN0 ZmlsZSAibW9kdWxlIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MApAQCAtMjM0LDEwICsy MzQsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9tb2R1bGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAorSW5kZXg6IGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTA3LTEyIDIzOjA3OjMzLjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcu ZXhwCTIwMTAtMDctMTMgMjM6MDU6MTQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4y MDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cAkyMDEwLTEx LTE2IDA5OjI2OjUwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAw MDAwMDAwICswMTAwCiBAQCAtMjMsNyArMjMsMjUgQEAgc2V0IHRlc3RmaWxlICJzdHJpbmciCiAg c2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQpAQCAtMjY1LDEwICsyNjUsMTAgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiAgICAgIHVudGVz dGVkICJDb3VsZG4ndCBjb21waWxlICR7c3JjZmlsZX0iCiAgICAgIHJldHVybiAtMQogIH0KLUlu ZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0 ZXAuZXhwCitJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL29tcC1zdGVwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEwLTA3LTEzIDAwOjIx OjMwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAg KzAyMDAKKy0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9vbXAtc3RlcC5leHAJMjAxMC0xMS0xNiAwOToyNjo1NC4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZXhwCTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCiBAQCAtMTUsNyArMTUsMjYg QEAKICAKICBzZXQgdGVzdGZpbGUgIm9tcC1zdGVwIgpAQCAtMjk3LDEwICsyOTcsMTAgQEAgSW5k ZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9vbXAtc3Rl cC5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCitJbmRleDogZ2RiLTcu Mi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9kZXJpdmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAwMDAw ICswMTAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wNy0xMyAyMzowNToxNC4wMDAwMDAwMDAgKzAyMDAKKy0t LSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kZXJp dmVkLXR5cGUuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDIuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5l eHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yOCw4ICsyOCwyNiBA QCBzZXQgdGVzdGZpbGUgImRlcml2ZWQtdHlwZSIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5m OTAKICBzZXQgYmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC0zMzAs MTAgKzMzMCwxMCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQogIAotSW5kZXg6 IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5l eHAKK0luZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v c3ViYXJyYXkuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMS45MC4yMDEwMDcxMS5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDIu MDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N1YmFycmF5LmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCArMDIw MAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N1YmFycmF5LmV4cAkyMDEwLTAxLTAxIDA4OjMyOjAyLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJ MjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKIEBAIC0yOCw4ICsyOCwyNiBAQCBz ZXQgdGVzdGZpbGUgInN1YmFycmF5IgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmYKICBzZXQg YmluZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC0zNjMsMTAgKzM2Mywx MCBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N1YmFycmF5LmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuMS45MC4y MDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKK0luZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRl YnVnLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0wNy0xMiAyMzowNzozNC4w MDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDEwLTA3LTEzIDIzOjA1OjE0LjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3Rscy1zZXBkZWJ1Zy5leHAJMjAxMC0xMS0xNiAwOToyNjo1MS4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNl cGRlYnVnLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAogQEAgLTMyLDcg KzMyLDI1IEBAIHNldCBiaW5zaGFyZWRkZWJ1Z2ZpbGUgJHtvYmpkaXJ9LyR7c3ViZGkKICAKICAj IEZJWE1FOiBnY2MgZGVwZW5kZW5jeSAoLVdsLC1zb25hbWUpLgpAQCAtMzk0LDEwICszOTQsMTAg QEAgSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90 bHMtc2VwZGVidWcuZXhwCiAgICAgIHVudGVzdGVkICJDb3VsZG4ndCBjb21waWxlIHRlc3QgbGli cmFyeSIKICAgICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2Ri L3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAorSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1 cHBvcnQuZXhwCTIwMTAtMDctMDUgMjA6MDI6NTYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu MS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTAt MDctMTMgMjM6MDk6MzQuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5v cmlnL2dkYi90ZXN0c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMC0xMC0xMiAyMDox Mjo0OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3Vp dGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAg KzAxMDAKIEBAIC0xMTgsOSArMTE4LDMxIEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0gewog IHByb2MgYnVpbGRfZXhlY3V0YWJsZV9vd25fbGlicyB7dGVzdG5hbWUgZXhlY3V0YWJsZSBzb3Vy Y2VzIG9wdGlvbnMge2ludGVycCAiIn0ge2RpciAiIn19IHsKICAgICAgZ2xvYmFsIG9iamRpciBz dWJkaXIKCmRpZmYgLS1naXQgYS9nZGItdGVzdHN1aXRlLWxpYi1weXRob24ucGF0Y2ggYi9nZGIt dGVzdHN1aXRlLWxpYi1weXRob24ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDVhNGE1NjAuLjAwMDAwMDAKLS0tIGEvZ2RiLXRlc3RzdWl0ZS1saWItcHl0aG9uLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotYWQyMGU1ZWIxNWQwMzdhMzFlM2I0ODRlOWY1 NzU0MmRjOTI3YzBhOQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0xMC9t c2cwMDAwNS5odG1sCi0KLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8wOS8z MCAxODo1ODowNwkxLjI0NjIKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMC8x MC8wMSAxNzowMzo0OQkxLjI0NjMKLSMjIC0xLDMgKzEsMTkgQEAKLSsyMDEwLTEwLTAxICBEb3Vn IEV2YW5zICA8ZGplQGdvb2dsZS5jb20+Ci0rCi0rCSogbGliL2dkYi1weXRob24uZXhwOiBOZXcg ZmlsZS4KLSsJKiBnZGIucHl0aG9uL3B5LWJsb2NrLmV4cDogVXNlIGl0LgotKwkqIGdkYi5weXRo b24vcHktYnJlYWtwb2ludC5leHA6IERpdHRvLgotKwkqIGdkYi5weXRob24vcHktZnJhbWUuZXhw OiBEaXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LWluZmVyaW9yLmV4cDogRGl0dG8uCi0rCSogZ2Ri LnB5dGhvbi9weS1wYXJhbS5leHA6IERpdHRvLgotKwkqIGdkYi5weXRob24vcHktcHJldHR5cHJp bnQuZXhwOiBEaXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LXNoYXJlZC5leHA6IERpdHRvLgotKwkq IGdkYi5weXRob24vcHktc3ltYm9sLmV4cDogRGl0dG8uCi0rCSogZ2RiLnB5dGhvbi9weS1zeW10 YWIuZXhwOiBEaXR0by4KLSsJKiBnZGIucHl0aG9uL3B5LXR5cGUuZXhwOiBEaXR0by4KLSsJKiBn ZGIucHl0aG9uL3B5LXZhbHVlLmV4cDogRGl0dG8uCi0rCSogZ2RiLnB5dGhvbi9weXRob24uZXhw OiBEaXR0by4KLSsKLSAyMDEwLTA5LTMwICBUb20gVHJvbWV5ICA8dHJvbWV5QHJlZGhhdC5jb20+ Ci0gCi0gCSogZ2RiLmJhc2UvYW5vbi5leHA6IE5ldyBmaWxlLgotLS0tIHNyYy9nZGIvdGVzdHN1 aXRlL2xpYi9nZGItcHl0aG9uLmV4cAotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2xpYi9nZGItcHl0 aG9uLmV4cAkyMDEwLTEwLTEyIDE3OjU4OjM1LjkwNDQ2ODAwMCArMDAwMAotQEAgLTAsMCArMSw0 NyBAQAotKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0r Ci0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg aXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91 ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0 cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhP VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsj IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0r IwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUg PGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotKwotKyMgVXRpbGl0aWVzIGZvciBweXRo b24tc2NyaXB0aW5nIHJlbGF0ZWQgdGVzdHMuCi0rCi0rIyBSdW4gYSBjb21tYW5kIGluIEdEQiwg YW5kIHJlcG9ydCBhIGZhaWx1cmUgaWYgYSBQeXRob24gZXhjZXB0aW9uIGlzIHRocm93bi4KLSsj IElmIHJlcG9ydF9wYXNzIGlzIHRydWUsIHJlcG9ydCBhIHBhc3MgaWYgbm8gZXhjZXB0aW9uIGlz IHRocm93bi4KLSsKLStwcm9jIGdkYl9weV90ZXN0X3NpbGVudF9jbWQgeyBjbWQgbmFtZSByZXBv cnRfcGFzcyB9IHsKLSsgICAgZ2xvYmFsIGdkYl9wcm9tcHQKLSsKLSsgICAgZ2RiX3Rlc3RfbXVs dGlwbGUgJGNtZCAkbmFtZSB7Ci0rCS1yZSAiVHJhY2ViYWNrLiokZ2RiX3Byb21wdCAkIiB7IGZh aWwgJG5hbWUgfQotKwktcmUgIiRnZGJfcHJvbXB0ICQiICAgICAgICAgICAgeyBpZiAkcmVwb3J0 X3Bhc3MgeyBwYXNzICRuYW1lIH0gfQotKyAgICB9Ci0rfQotKwotKyMgVXNhZ2U6IGdkYl9weV90 ZXN0X211bHRpcGxlIE5BTUUgSU5QVVQgUkVTVUxUIHtJTlBVVCBSRVNVTFR9Li4uCi0rIyBSdW4g YSB0ZXN0IG5hbWVkIE5BTUUsIGNvbnNpc3Rpbmcgb2YgbXVsdGlwbGUgbGluZXMgb2YgaW5wdXQu Ci0rIyBBZnRlciBlYWNoIGlucHV0IGxpbmUgSU5QVVQsIHNlYXJjaCBmb3IgcmVzdWx0IGxpbmUg UkVTVUxULgotKyMgU3VjY2VlZCBpZiBhbGwgcmVzdWx0cyBhcmUgc2VlbjsgZmFpbCBvdGhlcndp c2UuCi0rCi0rcHJvYyBnZGJfcHlfdGVzdF9tdWx0aXBsZSB7IG5hbWUgYXJncyB9IHsKLSsgICAg Z2xvYmFsIGdkYl9wcm9tcHQKLSsgICAgZm9yZWFjaCB7aW5wdXQgcmVzdWx0fSAkYXJncyB7Ci0r CWlmIHtbZ2RiX3Rlc3RfbXVsdGlwbGUgJGlucHV0ICIkbmFtZSAtICRpbnB1dCIgewotKwkgICAg LXJlICJcW1xyXG5cXSooJHJlc3VsdClcW1xyXG5cXSsoJGdkYl9wcm9tcHQgfCAqPikkIiB7Ci0r CQlwYXNzICIkbmFtZSAtICRpbnB1dCIKLSsJICAgIH0KLSsJfV19IHsKLSsJICAgIHJldHVybiAx Ci0rCX0KLSsgICAgfQotKyAgICByZXR1cm4gMAotK30KCmRpZmYgLS1naXQgYS9nZGItdXBzdHJl YW0ucGF0Y2ggYi9nZGItdXBzdHJlYW0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGFkM2QxMGMuLjAwMDAwMDAKLS0tIGEvZ2RiLXVwc3RyZWFtLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsNDY3ICswLDAgQEAKLWh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1 Zy5jZ2k/aWQ9NjEwOTg2Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDEwLTA4 L21zZzAwMTEyLmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTggMjI6NTc6 NDUJMS4xMjA5NwotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTAvMDgvMTkgMDc6MzQ6MjYJMS4x MjA5OAotIyMgLTEsMyArMSw5IEBACi0rMjAxMC0wOC0xOSAgSmFuIEtyYXRvY2h2aWwgIDxqYW4u a3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIHZhcm9iai5jICh2YXJvYmpfY3JlYXRlKTog UmVwbGFjZSB2YXJpYWJsZSBvbGRfZmkgd2l0aCBvbGRfaWQsCi0rCWluaXRpYWxpemUgaXQgYnkg bnVsbF9mcmFtZV9pZCwgd3JhcCBpdHMgdXNhZ2UgYnkgZ2V0X2ZyYW1lX2lkLAotKwlmcmFtZV9p ZF9wIGFuZCBmcmFtZV9maW5kX2J5X2lkLgotKwotIDIwMTAtMDgtMTggIFRvbSBUcm9tZXkgIDx0 cm9tZXlAcmVkaGF0LmNvbT4KLSAKLSAJUFIgcHl0aG9uLzExOTAwOgotLS0tIHNyYy9nZGIvdmFy b2JqLmMJMjAxMC8wOC8wNiAxNDoxNzo1NgkxLjE1OQotKysrIHNyYy9nZGIvdmFyb2JqLmMJMjAx MC8wOC8xOSAwNzozNDoyNwkxLjE2MAotQEAgLTUyNCw3ICs1MjQsNyBAQCB2YXJvYmpfY3JlYXRl IChjaGFyICpvYmpuYW1lLAotIHsKLSAgIHN0cnVjdCB2YXJvYmogKnZhcjsKLSAgIHN0cnVjdCBm cmFtZV9pbmZvICpmaTsKLS0gIHN0cnVjdCBmcmFtZV9pbmZvICpvbGRfZmkgPSBOVUxMOwotKyAg c3RydWN0IGZyYW1lX2lkIG9sZF9pZCA9IG51bGxfZnJhbWVfaWQ7Ci0gICBzdHJ1Y3QgYmxvY2sg KmJsb2NrOwotICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKLSAKLUBAIC02MTEsNyArNjEx LDcgQEAKLSAKLSAJICB2YXItPnJvb3QtPmZyYW1lID0gZ2V0X2ZyYW1lX2lkIChmaSk7Ci0gCSAg dmFyLT5yb290LT50aHJlYWRfaWQgPSBwaWRfdG9fdGhyZWFkX2lkIChpbmZlcmlvcl9wdGlkKTsK LS0JICBvbGRfZmkgPSBnZXRfc2VsZWN0ZWRfZnJhbWUgKE5VTEwpOwotKwkgIG9sZF9pZCA9IGdl dF9mcmFtZV9pZCAoZ2V0X3NlbGVjdGVkX2ZyYW1lIChOVUxMKSk7Ci0gCSAgc2VsZWN0X2ZyYW1l IChmaSk7CSAKLSAJfQotIAotQEAgLTYzOSw4ICs2MzksOCBAQAotICAgICAgIHZhci0+cm9vdC0+ cm9vdHZhciA9IHZhcjsKLSAKLSAgICAgICAvKiBSZXNldCB0aGUgc2VsZWN0ZWQgZnJhbWUgKi8K LS0gICAgICBpZiAob2xkX2ZpICE9IE5VTEwpCi0tCXNlbGVjdF9mcmFtZSAob2xkX2ZpKTsKLSsg ICAgICBpZiAoZnJhbWVfaWRfcCAob2xkX2lkKSkKLSsJc2VsZWN0X2ZyYW1lIChmcmFtZV9maW5k X2J5X2lkIChvbGRfaWQpKTsKLSAgICAgfQotIAotICAgLyogSWYgdGhlIHZhcmlhYmxlIG9iamVj dCBuYW1lIGlzIG51bGwsIHRoYXQgbWVhbnMgdGhpcwotCi0KLQotaHR0cHM6Ly9idWd6aWxsYS5y ZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYKLVJlOiBbcGF0Y2hdIEZpeCBuZXN0aW5n IG9mIHVpX291dF9yZWRpcmVjdAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVz LzIwMTAtMDkvbXNnMDAxMjIuaHRtbAotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMv MjAxMC0wOS9tc2cwMDAzMS5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzAz IDAxOjI5OjA5CTEuMTIxNDkKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzAzIDE1OjQx OjU5CTEuMTIxNTAKLSMjIC0xLDMgKzEsMjcgQEAKLSsyMDEwLTA5LTAzICBKYW4gS3JhdG9jaHZp bCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0rCi0rCSogYnJlYWtwb2ludC5jIChzYXZl X2JyZWFrcG9pbnRzKTogVXNlIFJFVFVSTl9NQVNLX0FMTC4KLSsJKiBjbGktb3V0LmM6IEluY2x1 ZGUgdmVjLmguCi0rCShjbGlfZmllbGRfZm10LCBjbGlfc3BhY2VzLCBjbGlfdGV4dCwgY2xpX21l c3NhZ2UsIGNsaV9mbHVzaCk6IE5ldwotKwl2YXJpYWJsZSBzdHJlYW0sIGluaXRpYWxpemUgaXQs IHVzZSBpdC4KLSsJKGNsaV9yZWRpcmVjdCk6IE5ldyBmdW5jdGlvbiBjb21tZW50LiAgUmVwbGFj ZSB0aGUgc3RyZWFtIGFuZAotKwlvcmlnaW5hbF9zdHJlYW0gZmllbGRzIGJ5IHRoZSBuZXcgc3Ry ZWFtcyBmaWVsZC4gIFJlbW92ZSB0aGUKLSsJb3JpZ2luYWxfc3RyZWFtICE9IE5VTEwgY29uZGl0 aW9uYWwsIGFzc2VydCBlcnJvciBvbiBOVUxMIGluc3RlYWQuCi0rCShvdXRfZmllbGRfZm10LCBm aWVsZF9zZXBhcmF0b3IpOiBOZXcgdmFyaWFibGUgc3RyZWFtLCBpbml0aWFsaXplIGl0LCB1c2Ug aXQuCi0rCShjbGlfb3V0X2RhdGFfY3Rvcik6IEFzc2VydCBub24tTlVMTCBzdHJlYW0uICBSZXBs YWNlIHRoZSBzdHJlYW0gYW5kCi0rCW9yaWdpbmFsX3N0cmVhbSBmaWVsZHMgYnkgdGhlIG5ldyBz dHJlYW1zIGZpZWxkLgotKwkoY2xpX291dF9zZXRfc3RyZWFtKTogUmVwbGFjZSB0aGUgc3RyZWFt IGZpZWxkIGJ5IHRoZSBuZXcgc3RyZWFtcwotKwlmaWVsZC4KLSsJKiBjbGktb3V0Lmg6IEluY2x1 ZGUgdmVjLmguCi0rCSh1aV9maWxlcCk6IE5ldyB0eXBlZGVmLCBjYWxsIERFRl9WRUNfUCBmb3Ig aXQuCi0rCShzdHJ1Y3QgY2xpX3VpX291dF9kYXRhKTogUmVwbGFjZSB0aGUgc3RyZWFtIGFuZCBv cmlnaW5hbF9zdHJlYW0KLSsJZmllbGRzIGJ5IHRoZSBuZXcgc3RyZWFtcyBmaWVsZC4KLSsJKiBj bGkvY2xpLWxvZ2dpbmcuYyAoc2V0X2xvZ2dpbmdfcmVkaXJlY3QpOiBDYWxsIHVpX291dF9yZWRp cmVjdCB3aXRoCi0rCU5VTEwgZmlyc3QuICBFeHRlbmQgdGhlIGNvbW1lbnQuCi0rCShoYW5kbGVf cmVkaXJlY3Rpb25zKTogQ2FsbCB1aV9vdXRfcmVkaXJlY3Qgd2l0aCBvdXRwdXQuCi0rCSogcHl0 aG9uL3B5LWJyZWFrcG9pbnQuYyAoYnBweV9nZXRfY29tbWFuZHMpOiBNb3ZlIHVpX291dF9yZWRp cmVjdAotKwljYWxscyBvdXRzaWRlIG9mIHRoZSBUUllfQ0FUQ0ggYmxvY2suCi0rCi0KLVsgY2xp L2NsaS1sb2dnaW5nLmMgcmVtb3ZlZC4gIF0KLQotLS0tIHNyYy9nZGIvYnJlYWtwb2ludC5jCTIw MTAvMDgvMzAgMDk6NDk6MTIJMS41MTEKLSsrKyBzcmMvZ2RiL2JyZWFrcG9pbnQuYwkyMDEwLzA5 LzAzIDE1OjQyOjAyCTEuNTEyCi1AQCAtMTE0ODcsNyArMTE0ODcsNyBAQAotIAlmcHJpbnRmX3Vu ZmlsdGVyZWQgKGZwLCAiICBjb21tYW5kc1xuIik7Ci0gCQotIAl1aV9vdXRfcmVkaXJlY3QgKHVp b3V0LCBmcCk7Ci0tCVRSWV9DQVRDSCAoZXgsIFJFVFVSTl9NQVNLX0VSUk9SKQotKwlUUllfQ0FU Q0ggKGV4LCBSRVRVUk5fTUFTS19BTEwpCi0gCSAgewotIAkgICAgcHJpbnRfY29tbWFuZF9saW5l cyAodWlvdXQsIHRwLT5jb21tYW5kcy0+Y29tbWFuZHMsIDIpOwotIAkgIH0KLS0tLSBzcmMvZ2Ri L2NsaS1vdXQuYwkyMDEwLzA1LzEzIDIzOjUzOjMyCTEuMzAKLSsrKyBzcmMvZ2RiL2NsaS1vdXQu YwkyMDEwLzA5LzAzIDE1OjQyOjAyCTEuMzEKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUg ImNsaS1vdXQuaCIKLSAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotICNpbmNsdWRlICJnZGJfYXNz ZXJ0LmgiCi0rI2luY2x1ZGUgInZlYy5oIgotIAotIHR5cGVkZWYgc3RydWN0IGNsaV91aV9vdXRf ZGF0YSBjbGlfb3V0X2RhdGE7Ci0gCi1AQCAtMjI0LDExICsyMjUsMTMgQEAKLSAJICAgICAgIHZh X2xpc3QgYXJncykKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlv dXQpOwotKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKLSAKLSAgIGlmIChkYXRhLT5zdXBwcmVz c19vdXRwdXQpCi0gICAgIHJldHVybjsKLSAKLS0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRhLT5z dHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICBzdHJlYW0gPSBWRUNfbGFzdCAodWlfZmlsZXAsIGRh dGEtPnN0cmVhbXMpOwotKyAgdmZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgZm9ybWF0LCBhcmdz KTsKLSAKLSAgIGlmIChhbGlnbiAhPSB1aV9ub2FsaWduKQotICAgICBmaWVsZF9zZXBhcmF0b3Ig KCk7Ci1AQCAtMjM4LDIwICsyNDEsMjYgQEAKLSBjbGlfc3BhY2VzIChzdHJ1Y3QgdWlfb3V0ICp1 aW91dCwgaW50IG51bXNwYWNlcykKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRf ZGF0YSAodWlvdXQpOwotKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbTsKLSAKLSAgIGlmIChkYXRh LT5zdXBwcmVzc19vdXRwdXQpCi0gICAgIHJldHVybjsKLS0gIHByaW50X3NwYWNlc19maWx0ZXJl ZCAobnVtc3BhY2VzLCBkYXRhLT5zdHJlYW0pOwotKwotKyAgc3RyZWFtID0gVkVDX2xhc3QgKHVp X2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKLSsgIHByaW50X3NwYWNlc19maWx0ZXJlZCAobnVtc3Bh Y2VzLCBzdHJlYW0pOwotIH0KLSAKLSBzdGF0aWMgdm9pZAotIGNsaV90ZXh0IChzdHJ1Y3QgdWlf b3V0ICp1aW91dCwgY29uc3QgY2hhciAqc3RyaW5nKQotIHsKLSAgIGNsaV9vdXRfZGF0YSAqZGF0 YSA9IHVpX291dF9kYXRhICh1aW91dCk7Ci0rICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtOwotIAot ICAgaWYgKGRhdGEtPnN1cHByZXNzX291dHB1dCkKLSAgICAgcmV0dXJuOwotLSAgZnB1dHNfZmls dGVyZWQgKHN0cmluZywgZGF0YS0+c3RyZWFtKTsKLSsKLSsgIHN0cmVhbSA9IFZFQ19sYXN0ICh1 aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7Ci0rICBmcHV0c19maWx0ZXJlZCAoc3RyaW5nLCBzdHJl YW0pOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfUFJJTlRGICgzLCAwKQotQEAgLTI2 Miw4ICsyNzEsMTMgQEAKLSAKLSAgIGlmIChkYXRhLT5zdXBwcmVzc19vdXRwdXQpCi0gICAgIHJl dHVybjsKLSsKLSAgIGlmICh1aV9vdXRfZ2V0X3ZlcmJsdmwgKHVpb3V0KSA+PSB2ZXJib3NpdHkp Ci0tICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKGRhdGEtPnN0cmVhbSwgZm9ybWF0LCBhcmdzKTsK LSsgICAgewotKyAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0gPSBWRUNfbGFzdCAodWlfZmls ZXAsIGRhdGEtPnN0cmVhbXMpOwotKwotKyAgICAgIHZmcHJpbnRmX3VuZmlsdGVyZWQgKHN0cmVh bSwgZm9ybWF0LCBhcmdzKTsKLSsgICAgfQotIH0KLSAKLSBzdGF0aWMgdm9pZAotQEAgLTI4MCwy NSArMjk0LDI0IEBACi0gY2xpX2ZsdXNoIChzdHJ1Y3QgdWlfb3V0ICp1aW91dCkKLSB7Ci0gICBj bGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOwotKyAgc3RydWN0IHVpX2Zp bGUgKnN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcyk7Ci0gCi0tICBn ZGJfZmx1c2ggKGRhdGEtPnN0cmVhbSk7Ci0rICBnZGJfZmx1c2ggKHN0cmVhbSk7Ci0gfQotIAot Ky8qIE9VVFNUUkVBTSBhcyBub24tTlVMTCB3aWxsIHB1c2ggT1VUU1RSRUFNIG9uIHRoZSBzdGFj ayBvZiBvdXRwdXQgc3RyZWFtcwotKyAgIGFuZCBtYWtlIGl0IHRoZXJlZm9yZSBhY3RpdmUuICBP VVRTVFJFQU0gYXMgTlVMTCB3aWxsIHBvcCB0aGUgbGFzdCBwdXNoZWQKLSsgICBvdXRwdXQgc3Ry ZWFtOyBpdCBpcyBhbiBpbnRlcm5hbCBlcnJvciBpZiBpdCBkb2VzIG5vdCBleGlzdC4gICovCi0r Ci0gc3RhdGljIGludAotIGNsaV9yZWRpcmVjdCAoc3RydWN0IHVpX291dCAqdWlvdXQsIHN0cnVj dCB1aV9maWxlICpvdXRzdHJlYW0pCi0gewotICAgY2xpX291dF9kYXRhICpkYXRhID0gdWlfb3V0 X2RhdGEgKHVpb3V0KTsKLSAKLSAgIGlmIChvdXRzdHJlYW0gIT0gTlVMTCkKLS0gICAgewotLSAg ICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IGRhdGEtPnN0cmVhbTsKLS0gICAgICBkYXRhLT5z dHJlYW0gPSBvdXRzdHJlYW07Ci0tICAgIH0KLS0gIGVsc2UgaWYgKGRhdGEtPm9yaWdpbmFsX3N0 cmVhbSAhPSBOVUxMKQotLSAgICB7Ci0tICAgICAgZGF0YS0+c3RyZWFtID0gZGF0YS0+b3JpZ2lu YWxfc3RyZWFtOwotLSAgICAgIGRhdGEtPm9yaWdpbmFsX3N0cmVhbSA9IE5VTEw7Ci0tICAgIH0K LSsgICAgVkVDX3NhZmVfcHVzaCAodWlfZmlsZXAsIGRhdGEtPnN0cmVhbXMsIG91dHN0cmVhbSk7 Ci0rICBlbHNlCi0rICAgIFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKLSAKLSAg IHJldHVybiAwOwotIH0KLUBAIC0zMTUsMTAgKzMyOCwxMSBAQAotIAkgICAgICAgY29uc3QgY2hh ciAqZm9ybWF0LC4uLikKLSB7Ci0gICBjbGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAo dWlvdXQpOwotKyAgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSA9IFZFQ19sYXN0ICh1aV9maWxlcCwg ZGF0YS0+c3RyZWFtcyk7Ci0gICB2YV9saXN0IGFyZ3M7Ci0gCi0gICB2YV9zdGFydCAoYXJncywg Zm9ybWF0KTsKLS0gIHZmcHJpbnRmX2ZpbHRlcmVkIChkYXRhLT5zdHJlYW0sIGZvcm1hdCwgYXJn cyk7Ci0rICB2ZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotIAotICAg dmFfZW5kIChhcmdzKTsKLSB9Ci1AQCAtMzI5LDggKzM0Myw5IEBACi0gZmllbGRfc2VwYXJhdG9y ICh2b2lkKQotIHsKLSAgIGNsaV9vdXRfZGF0YSAqZGF0YSA9IHVpX291dF9kYXRhICh1aW91dCk7 Ci0rICBzdHJ1Y3QgdWlfZmlsZSAqc3RyZWFtID0gVkVDX2xhc3QgKHVpX2ZpbGVwLCBkYXRhLT5z dHJlYW1zKTsKLSAKLS0gIGZwdXRjX2ZpbHRlcmVkICgnICcsIGRhdGEtPnN0cmVhbSk7Ci0rICBm cHV0Y19maWx0ZXJlZCAoJyAnLCBzdHJlYW0pOwotIH0KLSAKLSAvKiBUaGlzIGlzIHRoZSBDTEkg dWktb3V0IGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucyB2ZWN0b3IgKi8KLUBAIC0zNjQsOCArMzc5 LDExIEBACi0gdm9pZAotIGNsaV9vdXRfZGF0YV9jdG9yIChjbGlfb3V0X2RhdGEgKnNlbGYsIHN0 cnVjdCB1aV9maWxlICpzdHJlYW0pCi0gewotLSAgc2VsZi0+c3RyZWFtID0gc3RyZWFtOwotLSAg c2VsZi0+b3JpZ2luYWxfc3RyZWFtID0gTlVMTDsKLSsgIGdkYl9hc3NlcnQgKHN0cmVhbSAhPSBO VUxMKTsKLSsKLSsgIHNlbGYtPnN0cmVhbXMgPSBOVUxMOwotKyAgVkVDX3NhZmVfcHVzaCAodWlf ZmlsZXAsIHNlbGYtPnN0cmVhbXMsIHN0cmVhbSk7Ci0rCi0gICBzZWxmLT5zdXBwcmVzc19vdXRw dXQgPSAwOwotIH0KLSAKLUBAIC0zODUsOCArNDAzLDEwIEBACi0gY2xpX291dF9zZXRfc3RyZWFt IChzdHJ1Y3QgdWlfb3V0ICp1aW91dCwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSkKLSB7Ci0gICBj bGlfb3V0X2RhdGEgKmRhdGEgPSB1aV9vdXRfZGF0YSAodWlvdXQpOwotLSAgc3RydWN0IHVpX2Zp bGUgKm9sZCA9IGRhdGEtPnN0cmVhbTsKLSsgIHN0cnVjdCB1aV9maWxlICpvbGQ7Ci0rICAKLSsg IG9sZCA9IFZFQ19wb3AgKHVpX2ZpbGVwLCBkYXRhLT5zdHJlYW1zKTsKLSsgIFZFQ19xdWlja19w dXNoICh1aV9maWxlcCwgZGF0YS0+c3RyZWFtcywgc3RyZWFtKTsKLSAKLS0gIGRhdGEtPnN0cmVh bSA9IHN0cmVhbTsKLSAgIHJldHVybiBvbGQ7Ci0gfQotLS0tIHNyYy9nZGIvY2xpLW91dC5oCTIw MTAvMDQvMTggMDA6MTE6NTUJMS4xMQotKysrIHNyYy9nZGIvY2xpLW91dC5oCTIwMTAvMDkvMDMg MTU6NDI6MDIJMS4xMgotQEAgLTIyLDE0ICsyMiwxOSBAQAotICNkZWZpbmUgQ0xJX09VVF9ICi0g Ci0gI2luY2x1ZGUgInVpLW91dC5oIgotKyNpbmNsdWRlICJ2ZWMuaCIKLSsKLSsvKiBVc2VkIGZv ciBjbGlfdWlfb3V0X2RhdGEtPnN0cmVhbXMuICAqLwotKwotK3R5cGVkZWYgc3RydWN0IHVpX2Zp bGUgKnVpX2ZpbGVwOwotK0RFRl9WRUNfUCAodWlfZmlsZXApOwotIAotIC8qIFRoZXNlIGFyZSBl eHBvcnRlZCBzbyB0aGF0IHRoZXkgY2FuIGJlIGV4dGVuZGVkIGJ5IG90aGVyIGB1aV9vdXQnCi0g ICAgaW1wbGVtZW50YXRpb25zLCBsaWtlIFRVSSdzLiAgKi8KLSAKLSBzdHJ1Y3QgY2xpX3VpX291 dF9kYXRhCi0gICB7Ci0tICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW07Ci0tICAgIHN0cnVjdCB1 aV9maWxlICpvcmlnaW5hbF9zdHJlYW07Ci0rICAgIFZFQyAodWlfZmlsZXApICpzdHJlYW1zOwot ICAgICBpbnQgc3VwcHJlc3Nfb3V0cHV0OwotICAgfTsKLSAKLS0tLSBzcmMvZ2RiL3B5dGhvbi9w eS1icmVha3BvaW50LmMJMjAxMC8wNy8wMSAxMDozNjoxMgkxLjQKLSsrKyBzcmMvZ2RiL3B5dGhv bi9weS1icmVha3BvaW50LmMJMjAxMC8wOS8wMyAxNTo0MjowMwkxLjUKLUBAIC00NzQsMTIgKzQ3 NCwxMiBAQAotICAgc3RyaW5nX2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7Ci0gICBjaGFpbiA9IG1h a2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RyaW5nX2ZpbGUpOwotIAotKyAgdWlfb3V0X3Jl ZGlyZWN0ICh1aW91dCwgc3RyaW5nX2ZpbGUpOwotICAgVFJZX0NBVENIIChleGNlcHQsIFJFVFVS Tl9NQVNLX0FMTCkKLSAgICAgewotLSAgICAgIHVpX291dF9yZWRpcmVjdCAodWlvdXQsIHN0cmlu Z19maWxlKTsKLSAgICAgICBwcmludF9jb21tYW5kX2xpbmVzICh1aW91dCwgYnJlYWtwb2ludF9j b21tYW5kcyAoYnApLCAwKTsKLS0gICAgICB1aV9vdXRfcmVkaXJlY3QgKHVpb3V0LCBOVUxMKTsK LSAgICAgfQotKyAgdWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCk7Ci0gICBjbWRzdHIgPSB1 aV9maWxlX3hzdHJkdXAgKHN0cmluZ19maWxlLCAmbGVuZ3RoKTsKLSAgIEdEQl9QWV9IQU5ETEVf RVhDRVBUSU9OIChleGNlcHQpOwotIAotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwky MDEwLzA5LzAyIDE1OjE5OjU2CTEuMjQzNQotIyMjIHNyYy9nZGIvdGVzdHN1aXRlL0NoYW5nZUxv ZwkyMDEwLzA5LzAzIDE1OjQyOjA0CTEuMjQzNgotIyMgLTEsMyArMSw3IEBACi0rMjAxMC0wOS0w MyAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotKwotKwkqIGdk Yi5iYXNlL3VpLXJlZGlyZWN0LmV4cDogTmV3IGZpbGUuCi0rCi0gMjAxMC0wOS0wMiAgSmFuIEty YXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotICAgICAgICAgICAgIEpvZWwg QnJvYmVja2VyICA8YnJvYmVja2VyQGFkYWNvcmUuY29tPgotIAotLS0tIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5iYXNlL3VpLXJlZGlyZWN0LmV4cAotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL3VpLXJlZGlyZWN0LmV4cAkyMDEwLTA5LTExIDE4OjQyOjQwLjA0MDkxMDAwMCArMDAwMAot QEAgLTAsMCArMSw0MSBAQAotKyMgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91 bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBv ZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNl LCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlz IHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1 bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk IHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig bW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3Jh bS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStpZiB7 IFtwcmVwYXJlX2Zvcl90ZXN0aW5nIHVpLXJlZGlyZWN0LmV4cCB1aS1yZWRpcmVjdCBzdGFydC5j XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl9icmVha3BvaW50IG1haW4KLSsKLStz ZXQgdGVzdCAiY29tbWFuZHMiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgJHRlc3QgJHRlc3QgewotKyAg ICAtcmUgIkVuZCB3aXRoIGEgbGluZSBzYXlpbmcganVzdCBcImVuZFwiXFwuXHJcbj4kIiB7Ci0r CXBhc3MgJHRlc3QKLSsgICAgfQotK30KLSsKLStzZXQgdGVzdCAicHJpbnQgMSIKLStnZGJfdGVz dF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7Ci0rICAgIC1yZSAiXHJcbj4kIiB7Ci0rCXBhc3MgJHRl c3QKLSsgICAgfQotK30KLStnZGJfdGVzdF9ub19vdXRwdXQgImVuZCIKLSsKLStnZGJfdGVzdF9u b19vdXRwdXQgInNldCBsb2dnaW5nIGZpbGUgL2Rldi9udWxsIgotK2dkYl90ZXN0ICJzZXQgbG9n Z2luZyBvbiIgIkNvcHlpbmcgb3V0cHV0IHRvIC9kZXYvbnVsbFxcLiIKLStnZGJfdGVzdCAic2F2 ZSBicmVha3BvaW50cyAvZGV2L251bGwiICJTYXZlZCB0byBmaWxlICcvZGV2L251bGwnXFwuIgot K2dkYl90ZXN0ICJzZXQgbG9nZ2luZyBvZmYiICJEb25lIGxvZ2dpbmcgdG8gL2Rldi9udWxsXFwu IgotK2dkYl90ZXN0ICJoZWxwIiAiTGlzdCBvZiBjbGFzc2VzIG9mIGNvbW1hbmRzOi4qIgotCi0K LQotaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD02Mjc1MDYKLVJl OiBbcGF0Y2hdIEZpeCB1aW91dCBmb3IgZXhlY3V0ZV9jb21tYW5kX3RvX3N0cmluZwotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTAtMDkvbXNnMDAyMzUuaHRtbAotaHR0 cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1jdnMvMjAxMC0wOS9tc2cwMDA4MC5odG1sCi0KLSMj IyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDEwLzA5LzEwIDE2OjE3OjExCTEuMTIxNzAKLSMjIyBzcmMv Z2RiL0NoYW5nZUxvZwkyMDEwLzA5LzExIDE2OjAwOjIwCTEuMTIxNzEKLSMjIC0xLDMgKzEsMjEg QEAKLSsyMDEwLTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5j b20+Ci0rCSAgICBQYXVsIEJvbGxlICA8cGVib2xsZUB0aXNjYWxpLm5sPgotKwotKwlSZWRpcmVj dCBhbHNvIHVpb3V0IGFuZCBzdGR0YXJneyxlcnJ9IGluIGV4ZWN1dGVfY29tbWFuZF90b19zdHJp bmcuCi0rCSogY2xpLWxvZ2dpbmcuYyAoc3RydWN0IHNhdmVkX291dHB1dF9maWxlcykgPHRhcmdl cnI+OiBOZXcuCi0rCShzZXRfbG9nZ2luZ19yZWRpcmVjdCwgcG9wX291dHB1dF9maWxlcywgaGFu ZGxlX3JlZGlyZWN0aW9ucyk6Ci0rCVJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRhcmdlcnIuCi0rCSog ZGVmcy5oIChzdHJ1Y3QgdWlfb3V0LCBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCk6 IE5ldwotKwlkZWNsYXJhdGlvbnMuCi0rCSogZXZlbnQtdG9wLmMgKGdkYl9zZXR1cF9yZWFkbGlu ZSwgZ2RiX2Rpc2FibGVfcmVhZGxpbmUpOiBSZWRpcmVjdAotKwlhbHNvIGdkYl9zdGR0YXJnZXJy LgotKwkqIHRvcC5jIChleGVjdXRlX2NvbW1hbmRfdG9fc3RyaW5nKTogTW92ZSBtYWtlX2NsZWFu dXBfdWlfZmlsZV9kZWxldGUKLSsJdG8gdGhlIHRvcC4gIFJlZGlyZWN0IGFsc28gZ2RiX3N0ZGxv ZywgZ2RiX3N0ZHRhcmcgYW5kIGdkYl9zdGR0YXJnZXJyLgotKwlVc2UgdWlfb3V0X3JlZGlyZWN0 LCByZWdpc3RlciBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcC4KLSsJKiB0dWkvdHVp LWlvLmMgKHR1aV9zZXR1cF9pbyk6IFJlZGlyZWN0IGFsc28gZ2RiX3N0ZHRhcmdlcnIuCi0rCSog dXRpbHMuYyAoZG9fdWlfb3V0X3JlZGlyZWN0X3BvcCwgbWFrZV9jbGVhbnVwX3VpX291dF9yZWRp cmVjdF9wb3ApOgotKwlOZXcgZnVuY3Rpb25zLgotKwotCi0jIyMgc3JjL2dkYi90ZXN0c3VpdGUv Q2hhbmdlTG9nCTIwMTAvMDkvMTAgMjA6Mjk6MjUJMS4yNDQ0Ci0jIyMgc3JjL2dkYi90ZXN0c3Vp dGUvQ2hhbmdlTG9nCTIwMTAvMDkvMTEgMTY6MDA6MjYJMS4yNDQ1Ci0jIyAtMSwzICsxLDggQEAK LSsyMDEwLTA5LTExICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+ Ci0rCi0rCSogZ2RiLnB5dGhvbi9weXRob24uZXhwIChzZXQgaGVpZ2h0IDAsIGNvbGxlY3QgaGVs cCBmcm9tIHVpb3V0KQotKwkodmVyaWZ5IGhlbHAgdG8gdWlvdXQpOiBOZXcgdGVzdHMuCi0rCi0K LVsgZ2RiX3N0ZHRhcmdlcnIgaGFuZGxpbmcgZHJvcHBlZC4gIF0KLQotLS0tIHNyYy9nZGIvZGVm cy5oCTIwMTAvMDgvMzEgMTg6MDg6NDMJMS4yNzgKLSsrKyBzcmMvZ2RiL2RlZnMuaAkyMDEwLzA5 LzExIDE2OjAwOjI1CTEuMjc5Ci1AQCAtMzM3LDYgKzMzNywxMCBAQAotIHN0cnVjdCB1aV9maWxl OwotIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3VpX2ZpbGVfZGVsZXRlIChz dHJ1Y3QgdWlfZmlsZSAqKTsKLSAKLStzdHJ1Y3QgdWlfb3V0OwotK2V4dGVybiBzdHJ1Y3QgY2xl YW51cCAqCi0rICBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGlyZWN0X3BvcCAoc3RydWN0IHVpX291 dCAqdWlvdXQpOwotKwotIHN0cnVjdCBzZWN0aW9uX2FkZHJfaW5mbzsKLSBleHRlcm4gc3RydWN0 IGNsZWFudXAgKihtYWtlX2NsZWFudXBfZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAKLSAgICAgICAg ICAgICAgICAgICAgICAgICAoc3RydWN0IHNlY3Rpb25fYWRkcl9pbmZvICopKTsKLS0tLSBzcmMv Z2RiL3RvcC5jCTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4xODMKLSsrKyBzcmMvZ2RiL3RvcC5jCTIw MTAvMDkvMTEgMTY6MDA6MjUJMS4xODQKLUBAIC00NzUsMTIgKzQ3NSwyMyBAQAotIAotICAgc3Ry X2ZpbGUgPSBtZW1fZmlsZW9wZW4gKCk7Ci0gCi0rICBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxl dGUgKHN0cl9maWxlKTsKLSAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3Rk b3V0KTsKLSAgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUgKCZnZGJfc3RkZXJyKTsKLS0g IG1ha2VfY2xlYW51cF91aV9maWxlX2RlbGV0ZSAoc3RyX2ZpbGUpOwotKyAgbWFrZV9jbGVhbnVw X3Jlc3RvcmVfdWlfZmlsZSAoJmdkYl9zdGRsb2cpOwotKyAgbWFrZV9jbGVhbnVwX3Jlc3RvcmVf dWlfZmlsZSAoJmdkYl9zdGR0YXJnKTsKLSsgIG1ha2VfY2xlYW51cF9yZXN0b3JlX3VpX2ZpbGUg KCZnZGJfc3RkdGFyZ2Vycik7Ci0rCi0rICBpZiAodWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgc3Ry X2ZpbGUpIDwgMCkKLSsgICAgd2FybmluZyAoXygiQ3VycmVudCBvdXRwdXQgcHJvdG9jb2wgZG9l cyBub3Qgc3VwcG9ydCByZWRpcmVjdGlvbiIpKTsKLSsgIGVsc2UKLSsgICAgbWFrZV9jbGVhbnVw X3VpX291dF9yZWRpcmVjdF9wb3AgKHVpb3V0KTsKLSAKLSAgIGdkYl9zdGRvdXQgPSBzdHJfZmls ZTsKLSAgIGdkYl9zdGRlcnIgPSBzdHJfZmlsZTsKLSsgIGdkYl9zdGRsb2cgPSBzdHJfZmlsZTsK LSsgIGdkYl9zdGR0YXJnID0gc3RyX2ZpbGU7Ci0rICBnZGJfc3RkdGFyZ2VyciA9IHN0cl9maWxl OwotIAotICAgZXhlY3V0ZV9jb21tYW5kIChwLCBmcm9tX3R0eSk7Ci0gCi0tLS0gc3JjL2dkYi91 dGlscy5jCTIwMTAvMDgvMDcgMTU6MDA6MzcJMS4yMzkKLSsrKyBzcmMvZ2RiL3V0aWxzLmMJMjAx MC8wOS8xMSAxNjowMDoyNQkxLjI0MAotQEAgLTMxMSw2ICszMTEsMjYgQEAKLSAgIHJldHVybiBt YWtlX215X2NsZWFudXAgKCZjbGVhbnVwX2NoYWluLCBkb191aV9maWxlX2RlbGV0ZSwgYXJnKTsK LSB9Ci0gCi0rLyogSGVscGVyIGZ1bmN0aW9uIGZvciBtYWtlX2NsZWFudXBfdWlfb3V0X3JlZGly ZWN0X3BvcC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStkb191aV9vdXRfcmVkaXJlY3RfcG9wICh2 b2lkICphcmcpCi0rewotKyAgc3RydWN0IHVpX291dCAqdWlvdXQgPSBhcmc7Ci0rCi0rICBpZiAo dWlfb3V0X3JlZGlyZWN0ICh1aW91dCwgTlVMTCkgPCAwKQotKyAgICB3YXJuaW5nIChfKCJDYW5u b3QgcmVzdG9yZSByZWRpcmVjdGlvbiBvZiB0aGUgY3VycmVudCBvdXRwdXQgcHJvdG9jb2wiKSk7 Ci0rfQotKwotKy8qIFJldHVybiBhIG5ldyBjbGVhbnVwIHRoYXQgcG9wcyB0aGUgbGFzdCByZWRp cmVjdGlvbiBieSB1aV9vdXRfcmVkaXJlY3QKLSsgICB3aXRoIE5VTEwgcGFyYW1ldGVyLiAgKi8K LSsKLStzdHJ1Y3QgY2xlYW51cCAqCi0rbWFrZV9jbGVhbnVwX3VpX291dF9yZWRpcmVjdF9wb3Ag KHN0cnVjdCB1aV9vdXQgKnVpb3V0KQotK3sKLSsgIHJldHVybiBtYWtlX215X2NsZWFudXAgKCZj bGVhbnVwX2NoYWluLCBkb191aV9vdXRfcmVkaXJlY3RfcG9wLCB1aW91dCk7Ci0rfQotKwotIHN0 YXRpYyB2b2lkCi0gZG9fZnJlZV9zZWN0aW9uX2FkZHJfaW5mbyAodm9pZCAqYXJnKQotIHsKLS0t LSBnZGItNy4yL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weXRob24uZXhwLW9yaWcJMjAxMC0w OC0wOSAyMToyMzowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yL2dkYi90ZXN0c3VpdGUv Z2RiLnB5dGhvbi9weXRob24uZXhwCTIwMTAtMDktMTEgMjA6NDk6MjIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMTEwLDMgKzExMCw5IEBAIGdkYl90ZXN0X211bHRpcGxlICJweXRob24gcHJpbnQgXCJc XG5cIiAKLSAgICAgfQotIH0KLSBnZGJfdGVzdCAicSIgIlF1aXQiICJ2ZXJpZnkgcGFnaW5hdGlv biBhZnRlcndhcmRzOiBxIgotKwotK2dkYl90ZXN0X25vX291dHB1dCAic2V0IGhlaWdodCAwIgot KwotK2dkYl90ZXN0X25vX291dHB1dCAicHl0aG9uIGEgPSBnZGIuZXhlY3V0ZSgnaGVscCcsIHRv X3N0cmluZz1UcnVlKSIgImNvbGxlY3QgaGVscCBmcm9tIHVpb3V0IgotKwotK2dkYl90ZXN0ICJw eXRob24gcHJpbnQgYSIgIi4qYWxpYXNlcyAtLSBBbGlhc2VzIG9mIG90aGVyIGNvbW1hbmRzLioi ICJ2ZXJpZnkgaGVscCB0byB1aW91dCIKCmRpZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVj CmluZGV4IGE3MDkxMjAuLmM4MmU3NTIgMTAwNjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5z cGVjCkBAIC0yMywxOCArMjMsMTkgQEAgTmFtZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQog IyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBvZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhl IEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJlcmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMs IGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFudWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWls eSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIwMDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20g bWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEyIChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCku Ci1WZXJzaW9uOiA3LjIKK1ZlcnNpb246IDcuMi41MC4yMDEwMTExNwogCiAjIFRoZSByZWxlYXNl IGFsd2F5cyBjb250YWlucyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAx LgogIyBgdXBzdHJlYW0nIGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBt IGRlcGVuZGVuY2llcyBjb21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDI1JXs/ X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFtfSV7ZGlzdH0KK1JlbGVhc2U6IDElez9fd2l0aF91cHN0 cmVhbToudXBzdHJlYW19JXtkaXN0fQogCiBMaWNlbnNlOiBHUEx2MysgYW5kIEdQTHYzKyB3aXRo IGV4Y2VwdGlvbnMgYW5kIEdQTHYyKyBhbmQgR1BMdjIrIHdpdGggZXhjZXB0aW9ucyBhbmQgR1BM KyBhbmQgTEdQTHYyKyBhbmQgR0ZETCBhbmQgQlNEIGFuZCBQdWJsaWMgRG9tYWluCiBHcm91cDog RGV2ZWxvcG1lbnQvRGVidWdnZXJzCiAjIERvIG5vdCBwcm92aWRlIFVSTCBmb3Igc25hcHNob3Rz IGFzIHRoZSBmaWxlIGxhc3RzIHRoZXJlIG9ubHkgZm9yIDIgZGF5cy4KKyMgZnRwOi8vc291cmNl d2FyZS5vcmcvcHViL2dkYi9zbmFwc2hvdHMvY3VycmVudC9nZGItJXt2ZXJzaW9ufS50YXIuYnoy CiAjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvc25hcHNob3RzL2JyYW5jaC9nZGItJXt2 ZXJzaW9ufS50YXIuYnoyCiAjIGZ0cDovL3NvdXJjZXdhcmUub3JnL3B1Yi9nZGIvcmVsZWFzZXMv Z2RiLSV7dmVyc2lvbn0udGFyLmJ6MgotU291cmNlOiBmdHA6Ly9zb3VyY2V3YXJlLm9yZy9wdWIv Z2RiL3NuYXBzaG90cy9icmFuY2gvZ2RiLSV7dmVyc2lvbn0udGFyLmJ6MgorU291cmNlOiBmdHA6 Ly9zb3VyY2V3YXJlLm9yZy9wdWIvZ2RiL3NuYXBzaG90cy9jdXJyZW50L2dkYi0le3ZlcnNpb259 LnRhci5iejIKIEJ1aWxkcm9vdDogJShta3RlbXAgLXVkICV7X3RtcHBhdGh9LyV7bmFtZX0tJXt2 ZXJzaW9ufS0le3JlbGVhc2V9LVhYWFhYWCkKIFVSTDogaHR0cDovL2dudS5vcmcvc29mdHdhcmUv Z2RiLwogCkBAIC0yNzYsOCArMjc3LDggQEAgUGF0Y2gyMjk6IGdkYi02LjMtYnoxNDA1MzItcHBj LXVud2luZGluZy10ZXN0LnBhdGNoCiBQYXRjaDIzMTogZ2RiLTYuMy1iejIwMjY4OS1leGVjLWZy b20tcHRocmVhZC10ZXN0LnBhdGNoCiAKICMgQmFja3BvcnRlZCBmaXh1cHMgcG9zdCB0aGUgc291 cmNlIHRhcmJhbGwuCi0jPWRyb3A6IEp1c3QgYmFja3BvcnRzLgotUGF0Y2gyMzI6IGdkYi11cHN0 cmVhbS5wYXRjaAorI1hkcm9wOiBKdXN0IGJhY2twb3J0cy4KKyNQYXRjaDIzMjogZ2RiLXVwc3Ry ZWFtLnBhdGNoCiAKICMgVGVzdGNhc2UgZm9yIFBQQyBQb3dlcjYvREZQIGluc3RydWN0aW9ucyBk aXNhc3NlbWJseSAoQlogMjMwMDAwKS4KICM9ZmVkb3JhdGVzdCtwcGMKQEAgLTI5MSwxMCArMjky LDYgQEAgUGF0Y2gyMzU6IGdkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKICM9cHVz aAogUGF0Y2gyNDE6IGdkYi02LjYtYnoyMjU3ODMtZ2RiLWRlYnVnaW5mby1wYXRocy5wYXRjaAog Ci0jIEFsbG93IHJ1bm5pbmcgYC91c3IvYmluL2djb3JlJyB3aXRoIHByb3ZpZGVkIGJ1dCBpbmFj Y2Vzc2libGUgdHR5IChCWiAyMjk1MTcpLgotIz1mZWRvcmF0ZXN0OiBEcm9wIHRoZSBvYnNvbGV0 ZWQgZ2RiX2djb3JlLnNoIGNoYW5nZS4KLVBhdGNoMjQ1OiBnZGItNi42LWJ6MjI5NTE3LWdjb3Jl LXdpdGhvdXQtdGVybWluYWwucGF0Y2gKLQogIyBOb3RpZnkgdXNlciBvZiBhIGNoaWxkIGZvcmtl ZCBwcm9jZXNzIGJlaW5nIGRldGFjaGVkIChCWiAyMzUxOTcpLgogIz1wdXNoOiBUaGlzIGlzIG1v cmUgYWJvdXQgZGlzY3Vzc2lvbiBpZi93aGF0IHNob3VsZCBiZSBwcmludGVkLgogUGF0Y2gyNDc6 IGdkYi02LjYtYnoyMzUxOTctZm9yay1kZXRhY2gtaW5mby5wYXRjaApAQCAtMzU3LDggKzM1NCw2 IEBAIFBhdGNoMjg5OiBnZGItNi41LWlhNjQtbGlidW53aW5kLWxlYWstdGVzdC5wYXRjaAogUGF0 Y2gyOTA6IGdkYi02LjUtbWlzc2VkLXRyYXAtb24tc3RlcC10ZXN0LnBhdGNoCiAKICMgU3VwcG9y dCBEV19UQUdfaW50ZXJmYWNlX3R5cGUgdGhlIHNhbWUgd2F5IGFzIERXX1RBR19jbGFzc190eXBl IChCWiA0MjY2MDApLgotIz1tYXliZXB1c2gKLVBhdGNoMjkzOiBnZGItNi43LWJ6NDI2NjAwLURX X1RBR19pbnRlcmZhY2VfdHlwZS1maXgucGF0Y2gKICM9ZmVkb3JhdGVzdAogUGF0Y2gyOTQ6IGdk Yi02LjctYno0MjY2MDAtRFdfVEFHX2ludGVyZmFjZV90eXBlLXRlc3QucGF0Y2gKIApAQCAtNDE5 LDEwICs0MTQsNiBAQCBQYXRjaDMzMDogZ2RiLTYuOC1iejQzNjAzNy1yZWctbm8tbG9uZ2VyLWFj dGl2ZS5wYXRjaAogIz1wdXNoOiBVc2VmdWwgb25seSBhZnRlciBnZGItNi44LWF0dGFjaC1zaWdu YWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgogUGF0Y2gzMzE6IGdkYi02LjgtcXVpdC1uZXZl ci1hYm9ydHMucGF0Y2gKIAotIyBTdXBwb3J0IERXX1RBR19jb25zdGFudCBmb3IgRm9ydHJhbiBp biByZWNlbnQgRmVkb3JhL1JIIEdDQ3MuCi0jPXB1c2gKLVBhdGNoMzMyOiBnZGItNi44LWZvcnRy YW4tdGFnLWNvbnN0YW50LnBhdGNoCi0KICMgRml4IGF0dGFjaGluZyB0byBzdG9wcGVkIHByb2Nl c3NlcyBhbmQvb3IgcGVuZGluZyBzaWduYWxzLgogIz1wdXNoK3dvcmsKIFBhdGNoMzM3OiBnZGIt Ni44LWF0dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2gKQEAgLTQzNSwxOSArNDI2 LDE0IEBAIFBhdGNoMzQzOiBnZGItNi44LXdhdGNocG9pbnQtY29uZGl0aW9uYWxzLXRlc3QucGF0 Y2gKICM9ZmVkb3JhdGVzdAogUGF0Y2gzNDg6IGdkYi02LjgtYno0NjY5MDEtYmFja3RyYWNlLWZ1 bGwtcHJlbGlua2VkLnBhdGNoCiAKLSMgVGhlIG1lcmdlZCBicmFuY2ggYGFyY2hlcicgb2Y6IGh0 dHA6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCisjIFRoZSBtZXJnZWQg YnJhbmNoIGBhcmNoZXItamFua3JhdG9jaHZpbC1mZWRvcmExNScgb2Y6CisjIGh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9nZGIvd2lraS9Qcm9qZWN0QXJjaGVyCiAjPXB1c2gKICNhcmNoZXItamFua3Jh dG9jaHZpbC12bGEKICM9cHVzaAogI2FyY2hlci1qYW5rcmF0b2NodmlsLXdhdGNocG9pbnQzCiAj PXB1c2gKICNhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYwotIz1wdXNoCi0jYXJjaGVyLXBtdWxk b29uLW5leHQtb3Zlci10aHJvdzIKLSM9bWF5YmVwdXNoCi0jYXJjaGVyLXRyb21leS1weXRob24K LSM9bWF5YmVwdXNoCi0jYXJjaGVyLXRyb21leS1vcHRpb25hbC1wc3ltdGFiCiBQYXRjaDM0OTog Z2RiLWFyY2hlci5wYXRjaAogIz1tYXliZXB1c2gKIFBhdGNoNDIwOiBnZGItYXJjaGVyLWFkYS5w YXRjaApAQCAtNTEyLDEyICs0OTgsNiBAQCBQYXRjaDQxMjogZ2RiLXVudXNlZC1yZXZlcnQucGF0 Y2gKICM9cHVzaCt3b3JrOiBJdCBzaG91bGQgYmUgZml4ZWQgcHJvcGVybHkgaW5zdGVhZC4KIFBh dGNoNDE3OiBnZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4ucGF0Y2gKIAotIyBGaXggY3Jh c2ggb24gQysrIHR5cGVzIGluIHNvbWUgZGVidWcgaW5mbyBmaWxlcyAoQlogNTc1MjkyLCBLZWl0 aCBTZWl0eikuCi0jIFRlbXBvcmFyaWx5IHdvcmthcm91bmQgdGhlIGNyYXNoIG9mIEJaIDU3NTI5 MiBhcyB0aGVyZSB3YXMgbm93IEJaIDU4NTQ0NS4KLSMgUmUtZW5hYmxlIHRoZSBCWiA1NzUyOTIg YW5kIEJaIDU4NTQ0NSBDKysgZml4IHVzaW5nIGFuIHVwZGF0ZWQgcGF0Y2guCi0jPW1heWJlcHVz aDogTm90IHN1cmUgaWYgYWxsIHRoZSBwYXJ0cyBhcmUgdXBzdHJlYW0uCi1QYXRjaDQ1MTogZ2Ri LWJ6NTc1MjkyLWRlbGF5ZWQtcGh5c25hbWUucGF0Y2gKLQogIyBGaXggY3Jhc2ggd2hlbiB1c2lu ZyBHTlUgSUZVTkMgY2FsbCBmcm9tIGJyZWFrcG9pbnQgY29uZGl0aW9uLgogIz1kcm9wOiBBZnRl ciBhcmNoZXItamFua3JhdG9jaHZpbC1pZnVuYyBnZXRzIGluIHRoaXMgb25lIGdldHMgb2Jzb2xl dGVkLgogUGF0Y2g0NTQ6IGdkYi1iejUzOTU5MC1nbnUtaWZ1bmMtZml4LWNvbmQucGF0Y2gKQEAg LTUyNiwxMCArNTA2LDYgQEAgUGF0Y2g0NTQ6IGdkYi1iejUzOTU5MC1nbnUtaWZ1bmMtZml4LWNv bmQucGF0Y2gKICM9cHVzaCt3b3JrOiBDdXJyZW50bHkgaXQgaXMgc3RpbGwgbm90IGZ1bGx5IHNh ZmUuCiBQYXRjaDQ1OTogZ2RiLW1vcmlidW5kLXV0cmFjZS13b3JrYXJvdW5kLnBhdGNoCiAKLSMg UmVtb3ZlIGNvcmUgZmlsZSB3aGVuIHN0YXJ0aW5nIGEgcHJvY2VzcyAoQlogNTk0NTYwKS4KLSM9 bWF5YmVwdXNoCi1QYXRjaDQ2MTogZ2RiLWJ6NTk0NTYwLWNvcmUtdnMtcHJvY2Vzcy5wYXRjaAot CiAjIEZpeCBmb2xsb3ctZXhlYyBmb3IgQysrIHByb2dyYW1zIChidWdyZXBvcnRlZCBieSBNYXJ0 aW4gU3RyYW5za3kpLgogIz1mZWRvcmF0ZXN0CiBQYXRjaDQ3MDogZ2RiLWFyY2hlci1uZXh0LW92 ZXItdGhyb3ctY3h4LWV4ZWMucGF0Y2gKQEAgLTU0NCwxOCArNTIwLDEwIEBAIFBhdGNoNDg2OiBn ZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMucGF0Y2gKICM9cHVzaCt3b3JrOiBU aGVyZSBhcmUgc29tZSBvdXRzdGFuZGluZyBpc3N1ZXMsIGNoZWNrIHRoZSBtYWlscy4KIFBhdGNo NDg3OiBnZGItYno1NjI3NjMtcHJldHR5LXByaW50LTJkLXZlY3RvcnMtbGlic3RkY3h4LnBhdGNo CiAKLSMgRml4IHByZWxpbmtlZCBleGVjdXRhYmxlcyB3aXRoIHNlcGRlYnVnIGFuZCBjb3B5IHJl bG9jYXRpb25zIChCWiA2MTQ2NTkpLgotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g0ODk6IGdk Yi1iejYxNDY1OS1wcmVsaW5rLWR5bmJzcy5wYXRjaAotCiAjIFByb3ZpZGUgL3Vzci9iaW4vZ2Ri LWFkZC1pbmRleCBmb3IgcnBtLWJ1aWxkIChUb20gVHJvbWV5KS4KICM9ZHJvcDogUmUtY2hlY2sg YWdhaW5zdCB0aGUgdXBzdHJlYW0gdmVyc2lvbi4KIFBhdGNoNDkxOiBnZGItZ2RiLWFkZC1pbmRl eC1zY3JpcHQucGF0Y2gKIAotIyBGaXggZ2NvcmUgZnJvbSB2ZXJ5IHNtYWxsIHRlcm1pbmFsIHdp bmRvd3MgKEJaIDU1NTA3NikuCi0jPWRyb3A6IFVwc3RyZWFtZWQuCi1QYXRjaDQ5MzogZ2RiLWJ6 NTU1MDc2LWdjb3JlLXNtYWxsLWhlaWdodC5wYXRjaAotCiAjIE91dCBvZiBtZW1vcnkgaXMganVz dCBhbiBlcnJvciwgbm90IGZhdGFsICh1bmluaXRpYWxpemVkIFZMUyB2YXJzLCBCWiA1NjgyNDgp LgogIz1kcm9wK3dvcms6IEluZmVyaW9yIG9iamVjdHMgc2hvdWxkIGJlIHJlYWQgaW4gcGFydHMs IHRoZW4gdGhpcyBwYXRjaCBnZXRzIG9ic29sZXRlZC4KIFBhdGNoNDk2OiBnZGItYno1NjgyNDgt b29tLWlzLWVycm9yLnBhdGNoCkBAIC01NjQsNzYgKzUzMiwyMyBAQCBQYXRjaDQ5NjogZ2RiLWJ6 NTY4MjQ4LW9vbS1pcy1lcnJvci5wYXRjaAogIz1wdXNoCiBQYXRjaDQ5NzogZ2RiLWZhbHNlLWdj Yy13YXJuaW5nLnBhdGNoCiAKLSMgRG8gbm90IGNyYXNoIG9uIGJyb2tlbiBzZXBhcmF0ZSBkZWJ1 Z2luZm8gZHVlIHRvIG9sZCBlbGZ1dGlscyAoQlogNjMxNTc1KS4KLSM9ZHJvcDogVXBzdHJlYW1l ZC4KLVBhdGNoNDk5OiBnZGItYno2MzE1NzUtZ2RiLWluZGV4LW5vYml0cy5wYXRjaAotCi0jIEZp eCBzeW1ib2wgbG9va3VwIG1pc3NlcyBtZXRob2RzIG9mIGN1cnJlbnQgY2xhc3MgKEJaIDYzMTE1 OCwgU2FtaSBXYWdpYWFsbGEpLgotIz1tYXliZXB1c2gKLVBhdGNoNTAwOiBnZGItYno2MzExNTgt Y3h4LXRoaXMtbG9va3VwLnBhdGNoCi0KLSMgRml4IEFkYSByZWdyZXNzaW9uIHdoZW4gYW55IC5n ZGJfaW5kZXggbGlicmFyeSBpcyBwcmVzZW50LgotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1 MDE6IGdkYi1nZGJpbmRleC1hZGEtcmVncmVzc2lvbi5wYXRjaAotCi0jIHB5dGhvbjogbG9hZCAq LWdkYi5weSBmb3Igc2hsaWJzIGR1cmluZyBhdHRhY2ggKEJaIDYzNDY2MCkuCi0jPWRyb3A6IFVw c3RyZWFtZWQuCi1QYXRjaDUwMjogZ2RiLWJ6NjM0NjYwLWdkYnB5LWxvYWQtb24tYXR0YWNoLnBh dGNoCi0KLSMgRml4IGRvdWJsZSBmcmVlIGNyYXNoIGR1cmluZyBvdmVybG9hZCByZXNvbHV0aW9u IChQUiAxMjAyOCwgU2FtaSBXYWdpYWFsbGEpLgotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1 MDM6IGdkYi1wcjEyMDI4LWRvdWJsZS1mcmVlLnBhdGNoCi0KICMgRml4IGdjb3JlIHdyaXRlciBm b3IgLVdsLC16LHJlbHJvIChQUiBjb3JlZmlsZXMvMTE4MDQpLgogIz1wdXNoOiBUaGVyZSBpcyBk aWZmZXJlbnQgcGF0Y2ggb24gZ2RiLXBhdGNoZXMsIHdhaXRpbmcgbm93IGZvciByZXNvbHV0aW9u IGluIGtlcm5lbC4KIFBhdGNoNTA0OiBnZGItYno2MjM3NDktZ2NvcmUtcmVscm8ucGF0Y2gKIAot IyBGaXggaW5maW5pdGUgbG9vcCBjcmFzaCBvbiBzZWxmLXJlZmVyZW5jaW5nIGNsYXNzIChCWiA2 Mjc0MzIpLgotIz1kcm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1MDY6IGdkYi1iejYyNzQzMi1sb29w LXN0YXRpYy1zZWxmLWNsYXNzLnBhdGNoCi0KICMgRml4IGxvc3Qgc2lnaW5mb190IGluIGxpbnV4 LW5hdCAoQlogNTkyMDMxKS4KLSM9ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNoNTA3OiBnZGItYno1 OTIwMzEtc2lnaW5mby1sb3N0LTFvZjUucGF0Y2gKLSM9ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNo NTA4OiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTJvZjUucGF0Y2gKLSM9ZHJvcDogVXBzdHJl YW1lZC4KLVBhdGNoNTA5OiBnZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTNvZjUucGF0Y2gKICM9 cHVzaAogUGF0Y2g1MTA6IGdkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5wYXRjaAogIz1w dXNoCiBQYXRjaDUxMTogZ2RiLWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNoCiAKLSMg Rml4IC5nZGJfaW5kZXggZm9yIGJpZy1lbmRpYW4gaG9zdHMgKFRvbSBUcm9tZXkpLgotIz1kcm9w OiBVcHN0cmVhbWVkLgotUGF0Y2g1MTQ6IGdkYi1nZGJpbmRleC12MS10by12Mi5wYXRjaAotIz1k cm9wOiBVcHN0cmVhbWVkLgotUGF0Y2g1MTI6IGdkYi1nZGJpbmRleC1iaWdlbmRpYW4ucGF0Y2gK LSM9ZHJvcDogVXBzdHJlYW1lZC4KLVBhdGNoNTE1OiBnZGItZ2RiaW5kZXgtdjItdG8tdjMucGF0 Y2gKLQotIyBbaWZ1bmNdIEZpeCBjcmFzaCBvbiBkZWxldGluZyB3YXRjaHBvaW50IG9mIGFuIGF1 dG92YXJpYWJsZSAoQlogNjM3NzcwKS4KLSM9ZHJvcDogQSBwYXJ0IG9mIGFyY2hlci1qYW5rcmF0 b2NodmlsLWlmdW5jIHdvcmsuCi1QYXRjaDUxMzogZ2RiLWJ6NjM3NzcwLWlmdW5jLXdhdGNocG9p bnQtZGVsZXRlLnBhdGNoCi0KLSMgRml4IHB5dGhvbiBzdGFsZSBlcnJvciBzdGF0ZSwgYWxzbyBm aXggaXRzIHNhdmUvcmVzdG9yZSAoQlogNjM5MDg5KS4KLSM9ZHJvcDogSnVzdCBhIGJhY2twb3J0 LgotUGF0Y2g1MTg6IGdkYi10ZXN0c3VpdGUtbGliLXB5dGhvbi5wYXRjaAotIz1kcm9wOiBVcHN0 cmVhbWVkLgotUGF0Y2g1MTY6IGdkYi1weXRob24tZXJyb3Itc3RhdGUucGF0Y2gKLQotIyBGaXgg aW5mZXJpb3IgZXhlYyBvZiBuZXcgUElFIHg4Nl82NCAoQlogNjM4OTc5KS4KLSM9ZHJvcDogVXBz dHJlYW1lZC4KLVBhdGNoNTE3OiBnZGItZXhlYy1waWUtYW1kNjQucGF0Y2gKLQogIyBGaXggY3Jh c2ggb24gQ1RSTC1DIHdoaWxlIHJlYWRpbmcgYW4gRUxGIHN5bWJvbCBmaWxlIChCWiA2NDI4Nzkp LgogIz1wdXNoCiBQYXRjaDUyMDogZ2RiLWJ6NjQyODc5LWVsZnJlYWQtc2lnaW50LXN0YWxlLnBh dGNoCiAKLSMgaUZvcnQgY29tcGF0LiAtIGNhc2UgaW5zZW5zaXRpdmUgRFdBUkYgbm90IGluIGxv d2VyY2FzZSAoQlogNjQ1NzczKS4KLVBhdGNoNTIyOiBnZGItYno2NDU3NzMtaWZvcnQtY2FzZS0x b2YzLnBhdGNoCi1QYXRjaDUyMzogZ2RiLWJ6NjQ1NzczLWlmb3J0LWNhc2UtMm9mMy5wYXRjaAot UGF0Y2g1MjQ6IGdkYi1iejY0NTc3My1pZm9ydC1jYXNlLTNvZjMucGF0Y2gKKyMgRml4IG5leHQv ZmluaXNoL2V0YyAtdnMtIGV4Y2VwdGlvbnMgKFRvbSBUcm9tZXkpLgorIz1wdXNoCitQYXRjaDUy NTogZ2RiLW5leHQtb3Zlci10aHJvdy5wYXRjaAogCiBCdWlsZFJlcXVpcmVzOiBuY3Vyc2VzLWRl dmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXggYmlzb24gZXhwYXQtZGV2ZWwlez9faXNh fQogUmVxdWlyZXM6IHJlYWRsaW5lJXs/X2lzYX0KQEAgLTc2OSw3ICs2ODQsNyBAQCBybSAtZiBn ZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVp ZiAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEK ICVwYXRjaDM0OSAtcDEKICVwYXRjaDQyMCAtcDEKICVwYXRjaDEgLXAxCkBAIC04MjAsNyArNzM1 LDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBnZGIv cC1leHAuYwogJXBhdGNoMjM0IC1wMQogJXBhdGNoMjM1IC1wMQogJXBhdGNoMjQxIC1wMQotJXBh dGNoMjQ1IC1wMQogJXBhdGNoMjQ3IC1wMQogJXBhdGNoMjU0IC1wMQogJXBhdGNoMjU4IC1wMQpA QCAtODM3LDcgKzc1MSw2IEBAIHJtIC1mIGdkYi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29i amMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDI4NyAtcDEKICVwYXRjaDI4OSAtcDEKICVwYXRj aDI5MCAtcDEKLSVwYXRjaDI5MyAtcDEKICVwYXRjaDI5NCAtcDEKICVwYXRjaDI5NiAtcDEKICVw YXRjaDI5OCAtcDEKQEAgLTg1Myw3ICs3NjYsNiBAQCBybSAtZiBnZGIvanYtZXhwLmMgZ2RiL20y LWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzMjkgLXAxCiAlcGF0Y2gz MzAgLXAxCiAlcGF0Y2gzMzEgLXAxCi0lcGF0Y2gzMzIgLXAxCiAlcGF0Y2gzMzcgLXAxCiAlcGF0 Y2gzNDMgLXAxCiAlcGF0Y2gzNDggLXAxCkBAIC04NzIsMTAgKzc4NCw4IEBAIHJtIC1mIGdkYi9q di1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICVwYXRjaDQw OCAtcDEKICVwYXRjaDQxMiAtcDEKICVwYXRjaDQxNyAtcDEKLSVwYXRjaDQ1MSAtcDEKICVwYXRj aDQ1NCAtcDEKICVwYXRjaDQ1OSAtcDEKLSVwYXRjaDQ2MSAtcDEKICVwYXRjaDQ3MCAtcDEKICVw YXRjaDQ3NSAtcDEKICVwYXRjaDQ4NiAtcDEKQEAgLTg4MywzNCArNzkzLDE0IEBAIHJtIC1mIGdk Yi9qdi1leHAuYyBnZGIvbTItZXhwLmMgZ2RiL29iamMtZXhwLmMgZ2RiL3AtZXhwLmMKICNwYXRj aDQ4NyAtcDEKICVwYXRjaDQxNSAtcDEKICVwYXRjaDUxOSAtcDEKLSVwYXRjaDQ4OSAtcDEKICVw YXRjaDQ5MSAtcDEKLSVwYXRjaDQ5MyAtcDEKICVwYXRjaDQ5NiAtcDEKICVwYXRjaDQ5NyAtcDEK LSVwYXRjaDQ5OSAtcDEKLSVwYXRjaDUwMCAtcDEKLSVwYXRjaDUwMSAtcDEKLSVwYXRjaDUwMiAt cDEKLSVwYXRjaDUwMyAtcDEKICVwYXRjaDUwNCAtcDEKLSVwYXRjaDUwNiAtcDEKLSVwYXRjaDUw NyAtcDEKLSVwYXRjaDUwOCAtcDEKLSVwYXRjaDUwOSAtcDEKICVwYXRjaDUxMCAtcDEKICVwYXRj aDUxMSAtcDEKLSVwYXRjaDUxNCAtcDEKLSVwYXRjaDUxMiAtcDEKLSVwYXRjaDUxNSAtcDEKLSVw YXRjaDUxMyAtcDEKLSVwYXRjaDUxNiAtcDEKLSVwYXRjaDUxNyAtcDEKLSVwYXRjaDUxOCAtcDEK ICVwYXRjaDUyMCAtcDEKLSVwYXRjaDUyMiAtcDEKLSVwYXRjaDUyMyAtcDEKLSVwYXRjaDUyNCAt cDEKKyVwYXRjaDUyNSAtcDEKIAogJXBhdGNoMzkzIC1wMQogJXBhdGNoMzM1IC1wMQpAQCAtMTI4 MSw2ICsxMTcxLDkgQEAgZmkKICVlbmRpZgogCiAlY2hhbmdlbG9nCisqIFdlZCBOb3YgMTcgMjAx MCBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjIuNTAuMjAx MDExMTctMS5mYzE1CistIFJlYmFzZSB0byBGU0YgR0RCIDcuMi41MC4yMDEwMTExNyAod2hpY2gg aXMgYSA3LjMgcHJlLXJlbGVhc2UpLgorCiAqIFN1biBOb3YgIDcgMjAxMCBKYW4gS3JhdG9jaHZp bCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4gLSA3LjItMjUuZmMxNAogLSBpRm9ydCBjb21w YXQuIC0gY2FzZSBpbnNlbnNpdGl2ZSBEV0FSRiBub3QgaW4gbG93ZXJjYXNlIChCWiA2NDU3NzMp LgogCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3NvdXJjZXMKaW5kZXggNmMyZDczNC4uYzVlYjlk ZSAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9zb3VyY2VzCkBAIC0xICsxIEBACi02NDI2MGU2 YzU2OTc5ZWU3NTBhMDEwNTVmMTYwOTFhNSAgZ2RiLTcuMi50YXIuYnoyCitiMTMxNDNjN2M3ZTcw ZjkyOWM4NmMzZjM2MzI0NzkwOSAgZ2RiLTcuMi41MC4yMDEwMTExNy50YXIuYnoyCg==