From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Jan Kratochvil To: git-commits@fedoraproject.org Subject: [rpms/gdb] gdb-17.2-rebase-f44: Rebase to FSF GDB 7.4.50.20120103. Date: Sat, 27 Jun 2026 23:55:17 GMT Message-ID: <178260451771.1.3933768943032927268.rpms-gdb-254f0e90bc5a@fedoraproject.org> List-ID: X-Git-Repo: rpms/gdb X-Git-Branch: gdb-17.2-rebase-f44 X-Git-Rev: 254f0e90bc5a80ad4cd63c81f50dad5dffc91ee0 QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvZ2RiCkJyYW5jaCA6 IGdkYi0xNy4yLXJlYmFzZS1mNDQKQ29tbWl0IDogMjU0ZjBlOTBiYzVhODBhZDRjZDYzYzgxZjUw ZGFkNWRmZmM5MWVlMApBdXRob3IgOiBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVk aGF0LmNvbT4KRGF0ZSAgIDogMjAxMi0wMS0wM1QxNjowMDoxMiswMTowMApTdGF0cyAgOiArNTM2 Ny8tNzkzNSBpbiA0MiBmaWxlKHMpClVSTCAgICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qu b3JnL3JwbXMvZ2RiL2MvMjU0ZjBlOTBiYzVhODBhZDRjZDYzYzgxZjUwZGFkNWRmZmM5MWVlMD9i cmFuY2g9Z2RiLTE3LjItcmViYXNlLWY0NAoKTG9nOgpSZWJhc2UgdG8gRlNGIEdEQiA3LjQuNTAu MjAxMjAxMDMuCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4 IDU5Zjc3MDkuLjk2N2E1OWIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9y ZQpAQCAtMSwyICsxLDIgQEAKIC9saWJzdGRjKystdjMtcHl0aG9uLXIxNTU5NzgudGFyLmJ6Mgot L2dkYi03LjMuNTAuMjAxMTA3MjIudGFyLmJ6MgorL2dkYi03LjQuNTAuMjAxMjAxMDMudGFyLmJ6 MgoKZGlmZiAtLWdpdCBhL2dkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2ggYi9nZGIt Ni4zLWJ6MjMxODMyLW9ic3RhY2stMmdiLnBhdGNoCmluZGV4IDM4NzQyY2QuLjBiMDhjZWUgMTAw NjQ0Ci0tLSBhL2dkYi02LjMtYnoyMzE4MzItb2JzdGFjay0yZ2IucGF0Y2gKKysrIGIvZ2RiLTYu My1iejIzMTgzMi1vYnN0YWNrLTJnYi5wYXRjaApAQCAtMSwxMSArMSwxMSBAQAogaHR0cHM6Ly9i dWd6aWxsYS5yZWRoYXQuY29tL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0yMzE4MzIKIAogCi1J bmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltbWlzYy5jCitJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvc3ltbWlzYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEw MTExNi5vcmlnL2dkYi9zeW1taXNjLmMJMjAxMC0xMS0xNiAwNzo1Mzo1OS4wMDAwMDAwMDAgKzAx MDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9zeW1taXNjLmMJMjAxMC0xMS0xNiAwODow MzowOC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0xODYsOCArMTg2LDggQEAgcHJpbnRfb2JqZmlsZV9z dGF0aXN0aWNzICh2b2lkKQorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3ltbWlz Yy5jCTIwMTEtMDQtMDQgMTc6MTk6NTkuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvc3ltbWlzYy5jCTIwMTEtMTItMTkgMDA6Mjg6MTguMTg5MjMyMDE0ICswMTAw CitAQCAtMTQ3LDggKzE0Nyw4IEBAIHByaW50X29iamZpbGVfc3RhdGlzdGljcyAodm9pZCkKICAg ICAgaWYgKE9CSlNUQVQgKG9iamZpbGUsIHN6X3N0cnRhYikgPiAwKQogICAgICAgIHByaW50Zl9m aWx0ZXJlZCAoXygiICBTcGFjZSB1c2VkIGJ5IGEub3V0IHN0cmluZyB0YWJsZXM6ICVkXG4iKSwK ICAJCSAgICAgICBPQkpTVEFUIChvYmpmaWxlLCBzel9zdHJ0YWIpKTsKQEAgLTE2LDEwICsxNiwx MCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvc3ltbWlzYy5jCiAgICAgIHByaW50 Zl9maWx0ZXJlZCAoXygiICBUb3RhbCBtZW1vcnkgdXNlZCBmb3IgcHN5bWJvbCBjYWNoZTogJWRc biIpLAogIAkJICAgICBiY2FjaGVfbWVtb3J5X3VzZWQgKHBzeW1ib2xfYmNhY2hlX2dldF9iY2Fj aGUKICAJCSAgICAgICAgICAgICAgICAgICAgICAgICAgKG9iamZpbGUtPnBzeW1ib2xfY2FjaGUp KSk7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9pbmNsdWRlL29ic3RhY2suaAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvaW5jbHVkZS9vYnN0YWNrLmgKID09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvaW5jbHVkZS9vYnN0YWNrLmgJMjAwOC0xMC0yMSAwMTow MzozMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2luY2x1ZGUvb2Jz dGFjay5oCTIwMTAtMTEtMTYgMDg6MDI6MzcuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41 MC4yMDExMTIxOC5vcmlnL2luY2x1ZGUvb2JzdGFjay5oCTIwMTEtMTAtMjIgMDM6MzU6MjkuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9pbmNsdWRlL29ic3RhY2suaAky MDExLTEyLTE5IDAwOjI4OjE4LjE4OTIzMjAxNCArMDEwMAogQEAgLTE4OCwzMSArMTg4LDMxIEBA IHN0cnVjdCBvYnN0YWNrCQkvKiBjb250cm9sIGN1cnJlbnQgb2JqZWMKICAKICAvKiBEZWNsYXJl IHRoZSBleHRlcm5hbCBmdW5jdGlvbnMgd2UgdXNlOyB0aGV5IGFyZSBpbiBvYnN0YWNrLmMuICAq LwpAQCAtMTI1LDE5ICsxMjUsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvaW5jbHVk ZS9vYnN0YWNrLmgKICAgICBpZiAoX19vLT5jaHVua19saW1pdCAtIF9fby0+bmV4dF9mcmVlIDwg X19sZW4pCQkJXAogICAgICAgX29ic3RhY2tfbmV3Y2h1bmsgKF9fbywgX19sZW4pOwkJCQkJXAog ICAgIG9ic3RhY2tfYmxhbmtfZmFzdCAoX19vLCBfX2xlbik7CQkJCQlcCi1AQCAtNTMyLDcgKzUz Miw3IEBAIF9fZXh0ZW5zaW9uX18JCQkJCQkJCVwKLSAjIGRlZmluZSBvYnN0YWNrX2ZyZWUoaCxv YmopCQkJCQkJXAotICggKGgpLT50ZW1wID0gKGNoYXIgKikgKG9iaikgLSAoY2hhciAqKSAoaCkt PmNodW5rLAkJCVwKLSAgICgoKGgpLT50ZW1wID4gMCAmJiAoaCktPnRlbXAgPCAoaCktPmNodW5r X2xpbWl0IC0gKGNoYXIgKikgKGgpLT5jaHVuaylcCi0tICAgPyAoaW50KSAoKGgpLT5uZXh0X2Zy ZWUgPSAoaCktPm9iamVjdF9iYXNlCQkJCVwKLSsgICA/IChQVFJfSU5UX1RZUEUpICgoaCktPm5l eHRfZnJlZSA9IChoKS0+b2JqZWN0X2Jhc2UJCQlcCi0gCSAgICA9IChoKS0+dGVtcCArIChjaGFy ICopIChoKS0+Y2h1bmspCQkJCVwKLSAgICA6ICgoKG9ic3RhY2tfZnJlZSkgKChoKSwgKGgpLT50 ZW1wICsgKGNoYXIgKikgKGgpLT5jaHVuayksIDApLCAwKSkpCi0gCi1JbmRleDogZ2RiLTcuMi41 MC4yMDEwMTExNi9saWJpYmVydHkvb2JzdGFjay5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9saWJpYmVydHkvb2JzdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTEx Ni5vcmlnL2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAwNS0wNS0xMCAxNzozMzozMy4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2xpYmliZXJ0eS9vYnN0YWNrLmMJMjAxMC0x MS0xNiAwODowMjozNy4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9y aWcvbGliaWJlcnR5L29ic3RhY2suYwkyMDA1LTA1LTEwIDE3OjMzOjMzLjAwMDAwMDAwMCArMDIw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvbGliaWJlcnR5L29ic3RhY2suYwkyMDExLTEyLTE5 IDAwOjI4OjE4LjE5MTIzMjAwNiArMDEwMAogQEAgLTQ0LDkgKzQ0LDExIEBACiAgI2lmICFkZWZp bmVkIChfTElCQykgJiYgZGVmaW5lZCAoX19HTlVfTElCUkFSWV9fKSAmJiBfX0dOVV9MSUJSQVJZ X18gPiAxCiAgI2luY2x1ZGUgPGdudS12ZXJzaW9ucy5oPgoKZGlmZiAtLWdpdCBhL2dkYi02LjMt Z3N0YWNrLTIwMDUwNDExLnBhdGNoIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKaW5k ZXggOThkNWJiMC4uOTYwODg5YSAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEu cGF0Y2gKKysrIGIvZ2RiLTYuMy1nc3RhY2stMjAwNTA0MTEucGF0Y2gKQEAgLTQsMTEgKzQsMTEg QEAKIAl0byBpbnN0YWxsIGFuZCB1bmluc3RhbGwuCiAJKiBnc3RhY2suc2gsIGdzdGFjay4xOiBO ZXcgZmlsZXMuCiAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9NYWtlZmlsZS5pbgor SW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL01ha2VmaWxlLmluCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9NYWtlZmlsZS5pbgkyMDEwLTExLTA1IDE1 OjMxOjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2Vm aWxlLmluCTIwMTAtMTEtMTYgMDc6NTY6MTAuMDAwMDAwMDAwICswMTAwCi1AQCAtOTcyLDcgKzk3 Miw3IEBAIGdkYi56OmdkYi4xCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9NYWtl ZmlsZS5pbgkyMDEyLTAxLTAzIDA1OjUyOjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMjAxMDMvZ2RiL01ha2VmaWxlLmluCTIwMTItMDEtMDMgMDU6NTM6MjUuOTc0MjEwMjMw ICswMTAwCitAQCAtMTAxNyw3ICsxMDE3LDcgQEAgZ2RiLno6Z2RiLjEKICBpbnN0YWxsOiBhbGwK ICAJQCQoTUFLRSkgJChGTEFHU19UT19QQVNTKSBpbnN0YWxsLW9ubHkKICAKQEAgLTE3LDcgKzE3 LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2VmaWxlLmluCiAgCXRyYW5z Zm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBcCiAgCQkJICBlY2hv IGdkYiB8IHNlZCAtZSAiJCR0ImAgOyBcCiAgCQlpZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1l IiA9IHg7IHRoZW4gXAotQEAgLTEwMDgsNyArMTAwOCwyNSBAQCBpbnN0YWxsLXR1aToKK0BAIC0x MDM5LDcgKzEwMzksMjUgQEAgaW5zdGFsbC1vbmx5OiAkKENPTkZJR19JTlNUQUxMKQogIGluc3Rh bGwtcHl0aG9uOgogIAkkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKERFU1RE SVIpJChHREJfREFUQURJUikvcHl0aG9uL2dkYgogIApAQCAtNDQsMTAgKzQ0LDEwIEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9NYWtlZmlsZS5pbgogIAl0cmFuc2Zvcm1lZF9uYW1l PWB0PSckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJzsgXAogIAkJCSAgZWNobyBnZGIgfCBzZWQg LWUgJCR0YCA7IFwKICAJCWlmIHRlc3QgIngkJHRyYW5zZm9ybWVkX25hbWUiID0geDsgdGhlbiBc Ci1AQCAtMTAzMCw2ICsxMDQ4LDE3IEBAIHVuaW5zdGFsbC10dWk6Ci0gCQlmaSA7IFwKLSAJCXJt IC1mICQoREVTVERJUikkKGJpbmRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lJChFWEVFWFQpIFwKK0BA IC0xMDUxLDYgKzEwNjksMTggQEAgdW5pbnN0YWxsOiBmb3JjZSAkKENPTkZJR19VTklOU1RBTEwp CiAgCQkgICAgICAkKERFU1RESVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUuMQorIAlA JChNQUtFKSBETz11bmluc3RhbGwgIkRPRElSUz0kKFNVQkRJUlMpIiAkKEZMQUdTX1RPX1BBU1Mp IHN1YmRpcl9kbworIAogKy5QSE9OWTogdW5pbnN0YWxsLWdzdGFjawogK3VuaW5zdGFsbC1nc3Rh Y2s6CiArCXRyYW5zZm9ybWVkX25hbWU9YHQ9JyQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSknOyBc CkBAIC01OSwxMyArNTksMTQgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL01ha2Vm aWxlLmluCiArCQlmaSA7IFwKICsJCXJtIC1mICQoREVTVERJUikkKGJpbmRpcikvJCR0cmFuc2Zv cm1lZF9uYW1lJChFWEVFWFQpIFwKICsJCSAgICAgICQoREVTVERJUikkKG1hbjFkaXIpLyQkdHJh bnNmb3JtZWRfbmFtZS4xCi0gCisrIAogICMgVGhlIEMrKyBuYW1lIHBhcnNlciBjYW4gYmUgYnVp bHQgc3RhbmRhbG9uZSBmb3IgdGVzdGluZy4KICB0ZXN0LWNwLW5hbWUtcGFyc2VyLm86IGNwLW5h bWUtcGFyc2VyLmMKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9nc3RhY2suc2gKKyAJ JChDT01QSUxFKSAtRFRFU1RfQ1BOQU1FUyBjcC1uYW1lLXBhcnNlci5jCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEwMy9nZGIvZ3N0YWNrLnNoCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvZ3N0YWNrLnNoCTIwMTAtMTEtMTYgMDc6NTU6NDcuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvZ3N0YWNrLnNoCTIwMTItMDEtMDMgMDU6NTI6MzcuMjc4 Mzg1NjMyICswMTAwCiBAQCAtMCwwICsxLDQ4IEBACiArIyEvYmluL3NoCiArCkBAIC0xMTUsMTAg KzExNiwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvZ3N0YWNrLnNoCiArICAg IC1lICdzL15cKChnZGIpIFwpKi8vJyBcCiArICAgIC1lICcvXiMvcCcgXAogKyAgICAtZSAnL15U aHJlYWQvcCcKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvZ3N0YWNrLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9nc3RhY2suZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dzdGFjay5leHAJMjAxMC0xMS0xNiAwNzo1NTo0Ny4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZ3N0 YWNrLmV4cAkyMDEyLTAxLTAzIDA1OjUyOjM3LjI3OTM4NTYyOSArMDEwMAogQEAgLTAsMCArMSw3 MSBAQAogKyMgQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j LgogKwpAQCAtMTkxLDEwICsxOTIsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYmFzZS9nc3RhY2suZXhwCiArZ2RiX2V4aXQKICsKICtyZW1vdGVfZXhl YyBob3N0ICJraWxsIC05ICRwaWQiCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dzdGFjay5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFjay5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTEx Ni9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dzdGFjay5jCTIwMTAtMTEtMTYgMDc6NTU6NDcuMDAw MDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dzdGFjay5jCTIwMTItMDEtMDMgMDU6NTI6MzcuMjc5Mzg1NjI5ICswMTAwCiBAQCAtMCww ICsxLDQzIEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1 Z2dlci4KICsKCmRpZmYgLS1naXQgYS9nZGItNi4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNo IGIvZ2RiLTYuMy1wcGNkb3Rzb2xpYi0yMDA0MTAyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggNzIyNmMwZC4uMDAwMDAwMAotLS0gYS9nZGItNi4zLXBwY2RvdHNvbGliLTIw MDQxMDIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotMjAwNC0xMC0yMiAg QW5kcmV3IENhZ25leSAgPGNhZ25leUBnbnUub3JnPgotIAotIAkqIHNvbGliLXN2cjQuYyAoZW5h YmxlX2JyZWFrKTogQ29udmVydCBhIHN5bWJvbCBkZXNjcmlwdG9yIGludG8KLSAJdGhlIGNvcnJl c3BvbmRpbmcgZnVuY3Rpb24gZW50cnkgcG9pbnQuCi0gCShzb2xpYl9icmVha19uYW1lcyk6IERl bGV0ZSAiLl9kbF9kZWJ1Z19zdGF0ZSIsIG5vIGxvbmdlciBuZWVkZWQuCi0KLTIwMDctMTAtMTIg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCVBvcnQgdG8g R0RCLTYuNy4KLSAJCi1JbmRleDogZ2RiLTYuOC41MC4yMDA5MDgwMi9nZGIvc29saWItc3ZyNC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTYuOC41MC4yMDA5MDgwMi5vcmlnL2dkYi9zb2xpYi1zdnI0 LmMJMjAwOS0wOC0wMyAxMDowMzozNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNi44LjUwLjIw MDkwODAyL2dkYi9zb2xpYi1zdnI0LmMJMjAwOS0wOC0wMyAxMDo1MToxNS4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xNDMxLDcgKzE0MzEsMTUgQEAgZW5hYmxlX2JyZWFrIChzdHJ1Y3Qgc3ZyNF9pbmZv ICppbmZvKQotIAl7Ci0gCSAgc3ltX2FkZHIgPSBiZmRfbG9va3VwX3N5bWJvbCAodG1wX2JmZCwg KmJrcHRfbmFtZXApOwotIAkgIGlmIChzeW1fYWRkciAhPSAwKQotLQkgICAgYnJlYWs7Ci0rCSAg ICB7Ci0rCSAgICAgIC8qIFRoZSBzeW1ib2wgbWlnaHQgYmUgYSBkZXNjcmlwdG9yLCBjb252ZXJ0 IHRvIGludG8gdGhlCi0rCQkgY29ycmVzcG9uZGluZyBjb2RlIGFkZHJlc3MuICAqLwotKwkgICAg ICBzeW1fYWRkciA9IGdkYmFyY2hfY29udmVydF9mcm9tX2Z1bmNfcHRyX2FkZHIgKHRhcmdldF9n ZGJhcmNoLAotKwkJCQkJCQkgICAgIHN5bV9hZGRyLAotKwkJCQkJCQkgICAgIHRtcF9iZmRfdGFy Z2V0KTsKLSsJICAgICAgaWYgKHN5bV9hZGRyICE9IDApCi0rCQlicmVhazsKLSsJICAgIH0KLSAJ fQotIAotICAgICAgIGlmIChzeW1fYWRkciAhPSAwKQoKZGlmZiAtLWdpdCBhL2dkYi02LjMtcmVh ZG5ldmVyLTIwMDUwOTA3LnBhdGNoIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gK aW5kZXggZjMyNzA1MS4uOWY3MTJhNyAxMDA2NDQKLS0tIGEvZ2RiLTYuMy1yZWFkbmV2ZXItMjAw NTA5MDcucGF0Y2gKKysrIGIvZ2RiLTYuMy1yZWFkbmV2ZXItMjAwNTA5MDcucGF0Y2gKQEAgLTEx LDEwICsxMSwxMCBAQAogCiAgICAgICAgICogZ2RiLnRleGluZm8gKEZpbGUgT3B0aW9ucyk6IERv Y3VtZW50IC0tcmVhZG5ldmVyLgogCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9j L2dkYi50ZXhpbmZvCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZG9jL2dkYi50ZXhp bmZvCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2MvZ2Ri LnRleGluZm8JMjAxMS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMS0wNy0yMiAxOToxNToxMy4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2RvYy9nZGIudGV4 aW5mbwkyMDExLTEyLTE5IDAyOjUyOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLTEyLTE5IDAyOjUyOjI1Ljc2NTQwNzQz NCArMDEwMAogQEAgLTEwMDUsNiArMTAwNSwxMiBAQCBSZWFkIGVhY2ggc3ltYm9sIGZpbGUncyBl bnRpcmUgc3ltYm9sIHRhCiAgdGhlIGRlZmF1bHQsIHdoaWNoIGlzIHRvIHJlYWQgaXQgaW5jcmVt ZW50YWxseSBhcyBpdCBpcyBuZWVkZWQuCiAgVGhpcyBtYWtlcyBzdGFydHVwIHNsb3dlciwgYnV0 IG1ha2VzIGZ1dHVyZSBvcGVyYXRpb25zIGZhc3Rlci4KQEAgLTI4LDExICsyOCwxMSBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGVuZCB0YWJsZQog IAogIEBub2RlIE1vZGUgT3B0aW9ucwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21h aW4uYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL21haW4uYwogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDctMjIgMTk6MTQ6 MjUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCTIw MTEtMDctMjIgMTk6MTU6MTMuMDAwMDAwMDAwICswMjAwCi1AQCAtMzk5LDYgKzM5OSw3IEBAIGNh cHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dk Yi9tYWluLmMJMjAxMS0xMi0xOSAwMjo1MjoyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40 LjUwLjIwMTExMjE4L2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMjo1MjozNi45MjUzNjQ0MzggKzAx MDAKK0BAIC00MDYsNiArNDA2LDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAg ICB7InhkYiIsIG5vX2FyZ3VtZW50LCAmeGRiX2NvbW1hbmRzLCAxfSwKICAgICAgICB7ImRieCIs IG5vX2FyZ3VtZW50LCAmZGJ4X2NvbW1hbmRzLCAxfSwKICAgICAgICB7InJlYWRub3ciLCBub19h cmd1bWVudCwgJnJlYWRub3dfc3ltYm9sX2ZpbGVzLCAxfSwKQEAgLTQwLDcgKzQwLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogICAgICAgIHsiciIsIG5vX2FyZ3Vt ZW50LCAmcmVhZG5vd19zeW1ib2xfZmlsZXMsIDF9LAogICAgICAgIHsicXVpZXQiLCBub19hcmd1 bWVudCwgJnF1aWV0LCAxfSwKICAgICAgICB7InEiLCBub19hcmd1bWVudCwgJnF1aWV0LCAxfSwK LUBAIC0xMDY1LDYgKzEwNjYsNyBAQCBPcHRpb25zOlxuXG5cCitAQCAtMTA3Miw2ICsxMDczLDcg QEAgT3B0aW9uczpcblxuXAogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAogICAgLS1xdWlldCAg ICAgICAgICAgIERvIG5vdCBwcmludCB2ZXJzaW9uIG51bWJlciBvbiBzdGFydHVwLlxuXAogICAg LS1yZWFkbm93ICAgICAgICAgIEZ1bGx5IHJlYWQgc3ltYm9sIGZpbGVzIG9uIGZpcnN0IGFjY2Vz cy5cblwKQEAgLTQ4LDExICs0OCwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv bWFpbi5jCiAgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgICAtLXNl PUZJTEUgICAgICAgICAgVXNlIEZJTEUgYXMgc3ltYm9sIGZpbGUgYW5kIGV4ZWN1dGFibGUgZmls ZS5cblwKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmMKK0luZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi9zeW1maWxlLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3N5bWZpbGUuYwkyMDExLTA1LTExIDA2OjU2OjA3LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuYwkyMDExLTA3 LTIyIDE5OjE1OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTgxLDYgKzgxLDcgQEAgc3RhdGljIHZv aWQgY2xlYXJfc3ltdGFiX3VzZXJzX2NsZWFudXAgKAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgu b3JpZy9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTUgMTY6MzY6NTUuMDAwMDAwMDAwICswMTAwCisr KysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvc3ltZmlsZS5jCTIwMTEtMTItMTkgMDI6NTI6MjUu NzY3NDA3NDI2ICswMTAwCitAQCAtODIsNiArODIsNyBAQCBzdGF0aWMgdm9pZCBjbGVhcl9zeW10 YWJfdXNlcnNfY2xlYW51cCAoCiAgCiAgLyogR2xvYmFsIHZhcmlhYmxlcyBvd25lZCBieSB0aGlz IGZpbGUuICAqLwogIGludCByZWFkbm93X3N5bWJvbF9maWxlczsJLyogUmVhZCBmdWxsIHN5bWJv bHMgaW1tZWRpYXRlbHkuICAqLwpAQCAtNjAsMTEgKzYwLDExIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9zeW1maWxlLmMKICAKICAvKiBFeHRlcm5hbCB2YXJpYWJsZXMgYW5kIGZ1 bmN0aW9ucyByZWZlcmVuY2VkLiAgKi8KICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9kd2FyZjJyZWFkLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9kd2FyZjJyZWFk LmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2R3YXJmMnJl YWQuYwkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3LTIyIDE5OjE1OjQxLjAwMDAwMDAwMCAr MDIwMAotQEAgLTU4LDYgKzU4LDcgQEAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2Ri L2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAyOjUyOjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAyOjUyOjI1Ljc2 OTQwNzQxOCArMDEwMAorQEAgLTU5LDYgKzU5LDcgQEAKICAjaW5jbHVkZSAiYy1sYW5nLmgiCiAg I2luY2x1ZGUgInZhbHByaW50LmgiCiAgI2luY2x1ZGUgPGN0eXBlLmg+CkBAIC03Miw3ICs3Miw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAKICAjaW5j bHVkZSA8ZmNudGwuaD4KICAjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotQEAgLTEzODgsOCArMTM4 OSw5IEBAIGR3YXJmMl9oYXNfaW5mbyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUKK0BAIC0xNDA1 LDggKzE0MDYsOSBAQCBkd2FyZjJfaGFzX2luZm8gKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlCiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKSBuYW1lcyk7CiAgICAgICAgZHdh cmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlID0gb2JqZmlsZTsKICAgICAgfQpAQCAtODQsMTEgKzg0 LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICB9CiAg CiAgLyogV2hlbiBsb2FkaW5nIHNlY3Rpb25zLCB3ZSBsb29rIGVpdGhlciBmb3IgdW5jb21wcmVz c2VkIHNlY3Rpb24gb3IgZm9yCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdG9wLmgK K0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90b3AuaAogPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdG9wLmgJMjAxMS0wNy0yMSAxMzowMzo0NS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90b3AuaAkyMDExLTA3LTIy IDE5OjE1OjEzLjAwMDAwMDAwMCArMDIwMAotQEAgLTU5LDYgKzU5LDcgQEAgZXh0ZXJuIHZvaWQg c2V0X3Byb21wdCAoY29uc3QgY2hhciAqKTsKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcv Z2RiL3RvcC5oCTIwMTEtMTItMTYgMjE6Mjk6MjguMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvdG9wLmgJMjAxMS0xMi0xOSAwMjo1MjoyNS43Njk0MDc0MTggKzAx MDAKK0BAIC02MSw2ICs2MSw3IEBAIGV4dGVybiB2b2lkIHNldF9wcm9tcHQgKGNvbnN0IGNoYXIg KnMpOwogIAogIC8qIEZyb20gcmFuZG9tIHBsYWNlcy4gICovCiAgZXh0ZXJuIGludCByZWFkbm93 X3N5bWJvbF9maWxlczsKCmRpZmYgLS1naXQgYS9nZGItNi4zLXNlY3VyaXR5LWVycmF0YS0yMDA1 MDYxMC5wYXRjaCBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNoCmluZGV4 IDM3NjMzMzIuLjhlMDQ4ZDggMTAwNjQ0Ci0tLSBhL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIw MDUwNjEwLnBhdGNoCisrKyBiL2dkYi02LjMtc2VjdXJpdHktZXJyYXRhLTIwMDUwNjEwLnBhdGNo CkBAIC0xOSwxMSArMTksMTEgQEAgUHJvcG9zZWQgdXBzdHJlYW0gYnV0IG5ldmVyIGNvbW1pdHRl ZCB1cHN0cmVhbS4KICAgICAgICAgKHNvdXJjZV9jb21tYW5kKTogVXBkYXRlIGRvY3VtZW50YXRp b24uICBDaGVjayBwZXJtaXNzaW9ucyBpZgogICAgICAgICBGUk9NX1RUWSBpcyAtMS4KIAotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NsaS9jbGktY21kcy5jCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvY2xpL2NsaS1jbWRzLmMKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NsaS9jbGktY21kcy5jCTIwMTEtMDYtMDcgMTk6MjY6NDYu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRz LmMJMjAxMS0wNy0yMiAxOToxNDoyNS4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zOSw2ICszOSw3IEBA CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9jbGkvY2xpLWNtZHMuYwkyMDExLTEy LTE2IDIyOjE3OjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2NsaS9jbGktY21kcy5jCTIwMTEtMTItMTkgMDA6Mjc6MTYuNTcyNDY4OTI2ICswMTAwCitAQCAt NDAsNiArNDAsNyBAQAogICNpbmNsdWRlICJzb3VyY2UuaCIKICAjaW5jbHVkZSAiZGlzYXNtLmgi CiAgI2luY2x1ZGUgInRyYWNlcG9pbnQuaCIKQEAgLTMxLDcgKzMxLDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2NsaS9jbGktY21kcy5jCiAgCiAgI2luY2x1ZGUgInVpLW91dC5o IgogIAotQEAgLTQ4OSw3ICs0OTAsNyBAQCBzaG93X3NjcmlwdF9leHRfbW9kZSAoc3RydWN0IHVp X2ZpbGUgKmZpCitAQCAtNDg1LDcgKzQ4Niw3IEBAIHNob3dfc2NyaXB0X2V4dF9tb2RlIChzdHJ1 Y3QgdWlfZmlsZSAqZmkKICAKICBpbnQKICBmaW5kX2FuZF9vcGVuX3NjcmlwdCAoY29uc3QgY2hh ciAqc2NyaXB0X2ZpbGUsIGludCBzZWFyY2hfcGF0aCwKQEAgLTQwLDcgKzQwLDcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NsaS9jbGktY21kcy5jCiAgewogICAgY2hhciAqZmls ZTsKICAgIGludCBmZDsKLUBAIC01MTUsNiArNTE2LDMyIEBAIGZpbmRfYW5kX29wZW5fc2NyaXB0 IChjb25zdCBjaGFyICpzY3JpcHQKK0BAIC01MTEsNiArNTEyLDMyIEBAIGZpbmRfYW5kX29wZW5f c2NyaXB0IChjb25zdCBjaGFyICpzY3JpcHQKICAgICAgICByZXR1cm4gMDsKICAgICAgfQogIApA QCAtNzMsNyArNzMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1j bWRzLmMKICAgIGRvX2NsZWFudXBzIChvbGRfY2xlYW51cHMpOwogIAogICAgKnN0cmVhbXAgPSBm ZG9wZW4gKGZkLCBGT1BFTl9SVCk7Ci1AQCAtNTc0LDEzICs2MDEsMTQgQEAgc291cmNlX3Njcmlw dF93aXRoX3NlYXJjaCAoY29uc3QgY2hhciAqZgorQEAgLTU3MiwxMyArNTk5LDE0IEBAIHNvdXJj ZV9zY3JpcHRfd2l0aF9zZWFyY2ggKGNvbnN0IGNoYXIgKmYKICAgIGlmIChmaWxlID09IE5VTEwg fHwgKmZpbGUgPT0gMCkKICAgICAgZXJyb3IgKF8oInNvdXJjZSBjb21tYW5kIHJlcXVpcmVzIGZp bGUgbmFtZSBvZiBmaWxlIHRvIHNvdXJjZS4iKSk7CiAgCkBAIC04MSw3ICs4MSw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLWNtZHMuYwogKyAgaWYgKCFmaW5kX2Fu ZF9vcGVuX3NjcmlwdCAoZmlsZSwgc2VhcmNoX3BhdGgsICZzdHJlYW0sICZmdWxsX3BhdGgsCiAr CQkJICAgICBmcm9tX3R0eSkpCiAgICAgIHsKLSAgICAgICAvKiBUaGUgc2NyaXB0IHdhc24ndCBm b3VuZCwgb3Igd2FzIG90aGVyd2lzZSBpbmFjY2Vzc2libGUuICAKKyAgICAgICAvKiBUaGUgc2Ny aXB0IHdhc24ndCBmb3VuZCwgb3Igd2FzIG90aGVyd2lzZSBpbmFjY2Vzc2libGUuCiAgICAgICAg ICAgSWYgdGhlIHNvdXJjZSBjb21tYW5kIHdhcyBpbnZva2VkIGludGVyYWN0aXZlbHksIHRocm93 IGFuCiAgCSBlcnJvci4gIE90aGVyd2lzZSAoZS5nLiBpZiBpdCB3YXMgaW52b2tlZCBieSBhIHNj cmlwdCksCiAgCSBzaWxlbnRseSBpZ25vcmUgdGhlIGVycm9yLiAgKi8KQEAgLTkwLDEwICs5MCwx MCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS1jbWRzLmMKICAJcGVy cm9yX3dpdGhfbmFtZSAoZmlsZSk7CiAgICAgICAgZWxzZQogIAlyZXR1cm47Ci1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCitJbmRl eDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAw ICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dk YmluaXQuZXhwCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuZXhwCTIwMTEtMTIt MTkgMDA6MjU6MjYuMDc5ODkxOTU0ICswMTAwCiBAQCAtMCwwICsxLDkxIEBACiArIyAgIENvcHly aWdodCAyMDA1CiArIyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtMTg2LDE3 ICsxODYsMTcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9nZGJpbml0LmV4cAogK30KICsKICtyZW1vdGVfZXhlYyBidWlsZCAicm0gLmdkYmluaXQi Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2dkYmlu aXQuc2FtcGxlCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2dkYmluaXQuc2FtcGxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEg MDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5iYXNlL2dkYmluaXQuc2FtcGxlCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAw MDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2dkYmluaXQuc2FtcGxlCTIwMTEtMTItMTkgMDA6MjU6MjYuMDc5ODkxOTU0ICswMTAwCiBAQCAt MCwwICsxIEBACiArZWNobyAiXG5pbiBnZGJpbml0IgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL21haW4uYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL21haW4uYwogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbWFpbi5jCTIwMTEtMDct MjIgMTk6MDg6MTkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv bWFpbi5jCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICswMjAwCi1AQCAtODQ5LDcgKzg0 OSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCistLS0gZ2RiLTcuNC41MC4yMDExMTIx OC5vcmlnL2dkYi9tYWluLmMJMjAxMS0xMS0wNSAxODowODozMC4wMDAwMDAwMDAgKzAxMDAKKysr KyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9tYWluLmMJMjAxMS0xMi0xOSAwMDoyNToyNi4wODA4 OTE5NTAgKzAxMDAKK0BAIC04MjIsNyArODIyLDcgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0 YSkKICAgICAgIGRlYnVnZ2luZyBvciB3aGF0IGRpcmVjdG9yeSB5b3UgYXJlIGluLiAgKi8KICAK ICAgIGlmIChob21lX2dkYmluaXQgJiYgIWluaGliaXRfZ2RiaW5pdCkKQEAgLTIwNSw3ICsyMDUs NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgCiAgICAvKiBOb3cg cGVyZm9ybSBhbGwgdGhlIGFjdGlvbnMgaW5kaWNhdGVkIGJ5IHRoZSBhcmd1bWVudHMuICAqLwog ICAgaWYgKGNkYXJnICE9IE5VTEwpCi1AQCAtOTI4LDcgKzkyOCw3IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCitAQCAtOTAxLDcgKzkwMSw3IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRh dGEpCiAgICAvKiBSZWFkIHRoZSAuZ2RiaW5pdCBmaWxlIGluIHRoZSBjdXJyZW50IGRpcmVjdG9y eSwgKmlmKiBpdCBpc24ndAogICAgICAgdGhlIHNhbWUgYXMgdGhlICRIT01FLy5nZGJpbml0IGZp bGUgKGl0IHNob3VsZCBleGlzdCwgYWxzbykuICAqLwogICAgaWYgKGxvY2FsX2dkYmluaXQgJiYg IWluaGliaXRfZ2RiaW5pdCkKQEAgLTIxNCwxMCArMjE0LDEwIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9tYWluLmMKICAKICAgIC8qIE5vdyB0aGF0IGFsbCAuZ2RiaW5pdCdzIGhh dmUgYmVlbiByZWFkIGFuZCBhbGwgLWQgb3B0aW9ucyBoYXZlIGJlZW4KICAgICAgIHByb2Nlc3Nl ZCwgd2UgY2FuIHJlYWQgYW55IHNjcmlwdHMgbWVudGlvbmVkIGluIFNZTUFSRy4KLUluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi9weXRob24vcHktYXV0by1sb2FkLmMKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDEx LTA1LTE2IDE4OjMzOjU3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwkyMDExLTA3LTIyIDE5OjE0OjU0LjAwMDAwMDAwMCAr MDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvcHl0aG9uL3B5LWF1dG8tbG9h ZC5jCTIwMTEtMTItMTAgMjM6NTE6NDcuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvcHl0aG9uL3B5LWF1dG8tbG9hZC5jCTIwMTEtMTItMTkgMDA6MjU6MjYuMDgw ODkxOTUwICswMTAwCiBAQCAtMjg0LDcgKzI4NCw3IEBAIHNvdXJjZV9zZWN0aW9uX3NjcmlwdHMg KHN0cnVjdCBvYmpmaWxlICoKICAJfQogIApAQCAtMjI3LDExICsyMjcsMTEgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS1hdXRvLWxvYWQuYwogIAogICAgICAgIC8q IElmIG9uZSBzY3JpcHQgaXNuJ3QgZm91bmQgaXQncyBub3QgdW5jb21tb24gZm9yIG1vcmUgdG8g bm90IGJlCiAgCSBmb3VuZCBlaXRoZXIuICBXZSBkb24ndCB3YW50IHRvIHByaW50IGFuIGVycm9y IG1lc3NhZ2UgZm9yIGVhY2gKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xp LWNtZHMuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NsaS9jbGktY21kcy5oCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jbGkvY2xpLWNtZHMu aAkyMDExLTAxLTAxIDE2OjMzOjIwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2NsaS9jbGktY21kcy5oCTIwMTEtMDctMjIgMTk6MTQ6MjUuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTI3LDcgKzEyNyw4IEBAIGV4dGVybiB2b2lkIHNvdXJjZV9zY3JpcHQgKGNoYXIg KiwgaW50KTsKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NsaS9jbGktY21kcy5o CTIwMTEtMTEtMDEgMTU6NTE6MjMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvY2xpL2NsaS1jbWRzLmgJMjAxMS0xMi0xOSAwMDoyNToyNi4wODA4OTE5NTAgKzAx MDAKK0BAIC0xMjksNyArMTI5LDggQEAgZXh0ZXJuIHZvaWQgc291cmNlX3NjcmlwdCAoY2hhciAq LCBpbnQpOwogIC8qIEV4cG9ydGVkIHRvIG9iamZpbGVzLmMuICAqLwogIAogIGV4dGVybiBpbnQg ZmluZF9hbmRfb3Blbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBzZWFyY2hfcGF0aCwK CmRpZmYgLS1naXQgYS9nZGItNi4zLXN0ZXAtdGhyZWFkLWV4aXQtMjAwNTAyMTEtdGVzdC5wYXRj aCBiL2dkYi02LjMtc3RlcC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWMyYTQ0Li4wMDAwMDAwCi0tLSBhL2dkYi02LjMtc3Rl cC10aHJlYWQtZXhpdC0yMDA1MDIxMS10ZXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTg4 ICswLDAgQEAKLTIwMDUtMDItMTEgIEplZmYgSm9obnN0b24gIDxqam9obnN0bkByZWRoYXQuY29t PgotCi0JKiB0ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5jOiBOZXcgdGVz dGNhc2UuCi0JKiB0ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5leHA6IERp dHRvLgotCQotSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhy ZWFkcy9zdGVwLXRocmVhZC1leGl0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi44LjUwLjIwMDgxMTI4L2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10aHJlYWQtZXhpdC5jCTIwMDgtMTItMDggMjI6 MjE6MjYuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDUwIEBACi0rLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsKLSsgICBDb3B5cmlnaHQgMjAw NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMg ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAg IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMg cHVibGlzaGVkIGJ5Ci0rICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZl cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAgIEdOVSBH ZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3Vs ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UK LSsgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBT b2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMz MCwKLSsgICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPHB0 aHJlYWQuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2lu Y2x1ZGUgPHVuaXN0ZC5oPgotKwotK3ZvaWQgKnRocmVhZF9mdW5jdGlvbiAodm9pZCAqcHRyKQot K3sKLSsgIGludCAqeCA9IChpbnQgKilwdHI7Ci0rICBwcmludGYoIkluIHRocmVhZF9mdW5jdGlv biwgKnggaXMgJWRcbiIsICp4KTsKLSt9IC8qIHRocmVhZF9mdW5jdGlvbl9lbmQgKi8KLSsKLSt2 b2xhdGlsZSBpbnQgcmVwZWF0ID0gMDsKLSsKLSttYWluKCkKLSt7Ci0rICBpbnQgcmV0OwotKyAg cHRocmVhZF90IHRoOwotKyAgaW50IGkgPSAzOwotKwotKyAgcmV0ID0gcHRocmVhZF9jcmVhdGUg KCZ0aCwgTlVMTCwgdGhyZWFkX2Z1bmN0aW9uLCAmaSk7Ci0rICBkbwotKyAgICB7Ci0rICAgICAg cmVwZWF0ID0gMDsKLSsgICAgICBzbGVlcCAoMyk7ICAvKiBzbGVlcCAqLwotKyAgICB9Ci0rICB3 aGlsZSAocmVwZWF0KTsKLSsgIHB0aHJlYWRfam9pbiAodGgsIE5VTEwpOwotKyAgcmV0dXJuIDA7 Ci0rfQotKwotKwotSW5kZXg6IGdkYi02LjguNTAuMjAwODExMjgvZ2RiL3Rlc3RzdWl0ZS9nZGIu dGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkx OTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi02LjguNTAuMjAwODEx MjgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4cAkyMDA4LTEy LTA4IDIyOjIyOjE0LjAwMDAwMDAwMCArMDEwMAotQEAgLTAsMCArMSwxMjMgQEAKLSsjIFRoaXMg dGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rIyBDb3B5cmln aHQgMjAwNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5 Ci0rIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl IGFzIHB1Ymxpc2hlZCBieQotKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVy IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsjIChhdCB5b3VyIG9wdGlvbikgYW55IGxh dGVyIHZlcnNpb24uCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBo b3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7 IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyMgTUVSQ0hBTlRBQklMSVRZ IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyMgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxk IGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQot KyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29m dHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwg Qm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAKLSsKLSsjIENoZWNrIHRoYXQgR0RCIGNhbiBz dGVwIG92ZXIgYSB0aHJlYWQgZXhpdC4KLSsKLStzZXQgdGVzdGZpbGUgInN0ZXAtdGhyZWFkLWV4 aXQiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uYwotK3NldCBiaW5maWxlICR7b2JqZGlyfS8k e3N1YmRpcn0vJHt0ZXN0ZmlsZX0KLStpZiB7W2dkYl9jb21waWxlX3B0aHJlYWRzICIke3NyY2Rp cn0vJHtzdWJkaXJ9LyR7c3JjZmlsZX0iICIke2JpbmZpbGV9IiBleGVjdXRhYmxlIFtsaXN0IGRl YnVnICJpbmNkaXI9JHtvYmpkaXJ9Il1dICE9ICIiIH0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0r Ci0rZ2RiX2V4aXQKLStnZGJfc3RhcnQKLStnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRz dWJkaXIKLStnZGJfbG9hZCAke2JpbmZpbGV9Ci0rCi0rIyBSZXNldCB0aGUgZGVidWcgZmlsZSBk aXJlY3Rvcnkgc28gd2UgY2FuJ3QgZGVidWcgd2l0aGluIHRoZSBDIGxpYnJhcnkKLStnZGJfdGVz dCAic2V0IGRlYnVnLWZpbGUtZGlyZWN0b3J5IC4iICIiICIiCi0rCi0rIwotKyMgUnVuIHRvIGBt YWluJyB3aGVyZSB3ZSBiZWdpbiBvdXIgdGVzdHMuCi0rIwotKwotK2lmICFbcnVudG9fbWFpbl0g dGhlbiB7Ci0rICAgIGdkYl9zdXBwcmVzc190ZXN0cwotK30KLSsKLSsjIEZJWE1FOiBDdXJyZW50 bHkgdGhlIG1haW4gdGhyZWFkIHdpbGwgZXNjYXBlL2V4aXQgYmVmb3JlIG91ciB0aHJlYWQgZmlu aXNoZXMKLSsjIHdpdGhvdXQgdGhpcyBzZXR0aW5nLgotK2dkYl90ZXN0ICJzZXQgc2NoZWR1bGVy LWxvY2tpbmcgc3RlcCIKLStnZGJfdGVzdCAic2hvdyBzY2hlZHVsZXItbG9ja2luZyIgIk1vZGUg Zm9yIGxvY2tpbmcgc2NoZWR1bGVyIGR1cmluZyBleGVjdXRpb24gaXMgXCJzdGVwXCIuIiAiY2hl Y2sgc2NoZWR1bGVyLWxvY2tpbmcgZmlyc3QiCi0rCi0rc2V0IHNsZWVwX2xpbmUgW2V4cHIgW2dk Yl9nZXRfbGluZV9udW1iZXIgInNsZWVwIl1dCi0rc2V0IGVuZF9saW5lIFtleHByIFtnZGJfZ2V0 X2xpbmVfbnVtYmVyICJ0aHJlYWRfZnVuY3Rpb25fZW5kIl1dCi0rCi0rZ2RiX2JyZWFrcG9pbnQg IiRlbmRfbGluZSIKLStnZGJfdGVzdCAiY29udGludWUiICJCcmVhay4qdGhyZWFkX2Z1bmN0aW9u LioiICJjb250aW51ZSB0byB0aHJlYWRfZnVuY3Rpb24gMSIKLSsKLSsjIEtlZXAgbmV4dGluZyB1 bnRpbCB3ZSBjYXVzZSB0aGUgdGhyZWFkIHRvIGV4aXQuICBXZSBleHBlY3QgdGhlIG1haW4KLSsj IHRocmVhZCB0byBiZSBzdG9wcGVkIGFuZCBhIG1lc3NhZ2UgcHJpbnRlZCB0byB0ZWxsIHVzIHdl IGhhdmUgc3RlcHBlZAotKyMgb3ZlciB0aGUgdGhyZWFkIGV4aXQuCi0rc2V0IHRlc3QgInN0ZXAg b3ZlciB0aHJlYWQgZXhpdCAxIgotK2dkYl90ZXN0X211bHRpcGxlICJuZXh0IiAiJHRlc3QiIHsK LSsgIC1yZSAiXH0uKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgIHNlbmRfZ2RiICJuZXh0XG4iCi0r ICAgICBleHBfY29udGludWUKLSsgIH0KLSsgIC1yZSAiXFtUaHJlYWQgLiogZXhpdGVkXF0uKlBy b2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NUT1AuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAgIHBh c3MgIiR0ZXN0IgotKyAgfQotKyAgLXJlICJzdGFydF90aHJlYWQuKiRnZGJfcHJvbXB0ICQiIHsK LSsgICAgIHNlbmRfZ2RiICJuZXh0XG4iCi0rICAgICBleHBfY29udGludWUKLSsgIH0KLSt9Ci0r Ci0rIyBXaXRob3V0IHRoaXMgZml4dXAgd2UgY291bGQgZW5kIHVwIGluOgotKyMgIzAgIDB4MDAx MTA0MTYgaW4gX19rZXJuZWxfdnN5c2NhbGwgKCkKLSsjICMxICAweDAwMTFkZTI2IGluIF9fbGxs X3VubG9ja193YWtlX3ByaXZhdGUgKCkgZnJvbSAvbGliL2xpYnB0aHJlYWQuc28uMAotKyMgIzIg IDB4MDAxMTc5ZjQgaW4gX0xfdW5sb2NrXzMxNjQgKCkgZnJvbSAvbGliL2xpYnB0aHJlYWQuc28u MAotKyMgIzMgIDB4MDAxMTZmMDEgaW4gcHRocmVhZF9jcmVhdGVAQEdMSUJDXzIuMSAoKSBmcm9t IC9saWIvbGlicHRocmVhZC5zby4wCi0rIyAjNCAgMHgwODA0ODUzMSBpbiBtYWluICgpIGF0IC4u Ly4uLy4vZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmM6MzkKLStn ZGJfYnJlYWtwb2ludCAiJHNsZWVwX2xpbmUiCi0rZ2RiX3Rlc3QgInNldCByZXBlYXQ9MSIgIiIg IkdldCB0byB0aGUgc2xlZXAgZnVuY3Rpb24gcHJlcGFyZSAxIgotK2dkYl90ZXN0ICJjb250aW51 ZSIgIkJyZWFrLiokc2xlZXBfbGluZS4qIiAiR2V0IHRvIHRoZSBzbGVlcCBmdW5jdGlvbiAxIgot KwotK2dkYl90ZXN0ICJidCIgIm1haW4uKiRzbGVlcF9saW5lLioiICJiYWNrdHJhY2UgYWZ0ZXIg c3RlcCAxIgotKwotK3J1bnRvX21haW4KLStnZGJfdGVzdCAic2hvdyBzY2hlZHVsZXItbG9ja2lu ZyIgIk1vZGUgZm9yIGxvY2tpbmcgc2NoZWR1bGVyIGR1cmluZyBleGVjdXRpb24gaXMgXCJzdGVw XCIuIiAiY2hlY2sgc2NoZWR1bGVyLWxvY2tpbmcgc2Vjb25kIgotKwotK2dkYl9icmVha3BvaW50 ICIkc2xlZXBfbGluZSIKLStnZGJfYnJlYWtwb2ludCAiJGVuZF9saW5lIgotK3NldCB0ZXN0ICJj b250aW51ZSB0byB0aHJlYWRfZnVuY3Rpb24gMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAiY29udGlu dWUiICIkdGVzdCIgewotKyAgICAtcmUgIkJyZWFrLip0aHJlYWRfZnVuY3Rpb24uKiRnZGJfcHJv bXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiQnJlYWsuKiRzbGVlcF9s aW5lLiokZ2RiX3Byb21wdCAkIiB7Ci0rCWdkYl90ZXN0ICJzZXQgcmVwZWF0PTEiICIiICIiCi0r CXNlbmRfZ2RiICJjb250aW51ZVxuIgotKwlleHBfY29udGludWUKLSsgICAgfQotK30KLSsKLSsj IEtlZXAgbmV4dGluZyB1bnRpbCB3ZSBjYXVzZSB0aGUgdGhyZWFkIHRvIGV4aXQuICBJbiB0aGlz IGNhc2UsIHdlCi0rIyBleHBlY3QgdGhlIGJyZWFrcG9pbnQgaW4gdGhlIG1haW4gdGhyZWFkIHRv IGhhdmUgYWxyZWFkeSB0cmlnZ2VyZWQKLSsjIGFuZCBzbyB3ZSBzaG91bGQgc3RvcCB0aGVyZSB3 aXRoIGEgbWVzc2FnZSB0aGF0IHdlIHN0ZXBwZWQgb3ZlcgotKyMgdGhlIHRocmVhZCBleGl0Lgot K3NldCB0ZXN0ICJzdGVwIG92ZXIgdGhyZWFkIGV4aXQgMiIKLStnZGJfdGVzdF9tdWx0aXBsZSAi bmV4dCIgIiR0ZXN0IiB7Ci0rICAtcmUgIlx9LiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICBzZW5k X2dkYiAibmV4dFxuIgotKyAgICAgZXhwX2NvbnRpbnVlCi0rICB9Ci0rICAtcmUgIlxbVGhyZWFk IC4qIGV4aXRlZFxdLipCcmVhay4qJHNsZWVwX2xpbmUuKiRnZGJfcHJvbXB0ICQiIHsKLSsgICAg IHBhc3MgIiR0ZXN0IChicmVha3BvaW50IGhpdCkiCi0rICB9Ci0rICAtcmUgIlxbVGhyZWFkIC4q IGV4aXRlZFxdLiokZ2RiX3Byb21wdCAkIiB7Ci0rICAgICBwYXNzICIkdGVzdCAoYnJlYWtwb2lu dCBub3QgaGl0KSIKLSsgIH0KLSsgIC1yZSAic3RhcnRfdGhyZWFkLiokZ2RiX3Byb21wdCAkIiB7 Ci0rICAgICBzZW5kX2dkYiAibmV4dFxuIgotKyAgICAgZXhwX2NvbnRpbnVlCi0rICB9Ci0rfQot KwoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1kdG9yZml4LTIwMDUwMTIxLnBhdGNoIGIvZ2Ri LTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2gKaW5kZXggNTEzMDhiYy4uYThhMDI2NiAx MDA2NDQKLS0tIGEvZ2RiLTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2gKKysrIGIvZ2Ri LTYuMy10ZXN0LWR0b3JmaXgtMjAwNTAxMjEucGF0Y2gKQEAgLTEsMzIgKzEsNyBAQAotSW5kZXg6 IGdkYi90ZXN0c3VpdGUvQ2hhbmdlTG9nCi0yMDA1LTAxLTIxICBKZWZmIEpvaG5zdG9uICA8ampv aG5zdG5AcmVkaGF0LmNvbT4KLQotCSogZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHA6IE5ldyB0 ZXN0LgotCSogZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5jYzogRGl0dG8uCi0JKiBnZGIuY3AvdGVt cGxhdGVzLmV4cDogQ2hhbmdlIGJyZWFrIG9mIGR0b3IgdG8JYmUgZnVsbHkgcXVvdGVkLgotCi0y MDA3LTA5LTIyICBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQot CSogZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHAsIGdkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuY2M6 IFRlc3QgYWxzbyB0aGUKLQlgJGRlbGV0ZScgZGVzdHJ1Y3RvciB2YXJpYW50LgotCi0yMDA3LTA5 LTI1ICBKYW4gS3JhdG9jaHZpbCA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCSogZ2Ri LmNwL2NvbnN0cnVjdG9ydGVzdC5leHA6IERlbGV0ZSB0aGUgRklYTUUgd29ya2Fyb3VuZCBvZiBy ZXN0YXJ0aW5nCi0JdGhlIHdob2xlIEdEQi4KLQotMjAwNy0xMC0wNSAgSmFuIEtyYXRvY2h2aWwg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQkqIGdkYi5jcC9jb25zdHJ1Y3RvcnRlc3Qu ZXhwOiBUZXN0IEJSRUFLUE9JTlRfUkVfU0VUIGZvciBtdWx0aXBsZSBQQ3MKLQlieSBQSUUuCi0J KiBnZGIuY3AvY29uc3RydWN0b3J0ZXN0LmV4cDogSGFuZGxlIHRoZSBjaGFuZ2Ugb2Ygc2V0dGlu Z3MgYnJlYWtwb2ludHMKLQlhbHdheXMgYXQgYWxsIHRoZSBjdG9yL2R0b3IgdmFyaWFudHMuCi0K LVsgUmVtb3ZlZCB0aGUgYGdkYi5jcC90ZW1wbGF0ZXMuZXhwJyBwYXRjaC4gIF0KLVsgVXBkYXRl ZCB0aGUgcGF0Y2ggZm9yICIoWCBsb2NhdGlvbiIpIG9mIEdEQi02LjgrLiAgXQotCi0tLS0gZ2Ri LTYuMy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb25zdHJ1Y3RvcnRlc3QuY2MuZml4CUZyaSBKYW4g MjEgMTc6MDY6NTYgMjAwNQotKysrIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3Ry dWN0b3J0ZXN0LmNjCUZyaSBKYW4gMjEgMTc6MDU6MTggMjAwNQorSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmNjCis9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CistLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCisr KysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5jcC9jb25zdHJ1Y3RvcnRl c3QuY2MJMjAxMS0xMi0xOSAyMjowNTowMi44MjU0MzE3MzUgKzAxMDAKIEBAIC0wLDAgKzEsOTkg QEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgog KwpAQCAtMTI3LDggKzEwMiwxMCBAQCBJbmRleDogZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKICt7 CiArICAgeSA9IDI7IC8qIEZpcnN0IGxpbmUgRCAqLwogK30KLS0tLSBnZGItNi4zL2dkYi90ZXN0 c3VpdGUvZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHAuZml4CUZyaSBKYW4gMjEgMTc6MDc6MDIg MjAwNQotKysrIGdkYi02LjMvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvY29uc3RydWN0b3J0ZXN0LmV4 cAlGcmkgSmFuIDIxIDE3OjA1OjI5IDIwMDUKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dk Yi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHAKKz09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAv ZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBnZGItNy40 LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLmNwL2NvbnN0cnVjdG9ydGVzdC5leHAJMjAx MS0xMi0xOSAyMzowNzoyNC4xNDgyOTA4OTMgKzAxMDAKIEBAIC0wLDAgKzEsMTMwIEBACiArIyBU aGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMjMy LDcgKzIwOSw3IEBAIEluZGV4OiBnZGIvdGVzdHN1aXRlL0NoYW5nZUxvZwogK3NldCBkZWZpbmVf bGluZV9kdG9yIFtnZGJfZ2V0X2xpbmVfbnVtYmVyICJEZXN0cnVjdG9yIEMiXQogKyMgQnJlYWsg b24gdGhlIHZhcmlvdXMgZm9ybXMgb2YgdGhlIEM6On5DIGRlc3RydWN0b3IKICsjICIgKFsyM10g bG9jYXRpb25zKSIgaXMgZGlzcGxheWVkIGRlcGVuZGluZyBvbiBHKysgdmVyc2lvbi4KLStnZGJf dGVzdCAiYnJlYWsgQ1w6XDp+QyIgIkJyZWFrcG9pbnQgLiosIGxpbmUgKCRkZWZpbmVfbGluZV9k dG9yfCRkZWZpbmVfbGluZV9kdG9yKVxcLi4qIiAiYnJlYWtpbmcgb24gQzo6fkMiCisrZ2RiX3Rl c3QgImJyZWFrIENcOlw6fkMiICJCcmVha3BvaW50IC4qOiBDOjp+Q1xcLiBcXCgyIGxvY2F0aW9u c1xcKSIgImJyZWFraW5nIG9uIEM6On5DIgogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJG aXJzdCBsaW5lIH5DIgogKwogKyMgVmVyaWZ5IHRoYXQgd2UgY2FuIGJyZWFrIGJ5IGxpbmUgbnVt YmVyIGluIGEgZGVzdHJ1Y3RvciBhbmQgZmluZAoKZGlmZiAtLWdpdCBhL2dkYi02LjMtdGVzdC1w aWUtMjAwNTAxMDcucGF0Y2ggYi9nZGItNi4zLXRlc3QtcGllLTIwMDUwMTA3LnBhdGNoCmluZGV4 IDBiNGEyZGIuLjYxMTE1NDEgMTAwNjQ0Ci0tLSBhL2dkYi02LjMtdGVzdC1waWUtMjAwNTAxMDcu cGF0Y2gKKysrIGIvZ2RiLTYuMy10ZXN0LXBpZS0yMDA1MDEwNy5wYXRjaApAQCAtMSwyOSArMSwy OSBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUu YWMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlLmFj CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyMC5vcmlnL2dkYi90ZXN0c3VpdGUv Y29uZmlndXJlLmFjCTIwMTEtMDMtMDMgMTc6NTc6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDExLTAzLTIwIDIw OjIxOjQzLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTkub3JpZy9nZGIv dGVzdHN1aXRlL2NvbmZpZ3VyZS5hYwkyMDExLTEyLTE5IDIxOjA3OjAyLjE3ODQ3MjE1NyArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUuYWMJMjAx MS0xMi0xOSAyMjowNTowMi43MDQ0MzIyMTMgKzAxMDAKIEBAIC05Nyw2ICs5Nyw2IEBAIEFDX09V VFBVVChbTWFrZWZpbGUgXAogICAgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5j b21wYXQvTWFrZWZpbGUgXAotICAgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIFwKKyAgIGdk Yi5ocC9nZGIuZGVmZWN0cy9NYWtlZmlsZSBnZGIubGluZXNwZWMvTWFrZWZpbGUgXAogICAgZ2Ri Lm1pL01ha2VmaWxlIGdkYi5tb2R1bGEyL01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBcCiAt ICBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUg Z2RiLnBhc2NhbC9NYWtlZmlsZSBcCiArICBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNsL01h a2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01ha2Vm aWxlIFwKICAgIGdkYi5weXRob24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0 YWJzL01ha2VmaWxlIFwKICAgIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmls ZSBnZGIueG1sL01ha2VmaWxlXSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0 c3VpdGUvY29uZmlndXJlCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRl L2NvbmZpZ3VyZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjAub3JpZy9nZGIv dGVzdHN1aXRlL2NvbmZpZ3VyZQkyMDExLTAzLTAzIDE3OjU3OjU1LjAwMDAwMDAwMCArMDEwMAot KysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMS0wMy0y MCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9jb25maWd1cmUJMjAxMS0xMi0xOSAyMTowNzowMi4xNzk0NzIxNTMgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvY29uZmlndXJlCTIwMTEt MTItMTkgMjI6MDU6MDIuNzM1NDMyMDkwICswMTAwCiBAQCAtMzQ0OCw3ICszNDQ4LDcgQEAgZG9u ZQogIAogIAogIAotLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBn ZGIuYWRhL01ha2VmaWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJh c2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20v TWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2Vy dmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2Ri Lm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5h Q0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3Rz L01ha2VmaWxlIGdkYi5taS9NYWtlZmlsZSBnZGIubW9kdWxhMi9NYWtlZmlsZSBnZGIubXVsdGkv TWFrZWZpbGUgZ2RiLm9iamMvTWFrZWZpbGUgZ2RiLm9wZW5jbC9NYWtlZmlsZSBnZGIub3B0L01h a2VmaWxlIGdkYi5wYXNjYWwvTWFrZWZpbGUgZ2RiLnB5dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJz ZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2RiLnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRy YWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCi0rYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29u ZmlnX2ZpbGVzIE1ha2VmaWxlIGdkYi5hZGEvTWFrZWZpbGUgZ2RiLmFyY2gvTWFrZWZpbGUgZ2Ri LmFzbS9NYWtlZmlsZSBnZGIuYmFzZS9NYWtlZmlsZSBnZGIuY2VsbC9NYWtlZmlsZSBnZGIuY3Av TWFrZWZpbGUgZ2RiLmRpc2FzbS9NYWtlZmlsZSBnZGIuZHdhcmYyL01ha2VmaWxlIGdkYi5mb3J0 cmFuL01ha2VmaWxlIGdkYi5zZXJ2ZXIvTWFrZWZpbGUgZ2RiLmphdmEvTWFrZWZpbGUgZ2RiLmhw L01ha2VmaWxlIGdkYi5ocC9nZGIub2JqZGJnL01ha2VmaWxlIGdkYi5ocC9nZGIuYmFzZS1ocC9N YWtlZmlsZSBnZGIuaHAvZ2RiLmFDQy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmNvbXBhdC9NYWtlZmls ZSBnZGIuaHAvZ2RiLmRlZmVjdHMvTWFrZWZpbGUgZ2RiLm1pL01ha2VmaWxlIGdkYi5tb2R1bGEy L01ha2VmaWxlIGdkYi5tdWx0aS9NYWtlZmlsZSBnZGIub2JqYy9NYWtlZmlsZSBnZGIub3BlbmNs L01ha2VmaWxlIGdkYi5vcHQvTWFrZWZpbGUgZ2RiLnBhc2NhbC9NYWtlZmlsZSBnZGIucGllL01h a2VmaWxlIGdkYi5weXRob24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0YWJz L01ha2VmaWxlIGdkYi50aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1s L01ha2VmaWxlIgorLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBn ZGIuYWRhL01ha2VmaWxlIGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJh c2UvTWFrZWZpbGUgZ2RiLmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20v TWFrZWZpbGUgZ2RiLmR3YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2Vy dmVyL01ha2VmaWxlIGdkYi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2Ri Lm9iamRiZy9NYWtlZmlsZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5h Q0MvTWFrZWZpbGUgZ2RiLmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3Rz L01ha2VmaWxlIGdkYi5saW5lc3BlYy9NYWtlZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVs YTIvTWFrZWZpbGUgZ2RiLm11bHRpL01ha2VmaWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVu Y2wvTWFrZWZpbGUgZ2RiLm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5weXRo b24vTWFrZWZpbGUgZ2RiLnJldmVyc2UvTWFrZWZpbGUgZ2RiLnN0YWJzL01ha2VmaWxlIGdkYi50 aHJlYWRzL01ha2VmaWxlIGdkYi50cmFjZS9NYWtlZmlsZSBnZGIueG1sL01ha2VmaWxlIgorK2Fj X2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBnZGIuYWRhL01ha2VmaWxl IGdkYi5hcmNoL01ha2VmaWxlIGdkYi5hc20vTWFrZWZpbGUgZ2RiLmJhc2UvTWFrZWZpbGUgZ2Ri LmNlbGwvTWFrZWZpbGUgZ2RiLmNwL01ha2VmaWxlIGdkYi5kaXNhc20vTWFrZWZpbGUgZ2RiLmR3 YXJmMi9NYWtlZmlsZSBnZGIuZm9ydHJhbi9NYWtlZmlsZSBnZGIuc2VydmVyL01ha2VmaWxlIGdk Yi5qYXZhL01ha2VmaWxlIGdkYi5ocC9NYWtlZmlsZSBnZGIuaHAvZ2RiLm9iamRiZy9NYWtlZmls ZSBnZGIuaHAvZ2RiLmJhc2UtaHAvTWFrZWZpbGUgZ2RiLmhwL2dkYi5hQ0MvTWFrZWZpbGUgZ2Ri LmhwL2dkYi5jb21wYXQvTWFrZWZpbGUgZ2RiLmhwL2dkYi5kZWZlY3RzL01ha2VmaWxlIGdkYi5s aW5lc3BlYy9NYWtlZmlsZSBnZGIubWkvTWFrZWZpbGUgZ2RiLm1vZHVsYTIvTWFrZWZpbGUgZ2Ri Lm11bHRpL01ha2VmaWxlIGdkYi5vYmpjL01ha2VmaWxlIGdkYi5vcGVuY2wvTWFrZWZpbGUgZ2Ri Lm9wdC9NYWtlZmlsZSBnZGIucGFzY2FsL01ha2VmaWxlIGdkYi5waWUvTWFrZWZpbGUgZ2RiLnB5 dGhvbi9NYWtlZmlsZSBnZGIucmV2ZXJzZS9NYWtlZmlsZSBnZGIuc3RhYnMvTWFrZWZpbGUgZ2Ri LnRocmVhZHMvTWFrZWZpbGUgZ2RiLnRyYWNlL01ha2VmaWxlIGdkYi54bWwvTWFrZWZpbGUiCiAg CiAgY2F0ID5jb25mY2FjaGUgPDxcX0FDRU9GCiAgIyBUaGlzIGZpbGUgaXMgYSBzaGVsbCBzY3Jp cHQgdGhhdCBjYWNoZXMgdGhlIHJlc3VsdHMgb2YgY29uZmlndXJlCi1AQCAtNDE3Myw2ICs0MTcz LDcgQEAgZG8KK0BAIC00MTc0LDYgKzQxNzQsNyBAQCBkbwogICAgICAiZ2RiLm9wZW5jbC9NYWtl ZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIub3BlbmNsL01ha2VmaWxlIiA7 OwogICAgICAiZ2RiLm9wdC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBn ZGIub3B0L01ha2VmaWxlIiA7OwogICAgICAiZ2RiLnBhc2NhbC9NYWtlZmlsZSIpIENPTkZJR19G SUxFUz0iJENPTkZJR19GSUxFUyBnZGIucGFzY2FsL01ha2VmaWxlIiA7OwpAQCAtMzEsMTAgKzMx LDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvY29uZmlndXJl CiAgICAgICJnZGIucHl0aG9uL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVT IGdkYi5weXRob24vTWFrZWZpbGUiIDs7CiAgICAgICJnZGIucmV2ZXJzZS9NYWtlZmlsZSIpIENP TkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIucmV2ZXJzZS9NYWtlZmlsZSIgOzsKICAgICAg ImdkYi5zdGFicy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnZGIuc3Rh YnMvTWFrZWZpbGUiIDs7Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRl L2dkYi5waWUvYXR0YWNoLmMKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9hdHRhY2guYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2F0dGFjaC5jCTIwMTEtMDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmMJMjAxMS0xMi0xOSAyMjowNTowMi43ODI0MzE5MDUgKzAxMDAKIEBAIC0wLDAgKzEsMjAgQEAK ICsvKiBUaGlzIHByb2dyYW0gaXMgaW50ZW5kZWQgdG8gYmUgc3RhcnRlZCBvdXRzaWRlIG9mIGdk YiwgYW5kIHRoZW4KICsgICBhdHRhY2hlZCB0byBieSBnZGIuICBUaHVzLCBpdCBzaW1wbHkgc3Bp bnMgaW4gYSBsb29wLiAgVGhlIGxvb3AKQEAgLTU2LDEwICs1NiwxMCBAQCBJbmRleDogZ2RiLTcu Mi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmMKICsgICAgfQogKyAg cmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2F0dGFjaDIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGllL2F0dGFjaDIuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2F0dGFjaDIuYwkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCAr MDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFj aDIuYwkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NjQzMTg4OSArMDEwMAogQEAgLTAsMCArMSwyNCBA QAogKy8qIFRoaXMgcHJvZ3JhbSBpcyBpbnRlbmRlZCB0byBiZSBzdGFydGVkIG91dHNpZGUgb2Yg Z2RiLCBhbmQgdGhlbgogKyAgIGF0dGFjaGVkIHRvIGJ5IGdkYi4gIFRodXMsIGl0IHNpbXBseSBz cGlucyBpbiBhIGxvb3AuICBUaGUgbG9vcApAQCAtODUsMTAgKzg1LDEwIEBAIEluZGV4OiBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2gyLmMKICsgICAgfQog KyAgcmV0dXJuICgwKTsKICt9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1 aXRlL2dkYi5waWUvYnJlYWsuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90 ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5jCTIwMTEtMDMtMjAgMjA6MjE6NDMuMDAwMDAwMDAwICsw MTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsu YwkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NzQzMTg4NSArMDEwMAogQEAgLTAsMCArMSwxNDYgQEAK ICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpA QCAtMjM2LDEwICsyMzYsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2JyZWFrLmMKICsgICAgfQogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdk Yi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCitJbmRleDog Z2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsxLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAK LSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwky MDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrMS5jCTIwMTEtMTItMTkgMjI6MDU6MDIuNzg3 NDMxODg1ICswMTAwCiBAQCAtMCwwICsxLDQ0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0 IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTI4NSwxMCArMjg1LDEwIEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhazEuYwogK3Zv aWQgbWFya2VyMyAoYSwgYikgY2hhciAqYSwgKmI7IHt9CS8qIHNldCBicmVha3BvaW50IDE4IGhl cmUgKi8KICt2b2lkIG1hcmtlcjQgKGQpIGxvbmcgZDsge30JCS8qIHNldCBicmVha3BvaW50IDEz IGhlcmUgKi8KICsjZW5kaWYKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3Vp dGUvZ2RiLnBpZS9jb3JlbWFrZXIuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rl c3RzdWl0ZS9nZGIucGllL2NvcmVtYWtlci5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDMy MC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvY29yZW1ha2VyLmMJMjAxMS0wMy0yMCAyMDoyMTo0My4w MDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2Ri LnBpZS9jb3JlbWFrZXIuYwkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NzQzMTg4NSArMDEwMAogQEAg LTAsMCArMSwxNDIgQEAKICsvKiBDb3B5cmlnaHQgMTk5MiwgMTk5MywgMTk5NCwgMTk5NSwgMTk5 NiwgMTk5OQogKyAgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMyLDEwICs0 MzIsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGll L2NvcmVtYWtlci5jCiArICByZXR1cm4gMDsKICt9CiArCi1JbmRleDogZ2RiLTcuMi41MC4yMDEx MDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAorSW5kZXg6IGdkYi03LjQuNTAu MjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2F0dGFjaC5leHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9hdHRhY2guZXhwCTIwMTEtMDMt MjAgMjA6MjU6NTMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIv dGVzdHN1aXRlL2dkYi5waWUvYXR0YWNoLmV4cAkyMDExLTEyLTE5IDIyOjA1OjAyLjc4NzQzMTg4 NSArMDEwMAogQEAgLTAsMCArMSw0MTcgQEAKICsjICAgQ29weXJpZ2h0IDE5OTcsIDE5OTksIDIw MDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC04NTQsMTEgKzg1NCwxMSBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYXR0YWNo LmV4cAogK2RvX2NhbGxfYXR0YWNoX3Rlc3RzCiArCiArcmV0dXJuIDAKLUluZGV4OiBnZGItNy4y LjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKK0luZGV4OiBnZGIt Ny40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9icmVhay5leHAJMjAx MS0wMy0yMCAyMDoyMTo0My4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsOTY2IEBACisrKysg Z2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCTIwMTEt MTItMTkgMjM6MTE6NTEuMDkyMzMzMDgwICswMTAwCitAQCAtMCwwICsxLDk2MiBAQAogKyMgICBD b3B5cmlnaHQgMTk4OCwgMTk5MCwgMTk5MSwgMTk5MiwgMTk5NCwgMTk5NSwgMTk5NiwgMTk5Nywg MTk5OCwgMTk5OSwKICsjICAgMjAwMCwgMjAwMiwgMjAwMywgMjAwNAogKyMgICBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTEyNDYsMTQgKzEyNDYsMTAgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL2JyZWFrLmV4cAogKyMgVmVyaWZ5 IHRoYXQgR0RCIHJlc3BvbmRzIGdyYWNlZnVsbHkgd2hlbiBhc2tlZCB0byBzZXQgYSBicmVha3Bv aW50CiArIyBvbiBhIG5vbmV4aXN0ZW50IHNvdXJjZSBsaW5lLgogKyMKLStzZW5kX2dkYiAiYnJl YWsgOTk5XG4iCi0rZ2RiX2V4cGVjdCB7Ci0rICAtcmUgIk5vIGxpbmUgOTk5IGluIGZpbGUgLiok Z2RiX3Byb21wdCAkIlwKLSsgICAgICAgICAge3Bhc3MgImJyZWFrIG9uIG5vbi1leGlzdGVudCBz b3VyY2UgbGluZSJ9Ci0rICAtcmUgIiRnZGJfcHJvbXB0ICQiXAotKyAgICAgICAgICB7ZmFpbCAi YnJlYWsgb24gbm9uLWV4aXN0ZW50IHNvdXJjZSBsaW5lIn0KLSsgIHRpbWVvdXQge2ZhaWwgIih0 aW1lb3V0KSBicmVhayBvbiBub24tZXhpc3RlbnQgc291cmNlIGxpbmUifQotK30KKytnZGJfdGVz dF9ub19vdXRwdXQgInNldCBicmVha3BvaW50IHBlbmRpbmcgb2ZmIgorK2dkYl90ZXN0ICJicmVh ayA5OTkiIFwKKysgICAgIk5vIGxpbmUgOTk5IGluIHRoZSBjdXJyZW50IGZpbGUuIiBcCisrICAg ICJicmVhayBvbiBub24tZXhpc3RlbnQgc291cmNlIGxpbmUiCiArCiArIyBSdW4gdG8gdGhlIGRl c2lyZWQgZGVmYXVsdCBsb2NhdGlvbi4gSWYgbm90IHBvc2l0aW9uZWQgaGVyZSwgdGhlCiArIyB0 ZXN0cyBiZWxvdyBkb24ndCB3b3JrLgpAQCAtMTgyNSwxMCArMTgyMSwxMCBAQCBJbmRleDogZ2Ri LTcuMi41MC4yMDExMDMyMC9nZGIvdGVzdHN1aXRlL2dkYi5waWUvYnJlYWsuZXhwCiArICAgIHNl bmRfZ2RiICJzZXQgYXJncyBtYWluXG4iCiArICAgIGdkYl9leHBlY3QgLXJlICIuKiRnZGJfcHJv bXB0ICQiIHt9CiArfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9n ZGIucGllL2NvcmVmaWxlLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3Rz dWl0ZS9nZGIucGllL2NvcmVmaWxlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcw LTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMTAzMjAv Z2RiL3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVmaWxlLmV4cAkyMDExLTAzLTIwIDIwOjIxOjQzLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIu cGllL2NvcmVmaWxlLmV4cAkyMDExLTEyLTE5IDIyOjA1OjAyLjc4ODQzMTg4MSArMDEwMAogQEAg LTAsMCArMSwyMzMgQEAKICsjIENvcHlyaWdodCAxOTkyLCAxOTkzLCAxOTk0LCAxOTk1LCAxOTk2 LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwCiArIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu Yy4KQEAgLTIwNjMsMTAgKzIwNTksMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2Ri L3Rlc3RzdWl0ZS9nZGIucGllL2NvcmVmaWxlLmV4cAogK2dkYl90ZXN0ICJ1cCIgIiNcWzAtOVxd KiAqXFswLTl4YS1mSCdcXSogaW4gLiogXFwoLipcXCkuKiIgInVwIGluIGNvcmVmaWxlLmV4cCAo cmVpbml0KSIKICsKICtnZGJfdGVzdCAiY29yZSIgIk5vIGNvcmUgZmlsZSBub3cuIgotSW5kZXg6 IGdkYi03LjIuNTAuMjAxMTAzMjAvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCitJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi5waWUvTWFrZWZpbGUu aW4KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzIwL2dkYi90ZXN0c3VpdGUvZ2RiLnBpZS9N YWtlZmlsZS5pbgkyMDExLTAzLTIwIDIwOjIxOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIucGllL01ha2VmaWxlLmluCTIwMTEtMTIt MTkgMjI6MDU6MDIuNzg4NDMxODgxICswMTAwCiBAQCAtMCwwICsxLDE5IEBACiArVlBBVEggPSBA c3JjZGlyQAogK3NyY2RpciA9IEBzcmNkaXJACgpkaWZmIC0tZ2l0IGEvZ2RiLTYuMy10aHJlYWRl ZC13YXRjaHBvaW50czItMjAwNTAyMjUucGF0Y2ggYi9nZGItNi4zLXRocmVhZGVkLXdhdGNocG9p bnRzMi0yMDA1MDIyNS5wYXRjaAppbmRleCAxODdhMzNlLi5hMjRjNDQ4IDEwMDY0NAotLS0gYS9n ZGItNi4zLXRocmVhZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaAorKysgYi9nZGItNi4z LXRocmVhZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaApAQCAtMzIsMTcgKzMyLDIwIEBA CiAJKGFtZDY0X2xpbnV4X2h3X2JyZWFrcG9pbnQsIGFtZDY0X2xpbnV4X3JlbW92ZV9od19icmVh a3BvaW50KTogRGl0dG8uCiAJKGFtZDY0X2xpbnV4X25ld190aHJlYWQpOiBEaXR0by4KIAkoX2lu aXRpYWxpemVfYW1kNjRfbGludXhfbmF0KTogUmVnaXN0ZXIgbGludXggbmV3IHRocmVhZCBvYnNl cnZlci4KLQkqIHRlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMyLmM6IE5ldyB0ZXN0 IGNhc2UuCi0JKiB0ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzMi5leHA6IERpdHRv LgorCSogdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRlZC5jOiBOZXcg dGVzdCBjYXNlLgorCSogdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRl ZC5leHA6IERpdHRvLgogCiBbIFdpdGggcmVjZW50IHVwc3RyZWFtIEdEQiAoNi44KSByZWR1Y2Vk IG9ubHkgdG8gdGhlIHRlc3RjYXNlLiAgXQogCitbIEl0IHdhcyBjYWxsZWQgd2F0Y2h0aHJlYWRz Mi57ZXhwLGN9IGJlZm9yZSBidXQgaXQgY29uZmxpY3RlZCB3aXRoIEZTRiBHREIgbmV3CisgIHRl c3RjYXNlIG9mIHRoZSBzYW1lIG5hbWUuICBdCisKIEZJWE1FOiBUaGUgdGVzdGNhc2UgZG9lcyBu b3QgZXhwZWN0cyBtdWx0aXBsZSB3YXRjaHBvaW50cyBoaXRzIHBlciBvbmUgc3RvcC4KIAotSW5k ZXg6IGdkYi02LjUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMyLmMKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0 aHJlYWRzLXRocmVhZGVkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAw MDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2h0aHJlYWRzLXRocmVhZGVkLmMJMjAwNi0wNy0xMiAwMTo1NDoyOS4wMDAwMDAw MDAgLTAzMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvd2F0Y2h0aHJlYWRzLXRocmVhZGVkLmMJMjAxMS0xMi0xOSAyMjowNTowMi44Njc0MzE1NzAg KzAxMDAKIEBAIC0wLDAgKzEsNjYgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RC LCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTEwLDEwICsxMTMsMTAgQEAgSW5kZXg6IGdkYi02 LjUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMyLmMKICsgICAgcHRocmVh ZF9leGl0KE5VTEwpOwogK30KICsKLUluZGV4OiBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2h0aHJlYWRzMi5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2h0aHJlYWRzLXRocmVhZGVkLmV4cAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi02LjUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHRocmVhZHMtdGhyZWFkZWQu ZXhwCTIwMDYtMDctMTIgMDE6NTQ6MjkuMDAwMDAwMDAwIC0wMzAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkcy10aHJlYWRlZC5l eHAJMjAxMS0xMi0xOSAyMjoyODozMy4yOTQ5MTE5ODIgKzAxMDAKIEBAIC0wLDAgKzEsMTI2IEBA CiArIyBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpA QCAtMTQxLDcgKzE0NCw3IEBAIEluZGV4OiBnZGItNi41L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvd2F0Y2h0aHJlYWRzMi5leHAKICsgICAgcmV0dXJuIDA7CiArfQogKwotK3NldCB0ZXN0Zmls ZSAid2F0Y2h0aHJlYWRzMiIKKytzZXQgdGVzdGZpbGUgIndhdGNodGhyZWFkcy10aHJlYWRlZCIK ICtzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5jCiArc2V0IGJpbmZpbGUgJHtvYmpkaXJ9LyR7c3Vi ZGlyfS8ke3Rlc3RmaWxlfQogK2lmIHtbZ2RiX2NvbXBpbGVfcHRocmVhZHMgIiR7c3JjZGlyfS8k e3N1YmRpcn0vJHtzcmNmaWxlfSIgIiR7YmluZmlsZX0iIGV4ZWN1dGFibGUgW2xpc3QgZGVidWcg ImluY2Rpcj0ke29iamRpcn0iXV0gIT0gIiIgfSB7CkBAIC0xOTgsMTMgKzIwMSwxMyBAQCBJbmRl eDogZ2RiLTYuNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNodGhyZWFkczIuZXhwCiAr Zm9yIHtzZXQgaSAwfSB7JGkgPCAzMH0ge2luY3IgaX0gewogKyAgc2V0IHRlc3RfZmxhZyAwCiAr ICBnZGJfdGVzdF9tdWx0aXBsZSAiY29udGludWUiICJ0aHJlYWRlZCB3YXRjaCBsb29wIiB7Ci0r ICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCAzOiBhcmdzXFxcWzJcXFxdLipPbGQgdmFsdWUg PSAwLipOZXcgdmFsdWUgPSAxLiptYWluIFxcXChcXFwpIGF0IC4qd2F0Y2h0aHJlYWRzMi5jOiRp bml0X2xpbmUuKiRnZGJfcHJvbXB0ICQiCisrICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCAz OiBhcmdzXFxcWzJcXFxdLipPbGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLiptYWluIFxcXChc XFwpIGF0IC4qd2F0Y2h0aHJlYWRzLXRocmVhZGVkLmM6JGluaXRfbGluZS4qJGdkYl9wcm9tcHQg JCIKICsgICAgICAgeyBzZXQgYXJnc18yIDE7IHNldCB0ZXN0X2ZsYWcgMSB9Ci0rICAgIC1yZSAi SGFyZHdhcmUgd2F0Y2hwb2ludCA0OiBhcmdzXFxcWzNcXFxdLipPbGQgdmFsdWUgPSAwLipOZXcg dmFsdWUgPSAxLiptYWluIFxcXChcXFwpIGF0IC4qd2F0Y2h0aHJlYWRzMi5jOiRpbml0X2xpbmUu KiRnZGJfcHJvbXB0ICQiCisrICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCA0OiBhcmdzXFxc WzNcXFxdLipPbGQgdmFsdWUgPSAwLipOZXcgdmFsdWUgPSAxLiptYWluIFxcXChcXFwpIGF0IC4q d2F0Y2h0aHJlYWRzLXRocmVhZGVkLmM6JGluaXRfbGluZS4qJGdkYl9wcm9tcHQgJCIKICsgICAg ICAgeyBzZXQgYXJnc18zIDE7IHNldCB0ZXN0X2ZsYWcgMSB9Ci0rICAgIC1yZSAiSGFyZHdhcmUg d2F0Y2hwb2ludCAzOiBhcmdzXFxcWzJcXFxdLipPbGQgdmFsdWUgPSAkYXJnc18yLipOZXcgdmFs dWUgPSBbZXhwciAkYXJnc18yKzFdLippbiB0aHJlYWRfZnVuY3Rpb24gXFxcKGFyZz0weDJcXFwp IGF0IC4qd2F0Y2h0aHJlYWRzMi5jOiRpbmNfbGluZS4qJGdkYl9wcm9tcHQgJCIKKysgICAgLXJl ICJIYXJkd2FyZSB3YXRjaHBvaW50IDM6IGFyZ3NcXFxbMlxcXF0uKk9sZCB2YWx1ZSA9ICRhcmdz XzIuKk5ldyB2YWx1ZSA9IFtleHByICRhcmdzXzIrMV0uKmluIHRocmVhZF9mdW5jdGlvbiBcXFwo YXJnPTB4MlxcXCkgYXQgLip3YXRjaHRocmVhZHMtdGhyZWFkZWQuYzokaW5jX2xpbmUuKiRnZGJf cHJvbXB0ICQiCiArICAgICAgIHsgc2V0IGFyZ3NfMiBbZXhwciAkYXJnc18yKzFdOyBzZXQgdGVz dF9mbGFnIDEgfQotKyAgICAtcmUgIkhhcmR3YXJlIHdhdGNocG9pbnQgNDogYXJnc1xcXFszXFxc XS4qT2xkIHZhbHVlID0gJGFyZ3NfMy4qTmV3IHZhbHVlID0gW2V4cHIgJGFyZ3NfMysxXS4qaW4g dGhyZWFkX2Z1bmN0aW9uIFxcXChhcmc9MHgzXFxcKSBhdCAuKndhdGNodGhyZWFkczIuYzokaW5j X2xpbmUuKiRnZGJfcHJvbXB0ICQiCisrICAgIC1yZSAiSGFyZHdhcmUgd2F0Y2hwb2ludCA0OiBh cmdzXFxcWzNcXFxdLipPbGQgdmFsdWUgPSAkYXJnc18zLipOZXcgdmFsdWUgPSBbZXhwciAkYXJn c18zKzFdLippbiB0aHJlYWRfZnVuY3Rpb24gXFxcKGFyZz0weDNcXFwpIGF0IC4qd2F0Y2h0aHJl YWRzLXRocmVhZGVkLmM6JGluY19saW5lLiokZ2RiX3Byb21wdCAkIgogKyAgICAgICB7IHNldCBh cmdzXzMgW2V4cHIgJGFyZ3NfMysxXTsgc2V0IHRlc3RfZmxhZyAxIH0KICsgIH0KICsgICMgSWYg d2UgZmFpbCBhYm92ZSwgZG9uJ3QgYm90aGVyIGNvbnRpbnVpbmcgbG9vcAoKZGlmZiAtLWdpdCBh L2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2ggYi9nZGItNi42LWJ1aWxk aWQtbG9jYXRlLWNvcmUtYXMtYXJnLnBhdGNoCmluZGV4IGI5ZDExMzQuLmRlMWNjYWQgMTAwNjQ0 Ci0tLSBhL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUtY29yZS1hcy1hcmcucGF0Y2gKKysrIGIvZ2Ri LTYuNi1idWlsZGlkLWxvY2F0ZS1jb3JlLWFzLWFyZy5wYXRjaApAQCAtNTgsMTMgKzU4LDEzIEBA IEh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDEwLTAxL21zZzAwNTE3Lmh0 bWwKIAkqIGV4ZWMuYyAoZXhlY19maWxlX2F0dGFjaCk6IFByaW50IGEgbW9yZSB1c2VmdWwgZXJy b3IgbWVzc2FnZSBpZiB0aGUKIAl1c2VyIGRpZCAiZ2RiIGNvcmUiLgogCi1JbmRleDogZ2RiLTcu Mi41MC4yMDExMDIxOC9nZGIvZXhjZXB0aW9ucy5oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvZXhjZXB0aW9ucy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxOC5v cmlnL2dkYi9leGNlcHRpb25zLmgJMjAxMS0wMi0xNCAxMjozNTo0NC4wMDAwMDAwMDAgKzAxMDAK LSsrKyBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi9leGNlcHRpb25zLmgJMjAxMS0wMi0xOCAxMDo0 NTozMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC04NSw2ICs4NSw5IEBAIGVudW0gZXJyb3JzIHsKLSAg ICAgIHRyYWNlZnJhbWUuICAqLwotICAgTk9UX0FWQUlMQUJMRV9FUlJPUiwKKy0tLSBnZGItNy40 LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2V4Y2VwdGlvbnMuaAkyMDExLTEwLTA5IDIxOjIxOjM4LjAw MDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2V4Y2VwdGlvbnMuaAky MDExLTEyLTE5IDAxOjQxOjIwLjkwMDUwOTM0NyArMDEwMAorQEAgLTg4LDYgKzg4LDkgQEAgZW51 bSBlcnJvcnMgeworICAgLyogRFdfT1BfR05VX2VudHJ5X3ZhbHVlIHJlc29sdmluZyBmYWlsZWQu ICAqLworICAgTk9fRU5UUllfVkFMVUVfRVJST1IsCiAgCiArICAvKiBBdHRlbXB0IHRvIGxvYWQg YSBjb3JlIGZpbGUgYXMgZXhlY3V0YWJsZS4gICovCiArICBJU19DT1JFX0VSUk9SLApAQCAtNzIs MTEgKzcyLDExIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi9leGNlcHRpb25zLmgK ICAgIC8qIEFkZCBtb3JlIGVycm9ycyBoZXJlLiAgKi8KICAgIE5SX0VSUk9SUwogIH07Ci1JbmRl eDogZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvZXhlYy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvZXhlYy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDIxOC5vcmln L2dkYi9leGVjLmMJMjAxMS0wMi0xNCAyMzowODo0OC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGIt Ny4yLjUwLjIwMTEwMjE4L2dkYi9leGVjLmMJMjAxMS0wMi0xOCAxMDo0NToxNi4wMDAwMDAwMDAg KzAxMDAKLUBAIC0zNCw2ICszNCw3IEBACistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dk Yi9leGVjLmMJMjAxMS0wMy0yMyAxOToyMzo1NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40 LjUwLjIwMTExMjE4L2dkYi9leGVjLmMJMjAxMS0xMi0xOSAwMTo0MTowNC44NjM1Njg4NDYgKzAx MDAKK0BAIC0zNSw2ICszNSw3IEBACiAgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKICAjaW5jbHVk ZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgpAQCAtODQsNyArODQsNyBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDIxOC9nZGIvZXhlYy5jCiAgCiAgI2luY2x1ZGUgPGZj bnRsLmg+CiAgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMjUzLDEyICsyNTQs MjcgQEAgZXhlY19maWxlX2F0dGFjaCAoY2hhciAqZmlsZW5hbWUsIGludCBmcgorQEAgLTI1NCwx MiArMjU1LDI3IEBAIGV4ZWNfZmlsZV9hdHRhY2ggKGNoYXIgKmZpbGVuYW1lLCBpbnQgZnIKICAK ICAgICAgICBpZiAoIWJmZF9jaGVja19mb3JtYXRfbWF0Y2hlcyAoZXhlY19iZmQsIGJmZF9vYmpl Y3QsICZtYXRjaGluZykpCiAgCXsKQEAgLTExNSwxMSArMTE1LDExIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTEwMjE4L2dkYi9leGVjLmMKICAJfQogIAogICAgICAgIC8qIEZJWE1FIC0gVGhpcyBz aG91bGQgb25seSBiZSBydW4gZm9yIFJTNjAwMCwgYnV0IHRoZSBpZmRlZiBpcyBhIHBvb3IKLUlu ZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi9tYWluLmMKK0luZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9tYWluLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMjE4Lm9y aWcvZ2RiL21haW4uYwkyMDExLTAyLTE4IDEwOjQ0OjE3LjAwMDAwMDAwMCArMDEwMAotKysrIGdk Yi03LjIuNTAuMjAxMTAyMTgvZ2RiL21haW4uYwkyMDExLTAyLTE4IDEwOjQ1OjE2LjAwMDAwMDAw MCArMDEwMAotQEAgLTI0Myw2ICsyNDMsMzYgQEAgY2FwdHVyZWRfY29tbWFuZF9sb29wICh2b2lk ICpkYXRhKQorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvbWFpbi5jCTIwMTEtMTIt MTkgMDA6Mjg6MDEuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIv bWFpbi5jCTIwMTEtMTItMTkgMDE6NDE6MDQuODYzNTY4ODQ2ICswMTAwCitAQCAtMjQ4LDYgKzI0 OCwzNiBAQCBjYXB0dXJlZF9jb21tYW5kX2xvb3AgKHZvaWQgKmRhdGEpCiAgICByZXR1cm4gMTsK ICB9CiAgCkBAIC0xNTYsNyArMTU2LDcgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAyMTgvZ2Ri L21haW4uYwogIHN0YXRpYyBpbnQKICBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIHsKLUBA IC03MjcsNiArNzU3LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKK0BAIC03MDQsNiAr NzM0LDggQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAJewogIAkgIHN5bWFyZyA9IGFy Z3Zbb3B0aW5kXTsKICAJICBleGVjYXJnID0gYXJndltvcHRpbmRdOwpAQCAtMTY1LDcgKzE2NSw3 IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMjE4L2dkYi9tYWluLmMKICAJICBvcHRpbmQrKzsK ICAJfQogIAotQEAgLTg2OCwxMSArOTAwLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CitAQCAtODQ1LDExICs4NzcsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgICAg ICAmJiBzeW1hcmcgIT0gTlVMTAogICAgICAgICYmIHN0cmNtcCAoZXhlY2FyZywgc3ltYXJnKSA9 PSAwKQogICAgICB7CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS1ycG0ucGF0 Y2ggYi9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAppbmRleCA4MjEwZDE4Li40NDkw ZGYzIDEwMDY0NAotLS0gYS9nZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaAorKysgYi9n ZGItNi42LWJ1aWxkaWQtbG9jYXRlLXJwbS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ldmVudC10b3AuYworSW5kZXg6IGdkYi03LjQuNTAuMjAx MTEyMTgvZ2RiL2V2ZW50LXRvcC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9ldmVudC10b3AuYwkyMDExLTA3LTIxIDEzOjAzOjQ1LjAwMDAwMDAwMCArMDIw MAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMDctMjIgMTk6 Mjg6NDkuMDAwMDAwMDAwICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9l dmVudC10b3AuYwkyMDExLTA5LTIxIDE3OjIxOjI4LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL2V2ZW50LXRvcC5jCTIwMTEtMTItMTkgMDE6MTg6NTYuMDg3NTM5 MjUxICswMTAwCiBAQCAtMzYsNiArMzYsNyBAQAogICNpbmNsdWRlICJvYnNlcnZlci5oIgogICNp bmNsdWRlICJjb250aW51YXRpb25zLmgiCkBAIC0xMCwxNiArMTAsMTYgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2V2ZW50LXRvcC5jCiAgCiAgLyogcmVhZGxpbmUgaW5jbHVkZSBm aWxlcy4gICovCiAgI2luY2x1ZGUgInJlYWRsaW5lL3JlYWRsaW5lLmgiCi1AQCAtMTkzLDYgKzE5 NCw4IEBAIGNsaV9jb21tYW5kX2xvb3AgKHZvaWQpCi0gICAgICAgY2hhciAqYV9wcm9tcHQ7Ci0g ICAgICAgY2hhciAqZ2RiX3Byb21wdCA9IGdldF9wcm9tcHQgKCk7Ci0gCi0rICAgICAgZGVidWdf Zmx1c2hfbWlzc2luZyAoKTsKK0BAIC0xNzYsNiArMTc3LDggQEAgcmxfY2FsbGJhY2tfcmVhZF9j aGFyX3dyYXBwZXIgKGdkYl9jbGllbgorIHZvaWQKKyBjbGlfY29tbWFuZF9sb29wICh2b2lkKQor IHsKKysgIGRlYnVnX2ZsdXNoX21pc3NpbmcgKCk7CiArCi0gICAgICAgLyogVGVsbCByZWFkbGlu ZSB3aGF0IHRoZSBwcm9tcHQgdG8gZGlzcGxheSBpcyBhbmQgd2hhdCBmdW5jdGlvbgotICAgICAg ICAgIGl0IHdpbGwgbmVlZCB0byBjYWxsIGFmdGVyIGEgd2hvbGUgbGluZSBpcyByZWFkLiAgVGhp cyBhbHNvCi0gICAgICAgICAgZGlzcGxheXMgdGhlIGZpcnN0IHByb21wdC4gICovCi1AQCAtMjY0 LDYgKzI2Nyw4IEBAIGRpc3BsYXlfZ2RiX3Byb21wdCAoY2hhciAqbmV3X3Byb21wdCkKKyAgIGRp c3BsYXlfZ2RiX3Byb21wdCAoMCk7CisgCisgICAvKiBOb3cgaXQncyB0aW1lIHRvIHN0YXJ0IHRo ZSBldmVudCBsb29wLiAgKi8KK0BAIC0yNDEsNiArMjQ0LDggQEAgZGlzcGxheV9nZGJfcHJvbXB0 IChjaGFyICpuZXdfcHJvbXB0KQogICAgLyogUmVzZXQgdGhlIG5lc3RpbmcgZGVwdGggdXNlZCB3 aGVuIHRyYWNlLWNvbW1hbmRzIGlzIHNldC4gICovCiAgICByZXNldF9jb21tYW5kX25lc3RfZGVw dGggKCk7CiAgCkBAIC0yOCwxMSArMjgsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2V2ZW50LXRvcC5jCiAgICAvKiBFYWNoIGludGVycHJldGVyIGhhcyBpdHMgb3duIHJ1bGVz IG9uIGRpc3BsYXlpbmcgdGhlIGNvbW1hbmQKICAgICAgIHByb21wdC4gICovCiAgICBpZiAoIWN1 cnJlbnRfaW50ZXJwX2Rpc3BsYXlfcHJvbXB0X3AgKCkpCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZWxmcmVh ZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9lbGZyZWFk LmMJMjAxMS0wNy0yMiAxOToyNjo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9lbGZyZWFkLmMJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAK LUBAIC00OSw2ICs0OSw3IEBACistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9lbGZy ZWFkLmMJMjAxMS0xMi0xOSAwMDo1NDowOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9lbGZyZWFkLmMJMjAxMS0xMi0xOSAwMToxNjoxNS4yNDg0NTU4OTcgKzAx MDAKK0BAIC00Nyw2ICs0Nyw3IEBACiAgI2luY2x1ZGUgImdkYmNvcmUuaCIKICAjaW5jbHVkZSAi Z2RiY21kLmgiCiAgI2luY2x1ZGUgIm9ic2VydmVyLmgiCkBAIC00MCw3ICs0MCw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAjaW5jbHVkZSA8c3lzL3N0YXQu aD4KICAKICBleHRlcm4gdm9pZCBfaW5pdGlhbGl6ZV9lbGZyZWFkICh2b2lkKTsKLUBAIC0xNjUy LDggKzE2NTMsMzYxIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVpbGRfaWQgKmIK K0BAIC0xNjIyLDggKzE2MjMsMzYxIEBAIGJ1aWxkX2lkX3RvX2ZpbGVuYW1lIChzdHJ1Y3QgYnVp bGRfaWQgKmIKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNDAzLDcgKzQwMyw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAgICBhdm9pZGFuY2UuICAq LwogIAogIHN0cnVjdCBtaXNzaW5nX2ZpbGVwYWlyCi1AQCAtMTcwNywxMSArMjA2MSwxNyBAQCBt aXNzaW5nX2ZpbGVwYWlyX2NoYW5nZSAodm9pZCkKK0BAIC0xNjc3LDExICsyMDMxLDE3IEBAIG1p c3NpbmdfZmlsZXBhaXJfY2hhbmdlICh2b2lkKQogICAgICAgIC8qIEFsbCB0aGVpciBtZW1vcnkg Y2FtZSBqdXN0IGZyb20gbWlzc2luZ19maWxlcGFpcl9PQlNUQUNLLiAgKi8KICAgICAgICBtaXNz aW5nX2ZpbGVwYWlyX2hhc2ggPSBOVUxMOwogICAgICB9CkBAIC00MjEsNyArNDIxLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogICAgbWlzc2luZ19maWxlcGFp cl9jaGFuZ2UgKCk7CiAgfQogIAotQEAgLTE3NzgsMTQgKzIxMzgsMzUgQEAgZGVidWdfcHJpbnRf bWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAorQEAgLTE3NDgsMTQgKzIxMDgsMzUgQEAgZGVi dWdfcHJpbnRfbWlzc2luZyAoY29uc3QgY2hhciAqYmluYXJ5LAogIAogICAgKnNsb3QgPSBtaXNz aW5nX2ZpbGVwYWlyOwogIApAQCAtNDY0LDExICs0NjQsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogIH0KICAKICBzdGF0aWMgY2hhciAqCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvc3ltZmlsZS5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yMiAxOToyNzowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yMiAxOToyODozNC4wMDAw MDAwMDAgKzAyMDAKLUBAIC02MTUsNiArNjE1LDggQEAgZXh0ZXJuIHN0cnVjdCBidWlsZF9pZCAq YnVpbGRfaWRfYWRkcl9nZQorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3ltZmls ZS5oCTIwMTEtMTItMTkgMDA6NTQ6MDkuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvc3ltZmlsZS5oCTIwMTEtMTItMTkgMDE6MTY6MTUuMjQ5NDU1ODkzICswMTAw CitAQCAtNTY4LDYgKzU2OCw4IEBAIGV4dGVybiBzdHJ1Y3QgYnVpbGRfaWQgKmJ1aWxkX2lkX2Fk ZHJfZ2UKICBleHRlcm4gY2hhciAqYnVpbGRfaWRfdG9fZmlsZW5hbWUgKHN0cnVjdCBidWlsZF9p ZCAqYnVpbGRfaWQsCiAgCQkJCSAgIGNoYXIgKipsaW5rX3JldHVybiwgaW50IGFkZF9kZWJ1Z19z dWZmaXgpOwogIGV4dGVybiB2b2lkIGRlYnVnX3ByaW50X21pc3NpbmcgKGNvbnN0IGNoYXIgKmJp bmFyeSwgY29uc3QgY2hhciAqZGVidWcpOwpAQCAtNDc3LDExICs0NzcsMTEgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAogIAogIC8qIEZyb20gZHdhcmYycmVhZC5j ICovCiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIu ZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUv bGliL2dkYi5leHAJMjAxMS0wNy0yMiAxOToyNjo0Ni4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0wNy0yMiAxOToy ODozNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzkwLDcgKzEzOTAsNyBAQCBwcm9jIGRlZmF1bHRf Z2RiX3N0YXJ0IHsgfSB7CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90ZXN0c3Vp dGUvbGliL2dkYi5leHAJMjAxMS0xMi0xOSAwMDo1NDowOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMS0xMi0xOSAw MToxNjoxNS4yNTA0NTU4ODkgKzAxMDAKK0BAIC0xMzg3LDcgKzEzODcsNyBAQCBwcm9jIGRlZmF1 bHRfZ2RiX3N0YXJ0IHsgfSB7CiAgCSAgICB3YXJuaW5nICJDb3VsZG4ndCBzZXQgdGhlIHdpZHRo IHRvIDAuIgogIAl9CiAgICAgIH0KQEAgLTQ5MCwyMyArNDkwLDIzIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAgICAgc2VuZF9nZGIgInNl dCBidWlsZC1pZC12ZXJib3NlIDBcbiIKICAgICAgZ2RiX2V4cGVjdCAxMCB7CiAgCS1yZSAiJGdk Yl9wcm9tcHQgJCIgewotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3Vp dGUvbGliL21pLXN1cHBvcnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQuZXhwCTIwMTEtMDctMjIgMTk6MjY6 NDYuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAot QEAgLTIyMiw3ICsyMjIsNyBAQCBwcm9jIGRlZmF1bHRfbWlfZ2RiX3N0YXJ0IHsgYXJncyB9IHsK LSAJICAgIH0KLSAgICAgCX0KKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAJMjAxMS0xMi0xOSAwMDo1NDo0OS4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvbGliL21pLXN1cHBvcnQu ZXhwCTIwMTEtMTItMTkgMDE6MjA6MzQuOTIxMTYzOTc3ICswMTAwCitAQCAtMjEyLDcgKzIxMiw3 IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0geworIAkgICAgd2FybmluZyAi Q291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKKyAJfQogICAgICB9CiAtICAgICMgVHVybiBv ZmYgdGhlIG1pc3Npbmcgd2FybmluZ3MgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzIG5vdCBleHBlY3Qg aXQuCiArICAgICMgVHVybiBvZmYgdGhlIG1pc3NpbmcgUlBNcyB3YXJuaW5ncyBhcyB0aGUgdGVz dHN1aXRlIGRvZXMgbm90IGV4cGVjdCBpdC4KICAgICAgc2VuZF9nZGIgIjE5MC1nZGItc2V0IGJ1 aWxkLWlkLXZlcmJvc2UgMFxuIgogICAgICBnZGJfZXhwZWN0IDEwIHsKICAJLXJlICIuKjE5MC1n ZGItc2V0IGJ1aWxkLWlkLXZlcmJvc2UgMFxyXG4xOTBcXFxeZG9uZVxyXG4kbWlfZ2RiX3Byb21w dCQiIHsKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90dWkvdHVpLWludGVycC5jCitJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdHVpL3R1aS1pbnRlcnAuYwogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdHVpL3R1aS1pbnRlcnAuYwkyMDEx LTAxLTAxIDE2OjMzOjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMS0wNy0yMiAxOToyODozNC4wMDAwMDAwMDAgKzAyMDAK Ky0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3R1aS90dWktaW50ZXJwLmMJMjAxMS0w OS0xMiAyMzoyNDo1MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi90dWkvdHVpLWludGVycC5jCTIwMTEtMTItMTkgMDE6MTY6MTUuMjUyNDU1ODgzICswMTAwCiBA QCAtMzEsNiArMzEsNyBAQAogICNpbmNsdWRlICJ0dWkvdHVpLmgiCiAgI2luY2x1ZGUgInR1aS90 dWktaW8uaCIKQEAgLTUxNSwxOSArNTE1LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90dWkvdHVpLWludGVycC5jCiAgCiAgLyogU2V0IHRvIDEgd2hlbiB0aGUgVFVJIG1vZGUg bXVzdCBiZSBhY3RpdmF0ZWQgd2hlbiB3ZSBmaXJzdCBzdGFydAogICAgIGdkYi4gICovCi1AQCAt MTQ3LDYgKzE0OCw4IEBAIHR1aV9jb21tYW5kX2xvb3AgKHZvaWQgKmRhdGEpCi0gICAgICAgY2hh ciAqYV9wcm9tcHQ7Ci0gICAgICAgY2hhciAqZ2RiX3Byb21wdCA9IGdldF9wcm9tcHQgKCk7Ci0g Ci0rICAgICAgZGVidWdfZmx1c2hfbWlzc2luZyAoKTsKLSsKLSAgICAgICAvKiBUZWxsIHJlYWRs aW5lIHdoYXQgdGhlIHByb21wdCB0byBkaXNwbGF5IGlzIGFuZCB3aGF0IGZ1bmN0aW9uCi0gICAg ICAgICAgaXQgd2lsbCBuZWVkIHRvIGNhbGwgYWZ0ZXIgYSB3aG9sZSBsaW5lIGlzIHJlYWQuIFRo aXMgYWxzbwotICAgICAgICAgIGRpc3BsYXlzIHRoZSBmaXJzdCBwcm9tcHQuICAqLwotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FjbG9jYWwubTQKK0luZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9hY2xvY2FsLm00CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9hY2xvY2FsLm00CTIwMTEtMDItMTUgMjI6MDU6NTMuMDAwMDAwMDAwICswMTAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWNsb2NhbC5tNAkyMDExLTA3LTIyIDE5OjI4 OjM0LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvYWNs b2NhbC5tNAkyMDExLTAyLTE1IDIyOjA1OjUzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL2FjbG9jYWwubTQJMjAxMS0xMi0xOSAwMToxNjoxNS4yNTI0NTU4ODMg KzAxMDAKIEBAIC0xOSw2ICsxOSwxNjIgQEAgWW91IGhhdmUgYW5vdGhlciB2ZXJzaW9uIG9mIGF1 dG9jb25mLiAgSQogIElmIHlvdSBoYXZlIHByb2JsZW1zLCB5b3UgbWF5IG5lZWQgdG8gcmVnZW5l cmF0ZSB0aGUgYnVpbGQgc3lzdGVtIGVudGlyZWx5LgogIFRvIGRvIHNvLCB1c2UgdGhlIHByb2Nl ZHVyZSBkb2N1bWVudGVkIGJ5IHRoZSBwYWNrYWdlLCB0eXBpY2FsbHkgYGF1dG9yZWNvbmYnLl0p XSkKQEAgLTY5MSwxMCArNjgyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9h Y2xvY2FsLm00CiAgIyBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMsIDIwMDUsIDIwMDYsIDIwMDcs IDIwMDggIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgogICMKICAjIFRoaXMgZmlsZSBp cyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlnLmluCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvY29uZmlnLmluCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi9jb25maWcuaW4JMjAxMS0wNS0xMiAwMTozODozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcuaW4JMjAxMS0wNy0yMiAxOToyODozNC4wMDAw MDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZpZy5pbgky MDExLTExLTIwIDA5OjU5OjU2LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL2NvbmZpZy5pbgkyMDExLTEyLTE5IDAxOjE2OjE1LjI1MzQ1NTg3OSArMDEwMAogQEAg LTQ2LDYgKzQ2LDkgQEAKICAvKiBEZWZpbmUgdG8gQkZEJ3MgZGVmYXVsdCB0YXJnZXQgdmVjdG9y LiAqLwogICN1bmRlZiBERUZBVUxUX0JGRF9WRUMKQEAgLTcxNSwxMSArNzA2LDExIEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcuaW4KICAvKiBEZWZpbmUgaWYgbGlidW53 aW5kIGxpYnJhcnkgaXMgYmVpbmcgdXNlZC4gKi8KICAjdW5kZWYgSEFWRV9MSUJVTldJTkQKICAK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWd1cmUKK0luZGV4OiBnZGItNy40 LjUwLjIwMTExMjE4L2dkYi9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIw MTEwNzIyLm9yaWcvZ2RiL2NvbmZpZ3VyZQkyMDExLTA1LTEyIDAxOjM4OjM4LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZQkyMDExLTA3LTIyIDE5 OjI4OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTY4Miw2ICs2ODIsOSBAQCBSRVBPUlRfQlVHU19U TworLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvY29uZmlndXJlCTIwMTEtMTEtMjAg MDk6NTk6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29u ZmlndXJlCTIwMTEtMTItMTkgMDE6MTY6MTUuMjU2NDU1ODY3ICswMTAwCitAQCAtNjg0LDYgKzY4 NCw5IEBAIFJFUE9SVF9CVUdTX1RPCiAgUEtHVkVSU0lPTgogIFRBUkdFVF9PQlMKICBzdWJkaXJz CkBAIC03MjksNyArNzIwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZp Z3VyZQogIEdEQl9EQVRBRElSCiAgREVCVUdESVIKICBhbV9fZmFzdGRlcENDX0ZBTFNFCi1AQCAt OTQ4LDYgKzk1MSw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCitAQCAtOTUyLDYgKzk1 NSw3IEBAIGVuYWJsZV9kZXBlbmRlbmN5X3RyYWNraW5nCiAgd2l0aF9zZXBhcmF0ZV9kZWJ1Z19k aXIKICB3aXRoX2dkYl9kYXRhZGlyCiAgd2l0aF9yZWxvY2F0ZWRfc291cmNlcwpAQCAtNzM3LDcg KzcyOCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWd1cmUKICBlbmFi bGVfdGFyZ2V0cwogIGVuYWJsZV82NF9iaXRfYmZkCiAgZW5hYmxlX2dkYmNsaQotQEAgLTk5MCw2 ICs5OTQsOSBAQCBMREZMQUdTCitAQCAtOTk1LDYgKzk5OSw5IEBAIExERkxBR1MKICBMSUJTCiAg Q1BQRkxBR1MKICBDUFAKQEAgLTc0Nyw3ICs3MzgsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvY29uZmlndXJlCiAgWUFDQwogIFlGTEFHUwogIFhNS01GJwotQEAgLTE2NTMsNiAr MTY2MCw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorQEAgLTE2NTgsNiArMTY2NSw4IEBAIE9wdGlv bmFsIFBhY2thZ2VzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgW0RBVEFESVIvZ2RiXQog ICAgLS13aXRoLXJlbG9jYXRlZC1zb3VyY2VzPVBBVEgKICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGF1dG9tYXRpY2FsbHkgcmVsb2NhdGUgdGhpcyBwYXRoIGZvciBzb3VyY2UgZmlsZXMKQEAg LTc1Niw3ICs3NDcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlndXJl CiAgICAtLXdpdGgtbGlidW53aW5kICAgICAgICB1c2UgbGlidW53aW5kIGZyYW1lIHVud2luZGlu ZyBzdXBwb3J0CiAgICAtLXdpdGgtY3Vyc2VzICAgICAgICAgICB1c2UgdGhlIGN1cnNlcyBsaWJy YXJ5IGluc3RlYWQgb2YgdGhlIHRlcm1jYXAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxp YnJhcnkKLUBAIC0xNjg5LDYgKzE2OTgsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50 IHZhcmlhYmxlczoKK0BAIC0xNjk2LDYgKzE3MDUsOSBAQCBTb21lIGluZmx1ZW50aWFsIGVudmly b25tZW50IHZhcmlhYmxlczoKICAgIENQUEZMQUdTICAgIEMvQysrL09iamVjdGl2ZSBDIHByZXBy b2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAgIHlv dSBoYXZlIGhlYWRlcnMgaW4gYSBub25zdGFuZGFyZCBkaXJlY3RvcnkgPGluY2x1ZGUgZGlyPgog ICAgQ1BQICAgICAgICAgQyBwcmVwcm9jZXNzb3IKQEAgLTc2Niw3ICs3NTcsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlndXJlCiAgICBZQUNDICAgICAgICBUaGUgYFll dCBBbm90aGVyIEMgQ29tcGlsZXInIGltcGxlbWVudGF0aW9uIHRvIHVzZS4gRGVmYXVsdHMgdG8K ICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBwcm9ncmFtIGZvdW5kIG91dCBvZjogYGJpc29uIC15 JywgYGJ5YWNjJywgYHlhY2MnLgogICAgWUZMQUdTICAgICAgVGhlIGxpc3Qgb2YgYXJndW1lbnRz IHRoYXQgd2lsbCBiZSBwYXNzZWQgYnkgZGVmYXVsdCB0byAkWUFDQy4KLUBAIC03ODg2LDYgKzc4 OTgsNDg2IEBAIF9BQ0VPRgorQEAgLTc5NjgsNiArNzk4MCw0ODYgQEAgX0FDRU9GCiAgZmkKICAK ICAKQEAgLTEyNTMsMTEgKzEyNDQsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2NvbmZpZ3VyZQogIAogIAogIHN1YmRpcnM9IiRzdWJkaXJzIHRlc3RzdWl0ZSIKLUluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWd1cmUuYWMKK0luZGV4OiBnZGItNy40LjUwLjIw MTExMjE4L2dkYi9jb25maWd1cmUuYWMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA1LTEyIDAxOjM4OjM4LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTA3LTIy IDE5OjI4OjM0LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwOCw2ICsxMDgsMTk5IEBAIEFTX0hFTFBf U1RSSU5HKFstLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXMKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4 Lm9yaWcvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTExLTIwIDA5OjU5OjU2LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZ3VyZS5hYwkyMDExLTEyLTE5IDAx OjE2OjE1LjI1NzQ1NTg2MyArMDEwMAorQEAgLTE0MCw2ICsxNDAsMTk5IEBAIEFTX0hFTFBfU1RS SU5HKFstLXdpdGgtcmVsb2NhdGVkLXNvdXJjZXMKICAgICAgICAgICAgICAgIFtSZWxvY2F0ZWQg ZGlyZWN0b3J5IGZvciBzb3VyY2UgZmlsZXMuIF0pCiAgXSkKICAKQEAgLTE0NTcsMTAgKzE0NDgs MTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZ3VyZS5hYwogIEFDX0NP TkZJR19TVUJESVJTKHRlc3RzdWl0ZSkKICAKICAjIENoZWNrIHdoZXRoZXIgdG8gc3VwcG9ydCBh bHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9hY2luY2x1ZGUubTQKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9hY2lu Y2x1ZGUubTQKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2Fj aW5jbHVkZS5tNAkyMDEwLTA1LTI3IDA1OjQwOjQ1LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2FjaW5jbHVkZS5tNAkyMDExLTA3LTIyIDE5OjI4OjM0LjAwMDAw MDAwMCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvYWNpbmNsdWRlLm00 CTIwMTAtMDUtMjcgMDU6NDA6NDUuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEx MTIxOC9nZGIvYWNpbmNsdWRlLm00CTIwMTEtMTItMTkgMDE6MTY6MTUuMjU3NDU1ODYzICswMTAw CiBAQCAtMSwzICsxLDUgQEAKICsjIHNlcmlhbCAxCiArCkBAIC0xNDc2LDEwICsxNDY3LDEwIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9hY2luY2x1ZGUubTQKICAjIEBkZWZtYWMg QUNfUFJPR19DQ19TVERDCiAgIyBAbWFpbmRleCBQUk9HX0NDX1NUREMKICAjIEBvdmluZGV4IEND Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wNy0yMiAxOToyNzoyNi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb3JlbG93LmMJMjAxMS0wNy0yMiAx OToyODozNC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2Ri L2NvcmVsb3cuYwkyMDExLTEyLTE5IDAwOjU0OjA5LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03 LjQuNTAuMjAxMTEyMTgvZ2RiL2NvcmVsb3cuYwkyMDExLTEyLTE5IDAxOjE2OjE1LjI1ODQ1NTg1 OSArMDEwMAogQEAgLTMyMSw3ICszMjEsNyBAQCBidWlsZF9pZF9sb2NhdGVfZXhlYyAoaW50IGZy b21fdHR5KQogICAgICAgICAgc3ltZmlsZV9vYmpmaWxlLT5mbGFncyB8PSBPQkpGX0JVSUxEX0lE X0NPUkVfTE9BREVEOwogICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0 ZS5wYXRjaCBiL2dkYi02LjYtYnVpbGRpZC1sb2NhdGUucGF0Y2gKaW5kZXggMDIyZDBjYS4uN2E3 MmQ4NiAxMDA2NDQKLS0tIGEvZ2RiLTYuNi1idWlsZGlkLWxvY2F0ZS5wYXRjaAorKysgYi9nZGIt Ni42LWJ1aWxkaWQtbG9jYXRlLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2NvcmVsb3cuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2Ri L2NvcmVsb3cuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv Y29yZWxvdy5jCTIwMTEtMDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvY29yZWxvdy5jCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0w NC0xNyAyMToxMjoyMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dk Yi9jb3JlbG93LmMJMjAxMi0wMS0wMyAxNToyMDo1NC45MDU4NTE0NTYgKzAxMDAKIEBAIC00OCw2 ICs0OCw5IEBACiAgI2luY2x1ZGUgInByb2dzcGFjZS5oIgogICNpbmNsdWRlICJvYmpmaWxlcy5o IgpAQCAtMTIsNyArMTIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29yZWxv dy5jCiAgCiAgCiAgI2lmbmRlZiBPX0xBUkdFRklMRQotQEAgLTI3OSw2ICsyODIsNTIgQEAgYWRk X3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uIAorQEAgLTI3OSw2ICsyODIsNTIg QEAgYWRkX3RvX3RocmVhZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uCiAgICAgIGluZmVyaW9y X3B0aWQgPSBwdGlkOwkJCS8qIFllcywgbWFrZSBpdCBjdXJyZW50LiAgKi8KICB9CiAgCkBAIC05 MCwxMSArOTAsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvcmVsb3cuYwog KwkJCSAgIE5VTEwsIE5VTEwsIE5VTEwsCiArCQkJICAgJnNldGxpc3QsICZzaG93bGlzdCk7CiAg fQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbworSW5kZXg6 IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2RvYy9nZGIudGV4aW5mbwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDctMjIg MjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9j L2dkYi50ZXhpbmZvCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAwCi1AQCAtMTU0 MDIsNiArMTU0MDIsMjcgQEAgaW5mb3JtYXRpb24gZmlsZXMuCistLS0gZ2RiLTcuNC41MC4yMDEy MDEwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMS0wMyAwNTo1Mzo0MS4wMDAwMDAw MDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx Mi0wMS0wMyAxNToyMDo1NC45MTA4NTE0MzYgKzAxMDAKK0BAIC0xNTk3MSw2ICsxNTk3MSwyNyBA QCBpbmZvcm1hdGlvbiBmaWxlcy4KICAKICBAZW5kIHRhYmxlCiAgCkBAIC0xMjIsNzEgKzEyMiw3 NCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCiAgQGNp bmRleCBAY29kZXsuZ251X2RlYnVnbGlua30gc2VjdGlvbnMKICBAY2luZGV4IGRlYnVnIGxpbmsg c2VjdGlvbnMKICBBIGRlYnVnIGxpbmsgaXMgYSBzcGVjaWFsIHNlY3Rpb24gb2YgdGhlIGV4ZWN1 dGFibGUgZmlsZSBuYW1lZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbGliLXN2 cjQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3NvbGliLXN2cjQuYwogPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29saWItc3ZyNC5jCTIwMTEt MDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvc29saWItc3ZyNC5jCTIwMTEtMDctMjIgMjA6MTY6MTAuMDAwMDAwMDAwICswMjAwCi1AQCAt MTIwMSw5ICsxMjAxLDQ5IEBAIHN2cjRfY3VycmVudF9zb3MgKHZvaWQpCi0gCQkgICAgIHNhZmVf c3RyZXJyb3IgKGVycmNvZGUpKTsKLSAJICBlbHNlCi0gCSAgICB7Ci0tCSAgICAgIHN0cm5jcHkg KG5ldy0+c29fbmFtZSwgYnVmZmVyLCBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxKTsKLS0JICAg ICAgbmV3LT5zb19uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1wwJzsKLS0JICAg ICAgc3RyY3B5IChuZXctPnNvX29yaWdpbmFsX25hbWUsIG5ldy0+c29fbmFtZSk7Ci0rCSAgICAg IHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7Ci0rCi0rCSAgICAgIHN0cm5jcHkgKG5ldy0+c29f b3JpZ2luYWxfbmFtZSwgYnVmZmVyLCBTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxKTsKLSsJICAg ICAgbmV3LT5zb19vcmlnaW5hbF9uYW1lW1NPX05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1ww JzsKLSsJICAgICAgLyogTWF5IGdldCBvdmVyd3JpdHRlbiBiZWxvdy4gICovCi0rCSAgICAgIHN0 cmNweSAobmV3LT5zb19uYW1lLCBuZXctPnNvX29yaWdpbmFsX25hbWUpOwotKwotKwkgICAgICBi dWlsZF9pZCA9IGJ1aWxkX2lkX2FkZHJfZ2V0IChsbV9keW5hbWljX2Zyb21fbGlua19tYXAgKG5l dykpOwotKwkgICAgICBpZiAoYnVpbGRfaWQgIT0gTlVMTCkKLSsJCXsKLSsJCSAgY2hhciAqbmFt ZSwgKmJ1aWxkX2lkX2ZpbGVuYW1lOwotKwotKwkJICAvKiBNaXNzaW5nIHRoZSBidWlsZC1pZCBt YXRjaGluZyBzZXBhcmF0ZSBkZWJ1ZyBpbmZvIGZpbGUKLSsJCSAgICAgd291bGQgYmUgaGFuZGxl ZCB3aGlsZSBTT19OQU1FIGdldHMgbG9hZGVkLiAgKi8KLSsJCSAgbmFtZSA9IGJ1aWxkX2lkX3Rv X2ZpbGVuYW1lIChidWlsZF9pZCwgJmJ1aWxkX2lkX2ZpbGVuYW1lLCAwKTsKLSsJCSAgaWYgKG5h bWUgIT0gTlVMTCkKLSsJCSAgICB7Ci0rCQkgICAgICBzdHJuY3B5IChuZXctPnNvX25hbWUsIG5h bWUsIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEpOwotKwkJICAgICAgbmV3LT5zb19uYW1lW1NP X05BTUVfTUFYX1BBVEhfU0laRSAtIDFdID0gJ1wwJzsKLSsJCSAgICAgIHhmcmVlIChuYW1lKTsK LSsJCSAgICB9Ci0rCQkgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICBkZWJ1Z19wcmludF9taXNz aW5nIChuZXctPnNvX25hbWUsIGJ1aWxkX2lkX2ZpbGVuYW1lKTsKLSsKLSsJCSAgICAgIC8qIElu IHRoZSBjYXNlIHRoZSBtYWluIGV4ZWN1dGFibGUgd2FzIGZvdW5kIGFjY29yZGluZyB0bwotKwkJ CSBpdHMgYnVpbGQtaWQgKGZyb20gYSBjb3JlIGZpbGUpIHByZXZlbnQgbG9hZGluZwotKwkJCSBh IGRpZmZlcmVudCBidWlsZCBvZiBhIGxpYnJhcnkgd2l0aCBhY2NpZGVudGFsbHkgdGhlCi0rCQkJ IHNhbWUgU09fTkFNRS4KLSsKLSsJCQkgSXQgc3VwcHJlc3NlcyBib2d1cyBiYWNrdHJhY2VzIChh bmQgcHJpbnRzICI/PyIgdGhlcmUKLSsJCQkgaW5zdGVhZCkgaWYgdGhlIG9uLWRpc2sgZmlsZXMg bm8gbG9uZ2VyIG1hdGNoIHRoZQotKwkJCSBydW5uaW5nIHByb2dyYW0gdmVyc2lvbi4gICovCi0r Ci0rCQkgICAgICBpZiAoc3ltZmlsZV9vYmpmaWxlICE9IE5VTEwKLSsJCQkgICYmIChzeW1maWxl X29iamZpbGUtPmZsYWdzCi0rCQkJICAgICAgJiBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEKSAh PSAwKQotKwkJCW5ldy0+c29fbmFtZVswXSA9IDA7Ci0rCQkgICAgfQotKwotKwkJICB4ZnJlZSAo YnVpbGRfaWRfZmlsZW5hbWUpOwotKwkJICB4ZnJlZSAoYnVpbGRfaWQpOwotKwkJfQotIAkgICAg fQotIAkgIHhmcmVlIChidWZmZXIpOworLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIv c29saWItc3ZyNC5jCTIwMTEtMTItMDMgMTk6MzI6MjkuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDEyMDEwMy9nZGIvc29saWItc3ZyNC5jCTIwMTItMDEtMDMgMTU6MjA6NTQuOTEx ODUxNDMyICswMTAwCitAQCAtMTIyOCw5ICsxMjI4LDUyIEBAIHN2cjRfcmVhZF9zb19saXN0IChD T1JFX0FERFIgbG0sIHN0cnVjdAorIAkgIGNvbnRpbnVlOworIAl9CiAgCi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCistICAgICAgc3RybmNweSAobmV3LT5zb19uYW1l LCBidWZmZXIsIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEpOworLSAgICAgIG5ldy0+c29fbmFt ZVtTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxXSA9ICdcMCc7CistICAgICAgc3RyY3B5IChuZXct PnNvX29yaWdpbmFsX25hbWUsIG5ldy0+c29fbmFtZSk7CisrICAgICAgeworKwlzdHJ1Y3QgYnVp bGRfaWQgKmJ1aWxkX2lkOworKworKwlzdHJuY3B5IChuZXctPnNvX29yaWdpbmFsX25hbWUsIGJ1 ZmZlciwgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSk7CisrCW5ldy0+c29fb3JpZ2luYWxfbmFt ZVtTT19OQU1FX01BWF9QQVRIX1NJWkUgLSAxXSA9ICdcMCc7CisrCS8qIE1heSBnZXQgb3Zlcndy aXR0ZW4gYmVsb3cuICAqLworKwlzdHJjcHkgKG5ldy0+c29fbmFtZSwgbmV3LT5zb19vcmlnaW5h bF9uYW1lKTsKKysKKysJYnVpbGRfaWQgPSBidWlsZF9pZF9hZGRyX2dldCAobmV3LT5sbV9pbmZv LT5sX2xkKTsKKysJaWYgKGJ1aWxkX2lkICE9IE5VTEwpCisrCSAgeworKwkgICAgY2hhciAqbmFt ZSwgKmJ1aWxkX2lkX2ZpbGVuYW1lOworKworKwkgICAgLyogTWlzc2luZyB0aGUgYnVpbGQtaWQg bWF0Y2hpbmcgc2VwYXJhdGUgZGVidWcgaW5mbyBmaWxlCisrCSAgICAgICB3b3VsZCBiZSBoYW5k bGVkIHdoaWxlIFNPX05BTUUgZ2V0cyBsb2FkZWQuICAqLworKwkgICAgbmFtZSA9IGJ1aWxkX2lk X3RvX2ZpbGVuYW1lIChidWlsZF9pZCwgJmJ1aWxkX2lkX2ZpbGVuYW1lLCAwKTsKKysJICAgIGlm IChuYW1lICE9IE5VTEwpCisrCSAgICAgIHsKKysJCXN0cm5jcHkgKG5ldy0+c29fbmFtZSwgbmFt ZSwgU09fTkFNRV9NQVhfUEFUSF9TSVpFIC0gMSk7CisrCQluZXctPnNvX25hbWVbU09fTkFNRV9N QVhfUEFUSF9TSVpFIC0gMV0gPSAnXDAnOworKwkJeGZyZWUgKG5hbWUpOworKwkgICAgICB9Cisr CSAgICBlbHNlCisrCSAgICAgIHsKKysJCWRlYnVnX3ByaW50X21pc3NpbmcgKG5ldy0+c29fbmFt ZSwgYnVpbGRfaWRfZmlsZW5hbWUpOworKworKwkJLyogSW4gdGhlIGNhc2UgdGhlIG1haW4gZXhl Y3V0YWJsZSB3YXMgZm91bmQgYWNjb3JkaW5nIHRvCisrCQkgICBpdHMgYnVpbGQtaWQgKGZyb20g YSBjb3JlIGZpbGUpIHByZXZlbnQgbG9hZGluZworKwkJICAgYSBkaWZmZXJlbnQgYnVpbGQgb2Yg YSBsaWJyYXJ5IHdpdGggYWNjaWRlbnRhbGx5IHRoZQorKwkJICAgc2FtZSBTT19OQU1FLgorKwor KwkJICAgSXQgc3VwcHJlc3NlcyBib2d1cyBiYWNrdHJhY2VzIChhbmQgcHJpbnRzICI/PyIgdGhl cmUKKysJCSAgIGluc3RlYWQpIGlmIHRoZSBvbi1kaXNrIGZpbGVzIG5vIGxvbmdlciBtYXRjaCB0 aGUKKysJCSAgIHJ1bm5pbmcgcHJvZ3JhbSB2ZXJzaW9uLiAgKi8KKysKKysJCWlmIChzeW1maWxl X29iamZpbGUgIT0gTlVMTAorKwkJICAgICYmIChzeW1maWxlX29iamZpbGUtPmZsYWdzCisrCQkJ JiBPQkpGX0JVSUxEX0lEX0NPUkVfTE9BREVEKSAhPSAwKQorKwkJICBuZXctPnNvX25hbWVbMF0g PSAwOworKwkgICAgICB9CisrCisrCSAgICB4ZnJlZSAoYnVpbGRfaWRfZmlsZW5hbWUpOworKwkg ICAgeGZyZWUgKGJ1aWxkX2lkKTsKKysJICB9CisrICAgICAgfQorKworICAgICAgIHhmcmVlIChi dWZmZXIpOworIAorICAgICAgIC8qIElmIHRoaXMgZW50cnkgaGFzIG5vIG5hbWUsIG9yIGl0cyBu YW1lIG1hdGNoZXMgdGhlIG5hbWUKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi9lbGZy ZWFkLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2VsZnJl YWQuYwkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwkyMDExLTA3LTIyIDIwOjEzOjAwLjAwMDAwMDAwMCArMDIw MAotQEAgLTQ1LDYgKzQ1LDExIEBACi0gI2luY2x1ZGUgImluZmNhbGwuaCIKKy0tLSBnZGItNy40 LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL2VsZnJlYWQuYwkyMDEyLTAxLTAzIDA1OjUyOjE1LjAwMDAw MDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL2VsZnJlYWQuYwkyMDEyLTAx LTAzIDE1OjIxOjA5LjkzMzc5NjE2OCArMDEwMAorQEAgLTQ2LDYgKzQ2LDExIEBACiAgI2luY2x1 ZGUgImdkYnRocmVhZC5oIgogICNpbmNsdWRlICJyZWdjYWNoZS5oIgorICNpbmNsdWRlICJiY2Fj aGUuaCIKICsjaW5jbHVkZSAibGliYmZkLmgiCiArI2luY2x1ZGUgImdkYmNvcmUuaCIKICsjaW5j bHVkZSAiZ2RiY21kLmgiCkBAIC0xOTUsNyArMTk4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2VsZnJlYWQuYwogIAogIGV4dGVybiB2b2lkIF9pbml0aWFsaXplX2VsZnJlYWQg KHZvaWQpOwogIAotQEAgLTEwNzQsMTYgKzEwNzksNjUgQEAgZWxmX2dudV9pZnVuY19yZXNvbHZl cl9yZXR1cm5fc3RvcCAoc3RydQorQEAgLTEwNzgsMTYgKzEwODMsNjUgQEAgZWxmX2dudV9pZnVu Y19yZXNvbHZlcl9yZXR1cm5fc3RvcCAoc3RydQogICAgdXBkYXRlX2JyZWFrcG9pbnRfbG9jYXRp b25zIChiLCBzYWxzLCBzYWxzX2VuZCk7CiAgfQogIApAQCAtMjYzLDcgKzI2Niw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICB7CiAgICBzdHJ1Y3QgYnVpbGRf aWQgKnJldHZhbDsKICAKLUBAIC0xMDk5LDYgKzExNTMsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQg KGJmZCAqYWJmZCkKK0BAIC0xMTAzLDYgKzExNTcsMzQ4IEBAIGJ1aWxkX2lkX2JmZF9nZXQgKGJm ZCAqYWJmZCkKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNjEyLDcgKzYxNSw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAvKiBSZXR1cm4gaWYgRklM RU5BTUUgaGFzIE5UX0dOVV9CVUlMRF9JRCBtYXRjaGluZyB0aGUgQ0hFQ0sgdmFsdWUuICAqLwog IAogIHN0YXRpYyBpbnQKLUBAIC0xMTEzLDcgKzE1MDksNyBAQCBidWlsZF9pZF92ZXJpZnkgKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBzCitAQCAtMTExNyw3ICsxNTEzLDcgQEAgYnVpbGRfaWRfdmVy aWZ5IChjb25zdCBjaGFyICpmaWxlbmFtZSwgcwogICAgaWYgKGFiZmQgPT0gTlVMTCkKICAgICAg cmV0dXJuIDA7CiAgCkBAIC02MjEsNyArNjI0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2VsZnJlYWQuYwogIAogICAgaWYgKGZvdW5kID09IE5VTEwpCiAgICAgIHdhcm5pbmcg KF8oIkZpbGUgXCIlc1wiIGhhcyBubyBidWlsZC1pZCwgZmlsZSBza2lwcGVkIiksIGZpbGVuYW1l KTsKLUBAIC0xMTMxLDE0ICsxNTI3LDE1IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29uc3QgY2hhciAq ZmlsZW5hbWUsIHMKK0BAIC0xMTM1LDE0ICsxNTMxLDE1IEBAIGJ1aWxkX2lkX3ZlcmlmeSAoY29u c3QgY2hhciAqZmlsZW5hbWUsIHMKICAgIHJldHVybiByZXR2YWw7CiAgfQogIApAQCAtNjQxLDcg KzY0NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICAKICAg IC8qIEtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBzbyB0aGF0IERFQlVHX0ZJTEVfRElSRUNU T1JZIGJlaW5nICIiIHdpbGwKICAgICAgIGNhdXNlICIvLmJ1aWxkLWlkLy4uLiIgbG9va3Vwcy4g ICovCi1AQCAtMTE0OSw2ICsxNTQ2LDggQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0 cnVjdCBidWlsZAorQEAgLTExNTMsNiArMTU1MCw4IEBAIGJ1aWxkX2lkX3RvX2RlYnVnX2ZpbGVu YW1lIChzdHJ1Y3QgYnVpbGQKICAgICAgICBjaGFyICpzLCAqZGVidWdkaXJfZW5kOwogICAgICAg IGdkYl9ieXRlICpkYXRhID0gYnVpbGRfaWQtPmRhdGE7CiAgICAgICAgc2l6ZV90IHNpemUgPSBi dWlsZF9pZC0+c2l6ZTsKQEAgLTY1MCw3ICs2NTMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvZWxmcmVhZC5jCiAgCiAgICAgICAgd2hpbGUgKCpkZWJ1Z2RpciA9PSBESVJOQU1F X1NFUEFSQVRPUikKICAJZGVidWdkaXIrKzsKLUBAIC0xMTY5LDM5ICsxNTY4LDI0MiBAQCBidWls ZF9pZF90b19kZWJ1Z19maWxlbmFtZSAoc3RydWN0IGJ1aWxkCitAQCAtMTE3MywzOSArMTU3Miwy NDIgQEAgYnVpbGRfaWRfdG9fZGVidWdfZmlsZW5hbWUgKHN0cnVjdCBidWlsZAogIAkqcysrID0g Jy8nOwogICAgICAgIHdoaWxlIChzaXplLS0gPiAwKQogIAlzICs9IHNwcmludGYgKHMsICIlMDJ4 IiwgKHVuc2lnbmVkKSAqZGF0YSsrKTsKQEAgLTkwNSw3ICs5MDgsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiAgICAgICAgeGZyZWUgKGJ1aWxkX2lkKTsKICAg ICAgICAvKiBQcmV2ZW50IGxvb3Bpbmcgb24gYSBzdHJpcHBlZCAuZGVidWcgZmlsZS4gICovCiAg ICAgICAgaWYgKGJ1aWxkX2lkX25hbWUgIT0gTlVMTAotQEAgLTEyMTIsNyArMTgxNCw3IEBAIGZp bmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKK0BAIC0xMjE2LDcgKzE4MTgs NyBAQCBmaW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCiAgCSAgeGZyZWUg KGJ1aWxkX2lkX25hbWUpOwogIAl9CiAgICAgICAgZWxzZSBpZiAoYnVpbGRfaWRfbmFtZSAhPSBO VUxMKQpAQCAtOTE0LDcgKzkxNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9l bGZyZWFkLmMKICAgICAgfQogICAgcmV0dXJuIE5VTEw7CiAgfQotQEAgLTE0MzIsOSArMjAzNCwx MCBAQCBlbGZfc3ltZmlsZV9yZWFkIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsCitAQCAtMTQzNiw5 ICsyMDM4LDEwIEBAIGVsZl9zeW1maWxlX3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKICAg ICAgIGAubm90ZS5nbnUuYnVpbGQtaWQnLiAgKi8KICAgIGVsc2UgaWYgKCFvYmpmaWxlX2hhc19w YXJ0aWFsX3N5bWJvbHMgKG9iamZpbGUpKQogICAgICB7CkBAIC05MjcsNyArOTMwLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogIAogICAgICAgIGlmIChkZWJ1 Z2ZpbGUgPT0gTlVMTCkKICAJZGVidWdmaWxlID0gZmluZF9zZXBhcmF0ZV9kZWJ1Z19maWxlX2J5 X2RlYnVnbGluayAob2JqZmlsZSk7Ci1AQCAtMTQ0Niw2ICsyMDQ5LDEyIEBAIGVsZl9zeW1maWxl X3JlYWQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWwKK0BAIC0xNDUwLDYgKzIwNTMsMTIgQEAgZWxm X3N5bWZpbGVfcmVhZCAoc3RydWN0IG9iamZpbGUgKm9iamZpbAogIAkgIHN5bWJvbF9maWxlX2Fk ZF9zZXBhcmF0ZSAoYWJmZCwgc3ltZmlsZV9mbGFncywgb2JqZmlsZSk7CiAgCSAgeGZyZWUgKGRl YnVnZmlsZSk7CiAgCX0KQEAgLTk0MCw3ICs5NDMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvZWxmcmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTkyNSw0ICsyNTM0LDE2IEBA IF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCitAQCAtMTkzMyw0ICsyNTQyLDE2IEBAIF9pbml0 aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAgCiAgICBlbGZfb2JqZmlsZV9nbnVfaWZ1bmNfY2FjaGVf ZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAgIGdudV9pZnVuY19mbnNfcCA9ICZl bGZfZ251X2lmdW5jX2ZuczsKQEAgLTk1NywxMSArOTYwLDExIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9lbGZyZWFkLmMKICsKICsgIG9ic2VydmVyX2F0dGFjaF9leGVjdXRhYmxl X2NoYW5nZWQgKGRlYnVnX3ByaW50X2V4ZWN1dGFibGVfY2hhbmdlZCk7CiAgfQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAx MDMvZ2RiL3N5bWZpbGUuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvc3ltZmlsZS5oCTIwMTEtMDctMjIgMjA6MTI6NDAuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5oCTIwMTEtMDctMjIgMjA6MTM6MDAuMDAw MDAwMDAwICswMjAwCi1AQCAtNjA5LDYgKzYwOSwxMyBAQCB2b2lkIGZyZWVfc3ltZmlsZV9zZWdt ZW50X2RhdGEgKHN0cnVjdCBzCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9zeW1m aWxlLmgJMjAxMi0wMS0wMyAwNTo1MjoxNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTIwMTAzL2dkYi9zeW1maWxlLmgJMjAxMi0wMS0wMyAxNToyMDo1NC45MTQ4NTE0MjIgKzAx MDAKK0BAIC02MTYsNiArNjE2LDEzIEBAIHZvaWQgZnJlZV9zeW1maWxlX3NlZ21lbnRfZGF0YSAo c3RydWN0IHMKICAKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKmluY3JlbWVudF9yZWFkaW5nX3N5 bXRhYiAodm9pZCk7CiAgCkBAIC05NzUsMTEgKzk3OCwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvc3ltZmlsZS5oCiAgLyogRnJvbSBkd2FyZjJyZWFkLmMgKi8KICAKICAvKiBO YW1lcyBmb3IgYSBkd2FyZjIgZGVidWdnaW5nIHNlY3Rpb24uICBUaGUgZmllbGQgTk9STUFMIGlz IHRoZSBub3JtYWwKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGli L2dkYi5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvbGliL2dk Yi5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIyIDIwOjEyOjQwLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvZ2RiLmV4cAkyMDExLTA3LTIy IDIwOjEzOjAwLjAwMDAwMDAwMCArMDIwMAotQEAgLTEzOTAsNiArMTM5MCwxNiBAQCBwcm9jIGRl ZmF1bHRfZ2RiX3N0YXJ0IHsgfSB7CistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi90 ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMi0wMS0wMyAwNTo1MjoxNS4wMDAwMDAwMDAgKzAxMDAK KysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAJMjAxMi0w MS0wMyAxNToyMDo1NC45MTQ4NTE0MjIgKzAxMDAKK0BAIC0xMzg3LDYgKzEzODcsMTYgQEAgcHJv YyBkZWZhdWx0X2dkYl9zdGFydCB7IH0gewogIAkgICAgd2FybmluZyAiQ291bGRuJ3Qgc2V0IHRo ZSB3aWR0aCB0byAwLiIKICAJfQogICAgICB9CkBAIC05OTYsMTMgKzk5OSwxMyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiAgICAgIHJldHVy biAwOwogIH0KICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGli L21pLXN1cHBvcnQuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRl L2xpYi9taS1zdXBwb3J0LmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTA3LTIyIDIwOjEyOjQw LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9s aWIvbWktc3VwcG9ydC5leHAJMjAxMS0wNy0yMiAyMDoxMzowMC4wMDAwMDAwMDAgKzAyMDAKLUBA IC0yMjIsNiArMjIyLDE2IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0gewot IAkgICAgfQotICAgICAJfQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvdGVzdHN1 aXRlL2xpYi9taS1zdXBwb3J0LmV4cAkyMDExLTEyLTAzIDIxOjIwOjI5LjAwMDAwMDAwMCArMDEw MAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL3Rlc3RzdWl0ZS9saWIvbWktc3VwcG9ydC5l eHAJMjAxMi0wMS0wMyAxNToyMDo1NC45MTU4NTE0MTkgKzAxMDAKK0BAIC0yMTIsNiArMjEyLDE2 IEBAIHByb2MgZGVmYXVsdF9taV9nZGJfc3RhcnQgeyBhcmdzIH0geworIAkgICAgd2FybmluZyAi Q291bGRuJ3Qgc2V0IHRoZSB3aWR0aCB0byAwLiIKKyAJfQogICAgICB9CiArICAgICMgVHVybiBv ZmYgdGhlIG1pc3Npbmcgd2FybmluZ3MgYXMgdGhlIHRlc3RzdWl0ZSBkb2VzIG5vdCBleHBlY3Qg aXQuCiArICAgIHNlbmRfZ2RiICIxOTAtZ2RiLXNldCBidWlsZC1pZC12ZXJib3NlIDBcbiIKQEAg LTEwMTQsMTYgKzEwMTcsMTYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9saWIvbWktc3VwcG9ydC5leHAKICsJICAgIHdhcm5pbmcgIkNvdWxkIG5vdCBkaXNhYmxl IHRoZSBtaXNzaW5nIGRlYnVnIGluZm9zIHdhcm5pbmdzLi4iCiArCX0KICsgICAgfQotIAotICAg ICBkZXRlY3RfYXN5bmMKLSAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxl cy5oCisgICAgICMgSWYgYWxsb3dpbmcgdGhlIGluZmVyaW9yIHRvIGhhdmUgaXRzIG93biBQVFkg dGhlbiBhc3NpZ24gdGhlIGluZmVyaW9yCisgICAgICMgaXRzIG93biB0ZXJtaW5hbCBkZXZpY2Ug aGVyZS4KKyAgICAgaWYgeyAkc2VwYXJhdGVfaW5mZXJpb3JfcHR5IH0geworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMDMvZ2RiL29iamZpbGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL29iamZpbGVzLmgJMjAxMS0wNy0yMiAyMDoxMjo0MC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5oCTIwMTEtMDct MjIgMjA6MTM6MDAuMDAwMDAwMDAwICswMjAwCi1AQCAtNDM0LDYgKzQzNCwxMCBAQCBzdHJ1Y3Qg b2JqZmlsZQorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMub3JpZy9nZGIvb2JqZmlsZXMuaAkyMDEx LTEyLTA4IDE5OjA4OjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMv Z2RiL29iamZpbGVzLmgJMjAxMi0wMS0wMyAxNToyMDo1NC45MTU4NTE0MTkgKzAxMDAKK0BAIC00 MzUsNiArNDM1LDEwIEBAIHN0cnVjdCBvYmpmaWxlCiAgCi0gI2RlZmluZSBPQkpGX1BTWU1UQUJT X1JFQUQgKDEgPDwgNCkKKyAjZGVmaW5lIE9CSkZfTUFJTkxJTkUgKDEgPDwgNSkKICAKICsvKiBU aGlzIGZpbGUgd2FzIGxvYWRlZCBhY2NvcmRpbmcgdG8gdGhlIEJVSUxEX0lEX0NPUkVfTE9BRFMg cnVsZXMuICAqLwogKwoKZGlmZiAtLWdpdCBhL2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3Rl cC1zdy13YXRjaHBvaW50czIucGF0Y2ggYi9nZGItNi42LXNjaGVkdWxlcl9sb2NraW5nLXN0ZXAt c3ctd2F0Y2hwb2ludHMyLnBhdGNoCmluZGV4IDY3MWI0NTcuLmM3ZjBkMzMgMTAwNjQ0Ci0tLSBh L2dkYi02LjYtc2NoZWR1bGVyX2xvY2tpbmctc3RlcC1zdy13YXRjaHBvaW50czIucGF0Y2gKKysr IGIvZ2RiLTYuNi1zY2hlZHVsZXJfbG9ja2luZy1zdGVwLXN3LXdhdGNocG9pbnRzMi5wYXRjaApA QCAtMjEsMTEgKzIxLDExIEBACiAKIAlQb3J0IHRvIEdEQi02LjhwcmUuCiAKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9pbmZlcmlvci5oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvaW5mZXJpb3IuaAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvaW5mZXJpb3IuaAkyMDExLTA3LTIyIDAxOjQ2OjA4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZmVyaW9yLmgJMjAxMS0wNy0yMiAxOToxMzozMC4w MDAwMDAwMDAgKzAyMDAKLUBAIC0xNTgsNyArMTU4LDE1IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9l eGVjX2ZpbGUgKHZvaWQpOworLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvaW5mZXJp b3IuaAkyMDExLTEwLTA3IDE0OjA2OjQ2LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAu MjAxMTEyMTgvZ2RiL2luZmVyaW9yLmgJMjAxMS0xMi0xOCAyMzo0MDo1OS4yNTczMDA0NTEgKzAx MDAKK0BAIC0xNjIsNyArMTYyLDE1IEBAIGV4dGVybiB2b2lkIHJlb3Blbl9leGVjX2ZpbGUgKHZv aWQpOwogIC8qIFRoZSBgcmVzdW1lJyByb3V0aW5lIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBpbiBz cGVjaWFsIGNpcmN1bXN0YW5jZXMuCiAgICAgTm9ybWFsbHksIHVzZSBgcHJvY2VlZCcsIHdoaWNo IGhhbmRsZXMgYSBsb3Qgb2YgYm9va2tlZXBpbmcuICAqLwogIApAQCAtNDIsMTAgKzQyLDEwIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZlcmlvci5oCiAgCiAgZXh0ZXJuIHB0 aWRfdCB1c2VyX3Zpc2libGVfcmVzdW1lX3B0aWQgKGludCBzdGVwKTsKICAKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2luZnJ1bi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dk Yi9pbmZydW4uYwkyMDExLTA3LTIyIDE5OjA4OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIgMTk6MTI6NTYuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9pbmZydW4uYwkyMDExLTEx LTIyIDIyOjI1OjE3LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2luZnJ1bi5jCTIwMTEtMTItMTkgMDA6MTI6MzQuNDcwODU0MjE4ICswMTAwCiBAQCAtNzksNyAr NzksNyBAQCBzdGF0aWMgaW50IGZvbGxvd19mb3JrICh2b2lkKTsKICBzdGF0aWMgdm9pZCBzZXRf c2NoZWRsb2NrX2Z1bmMgKGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSwKICAJCQkJc3RydWN0IGNt ZF9saXN0X2VsZW1lbnQgKmMpOwpAQCAtNTUsNyArNTUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvaW5mcnVuLmMKICAKICBzdGF0aWMgaW50IGN1cnJlbnRseV9zdGVwcGluZ19v cl9uZXh0aW5nX2NhbGxiYWNrIChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAogIAkJCQkJCSAgIHZv aWQgKmRhdGEpOwotQEAgLTE2MzAsNyArMTYzMCw4IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRp ZCAoaW50IHN0ZXApCitAQCAtMTY2OCw3ICsxNjY4LDggQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9w dGlkIChpbnQgc3RlcCkKICAgICAgfQogICAgZWxzZSBpZiAoKHNjaGVkdWxlcl9tb2RlID09IHNj aGVkbG9ja19vbikKICAJICAgfHwgKHNjaGVkdWxlcl9tb2RlID09IHNjaGVkbG9ja19zdGVwCkBA IC02NSw3ICs2NSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwog ICAgICB7CiAgICAgICAgLyogVXNlci1zZXR0YWJsZSAnc2NoZWR1bGVyJyBtb2RlIHJlcXVpcmVz IHNvbG8gdGhyZWFkIHJlc3VtZS4gICovCiAgICAgICAgcmVzdW1lX3B0aWQgPSBpbmZlcmlvcl9w dGlkOwotQEAgLTE2NDgsNyArMTY0OSw3IEBAIHVzZXJfdmlzaWJsZV9yZXN1bWVfcHRpZCAoaW50 IHN0ZXApCitAQCAtMTY4Niw3ICsxNjg3LDcgQEAgdXNlcl92aXNpYmxlX3Jlc3VtZV9wdGlkIChp bnQgc3RlcCkKICAgICBTVEVQIG5vbnplcm8gaWYgd2Ugc2hvdWxkIHN0ZXAgKHplcm8gdG8gY29u dGludWUgaW5zdGVhZCkuCiAgICAgU0lHIGlzIHRoZSBzaWduYWwgdG8gZ2l2ZSB0aGUgaW5mZXJp b3IgKHplcm8gZm9yIG5vbmUpLiAgKi8KICB2b2lkCkBAIC03NCw3ICs3NCw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogIHsKICAgIGludCBzaG91bGRfcmVzdW1l ID0gMTsKICAgIHN0cnVjdCBjbGVhbnVwICpvbGRfY2xlYW51cHMgPSBtYWtlX2NsZWFudXAgKHJl c3VtZV9jbGVhbnVwcywgMCk7Ci1AQCAtMTY4MSw5ICsxNjgyLDEzIEBAIHJlc3VtZSAoaW50IHN0 ZXAsIGVudW0gdGFyZ2V0X3NpZ25hbCBzaWcKK0BAIC0xNzE5LDkgKzE3MjAsMTMgQEAgcmVzdW1l IChpbnQgc3RlcCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZwogIAogICAgaWYgKGRlYnVnX2luZnJ1 bikKICAgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLApAQCAtOTAsNyArOTAsNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICAJCQl0YXJnZXRfcGlk X3RvX3N0ciAoaW5mZXJpb3JfcHRpZCksCiAgCQkJcGFkZHJlc3MgKGdkYmFyY2gsIHBjKSk7CiAg Ci1AQCAtMjA1Niw3ICsyMDYxLDcgQEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFy Z2V0X3NpZworQEAgLTIwOTQsNyArMjA5OSw3IEBAIHByb2NlZWQgKENPUkVfQUREUiBhZGRyLCBl bnVtIHRhcmdldF9zaWcKICAgIHN0cnVjdCB0aHJlYWRfaW5mbyAqdHA7CiAgICBDT1JFX0FERFIg cGM7CiAgICBzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqYXNwYWNlOwpAQCAtOTksNyArOTksNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICAKICAgIC8qIElmIHdlJ3Jl IHN0b3BwZWQgYXQgYSBmb3JrL3Zmb3JrLCBmb2xsb3cgdGhlIGJyYW5jaCBzZXQgYnkgdGhlCiAg ICAgICAic2V0IGZvbGxvdy1mb3JrLW1vZGUiIGNvbW1hbmQ7IG90aGVyd2lzZSwgd2UnbGwganVz dCBwcm9jZWVkCi1AQCAtMjA5NiwxMyArMjEwMSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRk ciwgZW51bSB0YXJnZXRfc2lnCitAQCAtMjEzNCwxMyArMjEzOSwxMyBAQCBwcm9jZWVkIChDT1JF X0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCiAgCSAgIGFjdHVhbGx5IGJlIGV4ZWN1dGluZyB0 aGUgYnJlYWtwb2ludCBpbnNuIGFueXdheS4KICAJICAgV2UnbGwgYmUgKHVuLSlleGVjdXRpbmcg dGhlIHByZXZpb3VzIGluc3RydWN0aW9uLiAgKi8KICAKQEAgLTExNSw3ICsxMTUsNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICAgICAgfQogICAgZWxzZQogICAg ICB7Ci1AQCAtMjEzMywxMyArMjEzOCwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51 bSB0YXJnZXRfc2lnCitAQCAtMjE3MSwxMyArMjE3NiwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIg YWRkciwgZW51bSB0YXJnZXRfc2lnCiAgCSBpcyByZXF1aXJlZCBpdCByZXR1cm5zIFRSVUUgYW5k IHNldHMgdGhlIGN1cnJlbnQgdGhyZWFkIHRvCiAgCSB0aGUgb2xkIHRocmVhZC4gICovCiAgICAg ICAgaWYgKHByZXBhcmVfdG9fcHJvY2VlZCAoc3RlcCkpCkBAIC0xMzEsNyArMTMxLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgICAgIHsKICAgICAgICB0cC0+ Y29udHJvbC50cmFwX2V4cGVjdGVkID0gMTsKICAgICAgICAvKiBJZiBkaXNwbGFjZWQgc3RlcHBp bmcgaXMgZW5hYmxlZCwgd2UgY2FuIHN0ZXAgb3ZlciB0aGUKLUBAIC0yMjI2LDggKzIyMzEsMTMg QEAgcHJvY2VlZCAoQ09SRV9BRERSIGFkZHIsIGVudW0gdGFyZ2V0X3NpZworQEAgLTIyNjQsOCAr MjI2OSwxMyBAQCBwcm9jZWVkIChDT1JFX0FERFIgYWRkciwgZW51bSB0YXJnZXRfc2lnCiAgICAv KiBSZXNldCB0byBub3JtYWwgc3RhdGUuICAqLwogICAgaW5pdF9pbmZ3YWl0X3N0YXRlICgpOwog IApAQCAtMTQ2LDcgKzE0Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZy dW4uYwogIAogICAgLyogV2FpdCBmb3IgaXQgdG8gc3RvcCAoaWYgbm90IHN0YW5kYWxvbmUpCiAg ICAgICBhbmQgaW4gYW55IGNhc2UgZGVjb2RlIHdoeSBpdCBzdG9wcGVkLCBhbmQgYWN0IGFjY29y ZGluZ2x5LiAgKi8KLUBAIC01MTIzLDE0ICs1MTMzLDE5IEBAIHByb2Nlc3NfZXZlbnRfc3RvcF90 ZXN0OgorQEAgLTUyMjMsMTMgKzUyMzMsMTggQEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CiAg CiAgLyogSXMgdGhyZWFkIFRQIGluIHRoZSBtaWRkbGUgb2Ygc2luZ2xlLXN0ZXBwaW5nPyAgKi8K ICAKQEAgLTE1NywxMiArMTU3LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9p bmZydW4uYwogLSAgcmV0dXJuICgodHAtPmNvbnRyb2wuc3RlcF9yYW5nZV9lbmQKIC0JICAgJiYg dHAtPmNvbnRyb2wuc3RlcF9yZXN1bWVfYnJlYWtwb2ludCA9PSBOVUxMKQogLQkgIHx8IHRwLT5j b250cm9sLnRyYXBfZXhwZWN0ZWQKLS0JICB8fCB0cC0+c3RlcHBpbmdfdGhyb3VnaF9zb2xpYl9h ZnRlcl9jYXRjaAogLQkgIHx8IGJwc3RhdF9zaG91bGRfc3RlcCAoKSk7CiArICBpZiAoKHRwLT5j b250cm9sLnN0ZXBfcmFuZ2VfZW5kCiArICAgICAgICYmIHRwLT5jb250cm9sLnN0ZXBfcmVzdW1l X2JyZWFrcG9pbnQgPT0gTlVMTCkKLSsgICAgICB8fCB0cC0+Y29udHJvbC50cmFwX2V4cGVjdGVk Ci0rICAgICAgfHwgdHAtPnN0ZXBwaW5nX3Rocm91Z2hfc29saWJfYWZ0ZXJfY2F0Y2gpCisrICAg ICAgfHwgdHAtPmNvbnRyb2wudHJhcF9leHBlY3RlZCkKICsgICAgcmV0dXJuIFJFU1VNRV9TVEVQ X1VTRVI7CiArCiArICBpZiAoYnBzdGF0X3Nob3VsZF9zdGVwICgpKQpAQCAtMTcyLDI3ICsxNzAs MjggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgfQogIAogIC8q IFJldHVybnMgdHJ1ZSBpZiBhbnkgdGhyZWFkICpidXQqIHRoZSBvbmUgcGFzc2VkIGluICJkYXRh IiBpcyBpbiB0aGUKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9saW51eC1uYXQuYwor SW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTA3LTIyIDE5 OjA4OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4 LW5hdC5jCTIwMTEtMDctMjIgMTk6MTA6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjk4Niw3ICsy OTg2LDEwIEBAIGNvdW50X2V2ZW50c19jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICoKLSBzdGF0 aWMgaW50CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDEx LTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2xpbnV4LW5hdC5jCTIwMTEtMTItMTkgMDA6MDg6NDEuODI0ODU1MzUzICswMTAwCitAQCAt MzAzNiw3ICszMDM2LDExIEBAIHN0YXRpYyBpbnQKICBzZWxlY3Rfc2luZ2xlc3RlcF9sd3BfY2Fs bGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGEpCiAgewotLSAgaWYgKGxwLT5z dGVwICYmIGxwLT5zdGF0dXMgIT0gMCkKLSsgIC8qIFdlIGRvIG5vdCBmb2N1cyBvbiBzb2Z0d2Fy ZSB3YXRjaHBvaW50cyBhcyB3ZSB3b3VsZCBub3QgY2F0Y2gKLSsgICAgIFNURVBQSU5HX1BBU1Rf U0lOR0xFU1RFUF9CUkVBS1BPSU5UIGJyZWFrcG9pbnRzIGluIHNvbWUgb3RoZXIgdGhyZWFkCi0r ICAgICBhcyB0aGV5IHdvdWxkIHJlbWFpbiBwZW5kaW5nIGR1ZSB0byBgUHVzaCBiYWNrIGJyZWFr cG9pbnQgZm9yICVzJy4gICovCi0rICBpZiAobHAtPnN0ZXAgPT0gUkVTVU1FX1NURVBfVVNFUiAm JiBscC0+c3RhdHVzICE9IDApCisgICBpZiAobHAtPmxhc3RfcmVzdW1lX2tpbmQgPT0gcmVzdW1l X3N0ZXAKKy0gICAgICAmJiBscC0+c3RhdHVzICE9IDApCisrICAgICAgJiYgbHAtPnN0YXR1cyAh PSAwCisrICAgICAgLyogV2UgZG8gbm90IGZvY3VzIG9uIHNvZnR3YXJlIHdhdGNocG9pbnRzIGFz IHdlIHdvdWxkIG5vdCBjYXRjaAorKwkgU1RFUFBJTkdfUEFTVF9TSU5HTEVTVEVQX0JSRUFLUE9J TlQgYnJlYWtwb2ludHMgaW4gc29tZSBvdGhlciB0aHJlYWQKKysJIGFzIHRoZXkgd291bGQgcmVt YWluIHBlbmRpbmcgZHVlIHRvIGBQdXNoIGJhY2sgYnJlYWtwb2ludCBmb3IgJXMnLiAgKi8KKysg ICAgICAmJiBscC0+c3RlcCA9PSBSRVNVTUVfU1RFUF9VU0VSKQogICAgICByZXR1cm4gMTsKICAg IGVsc2UKICAgICAgcmV0dXJuIDA7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGlu dXgtbmF0LmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbGludXgtbmF0LmgJMjAx MS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9saW51eC1uYXQuaAkyMDExLTA3LTIyIDE5OjEwOjI0LjAwMDAwMDAwMCArMDIwMAotQEAg LTU1LDggKzU1LDggQEAgc3RydWN0IGx3cF9pbmZvCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5v cmlnL2dkYi9saW51eC1uYXQuaAkyMDExLTEyLTE4IDIzOjM1OjIzLjAwMDAwMDAwMCArMDEwMAor KysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMTItMTggMjM6NDA6 NTkuMjYyMzAwNDMxICswMTAwCitAQCAtNzQsOCArNzQsOCBAQCBzdHJ1Y3QgbHdwX2luZm8KICAg IC8qIElmIG5vbi16ZXJvLCBhIHBlbmRpbmcgd2FpdCBzdGF0dXMuICAqLwogICAgaW50IHN0YXR1 czsKICAKCmRpZmYgLS1naXQgYS9nZGItNi42LXN0ZXAtdGhyZWFkLWV4aXQucGF0Y2ggYi9nZGIt Ni42LXN0ZXAtdGhyZWFkLWV4aXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDIyYWZiZWEuLjAwMDAwMDAKLS0tIGEvZ2RiLTYuNi1zdGVwLXRocmVhZC1leGl0LnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2xpbnV4LW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmln L2dkYi9saW51eC1uYXQuYwkyMDEwLTExLTE2IDA3OjU4OjE1LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDc6NTk6MDYu MDAwMDAwMDAwICswMTAwCi1AQCAtMTg2MywxNiArMTg2MywxOCBAQCByZXN1bWVfc2V0X2NhbGxi YWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwCi0gCi0gc3RhdGljIHZvaWQKLSBsaW51eF9uYXRfcmVz dW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLAotLQkJICBwdGlkX3QgcHRpZCwgaW50IHN0ZXAs IGVudW0gdGFyZ2V0X3NpZ25hbCBzaWdubykKLSsJCSAgcHRpZF90IHB0aWQsIGludCBzdGVwX2lu dCwgZW51bSB0YXJnZXRfc2lnbmFsIHNpZ25vKQotIHsKLSAgIHNpZ3NldF90IHByZXZfbWFzazsK LSAgIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0gICBpbnQgcmVzdW1lX21hbnk7Ci0rICBlbnVtIHJl c3VtZV9zdGVwIHN0ZXAgPSBzdGVwX2ludDsKLSAKLSAgIGlmIChkZWJ1Z19saW51eF9uYXQpCi0g ICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSAJCQkiTExSOiBQcmVwYXJpbmcg dG8gJXMgJXMsICVzLCBpbmZlcmlvcl9wdGlkICVzXG4iLAotLQkJCXN0ZXAgPyAic3RlcCIgOiAi cmVzdW1lIiwKLSsJCQkoc3RlcCA9PSBSRVNVTUVfU1RFUF9ORUVERUQKLSsJCQkgPyAibmVlZGVk IiA6IChzdGVwID8gInN0ZXAiIDogInJlc3VtZSIpKSwKLSAJCQl0YXJnZXRfcGlkX3RvX3N0ciAo cHRpZCksCi0gCQkJKHNpZ25vICE9IFRBUkdFVF9TSUdOQUxfMAotIAkJCSA/IHN0cnNpZ25hbCAo dGFyZ2V0X3NpZ25hbF90b19ob3N0IChzaWdubykpIDogIjAiKSwKLUBAIC0zMTcxLDEwICszMTcz LDM0IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZlbnQgKGludCBsd3BpZCwgaW50IHMKLSAKLSAgICAg ICBpZiAobnVtX2x3cHMgKEdFVF9QSUQgKGxwLT5wdGlkKSkgPiAxKQotICAgICAgICB7Ci0rCWVu dW0gcmVzdW1lX3N0ZXAgc3RlcCA9IGxwLT5zdGVwOwotKwlwaWRfdCBwaWQgPSBHRVRfUElEIChs cC0+cHRpZCk7Ci0rCi0gCSAvKiBJZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgbW9yZSBMV1AsIHRo ZW4gdGhlIGV4aXQgc2lnbmFsCi0gCSAgICB3YXMgbm90IHRoZSBlbmQgb2YgdGhlIGRlYnVnZ2Vk IGFwcGxpY2F0aW9uIGFuZCBzaG91bGQgYmUKLSAJICAgIGlnbm9yZWQuICAqLwotIAkgZXhpdF9s d3AgKGxwKTsKLSsKLSsJaWYgKHN0ZXAgPT0gUkVTVU1FX1NURVBfVVNFUikKLSsJICB7Ci0rCSAg ICAvKiBOb3cgc3RvcCB0aGUgY2xvc2VzdCBMV1AncyAuLi4gICovCi0rCSAgICBscCA9IGZpbmRf bHdwX3BpZCAocGlkX3RvX3B0aWQgKHBpZCkpOwotKwkgICAgaWYgKCFscCkKLSsJICAgICAgbHAg PSBsd3BfbGlzdDsKLSsJICAgIGdkYl9hc3NlcnQgKGxwICE9IE5VTEwpOwotKwkgICAgZXJybm8g PSAwOwotKwkgICAgcHRyYWNlIChQVFJBQ0VfQ09OVCwgR0VUX0xXUCAobHAtPnB0aWQpLCAwLAot KwkJICAgICh2b2lkICopICh1bnNpZ25lZCBsb25nKSBTSUdTVE9QKTsKLSsJICAgIGlmIChkZWJ1 Z19saW51eF9uYXQpCi0rCSAgICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJ CQkJICAiUFRSQUNFX0NPTlQgJXMsIDAsIDAgKCVzKVxuIiwKLSsJCQkJICB0YXJnZXRfcGlkX3Rv X3N0ciAobHAtPnB0aWQpLAotKwkJCQkgIGVycm5vID8gc2FmZV9zdHJlcnJvciAoZXJybm8pCi0r CQkJCQk6ICJPSyIpOwotKwkgICAgLyogQXZvaWQgdGhlIHNpbGVudCBgZGVsYXllZCBTSUdTVE9Q JyBoYW5kbGluZy4gICovCi0rCSAgICBscC0+c2lnbmFsbGVkID0gMDsKLSsJICB9Ci0rCi0gCSBy ZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICB9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuNi10ZXN0 c3VpdGUtdGltZW91dHMucGF0Y2ggYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaApp bmRleCAxMTY2ZWYwLi43ZTY5NzQwIDEwMDY0NAotLS0gYS9nZGItNi42LXRlc3RzdWl0ZS10aW1l b3V0cy5wYXRjaAorKysgYi9nZGItNi42LXRlc3RzdWl0ZS10aW1lb3V0cy5wYXRjaApAQCAtMSw0 MiArMSwyNiBAQAotLS0tIC4vZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkxMCBK YW4gMjAwNyAwMzoyMzowNCAtMDAwMAkxLjIzCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2Fubm90YTEuZXhwCTEwIE1heSAyMDA3IDEyOjU0OjExIC0wMDAwCi1AQCAtNTcsNiArNTcsOCBA QCBpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0gICAgIGdkYl9zdGVwX2Zvcl9z dHViOwotIH0KK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYW5ub3RhMS5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmV4cAkyMDExLTEyLTEzIDE4OjIyOjA4LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hbm5vdGExLmV4cAkyMDExLTEyLTIwIDAwOjAxOjM2LjUxODg0NzAzMyArMDEwMAorQEAg LTUwLDYgKzUwLDggQEAgZ2RiX3N0YXJ0CisgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisgZ2RiX2xvYWQgJHtiaW5maWxlfQogIAogK2dkYl90ZXN0ICJzZXQgYnJlYWtwb2lu dCBwZW5kaW5nIG9mZiIgIiIgIkF2b2lkIGxvY2t1cCBvbiBub25leGlzdGluZyBmdW5jdGlvbnMi CiArCiAgIwogICMgdGhlIGxpbmUgYXQgd2hpY2ggYnJlYWsgbWFpbiB3aWxsIHB1dCB0aGUgYnJl YWtwb2ludAogICMKLS0tLSAuL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5leHAJOSBK YW4gMjAwNyAxNzo1OTowOSAtMDAwMAkxLjEyCi0rKysgLi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNl L2Fubm90YTMuZXhwCTEwIE1heSAyMDA3IDEyOjU0OjExIC0wMDAwCi1AQCAtNTYsNiArNTYsOCBA QCBpZiBbdGFyZ2V0X2luZm8gZXhpc3RzIGdkYl9zdHViXSB7Ci0gICAgIGdkYl9zdGVwX2Zvcl9z dHViOwotIH0KK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5L2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvYW5ub3RhMy5leHAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnZGItNy40LjUwLjIwMTExMjE5Lm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmV4cAkyMDExLTEyLTEzIDE4OjIyOjA4LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9hbm5vdGEzLmV4cAkyMDExLTEyLTIwIDAwOjAxOjM2LjUxODg0NzAzMyArMDEwMAorQEAg LTUwLDYgKzUwLDggQEAgZ2RiX3N0YXJ0CisgZ2RiX3JlaW5pdGlhbGl6ZV9kaXIgJHNyY2Rpci8k c3ViZGlyCisgZ2RiX2xvYWQgJHtiaW5maWxlfQogIAogK2dkYl90ZXN0ICJzZXQgYnJlYWtwb2lu dCBwZW5kaW5nIG9mZiIgIiIgIkF2b2lkIGxvY2t1cCBvbiBub25leGlzdGluZyBmdW5jdGlvbnMi CiArCiAgIwogICMgdGhlIGxpbmUgYXQgd2hpY2ggYnJlYWsgbWFpbiB3aWxsIHB1dCB0aGUgYnJl YWtwb2ludAogICMKLS0tLSBnZGItNi42L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RlcC10 aHJlYWQtZXhpdC5leHAtb3JpZwkyMDA3LTA1LTEwIDE1OjAzOjE1LjAwMDAwMDAwMCArMDIwMAot KysrIGdkYi02LjYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGVwLXRocmVhZC1leGl0LmV4 cAkyMDA3LTA1LTEwIDE1OjA0OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTU4LDYgKzU4LDkgQEAg Z2RiX3Rlc3QgImNvbnRpbnVlIiAiQnJlYWsuKnRocmVhZF9mdW5jdAotICMgdGhyZWFkIHRvIGJl IHN0b3BwZWQgYW5kIGEgbWVzc2FnZSBwcmludGVkIHRvIHRlbGwgdXMgd2UgaGF2ZSBzdGVwcGVk Ci0gIyBvdmVyIHRoZSB0aHJlYWQgZXhpdC4KLSBzZXQgdGVzdCAic3RlcCBvdmVyIHRocmVhZCBl eGl0IDEiCi0rIyBwcGM2NCBpcyBjdXJyZW50bHkgZmFpbGluZzoKLStzZXQgdGltZW91dF9vbGQg JHRpbWVvdXQKLStzZXQgdGltZW91dCA2MAotIGdkYl90ZXN0X211bHRpcGxlICJuZXh0IiAiJHRl c3QiIHsKLSAgIC1yZSAiXH0uKiRnZGJfcHJvbXB0ICQiIHsKLSAgICAgIHNlbmRfZ2RiICJuZXh0 XG4iCi1AQCAtNzEsNiArNzQsNyBAQCBnZGJfdGVzdF9tdWx0aXBsZSAibmV4dCIgIiR0ZXN0IiB7 Ci0gICAgICBleHBfY29udGludWUKLSAgIH0KLSB9Ci0rc2V0IHRpbWVvdXQgJHRpbWVvdXRfb2xk Ci0gCi0gIyBXaXRob3V0IHRoaXMgZml4dXAgd2UgY291bGQgZW5kIHVwIGluOgotICMgIzAgIDB4 MDAxMTA0MTYgaW4gX19rZXJuZWxfdnN5c2NhbGwgKCkKCmRpZmYgLS1naXQgYS9nZGItNi42LXRo cmVhZHMtc3RhdGljLXRlc3QucGF0Y2ggYi9nZGItNi42LXRocmVhZHMtc3RhdGljLXRlc3QucGF0 Y2gKaW5kZXggMmJhYzcyMi4uM2Y4ZDE2ZSAxMDA2NDQKLS0tIGEvZ2RiLTYuNi10aHJlYWRzLXN0 YXRpYy10ZXN0LnBhdGNoCisrKyBiL2dkYi02LjYtdGhyZWFkcy1zdGF0aWMtdGVzdC5wYXRjaApA QCAtMSw4ICsxLDggQEAKLUluZGV4OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE5 L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc3RhdGljdGhyZWFkcy5leHAKID09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9z dGF0aWN0aHJlYWRzLmV4cAkyMDEwLTA2LTAyIDIzOjUzOjI4LjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJl YWRzLmV4cAkyMDEwLTA3LTEyIDExOjQzOjI2LjAwMDAwMDAwMCArMDIwMAotQEAgLTQ0LDYgKzQ0 LDE4IEBAIGdkYl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IHNldmVuYml0LXMKKy0tLSBnZGIt Ny40LjUwLjIwMTExMjE5Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJl YWRzLmV4cAkyMDExLTEyLTE5IDIxOjA3OjAxLjQzNjQ3NTIwMSArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMTEyMTkvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zdGF0aWN0aHJlYWRzLmV4cAky MDExLTEyLTE5IDIyOjA4OjU1LjQ0NDUxNDEyNyArMDEwMAorQEAgLTQ1LDYgKzQ1LDEzIEBAIGdk Yl90ZXN0X25vX291dHB1dCAic2V0IHByaW50IHNldmVuYml0LXMKICAjIFNlZSBpZiB0aGUgc3Rh dGljIG11bHRpLXRocmVhZGVkIHByb2dyYW0gcnVucy4KICAKICBydW50b19tYWluCkBAIC0xMSwx MiArMTEsNyBAQCBJbmRleDogZ2RiLTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3N0YXRpY3RocmVhZHMuZXhwCiArIyAqIDIgVGhyZWFkIDEzNTY2MTY2NCAoTFdQIDM4 NTYpICBtYWluICgpIGF0IHRocmVhZGxvb3AuYzo0MQogKyMgICAxIHByb2Nlc3MgMzg1NiAgbWFp biAoKSBhdCB0aHJlYWRsb29wLmM6NDEKICsKLStzZXQgdGVzdCAiaW5mbyB0aHJlYWRzIG9uIHN0 YXJ0IgotK2dkYl90ZXN0X211bHRpcGxlICJpbmZvIHRocmVhZHMiICIkdGVzdCIgewotKyAgICAt cmUgIl5pbmZvIHRocmVhZHNccj9cblxbXlxyXG5cXSogVGhyZWFkIFxbXlxyXG5cXSpccj9cbiRn ZGJfcHJvbXB0IiB7Ci0rCXBhc3MgIiR0ZXN0IgotKyAgICB9Ci0rfQorK2dkYl90ZXN0ICJpbmZv IHRocmVhZHMiICJeaW5mbyB0aHJlYWRzXHJcblxbIFx0XF0qSWRcWyBcdFxdK1RhcmdldCBJZFxb IFx0XF0rRnJhbWVcWyBcdFxdKlxyXG5cW15cclxuXF0qIFRocmVhZCBcW15cclxuXF0qIiAiaW5m byB0aHJlYWRzIG9uIHN0YXJ0IgogKwogIGdkYl90ZXN0ICJicmVhayBzZW1fcG9zdCIKICBzZXQg dGVzdCAiQ29udGludWUgdG8gbWFpbidzIGNhbGwgb2Ygc2VtX3Bvc3QiCgpkaWZmIC0tZ2l0IGEv Z2RiLTYuNy10ZXN0c3VpdGUtc3RhYmxlLXJlc3VsdHMucGF0Y2ggYi9nZGItNi43LXRlc3RzdWl0 ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAppbmRleCBhNGMxOTVjLi43ZTJmYjM5IDEwMDY0NAotLS0g YS9nZGItNi43LXRlc3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaAorKysgYi9nZGItNi43LXRl c3RzdWl0ZS1zdGFibGUtcmVzdWx0cy5wYXRjaApAQCAtMjAsMTAgKzIwLDEwIEBAIHJhbmRvbSBG QUlMOiBnZGIuYmFzZS9hdXh2LmV4cDogbWF0Y2hpbmcgYXV4diBkYXRhIGZyb20gbGl2ZSBhbmQg Z2NvcmUKIGdkYi02LjguNTAuMjAwOTAyMDkvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEx LmV4cDoKIGZyYW1lcy1pbnZhbGlkIGNhbiBoYXBwZW4gYXN5bmNocm9ub3VzbHkuCiAKLUluZGV4 OiBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMKK0lu ZGV4OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4xLjkwLjIwMTAwNzExLm9yaWcvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9maWxlaW8uYwkyMDA5LTEwLTAxIDE3OjM5OjEzLjAwMDAwMDAwMCArMDIwMAotKysr IGdkYi03LjEuOTAuMjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uYwkyMDEw LTA3LTEyIDExOjQxOjQzLjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjAxMDMu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5jCTIwMDktMTAtMDEgMTc6Mzk6MTMu MDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2ZpbGVpby5jCTIwMTItMDEtMDMgMTU6MjE6MjguMTIyNzI5MjQ5ICswMTAwCiBAQCAt NTgsNiArNTgsOCBAQCBzeXN0ZW0gKGNvbnN0IGNoYXIgKiBzdHJpbmcpOwogIDEpIEludmFsaWQg c3RyaW5nL2NvbW1hbmQuIC0gIHJldHVybnMgMTI3LiAgKi8KICBzdGF0aWMgY29uc3QgY2hhciAq c3RyZXJybm8gKGludCBlcnIpOwpAQCAtNzEsMTAgKzcxLDEwIEBAIEluZGV4OiBnZGItNy4xLjkw LjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmMKICAgIC8qIERvbid0IGNo YW5nZSB0aGUgb3JkZXIgb2YgdGhlIGNhbGxzLiAgVGhleSBwYXJ0bHkgZGVwZW5kIG9uIGVhY2gg b3RoZXIgKi8KICAgIHRlc3Rfb3BlbiAoKTsKICAgIHRlc3Rfd3JpdGUgKCk7Ci1JbmRleDogZ2Ri LTcuMS45MC4yMDEwMDcxMS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAKK0luZGV4 OiBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjEuOTAuMjAxMDA3MTEub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2ZpbGVpby5leHAJMjAxMC0wNi0wOSAwMDo1ODowMy4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4xLjkwLjIwMTAwNzExL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAky MDEwLTA3LTEyIDExOjQyOjA3LjAwMDAwMDAwMCArMDIwMAorLS0tIGdkYi03LjQuNTAuMjAxMjAx MDMub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ZpbGVpby5leHAJMjAxMS0xMi0yNiAxMjoy NDo1NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAzL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvZmlsZWlvLmV4cAkyMDEyLTAxLTAzIDE1OjIyOjAyLjcxNjYwMTk1NiArMDEw MAogQEAgLTQyLDggKzQyLDggQEAgaWYgW2dldF9jb21waWxlcl9pbmZvICR7YmluZmlsZX1dIHsK ICAgICAgcmV0dXJuIC0xOwogIH0KQEAgLTk1LDkgKzk1LDkgQEAgSW5kZXg6IGdkYi03LjEuOTAu MjAxMDA3MTEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9maWxlaW8uZXhwCiAgCiAgZ2RiX3Rlc3Qg Y29udGludWUgXAogICJDb250aW51aW5nXFwuLipvcGVuIDU6LipFQUNDRVMkc3RvcF9tc2ciIFwK LUBAIC0yNTAsOCArMjUwLDggQEAgZ2RiX3Rlc3QgY29udGludWUgXAotIHNlbmRfZ2RiICJxdWl0 XG4iCi0gc2VuZF9nZGIgInlcbiIKK0BAIC0yNTEsOCArMjUxLDggQEAgZ2RiX2V4aXQKKyAjIFdh aXQgdGlsbCBHREIgcmVhbGx5IGV4aXRzLgorIHNsZWVwIDEKICAKIC1yZW1vdGVfZXhlYyBidWls ZCB7c2ggLXhjIHRlc3RcIC1yXCBkaXIyLmZpbGVpby50ZXN0XCAmJlwgY2htb2RcIC1mXCArd1wg ZGlyMi5maWxlaW8udGVzdH0KIC1yZW1vdGVfZXhlYyBidWlsZCB7c2ggLXhjIHJtXCAtcmZcICou ZmlsZWlvLnRlc3R9CgpkaWZmIC0tZ2l0IGEvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFj aC1zdG9wcGVkLnBhdGNoIGIvZ2RiLTYuOC1hdHRhY2gtc2lnbmFsbGVkLWRldGFjaC1zdG9wcGVk LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTE4MTIyLi4wMDAwMDAwCi0t LSBhL2dkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDE4MyArMCwwIEBACi1JbmRleDogZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIv bGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4wLjUwLjIwMTAwMTE1Lm9yaWcvZ2Ri L2xpbnV4LW5hdC5jCTIwMTAtMDEtMTUgMTE6NTM6MzQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2Ri LTcuMC41MC4yMDEwMDExNS9nZGIvbGludXgtbmF0LmMJMjAxMC0wMS0xNSAxMjoxMzo1My4wMDAw MDAwMDAgKzAxMDAKLUBAIC0yMDgsNiArMjA4LDkgQEAgYmxvY2tlZC4gICovCi0gc3RhdGljIHN0 cnVjdCB0YXJnZXRfb3BzICpsaW51eF9vcHM7Ci0gc3RhdGljIHN0cnVjdCB0YXJnZXRfb3BzIGxp bnV4X29wc19zYXZlZDsKLSAKLSsvKiBQSUQgb2YgdGhlIGluZmVyaW9yIHN0b3BwZWQgYnkgU0lH U1RPUCBiZWZvcmUgYXR0YWNoaW5nIChvciB6ZXJvKS4gICovCi0rc3RhdGljIHBpZF90IHBpZF93 YXNfc3RvcHBlZDsKLSsKLSAvKiBUaGUgbWV0aG9kIHRvIGNhbGwsIGlmIGFueSwgd2hlbiBhIG5l dyB0aHJlYWQgaXMgYXR0YWNoZWQuICAqLwotIHN0YXRpYyB2b2lkICgqbGludXhfbmF0X25ld190 aHJlYWQpIChwdGlkX3QpOwotIAotQEAgLTkzMyw3ICs5MzYsMTQgQEAgQXR0YWNoaW5nIGFmdGVy IHByb2Nlc3MgJWQgZm9yayB0byBjaGlsZAotIAkgIHBhcmVudF9pbmYtPndhaXRpbmdfZm9yX3Zm b3JrX2RvbmUgPSAwOwotIAl9Ci0gICAgICAgZWxzZSBpZiAoZGV0YWNoX2ZvcmspCi0tCXRhcmdl dF9kZXRhY2ggKE5VTEwsIDApOwotKwl7Ci0rCSAgLyogV2Ugc2hvdWxkIGNoZWNrIFBJRF9XQVNf U1RPUFBFRCBhbmQgZGV0YWNoIGl0IHN0b3BwZWQgYWNjb3JkaW5nbHkuCi0rCSAgICAgSW4gdGhp cyBwb2ludCBvZiBjb2RlIGl0IGNhbm5vdCBiZSAxIGFzIHdlIHdvdWxkIG5vdCBnZXQgRk9SSwot KwkgICAgIGV4ZWN1dGVkIHdpdGhvdXQgQ09OVElOVUUgZmlyc3Qgd2hpY2ggcmVzZXRzIFBJRF9X QVNfU1RPUFBFRC4KLSsJICAgICBXZSB3b3VsZCBoYXZlIHRvIGZpcnN0IFRBUkdFVF9TVE9QIGFu ZCBXQUlUUElEIGl0IGFzIHdpdGggcnVubmluZwotKwkgICAgIGluZmVyaW9yIFBUUkFDRV9ERVRB Q0gsIFNJR1NUT1Agd2lsbCBpZ25vcmUgdGhlIHNpZ25hbC4gICovCi0rCSAgdGFyZ2V0X2RldGFj aCAoTlVMTCwgMCk7Ci0rCX0KLSAKLSAgICAgICAvKiBOb3RlIHRoYXQgdGhlIGRldGFjaCBhYm92 ZSBtYWtlcyBQQVJFTlRfSU5GIGRhbmdsaW5nLiAgKi8KLSAKLUBAIC0xNDI3LDYgKzE0MzcsNyBA QCBsaW51eF9uYXRfcG9zdF9hdHRhY2hfd2FpdCAocHRpZF90IHB0aWQsCi0gICAgICAgaWYgKGRl YnVnX2xpbnV4X25hdCkKLSAJZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9nLAotIAkJCSAg ICAiTE5QQVc6IEF0dGFjaGluZyB0byBhIHN0b3BwZWQgcHJvY2Vzc1xuIik7Ci0rICAgICAgcGlk X3dhc19zdG9wcGVkID0gR0VUX1BJRCAocHRpZCk7Ci0gCi0gICAgICAgLyogVGhlIHByb2Nlc3Mg aXMgZGVmaW5pdGVseSBzdG9wcGVkLiAgSXQgaXMgaW4gYSBqb2IgY29udHJvbAotIAkgc3RvcCwg dW5sZXNzIHRoZSBrZXJuZWwgcHJlZGF0ZXMgdGhlIFRBU0tfU1RPUFBFRCAvCi1AQCAtMTc1Nyw2 ICsxNzY4LDkgQEAgR1BUOiBsd3AgJXMgaGFkIHNpZ25hbCAlcywgYnV0IGl0IGlzIGluIAotIAkJ CSAgICB0YXJnZXRfc2lnbmFsX3RvX3N0cmluZyAoc2lnbm8pKTsKLSAgICAgfQotIAotKyAgaWYg KCpzdGF0dXMgPT0gMCAmJiBHRVRfUElEIChscC0+cHRpZCkgPT0gcGlkX3dhc19zdG9wcGVkKQot KyAgICAqc3RhdHVzID0gV19TVE9QQ09ERSAoU0lHU1RPUCk7Ci0rCi0gICByZXR1cm4gMDsKLSB9 Ci0gCi1AQCAtMTg2Niw2ICsxODgwLDggQEAgbGludXhfbmF0X2RldGFjaCAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcwotICAgICB9Ci0gICBlbHNlCi0gICAgIGxpbnV4X29wcy0+dG9fZGV0YWNoIChv cHMsIGFyZ3MsIGZyb21fdHR5KTsKLSsKLSsgIHBpZF93YXNfc3RvcHBlZCA9IDA7Ci0gfQotIAot IC8qIFJlc3VtZSBMUC4gICovCi1AQCAtMjAzMSw2ICsyMDQ3LDE0IEBAIGxpbnV4X25hdF9yZXN1 bWUgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMKLSAgICAgIHJlc3VtZV9jYWxsYmFjay4gICovCi0g ICBscC0+c3RvcHBlZCA9IDA7Ci0gCi0rICAvKiBBdCB0aGlzIHBvaW50LCB3ZSBhcmUgZ29pbmcg dG8gcmVzdW1lIHRoZSBpbmZlcmlvciBhbmQgaWYgd2UKLSsgICAgIGhhdmUgYXR0YWNoZWQgdG8g YSBzdG9wcGVkIHByb2Nlc3MsIHdlIG5vIGxvbmdlciBzaG91bGQgbGVhdmUKLSsgICAgIGl0IGFz IHN0b3BwZWQgaWYgdGhlIHVzZXIgZGV0YWNoZXMuICBQVElEIHZhcmlhYmxlIGhhcyBQSUQgc2V0 IHRvIExXUAotKyAgICAgd2hpbGUgd2UgbmVlZCB0byBjaGVjayB0aGUgcmVhbCBQSUQgaGVyZS4g ICovCi0rCi0rICBpZiAoIXN0ZXAgJiYgbHAgJiYgcGlkX3dhc19zdG9wcGVkID09IEdFVF9QSUQg KGxwLT5wdGlkKSkKLSsgICAgcGlkX3dhc19zdG9wcGVkID0gMDsKLSsKLSAgIGlmIChyZXN1bWVf bWFueSkKLSAgICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWQsIHJlc3VtZV9jYWxsYmFjaywgTlVM TCk7Ci0gCi1AQCAtMzkyMyw2ICszOTQ3LDggQEAgbGludXhfbmF0X21vdXJuX2luZmVyaW9yIChz dHJ1Y3QgdGFyZ2V0XwotICAgICAgICB0aGVyZSBhcmUgb3RoZXIgdmlhYmxlIGZvcmtzIHRvIGRl YnVnLiAgRGVsZXRlIHRoZSBleGl0aW5nCi0gICAgICAgIG9uZSBhbmQgY29udGV4dC1zd2l0Y2gg dG8gdGhlIGZpcnN0IGF2YWlsYWJsZS4gICovCi0gICAgIGxpbnV4X2ZvcmtfbW91cm5faW5mZXJp b3IgKCk7Ci0rCi0rICBwaWRfd2FzX3N0b3BwZWQgPSAwOwotIH0KLSAKLSAvKiBDb252ZXJ0IGEg bmF0aXZlL2hvc3Qgc2lnaW5mbyBvYmplY3QsIGludG8vZnJvbSB0aGUgc2lnaW5mbyBpbiB0aGUK LUluZGV4OiBnZGItNy4wLjUwLjIwMTAwMTE1L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0 YWNoLXN0b3BwZWQuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMC41MC4yMDEwMDExNS5vcmln L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvYXR0YWNoLXN0b3BwZWQuZXhwCTIwMTAtMDEtMDEg MDg6MzI6MDYuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL2F0dGFjaC1zdG9wcGVkLmV4cAkyMDEwLTAxLTE1IDExOjU0OjU3 LjAwMDAwMDAwMCArMDEwMAotQEAgLTYyLDcgKzYyLDY1IEBAIHByb2MgY29yZWZ1bmMgeyB0aHJl YWR0eXBlIH0gewotICAgICBnZGJfcmVpbml0aWFsaXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSAg ICAgZ2RiX2xvYWQgJHtiaW5maWxlfQotIAotLSAgICAjIFZlcmlmeSB0aGF0IHdlIGNhbiBhdHRh Y2ggdG8gdGhlIHN0b3BwZWQgcHJvY2Vzcy4KLSsgICAgIyBWZXJpZnkgdGhhdCB3ZSBjYW4gYXR0 YWNoIHRvIHRoZSBwcm9jZXNzIGJ5IGZpcnN0IGdpdmluZyBpdHMKLSsgICAgIyBleGVjdXRhYmxl IG5hbWUgdmlhIHRoZSBmaWxlIGNvbW1hbmQsIGFuZCB1c2luZyBhdHRhY2ggd2l0aCB0aGUKLSsg ICAgIyBwcm9jZXNzIElELgotKwotKyAgICBzZXQgdGVzdCAiJHRocmVhZHR5cGU6IHNldCBmaWxl LCBiZWZvcmUgYXR0YWNoMSB0byBzdG9wcGVkIHByb2Nlc3MiCi0rICAgIGdkYl90ZXN0X211bHRp cGxlICJmaWxlICRiaW5maWxlIiAiJHRlc3QiIHsKLSsgICAgICAgLXJlICJMb2FkIG5ldyBzeW1i b2wgdGFibGUgZnJvbS4qeSBvciBuLiAkIiB7Ci0rCSAgICBnZGJfdGVzdCAieSIgIlJlYWRpbmcg c3ltYm9scyBmcm9tICRlc2NhcGVkYmluZmlsZVwuXC5cLipkb25lLiIgXAotKwkJICAgICIkdGVz dCAocmUtcmVhZCkiCi0rCX0KLSsJLXJlICJSZWFkaW5nIHN5bWJvbHMgZnJvbSAkZXNjYXBlZGJp bmZpbGVcLlwuXC4qZG9uZS4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAgcGFzcyAiJHRlc3QiCi0r CX0KLSsgICAgfQotKwotKyAgICBzZXQgdGVzdCAiJHRocmVhZHR5cGU6IGF0dGFjaDEgdG8gc3Rv cHBlZCwgYWZ0ZXIgc2V0dGluZyBmaWxlIgotKyAgICBnZGJfdGVzdF9tdWx0aXBsZSAiYXR0YWNo ICR0ZXN0cGlkIiAiJHRlc3QiIHsKLSsJLXJlICJBdHRhY2hpbmcgdG8gcHJvZ3JhbS4qYD8kZXNj YXBlZGJpbmZpbGUnPywgcHJvY2VzcyAkdGVzdHBpZC4qJGdkYl9wcm9tcHQgJCIgewotKwkgICAg cGFzcyAiJHRlc3QiCi0rCX0KLSsgICAgfQotKwotKyAgICAjICIuKnNsZWVwLipjbG9uZS4qIiB3 b3VsZCBmYWlsIG9uIHMzOTB4IGFzIGJ0IHN0b3BzIGF0IFNUQVJUX1RIUkVBRCB0aGVyZS4KLSsg ICAgaWYge1tzdHJpbmcgZXF1YWwgJHRocmVhZHR5cGUgdGhyZWFkZWRdfSB7Ci0rCWdkYl90ZXN0 ICJ0aHJlYWQgYXBwbHkgYWxsIGJ0IiAiLipzbGVlcC4qc3RhcnRfdGhyZWFkLioiICIkdGhyZWFk dHlwZTogYXR0YWNoMSB0byBzdG9wcGVkIGJ0IgotKyAgICB9IGVsc2UgewotKwlnZGJfdGVzdCAi YnQiICIuKnNsZWVwLiptYWluLioiICIkdGhyZWFkdHlwZTogYXR0YWNoMSB0byBzdG9wcGVkIGJ0 IgotKyAgICB9Ci0rCi0rICAgICMgRXhpdCBhbmQgZGV0YWNoIHRoZSBwcm9jZXNzLgotKyAgICAg ICAKLSsgICAgZ2RiX2V4aXQKLSsKLSsgICAgIyBBdm9pZCBzb21lIHJhY2U6Ci0rICAgIHNsZWVw IDIKLSsKLSsgICAgaWYgW2NhdGNoIHtvcGVuIC9wcm9jLyR7dGVzdHBpZH0vc3RhdHVzIHJ9IGZp bGVpZF0gewotKwlzZXQgbGluZTIgIk5PVEZPVU5EIgotKyAgICB9IGVsc2UgewotKwlnZXRzICRm aWxlaWQgbGluZTE7Ci0rCWdldHMgJGZpbGVpZCBsaW5lMjsKLSsJY2xvc2UgJGZpbGVpZDsKLSsg ICAgfQotKwotKyAgICBzZXQgdGVzdCAiJHRocmVhZHR5cGU6IGF0dGFjaDEsIGV4aXQgbGVhdmVz IHByb2Nlc3Mgc3RvcHBlZCIKLSsgICAgaWYge1tzdHJpbmcgbWF0Y2ggIiooc3RvcHBlZCkqIiAk bGluZTJdfSB7Ci0rICAgICAgcGFzcyAkdGVzdAotKyAgICB9IGVsc2UgewotKyAgICAgIGZhaWwg JHRlc3QKLSsgICAgfQotKwotKyAgICAjIEF0IHRoaXMgcG9pbnQsIHRoZSBwcm9jZXNzIHNob3Vs ZCBzdGlsbCBiZSBzdG9wcGVkCi0rCi0rICAgIGdkYl9zdGFydAotKyAgICBnZGJfcmVpbml0aWFs aXplX2RpciAkc3JjZGlyLyRzdWJkaXIKLSsgICAgZ2RiX2xvYWQgJHtiaW5maWxlfQotKwotKyAg ICAjIFZlcmlmeSB0aGF0IHdlIGNhbiBhdHRhY2ggdG8gdGhlIHByb2Nlc3MganVzdCBieSBnaXZp bmcgdGhlCi0rICAgICMgcHJvY2VzcyBJRC4KLSAgICAgICAgCi0gICAgIHNldCB0ZXN0ICIkdGhy ZWFkdHlwZTogYXR0YWNoMiB0byBzdG9wcGVkLCBhZnRlciBzZXR0aW5nIGZpbGUiCi0gICAgIGdk Yl90ZXN0X211bHRpcGxlICJhdHRhY2ggJHRlc3RwaWQiICIkdGVzdCIgewotSW5kZXg6IGdkYi03 LjAuNTAuMjAxMDAxMTUvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9hdHRhY2hzdG9wLW10LmV4 cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjAuNTAuMjAxMDAxMTUub3JpZy9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL2F0dGFjaHN0b3AtbXQuZXhwCTIwMTAtMDEtMDEgMDg6MzI6MDYuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMC41MC4yMDEwMDExNS9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL2F0dGFjaHN0b3AtbXQuZXhwCTIwMTAtMDEtMTUgMTE6NTQ6NTcuMDAwMDAwMDAwICswMTAw Ci1AQCAtMTc2LDEyICsxNzYsMjMgQEAgZ2RiX3Rlc3QgImJ0IiAiLipzbGVlcC4qKGZ1bmN8bWFp bikuKiIgIgotICMgRXhpdCBhbmQgZGV0YWNoIHRoZSBwcm9jZXNzLgotIGdkYl9leGl0Ci0gCi0t IyBTdG9wIHRoZSBwcm9ncmFtIAotLXJlbW90ZV9leGVjIGJ1aWxkICJraWxsIC1zIFNUT1AgJHt0 ZXN0cGlkfSIKLS0KLSAjIE5vIHJhY2UKLSBzbGVlcCAyCi0gCi0rc2V0IGZpbGVpZDMgW29wZW4g JHN0YXR1czIgcl07Ci0rZ2V0cyAkZmlsZWlkMyBsaW5lMTsKLStnZXRzICRmaWxlaWQzIGxpbmUy OwotK2Nsb3NlICRmaWxlaWQzOwotKwotK3NldCB0ZXN0ICJhdHRhY2gzLCBleGl0IGxlYXZlcyBw cm9jZXNzIHN0b3BwZWQiCi0raWYge1tzdHJpbmcgbWF0Y2ggIiooc3RvcHBlZCkqIiAkbGluZTJd fSB7Ci0rICBwYXNzICR0ZXN0Ci0rfSBlbHNlIHsKLSsgIGZhaWwgJHRlc3QKLSt9Ci0rCi0rIyBB dCB0aGlzIHBvaW50LCB0aGUgcHJvY2VzcyBzaG91bGQgc3RpbGwgYmUgc3RvcHBlZAotKwotICMg Q29udGludWUgdGhlIHRlc3QgYXMgd2Ugd291bGQgaGl0IGFub3RoZXIgZXhwZWN0ZWQgYnVnIHJl Z2FyZGluZwotICMgCVByb2dyYW0gcmVjZWl2ZWQgc2lnbmFsIFNJR1NUT1AsIFN0b3BwZWQgKHNp Z25hbCkuCi0gIyBhY3Jvc3MgTlBUTCB0aHJlYWRzLgoKZGlmZiAtLWdpdCBhL2dkYi02Ljgtc3Bh cmM2NC1zaWxlbmNlLW1lbWNweS1jaGVjay5wYXRjaCBiL2dkYi02Ljgtc3BhcmM2NC1zaWxlbmNl LW1lbWNweS1jaGVjay5wYXRjaAppbmRleCBhOWQzMGNlLi42ZGY4YzlhIDEwMDY0NAotLS0gYS9n ZGItNi44LXNwYXJjNjQtc2lsZW5jZS1tZW1jcHktY2hlY2sucGF0Y2gKKysrIGIvZ2RiLTYuOC1z cGFyYzY0LXNpbGVuY2UtbWVtY3B5LWNoZWNrLnBhdGNoCkBAIC0xLDggKzEsOSBAQAotZGlmZiAt dXAgZ2RiLTYuOC9nZGIvc3BhcmMtdGRlcC5jLkJBRCBnZGItNi44L2dkYi9zcGFyYy10ZGVwLmMK LS0tLSBnZGItNi44L2dkYi9zcGFyYy10ZGVwLmMuQkFECTIwMDgtMDUtMTUgMTY6MTI6NTguMDAw MDAwMDAwIC0wNTAwCi0rKysgZ2RiLTYuOC9nZGIvc3BhcmMtdGRlcC5jCTIwMDgtMDUtMTUgMTY6 MTM6NDEuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMTEyMiw2ICsxMTIyLDcgQEAgc3BhcmMzMl9zdG9y ZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBlIAotICAgaWYgKHNwYXJjX2Zsb2F0aW5nX3AgKHR5 cGUpKQorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3NwYXJjLXRkZXAuYworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvc3BhcmMtdGRlcC5jCTIwMTEt MDktMjggMTk6NTk6NDIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9n ZGIvc3BhcmMtdGRlcC5jCTIwMTEtMTItMTkgMDE6MjU6MjkuMjk0MDQ2MTk5ICswMTAwCitAQCAt MTMxNiw2ICsxMzE2LDcgQEAgc3BhcmMzMl9zdG9yZV9yZXR1cm5fdmFsdWUgKHN0cnVjdCB0eXBl CisgICBpZiAoc3BhcmNfZmxvYXRpbmdfcCAodHlwZSkgfHwgc3BhcmNfY29tcGxleF9mbG9hdGlu Z19wICh0eXBlKSkKICAgICAgewogICAgICAgIC8qIEZsb2F0aW5nIHJldHVybiB2YWx1ZXMuICAq LwogKyAgICAgIGxlbiA9IChsZW4gPD0gOCkgPyBsZW4gOiA4OwoKZGlmZiAtLWdpdCBhL2dkYi02 LjgtdHVpLXNpbmdsZWJpbmFyeS5wYXRjaCBiL2dkYi02LjgtdHVpLXNpbmdsZWJpbmFyeS5wYXRj aApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2IwYmU0NS4uMDAwMDAwMAotLS0gYS9n ZGItNi44LXR1aS1zaW5nbGViaW5hcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCww IEBACi1Qcm92aWRlIGBnZGIgLS10dWknIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBoYXJkbGluayBg Z2RidHVpJy4KLQotLS0tIC4vZ2RiL2dkYi5jCTEgSmFuIDIwMDggMjI6NTM6MDkgLTAwMDAJMS42 Ci0rKysgLi9nZGIvZ2RiLmMJMjAgSnVuIDIwMDggMDg6MDI6NTcgLTAwMDAKLUBAIC0zMCw1ICsz MCwxOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICBhcmdzLmFyZ3YgPSBhcmd2 OwotICAgYXJncy51c2Vfd2luZG93cyA9IDA7Ci0gICBhcmdzLmludGVycHJldGVyX3AgPSBJTlRF UlBfQ09OU09MRTsKLSsKLSsgIGlmIChhcmd2WzBdKQotKyAgICB7Ci0rICAgICAgY2hhciAqczsK LSsKLSsgICAgICBzID0gc3RycmNociAoYXJndlswXSwgJy8nKTsKLSsgICAgICBpZiAocykKLSsJ cysrOwotKyAgICAgIGVsc2UKLSsJcyA9IGFyZ3ZbMF07Ci0rICAgICAgaWYgKHN0cmNtcCAocywg ImdkYnR1aSIpID09IDApCi0rCWFyZ3MuaW50ZXJwcmV0ZXJfcCA9IElOVEVSUF9UVUk7Ci0rICAg IH0KLSsKLSAgIHJldHVybiBnZGJfbWFpbiAoJmFyZ3MpOwotIH0KCmRpZmYgLS1naXQgYS9nZGIt YXJjaGVyLXBpZS1hZGRvbnMta2VlcC1kaXNhYmxlZC5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFk ZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCmluZGV4IGQyYjZjNzEuLjgzYWE4ZGEgMTAwNjQ0Ci0t LSBhL2dkYi1hcmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCisrKyBiL2dkYi1h cmNoZXItcGllLWFkZG9ucy1rZWVwLWRpc2FibGVkLnBhdGNoCkBAIC0xLDEzICsxLDExIEBACi1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCitJbmRleDogZ2RiLTcu NC41MC4yMDEyMDEwMy9nZGIvYnJlYWtwb2ludC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0yMiAxOTowODoxOS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMJMjAx MS0wNy0yMiAxOTozMjowNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xMzE5NSw2ICsxMzE5NSw1MCBA QCBpdGVyYXRlX292ZXJfYnJlYWtwb2ludHMgKGludCAoKmNhbGxiYWNrCi0gCi0gICByZXR1cm4g TlVMTDsKKy0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL2JyZWFrcG9pbnQuYwkyMDEy LTAxLTAzIDA1OjUyOjE1LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMjAxMDMv Z2RiL2JyZWFrcG9pbnQuYwkyMDEyLTAxLTAzIDE1OjIyOjU2LjEwNTQwNTU1OSArMDEwMAorQEAg LTEzNzI0LDYgKzEzNzI0LDUwIEBAIGluaXRpYWxpemVfYnJlYWtwb2ludF9vcHMgKHZvaWQpCiAg fQotKyAKLSt2b2lkCisgCisgdm9pZAogK2JyZWFrcG9pbnRzX3JlbG9jYXRlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgc3RydWN0IHNlY3Rpb25fb2Zmc2V0cyAqZGVsdGEpCiArewogKyAgc3Ry dWN0IGJwX2xvY2F0aW9uICpibCwgKipibHBfdG1wOwpAQCAtNTAsMTQgKzQ4LDE2IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMKICsgICAgcXNvcnQgKGJwX2xv Y2F0aW9uLCBicF9sb2NhdGlvbl9jb3VudCwgc2l6ZW9mICgqYnBfbG9jYXRpb24pLAogKwkgICBi cF9sb2NhdGlvbl9jb21wYXJlKTsKICt9Ci0gCi0gdm9pZAorKworK3ZvaWQKICBfaW5pdGlhbGl6 ZV9icmVha3BvaW50ICh2b2lkKQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFr cG9pbnQuaAorIHsKKyAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOworSW5kZXg6IGdkYi03 LjQuNTAuMjAxMjAxMDMvZ2RiL2JyZWFrcG9pbnQuaAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMu NTAuMjAxMTA3MjIub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTEtMDctMjIgMTk6MDg6MTkuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5oCTIw MTEtMDctMjIgMTk6MzE6MjIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTMyOCw0ICsxMzI4LDcgQEAg ZXh0ZXJuIGludCB1c2VyX2JyZWFrcG9pbnRfcCAoc3RydWN0IGJyZQorLS0tIGdkYi03LjQuNTAu MjAxMjAxMDMub3JpZy9nZGIvYnJlYWtwb2ludC5oCTIwMTItMDEtMDMgMDU6NTI6MTUuMDAwMDAw MDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvYnJlYWtwb2ludC5oCTIwMTIt MDEtMDMgMTU6MjM6MDkuNDQ0MzU2NDg0ICswMTAwCitAQCAtMTM5Myw0ICsxMzkzLDcgQEAgZXh0 ZXJuIHN0cnVjdCBnZGJhcmNoICpnZXRfc2FsX2FyY2ggKHN0cgogIAogIGV4dGVybiB2b2lkIG1v ZGlmeV9zZW1hcGhvcmUgKHN0cnVjdCBicF9sb2NhdGlvbiAqbG9jYXRpb24sIGludCBzZXQpOwog IApAQCAtNjUsMTEgKzY1LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVh a3BvaW50LmgKICsJCQkJICBzdHJ1Y3Qgc2VjdGlvbl9vZmZzZXRzICpkZWx0YSk7CiArCiAgI2Vu ZGlmIC8qICFkZWZpbmVkIChCUkVBS1BPSU5UX0gpICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvb2JqZmlsZXMuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMjAxMDMvZ2RiL29iamZp bGVzLmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL29iamZp bGVzLmMJMjAxMS0wNy0yMiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9vYmpmaWxlcy5jCTIwMTEtMDctMjIgMTk6MzE6MjIuMDAwMDAwMDAwICsw MjAwCi1AQCAtODQ3LDYgKzg0NywxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZp bGUgKm9iamZpCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9vYmpmaWxlcy5jCTIw MTItMDEtMDMgMDU6NTI6MTUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDEyMDEw My9nZGIvb2JqZmlsZXMuYwkyMDEyLTAxLTAzIDE1OjIzOjI4LjE0MTI4NzY5NyArMDEwMAorQEAg LTgxOCw2ICs4MTgsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpvYmpm aQogICAgICBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zucy0+c3ltX3JlbG9jYXRlX3Byb2JlIChv YmpmaWxlLAogIAkJCQkJCSAgICBuZXdfb2Zmc2V0cywgZGVsdGEpOwogIAoKZGlmZiAtLWdpdCBh L2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRjaCBiL2dkYi1hcmNoZXItcGllLWFkZG9ucy5wYXRj aAppbmRleCAzNmRjODFhLi5iMThhMDYwIDEwMDY0NAotLS0gYS9nZGItYXJjaGVyLXBpZS1hZGRv bnMucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci1waWUtYWRkb25zLnBhdGNoCkBAIC0xLDggKzEsOCBA QAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYworSW5kZXg6IGdk Yi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwogPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYycmVhZC5jCTIwMTEtMDctMjIgMTk6MzA6MTEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5j CTIwMTEtMDctMjIgMTk6MzA6NDQuMDAwMDAwMDAwICswMjAwCi1AQCAtNzk3OSw3ICs3OTc5LDEy IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKKy0tLSBnZGItNy40 LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTEyLTE5IDAxOjMxOjI0LjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2R3YXJmMnJlYWQuYwky MDExLTEyLTE5IDAxOjMzOjI1LjI2MzIzODk3MiArMDEwMAorQEAgLTgzNDcsNyArODM0NywxMiBA QCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZvICpkaWUsCiAgewogICAgc3RydWN0 IGF0dHJpYnV0ZSAqYXR0cjsKICAgIHN0cnVjdCBzeW1ib2wgKnN5bTsKQEAgLTE2LDcgKzE2LDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgYXR0 ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvY2F0aW9uLCBjdSk7CiAgICBpZiAoYXR0cikK LUBAIC03OTg4LDYgKzc5OTMsNyBAQCByZWFkX2NvbW1vbl9ibG9jayAoc3RydWN0IGRpZV9pbmZv ICpkaWUsCitAQCAtODM1Niw2ICs4MzYxLDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBk aWVfaW5mbyAqZGllLAogICAgICAgIGlmIChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQogICAg ICAgICAgewogICAgICAgICAgICBiYXNlID0gZGVjb2RlX2xvY2Rlc2MgKERXX0JMT0NLIChhdHRy KSwgY3UpOwpAQCAtMjQsNyArMjQsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv ZHdhcmYycmVhZC5jCiAgICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoYXR0cl9mb3JtX2lzX3Nl Y3Rpb25fb2Zmc2V0IChhdHRyKSkKICAgICAgICAgIHsKLUBAIC04MDQwLDEyICs4MDQ2LDE1IEBA IHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKK0BAIC04NDA4LDEyICs4 NDE0LDE1IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwKICAJICBp ZiAoc3ltICE9IE5VTEwKICAJICAgICAgJiYgaGFuZGxlX2RhdGFfbWVtYmVyX2xvY2F0aW9uIChj aGlsZF9kaWUsIGN1LCAmb2Zmc2V0KSkKICAJICAgIHsKQEAgLTQyLDcgKzQyLDcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIAkgIGVsc2UKICAJICAgIFNF VF9GSUVMRF9QSFlTTkFNRSAoKmZpZWxkLCBTWU1CT0xfTElOS0FHRV9OQU1FIChzeW0pKTsKICAJ ICBGSUVMRF9UWVBFICgqZmllbGQpID0gU1lNQk9MX1RZUEUgKHN5bSk7Ci1AQCAtODA1OSw3ICs4 MDY4LDcgQEAgcmVhZF9jb21tb25fYmxvY2sgKHN0cnVjdCBkaWVfaW5mbyAqZGllLAorQEAgLTg0 MjcsNyArODQzNiw3IEBAIHJlYWRfY29tbW9uX2Jsb2NrIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwK ICAKICAgICAgICBzeW0gPSBuZXdfc3ltYm9sIChkaWUsIHR5cGUsIGN1KTsKICAgICAgICAvKiBT WU1CT0xfVkFMVUVfQUREUkVTUyBuZXZlciBnZXRzIHVzZWQgYXMgYWxsIGl0cyBmaWVsZHMgYXJl IHN0YXRpYy4gICovCkBAIC01MSwzNSArNTEsMzUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogIAogICAgICAgIHNldF9kaWVfdHlwZSAoZGllLCB0eXBlLCBj dSk7CiAgICAgIH0KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCitJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvZ2RidHlwZXMuaAogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZ2RidHlwZXMuaAkyMDExLTA3LTIyIDE5OjA4 OjE5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVz LmgJMjAxMS0wNy0yMiAxOTozMTowOC4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIw MTExMjE4Lm9yaWcvZ2RiL2dkYnR5cGVzLmgJMjAxMS0xMi0xOCAyMzozNToyMy4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9nZGJ0eXBlcy5oCTIwMTEtMTItMTkg MDE6MzQ6MjEuNDQ4MDI1NjIwICswMTAwCiBAQCAtMzk2LDYgKzM5Niw3IEBAIGVudW0gdHlwZV9p bnN0YW5jZV9mbGFnX3ZhbHVlCiAgZW51bSBmaWVsZF9sb2Nfa2luZAogICAgewogICAgICBGSUVM RF9MT0NfS0lORF9CSVRQT1MsCS8qIGJpdHBvcyAqLwogKyAgICAvKiBUaGlzIGFkZHJlc3MgaXMg dW5yZWxvY2F0ZWQgYnkgdGhlIG9iamZpbGUncyBBTk9GRlNFVC4gICovCiAgICAgIEZJRUxEX0xP Q19LSU5EX1BIWVNBRERSLAkvKiBwaHlzYWRkciAqLwotICAgICBGSUVMRF9MT0NfS0lORF9QSFlT TkFNRQkvKiBwaHlzbmFtZSAqLwotICAgfTsKLUBAIC01ODAsNiArNTgxLDcgQEAgc3RydWN0IG1h aW5fdHlwZQorICAgICBGSUVMRF9MT0NfS0lORF9QSFlTTkFNRSwJLyogcGh5c25hbWUgKi8KKyAg ICAgRklFTERfTE9DX0tJTkRfRFdBUkZfQkxPQ0sJLyogZHdhcmZfYmxvY2sgKi8KK0BAIC01ODEs NiArNTgyLDcgQEAgc3RydWN0IG1haW5fdHlwZQogIAkgICBpcyB0aGUgbG9jYXRpb24gKGluIHRo ZSB0YXJnZXQpIG9mIHRoZSBzdGF0aWMgZmllbGQuCiAgCSAgIE90aGVyd2lzZSwgcGh5c25hbWUg aXMgdGhlIG1hbmdsZWQgbGFiZWwgb2YgdGhlIHN0YXRpYyBmaWVsZC4gICovCiAgCiArCS8qIFRo aXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8K ICAJQ09SRV9BRERSIHBoeXNhZGRyOwogIAljb25zdCBjaGFyICpwaHlzbmFtZTsKLSAgICAgICB9 Ci1AQCAtMTExMCw2ICsxMTEyLDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlw ZSAoc3RydQorIAorQEAgLTExOTQsNiArMTE5Niw3IEBAIGV4dGVybiB2b2lkIGFsbG9jYXRlX2du YXRfYXV4X3R5cGUgKHN0cnUKICAjZGVmaW5lIEZJRUxEX0xPQ19LSU5EKHRoaXNmbGQpICgodGhp c2ZsZCkubG9jX2tpbmQpCiAgI2RlZmluZSBGSUVMRF9CSVRQT1ModGhpc2ZsZCkgKCh0aGlzZmxk KS5sb2MuYml0cG9zKQogICNkZWZpbmUgRklFTERfU1RBVElDX1BIWVNOQU1FKHRoaXNmbGQpICgo dGhpc2ZsZCkubG9jLnBoeXNuYW1lKQogKy8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBi eSB0aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8KICAjZGVmaW5lIEZJRUxEX1NUQVRJQ19QSFlT QUREUih0aGlzZmxkKSAoKHRoaXNmbGQpLmxvYy5waHlzYWRkcikKKyAjZGVmaW5lIEZJRUxEX0RX QVJGX0JMT0NLKHRoaXNmbGQpICgodGhpc2ZsZCkubG9jLmR3YXJmX2Jsb2NrKQogICNkZWZpbmUg U0VUX0ZJRUxEX0JJVFBPUyh0aGlzZmxkLCBiaXRwb3MpCQkJXAotICAgKEZJRUxEX0xPQ19LSU5E ICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX0JJVFBPUywJCVwKLUBAIC0xMTE3LDYgKzExMjAs NyBAQCBleHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTIwMiw2 ICsxMjA1LDcgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQogICNk ZWZpbmUgU0VUX0ZJRUxEX1BIWVNOQU1FKHRoaXNmbGQsIG5hbWUpCQkJXAogICAgKEZJRUxEX0xP Q19LSU5EICh0aGlzZmxkKSA9IEZJRUxEX0xPQ19LSU5EX1BIWVNOQU1FLAkJXAogICAgIEZJRUxE X1NUQVRJQ19QSFlTTkFNRSAodGhpc2ZsZCkgPSAobmFtZSkpCkBAIC04NywxOCArODcsMTggQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKICAjZGVmaW5lIFNFVF9G SUVMRF9QSFlTQUREUih0aGlzZmxkLCBhZGRyKQkJCVwKICAgIChGSUVMRF9MT0NfS0lORCAodGhp c2ZsZCkgPSBGSUVMRF9MT0NfS0lORF9QSFlTQUREUiwJCVwKICAgICBGSUVMRF9TVEFUSUNfUEhZ U0FERFIgKHRoaXNmbGQpID0gKGFkZHIpKQotQEAgLTExMjksNiArMTEzMyw3IEBAIGV4dGVybiB2 b2lkIGFsbG9jYXRlX2duYXRfYXV4X3R5cGUgKHN0cnUKK0BAIC0xMjE3LDYgKzEyMjEsNyBAQCBl eHRlcm4gdm9pZCBhbGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CiAgI2RlZmluZSBUWVBFX0ZJ RUxEX0xPQ19LSU5EKHRoaXN0eXBlLCBuKSBGSUVMRF9MT0NfS0lORCAoVFlQRV9GSUVMRCAodGhp c3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9CSVRQT1ModGhpc3R5cGUsIG4pIEZJRUxE X0JJVFBPUyAoVFlQRV9GSUVMRCAodGhpc3R5cGUsIG4pKQogICNkZWZpbmUgVFlQRV9GSUVMRF9T VEFUSUNfUEhZU05BTUUodGhpc3R5cGUsIG4pIEZJRUxEX1NUQVRJQ19QSFlTTkFNRSAoVFlQRV9G SUVMRCAodGhpc3R5cGUsIG4pKQogKy8qIFRoaXMgYWRkcmVzcyBpcyB1bnJlbG9jYXRlZCBieSB0 aGUgb2JqZmlsZSdzIEFOT0ZGU0VULiAgKi8KICAjZGVmaW5lIFRZUEVfRklFTERfU1RBVElDX1BI WVNBRERSKHRoaXN0eXBlLCBuKSBGSUVMRF9TVEFUSUNfUEhZU0FERFIgKFRZUEVfRklFTEQgKHRo aXN0eXBlLCBuKSkKKyAjZGVmaW5lIFRZUEVfRklFTERfRFdBUkZfQkxPQ0sodGhpc3R5cGUsIG4p IEZJRUxEX0RXQVJGX0JMT0NLIChUWVBFX0ZJRUxEICh0aGlzdHlwZSwgbikpCiAgI2RlZmluZSBU WVBFX0ZJRUxEX0FSVElGSUNJQUwodGhpc3R5cGUsIG4pIEZJRUxEX0FSVElGSUNJQUwoVFlQRV9G SUVMRCh0aGlzdHlwZSxuKSkKLSAjZGVmaW5lIFRZUEVfRklFTERfQklUU0laRSh0aGlzdHlwZSwg bikgRklFTERfQklUU0laRShUWVBFX0ZJRUxEKHRoaXN0eXBlLG4pKQotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2p2LWxhbmcuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L2p2LWxhbmcuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv anYtbGFuZy5jCTIwMTEtMDctMDEgMjA6Mjg6NTIuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvanYtbGFuZy5jCTIwMTEtMDctMjIgMTk6MzA6NDQuMDAwMDAwMDAw ICswMjAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9qdi1sYW5nLmMJMjAxMS0x Mi0wNiAxOTo1NDozOS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9qdi1sYW5nLmMJMjAxMS0xMi0xOSAwMTozMzoyNS4yODAyMzg5MDggKzAxMDAKIEBAIC00MzAs NyArNDMwLDggQEAgamF2YV9saW5rX2NsYXNzX3R5cGUgKHN0cnVjdCBnZGJhcmNoICpnZAogIAog ICAgZmllbGRzID0gTlVMTDsKQEAgLTExOSwxMSArMTE5LDExIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9qdi1sYW5nLmMKICAgICAgICBlbHNlCiAgCVRZUEVfRklFTERfQklUUE9T ICh0eXBlLCBpKSA9IDggKiBib2Zmc2V0OwogICAgICAgIGlmIChhY2NmbGFncyAmIDB4ODAwMCkJ LyogRklFTERfVU5SRVNPTFZFRF9GTEFHICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdmFsdWUuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3ZhbHVlLmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMS0wNy0y MiAxOTowODoxOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92 YWx1ZS5jCTIwMTEtMDctMjIgMTk6MzA6NDQuMDAwMDAwMDAwICswMjAwCi1AQCAtMjUwNyw3ICsy NTA3LDggQEAgdmFsdWVfc3RhdGljX2ZpZWxkIChzdHJ1Y3QgdHlwZSAqdHlwZSwgaQorLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdmFsdWUuYwkyMDExLTEyLTE4IDIzOjM1OjIzLjAw MDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3ZhbHVlLmMJMjAxMS0x Mi0xOSAwMTozMzoyNS4yODMyMzg4OTYgKzAxMDAKK0BAIC0yNDgxLDcgKzI0ODEsOCBAQCB2YWx1 ZV9zdGF0aWNfZmllbGQgKHN0cnVjdCB0eXBlICp0eXBlLCBpCiAgICAgIHsKICAgICAgY2FzZSBG SUVMRF9MT0NfS0lORF9QSFlTQUREUjoKICAgICAgICByZXR2YWwgPSB2YWx1ZV9hdF9sYXp5IChU WVBFX0ZJRUxEX1RZUEUgKHR5cGUsIGZpZWxkbm8pLAoKZGlmZiAtLWdpdCBhL2dkYi1hcmNoZXIu cGF0Y2ggYi9nZGItYXJjaGVyLnBhdGNoCmluZGV4IDVkMzQ2ZDUuLmZiODQ3NDIgMTAwNjQ0Ci0t LSBhL2dkYi1hcmNoZXIucGF0Y2gKKysrIGIvZ2RiLWFyY2hlci5wYXRjaApAQCAtMiwyMiArMiwy MiBAQCBodHRwOi8vc291cmNld2FyZS5vcmcvZ2RiL3dpa2kvUHJvamVjdEFyY2hlcgogaHR0cDov L3NvdXJjZXdhcmUub3JnL2dkYi93aWtpL0FyY2hlckJyYW5jaE1hbmFnZW1lbnQKIAogR0lUIHNu YXBzaG90OgotY29tbWl0IDA2OWFhYzMzMjU3NjQ3OTNhMmQ1N2Y4YjJmMDkzM2EzMjZjNmI3YTMK K2NvbW1pdCAxYjk0YTJkYjI0Zjc2ZWZlODcxZjYzM2ViZTJjNzBlMzdmMDcxZjlkCiAKIGJyYW5j aCBgYXJjaGVyJyAtIHRoZSBtZXJnZSBvZiBicmFuY2hlczoKIGFyY2hlci1qYW5rcmF0b2Nodmls LXZsYQogYXJjaGVyLWphbmtyYXRvY2h2aWwtd2F0Y2hwb2ludDMKIGFyY2hlci10cm9tZXktcHl0 aG9uCi1hcmNoZXItc2VyZ2lvZGotc3RhcC1wYXRjaC1zcGxpdAorYXJjaGVyLXNlcmdpb2RqLXN0 YXAKIAogCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvTWFrZWZpbGUuaW4KLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL01ha2VmaWxlLmluCTIwMTEt MDctMjIgMDE6NDY6MDguMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvTWFrZWZpbGUuaW4JMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03 MjAsOCArNzIwLDggQEAgU0ZJTEVTID0gYWRhLWV4cC55IGFkYS1sYW5nLmMgYWRhLXR5cGVwcgor ZGlmZiAtLWdpdCBhL2dkYi9NYWtlZmlsZS5pbiBiL2dkYi9NYWtlZmlsZS5pbgoraW5kZXggODk3 NzZiOS4uYTQ0NGM5OCAxMDA2NDQKKy0tLSBhL2dkYi9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL01h a2VmaWxlLmluCitAQCAtNzI3LDggKzcyNyw4IEBAIFNGSUxFUyA9IGFkYS1leHAueSBhZGEtbGFu Zy5jIGFkYS10eXBlcHJpbnQuYyBhZGEtdmFscHJpbnQuYyBhZGEtdGFza3MuYyBcCiAgCXNlbnRp bmVsLWZyYW1lLmMgXAotIAlzZXJpYWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgXAorIAlzZXJp YWwuYyBzZXItYmFzZS5jIHNlci11bml4LmMgc2tpcC5jIFwKICAJc29saWIuYyBzb2xpYi10YXJn ZXQuYyBzb3VyY2UuYyBcCiAtCXN0YWJzcmVhZC5jIHN0YWNrLmMgc3RkLXJlZ3MuYyBzeW1maWxl LmMgc3ltZmlsZS1tZW0uYyBzeW1taXNjLmMgXAogLQlzeW10YWIuYyBcCkBAIC0yNiwyNSArMjYs MjUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL01ha2VmaWxlLmluCiAgCXRhcmdl dC5jIHRhcmdldC1kZXNjcmlwdGlvbnMuYyB0YXJnZXQtbWVtb3J5LmMgXAogIAl0aHJlYWQuYyB0 b3AuYyB0cmFjZXBvaW50LmMgXAogIAl0cmFkLWZyYW1lLmMgXAotQEAgLTgxOCw3ICs4MTgsNyBA QCBvc2RhdGEuaCBwcm9jZnMuaCBweXRob24vcHktZXZlbnQuaCBweXRoCitAQCAtODI1LDcgKzgy NSw3IEBAIG9zZGF0YS5oIHByb2Nmcy5oIHB5dGhvbi9weS1ldmVudC5oIHB5dGhvbi9weS1ldmVu dHMuaCBweXRob24vcHktc3RvcGV2ZW50LmggXAogIHB5dGhvbi9weXRob24taW50ZXJuYWwuaCBw eXRob24vcHl0aG9uLmggcmF2ZW5zY2FyLXRocmVhZC5oIHJlY29yZC5oIFwKICBzb2xpYi1kYXJ3 aW4uaCBzb2xpYi1pYTY0LWhwdXguaCBzb2xpYi1zcHUuaCB3aW5kb3dzLW5hdC5oIHhjb2ZmcmVh ZC5oIFwKICBnbnVsaWIvZXh0cmEvYXJnLW5vbm51bGwuaCBnbnVsaWIvZXh0cmEvYysrZGVmcy5o IGdudWxpYi9leHRyYS93YXJuLW9uLXVzZS5oIFwKLS1nbnVsaWIvc3RkZGVmLmluLmggaW5saW5l LWZyYW1lLmggXAotK2dudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBzdGFwLXByb2Jl LmggXAorLWdudWxpYi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmggXAorK2dudWxp Yi9zdGRkZWYuaW4uaCBpbmxpbmUtZnJhbWUuaCBza2lwLmggc3RhcC1wcm9iZS5oIFwKICBjb21t b24vY29tbW9uLXV0aWxzLmggY29tbW9uL3htbC11dGlscy5oIGNvbW1vbi9idWZmZXIuaCBjb21t b24vcHRpZC5oIFwKLSBjb21tb24vbGludXgtb3NkYXRhLmgKKyBjb21tb24vbGludXgtb3NkYXRh LmggZ2RiLWRsZmNuLmgKICAKLUBAIC05MDYsNyArOTA2LDcgQEAgQ09NTU9OX09CUyA9ICQoREVQ RklMRVMpICQoQ09ORklHX09CUykgJAorQEAgLTkxMyw3ICs5MTMsNyBAQCBDT01NT05fT0JTID0g JChERVBGSUxFUykgJChDT05GSUdfT0JTKSAkKFlZT0JKKSBcCiAgCXhtbC1zdXBwb3J0Lm8geG1s LXN5c2NhbGwubyB4bWwtdXRpbHMubyBcCiAgCXRhcmdldC1kZXNjcmlwdGlvbnMubyB0YXJnZXQt bWVtb3J5Lm8geG1sLXRkZXNjLm8geG1sLWJ1aWx0aW4ubyBcCiAgCWluZmVyaW9yLm8gb3NkYXRh Lm8gZ2RiX3VzbGVlcC5vIHJlY29yZC5vIGdjb3JlLm8gXAotLQlqaXQubyBwcm9nc3BhY2UubyBc Ci0rCWppdC5vIHByb2dzcGFjZS5vIHN0YXAtcHJvYmUubyBcCi0gCWNvbW1vbi11dGlscy5vIGJ1 ZmZlci5vIHB0aWQubworLQlqaXQubyBwcm9nc3BhY2UubyBza2lwLm8gXAorKwlqaXQubyBwcm9n c3BhY2UubyBza2lwLm8gc3RhcC1wcm9iZS5vIFwKKyAJY29tbW9uLXV0aWxzLm8gYnVmZmVyLm8g cHRpZC5vIGdkYi1kbGZjbi5vCiAgCiAgVFNPQlMgPSBpbmZsb3cubwotQEAgLTEzMjgsNiArMTMy OCwxMiBAQCBzdGFtcC1oOiAkKHNyY2RpcikvY29uZmlnLmluIGNvbmZpZy5zdGF0CitAQCAtMTMw MSw2ICsxMzAxLDEyIEBAIHN0YW1wLWg6ICQoc3JjZGlyKS9jb25maWcuaW4gY29uZmlnLnN0YXR1 cwogIAkgIENPTkZJR19MSU5LUz0gXAogIAkgICQoU0hFTEwpIGNvbmZpZy5zdGF0dXMKICAKQEAg LTU3LDExICs1NywxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvTWFrZWZpbGUu aW4KICBjb25maWcuc3RhdHVzOiAkKHNyY2RpcikvY29uZmlndXJlIGNvbmZpZ3VyZS50Z3QgY29u ZmlndXJlLmhvc3QKICAJJChTSEVMTCkgY29uZmlnLnN0YXR1cyAtLXJlY2hlY2sKICAKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ORVdTCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9ORVdTCTIwMTEtMDctMjEgMTk6MjM6NTUuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvTkVXUwkyMDExLTA3LTI5IDIyOjUyOjAy LjAwMDAwMDAwMCArMDIwMAotQEAgLTEwOSw2ICsxMDksMTAgQEAgUVREaXNhYmxlCitkaWZmIC0t Z2l0IGEvZ2RiL05FV1MgYi9nZGIvTkVXUworaW5kZXggYTlhNzg1OS4uNzVkYzk2NCAxMDA2NDQK Ky0tLSBhL2dkYi9ORVdTCisrKysgYi9nZGIvTkVXUworQEAgLTMwNSw2ICszMDUsMTAgQEAgUmVu ZXNhcyBSTDc4CQkJCXJsNzgtKi1lbGYKICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIE9wZW5D TCBDIGxhbmd1YWdlIChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5jbCkKICAgIGhhcyBiZWVu IGludGVncmF0ZWQgaW50byBHREIuCiAgCkBAIC03MiwxMSArNzIsMTEgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL05FV1MKICAqIFB5dGhvbiBzY3JpcHRpbmcKICAKICAgICoqIFRo ZSBmdW5jdGlvbiBnZGIuV3JpdGUgbm93IGFjY2VwdHMgYW4gb3B0aW9uYWwga2V5d29yZCAnc3Ry ZWFtJy4KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9hZGEtbGFuZy5jCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9hZGEtbGFuZy5jCTIwMTEtMDct MDUgMDY6MzQ6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv YWRhLWxhbmcuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTExODYy LDYgKzExODYyLDcgQEAgYWRhX29wZXJhdG9yX2xlbmd0aCAoY29uc3Qgc3RydWN0IGV4cHJlcwor ZGlmZiAtLWdpdCBhL2dkYi9hZGEtbGFuZy5jIGIvZ2RiL2FkYS1sYW5nLmMKK2luZGV4IGM0YmY2 ZTkuLjhjM2FmMTQgMTAwNjQ0CistLS0gYS9nZGIvYWRhLWxhbmcuYworKysrIGIvZ2RiL2FkYS1s YW5nLmMKK0BAIC0xMTkwNCw2ICsxMTkwNCw3IEBAIGFkYV9vcGVyYXRvcl9sZW5ndGggKGNvbnN0 IHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBwYywgaW50ICpvcGxlbnAsCiAgCiAgc3RhdGlj IGludAogIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBv cywKQEAgLTg0LDcgKzg0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FkYS1s YW5nLmMKICAJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwgdm9pZCAqZGF0YSksCiAgCQkgICAgdm9pZCAqZGF0YSkKICB7Ci1AQCAtMTE4NzYsMTIgKzEx ODc3LDE1IEBAIGFkYV9vcGVyYXRvcl9jaGVjayAoc3RydWN0IGV4cHJlc3Npb24gKmUKK0BAIC0x MTkxOCwxMiArMTE5MTksMTUgQEAgYWRhX29wZXJhdG9yX2NoZWNrIChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBpbnQgcG9zLAogIAlicmVhazsKICAKICAgICAgICBkZWZhdWx0OgpAQCAtMTAyLDIz MyArMTAyLDI3MiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYWRhLWxhbmcuYwog ICAgICAgICYmICgqb2JqZmlsZV9mdW5jKSAoVFlQRV9PQkpGSUxFICh0eXBlKSwgZGF0YSkpCiAg ICAgIHJldHVybiAxOwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FtZDY0LWxp bnV4LW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9h bWQ2NC1saW51eC1uYXQuYwkyMDExLTAxLTA3IDIwOjM2OjE1LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCTIwMTEtMDctMjkgMjI6 NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjY1LDE4ICsyNjUsMTEgQEAgYW1kNjRfbGludXhf c3RvcmVfaW5mZXJpb3JfcmVnaXN0ZXJzIChzdAotIAwKLSAvKiBTdXBwb3J0IGZvciBkZWJ1ZyBy ZWdpc3RlcnMuICAqLwotIAotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGFtZDY0X2xpbnV4X2RyW0RS X0NPTlRST0wgKyAxXTsKLS0KLSBzdGF0aWMgdW5zaWduZWQgbG9uZwotLWFtZDY0X2xpbnV4X2Ry X2dldCAocHRpZF90IHB0aWQsIGludCByZWdudW0pCi0rYW1kNjRfbGludXhfZHJfZ2V0IChpbnQg dGlkLCBpbnQgcmVnbnVtKQotIHsKLS0gIGludCB0aWQ7Ci0gICB1bnNpZ25lZCBsb25nIHZhbHVl OworZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC1uYXQuYyBiL2dkYi9hbWQ2NC1saW51eC1u YXQuYworaW5kZXggZDU5ODM4OS4uNmJmNzk0YiAxMDA2NDQKKy0tLSBhL2dkYi9hbWQ2NC1saW51 eC1uYXQuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LW5hdC5jCitAQCAtMzM3LDggKzMzNyw4IEBA IGFtZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpCisgICByZXR1cm4gYW1kNjRfbGludXhf ZHJfZ2V0IChpbmZlcmlvcl9wdGlkLCBEUl9TVEFUVVMpOworIH0KICAKLS0gIHRpZCA9IFRJREdF VCAocHRpZCk7Ci0tICBpZiAodGlkID09IDApCi0tICAgIHRpZCA9IFBJREdFVCAocHRpZCk7Ci0t Ci0gICAvKiBGSVhNRToga2V0dGVuaXMvMjAwMS0wMy0yNzogQ2FsbGluZyBwZXJyb3Jfd2l0aF9u YW1lIGlmIHRoZQotICAgICAgcHRyYWNlIGNhbGwgZmFpbHMgYnJlYWtzIGRlYnVnZ2luZyByZW1v dGUgdGFyZ2V0cy4gIFRoZSBjb3JyZWN0Ci0gICAgICB3YXkgdG8gZml4IHRoaXMgaXMgdG8gYWRk IHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGFuZCB3YXRjaHBvaW50Ci1AQCAtMjk4LDE0ICsyOTEs OCBAQCBhbWQ2NF9saW51eF9kcl9nZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnCi0gLyogU2V0IGRl YnVnIHJlZ2lzdGVyIFJFR05VTSB0byBWQUxVRSBpbiBvbmx5IHRoZSBvbmUgTFdQIG9mIFBUSUQu ICAqLworLS8qIENhbGxiYWNrIGZvciBpdGVyYXRlX292ZXJfbHdwcy4gIFVwZGF0ZSB0aGUgZGVi dWcgcmVnaXN0ZXJzIG9mCistICAgTFdQLiAgKi8KKysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0 X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAgVXBkYXRlIHRoZSBkZWJ1ZyByZWdpc3RlcnMKKysg ICBvZiBMV1AuICAqLwogIAorIHN0YXRpYyBpbnQKKyB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2Nh bGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCwgdm9pZCAqYXJnKQorQEAgLTM2NCw5ICszNjQs NyBAQCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmx3 cCwgdm9pZCAqYXJnKQogIHN0YXRpYyB2b2lkCi0tYW1kNjRfbGludXhfZHJfc2V0IChwdGlkX3Qg cHRpZCwgaW50IHJlZ251bSwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKLSthbWQ2NF9saW51eF9kcl9z ZXQgKGludCB0aWQsIGludCByZWdudW0sIHVuc2lnbmVkIGxvbmcgdmFsdWUpCisgYW1kNjRfbGlu dXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcgY29udHJvbCkKICB7Ci0tICBpbnQgdGlk OwotLQotLSAgdGlkID0gVElER0VUIChwdGlkKTsKLS0gIGlmICh0aWQgPT0gMCkKLS0gICAgdGlk ID0gUElER0VUIChwdGlkKTsKKy0gIHB0aWRfdCBwaWRfcHRpZCA9IHBpZF90b19wdGlkIChwdGlk X2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKIC0KLSAgIGVycm5vID0gMDsKLSAgIHB0cmFjZSAo UFRSQUNFX1BPS0VVU0VSLCB0aWQsCi0gCSAgb2Zmc2V0b2YgKHN0cnVjdCB1c2VyLCB1X2RlYnVn cmVnW3JlZ251bV0pLCB2YWx1ZSk7Ci1AQCAtMzEzLDM1ICszMDAsOTYgQEAgYW1kNjRfbGludXhf ZHJfc2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZwotICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJD b3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIpKTsKKy0gIGl0ZXJhdGVfb3Zlcl9sd3BzIChw aWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7CisrICBsaW51 eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2Fs bGJhY2ssIE5VTEwpOworIH0KKyAKKyAvKiBTZXQgYWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQp IHRvIEFERFIgaW4gYWxsIExXUHMgb2YgdGhlIGN1cnJlbnQKK0BAIC0zNzksNyArMzc3LDcgQEAg YW1kNjRfbGludXhfZHJfc2V0X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKQorIAor ICAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RBRERSIC0gRFJf RklSU1RBRERSKTsKKyAKKy0gIGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwgdXBkYXRlX2Rl YnVnX3JlZ2lzdGVyc19jYWxsYmFjaywgTlVMTCk7CisrICBsaW51eF9uYXRfaXRlcmF0ZV93YXRj aHBvaW50X2x3cHMgKHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOwogIH0K ICAKLS0vKiBTZXQgRFJfQ09OVFJPTCB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9MSVNULiAg Ki8KLSsvKiBIZWxwZXIgZm9yIGFtZDY0X2xpbnV4X2RyX3NldF9jb250cm9sLiAgKi8KKyAvKiBD YWxsZWQgd2hlbiByZXN1bWluZyBhIHRocmVhZC4KK0BAIC00MDEsNiArMzk5LDEzIEBAIGFtZDY0 X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCkKKyAgICAgICBz dHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUg KCk7CisgICAgICAgaW50IGk7CisgCisrICAgICAgLyogT24gTGludXgga2VybmVsIGJlZm9yZSAy LjYuMzMgY29tbWl0CisrCSA3MmY2NzRkMjAzY2QyMzA0MjY0MzdjZGNmN2RkNmY2ODFkYWQ4YjBk CisrCSBpZiB5b3UgZW5hYmxlIGEgYnJlYWtwb2ludCBieSB0aGUgRFJfQ09OVFJPTCBiaXRzIHlv dSBuZWVkIHRvIGhhdmUKKysJIGFscmVhZHkgd3JpdHRlbiB0aGUgY29ycmVzcG9uZGluZyBEUl9G SVJTVEFERFIuLi5EUl9MQVNUQUREUiByZWdpc3RlcnMuCiArCi0rc3RhdGljIHZvaWQKLSthbWQ2 NF9saW51eF9kcl9zZXRfY29udHJvbF9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqY29udHJvbF92 b2lkcCkKLSt7Ci0rICB1bnNpZ25lZCBsb25nIGNvbnRyb2wgPSAqKHVuc2lnbmVkIGxvbmcgKikg Y29udHJvbF92b2lkcDsKKysJIEVuc3VyZSBEUl9DT05UUk9MIGdldHMgd3JpdHRlbiBhcyB0aGUg dmVyeSBsYXN0IHJlZ2lzdGVyIGhlcmUuICAqLworKworICAgICAgIGZvciAoaSA9IERSX0ZJUlNU QUREUjsgaSA8PSBEUl9MQVNUQUREUjsgaSsrKQorIAlpZiAoc3RhdGUtPmRyX3JlZl9jb3VudFtp XSA+IDApCisgCSAgeworZGlmZiAtLWdpdCBhL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMgYi9nZGIv YW1kNjQtbGludXgtdGRlcC5jCitpbmRleCA4NGI1OGEwLi42MmVkOTY0IDEwMDY0NAorLS0tIGEv Z2RiL2FtZDY0LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYworQEAg LTEzNjMsNiArMTM2MywxNSBAQCBhbWQ2NF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hf aW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyAgIHNldF9nZGJhcmNoX3Byb2Nl c3NfcmVjb3JkIChnZGJhcmNoLCBpMzg2X3Byb2Nlc3NfcmVjb3JkKTsKKyAgIHNldF9nZGJhcmNo X3Byb2Nlc3NfcmVjb3JkX3NpZ25hbCAoZ2RiYXJjaCwgYW1kNjRfbGludXhfcmVjb3JkX3NpZ25h bCk7CisgCisrICAvKiBTeXN0ZW1UYXAgdmFyaWFibGVzIGFuZCBmdW5jdGlvbnMuICAqLworKyAg c2V0X2dkYmFyY2hfc3RhcF9pbnRlZ2VyX3ByZWZpeCAoZ2RiYXJjaCwgIiQiKTsKKysgIHNldF9n ZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4IChnZGJhcmNoLCAiJSIpOworKyAgc2V0X2dkYmFy Y2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKGdkYmFyY2gsICIoIik7CisrICBz ZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IChnZGJhcmNoLCAiKSIp OworKyAgc2V0X2dkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoZ2RiYXJjaCwgaTM4Nl9z dGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lh bF90b2tlbiAoZ2RiYXJjaCwKKysJCQkJCWkzODZfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKTsK KysKKyAgIC8qIEluaXRpYWxpemUgdGhlIGFtZDY0X2xpbnV4X3JlY29yZF90ZGVwLiAgKi8KKyAg IC8qIFRoZXNlIHZhbHVlcyBhcmUgdGhlIHNpemUgb2YgdGhlIHR5cGUgdGhhdCB3aWxsIGJlIHVz ZWQgaW4gYSBzeXN0ZW0KKyAgICAgIGNhbGwuICBUaGV5IGFyZSBvYnRhaW5lZCBmcm9tIExpbnV4 IEtlcm5lbCBzb3VyY2UuICAqLworZGlmZiAtLWdpdCBhL2dkYi9hcm0tbGludXgtdGRlcC5jIGIv Z2RiL2FybS1saW51eC10ZGVwLmMKK2luZGV4IGJlZTMzZTQuLjRkZjZiZmEgMTAwNjQ0CistLS0g YS9nZGIvYXJtLWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2FybS1saW51eC10ZGVwLmMKK0BAIC00 NCw2ICs0NCwxMiBAQAorICNpbmNsdWRlICJnZGJ0aHJlYWQuaCIKKyAjaW5jbHVkZSAic3ltZmls ZS5oIgorIAorKyNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUgInN0YXAtcHJv YmUuaCIKKysjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKKysjaW5jbHVkZSAidXNlci1yZWdzLmgi CisrI2luY2x1ZGUgPGN0eXBlLmg+CiArCi0rICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwgRFJf Q09OVFJPTCwgY29udHJvbCk7CisgI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKyAKKyAvKiBUaGlz IGlzIGRlZmluZWQgaW4gPGVsZi5oPiBvbiBBUk0gR05VL0xpbnV4IHN5c3RlbXMuICAqLworQEAg LTEwNTQsNiArMTA2MCwxMjIgQEAgYXJtX2xpbnV4X2Rpc3BsYWNlZF9zdGVwX2NvcHlfaW5zbiAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICByZXR1cm4gZHNjOworIH0KKyAKKytzdGF0aWMg aW50CisrYXJtX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVybiAoKnMgPT0gJyMnIC8qIExpdGVyYWwgbnVt YmVyLiAgKi8KKysJICB8fCAqcyA9PSAnWycgLyogUmVnaXN0ZXIgaW5kaXJlY3Rpb24gb3IKKysJ CQkgIGRpc3BsYWNlbWVudC4gICovCisrCSAgfHwgaXNhbHBoYSAoKnMpKTsgLyogUmVnaXN0ZXIg dmFsdWUuICAqLwogK30KICsKLStzdGF0aWMgdm9pZCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkciAo aW50IHJlZ251bSwgQ09SRV9BRERSIGFkZHIpOworKy8qIFRoaXMgcm91dGluZSBpcyB1c2VkIHRv IHBhcnNlIGEgc3BlY2lhbCB0b2tlbiBpbiBBUk0ncyBhc3NlbWJseS4KICsKLSsvKiBTZXQgRFJf Q09OVFJPTCB0byBBRERSIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuICAqLwotIAot IHN0YXRpYyB2b2lkCi0gYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxvbmcg Y29udHJvbCkKLSB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7Ci0r ICBpbnQgaW5mZXJpb3JfcGlkID0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKLSsgIHN0 cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKKysgICBUaGUgc3BlY2lh bCB0b2tlbnMgcGFyc2VkIGJ5IGl0IGFyZToKICsKLSsgIC8qIEFyZSB3ZSBkZXRhY2hpbmcgYnJl YWtwb2ludHMgZnJvbSBhIGZvcmstZWQgY2hpbGQ/Ci0rICAgICBTZWUgbGludXhfbmF0X2l0ZXJh dGVfd2F0Y2hwb2ludF9sd3BzIGZvciB0aGUgZm9yay1lZCBjaGlsZCBkZXNjcmlwdGlvbi4KLSsg ICAgIFRoZSBpMzg2IGNvdW50ZXJwYXJ0IGlzIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wuICAq LwotKyAgaWYgKGluZi0+cGlkICE9IGluZmVyaW9yX3BpZCkKLSsgICAgewotKyAgICAgIHN0cnVj dCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOwotKyAg ICAgIGludCBpOworKyAgICAgIC0gUmVnaXN0ZXIgZGlzcGxhY2VtZW50IChlLmcsIFtmcCwgIy04 XSkKICsKLSsgICAgICAvKiBUaGVyZSB3ZXJlIHR3byBjaGFuZ2VzIGluIExpbnV4IGtlcm5lbCAy LjYuMzMgYnkgdGhlIGNvbW1pdDoKLSsgICAgICAgICA3MmY2NzRkMjAzY2QyMzA0MjY0MzdjZGNm N2RkNmY2ODFkYWQ4YjBkCisrICAgSXQgcmV0dXJucyBvbmUgaWYgdGhlIHNwZWNpYWwgdG9rZW4g aGFzIGJlZW4gcGFyc2VkIHN1Y2Nlc3NmdWxseSwKKysgICBvciB6ZXJvIGlmIHRoZSBjdXJyZW50 IHRva2VuIGlzIG5vdCBjb25zaWRlcmVkIHNwZWNpYWwuICAqLworKworK3N0YXRpYyBpbnQKKyth cm1fc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJ CQkgICAgICBzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQorK3sKKysgIGlmICgqcC0+YXJnID09 ICdbJykKKysgICAgeworKyAgICAgIC8qIFRlbXBvcmFyeSBob2xkZXIgZm9yIGxvb2thaGVhZC4g ICovCisrICAgICAgY29uc3QgY2hhciAqdG1wID0gcC0+YXJnOworKyAgICAgIC8qIFVzZWQgdG8g c2F2ZSB0aGUgcmVnaXN0ZXIgbmFtZS4gICovCisrICAgICAgY29uc3QgY2hhciAqc3RhcnQ7Cisr ICAgICAgY2hhciAqcmVnbmFtZTsKKysgICAgICBpbnQgbGVuLCBvZmZzZXQ7CisrICAgICAgaW50 IGdvdF9taW51cyA9IDA7CisrICAgICAgbG9uZyBkaXNwbGFjZW1lbnQ7CisrICAgICAgc3RydWN0 IHN0b2tlbiBzdHI7CisrCisrICAgICAgKyt0bXA7CisrICAgICAgc3RhcnQgPSB0bXA7CisrCisr ICAgICAgLyogUmVnaXN0ZXIgbmFtZS4gICovCisrICAgICAgd2hpbGUgKGlzYWxudW0gKCp0bXAp KQorKwkrK3RtcDsKKysKKysgICAgICBpZiAoKnRtcCAhPSAnLCcpCisrCXJldHVybiAwOworKwor KyAgICAgIGxlbiA9IHRtcCAtIHN0YXJ0OworKyAgICAgIHJlZ25hbWUgPSBhbGxvY2EgKGxlbiAr IDIpOworKworKyAgICAgIG9mZnNldCA9IDA7CisrICAgICAgaWYgKGlzZGlnaXQgKCpzdGFydCkp CisrCXsKKysJICAvKiBJZiB3ZSBhcmUgZGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgd2hvc2UgbmFt ZSBiZWdpbnMgd2l0aCBhCisrCSAgICAgZGlnaXQsIGl0IG1lYW5zIHdlIHNob3VsZCBwcmVmaXgg dGhlIG5hbWUgd2l0aCB0aGUgbGV0dGVyCisrCSAgICAgYHInLCBiZWNhdXNlIEdEQiBleHBlY3Rz IHRoaXMgbmFtZSBwYXR0ZXJuLiAgT3RoZXJ3aXNlIChlLmcuLAorKwkgICAgIHdlIGFyZSBkZWFs aW5nIHdpdGggdGhlIHJlZ2lzdGVyIGBmcCcpLCB3ZSBkb24ndCBuZWVkIHRvCisrCSAgICAgYWRk IHN1Y2ggYSBwcmVmaXguICAqLworKwkgIHJlZ25hbWVbMF0gPSAncic7CisrCSAgb2Zmc2V0ID0g MTsKKysJfQogKwotKyAgICAgICAgICgxKSBBZnRlciBmb3JrL3Zmb3JrL2Nsb25lIHRoZSBuZXcg dGFzayBubyBsb25nZXIgaW5oZXJpdHMgdGhlIGRlYnVnCi0rCSByZWdpc3RlcnMuICBJdCBoYXMg dGhlbSB6ZXJvZWQgaW5zdGVhZC4gIEVpdGhlciBjYXNlIGlzIE9LIGZvciBHREIgYXMKLSsJIEdE QiBhbHJlYWR5IHJlZ2lzdGVycyBhIGZpeCB1cCBieSBsaW51eF9uYXRfc2V0X25ld190aHJlYWQu CisrICAgICAgc3RybmNweSAocmVnbmFtZSArIG9mZnNldCwgc3RhcnQsIGxlbik7CisrICAgICAg bGVuICs9IG9mZnNldDsKKysgICAgICByZWduYW1lW2xlbl0gPSAnXDAnOwogKwotKwkgKDIpIElm IHlvdSBlbmFibGUgYSBicmVha3BvaW50IGJ5IHRoZSBDT05UUk9MIGJpdHMgeW91IGhhdmUgYWxy ZWFkeQotKwkgd3JpdHRlbiBpdHMgQUREUkVTUy4gIE90aGVyd2lzZSBMaW51eCBrZXJuZWwgd2ls bCByZXBvcnQgRUlOVkFMLgotKwkgRm9yIHRoaXMgY2FzZSB0aGUgd29ya2Fyb3VuZCBoZXJlIGVu c3VyZXMgdGhhdCBkdXJpbmcgcmVzZXR0aW5nCi0rCSAoZGV0YWNoaW5nKSB3YXRjaHBvaW50cyBm b3IgYSBmb3JrLWVkIGNoaWxkIHdlIGNhbiBzZXQgQ09OVFJPTAotKwkgYXJiaXRyYXJpbHkgYXMg dGhlIGFkZHJlc3NlcyBnZXQgcHJlLXNldCBoZXJlIGp1c3QgdG8gYmUgc3VyZS4KKysgICAgICBp ZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pID09 IC0xKQorKwllcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lv biBgJXMnLiIpLAorKwkgICAgICAgcmVnbmFtZSwgcC0+c2F2ZWRfYXJnKTsKICsKLSsJIFRoZSBz ZWNvbmQgaXNzdWUgaXMgaG9wZWZ1bGx5IGdvaW5nIHRvIGJlIGZpeGVkIGluIExpbnV4IGtlcm5l bDoKLSsJIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjYwMjA0 ICAqLworKyAgICAgICsrdG1wOworKyAgICAgIHRtcCA9IHNraXBfc3BhY2VzX2NvbnN0ICh0bXAp OworKyAgICAgIGlmICgqdG1wKysgIT0gJyMnKQorKwlyZXR1cm4gMDsKICsKLSsgICAgICBpZiAo IWRyX21pcnJvci0+YWRkcl9wcmVzZXQpCisrICAgICAgaWYgKCp0bXAgPT0gJy0nKQogKwl7Ci0r CSAgZHJfbWlycm9yLT5hZGRyX3ByZXNldCA9IDE7Ci0rCi0rCSAgZm9yIChpID0gMDsgaSA8IERS X0xBU1RBRERSIC0gRFJfRklSU1RBRERSOyBpKyspCi0rCSAgICBhbWQ2NF9saW51eF9kcl9zZXRf YWRkciAoaSwgZHJfbWlycm9yLT5hZGRyW2ldKTsKKysJICArK3RtcDsKKysJICBnb3RfbWludXMg PSAxOwogKwl9Ci0rICAgIH0KICsKLSsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdw cyAoYW1kNjRfbGludXhfZHJfc2V0X2NvbnRyb2xfY2FsbGJhY2ssCi0rCQkJCSAgICAgJmNvbnRy b2wpOwotK30KKysgICAgICBkaXNwbGFjZW1lbnQgPSBzdHJ0b2wgKHRtcCwgKGNoYXIgKiopICZ0 bXAsIDEwKTsKICsKLSsvKiBIZWxwZXIgZm9yIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyLiAgKi8K KysgICAgICAvKiBTa2lwcGluZyBsYXN0IGBdJy4gICovCisrICAgICAgaWYgKCp0bXArKyAhPSAn XScpCisrCXJldHVybiAwOwogKwotK3N0cnVjdCBhbWQ2NF9saW51eF9kcl9zZXRfYWRkcl9kYXRh Ci0rICB7Ci0rICAgIGludCByZWdudW07Ci0rICAgIENPUkVfQUREUiBhZGRyOwotKyAgfTsKKysg ICAgICAvKiBUaGUgZGlzcGxhY2VtZW50LiAgKi8KKysgICAgICB3cml0ZV9leHBfZWx0X29wY29k ZSAoT1BfTE9ORyk7CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChidWlsdGluX3R5cGUgKGdk YmFyY2gpLT5idWlsdGluX2xvbmcpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoZGlz cGxhY2VtZW50KTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrICAg ICAgaWYgKGdvdF9taW51cykKKysJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfTkVHKTsKICsK LStzdGF0aWMgdm9pZAotK2FtZDY0X2xpbnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrIChpbnQgdGlk LCB2b2lkICpkYXRhcF92b2lkcCkKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgYW1kNjRfbGludXhfZHJf c2V0X2FkZHJfZGF0YSAqZGF0YXAgPSBkYXRhcF92b2lkcDsKLSAKLS0gIGFtZDY0X2xpbnV4X2Ry W0RSX0NPTlRST0xdID0gY29udHJvbDsKLS0gIEFMTF9MV1BTIChscCwgcHRpZCkKLS0gICAgYW1k NjRfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKLSsgIGFtZDY0X2xp bnV4X2RyX3NldCAodGlkLCBEUl9GSVJTVEFERFIgKyBkYXRhcC0+cmVnbnVtLCBkYXRhcC0+YWRk cik7Ci0gfQotIAotLS8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gQUREUiBp biBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0rLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJv IGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuCi0rICAgKi8K LSAKLSBzdGF0aWMgdm9pZAotIGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyIChpbnQgcmVnbnVtLCBD T1JFX0FERFIgYWRkcikKLSB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0 aWQ7Ci0rICBzdHJ1Y3QgYW1kNjRfbGludXhfZHJfc2V0X2FkZHJfZGF0YSBkYXRhOwotIAotICAg Z2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERSX0xBU1RBRERSIC0gRFJfRklS U1RBRERSKTsKLSAKLS0gIGFtZDY0X2xpbnV4X2RyW0RSX0ZJUlNUQUREUiArIHJlZ251bV0gPSBh ZGRyOwotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0 aWQsIERSX0ZJUlNUQUREUiArIHJlZ251bSwgYWRkcik7Ci0rICBkYXRhLnJlZ251bSA9IHJlZ251 bTsKLSsgIGRhdGEuYWRkciA9IGFkZHI7Ci0rICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50 X2x3cHMgKGFtZDY0X2xpbnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrLCAmZGF0YSk7Ci0gfQotIAot LS8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVybyBpbiBhbGwgTFdQcyBv ZiBMV1BfTElTVC4gICovCi0rLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byB6 ZXJvIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuCi0rICAgKi8KLSAKLSBzdGF0aWMg dm9pZAotIGFtZDY0X2xpbnV4X2RyX3Jlc2V0X2FkZHIgKGludCByZWdudW0pCi1AQCAtMzU0LDM3 ICs0MDIsNTQgQEAgYW1kNjRfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJlZ251bSkKLSBzdGF0 aWMgdW5zaWduZWQgbG9uZwotIGFtZDY0X2xpbnV4X2RyX2dldF9zdGF0dXMgKHZvaWQpCi0gewot LSAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAoaW5mZXJpb3JfcHRpZCwgRFJfU1RBVFVTKTsK LSsgIGludCB0aWQ7CisrICAgICAgLyogVGhlIHJlZ2lzdGVyIG5hbWUuICAqLworKyAgICAgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7CisrICAgICAgc3RyLnB0ciA9IHJlZ25h bWU7CisrICAgICAgc3RyLmxlbmd0aCA9IGxlbjsKKysgICAgICB3cml0ZV9leHBfc3RyaW5nIChz dHIpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7CiArCi0rICB0 aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOwotKyAgaWYgKHRpZCA9PSAwKQotKyAgICB0aWQg PSBQSURHRVQgKGluZmVyaW9yX3B0aWQpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChC SU5PUF9BREQpOwogKwotKyAgcmV0dXJuIGFtZDY0X2xpbnV4X2RyX2dldCAodGlkLCBEUl9TVEFU VVMpOwotIH0KLSAKLS0vKiBVbnNldCBNQVNLIGJpdHMgaW4gRFJfU1RBVFVTIGluIGFsbCBMV1Bz IG9mIExXUF9MSVNULiAgKi8KLSsvKiBIZWxwZXIgZm9yIGFtZDY0X2xpbnV4X2RyX3Vuc2V0X3N0 YXR1cy4gICovCi0gCi0gc3RhdGljIHZvaWQKLS1hbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXMg KHVuc2lnbmVkIGxvbmcgbWFzaykKLSthbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXNfY2FsbGJh Y2sgKGludCB0aWQsIHZvaWQgKm1hc2tfdm9pZHApCi0gewotLSAgc3RydWN0IGx3cF9pbmZvICps cDsKLS0gIHB0aWRfdCBwdGlkOwotLQotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICB7Ci0t ICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKLSsgIHVuc2lnbmVkIGxvbmcgbWFzayA9ICoodW5z aWduZWQgbG9uZyAqKSBtYXNrX3ZvaWRwOwotKyAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKLSAgICAg ICAKLS0gICAgICB2YWx1ZSA9IGFtZDY0X2xpbnV4X2RyX2dldCAocHRpZCwgRFJfU1RBVFVTKTsK LS0gICAgICB2YWx1ZSAmPSB+bWFzazsKLS0gICAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHB0aWQs IERSX1NUQVRVUywgdmFsdWUpOwotLSAgICB9Ci0rICB2YWx1ZSA9IGFtZDY0X2xpbnV4X2RyX2dl dCAodGlkLCBEUl9TVEFUVVMpOwotKyAgdmFsdWUgJj0gfm1hc2s7Ci0rICBhbWQ2NF9saW51eF9k cl9zZXQgKHRpZCwgRFJfU1RBVFVTLCB2YWx1ZSk7Ci0gfQotIAotKy8qIFVuc2V0IE1BU0sgYml0 cyBpbiBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9JTkZFUklPUi4gICovCisrICAg ICAgLyogQ2FzdGluZyB0byB0aGUgZXhwZWN0ZWQgdHlwZS4gICovCisrICAgICAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChsb29r dXBfcG9pbnRlcl90eXBlIChwLT5hcmdfdHlwZSkpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bj b2RlIChVTk9QX0NBU1QpOwogKwotK3N0YXRpYyB2b2lkCi0rYW1kNjRfbGludXhfZHJfdW5zZXRf c3RhdHVzICh1bnNpZ25lZCBsb25nIG1hc2spCi0rewotKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0 Y2hwb2ludF9sd3BzIChhbWQ2NF9saW51eF9kcl91bnNldF9zdGF0dXNfY2FsbGJhY2ssCi0rCQkJ CSAgICAgJm1hc2spOwotK30KLSAKLSBzdGF0aWMgdm9pZAotIGFtZDY0X2xpbnV4X25ld190aHJl YWQgKHB0aWRfdCBwdGlkKQotIHsKLS0gIGludCBpOwotKyAgc3RydWN0IGkzODZfZHJfbWlycm9y ICpkcl9taXJyb3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0rICBpbnQgaSwgdGlkOworKyAg ICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7CiArCi0rICAvKiBWZXJpZnkgRFJf TUlSUk9SIGlzIHZhbGlkLiAgKi8KLSsgIGdkYl9hc3NlcnQgKFBJREdFVCAocHRpZCkgPT0gUElE R0VUIChpbmZlcmlvcl9wdGlkKSk7CisrICAgICAgcC0+YXJnID0gdG1wOworKyAgICB9CisrICBl bHNlCisrICAgIHJldHVybiAwOwogKwotKyAgdGlkID0gVElER0VUIChwdGlkKTsKLSsgIGlmICh0 aWQgPT0gMCkKLSsgICAgdGlkID0gUElER0VUIChwdGlkKTsKLSAKLS0gIGZvciAoaSA9IERSX0ZJ UlNUQUREUjsgaSA8PSBEUl9MQVNUQUREUjsgaSsrKQotLSAgICBhbWQ2NF9saW51eF9kcl9zZXQg KHB0aWQsIGksIGFtZDY0X2xpbnV4X2RyW2ldKTsKLSsgIGZvciAoaSA9IDA7IGkgPCBEUl9MQVNU QUREUiAtIERSX0ZJUlNUQUREUjsgaSsrKQotKyAgICBhbWQ2NF9saW51eF9kcl9zZXQgKHRpZCwg RFJfRklSU1RBRERSICsgaSwgZHJfbWlycm9yLT5hZGRyW2ldKTsKLSAKLS0gIGFtZDY0X2xpbnV4 X2RyX3NldCAocHRpZCwgRFJfQ09OVFJPTCwgYW1kNjRfbGludXhfZHJbRFJfQ09OVFJPTF0pOwot KyAgYW1kNjRfbGludXhfZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGRyX21pcnJvci0+Y29udHJv bCk7CisrICByZXR1cm4gMTsKKyt9CisrCisgc3RhdGljIHZvaWQKKyBhcm1fbGludXhfaW5pdF9h YmkgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywKKyAJCSAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2Ri YXJjaCkKK0BAIC0xMTUzLDYgKzEyNzUsMTUgQEAgYXJtX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3Qg Z2RiYXJjaF9pbmZvIGluZm8sCisgCQkJCQkgICBzaW1wbGVfZGlzcGxhY2VkX3N0ZXBfZnJlZV9j bG9zdXJlKTsKKyAgIHNldF9nZGJhcmNoX2Rpc3BsYWNlZF9zdGVwX2xvY2F0aW9uIChnZGJhcmNo LCBkaXNwbGFjZWRfc3RlcF9hdF9lbnRyeV9wb2ludCk7CisgCisrICAvKiBTeXN0ZW1UYXAgZnVu Y3Rpb25zLiAgKi8KKysgIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKGdkYmFyY2gs ICIjIik7CisrICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgInIi KTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJh cmNoLCAiWyIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZp eCAoZ2RiYXJjaCwgIl0iKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZp eCAoZ2RiYXJjaCwgInIiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfaXNfc2luZ2xlX29wZXJhbmQg KGdkYmFyY2gsIGFybV9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKKysgIHNldF9nZGJhcmNoX3N0 YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwKKysJCQkJCWFybV9zdGFwX3BhcnNlX3Nw ZWNpYWxfdG9rZW4pOworIAorICAgdGRlcC0+c3lzY2FsbF9uZXh0X3BjID0gYXJtX2xpbnV4X3N5 c2NhbGxfbmV4dF9wYzsKICB9Ci0gDAorZGlmZiAtLWdpdCBhL2dkYi9heC1nZGIuYyBiL2dkYi9h eC1nZGIuYworaW5kZXggZTU5YzczNS4uZTFiMGY4NSAxMDA2NDQKKy0tLSBhL2dkYi9heC1nZGIu YworKysrIGIvZ2RiL2F4LWdkYi5jCitAQCAtOTUsOCArOTUsNiBAQCBzdGF0aWMgdm9pZCBnZW5f aW50X2xpdGVyYWwgKHN0cnVjdCBhZ2VudF9leHByICpheCwKKyAJCQkgICAgIHN0cnVjdCBheHNf dmFsdWUgKnZhbHVlLAorIAkJCSAgICAgTE9OR0VTVCBrLCBzdHJ1Y3QgdHlwZSAqdHlwZSk7CiAg Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2F4LWdkYi5jCTIwMTEtMDYtMTcgMjI6NDY6 NDcuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMJ MjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yMDAxLDcgKzIwMDEsOCBA QCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24KKy0KKy1zdGF0aWMgdm9p ZCByZXF1aXJlX3J2YWx1ZSAoc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QgYXhzX3ZhbHVl ICp2YWx1ZSk7Cisgc3RhdGljIHZvaWQgZ2VuX3VzdWFsX3VuYXJ5IChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLCBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsCisgCQkJICAgICBzdHJ1Y3QgYXhzX3ZhbHVl ICp2YWx1ZSk7Cisgc3RhdGljIGludCB0eXBlX3dpZGVyX3RoYW4gKHN0cnVjdCB0eXBlICp0eXBl MSwgc3RydWN0IHR5cGUgKnR5cGUyKTsKK0BAIC0xNTcsOCArMTU1LDYgQEAgc3RhdGljIHZvaWQg Z2VuX3JlcGVhdCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gZXhwX2VsZW1lbnQgKipw YywKKyBzdGF0aWMgdm9pZCBnZW5fc2l6ZW9mIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCB1bmlv biBleHBfZWxlbWVudCAqKnBjLAorIAkJCXN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4 c192YWx1ZSAqdmFsdWUsCisgCQkJc3RydWN0IHR5cGUgKnNpemVfdHlwZSk7Cistc3RhdGljIHZv aWQgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoq cGMsCistCQkgICAgICBzdHJ1Y3QgYWdlbnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZh bHVlKTsKKyBzdGF0aWMgdm9pZCBnZW5fZXhwcl9iaW5vcF9yZXN0IChzdHJ1Y3QgZXhwcmVzc2lv biAqZXhwLAorIAkJCQkgZW51bSBleHBfb3Bjb2RlIG9wLCB1bmlvbiBleHBfZWxlbWVudCAqKnBj LAorIAkJCQkgc3RydWN0IGFnZW50X2V4cHIgKmF4LAorQEAgLTc4OSw3ICs3ODUsNyBAQCBnZW5f aW50X2xpdGVyYWwgKHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192YWx1ZSAqdmFs dWUsIExPTkdFU1QgaywKKyAvKiBUYWtlIHdoYXQncyBvbiB0aGUgdG9wIG9mIHRoZSBzdGFjayAo YXMgZGVzY3JpYmVkIGJ5IFZBTFVFKSwgYW5kCisgICAgdHJ5IHRvIG1ha2UgYW4gcnZhbHVlIG91 dCBvZiBpdC4gIFNpZ25hbCBhbiBlcnJvciBpZiB3ZSBjYW4ndCBkbworICAgIHRoYXQuICAqLwor LXN0YXRpYyB2b2lkCisrdm9pZAorIHJlcXVpcmVfcnZhbHVlIChzdHJ1Y3QgYWdlbnRfZXhwciAq YXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKQorIHsKKyAgIC8qIE9ubHkgZGVhbCB3aXRoIHNj YWxhcnMsIHN0cnVjdHMgYW5kIHN1Y2ggbWF5IGJlIHRvbyBsYXJnZQorQEAgLTE4MDcsNyArMTgw Myw3IEBAIGdlbl9zaXplb2YgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVt ZW50ICoqcGMsCisgLyogWFhYOiBpMThuICovCisgLyogQSBnZW5fZXhwciBmdW5jdGlvbiB3cml0 dGVuIGJ5IGEgR2VuLVgnZXIgZ3V5LgorICAgIEFwcGVuZCBjb2RlIGZvciB0aGUgc3ViZXhwcmVz c2lvbiBvZiBFWFBSIHN0YXJ0aW5nIGF0ICpQT1NfUCB0byBBWC4gICovCistc3RhdGljIHZvaWQK Kyt2b2lkCisgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIHVuaW9uIGV4cF9lbGVt ZW50ICoqcGMsCisgCSAgc3RydWN0IGFnZW50X2V4cHIgKmF4LCBzdHJ1Y3QgYXhzX3ZhbHVlICp2 YWx1ZSkKKyB7CitAQCAtMjA0Miw3ICsyMDM4LDggQEAgZ2VuX2V4cHIgKHN0cnVjdCBleHByZXNz aW9uICpleHAsIHVuaW9uIGV4cF9lbGVtZW50ICoqcGMsCiAgCiAgICAgIGNhc2UgT1BfSU5URVJO QUxWQVI6CiAgICAgICAgewpAQCAtMzM4LDcgKzM3Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9heC1nZGIuYwogIAlzdHJ1Y3QgdHJhY2Vfc3RhdGVfdmFyaWFibGUgKnRzdjsK ICAKICAJKCpwYykgKz0gMzsKLUBAIC0yMDE1LDcgKzIwMTYsNyBAQCBnZW5fZXhwciAoc3RydWN0 IGV4cHJlc3Npb24gKmV4cCwgdW5pb24KK0BAIC0yMDU2LDcgKzIwNTMsNyBAQCBnZW5fZXhwciAo c3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gZXhwX2VsZW1lbnQgKipwYywKICAJICAgIHZh bHVlLT5raW5kID0gYXhzX3J2YWx1ZTsKICAJICAgIHZhbHVlLT50eXBlID0gYnVpbHRpbl90eXBl IChleHAtPmdkYmFyY2gpLT5idWlsdGluX2xvbmdfbG9uZzsKICAJICB9CkBAIC0zNDcsMTEgKzM4 NiwyNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYXgtZ2RiLmMKICAJICBlcnJv ciAoXygiJCVzIGlzIG5vdCBhIHRyYWNlIHN0YXRlIHZhcmlhYmxlOyBHREIgYWdlbnQgIgogIAkJ ICAgImV4cHJlc3Npb25zIGNhbm5vdCB1c2UgY29udmVuaWVuY2UgdmFyaWFibGVzLiIpLCBuYW1l KTsKICAgICAgICB9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYmxvY2suYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvYmxvY2suYwkyMDExLTAx LTAxIDE2OjMyOjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2Jsb2NrLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0zMjIsMyAr MzIyLDIxIEBAIGFsbG9jYXRlX2Jsb2NrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaykKK2RpZmYg LS1naXQgYS9nZGIvYXgtZ2RiLmggYi9nZGIvYXgtZ2RiLmgKK2luZGV4IDk1MWVjMWYuLjZjZGNk YTIgMTAwNjQ0CistLS0gYS9nZGIvYXgtZ2RiLmgKKysrKyBiL2dkYi9heC1nZGIuaAorQEAgLTEx MSw2ICsxMTEsMTEgQEAgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHByICpnZW5fdHJhY2VfZm9yX3Jl dHVybl9hZGRyZXNzIChDT1JFX0FERFIsCisgCisgZXh0ZXJuIHN0cnVjdCBhZ2VudF9leHByICpn ZW5fZXZhbF9mb3JfZXhwciAoQ09SRV9BRERSLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKTsKKyAKKytl eHRlcm4gdm9pZCBnZW5fZXhwciAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgdW5pb24gZXhwX2Vs ZW1lbnQgKipwYywKKysJCSAgICAgIHN0cnVjdCBhZ2VudF9leHByICpheCwgc3RydWN0IGF4c192 YWx1ZSAqdmFsdWUpOworKworK2V4dGVybiB2b2lkIHJlcXVpcmVfcnZhbHVlIChzdHJ1Y3QgYWdl bnRfZXhwciAqYXgsIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlKTsKKysKKyBleHRlcm4gaW50IHRy YWNlX2tsdWRnZTsKKyBleHRlcm4gaW50IHRyYWNlX3N0cmluZ19rbHVkZ2U7CisgCitkaWZmIC0t Z2l0IGEvZ2RiL2Jsb2NrLmMgYi9nZGIvYmxvY2suYworaW5kZXggMWZhMzY4OC4uNzY0NTdiYSAx MDA2NDQKKy0tLSBhL2dkYi9ibG9jay5jCisrKysgYi9nZGIvYmxvY2suYworQEAgLTM3MCwzICsz NzAsMjEgQEAgYWxsb2NhdGVfYmxvY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKQogIAogICAg cmV0dXJuIGJsOwogIH0KQEAgLTM3MywyMSArNDI4LDIxIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9ibG9jay5jCiArCiArICByZXR1cm4gU1lNQk9MX1NZTVRBQiAoZnVuYyktPm9i amZpbGU7CiArfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Jsb2NrLmgKLT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2Jsb2NrLmgJMjAxMS0wNC0w NCAxNjoxMDoxMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9i bG9jay5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTYzLDQgKzE2 Myw2IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF8KK2RpZmYgLS1n aXQgYS9nZGIvYmxvY2suaCBiL2dkYi9ibG9jay5oCitpbmRleCA2M2IxOGE2Li44MDhhMTlhIDEw MDY0NAorLS0tIGEvZ2RiL2Jsb2NrLmgKKysrKyBiL2dkYi9ibG9jay5oCitAQCAtMTY4LDQgKzE2 OCw2IEBAIGV4dGVybiBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrX2dsb2JhbF9ibG9jayAoY29u c3Qgc3RydWN0IGJsb2NrICpibG9jayk7CiAgCiAgZXh0ZXJuIHN0cnVjdCBibG9jayAqYWxsb2Nh dGVfYmxvY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrKTsKICAKICtleHRlcm4gc3RydWN0IG9i amZpbGUgKmJsb2NrX29iamZpbGUgKGNvbnN0IHN0cnVjdCBibG9jayAqYmxvY2spOwogKwogICNl bmRpZiAvKiBCTE9DS19IICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtw b2ludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9icmVh a3BvaW50LmMJMjAxMS0wNy0wNSAwNjozNDo1NS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAw MDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvYnJlYWtwb2ludC5jIGIvZ2RiL2JyZWFrcG9pbnQu YworaW5kZXggMTcyZTQxOS4uNzQzMjRjNCAxMDA2NDQKKy0tLSBhL2dkYi9icmVha3BvaW50LmMK KysrKyBiL2dkYi9icmVha3BvaW50LmMKIEBAIC02Myw2ICs2Myw4IEBACiAgI2luY2x1ZGUgImpp dC5oIgogICNpbmNsdWRlICJ4bWwtc3lzY2FsbC5oIgpAQCAtMzk2LDE5ICs0NTEsMjMgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogKyNpbmNsdWRlICJzdGFw LXByb2JlLmgiCiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKICAjaW5jbHVkZSAiY29udGlu dWF0aW9ucy5oIgorICNpbmNsdWRlICJzdGFjay5oIgorQEAgLTEyMjUsOSArMTIyNywxMCBAQCBp c193YXRjaHBvaW50IChjb25zdCBzdHJ1Y3QgYnJlYWtwb2ludCAqYnB0KQorIHN0YXRpYyBpbnQK KyB3YXRjaHBvaW50X2luX3RocmVhZF9zY29wZSAoc3RydWN0IHdhdGNocG9pbnQgKmIpCisgewor LSAgcmV0dXJuIChwdGlkX2VxdWFsIChiLT53YXRjaHBvaW50X3RocmVhZCwgbnVsbF9wdGlkKQor LQkgIHx8IChwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBiLT53YXRjaHBvaW50X3RocmVhZCkK Ky0JICAgICAgJiYgIWlzX2V4ZWN1dGluZyAoaW5mZXJpb3JfcHRpZCkpKTsKKysgIHJldHVybiAo Yi0+YmFzZS5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNlCisrCSAgJiYgKHB0aWRfZXF1 YWwgKGItPndhdGNocG9pbnRfdGhyZWFkLCBudWxsX3B0aWQpCisrCSAgICAgIHx8IChwdGlkX2Vx dWFsIChpbmZlcmlvcl9wdGlkLCBiLT53YXRjaHBvaW50X3RocmVhZCkKKysJCSAgJiYgIWlzX2V4 ZWN1dGluZyAoaW5mZXJpb3JfcHRpZCkpKSk7CisgfQogIAotQEAgLTEyNDgsNiArMTI1MCw5IEBA IHVwZGF0ZV93YXRjaHBvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwKLSAgIGlmICghd2F0Y2hw b2ludF9pbl90aHJlYWRfc2NvcGUgKGIpKQotICAgICByZXR1cm47Ci0gCi0rICBpZiAoYi0+cHNw YWNlICE9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZSkKLSsgICAgcmV0dXJuOwotKwotICAgaWYgKGIt PmRpc3Bvc2l0aW9uID09IGRpc3BfZGVsX2F0X25leHRfc3RvcCkKLSAgICAgcmV0dXJuOwotICAK LUBAIC0xNTMyLDYgKzE1MzcsNDAgQEAgc2hvdWxkX2JlX2luc2VydGVkIChzdHJ1Y3QgYnBfbG9j YXRpb24gKgotICAgcmV0dXJuIDE7CisgLyogU2V0IHdhdGNocG9pbnQgQiB0byBkaXNwX2RlbF9h dF9uZXh0X3N0b3AsIGV2ZW4gaW5jbHVkaW5nIGl0cyBwb3NzaWJsZQorQEAgLTE2MzQsNiArMTYz Nyw0MCBAQCB1bmR1cGxpY2F0ZWRfc2hvdWxkX2JlX2luc2VydGVkIChzdHJ1Y3QgYnBfbG9jYXRp b24gKmJsKQorICAgcmV0dXJuIHJlc3VsdDsKICB9CiAgCiArLyogU2VlIHRoZSBjb21tZW50IGlu IGJyZWFrcG9pbnQuaC4gICovCkBAIC00NDgsNjYgKzUwNywxNiBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCiAgLyogSW5zZXJ0IGEgbG93LWxldmVsICJicmVh a3BvaW50IiBvZiBzb21lIHR5cGUuICBCTCBpcyB0aGUgYnJlYWtwb2ludAogICAgIGxvY2F0aW9u LiAgQW55IGVycm9yIG1lc3NhZ2VzIGFyZSBwcmludGVkIHRvIFRNUF9FUlJPUl9TVFJFQU07IGFu ZAogICAgIERJU0FCTEVEX0JSRUFLUywgYW5kIEhXX0JSRUFLUE9JTlRfRVJST1IgYXJlIHVzZWQg dG8gcmVwb3J0IHByb2JsZW1zLgotQEAgLTE2MjgsNiArMTY2Nyw4IEBAIGluc2VydF9icF9sb2Nh dGlvbiAoc3RydWN0IGJwX2xvY2F0aW9uICoKLSAJICBlbHNlCi0gCSAgICB2YWwgPSB0YXJnZXRf aW5zZXJ0X2JyZWFrcG9pbnQgKGJsLT5nZGJhcmNoLAotIAkJCQkJICAgICZibC0+dGFyZ2V0X2lu Zm8pOworQEAgLTE3MjcsNiArMTc2NCw4IEBAIGluc2VydF9icF9sb2NhdGlvbiAoc3RydWN0IGJw X2xvY2F0aW9uICpibCwKKyAJICAvKiBObyBvdmVybGF5IGhhbmRsaW5nOiBqdXN0IHNldCB0aGUg YnJlYWtwb2ludC4gICovCisgCisgCSAgdmFsID0gYmwtPm93bmVyLT5vcHMtPmluc2VydF9sb2Nh dGlvbiAoYmwpOwogKwogKwkgIG1vZGlmeV9zZW1hcGhvcmUgKGJsLCAxKTsKICAJfQogICAgICAg IGVsc2UKICAJewotQEAgLTE4ODMsNiArMTkyNCw3IEBAIGluc2VydF9icmVha3BvaW50X2xvY2F0 aW9ucyAodm9pZCkKLSAgIGludCB2YWwgPSAwOwotICAgaW50IGRpc2FibGVkX2JyZWFrcyA9IDA7 Ci0gICBpbnQgaHdfYnJlYWtwb2ludF9lcnJvciA9IDA7Ci0rICBzdHJ1Y3QgcHJvZ3JhbV9zcGFj ZSAqc2F2ZWRfY3VycmVudF9wcm9ncmFtX3NwYWNlID0gY3VycmVudF9wcm9ncmFtX3NwYWNlOwot IAotICAgc3RydWN0IHVpX2ZpbGUgKnRtcF9lcnJvcl9zdHJlYW0gPSBtZW1fZmlsZW9wZW4gKCk7 Ci0gICBzdHJ1Y3QgY2xlYW51cCAqY2xlYW51cHMgPSBtYWtlX2NsZWFudXBfdWlfZmlsZV9kZWxl dGUgKHRtcF9lcnJvcl9zdHJlYW0pOwotQEAgLTE5MTAsOSArMTk1MiwxMyBAQCBpbnNlcnRfYnJl YWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCi0gICAgICAgLyogRm9yIHRhcmdldHMgdGhhdCBzdXBw b3J0IGdsb2JhbCBicmVha3BvaW50cywgdGhlcmUncyBubyBuZWVkCi0gCSB0byBzZWxlY3QgYW4g aW5mZXJpb3IgdG8gaW5zZXJ0IGJyZWFrcG9pbnQgdG8uICBJbiBmYWN0LCBldmVuCi0gCSBpZiB3 ZSBhcmVuJ3QgYXR0YWNoZWQgdG8gYW55IHByb2Nlc3MgeWV0LCB3ZSBzaG91bGQgc3RpbGwKLS0J IGluc2VydCBicmVha3BvaW50cy4gICovCi0rCSBpbnNlcnQgYnJlYWtwb2ludHMuCi0rCi0rCSBB bHNvIGluc2VydGluZyBicmVha3BvaW50cyBpbnRvIGluYXBwcm9wcmlhdGUgaW5mZXJpb3IgbXVz dCBiZQotKwkgcHJldmVudGVkLiAgKi8KLSAgICAgICBpZiAoIWdkYmFyY2hfaGFzX2dsb2JhbF9i cmVha3BvaW50cyAodGFyZ2V0X2dkYmFyY2gpCi0tCSAgJiYgcHRpZF9lcXVhbCAoaW5mZXJpb3Jf cHRpZCwgbnVsbF9wdGlkKSkKLSsJICAmJiAocHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVs bF9wdGlkKQotKwkgICAgICB8fCBibC0+cHNwYWNlICE9IHNhdmVkX2N1cnJlbnRfcHJvZ3JhbV9z cGFjZSkpCi0gCWNvbnRpbnVlOwotIAotICAgICAgIHZhbCA9IGluc2VydF9icF9sb2NhdGlvbiAo YmwsIHRtcF9lcnJvcl9zdHJlYW0sICZkaXNhYmxlZF9icmVha3MsCi1AQCAtMTkzNiwxMyArMTk4 MiwxOSBAQCBpbnNlcnRfYnJlYWtwb2ludF9sb2NhdGlvbnMgKHZvaWQpCi0gCi0gICAgICAgaWYg KGJwdC0+ZGlzcG9zaXRpb24gPT0gZGlzcF9kZWxfYXRfbmV4dF9zdG9wKQotIAljb250aW51ZTsK LS0gICAgICAKLSsKLSAgICAgICBmb3IgKGxvYyA9IGJwdC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+ bmV4dCkKLS0JaWYgKCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9iZV9pbnNlcnRlZCAobG9jKSkK LS0JICB7Ci0tCSAgICBzb21lX2ZhaWxlZCA9IDE7Ci0tCSAgICBicmVhazsKLS0JICB9Ci0rCXsK LSsJICAvKiBWZXJpZnkgdGhlIGZpcnN0IGxvb3AgYWJvdmUgcmVhbGx5IHRyaWVkIHRvIGluc2Vy dCB0aGlzIExPQy4gICovCi0rCSAgaWYgKCFsb2MtPmluc2VydGVkICYmIHNob3VsZF9iZV9pbnNl cnRlZCAobG9jKQotKwkgICAgICAmJiAoZ2RiYXJjaF9oYXNfZ2xvYmFsX2JyZWFrcG9pbnRzICh0 YXJnZXRfZ2RiYXJjaCkKLSsJCSAgfHwgKCFwdGlkX2VxdWFsIChpbmZlcmlvcl9wdGlkLCBudWxs X3B0aWQpCi0rCQkgICAgICAmJiBsb2MtPnBzcGFjZSA9PSBzYXZlZF9jdXJyZW50X3Byb2dyYW1f c3BhY2UpKSkKLSsJICAgIHsKLSsJICAgICAgc29tZV9mYWlsZWQgPSAxOwotKwkgICAgICBicmVh azsKLSsJICAgIH0KLSsJfQotICAgICAgIGlmIChzb21lX2ZhaWxlZCkKLSAJewotIAkgIGZvciAo bG9jID0gYnB0LT5sb2M7IGxvYzsgbG9jID0gbG9jLT5uZXh0KQotQEAgLTIxMTAsMTEgKzIxNjIs MjMgQEAgc3RydWN0IGJyZWFrcG9pbnRfb2JqZmlsZV9kYXRhCitAQCAtMjIxMCwxMSArMjI0OSwy MyBAQCBzdHJ1Y3QgYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEKICAgIC8qIE1pbmltYWwgc3ltYm9s KHMpIGZvciAibG9uZ2ptcCIsICJzaWdsb25nam1wIiwgZXRjLiAoaWYgYW55KS4gICovCiAgICBz dHJ1Y3QgbWluaW1hbF9zeW1ib2wgKmxvbmdqbXBfbXN5bVtOVU1fTE9OR0pNUF9OQU1FU107CiAg CkBAIC01MzEsNyArNTQwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFr cG9pbnQuYwogIH07CiAgCiAgc3RhdGljIGNvbnN0IHN0cnVjdCBvYmpmaWxlX2RhdGEgKmJyZWFr cG9pbnRfb2JqZmlsZV9rZXk7Ci1AQCAtMjE1MSw2ICsyMjE1LDE1IEBAIGdldF9icmVha3BvaW50 X29iamZpbGVfZGF0YSAoc3RydWN0IG9iamYKK0BAIC0yMjUxLDYgKzIzMDIsMTUgQEAgZ2V0X2Jy ZWFrcG9pbnRfb2JqZmlsZV9kYXRhIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKICB9CiAgCiAg c3RhdGljIHZvaWQKQEAgLTU0Nyw3ICs1NTYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvYnJlYWtwb2ludC5jCiAgY3JlYXRlX292ZXJsYXlfZXZlbnRfYnJlYWtwb2ludCAodm9p ZCkKICB7CiAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLUBAIC0yMjI2LDYgKzIyOTksMzYg QEAgY3JlYXRlX2xvbmdqbXBfbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQpCitAQCAtMjMyNyw2ICsy Mzg3LDM3IEBAIGNyZWF0ZV9sb25nam1wX21hc3Rlcl9icmVha3BvaW50ICh2b2lkKQogIAogICAg ICAgIGJwX29iamZpbGVfZGF0YSA9IGdldF9icmVha3BvaW50X29iamZpbGVfZGF0YSAob2JqZmls ZSk7CiAgCkBAIC01NjEsNyArNTcwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2JyZWFrcG9pbnQuYwogKyAgICAgIGlmIChicF9vYmpmaWxlX2RhdGEtPmxvbmdqbXBfcHJvYmVz ICE9IE5VTEwpCiArCXsKICsJICBpbnQgaTsKLSsJICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAq cHJvYmU7CisrCSAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwogKwkgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2JqZmlsZSk7CiArCiArCSAgZm9yIChpID0g MDsKQEAgLTU3Myw4ICs1ODIsOSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJl YWtwb2ludC5jCiArCSAgICAgIHN0cnVjdCBicmVha3BvaW50ICpiOwogKwkgICAgICAgCiArCSAg ICAgIGIgPSBjcmVhdGVfaW50ZXJuYWxfYnJlYWtwb2ludCAoZ2RiYXJjaCwgcHJvYmUtPmFkZHJl c3MsCi0rCQkJCQkgICAgICBicF9sb25nam1wX21hc3Rlcik7Ci0rCSAgICAgIGItPmFkZHJfc3Ry aW5nID0geHN0cmR1cCAoInByb2JlOmxpYmM6bG9uZ2ptcCIpOworKwkJCQkJICAgICAgYnBfbG9u Z2ptcF9tYXN0ZXIsCisrCQkJCQkgICAgICAmaW50ZXJuYWxfYnJlYWtwb2ludF9vcHMpOworKwkg ICAgICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCItcCBsaWJjOmxvbmdqbXAiKTsKICsJICAg ICAgYi0+ZW5hYmxlX3N0YXRlID0gYnBfZGlzYWJsZWQ7CiArCSAgICB9CiArCkBAIC01ODQsNyAr NTk0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogICAg ICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fTE9OR0pNUF9OQU1FUzsgaSsrKQogIAl7CiAgCSAgc3Ry dWN0IGJyZWFrcG9pbnQgKmI7Ci1AQCAtMjMzNCw2ICsyNDM3LDM5IEBAIGNyZWF0ZV9leGNlcHRp b25fbWFzdGVyX2JyZWFrcG9pbnQgKHZvaWQKK0BAIC0yNDM3LDYgKzI1MjgsNDAgQEAgY3JlYXRl X2V4Y2VwdGlvbl9tYXN0ZXJfYnJlYWtwb2ludCAodm9pZCkKICAKICAgICAgICBicF9vYmpmaWxl X2RhdGEgPSBnZXRfYnJlYWtwb2ludF9vYmpmaWxlX2RhdGEgKG9iamZpbGUpOwogIApAQCAtNjAw LDcgKzYxMCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmMK ICsJewogKwkgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X29iamZpbGVfYXJjaCAob2Jq ZmlsZSk7CiArCSAgaW50IGk7Ci0rCSAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOwor KwkgIHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZTsKICsKICsJICBmb3IgKGkgPSAwOwogKwkgICAg ICAgVkVDX2l0ZXJhdGUgKHN0YXBfcHJvYmVfcCwKQEAgLTYxMSw4ICs2MjEsOSBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYnJlYWtwb2ludC5jCiArCSAgICAgIHN0cnVjdCBicmVh a3BvaW50ICpiOwogKwogKwkgICAgICBiID0gY3JlYXRlX2ludGVybmFsX2JyZWFrcG9pbnQgKGdk YmFyY2gsIHByb2JlLT5hZGRyZXNzLAotKwkJCQkJICAgICAgYnBfZXhjZXB0aW9uX21hc3Rlcik7 Ci0rCSAgICAgIGItPmFkZHJfc3RyaW5nID0geHN0cmR1cCAoInByb2JlOmxpYmdjYzp1bndpbmQi KTsKKysJCQkJCSAgICAgIGJwX2V4Y2VwdGlvbl9tYXN0ZXIsCisrCQkJCQkgICAgICAmaW50ZXJu YWxfYnJlYWtwb2ludF9vcHMpOworKwkgICAgICBiLT5hZGRyX3N0cmluZyA9IHhzdHJkdXAgKCIt cCBsaWJnY2M6dW53aW5kIik7CiArCSAgICAgIGItPmVuYWJsZV9zdGF0ZSA9IGJwX2Rpc2FibGVk OwogKwkgICAgfQogKwpAQCAtNjI0LDE2NCArNjM1LDMyIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9icmVha3BvaW50LmMKICAgICAgICBpZiAobXN5bV9ub3RfZm91bmRfcCAoYnBf b2JqZmlsZV9kYXRhLT5leGNlcHRpb25fbXN5bSkpCiAgCWNvbnRpbnVlOwogIAotQEAgLTI1NTIs NiArMjY4OCw4IEBAIHJlbW92ZV9icmVha3BvaW50XzEgKHN0cnVjdCBicF9sb2NhdGlvbgotIAkg ICAgdmFsID0gdGFyZ2V0X3JlbW92ZV9od19icmVha3BvaW50IChibC0+Z2RiYXJjaCwgJmJsLT50 YXJnZXRfaW5mbyk7Ci0gCSAgZWxzZQotIAkgICAgdmFsID0gdGFyZ2V0X3JlbW92ZV9icmVha3Bv aW50IChibC0+Z2RiYXJjaCwgJmJsLT50YXJnZXRfaW5mbyk7CitAQCAtMjY1Miw2ICsyNzc3LDgg QEAgcmVtb3ZlX2JyZWFrcG9pbnRfMSAoc3RydWN0IGJwX2xvY2F0aW9uICpibCwgaW5zZXJ0aW9u X3N0YXRlX3QgaXMpCisgCXsKKyAJICAvKiBObyBvdmVybGF5IGhhbmRsaW5nOiBqdXN0IHJlbW92 ZSB0aGUgYnJlYWtwb2ludC4gICovCisgCSAgdmFsID0gYmwtPm93bmVyLT5vcHMtPnJlbW92ZV9s b2NhdGlvbiAoYmwpOwogKwogKwkgIG1vZGlmeV9zZW1hcGhvcmUgKGJsLCAwKTsKICAJfQogICAg ICAgIGVsc2UKICAJewotQEAgLTU5NTcsNiArNjA5NSw3IEBAIGluaXRfcmF3X2JyZWFrcG9pbnQg KHN0cnVjdCBicmVha3BvaW50ICoKLSAgIGItPmxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBzYWwu cGM7Ci0gICBiLT5sb2MtPmFkZHJlc3MgPSBhZGp1c3RlZF9hZGRyZXNzOwotICAgYi0+bG9jLT5w c3BhY2UgPSBzYWwucHNwYWNlOwotKyAgYi0+bG9jLT5zZW1hcGhvcmUgPSBzYWwuc2VtYXBob3Jl OwotIAotICAgLyogU3RvcmUgdGhlIHByb2dyYW0gc3BhY2UgdGhhdCB3YXMgdXNlZCB0byBzZXQg dGhlIGJyZWFrcG9pbnQsIGZvcgotICAgICAgYnJlYWtwb2ludCByZXNldHRpbmcuICAqLwotQEAg LTcyMjYsNiArNzM2NSw3IEBAIGNsb25lX21vbWVudGFyeV9icmVha3BvaW50IChzdHJ1Y3QgYnJl YWsKK0BAIC03MDk3LDYgKzcyMjQsNyBAQCBtb21lbnRhcnlfYnJlYWtwb2ludF9mcm9tX21hc3Rl ciAoc3RydWN0IGJyZWFrcG9pbnQgKm9yaWcsCiAgICBjb3B5LT5sb2MtPmFkZHJlc3MgPSBvcmln LT5sb2MtPmFkZHJlc3M7CiAgICBjb3B5LT5sb2MtPnNlY3Rpb24gPSBvcmlnLT5sb2MtPnNlY3Rp b247CiAgICBjb3B5LT5sb2MtPnBzcGFjZSA9IG9yaWctPmxvYy0+cHNwYWNlOwogKyAgY29weS0+ bG9jLT5zZW1hcGhvcmUgPSBvcmlnLT5sb2MtPnNlbWFwaG9yZTsKICAKLSAgIGlmIChvcmlnLT5z b3VyY2VfZmlsZSA9PSBOVUxMKQotICAgICBjb3B5LT5zb3VyY2VfZmlsZSA9IE5VTEw7Ci1AQCAt NzQ0NCw2ICs3NTg0LDcgQEAgYWRkX2xvY2F0aW9uX3RvX2JyZWFrcG9pbnQgKHN0cnVjdCBicmVh awotICAgbG9jLT5hZGRyZXNzID0gYWRqdXN0X2JyZWFrcG9pbnRfYWRkcmVzcyAobG9jLT5nZGJh cmNoLAotIAkJCQkJICAgIGxvYy0+cmVxdWVzdGVkX2FkZHJlc3MsIGItPnR5cGUpOworICAgaWYg KG9yaWctPmxvYy0+c291cmNlX2ZpbGUgIT0gTlVMTCkKKyAgICAgY29weS0+bG9jLT5zb3VyY2Vf ZmlsZSA9IHhzdHJkdXAgKG9yaWctPmxvYy0+c291cmNlX2ZpbGUpOworQEAgLTcxODIsNiArNzMx MCw3IEBAIGFkZF9sb2NhdGlvbl90b19icmVha3BvaW50IChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwK KyAgIGxvYy0+cmVxdWVzdGVkX2FkZHJlc3MgPSBzYWwtPnBjOworICAgbG9jLT5hZGRyZXNzID0g YWRqdXN0ZWRfYWRkcmVzczsKICAgIGxvYy0+cHNwYWNlID0gc2FsLT5wc3BhY2U7CiArICBsb2Mt PnNlbWFwaG9yZSA9IHNhbC0+c2VtYXBob3JlOwogICAgZ2RiX2Fzc2VydCAobG9jLT5wc3BhY2Ug IT0gTlVMTCk7CiAgICBsb2MtPnNlY3Rpb24gPSBzYWwtPnNlY3Rpb247Ci0gCi1AQCAtNzc5Miw2 ICs3OTMzLDE2IEBAIGNyZWF0ZV9icmVha3BvaW50c19zYWwgKHN0cnVjdCBnZGJhcmNoICoKLSB7 Ci0gICBpbnQgaTsKLSAKLSsgIGlmIChjYW5vbmljYWwtPnByZV9leHBhbmRlZCkKLSsgICAgewot KyAgICAgIGNyZWF0ZV9icmVha3BvaW50X3NhbCAoZ2RiYXJjaCwgc2FscywgY2Fub25pY2FsLT5j YW5vbmljYWxbMF0sCi0rCQkJICAgICBjb25kX3N0cmluZywgdHlwZSwgZGlzcG9zaXRpb24sCi0r CQkJICAgICB0aHJlYWQsIHRhc2ssIGlnbm9yZV9jb3VudCwgb3BzLAotKwkJCSAgICAgZnJvbV90 dHksIGVuYWJsZWQsIGludGVybmFsLAotKwkJCSAgICAgY2Fub25pY2FsLT5zcGVjaWFsX2Rpc3Bs YXkpOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotICAgZm9yIChpID0gMDsgaSA8IHNhbHMu bmVsdHM7ICsraSkKLSAgICAgewotICAgICAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBh bmRlZCA9IAotQEAgLTgzMDAsNyArODQ1MSw3IEBAIGNyZWF0ZV9icmVha3BvaW50IChzdHJ1Y3Qg Z2RiYXJjaCAqZ2RiYXIKLSAgICAgICBvYnNlcnZlcl9ub3RpZnlfYnJlYWtwb2ludF9jcmVhdGVk IChiKTsKLSAgICAgfQotICAgCi0tICBpZiAoc2Fscy5uZWx0cyA+IDEpCi0rICBpZiAoc2Fscy5u ZWx0cyA+IDEgJiYgIWNhbm9uaWNhbC5wcmVfZXhwYW5kZWQpCi0gICAgIHsKLSAgICAgICB3YXJu aW5nIChfKCJNdWx0aXBsZSBicmVha3BvaW50cyB3ZXJlIHNldC5cblVzZSB0aGUgIgotIAkJICJc ImRlbGV0ZVwiIGNvbW1hbmQgdG8gZGVsZXRlIHVud2FudGVkIGJyZWFrcG9pbnRzLiIpKTsKLUBA IC05Mzk0LDYgKzk1NDUsNyBAQCB3YXRjaF9jb21tYW5kXzEgKGNoYXIgKmFyZywgaW50IGFjY2Vz c2ZsCi0gICAvKiBOb3cgc2V0IHVwIHRoZSBicmVha3BvaW50LiAgKi8KLSAgIGIgPSBzZXRfcmF3 X2JyZWFrcG9pbnRfd2l0aG91dF9sb2NhdGlvbiAoTlVMTCwgYnBfdHlwZSk7Ci0gICBiLT50aHJl YWQgPSB0aHJlYWQ7Ci0rICBiLT5wc3BhY2UgPSBjdXJyZW50X3Byb2dyYW1fc3BhY2U7Ci0gICBi LT5kaXNwb3NpdGlvbiA9IGRpc3BfZG9udHRvdWNoOwotICAgYi0+ZXhwID0gZXhwOwotICAgYi0+ ZXhwX3ZhbGlkX2Jsb2NrID0gZXhwX3ZhbGlkX2Jsb2NrOwotQEAgLTEwNTEyLDYgKzEwNjY0LDkg QEAgdXBkYXRlX2dsb2JhbF9sb2NhdGlvbl9saXN0IChpbnQgc2hvdWxkXwotICAgICAgIGludCBr ZWVwX2luX3RhcmdldCA9IDA7Ci0gICAgICAgaW50IHJlbW92ZWQgPSAwOwotIAotKyAgICAgIGlm IChvbGRfbG9jLT5wc3BhY2UgIT0gY3VycmVudF9wcm9ncmFtX3NwYWNlKQotKwljb250aW51ZTsK LSsKLSAgICAgICAvKiBTa2lwIExPQ1AgZW50cmllcyB3aGljaCB3aWxsIGRlZmluaXRlbHkgbmV2 ZXIgYmUgbmVlZGVkLgotIAkgU3RvcCBlaXRoZXIgYXQgb3IgYmVpbmcgdGhlIG9uZSBtYXRjaGlu ZyBPTERfTE9DLiAgKi8KLSAgICAgICB3aGlsZSAobG9jcCA8IGJwX2xvY2F0aW9uICsgYnBfbG9j YXRpb25fY291bnQKLUBAIC0xMTMzMywxMiArMTE0ODgsMTQgQEAgdXBkYXRlX2JyZWFrcG9pbnRf bG9jYXRpb25zIChzdHJ1Y3QgYnJlYQotICAgIE9uIHJldHVybiwgRk9VTkQgd2lsbCBiZSAxIGlm IGFueSBTYUwgd2FzIGZvdW5kLCB6ZXJvIG90aGVyd2lzZS4gICovCi0gCi0gc3RhdGljIHN0cnVj dCBzeW10YWJzX2FuZF9saW5lcwotLWFkZHJfc3RyaW5nX3RvX3NhbHMgKHN0cnVjdCBicmVha3Bv aW50ICpiLCBjaGFyICphZGRyX3N0cmluZywgaW50ICpmb3VuZCkKLSthZGRyX3N0cmluZ190b19z YWxzIChzdHJ1Y3QgYnJlYWtwb2ludCAqYiwgY2hhciAqYWRkcl9zdHJpbmcsIGludCAqZm91bmQs Ci0rCQkgICAgIGludCAqcHJlX2V4cGFuZGVkKQotIHsKLSAgIGNoYXIgKnM7Ci0gICBpbnQgbWFy a2VyX3NwZWM7Ci0gICBzdHJ1Y3Qgc3ltdGFic19hbmRfbGluZXMgc2FscyA9IHswfTsKLSAgIHN0 cnVjdCBnZGJfZXhjZXB0aW9uIGU7Ci0rICBpbnQgbXlfcHJlX2V4cGFuZGVkID0gMDsKLSAKLSAg IHMgPSBhZGRyX3N0cmluZzsKLSAgIG1hcmtlcl9zcGVjID0gYi0+dHlwZSA9PSBicF9zdGF0aWNf dHJhY2Vwb2ludCAmJiBpc19tYXJrZXJfc3BlYyAocyk7Ci1AQCAtMTEzNTcsNyArMTE1MTQsMjcg QEAgYWRkcl9zdHJpbmdfdG9fc2FscyAoc3RydWN0IGJyZWFrcG9pbnQgKgotIAkgICAgZXJyb3Ig KF8oIm1hcmtlciAlcyBub3QgZm91bmQiKSwgYi0+c3RhdGljX3RyYWNlX21hcmtlcl9pZCk7Ci0g CX0KLSAgICAgICBlbHNlCi0tCXNhbHMgPSBkZWNvZGVfbGluZV8xICgmcywgMSwgKHN0cnVjdCBz eW10YWIgKikgTlVMTCwgMCwgTlVMTCk7Ci0rCXsKLSsJICBzdHJ1Y3QgbGluZXNwZWNfcmVzdWx0 IGNhbm9uaWNhbDsKLSsKLSsJICBpbml0X2xpbmVzcGVjX3Jlc3VsdCAoJmNhbm9uaWNhbCk7Ci0r CSAgc2FscyA9IGRlY29kZV9saW5lXzEgKCZzLCAxLCAoc3RydWN0IHN5bXRhYiAqKSBOVUxMLCAw LAotKwkJCQkmY2Fub25pY2FsKTsKLSsKLSsJICAvKiBXZSBkb24ndCBuZWVkIHRoZSBjb250ZW50 cy4gICovCi0rCSAgaWYgKGNhbm9uaWNhbC5jYW5vbmljYWwpCi0rCSAgICB7Ci0rCSAgICAgIGlu dCBpOwotKwotKwkgICAgICBmb3IgKGkgPSAwOyBpIDwgc2Fscy5uZWx0czsgKytpKQotKwkJeGZy ZWUgKGNhbm9uaWNhbC5jYW5vbmljYWxbaV0pOwotKwkgICAgICB4ZnJlZSAoY2Fub25pY2FsLmNh bm9uaWNhbCk7Ci0rCSAgICB9Ci0rCi0rCSAgbXlfcHJlX2V4cGFuZGVkID0gY2Fub25pY2FsLnBy ZV9leHBhbmRlZDsKLSsJICBpZiAocHJlX2V4cGFuZGVkKQotKwkgICAgKnByZV9leHBhbmRlZCA9 IG15X3ByZV9leHBhbmRlZDsKLSsJfQotICAgICB9Ci0gICBpZiAoZS5yZWFzb24gPCAwKQotICAg ICB7Ci1AQCAtMTEzOTAsNyArMTE1NjcsNyBAQCBhZGRyX3N0cmluZ190b19zYWxzIChzdHJ1Y3Qg YnJlYWtwb2ludCAqCi0gCi0gICBpZiAoZS5yZWFzb24gPT0gMCB8fCBlLmVycm9yICE9IE5PVF9G T1VORF9FUlJPUikKLSAgICAgewotLSAgICAgIGdkYl9hc3NlcnQgKHNhbHMubmVsdHMgPT0gMSk7 Ci0rICAgICAgZ2RiX2Fzc2VydCAobXlfcHJlX2V4cGFuZGVkIHx8IHNhbHMubmVsdHMgPT0gMSk7 Ci0gCi0gICAgICAgcmVzb2x2ZV9zYWxfcGMgKCZzYWxzLnNhbHNbMF0pOwotICAgICAgIGlmIChi LT5jb25kaXRpb25fbm90X3BhcnNlZCAmJiBzICYmIHNbMF0pCi1AQCAtMTE0MjYsMTcgKzExNjAz LDIyIEBAIGJyZWFrcG9pbnRfcmVfc2V0X2RlZmF1bHQgKHN0cnVjdCBicmVha3AKLSAgIHN0cnVj dCBzeW10YWJzX2FuZF9saW5lcyBzYWxzLCBzYWxzX2VuZDsKLSAgIHN0cnVjdCBzeW10YWJzX2Fu ZF9saW5lcyBleHBhbmRlZCA9IHswfTsKLSAgIHN0cnVjdCBzeW10YWJzX2FuZF9saW5lcyBleHBh bmRlZF9lbmQgPSB7MH07Ci0rICBpbnQgcHJlX2V4cGFuZGVkID0gMDsKLSAKLS0gIHNhbHMgPSBh ZGRyX3N0cmluZ190b19zYWxzIChiLCBiLT5hZGRyX3N0cmluZywgJmZvdW5kKTsKLSsgIHNhbHMg PSBhZGRyX3N0cmluZ190b19zYWxzIChiLCBiLT5hZGRyX3N0cmluZywgJmZvdW5kLCAmcHJlX2V4 cGFuZGVkKTsKLSAgIGlmIChmb3VuZCkKLSAgICAgewotICAgICAgIG1ha2VfY2xlYW51cCAoeGZy ZWUsIHNhbHMuc2Fscyk7Ci0tICAgICAgZXhwYW5kZWQgPSBleHBhbmRfbGluZV9zYWxfbWF5YmUg KHNhbHMuc2Fsc1swXSk7Ci0rICAgICAgaWYgKHByZV9leHBhbmRlZCkKLSsJZXhwYW5kZWQgPSBz YWxzOwotKyAgICAgIGVsc2UKLSsJZXhwYW5kZWQgPSBleHBhbmRfbGluZV9zYWxfbWF5YmUgKHNh bHMuc2Fsc1swXSk7Ci0gICAgIH0KLSAKLSAgIGlmIChiLT5hZGRyX3N0cmluZ19yYW5nZV9lbmQp Ci0gICAgIHsKLS0gICAgICBzYWxzX2VuZCA9IGFkZHJfc3RyaW5nX3RvX3NhbHMgKGIsIGItPmFk ZHJfc3RyaW5nX3JhbmdlX2VuZCwgJmZvdW5kKTsKLSsgICAgICBzYWxzX2VuZCA9IGFkZHJfc3Ry aW5nX3RvX3NhbHMgKGIsIGItPmFkZHJfc3RyaW5nX3JhbmdlX2VuZCwgJmZvdW5kLAotKwkJCQkg ICAgICBOVUxMKTsKLSAgICAgICBpZiAoZm91bmQpCi0gCXsKLSAJICBtYWtlX2NsZWFudXAgKHhm cmVlLCBzYWxzX2VuZC5zYWxzKTsKLUBAIC0xMjkxMyw2ICsxMzA5NSwyNCBAQCBhbGxfdHJhY2Vw b2ludHMgKHZvaWQpCisgICBsb2MtPmdkYmFyY2ggPSBsb2NfZ2RiYXJjaDsKK0BAIC0xMzMwNiw2 ICsxMzQzNSwyNCBAQCBhbGxfdHJhY2Vwb2ludHMgKHZvaWQpCiAgICByZXR1cm4gdHBfdmVjOwog IH0KICAKQEAgLTgwNiw3ICs2ODUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv YnJlYWtwb2ludC5jCiAgDAogIC8qIFRoaXMgaGVscCBzdHJpbmcgaXMgdXNlZCBmb3IgdGhlIGJy ZWFrLCBoYnJlYWssIHRicmVhayBhbmQgdGhicmVhawogICAgIGNvbW1hbmRzLiAgSXQgaXMgZGVm aW5lZCBhcyBhIG1hY3JvIHRvIHByZXZlbnQgZHVwbGljYXRpb24uCi1AQCAtMTMwMDUsNyArMTMy MDUsOCBAQCBfaW5pdGlhbGl6ZV9icmVha3BvaW50ICh2b2lkKQorQEAgLTEzNTg3LDcgKzEzNzM0 LDggQEAgX2luaXRpYWxpemVfYnJlYWtwb2ludCAodm9pZCkKICAgIG9ic2VydmVyX2F0dGFjaF9p bmZlcmlvcl9leGl0IChjbGVhcl9zeXNjYWxsX2NvdW50cyk7CiAgICBvYnNlcnZlcl9hdHRhY2hf bWVtb3J5X2NoYW5nZWQgKGludmFsaWRhdGVfYnBfdmFsdWVfb25fbWVtb3J5X2NoYW5nZSk7CiAg CkBAIC04MTYsNyArNjk1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFr cG9pbnQuYwogIAogICAgYnJlYWtwb2ludF9jaGFpbiA9IDA7CiAgICAvKiBEb24ndCBib3RoZXIg dG8gY2FsbCBzZXRfYnJlYWtwb2ludF9jb3VudC4gICRicG51bSBpc24ndCB1c2VmdWwKLUBAIC0x MzUzMiw0ICsxMzczMyw3IEBAIHJhbmdlIChpbmNsdWRpbmcgU1RBUlQtTE9DQVRJT04gYW5kIEVO RC0KK0BAIC0xNDExNCw0ICsxNDI2Miw3IEBAIHJhbmdlIChpbmNsdWRpbmcgU1RBUlQtTE9DQVRJ T04gYW5kIEVORC1MT0NBVElPTikuIikpOwogICAgYXV0b21hdGljX2hhcmR3YXJlX2JyZWFrcG9p bnRzID0gMTsKICAKICAgIG9ic2VydmVyX2F0dGFjaF9hYm91dF90b19wcm9jZWVkIChicmVha3Bv aW50X2Fib3V0X3RvX3Byb2NlZWQpOwpAQCAtODI0LDExICs3MDMsMTEgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuYwogKyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtf dXNlZCAoYnJlYWtwb2ludF90eXBlc19tYXJrX3VzZWQpOwogKyNlbmRpZgogIH0KLUluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9icmVha3BvaW50LmgKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGIt Ny4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2JyZWFrcG9pbnQuaAkyMDExLTA2LTIyIDE5OjUzOjQ0 LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQu aAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTM4Myw2ICszODMsMTEg QEAgc3RydWN0IGJwX2xvY2F0aW9uCitkaWZmIC0tZ2l0IGEvZ2RiL2JyZWFrcG9pbnQuaCBiL2dk Yi9icmVha3BvaW50LmgKK2luZGV4IGQyMmU1NjQuLjllYTY2Y2UgMTAwNjQ0CistLS0gYS9nZGIv YnJlYWtwb2ludC5oCisrKysgYi9nZGIvYnJlYWtwb2ludC5oCitAQCAtMzc5LDYgKzM3OSwxMSBA QCBzdHJ1Y3QgYnBfbG9jYXRpb24KICAgICAgIHByb2Nlc3NvcidzIGFyY2hpdGVjdHVhbCBjb25z dHJhaW50cy4gICovCiAgICBDT1JFX0FERFIgcmVxdWVzdGVkX2FkZHJlc3M7CiAgCkBAIC04NDAs OSArNzE5LDkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2JyZWFrcG9pbnQuaAog ICAgY2hhciAqZnVuY3Rpb25fbmFtZTsKICAKICAgIC8qIERldGFpbHMgb2YgdGhlIHBsYWNlZCBi cmVha3BvaW50LCB3aGVuIGluc2VydGVkLiAgKi8KLUBAIC0xMzE2LDQgKzEzMjEsMTEgQEAgZXh0 ZXJuIHN0cnVjdCBicmVha3BvaW50ICppdGVyYXRlX292ZXJfYgotIAotIGV4dGVybiBpbnQgdXNl cl9icmVha3BvaW50X3AgKHN0cnVjdCBicmVha3BvaW50ICopOworQEAgLTEzODEsNCArMTM4Niwx MSBAQCBleHRlcm4gaW50IHVzZXJfYnJlYWtwb2ludF9wIChzdHJ1Y3QgYnJlYWtwb2ludCAqKTsK KyAvKiBBdHRlbXB0IHRvIGRldGVybWluZSBhcmNoaXRlY3R1cmUgb2YgbG9jYXRpb24gaWRlbnRp ZmllZCBieSBTQUwuICAqLworIGV4dGVybiBzdHJ1Y3QgZ2RiYXJjaCAqZ2V0X3NhbF9hcmNoIChz dHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHNhbCk7CiAgCiArLyogU2V0IG9yIGNsZWFyIGEgU3lzdGVt VGFwIHNlbWFwaG9yZS4gIExPQyBpcyB0aGUgbG9jYXRpb24gd2hpY2ggbWF5CiArICAgaG9sZCBh IHNlbWFwaG9yZS4gIFNFVCBpcyBub24temVybyBpZiB0aGUgc2VtYXBob3JlIHNob3VsZCBiZSBz ZXQsCkBAIC04NTIsMTEgKzczMSwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv YnJlYWtwb2ludC5oCiArZXh0ZXJuIHZvaWQgbW9kaWZ5X3NlbWFwaG9yZSAoc3RydWN0IGJwX2xv Y2F0aW9uICpsb2NhdGlvbiwgaW50IHNldCk7CiArCiAgI2VuZGlmIC8qICFkZWZpbmVkIChCUkVB S1BPSU5UX0gpICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvYy10eXBlcHJpbnQu YwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvYy10eXBlcHJp bnQuYwkyMDExLTA1LTE4IDE4OjMwOjM0LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2MtdHlwZXByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAg KzAyMDAKLUBAIC02MjUsOSArNjI1LDE0IEBAIGNfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAo c3RydWN0IHR5cGUKK2RpZmYgLS1naXQgYS9nZGIvYy10eXBlcHJpbnQuYyBiL2dkYi9jLXR5cGVw cmludC5jCitpbmRleCAwMjEyMjMyLi5kOWRkZmY4IDEwMDY0NAorLS0tIGEvZ2RiL2MtdHlwZXBy aW50LmMKKysrKyBiL2dkYi9jLXR5cGVwcmludC5jCitAQCAtNjI1LDkgKzYyNSwxNCBAQCBjX3R5 cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKHN0cnVjdCB0eXBlICp0eXBlLAogIAkgIGZwcmludGZf ZmlsdGVyZWQgKHN0cmVhbSwgIikiKTsKICAKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAi WyIpOwpAQCAtODc0LDExICs3NTMsMzAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2MtdHlwZXByaW50LmMKICAJZnByaW50Zl9maWx0ZXJlZCAoc3RyZWFtLCAiXSIpOwogIAogIAlj X3R5cGVfcHJpbnRfdmFyc3BlY19zdWZmaXggKFRZUEVfVEFSR0VUX1RZUEUgKHR5cGUpLCBzdHJl YW0sCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY2xpL2NsaS11dGlscy5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9jbGkvY2xpLXV0aWxzLmMJ MjAxMS0wMy0xNiAyMjoxMjoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9jbGkvY2xpLXV0aWxzLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0yNDUsMyArMjQ1LDMyIEBAIHJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlIChjb25z dCBjaGFyICoKK2RpZmYgLS1naXQgYS9nZGIvY2xpL2NsaS11dGlscy5jIGIvZ2RiL2NsaS9jbGkt dXRpbHMuYworaW5kZXggNjJhMmYxMi4uY2Q1ZmFiNSAxMDA2NDQKKy0tLSBhL2dkYi9jbGkvY2xp LXV0aWxzLmMKKysrKyBiL2dkYi9jbGkvY2xpLXV0aWxzLmMKK0BAIC0yMjMsNiArMjIzLDE4IEBA IHNraXBfc3BhY2VzIChjaGFyICpjaHApCisgICByZXR1cm4gY2hwOworIH0KKyAKKysvKiBBIGNv bnN0LWNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgYWJvdmUuICAqLworKworK2NvbnN0IGNoYXIgKgor K3NraXBfc3BhY2VzX2NvbnN0IChjb25zdCBjaGFyICpjaHApCisreworKyAgaWYgKGNocCA9PSBO VUxMKQorKyAgICByZXR1cm4gTlVMTDsKKysgIHdoaWxlICgqY2hwICYmIGlzc3BhY2UgKCpjaHAp KQorKyAgICBjaHArKzsKKysgIHJldHVybiBjaHA7CisrfQorKworIC8qIFNlZSBkb2N1bWVudGF0 aW9uIGluIGNsaS11dGlscy5oLiAgKi8KKyAKKyBjaGFyICoKK0BAIC0yNDUsMyArMjU3LDMyIEBA IHJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlIChjb25zdCBjaGFyICpzdGFydCwgY2hhciAqcykK ICAKICAgIHJldHVybiBzOwogIH0KQEAgLTkxMSwxMSArODA5LDIyIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLXV0aWxzLmMKICsKICsgIHJldHVybiBjb3B5OwogK30K LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLXV0aWxzLmgKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NsaS9jbGktdXRpbHMuaAkyMDEx LTAzLTE2IDIyOjEyOjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2NsaS9jbGktdXRpbHMuaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAot QEAgLTEwMyw0ICsxMDMsMTEgQEAgZXh0ZXJuIGNoYXIgKnNraXBfdG9fc3BhY2UgKGNoYXIgKmlu cCk7CitkaWZmIC0tZ2l0IGEvZ2RiL2NsaS9jbGktdXRpbHMuaCBiL2dkYi9jbGkvY2xpLXV0aWxz LmgKK2luZGV4IDhhNmU1YjMuLjY1ODExNTEgMTAwNjQ0CistLS0gYS9nZGIvY2xpL2NsaS11dGls cy5oCisrKysgYi9nZGIvY2xpL2NsaS11dGlscy5oCitAQCAtOTQsNiArOTQsMTAgQEAgZXh0ZXJu IGludCBudW1iZXJfaXNfaW5fbGlzdCAoY2hhciAqbGlzdCwgaW50IG51bWJlcik7CisgCisgZXh0 ZXJuIGNoYXIgKnNraXBfc3BhY2VzIChjaGFyICppbnApOworIAorKy8qIEEgY29uc3QtY29ycmVj dCB2ZXJzaW9uIG9mIHRoZSBhYm92ZS4gICovCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgKnNraXBf c3BhY2VzX2NvbnN0IChjb25zdCBjaGFyICppbnApOworKworIC8qIFNraXAgbGVhZGluZyBub24t d2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGluIElOUCwgcmV0dXJuaW5nIGFuIHVwZGF0ZWQKKyAgICBw b2ludGVyLiAgSWYgSU5QIGlzIE5VTEwsIHJldHVybiBOVUxMLiAgKi8KKyAKK0BAIC0xMDMsNCAr MTA3LDExIEBAIGV4dGVybiBjaGFyICpza2lwX3RvX3NwYWNlIChjaGFyICppbnApOwogICAgIFNU QVJULiAgKi8KICAKICBleHRlcm4gY2hhciAqcmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2UgKGNv bnN0IGNoYXIgKnN0YXJ0LCBjaGFyICpzKTsKQEAgLTkyNywxMSArODM2LDExIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jbGkvY2xpLXV0aWxzLmgKICtleHRlcm4gY2hhciAqZXh0 cmFjdF9hcmcgKGNoYXIgKiphcmcpOwogKwogICNlbmRpZiAvKiBDTElfVVRJTFNfSCAqLwotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NvZmZyZWFkLmMJMjAxMS0wNi0xNCAyMDo1Mzox My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb2ZmcmVhZC5j CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMjE5Nyw2ICsyMTk3LDcg QEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGNvZmZfc3ltX2ZucworZGlmZiAtLWdpdCBh L2dkYi9jb2ZmcmVhZC5jIGIvZ2RiL2NvZmZyZWFkLmMKK2luZGV4IGNmOGZiNTQuLmYxN2VhZDkg MTAwNjQ0CistLS0gYS9nZGIvY29mZnJlYWQuYworKysrIGIvZ2RiL2NvZmZyZWFkLmMKK0BAIC0y MTk3LDYgKzIxOTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgY29mZl9zeW1fZm5z ID0KICAKICAgIGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogc3ltX3JlbG9jYXRlOiBSZWxv Y2F0ZSBhIGRlYnVnCiAgCQkJCSAgIHNlY3Rpb24uICAqLwpAQCAtOTM5LDExICs4NDgsMTEgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvZmZyZWFkLmMKICAgICZwc3ltX2Z1bmN0 aW9ucwogIH07CiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGF0YS1kaXJlY3Rv cnkvTWFrZWZpbGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCTIwMTEtMDItMDQgMTk6MzQ6NDEuMDAwMDAw MDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFr ZWZpbGUuaW4JMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01MiwxMSAr NTIsMjMgQEAgU1lTQ0FMTFNfRklMRVMgPSBcCitkaWZmIC0tZ2l0IGEvZ2RiL2RhdGEtZGlyZWN0 b3J5L01ha2VmaWxlLmluIGIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCitpbmRleCBj MDRhZWE0Li5mMDZiNmRhIDEwMDY0NAorLS0tIGEvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxl LmluCisrKysgYi9nZGIvZGF0YS1kaXJlY3RvcnkvTWFrZWZpbGUuaW4KK0BAIC01MiwxMyArNTIs MjQgQEAgU1lTQ0FMTFNfRklMRVMgPSBcCiAgUFlUSE9OX0RJUiA9IHB5dGhvbgogIFBZVEhPTl9J TlNUQUxMX0RJUiA9ICQoREVTVERJUikkKEdEQl9EQVRBRElSKS8kKFBZVEhPTl9ESVIpCiAgUFlU SE9OX0ZJTEVTID0gXApAQCAtOTUyLDI5ICs4NjEsMzEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2RhdGEtZGlyZWN0b3J5L01ha2VmaWxlLmluCiAgCWdkYi9fX2luaXRfXy5weSBc CiAtCWdkYi90eXBlcy5weSBcCiAtCWdkYi9wcmludGluZy5weSBcCistCWdkYi9wcm9tcHQucHkg XAogKwlnZGIvYmFja3RyYWNlLnB5IFwKICAJZ2RiL2NvbW1hbmQvX19pbml0X18ucHkgXAotLQln ZGIvY29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHkKLSsJZ2RiL2NvbW1hbmQvYWxpYXMucHkgXAog KwlnZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgXAogKwlnZGIvY29tbWFuZC9pZ25vcmVfZXJyb3Jz LnB5IFwKICsJZ2RiL2NvbW1hbmQvcGFob2xlLnB5IFwKLSsJZ2RiL2NvbW1hbmQvcHJldHR5X3By aW50ZXJzLnB5IFwKKyAJZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5IFwKKy0JZ2RiL2Nv bW1hbmQvcHJvbXB0LnB5CisrCWdkYi9jb21tYW5kL3Byb21wdC5weSBcCiArCWdkYi9jb21tYW5k L3JlcXVpcmUucHkgXAogKwlnZGIvY29tbWFuZC91cHRvLnB5IFwKICsJZ2RiL2Z1bmN0aW9uL19f aW5pdF9fLnB5IFwKICsJZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5weSBcCiArCWdkYi9mdW5jdGlv bi9pbl9zY29wZS5weSBcCiArCWdkYi9wcmludGluZy5weSBcCisrCWdkYi9wcm9tcHQucHkgXAog KwlnZGIvdHlwZXMucHkKICAKICBGTEFHU19UT19QQVNTID0gXAogIAkicHJlZml4PSQocHJlZml4 KSIgXAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RieHJlYWQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZGJ4cmVhZC5jCTIwMTEtMDYtMjcg MjE6MjE6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGJ4 cmVhZC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzU5MCw2ICsz NTkwLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIGFvdXRfc3ltX2ZucworZGlmZiAt LWdpdCBhL2dkYi9kYnhyZWFkLmMgYi9nZGIvZGJ4cmVhZC5jCitpbmRleCAyMjEwYWYyLi41ZGUz MDc4IDEwMDY0NAorLS0tIGEvZ2RiL2RieHJlYWQuYworKysrIGIvZ2RiL2RieHJlYWQuYworQEAg LTM1OTAsNiArMzU5MCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBhb3V0X3N5bV9m bnMgPQogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBHZXQgc2VnbWVudCBpbmZvcm1h dGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAgZGVmYXVsdF9zeW1maWxlX3JlbG9j YXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtOTgyLDExICs4OTMsMTEg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RieHJlYWQuYwogICAgJnBzeW1fZnVu Y3Rpb25zCiAgfTsKICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kZWZzLmgKLT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2RlZnMuaAkyMDExLTA3 LTIyIDAxOjQ2OjA4LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2RlZnMuaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTQwNiw2ICs0 MDYsOCBAQCBleHRlcm4gc3RydWN0IGNsZWFudXAgKm1ha2VfY2xlYW51cF9yZXN0CitkaWZmIC0t Z2l0IGEvZ2RiL2RlZnMuaCBiL2dkYi9kZWZzLmgKK2luZGV4IDdmOGEzMzAuLjhiN2E5NDYgMTAw NjQ0CistLS0gYS9nZGIvZGVmcy5oCisrKysgYi9nZGIvZGVmcy5oCitAQCAtNDEyLDYgKzQxMiw4 IEBAIGV4dGVybiBzdHJ1Y3QgY2xlYW51cCAqbWFrZV9jbGVhbnVwX3Jlc3RvcmVfcGFnZV9pbmZv ICh2b2lkKTsKICBleHRlcm4gc3RydWN0IGNsZWFudXAgKgogICAgc2V0X2JhdGNoX2ZsYWdfYW5k X21ha2VfY2xlYW51cF9yZXN0b3JlX3BhZ2VfaW5mbyAodm9pZCk7CiAgCkBAIC05OTUsMTAgKzkw NiwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZGVmcy5oCiAgZXh0ZXJuIGNo YXIgKmdkYl9yZWFscGF0aCAoY29uc3QgY2hhciAqKTsKICBleHRlcm4gY2hhciAqeGZ1bGxwYXRo IChjb25zdCBjaGFyICopOwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9n ZGIudGV4aW5mbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIv ZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDctMjEgMTc6MTM6MjkuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEtMDctMjkgMjI6NTI6 MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9nZGIudGV4aW5mbyBiL2dk Yi9kb2MvZ2RiLnRleGluZm8KK2luZGV4IGQ2MGE4N2IuLmIwNjE4ZjYgMTAwNjQ0CistLS0gYS9n ZGIvZG9jL2dkYi50ZXhpbmZvCisrKysgYi9nZGIvZG9jL2dkYi50ZXhpbmZvCiBAQCAtMTE3NSw2 ICsxMTc1LDE2IEBAIGZvciByZW1vdGUgZGVidWdnaW5nLgogIFJ1biB1c2luZyBAdmFye2Rldmlj ZX0gZm9yIHlvdXIgcHJvZ3JhbSdzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCiAgQGMgRklY TUU6IGtpbmdkb24gdGhpbmtzIHRoZXJlIGlzIG1vcmUgdG8gLXR0eS4gIEludmVzdGlnYXRlLgpA QCAtMTAxNiw3ICs5MjcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dk Yi50ZXhpbmZvCiAgQGMgcmVzb2x2ZSB0aGUgc2l0dWF0aW9uIG9mIHRoZXNlIGV2ZW50dWFsbHkK ICBAaXRlbSAtdHVpCiAgQGNpbmRleCBAY29kZXstLXR1aX0KLUBAIC0zMjk1LDYgKzMzMDUsNyBA QCBhbGwgYnJlYWtwb2ludHMgaW4gdGhhdCByYW5nZSBhcmUgb3BlcmF0CitAQCAtMzMwMyw2ICsz MzEzLDcgQEAgYWxsIGJyZWFrcG9pbnRzIGluIHRoYXQgcmFuZ2UgYXJlIG9wZXJhdGVkIG9uLgog ICogQ29uZGl0aW9uczo6ICAgICAgICAgICAgICAgICAgQnJlYWsgY29uZGl0aW9ucwogICogQnJl YWsgQ29tbWFuZHM6OiAgICAgICAgICAgICAgQnJlYWtwb2ludCBjb21tYW5kIGxpc3RzCiAgKiBT YXZlIEJyZWFrcG9pbnRzOjogICAgICAgICAgICBIb3cgdG8gc2F2ZSBicmVha3BvaW50cyBpbiBh IGZpbGUKQEAgLTEwMjQsNyArOTM1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2RvYy9nZGIudGV4aW5mbwogICogRXJyb3IgaW4gQnJlYWtwb2ludHM6OiAgICAgICAgYGBDYW5u b3QgaW5zZXJ0IGJyZWFrcG9pbnRzJycKICAqIEJyZWFrcG9pbnQtcmVsYXRlZCBXYXJuaW5nczo6 IGBgQnJlYWtwb2ludCBhZGRyZXNzIGFkanVzdGVkLi4uJycKICBAZW5kIG1lbnUKLUBAIC00NTI1 LDYgKzQ1MzYsNTAgQEAgYW5kIHJlbW92ZSB0aGUgYnJlYWtwb2ludCBkZWZpbml0aW9ucyB5bwor QEAgLTQ1MzIsNiArNDU0Myw1MCBAQCBhbmQgcmVtb3ZlIHRoZSBicmVha3BvaW50IGRlZmluaXRp b25zIHlvdSdyZSBub3QgaW50ZXJlc3RlZCBpbiwgb3IKICB0aGF0IGNhbiBubyBsb25nZXIgYmUg cmVjcmVhdGVkLgogIEBlbmQgdGFibGUKICAKQEAgLTEwNjIsNyArOTczLDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGIudGV4aW5mbwogK3BvaW50IGF0IHdoaWNoIHRo ZSBwcm9iZSBpcyBkZWZpbmVkLS0tdGhhdCBpcywgd2hlbiB0aGUgY3VycmVudCBQQyBpcwogK2F0 IHRoZSBwcm9iZSdzIGxvY2F0aW9uLiAgVGhlIGFyZ3VtZW50cyBhcmUgYXZhaWxhYmxlIHVzaW5n IHRoZQogK2NvbnZlbmllbmNlIHZhcmlhYmxlcyAoQHB4cmVme0NvbnZlbmllbmNlIFZhcnN9KQot K0Bjb2RleyRfcHJvYmVfYXJnMH1AZG90c3t9QGNvZGV7JF9wcm9iZV9hcmc5fS4gIEVhY2ggcHJv YmUgYXJndW1lbnQgaXMKKytAY29kZXskX3Byb2JlX2FyZzB9QGRvdHN7fUBjb2RleyRfcHJvYmVf YXJnMTF9LiAgRWFjaCBwcm9iZSBhcmd1bWVudCBpcwogK2FuIGludGVnZXIgb2YgdGhlIGFwcHJv cHJpYXRlIHNpemU7IHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLiAgVGhlCiArY29udmVuaWVuY2Ug dmFyaWFibGUgQGNvZGV7JF9wcm9iZV9hcmdjfSBob2xkcyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50 cwogK2F0IHRoZSBjdXJyZW50IHByb2JlIHBvaW50LgpAQCAtMTA3NSwxMiArOTg2LDEyIEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiLnRleGluZm8KICBAYyAgQGlmY2xl YXIgQkFSRVRBUkdFVAogIEBub2RlIEVycm9yIGluIEJyZWFrcG9pbnRzCiAgQHN1YnNlY3Rpb24g YGBDYW5ub3QgaW5zZXJ0IGJyZWFrcG9pbnRzJycKLUBAIC02NDQwLDYgKzY0OTUsMjkgQEAgc3Bl Y2lmeSB0aGUgZnVuY3Rpb24gdW5hbWJpZ3VvdXNseSwgZS5nLgorQEAgLTY1NTIsNiArNjYwNywy OSBAQCBzcGVjaWZ5IHRoZSBmdW5jdGlvbiB1bmFtYmlndW91c2x5LCBlLmcuLCBpZiB0aGVyZSBh cmUgc2V2ZXJhbAogIGZ1bmN0aW9ucyB3aXRoIGlkZW50aWNhbCBuYW1lcyBpbiBkaWZmZXJlbnQg c291cmNlIGZpbGVzLgogIEBlbmQgdGFibGUKICAKICtAY2luZGV4IFN5c3RlbVRhcCBzdGF0aWMg cHJvYmUgcG9pbnQKLStAaXRlbSBwcm9iZTpAcntbfUB2YXJ7b2JqZmlsZX06QHJ7XX1AcntbfUB2 YXJ7cHJvdmlkZXJ9OkBye119QHZhcntuYW1lfQorK0BpdGVtIC1wIEBye1t9QHZhcntvYmpmaWxl fTpAcntdfUBye1t9QHZhcntwcm92aWRlcn06QHJ7XX1AdmFye25hbWV9CiArVGhlIEBzY3tnbnV9 L0xpbnV4IHRvb2wgQGNvZGV7U3lzdGVtVGFwfSBwcm92aWRlcyBhIHdheSBmb3IKICthcHBsaWNh dGlvbnMgdG8gZW1iZWQgc3RhdGljIHByb2Jlcy4gIFRoaXMgZm9ybSBvZiBsaW5lc3BlYyBzcGVj aWZpZXMKICt0aGUgbG9jYXRpb24gb2Ygc3VjaCBhIHN0YXRpYyBwcm9iZS4gIFNlZQpAQCAtMTA5 OCw0MiArMTAwOSw0MiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50 ZXhpbmZvCiAraGFwcGVucyBhdXRvbWF0aWNhbGx5IGlmIHlvdSBkZWZpbmVkIHlvdXIgcHJvYmUg dXNpbmcgYSBEVHJhY2Utc3R5bGUKICtAZmlsZXsuZH0gZmlsZS4gIElmIHlvdXIgcHJvYmUgaGFz IGEgc2VtYXBob3JlLCBAdmFsdWV7R0RCTn0gd2lsbAogK2F1dG9tYXRpY2FsbHkgZW5hYmxlIGl0 IHdoZW4geW91IHNwZWNpZnkgYSBicmVha3BvaW50IHVzaW5nIHRoZQotK0BzYW1we3Byb2JlOn0g bm90YXRpb24uICBCdXQsIGlmIHlvdSBwdXQgYSBicmVha3BvaW50IGF0IGEgcHJvYmUncworK0Bz YW1wey1wfSBub3RhdGlvbi4gIEJ1dCwgaWYgeW91IHB1dCBhIGJyZWFrcG9pbnQgYXQgYSBwcm9i ZSdzCiArbG9jYXRpb24gYnkgc29tZSBvdGhlciBtZXRob2QgKGUuZy4sIEBjb2Rle2JyZWFrIGZp bGU6bGluZX0pLCB0aGVuCiArQHZhbHVle0dEQk59IHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgc2V0 IHRoZSBzZW1hcGhvcmUuCiArCiAgQGVuZCB0YWJsZQogIAogIAotQEAgLTg1MjYsNiArODYwNCwx MCBAQCB0byBtYXRjaCB0aGUgZm9ybWF0IGluIHdoaWNoIHRoZSBkYXRhIHdhCitAQCAtODc2Nyw2 ICs4ODQ1LDEwIEBAIHRvIG1hdGNoIHRoZSBmb3JtYXQgaW4gd2hpY2ggdGhlIGRhdGEgd2FzIHBy aW50ZWQuCiAgVGhlIHZhcmlhYmxlIEBjb2RleyRfZXhpdGNvZGV9IGlzIGF1dG9tYXRpY2FsbHkg c2V0IHRvIHRoZSBleGl0IGNvZGUgd2hlbgogIHRoZSBwcm9ncmFtIGJlaW5nIGRlYnVnZ2VkIHRl cm1pbmF0ZXMuCiAgCiArQGl0ZW0gJF9wcm9iZV9hcmdjCi0rQGl0ZW14ICRfcHJvYmVfYXJnMEBk b3Rze30kX3Byb2JlX2FyZzkKKytAaXRlbXggJF9wcm9iZV9hcmcwQGRvdHN7fSRfcHJvYmVfYXJn MTEKICtBcmd1bWVudHMgdG8gYSBTeXN0ZW1UYXAgc3RhdGljIHByb2JlLiAgQHhyZWZ7U3RhdGlj IFByb2JlIFBvaW50c30uCiArCiAgQGl0ZW0gJF9zZGF0YQogIEB2aW5kZXggJF9zZGF0YUByeywg aW5zcGVjdCwgY29udmVuaWVuY2UgdmFyaWFibGV9CiAgVGhlIHZhcmlhYmxlIEBjb2RleyRfc2Rh dGF9IGNvbnRhaW5zIGV4dHJhIGNvbGxlY3RlZCBzdGF0aWMgdHJhY2Vwb2ludAotQEAgLTEwMjY0 LDYgKzEwMzQ2LDE2IEBAIENvbGxlY3QgYWxsIGZ1bmN0aW9uIGFyZ3VtZW50cy4KLSBAaXRlbSAk bG9jYWxzCi0gQ29sbGVjdCBhbGwgbG9jYWwgdmFyaWFibGVzLgorQEAgLTEwNzE5LDYgKzEwODAx LDE2IEBAIENvbGxlY3QgYWxsIGxvY2FsIHZhcmlhYmxlcy4KKyBDb2xsZWN0IHRoZSByZXR1cm4g YWRkcmVzcy4gIFRoaXMgaXMgaGVscGZ1bCBpZiB5b3Ugd2FudCB0byBzZWUgbW9yZQorIG9mIGEg YmFja3RyYWNlLgogIAogK0BpdGVtICRfcHJvYmVfYXJnYwogK0NvbGxlY3RzIHRoZSBudW1iZXIg b2YgYXJndW1lbnRzIGZyb20gdGhlIEBjb2Rle1N5c3RlbVRhcH0gcHJvYmUgYXQKICt3aGljaCB0 aGUgdHJhY2Vwb2ludCBpcyBsb2NhdGVkLgotK0B4cmVme1N0YXRpYyBQcm9iZSBQb2ludHMsLFN0 YXRpYyBQcm9iZSBQb2ludHN9CisrQHhyZWZ7U3RhdGljIFByb2JlIFBvaW50cywsU3RhdGljIFBy b2JlIFBvaW50c30uCiArCiArQGl0ZW0gJF9wcm9iZV9hcmdAdmFye059Ci0rV2hlcmUgQHZhcntO fSB2YXJpZXMgZnJvbSAwIHRvIDkuICBDb2xsZWN0cyB0aGUgQHZhcntOfXRoIGFyZ3VtZW50Cisr V2hlcmUgQHZhcntOfSB2YXJpZXMgZnJvbSAwIHRvIDExLiAgQ29sbGVjdHMgdGhlIEB2YXJ7Tn10 aCBhcmd1bWVudAogK2Zyb20gdGhlIEBjb2Rle1N5c3RlbVRhcH0gcHJvYmUgYXQgd2hpY2ggdGhl IHRyYWNlcG9pbnQgaXMgbG9jYXRlZC4KLStAeHJlZntTdGF0aWMgUHJvYmUgUG9pbnRzLCxTdGF0 aWMgUHJvYmUgUG9pbnRzfQorK0B4cmVme1N0YXRpYyBQcm9iZSBQb2ludHMsLFN0YXRpYyBQcm9i ZSBQb2ludHN9LgogKwogIEBpdGVtICRfc2RhdGEKICBAdmluZGV4ICRfc2RhdGFAcnssIGNvbGxl Y3R9CiAgQ29sbGVjdCBzdGF0aWMgdHJhY2Vwb2ludCBtYXJrZXIgc3BlY2lmaWMgZGF0YS4gIE9u bHkgYXZhaWxhYmxlIGZvcgotQEAgLTIwODA1LDggKzIwODk3LDYgQEAgY29udGFpbmluZyBAY29k ZXtlbmR9LiAgRm9yIGV4YW1wbGU6CitAQCAtMjE0NTgsOCArMjE1NTAsNiBAQCBjb250YWluaW5n IEBjb2Rle2VuZH0uICBGb3IgZXhhbXBsZToKICAKICBAc21hbGxleGFtcGxlCiAgKEB2YWx1ZXtH REJQfSkgcHl0aG9uCkBAIC0xMTQyLDEwICsxMDUzLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9kb2MvZ2RiLnRleGluZm8KICA+cHJpbnQgMjMKICA+ZW5kCiAgMjMKLUBAIC0y MDgyNCw2ICsyMDkxNCwxNCBAQCBvY2N1cnMgaW4gYSBQeXRob24gc2NyaXB0LiAgVGhpcyBjYW4g YmUKLSBweXRob24gcHJpbnQtc3RhY2t9OiBpZiBAY29kZXtvbn0sIHRoZW4gUHl0aG9uIHN0YWNr IHByaW50aW5nIGlzCi0gZW5hYmxlZDsgaWYgQGNvZGV7b2ZmfSwgdGhlIGRlZmF1bHQsIHRoZW4g UHl0aG9uIHN0YWNrIHByaW50aW5nIGlzCi0gZGlzYWJsZWQuCitAQCAtMjE0NzMsNiArMjE1NjMs MTQgQEAgY29udHJvbGxlZCB1c2luZyBAY29kZXtzZXQgcHl0aG9uIHByaW50LXN0YWNrfTogaWYg QGNvZGV7ZnVsbH0sIHRoZW4KKyBmdWxsIFB5dGhvbiBzdGFjayBwcmludGluZyBpcyBlbmFibGVk OyBpZiBAY29kZXtub25lfSwgdGhlbiBQeXRob24gc3RhY2sKKyBhbmQgbWVzc2FnZSBwcmludGlu ZyBpcyBkaXNhYmxlZDsgaWYgQGNvZGV7bWVzc2FnZX0sIHRoZSBkZWZhdWx0LCBvbmx5CisgdGhl IG1lc3NhZ2UgY29tcG9uZW50IG9mIHRoZSBlcnJvciBpcyBwcmludGVkLgogKwogK0BraW5kZXgg bWFpbnQgc2V0IHB5dGhvbiBhdXRvLWxvYWQKICtAaXRlbSBtYWludCBzZXQgcHl0aG9uIGF1dG8t bG9hZApAQCAtMTE1Nyw3ICsxMDY4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2RvYy9nZGIudGV4aW5mbwogIEBlbmQgdGFibGUKICAKICBJdCBpcyBhbHNvIHBvc3NpYmxlIHRv IGV4ZWN1dGUgYSBQeXRob24gc2NyaXB0IGZyb20gdGhlIEB2YWx1ZXtHREJOfQotQEAgLTIwODQ1 LDYgKzIwOTQzLDE0IEBAIGFuZCB0aHVzIGlzIGFsd2F5cyBhdmFpbGFibGUuCitAQCAtMjE0OTQs NiArMjE1OTIsMTQgQEAgYW5kIHRodXMgaXMgYWx3YXlzIGF2YWlsYWJsZS4KICBAY2luZGV4IHB5 dGhvbiBhcGkKICBAY2luZGV4IHByb2dyYW1taW5nIGluIHB5dGhvbgogIApAQCAtMTE3MiwxMSAr MTA4MywxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYi50ZXhpbmZv CiAgQGNpbmRleCBweXRob24gc3Rkb3V0CiAgQGNpbmRleCBweXRob24gcGFnaW5hdGlvbgogIEF0 IHN0YXJ0dXAsIEB2YWx1ZXtHREJOfSBvdmVycmlkZXMgUHl0aG9uJ3MgQGNvZGV7c3lzLnN0ZG91 dH0gYW5kCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9jL2dkYmludC50ZXhpbmZv Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2MvZ2RiaW50 LnRleGluZm8JMjAxMS0wNC0xOSAyMDowNDowOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGluZm8JMjAxMS0wNy0yOSAyMjo1MjowMi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0yMTA0LDYgKzIxMDQsMTggQEAgdGltZSwgYW5kIHNvIHdlIGF0 dGVtcHQgdG8gaGFuZGxlIHN5bWJvbAorZGlmZiAtLWdpdCBhL2dkYi9kb2MvZ2RiaW50LnRleGlu Zm8gYi9nZGIvZG9jL2dkYmludC50ZXhpbmZvCitpbmRleCAzNGVlZTkxLi4wNmE3YWRhIDEwMDY0 NAorLS0tIGEvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbworKysrIGIvZ2RiL2RvYy9nZGJpbnQudGV4 aW5mbworQEAgLTIxMDQsNiArMjEwNCwxOCBAQCB0aW1lLCBhbmQgc28gd2UgYXR0ZW1wdCB0byBo YW5kbGUgc3ltYm9scyBpbmNyZW1lbnRhbGx5LiAgRm9yIGluc3RhbmNlLAogIHdlIGNyZWF0ZSBA ZGZue3BhcnRpYWwgc3ltYm9sIHRhYmxlc30gY29uc2lzdGluZyBvZiBvbmx5IHNlbGVjdGVkCiAg c3ltYm9scywgYW5kIG9ubHkgZXhwYW5kIHRoZW0gdG8gZnVsbCBzeW1ib2wgdGFibGVzIHdoZW4g bmVjZXNzYXJ5LgogIApAQCAtMTE5NSw3ICsxMTA2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogIEBzZWN0aW9uIFN5bWJvbCBSZWFkaW5nCiAg CiAgQGNpbmRleCBzeW1ib2wgcmVhZGluZwotQEAgLTIxOTYsNiArMjIwOCw3IEBAIHN5bXRhYi4g IFVwb24gcmV0dXJuLCBAY29kZXtwc3QtPnJlYWRpbn0KK0BAIC0yMTk2LDYgKzIyMDgsNyBAQCBz eW10YWIuICBVcG9uIHJldHVybiwgQGNvZGV7cHN0LT5yZWFkaW59IHNob3VsZCBoYXZlIGJlZW4g c2V0IHRvIDEsIGFuZAogIHplcm8gaWYgdGhlcmUgd2VyZSBubyBzeW1ib2xzIGluIHRoYXQgcGFy dCBvZiB0aGUgc3ltYm9sIGZpbGUuCiAgQGVuZCB0YWJsZQogIApAQCAtMTIwMyw3ICsxMTE0LDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogIEBz ZWN0aW9uIFBhcnRpYWwgU3ltYm9sIFRhYmxlcwogIAogIEB2YWx1ZXtHREJOfSBoYXMgdGhyZWUg dHlwZXMgb2Ygc3ltYm9sIHRhYmxlczoKLUBAIC0yMjk3LDYgKzIzMTAsNyBAQCBhbmQgcGFydGlh bCBzeW1ib2wgdGFibGVzIGJlaGluZCBhIHNldCBvCitAQCAtMjI5Nyw2ICsyMzEwLDcgQEAgYW5k IHBhcnRpYWwgc3ltYm9sIHRhYmxlcyBiZWhpbmQgYSBzZXQgb2YgZnVuY3Rpb24gcG9pbnRlcnMg a25vd24gYXMKICB0aGUgQGRmbntxdWljayBzeW1ib2wgZnVuY3Rpb25zfS4gIFRoZXNlIGFyZSBk b2N1bWVudGVkIGluCiAgQGZpbGV7c3ltZmlsZS5ofS4KICAKQEAgLTEyMTEsNyArMTEyMiw3IEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50LnRleGluZm8KICBAc2Vj dGlvbiBUeXBlcwogIAogIEB1bm51bWJlcmVkc3Vic2VjIEZ1bmRhbWVudGFsIFR5cGVzIChlLmcu LCBAY29kZXtGVF9WT0lEfSwgQGNvZGV7RlRfQk9PTEVBTn0pLgotQEAgLTIzMTksNiArMjMzMyw3 IEBAIHR5cGVzIG1hcCB0byBvbmUgQGNvZGV7VFlQRV9DT0RFXyp9IHR5cGUKK0BAIC0yMzE5LDYg KzIzMzMsNyBAQCB0eXBlcyBtYXAgdG8gb25lIEBjb2Rle1RZUEVfQ09ERV8qfSB0eXBlLCBhbmQg YXJlIGRpc3Rpbmd1aXNoZWQgYnkKICBvdGhlciBtZW1iZXJzIG9mIHRoZSB0eXBlIHN0cnVjdCwg c3VjaCBhcyB3aGV0aGVyIHRoZSB0eXBlIGlzIHNpZ25lZAogIG9yIHVuc2lnbmVkLCBhbmQgaG93 IG1hbnkgYml0cyBpdCB1c2VzLgogIApAQCAtMTIxOSw3ICsxMTMwLDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9nZGJpbnQudGV4aW5mbwogIEB1bm51bWJlcmVkc3Vic2Vj IEJ1aWx0aW4gVHlwZXMgKGUuZy4sIEBjb2Rle2J1aWx0aW5fdHlwZV92b2lkfSwgQGNvZGV7YnVp bHRpbl90eXBlX2NoYXJ9KS4KICAKICBUaGVzZSBhcmUgaW5zdGFuY2VzIG9mIHR5cGUgc3RydWN0 cyB0aGF0IHJvdWdobHkgY29ycmVzcG9uZCB0bwotQEAgLTIzMzMsNiArMjM0OCw3IEBAIG9ubHkg b25lIGluc3RhbmNlIGV4aXN0cywgd2hpbGUgQGZpbGV7Yy0KK0BAIC0yMzMzLDYgKzIzNDgsNyBA QCBvbmx5IG9uZSBpbnN0YW5jZSBleGlzdHMsIHdoaWxlIEBmaWxle2MtbGFuZy5jfSBidWlsZHMg YXMgbWFueQogIEBjb2Rle1RZUEVfQ09ERV9JTlR9IHR5cGVzIGFzIG5lZWRlZCwgd2l0aCBlYWNo IG9uZSBhc3NvY2lhdGVkIHdpdGgKICBzb21lIHBhcnRpY3VsYXIgb2JqZmlsZS4KICAKQEAgLTEy MzUsNyArMTE0Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50 LnRleGluZm8KICBAc2VjdGlvbiBEZWJ1Z2dpbmcgRmlsZSBGb3JtYXRzCiAgCiAgVGhpcyBzZWN0 aW9uIGRlc2NyaWJlcyBjaGFyYWN0ZXJpc3RpY3Mgb2YgZGVidWdnaW5nIGluZm9ybWF0aW9uIHRo YXQKLUBAIC0yNDg5LDYgKzI1MDYsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZlcnNpb24g b2YgRFdBUkYKK0BAIC0yNDg5LDYgKzI1MDYsNyBAQCBEV0FSRiAzIGlzIGFuIGltcHJvdmVkIHZl cnNpb24gb2YgRFdBUkYgMi4KICBAY2luZGV4IFNPTSBkZWJ1Z2dpbmcgaW5mbwogIExpa2UgQ09G RiwgdGhlIFNPTSBkZWZpbml0aW9uIGluY2x1ZGVzIGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KICAK QEAgLTEyNDMsNyArMTE1NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2Mv Z2RiaW50LnRleGluZm8KICBAc2VjdGlvbiBBZGRpbmcgYSBOZXcgU3ltYm9sIFJlYWRlciB0byBA dmFsdWV7R0RCTn0KICAKICBAY2luZGV4IGFkZGluZyBkZWJ1Z2dpbmcgaW5mbyByZWFkZXIKLUBA IC0yNTExLDYgKzI1MjksNyBAQCB3aWxsIG9ubHkgZXZlciBiZSBpbXBsZW1lbnRlZCBieSBvbmUg b2JqCitAQCAtMjUxMSw2ICsyNTI5LDcgQEAgd2lsbCBvbmx5IGV2ZXIgYmUgaW1wbGVtZW50ZWQg Ynkgb25lIG9iamVjdCBmaWxlIGZvcm1hdCBtYXkgYmUgY2FsbGVkCiAgZGlyZWN0bHkuICBUaGlz IGludGVyZmFjZSBzaG91bGQgYmUgZGVzY3JpYmVkIGluIGEgZmlsZQogIEBmaWxle2JmZC9saWJA dmFye3h5en0uaH0sIHdoaWNoIGlzIGluY2x1ZGVkIGJ5IEB2YWx1ZXtHREJOfS4KICAKQEAgLTEy NTEsNyArMTE2Miw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kb2MvZ2RiaW50 LnRleGluZm8KICBAc2VjdGlvbiBNZW1vcnkgTWFuYWdlbWVudCBmb3IgU3ltYm9sIEZpbGVzCiAg CiAgTW9zdCBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIGEgbG9hZGVkIHN5bWJvbCBmaWxlIGlzIHN0 b3JlZCBvbgotQEAgLTI1MjIsMTAgKzI1NDEsNDUgQEAgcmVsZWFzZWQgd2hlbiB0aGUgb2JqZmls ZSBpcyB1bmxvYWRlZCBvcgorQEAgLTI1MjIsMTAgKzI1NDEsNDUgQEAgcmVsZWFzZWQgd2hlbiB0 aGUgb2JqZmlsZSBpcyB1bmxvYWRlZCBvciByZWxvYWRlZC4gIFRoZXJlZm9yZSBvbmUKICBvYmpm aWxlIG11c3Qgbm90IHJlZmVyZW5jZSBzeW1ib2wgb3IgdHlwZSBkYXRhIGZyb20gYW5vdGhlciBv YmpmaWxlOwogIHRoZXkgY291bGQgYmUgdW5sb2FkZWQgYXQgZGlmZmVyZW50IHRpbWVzLgogIApA QCAtMTMwMSwxMSArMTIxMiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZG9j L2dkYmludC50ZXhpbmZvCiAgCiAgCiAgQG5vZGUgTGFuZ3VhZ2UgU3VwcG9ydAotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kb2Mvb2JzZXJ2ZXIudGV4aQkyMDExLTA3LTIx IDEzOjAzOjQ3LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2Rv Yy9vYnNlcnZlci50ZXhpCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAt MjI3LDYgKzIyNywxMSBAQCBDYWxsZWQgYmVmb3JlIGEgdG9wLWxldmVsIHByb21wdCBpcyBkaXNw CitkaWZmIC0tZ2l0IGEvZ2RiL2RvYy9vYnNlcnZlci50ZXhpIGIvZ2RiL2RvYy9vYnNlcnZlci50 ZXhpCitpbmRleCA2ODliMzAzLi4yZjQ2YjkzIDEwMDY0NAorLS0tIGEvZ2RiL2RvYy9vYnNlcnZl ci50ZXhpCisrKysgYi9nZGIvZG9jL29ic2VydmVyLnRleGkKK0BAIC0yMjcsNiArMjI3LDExIEBA IENhbGxlZCBiZWZvcmUgYSB0b3AtbGV2ZWwgcHJvbXB0IGlzIGRpc3BsYXllZC4gIEB2YXJ7Y3Vy cmVudF9wcm9tcHR9IGlzCiAgdGhlIGN1cnJlbnQgdG9wLWxldmVsIHByb21wdC4KICBAZW5kIGRl ZnR5cGVmdW4KICAKQEAgLTEzMTcsMTEgKzEyMjgsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2RvYy9vYnNlcnZlci50ZXhpCiAgQGRlZnR5cGVmdW4gdm9pZCB0ZXN0X25vdGlm aWNhdGlvbiAoaW50IEB2YXJ7c29tZWFyZ30pCiAgVGhpcyBvYnNlcnZlciBpcyB1c2VkIGZvciBp bnRlcm5hbCB0ZXN0aW5nLiAgRG8gbm90IHVzZS4gIAogIFNlZSB0ZXN0c3VpdGUvZ2RiLmdkYi9v YnNlcnZlci5leHAuCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYyZXhwci5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9kd2FyZjJleHBy LmMJMjAxMS0wNy0xNSAyMjo1NDozMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9kd2FyZjJleHByLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0xMjU4LDYgKzEyNTgsMTQgQEAgZXhlY3V0ZV9zdGFja19vcCAoc3RydWN0IGR3YXJm X2V4cHJfY29udAorZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmMgYi9nZGIvZHdhcmYyZXhw ci5jCitpbmRleCAwNDc3OWE4Li5jNmE2NGU1IDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMmV4cHIu YworKysrIGIvZ2RiL2R3YXJmMmV4cHIuYworQEAgLTE0NDksNiArMTQ0OSwxNCBAQCBleGVjdXRl X3N0YWNrX29wIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCiAgCSAgfQogIAkgIGJy ZWFrOwogIApAQCAtMTMzNiwxMyArMTI0NywxMyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZHdhcmYyZXhwci5jCiAgCWRlZmF1bHQ6CiAgCSAgZXJyb3IgKF8oIlVuaGFuZGxlZCBk d2FyZiBleHByZXNzaW9uIG9wY29kZSAweCV4IiksIG9wKTsKICAJfQotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmV4cHIuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZHdhcmYyZXhwci5oCTIwMTEtMDctMTUgMjI6NTQ6MzIuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYyZXhwci5oCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNjIsMTIgKzYyLDEwIEBAIHN0cnVj dCBkd2FyZl9leHByX2NvbnRleHRfZnVuY3MKLSAgICAgIG1lYW5pbmdmdWwgdG8gc3Vic3RpdHV0 ZSBhIHN0dWIgdHlwZSBvZiB0aGUgY29ycmVjdCBzaXplLiAgKi8KLSAgIHN0cnVjdCB0eXBlICoo KmdldF9iYXNlX3R5cGUpIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsIHNpemVfdCBk aWUpOworZGlmZiAtLWdpdCBhL2dkYi9kd2FyZjJleHByLmggYi9nZGIvZHdhcmYyZXhwci5oCitp bmRleCAyYzFkYTI2Li5kZWFmYmU4IDEwMDY0NAorLS0tIGEvZ2RiL2R3YXJmMmV4cHIuaAorKysr IGIvZ2RiL2R3YXJmMmV4cHIuaAorQEAgLTczLDEyICs3MywxMCBAQCBzdHJ1Y3QgZHdhcmZfZXhw cl9jb250ZXh0X2Z1bmNzCisgCQkJCSAgICAgIGludCBkd2FyZl9yZWcsIENPUkVfQUREUiBmYl9v ZmZzZXQsCisgCQkJCSAgICAgIGludCBkZXJlZl9zaXplKTsKICAKIC0jaWYgMAogICAgLyogTm90 IHlldCBpbXBsZW1lbnRlZC4gICovCkBAIC0xMzUzLDExICsxMjY0LDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJleHByLmgKICB9OwogIAogIC8qIFRoZSBsb2NhdGlv biBvZiBhIHZhbHVlLiAgKi8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJs b2MuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZHdhcmYy bG9jLmMJMjAxMS0wNy0xOSAyMjoyODo1Mi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTEzNCw2ICsxMzQsOSBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9iYXRvbgorZGlmZiAt LWdpdCBhL2dkYi9kd2FyZjJsb2MuYyBiL2dkYi9kd2FyZjJsb2MuYworaW5kZXggNzU0N2E0MC4u YmM4MDE1YyAxMDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJsb2MuYworKysrIGIvZ2RiL2R3YXJmMmxv Yy5jCitAQCAtMTU4LDYgKzE1OCw5IEBAIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uCiAgewogICAg c3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwogICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAq cGVyX2N1OwpAQCAtMTM2Nyw3ICsxMjc4LDE3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9kd2FyZjJsb2MuYwogIH07CiAgCiAgLyogSGVscGVyIGZ1bmN0aW9ucyBmb3IgZHdhcmYy X2V2YWx1YXRlX2xvY19kZXNjLiAgKi8KLUBAIC0yMDIsMjMgKzIwNSwzMyBAQCBkd2FyZl9leHBy X2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqCitAQCAtMjE3LDE2ICsyMjAsMTQgQEAgc3Rh dGljIHZvaWQKKyBkd2FyZl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVm dW5jLCBDT1JFX0FERFIgcGMsCisgCQkJIGNvbnN0IGdkYl9ieXRlICoqc3RhcnQsIHNpemVfdCAq bGVuZ3RoKQorIHsKKy0gIGlmIChTWU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYykgPT0g TlVMTCkKKy0gICAgKmxlbmd0aCA9IDA7CistICBlbHNlIGlmIChTWU1CT0xfQ09NUFVURURfT1BT IChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKysgIGlmIChTWU1CT0xfQ09N UFVURURfT1BTIChmcmFtZWZ1bmMpID09ICZkd2FyZjJfbG9jbGlzdF9mdW5jcykKKyAgICAgewor ICAgICAgIHN0cnVjdCBkd2FyZjJfbG9jbGlzdF9iYXRvbiAqc3ltYmF0b247CisgCiAgICAgICAg c3ltYmF0b24gPSBTWU1CT0xfTE9DQVRJT05fQkFUT04gKGZyYW1lZnVuYyk7CiAgICAgICAgKnN0 YXJ0ID0gZHdhcmYyX2ZpbmRfbG9jYXRpb25fZXhwcmVzc2lvbiAoc3ltYmF0b24sIGxlbmd0aCwg cGMpOwogICAgICB9CkBAIC0xMzc2LDE3ICsxMjk3LDkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiAgICAgIHsKICAgICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2V4 cHJfYmF0b24gKnN5bWJhdG9uOwogIAotICAgICAgIHN5bWJhdG9uID0gU1lNQk9MX0xPQ0FUSU9O X0JBVE9OIChmcmFtZWZ1bmMpOwotLSAgICAgIGlmIChzeW1iYXRvbiAhPSBOVUxMKQotLQl7Ci0t CSAgKmxlbmd0aCA9IHN5bWJhdG9uLT5zaXplOwotLQkgICpzdGFydCA9IHN5bWJhdG9uLT5kYXRh OwotLQl9Ci0tICAgICAgZWxzZQotLQkqc3RhcnQgPSBOVUxMOwotKyAgICAgIGdkYl9hc3NlcnQg KHN5bWJhdG9uICE9IE5VTEwpOwotKyAgICAgICpzdGFydCA9IHN5bWJhdG9uLT5kYXRhOwotKyAg ICAgICpsZW5ndGggPSBzeW1iYXRvbi0+c2l6ZTsKK0BAIC0yMzksMTAgKzI0MCwyMyBAQCBkd2Fy Zl9leHByX2ZyYW1lX2Jhc2VfMSAoc3RydWN0IHN5bWJvbCAqZnJhbWVmdW5jLCBDT1JFX0FERFIg cGMsCisgICAgICAgZWxzZQorIAkqbGVuZ3RoID0gMDsKICAgICAgfQogKyAgZWxzZSBpZiAoU1lN Qk9MX0NPTVBVVEVEX09QUyAoZnJhbWVmdW5jKSA9PSAmZHdhcmYyX21pc3NpbmdfZnVuY3MpCiAr ICAgIHsKQEAgLTEzOTQsOCArMTMwNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9kd2FyZjJsb2MuYwogKwogKyAgICAgIHN5bWJhdG9uID0gU1lNQk9MX0xPQ0FUSU9OX0JBVE9O IChmcmFtZWZ1bmMpOwogKyAgICAgIGdkYl9hc3NlcnQgKHN5bWJhdG9uID09IE5VTEwpOwotKyAg ICAgICpzdGFydCA9IE5VTEw7Ci0rICAgICAgKmxlbmd0aCA9IDA7CS8qIHVudXNlZCAqLworKyAg ICAgICpsZW5ndGggPSAwOwogKyAgICB9CiArICBlbHNlCiArICAgIGludGVybmFsX2Vycm9yIChf X0ZJTEVfXywgX19MSU5FX18sCkBAIC0xNDAzLDE0ICsxMzE1LDE0IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwogKwkJICAgIFNZTUJPTF9DT01QVVRFRF9PUFMg KGZyYW1lZnVuYyksCiArCQkgICAgU1lNQk9MX1BSSU5UX05BTUUgKGZyYW1lZnVuYykpOwogIAot ICAgaWYgKCpzdGFydCA9PSBOVUxMKQorICAgaWYgKCpsZW5ndGggPT0gMCkKICAgICAgZXJyb3Ig KF8oIkNvdWxkIG5vdCBmaW5kIHRoZSBmcmFtZSBiYXNlIGZvciBcIiVzXCIuIiksCiAtCSAgIFNZ TUJPTF9OQVRVUkFMX05BTUUgKGZyYW1lZnVuYykpOwogKwkgICBTWU1CT0xfUFJJTlRfTkFNRSAo ZnJhbWVmdW5jKSk7CiAgfQogIAogIC8qIEhlbHBlciBmdW5jdGlvbiBmb3IgZHdhcmYyX2V2YWx1 YXRlX2xvY19kZXNjLiAgQ29tcHV0ZXMgdGhlIENGQSBmb3IKLUBAIC0yOTEsNiArMzA0LDg1IEBA IGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHIKK0BAIC0zMTAsNiArMzI0 LDg1IEBAIGR3YXJmX2V4cHJfZHdhcmZfY2FsbCAoc3RydWN0IGR3YXJmX2V4cHJfY29udGV4dCAq Y3R4LCBzaXplX3QgZGllX29mZnNldCkKICAJCSAgICAgY3R4LT5mdW5jcy0+Z2V0X2ZyYW1lX3Bj LCBjdHgtPmJhdG9uKTsKICB9CiAgCkBAIC0xNDk2LDggKzE0MDgsMjYgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gZm9y IGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzYy4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB0eXBlICoK LUBAIC0zMDEsNiArMzkzLDg1IEBAIGR3YXJmX2V4cHJfZ2V0X2Jhc2VfdHlwZSAoc3RydWN0IGR3 YXJmX2UKLSAgIHJldHVybiBkd2FyZjJfZ2V0X2RpZV90eXBlIChkaWVfb2Zmc2V0LCBkZWJhdG9u LT5wZXJfY3UpOworQEAgLTk5MSwxMCArMTA4NCwxMiBAQCBkd2FyZl9leHByX3B1c2hfZHdhcmZf cmVnX2VudHJ5X3ZhbHVlIChzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0ICpjdHgsCisgCisgICBz YXZlZF9jdHguZ2RiYXJjaCA9IGN0eC0+Z2RiYXJjaDsKKyAgIHNhdmVkX2N0eC5hZGRyX3NpemUg PSBjdHgtPmFkZHJfc2l6ZTsKKysgIHNhdmVkX2N0eC5yZWZfYWRkcl9zaXplID0gY3R4LT5yZWZf YWRkcl9zaXplOworICAgc2F2ZWRfY3R4Lm9mZnNldCA9IGN0eC0+b2Zmc2V0OworICAgc2F2ZWRf Y3R4LmJhdG9uID0gY3R4LT5iYXRvbjsKKyAgIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2Fy Y2ggKGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAoYmF0b25fbG9jYWwucGVyX2N1KSk7CisgICBjdHgt PmFkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChiYXRvbl9sb2NhbC5wZXJfY3Up OworKyAgY3R4LT5yZWZfYWRkcl9zaXplID0gZHdhcmYyX3Blcl9jdV9yZWZfYWRkcl9zaXplIChi YXRvbl9sb2NhbC5wZXJfY3UpOworICAgY3R4LT5vZmZzZXQgPSBkd2FyZjJfcGVyX2N1X3RleHRf b2Zmc2V0IChiYXRvbl9sb2NhbC5wZXJfY3UpOworICAgY3R4LT5iYXRvbiA9ICZiYXRvbl9sb2Nh bDsKKyAKK0BAIC0xMDAyLDEwICsxMDk3LDkyIEBAIGR3YXJmX2V4cHJfcHVzaF9kd2FyZl9yZWdf ZW50cnlfdmFsdWUgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRleHQgKmN0eCwKKyAKKyAgIGN0eC0+ Z2RiYXJjaCA9IHNhdmVkX2N0eC5nZGJhcmNoOworICAgY3R4LT5hZGRyX3NpemUgPSBzYXZlZF9j dHguYWRkcl9zaXplOworKyAgY3R4LT5yZWZfYWRkcl9zaXplID0gc2F2ZWRfY3R4LnJlZl9hZGRy X3NpemU7CisgICBjdHgtPm9mZnNldCA9IHNhdmVkX2N0eC5vZmZzZXQ7CisgICBjdHgtPmJhdG9u ID0gc2F2ZWRfY3R4LmJhdG9uOwogIH0KICAKICsvKiBWaXJ0dWFsIG1ldGhvZCB0YWJsZSBmb3Ig ZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwgYmVsb3cuICAqLwpAQCAtMTUxMiw2ICsxNDQy LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiArICBkd2Fy Zl9leHByX3Rsc19hZGRyZXNzLAogKyAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsLAogKyAgZHdhcmZf ZXhwcl9nZXRfYmFzZV90eXBlLAorKyAgZHdhcmZfZXhwcl9wdXNoX2R3YXJmX3JlZ19lbnRyeV92 YWx1ZSwKICsgIGR3YXJmX2V4cHJfb2JqZWN0X2FkZHJlc3MKICt9OwogKwpAQCAtMTUzNSw2ICsx NDY2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiArCiAr ICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICsgIGN0eC0+YWRk cl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CisrICBjdHgtPnJlZl9h ZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHBlcl9jdSk7CiArICBjdHgt Pm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CiArICBjdHgtPmJh dG9uID0gJmJhdG9uOwogKyAgY3R4LT5mdW5jcyA9ICZkd2FyZl9leHByX2N0eF9mdW5jczsKQEAg LTE1NzksMTAgKzE1MTEsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJm MmxvYy5jCiArICByZXR1cm4gcmV0dmFsOwogK30KICsKLSBzdHJ1Y3QgcGllY2VfY2xvc3VyZQot IHsKLSAgIC8qIFJlZmVyZW5jZSBjb3VudC4gICovCi1AQCAtMTA4MiwyMCArMTI1Myw2IEBAIGlu dmFsaWRfc3ludGhldGljX3BvaW50ZXIgKHZvaWQpCisgLyogVkFMVUUgbXVzdCBiZSBvZiB0eXBl IGx2YWxfY29tcHV0ZWQgd2l0aCBlbnRyeV9kYXRhX3ZhbHVlX2Z1bmNzLiAgUGVyZm9ybQorICAg IHRoZSBpbmRpcmVjdCBtZXRob2Qgb24gaXQsIHRoYXQgaXMgdXNlIGl0cyBzdG9yZWQgdGFyZ2V0 IHZhbHVlLCB0aGUgc29sZQorICAgIHB1cnBvc2Ugb2YgZW50cnlfZGF0YV92YWx1ZV9mdW5jcy4u ICAqLworQEAgLTE5MjgsMjEgKzIxMDUsNiBAQCBpbnZhbGlkX3N5bnRoZXRpY19wb2ludGVyICh2 b2lkKQogIAkgICAicmVmZXJlbmNlZCB2aWEgc3ludGhldGljIHBvaW50ZXIiKSk7CiAgfQogIApA QCAtMTU5NywyNCArMTUyOSwyMiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdh cmYybG9jLmMKIC0gIGR3YXJmX2V4cHJfZnJhbWVfcGMsCiAtICBkd2FyZl9leHByX3Rsc19hZGRy ZXNzLAogLSAgZHdhcmZfZXhwcl9kd2FyZl9jYWxsLAotLSAgZHdhcmZfZXhwcl9nZXRfYmFzZV90 eXBlCistICBkd2FyZl9leHByX2dldF9iYXNlX3R5cGUsCistICBkd2FyZl9leHByX3B1c2hfZHdh cmZfcmVnX2VudHJ5X3ZhbHVlCiAtfTsKIC0KICAvKiBFdmFsdWF0ZSBhIGxvY2F0aW9uIGRlc2Ny aXB0aW9uLCBzdGFydGluZyBhdCBEQVRBIGFuZCB3aXRoIGxlbmd0aAogICAgIFNJWkUsIHRvIGZp bmQgdGhlIGN1cnJlbnQgbG9jYXRpb24gb2YgdmFyaWFibGUgb2YgVFlQRSBpbiB0aGUKICAgICBj b250ZXh0IG9mIEZSQU1FLiAgQllURV9PRkZTRVQgaXMgYXBwbGllZCBhZnRlciB0aGUgY29udGVu dHMgYXJlCi1AQCAtMTEwOCwxMCArMTI2NSw4IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19m dWxsIChzdHJ1Y3QgdHkKK0BAIC0xOTU1LDcgKzIxMTcsNiBAQCBkd2FyZjJfZXZhbHVhdGVfbG9j X2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwK ICAJCQkgICAgICAgTE9OR0VTVCBieXRlX29mZnNldCkKICB7CiAgICBzdHJ1Y3QgdmFsdWUgKnJl dHZhbDsKIC0gIHN0cnVjdCBkd2FyZl9leHByX2JhdG9uIGJhdG9uOwogICAgc3RydWN0IGR3YXJm X2V4cHJfY29udGV4dCAqY3R4OwogICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiwgKnZhbHVl X2NoYWluOwotLSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUgPSBkd2FyZjJfcGVyX2N1X29iamZp bGUgKHBlcl9jdSk7Ci0gICB2b2xhdGlsZSBzdHJ1Y3QgZ2RiX2V4Y2VwdGlvbiBleDsKLSAKLSAg IGlmIChieXRlX29mZnNldCA8IDApCi1AQCAtMTEyMCwyOCArMTI3NSwxOCBAQCBkd2FyZjJfZXZh bHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5CisgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSA9IGR3YXJmMl9wZXJfY3Vfb2JqZmlsZSAocGVyX2N1KTsKK0BAIC0xOTY3LDI5ICsyMTI4LDE4 IEBAIGR3YXJmMl9ldmFsdWF0ZV9sb2NfZGVzY19mdWxsIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lLAogICAgaWYgKHNpemUgPT0gMCkKICAgICAgcmV0dXJuIGFs bG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHR5cGUpOwogIApAQCAtMTYyNyw2ICsxNTU3LDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiAgCiAtICBjdHgt PmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKIC0gIGN0eC0+YWRkcl9zaXpl ID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7CistICBjdHgtPnJlZl9hZGRyX3Np emUgPSBkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHBlcl9jdSk7CiAtICBjdHgtPm9mZnNl dCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7CiAtICBjdHgtPmJhdG9uID0g JmJhdG9uOwogLSAgY3R4LT5mdW5jcyA9ICZkd2FyZl9leHByX2N0eF9mdW5jczsKQEAgLTE2NDQs NyArMTU3NSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwog IAkgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlICh0eXBlKTsKICAJICBtYXJrX3ZhbHVlX2J5dGVz X3VuYXZhaWxhYmxlIChyZXR2YWwsIDAsIFRZUEVfTEVOR1RIICh0eXBlKSk7CiAgCSAgcmV0dXJu IHJldHZhbDsKLUBAIC0xMTk4LDYgKzEzNDMsMTYgQEAgZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNj X2Z1bGwgKHN0cnVjdCB0eQorQEAgLTIwNTMsNiArMjIwMywxNiBAQCBkd2FyZjJfZXZhbHVhdGVf bG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSwKICAJICAgIGludCBpbl9zdGFja19tZW1vcnkgPSBkd2FyZl9leHByX2ZldGNoX2luX3N0YWNr X21lbW9yeSAoY3R4LCAwKTsKICAKICAJICAgIGRvX2NsZWFudXBzICh2YWx1ZV9jaGFpbik7CkBA IC0xNjYxLDcgKzE1OTIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYy bG9jLmMKICAJICAgIHJldHZhbCA9IGFsbG9jYXRlX3ZhbHVlX2xhenkgKHR5cGUpOwogIAkgICAg VkFMVUVfTFZBTCAocmV0dmFsKSA9IGx2YWxfbWVtb3J5OwogIAkgICAgaWYgKGluX3N0YWNrX21l bW9yeSkKLUBAIC0yOTc0LDExICszMTI5LDUxIEBAIGxvY2xpc3RfdHJhY2Vwb2ludF92YXJfcmVm IChzdHJ1Y3Qgc3ltYm8KK0BAIC0zODk3LDggKzQwNTcsNyBAQCBsb2NsaXN0X3RyYWNlcG9pbnRf dmFyX3JlZiAoc3RydWN0IHN5bWJvbCAqc3ltYm9sLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK ICAJCQkgICAgICAgZGxiYXRvbi0+cGVyX2N1KTsKICB9CiAgCkBAIC0xNjcwLDExICsxNjAxLDEx IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJsb2MuYwogKy8qIFRoZSBz ZXQgb2YgbG9jYXRpb24gZnVuY3Rpb25zIHVzZWQgd2l0aCB0aGUgRFdBUkYtMiBsb2NhdGlvbiBs aXN0cy4gICovCiAgY29uc3Qgc3RydWN0IHN5bWJvbF9jb21wdXRlZF9vcHMgZHdhcmYyX2xvY2xp c3RfZnVuY3MgPSB7CiAgICBsb2NsaXN0X3JlYWRfdmFyaWFibGUsCi0gICBsb2NsaXN0X3JlYWRf bmVlZHNfZnJhbWUsCi0gICBsb2NsaXN0X2Rlc2NyaWJlX2xvY2F0aW9uLAorICAgbG9jbGlzdF9y ZWFkX3ZhcmlhYmxlX2F0X2VudHJ5LAorQEAgLTM5MDcsNiArNDA2Niw0OCBAQCBjb25zdCBzdHJ1 Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJfbG9jbGlzdF9mdW5jcyA9IHsKICAgIGxvY2xp c3RfdHJhY2Vwb2ludF92YXJfcmVmCiAgfTsKLSsKKyAKICtzdGF0aWMgc3RydWN0IHZhbHVlICoK ICttaXNzaW5nX3JlYWRfdmFyaWFibGUgKHN0cnVjdCBzeW1ib2wgKnN5bWJvbCwgc3RydWN0IGZy YW1lX2luZm8gKmZyYW1lKQogK3sKQEAgLTE3MTEsMTUgKzE2NDIsMjAgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5jCiArICAgdW5hYmxlIHRvIHJlc29sdmUgdGhl IHN5bWJvbHMuICAqLwogK2NvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9t aXNzaW5nX2Z1bmNzID0gewogKyAgbWlzc2luZ19yZWFkX3ZhcmlhYmxlLAorKyAgbWlzc2luZ19y ZWFkX3ZhcmlhYmxlLAkvKiByZWFkX3ZhcmlhYmxlX2F0X2VudHJ5ICovCiArICBtaXNzaW5nX3Jl YWRfbmVlZHNfZnJhbWUsCiArICBtaXNzaW5nX2Rlc2NyaWJlX2xvY2F0aW9uLAogKyAgbWlzc2lu Z190cmFjZXBvaW50X3Zhcl9yZWYKICt9OwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2R3YXJmMmxvYy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dk Yi9kd2FyZjJsb2MuaAkyMDExLTA1LTEyIDE5OjQwOjU0LjAwMDAwMDAwMCArMDIwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAw MDAwMDAwICswMjAwCi1AQCAtMTEwLDYgKzExMCwxNSBAQCBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3Rf YmF0b24KKysKKyB2b2lkCisgX2luaXRpYWxpemVfZHdhcmYybG9jICh2b2lkKQorIHsKK2RpZmYg LS1naXQgYS9nZGIvZHdhcmYybG9jLmggYi9nZGIvZHdhcmYybG9jLmgKK2luZGV4IDgxOTY3OTEu LmRmMjU3MGQgMTAwNjQ0CistLS0gYS9nZGIvZHdhcmYybG9jLmgKKysrKyBiL2dkYi9kd2FyZjJs b2MuaAorQEAgLTExOSw2ICsxMTksMTUgQEAgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uCiAg CiAgZXh0ZXJuIGNvbnN0IHN0cnVjdCBzeW1ib2xfY29tcHV0ZWRfb3BzIGR3YXJmMl9sb2NleHBy X2Z1bmNzOwogIGV4dGVybiBjb25zdCBzdHJ1Y3Qgc3ltYm9sX2NvbXB1dGVkX29wcyBkd2FyZjJf bG9jbGlzdF9mdW5jczsKQEAgLTE3MzUsMTEgKzE2NzEsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2R3YXJmMmxvYy5oCiAgCiAgLyogQ29tcGlsZSBhIERXQVJGIGxvY2F0aW9u IGV4cHJlc3Npb24gdG8gYW4gYWdlbnQgZXhwcmVzc2lvbi4KICAgICAKLUluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL2R3YXJmMnJlYWQuYwkyMDExLTA3LTI5IDIyOjUyOjAwLjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwkyMDEx LTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTEyNTEsNiArMTI1MSw5IEBAIHN0 YXRpYyB2b2lkIGZpbGxfaW5fbG9jbGlzdF9iYXRvbiAoc3RydWMKK2RpZmYgLS1naXQgYS9nZGIv ZHdhcmYycmVhZC5jIGIvZ2RiL2R3YXJmMnJlYWQuYworaW5kZXggODA3Mjg1OS4uOWFkYTVjNSAx MDA2NDQKKy0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKKysrKyBiL2dkYi9kd2FyZjJyZWFkLmMKK0BA IC0xMjUwLDYgKzEyNTAsOSBAQCBzdGF0aWMgdm9pZCBmaWxsX2luX2xvY2xpc3RfYmF0b24gKHN0 cnVjdCBkd2FyZjJfY3UgKmN1LAogIAkJCQkgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24g KmJhdG9uLAogIAkJCQkgICBzdHJ1Y3QgYXR0cmlidXRlICphdHRyKTsKICAKQEAgLTE3NDksNyAr MTY4NSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICBz dGF0aWMgdm9pZCBkd2FyZjJfc3ltYm9sX21hcmtfY29tcHV0ZWQgKHN0cnVjdCBhdHRyaWJ1dGUg KmF0dHIsCiAgCQkJCQkgc3RydWN0IHN5bWJvbCAqc3ltLAogIAkJCQkJIHN0cnVjdCBkd2FyZjJf Y3UgKmN1KTsKLUBAIC0xMjg1LDYgKzEyODgsOSBAQCBzdGF0aWMgdm9pZCBhZ2VfY2FjaGVkX2Nv bXBfdW5pdHMgKHZvaWQpCitAQCAtMTI4NCw2ICsxMjg3LDkgQEAgc3RhdGljIHZvaWQgYWdlX2Nh Y2hlZF9jb21wX3VuaXRzICh2b2lkKTsKICAKICBzdGF0aWMgdm9pZCBmcmVlX29uZV9jYWNoZWRf Y29tcF91bml0ICh2b2lkICopOwogIApAQCAtMTc1OSw3ICsxNjk1LDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIHN0YXRpYyBzdHJ1Y3QgdHlwZSAqc2V0 X2RpZV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICBzdHJ1 Y3QgZHdhcmYyX2N1ICopOwogIAotQEAgLTEzMDksNiArMTMxNSw5IEBAIHN0YXRpYyBzdHJ1Y3Qg dHlwZSAqZ2V0X2RpZV90eXBlX2F0X29mZnMKK0BAIC0xMzA3LDYgKzEzMTMsOSBAQCBzdGF0aWMg c3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZV9hdF9vZmZzZXQgKHVuc2lnbmVkIGludCwKICAKICBz dGF0aWMgc3RydWN0IHR5cGUgKmdldF9kaWVfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0 cnVjdCBkd2FyZjJfY3UgKmN1KTsKICAKQEAgLTE3NjgsOCArMTcwNCw4IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICsKICBzdGF0aWMgdm9pZCBkd2FyZjJf cmVsZWFzZV9xdWV1ZSAodm9pZCAqZHVtbXkpOwogIAotIHN0YXRpYyB2b2lkIHF1ZXVlX2NvbXBf dW5pdCAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1LAotQEAgLTc3ODUsNiArNzc5 NCwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1Y3QgZGllX2luCisgc3RhdGlj IHZvaWQgcXVldWVfY29tcF91bml0IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3Up OworQEAgLTgwODMsNiArODA5MiwyOSBAQCBwcm9jZXNzX2VudW1lcmF0aW9uX3Njb3BlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBuZXdfc3ltYm9sIChk aWUsIHRoaXNfdHlwZSwgY3UpOwogIH0KICAKQEAgLTE3OTksNyArMTczNSw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAvKiBFeHRyYWN0IGFsbCBpbmZv cm1hdGlvbiBmcm9tIGEgRFdfVEFHX2FycmF5X3R5cGUgRElFIGFuZCBwdXQgaXQgaW4KICAgICB0 aGUgRElFJ3MgdHlwZSBmaWVsZC4gIEZvciBub3csIHRoaXMgb25seSBoYW5kbGVzIG9uZSBkaW1l bnNpb25hbAogICAgIGFycmF5cy4gICovCi1AQCAtNzc5OCw3ICs3ODMwLDcgQEAgcmVhZF9hcnJh eV90eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcworQEAgLTgwOTYsNyArODEyOCw3IEBAIHJl YWRfYXJyYXlfdHlwZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1 KQogICAgc3RydWN0IHR5cGUgKmVsZW1lbnRfdHlwZSwgKnJhbmdlX3R5cGUsICppbmRleF90eXBl OwogICAgc3RydWN0IHR5cGUgKipyYW5nZV90eXBlcyA9IE5VTEw7CiAgICBzdHJ1Y3QgYXR0cmli dXRlICphdHRyOwpAQCAtMTgwOCw3ICsxNzQ0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogICAgc3RydWN0IGNsZWFudXAgKmJhY2tfdG87CiAgICBjaGFy ICpuYW1lOwogIAotQEAgLTc4NTEsMTcgKzc4ODMsMTkgQEAgcmVhZF9hcnJheV90eXBlIChzdHJ1 Y3QgZGllX2luZm8gKmRpZSwgcworQEAgLTgxNDksMTcgKzgxODEsMTkgQEAgcmVhZF9hcnJheV90 eXBlIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICB0eXBl ID0gZWxlbWVudF90eXBlOwogIAogICAgaWYgKHJlYWRfYXJyYXlfb3JkZXIgKGRpZSwgY3UpID09 IERXX09SRF9jb2xfbWFqb3IpCkBAIC0xODM5LDcgKzE3NzUsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCiAgCiAgICAvKiBVbmRlcnN0YW5kIER3YXJmMiBz dXBwb3J0IGZvciB2ZWN0b3IgdHlwZXMgKGxpa2UgdGhleSBvY2N1ciBvbgogICAgICAgdGhlIFBv d2VyUEMgdy8gQWx0aVZlYykuICBHY2MganVzdCBhZGRzIGFub3RoZXIgYXR0cmlidXRlIHRvIHRo ZQotQEAgLTgzNDUsMjkgKzgzNzksMTE0IEBAIHJlYWRfdGFnX3N0cmluZ190eXBlIChzdHJ1Y3Qg ZGllX2luZm8gKmQKK0BAIC04NjQzLDI5ICs4Njc3LDExNCBAQCByZWFkX3RhZ19zdHJpbmdfdHlw ZSAoc3RydWN0IGRpZV9pbmZvICpkaWUsIHN0cnVjdCBkd2FyZjJfY3UgKmN1KQogICAgc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKICAgIHN0cnVj dCB0eXBlICp0eXBlLCAqcmFuZ2VfdHlwZSwgKmluZGV4X3R5cGUsICpjaGFyX3R5cGU7CiAgICBz dHJ1Y3QgYXR0cmlidXRlICphdHRyOwpAQCAtMTk2Nyw3ICsxOTAzLDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogICAgY2hhcl90eXBlID0gbGFuZ3VhZ2Vf c3RyaW5nX2NoYXJfdHlwZSAoY3UtPmxhbmd1YWdlX2RlZm4sIGdkYmFyY2gpOwogICAgdHlwZSA9 IGNyZWF0ZV9zdHJpbmdfdHlwZSAoTlVMTCwgY2hhcl90eXBlLCByYW5nZV90eXBlKTsKICAKLUBA IC04NjU4LDggKzg3NzcsNyBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAq ZGllCitAQCAtODk2OSw4ICs5MDg4LDcgQEAgcmVhZF9zdWJyYW5nZV90eXBlIChzdHJ1Y3QgZGll X2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3QgdHlwZSAqYmFzZV90 eXBlOwogICAgc3RydWN0IHR5cGUgKnJhbmdlX3R5cGU7CiAgICBzdHJ1Y3QgYXR0cmlidXRlICph dHRyOwpAQCAtMTk3Nyw3ICsxOTEzLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2R3YXJmMnJlYWQuYwogICAgY2hhciAqbmFtZTsKICAgIExPTkdFU1QgbmVnYXRpdmVfbWFzazsK ICAKLUBAIC04NjcyLDUzICs4NzkwLDEyNiBAQCByZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBk aWVfaW5mbyAqZGllCitAQCAtODk4Myw1MyArOTEwMSwxMjYgQEAgcmVhZF9zdWJyYW5nZV90eXBl IChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBpZiAocmFu Z2VfdHlwZSkKICAgICAgcmV0dXJuIHJhbmdlX3R5cGU7CiAgCkBAIC0xOTg5LDQzICsxOTI1LDIz IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICsgIC8qIExP V19CT1VORCBhbmQgSElHSF9CT1VORCBhcmUgc2V0IGZvciByZWFsIGJlbG93LiAgKi8KICsgIHJh bmdlX3R5cGUgPSBjcmVhdGVfcmFuZ2VfdHlwZSAoTlVMTCwgYmFzZV90eXBlLCAwLCAtMSk7CiAr ICBUWVBFX1VOU0lHTkVEIChyYW5nZV90eXBlKSA9IDA7Ci0gCi0tICAvKiBGSVhNRTogRm9yIHZh cmlhYmxlIHNpemVkIGFycmF5cyBlaXRoZXIgb2YgdGhlc2UgY291bGQgYmUKLS0gICAgIGEgdmFy aWFibGUgcmF0aGVyIHRoYW4gYSBjb25zdGFudCB2YWx1ZS4gIFdlJ2xsIGFsbG93IGl0LAotLSAg ICAgYnV0IHdlIGRvbid0IGtub3cgaG93IHRvIGhhbmRsZSBpdC4gICovCi0tICBhdHRyID0gZHdh cmYyX2F0dHIgKGRpZSwgRFdfQVRfbG93ZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQotLSAg ICBsb3cgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDApOworKwogKyAg bmVnYXRpdmVfbWFzayA9IAogKyAgICAoTE9OR0VTVCkgLTEgPDwgKFRZUEVfTEVOR1RIIChiYXNl X3R5cGUpICogVEFSR0VUX0NIQVJfQklUIC0gMSk7Ci0gCi0tICBhdHRyID0gZHdhcmYyX2F0dHIg KGRpZSwgRFdfQVRfdXBwZXJfYm91bmQsIGN1KTsKLS0gIGlmIChhdHRyKQorKwogKyAgLyogRXhj bHVkZSBsYW5ndWFnZV9hZGEgZnJvbSBhbnkgVFlQRV9EWU5BTUlDIGNvbnN0cnVjdHMgYmVsb3cu ICBHREIgQWRhCiArICAgICBzdXBwb3J0cyBpbXBsZW1lbnRzIHRoZSBkeW5hbWljIGJvdW5kcyBp biBhIG5vbi1EV0FSRiB3YXkgYW5kIHRoZQogKyAgICAgZXhpc3RpbmcgRFdBUkYgZHluYW1pYyBi b3VuZHMgYXJlIGludmFsaWQsIGxlYWRpbmcgdG8gbWVtb3J5IGFjY2VzcwogKyAgICAgZXJyb3Jz LiAgKi8KLSsKLSsgIGF0dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9sb3dlcl9ib3VuZCwg Y3UpOworIAorLSAgLyogRklYTUU6IEZvciB2YXJpYWJsZSBzaXplZCBhcnJheXMgZWl0aGVyIG9m IHRoZXNlIGNvdWxkIGJlCistICAgICBhIHZhcmlhYmxlIHJhdGhlciB0aGFuIGEgY29uc3RhbnQg dmFsdWUuICBXZSdsbCBhbGxvdyBpdCwKKy0gICAgIGJ1dCB3ZSBkb24ndCBrbm93IGhvdyB0byBo YW5kbGUgaXQuICAqLworICAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX2xvd2VyX2Jv dW5kLCBjdSk7CistICBpZiAoYXR0cikKKy0gICAgbG93ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0 YW50X3ZhbHVlIChhdHRyLCAwKTsKICsgIGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAo YXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1YWdlX2FkYSkKLSAgICAgewotLSAgICAgIGlm IChhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpIHx8IGlzX3JlZl9hdHRyIChhdHRyKSkKLS0gICAg ICAgIHsKLS0gICAgICAgICAgLyogR0NDIGVuY29kZXMgYXJyYXlzIHdpdGggdW5zcGVjaWZpZWQg b3IgZHluYW1pYyBsZW5ndGgKLS0gICAgICAgICAgICAgd2l0aCBhIERXX0ZPUk1fYmxvY2sxIGF0 dHJpYnV0ZSBvciBhIHJlZmVyZW5jZSBhdHRyaWJ1dGUuCi0tICAgICAgICAgICAgIEZJWE1FOiBH REIgZG9lcyBub3QgeWV0IGtub3cgaG93IHRvIGhhbmRsZSBkeW5hbWljCi0tICAgICAgICAgICAg IGFycmF5cyBwcm9wZXJseSwgdHJlYXQgdGhlbSBhcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZAot LSAgICAgICAgICAgICBsZW5ndGggZm9yIG5vdy4KLS0KLS0gICAgICAgICAgICAgRklYTUU6IGpp bWIvMjAwMy0wOS0yMjogR0RCIGRvZXMgbm90IHJlYWxseSBrbm93Ci0tICAgICAgICAgICAgIGhv dyB0byBoYW5kbGUgYXJyYXlzIG9mIHVuc3BlY2lmaWVkIGxlbmd0aAotLSAgICAgICAgICAgICBl aXRoZXI7IHdlIGp1c3QgcmVwcmVzZW50IHRoZW0gYXMgemVyby1sZW5ndGgKLS0gICAgICAgICAg ICAgYXJyYXlzLiAgQ2hvb3NlIGFuIGFwcHJvcHJpYXRlIHVwcGVyIGJvdW5kIGdpdmVuCi0tICAg ICAgICAgICAgIHRoZSBsb3dlciBib3VuZCB3ZSd2ZSBjb21wdXRlZCBhYm92ZS4gICovCi0tICAg ICAgICAgIGhpZ2ggPSBsb3cgLSAxOwotLSAgICAgICAgfQotLSAgICAgIGVsc2UKLS0gICAgICAg IGhpZ2ggPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOworKyAgICB7 CiArICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+bG93LmtpbmQgPSBSQU5HRV9C T1VORF9LSU5EX0RXQVJGX0JMT0NLOwogKyAgICAgIFRZUEVfUkFOR0VfREFUQSAocmFuZ2VfdHlw ZSktPmxvdy51LmR3YXJmX2Jsb2NrID0KICsJCQkJCWR3YXJmMl9hdHRyX3RvX2xvY2V4cHJfYmF0 b24gKGF0dHIsIGN1KTsKQEAgLTIwMzgsNyArMTk1NCw5IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICsgICAgICBzdHJ1Y3QgZGllX2luZm8gKnRhcmdldF9k aWU7CiArICAgICAgc3RydWN0IGR3YXJmMl9jdSAqdGFyZ2V0X2N1ID0gY3U7CiArICAgICAgc3Ry dWN0IGF0dHJpYnV0ZSAqdGFyZ2V0X2xvY19hdHRyOwotKworIAorLSAgYXR0ciA9IGR3YXJmMl9h dHRyIChkaWUsIERXX0FUX3VwcGVyX2JvdW5kLCBjdSk7CistICBpZiAoYXR0cikKICsgICAgICB0 YXJnZXRfZGllID0gZm9sbG93X2RpZV9yZWZfb3Jfc2lnIChkaWUsIGF0dHIsICZ0YXJnZXRfY3Up OwogKyAgICAgIGdkYl9hc3NlcnQgKHRhcmdldF9jdS0+b2JqZmlsZSA9PSBjdS0+b2JqZmlsZSk7 CiArICAgICAgdGFyZ2V0X2xvY19hdHRyID0gZHdhcmYyX2F0dHIgKHRhcmdldF9kaWUsIERXX0FU X2xvY2F0aW9uLCB0YXJnZXRfY3UpOwpAQCAtMjA1MSwxNyArMTk2OSwyOSBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCiArICAgICAgVFlQRV9EWU5BTUlDIChy YW5nZV90eXBlKSA9IDE7CiArICAgICAgLyogRm9yIHNldHRpbmcgYSBkZWZhdWx0IGlmIERXX0FU X1VQUEVSX0JPVU5EIHdvdWxkIGJlIG1pc3NpbmcuICAqLwogKyAgICAgIGxvdyA9IDA7Ci0gICAg IH0KLSAgIGVsc2UKKysgICAgfQorKyAgZWxzZQogICAgICB7Ci0tICAgICAgYXR0ciA9IGR3YXJm Ml9hdHRyIChkaWUsIERXX0FUX2NvdW50LCBjdSk7Ci0tICAgICAgaWYgKGF0dHIpCi0rICAgICAg aWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkKLSsJbG93ID0gZHdhcmYy X2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAwKTsKLSsgICAgICBlbHNlCi0gCXsKLS0J ICBpbnQgY291bnQgPSBkd2FyZjJfZ2V0X2F0dHJfY29uc3RhbnRfdmFsdWUgKGF0dHIsIDEpOwot LQkgIGhpZ2ggPSBsb3cgKyBjb3VudCAtIDE7CistICAgICAgaWYgKGF0dHJfZm9ybV9pc19ibG9j ayAoYXR0cikgfHwgaXNfcmVmX2F0dHIgKGF0dHIpKQorLSAgICAgICAgeworLSAgICAgICAgICAv KiBHQ0MgZW5jb2RlcyBhcnJheXMgd2l0aCB1bnNwZWNpZmllZCBvciBkeW5hbWljIGxlbmd0aAor LSAgICAgICAgICAgICB3aXRoIGEgRFdfRk9STV9ibG9jazEgYXR0cmlidXRlIG9yIGEgcmVmZXJl bmNlIGF0dHJpYnV0ZS4KKy0gICAgICAgICAgICAgRklYTUU6IEdEQiBkb2VzIG5vdCB5ZXQga25v dyBob3cgdG8gaGFuZGxlIGR5bmFtaWMKKy0gICAgICAgICAgICAgYXJyYXlzIHByb3Blcmx5LCB0 cmVhdCB0aGVtIGFzIGFycmF5cyB3aXRoIHVuc3BlY2lmaWVkCistICAgICAgICAgICAgIGxlbmd0 aCBmb3Igbm93LgorLQorLSAgICAgICAgICAgICBGSVhNRTogamltYi8yMDAzLTA5LTIyOiBHREIg ZG9lcyBub3QgcmVhbGx5IGtub3cKKy0gICAgICAgICAgICAgaG93IHRvIGhhbmRsZSBhcnJheXMg b2YgdW5zcGVjaWZpZWQgbGVuZ3RoCistICAgICAgICAgICAgIGVpdGhlcjsgd2UganVzdCByZXBy ZXNlbnQgdGhlbSBhcyB6ZXJvLWxlbmd0aAorLSAgICAgICAgICAgICBhcnJheXMuICBDaG9vc2Ug YW4gYXBwcm9wcmlhdGUgdXBwZXIgYm91bmQgZ2l2ZW4KKy0gICAgICAgICAgICAgdGhlIGxvd2Vy IGJvdW5kIHdlJ3ZlIGNvbXB1dGVkIGFib3ZlLiAgKi8KKy0gICAgICAgICAgaGlnaCA9IGxvdyAt IDE7CistICAgICAgICB9CisrICAgICAgaWYgKGF0dHIgJiYgYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChhdHRyKSkKKysJbG93ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChhdHRyLCAw KTsKKyAgICAgICBlbHNlCistICAgICAgICBoaWdoID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50 X3ZhbHVlIChhdHRyLCAxKTsKKysJewogKwkgIGlmIChjdS0+bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2Vf Zm9ydHJhbikKICsJICAgIHsKICsJICAgICAgLyogRk9SVFJBTiBpbXBsaWVzIGEgbG93ZXIgYm91 bmQgb2YgMSwgaWYgbm90IGdpdmVuLiAgKi8KQEAgLTIwNzMsMjUgKzIwMDMsMzAgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogKwkJIExBTkdVQUdFX0MgYW5k IExBTkdVQUdFX0NQTFVTLiAgKi8KICsJICAgICAgbG93ID0gMDsKICsJICAgIH0KLSAJfQorKwl9 CiArICAgICAgaWYgKCFUWVBFX1VOU0lHTkVEIChiYXNlX3R5cGUpICYmIChsb3cgJiBuZWdhdGl2 ZV9tYXNrKSkKICsJbG93IHw9IG5lZ2F0aXZlX21hc2s7CiArICAgICAgVFlQRV9MT1dfQk9VTkQg KHJhbmdlX3R5cGUpID0gbG93OwogKyAgICAgIGlmIChsb3cgPj0gMCkKICsJVFlQRV9VTlNJR05F RCAocmFuZ2VfdHlwZSkgPSAxOwotKyAgICB9CisgICAgIH0KKy0gIGVsc2UKICsKICsgIGF0dHIg PSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF91cHBlcl9ib3VuZCwgY3UpOwogKyAgaWYgKCFhdHRy IHx8ICghYXR0cl9mb3JtX2lzX2Jsb2NrIChhdHRyKSAmJiAhYXR0cl9mb3JtX2lzX2NvbnN0YW50 IChhdHRyKQogKwkJJiYgIWlzX3JlZl9hdHRyIChhdHRyKSkpCi0rICAgIHsKLSsgICAgICBhdHRy ID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfY291bnQsIGN1KTsKKyAgICAgeworICAgICAgIGF0 dHIgPSBkd2FyZjJfYXR0ciAoZGllLCBEV19BVF9jb3VudCwgY3UpOworLSAgICAgIGlmIChhdHRy KQorLQl7CistCSAgaW50IGNvdW50ID0gZHdhcmYyX2dldF9hdHRyX2NvbnN0YW50X3ZhbHVlIChh dHRyLCAxKTsKKy0JICBoaWdoID0gbG93ICsgY291bnQgLSAxOwogKyAgICAgIC8qIEl0IGRvZXMg bm90IGh1cnQgYnV0IGl0IGlzIG5lZWRsZXNzbHkgaW5lZmZlY3RpdmUgaW4gY2hlY2tfdHlwZWRl Zi4gICovCiArICAgICAgaWYgKGF0dHIgJiYgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgfHwg YXR0cl9mb3JtX2lzX2NvbnN0YW50IChhdHRyKSkpCiArICAgICAgCXsKICsJICBUWVBFX1JBTkdF X0hJR0hfQk9VTkRfSVNfQ09VTlQgKHJhbmdlX3R5cGUpID0gMTsKICsJICBUWVBFX0RZTkFNSUMg KHJhbmdlX3R5cGUpID0gMTsKLSsJfQorIAl9CiArICAgICAgLyogUGFzcyBpdCBub3cgYXMgdGhl IHJlZ3VsYXIgRFdfQVRfdXBwZXJfYm91bmQuICAqLwogKyAgICB9CiArCkBAIC0yMTM5LDcgKzIw NzQsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCiAgICAg IH0KICAKICAgIC8qIER3YXJmLTIgc3BlY2lmaWNhdGlvbnMgZXhwbGljaXRseSBhbGxvd3MgdG8g Y3JlYXRlIHN1YnJhbmdlIHR5cGVzCi1AQCAtODc1OSwyNCArODk1MCw0MSBAQCByZWFkX3N1YnJh bmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllCitAQCAtOTA3MCwyNCArOTI2MSw0MSBAQCBy ZWFkX3N1YnJhbmdlX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1Y3QgZHdhcmYyX2N1 ICpjdSkKICAJfQogICAgICB9CiAgCkBAIC0yMTUxLDE2ICsyMDg2LDYgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogLSAgICBoaWdoIHw9IG5lZ2F0aXZlX21h c2s7CiAtCiAtICByYW5nZV90eXBlID0gY3JlYXRlX3JhbmdlX3R5cGUgKE5VTEwsIGJhc2VfdHlw ZSwgbG93LCBoaWdoKTsKLS0KLS0gIC8qIE1hcmsgYXJyYXlzIHdpdGggZHluYW1pYyBsZW5ndGgg YXQgbGVhc3QgYXMgYW4gYXJyYXkgb2YgdW5zcGVjaWZpZWQKLS0gICAgIGxlbmd0aC4gIEdEQiBj b3VsZCBjaGVjayB0aGUgYm91bmRhcnkgYnV0IGJlZm9yZSBpdCBnZXRzIGltcGxlbWVudGVkIGF0 Ci0tICAgICBsZWFzdCBhbGxvdyBhY2Nlc3NpbmcgdGhlIGFycmF5IGVsZW1lbnRzLiAgKi8KLS0g IGlmIChhdHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpCi0tICAgIFRZUEVfSElHSF9C T1VORF9VTkRFRklORUQgKHJhbmdlX3R5cGUpID0gMTsKLS0KLS0gIC8qIEFkYSBleHBlY3RzIGFu IGVtcHR5IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLwotLSAgaWYgKGF0dHIg PT0gTlVMTCAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQotLSAgICBUWVBFX0hJR0hf Qk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CiArICAvKiBEV19BVF9iaXRfc3RyaWRl IGlzIGN1cnJlbnRseSB1bnN1cHBvcnRlZCBhcyB3ZSBjb3VudCBpbiBieXRlcy4gICovCiArICBh dHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfYnl0ZV9zdHJpZGUsIGN1KTsKICsgIGlmIChh dHRyICYmIGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikgJiYgY3UtPmxhbmd1YWdlICE9IGxhbmd1 YWdlX2FkYSkKQEAgLTIxNzYsMTEgKzIxMDEsMTkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2R3YXJmMnJlYWQuYwogKyAgICAgIHN0cnVjdCBkaWVfaW5mbyAqdGFyZ2V0X2RpZTsK ICsgICAgICBzdHJ1Y3QgZHdhcmYyX2N1ICp0YXJnZXRfY3UgPSBjdTsKICsgICAgICBzdHJ1Y3Qg YXR0cmlidXRlICp0YXJnZXRfbG9jX2F0dHI7Ci0rCisgCistICAvKiBNYXJrIGFycmF5cyB3aXRo IGR5bmFtaWMgbGVuZ3RoIGF0IGxlYXN0IGFzIGFuIGFycmF5IG9mIHVuc3BlY2lmaWVkCistICAg ICBsZW5ndGguICBHREIgY291bGQgY2hlY2sgdGhlIGJvdW5kYXJ5IGJ1dCBiZWZvcmUgaXQgZ2V0 cyBpbXBsZW1lbnRlZCBhdAorLSAgICAgbGVhc3QgYWxsb3cgYWNjZXNzaW5nIHRoZSBhcnJheSBl bGVtZW50cy4gICovCistICBpZiAoYXR0ciAmJiBhdHRyX2Zvcm1faXNfYmxvY2sgKGF0dHIpKQor LSAgICBUWVBFX0hJR0hfQk9VTkRfVU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CiArICAgICAg dGFyZ2V0X2RpZSA9IGZvbGxvd19kaWVfcmVmX29yX3NpZyAoZGllLCBhdHRyLCAmdGFyZ2V0X2N1 KTsKICsgICAgICBnZGJfYXNzZXJ0ICh0YXJnZXRfY3UtPm9iamZpbGUgPT0gY3UtPm9iamZpbGUp OwogKyAgICAgIHRhcmdldF9sb2NfYXR0ciA9IGR3YXJmMl9hdHRyICh0YXJnZXRfZGllLCBEV19B VF9sb2NhdGlvbiwgdGFyZ2V0X2N1KTsKLSsKKyAKKy0gIC8qIEFkYSBleHBlY3RzIGFuIGVtcHR5 IGFycmF5IG9uIG5vIGJvdW5kYXJ5IGF0dHJpYnV0ZXMuICAqLworLSAgaWYgKGF0dHIgPT0gTlVM TCAmJiBjdS0+bGFuZ3VhZ2UgIT0gbGFuZ3VhZ2VfYWRhKQorLSAgICBUWVBFX0hJR0hfQk9VTkRf VU5ERUZJTkVEIChyYW5nZV90eXBlKSA9IDE7CiArICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5n ZV90eXBlKS0+Ynl0ZV9zdHJpZGUua2luZAogKyAgICAgICAgPSBSQU5HRV9CT1VORF9LSU5EX0RX QVJGX0xPQ0xJU1Q7CiArICAgICAgVFlQRV9SQU5HRV9EQVRBIChyYW5nZV90eXBlKS0+Ynl0ZV9z dHJpZGUudS5kd2FyZl9sb2NsaXN0LmxvY2xpc3QKQEAgLTIxOTksNyArMjEzMiw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAKICAgIG5hbWUgPSBkd2Fy ZjJfbmFtZSAoZGllLCBjdSk7CiAgICBpZiAobmFtZSkKLUBAIC0xMTMzMywxMCArMTE1NDEsMTIg QEAgdmFyX2RlY29kZV9sb2NhdGlvbiAoc3RydWN0IGF0dHJpYnV0ZSAqYQorQEAgLTExNjEwLDEw ICsxMTgxOCwxMiBAQCB2YXJfZGVjb2RlX2xvY2F0aW9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRy LCBzdHJ1Y3Qgc3ltYm9sICpzeW0sCiAgICAgICAoaS5lLiB3aGVuIHRoZSB2YWx1ZSBvZiBhIHJl Z2lzdGVyIG9yIG1lbW9yeSBsb2NhdGlvbiBpcwogICAgICAgcmVmZXJlbmNlZCwgb3IgYSB0aHJl YWQtbG9jYWwgYmxvY2ssIGV0Yy4pLiAgVGhlbiBhZ2FpbiwgaXQgbWlnaHQKICAgICAgIG5vdCBi ZSB3b3J0aHdoaWxlLiAgSSdtIGFzc3VtaW5nIHRoYXQgaXQgaXNuJ3QgdW5sZXNzIHBlcmZvcm1h bmNlCkBAIC0yMjE0LDcgKzIxNDcsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv ZHdhcmYycmVhZC5jCiAgCiAgICBpZiAoU1lNQk9MX0NPTVBVVEVEX09QUyAoc3ltKSA9PSAmZHdh cmYyX2xvY2xpc3RfZnVuY3MpCiAgICAgIGN1LT5oYXNfbG9jbGlzdCA9IDE7Ci1AQCAtMTEzNzcs NiArMTE1ODcsOCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzCitA QCAtMTE2NTQsNiArMTE4NjQsOCBAQCBuZXdfc3ltYm9sX2Z1bGwgKHN0cnVjdCBkaWVfaW5mbyAq ZGllLCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICAgICAgZWxz ZQogIAlzeW0gPSBPQlNUQUNLX1pBTExPQyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywgc3Ry dWN0IHN5bWJvbCk7CiAgICAgICAgT0JKU1RBVCAob2JqZmlsZSwgbl9zeW1zKyspOwpAQCAtMjIy Myw3ICsyMTU2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQu YwogIAogICAgICAgIC8qIENhY2hlIHRoaXMgc3ltYm9sJ3MgbmFtZSBhbmQgdGhlIG5hbWUncyBk ZW1hbmdsZWQgZm9ybSAoaWYgYW55KS4gICovCiAgICAgICAgU1lNQk9MX1NFVF9MQU5HVUFHRSAo c3ltLCBjdS0+bGFuZ3VhZ2UpOwotQEAgLTEyMTQ5LDYgKzEyMzYxLDkgQEAgcmVhZF90eXBlX2Rp ZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgcworQEAgLTEyNDE5LDYgKzEyNjMxLDkgQEAgcmVh ZF90eXBlX2RpZV8xIChzdHJ1Y3QgZGllX2luZm8gKmRpZSwgc3RydWN0IGR3YXJmMl9jdSAqY3Up CiAgICAgICAgYnJlYWs7CiAgICAgIH0KICAKQEAgLTIyMzMsNyArMjE2Niw3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICAgIHJldHVybiB0aGlzX3R5cGU7 CiAgfQogIAotQEAgLTE1MzI0LDYxICsxNTUzOSw5OSBAQCBmaWxsX2luX2xvY2xpc3RfYmF0b24g KHN0cnVjdCBkd2FyZjJfY3UKK0BAIC0xNTY1Myw2MiArMTU4NjgsMTAwIEBAIGZpbGxfaW5fbG9j bGlzdF9iYXRvbiAoc3RydWN0IGR3YXJmMl9jdSAqY3UsCiAgICBiYXRvbi0+YmFzZV9hZGRyZXNz ID0gY3UtPmJhc2VfYWRkcmVzczsKICB9CiAgCkBAIC0yMjQ2LDI5ICsyMTc5LDI1IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9kd2FyZjJyZWFkLmMKICtzdGF0aWMgc3RydWN0IGR3 YXJmMl9sb2NleHByX2JhdG9uICoKICtkd2FyZjJfYXR0cl90b19sb2NleHByX2JhdG9uIChzdHJ1 Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3QgZHdhcmYyX2N1ICpjdSkKICB7CisgICBzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSA9IGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZTsKKysgIHN0cnVj dCBkd2FyZjJfbG9jZXhwcl9iYXRvbiAqYmF0b247CisgCiAtICBpZiAoYXR0cl9mb3JtX2lzX3Nl Y3Rpb25fb2Zmc2V0IChhdHRyKQogLSAgICAgIC8qICIuZGVidWdfbG9jIiBtYXkgbm90IGV4aXN0 IGF0IGFsbCwgb3IgdGhlIG9mZnNldCBtYXkgYmUgb3V0c2lkZQogLQkgdGhlIHNlY3Rpb24uICBJ ZiBzbywgZmFsbCB0aHJvdWdoIHRvIHRoZSBjb21wbGFpbnQgaW4gdGhlCiAtCSBvdGhlciBicmFu Y2guICAqLwotLSAgICAgICYmIERXX1VOU05EIChhdHRyKSA8IGR3YXJmMl9zZWN0aW9uX3NpemUg KGR3YXJmMl9wZXJfb2JqZmlsZS0+b2JqZmlsZSwKKy0gICAgICAmJiBEV19VTlNORCAoYXR0cikg PCBkd2FyZjJfc2VjdGlvbl9zaXplIChvYmpmaWxlLAogLQkJCQkJCSZkd2FyZjJfcGVyX29iamZp bGUtPmxvYykpCiAtICAgIHsKIC0gICAgICBzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24gKmJh dG9uOwotKyAgc3RydWN0IGR3YXJmMl9sb2NleHByX2JhdG9uICpiYXRvbjsKLSAKLS0gICAgICBi YXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZjdS0+b2JqZmlsZS0+b2JqZmlsZV9vYnN0YWNrLAotLQkJ CSAgICAgc2l6ZW9mIChzdHJ1Y3QgZHdhcmYyX2xvY2xpc3RfYmF0b24pKTsKICsgIGdkYl9hc3Nl cnQgKGF0dHJfZm9ybV9pc19ibG9jayAoYXR0cikpOwotIAotLSAgICAgIGZpbGxfaW5fbG9jbGlz dF9iYXRvbiAoY3UsIGJhdG9uLCBhdHRyKTsKLSsgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJmN1 LT5vYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmJhdG9uKSk7CisrCisrICBiYXRv biA9IG9ic3RhY2tfYWxsb2MgKCZvYmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssIHNpemVvZiAoKmJh dG9uKSk7CiArICBiYXRvbi0+cGVyX2N1ID0gY3UtPnBlcl9jdTsKICsgIGdkYl9hc3NlcnQgKGJh dG9uLT5wZXJfY3UpOwogIAotLSAgICAgIGlmIChjdS0+YmFzZV9rbm93biA9PSAwKQotLQljb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0tCQkgICBfKCJMb2NhdGlvbiBsaXN0IHVzZWQg d2l0aG91dCAiCi0tCQkgICAgICJzcGVjaWZ5aW5nIHRoZSBDVSBiYXNlIGFkZHJlc3MuIikpOwor LSAgICAgIGJhdG9uID0gb2JzdGFja19hbGxvYyAoJm9iamZpbGUtPm9iamZpbGVfb2JzdGFjaywK Ky0JCQkgICAgIHNpemVvZiAoc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uKSk7CiArICAvKiBO b3RlIHRoYXQgd2UncmUganVzdCBjb3B5aW5nIHRoZSBibG9jaydzIGRhdGEgcG9pbnRlcgogKyAg ICAgaGVyZSwgbm90IHRoZSBhY3R1YWwgZGF0YS4gIFdlJ3JlIHN0aWxsIHBvaW50aW5nIGludG8g dGhlCiArICAgICBpbmZvX2J1ZmZlciBmb3IgU1lNJ3Mgb2JqZmlsZTsgcmlnaHQgbm93IHdlIG5l dmVyIHJlbGVhc2UKQEAgLTIyNzgsOSArMjIwNywxNCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvZHdhcmYycmVhZC5jCiArICBiYXRvbi0+ZGF0YSA9IERXX0JMT0NLIChhdHRyKS0+ ZGF0YTsKICsgIGdkYl9hc3NlcnQgKGJhdG9uLT5zaXplID09IDAgfHwgYmF0b24tPmRhdGEgIT0g TlVMTCk7CiAgCistICAgICAgZmlsbF9pbl9sb2NsaXN0X2JhdG9uIChjdSwgYmF0b24sIGF0dHIp OwogKyAgcmV0dXJuIGJhdG9uOwogK30KLSsKKyAKKy0gICAgICBpZiAoY3UtPmJhc2Vfa25vd24g PT0gMCkKKy0JY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorLQkJICAgXygiTG9jYXRp b24gbGlzdCB1c2VkIHdpdGhvdXQgIgorLQkJICAgICAic3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBh ZGRyZXNzLiIpKTsKICtzdGF0aWMgc3RydWN0IGR3YXJmMl9sb2NsaXN0X2JhdG9uICoKICtkd2Fy ZjJfYXR0cl90b19sb2NsaXN0X2JhdG9uIChzdHJ1Y3QgYXR0cmlidXRlICphdHRyLCBzdHJ1Y3Qg ZHdhcmYyX2N1ICpjdSkKICt7CkBAIC0yMzExLDcgKzIyNDUsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCiArICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29t cGxhaW50cywKICsJICAgICAgIF8oIkxvY2F0aW9uIGxpc3QgdXNlZCB3aXRob3V0ICIKICsJCSAi c3BlY2lmeWluZyB0aGUgQ1UgYmFzZSBhZGRyZXNzLiIpKTsKLSsKKyAKICsgIHJldHVybiBiYXRv bjsKICt9CiArCkBAIC0yMzQxLDcgKzIyNzUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZHdhcmYycmVhZC5jCiArICAgICAgZHdhcmYyX2ludmFsaWRfYXR0cmliX2NsYXNzX2Nv bXBsYWludCAoImxvY2F0aW9uIGRlc2NyaXB0aW9uIiwKICsJCQkJCSAgICAgU1lNQk9MX05BVFVS QUxfTkFNRSAoc3ltKSk7CiAgCi0tICAgICAgYmF0b24gPSBvYnN0YWNrX2FsbG9jICgmY3UtPm9i amZpbGUtPm9iamZpbGVfb2JzdGFjaywKKy0gICAgICBiYXRvbiA9IG9ic3RhY2tfYWxsb2MgKCZv YmpmaWxlLT5vYmpmaWxlX29ic3RhY2ssCiAtCQkJICAgICBzaXplb2YgKHN0cnVjdCBkd2FyZjJf bG9jZXhwcl9iYXRvbikpOwogLSAgICAgIGJhdG9uLT5wZXJfY3UgPSBjdS0+cGVyX2N1OwogLSAg ICAgIGdkYl9hc3NlcnQgKGJhdG9uLT5wZXJfY3UpOwpAQCAtMjM2Miw3ICsyMjk2LDYgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogLQkgIGR3YXJmMl9pbnZh bGlkX2F0dHJpYl9jbGFzc19jb21wbGFpbnQgKCJsb2NhdGlvbiBkZXNjcmlwdGlvbiIsCiAtCQkJ CQkJIFNZTUJPTF9OQVRVUkFMX05BTUUgKHN5bSkpOwogLQkgIGJhdG9uLT5zaXplID0gMDsKLS0J ICBiYXRvbi0+ZGF0YSA9IE5VTEw7CiAtCX0KICsgICAgICBTWU1CT0xfQ09NUFVURURfT1BTIChz eW0pID0gJmR3YXJmMl9taXNzaW5nX2Z1bmNzOwogKyAgICAgIFNZTUJPTF9MT0NBVElPTl9CQVRP TiAoc3ltKSA9IE5VTEw7CkBAIC0yMzc2LDcgKzIzMDksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvZHdhcmYycmVhZC5jCiAgICAgIH0KICB9CiAgCi1AQCAtMTU3MjcsNiArMTU5 ODAsMjUgQEAgb2Zmc2V0X2FuZF90eXBlX2VxIChjb25zdCB2b2lkICppdGVtX2xocworQEAgLTE2 MDgwLDYgKzE2MzMzLDI1IEBAIG9mZnNldF9hbmRfdHlwZV9lcSAoY29uc3Qgdm9pZCAqaXRlbV9s aHMsIGNvbnN0IHZvaWQgKml0ZW1fcmhzKQogICAgcmV0dXJuIG9mc19saHMtPm9mZnNldCA9PSBv ZnNfcmhzLT5vZmZzZXQ7CiAgfQogIApAQCAtMjQwMiw3ICsyMzM1LDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2R3YXJmMnJlYWQuYwogIC8qIFNldCB0aGUgdHlwZSBhc3NvY2lh dGVkIHdpdGggRElFIHRvIFRZUEUuICBTYXZlIGl0IGluIENVJ3MgaGFzaAogICAgIHRhYmxlIGlm IG5lY2Vzc2FyeS4gIEZvciBjb252ZW5pZW5jZSwgcmV0dXJuIFRZUEUuCiAgCi1AQCAtMTU3NTIs NiArMTYwMjQsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGllLCBzdHJ1CitA QCAtMTYxMDUsNiArMTYzNzcsOCBAQCBzZXRfZGllX3R5cGUgKHN0cnVjdCBkaWVfaW5mbyAqZGll LCBzdHJ1Y3QgdHlwZSAqdHlwZSwgc3RydWN0IGR3YXJmMl9jdSAqY3UpCiAgICBzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSA9IGN1LT5vYmpmaWxlOwogICAgaHRhYl90ICp0eXBlX2hhc2hfcHRyOwog IApAQCAtMjQxMSwxMCArMjM0NCwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv ZHdhcmYycmVhZC5jCiAgICAvKiBGb3IgQWRhIHR5cGVzLCBtYWtlIHN1cmUgdGhhdCB0aGUgZ25h dC1zcGVjaWZpYyBkYXRhIGlzIGFsd2F5cwogICAgICAgaW5pdGlhbGl6ZWQgKGlmIG5vdCBhbHJl YWR5IHNldCkuICBUaGVyZSBhcmUgYSBmZXcgdHlwZXMgd2hlcmUKICAgICAgIHdlIHNob3VsZCBu b3QgYmUgZG9pbmcgc28sIGJlY2F1c2UgdGhlIHR5cGUtc3BlY2lmaWMgYXJlYSBpcwotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwotPT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03 LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZWxmcmVhZC5jCTIwMTEtMDUtMjYgMDk6NDc6MTAuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2VsZnJlYWQu YyBiL2dkYi9lbGZyZWFkLmMKK2luZGV4IDRjZWIzMWIuLmJmZDZhYzIgMTAwNjQ0CistLS0gYS9n ZGIvZWxmcmVhZC5jCisrKysgYi9nZGIvZWxmcmVhZC5jCiBAQCAtMzgsNiArMzgsOCBAQAogICNp bmNsdWRlICJkZW1hbmdsZS5oIgogICNpbmNsdWRlICJwc3ltcHJpdi5oIgpAQCAtMjQyNCw3ICsy MzU3LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogICNpbmNs dWRlICJnZGJ0eXBlcy5oIgogICNpbmNsdWRlICJ2YWx1ZS5oIgogICNpbmNsdWRlICJpbmZjYWxs LmgiCi1AQCAtNjEsNiArNjMsMjEgQEAgc3RydWN0IGVsZmluZm8KK0BAIC02Miw2ICs2NCwyMSBA QCBzdHJ1Y3QgZWxmaW5mbwogICAgICBhc2VjdGlvbiAqbWRlYnVnc2VjdDsJLyogU2VjdGlvbiBw b2ludGVyIGZvciAubWRlYnVnIHNlY3Rpb24gKi8KICAgIH07CiAgCkBAIC0yNDQ2LDcgKzIzNzks NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiAgc3RhdGljIHZv aWQgZnJlZV9lbGZpbmZvICh2b2lkICopOwogIAogIC8qIE1pbmltYWwgc3ltYm9scyBsb2NhdGVk IGF0IHRoZSBHT1QgZW50cmllcyBmb3IgLnBsdCAtIHRoYXQgaXMgdGhlIHJlYWwKLUBAIC0xNTc0 LDcgKzE1OTEsMjY2IEBAIGVsZnN0YWJfb2Zmc2V0X3NlY3Rpb25zIChzdHJ1Y3Qgb2JqZmlsZQor QEAgLTE1NzgsNyArMTU5NSwyNzAgQEAgZWxmc3RhYl9vZmZzZXRfc2VjdGlvbnMgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLCBzdHJ1Y3QgcGFydGlhbF9zeW10YWIgKnBzdCkKICAgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAogIAkgICAgICAgXygiZWxmL3N0YWIgc2VjdGlvbiBp bmZvcm1hdGlvbiBtaXNzaW5nIGZvciAlcyIpLCBmaWxlbmFtZSk7CiAgfQpAQCAtMjQ3Miw2ICsy NDA1LDggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogKyAgc3Ry dWN0IHR5cGUgKnB0cl90eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl9kYXRh X3B0cjsKICsgIENPUkVfQUREUiBiYXNlX3JlZjsKICsKKysgIHJldC0+Z2RiYXJjaCA9IGdkYmFy Y2g7CisrCiArICAvKiBQcm92aWRlciBhbmQgdGhlIG5hbWUgb2YgdGhlIHByb2JlLiAgKi8KICsg IHJldC0+cHJvdmlkZXIgPSAoY29uc3QgY2hhciAqKSAmZWwtPmRhdGFbMyAqIHNpemVdOwogKyAg cmV0LT5uYW1lID0gbWVtY2hyIChyZXQtPnByb3ZpZGVyLCAnXDAnLApAQCAtMjUxMCwxMCArMjQ0 NSwxMiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiArCQkJICAo dW5zaWduZWQgbG9uZyAqKSBlbC0+ZGF0YQogKwkJCSAgKyBlbC0+c2l6ZSAtICh1bnNpZ25lZCBs b25nICopIHJldC0+bmFtZSk7CiArCi0rICAgICAgaWYgKHJldC0+YXJncysrICE9IE5VTEwKLSsJ ICB8fCBtZW1jaHIgKHJldC0+YXJncywgJ1wwJywgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEK LSsJCSAgICAgKyBlbC0+c2l6ZSAtICh1bnNpZ25lZCBsb25nICopIHJldC0+bmFtZSkKLSsJICAh PSBlbC0+ZGF0YSArIGVsLT5zaXplIC0gMSkKKysgICAgICBpZiAocmV0LT5hcmdzICE9IE5VTEwp CisrCSsrcmV0LT5hcmdzOworKyAgICAgIGlmIChyZXQtPmFyZ3MgPT0gTlVMTAorKwkgIHx8ICht ZW1jaHIgKHJldC0+YXJncywgJ1wwJywgKHVuc2lnbmVkIGxvbmcgKikgZWwtPmRhdGEKKysJCSAg ICAgICsgZWwtPnNpemUgLSAodW5zaWduZWQgbG9uZyAqKSByZXQtPm5hbWUpCisrCSAgICAgICE9 IGVsLT5kYXRhICsgZWwtPnNpemUgLSAxKSkKICsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFp bnRzLCBfKCJjb3JydXB0IHByb2JlIHdoZW4gcmVhZGluZyBgJXMnIiksCiArCQkgICBvYmpmaWxl LT5uYW1lKTsKICsgICAgfQpAQCAtMjU1Niw3ICsyNDkzLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2VsZnJlYWQuYwogKwogKy8qIEltcGxlbWVudGF0aW9uIG9mIGBzeW1fZ2V0 X3Byb2JlcycsIGFzIGRvY3VtZW50ZWQgaW4gc3ltZmlsZS5oLiAgKi8KICsKLStzdGF0aWMgY29u c3Qgc3RydWN0IHN0YXBfcHJvYmUgKgorK3N0YXRpYyBzdHJ1Y3Qgc3RhcF9wcm9iZSAqCiArZWxm X2dldF9wcm9iZXMgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCBpbnQgKm51bV9wcm9iZXMpCiAr ewogKyAgc3RydWN0IHN0YXBfcHJvYmUgKnJldCA9IE5VTEw7CkBAIC0yNjIzLDcgKzI1NjAsNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiArCiArc3RhdGljIGlu dAogK2VsZl9nZXRfcHJvYmVfYXJndW1lbnRfY291bnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxl LAotKwkJCSAgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSkKKysJCQkgICAgICBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpCiArewogKyAgY29uc3QgY2hhciAqcGFyZ3MgPSBwcm9i ZS0+YXJnczsKICsKQEAgLTI2MzksNyArMjU3Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9lbGZyZWFkLmMKICsKICtzdGF0aWMgc3RydWN0IHZhbHVlICoKICtlbGZfZXZhbHVh dGVfcHJvYmVfYXJndW1lbnQgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCSAgICAgY29u c3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAorKwkJCSAgICAgc3RydWN0IHN0YXBfcHJvYmUg KnByb2JlLAogKwkJCSAgICAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lLAogKwkJCSAgICAgaW50 IG4pCiArewpAQCAtMjY1MCw3ICsyNTg3LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL2VsZnJlYWQuYwogKwogK3N0YXRpYyB2b2lkCiArZWxmX2NvbXBpbGVfdG9fYXggKHN0cnVj dCBvYmpmaWxlICpvYmpmaWxlLAotKwkJICAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2Jl LAorKwkJICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJICAgc3RydWN0IGFnZW50X2V4 cHIgKmV4cHIsCiArCQkgICBzdHJ1Y3QgYXhzX3ZhbHVlICp2YWx1ZSwKICsJCSAgIGludCBuKQpA QCAtMjcxMyw3ICsyNjUwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2VsZnJl YWQuYwogIC8qIFJlZ2lzdGVyIHRoYXQgd2UgYXJlIGFibGUgdG8gaGFuZGxlIEVMRiBvYmplY3Qg ZmlsZSBmb3JtYXRzLiAgKi8KICAKICBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5 bV9mbnMgPQotQEAgLTE1ODksNiArMTg2NSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2Zu cyBlbGZfc3ltX2ZucworQEAgLTE1OTMsNiArMTg3Myw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg c3ltX2ZucyBlbGZfc3ltX2ZucyA9CiAgICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBz ZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0 X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0y NzIxLDcgKzI2NTgsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5j CiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotQEAgLTE2MDcsNiArMTg4NCw3IEBAIHN0YXRp YyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBlbGZfc3ltX2Zuc18KK0BAIC0xNjExLDYgKzE4OTIsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWxmX3N5bV9mbnNfbGF6eV9wc3ltcyA9CiAg ICBlbGZfc3ltZmlsZV9zZWdtZW50cywJCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20g YSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJl bG9jYXRlIGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC0yNzI5LDcgKzI2NjYsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZWxmcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9 OwogIAotQEAgLTE2MjQsNiArMTkwMiw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBl bGZfc3ltX2Zuc18KK0BAIC0xNjI4LDYgKzE5MTAsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5 bV9mbnMgZWxmX3N5bV9mbnNfZ2RiX2luZGV4ID0KICAgIGVsZl9zeW1maWxlX3NlZ21lbnRzLAkJ LyogR2V0IHNlZ21lbnQgaW5mb3JtYXRpb24gZnJvbSBhIGZpbGUuICAqLwogICAgTlVMTCwKICAg IGRlZmF1bHRfc3ltZmlsZV9yZWxvY2F0ZSwJLyogUmVsb2NhdGUgYSBkZWJ1ZyBzZWN0aW9uLiAg Ki8KQEAgLTI3MzcsNyArMjY3NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9l bGZyZWFkLmMKICAgICZkd2FyZjJfZ2RiX2luZGV4X2Z1bmN0aW9ucwogIH07CiAgCi1AQCAtMTY0 MCw2ICsxOTE5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBnbnVfaWZ1bmNfZm5zIGVsZl9nbgor QEAgLTE2NDQsNiArMTkyNyw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZ251X2lmdW5jX2ZucyBl bGZfZ251X2lmdW5jX2ZucyA9CiAgdm9pZAogIF9pbml0aWFsaXplX2VsZnJlYWQgKHZvaWQpCiAg ewpAQCAtMjc0NiwxMCArMjY4MywxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv ZWxmcmVhZC5jCiAgICBhZGRfc3ltdGFiX2ZucyAoJmVsZl9zeW1fZm5zKTsKICAKICAgIGVsZl9v YmpmaWxlX2dudV9pZnVuY19jYWNoZV9kYXRhID0gcmVnaXN0ZXJfb2JqZmlsZV9kYXRhICgpOwot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdk Yi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZXZhbC5jCTIwMTEtMDYtMTcgMjI6MzU6MDkuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCTIwMTEtMDct MjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2V2YWwuYyBiL2dk Yi9ldmFsLmMKK2luZGV4IDVkNzU4ZDEuLmI0YzE3OTkgMTAwNjQ0CistLS0gYS9nZGIvZXZhbC5j CisrKysgYi9nZGIvZXZhbC5jCiBAQCAtNDQsNiArNDQsNyBAQAogICNpbmNsdWRlICJvYmpmaWxl cy5oIgogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCkBAIC0yNzU4LDcgKzI2OTUsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCiAgI2luY2x1ZGUgImdkYl9h c3NlcnQuaCIKICAKLUBAIC00ODksMjcgKzQ5MCwyMTcgQEAgaW5pdF9hcnJheV9lbGVtZW50IChz dHJ1Y3QgdmFsdWUgKmFycmF5LAorQEAgLTQ4OSwyNyArNDkwLDIxNyBAQCBpbml0X2FycmF5X2Vs ZW1lbnQgKHN0cnVjdCB2YWx1ZSAqYXJyYXksIHN0cnVjdCB2YWx1ZSAqZWxlbWVudCwKICB9CiAg CiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0yNzczLDExICsyNzEwLDEyIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ldmFsLmMKIC0gIGVudW0gZjkwX3JhbmdlX3R5cGUgcmFu Z2VfdHlwZSA9IGxvbmdlc3RfdG9faW50IChleHAtPmVsdHNbcGNdLmxvbmdjb25zdCk7CiAtIAog LSAgKnBvcyArPSAzOwotKyAgLyogVHlwZSB0byB1c2UgZm9yIHRoZSBuZXdseSBhbGxvY2F0ZWQg dmFsdWUgQVJSQVkuICAqLwotKyAgc3RydWN0IHR5cGUgKm5ld19hcnJheV90eXBlOwotIAorLQog LSAgaWYgKHJhbmdlX3R5cGUgPT0gTE9XX0JPVU5EX0RFRkFVTFQgfHwgcmFuZ2VfdHlwZSA9PSBC T1RIX0JPVU5EX0RFRkFVTFQpCiAtICAgIGxvd19ib3VuZCA9IFRZUEVfTE9XX0JPVU5EIChyYW5n ZSk7CisrICAvKiBUeXBlIHRvIHVzZSBmb3IgdGhlIG5ld2x5IGFsbG9jYXRlZCB2YWx1ZSBBUlJB WS4gICovCisrICBzdHJ1Y3QgdHlwZSAqbmV3X2FycmF5X3R5cGU7CisrCiArICAvKiBUeXBlIGJl aW5nIGl0ZXJhdGVkIGZvciBlYWNoIGRpbWVuc2lvbi4gICovCiArICBzdHJ1Y3QgdHlwZSAqdHlw ZSwgKnR5cGVfbGFzdF90YXJnZXQ7CiArCkBAIC0yOTc0LDEzICsyOTEyLDEzIEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ldmFsLmMKICsgIFZBTFVFX0ZSQU1FX0lEIChhcnJheSkg PSBWQUxVRV9GUkFNRV9JRCAoc2F2ZWRfYXJyYXkpOwogKyAgaWYgKFZBTFVFX0xWQUwgKGFycmF5 KSAhPSBsdmFsX2ludGVybmFsdmFyKQogKyAgICBzZXRfdmFsdWVfYWRkcmVzcyAoYXJyYXksIHZh bHVlX2J5dGVfYWRkcmVzcyArIHZhbHVlX2J5dGVfb2Zmc2V0KTsKLSAKLS0gIHJldHVybiB2YWx1 ZV9zbGljZSAoYXJyYXksIGxvd19ib3VuZCwgaGlnaF9ib3VuZCAtIGxvd19ib3VuZCArIDEpOwor KwogKyAgaWYgKCF2YWx1ZV9sYXp5IChzYXZlZF9hcnJheSkpCiArICAgIHsKICsgICAgICBhbGxv Y2F0ZV92YWx1ZV9jb250ZW50cyAoYXJyYXkpOwogKyAgICAgIHNldF92YWx1ZV9sYXp5IChhcnJh eSwgMCk7Ci0rCisgCistICByZXR1cm4gdmFsdWVfc2xpY2UgKGFycmF5LCBsb3dfYm91bmQsIGhp Z2hfYm91bmQgLSBsb3dfYm91bmQgKyAxKTsKICsgICAgICBtZW1jcHkgKHZhbHVlX2NvbnRlbnRz X3dyaXRlYWJsZSAoYXJyYXkpLAogKwkgICAgICB2YWx1ZV9jb250ZW50cyAoc2F2ZWRfYXJyYXkp ICsgdmFsdWVfYnl0ZV9vZmZzZXQsCiArCSAgICAgIFRZUEVfTEVOR1RIIChuZXdfYXJyYXlfdHlw ZSkpOwpAQCAtMjk5MSw3ICsyOTI5LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2V2YWwuYwogIH0KICAKICAKLUBAIC03OTAsNiArOTgxLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAgLTc5MCw2ICs5ODEsNyBAQCBldmFsdWF0ZV9zdWJl eHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAgIGludCBzYXZlX3BvczE7 CiAgICBzdHJ1Y3Qgc3ltYm9sICpmdW5jdGlvbiA9IE5VTEw7CiAgICBjaGFyICpmdW5jdGlvbl9u YW1lID0gTlVMTDsKQEAgLTI5OTksNyArMjkzNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9ldmFsLmMKICAKICAgIHBjID0gKCpwb3MpKys7CiAgICBvcCA9IGV4cC0+ZWx0c1tw Y10ub3Bjb2RlOwotQEAgLTE4NjIsNiArMjA1NCw4IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFy ZCAoc3RydWN0IHR5cGUgKmUKK0BAIC0xODY1LDYgKzIwNTcsOCBAQCBldmFsdWF0ZV9zdWJleHBf c3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAKICAgICAgICAvKiBGaXJzdCBk ZXRlcm1pbmUgdGhlIHR5cGUgY29kZSB3ZSBhcmUgZGVhbGluZyB3aXRoLiAgKi8KICAgICAgICBh cmcxID0gZXZhbHVhdGVfc3ViZXhwIChOVUxMX1RZUEUsIGV4cCwgcG9zLCBub3NpZGUpOwpAQCAt MzAwOCw3ICsyOTQ2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2YWwuYwog ICAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CiAgICAgICAg Y29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCi1AQCAtMTg4MiwyMyArMjA3NiwxMyBAQCBldmFs dWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICplCitAQCAtMTg4NSwyMyArMjA3OSwx MyBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBlICpleHBlY3RfdHlwZSwK ICAJICAgICAgY29kZSA9IFRZUEVfQ09ERSAodHlwZSk7CiAgCSAgICB9CiAgCX0gCkBAIC0zMDM0 LDcgKzI5NzIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCiAg CWNhc2UgVFlQRV9DT0RFX1BUUjoKICAJY2FzZSBUWVBFX0NPREVfRlVOQzoKLUBAIC0yMzM3LDQ5 ICsyNTIxLDYgQEAgZXZhbHVhdGVfc3ViZXhwX3N0YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZQorQEAg LTIzNDAsNDkgKzI1MjQsNiBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICpleHBlY3RfdHlwZSwKICAJfQogICAgICAgIHJldHVybiAoYXJnMSk7CiAgCkBAIC0zMDg0LDcg KzMwMjIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgICAgIGNh c2UgQklOT1BfTE9HSUNBTF9BTkQ6CiAgICAgICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoTlVM TF9UWVBFLCBleHAsIHBvcywgbm9zaWRlKTsKICAgICAgICBpZiAobm9zaWRlID09IEVWQUxfU0tJ UCkKLUBAIC0yNjExLDE1ICsyNzUyLDIzIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAoc3Ry dWN0IHR5cGUgKmUKK0BAIC0yNjE0LDE1ICsyNzU1LDIzIEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFu ZGFyZCAoc3RydWN0IHR5cGUgKmV4cGVjdF90eXBlLAogICAgICAgIGlmIChleHBlY3RfdHlwZSAm JiBUWVBFX0NPREUgKGV4cGVjdF90eXBlKSA9PSBUWVBFX0NPREVfUFRSKQogIAlleHBlY3RfdHlw ZSA9IFRZUEVfVEFSR0VUX1RZUEUgKGNoZWNrX3R5cGVkZWYgKGV4cGVjdF90eXBlKSk7CiAgICAg ICAgYXJnMSA9IGV2YWx1YXRlX3N1YmV4cCAoZXhwZWN0X3R5cGUsIGV4cCwgcG9zLCBub3NpZGUp OwpAQCAtMzExMCw3ICszMDQ4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2 YWwuYwogICAgICAgIGVsc2UgaWYgKG5vc2lkZSA9PSBFVkFMX0FWT0lEX1NJREVfRUZGRUNUUykK ICAJewogIAkgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7Ci1AQCAt MjYyOCwxMiArMjc3NywxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0cnVjdCB0eXBl ICplCitAQCAtMjYzMSwxMiArMjc4MCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfc3RhbmRhcmQgKHN0 cnVjdCB0eXBlICpleHBlY3RfdHlwZSwKICAJICAvKiBJbiBDIHlvdSBjYW4gZGVyZWZlcmVuY2Ug YW4gYXJyYXkgdG8gZ2V0IHRoZSAxc3QgZWx0LiAgKi8KICAJICAgICAgfHwgVFlQRV9DT0RFICh0 eXBlKSA9PSBUWVBFX0NPREVfQVJSQVkKICAJICAgICkKQEAgLTMxMzQsNyArMzA3Miw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9ldmFsLmMKICAJICBlbHNlCiAgCSAgICBlcnJv ciAoXygiQXR0ZW1wdCB0byB0YWtlIGNvbnRlbnRzIG9mIGEgbm9uLXBvaW50ZXIgdmFsdWUuIikp OwogIAl9Ci1AQCAtMjY0Myw5ICsyNzk4LDE0IEBAIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAo c3RydWN0IHR5cGUgKmUKK0BAIC0yNjQ2LDkgKzI4MDEsMTQgQEAgZXZhbHVhdGVfc3ViZXhwX3N0 YW5kYXJkIChzdHJ1Y3QgdHlwZSAqZXhwZWN0X3R5cGUsCiAgCSBkby4gICJsb25nIGxvbmciIHZh cmlhYmxlcyBhcmUgcmFyZSBlbm91Z2ggdGhhdAogIAkgQlVJTFRJTl9UWVBFX0xPTkdFU1Qgd291 bGQgc2VlbSB0byBiZSBhIG1pc3Rha2UuICAqLwogICAgICAgIGlmIChUWVBFX0NPREUgKHR5cGUp ID09IFRZUEVfQ09ERV9JTlQpCkBAIC0zMTUyLDcgKzMwOTAsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCiAgICAgIGNhc2UgVU5PUF9BRERSOgogICAgICAgIC8q IEMrKzogY2hlY2sgZm9yIGFuZCBoYW5kbGUgcG9pbnRlciB0byBtZW1iZXJzLiAgKi8KLUBAIC0y OTg3LDcgKzMxNDcsNyBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAoc3RydWN0IGV4 CitAQCAtMjk5MCw3ICszMTUwLDcgQEAgZXZhbHVhdGVfc3ViZXhwX3dpdGhfY29lcmNpb24gKHN0 cnVjdCBleHByZXNzaW9uICpleHAsCiAgewogICAgZW51bSBleHBfb3Bjb2RlIG9wOwogICAgaW50 IHBjOwpAQCAtMzE2MSw3ICszMDk5LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L2V2YWwuYwogICAgc3RydWN0IHN5bWJvbCAqdmFyOwogICAgc3RydWN0IHR5cGUgKnR5cGU7CiAg Ci1AQCAtMjk5OCwxMyArMzE1OCwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9jb2VyY2lvbiAo c3RydWN0IGV4CitAQCAtMzAwMSwxMyArMzE2MSwxOCBAQCBldmFsdWF0ZV9zdWJleHBfd2l0aF9j b2VyY2lvbiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwKICAgICAgewogICAgICBjYXNlIE9QX1ZB Ul9WQUxVRToKICAgICAgICB2YXIgPSBleHAtPmVsdHNbcGMgKyAyXS5zeW1ib2w7CkBAIC0zMTgx LDcgKzMxMTksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZXZhbC5jCiAgCSAg cmV0dXJuIHZhbHVlX2Nhc3QgKGxvb2t1cF9wb2ludGVyX3R5cGUgKFRZUEVfVEFSR0VUX1RZUEUg KHR5cGUpKSwKICAJCQkgICAgIHZhbCk7CiAgCX0KLUBAIC0zMDU2LDkgKzMyMjEsMTMgQEAgZXZh bHVhdGVfc3ViZXhwX2Zvcl9zaXplb2YgKHN0cnVjdCBleHByZQorQEAgLTMwNTksOSArMzIyNCwx MyBAQCBldmFsdWF0ZV9zdWJleHBfZm9yX3NpemVvZiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwg aW50ICpwb3MpCiAgCiAgICAgIGNhc2UgT1BfVkFSX1ZBTFVFOgogICAgICAgICgqcG9zKSArPSA0 OwpAQCAtMzE5OCw3ICszMTM2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2V2 YWwuYwogIAogICAgICBkZWZhdWx0OgogICAgICAgIHZhbCA9IGV2YWx1YXRlX3N1YmV4cCAoTlVM TF9UWVBFLCBleHAsIHBvcywgRVZBTF9BVk9JRF9TSURFX0VGRkVDVFMpOwotQEAgLTMwODksMTgg KzMyNTgsMjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxlbmd0aAorQEAg LTMwOTIsMTggKzMyNjEsMjUgQEAgcGFyc2VfYW5kX2V2YWxfdHlwZSAoY2hhciAqcCwgaW50IGxl bmd0aCkKICBpbnQKICBjYWxjX2Y3N19hcnJheV9kaW1zIChzdHJ1Y3QgdHlwZSAqYXJyYXlfdHlw ZSkKICB7CkBAIC0zMjM0LDEwICszMTcyLDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9ldmFsLmMKIC0gIHJldHVybiBuZGltZW47CiArCiAgfQotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2YtZXhwLnkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL2YtZXhwLnkJMjAxMS0wNC0xOSAyMDowNDowNy4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWV4cC55CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAw MDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2YtZXhwLnkgYi9nZGIvZi1leHAueQoraW5k ZXggNzQ5MzdkNy4uMDkzZmZlMCAxMDA2NDQKKy0tLSBhL2dkYi9mLWV4cC55CisrKysgYi9nZGIv Zi1leHAueQogQEAgLTI5Myw3ICsyOTMsOSBAQCBhcmdsaXN0IDoJc3VicmFuZ2UKICAJCQl7IGFy Z2xpc3RfbGVuID0gMTsgfQogIAk7CkBAIC0zMjQ5LDExICszMTg3LDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9mLWV4cC55CiAgCQkJeyBhcmdsaXN0X2xlbisrOyB9CiAgCTsK ICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcuaAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi1sYW5nLmgJMjAxMS0wMS0wNyAyMDoz NjoxNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLWxhbmcu aAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI4LDYgKzI4LDEwIEBA IGV4dGVybiB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQKK2RpZmYgLS1naXQgYS9n ZGIvZi1sYW5nLmggYi9nZGIvZi1sYW5nLmgKK2luZGV4IDgwNDM1NzcuLjk0YTVmMzEgMTAwNjQ0 CistLS0gYS9nZGIvZi1sYW5nLmgKKysrKyBiL2dkYi9mLWxhbmcuaAorQEAgLTI4LDYgKzI4LDEw IEBAIGV4dGVybiB2b2lkIGZfZXJyb3IgKGNoYXIgKik7CS8qIERlZmluZWQgaW4gZi1leHAueSAq LwogIGV4dGVybiB2b2lkIGZfcHJpbnRfdHlwZSAoc3RydWN0IHR5cGUgKiwgY29uc3QgY2hhciAq LCBzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJICBpbnQpOwogIApAQCAtMzI2NCwxMCArMzIw MiwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi1sYW5nLmgKICBleHRlcm4g aW50IGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqLCBjb25zdCBnZGJfYnl0ZSAqLCBpbnQsIENP UkVfQUREUiwKICAJCQlzdHJ1Y3QgdWlfZmlsZSAqLCBpbnQsCiAgCQkJY29uc3Qgc3RydWN0IHZh bHVlICosCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi10eXBlcHJpbnQuYwotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvZi10eXBlcHJpbnQuYwky MDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL2YtdHlwZXByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAK K2RpZmYgLS1naXQgYS9nZGIvZi10eXBlcHJpbnQuYyBiL2dkYi9mLXR5cGVwcmludC5jCitpbmRl eCA2ZDllNmVjLi5jYzRjMDJhIDEwMDY0NAorLS0tIGEvZ2RiL2YtdHlwZXByaW50LmMKKysrKyBi L2dkYi9mLXR5cGVwcmludC5jCiBAQCAtMzIsNyArMzIsNyBAQAogICNpbmNsdWRlICJnZGJjb3Jl LmgiCiAgI2luY2x1ZGUgInRhcmdldC5oIgpAQCAtMzI3Nyw3ICszMjE1LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtdHlwZXByaW50LmMKICAjaW5jbHVkZSAiZ2RiX3N0cmlu Zy5oIgogICNpbmNsdWRlIDxlcnJuby5oPgogIAotQEAgLTQ5LDYgKzQ5LDM0IEBAIHZvaWQgZl90 eXBlX3ByaW50X3ZhcnNwZWNfcHJlZml4IChzdHJ1Y3QKK0BAIC00OSw2ICs0OSwzNCBAQCB2b2lk IGZfdHlwZV9wcmludF92YXJzcGVjX3ByZWZpeCAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHVpX2Zp bGUgKiwKICB2b2lkIGZfdHlwZV9wcmludF9iYXNlIChzdHJ1Y3QgdHlwZSAqLCBzdHJ1Y3QgdWlf ZmlsZSAqLCBpbnQsIGludCk7CiAgDAogIApAQCAtMzMxMiw3ICszMjUwLDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL2YtdHlwZXByaW50LmMKICAvKiBMRVZFTCBpcyB0aGUgZGVw dGggdG8gaW5kZW50IGxpbmVzIGJ5LiAgKi8KICAKICB2b2lkCi1AQCAtNTgsNiArODYsOSBAQCBm X3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjCitAQCAtNTgsNiArODYsOSBA QCBmX3ByaW50X3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBjaGFyICp2YXJzdHJpbmcs IHN0cnVjdCB1aV9maWxlICpzdHJlYW0sCiAgICBlbnVtIHR5cGVfY29kZSBjb2RlOwogICAgaW50 IGRlbWFuZ2xlZF9hcmdzOwogIApAQCAtMzMyMiw3ICszMjYwLDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2YtdHlwZXByaW50LmMKICAgIGZfdHlwZV9wcmludF9iYXNlICh0eXBl LCBzdHJlYW0sIHNob3csIGxldmVsKTsKICAgIGNvZGUgPSBUWVBFX0NPREUgKHR5cGUpOwogICAg aWYgKCh2YXJzdHJpbmcgIT0gTlVMTCAmJiAqdmFyc3RyaW5nICE9ICdcMCcpCi1AQCAtMTY1LDYg KzE5Niw5IEBAIGZfdHlwZV9wcmludF92YXJzcGVjX3N1ZmZpeCAoc3RydWN0IHR5cGUKK0BAIC0x NjUsNiArMTk2LDkgQEAgZl90eXBlX3ByaW50X3ZhcnNwZWNfc3VmZml4IChzdHJ1Y3QgdHlwZSAq dHlwZSwgc3RydWN0IHVpX2ZpbGUgKnN0cmVhbSwKICAKICAgIFFVSVQ7CiAgCkBAIC0zMzMyLDEx ICszMjcwLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9mLXR5cGVwcmludC5j CiAgICBzd2l0Y2ggKFRZUEVfQ09ERSAodHlwZSkpCiAgICAgIHsKICAgICAgY2FzZSBUWVBFX0NP REVfQVJSQVk6Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9mLXZhbHByaW50LmMJ MjAxMS0wNi0yOSAxNzozMjozOS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9mLXZhbHByaW50LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAK LUBAIC01NCwxNSArNTQsMTcgQEAgaW50IGY3N19hcnJheV9vZmZzZXRfdGJsW01BWF9GT1JUUkFO X0RJTQorZGlmZiAtLWdpdCBhL2dkYi9mLXZhbHByaW50LmMgYi9nZGIvZi12YWxwcmludC5jCitp bmRleCBiODAwZDg5Li4wZjYxNmUwIDEwMDY0NAorLS0tIGEvZ2RiL2YtdmFscHJpbnQuYworKysr IGIvZ2RiL2YtdmFscHJpbnQuYworQEAgLTU0LDE1ICs1NCwxNyBAQCBpbnQgZjc3X2FycmF5X29m ZnNldF90YmxbTUFYX0ZPUlRSQU5fRElNUyArIDFdWzJdOwogIC8qIFRoZSBmb2xsb3dpbmcgbWFj cm8gZ2l2ZXMgdXMgdGhlIHNpemUgb2YgdGhlIG50aCBkaW1lbnNpb24sIFdoZXJlIAogICAgIG4g aXMgMSBiYXNlZC4gICovCiAgCkBAIC0zMzgwLDcgKzMzMTgsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCiAgICAgIH0KICAKICAgIHJldHVybiBUWVBFX0FS UkFZX1VQUEVSX0JPVU5EX1ZBTFVFICh0eXBlKTsKLUBAIC0xMzUsMjQgKzE0MCwyOSBAQCBmNzdf Y3JlYXRlX2FycmF5cHJpbnRfb2Zmc2V0X3RibCAoc3RydWN0CitAQCAtMTM1LDI0ICsxNDAsMjkg QEAgZjc3X2NyZWF0ZV9hcnJheXByaW50X29mZnNldF90YmwgKHN0cnVjdCB0eXBlICp0eXBlLCBz dHJ1Y3QgdWlfZmlsZSAqc3RyZWFtKQogICAgICAgIHVwcGVyID0gZjc3X2dldF91cHBlcmJvdW5k ICh0bXBfdHlwZSk7CiAgICAgICAgbG93ZXIgPSBmNzdfZ2V0X2xvd2VyYm91bmQgKHRtcF90eXBl KTsKICAKQEAgLTM0MTYsNyArMzM1NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9mLXZhbHByaW50LmMKICAgICAgfQogIH0KICAKLUBAIC0xNzQsMzcgKzE4NCwzNSBAQCBmNzdf cHJpbnRfYXJyYXlfMSAoaW50IG5zcywgaW50IG5kaW1lbnNpCitAQCAtMTc0LDM3ICsxODQsMzUg QEAgZjc3X3ByaW50X2FycmF5XzEgKGludCBuc3MsIGludCBuZGltZW5zaW9ucywgc3RydWN0IHR5 cGUgKnR5cGUsCiAgCiAgICBpZiAobnNzICE9IG5kaW1lbnNpb25zKQogICAgICB7CkBAIC0zNDYx LDcgKzMzOTksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5j CiAgCSAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJlYW0sICIuLi4iKTsKICAJfQogICAgICB9Ci1A QCAtMjYwLDYgKzI2OCw5IEBAIGZfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uc3Qg Z2QKK0BAIC0yNjAsNiArMjY4LDkgQEAgZl92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBj b25zdCBnZGJfYnl0ZSAqdmFsYWRkciwgaW50IGVtYmVkZGVkX29mZnNldCwKICAgIENPUkVfQURE UiBhZGRyOwogICAgaW50IGluZGV4OwogIApAQCAtMzQ3MSwxMCArMzQwOSwxMCBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZi12YWxwcmludC5jCiAgICBDSEVDS19UWVBFREVGICh0 eXBlKTsKICAgIHN3aXRjaCAoVFlQRV9DT0RFICh0eXBlKSkKICAgICAgewotSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL2ZpbmR2YXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvZmluZHZhci5jCTIwMTEtMDctMTIgMjM6MTY6NDguMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCTIwMTEtMDctMjkg MjI6NTI6NDQuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL2ZpbmR2YXIuYyBiL2dk Yi9maW5kdmFyLmMKK2luZGV4IDMzMzMyYzYuLmQ4ZGEzNGEgMTAwNjQ0CistLS0gYS9nZGIvZmlu ZHZhci5jCisrKysgYi9nZGIvZmluZHZhci5jCiBAQCAtMzUsNiArMzUsNyBAQAogICNpbmNsdWRl ICJ1c2VyLXJlZ3MuaCIKICAjaW5jbHVkZSAiYmxvY2suaCIKQEAgLTM0ODMsMjEgKzM0MjEsMjEg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2ZpbmR2YXIuYwogIAogIC8qIEJhc2lj IGJ5dGUtc3dhcHBpbmcgcm91dGluZXMuICBBbGwgJ2V4dHJhY3QnIGZ1bmN0aW9ucyByZXR1cm4g YQogICAgIGhvc3QtZm9ybWF0IGludGVnZXIgZnJvbSBhIHRhcmdldC1mb3JtYXQgaW50ZWdlciBh dCBBRERSIHdoaWNoIGlzCi1AQCAtNDA4LDggKzQwOSwxMSBAQCBzeW1ib2xfcmVhZF9uZWVkc19m cmFtZSAoc3RydWN0IHN5bWJvbCAqCitAQCAtNDA4LDggKzQwOSwxMSBAQCBzeW1ib2xfcmVhZF9u ZWVkc19mcmFtZSAoc3RydWN0IHN5bWJvbCAqc3ltKQogIAogIC8qIEdpdmVuIGEgc3RydWN0IHN5 bWJvbCBmb3IgYSB2YXJpYWJsZSwKICAgICBhbmQgYSBzdGFjayBmcmFtZSBpZCwgcmVhZCB0aGUg dmFsdWUgb2YgdGhlIHZhcmlhYmxlCiAtICAgYW5kIHJldHVybiBhIChwb2ludGVyIHRvIGEpIHN0 cnVjdCB2YWx1ZSBjb250YWluaW5nIHRoZSB2YWx1ZS4KLS0gICBJZiB0aGUgdmFyaWFibGUgY2Fu bm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuICAqLworLSAgIElmIHRoZSB2YXJp YWJsZSBjYW5ub3QgYmUgZm91bmQsIHRocm93IGVycm9yLiAgKi8KICsgICBhbmQgcmV0dXJuIGEg KHBvaW50ZXIgdG8gYSkgc3RydWN0IHZhbHVlIGNvbnRhaW5pbmcgdGhlIHZhbHVlLiAKLSsgICBJ ZiB0aGUgdmFyaWFibGUgY2Fubm90IGJlIGZvdW5kLCByZXR1cm4gYSB6ZXJvIHBvaW50ZXIuCisr ICAgSWYgdGhlIHZhcmlhYmxlIGNhbm5vdCBiZSBmb3VuZCwgdGhyb3cgZXJyb3IuCiArICAgV2Ug aGF2ZSB0byBmaXJzdCBmaW5kIHRoZSBhZGRyZXNzIG9mIHRoZSB2YXJpYWJsZSBiZWZvcmUgYWxs b2NhdGluZyBzdHJ1Y3QKLSsgICB2YWx1ZSB0byByZXR1cm4gYXMgaXRzIHNpemUgbWF5IGRlcGVu ZCBvbiBEV19PUF9QVVNIX09CSkVDVF9BRERSRVNTIHBvc3NpYmx5CisrICAgdmFsdWUgdG8gcmV0 dXJuIGFzIGl0cyBzaXplIG1heSBkZXBlbmQgb24gRFdfT1BfUFVTSF9PQkpFQ1RfQUREUkVTUyBw b3NzaWJseSAKICsgICB1c2VkIGJ5IGl0cyB0eXBlLiAgKi8KICAKICBzdHJ1Y3QgdmFsdWUgKgog IHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpm cmFtZSkKLUBAIC00MTcsMTYgKzQyMSw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9s ICp2YXIsIHN0cnUKK0BAIC00MTcsMTYgKzQyMSw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qg c3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgIHN0cnVjdCB2YWx1ZSAq djsKICAgIHN0cnVjdCB0eXBlICp0eXBlID0gU1lNQk9MX1RZUEUgKHZhcik7CiAgICBDT1JFX0FE RFIgYWRkcjsKQEAgLTM1MTQsNyArMzQ1Miw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9maW5kdmFyLmMKICAKICAgIGlmIChzeW1ib2xfcmVhZF9uZWVkc19mcmFtZSAodmFyKSkK ICAgICAgZ2RiX2Fzc2VydCAoZnJhbWUpOwotQEAgLTQzNiw3ICs0MzAsNyBAQCByZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1CitAQCAtNDM2LDcgKzQzMCw3IEBAIHJlYWRf dmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkK ICAgICAgY2FzZSBMT0NfQ09OU1Q6CiAgICAgICAgLyogUHV0IHRoZSBjb25zdGFudCBiYWNrIGlu IHRhcmdldCBmb3JtYXQuICAqLwogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlwZSk7CkBA IC0zNTIzLDcgKzM0NjEsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZh ci5jCiAgCQkJICAgIGdkYmFyY2hfYnl0ZV9vcmRlciAoZ2V0X3R5cGVfYXJjaCAodHlwZSkpLAog IAkJCSAgICAoTE9OR0VTVCkgU1lNQk9MX1ZBTFVFICh2YXIpKTsKICAgICAgICBWQUxVRV9MVkFM ICh2KSA9IG5vdF9sdmFsOwotQEAgLTQ2MSwxMiArNDU1LDEyIEBAIHJlYWRfdmFyX3ZhbHVlIChz dHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnUKK0BAIC00NjEsMTIgKzQ1NSwxMiBAQCByZWFkX3Zhcl92 YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgCiAg ICAgIGNhc2UgTE9DX0NPTlNUX0JZVEVTOgogICAgICAgIHYgPSBhbGxvY2F0ZV92YWx1ZSAodHlw ZSk7CkBAIC0zNTM4LDE1ICszNDc2LDE1IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9maW5kdmFyLmMKICAgICAgICBpZiAob3ZlcmxheV9kZWJ1Z2dpbmcpCiAgCWFkZHIgPSBzeW1i b2xfb3ZlcmxheWVkX2FkZHJlc3MgKFNZTUJPTF9WQUxVRV9BRERSRVNTICh2YXIpLAogIAkJCQkJ IFNZTUJPTF9PQkpfU0VDVElPTiAodmFyKSk7Ci1AQCAtNDc5LDcgKzQ3Myw2IEBAIHJlYWRfdmFy X3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnUKLSAgICAgICBpZiAoIWFkZHIpCi0gCXJl dHVybiAwOworQEAgLTQ4MCw3ICs0NzQsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJv bCAqdmFyLCBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCisgCWVycm9yIChfKCJVbmtub3duIGFy Z3VtZW50IGxpc3QgYWRkcmVzcyBmb3IgYCVzJy4iKSwKKyAJICAgICAgIFNZTUJPTF9QUklOVF9O QU1FICh2YXIpKTsKICAgICAgICBhZGRyICs9IFNZTUJPTF9WQUxVRSAodmFyKTsKIC0gICAgICB2 ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNh c2UgTE9DX1JFRl9BUkc6Ci1AQCAtNDkzLDE0ICs0ODYsMTIgQEAgcmVhZF92YXJfdmFsdWUgKHN0 cnVjdCBzeW1ib2wgKnZhciwgc3RydQorQEAgLTQ5NSwxNCArNDg4LDEyIEBAIHJlYWRfdmFyX3Zh bHVlIChzdHJ1Y3Qgc3ltYm9sICp2YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJYXJn cmVmICs9IFNZTUJPTF9WQUxVRSAodmFyKTsKICAJcmVmID0gdmFsdWVfYXQgKGxvb2t1cF9wb2lu dGVyX3R5cGUgKHR5cGUpLCBhcmdyZWYpOwogIAlhZGRyID0gdmFsdWVfYXNfYWRkcmVzcyAocmVm KTsKQEAgLTM1NjEsNyArMzQ5OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9m aW5kdmFyLmMKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBMT0NfVFlQRURFRjoKLUBAIC01 MDgsNyArNDk5LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydQor QEAgLTUxMSw3ICs1MDIsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUpCiAgICAgICAgYnJlYWs7CiAgCiAgICAgIGNhc2UgTE9D X0JMT0NLOgpAQCAtMzU2OSwxNSArMzUwNywxNSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvZmluZHZhci5jCiAgICAgICAgaWYgKG92ZXJsYXlfZGVidWdnaW5nKQogIAlhZGRyID0g c3ltYm9sX292ZXJsYXllZF9hZGRyZXNzCiAgCSAgKEJMT0NLX1NUQVJUIChTWU1CT0xfQkxPQ0tf VkFMVUUgKHZhcikpLCBTWU1CT0xfT0JKX1NFQ1RJT04gKHZhcikpOwotQEAgLTUzMyw3ICs1MjMs NiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBzdHJ1Ci0gCSAgICAgIGVy cm9yIChfKCJWYWx1ZSBvZiByZWdpc3RlciB2YXJpYWJsZSBub3QgYXZhaWxhYmxlLiIpKTsKK0BA IC01MzcsNyArNTI3LDYgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3Ry dWN0IGZyYW1lX2luZm8gKmZyYW1lKQorIAkgICAgICAgICAgICAgU1lNQk9MX1BSSU5UX05BTUUg KHZhcikpOwogIAogIAkgICAgYWRkciA9IHZhbHVlX2FzX2FkZHJlc3MgKHJlZ3ZhbCk7CiAtCSAg ICB2ID0gYWxsb2NhdGVfdmFsdWVfbGF6eSAodHlwZSk7CiAgCSAgfQogIAllbHNlCiAgCSAgewot QEAgLTU3Miw3ICs1NjEsNiBAQCByZWFkX3Zhcl92YWx1ZSAoc3RydWN0IHN5bWJvbCAqdmFyLCBz dHJ1CitAQCAtNTc3LDcgKzU2Niw2IEBAIHJlYWRfdmFyX3ZhbHVlIChzdHJ1Y3Qgc3ltYm9sICp2 YXIsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAJaWYgKG9ial9zZWN0aW9uCiAgCSAgICAm JiAob2JqX3NlY3Rpb24tPnRoZV9iZmRfc2VjdGlvbi0+ZmxhZ3MgJiBTRUNfVEhSRUFEX0xPQ0FM KSAhPSAwKQogIAkgIGFkZHIgPSB0YXJnZXRfdHJhbnNsYXRlX3Rsc19hZGRyZXNzIChvYmpfc2Vj dGlvbi0+b2JqZmlsZSwgYWRkcik7CkBAIC0zNTg1LDcgKzM1MjMsNyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvZmluZHZhci5jCiAgICAgICAgfQogICAgICAgIGJyZWFrOwogIAot QEAgLTU4NCw2ICs1NzIsMTAgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wgKnZhciwg c3RydQorQEAgLTU5MCw2ICs1NzgsMTAgQEAgcmVhZF92YXJfdmFsdWUgKHN0cnVjdCBzeW1ib2wg KnZhciwgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lKQogICAgICAgIGJyZWFrOwogICAgICB9CiAg CkBAIC0zNTk2LDIyICszNTM0LDIxIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9m aW5kdmFyLmMKICAgIFZBTFVFX0xWQUwgKHYpID0gbHZhbF9tZW1vcnk7CiAgICBzZXRfdmFsdWVf YWRkcmVzcyAodiwgYWRkcik7CiAgICByZXR1cm4gdjsKLUBAIC02MjMsMTEgKzYxNSwxMiBAQCBz dHJ1Y3QgdmFsdWUgKgorQEAgLTY3MiwxMCArNjY0LDExIEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFs dWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUsIGludCByZWdudW0sIHN0cnVjdCBm cmFtZV9pbmZvICpmcmFtZSkKICB7CiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9m cmFtZV9hcmNoIChmcmFtZSk7CiAtICBzdHJ1Y3QgdHlwZSAqdHlwZTEgPSBjaGVja190eXBlZGVm ICh0eXBlKTsKICAgIHN0cnVjdCB2YWx1ZSAqdjsKLSAgIGludCBvcHRpbSwgdW5hdmFpbCwgb2s7 CiAgCiAtICBpZiAoZ2RiYXJjaF9jb252ZXJ0X3JlZ2lzdGVyX3AgKGdkYmFyY2gsIHJlZ251bSwg dHlwZTEpKQogKyAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHR5cGUpOwogKwogKyAgaWYgKGdkYmFy Y2hfY29udmVydF9yZWdpc3Rlcl9wIChnZGJhcmNoLCByZWdudW0sIHR5cGUpKQogICAgICB7Ci0g ICAgICAgLyogVGhlIElTQS9BQkkgbmVlZCB0byBzb21ldGhpbmcgd2VpcmQgd2hlbiBvYnRhaW5p bmcgdGhlCi0gICAgICAgICAgc3BlY2lmaWVkIHZhbHVlIGZyb20gdGhpcyByZWdpc3Rlci4gIEl0 IG1pZ2h0IG5lZWQgdG8KLUBAIC02NDAsNyArNjMzLDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAo c3RydWN0IHR5cGUgKnR5cGUsCisgICAgICAgaW50IG9wdGltLCB1bmF2YWlsLCBvazsKKyAKK0BA IC02OTAsNyArNjgzLDcgQEAgdmFsdWVfZnJvbV9yZWdpc3RlciAoc3RydWN0IHR5cGUgKnR5cGUs IGludCByZWdudW0sIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSkKICAgICAgICBWQUxVRV9MVkFM ICh2KSA9IGx2YWxfcmVnaXN0ZXI7CiAgICAgICAgVkFMVUVfRlJBTUVfSUQgKHYpID0gZ2V0X2Zy YW1lX2lkIChmcmFtZSk7CiAgICAgICAgVkFMVUVfUkVHTlVNICh2KSA9IHJlZ251bTsKQEAgLTM2 MTksMTIxICszNTU2LDY2MiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZmluZHZh ci5jCiArICAgICAgb2sgPSBnZGJhcmNoX3JlZ2lzdGVyX3RvX3ZhbHVlIChnZGJhcmNoLCBmcmFt ZSwgcmVnbnVtLCB0eXBlLAogIAkJCQkgICAgICB2YWx1ZV9jb250ZW50c19yYXcgKHYpLCAmb3B0 aW0sCiAgCQkJCSAgICAgICZ1bmF2YWlsKTsKLSAgICAgfQotSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2dkYmluaXQuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL2dkYmluaXQuaW4JMjAwOS0xMC0wNSAxNTo0Njo1Mi4wMDAwMDAwMDAgKzAyMDAK LSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJpbml0LmluCTIwMTEtMDctMjkgMjI6NTI6 MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMSw1ICsxLDE1IEBACi0gZWNobyBTZXR0aW5nIHVwIHRo ZSBlbnZpcm9ubWVudCBmb3IgZGVidWdnaW5nIGdkYi5cbgotIAotKyMgU2V0IHVwIHRoZSBQeXRo b24gbGlicmFyeSBhbmQgInJlcXVpcmUiIGNvbW1hbmQuCi0rcHl0aG9uCi0rZnJvbSBvcy5wYXRo IGltcG9ydCBhYnNwYXRoCi0rZ2RiLmRhdGFkaXIgPSBhYnNwYXRoICgnQHNyY2RpckAvcHl0aG9u L2xpYicpCi0rZ2RiLnB5dGhvbmxpYmRpciA9IGdkYi5kYXRhZGlyCi0rZ2RiLl9fcGF0aF9fID0g W2dkYi5kYXRhZGlyICsgJy9nZGInXQotK3N5cy5wYXRoLmluc2VydCgwLCBnZGIuZGF0YWRpcikK LStlbmQKLStzb3VyY2UgQHNyY2RpckAvcHl0aG9uL2xpYi9nZGIvX19pbml0X18ucHkKLSsKLSBz ZXQgY29tcGxhaW50cyAxCi0gCi0gYiBpbnRlcm5hbF9lcnJvcgotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL2dkYnR5cGVzLmMJMjAxMS0wNi0yNCAyMTo0NzozNy4wMDAwMDAwMDAgKzAy MDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCTIwMTEtMDctMjkgMjI6 NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMzksNiArMzksOSBAQAotICNpbmNsdWRlICJjcC1h YmkuaCIKLSAjaW5jbHVkZSAiZ2RiX2Fzc2VydC5oIgotICNpbmNsdWRlICJoYXNodGFiLmgiCi0r I2luY2x1ZGUgIm9ic2VydmVyLmgiCi0rI2luY2x1ZGUgImR3YXJmMmV4cHIuaCIKLSsjaW5jbHVk ZSAiZHdhcmYybG9jLmgiCi0gCi0gCi0gLyogSW5pdGlhbGl6ZSBCQURORVNTIGNvbnN0YW50cy4g ICovCi1AQCAtMTQ0LDcgKzE0NywxNiBAQCBzdGF0aWMgdm9pZCBwcmludF9iaXRfdmVjdG9yIChC X1RZUEUgKiwKLSBzdGF0aWMgdm9pZCBwcmludF9hcmdfdHlwZXMgKHN0cnVjdCBmaWVsZCAqLCBp bnQsIGludCk7Ci0gc3RhdGljIHZvaWQgZHVtcF9mbl9maWVsZGxpc3RzIChzdHJ1Y3QgdHlwZSAq LCBpbnQpOwotIHN0YXRpYyB2b2lkIHByaW50X2NwbHVzX3N0dWZmIChzdHJ1Y3QgdHlwZSAqLCBp bnQpOwotK3N0YXRpYyBMT05HRVNUIHR5cGVfbGVuZ3RoX2dldCAoc3RydWN0IHR5cGUgKnR5cGUs IHN0cnVjdCB0eXBlICp0YXJnZXRfdHlwZSwKLSsJCQkJaW50IGZ1bGxfc3Bhbik7Ci0gCi0rI2lm IDAKLSsvKiBUaGUgaGFzaCB0YWJsZSBob2xkaW5nIGFsbCBkaXNjYXJkYWJsZSBgc3RydWN0IHR5 cGUgKicgcmVmZXJlbmNlcy4gICovCi0rc3RhdGljIGh0YWJfdCB0eXBlX2Rpc2NhcmRhYmxlX3Rh YmxlOwotKwotKy8qIEN1cnJlbnQgdHlwZV9kaXNjYXJkYWJsZV9jaGVjayBwYXNzIHVzZWQgZm9y IFRZUEVfRElTQ0FSREFCTEVfQUdFLiAgKi8KLStzdGF0aWMgaW50IHR5cGVfZGlzY2FyZGFibGVf YWdlX2N1cnJlbnQ7Ci0rI2VuZGlmCiAgCi0gLyogQWxsb2NhdGUgYSBuZXcgT0JKRklMRS1hc3Nv Y2lhdGVkIHR5cGUgc3RydWN0dXJlIGFuZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21lIGRlZmF1bHRz LiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLUBAIC0xNzUsNiAr MTg3LDQzIEBAIGFsbG9jX3R5cGUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlKQotICAgcmV0dXJu IHR5cGU7CitkaWZmIC0tZ2l0IGEvZ2RiL2dkYmFyY2guYyBiL2dkYi9nZGJhcmNoLmMKK2luZGV4 IDFhZGE1MDQuLmVjMWVmNDYgMTAwNjQ0CistLS0gYS9nZGIvZ2RiYXJjaC5jCisrKysgYi9nZGIv Z2RiYXJjaC5jCitAQCAtMjYzLDYgKzI2MywxNiBAQCBzdHJ1Y3QgZ2RiYXJjaAorICAgZ2RiYXJj aF9nZXRfc2lnaW5mb190eXBlX2Z0eXBlICpnZXRfc2lnaW5mb190eXBlOworICAgZ2RiYXJjaF9y ZWNvcmRfc3BlY2lhbF9zeW1ib2xfZnR5cGUgKnJlY29yZF9zcGVjaWFsX3N5bWJvbDsKKyAgIGdk YmFyY2hfZ2V0X3N5c2NhbGxfbnVtYmVyX2Z0eXBlICpnZXRfc3lzY2FsbF9udW1iZXI7CisrICBj b25zdCBjaGFyICogc3RhcF9pbnRlZ2VyX3ByZWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX2lu dGVnZXJfc3VmaXg7CisrICBjb25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9wcmVmaXg7CisrICBj b25zdCBjaGFyICogc3RhcF9yZWdpc3Rlcl9zdWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX3Jl Z2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVy X2luZGlyZWN0aW9uX3N1Zml4OworKyAgY29uc3QgY2hhciAqIHN0YXBfZ2RiX3JlZ2lzdGVyX3By ZWZpeDsKKysgIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeDsKKysgIGdkYmFy Y2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZF9mdHlwZSAqc3RhcF9pc19zaW5nbGVfb3BlcmFuZDsK KysgIGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0eXBlICpzdGFwX3BhcnNlX3Nw ZWNpYWxfdG9rZW47CisgICBpbnQgaGFzX2dsb2JhbF9zb2xpc3Q7CisgICBpbnQgaGFzX2dsb2Jh bF9icmVha3BvaW50czsKKyAgIGdkYmFyY2hfaGFzX3NoYXJlZF9hZGRyZXNzX3NwYWNlX2Z0eXBl ICpoYXNfc2hhcmVkX2FkZHJlc3Nfc3BhY2U7CitAQCAtNDE4LDYgKzQyOCwxNiBAQCBzdHJ1Y3Qg Z2RiYXJjaCBzdGFydHVwX2dkYmFyY2ggPQorICAgMCwgIC8qIGdldF9zaWdpbmZvX3R5cGUgKi8K KyAgIDAsICAvKiByZWNvcmRfc3BlY2lhbF9zeW1ib2wgKi8KKyAgIDAsICAvKiBnZXRfc3lzY2Fs bF9udW1iZXIgKi8KKysgIDAsICAvKiBzdGFwX2ludGVnZXJfcHJlZml4ICovCisrICAwLCAgLyog c3RhcF9pbnRlZ2VyX3N1Zml4ICovCisrICAwLCAgLyogc3RhcF9yZWdpc3Rlcl9wcmVmaXggKi8K KysgIDAsICAvKiBzdGFwX3JlZ2lzdGVyX3N1Zml4ICovCisrICAwLCAgLyogc3RhcF9yZWdpc3Rl cl9pbmRpcmVjdGlvbl9wcmVmaXggKi8KKysgIDAsICAvKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0 aW9uX3N1Zml4ICovCisrICAwLCAgLyogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4ICovCisrICAw LCAgLyogc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXggKi8KKysgIDAsICAvKiBzdGFwX2lzX3Npbmds ZV9vcGVyYW5kICovCisrICAwLCAgLyogc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuICovCisgICAw LCAgLyogaGFzX2dsb2JhbF9zb2xpc3QgKi8KKyAgIDAsICAvKiBoYXNfZ2xvYmFsX2JyZWFrcG9p bnRzICovCisgICBkZWZhdWx0X2hhc19zaGFyZWRfYWRkcmVzc19zcGFjZSwgIC8qIGhhc19zaGFy ZWRfYWRkcmVzc19zcGFjZSAqLworQEAgLTcwNyw2ICs3MjcsMTYgQEAgdmVyaWZ5X2dkYmFyY2gg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAgLyogU2tpcCB2ZXJpZnkgb2YgZ2V0X3NpZ2lu Zm9fdHlwZSwgaGFzIHByZWRpY2F0ZS4gICovCisgICAvKiBTa2lwIHZlcmlmeSBvZiByZWNvcmRf c3BlY2lhbF9zeW1ib2wsIGhhcyBwcmVkaWNhdGUuICAqLworICAgLyogU2tpcCB2ZXJpZnkgb2Yg Z2V0X3N5c2NhbGxfbnVtYmVyLCBoYXMgcHJlZGljYXRlLiAgKi8KKysgIC8qIFNraXAgdmVyaWZ5 IG9mIHN0YXBfaW50ZWdlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZl cmlmeSBvZiBzdGFwX2ludGVnZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lw IHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIC8q IFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisr ICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCwgaW52 YWxpZF9wID09IDAgKi8KKysgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfaW5kaXJl Y3Rpb25fc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFw X2dkYl9yZWdpc3Rlcl9wcmVmaXgsIGludmFsaWRfcCA9PSAwICovCisrICAvKiBTa2lwIHZlcmlm eSBvZiBzdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIC8qIFNr aXAgdmVyaWZ5IG9mIHN0YXBfaXNfc2luZ2xlX29wZXJhbmQsIGhhcyBwcmVkaWNhdGUuICAqLwor KyAgLyogU2tpcCB2ZXJpZnkgb2Ygc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuLCBoYXMgcHJlZGlj YXRlLiAgKi8KKyAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19nbG9iYWxfc29saXN0LCBpbnZhbGlk X3AgPT0gMCAqLworICAgLyogU2tpcCB2ZXJpZnkgb2YgaGFzX2dsb2JhbF9icmVha3BvaW50cywg aW52YWxpZF9wID09IDAgKi8KKyAgIC8qIFNraXAgdmVyaWZ5IG9mIGhhc19zaGFyZWRfYWRkcmVz c19zcGFjZSwgaW52YWxpZF9wID09IDAgKi8KK0BAIC0xMjQwLDYgKzEyNzAsNDIgQEAgZ2RiYXJj aF9kdW1wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgc3RydWN0IHVpX2ZpbGUgKmZpbGUpCisg ICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YWJzX2FyZ3VtZW50X2hhc19h ZGRyID0gPCVzPlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3RvX3N0 cmluZyAoZ2RiYXJjaC0+c3RhYnNfYXJndW1lbnRfaGFzX2FkZHIpKTsKKyAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3Rh cF9nZGJfcmVnaXN0ZXJfcHJlZml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdk YmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCk7CisrICBmcHJpbnRmX3VuZmlsdGVyZWQg KGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IHN0YXBfZ2RiX3Jl Z2lzdGVyX3N1Zml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2gtPnN0 YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4KTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysg ICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2VyX3ByZWZpeCA9 ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX2ludGVnZXJfcHJl Zml4KTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAg ICAgImdkYmFyY2hfZHVtcDogc3RhcF9pbnRlZ2VyX3N1Zml4ID0gJXNcbiIsCisrICAgICAgICAg ICAgICAgICAgICAgIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCk7CisrICBmcHJpbnRmX3Vu ZmlsdGVyZWQgKGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6IGdk YmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZF9wKCkgPSAlZFxuIiwKKysgICAgICAgICAgICAg ICAgICAgICAgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKGdkYmFyY2gpKTsKKysg IGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFy Y2hfZHVtcDogc3RhcF9pc19zaW5nbGVfb3BlcmFuZCA9IDwlcz5cbiIsCisrICAgICAgICAgICAg ICAgICAgICAgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGdkYmFyY2gtPnN0YXBfaXNfc2luZ2xl X29wZXJhbmQpKTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAg ICAgICAgICAgImdkYmFyY2hfZHVtcDogZ2RiYXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW5f cCgpID0gJWRcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc3RhcF9wYXJzZV9z cGVjaWFsX3Rva2VuX3AgKGdkYmFyY2gpKTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwK KysgICAgICAgICAgICAgICAgICAgICAgImdkYmFyY2hfZHVtcDogc3RhcF9wYXJzZV9zcGVjaWFs X3Rva2VuID0gPCVzPlxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgaG9zdF9hZGRyZXNzX3Rv X3N0cmluZyAoZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKSk7CisrICBmcHJpbnRm X3VuZmlsdGVyZWQgKGZpbGUsCisrICAgICAgICAgICAgICAgICAgICAgICJnZGJhcmNoX2R1bXA6 IHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4ID0gJXNcbiIsCisrICAgICAgICAgICAg ICAgICAgICAgIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4KTsKKysg IGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAgImdkYmFy Y2hfZHVtcDogc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCA9ICVzXG4iLAorKyAgICAg ICAgICAgICAgICAgICAgICBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4 KTsKKysgIGZwcmludGZfdW5maWx0ZXJlZCAoZmlsZSwKKysgICAgICAgICAgICAgICAgICAgICAg ImdkYmFyY2hfZHVtcDogc3RhcF9yZWdpc3Rlcl9wcmVmaXggPSAlc1xuIiwKKysgICAgICAgICAg ICAgICAgICAgICAgZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9wcmVmaXgpOworKyAgZnByaW50Zl91 bmZpbHRlcmVkIChmaWxlLAorKyAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBz dGFwX3JlZ2lzdGVyX3N1Zml4ID0gJXNcbiIsCisrICAgICAgICAgICAgICAgICAgICAgIGdkYmFy Y2gtPnN0YXBfcmVnaXN0ZXJfc3VmaXgpOworKyAgZnByaW50Zl91bmZpbHRlcmVkIChmaWxlLAor ICAgICAgICAgICAgICAgICAgICAgICAiZ2RiYXJjaF9kdW1wOiBnZGJhcmNoX3N0YXRpY190cmFu c2Zvcm1fbmFtZV9wKCkgPSAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZ2RiYXJjaF9z dGF0aWNfdHJhbnNmb3JtX25hbWVfcCAoZ2RiYXJjaCkpOworICAgZnByaW50Zl91bmZpbHRlcmVk IChmaWxlLAorQEAgLTM3NTksNiArMzgyNSwxOTAgQEAgc2V0X2dkYmFyY2hfZ2V0X3N5c2NhbGxf bnVtYmVyIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgIGdkYmFyY2gtPmdldF9zeXNjYWxs X251bWJlciA9IGdldF9zeXNjYWxsX251bWJlcjsKICB9CiAgCi0rI2lmIDAKLSsvKiBEZWNsYXJl IFRZUEUgYXMgZGlzY2FyZGFibGUgb24gbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gYnkgZnJlZV9h bGxfdHlwZXMuCi0rICAgWW91IG11c3QgY2FsbCB0eXBlX21hcmtfdXNlZCBkdXJpbmcgZWFjaCBm cmVlX2FsbF90eXBlcyB0byBwcm90ZWN0IFRZUEUgZnJvbQotKyAgIGJlaW5nIGRlYWxsb2NhdGVk LiAgKi8KKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7 CisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX2ludGVnZXJfcHJlZml4LCBpbnZhbGlkX3AgPT0g MCAqLworKyAgaWYgKGdkYmFyY2hfZGVidWcgPj0gMikKKysgICAgZnByaW50Zl91bmZpbHRlcmVk IChnZGJfc3RkbG9nLCAiZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IGNhbGxlZFxuIik7Cisr ICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9pbnRlZ2VyX3ByZWZpeDsKKyt9CiArCi0rc3RhdGljIHZv aWQKLStzZXRfdHlwZV9hc19kaXNjYXJkYWJsZSAoc3RydWN0IHR5cGUgKnR5cGUpCisrdm9pZAor K3NldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX2lu dGVnZXJfcHJlZml4KQogK3sKLSsgIHZvaWQgKipzbG90OworKyAgZ2RiYXJjaC0+c3RhcF9pbnRl Z2VyX3ByZWZpeCA9IHN0YXBfaW50ZWdlcl9wcmVmaXg7CisrfQogKwotKyAgZ2RiX2Fzc2VydCAo IVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsKKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBf aW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZ2RiX2Fzc2Vy dCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfaW50ZWdlcl9z dWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisrICAg IGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9pbnRlZ2VyX3N1 Zml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9pbnRlZ2VyX3N1Zml4Owor K30KICsKLSsgIFRZUEVfRElTQ0FSREFCTEUgKHR5cGUpID0gMTsKLSsgIFRZUEVfRElTQ0FSREFC TEVfQUdFICh0eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7Cisrdm9pZAorK3Nl dF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogc3RhcF9pbnRlZ2Vy X3N1Zml4KQorK3sKKysgIGdkYmFyY2gtPnN0YXBfaW50ZWdlcl9zdWZpeCA9IHN0YXBfaW50ZWdl cl9zdWZpeDsKKyt9CiArCi0rICBzbG90ID0gaHRhYl9maW5kX3Nsb3QgKHR5cGVfZGlzY2FyZGFi bGVfdGFibGUsIHR5cGUsIElOU0VSVCk7Ci0rICBnZGJfYXNzZXJ0ICghKnNsb3QpOwotKyAgKnNs b3QgPSB0eXBlOworK2NvbnN0IGNoYXIgKgorK2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXgg KHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0g TlVMTCk7CisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFwX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxp ZF9wID09IDAgKi8KKysgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5m aWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggY2FsbGVk XG4iKTsKKysgIHJldHVybiBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX3ByZWZpeDsKICt9Ci0rI2Vu ZGlmCiArCi0rLyogQWxsb2NhdGUgYSBuZXcgdHlwZSBsaWtlIGFsbG9jX3R5cGUgYnV0IHByZXNl cnZlIGZvciBpdCB0aGUgZGlzY2FyZGFiaWxpdHkKLSsgICBzdGF0ZSBvZiBQQVJFTlRfVFlQRS4g ICovCisrdm9pZAorK3NldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4IChzdHJ1Y3QgZ2Ri YXJjaCAqZ2RiYXJjaCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg Y2hhciAqIHN0YXBfcmVnaXN0ZXJfcHJlZml4KQorK3sKKysgIGdkYmFyY2gtPnN0YXBfcmVnaXN0 ZXJfcHJlZml4ID0gc3RhcF9yZWdpc3Rlcl9wcmVmaXg7CisrfQogKwotK3N0YXRpYyBzdHJ1Y3Qg dHlwZSAqCi0rYWxsb2NfdHlwZV9hc19wYXJlbnQgKHN0cnVjdCB0eXBlICpwYXJlbnRfdHlwZSkK Kytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKQogK3sKLSsgIHN0cnVjdCB0eXBlICpuZXdfdHlwZSA9IGFsbG9jX3R5cGVf Y29weSAocGFyZW50X3R5cGUpOworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysg IC8qIFNraXAgdmVyaWZ5IG9mIHN0YXBfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICov CisrICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAyKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdk Yl9zdGRsb2csICJnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggY2FsbGVkXG4iKTsKKysgIHJl dHVybiBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX3N1Zml4OworK30KICsKLSsjaWYgMAotKyAgaWYg KFRZUEVfRElTQ0FSREFCTEUgKHBhcmVudF90eXBlKSkKLSsgICAgc2V0X3R5cGVfYXNfZGlzY2Fy ZGFibGUgKG5ld190eXBlKTsKLSsjZW5kaWYKKyt2b2lkCisrc2V0X2dkYmFyY2hfc3RhcF9yZWdp c3Rlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHN0YXBfcmVnaXN0ZXJfc3VmaXgpCisreworKyAg Z2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9zdWZpeCA9IHN0YXBfcmVnaXN0ZXJfc3VmaXg7CisrfQog KwotKyAgcmV0dXJuIG5ld190eXBlOworK2NvbnN0IGNoYXIgKgorK2dkYmFyY2hfc3RhcF9yZWdp c3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysg IGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICAvKiBTa2lwIHZlcmlmeSBvZiBzdGFw X3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIGlmIChn ZGJhcmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywg ImdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9wcmVmaXggY2FsbGVkXG4iKTsKKysg IHJldHVybiBnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeDsKICt9CiAr Ci0gLyogQWxsb2NhdGUgYSBuZXcgR0RCQVJDSC1hc3NvY2lhdGVkIHR5cGUgc3RydWN0dXJlIGFu ZCBmaWxsIGl0Ci0gICAgd2l0aCBzb21lIGRlZmF1bHRzLiAgU3BhY2UgZm9yIHRoZSB0eXBlIHN0 cnVjdHVyZSBpcyBhbGxvY2F0ZWQKLSAgICBvbiB0aGUgaGVhcC4gICovCi1AQCAtMzAwLDcgKzM0 OSw3IEBAIG1ha2VfcG9pbnRlcl90eXBlIChzdHJ1Y3QgdHlwZSAqdHlwZSwgc3QKLSAKLSAgIGlm ICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0 ZSBvbmUuICAqLwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUp OwotKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOwotICAgICAgIGlm ICh0eXBlcHRyKQotIAkqdHlwZXB0ciA9IG50eXBlOwotICAgICB9Ci1AQCAtMzc3LDcgKzQyNiw3 IEBAIG1ha2VfcmVmZXJlbmNlX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLAorK3ZvaWQKKytzZXRf Z2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoc3RydWN0IGdkYmFyY2gg KmdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCkKKyt7CisrICBn ZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCA9IHN0YXBfcmVnaXN0ZXJf aW5kaXJlY3Rpb25fcHJlZml4OworK30KKysKKytjb25zdCBjaGFyICoKKytnZGJhcmNoX3N0YXBf cmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sK KysgIGdkYl9hc3NlcnQgKGdkYmFyY2ggIT0gTlVMTCk7CisrICAvKiBTa2lwIHZlcmlmeSBvZiBz dGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4LCBpbnZhbGlkX3AgPT0gMCAqLworKyAgaWYg KGdkYmFyY2hfZGVidWcgPj0gMikKKysgICAgZnByaW50Zl91bmZpbHRlcmVkIChnZGJfc3RkbG9n LCAiZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IGNhbGxlZFxuIik7Cisr ICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeDsKKyt9Cisr Cisrdm9pZAorK3NldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggKHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4 KQorK3sKKysgIGdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXggPSBzdGFw X3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4OworK30KKysKKytjb25zdCBjaGFyICoKKytnZGJh cmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisr eworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIC8qIFNraXAgdmVyaWZ5IG9m IHN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeCwgaW52YWxpZF9wID09IDAgKi8KKysgIGlmIChnZGJh cmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywgImdk YmFyY2hfc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2Ri YXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4OworK30KKysKKyt2b2lkCisrc2V0X2dkYmFy Y2hfc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX2dk Yl9yZWdpc3Rlcl9wcmVmaXgpCisreworKyAgZ2RiYXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfcHJl Zml4ID0gc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4OworK30KKysKKytjb25zdCBjaGFyICoKKytn ZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkK Kyt7CisrICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOworKyAgLyogU2tpcCB2ZXJpZnkg b2Ygc3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXgsIGludmFsaWRfcCA9PSAwICovCisrICBpZiAoZ2Ri YXJjaF9kZWJ1ZyA+PSAyKQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJn ZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4IGNhbGxlZFxuIik7CisrICByZXR1cm4gZ2Ri YXJjaC0+c3RhcF9nZGJfcmVnaXN0ZXJfc3VmaXg7CisrfQorKworK3ZvaWQKKytzZXRfZ2RiYXJj aF9zdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBzdGFwX2dkYl9y ZWdpc3Rlcl9zdWZpeCkKKyt7CisrICBnZGJhcmNoLT5zdGFwX2dkYl9yZWdpc3Rlcl9zdWZpeCA9 IHN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4OworK30KKysKKytpbnQKKytnZGJhcmNoX3N0YXBfaXNf c2luZ2xlX29wZXJhbmRfcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZ2RiX2Fz c2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIHJldHVybiBnZGJhcmNoLT5zdGFwX2lzX3Npbmds ZV9vcGVyYW5kICE9IE5VTEw7CisrfQorKworK2ludAorK2dkYmFyY2hfc3RhcF9pc19zaW5nbGVf b3BlcmFuZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpCisreworKyAg Z2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBOVUxMKTsKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPnN0 YXBfaXNfc2luZ2xlX29wZXJhbmQgIT0gTlVMTCk7CisrICBpZiAoZ2RiYXJjaF9kZWJ1ZyA+PSAy KQorKyAgICBmcHJpbnRmX3VuZmlsdGVyZWQgKGdkYl9zdGRsb2csICJnZGJhcmNoX3N0YXBfaXNf c2luZ2xlX29wZXJhbmQgY2FsbGVkXG4iKTsKKysgIHJldHVybiBnZGJhcmNoLT5zdGFwX2lzX3Np bmdsZV9vcGVyYW5kIChnZGJhcmNoLCBzKTsKKyt9CisrCisrdm9pZAorK3NldF9nZGJhcmNoX3N0 YXBfaXNfc2luZ2xlX29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFu ZF9mdHlwZSBzdGFwX2lzX3NpbmdsZV9vcGVyYW5kKQorK3sKKysgIGdkYmFyY2gtPnN0YXBfaXNf c2luZ2xlX29wZXJhbmQgPSBzdGFwX2lzX3NpbmdsZV9vcGVyYW5kOworK30KKysKKytpbnQKKytn ZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbl9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCkKKyt7CisrICBnZGJfYXNzZXJ0IChnZGJhcmNoICE9IE5VTEwpOworKyAgcmV0dXJuIGdkYmFy Y2gtPnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAhPSBOVUxMOworK30KKysKKytpbnQKKytnZGJh cmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHN0 cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCisreworKyAgZ2RiX2Fzc2VydCAoZ2RiYXJjaCAhPSBO VUxMKTsKKysgIGdkYl9hc3NlcnQgKGdkYmFyY2gtPnN0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAh PSBOVUxMKTsKKysgIGlmIChnZGJhcmNoX2RlYnVnID49IDIpCisrICAgIGZwcmludGZfdW5maWx0 ZXJlZCAoZ2RiX3N0ZGxvZywgImdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIGNhbGxl ZFxuIik7CisrICByZXR1cm4gZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChnZGJh cmNoLCBwKTsKKyt9CisrCisrdm9pZAorK3NldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90 b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBnZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbl9mdHlwZSBzdGFw X3BhcnNlX3NwZWNpYWxfdG9rZW4pCisreworKyAgZ2RiYXJjaC0+c3RhcF9wYXJzZV9zcGVjaWFs X3Rva2VuID0gc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuOworK30KKysKKyBpbnQKKyBnZGJhcmNo X2hhc19nbG9iYWxfc29saXN0IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7CitkaWZmIC0t Z2l0IGEvZ2RiL2dkYmFyY2guaCBiL2dkYi9nZGJhcmNoLmgKK2luZGV4IGMyNTdjNjMuLmVlYjhl NjIgMTAwNjQ0CistLS0gYS9nZGIvZ2RiYXJjaC5oCisrKysgYi9nZGIvZ2RiYXJjaC5oCitAQCAt NTUsNiArNTUsNyBAQCBzdHJ1Y3QgY29yZV9yZWdzZXRfc2VjdGlvbjsKKyBzdHJ1Y3Qgc3lzY2Fs bDsKKyBzdHJ1Y3QgYWdlbnRfZXhwcjsKKyBzdHJ1Y3QgYXhzX3ZhbHVlOworK3N0cnVjdCBzdGFw X3BhcnNlX2luZm87CisgCisgLyogVGhlIGFyY2hpdGVjdHVyZSBhc3NvY2lhdGVkIHdpdGggdGhl IGNvbm5lY3Rpb24gdG8gdGhlIHRhcmdldC4KKyAgCitAQCAtOTYzLDYgKzk2NCwxMjUgQEAgdHlw ZWRlZiBMT05HRVNUIChnZGJhcmNoX2dldF9zeXNjYWxsX251bWJlcl9mdHlwZSkgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLCBwdGkKKyBleHRlcm4gTE9OR0VTVCBnZGJhcmNoX2dldF9zeXNjYWxs X251bWJlciAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIHB0aWRfdCBwdGlkKTsKKyBleHRlcm4g dm9pZCBzZXRfZ2RiYXJjaF9nZXRfc3lzY2FsbF9udW1iZXIgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLCBnZGJhcmNoX2dldF9zeXNjYWxsX251bWJlcl9mdHlwZSAqZ2V0X3N5c2NhbGxfbnVtYmVy KTsKICAKLSAgIGlmICh0eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVl ZCB0byBhbGxvY2F0ZSBvbmUuICAqLwotICAgICB7Ci0tICAgICAgbnR5cGUgPSBhbGxvY190eXBl X2NvcHkgKHR5cGUpOwotKyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUp OworKy8qIFN5c3RlbVRhcCByZWxhdGVkIGZpZWxkcyBhbmQgZnVuY3Rpb25zLgorKyAgIFByZWZp eCB1c2VkIHRvIG1hcmsgYW4gaW50ZWdlciBjb25zdGFudCBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3Mg YXNzZW1ibHkKKysgICBGb3IgZXhhbXBsZSwgb24geDg2IGludGVnZXIgY29uc3RhbnRzIGFyZSB3 cml0dGVuIGFzOgorKyAgCisrICAgICQxMCA7OyBpbnRlZ2VyIGNvbnN0YW50IDEwCisrICAKKysg ICBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYWN0ZXIgYCQnLiAq LworKworK2V4dGVybiBjb25zdCBjaGFyICogZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9p bnRlZ2VyX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFw X2ludGVnZXJfcHJlZml4KTsKKysKKysvKiBTdWZpeCB1c2VkIHRvIG1hcmsgYW4gaW50ZWdlciBj b25zdGFudCBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkuICovCisrCisrZXh0ZXJuIGNv bnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpOworK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfaW50ZWdlcl9zdWZpeCAoc3Ry dWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKiBzdGFwX2ludGVnZXJfc3VmaXgpOwor KworKy8qIFByZWZpeCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBuYW1lIG9uIHRoZSBhcmNoaXRl Y3R1cmUncyBhc3NlbWJseS4KKysgICBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBu YW1lIGlzIHdyaXR0ZW4gYXM6CisrICAKKysgICAgJWVheCA7OyByZWdpc3RlciBlYXgKKysgIAor KyAgIGluIHRoaXMgY2FzZSwgdGhpcyBwcmVmaXggd291bGQgYmUgdGhlIGNoYXJhY3RlciBgJScu ICovCisrCisrZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfcHJlZml4 IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3Rh cF9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICog c3RhcF9yZWdpc3Rlcl9wcmVmaXgpOworKworKy8qIFN1Zml4IHVzZWQgdG8gbWFyayBhIHJlZ2lz dGVyIG5hbWUgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5ICovCisrCisrZXh0ZXJuIGNv bnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpn ZGJhcmNoKTsKKytleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChz dHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfcmVnaXN0ZXJfc3VmaXgp OworKworKy8qIFByZWZpeCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0 aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkuCisrICAgRm9yIGV4YW1wbGUsIG9uIHg4NiB0aGUg cmVnaXN0ZXIgaW5kaXJlY3Rpb24gaXMgd3JpdHRlbiBhczoKKysgIAorKyAgICAoJWVheCkgOzsg aW5kaXJlY3RpbmcgZWF4CisrICAKKysgICBpbiB0aGlzIGNhc2UsIHRoaXMgcHJlZml4IHdvdWxk IGJlIHRoZSBjaGFyYXRlciBgKCcuCisrICAKKysgICBQbGVhc2Ugbm90ZSB0aGF0IHdlIHVzZSB0 aGUgaW5kaXJlY3Rpb24gcHJlZml4IGFsc28gZm9yIHJlZ2lzdGVyCisrICAgZGlzcGxhY2VtZW50 LCBlLmcuLCBgNCglZWF4KScgb24geDg2LiAqLworKworK2V4dGVybiBjb25zdCBjaGFyICogZ2Ri YXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpOworK2V4dGVybiB2b2lkIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rp b25fcHJlZml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqIHN0YXBfcmVn aXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4KTsKKysKKysvKiBTdWZpeCB1c2VkIHRvIG1hcmsgYSBy ZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNzZW1ibHkuCisrICAg Rm9yIGV4YW1wbGUsIG9uIHg4NiB0aGUgcmVnaXN0ZXIgaW5kaXJlY3Rpb24gaXMgd3JpdHRlbiBh czoKKysgIAorKyAgICAoJWVheCkgOzsgaW5kaXJlY3RpbmcgZWF4CisrICAKKysgICBpbiB0aGlz IGNhc2UsIHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYXRlciBgKScuCisrICAKKysgICBQ bGVhc2Ugbm90ZSB0aGF0IHdlIHVzZSB0aGUgaW5kaXJlY3Rpb24gc3VmaXggYWxzbyBmb3IgcmVn aXN0ZXIKKysgICBkaXNwbGFjZW1lbnQsIGUuZy4sIGA0KCVlYXgpJyBvbiB4ODYuICovCisrCisr ZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3Vm aXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKKytleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9z dGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1Zml4IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwg Y29uc3QgY2hhciAqIHN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3VmaXgpOworKworKy8qIFBy ZWZpeCB1c2VkIHRvIG5hbWUgYSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuCisr ICAKKysgICBGb3IgZXhhbXBsZSwgb24gUFBDIGEgcmVnaXN0ZXIgaXMgcmVwcmVzZW50ZWQgYnkg YSBudW1iZXIgaW4gdGhlIGFzc2VtYmx5CisrICAgbGFuZ3VhZ2UgKGUuZy4sIGAxMCcgaXMgdGhl IDEwdGggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyKS4gIEhvd2V2ZXIsCisrICAgaW5zaWRlIEdE QiB0aGlzIHNhbWUgcmVnaXN0ZXIgaGFzIGFuIGByJyBhcHBlbmRlZCB0byBpdHMgbmFtZSwgc28g dGhlIDEwdGgKKysgICByZWdpc3RlciB3b3VsZCBiZSByZXByZXNlbnRlZCBhcyBgcjEwJyBpbnRl cm5hbGx5LiAqLworKworK2V4dGVybiBjb25zdCBjaGFyICogZ2RiYXJjaF9zdGFwX2dkYl9yZWdp c3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKTsKKytleHRlcm4gdm9pZCBzZXRf Z2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LCBjb25zdCBjaGFyICogc3RhcF9nZGJfcmVnaXN0ZXJfcHJlZml4KTsKKysKKysvKiBTdWZpeCB1 c2VkIHRvIG5hbWUgYSByZWdpc3RlciB1c2luZyBHREIncyBub21lbmNsYXR1cmUuICovCisrCisr ZXh0ZXJuIGNvbnN0IGNoYXIgKiBnZGJhcmNoX3N0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4IChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3RhcF9nZGJf cmVnaXN0ZXJfc3VmaXggKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICogc3Rh cF9nZGJfcmVnaXN0ZXJfc3VmaXgpOworKworKy8qIENoZWNrIGlmIFMgaXMgYSBzaW5nbGUgb3Bl cmFuZC4KKysgIAorKyAgIFNpbmdsZSBvcGVyYW5kcyBjYW4gYmU6CisrICAgIC0gTGl0ZXJhbCBp bnRlZ2VycywgZS5nLiBgJDEwJyBvbiB4ODYKKysgICAgLSBSZWdpc3RlciBhY2Nlc3MsIGUuZy4g YCVlYXgnIG9uIHg4NgorKyAgICAtIFJlZ2lzdGVyIGluZGlyZWN0aW9uLCBlLmcuIGAoJWVheCkn IG9uIHg4NgorKyAgICAtIFJlZ2lzdGVyIGRpc3BsYWNlbWVudCwgZS5nLiBgNCglZWF4KScgb24g eDg2CisrICAKKysgICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBjaGVjayBmb3IgdGhlc2UgcGF0dGVy bnMgb24gdGhlIHN0cmluZworKyAgIGFuZCByZXR1cm4gMSBpZiBzb21lIHdlcmUgZm91bmQsIG9y IHplcm8gb3RoZXJ3aXNlLiAgUGxlYXNlIHRyeSB0byBtYXRjaAorKyAgIGFzIG11Y2ggaW5mbyBh cyB5b3UgY2FuIGZyb20gdGhlIHN0cmluZywgaS5lLiwgaWYgeW91IGhhdmUgdG8gbWF0Y2gKKysg ICBzb21ldGhpbmcgbGlrZSBgKCUnLCBkbyBub3QgbWF0Y2gganVzdCB0aGUgYCgnLiAqLworKwor K2V4dGVybiBpbnQgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kX3AgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoKTsKKysKKyt0eXBlZGVmIGludCAoZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9v cGVyYW5kX2Z0eXBlKSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGNvbnN0IGNoYXIgKnMpOwor K2V4dGVybiBpbnQgZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJj aCAqZ2RiYXJjaCwgY29uc3QgY2hhciAqcyk7CisrZXh0ZXJuIHZvaWQgc2V0X2dkYmFyY2hfc3Rh cF9pc19zaW5nbGVfb3BlcmFuZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGdkYmFyY2hfc3Rh cF9pc19zaW5nbGVfb3BlcmFuZF9mdHlwZSAqc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7CisrCisr LyogRnVuY3Rpb24gdXNlZCB0byBoYW5kbGUgYSAic3BlY2lhbCBjYXNlIiBpbiB0aGUgcGFyc2Vy LgorKyAgCisrICAgQSAic3BlY2lhbCBjYXNlIiBpcyBjb25zaWRlcmVkIHRvIGJlIGFuIHVua25v d24gdG9rZW4sIGkuZS4sIGEgdG9rZW4KKysgICB0aGF0IHRoZSBwYXJzZXIgZG9lcyBub3Qga25v dyBob3cgdG8gcGFyc2UuICBBIGdvb2QgZXhhbXBsZSBvZiBzcGVjaWFsCisrICAgY2FzZSB3b3Vs ZCBiZSBBUk0ncyByZWdpc3RlciBkaXNwbGFjZW1lbnQgc3ludGF4OgorKyAgCisrICAgIFtSMCwg IzRdICA7OyBkaXNwbGFjaW5nIFIwIGJ5IDQKKysgIAorKyAgIFNpbmNlIHRoZSBwYXJzZXIgYXNz dW1lcyB0aGF0IGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IGlzIG9mIHRoZSBmb3JtOgorKyAgCisr ICAgIDxudW1iZXI+IDxpbmRpcmVjdGlvbl9wcmVmaXg+IDxyZWdpc3Rlcl9uYW1lPiA8aW5kaXJl Y3Rpb25fc3VmaXg+CisrICAKKysgICBpdCBtZWFucyB0aGF0IGl0IHdpbGwgbm90IGJlIGFibGUg dG8gcmVjb2duaXplIGFuZCBwYXJzZSB0aGlzIG9kZCBzeW50YXguCisrICAgVGhlcmVmb3JlLCB3 ZSBzaG91bGQgYWRkIGEgc3BlY2lhbCBjYXNlIGZ1bmN0aW9uIHRoYXQgd2lsbCBoYW5kbGUgdGhp cyB0b2tlbi4KKysgIAorKyAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGdlbmVyYXRlIHRoZSBwcm9w ZXIgZXhwcmVzc2lvbiBmb3JtIG9mIHRoZSBleHByZXNzaW9uCisrICAgdXNpbmcgR0RCJ3MgaW50 ZXJuYWwgZXhwcmVzc2lvbiBtZWNoYW5pc20gKGUuZy4sIGB3cml0ZV9leHBfZWx0X29wY29kZScK KysgICBhbmQgc28gb24pLiAgSXQgc2hvdWxkIGFsc28gcmV0dXJuIDEgaWYgdGhlIHBhcnNpbmcg d2FzIHN1Y2Nlc3NmdWwsIG9yIHplcm8KKysgICBpZiB0aGUgdG9rZW4gd2FzIG5vdCByZWNvZ25p emVkIGFzIGEgc3BlY2lhbCB0b2tlbiAoaW4gdGhpcyBjYXNlLCByZXR1cm5pbmcKKysgICB6ZXJv IG1lYW5zIHRoYXQgdGhlIHNwZWNpYWwgcGFyc2VyIGlzIGRlZmVycmluZyB0aGUgcGFyc2luZyB0 byB0aGUgZ2VuZXJpYworKyAgIHBhcnNlciksIGFuZCBzaG91bGQgYWR2YW5jZSB0aGUgYnVmZmVy IHBvaW50ZXIgKHAtPmFyZykuICovCisrCisrZXh0ZXJuIGludCBnZGJhcmNoX3N0YXBfcGFyc2Vf c3BlY2lhbF90b2tlbl9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCk7CisrCisrdHlwZWRlZiBp bnQgKGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX2Z0eXBlKSAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsIHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApOworK2V4dGVybiBpbnQgZ2Ri YXJjaF9zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBz dHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKTsKKytleHRlcm4gdm9pZCBzZXRfZ2RiYXJjaF9zdGFw X3BhcnNlX3NwZWNpYWxfdG9rZW4gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBnZGJhcmNoX3N0 YXBfcGFyc2Vfc3BlY2lhbF90b2tlbl9mdHlwZSAqc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuKTsK KysKKyAvKiBUcnVlIGlmIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMgaXMgb25lIGFuZCBv bmx5IGZvciBhbGwKKyAgICBwcm9jZXNzZXMsIGFzIG9wcG9zZWQgdG8gYSBsaXN0IG9mIHNoYXJl ZCBsaWJyYXJpZXMgcGVyIGluZmVyaW9yLgorICAgIFRoaXMgdXN1YWxseSBtZWFucyB0aGF0IGFs bCBwcm9jZXNzZXMsIGFsdGhvdWdoIG1heSBvciBtYXkgbm90IHNoYXJlCitkaWZmIC0tZ2l0IGEv Z2RiL2dkYmFyY2guc2ggYi9nZGIvZ2RiYXJjaC5zaAoraW5kZXggMGMzMzQ0Zi4uNTM0M2FjZSAx MDA3NTUKKy0tLSBhL2dkYi9nZGJhcmNoLnNoCisrKysgYi9nZGIvZ2RiYXJjaC5zaAorQEAgLTc4 Nyw2ICs3ODcsMTAxIEBAIE06dm9pZDpyZWNvcmRfc3BlY2lhbF9zeW1ib2w6c3RydWN0IG9iamZp bGUgKm9iamZpbGUsIGFzeW1ib2wgKnN5bTpvYmpmaWxlLCBzeW0KKyAjIEdldCBhcmNoaXRlY3R1 cmUtc3BlY2lmaWMgc3lzdGVtIGNhbGxzIGluZm9ybWF0aW9uIGZyb20gcmVnaXN0ZXJzLgorIE06 TE9OR0VTVDpnZXRfc3lzY2FsbF9udW1iZXI6cHRpZF90IHB0aWQ6cHRpZAorIAorKyMgU3lzdGVt VGFwIHJlbGF0ZWQgZmllbGRzIGFuZCBmdW5jdGlvbnMuCisrCisrIyBQcmVmaXggdXNlZCB0byBt YXJrIGFuIGludGVnZXIgY29uc3RhbnQgb24gdGhlIGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5Cisr IyBGb3IgZXhhbXBsZSwgb24geDg2IGludGVnZXIgY29uc3RhbnRzIGFyZSB3cml0dGVuIGFzOgor KyMKKysjICBcJDEwIDs7IGludGVnZXIgY29uc3RhbnQgMTAKKysjCisrIyBpbiB0aGlzIGNhc2Us IHRoaXMgcHJlZml4IHdvdWxkIGJlIHRoZSBjaGFyYWN0ZXIgXGBcJFwnLgorK3Y6Y29uc3QgY2hh ciAqOnN0YXBfaW50ZWdlcl9wcmVmaXg6OjowOjA6OjA6Z2RiYXJjaC0+c3RhcF9pbnRlZ2VyX3By ZWZpeAorKworKyMgU3VmaXggdXNlZCB0byBtYXJrIGFuIGludGVnZXIgY29uc3RhbnQgb24gdGhl IGFyY2hpdGVjdHVyZSdzIGFzc2VtYmx5LgorK3Y6Y29uc3QgY2hhciAqOnN0YXBfaW50ZWdlcl9z dWZpeDo6OjA6MDo6MDpnZGJhcmNoLT5zdGFwX2ludGVnZXJfc3VmaXgKKysKKysjIFByZWZpeCB1 c2VkIHRvIG1hcmsgYSByZWdpc3RlciBuYW1lIG9uIHRoZSBhcmNoaXRlY3R1cmUncyBhc3NlbWJs eS4KKysjIEZvciBleGFtcGxlLCBvbiB4ODYgdGhlIHJlZ2lzdGVyIG5hbWUgaXMgd3JpdHRlbiBh czoKKysjCisrIyAgXCVlYXggOzsgcmVnaXN0ZXIgZWF4CisrIworKyMgaW4gdGhpcyBjYXNlLCB0 aGlzIHByZWZpeCB3b3VsZCBiZSB0aGUgY2hhcmFjdGVyIFxgXCVcJy4KKyt2OmNvbnN0IGNoYXIg KjpzdGFwX3JlZ2lzdGVyX3ByZWZpeDo6OjA6MDo6MDpnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX3By ZWZpeAorKworKyMgU3VmaXggdXNlZCB0byBtYXJrIGEgcmVnaXN0ZXIgbmFtZSBvbiB0aGUgYXJj aGl0ZWN0dXJlJ3MgYXNzZW1ibHkKKyt2OmNvbnN0IGNoYXIgKjpzdGFwX3JlZ2lzdGVyX3N1Zml4 Ojo6MDowOjowOmdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfc3VmaXgKKysKKysjIFByZWZpeCB1c2Vk IHRvIG1hcmsgYSByZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0aGUgYXJjaGl0ZWN0dXJlJ3MgYXNz ZW1ibHkuCisrIyBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBp cyB3cml0dGVuIGFzOgorKyMKKysjICBcKFwlZWF4XCkgOzsgaW5kaXJlY3RpbmcgZWF4CisrIwor KyMgaW4gdGhpcyBjYXNlLCB0aGlzIHByZWZpeCB3b3VsZCBiZSB0aGUgY2hhcmF0ZXIgXGBcKFwn LgorKyMKKysjIFBsZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRpcmVjdGlvbiBwcmVmaXgg YWxzbyBmb3IgcmVnaXN0ZXIKKysjIGRpc3BsYWNlbWVudCwgZS5nLiwgXGA0XChcJWVheFwpXCcg b24geDg2LgorK3Y6Y29uc3QgY2hhciAqOnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4 Ojo6MDowOjowOmdkYmFyY2gtPnN0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4CisrCisr IyBTdWZpeCB1c2VkIHRvIG1hcmsgYSByZWdpc3RlciBpbmRpcmVjdGlvbiBvbiB0aGUgYXJjaGl0 ZWN0dXJlJ3MgYXNzZW1ibHkuCisrIyBGb3IgZXhhbXBsZSwgb24geDg2IHRoZSByZWdpc3RlciBp bmRpcmVjdGlvbiBpcyB3cml0dGVuIGFzOgorKyMKKysjICBcKFwlZWF4XCkgOzsgaW5kaXJlY3Rp bmcgZWF4CisrIworKyMgaW4gdGhpcyBjYXNlLCB0aGlzIHByZWZpeCB3b3VsZCBiZSB0aGUgY2hh cmF0ZXIgXGBcKVwnLgorKyMKKysjIFBsZWFzZSBub3RlIHRoYXQgd2UgdXNlIHRoZSBpbmRpcmVj dGlvbiBzdWZpeCBhbHNvIGZvciByZWdpc3RlcgorKyMgZGlzcGxhY2VtZW50LCBlLmcuLCBcYDRc KFwlZWF4XClcJyBvbiB4ODYuCisrdjpjb25zdCBjaGFyICo6c3RhcF9yZWdpc3Rlcl9pbmRpcmVj dGlvbl9zdWZpeDo6OjA6MDo6MDpnZGJhcmNoLT5zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3N1 Zml4CisrCisrIyBQcmVmaXggdXNlZCB0byBuYW1lIGEgcmVnaXN0ZXIgdXNpbmcgR0RCJ3Mgbm9t ZW5jbGF0dXJlLgorKyMKKysjIEZvciBleGFtcGxlLCBvbiBQUEMgYSByZWdpc3RlciBpcyByZXBy ZXNlbnRlZCBieSBhIG51bWJlciBpbiB0aGUgYXNzZW1ibHkKKysjIGxhbmd1YWdlIChlLmcuLCBc YDEwXCcgaXMgdGhlIDEwdGggZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyKS4gIEhvd2V2ZXIsCisr IyBpbnNpZGUgR0RCIHRoaXMgc2FtZSByZWdpc3RlciBoYXMgYW4gXGByXCcgYXBwZW5kZWQgdG8g aXRzIG5hbWUsIHNvIHRoZSAxMHRoCisrIyByZWdpc3RlciB3b3VsZCBiZSByZXByZXNlbnRlZCBh cyBcYHIxMFwnIGludGVybmFsbHkuCisrdjpjb25zdCBjaGFyICo6c3RhcF9nZGJfcmVnaXN0ZXJf cHJlZml4Ojo6MDowOjowOmdkYmFyY2gtPnN0YXBfZ2RiX3JlZ2lzdGVyX3ByZWZpeAorKworKyMg U3VmaXggdXNlZCB0byBuYW1lIGEgcmVnaXN0ZXIgdXNpbmcgR0RCJ3Mgbm9tZW5jbGF0dXJlLgor K3Y6Y29uc3QgY2hhciAqOnN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4Ojo6MDowOjowOmdkYmFyY2gt PnN0YXBfZ2RiX3JlZ2lzdGVyX3N1Zml4CisrCisrIyBDaGVjayBpZiBTIGlzIGEgc2luZ2xlIG9w ZXJhbmQuCisrIworKyMgU2luZ2xlIG9wZXJhbmRzIGNhbiBiZToKKysjICBcLSBMaXRlcmFsIGlu dGVnZXJzLCBlLmcuIFxgXCQxMFwnIG9uIHg4NgorKyMgIFwtIFJlZ2lzdGVyIGFjY2VzcywgZS5n LiBcYFwlZWF4XCcgb24geDg2CisrIyAgXC0gUmVnaXN0ZXIgaW5kaXJlY3Rpb24sIGUuZy4gXGBc KFwlZWF4XClcJyBvbiB4ODYKKysjICBcLSBSZWdpc3RlciBkaXNwbGFjZW1lbnQsIGUuZy4gXGA0 XChcJWVheFwpXCcgb24geDg2CisrIworKyMgVGhpcyBmdW5jdGlvbiBzaG91bGQgY2hlY2sgZm9y IHRoZXNlIHBhdHRlcm5zIG9uIHRoZSBzdHJpbmcKKysjIGFuZCByZXR1cm4gMSBpZiBzb21lIHdl cmUgZm91bmQsIG9yIHplcm8gb3RoZXJ3aXNlLiAgUGxlYXNlIHRyeSB0byBtYXRjaAorKyMgYXMg bXVjaCBpbmZvIGFzIHlvdSBjYW4gZnJvbSB0aGUgc3RyaW5nLCBpLmUuLCBpZiB5b3UgaGF2ZSB0 byBtYXRjaAorKyMgc29tZXRoaW5nIGxpa2UgXGBcKFwlXCcsIGRvIG5vdCBtYXRjaCBqdXN0IHRo ZSBcYFwoXCcuCisrTTppbnQ6c3RhcF9pc19zaW5nbGVfb3BlcmFuZDpjb25zdCBjaGFyICpzOnMK KysKKysjIEZ1bmN0aW9uIHVzZWQgdG8gaGFuZGxlIGEgInNwZWNpYWwgY2FzZSIgaW4gdGhlIHBh cnNlci4KKysjCisrIyBBICJzcGVjaWFsIGNhc2UiIGlzIGNvbnNpZGVyZWQgdG8gYmUgYW4gdW5r bm93biB0b2tlbiwgaS5lLiwgYSB0b2tlbgorKyMgdGhhdCB0aGUgcGFyc2VyIGRvZXMgbm90IGtu b3cgaG93IHRvIHBhcnNlLiAgQSBnb29kIGV4YW1wbGUgb2Ygc3BlY2lhbAorKyMgY2FzZSB3b3Vs ZCBiZSBBUk0ncyByZWdpc3RlciBkaXNwbGFjZW1lbnQgc3ludGF4OgorKyMKKysjICBbUjAsICM0 XSAgOzsgZGlzcGxhY2luZyBSMCBieSA0CisrIworKyMgU2luY2UgdGhlIHBhcnNlciBhc3N1bWVz IHRoYXQgYSByZWdpc3RlciBkaXNwbGFjZW1lbnQgaXMgb2YgdGhlIGZvcm06CisrIworKyMgIDxu dW1iZXI+IDxpbmRpcmVjdGlvbl9wcmVmaXg+IDxyZWdpc3Rlcl9uYW1lPiA8aW5kaXJlY3Rpb25f c3VmaXg+CisrIworKyMgaXQgbWVhbnMgdGhhdCBpdCB3aWxsIG5vdCBiZSBhYmxlIHRvIHJlY29n bml6ZSBhbmQgcGFyc2UgdGhpcyBvZGQgc3ludGF4LgorKyMgVGhlcmVmb3JlLCB3ZSBzaG91bGQg YWRkIGEgc3BlY2lhbCBjYXNlIGZ1bmN0aW9uIHRoYXQgd2lsbCBoYW5kbGUgdGhpcyB0b2tlbi4K KysjCisrIyBUaGlzIGZ1bmN0aW9uIHNob3VsZCBnZW5lcmF0ZSB0aGUgcHJvcGVyIGV4cHJlc3Np b24gZm9ybSBvZiB0aGUgZXhwcmVzc2lvbgorKyMgdXNpbmcgR0RCXCdzIGludGVybmFsIGV4cHJl c3Npb24gbWVjaGFuaXNtIChlLmcuLCBcYHdyaXRlX2V4cF9lbHRfb3Bjb2RlXCcKKysjIGFuZCBz byBvbikuICBJdCBzaG91bGQgYWxzbyByZXR1cm4gMSBpZiB0aGUgcGFyc2luZyB3YXMgc3VjY2Vz c2Z1bCwgb3IgemVybworKyMgaWYgdGhlIHRva2VuIHdhcyBub3QgcmVjb2duaXplZCBhcyBhIHNw ZWNpYWwgdG9rZW4gKGluIHRoaXMgY2FzZSwgcmV0dXJuaW5nCisrIyB6ZXJvIG1lYW5zIHRoYXQg dGhlIHNwZWNpYWwgcGFyc2VyIGlzIGRlZmVycmluZyB0aGUgcGFyc2luZyB0byB0aGUgZ2VuZXJp YworKyMgcGFyc2VyKSwgYW5kIHNob3VsZCBhZHZhbmNlIHRoZSBidWZmZXIgcG9pbnRlciAocC0+ YXJnKS4KKytNOmludDpzdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW46c3RydWN0IHN0YXBfcGFyc2Vf aW5mbyAqcDpwCisrCisrCisgIyBUcnVlIGlmIHRoZSBsaXN0IG9mIHNoYXJlZCBsaWJyYXJpZXMg aXMgb25lIGFuZCBvbmx5IGZvciBhbGwKKyAjIHByb2Nlc3NlcywgYXMgb3Bwb3NlZCB0byBhIGxp c3Qgb2Ygc2hhcmVkIGxpYnJhcmllcyBwZXIgaW5mZXJpb3IuCisgIyBUaGlzIHVzdWFsbHkgbWVh bnMgdGhhdCBhbGwgcHJvY2Vzc2VzLCBhbHRob3VnaCBtYXkgb3IgbWF5IG5vdCBzaGFyZQorQEAg LTk0Niw2ICsxMDQxLDcgQEAgc3RydWN0IGNvcmVfcmVnc2V0X3NlY3Rpb247Cisgc3RydWN0IHN5 c2NhbGw7Cisgc3RydWN0IGFnZW50X2V4cHI7Cisgc3RydWN0IGF4c192YWx1ZTsKKytzdHJ1Y3Qg c3RhcF9wYXJzZV9pbmZvOworIAorIC8qIFRoZSBhcmNoaXRlY3R1cmUgYXNzb2NpYXRlZCB3aXRo IHRoZSBjb25uZWN0aW9uIHRvIHRoZSB0YXJnZXQuCisgIAorZGlmZiAtLWdpdCBhL2dkYi9nZGJp bml0LmluIGIvZ2RiL2dkYmluaXQuaW4KK2luZGV4IGZmYjdmNTMuLmEyZTdlOTQgMTAwNjQ0Cist LS0gYS9nZGIvZ2RiaW5pdC5pbgorKysrIGIvZ2RiL2dkYmluaXQuaW4KK0BAIC0xLDUgKzEsMTUg QEAKKyBlY2hvIFNldHRpbmcgdXAgdGhlIGVudmlyb25tZW50IGZvciBkZWJ1Z2dpbmcgZ2RiLlxu CisgCisrIyBTZXQgdXAgdGhlIFB5dGhvbiBsaWJyYXJ5IGFuZCAicmVxdWlyZSIgY29tbWFuZC4K KytweXRob24KKytmcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgKKytnZGIuZGF0YWRpciA9IGFi c3BhdGggKCdAc3JjZGlyQC9weXRob24vbGliJykKKytnZGIucHl0aG9ubGliZGlyID0gZ2RiLmRh dGFkaXIKKytnZGIuX19wYXRoX18gPSBbZ2RiLmRhdGFkaXIgKyAnL2dkYiddCisrc3lzLnBhdGgu aW5zZXJ0KDAsIGdkYi5kYXRhZGlyKQorK2VuZAorK3NvdXJjZSBAc3JjZGlyQC9weXRob24vbGli L2dkYi9fX2luaXRfXy5weQorKworIHNldCBjb21wbGFpbnRzIDEKKyAKKyBiIGludGVybmFsX2Vy cm9yCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnR5cGVzLmMgYi9nZGIvZ2RidHlwZXMuYworaW5kZXgg ZDBjYjY3OC4uOGI4YjAzZCAxMDA2NDQKKy0tLSBhL2dkYi9nZGJ0eXBlcy5jCisrKysgYi9nZGIv Z2RidHlwZXMuYworQEAgLTM5LDYgKzM5LDkgQEAKKyAjaW5jbHVkZSAiY3AtYWJpLmgiCisgI2lu Y2x1ZGUgImdkYl9hc3NlcnQuaCIKKyAjaW5jbHVkZSAiaGFzaHRhYi5oIgorKyNpbmNsdWRlICJv YnNlcnZlci5oIgorKyNpbmNsdWRlICJkd2FyZjJleHByLmgiCisrI2luY2x1ZGUgImR3YXJmMmxv Yy5oIgorIAorIAorIC8qIEluaXRpYWxpemUgQkFETkVTUyBjb25zdGFudHMuICAqLworQEAgLTE0 NCw3ICsxNDcsMTYgQEAgc3RhdGljIHZvaWQgcHJpbnRfYml0X3ZlY3RvciAoQl9UWVBFICosIGlu dCk7Cisgc3RhdGljIHZvaWQgcHJpbnRfYXJnX3R5cGVzIChzdHJ1Y3QgZmllbGQgKiwgaW50LCBp bnQpOworIHN0YXRpYyB2b2lkIGR1bXBfZm5fZmllbGRsaXN0cyAoc3RydWN0IHR5cGUgKiwgaW50 KTsKKyBzdGF0aWMgdm9pZCBwcmludF9jcGx1c19zdHVmZiAoc3RydWN0IHR5cGUgKiwgaW50KTsK KytzdGF0aWMgTE9OR0VTVCB0eXBlX2xlbmd0aF9nZXQgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1 Y3QgdHlwZSAqdGFyZ2V0X3R5cGUsCisrCQkJCWludCBmdWxsX3NwYW4pOworIAorKyNpZiAwCisr LyogVGhlIGhhc2ggdGFibGUgaG9sZGluZyBhbGwgZGlzY2FyZGFibGUgYHN0cnVjdCB0eXBlICon IHJlZmVyZW5jZXMuICAqLworK3N0YXRpYyBodGFiX3QgdHlwZV9kaXNjYXJkYWJsZV90YWJsZTsK KysKKysvKiBDdXJyZW50IHR5cGVfZGlzY2FyZGFibGVfY2hlY2sgcGFzcyB1c2VkIGZvciBUWVBF X0RJU0NBUkRBQkxFX0FHRS4gICovCisrc3RhdGljIGludCB0eXBlX2Rpc2NhcmRhYmxlX2FnZV9j dXJyZW50OworKyNlbmRpZgorIAorIC8qIEFsbG9jYXRlIGEgbmV3IE9CSkZJTEUtYXNzb2NpYXRl ZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29tZSBkZWZhdWx0cy4gIFNw YWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCitAQCAtMTc1LDYgKzE4Nyw0 MyBAQCBhbGxvY190eXBlIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSkKKyAgIHJldHVybiB0eXBl OworIH0KKyAKKysjaWYgMAorKy8qIERlY2xhcmUgVFlQRSBhcyBkaXNjYXJkYWJsZSBvbiBuZXh0 IGdhcmJhZ2UgY29sbGVjdGlvbiBieSBmcmVlX2FsbF90eXBlcy4KKysgICBZb3UgbXVzdCBjYWxs IHR5cGVfbWFya191c2VkIGR1cmluZyBlYWNoIGZyZWVfYWxsX3R5cGVzIHRvIHByb3RlY3QgVFlQ RSBmcm9tCisrICAgYmVpbmcgZGVhbGxvY2F0ZWQuICAqLworKworK3N0YXRpYyB2b2lkCisrc2V0 X3R5cGVfYXNfZGlzY2FyZGFibGUgKHN0cnVjdCB0eXBlICp0eXBlKQorK3sKKysgIHZvaWQgKipz bG90OworKworKyAgZ2RiX2Fzc2VydCAoIVRZUEVfRElTQ0FSREFCTEUgKHR5cGUpKTsKKysKKysg IFRZUEVfRElTQ0FSREFCTEUgKHR5cGUpID0gMTsKKysgIFRZUEVfRElTQ0FSREFCTEVfQUdFICh0 eXBlKSA9IHR5cGVfZGlzY2FyZGFibGVfYWdlX2N1cnJlbnQ7CisrCisrICBzbG90ID0gaHRhYl9m aW5kX3Nsb3QgKHR5cGVfZGlzY2FyZGFibGVfdGFibGUsIHR5cGUsIElOU0VSVCk7CisrICBnZGJf YXNzZXJ0ICghKnNsb3QpOworKyAgKnNsb3QgPSB0eXBlOworK30KKysjZW5kaWYKKysKKysvKiBB bGxvY2F0ZSBhIG5ldyB0eXBlIGxpa2UgYWxsb2NfdHlwZSBidXQgcHJlc2VydmUgZm9yIGl0IHRo ZSBkaXNjYXJkYWJpbGl0eQorKyAgIHN0YXRlIG9mIFBBUkVOVF9UWVBFLiAgKi8KKysKKytzdGF0 aWMgc3RydWN0IHR5cGUgKgorK2FsbG9jX3R5cGVfYXNfcGFyZW50IChzdHJ1Y3QgdHlwZSAqcGFy ZW50X3R5cGUpCisreworKyAgc3RydWN0IHR5cGUgKm5ld190eXBlID0gYWxsb2NfdHlwZV9jb3B5 IChwYXJlbnRfdHlwZSk7CisrCisrI2lmIDAKKysgIGlmIChUWVBFX0RJU0NBUkRBQkxFIChwYXJl bnRfdHlwZSkpCisrICAgIHNldF90eXBlX2FzX2Rpc2NhcmRhYmxlIChuZXdfdHlwZSk7CisrI2Vu ZGlmCisrCisrICByZXR1cm4gbmV3X3R5cGU7CisrfQorKworIC8qIEFsbG9jYXRlIGEgbmV3IEdE QkFSQ0gtYXNzb2NpYXRlZCB0eXBlIHN0cnVjdHVyZSBhbmQgZmlsbCBpdAorICAgIHdpdGggc29t ZSBkZWZhdWx0cy4gIFNwYWNlIGZvciB0aGUgdHlwZSBzdHJ1Y3R1cmUgaXMgYWxsb2NhdGVkCisg ICAgb24gdGhlIGhlYXAuICAqLworQEAgLTMwMCw3ICszNDksNyBAQCBtYWtlX3BvaW50ZXJfdHlw ZSAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCB0eXBlICoqdHlwZXB0cikKKyAKKyAgIGlmICh0 eXBlcHRyID09IDAgfHwgKnR5cGVwdHIgPT0gMCkJLyogV2UnbGwgbmVlZCB0byBhbGxvY2F0ZSBv bmUuICAqLworICAgICB7CistICAgICAgbnR5cGUgPSBhbGxvY190eXBlX2NvcHkgKHR5cGUpOwor KyAgICAgIG50eXBlID0gYWxsb2NfdHlwZV9hc19wYXJlbnQgKHR5cGUpOworICAgICAgIGlmICh0 eXBlcHRyKQorIAkqdHlwZXB0ciA9IG50eXBlOworICAgICB9CitAQCAtMzc3LDcgKzQyNiw3IEBA IG1ha2VfcmVmZXJlbmNlX3R5cGUgKHN0cnVjdCB0eXBlICp0eXBlLCBzdHJ1Y3QgdHlwZSAqKnR5 cGVwdHIpCisgCisgICBpZiAodHlwZXB0ciA9PSAwIHx8ICp0eXBlcHRyID09IDApCS8qIFdlJ2xs IG5lZWQgdG8gYWxsb2NhdGUgb25lLiAgKi8KKyAgICAgeworLSAgICAgIG50eXBlID0gYWxsb2Nf dHlwZV9jb3B5ICh0eXBlKTsKKysgICAgICBudHlwZSA9IGFsbG9jX3R5cGVfYXNfcGFyZW50ICh0 eXBlKTsKICAgICAgICBpZiAodHlwZXB0cikKICAJKnR5cGVwdHIgPSBudHlwZTsKICAgICAgfQot QEAgLTc0OCw2ICs3OTcsNyBAQCBjcmVhdGVfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKnJlc3Vs dF90CitAQCAtNzUwLDYgKzc5OSw3IEBAIGNyZWF0ZV9yYW5nZV90eXBlIChzdHJ1Y3QgdHlwZSAq cmVzdWx0X3R5cGUsIHN0cnVjdCB0eXBlICppbmRleF90eXBlLAogICAgICBUWVBFX1pBTExPQyAo cmVzdWx0X3R5cGUsIHNpemVvZiAoc3RydWN0IHJhbmdlX2JvdW5kcykpOwogICAgVFlQRV9MT1df Qk9VTkQgKHJlc3VsdF90eXBlKSA9IGxvd19ib3VuZDsKICAgIFRZUEVfSElHSF9CT1VORCAocmVz dWx0X3R5cGUpID0gaGlnaF9ib3VuZDsKQEAgLTM3NDEsNyArNDIxOSw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgCiAgICBpZiAobG93X2JvdW5kID49IDAp CiAgICAgIFRZUEVfVU5TSUdORUQgKHJlc3VsdF90eXBlKSA9IDE7Ci1AQCAtODkxLDI2ICs5NDEs MzEgQEAgY3JlYXRlX2FycmF5X3R5cGUgKHN0cnVjdCB0eXBlICpyZXN1bHRfdAorQEAgLTg5Mywy NiArOTQzLDMxIEBAIGNyZWF0ZV9hcnJheV90eXBlIChzdHJ1Y3QgdHlwZSAqcmVzdWx0X3R5cGUs CiAgCiAgICBUWVBFX0NPREUgKHJlc3VsdF90eXBlKSA9IFRZUEVfQ09ERV9BUlJBWTsKICAgIFRZ UEVfVEFSR0VUX1RZUEUgKHJlc3VsdF90eXBlKSA9IGVsZW1lbnRfdHlwZTsKQEAgLTM3ODYsNyAr NDI2NCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgCiAg ICByZXR1cm4gcmVzdWx0X3R5cGU7CiAgfQotQEAgLTE0MzksNiArMTQ5NCwxMDUgQEAgc3R1Yl9u b25hbWVfY29tcGxhaW50ICh2b2lkKQorQEAgLTE0NDEsNiArMTQ5NiwxMDUgQEAgc3R1Yl9ub25h bWVfY29tcGxhaW50ICh2b2lkKQogICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBf KCJzdHViIHR5cGUgaGFzIE5VTEwgbmFtZSIpKTsKICB9CiAgCkBAIC0zODIzLDcgKzQzMDEsNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogKyAgLyogSXQgbWF5 IGhhcHBlbiBmb3Igd3JvbmcgRFdBUkYgYW5ub3RhdGlvbnMgcmV0dXJuaW5nIGdhcmJhZ2UgZGF0 YS4gICovCiArICBpZiAoY291bnQgPCAwKQogKyAgICB3YXJuaW5nIChfKCJSYW5nZSBmb3IgdHlw ZSAlcyBoYXMgaW52YWxpZCBib3VuZHMgJXMuLiVzIiksCi0rCSAgICAgVFlQRV9OQU1FICh0eXBl KSwgcGxvbmdlc3QgKFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSksCisrCSAgICAgVFlQRV9F UlJPUl9OQU1FICh0eXBlKSwgcGxvbmdlc3QgKFRZUEVfTE9XX0JPVU5EIChyYW5nZV90eXBlKSks CiArCSAgICAgcGxvbmdlc3QgKFRZUEVfSElHSF9CT1VORCAocmFuZ2VfdHlwZSkpKTsKICsgIC8q IFRoZSBjb2RlIGJlbG93IGRvZXMgbm90IGhhbmRsZSBjb3VudCA9PSAwIHJpZ2h0LiAgKi8KICsg IGlmIChjb3VudCA8PSAwKQpAQCAtMzg5Miw3ICs0MzcwLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmMKICAvKiBGaW5kIHRoZSByZWFsIHR5cGUgb2YgVFlQRS4g IFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVhbCB0eXBlLAogICAgIGFmdGVyIHJlbW92aW5n IGFsbCBsYXllcnMgb2YgdHlwZWRlZnMsIGFuZCBjb21wbGV0aW5nIG9wYXF1ZSBvciBzdHViCiAg ICAgdHlwZXMuICBDb21wbGV0aW9uIGNoYW5nZXMgdGhlIFRZUEUgYXJndW1lbnQsIGJ1dCBzdHJp cHBpbmcgb2YKLUBAIC0xNjAxLDUyICsxNzU1LDM3IEBAIGNoZWNrX3R5cGVkZWYgKHN0cnVjdCB0 eXBlICp0eXBlKQorQEAgLTE2MDcsNTIgKzE3NjEsMzcgQEAgY2hlY2tfdHlwZWRlZiAoc3RydWN0 IHR5cGUgKnR5cGUpCiAgICAgICAgICB9CiAgICAgIH0KICAKQEAgLTM5NjYsNyArNDQ0NCw3IEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgCSAgVFlQRV9UQVJH RVRfU1RVQiAodHlwZSkgPSAwOwogIAl9CiAgICAgICAgZWxzZSBpZiAoVFlQRV9DT0RFICh0eXBl KSA9PSBUWVBFX0NPREVfUkFOR0UpCi1AQCAtMTY1NCw2ICsxNzkzLDcgQEAgY2hlY2tfdHlwZWRl ZiAoc3RydWN0IHR5cGUgKnR5cGUpCitAQCAtMTY2MCw2ICsxNzk5LDcgQEAgY2hlY2tfdHlwZWRl ZiAoc3RydWN0IHR5cGUgKnR5cGUpCiAgCSAgVFlQRV9MRU5HVEggKHR5cGUpID0gVFlQRV9MRU5H VEggKHRhcmdldF90eXBlKTsKICAJICBUWVBFX1RBUkdFVF9TVFVCICh0eXBlKSA9IDA7CiAgCX0K QEAgLTM5NzQsNyArNDQ1Miw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0 eXBlcy5jCiAgICAgIH0KICAKICAgIHR5cGUgPSBtYWtlX3F1YWxpZmllZF90eXBlICh0eXBlLCBp bnN0YW5jZV9mbGFncywgTlVMTCk7Ci1AQCAtMzI5MiwzMyArMzQzMiw0MiBAQCB0eXBlX3BhaXJf ZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zCitAQCAtMzMwOSwzMyArMzQ0OSw0MiBAQCB0 eXBlX3BhaXJfZXEgKGNvbnN0IHZvaWQgKml0ZW1fbGhzLCBjb25zdCB2b2lkICppdGVtX3JocykK ICB9CiAgCiAgLyogQWxsb2NhdGUgdGhlIGhhc2ggdGFibGUgdXNlZCBieSBjb3B5X3R5cGVfcmVj dXJzaXZlIHRvIHdhbGsKQEAgLTQwMzIsNyArNDUxMCw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgICAgIHJldHVybiB0eXBlOwogIAogICAgLyogVGhpcyB0 eXBlIHNob3VsZG4ndCBiZSBwb2ludGluZyB0byBhbnkgdHlwZXMgaW4gb3RoZXIgb2JqZmlsZXM7 Ci1AQCAtMzMzMyw5ICszNDgyLDEwIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpm aWxlICpvYmoKK0BAIC0zMzUwLDkgKzM0OTksMTAgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCiAgICBuZXdfdHlwZSA9IGFsbG9jX3R5cGVfYXJjaCAoZ2V0 X3R5cGVfYXJjaCAodHlwZSkpOwogIAogICAgLyogV2UgbXVzdCBhZGQgdGhlIG5ldyB0eXBlIHRv IHRoZSBoYXNoIHRhYmxlIGltbWVkaWF0ZWx5LCBpbiBjYXNlCkBAIC00MDQ2LDcgKzQ1MjQsNyBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogICAgc3RvcmVkLT5v bGQgPSB0eXBlOwogICAgc3RvcmVkLT5uZXcgPSBuZXdfdHlwZTsKICAgICpzbG90ID0gc3RvcmVk OwotQEAgLTMzNDYsNiArMzQ5NiwyMSBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqCitAQCAtMzM2Myw2ICszNTEzLDIxIEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9PQkpGSUxFX09XTkVEIChuZXdfdHlwZSkg PSAwOwogICAgVFlQRV9PV05FUiAobmV3X3R5cGUpLmdkYmFyY2ggPSBnZXRfdHlwZV9hcmNoICh0 eXBlKTsKICAKQEAgLTQwNjgsNyArNDU0Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9nZGJ0eXBlcy5jCiAgICBpZiAoVFlQRV9OQU1FICh0eXBlKSkKICAgICAgVFlQRV9OQU1F IChuZXdfdHlwZSkgPSB4c3RyZHVwIChUWVBFX05BTUUgKHR5cGUpKTsKICAgIGlmIChUWVBFX1RB R19OQU1FICh0eXBlKSkKLUBAIC0zMzU0LDEyICszNTE5LDQ4IEBAIGNvcHlfdHlwZV9yZWN1cnNp dmUgKHN0cnVjdCBvYmpmaWxlICpvYmoKK0BAIC0zMzcxLDEyICszNTM2LDQ4IEBAIGNvcHlfdHlw ZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAogICAgVFlQRV9JTlNUQU5DRV9G TEFHUyAobmV3X3R5cGUpID0gVFlQRV9JTlNUQU5DRV9GTEFHUyAodHlwZSk7CiAgICBUWVBFX0xF TkdUSCAobmV3X3R5cGUpID0gVFlQRV9MRU5HVEggKHR5cGUpOwogIApAQCAtNDExNyw3ICs0NTk1 LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmMKICAgICAgICBU WVBFX0ZJRUxEUyAobmV3X3R5cGUpID0gWENBTExPQyAobmZpZWxkcywgc3RydWN0IGZpZWxkKTsK ICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmZpZWxkczsgaSsrKQogIAl7Ci1AQCAtMzM2OCw4ICsz NTY5LDggQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTMz ODUsOCArMzU4Niw4IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBvYmpmaWxlICpvYmpm aWxlLAogIAkgIFRZUEVfRklFTERfQklUU0laRSAobmV3X3R5cGUsIGkpID0gVFlQRV9GSUVMRF9C SVRTSVpFICh0eXBlLCBpKTsKICAJICBpZiAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCBpKSkKICAJ ICAgIFRZUEVfRklFTERfVFlQRSAobmV3X3R5cGUsIGkpCkBAIC00MTI4LDcgKzQ2MDYsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogIAkgIGlmIChUWVBFX0ZJ RUxEX05BTUUgKHR5cGUsIGkpKQogIAkgICAgVFlQRV9GSUVMRF9OQU1FIChuZXdfdHlwZSwgaSkg PSAKICAJICAgICAgeHN0cmR1cCAoVFlQRV9GSUVMRF9OQU1FICh0eXBlLCBpKSk7Ci1AQCAtMzM5 NiwyNCArMzU5NywxODQgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9i agorQEAgLTM0MTMsMjQgKzM2MTQsMTg0IEBAIGNvcHlfdHlwZV9yZWN1cnNpdmUgKHN0cnVjdCBv YmpmaWxlICpvYmpmaWxlLAogIAl9CiAgICAgIH0KICAKQEAgLTQzMjAsNyArNDc5OCw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgICAvKiBNYXliZSBjb3B5 IHRoZSB0eXBlX3NwZWNpZmljIGJpdHMuCiAgCiAgICAgICBOT1RFIGRyb3cvMjAwNS0xMi0wOTog V2UgZG8gbm90IGNvcHkgdGhlIEMrKy1zcGVjaWZpYyBiaXRzIGxpa2UKLUBAIC0zNDMwLDYgKzM3 OTEsMTcgQEAgY29weV90eXBlX3JlY3Vyc2l2ZSAoc3RydWN0IG9iamZpbGUgKm9iagorQEAgLTM0 NDcsNiArMzgwOCwxNyBAQCBjb3B5X3R5cGVfcmVjdXJzaXZlIChzdHJ1Y3Qgb2JqZmlsZSAqb2Jq ZmlsZSwKICAgIHJldHVybiBuZXdfdHlwZTsKICB9CiAgCkBAIC00MzM4LDcgKzQ4MTYsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuYwogIC8qIE1ha2UgYSBjb3B5 IG9mIHRoZSBnaXZlbiBUWVBFLCBleGNlcHQgdGhhdCB0aGUgcG9pbnRlciAmIHJlZmVyZW5jZQog ICAgIHR5cGVzIGFyZSBub3QgcHJlc2VydmVkLgogICAgIAotQEAgLTM0NTIsNiArMzgyNCwyMDEg QEAgY29weV90eXBlIChjb25zdCBzdHJ1Y3QgdHlwZSAqdHlwZSkKK0BAIC0zNDY5LDYgKzM4NDEs MjAxIEBAIGNvcHlfdHlwZSAoY29uc3Qgc3RydWN0IHR5cGUgKnR5cGUpCiAgICByZXR1cm4gbmV3 X3R5cGU7CiAgfQogIApAQCAtNDU0MCw3ICs1MDE4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL2dkYnR5cGVzLmMKICAKICAvKiBIZWxwZXIgZnVuY3Rpb25zIHRvIGluaXRpYWxp emUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIHR5cGVzLiAgKi8KICAKLUBAIC0zOTg0LDYgKzQ1NTEs MTMgQEAgdm9pZAorQEAgLTQwMDEsNiArNDU2OCwxMyBAQCB2b2lkCiAgX2luaXRpYWxpemVfZ2Ri dHlwZXMgKHZvaWQpCiAgewogICAgZ2RidHlwZXNfZGF0YSA9IGdkYmFyY2hfZGF0YV9yZWdpc3Rl cl9wb3N0X2luaXQgKGdkYnR5cGVzX3Bvc3RfaW5pdCk7CkBAIC00NTU0LDEwICs1MDMyLDEwIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5jCiAgICBvYmpmaWxlX3R5 cGVfZGF0YSA9IHJlZ2lzdGVyX29iamZpbGVfZGF0YSAoKTsKICAKICAgIGFkZF9zZXRzaG93X3pp bnRlZ2VyX2NtZCAoIm92ZXJsb2FkIiwgbm9fY2xhc3MsICZvdmVybG9hZF9kZWJ1ZywKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9nZGJ0eXBlcy5oCTIwMTEtMDctMDUgMTU6MzY6NDEu MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAky MDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi9nZGJ0 eXBlcy5oIGIvZ2RiL2dkYnR5cGVzLmgKK2luZGV4IDY5ZjZiNDYuLjg4OWQzOWUgMTAwNjQ0Cist LS0gYS9nZGIvZ2RidHlwZXMuaAorKysrIGIvZ2RiL2dkYnR5cGVzLmgKIEBAIC0yMTUsNiArMjE1 LDExIEBAIGVudW0gdHlwZV9pbnN0YW5jZV9mbGFnX3ZhbHVlCiAgCiAgI2RlZmluZSBUWVBFX1RB UkdFVF9TVFVCKHQpCShUWVBFX01BSU5fVFlQRSAodCktPmZsYWdfdGFyZ2V0X3N0dWIpCkBAIC00 NjIxLDcgKzUwOTksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMu aAogIC8qIENvbnN0YW50IHR5cGUuICBJZiB0aGlzIGlzIHNldCwgdGhlIGNvcnJlc3BvbmRpbmcg dHlwZSBoYXMgYQogICAgIGNvbnN0IG1vZGlmaWVyLiAgKi8KICAKLUBAIC00MDAsNiArNDQ5LDE1 IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC00MDEsNiArNDUwLDE1IEBAIHN0cnVjdCBtYWluX3R5 cGUKICAgIC8qIFRydWUgaWYgdGhpcyB0eXBlIHdhcyBkZWNsYXJlZCB3aXRoICJjbGFzcyIgcmF0 aGVyIHRoYW4KICAgICAgICJzdHJ1Y3QiLiAgKi8KICAgIHVuc2lnbmVkIGludCBmbGFnX2RlY2xh cmVkX2NsYXNzIDogMTsKQEAgLTQ2MzcsNyArNTExNSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgCiAgICAvKiBBIGRpc2NyaW1pbmFudCB0ZWxsaW5nIHVz IHdoaWNoIGZpZWxkIG9mIHRoZSB0eXBlX3NwZWNpZmljIHVuaW9uCiAgICAgICBpcyBiZWluZyB1 c2VkIGZvciB0aGlzIHR5cGUsIGlmIGFueS4gICovCi1AQCAtNDczLDYgKzUzMSwyMCBAQCBzdHJ1 Y3QgbWFpbl90eXBlCitAQCAtNDc0LDYgKzUzMiwyMCBAQCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAg ICBzdHJ1Y3QgdHlwZSAqdGFyZ2V0X3R5cGU7CiAgCkBAIC00NjU4LDcgKzUxMzYsNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvZ2RidHlwZXMuaAogICAgLyogRm9yIHN0cnVjdHVy ZSBhbmQgdW5pb24gdHlwZXMsIGEgZGVzY3JpcHRpb24gb2YgZWFjaCBmaWVsZC4KICAgICAgIEZv ciBzZXQgYW5kIHBhc2NhbCBhcnJheSB0eXBlcywgdGhlcmUgaXMgb25lICJmaWVsZCIsCiAgICAg ICB3aG9zZSB0eXBlIGlzIHRoZSBkb21haW4gdHlwZSBvZiB0aGUgc2V0IG9yIGFycmF5LgotQEAg LTU0NywxMyArNjE5LDM0IEBAIHN0cnVjdCBtYWluX3R5cGUKK0BAIC01NTQsMTMgKzYyNiwzNCBA QCBzdHJ1Y3QgbWFpbl90eXBlCiAgCiAgICAgIHN0cnVjdCByYW5nZV9ib3VuZHMKICAgICAgewpA QCAtNDY5OCw3ICs1MTc2LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5 cGVzLmgKICAKICAgICAgICAvKiBGbGFncyBpbmRpY2F0aW5nIHdoZXRoZXIgdGhlIHZhbHVlcyBv ZiBsb3cgYW5kIGhpZ2ggYXJlCiAgICAgICAgICAgdmFsaWQuICBXaGVuIHRydWUsIHRoZSByZXNw ZWN0aXZlIHJhbmdlIHZhbHVlIGlzCi1AQCAtOTI5LDkgKzEwMjIsOSBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1CitAQCAtMTAxMiw5ICsxMTA1LDkgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAgI2RlZmluZSBU WVBFX1BPSU5URVJfVFlQRSh0aGlzdHlwZSkgKHRoaXN0eXBlKS0+cG9pbnRlcl90eXBlCiAgI2Rl ZmluZSBUWVBFX1JFRkVSRU5DRV9UWVBFKHRoaXN0eXBlKSAodGhpc3R5cGUpLT5yZWZlcmVuY2Vf dHlwZQogICNkZWZpbmUgVFlQRV9DSEFJTih0aGlzdHlwZSkgKHRoaXN0eXBlKS0+Y2hhaW4KQEAg LTQ3MTEsNyArNTE4OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBl cy5oCiAgICAgY2FsbHMgY2hlY2tfdHlwZWRlZiwgVFlQRV9MRU5HVEggKFZBTFVFX1RZUEUgKFgp KSBpcyBzYWZlLiAgKi8KICAjZGVmaW5lIFRZUEVfTEVOR1RIKHRoaXN0eXBlKSAodGhpc3R5cGUp LT5sZW5ndGgKICAvKiBOb3RlIHRoYXQgVFlQRV9DT0RFIGNhbiBiZSBUWVBFX0NPREVfVFlQRURF Riwgc28gaWYgeW91IHdhbnQgdGhlIHJlYWwKLUBAIC05MzksMTEgKzEwMzIsMTYgQEAgZXh0ZXJu IHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEwMjIsMTEgKzExMTUsMTYg QEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVfZ25hdF9hdXhfdHlwZSAoc3RydWN0IHR5cGUgKik7CiAg I2RlZmluZSBUWVBFX0NPREUodGhpc3R5cGUpIFRZUEVfTUFJTl9UWVBFKHRoaXN0eXBlKS0+Y29k ZQogICNkZWZpbmUgVFlQRV9ORklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQRSh0aGlzdHlw ZSktPm5maWVsZHMKICAjZGVmaW5lIFRZUEVfRklFTERTKHRoaXN0eXBlKSBUWVBFX01BSU5fVFlQ RSh0aGlzdHlwZSktPmZsZHNfYm5kcy5maWVsZHMKQEAgLTQ3MzAsNyArNTIwOCw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgI2RlZmluZSBUWVBFX0xPV19C T1VORF9VTkRFRklORUQocmFuZ2VfdHlwZSkgXAogICAgIFRZUEVfUkFOR0VfREFUQShyYW5nZV90 eXBlKS0+bG93X3VuZGVmaW5lZAogICNkZWZpbmUgVFlQRV9ISUdIX0JPVU5EX1VOREVGSU5FRChy YW5nZV90eXBlKSBcCi1AQCAtOTYwLDcgKzEwNTgsMTQgQEAgZXh0ZXJuIHZvaWQgYWxsb2NhdGVf Z25hdF9hdXhfdHlwZSAoc3RydQorQEAgLTEwNDMsNyArMTE0MSwxNCBAQCBleHRlcm4gdm9pZCBh bGxvY2F0ZV9nbmF0X2F1eF90eXBlIChzdHJ1Y3QgdHlwZSAqKTsKICAgICAoVFlQRV9ISUdIX0JP VU5EKFRZUEVfSU5ERVhfVFlQRSgoYXJyYXl0eXBlKSkpKQogIAogICNkZWZpbmUgVFlQRV9BUlJB WV9MT1dFUl9CT1VORF9WQUxVRShhcnJheXR5cGUpIFwKQEAgLTQ3NDYsNyArNTIyNCw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgCiAgLyogQysrICovCiAg Ci1AQCAtMTM4NSw2ICsxNDkwLDE4IEBAIGV4dGVybiBzdHJ1Y3QgdHlwZSAqY3JlYXRlX2FycmF5 X3R5cGUgKHMKK0BAIC0xNDc5LDYgKzE1ODQsMTggQEAgZXh0ZXJuIHN0cnVjdCB0eXBlICpjcmVh dGVfYXJyYXlfdHlwZSAoc3RydWN0IHR5cGUgKiwgc3RydWN0IHR5cGUgKiwKICAJCQkJICAgICAg IHN0cnVjdCB0eXBlICopOwogIGV4dGVybiBzdHJ1Y3QgdHlwZSAqbG9va3VwX2FycmF5X3Jhbmdl X3R5cGUgKHN0cnVjdCB0eXBlICosIGludCwgaW50KTsKICAKQEAgLTQ3NjUsNyArNTI0Myw3IEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9nZGJ0eXBlcy5oCiAgZXh0ZXJuIHN0cnVj dCB0eXBlICpjcmVhdGVfc3RyaW5nX3R5cGUgKHN0cnVjdCB0eXBlICosIHN0cnVjdCB0eXBlICos CiAgCQkJCQlzdHJ1Y3QgdHlwZSAqKTsKICBleHRlcm4gc3RydWN0IHR5cGUgKmxvb2t1cF9zdHJp bmdfcmFuZ2VfdHlwZSAoc3RydWN0IHR5cGUgKiwgaW50LCBpbnQpOwotQEAgLTE0MzAsNiArMTU0 NywxMCBAQCBleHRlcm4gaW50IGlzX3B1YmxpY19hbmNlc3RvciAoc3RydWN0IHR5CitAQCAtMTUy NCw2ICsxNjQxLDEwIEBAIGV4dGVybiBpbnQgaXNfcHVibGljX2FuY2VzdG9yIChzdHJ1Y3QgdHlw ZSAqLCBzdHJ1Y3QgdHlwZSAqKTsKICAKICBleHRlcm4gaW50IGlzX3VuaXF1ZV9hbmNlc3RvciAo c3RydWN0IHR5cGUgKiwgc3RydWN0IHZhbHVlICopOwogIApAQCAtNDc3Niw3ICs1MjU0LDcgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgKICAvKiBPdmVybG9hZCBy ZXNvbHV0aW9uICovCiAgCiAgI2RlZmluZSBMRU5HVEhfTUFUQ0goYnYpICgoYnYpLT5yYW5rWzBd KQotQEAgLTE1MDIsMTAgKzE2MjMsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFuY2VfcHJpbnRf dHlwZSAoY2hhcgorQEAgLTE1OTksMTAgKzE3MjAsMTMgQEAgZXh0ZXJuIHZvaWQgbWFpbnRlbmFu Y2VfcHJpbnRfdHlwZSAoY2hhciAqLCBpbnQpOwogIAogIGV4dGVybiBodGFiX3QgY3JlYXRlX2Nv cGllZF90eXBlc19oYXNoIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC00NzkyLDU1 OSArNTI3MCwzODQgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2dkYnR5cGVzLmgK ICsjZW5kaWYKICsKICAjZW5kaWYgLyogR0RCVFlQRVNfSCAqLwotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2kzODYtbGludXgtbmF0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL2kzODYtbGludXgtbmF0LmMJMjAxMS0wMi0yNyAxNzoyNTozNy4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pMzg2LWxpbnV4LW5h dC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNjQ5LDIyICs2NDks MTMgQEAgaTM4Nl9saW51eF9zdG9yZV9pbmZlcmlvcl9yZWdpc3RlcnMgKHN0cgorZGlmZiAtLWdp dCBhL2dkYi9pMzg2LWxpbnV4LW5hdC5jIGIvZ2RiL2kzODYtbGludXgtbmF0LmMKK2luZGV4IGE0 OGU1OGUuLjllNjBmZjQgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni1saW51eC1uYXQuYworKysrIGIv Z2RiL2kzODYtbGludXgtbmF0LmMKK0BAIC03MDksOCArNzA5LDggQEAgaTM4Nl9saW51eF9kcl9n ZXRfc3RhdHVzICh2b2lkKQorICAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9w dGlkLCBEUl9TVEFUVVMpOwogIH0KLSAMCiAgCi0tLyogU3VwcG9ydCBmb3IgZGVidWcgcmVnaXN0 ZXJzLiAgKi8KLS0KLS1zdGF0aWMgdW5zaWduZWQgbG9uZyBpMzg2X2xpbnV4X2RyW0RSX0NPTlRS T0wgKyAxXTsKLS0KLSAvKiBHZXQgZGVidWcgcmVnaXN0ZXIgUkVHTlVNIHZhbHVlIGZyb20gb25s eSB0aGUgb25lIExXUCBvZiBQVElELiAgKi8KLSAKLSBzdGF0aWMgdW5zaWduZWQgbG9uZwotLWkz ODZfbGludXhfZHJfZ2V0IChwdGlkX3QgcHRpZCwgaW50IHJlZ251bSkKLStpMzg2X2xpbnV4X2Ry X2dldCAoaW50IHRpZCwgaW50IHJlZ251bSkKLSB7Ci0tICBpbnQgdGlkOwotICAgdW5zaWduZWQg bG9uZyB2YWx1ZTsKLSAKLS0gIHRpZCA9IFRJREdFVCAocHRpZCk7Ci0tICBpZiAodGlkID09IDAp Ci0tICAgIHRpZCA9IFBJREdFVCAocHRpZCk7Ci0tCi0gICAvKiBGSVhNRToga2V0dGVuaXMvMjAw MS0wMy0yNzogQ2FsbGluZyBwZXJyb3Jfd2l0aF9uYW1lIGlmIHRoZQotICAgICAgcHRyYWNlIGNh bGwgZmFpbHMgYnJlYWtzIGRlYnVnZ2luZyByZW1vdGUgdGFyZ2V0cy4gIFRoZSBjb3JyZWN0Ci0g ICAgICB3YXkgdG8gZml4IHRoaXMgaXMgdG8gYWRkIHRoZSBoYXJkd2FyZSBicmVha3BvaW50IGFu ZCB3YXRjaHBvaW50Ci1AQCAtNjg2LDE0ICs2NzcsOCBAQCBpMzg2X2xpbnV4X2RyX2dldCAocHRp ZF90IHB0aWQsIGludCByZWduCi0gLyogU2V0IGRlYnVnIHJlZ2lzdGVyIFJFR05VTSB0byBWQUxV RSBpbiBvbmx5IHRoZSBvbmUgTFdQIG9mIFBUSUQuICAqLworLS8qIENhbGxiYWNrIGZvciBpdGVy YXRlX292ZXJfbHdwcy4gIFVwZGF0ZSB0aGUgZGVidWcgcmVnaXN0ZXJzIG9mCistICAgTFdQLiAg Ki8KKysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAg VXBkYXRlIHRoZSBkZWJ1ZyByZWdpc3RlcnMKKysgICBvZiBMV1AuICAqLwogIAorIHN0YXRpYyBp bnQKKyB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmx3 cCwgdm9pZCAqYXJnKQorQEAgLTczNiw5ICs3MzYsNyBAQCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJz X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCwgdm9pZCAqYXJnKQogIHN0YXRpYyB2b2lk Ci0taTM4Nl9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbnVtLCB1bnNpZ25lZCBs b25nIHZhbHVlKQotK2kzODZfbGludXhfZHJfc2V0IChpbnQgdGlkLCBpbnQgcmVnbnVtLCB1bnNp Z25lZCBsb25nIHZhbHVlKQorIGkzODZfbGludXhfZHJfc2V0X2NvbnRyb2wgKHVuc2lnbmVkIGxv bmcgY29udHJvbCkKICB7Ci0tICBpbnQgdGlkOwotLQotLSAgdGlkID0gVElER0VUIChwdGlkKTsK LS0gIGlmICh0aWQgPT0gMCkKLS0gICAgdGlkID0gUElER0VUIChwdGlkKTsKKy0gIHB0aWRfdCBw aWRfcHRpZCA9IHBpZF90b19wdGlkIChwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpKTsKIC0K LSAgIGVycm5vID0gMDsKLSAgIHB0cmFjZSAoUFRSQUNFX1BPS0VVU0VSLCB0aWQsCi0gCSAgb2Zm c2V0b2YgKHN0cnVjdCB1c2VyLCB1X2RlYnVncmVnW3JlZ251bV0pLCB2YWx1ZSk7Ci1AQCAtNzAx LDM1ICs2ODYsNzggQEAgaTM4Nl9saW51eF9kcl9zZXQgKHB0aWRfdCBwdGlkLCBpbnQgcmVnbgot ICAgICBwZXJyb3Jfd2l0aF9uYW1lIChfKCJDb3VsZG4ndCB3cml0ZSBkZWJ1ZyByZWdpc3RlciIp KTsKKy0gIGl0ZXJhdGVfb3Zlcl9sd3BzIChwaWRfcHRpZCwgdXBkYXRlX2RlYnVnX3JlZ2lzdGVy c19jYWxsYmFjaywgTlVMTCk7CisrICBsaW51eF9uYXRfaXRlcmF0ZV93YXRjaHBvaW50X2x3cHMg KHVwZGF0ZV9kZWJ1Z19yZWdpc3RlcnNfY2FsbGJhY2ssIE5VTEwpOworIH0KKyAKKyAvKiBTZXQg YWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2YgdGhlIGN1 cnJlbnQKK0BAIC03NTEsNyArNzQ5LDcgQEAgaTM4Nl9saW51eF9kcl9zZXRfYWRkciAoaW50IHJl Z251bSwgQ09SRV9BRERSIGFkZHIpCisgCisgICBnZGJfYXNzZXJ0IChyZWdudW0gPj0gMCAmJiBy ZWdudW0gPD0gRFJfTEFTVEFERFIgLSBEUl9GSVJTVEFERFIpOworIAorLSAgaXRlcmF0ZV9vdmVy X2x3cHMgKHBpZF9wdGlkLCB1cGRhdGVfZGVidWdfcmVnaXN0ZXJzX2NhbGxiYWNrLCBOVUxMKTsK KysgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAodXBkYXRlX2RlYnVnX3JlZ2lz dGVyc19jYWxsYmFjaywgTlVMTCk7CisgfQorIAorIC8qIENhbGxlZCB3aGVuIHJlc3VtaW5nIGEg dGhyZWFkLgorQEAgLTc3Myw2ICs3NzEsOSBAQCBpMzg2X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1l IChzdHJ1Y3QgbHdwX2luZm8gKmx3cCkKKyAgICAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3Rh dGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICAgICAgaW50IGk7CisgCisr ICAgICAgLyogU2VlIGFtZDY0X2xpbnV4X3ByZXBhcmVfdG9fcmVzdW1lIGZvciBMaW51eCBrZXJu ZWwgbm90ZSBvbgorKwkgaTM4Nl9saW51eF9kcl9zZXQgY2FsbHMgb3JkZXJpbmcuICAqLworKwor ICAgICAgIGZvciAoaSA9IERSX0ZJUlNUQUREUjsgaSA8PSBEUl9MQVNUQUREUjsgaSsrKQorIAlp ZiAoc3RhdGUtPmRyX3JlZl9jb3VudFtpXSA+IDApCisgCSAgeworZGlmZiAtLWdpdCBhL2dkYi9p Mzg2LWxpbnV4LXRkZXAuYyBiL2dkYi9pMzg2LWxpbnV4LXRkZXAuYworaW5kZXggN2MzOTYyZS4u MzNmNmRjNiAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LWxpbnV4LXRkZXAuYworKysrIGIvZ2RiL2kz ODYtbGludXgtdGRlcC5jCitAQCAtOTA0LDYgKzkwNCwxNSBAQCBpMzg2X2xpbnV4X2luaXRfYWJp IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpMzg2X2xpbnV4X2dldF9zeXNjYWxsX251 bWJlcik7CisgCisgICBzZXRfZ2RiYXJjaF9nZXRfc2lnaW5mb190eXBlIChnZGJhcmNoLCBsaW51 eF9nZXRfc2lnaW5mb190eXBlKTsKKysKKysgIC8qIFN5c3RlbVRhcCB2YXJpYWJsZXMgYW5kIGZ1 bmN0aW9ucy4gICovCisrICBzZXRfZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4IChnZGJhcmNo LCAiJCIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gsICIl Iik7CisrICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoZ2Ri YXJjaCwgIigiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3Vm aXggKGdkYmFyY2gsICIpIik7CisrICBzZXRfZ2RiYXJjaF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5k IChnZGJhcmNoLCBpMzg2X3N0YXBfaXNfc2luZ2xlX29wZXJhbmQpOworKyAgc2V0X2dkYmFyY2hf c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChnZGJhcmNoLAorKwkJCQkJaTM4Nl9zdGFwX3BhcnNl X3NwZWNpYWxfdG9rZW4pOworIH0KKyAKKyAvKiBQcm92aWRlIGEgcHJvdG90eXBlIHRvIHNpbGVu Y2UgLVdtaXNzaW5nLXByb3RvdHlwZXMuICAqLworZGlmZiAtLWdpdCBhL2dkYi9pMzg2LW5hdC5j IGIvZ2RiL2kzODYtbmF0LmMKK2luZGV4IDU5MzQwMWIuLmJiMzFkOWUgMTAwNjQ0CistLS0gYS9n ZGIvaTM4Ni1uYXQuYworKysrIGIvZ2RiL2kzODYtbmF0LmMKK0BAIC0yNSw2ICsyNSw3IEBACisg I2luY2x1ZGUgImdkYmNtZC5oIgorICNpbmNsdWRlICJ0YXJnZXQuaCIKKyAjaW5jbHVkZSAiZ2Ri X2Fzc2VydC5oIgorKyNpbmNsdWRlICJpbmZlcmlvci5oIgorIAorIC8qIFN1cHBvcnQgZm9yIGhh cmR3YXJlIHdhdGNocG9pbnRzIGFuZCBicmVha3BvaW50cyB1c2luZyB0aGUgaTM4NgorICAgIGRl YnVnIHJlZ2lzdGVycy4KK0BAIC0xNzAsMTQgKzE3MSw4OCBAQCBpMzg2X2luaXRfZHJlZ3MgKHN0 cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUpCisgICBzdGF0ZS0+ZHJfc3RhdHVzX21p cnJvciAgPSAwOwogIH0KICAKLS0vKiBTZXQgRFJfQ09OVFJPTCB0byBBRERSIGluIGFsbCBMV1Bz IG9mIExXUF9MSVNULiAgKi8KLSsvKiBIZWxwZXIgZm9yIGkzODZfbGludXhfZHJfc2V0X2NvbnRy b2wuICAqLworLS8qIFRoZSBsb2NhbCBtaXJyb3Igb2YgdGhlIGluZmVyaW9yJ3MgZGVidWcgcmVn aXN0ZXJzLiAgQ3VycmVudGx5IHRoaXMKKy0gICBpcyBhIGdsb2JhbCwgYnV0IGl0IHNob3VsZCBy ZWFsbHkgYmUgcGVyLWluZmVyaW9yLiAgKi8KKy1zdGF0aWMgc3RydWN0IGkzODZfZGVidWdfcmVn X3N0YXRlIGRyX21pcnJvcjsKKysvKiBQZXItaW5mZXJpb3IgZGF0YSBrZXkuICAqLworK3N0YXRp YyBjb25zdCBzdHJ1Y3QgaW5mZXJpb3JfZGF0YSAqaTM4Nl9pbmZlcmlvcl9kYXRhOworKworKy8q IFBlci1pbmZlcmlvciBkYXRhLiAgKi8KKytzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhCisrICB7 CisrICAgIC8qIENvcHkgb2YgaTM4NiBoYXJkd2FyZSBkZWJ1ZyByZWdpc3RlcnMgZm9yIHBlcmZv cm1hbmNlIHJlYXNvbnMuICAqLworKyAgICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgc3Rh dGU7CisrICB9OworKworKy8qIFBlci1pbmZlcmlvciBob29rIGZvciByZWdpc3Rlcl9pbmZlcmlv cl9kYXRhX3dpdGhfY2xlYW51cC4gICovCiArCiArc3RhdGljIHZvaWQKLStpMzg2X2xpbnV4X2Ry X3NldF9jb250cm9sX2NhbGxiYWNrIChpbnQgdGlkLCB2b2lkICpjb250cm9sX3ZvaWRwKQorK2kz ODZfaW5mZXJpb3JfZGF0YV9jbGVhbnVwIChzdHJ1Y3QgaW5mZXJpb3IgKmluZiwgdm9pZCAqYXJn KQogK3sKLSsgIHVuc2lnbmVkIGxvbmcgY29udHJvbCA9ICoodW5zaWduZWQgbG9uZyAqKSBjb250 cm9sX3ZvaWRwOworKyAgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2RhdGEgPSBhcmc7 CiArCi0rICBpMzg2X2xpbnV4X2RyX3NldCAodGlkLCBEUl9DT05UUk9MLCBjb250cm9sKTsKKysg IHhmcmVlIChpbmZfZGF0YSk7CiArfQogKwotK3N0YXRpYyB2b2lkIGkzODZfbGludXhfZHJfc2V0 X2FkZHIgKGludCByZWdudW0sIENPUkVfQUREUiBhZGRyKTsKKysvKiBHZXQgZGF0YSBzcGVjaWZp YyBmb3IgSU5GRVJJT1JfUFRJRCBMV1AuICBSZXR1cm4gc3BlY2lhbCBkYXRhIGFyZWEKKysgICBm b3IgcHJvY2Vzc2VzIGJlaW5nIGRldGFjaGVkLiAgKi8KICsKLSsvKiBTZXQgRFJfQ09OVFJPTCB0 byBBRERSIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuICAqLwotIAotIHN0YXRpYyB2 b2lkCi0gaTM4Nl9saW51eF9kcl9zZXRfY29udHJvbCAodW5zaWduZWQgbG9uZyBjb250cm9sKQot IHsKLS0gIHN0cnVjdCBsd3BfaW5mbyAqbHA7Ci0tICBwdGlkX3QgcHRpZDsKLSsgIGludCBpbmZl cmlvcl9waWQgPSBwdGlkX2dldF9waWQgKGluZmVyaW9yX3B0aWQpOworK3N0YXRpYyBzdHJ1Y3Qg aTM4Nl9pbmZlcmlvcl9kYXRhICoKKytpMzg2X2luZmVyaW9yX2RhdGFfZ2V0ICh2b2lkKQorK3sK ICsgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVudF9pbmZlcmlvciAoKTsKLSAKLS0gIGkz ODZfbGludXhfZHJbRFJfQ09OVFJPTF0gPSBjb250cm9sOwotLSAgQUxMX0xXUFMgKGxwLCBwdGlk KQotLSAgICBpMzg2X2xpbnV4X2RyX3NldCAocHRpZCwgRFJfQ09OVFJPTCwgY29udHJvbCk7Ci0r ICAvKiBUaGUgYW1kNjQgY291bnRlcnBhcnQgYW5kIGRlc2NyaXB0aW9uIGlzIGFtZDY0X2xpbnV4 X2RyX3NldF9jb250cm9sLiAgKi8KLSsgIGlmIChpbmYtPnBpZCAhPSBpbmZlcmlvcl9waWQpCisr ICBzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhICppbmZfZGF0YTsKKysKKysgIGluZl9kYXRhID0g aW5mZXJpb3JfZGF0YSAoaW5mLCBpMzg2X2luZmVyaW9yX2RhdGEpOworKyAgaWYgKGluZl9kYXRh ID09IE5VTEwpCiArICAgIHsKLSsgICAgICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJv ciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKLSsgICAgICBpbnQgaTsKKysgICAgICBpbmZfZGF0 YSA9IHh6YWxsb2MgKHNpemVvZiAoKmluZl9kYXRhKSk7CisrICAgICAgc2V0X2luZmVyaW9yX2Rh dGEgKGN1cnJlbnRfaW5mZXJpb3IgKCksIGkzODZfaW5mZXJpb3JfZGF0YSwgaW5mX2RhdGEpOwor KyAgICB9CisrCisrICBpZiAoaW5mLT5waWQgIT0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlk KSkKKysgICAgeworKyAgICAgIC8qIElORkVSSU9SX1BUSUQgaXMgYmVpbmcgZGV0YWNoZWQgZnJv bSB0aGUgaW5mZXJpb3IgSU5GLgorKwkgUHJvdmlkZSBsb2NhbCBjYWNoZSBzcGVjaWZpYyBmb3Ig dGhlIGRldGFjaGVkIExXUC4gICovCisrCisrICAgICAgc3RhdGljIHN0cnVjdCBpMzg2X2luZmVy aW9yX2RhdGEgZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWw7CisrICAgICAgc3RhdGljIGludCBkZXRh Y2hlZF9pbmZfcGlkID0gLTE7CiArCi0rICAgICAgaWYgKCFkcl9taXJyb3ItPmFkZHJfcHJlc2V0 KQorKyAgICAgIGlmIChkZXRhY2hlZF9pbmZfcGlkICE9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3Jf cHRpZCkpCiArCXsKLSsJICBkcl9taXJyb3ItPmFkZHJfcHJlc2V0ID0gMTsKKysJICAvKiBSZWlu aXRpYWxpemUgdGhlIGxvY2FsIGNhY2hlIGlmIElORkVSSU9SX1BUSUQgaXMKKysJICAgICBkaWZm ZXJlbnQgZnJvbSB0aGUgTFdQIGxhc3QgZGV0YWNoZWQuCisrIAorKwkgICAgIExpbnV4IGtlcm5l bCBiZWZvcmUgMi42LjMzIGNvbW1pdAorKwkgICAgIDcyZjY3NGQyMDNjZDIzMDQyNjQzN2NkY2Y3 ZGQ2ZjY4MWRhZDhiMGQKKysJICAgICB3aWxsIGluaGVyaXQgaGFyZHdhcmUgZGVidWcgcmVnaXN0 ZXJzIGZyb20gcGFyZW50CisrCSAgICAgb24gZm9yay92Zm9yay9jbG9uZS4gIE5ld2VyIExpbnV4 IGtlcm5lbHMgY3JlYXRlIHN1Y2ggdGFza3Mgd2l0aAorKwkgICAgIHplcm9lZCBkZWJ1ZyByZWdp c3RlcnMuCiArCi0rCSAgZm9yIChpID0gMDsgaSA8IERSX0xBU1RBRERSIC0gRFJfRklSU1RBRERS OyBpKyspCi0rCSAgICBpMzg2X2xpbnV4X2RyX3NldF9hZGRyIChpLCBkcl9taXJyb3ItPmFkZHJb aV0pOwotKwl9Ci0rICAgIH0KKysJICAgICBHREIgd2lsbCByZW1vdmUgYWxsIGJyZWFrcG9pbnRz IChhbmQgd2F0Y2hwb2ludHMpIGZyb20gdGhlIGZvcmtlZAorKwkgICAgIG9mZiBwcm9jZXNzLiAg V2UgYWxzbyBuZWVkIHRvIHJlc2V0IHRoZSBkZWJ1ZyByZWdpc3RlcnMgaW4gdGhhdAorKwkgICAg IHByb2Nlc3MgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBvbGRlciBMaW51eCBrZXJuZWxzLgog KwotKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChpMzg2X2xpbnV4X2RyX3Nl dF9jb250cm9sX2NhbGxiYWNrLAotKwkJCQkgICAgICZjb250cm9sKTsKLSB9Ci0gCi0tLyogU2V0 IGFkZHJlc3MgUkVHTlVNICh6ZXJvIGJhc2VkKSB0byBBRERSIGluIGFsbCBMV1BzIG9mIExXUF9M SVNULiAgKi8KLSsvKiBIZWxwZXIgZm9yIGkzODZfbGludXhfZHJfc2V0X2FkZHIuICAqLworKwkg ICAgIENvcHkgdGhlIGRlYnVnIHJlZ2lzdGVycyBtaXJyb3JzIGludG8gdGhlIG5ldyBwcm9jZXNz IHNvIHRoYXQgYWxsCisrCSAgICAgYnJlYWtwb2ludHMgYW5kIHdhdGNocG9pbnRzIGNhbiBiZSBy ZW1vdmVkIHRvZ2V0aGVyLiAgVGhlIGRlYnVnCisrCSAgICAgcmVnaXN0ZXJzIG1pcnJvciB3aWxs IGJlY29tZSB6ZXJvZWQgaW4gdGhlIGVuZCBiZWZvcmUgZGV0YWNoaW5nCisrCSAgICAgdGhlIGZv cmtlZCBvZmYgcHJvY2Vzcy4gICovCiArCi0rc3RydWN0IGkzODZfbGludXhfZHJfc2V0X2FkZHJf ZGF0YQotKyAgewotKyAgICBpbnQgcmVnbnVtOwotKyAgICBDT1JFX0FERFIgYWRkcjsKLSsgIH07 CisrCSAgZGV0YWNoZWRfaW5mX3BpZCA9IHB0aWRfZ2V0X3BpZCAoaW5mZXJpb3JfcHRpZCk7Cisr CSAgbWVtY3B5ICgmZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWwsIGluZl9kYXRhLAorKwkJICBzaXpl b2YgKGRldGFjaGVkX2luZl9kYXRhX2xvY2FsKSk7CisrCX0KICsKLStzdGF0aWMgdm9pZAotK2kz ODZfbGludXhfZHJfc2V0X2FkZHJfY2FsbGJhY2sgKGludCB0aWQsIHZvaWQgKmRhdGFwX3ZvaWRw KQotK3sKLSsgIGNvbnN0IHN0cnVjdCBpMzg2X2xpbnV4X2RyX3NldF9hZGRyX2RhdGEgKmRhdGFw ID0gZGF0YXBfdm9pZHA7CisrICAgICAgcmV0dXJuICZkZXRhY2hlZF9pbmZfZGF0YV9sb2NhbDsK KysgICAgfQogKwotKyAgaTM4Nl9saW51eF9kcl9zZXQgKHRpZCwgRFJfRklSU1RBRERSICsgZGF0 YXAtPnJlZ251bSwgZGF0YXAtPmFkZHIpOworKyAgcmV0dXJuIGluZl9kYXRhOwogK30KICsKLSsv KiBTZXQgYWRkcmVzcyBSRUdOVU0gKHplcm8gYmFzZWQpIHRvIEFERFIgaW4gYWxsIExXUHMgb2Yg Q1VSUkVOVF9JTkZFUklPUi4KLSsgICAqLworKy8qIEdldCBkZWJ1ZyByZWdpc3RlcnMgc3RhdGUg Zm9yIElORkVSSU9SX1BUSUQsIHNlZQorKyAgIGkzODZfaW5mZXJpb3JfZGF0YV9nZXQuICAqLwog IAotIHN0YXRpYyB2b2lkCi0gaTM4Nl9saW51eF9kcl9zZXRfYWRkciAoaW50IHJlZ251bSwgQ09S RV9BRERSIGFkZHIpCisgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICoKKyBpMzg2X2RlYnVn X3JlZ19zdGF0ZSAodm9pZCkKICB7Ci0tICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90 IHB0aWQ7Ci0rICBzdHJ1Y3QgaTM4Nl9saW51eF9kcl9zZXRfYWRkcl9kYXRhIGRhdGE7CistICBy ZXR1cm4gJmRyX21pcnJvcjsKKysgIHJldHVybiAmaTM4Nl9pbmZlcmlvcl9kYXRhX2dldCAoKS0+ c3RhdGU7CisgfQogIAotICAgZ2RiX2Fzc2VydCAocmVnbnVtID49IDAgJiYgcmVnbnVtIDw9IERS X0xBU1RBRERSIC0gRFJfRklSU1RBRERSKTsKLSAKLS0gIGkzODZfbGludXhfZHJbRFJfRklSU1RB RERSICsgcmVnbnVtXSA9IGFkZHI7Ci0tICBBTExfTFdQUyAobHAsIHB0aWQpCi0tICAgIGkzODZf bGludXhfZHJfc2V0IChwdGlkLCBEUl9GSVJTVEFERFIgKyByZWdudW0sIGFkZHIpOwotKyAgZGF0 YS5yZWdudW0gPSByZWdudW07Ci0rICBkYXRhLmFkZHIgPSBhZGRyOwotKyAgbGludXhfbmF0X2l0 ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChpMzg2X2xpbnV4X2RyX3NldF9hZGRyX2NhbGxiYWNrLCAm ZGF0YSk7Ci0gfQotIAotLS8qIFNldCBhZGRyZXNzIFJFR05VTSAoemVybyBiYXNlZCkgdG8gemVy byBpbiBhbGwgTFdQcyBvZiBMV1BfTElTVC4gICovCi0rLyogU2V0IGFkZHJlc3MgUkVHTlVNICh6 ZXJvIGJhc2VkKSB0byB6ZXJvIGluIGFsbCBMV1BzIG9mIENVUlJFTlRfSU5GRVJJT1IuCi0rICAg Ki8KLSAKLSBzdGF0aWMgdm9pZAotIGkzODZfbGludXhfZHJfcmVzZXRfYWRkciAoaW50IHJlZ251 bSkKLUBAIC03NDIsMzYgKzc3MCw1NCBAQCBpMzg2X2xpbnV4X2RyX3Jlc2V0X2FkZHIgKGludCBy ZWdudW0pCi0gc3RhdGljIHVuc2lnbmVkIGxvbmcKLSBpMzg2X2xpbnV4X2RyX2dldF9zdGF0dXMg KHZvaWQpCi0gewotLSAgcmV0dXJuIGkzODZfbGludXhfZHJfZ2V0IChpbmZlcmlvcl9wdGlkLCBE Ul9TVEFUVVMpOwotKyAgaW50IHRpZDsKLSsKLSsgIHRpZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRp ZCk7Ci0rICBpZiAodGlkID09IDApCi0rICAgIHRpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRpZCk7 Ci0rCi0rICByZXR1cm4gaTM4Nl9saW51eF9kcl9nZXQgKHRpZCwgRFJfU1RBVFVTKTsKLSB9Ci0g Ci0tLyogVW5zZXQgTUFTSyBiaXRzIGluIERSX1NUQVRVUyBpbiBhbGwgTFdQcyBvZiBMV1BfTElT VC4gICovCi0rLyogSGVscGVyIGZvciBpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cy4gICovCi0g Ci0gc3RhdGljIHZvaWQKLS1pMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9u ZyBtYXNrKQotK2kzODZfbGludXhfZHJfdW5zZXRfc3RhdHVzX2NhbGxiYWNrIChpbnQgdGlkLCB2 b2lkICptYXNrX3ZvaWRwKQorIC8qIFdoZXRoZXIgb3Igbm90IHRvIHByaW50IHRoZSBtaXJyb3Jl ZCBkZWJ1ZyByZWdpc3RlcnMuICAqLworQEAgLTIzMCw3ICszMDUsOSBAQCBzdGF0aWMgaW50IGkz ODZfaGFuZGxlX25vbmFsaWduZWRfd2F0Y2hwb2ludCAoc3RydWN0IGkzODZfZGVidWdfcmVnX3N0 YXRlICpzdGF0ZQorIHZvaWQKKyBpMzg2X2NsZWFudXBfZHJlZ3MgKHZvaWQpCiAgewotLSAgc3Ry dWN0IGx3cF9pbmZvICpscDsKLS0gIHB0aWRfdCBwdGlkOwotLQotLSAgQUxMX0xXUFMgKGxwLCBw dGlkKQotLSAgICB7Ci0tICAgICAgdW5zaWduZWQgbG9uZyB2YWx1ZTsKLSsgIHVuc2lnbmVkIGxv bmcgbWFzayA9ICoodW5zaWduZWQgbG9uZyAqKSBtYXNrX3ZvaWRwOwotKyAgdW5zaWduZWQgbG9u ZyB2YWx1ZTsKLSAgICAgICAKLS0gICAgICB2YWx1ZSA9IGkzODZfbGludXhfZHJfZ2V0IChwdGlk LCBEUl9TVEFUVVMpOwotLSAgICAgIHZhbHVlICY9IH5tYXNrOwotLSAgICAgIGkzODZfbGludXhf ZHJfc2V0IChwdGlkLCBEUl9TVEFUVVMsIHZhbHVlKTsKLS0gICAgfQotKyAgdmFsdWUgPSBpMzg2 X2xpbnV4X2RyX2dldCAodGlkLCBEUl9TVEFUVVMpOwotKyAgdmFsdWUgJj0gfm1hc2s7Ci0rICBp Mzg2X2xpbnV4X2RyX3NldCAodGlkLCBEUl9TVEFUVVMsIHZhbHVlKTsKLSt9CistICBpMzg2X2lu aXRfZHJlZ3MgKCZkcl9taXJyb3IpOworKyAgc3RydWN0IGkzODZfZGVidWdfcmVnX3N0YXRlICpz dGF0ZSA9IGkzODZfZGVidWdfcmVnX3N0YXRlICgpOwogKwotKy8qIFVuc2V0IE1BU0sgYml0cyBp biBEUl9TVEFUVVMgaW4gYWxsIExXUHMgb2YgQ1VSUkVOVF9JTkZFUklPUi4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStpMzg2X2xpbnV4X2RyX3Vuc2V0X3N0YXR1cyAodW5zaWduZWQgbG9uZyBtYXNr KQotK3sKLSsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRfbHdwcyAoaTM4Nl9saW51eF9k cl91bnNldF9zdGF0dXNfY2FsbGJhY2ssCi0rCQkJCSAgICAgJm1hc2spOworKyAgaTM4Nl9pbml0 X2RyZWdzIChzdGF0ZSk7CiAgfQogIAorIC8qIFByaW50IHRoZSB2YWx1ZXMgb2YgdGhlIG1pcnJv cmVkIGRlYnVnIHJlZ2lzdGVycy4gIFRoaXMgaXMgY2FsbGVkCitAQCAtNDk0LDIwICs1NzEsMjEg QEAgSW52YWxpZCB2YWx1ZSAlZCBvZiBvcGVyYXRpb24gaW4gaTM4Nl9oYW5kbGVfbm9uYWxpZ25l ZF93YXRjaHBvaW50LlxuIiksCiAgc3RhdGljIHZvaWQKLSBpMzg2X2xpbnV4X25ld190aHJlYWQg KHB0aWRfdCBwdGlkKQotIHsKLS0gIGludCBpOwotKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpk cl9taXJyb3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0rICBpbnQgaSwgdGlkOwotKwotKyAg LyogVmVyaWZ5IERSX01JUlJPUiBpcyB2YWxpZC4gICovCi0rICBnZGJfYXNzZXJ0IChQSURHRVQg KHB0aWQpID09IFBJREdFVCAoaW5mZXJpb3JfcHRpZCkpOwotKwotKyAgdGlkID0gVElER0VUIChw dGlkKTsKLSsgIGlmICh0aWQgPT0gMCkKLSsgICAgdGlkID0gUElER0VUIChwdGlkKTsKLSAKLS0g IGZvciAoaSA9IERSX0ZJUlNUQUREUjsgaSA8PSBEUl9MQVNUQUREUjsgaSsrKQotLSAgICBpMzg2 X2xpbnV4X2RyX3NldCAocHRpZCwgaSwgaTM4Nl9saW51eF9kcltpXSk7Ci0rICBmb3IgKGkgPSAw OyBpIDwgRFJfTEFTVEFERFIgLSBEUl9GSVJTVEFERFI7IGkrKykKLSsgICAgaTM4Nl9saW51eF9k cl9zZXQgKHRpZCwgRFJfRklSU1RBRERSICsgaSwgZHJfbWlycm9yLT5hZGRyW2ldKTsKLSAKLS0g IGkzODZfbGludXhfZHJfc2V0IChwdGlkLCBEUl9DT05UUk9MLCBpMzg2X2xpbnV4X2RyW0RSX0NP TlRST0xdKTsKLSsgIGkzODZfbGludXhfZHJfc2V0ICh0aWQsIERSX0NPTlRST0wsIGRyX21pcnJv ci0+Y29udHJvbCk7Ci0gfQotIAwKLSAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9p Mzg2LW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9p Mzg2LW5hdC5jCTIwMTEtMDItMjYgMjM6MDQ6NTEuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvaTM4Ni1uYXQuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAw MCArMDIwMAotQEAgLTI1LDYgKzI1LDcgQEAKLSAjaW5jbHVkZSAiZ2RiY21kLmgiCi0gI2luY2x1 ZGUgInRhcmdldC5oIgotICNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCi0rI2luY2x1ZGUgImluZmVy aW9yLmgiCi0gCi0gLyogU3VwcG9ydCBmb3IgaGFyZHdhcmUgd2F0Y2hwb2ludHMgYW5kIGJyZWFr cG9pbnRzIHVzaW5nIHRoZSBpMzg2Ci0gICAgZGVidWcgcmVnaXN0ZXJzLgotQEAgLTQ0LDcgKzQ1 LDYgQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUgaTM4Nl9kcl9sb3c7Ci0gI2RlZmluZSBUQVJH RVRfSEFTX0RSX0xFTl84IChpMzg2X2RyX2xvdy5kZWJ1Z19yZWdpc3Rlcl9sZW5ndGggPT0gOCkK LSAKLSAvKiBEZWJ1ZyByZWdpc3RlcnMnIGluZGljZXMuICAqLwotLSNkZWZpbmUgRFJfTkFERFIJ NAkvKiBUaGUgbnVtYmVyIG9mIGRlYnVnIGFkZHJlc3MgcmVnaXN0ZXJzLiAgKi8KLSAjZGVmaW5l IERSX1NUQVRVUwk2CS8qIEluZGV4IG9mIGRlYnVnIHN0YXR1cyByZWdpc3RlciAoRFI2KS4gICov Ci0gI2RlZmluZSBEUl9DT05UUk9MCTcJLyogSW5kZXggb2YgZGVidWcgY29udHJvbCByZWdpc3Rl ciAoRFI3KS4gICovCi0gCi1AQCAtMTExLDQ5ICsxMTEsNjAgQEAgc3RydWN0IGkzODZfZHJfbG93 X3R5cGUgaTM4Nl9kcl9sb3c7Ci0gCi0gLyogVGhlIEkndGggZGVidWcgcmVnaXN0ZXIgaXMgdmFj YW50IGlmIGl0cyBMb2NhbCBhbmQgR2xvYmFsIEVuYWJsZQotICAgIGJpdHMgYXJlIHJlc2V0IGlu IHRoZSBEZWJ1ZyBDb250cm9sIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfVkFDQU5U KGkpIFwKLS0gICgoZHJfY29udHJvbF9taXJyb3IgJiAoMyA8PCAoRFJfRU5BQkxFX1NJWkUgKiAo aSkpKSkgPT0gMCkKLSsKLStzdGF0aWMgaW5saW5lIGludAotK2kzODZfZHJfdmFjYW50IChzdHJ1 Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGkpCi0rewotKyAgcmV0dXJuIChkcl9t aXJyb3ItPmNvbnRyb2wgJiAoMyA8PCAoRFJfRU5BQkxFX1NJWkUgKiBpKSkpID09IDA7Ci0rfQot IAotIC8qIExvY2FsbHkgZW5hYmxlIHRoZSBicmVhay93YXRjaHBvaW50IGluIHRoZSBJJ3RoIGRl YnVnIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfTE9DQUxfRU5BQkxFKGkpIFwKLS0g IGRyX2NvbnRyb2xfbWlycm9yIHw9ICgxIDw8IChEUl9MT0NBTF9FTkFCTEVfU0hJRlQgKyBEUl9F TkFCTEVfU0laRSAqIChpKSkpCi0gCi0tLyogR2xvYmFsbHkgZW5hYmxlIHRoZSBicmVhay93YXRj aHBvaW50IGluIHRoZSBJJ3RoIGRlYnVnIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJf R0xPQkFMX0VOQUJMRShpKSBcCi0tICBkcl9jb250cm9sX21pcnJvciB8PSAoMSA8PCAoRFJfR0xP QkFMX0VOQUJMRV9TSElGVCArIERSX0VOQUJMRV9TSVpFICogKGkpKSkKLStzdGF0aWMgaW5saW5l IHZvaWQKLStpMzg2X2RyX2xvY2FsX2VuYWJsZSAoc3RydWN0IGkzODZfZHJfbWlycm9yICpkcl9t aXJyb3IsIGludCBpKQotK3sKLSsgIGRyX21pcnJvci0+Y29udHJvbCB8PSAxIDw8IChEUl9MT0NB TF9FTkFCTEVfU0hJRlQgKyBEUl9FTkFCTEVfU0laRSAqIGkpOwotK30KLSAKLSAvKiBEaXNhYmxl IHRoZSBicmVhay93YXRjaHBvaW50IGluIHRoZSBJJ3RoIGRlYnVnIHJlZ2lzdGVyLiAgKi8KLS0j ZGVmaW5lIEkzODZfRFJfRElTQUJMRShpKSBcCi0tICBkcl9jb250cm9sX21pcnJvciAmPSB+KDMg PDwgKERSX0VOQUJMRV9TSVpFICogKGkpKSkKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLStpMzg2 X2RyX2Rpc2FibGUgKHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yLCBpbnQgaSkKLSt7 Ci0rICBkcl9taXJyb3ItPmNvbnRyb2wgJj0gfigzIDw8IChEUl9FTkFCTEVfU0laRSAqIGkpKTsK LSt9Ci0gCi0gLyogU2V0IGluIERSNyB0aGUgUlcgYW5kIExFTiBmaWVsZHMgZm9yIHRoZSBJJ3Ro IGRlYnVnIHJlZ2lzdGVyLiAgKi8KLS0jZGVmaW5lIEkzODZfRFJfU0VUX1JXX0xFTihpLHJ3bGVu KSBcCi0tICBkbyB7IFwKLS0gICAgZHJfY29udHJvbF9taXJyb3IgJj0gfigweDBmIDw8IChEUl9D T05UUk9MX1NISUZUK0RSX0NPTlRST0xfU0laRSooaSkpKTsgICBcCi0tICAgIGRyX2NvbnRyb2xf bWlycm9yIHw9ICgocndsZW4pIDw8IChEUl9DT05UUk9MX1NISUZUK0RSX0NPTlRST0xfU0laRSoo aSkpKTsgXAotLSAgfSB3aGlsZSAoMCkKLSsKLStzdGF0aWMgaW5saW5lIHZvaWQKLStpMzg2X2Ry X3NldF9yd19sZW4gKHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWlycm9yLCBpbnQgaSwgdW5z aWduZWQgcndsZW4pCi0rewotKyAgZHJfbWlycm9yLT5jb250cm9sICY9IH4oMHgwZiA8PCAoRFJf Q09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIGkpKTsKLSsgIGRyX21pcnJvci0+Y29u dHJvbCB8PSByd2xlbiA8PCAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRST0xfU0laRSAqIGkp OwotK30KLSAKLSAvKiBHZXQgZnJvbSBEUjcgdGhlIFJXIGFuZCBMRU4gZmllbGRzIGZvciB0aGUg SSd0aCBkZWJ1ZyByZWdpc3Rlci4gICovCi0tI2RlZmluZSBJMzg2X0RSX0dFVF9SV19MRU4oaSkg XAotLSAgKChkcl9jb250cm9sX21pcnJvciA+PiAoRFJfQ09OVFJPTF9TSElGVCArIERSX0NPTlRS T0xfU0laRSAqIChpKSkpICYgMHgwZikKLSsKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkCi0raTM4 Nl9kcl9nZXRfcndfbGVuIChzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciwgaW50IGkp Ci0rewotKyAgcmV0dXJuICgoZHJfbWlycm9yLT5jb250cm9sID4+IChEUl9DT05UUk9MX1NISUZU ICsgRFJfQ09OVFJPTF9TSVpFICogaSkpCi0rCSAgJiAweDBmKTsKLSt9Ci0gCi0gLyogTWFzayB0 aGF0IHRoaXMgSSd0aCB3YXRjaHBvaW50IGhhcyB0cmlnZ2VyZWQuICAqLwotICNkZWZpbmUgSTM4 Nl9EUl9XQVRDSF9NQVNLKGkpCSgxIDw8IChpKSkKLSAKLSAvKiBEaWQgdGhlIHdhdGNocG9pbnQg d2hvc2UgYWRkcmVzcyBpcyBpbiB0aGUgSSd0aCByZWdpc3RlciBicmVhaz8gICovCi0tI2RlZmlu ZSBJMzg2X0RSX1dBVENIX0hJVChpKQkoZHJfc3RhdHVzX21pcnJvciAmIEkzODZfRFJfV0FUQ0hf TUFTSyAoaSkpCi0rc3RhdGljIGlubGluZSBpbnQKLStpMzg2X2RyX3dhdGNoX2hpdCAoc3RydWN0 IGkzODZfZHJfbWlycm9yICpkcl9taXJyb3IsIGludCBpKQotK3sKLSsgIHJldHVybiAoZHJfbWly cm9yLT5zdGF0dXMgJiBJMzg2X0RSX1dBVENIX01BU0sgKGkpKSAhPSAwOwotK30KLSAKLSAvKiBB IG1hY3JvIHRvIGxvb3Agb3ZlciBhbGwgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSAjZGVmaW5lIEFM TF9ERUJVR19SRUdJU1RFUlMoaSkJZm9yIChpID0gMDsgaSA8IERSX05BRERSOyBpKyspCi0gCi0t LyogTWlycm9yIHRoZSBpbmZlcmlvcidzIERSaSByZWdpc3RlcnMuICBXZSBrZWVwIHRoZSBzdGF0 dXMgYW5kCi0tICAgY29udHJvbCByZWdpc3RlcnMgc2VwYXJhdGVkIGJlY2F1c2UgdGhleSBkb24n dCBob2xkIGFkZHJlc3Nlcy4gICovCi0tc3RhdGljIENPUkVfQUREUiBkcl9taXJyb3JbRFJfTkFE RFJdOwotLXN0YXRpYyB1bnNpZ25lZCBsb25nIGRyX3N0YXR1c19taXJyb3IsIGRyX2NvbnRyb2xf bWlycm9yOwotLQotLS8qIFJlZmVyZW5jZSBjb3VudHMgZm9yIGVhY2ggZGVidWcgcmVnaXN0ZXIu ICAqLwotLXN0YXRpYyBpbnQgZHJfcmVmX2NvdW50W0RSX05BRERSXTsKLS0KLSAvKiBXaGV0aGVy IG9yIG5vdCB0byBwcmludCB0aGUgbWlycm9yZWQgZGVidWcgcmVnaXN0ZXJzLiAgKi8KLSBzdGF0 aWMgaW50IG1haW50X3Nob3dfZHI7Ci0gCi1AQCAtMTk1LDIxICsyMDYsODAgQEAgc3RhdGljIGlu dCBpMzg2X2hhbmRsZV9ub25hbGlnbmVkX3dhdGNocAotIAotIC8qIEltcGxlbWVudGF0aW9uLiAg Ki8KLSAKLSsvKiBQZXItaW5mZXJpb3IgZGF0YSBrZXkuICAqLwotK3N0YXRpYyBjb25zdCBzdHJ1 Y3QgaW5mZXJpb3JfZGF0YSAqaTM4Nl9pbmZlcmlvcl9kYXRhOwotKwotK3N0cnVjdCBpMzg2X2lu ZmVyaW9yX2RhdGEKLSsgIHsKLSsgICAgLyogQ29weSBvZiBpMzg2IGhhcmR3YXJlIGRlYnVnIHJl Z2lzdGVycyBmb3IgcGVyZm9ybWFuY2UgcmVhc29ucy4gICovCi0rICAgIHN0cnVjdCBpMzg2X2Ry X21pcnJvciBkcl9taXJyb3I7Ci0rICB9OwotKwotK3N0YXRpYyB2b2lkCi0raTM4Nl9pbmZlcmlv cl9kYXRhX2NsZWFudXAgKHN0cnVjdCBpbmZlcmlvciAqaW5mLCB2b2lkICphcmcpCi0rewotKyAg c3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqaW5mX2RhdGEgPSBhcmc7Ci0rCi0rICB4ZnJlZSAo aW5mX2RhdGEpOwotK30KLSsKLStzdGF0aWMgc3RydWN0IGkzODZfaW5mZXJpb3JfZGF0YSAqCi0r aTM4Nl9pbmZlcmlvcl9kYXRhX2dldCAodm9pZCkKLSt7Ci0rICBzdHJ1Y3QgaW5mZXJpb3IgKmlu ZiA9IGN1cnJlbnRfaW5mZXJpb3IgKCk7Ci0rICBzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhICpp bmZfZGF0YTsKLSsKLSsgIGluZl9kYXRhID0gaW5mZXJpb3JfZGF0YSAoaW5mLCBpMzg2X2luZmVy aW9yX2RhdGEpOwotKyAgaWYgKGluZl9kYXRhID09IE5VTEwpCi0rICAgIHsKLSsgICAgICBpbmZf ZGF0YSA9IHh6YWxsb2MgKHNpemVvZiAoKmluZl9kYXRhKSk7Ci0rICAgICAgc2V0X2luZmVyaW9y X2RhdGEgKGN1cnJlbnRfaW5mZXJpb3IgKCksIGkzODZfaW5mZXJpb3JfZGF0YSwgaW5mX2RhdGEp OwotKyAgICB9Ci0rCi0rICBpZiAoaW5mLT5waWQgIT0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9w dGlkKSkKLSsgICAgewotKyAgICAgIHN0YXRpYyBzdHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhIGRl dGFjaGVkX2luZl9kYXRhX2xvY2FsOwotKyAgICAgIHN0YXRpYyBpbnQgZGV0YWNoZWRfaW5mX3Bp ZCA9IC0xOwotKwotKyAgICAgIGlmIChkZXRhY2hlZF9pbmZfcGlkICE9IHB0aWRfZ2V0X3BpZCAo aW5mZXJpb3JfcHRpZCkpCi0rCXsKLSsJICBkZXRhY2hlZF9pbmZfcGlkID0gcHRpZF9nZXRfcGlk IChpbmZlcmlvcl9wdGlkKTsKLSsKLSsJICAvKiBGb3JrZWQgcHJvY2Vzc2VzIGdldCBhIGNvcHkg b2YgdGhlIGRlYnVnIHJlZ2lzdGVycy4gICovCi0rCSAgbWVtY3B5ICgmZGV0YWNoZWRfaW5mX2Rh dGFfbG9jYWwsIGluZl9kYXRhLAotKwkJICBzaXplb2YgKGRldGFjaGVkX2luZl9kYXRhX2xvY2Fs KSk7Ci0rCSAgZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWwuZHJfbWlycm9yLmFkZHJfcHJlc2V0ID0g MDsKLSsJfQotKwotKyAgICAgIHJldHVybiAmZGV0YWNoZWRfaW5mX2RhdGFfbG9jYWw7Ci0rICAg IH0KLSsKLSsgIHJldHVybiBpbmZfZGF0YTsKLSt9Ci0rCi0gLyogQ2xlYXIgdGhlIHJlZmVyZW5j ZSBjb3VudHMgYW5kIGZvcmdldCBldmVyeXRoaW5nIHdlIGtuZXcgYWJvdXQgdGhlCi0gICAgZGVi dWcgcmVnaXN0ZXJzLiAgKi8KLSAKLStzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKgotK2kzODZfZHJf bWlycm9yX2dldCAodm9pZCkKLSt7Ci0rICByZXR1cm4gJmkzODZfaW5mZXJpb3JfZGF0YV9nZXQg KCktPmRyX21pcnJvcjsKLSt9Ci0rCi0gdm9pZAotIGkzODZfY2xlYW51cF9kcmVncyAodm9pZCkK KyBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9kZWJ1Z19yZWdzIChzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdf c3RhdGUgKm5ld19zdGF0ZSkKICB7Ci0rICBzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IgKmRyX21pcnJv ciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKysgIHN0cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0 ZSAqc3RhdGUgPSBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAoKTsKICAgIGludCBpOwogIAotICAgQUxM X0RFQlVHX1JFR0lTVEVSUyhpKQorICAgQUxMX0RFQlVHX1JFR0lTVEVSUyAoaSkKICAgICAgewot LSAgICAgIGRyX21pcnJvcltpXSA9IDA7Ci0tICAgICAgZHJfcmVmX2NvdW50W2ldID0gMDsKLSsg ICAgICBkcl9taXJyb3ItPmFkZHJbaV0gPSAwOwotKyAgICAgIGRyX21pcnJvci0+cmVmX2NvdW50 W2ldID0gMDsKKy0gICAgICBpZiAoSTM4Nl9EUl9WQUNBTlQgKG5ld19zdGF0ZSwgaSkgIT0gSTM4 Nl9EUl9WQUNBTlQgKCZkcl9taXJyb3IsIGkpKQorKyAgICAgIGlmIChJMzg2X0RSX1ZBQ0FOVCAo bmV3X3N0YXRlLCBpKSAhPSBJMzg2X0RSX1ZBQ0FOVCAoc3RhdGUsIGkpKQorIAlpMzg2X2RyX2xv dy5zZXRfYWRkciAoaSwgbmV3X3N0YXRlLT5kcl9taXJyb3JbaV0pOworICAgICAgIGVsc2UKKy0J Z2RiX2Fzc2VydCAobmV3X3N0YXRlLT5kcl9taXJyb3JbaV0gPT0gZHJfbWlycm9yLmRyX21pcnJv cltpXSk7CisrCWdkYl9hc3NlcnQgKG5ld19zdGF0ZS0+ZHJfbWlycm9yW2ldID09IHN0YXRlLT5k cl9taXJyb3JbaV0pOwogICAgICB9Ci0tICBkcl9jb250cm9sX21pcnJvciA9IDA7Ci0tICBkcl9z dGF0dXNfbWlycm9yICA9IDA7Ci0rICBkcl9taXJyb3ItPmFkZHJfcHJlc2V0ID0gMDsKLSsgIGRy X21pcnJvci0+Y29udHJvbCA9IDA7Ci0rICBkcl9taXJyb3ItPnN0YXR1cyA9IDA7CisgCistICBp ZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21pcnJvciAhPSBkcl9taXJyb3IuZHJfY29udHJvbF9t aXJyb3IpCisrICBpZiAobmV3X3N0YXRlLT5kcl9jb250cm9sX21pcnJvciAhPSBzdGF0ZS0+ZHJf Y29udHJvbF9taXJyb3IpCisgICAgIGkzODZfZHJfbG93LnNldF9jb250cm9sIChuZXdfc3RhdGUt PmRyX2NvbnRyb2xfbWlycm9yKTsKKyAKKy0gIGRyX21pcnJvciA9ICpuZXdfc3RhdGU7CisrICAq c3RhdGUgPSAqbmV3X3N0YXRlOwogIH0KICAKLSAvKiBQcmludCB0aGUgdmFsdWVzIG9mIHRoZSBt aXJyb3JlZCBkZWJ1ZyByZWdpc3RlcnMuICBUaGlzIGlzIGNhbGxlZAotQEAgLTIyMCw2ICsyOTAs NyBAQCBzdGF0aWMgdm9pZAotIGkzODZfc2hvd19kciAoY29uc3QgY2hhciAqZnVuYywgQ09SRV9B RERSIGFkZHIsCi0gCSAgICAgIGludCBsZW4sIGVudW0gdGFyZ2V0X2h3X2JwX3R5cGUgdHlwZSkK KyAvKiBJbnNlcnQgYSB3YXRjaHBvaW50IHRvIHdhdGNoIGEgbWVtb3J5IHJlZ2lvbiB3aGljaCBz dGFydHMgYXQKK0BAIC01MTgsMTAgKzU5NiwxMSBAQCBzdGF0aWMgaW50CisgaTM4Nl9pbnNlcnRf d2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorIAkJCXN0cnVj dCBleHByZXNzaW9uICpjb25kKQogIHsKLSsgIHN0cnVjdCBpMzg2X2RyX21pcnJvciAqZHJfbWly cm9yID0gaTM4Nl9kcl9taXJyb3JfZ2V0ICgpOwotICAgaW50IGFkZHJfc2l6ZSA9IGdkYmFyY2hf YWRkcl9iaXQgKHRhcmdldF9nZGJhcmNoKSAvIDg7Ci0gICBpbnQgaTsKLSAKLUBAIC0yMzksMTMg KzMxMCwxNiBAQCBpMzg2X3Nob3dfZHIgKGNvbnN0IGNoYXIgKmZ1bmMsIENPUkVfQURECi0gCQkJ CTogIj8/dW5rbm93bj8/IikpKSk7Ci0gICBwdXRzX3VuZmlsdGVyZWQgKCI6XG4iKTsKLSAgIHBy aW50Zl91bmZpbHRlcmVkICgiXHRDT05UUk9MIChEUjcpOiAlcyAgICAgICAgICBTVEFUVVMgKERS Nik6ICVzXG4iLAotLQkJICAgICBwaGV4IChkcl9jb250cm9sX21pcnJvciwgOCksIHBoZXggKGRy X3N0YXR1c19taXJyb3IsIDgpKTsKLSsJCSAgICAgcGhleCAoZHJfbWlycm9yLT5jb250cm9sLCA4 KSwKLSsJCSAgICAgcGhleCAoZHJfbWlycm9yLT5zdGF0dXMsIDgpKTsKLSAgIEFMTF9ERUJVR19S RUdJU1RFUlMoaSkKLSAgICAgewotICAgICAgIHByaW50Zl91bmZpbHRlcmVkICgiXAotIFx0RFIl ZDogYWRkcj0weCVzLCByZWYuY291bnQ9JWQgIERSJWQ6IGFkZHI9MHglcywgcmVmLmNvdW50PSVk XG4iLAotLQkJIGksIHBoZXggKGRyX21pcnJvcltpXSwgYWRkcl9zaXplKSwgZHJfcmVmX2NvdW50 W2ldLAotLQkJIGkrMSwgcGhleCAoZHJfbWlycm9yW2krMV0sIGFkZHJfc2l6ZSksIGRyX3JlZl9j b3VudFtpKzFdKTsKLSsJCQkgaSwgcGhleCAoZHJfbWlycm9yLT5hZGRyW2ldLCBhZGRyX3NpemUp LAotKwkJCSBkcl9taXJyb3ItPnJlZl9jb3VudFtpXSwgaSArIDEsCi0rCQkJIHBoZXggKGRyX21p cnJvci0+YWRkcltpICsgMV0sIGFkZHJfc2l6ZSksCi0rCQkJIGRyX21pcnJvci0+cmVmX2NvdW50 W2kgKyAxXSk7Ci0gICAgICAgaSsrOwotICAgICB9CisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdf c3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICBpbnQgcmV0dmFsOwor ICAgLyogV29yayBvbiBhIGxvY2FsIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9u IHN1Y2Nlc3MsCisgICAgICBjb21taXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4g ICovCistICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJy b3I7CisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7 CisgCisgICBpZiAodHlwZSA9PSBod19yZWFkKQorICAgICByZXR1cm4gMTsgLyogdW5zdXBwb3J0 ZWQgKi8KK0BAIC01NDIsNyArNjIxLDcgQEAgaTM4Nl9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9B RERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAorICAgICBpMzg2X3VwZGF0ZV9pbmZlcmlvcl9k ZWJ1Z19yZWdzICgmbG9jYWxfc3RhdGUpOworIAorICAgaWYgKG1haW50X3Nob3dfZHIpCistICAg IGkzODZfc2hvd19kciAoJmRyX21pcnJvciwgImluc2VydF93YXRjaHBvaW50IiwgYWRkciwgbGVu LCB0eXBlKTsKKysgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgImluc2VydF93YXRjaHBvaW50Iiwg YWRkciwgbGVuLCB0eXBlKTsKKyAKKyAgIHJldHVybiByZXR2YWw7CiAgfQotQEAgLTMxMyw2ICsz ODcsNyBAQCBJbnZhbGlkIGhhcmR3YXJlIGJyZWFrcG9pbnQgbGVuZ3RoICVkIGluCi0gc3RhdGlj IGludAotIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIHVu c2lnbmVkIGxlbl9yd19iaXRzKQorQEAgLTU1NCwxMCArNjMzLDExIEBAIHN0YXRpYyBpbnQKKyBp Mzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHR5cGUs CisgCQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCiAgewotKyAgc3RydWN0IGkzODZfZHJfbWly cm9yICpkcl9taXJyb3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0gICBpbnQgaTsKLSAKLSAg IGlmICghaTM4Nl9kcl9sb3cuc2V0X2FkZHIgfHwgIWkzODZfZHJfbG93LnNldF9jb250cm9sKQot QEAgLTMyMywxMSArMzk4LDEwIEBAIGkzODZfaW5zZXJ0X2FsaWduZWRfd2F0Y2hwb2ludCAoQ09S RV9BREQKLSAgICAgIHJldXNlIGl0IGZvciB0aGlzIHdhdGNocG9pbnQgYXMgd2VsbCAoYW5kIHNh dmUgYSByZWdpc3RlcikuICAqLwotICAgQUxMX0RFQlVHX1JFR0lTVEVSUyhpKQotICAgICB7Ci0t ICAgICAgaWYgKCFJMzg2X0RSX1ZBQ0FOVCAoaSkKLS0JICAmJiBkcl9taXJyb3JbaV0gPT0gYWRk cgotLQkgICYmIEkzODZfRFJfR0VUX1JXX0xFTiAoaSkgPT0gbGVuX3J3X2JpdHMpCi0rICAgICAg aWYgKCFpMzg2X2RyX3ZhY2FudCAoZHJfbWlycm9yLCBpKSAmJiBkcl9taXJyb3ItPmFkZHJbaV0g PT0gYWRkcgotKwkgICYmIGkzODZfZHJfZ2V0X3J3X2xlbiAoZHJfbWlycm9yLCBpKSA9PSBsZW5f cndfYml0cykKLSAJewotLQkgIGRyX3JlZl9jb3VudFtpXSsrOwotKwkgIGRyX21pcnJvci0+cmVm X2NvdW50W2ldKys7Ci0gCSAgcmV0dXJuIDA7Ci0gCX0KLSAgICAgfQotQEAgLTMzNSw3ICs0MDks NyBAQCBpMzg2X2luc2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQURECi0gICAvKiBOZXh0 LCBsb29rIGZvciBhIHZhY2FudCBkZWJ1ZyByZWdpc3Rlci4gICovCi0gICBBTExfREVCVUdfUkVH SVNURVJTKGkpCi0gICAgIHsKLS0gICAgICBpZiAoSTM4Nl9EUl9WQUNBTlQgKGkpKQotKyAgICAg IGlmIChpMzg2X2RyX3ZhY2FudCAoZHJfbWlycm9yLCBpKSkKLSAJYnJlYWs7Ci0gICAgIH0KLSAK LUBAIC0zNDYsOSArNDIwLDkgQEAgaTM4Nl9pbnNlcnRfYWxpZ25lZF93YXRjaHBvaW50IChDT1JF X0FERAotICAgLyogTm93IHNldCB1cCB0aGUgcmVnaXN0ZXIgSSB0byB3YXRjaCBvdXIgcmVnaW9u LiAgKi8KLSAKLSAgIC8qIFJlY29yZCB0aGUgaW5mbyBpbiBvdXIgbG9jYWwgbWlycm9yZWQgYXJy YXkuICAqLwotLSAgZHJfbWlycm9yW2ldID0gYWRkcjsKLS0gIGRyX3JlZl9jb3VudFtpXSA9IDE7 Ci0tICBJMzg2X0RSX1NFVF9SV19MRU4gKGksIGxlbl9yd19iaXRzKTsKLSsgIGRyX21pcnJvci0+ YWRkcltpXSA9IGFkZHI7Ci0rICBkcl9taXJyb3ItPnJlZl9jb3VudFtpXSA9IDE7Ci0rICBpMzg2 X2RyX3NldF9yd19sZW4gKGRyX21pcnJvciwgaSwgbGVuX3J3X2JpdHMpOwotICAgLyogTm90ZTog d2Ugb25seSBlbmFibGUgdGhlIHdhdGNocG9pbnQgbG9jYWxseSwgaS5lLiBpbiB0aGUgY3VycmVu dAotICAgICAgdGFzay4gIEN1cnJlbnRseSwgbm8gaTM4NiB0YXJnZXQgYWxsb3dzIG9yIHN1cHBv cnRzIGdsb2JhbAotICAgICAgd2F0Y2hwb2ludHM7IGhvd2V2ZXIsIGlmIGFueSB0YXJnZXQgd291 bGQgd2FudCB0aGF0IGluIHRoZQotQEAgLTM1NiwxMyArNDMwLDEzIEBAIGkzODZfaW5zZXJ0X2Fs aWduZWRfd2F0Y2hwb2ludCAoQ09SRV9BREQKLSAgICAgIHRvIGVuYWJsZSB3YXRjaHBvaW50cyBn bG9iYWxseSBvciBsb2NhbGx5LCBhbmQgdGhlIGNvZGUgYmVsb3cKLSAgICAgIHNob3VsZCB1c2Ug Z2xvYmFsIG9yIGxvY2FsIGVuYWJsZSBhbmQgc2xvdy1kb3duIGZsYWdzIGFzCi0gICAgICBhcHBy b3ByaWF0ZS4gICovCi0tICBJMzg2X0RSX0xPQ0FMX0VOQUJMRSAoaSk7Ci0tICBkcl9jb250cm9s X21pcnJvciB8PSBEUl9MT0NBTF9TTE9XRE9XTjsKLS0gIGRyX2NvbnRyb2xfbWlycm9yICY9IEkz ODZfRFJfQ09OVFJPTF9NQVNLOwotKyAgaTM4Nl9kcl9sb2NhbF9lbmFibGUgKGRyX21pcnJvciwg aSk7Ci0rICBkcl9taXJyb3ItPmNvbnRyb2wgfD0gRFJfTE9DQUxfU0xPV0RPV047Ci0rICBkcl9t aXJyb3ItPmNvbnRyb2wgJj0gSTM4Nl9EUl9DT05UUk9MX01BU0s7Ci0gCi0gICAvKiBGaW5hbGx5 LCBhY3R1YWxseSBwYXNzIHRoZSBpbmZvIHRvIHRoZSBpbmZlcmlvci4gICovCi0gICBpMzg2X2Ry X2xvdy5zZXRfYWRkciAoaSwgYWRkcik7Ci0tICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJf Y29udHJvbF9taXJyb3IpOwotKyAgaTM4Nl9kcl9sb3cuc2V0X2NvbnRyb2wgKGRyX21pcnJvci0+ Y29udHJvbCk7Ci0gCi0gICAvKiBPbmx5IGEgc2FuaXR5IGNoZWNrIGZvciBsZWZ0b3ZlciBiaXRz IChzZXQgcG9zc2libHkgb25seSBieSBpbmZlcmlvcikuICAqLwotICAgaWYgKGkzODZfZHJfbG93 LnVuc2V0X3N0YXR1cykKLUBAIC0zODAsMjEgKzQ1NCwyMSBAQCBpMzg2X2luc2VydF9hbGlnbmVk X3dhdGNocG9pbnQgKENPUkVfQURECisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0 YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICBpbnQgcmV0dmFsOworICAgLyogV29y ayBvbiBhIGxvY2FsIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycywgYW5kIG9uIHN1Y2Nlc3Ms CisgICAgICBjb21taXQgdGhlIGNoYW5nZSBiYWNrIHRvIHRoZSBpbmZlcmlvci4gICovCistICBz dHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSBkcl9taXJyb3I7CisrICBz dHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgbG9jYWxfc3RhdGUgPSAqc3RhdGU7CisgCisgICBp ZiAoKChsZW4gIT0gMSAmJiBsZW4gIT0yICYmIGxlbiAhPTQpICYmICEoVEFSR0VUX0hBU19EUl9M RU5fOCAmJiBsZW4gPT0gOCkpCisgICAgICAgfHwgYWRkciAlIGxlbiAhPSAwKQorQEAgLTU3NSw3 ICs2NTUsNyBAQCBpMzg2X3JlbW92ZV93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHR5cGUsCisgICAgIGkzODZfdXBkYXRlX2luZmVyaW9yX2RlYnVnX3JlZ3MgKCZsb2Nh bF9zdGF0ZSk7CisgCisgICBpZiAobWFpbnRfc2hvd19kcikKKy0gICAgaTM4Nl9zaG93X2RyICgm ZHJfbWlycm9yLCAicmVtb3ZlX3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUpOworKyAgICBp Mzg2X3Nob3dfZHIgKHN0YXRlLCAicmVtb3ZlX3dhdGNocG9pbnQiLCBhZGRyLCBsZW4sIHR5cGUp OworIAorICAgcmV0dXJuIHJldHZhbDsKKyB9CitAQCAtNTg2LDExICs2NjYsMTIgQEAgaTM4Nl9y ZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBsZW4sIGludCB0eXBlLAogIHN0 YXRpYyBpbnQKLSBpMzg2X3JlbW92ZV9hbGlnbmVkX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRy LCB1bnNpZ25lZCBsZW5fcndfYml0cykKKyBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0Y2hwb2ludCAo Q09SRV9BRERSIGFkZHIsIGludCBsZW4pCiAgewotKyAgc3RydWN0IGkzODZfZHJfbWlycm9yICpk cl9taXJyb3IgPSBpMzg2X2RyX21pcnJvcl9nZXQgKCk7Ci0gICBpbnQgaSwgcmV0dmFsID0gLTE7 Ci0gCi0gICBBTExfREVCVUdfUkVHSVNURVJTKGkpCi0gICAgIHsKLS0gICAgICBpZiAoIUkzODZf RFJfVkFDQU5UIChpKQotLQkgICYmIGRyX21pcnJvcltpXSA9PSBhZGRyCi0tCSAgJiYgSTM4Nl9E Ul9HRVRfUldfTEVOIChpKSA9PSBsZW5fcndfYml0cykKLSsgICAgICBpZiAoIWkzODZfZHJfdmFj YW50IChkcl9taXJyb3IsIGkpICYmIGRyX21pcnJvci0+YWRkcltpXSA9PSBhZGRyCi0rCSAgJiYg aTM4Nl9kcl9nZXRfcndfbGVuIChkcl9taXJyb3IsIGkpID09IGxlbl9yd19iaXRzKQotIAl7Ci0t CSAgaWYgKC0tZHJfcmVmX2NvdW50W2ldID09IDApIC8qIG5vIGxvbmdlciBpbiB1c2U/ICAqLwot KwkgIGlmICgtLWRyX21pcnJvci0+cmVmX2NvdW50W2ldID09IDApIC8qIG5vIGxvbmdlciBpbiB1 c2U/ICAqLwotIAkgICAgewotIAkgICAgICAvKiBSZXNldCBvdXIgbWlycm9yLiAgKi8KLS0JICAg ICAgZHJfbWlycm9yW2ldID0gMDsKLS0JICAgICAgSTM4Nl9EUl9ESVNBQkxFIChpKTsKLSsJICAg ICAgZHJfbWlycm9yLT5hZGRyW2ldID0gMDsKLSsJICAgICAgaTM4Nl9kcl9kaXNhYmxlIChkcl9t aXJyb3IsIGkpOwotIAkgICAgICAvKiBSZXNldCBpdCBpbiB0aGUgaW5mZXJpb3IuICAqLwotLQkg ICAgICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfY29udHJvbF9taXJyb3IpOwotKwkgICAg ICBpMzg2X2RyX2xvdy5zZXRfY29udHJvbCAoZHJfbWlycm9yLT5jb250cm9sKTsKLSAJICAgICAg aWYgKGkzODZfZHJfbG93LnJlc2V0X2FkZHIpCi0gCQlpMzg2X2RyX2xvdy5yZXNldF9hZGRyIChp KTsKLSAJICAgIH0KLUBAIC01NTYsMjYgKzYzMCwyNyBAQCBpMzg2X3JlZ2lvbl9va19mb3Jfd2F0 Y2hwb2ludCAoQ09SRV9BRERSCisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRl ID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICBpbnQgbnJlZ3M7CisgCisgICAvKiBDb21w dXRlIGhvdyBtYW55IGFsaWduZWQgd2F0Y2hwb2ludHMgd2Ugd291bGQgbmVlZCB0byBjb3ZlciB0 aGlzCisgICAgICByZWdpb24uICAqLworLSAgbnJlZ3MgPSBpMzg2X2hhbmRsZV9ub25hbGlnbmVk X3dhdGNocG9pbnQgKCZkcl9taXJyb3IsCisrICBucmVncyA9IGkzODZfaGFuZGxlX25vbmFsaWdu ZWRfd2F0Y2hwb2ludCAoc3RhdGUsCisgCQkJCQkgICAgIFdQX0NPVU5ULCBhZGRyLCBsZW4sIGh3 X3dyaXRlKTsKKyAgIHJldHVybiBucmVncyA8PSBEUl9OQUREUiA/IDEgOiAwOworIH0KK0BAIC02 MDIsNiArNjgzLDcgQEAgaTM4Nl9yZWdpb25fb2tfZm9yX3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuKQogIHN0YXRpYyBpbnQKICBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChz dHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKICB7Ci0rICBzdHJ1Y3Qg aTM4Nl9kcl9taXJyb3IgKmRyX21pcnJvciA9IGkzODZfZHJfbWlycm9yX2dldCAoKTsKKysgIHN0 cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAqc3RhdGUgPSBpMzg2X2RlYnVnX3JlZ19zdGF0ZSAo KTsKICAgIENPUkVfQUREUiBhZGRyID0gMDsKICAgIGludCBpOwogICAgaW50IHJjID0gMDsKLSAK LS0gIGRyX3N0YXR1c19taXJyb3IgPSBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOwotKyAgZHJf bWlycm9yLT5zdGF0dXMgPSBpMzg2X2RyX2xvdy5nZXRfc3RhdHVzICgpOwotIAotICAgQUxMX0RF QlVHX1JFR0lTVEVSUyhpKQotICAgICB7Ci0tICAgICAgaWYgKEkzODZfRFJfV0FUQ0hfSElUIChp KQotKyAgICAgIGlmIChpMzg2X2RyX3dhdGNoX2hpdCAoZHJfbWlycm9yLCBpKQotIAkgIC8qIFRo aXMgc2Vjb25kIGNvbmRpdGlvbiBtYWtlcyBzdXJlIERSaSBpcyBzZXQgdXAgZm9yIGEgZGF0YQot IAkgICAgIHdhdGNocG9pbnQsIG5vdCBhIGhhcmR3YXJlIGJyZWFrcG9pbnQuICBUaGUgcmVhc29u IGlzCi0gCSAgICAgdGhhdCBHREIgZG9lc24ndCBjYWxsIHRoZSB0YXJnZXRfc3RvcHBlZF9kYXRh X2FkZHJlc3MKLSAJICAgICBtZXRob2QgZXhjZXB0IGZvciBkYXRhIHdhdGNocG9pbnRzLiAgSW4g b3RoZXIgd29yZHMsIEknbQotIAkgICAgIGJlaW5nIHBhcmFub2lhYy4gICovCi0tCSAgJiYgSTM4 Nl9EUl9HRVRfUldfTEVOIChpKSAhPSAwCi0rCSAgJiYgaTM4Nl9kcl9nZXRfcndfbGVuIChkcl9t aXJyb3IsIGkpICE9IDAKLSAJICAvKiBUaGlzIHRoaXJkIGNvbmRpdGlvbiBtYWtlcyBzdXJlIERS aSBpcyBub3QgdmFjYW50LCB0aGlzCi0gCSAgICAgYXZvaWRzIGZhbHNlIHBvc2l0aXZlcyBpbiB3 aW5kb3dzLW5hdC5jLiAgKi8KLS0JICAmJiAhSTM4Nl9EUl9WQUNBTlQgKGkpKQotKwkgICYmICFp Mzg2X2RyX3ZhY2FudCAoZHJfbWlycm9yLCBpKSkKLSAJewotLQkgIGFkZHIgPSBkcl9taXJyb3Jb aV07Ci0rCSAgYWRkciA9IGRyX21pcnJvci0+YWRkcltpXTsKK0BAIC02MTUsMjUgKzY5NywyNCBA QCBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JF X0FERFIgKmFkZHJfcCkKKyAgIHVuc2lnbmVkIGNvbnRyb2wgPSAwOworIAorICAgLyogSW4gbm9u LXN0b3AvYXN5bmMsIHRocmVhZHMgY2FuIGJlIHJ1bm5pbmcgd2hpbGUgd2UgY2hhbmdlIHRoZQor LSAgICAgZ2xvYmFsIGRyX21pcnJvciAoYW5kIGZyaWVuZHMpLiAgU2F5LCB3ZSBzZXQgYSB3YXRj aHBvaW50LCBhbmQKKy0gICAgIGxldCB0aHJlYWRzIHJlc3VtZS4gIE5vdywgc2F5IHlvdSBkZWxl dGUgdGhlIHdhdGNocG9pbnQsIG9yCistICAgICBhZGQvcmVtb3ZlIHdhdGNocG9pbnRzIHN1Y2gg dGhhdCBkcl9taXJyb3IgY2hhbmdlcyB3aGlsZSB0aHJlYWRzCistICAgICBhcmUgcnVubmluZy4g IE9uIHRhcmdldHMgdGhhdCBzdXBwb3J0IG5vbi1zdG9wLAorLSAgICAgaW5zZXJ0aW5nL2RlbGV0 aW5nIHdhdGNocG9pbnRzIHVwZGF0ZXMgdGhlIGdsb2JhbCBkcl9taXJyb3Igb25seS4KKy0gICAg IEl0IGRvZXMgbm90IHVwZGF0ZSB0aGUgcmVhbCB0aHJlYWQncyBkZWJ1ZyByZWdpc3RlcnM7IHRo YXQncyBvbmx5CistICAgICBkb25lIHByaW9yIHRvIHJlc3VtZS4gIEluc3RlYWQsIGlmIHRocmVh ZHMgYXJlIHJ1bm5pbmcgd2hlbiB0aGUKKy0gICAgIG1pcnJvciBjaGFuZ2VzLCBhIHRlbXBvcmFy eSBhbmQgdHJhbnNwYXJlbnQgc3RvcCBvbiBhbGwgdGhyZWFkcworLSAgICAgaXMgZm9yY2VkIHNv IHRoZXkgY2FuIGdldCB0aGVpciBjb3B5IG9mIHRoZSBkZWJ1ZyByZWdpc3RlcnMKKy0gICAgIHVw ZGF0ZWQgb24gcmUtcmVzdW1lLiAgTm93LCBzYXksIGEgdGhyZWFkIGhpdCBhIHdhdGNocG9pbnQg YmVmb3JlCistICAgICBoYXZpbmcgYmVlbiB1cGRhdGVkIHdpdGggdGhlIG5ldyBkcl9taXJyb3Ig Y29udGVudHMsIGFuZCB3ZQorLSAgICAgaGF2ZW4ndCB5ZXQgaGFuZGxlZCB0aGUgY29ycmVzcG9u ZGluZyBTSUdUUkFQLiAgSWYgd2UgdHJ1c3RlZAorLSAgICAgZHJfbWlycm9yIGJlbG93LCB3ZSdk IG1pc3Rha2UgdGhlIHJlYWwgdHJhcHBlZCBhZGRyZXNzIChmcm9tIHRoZQorLSAgICAgbGFzdCB0 aW1lIHdlIGhhZCB1cGRhdGVkIGRlYnVnIHJlZ2lzdGVycyBpbiB0aGUgdGhyZWFkKSB3aXRoCist ICAgICB3aGF0ZXZlciB3YXMgY3VycmVudGx5IGluIGRyX21pcnJvci4gIFNvIHRvIGZpeCB0aGlz LCBkcl9taXJyb3IKKy0gICAgIGFsd2F5cyByZXByZXNlbnRzIGludGVudGlvbiwgd2hhdCB3ZSBf d2FudF8gdGhyZWFkcyB0byBoYXZlIGluCistICAgICBkZWJ1ZyByZWdpc3RlcnMuICBUbyBnZXQg YXQgdGhlIGFkZHJlc3MgYW5kIGNhdXNlIG9mIHRoZSB0cmFwLCB3ZQorLSAgICAgbmVlZCB0byBy ZWFkIHRoZSBzdGF0ZSB0aGUgdGhyZWFkIHN0aWxsIGhhcyBpbiBpdHMgZGVidWcKKy0gICAgIHJl Z2lzdGVycy4KKysgICAgIFNUQVRFIChhbmQgZnJpZW5kcykuICBTYXksIHdlIHNldCBhIHdhdGNo cG9pbnQsIGFuZCBsZXQgdGhyZWFkcworKyAgICAgcmVzdW1lLiAgTm93LCBzYXkgeW91IGRlbGV0 ZSB0aGUgd2F0Y2hwb2ludCwgb3IgYWRkL3JlbW92ZQorKyAgICAgd2F0Y2hwb2ludHMgc3VjaCB0 aGF0IFNUQVRFIGNoYW5nZXMgd2hpbGUgdGhyZWFkcyBhcmUgcnVubmluZy4KKysgICAgIE9uIHRh cmdldHMgdGhhdCBzdXBwb3J0IG5vbi1zdG9wLCBpbnNlcnRpbmcvZGVsZXRpbmcgd2F0Y2hwb2lu dHMKKysgICAgIHVwZGF0ZXMgdGhlIFNUQVRFIG9ubHkuICBJdCBkb2VzIG5vdCB1cGRhdGUgdGhl IHJlYWwgdGhyZWFkJ3MKKysgICAgIGRlYnVnIHJlZ2lzdGVyczsgdGhhdCdzIG9ubHkgZG9uZSBw cmlvciB0byByZXN1bWUuICBJbnN0ZWFkLCBpZgorKyAgICAgdGhyZWFkcyBhcmUgcnVubmluZyB3 aGVuIHRoZSBtaXJyb3IgY2hhbmdlcywgYSB0ZW1wb3JhcnkgYW5kCisrICAgICB0cmFuc3BhcmVu dCBzdG9wIG9uIGFsbCB0aHJlYWRzIGlzIGZvcmNlZCBzbyB0aGV5IGNhbiBnZXQgdGhlaXIKKysg ICAgIGNvcHkgb2YgdGhlIGRlYnVnIHJlZ2lzdGVycyB1cGRhdGVkIG9uIHJlLXJlc3VtZS4gIE5v dywgc2F5LAorKyAgICAgYSB0aHJlYWQgaGl0IGEgd2F0Y2hwb2ludCBiZWZvcmUgaGF2aW5nIGJl ZW4gdXBkYXRlZCB3aXRoIHRoZSBuZXcKKysgICAgIFNUQVRFIGNvbnRlbnRzLCBhbmQgd2UgaGF2 ZW4ndCB5ZXQgaGFuZGxlZCB0aGUgY29ycmVzcG9uZGluZworKyAgICAgU0lHVFJBUC4gIElmIHdl IHRydXN0ZWQgU1RBVEUgYmVsb3csIHdlJ2QgbWlzdGFrZSB0aGUgcmVhbAorKyAgICAgdHJhcHBl ZCBhZGRyZXNzIChmcm9tIHRoZSBsYXN0IHRpbWUgd2UgaGFkIHVwZGF0ZWQgZGVidWcKKysgICAg IHJlZ2lzdGVycyBpbiB0aGUgdGhyZWFkKSB3aXRoIHdoYXRldmVyIHdhcyBjdXJyZW50bHkgaW4g U1RBVEUuCisrICAgICBTbyB0byBmaXggdGhpcywgU1RBVEUgYWx3YXlzIHJlcHJlc2VudHMgaW50 ZW50aW9uLCB3aGF0IHdlIF93YW50XworKyAgICAgdGhyZWFkcyB0byBoYXZlIGluIGRlYnVnIHJl Z2lzdGVycy4gIFRvIGdldCBhdCB0aGUgYWRkcmVzcyBhbmQKKysgICAgIGNhdXNlIG9mIHRoZSB0 cmFwLCB3ZSBuZWVkIHRvIHJlYWQgdGhlIHN0YXRlIHRoZSB0aHJlYWQgc3RpbGwgaGFzCisrICAg ICBpbiBpdHMgZGVidWcgcmVnaXN0ZXJzLgorIAorICAgICAgSW4gc3VtLCBhbHdheXMgZ2V0IHRo ZSBjdXJyZW50IGRlYnVnIHJlZ2lzdGVyIHZhbHVlcyB0aGUgY3VycmVudAorICAgICAgdGhyZWFk IGhhcywgaW5zdGVhZCBvZiB0cnVzdGluZyB0aGUgZ2xvYmFsIG1pcnJvci4gIElmIHRoZSB0aHJl YWQKK0BAIC02NjMsMTEgKzc0NCwxMSBAQCBpMzg2X3N0b3BwZWRfZGF0YV9hZGRyZXNzIChzdHJ1 Y3QgdGFyZ2V0X29wcyAqb3BzLCBDT1JFX0FERFIgKmFkZHJfcCkKKyAJICBhZGRyID0gaTM4Nl9k cl9sb3cuZ2V0X2FkZHIgKGkpOwogIAkgIHJjID0gMTsKICAJICBpZiAobWFpbnRfc2hvd19kcikK LSAJICAgIGkzODZfc2hvd19kciAoIndhdGNocG9pbnRfaGl0IiwgYWRkciwgLTEsIGh3X3dyaXRl KTsKLUBAIC02ODksNiArNzY0LDEwIEBAIGkzODZfdXNlX3dhdGNocG9pbnRzIChzdHJ1Y3QgdGFy Z2V0X29wcworLQkgICAgaTM4Nl9zaG93X2RyICgmZHJfbWlycm9yLCAid2F0Y2hwb2ludF9oaXQi LCBhZGRyLCAtMSwgaHdfd3JpdGUpOworKwkgICAgaTM4Nl9zaG93X2RyIChzdGF0ZSwgIndhdGNo cG9pbnRfaGl0IiwgYWRkciwgLTEsIGh3X3dyaXRlKTsKKyAJfQorICAgICB9CisgICBpZiAobWFp bnRfc2hvd19kciAmJiBhZGRyID09IDApCistICAgIGkzODZfc2hvd19kciAoJmRyX21pcnJvciwg InN0b3BwZWRfZGF0YV9hZGRyIiwgMCwgMCwgaHdfd3JpdGUpOworKyAgICBpMzg2X3Nob3dfZHIg KHN0YXRlLCAic3RvcHBlZF9kYXRhX2FkZHIiLCAwLCAwLCBod193cml0ZSk7CisgCisgICBpZiAo cmMpCisgICAgICphZGRyX3AgPSBhZGRyOworQEAgLTY4NywxMSArNzY4LDEyIEBAIHN0YXRpYyBp bnQKKyBpMzg2X2luc2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK KyAJCQkgICBzdHJ1Y3QgYnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKKyB7CisrICBzdHJ1Y3QgaTM4 Nl9kZWJ1Z19yZWdfc3RhdGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICB1 bnNpZ25lZCBsZW5fcncgPSBpMzg2X2xlbmd0aF9hbmRfcndfYml0cyAoMSwgaHdfZXhlY3V0ZSk7 CisgICBDT1JFX0FERFIgYWRkciA9IGJwX3RndC0+cGxhY2VkX2FkZHJlc3M7CisgICAvKiBXb3Jr IG9uIGEgbG9jYWwgY29weSBvZiB0aGUgZGVidWcgcmVnaXN0ZXJzLCBhbmQgb24gc3VjY2VzcywK KyAgICAgIGNvbW1pdCB0aGUgY2hhbmdlIGJhY2sgdG8gdGhlIGluZmVyaW9yLiAgKi8KKy0gIHN0 cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9IGRyX21pcnJvcjsKKysgIHN0 cnVjdCBpMzg2X2RlYnVnX3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9ICpzdGF0ZTsKKyAgIGludCBy ZXR2YWwgPSBpMzg2X2luc2VydF9hbGlnbmVkX3dhdGNocG9pbnQgKCZsb2NhbF9zdGF0ZSwKKyAJ CQkJCSAgICAgICBhZGRyLCBsZW5fcncpID8gRUJVU1kgOiAwOworIAorQEAgLTY5OSw3ICs3ODEs NyBAQCBpMzg2X2luc2VydF9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwK KyAgICAgaTM4Nl91cGRhdGVfaW5mZXJpb3JfZGVidWdfcmVncyAoJmxvY2FsX3N0YXRlKTsKKyAK KyAgIGlmIChtYWludF9zaG93X2RyKQorLSAgICBpMzg2X3Nob3dfZHIgKCZkcl9taXJyb3IsICJp bnNlcnRfaHdicCIsIGFkZHIsIDEsIGh3X2V4ZWN1dGUpOworKyAgICBpMzg2X3Nob3dfZHIgKHN0 YXRlLCAiaW5zZXJ0X2h3YnAiLCBhZGRyLCAxLCBod19leGVjdXRlKTsKKyAKKyAgIHJldHVybiBy ZXR2YWw7CisgfQorQEAgLTcxMSwxMSArNzkzLDEyIEBAIHN0YXRpYyBpbnQKKyBpMzg2X3JlbW92 ZV9od19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAJCQkgICBzdHJ1Y3Qg YnBfdGFyZ2V0X2luZm8gKmJwX3RndCkKKyB7CisrICBzdHJ1Y3QgaTM4Nl9kZWJ1Z19yZWdfc3Rh dGUgKnN0YXRlID0gaTM4Nl9kZWJ1Z19yZWdfc3RhdGUgKCk7CisgICB1bnNpZ25lZCBsZW5fcncg PSBpMzg2X2xlbmd0aF9hbmRfcndfYml0cyAoMSwgaHdfZXhlY3V0ZSk7CisgICBDT1JFX0FERFIg YWRkciA9IGJwX3RndC0+cGxhY2VkX2FkZHJlc3M7CisgICAvKiBXb3JrIG9uIGEgbG9jYWwgY29w eSBvZiB0aGUgZGVidWcgcmVnaXN0ZXJzLCBhbmQgb24gc3VjY2VzcywKKyAgICAgIGNvbW1pdCB0 aGUgY2hhbmdlIGJhY2sgdG8gdGhlIGluZmVyaW9yLiAgKi8KKy0gIHN0cnVjdCBpMzg2X2RlYnVn X3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9IGRyX21pcnJvcjsKKysgIHN0cnVjdCBpMzg2X2RlYnVn X3JlZ19zdGF0ZSBsb2NhbF9zdGF0ZSA9ICpzdGF0ZTsKKyAgIGludCByZXR2YWwgPSBpMzg2X3Jl bW92ZV9hbGlnbmVkX3dhdGNocG9pbnQgKCZsb2NhbF9zdGF0ZSwKKyAJCQkJCSAgICAgICBhZGRy LCBsZW5fcncpOworIAorQEAgLTcyMyw3ICs4MDYsNyBAQCBpMzg2X3JlbW92ZV9od19icmVha3Bv aW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgaTM4Nl91cGRhdGVfaW5mZXJpb3Jf ZGVidWdfcmVncyAoJmxvY2FsX3N0YXRlKTsKKyAKKyAgIGlmIChtYWludF9zaG93X2RyKQorLSAg ICBpMzg2X3Nob3dfZHIgKCZkcl9taXJyb3IsICJyZW1vdmVfaHdicCIsIGFkZHIsIDEsIGh3X2V4 ZWN1dGUpOworKyAgICBpMzg2X3Nob3dfZHIgKHN0YXRlLCAicmVtb3ZlX2h3YnAiLCBhZGRyLCAx LCBod19leGVjdXRlKTsKKyAKKyAgIHJldHVybiByZXR2YWw7CisgfQorQEAgLTc4OCw2ICs4NzEs MTAgQEAgaTM4Nl91c2Vfd2F0Y2hwb2ludHMgKHN0cnVjdCB0YXJnZXRfb3BzICp0KQogICAgdC0+ dG9fcmVtb3ZlX3dhdGNocG9pbnQgPSBpMzg2X3JlbW92ZV93YXRjaHBvaW50OwogICAgdC0+dG9f aW5zZXJ0X2h3X2JyZWFrcG9pbnQgPSBpMzg2X2luc2VydF9od19icmVha3BvaW50OwogICAgdC0+ dG9fcmVtb3ZlX2h3X2JyZWFrcG9pbnQgPSBpMzg2X3JlbW92ZV9od19icmVha3BvaW50OwpAQCAt NTM1NSw1MyArNTY1OCwzNzIgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYt bmF0LmMKICB9CiAgCiAgdm9pZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2kzODYt bmF0LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2kzODYt bmF0LmgJMjAxMS0wMS0wOSAwNDowODo1Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9pMzg2LW5hdC5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCi1AQCAtNzgsNiArNzgsMjggQEAgc3RydWN0IGkzODZfZHJfbG93X3R5cGUKK2RpZmYgLS1n aXQgYS9nZGIvaTM4Ni10ZGVwLmMgYi9nZGIvaTM4Ni10ZGVwLmMKK2luZGV4IGE0ZTNhMjIuLjFl M2UyOWIgMTAwNjQ0CistLS0gYS9nZGIvaTM4Ni10ZGVwLmMKKysrKyBiL2dkYi9pMzg2LXRkZXAu YworQEAgLTYwLDggKzYwLDE0IEBACisgI2luY2x1ZGUgImZlYXR1cmVzL2kzODYvaTM4Ni1hdngu YyIKKyAjaW5jbHVkZSAiZmVhdHVyZXMvaTM4Ni9pMzg2LW1teC5jIgogIAotIGV4dGVybiBzdHJ1 Y3QgaTM4Nl9kcl9sb3dfdHlwZSBpMzg2X2RyX2xvdzsKKysjaW5jbHVkZSAic3RhcC1wcm9iZS5o IgorICNpbmNsdWRlICJheC5oIgorICNpbmNsdWRlICJheC1nZGIuaCIKKysjaW5jbHVkZSAidXNl ci1yZWdzLmgiCisrI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKysjaW5jbHVkZSAiZXhwcmVz c2lvbi5oIgorKyNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgorKyNpbmNsdWRlIDxjdHlwZS5oPgor IAorIC8qIFJlZ2lzdGVyIG5hbWVzLiAgKi8KICAKLSsvKiBUaGUgbnVtYmVyIG9mIGRlYnVnIGFk ZHJlc3MgcmVnaXN0ZXJzLiAgKi8KLSsjZGVmaW5lIERSX05BRERSCTQKK0BAIC03MjQ1LDYgKzcy NTEsMzEyIEBAIGkzODZfdmFsaWRhdGVfdGRlc2NfcCAoc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRl cCwKKyAgIHJldHVybiB2YWxpZF9wOworIH0KKyAKKytpbnQKKytpMzg2X3N0YXBfaXNfc2luZ2xl X29wZXJhbmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICpzKQorK3sKKysg IHJldHVybiAoKnMgPT0gJyQnIC8qIExpdGVyYWwgbnVtYmVyLiAgKi8KKysJICB8fCAoaXNkaWdp dCAoKnMpICYmIHNbMV0gPT0gJygnICYmIHNbMl0gPT0gJyUnKSAvKiBEaXNwbGFjZW1lbnQuICAq LworKwkgIHx8ICgqcyA9PSAnKCcgJiYgc1sxXSA9PSAnJScpIC8qIFJlZ2lzdGVyIGluZGlyZWN0 aW9uLiAgKi8KKysJICB8fCAoKnMgPT0gJyUnICYmIGlzYWxwaGEgKHNbMV0pKSk7IC8qIFJlZ2lz dGVyIGFjY2Vzcy4gICovCisrfQogKwotKy8qIENvcHkgb2YgaGFyZHdhcmUgZGVidWcgcmVnaXN0 ZXJzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiAgKi8KKytpbnQKKytpMzg2X3N0YXBfcGFyc2Vf c3BlY2lhbF90b2tlbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJICAgICAgIHN0cnVj dCBzdGFwX3BhcnNlX2luZm8gKnApCisreworKyAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKICsK LStzdHJ1Y3QgaTM4Nl9kcl9taXJyb3IKLSsgIHsKLSsgICAgLyogTWlycm9yIHRoZSBpbmZlcmlv cidzIERSaSByZWdpc3RlcnMuICBXZSBrZWVwIHRoZSBzdGF0dXMgYW5kCi0rICAgICAgIGNvbnRy b2wgcmVnaXN0ZXJzIHNlcGFyYXRlZCBiZWNhdXNlIHRoZXkgZG9uJ3QgaG9sZCBhZGRyZXNzZXMu ICAqLwotKyAgICBDT1JFX0FERFIgYWRkcltEUl9OQUREUl07CisrICAvKiBJbiBvcmRlciB0byBw YXJzZSBzcGVjaWFsIHRva2Vucywgd2UgdXNlIGEgc3RhdGUtbWFjaGluZSB0aGF0IGdvCisrICAg ICB0aHJvdWdoIGV2ZXJ5IGtub3duIHRva2VuIGFuZCB0cnkgdG8gZ2V0IGEgbWF0Y2guICAqLwor KyAgZW51bQorKyAgICB7CisrICAgICAgVFJJUExFVCwKKysgICAgICBUSFJFRV9BUkdfRElTUExB Q0VNRU5ULAorKyAgICAgIERPTkUKKysgICAgfSBjdXJyZW50X3N0YXRlOwogKwotKyAgICAvKiBB bGwgdGhlIEFERFIgaGFyZHdhcmUgcmVnaXN0ZXJzIGhhdmUgYmVlbiB3cml0dGVuIGF0IGxlYXN0 IG9uY2UuICAqLwotKyAgICB1bnNpZ25lZCBhZGRyX3ByZXNldCA6IDE7CisrICBjdXJyZW50X3N0 YXRlID0gVFJJUExFVDsKICsKLSsgICAgLyogUmVmZXJlbmNlIGNvdW50cyBmb3IgZWFjaCBkZWJ1 ZyByZWdpc3Rlci4gICovCi0rICAgIGludCByZWZfY291bnRbRFJfTkFERFJdOworKyAgLyogVGhl IHNwZWNpYWwgdG9rZW5zIHRvIGJlIHBhcnNlZCBoZXJlIGFyZToKICsKLSsgICAgdW5zaWduZWQg bG9uZyBzdGF0dXMsIGNvbnRyb2w7Ci0rICB9OworKyAgICAgLSBgcmVnaXN0ZXIgYmFzZSArIChy ZWdpc3RlciBpbmRleCAqIHNpemUpICsgb2Zmc2V0JywgYXMgcmVwcmVzZW50ZWQKKysgICAgIGlu IGAoJXJjeCwlcmF4LDgpJywgb3IgYFtPRkZTRVRdKEJBU0VfUkVHLElOREVYX1JFR1ssU0laRV0p Jy4KICsKLStleHRlcm4gc3RydWN0IGkzODZfZHJfbWlycm9yICppMzg2X2RyX21pcnJvcl9nZXQg KHZvaWQpOworKyAgICAgLSBPcGVyYW5kcyBvZiB0aGUgZm9ybSBgLTgrMysxKCVyYnApJywgd2hp Y2ggbXVzdCBiZSBpbnRlcnByZXRlZCBhcworKyAgICAgYCooLTggKyAzIC0gMSArICh2b2lkICop ICRlYXgpJy4gICovCiArCi0gLyogVXNlIHRoaXMgZnVuY3Rpb24gdG8gc2V0IGkzODZfZHJfbG93 IGRlYnVnX3JlZ2lzdGVyX2xlbmd0aCBmaWVsZAotICAgIHJhdGhlciB0aGFuIHNldHRpbmcgaXQg ZGlyZWN0bHkgdG8gY2hlY2sgdGhhdCB0aGUgbGVuZ3RoIGlzIG9ubHkKLSAgICBzZXQgb25jZS4g IEl0IGFsc28gZW5hYmxlcyB0aGUgJ21haW50IHNldC9zaG93IHNob3ctZGVidWctcmVncycgCi1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2luZnJ1bi5jCTIwMTEtMDctMjIgMDE6NDY6MDku MDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01NSw2ICs1NSw4IEBACi0gI2lu Y2x1ZGUgImppdC5oIgotICNpbmNsdWRlICJ0cmFjZXBvaW50LmgiCisrICB3aGlsZSAoY3VycmVu dF9zdGF0ZSAhPSBET05FKQorKyAgICB7CisrICAgICAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsK KysKKysgICAgICBzd2l0Y2ggKGN1cnJlbnRfc3RhdGUpCisrCXsKKysJY2FzZSBUUklQTEVUOgor KwkgICAgeworKwkgICAgICBpZiAoaXNkaWdpdCAoKnMpIHx8ICpzID09ICctJyB8fCAqcyA9PSAn KycpCisrCQl7CisrCQkgIGludCBnb3RfbWludXNbM107CisrCQkgIGludCBpOworKwkJICBsb25n IGRpc3BsYWNlbWVudHNbM107CisrCQkgIGNvbnN0IGNoYXIgKnN0YXJ0OworKwkJICBjaGFyICpy ZWduYW1lOworKwkJICBpbnQgbGVuOworKwkJICBzdHJ1Y3Qgc3Rva2VuIHN0cjsKKysKKysJCSAg Z290X21pbnVzWzBdID0gMDsKKysJCSAgaWYgKCpzID09ICcrJykKKysJCSAgICArK3M7CisrCQkg IGVsc2UgaWYgKCpzID09ICctJykKKysJCSAgICB7CisrCQkgICAgICArK3M7CisrCQkgICAgICBn b3RfbWludXNbMF0gPSAxOworKwkJICAgIH0KKysKKysJCSAgZGlzcGxhY2VtZW50c1swXSA9IHN0 cnRvbCAocywgKGNoYXIgKiopICZzLCAxMCk7CisrCisrCQkgIGlmICgqcyAhPSAnKycgJiYgKnMg IT0gJy0nKQorKwkJICAgIC8qIFdlIGFyZSBub3QgZGVhbGluZyB3aXRoIGEgdHJpcGxldC4gICov CisrCQkgICAgYnJlYWs7CisrCisrCQkgIGdvdF9taW51c1sxXSA9IDA7CisrCQkgIGlmICgqcyA9 PSAnKycpCisrCQkgICAgKytzOworKwkJICBlbHNlCisrCQkgICAgeworKwkJICAgICAgKytzOwor KwkJICAgICAgZ290X21pbnVzWzFdID0gMTsKKysJCSAgICB9CisrCisrCQkgIGRpc3BsYWNlbWVu dHNbMV0gPSBzdHJ0b2wgKHMsIChjaGFyICoqKSAmcywgMTApOworKworKwkJICBpZiAoKnMgIT0g JysnICYmICpzICE9ICctJykKKysJCSAgICAvKiBXZSBhcmUgbm90IGRlYWxpbmcgd2l0aCBhIHRy aXBsZXQuICAqLworKwkJICAgIGJyZWFrOworKworKwkJICBnb3RfbWludXNbMl0gPSAwOworKwkJ ICBpZiAoKnMgPT0gJysnKQorKwkJICAgICsrczsKKysJCSAgZWxzZQorKwkJICAgIHsKKysJCSAg ICAgICsrczsKKysJCSAgICAgIGdvdF9taW51c1syXSA9IDE7CisrCQkgICAgfQorKworKwkJICBk aXNwbGFjZW1lbnRzWzJdID0gc3RydG9sIChzLCAoY2hhciAqKikgJnMsIDEwKTsKKysKKysJCSAg aWYgKCpzICE9ICcoJyB8fCBzWzFdICE9ICclJykKKysJCSAgICBicmVhazsKKysKKysJCSAgcyAr PSAyOworKwkJICBzdGFydCA9IHM7CisrCisrCQkgIHdoaWxlIChpc2FsbnVtICgqcykpCisrCQkg ICAgKytzOworKworKwkJICBpZiAoKnMrKyAhPSAnKScpCisrCQkgICAgYnJlYWs7CisrCisrCQkg IGxlbiA9IHMgLSBzdGFydDsKKysJCSAgcmVnbmFtZSA9IGFsbG9jYSAobGVuICsgMSk7CisrCisr CQkgIHN0cm5jcHkgKHJlZ25hbWUsIHN0YXJ0LCBsZW4pOworKwkJICByZWduYW1lW2xlbl0gPSAn XDAnOworKworKwkJICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLAor KwkJCQkJCSAgIHJlZ25hbWUsIGxlbikgPT0gLTEpCisrCQkgICAgZXJyb3IgKF8oIkludmFsaWQg cmVnaXN0ZXIgbmFtZSBgJXMnICIKKysJCQkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksCisr CQkJICAgcmVnbmFtZSwgcC0+c2F2ZWRfYXJnKTsKKysKKysJCSAgZm9yIChpID0gMDsgaSA8IDM7 IGkrKykKKysJCSAgICB7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7 CisrCQkgICAgICB3cml0ZV9leHBfZWx0X3R5cGUKKysJCQkoYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl9sb25nKTsKKysJCSAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAoZGlzcGxh Y2VtZW50c1tpXSk7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7Cisr CQkgICAgICBpZiAoZ290X21pbnVzW2ldKQorKwkJCXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9Q X05FRyk7CisrCQkgICAgfQorKworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNU RVIpOworKwkJICBzdHIucHRyID0gcmVnbmFtZTsKKysJCSAgc3RyLmxlbmd0aCA9IGxlbjsKKysJ CSAgd3JpdGVfZXhwX3N0cmluZyAoc3RyKTsKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9Q X1JFR0lTVEVSKTsKKysJCSAgCisrCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1Qp OworKwkJICB3cml0ZV9leHBfZWx0X3R5cGUgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0 aW5fZGF0YV9wdHIpOworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9DQVNUKTsKKysK KysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX0FERCk7CisrCQkgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChCSU5PUF9BREQpOworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1Bf QUREKTsKKysKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrCQkgIHdy aXRlX2V4cF9lbHRfdHlwZSAobG9va3VwX3BvaW50ZXJfdHlwZSAocC0+YXJnX3R5cGUpKTsKKysJ CSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrCisrCQkgIHdyaXRlX2V4cF9l bHRfb3Bjb2RlIChVTk9QX0lORCk7CisrCisrCQkgIHAtPmFyZyA9IHM7CisrCisrCQkgIHJldHVy biAxOworKwkJfQorKwkgICAgICBicmVhazsKKysJICAgIH0KKysJY2FzZSBUSFJFRV9BUkdfRElT UExBQ0VNRU5UOgorKwkgICAgeworKwkgICAgICBpZiAoaXNkaWdpdCAoKnMpIHx8ICpzID09ICco JyB8fCAqcyA9PSAnLScgfHwgKnMgPT0gJysnKQorKwkJeworKwkJICBpbnQgb2Zmc2V0X21pbnVz ID0gMDsKKysJCSAgbG9uZyBvZmZzZXQgPSAwOworKwkJICBpbnQgc2l6ZV9taW51cyA9IDA7Cisr CQkgIGxvbmcgc2l6ZSA9IDA7CisrCQkgIGNvbnN0IGNoYXIgKnN0YXJ0OworKwkJICBjaGFyICpi YXNlOworKwkJICBpbnQgbGVuX2Jhc2U7CisrCQkgIGNoYXIgKmluZGV4OworKwkJICBpbnQgbGVu X2luZGV4OworKwkJICBzdHJ1Y3Qgc3Rva2VuIGJhc2VfdG9rZW4sIGluZGV4X3Rva2VuOworKwor KwkJICBpZiAoKnMgPT0gJysnKQorKwkJICAgICsrczsKKysJCSAgZWxzZSBpZiAoKnMgPT0gJy0n KQorKwkJICAgIHsKKysJCSAgICAgICsrczsKKysJCSAgICAgIG9mZnNldF9taW51cyA9IDE7Cisr CQkgICAgfQorKworKwkJICBpZiAob2Zmc2V0X21pbnVzICYmICFpc2RpZ2l0ICgqcykpCisrCQkg ICAgYnJlYWs7CisrCisrCQkgIGlmIChpc2RpZ2l0ICgqcykpCisrCQkgICAgb2Zmc2V0ID0gc3Ry dG9sIChzLCAoY2hhciAqKikgJnMsIDEwKTsKKysKKysJCSAgaWYgKCpzICE9ICcoJyB8fCBzWzFd ICE9ICclJykKKysJCSAgICBicmVhazsKKysKKysJCSAgcyArPSAyOworKwkJICBzdGFydCA9IHM7 CisrCisrCQkgIHdoaWxlIChpc2FsbnVtICgqcykpCisrCQkgICAgKytzOworKworKwkJICBpZiAo KnMgIT0gJywnIHx8IHNbMV0gIT0gJyUnKQorKwkJICAgIGJyZWFrOworKworKwkJICBsZW5fYmFz ZSA9IHMgLSBzdGFydDsKKysJCSAgYmFzZSA9IGFsbG9jYSAobGVuX2Jhc2UgKyAxKTsKKysJCSAg c3RybmNweSAoYmFzZSwgc3RhcnQsIGxlbl9iYXNlKTsKKysJCSAgYmFzZVtsZW5fYmFzZV0gPSAn XDAnOworKworKwkJICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLAor KwkJCQkJCSAgIGJhc2UsIGxlbl9iYXNlKSA9PSAtMSkKKysJCSAgICBlcnJvciAoXygiSW52YWxp ZCByZWdpc3RlciBuYW1lIGAlcycgIgorKwkJCSAgICAgIm9uIGV4cHJlc3Npb24gYCVzJy4iKSwK KysJCQkgICBiYXNlLCBwLT5zYXZlZF9hcmcpOworKworKwkJICBzICs9IDI7CisrCQkgIHN0YXJ0 ID0gczsKKysKKysJCSAgd2hpbGUgKGlzYWxudW0gKCpzKSkKKysJCSAgICArK3M7CisrCisrCQkg IGxlbl9pbmRleCA9IHMgLSBzdGFydDsKKysJCSAgaW5kZXggPSBhbGxvY2EgKGxlbl9pbmRleCAr IDEpOworKwkJICBzdHJuY3B5IChpbmRleCwgc3RhcnQsIGxlbl9pbmRleCk7CisrCQkgIGluZGV4 W2xlbl9pbmRleF0gPSAnXDAnOworKworKwkJICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVn bnVtIChnZGJhcmNoLAorKwkJCQkJCSAgIGluZGV4LCBsZW5faW5kZXgpID09IC0xKQorKwkJICAg IGVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgYCVzJyAiCisrCQkJICAgICAib24gZXhw cmVzc2lvbiBgJXMnLiIpLAorKwkJCSAgIGluZGV4LCBwLT5zYXZlZF9hcmcpOworKworKwkJICBp ZiAoKnMgIT0gJywnICYmICpzICE9ICcpJykKKysJCSAgICBicmVhazsKKysKKysJCSAgaWYgKCpz ID09ICcsJykKKysJCSAgICB7CisrCQkgICAgICArK3M7CisrCQkgICAgICBpZiAoKnMgPT0gJysn KQorKwkJCSsrczsKKysJCSAgICAgIGVsc2UgaWYgKCpzID09ICctJykKKysJCQl7CisrCQkJICAr K3M7CisrCQkJICBzaXplX21pbnVzID0gMTsKKysJCQl9CisrCisrCQkgICAgICBzaXplID0gc3Ry dG9sIChzLCAoY2hhciAqKikgJnMsIDEwKTsKKysKKysJCSAgICAgIGlmICgqcyAhPSAnKScpCisr CQkJYnJlYWs7CisrCQkgICAgfQorKworKwkJICArK3M7CisrCisrCQkgIGlmIChvZmZzZXQpCisr CQkgICAgeworKwkJICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOworKwkJICAg ICAgd3JpdGVfZXhwX2VsdF90eXBlCisrCQkJKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0 aW5fbG9uZyk7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKG9mZnNldCk7CisrCQkg ICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkgICAgICBpZiAob2Zmc2V0 X21pbnVzKQorKwkJCXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX05FRyk7CisrCQkgICAgfQor KworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKwkJICBiYXNlX3Rv a2VuLnB0ciA9IGJhc2U7CisrCQkgIGJhc2VfdG9rZW4ubGVuZ3RoID0gbGVuX2Jhc2U7CisrCQkg IHdyaXRlX2V4cF9zdHJpbmcgKGJhc2VfdG9rZW4pOworKwkJICB3cml0ZV9leHBfZWx0X29wY29k ZSAoT1BfUkVHSVNURVIpOworKwkJICAKKysJCSAgaWYgKG9mZnNldCkKKysJCSAgICB3cml0ZV9l eHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKKysKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KE9QX1JFR0lTVEVSKTsKKysJCSAgaW5kZXhfdG9rZW4ucHRyID0gaW5kZXg7CisrCQkgIGluZGV4 X3Rva2VuLmxlbmd0aCA9IGxlbl9pbmRleDsKKysJCSAgd3JpdGVfZXhwX3N0cmluZyAoaW5kZXhf dG9rZW4pOworKwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKworKwkJ ICBpZiAoc2l6ZSkKKysJCSAgICB7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1Bf TE9ORyk7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X3R5cGUKKysJCQkoYnVpbHRpbl90eXBlIChn ZGJhcmNoKS0+YnVpbHRpbl9sb25nKTsKKysJCSAgICAgIHdyaXRlX2V4cF9lbHRfbG9uZ2NzdCAo c2l6ZSk7CisrCQkgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9ORyk7CisrCQkgICAg ICBpZiAoc2l6ZV9taW51cykKKysJCQl3cml0ZV9leHBfZWx0X29wY29kZSAoVU5PUF9ORUcpOwor KwkJICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKEJJTk9QX01VTCk7CisrCQkgICAgfQorKwor KwkJICB3cml0ZV9leHBfZWx0X29wY29kZSAoQklOT1BfQUREKTsKKysKKysJCSAgd3JpdGVfZXhw X2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrCQkgIHdyaXRlX2V4cF9lbHRfdHlwZSAobG9va3Vw X3BvaW50ZXJfdHlwZSAocC0+YXJnX3R5cGUpKTsKKysJCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KFVOT1BfQ0FTVCk7CisrCisrCQkgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0lORCk7Cisr CisrCQkgIHAtPmFyZyA9IHM7CisrCisrCQkgIHJldHVybiAxOworKwkJfQorKwkgICAgICBicmVh azsKKysJICAgIH0KKysJfQorKworKyAgICAgIC8qIEFkdmFuY2luZyB0byB0aGUgbmV4dCBzdGF0 ZS4gICovCisrICAgICAgKytjdXJyZW50X3N0YXRlOworKyAgICB9CisrCisrICByZXR1cm4gMDsK Kyt9CisrCisgDAorIHN0YXRpYyBzdHJ1Y3QgZ2RiYXJjaCAqCisgaTM4Nl9nZGJhcmNoX2luaXQg KHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQor ZGlmZiAtLWdpdCBhL2dkYi9pMzg2LXRkZXAuaCBiL2dkYi9pMzg2LXRkZXAuaAoraW5kZXggZGUx MWY2OC4uMmE4NGFkYyAxMDA2NDQKKy0tLSBhL2dkYi9pMzg2LXRkZXAuaAorKysrIGIvZ2RiL2kz ODYtdGRlcC5oCitAQCAtMzgwLDYgKzM4MCwxNSBAQCBleHRlcm4gdm9pZCBpMzg2X3N2cjRfaW5p dF9hYmkgKHN0cnVjdCBnZGJhcmNoX2luZm8sIHN0cnVjdCBnZGJhcmNoICopOworIAorIGV4dGVy biBpbnQgaTM4Nl9wcm9jZXNzX3JlY29yZCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBD T1JFX0FERFIgYWRkcik7CisrCisrLyogU3lzdGVtVGFwIHJlbGF0ZWQgZnVuY3Rpb25zLiAgKi8K KysKKytleHRlcm4gaW50IGkzODZfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAoc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2gsCisrCQkJCQljb25zdCBjaGFyICpzKTsKKysKKytleHRlcm4gaW50IGkzODZf c3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkJ CSAgc3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCk7CisrCisgDAorIAorIC8qIEZ1bmN0aW9ucyBh bmQgdmFyaWFibGVzIGV4cG9ydGVkIGZyb20gaTM4NmJzZC10ZGVwLmMuICAqLworZGlmZiAtLWdp dCBhL2dkYi9pbmZydW4uYyBiL2dkYi9pbmZydW4uYworaW5kZXggNWEwZjFkMi4uYjJkMzUwZCAx MDA2NDQKKy0tLSBhL2dkYi9pbmZydW4uYworKysrIGIvZ2RiL2luZnJ1bi5jCitAQCAtNTcsNiAr NTcsOCBAQAogICNpbmNsdWRlICJjb250aW51YXRpb25zLmgiCisgI2luY2x1ZGUgImludGVycHMu aCIKKyAjaW5jbHVkZSAic2tpcC5oIgogKyNpbmNsdWRlICJzdGFwLXByb2JlLmgiCiArI2luY2x1 ZGUgIm9iamZpbGVzLmgiCiAgCiAgLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zICov CiAgCi1AQCAtMjM0MSw3ICsyMzQzLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX3N0ZXBfaW50b19m dW5jdGlvbiAocworQEAgLTIzODEsNyArMjM4Myw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9zdGVw X2ludG9fZnVuY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAogIHN0YXRpYyB2b2lkIGhh bmRsZV9zdGVwX2ludG9fZnVuY3Rpb25fYmFja3dhcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNo LAogIAkJCQkJCXN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKICBzdGF0aWMg dm9pZCBjaGVja19leGNlcHRpb25fcmVzdW1lIChzdHJ1Y3QgZXhlY3V0aW9uX2NvbnRyb2xfc3Rh dGUgKiwKQEAgLTU0MTAsNyArNjAzMiw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9pbmZydW4uYwogIAogIHN0YXRpYyB2b2lkIHN0b3Bfc3RlcHBpbmcgKHN0cnVjdCBleGVjdXRp b25fY29udHJvbF9zdGF0ZSAqZWNzKTsKICBzdGF0aWMgdm9pZCBwcmVwYXJlX3RvX3dhaXQgKHN0 cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKTsKLUBAIC00Mjg1LDkgKzQyODcsMTcg QEAgcHJvY2Vzc19ldmVudF9zdG9wX3Rlc3Q6CitAQCAtNDQxOSw5ICs0NDIxLDE3IEBAIHByb2Nl c3NfZXZlbnRfc3RvcF90ZXN0OgogIAogIAlpZiAod2hhdC5pc19sb25nam1wKQogIAkgIHsKQEAg LTU0MzEsNyArNjA1Myw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9pbmZydW4u YwogIAkgICAgICB7CiAgCQlpZiAoZGVidWdfaW5mcnVuKQogIAkJICBmcHJpbnRmX3VuZmlsdGVy ZWQgKGdkYl9zdGRsb2csCi1AQCAtNDMwNSwxMiArNDMxNSw3IEBAIHByb2Nlc3NfZXZlbnRfc3Rv cF90ZXN0OgorQEAgLTQ0MzksMTIgKzQ0NDksNyBAQCBwcm9jZXNzX2V2ZW50X3N0b3BfdGVzdDoK ICAJICAgIGluc2VydF9sb25nam1wX3Jlc3VtZV9icmVha3BvaW50IChnZGJhcmNoLCBqbXBfYnVm X3BjKTsKICAJICB9CiAgCWVsc2UKQEAgLTU0NDUsNyArNjA2Nyw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9pbmZydW4uYwogIAlrZWVwX2dvaW5nIChlY3MpOwogIAlyZXR1cm47 CiAgCi1AQCAtNTQyMywxNSArNTQyOCw2NSBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jlc3VtZV9icmVh a3BvaW50IChzdHJ1CitAQCAtNTUyNiwxNSArNTUzMSw2NSBAQCBpbnNlcnRfZXhjZXB0aW9uX3Jl c3VtZV9icmVha3BvaW50IChzdHJ1Y3QgdGhyZWFkX2luZm8gKnRwLAogICAgICB9CiAgfQogIApA QCAtNTUxMiw3ICs2MTM0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1 bi5jCiAgCiAgICBUUllfQ0FUQ0ggKGUsIFJFVFVSTl9NQVNLX0VSUk9SKQogICAgICB7Ci1AQCAt NjQzNCw3ICs2NDg5LDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzIHNpZ2luZm9f dgorQEAgLTY1NjUsNyArNjYyMCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbHZhbF9mdW5jcyBz aWdpbmZvX3ZhbHVlX2Z1bmNzID0KICAgICBpZiB0aGVyZSdzIG5vIG9iamVjdCBhdmFpbGFibGUu ICAqLwogIAogIHN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgpAQCAtNTUyMiw3ICs2MTQ0LDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2luZnJ1bi5jCiAgewogICAgaWYgKHRhcmdldF9o YXNfc3RhY2sKICAgICAgICAmJiAhcHRpZF9lcXVhbCAoaW5mZXJpb3JfcHRpZCwgbnVsbF9wdGlk KQotQEAgLTY5MjksNiArNjk4NSwxNSBAQCBzaG93X3NjaGVkdWxlX211bHRpcGxlIChzdHJ1Y3Qg dWlfZmlsZSAqCitAQCAtNzA2MCw2ICs3MTE2LDE1IEBAIHNob3dfc2NoZWR1bGVfbXVsdGlwbGUg KHN0cnVjdCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAgCQkJICAgICJvZiBhbGwgcHJv Y2Vzc2VzIGlzICVzLlxuIiksIHZhbHVlKTsKICB9CiAgCkBAIC01NTM4LDcgKzYxNjAsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvaW5mcnVuLmMKICB2b2lkCiAgX2luaXRpYWxp emVfaW5mcnVuICh2b2lkKQogIHsKLUBAIC03MjA0LDcgKzcyNjksNyBAQCBUZWxscyBnZGIgd2hl dGhlciB0byBkZXRhY2ggdGhlIGNoaWxkIG9mCitAQCAtNzM0OCw3ICs3NDEzLDcgQEAgZW5hYmxl ZCBieSBkZWZhdWx0IG9uIHNvbWUgcGxhdGZvcm1zLiIpLAogICAgICAgdmFsdWUgd2l0aCBhIHZv aWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAgICBpc24n dCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJlIHRoZXJl CiAgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBzYW1lIG5h bWUuICAqLwpAQCAtNTU0NywxMjkgKzYxNjksMjE3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9pbmZydW4uYwogIAogICAgYWRkX3NldHNob3dfYm9vbGVhbl9jbWQgKCJvYnNlcnZl ciIsIG5vX2NsYXNzLAogIAkJCSAgICZvYnNlcnZlcl9tb2RlXzEsIF8oIlwKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9saW5lc3BlYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9saW5lc3BlYy5jCTIwMTEtMDctMDUgMjI6MzA6MTkuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbGluZXNwZWMuYwkyMDExLTA3 LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTQzLDYgKzQzLDcgQEAKLSAjaW5jbHVk ZSAiYXJjaC11dGlscy5oIgotICNpbmNsdWRlIDxjdHlwZS5oPgorZGlmZiAtLWdpdCBhL2dkYi9s aW5lc3BlYy5jIGIvZ2RiL2xpbmVzcGVjLmMKK2luZGV4IDg1MjE4NTEuLjU2YTgzN2MgMTAwNjQ0 CistLS0gYS9nZGIvbGluZXNwZWMuYworKysrIGIvZ2RiL2xpbmVzcGVjLmMKK0BAIC00NSw2ICs0 NSw3IEBACiAgI2luY2x1ZGUgImNsaS9jbGktdXRpbHMuaCIKKyAjaW5jbHVkZSAiZmlsZW5hbWVz LmgiCisgI2luY2x1ZGUgImFkYS1sYW5nLmgiCiArI2luY2x1ZGUgInN0YXAtcHJvYmUuaCIKICAK LSAvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotIAotQEAgLTc4Myw2ICs3 ODQsNyBAQCBrZWVwX25hbWVfaW5mbyAoY2hhciAqcCwgaW50IG9uX2JvdW5kYXJ5CisgdHlwZWRl ZiBzdHJ1Y3Qgc3ltdGFiICpzeW10YWJfcDsKKyBERUZfVkVDX1AgKHN5bXRhYl9wKTsKK0BAIC04 MDQsNiArODA1LDcgQEAga2VlcF9uYW1lX2luZm8gKGNoYXIgKnAsIGludCBvbl9ib3VuZGFyeSkK ICAgICBQQyByZXR1cm5lZCBpcyAwLgogICAgIEZJTEU6RlVOQ1RJT04gLS0gbGlrZXdpc2UsIGJ1 dCBwcmVmZXIgZnVuY3Rpb25zIGluIHRoYXQgZmlsZS4KICAgICAqRVhQUiAtLSBsaW5lIGluIHdo aWNoIGFkZHJlc3MgRVhQUiBhcHBlYXJzLgotKyAgIHByb2JlOltPQkpGSUxFOl1bUFJPVklERVI6 XU5BTUUgLS0gYSBzeXN0ZW10YXAgc3RhdGljIHByb2JlCisrICAgLXAgW09CSkZJTEU6XVtQUk9W SURFUjpdTkFNRSAtLSBhIHN5c3RlbXRhcCBzdGF0aWMgcHJvYmUKICAKICAgICBUaGlzIG1heSBh bGwgYmUgZm9sbG93ZWQgYnkgYW4gImlmIEVYUFIiLCB3aGljaCB3ZSBpZ25vcmUuCiAgCi1AQCAt ODUxLDYgKzg1Myw5IEBAIGRlY29kZV9saW5lXzEgKGNoYXIgKiphcmdwdHIsIGludCBmdW5maXIK LSAgIGlmICgqKmFyZ3B0ciA9PSAnKicpCi0gICAgIHJldHVybiBkZWNvZGVfaW5kaXJlY3QgKGFy Z3B0cik7CitAQCAtODc0LDYgKzg3Niw5IEBAIGRlY29kZV9saW5lX2ludGVybmFsIChzdHJ1Y3Qg bGluZXNwZWNfc3RhdGUgKnNlbGYsIGNoYXIgKiphcmdwdHIpCisgICAgICAgcmV0dXJuIGRlY29k ZV9pbmRpcmVjdCAoc2VsZiwgYXJncHRyKTsKKyAgICAgfQogIAotKyAgaWYgKHN0cm5jbXAgKCph cmdwdHIsICJwcm9iZToiLCA2KSA9PSAwKQotKyAgICByZXR1cm4gcGFyc2Vfc3RhcF9wcm9iZSAo YXJncHRyLCBjYW5vbmljYWwpOworKyAgaWYgKHN0cm5jbXAgKCphcmdwdHIsICItcCIsIDIpID09 IDAgJiYgaXNzcGFjZSAoKCphcmdwdHIpWzJdKSkKKysgICAgcmV0dXJuIHBhcnNlX3N0YXBfcHJv YmUgKGFyZ3B0ciwgc2VsZi0+Y2Fub25pY2FsKTsKICsKICAgIGlzX3F1b3RlZCA9IChzdHJjaHIg KGdldF9nZGJfY29tcGxldGVyX3F1b3RlX2NoYXJhY3RlcnMgKCksCiAgCQkgICAgICAgKiphcmdw dHIpICE9IE5VTEwpOwogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbmVzcGVj LmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2xpbmVzcGVj LmgJMjAxMS0wNC0wNCAxOTo0MTowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9saW5lc3BlYy5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMzAsNiArMzAsMTAgQEAgc3RydWN0IGxpbmVzcGVjX3Jlc3VsdAotICAgICAgZGlzcGxh eSBtZWNoYW5pc20gd291bGQgZG8gdGhlIHdyb25nIHRoaW5nLiAgKi8KLSAgIGludCBzcGVjaWFs X2Rpc3BsYXk7Ci0gCi0rICAvKiBJZiBub24temVybywgdGhlIGxpbmVzcGVjIHJlc3VsdCBzaG91 bGQgYmUgY29uc2lkZXJlZCB0byBiZSBhCi0rICAgICAicHJlLWV4cGFuZGVkIiBtdWx0aS1sb2Nh dGlvbiBsaW5lc3BlYy4gICovCi0rICBpbnQgcHJlX2V4cGFuZGVkOwotKwotICAgLyogSWYgbm9u LU5VTEwsIGFuIGFycmF5IG9mIGNhbm9uaWNhbCBuYW1lcyBmb3IgcmV0dXJuZWQKLSAgICAgIHN5 bXRhYl9hbmRfbGluZSBvYmplY3RzLiAgVGhlIGFycmF5IGhhcyBhcyBtYW55IGVsZW1lbnRzIGFz IHRoZQotICAgICAgYG5lbHRzJyBmaWVsZCBpbiB0aGUgc3ltdGFic19hbmRfbGluZSByZXR1cm5l ZCBieSBkZWNvZGVfbGluZV8xLgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4 LW5hdC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51 eC1uYXQuYwkyMDExLTA3LTIyIDAxOjQ2OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAw ICswMjAwCi1AQCAtMTI0MSw2ICsxMjQxLDY0IEBAIGl0ZXJhdGVfb3Zlcl9sd3BzIChwdGlkX3Qg ZmlsdGVyLAotICAgcmV0dXJuIE5VTEw7CitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5jIGIv Z2RiL2xpbnV4LW5hdC5jCitpbmRleCBlNWY3YzNlLi4wOWQ3YzFlIDEwMDY0NAorLS0tIGEvZ2Ri L2xpbnV4LW5hdC5jCisrKysgYi9nZGIvbGludXgtbmF0LmMKK0BAIC0yODksNiArMjg5LDcgQEAg c3RhdGljIHZvaWQgcmVzdG9yZV9jaGlsZF9zaWduYWxzX21hc2sgKHNpZ3NldF90ICpwcmV2X21h c2spOworIHN0cnVjdCBsd3BfaW5mbzsKKyBzdGF0aWMgc3RydWN0IGx3cF9pbmZvICphZGRfbHdw IChwdGlkX3QgcHRpZCk7Cisgc3RhdGljIHZvaWQgcHVyZ2VfbHdwX2xpc3QgKGludCBwaWQpOwor K3N0YXRpYyB2b2lkIGRlbGV0ZV9sd3AgKHB0aWRfdCBwdGlkKTsKKyBzdGF0aWMgc3RydWN0IGx3 cF9pbmZvICpmaW5kX2x3cF9waWQgKHB0aWRfdCBwdGlkKTsKKyAKKyAMCitAQCAtNTg1LDYgKzU4 NiwzMSBAQCBsaW51eF9jaGlsZF9wb3N0X3N0YXJ0dXBfaW5mZXJpb3IgKHB0aWRfdCBwdGlkKQor ICAgbGludXhfZW5hYmxlX3RyYWNlc3lzZ29vZCAocHRpZCk7CiAgfQogIAotKy8qIEhlbHBlciBm b3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzLiAgKi8KLSsKLStzdHJ1Y3QgaXRl cmF0ZV93YXRjaHBvaW50X2x3cHNfZGF0YQotKyAgewotKyAgICBsaW51eF9uYXRfaXRlcmF0ZV93 YXRjaHBvaW50X2x3cHNfZnR5cGUgY2FsbGJhY2s7Ci0rICAgIHZvaWQgKmNhbGxiYWNrX2RhdGE7 Ci0rICB9OworKy8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGtub3duIExXUHMgaW4gdGhlIHRnaWQg Z2l2ZW4gYnkgUElELiAgKi8KICsKICtzdGF0aWMgaW50Ci0raXRlcmF0ZV93YXRjaHBvaW50X2x3 cHNfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmRhdGFwX3ZvaWRwKQorK251 bV9sd3BzIChpbnQgcGlkKQogK3sKLSsgIHN0cnVjdCBpdGVyYXRlX3dhdGNocG9pbnRfbHdwc19k YXRhICpkYXRhcCA9IGRhdGFwX3ZvaWRwOwotKyAgaW50IHRpZDsKKysgIGludCBjb3VudCA9IDA7 CisrICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwogKwotKyAgdGlkID0gVElER0VUIChscC0+cHRpZCk7 Ci0rICBpZiAodGlkID09IDApCi0rICAgIHRpZCA9IFBJREdFVCAobHAtPnB0aWQpOworKyAgZm9y IChscCA9IGx3cF9saXN0OyBscDsgbHAgPSBscC0+bmV4dCkKKysgICAgaWYgKHB0aWRfZ2V0X3Bp ZCAobHAtPnB0aWQpID09IHBpZCkKKysgICAgICBjb3VudCsrOworKworKyAgcmV0dXJuIGNvdW50 OworK30KICsKLSsgIGRhdGFwLT5jYWxsYmFjayAodGlkLCBkYXRhcC0+Y2FsbGJhY2tfZGF0YSk7 CisrLyogQ2FsbCBkZWxldGVfbHdwIHdpdGggcHJvdG90eXBlIGNvbXBhdGlibGUgZm9yIG1ha2Vf Y2xlYW51cC4gICovCiArCi0rICAvKiBDb250aW51ZSB0aGUgdHJhdmVyc2FsLiAgKi8KLSsgIHJl dHVybiAwOworK3N0YXRpYyB2b2lkCisrZGVsZXRlX2x3cF9jbGVhbnVwICh2b2lkICpscF92b2lk cCkKKyt7CisrICBzdHJ1Y3QgbHdwX2luZm8gKmxwID0gbHBfdm9pZHA7CisrCisrICBkZWxldGVf bHdwIChscC0+cHRpZCk7CiArfQogKwotKy8qIEl0ZXJhdGUgbGlrZSBpdGVyYXRlX292ZXJfbHdw cyBkb2VzIGV4Y2VwdCB3aGVuIGZvcmtpbmctb2ZmIGEgY2hpbGQgY2FsbAotKyAgIENBTExCQUNL IHdpdGggQ0FMTEJBQ0tfREFUQSBzcGVjaWZpY2FsbHkgb25seSBmb3IgdGhhdCBuZXcgY2hpbGQg UElELgorIHN0YXRpYyBpbnQKKyBsaW51eF9jaGlsZF9mb2xsb3dfZm9yayAoc3RydWN0IHRhcmdl dF9vcHMgKm9wcywgaW50IGZvbGxvd19jaGlsZCkKKyB7CitAQCAtNjMxLDYgKzY1Nyw4IEBAIGhv bGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJzZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBc CisgICAgICAgLyogRGV0YWNoIG5ldyBmb3JrZWQgcHJvY2Vzcz8gICovCisgICAgICAgaWYgKGRl dGFjaF9mb3JrKQorIAl7CisrCSAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKysKKyAJICAv KiBCZWZvcmUgZGV0YWNoaW5nIGZyb20gdGhlIGNoaWxkLCByZW1vdmUgYWxsIGJyZWFrcG9pbnRz CisgCSAgICAgZnJvbSBpdC4gIElmIHdlIGZvcmtlZCwgdGhlbiB0aGlzIGhhcyBhbHJlYWR5IGJl ZW4gdGFrZW4KKyAJICAgICBjYXJlIG9mIGJ5IGluZnJ1bi5jLiAgSWYgd2UgdmZvcmtlZCBob3dl dmVyLCBhbnkKK0BAIC02NTMsNyArNjgxLDI4IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQu ICBUcnkgXCJzZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBcCisgCQkJCWNoaWxkX3BpZCk7CisgCSAg ICB9CisgCisrCSAgb2xkX2NoYWluID0gc2F2ZV9pbmZlcmlvcl9wdGlkICgpOworKwkgIGluZmVy aW9yX3B0aWQgPSBwdGlkX2J1aWxkIChjaGlsZF9waWQsIGNoaWxkX3BpZCwgMCk7CisrCisrCSAg Y2hpbGRfbHAgPSBhZGRfbHdwIChpbmZlcmlvcl9wdGlkKTsKKysJICBjaGlsZF9scC0+c3RvcHBl ZCA9IDE7CisrCSAgY2hpbGRfbHAtPmxhc3RfcmVzdW1lX2tpbmQgPSByZXN1bWVfc3RvcDsKKysJ ICBtYWtlX2NsZWFudXAgKGRlbGV0ZV9sd3BfY2xlYW51cCwgY2hpbGRfbHApOwogKwotKyAgIER1 cmluZyBgc2V0IGZvbGxvdy1mb3JrLW1vZGUgY2hpbGQnIHRoZSBjYWxsIGlzIGFsc28gbWFkZSBm b3IgdGhlIG5ldyBjaGlsZAotKyAgIFBJRDsgcGFyZW50IHdhdGNocG9pbnRzIGdldCBkZXRhY2hl ZCBlbHNld2hlcmUgKGR1cmluZyB0YXJnZXRfZGV0YWNoKS4gICovCisrCSAgLyogQ0hJTERfTFAg aGFzIG5ldyBQSUQsIHRoZXJlZm9yZSBsaW51eF9uYXRfbmV3X3RocmVhZCBpcyBub3QgY2FsbGVk IGZvciBpdC4KKysJICAgICBTZWUgaTM4Nl9pbmZlcmlvcl9kYXRhX2dldCBmb3IgdGhlIExpbnV4 IGtlcm5lbCBzcGVjaWZpY3MuCisrCSAgICAgRW5zdXJlIGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jl c3VtZSB3aWxsIHJlc2V0IHRoZSBoYXJkd2FyZSBkZWJ1ZworKwkgICAgIHJlZ2lzdGVycy4gIEl0 IGlzIGRvbmUgYnkgdGhlIGxpbnV4X25hdF9uZXdfdGhyZWFkIGNhbGwsIHdoaWNoIGlzCisrCSAg ICAgYmVpbmcgc2tpcHBlZCBpbiBhZGRfbHdwIGFib3ZlIGZvciB0aGUgZmlyc3QgbHdwIG9mIGEg cGlkLiAgKi8KKysJICBnZGJfYXNzZXJ0IChudW1fbHdwcyAoR0VUX1BJRCAoY2hpbGRfbHAtPnB0 aWQpKSA9PSAxKTsKKysJICBpZiAobGludXhfbmF0X25ld190aHJlYWQgIT0gTlVMTCkKKysJICAg IGxpbnV4X25hdF9uZXdfdGhyZWFkIChjaGlsZF9scCk7CisrCisrCSAgaWYgKGxpbnV4X25hdF9w cmVwYXJlX3RvX3Jlc3VtZSAhPSBOVUxMKQorKwkgICAgbGludXhfbmF0X3ByZXBhcmVfdG9fcmVz dW1lIChjaGlsZF9scCk7CisgCSAgcHRyYWNlIChQVFJBQ0VfREVUQUNILCBjaGlsZF9waWQsIDAs IDApOworKworKwkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOworIAl9CisgICAgICAgZWxzZQor IAl7CitAQCAtNjcxLDYgKzcyMCw5IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkg XCJzZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBcCisgCSAgc2F2ZV9jdXJyZW50X3Byb2dyYW1fc3Bh Y2UgKCk7CisgCisgCSAgaW5mZXJpb3JfcHRpZCA9IHB0aWRfYnVpbGQgKGNoaWxkX3BpZCwgY2hp bGRfcGlkLCAwKTsKKysJICByZWluaXRfZnJhbWVfY2FjaGUgKCk7CisrCSAgcmVnaXN0ZXJzX2No YW5nZWQgKCk7CisrCisgCSAgYWRkX3RocmVhZCAoaW5mZXJpb3JfcHRpZCk7CisgCSAgY2hpbGRf bHAgPSBhZGRfbHdwIChpbmZlcmlvcl9wdGlkKTsKKyAJICBjaGlsZF9scC0+c3RvcHBlZCA9IDE7 CitAQCAtODYyLDYgKzkxNCw5IEBAIGhvbGRpbmcgdGhlIGNoaWxkIHN0b3BwZWQuICBUcnkgXCJz ZXQgZGV0YWNoLW9uLWZvcmtcIiBvciBcCisgCSBpbmZvcm1pbmcgdGhlIHNvbGliIGxheWVyIGFi b3V0IHRoaXMgbmV3IHByb2Nlc3MuICAqLworIAorICAgICAgIGluZmVyaW9yX3B0aWQgPSBwdGlk X2J1aWxkIChjaGlsZF9waWQsIGNoaWxkX3BpZCwgMCk7CisrICAgICAgcmVpbml0X2ZyYW1lX2Nh Y2hlICgpOworKyAgICAgIHJlZ2lzdGVyc19jaGFuZ2VkICgpOworKworICAgICAgIGFkZF90aHJl YWQgKGluZmVyaW9yX3B0aWQpOworICAgICAgIGNoaWxkX2xwID0gYWRkX2x3cCAoaW5mZXJpb3Jf cHRpZCk7CisgICAgICAgY2hpbGRfbHAtPnN0b3BwZWQgPSAxOworQEAgLTExMTIsMjEgKzExNjcs NiBAQCBwdXJnZV9sd3BfbGlzdCAoaW50IHBpZCkKKyAgICAgfQorIH0KKyAKKy0vKiBSZXR1cm4g dGhlIG51bWJlciBvZiBrbm93biBMV1BzIGluIHRoZSB0Z2lkIGdpdmVuIGJ5IFBJRC4gICovCist Cistc3RhdGljIGludAorLW51bV9sd3BzIChpbnQgcGlkKQorLXsKKy0gIGludCBjb3VudCA9IDA7 CistICBzdHJ1Y3QgbHdwX2luZm8gKmxwOworLQorLSAgZm9yIChscCA9IGx3cF9saXN0OyBscDsg bHAgPSBscC0+bmV4dCkKKy0gICAgaWYgKHB0aWRfZ2V0X3BpZCAobHAtPnB0aWQpID09IHBpZCkK Ky0gICAgICBjb3VudCsrOworLQorLSAgcmV0dXJuIGNvdW50OworLX0KKy0KKyAvKiBBZGQgdGhl IExXUCBzcGVjaWZpZWQgYnkgUElEIHRvIHRoZSBsaXN0LiAgUmV0dXJuIGEgcG9pbnRlciB0byB0 aGUKKyAgICBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbmV3IExXUC4gIFRoZSBMV1Agc2hvdWxk IGFscmVhZHkgYmUgc3RvcHBlZAorICAgICh3aXRoIGFuIGV4Y2VwdGlvbiBmb3IgdGhlIHZlcnkg Zmlyc3QgTFdQKS4gICovCitAQCAtMTIzNiw2ICsxMjc2LDQ2IEBAIGl0ZXJhdGVfb3Zlcl9sd3Bz IChwdGlkX3QgZmlsdGVyLAorICAgcmV0dXJuIE5VTEw7CisgfQorIAorKy8qIEl0ZXJhdGUgbGlr ZSBpdGVyYXRlX292ZXJfbHdwcyBkb2VzIGV4Y2VwdCB3aGVuIGZvcmtpbmctb2ZmIGEgY2hpbGQg Y2FsbAorKyAgIENBTExCQUNLIHdpdGggQ0FMTEJBQ0tfREFUQSBzcGVjaWZpY2FsbHkgb25seSBm b3IgdGhhdCBuZXcgY2hpbGQgUElELiAgKi8KICsKICt2b2lkCiArbGludXhfbmF0X2l0ZXJhdGVf d2F0Y2hwb2ludF9sd3BzCiArICAobGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2Z0 eXBlIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19kYXRhKQogK3sKLSsgIHN0cnVjdCBpdGVyYXRl X3dhdGNocG9pbnRfbHdwc19kYXRhIGRhdGE7CiArICBpbnQgaW5mZXJpb3JfcGlkID0gcHRpZF9n ZXRfcGlkIChpbmZlcmlvcl9wdGlkKTsKICsgIHN0cnVjdCBpbmZlcmlvciAqaW5mID0gY3VycmVu dF9pbmZlcmlvciAoKTsKICsKLSsgIGRhdGEuY2FsbGJhY2sgPSBjYWxsYmFjazsKLSsgIGRhdGEu Y2FsbGJhY2tfZGF0YSA9IGNhbGxiYWNrX2RhdGE7Ci0rCiArICBpZiAoaW5mLT5waWQgPT0gaW5m ZXJpb3JfcGlkKQogKyAgICB7Ci0rICAgICAgLyogU3RhbmRhcmQgbW9kZS4gIEl0ZXJhdGUgYWxs IHRoZSB0aHJlYWRzIG9mIHRoZSBjdXJyZW50IGluZmVyaW9yLgotKwkgV2l0aG91dCBzcGVjaWZ5 aW5nIElORkVSSU9SX1BJRCBpdCB3b3VsZCBpdGVyYXRlIGFsbCB0aGUgdGhyZWFkcyBvZgotKwkg YWxsIHRoZSBpbmZlcmlvcnMsIHdoaWNoIGlzIGluYXBwcm9wcmlhdGUgZm9yIHdhdGNocG9pbnRz LiAgKi8KKysgICAgICAvKiBJdGVyYXRlIGFsbCB0aGUgdGhyZWFkcyBvZiB0aGUgY3VycmVudCBp bmZlcmlvci4gIFdpdGhvdXQgc3BlY2lmeWluZworKwkgSU5GRVJJT1JfUElEIGl0IHdvdWxkIGl0 ZXJhdGUgYWxsIHRocmVhZHMgb2YgYWxsIGluZmVyaW9ycywgd2hpY2ggaXMKKysJIGluYXBwcm9w cmlhdGUgZm9yIHdhdGNocG9pbnRzLiAgKi8KICsKLSsgICAgICBpdGVyYXRlX292ZXJfbHdwcyAo cGlkX3RvX3B0aWQgKGluZmVyaW9yX3BpZCksCi0rCQkJIGl0ZXJhdGVfd2F0Y2hwb2ludF9sd3Bz X2NhbGxiYWNrLCAmZGF0YSk7CisrICAgICAgaXRlcmF0ZV9vdmVyX2x3cHMgKHBpZF90b19wdGlk IChpbmZlcmlvcl9waWQpLCBjYWxsYmFjaywgY2FsbGJhY2tfZGF0YSk7CiArICAgIH0KICsgIGVs c2UKICsgICAgewogKyAgICAgIC8qIERldGFjaGluZyBhIG5ldyBjaGlsZCBQSUQgdGVtcG9yYXJp bHkgcHJlc2VudCBpbiBJTkZFUklPUl9QSUQuICAqLwogKwotKyAgICAgIGNhbGxiYWNrIChpbmZl cmlvcl9waWQsIGNhbGxiYWNrX2RhdGEpOworKyAgICAgIHN0cnVjdCBsd3BfaW5mbyAqY2hpbGRf bHA7CisrICAgICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbjsKKysgICAgICBwaWRfdCBjaGls ZF9waWQgPSBHRVRfUElEIChpbmZlcmlvcl9wdGlkKTsKKysgICAgICBwdGlkX3QgY2hpbGRfcHRp ZCA9IHB0aWRfYnVpbGQgKGNoaWxkX3BpZCwgY2hpbGRfcGlkLCAwKTsKKysKKysgICAgICBnZGJf YXNzZXJ0ICghaXNfbHdwIChpbmZlcmlvcl9wdGlkKSk7CisrICAgICAgZ2RiX2Fzc2VydCAoZmlu ZF9sd3BfcGlkIChjaGlsZF9wdGlkKSA9PSBOVUxMKTsKKysgICAgICBjaGlsZF9scCA9IGFkZF9s d3AgKGNoaWxkX3B0aWQpOworKyAgICAgIGNoaWxkX2xwLT5zdG9wcGVkID0gMTsKKysgICAgICBj aGlsZF9scC0+bGFzdF9yZXN1bWVfa2luZCA9IHJlc3VtZV9zdG9wOworKyAgICAgIG9sZF9jaGFp biA9IG1ha2VfY2xlYW51cCAoZGVsZXRlX2x3cF9jbGVhbnVwLCBjaGlsZF9scCk7CisrCisrICAg ICAgY2FsbGJhY2sgKGNoaWxkX2xwLCBjYWxsYmFja19kYXRhKTsKKysKKysgICAgICBkb19jbGVh bnVwcyAob2xkX2NoYWluKTsKICsgICAgfQogK30KICsKICAvKiBVcGRhdGUgb3VyIGludGVybmFs IHN0YXRlIHdoZW4gY2hhbmdpbmcgZnJvbSBvbmUgY2hlY2twb2ludCB0bwogICAgIGFub3RoZXIg aW5kaWNhdGVkIGJ5IE5FV19QVElELiAgV2UgY2FuIG9ubHkgc3dpdGNoIHNpbmdsZS10aHJlYWRl ZAogICAgIGFwcGxpY2F0aW9ucywgc28gd2Ugb25seSBjcmVhdGUgb25lIG5ldyBMV1AsIGFuZCB0 aGUgcHJldmlvdXMgbGlzdAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4LW5h dC5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9saW51eC1u YXQuaAkyMDExLTAxLTA1IDIzOjIyOjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL2xpbnV4LW5hdC5oCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCi1AQCAtMTQwLDYgKzE0MCwxMSBAQCBzdHJ1Y3QgbHdwX2luZm8gKml0ZXJhdGVfb3Zlcl9s d3BzIChwdGlkCitkaWZmIC0tZ2l0IGEvZ2RiL2xpbnV4LW5hdC5oIGIvZ2RiL2xpbnV4LW5hdC5o CitpbmRleCAzMzcyN2Q2Li45OTE1ZjJmIDEwMDY0NAorLS0tIGEvZ2RiL2xpbnV4LW5hdC5oCisr KysgYi9nZGIvbGludXgtbmF0LmgKK0BAIC0xNTksNiArMTU5LDEyIEBAIHN0cnVjdCBsd3BfaW5m byAqaXRlcmF0ZV9vdmVyX2x3cHMgKHB0aWRfdCBmaWx0ZXIsCiAgCQkJCQkJICAgICB2b2lkICop LCAKICAJCQkJICAgIHZvaWQgKmRhdGEpOwogIAotK3R5cGVkZWYgdm9pZCAoKmxpbnV4X25hdF9p dGVyYXRlX3dhdGNocG9pbnRfbHdwc19mdHlwZSkgKGludCB0aWQsIHZvaWQgKmRhdGEpOworK3R5 cGVkZWYgaW50ICgqbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzX2Z0eXBlKSAoc3Ry dWN0IGx3cF9pbmZvICpsd3AsCisrCQkJCQkJCXZvaWQgKmFyZyk7CiArCiArZXh0ZXJuIHZvaWQg bGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzCiArICAobGludXhfbmF0X2l0ZXJhdGVf d2F0Y2hwb2ludF9sd3BzX2Z0eXBlIGNhbGxiYWNrLCB2b2lkICpjYWxsYmFja19kYXRhKTsKQEAg LTU2NzcsMTEgKzYzODcsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2xpbnV4 LW5hdC5oCiAgLyogQ3JlYXRlIGEgcHJvdG90eXBlIGdlbmVyaWMgR05VL0xpbnV4IHRhcmdldC4g IFRoZSBjbGllbnQgY2FuCiAgICAgb3ZlcnJpZGUgaXQgd2l0aCBsb2NhbCBtZXRob2RzLiAgKi8K ICBzdHJ1Y3QgdGFyZ2V0X29wcyAqIGxpbnV4X3RhcmdldCAodm9pZCk7Ci1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvbWFjaG9yZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL21hY2hvcmVhZC5jCTIwMTEtMDctMDEgMjA6MzY6NDUuMDAwMDAw MDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFjaG9yZWFkLmMJMjAxMS0w Ny0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC04NDIsNiArODQyLDcgQEAgc3RhdGlj IGNvbnN0IHN0cnVjdCBzeW1fZm5zIG1hY2hvX3N5bV9mbgorZGlmZiAtLWdpdCBhL2dkYi9tYWNo b3JlYWQuYyBiL2dkYi9tYWNob3JlYWQuYworaW5kZXggNDZiODg0Mi4uNjhhYWU0NiAxMDA2NDQK Ky0tLSBhL2dkYi9tYWNob3JlYWQuYworKysrIGIvZ2RiL21hY2hvcmVhZC5jCitAQCAtMTAzMiw2 ICsxMDMyLDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIG1hY2hvX3N5bV9mbnMgPSB7 CiAgICBkZWZhdWx0X3N5bWZpbGVfc2VnbWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9u IGZyb20gYSBmaWxlLiAgKi8KICAgIE5VTEwsCiAgICBtYWNob19zeW1maWxlX3JlbG9jYXRlLAkv KiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAqLwpAQCAtNTY4OSwxMCArNjM5OSwxMCBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFjaG9yZWFkLmMKICAgICZwc3ltX2Z1bmN0 aW9ucwogIH07CiAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9tYWluLmMJMjAxMS0wNi0x MyAxMjo1NToyNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9t YWluLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9n ZGIvbWFpbi5jIGIvZ2RiL21haW4uYworaW5kZXggMjg4ZWM0Yi4uMzhiNzY5OSAxMDA2NDQKKy0t LSBhL2dkYi9tYWluLmMKKysrKyBiL2dkYi9tYWluLmMKIEBAIC0zOSw2ICszOSw3IEBACiAgCiAg I2luY2x1ZGUgImludGVycHMuaCIKQEAgLTU3MDEsNyArNjQxMSw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9tYWluLmMKICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUg ImNsaS9jbGktY21kcy5oIgogICNpbmNsdWRlICJweXRob24vcHl0aG9uLmgiCi1AQCAtMjYyLDYg KzI2Myw4IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtMjY2LDYgKzI2Nyw4IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCiAgICBjaGFyICpjZGFyZyA9IE5VTEw7CiAgICBj aGFyICp0dHlhcmcgPSBOVUxMOwogIApAQCAtNTcxMCw3ICs2NDIwLDcgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogICAgLyogVGhlc2UgYXJlIHN0YXRpYyBzbyB0aGF0 IHdlIGNhbiB0YWtlIHRoZWlyIGFkZHJlc3MgaW4gYW4KICAgICAgIGluaXRpYWxpemVyLiAgKi8K ICAgIHN0YXRpYyBpbnQgcHJpbnRfaGVscDsKLUBAIC00NTIsMTAgKzQ1NSwxNCBAQCBjYXB0dXJl ZF9tYWluICh2b2lkICpkYXRhKQorQEAgLTQ1OSwxMCArNDYyLDE0IEBAIGNhcHR1cmVkX21haW4g KHZvaWQgKmRhdGEpCiAgICAgICAgeyJhcmdzIiwgbm9fYXJndW1lbnQsICZzZXRfYXJncywgMX0s CiAgICAgICAgeyJsIiwgcmVxdWlyZWRfYXJndW1lbnQsIDAsICdsJ30sCiAgICAgICAgeyJyZXR1 cm4tY2hpbGQtcmVzdWx0Iiwgbm9fYXJndW1lbnQsICZyZXR1cm5fY2hpbGRfcmVzdWx0LCAxfSwK QEAgLTU3MjYsNyArNjQzNiw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWlu LmMKICAgICAgICB7CiAgCWludCBvcHRpb25faW5kZXg7CiAgCi1AQCAtNDczLDYgKzQ4MCw5IEBA IGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNDgwLDYgKzQ4Nyw5IEBAIGNhcHR1cmVk X21haW4gKHZvaWQgKmRhdGEpCiAgCSAgY2FzZSAwOgogIAkgICAgLyogTG9uZyBvcHRpb24gdGhh dCBqdXN0IHNldHMgYSBmbGFnLiAgKi8KICAJICAgIGJyZWFrOwpAQCAtNTczNiw3ICs2NDQ2LDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21haW4uYwogIAkgIGNhc2UgT1BUX1NF OgogIAkgICAgc3ltYXJnID0gb3B0YXJnOwogIAkgICAgZXhlY2FyZyA9IG9wdGFyZzsKLUBAIC02 NjgsNyArNjc4LDMxIEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEpCitAQCAtNjc1LDcgKzY4 NSwzMSBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQogIAogICAgLyogTm93IHRoYXQgZ2Ri X2luaXQgaGFzIGNyZWF0ZWQgdGhlIGluaXRpYWwgaW5mZXJpb3IsIHdlJ3JlIGluCiAgICAgICBw b3NpdGlvbiB0byBzZXQgYXJncyBmb3IgdGhhdCBpbmZlcmlvci4gICovCkBAIC01NzY5LDcgKzY0 NzksNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgICAgIHsKICAg ICAgICAvKiBUaGUgcmVtYWluaW5nIG9wdGlvbnMgYXJlIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9u cyBmb3IgdGhlCiAgCSBpbmZlcmlvci4gIFRoZSBmaXJzdCBvbmUgaXMgdGhlIHN5bS9leGVjIGZp bGUsIGFuZCB0aGUgcmVzdAotQEAgLTkxNyw3ICs5NTEsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lk ICpkYXRhKQorQEAgLTkyNCw3ICs5NTgsOCBAQCBjYXB0dXJlZF9tYWluICh2b2lkICpkYXRhKQog IAogICAgLyogUmVhZCBpbiB0aGUgb2xkIGhpc3RvcnkgYWZ0ZXIgYWxsIHRoZSBjb21tYW5kIGZp bGVzIGhhdmUgYmVlbgogICAgICAgcmVhZC4gICovCkBAIC01Nzc5LDcgKzY0ODksNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgCiAgICBpZiAoYmF0Y2hfZmxhZykK ICAgICAgewotQEAgLTkyOCwxMyArOTYzLDI1IEBAIGNhcHR1cmVkX21haW4gKHZvaWQgKmRhdGEp CitAQCAtOTM1LDEzICs5NzAsMjUgQEAgY2FwdHVyZWRfbWFpbiAodm9pZCAqZGF0YSkKICAgIC8q IFNob3cgdGltZSBhbmQvb3Igc3BhY2UgdXNhZ2UuICAqLwogICAgZG9fY2xlYW51cHMgKHByZV9z dGF0X2NoYWluKTsKICAKQEAgLTU3OTAsNyArNjUwMCw4IEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi9tYWluLmMKIC0gIHdoaWxlICgxKQogKyNpZiBIQVZFX1BZVEhPTgogKyAgaWYg KHB5dGhvbl9zY3JpcHQpCi0rICAgIHsKKyAgICAgeworLSAgICAgIGNhdGNoX2Vycm9ycyAoY2Fw dHVyZWRfY29tbWFuZF9sb29wLCAwLCAiIiwgUkVUVVJOX01BU0tfQUxMKTsKICsgICAgICBleHRl cm4gaW50IHBhZ2luYXRpb25fZW5hYmxlZDsKICsgICAgICBwYWdpbmF0aW9uX2VuYWJsZWQgPSAw OwogKyAgICAgIHJ1bl9weXRob25fc2NyaXB0IChhcmdjIC0gb3B0aW5kLCAmYXJndltvcHRpbmRd KTsKQEAgLTU3OTgsOCArNjUwOSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9t YWluLmMKICsgICAgfQogKyAgZWxzZQogKyNlbmRpZgotICAgICB7Ci0tICAgICAgY2F0Y2hfZXJy b3JzIChjYXB0dXJlZF9jb21tYW5kX2xvb3AsIDAsICIiLCBSRVRVUk5fTUFTS19BTEwpOworKyAg ICB7CiArICAgICAgLyogTk9URTogY2FnbmV5LzE5OTktMTEtMDc6IFRoZXJlIGlzIHByb2JhYmx5 IG5vIHJlYXNvbiBmb3Igbm90CiArCSBtb3ZpbmcgdGhpcyBsb29wIGFuZCB0aGUgY29kZSBmb3Vu ZCBpbiBjYXB0dXJlZF9jb21tYW5kX2xvb3AoKQogKwkgaW50byB0aGUgY29tbWFuZF9sb29wKCkg cHJvcGVyLiAgVGhlIG1haW4gdGhpbmcgaG9sZGluZyBiYWNrIHRoYXQKQEAgLTU4MTEsNyArNjUy MSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9tYWluLmMKICAgICAgfQogICAg LyogTm8gZXhpdCAtLSBleGl0IGlzIHRocm91Z2ggcXVpdF9jb21tYW5kLiAgKi8KICB9Ci1AQCAt OTY2LDcgKzEwMTMsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpzdHJlYW0p CitAQCAtOTczLDcgKzEwMjAsMTIgQEAgcHJpbnRfZ2RiX2hlbHAgKHN0cnVjdCB1aV9maWxlICpz dHJlYW0pCiAgICBmcHV0c191bmZpbHRlcmVkIChfKCJcCiAgVGhpcyBpcyB0aGUgR05VIGRlYnVn Z2VyLiAgVXNhZ2U6XG5cblwKICAgICAgZ2RiIFtvcHRpb25zXSBbZXhlY3V0YWJsZS1maWxlIFtj b3JlLWZpbGUgb3IgcHJvY2Vzcy1pZF1dXG5cCkBAIC01ODI1LDcgKzY1MzUsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgT3B0aW9uczpcblxuXAogICIpLCBzdHJl YW0pOwogICAgZnB1dHNfdW5maWx0ZXJlZCAoXygiXAotQEAgLTEwMDQsNyArMTA1NiwxMyBAQCBP cHRpb25zOlxuXG5cCitAQCAtMTAxMSw3ICsxMDYzLDEzIEBAIE9wdGlvbnM6XG5cblwKICAgIC0t bncJCSAgICAgRG8gbm90IHVzZSBhIHdpbmRvdyBpbnRlcmZhY2UuXG5cCiAgICAtLW54ICAgICAg ICAgICAgICAgRG8gbm90IHJlYWQgIiksIHN0cmVhbSk7CiAgICBmcHV0c191bmZpbHRlcmVkIChn ZGJpbml0LCBzdHJlYW0pOwpAQCAtNTg0MCwxMSArNjU1MCwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvbWFpbi5jCiAgICAtLXF1aWV0ICAgICAgICAgICAgRG8gbm90IHByaW50 IHZlcnNpb24gbnVtYmVyIG9uIHN0YXJ0dXAuXG5cCiAgICAtLXJlYWRub3cgICAgICAgICAgRnVs bHkgcmVhZCBzeW1ib2wgZmlsZXMgb24gZmlyc3QgYWNjZXNzLlxuXAogICIpLCBzdHJlYW0pOwot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL21pL21pLWNtZC12YXIuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvbWkvbWktY21kLXZhci5jCTIwMTEt MDYtMjcgMjE6MjE6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvbWkvbWktY21kLXZhci5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1A QCAtNzA3LDcgKzcwNyw2IEBAIG1pX2NtZF92YXJfdXBkYXRlIChjaGFyICpjb21tYW5kLCBjaGFy ICoKK2RpZmYgLS1naXQgYS9nZGIvbWkvbWktY21kLXZhci5jIGIvZ2RiL21pL21pLWNtZC12YXIu YworaW5kZXggNDhmOGE3ZC4uZTlhNGRiNyAxMDA2NDQKKy0tLSBhL2dkYi9taS9taS1jbWQtdmFy LmMKKysrKyBiL2dkYi9taS9taS1jbWQtdmFyLmMKK0BAIC03MjEsNyArNzIxLDYgQEAgbWlfY21k X3Zhcl91cGRhdGUgKGNoYXIgKmNvbW1hbmQsIGNoYXIgKiphcmd2LCBpbnQgYXJnYykKICAgICAg fQogICAgZWxzZQogICAgICB7CkBAIC01ODUyLDExICs2NTYyLDExIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9taS9taS1jbWQtdmFyLmMKICAgICAgICBzdHJ1Y3QgdmFyb2JqICp2 YXIgPSB2YXJvYmpfZ2V0X2hhbmRsZSAobmFtZSk7CiAgCiAgICAgICAgdmFyb2JqX3VwZGF0ZV9v bmUgKHZhciwgcHJpbnRfdmFsdWVzLCAxIC8qIGV4cGxpY2l0ICovKTsKLUluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9taXBzcmVhZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4y MDExMDcyMi5vcmlnL2dkYi9taXBzcmVhZC5jCTIwMTEtMDQtMTkgMjA6MDQ6MDcuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvbWlwc3JlYWQuYwkyMDExLTA3LTI5 IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTQwMiw2ICs0MDIsNyBAQCBzdGF0aWMgY29u c3Qgc3RydWN0IHN5bV9mbnMgZWNvZmZfc3ltX2ZuCitkaWZmIC0tZ2l0IGEvZ2RiL21pcHNyZWFk LmMgYi9nZGIvbWlwc3JlYWQuYworaW5kZXggMWNkMzI5OS4uNDZkZTA5NyAxMDA2NDQKKy0tLSBh L2dkYi9taXBzcmVhZC5jCisrKysgYi9nZGIvbWlwc3JlYWQuYworQEAgLTQwMiw2ICs0MDIsNyBA QCBzdGF0aWMgY29uc3Qgc3RydWN0IHN5bV9mbnMgZWNvZmZfc3ltX2ZucyA9CiAgICBkZWZhdWx0 X3N5bWZpbGVfc2VnbWVudHMsCS8qIEdldCBzZWdtZW50IGluZm9ybWF0aW9uIGZyb20gYSBmaWxl LiAgKi8KICAgIE5VTEwsCiAgICBkZWZhdWx0X3N5bWZpbGVfcmVsb2NhdGUsCS8qIFJlbG9jYXRl IGEgZGVidWcgc2VjdGlvbi4gICovCkBAIC01ODY0LDExICs2NTc0LDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9taXBzcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9Owog IAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL29iamZpbGVzLmMJMjAxMS0wNi0xNCAx ODo0OTo0MS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9vYmpm aWxlcy5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtODQyLDYgKzg0 MiwxMSBAQCBvYmpmaWxlX3JlbG9jYXRlMSAoc3RydWN0IG9iamZpbGUgKm9iamZpCitkaWZmIC0t Z2l0IGEvZ2RiL29iamZpbGVzLmMgYi9nZGIvb2JqZmlsZXMuYworaW5kZXggMjI5ZTY0MS4uNTZi OGEzMSAxMDA2NDQKKy0tLSBhL2dkYi9vYmpmaWxlcy5jCisrKysgYi9nZGIvb2JqZmlsZXMuYwor QEAgLTgxMyw2ICs4MTMsMTEgQEAgb2JqZmlsZV9yZWxvY2F0ZTEgKHN0cnVjdCBvYmpmaWxlICpv YmpmaWxlLAogIAkJCQlvYmpfc2VjdGlvbl9hZGRyIChzKSk7CiAgICAgIH0KICAKQEAgLTU4ODAs MTAgKzY1OTAsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL29iamZpbGVzLmMK ICAgIC8qIERhdGEgY2hhbmdlZC4gICovCiAgICByZXR1cm4gMTsKICB9Ci1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvcC12YWxwcmludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41 MC4yMDExMDcyMi5vcmlnL2dkYi9wLXZhbHByaW50LmMJMjAxMS0wMy0xNSAxNzowMDo1Ni4wMDAw MDAwMDAgKzAxMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wLXZhbHByaW50LmMJMjAx MS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcC12YWxw cmludC5jIGIvZ2RiL3AtdmFscHJpbnQuYworaW5kZXggZTU1YjEyMi4uNmI0YWRmYiAxMDA2NDQK Ky0tLSBhL2dkYi9wLXZhbHByaW50LmMKKysrKyBiL2dkYi9wLXZhbHByaW50LmMKIEBAIC0zOSw2 ICszOSw3IEBACiAgI2luY2x1ZGUgImNwLWFiaS5oIgogICNpbmNsdWRlICJjcC1zdXBwb3J0Lmgi CkBAIC01ODkyLDcgKzY2MDIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcC12 YWxwcmludC5jCiAgDAogIAogIC8qIFNlZSB2YWxfcHJpbnQgZm9yIGEgZGVzY3JpcHRpb24gb2Yg dGhlIHZhcmlvdXMgcGFyYW1ldGVycyBvZiB0aGlzCi1AQCAtNjMsOCArNjQsMzEgQEAgcGFzY2Fs X3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbgorQEAgLTYzLDggKzY0LDMxIEBAIHBh c2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKICAgIHN0cnVjdCB0eXBlICpjaGFyX3R5cGU7CiAgICBMT05HRVNUIHZhbDsKICAgIENPUkVf QUREUiBhZGRyOwpAQCAtNTkyNSw3ICs2NjM1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3AtdmFscHJpbnQuYwogICAgc3dpdGNoIChUWVBFX0NPREUgKHR5cGUpKQogICAgICB7 CiAgICAgIGNhc2UgVFlQRV9DT0RFX0FSUkFZOgotQEAgLTEyMCw4ICsxNDQsOCBAQCBwYXNjYWxf dmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uCitAQCAtMTIwLDggKzE0NCw4IEBAIHBh c2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJfYnl0ZSAqdmFsYWRk ciwKICAJCXsKICAJCSAgaSA9IDA7CiAgCQl9CkBAIC01OTM2LDcgKzY2NDYsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcC12YWxwcmludC5jCiAgCQkJCQlvcmlnaW5hbF92YWx1 ZSwgb3B0aW9ucywgaSk7CiAgCSAgICAgIGZwcmludGZfZmlsdGVyZWQgKHN0cmVhbSwgIn0iKTsK ICAJICAgIH0KLUBAIC0xNjAsNiArMTg0LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5 cGUgKnR5cGUsIGNvbgorQEAgLTE2MCw2ICsxODQsNyBAQCBwYXNjYWxfdmFsX3ByaW50IChzdHJ1 Y3QgdHlwZSAqdHlwZSwgY29uc3QgZ2RiX2J5dGUgKnZhbGFkZHIsCiAgCSAgLyogVHJ5IHRvIHBy aW50IHdoYXQgZnVuY3Rpb24gaXQgcG9pbnRzIHRvLiAgKi8KICAJICBwcmludF9hZGRyZXNzX2Rl bWFuZ2xlIChnZGJhcmNoLCBhZGRyLCBzdHJlYW0sIGRlbWFuZ2xlKTsKICAJICAvKiBSZXR1cm4g dmFsdWUgaXMgaXJyZWxldmFudCBleGNlcHQgZm9yIHN0cmluZyBwb2ludGVycy4gICovCkBAIC01 OTQ0LDI3ICs2NjU0LDEwNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcC12YWxw cmludC5jCiAgCSAgcmV0dXJuICgwKTsKICAJfQogIAotQEAgLTI1MSw2ICsyNzYsNyBAQCBwYXNj YWxfdmFsX3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY29uCi0gICAgICAgLyogUmV0dXJuIG51 bWJlciBvZiBjaGFyYWN0ZXJzIHByaW50ZWQsIGluY2x1ZGluZyB0aGUgdGVybWluYXRpbmcKLSAJ ICdcMCcgaWYgd2UgcmVhY2hlZCB0aGUgZW5kLiAgdmFsX3ByaW50X3N0cmluZyB0YWtlcyBjYXJl IGluY2x1ZGluZwotIAkgdGhlIHRlcm1pbmF0aW5nICdcMCcgaWYgbmVjZXNzYXJ5LiAgKi8KLSsg ICAgICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0gICAgICAgcmV0dXJuIGk7CitAQCAtMjUxLDYg KzI3Niw3IEBAIHBhc2NhbF92YWxfcHJpbnQgKHN0cnVjdCB0eXBlICp0eXBlLCBjb25zdCBnZGJf Ynl0ZSAqdmFsYWRkciwKKyAgICAgICAvKiBSZXR1cm4gbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJp bnRlZCwgaW5jbHVkaW5nIHRoZSB0ZXJtaW5hdGluZworIAkgJ1wwJyBpZiB3ZSByZWFjaGVkIHRo ZSBlbmQuICB2YWxfcHJpbnRfc3RyaW5nIHRha2VzIGNhcmUgaW5jbHVkaW5nCisgCSB0aGUgdGVy bWluYXRpbmcgJ1wwJyBpZiBuZWNlc3NhcnkuICAqLworKyAgICAgIGRvX2NsZWFudXBzIChiYWNr X3RvKTsKKyAgICAgICByZXR1cm4gaTsKKyAKKyAgICAgICBicmVhazsKK0BAIC01NzYsNiArNjAy LDcgQEAgcGFzY2FsX3ZhbF9wcmludCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0IGdkYl9ieXRl ICp2YWxhZGRyLAorIAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOworICAgICB9CisgICBnZGJfZmx1 c2ggKHN0cmVhbSk7CisrICBkb19jbGVhbnVwcyAoYmFja190byk7CisgICByZXR1cm4gKDApOwor IH0KKyAMCitkaWZmIC0tZ2l0IGEvZ2RiL3BhcnNlLmMgYi9nZGIvcGFyc2UuYworaW5kZXggN2Qx NTdmZS4uNmRkYWY4NiAxMDA2NDQKKy0tLSBhL2dkYi9wYXJzZS5jCisrKysgYi9nZGIvcGFyc2Uu YworQEAgLTEyNCw4ICsxMjQsNiBAQCBzaG93X3BhcnNlcmRlYnVnIChzdHJ1Y3QgdWlfZmlsZSAq ZmlsZSwgaW50IGZyb21fdHR5LAorIAorIHN0YXRpYyB2b2lkIGZyZWVfZnVuY2FsbHMgKHZvaWQg Kmlnbm9yZSk7CisgCistc3RhdGljIGludCBwcmVmaXhpZnlfZXhwcmVzc2lvbiAoc3RydWN0IGV4 cHJlc3Npb24gKik7CistCisgc3RhdGljIGludCBwcmVmaXhpZnlfc3ViZXhwIChzdHJ1Y3QgZXhw cmVzc2lvbiAqLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqLCBpbnQsCisgCQkJICAgICBpbnQpOworIAor QEAgLTc3Miw3ICs3NzAsNyBAQCBjb3B5X25hbWUgKHN0cnVjdCBzdG9rZW4gdG9rZW4pCisgICAg cmV0dXJuIHRoZSBpbmRleCBvZiB0aGUgc3ViZXhwcmVzc2lvbiB3aGljaCBpcyB0aGUgbGVmdC1o YW5kLXNpZGUKKyAgICBvZiB0aGUgc3RydWN0IG9wZXJhdGlvbiBhdCBFWFBPVVRfTEFTVF9TVFJV Q1QuICAqLworIAorLXN0YXRpYyBpbnQKKytpbnQKKyBwcmVmaXhpZnlfZXhwcmVzc2lvbiAoc3Ry dWN0IGV4cHJlc3Npb24gKmV4cHIpCisgeworICAgaW50IGxlbiA9IHNpemVvZiAoc3RydWN0IGV4 cHJlc3Npb24pICsgRVhQX0VMRU1fVE9fQllURVMgKGV4cHItPm5lbHRzKTsKK0BAIC0xMDc1LDYg KzEwNzMsMzEgQEAgcGFyc2VfZXhwXzEgKGNoYXIgKipzdHJpbmdwdHIsIHN0cnVjdCBibG9jayAq YmxvY2ssIGludCBjb21tYSkKKyAgIHJldHVybiBwYXJzZV9leHBfaW5fY29udGV4dCAoc3RyaW5n cHRyLCBibG9jaywgY29tbWEsIDAsIE5VTEwpOworIH0KKyAKKyt2b2lkCisraW5pdGlhbGl6ZV9l eHBvdXQgKGludCBpbml0aWFsX3NpemUsIGNvbnN0IHN0cnVjdCBsYW5ndWFnZV9kZWZuICpsYW5n LAorKwkJICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gpCisreworKyAgZXhwb3V0X3NpemUgPSBp bml0aWFsX3NpemU7CisrICBleHBvdXRfcHRyID0gMDsKKysgIGV4cG91dCA9IChzdHJ1Y3QgZXhw cmVzc2lvbiAqKQorKyAgICB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBleHByZXNzaW9uKSArIEVY UF9FTEVNX1RPX0JZVEVTIChleHBvdXRfc2l6ZSkpOworKyAgZXhwb3V0LT5sYW5ndWFnZV9kZWZu ID0gbGFuZzsKKysgIGV4cG91dC0+Z2RiYXJjaCA9IGdkYmFyY2g7CisrfQorKworK3ZvaWQKKyty ZWFsbG9jYXRlX2V4cG91dCAodm9pZCkKKyt7CisrICAvKiBSZWNvcmQgdGhlIGFjdHVhbCBudW1i ZXIgb2YgZXhwcmVzc2lvbiBlbGVtZW50cywgYW5kIHRoZW4KKysgICAgIHJlYWxsb2NhdGUgdGhl IGV4cHJlc3Npb24gbWVtb3J5IHNvIHRoYXQgd2UgZnJlZSB1cCBhbnkKKysgICAgIGV4Y2VzcyBl bGVtZW50cy4gICovCisrCisrICBleHBvdXQtPm5lbHRzID0gZXhwb3V0X3B0cjsKKysgIGV4cG91 dCA9IChzdHJ1Y3QgZXhwcmVzc2lvbiAqKQorKyAgICB4cmVhbGxvYyAoKGNoYXIgKikgZXhwb3V0 LAorKwkgICAgICBzaXplb2YgKHN0cnVjdCBleHByZXNzaW9uKSArIEVYUF9FTEVNX1RPX0JZVEVT IChleHBvdXRfcHRyKSk7CisrfQorKworIC8qIEFzIGZvciBwYXJzZV9leHBfMSwgZXhjZXB0IHRo YXQgaWYgVk9JRF9DT05URVhUX1AsIHRoZW4KKyAgICBubyB2YWx1ZSBpcyBleHBlY3RlZCBmcm9t IHRoZSBleHByZXNzaW9uLgorICAgIE9VVF9TVUJFWFAgaXMgc2V0IHdoZW4gYXR0ZW1wdGluZyB0 byBjb21wbGV0ZSBhIGZpZWxkIG5hbWU7IGluIHRoaXMKK0BAIC0xMTUyLDEyICsxMTc1LDcgQEAg cGFyc2VfZXhwX2luX2NvbnRleHQgKGNoYXIgKipzdHJpbmdwdHIsIHN0cnVjdCBibG9jayAqYmxv Y2ssIGludCBjb21tYSwKKyAgIGVsc2UKKyAgICAgbGFuZyA9IGN1cnJlbnRfbGFuZ3VhZ2U7Cisg CistICBleHBvdXRfc2l6ZSA9IDEwOworLSAgZXhwb3V0X3B0ciA9IDA7CistICBleHBvdXQgPSAo c3RydWN0IGV4cHJlc3Npb24gKikKKy0gICAgeG1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgZXhwcmVz c2lvbikgKyBFWFBfRUxFTV9UT19CWVRFUyAoZXhwb3V0X3NpemUpKTsKKy0gIGV4cG91dC0+bGFu Z3VhZ2VfZGVmbiA9IGxhbmc7CistICBleHBvdXQtPmdkYmFyY2ggPSBnZXRfY3VycmVudF9hcmNo ICgpOworKyAgaW5pdGlhbGl6ZV9leHBvdXQgKDEwLCBsYW5nLCBnZXRfY3VycmVudF9hcmNoICgp KTsKICAKLSAgICAgICBicmVhazsKLUBAIC01NjcsNiArNTkzLDcgQEAgcGFzY2FsX3ZhbF9wcmlu dCAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbgotIAkgICAgIFRZUEVfQ09ERSAodHlwZSkpOwotICAg ICB9Ci0gICBnZGJfZmx1c2ggKHN0cmVhbSk7Ci0rICBkb19jbGVhbnVwcyAoYmFja190byk7Ci0g ICByZXR1cm4gKDApOwotIH0KLSAMCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcGFy c2UuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcGFyc2Uu YwkyMDExLTA2LTE3IDIyOjI0OjIyLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3BhcnNlLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xNTAxLDYgKzE1MDEsNyBAQCBwYXJzZXJfZnByaW50ZiAoRklMRSAqeCwgY29uc3QgY2hhciAq eSwKKyAgIFRSWV9DQVRDSCAoZXhjZXB0LCBSRVRVUk5fTUFTS19BTEwpCisgICAgIHsKK0BAIC0x MTc1LDE0ICsxMTkzLDcgQEAgcGFyc2VfZXhwX2luX2NvbnRleHQgKGNoYXIgKipzdHJpbmdwdHIs IHN0cnVjdCBibG9jayAqYmxvY2ssIGludCBjb21tYSwKKyAKKyAgIGRpc2NhcmRfY2xlYW51cHMg KG9sZF9jaGFpbik7CisgCistICAvKiBSZWNvcmQgdGhlIGFjdHVhbCBudW1iZXIgb2YgZXhwcmVz c2lvbiBlbGVtZW50cywgYW5kIHRoZW4KKy0gICAgIHJlYWxsb2NhdGUgdGhlIGV4cHJlc3Npb24g bWVtb3J5IHNvIHRoYXQgd2UgZnJlZSB1cCBhbnkKKy0gICAgIGV4Y2VzcyBlbGVtZW50cy4gICov CistCistICBleHBvdXQtPm5lbHRzID0gZXhwb3V0X3B0cjsKKy0gIGV4cG91dCA9IChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqKQorLSAgICB4cmVhbGxvYyAoKGNoYXIgKikgZXhwb3V0LAorLQkgICAgICBz aXplb2YgKHN0cnVjdCBleHByZXNzaW9uKSArIEVYUF9FTEVNX1RPX0JZVEVTIChleHBvdXRfcHRy KSk7CisrICByZWFsbG9jYXRlX2V4cG91dCAoKTsKKyAKKyAgIC8qIENvbnZlcnQgZXhwcmVzc2lv biBmcm9tIHBvc3RmaXggZm9ybSBhcyBnZW5lcmF0ZWQgYnkgeWFjYworICAgICAgcGFyc2VyLCB0 byBhIHByZWZpeCBmb3JtLiAgKi8KK0BAIC0xNTAyLDYgKzE1MTMsNyBAQCBwYXJzZXJfZnByaW50 ZiAoRklMRSAqeCwgY29uc3QgY2hhciAqeSwgLi4uKQogIAogIGludAogIG9wZXJhdG9yX2NoZWNr X3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLApAQCAtNTk3Miw3ICs2 NzYyLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNlLmMKICAJCQkgaW50 ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkgICAgICB2 b2lkICpkYXRhKSwKICAJCQkgdm9pZCAqZGF0YSkKLUBAIC0xNTQyLDcgKzE1NDMsNyBAQCBvcGVy YXRvcl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3NpCitAQCAtMTU0Myw3ICsxNTU1LDcg QEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaW9uICpleHAsIGludCBw b3MsCiAgCSAgICBzdHJ1Y3QgdHlwZSAqdHlwZSA9IGVsdHNbcG9zICsgMiArIGFyZ10udHlwZTsK ICAJICAgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlID0gVFlQRV9PQkpGSUxFICh0eXBlKTsKICAK QEAgLTU5ODEsNyArNjc3MSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJz ZS5jCiAgCSAgICAgIHJldHVybiAxOwogIAkgIH0KICAgICAgICB9Ci1AQCAtMTU2MCw3ICsxNTYx LDggQEAgb3BlcmF0b3JfY2hlY2tfc3RhbmRhcmQgKHN0cnVjdCBleHByZXNzaQorQEAgLTE1NjEs NyArMTU3Myw4IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2lvbiAq ZXhwLCBpbnQgcG9zLAogIAogIAkvKiBDaGVjayBvYmpmaWxlIHdoZXJlIHRoZSB2YXJpYWJsZSBp dHNlbGYgaXMgcGxhY2VkLgogIAkgICBTWU1CT0xfT0JKX1NFQ1RJT04gKHN5bWJvbCkgbWF5IGJl IE5VTEwuICAqLwpAQCAtNTk5MSw3ICs2NzgxLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3BhcnNlLmMKICAJICByZXR1cm4gMTsKICAKICAJLyogQ2hlY2sgb2JqZmlsZSB3aGVy ZSBpcyBwbGFjZWQgdGhlIGNvZGUgdG91Y2hpbmcgdGhlIHZhcmlhYmxlLiAgKi8KLUBAIC0xNTcz LDI0ICsxNTc1LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3QgZXhwcmVzc2kK K0BAIC0xNTc0LDI0ICsxNTg3LDI3IEBAIG9wZXJhdG9yX2NoZWNrX3N0YW5kYXJkIChzdHJ1Y3Qg ZXhwcmVzc2lvbiAqZXhwLCBpbnQgcG9zLAogIAogICAgLyogSW52b2tlIGNhbGxiYWNrcyBmb3Ig VFlQRSBhbmQgT0JKRklMRSBpZiB0aGV5IHdlcmUgc2V0IGFzIG5vbi1OVUxMLiAgKi8KICAKQEAg LTYwMjcsNyArNjgxNyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZS5j CiAgCSAgICAgaW50ICgqb2JqZmlsZV9mdW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZv aWQgKmRhdGEpLAogIAkgICAgIHZvaWQgKmRhdGEpCiAgewotQEAgLTE2MDUsNyArMTYxMCw5IEBA IGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAorQEAgLTE2MDYsNyArMTYyMiw5 IEBAIGV4cF9pdGVyYXRlIChzdHJ1Y3QgZXhwcmVzc2lvbiAqZXhwLAogIAogICAgICAgIHBvcyA9 IGVuZHBvcyAtIG9wbGVuOwogICAgICAgIGlmIChleHAtPmxhbmd1YWdlX2RlZm4tPmxhX2V4cF9k ZXNjLT5vcGVyYXRvcl9jaGVjayAoZXhwLCBwb3MsCkBAIC02MDM4LDcgKzY4MjgsNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcGFyc2UuYwogIAlyZXR1cm4gMTsKICAKICAgICAg ICBlbmRwb3MgPSBwb3M7Ci1AQCAtMTYzNiw4ICsxNjQzLDI5IEBAIGV4cF91c2VzX29iamZpbGUg KHN0cnVjdCBleHByZXNzaW9uICpleHAKK0BAIC0xNjM3LDggKzE2NTUsMjkgQEAgZXhwX3VzZXNf b2JqZmlsZSAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgc3RydWN0IG9iamZpbGUgKm9iamZpbGUp CiAgewogICAgZ2RiX2Fzc2VydCAob2JqZmlsZS0+c2VwYXJhdGVfZGVidWdfb2JqZmlsZV9iYWNr bGluayA9PSBOVUxMKTsKICAKQEAgLTYwNjksMTEgKzY4NTksMzYgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3BhcnNlLmMKICAKICB2b2lkCiAgX2luaXRpYWxpemVfcGFyc2UgKHZv aWQpCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcGFyc2VyLWRlZnMuaAotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvcGFyc2VyLWRlZnMuaAkyMDEx LTAxLTEwIDIxOjM4OjQ5LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3BhcnNlci1kZWZzLmgJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBA IC0xOTQsNiArMTk0LDggQEAgZXh0ZXJuIHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChj bworZGlmZiAtLWdpdCBhL2dkYi9wYXJzZXItZGVmcy5oIGIvZ2RiL3BhcnNlci1kZWZzLmgKK2lu ZGV4IGJjYTgwMTQuLmVjYzQzNmUgMTAwNjQ0CistLS0gYS9nZGIvcGFyc2VyLWRlZnMuaAorKysr IGIvZ2RiL3BhcnNlci1kZWZzLmgKK0BAIC0xMzEsNiArMTMxLDI0IEBAIHVuaW9uIHR5cGVfc3Rh Y2tfZWx0CisgZXh0ZXJuIHVuaW9uIHR5cGVfc3RhY2tfZWx0ICp0eXBlX3N0YWNrOworIGV4dGVy biBpbnQgdHlwZV9zdGFja19kZXB0aCwgdHlwZV9zdGFja19zaXplOworIAorKy8qIEFsbG9jYXRl IGFuZCBpbml0aWFsaXplIGBleHBvdXQnIGFuZCBpdHMgcmVsYXRlZCB2YXJpYWJsZXMgYGV4cG91 dF9zaXplJworKyAgIGFuZCBgZXhwb3V0X3B0cicuCisrCisrICAgVGhlIGZpcnN0IGFyZ3VtZW50 IGlzIHRoZSBpbml0aWFsIHNpemUgdG8gYmUgdXNlZCBmb3IgeG1hbGxvYy4gIFRoZSBzZWNvbmQK KysgICBhcmd1bWVudCBpcyB0aGUgbGFuZ3VhZ2UgcmVsYXRlZCB0byB0aGUgZXhwcmVzc2lvbi4g IFRoZSB0aGlyZCBhcmd1bWVudCBpcworKyAgIGNvcnJlc3BvbmRpbmcgZ2RiYXJjaC4gICovCisr CisrZXh0ZXJuIHZvaWQgaW5pdGlhbGl6ZV9leHBvdXQgKGludCwgY29uc3Qgc3RydWN0IGxhbmd1 YWdlX2RlZm4gKiwKKysJCQkgICAgICAgc3RydWN0IGdkYmFyY2ggKik7CisrCisrLyogUmVhbGxv Y2F0ZSBgZXhwb3V0JyBpbiBvcmRlciB0byBmcmVlIGV4Y2Vzc2l2ZSBlbGVtZW50cyB0aGF0IG1p Z2h0IGhhdmUKKysgICBiZWVuIGNyZWF0ZWQgZHVyaW5nIHRoZSBwYXJzaW5nLiAgU2V0IHRoZSBu dW1iZXIgb2YgZWxlbWVudHMKKysgICBhY2NvcmRpbmdseS4gICovCisrCisrZXh0ZXJuIHZvaWQg cmVhbGxvY2F0ZV9leHBvdXQgKHZvaWQpOworKworK2V4dGVybiBpbnQgcHJlZml4aWZ5X2V4cHJl c3Npb24gKHN0cnVjdCBleHByZXNzaW9uICpleHByKTsKKysKKyBleHRlcm4gdm9pZCB3cml0ZV9l eHBfZWx0X29wY29kZSAoZW51bSBleHBfb3Bjb2RlKTsKKyAKKyBleHRlcm4gdm9pZCB3cml0ZV9l eHBfZWx0X3N5bSAoc3RydWN0IHN5bWJvbCAqKTsKK0BAIC0xOTIsNiArMjEwLDggQEAgZXh0ZXJu IHZvaWQgb3BlcmF0b3JfbGVuZ3RoX3N0YW5kYXJkIChjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiAq LCBpbnQsIGludCAqLAogIAkJCQkgICAgICBpbnQgKik7CiAgCiAgZXh0ZXJuIGludCBvcGVyYXRv cl9jaGVja19zdGFuZGFyZCAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTYw ODIsNyArNjg5Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZXItZGVm cy5oCiAgCQkJCSAgICBpbnQgKCpvYmpmaWxlX2Z1bmMpCiAgCQkJCSAgICAgIChzdHJ1Y3Qgb2Jq ZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0YSksCiAgCQkJCSAgICB2b2lkICpkYXRhKTsKLUBAIC0y OTEsNiArMjkzLDcgQEAgc3RydWN0IGV4cF9kZXNjcmlwdG9yCitAQCAtMjg5LDYgKzMwOSw3IEBA IHN0cnVjdCBleHBfZGVzY3JpcHRvcgogICAgICAgICB2YWx1ZSBzaG91bGQgYmUgaW1tZWRpYXRl bHkgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIE90aGVyd2lzZSB6ZXJvCiAgICAgICAgIHNob3Vs ZCBiZSByZXR1cm5lZC4gICovCiAgICAgIGludCAoKm9wZXJhdG9yX2NoZWNrKSAoc3RydWN0IGV4 cHJlc3Npb24gKmV4cCwgaW50IHBvcywKQEAgLTYwOTAsNyArNjkwNSw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9wYXJzZXItZGVmcy5oCiAgCQkJICAgaW50ICgqb2JqZmlsZV9m dW5jKSAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCiAgCQkJCQkJdm9pZCAqZGF0YSksCiAgCQkJ ICAgdm9pZCAqZGF0YSk7Ci1AQCAtMzI5LDQgKzMzMiwxMCBAQCBleHRlcm4gdm9pZCBwYXJzZXJf ZnByaW50ZiAoRklMRSAqLCBjb25zCitAQCAtMzI3LDQgKzM0OCwxMCBAQCBleHRlcm4gdm9pZCBw YXJzZXJfZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLikgQVRUUklCVVRFX1BSSU5U RiAoMiwgMyk7CiAgCiAgZXh0ZXJuIGludCBleHBfdXNlc19vYmpmaWxlIChzdHJ1Y3QgZXhwcmVz c2lvbiAqZXhwLCBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSk7CiAgCkBAIC02MTAxLDExMyArNjkx NiwyNDkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BhcnNlci1kZWZzLmgKICsj ZW5kaWYKICsKICAjZW5kaWYgLyogUEFSU0VSX0RFRlNfSCAqLwotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3BwYy1saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAu MjAxMTA3MjIub3JpZy9nZGIvcHBjLWxpbnV4LW5hdC5jCTIwMTEtMDUtMDYgMjA6NDY6MzEuMDAw MDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHBjLWxpbnV4LW5hdC5j CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTY0Nyw2ICsxNjQ3LDE0 IEBAIHBwY19saW51eF9yYW5nZWRfYnJlYWtfbnVtX3JlZ2lzdGVycyAoc3QKLSAJICAyIDogLTEp OworZGlmZiAtLWdpdCBhL2dkYi9wcGMtbGludXgtbmF0LmMgYi9nZGIvcHBjLWxpbnV4LW5hdC5j CitpbmRleCBjYzI5YWQ4Li45NDkwMGM5IDEwMDY0NAorLS0tIGEvZ2RiL3BwYy1saW51eC1uYXQu YworKysrIGIvZ2RiL3BwYy1saW51eC1uYXQuYworQEAgLTE0NjksMTQgKzE0NjksMTMgQEAgcHBj X2xpbnV4X2Nhbl91c2VfaHdfYnJlYWtwb2ludCAoaW50IHR5cGUsIGludCBjbnQsIGludCBvdCkK KyAgIGlmICghaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQorICAgICB7CisgICAgICAg aW50IHRpZDsKKy0gICAgICBwdGlkX3QgcHRpZCA9IGluZmVyaW9yX3B0aWQ7CisgCisgICAgICAg LyogV2UgbmVlZCB0byBrbm93IHdoZXRoZXIgcHRyYWNlIHN1cHBvcnRzIFBUUkFDRV9TRVRfREVC VUdSRUcKKyAJIGFuZCB3aGV0aGVyIHRoZSB0YXJnZXQgaGFzIERBQlIuICBJZiBlaXRoZXIgYW5z d2VyIGlzIG5vLCB0aGUKKyAJIHB0cmFjZSBjYWxsIHdpbGwgcmV0dXJuIC0xLiAgRmFpbCBpbiB0 aGF0IGNhc2UuICAqLworLSAgICAgIHRpZCA9IFRJREdFVCAocHRpZCk7CisrICAgICAgdGlkID0g VElER0VUIChpbmZlcmlvcl9wdGlkKTsKKyAgICAgICBpZiAodGlkID09IDApCistCXRpZCA9IFBJ REdFVCAocHRpZCk7CisrCXRpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRpZCk7CisgCisgICAgICAg aWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgdGlkLCAwLCAwKSA9PSAtMSkKKyAJcmV0 dXJuIDA7CitAQCAtMTU2Nyw4ICsxNTY2LDkgQEAgYm9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5 X3RpZCAoaW50IHRpZCwgaW50IGFsbG9jX25ldykKKyAvKiBUaGlzIGZ1bmN0aW9uIGlzIGEgZ2Vu ZXJpYyB3cmFwcGVyIHRoYXQgaXMgcmVzcG9uc2libGUgZm9yIGluc2VydGluZyBhCisgICAgKnBv aW50IChpLmUuLCBjYWxsaW5nIGBwdHJhY2UnIGluIG9yZGVyIHRvIGlzc3VlIHRoZSByZXF1ZXN0 IHRvIHRoZQorICAgIGtlcm5lbCkgYW5kIHJlZ2lzdGVyaW5nIGl0IGludGVybmFsbHkgaW4gR0RC LiAgKi8KKysKKyBzdGF0aWMgdm9pZAorLWJvb2tlX2luc2VydF9wb2ludCAoc3RydWN0IHBwY19o d19icmVha3BvaW50ICpiLCBpbnQgdGlkKQorK2Jvb2tlX2luc2VydF9wb2ludCAoc3RydWN0IGx3 cF9pbmZvICpscCwgc3RydWN0IHBwY19od19icmVha3BvaW50ICpiKQorIHsKKyAgIGludCBpOwor ICAgbG9uZyBzbG90OworQEAgLTE1ODEsMTIgKzE1ODEsMTIgQEAgYm9va2VfaW5zZXJ0X3BvaW50 IChzdHJ1Y3QgcHBjX2h3X2JyZWFrcG9pbnQgKmIsIGludCB0aWQpCisgICBtZW1jcHkgKHAsIGIs IHNpemVvZiAoc3RydWN0IHBwY19od19icmVha3BvaW50KSk7CisgCisgICBlcnJubyA9IDA7Cist ICBzbG90ID0gcHRyYWNlIChQUENfUFRSQUNFX1NFVEhXREVCVUcsIHRpZCwgMCwgcCk7CisrICBz bG90ID0gcHRyYWNlIChQUENfUFRSQUNFX1NFVEhXREVCVUcsIFRJREdFVCAobHAtPnB0aWQpLCAw LCBwKTsKKyAgIGlmIChzbG90IDwgMCkKKyAgICAgcGVycm9yX3dpdGhfbmFtZSAoXygiVW5leHBl Y3RlZCBlcnJvciBzZXR0aW5nIGJyZWFrcG9pbnQgb3Igd2F0Y2hwb2ludCIpKTsKKyAKKyAgIC8q IEV2ZXJ5dGhpbmcgd2VudCBmaW5lLCBzbyB3ZSBoYXZlIHRvIHJlZ2lzdGVyIHRoaXMgKnBvaW50 LiAgKi8KKy0gIHQgPSBib29rZV9maW5kX3RocmVhZF9wb2ludHNfYnlfdGlkICh0aWQsIDEpOwor KyAgdCA9IGJvb2tlX2ZpbmRfdGhyZWFkX3BvaW50c19ieV90aWQgKFRJREdFVCAobHAtPnB0aWQp LCAxKTsKKyAgIGdkYl9hc3NlcnQgKHQgIT0gTlVMTCk7CisgICBod19icmVha3MgPSB0LT5od19i cmVha3M7CisgCitAQCAtMTYwNCwxNyArMTYwNCwzMyBAQCBib29rZV9pbnNlcnRfcG9pbnQgKHN0 cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAqYiwgaW50IHRpZCkKKyAgIGRpc2NhcmRfY2xlYW51cHMg KGMpOwogIH0KICAKLStzdGF0aWMgdm9pZAotK2Jvb2tlX2luc2VydF9wb2ludF9jYWxsYmFjayAo aW50IHRpZCwgdm9pZCAqcHBfdm9pZHApCi0rewotKyAgc3RydWN0IHBwY19od19icmVha3BvaW50 ICpwcCA9IHBwX3ZvaWRwOworLS8qIFRoaXMgZnVuY3Rpb24gaXMgYSBnZW5lcmljIHdyYXBwZXIg dGhhdCBpcyByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYQorLSAgICpwb2ludCAoaS5lLiwgY2Fs bGluZyBgcHRyYWNlJyBpbiBvcmRlciB0byBpc3N1ZSB0aGUgcmVxdWVzdCB0byB0aGUKKy0gICBr ZXJuZWwpLCBhbmQgdW5yZWdpc3RlcmluZyBpdCBpbnRlcm5hbGx5IGF0IEdEQi4gICovCistc3Rh dGljIHZvaWQKKy1ib29rZV9yZW1vdmVfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCAq YiwgaW50IHRpZCkKKysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2lu dF9sd3BzCisrICAgY2FsbGluZyBib29rZV9pbnNlcnRfcG9pbnQuICAqLworKworK3N0YXRpYyBp bnQKKytib29rZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZv aWQgKmJfdm9pZHApCisgeworKyAgc3RydWN0IHBwY19od19icmVha3BvaW50ICpiID0gYl92b2lk cDsKICsKLSsgIGJvb2tlX2luc2VydF9wb2ludCAocHAsIHRpZCk7CisrICBib29rZV9pbnNlcnRf cG9pbnQgKGxwLCBiKTsKKysKKysgIC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLworKyAg cmV0dXJuIDA7CiArfQogKwotIC8qIEluc2VydCB0aGUgaGFyZHdhcmUgYnJlYWtwb2ludCBkZXNj cmliZWQgYnkgQlBfVEdULiAgUmV0dXJucyAwIGZvcgotICAgIHN1Y2Nlc3MsIDEgaWYgaGFyZHdh cmUgYnJlYWtwb2ludHMgYXJlIG5vdCBzdXBwb3J0ZWQgb3IgLTEgZm9yIGZhaWx1cmUuICAqLwor Ky8qIFRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0 Y2hwb2ludF9sd3BzIHRoYXQgaXMKKysgICByZXNwb25zaWJsZSBmb3IgcmVtb3ZpbmcgYSAqcG9p bnQgKGkuZS4sIGNhbGxpbmcgYHB0cmFjZScgaW4gb3JkZXIgdG8gaXNzdWUKKysgICB0aGUgcmVx dWVzdCB0byB0aGUga2VybmVsKSwgYW5kIHVucmVnaXN0ZXJpbmcgaXQgaW50ZXJuYWxseSBhdCBH REIuICAqLworKworK3N0YXRpYyBpbnQKKytib29rZV9yZW1vdmVfcG9pbnRfY2FsbGJhY2sgKHN0 cnVjdCBsd3BfaW5mbyAqbHAsIHZvaWQgKmJfdm9pZHApCisreworKyAgc3RydWN0IHBwY19od19i cmVha3BvaW50ICpiID0gYl92b2lkcDsKKyAgIGludCBpOworICAgc3RydWN0IGh3X2JyZWFrX3R1 cGxlICpod19icmVha3M7CisgICBzdHJ1Y3QgdGhyZWFkX3BvaW50cyAqdDsKKyAKKy0gIHQgPSBi b29rZV9maW5kX3RocmVhZF9wb2ludHNfYnlfdGlkICh0aWQsIDApOworKyAgdCA9IGJvb2tlX2Zp bmRfdGhyZWFkX3BvaW50c19ieV90aWQgKFRJREdFVCAobHAtPnB0aWQpLCAwKTsKKyAgIGdkYl9h c3NlcnQgKHQgIT0gTlVMTCk7CisgICBod19icmVha3MgPSB0LT5od19icmVha3M7CisgCitAQCAt MTYyOCwxMyArMTY0NCwxNyBAQCBib29rZV9yZW1vdmVfcG9pbnQgKHN0cnVjdCBwcGNfaHdfYnJl YWtwb2ludCAqYiwgaW50IHRpZCkKKyAgICAgIGJyZWFrcG9pbnRzL3dhdGNocG9pbnRzIGFzICJv bmUtc2hvdCIsIHRoYXQgaXMsIHRoZXkgYXJlIGF1dG9tYXRpY2FsbHkKKyAgICAgIGRlbGV0ZWQg d2hlbiBoaXQuICAqLworICAgZXJybm8gPSAwOworLSAgaWYgKHB0cmFjZSAoUFBDX1BUUkFDRV9E RUxIV0RFQlVHLCB0aWQsIDAsIGh3X2JyZWFrc1tpXS5zbG90KSA8IDApCisrICBpZiAocHRyYWNl IChQUENfUFRSQUNFX0RFTEhXREVCVUcsIFRJREdFVCAobHAtPnB0aWQpLCAwLCBod19icmVha3Nb aV0uc2xvdCkKKysgICAgICA8IDApCisgICAgIGlmIChlcnJubyAhPSBFTk9FTlQpCisgICAgICAg cGVycm9yX3dpdGhfbmFtZSAoXygiVW5leHBlY3RlZCBlcnJvciBkZWxldGluZyAiCisgCQkJICAi YnJlYWtwb2ludCBvciB3YXRjaHBvaW50IikpOworIAorICAgeGZyZWUgKGh3X2JyZWFrc1tpXS5o d19icmVhayk7CisgICBod19icmVha3NbaV0uaHdfYnJlYWsgPSBOVUxMOworKworKyAgLyogQ29u dGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKKyB9CiAgCi1AQCAtMTY1NCw4 ICsxNjYyLDYgQEAgc3RhdGljIGludAorIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIHJlZ2lzdGVy cyBuZWVkZWQgZm9yIGEgcmFuZ2VkIGJyZWFrcG9pbnQuICAqLworQEAgLTE2NTQsNyArMTY3NCw2 IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBn ZGJhcmNoICpnZGJhcmNoLAogIAkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KQog IHsKLS0gIHB0aWRfdCBwdGlkOwogLSAgc3RydWN0IGx3cF9pbmZvICpscDsKICAgIHN0cnVjdCBw cGNfaHdfYnJlYWtwb2ludCBwOwogIAogICAgaWYgKCFoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZh Y2UgKCkpCi1AQCAtMTY4MSwxOCArMTY4NywyMyBAQCBwcGNfbGludXhfaW5zZXJ0X2h3X2JyZWFr cG9pbnQgKHN0cnVjdCBnCitAQCAtMTY4MCw4ICsxNjk5LDcgQEAgcHBjX2xpbnV4X2luc2VydF9o d19icmVha3BvaW50IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgICAgICBwLmFkZHIyID0g MDsKICAgICAgfQogIAotLSAgQUxMX0xXUFMgKGxwLCBwdGlkKQotLSAgICBib29rZV9pbnNlcnRf cG9pbnQgKCZwLCBUSURHRVQgKHB0aWQpKTsKKy0gIEFMTF9MV1BTIChscCkKKy0gICAgYm9va2Vf aW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChscC0+cHRpZCkpOwogKyAgbGludXhfbmF0X2l0ZXJh dGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKICAK ICAgIHJldHVybiAwOwogIH0KLSAKLStzdGF0aWMgdm9pZAotK2Jvb2tlX3JlbW92ZV9wb2ludF9j YWxsYmFjayAoaW50IHRpZCwgdm9pZCAqcHBfdm9pZHApCi0rewotKyAgc3RydWN0IHBwY19od19i cmVha3BvaW50ICpwcCA9IHBwX3ZvaWRwOwotKwotKyAgYm9va2VfcmVtb3ZlX3BvaW50IChwcCwg dGlkKTsKLSt9Ci0rCi0gc3RhdGljIGludAorQEAgLTE2OTAsNyArMTcwOCw2IEBAIHN0YXRpYyBp bnQKICBwcGNfbGludXhfcmVtb3ZlX2h3X2JyZWFrcG9pbnQgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLAogIAkJCQkgIHN0cnVjdCBicF90YXJnZXRfaW5mbyAqYnBfdGd0KQogIHsKLS0gIHB0aWRf dCBwdGlkOwogLSAgc3RydWN0IGx3cF9pbmZvICpscDsKICAgIHN0cnVjdCBwcGNfaHdfYnJlYWtw b2ludCBwOwogIAogICAgaWYgKCFoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAt MTcxOCw4ICsxNzI5LDcgQEAgcHBjX2xpbnV4X3JlbW92ZV9od19icmVha3BvaW50IChzdHJ1Y3Qg ZworQEAgLTE3MTYsOCArMTczMyw3IEBAIHBwY19saW51eF9yZW1vdmVfaHdfYnJlYWtwb2ludCAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCiAgICAgICAgcC5hZGRyMiA9IDA7CiAgICAgIH0KICAK LS0gIEFMTF9MV1BTIChscCwgcHRpZCkKLS0gICAgYm9va2VfcmVtb3ZlX3BvaW50ICgmcCwgVElE R0VUIChwdGlkKSk7CistICBBTExfTFdQUyAobHApCistICAgIGJvb2tlX3JlbW92ZV9wb2ludCAo JnAsIFRJREdFVCAobHAtPnB0aWQpKTsKICsgIGxpbnV4X25hdF9pdGVyYXRlX3dhdGNocG9pbnRf bHdwcyAoYm9va2VfcmVtb3ZlX3BvaW50X2NhbGxiYWNrLCAmcCk7CiAgCiAgICByZXR1cm4gMDsK ICB9Ci1AQCAtMjAwNCw2ICsyMDE0LDE1IEBAIHBwY19saW51eF9jYW5fYWNjZWxfd2F0Y2hwb2lu dF9jb25kaXRpb24KK0BAIC0xNzQ2LDcgKzE3NjIsNiBAQCBzdGF0aWMgaW50CisgcHBjX2xpbnV4 X2luc2VydF9tYXNrX3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQURE UiBhZGRyLAorIAkJCQkgIENPUkVfQUREUiBtYXNrLCBpbnQgcncpCisgeworLSAgc3RydWN0IGx3 cF9pbmZvICpscDsKKyAgIHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCBwOworIAorICAgZ2RiX2Fz c2VydCAoaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKTsKK0BAIC0xNzU5LDggKzE3NzQs NyBAQCBwcGNfbGludXhfaW5zZXJ0X21hc2tfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMg Km9wcywgQ09SRV9BRERSIGFkZHIsCisgICBwLmFkZHIyID0gbWFzazsKKyAgIHAuY29uZGl0aW9u X3ZhbHVlID0gMDsKKyAKKy0gIEFMTF9MV1BTIChscCkKKy0gICAgYm9va2VfaW5zZXJ0X3BvaW50 ICgmcCwgVElER0VUIChscC0+cHRpZCkpOworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2lu dF9sd3BzIChib29rZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKKyAKKyAgIHJldHVybiAw OworIH0KK0BAIC0xNzc0LDcgKzE3ODgsNiBAQCBzdGF0aWMgaW50CisgcHBjX2xpbnV4X3JlbW92 ZV9tYXNrX3dhdGNocG9pbnQgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsIENPUkVfQUREUiBhZGRy LAorIAkJCQkgIENPUkVfQUREUiBtYXNrLCBpbnQgcncpCisgeworLSAgc3RydWN0IGx3cF9pbmZv ICpscDsKKyAgIHN0cnVjdCBwcGNfaHdfYnJlYWtwb2ludCBwOworIAorICAgZ2RiX2Fzc2VydCAo aGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKTsKK0BAIC0xNzg3LDggKzE4MDAsNyBAQCBw cGNfbGludXhfcmVtb3ZlX21hc2tfd2F0Y2hwb2ludCAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywg Q09SRV9BRERSIGFkZHIsCisgICBwLmFkZHIyID0gbWFzazsKKyAgIHAuY29uZGl0aW9uX3ZhbHVl ID0gMDsKKyAKKy0gIEFMTF9MV1BTIChscCkKKy0gICAgYm9va2VfcmVtb3ZlX3BvaW50ICgmcCwg VElER0VUIChscC0+cHRpZCkpOworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3Bz IChib29rZV9yZW1vdmVfcG9pbnRfY2FsbGJhY2ssICZwKTsKKyAKKyAgIHJldHVybiAwOworIH0K K0BAIC0xNzk4LDEwICsxODEwLDE2IEBAIHN0YXRpYyBpbnQKKyBjYW5fdXNlX3dhdGNocG9pbnRf Y29uZF9hY2NlbCAodm9pZCkKKyB7CisgICBzdHJ1Y3QgdGhyZWFkX3BvaW50cyAqcDsKKy0gIGlu dCB0aWQgPSBUSURHRVQgKGluZmVyaW9yX3B0aWQpOworICAgaW50IGNudCA9IGJvb2tlX2RlYnVn X2luZm8ubnVtX2NvbmRpdGlvbl9yZWdzLCBpOworICAgQ09SRV9BRERSIHRtcF92YWx1ZTsKKyAK KysgIC8qIE92ZXJsb2FkIHRocmVhZCBpZCBvbnRvIHByb2Nlc3MgaWQuICAqLworKyAgaW50IHRp ZCA9IFRJREdFVCAoaW5mZXJpb3JfcHRpZCk7CisrCisrICAvKiBObyB0aHJlYWQgaWQsIGp1c3Qg dXNlIHByb2Nlc3MgaWQuICAqLworKyAgaWYgKHRpZCA9PSAwKQorKyAgICB0aWQgPSBQSURHRVQg KGluZmVyaW9yX3B0aWQpOworKworICAgaWYgKCFoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2Ug KCkgfHwgY250ID09IDApCisgICAgIHJldHVybiAwOworIAorQEAgLTIwMDAsNiArMjAxOCwyMiBA QCBwcGNfbGludXhfY2FuX2FjY2VsX3dhdGNocG9pbnRfY29uZGl0aW9uIChDT1JFX0FERFIgYWRk ciwgaW50IGxlbiwgaW50IHJ3LAogIAkgICYmIGNoZWNrX2NvbmRpdGlvbiAoYWRkciwgY29uZCwg JmRhdGFfdmFsdWUsICZsZW4pKTsKICB9CiAgCi0rc3RhdGljIHZvaWQKLStzZXRfc2F2ZWRfZGFi cl92YWx1ZV9jYWxsYmFjayAoaW50IHRpZCwgdm9pZCAqcmV0cF92b2lkcCkKKysvKiBDYWxsYmFj ayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIHNldHRpbmcgUkVUUF9WT0lE UCBieQorKyAgIFBUUkFDRV9TRVRfREVCVUdSRUcgZm9yIExQLiAgKi8KKysKKytzdGF0aWMgaW50 Cisrc2V0X3NhdmVkX2RhYnJfdmFsdWVfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAsIHZv aWQgKnJldHBfdm9pZHApCiArewogKyAgaW50ICpyZXRwID0gcmV0cF92b2lkcDsKICsKLSsgIGlm IChwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgMCwgc2F2ZWRfZGFicl92YWx1ZSkg PCAwKQorKyAgaWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChscC0+cHRp ZCksIDAsIHNhdmVkX2RhYnJfdmFsdWUpCisrICAgICAgPCAwKQogKyAgICAqcmV0cCA9IC0xOwor KworKyAgLyogQ29udGludWUgdGhlIHRyYXZlcnNhbC4gICovCisrICByZXR1cm4gMDsKICt9CiAr CiAgLyogU2V0IHVwIFAgd2l0aCB0aGUgcGFyYW1ldGVycyBuZWNlc3NhcnkgdG8gcmVxdWVzdCBh IHdhdGNocG9pbnQgY292ZXJpbmcKICAgICBMRU4gYnl0ZXMgc3RhcnRpbmcgYXQgQUREUiBhbmQg aWYgcG9zc2libGUgd2l0aCBjb25kaXRpb24gZXhwcmVzc2lvbiBDT05ECiAgICAgZXZhbHVhdGVk IGJ5IGhhcmR3YXJlLiAgSU5TRVJUIHRlbGxzIGlmIHdlIGFyZSBjcmVhdGluZyBhIHJlcXVlc3Qg Zm9yCi1AQCAtMjA1OCw4ICsyMDc3LDYgQEAgc3RhdGljIGludAorQEAgLTIwNTUsNyArMjA4OSw2 IEBAIHN0YXRpYyBpbnQKICBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCQkJICAgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqY29uZCkK ICB7CiAtICBzdHJ1Y3QgbHdwX2luZm8gKmxwOwotLSAgcHRpZF90IHB0aWQ7CiAgICBpbnQgcmV0 ID0gLTE7CiAgCiAgICBpZiAoaGF2ZV9wdHJhY2VfYm9va2VfaW50ZXJmYWNlICgpKQotQEAgLTIw NjgsOCArMjA4NSw3IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGEK K0BAIC0yMDY0LDggKzIwOTcsNyBAQCBwcGNfbGludXhfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVf QUREUiBhZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCiAgICAgICAgY3JlYXRlX3dhdGNocG9pbnRf cmVxdWVzdCAoJnAsIGFkZHIsIGxlbiwgcncsIGNvbmQsIDEpOwogIAotLSAgICAgIEFMTF9MV1BT IChscCwgcHRpZCkKLS0JYm9va2VfaW5zZXJ0X3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7Cist ICAgICAgQUxMX0xXUFMgKGxwKQorLQlib29rZV9pbnNlcnRfcG9pbnQgKCZwLCBUSURHRVQgKGxw LT5wdGlkKSk7CiArICAgICAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29r ZV9pbnNlcnRfcG9pbnRfY2FsbGJhY2ssICZwKTsKICAKICAgICAgICByZXQgPSAwOwogICAgICB9 Ci1AQCAtMjExMiwxMiArMjEyOCw4IEBAIHBwY19saW51eF9pbnNlcnRfd2F0Y2hwb2ludCAoQ09S RV9BRERSIGEKK0BAIC0yMTA4LDEyICsyMTQwLDggQEAgcHBjX2xpbnV4X2luc2VydF93YXRjaHBv aW50IChDT1JFX0FERFIgYWRkciwgaW50IGxlbiwgaW50IHJ3LAogIAogICAgICAgIHNhdmVkX2Rh YnJfdmFsdWUgPSBkYWJyX3ZhbHVlOwogIAotLSAgICAgIEFMTF9MV1BTIChscCwgcHRpZCkKLS0J aWYgKHB0cmFjZSAoUFRSQUNFX1NFVF9ERUJVR1JFRywgVElER0VUIChwdGlkKSwgMCwKKy0gICAg ICBBTExfTFdQUyAobHApCistCWlmIChwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIFRJREdF VCAobHAtPnB0aWQpLCAwLAogLQkJICAgIHNhdmVkX2RhYnJfdmFsdWUpIDwgMCkKIC0JICByZXR1 cm4gLTE7CiAtCkBAIC02MjE2LDIxICs3MTY3LDIwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9wcGMtbGludXgtbmF0LmMKICAgICAgfQogIAogICAgcmV0dXJuIHJldDsKLUBAIC0y MTI3LDggKzIxMzksNiBAQCBzdGF0aWMgaW50CitAQCAtMjEyMyw3ICsyMTUxLDYgQEAgc3RhdGlj IGludAogIHBwY19saW51eF9yZW1vdmVfd2F0Y2hwb2ludCAoQ09SRV9BRERSIGFkZHIsIGludCBs ZW4sIGludCBydywKICAJCQkgICAgIHN0cnVjdCBleHByZXNzaW9uICpjb25kKQogIHsKIC0gIHN0 cnVjdCBsd3BfaW5mbyAqbHA7Ci0tICBwdGlkX3QgcHRpZDsKICAgIGludCByZXQgPSAtMTsKICAK ICAgIGlmIChoYXZlX3B0cmFjZV9ib29rZV9pbnRlcmZhY2UgKCkpCi1AQCAtMjEzNywyMCArMjE0 NywxNiBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhCitAQCAtMjEz MiwyMCArMjE1OSwxNiBAQCBwcGNfbGludXhfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBh ZGRyLCBpbnQgbGVuLCBpbnQgcncsCiAgCiAgICAgICAgY3JlYXRlX3dhdGNocG9pbnRfcmVxdWVz dCAoJnAsIGFkZHIsIGxlbiwgcncsIGNvbmQsIDApOwogIAotLSAgICAgIEFMTF9MV1BTIChscCwg cHRpZCkKLS0JYm9va2VfcmVtb3ZlX3BvaW50ICgmcCwgVElER0VUIChwdGlkKSk7CistICAgICAg QUxMX0xXUFMgKGxwKQorLQlib29rZV9yZW1vdmVfcG9pbnQgKCZwLCBUSURHRVQgKGxwLT5wdGlk KSk7CiArICAgICAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChib29rZV9yZW1v dmVfcG9pbnRfY2FsbGJhY2ssICZwKTsKICAKICAgICAgICByZXQgPSAwOwpAQCAtNjIzOCw4ICs3 MTg4LDggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3BwYy1saW51eC1uYXQuYwog ICAgZWxzZQogICAgICB7CiAgICAgICAgc2F2ZWRfZGFicl92YWx1ZSA9IDA7Ci0tICAgICAgQUxM X0xXUFMgKGxwLCBwdGlkKQotLQlpZiAocHRyYWNlIChQVFJBQ0VfU0VUX0RFQlVHUkVHLCBUSURH RVQgKHB0aWQpLCAwLAorLSAgICAgIEFMTF9MV1BTIChscCkKKy0JaWYgKHB0cmFjZSAoUFRSQUNF X1NFVF9ERUJVR1JFRywgVElER0VUIChscC0+cHRpZCksIDAsCiAtCQkgICAgc2F2ZWRfZGFicl92 YWx1ZSkgPCAwKQogLQkgIHJldHVybiAtMTsKICAKQEAgLTYyNDgsMTEgKzcxOTgsMTQ1IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcGMtbGludXgtbmF0LmMKICAgICAgfQogIAog ICAgcmV0dXJuIHJldDsKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9wcmludGNtZC5j Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9wcmludGNtZC5j CTIwMTEtMDMtMjIgMTU6Mzk6NDAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvcHJpbnRjbWQuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAot QEAgLTk3NSw2ICs5NzUsMTEgQEAgcHJpbnRfY29tbWFuZF8xIChjaGFyICpleHAsIGludCBpbnNw ZWN0LAorQEAgLTIxNzIsNyArMjE5NSw3IEBAIHBwY19saW51eF9uZXdfdGhyZWFkIChzdHJ1Y3Qg bHdwX2luZm8gKmxwKQorICAgICAgIC8qIENvcHkgdGhhdCB0aHJlYWQncyBicmVha3BvaW50cyBh bmQgd2F0Y2hwb2ludHMgdG8gdGhlIG5ldyB0aHJlYWQuICAqLworICAgICAgIGZvciAoaSA9IDA7 IGkgPCBtYXhfc2xvdHNfbnVtYmVyOyBpKyspCisgCWlmIChod19icmVha3NbaV0uaHdfYnJlYWsp CistCSAgYm9va2VfaW5zZXJ0X3BvaW50IChod19icmVha3NbaV0uaHdfYnJlYWssIHRpZCk7Cisr CSAgYm9va2VfaW5zZXJ0X3BvaW50IChscCwgaHdfYnJlYWtzW2ldLmh3X2JyZWFrKTsKKyAgICAg fQorICAgZWxzZQorICAgICBwdHJhY2UgKFBUUkFDRV9TRVRfREVCVUdSRUcsIHRpZCwgMCwgc2F2 ZWRfZGFicl92YWx1ZSk7CitAQCAtMjIzMCw3ICsyMjUzLDE0IEBAIHBwY19saW51eF9zdG9wcGVk X2RhdGFfYWRkcmVzcyAoc3RydWN0IHRhcmdldF9vcHMgKnRhcmdldCwgQ09SRV9BRERSICphZGRy X3ApCisgICAgICAgLyogVGhlIGluZGV4IChvciBzbG90KSBvZiB0aGUgKnBvaW50IGlzIHBhc3Nl ZCBpbiB0aGUgc2lfZXJybm8gZmllbGQuICAqLworICAgICAgIGludCBzbG90ID0gc2lnaW5mb19w LT5zaV9lcnJubzsKKyAKKy0gICAgICB0ID0gYm9va2VfZmluZF90aHJlYWRfcG9pbnRzX2J5X3Rp ZCAoVElER0VUIChpbmZlcmlvcl9wdGlkKSwgMCk7CisrICAgICAgLyogT3ZlcmxvYWQgdGhyZWFk IGlkIG9udG8gcHJvY2VzcyBpZC4gICovCisrICAgICAgaW50IHRpZCA9IFRJREdFVCAoaW5mZXJp b3JfcHRpZCk7CisrCisrICAgICAgLyogTm8gdGhyZWFkIGlkLCBqdXN0IHVzZSBwcm9jZXNzIGlk LiAgKi8KKysgICAgICBpZiAodGlkID09IDApCisrCXRpZCA9IFBJREdFVCAoaW5mZXJpb3JfcHRp ZCk7CisrCisrICAgICAgdCA9IGJvb2tlX2ZpbmRfdGhyZWFkX3BvaW50c19ieV90aWQgKHRpZCwg MCk7CisgCisgICAgICAgLyogRmluZCBvdXQgaWYgdGhpcyAqcG9pbnQgaXMgYSBoYXJkd2FyZSBi cmVha3BvaW50LgorIAkgSWYgc28sIHdlIHNob3VsZCByZXR1cm4gMC4gICovCitkaWZmIC0tZ2l0 IGEvZ2RiL3BwYy1saW51eC10ZGVwLmMgYi9nZGIvcHBjLWxpbnV4LXRkZXAuYworaW5kZXggMDdk ZDk5MC4uMWU4ZTZkNiAxMDA2NDQKKy0tLSBhL2dkYi9wcGMtbGludXgtdGRlcC5jCisrKysgYi9n ZGIvcHBjLWxpbnV4LXRkZXAuYworQEAgLTY2LDYgKzY2LDE0IEBACisgI2luY2x1ZGUgImZlYXR1 cmVzL3JzNjAwMC9wb3dlcnBjLWlzYTIwNS12c3g2NGwuYyIKKyAjaW5jbHVkZSAiZmVhdHVyZXMv cnM2MDAwL3Bvd2VycGMtZTUwMGwuYyIKKyAKKysjaW5jbHVkZSAic3RhcC1wcm9iZS5oIgorKyNp bmNsdWRlICJheC5oIgorKyNpbmNsdWRlICJheC1nZGIuaCIKKysjaW5jbHVkZSAiY2xpL2NsaS11 dGlscy5oIgorKyNpbmNsdWRlICJwYXJzZXItZGVmcy5oIgorKyNpbmNsdWRlICJ1c2VyLXJlZ3Mu aCIKKysjaW5jbHVkZSA8Y3R5cGUuaD4KKysKKyAvKiBUaGUgc3lzY2FsbCdzIFhNTCBmaWxlbmFt ZSBmb3IgUFBDIGFuZCBQUEM2NC4gICovCisgI2RlZmluZSBYTUxfU1lTQ0FMTF9GSUxFTkFNRV9Q UEMgInN5c2NhbGxzL3BwYy1saW51eC54bWwiCisgI2RlZmluZSBYTUxfU1lTQ0FMTF9GSUxFTkFN RV9QUEM2NCAic3lzY2FsbHMvcHBjNjQtbGludXgueG1sIgorQEAgLTExOTMsNiArMTIwMSw2NSBA QCBwcGNfbGludXhfY29yZV9yZWFkX2Rlc2NyaXB0aW9uIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwKKyAgICAgfQorIH0KKyAKKytzdGF0aWMgaW50CisrcHBjX3N0YXBfaXNfc2luZ2xlX29wZXJh bmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBjb25zdCBjaGFyICpzKQorK3sKKysgIHJldHVy biAoKnMgPT0gJ2knIC8qIExpdGVyYWwgbnVtYmVyLiAgKi8KKysJICB8fCAoaXNkaWdpdCAoKnMp ICYmIHNbMV0gPT0gJygnCisrCSAgICAgICYmIGlzZGlnaXQgKHNbMl0pKSAvKiBEaXNwbGFjZW1l bnQuICAqLworKwkgIHx8ICgqcyA9PSAnKCcgJiYgaXNkaWdpdCAoc1sxXSkpIC8qIFJlZ2lzdGVy IGluZGlyZWN0aW9uLiAgKi8KKysJICB8fCBpc2RpZ2l0ICgqcykpOyAvKiBSZWdpc3RlciB2YWx1 ZS4gICovCisrfQorKworK3N0YXRpYyBpbnQKKytwcGNfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2Vu IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKysJCQkgICAgICBzdHJ1Y3Qgc3RhcF9wYXJzZV9p bmZvICpwKQorK3sKKysgIGlmIChpc2RpZ2l0ICgqcC0+YXJnKSkKKysgICAgeworKyAgICAgIC8q IFRoaXMgdGVtcG9yYXJ5IHBvaW50ZXIgaXMgbmVlZGVkIGJlY2F1c2Ugd2UgaGF2ZSB0byBkbyBh IGxvb2thaGVhZC4KKysJICBXZSBjb3VsZCBiZSBkZWFsaW5nIHdpdGggYSByZWdpc3RlciBkaXNw bGFjZW1lbnQsIGFuZCBpbiBzdWNoIGNhc2UKKysJICB3ZSB3b3VsZCBub3QgbmVlZCB0byBkbyBh bnl0aGluZy4gICovCisrICAgICAgY29uc3QgY2hhciAqcyA9IHAtPmFyZzsKKysgICAgICBjaGFy ICpyZWduYW1lOworKyAgICAgIGludCBsZW47CisrICAgICAgc3RydWN0IHN0b2tlbiBzdHI7Cisr CisrICAgICAgd2hpbGUgKGlzZGlnaXQgKCpzKSkKKysJKytzOworKworKyAgICAgIGlmICgqcyA9 PSAnKCcpCisrCS8qIEl0IGlzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50IGluZGVlZC4gIFJldHVy bmluZyAwIG1lYW5zIHdlIGFyZQorKwkgICBkZWZlcnJpbmcgdGhlIHRyZWF0bWVudCBvZiB0aGlz IGNhc2UgdG8gdGhlIGdlbmVyaWMgcGFyc2VyLiAgKi8KKysJcmV0dXJuIDA7CisrCisrICAgICAg bGVuID0gcyAtIHAtPmFyZzsKKysgICAgICByZWduYW1lID0gYWxsb2NhIChsZW4gKyAyKTsKKysg ICAgICByZWduYW1lWzBdID0gJ3InOworKworKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUgKyAxLCBw LT5hcmcsIGxlbik7CisrICAgICAgKytsZW47CisrICAgICAgcmVnbmFtZVtsZW5dID0gJ1wwJzsK KysKKysgICAgICBpZiAodXNlcl9yZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWdu YW1lLCBsZW4pID09IC0xKQorKwllcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycg b24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkgICAgICAgcmVnbmFtZSwgcC0+c2F2ZWRfYXJnKTsK KysKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNURVIpOworKyAgICAgIHN0 ci5wdHIgPSByZWduYW1lOworKyAgICAgIHN0ci5sZW5ndGggPSBsZW47CisrICAgICAgd3JpdGVf ZXhwX3N0cmluZyAoc3RyKTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfUkVHSVNU RVIpOworKworKyAgICAgIHAtPmFyZyA9IHM7CisrICAgIH0KKysgIGVsc2UKKysgICAgLyogQWxs IHRoZSBvdGhlciB0b2tlbnMgc2hvdWxkIGJlIGhhbmRsZWQgY29ycmVjdGx5IGJ5IHRoZSBnZW5l cmljCisrICAgICAgIHBhcnNlci4gICovCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIDE7 CisrfQorIAorIC8qIENlbGwvQi5FLiBhY3RpdmUgU1BFIGNvbnRleHQgdHJhY2tpbmcgc3VwcG9y dC4gICovCisgCitAQCAtMTUxMCw2ICsxNTc3LDE1IEBAIHBwY19saW51eF9pbml0X2FiaSAoc3Ry dWN0IGdkYmFyY2hfaW5mbyBpbmZvLAorICAgLyogR2V0IHRoZSBzeXNjYWxsIG51bWJlciBmcm9t IHRoZSBhcmNoJ3MgcmVnaXN0ZXIuICAqLworICAgc2V0X2dkYmFyY2hfZ2V0X3N5c2NhbGxfbnVt YmVyIChnZGJhcmNoLCBwcGNfbGludXhfZ2V0X3N5c2NhbGxfbnVtYmVyKTsKKyAKKysgIC8qIFN5 c3RlbVRhcCBmdW5jdGlvbnMuICAqLworKyAgc2V0X2dkYmFyY2hfc3RhcF9pbnRlZ2VyX3ByZWZp eCAoZ2RiYXJjaCwgImkiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rp b25fcHJlZml4IChnZGJhcmNoLCAiKCIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9p bmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwgIikiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfZ2Ri X3JlZ2lzdGVyX3ByZWZpeCAoZ2RiYXJjaCwgInIiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfaXNf c2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIHBwY19zdGFwX2lzX3NpbmdsZV9vcGVyYW5kKTsKKysg IHNldF9nZGJhcmNoX3N0YXBfcGFyc2Vfc3BlY2lhbF90b2tlbiAoZ2RiYXJjaCwKKysJCQkJCXBw Y19zdGFwX3BhcnNlX3NwZWNpYWxfdG9rZW4pOworKworICAgaWYgKHRkZXAtPndvcmRzaXplID09 IDQpCisgICAgIHsKKyAgICAgICAvKiBVbnRpbCBOb3ZlbWJlciAyMDAxLCBnY2MgZGlkIG5vdCBj b21wbHkgd2l0aCB0aGUgMzIgYml0IFN5c1YKK2RpZmYgLS1naXQgYS9nZGIvcHJpbnRjbWQuYyBi L2dkYi9wcmludGNtZC5jCitpbmRleCA1YTUyMmY0Li4zNmI5MzJkIDEwMDY0NAorLS0tIGEvZ2Ri L3ByaW50Y21kLmMKKysrKyBiL2dkYi9wcmludGNtZC5jCitAQCAtNTEsNiArNTEsNyBAQAorICNp bmNsdWRlICJjaGFyc2V0LmgiCisgI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKKyAjaW5jbHVkZSAi Y2xpL2NsaS11dGlscy5oIgorKyNpbmNsdWRlICJkd2FyZjJsb2MuaCIKKyAKKyAjaWZkZWYgVFVJ CisgI2luY2x1ZGUgInR1aS90dWkuaCIJCS8qIEZvciB0dWlfYWN0aXZlIGV0IGFsLiAgICovCitA QCAtOTczLDYgKzk3NCwxMSBAQCBwcmludF9jb21tYW5kXzEgKGNoYXIgKmV4cCwgaW50IGluc3Bl Y3QsIGludCB2b2lkcHJpbnQpCiAgICBlbHNlCiAgICAgIHZhbCA9IGFjY2Vzc192YWx1ZV9oaXN0 b3J5ICgwKTsKICAKQEAgLTYyNjQsNyArNzM0OCwxNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvcHJpbnRjbWQuYwogICAgaWYgKHZvaWRwcmludCB8fCAodmFsICYmIHZhbHVlX3R5 cGUgKHZhbCkgJiYKICAJCSAgICBUWVBFX0NPREUgKHZhbHVlX3R5cGUgKHZhbCkpICE9IFRZUEVf Q09ERV9WT0lEKSkKICAgICAgewotQEAgLTE0NzYsNiArMTQ4MSwyNCBAQCB4X2NvbW1hbmQgKGNo YXIgKmV4cCwgaW50IGZyb21fdHR5KQorQEAgLTEwNjEsNiArMTA2Nyw5IEBAIG91dHB1dF9jb21t YW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKKyAKKyAgIHZhbCA9IGV2YWx1YXRlX2V4cHJl c3Npb24gKGV4cHIpOworIAorKyAgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkp CisrICAgIG9iamVjdF9hZGRyZXNzX3NldCAodmFsdWVfcmF3X2FkZHJlc3MgKHZhbCkpOworKwor ICAgYW5ub3RhdGVfdmFsdWVfYmVnaW4gKHZhbHVlX3R5cGUgKHZhbCkpOworIAorICAgZ2V0X2Zv cm1hdHRlZF9wcmludF9vcHRpb25zICgmb3B0cywgZm9ybWF0KTsKK0BAIC0xNDc0LDYgKzE0ODMs MjQgQEAgeF9jb21tYW5kIChjaGFyICpleHAsIGludCBmcm9tX3R0eSkKICAJc2V0X2ludGVybmFs dmFyIChsb29rdXBfaW50ZXJuYWx2YXIgKCJfXyIpLCBsYXN0X2V4YW1pbmVfdmFsdWUpOwogICAg ICB9CiAgfQpAQCAtNjI4OSw3ICs3MzgzLDE4IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9wcmludGNtZC5jCiAgDAogIAogIC8qIEFkZCBhbiBleHByZXNzaW9uIHRvIHRoZSBhdXRv LWRpc3BsYXkgY2hhaW4uCi1AQCAtMjg3MCw0ICsyODkzLDggQEAgU2hvdyBwcmludGluZyBvZiBz b3VyY2UgZmlsZW5hbWUgYW5kIGxpbgorQEAgLTE5NzMsNiArMjAwMCwxMCBAQCBwcmludF92YXJp YWJsZV9hbmRfdmFsdWUgKGNvbnN0IGNoYXIgKm5hbWUsIHN0cnVjdCBzeW1ib2wgKnZhciwKKyAg ICAgICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOworIAorICAgICAgIHZhbCA9IHJl YWRfdmFyX3ZhbHVlICh2YXIsIGZyYW1lKTsKKysKKysgICAgICBtYWtlX2NsZWFudXBfcmVzdG9y ZV9zZWxlY3RlZF9mcmFtZSAoKTsKKysgICAgICBzZWxlY3RfZnJhbWUgKGZyYW1lKTsKKysKKyAg ICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7CisgICAgICAgb3B0cy5kZXJlZl9y ZWYgPSAxOworICAgICAgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RyZWFtLCBpbmRlbnQsICZv cHRzLCBjdXJyZW50X2xhbmd1YWdlKTsKK0BAIC0yODg2LDQgKzI5MTcsOCBAQCBTaG93IHByaW50 aW5nIG9mIHNvdXJjZSBmaWxlbmFtZSBhbmQgbGluZSBudW1iZXIgd2l0aCA8c3ltYm9sPi4iKSwg TlVMTCwKICAgIGFkZF9jb20gKCJldmFsIiwgbm9fY2xhc3MsIGV2YWxfY29tbWFuZCwgXygiXAog IENvbnZlcnQgXCJwcmludGYgZm9ybWF0IHN0cmluZ1wiLCBhcmcxLCBhcmcyLCBhcmczLCAuLi4s IGFyZ24gdG9cblwKICBhIGNvbW1hbmQgbGluZSwgYW5kIGNhbGwgaXQuIikpOwpAQCAtNjI5OCwx MCArNzQwMywxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHJpbnRjbWQuYwog KyAgb2JzZXJ2ZXJfYXR0YWNoX21hcmtfdXNlZCAocHJpbnRfdHlwZXNfbWFya191c2VkKTsKICsj ZW5kaWYKICB9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIv RnJhbWVJdGVyYXRvci5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAw OjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhv bi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAg KzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weSBi L2dkYi9weXRob24vbGliL2dkYi9GcmFtZUl0ZXJhdG9yLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNTY1NDU0NgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhv bi9saWIvZ2RiL0ZyYW1lSXRlcmF0b3IucHkKIEBAIC0wLDAgKzEsMzMgQEAKICsjIEl0ZXJhdG9y IG92ZXIgZnJhbWVzLgogKwpAQCAtNjMzNiwxMCArNzQ0MiwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVJdGVyYXRvci5weQogKyAgICAgICAg ICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KICsgICAgICAgIHNlbGYuZnJhbWUgPSByZXN1bHQub2xk ZXIgKCkKICsgICAgICAgIHJldHVybiByZXN1bHQKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkJMjAxMS0wNy0yOSAy Mjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIv RnJhbWVXcmFwcGVyLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL0ZyYW1lV3JhcHBlci5weQorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI3OTBhNTQKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi9weXRob24vbGliL2dkYi9GcmFtZVdyYXBwZXIucHkKIEBAIC0wLDAgKzEsMTEy IEBACiArIyBXcmFwcGVyIEFQSSBmb3IgZnJhbWVzLgogKwpAQCAtNjQ1MywxMCArNzU2MCwxMSBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvRnJhbWVXcmFw cGVyLnB5CiArCiArICAgIGRlZiBfX2dldGF0dHJfXyAoc2VsZiwgbmFtZSk6CiArICAgICAgICBy ZXR1cm4gZ2V0YXR0ciAoc2VsZi5mcmFtZSwgbmFtZSkKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkJMjAxMS0wNy0yOSAyMjo1 MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvYmFj a3RyYWNlLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2JhY2t0cmFjZS5weQorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjZiYjRmYjEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKIEBAIC0wLDAgKzEsNDIgQEAKICsjIEZpbHRl cmluZyBiYWNrdHJhY2UuCiArCkBAIC02NTAwLDc0ICs3NjA4LDExIEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9iYWNrdHJhY2UucHkKICsgICAgICAgIHJl dHVybiBpdGVyCiArICAgIHJldHVybiBmcmFtZV9maWx0ZXIgKGl0ZXIpCiArCi1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9hbGlhcy5weQotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYWxp YXMucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNTkg QEAKLSsjIEFsaWFzIGNvbW1hbmQuCi0rCi0rIyBDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2Fy ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhl IExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyMK LSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwg YmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhl IGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg Y29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGggdGhp cyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+Lgot KwotK2ltcG9ydCBnZGIKLSsKLStjbGFzcyBBbGlhc0ltcGxlbWVudGF0aW9uIChnZGIuQ29tbWFu ZCk6Ci0rICAgIGRlZiBfX2luaXRfXyAoc2VsZiwgbmFtZSwgcmVhbCwgZG9jKToKLSsgICAgICAg ICMgSGF2ZSB0byBzZXQgX19kb2NfXyBiZWZvcmUgdGhlIHN1cGVyIGluaXQgY2FsbC4KLSsgICAg ICAgICMgSXQgd291bGQgYmUgbmljZSBpZiBnZGIncyBoZWxwIGxvb2tlZCB1cCBfX2RvY19fIGR5 bmFtaWNhbGx5LgotKyAgICAgICAgc2VsZi5fX2RvY19fID0gZG9jCi0rICAgICAgICAjIE5vdGU6 IG5vIGdvb2Qgd2F5IHRvIGNvbXBsZXRlIDooCi0rICAgICAgICBzdXBlciAoQWxpYXNJbXBsZW1l bnRhdGlvbiwgc2VsZikuX19pbml0X18gKG5hbWUsIGdkYi5DT01NQU5EX05PTkUpCi0rICAgICAg ICBzZWxmLnJlYWwgPSByZWFsCi0rCi0rICAgIGRlZiBpbnZva2Uoc2VsZiwgYXJnLCBmcm9tX3R0 eSk6Ci0rICAgICAgICBnZGIuZXhlY3V0ZSAoc2VsZi5yZWFsICsgJyAnICsgYXJnLCBmcm9tX3R0 eSkKLSsKLStjbGFzcyBBbGlhc0NvbW1hbmQgKGdkYi5Db21tYW5kKToKLSsgICAgIiIiQWxpYXMg b25lIGNvbW1hbmQgdG8gYW5vdGhlci4KLStJbiB0aGUgc2ltcGxlc3QgZm9ybSwgdGhlIGZpcnN0 IHdvcmQgaXMgdGhlIG5hbWUgb2YgdGhlIGFsaWFzLCBhbmQKLSt0aGUgcmVtYWluaW5nIHdvcmRz IGFyZSB0aGUgdGhlIGV4cGFuc2lvbi4KLStBbiAnPScgYnkgaXRzZWxmIGNhbiBiZSB1c2VkIHRv IGRlZmluZSBhIG11bHRpLXdvcmQgYWxpYXM7IHdvcmRzCi0rYmVmb3JlIHRoZSAnPScgYXJlIHRo ZSBuYW1lIG9mIHRoZSBuZXcgY29tbWFuZC4iIiIKLSsKLSsgICAgZGVmIF9faW5pdF9fIChzZWxm KToKLSsgICAgICAgICMgQ29tcGxldGlvbiBpcyBub3QgcXVpdGUgcmlnaHQgaGVyZS4KLSsgICAg ICAgIHN1cGVyIChBbGlhc0NvbW1hbmQsIHNlbGYpLl9faW5pdF9fICgiYWxpYXMiLCBnZGIuQ09N TUFORF9OT05FLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGdkYi5DT01QTEVURV9DT01NQU5EKQotKwotKyAgICBkZWYgaW52b2tlIChzZWxmLCBhcmcsIGZy b21fdHR5KToKLSsgICAgICAgIHNlbGYuZG9udF9yZXBlYXQgKCkKLSsgICAgICAgICMgV2l0aG91 dCBzb21lIGZvcm0gb2YgcXVvdGluZyB3ZSBjYW4ndCBhbGlhcyBhIG11bHRpLXdvcmQKLSsgICAg ICAgICMgY29tbWFuZCB0byBhbm90aGVyIGNvbW1hbmQuCi0rICAgICAgICBhcmdzID0gYXJnLnNw bGl0KCkKLSsgICAgICAgIHRyeToKLSsgICAgICAgICAgICBzdGFydCA9IGFyZ3MuaW5kZXggKCc9 JykKLSsgICAgICAgICAgICBlbmQgPSBzdGFydCArIDEKLSsgICAgICAgIGV4Y2VwdCBWYWx1ZUVy cm9yOgotKyAgICAgICAgICAgIHN0YXJ0ID0gMQotKyAgICAgICAgICAgIGVuZCA9IDEKLSsgICAg ICAgIHRhcmdldCA9ICIgIi5qb2luKGFyZ3NbZW5kOl0pCi0rICAgICAgICBBbGlhc0ltcGxlbWVu dGF0aW9uICgiICIuam9pbiAoYXJnc1swOnN0YXJ0XSksIHRhcmdldCwKLSsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICJUaGlzIGNvbW1hbmQgaXMgYW4gYWxpYXMgZm9yICclcycuIiAlIHRh cmdldCkKLSsKLStBbGlhc0NvbW1hbmQoKQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvYmFja3RyYWNlLnB5Ci09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkJMjAxMS0w Ny0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xp Yi9nZGIvY29tbWFuZC9iYWNrdHJhY2UucHkgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9i YWNrdHJhY2UucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZWVhOTA5 CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9iYWNrdHJh Y2UucHkKIEBAIC0wLDAgKzEsMTA2IEBACiArIyBOZXcgYmFja3RyYWNlIGNvbW1hbmQuCiArCkBA IC02Njc1LDEwICs3NzIwLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRo b24vbGliL2dkYi9jb21tYW5kL2JhY2t0cmFjZS5weQogKyAgICAgICAgICAgIHBhaXJbMV0uZGVz Y3JpYmUgKHN5cy5zdGRvdXQsIGZ1bGwpCiArCiArRmlsdGVyaW5nQmFja3RyYWNlKCkKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9l cnJvcnMucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4w MDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dk Yi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAg KzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9pZ25vcmVfZXJy b3JzLnB5IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjZmYTQ4ZmYKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL2lnbm9yZV9lcnJvcnMucHkKIEBAIC0w LDAgKzEsMzcgQEAKICsjIElnbm9yZSBlcnJvcnMgaW4gdXNlciBjb21tYW5kcy4KICsKQEAgLTY3 MTcsMTAgKzc3NjMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9s aWIvZ2RiL2NvbW1hbmQvaWdub3JlX2Vycm9ycy5weQogKyAgICAgICAgICAgIHBhc3MKICsKICtJ Z25vcmVFcnJvcnNDb21tYW5kICgpCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC9wYWhvbGUucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQkyMDExLTA3LTI5IDIyOjUy OjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21t YW5kL3BhaG9sZS5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQorbmV3 IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjIxYTBiZjAKKy0tLSAvZGV2L251bGwK KysrKyBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3BhaG9sZS5weQogQEAgLTAsMCArMSw3 NSBAQAogKyMgcGFob2xlIGNvbW1hbmQgZm9yIGdkYgogKwpAQCAtNjc5NywxMCArNzg0NCwxMSBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9w YWhvbGUucHkKICsgICAgICAgIHNlbGYucGFob2xlICh0eXBlLCAwLCAnJykKICsKICtQYWhvbGUo KQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv cmVxdWlyZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIv Z2RiL2NvbW1hbmQvcmVxdWlyZS5weQkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIw MAorZGlmZiAtLWdpdCBhL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC9yZXF1aXJlLnB5CituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uMWZiYzFlOAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3B5dGhv bi9saWIvZ2RiL2NvbW1hbmQvcmVxdWlyZS5weQogQEAgLTAsMCArMSw1NyBAQAogKyMgRGVtYW5k LWxvYWRpbmcgY29tbWFuZHMuCiArCkBAIC02ODU5LDEwICs3OTA3LDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3JlcXVpcmUucHkKICtS ZXF1aXJlQ29tbWFuZCgpCiArUmVxdWlyZVN1YmNvbW1hbmQoImNvbW1hbmQiKQogK1JlcXVpcmVT dWJjb21tYW5kKCJmdW5jdGlvbiIpCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0 aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5CTIwMTEtMDctMjkgMjI6NTI6MDIu MDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2NvbW1hbmQv dXB0by5weSBiL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3VwdG8ucHkKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5mYWY1NGVkCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5CiBAQCAtMCwwICsxLDEyOSBAQAogKyMg dXB0byBjb21tYW5kLgogKwpAQCAtNjk5MywxNiArODA0MiwxOCBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvY29tbWFuZC91cHRvLnB5CiArVXB0b1NvdXJj ZUNvbW1hbmQgKCkKICtVcHRvT2JqZWN0Q29tbWFuZCAoKQogK1VwdG9XaGVyZUNvbW1hbmQgKCkK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9f X2luaXRfXy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAw LjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIv Z2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5 IGIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMC4uOGIxMzc4OQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2Ri L3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL19faW5pdF9fLnB5CiBAQCAtMCwwICsxIEBACiArCi1J bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2Fs bGVyX2lzLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9n ZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2NhbGxlcl9pcy5w eSBiL2dkYi9weXRob24vbGliL2dkYi9mdW5jdGlvbi9jYWxsZXJfaXMucHkKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4yYjljNWM3CistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVyX2lzLnB5CiBAQCAtMCwwICsxLDU4IEBA CiArIyBDYWxsZXItaXMgZnVuY3Rpb25zLgogKwpAQCAtNzA2MiwxMCArODExMywxMSBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vY2FsbGVy X2lzLnB5CiArCiArQ2FsbGVySXMoKQogK0NhbGxlck1hdGNoZXMoKQotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9saWIvZ2RiL2Z1bmN0aW9uL2luX3Njb3BlLnB5Ci09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5f c2NvcGUucHkJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQg YS9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkgYi9nZGIvcHl0aG9uL2xp Yi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAw MDAwMDAwLi5kZWJiM2JiCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvcHl0aG9uL2xpYi9nZGIv ZnVuY3Rpb24vaW5fc2NvcGUucHkKIEBAIC0wLDAgKzEsNDcgQEAKICsjIEluLXNjb3BlIGZ1bmN0 aW9uLgogKwpAQCAtNzExNCwyMCArODE2NiwyMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvcHl0aG9uL2xpYi9nZGIvZnVuY3Rpb24vaW5fc2NvcGUucHkKICsJcmV0dXJuIHdhbnRl ZCA9PSBmb3VuZAogKwogK0luU2NvcGUgKCkKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi9weXRob24vcHktdHlwZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5v cmlnL2dkYi9weXRob24vcHktdHlwZS5jCTIwMTEtMDYtMjQgMjE6NDc6MzcuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwkyMDExLTA3 LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTI5LDYgKzI5LDggQEAKLSAjaW5jbHVk ZSAibGFuZ3VhZ2UuaCIKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXR5cGUuYyBiL2dkYi9w eXRob24vcHktdHlwZS5jCitpbmRleCA1MGY5YjcyLi43NTRkNDUxIDEwMDY0NAorLS0tIGEvZ2Ri L3B5dGhvbi9weS10eXBlLmMKKysrKyBiL2dkYi9weXRob24vcHktdHlwZS5jCitAQCAtMzAsNiAr MzAsOCBAQAogICNpbmNsdWRlICJ2ZWMuaCIKICAjaW5jbHVkZSAiYmNhY2hlLmgiCisgI2luY2x1 ZGUgImR3YXJmMmxvYy5oIgogKyNpbmNsdWRlICJvYnNlcnZlci5oIgogKyNpbmNsdWRlICJnZGJf YXNzZXJ0LmgiCiAgCiAgdHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdAogIHsKLUBAIC0z NywxMSArMzksMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgcHl0eV90eXBlX29iamVjdAorQEAgLTM4LDEx ICs0MCwxOSBAQCB0eXBlZGVmIHN0cnVjdCBweXR5X3R5cGVfb2JqZWN0CiAgCiAgICAvKiBJZiBh IFR5cGUgb2JqZWN0IGlzIGFzc29jaWF0ZWQgd2l0aCBhbiBvYmpmaWxlLCBpdCBpcyBrZXB0IG9u IGEKICAgICAgIGRvdWJseS1saW5rZWQgbGlzdCwgcm9vdGVkIGluIHRoZSBvYmpmaWxlLiAgVGhp cyBsZXRzIHVzIGNvcHkgdGhlCkBAIC03MTQ4LDcgKzgyMDAsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwogIHN0YXRpYyBQeVR5cGVPYmplY3QgdHlw ZV9vYmplY3RfdHlwZTsKICAKICAvKiBBIEZpZWxkIG9iamVjdC4gICovCi1AQCAtOTE5LDggKzky OSw2MyBAQCB0eXB5X3JpY2hjb21wYXJlIChQeU9iamVjdCAqc2VsZiwgUHlPYmplCitAQCAtMTE1 MCw4ICsxMTYwLDYzIEBAIHR5cHlfcmljaGNvbXBhcmUgKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVj dCAqb3RoZXIsIGludCBvcCkKICAKICAMCiAgCkBAIC03MjEyLDcgKzgyNjQsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwogIHN0YXRpYyB2b2lkCiAg c2F2ZV9vYmpmaWxlX3R5cGVzIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwgdm9pZCAqZGF0dW0p CiAgewotQEAgLTkzOCwxMiArMTAwMywxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMgKHN0cnVjdCBv YmpmaWxlICpvYmpmCitAQCAtMTE2OSwxMiArMTIzNCwxMyBAQCBzYXZlX29iamZpbGVfdHlwZXMg KHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLCB2b2lkICpkYXR1bSkKICAgICAgewogICAgICAgIHR5 cGVfb2JqZWN0ICpuZXh0ID0gb2JqLT5uZXh0OwogIApAQCAtNzIzMCw3ICs4MjgyLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS10eXBlLmMKICAKICAgICAgICBv YmogPSBuZXh0OwogICAgICB9Ci1AQCAtOTU0LDQzICsxMDIwLDI4IEBAIHNhdmVfb2JqZmlsZV90 eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamYKK0BAIC0xMTg1LDQzICsxMjUxLDI4IEBAIHNhdmVf b2JqZmlsZV90eXBlcyAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsIHZvaWQgKmRhdHVtKQogIH0K ICAKICBzdGF0aWMgdm9pZApAQCAtNzI0Miw3ICs4Mjk0LDggQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3B5dGhvbi9weS10eXBlLmMKIC0gIGlmICh0eXBlICYmIFRZUEVfT0JKRklM RSAodHlwZSkpCiAtICAgIHsKIC0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9IFRZUEVf T0JKRklMRSAodHlwZSk7Ci0tCisrICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmpl Y3QgKikgb2JqOworIAogLSAgICAgIG9iai0+bmV4dCA9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwg dHlweV9vYmpmaWxlX2RhdGFfa2V5KTsKIC0gICAgICBpZiAob2JqLT5uZXh0KQogLQlvYmotPm5l eHQtPnByZXYgPSBvYmo7CkBAIC03MjUwLDggKzgzMDMsNiBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUuYwogLSAgICB9CiAtICBlbHNlCiAtICAgIG9iai0+ bmV4dCA9IE5VTEw7Ci0rICB0eXBlX29iamVjdCAqdHlwZV9vYmogPSAodHlwZV9vYmplY3QgKikg b2JqOwotKwogKyAgdHlweV91bmxpbmsgKHR5cGVfb2JqKTsKICsKICsgIHR5cGVfb2JqLT5vYl90 eXBlLT50cF9mcmVlIChvYmopOwpAQCAtNzI4Nyw5ICs4MzM4LDkgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weS10eXBlLmMKICB9CiArI2VuZGlmCiAgCi0gLyogQ3Jl YXRlIGEgbmV3IFR5cGUgcmVmZXJyaW5nIHRvIFRZUEUuICAqLwotIFB5T2JqZWN0ICoKLUBAIC0x MDAwLDcgKzEwNTEsMTAgQEAgdHlwZV90b190eXBlX29iamVjdCAoc3RydWN0IHR5cGUgKnR5cGUp CisgLyogUmV0dXJuIG51bWJlciBvZiBmaWVsZHMgKCJsZW5ndGgiIG9mIHRoZSBmaWVsZCBkaWN0 aW9uYXJ5KS4gICovCisgCitAQCAtMTQ0NCw3ICsxNDk1LDEwIEBAIHR5cGVfdG9fdHlwZV9vYmpl Y3QgKHN0cnVjdCB0eXBlICp0eXBlKQogIAogICAgdHlwZV9vYmogPSBQeU9iamVjdF9OZXcgKHR5 cGVfb2JqZWN0LCAmdHlwZV9vYmplY3RfdHlwZSk7CiAgICBpZiAodHlwZV9vYmopCkBAIC03MzAx LDcgKzgzNTIsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5 cGUuYwogIAogICAgcmV0dXJuIChQeU9iamVjdCAqKSB0eXBlX29iajsKICB9Ci1AQCAtMTA3NCw2 ICsxMTI4LDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCitAQCAtMTUyNCw2ICsx NTc4LDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdHlwZXMgKHZvaWQpCiAgCiAgICBQeV9JTkNSRUYg KCZmaWVsZF9vYmplY3RfdHlwZSk7CiAgICBQeU1vZHVsZV9BZGRPYmplY3QgKGdkYl9tb2R1bGUs ICJGaWVsZCIsIChQeU9iamVjdCAqKSAmZmllbGRfb2JqZWN0X3R5cGUpOwpAQCAtNzMxMiwxMCAr ODM2MywxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXR5cGUu YwogIH0KICAKICAMCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXZh bHVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhv bi9weS12YWx1ZS5jCTIwMTEtMDYtMjcgMjE6MjE6NTEuMDAwMDAwMDAwICswMjAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5LXZhbHVlLmMJMjAxMS0wNy0yOSAyMjo1Mjow Mi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMgYi9n ZGIvcHl0aG9uL3B5LXZhbHVlLmMKK2luZGV4IDA0ZTM1NWEuLmE3ZDU5MmEgMTAwNjQ0CistLS0g YS9nZGIvcHl0aG9uL3B5LXZhbHVlLmMKKysrKyBiL2dkYi9weXRob24vcHktdmFsdWUuYwogQEAg LTI4LDYgKzI4LDcgQEAKICAjaW5jbHVkZSAiaW5mY2FsbC5oIgogICNpbmNsdWRlICJleHByZXNz aW9uLmgiCkBAIC03MzI0LDcgKzgzNzUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvcHl0aG9uL3B5LXZhbHVlLmMKICAKICAjaWZkZWYgSEFWRV9QWVRIT04KICAKLUBAIC0xMjA4 LDYgKzEyMDksMTkgQEAgZ2RicHlfaXNfdmFsdWVfb2JqZWN0IChQeU9iamVjdCAqb2JqKQorQEAg LTEyODEsNiArMTI4MiwxOSBAQCBnZGJweV9pc192YWx1ZV9vYmplY3QgKFB5T2JqZWN0ICpvYmop CiAgICByZXR1cm4gUHlPYmplY3RfVHlwZUNoZWNrIChvYmosICZ2YWx1ZV9vYmplY3RfdHlwZSk7 CiAgfQogIApAQCAtNzM0NCw3ICs4Mzk1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3B5dGhvbi9weS12YWx1ZS5jCiAgdm9pZAogIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2 b2lkKQogIHsKLUBAIC0xMjE4LDYgKzEyMzIsMTAgQEAgZ2RicHlfaW5pdGlhbGl6ZV92YWx1ZXMg KHZvaWQpCitAQCAtMTI5MSw2ICsxMzA1LDEwIEBAIGdkYnB5X2luaXRpYWxpemVfdmFsdWVzICh2 b2lkKQogICAgUHlNb2R1bGVfQWRkT2JqZWN0IChnZGJfbW9kdWxlLCAiVmFsdWUiLCAoUHlPYmpl Y3QgKikgJnZhbHVlX29iamVjdF90eXBlKTsKICAKICAgIHZhbHVlc19pbl9weXRob24gPSBOVUxM OwpAQCAtNzM1NSwxMSArODQwNiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv cHl0aG9uL3B5LXZhbHVlLmMKICB9CiAgCiAgDAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3B5dGhvbi9weXRob24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTEtMDctMjEgMTM6MDM6NDcuMDAwMDAwMDAwICsw MjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTEtMDct MjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDksOSArNDksMTIgQEAgc3RhdGljIGlu dCBnZGJweV9zaG91bGRfcHJpbnRfc3RhY2sgPSAwOworZGlmZiAtLWdpdCBhL2dkYi9weXRob24v cHl0aG9uLmMgYi9nZGIvcHl0aG9uL3B5dGhvbi5jCitpbmRleCAxM2FjMTVlLi4wZGI0MWVlIDEw MDY0NAorLS0tIGEvZ2RiL3B5dGhvbi9weXRob24uYworKysrIGIvZ2RiL3B5dGhvbi9weXRob24u YworQEAgLTY2LDEwICs2NiwxMyBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2RicHlfc2hvdWxkX3By aW50X3N0YWNrID0gcHl0aG9uX2V4Y3BfbWVzc2FnZTsKICAjaW5jbHVkZSAibGluZXNwZWMuaCIK ICAjaW5jbHVkZSAic291cmNlLmgiCiAgI2luY2x1ZGUgInZlcnNpb24uaCIKQEAgLTczNjgsMTEg Kzg0MTksMTIgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3B5dGhvbi9weXRob24u YwogICNpbmNsdWRlICJ0YXJnZXQuaCIKICAjaW5jbHVkZSAiZ2RidGhyZWFkLmgiCiAgI2luY2x1 ZGUgIm9ic2VydmVyLmgiCisgI2luY2x1ZGUgImludGVycHMuaCIKICsjaW5jbHVkZSAiZXZlbnQt dG9wLmgiCiAgCiAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXTsKICAKLUBAIC04NDks NiArODUyLDUzIEBAIGdkYnB5X3ByaW50X3N0YWNrICh2b2lkKQorQEAgLTk0Niw2ICs5NDksNTMg QEAgZ2RicHlfcHJpbnRfc3RhY2sgKHZvaWQpCiAgCiAgLyogUmV0dXJuIHRoZSBjdXJyZW50IFBy b2dzcGFjZS4KICAgICBUaGVyZSBhbHdheXMgaXMgb25lLiAgKi8KQEAgLTc0MjQsMzUgKzg0NzYs MjE1IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHl0aG9uLmMKICsM CiArCiAgCi0gc3RhdGljIFB5T2JqZWN0ICoKLSBnZGJweV9nZXRfY3VycmVudF9wcm9nc3BhY2Ug KFB5T2JqZWN0ICp1bnVzZWQxLCBQeU9iamVjdCAqdW51c2VkMikKLUBAIC0xMzMzLDYgKzEzODMs OCBAQCBzdGF0aWMgUHlNZXRob2REZWYgR2RiTWV0aG9kc1tdID0KLSAgICAgIkdldCBhIHZhbHVl IGZyb20gaGlzdG9yeSIgfSwKLSAgIHsgImV4ZWN1dGUiLCAoUHlDRnVuY3Rpb24pIGV4ZWN1dGVf Z2RiX2NvbW1hbmQsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgICJFeGVjdXRl IGEgZ2RiIGNvbW1hbmQiIH0sCi0rICB7ICJjbGkiLCBnZGJweV9jbGksIE1FVEhfTk9BUkdTLAot KyAgICAiRW50ZXIgdGhlIGdkYiBDTEkiIH0sCi0gICB7ICJwYXJhbWV0ZXIiLCBnZGJweV9wYXJh bWV0ZXIsIE1FVEhfVkFSQVJHUywKLSAgICAgIlJldHVybiBhIGdkYiBwYXJhbWV0ZXIncyB2YWx1 ZSIgfSwKLSAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9weXRob24vcHl0aG9uLmgK LT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3B5dGhvbi9weXRo b24uaAkyMDExLTAzLTE0IDE3OjA5OjU0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3B5dGhvbi9weXRob24uaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAw MCArMDIwMAotQEAgLTMyLDYgKzMyLDggQEAgdm9pZCBldmFsX3B5dGhvbl9mcm9tX2NvbnRyb2xf Y29tbWFuZCAocworIHN0YXRpYyBQeU9iamVjdCAqCisgZ2RicHlfZ2V0X2N1cnJlbnRfcHJvZ3Nw YWNlIChQeU9iamVjdCAqdW51c2VkMSwgUHlPYmplY3QgKnVudXNlZDIpCitAQCAtMTM4Myw2ICsx NDMzLDggQEAgc3RhdGljIFB5TWV0aG9kRGVmIEdkYk1ldGhvZHNbXSA9CisgICAgICJHZXQgYSB2 YWx1ZSBmcm9tIGhpc3RvcnkiIH0sCisgICB7ICJleGVjdXRlIiwgKFB5Q0Z1bmN0aW9uKSBleGVj dXRlX2dkYl9jb21tYW5kLCBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLAorICAgICAiRXhl Y3V0ZSBhIGdkYiBjb21tYW5kIiB9LAorKyAgeyAiY2xpIiwgZ2RicHlfY2xpLCBNRVRIX05PQVJH UywKKysgICAgIkVudGVyIHRoZSBnZGIgQ0xJIiB9LAorICAgeyAicGFyYW1ldGVyIiwgZ2RicHlf cGFyYW1ldGVyLCBNRVRIX1ZBUkFSR1MsCisgICAgICJSZXR1cm4gYSBnZGIgcGFyYW1ldGVyJ3Mg dmFsdWUiIH0sCisgCitkaWZmIC0tZ2l0IGEvZ2RiL3B5dGhvbi9weXRob24uaCBiL2dkYi9weXRo b24vcHl0aG9uLmgKK2luZGV4IGFlNTVjYzIuLjg4MDg4NjYgMTAwNjQ0CistLS0gYS9nZGIvcHl0 aG9uL3B5dGhvbi5oCisrKysgYi9nZGIvcHl0aG9uL3B5dGhvbi5oCitAQCAtMzIsNiArMzIsOCBA QCB2b2lkIGV2YWxfcHl0aG9uX2Zyb21fY29udHJvbF9jb21tYW5kIChzdHJ1Y3QgY29tbWFuZF9s aW5lICopOworIAorIHZvaWQgc291cmNlX3B5dGhvbl9zY3JpcHQgKGNvbnN0IGNoYXIgKmZpbGUp OworIAorK3ZvaWQgcnVuX3B5dGhvbl9zY3JpcHQgKGludCBhcmdjLCBjaGFyICoqYXJndik7Cisr CisgaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLAorIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVf QUREUiBhZGRyZXNzLAorIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1 cnNlLAorZGlmZiAtLWdpdCBhL2dkYi9yZW1vdGUuYyBiL2dkYi9yZW1vdGUuYworaW5kZXggOWJm ZWJkMi4uNDRhZWFhZSAxMDA2NDQKKy0tLSBhL2dkYi9yZW1vdGUuYworKysrIGIvZ2RiL3JlbW90 ZS5jCitAQCAtOTg4Niw3ICs5ODg2LDcgQEAgcmVtb3RlX2Rvd25sb2FkX3RyYWNlcG9pbnQgKHN0 cnVjdCBicF9sb2NhdGlvbiAqbG9jKQorICAgY2hhciAqKnN0ZXBwaW5nX2FjdGlvbnM7CisgICBp bnQgbmR4OworICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7CistICBzdHJ1Y3Qg YWdlbnRfZXhwciAqYWV4cHI7CisrICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHIgPSBOVUxMOwor ICAgc3RydWN0IGNsZWFudXAgKmFleHByX2NoYWluID0gTlVMTDsKKyAgIGNoYXIgKnBrdDsKKyAg IHN0cnVjdCBicmVha3BvaW50ICpiID0gbG9jLT5vd25lcjsKK2RpZmYgLS1naXQgYS9nZGIvczM5 MC1uYXQuYyBiL2dkYi9zMzkwLW5hdC5jCitpbmRleCA2MzgxNjc1Li44ODM2MjBjIDEwMDY0NAor LS0tIGEvZ2RiL3MzOTAtbmF0LmMKKysrKyBiL2dkYi9zMzkwLW5hdC5jCitAQCAtNDM4LDExICs0 MzgsMzYgQEAgc3RydWN0IHdhdGNoX2FyZWEKKyAgIENPUkVfQUREUiBoaV9hZGRyOworIH07Cisg Cistc3RhdGljIHN0cnVjdCB3YXRjaF9hcmVhICp3YXRjaF9iYXNlID0gTlVMTDsKKysvKiBQZXIt aW5mZXJpb3IgZGF0YSBrZXkuICAqLworKworK3N0cnVjdCBzMzkwX2luZmVyaW9yX2RhdGEKKysg IHsKKysgICAgc3RydWN0IHdhdGNoX2FyZWEgKndhdGNoX2Jhc2U7CisrICB9OworKworK3N0YXRp YyBzdHJ1Y3QgczM5MF9pbmZlcmlvcl9kYXRhICoKKytzMzkwX2luZmVyaW9yX2RhdGFfZ2V0ICh2 b2lkKQorK3sKKysgIC8qIEludGVybWVkaWF0ZSBwYXRjaCBzdHViLiAgKi8KKysgIHN0YXRpYyBz dHJ1Y3QgaTM4Nl9pbmZlcmlvcl9kYXRhIGluZl9kYXRhX2xvY2FsOworKyAgc3RydWN0IGluZmVy aW9yICppbmYgPSBjdXJyZW50X2luZmVyaW9yICgpOworKyAgc3RydWN0IGkzODZfaW5mZXJpb3Jf ZGF0YSAqaW5mX2RhdGEgPSAmaW5mX2RhdGFfbG9jYWw7CisrCisrICByZXR1cm4gaW5mLT5waWQg PT0gcHRpZF9nZXRfcGlkIChpbmZlcmlvcl9wdGlkKSA/IGluZl9kYXRhIDogTlVMTDsKKyt9Cisr Cisrc3RhdGljIHN0cnVjdCB3YXRjaF9hcmVhICoKKytzMzkwX3dhdGNoX2Jhc2VfZ2V0ICh2b2lk KQorK3sKKysgIHN0cnVjdCBzMzkwX2luZmVyaW9yX2RhdGEgKmluZmVyaW9yX2RhdGEgPSBzMzkw X2luZmVyaW9yX2RhdGFfZ2V0ICgpOworKworKyAgcmV0dXJuIGluZmVyaW9yX2RhdGEgPyBpbmZl cmlvcl9kYXRhLT53YXRjaF9iYXNlIDogTlVMTDsKKyt9CisgCisgc3RhdGljIGludAorIHMzOTBf c3RvcHBlZF9ieV93YXRjaHBvaW50ICh2b2lkKQorIHsKKysgIHN0cnVjdCB3YXRjaF9hcmVhICp3 YXRjaF9iYXNlID0gczM5MF93YXRjaF9iYXNlX2dldCAoKTsKKyAgIHBlcl9sb3djb3JlX2JpdHMg cGVyX2xvd2NvcmU7CisgICBwdHJhY2VfYXJlYSBwYXJlYTsKKyAgIGludCByZXN1bHQ7CitAQCAt NDcxLDkgKzQ5NiwxMyBAQCBzMzkwX3N0b3BwZWRfYnlfd2F0Y2hwb2ludCAodm9pZCkKKyAgIHJl dHVybiByZXN1bHQ7CisgfQorIAorKy8qIFVwZGF0ZSBoYXJkd2FyZSByZWdpc3RlcnMgb2YgdGhp cyBzcGVjaWZpYyBMUC4gIExQIG11c3QgYmVsb25nIHRvCisrICAgQ1VSUkVOVF9JTkZFUklPUi4g ICovCisrCisgc3RhdGljIHZvaWQKKyBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKHN0cnVjdCBsd3Bf aW5mbyAqbHApCisgeworKyAgc3RydWN0IHdhdGNoX2FyZWEgKndhdGNoX2Jhc2U7CisgICBpbnQg dGlkOworIAorICAgcGVyX3N0cnVjdCBwZXJfaW5mbzsKK0BAIC00ODIsOSArNTExLDIwIEBAIHMz OTBfZml4X3dhdGNoX3BvaW50cyAoc3RydWN0IGx3cF9pbmZvICpscCkKKyAgIENPUkVfQUREUiB3 YXRjaF9sb19hZGRyID0gKENPUkVfQUREUiktMSwgd2F0Y2hfaGlfYWRkciA9IDA7CisgICBzdHJ1 Y3Qgd2F0Y2hfYXJlYSAqYXJlYTsKKyAKKy0gIHRpZCA9IFRJREdFVCAobHAtPnB0aWQpOworLSAg aWYgKHRpZCA9PSAwKQorLSAgICB0aWQgPSBQSURHRVQgKGxwLT5wdGlkKTsKKysgIGdkYl9hc3Nl cnQgKGxwID09IE5VTEwgfHwgY3VycmVudF9pbmZlcmlvciAoKS0+cGlkID09IFBJREdFVCAobHAt PnB0aWQpKTsKKysKKysgIGlmIChscCA9PSBOVUxMKQorKyAgICB7CisrICAgICAgdGlkID0gUElE R0VUIChpbmZlcmlvcl9wdGlkKTsKKysgICAgICB3YXRjaF9iYXNlID0gTlVMTDsKKysgICAgfQor KyAgZWxzZQorKyAgICB7CisrICAgICAgdGlkID0gVElER0VUIChscC0+cHRpZCk7CisrICAgICAg aWYgKHRpZCA9PSAwKQorKwl0aWQgPSBQSURHRVQgKGxwLT5wdGlkKTsKKysgICAgICB3YXRjaF9i YXNlID0gczM5MF93YXRjaF9iYXNlX2dldCAoKTsKKysgICAgfQorIAorICAgZm9yIChhcmVhID0g d2F0Y2hfYmFzZTsgYXJlYTsgYXJlYSA9IGFyZWEtPm5leHQpCisgICAgIHsKK0BAIC01MTUsNiAr NTU1LDE4IEBAIHMzOTBfZml4X3dhdGNoX3BvaW50cyAoc3RydWN0IGx3cF9pbmZvICpscCkKKyAg ICAgcGVycm9yX3dpdGhfbmFtZSAoXygiQ291bGRuJ3QgbW9kaWZ5IHdhdGNocG9pbnQgc3RhdHVz IikpOworIH0KKyAKKysvKiBDYWxsYmFjayBmb3IgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2lu dF9sd3BzLAorKyAgIHRvIGNhbGwgczM5MF9maXhfd2F0Y2hfcG9pbnRzLiAgKi8KKysKKytzdGF0 aWMgaW50CisrczM5MF9maXhfd2F0Y2hfcG9pbnRzX2l0ZXJhdGUgKHN0cnVjdCBsd3BfaW5mbyAq bHAsIHZvaWQgKmFyZykKKyt7CisrICBzMzkwX2ZpeF93YXRjaF9wb2ludHMgKGxwKTsKKysKKysg IC8qIENvbnRpbnVlIHRoZSB0cmF2ZXJzYWwuICAqLworKyAgcmV0dXJuIDA7CisrfQorKworIHN0 YXRpYyBpbnQKKyBzMzkwX2luc2VydF93YXRjaHBvaW50IChDT1JFX0FERFIgYWRkciwgaW50IGxl biwgaW50IHR5cGUsCisgCQkJc3RydWN0IGV4cHJlc3Npb24gKmNvbmQpCitAQCAtNTMxLDggKzU4 Myw4IEBAIHMzOTBfaW5zZXJ0X3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuLCBp bnQgdHlwZSwKKyAgIGFyZWEtPm5leHQgPSB3YXRjaF9iYXNlOworICAgd2F0Y2hfYmFzZSA9IGFy ZWE7CisgCistICBBTExfTFdQUyAobHApCistICAgIHMzOTBfZml4X3dhdGNoX3BvaW50cyAobHAp OworKyAgbGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzMzkwX2ZpeF93YXRjaF9w b2ludHNfaXRlcmF0ZSwgTlVMTCk7CisrCisgICByZXR1cm4gMDsKKyB9CisgCitAQCAtNTU5LDgg KzYxMSw4IEBAIHMzOTBfcmVtb3ZlX3dhdGNocG9pbnQgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVu LCBpbnQgdHlwZSwKKyAgICpwYXJlYSA9IGFyZWEtPm5leHQ7CisgICB4ZnJlZSAoYXJlYSk7Cisg CistICBBTExfTFdQUyAobHApCistICAgIHMzOTBfZml4X3dhdGNoX3BvaW50cyAobHApOworKyAg bGludXhfbmF0X2l0ZXJhdGVfd2F0Y2hwb2ludF9sd3BzIChzMzkwX2ZpeF93YXRjaF9wb2ludHNf aXRlcmF0ZSwgTlVMTCk7CisrCisgICByZXR1cm4gMDsKKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2Ri L3MzOTAtdGRlcC5jIGIvZ2RiL3MzOTAtdGRlcC5jCitpbmRleCBjZDBlZjljLi44NTgzMDUxIDEw MDY0NAorLS0tIGEvZ2RiL3MzOTAtdGRlcC5jCisrKysgYi9nZGIvczM5MC10ZGVwLmMKK0BAIC01 Niw2ICs1NiwxMiBAQAorICNpbmNsdWRlICJmZWF0dXJlcy9zMzkweC1saW51eDY0djEuYyIKKyAj aW5jbHVkZSAiZmVhdHVyZXMvczM5MHgtbGludXg2NHYyLmMiCisgCisrI2luY2x1ZGUgInN0YXAt cHJvYmUuaCIKKysjaW5jbHVkZSAiYXguaCIKKysjaW5jbHVkZSAiYXgtZ2RiLmgiCisrI2luY2x1 ZGUgInVzZXItcmVncy5oIgorKyNpbmNsdWRlICJjbGkvY2xpLXV0aWxzLmgiCisrI2luY2x1ZGUg PGN0eXBlLmg+CisgCisgLyogVGhlIHRkZXAgc3RydWN0dXJlLiAgKi8KKyAKK0BAIC0yOTU0LDYg KzI5NjAsMTUgQEAgczM5MF9hZGRyZXNzX2NsYXNzX25hbWVfdG9fdHlwZV9mbGFncyAoc3RydWN0 IGdkYmFyY2ggKmdkYmFyY2gsCisgICAgIHJldHVybiAwOworIH0KKyAKKytzdGF0aWMgaW50Cisr czM5MF9zdGFwX2lzX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwgY29u c3QgY2hhciAqcykKKyt7CisrICByZXR1cm4gKChpc2RpZ2l0ICgqcykgJiYgc1sxXSA9PSAnKCcg JiYgc1syXSA9PSAnJScpIC8qIERpc3BsYWNlbWVudAorKwkJCQkJCQkgIG9yIGluZGlyZWN0aW9u LiAgKi8KKysJICB8fCAqcyA9PSAnJScgLyogUmVnaXN0ZXIgYWNjZXNzLiAgKi8KKysJICB8fCBp c2RpZ2l0ICgqcykpOyAvKiBMaXRlcmFsIG51bWJlci4gICovCisrfQorKworIC8qIFNldCB1cCBn ZGJhcmNoIHN0cnVjdC4gICovCisgCisgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKK0BAIC0zMjg0 LDYgKzMyOTksMTIgQEAgczM5MF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5m bywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQogIAotIHZvaWQgc291cmNlX3B5dGhvbl9z Y3JpcHQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqZmlsZSk7CisgICBzZXRfZ2RiYXJjaF9n ZXRfc2lnaW5mb190eXBlIChnZGJhcmNoLCBsaW51eF9nZXRfc2lnaW5mb190eXBlKTsKICAKLSt2 b2lkIHJ1bl9weXRob25fc2NyaXB0IChpbnQgYXJnYywgY2hhciAqKmFyZ3YpOworKyAgLyogU3lz dGVtVGFwIGZ1bmN0aW9ucy4gICovCisrICBzZXRfZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3ByZWZp eCAoZ2RiYXJjaCwgIiUiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rp b25fcHJlZml4IChnZGJhcmNoLCAiKCIpOworKyAgc2V0X2dkYmFyY2hfc3RhcF9yZWdpc3Rlcl9p bmRpcmVjdGlvbl9zdWZpeCAoZ2RiYXJjaCwgIikiKTsKKysgIHNldF9nZGJhcmNoX3N0YXBfaXNf c2luZ2xlX29wZXJhbmQgKGdkYmFyY2gsIHMzOTBfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCk7CiAr Ci0gaW50IGFwcGx5X3ZhbF9wcmV0dHlfcHJpbnRlciAoc3RydWN0IHR5cGUgKnR5cGUsIGNvbnN0 IGdkYl9ieXRlICp2YWxhZGRyLAotIAkJCSAgICAgIGludCBlbWJlZGRlZF9vZmZzZXQsIENPUkVf QUREUiBhZGRyZXNzLAotIAkJCSAgICAgIHN0cnVjdCB1aV9maWxlICpzdHJlYW0sIGludCByZWN1 cnNlLAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3NvbXJlYWQuYwotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc29tcmVhZC5jCTIwMTEtMDMtMDcg MTc6MTc6MjkuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29t cmVhZC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDM5LDYgKzQz OSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgc3ltX2ZucyBzb21fc3ltX2ZucworICAgcmV0dXJu IGdkYmFyY2g7CisgfQorIAorZGlmZiAtLWdpdCBhL2dkYi9zb21yZWFkLmMgYi9nZGIvc29tcmVh ZC5jCitpbmRleCA3MGZjM2EzLi5lNWM4YzlmIDEwMDY0NAorLS0tIGEvZ2RiL3NvbXJlYWQuYwor KysrIGIvZ2RiL3NvbXJlYWQuYworQEAgLTQyNyw2ICs0MjcsNyBAQCBzdGF0aWMgY29uc3Qgc3Ry dWN0IHN5bV9mbnMgc29tX3N5bV9mbnMgPQogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkv KiBHZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBOVUxMLAogICAg ZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVnIHNlY3Rpb24uICAq LwpAQCAtNzQ2MCwzNyArODY5MiwyNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c29tcmVhZC5jCiAgICAmcHN5bV9mdW5jdGlvbnMKICB9OwogIAotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3N0YWNrLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIy Lm9yaWcvZ2RiL3N0YWNrLmMJMjAxMS0wNi0yNyAyMToyMTo1MC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFjay5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAw MDAwMDAwICswMjAwCi1AQCAtMzY2LDYgKzM2Niw3IEBAIHByaW50X2ZyYW1lX2FyZ3MgKHN0cnVj dCBzeW1ib2wgKmZ1bmMsIHMKLSAJICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgY29uc3Qg c3RydWN0IGxhbmd1YWdlX2RlZm4gKmxhbmd1YWdlOwotIAkJICBzdHJ1Y3QgdmFsdWVfcHJpbnRf b3B0aW9ucyBvcHRzOwotKwkJICBzdHJ1Y3QgY2xlYW51cCAqb2xkX2NoYWluOwotIAotICAgICAg ICAgICAgICAgICAgIC8qIFVzZSB0aGUgYXBwcm9wcmlhdGUgbGFuZ3VhZ2UgdG8gZGlzcGxheSBv dXIgc3ltYm9sLAotICAgICAgICAgICAgICAgICAgICAgIHVubGVzcyB0aGUgdXNlciBmb3JjZWQg dGhlIGxhbmd1YWdlIHRvIGEgc3BlY2lmaWMKLUBAIC0zNzgsNyArMzc5LDEzIEBAIHByaW50X2Zy YW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHMKLSAJCSAgZ2V0X3Jhd19wcmludF9vcHRp b25zICgmb3B0cyk7Ci0gCQkgIG9wdHMuZGVyZWZfcmVmID0gMDsKLSAJCSAgb3B0cy5zdW1tYXJ5 ID0gc3VtbWFyeTsKLSsKLSsJCSAgLyogRnJhbWUgbWF5IGJlIG5lZWRlZCBmb3IgY2hlY2tfdHlw ZWRlZiBvZiBUWVBFX0RZTkFNSUMuICAqLwotKwkJICBvbGRfY2hhaW4gPSBtYWtlX2NsZWFudXBf cmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsKLSsJCSAgc2VsZWN0X2ZyYW1lIChmcmFtZSk7Ci0g CQkgIGNvbW1vbl92YWxfcHJpbnQgKHZhbCwgc3RiLT5zdHJlYW0sIDIsICZvcHRzLCBsYW5ndWFn ZSk7Ci0rCQkgIGRvX2NsZWFudXBzIChvbGRfY2hhaW4pOwotKwotIAkJICB1aV9vdXRfZmllbGRf c3RyZWFtICh1aW91dCwgInZhbHVlIiwgc3RiKTsKLSAJICAgICAgICB9Ci0gCSAgICAgIGVsc2UK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKLT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4w MDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMjA0MiBAQAorZGlmZiAtLWdpdCBhL2dkYi9zdGFj ay5jIGIvZ2RiL3N0YWNrLmMKK2luZGV4IGM1YzU0ZGIuLjlmYzNiNzQgMTAwNjQ0CistLS0gYS9n ZGIvc3RhY2suYworKysrIGIvZ2RiL3N0YWNrLmMKK0BAIC01MTEsNiArNTExLDEwIEBAIHByaW50 X2ZyYW1lX2FyZ3MgKHN0cnVjdCBzeW1ib2wgKmZ1bmMsIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFt ZSwKKyAgIHN0YiA9IHVpX291dF9zdHJlYW1fbmV3ICh1aW91dCk7CisgICBvbGRfY2hhaW4gPSBt YWtlX2NsZWFudXBfdWlfb3V0X3N0cmVhbV9kZWxldGUgKHN0Yik7CisgCisrICAvKiBGcmFtZSBt YXkgYmUgbmVlZGVkIGZvciBjaGVja190eXBlZGVmIG9mIFRZUEVfRFlOQU1JQy4gICovCisrICBt YWtlX2NsZWFudXBfcmVzdG9yZV9zZWxlY3RlZF9mcmFtZSAoKTsKKysgIHNlbGVjdF9mcmFtZSAo ZnJhbWUpOworKworICAgaWYgKGZ1bmMpCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgYmxvY2sgKmIg PSBTWU1CT0xfQkxPQ0tfVkFMVUUgKGZ1bmMpOworZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXByb2Jl LmMgYi9nZGIvc3RhcC1wcm9iZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAw MC4uNzRmZDllOQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3N0YXAtcHJvYmUuYworQEAgLTAs MCArMSwxNjcxIEBACiArLyogU3lzdGVtVGFwIHByb2JlIHN1cHBvcnQgZm9yIEdEQi4KICsKICsg ICBDb3B5cmlnaHQgKEMpIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC03 NTE4LDIzICs4NzQwLDMwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXBy b2JlLmMKICsjaW5jbHVkZSAib2JqZmlsZXMuaCIKICsjaW5jbHVkZSAiYXJjaC11dGlscy5oIgog KyNpbmNsdWRlICJjb21tYW5kLmgiCisrI2luY2x1ZGUgImdkYmNtZC5oIgogKyNpbmNsdWRlICJm aWxlbmFtZXMuaCIKICsjaW5jbHVkZSAidmFsdWUuaCIKICsjaW5jbHVkZSAiZXhjZXB0aW9ucy5o IgogKyNpbmNsdWRlICJheC5oIgogKyNpbmNsdWRlICJheC1nZGIuaCIKLSsjaW5jbHVkZSAidXNl ci1yZWdzLmgiCiArI2luY2x1ZGUgImNvbXBsYWludHMuaCIKICsjaW5jbHVkZSAiY2xpL2NsaS11 dGlscy5oIgogKyNpbmNsdWRlICJsaW5lc3BlYy5oIgorKyNpbmNsdWRlICJ1c2VyLXJlZ3MuaCIK KysjaW5jbHVkZSAicGFyc2VyLWRlZnMuaCIKKysjaW5jbHVkZSAibGFuZ3VhZ2UuaCIKICsKICsj aW5jbHVkZSA8Y3R5cGUuaD4KICsKLSsvKiBUaGlzIGRlZmluZSBpcyB1c2VkIHRvIGluZm9ybSB3 aGV0aGVyIHdlIGFyZSBjb21waWxpbmcgYW4gYWdlbnQKLSsgICBleHByZXNzaW9uIG9yIG5vdC4g ICovCisrLyogVGhlIG1heGltdW0gbnVtYmVyIG9mIGFyZ3VtZW50cyB0aGF0IGEgcHJvYmUgY2Fu IGhhdmUsCisrICAgYXMgZGVmaW5lZCBpbiA8c3lzL3NkdC5oPi4gICovCisrCisrI2RlZmluZSBT VEFQX01BWF9BUkdTIDEyCisrCisrLyogU2hvdWxkIHdlIGRpc3BsYXkgZGVidWcgaW5mb3JtYXRp b24gZm9yIHRoZSBwcm9iZSdzIGFyZ3VtZW50IGV4cHJlc3Npb24KKysgICBwYXJzaW5nPyAgKi8K ICsKLSsjZGVmaW5lIFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUChldmFsX2luZm8pIFwKLSsg IChldmFsX2luZm8tPmFleHByICE9IE5VTEwpCisrc3RhdGljIGludCBzdGFwX2V4cHJlc3Npb25f ZGVidWcgPSAwOwogKwogKy8qIFRoZSB2YXJpb3VzIHBvc3NpYmlsaXRpZXMgb2YgYml0bmVzcyBk ZWZpbmVkIGZvciBhIHByb2JlJ3MgYXJndW1lbnQuCiArCkBAIC03NTYyLDE0ICs4NzkxLDEyIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIC8qIFRoZSBi aXRuZXNzIG9mIHRoaXMgYXJndW1lbnQuICAqLwogKyAgZW51bSBzdGFwX2FyZ19iaXRuZXNzIGJp dG5lc3M7CiArCi0rICAvKiBUaGUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGlzIGFyZ3VtZW50LiAg Ki8KLSsgIGNoYXIgKmFyZ19zdHI7Ci0rfTsKLSsKLSsvKiBUaGUgbWF4aW11bSBudW1iZXIgb2Yg YXJndW1lbnRzIHRoYXQgYSBwcm9iZSBjYW4gaGF2ZSwKLSsgICBhcyBkZWZpbmVkIGluIDxzeXMv c2R0Lmg+LiAgKi8KKysgIC8qIFRoZSBjb3JyZXNwb25kaW5nIGBzdHJ1Y3QgdHlwZSAqJyB0byB0 aGUgYml0bmVzcy4gICovCisrICBzdHJ1Y3QgdHlwZSAqYXR5cGU7CiArCi0rI2RlZmluZSBTVEFQ X01BWF9BUkdTIDEwCisrICAvKiBUaGUgYXJndW1lbnQgY29udmVydGVkIHRvIGFuIGludGVybmFs IEdEQiBleHByZXNzaW9uLiAgKi8KKysgIHN0cnVjdCBleHByZXNzaW9uICphZXhwcjsKKyt9Owog KwogKy8qIFN0cnVjdHVyZSB0aGF0IGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IGFsbCBhcmd1bWVu dHMgb2YgYSBwcm9iZS4gICovCiArCkBAIC03NTgxLDQ5NCArODgwOCwxMTcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YXAtcHJvYmUuYwogKyAgLyogVGhlIHByb2JlIHRvIHdo aWNoIHRoZXNlIGFyZ3VtZW50cyBiZWxvbmcuICAqLwogKyAgc3RydWN0IHN0YXBfcHJvYmUgKnBy b2JlOwogKwotKyAgLyogSW5mb3JtYXRpb24gYWJvdXQgZWFjaCBhcmd1bWVudC4gICovCi0rICBz dHJ1Y3Qgc3RhcF9wcm9iZV9hcmcgKmFyZzsKLSt9OwotKwotKy8qIFN0cnVjdHVyZSB0aGF0IGNv bnRhaW5zIGFsbCB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGV2YWx1YXRlCi0rICAgYW4g ZXhwcmVzc2lvbi4gICovCi0rCi0rc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvCi0rewotKyAg LyogVGhlIGNvbnN0YW50IHBvaW50ZXIgd2hpY2ggaG9sZHMgdGhlIGV4cHJlc3Npb24uIFRoaXMg aXMgcHJpbWFyaWx5Ci0rICAgICB1c2VkIGZvciBwcmludGluZyBlcnJvciBtZXNzYWdlcy4gIEV2 YWx1YXRpb24gZnVuY3Rpb25zIHNob3VsZAotKyAgICAgbm90IG1vZGlmeSB0aGlzIHBvaW50ZXIg ZGlyZWN0bHk7IGluc3RlYWQsIHRoZXkgc2hvdWxkIHVzZSB0aGUKLSsgICAgIEVYUF9CVUZGRVIg cG9pbnRlciBiZWxvdy4gICovCi0rICBjb25zdCBjaGFyICpzYXZlZF9leHByOwotKwotKyAgLyog TW9kaWZpYWJsZSB2ZXJzaW9uIG9mIHRoZSBhYm92ZSBwb2ludGVyLiAgKi8KLSsgIGNoYXIgKmV4 cF9idWY7Ci0rCi0rICAvKiBUaGUgcG9pbnRlciB0byB0aGUgY3VycmVudCBnZGJhcmNoLiAgKi8K LSsgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOwotKwotKyAgLyogVGhlIHBvaW50ZXIgdG8gdGhl IGN1cnJlbnQgZnJhbWUsIHVzZWQgd2hlbiBhY2Nlc3NpbmcgcmVnaXN0ZXJzJwotKyAgICAgY29u dGVudHMuICAqLwotKyAgc3RydWN0IGZyYW1lX2luZm8gKmZyYW1lOwotKwotKyAgLyogVGhlIGJp dG5lc3Mgc3BlY2lmaWVkIGZvciB0aGlzIGFyZ3VtZW50LiAgKi8KLSsgIGVudW0gc3RhcF9hcmdf Yml0bmVzcyBiaXRuZXNzOwotKwotKyAgLyogSWYgdGhlIGFib3ZlIGZsYWcgaXMgdHJ1ZSAob25l KSwgdGhpcyBmaWVsZCB3aWxsIGNvbnRhaW4gdGhlCi0rICAgICBwb2ludGVyIHRvIHRoZSBhZ2Vu dCBleHByZXNzaW9uLiAgKi8KLSsgIHN0cnVjdCBhZ2VudF9leHByICphZXhwcjsKLSsKLSsgIC8q IFRoZSB2YWx1ZSB3ZSBhcmUgbW9kaWZ5aW5nIChmb3IgYWdlbnQgZXhwcmVzc2lvbikuICAqLwot KyAgc3RydWN0IGF4c192YWx1ZSAqYXZhbHVlOworKyAgLyogSW5mb3JtYXRpb24gYWJvdXQgZWFj aCBhcmd1bWVudC4gIFRoaXMgaXMgYW4gYXJyYXkgb2YgYHN0YXBfcHJvYmVfYXJnJywKKysgICAg IHdpdGggZWFjaCBlbnRyeSByZXByZXNlbnRpbmcgb25lIGFyZ3VtZW50LiAgKi8KKysgIHN0cnVj dCBzdGFwX3Byb2JlX2FyZyAqYXJnczsKICt9OwogKwotKy8qIFRoaXMgZHVtbXkgdmFyaWFibGUg aXMgdXNlZCB3aGVuIHBhcnNpbmcgYSBwcm9iZSdzIGFyZ3VtZW50IGZhaWxzLgotKyAgIEluIHRo aXMgY2FzZSwgdGhlIG51bWJlciBvZiBhcmd1bWVudHMgZm9yIHRoaXMgcHJvYmUgaXMgemVybywg c28gdGhhdCdzCi0rICAgd2h5IHRoaXMgdmFyaWFibGUgaXMgdXNlZnVsLiAgKi8KLSsKLStzdGF0 aWMgc3RydWN0IHN0YXBfYXJnc19pbmZvIGR1bW15X3N0YXBfYXJnc19pbmZvID0KLSsgIHsgMCwg TlVMTCwgTlVMTCB9OwotKwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKnN0YXBfZXZhbHVhdGVfcHJv YmVfYXJndW1lbnRfMgotKyAgKHN0cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZv LAotKyAgIHN0cnVjdCB2YWx1ZSAqbGhzLCBpbnQgcHJlYyk7Ci0rCi0rc3RhdGljIHN0cnVjdCB2 YWx1ZSAqc3RhcF9ldmFsdWF0ZV9jb25kaXRpb25hbGx5Ci0rICAoc3RydWN0IHN0YXBfZXZhbHVh dGlvbl9pbmZvICpldmFsX2luZm8pOwotKwotKy8qIEhlbHBlciBmdW5jdGlvbiB3aGljaCBkZWNp ZGVzIHRvIHNraXAgd2hpdGVzcGFjZXMgb3Igbm90IGluIGEgcHJvYmUncwotKyAgIGFyZ3VtZW50 IHN0cmluZy4gIEJhc2ljYWxseSwgaWYgd2UgYXJlIGluc2lkZSBhIHBhcmVudGhlc2lzIGV4cHJl c3Npb24KLSsgICAoaS5lLiwgaW5zaWRlIGEgc3ViZXhwcmVzc2lvbiksIHdlIGNhbiBza2lwIHdo aXRlc3BhY2VzOyBvdGhlcndpc2Ugd2UKLSsgICBjYW5ub3QuICAqLwotKwotK3N0YXRpYyB2b2lk Ci0rc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoY2hhciAqKnMsIGludCBpbnNpZGVfcGFyZW4p Ci0rewotKyAgaWYgKGluc2lkZV9wYXJlbikKLSsgICAgKnMgPSBza2lwX3NwYWNlcyAoKnMpOwot K30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gd2hpY2ggcGFyc2VzIGEgc2luZ2xlIGFyZ3VtZW50 IGluIGEgcHJvYmUncyBhcmd1bWVudAotKyAgIHN0cmluZywgYmFzZWQgb24gdmFyaW91cyBydWxl cyAod2hpY2ggY2FuIGJlIGxlYXJuZWQgZnJvbSB0aGUgYGdhcycKLSsgICBtYW51YWwpLiAgSXQg cmV0dXJucyAxIG9uIHN1Y2Nlc3MsIG9yIDAgb3RoZXJ3aXNlLiAgKi8KLSsKLStzdGF0aWMgaW50 Ci0rc3RhcF9wYXJzZV9hcmcgKGNvbnN0IGNoYXIgKipwKQotK3sKLSsgIGNoYXIgKmN1ciA9IChj aGFyICopICpwOwotKyAgaW50IGRvbmUgPSAwOwotKyAgaW50IHBhcmVuX29wZW4gPSAwOwotKwot KyAgd2hpbGUgKCFkb25lKQotKyAgICB7Ci0rICAgICAgc3dpdGNoICgqY3VyKQotKwl7Ci0rCWNh c2UgJyAnOiBjYXNlIDA6Ci0rCSAgLyogSWYgd2UncmUgaGVyZSwgdGhlbiB3ZSBoYXZlIGFscmVh ZHkgcGFyc2VkIGV2ZXJ5dGhpbmcKLSsJICAgICBmcm9tIHRoaXMgYXJndW1lbnQuICAqLwotKwkg IGlmIChwYXJlbl9vcGVuKQotKwkgICAgcmV0dXJuIDA7Ci0rCSAgZG9uZSA9IDE7Ci0rCSAgYnJl YWs7Ci0rCi0rCWNhc2UgJygnOgotKwkgICsrcGFyZW5fb3BlbjsKLSsJICArK2N1cjsKLSsJICBz dGFwX3NraXBfd2hpdGVzcGFjZV9jb25kICgmY3VyLCBwYXJlbl9vcGVuKTsKLSsJICBicmVhazsK LSsKLSsJY2FzZSAnKSc6Ci0rCSAgaWYgKCFwYXJlbl9vcGVuKQotKwkgICAgcmV0dXJuIDA7Ci0r Ci0rCSAgLS1wYXJlbl9vcGVuOwotKwkgICsrY3VyOwotKwkgIGlmIChwYXJlbl9vcGVuKQotKwkg ICAgY3VyID0gc2tpcF9zcGFjZXMgKGN1cik7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgJysnOiBj YXNlICctJzoKLSsJY2FzZSAnKic6IGNhc2UgJy8nOgotKwljYXNlICc+JzogY2FzZSAnPCc6IGNh c2UgJ3wnOiBjYXNlICcmJzoKLSsJY2FzZSAnXic6IGNhc2UgJyEnOgotKwkgICAgewotKwkgICAg ICBjaGFyIGMgPSAqY3VyOwotKwotKwkgICAgICArK2N1cjsKLSsJICAgICAgc3dpdGNoICgqY3Vy KQotKwkJewotKwkJY2FzZSAnPic6Ci0rCQkgIGlmIChjICE9ICc8JyAmJiBjICE9ICc+JykKLSsJ CSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkgIGJyZWFrOwotKwotKwkJY2FzZSAn PCc6Ci0rCQkgIGlmIChjICE9ICc8JykKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytjdXI7 Ci0rCQkgIGJyZWFrOwotKwotKwkJY2FzZSAnPSc6Ci0rCQkgIGlmIChjICE9ICc9JyAmJiBjICE9 ICc8JyAmJiBjICE9ICc+JyAmJiBjICE9ICchJykKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAg KytjdXI7Ci0rCQkgIGJyZWFrOwotKwotKwkJY2FzZSAnfCc6Ci0rCQkgIGlmIChjICE9ICd8JykK LSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytjdXI7Ci0rCQkgIGJyZWFrOwotKwotKwkJY2Fz ZSAnJic6Ci0rCQkgIGlmIChjICE9ICcmJykKLSsJCSAgICByZXR1cm4gMDsKLSsKLSsJCSAgKytj dXI7Ci0rCQkgIGJyZWFrOwotKwotKwkJZGVmYXVsdDoKLSsJCSAgYnJlYWs7Ci0rCQl9Ci0rCSAg ICAgIC8qIEluZml4IG9wZXJhdG9ycyB0YWtlIHR3byBhcmd1bWVudHMsIG9uZSBvbiBlaXRoZXIK LSsJCSBzaWRlLiAgU2tpcHBpbmcgdGhlIHdoaXRlc3BhY2VzIHRoYXQgbWF5IGhhcHBlbiBvbiB0 aGUKLSsJCSByaWdodCBzaWRlLiAgKi8KLSsJICAgICAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29u ZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0rCSAgICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgJyUn OgotKwkgICAgewotKwkgICAgICArK2N1cjsKLSsJICAgICAgc3RhcF9za2lwX3doaXRlc3BhY2Vf Y29uZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0rCSAgICAgIGlmICgqY3VyID49ICdhJyAmJiAqY3Vy IDw9ICd6JykKLSsJCXsKLSsJCSAgLyogV2UncmUgZGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgbmFt ZS4gICovCi0rCQkgIHdoaWxlIChpc2FsbnVtICgqY3VyKSkKLSsJCSAgICArK2N1cjsKLSsKLSsJ CSAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0rCi0rCQkg IC8qIFNvbWUgcmVnaXN0ZXJzIChlLmcuIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHN0YWNrCi0r CQkgICAgIHJlZ2lzdGVycyBvbiBJbnRlbCBpMzg2KSBoYXZlIHRoZSBmb2xsb3dpbmcgc3ludGF4 OgotKwotKwkJICAgICBgJXN0KDApJywgYCVzdCgxKScsIGFuZCBzbyBvbi4KLSsKLSsJCSAgICAg U28gaXQncyBvayB0byBleHBlY3QgcGFyZW50aGVzaXMgaGVyZS4gICovCi0rCQkgIGlmICgqY3Vy ID09ICcoJykKLSsJCSAgICB7Ci0rCQkgICAgICArK2N1cjsKLSsJCSAgICAgIHN0YXBfc2tpcF93 aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVuX29wZW4pOwotKwkJICAgICAgaWYgKCFpc2RpZ2l0 ICgqY3VyKSkKLSsJCQkvKiBUaGlzIGlzIGFuIGVycm9yLCBzaW5jZSB3ZSBvbmx5IGV4cGVjdCBu dW1iZXJzCi0rCQkJICAgaW5zaWRlIHRoaXMgcGFyZW50aGVzaXMuICAqLwotKwkJCXJldHVybiAw OwotKwkJICAgICAgKytjdXI7Ci0rCQkgICAgICBzdGFwX3NraXBfd2hpdGVzcGFjZV9jb25kICgm Y3VyLCBwYXJlbl9vcGVuKTsKLSsJCSAgICAgIGlmICgqY3VyICE9ICcpJykKLSsJCQkvKiBXZSBv bmx5IGV4cGVjdCBvbmUgbnVtYmVyLiAgKi8KLSsJCQlyZXR1cm4gMDsKLSsJCSAgICAgICsrY3Vy OwotKwkJICAgICAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7 Ci0rCQkgICAgfQotKwkJfQotKwkgICAgfQotKwkgIGJyZWFrOwotKwotKwljYXNlICckJzoKLSsJ ICAgIHsKLSsJICAgICAgLyogVGhpcyBpcyBhbiBpbnRlZ2VyIGNvbnN0YW50LiAgKi8KLSsJICAg ICAgKytjdXI7Ci0rCSAgICAgIHN0YXBfc2tpcF93aGl0ZXNwYWNlX2NvbmQgKCZjdXIsIHBhcmVu X29wZW4pOwotKwotKwkgICAgICB3aGlsZSAoaXNkaWdpdCAoKmN1cikpCi0rCQkrK2N1cjsKLSsK LSsJICAgICAgc3RhcF9za2lwX3doaXRlc3BhY2VfY29uZCAoJmN1ciwgcGFyZW5fb3Blbik7Ci0r CSAgICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNh c2UgJzMnOiBjYXNlICc0JzoKLSsJY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAn OCc6IGNhc2UgJzknOgotKwkgICAgewotKwkgICAgICBjaGFyICpvbGQgPSBjdXI7Ci0rCi0rCSAg ICAgIC8qIE51bWJlci4gICovCi0rCSAgICAgIHdoaWxlIChpc2RpZ2l0ICgqY3VyKSkKLSsJCSsr Y3VyOwotKwotKwkgICAgICAvKiBXZSBoYXZlIHRvIGRvIGEgbG9va2FoZWFkIGhlcmUsIGJlY2F1 c2UgdGhlIHVzZXIgbWF5Ci0rCQkgaW5wdXQgYDIgKyAyJyAod2l0aCBzcGFjZXMpLCBhbmQgdGhp cyBpcyBub3QgYW4gZXJyb3IuICAqLwotKwkgICAgICBjdXIgPSBza2lwX3NwYWNlcyAoY3VyKTsK LSsKLSsJICAgICAgc3dpdGNoICgqY3VyKQotKwkJewotKwkJY2FzZSAnKyc6IGNhc2UgJy0nOgot KwkJICAvKiBXZSBtYXkgZmluZCB0aGUgYEAnIHNpZ24sIGFuZCBpdCBtZWFucyB0aGF0IHRoZQot KwkJICAgICBhcmd1bWVudCBoYXMgZmluaXNoZWQsIHNvIHdlIHNob3VsZG4ndCBhZHZhbmNlIHRo ZQotKwkJICAgICBwb2ludGVyLiAgKi8KLSsJCSAgaWYgKGN1clsxXSAmJiAoY3VyWzFdID09ICc0 JyB8fCBjdXJbMV0gPT0gJzgnKQotKwkJICAgICAgJiYgY3VyWzJdICYmIGN1clsyXSA9PSAnQCcp Ci0rCQkgICAgewotKwkJICAgICAgY3VyID0gb2xkOwotKwkJICAgICAgZ290byBmaW47Ci0rCQkg ICAgfQotKwkJICBicmVhazsKLSsKLSsJCWNhc2UgJyonOiBjYXNlICcvJzogY2FzZSAnPic6IGNh c2UgJzwnOgotKwkJY2FzZSAnfCc6IGNhc2UgJyYnOiBjYXNlICdeJzogY2FzZSAnISc6Ci0rCQkg IC8qIFRoaXMgaXMgYSBiaW5hcnkgb3BlcmF0aW9uLCB3aGljaCBtZWFucyB3ZSdsbAotKwkJICAg ICBoYXZlIHRvIGZpbmQgYW5vdGhlciBudW1iZXIgYWZ0ZXIgdGhlIG9wZXJhdG9yLiAgKi8KLSsJ CSAgYnJlYWs7Ci0rCi0rCQljYXNlICcoJzoKLSsJCSAgLyogV2UgbWF5IGFsc28gaGF2ZSBzZW50 ZW5jZXMgaW4gdGhlIGZvcm06Ci0rCi0rCQkgICAgIGA0ICglcmF4KScgICovCi0rCQkgIGJyZWFr OwotKwkJfQotKwkgICAgfQotK2ZpbjoKLSsJICBicmVhazsKLSsJfQotKyAgICB9Ci0rCi0rICAq cCA9IGN1cjsKLSsKLSsgIHJldHVybiAxOwotK30KLSsKLSsvKiBIZWxwZXIgZnVuY3Rpb24gd2hp Y2ggaXMgcmVzcG9uc2libGUgZm9yIGZyZWVpbmcgdGhlIHNwYWNlIGFsbG9jYXRlZCB0bwotKyAg IGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgYSBwcm9iZSdzIGFyZ3VtZW50cy4gICovCi0rCi0rc3Rh dGljIHZvaWQKLStzdGFwX2ZyZWVfYXJnc19pbmZvICh2b2lkICphcmdzX2luZm9fcHRyKQotK3sK LSsgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYSA9IChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKikg YXJnc19pbmZvX3B0cjsKLSsgIGludCBpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IGEtPm5fYXJn czsgaSsrKQotKyAgICB4ZnJlZSAoYS0+YXJnW2ldLmFyZ19zdHIpOwotKwotKyAgeGZyZWUgKGEt PmFyZyk7Ci0rICB4ZnJlZSAoYSk7Ci0rfQotKwotKy8qIEZ1bmN0aW9uIHdoaWNoIHBhcnNlcyBh biBhcmd1bWVudCBzdHJpbmcgZnJvbSBQUk9CRSwgY29ycmVjdGx5IHNwbGl0dGluZwotKyAgIHRo ZSBhcmd1bWVudHMgYW5kIHN0b3JpbmcgdGhlaXIgaW5mb3JtYXRpb24gaW4gcHJvcGVybHkgd2F5 cy4gIFRoaXMgZnVuY3Rpb24KLSsgICBvbmx5IHNlcGFyYXRlcyB0aGUgYXJndW1lbnRzLCBidXQg ZG9lcyBub3QgZXZhbHVhdGUgdGhlbS4KLSsKLSsgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGFy Z3VtZW50IHN0cmluZzoKLSsKLSsgICBgNEAlZWF4IDRAJDEwJwotKwotKyAgIFdlIGhhdmUgdHdv IGFyZ3VtZW50cywgYCVlYXgnIGFuZCBgJDEwJywgYm90aCB3aXRoIDMyLWJpdCB1bnNpZ25lZCBi aXRuZXNzLgotKyAgIFRoaXMgZnVuY3Rpb24gYmFzaWNhbGx5IGhhbmRsZXMgdGhlbSwgcHJvcGVy bHkgZmlsbGluZyBzb21lIHN0cnVjdHVyZXMgd2l0aAotKyAgIHRoaXMgaW5mb3JtYXRpb24uICAq LwotKwotK3N0YXRpYyB2b2lkCi0rc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZSkKLSt7Ci0rICBzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKmFyZ3NfaW5m bzsKLSsgIHN0cnVjdCBjbGVhbnVwICpiYWNrX3RvOwotKyAgY29uc3QgY2hhciAqY3VyID0gcHJv YmUtPmFyZ3M7Ci0rICBpbnQgY3VycmVudF9hcmcgPSAtMTsKLSsgIC8qIFRoaXMgaXMgYSBzdGF0 ZS1tYWNoaW5lIHBhcnNlciwgd2hpY2ggbWVhbnMgd2Ugd2lsbCBhbHdheXMgYmUKLSsgICAgIGlu IGEga25vd24gc3RhdGUgd2hlbiBwYXJzaW5nIGFuIGFyZ3VtZW50LiAgVGhlIHN0YXRlIGNvdWxk IGJlCi0rICAgICBlaXRoZXIgYE5FV19BUkcnIGlmIHdlIGFyZSBwYXJzaW5nIGEgbmV3IGFyZ3Vt ZW50LCBgQklUTkVTUycgaWYKLSsgICAgIHdlIGFyZSBwYXJzaW5nIHRoZSBiaXRuZXNzLWRlZmlu aXRpb24gcGFydCAoaS5lLiwgYDRAJyksIG9yCi0rICAgICBgUEFSU0VfQVJHJyBpZiB3ZSBhcmUg YWN0dWFsbHkgcGFyc2luZyB0aGUgYXJndW1lbnQgcGFydC4gICovCi0rICBlbnVtCi0rICAgIHsK LSsgICAgICBORVdfQVJHLAotKyAgICAgIEJJVE5FU1MsCi0rICAgICAgUEFSU0VfQVJHLAotKyAg ICB9IGN1cnJlbnRfc3RhdGU7Ci0rCi0rICAvKiBGb3Igbm93LCB3ZSBhc3N1bWUgZXZlcnl0aGlu ZyBpcyBub3QgZ29pbmcgdG8gd29yay4gICovCi0rICBwcm9iZS0+cGFyc2VkX2FyZ3MgPSAmZHVt bXlfc3RhcF9hcmdzX2luZm87Ci0rCi0rICBpZiAoIWN1ciB8fCAhKmN1ciB8fCAqY3VyID09ICc6 JykKLSsgICAgcmV0dXJuOwotKwotKyAgYXJnc19pbmZvID0geG1hbGxvYyAoc2l6ZW9mIChzdHJ1 Y3Qgc3RhcF9hcmdzX2luZm8pKTsKLSsgIGFyZ3NfaW5mby0+bl9hcmdzID0gMDsKLSsgIGJhY2tf dG8gPSBtYWtlX2NsZWFudXAgKHN0YXBfZnJlZV9hcmdzX2luZm8sIGFyZ3NfaW5mbyk7Ci0rICBh cmdzX2luZm8tPmFyZyA9IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0 YXBfcHJvYmVfYXJnKSk7Ci0rCi0rICAvKiBPaywgbGV0J3Mgc3RhcnQuICAqLwotKyAgY3VycmVu dF9zdGF0ZSA9IE5FV19BUkc7Ci0rCi0rICB3aGlsZSAoKmN1cikKLSsgICAgewotKyAgICAgIHN3 aXRjaCAoY3VycmVudF9zdGF0ZSkKLSsJewotKwljYXNlIE5FV19BUkc6Ci0rCSAgKytjdXJyZW50 X2FyZzsKLSsKLSsJICBpZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJHUykKLSsJICAgIHsK LSsJICAgICAgY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJCSBfKCJwcm9iZSBg JXMnIGhhcyBtb3JlIGFyZ3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKLSsJCQkgICAiYWxsb3dl ZCIpLCBwcm9iZS0+bmFtZSk7Ci0rCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKLSsJICAg ICAgcmV0dXJuOwotKwkgICAgfQotKwotKwkgIGN1cnJlbnRfc3RhdGUgPSBCSVRORVNTOwotKwkg IGJyZWFrOwotKwotKwljYXNlIEJJVE5FU1M6Ci0rCSAgICB7Ci0rCSAgICAgIGVudW0gc3RhcF9h cmdfYml0bmVzcyBiOwotKwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKLSsKLSsJICAgICAgLyog V2UgZXhwZWN0IHRvIGZpbmQgc29tZXRoaW5nIGxpa2U6Ci0rCi0rCQkgTkBPUAotKwotKwkJIFdo ZXJlIGBOJyBjYW4gYmUgWyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRhdG9yeSwgc28KLSsJ CSB3ZSBjaGVjayBpdCBoZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28gdG8gdGhlIG5leHQK LSsJCSBzdGF0ZS4gICovCi0rCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYgY3VyWzFdICYmIGN1 clsyXSAhPSAnQCcpCi0rCQkgICYmIGN1clsxXSAhPSAnQCcpCi0rCQl7Ci0rCQkgIGN1cnJlbnRf c3RhdGUgPSBQQVJTRV9BUkc7Ci0rCQkgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5iaXRu ZXNzCi0rCQkgICAgPSBTVEFQX0FSR19CSVRORVNTX1VOREVGSU5FRDsKLSsJCSAgYnJlYWs7Ci0r CQl9Ci0rCi0rCSAgICAgIGlmICgqY3VyID09ICctJykKLSsJCXsKLSsJCSAgLyogRGlzY2FyZCB0 aGUgYC0nLiAgKi8KLSsJCSAgKytjdXI7Ci0rCQkgIGdvdF9taW51cyA9IDE7Ci0rCQl9Ci0rCi0r CSAgICAgIGlmICgqY3VyID09ICc0JykKLSsJCWIgPSBnb3RfbWludXMgPyBTVEFQX0FSR19CSVRO RVNTXzMyQklUX1NJR05FRAotKwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfMzJCSVRfVU5TSUdORUQ7 Ci0rCSAgICAgIGVsc2UgaWYgKCpjdXIgPT0gJzgnKQotKwkJYiA9IGdvdF9taW51cyA/IFNUQVBf QVJHX0JJVE5FU1NfNjRCSVRfU0lHTkVECi0rCQkgIDogU1RBUF9BUkdfQklUTkVTU182NEJJVF9V TlNJR05FRDsKLSsJICAgICAgZWxzZQotKwkJewotKwkJICAvKiBXZSBoYXZlIGFuIGVycm9yLCBi ZWNhdXNlIHdlIGRvbid0IGV4cGVjdCBhbnl0aGluZwotKwkJICAgICBleGNlcHQgNCBhbmQgOC4g ICovCi0rCQkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCQkgICAgIF8oInVu cmVjb2duaXplZCBiaXRuZXNzIGAlYycgZm9yIHByb2JlIGAlcyciKSwKLSsJCQkgICAgICpjdXIs IHByb2JlLT5uYW1lKTsKLSsJCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8pOwotKwkJICByZXR1cm47 Ci0rCQl9CisrLyogV2hlbiBwYXJzaW5nIHRoZSBhcmd1bWVudHMsIHdlIGhhdmUgdG8gZXN0YWJs aXNoIGRpZmZlcmVudCBwcmVjZWRlbmNlcworKyAgIGZvciB0aGUgdmFyaW91cyBraW5kcyBvZiBh c20gb3BlcmF0b3JzLiAgVGhpcyBlbnVtZXJhdGlvbiByZXByZXNlbnRzIHRob3NlCisrICAgcHJl Y2VkZW5jZXMuCiArCi0rCSAgICAgIGFyZ3NfaW5mby0+YXJnW2N1cnJlbnRfYXJnXS5iaXRuZXNz ID0gYjsKLSsJICAgICAgLyogRGlzY2FyZCB0aGUgbnVtYmVyIGFuZCB0aGUgYEAnIHNpZ24uICAq LwotKwkgICAgICBjdXIgKz0gMjsKLSsJICAgICAgLyogTW92ZSBvbi4gICovCi0rCSAgICAgIGN1 cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7Ci0rCSAgICB9Ci0rCSAgYnJlYWs7CisrICAgVGhpcyBs b2dpYyBiZWhpbmQgdGhpcyBpcyBhdmFpbGFibGUgYXQKKysgICA8aHR0cDovL3NvdXJjZXdhcmUu b3JnL2JpbnV0aWxzL2RvY3MvYXMvSW5maXgtT3BzLmh0bWwjSW5maXgtT3BzPiwgb3IgdXNpbmcK KysgICB0aGUgY29tbWFuZCAiaW5mbyAnKGFzKUluZml4IE9wcyciLiAgKi8KICsKLSsJY2FzZSBQ QVJTRV9BUkc6Ci0rCSAgICB7Ci0rCSAgICAgIGNvbnN0IGNoYXIgKnN0YXJ0ID0gY3VyOworK2Vu dW0gc3RhcF9vcGVyYW5kX3ByZWMKKyt7CisrICAvKiBMb3dlc3QgcHJlY2VkZW5jZSwgdXNlZCBm b3Igbm9uLXJlY29nbml6ZWQgb3BlcmFuZHMgb3IgZm9yIHRoZSBiZWdpbm5pbmcKKysgICAgIG9m IHRoZSBwYXJzaW5nIHByb2Nlc3MuICAqLworKyAgU1RBUF9PUEVSQU5EX1BSRUNfTk9ORSA9IDAs CiArCi0rCSAgICAgIGlmICghc3RhcF9wYXJzZV9hcmcgKCZjdXIpKQotKwkJewotKwkJICAvKiBX ZSBoYXZlIHRyaWVkIHRvIHBhcnNlIHRoaXMgYXJndW1lbnQsIGJ1dCBpdCdzCi0rCQkgICAgIG1h bGZvcm1lZC4gIFRoaXMgaXMgYW4gZXJyb3IuICAqLwotKwkJICBkb19jbGVhbnVwcyAoYmFja190 byk7Ci0rCQkgIHJldHVybjsKLSsJCX0KKysgIC8qIFByZWNlZGVuY2Ugb2YgbG9naWNhbCBPUi4g ICovCisrICBTVEFQX09QRVJBTkRfUFJFQ19MT0dJQ0FMX09SLAogKwotKwkgICAgICBhcmdzX2lu Zm8tPmFyZ1tjdXJyZW50X2FyZ10uYXJnX3N0cgotKwkJPSBzYXZlc3RyaW5nIChzdGFydCwgY3Vy IC0gc3RhcnQpOwotKwkgICAgICArK2FyZ3NfaW5mby0+bl9hcmdzOwotKwkgICAgICAvKiBTdGFy dCBpdCBvdmVyIGFnYWluLiAgKi8KLSsJICAgICAgY3VyID0gc2tpcF9zcGFjZXMgKChjaGFyICop IGN1cik7Ci0rCSAgICAgIGN1cnJlbnRfc3RhdGUgPSBORVdfQVJHOwotKwkgICAgfQotKwkgIGJy ZWFrOwotKwl9CisrICAvKiBQcmVjZWRlbmNlIG9mIGxvZ2ljYWwgQU5ELiAgKi8KKysgIFNUQVBf T1BFUkFORF9QUkVDX0xPR0lDQUxfQU5ELAogKwotKyAgICAgIGlmICghKmN1ciAmJiBjdXJyZW50 X3N0YXRlICE9IE5FV19BUkcpCi0rCXsKLSsJICAvKiBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhl IGFyZ3VtZW50IHN0cmluZywgYnV0IHdlJ3JlCi0rCSAgICAgc3RpbGwgaW4gdGhlIG1pZGRsZSBv ZiB0aGUgcHJvY2VzcyBvZiBwYXJzaW5nIGFuIGFyZ3VtZW50LgotKwkgICAgIEl0IG1lYW5zIHRo ZSBhcmd1bWVudCBzdHJpbmcgaXMgbWFsZm9ybWVkLiAgKi8KLSsJICBjb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCi0rCQkgICAgIF8oIm1hbGZvcm1lZCBhcmd1bWVudCBmb3IgcHJvYmUg YCVzJyIpLAotKwkJICAgICBwcm9iZS0+bmFtZSk7Ci0rCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OwotKwkgIHJldHVybjsKLSsJfQotKyAgICB9CisrICAvKiBQcmVjZWRlbmNlIG9mIGFkZGl0aXZl IChwbHVzLCBtaW51cykgYW5kIGNvbXBhcmF0aXZlIChlcXVhbCwgbGVzcywKKysgICAgIGdyZWF0 ZXItdGhhbiwgZXRjKSBvcGVyYW5kcy4gICovCisrICBTVEFQX09QRVJBTkRfUFJFQ19BRERfQ01Q LAogKwotKyAgYXJnc19pbmZvLT5hcmcgPSB4cmVhbGxvYyAoYXJnc19pbmZvLT5hcmcsCi0rCQkJ ICAgICAgYXJnc19pbmZvLT5uX2FyZ3MKLSsJCQkgICAgICAqIHNpemVvZiAoc3RydWN0IHN0YXBf cHJvYmVfYXJnKSk7Ci0rICBhcmdzX2luZm8tPnByb2JlID0gcHJvYmU7CisrICAvKiBQcmVjZWRl bmNlIG9mIGJpdHdpc2Ugb3BlcmFuZHMgKGJpdHdpc2UgT1IsIFhPUiwgYml0d2lzZSBBTkQsCisr ICAgICBsb2dpY2FsIE5PVCkuICAqLworKyAgU1RBUF9PUEVSQU5EX1BSRUNfQklUV0lTRSwKICsK LSsgIHByb2JlLT5wYXJzZWRfYXJncyA9IGFyZ3NfaW5mbzsKKysgIC8qIFByZWNlZGVuY2Ugb2Yg bXVsdGlwbGljYXRpdmUgb3BlcmFuZHMgKG11bHRpcGxpY2F0aW9uLCBkaXZpc2lvbiwKKysgICAg IHJlbWFpbmRlciwgbGVmdCBzaGlmdCBhbmQgcmlnaHQgc2hpZnQpLiAgKi8KKysgIFNUQVBfT1BF UkFORF9QUkVDX01VTAorK307CiArCi0rICBkaXNjYXJkX2NsZWFudXBzIChiYWNrX3RvKTsKLSt9 CisrLyogVGhpcyBkdW1teSB2YXJpYWJsZSBpcyB1c2VkIHdoZW4gcGFyc2luZyBhIHByb2JlJ3Mg YXJndW1lbnQgZmFpbHMuCisrICAgSW4gdGhpcyBjYXNlLCB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50 cyBmb3IgdGhpcyBwcm9iZSBpcyB6ZXJvLCBzbyB0aGF0J3MKKysgICB3aHkgdGhpcyB2YXJpYWJs ZSBpcyB1c2VmdWwuICAqLwogKwotKy8qIFNlZSBkZWZpbml0aW9uIGluIHN0YXAtcHJvYmUuaC4g ICovCisrc3RhdGljIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyBkdW1teV9zdGFwX2FyZ3NfaW5mbyA9 CisrICB7IDAsIE5VTEwsIE5VTEwgfTsKICsKLStpbnQKLStzdGFwX2dldF9wcm9iZV9hcmd1bWVu dF9jb3VudCAoY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKQotK3sKLSsgIGlmICghcHJv YmUtPnBhcnNlZF9hcmdzKQotKyAgICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoKHN0cnVj dCBzdGFwX3Byb2JlICopIHByb2JlKTsKKytzdGF0aWMgdm9pZCBzdGFwX3BhcnNlX2FyZ3VtZW50 XzEgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnAsIGludCBoYXNfbGhzLAorKwkJCQkgICBlbnVt IHN0YXBfb3BlcmFuZF9wcmVjIHByZWMpOwogKwotKyAgcmV0dXJuIHByb2JlLT5wYXJzZWRfYXJn cy0+bl9hcmdzOworK3N0YXRpYyB2b2lkIHN0YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxs eSAoc3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCk7CisrCisrLyogUmV0dXJucyAxIGlmICpTIGlz IGFuIG9wZXJhdG9yLCB6ZXJvIG90aGVyd2lzZS4gICovCisrCisrc3RhdGljIGludCBzdGFwX2lz X29wZXJhdG9yIChjaGFyIG9wKTsKKysKKytzdGF0aWMgdm9pZAorK3Nob3dfc3RhcGV4cHJlc3Np b25kZWJ1ZyAoc3RydWN0IHVpX2ZpbGUgKmZpbGUsIGludCBmcm9tX3R0eSwKKysJCQkgIHN0cnVj dCBjbWRfbGlzdF9lbGVtZW50ICpjLCBjb25zdCBjaGFyICp2YWx1ZSkKKyt7CisrICBmcHJpbnRm X2ZpbHRlcmVkIChmaWxlLCBfKCJTeXN0ZW1UYXAgUHJvYmUgZXhwcmVzc2lvbiBkZWJ1Z2dpbmcg aXMgJXMuXG4iKSwKKysJCSAgICB2YWx1ZSk7CiArfQogKwotKy8qIFJldHVybnMgdGhlIG9wZXJh dG9yIHByZWNlZGVuY2UgbGV2ZWwgb2YgT1AsIG9yIHplcm8gaWYgdGhlIG9wZXJhdG9yCi0rICAg Y29kZSB3YXMgbm90IHJlY29nbml6ZWQuCi0rICAgVGhlIGxldmVscyB3ZXJlIHRha2VuIGZyb20g dGhlIGdhcyBtYW51YWwuICAqLworKy8qIFJldHVybnMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2Ug bGV2ZWwgb2YgT1AsIG9yIFNUQVBfT1BFUkFORF9QUkVDX05PTkUKKysgICBpZiB0aGUgb3BlcmF0 b3IgY29kZSB3YXMgbm90IHJlY29nbml6ZWQuICAqLwogKwotK3N0YXRpYyBpbnQKKytzdGF0aWMg ZW51bSBzdGFwX29wZXJhbmRfcHJlYwogK3N0YXBfZ2V0X29wZXJhdG9yX3ByZWMgKGVudW0gZXhw X29wY29kZSBvcCkKICt7CiArICBzd2l0Y2ggKG9wKQogKyAgICB7CiArICAgIGNhc2UgQklOT1Bf TE9HSUNBTF9PUjoKLSsgICAgICByZXR1cm4gMTsKKysgICAgICByZXR1cm4gU1RBUF9PUEVSQU5E X1BSRUNfTE9HSUNBTF9PUjsKICsKICsgICAgY2FzZSBCSU5PUF9MT0dJQ0FMX0FORDoKLSsgICAg ICByZXR1cm4gMjsKKysgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNfTE9HSUNBTF9BTkQ7 CiArCi0rICAgIGNhc2UgQklOT1BfQUREOiBjYXNlIEJJTk9QX1NVQjoKLSsgICAgY2FzZSBCSU5P UF9FUVVBTDogY2FzZSBCSU5PUF9OT1RFUVVBTDoKLSsgICAgY2FzZSBCSU5PUF9MRVNTOiBjYXNl IEJJTk9QX0xFUToKLSsgICAgY2FzZSBCSU5PUF9HVFI6IGNhc2UgQklOT1BfR0VROgotKyAgICAg IHJldHVybiAzOworKyAgICBjYXNlIEJJTk9QX0FERDoKKysgICAgY2FzZSBCSU5PUF9TVUI6Cisr ICAgIGNhc2UgQklOT1BfRVFVQUw6CisrICAgIGNhc2UgQklOT1BfTk9URVFVQUw6CisrICAgIGNh c2UgQklOT1BfTEVTUzoKKysgICAgY2FzZSBCSU5PUF9MRVE6CisrICAgIGNhc2UgQklOT1BfR1RS OgorKyAgICBjYXNlIEJJTk9QX0dFUToKKysgICAgICByZXR1cm4gU1RBUF9PUEVSQU5EX1BSRUNf QUREX0NNUDsKICsKLSsgICAgY2FzZSBCSU5PUF9CSVRXSVNFX0lPUjogY2FzZSBCSU5PUF9CSVRX SVNFX0FORDoKLSsgICAgY2FzZSBCSU5PUF9CSVRXSVNFX1hPUjogY2FzZSBVTk9QX0xPR0lDQUxf Tk9UOgotKyAgICAgIHJldHVybiA0OworKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfSU9SOgorKyAg ICBjYXNlIEJJTk9QX0JJVFdJU0VfQU5EOgorKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgor KyAgICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6CisrICAgICAgcmV0dXJuIFNUQVBfT1BFUkFORF9Q UkVDX0JJVFdJU0U7CiArCi0rICAgIGNhc2UgQklOT1BfTVVMOiBjYXNlIEJJTk9QX0RJVjogY2Fz ZSBCSU5PUF9SRU06Ci0rICAgIGNhc2UgQklOT1BfTFNIOiBjYXNlIEJJTk9QX1JTSDoKLSsgICAg ICByZXR1cm4gNTsKKysgICAgY2FzZSBCSU5PUF9NVUw6CisrICAgIGNhc2UgQklOT1BfRElWOgor KyAgICBjYXNlIEJJTk9QX1JFTToKKysgICAgY2FzZSBCSU5PUF9MU0g6CisrICAgIGNhc2UgQklO T1BfUlNIOgorKyAgICAgIHJldHVybiBTVEFQX09QRVJBTkRfUFJFQ19NVUw7CiArCiArICAgIGRl ZmF1bHQ6Ci0rICAgICAgcmV0dXJuIDA7CisrICAgICAgcmV0dXJuIFNUQVBfT1BFUkFORF9QUkVD X05PTkU7CiArICAgIH0KICt9CiArCi0rLyogR2l2ZW4gUywgdGhpcyBmdW5jdGlvbiByZWFkcyB0 aGUgb3BlcmF0b3IgaW4gaXQgYW5kIGZpbGxzIHRoZSBPUAotKyAgIHBvaW50ZXIgd2l0aCBpdHMg Y29kZS4gIFJldHVybnMgMSBvbiBzdWNjZXNzLCB6ZXJvIGlmIHRoZSBvcGVyYXRvcgotKyAgIHdh cyBub3QgcmVjb2duaXplZC4gICovCisrLyogR2l2ZW4gUywgcmVhZCB0aGUgb3BlcmF0b3IgaW4g aXQgYW5kIGZpbGxzIHRoZSBPUCBwb2ludGVyIHdpdGggaXRzIGNvZGUuCisrICAgUmV0dXJuIDEg b24gc3VjY2VzcywgemVybyBpZiB0aGUgb3BlcmF0b3Igd2FzIG5vdCByZWNvZ25pemVkLiAgKi8K ICsKICtzdGF0aWMgaW50Ci0rc3RhcF9nZXRfb3Bjb2RlIChjaGFyICoqcywgZW51bSBleHBfb3Bj b2RlICpvcCkKKytzdGFwX2dldF9vcGNvZGUgKGNvbnN0IGNoYXIgKipzLCBlbnVtIGV4cF9vcGNv ZGUgKm9wKQogK3sKLSsgIGNoYXIgYyA9ICoqczsKKysgIGNvbnN0IGNoYXIgYyA9ICoqczsKICsg IGludCByZXQgPSAxOwogKwogKyAgKnMgKz0gMTsKQEAgLTgwODQsMTYgKzg5MzQsNyBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICAgICAgYnJlYWs7CiAr CiArICAgIGNhc2UgJyUnOgotKyAgICAgIHsKLSsJaWYgKGlzYWxwaGEgKCoqcykpCi0rCSAgewot KwkgICAgLyogRGVhbGluZyB3aXRoIGEgcmVnaXN0ZXIgbmFtZS4gICovCi0rCSAgICByZXQgPSAw OwotKwkgICAgYnJlYWs7Ci0rCSAgfQotKwotKwkqb3AgPSBCSU5PUF9SRU07Ci0rICAgICAgfQor KyAgICAgICpvcCA9IEJJTk9QX1JFTTsKICsgICAgYnJlYWs7CiArCiArICAgIGNhc2UgJzwnOgpA QCAtODE4MSw2NDkgKzkwMjIsNDQ3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9z dGFwLXByb2JlLmMKICsgIHJldHVybiByZXQ7CiArfQogKwotKy8qIEdpdmVuIHRoZSBvcGVyYXRv ciBPUENPREUsIHRoaXMgZnVuY3Rpb24gZ2VuZXJhdGVzIGFnZW50IGJ5dGVjb2RlCi0rICAgZm9y IGl0LiAgKi8KKysvKiBHaXZlbiB0aGUgYml0bmVzcyBvZiB0aGUgYXJndW1lbnQsIHJlcHJlc2Vu dGVkIGJ5IEIsIHJldHVybiB0aGUKKysgICBjb3JyZXNwb25kaW5nIGBzdHJ1Y3QgdHlwZSAqJy4g ICovCiArCi0rc3RhdGljIHZvaWQKLStzdGFwX29wY29kZV90b19heCAoc3RydWN0IHN0YXBfZXZh bHVhdGlvbl9pbmZvICpldmFsX2luZm8sCi0rCQkgICBlbnVtIGV4cF9vcGNvZGUgb3Bjb2RlKQor K3N0YXRpYyBzdHJ1Y3QgdHlwZSAqCisrc3RhcF9nZXRfZXhwZWN0ZWRfYXJndW1lbnRfdHlwZSAo c3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisrCQkJCSBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYikK ICt7Ci0rICBzdHJ1Y3QgYWdlbnRfZXhwciAqZXhwciA9IGV2YWxfaW5mby0+YWV4cHI7Ci0rCi0r ICBzd2l0Y2ggKG9wY29kZSkKKysgIHN3aXRjaCAoYikKICsgICAgewotKyAgICBjYXNlIEJJTk9Q X01VTDoKLSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9tdWwpOwotKyAgICAgIGJyZWFrOwot KwotKyAgICBjYXNlIEJJTk9QX0RJVjoKLSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9kaXZf c2lnbmVkKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9SRU06Ci0rICAgICAg YXhfc2ltcGxlIChleHByLCBhb3BfcmVtX3Vuc2lnbmVkKTsKLSsgICAgICBicmVhazsKLSsKLSsg ICAgY2FzZSBCSU5PUF9MRVNTOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xlc3Nfc2ln bmVkKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9MRVE6Ci0rICAgICAgLyog QSA8PSBCIGlzICEoQiA8IEEpICovCi0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3Bfc3dhcCk7 Ci0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfbGVzc19zaWduZWQpOwotKyAgICAgIGF4X3Np bXBsZSAoZXhwciwgYW9wX2xvZ19ub3QpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEJJ Tk9QX0dUUjoKLSsgICAgICAvKiBBID4gQiBpcyBCIDwgQSAqLwotKyAgICAgIGF4X3NpbXBsZSAo ZXhwciwgYW9wX3N3YXApOwotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xlc3Nfc2lnbmVk KTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9HRVE6Ci0rICAgICAgLyogQSA+ PSBCIGlzICEoQSA8IEIpICovCi0rICAgICAgYXhfc2ltcGxlIChleHByLCBhb3BfbGVzc19zaWdu ZWQpOwotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2xvZ19ub3QpOwotKyAgICAgIGJyZWFr OwotKwotKyAgICBjYXNlIEJJTk9QX05PVEVRVUFMOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwg YW9wX2VxdWFsKTsKLSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFvcF9sb2dfbm90KTsKLSsgICAg ICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9MU0g6Ci0rICAgICAgYXhfc2ltcGxlIChleHBy LCBhb3BfbHNoKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBCSU5PUF9SU0g6Ci0rICAg ICAgYXhfc2ltcGxlIChleHByLCBhb3BfcnNoX3Vuc2lnbmVkKTsKLSsgICAgICBicmVhazsKLSsK LSsgICAgY2FzZSBCSU5PUF9CSVRXSVNFX0lPUjoKLSsgICAgICBheF9zaW1wbGUgKGV4cHIsIGFv cF9iaXRfb3IpOwotKyAgICAgIGJyZWFrOwotKyAgICAgCi0rICAgIGNhc2UgQklOT1BfTE9HSUNB TF9PUjoKLSsgICAgICBlcnJvciAoXygiT3BlcmF0b3IgbG9naWNhbC1vciAoYHx8Jykgbm90IHN1 cHBvcnRlZCB5ZXQuIikpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIEJJTk9QX0JJVFdJ U0VfQU5EOgotKyAgICAgIGF4X3NpbXBsZSAoZXhwciwgYW9wX2JpdF9hbmQpOwotKyAgICAgIGJy ZWFrOwotKwotKyAgICBjYXNlIEJJTk9QX0xPR0lDQUxfQU5EOgotKyAgICAgIGVycm9yIChfKCJP cGVyYXRvciBsb2dpY2FsLWFuZCAoYCYmJykgbm90IHN1cHBvcnRlZCB5ZXQuIikpOwotKyAgICAg IGJyZWFrOwotKwotKyAgICBjYXNlIEJJTk9QX0JJVFdJU0VfWE9SOgotKyAgICAgIGF4X3NpbXBs ZSAoZXhwciwgYW9wX2JpdF94b3IpOwotKyAgICAgIGJyZWFrOworKyAgICBjYXNlIFNUQVBfQVJH X0JJVE5FU1NfVU5ERUZJTkVEOgorKyAgICAgIGlmIChnZGJhcmNoX2FkZHJfYml0IChnZGJhcmNo KSA9PSAzMikKKysJcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMy OworKyAgICAgIGVsc2UKKysJcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f dWludDY0OwogKwotKyAgICBjYXNlIFVOT1BfTE9HSUNBTF9OT1Q6Ci0rICAgICAgYXhfc2ltcGxl IChleHByLCBhb3BfbG9nX25vdCk7Ci0rICAgICAgYnJlYWs7CisrICAgIGNhc2UgU1RBUF9BUkdf QklUTkVTU18zMkJJVF9TSUdORUQ6CisrICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2RiYXJj aCktPmJ1aWx0aW5faW50MzI7CiArCi0rICAgIGNhc2UgQklOT1BfQUREOgotKyAgICAgIGF4X3Np bXBsZSAoZXhwciwgYW9wX2FkZCk7Ci0rICAgICAgYnJlYWs7CisrICAgIGNhc2UgU1RBUF9BUkdf QklUTkVTU18zMkJJVF9VTlNJR05FRDoKKysgICAgICByZXR1cm4gYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl91aW50MzI7CiArCi0rICAgIGNhc2UgQklOT1BfU1VCOgotKyAgICAgIGF4 X3NpbXBsZSAoZXhwciwgYW9wX3N1Yik7Ci0rICAgICAgYnJlYWs7CisrICAgIGNhc2UgU1RBUF9B UkdfQklUTkVTU182NEJJVF9TSUdORUQ6CisrICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlwZSAoZ2Ri YXJjaCktPmJ1aWx0aW5faW50NjQ7CiArCi0rICAgIGNhc2UgQklOT1BfRVFVQUw6Ci0rICAgICAg YXhfc2ltcGxlIChleHByLCBhb3BfZXF1YWwpOwotKyAgICAgIGJyZWFrOworKyAgICBjYXNlIFNU QVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ6CisrICAgICAgcmV0dXJuIGJ1aWx0aW5fdHlw ZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0OwogKwogKyAgICBkZWZhdWx0OgotKyAgICAgIGVy cm9yIChfKCJJbnZhbGlkIG9wZXJhdG9yLiIpKTsKKysgICAgICBpbnRlcm5hbF9lcnJvciAoX19G SUxFX18sIF9fTElORV9fLAorKwkJICAgICAgXygiVW5kZWZpbmVkIGJpdG5lc3MgZm9yIHByb2Jl LiIpKTsKKysgICAgICBicmVhazsKICsgICAgfQogK30KICsKLSsvKiBSZXR1cm5zIDEgaWYgKlMg aXMgYW4gb3BlcmF0b3IsIHplcm8gb3RoZXJ3aXNlLiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rc3Rh cF9pc19vcGVyYXRvciAoY2hhciAqcykKLSt7Ci0rICBjaGFyIG9wOwotKwotKyAgaWYgKCFzIHx8 ICEqcykKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBvcCA9ICpzOwotKwotKyAgaWYgKCpzID09ICcl JyAmJiBpc2FscGhhIChzWzFdKSkKLSsgICAgLyogUmVnaXN0ZXIgbmFtZS4gICovCi0rICAgIHJl dHVybiAwOwotKwotKyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0gJy0nIHx8IG9wID09ICcq JyB8fCBvcCA9PSAnLycKLSsJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0gJzwnIHx8IG9wID09ICch JyB8fCBvcCA9PSAnXicKLSsJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0gJyYnIHx8IG9wID09ICcl JyB8fCBvcCA9PSAnPScpOwotK30KLSsKLSsvKiBUaGlzIGZ1bmN0aW9uIGZldGNoZXMgdGhlIHZh bHVlIG9mIHRoZSByZWdpc3RlciB3aG9zZQotKyAgIG5hbWUgc3RhcnRzIGluIHRoZSBleHByZXNz aW9uIGJ1ZmZlci4gIEl0IGFsc28gYXBwbGllcyBhbnkgcmVnaXN0ZXIKLSsgICBkaXNwbGFjZW1l bnRzIChlLmcuLCBgLTQoJWVheCknKSwgYW5kIGluZGlyZWN0cyB0aGUgY29udGVudHMgb2YgdGhl Ci0rICAgcmVnaXN0ZXIgKGUuZy4sIGAoJWVheCknKS4gIEl0IHJldHVybnMgUkVUIGlmIHRoZSBv cGVyYXRpb24gaGFzIHN1Y2NlZWRlZCwKLSsgICBvciBjYWxscyBgZXJyb3InIG90aGVyd2lzZS4g ICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1ZSAqCi0rc3RhcF9mZXRjaF9yZWdfdmFsdWUgKHN0 cnVjdCBzdGFwX2V2YWx1YXRpb25faW5mbyAqZXZhbF9pbmZvLAotKwkJICAgICAgc3RydWN0IHZh bHVlICpkaXNwbGFjZW1lbnQpCi0reworK3N0YXRpYyB2b2lkCisrc3RhcF9wYXJzZV9yZWdpc3Rl cl9vcGVyYW5kIChzdHJ1Y3Qgc3RhcF9wYXJzZV9pbmZvICpwKQorK3sKKysgIC8qIFNpbXBsZSBm bGFnIHRvIGluZGljYXRlIHdoZXRoZXIgd2UgaGF2ZSBzZWVuIGEgbWludXMgc2lnbmFsIGJlZm9y ZQorKyAgICAgY2VydGFpbiBudW1iZXIuICAqLworKyAgaW50IGdvdF9taW51cyA9IDA7CisrICAv KiBGbGFncyB0byBpbmRpY2F0ZSB3aGV0aGVyIHRoaXMgcmVnaXN0ZXIgYWNjZXNzIGlzIGJlaW5n IGRpc3BsYWNlZCBhbmQvb3IKKysgICAgIGluZGlyZWN0ZWQuICAqLworKyAgaW50IGRpc3BfcCA9 IDAsIGluZGlyZWN0X3AgPSAwOworKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBwLT5nZGJh cmNoOworKyAgLyogTmVlZGVkIHRvIGdlbmVyYXRlIHRoZSByZWdpc3RlciBuYW1lIGFzIGEgcGFy dCBvZiBhbiBleHByZXNzaW9uLiAgKi8KKysgIHN0cnVjdCBzdG9rZW4gc3RyOworKyAgLyogVmFy aWFibGVzIHVzZWQgdG8gZXh0cmFjdCB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIHRoZSBwcm9iZSdz CisrICAgICBhcmd1bWVudC4gICovCiArICBjb25zdCBjaGFyICpzdGFydDsKLSsgIGNoYXIgKnMg PSBldmFsX2luZm8tPmV4cF9idWY7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxf aW5mby0+Z2RiYXJjaDsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ ZnJhbWU7Ci0rICBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0 bmVzczsKICsgIGNoYXIgKnJlZ25hbWU7Ci0rICBpbnQgbGVuLCByZWdudW0sIGluZGlyZWN0X3Ag PSAwOwotKyAgc3RydWN0IHZhbHVlICpyZXQgPSBOVUxMOwotKyAgCi0rICAvKiBUaGUgZnVuY3Rp b24gd2hpY2ggY2FsbGVkIHVzIGRpZCBub3QgY2hlY2sgaWYgdGhlIGV4cHJlc3Npb24KLSsgICAg IGJ1ZmZlciB3YXMgZW1wdHkuICAqLwotKyAgZ2RiX2Fzc2VydCAocyAmJiAqcyk7Ci0rCi0rICBp ZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQotKyAgICAvKiBJZiB3 ZSBhcmUgY29tcGlsaW5nLCB3ZSBjYW5ub3QgcmV0dXJuIE5VTEwgYmVjYXVzZSB0aGF0IHdvdWxk Ci0rICAgICAgIGxlYWQgdG8gZXJyb3JzIGluIGZ1dHVyZSBldmFsdWF0aW9ucy4gIFRoYXQncyB3 aHkgd2UganVzdCBtYWtlCi0rICAgICAgIHRoaXMgZHVtbXkgdmFsdWUsIHJlcHJlc2VudGluZyB0 aGF0IHRoZSByZXR1cm4gdmFsdWUgb2YgdGhpcwotKyAgICAgICBmdW5jdGlvbiBpcyBub3QgTlVM TC4gICovCi0rICAgIHJldCA9IHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl9pbnQsIDApOwotKwotKyAgLyogVmFsaWQgcmVnaXN0ZXIgbmFtZSBvbiB4 ODYgcGxhdGZvcm1zIGFyZToKLSsKLSsgICAgIFtwYXJlbl0le2EtejAtOX1bcGFyZW5dCi0rCi0r ICAgICBMZXQncyBjaGVjayBmb3IgdGhhdCBoZXJlLiAgKi8KLSsgIGlmICgqcyA9PSAnKCcpCisr ICBpbnQgbGVuOworKworKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBwYXJzZXIuICAqLworKyAgY29u c3QgY2hhciAqcmVnX3ByZWZpeCA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9wcmVmaXggKGdkYmFy Y2gpOworKyAgY29uc3QgY2hhciAqcmVnX2luZF9wcmVmaXgKKysgICAgPSBnZGJhcmNoX3N0YXBf cmVnaXN0ZXJfaW5kaXJlY3Rpb25fcHJlZml4IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKmdk Yl9yZWdfcHJlZml4ID0gZ2RiYXJjaF9zdGFwX2dkYl9yZWdpc3Rlcl9wcmVmaXggKGdkYmFyY2gp OworKyAgaW50IHJlZ19wcmVmaXhfbGVuID0gcmVnX3ByZWZpeCA/IHN0cmxlbiAocmVnX3ByZWZp eCkgOiAwOworKyAgaW50IHJlZ19pbmRfcHJlZml4X2xlbiA9IHJlZ19pbmRfcHJlZml4ID8gc3Ry bGVuIChyZWdfaW5kX3ByZWZpeCkgOiAwOworKyAgaW50IGdkYl9yZWdfcHJlZml4X2xlbiA9IGdk Yl9yZWdfcHJlZml4ID8gc3RybGVuIChnZGJfcmVnX3ByZWZpeCkgOiAwOworKworKyAgLyogU3Vm aXhlcyBmb3IgdGhlIHBhcnNlci4gICovCisrICBjb25zdCBjaGFyICpyZWdfc3VmaXggPSBnZGJh cmNoX3N0YXBfcmVnaXN0ZXJfc3VmaXggKGdkYmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVnX2lu ZF9zdWZpeAorKyAgICA9IGdkYmFyY2hfc3RhcF9yZWdpc3Rlcl9pbmRpcmVjdGlvbl9zdWZpeCAo Z2RiYXJjaCk7CisrICBjb25zdCBjaGFyICpnZGJfcmVnX3N1Zml4ID0gZ2RiYXJjaF9zdGFwX2dk Yl9yZWdpc3Rlcl9zdWZpeCAoZ2RiYXJjaCk7CisrICBpbnQgcmVnX3N1Zml4X2xlbiA9IHJlZ19z dWZpeCA/IHN0cmxlbiAocmVnX3N1Zml4KSA6IDA7CisrICBpbnQgcmVnX2luZF9zdWZpeF9sZW4g PSByZWdfaW5kX3N1Zml4ID8gc3RybGVuIChyZWdfaW5kX3N1Zml4KSA6IDA7CisrICBpbnQgZ2Ri X3JlZ19zdWZpeF9sZW4gPSBnZGJfcmVnX3N1Zml4ID8gc3RybGVuIChnZGJfcmVnX3N1Zml4KSA6 IDA7CisrCisrICAvKiBDaGVja2luZyBmb3IgYSBkaXNwbGFjZW1lbnQgYXJndW1lbnQuICAqLwor KyAgaWYgKCpwLT5hcmcgPT0gJysnKQorKyAgICAvKiBJZiBpdCdzIGEgcGx1cyBzaWduLCB3ZSBk b24ndCBuZWVkIHRvIGRvIGFueXRoaW5nLCBqdXN0IGFkdmFuY2UgdGhlCisrICAgICAgIHBvaW50 ZXIuICAqLworKyAgICArK3AtPmFyZzsKKysKKysgIGlmICgqcC0+YXJnID09ICctJykKICsgICAg ewotKyAgICAgICsrczsKLSsgICAgICBpZiAoISpzIHx8ICpzICE9ICclJwotKwkgIHx8ICgqcyA9 PSAnJScgJiYgIWlzYWxwaGEgKHNbMV0pKSkKLSsJZXJyb3IgKF8oIkludmFsaWQgcmVnaXN0ZXIg bmFtZSBvbiBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgICAgICBldmFsX2luZm8tPnNhdmVkX2V4 cHIpOwotKyAgICAgICsrczsKLSsgICAgICAvKiBUaGUgcHJlc2VuY2Ugb2YgcGFyZW50aGVzaXMg bWVhbnMgdGhhdCB3ZSB3YW50IHRvIGluZGlyZWN0Ci0rCSB0aGUgcmVnaXN0ZXIuICAqLwotKyAg ICAgIGluZGlyZWN0X3AgPSAxOworKyAgICAgIGdvdF9taW51cyA9IDE7CisrICAgICAgKytwLT5h cmc7CiArICAgIH0KLSsgIGVsc2UgaWYgKCpzID09ICclJykKKysKKysgIGlmIChpc2RpZ2l0ICgq cC0+YXJnKSkKICsgICAgewotKyAgICAgICsrczsKLSsgICAgICBpZiAoISpzIHx8ICFpc2FscGhh ICgqcykpCi0rCWVycm9yIChfKCJJbnZhbGlkIHJlZ2lzdGVyIG5hbWUgb24gZXhwcmVzc2lvbiBg JXMnLiIpLAotKwkgICAgICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysgICAgICAvKiBUaGUg dmFsdWUgb2YgdGhlIGRpc3BsYWNlbWVudC4gICovCisrICAgICAgbG9uZyBkaXNwbGFjZW1lbnQ7 CisrCisrICAgICAgZGlzcF9wID0gMTsKKysgICAgICBkaXNwbGFjZW1lbnQgPSBzdHJ0b2wgKHAt PmFyZywgKGNoYXIgKiopICZwLT5hcmcsIDEwKTsKKysKKysgICAgICAvKiBHZW5lcmF0aW5nIHRo ZSBleHByZXNzaW9uIGZvciB0aGUgZGlzcGxhY2VtZW50LiAgKi8KKysgICAgICB3cml0ZV9leHBf ZWx0X29wY29kZSAoT1BfTE9ORyk7CisrICAgICAgd3JpdGVfZXhwX2VsdF90eXBlIChidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2xvbmcpOworKyAgICAgIHdyaXRlX2V4cF9lbHRfbG9u Z2NzdCAoZGlzcGxhY2VtZW50KTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAoT1BfTE9O Ryk7CisrICAgICAgaWYgKGdvdF9taW51cykKKysJd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1Bf TkVHKTsKICsgICAgfQotKyAgZWxzZQotKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBu YW1lIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJICAgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsK LSsKLSsgIGlmIChkaXNwbGFjZW1lbnQgJiYgIWluZGlyZWN0X3ApCi0rICAgIC8qIFdlIGNhbm5v dCBhcHBseSBkaXNwbGFjZW1lbnQgdG8gbm9uLWluZGlyZWN0IHJlZ2lzdGVyIGFjY2Vzcy4gICov Ci0rICAgIGVycm9yIChfKCJUcnlpbmcgdG8gYXBwbHkgZGlzcGxhY2VtZW50IHdpdGhvdXQgaW5k aXJlY3RpbmcgcmVnaXN0ZXIgIgotKwkgICAgICJvbiBleHByZXNzaW9uIGAlcycuIiksIGV2YWxf aW5mby0+c2F2ZWRfZXhwcik7Ci0rCi0rICAvKiBPaywgbGV0J3MgY2FsY3VsYXRlIHRoZSBzaXpl IG9mIHRoZSByZWdpc3RlciBuYW1lLiAgKi8KLSsgIHN0YXJ0ID0gczsKLSsgIHdoaWxlIChpc2Fs bnVtICgqcykpCi0rICAgICsrczsKICsKLSsgIGxlbiA9IHMgLSBzdGFydDsKLSsKLSsgIGlmIChp bmRpcmVjdF9wICYmICpzID09ICcpJykKLSsgICAgKytzOwotKwotKyAgcmVnbmFtZSA9IGFsbG9j YSAobGVuICsgMSk7Ci0rICBzdHJuY3B5IChyZWduYW1lLCBzdGFydCwgbGVuKTsKLSsgIHJlZ25h bWVbbGVuXSA9ICdcMCc7Ci0rCi0rICAvKiBUcmFuc2xhdGluZyB0aGUgcmVnaXN0ZXIgbmFtZSBp bnRvIHRoZSBjb3JyZXNwb25kaW5nIG51bWJlci4gICovCi0rICByZWdudW0gPSB1c2VyX3JlZ19t YXBfbmFtZV90b19yZWdudW0gKGdkYmFyY2gsIHJlZ25hbWUsIGxlbik7Ci0rCi0rICBpZiAocmVn bnVtID09IC0xKQotKyAgICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24g ZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICByZWduYW1lLCBldmFsX2luZm8tPnNhdmVkX2V4cHIp OwotKwotKyAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsg ICAgYXhfcmVnIChldmFsX2luZm8tPmFleHByLCByZWdudW0pOwotKyAgZWxzZQotKyAgICByZXQg PSB2YWx1ZV9vZl9yZWdpc3RlciAocmVnbnVtLCBmcmFtZSk7Ci0rCi0rICBpZiAoaW5kaXJlY3Rf cCkKKysgIC8qIEdldHRpbmcgcmlkIG9mIHJlZ2lzdGVyIGluZGlyZWN0aW9uIHByZWZpeC4gICov CisrICBpZiAocmVnX2luZF9wcmVmaXgKKysgICAgICAmJiBzdHJuY21wIChwLT5hcmcsIHJlZ19p bmRfcHJlZml4LCByZWdfaW5kX3ByZWZpeF9sZW4pID09IDApCiArICAgIHsKLSsgICAgICBzdHJ1 Y3QgdHlwZSAqdCA9IE5VTEw7Ci0rICAgICAgZW51bSBhZ2VudF9vcCBhb3AgPSBhb3BfcmVmMzI7 CisrICAgICAgaW5kaXJlY3RfcCA9IDE7CisrICAgICAgcC0+YXJnICs9IHJlZ19pbmRfcHJlZml4 X2xlbjsKKysgICAgfQogKwotKyAgICAgIC8qIElmIHRoZSB1c2VyIGhhcyBzcGVjaWZpZWQgdGhh dCB0aGUgcmVnaXN0ZXIgbXVzdCBiZSBpbmRpcmVjdGVkLAotKwkgd2Ugc2hvdWxkIGtub3cgd2hh dCdzIHRoZSBjb3JyZWN0IHR5cGUgdG8gY2FzdCBpdCBiZWZvcmUgbWFraW5nCi0rCSB0aGUgaW5k aXJlY3Rpb24uICBUaGlzIHR5cGUgY29ycmVzcG9uZHMgdG8gdGhlIGJpdG5lc3Mgc3BlY2lmaWVk Ci0rCSBiZWZvcmUgdGhlIGBAJyBzaWduIG9uIHRoZSBhcmd1bWVudCBzdHJpbmcsIG9yIGl0IGRl ZmF1bHRzIHRvCi0rCSBgdW5zaWduZWQgbG9uZycgaWYgdGhlIGBAJyB3ZXJlIG5vdCBwcmVzZW50 LiAgKi8KKysgIGlmIChkaXNwX3AgJiYgIWluZGlyZWN0X3ApCisrICAgIGVycm9yIChfKCJJbnZh bGlkIHJlZ2lzdGVyIGRpc3BsYWNlbWVudCBzeW50YXggb24gZXhwcmVzc2lvbiBgJXMnLiIpLAor KwkgICBwLT5zYXZlZF9hcmcpOwogKwotKyAgICAgIHN3aXRjaCAoYml0bmVzcykKLSsJewotKwlj YXNlIFNUQVBfQVJHX0JJVE5FU1NfVU5ERUZJTkVEOgotKwkgIGlmIChTVEFQX0NPTVBJTElOR19B R0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChnZGJhcmNoX2Fk ZHJfYml0IChnZGJhcmNoKSA9PSAzMikKLSsJCWFvcCA9IGFvcF9yZWYzMjsKLSsJICAgICAgZWxz ZQotKwkJYW9wID0gYW9wX3JlZjY0OwotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAg ICAgaWYgKGdkYmFyY2hfYWRkcl9iaXQgKGdkYmFyY2gpID09IDMyKQotKwkJdCA9IGxvb2t1cF9w b2ludGVyX3R5cGUKLSsJCSAgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDMy KTsKLSsJICAgICAgZWxzZQotKwkJdCA9IGxvb2t1cF9wb2ludGVyX3R5cGUKLSsJCSAgKGJ1aWx0 aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5fdWludDY0KTsKLSsJICAgIH0KLSsJICBicmVhazsK KysgIC8qIEdldHRpbmcgcmlkIG9mIHJlZ2lzdGVyIHByZWZpeC4gICovCisrICBpZiAocmVnX3By ZWZpeCAmJiBzdHJuY21wIChwLT5hcmcsIHJlZ19wcmVmaXgsIHJlZ19wcmVmaXhfbGVuKSA9PSAw KQorKyAgICBwLT5hcmcgKz0gcmVnX3ByZWZpeF9sZW47CiArCi0rCWNhc2UgU1RBUF9BUkdfQklU TkVTU18zMkJJVF9TSUdORUQ6Ci0rCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAo ZXZhbF9pbmZvKSkKLSsJICAgIGFvcCA9IGFvcF9yZWYzMjsKLSsJICBlbHNlCi0rCSAgICB0ID0g bG9va3VwX3BvaW50ZXJfdHlwZQotKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9pbnQzMik7Ci0rCSAgYnJlYWs7CisrICAvKiBOb3cgd2Ugc2hvdWxkIGhhdmUgb25seSB0 aGUgcmVnaXN0ZXIgbmFtZS4gIExldCdzIGV4dHJhY3QgaXQgYW5kIGdldAorKyAgICAgdGhlIGFz c29jaWF0ZWQgbnVtYmVyLiAgKi8KKysgIHN0YXJ0ID0gcC0+YXJnOwogKwotKwljYXNlIFNUQVBf QVJHX0JJVE5FU1NfMzJCSVRfVU5TSUdORUQ6Ci0rCSAgaWYgKFNUQVBfQ09NUElMSU5HX0FHRU5U X0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsJICAgIGFvcCA9IGFvcF9yZWYzMjsKLSsJICBlbHNlCi0r CSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQotKwkgICAgICAoYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl91aW50MzIpOwotKwkgIGJyZWFrOworKyAgLyogV2UgYXNzdW1lIHRoZSBy ZWdpc3RlciBuYW1lIGlzIGNvbXBvc2VkIGJ5IGxldHRlcnMgYW5kIG51bWJlcnMuICAqLworKyAg d2hpbGUgKGlzYWxudW0gKCpwLT5hcmcpKQorKyAgICArK3AtPmFyZzsKICsKLSsJY2FzZSBTVEFQ X0FSR19CSVRORVNTXzY0QklUX1NJR05FRDoKLSsJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRf RVhQUl9QIChldmFsX2luZm8pKQotKwkgICAgYW9wID0gYW9wX3JlZjY0OwotKwkgIGVsc2UKLSsJ ICAgIHQgPSBsb29rdXBfcG9pbnRlcl90eXBlCi0rCSAgICAgIChidWlsdGluX3R5cGUgKGdkYmFy Y2gpLT5idWlsdGluX2ludDY0KTsKLSsJICBicmVhazsKKysgIGxlbiA9IHAtPmFyZyAtIHN0YXJ0 OwogKwotKwljYXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ6Ci0rCSAgaWYgKFNU QVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsJICAgIGFvcCA9IGFvcF9y ZWY2NDsKLSsJICBlbHNlCi0rCSAgICB0ID0gbG9va3VwX3BvaW50ZXJfdHlwZQotKwkgICAgICAo YnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50NjQpOwotKwkgIGJyZWFrOworKyAg cmVnbmFtZSA9IGFsbG9jYSAobGVuICsgZ2RiX3JlZ19wcmVmaXhfbGVuICsgZ2RiX3JlZ19zdWZp eF9sZW4gKyAxKTsKKysgIHJlZ25hbWVbMF0gPSAnXDAnOwogKwotKwlkZWZhdWx0OgotKwkgIGlu dGVybmFsX2Vycm9yIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkJICBfKCJVbmRlZmluZWQgYml0 bmVzcyBmb3IgcHJvYmUuIikpOwotKwkgIGJyZWFrOwotKwl9CisrICAvKiBXZSBvbmx5IGFkZCB0 aGUgR0RCJ3MgcmVnaXN0ZXIgcHJlZml4L3N1Zml4IGlmIHdlIGFyZSBkZWFsaW5nIHdpdGgKKysg ICAgIGEgbnVtZXJpYyByZWdpc3Rlci4gICovCisrICBpZiAoZ2RiX3JlZ19wcmVmaXggJiYgaXNk aWdpdCAoKnN0YXJ0KSkKKysgICAgeworKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUsIGdkYl9yZWdf cHJlZml4LCBnZGJfcmVnX3ByZWZpeF9sZW4pOworKyAgICAgIHN0cm5jcHkgKHJlZ25hbWUgKyBn ZGJfcmVnX3ByZWZpeF9sZW4sIHN0YXJ0LCBsZW4pOwogKwotKyAgICAgIGlmIChkaXNwbGFjZW1l bnQpCi0rCXsKLSsJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8p KQotKwkgICAgewotKwkgICAgICBheF9jb25zdF9sIChldmFsX2luZm8tPmFleHByLCB2YWx1ZV9h c19sb25nIChkaXNwbGFjZW1lbnQpKTsKLSsJICAgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFl eHByLCBhb3BfYWRkKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICByZXQgPSB2YWx1ZV9wdHJh ZGQgKHJldCwgdmFsdWVfYXNfbG9uZyAoZGlzcGxhY2VtZW50KSk7Ci0rCX0KKysgICAgICBpZiAo Z2RiX3JlZ19zdWZpeCkKKysJc3RybmNweSAocmVnbmFtZSArIGdkYl9yZWdfcHJlZml4X2xlbiAr IGxlbiwKKysJCSBnZGJfcmVnX3N1Zml4LCBnZGJfcmVnX3N1Zml4X2xlbik7CiArCi0rICAgICAg aWYgKFNUQVBfQ09NUElMSU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsJewotKwkgIGlm ICh0cmFjZV9rbHVkZ2UpCi0rCSAgICB7Ci0rCSAgICAgIGdkYl9hc3NlcnQgKGFvcCA9PSBhb3Bf cmVmMzIgfHwgYW9wID09IGFvcF9yZWY2NCk7Ci0rCSAgICAgIGF4X3RyYWNlX3F1aWNrIChldmFs X2luZm8tPmFleHByLCBhb3AgPT0gYW9wX3JlZjMyID8gNCA6IDgpOwotKwkgICAgfQotKwkgIGF4 X3NpbXBsZSAoZXZhbF9pbmZvLT5hZXhwciwgYW9wKTsKLSsJfQotKyAgICAgIGVsc2UKLSsJewot KwkgIHJldCA9IHZhbHVlX2Nhc3QgKHQsIHJldCk7Ci0rCSAgcmV0ID0gdmFsdWVfaW5kIChyZXQp OwotKwl9CisrICAgICAgbGVuICs9IGdkYl9yZWdfcHJlZml4X2xlbiArIGdkYl9yZWdfc3VmaXhf bGVuOwogKyAgICB9CisrICBlbHNlCisrICAgIHN0cm5jcHkgKHJlZ25hbWUsIHN0YXJ0LCBsZW4p OwogKwotKyAgLyogVXBkYXRpbmcgdGhlIGV4cHJlc3Npb24gYnVmZmVyIHBvaW50ZXIsIGJlY2F1 c2Ugd2UgaGF2ZSBtYWRlCi0rICAgICBzb21lIG1vZGlmaWNhdGlvbnMgdG8gaXQgYmVmb3JlLiAg Ki8KLSsgIGV2YWxfaW5mby0+ZXhwX2J1ZiA9IHM7Ci0rCi0rICByZXR1cm4gcmV0OwotK30KLSsK LSsvKiBUaGlzIGZ1bmN0aW9uIHRyaWVzIHRvIGV2YWx1YXRlIGEgc2luZ2xlIG9wZXJhbmQgb2Yg dGhlIGV4cHJlc3Npb24uCi0rCi0rICAgU2luZ2xlIG9wZXJhbmRzIGNhbiBiZToKLSsKLSsgICAt IHVuYXJ5IG9wZXJhdG9ycyBgLScgYW5kIGB+JzsKLSsgICAtIGludGVnZXIgY29uc3RhbnRzIChi ZWdpbm5pbmcgd2l0aCBgJCcpOwotKyAgIC0gcmVnaXN0ZXIgYWNjZXNzLCB3aXRoL291dCBkaXNw bGFjZW1lbnQgYW5kIGluZGlyZWN0aW9uLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoK LStzdGFwX2V2YWx1YXRlX3NpbmdsZV9vcGVyYW5kIChzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2lu Zm8gKmV2YWxfaW5mbykKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGV2YWxfaW5m by0+Z2RiYXJjaDsKLSsgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSA9IGV2YWxfaW5mby0+ZnJh bWU7Ci0rICBlbnVtIHN0YXBfYXJnX2JpdG5lc3MgYml0bmVzcyA9IGV2YWxfaW5mby0+Yml0bmVz czsKLSsgIHN0cnVjdCB2YWx1ZSAqcmVzID0gTlVMTDsKKysgIHJlZ25hbWVbbGVuXSA9ICdcMCc7 CisrICAvKiBJcyB0aGlzIGEgdmFsaWQgcmVnaXN0ZXIgbmFtZT8gICovCisrICBpZiAodXNlcl9y ZWdfbWFwX25hbWVfdG9fcmVnbnVtIChnZGJhcmNoLCByZWduYW1lLCBsZW4pID09IC0xKQorKyAg ICBlcnJvciAoXygiSW52YWxpZCByZWdpc3RlciBuYW1lIGAlcycgb24gZXhwcmVzc2lvbiBgJXMn LiIpLAorKwkgICByZWduYW1lLCBwLT5zYXZlZF9hcmcpOwogKwotKyAgaWYgKFNUQVBfQ09NUElM SU5HX0FHRU5UX0VYUFJfUCAoZXZhbF9pbmZvKSkKLSsgICAgLyogSWYgd2UgYXJlIGNvbXBpbGlu Zywgd2UgY2Fubm90IHJldHVybiBOVUxMIGJlY2F1c2UgdGhhdCB3b3VsZAotKyAgICAgICBsZWFk IHRvIGVycm9ycyBpbiBmdXR1cmUgZXZhbHVhdGlvbnMuICBUaGF0J3Mgd2h5IHdlIGp1c3QgbWFr ZQotKyAgICAgICB0aGlzIGR1bW15IHZhbHVlLCByZXByZXNlbnRpbmcgdGhhdCB0aGUgcmV0dXJu IHZhbHVlIG9mIHRoaXMKLSsgICAgICAgZnVuY3Rpb24gaXMgbm90IE5VTEwuICAqLwotKyAgICBy ZXMgPSB2YWx1ZV9mcm9tX2xvbmdlc3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f aW50LCAwKTsKKysgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChPUF9SRUdJU1RFUik7CisrICBzdHIu cHRyID0gcmVnbmFtZTsKKysgIHN0ci5sZW5ndGggPSBsZW47CisrICB3cml0ZV9leHBfc3RyaW5n IChzdHIpOworKyAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX1JFR0lTVEVSKTsKICsKLSsgIHN3 aXRjaCAoKmV2YWxfaW5mby0+ZXhwX2J1ZikKKysgIGlmIChpbmRpcmVjdF9wKQogKyAgICB7Ci0r ICAgIGNhc2UgJy0nOiBjYXNlICd+JzoKLSsJewotKwkgIGNoYXIgYyA9ICpldmFsX2luZm8tPmV4 cF9idWY7Ci0rCi0rCSAgLyogVGhpcyBpcyBhbiB1bmFyeSBvcGVyYXRvciAoZWl0aGVyIGAtJyBv ciBgficpLgorKyAgICAgIGlmIChkaXNwX3ApCisrCXdyaXRlX2V4cF9lbHRfb3Bjb2RlIChCSU5P UF9BREQpOwogKwotKwkgICAgIElmIGl0IGlzIGZvbGxvd2VkIGJ5IGEgcGFyZW50aGVzaXMsIGFu ZCB0aGlzIHBhcmVudGhlc2lzCi0rCSAgICAgaXMgTk9UIGZvbGxvd2VkIGJ5IGEgYCUnLCB0aGVu IHdlIGFyZSBkZWFsaW5nIHdpdGggYW4gZXhwcmVzc2lvbgotKwkgICAgIGxpa2UgYC0oMiArIDMp JyBvciBgfigyICsgMyknLiAgV2UganVzdCBoYXZlIHRvIHRyZWF0IHNlcGFyYXRlbHkKLSsJICAg ICBhbmQgcmV0dXJuIHRoZSByZXN1bHQgYWZ0ZXIgYXBwbHlpbmcgdGhlIG9wZXJhdGlvbiAoYC0n IG9yIGB+JykuCisrICAgICAgLyogQ2FzdGluZyB0byB0aGUgZXhwZWN0ZWQgdHlwZS4gICovCisr ICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrICAgICAgd3JpdGVfZXhw X2VsdF90eXBlIChsb29rdXBfcG9pbnRlcl90eXBlIChwLT5hcmdfdHlwZSkpOworKyAgICAgIHdy aXRlX2V4cF9lbHRfb3Bjb2RlIChVTk9QX0NBU1QpOwogKwotKwkgICAgIElmIGl0IGlzIGZvbGxv d2VkIGJ5IGEgZGlnaXQsIHRoZW4gd2UgaGF2ZSBvbmx5IG9uZSBjaG9pY2U6ICBpdAotKwkgICAg IGlzIGEgZGlzcGxhY2VtZW50IGFyZ3VtZW50IGZvciBhIHJlZ2lzdGVyIGFjY2VzcywgbGlrZQot KwkgICAgIGAtNCglZWF4KScuICBJdCBhbHNvIG1lYW5zIHRoYXQgdGhlIG9wZXJhdG9yIGNhbiAq b25seSogYmUgYC0nLAotKwkgICAgIGFuZCB0aGUgY2hhcmFjdGVycyBpbW1lZGlhdGVseSBhZnRl ciB0aGUgbnVtYmVyICptdXN0KiBiZSBgKCUnLgorKyAgICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2Rl IChVTk9QX0lORCk7CisrICAgIH0KICsKLSsJICAgICBJZiBpdCBpcyBmb2xsb3dlZCBieSBhIGAk JywgdGhlbiBpdCBpcyBhbiBpbnRlZ2VyIGNvbnN0YW50LCBhbmQKLSsJICAgICB3ZSBzaG91bGQg YXBwbHkgdGhlIGNvcnJlY3Qgb3BlcmF0aW9uIHRvIGl0LiAgKi8KKysgIC8qIEdldHRpbmcgcmlk IG9mIHRoZSByZWdpc3RlciBuYW1lIHN1Zml4LiAgKi8KKysgIGlmIChyZWdfc3VmaXgpCisrICAg IHsKKysgICAgICBpZiAoc3RybmNtcCAocC0+YXJnLCByZWdfc3VmaXgsIHJlZ19zdWZpeF9sZW4p ICE9IDApCisrCWVycm9yIChfKCJNaXNzaW5nIHJlZ2lzdGVyIG5hbWUgc3VmaXggYCVzJyBvbiBl eHByZXNzaW9uIGAlcycuIiksCisrCSAgICAgICByZWdfc3VmaXgsIHAtPnNhdmVkX2FyZyk7CiAr Ci0rCSAgKytldmFsX2luZm8tPmV4cF9idWY7Ci0rCSAgZXZhbF9pbmZvLT5leHBfYnVmID0gc2tp cF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1Zik7Ci0rCSAgaWYgKCpldmFsX2luZm8tPmV4cF9i dWYKLSsJICAgICAgJiYgKmV2YWxfaW5mby0+ZXhwX2J1ZiA9PSAnKCcKLSsJICAgICAgJiYgZXZh bF9pbmZvLT5leHBfYnVmWzFdICE9ICclJykKLSsJICAgIHsKLSsJICAgICAgc3RydWN0IHZhbHVl ICp0bXBfcmVzOworKyAgICAgIHAtPmFyZyArPSByZWdfc3VmaXhfbGVuOworKyAgICB9CiArCi0r CSAgICAgIC8qIFdlJ3JlIG5vdCBkZWFsaW5nIHdpdGggYSByZWdpc3RlciBuYW1lLCBidXQgd2l0 aCBhbgotKwkJIGV4cHJlc3Npb24gbGlrZSBgLSgyICsgMyknIG9yIGB+KDIgKyAzKScuICBXZSBm aXJzdCBoYXZlCi0rCQkgdG8gZXZhbHVhdGUgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGV4cHJlc3Np b24gKGkuZS4sIHRoZQotKwkJIHBhcmVudGhlc2lzKSwgYW5kIHRoZW4gYXBwbHkgdGhlIHNwZWNp ZmllZCBvcGVyYXRpb24KLSsJCSAoZWl0aGVyIGAtJyBvciBgficpIHRvIGl0LiAgKi8KLSsJICAg ICAgdG1wX3JlcyA9IHN0YXBfZXZhbHVhdGVfY29uZGl0aW9uYWxseSAoZXZhbF9pbmZvKTsKKysg IC8qIEdldHRpbmcgcmlkIG9mIHRoZSByZWdpc3RlciBpbmRpcmVjdGlvbiBzdWZpeC4gICovCisr ICBpZiAoaW5kaXJlY3RfcCAmJiByZWdfaW5kX3N1Zml4KQorKyAgICB7CisrICAgICAgaWYgKHN0 cm5jbXAgKHAtPmFyZywgcmVnX2luZF9zdWZpeCwgcmVnX2luZF9zdWZpeF9sZW4pICE9IDApCisr CWVycm9yIChfKCJNaXNzaW5nIGluZGlyZWN0aW9uIHN1Zml4IGAlcycgb24gZXhwcmVzc2lvbiBg JXMnLiIpLAorKwkgICAgICAgcmVnX2luZF9zdWZpeCwgcC0+c2F2ZWRfYXJnKTsKICsKLSsJICAg ICAgaWYgKGMgPT0gJy0nKQotKwkJewotKwkJICBpZiAoU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQ Ul9QIChldmFsX2luZm8pKQotKwkJICAgIHsKLSsJCSAgICAgIC8qIFdlIGhhdmUgdG8gYWRkIGAt MScgdG8gdGhlIHN0YWNrLCBhbmQgbXVsdGlwbHkKLSsJCQkgdGhlIHR3byB2YWx1ZXMuICAqLwot KwkJICAgICAgYXhfY29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgLTEpOwotKwkJICAgICAgYXhf c2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfbXVsKTsKLSsJCSAgICB9Ci0rCQkgIGVsc2UK LSsJCSAgICByZXMgPSB2YWx1ZV9uZWcgKHRtcF9yZXMpOwotKwkJfQotKwkgICAgICBlbHNlCi0r CQl7Ci0rCQkgIGlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCi0r CQkgICAgYXhfc2ltcGxlIChldmFsX2luZm8tPmFleHByLCBhb3BfYml0X25vdCk7Ci0rCQkgIGVs c2UKLSsJCSAgICByZXMgPSB2YWx1ZV9jb21wbGVtZW50ICh0bXBfcmVzKTsKLSsJCX0KLSsJICAg IH0KLSsJICBlbHNlIGlmIChpc2RpZ2l0ICgqZXZhbF9pbmZvLT5leHBfYnVmKSkKLSsJICAgIHsK LSsJICAgICAgaW50IG51bWJlcjsKLSsKLSsJICAgICAgLyogVGhpcyBpcyBhIG51bWJlciwgc28g aXQgTVVTVCBiZSBhIHJlZ2lzdGVyIGRpc3BsYWNlbWVudC4KLSsJCSBUaGUgb25seSBvcGVyYXRv ciBhbGxvd2VkIGhlcmUgaXMgYC0nLCBpdCBNVVNUIGJlCi0rCQkgZm9sbG93ZWQgYnkgYSBudW1i ZXIsIGFuZCB0aGUgbnVtYmVyIE1VU1QgYmUgZm9sbG93ZWQgYnkKLSsJCSBgKCUnLiAgKi8KLSsJ ICAgICAgaWYgKGMgIT0gJy0nKQotKwkJZXJyb3IgKF8oIkludmFsaWQgb3BlcmF0b3IgYCVjJyBm b3IgcmVnaXN0ZXIgZGlzcGxhY2VtZW50ICIKLSsJCQkgIm9uIGV4cHJlc3Npb24gYCVzJy4iKSwg YywgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKLSsKLSsJICAgICAgbnVtYmVyID0gc3RydG9sIChl dmFsX2luZm8tPmV4cF9idWYsCi0rCQkJICAgICAgICZldmFsX2luZm8tPmV4cF9idWYsIDApICog LTE7Ci0rCi0rCSAgICAgIGlmICghKmV2YWxfaW5mby0+ZXhwX2J1ZgotKwkJICB8fCAqZXZhbF9p bmZvLT5leHBfYnVmICE9ICcoJwotKwkJICB8fCAoKmV2YWxfaW5mby0+ZXhwX2J1ZiA9PSAnKCcK LSsJCSAgICAgICYmIGV2YWxfaW5mby0+ZXhwX2J1ZlsxXSAhPSAnJScpKQotKwkJZXJyb3IgKF8o IkludmFsaWQgbWV0aG9kIG9mIGluZGlyZWN0aW5nIGEgcmVnaXN0ZXIgb24gIgotKwkJCSAiZXhw cmVzc2lvbiBgJXMnLiIpLCBldmFsX2luZm8tPnNhdmVkX2V4cHIpOwotKwotKwkgICAgICByZXMK LSsJCT0gdmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGlu X2ludCwKLSsJCQkJICAgICAgbnVtYmVyKTsKLSsKLSsJICAgICAgcmVzID0gc3RhcF9mZXRjaF9y ZWdfdmFsdWUgKGV2YWxfaW5mbywgcmVzKTsKLSsJICAgIH0KLSsJICBlbHNlIGlmICgqZXZhbF9p bmZvLT5leHBfYnVmID09ICckJykKLSsJICAgIHsKLSsJICAgICAgaW50IG51bWJlcjsKLSsKLSsJ ICAgICAgLyogTGFzdCBjYXNlLiAgV2UgYXJlIGRlYWxpbmcgd2l0aCBhbiBpbnRlZ2VyIGNvbnN0 YW50LCBzbwotKwkJIHdlIG11c3QgcmVhZCBpdCBhbmQgdGhlbiBhcHBseSB0aGUgbmVjZXNzYXJ5 IG9wZXJhdGlvbiwKLSsJCSBlaXRoZXIgYC0nIG9yIGB+Jy4gICovCi0rCSAgICAgICsrZXZhbF9p bmZvLT5leHBfYnVmOwotKwkgICAgICBudW1iZXIgPSBzdHJ0b2wgKGV2YWxfaW5mby0+ZXhwX2J1 ZiwKLSsJCQkgICAgICAgJmV2YWxfaW5mby0+ZXhwX2J1ZiwgMCk7Ci0rCi0rCSAgICAgIGlmICgh U1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQotKwkJcmVzCi0rCQkgID0g dmFsdWVfZnJvbV9sb25nZXN0IChidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludCwK LSsJCQkJCW51bWJlcik7Ci0rCSAgICAgIGVsc2UKLSsJCWF4X2NvbnN0X2wgKGV2YWxfaW5mby0+ YWV4cHIsIG51bWJlcik7CisrICAgICAgcC0+YXJnICs9IHJlZ19pbmRfc3VmaXhfbGVuOworKyAg ICB9CisrfQogKwotKwkgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZh bF9pbmZvLT5leHBfYnVmKTsKKytzdGF0aWMgdm9pZAorK3N0YXBfcGFyc2Vfc2luZ2xlX29wZXJh bmQgKHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gKnApCisreworKyAgc3RydWN0IGdkYmFyY2ggKmdk YmFyY2ggPSBwLT5nZGJhcmNoOworKyAgLyogUHJlZml4ZXMgZm9yIHRoZSBwYXJzZXIuICAqLwor KyAgY29uc3QgY2hhciAqY29uc3RfcHJlZml4ID0gZ2RiYXJjaF9zdGFwX2ludGVnZXJfcHJlZml4 IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ19wcmVmaXggPSBnZGJhcmNoX3N0YXBfcmVn aXN0ZXJfcHJlZml4IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ19pbmRfcHJlZml4Cisr ICAgID0gZ2RiYXJjaF9zdGFwX3JlZ2lzdGVyX2luZGlyZWN0aW9uX3ByZWZpeCAoZ2RiYXJjaCk7 CisrICBpbnQgY29uc3RfcHJlZml4X2xlbiA9IGNvbnN0X3ByZWZpeCA/IHN0cmxlbiAoY29uc3Rf cHJlZml4KSA6IDA7CisrICBpbnQgcmVnX3ByZWZpeF9sZW4gPSByZWdfcHJlZml4ID8gc3RybGVu IChyZWdfcHJlZml4KSA6IDA7CisrICBpbnQgcmVnX2luZF9wcmVmaXhfbGVuID0gcmVnX2luZF9w cmVmaXggPyBzdHJsZW4gKHJlZ19pbmRfcHJlZml4KSA6IDA7CisrCisrICAvKiBTdWZpeGVzIGZv ciB0aGUgcGFyc2VyLiAgKi8KKysgIGNvbnN0IGNoYXIgKmNvbnN0X3N1Zml4ID0gZ2RiYXJjaF9z dGFwX2ludGVnZXJfc3VmaXggKGdkYmFyY2gpOworKyAgY29uc3QgY2hhciAqcmVnX3N1Zml4ID0g Z2RiYXJjaF9zdGFwX3JlZ2lzdGVyX3N1Zml4IChnZGJhcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJl Z19pbmRfc3VmaXgKKysgICAgPSBnZGJhcmNoX3N0YXBfcmVnaXN0ZXJfaW5kaXJlY3Rpb25fc3Vm aXggKGdkYmFyY2gpOworKyAgaW50IGNvbnN0X3N1Zml4X2xlbiA9IGNvbnN0X3N1Zml4ID8gc3Ry bGVuIChjb25zdF9zdWZpeCkgOiAwOworKyAgaW50IHJlZ19zdWZpeF9sZW4gPSByZWdfc3VmaXgg PyBzdHJsZW4gKHJlZ19zdWZpeCkgOiAwOworKyAgaW50IHJlZ19pbmRfc3VmaXhfbGVuID0gcmVn X2luZF9zdWZpeCA/IHN0cmxlbiAocmVnX2luZF9zdWZpeCkgOiAwOworKworKyAgLyogV2UgZmly c3QgdHJ5IHRvIHBhcnNlIHRoaXMgdG9rZW4gYXMgYSAic3BlY2lhbCB0b2tlbiIuICAqLworKyAg aWYgKGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuX3AgKGdkYmFyY2gpKQorKyAgICB7 CisrICAgICAgaW50IHJldCA9IGdkYmFyY2hfc3RhcF9wYXJzZV9zcGVjaWFsX3Rva2VuIChnZGJh cmNoLCBwKTsKICsKLSsJICAgICAgaWYgKGMgPT0gJy0nKQotKwkJewotKwkJICBpZiAoU1RBUF9D T01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pKQotKwkJICAgIGF4X3NpbXBsZSAoZXZh bF9pbmZvLT5hZXhwciwgYW9wX2xvZ19ub3QpOwotKwkJICBlbHNlCi0rCQkgICAgcmVzID0gdmFs dWVfbmVnIChyZXMpOwotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIGlmIChTVEFQX0NP TVBJTElOR19BR0VOVF9FWFBSX1AgKGV2YWxfaW5mbykpCi0rCQkgICAgYXhfc2ltcGxlIChldmFs X2luZm8tPmFleHByLCBhb3BfYml0X25vdCk7Ci0rCQkgIGVsc2UKLSsJCSAgICByZXMgPSB2YWx1 ZV9jb21wbGVtZW50IChyZXMpOwotKwkJfQotKwkgICAgfQotKwkgIGVsc2UKLSsJICAgIGVycm9y IChfKCJJbnZhbGlkIG9wZXJhbmQgdG8gdW5hcnkgb3BlcmF0b3IgYCVjJyBvbiAiCi0rCQkgICAg ICJleHByZXNzaW9uIGAlcycuIiksIGMsIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7Ci0rCX0KLSsg ICAgICBicmVhazsKKysgICAgICBpZiAocmV0KQorKwkvKiBJZiB0aGUgcmV0dXJuIHZhbHVlIG9m IHRoZSBhYm92ZSBmdW5jdGlvbiBpcyBub3QgemVybywKKysJICAgaXQgbWVhbnMgaXQgc3VjY2Vz c2Z1bGx5IHBhcnNlZCB0aGUgc3BlY2lhbCB0b2tlbi4KICsKLSsgICAgY2FzZSAnMCc6IGNhc2Ug JzEnOiBjYXNlICcyJzogY2FzZSAnMyc6IGNhc2UgJzQnOgotKyAgICBjYXNlICc1JzogY2FzZSAn Nic6IGNhc2UgJzcnOiBjYXNlICc4JzogY2FzZSAnOSc6Ci0rICAgICAgewotKwlpbnQgbnVtYmVy ID0gc3RydG9sIChldmFsX2luZm8tPmV4cF9idWYsICZldmFsX2luZm8tPmV4cF9idWYsIDApOwor KwkgICBJZiBpdCBpcyBOVUxMLCB3ZSB0cnkgdG8gcGFyc2UgaXQgdXNpbmcgb3VyIG1ldGhvZC4g ICovCisrCXJldHVybjsKKysgICAgfQogKwotKwkvKiBUaGlzIGlzIGEgcmVnaXN0ZXIgZGlzcGxh Y2VtZW50IHdpdGggYSBwb3NpdGl2ZSB2YWx1ZS4gIFdlIHJlYWQKLSsJICAgdGhlIG51bWJlciwg YW5kIHRoZW4gY2hlY2sgZm9yIHRoZSBtYW5kYXRvcnkgYCglJyBwYXJ0LiAgKi8KLSsJaWYgKCEq ZXZhbF9pbmZvLT5leHBfYnVmCi0rCSAgICB8fCAhKCpldmFsX2luZm8tPmV4cF9idWYgPT0gJygn Ci0rCQkgJiYgZXZhbF9pbmZvLT5leHBfYnVmWzFdID09ICclJykpCi0rCSAgZXJyb3IgKF8oIklu dmFsaWQgcmVnaXN0ZXIgYWNjZXNzIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwKLSsJCSBldmFsX2lu Zm8tPnNhdmVkX2V4cHIpOworKyAgaWYgKCpwLT5hcmcgPT0gJy0nIHx8ICpwLT5hcmcgPT0gJ34n IHx8ICpwLT5hcmcgPT0gJysnKQorKyAgICB7CisrICAgICAgY2hhciBjID0gKnAtPmFyZzsKKysg ICAgICAvKiBXZSB1c2UgdGhpcyB2YXJpYWJsZSB0byBkbyBhIGxvb2thaGVhZC4gICovCisrICAg ICAgY29uc3QgY2hhciAqdG1wID0gcC0+YXJnOwogKwotKwlyZXMgPSB2YWx1ZV9mcm9tX2xvbmdl c3QgKGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5faW50LAotKwkJCQkgIG51bWJlcik7 CisrICAgICAgKyt0bXA7CiArCi0rCXJlcyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChldmFsX2lu Zm8sIHJlcyk7Ci0rICAgICAgfQotKyAgICBicmVhazsKKysgICAgICAvKiBUaGlzIGlzIGFuIHVu YXJ5IG9wZXJhdGlvbi4gIEhlcmUgaXMgYSBsaXN0IG9mIGFsbG93ZWQgdG9rZW5zCisrCSBoZXJl OgogKwotKyAgICBjYXNlICckJzoKLSsgICAgICB7Ci0rCWludCBudW1iZXI7CisrCSAtIG51bWVy aWMgbGl0ZXJhbDsKKysJIC0gbnVtYmVyIChmcm9tIHJlZ2lzdGVyIGRpc3BsYWNlbWVudCkKKysJ IC0gc3ViZXhwcmVzc2lvbiAoYmVnaW5uaW5nIHdpdGggYCgnKQogKwotKwkvKiBUaGlzIGlzIGFu IGludGVnZXIgY29uc3RhbnQuICBXZSBqdXN0IGhhdmUgdG8gcmVhZCB0aGUgbnVtYmVyCi0rCSAg IGFuZCByZXR1cm4gaXQuICAqLwotKwkrK2V2YWxfaW5mby0+ZXhwX2J1ZjsKLSsJZXZhbF9pbmZv LT5leHBfYnVmID0gc2tpcF9zcGFjZXMgKGV2YWxfaW5mby0+ZXhwX2J1Zik7CisrCSBXZSBoYW5k bGUgdGhlIHJlZ2lzdGVyIGRpc3BsYWNlbWVudCBoZXJlLCBhbmQgdGhlIG90aGVyIGNhc2VzCisr CSByZWN1cnNpdmVseS4gICovCisrICAgICAgaWYgKGlzZGlnaXQgKCp0bXApKQorKwl7CisrCSAg aW50IG51bWJlciA9IHN0cnRvbCAodG1wLCAoY2hhciAqKikgJnRtcCwgMTApOwogKwotKwludW1i ZXIgPSBzdHJ0b2wgKGV2YWxfaW5mby0+ZXhwX2J1ZiwgJmV2YWxfaW5mby0+ZXhwX2J1ZiwgMCk7 CisrCSAgaWYgKHAtPmluc2lkZV9wYXJlbl9wKQorKwkgICAgdG1wID0gc2tpcF9zcGFjZXNfY29u c3QgKHRtcCk7CisrCSAgaWYgKCFyZWdfaW5kX3ByZWZpeAorKwkgICAgICB8fCBzdHJuY21wICh0 bXAsIHJlZ19pbmRfcHJlZml4LCByZWdfaW5kX3ByZWZpeF9sZW4pICE9IDApCisrCSAgICBnb3Rv IG5vdF9kaXNwbGFjZW1lbnQ7CiArCi0rCWlmIChTVEFQX0NPTVBJTElOR19BR0VOVF9FWFBSX1Ag KGV2YWxfaW5mbykpCi0rCSAgYXhfY29uc3RfbCAoZXZhbF9pbmZvLT5hZXhwciwgbnVtYmVyKTsK LSsJZWxzZQotKwkgIHJlcyA9IHZhbHVlX2Zyb21fbG9uZ2VzdCAoYnVpbHRpbl90eXBlIChnZGJh cmNoKS0+YnVpbHRpbl9pbnQsCi0rCQkJCSAgICBudW1iZXIpOworKwkgIC8qIElmIHdlIGFyZSBo ZXJlLCBpdCBtZWFucyBpdCBpcyBhIGRpc3BsYWNlbWVudC4gIFRoZSBvbmx5CisrCSAgICAgb3Bl cmF0aW9ucyBhbGxvd2VkIGhlcmUgYXJlIGAtJyBhbmQgYCsnLiAgKi8KKysJICBpZiAoYyA9PSAn ficpCisrCSAgICBlcnJvciAoXygiSW52YWxpZCBvcGVyYXRvciBgJWMnIGZvciByZWdpc3RlciBk aXNwbGFjZW1lbnQgIgorKwkJICAgICAib24gZXhwcmVzc2lvbiBgJXMnLiIpLCBjLCBwLT5zYXZl ZF9hcmcpOwogKwotKwlldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZv LT5leHBfYnVmKTsKLSsgICAgICB9Ci0rICAgIGJyZWFrOworKwkgIHN0YXBfcGFyc2VfcmVnaXN0 ZXJfb3BlcmFuZCAocCk7CisrCX0KKysgICAgICBlbHNlCisrbm90X2Rpc3BsYWNlbWVudDoKKysJ eworKwkgIHAtPmFyZyA9IHRtcDsKKysJICBzdGFwX3BhcnNlX2FyZ3VtZW50X2NvbmRpdGlvbmFs bHkgKHApOworKwkgIGlmIChjID09ICctJykKKysJICAgIHdyaXRlX2V4cF9lbHRfb3Bjb2RlIChV Tk9QX05FRyk7CisrCSAgZWxzZSBpZiAoYyA9PSAnficpCisrCSAgICB3cml0ZV9leHBfZWx0X29w Y29kZSAoVU5PUF9DT01QTEVNRU5UKTsKKysJfQorKyAgICB9CisrICBlbHNlIGlmIChpc2RpZ2l0 ICgqcC0+YXJnKSkKKysgICAgeworKyAgICAgIC8qIEEgdGVtcG9yYXJ5IHZhcmlhYmxlLCBuZWVk ZWQgZm9yIGxvb2thaGVhZC4gICovCisrICAgICAgY29uc3QgY2hhciAqdG1wID0gcC0+YXJnOwor KyAgICAgIGxvbmcgbnVtYmVyOworKworKyAgICAgIC8qIFdlIGNhbiBiZSBkZWFsaW5nIHdpdGgg YSBudW1lcmljIGNvbnN0YW50IChpZiBgY29uc3RfcHJlZml4JyBpcworKwkgTlVMTCksIG9yIHdp dGggYSByZWdpc3RlciBkaXNwbGFjZW1lbnQuICAqLworKyAgICAgIG51bWJlciA9IHN0cnRvbCAo dG1wLCAoY2hhciAqKikgJnRtcCwgMTApOworKworKyAgICAgIGlmIChwLT5pbnNpZGVfcGFyZW5f cCkKKysJdG1wID0gc2tpcF9zcGFjZXNfY29uc3QgKHRtcCk7CisrICAgICAgaWYgKCFjb25zdF9w cmVmaXggJiYgcmVnX2luZF9wcmVmaXgKKysJICAmJiBzdHJuY21wICh0bXAsIHJlZ19pbmRfcHJl Zml4LCByZWdfaW5kX3ByZWZpeF9sZW4pICE9IDApCisrCXsKKysJICAvKiBXZSBhcmUgZGVhbGlu ZyB3aXRoIGEgbnVtZXJpYyBjb25zdGFudC4gICovCisrCSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUg KE9QX0xPTkcpOworKwkgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlIChnZGJhcmNo KS0+YnVpbHRpbl9sb25nKTsKKysJICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKG51bWJlcik7Cisr CSAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOwogKwotKyAgICBjYXNlICcoJzogY2Fz ZSAnJSc6Ci0rICAgICAgewotKwkvKiBSZWdpc3RlciBhY2Nlc3MsIHdpdGggb3Igd2l0aG91dCBp bmRpcmVjdGlvbi4gICovCi0rCXJlcyA9IHN0YXBfZmV0Y2hfcmVnX3ZhbHVlIChldmFsX2luZm8s IC8qZGlzcGxhY2VtZW50PSovTlVMTCk7Ci0rCWV2YWxfaW5mby0+ZXhwX2J1ZiA9IHNraXBfc3Bh Y2VzIChldmFsX2luZm8tPmV4cF9idWYpOwotKyAgICAgIH0KLSsgICAgYnJlYWs7CisrCSAgcC0+ YXJnID0gdG1wOwogKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHsKLSsJZXJyb3IgKF8oIk9wZXJh dG9yIGAlYycgbm90IHJlY29nbml6ZWQgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAotKwkgICAgICAg KmV2YWxfaW5mby0+ZXhwX2J1ZiwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKLSsgICAgICB9Cisr CSAgaWYgKGNvbnN0X3N1Zml4KQorKwkgICAgeworKwkgICAgICBpZiAoc3RybmNtcCAocC0+YXJn LCBjb25zdF9zdWZpeCwgY29uc3Rfc3VmaXhfbGVuKSA9PSAwKQorKwkJcC0+YXJnICs9IGNvbnN0 X3N1Zml4X2xlbjsKKysJICAgICAgZWxzZQorKwkJZXJyb3IgKF8oIkludmFsaWQgY29uc3RhbnQg c3VmaXggb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkJICAgICAgIHAtPnNhdmVkX2FyZyk7Cisr CSAgICB9CisrCX0KKysgICAgICBlbHNlIGlmIChyZWdfaW5kX3ByZWZpeAorKwkgICAgICAgJiYg c3RybmNtcCAodG1wLCByZWdfaW5kX3ByZWZpeCwgcmVnX2luZF9wcmVmaXhfbGVuKSA9PSAwKQor KwlzdGFwX3BhcnNlX3JlZ2lzdGVyX29wZXJhbmQgKHApOworKyAgICAgIGVsc2UKKysJZXJyb3Ig KF8oIlVua25vd24gbnVtZXJpYyB0b2tlbiBvbiBleHByZXNzaW9uIGAlcycuIiksCisrCSAgICAg ICBwLT5zYXZlZF9hcmcpOwogKyAgICB9CisrICBlbHNlIGlmIChjb25zdF9wcmVmaXgKKysJICAg JiYgc3RybmNtcCAocC0+YXJnLCBjb25zdF9wcmVmaXgsIGNvbnN0X3ByZWZpeF9sZW4pID09IDAp CisrICAgIHsKKysgICAgICAvKiBXZSBhcmUgZGVhbGluZyB3aXRoIGEgbnVtZXJpYyBjb25zdGFu dC4gICovCisrICAgICAgbG9uZyBudW1iZXI7CiArCi0rICByZXR1cm4gcmVzOwotK30KKysgICAg ICBwLT5hcmcgKz0gY29uc3RfcHJlZml4X2xlbjsKKysgICAgICBudW1iZXIgPSBzdHJ0b2wgKHAt PmFyZywgKGNoYXIgKiopICZwLT5hcmcsIDEwKTsKICsKLSsvKiBUaGlzIGZ1bmN0aW9uIGlzIHJl c3BvbnNpYmxlIGZvciBjaGVja2luZyB0aGUgbmVjZXNzYXJ5IHR5cGUgb2YgZXZhbHVhdGlvbgot KyAgIGRlcGVuZGluZyBvbiB3aGF0IGlzIHRoZSBuZXh0ICJ0aGluZyIgaW4gdGhlIGJ1ZmZlci4g IFZhbGlkIHZhbHVlcyBhcmU6CisrICAgICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcp OworKyAgICAgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVp bHRpbl9sb25nKTsKKysgICAgICB3cml0ZV9leHBfZWx0X2xvbmdjc3QgKG51bWJlcik7CisrICAg ICAgd3JpdGVfZXhwX2VsdF9vcGNvZGUgKE9QX0xPTkcpOwogKwotKyAgIC0gVW5hcnkgb3BlcmF0 b3JzOwotKyAgIC0gSW50ZWdlciBjb25zdGFudHM7Ci0rICAgLSBSZWdpc3RlciBkaXNwbGFjZW1l bnQsIGluZGlyZWN0aW9uLCBhbmQgZGlyZWN0IGFjY2VzczsKLSsgICAtIFBhcmVudGhlc2l6ZWQg b3BlcmFuZC4gICovCisrICAgICAgaWYgKGNvbnN0X3N1Zml4KQorKwl7CisrCSAgaWYgKHN0cm5j bXAgKHAtPmFyZywgY29uc3Rfc3VmaXgsIGNvbnN0X3N1Zml4X2xlbikgPT0gMCkKKysJICAgIHAt PmFyZyArPSBjb25zdF9zdWZpeF9sZW47CisrCSAgZWxzZQorKwkgICAgZXJyb3IgKF8oIkludmFs aWQgY29uc3RhbnQgc3VmaXggb24gZXhwcmVzc2lvbiBgJXMnLiIpLAorKwkJICAgcC0+c2F2ZWRf YXJnKTsKKysJfQorKyAgICB9CisrICBlbHNlIGlmICgocmVnX3ByZWZpeAorKwkgICAgJiYgc3Ry bmNtcCAocC0+YXJnLCByZWdfcHJlZml4LCByZWdfcHJlZml4X2xlbikgPT0gMCkKKysJICAgfHwg KHJlZ19pbmRfcHJlZml4CisrCSAgICAgICAmJiBzdHJuY21wIChwLT5hcmcsIHJlZ19pbmRfcHJl Zml4LCByZWdfaW5kX3ByZWZpeF9sZW4pID09IDApKQorKyAgICBzdGFwX3BhcnNlX3JlZ2lzdGVy X29wZXJhbmQgKHApOworKyAgZWxzZQorKyAgICBlcnJvciAoXygiT3BlcmF0b3IgYCVjJyBub3Qg cmVjb2duaXplZCBvbiBleHByZXNzaW9uIGAlcycuIiksCisrCSAgICpwLT5hcmcsIHAtPnNhdmVk X2FyZyk7CisrfQogKwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotK3N0YXBfZXZhbHVhdGVfY29u ZGl0aW9uYWxseSAoc3RydWN0IHN0YXBfZXZhbHVhdGlvbl9pbmZvICpldmFsX2luZm8pCi0rewot KyAgY2hhciAqcyA9IGV2YWxfaW5mby0+ZXhwX2J1ZjsKLSsgIHN0cnVjdCB2YWx1ZSAqcmV0ID0g TlVMTDsKLSsKLSsgIGlmICgqcyA9PSAnLScgfHwgKnMgPT0gJ34nIC8qIFVuYXJ5IG9wZXJhdG9y cy4gICovCi0rICAgICAgfHwgKnMgPT0gJyQnIC8qIE51bWJlciAoaW50ZWdlciBjb25zdGFudCku ICAqLwotKyAgICAgIHx8IChpc2RpZ2l0ICgqcykgJiYgc1sxXSA9PSAnKCcgJiYgc1syXSA9PSAn JScpIC8qIERpc3BsYWNlbWVudC4gICovCi0rICAgICAgfHwgKCpzID09ICcoJyAmJiBzWzFdID09 ICclJykgLyogUmVnaXN0ZXIgaW5kaXJlY3Rpb24uICAqLwotKyAgICAgIHx8ICgqcyA9PSAnJScg JiYgaXNhbHBoYSAoc1sxXSkpKSAvKiBSZWdpc3RlciB2YWx1ZS4gICovCi0rICAgIC8qIFRoaXMg aXMgYSBzaW5nbGUgb3BlcmFuZCwgc28ganVzdCBldmFsdWF0ZSBpdCBhbmQgcmV0dXJuLiAgKi8K LSsgICAgcmV0ID0gc3RhcF9ldmFsdWF0ZV9zaW5nbGVfb3BlcmFuZCAoZXZhbF9pbmZvKTsKLSsg IGVsc2UgaWYgKCpzID09ICcoJykKKytzdGF0aWMgdm9pZAorK3N0YXBfcGFyc2VfYXJndW1lbnRf Y29uZGl0aW9uYWxseSAoc3RydWN0IHN0YXBfcGFyc2VfaW5mbyAqcCkKKyt7CisrICBpZiAoKnAt PmFyZyA9PSAnLScgfHwgKnAtPmFyZyA9PSAnficgfHwgKnAtPmFyZyA9PSAnKycgLyogVW5hcnku ICAqLworKyAgICAgIHx8IGdkYmFyY2hfc3RhcF9pc19zaW5nbGVfb3BlcmFuZCAocC0+Z2RiYXJj aCwgcC0+YXJnKSkKKysgICAgc3RhcF9wYXJzZV9zaW5nbGVfb3BlcmFuZCAocCk7CisrICBlbHNl IGlmICgqcC0+YXJnID09ICcoJykKICsgICAgewogKyAgICAgIC8qIFdlIGFyZSBkZWFsaW5nIHdp dGggYSBwYXJlbnRoZXNpemVkIG9wZXJhbmQuICBJdCBtZWFucyB3ZQotKwkgaGF2ZSB0byBldmFs dWF0ZSBpdCBhcyBpdCB3YXMgYSBzZXBhcmF0ZSBleHByZXNzaW9uLCB3aXRob3V0CisrCSBoYXZl IHRvIHBhcnNlIGl0IGFzIGl0IHdhcyBhIHNlcGFyYXRlIGV4cHJlc3Npb24sIHdpdGhvdXQKICsJ IGxlZnQtc2lkZSBvciBwcmVjZWRlbmNlLiAgKi8KLSsgICAgICArK2V2YWxfaW5mby0+ZXhwX2J1 ZjsKLSsgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5l eHBfYnVmKTsKKysgICAgICArK3AtPmFyZzsKKysgICAgICBwLT5hcmcgPSBza2lwX3NwYWNlc19j b25zdCAocC0+YXJnKTsKKysgICAgICArK3AtPmluc2lkZV9wYXJlbl9wOwogKwotKyAgICAgIHJl dCA9IHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMiAoZXZhbF9pbmZvLAotKwkJCQkJICAg IC8qbGhzPSovTlVMTCwgLypwcmVjPSovMCk7CisrICAgICAgc3RhcF9wYXJzZV9hcmd1bWVudF8x IChwLCAwLCBTVEFQX09QRVJBTkRfUFJFQ19OT05FKTsKICsKLSsgICAgICBpZiAoKmV2YWxfaW5m by0+ZXhwX2J1ZiAhPSAnKScpCisrICAgICAgLS1wLT5pbnNpZGVfcGFyZW5fcDsKKysgICAgICBp ZiAoKnAtPmFyZyAhPSAnKScpCiArCWVycm9yIChfKCJNaXNzaWduIGNsb3NlLXBhcmVuIG9uIGV4 cHJlc3Npb24gYCVzJy4iKSwKLSsJICAgICAgIGV2YWxfaW5mby0+c2F2ZWRfZXhwcik7CisrCSAg ICAgICBwLT5zYXZlZF9hcmcpOwogKwotKyAgICAgICsrZXZhbF9pbmZvLT5leHBfYnVmOwotKyAg ICAgIGV2YWxfaW5mby0+ZXhwX2J1ZiA9IHNraXBfc3BhY2VzIChldmFsX2luZm8tPmV4cF9idWYp OworKyAgICAgICsrcC0+YXJnOworKyAgICAgIGlmIChwLT5pbnNpZGVfcGFyZW5fcCkKKysJcC0+ YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7CiArICAgIH0KICsgIGVsc2UKLSsgICAg ZXJyb3IgKF8oIkNhbm5vdCBldmFsdWF0ZSBleHByZXNzaW9uIGAlcycuIiksCi0rCSAgIGV2YWxf aW5mby0+c2F2ZWRfZXhwcik7Ci0rCi0rICByZXR1cm4gcmV0OworKyAgICBlcnJvciAoXygiQ2Fu bm90IHBhcnNlIGV4cHJlc3Npb24gYCVzJy4iKSwgcC0+c2F2ZWRfYXJnKTsKICt9CiArCi0rLyog RXZhbHVhdGlvbiBmdW5jdGlvbiBmb3IgcHJvYmUncyBhcmd1bWVudCBleHByZXNzaW9ucy4gIExI UyByZXByZXNlbnRzCi0rICAgdGhlIGxlZnQgc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwgYW5kIFBS RUMgaXMgdGhlIHByZWNlZGVuY2Ugb2YgdGhlCi0rICAgbGFzdCBvcGVyYXRvciBpZGVudGlmaWVk IGJlZm9yZSBjYWxsaW5nIHRoZSBmdW5jdGlvbi4gICovCi0rCi0rc3RhdGljIHN0cnVjdCB2YWx1 ZSAqCi0rc3RhcF9ldmFsdWF0ZV9wcm9iZV9hcmd1bWVudF8yIChzdHJ1Y3Qgc3RhcF9ldmFsdWF0 aW9uX2luZm8gKmV2YWxfaW5mbywKLSsJCQkJc3RydWN0IHZhbHVlICpsaHMsIGludCBwcmVjKQor K3N0YXRpYyB2b2lkCisrc3RhcF9wYXJzZV9hcmd1bWVudF8xIChzdHJ1Y3Qgc3RhcF9wYXJzZV9p bmZvICpwLCBpbnQgaGFzX2xocywKKysJCSAgICAgICBlbnVtIHN0YXBfb3BlcmFuZF9wcmVjIHBy ZWMpCiArewotKyAgc3RydWN0IHZhbHVlICpyaHMgPSBOVUxMOwotKyAgaW50IGNvbXBpbGluZ19w ID0gU1RBUF9DT01QSUxJTkdfQUdFTlRfRVhQUl9QIChldmFsX2luZm8pOwotKwotKyAgLyogVGhp cyBpcyBhbiBvcGVyYXRvci1wcmVjZWRlbmNlIHBhcnNlciBhbmQgZXZhbHVhdG9yLgorKyAgLyog VGhpcyBpcyBhbiBvcGVyYXRvci1wcmVjZWRlbmNlIHBhcnNlci4KICsKICsgICAgIFdlIHdvcmsg d2l0aCBsZWZ0LSBhbmQgcmlnaHQtc2lkZXMgb2YgZXhwcmVzc2lvbnMsIGFuZAotKyAgICAgZXZh bHVhdGUgdGhlbSBkZXBlbmRpbmcgb24gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJhdG9ycwor KyAgICAgcGFyc2UgdGhlbSBkZXBlbmRpbmcgb24gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIG9wZXJh dG9ycwogKyAgICAgd2UgZmluZC4gICovCiArCi0rICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lw X3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVmKTsKKysgIGlmIChwLT5pbnNpZGVfcGFyZW5fcCkK KysgICAgcC0+YXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAtPmFyZyk7CiArCi0rICBpZiAoIWxo cykKKysgIGlmICghaGFzX2xocykKICsgICAgLyogV2Ugd2VyZSBjYWxsZWQgd2l0aG91dCBhIGxl ZnQtc2lkZSwgZWl0aGVyIGJlY2F1c2UgdGhpcyBpcyB0aGUKLSsgICAgICAgZmlyc3QgY2FsbCwg b3IgYmVjYXVzZSB3ZSB3ZXJlIGNhbGxlZCB0byBldmFsdWF0ZSBhIHBhcmVudGhlc2l6ZWQKLSsg ICAgICAgZXhwcmVzc2lvbi4gIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlcjsgd2UgaGF2ZSB0byBl dmFsdWF0ZSB0aGUKKysgICAgICAgZmlyc3QgY2FsbCwgb3IgYmVjYXVzZSB3ZSB3ZXJlIGNhbGxl ZCB0byBwYXJzZSBhIHBhcmVudGhlc2l6ZWQKKysgICAgICAgZXhwcmVzc2lvbi4gIEl0IGRvZXNu J3QgcmVhbGx5IG1hdHRlcjsgd2UgaGF2ZSB0byBwYXJzZSB0aGUKICsgICAgICAgbGVmdC1zaWRl IGluIG9yZGVyIHRvIGNvbnRpbnVlIHRoZSBwcm9jZXNzLiAgKi8KLSsgICAgbGhzID0gc3RhcF9l dmFsdWF0ZV9jb25kaXRpb25hbGx5IChldmFsX2luZm8pOworKyAgICBzdGFwX3BhcnNlX2FyZ3Vt ZW50X2NvbmRpdGlvbmFsbHkgKHApOwogKwotKyAgLyogU3RhcnQgdG8gZXZhbHVhdGUgdGhlIHJp Z2h0LXNpZGUsIGFuZCB0byAiam9pbiIgbGVmdCBhbmQgcmlnaHQgc2lkZXMKKysgIC8qIFN0YXJ0 IHRvIHBhcnNlIHRoZSByaWdodC1zaWRlLCBhbmQgdG8gImpvaW4iIGxlZnQgYW5kIHJpZ2h0IHNp ZGVzCiArICAgICBkZXBlbmRpbmcgb24gdGhlIG9wZXJhdGlvbiBzcGVjaWZpZWQuCiArCiArICAg ICBUaGlzIGxvb3Agc2hhbGwgY29udGludWUgdW50aWwgd2UgcnVuIG91dCBvZiBjaGFyYWN0ZXJz IGluIHRoZSBpbnB1dCwKICsgICAgIG9yIHVudGlsIHdlIGZpbmQgYSBjbG9zZS1wYXJlbnRoZXNp cywgd2hpY2ggbWVhbnMgdGhhdCB3ZSd2ZSByZWFjaGVkCiArICAgICB0aGUgZW5kIG9mIGEgc3Vi LWV4cHJlc3Npb24uICAqLwotKyAgd2hpbGUgKGV2YWxfaW5mby0+ZXhwX2J1ZgotKwkgJiYgKmV2 YWxfaW5mby0+ZXhwX2J1ZgotKwkgJiYgKmV2YWxfaW5mby0+ZXhwX2J1ZiAhPSAnKScpCisrICB3 aGlsZSAocC0+YXJnICYmICpwLT5hcmcgJiYgKnAtPmFyZyAhPSAnKScgJiYgIWlzc3BhY2UgKCpw LT5hcmcpKQogKyAgICB7Ci0rICAgICAgY2hhciAqdG1wX2V4cF9idWY7CisrICAgICAgY29uc3Qg Y2hhciAqdG1wX2V4cF9idWY7CiArICAgICAgZW51bSBleHBfb3Bjb2RlIG9wY29kZTsKLSsgICAg ICBpbnQgY3VyX3ByZWM7CisrICAgICAgZW51bSBzdGFwX29wZXJhbmRfcHJlYyBjdXJfcHJlYzsK ICsKLSsgICAgICBpZiAoIXN0YXBfaXNfb3BlcmF0b3IgKGV2YWxfaW5mby0+ZXhwX2J1ZikpCi0r CWVycm9yIChfKCJJbnZhbGlkIG9wZXJhdG9yIGAlYycgb24gZXhwcmVzc2lvbiBgJXMnLiIpLAot KwkgICAgICAgKmV2YWxfaW5mby0+ZXhwX2J1ZiwgZXZhbF9pbmZvLT5zYXZlZF9leHByKTsKKysg ICAgICBpZiAoIXN0YXBfaXNfb3BlcmF0b3IgKCpwLT5hcmcpKQorKwllcnJvciAoXygiSW52YWxp ZCBvcGVyYXRvciBgJWMnIG9uIGV4cHJlc3Npb24gYCVzJy4iKSwgKnAtPmFyZywKKysJICAgICAg IHAtPnNhdmVkX2FyZyk7CiArCiArICAgICAgLyogV2UgaGF2ZSB0byBzYXZlIHRoZSBjdXJyZW50 IHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGJ1ZmZlciBiZWNhdXNlCiArCSB0aGUgYHN0YXBfZ2V0 X29wY29kZScgbW9kaWZpZXMgaXQgaW4gb3JkZXIgdG8gZ2V0IHRoZSBjdXJyZW50CiArCSBvcGVy YXRvci4gIElmIHRoaXMgb3BlcmF0b3IncyBwcmVjZWRlbmNlIGlzIGxvd2VyIHRoYW4gUFJFQywg d2UKICsJIHNob3VsZCByZXR1cm4gYW5kIG5vdCBhZHZhbmNlIHRoZSBleHByZXNzaW9uIGJ1ZmZl ciBwb2ludGVyLiAgKi8KLSsgICAgICB0bXBfZXhwX2J1ZiA9IGV2YWxfaW5mby0+ZXhwX2J1ZjsK KysgICAgICB0bXBfZXhwX2J1ZiA9IHAtPmFyZzsKICsgICAgICBzdGFwX2dldF9vcGNvZGUgKCZ0 bXBfZXhwX2J1ZiwgJm9wY29kZSk7CiArCiArICAgICAgY3VyX3ByZWMgPSBzdGFwX2dldF9vcGVy YXRvcl9wcmVjIChvcGNvZGUpOwogKyAgICAgIGlmIChjdXJfcHJlYyA8IHByZWMpCiArCS8qIElm IHRoZSBwcmVjZWRlbmNlIG9mIHRoZSBvcGVyYXRvciB0aGF0IHdlIGFyZSBzZWVpbmcgbm93IGlz CiArCSAgIGxvd2VyIHRoYW4gdGhlIHByZWNlZGVuY2Ugb2YgdGhlIGZpcnN0IG9wZXJhdG9yIHNl ZW4gYmVmb3JlCi0rCSAgIHRoaXMgZXZhbHVhdGlvbiBwcm9jZXNzIGJlZ2FuLCBpdCBtZWFucyB3 ZSBzaG91bGQgc3RvcCBldmFsdWF0aW5nCisrCSAgIHRoaXMgcGFyc2luZyBwcm9jZXNzIGJlZ2Fu LCBpdCBtZWFucyB3ZSBzaG91bGQgc3RvcCBwYXJzaW5nCiArCSAgIGFuZCByZXR1cm4uICAqLwog KwlicmVhazsKICsKLSsgICAgICBldmFsX2luZm8tPmV4cF9idWYgPSB0bXBfZXhwX2J1ZjsKLSsg ICAgICBldmFsX2luZm8tPmV4cF9idWYgPSBza2lwX3NwYWNlcyAoZXZhbF9pbmZvLT5leHBfYnVm KTsKKysgICAgICBwLT5hcmcgPSB0bXBfZXhwX2J1ZjsKKysgICAgICBpZiAocC0+aW5zaWRlX3Bh cmVuX3ApCisrCXAtPmFyZyA9IHNraXBfc3BhY2VzX2NvbnN0IChwLT5hcmcpOwogKwotKyAgICAg IC8qIEV2YWx1YXRlIHRoZSByaWdodC1zaWRlIG9mIHRoZSBleHByZXNzaW9uLiAgKi8KLSsgICAg ICByaHMgPSBzdGFwX2V2YWx1YXRlX2NvbmRpdGlvbmFsbHkgKGV2YWxfaW5mbyk7CisrICAgICAg LyogUGFyc2UgdGhlIHJpZ2h0LXNpZGUgb2YgdGhlIGV4cHJlc3Npb24uICAqLworKyAgICAgIHN0 YXBfcGFyc2VfYXJndW1lbnRfY29uZGl0aW9uYWxseSAocCk7CiArCi0rICAgICAgLyogV2hpbGUg d2Ugc3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBldmFsdWF0ZSBhbm90aGVyCisrICAgICAg LyogV2hpbGUgd2Ugc3RpbGwgaGF2ZSBvcGVyYXRvcnMsIHRyeSB0byBwYXJzZSBhbm90aGVyCiAr CSByaWdodC1zaWRlLCBidXQgdXNpbmcgdGhlIGN1cnJlbnQgcmlnaHQtc2lkZSBhcyBhIGxlZnQt c2lkZS4gICovCi0rICAgICAgd2hpbGUgKCpldmFsX2luZm8tPmV4cF9idWYKLSsJICAgICAmJiBz dGFwX2lzX29wZXJhdG9yIChldmFsX2luZm8tPmV4cF9idWYpKQorKyAgICAgIHdoaWxlICgqcC0+ YXJnICYmIHN0YXBfaXNfb3BlcmF0b3IgKCpwLT5hcmcpKQogKwl7CiArCSAgZW51bSBleHBfb3Bj b2RlIGxvb2thaGVhZF9vcGNvZGU7Ci0rCSAgaW50IGxvb2thaGVhZF9wcmVjOworKwkgIGVudW0g c3RhcF9vcGVyYW5kX3ByZWMgbG9va2FoZWFkX3ByZWM7CiArCiArCSAgLyogU2F2aW5nIHRoZSBj dXJyZW50IGV4cHJlc3Npb24gYnVmZmVyIHBvc2l0aW9uLiAgVGhlIGV4cGxhbmF0aW9uCiArCSAg ICAgaXMgdGhlIHNhbWUgYXMgYWJvdmUuICAqLwotKwkgIHRtcF9leHBfYnVmID0gZXZhbF9pbmZv LT5leHBfYnVmOworKwkgIHRtcF9leHBfYnVmID0gcC0+YXJnOwogKwkgIHN0YXBfZ2V0X29wY29k ZSAoJnRtcF9leHBfYnVmLCAmbG9va2FoZWFkX29wY29kZSk7CiArCSAgbG9va2FoZWFkX3ByZWMg PSBzdGFwX2dldF9vcGVyYXRvcl9wcmVjIChsb29rYWhlYWRfb3Bjb2RlKTsKICsKQEAgLTg4MzIs MTU4ICs5NDcxLDM1NSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9i ZS5jCiArCSAgICAgICB0aGFuIHRoZSBmaXJzdCBvbmUsIGp1c3QgYWJhbmRvbiB0aGUgYXR0ZW1w dC4gICovCiArCSAgICBicmVhazsKICsKLSsJICByaHMgPSBzdGFwX2V2YWx1YXRlX3Byb2JlX2Fy Z3VtZW50XzIgKGV2YWxfaW5mbywKLSsJCQkJCQlyaHMsIGxvb2thaGVhZF9wcmVjKTsKKysJICAv KiBQYXJzZSB0aGUgcmlnaHQtc2lkZSBvZiB0aGUgZXhwcmVzc2lvbiwgYnV0IHNpbmNlIHdlIGFs cmVhZHkKKysJICAgICBoYXZlIGEgbGVmdC1zaWRlIGF0IHRoaXMgcG9pbnQsIHNldCBgaGFzX2xo cycgdG8gMS4gICovCisrCSAgc3RhcF9wYXJzZV9hcmd1bWVudF8xIChwLCAxLCBsb29rYWhlYWRf cHJlYyk7CiArCX0KICsKLSsgICAgICAvKiBOb3csICJqb2luIiBib3RoIGxlZnQgYW5kIHJpZ2h0 IHNpZGVzIGludG8gb25lIGxlZnQtc2lkZSwgdXNpbmcKLSsJIHRoZSBzcGVjaWZpZWQgb3BlcmF0 b3IuICAqLwotKyAgICAgIGlmIChjb21waWxpbmdfcCkKLSsJc3RhcF9vcGNvZGVfdG9fYXggKGV2 YWxfaW5mbywgb3Bjb2RlKTsKLSsgICAgICBlbHNlCi0rCWxocyA9IHZhbHVlX2Jpbm9wIChsaHMs IHJocywgb3Bjb2RlKTsKKysgICAgICB3cml0ZV9leHBfZWx0X29wY29kZSAob3Bjb2RlKTsKKysg ICAgfQorK30KKysKKysvKiBQYXJzZSBhIHByb2JlJ3MgYXJndW1lbnQuCisrCisrICAgQXNzdW1p bmcgdGhhdDoKKysKKysgICBMUCA9IGxpdGVyYWwgaW50ZWdlciBwcmVmaXgKKysgICBMUyA9IGxp dGVyYWwgaW50ZWdlciBzdWZpeAorKworKyAgIFJQID0gcmVnaXN0ZXIgcHJlZml4CisrICAgUlMg PSByZWdpc3RlciBzdWZpeAorKworKyAgIFJJUCA9IHJlZ2lzdGVyIGluZGlyZWN0aW9uIHByZWZp eAorKyAgIFJJUyA9IHJlZ2lzdGVyIGluZGlyZWN0aW9uIHN1Zml4CisrCisrICAgVGhpcyByb3V0 aW5lIGFzc3VtZXMgdGhhdCBhcmd1bWVudHMnIHRva2VucyBhcmUgb2YgdGhlIGZvcm06CisrCisr ICAgLSBbTFBdIE5VTUJFUiBbTFNdCisrICAgLSBbUlBdIFJFR0lTVEVSIFtSU10KKysgICAtIFtS SVBdIFtSUF0gUkVHSVNURVIgW1JTXSBbUklTXQorKyAgIC0gSWYgd2UgZmluZCBhIG51bWJlciB3 aXRob3V0IExQLCB3ZSB0cnkgdG8gcGFyc2UgaXQgYXMgYSBsaXRlcmFsIGludGVnZXIKKysgICBj b25zdGFudCAoaWYgTFAgPT0gTlVMTCksIG9yIGFzIGEgcmVnaXN0ZXIgZGlzcGxhY2VtZW50Lgor KyAgIC0gV2UgY291bnQgcGFyZW50aGVzaXMsIGFuZCBvbmx5IHNraXAgd2hpdGVzcGFjZXMgaWYg d2UgYXJlIGluc2lkZSB0aGVtLgorKyAgIC0gSWYgd2UgZmluZCBhbiBvcGVyYXRvciwgd2Ugc2tp cCBpdC4KKysKKysgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIGNhbGwgYSBzcGVjaWFsIGZ1bmN0 aW9uIHRoYXQgd2lsbCB0cnkgdG8gbWF0Y2gKKysgICB1bmtub3duIHRva2Vucy4gIEl0IHdpbGwg cmV0dXJuIDEgaWYgdGhlIGFyZ3VtZW50IGhhcyBiZWVuIHBhcnNlZAorKyAgIHN1Y2Nlc3NmdWxs eSwgb3IgemVybyBvdGhlcndpc2UuICAqLworKworK3N0YXRpYyBpbnQKKytzdGFwX3BhcnNlX2Fy Z3VtZW50IChjb25zdCBjaGFyICoqYXJnLCBzdHJ1Y3QgdHlwZSAqYXR5cGUsCisrCQkgICAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoKQorK3sKKysgIHN0cnVjdCBzdGFwX3BhcnNlX2luZm8gcDsK KysgIHZvbGF0aWxlIHN0cnVjdCBnZGJfZXhjZXB0aW9uIGU7CisrCisrICAvKiBXZSBuZWVkIHRv IGluaXRpYWxpemUgdGhlIGV4cHJlc3Npb24gYnVmZmVyLCBpbiBvcmRlciB0byBiZWdpbgorKyAg ICAgb3VyIHBhcnNpbmcgZWZmb3J0cy4gIFRoZSBsYW5ndWFnZSBoZXJlIGRvZXMgbm90IG1hdHRl ciwgc2luY2Ugd2UKKysgICAgIGFyZSB1c2luZyBvdXIgb3duIHBhcnNlci4gICovCisrICBpbml0 aWFsaXplX2V4cG91dCAoMTAsIGN1cnJlbnRfbGFuZ3VhZ2UsIGdkYmFyY2gpOworKworKyAgcC5z YXZlZF9hcmcgPSAqYXJnOworKyAgcC5hcmcgPSAqYXJnOworKyAgcC5hcmdfdHlwZSA9IGF0eXBl OworKyAgcC5nZGJhcmNoID0gZ2RiYXJjaDsKKysgIHAuaW5zaWRlX3BhcmVuX3AgPSAwOworKwor KyAgVFJZX0NBVENIIChlLCBSRVRVUk5fTUFTS19FUlJPUikKKysgICAgeworKyAgICAgIHN0YXBf cGFyc2VfYXJndW1lbnRfMSAoJnAsIDAsIFNUQVBfT1BFUkFORF9QUkVDX05PTkUpOwogKyAgICB9 CisrICBpZiAoZS5yZWFzb24gPCAwKQorKyAgICB7CisrICAgICAgeGZyZWUgKGV4cG91dCk7Cisr ICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKysgIGdkYl9hc3NlcnQgKHAuaW5zaWRlX3BhcmVu X3AgPT0gMCk7CiArCi0rICByZXR1cm4gbGhzOworKyAgLyogQ2FzdGluZyB0aGUgZmluYWwgZXhw cmVzc2lvbiB0byB0aGUgYXBwcm9wcmlhdGUgdHlwZS4gICovCisrICB3cml0ZV9leHBfZWx0X29w Y29kZSAoVU5PUF9DQVNUKTsKKysgIHdyaXRlX2V4cF9lbHRfdHlwZSAoYXR5cGUpOworKyAgd3Jp dGVfZXhwX2VsdF9vcGNvZGUgKFVOT1BfQ0FTVCk7CisrCisrICByZWFsbG9jYXRlX2V4cG91dCAo KTsKKysKKysgIHAuYXJnID0gc2tpcF9zcGFjZXNfY29uc3QgKHAuYXJnKTsKKysgICphcmcgPSBw LmFyZzsKKysKKysgIHJldHVybiAxOwogK30KICsKLSsvKiBUaGlzIGZ1bmN0aW9uIGZpbGxzIHRo ZSBuZWNlc3NhcnkgYXJndW1lbnRzIGZvciB0aGUgZXZhbHVhdGlvbiBmdW5jdGlvbgotKyAgIHRv IHdvcmsuICAqLworKy8qIEhlbHBlciBmdW5jdGlvbiB3aGljaCBpcyByZXNwb25zaWJsZSBmb3Ig ZnJlZWluZyB0aGUgc3BhY2UgYWxsb2NhdGVkIHRvCisrICAgaG9sZCBpbmZvcm1hdGlvbiBhYm91 dCBhIHByb2JlJ3MgYXJndW1lbnRzLiAgKi8KICsKLStzdGF0aWMgc3RydWN0IHZhbHVlICoKLStz dGFwX2V2YWx1YXRlX3Byb2JlX2FyZ3VtZW50XzEgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAot KwkJCQljb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCi0rCQkJCXN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwKLSsJCQkJaW50IG4pCisrc3RhdGljIHZvaWQKKytzdGFwX2ZyZWVfYXJnc19p bmZvICh2b2lkICphcmdzX2luZm9fcHRyKQorK3sKKysgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAq YSA9IChzdHJ1Y3Qgc3RhcF9hcmdzX2luZm8gKikgYXJnc19pbmZvX3B0cjsKKysgIGludCBpOwor KworKyAgZm9yIChpID0gMDsgaSA8IGEtPm5fYXJnczsgaSsrKQorKyAgICB4ZnJlZSAoYS0+YXJn c1tpXS5hZXhwcik7CisrCisrICB4ZnJlZSAoYS0+YXJncyk7CisrICB4ZnJlZSAoYSk7CisrfQor KworKy8qIEZ1bmN0aW9uIHdoaWNoIHBhcnNlcyBhbiBhcmd1bWVudCBzdHJpbmcgZnJvbSBQUk9C RSwgY29ycmVjdGx5IHNwbGl0dGluZworKyAgIHRoZSBhcmd1bWVudHMgYW5kIHN0b3JpbmcgdGhl aXIgaW5mb3JtYXRpb24gaW4gcHJvcGVybHkgd2F5cy4KKysKKysgICBDb25zaWRlciB0aGUgZm9s bG93aW5nIGFyZ3VtZW50IHN0cmluZyAoeDg2IHN5bnRheCk6CisrCisrICAgYDRAJWVheCA0QCQx MCcKKysKKysgICBXZSBoYXZlIHR3byBhcmd1bWVudHMsIGAlZWF4JyBhbmQgYCQxMCcsIGJvdGgg d2l0aCAzMi1iaXQgdW5zaWduZWQgYml0bmVzcy4KKysgICBUaGlzIGZ1bmN0aW9uIGJhc2ljYWxs eSBoYW5kbGVzIHRoZW0sIHByb3Blcmx5IGZpbGxpbmcgc29tZSBzdHJ1Y3R1cmVzIHdpdGgKKysg ICB0aGlzIGluZm9ybWF0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3N0YXBfcGFyc2VfcHJv YmVfYXJndW1lbnRzIChzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUpCiArewotKyAgc3RydWN0IHN0 YXBfZXZhbHVhdGlvbl9pbmZvIGV2YWxfaW5mbzsKLSsgIGNoYXIgKnMgPSAoY2hhciAqKSBwcm9i ZS0+cGFyc2VkX2FyZ3MtPmFyZ1tuXS5hcmdfc3RyOwotKyAgc3RydWN0IHZhbHVlICpyZXMsICp2 c1s0XTsKKysgIHN0cnVjdCBzdGFwX2FyZ3NfaW5mbyAqYXJnc19pbmZvOworKyAgc3RydWN0IGNs ZWFudXAgKmJhY2tfdG87CisrICBjb25zdCBjaGFyICpjdXIgPSBwcm9iZS0+YXJnczsKKysgIGlu dCBjdXJyZW50X2FyZyA9IC0xOworKyAgLyogVGhpcyBpcyBhIHN0YXRlLW1hY2hpbmUgcGFyc2Vy LCB3aGljaCBtZWFucyB3ZSB3aWxsIGFsd2F5cyBiZQorKyAgICAgaW4gYSBrbm93biBzdGF0ZSB3 aGVuIHBhcnNpbmcgYW4gYXJndW1lbnQuICBUaGUgc3RhdGUgY291bGQgYmUKKysgICAgIGVpdGhl ciBgTkVXX0FSRycgaWYgd2UgYXJlIHBhcnNpbmcgYSBuZXcgYXJndW1lbnQsIGBCSVRORVNTJyBp ZgorKyAgICAgd2UgYXJlIHBhcnNpbmcgdGhlIGJpdG5lc3MtZGVmaW5pdGlvbiBwYXJ0IChpLmUu LCBgNEAnKSwgb3IKKysgICAgIGBQQVJTRV9BUkcnIGlmIHdlIGFyZSBhY3R1YWxseSBwYXJzaW5n IHRoZSBhcmd1bWVudCBwYXJ0LiAgKi8KKysgIGVudW0KKysgICAgeworKyAgICAgIE5FV19BUkcs CisrICAgICAgQklUTkVTUywKKysgICAgICBQQVJTRV9BUkcsCisrICAgIH0gY3VycmVudF9zdGF0 ZTsKKysKKysgIC8qIEZvciBub3csIHdlIGFzc3VtZSBldmVyeXRoaW5nIGlzIG5vdCBnb2luZyB0 byB3b3JrLiAgKi8KKysgIHByb2JlLT5wYXJzZWRfYXJncyA9ICZkdW1teV9zdGFwX2FyZ3NfaW5m bzsKKysKKysgIGlmICghY3VyIHx8ICEqY3VyIHx8ICpjdXIgPT0gJzonKQorKyAgICByZXR1cm47 CisrCisrICBhcmdzX2luZm8gPSB4bWFsbG9jIChzaXplb2YgKHN0cnVjdCBzdGFwX2FyZ3NfaW5m bykpOworKyAgYXJnc19pbmZvLT5uX2FyZ3MgPSAwOworKyAgYmFja190byA9IG1ha2VfY2xlYW51 cCAoc3RhcF9mcmVlX2FyZ3NfaW5mbywgYXJnc19pbmZvKTsKKysgIGFyZ3NfaW5mby0+YXJncyA9 IHhjYWxsb2MgKFNUQVBfTUFYX0FSR1MsIHNpemVvZiAoc3RydWN0IHN0YXBfcHJvYmVfYXJnKSk7 CisrCisrICAvKiBPaywgbGV0J3Mgc3RhcnQuICAqLworKyAgY3VycmVudF9zdGF0ZSA9IE5FV19B Ukc7CisrCisrICB3aGlsZSAoKmN1cikKKysgICAgeworKyAgICAgIHN3aXRjaCAoY3VycmVudF9z dGF0ZSkKKysJeworKwljYXNlIE5FV19BUkc6CisrCSAgKytjdXJyZW50X2FyZzsKKysKKysJICBp ZiAoY3VycmVudF9hcmcgPj0gU1RBUF9NQVhfQVJHUykKKysJICAgIHsKKysJICAgICAgY29tcGxh aW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAorKwkJCSBfKCJwcm9iZSBgJXMnIGhhcyBtb3JlIGFy Z3VtZW50cyB0aGFuIHRoZSBtYXhpbXVtICIKKysJCQkgICAiYWxsb3dlZCIpLCBwcm9iZS0+bmFt ZSk7CisrCSAgICAgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysJICAgICAgcmV0dXJuOworKwkg ICAgfQorKworKwkgIGN1cnJlbnRfc3RhdGUgPSBCSVRORVNTOworKwkgIGJyZWFrOworKworKwlj YXNlIEJJVE5FU1M6CisrCSAgICB7CisrCSAgICAgIGVudW0gc3RhcF9hcmdfYml0bmVzcyBiOwor KwkgICAgICBpbnQgZ290X21pbnVzID0gMDsKKysKKysJICAgICAgLyogV2UgZXhwZWN0IHRvIGZp bmQgc29tZXRoaW5nIGxpa2U6CisrCisrCQkgTkBPUAorKworKwkJIFdoZXJlIGBOJyBjYW4gYmUg WyssLV1bNCw4XS4gIFRoaXMgaXMgbm90IG1hbmRhdG9yeSwgc28KKysJCSB3ZSBjaGVjayBpdCBo ZXJlLiAgSWYgd2UgZG9uJ3QgZmluZCBpdCwgZ28gdG8gdGhlIG5leHQKKysJCSBzdGF0ZS4gICov CisrCSAgICAgIGlmICgoKmN1ciA9PSAnLScgJiYgY3VyWzFdICYmIGN1clsyXSAhPSAnQCcpCisr CQkgICYmIGN1clsxXSAhPSAnQCcpCisrCQl7CisrCQkgIGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9B Ukc7CisrCQkgIGFyZ3NfaW5mby0+YXJnc1tjdXJyZW50X2FyZ10uYml0bmVzcworKwkJICAgID0g U1RBUF9BUkdfQklUTkVTU19VTkRFRklORUQ7CisrCQkgIGJyZWFrOworKwkJfQorKworKwkgICAg ICBpZiAoKmN1ciA9PSAnLScpCisrCQl7CisrCQkgIC8qIERpc2NhcmQgdGhlIGAtJy4gICovCisr CQkgICsrY3VyOworKwkJICBnb3RfbWludXMgPSAxOworKwkJfQorKworKwkgICAgICBpZiAoKmN1 ciA9PSAnNCcpCisrCQliID0gZ290X21pbnVzID8gU1RBUF9BUkdfQklUTkVTU18zMkJJVF9TSUdO RUQKKysJCSAgOiBTVEFQX0FSR19CSVRORVNTXzMyQklUX1VOU0lHTkVEOworKwkgICAgICBlbHNl IGlmICgqY3VyID09ICc4JykKKysJCWIgPSBnb3RfbWludXMgPyBTVEFQX0FSR19CSVRORVNTXzY0 QklUX1NJR05FRAorKwkJICA6IFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ7CisrCSAg ICAgIGVsc2UKKysJCXsKKysJCSAgLyogV2UgaGF2ZSBhbiBlcnJvciwgYmVjYXVzZSB3ZSBkb24n dCBleHBlY3QgYW55dGhpbmcKKysJCSAgICAgZXhjZXB0IDQgYW5kIDguICAqLworKwkJICBjb21w bGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCisrCQkJICAgICBfKCJ1bnJlY29nbml6ZWQgYml0 bmVzcyBgJWMnIGZvciBwcm9iZSBgJXMnIiksCisrCQkJICAgICAqY3VyLCBwcm9iZS0+bmFtZSk7 CisrCQkgIGRvX2NsZWFudXBzIChiYWNrX3RvKTsKKysJCSAgcmV0dXJuOworKwkJfQorKworKwkg ICAgICBhcmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmJpdG5lc3MgPSBiOworKwkgICAgICBh cmdzX2luZm8tPmFyZ3NbY3VycmVudF9hcmddLmF0eXBlCisrCQk9IHN0YXBfZ2V0X2V4cGVjdGVk X2FyZ3VtZW50X3R5cGUgKHByb2JlLT5nZGJhcmNoLCBiKTsKKysJICAgICAgLyogRGlzY2FyZCB0 aGUgbnVtYmVyIGFuZCB0aGUgYEAnIHNpZ24uICAqLworKwkgICAgICBjdXIgKz0gMjsKKysJICAg ICAgLyogTW92ZSBvbi4gICovCisrCSAgICAgIGN1cnJlbnRfc3RhdGUgPSBQQVJTRV9BUkc7Cisr CSAgICB9CisrCSAgYnJlYWs7CisrCisrCWNhc2UgUEFSU0VfQVJHOgorKwkgICAgeworKwkgICAg ICBpZiAoIXN0YXBfcGFyc2VfYXJndW1lbnQgKCZjdXIsCisrCQkJCQlhcmdzX2luZm8tPmFyZ3Nb Y3VycmVudF9hcmddLmF0eXBlLAorKwkJCQkJcHJvYmUtPmdkYmFyY2gpKQorKwkJeworKwkJICAv KiBXZSBoYXZlIHRyaWVkIHRvIHBhcnNlIHRoaXMgYXJndW1lbnQsIGJ1dCBpdCdzCisrCQkgICAg IG1hbGZvcm1lZC4gIFRoaXMgaXMgYW4gZXJyb3IuICAqLworKwkJICBjb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCisrCQkJICAgICBfKCJtYWxmb3JtZWQgYXJndW1lbnQgZm9yIHByb2Jl IGAlcyciKSwKKysJCQkgICAgIHByb2JlLT5uYW1lKTsKKysJCSAgZG9fY2xlYW51cHMgKGJhY2tf dG8pOworKwkJICByZXR1cm47CisrCQl9CisrCisrCSAgICAgIGlmIChzdGFwX2V4cHJlc3Npb25f ZGVidWcpCisrCQlkdW1wX3Jhd19leHByZXNzaW9uIChleHBvdXQsIGdkYl9zdGRsb2csCisrCQkJ CSAgICAgImJlZm9yZSBjb252ZXJzaW9uIHRvIHByZWZpeCBmb3JtIik7CisrCisrCSAgICAgIHBy ZWZpeGlmeV9leHByZXNzaW9uIChleHBvdXQpOworKworKwkgICAgICBpZiAoc3RhcF9leHByZXNz aW9uX2RlYnVnKQorKwkJZHVtcF9wcmVmaXhfZXhwcmVzc2lvbiAoZXhwb3V0LCBnZGJfc3RkbG9n KTsKKysKKysJICAgICAgYXJnc19pbmZvLT5hcmdzW2N1cnJlbnRfYXJnXS5hZXhwciA9IGV4cG91 dDsKKysJICAgICAgZXhwb3V0ID0gTlVMTDsKKysKKysJICAgICAgKythcmdzX2luZm8tPm5fYXJn czsKKysJICAgICAgLyogU3RhcnQgaXQgb3ZlciBhZ2Fpbi4gICovCisrCSAgICAgIGN1ciA9IHNr aXBfc3BhY2VzX2NvbnN0IChjdXIpOworKwkgICAgICBjdXJyZW50X3N0YXRlID0gTkVXX0FSRzsK KysJICAgIH0KKysJICBicmVhazsKKysJfQorKworKyAgICAgIGlmICghKmN1ciAmJiBjdXJyZW50 X3N0YXRlICE9IE5FV19BUkcpCisrCXsKKysJICAvKiBXZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhl IGFyZ3VtZW50IHN0cmluZywgYnV0IHdlJ3JlCisrCSAgICAgc3RpbGwgaW4gdGhlIG1pZGRsZSBv ZiB0aGUgcHJvY2VzcyBvZiBwYXJzaW5nIGFuIGFyZ3VtZW50LgorKwkgICAgIEl0IG1lYW5zIHRo ZSBhcmd1bWVudCBzdHJpbmcgaXMgbWFsZm9ybWVkLiAgKi8KKysJICBjb21wbGFpbnQgKCZzeW1m aWxlX2NvbXBsYWludHMsCisrCQkgICAgIF8oIm1hbGZvcm1lZCBhcmd1bWVudCBmb3IgcHJvYmUg YCVzJyIpLAorKwkJICAgICBwcm9iZS0+bmFtZSk7CisrCSAgZG9fY2xlYW51cHMgKGJhY2tfdG8p OworKwkgIHJldHVybjsKKysJfQorKyAgICB9CisrCisrICBhcmdzX2luZm8tPmFyZ3MgPSB4cmVh bGxvYyAoYXJnc19pbmZvLT5hcmdzLAorKwkJCSAgICAgIGFyZ3NfaW5mby0+bl9hcmdzCisrCQkJ ICAgICAgKiBzaXplb2YgKHN0cnVjdCBzdGFwX3Byb2JlX2FyZykpOworKyAgYXJnc19pbmZvLT5w cm9iZSA9IHByb2JlOworKworKyAgcHJvYmUtPnBhcnNlZF9hcmdzID0gYXJnc19pbmZvOworKwor KyAgZGlzY2FyZF9jbGVhbnVwcyAoYmFja190byk7CisrfQorKworKy8qIFNlZSBkZWZpbml0aW9u IGluIHN0YXAtcHJvYmUuaC4gICovCiArCi0rICAvKiBGaWxsaW5nIG5lY2Vzc2FyeSBpbmZvcm1h dGlvbiBmb3IgZXZhbHVhdGlvbiBmdW5jdGlvbi4gICovCi0rICBldmFsX2luZm8uc2F2ZWRfZXhw ciA9IHM7Ci0rICBldmFsX2luZm8uZXhwX2J1ZiA9IHM7Ci0rICBldmFsX2luZm8uZ2RiYXJjaCA9 IGdldF9vYmpmaWxlX2FyY2ggKG9iamZpbGUpOwotKyAgZXZhbF9pbmZvLmZyYW1lID0gZnJhbWU7 Ci0rICBldmFsX2luZm8uYml0bmVzcyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmJpdG5l c3M7Ci0rICAvKiBXZSBhcmUgbm90IGNvbXBpbGluZyB0byBhbiBhZ2VudCBleHByZXNzaW9uLiAg Ki8KLSsgIGV2YWxfaW5mby5hZXhwciA9IE5VTEw7Ci0rICBldmFsX2luZm8uYXZhbHVlID0gTlVM TDsKKytpbnQKKytzdGFwX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAoc3RydWN0IHN0YXBfcHJv YmUgKnByb2JlKQorK3sKKysgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzKQorKyAgICBzdGFwX3Bh cnNlX3Byb2JlX2FyZ3VtZW50cyAocHJvYmUpOwogKwotKyAgcmVzID0gc3RhcF9ldmFsdWF0ZV9w cm9iZV9hcmd1bWVudF8yICgmZXZhbF9pbmZvLAotKwkJCQkJLypsaHM9Ki9OVUxMLCAvKnByZWM9 Ki8wKTsKKysgIHJldHVybiBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJnczsKKyt9CiArCi0rICBp ZiAoIXJlcykKLSsgICAgZXJyb3IgKF8oIkNvdWxkIG5vdCBldmFsdWF0ZSBleHByZXNzaW9uIGAl cycuIiksCi0rCSAgIGV2YWxfaW5mby5zYXZlZF9leHByKTsKKysvKiBSZXR1cm4gMSBpZiBPUCBp cyBhIHZhbGlkIG9wZXJhdG9yIGluc2lkZSBhIHByb2JlIGFyZ3VtZW50LCBvciB6ZXJvCisrICAg b3RoZXJ3aXNlLiAgKi8KICsKLSsgIHJldHVybiByZXM7Cisrc3RhdGljIGludAorK3N0YXBfaXNf b3BlcmF0b3IgKGNoYXIgb3ApCisreworKyAgcmV0dXJuIChvcCA9PSAnKycgfHwgb3AgPT0gJy0n IHx8IG9wID09ICcqJyB8fCBvcCA9PSAnLycKKysJICB8fCBvcCA9PSAnPicgfHwgb3AgPT0gJzwn IHx8IG9wID09ICchJyB8fCBvcCA9PSAnXicKKysJICB8fCBvcCA9PSAnfCcgfHwgb3AgPT0gJyYn IHx8IG9wID09ICclJyB8fCBvcCA9PSAnPScpOwogK30KICsKICsvKiBTZWUgZGVmaW5pdGlvbiBp biBzdGFwLXByb2JlLmguICAqLwogKwogK3N0cnVjdCB2YWx1ZSAqCiArc3RhcF9ldmFsdWF0ZV9w cm9iZV9hcmd1bWVudCAoc3RydWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJICAgICAgY29uc3Qg c3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAorKwkJCSAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSwKICsJCQkgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqZnJhbWUsCiArCQkJICAgICAgaW50 IG4pCiAreworKyAgaW50IHBvcyA9IDA7CisrCiArICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncykK LSsgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKChzdHJ1Y3Qgc3RhcF9wcm9iZSAqKSBw cm9iZSk7CisrICAgIHN0YXBfcGFyc2VfcHJvYmVfYXJndW1lbnRzIChwcm9iZSk7CiArCi0rICBp ZiAoIXByb2JlLT5wYXJzZWRfYXJncy0+YXJnCisrICBpZiAoIXByb2JlLT5wYXJzZWRfYXJncy0+ YXJncwogKyAgICAgIHx8IG4gPj0gcHJvYmUtPnBhcnNlZF9hcmdzLT5uX2FyZ3MpCiArICAgIHJl dHVybiBOVUxMOwogKwotKyAgcmV0dXJuIHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1lbnRfMSAo b2JqZmlsZSwgcHJvYmUsIGZyYW1lLCBuKTsKLSt9Ci0rCi0rLyogSGVscGVyIGZ1bmN0aW9uIHdo aWNoIGNvbXBpbGVzIHRoZSBwcm9iZSdzIGFyZ3VtZW50IE4gaW50byBhbgotKyAgIGFnZW50IGV4 cHJlc3Npb24sIHN1aXRhYmxlIGZvciB1c2luZyB3aXRoIHRyYWNlcG9pbnRzLiAgKi8KLSsKLStz dGF0aWMgdm9pZAotK3N0YXBfY29tcGlsZV90b19heF8xIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmls ZSwKLSsJCSAgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKLSsJCSAgICAgIHN0 cnVjdCBhZ2VudF9leHByICpleHByLAotKwkJICAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUs Ci0rCQkgICAgICBpbnQgbikKLSt7Ci0rICBzdHJ1Y3Qgc3RhcF9ldmFsdWF0aW9uX2luZm8gZXZh bF9pbmZvOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBleHByLT5nZGJhcmNoOwotKyAg Y2hhciAqcyA9IChjaGFyICopIHByb2JlLT5wYXJzZWRfYXJncy0+YXJnW25dLmFyZ19zdHI7Ci0r Ci0rICAvKiBGaWxsaW5nIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiBmb3IgZXZhbHVhdGlvbiBmdW5j dGlvbi4gICovCi0rICBldmFsX2luZm8uc2F2ZWRfZXhwciA9IHM7Ci0rICBldmFsX2luZm8uZXhw X2J1ZiA9IHM7Ci0rICBldmFsX2luZm8uZ2RiYXJjaCA9IGV4cHItPmdkYmFyY2g7Ci0rICBldmFs X2luZm8uZnJhbWUgPSBOVUxMOwotKyAgZXZhbF9pbmZvLmJpdG5lc3MgPSBwcm9iZS0+cGFyc2Vk X2FyZ3MtPmFyZ1tuXS5iaXRuZXNzOwotKyAgLyogV2UgYXJlIGNvbXBpbGluZyB0byBhbiBhZ2Vu dCBleHByZXNzaW9uLiAgKi8KLSsgIGV2YWxfaW5mby5hZXhwciA9IGV4cHI7Ci0rICBldmFsX2lu Zm8uYXZhbHVlID0gdmFsdWU7Ci0rCi0rICAvKiBXZSBjYW4gYWx3YXlzIHVzZSB0aGlzIGtpbmQu ICAqLwotKyAgdmFsdWUtPmtpbmQgPSBheHNfcnZhbHVlOwotKwotKyAgLyogRmlndXJpbmcgb3V0 IHRoZSBjb3JyZWN0IHR5cGUgZm9yIHRoaXMgYXhzX3ZhbHVlLiAgKi8KLSsgIHN3aXRjaCAoZXZh bF9pbmZvLmJpdG5lc3MpCi0rICAgIHsKLSsgICAgY2FzZSBTVEFQX0FSR19CSVRORVNTX1VOREVG SU5FRDoKLSsgICAgICBpZiAoZ2RiYXJjaF9hZGRyX2JpdCAoZ2RiYXJjaCkgPT0gMzIpCi0rCXZh bHVlLT50eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+YnVpbHRpbl91aW50MzI7Ci0rICAg ICAgZWxzZQotKwl2YWx1ZS0+dHlwZSA9IGJ1aWx0aW5fdHlwZSAoZ2RiYXJjaCktPmJ1aWx0aW5f dWludDY0OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlIFNUQVBfQVJHX0JJVE5FU1NfMzJC SVRfU0lHTkVEOgotKyAgICAgIHZhbHVlLT50eXBlID0gYnVpbHRpbl90eXBlIChnZGJhcmNoKS0+ YnVpbHRpbl9pbnQzMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBTVEFQX0FSR19CSVRO RVNTXzMyQklUX1VOU0lHTkVEOgotKyAgICAgIHZhbHVlLT50eXBlID0gYnVpbHRpbl90eXBlIChn ZGJhcmNoKS0+YnVpbHRpbl91aW50MzI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgU1RB UF9BUkdfQklUTkVTU182NEJJVF9TSUdORUQ6Ci0rICAgICAgdmFsdWUtPnR5cGUgPSBidWlsdGlu X3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX2ludDY0OwotKyAgICAgIGJyZWFrOwotKwotKyAgICBj YXNlIFNUQVBfQVJHX0JJVE5FU1NfNjRCSVRfVU5TSUdORUQ6Ci0rICAgICAgdmFsdWUtPnR5cGUg PSBidWlsdGluX3R5cGUgKGdkYmFyY2gpLT5idWlsdGluX3VpbnQ2NDsKLSsgICAgICBicmVhazsK LSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICBpbnRlcm5hbF9lcnJvciAoX19GSUxFX18sIF9fTElO RV9fLAotKwkJICAgICAgXygiVW5kZWZpbmVkIGJpdG5lc3MgZm9yIHByb2JlLiIpKTsKLSsgICAg ICBicmVhazsKLSsgICAgfQorKyAgLyogVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSBvbiBzb21lIGFy Y2hpdGVjdHVyZXMgKGUuZy4sIEFSTSkgd2UgbmVlZAorKyAgICAgdGhlIGZyYW1lJ3MgZ2RiYXJj aCBpbiBvcmRlciB0byBjb21wdXRlIHRoZSB2YWx1ZSBvZiB0aGUgZnJhbWUKKysgICAgIHBvaW50 ZXIuICAqLworKyAgcHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmFleHByLT5nZGJhcmNoID0g Z2V0X2ZyYW1lX2FyY2ggKGZyYW1lKTsKICsKLSsgIHN0YXBfZXZhbHVhdGVfcHJvYmVfYXJndW1l bnRfMiAoJmV2YWxfaW5mbywKLSsJCQkJICAvKmxocz0qL05VTEwsIC8qcHJlYz0qLzApOworKyAg cmV0dXJuIGV2YWx1YXRlX3N1YmV4cF9zdGFuZGFyZCAocHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdz W25dLmF0eXBlLAorKwkJCQkgICBwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYWV4cHIsCisr CQkJCSAgICZwb3MsIEVWQUxfTk9STUFMKTsKICt9CiArCiArLyogU2VlIGRlZmluaXRpb24gaW4g c3RhcC1wcm9iZS5oLiAgKi8KICsKICt2b2lkCiArc3RhcF9jb21waWxlX3RvX2F4IChzdHJ1Y3Qg b2JqZmlsZSAqb2JqZmlsZSwKLSsJCSAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUs CisrCQkgICAgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJICAgIHN0cnVjdCBhZ2VudF9l eHByICpleHByLAogKwkJICAgIHN0cnVjdCBheHNfdmFsdWUgKnZhbHVlLAogKwkJICAgIGludCBu KQogK3sKKysgIHVuaW9uIGV4cF9lbGVtZW50ICpwYzsKKysKICsgIGlmICghcHJvYmUtPnBhcnNl ZF9hcmdzKQotKyAgICBzdGFwX3BhcnNlX3Byb2JlX2FyZ3VtZW50cyAoKHN0cnVjdCBzdGFwX3By b2JlICopIHByb2JlKTsKKysgICAgc3RhcF9wYXJzZV9wcm9iZV9hcmd1bWVudHMgKHByb2JlKTsK ICsKLSsgIGlmICghcHJvYmUtPnBhcnNlZF9hcmdzLT5hcmcKKysgIGlmICghcHJvYmUtPnBhcnNl ZF9hcmdzLT5hcmdzCiArICAgICAgfHwgbiA+PSBwcm9iZS0+cGFyc2VkX2FyZ3MtPm5fYXJncykK ICsgICAgcmV0dXJuOwogKwotKyAgc3RhcF9jb21waWxlX3RvX2F4XzEgKG9iamZpbGUsIHByb2Jl LCBleHByLCB2YWx1ZSwgbik7CisrICBwYyA9IHByb2JlLT5wYXJzZWRfYXJncy0+YXJnc1tuXS5h ZXhwci0+ZWx0czsKKysgIGdlbl9leHByIChwcm9iZS0+cGFyc2VkX2FyZ3MtPmFyZ3Nbbl0uYWV4 cHIsICZwYywgZXhwciwgdmFsdWUpOworKworKyAgcmVxdWlyZV9ydmFsdWUgKGV4cHIsIHZhbHVl KTsKKysgIHZhbHVlLT50eXBlID0gcHJvYmUtPnBhcnNlZF9hcmdzLT5hcmdzW25dLmF0eXBlOwog K30KICsKICtzdHJ1Y3QgdmFsdWUgKgogK3N0YXBfc2FmZV9ldmFsdWF0ZV9hdF9wYyAoc3RydWN0 IGZyYW1lX2luZm8gKmZyYW1lLCBpbnQgbikKICt7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9i ZSAqcHJvYmU7CisrICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmU7CiArICBzdHJ1Y3Qgb2JqZmls ZSAqb2JqZmlsZTsKICsgIGludCBuX3Byb2JlczsKICsKQEAgLTkwMTgsOSArOTg1NCw5IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgICAgcmV0dXJuOwog KwogKyAgZm9yIChpID0gMDsgaSA8IHBhcnNlZF9hcmdzLT5uX2FyZ3M7IGkrKykKLSsgICAgeGZy ZWUgKHBhcnNlZF9hcmdzLT5hcmdbaV0uYXJnX3N0cik7CisrICAgIHhmcmVlIChwYXJzZWRfYXJn cy0+YXJnc1tpXS5hZXhwcik7CiArCi0rICB4ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZyk7CisrICB4 ZnJlZSAocGFyc2VkX2FyZ3MtPmFyZ3MpOwogKyAgeGZyZWUgKHBhcnNlZF9hcmdzKTsKICt9CiAr CkBAIC05MDMwLDcgKzk4NjYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3Rh cC1wcm9iZS5jCiArc3RydWN0IHN0YXBfcHJvYmVfYW5kX29iamZpbGUKICt7CiArICAvKiBUaGUg cHJvYmUuICAqLwotKyAgY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlOworKyAgc3RydWN0 IHN0YXBfcHJvYmUgKnByb2JlOwogKyAgLyogVGhlIHByb2JlJ3Mgb2JqZmlsZS4gICovCiArICBz dHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKICt9OwpAQCAtOTA4MSw3ICs5OTE3LDcgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YXAtcHJvYmUuYwogKwogKyAgQUxMX09CSkZJTEVT IChvYmpmaWxlKQogKyAgewotKyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwor KyAgICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgICBpbnQgaSwgbnVtX3Byb2JlczsK ICsKICsgICAgaWYgKCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2JlX2Zu cykKQEAgLTkxNzQsNyArMTAwMTAsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv c3RhcC1wcm9iZS5jCiArCiArICBpdGVtcyA9IGNvbGxlY3RfcHJvYmVzIChvYmpuYW1lLCBwcm92 aWRlciwgcHJvYmUpOwogKyAgbWFrZV9jbGVhbnVwIChWRUNfY2xlYW51cCAoc3RhcF9lbnRyeSks ICZpdGVtcyk7Ci0rICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAodWlvdXQs IDUsCisrICBtYWtlX2NsZWFudXBfdWlfb3V0X3RhYmxlX2JlZ2luX2VuZCAoY3VycmVudF91aW91 dCwgNSwKICsJCQkJICAgICAgIFZFQ19sZW5ndGggKHN0YXBfZW50cnksIGl0ZW1zKSwKICsJCQkJ ICAgICAgICJTeXN0ZW1UYXBQcm9iZXMiKTsKICsKQEAgLTkxODYsMzEgKzEwMDIyLDMxIEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsKICsgIGFkZHJfd2lk dGggPSA0ICsgKGdkYmFyY2hfcHRyX2JpdCAoZ2V0X2N1cnJlbnRfYXJjaCAoKSkgLyA0KTsKICsK LSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCAxMCwgdWlfbGVmdCwgInByb3ZpZGVyIiwg XygiUHJvdmlkZXIiKSk7Ci0rICB1aV9vdXRfdGFibGVfaGVhZGVyICh1aW91dCwgMTAsIHVpX2xl ZnQsICJuYW1lIiwgXygiTmFtZSIpKTsKLSsgIHVpX291dF90YWJsZV9oZWFkZXIgKHVpb3V0LCBh ZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwgImFkZHIiLCBfKCJXaGVyZSIpKTsKLSsgIHVpX291dF90 YWJsZV9oZWFkZXIgKHVpb3V0LCBhZGRyX3dpZHRoIC0gMSwgdWlfbGVmdCwgInNlbWFwaG9yZSIs CisrICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCAxMCwgdWlfbGVmdCwgInBy b3ZpZGVyIiwgXygiUHJvdmlkZXIiKSk7CisrICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50 X3Vpb3V0LCAxMCwgdWlfbGVmdCwgIm5hbWUiLCBfKCJOYW1lIikpOworKyAgdWlfb3V0X3RhYmxl X2hlYWRlciAoY3VycmVudF91aW91dCwgYWRkcl93aWR0aCAtIDEsIHVpX2xlZnQsICJhZGRyIiwg XygiV2hlcmUiKSk7CisrICB1aV9vdXRfdGFibGVfaGVhZGVyIChjdXJyZW50X3Vpb3V0LCBhZGRy X3dpZHRoIC0gMSwgdWlfbGVmdCwgInNlbWFwaG9yZSIsCiArCQkgICAgICAgXygiU2VtYXBob3Jl IikpOwotKyAgdWlfb3V0X3RhYmxlX2hlYWRlciAodWlvdXQsIDMwLCB1aV9sZWZ0LCAib2JqZWN0 IiwgXygiT2JqZWN0IikpOwotKyAgdWlfb3V0X3RhYmxlX2JvZHkgKHVpb3V0KTsKKysgIHVpX291 dF90YWJsZV9oZWFkZXIgKGN1cnJlbnRfdWlvdXQsIDMwLCB1aV9sZWZ0LCAib2JqZWN0IiwgXygi T2JqZWN0IikpOworKyAgdWlfb3V0X3RhYmxlX2JvZHkgKGN1cnJlbnRfdWlvdXQpOwogKwogKyAg Zm9yIChpID0gMDsgVkVDX2l0ZXJhdGUgKHN0YXBfZW50cnksIGl0ZW1zLCBpLCBlbnRyeSk7ICsr aSkKICsgICAgewogKyAgICAgIHN0cnVjdCBjbGVhbnVwICppbm5lcjsKICsKLSsgICAgICBpbm5l ciA9IG1ha2VfY2xlYW51cF91aV9vdXRfdHVwbGVfYmVnaW5fZW5kICh1aW91dCwgInByb2JlIik7 CisrICAgICAgaW5uZXIgPSBtYWtlX2NsZWFudXBfdWlfb3V0X3R1cGxlX2JlZ2luX2VuZCAoY3Vy cmVudF91aW91dCwgInByb2JlIik7CiArCi0rICAgICAgdWlfb3V0X2ZpZWxkX3N0cmluZyAodWlv dXQsICJwcm92aWRlciIsIGVudHJ5LT5wcm9iZS0+cHJvdmlkZXIpOwotKyAgICAgIHVpX291dF9m aWVsZF9zdHJpbmcgKHVpb3V0LCAibmFtZSIsIGVudHJ5LT5wcm9iZS0+bmFtZSk7Ci0rICAgICAg dWlfb3V0X2ZpZWxkX2NvcmVfYWRkciAodWlvdXQsICJhZGRyIiwgZ2V0X2N1cnJlbnRfYXJjaCAo KSwKKysgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChjdXJyZW50X3Vpb3V0LCAicHJvdmlkZXIi LCBlbnRyeS0+cHJvYmUtPnByb3ZpZGVyKTsKKysgICAgICB1aV9vdXRfZmllbGRfc3RyaW5nIChj dXJyZW50X3Vpb3V0LCAibmFtZSIsIGVudHJ5LT5wcm9iZS0+bmFtZSk7CisrICAgICAgdWlfb3V0 X2ZpZWxkX2NvcmVfYWRkciAoY3VycmVudF91aW91dCwgImFkZHIiLCBnZXRfY3VycmVudF9hcmNo ICgpLAogKwkJCSAgICAgIGVudHJ5LT5wcm9iZS0+YWRkcmVzcyk7CiArICAgICAgaWYgKGVudHJ5 LT5wcm9iZS0+c2VtX2FkZHIgPT0gMCkKLSsJdWlfb3V0X2ZpZWxkX3NraXAgKHVpb3V0LCAic2Vt YXBob3JlIik7CisrCXVpX291dF9maWVsZF9za2lwIChjdXJyZW50X3Vpb3V0LCAic2VtYXBob3Jl Iik7CiArICAgICAgZWxzZQotKyAgICAgIHVpX291dF9maWVsZF9jb3JlX2FkZHIgKHVpb3V0LCAi c2VtYXBob3JlIiwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwKKysgICAgICB1aV9vdXRfZmllbGRfY29y ZV9hZGRyIChjdXJyZW50X3Vpb3V0LCAic2VtYXBob3JlIiwgZ2V0X2N1cnJlbnRfYXJjaCAoKSwK ICsJCQkgICAgICBlbnRyeS0+cHJvYmUtPnNlbV9hZGRyKTsKLSsgICAgICB1aV9vdXRfZmllbGRf c3RyaW5nICh1aW91dCwgIm9iamVjdCIsIGVudHJ5LT5vYmpmaWxlLT5uYW1lKTsKLSsgICAgICB1 aV9vdXRfdGV4dCAodWlvdXQsICJcbiIpOworKyAgICAgIHVpX291dF9maWVsZF9zdHJpbmcgKGN1 cnJlbnRfdWlvdXQsICJvYmplY3QiLCBlbnRyeS0+b2JqZmlsZS0+bmFtZSk7CisrICAgICAgdWlf b3V0X3RleHQgKGN1cnJlbnRfdWlvdXQsICJcbiIpOwogKwogKyAgICAgIGRvX2NsZWFudXBzIChp bm5lcik7CiArICAgIH0KQEAgLTkyMTksNyArMTAwNTUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICBkb19jbGVhbnVwcyAoY2xlYW51cCk7CiArCiAr ICBpZiAoISBhbnlfZm91bmQpCi0rICAgIHVpX291dF9tZXNzYWdlICh1aW91dCwgMCwgXygiTm8g cHJvYmVzIG1hdGNoZWQuXG4iKSk7CisrICAgIHVpX291dF9tZXNzYWdlIChjdXJyZW50X3Vpb3V0 LCAwLCBfKCJObyBwcm9iZXMgbWF0Y2hlZC5cbiIpKTsKICt9CiArCiArDApAQCAtOTIzMSw3ICsx MDA2Nyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsJ CQljb25zdCBjaGFyICpwcm92aWRlciwKICsJCQljb25zdCBjaGFyICpuYW1lKQogK3sKLSsgIGNv bnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZXM7CisrICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJv YmVzOwogKyAgaW50IGksIG51bV9wcm9iZXM7CiArICBWRUMgKHN0YXBfcHJvYmVfcCkgKnJlc3Vs dCA9IE5VTEw7CiArCkBAIC05MjU4LDggKzEwMDk0LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3N0YXAtcHJvYmUuYwogK3N0cnVjdCBzeW10YWJzX2FuZF9saW5lcwogK3BhcnNl X3N0YXBfcHJvYmUgKGNoYXIgKiphcmdwdHIsIHN0cnVjdCBsaW5lc3BlY19yZXN1bHQgKmNhbm9u aWNhbCkKICt7Ci0rICBjaGFyICpmdWxsX2FyZyA9IGV4dHJhY3RfYXJnIChhcmdwdHIpOwotKyAg Y2hhciAqYXJnID0geHN0cmR1cCAoZnVsbF9hcmcpOworKyAgY2hhciAqYXJnX3N0YXJ0LCAqYXJn X2VuZCwgKmFyZzsKICsgIGNoYXIgKm9iamZpbGVfbmFtZSA9IE5VTEwsICpwcm92aWRlciA9IE5V TEwsICpuYW1lLCAqcDsKICsgIHN0cnVjdCBjbGVhbnVwICpjbGVhbnVwOwogKyAgc3RydWN0IHN5 bXRhYnNfYW5kX2xpbmVzIHJlc3VsdDsKQEAgLTkyNjgsMTcgKzEwMTAzLDI3IEBAIEluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIHJlc3VsdC5zYWxzID0gTlVM TDsKICsgIHJlc3VsdC5uZWx0cyA9IDA7CiArCi0rICAvKiBUaGUgY2FsbGVyIGVuc3VyZWQgdGhh dCB0aGlzIHN0YXJ0cyB3aXRoICdwcm9iZTonLiAgKi8KLSsgIGdkYl9hc3NlcnQgKGFyZyAmJiBz dHJuY21wIChhcmcsICJwcm9iZToiLCA2KSA9PSAwKTsKKysgIGFyZ19zdGFydCA9ICphcmdwdHI7 CisrICAvKiBUaGUgY2FsbGVyIGVuc3VyZWQgdGhhdCB0aGlzIHN0YXJ0cyB3aXRoICctcCcuICAq LworKyAgZ2RiX2Fzc2VydCAoYXJnX3N0YXJ0ICYmIHN0cm5jbXAgKGFyZ19zdGFydCwgIi1wIiwg MikgPT0gMCk7CisrICBhcmdfZW5kID0gYXJnX3N0YXJ0ICsgMjsKKysgIGFyZ19lbmQgPSBza2lw X3NwYWNlcyAoYXJnX2VuZCk7CisrCisrICBpZiAoISphcmdfZW5kKQorKyAgICBlcnJvciAoXygi YXJndW1lbnQgdG8gYC1wJyBtaXNzaW5nIikpOworKworKyAgYXJnID0gYXJnX2VuZDsKKysgIGFy Z19lbmQgPSBza2lwX3RvX3NwYWNlIChhcmdfZW5kKTsKKysKKysgIC8qIFdlIG1ha2UgYSBjb3B5 IGhlcmUgc28gd2UgY2FuIHdyaXRlIG92ZXIgcGFydHMgd2l0aCBpbXB1bml0eS4gICovCisrICBh cmcgPSBzYXZlc3RyaW5nIChhcmcsIGFyZ19lbmQgLSBhcmcpOwogKyAgY2xlYW51cCA9IG1ha2Vf Y2xlYW51cCAoeGZyZWUsIGFyZyk7Ci0rICBtYWtlX2NsZWFudXAgKHhmcmVlLCBmdWxsX2FyZyk7 Ci0rICBhcmcgKz0gNjsKICsKICsgIC8qIEV4dHJhY3QgZWFjaCB3b3JkIGZyb20gdGhlIGFyZ3Vt ZW50LCBzZXBhcmF0ZWQgYnkgIjoicy4gICovCiArICBwID0gc3RyY2hyIChhcmcsICc6Jyk7CiAr ICBpZiAocCA9PSBOVUxMKQogKyAgICB7Ci0rICAgICAgLyogVGhpcyBpcyBgcHJvYmU6bmFtZScu ICAqLworKyAgICAgIC8qIFRoaXMgaXMgYC1wIG5hbWUnLiAgKi8KICsgICAgICBuYW1lID0gYXJn OwogKyAgICB9CiArICBlbHNlCkBAIC05Mjg5LDEzICsxMDEzNCwxMyBAQCBJbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICAgICAgcCA9IHN0cmNociAoaG9sZCwg JzonKTsKICsgICAgICBpZiAocCA9PSBOVUxMKQogKwl7Ci0rCSAgLyogVGhpcyBpcyBgcHJvYmU6 cHJvdmlkZXI6bmFtZScuICAqLworKwkgIC8qIFRoaXMgaXMgYC1wIHByb3ZpZGVyOm5hbWUnLiAg Ki8KICsJICBwcm92aWRlciA9IGFyZzsKICsJICBuYW1lID0gaG9sZDsKICsJfQogKyAgICAgIGVs c2UKICsJewotKwkgIC8qIFRoaXMgaXMgYHByb2JlOm9iamZpbGU6cHJvdmlkZXI6bmFtZScuICAq LworKwkgIC8qIFRoaXMgaXMgYC1wIG9iamZpbGU6cHJvdmlkZXI6bmFtZScuICAqLwogKwkgICpw ID0gJ1wwJzsKICsJICBvYmpmaWxlX25hbWUgPSBhcmc7CiArCSAgcHJvdmlkZXIgPSBob2xkOwpA QCAtOTMxMCwxMiArMTAxNTUsOSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3Rh cC1wcm9iZS5jCiArICBpZiAob2JqZmlsZV9uYW1lICYmICpvYmpmaWxlX25hbWUgPT0gJ1wwJykK ICsgICAgZXJyb3IgKF8oImludmFsaWQgb2JqZmlsZSBuYW1lIikpOwogKwotKyAgaWYgKGNhbm9u aWNhbCkKLSsgICAgY2Fub25pY2FsLT5jYW5vbmljYWwgPSBOVUxMOwotKwogKyAgQUxMX09CSkZJ TEVTIChvYmpmaWxlKQogKyAgewotKyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVz OworKyAgICBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgICBpbnQgaSwgbnVtX3Byb2Jl czsKICsKICsgICAgaWYgKCEgb2JqZmlsZS0+c2YgfHwgISBvYmpmaWxlLT5zZi0+c3ltX3Byb2Jl X2ZucykKQEAgLTkzNDksMTMgKzEwMTkxLDYgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3N0YXAtcHJvYmUuYwogKwlzYWwtPnNlY3Rpb24gPSBmaW5kX3BjX292ZXJsYXkgKHNhbC0+ cGMpOwogKwlzYWwtPnBzcGFjZSA9IGN1cnJlbnRfcHJvZ3JhbV9zcGFjZTsKICsJc2FsLT5zZW1h cGhvcmUgPSBwcm9iZXNbaV0uc2VtX2FkZHI7Ci0rCi0rCWlmIChjYW5vbmljYWwpCi0rCSAgewot KwkgICAgY2Fub25pY2FsLT5jYW5vbmljYWwgPSB4cmVhbGxvYyAoY2Fub25pY2FsLT5jYW5vbmlj YWwsCi0rCQkJCQkgICAgIHJlc3VsdC5uZWx0cyAqIHNpemVvZiAoY2hhciAqKSk7Ci0rCSAgICBj YW5vbmljYWwtPmNhbm9uaWNhbFtyZXN1bHQubmVsdHMgLSAxXSA9IHhzdHJkdXAgKGZ1bGxfYXJn KTsKLSsJICB9CiArICAgICAgfQogKyAgfQogKwpAQCAtOTM3Miw4ICsxMDIwNywxMCBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICAgIHsKICsgICAgICBj YW5vbmljYWwtPnNwZWNpYWxfZGlzcGxheSA9IDE7CiArICAgICAgY2Fub25pY2FsLT5wcmVfZXhw YW5kZWQgPSAxOworKyAgICAgIGNhbm9uaWNhbC0+YWRkcl9zdHJpbmcgPSBzYXZlc3RyaW5nICgq YXJncHRyLCBhcmdfZW5kIC0gKmFyZ3B0cik7CiArICAgIH0KICsKKysgICphcmdwdHIgPSBhcmdf ZW5kOwogKyAgZG9fY2xlYW51cHMgKGNsZWFudXApOwogKwogKyAgcmV0dXJuIHJlc3VsdDsKQEAg LTkzODMsMTQgKzEwMjIwLDE0IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFw LXByb2JlLmMKICsKICsvKiBTZWUgZGVmaW5pdGlvbiBpbiBzdGFwLXByb2JlLmguICAqLwogKwot K2NvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICoKKytzdHJ1Y3Qgc3RhcF9wcm9iZSAqCiArZmluZF9w cm9iZV9ieV9wYyAoQ09SRV9BRERSIHBjLCBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KQog K3sKICsgIHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlOwogKwogKyAgQUxMX09CSkZJTEVTIChvYmpm aWxlKQogKyAgewotKyAgICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOworKyAgICBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmVzOwogKyAgICBpbnQgaSwgbnVtX3Byb2JlczsKICsgICAg c3RhcF9lbnRyeSBlbnRyeTsKICsKQEAgLTk0MjMsMTEgKzEwMjYwLDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIENPUkVfQUREUiBwYyA9IGdldF9m cmFtZV9wYyAoZnJhbWUpOwogKyAgaW50IHNlbCA9IChpbnQpICh1aW50cHRyX3QpIGRhdGE7CiAr ICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZTsKLSsgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpw Y19wcm9iZTsKKysgIHN0cnVjdCBzdGFwX3Byb2JlICpwY19wcm9iZTsKICsgIGludCBuX3Byb2Jl czsKICsKLSsgIC8qIFNFTD09MTAgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCi0rICBnZGJfYXNz ZXJ0IChzZWwgPj0gMCAmJiBzZWwgPD0gU1RBUF9NQVhfQVJHUyk7CisrICAvKiBTRUw9PS0xIG1l YW5zICJfcHJvYmVfYXJnYyIuICAqLworKyAgZ2RiX2Fzc2VydCAoc2VsID49IC0xICYmIHNlbCA8 PSBTVEFQX01BWF9BUkdTKTsKICsKICsgIHBjX3Byb2JlID0gZmluZF9wcm9iZV9ieV9wYyAocGMs ICZvYmpmaWxlKTsKICsgIGlmIChwY19wcm9iZSA9PSBOVUxMKQpAQCAtOTQzNiw3ICsxMDI3Myw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2JlLmMKICsgIG5fcHJv YmVzCiArICAgID0gb2JqZmlsZS0+c2YtPnN5bV9wcm9iZV9mbnMtPnN5bV9nZXRfcHJvYmVfYXJn dW1lbnRfY291bnQgKG9iamZpbGUsCiArCQkJCQkJCQlwY19wcm9iZSk7Ci0rICBpZiAoc2VsID09 IDEwKQorKyAgaWYgKHNlbCA9PSAtMSkKICsgICAgcmV0dXJuIHZhbHVlX2Zyb21fbG9uZ2VzdCAo YnVpbHRpbl90eXBlIChhcmNoKS0+YnVpbHRpbl9pbnQsIG5fcHJvYmVzKTsKICsKICsgIGlmIChz ZWwgPj0gbl9wcm9iZXMpCkBAIC05NDU4LDExICsxMDI5NSwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5jCiArICBDT1JFX0FERFIgcGMgPSBleHByLT5zY29w ZTsKICsgIGludCBzZWwgPSAoaW50KSAodWludHB0cl90KSBkYXRhOwogKyAgc3RydWN0IG9iamZp bGUgKm9iamZpbGU7Ci0rICBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcGNfcHJvYmU7CisrICBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcGNfcHJvYmU7CiArICBpbnQgbl9wcm9iZXM7CiArCi0rICAvKiBT RUw9PTEwIG1lYW5zICJfcHJvYmVfYXJnYyIuICAqLwotKyAgZ2RiX2Fzc2VydCAoc2VsID49IDAg JiYgc2VsIDw9IDEwKTsKKysgIC8qIFNFTD09LTEgbWVhbnMgIl9wcm9iZV9hcmdjIi4gICovCisr ICBnZGJfYXNzZXJ0IChzZWwgPj0gLTEgJiYgc2VsIDw9IFNUQVBfTUFYX0FSR1MpOwogKwogKyAg cGNfcHJvYmUgPSBmaW5kX3Byb2JlX2J5X3BjIChwYywgJm9iamZpbGUpOwogKyAgaWYgKHBjX3By b2JlID09IE5VTEwpCkBAIC05NDcxLDcgKzEwMzA4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3N0YXAtcHJvYmUuYwogKyAgbl9wcm9iZXMKICsgICAgPSBvYmpmaWxlLT5zZi0+ c3ltX3Byb2JlX2Zucy0+c3ltX2dldF9wcm9iZV9hcmd1bWVudF9jb3VudCAob2JqZmlsZSwKICsJ CQkJCQkJCXBjX3Byb2JlKTsKLSsgIGlmIChzZWwgPT0gMTApCisrICBpZiAoc2VsID09IC0xKQog KyAgICB7CiArICAgICAgdmFsdWUtPmtpbmQgPSBheHNfcnZhbHVlOwogKyAgICAgIHZhbHVlLT50 eXBlID0gYnVpbHRpbl90eXBlIChleHByLT5nZGJhcmNoKS0+YnVpbHRpbl9pbnQ7CkBAIC05NTEw LDggKzEwMzQ3LDE4IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2Jl LmMKICtOQU1FIG1hdGNoZXMgdGhlIHByb2JlIG5hbWVzLlxuXAogK09CSkVDVCBtYXRjaCB0aGUg ZXhlY3V0YWJsZSBvciBzaGFyZWQgbGlicmFyeSBuYW1lLiIpKTsKICsKKysgIGFkZF9zZXRzaG93 X3ppbnRlZ2VyX2NtZCAoInN0YXAtZXhwcmVzc2lvbiIsIGNsYXNzX21haW50ZW5hbmNlLAorKwkJ CSAgICAmc3RhcF9leHByZXNzaW9uX2RlYnVnLAorKwkJCSAgICBfKCJTZXQgU3lzdGVtVGFwIGV4 cHJlc3Npb24gZGVidWdnaW5nLiIpLAorKwkJCSAgICBfKCJTaG93IFN5c3RlbVRhcCBleHByZXNz aW9uIGRlYnVnZ2luZy4iKSwKKysJCQkgICAgXygiV2hlbiBub24temVybywgdGhlIGludGVybmFs IHJlcHJlc2VudGF0aW9uICIKKysJCQkgICAgICAib2YgU3lzdGVtVGFwIGV4cHJlc3Npb25zIHdp bGwgYmUgcHJpbnRlZC4iKSwKKysJCQkgICAgTlVMTCwKKysJCQkgICAgc2hvd19zdGFwZXhwcmVz c2lvbmRlYnVnLAorKwkJCSAgICAmc2V0ZGVidWdsaXN0LCAmc2hvd2RlYnVnbGlzdCk7CisrCiAr ICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZ2MiLCAmcHJvYmVfZnVu Y3MsCi0rCQkJCSh2b2lkICopICh1aW50cHRyX3QpIDEwKTsKKysJCQkJKHZvaWQgKikgKHVpbnRw dHJfdCkgLTEpOwogKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVfbGF6eSAoIl9wcm9iZV9hcmcw IiwgJnByb2JlX2Z1bmNzLAogKwkJCQkodm9pZCAqKSAodWludHB0cl90KSAwKTsKICsgIGNyZWF0 ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfcHJvYmVfYXJnMSIsICZwcm9iZV9mdW5jcywKQEAg LTk1MzIsMTIgKzEwMzc5LDE3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFw LXByb2JlLmMKICsJCQkJKHZvaWQgKikgKHVpbnRwdHJfdCkgOCk7CiArICBjcmVhdGVfaW50ZXJu YWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzkiLCAmcHJvYmVfZnVuY3MsCiArCQkJCSh2b2lk ICopICh1aW50cHRyX3QpIDkpOwotK30KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9z dGFwLXByb2JlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDow MC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFwLXByb2Jl LmgJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsMTE0IEBA CisrICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzEwIiwgJnByb2Jl X2Z1bmNzLAorKwkJCQkodm9pZCAqKSAodWludHB0cl90KSAxMCk7CisrICBjcmVhdGVfaW50ZXJu YWx2YXJfdHlwZV9sYXp5ICgiX3Byb2JlX2FyZzExIiwgJnByb2JlX2Z1bmNzLAorKwkJCQkodm9p ZCAqKSAodWludHB0cl90KSAxMSk7CisrfQorZGlmZiAtLWdpdCBhL2dkYi9zdGFwLXByb2JlLmgg Yi9nZGIvc3RhcC1wcm9iZS5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u OWI2ZGM3YQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3N0YXAtcHJvYmUuaAorQEAgLTAsMCAr MSwxNDQgQEAKICsvKiBTeXN0ZW1UYXAgcHJvYmUgc3VwcG9ydCBmb3IgR0RCLgogKwogKyAgIENv cHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTk1OTEs OSArMTA0NDMsMzkgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N0YXAtcHJvYmUu aAogKyAgLyogUHJvYmUncyBhcmd1bWVudHMgYWZ0ZXIgcGFyc2luZy4gIFRoaXMgaXMgYW4gb3Bh cXVlIHN0cnVjdHVyZSB0aGF0CiArICAgICB3aWxsIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQgdGhl IGFyZ3VtZW50cyBwb2ludGVkIGJ5IEFSR1MuICAqLwogKyAgc3RydWN0IHN0YXBfYXJnc19pbmZv ICpwYXJzZWRfYXJnczsKKysKKysgIC8qIGdkYmFyY2ggc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0 aCB0aGlzIHByb2JlLiAgKi8KKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworK307CisrCisr LyogU3RydWN0dXJlIHdoaWNoIGhvbGRzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXJzaW5nIHBy b2Nlc3Mgb2Ygb25lIHByb2JlJ3MKKysgICBhcmd1bWVudC4gICovCisrCisrc3RydWN0IHN0YXBf cGFyc2VfaW5mbworK3sKKysgIC8qIFRoZSBwcm9iZSdzIGFyZ3VtZW50IGluIGEgc3RyaW5nIGZv cm1hdC4gICovCisrICBjb25zdCBjaGFyICphcmc7CisrCisrICAvKiBBIHBvaW50ZXIgdG8gdGhl IGZ1bGwgY2hhaW4gb2YgYXJndW1lbnRzLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHByaW50aW5nCisr ICAgICBlcnJvciBtZXNzYWdlcy4gIFRoZSBwYXJzZXIgZnVuY3Rpb25zIHNob3VsZCBub3QgbW9k aWZ5IHRoaXMgYXJndW1lbnQKKysgICAgIGRpcmVjdGx5OyBpbnN0ZWFkLCB0aGV5IHNob3VsZCB1 c2UgdGhlIEFSRyBwb2ludGVyIGFib3ZlLiAgKi8KKysgIGNvbnN0IGNoYXIgKnNhdmVkX2FyZzsK KysKKysgIC8qIFRoZSBleHBlY3RlZCBhcmd1bWVudCB0eXBlIChiaXRuZXNzKSwgYXMgZGVmaW5l ZCBpbiB0aGUgcHJvYmUncworKyAgICAgYXJndW1lbnQuICBGb3IgaW5zdGFuY2UsIGlmIHRoZSBh cmd1bWVudCBiZWdpbnMgd2l0aCBgLThAJywgaXQgbWVhbnMKKysgICAgIHRoZSBiaXRuZXNzIGlz IDY0LWJpdCBzaWduZWQuICBJbiB0aGlzIGNhc2UsIEFSR19UWVBFIHdvdWxkIHJlcHJlc2VudAor KyAgICAgdGhlIHR5cGUgYGludDY0X3QnLiAgKi8KKysgIHN0cnVjdCB0eXBlICphcmdfdHlwZTsK KysKKysgIC8qIEEgcG9pbnRlciB0byB0aGUgY3VycmVudCBnZGJhcmNoLiAgKi8KKysgIHN0cnVj dCBnZGJhcmNoICpnZGJhcmNoOworKworKyAgLyogR3JlYXRlciB0aGFuIHplcm8gaWYgd2UgYXJl IGluc2lkZSBhIHBhcmVudGhlc2l6ZWQgZXhwcmVzc2lvbi4gIFVzZWZ1bAorKyAgICAgZm9yIGtu b3dpbmcgd2hlbiB0byBza2lwIHNwYWNlcyBvciBub3QuICAqLworKyAgaW50IGluc2lkZV9wYXJl bl9wOwogK307CiArCi0rdHlwZWRlZiBjb25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqc3RhcF9wcm9i ZV9wOworK3R5cGVkZWYgc3RydWN0IHN0YXBfcHJvYmUgKnN0YXBfcHJvYmVfcDsKICtERUZfVkVD X1AgKHN0YXBfcHJvYmVfcCk7CiArCiArLyogQSBoZWxwZXIgZm9yIGxpbmVzcGVjIHRoYXQgZGVj b2RlcyBhIHN0YXAgcHJvYmUgc3BlY2lmaWNhdGlvbi4gIEl0CkBAIC05NjE1LDMxICsxMDQ5Nywz MSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3RhcC1wcm9iZS5oCiArICAgZm91 bmQsIHNldCAqT0JKRklMRV9PVVQgdG8gdGhlIHByb2JlJ3Mgb2JqZmlsZSwgYW5kIHJldHVybiB0 aGUKICsgICBwcm9iZS4gIElmIG5vIHByb2JlIGlzIGZvdW5kLCByZXR1cm4gTlVMTC4gICovCiAr Ci0rZXh0ZXJuIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpmaW5kX3Byb2JlX2J5X3BjIChDT1JF X0FERFIgcGMsCi0rCQkJCQkJICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKKytleHRl cm4gc3RydWN0IHN0YXBfcHJvYmUgKmZpbmRfcHJvYmVfYnlfcGMgKENPUkVfQUREUiBwYywKKysJ CQkJCSAgICBzdHJ1Y3Qgb2JqZmlsZSAqKm9iamZpbGVfb3V0KTsKICsKICsvKiBHaXZlbiBQUk9C RSwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cyBwcmVzZW50IGluIHRoYXQgcHJvYmUn cwogKyAgIGFyZ3VtZW50IHN0cmluZy4gICovCiArCi0rZXh0ZXJuIGludCBzdGFwX2dldF9wcm9i ZV9hcmd1bWVudF9jb3VudCAoY29uc3Qgc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlKTsKKytleHRl cm4gaW50IHN0YXBfZ2V0X3Byb2JlX2FyZ3VtZW50X2NvdW50IChzdHJ1Y3Qgc3RhcF9wcm9iZSAq cHJvYmUpOwogKwogKy8qIEdpdmVuIFBBUlNFRF9BUkdTLCBmcmVlcyB0aGUgc3BhY2UgYWxsb2Nh dGVkIHRvIGhvbGQgaW5mb3JtYXRpb24gYWJvdXQKICsgICB0aGUgcHJvYmUncyBwYXJzZWQgYXJn dW1lbnRzLiAgKi8KICsKICtleHRlcm4gdm9pZCBzdGFwX2ZyZWVfcGFyc2VkX2FyZ3MgKHN0cnVj dCBzdGFwX2FyZ3NfaW5mbyAqcGFyc2VkX2FyZ3MpOwogKwotKy8qIEV2YWx1YXRlcyB0aGUgcHJv YmUncyBhcmd1bWVudCBOLCByZXR1cm5pbmcgYSB2YWx1ZSBjb3JyZXNwb25kaW5nCisrLyogRXZh bHVhdGUgdGhlIHByb2JlJ3MgYXJndW1lbnQgTiwgcmV0dXJuaW5nIGEgdmFsdWUgY29ycmVzcG9u ZGluZwogKyAgIHRvIGl0LiAgKi8KICsKICtleHRlcm4gc3RydWN0IHZhbHVlICpzdGFwX2V2YWx1 YXRlX3Byb2JlX2FyZ3VtZW50IChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQkgICBj b25zdCBzdHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCisrCQkJCQkJICAgc3RydWN0IHN0YXBfcHJv YmUgKnByb2JlLAogKwkJCQkJCSAgIHN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICsJCQkJCQkg ICBpbnQgbik7CiArCiArLyogQ29tcGlsZSB0aGUgcHJvYmUncyBhcmd1bWVudCBOIHRvIGFnZW50 IGV4cHJlc3Npb24uICAqLwogKwogK2V4dGVybiB2b2lkIHN0YXBfY29tcGlsZV90b19heCAoc3Ry dWN0IG9iamZpbGUgKm9iamZpbGUsCi0rCQkJCWNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9i ZSwKKysJCQkJc3RydWN0IHN0YXBfcHJvYmUgKnByb2JlLAogKwkJCQlzdHJ1Y3QgYWdlbnRfZXhw ciAqZXhwciwKICsJCQkJc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCiArCQkJCWludCBuKTsKQEAg LTk2NTIsMTAgKzEwNTM0LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zdGFw LXByb2JlLmgKICsJCQkJCSAgICAgICBpbnQgbik7CiArCiArI2VuZGlmIC8qICFkZWZpbmVkIChT VEFQX1BST0JFX0gpICovCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5o Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi9zeW1maWxlLmgJ MjAxMS0wNy0yOSAyMjo1MjowMC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9zeW1maWxlLmgJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2Rp ZmYgLS1naXQgYS9nZGIvc3ltZmlsZS5oIGIvZ2RiL3N5bWZpbGUuaAoraW5kZXggOTE2MDVhMi4u YzViNDkwNiAxMDA2NDQKKy0tLSBhL2dkYi9zeW1maWxlLmgKKysrKyBiL2dkYi9zeW1maWxlLmgK IEBAIC0zMSw2ICszMSwxMSBAQCBzdHJ1Y3Qgb2JqZmlsZTsKICBzdHJ1Y3Qgb2JqX3NlY3Rpb247 CiAgc3RydWN0IG9ic3RhY2s7CkBAIC05NjY4LDggKzEwNTUwLDggQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAogIAogIC8qIENvbXBhcmlzb24gZnVuY3Rpb24gZm9y IHN5bWJvbCBsb29rIHVwcy4gICovCiAgCi1AQCAtMjk0LDYgKzI5OSw1MiBAQCBzdHJ1Y3QgcXVp Y2tfc3ltYm9sX2Z1bmN0aW9ucwotIAkJCQlzeW1ib2xfZmlsZW5hbWVfZnR5cGUgKmZ1biwgdm9p ZCAqZGF0YSk7CitAQCAtMzAxLDYgKzMwNiw1MiBAQCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0 aW9ucworIAkJCQlpbnQgbmVlZF9mdWxsbmFtZSk7CiAgfTsKICAKICsvKiBTdHJ1Y3R1cmUgb2Yg ZnVuY3Rpb25zIHVzZWQgZm9yIFN5c3RlbVRhcCBwcm9iZSBzdXBwb3J0LiAgSWYgb25lIG9mCkBA IC05Njc5LDcgKzEwNTYxLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZp bGUuaAogK3sKICsgIC8qIElmIG5vbi1OVUxMLCByZXR1cm4gYW4gYXJyYXkgb2YgU3lzdGVtVGFw IHByb2JlIG9iamVjdHMuICBUaGUKICsgICAgIG51bWJlciBvZiBvYmplY3RzIGlzIHJldHVybmVk IGluICpOVU1fUFJPQkVTLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICooKnN5bV9n ZXRfcHJvYmVzKSAoc3RydWN0IG9iamZpbGUgKiwKKysgIHN0cnVjdCBzdGFwX3Byb2JlICooKnN5 bV9nZXRfcHJvYmVzKSAoc3RydWN0IG9iamZpbGUgKiwKICsJCQkJCSAgICAgIGludCAqbnVtX3By b2Jlcyk7CiArCiArICAvKiBSZXR1cm4gdGhlIG51bWJlciBvZiBhcmd1bWVudHMgYXZhaWxhYmxl IHRvIFBST0JFLiAgUFJPQkUgd2lsbApAQCAtOTY4Nyw3ICsxMDU2OSw3IEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmgKICsgICAgIElmIHlvdSBwcm92aWRlIGFuIGlt cGxlbWVudGF0aW9uIG9mIHN5bV9nZXRfcHJvYmVzLCB5b3UgbXVzdAogKyAgICAgaW1wbGVtZW50 IHRoaXMgbWV0aG9kIGFzIHdlbGwuICAqLwogKyAgaW50ICgqc3ltX2dldF9wcm9iZV9hcmd1bWVu dF9jb3VudCkgKHN0cnVjdCBvYmpmaWxlICpvYmpmaWxlLAotKwkJCQkgICAgICAgY29uc3Qgc3Ry dWN0IHN0YXBfcHJvYmUgKnByb2JlKTsKKysJCQkJICAgICAgIHN0cnVjdCBzdGFwX3Byb2JlICpw cm9iZSk7CiArCiArICAvKiBFdmFsdWF0ZSB0aGUgTnRoIGFyZ3VtZW50IGF2YWlsYWJsZSB0byBQ Uk9CRS4gIFBST0JFIHdpbGwgaGF2ZQogKyAgICAgY29tZSBmcm9tIGEgY2FsbCB0byB0aGlzIG9i amZpbGUncyBzeW1fZ2V0X3Byb2JlcyBtZXRob2QuICBOIHdpbGwKQEAgLTk2OTcsNyArMTA1Nzks NyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltZmlsZS5oCiArICAgICBpbXBs ZW1lbnRhdGlvbiBvZiBzeW1fZ2V0X3Byb2JlcywgeW91IG11c3QgaW1wbGVtZW50IHRoaXMgbWV0 aG9kCiArICAgICBhcyB3ZWxsLiAgKi8KICsgIHN0cnVjdCB2YWx1ZSAqKCpzeW1fZXZhbHVhdGVf cHJvYmVfYXJndW1lbnQpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJCQkJCQljb25zdCBz dHJ1Y3Qgc3RhcF9wcm9iZSAqcHJvYmUsCisrCQkJCQkJc3RydWN0IHN0YXBfcHJvYmUgKnByb2Jl LAogKwkJCQkJCXN0cnVjdCBmcmFtZV9pbmZvICpmcmFtZSwKICsJCQkJCQlpbnQgbik7CiArCkBA IC05NzA3LDcgKzEwNTg5LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZp bGUuaAogKyAgICAgYXZhaWxhYmxlIHRvIHRoaXMgcHJvYmUuICBFWFBSIGFuZCBWQUxVRSBhcmUg dGhlIGFnZW50IGV4cHJlc3Npb24KICsgICAgIHRoYXQgaXMgYmVpbmcgdXBkYXRlZC4gICovCiAr ICB2b2lkICgqc3ltX2NvbXBpbGVfdG9fYXgpIChzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSwKLSsJ CQkgICAgIGNvbnN0IHN0cnVjdCBzdGFwX3Byb2JlICpwcm9iZSwKKysJCQkgICAgIHN0cnVjdCBz dGFwX3Byb2JlICpwcm9iZSwKICsJCQkgICAgIHN0cnVjdCBhZ2VudF9leHByICpleHByLAogKwkJ CSAgICAgc3RydWN0IGF4c192YWx1ZSAqdmFsdWUsCiArCQkJICAgICBpbnQgbik7CkBAIC05NzIx LDcgKzEwNjAzLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bWZpbGUuaAog IC8qIFN0cnVjdHVyZSB0byBrZWVwIHRyYWNrIG9mIHN5bWJvbCByZWFkaW5nIGZ1bmN0aW9ucyBm b3IgdmFyaW91cwogICAgIG9iamVjdCBmaWxlIHR5cGVzLiAgKi8KICAKLUBAIC0zNjQsNiArNDE1 LDEwIEBAIHN0cnVjdCBzeW1fZm5zCitAQCAtMzcxLDYgKzQyMiwxMCBAQCBzdHJ1Y3Qgc3ltX2Zu cwogIAogICAgYmZkX2J5dGUgKigqc3ltX3JlbG9jYXRlKSAoc3RydWN0IG9iamZpbGUgKiwgYXNl Y3Rpb24gKnNlY3RwLCBiZmRfYnl0ZSAqYnVmKTsKICAKQEAgLTk3MzIsMTEgKzEwNjE0LDExIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW1maWxlLmgKICAgIC8qIFRoZSAicXVp Y2siIChha2EgcGFydGlhbCkgc3ltYm9sIGZ1bmN0aW9ucyBmb3IgdGhpcyBzeW1ib2wKICAgICAg IHJlYWRlci4gICovCiAgICBjb25zdCBzdHJ1Y3QgcXVpY2tfc3ltYm9sX2Z1bmN0aW9ucyAqcWY7 Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFiLmMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3N5bXRhYi5jCTIwMTEtMDctMjEgMTc6MTM6 MjkuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc3ltdGFiLmMJ MjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC03NzYsNiArNzc2LDcgQEAg aW5pdF9zYWwgKHN0cnVjdCBzeW10YWJfYW5kX2xpbmUgKnNhbCkKK2RpZmYgLS1naXQgYS9nZGIv c3ltdGFiLmMgYi9nZGIvc3ltdGFiLmMKK2luZGV4IDFlYTQyNTMuLmVhODNmNzggMTAwNjQ0Cist LS0gYS9nZGIvc3ltdGFiLmMKKysrKyBiL2dkYi9zeW10YWIuYworQEAgLTgzNCw2ICs4MzQsNyBA QCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKQogICAgc2FsLT5lbmQgPSAw OwogICAgc2FsLT5leHBsaWNpdF9wYyA9IDA7CiAgICBzYWwtPmV4cGxpY2l0X2xpbmUgPSAwOwpA QCAtOTc0NCwxMSArMTA2MjYsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5 bXRhYi5jCiAgfQogIAwKICAKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zeW10YWIu aAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvc3ltdGFiLmgJ MjAxMS0wNi0zMCAwMDoxOToyNC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi9zeW10YWIuaAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAg LTExMTUsNiArMTExNSwxMCBAQCBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lCitkaWZmIC0tZ2l0IGEv Z2RiL3N5bXRhYi5oIGIvZ2RiL3N5bXRhYi5oCitpbmRleCBiYmM3ZjJiLi44ZTQxNTM5IDEwMDY0 NAorLS0tIGEvZ2RiL3N5bXRhYi5oCisrKysgYi9nZGIvc3ltdGFiLmgKK0BAIC0xMDU3LDYgKzEw NTcsMTAgQEAgc3RydWN0IHN5bXRhYl9hbmRfbGluZQogICAgQ09SRV9BRERSIGVuZDsKICAgIGlu dCBleHBsaWNpdF9wYzsKICAgIGludCBleHBsaWNpdF9saW5lOwpAQCAtOTc1OSwxMCArMTA2NDEs MjcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3N5bXRhYi5oCiAgfTsKICAKICBl eHRlcm4gdm9pZCBpbml0X3NhbCAoc3RydWN0IHN5bXRhYl9hbmRfbGluZSAqc2FsKTsKLUluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1w b2ludGVyLWZvby5TCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6 MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAw MDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFkYS9wYWNrZWRf YXJyYXkuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5leHAKK2luZGV4 IGVmN2M4YjQuLmQ0NjcyNjUgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hZGEvcGFj a2VkX2FycmF5LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYWRhL3BhY2tlZF9hcnJheS5l eHAKK0BAIC02NCw1ICs2NCwxMSBAQCBnZGJfdGVzdF9tdWx0aXBsZSAiJHRlc3QiICIkdGVzdCIg eworICAgICAgICAgIyBhcmUuICBPYnNlcnZlZCB3aXRoIChGU0YgR05VIEFkYSA0LjUuMyAyMDEx MDEyNCkuCisgICAgICAgICB4ZmFpbCAkdGVzdAorICAgICB9CisrICAgIC1yZSAiPSBcXChcXClc W1xyXG5cXSskZ2RiX3Byb21wdCAkIiB7CisrCSMgYXJjaGVyLWphbmtyYXRvY2h2aWwtdmxhIHJl c29sdmVzIGl0IGFzIGEgZHluYW1pYyB0eXBlIHJlc29sdmVkIGFzIGFuCisrCSMgZW1wdHkgYXJy YXkgWzAuLi0xXS4KKysJIyBEV19BVF91cHBlcl9ib3VuZCA6IChEV19PUF9mYnJlZzogLTQ4OyBE V19PUF9kZXJlZikKKysgICAgICAgIHhmYWlsICR0ZXN0CisrICAgIH0KKyB9CisgCitkaWZmIC0t Z2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXItZm9vLlMgYi9n ZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci1mb28uUworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjgzZmFhZjYKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVyLWZvby5TCiBAQCAtMCww ICsxLDQ1NyBAQAogKwkuZmlsZQkieDg2XzY0LXZsYS1wb2ludGVyLmMiCiArCS5zZWN0aW9uCS5k ZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCkBAIC0xMDIyMSwxMCArMTExMjAsMTEgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBv aW50ZXItZm9vLlMKICsJLnN0cmluZwkiR05VIEMgNC4zLjIgMjAwODExMDUgKFJlZCBIYXQgNC4z LjItNykiCiArCS5pZGVudAkiR0NDOiAoR05VKSA0LjMuMiAyMDA4MTEwNSAoUmVkIEhhdCA0LjMu Mi03KSIKICsJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBwcm9nYml0cwotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50 ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXBvaW50ZXIuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIw MAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS1wb2ludGVy LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtcG9pbnRlci5jCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmUyYzhmNworLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogQEAgLTAsMCAr MSw0MyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdn ZXIuCiArCkBAIC0xMDI2OSwxMCArMTExNjksMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuYwogK30KICsKICsj ZW5kaWYKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gv eDg2XzY0LXZsYS1wb2ludGVyLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwCTIwMTEtMDctMjkgMjI6 NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJj aC94ODZfNjQtdmxhLXBvaW50ZXIuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDI0 M2NmMQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQt dmxhLXBvaW50ZXIuZXhwCiBAQCAtMCwwICsxLDY2IEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTEwMzQwLDEwICsxMTI0MSwxMSBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtcG9pbnRlci5leHAKICsKICtnZGJfdGVzdCAid2hhdGlzICphcnJheSIgInR5cGUgPSBjaGFy IFxcXFs3OFxcXF0iICJzZWNvbmQ6IHdoYXRpcyAqYXJyYXkiCiArZ2RiX3Rlc3QgInB0eXBlICph cnJheSIgInR5cGUgPSBjaGFyIFxcXFs3OFxcXF0iICJzZWNvbmQ6IHB0eXBlICphcnJheSIKLUlu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZs YS10eXBlZGVmLWZvby5TCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6 MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi1mb28uUwkyMDExLTA3LTI5IDIyOjUyOjAy LjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2 XzY0LXZsYS10eXBlZGVmLWZvby5TIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxh LXR5cGVkZWYtZm9vLlMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42NmY3 YTM5CistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12 bGEtdHlwZWRlZi1mb28uUwogQEAgLTAsMCArMSw0NTUgQEAKICsJLmZpbGUJIng4Nl82NC12bGEt dHlwZWRlZi5jIgogKwkuc2VjdGlvbgkuZGVidWdfYWJicmV2LCIiLEBwcm9nYml0cwpAQCAtMTA4 MDAsMTAgKzExNzAyLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3Vp dGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLWZvby5TCiArCS5zdHJpbmcJIkdOVSBDIDQu My4yIDIwMDgxMTA1IChSZWQgSGF0IDQuMy4yLTcpIgogKwkuaWRlbnQJIkdDQzogKEdOVSkgNC4z LjIgMjAwODExMDUgKFJlZCBIYXQgNC4zLjItNykiCiArCS5zZWN0aW9uCS5ub3RlLkdOVS1zdGFj aywiIixAcHJvZ2JpdHMKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJ MTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmMJMjAxMS0wNy0y OSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dk Yi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC94ODZf NjQtdmxhLXR5cGVkZWYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmI4 MDljNGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLmMKIEBAIC0wLDAgKzEsNDMgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBh cnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTA4NDgsMTAgKzExNzUxLDExIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0 LXZsYS10eXBlZGVmLmMKICt9CiArCiArI2VuZGlmCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5hcmNoL3g4Nl82NC12bGEtdHlwZWRlZi5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10 eXBlZGVmLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAorbmV3IGZpbGUgbW9kZSAx MDA2NDQKK2luZGV4IDAwMDAwMDAuLmIwNTQxMWUKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmFyY2gveDg2XzY0LXZsYS10eXBlZGVmLmV4cAogQEAgLTAsMCArMSw2NCBA QAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBA IC0xMDkxNywxMCArMTE4MjEsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuYXJjaC94ODZfNjQtdmxhLXR5cGVkZWYuZXhwCiArZ2RiX3Rlc3QgIndoYXRp cyBhcnJheSIgInR5cGUgPSBhcnJheV90IiAic2Vjb25kOiB3aGF0aXMgYXJyYXkiCiArCiArZ2Ri X3Rlc3QgInB0eXBlIGFycmF5IiAidHlwZSA9IGNoYXIgXFxcWzc4XFxcXSIgInNlY29uZDogcHR5 cGUgYXJyYXkiCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2FycmF5aWR4LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCTIwMTEtMDEtMDEgMTY6MzM6NDAuMDAw MDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5i YXNlL2FycmF5aWR4LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2FycmF5aWR4LmMKK2luZGV4IDZjMTU4YmYuLjczOWNlMzQgMTAwNjQ0CistLS0g YS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmMKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvYXJyYXlpZHguYwogQEAgLTE3LDYgKzE3LDEzIEBACiAgCiAgaW50IGFycmF5W10g PSB7MSwgMiwgMywgNH07CkBAIC0xMDkzNSwxMCArMTE4MzksMTAgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5jCiAgaW50CiAgbWFp biAodm9pZCkKICB7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2FycmF5aWR4LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cAkyMDExLTAxLTAxIDE2OjMz OjQwLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAy MDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2FycmF5aWR4LmV4cCBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCitpbmRleCBkOGVlNWMwLi5kZTRiYTc1 IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hcnJheWlkeC5leHAKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYXJyYXlpZHguZXhwCiBAQCAtNTcsNCArNTcsMTIgQEAg Z2RiX3Rlc3QgInByaW50IGFycmF5IiBcCiAgICAgICAgICAgIlxce1xcXFswXFxcXSA9IDEsIFxc XFsxXFxcXSA9IDIsIFxcXFsyXFxcXSA9IDMsIFxcXFszXFxcXSA9IDRcXH0iIFwKICAgICAgICAg ICAiUHJpbnQgYXJyYXkgd2l0aCBhcnJheS1pbmRleGVzIG9uIgpAQCAtMTA5NTMsMTEgKzExODU3 LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YXJyYXlpZHguZXhwCiArCXVuc3VwcG9ydGVkICIkdGVzdCAobm8gR0NDKSIKICsgICAgfQogK30K LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVs dC5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rlc3Rz dWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAkyMDExLTA1LTIwIDE2OjM3OjIwLjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZh dWx0LmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAgLTYwNyw2ICs2 MDcsMTcgQEAgZ2RiX3Rlc3RfbGlzdF9leGFjdCAic2hvdyBjb252ZW5pZW5jZSIgIgorZGlmZiAt LWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvZGVmYXVsdC5leHAgYi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL2RlZmF1bHQuZXhwCitpbmRleCBlMjNhYzIxLi5mOTkyMjFmIDEwMDY0NAorLS0t IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS9kZWZhdWx0LmV4cAorQEAgLTYxMSw2ICs2MTEsMTkgQEAgZ2RiX3Rlc3RfbGlz dF9leGFjdCAic2hvdyBjb252ZW5pZW5jZSIgInNob3cgY29udmVuaWVuY2UiIFwKICAJeyRfc2Rh dGEgPSB2b2lkfSBcCiAgCXskX3NpZ2luZm8gPSB2b2lkfSBcCiAgCXskX3RocmVhZCA9IDB9IFwK QEAgLTEwOTcyLDEzICsxMTg3NiwxNiBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5iYXNlL2RlZmF1bHQuZXhwCiArCXskX3Byb2JlX2FyZzcgPSA8ZXJyb3I6 IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAogKwl7JF9wcm9iZV9hcmc4ID0gPGVycm9yOiBObyBmcmFt ZSBzZWxlY3RlZD59IFwKICsJeyRfcHJvYmVfYXJnOSA9IDxlcnJvcjogTm8gZnJhbWUgc2VsZWN0 ZWQ+fSBcCisrCXskX3Byb2JlX2FyZzEwID0gPGVycm9yOiBObyBmcmFtZSBzZWxlY3RlZD59IFwK KysJeyRfcHJvYmVfYXJnMTEgPSA8ZXJyb3I6IE5vIGZyYW1lIHNlbGVjdGVkPn0gXAogICAgICB9 CiAgCiAgI3Rlc3Qgc2hvdyBkaXJlY3RvcmllcwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFs LXZhci1maWVsZC1hZGRyZXNzLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1h ZGRyZXNzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRy ZXNzLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lZWI3Yjg1CistLS0g L2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVs ZC1hZGRyZXNzLmMKIEBAIC0wLDAgKzEsMjAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQg b2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTEwMDAsMTAgKzExOTA3LDExIEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwt dmFyLWZpZWxkLWFkZHJlc3MuYwogK3N0cnVjdCB7CiArICBpbnQgZmllbGQ7CiArfSBzdGF0aWNz dHJ1Y3QgPSB7IDEgfTsKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhwCi09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g L2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1h ZGRyZXNzLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdp dCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvaW50ZXJuYWwtdmFyLWZpZWxkLWFkZHJlc3MuZXhw IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmllbGQtYWRkcmVzcy5leHAK K25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42ZDgyZTczCistLS0gL2Rldi9u dWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2ludGVybmFsLXZhci1maWVsZC1hZGRy ZXNzLmV4cAogQEAgLTAsMCArMSwyNiBAQAogKyMgQ29weXJpZ2h0IDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMTAzMSwxMSArMTE5MzksMTIgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9pbnRlcm5hbC12YXItZmll bGQtYWRkcmVzcy5leHAKICsKICtnZGJfdGVzdCB7c2V0ICR2YXJzdHJ1Y3QgPSBzdGF0aWNzdHJ1 Y3R9CiArZ2RiX3Rlc3Qge3AgJHZhcnN0cnVjdC5maWVsZH0gIiA9IDEiCi1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuYwotPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAot KysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2Jl LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAgKzEsNjkgQEAK K2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuYyBiL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5k ZXggMDAwMDAwMC4uMjM2ZGE5NgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS9zdGFwLXByb2JlLmMKK0BAIC0wLDAgKzEsMTA4IEBACiArLyogVGhpcyB0ZXN0Y2Fz ZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKICsgICBDb3B5cmlnaHQgMjAx MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTExMDYyLDYgKzExOTcxLDExIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1w cm9iZS5jCiArX19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV90d29fc2VtYXBob3Jl IF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9i ZXMiKSkpOwogKyNkZWZpbmUgVEVTVDIgdGVzdGVfdHdvX3NlbWFwaG9yZQogKworK19fZXh0ZW5z aW9uX18gdW5zaWduZWQgc2hvcnQgdGVzdGVfbTRfc2VtYXBob3JlIF9fYXR0cmlidXRlX18gKCh1 bnVzZWQpKSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5wcm9iZXMiKSkpOworKworK19fZXh0 ZW5zaW9uX18gdW5zaWduZWQgc2hvcnQgdGVzdGVfcHN0cl9zZW1hcGhvcmUgX19hdHRyaWJ1dGVf XyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7CisrCisr X19leHRlbnNpb25fXyB1bnNpZ25lZCBzaG9ydCB0ZXN0ZV9wc19zZW1hcGhvcmUgX19hdHRyaWJ1 dGVfXyAoKHVudXNlZCkpIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnByb2JlcyIpKSk7CiAr I2Vsc2UKICsKICsjZGVmaW5lIFRFU1QgMQpAQCAtMTEwNzYsNDAgKzExOTkwLDc1IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5j CiArI2Vycm9yICJub3QgdXNpbmcgU3lzdGVtVGFwIHYzIHByb2JlcyIKICsjZW5kaWYKICsKLSt2 b2lkCisrc3RydWN0IGZ1bmNzCisreworKyAgaW50IHZhbDsKKysKKysgIGNvbnN0IGNoYXIgKigq cHMpIChpbnQpOworK307CisrCisrc3RhdGljIHZvaWQKICttMSAodm9pZCkKICt7CiArICBpZiAo VEVTVDIpCiArICAgIFNUQVBfUFJPQkUgKHRlc3RlLCB0d28pOwogK30KICsKLSt2b2lkCisrc3Rh dGljIHZvaWQKICttMiAodm9pZCkKICt7CiArICBpZiAoVEVTVDIpCiArICAgIFNUQVBfUFJPQkUg KHRlc3RlLCB0d28pOwogK30KICsKLStpbnQKKytzdGF0aWMgaW50CiArZiAoaW50IHgpCiArewog KyAgaWYgKFRFU1QpCi0rICAgIFNUQVBfUFJPQkUxKHRlc3RlLCB1c2VyLCB4KTsKKysgICAgU1RB UF9QUk9CRTEgKHRlc3RlLCB1c2VyLCB4KTsKICsgIHJldHVybiB4KzU7CiArfQogKworK3N0YXRp YyBjb25zdCBjaGFyICoKKytwc3RyIChpbnQgdmFsKQorK3sKKysgIGNvbnN0IGNoYXIgKmEgPSAi VGhpcyBpcyBhIHRlc3QgbWVzc2FnZS4iOworKyAgY29uc3QgY2hhciAqYiA9ICJUaGlzIGlzIGFu b3RoZXIgdGVzdCBtZXNzYWdlLiI7CisrCisrICBTVEFQX1BST0JFMyAodGVzdGUsIHBzLCBhLCBi LCB2YWwpOworKworKyAgcmV0dXJuIHZhbCA9PSAwID8gYSA6IGI7CisrfQorKworK3N0YXRpYyB2 b2lkCisrbTQgKGNvbnN0IHN0cnVjdCBmdW5jcyAqZnMsIGludCB2KQorK3sKKysgIFNUQVBfUFJP QkUzICh0ZXN0ZSwgbTQsIGZzLT52YWwsIGZzLT5wcyAodiksIHYpOworK30KKysKICtpbnQKICtt YWluKCkKICt7Ci0rICBmKGYoMjMpKTsKLSsgIG0xKCk7Ci0rICBtMigpOworKyAgc3RydWN0IGZ1 bmNzIGZzOworKworKyAgZnMudmFsID0gNDI7CisrICBmcy5wcyA9IHBzdHI7CisrCisrICBmIChm ICgyMykpOworKyAgbTEgKCk7CisrICBtMiAoKTsKKysKKysgIG00ICgmZnMsIDApOworKyAgbTQg KCZmcywgMSk7CisrCisrICByZXR1cm4gMDsgLyogbGFzdCBicmVhayBoZXJlICovCiArfQotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2Jl LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS9zdGFwLXByb2JlLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAg LTAsMCArMSw3MiBAQAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1w cm9iZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDY4ZWZiOQorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zdGFwLXByb2JlLmV4cAorQEAgLTAsMCArMSwxODcg QEAKICsjIENvcHlyaWdodCAoQykgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xMTEzNSw5ICsxMjA4NCw5IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc3RhcC1wcm9iZS5leHAKICsKICsg ICAgaWYgeyRhcmcgIT0gIiJ9IHsKICsgICAgCXNldCBhcmcgImFkZGl0aW9uYWxfZmxhZ3M9JGFy ZyIKLSsJc2V0IGFkZGVuZHVtICIsIHdpdGggc2VtYXBob3JlIgorKwlzZXQgYWRkZW5kdW0gIiwg d2l0aCBzZW1hcGhvcmUsIG5vdCBvcHRpbWl6ZWQiCiArICAgIH0gZWxzZSB7Ci0rCXNldCBhZGRl bmR1bSAiLCBubyBzZW1hcGhvcmUiCisrCXNldCBhZGRlbmR1bSAiLCBubyBzZW1hcGhvcmUsIG5v dCBvcHRpbWl6ZWQiCiArICAgIH0KICsKICsgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke3Rlc3RmaWxlfSAke3Rlc3RmaWxlfS5jIFwKQEAgLTExMTU2LDIzICsx MjEwNSwxMzUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu YmFzZS9zdGFwLXByb2JlLmV4cAogKwkidGVzdGUgKnVzZXIgKiRoZXggLioiIFwKICsJImluZm8g cHJvYmVzJGFkZGVuZHVtIgogKyAgICAKLSsgICAgaWYge1tydW50byAicHJvYmU6dGVzdGU6dXNl ciJdfSB7Ci0rCXBhc3MgInJ1biB0byBwcm9iZTp0ZXN0ZTp1c2VyJGFkZGVuZHVtIgorKyAgICBp ZiB7W3J1bnRvICItcCB0ZXN0ZTp1c2VyIl19IHsKKysJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVz ZXIkYWRkZW5kdW0iCisrICAgIH0gZWxzZSB7CisrCWZhaWwgInJ1biB0byAtcCB0ZXN0ZTp1c2Vy JGFkZGVuZHVtIgorKyAgICB9CisrCisrICAgICMgVGVzdCBwcm9iZSBhcmd1bWVudHMuCisrICAg IGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAorKyAgICAicHJpbnQgXCRf cHJvYmVfYXJnYyBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50 IFwkX3Byb2JlX2FyZzAgPT0geCIgIiA9IDEiIFwKKysgICAgImNoZWNrIFwkX3Byb2JlX2FyZzAg Zm9yIHByb2JlIHVzZXIkYWRkZW5kdW0iCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9h cmcxIiBcCisrICAgIAkiSW52YWxpZCBwcm9iZSBhcmd1bWVudCAxIC0tIHByb2JlIGhhcyAxIGFy Z3VtZW50cyBhdmFpbGFibGUiIFwKKysgICAgCSJjaGVjayBcJF9wcm9iZV9hcmcxIGZvciBwcm9i ZSB1c2VyJGFkZGVuZHVtIgorKworKyAgICAjIFNldCBhIGJyZWFrcG9pbnQgd2l0aCBtdWx0aXBs ZSBwcm9iZSBsb2NhdGlvbnMuCisrICAgIGdkYl90ZXN0ICJicmVhayAtcCB0ZXN0ZTp0d28iIFwK KysJIkJyZWFrcG9pbnQgXFswLTlcXSsgYXQgJGhleC4qMiBsb2NhdGlvbnMuKiIgXAorKwkic2V0 IG11bHRpLWxvY2F0aW9uIHByb2JlIGJyZWFrcG9pbnQgKHByb2JlIHR3bykkYWRkZW5kdW0iCisr CisrICAgICMgUmVpbml0IEdEQiwgc2V0IGEgYnJlYWtwb2ludCBvbiBwcm9iZSBtNC4KKysgICAg ZGVsZXRlX2JyZWFrcG9pbnRzCisrICAgIHJlcnVuX3RvX21haW4KKysgICAgaWYge1tydW50byAi LXAgdGVzdGU6bTQiXX0geworKyAgICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1 bSIKKysgICAgfSBlbHNlIHsKKysgICAgICBmYWlsICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5k dW0iCisrICAgIH0KKysKKysgICAgIyBUZXN0aW5nIHByb2JlIGFyZ3VtZW50cy4KKysgICAgZ2Ri X3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCisrICAgICJwcmludCBcJF9wcm9i ZV9hcmdjIGZvciBwcm9iZSBtNCRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3By b2JlX2FyZzAiICIgPSA0MiIgXAorKyAgICAiY2hlY2sgXCRfcHJvYmVfYXJnMCBmb3IgcHJvYmUg bTQkYWRkZW5kdW0iCisrICAgIGdkYl90ZXN0ICJwcmludCAoY29uc3QgY2hhciAqKSBcJF9wcm9i ZV9hcmcxIiBcCisrICAgICIgPSAkaGV4IC5UaGlzIGlzIGEgdGVzdCBtZXNzYWdlLioiIFwKKysg ICAgImNoZWNrIFwkX3Byb2JlX2FyZzEgZm9yIHByb2JlIG00JGFkZGVuZHVtIgorKyAgICBnZGJf dGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnMiA9PSB2IiAiID0gMSIgXAorKyAgICAiY2hlY2sgXCRf cHJvYmVfYXJnMiBmb3IgcHJvYmUgbTQkYWRkZW5kdW0iCisrCisrICAgICMgUmVpbml0IEdEQiwg c2V0IGEgYnJlYWtwb2ludCBvbiBwcm9iZSBwcy4KKysgICAgZGVsZXRlX2JyZWFrcG9pbnRzCisr ICAgIHJlcnVuX3RvX21haW4KKysgICAgaWYge1tydW50byAiLXAgdGVzdGU6cHMiXX0geworKyAg ICAgIHBhc3MgInJ1biB0byAtcCB0ZXN0ZTptNCRhZGRlbmR1bSIKKysgICAgfSBlbHNlIHsKKysg ICAgICBmYWlsICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0iCisrICAgIH0KKysKKysgICAg Z2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZ2MiICIgPSAzIiBcCisrICAgICJwcmludCBcJF9w cm9iZV9hcmdjIGZvciBwcm9iZSBwcyRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IChj b25zdCBjaGFyICopIFwkX3Byb2JlX2FyZzEiIFwKKysgICAgIiA9ICRoZXggLlRoaXMgaXMgYW5v dGhlciB0ZXN0IG1lc3NhZ2UuKiIgXAorKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnMSBmb3IgcHJv YmUgcHMkYWRkZW5kdW0iCisrCisrICAgIHJldHVybiAwCisrfQorKworK3Byb2Mgc3RhcF90ZXN0 X25vX2RlYnVnaW5mbyB7eyBhcmcgIiIgfX0geworKyAgICBnbG9iYWwgdGVzdGZpbGUgaGV4Cisr CisrICAgIGlmIHskYXJnICE9ICIifSB7CisrICAgIAlzZXQgYXJnICJhZGRpdGlvbmFsX2ZsYWdz PSRhcmciCisrCXNldCBhZGRlbmR1bSAiLCB3aXRoIHNlbWFwaG9yZSwgb3B0aW1pemVkIgorKyAg ICB9IGVsc2UgeworKwlzZXQgYWRkZW5kdW0gIiwgbm8gc2VtYXBob3JlLCBvcHRpbWl6ZWQiCisr ICAgIH0KKysKKysgICAgaWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAk e3Rlc3RmaWxlfSAke3Rlc3RmaWxlfS5jIFwKKysJICAgeyRhcmcgbm9kZWJ1ZyBvcHRpbWl6ZT0t TzJ9XX0geworKwlyZXR1cm4gLTEKKysgICAgfQorKworKyAgICBpZiB7W3J1bnRvICItcCB0ZXN0 ZTp1c2VyIl19IHsKKysJcGFzcyAicnVuIHRvIC1wIHRlc3RlOnVzZXIkYWRkZW5kdW0iCiArICAg IH0gZWxzZSB7Ci0rCWZhaWwgInJ1biB0byBwcm9iZTp0ZXN0ZTp1c2VyJGFkZGVuZHVtIgorKwlm YWlsICJydW4gdG8gLXAgdGVzdGU6dXNlciRhZGRlbmR1bSIKICsgICAgfQogKwogKyAgICAjIFRl c3QgcHJvYmUgYXJndW1lbnRzLgotKyAgICBnZGJfdGVzdCAicHJpbnQgXCRfcHJvYmVfYXJnYyIg IiA9IDEiICJwcmludCBcJF9wcm9iZV9hcmdjJGFkZGVuZHVtIgotKyAgICBnZGJfdGVzdCAicHJp bnQgXCRfcHJvYmVfYXJnMCA9PSB4IiAiID0gMSIgImNoZWNrIFwkX3Byb2JlX2FyZzAkYWRkZW5k dW0iCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdjIiAiID0gMSIgXAorKyAgICAi cHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJvYmUgdXNlciRhZGRlbmR1bSIKKysgICAgZ2RiX3Rl c3QgInByaW50IFwkX3Byb2JlX2FyZzAgPT0gMjMiICIgPSAxIiBcCisrICAgICJjaGVjayBcJF9w cm9iZV9hcmcwIGZvciBwcm9iZSB1c2VyJGFkZGVuZHVtIgogKyAgICBnZGJfdGVzdCAicHJpbnQg XCRfcHJvYmVfYXJnMSIgXAogKyAgICAJIkludmFsaWQgcHJvYmUgYXJndW1lbnQgMSAtLSBwcm9i ZSBoYXMgMSBhcmd1bWVudHMgYXZhaWxhYmxlIiBcCi0rICAgIAkiY2hlY2sgXCRfcHJvYmVfYXJn MSRhZGRlbmR1bSIKKysgICAgCSJjaGVjayBcJF9wcm9iZV9hcmcxIGZvciBwcm9iZSB1c2VyJGFk ZGVuZHVtIgogKwogKyAgICAjIFNldCBhIGJyZWFrcG9pbnQgd2l0aCBtdWx0aXBsZSBwcm9iZSBs b2NhdGlvbnMuCi0rICAgIGdkYl90ZXN0ICJicmVhayBwcm9iZTp0ZXN0ZTp0d28iIFwKLSsJIkJy ZWFrcG9pbnQgLiogYXQgJGhleC4qMiBsb2NhdGlvbnMuKiIgXAotKwkic2V0IG11bHRpLWxvY2F0 aW9uIHByb2JlIGJyZWFrcG9pbnQkYWRkZW5kdW0iCisrICAgICMgSW4gdGhpcyBzY2VuYXJpbywg d2UgbWF5IGV4cGVjdCBtb3JlIHRoYW4gMiBsb2NhdGlvbnMgYmVjYXVzZSBvZgorKyAgICAjIHRo ZSBvcHRpbWl6YXRpb25zIChpbmxpbmluZywgbG9vcCB1bnJvbGxpbmcsIGV0YykuCisrICAgIGdk Yl90ZXN0ICJicmVhayAtcCB0ZXN0ZTp0d28iIFwKKysJIkJyZWFrcG9pbnQgLiogYXQgJGhleC4q XFswLTlcXSsgbG9jYXRpb25zLioiIFwKKysJInNldCBtdWx0aS1sb2NhdGlvbiBwcm9iZSBicmVh a3BvaW50IChwcm9iZSB0d28pJGFkZGVuZHVtIgorKworKyAgICAjIFJlaW5pdCBHREIsIHNldCBh IGJyZWFrcG9pbnQgb24gcHJvYmUgbTQuCisrICAgIGRlbGV0ZV9icmVha3BvaW50cworKyAgICBy ZXJ1bl90b19tYWluCisrICAgIGlmIHtbcnVudG8gIi1wIHRlc3RlOm00Il19IHsKKysgICAgICBw YXNzICJydW4gdG8gLXAgdGVzdGU6bTQkYWRkZW5kdW0iCisrICAgIH0gZWxzZSB7CisrICAgICAg ZmFpbCAicnVuIHRvIC1wIHRlc3RlOm00JGFkZGVuZHVtIgorKyAgICB9CisrCisrICAgICMgVGVz dGluZyBwcm9iZSBhcmd1bWVudHMuCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmdj IiAiID0gMyIgXAorKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJvYmUgbTQkYWRkZW5k dW0iCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9hcmcwIiAiID0gNDIiIFwKKysgICAg ImNoZWNrIFwkX3Byb2JlX2FyZzAgZm9yIHByb2JlIG00JGFkZGVuZHVtIgorKyAgICBnZGJfdGVz dCAicHJpbnQgKGNvbnN0IGNoYXIgKikgXCRfcHJvYmVfYXJnMSIgXAorKyAgICAiID0gJGhleCAu VGhpcyBpcyBhIHRlc3QgbWVzc2FnZS4qIiBcCisrICAgICJjaGVjayBcJF9wcm9iZV9hcmcxIGZv ciBwcm9iZSBtNCRhZGRlbmR1bSIKKysgICAgZ2RiX3Rlc3QgInByaW50IFwkX3Byb2JlX2FyZzIg PT0gMCIgIiA9IDEiIFwKKysgICAgImNoZWNrIFwkX3Byb2JlX2FyZzIgZm9yIHByb2JlIG00JGFk ZGVuZHVtIgorKworKyAgICAjIFJlaW5pdCBHREIsIHNldCBhIGJyZWFrcG9pbnQgb24gcHJvYmUg cHMuCisrICAgIGRlbGV0ZV9icmVha3BvaW50cworKyAgICByZXJ1bl90b19tYWluCisrICAgIGlm IHtbcnVudG8gIi1wIHRlc3RlOnBzIl19IHsKKysgICAgICBwYXNzICJydW4gdG8gLXAgdGVzdGU6 bTQkYWRkZW5kdW0iCisrICAgIH0gZWxzZSB7CisrICAgICAgZmFpbCAicnVuIHRvIC1wIHRlc3Rl Om00JGFkZGVuZHVtIgorKyAgICB9CisrCisrICAgIGdkYl90ZXN0ICJwcmludCBcJF9wcm9iZV9h cmdjIiAiID0gMyIgXAorKyAgICAicHJpbnQgXCRfcHJvYmVfYXJnYyBmb3IgcHJvYmUgcHMkYWRk ZW5kdW0iCisrICAgIGdkYl90ZXN0ICJwcmludCAoY29uc3QgY2hhciAqKSBcJF9wcm9iZV9hcmcx IiBcCisrICAgICIgPSAkaGV4IC5UaGlzIGlzIGFub3RoZXIgdGVzdCBtZXNzYWdlLioiIFwKKysg ICAgInByaW50IFwkX3Byb2JlX2FyZzEgZm9yIHByb2JlIHBzJGFkZGVuZHVtIgogKwogKyAgICBy ZXR1cm4gMAogK30KQEAgLTExMTgxLDExICsxMjI0Miw5NiBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3N0YXAtcHJvYmUuZXhwCiArICAgIHVudGVz dGVkIHN0YXAtcHJvYmUuZXhwCiArICAgIHJldHVybiAtMQogK30KKysKICtzdGFwX3Rlc3QgIi1E VVNFX1BST0JFUyIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLW92ZXJmbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0w MSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAw MDAwMDAgKzAyMDAKKytzdGFwX3Rlc3Rfbm9fZGVidWdpbmZvCisrc3RhcF90ZXN0X25vX2RlYnVn aW5mbyAiLURVU0VfUFJPQkVTIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv dmxhLWZyYW1lLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1mcmFtZS5jCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNTc1MGY2OAorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtZnJhbWUuYworQEAgLTAsMCArMSwzMSBAQAor Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCisrCisr ICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrCisrICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKKysgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisrICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysKKysgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKysgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor KworKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCisrICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworKworKyNpbmNsdWRlIDxzdHJp bmcuaD4KKysKKytpbnQKKyttYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisreworKyAgY2hh ciBzWzIgKyBhcmdjXTsKKysgIHZvaWQgKCpmKSAoY2hhciAqKSA9IDA7CisrCisrICBtZW1zZXQg KHMsIDAsIHNpemVvZiAocykpOworKyAgc1swXSA9ICdYJzsKKysKKysgIGYgKHMpOworKyAgcmV0 dXJuIDA7CisrfQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1l LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAorbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjQ3NzM2YzcKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAorQEAgLTAsMCArMSwzOCBAQAorKyMg Q29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIworKyMgVGhp cyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v ciBtb2RpZnkKKysjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorKyMgKGF0IHlvdXIgb3B0aW9u KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysjCisrIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQg aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysjIGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisrIyBNRVJDSEFO VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisr IyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorKyMKKysjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCisrIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKysKKytzZXQgdGVzdGZpbGUgdmxhLWZyYW1lCisrc2V0 IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KKysKKytpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9XSB9IHsKKysgICAgcmV0dXJuIC0xCisrfQorKwor K2lmICFbcnVudG9fbWFpbl0geworKyAgICByZXR1cm4gLTEKKyt9CisrCisrc2V0IHRlc3QgImNv bnRpbnVlIgorK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKKysgICAgLXJlICJDb250 aW51aW5nXFwuXHJcblxyXG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBTZWdtZW50 YXRpb24gZmF1bHRcXC5cclxuMHgwKyBpbiBcXD9cXD8gXFwoXFwpXHJcbiRnZGJfcHJvbXB0ICQi IHsKKysJcGFzcyAkdGVzdAorKyAgICB9CisrICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0ICQiIHsK KysJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCisrCXJldHVybgorKyAgICB9CisrfQorKworK2dk Yl90ZXN0ICJidCBmdWxsIiAiXHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKK2RpZmYgLS1n aXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS1vdmVyZmxvdy5jIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLmM1ZDVlZTAKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJh c2UvdmxhLW92ZXJmbG93LmMKIEBAIC0wLDAgKzEsMzAgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlz IHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTEyMTcsMTAgKzEyMzYzLDEx IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LW92ZXJmbG93LmMKICsKICsgIHJldHVybiAwOwogK30KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLW92ZXJmbG93LmV4cAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhw CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZsb3cuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFz ZS92bGEtb3ZlcmZsb3cuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u MjRhNjA4ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEt b3ZlcmZsb3cuZXhwCiBAQCAtMCwwICsxLDEwOSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMTMzMSwxMCArMTI0NzgsMTEgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEtb3ZlcmZs b3cuZXhwCiArZ2RiX3Rlc3QgImJ0IiAiaW4gXFteIFxdKmFib3J0IFxcKC4qIGluIG1haW4gXFwo LioiICJCYWNrdHJhY2UgYWZ0ZXIgYWJvcnQoKSIKICsKICt2ZXJib3NlIC1sb2cgImtiX2ZvdW5k IGluIGJ0IGFmdGVyIGFib3J0KCkgPSBbZXhwciBbbWVtb3J5X3ZfcGFnZXNfZ2V0XSAqICRwYWdl c2l6ZSAvIDEwMjRdIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS92bGEuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuYmFzZS92bGEuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmMgYi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZTFmM2Vk MQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYwogQEAg LTAsMCArMSw1NSBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUg ZGVidWdnZXIuCiArCkBAIC0xMTM5MSwxMCArMTI1MzksMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuYwogKyAgZm9vICg3OCk7CiArICBy ZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL3ZsYS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAor ZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cCBiL2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAu LjVkYTczNzgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LmV4cAogQEAgLTAsMCArMSw2MiBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMTQ1OCwxMSArMTI2MDcsMTEgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS92bGEuZXhwCiArZ2RiX3Rlc3Qg InAgdGVtcDEiICIgPSAnMScgPHJlcGVhdHMgNzggdGltZXM+IiAic2Vjb25kOiBwcmludCB0ZW1w MSIKICtnZGJfdGVzdCAicCB0ZW1wMiIgIiA9ICcyJyA8cmVwZWF0cyA3OCB0aW1lcz4iICJzZWNv bmQ6IHByaW50IHRlbXAyIgogK2dkYl90ZXN0ICJwIHRlbXAzIiAiID0gJzMnIDxyZXBlYXRzIDQ4 IHRpbWVzPiIgInNlY29uZDogcHJpbnQgdGVtcDMiCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93LmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRo cm93LmV4cAkyMDExLTAxLTAxIDE2OjMzOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAJMjAxMS0w Ny0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC01Myw2ICs1MywxNyBAQCBnZGJfdGVz dF9tdWx0aXBsZSAicHJpbnQgX1Vud2luZF9EZWJ1Z0hvCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIuY3AvbmV4dG92ZXJ0aHJvdy5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0 b3ZlcnRocm93LmV4cAoraW5kZXggY2M5ZmU4Ni4uMmYxNmFmMSAxMDA2NDQKKy0tLSBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmNwL25leHRvdmVydGhyb3cuZXhwCisrKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5jcC9uZXh0b3ZlcnRocm93LmV4cAorQEAgLTU4LDYgKzU4LDE3IEBAIGdkYl90ZXN0X211bHRp cGxlICJwcmludCBfVW53aW5kX0RlYnVnSG9vayIgImNoZWNrIGZvciB1bndpbmRlciBob29rIiB7 CiAgICAgIH0KICB9CiAgaWYgeyEkb2t9IHsKQEAgLTExNDgwLDEwICsxMjYyOSwxMSBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5jcC9uZXh0b3ZlcnRocm93 LmV4cAogICAgICB1bnN1cHBvcnRlZCAibmV4dG92ZXJ0aHJvdy5leHAgY291bGQgbm90IGZpbmQg X1Vud2luZF9EZWJ1Z0hvb2siCiAgICAgIHJldHVybiAtMQogIH0KLUluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LWJvdW5kLWxvY2xpc3QuUwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlm ZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3VuZC1sb2NsaXN0LlMKK25ldyBmaWxlIG1v ZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5hYWMzYmFhCistLS0gL2Rldi9udWxsCisrKysgYi9n ZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuUwogQEAgLTAsMCArMSwy NDYgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2Vy LgogKwpAQCAtMTE3MzEsMTAgKzEyODgxLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlzdC5TCiArCS5zdHJpbmcJ CSJjaGFyIgogKy5MdWludF9zdHI6CiArCS5zdHJpbmcJCSJ1bnNpZ25lZCBpbnQiCi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxv Y2xpc3QuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAu MDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xpc3QuZXhwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAw MDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1ib3Vu ZC1sb2NsaXN0LmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItYm91bmQtbG9jbGlz dC5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi44MTVlZDkzCistLS0g L2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xp c3QuZXhwCiBAQCAtMCwwICsxLDU0IEBACiArIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTExNzkwLDEwICsxMjk0MSwxMSBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLWJvdW5kLWxvY2xp c3QuZXhwCiArCiArIyBUaGUgcmVnaXN0ZXIgY29udGFpbnMgdW5wcmVkaWN0YWJsZSB2YWx1ZSAt IHRoZSBhcnJheSBzaXplLgogK2dkYl90ZXN0ICJwdHlwZSByZWdfc3RyaW5nIiB7dHlwZSA9IGNo YXIgXFstP1swLTldK1xdfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMJMjAxMS0wNy0yOSAyMjo1 MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLXN0cmlwcGVkLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVk LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi4xZjAyZDkwCistLS0gL2Rl di9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cmlwcGVkLmMKIEBA IC0wLDAgKzEsNDIgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05V IGRlYnVnZ2VyLgogKwpAQCAtMTE4MzcsMTAgKzEyOTg5LDExIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuYwogKyAgZnVu YzEgKDEsIDIpOwogKyAgcmV0dXJuIDA7CiArfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9kdzItc3RyaXBwZWQuZXhw CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJpcHBlZC5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvZHcyLXN0cmlwcGVkLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAw MDAuLjFjNmU4NGEKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJm Mi9kdzItc3RyaXBwZWQuZXhwCiBAQCAtMCwwICsxLDc5IEBACiArIyBDb3B5cmlnaHQgMjAwNiBG cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKQEAgLTExOTIxLDEwICsxMzA3NCwxMSBA QCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcy LXN0cmlwcGVkLmV4cAogK2dkYl90ZXN0ICJzdGVwIiBcCiArICAgICAgICAgImZ1bmMuKiBcXCgu KlxcKSBhdCAuKiIgXAogKyAgICAgICAgICJzdGVwIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRp b24uUwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdh cmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUwkyMDExLTA3LTI5IDIyOjUyOjAy LjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmR3YXJmMi9k dzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLlMgYi9nZGIvdGVzdHN1aXRlL2dkYi5kd2Fy ZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdGlvbi5TCituZXcgZmlsZSBtb2RlIDEwMDY0 NAoraW5kZXggMDAwMDAwMC4uNWZjZGQ4NAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uUwogQEAgLTAs MCArMSw4MyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVi dWdnZXIuCiArCkBAIC0xMjAwOSwxMCArMTMxNjMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9j YXQKICsKICsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KICsJLmJ5dGUJCTB4MAkJCS8q IFRlcm1pbmF0b3IgKi8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLmR3YXJmMi9kdzItc3RydWN0LW1lbWJlci1kYXRhLWxvY2F0aW9uLmV4cAotPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3Qt bWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICsw MjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVt YmVyLWRhdGEtbG9jYXRpb24uZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2R3Mi1zdHJ1 Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXgg MDAwMDAwMC4uYzQxMTUxYworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu ZHdhcmYyL2R3Mi1zdHJ1Y3QtbWVtYmVyLWRhdGEtbG9jYXRpb24uZXhwCiBAQCAtMCwwICsxLDM3 IEBACiArIyBDb3B5cmlnaHQgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsK QEAgLTEyMDUxLDEwICsxMzIwNiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi5kd2FyZjIvZHcyLXN0cnVjdC1tZW1iZXItZGF0YS1sb2NhdAogK2NsZWFu X3Jlc3RhcnQgJGJpbmZpbGUKICsKICtnZGJfdGVzdCAicHR5cGUgc3RydWN0IHNvbWVfc3RydWN0 IiAidHlwZSA9IHN0cnVjdCBzb21lX3N0cnVjdCB7XFtcclxuIFx0XF0qdm9pZCBmaWVsZDtcW1xy XG4gXHRcXSp9IgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAt MDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJMjAxMS0wNy0yOSAyMjo1 MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0 cmFuL2R3YXJmLXN0cmlkZS5leHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0 cmlkZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5kN2I4YmVhCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlk ZS5leHAKIEBAIC0wLDAgKzEsNDIgQEAKICsjIENvcHlyaWdodCAyMDA5IEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTIwOTgsMTAgKzEzMjU0LDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4 cAogK2dkYl9jb250aW51ZV90b19icmVha3BvaW50ICJicmVhay1oZXJlIiAiLipicmVhay1oZXJl LioiCiArZ2RiX3Rlc3QgInAgYzQwcHQoMSkiICIgPSAnMC1oZWxsby4qIgogK2dkYl90ZXN0ICJw IGM0MHB0KDIpIiAiID0gJzEtaGVsbG8uKiIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmY5MAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkw CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uZTQ5MmIzYQorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9kd2FyZi1zdHJpZGUuZjkwCiBAQCAtMCwwICsxLDQwIEBACiArISBDb3B5cmlnaHQgMjAw OSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjE0MywxMCArMTMzMDAs MTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9kd2FyZi1zdHJpZGUuZjkwCiArICBwcmludCAqLCBjNDBwdCAgISBicmVhay1oZXJlCiArCiAr ZW5kIHByb2dyYW0gcmVwcm8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3Vp dGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS1zdHViLmY5MAotPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVy LWZyYW1lLXN0dWIuZjkwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZm IC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0 dWIuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLXN0 dWIuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMjYxY2UxNworLS0t IC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVy LWZyYW1lLXN0dWIuZjkwCiBAQCAtMCwwICsxLDI0IEBACiArISBDb3B5cmlnaHQgMjAxMCBGcmVl IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjE3MiwxMCArMTMzMzAsMTEgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5h bWljLW90aGVyLWZyYW1lLXN0dWIuZjkKICsgIHJlYWwgOjogZHVtbXkKICsgIGR1bW15ID0gMQog K2VuZCBzdWJyb3V0aW5lIGJhcgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZy YW1lLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBh L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy1vdGhlci1mcmFtZS5leHAgYi9nZGIv dGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3RoZXItZnJhbWUuZXhwCituZXcgZmlsZSBt b2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZmE0MWI4MAorLS0tIC9kZXYvbnVsbAorKysrIGIv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAogQEAgLTAs MCArMSwzNyBAQAogKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ bmMuCiArCkBAIC0xMjIxNCwxMCArMTMzNzMsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3 MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmV4cAogK30K ICsKICtnZGJfdGVzdCAiYnQiIHtmb28gXChzdHJpbmc9J2hlbGxvJy4qfQotSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLW90aGVyLWZy YW1lLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAw MDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9keW5hbWljLW90aGVyLWZyYW1lLmY5MAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAw MDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1p Yy1vdGhlci1mcmFtZS5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMtb3Ro ZXItZnJhbWUuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMmJjNjM3 ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWlj LW90aGVyLWZyYW1lLmY5MAogQEAgLTAsMCArMSwzNiBAQAogKyEgQ29weXJpZ2h0IDIwMTAgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQpAQCAtMTIyNTUsMTEgKzEzNDE1LDEyIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy1vdGhlci1mcmFtZS5mOTAKICsgIGVuZCBpbnRlcmZhY2UKICsgIGNhbGwgZm9vICgnaGVs bG8nKQogK2VuZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9keW5hbWljLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAw MDAwMCArMDIwMAotQEAgLTAsMCArMSwxNDUgQEAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5h bWljLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmU3OWU5NGEKKy0t LSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAK K0BAIC0wLDAgKzEsMTUyIEBACiArIyBDb3B5cmlnaHQgMjAwNyBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb24sIEluYy4KICsKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CkBAIC0xMjMyNyw2ICsxMzQ4OCwxMyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMuZXhwCiArZ2RiX3Rlc3QgInAgdmFydiIgIlxcJFxbMC05XF0qID0gKDwob2JqZWN0fHRoZSBh cnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8VW5hYmxlIHRvIGFj Y2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFzc29jaWF0ZWQuKSIg InAgdmFydiB1bmFzc29jaWF0ZWQiCiArZ2RiX3Rlc3QgInB0eXBlIHZhcnYiICJ0eXBlID0gKDwo b2JqZWN0fHRoZSBhcnJheSkgaXMgbm90IGFzc29jaWF0ZWQ+fC4qKENhbm5vdCBhY2Nlc3MgaXR8 VW5hYmxlIHRvIGFjY2VzcyB0aGUgb2JqZWN0KSBiZWNhdXNlIHRoZSBvYmplY3QgaXMgbm90IGFz c29jaWF0ZWQuKSIgInB0eXBlIHZhcnYgdW5hc3NvY2lhdGVkIgogKworK3NldCB0ZXN0ICJvdXRw dXQgdmFyeCIKKytnZGJfdGVzdF9tdWx0aXBsZSAkdGVzdCAkdGVzdCB7CisrICAgIC1yZSAiXm91 dHB1dCB2YXJ4XHJcblxbKCkgLDY3ODkuXF0qJGdkYl9wcm9tcHQgJCIgeworKwlwYXNzICR0ZXN0 CisrICAgIH0KKyt9CisrCiArZ2RiX2JyZWFrcG9pbnQgW2dkYl9nZXRfbGluZV9udW1iZXIgInZh cnYtYXNzb2NpYXRlZCJdCiArZ2RiX2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhcnYtYXNzb2Np YXRlZCIKICtnZGJfdGVzdCAicCB2YXJ4KDMsIDcsIDE5KSIgIlxcJFxbMC05XF0qID0gNiIgInAg dmFyeCgzLCA3LCAxOSkgd2l0aCB2YXJ2IGFzc29jaWF0ZWQiCkBAIC0xMjQwNSwxMCArMTM1NzMs MTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9keW5hbWljLmV4cAogK2dkYl90ZXN0ICJwIHZhcnQoMyw4KSIgIlxcJFxbMC05XF0qID0gOSIK ICsjIG1hcHMgdG8gZm9vOjp2YXJ5KDEsMykKICtnZGJfdGVzdCAicCB2YXJ0KDIsOSkiICJcXCRc WzAtOVxdKiA9IDEwIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9keW5hbWljLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAx LTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAkyMDExLTA3LTI5IDIyOjUyOjAyLjAw MDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy5mOTAgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZjkwCituZXcgZmls ZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMGY0MzU2NAorLS0tIC9kZXYvbnVsbAorKysr IGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmY5MAogQEAgLTAsMCArMSw5OCBA QAogKyEgQ29weXJpZ2h0IDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIQpA QCAtMTI1MDgsMTAgKzEzNjc3LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5mOTAKICsgIGlmICh4ICgxLCAxKSAubmUuIDgg Lm9yLiB4ICgyLCAyKSAubmUuIDkgLm9yLiB4ICgxLCAyKSAubmUuIDQpIGNhbGwgYWJvcnQKICsg IGlmICh4ICgzLCAxKSAubmUuIDEwKSBjYWxsIGFib3J0CiArZW5kCi1JbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAKLT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4 cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vc3RyaW5nLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjM5ZGUy YzQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5n LmV4cAogQEAgLTAsMCArMSw1OSBAQAogKyMgQ29weXJpZ2h0IDIwMDggRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMjU3MiwxMCArMTM3NDIsMTEgQEAgSW5kZXg6IGdkYi03 LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCiArZ2Ri X2NvbnRpbnVlX3RvX2JyZWFrcG9pbnQgInZhci1maW5pc2giCiArZ2RiX3Rlc3QgInAgZSIgIlxc JFxbMC05XF0qID0gJ2UgICAnIiAicCBlIHJlLXNldCIKICtnZGJfdGVzdCAicCBmIiAiXFwkXFsw LTlcXSogPSBcXChcXCggJ2YgICAnLCAnZiAgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdm ICAgJywgJ2YgICAnXFwpIFxcKCAnZjIgICcsICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAg JywgJ2YgICAnLCAnZiAgICdcXCkgXFwoICdmICAgJywgJ2YgICAnLCAnZiAgICcsICdmICAgJywg J2YgICAnLCAnZiAgICcsICdmICAgJ1xcKSBcXCkiICJwICpmIHJlLXNldCIKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3RyaW5nLmY5MAotPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAw MAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJp bmcuZjkwCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdHJpbmcuZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4u MjI2ZGM1ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dHJpbmcuZjkwCiBAQCAtMCwwICsxLDM3IEBACiArISBDb3B5cmlnaHQgMjAwOCBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIEluYy4KICshCkBAIC0xMjYxNCwxMCArMTM3ODUsMTEgQEAgSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZjkw CiArICBoID0gJ2gnCiArICBjYWxsIGZvbyAoZywgaCkKICtlbmQKLUluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwCi09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdl LmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9zdWJyYW5nZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAw Li5jODE5ZTIzCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFu L3N1YnJhbmdlLmV4cAogQEAgLTAsMCArMSw2MCBAQAogKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBAIC0xMjY3OSwxMCArMTM4NTEsMTEgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5n ZS5leHAKICtkZWxldGVfYnJlYWtwb2ludHMKICtnZGJfdW5sb2FkCiArZ2RiX3Rlc3Qge3AgJGEg KDMsIDI6Mil9IHsgPSBcKDIzXCl9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAotPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVs bAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAJMjAxMS0wNy0yOSAy Mjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YnJhbmdlLmY5MCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3VicmFuZ2Uu ZjkwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uNDc0N2VhOQorLS0tIC9k ZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJyYW5nZS5mOTAKIEBA IC0wLDAgKzEsMjggQEAKICshIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv biwgSW5jLgogKyEKQEAgLTEyNzEyLDEwICsxMzg4NSwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N1YnJhbmdlLmY5MAogKyAgcHRyID0+ IGEKICsgIHdyaXRlICgqLCopIGEgICAgICAgICAgICAgICAgICEgYnJlYWstc3RhdGljCiArZW5k Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRl c3QuZXhwCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0 c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAJMjAxMS0wNy0yOSAyMjo1MjowMC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxm dGVzdC5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQg YS9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3QuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIu Z2RiL3NlbGZ0ZXN0LmV4cAoraW5kZXggMzBhNzFkZC4uNGJiOGU3ZCAxMDA2NDQKKy0tLSBhL2dk Yi90ZXN0c3VpdGUvZ2RiLmdkYi9zZWxmdGVzdC5leHAKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LmdkYi9zZWxmdGVzdC5leHAKIEBAIC05Miw2ICs5MiwxMCBAQCBwcm9jIGRvX3N0ZXBzX2FuZF9u ZXh0cyB7fSB7CiAgCQlzZXQgZGVzY3JpcHRpb24gInN0ZXAgb3ZlciB0dHlhcmcgaW5pdGlhbGl6 YXRpb24iCiAgCQlzZXQgY29tbWFuZCAic3RlcCIKQEAgLTEyNzI3LDEwICsxMzkwMCwxMSBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5nZGIvc2VsZnRlc3Qu ZXhwCiAgCSAgICAtcmUgIi4qcHJlX3N0YXRfY2hhaW4gPSBtYWtlX2NvbW1hbmRfc3RhdHNfY2xl YW51cC4qJGdkYl9wcm9tcHQgJCIgewogIAkJc2V0IGRlc2NyaXB0aW9uICJuZXh0IG92ZXIgbWFr ZV9jb21tYW5kX3N0YXRzX2NsZWFudXAgYW5kIGV2ZXJ5dGhpbmcgaXQgY2FsbHMiCiAgCQlzZXQg Y29tbWFuZCAibmV4dCIKLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUv Z2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5 NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuYwkyMDExLTA3LTI5IDIy OjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pMi12YXItc3RhbGUtdHlwZS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWkyLXZhci1zdGFs ZS10eXBlLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5lYmNlZDNjCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5 cGUuYwogQEAgLTAsMCArMSwyNiBAQAogKy8qIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwpAQCAtMTI3NTgsMTAgKzEzOTMyLDExIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm1pL21pMi12YXItc3RhbGUtdHlwZS5j CiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuZXhwCi09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5taS9taTItdmFyLXN0YWxlLXR5cGUuZXhwCTIw MTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3Rz dWl0ZS9nZGIubWkvbWkyLXZhci1zdGFsZS10eXBlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm1p L21pMi12YXItc3RhbGUtdHlwZS5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAw MDAwLi43NGExMDRlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5taS9t aTItdmFyLXN0YWxlLXR5cGUuZXhwCiBAQCAtMCwwICsxLDU3IEBACiArIyBDb3B5cmlnaHQgMjAx MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsjCkBAIC0xMjgyMCwxNCArMTM5OTUs MTUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubWkvbWky LXZhci1zdGFsZS10eXBlLmV4cAogK21pX2NyZWF0ZV92YXJvYmogInZsYSIgInZsYSIgImNyZWF0 ZSBsb2NhbCB2YXJpYWJsZSB2bGEiCiArCiArbWlfZ2RiX3Rlc3QgIi12YXItdXBkYXRlICoiICJc XF5kb25lLGNoYW5nZWxpc3Q9LioiICItdmFyLXVwZGF0ZSAqIgotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBv aW50LW11bHRpLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0wLDAg KzEsNTkgQEAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50 LW11bHRpLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMKK25l dyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41MTY5N2IwCistLS0gL2Rldi9udWxs CisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRpLmMKK0BAIC0w LDAgKzEsNTEgQEAKICsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRl YnVnZ2VyLgogKwotKyAgIENvcHlyaWdodCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgorKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgog KwogKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0 ZSBpdCBhbmQvb3IgbW9kaWZ5CiArICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKQEAgLTEyODQ4LDE0ICsxNDAyNCw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dh dGNocG9pbnQtbXVsdGkuYwogK3N0YXRpYyB2b2xhdGlsZSBpbnQgYSwgYiwgYzsKICsKICtzdGF0 aWMgdm9pZAotK21hcmtlcl9leGl0MSAodm9pZCkKLSt7Ci0rICBhID0gMTsKLSt9Ci0rCi0rLyog V29ya2Fyb3VuZCBQUiBicmVha3BvaW50cy8xMjI3MiBieSB0d28gZGlmZmVyZW50IGJyZWFrcG9p bnQgbG9jYXRpb25zLiAgKi8KLStzdGF0aWMgdm9pZAotK21hcmtlcl9leGl0MiAodm9pZCkKKytt YXJrZXJfZXhpdCAodm9pZCkKICt7CiArICBhID0gMTsKICt9CkBAIC0xMjg4MCwxNyArMTQwNDks MTcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkv d2F0Y2hwb2ludC1tdWx0aS5jCiArICBpID0gcHRocmVhZF9qb2luICh0aHJlYWQsIE5VTEwpOwog KyAgYXNzZXJ0IChpID09IDApOwogKwotKyAgbWFya2VyX2V4aXQxICgpOwotKyAgbWFya2VyX2V4 aXQyICgpOworKyAgbWFya2VyX2V4aXQgKCk7CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93YXRjaHBvaW50LW11bHRp LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVs dGkvd2F0Y2hwb2ludC1tdWx0aS5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAy MDAKLUBAIC0wLDAgKzEsMTEzIEBACi0rIyBDb3B5cmlnaHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KLSsKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5tdWx0aS93 YXRjaHBvaW50LW11bHRpLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNocG9pbnQt bXVsdGkuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZDdkYWVlYwor LS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1t dWx0aS5leHAKK0BAIC0wLDAgKzEsOTIgQEAKKysjIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorKyMKICsjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CiArIyBpdCB1bmRlciB0aGUg dGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQog KyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUg TGljZW5zZSwgb3IKQEAgLTEyOTA0LDcgKzE0MDczLDggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIubXVsdGkvd2F0Y2hwb2ludC1tdWx0aS5leHAKICsjIFlv dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlCiArIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8v d3d3LmdudS5vcmcvbGljZW5zZXMvPi4KICsKLStpZiB7IFtpc19yZW1vdGUgdGFyZ2V0XSB8fCAh W2lzbmF0aXZlXSB9IHRoZW4geworK2lmIFtpc19yZW1vdGUgdGFyZ2V0XSB7CisrICAgICMgSXQg aXMgS0ZBSUwuCiArICAgIGNvbnRpbnVlCiArfQogKwpAQCAtMTI5NDksNjMgKzE0MTE5LDQyIEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm11bHRpL3dhdGNo cG9pbnQtbXVsdGkuZXhwCiArIyBEbyBub3QgdXNlIHNpbXBsZSBoYXJkd2FyZSB3YXRjaHBvaW50 ICgid2F0Y2giKSBhcyBpdHMgZmFsc2UgaGl0IG1heSBiZQogKyMgdW5ub3RpY2VkIGJ5IEdEQiBp ZiBpdCByZWFkcyBpdCBzdGlsbCBoYXMgdGhlIHNhbWUgdmFsdWUuCiArZ2RiX3Rlc3QgImF3YXRj aCBjIiAiSGFyZHdhcmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkgd2F0Y2hwb2ludCBcWzAtOVxd KzogYyIKLSsjIE5ldmVyIGtlZXAvdXNlIGFueSBub24taHcgYnJlYWtwb2ludHMgdG8gd29ya2Fy b3VuZCBhIG11bHRpLWluZmVyaW9yIGJ1Zy4KLSsjIFVzZSBgKicgdG8gd29ya2Fyb3VuZCBhIG11 bHRpLWluZmVyaW9yIGJ1Zy4KLStzZXQgdGVzdCAiaGJyZWFrICptYXJrZXJfZXhpdDIiCisrCisr Z2RiX2JyZWFrcG9pbnQgIm1hcmtlcl9leGl0IgorKworK2dkYl90ZXN0ICJpbmZlcmlvciAxIiAi d2l0Y2hpbmcgdG8gaW5mZXJpb3IgMSAuKiIKKysKKytzZXQgaGF2ZV9hd2F0Y2hfYiAwCisrc2V0 IHRlc3QgImF3YXRjaCBiIgogK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAg LXJlICJIYXJkd2FyZSBhc3Npc3RlZCBicmVha3BvaW50IFxbMC05XF0rIGF0IC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKKysgICAgLXJlICJIYXJkd2FyZSBhY2Nlc3MgXFwocmVhZC93cml0ZVxcKSB3 YXRjaHBvaW50IFxbMC05XF0rOiBiXHJcbiRnZGJfcHJvbXB0ICQiIHsKICsJcGFzcyAkdGVzdAor KwlzZXQgaGF2ZV9hd2F0Y2hfYiAxCiArICAgIH0KLSsgICAgLXJlICIoTm8gaGFyZHdhcmUgYnJl YWtwb2ludCBzdXBwb3J0IGluIHRoZSB0YXJnZXRcXC58SGFyZHdhcmUgYnJlYWtwb2ludHMgdXNl ZCBleGNlZWRzIGxpbWl0XFwuKVxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXBhc3MgJHRlc3QKLSsJ dW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCisrICAgIC1yZSAiVGhlcmUgYXJlIG5vdCBlbm91Z2gg YXZhaWxhYmxlIGhhcmR3YXJlIHJlc291cmNlcyBmb3IgdGhpcyB3YXRjaHBvaW50XFwuXHJcbiRn ZGJfcHJvbXB0ICQiIHsKKysJdW50ZXN0ZWQgJHRlc3QKICsJcmV0dXJuCiArICAgIH0KICt9CiAr Ci0rZ2RiX3Rlc3QgImluZmVyaW9yIDEiICJ3aXRjaGluZyB0byBpbmZlcmlvciAxIC4qIgotKwot K2dkYl90ZXN0ICJhd2F0Y2ggYiIgIkhhcmR3YXJlIGFjY2VzcyBcXChyZWFkL3dyaXRlXFwpIHdh dGNocG9pbnQgXFswLTlcXSs6IGIiCi0rZ2RiX3Rlc3QgImhicmVhayAqbWFya2VyX2V4aXQxIiB7 SGFyZHdhcmUgYXNzaXN0ZWQgYnJlYWtwb2ludCBbMC05XSsgYXQgLip9Ci0rCiArZ2RiX3Rlc3Qg ImluZmVyaW9yIDIiICJ3aXRjaGluZyB0byBpbmZlcmlvciAyIC4qIgogKwogKyMgRkFJTCB3b3Vs ZCBiZSBhIGhpdCBvbiB3YXRjaHBvaW50IGZvciBgYicgLSB0aGF0IG9uZSBpcyBmb3IgdGhlIG90 aGVyCiArIyBpbmZlcmlvci4KICtnZGJfdGVzdCAiY29udGludWUiICJIYXJkd2FyZSBhY2Nlc3Mg XFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBjXHJcblxyXG5PbGQgdmFsdWUg PSAwXHJcbk5ldyB2YWx1ZSA9IDNcclxuLioiICJjYXRjaCBjIgogKwotK3NldCB0ZXN0ICJjYXRj aCBtYXJrZXJfZXhpdDIiCi0rZ2RiX3Rlc3RfbXVsdGlwbGUgImNvbnRpbnVlIiAkdGVzdCB7Ci0r ICAgIC1yZSAiQnJlYWtwb2ludCBcWzAtOVxdKywgbWFya2VyX2V4aXQyIC4qXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJc2V0dXBfa2ZhaWwgYnJlYWtwb2ludHMvMTIzMTIgKi0qLSoKLSsJcGFzcyAk dGVzdAotKyAgICB9Ci0rICAgIC1yZSAiSGFyZHdhcmUgYWNjZXNzIFxcKHJlYWQvd3JpdGVcXCkg d2F0Y2hwb2ludCBcWzAtOVxdKzogY1xyXG5cclxuVmFsdWUgPSAzXHJcbiguKiBpbiApP1xcKj8o X19HSV8pP19fbnB0bF9kZWF0aF9ldmVudCAuKlxyXG4kZ2RiX3Byb21wdCAkIiB7Ci0rCXNldHVw X2tmYWlsIGJyZWFrcG9pbnRzLzEyMzEyICotKi0qCi0rCWZhaWwgJHRlc3QKLSsgICAgfQotK30K KytnZGJfdGVzdCAiY29udGludWUiICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdCAu KiIgImNhdGNoIG1hcmtlcl9leGl0IGluIGluZmVyaW9yIDIiCiArCiArZ2RiX3Rlc3QgImluZmVy aW9yIDEiICJ3aXRjaGluZyB0byBpbmZlcmlvciAxIC4qIgogKwogK2dkYl90ZXN0ICJjb250aW51 ZSIgIkhhcmR3YXJlIGFjY2VzcyBcXChyZWFkL3dyaXRlXFwpIHdhdGNocG9pbnQgXFswLTlcXSs6 IGJcclxuXHJcbk9sZCB2YWx1ZSA9IDBcclxuTmV3IHZhbHVlID0gMlxyXG4uKiIgImNhdGNoIGIi CiArCi0rc2V0IHRlc3QgImNhdGNoIG1hcmtlcl9leGl0MSIKLStnZGJfdGVzdF9tdWx0aXBsZSAi Y29udGludWUiICR0ZXN0IHsKLSsgICAgLXJlICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJf ZXhpdDEgLipcclxuJGdkYl9wcm9tcHQgJCIgewotKwlzZXR1cF9rZmFpbCBicmVha3BvaW50cy8x MjMxMiAqLSotKgotKwlwYXNzICR0ZXN0Ci0rICAgIH0KLSsgICAgLXJlICJIYXJkd2FyZSBhY2Nl c3MgXFwocmVhZC93cml0ZVxcKSB3YXRjaHBvaW50IFxbMC05XF0rOiBiXHJcblxyXG5WYWx1ZSA9 IDJcclxuKC4qIGluICk/XFwqPyhfX0dJXyk/X19ucHRsX2RlYXRoX2V2ZW50IC4qXHJcbiRnZGJf cHJvbXB0ICQiIHsKLSsJc2V0dXBfa2ZhaWwgYnJlYWtwb2ludHMvMTIzMTIgKi0qLSoKLSsJZmFp bCAkdGVzdAotKyAgICB9Ci0rfQotKwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCi09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t LS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rl ci1mdW5jLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKKytnZGJfdGVzdCAi Y29udGludWUiICJCcmVha3BvaW50IFxbMC05XF0rLCBtYXJrZXJfZXhpdCAuKiIgImNhdGNoIG1h cmtlcl9leGl0IGluIGluZmVyaW9yIDEiCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIu b3B0L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2Fy cmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMC4uNzI5ZjQ1NworLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0 L2FycmF5LWZyb20tcmVnaXN0ZXItZnVuYy5jCiBAQCAtMCwwICsxLDIyIEBACiArLyogVGhpcyBm aWxlIGlzIHBhcnQgb2YgR0RCLCB0aGUgR05VIGRlYnVnZ2VyLgogKwpAQCAtMTMwMjksMTAgKzE0 MTc4LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLWZ1bmMuYwogK3sKICsgIHJldHVybiBhcnJbMF07CiArfQot SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZy b20tcmVnaXN0ZXIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAw OjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAw MDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9t LXJlZ2lzdGVyLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5j CituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uMzA5MGU3ZQorLS0tIC9kZXYv bnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIub3B0L2FycmF5LWZyb20tcmVnaXN0ZXIuYwog QEAgLTAsMCArMSwyOCBAQAogKy8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQiwgdGhlIEdOVSBk ZWJ1Z2dlci4KICsKQEAgLTEzMDYyLDEwICsxNDIxMiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4y MDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5jCiArCiAr ICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi5vcHQvYXJyYXktZnJvbS1yZWdpc3Rlci5leHAKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251 bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAkyMDEx LTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3Vp dGUvZ2RiLm9wdC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAw MDAwMDAuLmYyZGU3MTgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAogQEAgLTAsMCArMSwzMyBAQAogKyMgQ29weXJpZ2h0 IDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArIwpAQCAtMTMxMDAsMTAgKzE0 MjUxLDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLm9w dC9hcnJheS1mcm9tLXJlZ2lzdGVyLmV4cAogKyMgU2VlbiByZWdyZXNzaW9uOgogKyMgQWRkcmVz cyByZXF1ZXN0ZWQgZm9yIGlkZW50aWZpZXIgImFyciIgd2hpY2ggaXMgaW4gcmVnaXN0ZXIgJHJk aQogK2dkYl90ZXN0ICJwIGFyclxbMFxdIiAiXFwkXFswLTlcXSsgPSA0MiIKLUluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAw Ci0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlz LmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dk Yi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFz Y2FsL2FycmF5cy5leHAKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jY2M2 ZTFlCistLS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlz LmV4cAogQEAgLTAsMCArMSwxMDQgQEAKICsjIENvcHlyaWdodCAyMDA4LCAyMDA5IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgogKyMKQEAgLTEzMjA5LDEwICsxNDM2MSwxMSBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLmV4 cAogK30KICtnZGJfdGVzdCAicHJpbnQgRHluQXJyQ2hhciIgIi4qID0gJ2FiY2RlZmdoaWprbG0n IiAiUHJpbnQgZHluYW1pYyBhcnJheSBvZiBjaGFyIgogKwotSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMKLT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCTIwMTEt MDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0 ZS9nZGIucGFzY2FsL2FycmF5cy5wYXMgYi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlz LnBhcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjI5NTYwMmQKKy0tLSAv ZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnBhc2NhbC9hcnJheXMucGFzCiBAQCAt MCwwICsxLDgyIEBACiArewogKyBDb3B5cmlnaHQgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZv dW5kYXRpb24sIEluYy4KQEAgLTEzMjk2LDExICsxNDQ0OSwxMSBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi5wYXNjYWwvYXJyYXlzLnBhcwogKyAgcyA6PSAn dGVzdCcjMCdzdHJpbmcnOwogKyAgd3JpdGVsbihzKTsgeyBzZXQgYnJlYWtwb2ludCAyIGhlcmUg fQogK2VuZC4KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnB5 dGhvbi9weS1mcmFtZS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAkyMDExLTAyLTI2IDE1OjA2 OjI4LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0 ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCAr MDIwMAotQEAgLTc4LDggKzc4LDYgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0g Z2RiLm5ldworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1mcmFtZS5l eHAgYi9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktZnJhbWUuZXhwCitpbmRleCAxY2I1NzNl Li4zNjA1ZWU1IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1l LmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZyYW1lLmV4cAorQEAgLTc4 LDggKzc4LDYgQEAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCBiZnJhbWUgPT0gZ2RiLm5ld2VzdF9m cmFtZSgpIiBUcnVlIFwKICAKICBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYw ID09IGYxIiAiID0gRmFsc2UiICJ0ZXN0IGVxdWFsaXR5IGNvbXBhcmlzb24gKGZhbHNlKSIKICBn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwID09IGYwIiAiID0gVHJ1ZSIgInRl c3QgZXF1YWxpdHkgY29tcGFyaXNvbiAodHJ1ZSkiCkBAIC0xMzMwOSwxNyArMTQ0NjIsMTcgQEAg SW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LWZy YW1lLmV4cAogIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3VsdCA9JywgZjAuaXNfdmFsaWQg KCkiICIgPSBUcnVlIiAidGVzdCBGcmFtZS5pc192YWxpZCIKICBnZGJfdGVzdCAicHl0aG9uIHBy aW50ICdyZXN1bHQgPScsIGYwLm5hbWUgKCkiICIgPSBmMiIgInRlc3QgRnJhbWUubmFtZSIKICBn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnR5cGUgKCkgPT0gZ2RiLk5PUk1B TF9GUkFNRSIgIiA9IFRydWUiICJ0ZXN0IEZyYW1lLnR5cGUiCi1AQCAtOTQsMyArOTIsNSBAQCBn ZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlCitAQCAtOTQsMyArOTIsNSBA QCBnZGJfdGVzdCAicHl0aG9uIHByaW50ICdyZXN1bHQgPScsIGYwLnJlYWRfdmFyICgndmFyaWFi bGVfd2hpY2hfc3VyZWx5X2RvZXNudF9leAogIGdkYl90ZXN0ICJweXRob24gcHJpbnQgJ3Jlc3Vs dCA9JywgZjAucmVhZF92YXIgKCdhJykiICIgPSAxIiAidGVzdCBGcmFtZS5yZWFkX3ZhciAtIHN1 Y2Nlc3MiCiAgCiAgZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBnZGIuc2VsZWN0 ZWRfZnJhbWUgKCkgPT0gZjEiICIgPSBUcnVlIiAidGVzdCBnZGIuc2VsZWN0ZWRfZnJhbWUiCiAr CiArZ2RiX3Rlc3QgInB5dGhvbiBwcmludCAncmVzdWx0ID0nLCBmMC5ibG9jayAoKSIgIjxnZGIu QmxvY2sgb2JqZWN0IGF0IDB4XFtcWzp4ZGlnaXQ6XF1cXSs+IiAidGVzdCBGcmFtZS5ibG9jayIK LUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12 YWx1ZS5leHAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAkyMDExLTA0LTI0IDExOjA0OjM4LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0 aG9uL3B5LXZhbHVlLmV4cAkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAotQEAg LTMxOSw2ICszMTksMTUgQEAgcHJvYyB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoIHt9IHsKK2RpZmYg LS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktdmFsdWUuZXhwIGIvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LXZhbHVlLmV4cAoraW5kZXggNTlkNzlhZS4uNzViN2Q3MiAxMDA2 NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKK0BAIC0zNjQsNiArMzY0LDE1IEBA IHByb2MgdGVzdF92YWx1ZV9hZnRlcl9kZWF0aCB7fSB7CiAgICAgICJwcmludCB2YWx1ZSdzIHR5 cGUiCiAgfQogIApAQCAtMTMzMzUsMjIgKzE0NDg4LDIzIEBAIEluZGV4OiBnZGItNy4zLjUwLjIw MTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS12YWx1ZS5leHAKICAjIFJlZ3Jlc3Np b24gdGVzdCBmb3IgaW52YWxpZCBzdWJzY3JpcHQgb3BlcmF0aW9ucy4gIFRoZSBidWcgd2FzIHRo YXQKICAjIHRoZSB0eXBlIG9mIHRoZSB2YWx1ZSB3YXMgbm90IGJlaW5nIGNoZWNrZWQgYmVmb3Jl IGFsbG93aW5nIGEKICAjIHN1YnNjcmlwdCBvcGVyYXRpb24gdG8gcHJvY2VlZC4KLUBAIC00NTYs NiArNDY1LDcgQEAgdGVzdF92YWx1ZV9pbl9pbmZlcmlvcgorQEAgLTUwMCw2ICs1MDksNyBAQCB0 ZXN0X3ZhbHVlX2luX2luZmVyaW9yCiAgdGVzdF9pbmZlcmlvcl9mdW5jdGlvbl9jYWxsCiAgdGVz dF9sYXp5X3N0cmluZ3MKICB0ZXN0X3ZhbHVlX2FmdGVyX2RlYXRoCiArdGVzdF9jYXN0X3JlZ3Jl c3Npb24KICAKLSAjIFRoZSBmb2xsb3dpbmcgdGVzdCByZWNvbXBpbGVzIHRoZSBiaW5hcnkgdG8g dGVzdCBlaXRoZXIgQyBvciBDKysKLSAjIHZhbHVlcy4gCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jCi09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dh dGNocG9pbnQtZm9yay1jaGlsZC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAw Ci1AQCAtMCwwICsxLDEyNyBAQAorICMgVGVzdCBlaXRoZXIgQyBvciBDKysgdmFsdWVzLiAKKyB0 ZXN0X3N1YnNjcmlwdF9yZWdyZXNzaW9uICIke2JpbmZpbGV9IiAiYyIKK2RpZmYgLS1naXQgYS9n ZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jIGIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYworbmV3IGZpbGUgbW9k ZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjdhN2UwN2YKKy0tLSAvZGV2L251bGwKKysrKyBiL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLWNoaWxkLmMKK0BAIC0wLDAg KzEsMTI5IEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0 ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDks IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMTIg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQg b2YgR0RCLgogKwpAQCAtMTMzNzgsNiArMTQ1MzIsOCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1jaGlsZC5jCiAr CiArI2luY2x1ZGUgIndhdGNocG9pbnQtZm9yay5oIgogKworKy8qIGBwaWRfdCcgbWF5IG5vdCBi ZSBhdmFpbGFibGUuICAqLworKwogK3N0YXRpYyB2b2xhdGlsZSBpbnQgdXNyMV9nb3Q7CiArCiAr c3RhdGljIHZvaWQKQEAgLTEzMzg5LDcgKzE0NTQ1LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwog K3ZvaWQKICtmb3Jrb2ZmIChpbnQgbnIpCiArewotKyAgcGlkX3QgY2hpbGQsIHNhdmVfcGFyZW50 ID0gZ2V0cGlkICgpOworKyAgaW50IGNoaWxkLCBzYXZlX3BhcmVudCA9IGdldHBpZCAoKTsKICsg IGludCBpOwogKyAgc3RydWN0IHNpZ2FjdGlvbiBhY3QsIG9sZGFjdDsKICsjaWZkZWYgVEhSRUFE CkBAIC0xMzQ3NSwxNCArMTQ2MzEsMTUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2Ri L3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstY2hpbGQuYwogKyAgaSA9IHNp Z2FjdGlvbiAoU0lHVVNSMSwgJm9sZGFjdCwgTlVMTCk7CiArICBhc3NlcnQgKGkgPT0gMCk7CiAr fQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmstbXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAx IDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstbXQuYwkyMDExLTA3LTI5IDIyOjUy OjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVh ZHMvd2F0Y2hwb2ludC1mb3JrLW10LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNo cG9pbnQtZm9yay1tdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uYmZk ZDg5ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRj aHBvaW50LWZvcmstbXQuYwogQEAgLTAsMCArMSwxNzQgQEAKICsvKiBUZXN0IGNhc2UgZm9yIGZv cmdvdHRlbiBody13YXRjaHBvaW50cyBhZnRlciBmb3JrKCktb2ZmIG9mIGEgcHJvY2Vzcy4KICsK LSsgICBDb3B5cmlnaHQgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IEluYy4KKysgICBDb3B5cmlnaHQgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4K ICsKICsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHREIuCiArCkBAIC0xMzY1NCwxNCArMTQ4MTEs MTUgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy93YXRjaHBvaW50LWZvcmstbXQuYwogKyAgbWFya19leGl0ICgpOwogKyAgcmV0dXJuIDA7CiAr fQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93 YXRjaHBvaW50LWZvcmstcGFyZW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCTIwMTEtMDct MjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstcGFyZW50LmMgYi9nZGIvdGVzdHN1aXRlL2dkYi50 aHJlYWRzL3dhdGNocG9pbnQtZm9yay1wYXJlbnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2lu ZGV4IDAwMDAwMDAuLjliYmY0MzgKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCiBAQCAtMCwwICsxLDc0IEBACiAr LyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHctd2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9m ZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJpZ2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBT b2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwpA QCAtMTM3MzMsMTQgKzE0ODkxLDE1IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXBhcmVudC5jCiArICAgICAgbWFy a2VyICgpOwogKyAgICB9CiArfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYwotPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIC9k ZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3Qu YwkyMDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90 ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLXN0LmMgYi9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uMTdjYzA1OAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy93YXRjaHBvaW50LWZvcmstc3QuYwogQEAgLTAsMCArMSw2MSBAQAogKy8q IFRlc3QgY2FzZSBmb3IgZm9yZ290dGVuIGh3LXdhdGNocG9pbnRzIGFmdGVyIGZvcmsoKS1vZmYg b2YgYSBwcm9jZXNzLgogKwotKyAgIENvcHlyaWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyAgIENvcHlyaWdodCAyMDEyIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgogKwogKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdEQi4KICsKQEAg LTEzNzk5LDEzICsxNDk1OCwxNCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay1zdC5jCiArICBtYXJrX2V4aXQgKCk7 CiArICByZXR1cm4gMDsKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5leHAKLT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAky MDExLTA3LTI5IDIyOjUyOjAyLjAwMDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0 c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4 IDAwMDAwMDAuLjJlMDEzNDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2Ri LnRocmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAogQEAgLTAsMCArMSwxNDkgQEAKLSsjIENvcHly aWdodCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwor KyMgQ29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIwogKyMg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKICsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CiArIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgpAQCAtMTM5NTMsMTQgKzE1 MTEzLDE1IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRo cmVhZHMvd2F0Y2hwb2ludC1mb3JrLmV4cAogK30gZWxzZSB7CiArICAgIHVudGVzdGVkICJjaGls ZCIKICt9Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3dhdGNocG9pbnQtZm9yay5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQtZm9yay5oCTIwMTEtMDctMjkgMjI6NTI6 MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFk cy93YXRjaHBvaW50LWZvcmsuaCBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi5jYjEwOWZhCist LS0gL2Rldi9udWxsCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3dhdGNocG9pbnQt Zm9yay5oCiBAQCAtMCwwICsxLDMyIEBACiArLyogVGVzdCBjYXNlIGZvciBmb3Jnb3R0ZW4gaHct d2F0Y2hwb2ludHMgYWZ0ZXIgZm9yaygpLW9mZiBvZiBhIHByb2Nlc3MuCiArCi0rICAgQ29weXJp Z2h0IDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAg Q29weXJpZ2h0IDIwMTIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCiArICAgVGhp cyBmaWxlIGlzIHBhcnQgb2YgR0RCLgogKwpAQCAtMTM5OTAsMTAgKzE1MTUxLDExIEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvd2F0Y2hwb2lu dC1mb3JrLmgKICsKICtleHRlcm4gdm9pZCBtYXJrZXIgKHZvaWQpOwogK2V4dGVybiB2b2lkIGZv cmtvZmYgKGludCBucik7Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRl L2dkYi50cmFjZS9zdGFwLXRyYWNlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwJMTk3MC0w MS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYwkyMDExLTA3LTI5IDIyOjUyOjAyLjAw MDAwMDAwMCArMDIwMAorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAt dHJhY2UuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYworbmV3IGZpbGUg bW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLjI3ZjMxN2UKKy0tLSAvZGV2L251bGwKKysrKyBi L2dkYi90ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuYwogQEAgLTAsMCArMSw3MSBAQAog Ky8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCiArCkBA IC0xNDA2NiwxMCArMTUyMjgsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rl c3RzdWl0ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5jCiArCiArICByZXR1cm4gMDsKICt9Ci1JbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNl LmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIudHJh Y2Uvc3RhcC10cmFjZS5leHAJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2Rp ZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi50cmFjZS9zdGFwLXRyYWNlLmV4cCBiL2dkYi90 ZXN0c3VpdGUvZ2RiLnRyYWNlL3N0YXAtdHJhY2UuZXhwCituZXcgZmlsZSBtb2RlIDEwMDY0NAor aW5kZXggMDAwMDAwMC4uYjBmMWQ3ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2RiL3Rlc3RzdWl0 ZS9nZGIudHJhY2Uvc3RhcC10cmFjZS5leHAKIEBAIC0wLDAgKzEsMTI5IEBACiArIyBDb3B5cmln aHQgMjAxMQogKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCkBAIC0xNDE5MiwxOCAr MTUzNTUsMTggQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9nZGIu dHJhY2Uvc3RhcC10cmFjZS5leHAKICsgICAgcmV0dXJuIDE7CiArfQogKwotK2dkYl9jb2xsZWN0 X3Byb2JlX2FyZyAicHJvYmUgYXJncyB3aXRob3V0IHNlbWFwaG9yZSIgInByb2JlOnVzZXIiICIy MyIKKytnZGJfY29sbGVjdF9wcm9iZV9hcmcgInByb2JlIGFyZ3Mgd2l0aG91dCBzZW1hcGhvcmUi ICItcCB1c2VyIiAiMjMiCiArZ2RiX2V4aXQKICsKICtjb21waWxlX3N0YXBfYmluICItRFVTRV9Q Uk9CRVMiCi0rZ2RiX2NvbGxlY3RfcHJvYmVfYXJnICJwcm9iZSBhcmdzIHdpdGggc2VtYXBob3Jl IiAicHJvYmU6dHdvIiAiNDYiCisrZ2RiX2NvbGxlY3RfcHJvYmVfYXJnICJwcm9iZSBhcmdzIHdp dGggc2VtYXBob3JlIiAiLXAgdHdvIiAiNDYiCiArCiArIyBGaW5pc2hlZCEKICtnZGJfdGVzdCAi dGZpbmQgbm9uZSIgIi4qIiAiIgotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3Rz dWl0ZS9saWIvZ2RiLmV4cAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3Jp Zy9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCTIwMTEtMDctMTUgMTY6MTE6MjIuMDAwMDAwMDAw ICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhw CTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3Rl c3RzdWl0ZS9saWIvZ2RiLmV4cCBiL2dkYi90ZXN0c3VpdGUvbGliL2dkYi5leHAKK2luZGV4IGZj N2UyMjMuLjNlYTVjZTAgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCisr KysgYi9nZGIvdGVzdHN1aXRlL2xpYi9nZGIuZXhwCiBAQCAtMTQxLDYgKzE0MSwxMSBAQCBwcm9j IGdkYl91bmxvYWQge30gewogIAkgICAgc2VuZF9nZGIgInlcbiIKICAJICAgIGV4cF9jb250aW51 ZQpAQCAtMTQyMTYsMTAgKzE1Mzc5LDEwIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi90ZXN0c3VpdGUvbGliL2dkYi5leHAKICAJLXJlICJEaXNjYXJkIHN5bWJvbCB0YWJsZSBmcm9t IC4qeSBvciBuLiokIiB7CiAgCSAgICBzZW5kX2dkYiAieVxuIgogIAkgICAgZXhwX2NvbnRpbnVl Ci1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGVzdHN1aXRlL2xpYi9wYXNjYWwuZXhw Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi90ZXN0c3VpdGUv bGliL3Bhc2NhbC5leHAJMjAxMS0wMS0wMSAxNjozMzo1Mi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAJMjAxMS0wNy0y OSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2xp Yi9wYXNjYWwuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAoraW5kZXggODkxZGEz Ny4uMjM2YzVjYSAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKKysr KyBiL2dkYi90ZXN0c3VpdGUvbGliL3Bhc2NhbC5leHAKIEBAIC0zNyw2ICszNyw5IEBAIHByb2Mg cGFzY2FsX2luaXQge30gewogICAgICBnbG9iYWwgcGFzY2FsX2NvbXBpbGVyX2lzX2ZwYwogICAg ICBnbG9iYWwgZ3BjX2NvbXBpbGVyCkBAIC0xNDI1MSwxMSArMTU0MTQsMTEgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9saWIvcGFzY2FsLmV4cAogICAgICB9CiAg ICAgIHNldCBwYXNjYWxfaW5pdF9kb25lIDEKICB9ICAgCi1JbmRleDogZ2RiLTcuMy41MC4yMDEx MDcyMi9nZGIvdGhyZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9y aWcvZ2RiL3RocmVhZC5jCTIwMTEtMDUtMzAgMjA6MDQ6MzIuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGhyZWFkLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xNDQxLDcgKzE0NDEsOCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZv aWQpCitkaWZmIC0tZ2l0IGEvZ2RiL3RocmVhZC5jIGIvZ2RiL3RocmVhZC5jCitpbmRleCA4Y2Nh ODNkLi41NGFkZjdlIDEwMDY0NAorLS0tIGEvZ2RiL3RocmVhZC5jCisrKysgYi9nZGIvdGhyZWFk LmMKK0BAIC0xNDMyLDcgKzE0MzIsOCBAQCB1cGRhdGVfdGhyZWFkX2xpc3QgKHZvaWQpCiAgICAg bm8gdGhyZWFkIGlzIHNlbGVjdGVkLCBvciBubyB0aHJlYWRzIGV4aXN0LiAgKi8KICAKICBzdGF0 aWMgc3RydWN0IHZhbHVlICoKQEAgLTE0MjY1LDcgKzE1NDI4LDcgQEAgSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL3RocmVhZC5jCiAgewogICAgc3RydWN0IHRocmVhZF9pbmZvICp0cCA9 IGZpbmRfdGhyZWFkX3B0aWQgKGluZmVyaW9yX3B0aWQpOwogIAotQEAgLTE0NTIsNiArMTQ1Mywx NSBAQCB0aHJlYWRfaWRfbWFrZV92YWx1ZSAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMTQ0Myw2 ICsxNDQ0LDE1IEBAIHRocmVhZF9pZF9tYWtlX3ZhbHVlIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aCwgc3RydWN0IGludGVybmFsdmFyICp2YXIpCiAgLyogQ29tbWFuZHMgd2l0aCBhIHByZWZpeCBv ZiBgdGhyZWFkJy4gICovCiAgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQgKnRocmVhZF9jbWRfbGlz dCA9IE5VTEw7CiAgCkBAIC0xNDI4MSwxOCArMTU0NDQsMTggQEAgSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3RocmVhZC5jCiAgdm9pZAogIF9pbml0aWFsaXplX3RocmVhZCAodm9pZCkK ICB7Ci1AQCAtMTQ5Nyw1ICsxNTA3LDUgQEAgU2hvdyBwcmludGluZyBvZiB0aHJlYWQgZXZlbnRz IChzdWNoIGFzCitAQCAtMTQ4OCw1ICsxNDk4LDUgQEAgU2hvdyBwcmludGluZyBvZiB0aHJlYWQg ZXZlbnRzIChzdWNoIGFzIHRocmVhZCBzdGFydCBhbmQgZXhpdCkuIiksIE5VTEwsCiAgICAgICAg ICAgc2hvd19wcmludF90aHJlYWRfZXZlbnRzLAogICAgICAgICAgICZzZXRwcmludGxpc3QsICZz aG93cHJpbnRsaXN0KTsKICAKIC0gIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfdGhy ZWFkIiwgdGhyZWFkX2lkX21ha2VfdmFsdWUpOwogKyAgY3JlYXRlX2ludGVybmFsdmFyX3R5cGVf bGF6eSAoIl90aHJlYWQiLCAmdGhyZWFkX2Z1bmNzLCBOVUxMKTsKICB9Ci1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvdG9wLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEw NzIyLm9yaWcvZ2RiL3RvcC5jCTIwMTEtMDctMjEgMTM6MDM6NDUuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdG9wLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAw MDAwMDAgKzAyMDAKLUBAIC0zNDcsNiArMzQ3LDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQg KHZvaWQpCitkaWZmIC0tZ2l0IGEvZ2RiL3RvcC5jIGIvZ2RiL3RvcC5jCitpbmRleCBjNTkzNzY5 Li5hNGI3YjA5IDEwMDY0NAorLS0tIGEvZ2RiL3RvcC5jCisrKysgYi9nZGIvdG9wLmMKK0BAIC0z NTEsNiArMzUxLDkgQEAgcHJlcGFyZV9leGVjdXRlX2NvbW1hbmQgKHZvaWQpCiAgCiAgICBtYXJr ID0gdmFsdWVfbWFyayAoKTsKICAgIGNsZWFudXAgPSBtYWtlX2NsZWFudXBfdmFsdWVfZnJlZV90 b19tYXJrIChtYXJrKTsKQEAgLTE0MzAyLDM5ICsxNTQ2NSw1NiBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdG9wLmMKICAKICAgIC8qIFdpdGggbXVsdGlwbGUgdGhyZWFkcyBydW5u aW5nIHdoaWxlIHRoZSBvbmUgd2UncmUgZXhhbWluaW5nIGlzCiAgICAgICBzdG9wcGVkLCB0aGUg ZGNhY2hlIGNhbiBnZXQgc3RhbGUgd2l0aG91dCB1cyBiZWluZyBhYmxlIHRvIGRldGVjdAotSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RyYWNlcG9pbnQuYwotPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdHJhY2Vwb2ludC5jCTIwMTEtMDctMDcgMTU6 MzI6NTUuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vw b2ludC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtMTYwOSw2ICsx NjA5LDggQEAgc3RhcnRfdHJhY2luZyAodm9pZCkKK2RpZmYgLS1naXQgYS9nZGIvdHJhY2Vwb2lu dC5jIGIvZ2RiL3RyYWNlcG9pbnQuYworaW5kZXggNzlhNjRhMy4uZGM3NDE2MiAxMDA2NDQKKy0t LSBhL2dkYi90cmFjZXBvaW50LmMKKysrKyBiL2dkYi90cmFjZXBvaW50LmMKK0BAIC02ODQsNyAr Njg0LDcgQEAgdmFsaWRhdGVfYWN0aW9ubGluZSAoY2hhciAqKmxpbmUsIHN0cnVjdCBicmVha3Bv aW50ICpiKQorICAgc3RydWN0IGNsZWFudXAgKm9sZF9jaGFpbiA9IE5VTEw7CisgICBjaGFyICpw LCAqdG1wX3A7CisgICBzdHJ1Y3QgYnBfbG9jYXRpb24gKmxvYzsKKy0gIHN0cnVjdCBhZ2VudF9l eHByICphZXhwcjsKKysgIHN0cnVjdCBhZ2VudF9leHByICphZXhwciA9IE5VTEw7CisgICBzdHJ1 Y3QgdHJhY2Vwb2ludCAqdCA9IChzdHJ1Y3QgdHJhY2Vwb2ludCAqKSBiOworIAorICAgLyogSWYg RU9GIGlzIHR5cGVkLCAqbGluZSBpcyBOVUxMLiAgKi8KK0BAIC0xMzUzLDcgKzEzNTMsNyBAQCBl bmNvZGVfYWN0aW9uc18xIChzdHJ1Y3QgY29tbWFuZF9saW5lICphY3Rpb24sCisgICBpbnQgaTsK KyAgIHN0cnVjdCB2YWx1ZSAqdGVtcHZhbDsKKyAgIHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpj bWQ7CistICBzdHJ1Y3QgYWdlbnRfZXhwciAqYWV4cHI7CisrICBzdHJ1Y3QgYWdlbnRfZXhwciAq YWV4cHIgPSBOVUxMOwogIAotICAgZm9yIChpeCA9IDA7IFZFQ19pdGVyYXRlIChicmVha3BvaW50 X3AsIHRwX3ZlYywgaXgsIHQpOyBpeCsrKQorICAgZm9yICg7IGFjdGlvbjsgYWN0aW9uID0gYWN0 aW9uLT5uZXh0KQogICAgICB7CitAQCAtMTcxNyw2ICsxNzE3LDcgQEAgc3RhcnRfdHJhY2luZyAo Y2hhciAqbm90ZXMpCisgICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUgKGJyZWFrcG9pbnRfcCwg dHBfdmVjLCBpeCwgYik7IGl4KyspCisgICAgIHsKKyAgICAgICBzdHJ1Y3QgdHJhY2Vwb2ludCAq dCA9IChzdHJ1Y3QgdHJhY2Vwb2ludCAqKSBiOwogKyAgICAgIHN0cnVjdCBicF9sb2NhdGlvbiAq bG9jOworIAorICAgICAgIGlmIChiLT5lbmFibGVfc3RhdGUgPT0gYnBfZW5hYmxlZCkKKyAJYW55 X2VuYWJsZWQgPSAxOworQEAgLTE3NzksNiArMTc4MCw5IEBAIHN0YXJ0X3RyYWNpbmcgKGNoYXIg Km5vdGVzKQorIAl9CisgCisgICAgICAgdC0+bnVtYmVyX29uX3RhcmdldCA9IGItPm51bWJlcjsK ICsKLSAgICAgICBpZiAoKHQtPnR5cGUgPT0gYnBfZmFzdF90cmFjZXBvaW50Ci0gCSAgID8gIW1h eV9pbnNlcnRfZmFzdF90cmFjZXBvaW50cwotIAkgICA6ICFtYXlfaW5zZXJ0X3RyYWNlcG9pbnRz KSkKLUBAIC0xNjE3LDYgKzE2MTksOSBAQCBzdGFydF90cmFjaW5nICh2b2lkKQotICAgICAgIHQt Pm51bWJlcl9vbl90YXJnZXQgPSAwOwotICAgICAgIHRhcmdldF9kb3dubG9hZF90cmFjZXBvaW50 ICh0KTsKLSAgICAgICB0LT5udW1iZXJfb25fdGFyZ2V0ID0gdC0+bnVtYmVyOwotKwotKyAgICAg IGZvciAobG9jID0gdC0+bG9jOyBsb2M7IGxvYyA9IGxvYy0+bmV4dCkKKysgICAgICBmb3IgKGxv YyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQpCiArCW1vZGlmeV9zZW1hcGhvcmUgKGxv YywgMSk7CiAgICAgIH0KICAgIFZFQ19mcmVlIChicmVha3BvaW50X3AsIHRwX3ZlYyk7CiAgCi1A QCAtMTY3OCw3ICsxNjgzLDI4IEBAIHRyYWNlX3N0b3BfY29tbWFuZCAoY2hhciAqYXJncywgaW50 IGZyb20KLSB2b2lkCi0gc3RvcF90cmFjaW5nICh2b2lkKQorQEAgLTE4NTEsOSArMTg1NSwyOCBA QCB2b2lkCisgc3RvcF90cmFjaW5nIChjaGFyICpub3RlKQogIHsKKyAgIGludCByZXQ7CiArICBW RUMoYnJlYWtwb2ludF9wKSAqdHBfdmVjID0gTlVMTDsKICsgIGludCBpeDsKICsgIHN0cnVjdCBi cmVha3BvaW50ICp0OwotKworIAogICAgdGFyZ2V0X3RyYWNlX3N0b3AgKCk7Ci0rCisgCiArICB0 cF92ZWMgPSBhbGxfdHJhY2Vwb2ludHMgKCk7CiArICBmb3IgKGl4ID0gMDsgVkVDX2l0ZXJhdGUg KGJyZWFrcG9pbnRfcCwgdHBfdmVjLCBpeCwgdCk7IGl4KyspCiArICAgIHsKQEAgLTE0MzUxLDEw ICsxNTUzMSwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5j CiArCiArICBWRUNfZnJlZSAoYnJlYWtwb2ludF9wLCB0cF92ZWMpOwogKwotICAgLyogU2hvdWxk IGNoYW5nZSBpbiByZXNwb25zZSB0byByZXBseT8gICovCi0gICBjdXJyZW50X3RyYWNlX3N0YXR1 cyAoKS0+cnVubmluZyA9IDA7Ci0gfQotQEAgLTQ1MjEsNyArNDU0Nyw4IEBAIGluZm9fc3RhdGlj X3RyYWNlcG9pbnRfbWFya2Vyc19jb21tYW5kICgKKyAgIGlmICghbm90ZSkKKyAgICAgbm90ZSA9 IHRyYWNlX3N0b3Bfbm90ZXM7CisgICByZXQgPSB0YXJnZXRfc2V0X3RyYWNlX25vdGVzIChOVUxM LCBOVUxMLCBub3RlKTsKK0BAIC00OTI1LDcgKzQ5NDgsOCBAQCBpbmZvX3N0YXRpY190cmFjZXBv aW50X21hcmtlcnNfY29tbWFuZCAoY2hhciAqYXJnLCBpbnQgZnJvbV90dHkpCiAgICAgYXZhaWxh YmxlLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKQEAgLTE0MzY0LDcgKzE1NTQ0LDcg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RyYWNlcG9pbnQuYwogIHsKICAgIExP TkdFU1Qgc2l6ZTsKICAgIGdkYl9ieXRlICpidWY7Ci1AQCAtNDcwMCw2ICs0NzI3LDE1IEBAIHRy YWNlZnJhbWVfYXZhaWxhYmxlX21lbW9yeSAoVkVDKG1lbV9yYW4KK0BAIC01MTA0LDYgKzUxMjgs MTUgQEAgdHJhY2VmcmFtZV9hdmFpbGFibGVfbWVtb3J5IChWRUMobWVtX3JhbmdlX3MpICoqcmVz dWx0LAogICAgcmV0dXJuIDA7CiAgfQogIApAQCAtMTQzODAsNyArMTU1NjAsNyBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHJhY2Vwb2ludC5jCiAgLyogbW9kdWxlIGluaXRpYWxp emF0aW9uICovCiAgdm9pZAogIF9pbml0aWFsaXplX3RyYWNlcG9pbnQgKHZvaWQpCi1AQCAtNDcx MCw3ICs0NzQ2LDcgQEAgX2luaXRpYWxpemVfdHJhY2Vwb2ludCAodm9pZCkKK0BAIC01MTE0LDcg KzUxNDcsNyBAQCBfaW5pdGlhbGl6ZV90cmFjZXBvaW50ICh2b2lkKQogICAgICAgdmFsdWUgd2l0 aCBhIHZvaWQgdHlwZWQgdmFsdWUsIGFuZCB3aGVuIHdlIGdldCBoZXJlLCBnZGJhcmNoCiAgICAg ICBpc24ndCBpbml0aWFsaXplZCB5ZXQuICBBdCB0aGlzIHBvaW50LCB3ZSdyZSBxdWl0ZSBzdXJl IHRoZXJlCiAgICAgICBpc24ndCBhbm90aGVyIGNvbnZlbmllbmNlIHZhcmlhYmxlIG9mIHRoZSBz YW1lIG5hbWUuICAqLwpAQCAtMTQzODksMTAgKzE1NTY5LDEwIEBAIEluZGV4OiBnZGItNy4zLjUw LjIwMTEwNzIyL2dkYi90cmFjZXBvaW50LmMKICAKICAgIHRyYWNlZnJhbWVfbnVtYmVyID0gLTE7 CiAgICB0cmFjZXBvaW50X251bWJlciA9IC0xOwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3R5cGVwcmludC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmln L2dkYi90eXBlcHJpbnQuYwkyMDExLTAxLTExIDIyOjUzOjI1LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3R5cGVwcmludC5jCTIwMTEtMDctMjkgMjI6NTI6MDIu MDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3R5cGVwcmludC5jIGIvZ2RiL3R5cGVw cmludC5jCitpbmRleCBjZjQxNThkLi5mMTU3OTYyIDEwMDY0NAorLS0tIGEvZ2RiL3R5cGVwcmlu dC5jCisrKysgYi9nZGIvdHlwZXByaW50LmMKIEBAIC0zNiw2ICszNiw3IEBACiAgI2luY2x1ZGUg ImdkYl9zdHJpbmcuaCIKICAjaW5jbHVkZSAiZXhjZXB0aW9ucy5oIgpAQCAtMTQ0MDUsNyArMTU1 ODUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdHlwZXByaW50LmMKICB0eXBl X3ByaW50IChzdHJ1Y3QgdHlwZSAqdHlwZSwgY2hhciAqdmFyc3RyaW5nLCBzdHJ1Y3QgdWlfZmls ZSAqc3RyZWFtLAogIAkgICAgaW50IHNob3cpCiAgewotKyAgaWYgKHNob3cgPj0gMCkKKysgIGlm IChzaG93ID49IDAgJiYgY3VycmVudF9sYW5ndWFnZS0+bGFfbGFuZ3VhZ2UgIT0gbGFuZ3VhZ2Vf YWRhKQogKyAgICB0eXBlID0gY2hlY2tfdHlwZWRlZiAodHlwZSk7CiArCiAgICBMQV9QUklOVF9U WVBFICh0eXBlLCB2YXJzdHJpbmcsIHN0cmVhbSwgc2hvdywgMCk7CkBAIC0xNDQ0NiwxMSArMTU2 MjYsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3R5cGVwcmludC5jCiAgfQog IAogIHN0YXRpYyB2b2lkCi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdXRpbHMuYwot PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9nZGIvdXRpbHMuYwkyMDEx LTA3LTIyIDAxOjQ2OjA5LjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3V0aWxzLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xODc0 LDYgKzE4NzQsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3JlXwor ZGlmZiAtLWdpdCBhL2dkYi91dGlscy5jIGIvZ2RiL3V0aWxzLmMKK2luZGV4IGQ1NWU2ZjEuLmJl N2M3MmIgMTAwNjQ0CistLS0gYS9nZGIvdXRpbHMuYworKysrIGIvZ2RiL3V0aWxzLmMKK0BAIC0x OTA2LDYgKzE5MDYsMzYgQEAgc2V0X2JhdGNoX2ZsYWdfYW5kX21ha2VfY2xlYW51cF9yZXN0b3Jl X3BhZ2VfaW5mbyAodm9pZCkKICAgIHJldHVybiBiYWNrX3RvOwogIH0KICAKQEAgLTE0NDg3LDEx ICsxNTY2NywxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdXRpbHMuYwogIC8q IFNldCB0aGUgc2NyZWVuIHNpemUgYmFzZWQgb24gTElORVNfUEVSX1BBR0UgYW5kIENIQVJTX1BF Ul9MSU5FLiAgKi8KICAKICBzdGF0aWMgdm9pZAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3ZhbGFyaXRoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcv Z2RiL3ZhbGFyaXRoLmMJMjAxMS0wMi0xOCAyMDoxMDo0Ni4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxhcml0aC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAw MDAwMDAwICswMjAwCi1AQCAtMTk4LDcgKzE5OCwxMCBAQCB2YWx1ZV9zdWJzY3JpcHRlZF9ydmFs dWUgKHN0cnVjdCB2YWx1ZSAqCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbGFyaXRoLmMgYi9nZGIvdmFs YXJpdGguYworaW5kZXggMzI1MGNjNy4uMjJkYTA2NyAxMDA2NDQKKy0tLSBhL2dkYi92YWxhcml0 aC5jCisrKysgYi9nZGIvdmFsYXJpdGguYworQEAgLTE5OCw3ICsxOTgsMTAgQEAgdmFsdWVfc3Vi c2NyaXB0ZWRfcnZhbHVlIChzdHJ1Y3QgdmFsdWUgKmFycmF5LCBMT05HRVNUIGluZGV4LCBpbnQg bG93ZXJib3VuZCkKICAgIHN0cnVjdCB0eXBlICphcnJheV90eXBlID0gY2hlY2tfdHlwZWRlZiAo dmFsdWVfdHlwZSAoYXJyYXkpKTsKICAgIHN0cnVjdCB0eXBlICplbHRfdHlwZSA9IGNoZWNrX3R5 cGVkZWYgKFRZUEVfVEFSR0VUX1RZUEUgKGFycmF5X3R5cGUpKTsKICAgIHVuc2lnbmVkIGludCBl bHRfc2l6ZSA9IFRZUEVfTEVOR1RIIChlbHRfdHlwZSk7CkBAIC0xNDUxNCwxMCArMTU2OTQsMTAg QEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbGFyaXRoLmMKICAgIHJldHVybiBi aW5vcF90eXBlc191c2VyX2RlZmluZWRfcCAob3AsIHZhbHVlX3R5cGUgKGFyZzEpLCB2YWx1ZV90 eXBlIChhcmcyKSk7CiAgfQogIAotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbG9w cy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi92YWxvcHMu YwkyMDExLTA3LTE0IDE3OjAwOjIwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3ZhbG9wcy5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitk aWZmIC0tZ2l0IGEvZ2RiL3ZhbG9wcy5jIGIvZ2RiL3ZhbG9wcy5jCitpbmRleCAyOWQxZmJkLi40 NGNkZDQ5IDEwMDY0NAorLS0tIGEvZ2RiL3ZhbG9wcy5jCisrKysgYi9nZGIvdmFsb3BzLmMKIEBA IC00Nyw2ICs0Nyw3IEBACiAgI2luY2x1ZGUgIm9iamZpbGVzLmgiCiAgI2luY2x1ZGUgInN5bXRh Yi5oIgpAQCAtMTQ1MjYsNyArMTU3MDYsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9n ZGIvdmFsb3BzLmMKICAKICBleHRlcm4gaW50IG92ZXJsb2FkX2RlYnVnOwogIC8qIExvY2FsIGZ1 bmN0aW9ucy4gICovCi1AQCAtOTE1LDYgKzkxNiw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVjdCB0eXBl ICp0eXBlLCBlbnVtIGx2YWxfCitAQCAtOTE3LDYgKzkxOCw2NSBAQCB2YWx1ZV9vbmUgKHN0cnVj dCB0eXBlICp0eXBlKQogICAgcmV0dXJuIHZhbDsKICB9CiAgCkBAIC0xNDU5Miw3ICsxNTc3Miw3 IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxvcHMuYwogIC8qIEhlbHBlciBm dW5jdGlvbiBmb3IgdmFsdWVfYXQsIHZhbHVlX2F0X2xhenksIGFuZCB2YWx1ZV9hdF9sYXp5X3N0 YWNrLiAgKi8KICAKICBzdGF0aWMgc3RydWN0IHZhbHVlICoKLUBAIC0xMDExLDEyICsxMDcxLDIw IEBAIHZhbHVlX2ZldGNoX2xhenkgKHN0cnVjdCB2YWx1ZSAqdmFsKQorQEAgLTEwMTMsMTIgKzEw NzMsMjAgQEAgdmFsdWVfZmV0Y2hfbGF6eSAoc3RydWN0IHZhbHVlICp2YWwpCiAgICAgIH0KICAg IGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9tZW1vcnkpCiAgICAgIHsKQEAgLTE0 NjE4LDcgKzE1Nzk4LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbG9wcy5j CiAgICAgIH0KICAgIGVsc2UgaWYgKFZBTFVFX0xWQUwgKHZhbCkgPT0gbHZhbF9yZWdpc3RlcikK ICAgICAgewotQEAgLTE1MjgsNyArMTU5NiwxOCBAQCBhZGRyZXNzX29mX3ZhcmlhYmxlIChzdHJ1 Y3Qgc3ltYm9sICp2YXIsCitAQCAtMTUzMCw3ICsxNTk4LDE4IEBAIGFkZHJlc3Nfb2ZfdmFyaWFi bGUgKHN0cnVjdCBzeW1ib2wgKnZhciwgc3RydWN0IGJsb2NrICpiKQogICAgaWYgKChWQUxVRV9M VkFMICh2YWwpID09IGx2YWxfbWVtb3J5ICYmIHZhbHVlX2xhenkgKHZhbCkpCiAgICAgICAgfHwg VFlQRV9DT0RFICh0eXBlKSA9PSBUWVBFX0NPREVfRlVOQykKICAgICAgewpAQCAtMTQ2MzgsNyAr MTU4MTgsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsb3BzLmMKICAKICAg ICAgICByZXR1cm4gdmFsdWVfZnJvbV9wb2ludGVyIChsb29rdXBfcG9pbnRlcl90eXBlICh0eXBl KSwgYWRkcik7CiAgICAgIH0KLUBAIC0xNjM1LDYgKzE3MTQsNyBAQCBzdHJ1Y3QgdmFsdWUgKgor QEAgLTE2MzcsNiArMTcxNiw3IEBAIHN0cnVjdCB2YWx1ZSAqCiAgdmFsdWVfY29lcmNlX2FycmF5 IChzdHJ1Y3QgdmFsdWUgKmFyZzEpCiAgewogICAgc3RydWN0IHR5cGUgKnR5cGUgPSBjaGVja190 eXBlZGVmICh2YWx1ZV90eXBlIChhcmcxKSk7CkBAIC0xNDY0Niw3ICsxNTgyNiw3IEBAIEluZGV4 OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxvcHMuYwogIAogICAgLyogSWYgdGhlIHVzZXIg dHJpZXMgdG8gZG8gc29tZXRoaW5nIHJlcXVpcmluZyBhIHBvaW50ZXIgd2l0aCBhbgogICAgICAg YXJyYXkgdGhhdCBoYXMgbm90IHlldCBiZWVuIHB1c2hlZCB0byB0aGUgdGFyZ2V0LCB0aGVuIHRo aXMgd291bGQKLUBAIC0xNjQ0LDggKzE3MjQsMTIgQEAgdmFsdWVfY29lcmNlX2FycmF5IChzdHJ1 Y3QgdmFsdWUgKmFyZzEpCitAQCAtMTY0Niw4ICsxNzI2LDEyIEBAIHZhbHVlX2NvZXJjZV9hcnJh eSAoc3RydWN0IHZhbHVlICphcmcxKQogICAgaWYgKFZBTFVFX0xWQUwgKGFyZzEpICE9IGx2YWxf bWVtb3J5KQogICAgICBlcnJvciAoXygiQXR0ZW1wdCB0byB0YWtlIGFkZHJlc3Mgb2YgdmFsdWUg bm90IGxvY2F0ZWQgaW4gbWVtb3J5LiIpKTsKICAKQEAgLTE0NjYwLDcgKzE1ODQwLDcgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbG9wcy5jCiAgfQogIAogIC8qIEdpdmVuIGEg dmFsdWUgd2hpY2ggaXMgYSBmdW5jdGlvbiwgcmV0dXJuIGEgdmFsdWUgd2hpY2ggaXMgYSBwb2lu dGVyCi1AQCAtMzY3Niw2ICszNzYwLDggQEAgdmFsdWVfc2xpY2UgKHN0cnVjdCB2YWx1ZSAqYXJy YXksIGludCBsbworQEAgLTM2OTYsNiArMzc4MCw4IEBAIHZhbHVlX3NsaWNlIChzdHJ1Y3QgdmFs dWUgKmFycmF5LCBpbnQgbG93Ym91bmQsIGludCBsZW5ndGgpCiAgCQkJCQlUWVBFX1RBUkdFVF9U WVBFIChyYW5nZV90eXBlKSwKICAJCQkJCWxvd2JvdW5kLCAKICAJCQkJCWxvd2JvdW5kICsgbGVu Z3RoIC0gMSk7CkBAIC0xNDY2OSwxMCArMTU4NDksMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAx MTA3MjIvZ2RiL3ZhbG9wcy5jCiAgICBpZiAoVFlQRV9DT0RFIChhcnJheV90eXBlKSA9PSBUWVBF X0NPREVfQklUU1RSSU5HKQogICAgICB7CiAgICAgICAgaW50IGk7Ci1JbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdmFscHJpbnQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAx MTA3MjIub3JpZy9nZGIvdmFscHJpbnQuYwkyMDExLTA2LTI5IDE3OjMyOjM5LjAwMDAwMDAwMCAr MDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHByaW50LmMJMjAxMS0wNy0yOSAy Mjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKK2RpZmYgLS1naXQgYS9nZGIvdmFscHJpbnQuYyBiL2dk Yi92YWxwcmludC5jCitpbmRleCBiNGFjNGVjLi4zNzc5MDVlIDEwMDY0NAorLS0tIGEvZ2RiL3Zh bHByaW50LmMKKysrKyBiL2dkYi92YWxwcmludC5jCiBAQCAtMzksNiArMzksNyBAQAogICNpbmNs dWRlICJnZGJfb2JzdGFjay5oIgogICNpbmNsdWRlICJjaGFyc2V0LmgiCkBAIC0xNDY4OSw3ICsx NTg2OSw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWxwcmludC5jCiAgICAg IGNhc2UgVFlQRV9DT0RFX0JJVFNUUklORzoKICAgICAgICByZXR1cm4gMDsKICAgICAgZGVmYXVs dDoKLUBAIC0xMTk2LDYgKzExOTYsNyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVj dCB0eXBlICp0CitAQCAtMTIwMCw2ICsxMjAwLDcgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRz IChzdHJ1Y3QgdHlwZSAqdHlwZSwKICB7CiAgICB1bnNpZ25lZCBpbnQgdGhpbmdzX3ByaW50ZWQg PSAwOwogICAgdW5zaWduZWQgbGVuOwpAQCAtMTQ2OTcsNyArMTU4NzcsNyBAQCBJbmRleDogZ2Ri LTcuMy41MC4yMDExMDcyMi9nZGIvdmFscHJpbnQuYwogICAgc3RydWN0IHR5cGUgKmVsdHR5cGUs ICppbmRleF90eXBlOwogICAgdW5zaWduZWQgZWx0bGVuOwogICAgLyogUG9zaXRpb24gb2YgdGhl IGFycmF5IGVsZW1lbnQgd2UgYXJlIGV4YW1pbmluZyB0byBzZWUKLUBAIC0xMjA0LDkgKzEyMDUs MzMgQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3QgdHlwZSAqdAorQEAgLTEyMDgs OSArMTIwOSwzMyBAQCB2YWxfcHJpbnRfYXJyYXlfZWxlbWVudHMgKHN0cnVjdCB0eXBlICp0eXBl LAogICAgLyogTnVtYmVyIG9mIHJlcGV0aXRpb25zIHdlIGhhdmUgZGV0ZWN0ZWQgc28gZmFyLiAg Ki8KICAgIHVuc2lnbmVkIGludCByZXBzOwogICAgTE9OR0VTVCBsb3dfYm91bmQsIGhpZ2hfYm91 bmQ7CkBAIC0xNDczMyw3ICsxNTkxMyw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dk Yi92YWxwcmludC5jCiAgICBpbmRleF90eXBlID0gVFlQRV9JTkRFWF9UWVBFICh0eXBlKTsKICAK ICAgIGlmIChnZXRfYXJyYXlfYm91bmRzICh0eXBlLCAmbG93X2JvdW5kLCAmaGlnaF9ib3VuZCkp Ci1AQCAtMTI5Myw2ICsxMzE4LDggQEAgdmFsX3ByaW50X2FycmF5X2VsZW1lbnRzIChzdHJ1Y3Qg dHlwZSAqdAorQEAgLTEyOTcsNiArMTMyMiw4IEBAIHZhbF9wcmludF9hcnJheV9lbGVtZW50cyAo c3RydWN0IHR5cGUgKnR5cGUsCiAgICAgIHsKICAgICAgICBmcHJpbnRmX2ZpbHRlcmVkIChzdHJl YW0sICIuLi4iKTsKICAgICAgfQpAQCAtMTQ3NDIsMTAgKzE1OTIyLDEwIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi92YWxwcmludC5jCiAgfQogIAogIC8qIFJlYWQgTEVOIGJ5dGVz IG9mIHRhcmdldCBtZW1vcnkgYXQgYWRkcmVzcyBNRU1BRERSLCBwbGFjaW5nIHRoZQotSW5kZXg6 IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmMKLT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4z LjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmMJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCTIwMTEtMDctMjkg MjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmMgYi9nZGIv dmFsdWUuYworaW5kZXggZDAyYmMyNy4uYzgzZTFhOCAxMDA2NDQKKy0tLSBhL2dkYi92YWx1ZS5j CisrKysgYi9nZGIvdmFsdWUuYwogQEAgLTQzLDYgKzQzLDcgQEAKICAjaW5jbHVkZSAicHl0aG9u L3B5dGhvbi5oIgogICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMTQ3NTQsNyArMTU5MzQsNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogIAogIC8qIFByb3RvdHlwZXMg Zm9yIGV4cG9ydGVkIGZ1bmN0aW9ucy4gICovCiAgCi1AQCAtMTM1NCwxMiArMTM1NSwxNSBAQCB2 b2lkCitAQCAtMTM4NywxMiArMTM4OCwxNSBAQCB2b2lkCiAgc2V0X3ZhbHVlX2NvbXBvbmVudF9s b2NhdGlvbiAoc3RydWN0IHZhbHVlICpjb21wb25lbnQsCiAgCQkJICAgICAgY29uc3Qgc3RydWN0 IHZhbHVlICp3aG9sZSkKICB7CkBAIC0xNDc3MCw3ICsxNTk1MCw3IEBAIEluZGV4OiBnZGItNy4z LjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCiAgICBpZiAod2hvbGUtPmx2YWwgPT0gbHZhbF9jb21w dXRlZCkKICAgICAgewogICAgICAgIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzICpmdW5jcyA9IHdo b2xlLT5sb2NhdGlvbi5jb21wdXRlZC5mdW5jczsKLUBAIC0xMzY3LDYgKzEzNzEsMTIgQEAgc2V0 X3ZhbHVlX2NvbXBvbmVudF9sb2NhdGlvbiAoc3RydWN0IHZhbAorQEAgLTE0MDAsNiArMTQwNCwx MiBAQCBzZXRfdmFsdWVfY29tcG9uZW50X2xvY2F0aW9uIChzdHJ1Y3QgdmFsdWUgKmNvbXBvbmVu dCwKICAgICAgICBpZiAoZnVuY3MtPmNvcHlfY2xvc3VyZSkKICAgICAgICAgIGNvbXBvbmVudC0+ bG9jYXRpb24uY29tcHV0ZWQuY2xvc3VyZSA9IGZ1bmNzLT5jb3B5X2Nsb3N1cmUgKHdob2xlKTsK ICAgICAgfQpAQCAtMTQ3ODMsNyArMTU5NjMsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcy Mi9nZGIvdmFsdWUuYwogIH0KICAKICAMCi1AQCAtMTUwMCw2ICsxNTEwLDMxIEBAIHNob3dfdmFs dWVzIChjaGFyICpudW1fZXhwLCBpbnQgZnJvbV90dHkKK0BAIC0xNTMzLDYgKzE1NDMsMzEgQEAg c2hvd192YWx1ZXMgKGNoYXIgKm51bV9leHAsIGludCBmcm9tX3R0eSkKICAgICAgICBudW1fZXhw WzFdID0gJ1wwJzsKICAgICAgfQogIH0KQEAgLTE0ODE1LDcgKzE1OTk1LDcgQEAgSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmMKICAMCiAgLyogSW50ZXJuYWwgdmFyaWFibGVz LiAgVGhlc2UgYXJlIHZhcmlhYmxlcyB3aXRoaW4gdGhlIGRlYnVnZ2VyCiAgICAgdGhhdCBob2xk IHZhbHVlcyBhc3NpZ25lZCBieSBkZWJ1Z2dlciBjb21tYW5kcy4KLUBAIC0xNTQ1LDcgKzE1ODAs MTQgQEAgc3RydWN0IGludGVybmFsdmFyCitAQCAtMTU3OCw3ICsxNjEzLDE0IEBAIHN0cnVjdCBp bnRlcm5hbHZhcgogICAgICAgIHN0cnVjdCB2YWx1ZSAqdmFsdWU7CiAgCiAgICAgICAgLyogVGhl IGNhbGwtYmFjayByb3V0aW5lIHVzZWQgd2l0aCBJTlRFUk5BTFZBUl9NQUtFX1ZBTFVFLiAgKi8K QEAgLTE0ODMxLDcgKzE2MDExLDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Zh bHVlLmMKICAKICAgICAgICAvKiBUaGUgaW50ZXJuYWwgZnVuY3Rpb24gdXNlZCB3aXRoIElOVEVS TkFMVkFSX0ZVTkNUSU9OLiAgKi8KICAgICAgICBzdHJ1Y3QKLUBAIC0xNjQ0LDE4ICsxNjg2LDM5 IEBAIGNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKK0BAIC0xNjc3LDE4ICsx NzE5LDM5IEBAIGNyZWF0ZV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSkKICAvKiBDcmVh dGUgYW4gaW50ZXJuYWwgdmFyaWFibGUgd2l0aCBuYW1lIE5BTUUgYW5kIHJlZ2lzdGVyIEZVTiBh cyB0aGUKICAgICBmdW5jdGlvbiB0aGF0IHZhbHVlX29mX2ludGVybmFsdmFyIHVzZXMgdG8gY3Jl YXRlIGEgdmFsdWUgd2hlbmV2ZXIKICAgICB0aGlzIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQuICBO QU1FIHNob3VsZCBub3Qgbm9ybWFsbHkgaW5jbHVkZSBhCkBAIC0xNDg3NCw3ICsxNjA1NCw3IEBA IEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5jCiAgLyogTG9vayB1cCBhbiBp bnRlcm5hbCB2YXJpYWJsZSB3aXRoIG5hbWUgTkFNRS4gIE5BTUUgc2hvdWxkIG5vdAogICAgIG5v cm1hbGx5IGluY2x1ZGUgYSBkb2xsYXIgc2lnbi4KICAKLUBAIC0xNzI4LDcgKzE3OTEsOCBAQCB2 YWx1ZV9vZl9pbnRlcm5hbHZhciAoc3RydWN0IGdkYmFyY2ggKmdkCitAQCAtMTc2MSw3ICsxODI0 LDggQEAgdmFsdWVfb2ZfaW50ZXJuYWx2YXIgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBzdHJ1 Y3QgaW50ZXJuYWx2YXIgKnZhcikKICAgICAgICBicmVhazsKICAKICAgICAgY2FzZSBJTlRFUk5B TFZBUl9NQUtFX1ZBTFVFOgpAQCAtMTQ4ODQsNyArMTYwNjQsNyBAQCBJbmRleDogZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogICAgICAgIGJyZWFrOwogIAogICAgICBkZWZhdWx0Ogot QEAgLTE5MjQsNiArMTk4OCwxMSBAQCBjbGVhcl9pbnRlcm5hbHZhciAoc3RydWN0IGludGVybmFs dmFyICp2CitAQCAtMTk1Nyw2ICsyMDIxLDExIEBAIGNsZWFyX2ludGVybmFsdmFyIChzdHJ1Y3Qg aW50ZXJuYWx2YXIgKnZhcikKICAgICAgICB4ZnJlZSAodmFyLT51LnN0cmluZyk7CiAgICAgICAg YnJlYWs7CiAgCkBAIC0xNDg5Niw3ICsxNjA3Niw3IEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEw NzIyL2dkYi92YWx1ZS5jCiAgICAgIGRlZmF1bHQ6CiAgICAgICAgYnJlYWs7CiAgICAgIH0KLUBA IC0xOTc4LDYgKzIwNDcsMzggQEAgY2FsbF9pbnRlcm5hbF9mdW5jdGlvbiAoc3RydWN0IGdkYmFy Y2ggKgorQEAgLTIwMTEsNiArMjA4MCwzOCBAQCBjYWxsX2ludGVybmFsX2Z1bmN0aW9uIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKICAgIHJldHVybiAoKmlmbi0+aGFuZGxlcikgKGdkYmFyY2gs IGxhbmd1YWdlLCBpZm4tPmNvb2tpZSwgYXJnYywgYXJndik7CiAgfQogIApAQCAtMTQ5MzUsNyAr MTYxMTUsNyBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogIC8qIFRo ZSAnZnVuY3Rpb24nIGNvbW1hbmQuICBUaGlzIGRvZXMgbm90aGluZyAtLSBpdCBpcyBqdXN0IGEK ICAgICBwbGFjZWhvbGRlciB0byBsZXQgImhlbHAgZnVuY3Rpb24gTkFNRSIgd29yay4gIFRoaXMg aXMgYWxzbyB1c2VkIGFzCiAgICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzdWItY29tbWFu ZCB0aGF0IGlzIGNyZWF0ZWQgd2hlbgotQEAgLTIwMjUsMTEgKzIxMjYsMTAgQEAgcHJlc2VydmVf b25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLAorQEAgLTIwNTgsMTEgKzIxNTksMTAgQEAg cHJlc2VydmVfb25lX3ZhbHVlIChzdHJ1Y3QgdmFsdWUgKnZhbHVlLCBzdHJ1Y3Qgb2JqZmlsZSAq b2JqZmlsZSwKICAJCSAgICBodGFiX3QgY29waWVkX3R5cGVzKQogIHsKICAgIGlmIChUWVBFX09C SkZJTEUgKHZhbHVlLT50eXBlKSA9PSBvYmpmaWxlKQpAQCAtMTQ5NDksNyArMTYxMjksNyBAQCBJ bmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogIAkJCQkJCSBjb3BpZWRfdHlw ZXMpOwogIH0KICAKLUBAIC0yMDQ0LDcgKzIxNDQsNyBAQCBwcmVzZXJ2ZV9vbmVfaW50ZXJuYWx2 YXIgKHN0cnVjdCBpbnRlcm5hCitAQCAtMjA3Nyw3ICsyMTc3LDcgQEAgcHJlc2VydmVfb25lX2lu dGVybmFsdmFyIChzdHJ1Y3QgaW50ZXJuYWx2YXIgKnZhciwgc3RydWN0IG9iamZpbGUgKm9iamZp bGUsCiAgICAgIGNhc2UgSU5URVJOQUxWQVJfSU5URUdFUjoKICAgICAgICBpZiAodmFyLT51Lmlu dGVnZXIudHlwZSAmJiBUWVBFX09CSkZJTEUgKHZhci0+dS5pbnRlZ2VyLnR5cGUpID09IG9iamZp bGUpCiAgCXZhci0+dS5pbnRlZ2VyLnR5cGUKQEAgLTE0OTU4LDM5ICsxNjEzOCwxNCBAQCBJbmRl eDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuYwogICAgICAgIGJyZWFrOwogIAogICAg ICBjYXNlIElOVEVSTkFMVkFSX1ZBTFVFOgotQEAgLTIwOTUsMTQgKzIxOTUsMjIgQEAgc2hvd19j b252ZW5pZW5jZSAoY2hhciAqaWdub3JlLCBpbnQgZnJvbQotICAgZ2V0X3VzZXJfcHJpbnRfb3B0 aW9ucyAoJm9wdHMpOwotICAgZm9yICh2YXIgPSBpbnRlcm5hbHZhcnM7IHZhcjsgdmFyID0gdmFy LT5uZXh0KQotICAgICB7Ci0rICAgICAgdm9sYXRpbGUgc3RydWN0IGdkYl9leGNlcHRpb24gZTsK LSsKLSAgICAgICBpZiAoIXZhcnNlZW4pCi0gCXsKLSAJICB2YXJzZWVuID0gMTsKLSAJfQotICAg ICAgIHByaW50Zl9maWx0ZXJlZCAoKCIkJXMgPSAiKSwgdmFyLT5uYW1lKTsKLS0gICAgICB2YWx1 ZV9wcmludCAodmFsdWVfb2ZfaW50ZXJuYWx2YXIgKGdkYmFyY2gsIHZhciksIGdkYl9zdGRvdXQs Ci0tCQkgICAmb3B0cyk7Ci0tICAgICAgcHJpbnRmX2ZpbHRlcmVkICgoIlxuIikpOwotKwotKyAg ICAgIFRSWV9DQVRDSCAoZSwgUkVUVVJOX01BU0tfRVJST1IpCi0rCXsKLSsJICB2YWx1ZV9wcmlu dCAodmFsdWVfb2ZfaW50ZXJuYWx2YXIgKGdkYmFyY2gsIHZhciksIGdkYl9zdGRvdXQsCi0rCQkg ICAgICAgJm9wdHMpOwotKwkgIHByaW50Zl9maWx0ZXJlZCAoKCJcbiIpKTsKLSsJfQotKyAgICAg IGlmIChlLnJlYXNvbiA8IDApCi0rCXByaW50Zl9maWx0ZXJlZCAoXygiPGVycm9yOiAlcz5cbiIp LCBlLm1lc3NhZ2UpOwotICAgICB9Ci0gICBpZiAoIXZhcnNlZW4pCi0gICAgIHByaW50Zl91bmZp bHRlcmVkIChfKCJObyBkZWJ1Z2dlciBjb252ZW5pZW5jZSB2YXJpYWJsZXMgbm93IGRlZmluZWQu XG4iCi1AQCAtMzA3NSw3ICszMTgzLDI0IEBAIHZhbHVlX2Zyb21faGlzdG9yeV9yZWYgKGNoYXIg KmgsIGNoYXIgKioKK0BAIC0zMTM5LDkgKzMyMzksMjYgQEAgY29lcmNlX3JlZl9pZl9jb21wdXRl ZCAoY29uc3Qgc3RydWN0IHZhbHVlICphcmcpCiAgc3RydWN0IHZhbHVlICoKICBjb2VyY2VfcmVm IChzdHJ1Y3QgdmFsdWUgKmFyZykKICB7CiAtICBzdHJ1Y3QgdHlwZSAqdmFsdWVfdHlwZV9hcmdf dG1wID0gY2hlY2tfdHlwZWRlZiAodmFsdWVfdHlwZSAoYXJnKSk7CiArICBzdHJ1Y3QgdHlwZSAq dmFsdWVfdHlwZV9hcmdfdG1wOwotKworICAgc3RydWN0IHZhbHVlICpyZXR2YWw7CisgCiArICBp ZiAoVFlQRV9EWU5BTUlDICh2YWx1ZV90eXBlIChhcmcpKSkKICsgICAgewogKyAgICAgIHN0cnVj dCBjbGVhbnVwICpjbGVhbnVwcyA9IG1ha2VfY2xlYW51cCAobnVsbF9jbGVhbnVwLCBOVUxMKTsK QEAgLTE1MDA3LDEwICsxNjE2MiwxMSBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIv dmFsdWUuYwogKyAgICB9CiArICBlbHNlCiArICAgIHZhbHVlX3R5cGVfYXJnX3RtcCA9IGNoZWNr X3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZykpOwotIAotICAgaWYgKFRZUEVfQ09ERSAodmFsdWVf dHlwZV9hcmdfdG1wKSA9PSBUWVBFX0NPREVfUkVGKQotICAgICBhcmcgPSB2YWx1ZV9hdF9sYXp5 IChUWVBFX1RBUkdFVF9UWVBFICh2YWx1ZV90eXBlX2FyZ190bXApLAotQEAgLTMxNzMsNCArMzI5 OCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5IGluaXRpYWxpemVkLiIpKTsKKysKKyAgIHJldHZh bCA9IGNvZXJjZV9yZWZfaWZfY29tcHV0ZWQgKGFyZyk7CisgICBpZiAocmV0dmFsKQorICAgICBy ZXR1cm4gcmV0dmFsOworQEAgLTMyNDMsNCArMzM2MCwxMCBAQCBWQVJJQUJMRSBpcyBhbHJlYWR5 IGluaXRpYWxpemVkLiIpKTsKICAgIGFkZF9wcmVmaXhfY21kICgiZnVuY3Rpb24iLCBub19jbGFz cywgZnVuY3Rpb25fY29tbWFuZCwgXygiXAogIFBsYWNlaG9sZGVyIGNvbW1hbmQgZm9yIHNob3dp bmcgaGVscCBvbiBjb252ZW5pZW5jZSBmdW5jdGlvbnMuIiksCiAgCQkgICZmdW5jdGlvbmxpc3Qs ICJmdW5jdGlvbiAiLCAwLCAmY21kbGlzdCk7CkBAIC0xNTAyMSwxMSArMTYxNzcsMTEgQEAgSW5k ZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmMKICsgIG9ic2VydmVyX2F0dGFjaF9t YXJrX3VzZWQgKHZhbHVlX3R5cGVzX21hcmtfdXNlZCk7CiArI2VuZGlmCiAgfQotSW5kZXg6IGdk Yi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUw LjIwMTEwNzIyLm9yaWcvZ2RiL3ZhbHVlLmgJMjAxMS0wNy0xNCAxNzowMDoyMC4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi92YWx1ZS5oCTIwMTEtMDctMjkgMjI6 NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAtNDc1LDYgKzQ3NSwxMCBAQCBleHRlcm4gc3RydWN0 IHZhbHVlICp2YWx1ZV9mcm9tX2RlY2Zsb2F0CitkaWZmIC0tZ2l0IGEvZ2RiL3ZhbHVlLmggYi9n ZGIvdmFsdWUuaAoraW5kZXggMTY3ODQ3Zi4uY2NkNjhmYyAxMDA2NDQKKy0tLSBhL2dkYi92YWx1 ZS5oCisrKysgYi9nZGIvdmFsdWUuaAorQEAgLTQ5MCw2ICs0OTAsMTAgQEAgZXh0ZXJuIHN0cnVj dCB2YWx1ZSAqdmFsdWVfZnJvbV9kZWNmbG9hdCAoc3RydWN0IHR5cGUgKnR5cGUsCiAgCQkJCQkg IGNvbnN0IGdkYl9ieXRlICpkZWNieXRlcyk7CiAgZXh0ZXJuIHN0cnVjdCB2YWx1ZSAqdmFsdWVf ZnJvbV9oaXN0b3J5X3JlZiAoY2hhciAqLCBjaGFyICoqKTsKICAKQEAgLTE1MDM2LDcgKzE2MTky LDcgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3ZhbHVlLmgKICBleHRlcm4gc3Ry dWN0IHZhbHVlICp2YWx1ZV9hdCAoc3RydWN0IHR5cGUgKnR5cGUsIENPUkVfQUREUiBhZGRyKTsK ICBleHRlcm4gc3RydWN0IHZhbHVlICp2YWx1ZV9hdF9sYXp5IChzdHJ1Y3QgdHlwZSAqdHlwZSwg Q09SRV9BRERSIGFkZHIpOwogIAotQEAgLTcwMCwxMCArNzA0LDUyIEBAIGV4dGVybiBzdHJ1Y3Qg aW50ZXJuYWx2YXIgKmxvb2t1cF9vbmx5X2kKK0BAIC03MTksMTAgKzcyMyw1MiBAQCBleHRlcm4g c3RydWN0IGludGVybmFsdmFyICpsb29rdXBfb25seV9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAq bmFtZSk7CiAgCiAgZXh0ZXJuIHN0cnVjdCBpbnRlcm5hbHZhciAqY3JlYXRlX2ludGVybmFsdmFy IChjb25zdCBjaGFyICpuYW1lKTsKICAKQEAgLTE1MDkyLDExICsxNjI0OCwxMSBAQCBJbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdmFsdWUuaAogIAogIGV4dGVybiBzdHJ1Y3QgaW50ZXJu YWx2YXIgKmxvb2t1cF9pbnRlcm5hbHZhciAoY29uc3QgY2hhciAqbmFtZSk7CiAgCi1JbmRleDog Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvd2luZG93cy10ZGVwLmMKLT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBn ZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL3dpbmRvd3MtdGRlcC5jCTIwMTEtMDctMTQgMTc6 MDA6MjAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvd2luZG93 cy10ZGVwLmMJMjAxMS0wNy0yOSAyMjo1MjowMi4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yNjgsNyAr MjY4LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBsdmFsX2Z1bmNzIHRsYl92YWx1ZQorZGlmZiAt LWdpdCBhL2dkYi93aW5kb3dzLXRkZXAuYyBiL2dkYi93aW5kb3dzLXRkZXAuYworaW5kZXggNWU4 MGFhZi4uZjVlZTVmZiAxMDA2NDQKKy0tLSBhL2dkYi93aW5kb3dzLXRkZXAuYworKysrIGIvZ2Ri L3dpbmRvd3MtdGRlcC5jCitAQCAtMjY4LDcgKzI2OCw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3Qg bHZhbF9mdW5jcyB0bGJfdmFsdWVfZnVuY3MgPQogICAgIGlmIHRoZXJlJ3Mgbm8gb2JqZWN0IGF2 YWlsYWJsZS4gICovCiAgCiAgc3RhdGljIHN0cnVjdCB2YWx1ZSAqCkBAIC0xNTEyOCwxMSArMTYy ODQsMTEgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3dpbmRvd3MtdGRlcC5jCiAt ICBjcmVhdGVfaW50ZXJuYWx2YXJfdHlwZV9sYXp5ICgiX3RsYiIsIHRsYl9tYWtlX3ZhbHVlKTsK ICsgIGNyZWF0ZV9pbnRlcm5hbHZhcl90eXBlX2xhenkgKCJfdGxiIiwgJnRsYl9mdW5jcywgTlVM TCk7CiAgfQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3hjb2ZmcmVhZC5jCi09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcyMi5vcmlnL2dkYi94Y29mZnJlYWQuYwkyMDEx LTA3LTI5IDIyOjUyOjAwLjAwMDAwMDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIv Z2RiL3hjb2ZmcmVhZC5jCTIwMTEtMDctMjkgMjI6NTI6MDIuMDAwMDAwMDAwICswMjAwCi1AQCAt MzEyNSw2ICszMTI1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBzeW1fZm5zIHhjb2ZmX3N5bV9m bgorZGlmZiAtLWdpdCBhL2dkYi94Y29mZnJlYWQuYyBiL2dkYi94Y29mZnJlYWQuYworaW5kZXgg ZDc3NjBlZS4uOGE4ZjVmYyAxMDA2NDQKKy0tLSBhL2dkYi94Y29mZnJlYWQuYworKysrIGIvZ2Ri L3hjb2ZmcmVhZC5jCitAQCAtMzEyNSw2ICszMTI1LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBz eW1fZm5zIHhjb2ZmX3N5bV9mbnMgPQogICAgZGVmYXVsdF9zeW1maWxlX3NlZ21lbnRzLAkvKiBH ZXQgc2VnbWVudCBpbmZvcm1hdGlvbiBmcm9tIGEgZmlsZS4gICovCiAgICBhaXhfcHJvY2Vzc19s aW5lbm9zLAogICAgZGVmYXVsdF9zeW1maWxlX3JlbG9jYXRlLAkvKiBSZWxvY2F0ZSBhIGRlYnVn IHNlY3Rpb24uICAqLwoKZGlmZiAtLWdpdCBhL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1 bi5wYXRjaCBiL2dkYi1iejU0MTg2Ni1yd2F0Y2gtYmVmb3JlLXJ1bi5wYXRjaAppbmRleCBhODFk NjI3Li43Y2MyYTM4IDEwMDY0NAotLS0gYS9nZGItYno1NDE4NjYtcndhdGNoLWJlZm9yZS1ydW4u cGF0Y2gKKysrIGIvZ2RiLWJ6NTQxODY2LXJ3YXRjaC1iZWZvcmUtcnVuLnBhdGNoCkBAIC0xLDIw ICsxLDIwIEBACi1JbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvY29uZmlnL2kzODYvbGlu dXg2NC5taAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 NjQubWgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NvbmZp Zy9pMzg2L2xpbnV4NjQubWgJMjAxMS0wNy0yMiAwMTo0NjoxMC4wMDAwMDAwMDAgKzAyMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTEtMDct MjIgMTk6MzI6NDEuMDAwMDAwMDAwICswMjAwCi1AQCAtMyw3ICszLDcgQEAgTkFUREVQRklMRVM9 IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAotIAlpMzg2LW5hdC5vIGFtZDY0LW5hdC5vIGFt ZDY0LWxpbnV4LW5hdC5vIFwKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZp Zy9pMzg2L2xpbnV4NjQubWgJMjAxMS0wOC0yNCAxNDowNzoyNi4wMDAwMDAwMDAgKzAyMDAKKysr KyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9saW51eDY0Lm1oCTIwMTEtMTIt MTkgMDE6NDA6NDkuNDkyNjI1ODM3ICswMTAwCitAQCAtNCw3ICs0LDcgQEAgTkFUREVQRklMRVM9 IGluZi1wdHJhY2UubyBmb3JrLWNoaWxkLm8gXAogIAlsaW51eC1uYXQubyBsaW51eC1vc2RhdGEu byBcCi0gCXByb2Mtc2VydmljZS5vIGxpbnV4LXRocmVhZC1kYi5vIGxpbnV4LWZvcmsubworIAlw cm9jLXNlcnZpY2UubyBsaW51eC10aHJlYWQtZGIubyBsaW51eC1mb3JrLm8gXAorIAlsaW51eC1w cm9jZnMubwogLU5BVF9GSUxFPSBjb25maWcvbm0tbGludXguaAogK05BVF9GSUxFPSBubS1saW51 eDY0LmgKICBOQVRfQ0RFUFMgPSAkKHNyY2RpcikvcHJvYy1zZXJ2aWNlLmxpc3QKICAKICAjIFRo ZSBkeW5hbWljYWxseSBsb2FkZWQgbGlidGhyZWFkX2RiIG5lZWRzIGFjY2VzcyB0byBzeW1ib2xz IGluIHRoZQotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L2xpbnV4 Lm1oCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYvbGludXgubWgK ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4zLjUwLjIwMTEwNzIyLm9yaWcvZ2RiL2NvbmZpZy9pMzg2 L2xpbnV4Lm1oCTIwMTEtMDctMjIgMDE6NDY6MTAuMDAwMDAwMDAwICswMjAwCi0rKysgZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0wNy0yMiAxOTozMjoy MS4wMDAwMDAwMDAgKzAyMDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL2NvbmZp Zy9pMzg2L2xpbnV4Lm1oCTIwMTEtMDgtMjQgMTQ6MDc6MjYuMDAwMDAwMDAwICswMjAwCisrKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29uZmlnL2kzODYvbGludXgubWgJMjAxMS0xMi0xOSAw MTo0MDozMi40NTM2ODkwMDYgKzAxMDAKIEBAIC0xLDYgKzEsNiBAQAogICMgSG9zdDogSW50ZWwg Mzg2IHJ1bm5pbmcgR05VL0xpbnV4LgogIApAQCAtMjMsMTAgKzIzLDEwIEBAIEluZGV4OiBnZGIt Ny4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9saW51eC5taAogIE5BVERFUEZJTEVTPSBp bmYtcHRyYWNlLm8gZm9yay1jaGlsZC5vIFwKICAJaTM4Ni1uYXQubyBpMzg2LWxpbnV4LW5hdC5v IFwKICAJcHJvYy1zZXJ2aWNlLm8gbGludXgtdGhyZWFkLWRiLm8gXAotSW5kZXg6IGdkYi03LjMu NTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2L25tLWxpbnV4LmgKK0luZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9ubS1saW51eC5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rl di9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMy41 MC4yMDExMDcyMi9nZGIvY29uZmlnL2kzODYvbm0tbGludXguaAkyMDExLTA3LTIyIDE5OjMyOjIx LjAwMDAwMDAwMCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2NvbmZpZy9pMzg2 L25tLWxpbnV4LmgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTQ2ODkwMDIgKzAxMDAKIEBAIC0wLDAg KzEsMjggQEAKICsvKiBOYXRpdmUgc3VwcG9ydCBmb3IgR05VL0xpbnV4IGkzODYuCiArCkBAIC01 NiwxMCArNTYsMTAgQEAgSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL2NvbmZpZy9pMzg2 L25tLWxpbnV4LmgKICsjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2hhcmR3YXJlX3dhdGNocG9pbnQo dHlwZSwgY250LCBvdCkgMQogKwogKyNlbmRpZiAvKiBOTV9MSU5VWDY0X0ggKi8KLUluZGV4OiBn ZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgKK0luZGV4OiBn ZGItNy40LjUwLjIwMTExMjE4L2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgKID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsr KyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgJMjAxMS0w Ny0yMiAxOTozMjoyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgJMjAxMS0xMi0xOSAwMTo0MDozMi40NTU2ODg5OTgg KzAxMDAKIEBAIC0wLDAgKzEsMjggQEAKICsvKiBOYXRpdmUgc3VwcG9ydCBmb3IgR05VL0xpbnV4 IGFtZDY0LgogKwpAQCAtODksMTEgKzg5LDExIEBAIEluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIy L2dkYi9jb25maWcvaTM4Ni9ubS1saW51eDY0LmgKICsjZGVmaW5lIHRhcmdldF9jYW5fdXNlX2hh cmR3YXJlX3dhdGNocG9pbnQodHlwZSwgY250LCBvdCkgMQogKwogKyNlbmRpZiAvKiBOTV9MSU5V WDY0X0ggKi8KLUluZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90YXJnZXQuaAorSW5kZXg6 IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3RhcmdldC5oCiA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcu My41MC4yMDExMDcyMi5vcmlnL2dkYi90YXJnZXQuaAkyMDExLTA2LTA2IDE0OjQ3OjA3LjAwMDAw MDAwMCArMDIwMAotKysrIGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3RhcmdldC5oCTIwMTEtMDct MjIgMTk6MzI6MjEuMDAwMDAwMDAwICswMjAwCi1AQCAtMTM0OSw4ICsxMzQ5LDEwIEBAIGV4dGVy biBjaGFyICp0YXJnZXRfdGhyZWFkX25hbWUgKHN0cnVjdCAKKy0tLSBnZGItNy40LjUwLjIwMTEx MjE4Lm9yaWcvZ2RiL3RhcmdldC5oCTIwMTEtMTItMDYgMjE6MDM6MTMuMDAwMDAwMDAwICswMTAw CisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGFyZ2V0LmgJMjAxMS0xMi0xOSAwMTo0MDoz Mi40NTY2ODg5OTUgKzAxMDAKK0BAIC0xMzkxLDggKzEzOTEsMTAgQEAgZXh0ZXJuIGNoYXIgKnRh cmdldF90aHJlYWRfbmFtZSAoc3RydWN0CiAgICAgYnBfaGFyZHdhcmVfYnJlYWtwb2ludC4gIENO VCBpcyB0aGUgbnVtYmVyIG9mIHN1Y2ggd2F0Y2hwb2ludHMgdXNlZCBzbyBmYXIKICAgICAoaW5j bHVkaW5nIHRoaXMgb25lPykuICBPVEhFUlRZUEUgaXMgd2hvIGtub3dzIHdoYXQuLi4gICovCiAg CkBAIC0xMDQsMTAgKzEwNCwxMCBAQCBJbmRleDogZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvdGFy Z2V0LmgKICAKICAvKiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVidWcgcmVnaXN0ZXJzIG5lZWRl ZCB0byB3YXRjaCB0aGUgZ2l2ZW4KICAgICBtZW1vcnkgcmVnaW9uLCBvciB6ZXJvIGlmIG5vdCBz dXBwb3J0ZWQuICAqLwotSW5kZXg6IGdkYi03LjMuNTAuMjAxMTA3MjIvZ2RiL3Rlc3RzdWl0ZS9n ZGIuYmFzZS93YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCitJbmRleDogZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3dhdGNocG9pbnQtaHctYmVmb3JlLXJ1bi5l eHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAw MDAgKzAwMDAKLSsrKyBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv d2F0Y2hwb2ludC1ody1iZWZvcmUtcnVuLmV4cAkyMDExLTA3LTIyIDE5OjMyOjIxLjAwMDAwMDAw MCArMDIwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS93 YXRjaHBvaW50LWh3LWJlZm9yZS1ydW4uZXhwCTIwMTEtMTItMTkgMDE6NDA6MzIuNDY0Njg4OTY1 ICswMTAwCiBAQCAtMCwwICsxLDQwIEBACiArIyBDb3B5cmlnaHQgMjAwOSwgMjAxMCBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9nZGItYno1OTIwMzEtc2ln aW5mby1sb3N0LTRvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTRvZjUucGF0 Y2gKaW5kZXggNjM5YjM3ZC4uMzgxMGZlYyAxMDA2NDQKLS0tIGEvZ2RiLWJ6NTkyMDMxLXNpZ2lu Zm8tbG9zdC00b2Y1LnBhdGNoCisrKyBiL2dkYi1iejU5MjAzMS1zaWdpbmZvLWxvc3QtNG9mNS5w YXRjaApAQCAtNzgsMTEgKzc4LDExIEBAIGdkYi90ZXN0c3VpdGUvCiAJKiBnZGIudGhyZWFkcy9z aWdzdGVwLXRocmVhZHMuZXhwOiBOZXcgZmlsZS4KIAkqIGdkYi50aHJlYWRzL3NpZ3N0ZXAtdGhy ZWFkcy5jOiBOZXcgZmlsZS4KIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL2xpbnV4 LW5hdC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvbGludXgtbmF0LmMKID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTEwMTE3Lm9yaWcvZ2RiL2xpbnV4LW5hdC5jCTIwMTEt MDEtMTcgMTU6NTM6MTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9n ZGIvbGludXgtbmF0LmMJMjAxMS0wMS0xNyAxNjowNTo1Ny4wMDAwMDAwMDAgKzAxMDAKLUBAIC0y ODAzLDYgKzI4MDMsOCBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5mbyAqbHAs CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9saW51eC1uYXQuYwkyMDExLTEyLTE5 IDAxOjI1OjQyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xp bnV4LW5hdC5jCTIwMTEtMTItMTkgMDI6MTc6MDUuNDEyNjA3NzM1ICswMTAwCitAQCAtMjg0Myw2 ICsyODQzLDggQEAgc3RvcF93YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAogICAg ICB7CiAgICAgICAgaW50IHN0YXR1czsKICAKQEAgLTkxLDcgKzkxLDcgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAxMTcvZ2RiL2xpbnV4LW5hdC5jCiAgICAgICAgc3RhdHVzID0gd2FpdF9sd3Ag KGxwKTsKICAgICAgICBpZiAoc3RhdHVzID09IDApCiAgCXJldHVybiAwOwotQEAgLTI4MjgsMTEw ICsyODMwLDYxIEBAIHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKK0BA IC0yODY4LDExMCArMjg3MCw2MSBAQCBzdG9wX3dhaXRfY2FsbGJhY2sgKHN0cnVjdCBsd3BfaW5m byAqbHAsCiAgCiAgICAgICAgaWYgKFdTVE9QU0lHIChzdGF0dXMpICE9IFNJR1NUT1ApCiAgCXsK QEAgLTE0Niw5ICsxNDYsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvbGludXgt bmF0LmMKIC0JCQkJCXN0YXR1c190b19zdHIgKChpbnQpIHN0YXR1cykpOwogLQkJICBraWxsX2x3 cCAoR0VUX0xXUCAobHAtPnB0aWQpLCBXU1RPUFNJRyAobHAtPnN0YXR1cykpOwogLQkJfQotKwkg IC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRlci4gICov Ci0rCSAgc2F2ZV9zaWdpbmZvIChscCk7Ci0gCistCiAtCSAgICAgIC8qIFNhdmUgdGhlIHNpZ3Ry YXAgZXZlbnQuICAqLwogLQkgICAgICBscC0+c3RhdHVzID0gc3RhdHVzOwogLQkgICAgICByZXR1 cm4gMDsKQEAgLTE1Nyw3ICsxNTUsOCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIv bGludXgtbmF0LmMKIC0JICAgIHsKIC0JICAgICAgLyogVGhlIHRocmVhZCB3YXMgc3RvcHBlZCB3 aXRoIGEgc2lnbmFsIG90aGVyIHRoYW4KIC0JICAgICAgICAgU0lHU1RPUCwgYW5kIGRpZG4ndCBh Y2NpZGVudGFsbHkgdHJpcCBhIGJyZWFrcG9pbnQuICAqLwotKwkgIHNhdmVfc2lndHJhcCAobHAp OworKwkgIC8qIFNhdmUgdGhlIHRyYXAncyBzaWdpbmZvIGluIGNhc2Ugd2UgbmVlZCBpdCBsYXRl ci4gICovCisrCSAgc2F2ZV9zaWdpbmZvIChscCk7CiAgCiAtCSAgICAgIGlmIChkZWJ1Z19saW51 eF9uYXQpCiAtCQl7CkBAIC0xNzQsNyArMTczLDggQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAx MTcvZ2RiL2xpbnV4LW5hdC5jCiAtCQkJCSAgICAiU1dDOiBQVFJBQ0VfQ09OVCAlcywgMCwgMCAo JXMpXG4iLAogLQkJCQkgICAgdGFyZ2V0X3BpZF90b19zdHIgKGxwLT5wdGlkKSwKIC0JCQkJICAg IGVycm5vID8gc2FmZV9zdHJlcnJvciAoZXJybm8pIDogIk9LIik7Ci0tCisrCSAgc2F2ZV9zaWd0 cmFwIChscCk7CisgCiAtCSAgICAgIC8qIEhvbGQgdGhpcyBldmVudC93YWl0c3RhdHVzIHdoaWxl IHdlIGNoZWNrIHRvIHNlZSBpZgogLQkgICAgICAgICB0aGVyZSBhcmUgYW55IG1vcmUgKHdlIHN0 aWxsIHdhbnQgdG8gZ2V0IHRoYXQgU0lHU1RPUCkuICAqLwogLQkgICAgICBzdG9wX3dhaXRfY2Fs bGJhY2sgKGxwLCBOVUxMKTsKQEAgLTI0OCwxMSArMjQ4LDExIEBAIEluZGV4OiBnZGItNy4yLjUw LjIwMTEwMTE3L2dkYi9saW51eC1uYXQuYwogIAkgIGxwLT5zaWduYWxsZWQgPSAwOwogIAl9CiAg ICAgIH0KLUBAIC0zNTE0LDUyICszNDY3LDYgQEAgcmV0cnk6CitAQCAtMzYyNyw1NCArMzU4MCw2 IEBAIHJldHJ5OgogIAlscCA9IE5VTEw7CiAgICAgIH0KICAKLS0gIGlmIChscCAmJiBscC0+c2ln bmFsbGVkKQorLSAgaWYgKGxwICYmIGxwLT5zaWduYWxsZWQgJiYgbHAtPmxhc3RfcmVzdW1lX2tp bmQgIT0gcmVzdW1lX3N0b3ApCiAtICAgIHsKIC0gICAgICAvKiBBIHBlbmRpbmcgU0lHU1RPUCBt YXkgaW50ZXJmZXJlIHdpdGggdGhlIG5vcm1hbCBzdHJlYW0gb2YKIC0gICAgICAgICBldmVudHMu ICBJbiBhIHR5cGljYWwgY2FzZSB3aGVyZSBpbnRlcmZlcmVuY2UgaXMgYSBwcm9ibGVtLApAQCAt MjY2LDYgKzI2Niw4IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi9saW51eC1uYXQu YwogLSAgICAgIC8qIFJlc3VtZSB0aGUgdGhyZWFkLiAgSXQgc2hvdWxkIGhhbHQgaW1tZWRpYXRl bHkgcmV0dXJuaW5nIHRoZQogLSAgICAgICAgIHBlbmRpbmcgU0lHU1RPUC4gICovCiAtICAgICAg cmVnaXN0ZXJzX2NoYW5nZWQgKCk7CistICAgICAgaWYgKGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jl c3VtZSAhPSBOVUxMKQorLQlsaW51eF9uYXRfcHJlcGFyZV90b19yZXN1bWUgKGxwKTsKIC0gICAg ICBsaW51eF9vcHMtPnRvX3Jlc3VtZSAobGludXhfb3BzLCBwaWRfdG9fcHRpZCAoR0VUX0xXUCAo bHAtPnB0aWQpKSwKIC0JCQkgICAgbHAtPnN0ZXAsIFRBUkdFVF9TSUdOQUxfMCk7CiAtICAgICAg aWYgKGRlYnVnX2xpbnV4X25hdCkKQEAgLTMwMSwxMCArMzAzLDEwIEBAIEluZGV4OiBnZGItNy4y LjUwLjIwMTEwMTE3L2dkYi9saW51eC1uYXQuYwogICAgaWYgKCF0YXJnZXRfY2FuX2FzeW5jX3Ag KCkpCiAgICAgIHsKICAgICAgICAvKiBDYXVzZXMgU0lHSU5UIHRvIGJlIHBhc3NlZCBvbiB0byB0 aGUgYXR0YWNoZWQgcHJvY2Vzcy4gICovCi1JbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCitJbmRleDogZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCiA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICsw MDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3Np Z2luZm8tdGhyZWFkcy5jCTIwMTEtMDEtMTcgMTY6MDI6NDAuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhy ZWFkcy5jCTIwMTEtMTItMTkgMDI6MTY6MzUuMjM2NzIwMjcyICswMTAwCiBAQCAtMCwwICsxLDQ0 NyBAQAogKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBvZiBHREIsIHRoZSBHTlUgZGVidWdnZXIu CiArCkBAIC03NTMsMTAgKzc1NSwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5jCiArCiArICByZXR1cm4gRVhJ VF9TVUNDRVNTOwogK30KLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUv Z2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRzLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdpbmZvLXRocmVhZHMuZXhwCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEtMDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0r KysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8t dGhyZWFkcy5leHAJMjAxMS0wMS0xNyAxNjowMjo0MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGIt Ny40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnaW5mby10aHJlYWRz LmV4cAkyMDExLTEyLTE5IDAyOjE2OjM1LjIzNzcyMDI2OCArMDEwMAogQEAgLTAsMCArMSw5NCBA QAogKyMgQ29weXJpZ2h0IDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiArCkBA IC04NTIsMTAgKzg1NCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3NpZ2luZm8tdGhyZWFkcy5leHAKICt9CiArCiArZ2RiX2NvbnRpbnVl X3RvX2JyZWFrcG9pbnQgYnJlYWstYXQtZXhpdCAiLipicmVhay1hdC1leGl0LioiCi1JbmRleDog Z2RiLTcuMi41MC4yMDExMDExNy9nZGIvdGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhy ZWFkcy5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi50aHJl YWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCTE5NzAtMDEt MDEgMDA6MDA6MDAuMDAwMDAwMDAwICswMDAwCi0rKysgZ2RiLTcuMi41MC4yMDExMDExNy9nZGIv dGVzdHN1aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCTIwMTEtMDEtMTcgMTY6MDI6 NDAuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRl L2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5jCTIwMTEtMTItMTkgMDI6MTY6MzUuMjM3NzIw MjY4ICswMTAwCiBAQCAtMCwwICsxLDU0IEBACiArLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KICsKQEAgLTkxMSwxMCArOTEzLDEwIEBAIEluZGV4OiBn ZGItNy4yLjUwLjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJl YWRzLmMKICsgIHN0YXJ0IChOVUxMKTsJLyogbWFpbi1zdGFydCAqLwogKyAgcmV0dXJuIDA7CiAr fQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMTAxMTcvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9z aWdzdGVwLXRocmVhZHMuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1 aXRlL2dkYi50aHJlYWRzL3NpZ3N0ZXAtdGhyZWFkcy5leHAKID09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2 L251bGwJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBnZGItNy4yLjUw LjIwMTEwMTE3L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvc2lnc3RlcC10aHJlYWRzLmV4cAky MDExLTAxLTE3IDE2OjAyOjQwLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy9zaWdzdGVwLXRocmVhZHMuZXhwCTIwMTEtMTIt MTkgMDI6MTY6MzUuMjM3NzIwMjY4ICswMTAwCiBAQCAtMCwwICsxLDc0IEBACiArIyBDb3B5cmln aHQgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICsKCmRpZmYgLS1naXQgYS9n ZGItYno1OTIwMzEtc2lnaW5mby1sb3N0LTVvZjUucGF0Y2ggYi9nZGItYno1OTIwMzEtc2lnaW5m by1sb3N0LTVvZjUucGF0Y2gKaW5kZXggYjgyMTJiYi4uOGY0ZTQ0MCAxMDA2NDQKLS0tIGEvZ2Ri LWJ6NTkyMDMxLXNpZ2luZm8tbG9zdC01b2Y1LnBhdGNoCisrKyBiL2dkYi1iejU5MjAzMS1zaWdp bmZvLWxvc3QtNW9mNS5wYXRjaApAQCAtMjYsMjcgKzI2LDI3IEBAIGdkYi8KIAkobGludXhfbmF0 X3NldF9zaWdpbmZvX2ZpeHVwKTogVXNlIFBUUkFDRV9HRVRTSUdJTkZPLgogCSogbGludXgtbmF0 LmggKHN0cnVjdCBsd3BfaW5mbykgPHNpZ2luZm8+OiBSZW1vdmUuCiAKLUluZGV4OiBnZGItNy4y LjUwLjIwMTAxMTE2L2dkYi9saW51eC1uYXQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL2xpbnV4LW5hdC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmln L2dkYi9saW51eC1uYXQuYwkyMDEwLTExLTE2IDA5OjEyOjI2LjAwMDAwMDAwMCArMDEwMAotKysr IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2xpbnV4LW5hdC5jCTIwMTAtMTEtMTYgMDk6MTM6MjEu MDAwMDAwMDAwICswMTAwCi1AQCAtMTg1MCw3ICsxODUwLDYgQEAgcmVzdW1lX2NhbGxiYWNrIChz dHJ1Y3QgbHdwX2luZm8gKmxwLCB2bwotIAkJCSAgICB0YXJnZXRfcGlkX3RvX3N0ciAobHAtPnB0 aWQpKTsKLSAgICAgICBscC0+c3RvcHBlZCA9IDA7Ci0gICAgICAgbHAtPnN0ZXAgPSAwOwotLSAg ICAgIG1lbXNldCAoJmxwLT5zaWdpbmZvLCAwLCBzaXplb2YgKGxwLT5zaWdpbmZvKSk7Ci0gICAg ICAgbHAtPnN0b3BwZWRfYnlfd2F0Y2hwb2ludCA9IDA7Ci0gICAgIH0KLSAgIGVsc2UgaWYgKGxw LT5zdG9wcGVkICYmIGRlYnVnX2xpbnV4X25hdCkKLUBAIC0xOTkzLDcgKzE5OTIsNiBAQCBsaW51 eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCi0gICBwdGlkID0gcGlkX3RvX3B0 aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSk7Ci0gCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmln L2dkYi9saW51eC1uYXQuYwkyMDExLTEyLTE5IDAyOjE3OjA1LjAwMDAwMDAwMCArMDEwMAorKysr IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL2xpbnV4LW5hdC5jCTIwMTEtMTItMTkgMDI6MTc6NDMu MTg4NDY2ODU0ICswMTAwCitAQCAtMTg4Myw3ICsxODgzLDYgQEAgcmVzdW1lX2x3cCAoc3RydWN0 IGx3cF9pbmZvICpscCwgaW50IHN0ZQorIAkJCQlzdGVwLCBUQVJHRVRfU0lHTkFMXzApOworIAkg IGxwLT5zdG9wcGVkID0gMDsKKyAJICBscC0+c3RlcCA9IHN0ZXA7CistCSAgbWVtc2V0ICgmbHAt PnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2luZm8pKTsKKyAJICBscC0+c3RvcHBlZF9ieV93 YXRjaHBvaW50ID0gMDsKKyAJfQorICAgICAgIGVsc2UKK0BAIC0yMDI3LDcgKzIwMjYsNiBAQCBs aW51eF9uYXRfcmVzdW1lIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzCisgICBpZiAobGludXhfbmF0 X3ByZXBhcmVfdG9fcmVzdW1lICE9IE5VTEwpCisgICAgIGxpbnV4X25hdF9wcmVwYXJlX3RvX3Jl c3VtZSAobHApOwogICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4X29wcywgcHRpZCwgc3Rl cCwgc2lnbm8pOwogLSAgbWVtc2V0ICgmbHAtPnNpZ2luZm8sIDAsIHNpemVvZiAobHAtPnNpZ2lu Zm8pKTsKICAgIGxwLT5zdG9wcGVkX2J5X3dhdGNocG9pbnQgPSAwOwogIAogICAgaWYgKGRlYnVn X2xpbnV4X25hdCkKLUBAIC0yNTAzLDIyICsyNTAxLDYgQEAgd2FpdF9sd3AgKHN0cnVjdCBsd3Bf aW5mbyAqbHApCitAQCAtMjYxMiwyMiArMjYxMCw2IEBAIHdhaXRfbHdwIChzdHJ1Y3QgbHdwX2lu Zm8gKmxwKQogICAgcmV0dXJuIHN0YXR1czsKICB9CiAgCkBAIC02OSw3ICs2OSw3IEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9saW51eC1uYXQuYwogIC8qIFNlbmQgYSBTSUdTVE9Q IHRvIExQLiAgKi8KICAKICBzdGF0aWMgaW50Ci1AQCAtMjc4Nyw5ICsyNzY5LDYgQEAgc3RvcF93 YWl0X2NhbGxiYWNrIChzdHJ1Y3QgbHdwX2luZm8gKmxwLAorQEAgLTI4NzIsOSArMjg1NCw2IEBA IHN0b3Bfd2FpdF9jYWxsYmFjayAoc3RydWN0IGx3cF9pbmZvICpscCwKICAJewogIAkgIC8qIFRo ZSB0aHJlYWQgd2FzIHN0b3BwZWQgd2l0aCBhIHNpZ25hbCBvdGhlciB0aGFuIFNJR1NUT1AuICAq LwogIApAQCAtNzksNyArNzksNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGlu dXgtbmF0LmMKICAJICBzYXZlX3NpZ3RyYXAgKGxwKTsKICAKICAJICBpZiAoZGVidWdfbGludXhf bmF0KQotQEAgLTMxNTUsMTIgKzMxMzQsNyBAQCBsaW51eF9uYXRfZmlsdGVyX2V2ZW50IChpbnQg bHdwaWQsIGludCBzCitAQCAtMzI3OCwxMiArMzI1Nyw3IEBAIGxpbnV4X25hdF9maWx0ZXJfZXZl bnQgKGludCBsd3BpZCwgaW50IHMKICAgICAgfQogIAogICAgaWYgKGxpbnV4X25hdF9zdGF0dXNf aXNfZXZlbnQgKHN0YXR1cykpCkBAIC05Myw3ICs5Myw3IEBAIEluZGV4OiBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9saW51eC1uYXQuYwogIAogICAgLyogQ2hlY2sgaWYgdGhlIHRocmVhZCBoYXMg ZXhpdGVkLiAgKi8KICAgIGlmICgoV0lGRVhJVEVEIChzdGF0dXMpIHx8IFdJRlNJR05BTEVEIChz dGF0dXMpKQotQEAgLTM3NjMsNyArMzczNyw2IEBAIHJlc3VtZV9zdG9wcGVkX3Jlc3VtZWRfbHdw cyAoc3RydWN0IGx3cF8KK0BAIC0zOTYxLDcgKzM5MzUsNiBAQCByZXN1bWVfc3RvcHBlZF9yZXN1 bWVkX2x3cHMgKHN0cnVjdCBsd3BfCiAgICAgICAgbGludXhfb3BzLT50b19yZXN1bWUgKGxpbnV4 X29wcywgcGlkX3RvX3B0aWQgKEdFVF9MV1AgKGxwLT5wdGlkKSksCiAgCQkJICAgIGxwLT5zdGVw LCBUQVJHRVRfU0lHTkFMXzApOwogICAgICAgIGxwLT5zdG9wcGVkID0gMDsKQEAgLTEwMSw3ICsx MDEsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvbGludXgtbmF0LmMKICAgICAg ICBscC0+c3RvcHBlZF9ieV93YXRjaHBvaW50ID0gMDsKICAgICAgfQogIAotQEAgLTU5MzIsMTEg KzU5MDUsMTkgQEAgbGludXhfbmF0X3NldF9zaWdpbmZvX2ZpeHVwIChzdHJ1Y3QgdGFyZworQEAg LTYwMjksMTEgKzYwMDIsMTkgQEAgbGludXhfbmF0X3NldF9wcmVwYXJlX3RvX3Jlc3VtZSAoc3Ry dWN0CiAgc3RydWN0IHNpZ2luZm8gKgogIGxpbnV4X25hdF9nZXRfc2lnaW5mbyAocHRpZF90IHB0 aWQpCiAgewpAQCAtMTI0LDExICsxMjQsMTEgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2xpbnV4LW5hdC5jCiAgfQogIAogIC8qIFByb3ZpZGUgYSBwcm90b3R5cGUgdG8gc2lsZW5j ZSAtV21pc3NpbmctcHJvdG90eXBlcy4gICovCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvbGludXgtbmF0LmgKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQu aAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvbGludXgtbmF0 LmgJMjAxMC0xMS0xNiAwNzo1NDozNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIw MTAxMTE2L2dkYi9saW51eC1uYXQuaAkyMDEwLTExLTE2IDA5OjEyOjQ0LjAwMDAwMDAwMCArMDEw MAotQEAgLTU4LDEwICs1OCw2IEBAIHN0cnVjdCBsd3BfaW5mbworLS0tIGdkYi03LjQuNTAuMjAx MTEyMTgub3JpZy9nZGIvbGludXgtbmF0LmgJMjAxMS0xMi0xOCAyMzo0MDo1OS4wMDAwMDAwMDAg KzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi9saW51eC1uYXQuaAkyMDExLTEyLTE5 IDAyOjE3OjIxLjM1NTU0ODI3NiArMDEwMAorQEAgLTc3LDEwICs3Nyw2IEBAIHN0cnVjdCBsd3Bf aW5mbwogICAgLyogVGhlIGtpbmQgb2Ygc3RlcHBpbmcgb2YgdGhpcyBMV1AuICAqLwogICAgZW51 bSByZXN1bWVfc3RlcCBzdGVwOwogIAoKZGlmZiAtLWdpdCBhL2dkYi1jb3JlLW9wZW4tdmRzby13 YXJuaW5nLnBhdGNoIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKaW5kZXggODdj Y2MwYi4uYTQyMTM2NyAxMDA2NDQKLS0tIGEvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0 Y2gKKysrIGIvZ2RiLWNvcmUtb3Blbi12ZHNvLXdhcm5pbmcucGF0Y2gKQEAgLTMzLDM2ICszMywz NSBAQCBnZGIvCiAKIFsgQ29udGV4dCBiYWNrcG9ydC4gIF0KIAotSW5kZXg6IGdkYi03LjMuNTAu MjAxMTA3MjIvZ2RiL3NvbGliLXN2cjQuYworSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L3NvbGliLXN2cjQuYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjMuNTAuMjAxMTA3MjIub3JpZy9n ZGIvc29saWItc3ZyNC5jCTIwMTEtMDctMjIgMTk6MjY6NDYuMDAwMDAwMDAwICswMjAwCi0rKysg Z2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29saWItc3ZyNC5jCTIwMTEtMDctMjIgMTk6Mjk6MzYu MDAwMDAwMDAwICswMjAwCi1AQCAtMTE5Nyw4ICsxMTk3LDE4IEBAIHN2cjRfY3VycmVudF9zb3Mg KHZvaWQpCi0gCSAgdGFyZ2V0X3JlYWRfc3RyaW5nIChsbV9uYW1lIChuZXcpLCAmYnVmZmVyLAot IAkJCSAgICAgIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEsICZlcnJjb2RlKTsKLSAJICBpZiAo ZXJyY29kZSAhPSAwKQotLQkgICAgd2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3Ig bG9hZCBtYXA6ICVzLiIpLAotLQkJICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2RlKSk7Ci0rCSAg ICB7Ci0rCSAgICAgIC8qIER1cmluZyB0aGUgZmlyc3QgZXZlciBEU08gbGlzdCByZWFkaW5nIHNv bWUgc3RyaW5ncyBtYXkgYmUKLSsJCSB1bnJlYWRhYmxlIGFzIHJlc2lkaW5nIGluIHRoZSBsZC5z byByZWFkb25seSBtZW1vcnkgbm90IGJlaW5nCi0rCQkgcHJlc2VudCBpbiBhIGR1bXBlZCBjb3Jl IGZpbGUuICBEZWxheSB0aGUgZXJyb3IgY2hlY2sgYWZ0ZXIKLSsJCSB0aGUgZmlyc3QgcGFzcyBv ZiBEU08gbGlzdCBzY2FubmluZyB3aGVuIGxkLnNvIHNob3VsZCBiZQotKwkJIGFscmVhZHkgbWFw cGVkIGluIGFuZCBhbGwgdGhlIERTTyBsaXN0IGxfbmFtZSBtZW1vcnkgZ2V0cwotKwkJIHJlYWRh YmxlLiAgKi8KKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3NvbGliLXN2cjQuYwky MDExLTEyLTE5IDAxOjE0OjMxLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEy MTgvZ2RiL3NvbGliLXN2cjQuYwkyMDExLTEyLTE5IDAxOjMxOjEwLjEwNjc1MjE2NCArMDEwMAor QEAgLTEyMjIsOCArMTIyMiwxNyBAQCBzdnI0X3JlYWRfc29fbGlzdCAoQ09SRV9BRERSIGxtLCBz dHJ1Y3QKKyAJCQkgIFNPX05BTUVfTUFYX1BBVEhfU0laRSAtIDEsICZlcnJjb2RlKTsKKyAgICAg ICBpZiAoZXJyY29kZSAhPSAwKQorIAl7CistCSAgd2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRo bmFtZSBmb3IgbG9hZCBtYXA6ICVzLiIpLAorLQkJICAgc2FmZV9zdHJlcnJvciAoZXJyY29kZSkp OworKwkgIC8qIER1cmluZyB0aGUgZmlyc3QgZXZlciBEU08gbGlzdCByZWFkaW5nIHNvbWUgc3Ry aW5ncyBtYXkgYmUKKysJICAgICB1bnJlYWRhYmxlIGFzIHJlc2lkaW5nIGluIHRoZSBsZC5zbyBy ZWFkb25seSBtZW1vcnkgbm90IGJlaW5nCisrCSAgICAgcHJlc2VudCBpbiBhIGR1bXBlZCBjb3Jl IGZpbGUuICBEZWxheSB0aGUgZXJyb3IgY2hlY2sgYWZ0ZXIKKysJICAgICB0aGUgZmlyc3QgcGFz cyBvZiBEU08gbGlzdCBzY2FubmluZyB3aGVuIGxkLnNvIHNob3VsZCBiZQorKwkgICAgIGFscmVh ZHkgbWFwcGVkIGluIGFuZCBhbGwgdGhlIERTTyBsaXN0IGxfbmFtZSBtZW1vcnkgZ2V0cworKwkg ICAgIHJlYWRhYmxlLiAgKi8KICsKLSsJICAgICAgaWYgKG1hc3Rlcl9zb19saXN0ICgpICE9IE5V TEwpCi0rCQl3YXJuaW5nIChfKCJDYW4ndCByZWFkIHBhdGhuYW1lIGZvciBsb2FkIG1hcDogJXMu IiksCi0rCQkJIHNhZmVfc3RyZXJyb3IgKGVycmNvZGUpKTsKLSsJICAgIH0KLSAJICBlbHNlCi0g CSAgICB7Ci0gCSAgICAgIHN0cnVjdCBidWlsZF9pZCAqYnVpbGRfaWQ7Ci1JbmRleDogZ2RiLTcu My41MC4yMDExMDcyMi9nZGIvc29saWIuYworKwkgIGlmIChtYXN0ZXJfc29fbGlzdCAoKSAhPSBO VUxMKQorKwkgICAgd2FybmluZyAoXygiQ2FuJ3QgcmVhZCBwYXRobmFtZSBmb3IgbG9hZCBtYXA6 ICVzLiIpLAorKwkJICAgICBzYWZlX3N0cmVycm9yIChlcnJjb2RlKSk7CisrCisgCSAgZG9fY2xl YW51cHMgKG9sZF9jaGFpbik7CisgCSAgY29udGludWU7CisgCX0KK0luZGV4OiBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9zb2xpYi5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMy41MC4yMDExMDcy Mi5vcmlnL2dkYi9zb2xpYi5jCTIwMTEtMDYtMzAgMjE6Mjk6NTQuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMy41MC4yMDExMDcyMi9nZGIvc29saWIuYwkyMDExLTA3LTIyIDE5OjI5OjEwLjAw MDAwMDAwMCArMDIwMAotQEAgLTcwNiw2ICs3MDYsNyBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50 IGZyb21fdHR5LCBzdHJ1Y3QgCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9zb2xp Yi5jCTIwMTEtMDktMTIgMjE6MDA6MjIuMDAwMDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4y MDExMTIxOC9nZGIvc29saWIuYwkyMDExLTEyLTE5IDAxOjI5OjA0LjgxNTIyNzg5OCArMDEwMAor QEAgLTY3Niw2ICs2NzYsNyBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1 Y3QKICAgIHN0cnVjdCB0YXJnZXRfc29fb3BzICpvcHMgPSBzb2xpYl9vcHMgKHRhcmdldF9nZGJh cmNoKTsKICAgIHN0cnVjdCBzb19saXN0ICppbmZlcmlvciA9IG9wcy0+Y3VycmVudF9zb3MoKTsK ICAgIHN0cnVjdCBzb19saXN0ICpnZGIsICoqZ2RiX2xpbms7CkBAIC03MCw3ICs2OSw3IEBAIElu ZGV4OiBnZGItNy4zLjUwLjIwMTEwNzIyL2dkYi9zb2xpYi5jCiAgCiAgICAvKiBXZSBjYW4gcmVh Y2ggaGVyZSBkdWUgdG8gY2hhbmdpbmcgc29saWItc2VhcmNoLXBhdGggb3IgdGhlCiAgICAgICBz eXNyb290LCBiZWZvcmUgaGF2aW5nIGFueSBpbmZlcmlvci4gICovCi1AQCAtODQ2LDYgKzg0Nywx MiBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QgCitAQCAtODE3LDYg KzgxOCwxMiBAQCB1cGRhdGVfc29saWJfbGlzdCAoaW50IGZyb21fdHR5LCBzdHJ1Y3QKICAJICBv YnNlcnZlcl9ub3RpZnlfc29saWJfbG9hZGVkIChpKTsKICAJfQogIAoKZGlmZiAtLWdpdCBhL2dk Yi1kbG9wZW4tc2tpcF9pbmxpbmVfZnJhbWVzLXBlcmYucGF0Y2ggYi9nZGItZGxvcGVuLXNraXBf aW5saW5lX2ZyYW1lcy1wZXJmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx MTQxZGQyLi4wMDAwMDAwCi0tLSBhL2dkYi1kbG9wZW4tc2tpcF9pbmxpbmVfZnJhbWVzLXBlcmYu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1kaWZmIC0tZ2l0IGEvZ2RiL2lu ZnJ1bi5jIGIvZ2RiL2luZnJ1bi5jCi1pbmRleCA5MWUwZmMyLi4xZDdjODA4IDEwMDY0NAotLS0t IGEvZ2RiL2luZnJ1bi5jCi0rKysgYi9nZGIvaW5mcnVuLmMKLUBAIC0zMTExLDYgKzMxMTEsNTYg QEAgZmlsbF9pbl9zdG9wX2Z1bmMgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICB9Ci0g fQotIAotKy8qIEFyZ3VtZW50IGZvciBhdF9zb2xpYl9ldmVudF9icmVha3BvaW50X2hlbHBlci4g ICovCi0rCi0rc3RydWN0IHNvbGliX2V2ZW50X2JyZWFrcG9pbnRfaGVscGVyX2FyZwotK3sKLSsg IENPUkVfQUREUiBwcmV2X3BjOwotKyAgaW50IHNobGliX2JwX2NvdW50OwotKyAgaW50IG90aGVy X2JwX2NvdW50OwotK307Ci0rCi0rLyogSGVscGVyIGZvciBhdF9zb2xpYl9ldmVudF9icmVha3Bv aW50LiAgKi8KLSsKLStzdGF0aWMgaW50Ci0rYXRfc29saWJfZXZlbnRfYnJlYWtwb2ludF9oZWxw ZXIgKHN0cnVjdCBicmVha3BvaW50ICpiLCB2b2lkICphcmdwKQotK3sKLSsgIHN0cnVjdCBzb2xp Yl9ldmVudF9icmVha3BvaW50X2hlbHBlcl9hcmcgKmFyZwotKyAgICA9IChzdHJ1Y3Qgc29saWJf ZXZlbnRfYnJlYWtwb2ludF9oZWxwZXJfYXJnICopIGFyZ3A7IAotKyAgc3RydWN0IGJwX2xvY2F0 aW9uICpsb2M7Ci0rCi0rICBmb3IgKGxvYyA9IGItPmxvYzsgbG9jOyBsb2MgPSBsb2MtPm5leHQp Ci0rICAgIHsKLSsgICAgICBpZiAobG9jLT5wc3BhY2UgPT0gY3VycmVudF9wcm9ncmFtX3NwYWNl Ci0rCSAgJiYgKGxvYy0+YWRkcmVzcyA9PSBzdG9wX3BjIHx8IGxvYy0+YWRkcmVzcyA9PSBhcmct PnByZXZfcGMpKQotKwl7Ci0rCSAgaWYgKGItPnR5cGUgPT0gYnBfc2hsaWJfZXZlbnQpCi0rCSAg ICBhcmctPnNobGliX2JwX2NvdW50Kys7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICBhcmct Pm90aGVyX2JwX2NvdW50Kys7Ci0rCSAgICAgIHJldHVybiAxOyAvKiBxdWljayBleGl0ICovCi0r CSAgICB9Ci0rCX0KLSsgICAgfQotKwotKyAgcmV0dXJuIDA7IC8qIGNhcnJ5IG9uIGxvb2tpbmcg Ki8KLSt9Ci0rCi0rLyogTm9uemVybyBpZiB0aGUgbG9jYXRpb24gc3RvcG9lZCBhdCBpcyB0aGUg c2hsaWIgZXZlbnQgYnJlYWtwb2ludC4gICovCi0rCi0rc3RhdGljIGludAotK2F0X3NvbGliX2V2 ZW50X2JyZWFrcG9pbnQgKHN0cnVjdCBleGVjdXRpb25fY29udHJvbF9zdGF0ZSAqZWNzKQotK3sK LSsgIHN0cnVjdCBzb2xpYl9ldmVudF9icmVha3BvaW50X2hlbHBlcl9hcmcgYXJnOwotKyAgYXJn LnByZXZfcGMgPSBlY3MtPmV2ZW50X3RocmVhZC0+cHJldl9wYzsKLSsgIGFyZy5zaGxpYl9icF9j b3VudCA9IGFyZy5vdGhlcl9icF9jb3VudCA9IDA7Ci0rCi0rICBpdGVyYXRlX292ZXJfYnJlYWtw b2ludHMgKGF0X3NvbGliX2V2ZW50X2JyZWFrcG9pbnRfaGVscGVyLCAmYXJnKTsKLSsKLSsgIHJl dHVybiBhcmcuc2hsaWJfYnBfY291bnQgJiYgIWFyZy5vdGhlcl9icF9jb3VudDsKLSt9Ci0rCi0g LyogR2l2ZW4gYW4gZXhlY3V0aW9uIGNvbnRyb2wgc3RhdGUgdGhhdCBoYXMgYmVlbiBmcmVzaGx5 IGZpbGxlZCBpbgotICAgIGJ5IGFuIGV2ZW50IGZyb20gdGhlIGluZmVyaW9yLCBmaWd1cmUgb3V0 IHdoYXQgaXQgbWVhbnMgYW5kIHRha2UKLSAgICBhcHByb3ByaWF0ZSBhY3Rpb24uICAqLwotQEAg LTM5NjQsMTEgKzQwMTQsMjMgQEAgaGFuZGxlX2luZmVyaW9yX2V2ZW50IChzdHJ1Y3QgZXhlY3V0 aW9uX2NvbnRyb2xfc3RhdGUgKmVjcykKLSAgIGVjcy0+cmFuZG9tX3NpZ25hbCA9IDA7Ci0gICBz dG9wcGVkX2J5X3JhbmRvbV9zaWduYWwgPSAwOwotIAotLSAgLyogSGlkZSBpbmxpbmVkIGZ1bmN0 aW9ucyBzdGFydGluZyBoZXJlLCB1bmxlc3Mgd2UganVzdCBwZXJmb3JtZWQgc3RlcGkgb3IKLS0g ICAgIG5leHRpLiAgQWZ0ZXIgc3RlcGkgYW5kIG5leHRpLCBhbHdheXMgc2hvdyB0aGUgaW5uZXJt b3N0IGZyYW1lIChub3QgYW55Ci0tICAgICBpbmxpbmUgZnVuY3Rpb24gY2FsbCBzaXRlcykuICAq LwotLSAgaWYgKGVjcy0+ZXZlbnRfdGhyZWFkLT5jb250cm9sLnN0ZXBfcmFuZ2VfZW5kICE9IDEp Ci0tICAgIHNraXBfaW5saW5lX2ZyYW1lcyAoZWNzLT5wdGlkKTsKLSsgIC8qIElmIHdlIGhhdmUg c3RvcHBlZCBhdCB0aGUgc29saWIgZXZlbnQgYnJlYWtwb2ludCBhbmQKLSsgICAgIHN0b3Bfb25f c29saWJfZXZlbnRzIGlzIG5vdCBzZXQgdGhlbiB3ZSBjYW4gYXZvaWQgY2FsbGluZwotKyAgICAg YW55dGhpbmcgdGhhdCBjYWxscyBmaW5kX3BjX3NlY3Rpb24uICBUaGlzIHNhdmVzIGEgbG90Ci0r ICAgICBvZiB0aW1lIHdoZW4gdGhlIGluZmVyaW9yIGxvYWRzIGEgbG90IG9mIHNoYXJlZCBsaWJy YXJpZXMsCi0rICAgICBiZWNhdXNlIG90aGVyd2lzZSB0aGUgc2VjdGlvbiBtYXAgZ2V0cyByZWdl bmVyYXRlZCBldmVyeQotKyAgICAgdGltZSB3ZSBzdG9wLiAgKi8KLSsgIGlmIChzdG9wX29uX3Nv bGliX2V2ZW50cwotKyAgICAgIHx8IGVjcy0+ZXZlbnRfdGhyZWFkLT5zdXNwZW5kLnN0b3Bfc2ln bmFsICE9IFRBUkdFVF9TSUdOQUxfVFJBUAotKyAgICAgIHx8IHN0b3BfYWZ0ZXJfdHJhcAotKyAg ICAgIHx8ICFhdF9zb2xpYl9ldmVudF9icmVha3BvaW50IChlY3MpKQotKyAgICB7Ci0rICAgICAg LyogSGlkZSBpbmxpbmVkIGZ1bmN0aW9ucyBzdGFydGluZyBoZXJlLCB1bmxlc3Mgd2UganVzdAot KwkgcGVyZm9ybWVkIHN0ZXBpIG9yIG5leHRpLiAgQWZ0ZXIgc3RlcGkgYW5kIG5leHRpLCBhbHdh eXMgc2hvdwotKwkgdGhlIGlubmVybW9zdCBmcmFtZSAobm90IGFueSBpbmxpbmUgZnVuY3Rpb24g Y2FsbCBzaXRlcykuICAqLwotKyAgICAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJvbC5z dGVwX3JhbmdlX2VuZCAhPSAxKQotKwlza2lwX2lubGluZV9mcmFtZXMgKGVjcy0+cHRpZCk7Ci0r ICAgIH0KLSAKLSAgIGlmIChlY3MtPmV2ZW50X3RocmVhZC0+c3VzcGVuZC5zdG9wX3NpZ25hbCA9 PSBUQVJHRVRfU0lHTkFMX1RSQVAKLSAgICAgICAmJiBlY3MtPmV2ZW50X3RocmVhZC0+Y29udHJv bC50cmFwX2V4cGVjdGVkCgpkaWZmIC0tZ2l0IGEvZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9sb2d1ZS5w YXRjaCBiL2dkYi1nY2M0Ni1zdGRhcmctcHJvbG9ndWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IGQwZjMxOGUuLjAwMDAwMDAKLS0tIGEvZ2RiLWdjYzQ2LXN0ZGFyZy1wcm9s b2d1ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1NSArMCwwIEBACi1odHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNy9tc2cwMDY0NS5odG1sCi1TdWJqZWN0OiBb cGF0Y2hdIHdvcmthcm91bmQgZ2NjNDY6IHByb2xvZ3VlIHNraXAgc2tpcHMgdG9vIGZhciAoUFIg MTI0MzUpICMyCi0KLUhpLAotCi10aGlzIGlzIGFuIGltcHJvdmVkIHBhdGNoIG9mIGEgZm9ybWVy OgotCVtwYXRjaF0gd29ya2Fyb3VuZCBnY2M0NjogcHJvbG9ndWUgc2tpcCBza2lwcyB0b28gZmFy IChQUiAxMjQzNSkKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0w My9tc2cwMTEwOC5odG1sCi0JY2FuY2VsL0ZZSTogUmU6IFtwYXRjaF0gd29ya2Fyb3VuZCBnY2M0 NjogcHJvbG9ndWUgc2tpcCBza2lwcyB0b28gZmFyIChQUiAxMjQzNSkKLQlodHRwOi8vc291cmNl d2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wMy9tc2cwMTEyMy5odG1sCi0KLUZvciBleGFt cGxlIGBicmVhayBlcnJvcicgZG9lcyBub3Qgd29yayBmb3IgZGVidWdnaW5nIEdEQiB3aXRoIGdj Yy00LjYueC4KLQotQXMgZ2NjLTQuNi4wIGFuZCBub3cgZXZlbiA0LjYuMSBzdGlsbCBoYXMgdGhp cyBidWcgYW5kIEkgaGF2ZSBzZWVuIGEgdXNlcihzPykKLW9uIG5vbi1GZWRvcmEgcGxhdGZvcm0g YXNraW5nIGFib3V0IHRoaXMgYnVnIGFuZCBhcyB0aGVyZSBtYXkgYmUgZW5vdWdoCi1iaW5hcmll cyBvdXQgdGhlcmUgKGFsdGhvdWdoIGl0IGFmZmVjdHMgb25seSAtTzAgLWcgY29tcGlsYXRpb24p IGNvZGVkIGl0Ci1wcm9wZXJseSBJIGhhdmUgY29kZWQgdGhlIHdvcmthcm91bmQgcHJvcGVybHkg dGhpcyB0aW1lLgotCi1JdCBkb2VzIG5vdCBzb2x2ZSBvdmVybGF5cyB3ZWxsLCBidXQgdGhlIGNv ZGUganVzdCBkb2VzIG5vdCB3b3JrIGZvciBvdmVybGF5cywKLWl0IGhhcyBubyBvdGhlciBuZWdh dGl2ZSBlZmZlY3QuCi0KLUkgd2lsbCB1cGRhdGUgdGhlIGNvZGUgYWZ0ZXIgRlNGIGdjYyBnZXRz IGZpeGVkIHRvIG1pbmltaXplIHRoZSB3b3JrYXJvdW5kLgotCi1ObyByZWdyZXNzaW9ucyBvbiB7 eDg2XzY0LHg4Nl82NC1tMzIsaTY4Nn0tZmVkb3JhMTZwcmUtbGludXgtZ251LgotCi1JIHdvdWxk IHdlbGNvbWUgYSBjb21tZW50IHdoZXRoZXIgaXQgaXMgc3VpdGFibGUgZm9yIEZTRiBHREIuCi0K LQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAxMS0wNy0yMiAgSmFuIEtyYXRvY2h2aWwgIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0JUFIgYnJlYWtwb2ludHMvMTI0MzUKLQkqIGFt ZDY0LXRkZXAuYyAoYW1kNjRfc2tpcF9wcm9sb2d1ZSk6IE5ldyB2YXJpYWJsZXMgc3RhcnRfcGNf c2FsLAotCW5leHRfc2FsLCBidWYsIG9mZnNldCBhbmQgeG1tcmVnLiAgQWR2YW5jZSBQQyBpZiBp dCBzZWVzIHRoZSBQUi4KLQkqIGR3YXJmMnJlYWQuYyAocHJvY2Vzc19mdWxsX2NvbXBfdW5pdCk6 IEluaXRpYWxpemUKLQlhbWQ2NF9wcm9sb2d1ZV9saW5lX2J1Zy4KLQkqIHN5bXRhYi5oIChzdHJ1 Y3Qgc3ltdGFiKTogTmV3IGZpZWxkIGFtZDY0X3Byb2xvZ3VlX2xpbmVfYnVnLgotCi1nZGIvdGVz dHN1aXRlLwotMjAxMS0wNy0yMiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JUFIgYnJlYWtwb2ludHMvMTI0MzUKLQkqIGdkYi5hcmNoL2FtZDY0LXByb2xv Z3VlLXhtbS5jOiBOZXcgZmlsZS4KLQkqIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5leHA6 IE5ldyBmaWxlLgotCSogZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLnM6IE5ldyBmaWxlLgot Ci0tLS0gYS9nZGIvYW1kNjQtdGRlcC5jCi0rKysgYi9nZGIvYW1kNjQtdGRlcC5jCi1AQCAtMTkw Miw2ICsxOTAyLDkgQEAgYW1kNjRfc2tpcF9wcm9sb2d1ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFy Y2gsIENPUkVfQUREUiBzdGFydF9wYykKLSB7Ci0gICBzdHJ1Y3QgYW1kNjRfZnJhbWVfY2FjaGUg Y2FjaGU7Ci0gICBDT1JFX0FERFIgcGM7Ci0rICBzdHJ1Y3Qgc3ltdGFiX2FuZF9saW5lIHN0YXJ0 X3BjX3NhbCwgbmV4dF9zYWw7Ci0rICBnZGJfYnl0ZSBidWZbNCArIDggKiA3XTsKLSsgIGludCBv ZmZzZXQsIHhtbXJlZzsKLSAKLSAgIGFtZDY0X2luaXRfZnJhbWVfY2FjaGUgKCZjYWNoZSk7Ci0g ICBwYyA9IGFtZDY0X2FuYWx5emVfcHJvbG9ndWUgKGdkYmFyY2gsIHN0YXJ0X3BjLCAweGZmZmZm ZmZmZmZmZmZmZmZMTCwKLUBAIC0xOTA5LDcgKzE5MTIsNzEgQEAgYW1kNjRfc2tpcF9wcm9sb2d1 ZSAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIENPUkVfQUREUiBzdGFydF9wYykKLSAgIGlmIChj YWNoZS5mcmFtZWxlc3NfcCkKLSAgICAgcmV0dXJuIHN0YXJ0X3BjOwotIAotLSAgcmV0dXJuIHBj OwotKyAgLyogR0NDIFBSIGRlYnVnLzQ4ODI3IHByb2R1Y2VkIGZhbHNlIHByb2xvZ3VlIGVuZDoK LSsgICAgIDg0IGMwICAgICAgICAgICAgICAgIHRlc3QgICAlYWwsJWFsCi0rICAgICA3NCAyMyAg ICAgICAgICAgICAgICBqZSAgICAgYWZ0ZXIKLSsgICAgIDwtLSBoZXJlIGlzIDAgbGluZXMgYWR2 YW5jZSAtIHRoZSBmYWxzZSBwcm9sb2d1ZSBlbmQgbWFya2VyLgotKyAgICAgMGYgMjkgODUgNzAg ZmYgZmYgZmYgbW92YXBzICV4bW0wLC0weDkwKCVyYnApCi0rICAgICAwZiAyOSA0ZCA4MCAgICAg ICAgICBtb3ZhcHMgJXhtbTEsLTB4ODAoJXJicCkKLSsgICAgIDBmIDI5IDU1IDkwICAgICAgICAg IG1vdmFwcyAleG1tMiwtMHg3MCglcmJwKQotKyAgICAgMGYgMjkgNWQgYTAgICAgICAgICAgbW92 YXBzICV4bW0zLC0weDYwKCVyYnApCi0rICAgICAwZiAyOSA2NSBiMCAgICAgICAgICBtb3ZhcHMg JXhtbTQsLTB4NTAoJXJicCkKLSsgICAgIDBmIDI5IDZkIGMwICAgICAgICAgIG1vdmFwcyAleG1t NSwtMHg0MCglcmJwKQotKyAgICAgMGYgMjkgNzUgZDAgICAgICAgICAgbW92YXBzICV4bW02LC0w eDMwKCVyYnApCi0rICAgICAwZiAyOSA3ZCBlMCAgICAgICAgICBtb3ZhcHMgJXhtbTcsLTB4MjAo JXJicCkKLSsgICAgIGFmdGVyOiAgKi8KLSsKLSsgIGlmIChwYyA9PSBzdGFydF9wYykKLSsgICAg cmV0dXJuIHBjOwotKwotKyAgc3RhcnRfcGNfc2FsID0gZmluZF9wY19zZWN0X2xpbmUgKHN0YXJ0 X3BjLCBOVUxMLCAwKTsKLSsgIGlmIChzdGFydF9wY19zYWwuc3ltdGFiID09IE5VTEwKLSsgICAg ICB8fCAhc3RhcnRfcGNfc2FsLnN5bXRhYi0+YW1kNjRfcHJvbG9ndWVfbGluZV9idWcKLSsgICAg ICB8fCBzdGFydF9wY19zYWwucGMgIT0gc3RhcnRfcGMgfHwgcGMgPj0gc3RhcnRfcGNfc2FsLmVu ZCkKLSsgICAgcmV0dXJuIHBjOwotKwotKyAgbmV4dF9zYWwgPSBmaW5kX3BjX3NlY3RfbGluZSAo c3RhcnRfcGNfc2FsLmVuZCwgTlVMTCwgMCk7Ci0rICBpZiAobmV4dF9zYWwubGluZSAhPSBzdGFy dF9wY19zYWwubGluZSkKLSsgICAgcmV0dXJuIHBjOwotKwotKyAgLyogU1RBUlRfUEMgY2FuIGJl IGZyb20gb3ZlcmxheWVkIG1lbW9yeSwgaWdub3JlZCBoZXJlLiAgKi8KLSsgIGlmICh0YXJnZXRf cmVhZF9tZW1vcnkgKG5leHRfc2FsLnBjIC0gNCwgYnVmLCBzaXplb2YgKGJ1ZikpICE9IDApCi0r ICAgIHJldHVybiBwYzsKLSsKLSsgIC8qIHRlc3QgJWFsLCVhbCAqLwotKyAgaWYgKGJ1ZlswXSAh PSAweDg0IHx8IGJ1ZlsxXSAhPSAweGMwKQotKyAgICByZXR1cm4gcGM7Ci0rICAvKiBqZSBBRlRF UiAqLwotKyAgaWYgKGJ1ZlsyXSAhPSAweDc0KQotKyAgICByZXR1cm4gcGM7Ci0rCi0rICBvZmZz ZXQgPSA0OwotKyAgZm9yICh4bW1yZWcgPSAwOyB4bW1yZWcgPCA4OyB4bW1yZWcrKykKLSsgICAg ewotKyAgICAgIC8qIG1vdmFwcyAleG1tcmVnPywtMHg/PyglcmJwKSAqLwotKyAgICAgIGlmIChi dWZbb2Zmc2V0XSAhPSAweDBmIHx8IGJ1ZltvZmZzZXQgKyAxXSAhPSAweDI5Ci0rICAgICAgICAg IHx8IChidWZbb2Zmc2V0ICsgMl0gJiAwYjAwMTExMTExKSAhPSAoeG1tcmVnIDw8IDMgfCAwYjEw MSkpCi0rCXJldHVybiBwYzsKLSsKLSsgICAgICBpZiAoKGJ1ZltvZmZzZXQgKyAyXSAmIDBiMTEw MDAwMDApID09IDBiMDEwMDAwMDApCi0rCXsKLSsJICAvKiA4LWJpdCBkaXNwbGFjZW1lbnQuICAq LwotKwkgIG9mZnNldCArPSA0OwotKwl9Ci0rICAgICAgZWxzZSBpZiAoKGJ1ZltvZmZzZXQgKyAy XSAmIDBiMTEwMDAwMDApID09IDBiMTAwMDAwMDApCi0rCXsKLSsJICAvKiAzMi1iaXQgZGlzcGxh Y2VtZW50LiAgKi8KLSsJICBvZmZzZXQgKz0gNzsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJu IHBjOwotKyAgICB9Ci0rCi0rICAvKiBqZSBBRlRFUiAqLwotKyAgaWYgKG9mZnNldCAtIDQgIT0g YnVmWzNdKQotKyAgICByZXR1cm4gcGM7Ci0rCi0rICByZXR1cm4gbmV4dF9zYWwuZW5kOwotIH0K LSAMCi0gCi0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIvZHdhcmYycmVhZC5jCi1A QCAtNDgxOCw2ICs0ODE4LDkgQEAgcHJvY2Vzc19mdWxsX2NvbXBfdW5pdCAoc3RydWN0IGR3YXJm Ml9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIAotICAgICAgIGlmIChnY2NfNF9taW5vciA+PSA1KQot IAlzeW10YWItPmVwaWxvZ3VlX3Vud2luZF92YWxpZCA9IDE7Ci0rCi0rICAgICAgaWYgKGdjY180 X21pbm9yID49IDYpCi0rCXN5bXRhYi0+YW1kNjRfcHJvbG9ndWVfbGluZV9idWcgPSAxOwotICAg ICB9Ci0gCi0gICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT51c2luZ19pbmRleCkKLS0tLSBhL2dk Yi9zeW10YWIuaAotKysrIGIvZ2RiL3N5bXRhYi5oCi1AQCAtNzg0LDYgKzc4NCwxMSBAQCBzdHJ1 Y3Qgc3ltdGFiCi0gCi0gICB1bnNpZ25lZCBpbnQgZXBpbG9ndWVfdW53aW5kX3ZhbGlkIDogMTsK LSAKLSsgIC8qIEF0IGxlYXN0IEdDQyA0LjYuMCBhbmQgNC42LjEgY2FuIHByb2R1Y2UgaW52YWxp ZCBmYWxzZSBwcm9sb2d1ZSBhbmQgbWFya2VyCi0rICAgICBvbiBhbWQ2NC4gIFRoaXMgZmxhZyBp cyBzZXQgaW5kZXBlbmRlbnRseSBvZiB0aGUgc3ltdGFiIGFyY2guICAqLwotKwotKyAgdW5zaWdu ZWQgYW1kNjRfcHJvbG9ndWVfbGluZV9idWcgOiAxOwotKwotICAgLyogVGhlIG1hY3JvIHRhYmxl IGZvciB0aGlzIHN5bXRhYi4gIExpa2UgdGhlIGJsb2NrdmVjdG9yLCB0aGlzCi0gICAgICBtYXkg YmUgc2hhcmVkIGJldHdlZW4gZGlmZmVyZW50IHN5bXRhYnMgLS0tIGFuZCBub3JtYWxseSBpcyBm b3IKLSAgICAgIGFsbCB0aGUgc3ltdGFicyBpbiBhIGdpdmVuIGNvbXBpbGF0aW9uIHVuaXQuICAq LwotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1wcm9s b2d1ZS14bW0uYwotQEAgLTAsMCArMSwzOCBAQAotKy8qIFRoaXMgdGVzdGNhc2UgaXMgcGFydCBv ZiBHREIsIHRoZSBHTlUgZGVidWdnZXIuCi0rCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdh cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K LSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3 aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNT IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNl aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcg d2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uICAqLwotKwotK3N0YXRpYyB2b2xhdGlsZSBpbnQgdiwgZmFpbDsKLSsKLStzdGF0aWMg dm9pZAotK2Z1bmMgKGludCBpLCAuLi4pCi0rewotKyAgdiA9IGk7Ci0rfQotKwotK3N0YXRpYyB2 b2lkCi0rbWFya2VyICh2b2lkKQotK3sKLSt9Ci0rCi0raW50Ci0rbWFpbiAodm9pZCkKLSt7Ci0r ICBmdW5jICgxKTsKLSsgIGZhaWwgPSAxOwotKyAgbWFya2VyICgpOwotKyAgcmV0dXJuIDA7Ci0r fQotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXJjaC9hbWQ2NC1wcm9s b2d1ZS14bW0uZXhwCi1AQCAtMCwwICsxLDQ2IEBACi0rIyBDb3B5cmlnaHQgMjAxMSBGcmVlIFNv ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyMgaXQgdW5kZXIg dGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQg YnkKLSsjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2Yg dGhlIExpY2Vuc2UsIG9yCi0rIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgot KyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdp bGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsjIEdOVSBHZW5lcmFsIFB1YmxpYyBM aWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVk IGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjIGFsb25nIHdpdGgg dGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+ LgotKwotKyMgVGVzdCBHQ0MgUFIgZGVidWcvNDg4Mjcgd29ya2Fyb3VuZCBpbiBHREIuCi0rCi0r c2V0IHRlc3RmaWxlICJhbWQ2NC1wcm9sb2d1ZS14bW0iCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0ucwotK3NldCBjc3JjZmlsZSAke3Rlc3RmaWxlfS5jCi0rc2V0IGJpbmZpbGUgJHtvYmpkaXJ9 LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfS54Ci0rc2V0IG9wdHMge30KLSsKLStpZiBbaW5mbyBleGlz dHMgQ09NUElMRV0gewotKyAgICAjIG1ha2UgY2hlY2sgUlVOVEVTVEZMQUdTPSdnZGIuYXJjaC9h bWQ2NC1wcm9sb2d1ZS14bW0uZXhwIENPTVBJTEU9MScKLSsgICAgc2V0IHNyY2ZpbGUgJHtjc3Jj ZmlsZX0KLSsgICAgbGFwcGVuZCBvcHRzIGRlYnVnIG9wdGltaXplPS1PMAotK30gZWxzZWlmIHsg IVtpc3RhcmdldCB4ODZfNjQtKi0qIF0gfHwgIVtpc19scDY0X3RhcmdldF0gfSB7Ci0rICAgIHZl cmJvc2UgIlNraXBwaW5nIGFtZDY0LXByb2xvZ3VlLXhtbSB0ZXN0LiIKLSsgICAgcmV0dXJuIDAK LSt9Ci0rCi0raWYge1twcmVwYXJlX2Zvcl90ZXN0aW5nICR7dGVzdGZpbGV9LmV4cCAke3Rlc3Rm aWxlfSAkc3JjZmlsZSAkb3B0c119IHsKLSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2lmICFbcnVu dG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rZ2RiX2JyZWFrcG9pbnQgImZ1bmMi Ci0rZ2RiX2JyZWFrcG9pbnQgIm1hcmtlciIKLSsKLStnZGJfY29udGludWVfdG9fYnJlYWtwb2lu dCAiZnVuYyIKLSsKLStnZGJfdGVzdCAicCBmYWlsIiAiID0gMCIgInN0b3BwZWQgYXQgZnVuYyIK LS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFyY2gvYW1kNjQtcHJvbG9n dWUteG1tLnMKLUBAIC0wLDAgKzEsNDAwIEBACi0rLyogVGhpcyB0ZXN0Y2FzZSBpcyBwYXJ0IG9m IEdEQiwgdGhlIEdOVSBkZWJ1Z2dlci4KLSsgICAgICAJCi0rICAgQ29weXJpZ2h0IDIwMTEgRnJl ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUg c29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsgICBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy c2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhh dCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBG SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLSsgICBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2 ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rICAg YWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3Jn L2xpY2Vuc2VzLz4uICAqLwotKyAgICAgIAkKLSsvKiBUaGlzIGZpbGUgaXMgY29tcGlsZWQgZnJv bSBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYwotKyAgIHVzaW5nIC1nIC1kQSAtUy4gICov Ci0rCi0rCS5maWxlCSJhbWQ2NC1wcm9sb2d1ZS14bW0uYyIKLSsJLnRleHQKLSsuTHRleHQwOgot KwkubG9jYWwJdgotKwkuY29tbQl2LDQsNAotKwkubG9jYWwJZmFpbAotKwkuY29tbQlmYWlsLDQs NAotKwkudHlwZQlmdW5jLCBAZnVuY3Rpb24KLStmdW5jOgotKy5MRkIwOgotKwkuZmlsZSAxICJn ZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYyIKLSsJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1 ZS14bW0uYzoyMgotKwkubG9jIDEgMjIgMAotKwkuY2ZpX3N0YXJ0cHJvYwotKwkjIGJhc2ljIGJs b2NrIDIKLSsJcHVzaHEJJXJicAotKwkuY2ZpX2RlZl9jZmFfb2Zmc2V0IDE2Ci0rCS5jZmlfb2Zm c2V0IDYsIC0xNgotKwltb3ZxCSVyc3AsICVyYnAKLSsJLmNmaV9kZWZfY2ZhX3JlZ2lzdGVyIDYK LSsJc3VicQkkNzIsICVyc3AKLSsJbW92cQklcnNpLCAtMTY4KCVyYnApCi0rCW1vdnEJJXJkeCwg LTE2MCglcmJwKQotKwltb3ZxCSVyY3gsIC0xNTIoJXJicCkKLSsJbW92cQklcjgsIC0xNDQoJXJi cCkKLSsJbW92cQklcjksIC0xMzYoJXJicCkKLSsJdGVzdGIJJWFsLCAlYWwKLSsJamUJLkwyCi0r CSMgYmFzaWMgYmxvY2sgMwotKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjIyCi0r CS5sb2MgMSAyMiAwCi0rCW1vdmFwcwkleG1tMCwgLTEyOCglcmJwKQotKwltb3ZhcHMJJXhtbTEs IC0xMTIoJXJicCkKLSsJbW92YXBzCSV4bW0yLCAtOTYoJXJicCkKLSsJbW92YXBzCSV4bW0zLCAt ODAoJXJicCkKLSsJbW92YXBzCSV4bW00LCAtNjQoJXJicCkKLSsJbW92YXBzCSV4bW01LCAtNDgo JXJicCkKLSsJbW92YXBzCSV4bW02LCAtMzIoJXJicCkKLSsJbW92YXBzCSV4bW03LCAtMTYoJXJi cCkKLSsuTDI6Ci0rCSMgYmFzaWMgYmxvY2sgNAotKwltb3ZsCSVlZGksIC0xODAoJXJicCkKLSsJ IyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzoyMwotKwkubG9jIDEgMjMgMAotKwltb3Zs CS0xODAoJXJicCksICVlYXgKLSsJbW92bAklZWF4LCB2KCVyaXApCi0rCSMgZ2RiLmFyY2gvYW1k NjQtcHJvbG9ndWUteG1tLmM6MjQKLSsJLmxvYyAxIDI0IDAKLSsJbGVhdmUKLSsJLmNmaV9kZWZf Y2ZhIDcsIDgKLSsJcmV0Ci0rCS5jZmlfZW5kcHJvYwotKy5MRkUwOgotKwkuc2l6ZQlmdW5jLCAu LWZ1bmMKLSsJLnR5cGUJbWFya2VyLCBAZnVuY3Rpb24KLSttYXJrZXI6Ci0rLkxGQjE6Ci0rCSMg Z2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MjgKLSsJLmxvYyAxIDI4IDAKLSsJLmNmaV9z dGFydHByb2MKLSsJIyBiYXNpYyBibG9jayAyCi0rCXB1c2hxCSVyYnAKLSsJLmNmaV9kZWZfY2Zh X29mZnNldCAxNgotKwkuY2ZpX29mZnNldCA2LCAtMTYKLSsJbW92cQklcnNwLCAlcmJwCi0rCS5j ZmlfZGVmX2NmYV9yZWdpc3RlciA2Ci0rCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6 MjkKLSsJLmxvYyAxIDI5IDAKLSsJcG9wcQklcmJwCi0rCS5jZmlfZGVmX2NmYSA3LCA4Ci0rCXJl dAotKwkuY2ZpX2VuZHByb2MKLSsuTEZFMToKLSsJLnNpemUJbWFya2VyLCAuLW1hcmtlcgotKwku Z2xvYmwJbWFpbgotKwkudHlwZQltYWluLCBAZnVuY3Rpb24KLSttYWluOgotKy5MRkIyOgotKwkj IGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jOjMzCi0rCS5sb2MgMSAzMyAwCi0rCS5jZmlf c3RhcnRwcm9jCi0rCSMgYmFzaWMgYmxvY2sgMgotKwlwdXNocQklcmJwCi0rCS5jZmlfZGVmX2Nm YV9vZmZzZXQgMTYKLSsJLmNmaV9vZmZzZXQgNiwgLTE2Ci0rCW1vdnEJJXJzcCwgJXJicAotKwku Y2ZpX2RlZl9jZmFfcmVnaXN0ZXIgNgotKwkjIGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5j OjM0Ci0rCS5sb2MgMSAzNCAwCi0rCW1vdmwJJDEsICVlZGkKLSsJbW92bAkkMCwgJWVheAotKwlj YWxsCWZ1bmMKLSsJIyBnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYzozNQotKwkubG9jIDEg MzUgMAotKwltb3ZsCSQxLCBmYWlsKCVyaXApCi0rCSMgZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUt eG1tLmM6MzYKLSsJLmxvYyAxIDM2IDAKLSsJY2FsbAltYXJrZXIKLSsJIyBnZGIuYXJjaC9hbWQ2 NC1wcm9sb2d1ZS14bW0uYzozNwotKwkubG9jIDEgMzcgMAotKwltb3ZsCSQwLCAlZWF4Ci0rCSMg Z2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmM6MzgKLSsJLmxvYyAxIDM4IDAKLSsJcG9wcQkl cmJwCi0rCS5jZmlfZGVmX2NmYSA3LCA4Ci0rCXJldAotKwkuY2ZpX2VuZHByb2MKLSsuTEZFMjoK LSsJLnNpemUJbWFpbiwgLi1tYWluCi0rLkxldGV4dDA6Ci0rCS5zZWN0aW9uCS5kZWJ1Z19pbmZv LCIiLEBwcm9nYml0cwotKy5MZGVidWdfaW5mbzA6Ci0rCS5sb25nCTB4YzAJIyBMZW5ndGggb2Yg Q29tcGlsYXRpb24gVW5pdCBJbmZvCi0rCS52YWx1ZQkweDQJIyBEV0FSRiB2ZXJzaW9uIG51bWJl cgotKwkubG9uZwkuTGRlYnVnX2FiYnJldjAJIyBPZmZzZXQgSW50byBBYmJyZXYuIFNlY3Rpb24K LSsJLmJ5dGUJMHg4CSMgUG9pbnRlciBTaXplIChpbiBieXRlcykKLSsJLnVsZWIxMjggMHgxCSMg KERJRSAoMHhiKSBEV19UQUdfY29tcGlsZV91bml0KQotKwkubG9uZwkuTEFTRjEJIyBEV19BVF9w cm9kdWNlcjogIkdOVSBDIDQuNi4xIDIwMTEwNzE1IChSZWQgSGF0IDQuNi4xLTMpIgotKwkuYnl0 ZQkweDEJIyBEV19BVF9sYW5ndWFnZQotKwkubG9uZwkuTEFTRjIJIyBEV19BVF9uYW1lOiAiZ2Ri LmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMiCi0rCS5sb25nCS5MQVNGMwkjIERXX0FUX2NvbXBf ZGlyOiAiIgotKwkucXVhZAkuTHRleHQwCSMgRFdfQVRfbG93X3BjCi0rCS5xdWFkCS5MZXRleHQw CSMgRFdfQVRfaGlnaF9wYwotKwkubG9uZwkuTGRlYnVnX2xpbmUwCSMgRFdfQVRfc3RtdF9saXN0 Ci0rCS51bGViMTI4IDB4MgkjIChESUUgKDB4MmQpIERXX1RBR19zdWJwcm9ncmFtKQotKwkubG9u ZwkuTEFTRjQJIyBEV19BVF9uYW1lOiAiZnVuYyIKLSsJLmJ5dGUJMHgxCSMgRFdfQVRfZGVjbF9m aWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKLSsJLmJ5dGUJMHgxNQkjIERXX0FU X2RlY2xfbGluZQotKwkJCSMgRFdfQVRfcHJvdG90eXBlZAotKwkucXVhZAkuTEZCMAkjIERXX0FU X2xvd19wYwotKwkucXVhZAkuTEZFMAkjIERXX0FUX2hpZ2hfcGMKLSsJLnVsZWIxMjggMHgxCSMg RFdfQVRfZnJhbWVfYmFzZQotKwkuYnl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJ CQkjIERXX0FUX0dOVV9hbGxfY2FsbF9zaXRlcwotKwkubG9uZwkweDU5CSMgRFdfQVRfc2libGlu ZwotKwkudWxlYjEyOCAweDMJIyAoRElFICgweDRhKSBEV19UQUdfZm9ybWFsX3BhcmFtZXRlcikK LSsJLmFzY2lpICJpXDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNsX2Zp bGUgKGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jKQotKwkuYnl0ZQkweDE1CSMgRFdfQVRf ZGVjbF9saW5lCi0rCS5sb25nCTB4NTkJIyBEV19BVF90eXBlCi0rCS51bGViMTI4IDB4MwkjIERX X0FUX2xvY2F0aW9uCi0rCS5ieXRlCTB4OTEJIyBEV19PUF9mYnJlZwotKwkuc2xlYjEyOCAtMTk2 Ci0rCS51bGViMTI4IDB4NAkjIChESUUgKDB4NTcpIERXX1RBR191bnNwZWNpZmllZF9wYXJhbWV0 ZXJzKQotKwkuYnl0ZQkwCSMgZW5kIG9mIGNoaWxkcmVuIG9mIERJRSAweDJkCi0rCS51bGViMTI4 IDB4NQkjIChESUUgKDB4NTkpIERXX1RBR19iYXNlX3R5cGUpCi0rCS5ieXRlCTB4NAkjIERXX0FU X2J5dGVfc2l6ZQotKwkuYnl0ZQkweDUJIyBEV19BVF9lbmNvZGluZwotKwkuYXNjaWkgImludFww IgkjIERXX0FUX25hbWUKLSsJLnVsZWIxMjggMHg2CSMgKERJRSAoMHg2MCkgRFdfVEFHX3N1YnBy b2dyYW0pCi0rCS5sb25nCS5MQVNGNQkjIERXX0FUX25hbWU6ICJtYXJrZXIiCi0rCS5ieXRlCTB4 MQkjIERXX0FUX2RlY2xfZmlsZSAoZ2RiLmFyY2gvYW1kNjQtcHJvbG9ndWUteG1tLmMpCi0rCS5i eXRlCTB4MWIJIyBEV19BVF9kZWNsX2xpbmUKLSsJCQkjIERXX0FUX3Byb3RvdHlwZWQKLSsJLnF1 YWQJLkxGQjEJIyBEV19BVF9sb3dfcGMKLSsJLnF1YWQJLkxGRTEJIyBEV19BVF9oaWdoX3BjCi0r CS51bGViMTI4IDB4MQkjIERXX0FUX2ZyYW1lX2Jhc2UKLSsJLmJ5dGUJMHg5YwkjIERXX09QX2Nh bGxfZnJhbWVfY2ZhCi0rCQkJIyBEV19BVF9HTlVfYWxsX2NhbGxfc2l0ZXMKLSsJLnVsZWIxMjgg MHg3CSMgKERJRSAoMHg3OSkgRFdfVEFHX3N1YnByb2dyYW0pCi0rCQkJIyBEV19BVF9leHRlcm5h bAotKwkubG9uZwkuTEFTRjYJIyBEV19BVF9uYW1lOiAibWFpbiIKLSsJLmJ5dGUJMHgxCSMgRFdf QVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKLSsJLmJ5dGUJMHgy MAkjIERXX0FUX2RlY2xfbGluZQotKwkJCSMgRFdfQVRfcHJvdG90eXBlZAotKwkubG9uZwkweDU5 CSMgRFdfQVRfdHlwZQotKwkucXVhZAkuTEZCMgkjIERXX0FUX2xvd19wYwotKwkucXVhZAkuTEZF MgkjIERXX0FUX2hpZ2hfcGMKLSsJLnVsZWIxMjggMHgxCSMgRFdfQVRfZnJhbWVfYmFzZQotKwku Ynl0ZQkweDljCSMgRFdfT1BfY2FsbF9mcmFtZV9jZmEKLSsJCQkjIERXX0FUX0dOVV9hbGxfdGFp bF9jYWxsX3NpdGVzCi0rCS51bGViMTI4IDB4OAkjIChESUUgKDB4OTYpIERXX1RBR192YXJpYWJs ZSkKLSsJLmFzY2lpICJ2XDAiCSMgRFdfQVRfbmFtZQotKwkuYnl0ZQkweDEJIyBEV19BVF9kZWNs X2ZpbGUgKGdkYi5hcmNoL2FtZDY0LXByb2xvZ3VlLXhtbS5jKQotKwkuYnl0ZQkweDEyCSMgRFdf QVRfZGVjbF9saW5lCi0rCS5sb25nCTB4YTkJIyBEV19BVF90eXBlCi0rCS51bGViMTI4IDB4OQkj IERXX0FUX2xvY2F0aW9uCi0rCS5ieXRlCTB4MwkjIERXX09QX2FkZHIKLSsJLnF1YWQJdgotKwku dWxlYjEyOCAweDkJIyAoRElFICgweGE5KSBEV19UQUdfdm9sYXRpbGVfdHlwZSkKLSsJLmxvbmcJ MHg1OQkjIERXX0FUX3R5cGUKLSsJLnVsZWIxMjggMHhhCSMgKERJRSAoMHhhZSkgRFdfVEFHX3Zh cmlhYmxlKQotKwkubG9uZwkuTEFTRjAJIyBEV19BVF9uYW1lOiAiZmFpbCIKLSsJLmJ5dGUJMHgx CSMgRFdfQVRfZGVjbF9maWxlIChnZGIuYXJjaC9hbWQ2NC1wcm9sb2d1ZS14bW0uYykKLSsJLmJ5 dGUJMHgxMgkjIERXX0FUX2RlY2xfbGluZQotKwkubG9uZwkweGE5CSMgRFdfQVRfdHlwZQotKwku dWxlYjEyOCAweDkJIyBEV19BVF9sb2NhdGlvbgotKwkuYnl0ZQkweDMJIyBEV19PUF9hZGRyCi0r CS5xdWFkCWZhaWwKLSsJLmJ5dGUJMAkjIGVuZCBvZiBjaGlsZHJlbiBvZiBESUUgMHhiCi0rCS5z ZWN0aW9uCS5kZWJ1Z19hYmJyZXYsIiIsQHByb2diaXRzCi0rLkxkZWJ1Z19hYmJyZXYwOgotKwku dWxlYjEyOCAweDEJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTEJIyAoVEFHOiBEV19U QUdfY29tcGlsZV91bml0KQotKwkuYnl0ZQkweDEJIyBEV19jaGlsZHJlbl95ZXMKLSsJLnVsZWIx MjggMHgyNQkjIChEV19BVF9wcm9kdWNlcikKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3Ry cCkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19BVF9sYW5ndWFnZSkKLSsJLnVsZWIxMjggMHhiCSMg KERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQotKwkudWxlYjEy OCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDFiCSMgKERXX0FUX2NvbXBfZGly KQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDExCSMgKERX X0FUX2xvd19wYykKLSsJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjgg MHgxMgkjIChEV19BVF9oaWdoX3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQot KwkudWxlYjEyOCAweDEwCSMgKERXX0FUX3N0bXRfbGlzdCkKLSsJLnVsZWIxMjggMHgxNwkjIChE V19GT1JNX3NlY19vZmZzZXQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDIJ IyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MmUJIyAoVEFHOiBEV19UQUdfc3VicHJvZ3Jh bSkKLSsJLmJ5dGUJMHgxCSMgRFdfY2hpbGRyZW5feWVzCi0rCS51bGViMTI4IDB4MwkjIChEV19B VF9uYW1lKQotKwkudWxlYjEyOCAweGUJIyAoRFdfRk9STV9zdHJwKQotKwkudWxlYjEyOCAweDNh CSMgKERXX0FUX2RlY2xfZmlsZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0r CS51bGViMTI4IDB4M2IJIyAoRFdfQVRfZGVjbF9saW5lKQotKwkudWxlYjEyOCAweGIJIyAoRFdf Rk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgyNwkjIChEV19BVF9wcm90b3R5cGVkKQotKwkudWxl YjEyOCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxlYjEyOCAweDExCSMgKERX X0FUX2xvd19wYykKLSsJLnVsZWIxMjggMHgxCSMgKERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjgg MHgxMgkjIChEV19BVF9oaWdoX3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9hZGRyKQot KwkudWxlYjEyOCAweDQwCSMgKERXX0FUX2ZyYW1lX2Jhc2UpCi0rCS51bGViMTI4IDB4MTgJIyAo RFdfRk9STV9leHBybG9jKQotKwkudWxlYjEyOCAweDIxMTcJIyAoRFdfQVRfR05VX2FsbF9jYWxs X3NpdGVzKQotKwkudWxlYjEyOCAweDE5CSMgKERXX0ZPUk1fZmxhZ19wcmVzZW50KQotKwkudWxl YjEyOCAweDEJIyAoRFdfQVRfc2libGluZykKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3Jl ZjQpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDMJIyAoYWJicmV2IGNvZGUp Ci0rCS51bGViMTI4IDB4NQkjIChUQUc6IERXX1RBR19mb3JtYWxfcGFyYW1ldGVyKQotKwkuYnl0 ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51 bGViMTI4IDB4OAkjIChEV19GT1JNX3N0cmluZykKLSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9k ZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAw eDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVsZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEp Ci0rCS51bGViMTI4IDB4NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19G T1JNX3JlZjQpCi0rCS51bGViMTI4IDB4MgkjIChEV19BVF9sb2NhdGlvbikKLSsJLnVsZWIxMjgg MHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkudWxlYjEy OCAweDQJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4IDB4MTgJIyAoVEFHOiBEV19UQUdfdW5z cGVjaWZpZWRfcGFyYW1ldGVycykKLSsJLmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS5ieXRl CTAKLSsJLmJ5dGUJMAotKwkudWxlYjEyOCAweDUJIyAoYWJicmV2IGNvZGUpCi0rCS51bGViMTI4 IDB4MjQJIyAoVEFHOiBEV19UQUdfYmFzZV90eXBlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRyZW5f bm8KLSsJLnVsZWIxMjggMHhiCSMgKERXX0FUX2J5dGVfc2l6ZSkKLSsJLnVsZWIxMjggMHhiCSMg KERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4M2UJIyAoRFdfQVRfZW5jb2RpbmcpCi0rCS51 bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDMJIyAoRFdfQVRfbmFt ZSkKLSsJLnVsZWIxMjggMHg4CSMgKERXX0ZPUk1fc3RyaW5nKQotKwkuYnl0ZQkwCi0rCS5ieXRl CTAKLSsJLnVsZWIxMjggMHg2CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDJlCSMgKFRB RzogRFdfVEFHX3N1YnByb2dyYW0pCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxl YjEyOCAweDMJIyAoRFdfQVRfbmFtZSkKLSsJLnVsZWIxMjggMHhlCSMgKERXX0ZPUk1fc3RycCkK LSsJLnVsZWIxMjggMHgzYQkjIChEV19BVF9kZWNsX2ZpbGUpCi0rCS51bGViMTI4IDB4YgkjIChE V19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDNiCSMgKERXX0FUX2RlY2xfbGluZSkKLSsJLnVs ZWIxMjggMHhiCSMgKERXX0ZPUk1fZGF0YTEpCi0rCS51bGViMTI4IDB4MjcJIyAoRFdfQVRfcHJv dG90eXBlZCkKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVs ZWIxMjggMHgxMQkjIChEV19BVF9sb3dfcGMpCi0rCS51bGViMTI4IDB4MQkjIChEV19GT1JNX2Fk ZHIpCi0rCS51bGViMTI4IDB4MTIJIyAoRFdfQVRfaGlnaF9wYykKLSsJLnVsZWIxMjggMHgxCSMg KERXX0ZPUk1fYWRkcikKLSsJLnVsZWIxMjggMHg0MAkjIChEV19BVF9mcmFtZV9iYXNlKQotKwku dWxlYjEyOCAweDE4CSMgKERXX0ZPUk1fZXhwcmxvYykKLSsJLnVsZWIxMjggMHgyMTE3CSMgKERX X0FUX0dOVV9hbGxfY2FsbF9zaXRlcykKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdf cHJlc2VudCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4NwkjIChhYmJyZXYg Y29kZSkKLSsJLnVsZWIxMjggMHgyZQkjIChUQUc6IERXX1RBR19zdWJwcm9ncmFtKQotKwkuYnl0 ZQkwCSMgRFdfY2hpbGRyZW5fbm8KLSsJLnVsZWIxMjggMHgzZgkjIChEV19BVF9leHRlcm5hbCkK LSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JNX2ZsYWdfcHJlc2VudCkKLSsJLnVsZWIxMjggMHgz CSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4ZQkjIChEV19GT1JNX3N0cnApCi0rCS51bGVi MTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9k YXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4 YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDI3CSMgKERXX0FUX3Byb3RvdHlwZWQp Ci0rCS51bGViMTI4IDB4MTkJIyAoRFdfRk9STV9mbGFnX3ByZXNlbnQpCi0rCS51bGViMTI4IDB4 NDkJIyAoRFdfQVRfdHlwZSkKLSsJLnVsZWIxMjggMHgxMwkjIChEV19GT1JNX3JlZjQpCi0rCS51 bGViMTI4IDB4MTEJIyAoRFdfQVRfbG93X3BjKQotKwkudWxlYjEyOCAweDEJIyAoRFdfRk9STV9h ZGRyKQotKwkudWxlYjEyOCAweDEyCSMgKERXX0FUX2hpZ2hfcGMpCi0rCS51bGViMTI4IDB4MQkj IChEV19GT1JNX2FkZHIpCi0rCS51bGViMTI4IDB4NDAJIyAoRFdfQVRfZnJhbWVfYmFzZSkKLSsJ LnVsZWIxMjggMHgxOAkjIChEV19GT1JNX2V4cHJsb2MpCi0rCS51bGViMTI4IDB4MjExNgkjIChE V19BVF9HTlVfYWxsX3RhaWxfY2FsbF9zaXRlcykKLSsJLnVsZWIxMjggMHgxOQkjIChEV19GT1JN X2ZsYWdfcHJlc2VudCkKLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCS51bGViMTI4IDB4OAkjIChh YmJyZXYgY29kZSkKLSsJLnVsZWIxMjggMHgzNAkjIChUQUc6IERXX1RBR192YXJpYWJsZSkKLSsJ LmJ5dGUJMAkjIERXX2NoaWxkcmVuX25vCi0rCS51bGViMTI4IDB4MwkjIChEV19BVF9uYW1lKQot KwkudWxlYjEyOCAweDgJIyAoRFdfRk9STV9zdHJpbmcpCi0rCS51bGViMTI4IDB4M2EJIyAoRFdf QVRfZGVjbF9maWxlKQotKwkudWxlYjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIx MjggMHgzYgkjIChEV19BVF9kZWNsX2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2Rh dGExKQotKwkudWxlYjEyOCAweDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAo RFdfRk9STV9yZWY0KQotKwkudWxlYjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGVi MTI4IDB4MTgJIyAoRFdfRk9STV9leHBybG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVs ZWIxMjggMHg5CSMgKGFiYnJldiBjb2RlKQotKwkudWxlYjEyOCAweDM1CSMgKFRBRzogRFdfVEFH X3ZvbGF0aWxlX3R5cGUpCi0rCS5ieXRlCTAJIyBEV19jaGlsZHJlbl9ubwotKwkudWxlYjEyOCAw eDQ5CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwku Ynl0ZQkwCi0rCS5ieXRlCTAKLSsJLnVsZWIxMjggMHhhCSMgKGFiYnJldiBjb2RlKQotKwkudWxl YjEyOCAweDM0CSMgKFRBRzogRFdfVEFHX3ZhcmlhYmxlKQotKwkuYnl0ZQkwCSMgRFdfY2hpbGRy ZW5fbm8KLSsJLnVsZWIxMjggMHgzCSMgKERXX0FUX25hbWUpCi0rCS51bGViMTI4IDB4ZQkjIChE V19GT1JNX3N0cnApCi0rCS51bGViMTI4IDB4M2EJIyAoRFdfQVRfZGVjbF9maWxlKQotKwkudWxl YjEyOCAweGIJIyAoRFdfRk9STV9kYXRhMSkKLSsJLnVsZWIxMjggMHgzYgkjIChEV19BVF9kZWNs X2xpbmUpCi0rCS51bGViMTI4IDB4YgkjIChEV19GT1JNX2RhdGExKQotKwkudWxlYjEyOCAweDQ5 CSMgKERXX0FUX3R5cGUpCi0rCS51bGViMTI4IDB4MTMJIyAoRFdfRk9STV9yZWY0KQotKwkudWxl YjEyOCAweDIJIyAoRFdfQVRfbG9jYXRpb24pCi0rCS51bGViMTI4IDB4MTgJIyAoRFdfRk9STV9l eHBybG9jKQotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwkuc2VjdGlvbgkuZGVi dWdfYXJhbmdlcywiIixAcHJvZ2JpdHMKLSsJLmxvbmcJMHgyYwkjIExlbmd0aCBvZiBBZGRyZXNz IFJhbmdlcyBJbmZvCi0rCS52YWx1ZQkweDIJIyBEV0FSRiBWZXJzaW9uCi0rCS5sb25nCS5MZGVi dWdfaW5mbzAJIyBPZmZzZXQgb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvCi0rCS5ieXRlCTB4OAkj IFNpemUgb2YgQWRkcmVzcwotKwkuYnl0ZQkwCSMgU2l6ZSBvZiBTZWdtZW50IERlc2NyaXB0b3IK LSsJLnZhbHVlCTAJIyBQYWQgdG8gMTYgYnl0ZSBib3VuZGFyeQotKwkudmFsdWUJMAotKwkucXVh ZAkuTHRleHQwCSMgQWRkcmVzcwotKwkucXVhZAkuTGV0ZXh0MC0uTHRleHQwCSMgTGVuZ3RoCi0r CS5xdWFkCTAKLSsJLnF1YWQJMAotKwkuc2VjdGlvbgkuZGVidWdfbGluZSwiIixAcHJvZ2JpdHMK LSsuTGRlYnVnX2xpbmUwOgotKwkuc2VjdGlvbgkuZGVidWdfc3RyLCJNUyIsQHByb2diaXRzLDEK LSsuTEFTRjM6Ci0rCS5zdHJpbmcJIiIKLSsuTEFTRjA6Ci0rCS5zdHJpbmcJImZhaWwiCi0rLkxB U0Y0OgotKwkuc3RyaW5nCSJmdW5jIgotKy5MQVNGMToKLSsJLnN0cmluZwkiR05VIEMgNC42LjEg MjAxMTA3MTUgKFJlZCBIYXQgNC42LjEtMykiCi0rLkxBU0YyOgotKwkuc3RyaW5nCSJnZGIuYXJj aC9hbWQ2NC1wcm9sb2d1ZS14bW0uYyIKLSsuTEFTRjU6Ci0rCS5zdHJpbmcJIm1hcmtlciIKLSsu TEFTRjY6Ci0rCS5zdHJpbmcJIm1haW4iCi0rCS5pZGVudAkiR0NDOiAoR05VKSA0LjYuMSAyMDEx MDcxNSAoUmVkIEhhdCA0LjYuMS0zKSIKLSsJLnNlY3Rpb24JLm5vdGUuR05VLXN0YWNrLCIiLEBw cm9nYml0cwotCgpkaWZmIC0tZ2l0IGEvZ2RiLWdjYzQ3LWdjb3JlLXplcm8ucGF0Y2ggYi9nZGIt Z2NjNDctZ2NvcmUtemVyby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li44OGYwZmYxCi0tLSAvZGV2L251bGwKKysrIGIvZ2RiLWdjYzQ3LWdjb3JlLXplcm8ucGF0Y2gK QEAgLTAsMCArMSwxMTggQEAKK2h0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDEx LTEyL21zZzAwMjk4Lmh0bWwKK1N1YmplY3Q6IFtwYXRjaF0gRml4IHplcm8gcmVnaXN0ZXJzIGNv cmUgZmlsZXMgdy9nY2MtNC43CisKK0hlbGxvIEguSi4sCisKK3RoZXJlIGlzIGEgcmVncmVzc2lv biBieToKKwljb21taXQgMmM5YzU1NjYxN2E3ZGU4NjU3YzI1YjUxMmQyNzJjMjZiMDcwYWUyMgor CUF1dGhvcjogSC5KLiBMdSA8aGpsLnRvb2xzQGdtYWlsLmNvbT4KKwlEYXRlOiAgIFRodSBKdW4g MTYgMjI6MDg6MTAgMjAxMSArMDAwMAorCSAgICBTdXBvcnQgeDMyIGdjb3JlLgorCit3aGVuIGJ1 aWx0IHdpdGggLU8yIGJ5CisJZ2NjIChHQ0MpIDQuNy4wIDIwMTExMjIzIChleHBlcmltZW50YWwp CisJKG5vdCBieSA0LjYueCkKKworYXMgdGhlIGNvZGUgdmlvbGF0ZXMgSVNPIEM5OSA2LjIuNCBp dGVtIDUgYnkgdXNpbmcgbG9jYWwgdmFyaWFibGUgb3V0c2lkZSBvZgoraXRzIGJsb2NrLCBHQ0Mg b3B0aW1pemVzIG91dCB0aGUgc2Vjb25kIG1lbWNweSwga2VlcGluZyB0aGVyZSBvbmx5IHRoYXQK K21lbXNldC4KKworLi9nZGIgLW54IC4vZ2RiIC1leCBzdGFydCAtZXggJ2djb3JlIDEnIC1leCAn c2V0IGNvbmZpcm0gbm8nIC1leCBxO2dkYiAtbnggLi9nZGIgLi8xIC1leCBxCit3aWxsIHByaW50 OgorQ29yZSB3YXMgZ2VuZXJhdGVkIGJ5IGAuLi4vZ2RiL2dkYicuCisjMCAgMHgwMDAwMDAwMDAw MDAwMDAwIGluID8/ICgpCisKK05vIHJlZ3Jlc3Npb25zIG9uIHg4Nl82NC1mZWRvcmExNi1saW51 eC1nbnUuCisKK1Byb2JhYmx5IG9idmlvdXMsIE9LIHRvIGNoZWNrIGl0IGluPworCisKK1RoYW5r cywKK0phbgorCisKK2JmZC8KKzIwMTEtMTItMjMgIEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRv Y2h2aWxAcmVkaGF0LmNvbT4KKworCUZpeCB6ZXJvIHJlZ2lzdGVycyBjb3JlIGZpbGVzIHdoZW4g YnVpbHQgYnkgZ2NjLTQuNy4KKwkqIGVsZjY0LXg4Ni02NC5jIChlbGZfeDg2XzY0X3dyaXRlX2Nv cmVfbm90ZSk6IFJlbW92ZSB2YXJpYWJsZXMgcCBhbmQKKwlzaXplLiAgQ2FsbCBlbGZjb3JlX3dy aXRlX25vdGUgZm9yIHRoZSBsb2NhbCB2YXJpYWJsZXMuICBSZW1vdmUgdGhlCisJZmluYWwgZWxm Y29yZV93cml0ZV9ub3RlIGNhbGwuICBBZGQgTk9UUkVBQ0hFRCBjb21tZW50cy4KKworLS0tIGEv YmZkL2VsZjY0LXg4Ni02NC5jCisrKysgYi9iZmQvZWxmNjQteDg2LTY0LmMKK0BAIC00MjAsOCAr NDIwLDYgQEAgZWxmX3g4Nl82NF93cml0ZV9jb3JlX25vdGUgKGJmZCAqYWJmZCwgY2hhciAqYnVm LCBpbnQgKmJ1ZnNpeiwKKyAJCQkgICAgaW50IG5vdGVfdHlwZSwgLi4uKQorIHsKKyAgIGNvbnN0 IHN0cnVjdCBlbGZfYmFja2VuZF9kYXRhICpiZWQgPSBnZXRfZWxmX2JhY2tlbmRfZGF0YSAoYWJm ZCk7CistICBjb25zdCB2b2lkICpwOworLSAgaW50IHNpemU7CisgICB2YV9saXN0IGFwOworICAg Y29uc3QgY2hhciAqZm5hbWUsICpwc2FyZ3M7CisgICBsb25nIHBpZDsKK0BAIC00NDUsOCArNDQz LDggQEAgZWxmX3g4Nl82NF93cml0ZV9jb3JlX25vdGUgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBp bnQgKmJ1ZnNpeiwKKyAJICBtZW1zZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRhdGEpKTsKKyAJICBz dHJuY3B5IChkYXRhLnByX2ZuYW1lLCBmbmFtZSwgc2l6ZW9mIChkYXRhLnByX2ZuYW1lKSk7Cisg CSAgc3RybmNweSAoZGF0YS5wcl9wc2FyZ3MsIHBzYXJncywgc2l6ZW9mIChkYXRhLnByX3BzYXJn cykpOworLQkgIHAgPSAoY29uc3Qgdm9pZCAqKSAmZGF0YTsKKy0JICBzaXplID0gc2l6ZW9mIChk YXRhKTsKKysJICByZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwg IkNPUkUiLCBub3RlX3R5cGUsCisrCQkJCSAgICAgJmRhdGEsIHNpemVvZiAoZGF0YSkpOworIAl9 CisgICAgICAgZWxzZQorIAl7CitAQCAtNDU0LDEwICs0NTIsMTAgQEAgZWxmX3g4Nl82NF93cml0 ZV9jb3JlX25vdGUgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKKyAJICBtZW1z ZXQgKCZkYXRhLCAwLCBzaXplb2YgKGRhdGEpKTsKKyAJICBzdHJuY3B5IChkYXRhLnByX2ZuYW1l LCBmbmFtZSwgc2l6ZW9mIChkYXRhLnByX2ZuYW1lKSk7CisgCSAgc3RybmNweSAoZGF0YS5wcl9w c2FyZ3MsIHBzYXJncywgc2l6ZW9mIChkYXRhLnByX3BzYXJncykpOworLQkgIHAgPSAoY29uc3Qg dm9pZCAqKSAmZGF0YTsKKy0JICBzaXplID0gc2l6ZW9mIChkYXRhKTsKKysJICByZXR1cm4gZWxm Y29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3RlX3R5cGUsCisr CQkJCSAgICAgJmRhdGEsIHNpemVvZiAoZGF0YSkpOworIAl9CistICAgICAgYnJlYWs7CisrICAg ICAgLyogTk9UUkVBQ0hFRCAqLworIAorICAgICBjYXNlIE5UX1BSU1RBVFVTOgorICAgICAgIHZh X3N0YXJ0IChhcCwgbm90ZV90eXBlKTsKK0BAIC00NzUsOCArNDczLDggQEAgZWxmX3g4Nl82NF93 cml0ZV9jb3JlX25vdGUgKGJmZCAqYWJmZCwgY2hhciAqYnVmLCBpbnQgKmJ1ZnNpeiwKKyAJICAg ICAgcHJzdGF0LnByX3BpZCA9IHBpZDsKKyAJICAgICAgcHJzdGF0LnByX2N1cnNpZyA9IGN1cnNp ZzsKKyAJICAgICAgbWVtY3B5ICgmcHJzdGF0LnByX3JlZywgZ3JlZ3MsIHNpemVvZiAocHJzdGF0 LnByX3JlZykpOworLQkgICAgICBwID0gKGNvbnN0IHZvaWQgKikgJnByc3RhdDsKKy0JICAgICAg c2l6ZSA9IHNpemVvZiAocHJzdGF0KTsKKysJICAgICAgcmV0dXJuIGVsZmNvcmVfd3JpdGVfbm90 ZSAoYWJmZCwgYnVmLCBidWZzaXosICJDT1JFIiwgbm90ZV90eXBlLAorKwkJCQkJICZwcnN0YXQs IHNpemVvZiAocHJzdGF0KSk7CisgCSAgICB9CisgCSAgZWxzZQorIAkgICAgeworQEAgLTQ4NSw4 ICs0ODMsOCBAQCBlbGZfeDg2XzY0X3dyaXRlX2NvcmVfbm90ZSAoYmZkICphYmZkLCBjaGFyICpi dWYsIGludCAqYnVmc2l6LAorIAkgICAgICBwcnN0YXQucHJfcGlkID0gcGlkOworIAkgICAgICBw cnN0YXQucHJfY3Vyc2lnID0gY3Vyc2lnOworIAkgICAgICBtZW1jcHkgKCZwcnN0YXQucHJfcmVn LCBncmVncywgc2l6ZW9mIChwcnN0YXQucHJfcmVnKSk7CistCSAgICAgIHAgPSAoY29uc3Qgdm9p ZCAqKSAmcHJzdGF0OworLQkgICAgICBzaXplID0gc2l6ZW9mIChwcnN0YXQpOworKwkgICAgICBy ZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3Rl X3R5cGUsCisrCQkJCQkgJnByc3RhdCwgc2l6ZW9mIChwcnN0YXQpKTsKKyAJICAgIH0KKyAJfQor ICAgICAgIGVsc2UKK0BAIC00OTYsMTQgKzQ5NCwxMSBAQCBlbGZfeDg2XzY0X3dyaXRlX2NvcmVf bm90ZSAoYmZkICphYmZkLCBjaGFyICpidWYsIGludCAqYnVmc2l6LAorIAkgIHByc3RhdC5wcl9w aWQgPSBwaWQ7CisgCSAgcHJzdGF0LnByX2N1cnNpZyA9IGN1cnNpZzsKKyAJICBtZW1jcHkgKCZw cnN0YXQucHJfcmVnLCBncmVncywgc2l6ZW9mIChwcnN0YXQucHJfcmVnKSk7CistCSAgcCA9IChj b25zdCB2b2lkICopICZwcnN0YXQ7CistCSAgc2l6ZSA9IHNpemVvZiAocHJzdGF0KTsKKysJICBy ZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBidWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3Rl X3R5cGUsCisrCQkJCSAgICAgJnByc3RhdCwgc2l6ZW9mIChwcnN0YXQpKTsKKyAJfQorLSAgICAg IGJyZWFrOworICAgICB9CistCistICByZXR1cm4gZWxmY29yZV93cml0ZV9ub3RlIChhYmZkLCBi dWYsIGJ1ZnNpeiwgIkNPUkUiLCBub3RlX3R5cGUsIHAsCistCQkJICAgICBzaXplKTsKKysgIC8q IE5PVFJFQUNIRUQgKi8KKyB9CisgI2VuZGlmCisgDAorCgpkaWZmIC0tZ2l0IGEvZ2RiLWdkYi1h ZGQtaW5kZXgtc2NyaXB0LnBhdGNoIGIvZ2RiLWdkYi1hZGQtaW5kZXgtc2NyaXB0LnBhdGNoCmlu ZGV4IDFjMTQ1YWMuLmMxNWRmNjggMTAwNjQ0Ci0tLSBhL2dkYi1nZGItYWRkLWluZGV4LXNjcmlw dC5wYXRjaAorKysgYi9nZGItZ2RiLWFkZC1pbmRleC1zY3JpcHQucGF0Y2gKQEAgLTQwLDE2ICs0 MCwxNiBAQCBTdWJqZWN0OiBbUEFUQ0ggNC80XSBhZGQgZ2RiLWFkZC1pbmRleAogIDUgZmlsZXMg Y2hhbmdlZCwgNTcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAx MDA3NTUgZ2RiL2dkYi1hZGQtaW5kZXgKIAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2Ri L01ha2VmaWxlLmluCitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvTWFrZWZpbGUuaW4K ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL01ha2VmaWxlLmlu CTIwMTAtMTEtMTYgMDg6MDM6MTcuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEw MTExNi9nZGIvTWFrZWZpbGUuaW4JMjAxMC0xMS0xNiAwODo0Nzo0NS4wMDAwMDAwMDAgKzAxMDAK LUBAIC05ODYsNyArOTg2LDE2IEBAIGluc3RhbGwtb25seTogaW5zdGFsbC1nc3RhY2sgJChDT05G SUdfSU4KLSAJCSQoU0hFTEwpICQoc3JjZGlyKS8uLi9ta2luc3RhbGxkaXJzIFwKLSAJCQkkKERF U1RESVIpJChtYW4xZGlyKSA7IFwKKy0tLSBnZGItNy40LjUwLjIwMTIwMTAzLm9yaWcvZ2RiL01h a2VmaWxlLmluCTIwMTItMDEtMDMgMDU6NTM6MjUuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcu NC41MC4yMDEyMDEwMy9nZGIvTWFrZWZpbGUuaW4JMjAxMi0wMS0wMyAxNToyNDoyNS42OTM1NDM0 MzUgKzAxMDAKK0BAIC0xMDMzLDcgKzEwMzMsMTYgQEAgaW5zdGFsbC1vbmx5OiBpbnN0YWxsLWdz dGFjayAkKENPTkZJR19JTgogIAkJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9nZGIuMSBcCi0t CQkJJChERVNURElSKSQobWFuMWRpcikvJCR0cmFuc2Zvcm1lZF9uYW1lLjEKLSsJCQkkKERFU1RE SVIpJChtYW4xZGlyKS8kJHRyYW5zZm9ybWVkX25hbWUuMTsgXAorIAkJCSQoREVTVERJUikkKG1h bjFkaXIpLyQkdHJhbnNmb3JtZWRfbmFtZS4xIDsgXAorIAkJJChTSEVMTCkgJChzcmNkaXIpLy4u L21raW5zdGFsbGRpcnMgJChERVNURElSKSQoaW5jbHVkZWRpcikvZ2RiIDsgXAorLQkJJChJTlNU QUxMX0RBVEEpIGppdC1yZWFkZXIuaCAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9nZGIvaml0LXJl YWRlci5oCisrCQkkKElOU1RBTExfREFUQSkgaml0LXJlYWRlci5oICQoREVTVERJUikkKGluY2x1 ZGVkaXIpL2dkYi9qaXQtcmVhZGVyLmg7IFwKICsJdHJhbnNmb3JtZWRfbmFtZT1gdD0nJChwcm9n cmFtX3RyYW5zZm9ybV9uYW1lKSc7IFwKICsJCQkgIGVjaG8gZ2RiLWFkZC1pbmRleCB8IHNlZCAt ZSAiJCR0ImAgOyBcCiArCQlpZiB0ZXN0ICJ4JCR0cmFuc2Zvcm1lZF9uYW1lIiA9IHg7IHRoZW4g XApAQCAtNjAsMTMgKzYwLDEzIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi9NYWtl ZmlsZS5pbgogKwkJJChJTlNUQUxMX1BST0dSQU0pICQoc3JjZGlyKS9nZGItYWRkLWluZGV4IFwK ICsJCQkkKERFU1RESVIpJChiaW5kaXIpLyQkdHJhbnNmb3JtZWRfbmFtZSQoRVhFRVhUKQogIAlA JChNQUtFKSBETz1pbnN0YWxsICJET0RJUlM9JChTVUJESVJTKSIgJChGTEFHU19UT19QQVNTKSBz dWJkaXJfZG8KLSAuUEhPTlk6IGluc3RhbGwtdHVpCi0gaW5zdGFsbC10dWk6Ci1JbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvZG9jL2dkYi50ZXhpbmZvCisgCisgaW5zdGFsbC1weXRob246 CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvZG9jL2dkYi50ZXhpbmZvCiA9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAx MC0xMS0xNiAwODowNDoxOC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMC0xMS0xNiAwODo1NjozMC4wMDAwMDAwMDAgKzAxMDAK LUBAIC0xNTUwMCw2ICsxNTUwMCwxNCBAQCBUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgbGltaXRh dGlvbiBvbiBpCistLS0gZ2RiLTcuNC41MC4yMDEyMDEwMy5vcmlnL2dkYi9kb2MvZ2RiLnRleGlu Zm8JMjAxMi0wMS0wMyAxNToyMDo1NC4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIw MTIwMTAzL2dkYi9kb2MvZ2RiLnRleGluZm8JMjAxMi0wMS0wMyAxNToyMzo0My4yOTUyMzE5NDYg KzAxMDAKK0BAIC0xNjIyOCw2ICsxNjIyOCwxNCBAQCBUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUg bGltaXRhdGlvbiBvbiBpCiAgZm9yIERXQVJGIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiwgbm90IHN0 YWJzLiAgQW5kLCB0aGV5IGRvIG5vdAogIGN1cnJlbnRseSB3b3JrIGZvciBwcm9ncmFtcyB1c2lu ZyBBZGEuCiAgCkBAIC04MSwxMCArODEsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYv Z2RiL2RvYy9nZGIudGV4aW5mbwogIEBub2RlIFN5bWJvbCBFcnJvcnMKICBAc2VjdGlvbiBFcnJv cnMgUmVhZGluZyBTeW1ib2wgRmlsZXMKICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dk Yi9nZGItYWRkLWluZGV4CitJbmRleDogZ2RiLTcuNC41MC4yMDEyMDEwMy9nZGIvZ2RiLWFkZC1p bmRleAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQogLS0tIC9kZXYvbnVsbAkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAw MDAwMCArMDAwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL2dkYi1hZGQtaW5kZXgJMjAx MC0xMS0xNiAwODo0Nzo0NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTIwMTAz L2dkYi9nZGItYWRkLWluZGV4CTIwMTItMDEtMDMgMTU6MjM6NDMuMjk2MjMxOTQyICswMTAwCiBA QCAtMCwwICsxLDMwIEBACiArIyEgL2Jpbi9zaAogKwoKZGlmZiAtLWdpdCBhL2dkYi1pbXBscHRy LTY0Yml0LTFvZjIucGF0Y2ggYi9nZGItaW1wbHB0ci02NGJpdC0xb2YyLnBhdGNoCmRlbGV0ZWQg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjQ1OTVkLi4wMDAwMDAwCi0tLSBhL2dkYi1pbXBscHRy LTY0Yml0LTFvZjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotaHR0cDov L3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDkvbXNnMDA0NTAuaHRtbAotU3Vi amVjdDogW3BhdGNoIDEvMl0gQ29kZSBjbGVhbnVwOiBVbmlmeSBkd2FyZjJfcGVyX2N1X2FkZHJf c2l6ZSwgZHdhcmYyX3Blcl9jdV9vZmZzZXRfc2l6ZQotCi1IaSwKLQotdGhpcyBpcyBtb3JlIHJh dGhlciBmb3IgcGF0Y2ggMi8yLCBpdCBoYXMgcG9zaXRpdmUgTG9DIGNoYW5nZSBidXQgc3RpbGwK LUkgd291bGQgZmluZCBpdCBhcHBsaWNhYmxlIGV2ZW4gb24gaXRzIG93bi4KLQotTm8gZnVuY3Rp b25hbGl0eSBjaGFuZ2UgaW50ZW5kZWQuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwotMjAx MS0wOS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotCi0J Q29kZSBjbGVhbnVwLgotCSogZHdhcmYycmVhZC5jIChwZXJfY3VfaGVhZGVyX3JlYWRfaW4pOiBO ZXcgZnVuY3Rpb24uCi0JKGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplLCBkd2FyZjJfcGVyX2N1X29m ZnNldF9zaXplKTogVXNlIGl0LCB3aXRoIG5ldwotCXZhcmlhYmxlcyBjdV9oZWFkZXJfbG9jYWwg YW5kIGN1X2hlYWRlcnAuCi0KLS0tLSBhL2dkYi9kd2FyZjJyZWFkLmMKLSsrKyBiL2dkYi9kd2Fy ZjJyZWFkLmMKLUBAIC0xNTE4NywyNiArMTUxODcsNDIgQEAgZHdhcmYyX3Blcl9jdV9vYmpmaWxl IChzdHJ1Y3QgZHdhcmYyX3Blcl9jdV9kYXRhICpwZXJfY3UpCi0gICByZXR1cm4gb2JqZmlsZTsK LSB9Ci0gCi0rLyogUmV0dXJuIGNvbXBfdW5pdF9oZWFkIGZvciBQRVJfQ1UsIGVpdGhlciBhbHJl YWR5IGF2YWlsYWJsZSBpbiBQRVJfQ1UtPkNVCi0rICAgKENVX0hFQURFUlAgaXMgdW51c2VkIGlu IHN1Y2ggY2FzZSkgb3IgcHJlcGFyZSBhIHRlbXBvcmFyeSBjb3B5IGF0Ci0rICAgQ1VfSEVBREVS UCBmaXJzdC4gICovCi0rCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqCi0r cGVyX2N1X2hlYWRlcl9yZWFkX2luIChzdHJ1Y3QgY29tcF91bml0X2hlYWQgKmN1X2hlYWRlcnAs Ci0rCQkgICAgICAgc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotK3sKLSsgIHN0 cnVjdCBvYmpmaWxlICpvYmpmaWxlOwotKyAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAqcGVy X29iamZpbGU7Ci0rICBnZGJfYnl0ZSAqaW5mb19wdHI7Ci0rCi0rICBpZiAocGVyX2N1LT5jdSkK LSsgICAgcmV0dXJuICZwZXJfY3UtPmN1LT5oZWFkZXI7Ci0rCi0rICBvYmpmaWxlID0gcGVyX2N1 LT5vYmpmaWxlOwotKyAgcGVyX29iamZpbGUgPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJm Ml9vYmpmaWxlX2RhdGFfa2V5KTsKLSsgIGluZm9fcHRyID0gcGVyX29iamZpbGUtPmluZm8uYnVm ZmVyICsgcGVyX2N1LT5vZmZzZXQ7Ci0rCi0rICBtZW1zZXQgKGN1X2hlYWRlcnAsIDAsIHNpemVv ZiAoKmN1X2hlYWRlcnApKTsKLSsgIHJlYWRfY29tcF91bml0X2hlYWQgKGN1X2hlYWRlcnAsIGlu Zm9fcHRyLCBvYmpmaWxlLT5vYmZkKTsKLSsKLSsgIHJldHVybiBjdV9oZWFkZXJwOwotK30KLSsK LSAvKiBSZXR1cm4gdGhlIGFkZHJlc3Mgc2l6ZSBnaXZlbiBpbiB0aGUgY29tcGlsYXRpb24gdW5p dCBoZWFkZXIgZm9yIENVLiAgKi8KLSAKLSBDT1JFX0FERFIKLSBkd2FyZjJfcGVyX2N1X2FkZHJf c2l6ZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIHsKLS0gIGlmIChwZXJf Y3UtPmN1KQotLSAgICByZXR1cm4gcGVyX2N1LT5jdS0+aGVhZGVyLmFkZHJfc2l6ZTsKLS0gIGVs c2UKLS0gICAgewotLSAgICAgIC8qIElmIHRoZSBDVSBpcyBub3QgY3VycmVudGx5IHJlYWQgaW4s IHdlIHJlLXJlYWQgaXRzIGhlYWRlci4gICovCi0tICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZp bGUgPSBwZXJfY3UtPm9iamZpbGU7Ci0tICAgICAgc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSAq cGVyX29iamZpbGUKLS0JPSBvYmpmaWxlX2RhdGEgKG9iamZpbGUsIGR3YXJmMl9vYmpmaWxlX2Rh dGFfa2V5KTsKLS0gICAgICBnZGJfYnl0ZSAqaW5mb19wdHIgPSBwZXJfb2JqZmlsZS0+aW5mby5i dWZmZXIgKyBwZXJfY3UtPm9mZnNldDsKLS0gICAgICBzdHJ1Y3QgY29tcF91bml0X2hlYWQgY3Vf aGVhZGVyOwotKyAgc3RydWN0IGNvbXBfdW5pdF9oZWFkIGN1X2hlYWRlcl9sb2NhbDsKLSsgIGNv bnN0IHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVycDsKLSAKLS0gICAgICBtZW1zZXQg KCZjdV9oZWFkZXIsIDAsIHNpemVvZiBjdV9oZWFkZXIpOwotLSAgICAgIHJlYWRfY29tcF91bml0 X2hlYWQgKCZjdV9oZWFkZXIsIGluZm9fcHRyLCBvYmpmaWxlLT5vYmZkKTsKLS0gICAgICByZXR1 cm4gY3VfaGVhZGVyLmFkZHJfc2l6ZTsKLS0gICAgfQotKyAgY3VfaGVhZGVycCA9IHBlcl9jdV9o ZWFkZXJfcmVhZF9pbiAoJmN1X2hlYWRlcl9sb2NhbCwgcGVyX2N1KTsKLSsKLSsgIHJldHVybiBj dV9oZWFkZXJwLT5hZGRyX3NpemU7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgb2Zmc2V0IHNpemUg Z2l2ZW4gaW4gdGhlIGNvbXBpbGF0aW9uIHVuaXQgaGVhZGVyIGZvciBDVS4gICovCi1AQCAtMTUy MTQsMjEgKzE1MjMwLDEyIEBAIGR3YXJmMl9wZXJfY3VfYWRkcl9zaXplIChzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhICpwZXJfY3UpCi0gaW50Ci0gZHdhcmYyX3Blcl9jdV9vZmZzZXRfc2l6ZSAo c3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotIHsKLS0gIGlmIChwZXJfY3UtPmN1 KQotLSAgICByZXR1cm4gcGVyX2N1LT5jdS0+aGVhZGVyLm9mZnNldF9zaXplOwotLSAgZWxzZQot LSAgICB7Ci0tICAgICAgLyogSWYgdGhlIENVIGlzIG5vdCBjdXJyZW50bHkgcmVhZCBpbiwgd2Ug cmUtcmVhZCBpdHMgaGVhZGVyLiAgKi8KLS0gICAgICBzdHJ1Y3Qgb2JqZmlsZSAqb2JqZmlsZSA9 IHBlcl9jdS0+b2JqZmlsZTsKLS0gICAgICBzdHJ1Y3QgZHdhcmYyX3Blcl9vYmpmaWxlICpwZXJf b2JqZmlsZQotLQk9IG9iamZpbGVfZGF0YSAob2JqZmlsZSwgZHdhcmYyX29iamZpbGVfZGF0YV9r ZXkpOwotLSAgICAgIGdkYl9ieXRlICppbmZvX3B0ciA9IHBlcl9vYmpmaWxlLT5pbmZvLmJ1ZmZl ciArIHBlcl9jdS0+b2Zmc2V0OwotLSAgICAgIHN0cnVjdCBjb21wX3VuaXRfaGVhZCBjdV9oZWFk ZXI7Ci0rICBzdHJ1Y3QgY29tcF91bml0X2hlYWQgY3VfaGVhZGVyX2xvY2FsOwotKyAgY29uc3Qg c3RydWN0IGNvbXBfdW5pdF9oZWFkICpjdV9oZWFkZXJwOwotIAotLSAgICAgIG1lbXNldCAoJmN1 X2hlYWRlciwgMCwgc2l6ZW9mIGN1X2hlYWRlcik7Ci0tICAgICAgcmVhZF9jb21wX3VuaXRfaGVh ZCAoJmN1X2hlYWRlciwgaW5mb19wdHIsIG9iamZpbGUtPm9iZmQpOwotLSAgICAgIHJldHVybiBj dV9oZWFkZXIub2Zmc2V0X3NpemU7Ci0tICAgIH0KLSsgIGN1X2hlYWRlcnAgPSBwZXJfY3VfaGVh ZGVyX3JlYWRfaW4gKCZjdV9oZWFkZXJfbG9jYWwsIHBlcl9jdSk7Ci0rCi0rICByZXR1cm4gY3Vf aGVhZGVycC0+b2Zmc2V0X3NpemU7Ci0gfQotIAotIC8qIFJldHVybiB0aGUgdGV4dCBvZmZzZXQg b2YgdGhlIENVLiAgVGhlIHJldHVybmVkIG9mZnNldCBjb21lcyBmcm9tCi0KCmRpZmYgLS1naXQg YS9nZGItaW1wbHB0ci02NGJpdC0yb2YyLnBhdGNoIGIvZ2RiLWltcGxwdHItNjRiaXQtMm9mMi5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDE4MDY3NC4uMDAwMDAwMAotLS0g YS9nZGItaW1wbHB0ci02NGJpdC0yb2YyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDExICsw LDAgQEAKLWh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA5L21zZzAw NDUxLmh0bWwKLVN1YmplY3Q6IFtwYXRjaCAyLzJdIEZpeCBEV19PUF9HTlVfaW1wbGljaXRfcG9p bnRlciBmb3IgRFdBUkYzMiB2Mysgb24gNjQtYml0IGFyY2hlcwotCi1IaSwKLQotb24gNjQtYml0 IHRhcmdldHMgRFdBUkYtMysgaXMgdXNlZCBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlciBkb2Vz IG5vdCB3b3JrLgotCi1EV0FSRi0yIHNheXM6Ci0JVGhpcyB0eXBlIG9mIHJlZmVyZW5jZSAoRFdf Rk9STV9yZWZfYWRkcikgaXMgdGhlIHNpemUgb2YgYW4gYWRkcmVzcyBvbgotCXRoZSB0YXJnZXQg YXJjaGl0ZWN0dXJlOyAKLURXQVJGLTMgc2F5czoKLQkxLjUuMSBVcHdhcmQgQ29tcGF0aWJpbGl0 eQotCVJlZmVyZW5jZXMgdGhhdCB1c2UgdGhlIGF0dHJpYnV0ZSBmb3JtIERXX0ZPUk1fcmVmX2Fk ZHIgYXJlIHNwZWNpZmllZAotCXRvIGJlIGZvdXIgYnl0ZXMgaW4gdGhlIERXQVJGIDMyLWJpdCBm b3JtYXQgYW5kIGVpZ2h0IGJ5dGVzIGluIHRoZQotCURXQVJGIDY0LWJpdCBmb3JtYXQsIHdoaWxl IERXQVJGIFZlcnNpb24gMiBzcGVjaWZpZXMgdGhhdCBzdWNoCi0JcmVmZXJlbmNlcyBoYXZlIHRo ZSBzYW1lIHNpemUgYXMgYW4gYWRkcmVzcyBvbiB0aGUgdGFyZ2V0IHN5c3RlbSAoc2VlCi0JU2Vj dGlvbnMgNy40IGFuZCA3LjUuNCkuCi0KLQkoRFdfRk9STV9yZWZfYWRkcikKLQlJbiB0aGUgMzIt Yml0IERXQVJGIGZvcm1hdCwgdGhpcyBvZmZzZXQgaXMgYSA0LWJ5dGUgdW5zaWduZWQgdmFsdWU7 IGluCi0JdGhlIDY0LWJpdCBEV0FSRiBmb3JtYXQsIGl0IGlzIGFuIDgtYnl0ZSB1bnNpZ25lZCB2 YWx1ZSAoc2VlIFNlY3Rpb24KLQk3LjQpLgotCi1HREIgY3VycmVudGx5IHBhcnNlZCBEV19PUF9H TlVfaW1wbGljaXRfcG9pbnRlciB0aGUgRFdBUkYtMiB3YXksIGJlaW5nCi1pbmNvbXBhdGlibGUg d2l0aCBEV0FSRi0zKy4KLQotSSB0aGluayBEV19PUF9HTlVfaW1wbGljaXRfcG9pbnRlciBkb2Vz IG5vdCBtYWtlIHNlbnNlIHRvIGJlIHVzZWQgZnJvbQotLmRlYnVnX2ZyYW1lIChEV0FSRi01IGlz IG5vdCB5ZXQgcmVsZWFzZWQgdG8gc2F5IG1vcmUpIHNvIGZvciAuZGVidWdfZnJhbWUgaXRzCi11 c2UgaXMganVzdCBub3QgcGVybWl0dGVkICh0aGUgY29kZSB3b3VsZCBiZSBtb3JlIGNvbXBsaWNh dGVkIG90aGVyd2lzZSkuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixp Njg2fS1mZWRvcmExNnByZS1saW51eC1nbnUuCi0KLQotVGhhbmtzLAotSmFuCi0KLQotZ2RiLwot MjAxMS0wOS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgot Ci0JRml4IERXX09QX0dOVV9pbXBsaWNpdF9wb2ludGVyIGZvciBEV0FSRjMyIHYzKyBvbiA2NC1i aXQgYXJjaGVzLgotCSogZHdhcmYyLWZyYW1lLmMgKGV4ZWN1dGVfc3RhY2tfb3ApOiBJbml0aWFs aXplIGN0eC0+cmVmX2FkZHJfc2l6ZS4KLQkqIGR3YXJmMmV4cHIuYyAoZXhlY3V0ZV9zdGFja19v cCkgPERXX09QX0dOVV9pbXBsaWNpdF9wb2ludGVyPjogVXNlCi0JY3R4LT5yZWZfYWRkcl9zaXpl LiAgSGFuZGxlIGl0cyBpbnZhbGlkIHZhbHVlLgotCSogZHdhcmYyZXhwci5oIChzdHJ1Y3QgZHdh cmZfZXhwcl9jb250ZXh0KTogTmV3IGZpZWxkIHJlZl9hZGRyX3NpemUuCi0JKiBkd2FyZjJsb2Mu YyAoZHdhcmYyX2V2YWx1YXRlX2xvY19kZXNjX2Z1bGwpCi0JKGR3YXJmMl9sb2NfZGVzY19uZWVk c19mcmFtZSk6IEluaXRpYWxpemUgY3R4LT5yZWZfYWRkcl9zaXplLgotCSogZHdhcmYybG9jLmgg KGR3YXJmMl9wZXJfY3VfcmVmX2FkZHJfc2l6ZSk6IE5ldyBkZWNsYXJhdGlvbi4KLQkqIGR3YXJm MnJlYWQuYyAoZGVjb2RlX2xvY2Rlc2MpOiBJbml0aWFsaXplIGN0eC0+cmVmX2FkZHJfc2l6ZS4K LQkoZHdhcmYyX3Blcl9jdV9yZWZfYWRkcl9zaXplKTogTmV3IGZ1bmN0aW9uLgotCi1nZGIvdGVz dHN1aXRlLwotMjAxMS0wOS0yNiAgSmFuIEtyYXRvY2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRo YXQuY29tPgotCi0JRml4IERXX09QX0dOVV9pbXBsaWNpdF9wb2ludGVyIGZvciBEV0FSRjMyIHYz KyBvbiA2NC1iaXQgYXJjaGVzLgotCSogZ2RiLmR3YXJmMi9pbXBscHRyLTY0Yml0LlM6IE5ldyBm aWxlLgotCSogZ2RiLmR3YXJmMi9pbXBscHRyLTY0Yml0LmV4cDogTmV3IGZpbGUuCi0KLS0tLSBh L2dkYi9kd2FyZjItZnJhbWUuYwotKysrIGIvZ2RiL2R3YXJmMi1mcmFtZS5jCi1AQCAtMzcxLDYg KzM3MSw3IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKGNvbnN0IGdkYl9ieXRlICpleHAsIFVMT05HRVNU IGxlbiwgaW50IGFkZHJfc2l6ZSwKLSAKLSAgIGN0eC0+Z2RiYXJjaCA9IGdldF9mcmFtZV9hcmNo ICh0aGlzX2ZyYW1lKTsKLSAgIGN0eC0+YWRkcl9zaXplID0gYWRkcl9zaXplOwotKyAgY3R4LT5y ZWZfYWRkcl9zaXplID0gLTE7Ci0gICBjdHgtPm9mZnNldCA9IG9mZnNldDsKLSAgIGN0eC0+YmF0 b24gPSB0aGlzX2ZyYW1lOwotICAgY3R4LT5mdW5jcyA9ICZkd2FyZjJfZnJhbWVfY3R4X2Z1bmNz OwotLS0tIGEvZ2RiL2R3YXJmMmV4cHIuYwotKysrIGIvZ2RiL2R3YXJmMmV4cHIuYwotQEAgLTcw OSwxMCArNzA5LDE0IEBAIGV4ZWN1dGVfc3RhY2tfb3AgKHN0cnVjdCBkd2FyZl9leHByX2NvbnRl eHQgKmN0eCwKLSAJICAgIFVMT05HRVNUIGRpZTsKLSAJICAgIExPTkdFU1QgbGVuOwotIAotKwkg ICAgaWYgKGN0eC0+cmVmX2FkZHJfc2l6ZSA9PSAtMSkKLSsJICAgICAgZXJyb3IgKF8oIkRXQVJG LTIgZXhwcmVzc2lvbiBlcnJvcjogRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgIgotKwkJICAg ICAgICJpcyBub3QgYWxsb3dlZCBpbiBmcmFtZSBjb250ZXh0IikpOwotKwotIAkgICAgLyogVGhl IHJlZmVycmVkLXRvIERJRS4gICovCi0tCSAgICBjdHgtPmxlbiA9IGV4dHJhY3RfdW5zaWduZWRf aW50ZWdlciAob3BfcHRyLCBjdHgtPmFkZHJfc2l6ZSwKLSsJICAgIGN0eC0+bGVuID0gZXh0cmFj dF91bnNpZ25lZF9pbnRlZ2VyIChvcF9wdHIsIGN0eC0+cmVmX2FkZHJfc2l6ZSwKLSAJCQkJCQkg Ynl0ZV9vcmRlcik7Ci0tCSAgICBvcF9wdHIgKz0gY3R4LT5hZGRyX3NpemU7Ci0rCSAgICBvcF9w dHIgKz0gY3R4LT5yZWZfYWRkcl9zaXplOwotIAotIAkgICAgLyogVGhlIGJ5dGUgb2Zmc2V0IGlu dG8gdGhlIGRhdGEuICAqLwotIAkgICAgb3BfcHRyID0gcmVhZF9zbGViMTI4IChvcF9wdHIsIG9w X2VuZCwgJmxlbik7Ci0tLS0gYS9nZGIvZHdhcmYyZXhwci5oCi0rKysgYi9nZGIvZHdhcmYyZXhw ci5oCi1AQCAtMTI1LDYgKzEyNSwxMCBAQCBzdHJ1Y3QgZHdhcmZfZXhwcl9jb250ZXh0Ci0gICAv KiBUYXJnZXQgYWRkcmVzcyBzaXplIGluIGJ5dGVzLiAgKi8KLSAgIGludCBhZGRyX3NpemU7Ci0g Ci0rICAvKiBEV19GT1JNX3JlZl9hZGRyIHNpemUgaW4gYnl0ZXMuICBJZiAtMSBEV0FSRiBpcyBl eGVjdXRlZCBmcm9tIGEgZnJhbWUKLSsgICAgIGNvbnRleHQgYW5kIG9wZXJhdGlvbnMgZGVwZW5k aW5nIG9uIERXX0ZPUk1fcmVmX2FkZHIgYXJlIG5vdCBhbGxvd2VkLiAgKi8KLSsgIGludCByZWZf YWRkcl9zaXplOwotKwotICAgLyogT2Zmc2V0IHVzZWQgdG8gcmVsb2NhdGUgRFdfT1BfYWRkciBh cmd1bWVudC4gICovCi0gICBDT1JFX0FERFIgb2Zmc2V0OwotIAotLS0tIGEvZ2RiL2R3YXJmMmxv Yy5jCi0rKysgYi9nZGIvZHdhcmYybG9jLmMKLUBAIC0xMTE4LDYgKzExMTgsNyBAQCBkd2FyZjJf ZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCAoc3RydWN0IHR5cGUgKnR5cGUsIHN0cnVjdCBmcmFtZV9p bmZvICpmcmFtZSwKLSAKLSAgIGN0eC0+Z2RiYXJjaCA9IGdldF9vYmpmaWxlX2FyY2ggKG9iamZp bGUpOwotICAgY3R4LT5hZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X2FkZHJfc2l6ZSAocGVyX2N1 KTsKLSsgIGN0eC0+cmVmX2FkZHJfc2l6ZSA9IGR3YXJmMl9wZXJfY3VfcmVmX2FkZHJfc2l6ZSAo cGVyX2N1KTsKLSAgIGN0eC0+b2Zmc2V0ID0gZHdhcmYyX3Blcl9jdV90ZXh0X29mZnNldCAocGVy X2N1KTsKLSAgIGN0eC0+YmF0b24gPSAmYmF0b247Ci0gICBjdHgtPmZ1bmNzID0gJmR3YXJmX2V4 cHJfY3R4X2Z1bmNzOwotQEAgLTEzOTgsNiArMTM5OSw3IEBAIGR3YXJmMl9sb2NfZGVzY19uZWVk c19mcmFtZSAoY29uc3QgZ2RiX2J5dGUgKmRhdGEsIHVuc2lnbmVkIHNob3J0IHNpemUsCi0gCi0g ICBjdHgtPmdkYmFyY2ggPSBnZXRfb2JqZmlsZV9hcmNoIChvYmpmaWxlKTsKLSAgIGN0eC0+YWRk cl9zaXplID0gZHdhcmYyX3Blcl9jdV9hZGRyX3NpemUgKHBlcl9jdSk7Ci0rICBjdHgtPnJlZl9h ZGRyX3NpemUgPSBkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHBlcl9jdSk7Ci0gICBjdHgt Pm9mZnNldCA9IGR3YXJmMl9wZXJfY3VfdGV4dF9vZmZzZXQgKHBlcl9jdSk7Ci0gICBjdHgtPmJh dG9uID0gJmJhdG9uOwotICAgY3R4LT5mdW5jcyA9ICZuZWVkc19mcmFtZV9jdHhfZnVuY3M7Ci0t LS0gYS9nZGIvZHdhcmYybG9jLmgKLSsrKyBiL2dkYi9kd2FyZjJsb2MuaAotQEAgLTM5LDYgKzM5 LDEwIEBAIHN0cnVjdCBvYmpmaWxlICpkd2FyZjJfcGVyX2N1X29iamZpbGUgKHN0cnVjdCBkd2Fy ZjJfcGVyX2N1X2RhdGEgKmN1KTsKLSAvKiBSZXR1cm4gdGhlIGFkZHJlc3Mgc2l6ZSBnaXZlbiBp biB0aGUgY29tcGlsYXRpb24gdW5pdCBoZWFkZXIgZm9yIENVLiAgKi8KLSBDT1JFX0FERFIgZHdh cmYyX3Blcl9jdV9hZGRyX3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1KTsKLSAK LSsvKiBSZXR1cm4gdGhlIERXX0ZPUk1fcmVmX2FkZHIgc2l6ZSBnaXZlbiBpbiB0aGUgY29tcGls YXRpb24gdW5pdCBoZWFkZXIgZm9yCi0rICAgQ1UuICAqLwotK2ludCBkd2FyZjJfcGVyX2N1X3Jl Zl9hZGRyX3NpemUgKHN0cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKmN1KTsKLSsKLSAvKiBSZXR1 cm4gdGhlIG9mZnNldCBzaXplIGdpdmVuIGluIHRoZSBjb21waWxhdGlvbiB1bml0IGhlYWRlciBm b3IgQ1UuICAqLwotIGludCBkd2FyZjJfcGVyX2N1X29mZnNldF9zaXplIChzdHJ1Y3QgZHdhcmYy X3Blcl9jdV9kYXRhICpjdSk7Ci0gCi0tLS0gYS9nZGIvZHdhcmYycmVhZC5jCi0rKysgYi9nZGIv ZHdhcmYycmVhZC5jCi1AQCAtMTUyMzgsNiArMTUyMzksMjIgQEAgZHdhcmYyX3Blcl9jdV9vZmZz ZXRfc2l6ZSAoc3RydWN0IGR3YXJmMl9wZXJfY3VfZGF0YSAqcGVyX2N1KQotICAgcmV0dXJuIGN1 X2hlYWRlcnAtPm9mZnNldF9zaXplOwotIH0KLSAKLSsvKiBTZWUgaXRzIGR3YXJmMmxvYy5oIGRl Y2xhcmF0aW9uLiAgKi8KLSsKLStpbnQKLStkd2FyZjJfcGVyX2N1X3JlZl9hZGRyX3NpemUgKHN0 cnVjdCBkd2FyZjJfcGVyX2N1X2RhdGEgKnBlcl9jdSkKLSt7Ci0rICBzdHJ1Y3QgY29tcF91bml0 X2hlYWQgY3VfaGVhZGVyX2xvY2FsOwotKyAgY29uc3Qgc3RydWN0IGNvbXBfdW5pdF9oZWFkICpj dV9oZWFkZXJwOwotKwotKyAgY3VfaGVhZGVycCA9IHBlcl9jdV9oZWFkZXJfcmVhZF9pbiAoJmN1 X2hlYWRlcl9sb2NhbCwgcGVyX2N1KTsKLSsKLSsgIGlmIChjdV9oZWFkZXJwLT52ZXJzaW9uID09 IDIpCi0rICAgIHJldHVybiBjdV9oZWFkZXJwLT5hZGRyX3NpemU7Ci0rICBlbHNlCi0rICAgIHJl dHVybiBjdV9oZWFkZXJwLT5vZmZzZXRfc2l6ZTsKLSt9Ci0rCi0gLyogUmV0dXJuIHRoZSB0ZXh0 IG9mZnNldCBvZiB0aGUgQ1UuICBUaGUgcmV0dXJuZWQgb2Zmc2V0IGNvbWVzIGZyb20KLSAgICB0 aGlzIENVJ3Mgb2JqZmlsZS4gIElmIHRoaXMgb2JqZmlsZSBjYW1lIGZyb20gYSBzZXBhcmF0ZSBk ZWJ1Z2luZm8KLSAgICBmaWxlLCB0aGVuIHRoZSBvZmZzZXQgbWF5IGJlIGRpZmZlcmVudCBmcm9t IHRoZSBjb3JyZXNwb25kaW5nCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dk Yi5kd2FyZjIvaW1wbHB0ci02NGJpdC5TCi1AQCAtMCwwICsxLDE5NyBAQAotKy8qIENvcHlyaWdo dCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMg cHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3Ig bW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u OyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5Z IFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJD SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl Ci0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsg ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0 dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KLSsKLSsJLnNlY3Rpb24JLmRlYnVnX2lu Zm8KLStkOgotKwkvKiBMZW5ndGggb2YgQ29tcGlsYXRpb24gVW5pdCBJbmZvICovCi0rI2lmIE9G RlNFVF9TSVpFID09IDQKLSsjIGRlZmluZSBPRkZTRVQgLjRieXRlCi0rCS40Ynl0ZQlkZWJ1Z19l bmQgLSAxZgotKyNlbGlmIE9GRlNFVF9TSVpFID09IDgKLSsjIGRlZmluZSBPRkZTRVQgLjhieXRl Ci0rCS40Ynl0ZQkweGZmZmZmZmZmCi0rCS44Ynl0ZQlkZWJ1Z19lbmQgLSAxZgotKyNlbHNlCi0r IyBlcnJvcgotKyNlbmRpZgotKyNpZiBBRERSX1NJWkUgPT0gNAotKyMgZGVmaW5lIEFERFIgLjRi eXRlCi0rI2VsaWYgQUREUl9TSVpFID09IDgKLSsjIGRlZmluZSBBRERSIC44Ynl0ZQotKyNlbHNl Ci0rIyBlcnJvcgotKyNlbmRpZgotKyNpZiBSRUZfQUREUl9TSVpFID09IDQKLSsjIGRlZmluZSBS RUZfQUREUiAuNGJ5dGUKLSsjZWxpZiBSRUZfQUREUl9TSVpFID09IDgKLSsjIGRlZmluZSBSRUZf QUREUiAuOGJ5dGUKLSsjZWxzZQotKyMgZXJyb3IKLSsjZW5kaWYKLSsxOgotKwkuMmJ5dGUJRFdB UkZfVkVSU0lPTgkvKiBEV0FSRiB2ZXJzaW9uIG51bWJlciAqLwotKwlPRkZTRVQJLkxkZWJ1Z19h YmJyZXYwCS8qIE9mZnNldCBJbnRvIEFiYnJldi4gU2VjdGlvbiAqLwotKwkuYnl0ZQlBRERSX1NJ WkUJLyogUG9pbnRlciBTaXplIChpbiBieXRlcykgKi8KLSsKLSsJLnVsZWIxMjggMHgxCS8qIChE SUUgKDB4YikgRFdfVEFHX2NvbXBpbGVfdW5pdCkgKi8KLSsJLmFzY2lpICJHTlUgQyA0LjQuM1ww IgkvKiBEV19BVF9wcm9kdWNlciAqLwotKwkuYnl0ZQkweDEJLyogRFdfQVRfbGFuZ3VhZ2UgKi8K LSsJLmFzY2lpICIxLmNcMCIJLyogRFdfQVRfbmFtZSAqLwotKwotKy5MdHlwZV9pbnQ6Ci0rCS51 bGViMTI4IDB4NwkvKiBEV19UQUdfYmFzZV90eXBlICovCi0rCS5ieXRlCTB4NAkvKiBEV19BVF9i eXRlX3NpemUgKi8KLSsJLmJ5dGUJMHg1CS8qIERXX0FUX2VuY29kaW5nICovCi0rCS5hc2NpaSAi aW50XDAiCS8qIERXX0FUX25hbWUgKi8KLSsKLSsuTHR5cGVfc3RydWN0OgotKwkudWxlYjEyOCAw eDIJLyogRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCS5hc2NpaSAic1wwIgkvKiBEV19BVF9u YW1lICovCi0rCS5ieXRlCTQJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCi0rCS51bGViMTI4IDB4 MwkvKiBEV19UQUdfbWVtYmVyICovCi0rCS5hc2NpaSAiZlwwIgkvKiBEV19BVF9uYW1lICovCi0r CS40Ynl0ZQkuTHR5cGVfaW50IC0gZAkvKiBEV19BVF90eXBlICovCi0rCS5ieXRlCTAJLyogRFdf QVRfZGF0YV9tZW1iZXJfbG9jYXRpb24gKi8KLSsKLSsJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGls ZHJlbiBvZiBEV19UQUdfc3RydWN0dXJlX3R5cGUgKi8KLSsKLSsJLnVsZWIxMjgJNgkJCS8qIEFi YnJldjogRFdfVEFHX3N1YnByb2dyYW0gKi8KLSsJLmFzY2lpCQkibWFpblwwIgkJLyogRFdfQVRf bmFtZSAqLwotKwlBRERSCQltYWluCQkJLyogRFdfQVRfbG93X3BjICovCi0rCUFERFIJCW1haW4g KyAweDEwMAkJLyogRFdfQVRfaGlnaF9wYyAqLwotKwkuNGJ5dGUJCS5MdHlwZV9pbnQgLSBkCQkv KiBEV19BVF90eXBlICovCi0rCS5ieXRlCQkxCQkJLyogRFdfQVRfZXh0ZXJuYWwgKi8KLSsKLSsu THR5cGVfc3RydWN0cHRyOgotKwkudWxlYjEyOCAweDUJLyogRFdfVEFHX3BvaW50ZXJfdHlwZSAq LwotKwkuYnl0ZQlBRERSX1NJWkUJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS40Ynl0ZQkuTHR5 cGVfc3RydWN0IC0gZAkvKiBEV19BVF90eXBlICovCi0rCi0rLkx2YXJfb3V0OgotKwkudWxlYjEy OCAweDQJLyogKERXX1RBR192YXJpYWJsZSkgKi8KLSsJLmFzY2lpICJ2XDAiCS8qIERXX0FUX25h bWUgKi8KLSsJLmJ5dGUJMmYgLSAxZgkvKiBEV19BVF9sb2NhdGlvbjogRFdfRk9STV9ibG9jazEg Ki8KLSsxOgotKwkuYnl0ZQkweDllCS8qIERXX09QX2ltcGxpY2l0X3ZhbHVlICovCi0rCS51bGVi MTI4ICAyZiAtIDNmCi0rMzoKLSsJLmJ5dGUJMSwgMSwgMSwgMQotKzI6Ci0rCS40Ynl0ZQkuTHR5 cGVfc3RydWN0IC0gZAkvKiBEV19BVF90eXBlICovCi0rCi0rCS51bGViMTI4IDB4NAkvKiAoRFdf VEFHX3ZhcmlhYmxlKSAqLwotKwkuYXNjaWkgInBcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0 ZQkyZiAtIDFmCS8qIERXX0FUX2xvY2F0aW9uOiBEV19GT1JNX2Jsb2NrMSAqLwotKzE6Ci0rCS5i eXRlCTB4ZjIJLyogRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgKi8KLSsJUkVGX0FERFIJLkx2 YXJfb3V0IC0gZAkvKiByZWZlcmVuY2VkIERJRSAqLwotKwkuc2xlYjEyOAkwCS8qIG9mZnNldCAq LwotKzI6Ci0rCS40Ynl0ZQkuTHR5cGVfc3RydWN0cHRyIC0gZAkvKiBEV19BVF90eXBlICovCi0r Ci0rCS5ieXRlCTB4MAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgbWFpbiAqLwotKwotKwkuYnl0ZQkw eDAJLyogZW5kIG9mIGNoaWxkcmVuIG9mIENVICovCi0rZGVidWdfZW5kOgotKwotKwkuc2VjdGlv bgkuZGVidWdfYWJicmV2Ci0rLkxkZWJ1Z19hYmJyZXYwOgotKwotKwkudWxlYjEyOCAweDEJLyog KGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDExCS8qIChUQUc6IERXX1RBR19jb21waWxl X3VuaXQpICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVsZWIxMjgg MHgyNQkvKiAoRFdfQVRfcHJvZHVjZXIpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9z dHJpbmcpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0FUX2xhbmd1YWdlKSAqLwotKwkudWxl YjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRf bmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJLmJ5dGUJ MHgwCi0rCS5ieXRlCTB4MAotKwotKwkudWxlYjEyOCAweDIJLyogKGFiYnJldiBjb2RlKSAqLwot KwkudWxlYjEyOCAweDEzCS8qIChUQUc6IERXX1RBR19zdHJ1Y3R1cmVfdHlwZSkgKi8KLSsJLmJ5 dGUJMHgxCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FUX25h bWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGViMTI4 IDB4YgkvKiAoRFdfQVRfYnl0ZV9zaXplKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1f ZGF0YTEpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwotKwkudWxlYjEyOCAweDMJLyogKGFi YnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweGQJLyogKFRBRzogRFdfVEFHX21lbWJlcikgKi8K LSsJLmJ5dGUJMAkvKiBEV19jaGlsZHJlbl9ubyAqLwotKwkudWxlYjEyOCAweDMJLyogKERXX0FU X25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51bGVi MTI4IDB4NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZPUk1f cmVmNCkgKi8KLSsJLnVsZWIxMjggMHgzOAkvKiAoRFdfQVRfZGF0YV9tZW1iZXJfbG9jYXRpb24p ICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLmJ5dGUJMAotKwku Ynl0ZQkwCi0rCi0rCS51bGViMTI4IDB4NAkvKiAoYWJicmV2IGNvZGUpICovCi0rCS51bGViMTI4 IDB4MzQJLyogKFRBRzogRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYnl0ZQkweDAJLyogRFdfY2hp bGRyZW5feWVzICovCi0rCS51bGViMTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIx MjggMHg4CS8qIChEV19GT1JNX3N0cmluZykgKi8KLSsJLnVsZWIxMjggMHgwMgkvKiAoRFdfQVRf bG9jYXRpb24pICovCi0rCS51bGViMTI4IDB4YQkvKiAoRFdfRk9STV9ibG9jazEpICovCi0rCS51 bGViMTI4IDB4NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4IDB4MTMJLyogKERXX0ZP Uk1fcmVmNCkgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwotKwkudWxlYjEyOCAweDUJ LyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweGYJLyogKFRBRzogRFdfVEFHX3BvaW50 ZXJfdHlwZSkgKi8KLSsJLmJ5dGUJMHgwCS8qIERXX2NoaWxkcmVuX25vICovCi0rCS51bGViMTI4 IDB4YgkvKiAoRFdfQVRfYnl0ZV9zaXplKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1f ZGF0YTEpICovCi0rCS51bGViMTI4IDB4NDkJLyogKERXX0FUX3R5cGUpICovCi0rCS51bGViMTI4 IDB4MTMJLyogKERXX0ZPUk1fcmVmNCkgKi8KLSsJLmJ5dGUJMHgwCi0rCS5ieXRlCTB4MAotKwot KwkudWxlYjEyOAk2CQkJLyogQWJicmV2IGNvZGUgKi8KLSsJLnVsZWIxMjgJMHgyZQkJCS8qIERX X1RBR19zdWJwcm9ncmFtICovCi0rCS5ieXRlCQkxCQkJLyogaGFzX2NoaWxkcmVuICovCi0rCS51 bGViMTI4CTB4MwkJCS8qIERXX0FUX25hbWUgKi8KLSsJLnVsZWIxMjgJMHg4CQkJLyogRFdfRk9S TV9zdHJpbmcgKi8KLSsJLnVsZWIxMjgJMHgxMQkJCS8qIERXX0FUX2xvd19wYyAqLwotKwkudWxl YjEyOAkweDEJCQkvKiBEV19GT1JNX2FkZHIgKi8KLSsJLnVsZWIxMjgJMHgxMgkJCS8qIERXX0FU X2hpZ2hfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51bGVi MTI4CTB4NDkJCQkvKiBEV19BVF90eXBlICovCi0rCS51bGViMTI4CTB4MTMJCQkvKiBEV19GT1JN X3JlZjQgKi8KLSsJLnVsZWIxMjgJMHgzZgkJCS8qIERXX0FUX2V4dGVybmFsICovCi0rCS51bGVi MTI4CTB4YwkJCS8qIERXX0ZPUk1fZmxhZyAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRv ciAqLwotKwkuYnl0ZQkJMHgwCQkJLyogVGVybWluYXRvciAqLwotKwotKwkudWxlYjEyOCAweDcJ LyogKGFiYnJldiBjb2RlKSAqLwotKwkudWxlYjEyOCAweDI0CS8qIChUQUc6IERXX1RBR19iYXNl X3R5cGUpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJLnVsZWIxMjggMHhi CS8qIChEV19BVF9ieXRlX3NpemUpICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfRk9STV9kYXRh MSkgKi8KLSsJLnVsZWIxMjggMHgzZQkvKiAoRFdfQVRfZW5jb2RpbmcpICovCi0rCS51bGViMTI4 IDB4YgkvKiAoRFdfRk9STV9kYXRhMSkgKi8KLSsJLnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1l KSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkuYnl0ZQkwCi0r CS5ieXRlCTAKLSsKLSsJLmJ5dGUJMHgwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1 aXRlL2dkYi5kd2FyZjIvaW1wbHB0ci02NGJpdC5leHAKLUBAIC0wLDAgKzEsNTEgQEAKLSsjIENv cHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBw cm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBt b2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBl aXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBh bnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4g dGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJS QU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFC SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBH TlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBz aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3 LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2FkX2xpYiBkd2FyZi5leHAKLSsKLSsjIFRoaXMgdGVz dCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVz ZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBvcnRdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0r Ci0rc2V0IHRlc3RmaWxlICJpbXBscHRyLTY0Yml0IgotK3NldCBzcmNmaWxlICR7dGVzdGZpbGV9 LlMKLStzZXQgbWFpbmZpbGUgbWFpbi5jCi0rCi0rcHJvYyB0ZXN0IHsgZHdhcmZfdmVyc2lvbiBv ZmZzZXRfc2l6ZSBhZGRyX3NpemUgcmVmX2FkZHJfc2l6ZSB9IHsKLSsgICAgZ2xvYmFsIHRlc3Rm aWxlIHNyY2ZpbGUgbWFpbmZpbGUKLSsKLSsgICAgc2V0IG9wdHMge30KLSsgICAgZm9yZWFjaCBu IHsgZHdhcmZfdmVyc2lvbiBvZmZzZXRfc2l6ZSBhZGRyX3NpemUgcmVmX2FkZHJfc2l6ZSB9IHsK LSsJbGFwcGVuZCBvcHRzICJhZGRpdGlvbmFsX2ZsYWdzPS1EW3N0cmluZyB0b3VwcGVyICRuXT1b ZXhwciAiXCQkbiJdIgotKyAgICB9Ci0rCi0rICAgIHNldCBuYW1lICJkJHtkd2FyZl92ZXJzaW9u fW8ke29mZnNldF9zaXplfWEke2FkZHJfc2l6ZX1yJHtyZWZfYWRkcl9zaXplfSIKLSsgICAgc2V0 IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0tJHtuYW1lfQotKyAgICBpZiBbcHJlcGFyZV9mb3JfdGVz dGluZyAke3Rlc3RmaWxlfS5leHAgJGV4ZWN1dGFibGUgIiR7c3JjZmlsZX0gJHttYWluZmlsZX0i ICRvcHRzXSB7Ci0rCXJldHVybiAtMQotKyAgICB9Ci0rCi0rICAgIGlmICFbcnVudG9fbWFpbl0g ewotKwlyZXR1cm4gLTEKLSsgICAgfQotKwotKyAgICBnZGJfdGVzdCAicC94IHAtPmYiICIgPSAw eDEwMTAxMDEiICRuYW1lCi0rfQotKwotKyMgICAgRFdBUkZfVkVSU0lPTiBPRkZTRVRfU0laRSBB RERSX1NJWkUgUkVGX0FERFJfU0laRQotK3Rlc3QgMiA4IDQgNAotK3Rlc3QgMiA0IDggOAotK3Rl c3QgMyA4IDQgOAotK3Rlc3QgMyA0IDggNAotCgpkaWZmIC0tZ2l0IGEvZ2RiLW9wdGltaXplZC1v dXQtaW50ZXJuYWwtZXJyb3IucGF0Y2ggYi9nZGItb3B0aW1pemVkLW91dC1pbnRlcm5hbC1lcnJv ci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU4OGNlNi4uMDAwMDAwMAot LS0gYS9nZGItb3B0aW1pemVkLW91dC1pbnRlcm5hbC1lcnJvci5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDMwMiArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMS0wOS9tc2cwMDQ0OS5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIEZpeCBpbnRlcm5hbCBlcnJv ciBvbiBvcHRpbWl6ZWQtb3V0IHZhbHVlcyAocmVncmVzc2lvbiBieSBtZSkKLQotSGksCi0KLXNp bmNlOgotCVJlOiBbcGF0Y2hdIENvZGUgY2xlYW51cDogSW50cm9kdWNlIGFsbG9jYXRlX29wdGlt aXplZF9vdXRfdmFsdWUKLQlodHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAx MS0wNy9tc2cwMDMyNy5odG1sCi0JYWNmZTg1ZjU2MDc1OTEwYTNiYTVlOGI3NjE4OWUwNzcwMDc5 YjhkMQotY2FuIG9jY3VyOgotCShnZGIpIHAgcC0+ZgotCXZhbG9wcy5jOjExMTg6IGludGVybmFs LWVycm9yOiBVbmV4cGVjdGVkIGxhenkgdmFsdWUgdHlwZS4KLQlBIHByb2JsZW0gaW50ZXJuYWwg dG8gR0RCIGhhcyBiZWVuIGRldGVjdGVkLAotCi1pbiB0aGF0IG1haWwgcmVmZXJlbmNlZCBhYm92 ZToKLSMgSXQgaXMgdHJ1ZSBpdCB3b3VsZCBiZSBkZWZpbml0ZWx5IGEgYnVnIGluIGEgY29kZSBp bmNvbXBhdGlibGUgd2l0aCBzdWNoCi0jIGNoYW5nZSBzbyBvbmUgbWF5IHJhdGhlciBmaXggdGhh dCBwb3NzaWJsZSByZWdyZXNzaW9uIHRoZXJlLgotCi1zbyB0aGlzIHRlc3RjYXNlIGV4cGxvaXRz IHN1Y2ggY2FzZS4gIFRoZSBwcm9ibGVtIGlzIGZvcm1lcmx5IHRoZSBjb2RlCi1hbGxvY2F0ZWQg KGluIHNvbWUgY2FzZXMpIG9wdGltaXplZCBvdXQgdmFsdWVzIGFzIG5vbi1sYXp5IG9uZXMuICBO b3cgdGhleSBhcmUKLWFsbG9jYXRlZCBhbGwgYXMgbGF6eSAoKikgd2hpY2ggYnJlYWtzIHNvbWUg Y29kZSBub3QgZXhwZWN0aW5nIGxhenkgdmFsdWVzLgotCi0oKikgU3VjaCBsYXp5IG9wdGltaXpl ZCBvdXQgdmFsdWUgc3RpbGwgZ2V0cyBzaWxlbnRseSBhbGxvY2F0ZV92YWx1ZV9jb250ZW50cwot ICAgIGJ5IHZhbHVlX2ZldGNoX2xhenksIGFsbG9jYXRlX3ZhbHVlX2NvbnRlbnRzIHNob3VsZCBi ZSBzdXBwcmVzc2VkIGluIHN1Y2gKLSAgICBjYXNlOyBzdWNoIG1vcmUgcmFkaWNhbCBjaGFuZ2Ug aGFzIG5ldmVyIGJlZW4gbWFkZS4KLQotRm9ybWVybHkgKGluY2wuIGdkYi03LjMpIGRpZDoKLQko Z2RiKSBwIHAtPmYKLQkkMSA9IDAKLXdoaWNoIHdhcyBhbHNvIHdyb25nLCAoKHN0cnVjdCAqKSA8 b3B0aW1pemVkIG91dD4pLT5maWVsZCBzaG91bGQgYmUgSU1PIHN0aWxsCi08b3B0aW1pemVkIG91 dD47IGp1c3QgaXQgYmVjYW1lIGludGVybmFsLWVycm9yIG5vdy4KLQotR0RCIHVzdWFsbHkgZG9l cyByZXF1aXJlX25vdF9vcHRpbWl6ZWRfb3V0IHRocm93aW5nIGVycm9yKCkgd2hlbiBpdCBtZWV0 cyBhbnkKLWZpcnN0IDxvcHRpbWl6ZWQgb3V0PiB2YWx1ZS4gIEkgaGF2ZSBqdXN0IHByb2R1Y2Vk IG5ldyBvcHRpbWl6ZWQgdmFsdWUKLWluc3RlYWQ7IHJlcXVpcmVfbm90X29wdGltaXplZF9vdXQg aXMgbm90IGV4cG9ydGVkIGFuZCBJIGZpbmQgaXQgYmV0dGVyIHRoaXMKLXdheS4KLQotRm9sbG93 aW5nIHRoZSBydWxlIHRoYXQgaXQgaXMgYmV0dGVyIGlmIEdEQiBkb2VzIHNvbWV0aGluZyB3cm9u ZyByYXRoZXIgdGhlbgotaXQgdGhyb3dzIGludGVybmFsLWVycm9yIHRvIG1ha2UgdGhlIHBhdGNo IGZyb20gSnVseSBhYm92ZSBmdWxseSBzYWZlIG9uZQotd291bGQgaGF2ZSB0byBjaGFuZ2UgYWxs b2NhdGVfb3B0aW1pemVkX291dF92YWx1ZSB0byBhbGxvY2F0ZSBldmVyeXRoaW5nIGFzCi1ub24t bGF6eS4gIEkgZmluZCB0aGF0IGFzIGEgdG9vIHVnbHkgd29ya2Fyb3VuZCBvZiB0aGUgY29kZWJh c2UuCi0KLU5vIHJlZ3Jlc3Npb25zIG9uIHt4ODZfNjQseDg2XzY0LW0zMixpNjg2fS1mZWRvcmEx NnByZS1saW51eC1nbnUuCi0KLQotQW5kcmUsIGRvIHlvdSBzdGlsbCBzZWUgdGhlIGJ1ZyBldmVu IHdpdGggdGhpcyBwYXRjaD8KLQotCi1UaGFua3MsCi1KYW4KLQotCi1nZGIvCi0yMDExLTA5LTI2 ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0KLQlGaXggaW50 ZXJuYWwgZXJyb3IgcmVncmVzc2lvbi4KLQkqIHZhbHVlLmMgKHZhbHVlX3ByaW1pdGl2ZV9maWVs ZCk6IEhhbmRsZSB2YWx1ZV9vcHRpbWl6ZWRfb3V0LiAgTW92ZQotCXBhY2tlZCBiaXRmaWVsZHMg Y29tbWVudC4KLQotZ2RiL3Rlc3RzdWl0ZS8KLTIwMTEtMDktMjYgIEphbiBLcmF0b2NodmlsICA8 amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBpbnRlcm5hbCBlcnJvciByZWdyZXNz aW9uLgotCSogZ2RiLmR3YXJmMi9pbXBscHRyLW9wdGltaXplZC1vdXQuUzogTmV3IGZpbGUuCi0J KiBnZGIuZHdhcmYyL2ltcGxwdHItb3B0aW1pemVkLW91dC5leHA6IE5ldyBmaWxlLgotCi0tLS0g YS9nZGIvdmFsdWUuYwotKysrIGIvZ2RiL3ZhbHVlLmMKLUBAIC0yNDgyLDE2ICsyNDgyLDE5IEBA IHZhbHVlX3ByaW1pdGl2ZV9maWVsZCAoc3RydWN0IHZhbHVlICphcmcxLCBpbnQgb2Zmc2V0LAot ICAgICAgZGVzY3JpcHRpb24gY29ycmVjdGx5LiAgKi8KLSAgIGNoZWNrX3R5cGVkZWYgKHR5cGUp OwotIAotLSAgLyogSGFuZGxlIHBhY2tlZCBmaWVsZHMgKi8KLS0KLS0gIGlmIChUWVBFX0ZJRUxE X0JJVFNJWkUgKGFyZ190eXBlLCBmaWVsZG5vKSkKLSsgIGlmICh2YWx1ZV9vcHRpbWl6ZWRfb3V0 IChhcmcxKSkKLSsgICAgdiA9IGFsbG9jYXRlX29wdGltaXplZF9vdXRfdmFsdWUgKHR5cGUpOwot KyAgZWxzZSBpZiAoVFlQRV9GSUVMRF9CSVRTSVpFIChhcmdfdHlwZSwgZmllbGRubykpCi0gICAg IHsKLS0gICAgICAvKiBDcmVhdGUgYSBuZXcgdmFsdWUgZm9yIHRoZSBiaXRmaWVsZCwgd2l0aCBi aXRwb3MgYW5kIGJpdHNpemUKLSsgICAgICAvKiBIYW5kbGUgcGFja2VkIGZpZWxkcy4KLSsKLSsJ IENyZWF0ZSBhIG5ldyB2YWx1ZSBmb3IgdGhlIGJpdGZpZWxkLCB3aXRoIGJpdHBvcyBhbmQgYml0 c2l6ZQotIAkgc2V0LiAgSWYgcG9zc2libGUsIGFycmFuZ2Ugb2Zmc2V0IGFuZCBiaXRwb3Mgc28g dGhhdCB3ZSBjYW4KLSAJIGRvIGEgc2luZ2xlIGFsaWduZWQgcmVhZCBvZiB0aGUgc2l6ZSBvZiB0 aGUgY29udGFpbmluZyB0eXBlLgotIAkgT3RoZXJ3aXNlLCBhZGp1c3Qgb2Zmc2V0IHRvIHRoZSBi eXRlIGNvbnRhaW5pbmcgdGhlIGZpcnN0Ci0gCSBiaXQuICBBc3N1bWUgdGhhdCB0aGUgYWRkcmVz cywgb2Zmc2V0LCBhbmQgZW1iZWRkZWQgb2Zmc2V0Ci0gCSBhcmUgc3VmZmljaWVudGx5IGFsaWdu ZWQuICAqLwotKwotICAgICAgIGludCBiaXRwb3MgPSBUWVBFX0ZJRUxEX0JJVFBPUyAoYXJnX3R5 cGUsIGZpZWxkbm8pOwotICAgICAgIGludCBjb250YWluZXJfYml0c2l6ZSA9IFRZUEVfTEVOR1RI ICh0eXBlKSAqIDg7Ci0gCi0tLS0gL2Rldi9udWxsCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5k d2FyZjIvaW1wbHB0ci1vcHRpbWl6ZWQtb3V0LlMKLUBAIC0wLDAgKzEsMTY2IEBACi0rLyogQ29w eXJpZ2h0IDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAg VGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFu ZC9vciBtb2RpZnkKLSsgICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotKyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k YXRpb247IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCi0rICAgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAg IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKLSsgICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgot KwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFs IFB1YmxpYyBMaWNlbnNlCi0rICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLwotKwotKwkuc2VjdGlvbgkuZGVi dWdfaW5mbwotK2Q6Ci0rCS5sb25nCWRlYnVnX2VuZCAtIDFmCS8qIExlbmd0aCBvZiBDb21waWxh dGlvbiBVbml0IEluZm8gKi8KLSsxOgotKwkuMmJ5dGUJMHgzCS8qIERXQVJGIHZlcnNpb24gbnVt YmVyICovCi0rCS5sb25nCS5MZGVidWdfYWJicmV2MAkvKiBPZmZzZXQgSW50byBBYmJyZXYuIFNl Y3Rpb24gKi8KLSsJLmJ5dGUJMHg0CS8qIFBvaW50ZXIgU2l6ZSAoaW4gYnl0ZXMpICovCi0rCS51 bGViMTI4IDB4MQkvKiAoRElFICgweGIpIERXX1RBR19jb21waWxlX3VuaXQpICovCi0rCS5hc2Np aSAiR05VIEMgNC40LjNcMCIJLyogRFdfQVRfcHJvZHVjZXIgKi8KLSsJLmJ5dGUJMHgxCS8qIERX X0FUX2xhbmd1YWdlICovCi0rCS5hc2NpaSAiMS5jXDAiCS8qIERXX0FUX25hbWUgKi8KLSsKLSsu THR5cGVfaW50OgotKwkudWxlYjEyOCAweDcJLyogRFdfVEFHX2Jhc2VfdHlwZSAqLwotKwkuYnl0 ZQkweDQJLyogRFdfQVRfYnl0ZV9zaXplICovCi0rCS5ieXRlCTB4NQkvKiBEV19BVF9lbmNvZGlu ZyAqLwotKwkuYXNjaWkgImludFwwIgkvKiBEV19BVF9uYW1lICovCi0rCi0rLkx0eXBlX3N0cnVj dDoKLSsJLnVsZWIxMjggMHgyCS8qIERXX1RBR19zdHJ1Y3R1cmVfdHlwZSAqLwotKwkuYXNjaWkg InNcMCIJLyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQk0CS8qIERXX0FUX2J5dGVfc2l6ZSAqLwot KwotKwkudWxlYjEyOCAweDMJLyogRFdfVEFHX21lbWJlciAqLwotKwkuYXNjaWkgImZcMCIJLyog RFdfQVRfbmFtZSAqLwotKwkuNGJ5dGUJLkx0eXBlX2ludCAtIGQJLyogRFdfQVRfdHlwZSAqLwot KwkuYnl0ZQkwCS8qIERXX0FUX2RhdGFfbWVtYmVyX2xvY2F0aW9uICovCi0rCi0rCS5ieXRlCTB4 MAkvKiBlbmQgb2YgY2hpbGRyZW4gb2YgRFdfVEFHX3N0cnVjdHVyZV90eXBlICovCi0rCi0rCS51 bGViMTI4CTYJCQkvKiBBYmJyZXY6IERXX1RBR19zdWJwcm9ncmFtICovCi0rCS5hc2NpaQkJIm1h aW5cMCIJCS8qIERXX0FUX25hbWUgKi8KLSsJLjRieXRlCQltYWluCQkJLyogRFdfQVRfbG93X3Bj ICovCi0rCS40Ynl0ZQkJbWFpbiArIDB4MTAwCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS40Ynl0 ZQkJLkx0eXBlX2ludCAtIGQJCS8qIERXX0FUX3R5cGUgKi8KLSsJLmJ5dGUJCTEJCQkvKiBEV19B VF9leHRlcm5hbCAqLwotKwotKy5MdHlwZV9zdHJ1Y3RwdHI6Ci0rCS51bGViMTI4IDB4NQkvKiBE V19UQUdfcG9pbnRlcl90eXBlICovCi0rCS5ieXRlCTB4NAkvKiBEV19BVF9ieXRlX3NpemUgKi8K LSsJLmxvbmcJLkx0eXBlX3N0cnVjdCAtIGQJLyogRFdfQVRfdHlwZSAqLwotKwotKy5MdmFyX291 dDoKLSsJLnVsZWIxMjggMHg0CS8qIChEV19UQUdfdmFyaWFibGUpICovCi0rCS5hc2NpaSAidlww IgkvKiBEV19BVF9uYW1lICovCi0rCS5ieXRlCTAJLyogRFdfQVRfbG9jYXRpb246IERXX0ZPUk1f YmxvY2sxICovCi0rCS40Ynl0ZQkuTHR5cGVfc3RydWN0IC0gZAkvKiBEV19BVF90eXBlICovCi0r Ci0rCS51bGViMTI4IDB4NAkvKiAoRFdfVEFHX3ZhcmlhYmxlKSAqLwotKwkuYXNjaWkgInBcMCIJ LyogRFdfQVRfbmFtZSAqLwotKwkuYnl0ZQkyZiAtIDFmCS8qIERXX0FUX2xvY2F0aW9uOiBEV19G T1JNX2Jsb2NrMSAqLwotKzE6Ci0rCS5ieXRlCTB4ZjIJLyogRFdfT1BfR05VX2ltcGxpY2l0X3Bv aW50ZXIgKi8KLSsJLjRieXRlCS5MdmFyX291dCAtIGQJLyogcmVmZXJlbmNlZCBESUUgKi8KLSsJ LnNsZWIxMjgJMAkvKiBvZmZzZXQgKi8KLSsyOgotKwkuNGJ5dGUJLkx0eXBlX3N0cnVjdHB0ciAt IGQJLyogRFdfQVRfdHlwZSAqLwotKwotKwkuYnl0ZQkweDAJLyogZW5kIG9mIGNoaWxkcmVuIG9m IG1haW4gKi8KLSsKLSsJLmJ5dGUJMHgwCS8qIGVuZCBvZiBjaGlsZHJlbiBvZiBDVSAqLwotK2Rl YnVnX2VuZDoKLSsKLSsJLnNlY3Rpb24JLmRlYnVnX2FiYnJldgotKy5MZGVidWdfYWJicmV2MDoK LSsKLSsJLnVsZWIxMjggMHgxCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgxMQkv KiAoVEFHOiBEV19UQUdfY29tcGlsZV91bml0KSAqLwotKwkuYnl0ZQkweDEJLyogRFdfY2hpbGRy ZW5feWVzICovCi0rCS51bGViMTI4IDB4MjUJLyogKERXX0FUX3Byb2R1Y2VyKSAqLwotKwkudWxl YjEyOCAweDgJLyogKERXX0ZPUk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19B VF9sYW5ndWFnZSkgKi8KLSsJLnVsZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwku dWxlYjEyOCAweDMJLyogKERXX0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9S TV9zdHJpbmcpICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkweDAKLSsKLSsJLnVsZWIxMjggMHgy CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgxMwkvKiAoVEFHOiBEV19UQUdfc3Ry dWN0dXJlX3R5cGUpICovCi0rCS5ieXRlCTB4MQkvKiBEV19jaGlsZHJlbl95ZXMgKi8KLSsJLnVs ZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZPUk1f c3RyaW5nKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0FUX2J5dGVfc2l6ZSkgKi8KLSsJLnVs ZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkuYnl0ZQkwCi0rCS5ieXRlCTAKLSsK LSsJLnVsZWIxMjggMHgzCS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHhkCS8qIChU QUc6IERXX1RBR19tZW1iZXIpICovCi0rCS5ieXRlCTAJLyogRFdfY2hpbGRyZW5fbm8gKi8KLSsJ LnVsZWIxMjggMHgzCS8qIChEV19BVF9uYW1lKSAqLwotKwkudWxlYjEyOCAweDgJLyogKERXX0ZP Uk1fc3RyaW5nKSAqLwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90eXBlKSAqLwotKwkudWxl YjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS51bGViMTI4IDB4MzgJLyogKERXX0FU X2RhdGFfbWVtYmVyX2xvY2F0aW9uKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0 YTEpICovCi0rCS5ieXRlCTAKLSsJLmJ5dGUJMAotKwotKwkudWxlYjEyOCAweDQJLyogKGFiYnJl diBjb2RlKSAqLwotKwkudWxlYjEyOCAweDM0CS8qIChUQUc6IERXX1RBR192YXJpYWJsZSkgKi8K LSsJLmJ5dGUJMHgwCS8qIERXX2NoaWxkcmVuX3llcyAqLwotKwkudWxlYjEyOCAweDMJLyogKERX X0FUX25hbWUpICovCi0rCS51bGViMTI4IDB4OAkvKiAoRFdfRk9STV9zdHJpbmcpICovCi0rCS51 bGViMTI4IDB4MDIJLyogKERXX0FUX2xvY2F0aW9uKSAqLwotKwkudWxlYjEyOCAweGEJLyogKERX X0ZPUk1fYmxvY2sxKSAqLwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19BVF90eXBlKSAqLwotKwku dWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRlCTB4MAotKwkuYnl0ZQkw eDAKLSsKLSsJLnVsZWIxMjggMHg1CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHhm CS8qIChUQUc6IERXX1RBR19wb2ludGVyX3R5cGUpICovCi0rCS5ieXRlCTB4MAkvKiBEV19jaGls ZHJlbl9ubyAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0FUX2J5dGVfc2l6ZSkgKi8KLSsJLnVs ZWIxMjggMHhiCS8qIChEV19GT1JNX2RhdGExKSAqLwotKwkudWxlYjEyOCAweDQ5CS8qIChEV19B VF90eXBlKSAqLwotKwkudWxlYjEyOCAweDEzCS8qIChEV19GT1JNX3JlZjQpICovCi0rCS5ieXRl CTB4MAotKwkuYnl0ZQkweDAKLSsKLSsJLnVsZWIxMjgJNgkJCS8qIEFiYnJldiBjb2RlICovCi0r CS51bGViMTI4CTB4MmUJCQkvKiBEV19UQUdfc3VicHJvZ3JhbSAqLwotKwkuYnl0ZQkJMQkJCS8q IGhhc19jaGlsZHJlbiAqLwotKwkudWxlYjEyOAkweDMJCQkvKiBEV19BVF9uYW1lICovCi0rCS51 bGViMTI4CTB4OAkJCS8qIERXX0ZPUk1fc3RyaW5nICovCi0rCS51bGViMTI4CTB4MTEJCQkvKiBE V19BVF9sb3dfcGMgKi8KLSsJLnVsZWIxMjgJMHgxCQkJLyogRFdfRk9STV9hZGRyICovCi0rCS51 bGViMTI4CTB4MTIJCQkvKiBEV19BVF9oaWdoX3BjICovCi0rCS51bGViMTI4CTB4MQkJCS8qIERX X0ZPUk1fYWRkciAqLwotKwkudWxlYjEyOAkweDQ5CQkJLyogRFdfQVRfdHlwZSAqLwotKwkudWxl YjEyOAkweDEzCQkJLyogRFdfRk9STV9yZWY0ICovCi0rCS51bGViMTI4CTB4M2YJCQkvKiBEV19B VF9leHRlcm5hbCAqLwotKwkudWxlYjEyOAkweGMJCQkvKiBEV19GT1JNX2ZsYWcgKi8KLSsJLmJ5 dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3IgKi8KLSsJLmJ5dGUJCTB4MAkJCS8qIFRlcm1pbmF0b3Ig Ki8KLSsKLSsJLnVsZWIxMjggMHg3CS8qIChhYmJyZXYgY29kZSkgKi8KLSsJLnVsZWIxMjggMHgy NAkvKiAoVEFHOiBEV19UQUdfYmFzZV90eXBlKSAqLwotKwkuYnl0ZQkwCS8qIERXX2NoaWxkcmVu X25vICovCi0rCS51bGViMTI4IDB4YgkvKiAoRFdfQVRfYnl0ZV9zaXplKSAqLwotKwkudWxlYjEy OCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGViMTI4IDB4M2UJLyogKERXX0FUX2Vu Y29kaW5nKSAqLwotKwkudWxlYjEyOCAweGIJLyogKERXX0ZPUk1fZGF0YTEpICovCi0rCS51bGVi MTI4IDB4MwkvKiAoRFdfQVRfbmFtZSkgKi8KLSsJLnVsZWIxMjggMHg4CS8qIChEV19GT1JNX3N0 cmluZykgKi8KLSsJLmJ5dGUJMAotKwkuYnl0ZQkwCi0rCi0rCS5ieXRlCTB4MAotLS0tIC9kZXYv bnVsbAotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuZHdhcmYyL2ltcGxwdHItb3B0aW1pemVkLW91 dC5leHAKLUBAIC0wLDAgKzEsMzcgQEAKLSsjIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdhcmUg Rm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlv dSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJt cyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0 aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNl bnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBU aGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz ZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJU SUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBm b3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkg b2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJv Z3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLStsb2Fk X2xpYiBkd2FyZi5leHAKLSsKLSsjIFRoaXMgdGVzdCBjYW4gb25seSBiZSBydW4gb24gdGFyZ2V0 cyB3aGljaCBzdXBwb3J0IERXQVJGLTIgYW5kIHVzZSBnYXMuCi0raWYgeyFbZHdhcmYyX3N1cHBv cnRdfSB7Ci0rICAgIHJldHVybiAwICAKLSt9Ci0rCi0rc2V0IHRlc3RmaWxlICJpbXBscHRyLW9w dGltaXplZC1vdXQiCi0rc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uUwotK3NldCBtYWluZmlsZSBt YWluLmMKLStzZXQgZXhlY3V0YWJsZSAke3Rlc3RmaWxlfQotK3NldCBiaW5maWxlICR7b2JqZGly fS8ke3N1YmRpcn0vJHtleGVjdXRhYmxlfQotKwotK2lmIFtwcmVwYXJlX2Zvcl90ZXN0aW5nICR7 dGVzdGZpbGV9LmV4cCAkZXhlY3V0YWJsZSAiJHtzcmNmaWxlfSAke21haW5maWxlfSIge31dIHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotKyMgRFdfT1BfR05VX2ltcGxpY2l0X3BvaW50ZXIgaW1w bGVtZW50YXRpb24gcmVxdWlyZXMgYSB2YWxpZCBmcmFtZS4KLStpZiAhW3J1bnRvX21haW5dIHsK LSsgICAgcmV0dXJuIC0xCi0rfQotKwotK2dkYl90ZXN0ICJwIHAtPmYiICIgPSA8b3B0aW1pemVk IG91dD4iCi0KCmRpZmYgLS1naXQgYS9nZGItcmhlbDUtY29tcGF0LnBhdGNoIGIvZ2RiLXJoZWw1 LWNvbXBhdC5wYXRjaAppbmRleCA3ZGVmZGRiLi45ZjRjYmEzIDEwMDY0NAotLS0gYS9nZGItcmhl bDUtY29tcGF0LnBhdGNoCisrKyBiL2dkYi1yaGVsNS1jb21wYXQucGF0Y2gKQEAgLTEsMTEgKzEs MTEgQEAKIGdkYi9saW51eC1uYXQuYzoKIC0gV29ya2Fyb3VuZCBSSEVMLTUga2VybmVscyBmb3Ig ZGV0YWNoaW5nIFNJR1NUT1BwZWQgcHJvY2Vzc2VzIChCWiA0OTg1OTUpLgogCi1JbmRleDogZ2Ri LTcuMi41MC4yMDExMDMyOC9nZGIvZWxmcmVhZC5jCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvZWxmcmVhZC5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDExMDMyOC5vcmln L2dkYi9lbGZyZWFkLmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMJMjAxMS0wMy0yOCAxODo0ODoxOS4wMDAw MDAwMDAgKzAyMDAKLUBAIC0xMDgzLDcgKzEwODMsNyBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVy X3JldHVybl9zdG9wIChzdHJ1CistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi9lbGZy ZWFkLmMJMjAxMS0xMi0xOSAwMTo0MTozMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUw LjIwMTExMjE4L2dkYi9lbGZyZWFkLmMJMjAxMS0xMi0xOSAwMjozMTozMC45OTgyNDE3NjAgKzAx MDAKK0BAIC0xMDUzLDcgKzEwNTMsNyBAQCBlbGZfZ251X2lmdW5jX3Jlc29sdmVyX3JldHVybl9z dG9wIChzdHJ1CiAgI2RlZmluZSBCVUlMRF9JRF9WRVJCT1NFX05PTkUgMAogICNkZWZpbmUgQlVJ TERfSURfVkVSQk9TRV9GSUxFTkFNRVMgMQogICNkZWZpbmUgQlVJTERfSURfVkVSQk9TRV9CSU5B UllfUEFSU0UgMgpAQCAtMTQsNyArMTQsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9n ZGIvZWxmcmVhZC5jCiAgc3RhdGljIHZvaWQKICBzaG93X2J1aWxkX2lkX3ZlcmJvc2UgKHN0cnVj dCB1aV9maWxlICpmaWxlLCBpbnQgZnJvbV90dHksCiAgCQkgICAgICAgc3RydWN0IGNtZF9saXN0 X2VsZW1lbnQgKmMsIGNvbnN0IGNoYXIgKnZhbHVlKQotQEAgLTIxNzMsOCArMjE3MywxMCBAQCBm aW5kX3NlcGFyYXRlX2RlYnVnX2ZpbGVfYnlfYnVpbGRpZCAoc3RyCitAQCAtMjE3Miw4ICsyMTcy LDEwIEBAIGZpbmRfc2VwYXJhdGVfZGVidWdfZmlsZV9ieV9idWlsZGlkIChzdHIKICAgICAgICBp ZiAoYnVpbGRfaWRfbmFtZSAhPSBOVUxMCiAgCSAgJiYgZmlsZW5hbWVfY21wIChidWlsZF9pZF9u YW1lLCBvYmpmaWxlLT5uYW1lKSA9PSAwKQogICAgICAgICAgewpAQCAtMjUsMTEgKzI1LDExIEBA IEluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9lbGZyZWFkLmMKICAJICB4ZnJlZSAoYnVp bGRfaWRfbmFtZSk7CiAgCX0KICAgICAgICBlbHNlIGlmIChidWlsZF9pZF9uYW1lICE9IE5VTEwp Ci1JbmRleDogZ2RiLTcuMi41MC4yMDExMDMyOC9nZGIvY29yZWxvdy5jCitJbmRleDogZ2RiLTcu NC41MC4yMDExMTIxOC9nZGIvY29yZWxvdy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4y MDExMDMyOC5vcmlnL2dkYi9jb3JlbG93LmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9jb3JlbG93LmMJMjAxMS0wMy0yOCAx ODo0Nzo1Ni4wMDAwMDAwMDAgKzAyMDAKLUBAIC0yODIsNyArMjgyLDcgQEAgYWRkX3RvX3RocmVh ZF9saXN0IChiZmQgKmFiZmQsIGFzZWN0aW9uIAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3Jp Zy9nZGIvY29yZWxvdy5jCTIwMTEtMTItMTkgMDE6MTY6MTUuMDAwMDAwMDAwICswMTAwCisrKysg Z2RiLTcuNC41MC4yMDExMTIxOC9nZGIvY29yZWxvdy5jCTIwMTEtMTItMTkgMDI6MzE6MzAuOTk4 MjQxNzYwICswMTAwCitAQCAtMjgyLDcgKzI4Miw3IEBAIGFkZF90b190aHJlYWRfbGlzdCAoYmZk ICphYmZkLCBhc2VjdGlvbgogICAgICBpbmZlcmlvcl9wdGlkID0gcHRpZDsJCQkvKiBZZXMsIG1h a2UgaXQgY3VycmVudC4gICovCiAgfQogIApAQCAtMzgsMzIgKzM4LDMgQEAgSW5kZXg6IGdkYi03 LjIuNTAuMjAxMTAzMjgvZ2RiL2NvcmVsb3cuYwogIAogIHN0YXRpYyB2b2lkCiAgYnVpbGRfaWRf bG9jYXRlX2V4ZWMgKGludCBmcm9tX3R0eSkKLUluZGV4OiBnZGItNy4yLjUwLjIwMTEwMzI4L2dk Yi9saW51eC1uYXQuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMTAzMjgub3JpZy9n ZGIvbGludXgtbmF0LmMJMjAxMS0wMy0yOCAxODo0NjoxNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTEwMzI4L2dkYi9saW51eC1uYXQuYwkyMDExLTAzLTI4IDE4OjQ3OjU2LjAw MDAwMDAwMCArMDIwMAotQEAgLTE3NzQsOCArMTc3NCwyMiBAQCBnZXRfcGVuZGluZ19zdGF0dXMg KHN0cnVjdCBsd3BfaW5mbyAqbHAsCi0gCQkJICAgIHRhcmdldF9zaWduYWxfdG9fc3RyaW5nIChz aWdubykpOwotICAgICB9Ci0gCi0tICBpZiAoKnN0YXR1cyA9PSAwICYmIEdFVF9QSUQgKGxwLT5w dGlkKSA9PSBwaWRfd2FzX3N0b3BwZWQpCi0tICAgICpzdGF0dXMgPSBXX1NUT1BDT0RFIChTSUdT VE9QKTsKLSsgIC8qIFdvcmthcm91bmQgUkhFTC01IGtlcm5lbCB3aGljaCBoYXMgdW5yZWxpYWJs ZSBQVFJBQ0VfREVUQUNILCBTSUdTVE9QICh0aGF0Ci0rICAgICBtYW55IFRJRHMgYXJlIGxlZnQg dW5zdG9wcGVkKS4gIFNlZSBSSCBCdWcgNDk2NzMyLiAgKi8KLSsgIGlmIChHRVRfUElEIChscC0+ cHRpZCkgPT0gcGlkX3dhc19zdG9wcGVkKQotKyAgICB7Ci0rICAgICAgaW50IGVycjsKLSsKLSsg ICAgICBlcnJubyA9IDA7Ci0rICAgICAgZXJyID0ga2lsbF9sd3AgKEdFVF9MV1AgKGxwLT5wdGlk KSwgU0lHU1RPUCk7Ci0rICAgICAgaWYgKGRlYnVnX2xpbnV4X25hdCkKLSsJewotKwkgIGZwcmlu dGZfdW5maWx0ZXJlZCAoZ2RiX3N0ZGxvZywKLSsJCQkgICAgICAiU0M6ICBsd3Aga2lsbCAlZCAl c1xuIiwKLSsJCQkgICAgICBlcnIsCi0rCQkJICAgICAgZXJybm8gPyBzYWZlX3N0cmVycm9yIChl cnJubykgOiAiRVJSTk8tT0siKTsKLSsJfQotKyAgICB9Ci0gCi0gICByZXR1cm4gMDsKLSB9Cgpk aWZmIC0tZ2l0IGEvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNoIGIvZ2RiLXJoZWw1LWdjYzQ0LnBhdGNo CmluZGV4IGE1YTY1NjcuLmNjYmIzMGEgMTAwNjQ0Ci0tLSBhL2dkYi1yaGVsNS1nY2M0NC5wYXRj aAorKysgYi9nZGItcmhlbDUtZ2NjNDQucGF0Y2gKQEAgLTEsMTAgKzEsMTAgQEAKIFNvbWUgZnVu Y3Rpb25hbGl0eSBpcyBhdmFpbGFibGUgb24gUkhFTC01LjQrIG9ubHkgd2l0aCBnY2M0NCBhbmQg Z2ZvcnRyYW40NCBhcwogdGhlIGRlZmF1bHQgZ2NjIGFuZCBnZm9ydHJhbiBiaW5hcmllcyBhcmUg ZnJvbSBnY2MtNC4xLgogCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5iYXNlL3ZsYS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvdmxhLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAxMC0xMS0xNiAwOToyNjo1MC4w MDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LmJhc2UvdmxhLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdk Yi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAJMjAx MS0xMi0xOCAyMzozNToyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0NTMy Nzg0NCArMDEwMAogQEAgLTE2LDcgKzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlIHZsYQogIHNldCBz cmNmaWxlICR7dGVzdGZpbGV9LmMKQEAgLTMyLDExICszMiwxMSBAQCBJbmRleDogZ2RiLTcuMi41 MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3ZsYS5leHAKICAgICAgdW50ZXN0ZWQg IkNvdWxkbid0IGNvbXBpbGUgdGVzdCBwcm9ncmFtIgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRl eDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVy cC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uv YnJlYWstaW50ZXJwLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3Jp Zy9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMC0xMC0xMiAyMDo0 MTowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3Vp dGUvZ2RiLmJhc2UvYnJlYWstaW50ZXJwLmV4cAkyMDEwLTExLTE2IDA5OjI4OjQwLjAwMDAwMDAw MCArMDEwMAotQEAgLTMzLDkgKzMzLDI5IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZp bGVfbGlifV0geworLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dk Yi5iYXNlL2JyZWFrLWludGVycC5leHAJMjAxMS0xMi0xOSAwMjoyMTo1Ni4wMDAwMDAwMDAgKzAx MDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYnJlYWst aW50ZXJwLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0NTMyNzg0NCArMDEwMAorQEAgLTM0LDkg KzM0LDI5IEBAIGlmIFtnZXRfY29tcGlsZXJfaW5mbyAke2JpbmZpbGVfbGlifV0gewogICAgICBy ZXR1cm4gLTEKICB9CiAgCkBAIC02NywxMCArNjcsMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAx MDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9icmVhay1pbnRlcnAuZXhwCiAgICAgIHJldHVy biAtMQogIH0KICAKLUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2Ri LmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2Ri L3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Z2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9u LWJsb2NrLmV4cAkyMDEwLTExLTE2IDA5OjI2OjU0LjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03 LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhw CTIwMTAtMTEtMTYgMDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDEx MTIxOC5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJsb2NrLmV4cAkyMDEx LTEyLTE5IDAxOjMxOjI0LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgv Z2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9jb21tb24tYmxvY2suZXhwCTIwMTEtMTItMTkgMDI6 Mjc6MTYuNzQ2MzI3ODQwICswMTAwCiBAQCAtMjAsNyArMjAsMjUgQEAgc2V0IHRlc3RmaWxlICJj b21tb24tYmxvY2siCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0ZmlsZX0uZjkwCiAgc2V0IGJpbmZpbGUg JHtvYmpkaXJ9LyR7c3ViZGlyfS8ke3Rlc3RmaWxlfQpAQCAtOTgsMTAgKzk4LDEwIEBAIEluZGV4 OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vY29tbW9uLWJs b2NrLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAg ICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGdkYi03LjIuNTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3 YXJmLXN0cmlkZS5leHAJMjAxMC0xMS0xNiAwOToyNjo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRl LmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAu MjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R3YXJmLXN0cmlkZS5leHAJ MjAxMS0xMi0xOCAyMzozNToyMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBnZGItNy40LjUwLjIwMTEx MjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHdhcmYtc3RyaWRlLmV4cAkyMDExLTEyLTE5 IDAyOjI3OjE2Ljc0NjMyNzg0MCArMDEwMAogQEAgLTI3LDcgKzI3LDI1IEBACiAgc2V0IHRlc3Rm aWxlIGR3YXJmLXN0cmlkZQogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MApAQCAtMTI5LDEw ICsxMjksMTAgQEAgSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIu Zm9ydHJhbi9kd2FyZi1zdHJpZGUuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAKLUluZGV4OiBn ZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1pYy5leHAK K0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHlu YW1pYy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9keW5hbWljLmV4cAkyMDEwLTExLTE2IDA5OjI2OjUwLjAwMDAw MDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9y dHJhbi9keW5hbWljLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0t IGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFt aWMuZXhwCTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41 MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2R5bmFtaWMuZXhwCTIwMTEtMTIt MTkgMDI6Mjc6MTYuNzQ2MzI3ODQwICswMTAwCiBAQCAtMjUsNyArMjUsMjUgQEAgc2V0IHRlc3Rm aWxlICJkeW5hbWljIgogIHNldCBzcmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxl ICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0ZmlsZX0KQEAgLTE2MCwxMCArMTYwLDEwIEBAIElu ZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZHluYW1p Yy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAgICAg cmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4 L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bGlicmFyeS1tb2R1bGUuZXhwCTIwMTAtMDYtMDMgMDA6NDE6NTYuMDAwMDAwMDAwICswMjAwCi0r KysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnkt bW9kdWxlLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03 LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLmV4cAkyMDExLTExLTMwIDA5OjI0OjMyLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQu NTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9saWJyYXJ5LW1vZHVsZS5leHAJ MjAxMS0xMi0xOSAwMjozMToxMC45OTEzMTgwMjYgKzAxMDAKIEBAIC0yNSwxNiArMjUsMzQgQEAg aWYgW2dldF9jb21waWxlcl9pbmZvIG5vdC11c2VkXSB7CiAgICAgcmV0dXJuIC0xCiAgfQpAQCAt MTg2LDkgKzE4Niw5IEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUv Z2RiLmZvcnRyYW4vbGlicmFyeS1tb2R1bGUuZXhwCiAgIyBqdXN0IGZvciB0aGUgbGlua2luZyBw aGFzZSAoYW5kIG5vdCB0aGUgc291cmNlIGNvbXBpbGF0aW9uIHBoYXNlKS4gIEFuZCBhbnkKICAj IHdhcm5pbmdzIG9uIGlnbm9yZWQgJGxpYmZpbGUgYWJvcnQgdGhlIHByb2Nlc3MuCiAgCi0taWYg IHsgW2dkYl9jb21waWxlIFtsaXN0ICRzcmNkaXIvJHN1YmRpci8kc3JjZmlsZSAkb2JqZGlyLyRz dWJkaXIvJGxpYmZpbGVdICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIHtkZWJ1 ZyBmOTB9XSAhPSAiIiB9IHsKKy1pZiAgeyBbZ2RiX2NvbXBpbGUgJHNyY2Rpci8kc3ViZGlyLyRz cmNmaWxlICRvYmpkaXIvJHN1YmRpci8kYmluZmlsZSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGY5 MCBzaGxpYj0kb2JqZGlyLyRzdWJkaXIvJGxpYmZpbGVdXSAhPSAiIiB9IHsKICtzZXQgZXJyMSBb Z2RiX2NvbXBpbGVfc2hsaWIgIiR7c3JjZGlyfS8ke3N1YmRpcn0vJHtzcmNsaWJmaWxlfSIgJG9i amRpci8kc3ViZGlyLyRsaWJmaWxlIHtkZWJ1ZyBmOTB9XQotK3NldCBlcnIyIFtnZGJfY29tcGls ZSBbbGlzdCAkc3JjZGlyLyRzdWJkaXIvJHNyY2ZpbGUgJG9iamRpci8kc3ViZGlyLyRsaWJmaWxl XSAkb2JqZGlyLyRzdWJkaXIvJGJpbmZpbGUgZXhlY3V0YWJsZSB7ZGVidWcgZjkwfV0KKytzZXQg ZXJyMiBbZ2RiX2NvbXBpbGUgJHNyY2Rpci8kc3ViZGlyLyRzcmNmaWxlICRvYmpkaXIvJHN1YmRp ci8kYmluZmlsZSBleGVjdXRhYmxlIFtsaXN0IGRlYnVnIGY5MCBzaGxpYj0kb2JqZGlyLyRzdWJk aXIvJGxpYmZpbGVdXQogKwogK3Vuc2V0X2JvYXJkX2luZm8gZjkwY29tcGlsZXIKICtpZiBbaW5m byBleGlzdHMgb2xkX2Y5MGNvbXBpbGVyXSB7CkBAIC0yMDMsMTAgKzIwMywxMCBAQCBJbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2xpYnJhcnktbW9k dWxlLmV4cAogICAgICB1bnRlc3RlZCAiQ291bGRuJ3QgY29tcGlsZSAke3NyY2ZpbGV9IgogICAg ICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL21vZHVsZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIu NTAuMjAxMDExMTYub3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAx MC0wOS0yMiAyMToyMjo0NC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2 L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vbW9kdWxlLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIw LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAJMjAxMS0wNi0zMCAwMDowNToxNi4wMDAwMDAwMDAg KzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4v bW9kdWxlLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0NzMyNzgzNiArMDEwMAogQEAgLTE2LDcg KzE2LDI1IEBACiAgc2V0IHRlc3RmaWxlICJtb2R1bGUiCiAgc2V0IHNyY2ZpbGUgJHt0ZXN0Zmls ZX0uZjkwCkBAIC0yMzQsMTAgKzIzNCwxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL21vZHVsZS5leHAKICAgICAgcmV0dXJuIC0xCiAgfQog IAotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9z dHJpbmcuZXhwCitJbmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N0cmluZy5leHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4yLjUwLjIwMTAxMTE2Lm9y aWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdHJpbmcuZXhwCTIwMTAtMTEtMTYgMDk6MjY6 NTAuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAx MDAKKy0tLSBnZGItNy40LjUwLjIwMTExMjE4Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJh bi9zdHJpbmcuZXhwCTIwMTEtMTItMTggMjM6MzU6MjMuMDAwMDAwMDAwICswMTAwCisrKysgZ2Ri LTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0cmluZy5leHAJMjAx MS0xMi0xOSAwMjoyNzoxNi43NDczMjc4MzYgKzAxMDAKIEBAIC0yMyw3ICsyMywyNSBAQCBzZXQg dGVzdGZpbGUgInN0cmluZyIKICBzZXQgc3JjZmlsZSAke3Rlc3RmaWxlfS5mOTAKICBzZXQgYmlu ZmlsZSAke29iamRpcn0vJHtzdWJkaXJ9LyR7dGVzdGZpbGV9CkBAIC0yNjUsMTAgKzI2NSwxMCBA QCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL3N0 cmluZy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxkbid0IGNvbXBpbGUgJHtzcmNmaWxlfSIKICAg ICAgcmV0dXJuIC0xCiAgfQotSW5kZXg6IGdkYi03LjIuNTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0 ZS9nZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dk Yi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAuZXhwCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2Ri LTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vb21wLXN0ZXAu ZXhwCTIwMTAtMTEtMTYgMDk6MjY6NTQuMDAwMDAwMDAwICswMTAwCi0rKysgZ2RiLTcuMi41MC4y MDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDEwLTExLTE2 IDA5OjI3OjIwLjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9n ZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAkyMDExLTEyLTE5IDAxOjMxOjI0 LjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIuZm9ydHJhbi9vbXAtc3RlcC5leHAJMjAxMS0xMi0xOSAwMjoyNzoxNi43NDgzMjc4MzIgKzAx MDAKIEBAIC0xNSw3ICsxNSwyNiBAQAogIAogIHNldCB0ZXN0ZmlsZSAib21wLXN0ZXAiCkBAIC0y OTcsMTAgKzI5NywxMCBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRl L2dkYi5mb3J0cmFuL29tcC1zdGVwLmV4cAogICAgICByZXR1cm4gLTEKICB9CiAgCi1JbmRleDog Z2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlw ZS5leHAKK0luZGV4OiBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRy YW4vZGVyaXZlZC10eXBlLmV4cAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdkYi03LjIuNTAuMjAxMDExMTYu b3JpZy9nZGIvdGVzdHN1aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMC0wMS0w MSAwODozMjowMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDEwLTExLTE2IDA5OjI3OjIw LjAwMDAwMDAwMCArMDEwMAorLS0tIGdkYi03LjQuNTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1 aXRlL2dkYi5mb3J0cmFuL2Rlcml2ZWQtdHlwZS5leHAJMjAxMS0wNi0yOSAxOTo1MDo0Ny4wMDAw MDAwMDAgKzAyMDAKKysrKyBnZGItNy40LjUwLjIwMTExMjE4L2dkYi90ZXN0c3VpdGUvZ2RiLmZv cnRyYW4vZGVyaXZlZC10eXBlLmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0ODMyNzgzMiArMDEw MAogQEAgLTI4LDggKzI4LDI2IEBAIHNldCB0ZXN0ZmlsZSAiZGVyaXZlZC10eXBlIgogIHNldCBz cmNmaWxlICR7dGVzdGZpbGV9LmY5MAogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0v JHt0ZXN0ZmlsZX0KQEAgLTMzMCwxMCArMzMwLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vZGVyaXZlZC10eXBlLmV4cAogICAgICByZXR1 cm4gLTEKICB9CiAgCi1JbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2dk Yi5mb3J0cmFuL3N1YmFycmF5LmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rl c3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItNy4y LjUwLjIwMTAxMTE2Lm9yaWcvZ2RiL3Rlc3RzdWl0ZS9nZGIuZm9ydHJhbi9zdWJhcnJheS5leHAJ MjAxMC0wMS0wMSAwODozMjowMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAx MTE2L2dkYi90ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTAtMTEtMTYgMDk6 Mjc6MjAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCTIwMTEtMDYtMjkgMTk6NTA6NDcuMDAw MDAwMDAwICswMjAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2dkYi5m b3J0cmFuL3N1YmFycmF5LmV4cAkyMDExLTEyLTE5IDAyOjI3OjE2Ljc0ODMyNzgzMiArMDEwMAog QEAgLTI4LDggKzI4LDI2IEBAIHNldCB0ZXN0ZmlsZSAic3ViYXJyYXkiCiAgc2V0IHNyY2ZpbGUg JHt0ZXN0ZmlsZX0uZgogIHNldCBiaW5maWxlICR7b2JqZGlyfS8ke3N1YmRpcn0vJHt0ZXN0Zmls ZX0KQEAgLTM2MywxMCArMzYzLDEwIEBAIEluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90 ZXN0c3VpdGUvZ2RiLmZvcnRyYW4vc3ViYXJyYXkuZXhwCiAgICAgIHJldHVybiAtMQogIH0KICAK LUluZGV4OiBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxz LXNlcGRlYnVnLmV4cAorSW5kZXg6IGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0ZS9n ZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4y MDEwMTExNi5vcmlnL2dkYi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAky MDEwLTExLTE2IDA5OjI2OjUxLjAwMDAwMDAwMCArMDEwMAotKysrIGdkYi03LjIuNTAuMjAxMDEx MTYvZ2RiL3Rlc3RzdWl0ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMTAtMTEtMTYg MDk6Mjc6MjAuMDAwMDAwMDAwICswMTAwCistLS0gZ2RiLTcuNC41MC4yMDExMTIxOC5vcmlnL2dk Yi90ZXN0c3VpdGUvZ2RiLnRocmVhZHMvdGxzLXNlcGRlYnVnLmV4cAkyMDExLTEyLTE5IDAwOjI4 OjExLjAwMDAwMDAwMCArMDEwMAorKysrIGdkYi03LjQuNTAuMjAxMTEyMTgvZ2RiL3Rlc3RzdWl0 ZS9nZGIudGhyZWFkcy90bHMtc2VwZGVidWcuZXhwCTIwMTEtMTItMTkgMDI6Mjc6MTYuNzQ4MzI3 ODMyICswMTAwCiBAQCAtMzIsNyArMzIsMjUgQEAgc2V0IGJpbnNoYXJlZGRlYnVnZmlsZSAke29i amRpcn0vJHtzdWJkaQogIAogICMgRklYTUU6IGdjYyBkZXBlbmRlbmN5ICgtV2wsLXNvbmFtZSku CkBAIC0zOTQsMTEgKzM5NCwxMSBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVz dHN1aXRlL2dkYi50aHJlYWRzL3Rscy1zZXBkZWJ1Zy5leHAKICAgICAgdW50ZXN0ZWQgIkNvdWxk bid0IGNvbXBpbGUgdGVzdCBsaWJyYXJ5IgogICAgICByZXR1cm4gLTEKICB9Ci1JbmRleDogZ2Ri LTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCitJ bmRleDogZ2RiLTcuNC41MC4yMDExMTIxOC9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBv cnQuZXhwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2RiLTcuMi41MC4yMDEwMTExNi5vcmlnL2dkYi90ZXN0 c3VpdGUvbGliL3ByZWxpbmstc3VwcG9ydC5leHAJMjAxMC0xMC0xMiAyMDoxMjo0OS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBnZGItNy4yLjUwLjIwMTAxMTE2L2dkYi90ZXN0c3VpdGUvbGliL3ByZWxp bmstc3VwcG9ydC5leHAJMjAxMC0xMS0xNiAwOToyNzoyMC4wMDAwMDAwMDAgKzAxMDAKLUBAIC0x MTgsOSArMTE4LDMxIEBAIHByb2MgZmlsZV9jb3B5IHtzcmMgZGVzdH0geworLS0tIGdkYi03LjQu NTAuMjAxMTEyMTgub3JpZy9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIw MTEtMTItMTkgMDI6MjE6NTYuMDAwMDAwMDAwICswMTAwCisrKysgZ2RiLTcuNC41MC4yMDExMTIx OC9nZGIvdGVzdHN1aXRlL2xpYi9wcmVsaW5rLXN1cHBvcnQuZXhwCTIwMTEtMTItMTkgMDI6Mjc6 MTYuNzQ5MzI3ODI4ICswMTAwCitAQCAtMTE5LDkgKzExOSwzMSBAQCBwcm9jIGZpbGVfY29weSB7 c3JjIGRlc3R9IHsKICBwcm9jIGJ1aWxkX2V4ZWN1dGFibGVfb3duX2xpYnMge3Rlc3RuYW1lIGV4 ZWN1dGFibGUgc291cmNlcyBvcHRpb25zIHtpbnRlcnAgIiJ9IHtkaXIgIiJ9fSB7CiAgICAgIGds b2JhbCBvYmpkaXIgc3ViZGlyCiAgCkBAIC00MTUsNyArNDE1LDcgQEAgSW5kZXg6IGdkYi03LjIu NTAuMjAxMDExMTYvZ2RiL3Rlc3RzdWl0ZS9saWIvcHJlbGluay1zdXBwb3J0LmV4cAogKwl1bnNl dF9ib2FyZF9pbmZvIGNvbXBpbGVyCiArICAgIH0gZWxzZWlmIFtpbmZvIGV4aXN0cyBvbGRfY29t cGlsZXJdIHsKICsJdW5zZXQgb2xkX2NvbXBpbGVyCi0gICAgIH0KKysgICAgfQogKyAgICBzZXRf Ym9hcmRfaW5mbyBjb21waWxlciBnY2M0NAogKwogKyAgICBzZXQgZXJyIFtidWlsZF9leGVjdXRh YmxlICR0ZXN0bmFtZSAkZXhlY3V0YWJsZSAkc291cmNlcyAkb3B0aW9uc10KQEAgLTQyMyw3ICs0 MjMsNyBAQCBJbmRleDogZ2RiLTcuMi41MC4yMDEwMTExNi9nZGIvdGVzdHN1aXRlL2xpYi9wcmVs aW5rLXN1cHBvcnQuZXhwCiArICAgIHVuc2V0X2JvYXJkX2luZm8gY29tcGlsZXIKICsgICAgaWYg W2luZm8gZXhpc3RzIG9sZF9jb21waWxlcl0gewogKwlzZXRfYm9hcmRfaW5mbyBjb21waWxlciAk b2xkX2NvbXBpbGVyCi0rICAgIH0KKyAgICAgfQogKwogKyAgICBpZiB7ICRlcnIgPT0gLTEgfSB7 CiArCXJldHVybiAiIiAgIAoKZGlmZiAtLWdpdCBhL2dkYi10dWktc3RyaXAtc3RlcGkucGF0Y2gg Yi9nZGItdHVpLXN0cmlwLXN0ZXBpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCBjNGJkY2IwLi4wMDAwMDAwCi0tLSBhL2dkYi10dWktc3RyaXAtc3RlcGkucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBh dGNoZXMvMjAxMS0wOC9tc2cwMDI4My5odG1sCi1TdWJqZWN0OiBbcGF0Y2hdIFRVSTogUGVybWl0 IHN0ZXBpIG9uIHN0cmlwcGVkIGNvZGUKLQotSGksCi0KLW5pY2sgPGNpbm9sdD4gb24gI2dkYkBm cmVlbm9kZSBjb21wbGFpbmVkIG9uZSBjYW5ub3Qgc3RlcGkgb24gc3RyaXBwZWQgYmluYXJ5Lgot Ci1lY2hvIC1lICcjaW5jbHVkZTx1bmlzdGQuaD5cbmludCBtYWluKHZvaWQpe3JldHVybiBhbGFy bSgwKTt9J3xnY2MgLVdhbGwgLXMgLXggYyAtOy4vZ2RidHVpIC4vYS5vdXQgLW54IC1leCAnbGF5 b3V0IGFzbScgLWV4ICdiIGFsYXJtJyAtZXggciAtZXggZmluaQotd2lsbDoKLQkweDdmZmZmN2Fl MjVjMCA8YWxhcm0+ICAgICAgICAgIG1vdiAgICAkMHgyNSwlZWF4Ci0JLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCShnZGIpIHAveCAkcGMKLQkkMSA9 IDB4NDAwNGQyCi0JKGdkYikgc3RlcGkKLQlObyBmdW5jdGlvbiBjb250YWlucyBwcm9ncmFtIGNv dW50ZXIgZm9yIHNlbGVjdGVkIGZyYW1lLgotCShnZGIpIHAveCAkcGMKLQkkMiA9IDB4NDAwNGQy Ci0KLVRoYXQgaXMgdGhlIHdpbmRvdyBzdGlsbCBkaXNwbGF5cyBzdGFsZSBjb250ZW50LCBzdGVw aSBkb2VzIG5vdCB3b3JrIGF0IGFsbC4KLQotIzAgIHRocm93X3ZlcnJvciAoZXJyb3I9R0VORVJJ Q19FUlJPUiwgZm10PTB4ZTczZDIwICJObyBmdW5jdGlvbiBjb250YWlucyBwcm9ncmFtIGNvdW50 ZXIgZm9yIHNlbGVjdGVkIGZyYW1lLiIsIGFwPTB4N2ZmZmRiZDNiMGE4KSBhdCBleGNlcHRpb25z LmM6NDAwCi0jMSAgaW4gZXJyb3IgKHN0cmluZz0weGU3M2QyMCAiTm8gZnVuY3Rpb24gY29udGFp bnMgcHJvZ3JhbSBjb3VudGVyIGZvciBzZWxlY3RlZCBmcmFtZS4iKSBhdCB1dGlscy5jOjc4MAot IzIgIGluIHR1aV9zaG93X2ZyYW1lX2luZm8gKGZpPTB4M2VjYTFlMCkgYXQgLi90dWkvdHVpLXN0 YWNrLmM6MzgzCi0jMyAgaW4gdHVpX3NlbGVjdGVkX2ZyYW1lX2xldmVsX2NoYW5nZWRfaG9vayAo bGV2ZWw9MCkgYXQgLi90dWkvdHVpLWhvb2tzLmM6MjE4Ci0jNCAgaW4gc2VsZWN0X2ZyYW1lIChm aT0weDNlY2ExZTApIGF0IGZyYW1lLmM6MTM5NgotIzUgIGluIHJlc3RvcmVfc2VsZWN0ZWRfZnJh bWUgKGFfZnJhbWVfaWQ9Li4uLCBmcmFtZV9sZXZlbD0wKSBhdCB0aHJlYWQuYzoxMDQ5Ci0jNiAg aW4gZG9fcmVzdG9yZV9jdXJyZW50X3RocmVhZF9jbGVhbnVwIChhcmc9MHg0NTZkY2EwKSBhdCB0 aHJlYWQuYzoxMTE2Ci0jNyAgaW4gZG9fbXlfY2xlYW51cHMgKHBteV9jaGFpbj0weDFjODY1ZjAs IG9sZF9jaGFpbj0weDQ1NmRlOTApIGF0IHV0aWxzLmM6NTE1Ci0jOCAgaW4gZG9fY2xlYW51cHMg KG9sZF9jaGFpbj0weDQ1NmRlOTApIGF0IHV0aWxzLmM6NDk3Ci0jOSAgaW4gaW5zZXJ0X2JyZWFr cG9pbnRfbG9jYXRpb25zICgpIGF0IGJyZWFrcG9pbnQuYzoyMDIxCi0jMTAgaW4gaW5zZXJ0X2Jy ZWFrcG9pbnRzICgpIGF0IGJyZWFrcG9pbnQuYzoxOTE5Ci0jMTEgaW4gcHJvY2VlZCAoYWRkcj0x ODQ0Njc0NDA3MzcwOTU1MTYxNSwgc2lnZ25hbD1UQVJHRVRfU0lHTkFMX0RFRkFVTFQsIHN0ZXA9 MSkgYXQgaW5mcnVuLmM6MjE1NgotIzEyIGluIHN0ZXBfb25jZSAoc2tpcF9zdWJyb3V0aW5lcz0w LCBzaW5nbGVfaW5zdD0xLCBjb3VudD0xLCB0aHJlYWQ9LTEpIGF0IGluZmNtZC5jOjEwNjgKLSMx MyBpbiBzdGVwXzEgKHNraXBfc3Vicm91dGluZXM9MCwgc2luZ2xlX2luc3Q9MSwgY291bnRfc3Ry aW5nPTB4MCkgYXQgaW5mY21kLmM6OTAzCi0jMTQgaW4gc3RlcGlfY29tbWFuZCAoY291bnRfc3Ry aW5nPTB4MCwgZnJvbV90dHk9MSkgYXQgaW5mY21kLmM6ODM5Ci0KLVdpdGggdGhlIGZpeCBzdGVw aSB3b3JrcyBhbmQgdGhlIHdpbmRvdyBjb3JyZWN0bHkgZGlzcGxheXM6Ci0JMHg0MDA0ZDIgICAg ICAgIHBvcCAgICAlcmJwICAgICAgICAgICAgICAgIAotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotSSBoYXZlbid0IGZvdW5kIGFueSBUVUkgdGVz dHN1aXRlLgotCi1JIHdpbGwgY2hlY2sgaXQgaW4gKGFmdGVyIHJlZ3Jlc3Npb24gdGVzdGluZyg/ KSkgaW4gc29tZSB0aW1lLgotCi0KLVRoYW5rcywKLUphbgotCi0KLWdkYi8KLTIwMTEtMDgtMTQg IEphbiBLcmF0b2NodmlsICA8amFuLmtyYXRvY2h2aWxAcmVkaGF0LmNvbT4KLQotCUZpeCBUVUkg c3RlcGkgb24gY29kZSB3aXRob3V0IHN5bWJvbHMuCi0JKiB0dWkvdHVpLXN0YWNrLmMgKHR1aV9z aG93X2ZyYW1lX2luZm8pOiBSZW1vdmUgZXJyb3IsIHNldCBMT1cgZm9yCi0JY3VycmVudCBQQyBp bnN0ZWFkLgotCi0tLS0gYS9nZGIvdHVpL3R1aS1zdGFjay5jCi0rKysgYi9nZGIvdHVpL3R1aS1z dGFjay5jCi1AQCAtMzgwLDggKzM4MCwxMSBAQCB0dWlfc2hvd19mcmFtZV9pbmZvIChzdHJ1Y3Qg ZnJhbWVfaW5mbyAqZmkpCi0gCSAgICB7Ci0gCSAgICAgIGlmIChmaW5kX3BjX3BhcnRpYWxfZnVu Y3Rpb24gKGdldF9mcmFtZV9wYyAoZmkpLCAoY2hhciAqKikgTlVMTCwKLSAJCQkJCSAgICAmbG93 LCAoQ09SRV9BRERSKSAwKSA9PSAwKQotLQkJZXJyb3IgKF8oIk5vIGZ1bmN0aW9uIGNvbnRhaW5z IHByb2dyYW0gIgotLQkJCSAiY291bnRlciBmb3Igc2VsZWN0ZWQgZnJhbWUuIikpOwotKwkJewot KwkJICAvKiBUaGVyZSBpcyBubyBzeW1ib2wgYXZhaWxhYmxlIGZvciBjdXJyZW50IFBDLiAgVGhl cmUgaXMgbm8KLSsJCSAgICAgc2FmZSB3YXkgaG93IHRvICJkaXNhc3NlbWJsZSBiYWNrd2FyZHMi LiAgKi8KLSsJCSAgbG93ID0gZ2V0X2ZyYW1lX3BjIChmaSk7Ci0rCQl9Ci0gCSAgICAgIGVsc2UK LSAJCWxvdyA9IHR1aV9nZXRfbG93X2Rpc2Fzc2VtYmx5X2FkZHJlc3MgKGdldF9mcmFtZV9hcmNo IChmaSksCi0gCQkJCQkJICAgICAgIGxvdywgZ2V0X2ZyYW1lX3BjIChmaSkpOwotCgpkaWZmIC0t Z2l0IGEvZ2RiLXVwc3RyZWFtLnBhdGNoIGIvZ2RiLXVwc3RyZWFtLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBjODFmNzJhLi4wMDAwMDAwCi0tLSBhL2dkYi11cHN0cmVhbS5w YXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ODUgKzAsMCBAQAotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2JpbnV0aWxzLWN2cy8yMDExLTA3L21zZzAwMTE2Lmh0bWwKLQotIyMjIHNyYy9pbmNs dWRlL0NoYW5nZUxvZwkyMDExLzA3LzIyIDE0OjM3OjUwCTEuNTQ2Ci0jIyMgc3JjL2luY2x1ZGUv Q2hhbmdlTG9nCTIwMTEvMDcvMjIgMjA6Mzc6NTAJMS41NDcKLSMjIC0xLDUgKzEsOCBAQAotIDIw MTEtMDctMjIgIEpha3ViIEplbGluZWsgIDxqYWt1YkByZWRoYXQuY29tPgotIAotKwkqIGR3YXJm Mi5oIChEV19BVF9HTlVfbWFjcm9zKTogTmV3LgotKwkoZW51bSBkd2FyZl9tYWNyb19yZWNvcmRf dHlwZSk6IE5ldyBlbnVtLiAgQWRkIERXX01BQ1JPX0dOVV8qLgotKwotIAlQUiBjKysvNDk3NTYK LSAJKiBsaWJpYmVydHkuaCAoc3RhY2tfbGltaXRfaW5jcmVhc2UpOiBOZXcgcHJvdG90eXBlLgot IAotLS0tIHNyYy9pbmNsdWRlL2R3YXJmMi5oCTIwMTEvMDYvMjIgMTU6MDM6MTkJMS4yNgotKysr IHNyYy9pbmNsdWRlL2R3YXJmMi5oCTIwMTEvMDcvMjIgMjA6Mzc6NTAJMS4yNwotQEAgLTM2Niw2 ICszNjYsOCBAQAotICAgICBEV19BVF9HTlVfYWxsX3RhaWxfY2FsbF9zaXRlcyA9IDB4MjExNiwK LSAgICAgRFdfQVRfR05VX2FsbF9jYWxsX3NpdGVzID0gMHgyMTE3LAotICAgICBEV19BVF9HTlVf YWxsX3NvdXJjZV9jYWxsX3NpdGVzID0gMHgyMTE4LAotKyAgICAvKiBTZWN0aW9uIG9mZnNldCBp bnRvIC5kZWJ1Z19tYWNybyBzZWN0aW9uLiAgKi8KLSsgICAgRFdfQVRfR05VX21hY3JvcyA9IDB4 MjExOSwKLSAgICAgLyogVk1TIGV4dGVuc2lvbnMuICAqLwotICAgICBEV19BVF9WTVNfcnRuYmVn X3BkX2FkZHJlc3MgPSAweDIyMDEsCi0gICAgIC8qIEdOQVQgZXh0ZW5zaW9ucy4gICovCi1AQCAt ODc5LDYgKzg4MSwyMCBAQAotICAgICBEV19NQUNJTkZPX2VuZF9maWxlID0gNCwKLSAgICAgRFdf TUFDSU5GT192ZW5kb3JfZXh0ID0gMjU1Ci0gICB9OwotKwotKy8qIE5hbWVzIGFuZCBjb2RlcyBm b3IgbmV3IHN0eWxlIG1hY3JvIGluZm9ybWF0aW9uLiAgKi8KLStlbnVtIGR3YXJmX21hY3JvX3Jl Y29yZF90eXBlCi0rICB7Ci0rICAgIERXX01BQ1JPX0dOVV9kZWZpbmUgPSAxLAotKyAgICBEV19N QUNST19HTlVfdW5kZWYgPSAyLAotKyAgICBEV19NQUNST19HTlVfc3RhcnRfZmlsZSA9IDMsCi0r ICAgIERXX01BQ1JPX0dOVV9lbmRfZmlsZSA9IDQsCi0rICAgIERXX01BQ1JPX0dOVV9kZWZpbmVf aW5kaXJlY3QgPSA1LAotKyAgICBEV19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3QgPSA2LAotKyAg ICBEV19NQUNST19HTlVfdHJhbnNwYXJlbnRfaW5jbHVkZSA9IDcsCi0rICAgIERXX01BQ1JPX0dO VV9sb191c2VyID0gMHhlMCwKLSsgICAgRFdfTUFDUk9fR05VX2hpX3VzZXIgPSAweGZmCi0rICB9 OwotIAwKLSAvKiBAQEAgRm9yIHVzZSB3aXRoIEdOVSBmcmFtZSB1bndpbmQgaW5mb3JtYXRpb24u ICAqLwotIAotCi0KLQotRllJOiBpbXBsZW1lbnQgbmV3IERXQVJGIG1hY3JvIHByb3Bvc2FsCi1o dHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMvMjAxMS0wNy9tc2cwMDczMi5odG1s Ci1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8yMDExLTA3L21zZzAwMjEyLmh0bWwK LQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjYgMTU6MjQ6MDEJMS4xMzIyNAotIyMj IHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjYgMTc6MDQ6MjEJMS4xMzIyNQotIyMgLTEsMyAr MSwyMCBAQAotKzIwMTEtMDctMjYgIFRvbSBUcm9tZXkgIDx0cm9tZXlAcmVkaGF0LmNvbT4KLSsK LSsJKiBzeW1maWxlLmggKHN0cnVjdCBkd2FyZjJfZGVidWdfc2VjdGlvbnMpIDxtYWNybz46IE5l dyBmaWVsZC4KLSsJKiBkd2FyZjJyZWFkLmMgKHJlYWRfaW5kaXJlY3Rfc3RyaW5nX2F0X29mZnNl dCk6IE5ldyBmdW5jdGlvbi4KLSsJKHJlYWRfaW5kaXJlY3Rfc3RyaW5nKTogVXNlIGl0LgotKwko ZHdhcmZfZGVjb2RlX21hY3JvX2J5dGVzKTogTmV3IGZ1bmN0aW9uLCB0YWtlbiBmcm9tCi0rCWR3 YXJmX2RlY29kZV9tYWNyb3MuICBIYW5kbGUgRFdfTUFDUk9fR05VXyouCi0rCShkd2FyZl9kZWNv ZGVfbWFjcm9zKTogVXNlIGl0LiAgaGFuZGxlIERXX01BQ1JPX0dOVV8qLgotKwkoZHdhcmZfcGFy c2VfbWFjcm9faGVhZGVyLCBza2lwX2Zvcm1fYnl0ZXMsIHNraXBfdW5rbm93bl9vcGNvZGUpOgot KwlOZXcgZnVuY3Rpb25zLgotKwkoc3RydWN0IGR3YXJmMl9wZXJfb2JqZmlsZSkgPG1hY3JvPjog TmV3IGZpZWxkLgotKwkoZHdhcmYyX2VsZl9uYW1lcyk6IEFkZCAuZGVidWdfbWFjcm8uCi0rCShk d2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCk6IEFkZCAnc2VjdGlvbicgYXJndW1lbnQu Ci0rCShkd2FyZjJfbG9jYXRlX3NlY3Rpb25zKTogSGFuZGxlIG5ldyBzZWN0aW9uLgotKwkocmVh ZF9maWxlX3Njb3BlKTogSGFuZGxlIERXX0FUX0dOVV9tYWNyb3MuCi0rCShkd2FyZjJfcGVyX29i amZpbGVfZnJlZSk6IFVubWFwIHRoZSAuZGVidWdfbWFjcm8gc2VjdGlvbi4KLSsKLSAyMDExLTA3 LTI2ICBQYXVsIFBsdXpobmlrb3YgIDxwcGx1emhuaWtvdkBnb29nbGUuY29tPgotIAotIAkqIE5F V1M6IE1lbnRpb24gZGNhY2hlIGNvbmZpZ3VyYXRpb24uCi0tLS0gc3JjL2dkYi9kd2FyZjJyZWFk LmMJMjAxMS8wNy8yMCAxNToxMzo0OQkxLjU1NAotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIw MTEvMDcvMjYgMTc6MDQ6MjMJMS41NTUKLUBAIC0xODcsNiArMTg3LDcgQEAKLSAgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9pbmZvIGxpbmU7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBs b2M7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBtYWNpbmZvOwotKyAgc3RydWN0IGR3 YXJmMl9zZWN0aW9uX2luZm8gbWFjcm87Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyBz dHI7Ci0gICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyByYW5nZXM7Ci0gICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25faW5mbyBmcmFtZTsKLUBAIC0yNjQsNiArMjY1LDcgQEAKLSAgIHsgIi5kZWJ1 Z19saW5lIiwgIi56ZGVidWdfbGluZSIgfSwKLSAgIHsgIi5kZWJ1Z19sb2MiLCAiLnpkZWJ1Z19s b2MiIH0sCi0gICB7ICIuZGVidWdfbWFjaW5mbyIsICIuemRlYnVnX21hY2luZm8iIH0sCi0rICB7 ICIuZGVidWdfbWFjcm8iLCAiLnpkZWJ1Z19tYWNybyIgfSwKLSAgIHsgIi5kZWJ1Z19zdHIiLCAi LnpkZWJ1Z19zdHIiIH0sCi0gICB7ICIuZGVidWdfcmFuZ2VzIiwgIi56ZGVidWdfcmFuZ2VzIiB9 LAotICAgeyAiLmRlYnVnX3R5cGVzIiwgIi56ZGVidWdfdHlwZXMiIH0sCi1AQCAtODU4LDEwICs4 NjAsMTEgQEAKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLS1kd2FyZjJfbWFjcm9zX3Rvb19sb25nX2Nv bXBsYWludCAodm9pZCkKLStkd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAoc3RydWN0 IGR3YXJmMl9zZWN0aW9uX2luZm8gKnNlY3Rpb24pCi0gewotICAgY29tcGxhaW50ICgmc3ltZmls ZV9jb21wbGFpbnRzLAotLQkgICAgIF8oIm1hY3JvIGluZm8gcnVucyBvZmYgZW5kIG9mIGAuZGVi dWdfbWFjaW5mbycgc2VjdGlvbiIpKTsKLSsJICAgICBfKCJtYWNybyBpbmZvIHJ1bnMgb2ZmIGVu ZCBvZiBgJXMnIHNlY3Rpb24iKSwKLSsJICAgICBzZWN0aW9uLT5hc2VjdGlvbi0+bmFtZSk7Ci0g fQotIAotIHN0YXRpYyB2b2lkCi1AQCAtMTIzMyw3ICsxMjM2LDkgQEAKLSAJCQkJIHN0cnVjdCBk d2FyZjJfY3UgKik7Ci0gCi0gc3RhdGljIHZvaWQgZHdhcmZfZGVjb2RlX21hY3JvcyAoc3RydWN0 IGxpbmVfaGVhZGVyICosIHVuc2lnbmVkIGludCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyICosIGJmZCAqLCBzdHJ1Y3QgZHdhcmYyX2N1ICopOwotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwgYmZkICosIHN0cnVjdCBkd2FyZjJfY3UgKiwK LSsJCQkJIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICosCi0rCQkJCSBpbnQpOwotIAotIHN0 YXRpYyBpbnQgYXR0cl9mb3JtX2lzX2Jsb2NrIChzdHJ1Y3QgYXR0cmlidXRlICopOwotIAotQEAg LTE0MzgsNiArMTQ0MywxMSBAQAotICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mby5h c2VjdGlvbiA9IHNlY3RwOwotICAgICAgIGR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjaW5mby5zaXpl ID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsKLSAgICAgfQotKyAgZWxzZSBpZiAoc2Vj dGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5tYWNybykpCi0rICAgIHsKLSsgICAgICBk d2FyZjJfcGVyX29iamZpbGUtPm1hY3JvLmFzZWN0aW9uID0gc2VjdHA7Ci0rICAgICAgZHdhcmYy X3Blcl9vYmpmaWxlLT5tYWNyby5zaXplID0gYmZkX2dldF9zZWN0aW9uX3NpemUgKHNlY3RwKTsK LSsgICAgfQotICAgZWxzZSBpZiAoc2VjdGlvbl9pc19wIChzZWN0cC0+bmFtZSwgJm5hbWVzLT5z dHIpKQotICAgICB7Ci0gICAgICAgZHdhcmYyX3Blcl9vYmpmaWxlLT5zdHIuYXNlY3Rpb24gPSBz ZWN0cDsKLUBAIC01NjQxLDEzICs1NjUxLDI4IEBACi0gICAgICByZWZlcnMgdG8gaW5mb3JtYXRp b24gaW4gdGhlIGxpbmUgbnVtYmVyIGluZm8gc3RhdGVtZW50IHByb2dyYW0KLSAgICAgIGhlYWRl ciwgc28gd2UgY2FuIG9ubHkgcmVhZCBpdCBpZiB3ZSd2ZSByZWFkIHRoZSBoZWFkZXIKLSAgICAg IHN1Y2Nlc3NmdWxseS4gICovCi0tICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdfQVRfbWFj cm9faW5mbywgY3UpOwotKyAgYXR0ciA9IGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX0dOVV9tYWNy b3MsIGN1KTsKLSAgIGlmIChhdHRyICYmIGN1LT5saW5lX2hlYWRlcikKLSAgICAgewotLSAgICAg IHVuc2lnbmVkIGludCBtYWNyb19vZmZzZXQgPSBEV19VTlNORCAoYXR0cik7Ci0rICAgICAgaWYg KGR3YXJmMl9hdHRyIChkaWUsIERXX0FUX21hY3JvX2luZm8sIGN1KSkKLSsJY29tcGxhaW50ICgm c3ltZmlsZV9jb21wbGFpbnRzLAotKwkJICAgXygiQ1UgcmVmZXJzIHRvIGJvdGggRFdfQVRfR05V X21hY3JvcyBhbmQgRFdfQVRfbWFjcm9faW5mbyIpKTsKLSsKLSsgICAgICBkd2FyZl9kZWNvZGVf bWFjcm9zIChjdS0+bGluZV9oZWFkZXIsIERXX1VOU05EIChhdHRyKSwKLSsJCQkgICBjb21wX2Rp ciwgYWJmZCwgY3UsCi0rCQkJICAgJmR3YXJmMl9wZXJfb2JqZmlsZS0+bWFjcm8sIDEpOwotKyAg ICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBhdHRyID0gZHdhcmYyX2F0dHIgKGRpZSwgRFdf QVRfbWFjcm9faW5mbywgY3UpOwotKyAgICAgIGlmIChhdHRyICYmIGN1LT5saW5lX2hlYWRlcikK LSsJewotKwkgIHVuc2lnbmVkIGludCBtYWNyb19vZmZzZXQgPSBEV19VTlNORCAoYXR0cik7Ci0g Ci0tICAgICAgZHdhcmZfZGVjb2RlX21hY3JvcyAoY3UtPmxpbmVfaGVhZGVyLCBtYWNyb19vZmZz ZXQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcF9kaXIsIGFiZmQsIGN1KTsKLSsJ ICBkd2FyZl9kZWNvZGVfbWFjcm9zIChjdS0+bGluZV9oZWFkZXIsIG1hY3JvX29mZnNldCwKLSsJ CQkgICAgICAgY29tcF9kaXIsIGFiZmQsIGN1LAotKwkJCSAgICAgICAmZHdhcmYyX3Blcl9vYmpm aWxlLT5tYWNpbmZvLCAwKTsKLSsJfQotICAgICB9Ci0gICBkb19jbGVhbnVwcyAoYmFja190byk7 Ci0gfQotQEAgLTEwMjYyLDMyICsxMDI4NywzMiBAQAotIH0KLSAKLSBzdGF0aWMgY2hhciAqCi0t cmVhZF9pbmRpcmVjdF9zdHJpbmcgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZiwKLS0JCSAgICAg IGNvbnN0IHN0cnVjdCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAotLQkJICAgICAgdW5zaWdu ZWQgaW50ICpieXRlc19yZWFkX3B0cikKLStyZWFkX2luZGlyZWN0X3N0cmluZ19hdF9vZmZzZXQg KGJmZCAqYWJmZCwgTE9OR0VTVCBzdHJfb2Zmc2V0KQotIHsKLS0gIExPTkdFU1Qgc3RyX29mZnNl dCA9IHJlYWRfb2Zmc2V0IChhYmZkLCBidWYsIGN1X2hlYWRlciwgYnl0ZXNfcmVhZF9wdHIpOwot LQotICAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5vYmpmaWxlLCAm ZHdhcmYyX3Blcl9vYmpmaWxlLT5zdHIpOwotICAgaWYgKGR3YXJmMl9wZXJfb2JqZmlsZS0+c3Ry LmJ1ZmZlciA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgZXJyb3IgKF8oIkRXX0ZPUk1fc3RycCB1 c2VkIHdpdGhvdXQgLmRlYnVnX3N0ciBzZWN0aW9uIFtpbiBtb2R1bGUgJXNdIiksCi0tCQkgICAg ICBiZmRfZ2V0X2ZpbGVuYW1lIChhYmZkKSk7Ci0tICAgICAgcmV0dXJuIE5VTEw7Ci0tICAgIH0K LSsgICAgZXJyb3IgKF8oIkRXX0ZPUk1fc3RycCB1c2VkIHdpdGhvdXQgLmRlYnVnX3N0ciBzZWN0 aW9uIFtpbiBtb2R1bGUgJXNdIiksCi0rCSAgIGJmZF9nZXRfZmlsZW5hbWUgKGFiZmQpKTsKLSAg IGlmIChzdHJfb2Zmc2V0ID49IGR3YXJmMl9wZXJfb2JqZmlsZS0+c3RyLnNpemUpCi0tICAgIHsK LS0gICAgICBlcnJvciAoXygiRFdfRk9STV9zdHJwIHBvaW50aW5nIG91dHNpZGUgb2YgIgotLQkg ICAgICAgIi5kZWJ1Z19zdHIgc2VjdGlvbiBbaW4gbW9kdWxlICVzXSIpLAotLQkgICAgIGJmZF9n ZXRfZmlsZW5hbWUgKGFiZmQpKTsKLS0gICAgICByZXR1cm4gTlVMTDsKLS0gICAgfQotKyAgICBl cnJvciAoXygiRFdfRk9STV9zdHJwIHBvaW50aW5nIG91dHNpZGUgb2YgIgotKwkgICAgICIuZGVi dWdfc3RyIHNlY3Rpb24gW2luIG1vZHVsZSAlc10iKSwKLSsJICAgYmZkX2dldF9maWxlbmFtZSAo YWJmZCkpOwotICAgZ2RiX2Fzc2VydCAoSE9TVF9DSEFSX0JJVCA9PSA4KTsKLSAgIGlmIChkd2Fy ZjJfcGVyX29iamZpbGUtPnN0ci5idWZmZXJbc3RyX29mZnNldF0gPT0gJ1wwJykKLSAgICAgcmV0 dXJuIE5VTEw7Ci0gICByZXR1cm4gKGNoYXIgKikgKGR3YXJmMl9wZXJfb2JqZmlsZS0+c3RyLmJ1 ZmZlciArIHN0cl9vZmZzZXQpOwotIH0KLSAKLStzdGF0aWMgY2hhciAqCi0rcmVhZF9pbmRpcmVj dF9zdHJpbmcgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ1ZiwKLSsJCSAgICAgIGNvbnN0IHN0cnVj dCBjb21wX3VuaXRfaGVhZCAqY3VfaGVhZGVyLAotKwkJICAgICAgdW5zaWduZWQgaW50ICpieXRl c19yZWFkX3B0cikKLSt7Ci0rICBMT05HRVNUIHN0cl9vZmZzZXQgPSByZWFkX29mZnNldCAoYWJm ZCwgYnVmLCBjdV9oZWFkZXIsIGJ5dGVzX3JlYWRfcHRyKTsKLSsKLSsgIHJldHVybiByZWFkX2lu ZGlyZWN0X3N0cmluZ19hdF9vZmZzZXQgKGFiZmQsIHN0cl9vZmZzZXQpOwotK30KLSsKLSBzdGF0 aWMgdW5zaWduZWQgbG9uZwotIHJlYWRfdW5zaWduZWRfbGViMTI4IChiZmQgKmFiZmQsIGdkYl9i eXRlICpidWYsIHVuc2lnbmVkIGludCAqYnl0ZXNfcmVhZF9wdHIpCi0gewotQEAgLTE0NjY5LDEx NyArMTQ2OTQsMjA1IEBACi0gICAgIGR3YXJmMl9tYWNyb19tYWxmb3JtZWRfZGVmaW5pdGlvbl9j b21wbGFpbnQgKGJvZHkpOwotIH0KLSAKLSsvKiBTa2lwIHNvbWUgYnl0ZXMgZnJvbSBCWVRFUyBh Y2NvcmRpbmcgdG8gdGhlIGZvcm0gZ2l2ZW4gaW4gRk9STS4KLSsgICBSZXR1cm5zIHRoZSBuZXcg cG9pbnRlci4gICovCi0gCi0tc3RhdGljIHZvaWQKLS1kd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1 Y3QgbGluZV9oZWFkZXIgKmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAotLSAgICAgICAgICAgICAg ICAgICAgIGNoYXIgKmNvbXBfZGlyLCBiZmQgKmFiZmQsCi0tICAgICAgICAgICAgICAgICAgICAg c3RydWN0IGR3YXJmMl9jdSAqY3UpCi0rc3RhdGljIGdkYl9ieXRlICoKLStza2lwX2Zvcm1fYnl0 ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKmJ5dGVzLAotKwkJIGVudW0gZHdhcmZfZm9ybSBmb3Jt LAotKwkJIHVuc2lnbmVkIGludCBvZmZzZXRfc2l6ZSwKLSsJCSBzdHJ1Y3QgZHdhcmYyX3NlY3Rp b25faW5mbyAqc2VjdGlvbikKLSB7Ci0tICBnZGJfYnl0ZSAqbWFjX3B0ciwgKm1hY19lbmQ7Ci0t ICBzdHJ1Y3QgbWFjcm9fc291cmNlX2ZpbGUgKmN1cnJlbnRfZmlsZSA9IDA7Ci0tICBlbnVtIGR3 YXJmX21hY2luZm9fcmVjb3JkX3R5cGUgbWFjaW5mb190eXBlOwotLSAgaW50IGF0X2NvbW1hbmRs aW5lOwotKyAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7Ci0gCi0tICBkd2FyZjJfcmVhZF9zZWN0 aW9uIChkd2FyZjJfcGVyX29iamZpbGUtPm9iamZpbGUsCi0tCQkgICAgICAgJmR3YXJmMl9wZXJf b2JqZmlsZS0+bWFjaW5mbyk7Ci0tICBpZiAoZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1 ZmZlciA9PSBOVUxMKQotKyAgc3dpdGNoIChmb3JtKQotICAgICB7Ci0tICAgICAgY29tcGxhaW50 ICgmc3ltZmlsZV9jb21wbGFpbnRzLCBfKCJtaXNzaW5nIC5kZWJ1Z19tYWNpbmZvIHNlY3Rpb24i KSk7Ci0tICAgICAgcmV0dXJuOwotKyAgICBjYXNlIERXX0ZPUk1fZGF0YTE6Ci0rICAgIGNhc2Ug RFdfRk9STV9mbGFnOgotKyAgICAgICsrYnl0ZXM7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNh c2UgRFdfRk9STV9kYXRhMjoKLSsgICAgICBieXRlcyArPSAyOwotKyAgICAgIGJyZWFrOwotKwot KyAgICBjYXNlIERXX0ZPUk1fZGF0YTQ6Ci0rICAgICAgYnl0ZXMgKz0gNDsKLSsgICAgICBicmVh azsKLSsKLSsgICAgY2FzZSBEV19GT1JNX2RhdGE4OgotKyAgICAgIGJ5dGVzICs9IDg7Ci0rICAg ICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgRFdfRk9STV9zdHJpbmc6Ci0rICAgICAgcmVhZF9kaXJl Y3Rfc3RyaW5nIChhYmZkLCBieXRlcywgJmJ5dGVzX3JlYWQpOwotKyAgICAgIGJ5dGVzICs9IGJ5 dGVzX3JlYWQ7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgRFdfRk9STV9zZWNfb2Zmc2V0 OgotKyAgICBjYXNlIERXX0ZPUk1fc3RycDoKLSsgICAgICBieXRlcyArPSBvZmZzZXRfc2l6ZTsK LSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBEV19GT1JNX2Jsb2NrOgotKyAgICAgIGJ5dGVz ICs9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBieXRlcywgJmJ5dGVzX3JlYWQpOwotKyAg ICAgIGJ5dGVzICs9IGJ5dGVzX3JlYWQ7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgRFdf Rk9STV9ibG9jazE6Ci0rICAgICAgYnl0ZXMgKz0gMSArIHJlYWRfMV9ieXRlIChhYmZkLCBieXRl cyk7Ci0rICAgICAgYnJlYWs7Ci0rICAgIGNhc2UgRFdfRk9STV9ibG9jazI6Ci0rICAgICAgYnl0 ZXMgKz0gMiArIHJlYWRfMl9ieXRlcyAoYWJmZCwgYnl0ZXMpOwotKyAgICAgIGJyZWFrOwotKyAg ICBjYXNlIERXX0ZPUk1fYmxvY2s0OgotKyAgICAgIGJ5dGVzICs9IDQgKyByZWFkXzRfYnl0ZXMg KGFiZmQsIGJ5dGVzKTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSBEV19GT1JNX3NkYXRh OgotKyAgICBjYXNlIERXX0ZPUk1fdWRhdGE6Ci0rICAgICAgYnl0ZXMgPSBza2lwX2xlYjEyOCAo YWJmZCwgYnl0ZXMpOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBkZWZhdWx0OgotKyAgICAgIHsK LSsgICAgICBjb21wbGFpbjoKLSsJY29tcGxhaW50ICgmc3ltZmlsZV9jb21wbGFpbnRzLAotKwkJ ICAgXygiaW52YWxpZCBmb3JtIDB4JXggaW4gYCVzJyIpLAotKwkJICAgZm9ybSwKLSsJCSAgIHNl Y3Rpb24tPmFzZWN0aW9uLT5uYW1lKTsKLSsJcmV0dXJuIE5VTEw7Ci0rICAgICAgfQotICAgICB9 Ci0gCi0tICAvKiBGaXJzdCBwYXNzOiBGaW5kIHRoZSBuYW1lIG9mIHRoZSBiYXNlIGZpbGVuYW1l LgotLSAgICAgVGhpcyBmaWxlbmFtZSBpcyBuZWVkZWQgaW4gb3JkZXIgdG8gcHJvY2VzcyBhbGwg bWFjcm9zIHdob3NlIGRlZmluaXRpb24KLS0gICAgIChvciB1bmRlZmluaXRpb24pIGNvbWVzIGZy b20gdGhlIGNvbW1hbmQgbGluZS4gIFRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZAotLSAgICAgYmVm b3JlIHRoZSBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgZW50cnksIGFuZCB5ZXQgc3RpbGwg bmVlZCB0byBiZQotLSAgICAgYXNzb2NpYXRlZCB0byB0aGUgYmFzZSBmaWxlLgotKyAgcmV0dXJu IGJ5dGVzOwotK30KLSAKLS0gICAgIFRvIGRldGVybWluZSB0aGUgYmFzZSBmaWxlIG5hbWUsIHdl IHNjYW4gdGhlIG1hY3JvIGRlZmluaXRpb25zIHVudGlsIHdlCi0tICAgICByZWFjaCB0aGUgZmly c3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LiAgV2UgdGhlbiBpbml0aWFsaXplCi0tICAg ICBDVVJSRU5UX0ZJTEUgYWNjb3JkaW5nbHkgc28gdGhhdCBhbnkgbWFjcm8gZGVmaW5pdGlvbiBm b3VuZCBiZWZvcmUgdGhlCi0tICAgICBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgY2FuIHN0 aWxsIGJlIGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICovCi0rLyogQSBoZWxwZXIgZm9y IGR3YXJmX2RlY29kZV9tYWNyb3MgdGhhdCBoYW5kbGVzIHNraXBwaW5nIGFuIHVua25vd24KLSsg ICBvcGNvZGUuICBSZXR1cm5zIGFuIHVwZGF0ZWQgcG9pbnRlciB0byB0aGUgbWFjcm8gZGF0YSBi dWZmZXI7IG9yLAotKyAgIG9uIGVycm9yLCBpc3N1ZXMgYSBjb21wbGFpbnQgYW5kIHJldHVybnMg TlVMTC4gICovCi0gCi0tICBtYWNfcHRyID0gZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLmJ1 ZmZlciArIG9mZnNldDsKLS0gIG1hY19lbmQgPSBkd2FyZjJfcGVyX29iamZpbGUtPm1hY2luZm8u YnVmZmVyCi0tICAgICsgZHdhcmYyX3Blcl9vYmpmaWxlLT5tYWNpbmZvLnNpemU7Ci0rc3RhdGlj IGdkYl9ieXRlICoKLStza2lwX3Vua25vd25fb3Bjb2RlICh1bnNpZ25lZCBpbnQgb3Bjb2RlLAot KwkJICAgICBnZGJfYnl0ZSAqKm9wY29kZV9kZWZpbml0aW9ucywKLSsJCSAgICAgZ2RiX2J5dGUg Km1hY19wdHIsCi0rCQkgICAgIGJmZCAqYWJmZCwKLSsJCSAgICAgdW5zaWduZWQgaW50IG9mZnNl dF9zaXplLAotKwkJICAgICBzdHJ1Y3QgZHdhcmYyX3NlY3Rpb25faW5mbyAqc2VjdGlvbikKLSt7 Ci0rICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZCwgaTsKLSsgIHVuc2lnbmVkIGxvbmcgYXJnOwot KyAgZ2RiX2J5dGUgKmRlZm47Ci0gCi0tICBkbwotKyAgaWYgKG9wY29kZV9kZWZpbml0aW9uc1tv cGNvZGVdID09IE5VTEwpCi0gICAgIHsKLS0gICAgICAvKiBEbyB3ZSBhdCBsZWFzdCBoYXZlIHJv b20gZm9yIGEgbWFjaW5mbyB0eXBlIGJ5dGU/ICAqLwotLSAgICAgIGlmIChtYWNfcHRyID49IG1h Y19lbmQpCi0tICAgICAgICB7Ci0tCSAgLyogQ29tcGxhaW50IGlzIHByaW50ZWQgZHVyaW5nIHRo ZSBzZWNvbmQgcGFzcyBhcyBHREIgd2lsbCBwcm9iYWJseQotLQkgICAgIHN0b3AgdGhlIGZpcnN0 IHBhc3MgZWFybGllciB1cG9uIGZpbmRpbmcKLS0JICAgICBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUu ICAqLwotLQkgIGJyZWFrOwotLSAgICAgICAgfQotKyAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVf Y29tcGxhaW50cywKLSsJCSBfKCJ1bnJlY29nbml6ZWQgRFdfTUFDRklOTyBvcGNvZGUgMHgleCIp LAotKwkJIG9wY29kZSk7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSAKLS0gICAgICBt YWNpbmZvX3R5cGUgPSByZWFkXzFfYnl0ZSAoYWJmZCwgbWFjX3B0cik7Ci0tICAgICAgbWFjX3B0 cisrOwotKyAgZGVmbiA9IG9wY29kZV9kZWZpbml0aW9uc1tvcGNvZGVdOwotKyAgYXJnID0gcmVh ZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIGRlZm4sICZieXRlc19yZWFkKTsKLSsgIGRlZm4gKz0g Ynl0ZXNfcmVhZDsKLSAKLS0gICAgICBzd2l0Y2ggKG1hY2luZm9fdHlwZSkKLS0gICAgICAgIHsK LS0gICAgICAgICAgLyogQSB6ZXJvIG1hY2luZm8gdHlwZSBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0 aGUgbWFjcm8KLS0gICAgICAgICAgICAgaW5mb3JtYXRpb24uICAqLwotLSAgICAgICAgY2FzZSAw OgotLQkgIGJyZWFrOwotKyAgZm9yIChpID0gMDsgaSA8IGFyZzsgKytpKQotKyAgICB7Ci0rICAg ICAgbWFjX3B0ciA9IHNraXBfZm9ybV9ieXRlcyAoYWJmZCwgbWFjX3B0ciwgZGVmbltpXSwgb2Zm c2V0X3NpemUsIHNlY3Rpb24pOwotKyAgICAgIGlmIChtYWNfcHRyID09IE5VTEwpCi0rCXsKLSsJ ICAvKiBza2lwX2Zvcm1fYnl0ZXMgYWxyZWFkeSBpc3N1ZWQgdGhlIGNvbXBsYWludC4gICovCi0r CSAgcmV0dXJuIE5VTEw7Ci0rCX0KLSsgICAgfQotIAotLQljYXNlIERXX01BQ0lORk9fZGVmaW5l OgotLQljYXNlIERXX01BQ0lORk9fdW5kZWY6Ci0tCSAgLyogT25seSBza2lwIHRoZSBkYXRhIGJ5 IE1BQ19QVFIuICAqLwotLQkgIHsKLS0JICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotKyAg cmV0dXJuIG1hY19wdHI7Ci0rfQotIAotLQkgICAgcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQs IG1hY19wdHIsICZieXRlc19yZWFkKTsKLS0JICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLS0J ICAgIHJlYWRfZGlyZWN0X3N0cmluZyAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkg ICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotLQkgIH0KLS0JICBicmVhazsKLSsvKiBBIGhlbHBl ciBmdW5jdGlvbiB3aGljaCBwYXJzZXMgdGhlIGhlYWRlciBvZiBhIG1hY3JvIHNlY3Rpb24uCi0r ICAgSWYgdGhlIG1hY3JvIHNlY3Rpb24gaXMgdGhlIGV4dGVuZGVkIChmb3Igbm93IGNhbGxlZCAi R05VIikgdHlwZSwKLSsgICB0aGVuIHRoaXMgdXBkYXRlcyAqT0ZGU0VUX1NJWkUuICBSZXR1cm5z IGEgcG9pbnRlciB0byBqdXN0IGFmdGVyCi0rICAgdGhlIGhlYWRlciwgb3IgaXNzdWVzIGEgY29t cGxhaW50IGFuZCByZXR1cm5zIE5VTEwgb24gZXJyb3IuICAqLwotIAotLQljYXNlIERXX01BQ0lO Rk9fc3RhcnRfZmlsZToKLS0JICB7Ci0tCSAgICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKLS0J ICAgIGludCBsaW5lLCBmaWxlOwotK3N0YXRpYyBnZGJfYnl0ZSAqCi0rZHdhcmZfcGFyc2VfbWFj cm9faGVhZGVyIChnZGJfYnl0ZSAqKm9wY29kZV9kZWZpbml0aW9ucywKLSsJCQkgIGJmZCAqYWJm ZCwKLSsJCQkgIGdkYl9ieXRlICptYWNfcHRyLAotKwkJCSAgdW5zaWduZWQgaW50ICpvZmZzZXRf c2l6ZSwKLSsJCQkgIGludCBzZWN0aW9uX2lzX2dudSkKLSt7Ci0rICBtZW1zZXQgKG9wY29kZV9k ZWZpbml0aW9ucywgMCwgMjU2ICogc2l6ZW9mIChnZGJfYnl0ZSAqKSk7Ci0gCi0tCSAgICBsaW5l ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLS0J ICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLS0JICAgIGZpbGUgPSByZWFkX3Vuc2lnbmVkX2xl YjEyOCAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0ciArPSBieXRl c19yZWFkOwotKyAgaWYgKHNlY3Rpb25faXNfZ251KQotKyAgICB7Ci0rICAgICAgdW5zaWduZWQg aW50IHZlcnNpb24sIGZsYWdzOwotIAotLQkgICAgY3VycmVudF9maWxlID0gbWFjcm9fc3RhcnRf ZmlsZSAoZmlsZSwgbGluZSwgY3VycmVudF9maWxlLAotLQkJCQkJICAgICBjb21wX2RpciwgbGgs IGN1LT5vYmpmaWxlKTsKLS0JICB9Ci0tCSAgYnJlYWs7Ci0rICAgICAgdmVyc2lvbiA9IHJlYWRf Ml9ieXRlcyAoYWJmZCwgbWFjX3B0cik7Ci0rICAgICAgaWYgKHZlcnNpb24gIT0gNCkKLSsJewot KwkgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywKLSsJCSAgICAgXygidW5yZWNvZ25p emVkIHZlcnNpb24gYCVkJyBpbiAuZGVidWdfbWFjcm8gc2VjdGlvbiIpLAotKwkJICAgICB2ZXJz aW9uKTsKLSsJICByZXR1cm4gTlVMTDsKLSsJfQotKyAgICAgIG1hY19wdHIgKz0gMjsKLSAKLS0J Y2FzZSBEV19NQUNJTkZPX2VuZF9maWxlOgotLQkgIC8qIE5vIGRhdGEgdG8gc2tpcCBieSBNQUNf UFRSLiAgKi8KLS0JICBicmVhazsKLSsgICAgICBmbGFncyA9IHJlYWRfMV9ieXRlIChhYmZkLCBt YWNfcHRyKTsKLSsgICAgICArK21hY19wdHI7Ci0rICAgICAgKm9mZnNldF9zaXplID0gKGZsYWdz ICYgMSkgPyA4IDogNDsKLSAKLS0JY2FzZSBEV19NQUNJTkZPX3ZlbmRvcl9leHQ6Ci0tCSAgLyog T25seSBza2lwIHRoZSBkYXRhIGJ5IE1BQ19QVFIuICAqLwotLQkgIHsKLS0JICAgIHVuc2lnbmVk IGludCBieXRlc19yZWFkOwotKyAgICAgIGlmICgoZmxhZ3MgJiAyKSAhPSAwKQotKwkvKiBXZSBk b24ndCBuZWVkIHRoZSBsaW5lIHRhYmxlIG9mZnNldC4gICovCi0rCW1hY19wdHIgKz0gKm9mZnNl dF9zaXplOwotIAotLQkgICAgcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZi eXRlc19yZWFkKTsKLS0JICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLS0JICAgIHJlYWRfZGly ZWN0X3N0cmluZyAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotLQkgICAgbWFjX3B0ciAr PSBieXRlc19yZWFkOwotLQkgIH0KLS0JICBicmVhazsKLSsgICAgICAvKiBWZW5kb3Igb3Bjb2Rl IGRlc2NyaXB0aW9ucy4gICovCi0rICAgICAgaWYgKChmbGFncyAmIDQpICE9IDApCi0rCXsKLSsJ ICB1bnNpZ25lZCBpbnQgaSwgY291bnQ7Ci0gCi0tCWRlZmF1bHQ6Ci0tCSAgYnJlYWs7Ci0rCSAg Y291bnQgPSByZWFkXzFfYnl0ZSAoYWJmZCwgbWFjX3B0cik7Ci0rCSAgKyttYWNfcHRyOwotKwkg IGZvciAoaSA9IDA7IGkgPCBjb3VudDsgKytpKQotKwkgICAgewotKwkgICAgICB1bnNpZ25lZCBp bnQgb3Bjb2RlLCBieXRlc19yZWFkOwotKwkgICAgICB1bnNpZ25lZCBsb25nIGFyZzsKLSsKLSsJ ICAgICAgb3Bjb2RlID0gcmVhZF8xX2J5dGUgKGFiZmQsIG1hY19wdHIpOwotKwkgICAgICArK21h Y19wdHI7Ci0rCSAgICAgIG9wY29kZV9kZWZpbml0aW9uc1tvcGNvZGVdID0gbWFjX3B0cjsKLSsJ ICAgICAgYXJnID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19y ZWFkKTsKLSsJICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICBtYWNfcHRyICs9 IGFyZzsKLSsJICAgIH0KLSAJfQotLSAgICB9IHdoaWxlIChtYWNpbmZvX3R5cGUgIT0gMCAmJiBj dXJyZW50X2ZpbGUgPT0gTlVMTCk7Ci0rICAgIH0KLSAKLS0gIC8qIFNlY29uZCBwYXNzOiBQcm9j ZXNzIGFsbCBlbnRyaWVzLgotKyAgcmV0dXJuIG1hY19wdHI7Ci0rfQotIAotLSAgICAgVXNlIHRo ZSBBVF9DT01NQU5EX0xJTkUgZmxhZyB0byBkZXRlcm1pbmUgd2hldGhlciB3ZSBhcmUgc3RpbGwg cHJvY2Vzc2luZwotLSAgICAgY29tbWFuZC1saW5lIG1hY3JvIGRlZmluaXRpb25zL3VuZGVmaW5p dGlvbnMuICBUaGlzIGZsYWcgaXMgdW5zZXQgd2hlbiB3ZQotLSAgICAgcmVhY2ggdGhlIGZpcnN0 IERXX01BQ0lORk9fc3RhcnRfZmlsZSBlbnRyeS4gICovCi0rLyogQSBoZWxwZXIgZm9yIGR3YXJm X2RlY29kZV9tYWNyb3MgdGhhdCBoYW5kbGVzIHRoZSBHTlUgZXh0ZW5zaW9ucywKLSsgICBpbmNs dWRpbmcgRFdfR05VX01BQ0lORk9fdHJhbnNwYXJlbnRfaW5jbHVkZS4gICovCi0rCi0rc3RhdGlj IHZvaWQKLStkd2FyZl9kZWNvZGVfbWFjcm9fYnl0ZXMgKGJmZCAqYWJmZCwgZ2RiX2J5dGUgKm1h Y19wdHIsIGdkYl9ieXRlICptYWNfZW5kLAotKwkJCSAgc3RydWN0IG1hY3JvX3NvdXJjZV9maWxl ICpjdXJyZW50X2ZpbGUsCi0rCQkJICBzdHJ1Y3QgbGluZV9oZWFkZXIgKmxoLCBjaGFyICpjb21w X2RpciwKLSsJCQkgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAotKwkJCSAg aW50IHNlY3Rpb25faXNfZ251LAotKwkJCSAgdW5zaWduZWQgaW50IG9mZnNldF9zaXplLAotKwkJ CSAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUpCi0rewotKyAgZW51bSBkd2FyZl9tYWNyb19yZWNv cmRfdHlwZSBtYWNpbmZvX3R5cGU7Ci0rICBpbnQgYXRfY29tbWFuZGxpbmU7Ci0rICBnZGJfYnl0 ZSAqb3Bjb2RlX2RlZmluaXRpb25zWzI1Nl07Ci0gCi0tICBtYWNfcHRyID0gZHdhcmYyX3Blcl9v YmpmaWxlLT5tYWNpbmZvLmJ1ZmZlciArIG9mZnNldDsKLSsgIG1hY19wdHIgPSBkd2FyZl9wYXJz ZV9tYWNyb19oZWFkZXIgKG9wY29kZV9kZWZpbml0aW9ucywgYWJmZCwgbWFjX3B0ciwKLSsJCQkJ ICAgICAgJm9mZnNldF9zaXplLCBzZWN0aW9uX2lzX2dudSk7Ci0rICBpZiAobWFjX3B0ciA9PSBO VUxMKQotKyAgICB7Ci0rICAgICAgLyogV2UgYWxyZWFkeSBpc3N1ZWQgYSBjb21wbGFpbnQuICAq LwotKyAgICAgIHJldHVybjsKLSsgICAgfQotIAotICAgLyogRGV0ZXJtaW5lcyBpZiBHREIgaXMg c3RpbGwgYmVmb3JlIGZpcnN0IERXX01BQ0lORk9fc3RhcnRfZmlsZS4gIElmIHRydWUKLSAgICAg IEdEQiBpcyBzdGlsbCByZWFkaW5nIHRoZSBkZWZpbml0aW9ucyBmcm9tIGNvbW1hbmQgbGluZS4g IEZpcnN0Ci1AQCAtMTQ3OTUsMTMgKzE0OTA4LDE1IEBACi0gICAgICAgLyogRG8gd2UgYXQgbGVh c3QgaGF2ZSByb29tIGZvciBhIG1hY2luZm8gdHlwZSBieXRlPyAgKi8KLSAgICAgICBpZiAobWFj X3B0ciA+PSBtYWNfZW5kKQotIAl7Ci0tCSAgZHdhcmYyX21hY3Jvc190b29fbG9uZ19jb21wbGFp bnQgKCk7Ci0rCSAgZHdhcmYyX21hY3Jvc190b29fbG9uZ19jb21wbGFpbnQgKHNlY3Rpb24pOwot IAkgIGJyZWFrOwotIAl9Ci0gCi0gICAgICAgbWFjaW5mb190eXBlID0gcmVhZF8xX2J5dGUgKGFi ZmQsIG1hY19wdHIpOwotICAgICAgIG1hY19wdHIrKzsKLSAKLSsgICAgICAvKiBOb3RlIHRoYXQg d2UgcmVseSBvbiB0aGUgZmFjdCB0aGF0IHRoZSBjb3JyZXNwb25kaW5nIEdOVSBhbmQKLSsJIERX QVJGIGNvbnN0YW50cyBhcmUgdGhlIHNhbWUuICAqLwotICAgICAgIHN3aXRjaCAobWFjaW5mb190 eXBlKQotIAl7Ci0gCSAgLyogQSB6ZXJvIG1hY2luZm8gdHlwZSBpbmRpY2F0ZXMgdGhlIGVuZCBv ZiB0aGUgbWFjcm8KLUBAIC0xNDgwOSwyOSArMTQ5MjQsNDUgQEAKLSAJY2FzZSAwOgotIAkgIGJy ZWFrOwotIAotLSAgICAgICAgY2FzZSBEV19NQUNJTkZPX2RlZmluZToKLS0gICAgICAgIGNhc2Ug RFdfTUFDSU5GT191bmRlZjoKLSsgICAgICAgIGNhc2UgRFdfTUFDUk9fR05VX2RlZmluZToKLSsg ICAgICAgIGNhc2UgRFdfTUFDUk9fR05VX3VuZGVmOgotKwljYXNlIERXX01BQ1JPX0dOVV9kZWZp bmVfaW5kaXJlY3Q6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0OgotICAgICAg ICAgICB7Ci0gICAgICAgICAgICAgdW5zaWduZWQgaW50IGJ5dGVzX3JlYWQ7Ci0gICAgICAgICAg ICAgaW50IGxpbmU7Ci0gICAgICAgICAgICAgY2hhciAqYm9keTsKLSsJICAgIGludCBpc19kZWZp bmU7Ci0gCi0tICAgICAgICAgICAgbGluZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBt YWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0tICAgICAgICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFk OwotLSAgICAgICAgICAgIGJvZHkgPSByZWFkX2RpcmVjdF9zdHJpbmcgKGFiZmQsIG1hY19wdHIs ICZieXRlc19yZWFkKTsKLS0gICAgICAgICAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rCSAg ICBsaW5lID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFk KTsKLSsJICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLSsKLSsJICAgIGlmIChtYWNpbmZvX3R5 cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZQotKwkJfHwgbWFjaW5mb190eXBlID09IERXX01BQ1JP X0dOVV91bmRlZikKLSsJICAgICAgewotKwkJYm9keSA9IHJlYWRfZGlyZWN0X3N0cmluZyAoYWJm ZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotKwkJbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkg ICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCUxPTkdFU1Qgc3RyX29mZnNldDsKLSsK LSsJCXN0cl9vZmZzZXQgPSByZWFkX29mZnNldF8xIChhYmZkLCBtYWNfcHRyLCBvZmZzZXRfc2l6 ZSk7Ci0rCQltYWNfcHRyICs9IG9mZnNldF9zaXplOwotIAotKwkJYm9keSA9IHJlYWRfaW5kaXJl Y3Rfc3RyaW5nX2F0X29mZnNldCAoYWJmZCwgc3RyX29mZnNldCk7Ci0rCSAgICAgIH0KLSsKLSsJ ICAgIGlzX2RlZmluZSA9IChtYWNpbmZvX3R5cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZQotKwkJ CSB8fCBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDUk9fR05VX2RlZmluZV9pbmRpcmVjdCk7Ci0gICAg ICAgICAgICAgaWYgKCEgY3VycmVudF9maWxlKQotIAkgICAgICB7Ci0gCQkvKiBEV0FSRiB2aW9s YXRpb24gYXMgbm8gbWFpbiBzb3VyY2UgaXMgcHJlc2VudC4gICovCi0gCQljb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsCi0gCQkJICAgXygiZGVidWcgaW5mbyB3aXRoIG5vIG1haW4gc291 cmNlIGdpdmVzIG1hY3JvICVzICIKLSAJCQkgICAgICJvbiBsaW5lICVkOiAlcyIpLAotLQkJCSAg IG1hY2luZm9fdHlwZSA9PSBEV19NQUNJTkZPX2RlZmluZSA/Ci0tCQkJICAgICBfKCJkZWZpbml0 aW9uIikgOgotLQkJCSAgICAgICBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT191bmRlZiA/Ci0t CQkJCSBfKCJ1bmRlZmluaXRpb24iKSA6Ci0tCQkJCSBfKCJzb21ldGhpbmctb3Itb3RoZXIiKSwg bGluZSwgYm9keSk7Ci0rCQkJICAgaXNfZGVmaW5lID8gXygiZGVmaW5pdGlvbiIpIDogXygidW5k ZWZpbml0aW9uIiksCi0rCQkJICAgbGluZSwgYm9keSk7Ci0gCQlicmVhazsKLSAJICAgICAgfQot IAkgICAgaWYgKChsaW5lID09IDAgJiYgIWF0X2NvbW1hbmRsaW5lKQotQEAgLTE0ODM5LDIxICsx NDk3MCwyMSBAQAotIAkgICAgICBjb21wbGFpbnQgKCZzeW1maWxlX2NvbXBsYWludHMsCi0gCQkJ IF8oImRlYnVnIGluZm8gZ2l2ZXMgJXMgbWFjcm8gJXMgd2l0aCAlcyBsaW5lICVkOiAlcyIpLAot IAkJCSBhdF9jb21tYW5kbGluZSA/IF8oImNvbW1hbmQtbGluZSIpIDogXygiaW4tZmlsZSIpLAot LQkJCSBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT19kZWZpbmUgPwotLQkJCSAgIF8oImRlZmlu aXRpb24iKSA6Ci0tCQkJICAgICBtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT191bmRlZiA/Ci0t CQkJICAgICAgIF8oInVuZGVmaW5pdGlvbiIpIDoKLS0JCQkgICAgICAgXygic29tZXRoaW5nLW9y LW90aGVyIiksCi0rCQkJIGlzX2RlZmluZSA/IF8oImRlZmluaXRpb24iKSA6IF8oInVuZGVmaW5p dGlvbiIpLAotIAkJCSBsaW5lID09IDAgPyBfKCJ6ZXJvIikgOiBfKCJub24temVybyIpLCBsaW5l LCBib2R5KTsKLSAKLS0JICAgIGlmIChtYWNpbmZvX3R5cGUgPT0gRFdfTUFDSU5GT19kZWZpbmUp Ci0rCSAgICBpZiAoaXNfZGVmaW5lKQotIAkgICAgICBwYXJzZV9tYWNyb19kZWZpbml0aW9uIChj dXJyZW50X2ZpbGUsIGxpbmUsIGJvZHkpOwotLQkgICAgZWxzZSBpZiAobWFjaW5mb190eXBlID09 IERXX01BQ0lORk9fdW5kZWYpCi0tCSAgICAgIG1hY3JvX3VuZGVmIChjdXJyZW50X2ZpbGUsIGxp bmUsIGJvZHkpOwotKwkgICAgZWxzZQotKwkgICAgICB7Ci0rCQlnZGJfYXNzZXJ0IChtYWNpbmZv X3R5cGUgPT0gRFdfTUFDUk9fR05VX3VuZGVmCi0rCQkJICAgIHx8IG1hY2luZm9fdHlwZSA9PSBE V19NQUNST19HTlVfdW5kZWZfaW5kaXJlY3QpOwotKwkJbWFjcm9fdW5kZWYgKGN1cnJlbnRfZmls ZSwgbGluZSwgYm9keSk7Ci0rCSAgICAgIH0KLSAgICAgICAgICAgfQotICAgICAgICAgICBicmVh azsKLSAKLS0gICAgICAgIGNhc2UgRFdfTUFDSU5GT19zdGFydF9maWxlOgotKyAgICAgICAgY2Fz ZSBEV19NQUNST19HTlVfc3RhcnRfZmlsZToKLSAgICAgICAgICAgewotICAgICAgICAgICAgIHVu c2lnbmVkIGludCBieXRlc19yZWFkOwotICAgICAgICAgICAgIGludCBsaW5lLCBmaWxlOwotQEAg LTE0ODczLDE3ICsxNTAwNCwxOCBAQAotIAotIAkgICAgaWYgKGF0X2NvbW1hbmRsaW5lKQotIAkg ICAgICB7Ci0tCQkvKiBUaGlzIERXX01BQ0lORk9fc3RhcnRfZmlsZSB3YXMgZXhlY3V0ZWQgaW4g dGhlIHBhc3Mgb25lLiAgKi8KLSsJCS8qIFRoaXMgRFdfTUFDUk9fR05VX3N0YXJ0X2ZpbGUgd2Fz IGV4ZWN1dGVkIGluIHRoZQotKwkJICAgcGFzcyBvbmUuICAqLwotIAkJYXRfY29tbWFuZGxpbmUg PSAwOwotIAkgICAgICB9Ci0gCSAgICBlbHNlCi0gCSAgICAgIGN1cnJlbnRfZmlsZSA9IG1hY3Jv X3N0YXJ0X2ZpbGUgKGZpbGUsIGxpbmUsCi0gCQkJCQkgICAgICAgY3VycmVudF9maWxlLCBjb21w X2RpciwKLS0JCQkJCSAgICAgICBsaCwgY3UtPm9iamZpbGUpOwotKwkJCQkJICAgICAgIGxoLCBv YmpmaWxlKTsKLSAgICAgICAgICAgfQotICAgICAgICAgICBicmVhazsKLSAKLS0gICAgICAgIGNh c2UgRFdfTUFDSU5GT19lbmRfZmlsZToKLSsgICAgICAgIGNhc2UgRFdfTUFDUk9fR05VX2VuZF9m aWxlOgotICAgICAgICAgICBpZiAoISBjdXJyZW50X2ZpbGUpCi0gCSAgICBjb21wbGFpbnQgKCZz eW1maWxlX2NvbXBsYWludHMsCi0gCQkgICAgICAgXygibWFjcm8gZGVidWcgaW5mbyBoYXMgYW4g dW5tYXRjaGVkICIKLUBAIC0xNDg5Myw3ICsxNTAyNSw3IEBACi0gICAgICAgICAgICAgICBjdXJy ZW50X2ZpbGUgPSBjdXJyZW50X2ZpbGUtPmluY2x1ZGVkX2J5OwotICAgICAgICAgICAgICAgaWYg KCEgY3VycmVudF9maWxlKQotICAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAg ZW51bSBkd2FyZl9tYWNpbmZvX3JlY29yZF90eXBlIG5leHRfdHlwZTsKLSsgICAgICAgICAgICAg ICAgICBlbnVtIGR3YXJmX21hY3JvX3JlY29yZF90eXBlIG5leHRfdHlwZTsKLSAKLSAgICAgICAg ICAgICAgICAgICAvKiBHQ0MgY2lyY2EgTWFyY2ggMjAwMiBkb2Vzbid0IHByb2R1Y2UgdGhlIHpl cm8KLSAgICAgICAgICAgICAgICAgICAgICB0eXBlIGJ5dGUgbWFya2luZyB0aGUgZW5kIG9mIHRo ZSBjb21waWxhdGlvbgotQEAgLTE0OTAzLDcgKzE1MDM1LDcgQEAKLSAgICAgICAgICAgICAgICAg ICAvKiBEbyB3ZSBhdCBsZWFzdCBoYXZlIHJvb20gZm9yIGEgbWFjaW5mbyB0eXBlIGJ5dGU/ICAq LwotICAgICAgICAgICAgICAgICAgIGlmIChtYWNfcHRyID49IG1hY19lbmQpCi0gICAgICAgICAg ICAgICAgICAgICB7Ci0tCQkgICAgICBkd2FyZjJfbWFjcm9zX3Rvb19sb25nX2NvbXBsYWludCAo KTsKLSsJCSAgICAgIGR3YXJmMl9tYWNyb3NfdG9vX2xvbmdfY29tcGxhaW50IChzZWN0aW9uKTsK LSAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICAgfQot IAotQEAgLTE0OTIwLDIzICsxNTA1MiwxOTkgQEAKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAg IGJyZWFrOwotIAotKwljYXNlIERXX01BQ1JPX0dOVV90cmFuc3BhcmVudF9pbmNsdWRlOgotKwkg IHsKLSsJICAgIExPTkdFU1Qgb2Zmc2V0OwotKwotKwkgICAgb2Zmc2V0ID0gcmVhZF9vZmZzZXRf MSAoYWJmZCwgbWFjX3B0ciwgb2Zmc2V0X3NpemUpOwotKwkgICAgbWFjX3B0ciArPSBvZmZzZXRf c2l6ZTsKLSsKLSsJICAgIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYWJmZCwKLSsJCQkJICAg ICAgc2VjdGlvbi0+YnVmZmVyICsgb2Zmc2V0LAotKwkJCQkgICAgICBtYWNfZW5kLCBjdXJyZW50 X2ZpbGUsCi0rCQkJCSAgICAgIGxoLCBjb21wX2RpciwKLSsJCQkJICAgICAgc2VjdGlvbiwgc2Vj dGlvbl9pc19nbnUsCi0rCQkJCSAgICAgIG9mZnNldF9zaXplLCBvYmpmaWxlKTsKLSsJICB9Ci0r CSAgYnJlYWs7Ci0rCi0gICAgICAgICBjYXNlIERXX01BQ0lORk9fdmVuZG9yX2V4dDoKLS0gICAg ICAgICAgewotLSAgICAgICAgICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotLSAgICAgICAg ICAgIGludCBjb25zdGFudDsKLSsJICBpZiAoIXNlY3Rpb25faXNfZ251KQotKwkgICAgewotKwkg ICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNfcmVhZDsKLSsJICAgICAgaW50IGNvbnN0YW50OwotIAot LSAgICAgICAgICAgIGNvbnN0YW50ID0gcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19w dHIsICZieXRlc19yZWFkKTsKLS0gICAgICAgICAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0t ICAgICAgICAgICAgcmVhZF9kaXJlY3Rfc3RyaW5nIChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVh ZCk7Ci0tICAgICAgICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICBjb25zdGFu dCA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0r CSAgICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLSsJICAgICAgcmVhZF9kaXJlY3Rfc3RyaW5n IChhYmZkLCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0rCSAgICAgIG1hY19wdHIgKz0gYnl0ZXNf cmVhZDsKLSAKLS0gICAgICAgICAgICAvKiBXZSBkb24ndCByZWNvZ25pemUgYW55IHZlbmRvciBl eHRlbnNpb25zLiAgKi8KLS0gICAgICAgICAgfQotLSAgICAgICAgICBicmVhazsKLSsJICAgICAg LyogV2UgZG9uJ3QgcmVjb2duaXplIGFueSB2ZW5kb3IgZXh0ZW5zaW9ucy4gICovCi0rCSAgICAg IGJyZWFrOwotKwkgICAgfQotKwkgIC8qIEZBTExUSFJPVUdIICovCi0rCi0rCWRlZmF1bHQ6Ci0r CSAgbWFjX3B0ciA9IHNraXBfdW5rbm93bl9vcGNvZGUgKG1hY2luZm9fdHlwZSwgb3Bjb2RlX2Rl ZmluaXRpb25zLAotKwkJCQkJIG1hY19wdHIsIGFiZmQsIG9mZnNldF9zaXplLAotKwkJCQkJIHNl Y3Rpb24pOwotKwkgIGlmIChtYWNfcHRyID09IE5VTEwpCi0rCSAgICByZXR1cm47Ci0rCSAgYnJl YWs7Ci0gICAgICAgICB9Ci0gICAgIH0gd2hpbGUgKG1hY2luZm9fdHlwZSAhPSAwKTsKLSB9Ci0g Ci0rc3RhdGljIHZvaWQKLStkd2FyZl9kZWNvZGVfbWFjcm9zIChzdHJ1Y3QgbGluZV9oZWFkZXIg KmxoLCB1bnNpZ25lZCBpbnQgb2Zmc2V0LAotKyAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNv bXBfZGlyLCBiZmQgKmFiZmQsCi0rICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGR3YXJmMl9j dSAqY3UsCi0rCQkgICAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9pbmZvICpzZWN0aW9uLAotKwkJ ICAgICBpbnQgc2VjdGlvbl9pc19nbnUpCi0rewotKyAgZ2RiX2J5dGUgKm1hY19wdHIsICptYWNf ZW5kOwotKyAgc3RydWN0IG1hY3JvX3NvdXJjZV9maWxlICpjdXJyZW50X2ZpbGUgPSAwOwotKyAg ZW51bSBkd2FyZl9tYWNyb19yZWNvcmRfdHlwZSBtYWNpbmZvX3R5cGU7Ci0rICB1bnNpZ25lZCBp bnQgb2Zmc2V0X3NpemUgPSBjdS0+aGVhZGVyLm9mZnNldF9zaXplOwotKyAgZ2RiX2J5dGUgKm9w Y29kZV9kZWZpbml0aW9uc1syNTZdOwotKwotKyAgZHdhcmYyX3JlYWRfc2VjdGlvbiAoZHdhcmYy X3Blcl9vYmpmaWxlLT5vYmpmaWxlLCBzZWN0aW9uKTsKLSsgIGlmIChzZWN0aW9uLT5idWZmZXIg PT0gTlVMTCkKLSsgICAgewotKyAgICAgIGNvbXBsYWludCAoJnN5bWZpbGVfY29tcGxhaW50cywg XygibWlzc2luZyAlcyBzZWN0aW9uIiksCi0rCQkgc2VjdGlvbi0+YXNlY3Rpb24tPm5hbWUpOwot KyAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgLyogRmlyc3QgcGFzczogRmluZCB0aGUgbmFt ZSBvZiB0aGUgYmFzZSBmaWxlbmFtZS4KLSsgICAgIFRoaXMgZmlsZW5hbWUgaXMgbmVlZGVkIGlu IG9yZGVyIHRvIHByb2Nlc3MgYWxsIG1hY3JvcyB3aG9zZSBkZWZpbml0aW9uCi0rICAgICAob3Ig dW5kZWZpbml0aW9uKSBjb21lcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUuICBUaGVzZSBtYWNyb3Mg YXJlIGRlZmluZWQKLSsgICAgIGJlZm9yZSB0aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFydF9maWxl IGVudHJ5LCBhbmQgeWV0IHN0aWxsIG5lZWQgdG8gYmUKLSsgICAgIGFzc29jaWF0ZWQgdG8gdGhl IGJhc2UgZmlsZS4KLSsKLSsgICAgIFRvIGRldGVybWluZSB0aGUgYmFzZSBmaWxlIG5hbWUsIHdl IHNjYW4gdGhlIG1hY3JvIGRlZmluaXRpb25zIHVudGlsIHdlCi0rICAgICByZWFjaCB0aGUgZmly c3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LiAgV2UgdGhlbiBpbml0aWFsaXplCi0rICAg ICBDVVJSRU5UX0ZJTEUgYWNjb3JkaW5nbHkgc28gdGhhdCBhbnkgbWFjcm8gZGVmaW5pdGlvbiBm b3VuZCBiZWZvcmUgdGhlCi0rICAgICBmaXJzdCBEV19NQUNJTkZPX3N0YXJ0X2ZpbGUgY2FuIHN0 aWxsIGJlIGFzc29jaWF0ZWQgdG8gdGhlIGJhc2UgZmlsZS4gICovCi0rCi0rICBtYWNfcHRyID0g c2VjdGlvbi0+YnVmZmVyICsgb2Zmc2V0OwotKyAgbWFjX2VuZCA9IHNlY3Rpb24tPmJ1ZmZlciAr IHNlY3Rpb24tPnNpemU7Ci0rCi0rICBtYWNfcHRyID0gZHdhcmZfcGFyc2VfbWFjcm9faGVhZGVy IChvcGNvZGVfZGVmaW5pdGlvbnMsIGFiZmQsIG1hY19wdHIsCi0rCQkJCSAgICAgICZvZmZzZXRf c2l6ZSwgc2VjdGlvbl9pc19nbnUpOwotKyAgaWYgKG1hY19wdHIgPT0gTlVMTCkKLSsgICAgewot KyAgICAgIC8qIFdlIGFscmVhZHkgaXNzdWVkIGEgY29tcGxhaW50LiAgKi8KLSsgICAgICByZXR1 cm47Ci0rICAgIH0KLSsKLSsgIGRvCi0rICAgIHsKLSsgICAgICAvKiBEbyB3ZSBhdCBsZWFzdCBo YXZlIHJvb20gZm9yIGEgbWFjaW5mbyB0eXBlIGJ5dGU/ICAqLwotKyAgICAgIGlmIChtYWNfcHRy ID49IG1hY19lbmQpCi0rICAgICAgICB7Ci0rCSAgLyogQ29tcGxhaW50IGlzIHByaW50ZWQgZHVy aW5nIHRoZSBzZWNvbmQgcGFzcyBhcyBHREIgd2lsbCBwcm9iYWJseQotKwkgICAgIHN0b3AgdGhl IGZpcnN0IHBhc3MgZWFybGllciB1cG9uIGZpbmRpbmcKLSsJICAgICBEV19NQUNJTkZPX3N0YXJ0 X2ZpbGUuICAqLwotKwkgIGJyZWFrOwotKyAgICAgICAgfQotKwotKyAgICAgIG1hY2luZm9fdHlw ZSA9IHJlYWRfMV9ieXRlIChhYmZkLCBtYWNfcHRyKTsKLSsgICAgICBtYWNfcHRyKys7Ci0rCi0r ICAgICAgLyogTm90ZSB0aGF0IHdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCB0aGUgY29ycmVzcG9u ZGluZyBHTlUgYW5kCi0rCSBEV0FSRiBjb25zdGFudHMgYXJlIHRoZSBzYW1lLiAgKi8KLSsgICAg ICBzd2l0Y2ggKG1hY2luZm9fdHlwZSkKLSsgICAgICAgIHsKLSsgICAgICAgICAgLyogQSB6ZXJv IG1hY2luZm8gdHlwZSBpbmRpY2F0ZXMgdGhlIGVuZCBvZiB0aGUgbWFjcm8KLSsgICAgICAgICAg ICAgaW5mb3JtYXRpb24uICAqLwotKyAgICAgICAgY2FzZSAwOgotKwkgIGJyZWFrOwotKwotKwlj YXNlIERXX01BQ1JPX0dOVV9kZWZpbmU6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmOgotKwkg IC8qIE9ubHkgc2tpcCB0aGUgZGF0YSBieSBNQUNfUFRSLiAgKi8KLSsJICB7Ci0rCSAgICB1bnNp Z25lZCBpbnQgYnl0ZXNfcmVhZDsKLSsKLSsJICAgIHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZk LCBtYWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0rCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0r CSAgICByZWFkX2RpcmVjdF9zdHJpbmcgKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJ ICAgIG1hY19wdHIgKz0gYnl0ZXNfcmVhZDsKLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2Ug RFdfTUFDUk9fR05VX3N0YXJ0X2ZpbGU6Ci0rCSAgewotKwkgICAgdW5zaWduZWQgaW50IGJ5dGVz X3JlYWQ7Ci0rCSAgICBpbnQgbGluZSwgZmlsZTsKLSsKLSsJICAgIGxpbmUgPSByZWFkX3Vuc2ln bmVkX2xlYjEyOCAoYWJmZCwgbWFjX3B0ciwgJmJ5dGVzX3JlYWQpOwotKwkgICAgbWFjX3B0ciAr PSBieXRlc19yZWFkOwotKwkgICAgZmlsZSA9IHJlYWRfdW5zaWduZWRfbGViMTI4IChhYmZkLCBt YWNfcHRyLCAmYnl0ZXNfcmVhZCk7Ci0rCSAgICBtYWNfcHRyICs9IGJ5dGVzX3JlYWQ7Ci0rCi0r CSAgICBjdXJyZW50X2ZpbGUgPSBtYWNyb19zdGFydF9maWxlIChmaWxlLCBsaW5lLCBjdXJyZW50 X2ZpbGUsCi0rCQkJCQkgICAgIGNvbXBfZGlyLCBsaCwgY3UtPm9iamZpbGUpOwotKwkgIH0KLSsJ ICBicmVhazsKLSsKLSsJY2FzZSBEV19NQUNST19HTlVfZW5kX2ZpbGU6Ci0rCSAgLyogTm8gZGF0 YSB0byBza2lwIGJ5IE1BQ19QVFIuICAqLwotKwkgIGJyZWFrOwotKwotKwljYXNlIERXX01BQ1JP X0dOVV9kZWZpbmVfaW5kaXJlY3Q6Ci0rCWNhc2UgRFdfTUFDUk9fR05VX3VuZGVmX2luZGlyZWN0 OgotKwkgIHsKLSsJICAgIHVuc2lnbmVkIGludCBieXRlc19yZWFkOwotKwotKwkgICAgcmVhZF91 bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAgIG1hY19w dHIgKz0gYnl0ZXNfcmVhZDsKLSsJICAgIG1hY19wdHIgKz0gb2Zmc2V0X3NpemU7Ci0rCSAgfQot KwkgIGJyZWFrOwotKwotKwljYXNlIERXX01BQ1JPX0dOVV90cmFuc3BhcmVudF9pbmNsdWRlOgot KwkgIC8qIE5vdGUgdGhhdCwgYWNjb3JkaW5nIHRvIHRoZSBzcGVjLCBhIHRyYW5zcGFyZW50IGlu Y2x1ZGUKLSsJICAgICBjaGFpbiBjYW5ub3QgY2FsbCBEV19NQUNST19HTlVfc3RhcnRfZmlsZS4g IFNvLCB3ZSBjYW4ganVzdAotKwkgICAgIHNraXAgdGhpcyBvcGNvZGUuICAqLwotKwkgIG1hY19w dHIgKz0gb2Zmc2V0X3NpemU7Ci0rCSAgYnJlYWs7Ci0rCi0rCWNhc2UgRFdfTUFDSU5GT192ZW5k b3JfZXh0OgotKwkgIC8qIE9ubHkgc2tpcCB0aGUgZGF0YSBieSBNQUNfUFRSLiAgKi8KLSsJICBp ZiAoIXNlY3Rpb25faXNfZ251KQotKwkgICAgewotKwkgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNf cmVhZDsKLSsKLSsJICAgICAgcmVhZF91bnNpZ25lZF9sZWIxMjggKGFiZmQsIG1hY19wdHIsICZi eXRlc19yZWFkKTsKLSsJICAgICAgbWFjX3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgICByZWFk X2RpcmVjdF9zdHJpbmcgKGFiZmQsIG1hY19wdHIsICZieXRlc19yZWFkKTsKLSsJICAgICAgbWFj X3B0ciArPSBieXRlc19yZWFkOwotKwkgICAgfQotKwkgIC8qIEZBTExUSFJPVUdIICovCi0rCi0r CWRlZmF1bHQ6Ci0rCSAgbWFjX3B0ciA9IHNraXBfdW5rbm93bl9vcGNvZGUgKG1hY2luZm9fdHlw ZSwgb3Bjb2RlX2RlZmluaXRpb25zLAotKwkJCQkJIG1hY19wdHIsIGFiZmQsIG9mZnNldF9zaXpl LAotKwkJCQkJIHNlY3Rpb24pOwotKwkgIGlmIChtYWNfcHRyID09IE5VTEwpCi0rCSAgICByZXR1 cm47Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAgfSB3aGlsZSAobWFjaW5mb190eXBlICE9IDAgJiYg Y3VycmVudF9maWxlID09IE5VTEwpOwotKwotKyAgLyogU2Vjb25kIHBhc3M6IFByb2Nlc3MgYWxs IGVudHJpZXMuCi0rCi0rICAgICBVc2UgdGhlIEFUX0NPTU1BTkRfTElORSBmbGFnIHRvIGRldGVy bWluZSB3aGV0aGVyIHdlIGFyZSBzdGlsbCBwcm9jZXNzaW5nCi0rICAgICBjb21tYW5kLWxpbmUg bWFjcm8gZGVmaW5pdGlvbnMvdW5kZWZpbml0aW9ucy4gIFRoaXMgZmxhZyBpcyB1bnNldCB3aGVu IHdlCi0rICAgICByZWFjaCB0aGUgZmlyc3QgRFdfTUFDSU5GT19zdGFydF9maWxlIGVudHJ5LiAg Ki8KLSsKLSsgIGR3YXJmX2RlY29kZV9tYWNyb19ieXRlcyAoYWJmZCwgc2VjdGlvbi0+YnVmZmVy ICsgb2Zmc2V0LCBtYWNfZW5kLAotKwkJCSAgICBjdXJyZW50X2ZpbGUsIGxoLCBjb21wX2Rpciwg c2VjdGlvbiwgc2VjdGlvbl9pc19nbnUsCi0rCQkJICAgIG9mZnNldF9zaXplLCBjdS0+b2JqZmls ZSk7Ci0rfQotKwotIC8qIENoZWNrIGlmIHRoZSBhdHRyaWJ1dGUncyBmb3JtIGlzIGEgRFdfRk9S TV9ibG9jayoKLSAgICBpZiBzbyByZXR1cm4gdHJ1ZSBlbHNlIGZhbHNlLiAgKi8KLSBzdGF0aWMg aW50Ci1AQCAtMTU2NjMsNiArMTU5NzEsNyBAQAotICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgm ZGF0YS0+bGluZSk7Ci0gICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRhLT5sb2MpOwotICAg bXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+bWFjaW5mbyk7Ci0rICBtdW5tYXBfc2VjdGlv bl9idWZmZXIgKCZkYXRhLT5tYWNybyk7Ci0gICBtdW5tYXBfc2VjdGlvbl9idWZmZXIgKCZkYXRh LT5zdHIpOwotICAgbXVubWFwX3NlY3Rpb25fYnVmZmVyICgmZGF0YS0+cmFuZ2VzKTsKLSAgIG11 bm1hcF9zZWN0aW9uX2J1ZmZlciAoJmRhdGEtPmZyYW1lKTsKLS0tLSBzcmMvZ2RiL3N5bWZpbGUu aAkyMDExLzA2LzEwIDIxOjQ4OjA0CTEuOTMKLSsrKyBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA3 LzI2IDE3OjA0OjIzCTEuOTQKLUBAIC01ODIsNiArNTgyLDcgQEAKLSAgIHN0cnVjdCBkd2FyZjJf c2VjdGlvbl9uYW1lcyBsaW5lOwotICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25hbWVzIGxvYzsK LSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBtYWNpbmZvOwotKyAgc3RydWN0IGR3YXJm Ml9zZWN0aW9uX25hbWVzIG1hY3JvOwotICAgc3RydWN0IGR3YXJmMl9zZWN0aW9uX25hbWVzIHN0 cjsKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyByYW5nZXM7Ci0gICBzdHJ1Y3QgZHdh cmYyX3NlY3Rpb25fbmFtZXMgdHlwZXM7Ci0KLQotCi1SZTogRllJOiBpbXBsZW1lbnQgbmV3IERX QVJGIG1hY3JvIHByb3Bvc2FsCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLXBhdGNoZXMv MjAxMS0wNy9tc2cwMDc1OS5odG1sCi1odHRwOi8vc291cmNld2FyZS5vcmcvbWwvZ2RiLWN2cy8y MDExLTA3L21zZzAwMjI0Lmh0bWwKLQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjYg MjE6MDk6MDUJMS4xMzIyOQotIyMjIHNyYy9nZGIvQ2hhbmdlTG9nCTIwMTEvMDcvMjcgMTQ6NDU6 MzYJMS4xMzIzMAotIyMgLTEsMyArMSwxMCBAQAotKzIwMTEtMDctMjcgIFRvbSBUcm9tZXkgIDx0 cm9tZXlAcmVkaGF0LmNvbT4KLSsKLSsJKiB4Y29mZnJlYWQuYyAoZHdhcmYyX3hjb2ZmX25hbWVz KTogQWRkICdtYWNybycgYW5kICdzZW50aW5lbCcKLSsJZW50cmllcy4KLSsJKiBzeW1maWxlLmgg KHN0cnVjdCBkd2FyZjJfZGVidWdfc2VjdGlvbnMpIDxzZW50aW5lbD46IE5ldyBmaWVsZC4KLSsJ KiBkd2FyZjJyZWFkLmMgKGR3YXJmMl9lbGZfbmFtZXMpOiBBZGQgc2VudGluZWwgZW50cnkuCi0r Ci0gMjAxMS0wNy0yNiAgU3RlcmxpbmcgQXVndXN0aW5lICA8c2F1Z3VzdGluZUBnb29nbGUuY29t PgotIAotIAkqIGNsaS9jbGktZHVtcC5jIChkdW1wX2JpbmFyeV9maWxlKTogQ2hhbmdlIHBhcmFt ZXRlciB0eXBlIHRvCi0tLS0gc3JjL2dkYi9kd2FyZjJyZWFkLmMJMjAxMS8wNy8yNiAxNzowNDoy MwkxLjU1NQotKysrIHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTEvMDcvMjcgMTQ6NDU6MzcJMS41 NTYKLUBAIC0yNzEsNyArMjcxLDggQEAKLSAgIHsgIi5kZWJ1Z190eXBlcyIsICIuemRlYnVnX3R5 cGVzIiB9LAotICAgeyAiLmRlYnVnX2ZyYW1lIiwgIi56ZGVidWdfZnJhbWUiIH0sCi0gICB7ICIu ZWhfZnJhbWUiLCBOVUxMIH0sCi0tICB7ICIuZ2RiX2luZGV4IiwgIi56Z2RiX2luZGV4IiB9Ci0r ICB7ICIuZ2RiX2luZGV4IiwgIi56Z2RiX2luZGV4IiB9LAotKyAgMjMKLSB9OwotIAotIC8qIGxv Y2FsIGRhdGEgdHlwZXMgKi8KLS0tLSBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA3LzI2IDE3OjA0 OjIzCTEuOTQKLSsrKyBzcmMvZ2RiL3N5bWZpbGUuaAkyMDExLzA3LzI3IDE0OjQ1OjM3CTEuOTUK LUBAIC01ODksNiArNTg5LDkgQEAKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBmcmFt ZTsKLSAgIHN0cnVjdCBkd2FyZjJfc2VjdGlvbl9uYW1lcyBlaF9mcmFtZTsKLSAgIHN0cnVjdCBk d2FyZjJfc2VjdGlvbl9uYW1lcyBnZGJfaW5kZXg7Ci0rICAvKiBUaGlzIGZpZWxkIGhhcyBubyBt ZWFuaW5nLCBidXQgZXhpc3RzIHNvbGVseSB0byBjYXRjaCBjaGFuZ2VzIHRvCi0rICAgICB0aGlz IHN0cnVjdHVyZSB3aGljaCBhcmUgbm90IHJlZmxlY3RlZCBpbiBzb21lIGluc3RhbmNlLiAgKi8K LSsgIGludCBzZW50aW5lbDsKLSB9OwotIAotIGV4dGVybiBpbnQgZHdhcmYyX2hhc19pbmZvIChz dHJ1Y3Qgb2JqZmlsZSAqLAotLS0tIHNyYy9nZGIveGNvZmZyZWFkLmMJMjAxMS8wNi8wNyAxMjoz MTowNwkxLjg5Ci0rKysgc3JjL2dkYi94Y29mZnJlYWQuYwkyMDExLzA3LzI3IDE0OjQ1OjM3CTEu OTAKLUBAIC0xNjAsMTIgKzE2MCwxNCBAQAotICAgeyAiLmR3bGluZSIsIE5VTEwgfSwKLSAgIHsg Ii5kd2xvYyIsIE5VTEwgfSwKLSAgIHsgTlVMTCwgTlVMTCB9LCAvKiBkZWJ1Z19tYWNpbmZvICov Ci0rICB7IE5VTEwsIE5VTEwgfSwgLyogZGVidWdfbWFjcm8gKi8KLSAgIHsgIi5kd3N0ciIsIE5V TEwgfSwKLSAgIHsgIi5kd3JuZ2VzIiwgTlVMTCB9LAotICAgeyBOVUxMLCBOVUxMIH0sIC8qIGRl YnVnX3R5cGVzICovCi0gICB7ICIuZHdmcmFtZSIsIE5VTEwgfSwKLSAgIHsgTlVMTCwgTlVMTCB9 LCAvKiBlaF9mcmFtZSAqLwotLSAgeyBOVUxMLCBOVUxMIH0gLyogZ2RiX2luZGV4ICovCi0rICB7 IE5VTEwsIE5VTEwgfSwgLyogZ2RiX2luZGV4ICovCi0rICAyMwotIH07Ci0gCi0gc3RhdGljIHZv aWQKLQotCi0KLVtwYXRjaF1bcHl0aG9uXSBGaXggc2lnc2VndiB3aGVuIGEgcHJpbnRlciBmYWls cyB0byByZXR1cm4gYSB2YWx1ZSBhbmQgc3RyaW5nX3ByaW50IGlzIHNldC4KLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItcGF0Y2hlcy8yMDExLTA3L21zZzAwNzE5Lmh0bWwKLWh0dHA6Ly9z b3VyY2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTEtMDcvbXNnMDAyMzQuaHRtbAotCi0jIyMgc3Jj L2dkYi9DaGFuZ2VMb2cJMjAxMS8wNy8yNyAxOTozMTozMAkxLjEzMjM2Ci0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMS8wNy8yOCAxMDozNjozNwkxLjEzMjM3Ci0jIyAtMSwzICsxLDggQEAKLSsy MDExLTA3LTI4ICBQaGlsIE11bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotKwotKwkqIHZh cm9iai5jICh2YWx1ZV9nZXRfcHJpbnRfdmFsdWUpOiBNb3ZlIGhpbnQgY2hlY2sgbGF0ZXIgaW50 byB0aGUKLSsJZnVuY3Rpb24uICBDb21tZW50IGZ1bmN0aW9uLiAgRnJlZSB0aGV2YWx1ZSBiZWZv cmUgcmV1c2luZyBpdC4KLSsKLSAyMDExLTA3LTI3ICBKYW4gS3JhdG9jaHZpbCAgPGphbi5rcmF0 b2NodmlsQHJlZGhhdC5jb20+Ci0gCSAgICBQZWRybyBBbHZlcyAgPHBlZHJvQGNvZGVzb3VyY2Vy eS5jb20+Ci0gCi0tLS0gc3JjL2dkYi92YXJvYmouYwkyMDExLzA3LzE4IDA5OjIxOjQzCTEuMTgw Ci0rKysgc3JjL2dkYi92YXJvYmouYwkyMDExLzA3LzI4IDEwOjM2OjQwCTEuMTgxCi1AQCAtMjYx MCwyNSArMjYxMCwyMSBAQAotIAotIAlpZiAoUHlPYmplY3RfSGFzQXR0ciAodmFsdWVfZm9ybWF0 dGVyLCBnZGJweV90b19zdHJpbmdfY3N0KSkKLSAJICB7Ci0tCSAgICBjaGFyICpoaW50OwotIAkg ICAgc3RydWN0IHZhbHVlICpyZXBsYWNlbWVudDsKLSAJICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBO VUxMOwotIAotLQkgICAgaGludCA9IGdkYnB5X2dldF9kaXNwbGF5X2hpbnQgKHZhbHVlX2Zvcm1h dHRlcik7Ci0tCSAgICBpZiAoaGludCkKLS0JICAgICAgewotLQkJaWYgKCFzdHJjbXAgKGhpbnQs ICJzdHJpbmciKSkKLS0JCSAgc3RyaW5nX3ByaW50ID0gMTsKLS0JCXhmcmVlIChoaW50KTsKLS0J ICAgICAgfQotLQotIAkgICAgb3V0cHV0ID0gYXBwbHlfdmFyb2JqX3ByZXR0eV9wcmludGVyICh2 YWx1ZV9mb3JtYXR0ZXIsCi0gCQkJCQkJICAmcmVwbGFjZW1lbnQsCi0gCQkJCQkJICBzdGIpOwot KwotKwkgICAgLyogSWYgd2UgaGF2ZSBzdHJpbmcgbGlrZSBvdXRwdXQgLi4uICAqLwotIAkgICAg aWYgKG91dHB1dCkKLSAJICAgICAgewotIAkJbWFrZV9jbGVhbnVwX3B5X2RlY3JlZiAob3V0cHV0 KTsKLSAKLSsJCS8qIElmIHRoaXMgaXMgYSBsYXp5IHN0cmluZywgZXh0cmFjdCBpdC4gIEZvciBs YXp5Ci0rCQkgICBzdHJpbmdzIHdlIGFsd2F5cyBwcmludCBhcyBhIHN0cmluZywgc28gc2V0Ci0r CQkgICBzdHJpbmdfcHJpbnQuICAqLwotIAkJaWYgKGdkYnB5X2lzX2xhenlfc3RyaW5nIChvdXRw dXQpKQotIAkJICB7Ci0gCQkgICAgZ2RicHlfZXh0cmFjdF9sYXp5X3N0cmluZyAob3V0cHV0LCAm c3RyX2FkZHIsICZ0eXBlLAotQEAgLTI2MzgsMTIgKzI2MzQsMjcgQEAKLSAJCSAgfQotIAkJZWxz ZQotIAkJICB7Ci0rCQkgICAgLyogSWYgaXQgaXMgYSByZWd1bGFyIChub24tbGF6eSkgc3RyaW5n LCBleHRyYWN0Ci0rCQkgICAgICAgaXQgYW5kIGNvcHkgdGhlIGNvbnRlbnRzIGludG8gVEhFVkFM VUUuICBJZiB0aGUKLSsJCSAgICAgICBoaW50IHNheXMgdG8gcHJpbnQgaXQgYXMgYSBzdHJpbmcs IHNldAotKwkJICAgICAgIHN0cmluZ19wcmludC4gIE90aGVyd2lzZSBqdXN0IHJldHVybiB0aGUg ZXh0cmFjdGVkCi0rCQkgICAgICAgc3RyaW5nIGFzIGEgdmFsdWUuICAqLwotKwotIAkJICAgIFB5 T2JqZWN0ICpweV9zdHIKLSAJCSAgICAgID0gcHl0aG9uX3N0cmluZ190b190YXJnZXRfcHl0aG9u X3N0cmluZyAob3V0cHV0KTsKLSAKLSAJCSAgICBpZiAocHlfc3RyKQotIAkJICAgICAgewotIAkJ CWNoYXIgKnMgPSBQeVN0cmluZ19Bc1N0cmluZyAocHlfc3RyKTsKLSsJCQljaGFyICpoaW50Owot KwotKwkJCWhpbnQgPSBnZGJweV9nZXRfZGlzcGxheV9oaW50ICh2YWx1ZV9mb3JtYXR0ZXIpOwot KwkJCWlmIChoaW50KQotKwkJCSAgewotKwkJCSAgICBpZiAoIXN0cmNtcCAoaGludCwgInN0cmlu ZyIpKQotKwkJCSAgICAgIHN0cmluZ19wcmludCA9IDE7Ci0rCQkJICAgIHhmcmVlIChoaW50KTsK LSsJCQkgIH0KLSAKLSAJCQlsZW4gPSBQeVN0cmluZ19TaXplIChweV9zdHIpOwotIAkJCXRoZXZh bHVlID0geG1lbWR1cCAocywgbGVuICsgMSwgbGVuICsgMSk7Ci1AQCAtMjY2Miw2ICsyNjczLDkg QEAKLSAJCSAgICAgIGdkYnB5X3ByaW50X3N0YWNrICgpOwotIAkJICB9Ci0gCSAgICAgIH0KLSsJ ICAgIC8qIElmIHRoZSBwcmludGVyIHJldHVybmVkIGEgcmVwbGFjZW1lbnQgdmFsdWUsIHNldCBW QUxVRQotKwkgICAgICAgdG8gUkVQTEFDRU1FTlQuICBJZiB0aGVyZSBpcyBub3QgYSByZXBsYWNl bWVudCB2YWx1ZSwKLSsJICAgICAgIGp1c3QgdXNlIHRoZSB2YWx1ZSBwYXNzZWQgdG8gdGhpcyBm dW5jdGlvbi4gICovCi0gCSAgICBpZiAocmVwbGFjZW1lbnQpCi0gCSAgICAgIHZhbHVlID0gcmVw bGFjZW1lbnQ7Ci0gCSAgfQotQEAgLTI2NzIsMTIgKzI2ODYsMTggQEAKLSAgIGdldF9mb3JtYXR0 ZWRfcHJpbnRfb3B0aW9ucyAoJm9wdHMsIGZvcm1hdF9jb2RlWyhpbnQpIGZvcm1hdF0pOwotICAg b3B0cy5kZXJlZl9yZWYgPSAwOwotICAgb3B0cy5yYXcgPSAxOwotKwotKyAgLyogSWYgdGhlIFRI RVZBTFVFIGhhcyBjb250ZW50cywgaXQgaXMgYSByZWd1bGFyIHN0cmluZy4gICovCi0gICBpZiAo dGhldmFsdWUpCi0gICAgIExBX1BSSU5UX1NUUklORyAoc3RiLCB0eXBlLCB0aGV2YWx1ZSwgbGVu LCBlbmNvZGluZywgMCwgJm9wdHMpOwotICAgZWxzZSBpZiAoc3RyaW5nX3ByaW50KQotKyAgICAv KiBPdGhlcndpc2UsIGlmIHN0cmluZ19wcmludCBpcyBzZXQsIGFuZCBpdCBpcyBub3QgYSByZWd1 bGFyCi0rICAgICAgIHN0cmluZywgaXQgaXMgYSBsYXp5IHN0cmluZy4gICovCi0gICAgIHZhbF9w cmludF9zdHJpbmcgKHR5cGUsIGVuY29kaW5nLCBzdHJfYWRkciwgbGVuLCBzdGIsICZvcHRzKTsK LSAgIGVsc2UKLSsgICAgLyogQWxsIG90aGVyIGNhc2VzLiAgKi8KLSAgICAgY29tbW9uX3ZhbF9w cmludCAodmFsdWUsIHN0YiwgMCwgJm9wdHMsIGN1cnJlbnRfbGFuZ3VhZ2UpOwotKwotICAgdGhl dmFsdWUgPSB1aV9maWxlX3hzdHJkdXAgKHN0YiwgTlVMTCk7Ci0gCi0gICBkb19jbGVhbnVwcyAo b2xkX2NoYWluKTsKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMS8wNy8yNyAy MToxODozOQkxLjI4MTYKLSMjIyBzcmMvZ2RiL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cJMjAxMS8wNy8y OCAxMDozNjo0MAkxLjI4MTcKLSMjIC0xLDMgKzEsMTAgQEAKLSsyMDExLTA3LTI4ICBQaGlsIE11 bGRvb24gIDxwbXVsZG9vbkByZWRoYXQuY29tPgotKwotKwkqIGdkYi5weXRob24vcHktbWkuZXhw OiBUZXN0IHByaW50ZXJzIHJldHVybmluZyBzdHJpbmcgaGludCwgYW5kCi0rCWFsc28gbm90IHJl dHVybmluZyBhIHZhbHVlLgotKwkqIGdkYi5weXRob24vcHktcHJldHR5cHJpbnQuYzogQWRkIHRl c3RjYXNlIGZvciBhYm92ZS4KLSsJKiBnZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5OiBBZGQg dGVzdCBwcmludGVyIGZvciBhYm92ZS4KLSsKLSAyMDExLTA3LTI3ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCi0gCSogZ2RiLmR3YXJmMi9kdzItc2ltcGxl LWxvY2Rlc2MuUzogQ2hhbmdlIERXQVJGIHZlcnNpb24gdG8gMy4KLS0tLSBzcmMvZ2RiL3Rlc3Rz dWl0ZS9nZGIucHl0aG9uL3B5LW1pLmV4cAkyMDExLzA3LzI2IDE4OjM4OjU1CTEuMTMKLSsrKyBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LW1pLmV4cAkyMDExLzA3LzI4IDEwOjM2OjQw CTEuMTQKLUBAIC0yODQsNiArMjg0LDEzIEBAIG1pX2xpc3RfdmFyb2JqX2NoaWxkcmVuIG5zdHlw ZTIgewotICAgICB7IHtuc3R5cGUyLjxlcnJvciBhdCAwPn0gezxlcnJvciBhdCAwPn0gNiB7Y2hh ciBcWzZcXX0gfQotIH0gImxpc3QgY2hpbGRyZW4gYWZ0ZXIgc2V0dGluZyBleGNlcHRpb24gZmxh ZyIKLSAKLSttaV9jcmVhdGVfdmFyb2JqIG1lIG1lIFwKLSsgICJjcmVhdGUgbWUgdmFyb2JqIgot KwotK21pX2dkYl90ZXN0ICItdmFyLWV2YWx1YXRlLWV4cHJlc3Npb24gbWUiIFwKLSsJIlxcXmRv bmUsdmFsdWU9XCI8ZXJyb3IgcmVhZGluZyB2YXJpYWJsZTogQ2Fubm90IGFjY2VzcyBtZW1vcnku Pi4qXCIiIFwKLSsJImV2YWx1YXRlIG1lIHZhcm9iaiIKLSsKLSAjIEMrKyBNSSB0ZXN0cwotIGdk Yl9leGl0Ci0gaWYgIHsgW2dkYl9jb21waWxlICIke3NyY2Rpcn0vJHtzdWJkaXJ9LyR7c3JjZmls ZX0iICIke2JpbmZpbGV9IiBcCi0tLS0gc3JjL2dkYi90ZXN0c3VpdGUvZ2RiLnB5dGhvbi9weS1w cmV0dHlwcmludC5jCTIwMTEvMDQvMjkgMTI6NDU6NDYJMS4xMgotKysrIHNyYy9nZGIvdGVzdHN1 aXRlL2dkYi5weXRob24vcHktcHJldHR5cHJpbnQuYwkyMDExLzA3LzI4IDEwOjM2OjQwCTEuMTMK LUBAIC0xNDksNiArMTQ5LDExIEBACi0gCi0gdHlwZWRlZiBzdHJ1Y3QganVzdGNoaWxkcmVuIG5v c3RyaW5nX3R5cGU7Ci0gCi0rc3RydWN0IG1lbW9yeV9lcnJvcgotK3sKLSsgIGNvbnN0IGNoYXIg KnM7Ci0rfTsKLSsKLSBzdHJ1Y3QgY29udGFpbmVyCi0gewotICAgc3RyaW5nIG5hbWU7Ci1AQCAt MjI3LDYgKzIzMiw3IEBACi0gICAvKiBDbGVhcmluZyBieSBiZWluZyBgc3RhdGljJyBjb3VsZCBp bnZva2UgYW4gb3RoZXIgR0RCIEMrKyBidWcuICAqLwotICAgc3RydWN0IG51bGxzdHIgbnVsbHN0 cjsKLSAgIG5vc3RyaW5nX3R5cGUgbnN0eXBlLCBuc3R5cGUyOwotKyAgc3RydWN0IG1lbW9yeV9l cnJvciBtZTsKLSAgIHN0cnVjdCBucyBucywgbnMyOwotICAgc3RydWN0IGxhenlzdHJpbmcgZXN0 cmluZywgZXN0cmluZzI7Ci0gICBzdHJ1Y3QgaGludF9lcnJvciBoaW50X2Vycm9yOwotQEAgLTIz NCw2ICsyNDAsOCBAQAotICAgbnN0eXBlLmVsZW1lbnRzID0gbmFycmF5OwotICAgbnN0eXBlLmxl biA9IDA7Ci0gCi0rICBtZS5zID0gImJsYWgiOwotKwotICAgaW5pdF9zcygmc3MsIDEsIDIpOwot ICAgaW5pdF9zcyhzc2ErMCwgMywgNCk7Ci0gICBpbml0X3NzKHNzYSsxLCA1LCA2KTsKLS0tLSBz cmMvZ2RiL3Rlc3RzdWl0ZS9nZGIucHl0aG9uL3B5LXByZXR0eXByaW50LnB5CTIwMTEvMDQvMTEg MTc6NDA6NDEJMS4xMQotKysrIHNyYy9nZGIvdGVzdHN1aXRlL2dkYi5weXRob24vcHktcHJldHR5 cHJpbnQucHkJMjAxMS8wNy8yOCAxMDozNjo0MAkxLjEyCi1AQCAtMTcsNiArMTcsNyBAQAotICMg cHJpbnRlcnMuCi0gCi0gaW1wb3J0IHJlCi0raW1wb3J0IGdkYgotIAotICMgVGVzdCByZXR1cm5p bmcgYSBWYWx1ZSBmcm9tIGEgcHJpbnRlci4KLSBjbGFzcyBzdHJpbmdfcHJpbnQ6Ci1AQCAtMTg2 LDYgKzE4NywxOCBAQAotICAgICAgICAgeWllbGQgJ3MnLCBzZWxmLnZhbFsncyddCi0gICAgICAg ICB5aWVsZCAneCcsIHNlbGYudmFsWyd4J10KLSAKLStjbGFzcyBNZW1vcnlFcnJvclN0cmluZzoK LSsgICAgIlJhaXNlIGFuIGVycm9yIgotKwotKyAgICBkZWYgX19pbml0X18oc2VsZiwgdmFsKToK LSsgICAgICAgIHNlbGYudmFsID0gdmFsCi0rCi0rICAgIGRlZiB0b19zdHJpbmcoc2VsZik6Ci0r ICAgICAgICByYWlzZSBnZGIuTWVtb3J5RXJyb3IgKCJDYW5ub3QgYWNjZXNzIG1lbW9yeS4iKTsK LSsKLSsgICAgZGVmIGRpc3BsYXlfaGludCAoc2VsZik6Ci0rICAgICAgICByZXR1cm4gJ3N0cmlu ZycKLSsKLSBkZWYgbG9va3VwX2Z1bmN0aW9uICh2YWwpOgotICAgICAiTG9vay11cCBhbmQgcmV0 dXJuIGEgcHJldHR5LXByaW50ZXIgdGhhdCBjYW4gcHJpbnQgdmFsLiIKLSAKLUBAIC0yNjEsNiAr Mjc0LDggQEAKLSAgICAgcHJldHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15zdHJ1Y3Qg aGludF9lcnJvciQnKV0gID0gcHBfaGludF9lcnJvcgotICAgICBwcmV0dHlfcHJpbnRlcnNfZGlj dFtyZS5jb21waWxlICgnXmhpbnRfZXJyb3IkJyldICA9IHBwX2hpbnRfZXJyb3IKLSAKLSsgICAg cHJldHR5X3ByaW50ZXJzX2RpY3RbcmUuY29tcGlsZSAoJ15tZW1vcnlfZXJyb3IkJyldICA9IE1l bW9yeUVycm9yU3RyaW5nCi0rCi0gcHJldHR5X3ByaW50ZXJzX2RpY3QgPSB7fQotIAotIHJlZ2lz dGVyX3ByZXR0eV9wcmludGVycyAoKQotCi0KLQotY29tbWl0IDg0YmUyYjRkMGE1NWM5NTY5N2M5 ZWNjNzJiYjMxYzJmYmQzMTYxMjcKLUF1dGhvcjogaWFuIDxpYW5AMTM4YmM3NWQtMGQwNC0wNDEw LTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogICBUdWUgSnVsIDI2IDE0OjI4OjIzIDIwMTEgKzAw MDAKLQotICAgIAkqIGNwLWRlbWFuZ2xlLmMgKGRfcHJpbnRfaW5pdCk6IEluaXRpYWxpemUgcGFj a19pbmRleCBmaWVsZC4KLSAgICAJKGRfcHJpbnRfY29tcCk6IENoZWNrIGZvciBOVUxMIHRlbXBs YXRlIGFyZ3VtZW50LgotICAgIAkqIHRlc3RzdWl0ZS9kZW1hbmdsZS1leHBlY3RlZDogQWRkIHRl c3QgY2FzZS4KLSAgICAKLSAgICAKLSAgICBnaXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5v cmcvc3ZuL2djYy90cnVua0AxNzY3OTEgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1 NGE0Ci0KLSMjIyBhL2xpYmliZXJ0eS9DaGFuZ2VMb2cKLSMjIyBiL2xpYmliZXJ0eS9DaGFuZ2VM b2cKLSMjIC0xLDMgKzEsOSBAQAotKzIwMTEtMDctMjYgIElhbiBMYW5jZSBUYXlsb3IgIDxpYW50 QGdvb2dsZS5jb20+Ci0rCi0rCSogY3AtZGVtYW5nbGUuYyAoZF9wcmludF9pbml0KTogSW5pdGlh bGl6ZSBwYWNrX2luZGV4IGZpZWxkLgotKwkoZF9wcmludF9jb21wKTogQ2hlY2sgZm9yIE5VTEwg dGVtcGxhdGUgYXJndW1lbnQuCi0rCSogdGVzdHN1aXRlL2RlbWFuZ2xlLWV4cGVjdGVkOiBBZGQg dGVzdCBjYXNlLgotKwotIDIwMTEtMDctMjIgIEdlcmFsZCBQZmVpZmVyICA8Z2VyYWxkQHBmZWlm ZXIuY29tPgotIAotIAlQUiB0YXJnZXQvNDk4MTcKLS0tLSBhL2xpYmliZXJ0eS9jcC1kZW1hbmds ZS5jCi0rKysgYi9saWJpYmVydHkvY3AtZGVtYW5nbGUuYwotQEAgLTEsNSArMSw1IEBACi0gLyog RGVtYW5nbGVyIGZvciBnKysgVjMgQUJJLgotLSAgIENvcHlyaWdodCAoQykgMjAwMywgMjAwNCwg MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMAotKyAgIENvcHlyaWdodCAoQykgMjAw MywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMQotICAgIEZy ZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgIFdyaXR0ZW4gYnkgSWFuIExhbmNlIFRh eWxvciA8aWFuQHdhc2FiaXN5c3RlbXMuY29tPi4KLSAKLUBAIC0zMzA2LDYgKzMzMDYsNyBAQCBk X3ByaW50X2luaXQgKHN0cnVjdCBkX3ByaW50X2luZm8gKmRwaSwgZGVtYW5nbGVfY2FsbGJhY2ty ZWYgY2FsbGJhY2ssCi0gICBkcGktPmxhc3RfY2hhciA9ICdcMCc7Ci0gICBkcGktPnRlbXBsYXRl cyA9IE5VTEw7Ci0gICBkcGktPm1vZGlmaWVycyA9IE5VTEw7Ci0rICBkcGktPnBhY2tfaW5kZXgg PSAwOwotICAgZHBpLT5mbHVzaF9jb3VudCA9IDA7Ci0gCi0gICBkcGktPmNhbGxiYWNrID0gY2Fs bGJhY2s7Ci1AQCAtMzg5Myw2ICszODk0LDEzIEBAIGRfcHJpbnRfY29tcCAoc3RydWN0IGRfcHJp bnRfaW5mbyAqZHBpLCBpbnQgb3B0aW9ucywKLSAJICAgIHN0cnVjdCBkZW1hbmdsZV9jb21wb25l bnQgKmEgPSBkX2xvb2t1cF90ZW1wbGF0ZV9hcmd1bWVudCAoZHBpLCBzdWIpOwotIAkgICAgaWYg KGEgJiYgYS0+dHlwZSA9PSBERU1BTkdMRV9DT01QT05FTlRfVEVNUExBVEVfQVJHTElTVCkKLSAJ ICAgICAgYSA9IGRfaW5kZXhfdGVtcGxhdGVfYXJndW1lbnQgKGEsIGRwaS0+cGFja19pbmRleCk7 Ci0rCi0rCSAgICBpZiAoYSA9PSBOVUxMKQotKwkgICAgICB7Ci0rCQlkX3ByaW50X2Vycm9yIChk cGkpOwotKwkJcmV0dXJuOwotKwkgICAgICB9Ci0rCi0gCSAgICBzdWIgPSBhOwotIAkgIH0KLSAK LS0tLSBhL2xpYmliZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLSsrKyBiL2xpYmli ZXJ0eS90ZXN0c3VpdGUvZGVtYW5nbGUtZXhwZWN0ZWQKLUBAIC00MDEwLDYgKzQwMTAsMTIgQEAg SzwxLCAmUzo6bT46OmYoKQotIF9aTjFLSUxpMUVYYWRMX1pOMVMxbUVFRUUxZkV2Ci0gSzwxLCAm Uzo6bT46OmYoKQotICMKLSsjIFVzZWQgdG8gY3Jhc2ggLS0gYmludXRpbHMgUFIgMTMwMzAuCi0r LS1mb3JtYXQ9Z251LXYzCi0rX1pTdDEwX0NvbnN0cnVjdEkxMENlbGxCb3JkZXJJUzBfRUV2UFRf RHBPVDBfCi0rX1pTdDEwX0NvbnN0cnVjdEkxMENlbGxCb3JkZXJJUzBfRUV2UFRfRHBPVDBfCi0r X1pTdDEwX0NvbnN0cnVjdEkxMENlbGxCb3JkZXJJUzBfRUV2UFRfRHBPVDBfCi0rIwotICMgQWRh IChHTkFUKSB0ZXN0cy4KLSAjCi0gIyBTaW1wbGUgdGVzdC4KLQotCi0KLWh0dHA6Ly9zb3VyY2V3 YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTEtMDgvbXNnMDAwNDcuaHRtbAotCi0jIyMgc3JjL2dkYi9D aGFuZ2VMb2cJMjAxMS8wOC8wOCAyMTo0MToxMgkxLjEzMjU5Ci0jIyMgc3JjL2dkYi9DaGFuZ2VM b2cJMjAxMS8wOC8wOSAxMjo0NTozOQkxLjEzMjYwCi0jIyAtMSwzICsxLDEzIEBACi0rMjAxMS0w OC0wOSAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSsKLSsJKiBweXRob24v bGliL2dkYi9fX2luaXRfXy5weTogQXV0by1sb2FkIGZpbGVzIGluIGNvbW1hbmQgYW5kCi0rCWZ1 bmN0aW9uIGRpcmVjdG9yaWVzLgotKwkqIHB5dGhvbi9weXRob24uYyAoZmluaXNoX3B5dGhvbl9p bml0aWFsaXphdGlvbik6IFVzZQotKwlvcy5wYXRoLmpvaW4uCi0rCSogcHl0aG9uL2xpYi9nZGIv Y29tbWFuZC9wcmV0dHlfcHJpbnRlcnMucHk6IFNlbGYgcmVnaXN0ZXIKLSsJY29tbWFuZC4KLSsJ KiBORVdTOiBEb2N1bWVudCBhdXRvLWxvYWRpbmcuCi0rCi0gMjAxMS0wOC0wOCAgSmFuIEtyYXRv Y2h2aWwgIDxqYW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPgotIAotIAkqIGR3YXJmMmxvYy5jIChk d2FyZjJfZXZhbHVhdGVfbG9jX2Rlc2NfZnVsbCkgPERXQVJGX1ZBTFVFX1NUQUNLPgotLS0tIHNy Yy9nZGIvTkVXUwkyMDExLzA3LzI2IDIwOjU3OjUzCTEuNDQ2Ci0rKysgc3JjL2dkYi9ORVdTCTIw MTEvMDgvMDkgMTI6NDU6MzkJMS40NDcKLUBAIC0yMyw2ICsyMywxMSBAQAotICAgKiogQSBwcm9t cHQgc3Vic2l0dXRpb24gaG9vayAocHJvbXB0X2hvb2spIGlzIG5vdyBhdmFpbGFibGUgdG8gdGhl Ci0gICAgICBQeXRob24gQVBJLgotIAotKyAgKiogUHl0aG9uIGNvbW1hbmRzIGFuZCBjb252ZW5p ZW5jZS1mdW5jdGlvbnMgbG9jYXRlZCBpbgotKyAgICAnZGF0YS1kaXJlY3RvcnknL3B5dGhvbi9n ZGIvY29tbWFuZCBhbmQKLSsgICAgJ2RhdGEtZGlyZWN0b3J5Jy9weXRob24vZ2RiL2Z1bmN0aW9u IGFyZSBub3cgYXV0b21hdGljYWxseSBsb2FkZWQKLSsgICAgIG9uIEdEQiBzdGFydC11cC4KLSsK LSAqIGxpYnRocmVhZC1kYi1zZWFyY2gtcGF0aCBub3cgc3VwcG9ydHMgdHdvIHNwZWNpYWwgdmFs dWVzOiAkc2RpciBhbmQgJHBkaXIuCi0gICAkc2RpciBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgc3lz dGVtIGxvY2F0aW9ucyBvZiBzaGFyZWQgbGlicmFyaWVzLgotICAgJHBkaXIgc3BlY2lmaWVzIHRo ZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIGxpYnB0aHJlYWQgdXNlZCBieSB0aGUgYXBwbGljYXRpb24K LSMjIyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMS8wNy8yNiAxNjo1OToyMwkxLjEyMDIKLSMj IyBzcmMvZ2RiL2RvYy9DaGFuZ2VMb2cJMjAxMS8wOC8wOSAxMjo0NTozOQkxLjEyMDMKLSMjIC0x LDMgKzEsOCBAQAotKzIwMTEtMDgtMDkgIFBoaWwgTXVsZG9vbiAgPHBtdWxkb29uQHJlZGhhdC5j b20+Ci0rCi0rCSogZ2RiLnRleGluZm8gKFB5dGhvbik6IERvY3VtZW50IGNvbW1hbmQgYW5kIGZ1 bmN0aW9uCi0rCWF1dG8tbG9hZGluZy4KLSsKLSAyMDExLTA3LTI2ICBKYW4gS3JhdG9jaHZpbCAg PGphbi5rcmF0b2NodmlsQHJlZGhhdC5jb20+Ci0gCSAgICBFbGkgWmFyZXRza2lpICA8ZWxpekBn bnUub3JnPgotIAotLS0tIHNyYy9nZGIvZG9jL2dkYi50ZXhpbmZvCTIwMTEvMDcvMjYgMjA6NTc6 NTQJMS44NTEKLSsrKyBzcmMvZ2RiL2RvYy9nZGIudGV4aW5mbwkyMDExLzA4LzA5IDEyOjQ1OjM5 CTEuODUyCi1AQCAtMjA4NDUsNiArMjA4NDUsMTIgQEAKLSBpcyBhdXRvbWF0aWNhbGx5IGFkZGVk IHRvIHRoZSBQeXRob24gU2VhcmNoIFBhdGggaW4gb3JkZXIgdG8gYWxsb3cKLSB0aGUgUHl0aG9u IGludGVycHJldGVyIHRvIGxvY2F0ZSBhbGwgc2NyaXB0cyBpbnN0YWxsZWQgYXQgdGhpcyBsb2Nh dGlvbi4KLSAKLStBZGRpdGlvbmFsbHksIEB2YWx1ZXtHREJOfSBjb21tYW5kcyBhbmQgY29udmVu aWVuY2UgZnVuY3Rpb25zIHdoaWNoCi0rYXJlIHdyaXR0ZW4gaW4gUHl0aG9uIGFuZCBhcmUgbG9j YXRlZCBpbiB0aGUKLStAZmlsZXtAdmFye2RhdGEtZGlyZWN0b3J5fS9weXRob24vZ2RiL2NvbW1h bmR9IG9yCi0rQGZpbGV7QHZhcntkYXRhLWRpcmVjdG9yeX0vcHl0aG9uL2dkYi9mdW5jdGlvbn0g ZGlyZWN0b3JpZXMgYXJlCi0rYXV0b21hdGljYWxseSBpbXBvcnRlZCB3aGVuIEB2YWx1ZXtHREJO fSBzdGFydHMuCi0rCi0gQG1lbnUKLSAqIFB5dGhvbiBDb21tYW5kczo6ICAgICAgICAgICAgIEFj Y2Vzc2luZyBQeXRob24gZnJvbSBAdmFsdWV7R0RCTn0uCi0gKiBQeXRob24gQVBJOjogICAgICAg ICAgICAgICAgICBBY2Nlc3NpbmcgQHZhbHVle0dEQk59IGZyb20gUHl0aG9uLgotLS0tIHNyYy9n ZGIvcHl0aG9uL3B5dGhvbi5jCTIwMTEvMDcvMjIgMDk6MjI6NTAJMS42OAotKysrIHNyYy9nZGIv cHl0aG9uL3B5dGhvbi5jCTIwMTEvMDgvMDkgMTI6NDU6NDAJMS42OQotQEAgLTEzMDIsMTMgKzEz MDIsMTMgQEAKLSAgIHN5cy5wYXRoLmluc2VydCAoMCwgZ2RiLlBZVEhPTkRJUilcblwKLSBcblwK LSAgICMgVGVsbCBweXRob24gd2hlcmUgdG8gZmluZCBzdWJtb2R1bGVzIG9mIGdkYi5cblwKLS0g IGdkYi5fX3BhdGhfXyA9IFtnZGIuUFlUSE9ORElSICsgJy9nZGInXVxuXAotKyAgZ2RiLl9fcGF0 aF9fID0gW29zLnBhdGguam9pbiAoZ2RiLlBZVEhPTkRJUiwgJ2dkYicpXVxuXAotIFxuXAotICAg IyBUaGUgZ2RiIG1vZHVsZSBpcyBpbXBsZW1lbnRlZCBpbiBDIHJhdGhlciB0aGFuIGluIFB5dGhv bi4gIEFzIGEgcmVzdWx0LFxuXAotICAgIyB0aGUgYXNzb2NpYXRlZCBfX2luaXQucHlfXyBzY3Jp cHQgaXMgbm90IG5vdCBleGVjdXRlZCBieSBkZWZhdWx0IHdoZW5cblwKLSAgICMgdGhlIGdkYiBt b2R1bGUgZ2V0cyBpbXBvcnRlZC4gIEV4ZWN1dGUgdGhhdCBzY3JpcHQgbWFudWFsbHkgaWYgaXRc blwKLSAgICMgZXhpc3RzLlxuXAotLSAgaXB5ID0gZ2RiLlBZVEhPTkRJUiArICcvZ2RiL19faW5p dF9fLnB5J1xuXAotKyAgaXB5ID0gb3MucGF0aC5qb2luIChnZGIuUFlUSE9ORElSLCAnZ2RiJywg J19faW5pdF9fLnB5JylcblwKLSAgIGlmIG9zLnBhdGguZXhpc3RzIChpcHkpOlxuXAotICAgICBl eGVjZmlsZSAoaXB5KVxuXAotIFxuXAotLS0tIHNyYy9nZGIvcHl0aG9uL2xpYi9nZGIvX19pbml0 X18ucHkJMjAxMS8wMS8wMSAxNTozMzoyNgkxLjMKLSsrKyBzcmMvZ2RiL3B5dGhvbi9saWIvZ2Ri L19faW5pdF9fLnB5CTIwMTEvMDgvMDkgMTI6NDU6NDAJMS40Ci1AQCAtMTMsNiArMTMsMjkgQEAK LSAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0gIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLS1pbXBvcnQgZ2RiLmNvbW1hbmQucHJl dHR5X3ByaW50ZXJzCi0raW1wb3J0IHRyYWNlYmFjawotIAotLWdkYi5jb21tYW5kLnByZXR0eV9w cmludGVycy5yZWdpc3Rlcl9wcmV0dHlfcHJpbnRlcl9jb21tYW5kcygpCi0rIyBBdXRvLWxvYWQg YWxsIGZ1bmN0aW9ucy9jb21tYW5kcy4KLSsKLSsjIE1vZHVsZXMgdG8gYXV0by1sb2FkLCBhbmQg dGhlIHBhdGhzIHdoZXJlIHRob3NlIG1vZHVsZXMgZXhpc3QuCi0rCi0rbW9kdWxlX2RpY3QgPSB7 Ci0rICAnZ2RiLmZ1bmN0aW9uJzogb3MucGF0aC5qb2luKGdkYi5QWVRIT05ESVIsICdnZGInLCAn ZnVuY3Rpb24nKSwKLSsgICdnZGIuY29tbWFuZCc6IG9zLnBhdGguam9pbihnZGIuUFlUSE9ORElS LCAnZ2RiJywgJ2NvbW1hbmQnKQotK30KLSsKLSsjIEl0ZXJhdGUgdGhlIGRpY3Rpb25hcnksIGNv bGxhdGluZyB0aGUgUHl0aG9uIGZpbGVzIGluIGVhY2ggbW9kdWxlCi0rIyBwYXRoLiAgQ29uc3Ry dWN0IHRoZSBtb2R1bGUgbmFtZSwgYW5kIGltcG9ydC4KLSsKLStmb3IgbW9kdWxlLCBsb2NhdGlv biBpbiBtb2R1bGVfZGljdC5pdGVyaXRlbXMoKToKLSsgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2F0 aW9uKToKLSsgICAgIHB5X2ZpbGVzID0gZmlsdGVyKGxhbWJkYSB4OiB4LmVuZHN3aXRoKCcucHkn KSBhbmQgeCAhPSAnX19pbml0X18ucHknLAotKyAgICAgICAgICAgICAgICAgICAgICAgb3MubGlz dGRpcihsb2NhdGlvbikpCi0rCi0rICAgICBmb3IgcHlfZmlsZSBpbiBweV9maWxlczoKLSsgICAg ICAgIyBDb25zdHJ1Y3QgZnJvbSBmb28ucHksIGdkYi5tb2R1bGUuZm9vCi0rICAgICAgIHB5X2Zp bGUgPSBtb2R1bGUgKyAnLicgKyBweV9maWxlWzotM10KLSsgICAgICAgdHJ5OgotKyAgICAgICAg IGV4ZWMoJ2ltcG9ydCAnICsgcHlfZmlsZSkKLSsgICAgICAgZXhjZXB0OgotKyAgICAgICAgIHBy aW50ID4+IHN5cy5zdGRlcnIsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCkKLS0tLSBzcmMvZ2RiL3B5 dGhvbi9saWIvZ2RiL2NvbW1hbmQvcHJldHR5X3ByaW50ZXJzLnB5CTIwMTEvMDEvMDEgMTU6MzM6 MjcJMS40Ci0rKysgc3JjL2dkYi9weXRob24vbGliL2dkYi9jb21tYW5kL3ByZXR0eV9wcmludGVy cy5weQkyMDExLzA4LzA5IDEyOjQ1OjQwCTEuNQotQEAgLTM2OCwzICszNjgsNSBAQAotICAgICBJ bmZvUHJldHR5UHJpbnRlcigpCi0gICAgIEVuYWJsZVByZXR0eVByaW50ZXIoKQotICAgICBEaXNh YmxlUHJldHR5UHJpbnRlcigpCi0rCi0rcmVnaXN0ZXJfcHJldHR5X3ByaW50ZXJfY29tbWFuZHMo KQotCi0KLQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMDgvbXNn MDA1MDUuaHRtbAotU3ViamVjdDogZml4ICJpbmZvIG9zIHByb2Nlc3NlcyIgcmFjZSAtPiBjcmFz aCAoZXh0LXJ1bi5leHAgcmFjeSBGQUlMKQotaHR0cDovL3NvdXJjZXdhcmUub3JnL21sL2dkYi1j dnMvMjAxMS0wOC9tc2cwMDExNi5odG1sCi0KLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLzA4 LzI2IDE3OjU4OjU3CTEuMTMyODEKLSMjIyBzcmMvZ2RiL0NoYW5nZUxvZwkyMDExLzA4LzI2IDE4 OjU4OjAyCTEuMTMyODIKLSMjIC0xLDMgKzEsOCBAQAotKzIwMTEtMDgtMjYgIFBlZHJvIEFsdmVz ICA8cGVkcm9AY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsJKiBjb21tb24vbGludXgtb3NkYXRhLmMg KGdldF9jb3Jlc191c2VkX2J5X3Byb2Nlc3MpOiBEb24ndCBhc3N1bWUKLSsJb3BlbmluZyAvcHJv Yy9QSUQvdGFzayBhbHdheXMgc3VjY2VlZHMuCi0rCi0gMjAxMS0wOC0yNiAgQWxla3NhbmRhciBS aXN0b3Zza2kgPGFyaXN0b3Zza2lAcW54LmNvbT4KLSAKLSAJKiBsaW5lc3BlYy5jIChzeW10YWJf ZnJvbV9maWxlbmFtZSk6IENoZWNrIGZvciB0aGUgZW5kIG9mIHN0cmluZy4KLS0tLSBzcmMvZ2Ri L2NvbW1vbi9saW51eC1vc2RhdGEuYwkyMDExLzA3LzIxIDIzOjQ2OjA5CTEuMQotKysrIHNyYy9n ZGIvY29tbW9uL2xpbnV4LW9zZGF0YS5jCTIwMTEvMDgvMjYgMTg6NTg6MDQJMS4yCi1AQCAtMjU5 LDI3ICsyNTksMjkgQEAKLSAKLSAgIHNwcmludGYgKHRhc2tkaXIsICIvcHJvYy8lZC90YXNrIiwg cGlkKTsKLSAgIGRpciA9IG9wZW5kaXIgKHRhc2tkaXIpOwotLQotLSAgd2hpbGUgKChkcCA9IHJl YWRkaXIgKGRpcikpICE9IE5VTEwpCi0rICBpZiAoZGlyKQotICAgICB7Ci0tICAgICAgcGlkX3Qg dGlkOwotLSAgICAgIGludCBjb3JlOwotKyAgICAgIHdoaWxlICgoZHAgPSByZWFkZGlyIChkaXIp KSAhPSBOVUxMKQotKwl7Ci0rCSAgcGlkX3QgdGlkOwotKwkgIGludCBjb3JlOwotIAotLSAgICAg IGlmICghaXNkaWdpdCAoZHAtPmRfbmFtZVswXSkKLS0JICB8fCBOQU1FTEVOIChkcCkgPiBzaXpl b2YgKCI0Mjk0OTY3Mjk1IikgLSAxKQotLQljb250aW51ZTsKLSsJICBpZiAoIWlzZGlnaXQgKGRw LT5kX25hbWVbMF0pCi0rCSAgICAgIHx8IE5BTUVMRU4gKGRwKSA+IHNpemVvZiAoIjQyOTQ5Njcy OTUiKSAtIDEpCi0rCSAgICBjb250aW51ZTsKLSAKLS0gICAgICB0aWQgPSBhdG9pIChkcC0+ZF9u YW1lKTsKLS0gICAgICBjb3JlID0gbGludXhfY29tbW9uX2NvcmVfb2ZfdGhyZWFkIChwdGlkX2J1 aWxkIChwaWQsIHRpZCwgMCkpOwotKwkgIHRpZCA9IGF0b2kgKGRwLT5kX25hbWUpOwotKwkgIGNv cmUgPSBsaW51eF9jb21tb25fY29yZV9vZl90aHJlYWQgKHB0aWRfYnVpbGQgKHBpZCwgdGlkLCAw KSk7Ci0gCi0tICAgICAgaWYgKGNvcmUgPj0gMCkKLS0JewotLQkgICsrY29yZXNbY29yZV07Ci0t CSAgKyt0YXNrX2NvdW50OwotKwkgIGlmIChjb3JlID49IDApCi0rCSAgICB7Ci0rCSAgICAgICsr Y29yZXNbY29yZV07Ci0rCSAgICAgICsrdGFza19jb3VudDsKLSsJICAgIH0KLSAJfQotLSAgICB9 Ci0gCi0tICBjbG9zZWRpciAoZGlyKTsKLSsgICAgICBjbG9zZWRpciAoZGlyKTsKLSsgICAgfQot IAotICAgcmV0dXJuIHRhc2tfY291bnQ7Ci0gfQotCi0KLQotRml4IGZvciBodHRwczovL2J1Z3pp bGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTc1MDM0MQotaHR0cDovL3NvdXJjZXdhcmUu b3JnL21sL2dkYi1wYXRjaGVzLzIwMTEtMTAvbXNnMDA1NzAuaHRtbAotCi0KLWh0dHA6Ly9zb3Vy Y2V3YXJlLm9yZy9tbC9nZGItY3ZzLzIwMTEtMTAvbXNnMDAxNTQuaHRtbAotCi0jIyMgc3JjL2dk Yi9DaGFuZ2VMb2cJMjAxMS8xMC8yMCAxMzozNDoxMwkxLjEzNDQ2Ci0jIyMgc3JjL2dkYi9DaGFu Z2VMb2cJMjAxMS8xMC8yMCAyMDowNjoxMQkxLjEzNDQ3Ci0jIyAtMSwzICsxLDE1IEBACi0rMjAx MS0xMC0yMCAgQWxla3NhbmRhciBSaXN0b3Zza2kgIDxhcmlzdG92c2tpQHFueC5jb20+Ci0rCi0r CSogY3AtbmFtZXNwYWNlLmMgKGNwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzKTogQ2hh bmdlZCBmdW5jdGlvbgotKwlhcmd1bWVudHMgYnkgYWRkaW5nIE9CSkZJTEUuICBJbnN0ZWFkIG9m IGdldHRpbmcgb2JqZmlsZSBmcm9tCi0rCXN5bWJvbCdzIHN5bXRhYiwgdXNlIG5ldyBhcmd1bWVu dCBPQkpGSUxFLgotKwkqIGNwLXN1cHBvcnQuaCAoY3Bfc2Nhbl9mb3JfYW5vbnltb3VzX25hbWVz cGFjZXMpOiBDaGFuZ2VkIGZ1bmN0aW9uCi0rCWFyZ3VtZW50cyBieSBhZGRpbmcgT0JKRklMRS4K LSsJKiBnZGIvZHdhcmYycmVhZC5jIChuZXdfc3ltYm9sX2Z1bGwpOiBDaGFuZ2UgY2FsbCB0bwot KwljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyB0byBtYXRjaCBuZXcgc2lnbmF0dXJl LgotKwkqIGdkYi9zdGFic3JlYWQuYyAoZGVmaW5lX3N5bWJvbCk6IENoYW5nZSBjYWxsIHRvCi0r CWNwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIHRvIG1hdGNoIG5ldyBzaWduYXR1cmUu Ci0rCi0gMjAxMS0xMC0yMCAgUGhpbCBNdWxkb29uICA8cG11bGRvb25AcmVkaGF0LmNvbT4KLSAK LSAgICAgICAgIFBSIHB5dGhvbi8xMzMwOAotLS0tIHNyYy9nZGIvY3AtbmFtZXNwYWNlLmMJMjAx MS8wNi8yOSAyMjowNToxNQkxLjU0Ci0rKysgc3JjL2dkYi9jcC1uYW1lc3BhY2UuYwkyMDExLzEw LzIwIDIwOjA2OjEzCTEuNTUKLUBAIC01Myw3ICs1Myw4IEBACi0gICAgYW5vbnltb3VzIG5hbWVz cGFjZTsgaWYgc28sIGFkZCBhbiBhcHByb3ByaWF0ZSB1c2luZyBkaXJlY3RpdmUuICAqLwotIAot IHZvaWQKLS1jcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5 bWJvbCAqc3ltYm9sKQotK2NwX3NjYW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChjb25zdCBz dHJ1Y3Qgc3ltYm9sICpjb25zdCBzeW1ib2wsCi0rCQkJCSAgc3RydWN0IG9iamZpbGUgKmNvbnN0 IG9iamZpbGUpCi0gewotICAgaWYgKFNZTUJPTF9ERU1BTkdMRURfTkFNRSAoc3ltYm9sKSAhPSBO VUxMKQotICAgICB7Ci1AQCAtOTYsNyArOTcsNyBAQAotIAkJIG5hbWVzcGFjZSBnaXZlbiBieSB0 aGUgcHJldmlvdXMgY29tcG9uZW50IGlmIHRoZXJlIGlzCi0gCQkgb25lLCBvciB0byB0aGUgZ2xv YmFsIG5hbWVzcGFjZSBpZiB0aGVyZSBpc24ndC4gICovCi0gCSAgICAgIGNwX2FkZF91c2luZ19k aXJlY3RpdmUgKGRlc3QsIHNyYywgTlVMTCwgTlVMTCwgTlVMTCwKLS0JICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgJlNZTUJPTF9TWU1UQUIgKHN5bWJvbCktPm9iamZpbGUtPm9iamZpbGVf b2JzdGFjayk7Ci0rCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvYmpmaWxlLT5vYmpm aWxlX29ic3RhY2spOwotIAkgICAgfQotIAkgIC8qIFRoZSAiKyAyIiBpcyBmb3IgdGhlICI6OiIu ICAqLwotIAkgIHByZXZpb3VzX2NvbXBvbmVudCA9IG5leHRfY29tcG9uZW50ICsgMjsKLS0tLSBz cmMvZ2RiL2NwLXN1cHBvcnQuaAkyMDExLzA4LzE4IDE2OjE3OjM4CTEuNDUKLSsrKyBzcmMvZ2Ri L2NwLXN1cHBvcnQuaAkyMDExLzEwLzIwIDIwOjA2OjEzCTEuNDYKLUBAIC0xOTcsNyArMTk3LDgg QEAKLSAJCQkJY29uc3QgY2hhciAqcHJvY2Vzc2luZ19jdXJyZW50X3ByZWZpeCwKLSAJCQkJaW50 IHByb2Nlc3NpbmdfaGFzX25hbWVzcGFjZV9pbmZvKTsKLSAKLS1leHRlcm4gdm9pZCBjcF9zY2Fu X2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3RydWN0IHN5bWJvbCAqc3ltYm9sKTsK LStleHRlcm4gdm9pZCBjcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoY29uc3Qgc3Ry dWN0IHN5bWJvbCAqc3ltYm9sLAotKwkJCQkJICAgICAgc3RydWN0IG9iamZpbGUgKm9iamZpbGUp OwotIAotIGV4dGVybiBzdHJ1Y3Qgc3ltYm9sICpjcF9sb29rdXBfc3ltYm9sX25vbmxvY2FsIChj b25zdCBjaGFyICpuYW1lLAotIAkJCQkJCSBjb25zdCBzdHJ1Y3QgYmxvY2sgKmJsb2NrLAotLS0t IHNyYy9nZGIvZHdhcmYycmVhZC5jCTIwMTEvMTAvMjAgMDE6MTE6MzQJMS41NzYKLSsrKyBzcmMv Z2RiL2R3YXJmMnJlYWQuYwkyMDExLzEwLzIwIDIwOjA2OjEzCTEuNTc3Ci1AQCAtMTE5OTIsNyAr MTE5OTIsNyBAQAotIAkgbmFtZXNwYWNlcyBiYXNlZCBvbiB0aGUgZGVtYW5nbGVkIG5hbWUuICAq LwotICAgICAgIGlmICghcHJvY2Vzc2luZ19oYXNfbmFtZXNwYWNlX2luZm8KLSAJICAmJiBjdS0+ bGFuZ3VhZ2UgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0tCWNwX3NjYW5fZm9yX2Fub255bW91c19uYW1l c3BhY2VzIChzeW0pOwotKwljcF9zY2FuX2Zvcl9hbm9ueW1vdXNfbmFtZXNwYWNlcyAoc3ltLCBv YmpmaWxlKTsKLSAgICAgfQotICAgcmV0dXJuIChzeW0pOwotIH0KLS0tLSBzcmMvZ2RiL3N0YWJz cmVhZC5jCTIwMTEvMDUvMTggMTY6MzA6MzYJMS4xMzgKLSsrKyBzcmMvZ2RiL3N0YWJzcmVhZC5j CTIwMTEvMTAvMjAgMjA6MDY6MTQJMS4xMzkKLUBAIC03MjksNyArNzI5LDcgQEAKLSAJU1lNQk9M X1NFVF9OQU1FUyAoc3ltLCBzdHJpbmcsIHAgLSBzdHJpbmcsIDEsIG9iamZpbGUpOwotIAotICAg ICAgIGlmIChTWU1CT0xfTEFOR1VBR0UgKHN5bSkgPT0gbGFuZ3VhZ2VfY3BsdXMpCi0tCWNwX3Nj YW5fZm9yX2Fub255bW91c19uYW1lc3BhY2VzIChzeW0pOwotKwljcF9zY2FuX2Zvcl9hbm9ueW1v dXNfbmFtZXNwYWNlcyAoc3ltLCBvYmpmaWxlKTsKLSAKLSAgICAgfQotICAgcCsrOwoKZGlmZiAt LWdpdCBhL2dkYi12bGEtZnJhbWUtc2V0LnBhdGNoIGIvZ2RiLXZsYS1mcmFtZS1zZXQucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZGRjYTEuLjAwMDAwMDAKLS0tIGEvZ2Ri LXZsYS1mcmFtZS1zZXQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1jb21t aXQgNTFkYWI5ZTQxODc0MWFjNzA2NWNkNWE2ZWM5YjU3Mjg1ZTkwMjI3YwotaHR0cHM6Ly9idWd6 aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD03Mzg0ODIKLQotLS0tIGEvZ2RiL3ByaW50 Y21kLmMKLSsrKyBiL2dkYi9wcmludGNtZC5jCi1AQCAtMTk4MSw2ICsxOTgxLDEwIEBAIHByaW50 X3ZhcmlhYmxlX2FuZF92YWx1ZSAoY29uc3QgY2hhciAqbmFtZSwgc3RydWN0IHN5bWJvbCAqdmFy LAotICAgICAgIHN0cnVjdCB2YWx1ZV9wcmludF9vcHRpb25zIG9wdHM7Ci0gCi0gICAgICAgdmFs ID0gcmVhZF92YXJfdmFsdWUgKHZhciwgZnJhbWUpOwotKwotKyAgICAgIG1ha2VfY2xlYW51cF9y ZXN0b3JlX3NlbGVjdGVkX2ZyYW1lICgpOwotKyAgICAgIHNlbGVjdF9mcmFtZSAoZnJhbWUpOwot KwotICAgICAgIGdldF91c2VyX3ByaW50X29wdGlvbnMgKCZvcHRzKTsKLSAgICAgICBjb21tb25f dmFsX3ByaW50ICh2YWwsIHN0cmVhbSwgaW5kZW50LCAmb3B0cywgY3VycmVudF9sYW5ndWFnZSk7 Ci0gICAgIH0KLS0tLSAvZGV2L251bGwKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvdmxh LWZyYW1lLmMKLUBAIC0wLDAgKzEsMzEgQEAKLSsvKiBUaGlzIHRlc3RjYXNlIGlzIHBhcnQgb2Yg R0RCLCB0aGUgR05VIGRlYnVnZ2VyLgotKwotKyAgIENvcHlyaWdodCAyMDExIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJl OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhl IHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkK LSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRo ZSBMaWNlbnNlLCBvcgotKyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0r Ci0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls bCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4g dGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGlj IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2 ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdp dGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNl cy8+LiAgKi8KLSsKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0raW50Ci0rbWFpbiAoaW50IGFy Z2MsIGNoYXIgKiphcmd2KQotK3sKLSsgIGNoYXIgc1syICsgYXJnY107Ci0rICB2b2lkICgqZikg KGNoYXIgKikgPSAwOwotKwotKyAgbWVtc2V0IChzLCAwLCBzaXplb2YgKHMpKTsKLSsgIHNbMF0g PSAnWCc7Ci0rCi0rICBmIChzKTsKLSsgIHJldHVybiAwOwotK30KLS0tLSAvZGV2L251bGwKLSsr KyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvdmxhLWZyYW1lLmV4cAotQEAgLTAsMCArMSwzOCBA QAotKyMgQ29weXJpZ2h0IDIwMTEgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwot KyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0 IGFuZC9vciBtb2RpZnkKLSsjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIg b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJp YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VU IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBN RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg dGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMK LSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxo dHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsKLStzZXQgdGVzdGZpbGUgdmxhLWZyYW1l Ci0rc2V0IGV4ZWN1dGFibGUgJHt0ZXN0ZmlsZX0KLSsKLStpZiB7IFtwcmVwYXJlX2Zvcl90ZXN0 aW5nICR7dGVzdGZpbGV9LmV4cCAke2V4ZWN1dGFibGV9XSB9IHsKLSsgICAgcmV0dXJuIC0xCi0r fQotKwotK2lmICFbcnVudG9fbWFpbl0gewotKyAgICByZXR1cm4gLTEKLSt9Ci0rCi0rc2V0IHRl c3QgImNvbnRpbnVlIgotK2dkYl90ZXN0X211bHRpcGxlICR0ZXN0ICR0ZXN0IHsKLSsgICAgLXJl ICJDb250aW51aW5nXFwuXHJcblxyXG5Qcm9ncmFtIHJlY2VpdmVkIHNpZ25hbCBTSUdTRUdWLCBT ZWdtZW50YXRpb24gZmF1bHRcXC5cclxuMHgwKyBpbiBcXD9cXD8gXFwoXFwpXHJcbiRnZGJfcHJv bXB0ICQiIHsKLSsJcGFzcyAkdGVzdAotKyAgICB9Ci0rICAgIC1yZSAiXHJcbiRnZGJfcHJvbXB0 ICQiIHsKLSsJdW50ZXN0ZWQgJHt0ZXN0ZmlsZX0uZXhwCi0rCXJldHVybgotKyAgICB9Ci0rfQot KwotK2dkYl90ZXN0ICJidCBmdWxsIiAiXHJcbiArcyA9IFwiWFxcXFwwMDBcIlxyXG4uKiIKCmRp ZmYgLS1naXQgYS9nZGIuc3BlYyBiL2dkYi5zcGVjCmluZGV4IDU1MmM3NmMuLjRkZjNhYzMgMTAw NjQ0Ci0tLSBhL2dkYi5zcGVjCisrKyBiL2dkYi5zcGVjCkBAIC0yMywxMSArMjMsMTEgQEAgTmFt ZTogZ2RiJXs/X3dpdGhfZGVidWc6LWRlYnVnfQogIyBTZXQgdmVyc2lvbiB0byBjb250ZW50cyBv ZiBnZGIvdmVyc2lvbi5pbi4KICMgTk9URTogdGhlIEZTRiBnZGIgdmVyc2lvbnMgYXJlIG51bWJl cmVkIE4uTSBmb3Igb2ZmaWNpYWwgcmVsZWFzZXMsIGxpa2UgNi4zCiAjIGFuZCwgc2luY2UgSmFu dWFyeSAyMDA1LCBYLlkuWi5kYXRlIGZvciBkYWlseSBzbmFwc2hvdHMsIGxpa2UgNi4zLjUwLjIw MDUwMTEyICMgKGRhaWx5IHNuYXBzaG90IGZyb20gbWFpbGluZSksIG9yIDYuMy4wLjIwMDQwMTEy IChoZWFkIG9mIHRoZSByZWxlYXNlIGJyYW5jaCkuCi1WZXJzaW9uOiA3LjMuNTAuMjAxMTA3MjIK K1ZlcnNpb246IDcuNC41MC4yMDEyMDEwMwogCiAjIFRoZSByZWxlYXNlIGFsd2F5cyBjb250YWlu cyBhIGxlYWRpbmcgcmVzZXJ2ZWQgbnVtYmVyLCBzdGFydCBpdCBhdCAxLgogIyBgdXBzdHJlYW0n IGlzIG5vdCBhIHBhcnQgb2YgYG5hbWUnIHRvIHN0YXkgZnVsbHkgcnBtIGRlcGVuZGVuY2llcyBj b21wYXRpYmxlIGZvciB0aGUgdGVzdGluZy4KLVJlbGVhc2U6IDExJXs/X3dpdGhfdXBzdHJlYW06 LnVwc3RyZWFtfSV7P2Rpc3R9CitSZWxlYXNlOiAxJXs/X3dpdGhfdXBzdHJlYW06LnVwc3RyZWFt fSV7P2Rpc3R9CiAKIExpY2Vuc2U6IEdQTHYzKyBhbmQgR1BMdjMrIHdpdGggZXhjZXB0aW9ucyBh bmQgR1BMdjIrIGFuZCBHUEx2Misgd2l0aCBleGNlcHRpb25zIGFuZCBHUEwrIGFuZCBMR1BMdjIr IGFuZCBCU0QgYW5kIFB1YmxpYyBEb21haW4KIEdyb3VwOiBEZXZlbG9wbWVudC9EZWJ1Z2dlcnMK QEAgLTEwOCwxMSArMTA4LDYgQEAgUGF0Y2gyOiBnZGItNi4zLXJoLXRlc3R2ZXJzaW9uLTIwMDQx MjAyLnBhdGNoCiAjPWlhNjQKIFBhdGNoMzogZ2RiLTYuMy1yaC10ZXN0bGlidW53aW5kLTIwMDQx MjAyLnBhdGNoCiAKLSMgVXNlIGNvbnZlcnRfZnJvbV9mdW5jX3B0cl9hZGRyIG9uIHRoZSBzb2xp YiBicmVha3BvaW50IGFkZHJlc3M7Ci0jIHNpbXBsaWZpZXMgYW5kIG1ha2VzIG1vcmUgY29uc2lz dGVudCB0aGUgbG9naWMuCi0jPW1heWJlcHVzaCtwcGM6IFdyaXRlIG5ldyB0ZXN0Y2FzZS4KLVBh dGNoMTA0OiBnZGItNi4zLXBwY2RvdHNvbGliLTIwMDQxMDIyLnBhdGNoCi0KICMgQmV0dGVyIHBh cnNlIDY0LWJpdCBQUEMgc3lzdGVtIGNhbGwgcHJvbG9ndWVzLgogIz1tYXliZXB1c2grcHBjOiBX cml0ZSBuZXcgdGVzdGNhc2UuCiBQYXRjaDEwNTogZ2RiLTYuMy1wcGM2NHN5c2NhbGwtMjAwNDA2 MjIucGF0Y2gKQEAgLTE1OCwxMiArMTUzLDYgQEAgUGF0Y2gxMzY6IGdkYi02LjMtdGVzdC1tb3Zl ZGlyLTIwMDUwMTI1LnBhdGNoCiAjPWlhNjQKIFBhdGNoMTQwOiBnZGItNi4zLWdjb3JlLXRocmVh ZC0yMDA1MDIwNC5wYXRjaAogCi0jIFN0b3Agd2hpbGUgaW50ZW50aW9uYWxseSBzdGVwcGluZyBh bmQgdGhlIHRocmVhZCBleGl0IGlzIG1ldC4KLSM9cHVzaAotUGF0Y2gxNDE6IGdkYi02LjYtc3Rl cC10aHJlYWQtZXhpdC5wYXRjaAotIz1wdXNoCi1QYXRjaDI1OTogZ2RiLTYuMy1zdGVwLXRocmVh ZC1leGl0LTIwMDUwMjExLXRlc3QucGF0Y2gKLQogIyBUZXN0IHNpYmxpbmcgdGhyZWFkcyB0byBz ZXQgdGhyZWFkZWQgd2F0Y2hwb2ludHMgZm9yIHg4NiBhbmQgeDg2LTY0CiAjPWZlZG9yYXRlc3QK IFBhdGNoMTQ1OiBnZGItNi4zLXRocmVhZGVkLXdhdGNocG9pbnRzMi0yMDA1MDIyNS5wYXRjaApA QCAtMjYwLDcgKzI0OSw3IEBAIFBhdGNoMjMxOiBnZGItNi4zLWJ6MjAyNjg5LWV4ZWMtZnJvbS1w dGhyZWFkLXRlc3QucGF0Y2gKIAogIyBCYWNrcG9ydGVkIGZpeHVwcyBwb3N0IHRoZSBzb3VyY2Ug dGFyYmFsbC4KICNYZHJvcDogSnVzdCBiYWNrcG9ydHMuCi1QYXRjaDIzMjogZ2RiLXVwc3RyZWFt LnBhdGNoCisjUGF0Y2gyMzI6IGdkYi11cHN0cmVhbS5wYXRjaAogCiAjIFRlc3RjYXNlIGZvciBQ UEMgUG93ZXI2L0RGUCBpbnN0cnVjdGlvbnMgZGlzYXNzZW1ibHkgKEJaIDIzMDAwMCkuCiAjPWZl ZG9yYXRlc3QrcHBjCkBAIC0zNTgsMTAgKzM0Nyw2IEBAIFBhdGNoMzE3OiBnZGItNi44LXNwYXJj NjQtc2lsZW5jZS1tZW1jcHktY2hlY2sucGF0Y2gKICM9ZmVkb3JhdGVzdAogUGF0Y2gzMjA6IGdk Yi02LjUtc2VjdGlvbi1udW0tZml4dXAtdGVzdC5wYXRjaAogCi0jIENyZWF0ZSBhIHNpbmdsZSBi aW5hcnkgYGdkYicgYXV0b2RldGVjdGluZyAtLXR1aSBieSBpdHMgYXJndlswXS4KLSM9cHVzaCt3 b3JrOiBJSVJDIFRvbSB0b2xkIGFyZ3ZbMF0gc2hvdWxkIG5vdCBiZSB1c2VkIGJ5IEdOVSBwcm9n cmFtcywgYWxzbyBkcm9wIGxpYmdkYi5hLgotUGF0Y2gzMjY6IGdkYi02LjgtdHVpLXNpbmdsZWJp bmFyeS5wYXRjaAotCiAjIEZpeCBQUlBTSU5GTyBpbiB0aGUgY29yZSBmaWxlcyBkdW1wZWQgYnkg Z2NvcmUgKEJaIDI1NDIyOSkuCiAjPXB1c2gKIFBhdGNoMzI5OiBnZGItNi44LWJ6MjU0MjI5LWdj b3JlLXBycHNpbmZvLnBhdGNoCkBAIC0zNzEsMTMgKzM1Niw5IEBAIFBhdGNoMzI5OiBnZGItNi44 LWJ6MjU0MjI5LWdjb3JlLXBycHNpbmZvLnBhdGNoCiBQYXRjaDMzMDogZ2RiLTYuOC1iejQzNjAz Ny1yZWctbm8tbG9uZ2VyLWFjdGl2ZS5wYXRjaAogCiAjIE1ha2UgdGhlIEdEQiBxdWl0IHByb2Nl c3Npbmcgbm9uLWFib3J0YWJsZSB0byBjbGVhbnVwIGV2ZXJ5dGhpbmcgcHJvcGVybHkuCi0jPXB1 c2g6IFVzZWZ1bCBvbmx5IGFmdGVyIGdkYi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3Rv cHBlZC5wYXRjaCAuCisjPXB1c2g6IEl0IHdhcyB1c2VmdWwgb25seSBhZnRlciBnZGItNi44LWF0 dGFjaC1zaWduYWxsZWQtZGV0YWNoLXN0b3BwZWQucGF0Y2ggLgogUGF0Y2gzMzE6IGdkYi02Ljgt cXVpdC1uZXZlci1hYm9ydHMucGF0Y2gKIAotIyBGaXggYXR0YWNoaW5nIHRvIHN0b3BwZWQgcHJv Y2Vzc2VzIGFuZC9vciBwZW5kaW5nIHNpZ25hbHMuCi0jPXB1c2grd29yawotUGF0Y2gzMzc6IGdk Yi02LjgtYXR0YWNoLXNpZ25hbGxlZC1kZXRhY2gtc3RvcHBlZC5wYXRjaAotCiAjIFRlc3QgdGhl IHdhdGNocG9pbnRzIGNvbmRpdGlvbmFscyB3b3Jrcy4KICM9ZmVkb3JhdGVzdAogUGF0Y2gzNDM6 IGdkYi02Ljgtd2F0Y2hwb2ludC1jb25kaXRpb25hbHMtdGVzdC5wYXRjaApAQCAtNTEzLDEwICs0 OTQsNiBAQCBQYXRjaDU0NzogZ2RiLXRlc3QtZHcyLWFyYW5nZXMucGF0Y2gKICMgPWZlZG9yYXRl c3QKIFBhdGNoNTQ4OiBnZGItdGVzdC1leHByLWN1bXVsYXRpdmUtYXJjaGVyLnBhdGNoCiAKLSMg V29ya2Fyb3VuZCBnY2MtNC42IHN0ZGFyZyBmYWxzZSBwcm9sb2d1ZSBlbmQgKEdEQiBQUiAxMjQz NSArIEdDQyBQUiA0NzQ3MSkuCi0jID1wdXNoCi1QYXRjaDU1NjogZ2RiLWdjYzQ2LXN0ZGFyZy1w cm9sb2d1ZS5wYXRjaAotCiAjIFRvb2xjaGFpbiBvbiBzcGFyYyBpcyBzbGlnaHRseSBicm9rZW4g YW5kIGRlYnVnaW5mbyBmaWxlcyBhcmUgZ2VuZXJhdGVkCiAjIHdpdGggbm9uIDY0Yml0IGFsaWdu ZWQgdGFibGVzL29mZnNldHMuCiAjIFNlZSBmb3IgZXhhbXBsZSByZWFkZWxmIC1TIC4uL1h2bmMu ZGVidWcuCkBAIC01MzAsMzIgKzUwNywxOSBAQCBQYXRjaDU1NjogZ2RiLWdjYzQ2LXN0ZGFyZy1w cm9sb2d1ZS5wYXRjaAogIyByZWJ1aWxkIHRvIGZpeCBpdCwgd2UgbmVlZCB0byBiZSBhYmxlIHRv IHVzZSBnZGIgOikKIFBhdGNoNTc5OiBnZGItNy4yLjUwLXNwYXJjLWFkZC13b3JrYXJvdW5kLXRv LWJyb2tlbi1kZWJ1Zy1maWxlcy5wYXRjaAogCi0jIEltcHJvdmUgR0RCIHBlcmZvcm1hbmNlIG9u IGluZmVyaW9yIGRsb3BlbiBjYWxscyAoR2FyeSBCZW5zb24sIEJaIDY5ODAwMSkuCi1QYXRjaDYx NzogZ2RiLWRsb3Blbi1za2lwX2lubGluZV9mcmFtZXMtcGVyZi5wYXRjaAotCiAjIEZpeCBkbG9w ZW4gb2YgbGlicHRocmVhZC5zbywgcGF0Y2hlZCBnbGliYyByZXF1aXJlZCAoR2FyeSBCZW5zb24s IEJaIDY2OTQzMikuCi1QYXRjaDYxODogZ2RiLWRsb3Blbi1zdGFwLXByb2JlLnBhdGNoCisjRklY TUU6UGF0Y2g2MTg6IGdkYi1kbG9wZW4tc3RhcC1wcm9iZS5wYXRjaAogUGF0Y2g2MTk6IGdkYi1k bG9wZW4tc3RhcC1wcm9iZS10ZXN0LnBhdGNoCiAKICMgV29yayBhcm91bmQgUFIgbGliYy8xMzA5 NyAibGludXgtdmRzby5zby4xIiB3YXJuaW5nIG1lc3NhZ2UuCiBQYXRjaDYyNzogZ2RiLWdsaWJj LXZkc28td29ya2Fyb3VuZC5wYXRjaAogCi0jIFtUVUldIEZpeCBzdGVwaSBvbiBzdHJpcHBlZCBj b2RlLgotUGF0Y2g2Mjg6IGdkYi10dWktc3RyaXAtc3RlcGkucGF0Y2gKLQotIyBbdmxhXSBGaXgg VkxBIGFycmF5cyBkaXNwbGF5ZWQgaW4gYGJ0IGZ1bGwnIChCWiA3Mzg0ODIpLgotUGF0Y2g2Mjk6 IGdkYi12bGEtZnJhbWUtc2V0LnBhdGNoCi0KLSMgRml4IERXX09QX0dOVV9pbXBsaWNpdF9wb2lu dGVyIGZvciBEV0FSRjMyIHYzKyBvbiA2NC1iaXQgYXJjaGVzLgotUGF0Y2g2MzA6IGdkYi1pbXBs cHRyLTY0Yml0LTFvZjIucGF0Y2gKLVBhdGNoNjMxOiBnZGItaW1wbHB0ci02NGJpdC0yb2YyLnBh dGNoCi0KLSMgRml4IGludGVybmFsIGVycm9yIG9uIHNvbWUgb3B0aW1pemVkLW91dCB2YWx1ZXMu Ci1QYXRjaDYzMjogZ2RiLW9wdGltaXplZC1vdXQtaW50ZXJuYWwtZXJyb3IucGF0Y2gKLQogIyBI YWNrIGZvciBwcm9wZXIgUElFIHJ1biBvZiB0aGUgdGVzdHN1aXRlLgogUGF0Y2g2MzQ6IGdkYi1y dW50ZXN0LXBpZS1vdmVycmlkZS5wYXRjaAogCisjIEZpeCB6ZXJvIHJlZ2lzdGVycyBjb3JlIGZp bGVzIHcvZ2NjLTQuNy4KK1BhdGNoNjM4OiBnZGItZ2NjNDctZ2NvcmUtemVyby5wYXRjaAorCiBC dWlsZFJlcXVpcmVzOiBuY3Vyc2VzLWRldmVsJXs/X2lzYX0gdGV4aW5mbyBnZXR0ZXh0IGZsZXgg Ymlzb24gZXhwYXQtZGV2ZWwlez9faXNhfQogIyAtLXdpdGhvdXQtc3lzdGVtLXJlYWRsaW5lCiAj IFJlcXVpcmVzOiByZWFkbGluZSV7P19pc2F9CkBAIC03MTUsMTIgKzY3OSwxMSBAQCBybSAtZiBn ZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAKICVp ZiAwJXshP193aXRoX3Vwc3RyZWFtOjF9CiAKLSVwYXRjaDIzMiAtcDEKKyNwYXRjaDIzMiAtcDEK ICVwYXRjaDM0OSAtcDEKICVwYXRjaDEgLXAxCiAlcGF0Y2gzIC1wMQogCi0lcGF0Y2gxMDQgLXAx CiAlcGF0Y2gxMDUgLXAxCiAlcGF0Y2gxMTEgLXAxCiAlcGF0Y2gxMTIgLXAxCkBAIC03MzAsOCAr NjkzLDYgQEAgcm0gLWYgZ2RiL2p2LWV4cC5jIGdkYi9tMi1leHAuYyBnZGIvb2JqYy1leHAuYyBn ZGIvcC1leHAuYwogJXBhdGNoMTMzIC1wMQogJXBhdGNoMTM2IC1wMQogJXBhdGNoMTQwIC1wMQot JXBhdGNoMTQxIC1wMQotJXBhdGNoMjU5IC1wMQogJXBhdGNoMTQ1IC1wMQogJXBhdGNoMTUzIC1w MQogJXBhdGNoMTU3IC1wMQpAQCAtNzc5LDExICs3NDAsOSBAQCBybSAtZiBnZGIvanYtZXhwLmMg Z2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5jCiAlcGF0Y2gzMTUgLXAxCiAl cGF0Y2gzMTcgLXAxCiAlcGF0Y2gzMjAgLXAxCi0lcGF0Y2gzMjYgLXAxCiAlcGF0Y2gzMjkgLXAx CiAlcGF0Y2gzMzAgLXAxCiAlcGF0Y2gzMzEgLXAxCi0lcGF0Y2gzMzcgLXAxCiAlcGF0Y2gzNDMg LXAxCiAlcGF0Y2gzNDggLXAxCiAlcGF0Y2gzNjAgLXAxCkBAIC04MTcsMTggKzc3NiwxMiBAQCBy bSAtZiBnZGIvanYtZXhwLmMgZ2RiL20yLWV4cC5jIGdkYi9vYmpjLWV4cC5jIGdkYi9wLWV4cC5j CiAlcGF0Y2g1NDIgLXAxCiAlcGF0Y2g1NDcgLXAxCiAlcGF0Y2g1NDggLXAxCi0lcGF0Y2g1NTYg LXAxCiAlcGF0Y2g1NzkgLXAxCi0lcGF0Y2g2MTcgLXAxCi0lcGF0Y2g2MTggLXAxCisjRklYTUU6 cGF0Y2g2MTggLXAxCiAlcGF0Y2g2MTkgLXAxCiAlcGF0Y2g2MjcgLXAxCi0lcGF0Y2g2MjggLXAx Ci0lcGF0Y2g2MjkgLXAxCi0lcGF0Y2g2MzAgLXAxCi0lcGF0Y2g2MzEgLXAxCi0lcGF0Y2g2MzIg LXAxCiAlcGF0Y2g2MzQgLXAxCislcGF0Y2g2MzggLXAxCiAKICVwYXRjaDM5MyAtcDEKICVwYXRj aDMzNSAtcDEKQEAgLTExMDYsMTIgKzEwNTksNiBAQCBtYWtlICV7P19zbXBfbWZsYWdzfSBpbnN0 YWxsIERFU1RESVI9JFJQTV9CVUlMRF9ST09UCiBjcCAkUlBNX0JVSUxEX0RJUi8le2dkYl9zcmN9 L2dkYi9nZGJfZ2NvcmUuc2ggJFJQTV9CVUlMRF9ST09UJXtfYmluZGlyfS9nY29yZQogY2htb2Qg NzU1ICRSUE1fQlVJTERfUk9PVCV7X2JpbmRpcn0vZ2NvcmUKIAotIyBSZW1vdmUgdGhlIGdkYi9n ZGJ0dWkgYmluYXJpZXMgZHVwbGljaXR5LgotdGVzdCAteCAkUlBNX0JVSUxEX1JPT1Qle19wcmVm aXh9L2Jpbi9nZGJ0dWkKLWxuIC1zZiBnZGIgJFJQTV9CVUlMRF9ST09UJXtfcHJlZml4fS9iaW4v Z2RidHVpCi1jbXAgJFJQTV9CVUlMRF9ST09UJXtfbWFuZGlyfS8qL2dkYi4xICRSUE1fQlVJTERf Uk9PVCV7X21hbmRpcn0vKi9nZGJ0dWkuMQotbG4gLXNmIGdkYi4xICRSUE1fQlVJTERfUk9PVCV7 X21hbmRpcn0vKi9nZGJ0dWkuMQotCiBta2RpciAtcCAkUlBNX0JVSUxEX1JPT1Qle19zeXNjb25m ZGlyfS9nZGJpbml0LmQKIHNlZCAncyMlJXtfc3lzY29uZmRpcn0jJXtfc3lzY29uZmRpcn0jZycg PCV7U09VUkNFNH0gPiRSUE1fQlVJTERfUk9PVCV7X3N5c2NvbmZkaXJ9L2dkYmluaXQKIApAQCAt MTIxNSwxMSArMTE2Miw5IEBAIGZpCiAlZG9jIENPUFlJTkczIENPUFlJTkcgQ09QWUlORy5MSUIg UkVBRE1FIE5FV1MKICV7X2JpbmRpcn0vZ2NvcmUKICV7X2JpbmRpcn0vZ2RiCi0le19iaW5kaXJ9 L2dkYnR1aQogJXtfc3lzY29uZmRpcn0vZ2RiaW5pdAogJXtfc3lzY29uZmRpcn0vZ2RiaW5pdC5k CiAle19tYW5kaXJ9LyovZ2RiLjEqCi0le19tYW5kaXJ9LyovZ2RidHVpLjEqCiAlaWYgMCV7IT9f d2l0aF91cHN0cmVhbToxfQogJXtfYmluZGlyfS9nc3RhY2sKICV7X21hbmRpcn0vKi9nc3RhY2su MSoKQEAgLTEyNTIsNiArMTE5Nyw5IEBAIGZpCiAle19pbmZvZGlyfS9nZGIuaW5mbyoKIAogJWNo YW5nZWxvZworKiBUdWUgSmFuICAzIDIwMTIgSmFuIEtyYXRvY2h2aWwgPGphbi5rcmF0b2Nodmls QHJlZGhhdC5jb20+IC0gNy40LjUwLjIwMTIwMTAzLTEuZmMxNworLSBSZWJhc2UgdG8gRlNGIEdE QiA3LjQuNTAuMjAxMjAxMDMuCisKICogTW9uIE5vdiAyOCAyMDExIEphbiBLcmF0b2NodmlsIDxq YW4ua3JhdG9jaHZpbEByZWRoYXQuY29tPiAtIDcuMy41MC4yMDExMDcyMi0xMS5mYzE3CiAtIE5v IGxvbmdlciBidWlsZCBidW5kbGVkIGxpYnN0ZGMrKyBwcmV0dHkgcHJpbnRlcnMgb24gUkhFTHMg Pj0gNy4KIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2VzCmluZGV4IDkzMzA0NTcuLmIz ZmEyYTYgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNlcwpAQCAtMSwyICsxLDIgQEAK IDA0ZTVjNGIxYjllNjMzNDIyY2M0ODk5MGZlNjE5NThkICBsaWJzdGRjKystdjMtcHl0aG9uLXIx NTU5NzgudGFyLmJ6MgotYzU1NTQ5MzA1M2EzMDljOGFhMjA1OTJlYTk1NmY5ZTUgIGdkYi03LjMu NTAuMjAxMTA3MjIudGFyLmJ6MgorZWQ2MWFlMTk2NDgzYzg5YzBjNDg1YzQ0OTdkOWY4MTUgIGdk Yi03LjQuNTAuMjAxMjAxMDMudGFyLmJ6Mgo=